<?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>190234</bug_id>
          
          <creation_ts>2018-10-02 20:39:27 -0700</creation_ts>
          <short_desc>Move URL from WebCore to WTF</short_desc>
          <delta_ts>2018-12-03 03:10:57 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=192306</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>basuke</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1465897</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-02 20:39:27 -0700</bug_when>
    <thetext>Move URL from WebCore to WTF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465901</commentid>
    <comment_count>1</comment_count>
      <attachid>351473</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-02 20:52:55 -0700</bug_when>
    <thetext>Created attachment 351473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465902</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-02 20:53:34 -0700</bug_when>
    <thetext>Could someone give me a hand getting this compiling on Linux?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465903</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-02 20:56:36 -0700</bug_when>
    <thetext>Attachment 351473 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:385:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:724:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:725:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:727:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:729:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:730:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:874:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WTF/wtf/URL.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/URL.h:61:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:92:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:94:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:97:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:133:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:134:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:138:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:174:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:191:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:114:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:402:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:411:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:423:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:433:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:456:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:467:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:476:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:488:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:500:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:512:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:524:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:536:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:833:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1020:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1026:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1028:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WTF/wtf/cocoa/URLCocoa.mm:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:30:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:99:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:671:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/URL.cpp:883:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:884:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:885:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:886:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:887:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:888:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:889:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:890:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:891:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:892:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:893:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:894:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:895:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:896:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:897:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:898:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:899:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:900:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:901:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:902:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:903:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:904:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:905:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:906:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:907:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:908:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:909:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:910:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:911:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:912:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:913:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:914:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:915:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:916:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:917:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:918:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:919:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:920:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:921:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:922:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:923:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:925:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:926:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:927:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:928:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:929:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:930:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:931:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:932:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:933:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:934:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:935:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:936:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:937:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:938:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URLHash.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WTF/wtf/cf/URLCF.cpp:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/CFURLExtras.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 106 in 504 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>1465904</commentid>
    <comment_count>4</comment_count>
      <attachid>351473</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-02 20:58:05 -0700</bug_when>
    <thetext>Comment on attachment 351473
Patch

Attachment 351473 did not pass bindings-ews (mac):
Output: https://webkit-queues.webkit.org/results/9435803

New failing tests:
(JS) JSTestCallTracer.cpp
(JS) JSTestCEReactions.cpp
(JS) JSTestCEReactionsStringifier.cpp
(JS) JSTestClassWithJSBuiltinConstructor.cpp
(JS) JSTestCustomConstructorWithNoInterfaceObject.cpp
(JS) JSTestActiveDOMObject.cpp
(JS) JSTestDOMJIT.cpp
(JS) JSTestEnabledBySetting.cpp
(JS) JSTestEventConstructor.cpp
(JS) JSTestEventTarget.cpp
(JS) JSTestException.cpp
(JS) JSTestGenerateIsReachable.cpp
(JS) JSTestGlobalObject.cpp
(JS) JSTestIndexedSetterNoIdentifier.cpp
(JS) JSTestIndexedSetterThrowingException.cpp
(JS) JSTestIndexedSetterWithIdentifier.cpp
(JS) JSTestInterface.cpp
(JS) JSTestInterfaceLeadingUnderscore.cpp
(JS) JSTestIterable.cpp
(JS) JSMapLike.cpp
(JS) JSTestMediaQueryListListener.cpp
(JS) JSTestNamedAndIndexedSetterNoIdentifier.cpp
(JS) JSTestNamedAndIndexedSetterThrowingException.cpp
(JS) JSTestNamedAndIndexedSetterWithIdentifier.cpp
(JS) JSTestNamedConstructor.cpp
(JS) JSTestNamedDeleterNoIdentifier.cpp
(JS) JSTestNamedDeleterThrowingException.cpp
(JS) JSTestNamedDeleterWithIdentifier.cpp
(JS) JSTestNamedDeleterWithIndexedGetter.cpp
(JS) JSTestNamedGetterCallWith.cpp
(JS) JSTestNamedGetterNoIdentifier.cpp
(JS) JSTestNamedGetterWithIdentifier.cpp
(JS) JSTestNamedSetterNoIdentifier.cpp
(JS) JSTestNamedSetterThrowingException.cpp
(JS) JSTestNamedSetterWithIdentifier.cpp
(JS) JSTestNamedSetterWithIndexedGetter.cpp
(JS) JSTestNamedSetterWithIndexedGetterAndSetter.cpp
(JS) JSTestNamedSetterWithOverrideBuiltins.cpp
(JS) JSTestNamedSetterWithUnforgableProperties.cpp
(JS) JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp
(JS) JSTestNode.cpp
(JS) JSTestObj.cpp
(JS) JSTestOverloadedConstructors.cpp
(JS) JSTestOverloadedConstructorsWithSequence.cpp
(JS) JSTestOverrideBuiltins.cpp
(JS) JSTestPluginInterface.cpp
(JS) JSTestPromiseRejectionEvent.cpp
(JS) JSReadOnlyMapLike.cpp
(JS) JSInterfaceName.cpp
(JS) JSTestSerialization.cpp
(JS) JSTestSerializationIndirectInheritance.cpp
(JS) JSTestSerializationInherit.cpp
(JS) JSTestSerializationInheritFinal.cpp
(JS) JSTestSerializedScriptValueInterface.cpp
(JS) JSTestStringifier.cpp
(JS) JSTestStringifierAnonymousOperation.cpp
(JS) JSTestStringifierNamedOperation.cpp
(JS) JSTestStringifierOperationImplementedAs.cpp
(JS) JSTestStringifierOperationNamedToString.cpp
(JS) JSTestStringifierReadOnlyAttribute.cpp
(JS) JSTestStringifierReadWriteAttribute.cpp
(JS) JSTestTypedefs.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465912</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-02 21:13:17 -0700</bug_when>
    <thetext>I&apos;m working on Linux part (GTK+) now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465925</commentid>
    <comment_count>6</comment_count>
      <attachid>351481</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-02 23:02:41 -0700</bug_when>
    <thetext>Created attachment 351481
Add Linux support

+ Linux support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465928</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-02 23:06:48 -0700</bug_when>
    <thetext>Attachment 351481 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:385:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:724:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:725:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:727:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:729:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:730:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:874:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp&quot;
ERROR: Source/WebKitLegacy/win/WebView.h:466:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/URL.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/URL.h:61:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:92:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:94:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:97:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:133:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:134:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:138:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:174:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:191:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:114:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:402:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:411:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:423:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:433:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:456:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:467:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:476:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:488:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:500:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:512:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:524:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:536:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:833:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1020:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1026:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1028:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WTF/wtf/cocoa/URLCocoa.mm:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:30:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:99:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:671:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/URL.cpp:883:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:884:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:885:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:886:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:887:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:888:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:889:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:890:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:891:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:892:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:893:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:894:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:895:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:896:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:897:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:898:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:899:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:900:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:901:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:902:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:903:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:904:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:905:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:906:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:907:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:908:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:909:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:910:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:911:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:912:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:913:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:914:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:915:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:916:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:917:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:918:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:919:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:920:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:921:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:922:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:923:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:925:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:926:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:927:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:928:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:929:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:930:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:931:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:932:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:933:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:934:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:935:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:936:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:937:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:938:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URLHash.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKitLegacy/win/WebResource.h:41:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/cf/URLCF.cpp:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/CFURLExtras.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 108 in 652 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>1465934</commentid>
    <comment_count>8</comment_count>
      <attachid>351483</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-02 23:39:55 -0700</bug_when>
    <thetext>Created attachment 351483
Add Linux support

+ Linux support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465937</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-02 23:43:26 -0700</bug_when>
    <thetext>Attachment 351483 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:385:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:724:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:725:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:727:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:729:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:730:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:874:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp&quot;
ERROR: Source/WebKitLegacy/win/WebView.h:466:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/URL.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/URL.h:61:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:92:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:94:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:97:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:133:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:134:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:138:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:174:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:191:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:114:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:402:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:411:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:423:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:433:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:456:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:467:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:476:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:488:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:500:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:512:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:524:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:536:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:833:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1020:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1026:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1028:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WTF/wtf/cocoa/URLCocoa.mm:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:30:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:99:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:671:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/URL.cpp:883:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:884:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:885:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:886:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:887:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:888:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:889:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:890:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:891:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:892:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:893:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:894:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:895:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:896:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:897:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:898:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:899:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:900:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:901:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:902:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:903:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:904:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:905:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:906:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:907:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:908:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:909:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:910:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:911:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:912:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:913:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:914:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:915:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:916:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:917:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:918:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:919:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:920:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:921:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:922:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:923:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:925:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:926:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:927:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:928:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:929:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:930:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:931:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:932:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:933:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:934:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:935:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:936:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:937:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:938:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URLHash.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKitLegacy/win/WebResource.h:41:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/cf/URLCF.cpp:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/CFURLExtras.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 108 in 655 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>1465948</commentid>
    <comment_count>10</comment_count>
      <attachid>351486</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-03 00:35:37 -0700</bug_when>
    <thetext>Created attachment 351486
Add Linux support

+ Linux support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465949</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-03 00:39:08 -0700</bug_when>
    <thetext>Attachment 351486 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:385:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:724:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:725:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:727:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:729:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:730:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:874:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp&quot;
ERROR: Source/WebKitLegacy/win/WebView.h:466:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/URL.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/URL.h:61:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:92:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:94:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:97:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:133:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:134:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:138:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:174:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:191:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:114:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:402:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:411:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:423:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:433:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:456:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:467:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:476:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:488:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:500:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:512:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:524:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:536:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:833:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1020:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1026:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1028:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WTF/wtf/cocoa/URLCocoa.mm:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:30:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:99:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:671:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/URL.cpp:883:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:884:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:885:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:886:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:887:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:888:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:889:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:890:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:891:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:892:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:893:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:894:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:895:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:896:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:897:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:898:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:899:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:900:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:901:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:902:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:903:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:904:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:905:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:906:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:907:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:908:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:909:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:910:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:911:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:912:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:913:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:914:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:915:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:916:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:917:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:918:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:919:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:920:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:921:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:922:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:923:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:925:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:926:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:927:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:928:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:929:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:930:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:931:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:932:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:933:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:934:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:935:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:936:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:937:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:938:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URLHash.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKitLegacy/win/WebResource.h:41:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/cf/URLCF.cpp:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/CFURLExtras.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 108 in 655 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>1465953</commentid>
    <comment_count>12</comment_count>
      <attachid>351489</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-03 01:08:18 -0700</bug_when>
    <thetext>Created attachment 351489
Add Linux support

+ Linux support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465954</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-03 01:12:20 -0700</bug_when>
    <thetext>Attachment 351489 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:385:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:725:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:726:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:728:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:730:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:731:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:875:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp&quot;
ERROR: Source/WebKitLegacy/win/WebView.h:466:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/URL.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/URL.h:61:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:92:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:94:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:97:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:133:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:134:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:138:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:174:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:191:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:114:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:402:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:411:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:423:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:433:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:456:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:467:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:476:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:488:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:500:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:512:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:524:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:536:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:833:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1020:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1026:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1028:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WTF/wtf/cocoa/URLCocoa.mm:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:30:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:99:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:671:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/URL.cpp:883:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:884:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:885:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:886:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:887:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:888:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:889:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:890:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:891:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:892:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:893:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:894:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:895:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:896:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:897:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:898:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:899:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:900:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:901:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:902:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:903:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:904:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:905:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:906:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:907:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:908:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:909:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:910:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:911:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:912:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:913:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:914:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:915:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:916:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:917:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:918:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:919:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:920:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:921:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:922:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:923:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:925:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:926:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:927:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:928:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:929:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:930:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:931:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:932:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:933:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:934:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:935:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:936:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:937:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:938:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URLHash.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKitLegacy/win/WebResource.h:41:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/cf/URLCF.cpp:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/CFURLExtras.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 108 in 655 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>1465968</commentid>
    <comment_count>14</comment_count>
      <attachid>351494</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-03 01:52:18 -0700</bug_when>
    <thetext>Created attachment 351494
Add Linux support

+ Linux support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465970</commentid>
    <comment_count>15</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-03 01:56:22 -0700</bug_when>
    <thetext>Attachment 351494 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:385:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:725:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:726:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:728:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:730:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:731:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:875:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp&quot;
ERROR: Source/WebKitLegacy/win/WebView.h:466:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/URL.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/URL.h:61:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:92:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:94:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:97:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:133:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:134:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:138:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:174:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:191:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:114:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:402:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:411:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:423:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:433:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:456:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:467:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:476:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:488:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:500:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:512:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:524:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:536:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:833:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1020:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1026:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1028:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WTF/wtf/cocoa/URLCocoa.mm:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:30:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:99:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:671:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/URL.cpp:883:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:884:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:885:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:886:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:887:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:888:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:889:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:890:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:891:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:892:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:893:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:894:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:895:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:896:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:897:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:898:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:899:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:900:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:901:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:902:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:903:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:904:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:905:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:906:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:907:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:908:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:909:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:910:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:911:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:912:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:913:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:914:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:915:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:916:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:917:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:918:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:919:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:920:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:921:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:922:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:923:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:925:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:926:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:927:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:928:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:929:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:930:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:931:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:932:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:933:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:934:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:935:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:936:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:937:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:938:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URLHash.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKitLegacy/win/WebResource.h:41:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/cf/URLCF.cpp:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/CFURLExtras.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 108 in 655 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>1465982</commentid>
    <comment_count>16</comment_count>
      <attachid>351500</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-03 02:55:21 -0700</bug_when>
    <thetext>Created attachment 351500
Add Linux support

+ Linux support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465984</commentid>
    <comment_count>17</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-03 03:00:00 -0700</bug_when>
    <thetext>Attachment 351500 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:385:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:725:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:726:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:728:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:730:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:731:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:875:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp&quot;
ERROR: Source/WebKitLegacy/win/WebView.h:466:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/URL.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/URL.h:61:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:92:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:94:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:97:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:133:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:134:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:138:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:174:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:191:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:114:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:402:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:411:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:423:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:433:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:456:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:467:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:476:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:488:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:500:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:512:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:524:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:536:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:833:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1020:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1026:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1028:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WTF/wtf/cocoa/URLCocoa.mm:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:30:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:99:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:671:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/URL.cpp:883:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:884:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:885:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:886:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:887:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:888:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:889:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:890:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:891:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:892:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:893:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:894:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:895:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:896:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:897:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:898:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:899:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:900:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:901:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:902:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:903:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:904:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:905:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:906:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:907:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:908:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:909:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:910:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:911:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:912:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:913:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:914:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:915:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:916:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:917:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:918:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:919:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:920:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:921:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:922:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:923:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:925:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:926:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:927:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:928:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:929:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:930:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:931:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:932:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:933:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:934:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:935:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:936:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:937:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:938:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URLHash.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKitLegacy/win/WebResource.h:41:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/cf/URLCF.cpp:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/CFURLExtras.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 108 in 655 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>1466004</commentid>
    <comment_count>18</comment_count>
      <attachid>351506</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-03 04:03:15 -0700</bug_when>
    <thetext>Created attachment 351506
Add Linux support

+ Linux support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466009</commentid>
    <comment_count>19</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-03 04:07:26 -0700</bug_when>
    <thetext>Attachment 351506 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:385:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:725:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:726:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:728:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:730:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:731:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:875:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp&quot;
ERROR: Source/WebKitLegacy/win/WebView.h:466:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/URL.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/URL.h:61:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:92:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:94:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:97:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:133:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:134:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:138:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:174:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:191:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:114:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:402:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:411:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:423:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:433:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:456:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:467:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:476:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:488:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:500:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:512:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:524:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:536:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:833:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1020:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1026:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1028:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WTF/wtf/cocoa/URLCocoa.mm:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:30:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:99:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:671:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/URL.cpp:883:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:884:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:885:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:886:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:887:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:888:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:889:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:890:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:891:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:892:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:893:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:894:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:895:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:896:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:897:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:898:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:899:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:900:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:901:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:902:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:903:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:904:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:905:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:906:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:907:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:908:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:909:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:910:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:911:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:912:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:913:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:914:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:915:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:916:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:917:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:918:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:919:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:920:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:921:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:922:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:923:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:925:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:926:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:927:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:928:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:929:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:930:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:931:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:932:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:933:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:934:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:935:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:936:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:937:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:938:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URLHash.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKitLegacy/win/WebResource.h:41:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/cf/URLCF.cpp:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/CFURLExtras.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 108 in 655 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>1466029</commentid>
    <comment_count>20</comment_count>
      <attachid>351512</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-03 05:21:26 -0700</bug_when>
    <thetext>Created attachment 351512
Add Linux support

+ Linux support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466030</commentid>
    <comment_count>21</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-03 05:26:06 -0700</bug_when>
    <thetext>Attachment 351512 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:385:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:725:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:726:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:728:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:730:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:731:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:875:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp&quot;
ERROR: Source/WebKitLegacy/win/WebView.h:466:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/URL.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/URL.h:61:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:92:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:94:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:97:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:133:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:134:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:138:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:174:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:191:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:114:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:402:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:411:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:423:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:433:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:456:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:467:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:476:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:488:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:500:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:512:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:524:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:536:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:833:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1020:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1026:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1028:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WTF/wtf/cocoa/URLCocoa.mm:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:30:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:99:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:671:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/URL.cpp:883:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:884:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:885:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:886:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:887:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:888:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:889:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:890:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:891:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:892:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:893:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:894:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:895:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:896:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:897:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:898:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:899:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:900:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:901:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:902:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:903:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:904:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:905:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:906:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:907:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:908:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:909:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:910:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:911:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:912:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:913:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:914:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:915:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:916:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:917:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:918:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:919:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:920:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:921:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:922:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:923:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:925:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:926:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:927:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:928:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:929:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:930:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:931:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:932:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:933:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:934:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:935:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:936:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:937:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:938:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URLHash.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKitLegacy/win/WebResource.h:41:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/cf/URLCF.cpp:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/CFURLExtras.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 108 in 656 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>1466071</commentid>
    <comment_count>22</comment_count>
      <attachid>351523</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-03 08:36:48 -0700</bug_when>
    <thetext>Created attachment 351523
Add Linux support

+ Linux support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466072</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-10-03 08:37:31 -0700</bug_when>
    <thetext>@Alex: I believe this is now OK in Linux (and possibly in Windows too) :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466076</commentid>
    <comment_count>24</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-03 08:41:00 -0700</bug_when>
    <thetext>Attachment 351523 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:385:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:725:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:726:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:728:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:730:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:731:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:875:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp&quot;
ERROR: Source/WebKitLegacy/win/WebView.h:466:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/URL.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/URL.h:61:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:92:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:94:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:97:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:133:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:134:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:138:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:174:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:191:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:114:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:402:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:411:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:423:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:433:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:456:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:467:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:476:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:488:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:500:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:512:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:524:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:536:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:833:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1020:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1026:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1028:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WTF/wtf/cocoa/URLCocoa.mm:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:30:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:99:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:671:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/URL.cpp:883:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:884:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:885:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:886:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:887:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:888:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:889:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:890:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:891:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:892:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:893:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:894:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:895:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:896:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:897:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:898:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:899:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:900:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:901:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:902:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:903:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:904:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:905:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:906:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:907:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:908:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:909:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:910:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:911:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:912:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:913:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:914:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:915:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:916:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:917:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:918:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:919:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:920:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:921:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:922:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:923:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:925:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:926:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:927:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:928:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:929:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:930:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:931:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:932:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:933:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:934:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:935:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:936:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:937:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:938:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URLHash.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKitLegacy/win/WebResource.h:41:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/cf/URLCF.cpp:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/CFURLExtras.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 108 in 657 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>1466105</commentid>
    <comment_count>25</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-03 10:27:32 -0700</bug_when>
    <thetext>Wow, thanks Yusuke!  What a patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466437</commentid>
    <comment_count>26</comment_count>
      <attachid>351523</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-04 12:09:27 -0700</bug_when>
    <thetext>Comment on attachment 351523
Add Linux support

It&apos;s unclear whether we actually want to do this.  Removing r? for now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469795</commentid>
    <comment_count>27</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-10-16 11:09:20 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #26)
&gt; Comment on attachment 351523 [details]
&gt; Add Linux support
&gt; 
&gt; It&apos;s unclear whether we actually want to do this.  Removing r? for now

I think it&apos;s a important cleanup for moving things up to PAL layer. If we can use URL, there&apos;re more candidates for PAL.

It seems to huge for one patch. We can start with moving implementation to WTF::URL and keep WebCore::URL to just import WTF::URL for compatibility. Then next patch will replace &lt;WebCore/URL.h&gt; to &lt;WTF/URL.h&gt; and remove the intermediates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469796</commentid>
    <comment_count>28</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-16 11:12:41 -0700</bug_when>
    <thetext>It&apos;s not about the size of the patch.  We have it successfully moved in one patch.
I don&apos;t think this belongs in PAL because it&apos;s not an abstraction of a platform in any way.  Just moving things to PAL makes PAL less of an interface and more of a move-everything-to-PAL target.
The motivation for doing this was to use URLParser from a context that did not use even JavaScriptCore, but that motivation is less urgent now or maybe non-existent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469870</commentid>
    <comment_count>29</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-10-16 13:55:34 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #28)
&gt; It&apos;s not about the size of the patch.  We have it successfully moved in one
&gt; patch.
&gt; I don&apos;t think this belongs in PAL because it&apos;s not an abstraction of a
&gt; platform in any way.  Just moving things to PAL makes PAL less of an
&gt; interface and more of a move-everything-to-PAL target.

No no, I said we may have more chance to move other stuff which uses URL to PAL if URL belongs in WTF. I forgot my demand, maybe content sniffing, for example?


&gt; The motivation for doing this was to use URLParser from a context that did
&gt; not use even JavaScriptCore, but that motivation is less urgent now or maybe
&gt; non-existent.

Well, URL is fundamental enough to be in WTF, I think. If we can, we should do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483819</commentid>
    <comment_count>30</comment_count>
      <attachid>356258</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-11-30 16:16:35 -0800</bug_when>
    <thetext>Created attachment 356258
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483828</commentid>
    <comment_count>31</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-30 16:21:57 -0800</bug_when>
    <thetext>Attachment 356258 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:387:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/FrameLoader.cpp:128:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/UIProcess/Cocoa/WKSafeBrowsingWarning.mm:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:725:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:726:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:728:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:730:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:731:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:875:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h&quot;
ERROR: Source/WebCore/html/HTMLAttachmentElement.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp&quot;
ERROR: Source/WebKitLegacy/win/WebView.h:466:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/URL.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/URL.h:61:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:92:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:94:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:97:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:133:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:134:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:139:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:175:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:192:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:114:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:402:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:411:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:423:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:433:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:456:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:467:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:476:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:488:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:500:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:512:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:524:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:536:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:833:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1020:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1026:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1028:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WebKit/UIProcess/SafeBrowsingWarning.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/URLCocoa.mm:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebCore/worklets/WorkletGlobalScope.h:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/mac/PublicSuffixMac.mm:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:30:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:99:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:671:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/URL.cpp:883:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:884:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:885:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:886:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:887:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:888:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:889:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:890:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:891:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:892:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:893:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:894:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:895:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:896:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:897:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:898:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:899:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:900:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:901:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:902:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:903:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:904:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:905:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:906:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:907:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:908:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:909:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:910:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:911:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:912:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:913:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:914:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:915:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:916:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:917:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:918:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:919:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:920:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:921:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:922:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:923:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:925:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:926:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:927:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:928:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:929:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:930:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:931:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:932:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:933:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:934:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:935:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:936:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:937:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:938:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:939:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URLHash.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKitLegacy/win/WebResource.h:41:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/cf/URLCF.cpp:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/CFURLExtras.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 115 in 679 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>1483872</commentid>
    <comment_count>32</comment_count>
      <attachid>356272</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-11-30 17:35:17 -0800</bug_when>
    <thetext>Created attachment 356272
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483876</commentid>
    <comment_count>33</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-30 17:41:07 -0800</bug_when>
    <thetext>Attachment 356272 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:387:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/FrameLoader.cpp:128:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/UIProcess/Cocoa/WKSafeBrowsingWarning.mm:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:725:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:726:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:728:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:730:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:731:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/URLParser.cpp:875:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.h&quot;
ERROR: Source/WebCore/html/HTMLAttachmentElement.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/ConvertToUTF8String.cpp&quot;
ERROR: Source/WebKitLegacy/win/WebView.h:466:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/URL.h:60:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/URL.h:61:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:92:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:94:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:97:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:133:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:134:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:139:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:175:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/URL.h:192:  Inline functions should not be in classes annotated with WTF_EXPORT_PRIVATE. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:114:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:402:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:411:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:423:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:433:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:446:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:456:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:467:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:476:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:488:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:500:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:512:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:524:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:536:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:833:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1020:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1026:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1028:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/cocoa/NSURLExtras.mm:1189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WebKit/UIProcess/SafeBrowsingWarning.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cocoa/URLCocoa.mm:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebCore/worklets/WorkletGlobalScope.h:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/mac/PublicSuffixMac.mm:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:30:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/URL.cpp:99:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:671:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/URL.cpp:883:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:884:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:885:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:886:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:887:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:888:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:889:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:890:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:891:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:892:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:893:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:894:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:895:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:896:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:897:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:898:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:899:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:900:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:901:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:902:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:903:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:904:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:905:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:906:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:907:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:908:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:909:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:910:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:911:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:912:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:913:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:914:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:915:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:916:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:917:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:918:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:919:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:920:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:921:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:922:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:923:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:924:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:925:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:926:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:927:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:928:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:929:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:930:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:931:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:932:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:933:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:934:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:935:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:936:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:937:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:938:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URL.cpp:939:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/URLHash.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebKitLegacy/win/WebResource.h:41:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/cf/URLCF.cpp:29:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WTF/wtf/cf/CFURLExtras.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 115 in 679 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>1483915</commentid>
    <comment_count>34</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-30 20:28:52 -0800</bug_when>
    <thetext>https://trac.webkit.org/r238772</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483918</commentid>
    <comment_count>35</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-30 20:29:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/46392208&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483938</commentid>
    <comment_count>36</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-30 23:03:26 -0800</bug_when>
    <thetext>This required quite a few little build fixes, but I think they&apos;re all done.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351473</attachid>
            <date>2018-10-02 20:52:55 -0700</date>
            <delta_ts>2018-10-02 23:02:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190234-20181002205254.patch</filename>
            <type>text/plain</type>
            <size>1124799</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI3NiBAQAorMjAxOC0xMC0wMiAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29y
ZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0ZvcndhcmQu
aDoKKyAgICAgICAgKiB3dGYvVVJMLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMLmNwcC4KKyAgICAgICAgKFdURjo6VVJMOjpwcm90b2NvbElzKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvcHlBU0NJSSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkw6Omlu
dmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpVUkwpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVHJpbUZyb21VUkwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VVJMOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6VVJMOjpsYXN0UGF0aENvbXBvbmVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpVUkw6OnByb3RvY29sIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlVSTDo6aG9zdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkw6OnBv
cnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpob3N0QW5kUG9ydCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkw6OnByb3RvY29sSG9zdEFuZFBv
cnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlRXNjYXBlU2VxdWVu
Y2VzRnJvbVBhcnNlZFVSTCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkw6OnVzZXIg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpwYXNzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6ZW5jb2RlZFVzZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6VVJMOjplbmNvZGVkUGFzcyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpVUkw6OmZyYWdtZW50SWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkw6OmJhc2VBc1N0cmluZyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkw6OmZpbGVTeXN0ZW1QYXRoIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmFzc2VydFByb3RvY29sSXNHb29kKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZURlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBG
b3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyRGVmYXVsdFBv
cnRGb3JQcm90b2NvbEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xl
YXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpVUkw6OnByb3RvY29sSXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VVJMOjpxdWVyeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkw6OnBhdGgg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRQcm90b2NvbCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0FsbEFTQ0lJKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmFwcGVuZEVuY29kZWRIb3N0bmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpVUkw6Omhvc3RTdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpV
Ukw6OnNldEhvc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpyZW1vdmVQb3J0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UG9ydCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpVUkw6OnNldEhvc3RBbmRQb3J0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVSTDo6c2V0VXNlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNl
dFBhc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRGcmFnbWVudElkZW50
aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpyZW1vdmVGcmFnbWVudElk
ZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpyZW1vdmVRdWVyeUFu
ZEZyYWdtZW50SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNl
dFF1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UGF0aCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjplcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVh
bCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpob3N0c0FyZUVxdWFsKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlVSTDo6aXNNYXRjaGluZ0RvbWFpbiBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6aXNIaWVyYXJjaGljYWwgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpjb3B5VG9CdWZmZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6cHJvdG9jb2xJc0ludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnByb3RvY29sSXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpw
cm90b2NvbElzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6cHJpbnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzdHJpcHBlZEZvclVzZUFzUmVmZXJy
ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjppc0xvY2FsRmlsZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwcm90b2NvbElzSmF2YVNjcmlwdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmJsYW5rVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVSTDo6aXNCbGFua1VSTCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojpwb3J0QWxsb3dlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUZyb21E
YXRhVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6
ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJM
OjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPDwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNJUHY0QWRkcmVzcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0lQdjZBZGRyZXNzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlVSTDo6aG9zdElzSVBBZGRyZXNzKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3dGYvVVJMLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oLgor
ICAgICAgICAoV2ViQ29yZTo6VVJMVGV4dEVuY29kaW5nOjp+VVJMVGV4dEVuY29kaW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6VVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVSTDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VVJMOjpjYW5TZXRIb3N0T3JQb3J0IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlVSTDo6Y2FuU2V0UGF0aG5hbWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VVJMOjpzdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VVJMOjpwcm90b2NvbElzQmxvYiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpVUkw6OnByb3RvY29sSXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlVSTDo6Y2Fubm90QmVBQmFzZVVSTCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpVUkw6Om9wZXJhdG9yIGNvbnN0IFN0cmluZyYgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VVJMOjpvcGVyYXRvciBOU1N0cmluZyogY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VVJMOjplbmNvZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VVJMOjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9
PSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlVSTDo6aXNOdWxsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVSTDo6aXNFbXB0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpV
Ukw6OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpoYXNQ
YXRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6aGFzVXNlcm5hbWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpoYXNQYXNzd29yZCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkw6Omhhc1F1ZXJ5IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6aGFzRnJhZ21lbnQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6cGF0aFN0YXJ0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6cGF0aEVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogd3RmL1VSTEhhc2guaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMSGFzaC5oLgorICAgICAgICAoV1RGOjpVUkxIYXNoOjpoYXNoKToKKyAgICAgICAgKFdU
Rjo6VVJMSGFzaDo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6VVJMSGFzaDo6aGFzaCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxIYXNoOjplcXVhbCk6IERlbGV0ZWQuCisgICAg
ICAgICogd3RmL1VSTFBhcnNlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTFBhcnNlci5jcHAuCisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6aXNJblVzZXJJbmZv
RW5jb2RlU2V0KToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpwYXJzZUF1dGhvcml0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2RlUG9pbnRJdGVyYXRvcjo6Q29kZVBvaW50SXRlcmF0b3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29kZVBvaW50SXRlcmF0b3I6Om9wZXJhdG9yPT0g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29kZVBvaW50SXRlcmF0b3I6Om9w
ZXJhdG9yIT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29kZVBvaW50SXRl
cmF0b3I6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2RlUG9pbnRJ
dGVyYXRvcjo6YXRFbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29kZVBv
aW50SXRlcmF0b3I6OmNvZGVVbml0c1NpbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvZGVQb2ludEl0ZXJhdG9yPExDaGFyPjo6b3BlcmF0b3IgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q29kZVBvaW50SXRlcmF0b3I8TENoYXI+OjpvcGVyYXRvcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj46Om9w
ZXJhdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvZGVQb2ludEl0ZXJh
dG9yPFVDaGFyPjo6b3BlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5k
Q29kZVBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQzBDb250cm9sKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQzBDb250cm9sT3JTcGFjZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjppc1RhYk9yTmV3bGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjppc0luU2ltcGxlRW5jb2RlU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omlz
SW5EZWZhdWx0RW5jb2RlU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzSW5Vc2Vy
SW5mb0VuY29kZVNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1BlcmNlbnRPck5v
bkFTQ0lJKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzU2xhc2hRdWVzdGlvbk9ySGFz
aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkU2NoZW1lQ2hhcmFjdGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2Rl
U2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6YWR2YW5jZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnRha2VzVHdvQWR2YW5jZXNVbnRp
bEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmlzV2luZG93c0Ry
aXZlTGV0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6YXBwZW5k
VG9BU0NJSUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmFw
cGVuZFdpbmRvd3NEcml2ZUxldHRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQ
YXJzZXI6OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVSTFBhcnNlcjo6c2hvdWxkQ29weUZpbGVVUkwpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6cGVyY2VudEVuY29kZUJ5dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VVJMUGFyc2VyOjpwZXJjZW50RW5jb2RlQnl0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxQYXJzZXI6OnV0ZjhQZXJjZW50RW5jb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlVSTFBhcnNlcjo6dXRmOFF1ZXJ5RW5jb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlVSTFBhcnNlcjo6ZW5jb2RlTm9uVVRGOFF1ZXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpzY2hlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFy
c2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxQYXJzZXI6OnVybExlbmd0aFVudGlsUGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpVUkxQYXJzZXI6OmNvcHlBU0NJSVN0cmluZ1VudGlsKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlVSTFBhcnNlcjo6Y29weVVSTFBhcnRzVW50aWwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VVJMUGFyc2VyOjppc1NpbmdsZURvdFBhdGhTZWdtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6aXNEb3VibGVEb3RQYXRoU2VnbWVudCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNvbnN1bWVTaW5nbGVEb3RQYXRo
U2VnbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNvbnN1bWVE
b3VibGVEb3RQYXRoU2VnbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJz
ZXI6OnNob3VsZFBvcFBhdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2Vy
Ojpwb3BQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6c3ludGF4
VmlvbGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6ZmFpbHVy
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNoZWNrTG9jYWxob3N0
Q29kZVBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6aXNBdExv
Y2FsaG9zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmlzTG9jYWxo
b3N0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VkRGF0YVZp
ZXcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpjdXJyZW50UG9zaXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxQYXJzZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlQXV0aG9yaXR5KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnNlcmlhbGl6ZUlQdjQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6emVyb1NlcXVlbmNlTGVuZ3RoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NlBpZWNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6c2VyaWFsaXplSVB2Nik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnBvdzI1Nik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJz
ZXI6OnBhcnNlSVB2NEhvc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2Vy
OjpwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VVJMUGFyc2VyOjpwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2Nik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6VVJMUGFyc2VyOjpwZXJjZW50RGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpVUkxQYXJzZXI6Omhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZVBvcnQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6c2VyaWFsaXplVVJMRW5jb2RlZEZvcm0pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6VVJMUGFyc2VyOjpzZXJpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VVJMUGFyc2VyOjppbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL1VSTFBhcnNlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaC4KKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpV
UkxQYXJzZXIpOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6OnJlc3VsdCk6CisgICAgICAgIChX
ZWJDb3JlOjpVUkxQYXJzZXI6OlVSTFBhcnNlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxQYXJzZXI6OnJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJz
ZXI6OmFkdmFuY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjphcHBl
bmRUb0FTQ0lJQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvY2YvQ0ZVUkxFeHRyYXMu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0VVJMQnl0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6aXNDRlVSTFNhbWVPcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4
dHJhcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJh
cy5oLgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6VVJMKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpmaWxlU3lzdGVtUGF0aCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogd3RmL2NvY29hL05TVVJMRXh0cmFzLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaC4KKyAgICAgICAgKiB3
dGYvY29jb2EvTlNVUkxFeHRyYXMubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0uCisgICAgICAgIChXVEY6Omhvc3ROYW1lTmVl
ZHNEZWNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChXVEY6Omhvc3ROYW1lTmVlZHNFbmNvZGlu
Z1dpdGhSYW5nZSk6CisgICAgICAgIChXVEY6OmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKToKKyAg
ICAgICAgKFdURjo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
aXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojppc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmlzTG9va2FsaWtlQ2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OndoaXRlTGlzdElETlNjcmlwdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWFkSURO
U2NyaXB0V2hpdGVMaXN0RmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphbGxDaGFy
YWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
aXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjppc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmFsbENoYXJhY3RlcnNBbGxvd2VkQnlUTERSdWxlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6aG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmRlY29kZUhvc3ROYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmVuY29kZUhvc3ROYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RS
YW5nZXNUaGF0TmVlZE1hcHBpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVj
dFJhbmdlc1RoYXROZWVkRW5jb2RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29s
bGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
YXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6YXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9VUkxTdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6bWFwSG9zdE5hbWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMV2l0aERhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6ZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZGF0YUZvclVSTENvbXBvbmVudFR5cGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6VVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMQnlSZW1vdmluZ1VzZXJJbmZvKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3JpZ2luYWxVUkxEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjppc1VzZXJWaXNpYmxlVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnJhbmdlT2ZVUkxTY2hlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9va3NMaWtl
QWJzb2x1dGVVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9jb2NvYS9VUkxDb2NvYS5tbTog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1hYy5tbS4KKyAgICAg
ICAgKFdURjo6VVJMOjpVUkwpOgorICAgICAgICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6VVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlVSTDo6b3BlcmF0b3IgTlNVUkwgKiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlVSTDo6aG9zdElzSVBBZGRyZXNzKTogRGVsZXRlZC4KKwogMjAxOC0xMC0wMiAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIzNjYyNCBhbmQgcjIzNjY3MS4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsMTIg
QEAKIAkJNTMxMUJENTMxRUE3MUNBRDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENTExRUE3MUNBRDAwNTI1
MjgxIC8qIFNpZ25hbHMuY3BwICovOyB9OwogCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyog
VGhyZWFkTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzExQkQ1QjFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgKi87
IH07CiAJCTUzNTM0RjJBMUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1MzRGMjkxRUMw
RTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRpb25zLmRlZnMgKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoQ2xpZW50LCBTZXJ2ZXIsICk7IH07IH07CisJCTVDMUYwNTkzMjE2NDM1NkIwMDM5
MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuY3Bw
ICovOyB9OworCQk1QzFGMDU5NTIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxRjA1OTQyMTY0MzdCMzAw
MzkzMDJDIC8qIFVSTENGLmNwcCAqLzsgfTsKKwkJNUNDMEVFNzUyMTYyOUYxOTAwQTFBODQyIC8q
IFVSTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0MwRUU3MzIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmNwcCAqLzsgfTsKKwkJ
NUNDMEVFNzYyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0MwRUU3NDIxNjI5RjE5MDBBMUE4NDIgLyogVVJM
LmNwcCAqLzsgfTsKKwkJNUNDMEVFODkyMTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29hLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFODYyMTYy
QkMyMjAwQTFBODQyIC8qIFVSTENvY29hLm1tICovOyB9OworCQk1Q0MwRUU4QTIxNjJCQzIyMDBB
MUE4NDIgLyogTlNVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0MwRUU4ODIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRyYXMubW0g
Ki87IH07CiAJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGQzFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OwogCQk3MEVDQTYwRDFC
MDI0MjY4MDA0NDk3MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwQTFCMDI0MjY4MDA0NDk3MzkgLyog
QXRvbWljU3RyaW5nSW1wbC5jcHAgKi87IH07CiAJCTdBMDUwOTNGMUZCOURDQzUwMEIzM0ZCOCAv
KiBKU09OVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBMDUwOTNFMUZCOURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmNwcCAqLzsgfTsK
QEAgLTM3Miw3ICszNzgsMTkgQEAKIAkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlM
UlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW55TFJVQ2FjaGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU5N0Y4MkMxRDk0Qjk5NzAwNjZCQzIx
IC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3luY2hyb25pemVkRml4ZWRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QjQzMzgzQTVEMEI0NjNDOTQzM0Q5MzMgLyogSW5kZXhNYXAuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZXhNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUMxRjA1OTEyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENGVVJMRXh0cmFzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMxRjA1OTIyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0
cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENGVVJMRXh0cmFzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBV
UkxDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxDRi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMUYwNTk3MjE2NDM5OTQwMDM5MzAyQyAv
KiBVUkxIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTEhhc2guaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8q
IFVuaXF1ZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWVSZWYu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzEyMTYyOUYxODAwQTFBODQy
IC8qIFVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzIyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBh
cnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxQYXJzZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzMyMTYyOUYxOTAwQTFBODQyIC8qIFVS
TFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxQYXJz
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3NDIxNjI5RjE5MDBB
MUE4NDIgLyogVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVS
TC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTc3MjE2MkEwMTAwMEEx
QTg0MiAvKiBVUkxIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTEhh
c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFODYyMTYyQkMyMjAwQTFB
ODQyIC8qIFVSTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVVJMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTg3MjE2
MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOU1VSTEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0Mw
RUU4ODIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOU1VSTEV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUQyNDdCNjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJNUQyNDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUQyNDdCNzAxNDY4OUM0NzAwRTc4Qjc2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC03MjAsOSArNzM4LDEyIEBACiAJCTJDREVEMEYwMTgxMTVDM0YwMDREQkE3MCAvKiBj
ZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUMxRjA1
OTEyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLywKKwkJCQk1QzFGMDU5MjIx
NjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuaCAqLywKIAkJCQlDMkJDRkM0MTFGNjFENjE2
MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi8sCiAJCQkJMkNERUQwRUUxODExNUMzODAwNERC
QTcwIC8qIFJ1bkxvb3BDRi5jcHAgKi8sCiAJCQkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8q
IFR5cGVDYXN0c0NGLmggKi8sCisJCQkJNUMxRjA1OTQyMTY0MzdCMzAwMzkzMDJDIC8qIFVSTENG
LmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMTEzMSw2ICsxMTUyLDEyIEBACiAJCQkJRTMwMEU1MjEyMDNENjQ1RjAwREE3OUJFIC8q
IFVuaXF1ZUFycmF5LmggKi8sCiAJCQkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1
ZVJlZi5oICovLAogCQkJCUNENzYwMEZGMUY5MEEzQ0EwMDAyNkUyNiAvKiBVbnNhZmVQb2ludGVy
LmggKi8sCisJCQkJNUNDMEVFNzQyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgKi8sCisJCQkJ
NUNDMEVFNzEyMTYyOUYxODAwQTFBODQyIC8qIFVSTC5oICovLAorCQkJCTVDMUYwNTk3MjE2NDM5
OTQwMDM5MzAyQyAvKiBVUkxIYXNoLmggKi8sCisJCQkJNUNDMEVFNzcyMTYyQTAxMDAwQTFBODQy
IC8qIFVSTEhhc2guaCAqLywKKwkJCQk1Q0MwRUU3MzIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFy
c2VyLmNwcCAqLywKKwkJCQk1Q0MwRUU3MjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmgg
Ki8sCiAJCQkJN0FGRUM2QjAxRUIyMkI1OTAwREFERTM2IC8qIFVVSUQuY3BwICovLAogCQkJCTdB
RkVDNkFFMUVCMjJBQzYwMERBREUzNiAvKiBVVUlELmggKi8sCiAJCQkJQThBNDczNkYxNTFBODI1
QjAwNDEyM0ZGIC8qIFZhbHVlQ2hlY2suaCAqLywKQEAgLTEzNTQsNyArMTM4MSwxMCBAQAogCQkJ
CUE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gKi8sCiAJCQkJ
QURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCAqLywK
IAkJCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29j
b2EubW0gKi8sCisJCQkJNUNDMEVFODcyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLmgg
Ki8sCisJCQkJNUNDMEVFODgyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tICovLAog
CQkJCUEzMEQ0MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovLAorCQkJCTVD
QzBFRTg2MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSAqLywKIAkJCQlFNEEwQUQzQzFB
OTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovLAogCQkJKTsKIAkJCXBhdGgg
PSBjb2NvYTsKQEAgLTE0ODEsNiArMTUxMSw3IEBACiAJCQkJQThBNDczOEIxNTFBODI1QjAwNDEy
M0ZGIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEQ0VFMjIwMTFDRUE3NTUx
MDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3M0FDMTUxQTgyNUIwMDQxMjNGRiAvKiBjYWNoZWQtcG93ZXJzLmNjIGluIFNvdXJjZXMgKi8s
CisJCQkJNUMxRjA1OTMyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNjZCMjhBMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVm
YXVsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyog
Q29sbGF0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTMyLDYgKzE1NjMsNyBAQAogCQkJ
CUFEODlCNkJBMUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0VDMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxs
b2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZCMjhDMURDOTdCQUIwMDRBMUQzRiAv
KiBNb25vdG9uaWNUaW1lLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQzBFRThBMjE2MkJDMjIw
MEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y0MTUx
QTgyNUIwMDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTE1ODUsNiArMTYxNywxMCBAQAogCQkJCTUzMTFCRDVDMUVBODIy
RjkwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZC
MjkwMURDOTdCQUIwMDRBMUQzRiAvKiBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY3MDc1RjUxRkJGNTNDRDAwNDg5QUYwIC8qIFRpbWluZ1Njb3BlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTVDQzBFRTc2MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNUMxRjA1OTUyMTY0MzdCMzAwMzkzMDJDIC8qIFVSTENGLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTVDQzBFRTg5MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDQzBFRTc1MjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQ
YXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMxODFDOEYxRDMwN0FCODAwRjVGQTE2IC8q
IFVUZXh0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMxODFDOTExRDMwN0FCODAw
RjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMx
ODFDOTMxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XVEYvd3Rm
L0ZvcndhcmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBTdHJpbmdW
aWV3OwogY2xhc3MgVGV4dFBvc2l0aW9uOwogY2xhc3MgVGV4dFN0cmVhbTsKIGNsYXNzIFVuaXF1
ZWRTdHJpbmdJbXBsOworY2xhc3MgVVJMOwogY2xhc3MgV2FsbFRpbWU7CiAKIHN0cnVjdCBGYXN0
TWFsbG9jOwpAQCAtMTA5LDYgKzExMCw3IEBAIHVzaW5nIFdURjo6U3RyaW5nSW1wbDsKIHVzaW5n
IFdURjo6U3RyaW5nVmlldzsKIHVzaW5nIFdURjo6VGV4dFBvc2l0aW9uOwogdXNpbmcgV1RGOjpU
ZXh0U3RyZWFtOwordXNpbmcgV1RGOjpVUkw7CiB1c2luZyBXVEY6OlZhcmlhbnQ7CiB1c2luZyBX
VEY6OlZlY3RvcjsKIApJbmRleDogU291cmNlL1dURi93dGYvVVJMLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCShyZXZpc2lvbiAyMzY3NjYpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHA6MjM2NzY2KQorKysgU291cmNlL1dURi93dGYvVVJMLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDctMjAwOCwgMjAxMS0yMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVSTC5oIgor
CisjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1
bmljb2RlL3VpZG5hLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
SGV4TnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgor
CisvLyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVzZSBvZiB0aGUgKyBvcGVyYXRv
ciBvbiBTdHJpbmcuCisvLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRpbWl6ZSB0aGF0IG9wZXJhdG9y
IHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQorLy8gc28gbWFueSBhbGxvY2F0aW9ucywgb3IgY2hhbmdl
IHRoaXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgorCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK3R5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gQ2hh
ckJ1ZmZlcjsKK3R5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOworCitzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7CisKKy8vIENvcGll
cyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3VyY2Ug
Y2hhcmFjdGVycyBhcmUKKy8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3QgYmUg
bGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKKy8vIGluIHRoZSBzb3Vy
Y2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRoZSBy
ZXN1bHQuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIq
IGRlc3QpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIG1lbWNweShkZXN0LCBzdHJpbmcuY2hh
cmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgY29uc3Qg
VUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgc2l6ZV90IGxlbmd0
aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykKKyAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzcmNbaV0p
OworICAgIH0KK30KKwordm9pZCBVUkw6OmludmFsaWRhdGUoKQoreworICAgIG1faXNWYWxpZCA9
IGZhbHNlOworICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOworICAgIG1fY2Fu
bm90QmVBQmFzZVVSTCA9IGZhbHNlOworICAgIG1fc2NoZW1lRW5kID0gMDsKKyAgICBtX3VzZXJT
dGFydCA9IDA7CisgICAgbV91c2VyRW5kID0gMDsKKyAgICBtX3Bhc3N3b3JkRW5kID0gMDsKKyAg
ICBtX2hvc3RFbmQgPSAwOworICAgIG1fcG9ydExlbmd0aCA9IDA7CisgICAgbV9wYXRoRW5kID0g
MDsKKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7CisgICAgbV9xdWVyeUVuZCA9IDA7Cit9
CisKK1VSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29u
c3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKK3sKKyAgICBVUkxQYXJzZXIgcGFyc2VyKHJl
bGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9
CisKK3N0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCit7CisgICAgLy8gQnJv
d3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbAorICAg
IC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4gKnVuc2lnbmVkKiBj
aGFyIGhlcmUKKyAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9ubHkgY2F0Y2ggY29u
dHJvbCBjaGFyYWN0ZXJzLgorICAgIHJldHVybiBjIDw9ICcgJzsKK30KKworVVJMIFVSTDo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBVUkwgcmVzdWx0ID0gKnRoaXM7CisgICAgcmVzdWx0
Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK1N0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKK3sKKyAg
ICBpZiAoIWhhc1BhdGgoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgdW5zaWdu
ZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKKyAgICBpZiAobV9zdHJpbmdbZW5kXSA9PSAnLycpCisg
ICAgICAgIC0tZW5kOworCisgICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcucmV2ZXJzZUZpbmQo
Jy8nLCBlbmQpOworICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2hvc3RF
bmQgKyBtX3BvcnRMZW5ndGgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgKytzdGFy
dDsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsg
MSk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7Cit9CisKK1N0
cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBzdGFydCA9IGhvc3RT
dGFydCgpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQs
IG1faG9zdEVuZCAtIHN0YXJ0KTsKK30KKworc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMOjpw
b3J0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcG9ydExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCBudW1iZXI7
CisgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3Bv
cnRMZW5ndGggLSAxLCAmb2spOworICAgIGVsc2UKKyAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVy
c1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9zdEVuZCArIDEsIG1f
cG9ydExlbmd0aCAtIDEsICZvayk7CisgICAgaWYgKCFvayB8fCBudW1iZXIgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgcmV0dXJuIG51bWJlcjsKK30KKworU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBjb25z
dAoreworICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkpCisgICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9ydC52YWx1ZSgp
KSk7CisgICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOworfQorCitTdHJpbmcgVVJMOjpwcm90
b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKK3sKKyAgICBTdHJpbmcgcmVzdWx0ID0gbV9zdHJpbmcu
c3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7CisKKyAgICBpZiAobV9wYXNz
d29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgeworICAgICAgICBjb25zdCBpbnQgYWxsb3dGb3JU
cmFpbGluZ0F0U2lnbiA9IDE7CisgICAgICAgIHJlc3VsdC5yZW1vdmUobV91c2VyU3RhcnQsIG1f
cGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdBdFNpZ24pOworICAg
IH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBTdHJpbmcgZGVjb2RlRXNjYXBl
U2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0KQoreworICAgIGF1dG8gaW5w
dXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBpZiAoIWlucHV0TGVuZ3RoKQorICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBWZWN0b3I8TENoYXI+IHBlcmNlbnREZWNvZGVk
OworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXRMZW5ndGgp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgKytpKSB7CisgICAg
ICAgIGlmIChpbnB1dFtpXSA9PSAnJScKKyAgICAgICAgICAgICYmIGlucHV0TGVuZ3RoID4gMgor
ICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgorICAgICAgICAgICAgJiYgaXNBU0NJ
SUhleERpZ2l0KGlucHV0W2kgKyAxXSkKKyAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChp
bnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBl
bmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7CisgICAgICAg
ICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGVyY2VudERlY29kZWQu
dW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKKyAgICB9CisgICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOworfQor
CitTdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2Vx
dWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2Vy
U3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Cit9CisKK1N0cmluZyBVUkw6OnBhc3Mo
KSBjb25zdAoreworICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21Q
YXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlckVuZCArIDEsIG1f
cGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Cit9CisKK1N0cmluZyBVUkw6OmVuY29kZWRV
c2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlclN0YXJ0
LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Cit9CisKK1N0cmluZyBVUkw6OmVuY29kZWRQYXNz
KCkgY29uc3QKK3sKKyAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91c2Vy
RW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOworfQorCitTdHJpbmcgVVJM
OjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICghaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmlu
Zy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOworfQorCitib29sIFVSTDo6aGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxl
bmd0aCgpICE9IG1fcXVlcnlFbmQ7Cit9CisKK1N0cmluZyBVUkw6OmJhc2VBc1N0cmluZygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwor
fQorCisjaWYgIVVTRShDRikKKworU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAor
eworICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQorICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TChTdHJpbmdWaWV3KHBhdGgoKSkpOworfQorCisjZW5kaWYKKworI2lmZGVmIE5ERUJVRworCitz
dGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldykKK3sKK30K
KworI2Vsc2UKKworc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyBw
cm90b2NvbCkKK3sKKyAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0aGlzIGZ1
bmN0aW9uIGFueSBtb3JlLgorICAgIC8vIFRoZSBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsIGZ1
bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVycworICAgIC8vIGFyZSBvbmVz
IGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3QgYW5kIHJlbGllZCBvbiB0aGVz
ZSBjaGVja3MuCisgICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHByb3RvY29sLmNvZGVVbml0cygp
KSB7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOworICAgICAgICBBU1NFUlQo
Y2hhcmFjdGVyID4gJyAnKTsKKyAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoY2hhcmFjdGVy
KSk7CisgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSA9PSBj
aGFyYWN0ZXIpOworICAgIH0KK30KKworI2VuZGlmCisKK3N0YXRpYyBMb2NrIGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKKwordXNpbmcgRGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+Oworc3RhdGljIERl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKQoreworICAgIHN0YXRpYyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
Rm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKKyAgICByZXR1cm4gZGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcDsKK30KKworc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xN
YXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygp
Cit7CisgICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0UG9y
dEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKTsK
KyAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCisgICAgICAgIGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmc7
CisgICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOworfQorCit2b2lkIHJlZ2lz
dGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgZW5zdXJlRGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQpOworfQorCit2b2lk
IGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2Nr
KTsKKyAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcoKSkKKyAgICAgICAgbWFwLT5jbGVhcigpOworfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCit7CisgICAgaWYg
KGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmco
KSkgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgICAgIEFTU0VSVChvdmVycmlkZU1hcCk7IC8vIE5v
IG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRlTWFwIGNhbm5vdCBi
ZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KKyAgICAgICAgYXV0byBpdGVyYXRvciA9
IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Cisg
ICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCisgICAgICAgICAgICBy
ZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gVVJMUGFyc2VyOjpkZWZh
dWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKK30KKworYm9vbCBpc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkKK3sKKyAgICByZXR1
cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsKK30KKworYm9vbCBV
Ukw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Cit7CisgICAgYXNzZXJ0
UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
cHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7CisKKyAgICAvLyBKYXZhU2NyaXB0IFVSTHMg
YXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVSTCBkZWNpZGVzIHRo
ZXkgYXJlIGludmFsaWQuCisgICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJvdG9jb2xJc0phdmFT
Y3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKKyAgICBBU1NFUlQoIWVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2YXNjcmlwdCIpKTsK
KworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBE
byB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgorICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7CisgICAgICAgIGlm
ICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0s
IHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZlIGNvbnN1bWVkIGFs
bCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KK30KKworYm9vbCBVUkw6OnByb3RvY29sSXMo
U3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKK3sKKyAgICBhc3NlcnRQcm90b2NvbElzR29vZChw
cm90b2NvbCk7CisKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5sZW5ndGgoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcg
YSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zY2hl
bWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9z
dHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBVUkw6OnF1ZXJ5KCkgY29uc3QKK3sKKyAg
ICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9xdWVyeUVu
ZCAtIChtX3BhdGhFbmQgKyAxKSk7IAorfQorCitTdHJpbmcgVVJMOjpwYXRoKCkgY29uc3QKK3sK
KyAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworICAgIHJl
dHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0gcG9ydEVuZCk7Cit9
CisKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCit7CisgICAgLy8gRmly
ZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KKyAgICBz
aXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKKyAgICBTdHJpbmcgbmV3UHJv
dG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7CisgICAgYXV0byBjYW5v
bmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90b2Nv
bCk7CisgICAgaWYgKCFjYW5vbmljYWxpemVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmco
KmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFVSTFBhcnNlciBw
YXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fc2No
ZW1lRW5kKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIHJldHVybiB0cnVl
OworfQorCitzdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAg
IGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVND
SUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGNo
YXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgo
KSk7Cit9CisgICAgCisvLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmll
ZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KKy8vIHRoZSBvdXRwdXQgYnVmZmVy
LiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KKy8vIFJldHVybiB2YWx1
ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KK3N0YXRpYyBib29sIGFwcGVuZEVu
Y29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykKK3sK
KyAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFt
ZS4KKyAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJ
RE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCisgICAgY29uc3QgdW5z
aWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OworICAgIAorICAgIGlmIChzdHJpbmcu
bGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJKHN0cmluZykpIHsK
KyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3Ro
XTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBw
cm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBu
dW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVSTFBhcnNlcjo6aW50
ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCisgICAgICAgIHN0cmluZy51cGNvbnZl
cnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1ZmZlciwgaG9zdG5h
bWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKKyAgICAKKyAgICBp
ZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7CisgICAg
ICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit1
bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3Bhc3N3b3Jk
RW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsK
K30KKwordm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbG9uSW5kZXggPSBzLmZpbmQo
JzonKTsKKyAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOworICAgIGlmICghYXBwZW5kRW5jb2Rl
ZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9zY2hlbWVFbmQgKyAxKTsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOworICAgIGlm
IChzbGFzaFNsYXNoTmVlZGVkKQorICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7
CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBl
bmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vi
c3RyaW5nKG1faG9zdEVuZCkpOworCisgICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVyLnRvU3Ry
aW5nKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6cmVt
b3ZlUG9ydCgpCit7CisgICAgaWYgKCFtX3BvcnRMZW5ndGgpCisgICAgICAgIHJldHVybjsKKyAg
ICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdCht
X2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9w
b3J0TGVuZ3RoKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCit2b2lkIFVS
TDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9ydExlbmd0aDsKKyAg
ICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RF
bmQgKyAxKTsKKworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5n
OjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBt
X3BvcnRMZW5ndGgpKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK3ZvaWQg
VVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQoreworICAgIGlm
ICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmdWaWV3IGhvc3ROYW1l
KGhvc3RBbmRQb3J0KTsKKyAgICBTdHJpbmdWaWV3IHBvcnQ7CisgICAgCisgICAgYXV0byBjb2xv
bkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOworICAgIGlmIChjb2xvbkluZGV4ICE9IG5vdEZv
dW5kKSB7CisgICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEp
OworICAgICAgICBib29sIG9rOworICAgICAgICBpbnQgcG9ydEludCA9IHBvcnQudG9JbnRTdHJp
Y3Qob2spOworICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4
KTsKKyAgICB9CisKKyAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7CisgICAgaWYgKCFhcHBlbmRFbmNv
ZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkpCisgICAgICAgIHJldHVybjsK
KworICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsKKyAgICBp
ZiAoc2xhc2hTbGFzaE5lZWRlZCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIvLyIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwg
ZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOworICAgIGlmICghcG9ydC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KHBvcnQpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KG1fc3RyaW5nKS5z
dWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7CisKKyAgICBVUkxQYXJzZXIgcGFy
c2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9
CisKK3N0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBp
bnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCit7CisgICAgYXV0byBlbmNvZGUgPSBb
c2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgeworICAgICAgICBDU3RyaW5nIHV0
ZjggPSBpbnB1dC51dGY4KCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSB1dGY4LmRhdGEoKTsKKyAg
ICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBhdXRvIGxlbmd0aCA9IHV0Zjgu
bGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7IGorKykg
eworICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKKyAgICAgICAgICAgIGlmIChzaG91bGRF
bmNvZGUoYykpIHsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpKTsK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdp
dChjKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAg
IH07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aCgpOyArK2kpIHsK
KyAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1dFtpXSkpKQorICAgICAgICAg
ICAgcmV0dXJuIGVuY29kZShpbnB1dCk7CisgICAgfQorICAgIHJldHVybiBpbnB1dDsKK30KKwor
dm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQoreworICAgIGlmICghbV9pc1Zh
bGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3Rl
cnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRp
b25zLAorICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNl
ciBsb2dpbi4KKworICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKKyAgICBpZiAoIXVzZXIu
aXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29kZUNoYXJhY3RlcnMo
dXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOworICAgICAgICBpZiAobV91
c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisgICAg
ICAgICAgICB1ID0gIi8vIiArIHU7CisgICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0IGhh
dmUgb25lIGJlZm9yZS4KKyAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBt
X3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKKyAgICAgICAgICAgIHUuYXBw
ZW5kKCdAJyk7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3
KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIg
bm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRFbmQgJiYg
ZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKKyAgICAgICAgICAgIGVu
ZCArPSAxOworICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1l
bHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgor
ICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7CisgICAgICAgICAgICBVUkxQYXJzZXIg
cGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJTdGFydCks
IFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAgICAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBVUkw6OnNl
dFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKKyAgICBp
ZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmcgcCA9ICI6IiArIHBlcmNl
bnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29k
ZVNldCkgKyAiQCI7CisgICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisgICAgICAgICAgICBwID0gIi8vIiArIHA7CisgICAgICAg
IC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93
bi4KKyAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcp
CisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3Ry
aW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwgU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBu
ZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gbV91
c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisgICAg
ICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0
aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBh
IGNoYW5nZS4KKyAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKKyAgICAgICAgICAgIFVS
TFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNl
ckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAgICAg
ICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBV
Ukw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCit7CisgICAg
aWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBPcHRpbWl6
ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBlbnMgdG8gYmUgZXF1
YWwgdG8gd2hhdCB3YXMgcGFzc2VkPworICAgIC8vIEZJWE1FOiBJcyBpdCBjb3JyZWN0IHRvIGRv
IHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnM/
CisgICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgeyBtX3N0cmlu
ZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVyKSB9LnJlc3VsdCgp
OworfQorCit2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKK3sKKyAgICBpZiAo
IW1faXNWYWxpZCkgeworICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1
ZXJ5RW5kKQorICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7Cit9
CisKK3ZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpCit7CisgICAg
aWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RyaW5nID0gbV9zdHJp
bmcubGVmdChtX3BhdGhFbmQpOworICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhFbmQ7Cit9CisKK3Zv
aWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQoreworICAgIGlmICghbV9pc1Zh
bGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVNDSUkg
Y2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCisgICAgLy8gVXN1YWxseSwg
dGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwg
YnV0IHdlIGRvbid0IGhhdmUKKyAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRoaXMg
ZnVuY3Rpb24uCisgICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2CisgICAgaWYgKChx
dWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsK
KyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcp
LmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKG1fcXVlcnlFbmQpKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAg
IH0gZWxzZSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3
KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5z
dWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
CisgICAgfQorCit9CisKK3ZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKK3sKKyAg
ICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIHBhdGggPSBz
OworICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKKyAgICAgICAgcGF0
aCA9ICIvIiArIHBhdGg7CisKKyAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtd
IChVQ2hhciBjaGFyYWN0ZXIpIHsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwg
Y2hhcmFjdGVyID09ICcjJzsKKyAgICB9OworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCksIHBl
cmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiksIFN0
cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7CisgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Cit9CisKK2Jvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmll
cihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5tX3F1ZXJ5RW5kICE9
IGIubV9xdWVyeUVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHF1ZXJ5
TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBxdWVy
eUxlbmd0aDsgKytpKQorICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ld
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBi
KQoreworICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7CisgICAgICAgIGlmIChhLnN0cmluZygp
W2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChj
b25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5tX3NjaGVtZUVuZCAhPSBi
Lm1fc2NoZW1lRW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBob3N0
U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9o
b3N0RW5kIC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3Rh
cnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gYi5ob3N0U3Rh
cnQoKTsKKyAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7CisgICAgICAgIGlmIChhLnN0cmluZygpW2ld
ICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgLy8gQW5kIHRoZSBob3N0CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RMZW5n
dGhBOyArK2kpIHsKKyAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldICE9IGIu
c3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwm
IGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3Rh
cnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0
QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25l
ZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKKyAgICBpZiAoaG9zdExl
bmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7CisgICAgICAgIGlmIChhLnN0
cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFydEIgKyBpXSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0Cit7
CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZG9t
YWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIXByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBob3N0
ID0gdGhpcy0+aG9zdCgpOworICAgIGlmICghaG9zdC5lbmRzV2l0aChkb21haW4pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9PSBkb21haW4ubGVu
Z3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgpIC0gMV0gPT0gJy4n
OworfQorCitTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcm
IGlucHV0KQoreworICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhpbnB1dCwgVVJM
UGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOworfQorCitib29sIFVSTDo6aXNIaWVyYXJj
aGljYWwoKSBjb25zdAoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9PSAnOicpOworICAgIHJldHVy
biBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKK30KKwordm9pZCBVUkw6OmNvcHlU
b0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUgY2hhcmFjdGVycyBp
biB0aGUgc3RyaW5nIQorICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlkIFVSTCwgd2hpY2gg
aXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCisgICAgYnVmZmVyLnJlc2l6
ZShtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0
YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Citib29sIHByb3RvY29s
SXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkK
K3sKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcg
b2JqZWN0LgorICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29sKSkpOworICAgIGJv
b2wgaXNMZWFkaW5nID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBqID0gMDsgdXJs
W2ldOyArK2kpIHsKKyAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRy
b2wgY2hhcmFjdGVycy4KKyAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91bGRUcmltRnJvbVVS
TCh1cmxbaV0pKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlzTGVhZGluZyA9IGZh
bHNlOworCisgICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVzLgorICAgICAgICBp
ZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ldID09ICdcbicpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIXByb3RvY29sW2pdKQorICAgICAg
ICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7CisgICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2Fz
ZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICArK2o7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkK
K3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wpOworfQorCitp
bmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNo
YXIqIHByb3RvY29sKQoreworICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzSW50ZXJuYWwo
c3RyaW5nLCBwcm90b2NvbCk7Cit9CisKKyNpZm5kZWYgTkRFQlVHCisKK3ZvaWQgVVJMOjpwcmlu
dCgpIGNvbnN0Cit7CisgICAgcHJpbnRmKCIlc1xuIiwgbV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7
Cit9CisKKyNlbmRpZgorCitTdHJpbmcgVVJMOjpzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBj
b25zdAoreworICAgIFVSTCByZWZlcnJlcigqdGhpcyk7CisgICAgcmVmZXJyZXIuc2V0VXNlcihT
dHJpbmcoKSk7CisgICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmcoKSk7CisgICAgcmVmZXJyZXIu
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIHJlZmVycmVyLnN0cmluZygp
OworfQorCitib29sIFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdAoreworICAgIC8vIEluY2x1ZGlu
ZyBmZWVkIGhlcmUgbWlnaHQgYmUgYSBiYWQgaWRlYSBzaW5jZSBkcmFnIGFuZCBkcm9wIHVzZXMg
dGhpcyBjaGVjaworICAgIC8vIGFuZCBpbmNsdWRpbmcgZmVlZCB3b3VsZCBhbGxvdyBmZWVkcyB0
byBwb3RlbnRpYWxseSBsZXQgc29tZW9uZSdzIGJsb2cKKyAgICAvLyByZWFkIHRoZSBjb250ZW50
cyBvZiB0aGUgY2xpcGJvYXJkIG9uIGEgZHJhZywgZXZlbiB3aXRob3V0IGEgZHJvcC4KKyAgICAv
LyBMaWtld2lzZSB3aXRoIHVzaW5nIHRoZSBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc0xv
Y2FsKCkgZnVuY3Rpb24uCisgICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKK30KKworYm9v
bCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICByZXR1cm4g
cHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKK30KKworYm9vbCBwcm90b2Nv
bElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0lu
dGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKK30KKworYm9vbCBwcm90b2NvbElzSW5IVFRQRmFt
aWx5KGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgp
OworICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBv
YmplY3QuCisgICAgcmV0dXJuIGxlbmd0aCA+PSA1CisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwodXJsWzBdLCAnaCcpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwodXJsWzFdLCAndCcpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
dXJsWzJdLCAndCcpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzNd
LCAncCcpCisgICAgICAgICYmICh1cmxbNF0gPT0gJzonIHx8IChpc0FTQ0lJQWxwaGFDYXNlbGVz
c0VxdWFsKHVybFs0XSwgJ3MnKSAmJiBsZW5ndGggPj0gNiAmJiB1cmxbNV0gPT0gJzonKSk7Cit9
CisKK2NvbnN0IFVSTCYgYmxhbmtVUkwoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxV
Ukw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJvdXQ6YmxhbmsiKTsKKyAgICByZXR1cm4gc3Rh
dGljQmxhbmtVUkw7Cit9CisKK2Jvb2wgVVJMOjppc0JsYW5rVVJMKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gcHJvdG9jb2xJcygiYWJvdXQiKTsKK30KKworYm9vbCBwb3J0QWxsb3dlZChjb25zdCBV
UkwmIHVybCkKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQo
KTsKKworICAgIC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZlIGEgcG9ydCwgcmV0dXJuIGVh
cmx5IGZvciB0aGUgIm5vIHBvcnQiIGNhc2UuCisgICAgaWYgKCFwb3J0KQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hlcyB0aGUgcG9y
dCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KKyAgICAvLyBTZWUgaHR0cDovL3d3
dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBmb3IgbW9yZSBp
bmZvcm1hdGlvbi4KKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgYmxvY2tlZFBvcnRMaXN0W10g
PSB7CisgICAgICAgIDEsICAgIC8vIHRjcG11eAorICAgICAgICA3LCAgICAvLyBlY2hvCisgICAg
ICAgIDksICAgIC8vIGRpc2NhcmQKKyAgICAgICAgMTEsICAgLy8gc3lzdGF0CisgICAgICAgIDEz
LCAgIC8vIGRheXRpbWUKKyAgICAgICAgMTUsICAgLy8gbmV0c3RhdAorICAgICAgICAxNywgICAv
LyBxb3RkCisgICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KKyAgICAgICAgMjAsICAgLy8gRlRQLWRh
dGEKKyAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKKyAgICAgICAgMjIsICAgLy8gU1NICisg
ICAgICAgIDIzLCAgIC8vIHRlbG5ldAorICAgICAgICAyNSwgICAvLyBTTVRQCisgICAgICAgIDM3
LCAgIC8vIHRpbWUKKyAgICAgICAgNDIsICAgLy8gbmFtZQorICAgICAgICA0MywgICAvLyBuaWNu
YW1lCisgICAgICAgIDUzLCAgIC8vIGRvbWFpbgorICAgICAgICA3NywgICAvLyBwcml2LXJqcwor
ICAgICAgICA3OSwgICAvLyBmaW5nZXIKKyAgICAgICAgODcsICAgLy8gdHR5bGluaworICAgICAg
ICA5NSwgICAvLyBzdXBkdXAKKyAgICAgICAgMTAxLCAgLy8gaG9zdHJpYW1lCisgICAgICAgIDEw
MiwgIC8vIGlzby10c2FwCisgICAgICAgIDEwMywgIC8vIGdwcGl0bnAKKyAgICAgICAgMTA0LCAg
Ly8gYWNyLW5lbWEKKyAgICAgICAgMTA5LCAgLy8gUE9QMgorICAgICAgICAxMTAsICAvLyBQT1Az
CisgICAgICAgIDExMSwgIC8vIHN1bnJwYworICAgICAgICAxMTMsICAvLyBhdXRoCisgICAgICAg
IDExNSwgIC8vIFNGVFAKKyAgICAgICAgMTE3LCAgLy8gdXVjcC1wYXRoCisgICAgICAgIDExOSwg
IC8vIG5udHAKKyAgICAgICAgMTIzLCAgLy8gTlRQCisgICAgICAgIDEzNSwgIC8vIGxvYy1zcnYg
LyBlcG1hcAorICAgICAgICAxMzksICAvLyBuZXRiaW9zCisgICAgICAgIDE0MywgIC8vIElNQVAy
CisgICAgICAgIDE3OSwgIC8vIEJHUAorICAgICAgICAzODksICAvLyBMREFQCisgICAgICAgIDQ2
NSwgIC8vIFNNVFArU1NMCisgICAgICAgIDUxMiwgIC8vIHByaW50IC8gZXhlYworICAgICAgICA1
MTMsICAvLyBsb2dpbgorICAgICAgICA1MTQsICAvLyBzaGVsbAorICAgICAgICA1MTUsICAvLyBw
cmludGVyCisgICAgICAgIDUyNiwgIC8vIHRlbXBvCisgICAgICAgIDUzMCwgIC8vIGNvdXJpZXIK
KyAgICAgICAgNTMxLCAgLy8gQ2hhdAorICAgICAgICA1MzIsICAvLyBuZXRuZXdzCisgICAgICAg
IDU0MCwgIC8vIFVVQ1AKKyAgICAgICAgNTQ4LCAgLy8gYWZwb3ZlcnRjcCBbQXBwbGUgYWRkaXRp
b25dCisgICAgICAgIDU1NiwgIC8vIHJlbW90ZWZzCisgICAgICAgIDU2MywgIC8vIE5OVFArU1NM
CisgICAgICAgIDU4NywgIC8vIEVTTVRQCisgICAgICAgIDYwMSwgIC8vIHN5c2xvZy1jb25uCisg
ICAgICAgIDYzNiwgIC8vIExEQVArU1NMCisgICAgICAgIDk5MywgIC8vIElNQVArU1NMCisgICAg
ICAgIDk5NSwgIC8vIFBPUDMrU1NMCisgICAgICAgIDIwNDksIC8vIE5GUworICAgICAgICAzNjU5
LCAvLyBhcHBsZS1zYXNsIC8gUGFzc3dvcmRTZXJ2ZXIgW0FwcGxlIGFkZGl0aW9uXQorICAgICAg
ICA0MDQ1LCAvLyBsb2NrZAorICAgICAgICA0MTkwLCAvLyBNYW5hZ2VTaWV2ZSBbQXBwbGUgYWRk
aXRpb25dCisgICAgICAgIDYwMDAsIC8vIFgxMQorICAgICAgICA2NjY1LCAvLyBBbHRlcm5hdGUg
SVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2NiwgLy8gQWx0ZXJuYXRlIElSQyBbQXBw
bGUgYWRkaXRpb25dCisgICAgICAgIDY2NjcsIC8vIFN0YW5kYXJkIElSQyBbQXBwbGUgYWRkaXRp
b25dCisgICAgICAgIDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAg
ICAgICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY3
OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2Njk3LCAv
LyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8v
IFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCisgICAgfTsKKworICAgIC8v
IElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0Lgor
ICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0
ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKKyAgICBpZiAoIXN0ZDo6YmluYXJ5X3NlYXJjaChz
dGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCksIHBv
cnQudmFsdWUoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gQWxsb3cgcG9ydHMg
MjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgorICAgIGlmICgocG9ydC52
YWx1ZSgpID09IDIxIHx8IHBvcnQudmFsdWUoKSA9PSAyMikgJiYgdXJsLnByb3RvY29sSXMoImZ0
cCIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEFsbG93IGFueSBwb3J0IG51bWJl
ciBpbiBhIGZpbGUgVVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIgaXMgaWdub3JlZC4KKyAgICBp
ZiAodXJsLnByb3RvY29sSXMoImZpbGUiKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsKQoreworICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiZGF0YSIpKTsK
KworICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9yIHdoZW4gdGhlIFVSTCBo
YXMgYSBjb21tYSBmaXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVyPworICAgIC8vIEN1cnJlbnRs
eSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRoYXQgY2FzZS4gTm90
IHN1cmUgdGhhdCdzIGNvcnJlY3QuCisgICAgYXV0byBpbmRleCA9IHVybC5maW5kKCc7JywgNSk7
CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICBpbmRleCA9IHVybC5maW5kKCcs
JywgNSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIC8vIEZJWE1FOiBU
aGVyZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUgaXQgc291bmQgbGlrZSB0aGlz
IHNob3VsZCBiZSByZXR1cm5pbmcgdGV4dC9wbGFpbi4KKyAgICAgICAgLy8gQnV0IHdlIGhhdmUg
YmVlbiByZXR1cm5pbmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNvbWUgdGltZSwgc28gbm90IGNo
YW5naW5nIGl0cyBiZWhhdmlvciBhdCB0aGlzIHRpbWUuCisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworICAgIH0KKyAgICBpZiAoaW5kZXggPT0gNSkKKyAgICAgICAgcmV0dXJuICJ0ZXh0
L3BsYWluIl9zOworICAgIEFTU0VSVChpbmRleCA+PSA1KTsKKyAgICByZXR1cm4gdXJsLnN1YnN0
cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Cit9CisKK1N0cmlu
ZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgpIGNv
bnN0Cit7CisgICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkKKyAgICAgICAgcmV0
dXJuIHN0cmluZygpOworCisgICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8gMiAtIDEp
ICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7Cit9CisKK1VSTCBVUkw6
OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXJ0KQorewor
ICAgIHJldHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKK30KKworVVJMIFVSTDo6Zmls
ZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIHJl
dHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7Cit9CisKK1RleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJsKQoreworICAgIHRzIDw8
IHVybC5zdHJpbmcoKTsKKyAgICByZXR1cm4gdHM7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0Ep
ICYmICFVU0UoU09VUCkKK3N0YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3RyaW5nVmlldyBzdHJp
bmcpCit7CisgICAgYXV0byBjb3VudCA9IDA7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8gb2N0ZXQg
OiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicpKSB7CisgICAgICAgIGlmIChj
b3VudCA+PSA0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IGF1
dG8gbGVuZ3RoID0gb2N0ZXQubGVuZ3RoKCk7CisgICAgICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0
aCA+IDMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byB2YWx1ZSA9
IDA7CisgICAgICAgIGZvciAoYXV0byBpID0gMHU7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgY29uc3QgYXV0byBkaWdpdCA9IG9jdGV0W2ldOworCisgICAgICAgICAgICAvLyBQcm9o
aWJpdCBsZWFkaW5nIHplcm9lcy4KKyAgICAgICAgICAgIGlmIChkaWdpdCA+ICc5JyB8fCBkaWdp
dCA8ICghaSAmJiBsZW5ndGggPiAxID8gJzEnIDogJzAnKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHZhbHVlID0gMTAgKiB2YWx1ZSArIChkaWdpdCAtICcw
Jyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodmFsdWUgPiAyNTUpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY291bnQrKzsKKyAgICB9CisKKyAgICByZXR1cm4gKGNv
dW50ID09IDQpOworfQorCitzdGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNzKFN0cmluZ1ZpZXcgc3Ry
aW5nKQoreworICAgIGVudW0gU2tpcFN0YXRlIHsgTm9uZSwgV2lsbFNraXAsIFNraXBwaW5nLCBT
a2lwcGVkLCBGaW5hbCB9OworICAgIGF1dG8gc2tpcFN0YXRlID0gTm9uZTsKKyAgICBhdXRvIGNv
dW50ID0gMDsKKworICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQgOiBzdHJpbmcuc3BsaXRBbGxv
d2luZ0VtcHR5RW50cmllcygnOicpKSB7CisgICAgICAgIGlmIChjb3VudCA+PSA4IHx8IHNraXBT
dGF0ZSA9PSBGaW5hbCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25z
dCBhdXRvIGxlbmd0aCA9IGhleHRldC5sZW5ndGgoKTsKKyAgICAgICAgaWYgKCFsZW5ndGgpIHsK
KyAgICAgICAgICAgIC8vIDo6IG1heSBiZSB1c2VkIGFueXdoZXJlIHRvIHNraXAgMSB0byA4IGhl
eHRldHMsIGJ1dCBvbmx5IG9uY2UuCisgICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IFNraXBw
ZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpZiAoc2tp
cFN0YXRlID09IE5vbmUpCisgICAgICAgICAgICAgICAgc2tpcFN0YXRlID0gIWNvdW50ID8gV2ls
bFNraXAgOiBTa2lwcGluZzsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNraXBTdGF0ZSA9PSBXaWxs
U2tpcCkKKyAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGluZzsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoc2tpcFN0YXRlID09IFNr
aXBwaW5nKQorICAgICAgICAgICAgc2tpcFN0YXRlID0gU2tpcHBlZDsKKworICAgICAgICBpZiAo
bGVuZ3RoID4gNCkgeworICAgICAgICAgICAgLy8gQW4gSVB2NCBhZGRyZXNzIG1heSBiZSB1c2Vk
IGluIHBsYWNlIG9mIHRoZSBmaW5hbCB0d28gaGV4dGV0cy4KKyAgICAgICAgICAgIGlmICgoc2tp
cFN0YXRlID09IE5vbmUgJiYgY291bnQgIT0gNikgfHwgKHNraXBTdGF0ZSA9PSBTa2lwcGVkICYm
IGNvdW50ID49IDYpIHx8ICFpc0lQdjRBZGRyZXNzKGhleHRldCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvIGNvZGVV
bml0IDogaGV4dGV0LmNvZGVVbml0cygpKSB7CisgICAgICAgICAgICAvLyBJUHY2IGFsbG93cyBs
ZWFkaW5nIHplcm9lcy4KKyAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGNvZGVVbml0
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBj
b3VudCsrOworICAgIH0KKworICAgIHJldHVybiAoY291bnQgPT0gOCAmJiBza2lwU3RhdGUgPT0g
Tm9uZSkgfHwgc2tpcFN0YXRlID09IFNraXBwZWQgfHwgc2tpcFN0YXRlID09IEZpbmFsOworfQor
Citib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKK3sKKyAgICBpZiAo
aG9zdC5maW5kKCc6JykgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBpc0lQdjRBZGRyZXNz
KGhvc3QpOworCisgICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7Cit9CisjZW5kaWYKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dURi93
dGYvVVJMLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMK
K25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1VSTC5jcHAJKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XVEYvd3RmL1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5j
bHVkZSA8c3RkaW8uaD4KQEAgLTQ2LDggKzQ2LDcgQEAKIC8vIHNvIG1hbnkgYWxsb2NhdGlvbnMs
IG9yIGNoYW5nZSB0aGlzIHRvIHVzZSBTdHJpbmdCdWZmZXIgaW5zdGVhZC4KIAogCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2UgV1RGOworbmFtZXNwYWNlIFdURiB7CiAKIHR5
cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKIHR5cGVkZWYgVmVjdG9yPFVDaGFy
LCA1MTI+IFVDaGFyQnVmZmVyOwpAQCAtODA3LDcgKzgwNiw3IEBAIGJvb2wgcHJvdG9jb2xJcyhj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QKIAogaW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6cHJvdG9jb2xJc0ludGVybmFsKHN0cmluZywgcHJvdG9jb2wpOworICAgIHJldHVy
biBXVEY6OnByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsKIH0KIAogI2lmbmRl
ZiBOREVCVUcKQEAgLTExMDYsNCArMTEwNSw0IEBAIGJvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3Mo
U3RyaW5nVmlldyBob3MKIH0KICNlbmRpZgogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8v
IG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1VSTC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1VSTC5oCShyZXZpc2lvbiAyMzY3NjYpCShmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTC5oOjIzNjc2NikKKysrIFNvdXJjZS9XVEYvd3RmL1VSTC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
KyNpZiBVU0UoQ0YpCit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKKyNl
bmRpZgorCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKKyNlbmRp
ZgorCisjaWYgVVNFKEZPVU5EQVRJT04pCitPQkpDX0NMQVNTIE5TVVJMOworI2VuZGlmCisKK25h
bWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBVUkxUZXh0RW5jb2RpbmcgeworcHVibGljOgorICAgIHZpcnR1YWwgVmVjdG9y
PHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldykgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgflVSTFRleHRFbmNvZGluZygpIHsgfTsKK307CisKK3N0cnVjdCBVUkxIYXNoOwor
CitjbGFzcyBVUkwgeworcHVibGljOgorICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250
YWlucyBhIG51bGwgc3RyaW5nLgorICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9CisKKyAgICBl
eHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsgfQorCisgICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBi
YXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQorICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2Vk
IHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCisgICAg
Ly8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUg
aW50ZXJwcmV0ZWQgYXMKKyAgICAvLyBhYnNvbHV0ZS4KKyAgICAvLyBGSVhNRTogSWYgdGhlIGJh
c2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAorICAgIC8v
IFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52
YWxpZCBiYXNlIFVSTHMKKyAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVt
cHR5IGJhc2UgVVJMcy4KKyAgICBXRUJDT1JFX0VYUE9SVCBVUkwoY29uc3QgVVJMJiBiYXNlLCBj
b25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0
KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBVUkwgZmlsZVVSTFdp
dGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBzdHJpcHBlZEZv
clVzZUFzUmVmZXJyZXIoKSBjb25zdDsKKworICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rp
b25zIHNob3VsZCBiZSBoYXJtb25pemVkIHNvIHRoYXQgcGFzc2luZyBhCisgICAgLy8gYmFzZSBv
ZiBudWxsIG9yIHRoZSBlbXB0eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQor
ICAgIC8vIHN0YW5kYXJkIFN0cmluZyBjb25zdHJ1Y3Rvci4KKworICAgIC8vIE1ha2VzIGEgZGVl
cCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIK
KyAgICAvLyB0aHJlYWQuIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBh
cmUgaW1tdXRhYmxlLCB0aGVyZSdzCisgICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJl
ZmVyIGlzb2xhdGVkQ29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCisgICAgV0VCQ09S
RV9FWFBPUlQgVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0OworCisgICAgYm9vbCBpc051bGwoKSBj
b25zdDsKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKKyAgICBib29sIGlzVmFsaWQoKSBjb25z
dDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9y
dCBmb3IgdGhlIFVSTC4KKyAgICAvLyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBh
IGhvc3QgYW5kIHBvcnQuCisgICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1
cm4gaXNIaWVyYXJjaGljYWwoKTsgfQorCisgICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0
IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KKyAgICBib29sIGlzSGllcmFyY2hpY2FsKCkg
Y29uc3Q7CisKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OworCisgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaG9zdEFu
ZFBvcnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvdG9jb2xIb3N0QW5k
UG9ydCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB1c2VyKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBhc3MoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcGF0aCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXN0UGF0
aENvbXBvbmVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBxdWVyeSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0
OworCisgICAgYm9vbCBoYXNVc2VybmFtZSgpIGNvbnN0OworICAgIGJvb2wgaGFzUGFzc3dvcmQo
KSBjb25zdDsKKyAgICBib29sIGhhc1F1ZXJ5KCkgY29uc3Q7CisgICAgYm9vbCBoYXNGcmFnbWVu
dCgpIGNvbnN0OworICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0OworCisgICAgLy8gVW5saWtlIHVz
ZXIoKSBhbmQgcGFzcygpLCB0aGVzZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1
ZW5jZXMuCisgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBw
aW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgorICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVkVXNlcigpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBlbmNvZGVkUGFzcygpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1
cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCisgICAgLy8gdGVy
bWluYXRlZCBBU0NJSSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4K
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0Owor
ICAgIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBib29sIHByb3RvY29s
SXNCbG9iKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9CisgICAgYm9vbCBw
cm90b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQorICAg
IGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQmxh
bmtVUkwoKSBjb25zdDsKKyAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVy
biBtX2Nhbm5vdEJlQUJhc2VVUkw7IH0KKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNYXRj
aGluZ0RvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0
cmluZyYpOworCisgICAgdm9pZCByZW1vdmVQb3J0KCk7CisgICAgdm9pZCBzZXRQb3J0KHVuc2ln
bmVkIHNob3J0KTsKKworICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29t
OjgwMDAiLgorICAgIHZvaWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7CisKKyAgICB2
b2lkIHNldFVzZXIoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmlu
ZyYpOworCisgICAgLy8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQ
UyBVUkxzLCB0aGUgcmVzdWx0aW5nIHBhdGgKKyAgICAvLyB3aWxsIGJlICIvIi4KKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFBhdGgoY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBUaGUgcXVl
cnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBi
ZSBhZGRlZAorICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBz
dHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKKyAgICAvLyBVUkwgKHdpdGggbm90aGluZyBh
ZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOworCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOworCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOwor
CisgICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7CisgICAgdW5zaWduZWQgcGF0aEVuZCgp
IGNvbnN0OworICAgIHVuc2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0OworCisgICAg
b3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CisKKyNp
ZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgVVJMKENGVVJMUmVmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CisjZW5kaWYK
KworI2lmIFVTRShTT1VQKQorICAgIFVSTChTb3VwVVJJKik7CisgICAgR1VuaXF1ZVB0cjxTb3Vw
VVJJPiBjcmVhdGVTb3VwVVJJKCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9O
KQorICAgIFdFQkNPUkVfRVhQT1JUIFVSTChOU1VSTCopOworICAgIFdFQkNPUkVfRVhQT1JUIG9w
ZXJhdG9yIE5TVVJMKigpIGNvbnN0OworI2VuZGlmCisjaWZkZWYgX19PQkpDX18KKyAgICBvcGVy
YXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQorI2VuZGlmCisKKyNp
Zm5kZWYgTkRFQlVHCisgICAgdm9pZCBwcmludCgpIGNvbnN0OworI2VuZGlmCisKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRl
bXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYp
OworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVUkw+
IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNl
cjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBzdGF0aWMgYm9v
bCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIGNvcHlU
b0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdDsKKyAgICB1bnNpZ25lZCBo
b3N0U3RhcnQoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYpOworICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGhv
c3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKKyAgICBTdHJpbmcgbV9zdHJp
bmc7CisKKyAgICB1bnNpZ25lZCBtX2lzVmFsaWQgOiAxOworICAgIHVuc2lnbmVkIG1fcHJvdG9j
b2xJc0luSFRUUEZhbWlseSA6IDE7CisgICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDog
MTsKKworICAgIC8vIFRoaXMgaXMgb3V0IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRzIGJldHRl
ci4gVGhlIHBvcnQgaXMgYWZ0ZXIgdGhlIGhvc3QuCisgICAgdW5zaWduZWQgbV9wb3J0TGVuZ3Ro
IDogMzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGggPSAoMSA8
PCAzKSAtIDE7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVtZUxlbmd0
aCA9ICgxIDw8IDI2KSAtIDE7CisgICAgdW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsKKyAgICB1
bnNpZ25lZCBtX3VzZXJTdGFydDsKKyAgICB1bnNpZ25lZCBtX3VzZXJFbmQ7CisgICAgdW5zaWdu
ZWQgbV9wYXNzd29yZEVuZDsKKyAgICB1bnNpZ25lZCBtX2hvc3RFbmQ7CisgICAgdW5zaWduZWQg
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgdW5zaWduZWQgbV9wYXRoRW5kOworICAgIHVuc2ln
bmVkIG1fcXVlcnlFbmQ7Cit9OworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVv
ZihTdHJpbmcpICsgOCAqIHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwi
KTsKKwordGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Cit2b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3N0cmluZzsKK30KKwordGVtcGxh
dGUgPGNsYXNzIERlY29kZXI+Citib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVS
TCYgdXJsKQoreworICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsK
KyAgICBpZiAoIW9wdGlvbmFsVVJMKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdXJsID0g
V1RGTW92ZSgqb3B0aW9uYWxVUkwpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8
Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIFN0cmluZyBzdHJpbmc7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
dHJpbmcpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBVUkwoVVJM
KCksIHN0cmluZyk7Cit9CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK1dFQkNPUkVfRVhQT1JUIGJv
b2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7
CitXRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaG9zdHNBcmVFcXVhbChjb25z
dCBVUkwmLCBjb25zdCBVUkwmKTsKKworV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiBibGFua1VS
TCgpOworCisvLyBGdW5jdGlvbnMgdG8gZG8gVVJMIG9wZXJhdGlvbnMgb24gc3RyaW5ncy4KKy8v
IFRoZXNlIGFyZSBvcGVyYXRpb25zIHRoYXQgYXJlbid0IGZhc3RlciBvbiBhIHBhcnNlZCBVUkwu
CisvLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9ucyBpbiB0
aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNh
YmxlIFVSTC4KKy8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBq
YXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFVS
TC4KKworV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBjaGFyKiBwcm90b2NvbCk7CitXRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXNKYXZh
U2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKK2Jvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3Ry
aW5nVmlldyB1cmwpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5
KGNvbnN0IFN0cmluZyYgdXJsKTsKKworc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBv
cnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wg
aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9j
b2wpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxh
Y2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMu
CisKK1dFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9y
VGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKK1dFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwor
Citib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKworU3RyaW5nIG1pbWVUeXBl
RnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpOworCisvLyBGSVhNRTogVGhpcyBpcyBhIHdy
b25nIGNvbmNlcHQgdG8gZXhwb3NlLCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZm
ZXJlbnQgZXNjYXBpbmcgcGVyIHRoZSBVUkwgU3RhbmRhcmQuCitXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKKworLy8gSW5s
aW5lcy4KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYg
YikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOworfQorCitpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQoreworICAgIHJl
dHVybiBhLnN0cmluZygpID09IGI7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEgPT0gYi5zdHJpbmcoKTsK
K30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikK
K3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiLnN0cmluZygpOworfQorCitpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQoreworICAgIHJldHVy
biBhLnN0cmluZygpICE9IGI7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3Ry
aW5nJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKK30K
KworLy8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28g
d2UgY2FuIGdldCBpbmxpbmluZworLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1
Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KKworaW5saW5lIGJvb2wgVVJMOjpp
c051bGwoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5pc051bGwoKTsKK30KKworaW5s
aW5lIGJvb2wgVVJMOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuaXNF
bXB0eSgpOworfQorCitpbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2lzVmFsaWQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6aGFzUGF0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Cit9CisK
K2lubGluZSBib29sIFVSTDo6aGFzVXNlcm5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3Vz
ZXJFbmQgPiBtX3VzZXJTdGFydDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpoYXNQYXNzd29yZCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFzc3dvcmRFbmQgPiAobV91c2VyRW5kICsgMSk7Cit9
CisKK2lubGluZSBib29sIFVSTDo6aGFzUXVlcnkoKSBjb25zdAoreworICAgIHJldHVybiBtX3F1
ZXJ5RW5kID4gbV9wYXRoRW5kOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9x
dWVyeUVuZDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OworfQorCitpbmxp
bmUgdW5zaWduZWQgVVJMOjpwYXRoU3RhcnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2hvc3RF
bmQgKyBtX3BvcnRMZW5ndGg7Cit9CisKK2lubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhFbmQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3BhdGhFbmQ7Cit9CisKK2lubGluZSB1bnNpZ25lZCBVUkw6
OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFz
dFNsYXNoOworfQorCitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgY29uc3QgVVJMJik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdU
RiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+OwordGVtcGxh
dGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+OworfSAvLyBuYW1lc3BhY2UgV1RG
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV1RGL3d0Zi9VUkwuaApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9VUkwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9VUkwuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dURi93
dGYvVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDkgKzQzLDYgQEAgT0JKQ19DTEFTUyBOU1VS
TDsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBUZXh0U3RyZWFtOwotfQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFVSTFRleHRFbmNvZGluZyB7CiBwdWJsaWM6CkBAIC01NSw3ICs1
Miw3IEBAIHB1YmxpYzoKIAogc3RydWN0IFVSTEhhc2g7CiAKLWNsYXNzIFVSTCB7CitjbGFzcyBX
VEZfRVhQT1JUX1BSSVZBVEUgVVJMIHsKIHB1YmxpYzoKICAgICAvLyBHZW5lcmF0ZXMgYSBVUkwg
d2hpY2ggY29udGFpbnMgYSBudWxsIHN0cmluZy4KICAgICBVUkwoKSB7IGludmFsaWRhdGUoKTsg
fQpAQCAtNzAsMTAgKzY3LDEwIEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2Ug
VVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAogICAgIC8vIFVS
TC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxp
ZCBiYXNlIFVSTHMKICAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5
IGJhc2UgVVJMcy4KLSAgICBXRUJDT1JFX0VYUE9SVCBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25z
dCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7Cisg
ICAgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJM
VGV4dEVuY29kaW5nKiA9IG51bGxwdHIpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFVS
TCBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgVVJMIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJik7
CisgICAgc3RhdGljIFVSTCBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChjb25zdCBTdHJpbmcmKTsK
KyAgICBzdGF0aWMgVVJMIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJik7
CiAKICAgICBTdHJpbmcgc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29uc3Q7CiAKQEAgLTg0
LDcgKzgxLDcgQEAgcHVibGljOgogICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9u
bHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIKICAgICAvLyB0aHJlYWQuIFNp
bmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVy
ZSdzCiAgICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29weSgp
IG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIGlzb2xh
dGVkQ29weSgpIGNvbnN0OworICAgIFVSTCBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIGJv
b2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CkBAIC05OSwyMCAr
OTYsMjAgQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZzsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0NlbnRl
ckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGggPSAxMDI0KSBjb25zdDsKKyAgICBT
dHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEw
MjQpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBhc3Mo
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aCgpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhh
c0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcgcHJvdG9jb2woKSBj
b25zdDsKKyAgICBTdHJpbmdWaWV3IGhvc3QoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQxNl90PiBwb3J0KCkgY29uc3Q7CisgICAgU3RyaW5nIGhvc3RBbmRQb3J0KCkgY29uc3Q7Cisg
ICAgU3RyaW5nIHByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdDsKKyAgICBTdHJpbmcgdXNlcigp
IGNvbnN0OworICAgIFN0cmluZyBwYXNzKCkgY29uc3Q7CisgICAgU3RyaW5nIHBhdGgoKSBjb25z
dDsKKyAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQoKSBjb25zdDsKKyAgICBTdHJpbmcgcXVl
cnkoKSBjb25zdDsKKyAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CisgICAg
Ym9vbCBoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzVXNlcm5h
bWUoKSBjb25zdDsKICAgICBib29sIGhhc1Bhc3N3b3JkKCkgY29uc3Q7CkBAIC0xMjIsMjcgKzEx
OSwyNyBAQCBwdWJsaWM6CiAKICAgICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzKCksIHRoZXNl
IGZ1bmN0aW9ucyBkb24ndCBkZWNvZGUgZXNjYXBlIHNlcXVlbmNlcy4KICAgICAvLyBUaGlzIGlz
IG5lY2Vzc2FyeSBmb3IgYWNjdXJhdGUgcm91bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5jb2Rpbmcg
ZG9lc24ndCBlbmNvZGUgJyUnIGNoYXJhY3RlcnMuCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGVuY29kZWRVc2VyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGVuY29kZWRQ
YXNzKCkgY29uc3Q7CisgICAgU3RyaW5nIGVuY29kZWRVc2VyKCkgY29uc3Q7CisgICAgU3RyaW5n
IGVuY29kZWRQYXNzKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYmFzZUFz
U3RyaW5nKCkgY29uc3Q7CisgICAgU3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7CisgICAgU3RyaW5n
IGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1
cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCiAgICAgLy8gdGVy
bWluYXRlZCBBU0NJSSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4K
LSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0Owor
ICAgIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7CiAgICAgYm9vbCBwcm90b2Nv
bElzKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgcHJvdG9jb2xJc0Jsb2IoKSBjb25zdCB7
IHJldHVybiBwcm90b2NvbElzKCJibG9iIik7IH0KICAgICBib29sIHByb3RvY29sSXNEYXRhKCkg
Y29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9CiAgICAgYm9vbCBwcm90b2NvbElz
SW5IVFRQRmFtaWx5KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xvY2FsRmls
ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNCbGFua1VSTCgpIGNvbnN0Owor
ICAgIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKKyAgICBib29sIGlzQmxhbmtVUkwoKSBjb25z
dDsKICAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJl
QUJhc2VVUkw7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihj
b25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBib29sIGlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3Ry
aW5nJikgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldFByb3RvY29sKGNvbnN0
IFN0cmluZyYpOworICAgIGJvb2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCByZW1vdmVQb3J0KCk7CkBAIC0x
NTYsMTkgKzE1MywxOSBAQCBwdWJsaWM6CiAKICAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBw
YXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aAogICAgIC8vIHdp
bGwgYmUgIi8iLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF0aChjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHNldFBhdGgoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBUaGUgcXVlcnkg
bWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBh
ZGRlZAogICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJp
bmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKICAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRl
ciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRRdWVy
eShjb25zdCBTdHJpbmcmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RnJhZ21lbnRJ
ZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7CisgICAgdm9pZCBzZXRGcmFnbWVudElkZW50aWZpZXIoU3RyaW5n
Vmlldyk7CisgICAgdm9pZCByZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICB2
b2lkIHJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyk7CisgICAgc3RhdGlj
IGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOwogCiAgICAgdW5zaWduZWQgcGF0aFN0
YXJ0KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgcGF0aEVuZCgpIGNvbnN0OwpAQCAtMTc3LDggKzE3
NCw4IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1
cm4gc3RyaW5nKCk7IH0KIAogI2lmIFVTRShDRikKLSAgICBXRUJDT1JFX0VYUE9SVCBVUkwoQ0ZV
UkxSZWYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZV
UkwoKSBjb25zdDsKKyAgICBVUkwoQ0ZVUkxSZWYpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
Y3JlYXRlQ0ZVUkwoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgVVNFKFNPVVApCkBAIC0xODcsOCAr
MTg0LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBXRUJD
T1JFX0VYUE9SVCBVUkwoTlNVUkwqKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRvciBOU1VS
TCooKSBjb25zdDsKKyAgICBVUkwoTlNVUkwqKTsKKyAgICBvcGVyYXRvciBOU1VSTCooKSBjb25z
dDsKICNlbmRpZgogI2lmZGVmIF9fT0JKQ19fCiAgICAgb3BlcmF0b3IgTlNTdHJpbmcqKCkgY29u
c3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KQEAgLTIwNCwxNCArMjAxLDE0IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVVJMUGFyc2VyOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaW52YWxpZGF0ZSgpOworICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHN0YXRpYyBi
b29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOwogICAgIHZvaWQgY29w
eVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0OwogICAgIHVuc2lnbmVk
IGhvc3RTdGFydCgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wgZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBmcmllbmQgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wg
aG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKyAgICBmcmllbmQgYm9vbCBl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwor
ICAgIGZyaWVuZCBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBj
b25zdCBVUkwmKTsKKyAgICBmcmllbmQgYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYpOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwogCkBAIC0yNjEsMzYgKzI1OCwzNiBA
QCBzdGQ6Om9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2RlciYgCiAgICAgcmV0dXJuIFVS
TChVUkwoKSwgc3RyaW5nKTsKIH0KIAotV0VCQ09SRV9FWFBPUlQgYm9vbCBlcXVhbElnbm9yaW5n
RnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotV0VCQ09SRV9FWFBP
UlQgYm9vbCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudChjb25zdCBVUkwmLCBjb25zdCBV
UkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBob3N0c0FyZUVxdWFs
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xIb3N0QW5k
UG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIAotV0VCQ09SRV9F
WFBPUlQgY29uc3QgVVJMJiBibGFua1VSTCgpOworV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVS
TCYgYmxhbmtVUkwoKTsKIAogLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0
cmluZ3MuCiAvLyBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBw
YXJzZWQgVVJMLgogLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50IGZyb20gdGhlIFVSTCBmdW5j
dGlvbnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlk
IGFuZCBwYXJzYWJsZSBVUkwuCiAvLyBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1
c2UgdmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2
YWxpZCBieSBVUkwuCiAKLVdFQkNPUkVfRVhQT1JUIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90
b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCk7Ci1ib29sIHByb3RvY29sSXNKYXZh
U2NyaXB0KFN0cmluZ1ZpZXcgdXJsKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgcHJvdG9jb2xJc0lu
SFRUUEZhbWlseShjb25zdCBTdHJpbmcmIHVybCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
cm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVy
bCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdW
aWV3IHVybCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5
KGNvbnN0IFN0cmluZyYgdXJsKTsKIAotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBv
cnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9j
b2wpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxh
Y2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMu
CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRG
b3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29s
IGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3Rv
Y29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYpOyAv
LyBCbGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQgbmV2ZXIgYmUgdXNlZCBmb3IgV2ViIHJlc291
cmNlcy4KIAotV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlckRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xGb3JUZXN0aW5nKHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwotV0VC
Q09SRV9FWFBPUlQgdm9pZCBjbGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5n
KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xGb3JUZXN0aW5nKHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOworV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgY2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVz
dGluZygpOwogCi1ib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKIAotU3RyaW5n
IG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpOworV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKIAogLy8g
RklYTUU6IFRoaXMgaXMgYSB3cm9uZyBjb25jZXB0IHRvIGV4cG9zZSwgZGlmZmVyZW50IHBhcnRz
IG9mIGEgVVJMIG5lZWQgZGlmZmVyZW50IGVzY2FwaW5nIHBlciB0aGUgVVJMIFN0YW5kYXJkLgot
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3Qg
U3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7CiAKIC8vIElubGluZXMuCiAKQEAgLTM4NywxMSArMzg0
LDkgQEAgaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aEFmdGVyTGFzdFNsYXNoKAogICAgIHJldHVy
biBtX3BhdGhBZnRlckxhc3RTbGFzaDsKIH0KIAotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklWQVRFIFdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBVUkwmKTsKIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJM
PjsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKIAotbmFtZXNwYWNlIFdURiB7
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+OwotdGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+OwogfSAvLyBuYW1lc3BhY2UgV1RGCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvVVJMSGFzaC5oCShyZXZpc2lvbiAyMzY3NjYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTEhhc2guaDoyMzY3NjYpCisrKyBTb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFVSTEhhc2hfaAorI2RlZmluZSBVUkxIYXNoX2gKKwor
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
c3RydWN0IFVSTEhhc2ggeworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwm
IGtleSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCkt
Pmhhc2goKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVS
TCYgYSwgY29uc3QgVVJMJiBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5n
SGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNl
OworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisK
Ky8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nCit0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+IHsKKyAgICB1c2luZyBIYXNoID0gV2ViQ29y
ZTo6VVJMSGFzaDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6
VVJMPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+IHsgfTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVUkxIYXNoX2gKClByb3BlcnR5IGNoYW5nZXMgb246
IFNvdXJjZS9XVEYvd3RmL1VSTEhhc2guaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvVVJMSGFzaC5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV1RGL3d0Zi9VUkxIYXNo
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDM2ICsyNiwzMiBAQAogI2lmbmRlZiBVUkxIYXNoX2gK
ICNkZWZpbmUgVVJMSGFzaF9oCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBzdHJ1Y3QgVVJMSGFz
aCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFVSTCYga2V5KQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5LnN0cmluZygpLmltcGwoKS0+aGFzaCgpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBV
UkwmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoOjplcXVhbChh
LnN0cmluZygpLCBiLnN0cmluZygpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25z
dCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgfTsKK25h
bWVzcGFjZSBXVEYgewogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCitzdHJ1Y3QgVVJMSGFzaCB7
CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVVJMJiBrZXkpCisgICAgeworICAgICAg
ICByZXR1cm4ga2V5LnN0cmluZygpLmltcGwoKS0+aGFzaCgpOworICAgIH0KKworICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFN0cmluZ0hhc2g6OmVxdWFsKGEuc3RyaW5nKCksIGIuc3RyaW5nKCkpOworICAgIH0K
IAotbmFtZXNwYWNlIFdURiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CiAKIC8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQg
aGFzaCBmb3IgU3RyaW5nCi10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpV
Ukw+IHsKLSAgICB1c2luZyBIYXNoID0gV2ViQ29yZTo6VVJMSGFzaDsKK3RlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFVSTD4geworICAgIHVzaW5nIEhhc2ggPSBVUkxIYXNoOwogfTsKIAot
dGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+IDogU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPFdlYkNvcmU6OlVSTD4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0
czxVUkw+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFVSTD4geyB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIApJbmRleDogU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzY3NjYpCShmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHA6MjM2NzY2KQorKysgU291cmNlL1dU
Ri93dGYvVVJMUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5MjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkxQYXJzZXIu
aCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx1
bmljb2RlL3VpZG5hLmg+CisjaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisjZGVmaW5lIFVSTF9QQVJTRVJfREVCVUdHSU5HIDAKKworI2lmIFVSTF9Q
QVJTRVJfREVCVUdHSU5HCisjZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4uLikgTE9HKFVSTFBhcnNl
ciwgX19WQV9BUkdTX18pCisjZWxzZQorI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pCisjZW5k
aWYKKyAgICAKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitjbGFzcyBDb2RlUG9p
bnRJdGVyYXRvciB7CitwdWJsaWM6CisgICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRv
cigpIHsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ2hhcmFj
dGVyVHlwZSogYmVnaW4sIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCkKKyAgICAgICAgOiBtX2Jl
Z2luKGJlZ2luKQorICAgICAgICAsIG1fZW5kKGVuZCkKKyAgICB7CisgICAgfQorICAgIAorICAg
IEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ29kZVBvaW50SXRlcmF0b3Im
IGJlZ2luLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgZW5kKQorICAgICAgICA6IENvZGVQb2lu
dEl0ZXJhdG9yKGJlZ2luLm1fYmVnaW4sIGVuZC5tX2JlZ2luKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGVuZC5tX2JlZ2luID49IGJlZ2luLm1fYmVnaW4pOworICAgIH0KKyAgICAKKyAgICBBTFdB
WVNfSU5MSU5FIFVDaGFyMzIgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgQUxXQVlTX0lOTElORSBD
b2RlUG9pbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOworCisgICAgQUxXQVlTX0lOTElORSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9iZWdpbgorICAgICAgICAgICAgJiYg
bV9lbmQgPT0gb3RoZXIubV9lbmQ7CisgICAgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJh
dG9yJiBvcGVyYXRvcj0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKQorICAgIHsKKyAg
ICAgICAgbV9iZWdpbiA9IG90aGVyLm1fYmVnaW47CisgICAgICAgIG1fZW5kID0gb3RoZXIubV9l
bmQ7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgYXRFbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYmVnaW4gPD0gbV9lbmQp
OworICAgICAgICByZXR1cm4gbV9iZWdpbiA+PSBtX2VuZDsKKyAgICB9CisgICAgCisgICAgQUxX
QVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2luY2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogcmVm
ZXJlbmNlKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYmVnaW4gPj0gcmVmZXJlbmNl
KTsKKyAgICAgICAgcmV0dXJuIG1fYmVnaW4gLSByZWZlcmVuY2U7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2luY2UoY29uc3QgQ29kZVBvaW50SXRlcmF0b3Im
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvZGVVbml0c1NpbmNlKG90aGVy
Lm1fYmVnaW4pOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgY29uc3QgQ2hhcmFjdGVyVHlw
ZSogbV9iZWdpbiB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2VuZCB7
IG51bGxwdHIgfTsKK307CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2Rl
UG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFh
dEVuZCgpKTsKKyAgICByZXR1cm4gKm1fYmVnaW47Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19J
TkxJTkUgYXV0byBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKysoKSAtPiBDb2Rl
UG9pbnRJdGVyYXRvciYKK3sKKyAgICBtX2JlZ2luKys7CisgICAgcmV0dXJuICp0aGlzOworfQor
Cit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIFVDaGFyMzIgQ29kZVBvaW50SXRlcmF0b3I8VUNo
YXI+OjpvcGVyYXRvciooKSBjb25zdAoreworICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgVUNo
YXIzMiBjOworICAgIFUxNl9HRVQobV9iZWdpbiwgMCwgMCwgbV9lbmQgLSBtX2JlZ2luLCBjKTsK
KyAgICByZXR1cm4gYzsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBhdXRvIENvZGVQ
b2ludEl0ZXJhdG9yPFVDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgor
eworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIHNpemVfdCBsZW5ndGggPSBtX2VuZCAtIG1fYmVn
aW47CisgICAgVTE2X0ZXRF8xKG1fYmVnaW4sIGksIGxlbmd0aCk7CisgICAgbV9iZWdpbiArPSBp
OworICAgIHJldHVybiAqdGhpczsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQg
YXBwZW5kQ29kZVBvaW50KFZlY3RvcjxVQ2hhcj4mIGRlc3RpbmF0aW9uLCBVQ2hhcjMyIGNvZGVQ
b2ludCkKK3sKKyAgICBpZiAoVV9JU19CTVAoY29kZVBvaW50KSkgeworICAgICAgICBkZXN0aW5h
dGlvbi5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNvZGVQb2ludCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGRlc3RpbmF0aW9uLnJlc2VydmVDYXBhY2l0eShkZXN0aW5hdGlvbi5z
aXplKCkgKyAyKTsKKyAgICBkZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X0xFQUQoY29k
ZVBvaW50KSk7CisgICAgZGVzdGluYXRpb24udW5jaGVja2VkQXBwZW5kKFUxNl9UUkFJTChjb2Rl
UG9pbnQpKTsKK30KKworZW51bSBVUkxDaGFyYWN0ZXJDbGFzcyB7CisgICAgVXNlckluZm8gPSAw
eDEsCisgICAgRGVmYXVsdCA9IDB4MiwKKyAgICBGb3JiaWRkZW5Ib3N0ID0gMHg0LAorICAgIFF1
ZXJ5UGVyY2VudCA9IDB4OCwKKyAgICBTbGFzaFF1ZXN0aW9uT3JIYXNoID0gMHgxMCwKKyAgICBW
YWxpZFNjaGVtZSA9IDB4MjAsCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBjaGFyYWN0ZXJD
bGFzc1RhYmxlWzI1Nl0gPSB7CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHgwCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDEKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MgorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgzCisgICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDQKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFF1ZXJ5UGVyY2VudCwgLy8gMHg2CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDcKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
OAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3Qs
IC8vIDB4OQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRl
bkhvc3QsIC8vIDB4QQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8g
MHhCCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEMKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweEQK
KyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4RQorICAgIFVzZXJJ
bmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhGCisgICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEwCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweDExCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDEyCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEz
CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE0CisgICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE1CisgICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE2CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDE3CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDE4CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAw
eDE5CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFBCisgICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFCCisgICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFDCisgICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAweDFECisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDFFCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDFGCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVu
SG9zdCwgLy8gJyAnCisgICAgMCwgLy8gJyEnCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAnIicKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQg
fCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJyMnCisgICAgMCwgLy8g
JyQnCisgICAgRm9yYmlkZGVuSG9zdCwgLy8gJyUnCisgICAgMCwgLy8gJyYnCisgICAgMCwgLy8g
J1wnJworICAgIDAsIC8vICcoJworICAgIDAsIC8vICcpJworICAgIDAsIC8vICcqJworICAgIFZh
bGlkU2NoZW1lLCAvLyAnKycKKyAgICAwLCAvLyAnLCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJy0n
CisgICAgVmFsaWRTY2hlbWUsIC8vICcuJworICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9y
SGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICcvJworICAgIFZhbGlkU2NoZW1lLCAvLyAnMCcKKyAg
ICBWYWxpZFNjaGVtZSwgLy8gJzEnCisgICAgVmFsaWRTY2hlbWUsIC8vICcyJworICAgIFZhbGlk
U2NoZW1lLCAvLyAnMycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzQnCisgICAgVmFsaWRTY2hlbWUs
IC8vICc1JworICAgIFZhbGlkU2NoZW1lLCAvLyAnNicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzcn
CisgICAgVmFsaWRTY2hlbWUsIC8vICc4JworICAgIFZhbGlkU2NoZW1lLCAvLyAnOScKKyAgICBV
c2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICc6JworICAgIFVzZXJJbmZvLCAvLyAnOycKKyAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAn
PCcKKyAgICBVc2VySW5mbywgLy8gJz0nCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJz4nCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
U2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICc/JworICAgIFVzZXJJbmZv
IHwgRm9yYmlkZGVuSG9zdCwgLy8gJ0AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdBJworICAgIFZh
bGlkU2NoZW1lLCAvLyAnQicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0MnCisgICAgVmFsaWRTY2hl
bWUsIC8vICdEJworICAgIFZhbGlkU2NoZW1lLCAvLyAnRScKKyAgICBWYWxpZFNjaGVtZSwgLy8g
J0YnCisgICAgVmFsaWRTY2hlbWUsIC8vICdHJworICAgIFZhbGlkU2NoZW1lLCAvLyAnSCcKKyAg
ICBWYWxpZFNjaGVtZSwgLy8gJ0knCisgICAgVmFsaWRTY2hlbWUsIC8vICdKJworICAgIFZhbGlk
U2NoZW1lLCAvLyAnSycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0wnCisgICAgVmFsaWRTY2hlbWUs
IC8vICdNJworICAgIFZhbGlkU2NoZW1lLCAvLyAnTicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ08n
CisgICAgVmFsaWRTY2hlbWUsIC8vICdQJworICAgIFZhbGlkU2NoZW1lLCAvLyAnUScKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJ1InCisgICAgVmFsaWRTY2hlbWUsIC8vICdTJworICAgIFZhbGlkU2No
ZW1lLCAvLyAnVCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1UnCisgICAgVmFsaWRTY2hlbWUsIC8v
ICdWJworICAgIFZhbGlkU2NoZW1lLCAvLyAnVycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1gnCisg
ICAgVmFsaWRTY2hlbWUsIC8vICdZJworICAgIFZhbGlkU2NoZW1lLCAvLyAnWicKKyAgICBVc2Vy
SW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICdbJworICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlv
bk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICdcXCcKKyAgICBVc2VySW5mbyB8IEZvcmJpZGRl
bkhvc3QsIC8vICddJworICAgIFVzZXJJbmZvLCAvLyAnXicKKyAgICAwLCAvLyAnXycKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQsIC8vICdgJworICAgIFZhbGlkU2NoZW1lLCAvLyAnYScKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJ2InCisgICAgVmFsaWRTY2hlbWUsIC8vICdjJworICAgIFZhbGlkU2No
ZW1lLCAvLyAnZCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2UnCisgICAgVmFsaWRTY2hlbWUsIC8v
ICdmJworICAgIFZhbGlkU2NoZW1lLCAvLyAnZycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2gnCisg
ICAgVmFsaWRTY2hlbWUsIC8vICdpJworICAgIFZhbGlkU2NoZW1lLCAvLyAnaicKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJ2snCisgICAgVmFsaWRTY2hlbWUsIC8vICdsJworICAgIFZhbGlkU2NoZW1l
LCAvLyAnbScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ24nCisgICAgVmFsaWRTY2hlbWUsIC8vICdv
JworICAgIFZhbGlkU2NoZW1lLCAvLyAncCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3EnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdyJworICAgIFZhbGlkU2NoZW1lLCAvLyAncycKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ3QnCisgICAgVmFsaWRTY2hlbWUsIC8vICd1JworICAgIFZhbGlkU2NoZW1lLCAv
LyAndicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3cnCisgICAgVmFsaWRTY2hlbWUsIC8vICd4Jwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAneScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3onCisgICAgVXNl
ckluZm8gfCBEZWZhdWx0LCAvLyAneycKKyAgICBVc2VySW5mbywgLy8gJ3wnCisgICAgVXNlcklu
Zm8gfCBEZWZhdWx0LCAvLyAnfScKKyAgICAwLCAvLyAnficKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4N0YKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
ODEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODMK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODUKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4ODYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODcKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4ODgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODkKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OEEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEIKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OEMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEQKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OEUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEYKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OTAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTEKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OTIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OTQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTYK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTgKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OTkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUEKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OUIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUMKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OUQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUUKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OUYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTAKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QTEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTIKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QTMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTQKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QTUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QTcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTkK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUIKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QUMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUQKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QUUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUYKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QjAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjEKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QjIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjMKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QjQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjUKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QjYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjcKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QjgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QkEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkMK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkUKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QkYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzAKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QzEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzIKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QzMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzQKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QzUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzYKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QzcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzgKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QzkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0EKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4Q0IKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0MKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
Q0QKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0UKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0YK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDEKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RDIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDMKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RDQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDUKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RDYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDcKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RDgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDkKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4REEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REIKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4REMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REQKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4REUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RTAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTIK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTQKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RTUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTYKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RTcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTgKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RTkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUEKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RUIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUMKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RUQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUUKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RUYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjAKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RjEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RjMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjUK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjcKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RjgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjkKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RkEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkIKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RkMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkQKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RkUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkYKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENv
bnRyb2woQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweDFG
OyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGlzQzBDb250cm9sT3JTcGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gY2hhcmFjdGVyIDw9IDB4MjA7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNUYWJPck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweEQgJiYgY2hhcmFjdGVyID49IDB4OSAm
JiBjaGFyYWN0ZXIgIT0gMHhCICYmIGNoYXJhY3RlciAhPSAweEM7IH0KK3RlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblNpbXBsZUVu
Y29kZVNldChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3
RSB8fCBpc0MwQ29udHJvbChjaGFyYWN0ZXIpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5EZWZhdWx0RW5jb2RlU2V0KENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJh
Y3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIERlZmF1bHQ7IH0KK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5j
b2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdF
IHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFVzZXJJbmZvOyB9Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzUGVy
Y2VudE9yTm9uQVNDSUkoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuICFpc0FTQ0lJ
KGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09ICclJzsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1NsYXNoUXVlc3Rpb25Pckhh
c2goQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXFwnICYm
IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFNsYXNoUXVlc3Rpb25Pckhhc2g7IH0K
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJv
b2wgaXNWYWxpZFNjaGVtZUNoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gY2hhcmFjdGVyIDw9ICd6JyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBW
YWxpZFNjaGVtZTsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXScgJiYgY2hhcmFjdGVyQ2xhc3NUYWJs
ZVtjaGFyYWN0ZXJdICYgRm9yYmlkZGVuSG9zdDsgfQorQUxXQVlTX0lOTElORSBzdGF0aWMgYm9v
bCBzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKHVpbnQ4X3QgYnl0ZSwgY29uc3QgYm9vbCYg
dXJsSXNTcGVjaWFsKQoreworICAgIGlmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2J5dGVdICYgUXVl
cnlQZXJjZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoYnl0ZSA9PSAnXCcnICYm
IHVybElzU3BlY2lhbCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KFVDaGFyIGMpCit7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OmlzSW5Vc2VySW5mb0VuY29kZVNldChjKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgVVJMUGFyc2VyOjpSZXBvcnRTeW50YXhWaW9sYXRp
b24gcmVwb3J0U3ludGF4VmlvbGF0aW9uPgorQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6
YWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xh
dGlvblBvc2l0aW9uKQoreworICAgICsraXRlcmF0b3I7CisgICAgd2hpbGUgKFVOTElLRUxZKCFp
dGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7CisgICAgICAg
IGlmIChyZXBvcnRTeW50YXhWaW9sYXRpb24gPT0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXMp
CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Q
b3NpdGlvbik7CisgICAgICAgICsraXRlcmF0b3I7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OnRha2VzVHdvQWR2YW5jZXNVbnRp
bEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBp
ZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8
Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAg
IGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5j
ZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Cisg
ICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFyc2VyOjppc1dpbmRvd3NEcml2ZUxl
dHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBp
ZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCAhaXNBU0NJSUFscGhhKCppdGVyYXRvcikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZp
b2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAoVU5MSUtFTFkoKml0ZXJhdG9yID09ICd8JykpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSB2b2lkIFVS
TFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyIGNvZGVQb2ludCkKK3sKKyAgICBB
U1NFUlQoaXNBU0NJSShjb2RlUG9pbnQpKTsKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50
YXhWaW9sYXRpb24pKQorICAgICAgICBtX2FzY2lpQnVmZmVyLmFwcGVuZChjb2RlUG9pbnQpOwor
fQorCitBTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKGNv
bnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKFVOTElLRUxZ
KG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQo
Y2hhcmFjdGVycywgbGVuZ3RoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KK3ZvaWQgVVJMUGFyc2VyOjphcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIEFTU0VSVChpc1dpbmRvd3NE
cml2ZUxldHRlcihpdGVyYXRvcikpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoKml0ZXJhdG9y
KTsKKyAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKKyAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkp
OworICAgIEFTU0VSVCgqaXRlcmF0b3IgPT0gJzonIHx8ICppdGVyYXRvciA9PSAnfCcpOworICAg
IGlmICgqaXRlcmF0b3IgPT0gJ3wnKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3Ip
OworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICBhZHZhbmNlKGl0ZXJhdG9yKTsK
K30KKworYm9vbCBVUkxQYXJzZXI6OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVS
TCYgYmFzZSkKK3sKKyAgICBpZiAoYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCA8IGJhc2Uu
bV9zdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBpZiAoYmFzZS5tX3N0cmluZy5pczhCaXQoKSkg
eworICAgICAgICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0
ZXJzOCgpOworICAgICAgICAgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGMoYmVnaW4gKyBi
YXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3Ry
aW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkg
eworICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczE2
KCk7CisgICAgICAgICAgICBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4gYyhiZWdpbiArIGJhc2Uu
bV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcu
bGVuZ3RoKCkpOworICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wg
VVJMUGFyc2VyOjpzaG91bGRDb3B5RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiBpdGVyYXRvcikKK3sKKyAgICBpZiAoIWlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9y
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKKyAgICBpZiAoaXRlcmF0
b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgYWR2YW5jZShpdGVyYXRvcik7
CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiAhaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCppdGVyYXRvcik7Cit9CisKK3N0YXRpYyB2b2lk
IHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSwgVmVjdG9yPExDaGFyPiYgYnVmZmVyKQor
eworICAgIGJ1ZmZlci5hcHBlbmQoJyUnKTsKKyAgICBidWZmZXIuYXBwZW5kKHVwcGVyTmliYmxl
VG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKKyAgICBidWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9B
U0NJSUhleERpZ2l0KGJ5dGUpKTsKK30KKwordm9pZCBVUkxQYXJzZXI6OnBlcmNlbnRFbmNvZGVC
eXRlKHVpbnQ4X3QgYnl0ZSkKK3sKKyAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24p
OworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyUnKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKK30KKworY29uc3QgY2hhciBy
ZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZFsxMF0gPSAiJUVGJUJGJUJEIjsK
K2NvbnN0IHNpemVfdCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0
aCA9IHNpemVvZihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCkgLSAxOwor
Cit0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+CitBTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UGVyY2VudEVuY29kZShj
b25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7CisgICAg
QVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKKyAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVy
YXRvcjsKKyAgICBpZiAoTElLRUxZKGlzQVNDSUkoY29kZVBvaW50KSkpIHsKKyAgICAgICAgaWYg
KFVOTElLRUxZKGlzSW5Db2RlU2V0KGNvZGVQb2ludCkpKSB7CisgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBv
aW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNv
ZGVQb2ludCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShpc0luQ29kZVNldChjb2RlUG9pbnQpLCAiaXNJbkNvZGVTZXQgc2hvdWxkIGFsd2F5cyByZXR1
cm4gdHJ1ZSBmb3Igbm9uLUFTQ0lJIGNoYXJhY3RlcnMiKTsKKyAgICBzeW50YXhWaW9sYXRpb24o
aXRlcmF0b3IpOworICAgIAorICAgIGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkg
eworICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBl
cmNlbnRFbmNvZGVkLCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0
aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgdWludDhfdCBidWZmZXJbVThf
TUFYX0xFTkdUSF07CisgICAgaW50MzJfdCBvZmZzZXQgPSAwOworICAgIFU4X0FQUEVORF9VTlNB
RkUoYnVmZmVyLCBvZmZzZXQsIGNvZGVQb2ludCk7CisgICAgZm9yIChpbnQzMl90IGkgPSAwOyBp
IDwgb2Zmc2V0OyArK2kpCisgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ1ZmZlcltpXSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIHZvaWQg
VVJMUGFyc2VyOjp1dGY4UXVlcnlFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Cisg
ICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRlcmF0b3I7CisgICAgaWYgKExJS0VMWShpc0FTQ0lJ
KGNvZGVQb2ludCkpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShzaG91bGRQZXJjZW50RW5jb2Rl
UXVlcnlCeXRlKGNvZGVQb2ludCwgbV91cmxJc1NwZWNpYWwpKSkgeworICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNv
ZGVQb2ludCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihjb2RlUG9pbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHN5bnRheFZp
b2xhdGlvbihpdGVyYXRvcik7CisgICAgCisgICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUihjb2Rl
UG9pbnQpKSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0
ZXJVVEY4UGVyY2VudEVuY29kZWQsIHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNv
ZGVkTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ4X3QgYnVmZmVy
W1U4X01BWF9MRU5HVEhdOworICAgIGludDMyX3Qgb2Zmc2V0ID0gMDsKKyAgICBVOF9BUFBFTkRf
VU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCBjb2RlUG9pbnQpOworICAgIGZvciAoaW50MzJfdCBpID0g
MDsgaSA8IG9mZnNldDsgKytpKSB7CisgICAgICAgIGF1dG8gYnl0ZSA9IGJ1ZmZlcltpXTsKKyAg
ICAgICAgaWYgKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNp
YWwpKQorICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnl0ZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYnl0ZSk7CisgICAgfQorfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVU
RjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGlu
ZyYgZW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQor
eworICAgIGF1dG8gZW5jb2RlZCA9IGVuY29kaW5nLmVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5n
Vmlldyhzb3VyY2UuZGF0YSgpLCBzb3VyY2Uuc2l6ZSgpKSk7CisgICAgYXV0byogZGF0YSA9IGVu
Y29kZWQuZGF0YSgpOworICAgIHNpemVfdCBsZW5ndGggPSBlbmNvZGVkLnNpemUoKTsKKyAgICAK
KyAgICBpZiAoIWxlbmd0aCA9PSAhaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNp
emVfdCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIEFTU0VS
VCghaXRlcmF0b3IuYXRFbmQoKSk7CisgICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGRhdGFbaV07Cisg
ICAgICAgIGlmIChVTkxJS0VMWShieXRlICE9ICppdGVyYXRvcikpIHsKKyAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBt
X3VybElzU3BlY2lhbCkpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3Ip
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihieXRlKTsKKyAgICAgICAgKytpdGVyYXRvcjsKKyAgICB9CisgICAgd2hpbGUgKCFpdGVy
YXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpCisgICAgICAgICsraXRl
cmF0b3I7CisgICAgQVNTRVJUKChpID09IGxlbmd0aCkgPT0gaXRlcmF0b3IuYXRFbmQoKSk7Cisg
ICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBBU1NFUlQobV9kaWRTZWVTeW50
YXhWaW9sYXRpb24pOworICAgICAgICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOworICAgICAgICBp
ZiAoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCisg
ICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShieXRlKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKKyAgICB9Cit9CisKK3N0ZDo6b3B0aW9u
YWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3
IHNjaGVtZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgZnRwUG9ydCA9IDIxOworICAg
IHN0YXRpYyBjb25zdCB1aW50MTZfdCBnb3BoZXJQb3J0ID0gNzA7CisgICAgc3RhdGljIGNvbnN0
IHVpbnQxNl90IGh0dHBQb3J0ID0gODA7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBz
UG9ydCA9IDQ0MzsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qgd3NQb3J0ID0gODA7CisgICAg
c3RhdGljIGNvbnN0IHVpbnQxNl90IHdzc1BvcnQgPSA0NDM7CisgICAgCisgICAgYXV0byBsZW5n
dGggPSBzY2hlbWUubGVuZ3RoKCk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKKyAgICBjYXNlICd3JzoKKyAg
ICAgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgaWYg
KHNjaGVtZVsxXSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0dXJuIHdzUG9ydDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAg
IGlmIChzY2hlbWVbMV0gPT0gJ3MnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdz
JykKKyAgICAgICAgICAgICAgICByZXR1cm4gd3NzUG9ydDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICBjYXNlICdoJzoKKyAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAg
ICAgICAgY2FzZSA0OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKKyAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNd
ID09ICdwJykKKyAgICAgICAgICAgICAgICByZXR1cm4gaHR0cFBvcnQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICBpZiAoc2No
ZW1lWzFdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKKyAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzRdID09ICdzJykKKyAgICAgICAgICAgICAgICByZXR1cm4gaHR0cHNQb3J0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICBjYXNlICdnJzoKKyAgICAgICAgaWYg
KGxlbmd0aCA9PSA2CisgICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0gJ28nCisgICAgICAgICAg
ICAmJiBzY2hlbWVbMl0gPT0gJ3AnCisgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCisg
ICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ2UnCisgICAgICAgICAgICAmJiBzY2hlbWVbNV0g
PT0gJ3InKQorICAgICAgICAgICAgcmV0dXJuIGdvcGhlclBvcnQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgY2FzZSAnZic6CisgICAgICAgIGlmIChsZW5ndGggPT0gMworICAg
ICAgICAgICAgJiYgc2NoZW1lWzFdID09ICd0JworICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICdwJykKKyAgICAgICAgICAgIHJldHVybiBmdHBQb3J0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
fQorfQorCitlbnVtIGNsYXNzIFNjaGVtZSB7CisgICAgV1MsCisgICAgV1NTLAorICAgIEZpbGUs
CisgICAgRlRQLAorICAgIEdvcGhlciwKKyAgICBIVFRQLAorICAgIEhUVFBTLAorICAgIE5vblNw
ZWNpYWwKK307CisKK0FMV0FZU19JTkxJTkUgc3RhdGljIFNjaGVtZSBzY2hlbWUoU3RyaW5nVmll
dyBzY2hlbWUpCit7CisgICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7CisgICAgaWYg
KCFsZW5ndGgpCisgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgc3dpdGNo
IChzY2hlbWVbMF0pIHsKKyAgICBjYXNlICdmJzoKKyAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsK
KyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKKyAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnKQorICAgICAgICAgICAgICAgIHJldHVybiBT
Y2hlbWU6OkZUUDsKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAg
ICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ2knCisgICAgICAgICAg
ICAgICAgJiYgc2NoZW1lWzJdID09ICdsJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9
PSAnZScpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6RmlsZTsKKyAgICAgICAgICAg
IHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICB9CisgICAgY2FzZSAnZyc6Cisg
ICAgICAgIGlmIChsZW5ndGggPT0gNgorICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJwor
ICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJworICAgICAgICAgICAgJiYgc2NoZW1lWzNd
ID09ICdoJworICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdlJworICAgICAgICAgICAgJiYg
c2NoZW1lWzVdID09ICdyJykKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkdvcGhlcjsKKyAg
ICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICBjYXNlICdoJzoKKyAgICAgICAg
c3dpdGNoIChsZW5ndGgpIHsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgaWYgKHNjaGVt
ZVsxXSA9PSAndCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCisgICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKKyAgICAgICAgICAgICAgICByZXR1cm4gU2No
ZW1lOjpIVFRQOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAg
ICAgY2FzZSA1OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKKyAgICAgICAgICAg
ICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09
ICdwJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAncycpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6SFRUUFM7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25T
cGVjaWFsOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9u
U3BlY2lhbDsKKyAgICAgICAgfQorICAgIGNhc2UgJ3cnOgorICAgICAgICBzd2l0Y2ggKGxlbmd0
aCkgeworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykK
KyAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpXUzsKKyAgICAgICAgICAgIHJldHVybiBT
Y2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGlmIChzY2hl
bWVbMV0gPT0gJ3MnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKKyAgICAg
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpXU1M7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1l
OjpOb25TcGVjaWFsOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFNjaGVt
ZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBT
Y2hlbWU6Ok5vblNwZWNpYWw7CisgICAgfQorfQorCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJM
UGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sK
KyAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIGlmICghaXNBU0NJSUFscGhhKHNjaGVtZVswXSkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsg
KytpKSB7CisgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKHNjaGVtZVtpXSkgfHwgc2No
ZW1lW2ldID09ICcrJyB8fCBzY2hlbWVbaV0gPT0gJy0nIHx8IHNjaGVtZVtpXSA9PSAnLicpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9
CisKKyAgICByZXR1cm4gc2NoZW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Cit9CisKK2Jv
b2wgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWVBcmcpCit7
CisgICAgcmV0dXJuIHNjaGVtZShzY2hlbWVBcmcpICE9IFNjaGVtZTo6Tm9uU3BlY2lhbDsKK30K
KworZW51bSBjbGFzcyBVUkxQYXJzZXI6OlVSTFBhcnQgeworICAgIFNjaGVtZUVuZCwKKyAgICBV
c2VyU3RhcnQsCisgICAgVXNlckVuZCwKKyAgICBQYXNzd29yZEVuZCwKKyAgICBIb3N0RW5kLAor
ICAgIFBvcnRFbmQsCisgICAgUGF0aEFmdGVyTGFzdFNsYXNoLAorICAgIFBhdGhFbmQsCisgICAg
UXVlcnlFbmQsCit9OworCitzaXplX3QgVVJMUGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQoY29u
c3QgVVJMJiB1cmwsIFVSTFBhcnQgcGFydCkKK3sKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAgICBj
YXNlIFVSTFBhcnQ6OlF1ZXJ5RW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fcXVlcnlFbmQ7Cisg
ICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEVuZDsK
KyAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaDoKKyAgICAgICAgcmV0dXJuIHVy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6CisgICAg
ICAgIHJldHVybiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aDsKKyAgICBjYXNlIFVS
TFBhcnQ6Okhvc3RFbmQ6CisgICAgICAgIHJldHVybiB1cmwubV9ob3N0RW5kOworICAgIGNhc2Ug
VVJMUGFydDo6UGFzc3dvcmRFbmQ6CisgICAgICAgIHJldHVybiB1cmwubV9wYXNzd29yZEVuZDsK
KyAgICBjYXNlIFVSTFBhcnQ6OlVzZXJFbmQ6CisgICAgICAgIHJldHVybiB1cmwubV91c2VyRW5k
OworICAgIGNhc2UgVVJMUGFydDo6VXNlclN0YXJ0OgorICAgICAgICByZXR1cm4gdXJsLm1fdXNl
clN0YXJ0OworICAgIGNhc2UgVVJMUGFydDo6U2NoZW1lRW5kOgorICAgICAgICByZXR1cm4gdXJs
Lm1fc2NoZW1lRW5kOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBVUkxQYXJzZXI6OmNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0
aCA8PSBzdHJpbmcubGVuZ3RoKCkpOworICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOworICAgIGlmIChz
dHJpbmcuaXM4Qml0KCkpCisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIGxlbmd0aCk7CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBVQ2hhciBjID0gY2hhcmFjdGVyc1tp
XTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzQVNDSUko
YykpOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2Vy
Ojpjb3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQgcGFydCwgY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBVUkxUZXh0
RW5jb2RpbmcqJiBub25VVEY4UXVlcnlFbmNvZGluZykKK3sKKyAgICBzeW50YXhWaW9sYXRpb24o
aXRlcmF0b3IpOworCisgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOworICAgIGNvcHlBU0NJSVN0
cmluZ1VudGlsKGJhc2UubV9zdHJpbmcsIHVybExlbmd0aFVudGlsUGFydChiYXNlLCBwYXJ0KSk7
CisgICAgc3dpdGNoIChwYXJ0KSB7CisgICAgY2FzZSBVUkxQYXJ0OjpRdWVyeUVuZDoKKyAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IGJhc2UubV9xdWVyeUVuZDsKKyAgICAgICAgRkFMTFRIUk9V
R0g7CisgICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgorICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBiYXNlLm1fcGF0aEVuZDsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBVUkxQYXJ0
OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gYmFzZS5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAg
Y2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgorICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBiYXNl
Lm1fcG9ydExlbmd0aDsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBVUkxQYXJ0OjpI
b3N0RW5kOgorICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKKyAgICAg
ICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKKyAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IGJhc2UubV9wYXNzd29yZEVuZDsKKyAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgY2FzZSBVUkxQYXJ0OjpVc2VyRW5kOgorICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBiYXNlLm1fdXNlckVuZDsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBVUkxQ
YXJ0OjpVc2VyU3RhcnQ6CisgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gYmFzZS5tX3VzZXJT
dGFydDsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBVUkxQYXJ0OjpTY2hlbWVFbmQ6
CisgICAgICAgIG1fdXJsLm1faXNWYWxpZCA9IGJhc2UubV9pc1ZhbGlkOworICAgICAgICBtX3Vy
bC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBiYXNlLm1fcHJvdG9jb2xJc0luSFRUUEZhbWls
eTsKKyAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBiYXNlLm1fc2NoZW1lRW5kOworICAgIH0K
KyAgICBzd2l0Y2ggKHNjaGVtZShTdHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpLCBtX3Vy
bC5tX3NjaGVtZUVuZCkpKSB7CisgICAgY2FzZSBTY2hlbWU6OldTOgorICAgIGNhc2UgU2NoZW1l
OjpXU1M6CisgICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKKyAgICAgICAg
bV91cmxJc1NwZWNpYWwgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTY2hlbWU6
OkZpbGU6CisgICAgICAgIG1fdXJsSXNGaWxlID0gdHJ1ZTsKKyAgICAgICAgRkFMTFRIUk9VR0g7
CisgICAgY2FzZSBTY2hlbWU6OkZUUDoKKyAgICBjYXNlIFNjaGVtZTo6R29waGVyOgorICAgIGNh
c2UgU2NoZW1lOjpIVFRQOgorICAgIGNhc2UgU2NoZW1lOjpIVFRQUzoKKyAgICAgICAgbV91cmxJ
c1NwZWNpYWwgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTY2hlbWU6Ok5vblNw
ZWNpYWw6CisgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gZmFsc2U7CisgICAgICAgIG5vblVURjhR
dWVyeUVuY29kaW5nID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgZG90QVNDSUlDb2RlWzJd
ID0geycyJywgJ2UnfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZ
U19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6OmlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sKKyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCpjID09ICcuJykgeworICAgICAgICBhZHZhbmNlPENo
YXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1
cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hRdWVzdGlvbk9ySGFzaCgqYyk7CisgICAgfQorICAgIGlm
ICgqYyAhPSAnJScpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3Rl
clR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkg
fHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2
YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICBp
ZiAoYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHRvQVNDSUlMb3dl
cigqYykgPT0gZG90QVNDSUlDb2RlWzFdKSB7CisgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgICAgIHJldHVybiBjLmF0RW5k
KCkgfHwgaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSBi
b29sIFVSTFBhcnNlcjo6aXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiBjKQoreworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoKmMgPT0gJy4nKSB7CisgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgICAgIHJldHVybiBpc1Npbmds
ZURvdFBhdGhTZWdtZW50KGMpOworICAgIH0KKyAgICBpZiAoKmMgIT0gJyUnKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9s
YXRpb246Ok5vPihjKTsKKyAgICBpZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29kZVsw
XSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVw
b3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsx
XSkgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlv
bjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgordm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKK3sKKyAgICBBU1NFUlQoaXNTaW5nbGVEb3RQ
YXRoU2VnbWVudChjKSk7CisgICAgaWYgKCpjID09ICcuJykgeworICAgICAgICBhZHZhbmNlKGMp
OworICAgICAgICBpZiAoIWMuYXRFbmQoKSkgeworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8
fCAqYyA9PSAnXFwnKQorICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOworICAg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKCpjID09ICclJyk7CisgICAgICAg
IGFkdmFuY2UoYyk7CisgICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOworICAg
ICAgICBhZHZhbmNlKGMpOworICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RB
U0NJSUNvZGVbMV0pOworICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICBpZiAoIWMuYXRFbmQo
KSkgeworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQorICAgICAgICAg
ICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgQVNT
RVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOworICAgICAgICB9CisgICAgfQorfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVEb3Vi
bGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKK3sK
KyAgICBBU1NFUlQoaXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSk7CisgICAgaWYgKCpjID09ICcu
JykKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKCpjID09
ICclJyk7CisgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJ
SUNvZGVbMF0pOworICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICBBU1NFUlQodG9BU0NJSUxv
d2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOworICAgICAgICBhZHZhbmNlKGMpOworICAgIH0K
KyAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7Cit9CisKK2Jvb2wgVVJMUGFyc2Vy
OjpzaG91bGRQb3BQYXRoKHVuc2lnbmVkIG5ld1BhdGhBZnRlckxhc3RTbGFzaCkKK3sKKyAgICBB
U1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOworICAgIGlmICghbV91cmxJc0ZpbGUpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgQVNTRVJUKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKKyAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hh
cj4gY29tcG9uZW50VG9Qb3AoJm1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSwg
Jm1fYXNjaWlCdWZmZXJbMF0gKyBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCk7CisgICAgaWYg
KG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9PSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRM
ZW5ndGggKyAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGNvbXBvbmVudFRvUG9wKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFVSTFBhcnNlcjo6
cG9wUGF0aCgpCit7CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICBp
ZiAobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5t
X3BvcnRMZW5ndGggKyAxKSB7CisgICAgICAgIGF1dG8gbmV3UGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggLSAxOworICAgICAgICBpZiAobV9hc2NpaUJ1ZmZl
cltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdID09ICcvJykKKyAgICAgICAgICAgIG5ld1BhdGhBZnRl
ckxhc3RTbGFzaC0tOworICAgICAgICB3aGlsZSAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID4gbV91
cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICYmIG1fYXNjaWlCdWZmZXJbbmV3UGF0
aEFmdGVyTGFzdFNsYXNoXSAhPSAnLycpCisgICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xh
c2gtLTsKKyAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoKys7CisgICAgICAgIGlmIChzaG91
bGRQb3BQYXRoKG5ld1BhdGhBZnRlckxhc3RTbGFzaCkpCisgICAgICAgICAgICBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA9IG5ld1BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICB9CisgICAgbV9h
c2NpaUJ1ZmZlci5yZXNpemUobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OnN5bnRheFZpb2xh
dGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7
CisgICAgaWYgKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKQorICAgICAgICByZXR1cm47CisgICAg
bV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOworICAgIAorICAgIEFTU0VSVChtX2FzY2lp
QnVmZmVyLmlzRW1wdHkoKSk7CisgICAgc2l6ZV90IGNvZGVVbml0c1RvQ29weSA9IGl0ZXJhdG9y
LmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlwZSo+KG1f
aW5wdXRCZWdpbikpOworICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVVbml0c1RvQ29weSA8PSBtX2lu
cHV0U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtX2FzY2lpQnVmZmVyLnJlc2VydmVDYXBhY2l0eSht
X2lucHV0U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVV
bml0c1RvQ29weTsgKytpKSB7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKG1faW5wdXRTdHJpbmdb
aV0pKTsKKyAgICAgICAgbV9hc2NpaUJ1ZmZlci51bmNoZWNrZWRBcHBlbmQobV9pbnB1dFN0cmlu
Z1tpXSk7CisgICAgfQorfQorCit2b2lkIFVSTFBhcnNlcjo6ZmFpbHVyZSgpCit7CisgICAgbV91
cmwuaW52YWxpZGF0ZSgpOworICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wgVVJMUGFyc2VyOjpjaGVj
a0xvY2FsaG9zdENvZGVQb2ludChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRl
cmF0b3IsIFVDaGFyMzIgY29kZVBvaW50KQoreworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8
IHRvQVNDSUlMb3dlcigqaXRlcmF0b3IpICE9IGNvZGVQb2ludCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpO
bz4oaXRlcmF0b3IpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OmlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKCFjaGVja0xvY2FsaG9z
dENvZGVQb2ludChpdGVyYXRvciwgJ2wnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdvJykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYycp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2lu
dChpdGVyYXRvciwgJ2EnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tM
b2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdsJykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnaCcpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRv
ciwgJ28nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RD
b2RlUG9pbnQoaXRlcmF0b3IsICdzJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAndCcpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7Cit9CisKK2Jvb2wgVVJMUGFyc2Vy
Ojppc0xvY2FsaG9zdChTdHJpbmdWaWV3IHZpZXcpCit7CisgICAgaWYgKHZpZXcuaXM4Qml0KCkp
CisgICAgICAgIHJldHVybiBpc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPih2
aWV3LmNoYXJhY3RlcnM4KCksIHZpZXcuY2hhcmFjdGVyczgoKSArIHZpZXcubGVuZ3RoKCkpKTsK
KyAgICByZXR1cm4gaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4odmlldy5j
aGFyYWN0ZXJzMTYoKSwgdmlldy5jaGFyYWN0ZXJzMTYoKSArIHZpZXcubGVuZ3RoKCkpKTsKK30K
KworQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXcoc2l6
ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5
bnRheFZpb2xhdGlvbikpIHsKKyAgICAgICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1fYXNj
aWlCdWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZl
ci5kYXRhKCkgKyBzdGFydCwgbGVuZ3RoKTsKKyAgICB9CisgICAgQVNTRVJUKHN0YXJ0ICsgbGVu
Z3RoIDw9IG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1f
aW5wdXRTdHJpbmcpLnN1YnN0cmluZyhzdGFydCwgbGVuZ3RoKTsKK30KKworQUxXQVlTX0lOTElO
RSBVQ2hhciBVUkxQYXJzZXI6OnBhcnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlvbikKK3sKKyAg
ICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQorICAgICAgICByZXR1cm4g
bV9hc2NpaUJ1ZmZlcltwb3NpdGlvbl07CisgICAgcmV0dXJuIG1faW5wdXRTdHJpbmdbcG9zaXRp
b25dOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElO
RSBzaXplX3QgVVJMUGFyc2VyOjpjdXJyZW50UG9zaXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIGlmIChVTkxJS0VMWShtX2RpZFNl
ZVN5bnRheFZpb2xhdGlvbikpCisgICAgICAgIHJldHVybiBtX2FzY2lpQnVmZmVyLnNpemUoKTsK
KyAgICAKKyAgICByZXR1cm4gaXRlcmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBDaGFyYWN0ZXJUeXBlKj4obV9pbnB1dEJlZ2luKSk7Cit9CisKK1VSTFBhcnNlcjo6
VVJMUGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJM
VGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNvZGluZykKKyAgICA6IG1faW5wdXRTdHJpbmco
aW5wdXQpCit7CisgICAgaWYgKGlucHV0LmlzTnVsbCgpKSB7CisgICAgICAgIGlmIChiYXNlLmlz
VmFsaWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwpIHsKKyAgICAgICAgICAgIG1fdXJs
ID0gYmFzZTsKKyAgICAgICAgICAgIG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoaW5wdXQuaXM4Qml0
KCkpIHsKKyAgICAgICAgbV9pbnB1dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKKyAgICAg
ICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczgoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVU
RjhRdWVyeUVuY29kaW5nKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2lucHV0QmVnaW4gPSBp
bnB1dC5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczE2KCks
IGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgfQorCisg
ICAgQVNTRVJUKCFtX3VybC5tX2lzVmFsaWQKKyAgICAgICAgfHwgbV9kaWRTZWVTeW50YXhWaW9s
YXRpb24gPT0gKG1fdXJsLnN0cmluZygpICE9IGlucHV0KQorICAgICAgICB8fCAoaW5wdXQuaXNB
bGxTcGVjaWFsQ2hhcmFjdGVyczxpc0MwQ29udHJvbE9yU3BhY2U+KCkKKyAgICAgICAgICAgICYm
IG1fdXJsLm1fc3RyaW5nID09IGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpKSk7
CisgICAgQVNTRVJUKGludGVybmFsVmFsdWVzQ29uc2lzdGVudChtX3VybCkpOworI2lmICFBU1NF
UlRfRElTQUJMRUQKKyAgICBpZiAoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSB7CisgICAgICAg
IC8vIEZvcmNlIGEgc3ludGF4IHZpb2xhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3Vy
ZSB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0LgorICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VT
dHJpbmcoIiAiLCBpbnB1dCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAg
VVJMIHBhcnNlZCA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlk
KCkpCisgICAgICAgICAgICBBU1NFUlQoYWxsVmFsdWVzRXF1YWwocGFyc2VyLnJlc3VsdCgpLCBt
X3VybCkpOworICAgIH0KKyNlbmRpZgorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgordm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqIGlucHV0LCBj
b25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29k
aW5nKiBub25VVEY4UXVlcnlFbmNvZGluZykKK3sKKyAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2lu
ZyBVUkwgPCVzPiBiYXNlIDwlcz4iLCBTdHJpbmcoaW5wdXQsIGxlbmd0aCkudXRmOCgpLmRhdGEo
KSwgYmFzZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBtX3VybCA9IHsgfTsKKyAgICBB
U1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOworCisgICAgVmVjdG9yPFVDaGFyPiBxdWVy
eUJ1ZmZlcjsKKworICAgIHVuc2lnbmVkIGVuZEluZGV4ID0gbGVuZ3RoOworICAgIHdoaWxlIChV
TkxJS0VMWShlbmRJbmRleCAmJiBpc0MwQ29udHJvbE9yU3BhY2UoaW5wdXRbZW5kSW5kZXggLSAx
XSkpKSB7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPihpbnB1dCwgaW5wdXQpKTsKKyAgICAgICAgZW5kSW5kZXgtLTsKKyAgICB9CisgICAg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYyhpbnB1dCwgaW5wdXQgKyBlbmRJbmRl
eCk7CisgICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYXV0aG9yaXR5T3JIb3N0
QmVnaW47CisgICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gcXVlcnlCZWdpbjsK
KyAgICB3aGlsZSAoVU5MSUtFTFkoIWMuYXRFbmQoKSAmJiBpc0MwQ29udHJvbE9yU3BhY2UoKmMp
KSkgeworICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICsrYzsKKyAgICB9Cisg
ICAgYXV0byBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlID0gYzsKKworICAgIGVudW0gY2xhc3Mg
U3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAgU2NoZW1lU3RhcnQsCisgICAgICAgIFNjaGVtZSwK
KyAgICAgICAgTm9TY2hlbWUsCisgICAgICAgIFNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5LAor
ICAgICAgICBQYXRoT3JBdXRob3JpdHksCisgICAgICAgIFJlbGF0aXZlLAorICAgICAgICBSZWxh
dGl2ZVNsYXNoLAorICAgICAgICBTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcywKKyAgICAgICAgU3Bl
Y2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMsCisgICAgICAgIEF1dGhvcml0eU9ySG9zdCwKKyAg
ICAgICAgSG9zdCwKKyAgICAgICAgRmlsZSwKKyAgICAgICAgRmlsZVNsYXNoLAorICAgICAgICBG
aWxlSG9zdCwKKyAgICAgICAgUGF0aFN0YXJ0LAorICAgICAgICBQYXRoLAorICAgICAgICBDYW5u
b3RCZUFCYXNlVVJMUGF0aCwKKyAgICAgICAgVVRGOFF1ZXJ5LAorICAgICAgICBOb25VVEY4UXVl
cnksCisgICAgICAgIEZyYWdtZW50LAorICAgIH07CisKKyNkZWZpbmUgTE9HX1NUQVRFKHgpIFVS
TF9QQVJTRVJfTE9HKCJTdGF0ZSAlcywgY29kZSBwb2ludCAlYywgcGFyc2VkIGRhdGEgPCVzPiBz
aXplICV6dSIsIHgsICpjLCBwYXJzZWREYXRhVmlldygwLCBjdXJyZW50UG9zaXRpb24oYykpLnV0
ZjgoKS5kYXRhKCksIGN1cnJlbnRQb3NpdGlvbihjKSkKKyNkZWZpbmUgTE9HX0ZJTkFMX1NUQVRF
KHgpIFVSTF9QQVJTRVJfTE9HKCJGaW5hbCBTdGF0ZTogJXMiLCB4KQorCisgICAgU3RhdGUgc3Rh
dGUgPSBTdGF0ZTo6U2NoZW1lU3RhcnQ7CisgICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKKyAgICAg
ICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCpjKSkpIHsKKyAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBjYXNlIFN0YXRl
OjpTY2hlbWVTdGFydDoKKyAgICAgICAgICAgIExPR19TVEFURSgiU2NoZW1lU3RhcnQiKTsKKyAg
ICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoKmMpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93
ZXIoKmMpKTsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgICAgIGlm
IChjLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigp
OworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKKyAgICAgICAg
ICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpTY2hlbWU7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpOb1NjaGVtZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0
YXRlOjpTY2hlbWU6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlNjaGVtZSIpOworICAgICAgICAg
ICAgaWYgKGlzVmFsaWRTY2hlbWVDaGFyYWN0ZXIoKmMpKSB7CisgICAgICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJ
TG93ZXIoKmMpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJzonKSB7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgc2NoZW1lRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAg
ICAgICAgICAgIGlmIChzY2hlbWVFbmQgPiBVUkw6Om1heFNjaGVtZUxlbmd0aCkgeworICAgICAg
ICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBzY2hl
bWVFbmQ7CisgICAgICAgICAgICAgICAgU3RyaW5nVmlldyB1cmxTY2hlbWUgPSBwYXJzZWREYXRh
VmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignOicpOworICAgICAgICAgICAgICAgIHN3aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkp
IHsKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RmlsZToKKyAgICAgICAgICAgICAgICAg
ICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtX3VybElzRmls
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7CisgICAg
ICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSBTY2hlbWU6OldTOgorICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpX
U1M6CisgICAgICAgICAgICAgICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsK
KyAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBpZiAoYmFzZS5wcm90b2NvbElzKHVybFNjaGVtZSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM7CisgICAgICAgICAgICAgICAgICAgICsrYzsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhU
VFA6CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFBTOgorICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RlRQOgor
ICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpHb3BoZXI6CisgICAgICAgICAgICAgICAgICAg
IG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJv
dG9jb2xJcyh1cmxTY2hlbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlT
bGFzaGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgorICAgICAgICAg
ICAgICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gbWF5YmVTbGFzaCA9IGM7CisgICAgICAgICAgICAgICAgICAgIGFkdmFuY2Uo
bWF5YmVTbGFzaCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbWF5YmVTbGFzaC5hdEVuZCgp
ICYmICptYXliZVNsYXNoID09ICcvJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG1heWJlU2xh
c2g7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoT3JBdXRob3Jp
dHk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoKmMgPT0gJy8nKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNl
clN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2Nhbm5vdEJlQUJhc2VV
UkwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Q2Fubm90
QmVBQmFzZVVSTFBhdGg7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7
CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAg
ICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgaWYg
KGMuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKKyAgICAgICAgICAgICAgICBj
ID0gYmVnaW5BZnRlckNvbnRyb2xBbmRTcGFjZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpOb1NjaGVtZToKKyAgICAgICAgICAgIExPR19T
VEFURSgiTm9TY2hlbWUiKTsKKyAgICAgICAgICAgIGlmICghYmFzZS5pc1ZhbGlkKCkgfHwgKGJh
c2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpjICE9ICcjJykpIHsKKyAgICAgICAgICAgICAgICBm
YWlsdXJlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpjID09ICcjJykgeworICAgICAg
ICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBu
b25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJh
Z21lbnQ7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOworICAgICAg
ICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICghYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKKyAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNj
aGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignOicpOworICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhv
cml0eToKKyAgICAgICAgICAgIExPR19TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHki
KTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAg
ICAgICAgICBpZiAoYy5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBpZiAoKmMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lh
bEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7CisgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVs
YXRpdmVTbGFzaDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlJlbGF0aXZlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6
OlBhdGhPckF1dGhvcml0eToKKyAgICAgICAgICAgIExPR19TVEFURSgiUGF0aE9yQXV0aG9yaXR5
Iik7CisgICAgICAgICAgICBpZiAoKmMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhv
cml0eU9ySG9zdDsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgICAg
IG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAg
IGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09
ICcvJyk7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRp
b24oYykgLSAxOworICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAx
OworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6CisgICAgICAg
ICAgICBMT0dfU1RBVEUoIlJlbGF0aXZlIik7CisgICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Cisg
ICAgICAgICAgICBjYXNlICcvJzoKKyAgICAgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZVNsYXNoOworICAgICAgICAgICAgICAgICsrYzsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJz8nOgorICAgICAgICAg
ICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVU
RjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/
Jyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVl
cnlFbmNvZGluZykgeworICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAgICAg
ICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
JyMnKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAg
ICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhB
ZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAg
IGlmIChjdXJyZW50UG9zaXRpb24oYykgJiYgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9u
KGMpIC0gMSkgIT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFz
aDoKKyAgICAgICAgICAgIExPR19TVEFURSgiUmVsYXRpdmVTbGFzaCIpOworICAgICAgICAgICAg
aWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgKytjOworICAg
ICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwg
Yywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoIjovLyIsIDMpOworICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNs
YXNoZXM7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7CisgICAgICAgICAgICAgICAgICAgIGF1dGhv
cml0eU9ySG9zdEJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBv
cnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMTsKKyAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgorICAg
ICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcyIpOworICAgICAgICAg
ICAgaWYgKExJS0VMWSgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Cisg
ICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBpZiAoTElLRUxZKCFj
LmF0RW5kKCkgJiYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKCpjID09ICdcXCcpKQorICAgICAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNs
YXNoZXM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXM6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRo
b3JpdHlJZ25vcmVTbGFzaGVzIik7CisgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09
ICdcXCcpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAg
ICAgICAgKytjOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7CisgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0
QmVnaW4gPSBjOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU3RhdGU6OkF1dGhvcml0eU9ySG9zdDoKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAg
ICAgICBMT0dfU1RBVEUoIkF1dGhvcml0eU9ySG9zdCIpOworICAgICAgICAgICAgICAgIGlmICgq
YyA9PSAnQCcpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsYXN0QXQgPSBjOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGZpbmRMYXN0QXQgPSBjOworICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoIWZpbmRMYXN0QXQuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgVVJM
X1BBUlNFUl9MT0coIkZpbmRpbmcgbGFzdCBAOiAlYyIsICpmaW5kTGFzdEF0KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgqZmluZExhc3RBdCA9PSAnQCcpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGFzdEF0ID0gZmluZExhc3RBdDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNTbGFzaCA9ICpmaW5kTGFzdEF0ID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYg
KmZpbmRMYXN0QXQgPT0gJ1xcJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTbGFz
aCB8fCAqZmluZExhc3RBdCA9PSAnPycgfHwgKmZpbmRMYXN0QXQgPT0gJyMnKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgKytmaW5k
TGFzdEF0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBhcnNl
QXV0aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9z
dEJlZ2luLCBsYXN0QXQpKTsKKyAgICAgICAgICAgICAgICAgICAgYyA9IGxhc3RBdDsKKyAgICAg
ICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5
T3JIb3N0QmVnaW4gPSBjOworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIb3N0
OworICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYm9vbCBpc1NsYXNoID0gKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAq
YyA9PSAnXFwnKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8fCAqYyA9PSAnPycgfHwg
KmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYyk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBj
dXJyZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChpdGVyYXRvcikpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKCFpc1NsYXNoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChtX3VybElzU3BlY2lhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBj
dXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJKCpjKSkKKyAgICAgICAgICAgICAgICAgICAgbV9o
b3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVlOworICAgICAgICAgICAgICAgICsrYzsKKyAg
ICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU3RhdGU6Okhvc3Q6CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAg
TE9HX1NUQVRFKCJIb3N0Iik7CisgICAgICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9
PSAnPycgfHwgKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0
QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RC
ZWdpbiwgYykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCisgICAgICAgICAgICAgICAgICAgIG1faG9zdEhh
c1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAg
ICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFN0YXRlOjpGaWxlOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlIik7CisgICAgICAg
ICAgICBzd2l0Y2ggKCpjKSB7CisgICAgICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAg
ICAgICAgICAgY2FzZSAnLyc6CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGVTbGFzaDsKKyAgICAgICAg
ICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICc/
JzoKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAg
aWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMs
IG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignPycpOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vPyIs
IDQpOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMjsKKyAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVu
Y29kaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJyMnOgorICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlk
KCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKKyAgICAgICAgICAgICAgICAgICAgY29w
eVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVu
Y29kaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoIi8vLyMiLCA0KTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3Rh
cnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAyOworICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZy
YWdtZW50OworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwor
ICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZp
bGUiKSAmJiBzaG91bGRDb3B5RmlsZVVSTChjKSkKKyAgICAgICAgICAgICAgICAgICAgY29weVVS
TFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4
UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyIsIDMpOworICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU3RhdGU6OkZpbGVTbGFzaDoKKyAgICAgICAgICAgIExPR19TVEFURSgiRmlsZVNsYXNoIik7
CisgICAgICAgICAgICBpZiAoTElLRUxZKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkgeworICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnXFwnKSkKKyAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIG1f
dXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3Vy
bC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0g
YzsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlSG9zdDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7CisgICAgICAgICAg
ICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAg
ICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJs
Lm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKKyAgICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgeworICAg
ICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsK
KyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlBhdGg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6
CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlSG9zdCIp
OworICAgICAgICAgICAgICAgIGlmIChpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGJvb2wgd2luZG93c1F1aXJrID0gdGFrZXNUd29BZHZhbmNlc1VudGls
RW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2lu
LCBjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1
dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWly
aykgeworICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9y
SG9zdEJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihh
dXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvd3NRdWlyayB8fCBhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQod2luZG93c1F1aXJrIHx8IHBhcnNlZERh
dGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJz8nKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCIvPyIsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2Rp
bmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVy
eTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9u
KGMpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChVTkxJS0VMWSgqYyA9PSAnIycpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoIi8jIiwgMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
Y3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNM
b2NhbGhvc3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0
aW9uKGMpIC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1
ZmZlci5zaHJpbmsobV91cmwubV9wYXNzd29yZEVuZCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQ
YXRoU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCisgICAgICAgICAg
ICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICArK2M7CisgICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpQYXRoU3RhcnQ6CisgICAgICAgICAgICBMT0df
U1RBVEUoIlBhdGhTdGFydCIpOworICAgICAgICAgICAgaWYgKCpjICE9ICcvJyAmJiAqYyAhPSAn
XFwnKSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFN0YXRlOjpQYXRoOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoIik7CisgICAgICAg
ICAgICBpZiAoKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkgewor
ICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwn
KSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAg
ICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24o
Yyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoY3VycmVudFBvc2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQ
b3NpdGlvbihjKSAtIDEpID09ICcvJykpIHsKKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
aXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICBjb25zdW1lRG91YmxlRG90UGF0aFNl
Z21lbnQoYyk7CisgICAgICAgICAgICAgICAgICAgIHBvcFBhdGgoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpKSkgeworICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVTaW5nbGVEb3RQ
YXRoU2VnbWVudChjKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCpjID09ICc/JykgeworICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7CisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAgICAg
ICAgICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAg
IG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luRGVmYXVsdEVuY29kZVNldD4o
Yyk7CisgICAgICAgICAgICArK2M7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBT
dGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6CisgICAgICAgICAgICBMT0dfU1RBVEUoIkNhbm5v
dEJlQUJhc2VVUkxQYXRoIik7CisgICAgICAgICAgICBpZiAoKmMgPT0gJz8nKSB7CisgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKKyAgICAgICAgICAgICAgICArK2M7Cisg
ICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7CisgICAgICAgICAgICAg
ICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpOb25VVEY4UXVlcnk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMg
PT0gJyMnKSB7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhF
bmQ7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCpjID09ICcvJykgeworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNv
ZGVTZXQ+KGMpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpVVEY4UXVlcnk6CisgICAgICAgICAgICBM
T0dfU1RBVEUoIlVURjhRdWVyeSIpOworICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gPT0g
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAgICAgICAgICBpZiAoKmMg
PT0gJyMnKSB7CisgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3Np
dGlvbihjKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVCghbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgdXRmOFF1ZXJ5RW5jb2RlKGMpOworICAg
ICAgICAgICAgKytjOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6Ok5v
blVURjhRdWVyeToKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBMT0dfU1RBVEUo
Ik5vblVURjhRdWVyeSIpOworICAgICAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOworICAgICAgICAgICAgICAgIGlmICgq
YyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5
QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVy
eUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBhcHBlbmRDb2RlUG9pbnQocXVlcnlCdWZmZXIsICpjKTsK
KyAgICAgICAgICAgICAgICBhZHZhbmNlKGMsIHF1ZXJ5QmVnaW4pOworICAgICAgICAgICAgfSB3
aGlsZSAoIWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0
ZTo6RnJhZ21lbnQ6CisgICAgICAgICAgICBVUkxfUEFSU0VSX0xPRygiU3RhdGUgRnJhZ21lbnQi
KTsKKyAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMp
OworICAgICAgICAgICAgKytjOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6Cisg
ICAgICAgIExPR19GSU5BTF9TVEFURSgiU2NoZW1lU3RhcnQiKTsKKyAgICAgICAgaWYgKCFjdXJy
ZW50UG9zaXRpb24oYykgJiYgYmFzZS5pc1ZhbGlkKCkgJiYgIWJhc2UubV9jYW5ub3RCZUFCYXNl
VVJMKSB7CisgICAgICAgICAgICBtX3VybCA9IGJhc2U7CisgICAgICAgICAgICBtX3VybC5yZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0YXRlOjpTY2hl
bWU6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiU2NoZW1lIik7CisgICAgICAgIGZhaWx1cmUo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RhdGU6Ok5vU2NoZW1lOgorICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIk5vU2NoZW1lIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6Cisg
ICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKKyAg
ICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVU
RjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6UGF0aE9y
QXV0aG9yaXR5OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOwor
ICAgICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQpOworICAgICAgICBBU1NFUlQobV91cmwu
bV91c2VyU3RhcnQgPT0gY3VycmVudFBvc2l0aW9uKGMpKTsKKyAgICAgICAgQVNTRVJUKHBhcnNl
ZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7CisgICAgICAgIG1fdXJs
Lm1fdXNlclN0YXJ0LS07CisgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OworICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Cisg
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6UmVs
YXRpdmU6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiUmVsYXRpdmUiKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNo
OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKKyAgICAgICAgY29w
eVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpOworICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVu
Z3RoICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNs
YXNoZXM6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMi
KTsKKyAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAg
ICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwor
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0Owor
ICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczoKKyAgICAgICAgTE9HX0ZJ
TkFMX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcyIpOworICAgICAgICBmYWls
dXJlKCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6
CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiQXV0aG9yaXR5T3JIb3N0Iik7CisgICAgICAgIG1f
dXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7Cisg
ICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgIGlm
IChhdXRob3JpdHlPckhvc3RCZWdpbi5hdEVuZCgpKSB7CisgICAgICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICB9
IGVsc2UgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgeworICAg
ICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKSB7CisgICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBt
X3VybC5tX3BvcnRMZW5ndGggKyAxOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3Ro
OworICAgICAgICB9CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwu
bV9wYXRoRW5kOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpIb3N0OgorICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIkhvc3QiKTsKKyAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9y
SG9zdEJlZ2luKSkgeworICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkgeworICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OworICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwu
bV9wb3J0TGVuZ3RoICsgMTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7CisgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFN0YXRlOjpGaWxlOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGUiKTsKKyAgICAgICAg
aWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAg
ICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8iLCAz
KTsKKyAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwor
ICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91
cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX2hv
c3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFy
dCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKKyAgICAgICAg
TE9HX0ZJTkFMX1NUQVRFKCJGaWxlU2xhc2giKTsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OworICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSArIDE7Cisg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7CisgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICBpZiAoY29w
eUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKKyAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV91c2VyU3RhcnQgKyA0OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICBt
X3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFN0YXRlOjpGaWxlSG9zdDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJG
aWxlSG9zdCIpOworICAgICAgICBpZiAodGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKKyAgICAg
ICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewor
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgIGFwcGVuZFdpbmRv
d3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChhdXRob3JpdHlPckhv
c3RCZWdpbiA9PSBjKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICBtX3VybC5tX3VzZXJT
dGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAx
OworICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CisgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghcGFy
c2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlP
ckhvc3RCZWdpbiwgYykpKSB7CisgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAg
IGlmIChpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJy
ZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpIHsKKyAgICAgICAgICAgIG1f
YXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOworICAgICAgICAgICAgbV91
cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgbV91cmwubV9w
b3J0TGVuZ3RoID0gMDsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5k
ICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6
UGF0aFN0YXJ0OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlBhdGhTdGFydCIpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgU3RhdGU6OlBhdGg6Cisg
ICAgICAgIExPR19GSU5BTF9TVEFURSgiUGF0aCIpOworICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5t
X3BhdGhFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VV
UkxQYXRoOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7
CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlVURjhRdWVy
eSIpOworICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPigpKTsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgorICAg
ICAgICBMT0dfRklOQUxfU1RBVEUoIk5vblVURjhRdWVyeSIpOworICAgICAgICBBU1NFUlQocXVl
cnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKKyAgICAgICAg
ZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKKyAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRnJhZ21l
bnQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKExJS0VMWSghbV9kaWRTZWVT
eW50YXhWaW9sYXRpb24pKSB7CisgICAgICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmlu
ZzsKKyAgICAgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgbV91cmwubV9zdHJpbmcgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUobV9hc2NpaUJ1
ZmZlcikpOworICAgIG1fdXJsLm1faXNWYWxpZCA9IHRydWU7CisgICAgVVJMX1BBUlNFUl9MT0co
IlBhcnNlZCBVUkwgPCVzPiIsIG1fdXJsLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OnBhcnNlQXV0
aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAg
IGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgeworICAgICAgICBzeW50YXhWaW9sYXRp
b24oaXRlcmF0b3IpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24o
aXRlcmF0b3IpOworICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5k
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsg
YWR2YW5jZShpdGVyYXRvcikpIHsKKyAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpIHsKKyAg
ICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Cisg
ICAgICAgICAgICBhdXRvIGl0ZXJhdG9yQXRDb2xvbiA9IGl0ZXJhdG9yOworICAgICAgICAgICAg
KytpdGVyYXRvcjsKKyAgICAgICAgICAgIGJvb2wgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IGZh
bHNlOworICAgICAgICAgICAgd2hpbGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlz
VGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7CisgICAgICAgICAgICAgICAgdGFiT3JOZXdsaW5l
QWZ0ZXJDb2xvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgeworICAg
ICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckF0Q29sb24pOworICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAg
ICAgICAgaWYgKG1fdXJsLm1fdXNlckVuZCA+IG1fdXJsLm1fdXNlclN0YXJ0KQorICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdAJyk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRhYk9yTmV3bGluZUFmdGVyQ29s
b24pCisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yQXRDb2xvbik7Cisg
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxXZWJDb3JlOjppc0luVXNlcklu
Zm9FbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKKyAgICB9CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVu
ZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkKKyAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V2ViQ29y
ZTo6aXNJblVzZXJJbmZvRW5jb2RlU2V0PihpdGVyYXRvcik7CisgICAgbV91cmwubV9wYXNzd29y
ZEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgaWYgKCFtX3VybC5tX3VzZXJF
bmQpCisgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fcGFzc3dvcmRFbmQ7CisgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignQCcpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25l
ZEludGVnZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OmFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIo
VW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpCit7CisgICAgTENoYXIgYnVmW3NpemVvZihVbnNp
Z25lZEludGVnZXJUeXBlKSAqIDMgKyAxXTsKKyAgICBMQ2hhciogZW5kID0gc3RkOjplbmQoYnVm
KTsKKyAgICBMQ2hhciogcCA9IGVuZDsKKyAgICBkbyB7CisgICAgICAgICotLXAgPSAobnVtYmVy
ICUgMTApICsgJzAnOworICAgICAgICBudW1iZXIgLz0gMTA7CisgICAgfSB3aGlsZSAobnVtYmVy
KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHAsIGVuZCAtIHApOworfQorCit2b2lkIFVSTFBh
cnNlcjo6c2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyBhZGRyZXNzKQoreworICAgIGFwcGVuZE51
bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAyNCk7CisgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignLicpOworICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4o
YWRkcmVzcyA+PiAxNik7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOworICAgIGFwcGVu
ZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiA4KTsKKyAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90
PihhZGRyZXNzKTsKK30KKyAgICAKK3N0YXRpYyBzaXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNv
bnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzLCBzaXplX3QgYmVnaW4pCit7Cisg
ICAgc2l6ZV90IGVuZCA9IGJlZ2luOworICAgIGZvciAoOyBlbmQgPCA4OyBlbmQrKykgeworICAg
ICAgICBpZiAoYWRkcmVzc1tlbmRdKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJl
dHVybiBlbmQgLSBiZWdpbjsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5k
TG9uZ2VzdFplcm9TZXF1ZW5jZShjb25zdCBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVz
cykKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbG9uZ2VzdDsKKyAgICBzaXplX3QgbG9u
Z2VzdExlbmd0aCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAg
ICAgICAgc2l6ZV90IGxlbmd0aCA9IHplcm9TZXF1ZW5jZUxlbmd0aChhZGRyZXNzLCBpKTsKKyAg
ICAgICAgaWYgKGxlbmd0aCkgeworICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgKCFsb25n
ZXN0IHx8IGxvbmdlc3RMZW5ndGggPCBsZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgbG9uZ2Vz
dCA9IGk7CisgICAgICAgICAgICAgICAgbG9uZ2VzdExlbmd0aCA9IGxlbmd0aDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGkgKz0gbGVuZ3RoOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBsb25nZXN0OworfQorCit2b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NlBpZWNlKHVp
bnQxNl90IHBpZWNlKQoreworICAgIGJvb2wgcHJpbnRlZCA9IGZhbHNlOworICAgIGlmIChhdXRv
IG5pYmJsZTAgPSBwaWVjZSA+PiAxMikgeworICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxv
d2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTApKTsKKyAgICAgICAgcHJp
bnRlZCA9IHRydWU7CisgICAgfQorICAgIGF1dG8gbmliYmxlMSA9IHBpZWNlID4+IDggJiAweEY7
CisgICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMSkgeworICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTEpKTsKKyAgICAg
ICAgcHJpbnRlZCA9IHRydWU7CisgICAgfQorICAgIGF1dG8gbmliYmxlMiA9IHBpZWNlID4+IDQg
JiAweEY7CisgICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMikKKyAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChuaWJibGUyKSk7Cisg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdp
dChwaWVjZSAmIDB4RikpOworfQorCit2b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NihVUkxQ
YXJzZXI6OklQdjZBZGRyZXNzIGFkZHJlc3MpCit7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
WycpOworICAgIGF1dG8gY29tcHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2Uo
YWRkcmVzcyk7CisgICAgZm9yIChzaXplX3QgcGllY2UgPSAwOyBwaWVjZSA8IDg7IHBpZWNlKysp
IHsKKyAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBjb21wcmVzc1BvaW50ZXIudmFsdWUo
KSA9PSBwaWVjZSkgeworICAgICAgICAgICAgQVNTRVJUKCFhZGRyZXNzW3BpZWNlXSk7CisgICAg
ICAgICAgICBpZiAocGllY2UpCisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
OicpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoIjo6IiwgMik7CisgICAgICAgICAgICB3aGlsZSAocGllY2UgPCA4ICYmICFhZGRyZXNzW3Bp
ZWNlXSkKKyAgICAgICAgICAgICAgICBwaWVjZSsrOworICAgICAgICAgICAgaWYgKHBpZWNlID09
IDgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2VyaWFsaXpl
SVB2NlBpZWNlKGFkZHJlc3NbcGllY2VdKTsKKyAgICAgICAgaWYgKHBpZWNlIDwgNykKKyAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICB9CisgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignXScpOworfQorCitlbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2lu
Z0Vycm9yIHsKKyAgICBGYWlsdXJlLAorICAgIE92ZXJmbG93LAorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0V4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQ
aWVjZVBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGJvb2wmIGRpZFNlZVN5bnRheFZpb2xhdGlv
bikKK3sKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIFVua25vd25C
YXNlLAorICAgICAgICBEZWNpbWFsLAorICAgICAgICBPY3RhbE9ySGV4LAorICAgICAgICBPY3Rh
bCwKKyAgICAgICAgSGV4LAorICAgIH07CisgICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93
bkJhc2U7CisgICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsK
KyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Cisg
ICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgIGlmIChpc1RhYk9yTmV3bGlu
ZSgqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVl
OworICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJy4nKSB7CisgICAgICAgICAgICBBU1NFUlQo
IXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUudW5zYWZl
R2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBjYXNl
IFN0YXRlOjpVbmtub3duQmFzZToKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0b3Ig
PT0gJzAnKSkgeworICAgICAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6T2N0YWxPckhleDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkRlY2ltYWw7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6T2N0YWxPckhleDoKKyAgICAgICAgICAgIGRp
ZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09
ICd4JyB8fCAqaXRlcmF0b3IgPT0gJ1gnKSB7CisgICAgICAgICAgICAgICAgKytpdGVyYXRvcjsK
KyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIZXg7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpEZWNpbWFsOgorICAgICAgICAg
ICAgaWYgKCFpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAg
ICAgIHZhbHVlICo9IDEwOworICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwor
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3Zl
cmZsb3cpOworICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFN0YXRlOjpPY3RhbDoKKyAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhW
aW9sYXRpb24pOworICAgICAgICAgICAgaWYgKCppdGVyYXRvciA8ICcwJyB8fCAqaXRlcmF0b3Ig
PiAnNycpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBh
cnNpbmdFcnJvcjo6RmFpbHVyZSk7CisgICAgICAgICAgICB2YWx1ZSAqPSA4OworICAgICAgICAg
ICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZh
bHVlLmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOworICAgICAgICAgICAgKytpdGVy
YXRvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpIZXg6CisgICAg
ICAgICAgICBBU1NFUlQoZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICAgICAgICAgIGlmICgh
aXNBU0NJSUhleERpZ2l0KCppdGVyYXRvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CisgICAgICAgICAgICB2
YWx1ZSAqPSAxNjsKKyAgICAgICAgICAgIHZhbHVlICs9IHRvQVNDSUlIZXhWYWx1ZSgqaXRlcmF0
b3IpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJv
cjo6T3ZlcmZsb3cpOworICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsK
KyAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Cit9CisKK0FMV0FZU19JTkxJTkUgc3RhdGlj
IHVpbnQ2NF90IHBvdzI1NihzaXplX3QgZXhwb25lbnQpCit7CisgICAgUkVMRUFTRV9BU1NFUlQo
ZXhwb25lbnQgPD0gNCk7CisgICAgdWludDY0X3QgdmFsdWVzWzVdID0gezEsIDI1NiwgMjU2ICog
MjU2LCAyNTYgKiAyNTYgKiAyNTYsIDI1NnVsbCAqIDI1NiAqIDI1NiAqIDI1NiB9OworICAgIHJl
dHVybiB2YWx1ZXNbZXhwb25lbnRdOworfQorCitlbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBh
cnNpbmdFcnJvciB7CisgICAgRmFpbHVyZSwKKyAgICBOb3RJUHY0LAorfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK0V4cGVjdGVkPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2
NFBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24+JiBpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVy
YXRvcikKK3sKKyAgICBWZWN0b3I8RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBp
ZWNlUGFyc2luZ0Vycm9yPiwgND4gaXRlbXM7CisgICAgYm9vbCBkaWRTZWVTeW50YXhWaW9sYXRp
b24gPSBmYWxzZTsKKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcu
JykKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQ
djQpOworICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICBpZiAoaXNUYWJP
ck5ld2xpbmUoKml0ZXJhdG9yKSkgeworICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9u
ID0gdHJ1ZTsKKyAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoaXRlbXMuc2l6ZSgpID49IDQpCisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgICAg
IGl0ZW1zLmFwcGVuZChwYXJzZUlQdjRQaWVjZShpdGVyYXRvciwgZGlkU2VlU3ludGF4VmlvbGF0
aW9uKSk7CisgICAgICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4n
KSB7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkpCisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4
VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZSBpZiAoKml0ZXJhdG9yID09ICcu
JykKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJv
cjo6Tm90SVB2NCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFpdGVyYXRvci5hdEVuZCgp
IHx8ICFpdGVtcy5zaXplKCkgfHwgaXRlbXMuc2l6ZSgpID4gNCkKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOworICAgIGZvciAoY29uc3Qg
YXV0byYgaXRlbSA6IGl0ZW1zKSB7CisgICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBp
dGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKQorICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOworICAg
IH0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBpdGVtcykgeworICAgICAgICBpZiAoIWl0
ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6
T3ZlcmZsb3cpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdF
cnJvcjo6RmFpbHVyZSk7CisgICAgfQorICAgIGlmIChpdGVtcy5zaXplKCkgPiAxKSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpIC0gMTsgaSsrKSB7CisgICAg
ICAgICAgICBpZiAoaXRlbXNbaV0udmFsdWUoKSA+IDI1NSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgaWYgKGl0ZW1zW2l0ZW1zLnNpemUoKSAtIDFdLnZhbHVlKCkgPj0gcG93MjU2
KDUgLSBpdGVtcy5zaXplKCkpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBh
cnNpbmdFcnJvcjo6RmFpbHVyZSk7CisKKyAgICBpZiAoZGlkU2VlU3ludGF4VmlvbGF0aW9uKQor
ICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlv
bik7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKKyAgICAgICAgaWYgKGl0
ZW0udmFsdWUoKSA+IDI1NSkKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZv
clN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICB9CisKKyAgICBpZiAoVU5MSUtFTFkoaXRl
bXMuc2l6ZSgpICE9IDQpKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50
YXhWaW9sYXRpb25Qb3NpdGlvbik7CisKKyAgICBJUHY0QWRkcmVzcyBpcHY0ID0gaXRlbXMudGFr
ZUxhc3QoKS52YWx1ZSgpOworICAgIGZvciAoc2l6ZV90IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwg
aXRlbXMuc2l6ZSgpOyArK2NvdW50ZXIpCisgICAgICAgIGlwdjQgKz0gaXRlbXNbY291bnRlcl0u
dmFsdWUoKSAqIHBvdzI1NigzIC0gY291bnRlcik7CisgICAgcmV0dXJuIGlwdjQ7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBV
UkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgdWludDMyX3QgcGllY2UgPSAwOworICAgIGJv
b2wgbGVhZGluZ1plcm9zID0gZmFsc2U7CisgICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOworICAg
IHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgq
aXRlcmF0b3IpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgKytk
aWdpdENvdW50OworICAgICAgICBpZiAoIXBpZWNlICYmICppdGVyYXRvciA9PSAnMCcpIHsKKyAg
ICAgICAgICAgIGlmIChsZWFkaW5nWmVyb3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0gJzAnKQorICAgICAgICAgICAgbGVhZGlu
Z1plcm9zID0gdHJ1ZTsKKyAgICAgICAgcGllY2UgPSBwaWVjZSAqIDEwICsgKml0ZXJhdG9yIC0g
JzAnOworICAgICAgICBpZiAocGllY2UgPiAyNTUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnLicpCisgICAgICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgaWYgKHBpZWNlICYmIGxlYWRpbmdaZXJvcykKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcGllY2U7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJl
c3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9
IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICAgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBpZWNlID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0
ZXJhdG9yKSkKKyAgICAgICAgICAgIGFkZHJlc3MgPSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZh
bHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIGlmIChpIDwgMykgeworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGlmICgqaXRl
cmF0b3IgIT0gJy4nKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+
KGl0ZXJhdG9yKTsKKyAgICAgICAgfSBlbHNlIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIEFTU0VSVChpdGVyYXRvci5h
dEVuZCgpKTsKKyAgICByZXR1cm4gYWRkcmVzczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFy
c2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCit7
CisgICAgQVNTRVJUKCpjID09ICdbJyk7CisgICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBjOwor
ICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgSVB2NkFkZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH19OworICAgIHNpemVfdCBwaWVjZVBvaW50ZXIgPSAwOworICAgIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb21wcmVzc1BvaW50ZXI7CisKKyAgICBpZiAoKmMgPT0gJzon
KSB7CisgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAgaWYgKGMuYXRFbmQo
KSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmICgqYyAhPSAn
OicpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhZHZhbmNlKGMs
IGhvc3RCZWdpbik7CisgICAgICAgICsrcGllY2VQb2ludGVyOworICAgICAgICBjb21wcmVzc1Bv
aW50ZXIgPSBwaWVjZVBvaW50ZXI7CisgICAgfQorICAgIAorICAgIHdoaWxlICghYy5hdEVuZCgp
KSB7CisgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIGlmICgqYyA9PSAnOicpIHsKKyAgICAgICAgICAgIGlmIChj
b21wcmVzc1BvaW50ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAgICAgICsrcGllY2VQb2lu
dGVyOworICAgICAgICAgICAgY29tcHJlc3NQb2ludGVyID0gcGllY2VQb2ludGVyOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2
IHx8IChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2ludGVyIDwgNikpIHsKKyAgICAgICAgICAg
IGlmIChzdGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFk
ZHJlc3NJbnNpZGVJUHY2KGMpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRl
ciAmJiBwaWVjZVBvaW50ZXIgPT0gNSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKyAg
ICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVl
KCkgPj4gMTY7CisgICAgICAgICAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0
QWRkcmVzcy52YWx1ZSgpICYgMHhGRkZGOworICAgICAgICAgICAgICAgIGMgPSB7IH07CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdWlu
dDE2X3QgdmFsdWUgPSAwOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gMDsKKyAgICAgICAgYm9v
bCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKKyAgICAgICAgZm9yICg7IGxlbmd0aCA8IDQ7IGxlbmd0
aCsrKSB7CisgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKmMpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcigqYykpCisgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisgICAgICAgICAgICBpZiAoKmMgPT0gJzAn
ICYmICFsZW5ndGgpCisgICAgICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHZhbHVlID0gdmFsdWUgKiAweDEwICsgdG9BU0NJSUhleFZhbHVlKCpjKTsKKyAgICAg
ICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKFVOTElLRUxZKCh2YWx1ZSAmJiBsZWFkaW5nWmVyb3MpIHx8ICghdmFsdWUgJiYgbGVu
Z3RoID4gMSkpKQorICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisKKyAg
ICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSB2YWx1ZTsKKyAgICAgICAgaWYgKGMuYXRF
bmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDgg
fHwgKmMgIT0gJzonKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
YWR2YW5jZShjLCBob3N0QmVnaW4pOworICAgIH0KKyAgICAKKyAgICBpZiAoIWMuYXRFbmQoKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAKKyAgICBpZiAoY29tcHJlc3NQb2lu
dGVyKSB7CisgICAgICAgIHNpemVfdCBzd2FwcyA9IHBpZWNlUG9pbnRlciAtIGNvbXByZXNzUG9p
bnRlci52YWx1ZSgpOworICAgICAgICBwaWVjZVBvaW50ZXIgPSA3OworICAgICAgICB3aGlsZSAo
c3dhcHMpCisgICAgICAgICAgICBzdGQ6OnN3YXAoYWRkcmVzc1twaWVjZVBvaW50ZXItLV0sIGFk
ZHJlc3NbY29tcHJlc3NQb2ludGVyLnZhbHVlKCkgKyBzd2Fwcy0tIC0gMV0pOworICAgIH0gZWxz
ZSBpZiAocGllY2VQb2ludGVyICE9IDgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcG9zc2libGVDb21wcmVzc1BvaW50ZXIgPSBmaW5k
TG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKKyAgICBpZiAocG9zc2libGVDb21wcmVzc1Bv
aW50ZXIpCisgICAgICAgIHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyLnZhbHVlKCkrKzsKKyAgICBp
ZiAoVU5MSUtFTFkoY29tcHJlc3NQb2ludGVyICE9IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKSkK
KyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisgICAgCisgICAgcmV0dXJuIGFk
ZHJlc3M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitVUkxQYXJzZXI6
OkxDaGFyQnVmZmVyIFVSTFBhcnNlcjo6cGVyY2VudERlY29kZShjb25zdCBMQ2hhciogaW5wdXQs
IHNpemVfdCBsZW5ndGgsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQoreworICAgIExDaGFyQnVmZmVyIG91
dHB1dDsKKyAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgIAor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdWludDhf
dCBieXRlID0gaW5wdXRbaV07CisgICAgICAgIGlmIChieXRlICE9ICclJykKKyAgICAgICAgICAg
IG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+
IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKKyAgICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQo
aW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgeworICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0
aW9uKTsKKyAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhW
YWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOworICAgICAgICAgICAgICAgIGkgKz0g
MjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRB
cHBlbmQoYnl0ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tl
ZEFwcGVuZChieXRlKTsKKyAgICB9CisgICAgcmV0dXJuIG91dHB1dDsKK30KKyAgICAKK1VSTFBh
cnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBp
bnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBMQ2hhckJ1ZmZlciBvdXRwdXQ7CisgICAgb3V0
cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICAKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGlucHV0
W2ldOworICAgICAgICBpZiAoYnl0ZSAhPSAnJScpCisgICAgICAgICAgICBvdXRwdXQudW5jaGVj
a2VkQXBwZW5kKGJ5dGUpOworICAgICAgICBlbHNlIGlmIChsZW5ndGggPiAyICYmIGkgPCBsZW5n
dGggLSAyKSB7CisgICAgICAgICAgICBpZiAoaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkg
JiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAyXSkpIHsKKyAgICAgICAgICAgICAgICBvdXRw
dXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kg
KyAyXSkpOworICAgICAgICAgICAgICAgIGkgKz0gMjsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICB9CisgICAg
cmV0dXJuIG91dHB1dDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rk
OjpvcHRpb25hbDxVUkxQYXJzZXI6OkxDaGFyQnVmZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVND
SUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikKK3sKKyAgICBMQ2hhckJ1
ZmZlciBhc2NpaTsKKyAgICBpZiAoZG9tYWluLmlzQWxsQVNDSUkoKSkgeworICAgICAgICBzaXpl
X3QgbGVuZ3RoID0gZG9tYWluLmxlbmd0aCgpOworICAgICAgICBpZiAoZG9tYWluLmlzOEJpdCgp
KSB7CisgICAgICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0
ZXJzOCgpOworICAgICAgICAgICAgYXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgp
OworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQor
ICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9s
YXRpb25Qb3NpdGlvbik7CisgICAgICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRv
QVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0
ZXJzMTYoKTsKKyAgICAgICAgICAgIGFzY2lpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3Ro
KTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkK
KyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4Vmlv
bGF0aW9uUG9zaXRpb24pOworICAgICAgICAgICAgICAgIGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0
b0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBhc2NpaTsKKyAgICB9CisgICAgCisgICAgY29uc3Qgc2l6ZV90IG1heERv
bWFpbkxlbmd0aCA9IDY0OworICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW21heERvbWFpbkxlbmd0
aF07CisgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKKyAgICBVSUROQUluZm8g
cHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOworICAgIGludDMyX3Qg
bnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFs
RG9tYWluTmFtZVRyYW5zY29kZXIoKSwgU3RyaW5nVmlldyhkb21haW4pLnVwY29udmVydGVkQ2hh
cmFjdGVycygpLCBkb21haW4ubGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVyLCBtYXhEb21haW5MZW5n
dGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKKyAgICBBU1NFUlQobnVtQ2hhcmFjdGVy
c0NvbnZlcnRlZCA8PSBzdGF0aWNfY2FzdDxpbnQzMl90PihtYXhEb21haW5MZW5ndGgpKTsKKwor
ICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsK
KyAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsg
KytpKSB7CisgICAgICAgICAgICBBU1NFUlQoaXNBU0NJSShob3N0bmFtZUJ1ZmZlcltpXSkpOwor
ICAgICAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoaG9zdG5hbWVCdWZmZXJbaV0pKTsKKyAg
ICAgICAgfQorICAgICAgICBhc2NpaS5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3Rl
cnNDb252ZXJ0ZWQpOworICAgICAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcoYXNjaWkuZGF0
YSgpLCBhc2NpaS5zaXplKCkpKQorICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9y
Rm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICByZXR1cm4gYXNjaWk7CisgICAg
fQorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK2Jvb2wgVVJMUGFyc2VyOjpoYXNGb3Ji
aWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IFVSTFBhcnNlcjo6TENoYXJCdWZmZXImIGFzY2lpRG9t
YWluKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXNjaWlEb21haW4uc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbltp
XSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OnBh
cnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7Cisg
ICAgQVNTRVJUKCppdGVyYXRvciA9PSAnOicpOworICAgIGF1dG8gY29sb25JdGVyYXRvciA9IGl0
ZXJhdG9yOworICAgIGFkdmFuY2UoaXRlcmF0b3IsIGNvbG9uSXRlcmF0b3IpOworICAgIHVpbnQz
Ml90IHBvcnQgPSAwOworICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgeworICAg
ICAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0gY3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3Ip
IC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9
IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRM
ZW5ndGg7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHNpemVfdCBkaWdpdENvdW50ID0gMDsKKyAgICBib29s
IGxlYWRpbmdaZXJvcyA9IGZhbHNlOworICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytp
dGVyYXRvcikgeworICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9y
KSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKml0
ZXJhdG9yKSkgeworICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnMCcgJiYgIWRpZ2l0Q291
bnQpCisgICAgICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKKyAgICAgICAgICAgICsr
ZGlnaXRDb3VudDsKKyAgICAgICAgICAgIHBvcnQgPSBwb3J0ICogMTAgKyAqaXRlcmF0b3IgLSAn
MCc7CisgICAgICAgICAgICBpZiAocG9ydCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+
OjptYXgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChwb3J0ICYmIGxlYWRp
bmdaZXJvcykKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgIAor
ICAgIGlmICghcG9ydCAmJiBkaWdpdENvdW50ID4gMSkKKyAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGNvbG9uSXRlcmF0b3IpOworCisgICAgQVNTRVJUKHBvcnQgPT0gc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KHBvcnQpKTsKKyAgICBpZiAoVU5MSUtFTFkoZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwYXJz
ZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCkpID09IHN0YXRpY19jYXN0PHVpbnQxNl90
Pihwb3J0KSkpCisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOworICAgICAgICBBU1NFUlQo
cG9ydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOworICAgICAgICBh
cHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQxNl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4o
cG9ydCkpOworICAgIH0KKworICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRp
b24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRM
ZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBw
b3J0TGVuZ3RoOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5k
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaXRlcmF0b3IgPT0gJ1snKSB7CisgICAgICAg
IGF1dG8gaXB2NkVuZCA9IGl0ZXJhdG9yOworICAgICAgICB3aGlsZSAoIWlwdjZFbmQuYXRFbmQo
KSAmJiAqaXB2NkVuZCAhPSAnXScpCisgICAgICAgICAgICArK2lwdjZFbmQ7CisgICAgICAgIGlm
IChpcHY2RW5kLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlm
IChhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+KGl0ZXJhdG9yLCBpcHY2RW5kKSkpIHsKKyAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjYo
YWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpKSB7Cisg
ICAgICAgICAgICAgICAgYWR2YW5jZShpcHY2RW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlw
djZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCA9PSAnOicpIHsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGlwdjZFbmQpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXB2NkVuZCk7
CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fdXJs
SXNTcGVjaWFsKSB7CisgICAgICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRv
cikgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikp
KSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqaXRlcmF0
b3IgPT0gJzonKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpICYmICppdGVyYXRvciAhPSAn
JScpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHV0ZjhQZXJj
ZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKKyAgICAgICAgfQorICAg
ICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBwYXJzZVBvcnQoaXRlcmF0b3IpOworICAgIH0KKyAgICAKKyAgICBpZiAoTElLRUxZKCFtX2hv
c3RIYXNQZXJjZW50T3JOb25BU0NJSSkpIHsKKyAgICAgICAgYXV0byBob3N0SXRlcmF0b3IgPSBp
dGVyYXRvcjsKKyAgICAgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7
CisgICAgICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2lu
dCgqaXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgICAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRIb3N0KGhvc3RJdGVyYXRvciwgQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaG9zdEl0ZXJhdG9yLCBpdGVyYXRvcikpOworICAg
ICAgICBpZiAoYWRkcmVzcykgeworICAgICAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZh
bHVlKCkpOworICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0
ZXJhdG9yKTsKKyAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgICAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3Ip
OworICAgICAgICB9CisgICAgICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdF
cnJvcjo6RmFpbHVyZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yICg7
IGhvc3RJdGVyYXRvciAhPSBpdGVyYXRvcjsgKytob3N0SXRlcmF0b3IpIHsKKyAgICAgICAgICAg
IGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaG9zdEl0ZXJhdG9yKSkpIHsKKyAgICAgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJ
VXBwZXIoKmhvc3RJdGVyYXRvcikpKQorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbiho
b3N0SXRlcmF0b3IpOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93
ZXIoKmhvc3RJdGVyYXRvcikpOworICAgICAgICB9CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0
RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGhvc3RJdGVyYXRvcik7CisgICAg
ICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91
cmwubV9ob3N0RW5kOworICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6
bWF4UG9ydExlbmd0aCk7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBjb25zdCBhdXRvIGhvc3RC
ZWdpbiA9IGl0ZXJhdG9yOworICAgIAorICAgIExDaGFyQnVmZmVyIHV0ZjhFbmNvZGVkOworICAg
IGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgeworICAgICAgICBpZiAoVU5M
SUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihob3N0QmVnaW4pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
aWYgKFVOTElLRUxZKCFpc0FTQ0lJKCppdGVyYXRvcikpKQorICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGhvc3RCZWdpbik7CisKKyAgICAgICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUigqaXRl
cmF0b3IpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1aW50OF90IGJ1ZmZl
cltVOF9NQVhfTEVOR1RIXTsKKyAgICAgICAgaW50MzJfdCBvZmZzZXQgPSAwOworICAgICAgICBV
OF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCAqaXRlcmF0b3IpOworICAgICAgICB1dGY4
RW5jb2RlZC5hcHBlbmQoYnVmZmVyLCBvZmZzZXQpOworICAgIH0KKyAgICBMQ2hhckJ1ZmZlciBw
ZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUodXRmOEVuY29kZWQuZGF0YSgpLCB1dGY4RW5j
b2RlZC5zaXplKCksIGhvc3RCZWdpbik7CisgICAgU3RyaW5nIGRvbWFpbiA9IFN0cmluZzo6ZnJv
bVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOworICAg
IGlmIChkb21haW4uaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZG9t
YWluICE9IFN0cmluZ1ZpZXcocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5z
aXplKCkpKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKyAgICBhdXRvIGFz
Y2lpRG9tYWluID0gZG9tYWluVG9BU0NJSSgqZG9tYWluLmltcGwoKSwgaG9zdEJlZ2luKTsKKyAg
ICBpZiAoIWFzY2lpRG9tYWluIHx8IGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlEb21h
aW4udmFsdWUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBMQ2hhckJ1ZmZlciYgYXNj
aWlEb21haW5WYWx1ZSA9IGFzY2lpRG9tYWluLnZhbHVlKCk7CisgICAgY29uc3QgTENoYXIqIGFz
Y2lpRG9tYWluQ2hhcmFjdGVycyA9IGFzY2lpRG9tYWluVmFsdWUuZGF0YSgpOworCisgICAgYXV0
byBhZGRyZXNzID0gcGFyc2VJUHY0SG9zdChob3N0QmVnaW4sIENvZGVQb2ludEl0ZXJhdG9yPExD
aGFyPihhc2NpaURvbWFpblZhbHVlLmJlZ2luKCksIGFzY2lpRG9tYWluVmFsdWUuZW5kKCkpKTsK
KyAgICBpZiAoYWRkcmVzcykgeworICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUo
KSk7CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7
CisgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgfQorICAgIGlmIChhZGRyZXNzLmVy
cm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihhc2NpaURvbWFpbkNoYXJhY3RlcnMsIGFzY2lp
RG9tYWluVmFsdWUuc2l6ZSgpKTsKKyAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRp
b24oaXRlcmF0b3IpOworICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJu
IHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVS
TERlY29kZShTdHJpbmdWaWV3IGlucHV0KQoreworICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0Zjgo
U3RyaWN0Q29udmVyc2lvbik7CisgICAgaWYgKHV0ZjguaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgYXV0byBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgo
KSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBw
ZXJjZW50RGVjb2RlZC5zaXplKCkpOworfQorCisvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5v
cmcvI2NvbmNlcHQtdXJsZW5jb2RlZC1wYXJzZXIKK2F1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVu
Y29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+IFVSTEVuY29kZWRGb3JtCit7CisgICAgVVJM
RW5jb2RlZEZvcm0gb3V0cHV0OworICAgIGZvciAoU3RyaW5nVmlldyBieXRlcyA6IGlucHV0LnNw
bGl0KCcmJykpIHsKKyAgICAgICAgYXV0byBlcXVhbEluZGV4ID0gYnl0ZXMuZmluZCgnPScpOwor
ICAgICAgICBpZiAoZXF1YWxJbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICAgICAgYXV0byBu
YW1lID0gZm9ybVVSTERlY29kZShieXRlcy50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7
CisgICAgICAgICAgICBpZiAobmFtZSkKKyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsg
bmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJ
bmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOworICAgICAgICAgICAgYXV0byB2
YWx1ZSA9IGZvcm1VUkxEZWNvZGUoYnl0ZXMuc3Vic3RyaW5nKGVxdWFsSW5kZXggKyAxKS50b1N0
cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7CisgICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1
ZSkKKyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52
YWx1ZSgpIH0pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK3N0
YXRpYyB2b2lkIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3JtKGNvbnN0IFN0cmluZyYgaW5wdXQsIFZl
Y3RvcjxMQ2hhcj4mIG91dHB1dCkKK3sKKyAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmlj
dENvbnZlcnNpb24pOworICAgIGNvbnN0IGNoYXIqIGRhdGEgPSB1dGY4LmRhdGEoKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHV0ZjgubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBjb25z
dCBjaGFyIGJ5dGUgPSBkYXRhW2ldOworICAgICAgICBpZiAoYnl0ZSA9PSAweDIwKQorICAgICAg
ICAgICAgb3V0cHV0LmFwcGVuZCgweDJCKTsKKyAgICAgICAgZWxzZSBpZiAoYnl0ZSA9PSAweDJB
CisgICAgICAgICAgICB8fCBieXRlID09IDB4MkQKKyAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgy
RQorICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHgzMCAmJiBieXRlIDw9IDB4MzkpCisgICAgICAg
ICAgICB8fCAoYnl0ZSA+PSAweDQxICYmIGJ5dGUgPD0gMHg1QSkKKyAgICAgICAgICAgIHx8IGJ5
dGUgPT0gMHg1RgorICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHg2MSAmJiBieXRlIDw9IDB4N0Ep
KSAvLyBGSVhNRTogUHV0IHRoZXNlIGluIHRoZSBjaGFyYWN0ZXJDbGFzc1RhYmxlIHRvIGF2b2lk
IGJyYW5jaGVzLgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChieXRlKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnl0ZSwgb3V0cHV0KTsKKyAgICB9Cit9
CisgICAgCitTdHJpbmcgVVJMUGFyc2VyOjpzZXJpYWxpemUoY29uc3QgVVJMRW5jb2RlZEZvcm0m
IHR1cGxlcykKK3sKKyAgICBpZiAodHVwbGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIFZlY3RvcjxMQ2hhcj4gb3V0cHV0OworICAgIGZvciAoYXV0byYgdHVwbGUgOiB0
dXBsZXMpIHsKKyAgICAgICAgaWYgKCFvdXRwdXQuaXNFbXB0eSgpKQorICAgICAgICAgICAgb3V0
cHV0LmFwcGVuZCgnJicpOworICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS5r
ZXksIG91dHB1dCk7CisgICAgICAgIG91dHB1dC5hcHBlbmQoJz0nKTsKKyAgICAgICAgc2VyaWFs
aXplVVJMRW5jb2RlZEZvcm0odHVwbGUudmFsdWUsIG91dHB1dCk7CisgICAgfQorICAgIHJldHVy
biBTdHJpbmc6OmFkb3B0KFdURk1vdmUob3V0cHV0KSk7Cit9CisKK2NvbnN0IFVJRE5BJiBVUkxQ
YXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpCit7CisgICAgc3RhdGlj
IFVJRE5BKiBlbmNvZGVyOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBVRXJyb3JDb2RlIGVycm9y
ID0gVV9aRVJPX0VSUk9SOworICAgICAgICAvLyBXYXJuaW5nOiBQbGVhc2UgY29udGFjdCBhIFdl
YktpdEdUSysgZGV2ZWxvcGVyIGlmIGNoYW5naW5nIHRoZXNlIGZsYWdzLgorICAgICAgICAvLyBU
aGV5IHNob3VsZCBiZSBzeW5jZWQgd2l0aCBlcGh5X3VyaV9kZWNvZGUoKSBpbiBlcGh5LXVyaS1o
ZWxwZXJzLmMuCisgICAgICAgIGVuY29kZXIgPSB1aWRuYV9vcGVuVVRTNDYoVUlETkFfQ0hFQ0tf
QklESSB8IFVJRE5BX0NIRUNLX0NPTlRFWFRKIHwgVUlETkFfTk9OVFJBTlNJVElPTkFMX1RPX1VO
SUNPREUgfCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fQVNDSUksICZlcnJvcik7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChlbmNvZGVyKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKmVuY29kZXI7Cit9CisKK2Jvb2wgVVJM
UGFyc2VyOjphbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAg
ICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNc
biVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzIiwKKyAgICAgICAgYS5tX2lz
VmFsaWQsCisgICAgICAgIGEubV9jYW5ub3RCZUFCYXNlVVJMLAorICAgICAgICBhLm1fcHJvdG9j
b2xJc0luSFRUUEZhbWlseSwKKyAgICAgICAgYS5tX3NjaGVtZUVuZCwKKyAgICAgICAgYS5tX3Vz
ZXJTdGFydCwKKyAgICAgICAgYS5tX3VzZXJFbmQsCisgICAgICAgIGEubV9wYXNzd29yZEVuZCwK
KyAgICAgICAgYS5tX2hvc3RFbmQsCisgICAgICAgIGEubV9ob3N0RW5kICsgYS5tX3BvcnRMZW5n
dGgsCisgICAgICAgIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCisgICAgICAgIGEubV9wYXRoRW5k
LAorICAgICAgICBhLm1fcXVlcnlFbmQsCisgICAgICAgIGEubV9zdHJpbmcudXRmOCgpLmRhdGEo
KSwKKyAgICAgICAgYi5tX2lzVmFsaWQsCisgICAgICAgIGIubV9jYW5ub3RCZUFCYXNlVVJMLAor
ICAgICAgICBiLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKKyAgICAgICAgYi5tX3NjaGVtZUVu
ZCwKKyAgICAgICAgYi5tX3VzZXJTdGFydCwKKyAgICAgICAgYi5tX3VzZXJFbmQsCisgICAgICAg
IGIubV9wYXNzd29yZEVuZCwKKyAgICAgICAgYi5tX2hvc3RFbmQsCisgICAgICAgIGIubV9ob3N0
RW5kICsgYi5tX3BvcnRMZW5ndGgsCisgICAgICAgIGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCisg
ICAgICAgIGIubV9wYXRoRW5kLAorICAgICAgICBiLm1fcXVlcnlFbmQsCisgICAgICAgIGIubV9z
dHJpbmcudXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4gYS5tX3N0cmluZyA9PSBiLm1fc3Ry
aW5nCisgICAgICAgICYmIGEubV9pc1ZhbGlkID09IGIubV9pc1ZhbGlkCisgICAgICAgICYmIGEu
bV9jYW5ub3RCZUFCYXNlVVJMID09IGIubV9jYW5ub3RCZUFCYXNlVVJMCisgICAgICAgICYmIGEu
bV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID09IGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5Cisg
ICAgICAgICYmIGEubV9zY2hlbWVFbmQgPT0gYi5tX3NjaGVtZUVuZAorICAgICAgICAmJiBhLm1f
dXNlclN0YXJ0ID09IGIubV91c2VyU3RhcnQKKyAgICAgICAgJiYgYS5tX3VzZXJFbmQgPT0gYi5t
X3VzZXJFbmQKKyAgICAgICAgJiYgYS5tX3Bhc3N3b3JkRW5kID09IGIubV9wYXNzd29yZEVuZAor
ICAgICAgICAmJiBhLm1faG9zdEVuZCA9PSBiLm1faG9zdEVuZAorICAgICAgICAmJiBhLm1fcG9y
dExlbmd0aCA9PSBiLm1fcG9ydExlbmd0aAorICAgICAgICAmJiBhLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID09IGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gKKyAgICAgICAgJiYgYS5tX3BhdGhFbmQgPT0g
Yi5tX3BhdGhFbmQKKyAgICAgICAgJiYgYS5tX3F1ZXJ5RW5kID09IGIubV9xdWVyeUVuZDsKK30K
KworYm9vbCBVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmIHVy
bCkKK3sKKyAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kIDw9IHVybC5tX3VzZXJTdGFydAorICAg
ICAgICAmJiB1cmwubV91c2VyU3RhcnQgPD0gdXJsLm1fdXNlckVuZAorICAgICAgICAmJiB1cmwu
bV91c2VyRW5kIDw9IHVybC5tX3Bhc3N3b3JkRW5kCisgICAgICAgICYmIHVybC5tX3Bhc3N3b3Jk
RW5kIDw9IHVybC5tX2hvc3RFbmQKKyAgICAgICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5tX3Bv
cnRMZW5ndGggPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoCisgICAgICAgICYmIHVybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA8PSB1cmwubV9wYXRoRW5kCisgICAgICAgICYmIHVybC5tX3BhdGhF
bmQgPD0gdXJsLm1fcXVlcnlFbmQKKyAgICAgICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1f
c3RyaW5nLmxlbmd0aCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1VS
TFBhcnNlci5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XVEYvd3RmL1VSTFBhcnNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDIxICsyNCwxOSBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvVVJMUGFy
c2VyLmg+CiAKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVk
ZSA8dW5pY29kZS91aWRuYS5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdXR5cGVzLmg+CiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgewogCiAjZGVmaW5lIFVSTF9QQVJTRVJfREVC
VUdHSU5HIDAKIAogI2lmIFVSTF9QQVJTRVJfREVCVUdHSU5HCi0jZGVmaW5lIFVSTF9QQVJTRVJf
TE9HKC4uLikgTE9HKFVSTFBhcnNlciwgX19WQV9BUkdTX18pCisjZGVmaW5lIFVSTF9QQVJTRVJf
TE9HKC4uLikgV1RGTG9nQWx3YXlzKF9fVkFfQVJHU19fKQogI2Vsc2UKICNkZWZpbmUgVVJMX1BB
UlNFUl9MT0coLi4uKQogI2VuZGlmCkBAIC00MzEsNyArNDI5LDcgQEAgQUxXQVlTX0lOTElORSBz
dGF0aWMgYm9vbCBzaG91bGRQZXJjZW50RQogCiBib29sIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZv
RW5jb2RlU2V0KFVDaGFyIGMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmlzSW5Vc2VySW5mb0Vu
Y29kZVNldChjKTsKKyAgICByZXR1cm4gV1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQoYyk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFVSTFBhcnNlcjo6UmVwb3J0U3lu
dGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZpb2xhdGlvbj4KQEAgLTIwODcsMTAgKzIwODUsMTAg
QEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlQXV0aG9yaXR5KENvZGVQb2ludAogICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V2ViQ29yZTo6aXNJblVzZXJJbmZvRW5jb2RlU2V0
PihpdGVyYXRvcik7CisgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPFdURjo6aXNJblVzZXJJbmZv
RW5jb2RlU2V0PihpdGVyYXRvcik7CiAgICAgfQogICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQo
KTsgYWR2YW5jZShpdGVyYXRvcikpCi0gICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPFdlYkNvcmU6
OmlzSW5Vc2VySW5mb0VuY29kZVNldD4oaXRlcmF0b3IpOworICAgICAgICB1dGY4UGVyY2VudEVu
Y29kZTxXVEY6OmlzSW5Vc2VySW5mb0VuY29kZVNldD4oaXRlcmF0b3IpOwogICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwogICAgIGlmICghbV91cmwu
bV91c2VyRW5kKQogICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3Bhc3N3b3JkRW5k
OwpAQCAtMjkyMyw0ICsyOTIxLDQgQEAgYm9vbCBVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29u
c2lzdGVudAogICAgICAgICAmJiB1cmwubV9xdWVyeUVuZCA8PSB1cmwubV9zdHJpbmcubGVuZ3Ro
KCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRl
eDogU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvVVJMUGFyc2VyLmgJKHJldmlzaW9uIDIzNjc2NikJKGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMUGFyc2VyLmg6MjM2NzY2KQorKysgU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworc3RydWN0IFVJRE5BOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQb2lu
dEl0ZXJhdG9yOworCitjbGFzcyBVUkxQYXJzZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQ
T1JUIFVSTFBhcnNlcihjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxU
ZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7CisgICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJs
OyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25z
dCBVUkwmLCBjb25zdCBVUkwmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpbnRl
cm5hbFZhbHVlc0NvbnNpc3RlbnQoY29uc3QgVVJMJik7CisgICAgCisgICAgdHlwZWRlZiBWZWN0
b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBVUkxFbmNvZGVkRm9ybTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVVJMRW5jb2RlZEZvcm0gcGFyc2VVUkxFbmNvZGVkRm9y
bShTdHJpbmdWaWV3KTsKKyAgICBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBVUkxFbmNv
ZGVkRm9ybSYpOworCisgICAgc3RhdGljIGNvbnN0IFVJRE5BJiBpbnRlcm5hdGlvbmFsRG9tYWlu
TmFtZVRyYW5zY29kZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQo
VUNoYXIpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTcGVjaWFsU2NoZW1l
KGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG1heWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2No
ZW1lKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVm
YXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKKyAgICBmcmllbmQgc3RkOjpvcHRpb25h
bDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKKworICAgIFVS
TCBtX3VybDsKKyAgICBWZWN0b3I8TENoYXI+IG1fYXNjaWlCdWZmZXI7CisgICAgYm9vbCBtX3Vy
bElzU3BlY2lhbCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3VybElzRmlsZSB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSB7IGZhbHNlIH07CisgICAgU3RyaW5n
IG1faW5wdXRTdHJpbmc7CisgICAgY29uc3Qgdm9pZCogbV9pbnB1dEJlZ2luIHsgbnVsbHB0ciB9
OworCisgICAgYm9vbCBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiB7IGZhbHNlIH07CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdElubGluZUJ1ZmZlclNpemUgPSAyMDQ4OworICAg
IHVzaW5nIExDaGFyQnVmZmVyID0gVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6
ZT47CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNlKGNv
bnN0IENoYXJhY3RlclR5cGUqLCBjb25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYsIGNv
bnN0IFVSTFRleHRFbmNvZGluZyopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHZvaWQgcGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4p
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgcGFyc2VIb3N0QW5k
UG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZVBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mKTsKKworICAgIHZvaWQgZmFpbHVyZSgpOworICAgIGVudW0gY2xhc3MgUmVw
b3J0U3ludGF4VmlvbGF0aW9uIHsgTm8sIFllcyB9OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24g
PSBSZXBvcnRTeW50YXhWaW9sYXRpb246Olllcz4KKyAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKSB7IGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgcmVwb3J0U3ludGF4VmlvbGF0aW9uPihpdGVyYXRvciwgaXRlcmF0b3IpOyB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uID0gUmVw
b3J0U3ludGF4VmlvbGF0aW9uOjpZZXM+CisgICAgdm9pZCBhZHZhbmNlKENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiB2b2lkIHN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJv
b2wgaXNQZXJjZW50RW5jb2RlZERvdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1dpbmRvd3NEcml2
ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBib29sIGlzRG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJv
b2wgc2hvdWxkQ29weUZpbGVVUkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgY2hlY2tMb2NhbGhvc3RD
b2RlUG9pbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBVQ2hhcjMyKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQXRMb2NhbGhvc3QoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIGJvb2wgaXNMb2NhbGhvc3QoU3Ry
aW5nVmlldyk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb25z
dW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVEb3Vi
bGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5kV2luZG93c0RyaXZl
TGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IGN1cnJlbnRQb3NpdGlvbihjb25zdCBDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVu
c2lnbmVkSW50ZWdlclR5cGU+IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25l
ZEludGVnZXJUeXBlKTsKKyAgICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiks
IHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0ZDo6b3B0aW9uYWw8TENoYXJCdWZmZXI+IGRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYsIGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZp
b2xhdGlvblBvc2l0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBM
Q2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBjb25zdCBDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Q
b3NpdGlvbik7CisgICAgc3RhdGljIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENo
YXIqLCBzaXplX3QpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERl
Y29kZShTdHJpbmdWaWV3IGlucHV0KTsKKyAgICBzdGF0aWMgYm9vbCBoYXNGb3JiaWRkZW5Ib3N0
Q29kZVBvaW50KGNvbnN0IExDaGFyQnVmZmVyJik7CisgICAgdm9pZCBwZXJjZW50RW5jb2RlQnl0
ZSh1aW50OF90KTsKKyAgICB2b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoVUNoYXIzMik7CisgICAg
dm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIHZvaWQg
YXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IHNpemUp
IHsgYXBwZW5kVG9BU0NJSUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFy
YWN0ZXJzKSwgc2l6ZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2
b2lkIGVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0
IFVSTFRleHRFbmNvZGluZyYsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAg
ICB2b2lkIGNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmluZyYsIHNpemVfdCBsZW5ndGgp
OworICAgIGJvb2wgY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJik7CisgICAg
U3RyaW5nVmlldyBwYXJzZWREYXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpOwor
ICAgIFVDaGFyIHBhcnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlvbik7CisKKyAgICB1c2luZyBJ
UHY0QWRkcmVzcyA9IHVpbnQzMl90OworICAgIHZvaWQgc2VyaWFsaXplSVB2NChJUHY0QWRkcmVz
cyk7CisgICAgZW51bSBjbGFzcyBJUHY0UGFyc2luZ0Vycm9yOworICAgIGVudW0gY2xhc3MgSVB2
NFBpZWNlUGFyc2luZ0Vycm9yOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGVG
b3JTeW50YXhWaW9sYXRpb24sIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPElQdjRB
ZGRyZXNzLCBJUHY0UGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24+JiwgQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IEV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gcGFy
c2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBib29sJiBzeW50
YXhWaW9sYXRpb24pOworICAgIHVzaW5nIElQdjZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50MTZf
dCwgOD47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25h
bDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rk
OjpvcHRpb25hbDxJUHY0QWRkcmVzcz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNl
KHVpbnQxNl90IHBpZWNlKTsKKyAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOwor
CisgICAgZW51bSBjbGFzcyBVUkxQYXJ0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgY29weVVSTFBhcnRzVW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0LCBj
b25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGNvbnN0IFVSTFRleHRFbmNv
ZGluZyomKTsKKyAgICBzdGF0aWMgc2l6ZV90IHVybExlbmd0aFVudGlsUGFydChjb25zdCBVUkwm
LCBVUkxQYXJ0KTsKKyAgICB2b2lkIHBvcFBhdGgoKTsKKyAgICBib29sIHNob3VsZFBvcFBhdGgo
dW5zaWduZWQpOworfTsKKworfQpJbmRleDogU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmgJKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwzNyAr
MjUsMzggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3
dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogc3RydWN0IFVJRE5BOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
V1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY2xhc3MgQ29kZVBvaW50
SXRlcmF0b3I7CiAKIGNsYXNzIFVSTFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgVVJMUGFyc2VyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYgPSB7IH0sIGNvbnN0IFVSTFRl
eHRFbmNvZGluZyogPSBudWxscHRyKTsKLSAgICBVUkwgcmVzdWx0KCkgeyByZXR1cm4gbV91cmw7
IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGFsbFZhbHVlc0VxdWFsKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGludGVy
bmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgYWxsVmFsdWVzRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGludGVybmFsVmFsdWVzQ29uc2lzdGVudChj
b25zdCBVUkwmKTsKICAgICAKLSAgICB0eXBlZGVmIFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxT
dHJpbmcsIFN0cmluZz4+IFVSTEVuY29kZWRGb3JtOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBVUkxFbmNvZGVkRm9ybSBwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcpOwotICAgIHN0
YXRpYyBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IFVSTEVuY29kZWRGb3JtJik7CisgICAgdXNpbmcg
VVJMRW5jb2RlZEZvcm0gPSBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+
PjsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVSTEVuY29kZWRGb3JtIHBhcnNlVVJM
RW5jb2RlZEZvcm0oU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBT
dHJpbmcgc2VyaWFsaXplKGNvbnN0IFVSTEVuY29kZWRGb3JtJik7CisKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgaXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1l
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBt
YXliZUNhbm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAKICAgICBzdGF0
aWMgY29uc3QgVUlETkEmIGludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpOwogICAg
IHN0YXRpYyBib29sIGlzSW5Vc2VySW5mb0VuY29kZVNldChVQ2hhcik7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBpc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF5YmVD
YW5vbmljYWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotCiBwcml2YXRlOgorICAg
IFVSTFBhcnNlcihjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0
RW5jb2RpbmcqID0gbnVsbHB0cik7CisgICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9
CisKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90
b2NvbChTdHJpbmdWaWV3KTsKICAgICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVm
YXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKKyAgICBmcmllbmQgY2xhc3MgVVJMOwog
CiAgICAgVVJMIG1fdXJsOwogICAgIFZlY3RvcjxMQ2hhcj4gbV9hc2NpaUJ1ZmZlcjsKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAJKHJldmlzaW9uIDIzNjc2NikJKGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwOjIzNjc2NikKKysrIFNvdXJjZS9X
VEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNGVVJMRXh0cmFz
LmgiCisKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZy
b21CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwp
Cit7CisgICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBp
cyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVu
dHMKKyAgICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5j
dGlvbiBpcyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCisg
ICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRp
ZmZlcmVudCBlbmNvZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjaworICAgIC8v
IG9udG8gdXNpbmcgSVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMo
MCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIGJhc2VVUkwsIHRydWUpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJ
U09MYXRpbjEsIGJhc2VVUkwsIHRydWUpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lk
IGdldFVSTEJ5dGVzKENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQoreworICAg
IENGSW5kZXggYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7CisgICAgcmVz
dWx0LnJlc2l6ZShieXRlc0xlbmd0aCk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJM
R2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5
dGVzTGVuZ3RoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9
PSBieXRlc0xlbmd0aCk7Cit9CisKK3ZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3Ry
aW5nJiByZXN1bHQpCit7CisgICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXMo
dXJsLCAwLCAwKTsKKyAgICBjaGFyKiBieXRlczsKKyAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdV
bmluaXRpYWxpemVkKGJ5dGVzTGVuZ3RoLCBieXRlcyk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0
aCA9IENGVVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBi
eXRlc0xlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGgg
PT0gYnl0ZXNMZW5ndGgpOworfQorCitib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNm
VVJMLCBjb25zdCBVUkwmIHVybCkKK3sKKyAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSk7CisKKyAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3Jk
KCkpCisgICAgICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwg
eyBjZlVSTCB9KTsKKworICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXMo
Y2ZVUkwsIGJ5dGVzKTsKKyAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihi
eXRlcy5zaXplKCkpIH07CisKKyAgICBpZiAoIXVybC5oYXNQYXRoKCkpCisgICAgICAgIHJldHVy
biBTdHJpbmdWaWV3IHsgdXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7CisKKyAgICBhdXRv
IHVybFdpdGhvdXRQYXRoID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygw
LCB1cmwucGF0aFN0YXJ0KCkgKyAxKTsKKyAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0
aCh1cmxXaXRob3V0UGF0aCk7Cit9CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
VEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsy
NiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCiAK
LSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV1RGIHsKIAog
UmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCiB7CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9jZi9DRlVSTEV4dHJhcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NmL0NGVVJM
RXh0cmFzLmgJKHJldmlzaW9uIDIzNjc2NikJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvQ0ZVUkxFeHRyYXMuaDoyMzY3NjYpCisrKyBTb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJh
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IENGVVJMRXh0cmFzX2gKKyNkZWZpbmUgQ0ZVUkxFeHRyYXNfaAorCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFVSTDsKK3R5cGVkZWYgVmVjdG9y
PGNoYXIsIDUxMj4gVVJMQ2hhckJ1ZmZlcjsKKworV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENG
VVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgQ0ZVUkxS
ZWYgYmFzZVVSTCA9IDApOworV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJl
ZiwgVVJMQ2hhckJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRVUkxCeXRlcyhDRlVS
TFJlZiwgQ1N0cmluZyYpOworCitib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmLCBjb25z
dCBVUkwmKTsKKworfQorCisjZW5kaWYgLy8gQ0ZVUkxFeHRyYXNfaAoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuaApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmgJKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDE0ICszMCwxNCBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgewogCiBjbGFz
cyBVUkw7CiB0eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IFVSTENoYXJCdWZmZXI7CiAKLVdFQkNP
UkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0
IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VVUkwgPSAwKTsKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKLVdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIENTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihjb25zdCBjaGFyKiwg
c2l6ZV90LCBDRlVSTFJlZiBiYXNlVVJMID0gMCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBn
ZXRVUkxCeXRlcyhDRlVSTFJlZiwgVVJMQ2hhckJ1ZmZlciYpOworV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIENTdHJpbmcmKTsKIAogYm9vbCBpc0NGVVJMU2Ft
ZU9yaWdpbihDRlVSTFJlZiwgY29uc3QgVVJMJik7CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2Nm
L1VSTENGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAJKHJl
dmlzaW9uIDIzNjc2NikJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3Bw
OjIzNjc2NikKKysrIFNvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkwuaCIK
KworI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCisjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCisjaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitVUkw6OlVSTChDRlVSTFJl
ZiB1cmwpCit7CisgICAgaWYgKCF1cmwpIHsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUg
YmFzZSBVUkwgaGVyZT8KKyAgICBDU3RyaW5nIHVybEJ5dGVzOworICAgIGdldFVSTEJ5dGVzKHVy
bCwgdXJsQnl0ZXMpOworICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsKKyAg
ICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKworI2lmICFVU0UoRk9VTkRBVElPTikKK1Jl
dGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/CisgICAgLy8gQ3Vy
cmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGlu
IHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAorICAgIC8vIHdoaWNoIGlzIGNsZWFybHkgd3Jvbmcu
CisgICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7CisgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7Cisg
ICAgYXV0byBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKKworICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWlzQ0ZV
UkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgcmV0dXJuIGNmVVJMOworfQorI2VuZGlmCisKK1N0cmluZyBVUkw6OmZpbGVTeXN0
ZW1QYXRoKCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gY3JlYXRl
Q0ZVUkwoKTsKKyAgICBpZiAoIWNmVVJMKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NGVVJMV2lu
ZG93c1BhdGhTdHlsZTsKKyNlbHNlCisgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NG
VVJMUE9TSVhQYXRoU3R5bGU7CisjZW5kaWYKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENvcHlG
aWxlU3lzdGVtUGF0aChjZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7Cit9CisKK30KClBy
b3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE4
ICsyNCwxNCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpbmNsdWRlICJDRlVSTEV4dHJhcy5oIgogI2luY2x1
ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUg
IlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKK25hbWVzcGFjZSBXVEYgewogCiBVUkw6OlVSTChDRlVSTFJlZiB1cmwpCiB7CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLmgJKHJldmlzaW9uIDIzNjc2NikJKGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oOjIzNjc2NikKKysrIFNv
dXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxMiwgMjAxNCBBcHBs
ZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworQGNsYXNzIE5TU3RyaW5nOworQGNsYXNzIE5TVVJMOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICp1c2VyVmlzaWJs
ZVN0cmluZyhOU1VSTCAqKTsKK1dFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeUNhbm9uaWNhbGl6
aW5nVVJMKE5TVVJMICopOworV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRT
dHJpbmcoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOyAvLyBSZXR1cm4gdmFsdWUgb2Ygbmls
IG1lYW5zIGVycm9yLgorV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdVc2VySW5m
byhOU1VSTCAqKTsKK1dFQkNPUkVfRVhQT1JUIEJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0
aFJhbmdlKE5TU3RyaW5nICosIE5TUmFuZ2UsIEJPT0wqIGVycm9yKTsKK1dFQkNPUkVfRVhQT1JU
IEJPT0wgaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICosIE5TUmFuZ2Us
IEJPT0wqIGVycm9yKTsKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZVdp
dGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFu
cyBlcnJvci4KK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdpdGhSYW5n
ZShOU1N0cmluZyAqLCBOU1JhbmdlKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJv
ci4KK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsg
Ly8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dFQkNPUkVfRVhQT1JUIE5TU3Ry
aW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBt
ZWFucyBlcnJvci4KK1dFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeVRydW5jYXRpbmdPbmVDaGFy
YWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwgKiwgQ0ZVUkxDb21wb25lbnRUeXBlKTsKK1dFQkNP
UkVfRVhQT1JUIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKiwgTlNVUkwgKmJhc2VVUkwpOwor
V0VCQ09SRV9FWFBPUlQgTlNEYXRhICpvcmlnaW5hbFVSTERhdGEoTlNVUkwgKik7CitXRUJDT1JF
X0VYUE9SVCBOU0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICosIENGVVJMQ29t
cG9uZW50VHlwZSk7CitXRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmlu
Z0RlcHJlY2F0ZWQoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOworCitOU1JhbmdlIHJhbmdl
T2ZVUkxTY2hlbWUoTlNTdHJpbmcgKik7CitXRUJDT1JFX0VYUE9SVCBCT09MIGlzVXNlclZpc2li
bGVVUkwoTlNTdHJpbmcgKik7CitXRUJDT1JFX0VYUE9SVCBCT09MIGxvb2tzTGlrZUFic29sdXRl
VVJMKE5TU3RyaW5nICopOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L2NvY29hL05TVVJMRXh0cmFzLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XVEYvd3Rm
L2NvY29hL05TVVJMRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDI2ICsyOSwyMSBAQAog
QGNsYXNzIE5TU3RyaW5nOwogQGNsYXNzIE5TVVJMOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Citu
YW1lc3BhY2UgV1RGIHsKIAotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3Ry
aW5nKE5TVVJMICopOwotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdV
UkwoTlNVUkwgKik7Ci1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmlu
ZyhOU1N0cmluZyAqLCBOU1VSTCAqYmFzZVVSTCk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVh
bnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5T
VVJMICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFu
Z2UoTlNTdHJpbmcgKiwgTlNSYW5nZSwgQk9PTCogZXJyb3IpOwotV0VCQ09SRV9FWFBPUlQgQk9P
TCBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSwgQk9P
TCogZXJyb3IpOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJh
bmdlKE5TU3RyaW5nICosIE5TUmFuZ2UpOyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVy
cm9yLgotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5T
U3RyaW5nICosIE5TUmFuZ2UpOyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgot
V0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICopOyAvLyBS
ZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcg
KmVuY29kZUhvc3ROYW1lKE5TU3RyaW5nICopOyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5z
IGVycm9yLgotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3Rl
ckJlZm9yZUNvbXBvbmVudChOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOwotV0VCQ09SRV9F
WFBPUlQgTlNVUkwgKlVSTFdpdGhEYXRhKE5TRGF0YSAqLCBOU1VSTCAqYmFzZVVSTCk7Ci1XRUJD
T1JFX0VYUE9SVCBOU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqKTsKLVdFQkNPUkVfRVhQ
T1JUIE5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKiwgQ0ZVUkxDb21wb25l
bnRUeXBlKTsKLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVw
cmVjYXRlZChOU1N0cmluZyAqLCBOU1VSTCAqYmFzZVVSTCk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
TlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopOworV1RGX0VYUE9SVF9QUklWQVRF
IE5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJM
KTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFU
RSBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICopOworV1RGX0VYUE9SVF9QUklW
QVRFIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsgLy8gUmV0dXJuIHZhbHVl
IG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAqZW5jb2Rl
SG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3Iu
CitXVEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJl
Zm9yZUNvbXBvbmVudChOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOworV1RGX0VYUE9SVF9Q
UklWQVRFIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKiwgTlNVUkwgKmJhc2VVUkwpOworV1RG
X0VYUE9SVF9QUklWQVRFIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOworV1RGX0VY
UE9SVF9QUklWQVRFIE5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKiwgQ0ZV
UkxDb21wb25lbnRUeXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJMV2l0aFVzZXJU
eXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOwogCiBOU1Jh
bmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGlz
VXNlclZpc2libGVVUkwoTlNTdHJpbmcgKik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGxvb2tzTGlr
ZUFic29sdXRlVVJMKE5TU3RyaW5nICopOworV1RGX0VYUE9SVF9QUklWQVRFIEJPT0wgaXNVc2Vy
VmlzaWJsZVVSTChOU1N0cmluZyAqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBCT09MIGxvb2tzTGlr
ZUFic29sdXRlVVJMKE5TU3RyaW5nICopOwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8v
IG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCShyZXZp
c2lvbiAyMzY3NjcpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW06MjM2NzY3KQorKysgU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiVVJMUGFyc2VyLmgiCisjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMu
aCIKKyNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvRnVu
Y3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbXBvcnQgPHd0Zi9PYmpjUnVu
dGltZUV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1Zl
Y3Rvci5oPgorI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgorI2ltcG9ydCA8dW5pY29kZS91aWRu
YS5oPgorI2ltcG9ydCA8dW5pY29kZS91c2NyaXB0Lmg+CisKKy8vIE5lZWRzIHRvIGJlIGJpZyBl
bm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBuYW1lLgorLy8gRm9yIGhvc3QgbmFtZXMgYmln
Z2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3Qg
Y2VydGFpbmx5IE9LLgorI2RlZmluZSBIT1NUX05BTUVfQlVGRkVSX0xFTkdUSCAyMDQ4CisjZGVm
aW5lIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIIDIwNDgKKwordHlwZWRlZiB2b2lkICgqIFN0cmlu
Z1JhbmdlQXBwbGllckZ1bmN0aW9uKShOU1N0cmluZyAqLCBOU1JhbmdlLCBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+Jik7CisKK3N0YXRpYyB1aW50MzJfdCBJRE5TY3JpcHRXaGl0ZUxpc3RbKFVT
Q1JJUFRfQ09ERV9MSU1JVCArIDMxKSAvIDMyXTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgYm9vbCBpc0FybWVuaWFuTG9va2FsaWtlQ2hhcmFjdGVyKFVDaGFyMzIgY29kZVBvaW50
KQoreworICAgIHJldHVybiBjb2RlUG9pbnQgPT0gMHgwNTQ4IHx8IGNvZGVQb2ludCA9PSAweDA1
NEQgfHwgY29kZVBvaW50ID09IDB4MDU3OCB8fCBjb2RlUG9pbnQgPT0gMHgwNTdEOworfQorCitz
dGF0aWMgYm9vbCBpc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKFVDaGFyMzIgY29kZVBvaW50KQor
eworICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgVVNjcmlwdENvZGUg
c2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQoY29kZVBvaW50LCAmZXJyb3IpOworICAgIGlmIChl
cnJvciAhPSBVX1pFUk9fRVJST1IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9y
IHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNjcmlwdHM6ICVkIiwgZXJyb3IpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHNjcmlwdCA9PSBVU0NSSVBUX0FSTUVO
SUFOOworfQorCisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29s
IGlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhckNvZGUp
Cit7CisgICAgaWYgKCFpc0FTQ0lJRGlnaXRPclB1bmN0dWF0aW9uKGNoYXJDb2RlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhpbmdzIHRoZSBVUkwgUGFyc2VyIHJlamVjdHM6
CisgICAgc3dpdGNoIChjaGFyQ29kZSkgeworICAgIGNhc2UgJyMnOgorICAgIGNhc2UgJyUnOgor
ICAgIGNhc2UgJy8nOgorICAgIGNhc2UgJzonOgorICAgIGNhc2UgJz8nOgorICAgIGNhc2UgJ0An
OgorICAgIGNhc2UgJ1snOgorICAgIGNhc2UgJ1xcJzoKKyAgICBjYXNlICddJzoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
K30KKworCisKK3N0YXRpYyBCT09MIGlzTG9va2FsaWtlQ2hhcmFjdGVyKHN0ZDo6b3B0aW9uYWw8
VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQsIFVDaGFyMzIgY2hhckNvZGUpCit7CisgICAgLy8g
VGhpcyBmdW5jdGlvbiB0cmVhdHMgdGhlIGZvbGxvd2luZyBhcyB1bnNhZmUsIGxvb2thbGlrZSBj
aGFyYWN0ZXJzOgorICAgIC8vIGFueSBub24tcHJpbnRhYmxlIGNoYXJhY3RlciwgYW55IGNoYXJh
Y3RlciBjb25zaWRlcmVkIGFzIHdoaXRlc3BhY2UsCisgICAgLy8gYW55IGlnbm9yYWJsZSBjaGFy
YWN0ZXIsIGFuZCBlbW9qaSBjaGFyYWN0ZXJzIHJlbGF0ZWQgdG8gbG9ja3MuCisgICAgCisgICAg
Ly8gV2UgYWxzbyBjb25zaWRlcmVkIHRoZSBjaGFyYWN0ZXJzIGluIE1vemlsbGEncyBibGFja2xp
c3QgPGh0dHA6Ly9rYi5tb3ppbGxhemluZS5vcmcvTmV0d29yay5JRE4uYmxhY2tsaXN0X2NoYXJz
Pi4KKworICAgIC8vIFNvbWUgb2YgdGhlIGNoYXJhY3RlcnMgaGVyZSB3aWxsIG5ldmVyIGFwcGVh
ciBvbmNlIElDVSBoYXMgZW5jb2RlZC4KKyAgICAvLyBGb3IgZXhhbXBsZSwgSUNVIHRyYW5zZm9y
bXMgbW9zdCBzcGFjZXMgaW50byBhbiBBU0NJSSBzcGFjZSBhbmQgbW9zdAorICAgIC8vIHNsYXNo
ZXMgaW50byBhbiBBU0NJSSBzb2xpZHVzLiBCdXQgb25lIG9mIHRoZSB0d28gY2FsbGVycyB1c2Vz
IHRoaXMKKyAgICAvLyBvbiBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBub3QgYmVlbiBwcm9jZXNzZWQg
YnkgSUNVLCBzbyB0aGV5IGFyZSBuZWVkZWQgaGVyZS4KKyAgICAKKyAgICBpZiAoIXVfaXNwcmlu
dChjaGFyQ29kZSkgfHwgdV9pc1VXaGl0ZVNwYWNlKGNoYXJDb2RlKSB8fCB1X2hhc0JpbmFyeVBy
b3BlcnR5KGNoYXJDb2RlLCBVQ0hBUl9ERUZBVUxUX0lHTk9SQUJMRV9DT0RFX1BPSU5UKSkKKyAg
ICAgICAgcmV0dXJuIFlFUzsKKyAgICAKKyAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7CisgICAgICAg
IGNhc2UgMHgwMEJDOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIgKi8KKyAgICAgICAg
Y2FzZSAweDAwQkQ6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRiAqLworICAgICAgICBjYXNl
IDB4MDBCRTogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTICovCisgICAgICAgIGNh
c2UgMHgwMEVEOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFICovCisgICAgICAg
IGNhc2UgMHgwMUMzOiAvKiBMQVRJTiBMRVRURVIgUkVUUk9GTEVYIENMSUNLICovCisgICAgICAg
IGNhc2UgMHgwMjUxOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgQUxQSEEgKi8KKyAgICAgICAgY2Fz
ZSAweDAyNjE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgRyAqLworICAgICAgICBjYXNl
IDB4MDJEMDogLyogTU9ESUZJRVIgTEVUVEVSIFRSSUFOR1VMQVIgQ09MT04gKi8KKyAgICAgICAg
Y2FzZSAweDAzMzU6IC8qIENPTUJJTklORyBTSE9SVCBTVFJPS0UgT1ZFUkxBWSAqLworICAgICAg
ICBjYXNlIDB4MDMzNzogLyogQ09NQklOSU5HIFNIT1JUIFNPTElEVVMgT1ZFUkxBWSAqLworICAg
ICAgICBjYXNlIDB4MDMzODogLyogQ09NQklOSU5HIExPTkcgU09MSURVUyBPVkVSTEFZICovCisg
ICAgICAgIGNhc2UgMHgwNTg5OiAvKiBBUk1FTklBTiBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2Fz
ZSAweDA1QjQ6IC8qIEhFQlJFVyBQT0lOVCBISVJJUSAqLworICAgICAgICBjYXNlIDB4MDVCQzog
LyogSEVCUkVXIFBPSU5UIERBR0VTSCBPUiBNQVBJUSAqLworICAgICAgICBjYXNlIDB4MDVDMzog
LyogSEVCUkVXIFBVTkNUVUFUSU9OIFNPRiBQQVNVUSAqLworICAgICAgICBjYXNlIDB4MDVGNDog
LyogSEVCUkVXIFBVTkNUVUFUSU9OIEdFUlNIQVlJTSAqLworICAgICAgICBjYXNlIDB4MDYwOTog
LyogQVJBQklDLUlORElDIFBFUiBNSUxMRSBTSUdOICovCisgICAgICAgIGNhc2UgMHgwNjBBOiAv
KiBBUkFCSUMtSU5ESUMgUEVSIFRFTiBUSE9VU0FORCBTSUdOICovCisgICAgICAgIGNhc2UgMHgw
NjUwOiAvKiBBUkFCSUMgS0FTUkEgKi8KKyAgICAgICAgY2FzZSAweDA2NjA6IC8qIEFSQUJJQyBJ
TkRJQyBESUdJVCBaRVJPICovCisgICAgICAgIGNhc2UgMHgwNjZBOiAvKiBBUkFCSUMgUEVSQ0VO
VCBTSUdOICovCisgICAgICAgIGNhc2UgMHgwNkQ0OiAvKiBBUkFCSUMgRlVMTCBTVE9QICovCisg
ICAgICAgIGNhc2UgMHgwNkYwOiAvKiBFWFRFTkRFRCBBUkFCSUMgSU5ESUMgRElHSVQgWkVSTyAq
LworICAgICAgICBjYXNlIDB4MDcwMTogLyogU1lSSUFDIFNVUFJBTElORUFSIEZVTEwgU1RPUCAq
LworICAgICAgICBjYXNlIDB4MDcwMjogLyogU1lSSUFDIFNVQkxJTkVBUiBGVUxMIFNUT1AgKi8K
KyAgICAgICAgY2FzZSAweDA3MDM6IC8qIFNZUklBQyBTVVBSQUxJTkVBUiBDT0xPTiAqLworICAg
ICAgICBjYXNlIDB4MDcwNDogLyogU1lSSUFDIFNVQkxJTkVBUiBDT0xPTiAqLworICAgICAgICBj
YXNlIDB4MTczNTogLyogUEhJTElQUElORSBTSU5HTEUgUFVOQ1RVQVRJT04gKi8KKyAgICAgICAg
Y2FzZSAweDFEMDQ6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEMgKi8KKyAgICAgICAg
Y2FzZSAweDFEMEY6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE8gKi8KKyAgICAgICAg
Y2FzZSAweDFEMUM6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFUgKi8KKyAgICAgICAg
Y2FzZSAweDFEMjA6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFYgKi8KKyAgICAgICAg
Y2FzZSAweDFEMjE6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFcgKi8KKyAgICAgICAg
Y2FzZSAweDFEMjI6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFogKi8KKyAgICAgICAg
Y2FzZSAweDFFQ0Q6IC8qIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9UIEJFTE9XICovCisg
ICAgICAgIGNhc2UgMHgyMDEwOiAvKiBIWVBIRU4gKi8KKyAgICAgICAgY2FzZSAweDIwMTE6IC8q
IE5PTi1CUkVBS0lORyBIWVBIRU4gKi8KKyAgICAgICAgY2FzZSAweDIwMjQ6IC8qIE9ORSBET1Qg
TEVBREVSICovCisgICAgICAgIGNhc2UgMHgyMDI3OiAvKiBIWVBIRU5BVElPTiBQT0lOVCAqLwor
ICAgICAgICBjYXNlIDB4MjAzOTogLyogU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFU
SU9OIE1BUksgKi8KKyAgICAgICAgY2FzZSAweDIwM0E6IC8qIFNJTkdMRSBSSUdIVC1QT0lOVElO
RyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4MjA0MTogLyogQ0FSRVQg
SU5TRVJUSU9OIFBPSU5UICovCisgICAgICAgIGNhc2UgMHgyMDQ0OiAvKiBGUkFDVElPTiBTTEFT
SCAqLworICAgICAgICBjYXNlIDB4MjA1MjogLyogQ09NTUVSQ0lBTCBNSU5VUyBTSUdOICovCisg
ICAgICAgIGNhc2UgMHgyMTUzOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFRISVJEICovCisgICAg
ICAgIGNhc2UgMHgyMTU0OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIFRISVJEUyAqLworICAgICAg
ICBjYXNlIDB4MjE1NTogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSCAqLworICAgICAgICBj
YXNlIDB4MjE1NjogLyogVlVMR0FSIEZSQUNUSU9OIFRXTyBGSUZUSFMgKi8KKyAgICAgICAgY2Fz
ZSAweDIxNTc6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBGSUZUSFMgKi8KKyAgICAgICAgY2Fz
ZSAweDIxNTg6IC8qIFZVTEdBUiBGUkFDVElPTiBGT1VSIEZJRlRIUyAqLworICAgICAgICBjYXNl
IDB4MjE1OTogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBTSVhUSCAqLworICAgICAgICBjYXNlIDB4
MjE1QTogLyogVlVMR0FSIEZSQUNUSU9OIEZJVkUgU0lYVEhTICovCisgICAgICAgIGNhc2UgMHgy
MTVCOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEVJR0hUICovCisgICAgICAgIGNhc2UgMHgyMTVD
OiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRUlHSFRIUyAqLworICAgICAgICBjYXNlIDB4MjE1
RDogLyogVlVMR0FSIEZSQUNUSU9OIEZJVkUgRUlHSFRIUyAqLworICAgICAgICBjYXNlIDB4MjE1
RTogLyogVlVMR0FSIEZSQUNUSU9OIFNFVkVOIEVJR0hUSFMgKi8KKyAgICAgICAgY2FzZSAweDIx
NUY6IC8qIEZSQUNUSU9OIE5VTUVSQVRPUiBPTkUgKi8KKyAgICAgICAgY2FzZSAweDIyMTI6IC8q
IE1JTlVTIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDIyMTU6IC8qIERJVklTSU9OIFNMQVNIICov
CisgICAgICAgIGNhc2UgMHgyMjE2OiAvKiBTRVQgTUlOVVMgKi8KKyAgICAgICAgY2FzZSAweDIy
MzY6IC8qIFJBVElPICovCisgICAgICAgIGNhc2UgMHgyMzNGOiAvKiBBUEwgRlVOQ1RJT05BTCBT
WU1CT0wgU0xBU0ggQkFSICovCisgICAgICAgIGNhc2UgMHgyM0FFOiAvKiBJTlRFR1JBTCBFWFRF
TlNJT04gKi8KKyAgICAgICAgY2FzZSAweDI0NEE6IC8qIE9DUiBET1VCTEUgQkFDS1NMQVNIICov
CisgICAgICAgIGNhc2UgMHgyNTcxOiAvKiBEaXNwbGF5VHlwZTo6Qm94IERSQVdJTkdTIExJR0hU
IERJQUdPTkFMIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQgKi8KKyAgICAgICAgY2FzZSAweDI1
NzI6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVG
VCBUTyBMT1dFUiBSSUdIVCAqLworICAgICAgICBjYXNlIDB4MjlGNjogLyogU09MSURVUyBXSVRI
IE9WRVJCQVIgKi8KKyAgICAgICAgY2FzZSAweDI5Rjg6IC8qIEJJRyBTT0xJRFVTICovCisgICAg
ICAgIGNhc2UgMHgyQUZCOiAvKiBUUklQTEUgU09MSURVUyBCSU5BUlkgUkVMQVRJT04gKi8KKyAg
ICAgICAgY2FzZSAweDJBRkQ6IC8qIERPVUJMRSBTT0xJRFVTIE9QRVJBVE9SICovCisgICAgICAg
IGNhc2UgMHgyRkYwOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgTEVGVCBU
TyBSSUdIVCAqLworICAgICAgICBjYXNlIDB4MkZGMTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJ
T04gQ0hBUkFDVEVSIEFCT1ZFIFRPIEJFTE9XICovCisgICAgICAgIGNhc2UgMHgyRkYyOiAvKiBJ
REVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgTEVGVCBUTyBNSURETEUgQU5EIFJJR0hU
ICovCisgICAgICAgIGNhc2UgMHgyRkYzOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFS
QUNURVIgQUJPVkUgVE8gTUlERExFIEFORCBCRUxPVyAqLworICAgICAgICBjYXNlIDB4MkZGNDog
LyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEZVTEwgU1VSUk9VTkQgKi8KKyAg
ICAgICAgY2FzZSAweDJGRjU6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBT
VVJST1VORCBGUk9NIEFCT1ZFICovCisgICAgICAgIGNhc2UgMHgyRkY2OiAvKiBJREVPR1JBUEhJ
QyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBCRUxPVyAqLworICAgICAgICBj
YXNlIDB4MkZGNzogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5E
IEZST00gTEVGVCAqLworICAgICAgICBjYXNlIDB4MkZGODogLyogSURFT0dSQVBISUMgREVTQ1JJ
UFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gVVBQRVIgTEVGVCAqLworICAgICAgICBjYXNl
IDB4MkZGOTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZS
T00gVVBQRVIgUklHSFQgKi8KKyAgICAgICAgY2FzZSAweDJGRkE6IC8qIElERU9HUkFQSElDIERF
U0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIExPV0VSIExFRlQgKi8KKyAgICAgICAg
Y2FzZSAweDJGRkI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBPVkVSTEFJ
RCAqLworICAgICAgICBjYXNlIDB4MzAwMjogLyogSURFT0dSQVBISUMgRlVMTCBTVE9QICovCisg
ICAgICAgIGNhc2UgMHgzMDA4OiAvKiBMRUZUIEFOR0xFIEJSQUNLRVQgKi8KKyAgICAgICAgY2Fz
ZSAweDMwMTQ6IC8qIExFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLworICAgICAgICBjYXNl
IDB4MzAxNTogLyogUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLworICAgICAgICBjYXNl
IDB4MzAzMzogLyogVkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSyBVUFBFUiBIQUxGICovCisgICAg
ICAgIGNhc2UgMHgzMDM1OiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIExPV0VSIEhBTEYg
Ki8KKyAgICAgICAgY2FzZSAweDMyMUQ6IC8qIFBBUkVOVEhFU0laRUQgS09SRUFOIENIQVJBQ1RF
UiBPSkVPTiAqLworICAgICAgICBjYXNlIDB4MzIxRTogLyogUEFSRU5USEVTSVpFRCBLT1JFQU4g
Q0hBUkFDVEVSIE8gSFUgKi8KKyAgICAgICAgY2FzZSAweDMzQUU6IC8qIFNRVUFSRSBSQUQgT1ZF
UiBTICovCisgICAgICAgIGNhc2UgMHgzM0FGOiAvKiBTUVVBUkUgUkFEIE9WRVIgUyBTUVVBUkVE
ICovCisgICAgICAgIGNhc2UgMHgzM0M2OiAvKiBTUVVBUkUgQyBPVkVSIEtHICovCisgICAgICAg
IGNhc2UgMHgzM0RGOiAvKiBTUVVBUkUgQSBPVkVSIE0gKi8KKyAgICAgICAgY2FzZSAweDA1Qjk6
IC8qIEhFQlJFVyBQT0lOVCBIT0xBTSAqLworICAgICAgICBjYXNlIDB4MDVCQTogLyogSEVCUkVX
IFBPSU5UIEhPTEFNIEhBU0VSIEZPUiBWQVYgKi8KKyAgICAgICAgY2FzZSAweDA1QzE6IC8qIEhF
QlJFVyBQT0lOVCBTSElOIERPVCAqLworICAgICAgICBjYXNlIDB4MDVDMjogLyogSEVCUkVXIFBP
SU5UIFNJTiBET1QgKi8KKyAgICAgICAgY2FzZSAweDA1QzQ6IC8qIEhFQlJFVyBNQVJLIFVQUEVS
IERPVCAqLworICAgICAgICBjYXNlIDB4QTczMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgUyAqLworICAgICAgICBjYXNlIDB4QTc3MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIERVTSAq
LworICAgICAgICBjYXNlIDB4QTc4OTogLyogTU9ESUZJRVIgTEVUVEVSIENPTE9OICovCisgICAg
ICAgIGNhc2UgMHhGRTE0OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgU0VNSUNP
TE9OICovCisgICAgICAgIGNhc2UgMHhGRTE1OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVS
VElDQUwgRVhDTEFNQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4RkUzRjogLyogUFJFU0VO
VEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQU5HTEUgQlJBQ0tFVCAqLworICAgICAgICBj
YXNlIDB4RkU1RDogLyogU01BTEwgTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCisgICAg
ICAgIGNhc2UgMHhGRTVFOiAvKiBTTUFMTCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICov
CisgICAgICAgIGNhc2UgMHhGRjBFOiAvKiBGVUxMV0lEVEggRlVMTCBTVE9QICovCisgICAgICAg
IGNhc2UgMHhGRjBGOiAvKiBGVUxMIFdJRFRIIFNPTElEVVMgKi8KKyAgICAgICAgY2FzZSAweEZG
NjE6IC8qIEhBTEZXSURUSCBJREVPR1JBUEhJQyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAw
eEZGRkM6IC8qIE9CSkVDVCBSRVBMQUNFTUVOVCBDSEFSQUNURVIgKi8KKyAgICAgICAgY2FzZSAw
eEZGRkQ6IC8qIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAqLworICAgICAgICBjYXNlIDB4MUY1MEY6
IC8qIExPQ0sgV0lUSCBJTksgUEVOICovCisgICAgICAgIGNhc2UgMHgxRjUxMDogLyogQ0xPU0VE
IExPQ0sgV0lUSCBLRVkgKi8KKyAgICAgICAgY2FzZSAweDFGNTExOiAvKiBLRVkgKi8KKyAgICAg
ICAgY2FzZSAweDFGNTEyOiAvKiBMT0NLICovCisgICAgICAgIGNhc2UgMHgxRjUxMzogLyogT1BF
TiBMT0NLICovCisgICAgICAgICAgICByZXR1cm4gWUVTOworICAgICAgICBjYXNlIDB4MDMwNzog
LyogQ09NQklOSU5HIERPVCBBQk9WRSAqLworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29k
ZVBvaW50ID09IDB4MDIzNyAvKiBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKICovCisgICAg
ICAgICAgICAgICAgfHwgcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMTMxIC8qIExBVElOIFNNQUxM
IExFVFRFUiBET1RMRVNTIEkgKi8KKyAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2lu
dCA9PSAweDA1RDU7IC8qIEhFQlJFVyBMRVRURVIgVkFWICovCisgICAgICAgIGNhc2UgMHgwNTQ4
OiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBWTyAqLworICAgICAgICBjYXNlIDB4MDU0RDog
LyogQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0VIICovCisgICAgICAgIGNhc2UgMHgwNTc4OiAv
KiBBUk1FTklBTiBTTUFMTCBMRVRURVIgVk8gKi8KKyAgICAgICAgY2FzZSAweDA1N0Q6IC8qIEFS
TUVOSUFOIFNNQUxMIExFVFRFUiBTRUggKi8KKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Nv
ZGVQb2ludAorICAgICAgICAgICAgICAgICYmICFpc0FTQ0lJRGlnaXRPclZhbGlkSG9zdENoYXJh
Y3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICYmICFpc0Fy
bWVuaWFuU2NyaXB0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpOworICAgICAg
ICBjYXNlICcuJzoKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBwcmV2aW91c0NvZGVQb2ludAorICAgICAgICAgICAgICAgICYmIGlz
QXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUoKSkKKyAg
ICAgICAgICAgICAgICAmJiAhKGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoY2hhckNvZGUpIHx8
IGlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKGNoYXJDb2RlKSk7CisgICAgfQorfQor
CitzdGF0aWMgdm9pZCB3aGl0ZUxpc3RJRE5TY3JpcHQoY29uc3QgY2hhciogc2NyaXB0TmFtZSkK
K3sKKyAgICBpbnQzMl90IHNjcmlwdCA9IHVfZ2V0UHJvcGVydHlWYWx1ZUVudW0oVUNIQVJfU0NS
SVBULCBzY3JpcHROYW1lKTsKKyAgICBpZiAoc2NyaXB0ID49IDAgJiYgc2NyaXB0IDwgVVNDUklQ
VF9DT0RFX0xJTUlUKSB7CisgICAgICAgIHNpemVfdCBpbmRleCA9IHNjcmlwdCAvIDMyOworICAg
ICAgICB1aW50MzJfdCBtYXNrID0gMSA8PCAoc2NyaXB0ICUgMzIpOworICAgICAgICBJRE5TY3Jp
cHRXaGl0ZUxpc3RbaW5kZXhdIHw9IG1hc2s7CisgICAgfQorfQorCitzdGF0aWMgQk9PTCByZWFk
SUROU2NyaXB0V2hpdGVMaXN0RmlsZShOU1N0cmluZyAqZmlsZW5hbWUpCit7CisgICAgaWYgKCFm
aWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgRklMRSAqZmlsZSA9IGZvcGVuKFtm
aWxlbmFtZSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dLCAiciIpOworICAgIGlmICghZmlsZSkK
KyAgICAgICAgcmV0dXJuIE5POworICAgIAorICAgIC8vIFJlYWQgYSB3b3JkIGF0IGEgdGltZS4K
KyAgICAvLyBBbGxvdyBjb21tZW50cywgc3RhcnRpbmcgd2l0aCAjIGNoYXJhY3RlciB0byB0aGUg
ZW5kIG9mIHRoZSBsaW5lLgorICAgIHdoaWxlICgxKSB7CisgICAgICAgIC8vIFNraXAgYSBjb21t
ZW50IGlmIHByZXNlbnQuCisgICAgICAgIGlmIChmc2NhbmYoZmlsZSwgIiAjJSpbXlxuXHJdJSpb
XG5ccl0iKSA9PSBFT0YpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICAgIC8v
IFJlYWQgYSBzY3JpcHQgbmFtZSBpZiBwcmVzZW50LgorICAgICAgICBjaGFyIHdvcmRbMzNdOwor
ICAgICAgICBpbnQgcmVzdWx0ID0gZnNjYW5mKGZpbGUsICIgJTMyW14jIFx0XG5ccl0lKlteIyBc
dFxuXHJdICIsIHdvcmQpOworICAgICAgICBpZiAocmVzdWx0ID09IEVPRikKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAxKSB7CisgICAgICAgICAg
ICAvLyBHb3QgYSB3b3JkLCBtYXAgdG8gc2NyaXB0IGNvZGUgYW5kIHB1dCBpdCBpbnRvIHRoZSBh
cnJheS4KKyAgICAgICAgICAgIHdoaXRlTGlzdElETlNjcmlwdCh3b3JkKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBmY2xvc2UoZmlsZSk7CisgICAgcmV0dXJuIFlFUzsKK30KKworc3RhdGljIEJP
T0wgYWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KGNvbnN0IFVDaGFyICpidWZmZXIs
IGludDMyX3QgbGVuZ3RoKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgZmxhZzsKKyAg
ICBkaXNwYXRjaF9vbmNlKCZmbGFnLCBeeworICAgICAgICAvLyBSZWFkIHdoaXRlIGxpc3QgZnJv
bSBsaWJyYXJ5LgorICAgICAgICBOU0FycmF5ICpkaXJzID0gTlNTZWFyY2hQYXRoRm9yRGlyZWN0
b3JpZXNJbkRvbWFpbnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU0FsbERvbWFpbnNNYXNrLCBZRVMp
OworICAgICAgICBpbnQgbnVtRGlycyA9IFtkaXJzIGNvdW50XTsKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBudW1EaXJzOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChyZWFkSUROU2NyaXB0
V2hpdGVMaXN0RmlsZShbW2RpcnMgb2JqZWN0QXRJbmRleDppXSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJJRE5TY3JpcHRXaGl0ZUxpc3QudHh0Il0pKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBjaGFyKiBkZWZhdWx0SUROU2NyaXB0
V2hpdGVMaXN0WzIwXSA9IHsKKyAgICAgICAgICAgICJDb21tb24iLAorICAgICAgICAgICAgIklu
aGVyaXRlZCIsCisgICAgICAgICAgICAiQXJhYmljIiwKKyAgICAgICAgICAgICJBcm1lbmlhbiIs
CisgICAgICAgICAgICAiQm9wb21vZm8iLAorICAgICAgICAgICAgIkNhbmFkaWFuX0Fib3JpZ2lu
YWwiLAorICAgICAgICAgICAgIkRldmFuYWdhcmkiLAorICAgICAgICAgICAgIkRlc2VyZXQiLAor
ICAgICAgICAgICAgIkd1amFyYXRpIiwKKyAgICAgICAgICAgICJHdXJtdWtoaSIsCisgICAgICAg
ICAgICAiSGFuZ3VsIiwKKyAgICAgICAgICAgICJIYW4iLAorICAgICAgICAgICAgIkhlYnJldyIs
CisgICAgICAgICAgICAiSGlyYWdhbmEiLAorICAgICAgICAgICAgIkthdGFrYW5hX09yX0hpcmFn
YW5hIiwKKyAgICAgICAgICAgICJLYXRha2FuYSIsCisgICAgICAgICAgICAiTGF0aW4iLAorICAg
ICAgICAgICAgIlRhbWlsIiwKKyAgICAgICAgICAgICJUaGFpIiwKKyAgICAgICAgICAgICJZaSIs
CisgICAgICAgIH07CisgICAgICAgIGZvciAoY29uc3QgY2hhciogc2NyaXB0TmFtZSA6IGRlZmF1
bHRJRE5TY3JpcHRXaGl0ZUxpc3QpCisgICAgICAgICAgICB3aGl0ZUxpc3RJRE5TY3JpcHQoc2Ny
aXB0TmFtZSk7CisgICAgfSk7CisgICAgCisgICAgaW50MzJfdCBpID0gMDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50OworICAgIHdoaWxlIChpIDwgbGVuZ3Ro
KSB7CisgICAgICAgIFVDaGFyMzIgYzsKKyAgICAgICAgVTE2X05FWFQoYnVmZmVyLCBpLCBsZW5n
dGgsIGMpCisgICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgICAg
IFVTY3JpcHRDb2RlIHNjcmlwdCA9IHVzY3JpcHRfZ2V0U2NyaXB0KGMsICZlcnJvcik7CisgICAg
ICAgIGlmIChlcnJvciAhPSBVX1pFUk9fRVJST1IpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
Z290IElDVSBlcnJvciB3aGlsZSB0cnlpbmcgdG8gbG9vayBhdCBzY3JpcHRzOiAlZCIsIGVycm9y
KTsKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2NyaXB0
IDwgMCkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJnb3QgbmVnYXRpdmUgbnVtYmVyIGZvciBz
Y3JpcHQgY29kZSBmcm9tIElDVTogJWQiLCBzY3JpcHQpOworICAgICAgICAgICAgcmV0dXJuIE5P
OworICAgICAgICB9CisgICAgICAgIGlmIChzY3JpcHQgPj0gVVNDUklQVF9DT0RFX0xJTUlUKQor
ICAgICAgICAgICAgcmV0dXJuIE5POworCisgICAgICAgIHNpemVfdCBpbmRleCA9IHNjcmlwdCAv
IDMyOworICAgICAgICB1aW50MzJfdCBtYXNrID0gMSA8PCAoc2NyaXB0ICUgMzIpOworICAgICAg
ICBpZiAoIShJRE5TY3JpcHRXaGl0ZUxpc3RbaW5kZXhdICYgbWFzaykpCisgICAgICAgICAgICBy
ZXR1cm4gTk87CisgICAgICAgIAorICAgICAgICBpZiAoaXNMb29rYWxpa2VDaGFyYWN0ZXIocHJl
dmlvdXNDb2RlUG9pbnQsIGMpKQorICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAgICBwcmV2
aW91c0NvZGVQb2ludCA9IGM7CisgICAgfQorICAgIHJldHVybiBZRVM7Cit9CisKK3N0YXRpYyBi
b29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMoY29uc3QgVUNoYXIq
IGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgsIGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChVQ2hhcik+
JiBjaGFyYWN0ZXJJc0FsbG93ZWQpCit7CisgICAgQVNTRVJUKGxlbmd0aCA+IDApOworCisgICAg
Zm9yIChpbnQzMl90IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICBVQ2hh
ciBjaCA9IGJ1ZmZlcltpXTsKKyAgICAgICAgCisgICAgICAgIGlmIChjaGFyYWN0ZXJJc0FsbG93
ZWQoY2gpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICAvLyBPbmx5
IGNoZWNrIHRoZSBzZWNvbmQgbGV2ZWwgZG9tYWluLiBMb3dlciBsZXZlbCByZWdpc3RyYXJzIG1h
eSBoYXZlIGRpZmZlcmVudCBydWxlcy4KKyAgICAgICAgaWYgKGNoID09ICcuJykKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworI2RlZmluZSBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhz
dWZmaXgsIGZ1bmN0aW9uKSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90
IHN1ZmZpeExlbmd0aCA9IHNpemVvZihzdWZmaXgpIC8gc2l6ZW9mKHN1ZmZpeFswXSk7IFwKKyAg
ICAgICAgaWYgKGxlbmd0aCA+IHN1ZmZpeExlbmd0aCAmJiAwID09IG1lbWNtcChidWZmZXIgKyBs
ZW5ndGggLSBzdWZmaXhMZW5ndGgsIHN1ZmZpeCwgc2l6ZW9mKHN1ZmZpeCkpKSBcCisgICAgICAg
ICAgICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhidWZm
ZXIsIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgZnVuY3Rpb24pOyBcCisgICAgfQorCitzdGF0aWMg
Ym9vbCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKFVDaGFyIGNoKQoreworICAgIC8vIE9u
bHkgbW9kZXJuIFJ1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQu
CisgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0
NTEgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Cit9CisKK3N0YXRpYyBCT09MIGFs
bENoYXJhY3RlcnNBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90
IGxlbmd0aCkKK3sKKyAgICAvLyBTa2lwIHRyYWlsaW5nIGRvdCBmb3Igcm9vdCBkb21haW4uCisg
ICAgaWYgKGJ1ZmZlcltsZW5ndGggLSAxXSA9PSAnLicpCisgICAgICAgIGxlbmd0aC0tOworCisg
ICAgLy8gaHR0cDovL2NjdGxkLnJ1L2ZpbGVzL3BkZi9kb2NzL3J1bGVzX3J1LXJmLnBkZgorICAg
IHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1JGW10gPSB7CisgICAgICAgICcuJywKKyAgICAg
ICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDQ0ICAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NV
RkZJWF9NQVRDSEVTKGN5cmlsbGljUkYsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOwor
CisgICAgLy8gaHR0cDovL3J1c25hbWVzLnJ1L3J1bGVzLnBsCisgICAgc3RhdGljIGNvbnN0IFVD
aGFyIGN5cmlsbGljUlVTW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQwLCAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDQzLCAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgVQorICAgICAgICAweDA0NDEgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUwor
ICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSVVMsIGlz
UnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDovL3J1LmZhaXRpZC5v
cmcvcHJvamVjdHMvbW9zY293L2RvY3VtZW50cy9tb3NrdmEvaWRuCisgICAgc3RhdGljIGNvbnN0
IFVDaGFyIGN5cmlsbGljTU9TS1ZBW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDND
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgTworICAgICAgICAweDA0NDEsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBFUworICAgICAgICAweDA0M0EsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICAg
ICAweDA0MzIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBWRQorICAgICAgICAweDA0MzAgIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZG
SVhfTUFUQ0hFUyhjeXJpbGxpY01PU0tWQSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7
CisKKyAgICAvLyBodHRwOi8vd3d3LmRvdGRldGkucnUvZm9ydXNlci9kb2NzL3JlZ3J1bGVzLnBo
cAorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY0RFVElbXSA9IHsKKyAgICAgICAgJy4n
LAorICAgICAgICAweDA0MzQsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBERQorICAgICAgICAw
eDA0MzUsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBJRQorICAgICAgICAweDA0NDIsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBURQorICAgICAgICAweDA0MzggIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBJCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJp
bGxpY0RFVEksIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDov
L2NvcmVuaWMub3JnIC0gcnVsZXMgbm90IHB1Ymxpc2hlZC4gVGhlIHdvcmQgaXMgUnVzc2lhbiwg
c28gb25seSBhbGxvd2luZyBSdXNzaWFuIGF0IHRoaXMgdGltZSwKKyAgICAvLyBhbHRob3VnaCB3
ZSBtYXkgbmVlZCB0byByZXZpc2UgdGhlIGNoZWNrcyBpZiB0aGlzIGVuZHMgdXAgYmVpbmcgdXNl
ZCB3aXRoIG90aGVyIGxhbmd1YWdlcyBzcG9rZW4gaW4gUnVzc2lhLgorICAgIHN0YXRpYyBjb25z
dCBVQ2hhciBjeXJpbGxpY09OTEFZTltdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQz
RSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAgICAgMHgwNDNELCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRU4KKyAgICAgICAgMHgwNDNCLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgRUwKKyAgICAgICAgMHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQorICAgICAg
ICAweDA0MzksIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCisgICAgICAgIDB4MDQz
RCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19J
Rl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY09OTEFZTiwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJh
Y3Rlcik7CisKKyAgICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBzYW1lIGFzIGFib3ZlLgorICAg
IHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1NBWVRbXSA9IHsKKyAgICAgICAgJy4nLAorICAg
ICAgICAweDA0NDEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUworICAgICAgICAweDA0MzAs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIFNIT1JUIEkKKyAgICAgICAgMHgwNDQyICAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgVEUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmls
bGljU0FZVCwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8v
cGlyLm9yZy9wcm9kdWN0cy9vcHItZG9tYWluLyAtIHJ1bGVzIG5vdCBwdWJsaXNoZWQuIEFjY29y
ZGluZyB0byB0aGUgcmVnaXN0cnkgc2l0ZSwKKyAgICAvLyB0aGUgaW50ZW5kZWQgYXVkaWVuY2Ug
aXMgIlJ1c3NpYW4gYW5kIG90aGVyIFNsYXZpYy1zcGVha2luZyBtYXJrZXRzIi4KKyAgICAvLyBD
aHJvbWUgYXBwZWFycyB0byBvbmx5IGFsbG93IFJ1c3NpYW4sIHNvIHN0aWNraW5nIHdpdGggdGhh
dCBmb3Igbm93LgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY09SR1tdID0geworICAg
ICAgICAnLicsCisgICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAg
ICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDMz
ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19J
Rl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY09SRywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rl
cik7CisKKyAgICAvLyBodHRwOi8vY2N0bGQuYnkvcnVsZXMuaHRtbAorICAgIHN0YXRpYyBjb25z
dCBVQ2hhciBjeXJpbGxpY0JFTFtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzMSwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCisgICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIElFCisgICAgICAgIDB4MDQzQiAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IEVMCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0JF
TCwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gUnVzc2lhbiBhbmQgQnllbG9ydXNzaWFuIGxl
dHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNo
ID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0
NTYgfHwgY2ggPT0gMHgwNDVFIHx8IGNoID09IDB4MjAxOSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8
IGNoID09ICctJzsKKyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly93d3cubmljLmt6L2RvY3MvcG9y
eWFkb2tfdm5lZHJlbml5YV9rYXpfcnUucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljS0FaW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDlCLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKKyAgICAgICAgMHgwNDMwLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgQQorICAgICAgICAweDA0MzcgIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBaRQorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNL
QVosIFtdKFVDaGFyIGNoKSB7CisgICAgICAgIC8vIEthemFraCBsZXR0ZXJzLCBkaWdpdHMgYW5k
IGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2gg
PD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEQ5IHx8IGNoID09IDB4MDQ5
MyB8fCBjaCA9PSAweDA0OUIgfHwgY2ggPT0gMHgwNEEzIHx8IGNoID09IDB4MDRFOSB8fCBjaCA9
PSAweDA0QjEgfHwgY2ggPT0gMHgwNEFGIHx8IGNoID09IDB4MDRCQiB8fCBjaCA9PSAweDA0NTYg
fHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBodHRw
Oi8vdWFuaWMubmV0L2RvY3MvZG9jdW1lbnRzLXVrci9SdWxlcyUyMG9mJTIwVUtSX3Y0LjAucGRm
CisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljVUtSW10gPSB7CisgICAgICAgICcuJywK
KyAgICAgICAgMHgwNDQzLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQorICAgICAgICAweDA0
M0EsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICAgICAweDA0NDAgIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBFUgorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01B
VENIRVMoY3lyaWxsaWNVS1IsIFtdKFVDaGFyIGNoKSB7CisgICAgICAgIC8vIFJ1c3NpYW4gYW5k
IFVrcmFpbmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICAg
ICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEg
fHwgY2ggPT0gMHgwNDkxIHx8IGNoID09IDB4MDQwNCB8fCBjaCA9PSAweDA0NTYgfHwgY2ggPT0g
MHgwNDU3IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAg
Ly8gaHR0cDovL3d3dy5ybmlkcy5ycy9kYXRhL0RPS1VNRU5USS9pZG4tc3JiLXBvbGljeS10ZXJt
c29mdXNlLXYxLjQtZW5nLnBkZgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1NSQltd
ID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEVTCisgICAgICAgIDB4MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAg
ICAgIDB4MDQzMSAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCisgICAgfTsKKyAgICBDSEVD
S19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1NSQiwgW10oVUNoYXIgY2gpIHsKKyAg
ICAgICAgLy8gU2VyYmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4K
KyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDM4KSB8fCAoY2ggPj0g
MHgwNDNBICYmIGNoIDw9IDB4MDQ0OCkgfHwgY2ggPT0gMHgwNDUyIHx8IGNoID09IDB4MDQ1OCB8
fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QiB8fCBjaCA9PSAw
eDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAgICAv
LyBodHRwOi8vbWFybmV0Lm1rL2RvYy9wcmF2aWxuaWstbWstbWtkLnBkZgorICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBjeXJpbGxpY01LRFtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQz
QywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIEtBCisgICAgICAgIDB4MDQzNCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIERFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxp
Y01LRCwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gTWFjZWRvbmlhbiBsZXR0ZXJzLCBkaWdp
dHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAg
JiYgY2ggPD0gMHgwNDM4KSB8fCAoY2ggPj0gMHgwNDNBICYmIGNoIDw9IDB4MDQ0OCkgfHwgY2gg
PT0gMHgwNDUzIHx8IGNoID09IDB4MDQ1NSB8fCBjaCA9PSAweDA0NTggfHwgY2ggPT0gMHgwNDU5
IHx8IGNoID09IDB4MDQ1QSB8fCBjaCA9PSAweDA0NUMgfHwgY2ggPT0gMHgwNDVGIHx8IGlzQVND
SUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0cHM6Ly93d3cu
bW9uLm1uL2NzLworICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY01PTltdID0geworICAg
ICAgICAnLicsCisgICAgICAgIDB4MDQzQywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCisg
ICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAgICAgMHgwNDNE
ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9OLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBN
b25nb2xpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisgICAgICAg
IHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8
IGNoID09IDB4MDRFOSB8fCBjaCA9PSAweDA0QUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9
PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBOb3QgYSBrbm93biB0b3AgbGV2ZWwgZG9tYWluIHdp
dGggc3BlY2lhbCBydWxlcy4KKyAgICByZXR1cm4gTk87Cit9CisKKy8vIFJldHVybiB2YWx1ZSBv
ZiBuaWwgbWVhbnMgbm8gbWFwcGluZyBpcyBuZWNlc3NhcnkuCisvLyBJZiBtYWtlU3RyaW5nIGlz
IE5PLCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHNlbGYgdG8gaW5kaWNhdGUg
bWFwcGluZyBpcyBuZWNlc3NhcnkuCisvLyBJZiBtYWtlU3RyaW5nIGlzIFlFUywgdGhlbiByZXR1
cm4gdmFsdWUgaXMgZWl0aGVyIG5pbCBvciB0aGUgbWFwcGVkIHN0cmluZy4KK3N0YXRpYyBOU1N0
cmluZyAqbWFwSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5n
ZSwgQk9PTCBlbmNvZGUsIEJPT0wgbWFrZVN0cmluZywgQk9PTCAqZXJyb3IpCit7CisgICAgaWYg
KHJhbmdlLmxlbmd0aCA+IEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RIKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIAorICAgIGlmICghW3N0cmluZyBsZW5ndGhdKQorICAgICAgICByZXR1cm4gbmls
OworICAgIAorICAgIFVDaGFyIHNvdXJjZUJ1ZmZlcltIT1NUX05BTUVfQlVGRkVSX0xFTkdUSF07
CisgICAgVUNoYXIgZGVzdGluYXRpb25CdWZmZXJbSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEhdOwor
ICAgIAorICAgIGlmIChlbmNvZGUgJiYgW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiJSIgb3B0aW9u
czpOU0xpdGVyYWxTZWFyY2ggcmFuZ2U6cmFuZ2VdLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpIHsK
KyAgICAgICAgTlNTdHJpbmcgKnN1YnN0cmluZyA9IFtzdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdl
OnJhbmdlXTsKKyAgICAgICAgc3Vic3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVh
dGVTdHJpbmdCeVJlcGxhY2luZ1BlcmNlbnRFc2NhcGVzKG51bGxwdHIsIChDRlN0cmluZ1JlZilz
dWJzdHJpbmcsIENGU1RSKCIiKSkpOworICAgICAgICBpZiAoc3Vic3RyaW5nKSB7CisgICAgICAg
ICAgICBzdHJpbmcgPSBzdWJzdHJpbmc7CisgICAgICAgICAgICByYW5nZSA9IE5TTWFrZVJhbmdl
KDAsIFtzdHJpbmcgbGVuZ3RoXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaW50IGxl
bmd0aCA9IHJhbmdlLmxlbmd0aDsKKyAgICBbc3RyaW5nIGdldENoYXJhY3RlcnM6c291cmNlQnVm
ZmVyIHJhbmdlOnJhbmdlXTsKKyAgICAKKyAgICBVRXJyb3JDb2RlIHVlcnJvciA9IFVfWkVST19F
UlJPUjsKKyAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJ
QUxJWkVSOworICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IChlbmNvZGUgPyB1
aWRuYV9uYW1lVG9BU0NJSSA6IHVpZG5hX25hbWVUb1VuaWNvZGUpKCZVUkxQYXJzZXI6OmludGVy
bmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpLCBzb3VyY2VCdWZmZXIsIGxlbmd0aCwgZGVz
dGluYXRpb25CdWZmZXIsIEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RILCAmcHJvY2Vzc2luZ0RldGFp
bHMsICZ1ZXJyb3IpOworICAgIGlmIChsZW5ndGggJiYgKFVfRkFJTFVSRSh1ZXJyb3IpIHx8IHBy
b2Nlc3NpbmdEZXRhaWxzLmVycm9ycykpIHsKKyAgICAgICAgKmVycm9yID0gWUVTOworICAgICAg
ICByZXR1cm4gbmlsOworICAgIH0KKyAgICAKKyAgICBpZiAobnVtQ2hhcmFjdGVyc0NvbnZlcnRl
ZCA9PSBsZW5ndGggJiYgIW1lbWNtcChzb3VyY2VCdWZmZXIsIGRlc3RpbmF0aW9uQnVmZmVyLCBs
ZW5ndGggKiBzaXplb2YoVUNoYXIpKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBp
ZiAoIWVuY29kZSAmJiAhYWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KGRlc3RpbmF0
aW9uQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKSAmJiAhYWxsQ2hhcmFjdGVyc0FsbG93
ZWRCeVRMRFJ1bGVzKGRlc3RpbmF0aW9uQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gbWFrZVN0cmluZyA/IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczpkZXN0aW5hdGlvbkJ1ZmZlciBsZW5ndGg6bnVtQ2hh
cmFjdGVyc0NvbnZlcnRlZF0gOiBzdHJpbmc7Cit9CisKK0JPT0wgaG9zdE5hbWVOZWVkc0RlY29k
aW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9y
KQoreworICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBOTywg
Tk8sIGVycm9yKSAhPSBuaWw7Cit9CisgCitCT09MIGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhS
YW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MICplcnJvcikKK3sKKyAg
ICByZXR1cm4gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgWUVTLCAgTk8sIGVy
cm9yKSAhPSBuaWw7Cit9CisKK05TU3RyaW5nICpkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0
cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQoreworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAg
ICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIE5P
LCBZRVMsICZlcnJvcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9CisKK05TU3RyaW5nICplbmNvZGVIb3N0
TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQoreworICAgIEJP
T0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdl
KHN0cmluZywgcmFuZ2UsIFlFUywgWUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQorCitO
U1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIGVy
cm9yID0gTk87CisgICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJp
bmcsIE5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSksIE5PLCBZRVMsICZlcnJvcik7Cisg
ICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAhaG9zdCA/IHN0
cmluZyA6IGhvc3Q7Cit9CisKK05TU3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3Ry
aW5nKQoreworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhv
c3ROYW1lV2l0aFJhbmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwg
WUVTLCBZRVMsICZlcnJvcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxl
Y3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXksIEJPT0wgZW5jb2RlKQoreworICAgIC8v
IEdlbmVyYWxseSwgd2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUg
aXMgb25lIGhvc3QgbmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGluZy4KKyAgICAvLyBUaGVy
ZWZvcmUsIHdlIHVzZSBuaWwgdG8gaW5kaWNhdGUgbm8gbWFwcGluZyBoZXJlIGFuZCBhbiBlbXB0
eSBhcnJheSB0byBpbmRpY2F0ZSBlcnJvci4KKworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBC
T09MIG5lZWRzTWFwcGluZyA9IGVuY29kZSA/IGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5n
ZShzdHJpbmcsIHJhbmdlLCAmZXJyb3IpIDogaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdl
KHN0cmluZywgcmFuZ2UsICZlcnJvcik7CisgICAgaWYgKCFlcnJvciAmJiAhbmVlZHNNYXBwaW5n
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgYXJyYXkg
PSBhZG9wdE5TKFtOU011dGFibGVBcnJheSBuZXddKTsKKworICAgIGlmICghZXJyb3IpCisgICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKK30K
Kworc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcoTlNTdHJpbmcgKnN0
cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCit7
CisgICAgcmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwg
YXJyYXksIFlFUyk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZERlY29k
aW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4mIGFycmF5KQoreworICAgIHJldHVybiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5n
KHN0cmluZywgcmFuZ2UsIGFycmF5LCBOTyk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGx5SG9zdE5h
bWVGdW5jdGlvblRvTWFpbFRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIFN0cmluZ1Jhbmdl
QXBwbGllckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQorewor
ICAgIC8vIEluIGEgbWFpbHRvOiBVUkwsIGhvc3QgbmFtZXMgY29tZSBhZnRlciBhICdAJyBjaGFy
YWN0ZXIgYW5kIGVuZCB3aXRoIGEgJz4nIG9yICcsJyBvciAnPycgY2hhcmFjdGVyLgorICAgIC8v
IFNraXAgcXVvdGVkIHN0cmluZ3Mgc28gdGhhdCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29u
ZnVzZSB1cy4KKyAgICAvLyBXaGVuIHdlIGZpbmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFz
dCB0aGUgcGFydCBvZiB0aGUgVVJMIHRoYXQgY29udGFpbnMgaG9zdCBuYW1lcy4KKyAgICAKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5h
bWVPclN0cmluZ1N0YXJ0Q2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRX
aXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiXCJAPyJdOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBob3N0TmFtZUVuZENoYXJhY3RlcnMgPSBbTlND
aGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIj4sPyJdOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBxdW90
ZWRTdHJpbmdDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFy
YWN0ZXJzSW5TdHJpbmc6QCJcIlxcIl07CisgICAgCisgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3Ro
ID0gW3N0cmluZyBsZW5ndGhdOworICAgIE5TUmFuZ2UgcmVtYWluaW5nID0gTlNNYWtlUmFuZ2Uo
MCwgc3RyaW5nTGVuZ3RoKTsKKyAgICAKKyAgICB3aGlsZSAoMSkgeworICAgICAgICAvLyBGaW5k
IHN0YXJ0IG9mIGhvc3QgbmFtZSBvciBvZiBxdW90ZWQgc3RyaW5nLgorICAgICAgICBOU1Jhbmdl
IGhvc3ROYW1lT3JTdHJpbmdTdGFydCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6
aG9zdE5hbWVPclN0cmluZ1N0YXJ0Q2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFu
Z2U6cmVtYWluaW5nXTsKKyAgICAgICAgaWYgKGhvc3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlv
biA9PSBOU05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuaWNoYXIg
YyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRleDpob3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRp
b25dOworICAgICAgICByZW1haW5pbmcubG9jYXRpb24gPSBOU01heFJhbmdlKGhvc3ROYW1lT3JT
dHJpbmdTdGFydCk7CisgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSBy
ZW1haW5pbmcubG9jYXRpb247CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnPycpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnQCcpIHsKKyAgICAg
ICAgICAgIC8vIEZpbmQgZW5kIG9mIGhvc3QgbmFtZS4KKyAgICAgICAgICAgIHVuc2lnbmVkIGhv
c3ROYW1lU3RhcnQgPSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAgICAgICBOU1JhbmdlIGhv
c3ROYW1lRW5kID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpob3N0TmFtZUVuZENo
YXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107CisgICAgICAg
ICAgICBCT09MIGRvbmU7CisgICAgICAgICAgICBpZiAoaG9zdE5hbWVFbmQubG9jYXRpb24gPT0g
TlNOb3RGb3VuZCkgeworICAgICAgICAgICAgICAgIGhvc3ROYW1lRW5kLmxvY2F0aW9uID0gc3Ry
aW5nTGVuZ3RoOworICAgICAgICAgICAgICAgIGRvbmUgPSBZRVM7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IGhvc3ROYW1lRW5kLmxv
Y2F0aW9uOworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGgg
LSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAgICAgICAgICAgZG9uZSA9IE5POworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBQcm9jZXNzIGhvc3QgbmFtZSBy
YW5nZS4KKyAgICAgICAgICAgIGYoc3RyaW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBo
b3N0TmFtZUVuZC5sb2NhdGlvbiAtIGhvc3ROYW1lU3RhcnQpLCBhcnJheSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmIChkb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KKyAgICAgICAg
ICAgIEFTU0VSVChjID09ICciJyk7CisgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAg
ICAgICAgIE5TUmFuZ2UgZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kID0gW3N0cmluZyByYW5n
ZU9mQ2hhcmFjdGVyRnJvbVNldDpxdW90ZWRTdHJpbmdDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9w
dGlvbnM6MCByYW5nZTpyZW1haW5pbmddOworICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hh
cmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJ
bmRleDplc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb25dOworICAgICAgICAgICAg
ICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoZXNjYXBlZENoYXJhY3Rlck9yU3Ry
aW5nRW5kKTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3Ro
IC0gcmVtYWluaW5nLmxvY2F0aW9uOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IC8vIElmIHdlIGFyZSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUg
c3RyaW5nIGxvb3AgYmFjayB0byB0aGUgaG9zdCBuYW1lIGxvb3AuCisgICAgICAgICAgICAgICAg
aWYgKGMgPT0gJyInKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgorICAgICAgICAg
ICAgICAgIEFTU0VSVChjID09ICdcXCcpOworICAgICAgICAgICAgICAgIGlmICghcmVtYWluaW5n
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAg
cmVtYWluaW5nLmxvY2F0aW9uICs9IDE7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0
aCAtPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9p
ZCBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJp
bmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJh
eSkKK3sKKyAgICAvLyBGaW5kIGhvc3RuYW1lcy4gVG9vIGJhZCB3ZSBjYW4ndCB1c2UgYW55IHJl
YWwgVVJMLXBhcnNpbmcgY29kZSB0byBkbyB0aGlzLAorICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGRv
IGl0IGJlZm9yZSBkb2luZyBhbGwgdGhlICUtZXNjYXBpbmcsIGFuZCB0aGlzIGlzIHRoZSBvbmx5
CisgICAgLy8gY29kZSB3ZSBoYXZlIHRoYXQgcGFyc2VzIG1haWx0byBVUkxzIGFueXdheS4KKyAg
ICAKKyAgICAvLyBNYXliZSB3ZSBzaG91bGQgaW1wbGVtZW50IHRoaXMgdXNpbmcgYSBjaGFyYWN0
ZXIgYnVmZmVyIGluc3RlYWQ/CisgICAgCisgICAgaWYgKHByb3RvY29sSXMoc3RyaW5nLCAibWFp
bHRvIikpIHsKKyAgICAgICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmco
c3RyaW5nLCBmLCBhcnJheSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8g
RmluZCB0aGUgaG9zdCBuYW1lIGluIGEgaGllcmFyY2hpY2FsIFVSTC4KKyAgICAvLyBJdCBjb21l
cyBhZnRlciBhICI6Ly8iIHNlcXVlbmNlLCB3aXRoIHNjaGVtZSBjaGFyYWN0ZXJzIHByZWNlZGlu
Zy4KKyAgICAvLyBJZiBlbmRzIHdpdGggdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiLCAi
LyIsIG9yIGEgIj8iLgorICAgIC8vIElmIHRoZXJlIGlzIGEgIkAiIGNoYXJhY3RlciwgdGhlIGhv
c3QgcGFydCBpcyBqdXN0IHRoZSBwYXJ0IGFmdGVyIHRoZSAiQCIuCisgICAgTlNSYW5nZSBzZXBh
cmF0b3JSYW5nZSA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjovLyJdOworICAgIGlmIChzZXBh
cmF0b3JSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgLy8gQ2hlY2sgdGhhdCBhbGwgY2hhcmFjdGVycyBiZWZvcmUgdGhlIDovLyBhcmUgdmFs
aWQgc2NoZW1lIGNoYXJhY3RlcnMuCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxOU0NoYXJhY3RlclNldD4+IG5vblNjaGVtZUNoYXJhY3RlcnMgPSBbW05TQ2hhcmFjdGVyU2V0
IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJBQkNERUZHSElKS0xNTk9QUVJT
VFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSstLiJdIGludmVydGVk
U2V0XTsKKyAgICBpZiAoW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpub25TY2hlbWVD
aGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBzZXBh
cmF0b3JSYW5nZS5sb2NhdGlvbildLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07
CisgICAgCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNl
dD4+IGhvc3RUZXJtaW5hdG9ycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hh
cmFjdGVyc0luU3RyaW5nOkAiOi8/IyJdOworICAgIAorICAgIC8vIFN0YXJ0IGFmdGVyIHRoZSBz
ZXBhcmF0b3IuCisgICAgdW5zaWduZWQgYXV0aG9yaXR5U3RhcnQgPSBOU01heFJhbmdlKHNlcGFy
YXRvclJhbmdlKTsKKyAgICAKKyAgICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAg
ICBOU1JhbmdlIGhvc3ROYW1lVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZy
b21TZXQ6aG9zdFRlcm1pbmF0b3JzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VS
YW5nZShhdXRob3JpdHlTdGFydCwgc3RyaW5nTGVuZ3RoIC0gYXV0aG9yaXR5U3RhcnQpXTsKKyAg
ICB1bnNpZ25lZCBob3N0TmFtZUVuZCA9IGhvc3ROYW1lVGVybWluYXRvci5sb2NhdGlvbiA9PSBO
U05vdEZvdW5kID8gc3RyaW5nTGVuZ3RoIDogaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uOwor
ICAgIAorICAgIC8vIEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KKyAg
ICBOU1JhbmdlIHVzZXJJbmZvVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIkAi
IG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZShhdXRob3JpdHlTdGFydCwgaG9zdE5hbWVFbmQg
LSBhdXRob3JpdHlTdGFydCldOworICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQgPSB1c2VySW5m
b1Rlcm1pbmF0b3IubG9jYXRpb24gPT0gTlNOb3RGb3VuZCA/IGF1dGhvcml0eVN0YXJ0IDogTlNN
YXhSYW5nZSh1c2VySW5mb1Rlcm1pbmF0b3IpOworICAgIAorICAgIHJldHVybiBmKHN0cmluZywg
TlNNYWtlUmFuZ2UoaG9zdE5hbWVTdGFydCwgaG9zdE5hbWVFbmQgLSBob3N0TmFtZVN0YXJ0KSwg
YXJyYXkpOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBtYXBIb3N0TmFtZXMoTlNT
dHJpbmcgKnN0cmluZywgQk9PTCBlbmNvZGUpCit7CisgICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50
IHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRo
YXQgZG9lcyBub3QgbmVlZCBtYXBwaW5nLgorICAgIAorICAgIGlmIChlbmNvZGUgJiYgW3N0cmlu
ZyBjYW5CZUNvbnZlcnRlZFRvRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXSkKKyAgICAg
ICAgcmV0dXJuIHN0cmluZzsKKyAgICAKKyAgICAvLyBNYWtlIGEgbGlzdCBvZiByYW5nZXMgdGhh
dCBhY3R1YWxseSBuZWVkIG1hcHBpbmcuCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBo
b3N0TmFtZVJhbmdlczsKKyAgICBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmID0gZW5jb2Rl
ID8gY29sbGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcgOiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRE
ZWNvZGluZzsKKyAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhzdHJpbmcsIGYs
IGhvc3ROYW1lUmFuZ2VzKTsKKyAgICBpZiAoIWhvc3ROYW1lUmFuZ2VzKQorICAgICAgICByZXR1
cm4gc3RyaW5nOworCisgICAgaWYgKCFbaG9zdE5hbWVSYW5nZXMgY291bnRdKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIAorICAgIC8vIERvIHRoZSBtYXBwaW5nLgorICAgIGF1dG8gbXV0YWJs
ZUNvcHkgPSBhZG9wdE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsKKyAgICB1bnNpZ25lZCBpID0g
W2hvc3ROYW1lUmFuZ2VzIGNvdW50XTsKKyAgICB3aGlsZSAoaS0tKSB7CisgICAgICAgIE5TUmFu
Z2UgaG9zdE5hbWVSYW5nZSA9IFtbaG9zdE5hbWVSYW5nZXMgb2JqZWN0QXRJbmRleDppXSByYW5n
ZVZhbHVlXTsKKyAgICAgICAgTlNTdHJpbmcgKm1hcHBlZEhvc3ROYW1lID0gZW5jb2RlID8gZW5j
b2RlSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKSA6IGRlY29kZUhvc3RO
YW1lV2l0aFJhbmdlKHN0cmluZywgaG9zdE5hbWVSYW5nZSk7CisgICAgICAgIFttdXRhYmxlQ29w
eSByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6aG9zdE5hbWVSYW5nZSB3aXRoU3RyaW5nOm1hcHBl
ZEhvc3ROYW1lXTsKKyAgICB9CisgICAgcmV0dXJuIG11dGFibGVDb3B5OworfQorCitzdGF0aWMg
UmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShOU1N0cmluZyAq
c3RyaW5nKQoreworICAgIGF1dG8gdHJpbW1lZCA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29w
eV0pOworICAgIENGU3RyaW5nVHJpbVdoaXRlc3BhY2UoKF9fYnJpZGdlIENGTXV0YWJsZVN0cmlu
Z1JlZil0cmltbWVkLmdldCgpKTsKKyAgICByZXR1cm4gdHJpbW1lZDsKK30KKworTlNVUkwgKlVS
TEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChOU1VSTCAqVVJMLCBDRlVS
TENvbXBvbmVudFR5cGUgY29tcG9uZW50KQoreworICAgIGlmICghVVJMKQorICAgICAgICByZXR1
cm4gbmlsOworICAgIAorICAgIENGUmFuZ2UgZnJhZ1JnID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JD
b21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50LCBudWxscHRyKTsKKyAg
ICBpZiAoZnJhZ1JnLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICByZXR1cm4gVVJM
OworCisgICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gdXJsQnl0ZXMo
VVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOworICAgIENGSW5kZXggbnVtQnl0ZXMgPSBDRlVSTEdl
dEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgdXJsQnl0ZXMu
c2l6ZSgpKTsKKyAgICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBD
RlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAg
ICB1cmxCeXRlcy5ncm93KG51bUJ5dGVzKTsKKyAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19icmlk
Z2UgQ0ZVUkxSZWYpVVJMLCB1cmxCeXRlcy5kYXRhKCksIG51bUJ5dGVzKTsKKyAgICB9CisKKyAg
ICBDRlVSTFJlZiByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRl
cy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVs
bHB0cik7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0
aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NG
U3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAgICAKKyAgICByZXR1cm4g
cmVzdWx0ID8gQ0ZCcmlkZ2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKK30KKworc3RhdGljIE5T
VVJMICpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKK3sKKyAgICBy
ZXR1cm4gVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KFVSTCwga0NG
VVJMQ29tcG9uZW50UmVzb3VyY2VTcGVjaWZpZXIpOworfQorCitOU1VSTCAqVVJMV2l0aERhdGEo
TlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKK3sKKyAgICBpZiAoIWRhdGEpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgCisgICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsKKyAgICBzaXplX3Qg
bGVuZ3RoID0gW2RhdGEgbGVuZ3RoXTsKKyAgICBpZiAobGVuZ3RoID4gMCkgeworICAgICAgICAv
LyB3b3JrIGFyb3VuZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0
aEJ5dGVzKC4uLCBUUlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21wb25lbnRzLgorICAg
ICAgICBiYXNlVVJMID0gVVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKGJhc2VVUkwpOwor
ICAgICAgICAKKyAgICAgICAgY29uc3QgVUludDggKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
VUludDgqPihbZGF0YSBieXRlc10pOworICAgICAgICAKKyAgICAgICAgLy8gQ0ZVUkxDcmVhdGVB
YnNvbHV0ZVVSTFdpdGhCeXRlcyB3b3VsZCBjb21wbGFpbiB0byBjb25zb2xlIGlmIHdlIHBhc3Nl
ZCBhIHBhdGggdG8gaXQuCisgICAgICAgIGlmIChieXRlc1swXSA9PSAnLycgJiYgIWJhc2VVUkwp
CisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAKKyAgICAgICAgLy8gTk9URTogV2Ug
dXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5n
IHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAgICAgLy8gKGUuZyBj
YWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVy
YW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAorICAgICAgICAvLyBjb3VsZCBl
aXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29k
aW5nLCBsaWtlIHNoaWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCisgICAgICAgIC8vIG9udG8gdXNp
bmcgSVNPIExhdGluIDEgaW4gdGhvc2UgY2FzZXMuCisgICAgICAgIHJlc3VsdCA9IENGQnJpZGdp
bmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMs
IGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVS
TCwgWUVTKSk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmVzdWx0ID0gQ0ZC
cmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBi
eXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgKF9fYnJpZGdlIENGVVJM
UmVmKWJhc2VVUkwsIFlFUykpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBbTlNVUkwg
VVJMV2l0aFN0cmluZzpAIiJdOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KK3N0YXRpYyBOU0Rh
dGEgKmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNE
YXRhICp1c2VyVHlwZWREYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ107CisgICAgQVNTRVJUKHVzZXJUeXBlZERhdGEpOworICAgIAorICAgIGNvbnN0
IFVJbnQ4KiBpbkJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDggKj4oW3VzZXJUeXBlZERh
dGEgYnl0ZXNdKTsKKyAgICBpbnQgaW5MZW5ndGggPSBbdXNlclR5cGVkRGF0YSBsZW5ndGhdOwor
ICAgIGlmICghaW5MZW5ndGgpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgY2hhciog
b3V0Qnl0ZXMgPSBzdGF0aWNfY2FzdDxjaGFyICo+KG1hbGxvYyhpbkxlbmd0aCAqIDMpKTsgLy8g
bGFyZ2UgZW5vdWdoIHRvICUtZXNjYXBlIGV2ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIqIHAgPSBv
dXRCeXRlczsKKyAgICBpbnQgb3V0TGVuZ3RoID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IGluTGVuZ3RoOyBpKyspIHsKKyAgICAgICAgVUludDggYyA9IGluQnl0ZXNbaV07CisgICAgICAg
IGlmIChjIDw9IDB4MjAgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICAqcCsrID0gJyUnOwor
ICAgICAgICAgICAgKnArKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAg
ICAgICAgKnArKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAg
b3V0TGVuZ3RoICs9IDM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcCsrID0gYzsK
KyAgICAgICAgICAgIG91dExlbmd0aCsrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJl
dHVybiBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6b3V0Qnl0ZXMgbGVuZ3RoOm91dExlbmd0
aF07IC8vIGFkb3B0cyBvdXRCeXRlcworfQorCitOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmlu
ZyhOU1N0cmluZyAqc3RyaW5nLCBOU1VSTCAqbnNVUkwpCit7CisgICAgaWYgKCFzdHJpbmcpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvIG1hcHBlZFN0cmluZyA9IG1hcEhvc3ROYW1l
cyhzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShzdHJpbmcpLmdldCgpLCBZRVMpOworICAgIGlm
ICghbWFwcGVkU3RyaW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gTGV0J3MgY2hl
Y2sgd2hldGhlciB0aGUgVVJMIGlzIGJvZ3VzLgorICAgIFVSTCB1cmwgeyBVUkwgeyBuc1VSTCB9
LCBtYXBwZWRTdHJpbmcuZ2V0KCkgfTsKKyAgICBpZiAoIXVybC5jcmVhdGVDRlVSTCgpKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODYwNTcKKyAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2Ug
dXJsLmNyZWF0ZUNGVVJMIGluc3RlYWQgb2YgdXNpbmcgZGlyZWN0bHkgQ0ZVUkwgcGFyc2luZyBy
b3V0aW5lcy4KKyAgICBOU0RhdGEgKmRhdGEgPSBkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhtYXBw
ZWRTdHJpbmcuZ2V0KCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIFtOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiIl07CisKKyAgICByZXR1cm4gVVJMV2l0aERhdGEoZGF0YSwgbnNVUkwp
OworfQorCitOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcg
KnN0cmluZywgTlNVUkwgKlVSTCkKK3sKKyAgICBpZiAoIXN0cmluZykKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIE5TVVJMICpyZXN1bHQgPSBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmlu
ZywgVVJMKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBOU0RhdGEgKnJlc3VsdERhdGEg
PSBkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhzdHJpbmcpOworICAgICAgICBpZiAoIXJlc3VsdERh
dGEpCisgICAgICAgICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKKyAgICAg
ICAgcmVzdWx0ID0gVVJMV2l0aERhdGEocmVzdWx0RGF0YSwgVVJMKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQk9PTCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlT
dHJpbmcoTlNVUkwgKlVSTCkKK3sKKyAgICBDRlJhbmdlIHJhbmdlV2l0aFNlcGFyYXRvcnM7Cisg
ICAgQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwg
a0NGVVJMQ29tcG9uZW50UXVlcnksICZyYW5nZVdpdGhTZXBhcmF0b3JzKTsKKyAgICBpZiAocmFu
Z2VXaXRoU2VwYXJhdG9ycy5sb2NhdGlvbiAhPSBrQ0ZOb3RGb3VuZCAmJiByYW5nZVdpdGhTZXBh
cmF0b3JzLmxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgcmV0dXJuIE5P
OworfQorCitOU0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICpVUkwsIENGVVJM
Q29tcG9uZW50VHlwZSBjb21wb25lbnRUeXBlKQoreworICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZ
VEVTX0JVRkZFUl9MRU5HVEg+IGFsbEJ5dGVzQnVmZmVyKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RI
KTsKKyAgICBDRkluZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGFsbEJ5dGVzQnVmZmVyLnNpemUoKSk7
CisgICAgaWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7CisgICAgICAgIENGSW5kZXggYnl0ZXNUb0Fs
bG9jYXRlID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAw
KTsKKyAgICAgICAgYWxsQnl0ZXNCdWZmZXIuZ3JvdyhieXRlc1RvQWxsb2NhdGUpOworICAgICAg
ICBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYWxs
Qnl0ZXNCdWZmZXIuZGF0YSgpLCBieXRlc1RvQWxsb2NhdGUpOworICAgIH0KKyAgICAKKyAgICBj
b25zdCBDRlVSTENvbXBvbmVudFR5cGUgY29tcGxldGVVUkwgPSAoQ0ZVUkxDb21wb25lbnRUeXBl
KS0xOworICAgIENGUmFuZ2UgcmFuZ2U7CisgICAgaWYgKGNvbXBvbmVudFR5cGUgIT0gY29tcGxl
dGVVUkwpIHsKKyAgICAgICAgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnRUeXBlLCBudWxscHRyKTsKKyAgICAgICAg
aWYgKHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICB9IGVsc2UgeworICAgICAgICByYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgICAgIHJh
bmdlLmxlbmd0aCA9IGJ5dGVzRmlsbGVkOworICAgIH0KKyAgICAKKyAgICBOU0RhdGEgKmNvbXBv
bmVudERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YWxsQnl0ZXNCdWZmZXIuZGF0YSgpICsg
cmFuZ2UubG9jYXRpb24gbGVuZ3RoOnJhbmdlLmxlbmd0aF07IAorICAgIAorICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIgKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihb
Y29tcG9uZW50RGF0YSBieXRlc10pOworICAgIE5TTXV0YWJsZURhdGEgKnJlc3VsdERhdGEgPSBb
TlNNdXRhYmxlRGF0YSBkYXRhXTsKKyAgICAvLyBOT1RFOiBhZGQgbGVhZGluZyAnPycgdG8gcXVl
cnkgc3RyaW5ncyBub24temVybyBsZW5ndGggcXVlcnkgc3RyaW5ncy4KKyAgICAvLyBOT1RFOiBy
ZXRhaW4gcXVlc3Rpb24tbWFyayBvbmx5IHF1ZXJ5IHN0cmluZ3MuCisgICAgaWYgKGNvbXBvbmVu
dFR5cGUgPT0ga0NGVVJMQ29tcG9uZW50UXVlcnkpIHsKKyAgICAgICAgaWYgKHJhbmdlLmxlbmd0
aCA+IDAgfHwgaGFzUXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKFVSTCkpCisgICAgICAgICAg
ICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczoiPyIgbGVuZ3RoOjFdOyAgICAKKyAgICB9CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZS5sZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25l
ZCBjaGFyIGMgPSBieXRlc1tpXTsKKyAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2Yp
IHsKKyAgICAgICAgICAgIGNoYXIgZXNjYXBlZFszXTsKKyAgICAgICAgICAgIGVzY2FwZWRbMF0g
PSAnJSc7CisgICAgICAgICAgICBlc2NhcGVkWzFdID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGln
aXQoYyk7CisgICAgICAgICAgICBlc2NhcGVkWzJdID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGln
aXQoYyk7CisgICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczplc2NhcGVkIGxlbmd0
aDozXTsgICAgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGFyIGJbMV07CisgICAg
ICAgICAgICBiWzBdID0gYzsKKyAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmIg
bGVuZ3RoOjFdOyAgICAKKyAgICAgICAgfSAgICAgICAgICAgICAgIAorICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gcmVzdWx0RGF0YTsKK30KKworc3RhdGljIE5TVVJMICpVUkxCeVJlbW92aW5nQ29t
cG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3RlcihOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5
cGUgY29tcG9uZW50KQoreworICAgIENGUmFuZ2UgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZv
ckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIDApOworICAgIGlm
IChyYW5nZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAg
ICAKKyAgICAvLyBSZW1vdmUgb25lIHN1YnNlcXVlbnQgY2hhcmFjdGVyLgorICAgIHJhbmdlLmxl
bmd0aCsrOworCisgICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYnVm
ZmVyKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZV
UkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKKyAgICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBD
RlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAg
ICBidWZmZXIuZ3JvdyhudW1CeXRlcyk7CisgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdl
IENGVVJMUmVmKVVSTCwgYnVmZmVyLmRhdGEoKSwgbnVtQnl0ZXMpOworICAgIH0KKyAgICBVSW50
OCogdXJsQnl0ZXMgPSBidWZmZXIuZGF0YSgpOworICAgICAgICAKKyAgICBpZiAobnVtQnl0ZXMg
PCByYW5nZS5sb2NhdGlvbikKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICBpZiAobnVtQnl0ZXMg
PCByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCkKKyAgICAgICAgcmFuZ2UubGVuZ3RoID0g
bnVtQnl0ZXMgLSByYW5nZS5sb2NhdGlvbjsKKyAgICAgICAgCisgICAgbWVtbW92ZSh1cmxCeXRl
cyArIHJhbmdlLmxvY2F0aW9uLCB1cmxCeXRlcyArIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVu
Z3RoLCBudW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKTsKKyAgICAKKyAg
ICBDRlVSTFJlZiByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRl
cywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0
cik7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5
dGVzKG51bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5n
RW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIAorICAgIHJldHVy
biByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworfQorCitOU1VSTCAq
VVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICpVUkwpCit7CisgICAgcmV0dXJuIFVSTEJ5UmVt
b3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKFVSTCwga0NGVVJMQ29tcG9uZW50
VXNlckluZm8pOworfQorCitOU1VSTCAqVVJMQnlDYW5vbmljYWxpemluZ1VSTChOU1VSTCAqVVJM
KQoreworICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNV
UkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpVUkxdKTsKKyAgICBDbGFzcyBjb25jcmV0ZUNs
YXNzID0gW05TVVJMUHJvdG9jb2wgX3Byb3RvY29sQ2xhc3NGb3JSZXF1ZXN0OnJlcXVlc3QuZ2V0
KCldOworICAgIGlmICghY29uY3JldGVDbGFzcykgeworICAgICAgICByZXR1cm4gVVJMOworICAg
IH0KKyAgICAKKyAgICAvLyBUaGlzIGFwcGxpZXMgTlNVUkwncyBjb25jZXB0IG9mIGNhbm9uaWNh
bGl6YXRpb24sIGJ1dCBub3QgVVJMJ3MgY29uY2VwdC4gSXQgd291bGQKKyAgICAvLyBtYWtlIHNl
bnNlIHRvIGFwcGx5IGJvdGgsIGJ1dCB3aGVuIHdlIHRyaWVkIHRoYXQgaXQgY2F1c2VkIGEgcGVy
Zm9ybWFuY2UgZGVncmFkYXRpb24KKyAgICAvLyAoc2VlIDUzMTU5MjYpLiBJdCBtaWdodCBtYWtl
IHNlbnNlIHRvIGFwcGx5IG9ubHkgdGhlIFVSTCBjb25jZXB0IGFuZCBub3QgdGhlIE5TVVJMCisg
ICAgLy8gY29uY2VwdCwgYnV0IGl0J3MgdG9vIHJpc2t5IHRvIG1ha2UgdGhhdCBjaGFuZ2UgZm9y
IFdlYktpdCAzLjAuCisgICAgTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0ID0gW2NvbmNyZXRlQ2xh
c3MgY2Fub25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CisgICAgTlNVUkwg
Km5ld1VSTCA9IFtuZXdSZXF1ZXN0IFVSTF07IAorICAgIHJldHVybiBbW25ld1VSTCByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKK30KKworTlNEYXRhICpvcmlnaW5hbFVSTERhdGEoTlNVUkwgKlVSTCkK
K3sKKyAgICBVSW50OCAqYnVmZmVyID0gKFVJbnQ4ICopbWFsbG9jKFVSTF9CWVRFU19CVUZGRVJf
TEVOR1RIKTsKKyAgICBDRkluZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlk
Z2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBp
ZiAoYnl0ZXNGaWxsZWQgPT0gLTEpIHsKKyAgICAgICAgQ0ZJbmRleCBieXRlc1RvQWxsb2NhdGUg
PSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAg
ICAgICBidWZmZXIgPSAoVUludDggKilyZWFsbG9jKGJ1ZmZlciwgYnl0ZXNUb0FsbG9jYXRlKTsK
KyAgICAgICAgYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilV
UkwsIGJ1ZmZlciwgYnl0ZXNUb0FsbG9jYXRlKTsKKyAgICAgICAgQVNTRVJUKGJ5dGVzRmlsbGVk
ID09IGJ5dGVzVG9BbGxvY2F0ZSk7CisgICAgfQorICAgIAorICAgIC8vIGJ1ZmZlciBpcyBhZG9w
dGVkIGJ5IHRoZSBOU0RhdGEKKyAgICBOU0RhdGEgKmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXNOb0NvcHk6YnVmZmVyIGxlbmd0aDpieXRlc0ZpbGxlZCBmcmVlV2hlbkRvbmU6WUVTXTsKKyAg
ICAKKyAgICBOU1VSTCAqYmFzZVVSTCA9IChfX2JyaWRnZSBOU1VSTCAqKUNGVVJMR2V0QmFzZVVS
TCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMKTsKKyAgICBpZiAoYmFzZVVSTCkKKyAgICAgICAgcmV0
dXJuIG9yaWdpbmFsVVJMRGF0YShVUkxXaXRoRGF0YShkYXRhLCBiYXNlVVJMKSk7CisgICAgcmV0
dXJuIGRhdGE7Cit9CisKK3N0YXRpYyBDRlN0cmluZ1JlZiBjcmVhdGVTdHJpbmdXaXRoRXNjYXBl
ZFVuc2FmZUNoYXJhY3RlcnMoQ0ZTdHJpbmdSZWYgc3RyaW5nKQoreworICAgIENGSW5kZXggbGVu
Z3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsKKyAgICBWZWN0b3I8VUNoYXIsIFVSTF9C
WVRFU19CVUZGRVJfTEVOR1RIPiBzb3VyY2VCdWZmZXIobGVuZ3RoKTsKKyAgICBDRlN0cmluZ0dl
dENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBsZW5ndGgpLCBzb3VyY2VCdWZmZXIu
ZGF0YSgpKTsKKyAgICAKKyAgICBWZWN0b3I8VUNoYXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RI
PiBvdXRCdWZmZXI7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0Nv
ZGVQb2ludDsKKyAgICBDRkluZGV4IGkgPSAwOworICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7Cisg
ICAgICAgIFVDaGFyMzIgYzsKKyAgICAgICAgVTE2X05FWFQoc291cmNlQnVmZmVyLCBpLCBsZW5n
dGgsIGMpCisgICAgICAgIAorICAgICAgICBpZiAoaXNMb29rYWxpa2VDaGFyYWN0ZXIocHJldmlv
dXNDb2RlUG9pbnQsIGMpKSB7CisgICAgICAgICAgICB1aW50OF90IHV0ZjhCdWZmZXJbNF07Cisg
ICAgICAgICAgICBDRkluZGV4IG9mZnNldCA9IDA7CisgICAgICAgICAgICBVQm9vbCBmYWlsdXJl
ID0gZmFsc2U7CisgICAgICAgICAgICBVOF9BUFBFTkQodXRmOEJ1ZmZlciwgb2Zmc2V0LCA0LCBj
LCBmYWlsdXJlKQorICAgICAgICAgICAgQVNTRVJUKCFmYWlsdXJlKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgZm9yIChDRkluZGV4IGogPSAwOyBqIDwgb2Zmc2V0OyArK2opIHsKKyAgICAg
ICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKCclJyk7CisgICAgICAgICAgICAgICAgb3V0QnVm
ZmVyLmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1dGY4QnVmZmVyW2pdKSk7Cisg
ICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdp
dCh1dGY4QnVmZmVyW2pdKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBVQ2hhciB1dGYxNkJ1ZmZlclsyXTsKKyAgICAgICAgICAgIENGSW5kZXggb2Zmc2V0
ID0gMDsKKyAgICAgICAgICAgIFVCb29sIGZhaWx1cmUgPSBmYWxzZTsKKyAgICAgICAgICAgIFUx
Nl9BUFBFTkQodXRmMTZCdWZmZXIsIG9mZnNldCwgMiwgYywgZmFpbHVyZSkKKyAgICAgICAgICAg
IEFTU0VSVCghZmFpbHVyZSk7CisgICAgICAgICAgICBmb3IgKENGSW5kZXggaiA9IDA7IGogPCBv
ZmZzZXQ7ICsraikKKyAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKHV0ZjE2QnVmZmVy
W2pdKTsKKyAgICAgICAgfQorICAgICAgICBwcmV2aW91c0NvZGVQb2ludCA9IGM7CisgICAgfQor
ICAgIAorICAgIHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIG91
dEJ1ZmZlci5kYXRhKCksIG91dEJ1ZmZlci5zaXplKCkpOworfQorCitOU1N0cmluZyAqdXNlclZp
c2libGVTdHJpbmcoTlNVUkwgKlVSTCkKK3sKKyAgICBOU0RhdGEgKmRhdGEgPSBvcmlnaW5hbFVS
TERhdGEoVVJMKTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiZWZvcmUgPSBzdGF0aWNfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oW2RhdGEgYnl0ZXNdKTsKKyAgICBpbnQgbGVuZ3RoID0g
W2RhdGEgbGVuZ3RoXTsKKyAgICAKKyAgICBib29sIG1heU5lZWRIb3N0TmFtZURlY29kaW5nID0g
ZmFsc2U7CisgICAgCisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCA9IGJlZm9yZTsKKyAgICBp
bnQgYnVmZmVyTGVuZ3RoID0gKGxlbmd0aCAqIDMpICsgMTsKKyAgICBWZWN0b3I8Y2hhciwgVVJM
X0JZVEVTX0JVRkZFUl9MRU5HVEg+IGFmdGVyKGJ1ZmZlckxlbmd0aCk7IC8vIGxhcmdlIGVub3Vn
aCB0byAlLWVzY2FwZSBldmVyeSBjaGFyYWN0ZXIKKyAgICBjaGFyICpxID0gYWZ0ZXIuZGF0YSgp
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdW5zaWdu
ZWQgY2hhciBjID0gcFtpXTsKKyAgICAgICAgLy8gdW5lc2NhcGUgZXNjYXBlIHNlcXVlbmNlcyB0
aGF0IGluZGljYXRlIGJ5dGVzIGdyZWF0ZXIgdGhhbiAweDdmCisgICAgICAgIGlmIChjID09ICcl
JyAmJiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDFdKSkgJiYgaSAr
IDIgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDJdKSkgeworICAgICAgICAgICAg
YXV0byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7CisgICAgICAgICAg
ICBpZiAodSA+IDB4N2YpIHsKKyAgICAgICAgICAgICAgICAvLyB1bmVzY2FwZQorICAgICAgICAg
ICAgICAgICpxKysgPSB1OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAv
LyBkbyBub3QgdW5lc2NhcGUKKyAgICAgICAgICAgICAgICAqcSsrID0gcFtpXTsKKyAgICAgICAg
ICAgICAgICAqcSsrID0gcFtpICsgMV07CisgICAgICAgICAgICAgICAgKnErKyA9IHBbaSArIDJd
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSArPSAyOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgKnErKyA9IGM7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIENoZWNr
IGZvciAieG4tLSIgaW4gYW4gZWZmaWNpZW50LCBub24tY2FzZS1zZW5zaXRpdmUsIHdheS4KKyAg
ICAgICAgICAgIGlmIChjID09ICctJyAmJiBpID49IDMgJiYgIW1heU5lZWRIb3N0TmFtZURlY29k
aW5nICYmIChxWy00XSB8IDB4MjApID09ICd4JyAmJiAocVstM10gfCAweDIwKSA9PSAnbicgJiYg
cVstMl0gPT0gJy0nKQorICAgICAgICAgICAgICAgIG1heU5lZWRIb3N0TmFtZURlY29kaW5nID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAqcSA9ICdcMCc7CisgICAgCisgICAgLy8gQ2hl
Y2sgc3RyaW5nIHRvIHNlZSBpZiBpdCBjYW4gYmUgY29udmVydGVkIHRvIGRpc3BsYXkgdXNpbmcg
VVRGLTggIAorICAgIFJldGFpblB0cjxOU1N0cmluZz4gcmVzdWx0ID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhVVEY4U3RyaW5nOmFmdGVyLmRhdGEoKV07CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAg
ICAgLy8gQ291bGQgbm90IGNvbnZlcnQgdG8gVVRGLTguCisgICAgICAgIC8vIENvbnZlcnQgY2hh
cmFjdGVycyBncmVhdGVyIHRoYW4gMHg3ZiB0byBlc2NhcGUgc2VxdWVuY2VzLgorICAgICAgICAv
LyBTaGlmdCBjdXJyZW50IHN0cmluZyB0byB0aGUgZW5kIG9mIHRoZSBidWZmZXIKKyAgICAgICAg
Ly8gdGhlbiB3ZSB3aWxsIGNvcHkgYmFjayBieXRlcyB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl
ciAKKyAgICAgICAgLy8gYXMgd2UgY29udmVydC4KKyAgICAgICAgaW50IGFmdGVybGVuZ3RoID0g
cSAtIGFmdGVyLmRhdGEoKTsKKyAgICAgICAgY2hhciAqcCA9IGFmdGVyLmRhdGEoKSArIGJ1ZmZl
ckxlbmd0aCAtIGFmdGVybGVuZ3RoIC0gMTsKKyAgICAgICAgbWVtbW92ZShwLCBhZnRlci5kYXRh
KCksIGFmdGVybGVuZ3RoICsgMSk7IC8vIGNvcGllcyB0cmFpbGluZyAnXDAnCisgICAgICAgIGNo
YXIgKnEgPSBhZnRlci5kYXRhKCk7CisgICAgICAgIHdoaWxlICgqcCkgeworICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBjID0gKnA7CisgICAgICAgICAgICBpZiAoYyA+IDB4N2YpIHsKKyAgICAg
ICAgICAgICAgICAqcSsrID0gJyUnOworICAgICAgICAgICAgICAgICpxKysgPSB1cHBlck5pYmJs
ZVRvQVNDSUlIZXhEaWdpdChjKTsKKyAgICAgICAgICAgICAgICAqcSsrID0gbG93ZXJOaWJibGVU
b0FTQ0lJSGV4RGlnaXQoYyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAq
cSsrID0gKnA7CisgICAgICAgICAgICBwKys7CisgICAgICAgIH0KKyAgICAgICAgKnEgPSAnXDAn
OworICAgICAgICByZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YWZ0ZXIu
ZGF0YSgpXTsKKyAgICB9CisgICAgCisgICAgaWYgKG1heU5lZWRIb3N0TmFtZURlY29kaW5nKSB7
CisgICAgICAgIC8vIEZJWE1FOiBJcyBpdCBnb29kIHRvIGlnbm9yZSB0aGUgZmFpbHVyZSBvZiBt
YXBIb3N0TmFtZXMgYW5kIGtlZXAgcmVzdWx0IGludGFjdD8KKyAgICAgICAgYXV0byBtYXBwZWRS
ZXN1bHQgPSBtYXBIb3N0TmFtZXMocmVzdWx0LmdldCgpLCBOTyk7CisgICAgICAgIGlmIChtYXBw
ZWRSZXN1bHQpCisgICAgICAgICAgICByZXN1bHQgPSBtYXBwZWRSZXN1bHQ7CisgICAgfQorCisg
ICAgcmVzdWx0ID0gW3Jlc3VsdCBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5n
XTsKKyAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoY3JlYXRlU3RyaW5nV2l0aEVzY2FwZWRV
bnNhZmVDaGFyYWN0ZXJzKChfX2JyaWRnZSBDRlN0cmluZ1JlZilyZXN1bHQuZ2V0KCkpKTsKK30K
KworQk9PTCBpc1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgQk9PTCB2
YWxpZCA9IFlFUzsKKyAgICAvLyBnZXQgYnVmZmVyCisgICAgCisgICAgY2hhciBzdGF0aWNfYnVm
ZmVyWzEwMjRdOworICAgIGNvbnN0IGNoYXIgKnA7CisgICAgQk9PTCBzdWNjZXNzID0gQ0ZTdHJp
bmdHZXRDU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilzdHJpbmcsIHN0YXRpY19idWZmZXIs
IDEwMjMsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7CisgICAgcCA9IHN1Y2Nlc3MgPyBzdGF0aWNf
YnVmZmVyIDogW3N0cmluZyBVVEY4U3RyaW5nXTsKKyAgICAKKyAgICBpbnQgbGVuZ3RoID0gc3Ry
bGVuKHApOworICAgIAorICAgIC8vIGNoZWNrIGZvciBjaGFyYWN0ZXJzIDw9IDB4MjAgb3IgPj0w
eDdmLCAlLWVzY2FwZSBzZXF1ZW5jZXMgb2YgJTdmLCBhbmQgeG4tLSwgdGhlc2UKKyAgICAvLyBh
cmUgdGhlIHRoaW5ncyB0aGF0IHdpbGwgbGVhZCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nIHRvIGFj
dHVhbGx5IGNoYW5nZSB0aGluZ3MuCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBwW2ldOworICAgICAgICAvLyBlc2NhcGUg
Y29udHJvbCBjaGFyYWN0ZXJzLCBzcGFjZSwgYW5kIGRlbGV0ZQorICAgICAgICBpZiAoYyA8PSAw
eDIwIHx8IGMgPT0gMHg3ZikgeworICAgICAgICAgICAgdmFsaWQgPSBOTzsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJyUnICYmIChpICsgMSA8IGxlbmd0aCAm
JiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAmJiBpICsgMiA8IGxlbmd0aCAmJiBpc0FTQ0lJ
SGV4RGlnaXQocFtpICsgMl0pKSB7CisgICAgICAgICAgICBhdXRvIHUgPSB0b0FTQ0lJSGV4VmFs
dWUocFtpICsgMV0sIHBbaSArIDJdKTsKKyAgICAgICAgICAgIGlmICh1ID4gMHg3ZikgeworICAg
ICAgICAgICAgICAgIHZhbGlkID0gTk87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBDaGVjayBmb3IgInhuLS0iIGluIGFuIGVmZmljaWVudCwgbm9uLWNhc2Utc2Vuc2l0aXZl
LCB3YXkuCisgICAgICAgICAgICBpZiAoYyA9PSAnLScgJiYgaSA+PSAzICYmIChwW2kgLSAzXSB8
IDB4MjApID09ICd4JyAmJiAocFtpIC0gMl0gfCAweDIwKSA9PSAnbicgJiYgcFtpIC0gMV0gPT0g
Jy0nKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBOTzsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdmFs
aWQ7Cit9CisKK05TUmFuZ2UgcmFuZ2VPZlVSTFNjaGVtZShOU1N0cmluZyAqc3RyaW5nKQorewor
ICAgIE5TUmFuZ2UgY29sb24gPSBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCI6Il07CisgICAgaWYg
KGNvbG9uLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgY29sb24ubG9jYXRpb24gPiAwKSB7Cisg
ICAgICAgIE5TUmFuZ2Ugc2NoZW1lID0gezAsIGNvbG9uLmxvY2F0aW9ufTsKKyAgICAgICAgLyoK
KyAgICAgICAgIFRoaXMgc3R1ZmYgaXMgdmVyeSBleHBlbnNpdmUuICAxMC0xNSBtc2VjIG9uIGEg
MngxLjJHSHouICBJZiBub3QgY2FjaGVkIGl0IHN3YW1wcworICAgICAgICAgZXZlcnl0aGluZyBl
bHNlIHdoZW4gYWRkaW5nIGl0ZW1zIHRvIHRoZSBhdXRvY29tcGxldGUgREIuICBNYWtlcyBtZSB3
b25kZXIgaWYgd2UKKyAgICAgICAgIGV2ZW4gbmVlZCB0byBlbmZvcmNlIHRoZSBjaGFyYWN0ZXIg
c2V0IGhlcmUuCisgICAgICAgICAqLworICAgICAgICBOU1N0cmluZyAqYWNjZXB0YWJsZUNoYXJh
Y3RlcnMgPSBAIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1
dnd4eXowMTIzNDU2Nzg5Ky4tIjsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxOU0NoYXJhY3RlclNldD4+IEludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQoW1tOU0NoYXJh
Y3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFy
YWN0ZXJzXSBpbnZlcnRlZFNldF0pOworICAgICAgICBOU1JhbmdlIGlsbGVnYWxzID0gW3N0cmlu
ZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0LmdldCgp
LmdldCgpIG9wdGlvbnM6MCByYW5nZTpzY2hlbWVdOworICAgICAgICBpZiAoaWxsZWdhbHMubG9j
YXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBzY2hlbWU7CisgICAgfQor
ICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKK30KKworQk9PTCBsb29rc0xp
a2VBYnNvbHV0ZVVSTChOU1N0cmluZyAqc3RyaW5nKQoreworICAgIC8vIFRyaW0gd2hpdGVzcGFj
ZSBiZWNhdXNlIF93ZWJfVVJMV2l0aFN0cmluZyBhbGxvd3Mgd2hpdGVzcGFjZS4KKyAgICByZXR1
cm4gcmFuZ2VPZlVSTFNjaGVtZShzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShzdHJpbmcpLmdl
dCgpKS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQkocmV2aXNpb24gMjM2NzY3KQor
KysgU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI3LDkgKzI3LDExIEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgIk5TVVJMRXh0cmFzLmgiCisKKyNpbXBvcnQg
IkNGVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJVUkxQYXJzZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVO
U1VSTEV4dHJhcy5oIgotI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBv
cnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL0hleE51bWJlci5oPgogI2ltcG9ydCA8
d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CkBAIC00OCw3ICs1MCw3IEBAIHR5cGVkZWYgdm9pZCAo
KiBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGkKIAogc3RhdGljIHVpbnQzMl90IElETlNjcmlwdFdo
aXRlTGlzdFsoVVNDUklQVF9DT0RFX0xJTUlUICsgMzEpIC8gMzJdOwogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgV1RGIHsKIAogc3RhdGljIGJvb2wgaXNBcm1lbmlhbkxvb2thbGlr
ZUNoYXJhY3RlcihVQ2hhcjMyIGNvZGVQb2ludCkKIHsKQEAgLTU4NSwxNyArNTg3LDE3IEBAIHN0
YXRpYyBOU1N0cmluZyAqbWFwSG9zdE5hbWVXaXRoUmFuZ2UoTlMKICAgICByZXR1cm4gbWFrZVN0
cmluZyA/IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczpkZXN0aW5hdGlvbkJ1ZmZlciBs
ZW5ndGg6bnVtQ2hhcmFjdGVyc0NvbnZlcnRlZF0gOiBzdHJpbmc7CiB9CiAKLUJPT0wgaG9zdE5h
bWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2Us
IEJPT0wgKmVycm9yKQorc3RhdGljIEJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdl
KE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQogewogICAgIHJl
dHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBOTywgTk8sIGVycm9yKSAh
PSBuaWw7CiB9CiAgCi1CT09MIGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShOU1N0cmlu
ZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MICplcnJvcikKK3N0YXRpYyBCT09MIGhvc3RO
YW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdl
LCBCT09MICplcnJvcikKIHsKICAgICByZXR1cm4gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5n
LCByYW5nZSwgWUVTLCAgTk8sIGVycm9yKSAhPSBuaWw7CiB9CiAKLU5TU3RyaW5nICpkZWNvZGVI
b3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQorc3RhdGlj
IE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1Jh
bmdlIHJhbmdlKQogewogICAgIEJPT0wgZXJyb3IgPSBOTzsKICAgICBOU1N0cmluZyAqaG9zdCA9
IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIE5PLCBZRVMsICZlcnJvcik7CkBA
IC02MDQsNyArNjA2LDcgQEAgTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3Ry
aQogICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7CiB9CiAKLU5TU3RyaW5nICplbmNv
ZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQorc3Rh
dGljIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBO
U1JhbmdlIHJhbmdlKQogewogICAgIEJPT0wgZXJyb3IgPSBOTzsKICAgICBOU1N0cmluZyAqaG9z
dCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIFlFUywgWUVTLCAmZXJyb3Ip
OwpAQCAtMTAzMiwyMyArMTAzNCw2IEBAIE5TVVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNV
UkwgKlVSTCkKICAgICByZXR1cm4gVVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRD
aGFyYWN0ZXIoVVJMLCBrQ0ZVUkxDb21wb25lbnRVc2VySW5mbyk7CiB9CiAKLU5TVVJMICpVUkxC
eUNhbm9uaWNhbGl6aW5nVVJMKE5TVVJMICpVUkwpCi17Ci0gICAgUmV0YWluUHRyPE5TVVJMUmVx
dWVzdD4gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJM
OlVSTF0pOwotICAgIENsYXNzIGNvbmNyZXRlQ2xhc3MgPSBbTlNVUkxQcm90b2NvbCBfcHJvdG9j
b2xDbGFzc0ZvclJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07Ci0gICAgaWYgKCFjb25jcmV0ZUNsYXNz
KSB7Ci0gICAgICAgIHJldHVybiBVUkw7Ci0gICAgfQotICAgIAotICAgIC8vIFRoaXMgYXBwbGll
cyBOU1VSTCdzIGNvbmNlcHQgb2YgY2Fub25pY2FsaXphdGlvbiwgYnV0IG5vdCBVUkwncyBjb25j
ZXB0LiBJdCB3b3VsZAotICAgIC8vIG1ha2Ugc2Vuc2UgdG8gYXBwbHkgYm90aCwgYnV0IHdoZW4g
d2UgdHJpZWQgdGhhdCBpdCBjYXVzZWQgYSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbgotICAgIC8v
IChzZWUgNTMxNTkyNikuIEl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gYXBwbHkgb25seSB0aGUgVVJM
IGNvbmNlcHQgYW5kIG5vdCB0aGUgTlNVUkwKLSAgICAvLyBjb25jZXB0LCBidXQgaXQncyB0b28g
cmlza3kgdG8gbWFrZSB0aGF0IGNoYW5nZSBmb3IgV2ViS2l0IDMuMC4KLSAgICBOU1VSTFJlcXVl
c3QgKm5ld1JlcXVlc3QgPSBbY29uY3JldGVDbGFzcyBjYW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVz
dDpyZXF1ZXN0LmdldCgpXTsKLSAgICBOU1VSTCAqbmV3VVJMID0gW25ld1JlcXVlc3QgVVJMXTsg
Ci0gICAgcmV0dXJuIFtbbmV3VVJMIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotfQotCiBOU0RhdGEg
Km9yaWdpbmFsVVJMRGF0YShOU1VSTCAqVVJMKQogewogICAgIFVJbnQ4ICpidWZmZXIgPSAoVUlu
dDggKiltYWxsb2MoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwpJbmRleDogU291cmNlL1dURi93
dGYvY29jb2EvVVJMQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY29jb2Ev
VVJMQ29jb2EubW0JKHJldmlzaW9uIDIzNjc2NikJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1VSTE1hYy5tbToyMzY3NjYpCisrKyBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiVVJMLmgiCisKKyNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCisjaW1wb3J0ICJVUkxQYXJz
ZXIuaCIKKyNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCA8d3RmL09iamNS
dW50aW1lRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK0BpbnRlcmZh
Y2UgTlNTdHJpbmcgKFdlYkNvcmVOU1VSTEV4dHJhcykKKy0gKEJPT0wpX3dlYl9sb29rc0xpa2VJ
UEFkZHJlc3M7CitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVVJMOjpVUkwoTlNVUkwg
KnVybCkKK3sKKyAgICBpZiAoIXVybCkgeworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBi
YXNlIFVSTCBoZXJlPworICAgIENTdHJpbmcgdXJsQnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXMoKF9f
YnJpZGdlIENGVVJMUmVmKXVybCwgdXJsQnl0ZXMpOworICAgIFVSTFBhcnNlciBwYXJzZXIodXJs
Qnl0ZXMuZGF0YSgpKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKworVVJMOjpv
cGVyYXRvciBOU1VSTCAqKCkgY29uc3QKK3sKKyAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBi
cmlkZ2VkIENGVVJMIGJlY2F1c2UgY3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdvdWxkIG5v
dCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5nLgorICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxp
dHkgd2hlbiByb3VuZC10cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgorICAgIHJldHVybiBj
cmVhdGVDRlVSTCgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKK30KKworUmV0YWluUHRyPENGVVJM
UmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICAvLyBX
ZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3Jl
YXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KKyAg
ICAgICAgcmV0dXJuIChfX2JyaWRnZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGlu
aXRXaXRoU3RyaW5nOkAiIl0pLmdldCgpOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gY2ZVUkw7CisKKyAgICAvLyBGYXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMgOC1iaXQg
dG8gYXZvaWQgY29weWluZyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KKyAgICBpZiAoTElLRUxZ
KG1fc3RyaW5nLmlzOEJpdCgpKSkKKyAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZm
ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSks
IG1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gU2xvd2VyIHBhdGgu
CisgICAgICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOworICAgICAgICBjb3B5VG9CdWZmZXIoYnVm
ZmVyKTsKKyAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CisgICAgfQorCisgICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSAmJiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gY2ZVUkw7Cit9CisKK2Jvb2wgVVJMOjpob3N0
SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQoreworICAgIHJldHVybiBbaG9zdC5jcmVhdGVO
U1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkgX3dlYl9sb29rc0xpa2VJUEFkZHJlc3NdOwor
fQorCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2Nv
YS5tbQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2
ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9j
b2NvYS9VUkxDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxD
b2NvYS5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDE5ICsyNCwxOSBAQAogICovCiAKICNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiVVJMLmgiCisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNpbXBv
cnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJVUkxQYXJzZXIuaCIKLSNpbXBvcnQgIldlYkNv
cmVOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCAiTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgPHd0Zi9P
YmpjUnVudGltZUV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTFBhcnNlci5oPgogI2ltcG9ydCA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCi1AaW50ZXJmYWNlIE5TU3RyaW5nIChXZWJDb3JlTlNVUkxF
eHRyYXMpCitAaW50ZXJmYWNlIE5TU3RyaW5nIChXVEZOU1VSTEV4dHJhcykKIC0gKEJPT0wpX3dl
Yl9sb29rc0xpa2VJUEFkZHJlc3M7CiBAZW5kCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBXVEYgewogCiBVUkw6OlVSTChOU1VSTCAqdXJsKQogewpAQCAtNDcsNyArNDcsNyBAQCBV
Ukw6OlVSTChOU1VSTCAqdXJsKQogCiAgICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25v
cmUgYmFzZSBVUkwgaGVyZT8KICAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZil1cmwsIHVybEJ5dGVzKTsKKyAgICBXVEY6OmdldFVSTEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZil1cmwsIHVybEJ5dGVzKTsKICAgICBVUkxQYXJzZXIgcGFyc2Vy
KHVybEJ5dGVzLmRhdGEoKSk7CiAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CiB9CkBAIC03
MywxNSArNzMsMTUgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgYwog
CiAgICAgLy8gRmFzdCBwYXRoIGlmIHRoZSBpbnB1dCBkYXRhIGlzIDgtYml0IHRvIGF2b2lkIGNv
cHlpbmcgaW50byBhIHRlbXBvcmFyeSBidWZmZXIuCiAgICAgaWYgKExJS0VMWShtX3N0cmluZy5p
czhCaXQoKSkpCi0gICAgICAgIGNmVVJMID0gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBtX3N0cmluZy5s
ZW5ndGgoKSk7CisgICAgICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSksIG1fc3Ry
aW5nLmxlbmd0aCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gU2xvd2VyIHBhdGguCi0gICAg
ICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOworICAgICAgICBXVEY6OlVSTENoYXJCdWZmZXIgYnVm
ZmVyOwogICAgICAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsKLSAgICAgICAgY2ZVUkwgPSBjcmVh
dGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAg
IGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7CiAgICAgfQogCi0gICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAh
aXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKKyAgICBpZiAocHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpICYmICFXVEY6OmlzQ0ZVUkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAq
dGhpcykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGNmVVJMOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjM2NzY3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQxIEBACisyMDE4LTEwLTAyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJv
bSBXZWJDb3JlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQSBVUkwgaXMgYSBsb3ctbGV2ZWwgY29uY2VwdCB0aGF0IGRvZXMgbm90IGRlcGVu
ZCBvbiBvdGhlciBjbGFzc2VzIGluIFdlYkNvcmUuCisgICAgICAgIFdlIGFyZSBzdGFydGluZyB0
byB1c2UgVVJMcyBpbiBKYXZhU2NyaXB0Q29yZSBmb3IgbW9kdWxlcy4KKyAgICAgICAgSSBuZWVk
IFVSTCBhbmQgVVJMUGFyc2VyIGluIGEgcGxhY2Ugd2l0aCBmZXdlciBkZXBlbmRlbmNpZXMgZm9y
IHJkYXI6Ly9wcm9ibGVtLzQ0MTE5Njk2CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxp
ZGF0ZU1lcmNoYW50RXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRD
b29yZGluYXRvci5jcHA6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRp
bmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNs
aWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5o
OgorICAgICAgICAqIE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bk1ldGFkYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVn
aXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oOgorICAg
ICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAgICAgICAgKiBN
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50Lmg6CisgICAgICAg
ICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oOgorICAgICAgICAqIE1v
ZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVy
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JM
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6YXBwbHlCbG9ja2VkU3RhdHVzVG9S
ZXF1ZXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVQ
cm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBj
c3MvU3R5bGVTaGVldC5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuaDoKKyAg
ICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlckNvbnRleHRIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxX
ZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAg
ICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOgorICAgICAgICAqIGRvbS9EYXRhVHJh
bnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0
ZW1MaXN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnNldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc0h0
dHBFcXVpdik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29tcGxldGVVUkwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZVRlbXBsYXRlRG9jdW1lbnQpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVy
bEZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50Ojppc0phdmFTY3JpcHRVUkxBdHRyaWJ1dGUgY29uc3QpOgorICAg
ICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cGFyc2VyQ29udGV4dEZvckVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmJhc2VVUkkgY29uc3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6
CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
Ym9hcmRXcml0ZXJVUkwpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICog
ZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBB
Y2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRp
dG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5n
KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZSk6CisgICAgICAg
ICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpw
bGFpblRleHRGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21NYXJrdXApOgorICAgICAgICAqIGVkaXRpbmcvbWFy
a3VwLmg6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAq
IGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmg6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6Cisg
ICAgICAgICogZmlsZWFwaS9CbG9iVVJMLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JVUkwu
aDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmg6CisgICAgICAgICogaGlzdG9yeS9IaXN0
b3J5SXRlbS5oOgorICAgICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1l
RWxlbWVudEJhc2U6OmlzVVJMQWxsb3dlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RnJhbWVFbGVtZW50QmFzZTo6b3BlblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVF
bGVtZW50QmFzZTo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8VVJMPjo6dG9T
dHJpbmcpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpVUkw+Ojp0b1N0cmlu
Zyk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFsbG93ZWRUb0xvYWRG
cmFtZVVSTCk6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5oOgorICAgICAgICAqIGh0bWwv
TWVkaWFGcmFnbWVudFVSSVBhcnNlci5oOgorICAgICAgICAqIGh0bWwvUHVibGljVVJMTWFuYWdl
ci5jcHA6CisgICAgICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmg6CisgICAgICAgICogaHRt
bC9VUkxJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvVVJMUmVnaXN0cnkuaDoKKyAgICAg
ICAgKiBodG1sL1VSTFNlYXJjaFBhcmFtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVUkxTZWFy
Y2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpVUkxTZWFyY2hQ
YXJhbXM6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFt
czo6dXBkYXRlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6dXBkYXRl
RnJvbUFzc29jaWF0ZWRVUkwpOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0
aWxzPFQ+OjpzZXRQb3J0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
Lmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZW1pY29s
b25TZXBhcmF0ZWRWYWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NB
dWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9y
OjpmaWx0ZXJQYXJhbVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRl
ckVtYmVkVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRm9ybVRv
a2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlcklucHV0VG9rZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyQnV0dG9uVG9rZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZXJhc2VEYW5nZXJvdXNBdHRyaWJ1dGVzSWZJbmplY3Rl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjppc0xpa2VseVNhZmVSZXNvdXJjZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0
OjpvcGVuSW5OZXdUYWIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9D
b29raWVKYXIuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg6
CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaDoKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6bWF5YmVMb2FkRW1wdHkpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNlcnZlclJlZGlyZWN0U291
cmNlRm9ySGlzdG9yeSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6
CisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmg6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpjdXJyZW50SXRl
bVNob3VsZEJlUmVwbGFjZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRy
b2xsZXI6OmluaXRpYWxpemVJdGVtKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9Mb2FkVGltaW5nLmg6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0
cmF0ZWd5Lmg6CisgICAgICAgICogbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JtRm9yTWl4ZWRDb250
ZW50IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oOgorICAg
ICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNob3VsZFNjaGVkdWxlTmF2aWdhdGlvbiBjb25zdCk6Cisg
ICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
UGluZ0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmg6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZVRpbWluZy5oOgorICAgICAgICAqIGxv
YWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRl
cjo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZURhdGEuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHA6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmg6CisgICAgICAgICogbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oOgorICAgICAgICAqIGxvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENs
aWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAq
IGxvYWRlci9pY29uL0ljb25Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvbWFjL0xvYWRlck5T
VVJMRXh0cmFzLm1tOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9D
bGllbnRPcmlnaW4uaDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q2xpZW50Lmg6CisgICAg
ICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQgY29uc3QpOgorICAg
ICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6
aXNJbnNlY3VyZVNjcmlwdEFjY2Vzcyk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5o
OgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgor
ICAgICAgICAqIHBhZ2UvSGlzdG9yeS5oOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnVybCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMb2NhdGlvbjo6cmVsb2FkKToKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmg6CisgICAgICAg
ICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAg
ICAqIHBhZ2UvUGVyZm9ybWFuY2UuaDoKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlUmVzb3Vy
Y2VUaW1pbmcuY3BwOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW4uaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGlj
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNl
Y3VyaXR5T3JpZ2luRnJvbU93bmVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5Lmg6
CisgICAgICAgICogcGFnZS9TZXR0aW5nc0Jhc2UuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0
YS5oOgorICAgICAgICAqIHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoKKyAgICAgICAgKiBwYWdlL1Vz
ZXJDb250ZW50UHJvdmlkZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHA6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaDoKKyAgICAgICAg
KiBwYWdlL1VzZXJTY3JpcHQuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJTdHlsZVNoZWV0Lmg6Cisg
ICAgICAgICogcGFnZS9WaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdC5oOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2U6OnBvcnRNYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdERpcmVjdGl2ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmg6
CisgICAgICAgICogcGxhdGZvcm0vQ29va2llLmg6CisgICAgICAgICogcGxhdGZvcm0vQ29va2ll
c1N0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9EcmFnSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vTGlua0ljb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNhbkV4cG9zZVVSTFRvRE9N
V2hlblBhc3RlYm9hcmRDb250YWluc0ZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFVSTERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZFdyaXRlckRhdGE6OnNldFVSTCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
UGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
U2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6Omlz
QnVpbHRpblNjaGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5oOgorICAgICAgICAqIHBsYXRm
b3JtL1VSTC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vVVJMSGFzaC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRm
b3JtL1VSTFBhcnNlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2Vy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vVXNlckFnZW50Lmg6CisgICAgICAgICog
cGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2NmL0NGVVJMRXh0cmFzLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2YvVVJMQ0Yu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9EcmFnRGF0YU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1BsYWlu
VGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUhvc3RO
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9VUkxNYWMubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJD
b3JlTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjppc0FybWVuaWFuTG9va2FsaWtl
Q2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQXJtZW5pYW5TY3JpcHRD
aGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBU0NJSURpZ2l0T3JWYWxp
ZEhvc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNMb29rYWxpa2VD
aGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d2hpdGVMaXN0SUROU2NyaXB0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFsbENoYXJhY3RlcnNJbklETlNjcmlwdFdo
aXRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1NlY29uZExldmVsRG9tYWlu
TmFtZUFsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxs
Q2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om1hcEhvc3ROYW1lV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omhvc3RO
YW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpo
b3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
ZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVj
b2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGlu
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNv
ZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFuZ2VzVGhhdE5lZWRE
ZWNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseUhvc3ROYW1lRnVuY3Rp
b25Ub01haWxUb1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseUhv
c3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpt
YXBIb3N0TmFtZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c3RyaW5nQnlUcmltbWlu
Z1doaXRlc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMQnlUcnVuY2F0aW5n
T25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpVUkxXaXRoRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkYXRhV2l0aFVz
ZXJUeXBlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxXaXRoVXNlclR5
cGVkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRT
dHJpbmdEZXByZWNhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc1F1ZXN0aW9u
TWFya09ubHlRdWVyeVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkYXRhRm9y
VVJMQ29tcG9uZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxCeVJlbW92
aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpVUkxCeVJlbW92aW5nVXNlckluZm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6b3JpZ2luYWxVUkxEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVN0
cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1Vz
ZXJWaXNpYmxlVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJhbmdlT2ZVUkxTY2hl
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9va3NMaWtlQWJzb2x1dGVVUkwpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRDb25m
aWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
VmlkZW9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0Lmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVzdCBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGEu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSSBjb25zdCk6
CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJl
c2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp1c2VyVmlzaWJsZVN0cmluZyk6CisgICAgICAg
ICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tQ
YXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAqIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmg6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGVQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJv
eHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmg6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJEYXRhLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JE
YXRhLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5Lmg6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleT46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcmVwYXJlIFdlYkNvcmVOU1VSTEV4
dHJhcyBmb3IgQVJDCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjM2NzY2KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE1MzUsOCArMTUzNSw2
IEBAIHBsYXRmb3JtL1RoZW1lLmNwcAogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKIHBs
YXRmb3JtL1RocmVhZFRpbWVycy5jcHAKIHBsYXRmb3JtL1RpbWVyLmNwcAotcGxhdGZvcm0vVVJM
LmNwcAotcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAogcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcAog
cGxhdGZvcm0vV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmNwcAogcGxhdGZvcm0vV2ViR0xTdGF0
ZVRyYWNrZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDIzNjc2
NikKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTE3OCw3ICsxNzgsNiBAQCBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAog
cGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9G
RlRGcmFtZU1hYy5jcHAKIAotcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwCiBwbGF0Zm9ybS9j
Zi9GaWxlU3lzdGVtQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKIHBsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTg2LDcgKzE4NSw2IEBAIHBsYXRmb3JtL2Nm
L01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcAogcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmls
aXR5U29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuY3BwCiBwbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKLXBsYXRmb3JtL2NmL1VSTENGLmNwcAogCiBwbGF0Zm9y
bS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSBAbm8tdW5pZnkKIHBs
YXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcApAQCAtNDU4LDcgKzQ1Niw2IEBAIHBs
YXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KIHBsYXRmb3JtL21hYy9TdWRkZW5UZXJtaW5h
dGlvbi5tbQogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCiBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hl
Y2subW0gQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCiBwbGF0Zm9ybS9tYWMvVXNl
ckFjdGl2aXR5TWFjLm1tCiBwbGF0Zm9ybS9tYWMvVXNlckFnZW50TWFjLm1tCiBwbGF0Zm9ybS9t
YWMvVmFsaWRhdGlvbkJ1YmJsZU1hYy5tbQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50Q29u
dGFjdDsKIGNsYXNzIFBheW1lbnRDb29yZGluYXRvcjsKIGNsYXNzIFBheW1lbnRNZXRob2Q7Ci1j
bGFzcyBVUkw7CiBlbnVtIGNsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOwogc3RydWN0
IEFwcGxlUGF5TGluZUl0ZW07CiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50UmVxdWVzdDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50
RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkp
CiAKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29y
ZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRv
ckNsaWVudC5oIgogI2luY2x1ZGUgIlBheW1lbnRTZXNzaW9uLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0
b3IuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50Q29vcmRpbmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQCBj
bGFzcyBQYXltZW50Q29udGFjdDsKIGNsYXNzIFBheW1lbnRNZXJjaGFudFNlc3Npb247CiBjbGFz
cyBQYXltZW50TWV0aG9kOwogY2xhc3MgUGF5bWVudFNlc3Npb247Ci1jbGFzcyBVUkw7CiBlbnVt
IGNsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOwogc3RydWN0IFBheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0Owogc3RydWN0IFBheW1lbnRNZXRob2RVcGRhdGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGF5bWVudE1lcmNoYW50
U2Vzc2lvbjsKLWNsYXNzIFVSTDsKIHN0cnVjdCBQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdDsK
IHN0cnVjdCBQYXltZW50TWV0aG9kVXBkYXRlOwogc3RydWN0IFNoaXBwaW5nQ29udGFjdFVwZGF0
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRT
ZXNzaW9uLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudFNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQCBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKIGNs
YXNzIFBheW1lbnRNZXRob2Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFBheW1lbnRTZXNzaW9uIDog
cHVibGljIHZpcnR1YWwgUGF5bWVudFNlc3Npb25CYXNlIHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlm
ZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsOSBAQAogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMu
aD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24v
TmF2aWdhdG9yQmVhY29uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVFRQUGFy
c2Vycy5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJS
ZWFkYWJsZVN0cmVhbUNodW5rLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJG
ZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWV0
YWRhdGEuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw5ICszNSw5IEBACiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIk1l
ZGlhU291cmNlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgJKHJldmlzaW9u
IDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTWVkaWFTb3VyY2U7CiAKIGNsYXNzIE1l
ZGlhU291cmNlUmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJ
KHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVk
ZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVh
bHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAJKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1SZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDkgQEAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBN
ZWRpYVN0cmVhbTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKLWNsYXNzIFVSTDsKIAogY2xh
c3MgTWVkaWFTdHJlYW1SZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBVUkxSZWdpc3RyeSB7CiBwdWJs
aWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25EaXJlY3Rpb24uaCIKICNpbmNsdWRlICJO
b3RpZmljYXRpb25QZXJtaXNzaW9uLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaAko
cmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBACiAjaWYgRU5BQkxFKFBBWU1FTlRfUkVRVUVTVCkKIAogI2luY2x1ZGUgIkV2ZW50LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRNZXRob2RDaGFuZ2VFdmVudC5o
IgogI2luY2x1ZGUgIlBheW1lbnRPcHRpb25zLmgiCiAjaW5jbHVkZSAiUGF5bWVudFJlc3BvbnNl
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCShyZXZpc2lvbiAy
MzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQCBjbGFzcyBSZW5kZXJTdHlsZTsK
IGNsYXNzIFJlbmRlclRyZWVQb3NpdGlvbjsKIGNsYXNzIFNldHRpbmdzOwogY2xhc3MgU2hhZG93
Um9vdDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgUGx1Z2luUmVwbGFjZW1lbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxQbHVnaW5SZXBsYWNlbWVudD4gewogcHVibGljOgpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3ICs3MSw2IEBAIGNsYXNzIE9zY2lsbGF0b3JOb2RlOwogY2xhc3Mg
UGFubmVyTm9kZTsKIGNsYXNzIFBlcmlvZGljV2F2ZTsKIGNsYXNzIFNjcmlwdFByb2Nlc3Nvck5v
ZGU7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXYXZlU2hhcGVyTm9kZTsKIAogLy8gQXVkaW9Db250ZXh0
IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9k
ZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
CShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAs
NiBAQCBjbGFzcyBBcnJheUJ1ZmZlcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxv
YjsKLWNsYXNzIFVSTDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTb2Nr
ZXRQcm92aWRlcjsKIGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCShyZXZpc2lvbiAyMzY3
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENs
aWVudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV2Vi
U29ja2V0LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvQ3J5
cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgJKHJldmlzaW9u
IDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUg
IldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3Bl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODQxLDcgKzE4NDEsNiBA
QAogCQk1QzQzMDRCMDE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRDE5
MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgKi87IH07CiAJCTVDNDMw
NEIxMTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRTE5MUFDOTA4MDAwRTJC
QzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzQzMDRCNjE5MUFFRjQ2MDAw
RTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRCNDE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRT
aGFkZXJUZXh0dXJlTE9ELmggKi87IH07Ci0JCTVDNkU2NTQzMUQ1Q0VGQkYwMEY3ODYyRSAvKiBV
UkxQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDNkU2NTQwMUQ1Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJG
NkQgLyogU29ja2V0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOEM2
MDA5MjEyNzZCODcwMDgyRjg4RiAvKiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEM2MDA3MjEyNzZC
MEYwMDgyRjg4RiAvKiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0ExREVDNjFGNzFGMUM3MDBF
NzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZp
ZWxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTE5MTcsNyArMTkxNiw2IEBACiAJCTY1NkQzNzQ4MEFEQkE1REUwMEE0NTU0RCAvKiBTdWJyZXNv
dXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjU2RDM3MzAwQURCQTVERTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU3QUZBRkMyMDA0
N0EyOTAwNTA5NDY0IC8qIFNwZWN0cmVHYWRnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1N0FGQUY4MjAwNDc4OTkwMDUwOTQ2NCAvKiBTcGVjdHJl
R2FkZ2V0LmggKi87IH07CiAJCTY1ODQzNjg2MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTg0MzY4NTBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1OTM5MjM4MDlBRTQzNDYw
MDJDNTMxRiAvKiBVUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTlBN0QxMzBCNkRCNEQ5MDAxMTU1
QjMgLyogU3Vic3RpdHV0ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1OUE3RDEyMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1OURE
QzgzMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTlEREM4MTA5RTE5OEJBMDAxQkYzQzYgLyogSlNE
b2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTY1QTIxNDY4MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyog
UGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0zODA1LDcgKzM4MDMsNiBAQAogCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50
ZXJ2YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QkI4QUI1MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQkI4QUJBMTNGMUFGQjAwMDczNERG
MCAvKiBQT0RJbnRlcnZhbFRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JC
OEFCQjEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNzEzRjFBRkIwMDA3MzRERjAg
LyogUE9EUmVkQmxhY2tUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJQkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQyMUFBMEU0MTdB
RDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkZC
NTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNDMEU4NzYxQkZFNzBFOTAwOEY3RjUw
IC8qIEhUTUxQaWN0dXJlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNDMEU4NzQxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxl
bWVudC5oICovOyB9OwogCQlCQ0M1QkUwMTBDMEU5MzExMDAxMUMyREIgLyogSlNDU1NTdHlsZVNo
ZWV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1
QkRGRjBDMEU5MzExMDAxMUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmggKi87IH07CkBAIC00NjY3
LDcgKzQ2NjQsNiBAQAogCQlFMUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxQTE0NzA3MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5o
ICovOyB9OwogCQlFMUEzMTYyRDEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3Ry
aW5nRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMUEzMTYyQjEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFB
NjQzRjIwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0YxMEVDMDk3MjUw
MDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTFBOEU1NjcxNzU1MkIyQTAwNzQ4OEU3IC8q
IENGVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUE4RTU2NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUFERUNCRjBFNzZBQ0Yx
MDA0QTFBNUUgLyogTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxQURFQ0JEMEU3NkFDRjEwMDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQURF
Q0NFMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBREVDQ0MwRTc2QUQ4QjAwNEExQTVFIC8q
IE1lc3NhZ2VDaGFubmVsLmggKi87IH07CiAJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBK
U01lc3NhZ2VQb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUFERUREODBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oICovOyB9OwpA
QCAtNjExNCw3ICs2MTEwLDYgQEAKIAkJMUE5MjdGQ0YxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBp
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wYXBpLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBOTI3RkQwMTQxNkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbnBydW50aW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOTI3RkQxMTQxNkExNUIwMDNBODNDOCAvKiBucHR5cGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wdHlwZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxDRi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTg0RjAyMTQzQkE3QkQwMDUxRDE1MyAvKiBTY3Jv
bGxDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
U2Nyb2xsQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBODRG
MDMxNDNCQTdCRDAwNTFEMTUzIC8qIFNjcm9sbENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUFBRERBMTE0REI0MDlGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg3MzgsOCArODczMyw2IEBACiAJCTVDNjY4
RTY0MUU3QzZDMzUwMEQzMkIzQiAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzY4OEFBMDFEMzgwNTA5MDAwQjU0RkEg
LyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzY4OEFBMjFEMzgxMjZGMDAwQjU0RkEgLyogU29ja2V0UHJv
dmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0UHJv
dmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzZFNjUzRjFENUNFREM5
MDBGNzg2MkUgLyogVVJMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFVSTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNkU2
NTQwMUQ1Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVVJMUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
N0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzhDNjAwNzIxMjc2QjBGMDA4MkY4OEYgLyogU2hvdWxkU2tpcFNhZmVCcm93
c2luZ0NoZWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNob3VsZFNraXBT
YWZlQnJvd3NpbmdDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzk3QTMz
NjFGNUY3QTY1MDAxMDUyMDcgLyogUmVjdEVkZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlY3RFZGdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg5
Myw4ICs4ODg2LDYgQEAKIAkJNjU3QUZBRkEyMDA0Nzg5QTAwNTA5NDY0IC8qIFNwZWN0cmVHYWRn
ZXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNwZWN0cmVHYWRnZXQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2NTdBRkFGQjIwMDQ3ODlBMDA1MDk0NjQgLyogU3BlY3Ry
ZUdhZGdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjdHJl
R2FkZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3
NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZyYW1lTG9hZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OTM5
MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBVUkxNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVVJMTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2NTlBN0QxMjBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1YnN0aXR1dGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1OUREQzgwMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvY3VtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTA1LDcgKzEyODk2LDYgQEAKIAkJQkNC
QjhBQjUxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBPREludGVydmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDQkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9ESW50ZXJ2YWxUcmVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDQkI4QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFj
a1RyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9EUmVkQmxhY2tUcmVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBG
MiAvKiBVUkxIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTEhhc2gu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCRkI1M0EwRENEMjlDRjAwMTlCM0U1
IC8qIEpTV2luZG93UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNXaW5kb3dQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkZC
NTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkNDMEU4NzMxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MUGljdHVyZUVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyNDgsOCArMTQyMzgsNiBAQAog
CQlFMUE1Rjk5QTBFN0VBQTI1MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VDaGFubmVsQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRjEwRUMwOTcyNTAw
Nzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMUE2NDNGQzBFQzA5N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBOEU1NjQx
NzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENGVVJMRXh0cmFzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRTFBOEU1NjUxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENGVVJMRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxQUIxRUE4MTRFOUUyN0QwMDQ0OUUxMyAvKiBGaWxlTGlzdC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMUFCMUVCNzE0RTlFMzU4MDA0NDlFMTMgLyogRmlsZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUJCMTRFOUUzN0EwMDQ0OUUx
MyAvKiBGaWxlRXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjIzMCw4ICsxNjIxOCw2IEBACiAJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4
NjEyRCAvKiBjZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0J
CQkJRTFBOEU1NjQxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCAqLywKLQkJCQlF
MUE4RTU2NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLywKIAkJCQk1MTYwMzA2
QjBDQzQzNjIzMDBDOEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQk1MTdBNjNCRjFC
NzQzMTdFMDBFN0RDREMgLyogS2V5ZWREZWNvZGVyQ0YuY3BwICovLAogCQkJCTUxN0E2M0MwMUI3
NDMxN0UwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5oICovLApAQCAtMTYyNDMsNyArMTYyMjks
NiBAQAogCQkJCTJENzZCQjgzMTk0NTZGODEwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuY3Bw
ICovLAogCQkJCTJENzZCQjgwMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCAq
LywKIAkJCQk1MTJERDhFMjBEOTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICov
LAotCQkJCTFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0NjkzLDExICsy
NDY3OCw2IEBACiAJCQkJMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5o
ICovLAogCQkJCTkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi8sCiAJCQkJ
OTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8sCi0JCQkJNjU5MzkyMzUwOUFF
NDM0NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi8sCi0JCQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFG
IC8qIFVSTC5oICovLAotCQkJCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmgg
Ki8sCi0JCQkJNUM2RTY1M0YxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgKi8sCi0J
CQkJNUM2RTY1NDAxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5oICovLAogCQkJCTg2ODE2
MEQxMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuY3BwICovLAogCQkJCTg2ODE2MEQy
MTg3NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuaCAqLywKIAkJCQlBM0FGOUQ4MjIwMzI1
MzI0MDA2Q0FEMDYgLyogVXNlckFnZW50LmggKi8sCkBAIC0yNzQ3MCw3ICsyNzQ1MCw2IEBACiAJ
CQkJQ0QzMTg2MjMxOTlGMUUyQTAwMzBBMEY3IC8qIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1T
ZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RkE5MDRDQTE3
OEU2MUY1MDA0QzhBMkQgLyogQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVhZGVycyAqLywKLQkJCQlF
MUE4RTU2NzE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMzZGRDE1MTZDNzgyNjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTdCQzY5REQxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25X
cmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNUZGRjEyQjAyNjc2MDBDMUEzNTkgLyog
Q2hhbm5lbE1lcmdlck5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzA5MDksMTEgKzMwODg4LDgg
QEAKIAkJCQlFNEFGQ0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRDA4NkZFOTgwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMTc2MkUwMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBp
biBIZWFkZXJzICovLAogCQkJCTI2NzcyNjA1MUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQ
YXJzZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDQkQyMUFCMEU0MTdBRDQwMEEwNzBGMiAvKiBV
UkxIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RERTEyNTFGMTJEMDAzRUYyNjkgLyog
VVJMSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1QzZFNjU0MzFENUNFRkJGMDBGNzg2
MkUgLyogVVJMUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0MyODlERjFBQTBGRTVEMDA5
QTlDRTMgLyogVVJMUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzN0EyMUQ1N0Iz
RkUwMEFCODVFQSAvKiBVUkxVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyNzYzQkYxNjY4
OUJGQjAwMkZDQUNCIC8qIFVzZXJBY3Rpb25FbGVtZW50U2V0LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNj
cmlwdExvYWRlci5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyAr
NDAsNiBAQCBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEpT
RE9NR2xvYmFsT2JqZWN0OwogY2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzOwotY2xhc3MgVVJM
OwogCiBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI+LCBwcml2YXRlIENhY2hlZFJlc291cmNlQ2xp
ZW50IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNj
cmlwdEZldGNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRTY3JpcHRGZXRjaGVyLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNs
YXNzIERvY3VtZW50OwotY2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRTY3JpcHRGZXRjaGVyIDog
cHVibGljIEpTQzo6U2NyaXB0RmV0Y2hlciB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM2NzY2
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU4OSw3ICs1ODksNyBAQCBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHQoCiAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNj
cmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0
VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCkKIHsKLSAgICBpZiAoIXBy
b3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCisgICAgaWYgKCFXVEY6OnByb3RvY29sSXNKYXZhU2Ny
aXB0KHVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9mcmFtZS5wYWdl
KCkgfHwgIW1fZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93
SmF2YVNjcmlwdFVSTHMobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSwgZXZlbnRIYW5kbGVyUG9z
aXRpb24oKS5tX2xpbmUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw2
IEBAIGNsYXNzIExvYWRhYmxlTW9kdWxlU2NyaXB0OwogY2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0
ZXJzOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xh
c3MgVVJMOwogY2xhc3MgV2lkZ2V0Owogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCShy
ZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1
bGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRl
ICJDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJVUkxIYXNoLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFz
aC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U291cmNlQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRlICJDYWNo
ZWRTY3JpcHRGZXRjaGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Tb3VyY2VDb2Rl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlUHJvdmlkZXIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNp
b24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTQ1MzIsNyArNDUzMiw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgaWYgKE5lZWRzSW1wbGVtZW50YXRpb25DbGFzcygkaW50ZXJm
YWNlKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tSGVhcFNuYXBz
aG90fSkgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPEphdmFTY3JpcHRDb3JlL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuaD4iKTsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIpOwotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVVJMLmgiKTsK
KyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjx3dGYvVVJMLmg+Iik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmhlYXBTbmFwc2hvdChKU0NlbGwqIGNl
bGwsIEhlYXBTbmFwc2hvdEJ1aWxkZXImIGJ1aWxkZXIpXG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwpAQCAtNDU0NCw3
ICs0NTQ0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBpZiAo
JGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24pIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siVVJMLmgi
fSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmlu
ZyI7CisgICAgICAgICRpbXBsSW5jbHVkZXN7Ijx3dGYvVVJMLmg+In0gPSAxIGlmICRpbmRleGVk
R2V0dGVyT3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJET01TdHJpbmciOwogICAgICAgICBpZiAo
JGludGVyZmFjZU5hbWUgPX4gL15IVE1MXHcqQ29sbGVjdGlvbiQvIG9yICRpbnRlcmZhY2VOYW1l
IGVxICJSYWRpb05vZGVMaXN0IikgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNOb2Rl
LmgifSA9IDE7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJOb2RlLmgifSA9IDE7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRJbmZvLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTE5NCw3ICsxOTQsNyBAQCBCbG9ja2VkU3RhdHVz
IENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6TWFrZUhUVFBTOiB7CiAgICAgICAg
ICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwgdXJsLnByb3RvY29sSXMoIndzIikp
Ci0gICAgICAgICAgICAgICAgJiYgKCF1cmwucG9ydCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90
b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCisgICAgICAgICAgICAg
ICAgJiYgKCF1cmwucG9ydCgpIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5w
b3J0KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKICAgICAgICAgICAgICAgICB3aWxsTWFr
ZUhUVFBTID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNDQsNyAr
MjQ0LDcgQEAgQmxvY2tlZFN0YXR1cyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OgogICAgICAg
ICAgICAgd2lsbEJsb2NrQ29va2llcyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6TWFrZUhUVFBTOgotICAgICAg
ICAgICAgaWYgKCh1cmwucHJvdG9jb2xJcygiaHR0cCIpIHx8IHVybC5wcm90b2NvbElzKCJ3cyIp
KSAmJiAoIXVybC5wb3J0KCkgfHwgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5wb3J0KCku
dmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKKyAgICAgICAgICAgIGlmICgodXJsLnByb3RvY29s
SXMoImh0dHAiKSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSkgJiYgKCF1cmwucG9ydCgpIHx8IFdU
Rjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5wb3J0KCkudmFsdWUoKSwgdXJsLnByb3Rv
Y29sKCkpKSkKICAgICAgICAgICAgICAgICB3aWxsTWFrZUhUVFBTID0gdHJ1ZTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yOgpAQCAtMjc1LDEyICsyNzUsMTIgQEAgdm9pZCBhcHBseUJs
b2NrZWRTdGF0dXNUb1JlcXVlc3QoY29uc3QgQgogICAgIGlmIChzdGF0dXMubWFkZUhUVFBTKSB7
CiAgICAgICAgIGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwgPSByZXF1ZXN0LnVybCgpOwogICAgICAg
ICBBU1NFUlQob3JpZ2luYWxVUkwucHJvdG9jb2xJcygiaHR0cCIpKTsKLSAgICAgICAgQVNTRVJU
KCFvcmlnaW5hbFVSTC5wb3J0KCkgfHwgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG9yaWdpbmFs
VVJMLnBvcnQoKS52YWx1ZSgpLCBvcmlnaW5hbFVSTC5wcm90b2NvbCgpKSk7CisgICAgICAgIEFT
U0VSVCghb3JpZ2luYWxVUkwucG9ydCgpIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29s
KG9yaWdpbmFsVVJMLnBvcnQoKS52YWx1ZSgpLCBvcmlnaW5hbFVSTC5wcm90b2NvbCgpKSk7CiAK
ICAgICAgICAgVVJMIG5ld1VSTCA9IG9yaWdpbmFsVVJMOwogICAgICAgICBuZXdVUkwuc2V0UHJv
dG9jb2woImh0dHBzIik7CiAgICAgICAgIGlmIChvcmlnaW5hbFVSTC5wb3J0KCkpCi0gICAgICAg
ICAgICBuZXdVUkwuc2V0UG9ydChkZWZhdWx0UG9ydEZvclByb3RvY29sKCJodHRwcyIpLnZhbHVl
KCkpOworICAgICAgICAgICAgbmV3VVJMLnNldFBvcnQoV1RGOjpkZWZhdWx0UG9ydEZvclByb3Rv
Y29sKCJodHRwcyIpLnZhbHVlKCkpOwogICAgICAgICByZXF1ZXN0LnNldFVSTChuZXdVUkwpOwog
ICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCShyZXZpc2lvbiAyMzY3NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3Mg
VVJMOwogCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCwxMiArMjAsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1VSTEhh
c2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydGllcy5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgQ1NT
U3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ29sb3I7CiBj
bGFzcyBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM7Ci1jbGFzcyBVUkw7CiBjbGFzcyBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOwog
Y2xhc3MgU3R5bGVkRWxlbWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAko
cmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKLWNsYXNzIFVSTDsKIGNsYXNz
IEtleWZyYW1lTGlzdDsKIGNsYXNzIEtleWZyYW1lVmFsdWU7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZh
bHVhdG9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCShyZXZpc2lvbiAyMzY3NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw2IEBAIGNsYXNzIENTU0ltcG9ydFJ1bGU7CiBjbGFzcyBNZWRpYUxpc3Q7CiBjbGFzcyBO
b2RlOwogY2xhc3MgU3R5bGVTaGVldDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgU3R5bGVTaGVldCA6
IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU2hlZXQ+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjIs
MTAgKzIyLDEwIEBACiAKICNpbmNsdWRlICJDU1NQYXJzZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAi
Q2FjaGVQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCShy
ZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNv
bnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsOSBAQAogCiAjaW5jbHVkZSAiQ1NT
UGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIlVSTC5o
IgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODMsNyAr
ODMsNyBAQCBXRUJDT1JFX0VYUE9SVCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBzCiBzdHJ1Y3Qg
Q1NTUGFyc2VyQ29udGV4dEhhc2ggewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGtleSkKICAgICB7Ci0gICAgICAgIGF1dG8gaGFzaCA9IFVSTEhhc2g6
Omhhc2goa2V5LmJhc2VVUkwpOworICAgICAgICBhdXRvIGhhc2ggPSBXVEY6OlVSTEhhc2g6Omhh
c2goa2V5LmJhc2VVUkwpOwogICAgICAgICBpZiAoIWtleS5jaGFyc2V0LmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIGhhc2ggXj0gU3RyaW5nSGFzaDo6aGFzaChrZXkuY2hhcnNldCk7CiAgICAgICAg
IHVuc2lnbmVkIGJpdHMgPSBrZXkuaXNIVE1MRG9jdW1lbnQgICAgICAgICAgICAgICAgICA8PCAw
CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHRIYXNoIHsKIAogbmFt
ZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1Bh
cnNlckNvbnRleHQ+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4
dD4gewotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDU1NQ
YXJzZXJDb250ZXh0JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QuYmFzZVVSTCkgV2ViQ29y
ZTo6VVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyB2b2lkIGNv
bnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7IG5l
dyAoTm90TnVsbCwgJnNsb3QuYmFzZVVSTCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
KTsgfQogICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkNTU1Bh
cnNlckNvbnRleHQmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5iYXNlVVJMLmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7IH0KICAgICBzdGF0aWMgV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCBlbXB0
eVZhbHVlKCkgeyByZXR1cm4gV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dChXZWJDb3JlOjpIVE1M
U3RhbmRhcmRNb2RlKTsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VySWRpb21zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJJZGlvbXMuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsNiBA
QAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgVVJMOwogICAgIAogLy8gU3BhY2UgY2hhcmFjdGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBD
U1Mgc3BlY2lmaWNhdGlvbi4KIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyN3
aGl0ZXNwYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAkocmV2aXNpb24g
MjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDEwICs0MywxMCBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0YXRpY1Bhc3RlYm9hcmQu
aCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKICNpbmNsdWRlICJXZWJDb250ZW50UmVhZGVyLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgiCiAjaW5jbHVkZSAibWFy
a3VwLmgiCisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L0NoYXJhY3Rlck5hbWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI1NSw3ICsyNTUs
NyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RGF0YUZyb21JdGVtTGlzdChjCiAgICAgaWYgKHR5
cGUgPT0gInRleHQvaHRtbCIpCiAgICAgICAgIHNhbml0aXplZERhdGEgPSBzYW5pdGl6ZU1hcmt1
cChkYXRhKTsKICAgICBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L3VyaS1saXN0IikgewotICAgICAg
ICBhdXRvIHVybCA9IFVSTFBhcnNlcihkYXRhKS5yZXN1bHQoKTsKKyAgICAgICAgYXV0byB1cmwg
PSBVUkwoeyB9LCBkYXRhKTsKICAgICAgICAgaWYgKHVybC5pc1ZhbGlkKCkpCiAgICAgICAgICAg
ICBzYW5pdGl6ZWREYXRhID0gdXJsLnN0cmluZygpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAi
dGV4dC9wbGFpbiIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIzNjc2
NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxMzYsNyArMzEzNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShj
b24KIAogdm9pZCBEb2N1bWVudDo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGNvbnN0
IFVSTCYgbmV3VVJMID0gdXJsLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiB1cmw7CisgICAgY29u
c3QgVVJMJiBuZXdVUkwgPSB1cmwuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogdXJsOwog
ICAgIGlmIChuZXdVUkwgPT0gbV91cmwpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzQyNiw3ICsz
NDI2LDcgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdihjb25zdCBTdAogICAgICAg
ICAgICAgICAgIGNvbXBsZXRlZFVSTCA9IG1fdXJsOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIGNvbXBsZXRlZFVSTCA9IGNvbXBsZXRlVVJMKHVybFN0cmluZyk7Ci0gICAgICAg
ICAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlZFVSTCkpCisgICAgICAgICAg
ICBpZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKICAgICAgICAg
ICAgICAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVkaXJlY3QoKnRo
aXMsIGRlbGF5LCBjb21wbGV0ZWRVUkwpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiUmVmdXNlZCB0byByZWZyZXNoICIgKyBtX3VybC5zdHJp
bmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICIgdG8gYSBqYXZhc2NyaXB0OiBVUkwiOwpA
QCAtNDg4OCw3ICs0ODg4LDcgQEAgVVJMIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJp
bmcmIAogICAgIC8vIFNlZSBhbHNvIFtDU1NdU3R5bGVTaGVldDo6Y29tcGxldGVVUkwoY29uc3Qg
U3RyaW5nJikKICAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gVVJMKCk7Ci0g
ICAgY29uc3QgVVJMJiBiYXNlVVJMID0gKChiYXNlVVJMT3ZlcnJpZGUuaXNFbXB0eSgpIHx8IGJh
c2VVUkxPdmVycmlkZSA9PSBibGFua1VSTCgpKSAmJiBwYXJlbnREb2N1bWVudCgpKSA/IHBhcmVu
dERvY3VtZW50KCktPmJhc2VVUkwoKSA6IGJhc2VVUkxPdmVycmlkZTsKKyAgICBjb25zdCBVUkwm
IGJhc2VVUkwgPSAoKGJhc2VVUkxPdmVycmlkZS5pc0VtcHR5KCkgfHwgYmFzZVVSTE92ZXJyaWRl
ID09IFdURjo6YmxhbmtVUkwoKSkgJiYgcGFyZW50RG9jdW1lbnQoKSkgPyBwYXJlbnREb2N1bWVu
dCgpLT5iYXNlVVJMKCkgOiBiYXNlVVJMT3ZlcnJpZGU7CiAgICAgaWYgKCFtX2RlY29kZXIpCiAg
ICAgICAgIHJldHVybiBVUkwoYmFzZVVSTCwgdXJsKTsKICAgICByZXR1cm4gVVJMKGJhc2VVUkws
IHVybCwgbV9kZWNvZGVyLT5lbmNvZGluZ0ZvclVSTFBhcnNpbmcoKSk7CkBAIC03MTYyLDkgKzcx
NjIsOSBAQCBEb2N1bWVudCYgRG9jdW1lbnQ6OmVuc3VyZVRlbXBsYXRlRG9jdW1lCiAgICAgICAg
IHJldHVybiBjb25zdF9jYXN0PERvY3VtZW50Jj4oKmRvY3VtZW50KTsKIAogICAgIGlmIChpc0hU
TUxEb2N1bWVudCgpKQotICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6
OmNyZWF0ZShudWxscHRyLCBibGFua1VSTCgpKTsKKyAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50
ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgV1RGOjpibGFua1VSTCgpKTsKICAgICBl
bHNlCi0gICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUobnVsbHB0
ciwgYmxhbmtVUkwoKSk7CisgICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IERvY3VtZW50Ojpj
cmVhdGUobnVsbHB0ciwgV1RGOjpibGFua1VSTCgpKTsKIAogICAgIG1fdGVtcGxhdGVEb2N1bWVu
dC0+c2V0Q29udGV4dERvY3VtZW50KGNvbnRleHREb2N1bWVudCgpKTsKICAgICBtX3RlbXBsYXRl
RG9jdW1lbnQtPnNldFRlbXBsYXRlRG9jdW1lbnRIb3N0KHRoaXMpOyAvLyBiYWxhbmNlZCBpbiBk
dG9yLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzEsNyArNjcxLDcg
QEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3VybDsgfQogICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYpOwotICAgIGNvbnN0IFVSTCYgdXJs
Rm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3VybC5pc0VtcHR5KCkgPyBibGFua1VSTCgp
IDogbV91cmw7IH0KKyAgICBjb25zdCBVUkwmIHVybEZvckJpbmRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV91cmwuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogbV91cmw7IH0KIAogICAgIC8v
IFRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGNvbmNlcHRzIHJlbGF0ZSB0byBvbmUgYW5vdGhlciwg
cGxlYXNlIHNlZSB0aGUKICAgICAvLyBjb21tZW50cyBzdXJyb3VuZGluZyB0aGVpciBkZWNsYXJh
dGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxOSw3ICsx
NzE5LDcgQEAgYm9vbCBFbGVtZW50Ojppc0V2ZW50SGFuZGxlckF0dHJpYnV0ZShjbwogCiBib29s
IEVsZW1lbnQ6OmlzSmF2YVNjcmlwdFVSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJp
YnV0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKSAmJiBw
cm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0
cmlidXRlLnZhbHVlKCkpKTsKKyAgICByZXR1cm4gaXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKSAm
JiBXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyhhdHRyaWJ1dGUudmFsdWUoKSkpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnN0cmlwU2NyaXB0
aW5nQXR0cmlidXRlcyhWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlVmVjdG9yKSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAJKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3du
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBDU1NQYXJzZXJD
b250ZXh0IHBhcnNlckNvbnRleHRGb3IKIHsKICAgICBhdXRvKiBzaGFkb3dSb290ID0gZWxlbWVu
dC5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIC8vIFVzZXIgYWdlbnQgc2hhZG93IHRyZWVz
IGNhbid0IGNvbnRhaW4gZG9jdW1lbnQtcmVsYXRpdmUgVVJMcy4gVXNlIGJsYW5rIFVSTCBhcyBi
YXNlIGFsbG93aW5nIGNyb3NzLWRvY3VtZW50IHNoYXJpbmcuCi0gICAgYXV0byYgYmFzZVVSTCA9
IHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpVc2Vy
QWdlbnQgPyBibGFua1VSTCgpIDogZWxlbWVudC5kb2N1bWVudCgpLmJhc2VVUkwoKTsKKyAgICBh
dXRvJiBiYXNlVVJMID0gc2hhZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93
Um9vdE1vZGU6OlVzZXJBZ2VudCA/IFdURjo6YmxhbmtVUkwoKSA6IGVsZW1lbnQuZG9jdW1lbnQo
KS5iYXNlVVJMKCk7CiAKICAgICBDU1NQYXJzZXJDb250ZXh0IHJlc3VsdCA9IENTU1BhcnNlckNv
bnRleHQgeyBlbGVtZW50LmRvY3VtZW50KCksIGJhc2VVUkwsIGVsZW1lbnQuZG9jdW1lbnQoKS5j
aGFyYWN0ZXJTZXRXaXRoVVRGOEZhbGxiYWNrKCkgfTsKICAgICBpZiAoc2hhZG93Um9vdCAmJiBz
aGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgRG9jdW1lbnQqIE5vZGU6
Om93bmVyRG9jdW1lbnQoKSBjb25zdAogY29uc3QgVVJMJiBOb2RlOjpiYXNlVVJJKCkgY29uc3QK
IHsKICAgICBhdXRvJiB1cmwgPSBkb2N1bWVudCgpLmJhc2VVUkwoKTsKLSAgICByZXR1cm4gdXJs
LmlzTnVsbCgpID8gYmxhbmtVUkwoKSA6IHVybDsKKyAgICByZXR1cm4gdXJsLmlzTnVsbCgpID8g
V1RGOjpibGFua1VSTCgpIDogdXJsOwogfQogCiBib29sIE5vZGU6OmlzRXF1YWxOb2RlKE5vZGUq
IG90aGVyKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsMTEgQEAK
ICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlN0eWxlVmFsaWRp
dHkuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMSGFzaC5oPgogCiAvLyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBE
b2N1bWVudC5oIGFsc28gZGVwZW5kcyBvbiBpdC4KICNkZWZpbmUgRFVNUF9OT0RFX1NUQVRJU1RJ
Q1MgMApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw2IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlw
dDsKIGNsYXNzIFBlbmRpbmdTY3JpcHQ7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwotY2xhc3Mg
VVJMOwogCiBjbGFzcyBTY3JpcHRFbGVtZW50IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtNjgsNyArNjgsNiBAQCBjbGFzcyBSZWplY3RlZFByb21pc2VUcmFja2VyOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTb2NrZXRQcm92
aWRlcjsKLWNsYXNzIFVSTDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIGNsYXNzIFNl
cnZpY2VXb3JrZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCShyZXZp
c2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTZWN1cml0eU9yaWdpblBvbGljeTsKIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeTsKLWNsYXNzIFVSTDsKIAogZW51bSBTYW5kYm94RmxhZyB7CiAgICAg
Ly8gU2VlIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
I2F0dHItaWZyYW1lLXNhbmRib3ggZm9yIGEgbGlzdCBvZiB0aGUgc2FuZGJveCBmbGFncy4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxMCw5ICsx
NTEwLDkgQEAgdm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgVVJMJiB1cmwsIGNvbgogICAgIHBh
c3RlYm9hcmQud3JpdGUocGFzdGVib2FyZFVSTCk7CiB9CiAKLVBhc3RlYm9hcmRXcml0ZXJEYXRh
OjpVUkwgRWRpdG9yOjpwYXN0ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQorUGFzdGVib2FyZFdyaXRlckRhdGE6OlVSTERhdGEgRWRpdG9yOjpwYXN0
ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewot
ICAgIFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkwgcmVzdWx0OworICAgIFBhc3RlYm9hcmRXcml0
ZXJEYXRhOjpVUkxEYXRhIHJlc3VsdDsKIAogICAgIHJlc3VsdC51cmwgPSB1cmw7CiAgICAgcmVz
dWx0LnRpdGxlID0gdGl0bGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9u
IDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNvcHlVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgdm9pZCBjb3B5
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmKTsKLSAgICBQ
YXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMIHBhc3RlYm9hcmRXcml0ZXJVUkwoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgUGFzdGVib2FyZFdyaXRlckRhdGE6OlVSTERhdGEg
cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICNp
ZiAhUExBVEZPUk0oSU9TKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weUltYWdlKGNvbnN0
IEhpdFRlc3RSZXN1bHQmKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
YXJrdXBBY2N1bXVsYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9NYXJrdXBBY2N1bXVsYXRvci5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3
ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgog
I2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCkBAIC0yMzIs
NyArMjMyLDcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQQogICAg
IGNvbnN0IFN0cmluZyByZXNvbHZlZFVSTFN0cmluZyA9IHJlc29sdmVVUkxJZk5lZWRlZChlbGVt
ZW50LCBhdHRyaWJ1dGUudmFsdWUoKSk7CiAgICAgVUNoYXIgcXVvdGVDaGFyID0gJyInOwogICAg
IFN0cmluZyBzdHJpcHBlZFVSTFN0cmluZyA9IHJlc29sdmVkVVJMU3RyaW5nLnN0cmlwV2hpdGVT
cGFjZSgpOwotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcHBlZFVSTFN0cmluZykp
IHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcHBlZFVSTFN0cmluZykp
IHsKICAgICAgICAgLy8gbWluaW1hbCBlc2NhcGluZyBmb3IgamF2YXNjcmlwdCB1cmxzCiAgICAg
ICAgIGlmIChzdHJpcHBlZFVSTFN0cmluZy5jb250YWlucygnIicpKSB7CiAgICAgICAgICAgICBp
ZiAoc3RyaXBwZWRVUkxTdHJpbmcuY29udGFpbnMoJ1wnJykpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDExICs3MywxMSBAQAogI2luY2x1ZGUg
IlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUg
IlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2lu
Y2x1ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNs
dWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE2MSw3
ICsxNjEsNyBAQCB2b2lkIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhSZWY8CiAgICAg
ICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJ
dGVyYXRvcigpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGZvciBz
cmNzZXQuCiAgICAgICAgICAgICBpZiAoZWxlbWVudC5hdHRyaWJ1dGVDb250YWluc1VSTChhdHRy
aWJ1dGUpICYmICFhdHRyaWJ1dGUudmFsdWUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAg
ICBVUkwgdXJsID0gVVJMUGFyc2VyIHsgYXR0cmlidXRlLnZhbHVlKCkgfS5yZXN1bHQoKTsKKyAg
ICAgICAgICAgICAgICBVUkwgdXJsKHsgfSwgYXR0cmlidXRlLnZhbHVlKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChzaG91bGRSZW1vdmVVUkwodXJsKSkKICAgICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlc1RvUmVtb3ZlLmFwcGVuZCh7IGVsZW1lbnQsIGF0dHJpYnV0ZS5uYW1lKCkgfSk7CiAg
ICAgICAgICAgICB9CkBAIC05NTEsNyArOTUxLDcgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNy
ZWF0ZUZyYWdtZW50RnJvbQogCiAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXAsIGZha2VC
b2R5LnB0cigpLCBwYXJzZXJDb250ZW50UG9saWN5KTsKICAgICByZXN0b3JlQXR0YWNobWVudEVs
ZW1lbnRzSW5GcmFnbWVudChmcmFnbWVudCk7Ci0gICAgaWYgKCFiYXNlVVJMLmlzRW1wdHkoKSAm
JiBiYXNlVVJMICE9IGJsYW5rVVJMKCkgJiYgYmFzZVVSTCAhPSBkb2N1bWVudC5iYXNlVVJMKCkp
CisgICAgaWYgKCFiYXNlVVJMLmlzRW1wdHkoKSAmJiBiYXNlVVJMICE9IFdURjo6YmxhbmtVUkwo
KSAmJiBiYXNlVVJMICE9IGRvY3VtZW50LmJhc2VVUkwoKSkKICAgICAgICAgY29tcGxldGVVUkxz
KGZyYWdtZW50LnB0cigpLCBiYXNlVVJMKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBjbGFz
cyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
SFRNTEVsZW1lbnQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNz
IFF1YWxpZmllZE5hbWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFE
ZXRlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24uaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAg
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBj
bGFzcyBSYW5nZTsKLWNsYXNzIFVSTDsKIAogZW51bSBEYXRhRGV0ZWN0b3JUeXBlcyB7CiAgICAg
RGF0YURldGVjdG9yVHlwZU5vbmUgPSAwLApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMSAr
NTEsMTEgQEAKICNpbXBvcnQgIlJlbmRlclN0eWxlLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1w
b3J0ICJXZWJDb250ZW50UmVhZGVyLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIK
ICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRT
dHJpbmdTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+
CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8d3RmL2NvY29h
L05TVVJMRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTgyLDcgKzE4Miw3
IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnUKIAogU3RyaW5nIEVk
aXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CisgICAgcmV0dXJuIFdURjo6dXNlclZpc2li
bGVTdHJpbmcodXJsKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5S
VEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0JKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2IEBACiAjaW1wb3J0
ICJTZXR0aW5ncy5oIgogI2ltcG9ydCAiU29ja2V0UHJvdmlkZXIuaCIKICNpbXBvcnQgIlR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgotI2ltcG9ydCAiVVJMUGFyc2VyLmgiCiAjaW1w
b3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0
dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIldlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNl
SGFuZGxlci5oIgpAQCAtNjIsNiArNjEsNyBAQAogI2ltcG9ydCAibWFya3VwLmgiCiAjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgogI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMUGFyc2VyLmg+CiAKICNpZiBQTEFURk9STShN
QUMpCiAjaW5jbHVkZSAiTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oIgpAQCAtMjg4LDcg
KzI4OCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2gKIAogICAg
ICAgICBhdXRvIG5hbWUgPSBpbWFnZS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6YWx0QXR0cik7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIG5hbWUgPSBVUkxQYXJzZXIgeyByZXNvdXJjZVVSTFN0cmluZyB9LnJlc3VsdCgpLmxhc3RQ
YXRoQ29tcG9uZW50KCk7CisgICAgICAgICAgICBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VVUkxT
dHJpbmcpLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIG5hbWUgPSBBdG9taWNTdHJpbmcoIm1lZGlhIik7CiAKQEAgLTMwNiw3ICsz
MDYsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNoCiAgICAgICAg
IGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgYXV0byBuYW1lID0gVVJMUGFyc2VyIHsgcmVzb3VyY2VVUkxTdHJp
bmcgfS5yZXN1bHQoKS5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBhdXRvIG5hbWUgPSBV
UkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygiZmls
ZSIpOwogCkBAIC01MTgsNyArNTE4LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2Vi
QXJjaGl2ZShTaAogICAgIFN0cmluZyBzYW5pdGl6ZWRNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdp
dGhBcmNoaXZlKGZyYW1lLCAqZnJhbWUuZG9jdW1lbnQoKSwgKnJlc3VsdCwgbXNvTGlzdFF1aXJr
c0Zvck1hcmt1cCgpLCBbJl0gKGNvbnN0IFN0cmluZyYgdHlwZSkgewogICAgICAgICByZXR1cm4g
ZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpOwogICAg
IH0pOwotICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBzYW5pdGl6ZWRNYXJrdXAsIGJsYW5rVVJMKCksIERpc2FsbG93U2NyaXB0aW5nQW5k
UGx1Z2luQ29udGVudCk7CisgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAo
KmZyYW1lLmRvY3VtZW50KCksIHNhbml0aXplZE1hcmt1cCwgV1RGOjpibGFua1VSTCgpLCBEaXNh
bGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOwogCiAgICAgaWYgKCFmcmFnbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMSArNTIsMTEgQEAKICNpbXBvcnQg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5oIgog
I2ltcG9ydCAiV2ViQ29udGVudFJlYWRlci5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFz
LmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIm1h
cmt1cC5oIgogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8cGFsL3N5c3RlbS9T
b3VuZC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMjUzLDcgKzI1Myw3IEBAIFN0cmluZyBFZGl0b3I6OnBsYWluVGV4dEZy
b21QYXN0ZWJvYXJkKGMKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhpcyBpcyAxMDAl
IGNvcnJlY3Qgc2luY2Ugd2Uga25vdyAtW05TVVJMIFVSTFdpdGhTdHJpbmc6XSBkb2VzIG5vdCBo
YW5kbGUKICAgICAvLyBhbGwgdGhlIHNhbWUgY2FzZXMgd2UgaGFuZGxlIHdlbGwgaW4gdGhlIFVS
TCBjb2RlIGZvciBjcmVhdGluZyBhbiBOU1VSTC4KICAgICBpZiAodGV4dC5pc1VSTCkKLSAgICAg
ICAgc3RyaW5nID0gdXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5n
XSk7CisgICAgICAgIHN0cmluZyA9IFdURjo6dXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdp
dGhTdHJpbmc6c3RyaW5nXSk7CiAKICAgICAvLyBGSVhNRTogV1RGIHNob3VsZCBvZmZlciBhIG5v
bi1NYWMtc3BlY2lmaWMgd2F5IHRvIGNvbnZlcnQgc3RyaW5nIHRvIHByZWNvbXBvc2VkIGZvcm0g
c28gd2UgY2FuIGRvIGl0IGZvciBhbGwgcGxhdGZvcm1zLgogICAgIHJldHVybiBbKE5TU3RyaW5n
ICopc3RyaW5nIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOwpAQCAtMjcy
LDcgKzI3Miw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3QKICAg
ICBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCA9IGltYWdlSW5XZWJBcmNo
aXZlRm9ybWF0KGltYWdlRWxlbWVudCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC51cmwgPSB1
cmw7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwotICAgIHBhc3RlYm9h
cmRJbWFnZS51cmwudXNlclZpc2libGVGb3JtID0gdXNlclZpc2libGVTdHJpbmcocGFzdGVib2Fy
ZEltYWdlLnVybC51cmwpOworICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXNlclZpc2libGVGb3Jt
ID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCk7CiAgICAg
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZl
cigpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gY2FjaGVkSW1hZ2Ut
PnJlc3BvbnNlKCkubWltZVR5cGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QXN5bmNGaWxlU3RyZWFtLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2
IEBACiAKICNpbmNsdWRlICJGaWxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiRmlsZVN0cmVhbUNsaWVu
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9B
dXRvZHJhaW5lZFBvb2wuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KQEAgLTQyLDYgKzQx
LDcgQEAKICNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0FzeW5jRmlsZVN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWxlU3RyZWFtQ2xpZW50OwogY2xhc3Mg
RmlsZVN0cmVhbTsKLWNsYXNzIFVSTDsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQXN5bmNGaWxl
U3RyZWFtIHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCShyZXZpc2lvbiAyMzY3
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlByb3BlcnR5QmFnLmgiCiAjaW5jbHVkZSAi
U2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBACiAKICNpbmNsdWRlICJCbG9iVVJMLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
IDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpJbmRleDogU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iVVJMLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYlVSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCShyZXZpc2lvbiAy
MzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsOCArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQog
Y2xhc3MgRmlsZSBmaW5hbCA6IHB1YmxpYyBCbG9iIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgUHJv
cGVydHlCYWcgOiBCbG9iUHJvcGVydHlCYWcgewpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBACiAKICNpbmNsdWRlICJCbG9iUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGaWxlRXJy
b3IuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAi
VGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYlBhcnQ7Ci1j
bGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRE9N
V2luZG93LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIlNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAkocmV2aXNpb24gMjM2NzY2KQor
KysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCw2IEBAIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFz
cyBJbWFnZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIGVudW0gY2xhc3Mg
UHJ1bmluZ1JlYXNvbjsKIAogV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgKCpub3RpZnlIaXN0
b3J5SXRlbUNoYW5nZWQpKEhpc3RvcnlJdGVtKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVVSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3Bw
CShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgRXhjZXB0aW9uT3I8UmVmPERPTVVSTD4+IERP
TVVSTDo6Y3JlYXRlKAogCiBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9NVVJMOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgVVJMIGJhc2VVUkwgeyBibGFua1VSTCgpIH07Cisg
ICAgVVJMIGJhc2VVUkwgeyBXVEY6OmJsYW5rVVJMKCkgfTsKICAgICBVUkwgY29tcGxldGVVUkwg
eyBiYXNlVVJMLCB1cmwgfTsKICAgICBpZiAoIWNvbXBsZXRlVVJMLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9ET01VUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5o
CShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4
Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgIlVSTFV0aWxzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzEsNyArNzEsNyBAQCBi
b29sIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjppc1VSTEFsbG93ZWQoCiAgICAgaWYgKGNvbXBsZXRl
VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocHJvdG9jb2xJ
c0phdmFTY3JpcHQoY29tcGxldGVVUkwpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFT
Y3JpcHQoY29tcGxldGVVUkwpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gY29udGVudERv
YyA9IHRoaXMtPmNvbnRlbnREb2N1bWVudCgpOwogICAgICAgICBpZiAoY29udGVudERvYyAmJiAh
U2NyaXB0Q29udHJvbGxlcjo6Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4oY29udGVudERvYy0+
ZnJhbWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHZv
aWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Om9wZW5VUkwoTG9ja0gKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKG1fVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgbV9VUkwgPSBibGFua1VSTCgpLnN0
cmluZygpOworICAgICAgICBtX1VSTCA9IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKTsKIAogICAg
IFJlZlB0cjxGcmFtZT4gcGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYg
KCFwYXJlbnRGcmFtZSkKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRC
YXNlOjpzZXRMb2NhdGlvbihjCiAKIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldExvY2F0
aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBuZXdMb2NhdGlvbikKIHsK
LSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKG5ld0xvY2F0aW9uKSkpIHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlw
dChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobmV3TG9jYXRpb24pKSkgewogICAg
ICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUs
IGNvbnRlbnREb2N1bWVudCgpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDcgKzQ0LDYgQEAgY2xhc3MgSWNvbjsKIGNsYXNzIElucHV0VHlwZTsKIGNsYXNzIExpc3RB
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKIGNsYXNzIFJhZGlvQnV0dG9uR3JvdXBzOwotY2xhc3Mg
VVJMOwogCiBzdHJ1Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVyczsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NVG9rZW5MaXN0OwogY2xhc3Mg
SFRNTExpbmtFbGVtZW50OwotY2xhc3MgVVJMOwogc3RydWN0IE1lZGlhUXVlcnlQYXJzZXJDb250
ZXh0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBFdmVudFNlbmRlcjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjM2NzY2KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTY4LDggKzE2OCw4IEBACiAKIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGUgPD4KLXN0
cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpVUkw+IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQorc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewor
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgewogI2lmICFM
T0dfRElTQUJMRUQKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1VUkxMZW5n
dGhGb3JMb2dnaW5nID0gNTEyOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgs
NyArMTU4LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojppc0ltYWdlVHlwZQogYm9v
bCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjphbGxvd2VkVG9Mb2FkRnJhbWVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpCiB7CiAgICAgVVJMIGNvbXBsZXRlVVJMID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVS
TCh1cmwpOwotICAgIGlmIChjb250ZW50RnJhbWUoKSAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChj
b21wbGV0ZVVSTCkgJiYgIWRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3MoY29u
dGVudERvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgIGlmIChjb250ZW50RnJhbWUo
KSAmJiBXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKSAmJiAhZG9jdW1lbnQo
KS5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzcyhjb250ZW50RG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5m
cmFtZSgpLT5pc1VSTEFsbG93ZWQoY29tcGxldGVVUkwpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUJpdG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VCaXRtYXAuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZUJpdG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIEludFJl
Y3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgUGVuZGluZ0ltYWdlQml0bWFwOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFVSTDsKIHN0cnVjdCBJbWFnZUJpdG1hcE9wdGlv
bnM7CiAKIGNsYXNzIEltYWdlQml0bWFwIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGlj
IFJlZkNvdW50ZWQ8SW1hZ2VCaXRtYXA+IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFGcmFnbWVudFVSSVBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MTQgKzI3LDEyIEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNs
YXNzIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIgZmluYWwgewogcHVibGljOgogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQ
dWJsaWNVUkxNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaAkocmV2aXNp
b24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBVUkxSZWdpc3RyeTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
SW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0
VHlwZS5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5w
dXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkhU
TUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgogI2luY2x1ZGUg
IkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9V
UkxSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0
cnkuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3Ry
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdpc3Ry
eTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcAkocmV2aXNp
b24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpbmNsdWRlICJVUkxTZWFyY2hQYXJh
bXMuaCIKIAogI2luY2x1ZGUgIkRPTVVSTC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBVUkxTZWFy
Y2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhjb25zdCBTdHJpbmcmIGluaXQsIERPTVVSTCogYXNz
b2NpYXRlZFVSTCkKICAgICA6IG1fYXNzb2NpYXRlZFVSTChhc3NvY2lhdGVkVVJMKQotICAgICwg
bV9wYWlycyhpbml0LnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVk
Rm9ybShTdHJpbmdWaWV3KGluaXQpLnN1YnN0cmluZygxKSkgOiBVUkxQYXJzZXI6OnBhcnNlVVJM
RW5jb2RlZEZvcm0oaW5pdCkpCisgICAgLCBtX3BhaXJzKGluaXQuc3RhcnRzV2l0aCgnPycpID8g
V1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhpbml0KS5zdWJz
dHJpbmcoMSkpIDogV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oaW5pdCkpCiB7
CiB9CiAKQEAgLTEzMywyMCArMTMzLDIwIEBAIHZvaWQgVVJMU2VhcmNoUGFyYW1zOjpyZW1vdmUo
Y29uc3QgU3RyaW4KIAogU3RyaW5nIFVSTFNlYXJjaFBhcmFtczo6dG9TdHJpbmcoKSBjb25zdAog
ewotICAgIHJldHVybiBVUkxQYXJzZXI6OnNlcmlhbGl6ZShtX3BhaXJzKTsKKyAgICByZXR1cm4g
V1RGOjpVUkxQYXJzZXI6OnNlcmlhbGl6ZShtX3BhaXJzKTsKIH0KIAogdm9pZCBVUkxTZWFyY2hQ
YXJhbXM6OnVwZGF0ZVVSTCgpCiB7CiAgICAgaWYgKG1fYXNzb2NpYXRlZFVSTCkKLSAgICAgICAg
bV9hc3NvY2lhdGVkVVJMLT5zZXRRdWVyeShVUkxQYXJzZXI6OnNlcmlhbGl6ZShtX3BhaXJzKSk7
CisgICAgICAgIG1fYXNzb2NpYXRlZFVSTC0+c2V0UXVlcnkoV1RGOjpVUkxQYXJzZXI6OnNlcmlh
bGl6ZShtX3BhaXJzKSk7CiB9CiAKIHZvaWQgVVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9tQXNz
b2NpYXRlZFVSTCgpCiB7CiAgICAgQVNTRVJUKG1fYXNzb2NpYXRlZFVSTCk7CiAgICAgU3RyaW5n
IHNlYXJjaCA9IG1fYXNzb2NpYXRlZFVSTC0+c2VhcmNoKCk7Ci0gICAgbV9wYWlycyA9IHNlYXJj
aC5zdGFydHNXaXRoKCc/JykgPyBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5n
VmlldyhzZWFyY2gpLnN1YnN0cmluZygxKSkgOiBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZv
cm0oc2VhcmNoKTsKKyAgICBtX3BhaXJzID0gc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSA/IFdURjo6
VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcoc2VhcmNoKS5zdWJzdHJp
bmcoMSkpIDogV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oc2VhcmNoKTsKIH0K
IAogc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IFVSTFNl
YXJjaFBhcmFtczo6SXRlcmF0b3I6Om5leHQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9V
UkxVdGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAko
cmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0SG9zdChj
b25zdCBTdHJpbmcmIAogICAgICAgICAgICAgLy8gcmVxdWlyZXMgc2V0dGluZyB0aGUgcG9ydCB0
byAiMCIgaWYgaXQgaXMgc2V0IHRvIGVtcHR5IHN0cmluZy4KICAgICAgICAgICAgIHVybC5zZXRI
b3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yICsgMSkgKyAnMCcpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChw
b3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgICAgICBpZiAoV1RGOjppc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQogICAgICAgICAgICAgICAgIHVybC5z
ZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yKSk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmlu
ZygwLCBwb3J0RW5kKSk7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0
UG9ydChjb25zdCBTdHJpbmcmIAogICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8g
IjAiIGlmIGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCiAgICAgLy8gRklYTUU6IGh0dHA6Ly91
cmwuc3BlYy53aGF0d2cub3JnLyBkb2Vzbid0IGFwcGVhciB0byByZXF1aXJlIHRoaXM7IHRlc3Qg
d2hhdCBicm93c2VycyBkbwogICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1ZS50b1VJbnQoKTsKLSAg
ICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKKyAg
ICBpZiAoV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkp
KQogICAgICAgICB1cmwucmVtb3ZlUG9ydCgpOwogICAgIGVsc2UKICAgICAgICAgdXJsLnNldFBv
cnQocG9ydCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdl
Qml0bWFwLmgiCiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhU
TUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSW1hZ2VCaXRt
YXA7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXZWJHTE9iamVjdDsKIAogY2xhc3MgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAJKHJldmlzaW9uIDIzNjc2
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpbmNsdWRlICJEZWNpbWFsLmgiCiAj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGxp
bWl0cz4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAkocmV2aXNpb24gMjM2NzY2KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgYm9vbCBpc1NlbWljb2xvblNlcGFyYXRlZEF0
dHJpYnV0CiBzdGF0aWMgYm9vbCBzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZUNvbnRhaW5zSmF2YVNj
cmlwdFVSTChTdHJpbmdWaWV3IHNlbWljb2xvblNlcGFyYXRlZFZhbHVlKQogewogICAgIGZvciAo
YXV0byB2YWx1ZSA6IHNlbWljb2xvblNlcGFyYXRlZFZhbHVlLnNwbGl0KCc7JykpIHsKLSAgICAg
ICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHZhbHVlKSkKKyAgICAgICAgaWYgKFdURjo6cHJv
dG9jb2xJc0phdmFTY3JpcHQodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0Niw5ICs0NDYsOSBAQCBib29sIFhTU0F1ZGl0b3I6
OmZpbHRlclNjcmlwdFRva2VuKGNvbnN0CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFs
c2U7CiAgICAgaWYgKG1fd2FzU2NyaXB0VGFnRm91bmRJblJlcXVlc3QpIHsKLSAgICAgICAgZGlk
QmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNyY0F0dHIs
IGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7
Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1
ZXN0LCBTVkdOYW1lczo6aHJlZkF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25T
dHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNl
QXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBYTGlua05hbWVzOjpocmVmQXR0ciwgYmxhbmtV
UkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAg
ICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNy
Y0F0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtl
QXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZklu
amVjdGVkKHJlcXVlc3QsIFNWR05hbWVzOjpocmVmQXR0ciwgV1RGOjpibGFua1VSTCgpLnN0cmlu
ZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAgICBkaWRCbG9j
a1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgWExpbmtOYW1lczo6
aHJlZkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNM
aWtlQXR0cmlidXRlKTsKICAgICB9CiAKICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHQ7CkBAIC00
NjEsNyArNDYxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihjb25zdAog
CiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwogICAgIGlmIChpc0NvbnRhaW5lZElu
UmVxdWVzdChjYW5vbmljYWxpemVkU25pcHBldEZvclRhZ05hbWUocmVxdWVzdCkpKSB7Ci0gICAg
ICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBk
YXRhQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0
cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVj
dGVkKHJlcXVlc3QsIGRhdGFBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRp
b25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiAgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVy
YXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCB0eXBlQXR0cik7CiAgICAgICAgIGRpZEJs
b2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBjbGFzc2lkQXR0
cik7CiAgICAgfQpAQCAtNDgxLDcgKzQ4MSw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyUGFy
YW1Ub2tlbihjb25zdCAKICAgICBpZiAoIUhUTUxQYXJhbUVsZW1lbnQ6OmlzVVJMUGFyYW1ldGVy
KFN0cmluZyhuYW1lQXR0cmlidXRlLnZhbHVlKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVBdHRyLCBi
bGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOwor
ICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVBdHRyLCBX
VEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0
ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihjb25zdCBGaWx0ZXJU
b2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC00OTIsNyArNDkyLDcgQEAgYm9vbCBYU1NBdWRpdG9y
OjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0IAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxz
ZTsKICAgICBpZiAoaXNDb250YWluZWRJblJlcXVlc3QoY2Fub25pY2FsaXplZFNuaXBwZXRGb3JU
YWdOYW1lKHJlcXVlc3QpKSkgewogICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJp
YnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgY29kZUF0dHIsIFN0cmluZygpLCBUcnVuY2F0aW9uU3R5
bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOwotICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0
dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgc3JjQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwg
VHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3Jp
cHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNyY0F0dHIsIFdURjo6Ymxh
bmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKICAg
ICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3Qs
IHR5cGVBdHRyKTsKICAgICB9CiAgICAgcmV0dXJuIGRpZEJsb2NrU2NyaXB0OwpAQCAtNTQ0LDcg
KzU0NCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRm9ybVRva2VuKGNvbnN0IEYKICAgICBB
U1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAg
QVNTRVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwgZm9ybVRhZykpOwogCi0gICAgcmV0dXJuIGVy
YXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBhY3Rpb25BdHRyLCBibGFua1VSTCgpLnN0
cmluZygpKTsKKyAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGFj
dGlvbkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRv
cjo6ZmlsdGVySW5wdXRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBA
IC01NTIsNyArNTUyLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJJbnB1dFRva2VuKGNvbnN0
IAogICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFn
KTsKICAgICBBU1NFUlQoaGFzTmFtZShyZXF1ZXN0LnRva2VuLCBpbnB1dFRhZykpOwogCi0gICAg
cmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBmb3JtYWN0aW9uQXR0ciwg
YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsK
KyAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25B
dHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0
dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQnV0dG9uVG9rZW4oY29uc3Qg
RmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNTYwLDcgKzU2MCw3IEBAIGJvb2wgWFNT
QXVkaXRvcjo6ZmlsdGVyQnV0dG9uVG9rZW4oY29uc3QKICAgICBBU1NFUlQocmVxdWVzdC50b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVx
dWVzdC50b2tlbiwgYnV0dG9uVGFnKSk7CiAKLSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZklu
amVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVu
Y2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0
ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZm9ybWFjdGlvbkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJp
bmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKIH0KIAogYm9vbCBYU1NB
dWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRlclRv
a2VuUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTU3Myw3ICs1NzMsNyBAQCBib29sIFhTU0F1ZGl0b3I6
OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlCiAgICAgICAgIGJvb2wgaXNJbmxpbmVFdmVudEhhbmRs
ZXIgPSBpc05hbWVPZklubGluZUV2ZW50SGFuZGxlcihhdHRyaWJ1dGUubmFtZSk7CiAgICAgICAg
IC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgd2UgZGlkbid0IGNyZWF0ZSBhIG5ldyBT
dHJpbmcgZm9yIGV2ZXJ5IGF0dHJpYnV0ZSBpbiB0aGUgZG9jdW1lbnQuCiAgICAgICAgIFN0cmlu
ZyBzdHJpcHBlZFZhbHVlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKFN0cmlu
ZyhhdHRyaWJ1dGUudmFsdWUpKTsKLSAgICAgICAgYm9vbCB2YWx1ZUNvbnRhaW5zSmF2YVNjcmlw
dFVSTCA9ICghaXNJbmxpbmVFdmVudEhhbmRsZXIgJiYgcHJvdG9jb2xJc0phdmFTY3JpcHQoc3Ry
aXBwZWRWYWx1ZSkpIHx8IChpc1NlbWljb2xvblNlcGFyYXRlZEF0dHJpYnV0ZShhdHRyaWJ1dGUp
ICYmIHNlbWljb2xvblNlcGFyYXRlZFZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMKHN0cmlwcGVk
VmFsdWUpKTsKKyAgICAgICAgYm9vbCB2YWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTCA9ICghaXNJ
bmxpbmVFdmVudEhhbmRsZXIgJiYgV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcHBlZFZh
bHVlKSkgfHwgKGlzU2VtaWNvbG9uU2VwYXJhdGVkQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgc2Vt
aWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoc3RyaXBwZWRWYWx1ZSkp
OwogICAgICAgICBpZiAoIWlzSW5saW5lRXZlbnRIYW5kbGVyICYmICF2YWx1ZUNvbnRhaW5zSmF2
YVNjcmlwdFVSTCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIWlzQ29udGFp
bmVkSW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZShzbmlwcGV0RnJvbUF0dHJpYnV0ZShyZXF1ZXN0LCBh
dHRyaWJ1dGUpLCBUcnVuY2F0aW9uU3R5bGU6OlNjcmlwdExpa2VBdHRyaWJ1dGUpKSkKQEAgLTcy
Nyw3ICs3MjcsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmlzTGlrZWx5U2FmZVJlc291cmNlKGNvCiAg
ICAgLy8gR2l2ZSBlbXB0eSBVUkxzIGFuZCBhYm91dDpibGFuayBhIHBhc3MuIE1ha2luZyBhIHJl
c291cmNlVVJMIGZyb20gYW4KICAgICAvLyBlbXB0eSBzdHJpbmcgYmVsb3cgd2lsbCBsaWtlbHkg
bGF0ZXIgZmFpbCB0aGUgIm5vIHF1ZXJ5IGFyZ3MgdGVzdCIgYXMKICAgICAvLyBpdCBpbmhlcml0
cyB0aGUgZG9jdW1lbnQncyBxdWVyeSBhcmdzLgotICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVy
bCA9PSBibGFua1VSTCgpLnN0cmluZygpKQorICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVybCA9
PSBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gSWYgdGhlIHJlc291cmNlIGlzIGxvYWRlZCBmcm9tIHRoZSBzYW1lIGhvc3QgYXMgdGhlIGVu
Y2xvc2luZyBwYWdlLCBpdCdzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUg
IkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlN1ZmZpeFRyZWUuaCIKICNpbmNsdWRl
ICJUZXh0RW5jb2RpbmcuaCIKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNT
QXVkaXRvckRlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvWFNTQXVkaXRvckRlbGVnYXRlLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6a2lsbFRleHQo
Y29uCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpvcGVuSW5OZXdUYWIoY29uc3QgU3Ry
aW5nJiB1cmwpCiB7Ci0gICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkp
CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1fY2xpZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw3ICs4OCw2IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBUaW1lckJh
c2U7Ci1jbGFzcyBVUkw7CiAjaWYgRU5BQkxFKFdFQkdMKQogY2xhc3MgV2ViR0xQcm9ncmFtOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIFJlc291
cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXZWJTb2Nr
ZXQ7CiAKIHN0cnVjdCBXZWJTb2NrZXRGcmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAkocmV2aXNpb24gMjM2
NzY2KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNiBAQCBjbGFzcyBJbnNwZWN0b3JPdmVy
bGF5OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKLWNsYXNzIFVSTDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvcldvcmtl
ckFnZW50LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYWdlOwotY2xhc3MgVVJMOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oCShyZXZpc2lvbiAyMzY3NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25NYW5pZmVz
dC5oIgogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3Mg
VVJMOwogc3RydWN0IENvb2tpZTsKIHN0cnVjdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2wuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBA
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiAKIHN0cnVj
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaAkocmV2aXNpb24g
MjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsOSBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIgotI2luY2x1ZGUgIlVSTEhh
c2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM1LDcgKzYzNSw3IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgc3dpdGNo
IChzaG91bGRDb250aW51ZSkgewogICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpGb3JTdXNw
ZW5zaW9uOgogICAgICAgICAgICAgLy8gV2UgaGFuZGxlIHN1c3BlbnNpb24gYnkgbmF2aWdhdGlu
ZyBmb3J3YXJkIHRvIGFib3V0OmJsYW5rLCB3aGljaCBsZWF2ZXMgdXMgc2V0dXAgdG8gbmF2aWdh
dGUgYmFjayB0byByZXN1bWUuCi0gICAgICAgICAgICByZXF1ZXN0ID0geyBibGFua1VSTCgpIH07
CisgICAgICAgICAgICByZXF1ZXN0ID0geyBXVEY6OmJsYW5rVVJMKCkgfTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpObzoKICAgICAgICAgICAgIHN0
b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7CkBAIC0xNjY3LDcgKzE2NjcsNyBAQCBib29sIERv
Y3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChtX3JlcXVlc3QudXJsKCkuaXNFbXB0eSgpICYmICFmcmFtZUxvYWRlcigpLT5zdGF0
ZU1hY2hpbmUoKS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpIHsKLSAgICAgICAgbV9y
ZXF1ZXN0LnNldFVSTChibGFua1VSTCgpKTsKKyAgICAgICAgbV9yZXF1ZXN0LnNldFVSTChXVEY6
OmJsYW5rVVJMKCkpOwogICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCiAgICAg
ICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5kaXNwYXRjaERpZENoYW5nZVByb3Zpc2lv
bmFsVVJMKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsNyArMjM0LDcgQEAgcHVibGljOgogICAgIFN0
cmluZyBjbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IHVybEZvckhpc3RvcnkoKTsgfQogICAgIHZvaWQgc2V0Q2xpZW50UmVkaXJlY3RTb3VyY2VGb3JI
aXN0b3J5KGNvbnN0IFN0cmluZyYgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KSB7IG1f
Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JI
aXN0b3J5OyB9CiAgICAgCi0gICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0U291cmNlRm9ySGlzdG9y
eSgpIGNvbnN0IHsgcmV0dXJuICh1cmxGb3JIaXN0b3J5KCkgPT0gdXJsKCkgfHwgdXJsKCkgPT0g
YmxhbmtVUkwoKSkgPyBTdHJpbmcoKSA6IHVybEZvckhpc3RvcnkoKS5zdHJpbmcoKTsgfSAvLyBu
dWxsIGlmIG5vIHNlcnZlciByZWRpcmVjdCBvY2N1cnJlZC4KKyAgICBTdHJpbmcgc2VydmVyUmVk
aXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gKHVybEZvckhpc3RvcnkoKSA9
PSB1cmwoKSB8fCB1cmwoKSA9PSBXVEY6OmJsYW5rVVJMKCkpID8gU3RyaW5nKCkgOiB1cmxGb3JI
aXN0b3J5KCkuc3RyaW5nKCk7IH0gLy8gbnVsbCBpZiBubyBzZXJ2ZXIgcmVkaXJlY3Qgb2NjdXJy
ZWQuCiAgICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0RGVzdGluYXRpb25Gb3JIaXN0b3J5KCkgY29u
c3QgeyByZXR1cm4gdXJsKCk7IH0KIAogICAgIGJvb2wgZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVu
dHJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnk7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJG
b3JtU3RhdGUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIxLDcgKzQyMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0oUmVmPEZvcm1TdWIK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChz
dWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlw
dChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKICAgICAgICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50
KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Zvcm1BY3Rpb24oVVJMKHN1Ym1pc3Np
b24tPmFjdGlvbigpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faXNFeGVjdXRp
bmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7CkBAIC02OTksNyArNjk5LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIGlmICghcGFyc2VIVFRQUmVmcmVz
aChkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6UmVmcmVzaCksIGRlbGF5LCB1cmxTdHJpbmcpKQogICAgICAgICByZXR1cm47CiAgICAgYXV0
byBjb21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gZG9jdW1lbnQudXJsKCkgOiBk
b2N1bWVudC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwotICAgIGlmICghcHJvdG9jb2xJc0phdmFT
Y3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICBpZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQo
Y29tcGxldGVkVVJMKSkKICAgICAgICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2No
ZWR1bGVSZWRpcmVjdChkb2N1bWVudCwgZGVsYXksIGNvbXBsZXRlZFVSTCk7CiAgICAgZWxzZSB7
CiAgICAgICAgIGF1dG8gbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJlc2ggIiArIGRvY3VtZW50
LnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0byBhIGphdmFzY3Jp
cHQ6IFVSTCI7CkBAIC0zMzU1LDcgKzMzNTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51
ZUxvYWRBZnRlck5hdmlnCiAKICAgICAgICAgLy8gV2UgaGFuZGxlIHN1c3BlbnNpb24gYnkgbmF2
aWdhdGluZyBmb3J3YXJkIHRvIGFib3V0OmJsYW5rLCB3aGljaCBsZWF2ZXMgdXMgc2V0dXAgdG8g
bmF2aWdhdGUgYmFjayB0byByZXN1bWUuCiAgICAgICAgIGlmIChzaG91bGRDb250aW51ZSA9PSBT
aG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbikKLSAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlci0+d2lsbENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3Qo
eyBibGFua1VSTCgpIH0pOworICAgICAgICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
LT53aWxsQ29udGludWVNYWluUmVzb3VyY2VMb2FkQWZ0ZXJSZWRpcmVjdCh7IFdURjo6YmxhbmtV
UkwoKSB9KTsKIAogICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9h
ZGluZ01haW5SZXNvdXJjZShzaG91bGRDb250aW51ZSk7CiAgICAgfTsKQEAgLTM5MDYsNyArMzkw
Niw3IEBAIFJlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KEZyYW1lJiBvcGVuZXIKICAgICBjcmVh
dGVkID0gZmFsc2U7CiAKICAgICAvLyBGSVhNRTogUHJvdmlkZSBsaW5lIG51bWJlciBpbmZvcm1h
dGlvbiB3aXRoIHJlc3BlY3QgdG8gdGhlIG9wZW5lcidzIGRvY3VtZW50LgotICAgIGlmIChwcm90
b2NvbElzSmF2YVNjcmlwdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKSAmJiAhb3Bl
bmVyRnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SmF2YVNj
cmlwdFVSTHMob3BlbmVyRnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIHsgfSkpCisgICAgaWYgKFdU
Rjo6cHJvdG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSkg
JiYgIW9wZW5lckZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxv
d0phdmFTY3JpcHRVUkxzKG9wZW5lckZyYW1lLmRvY3VtZW50KCktPnVybCgpLCB7IH0pKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghcmVxdWVzdC5mcmFtZU5hbWUoKS5pc0Vt
cHR5KCkgJiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVxdWVzdC5mcmFtZU5hbWUoKSwgIl9i
bGFuayIpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNiBAQCBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTdWJzdGl0dXRlRGF0YTsKLWNsYXNzIFVSTDsKIGNsYXNzIFdpZGdldDsKIAogZW51bSBj
bGFzcyBQb2xpY3lEZWNpc2lvbk1vZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9I
aXN0b3J5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNSw3ICs2
MTUsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJyZW50SXRlbVNob3VsCiAgICAgLy8g
ICJJZiB0aGUgYnJvd3NpbmcgY29udGV4dCdzIHNlc3Npb24gaGlzdG9yeSBjb250YWlucyBvbmx5
IG9uZSBEb2N1bWVudCwKICAgICAvLyAgIGFuZCB0aGF0IHdhcyB0aGUgYWJvdXQ6YmxhbmsgRG9j
dW1lbnQgY3JlYXRlZCB3aGVuIHRoZSBicm93c2luZyBjb250ZXh0CiAgICAgLy8gICB3YXMgY3Jl
YXRlZCwgdGhlbiB0aGUgbmF2aWdhdGlvbiBtdXN0IGJlIGRvbmUgd2l0aCByZXBsYWNlbWVudCBl
bmFibGVkLiIKLSAgICByZXR1cm4gbV9jdXJyZW50SXRlbSAmJiAhbV9wcmV2aW91c0l0ZW0gJiYg
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2N1cnJlbnRJdGVtLT51cmxTdHJpbmcoKSwgYmxhbmtV
UkwoKSk7CisgICAgcmV0dXJuIG1fY3VycmVudEl0ZW0gJiYgIW1fcHJldmlvdXNJdGVtICYmIGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UobV9jdXJyZW50SXRlbS0+dXJsU3RyaW5nKCksIFdURjo6Ymxh
bmtVUkwoKSk7CiB9CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmNsZWFyUHJldmlvdXNJdGVt
KCkKQEAgLTY1NCw5ICs2NTQsOSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0aWFsaXpl
SXRlbShICiAgICAgLy8gTGF0ZXIgd2UgbWF5IHdhbnQgdG8gbGVhcm4gdG8gbGl2ZSB3aXRoIG5p
bCBmb3IgVVJMLgogICAgIC8vIFNlZSBidWcgMzM2ODIzNiBhbmQgcmVsYXRlZCBidWdzIGZvciBt
b3JlIGluZm9ybWF0aW9uLgogICAgIGlmICh1cmwuaXNFbXB0eSgpKSAKLSAgICAgICAgdXJsID0g
YmxhbmtVUkwoKTsKKyAgICAgICAgdXJsID0gV1RGOjpibGFua1VSTCgpOwogICAgIGlmIChvcmln
aW5hbFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIG9yaWdpbmFsVVJMID0gYmxhbmtVUkwoKTsKKyAg
ICAgICAgb3JpZ2luYWxVUkwgPSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgCiAgICAgU3RyaW5nV2l0
aERpcmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBVUkw7CiBjbGFz
cyBMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50OwogCiBzdHJ1Y3QgTGlua1JlbEF0dHJpYnV0ZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRUaW1pbmcuaAkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRUaW1pbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
MTMgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgTG9hZFRpbWlu
ZyB7CiBwdWJsaWM6CiAgICAgU2Vjb25kcyBzZWNvbmRzU2luY2VTdGFydFRpbWUoTW9ub3Rvbmlj
VGltZSkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAko
cmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vi
cmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBGZXRjaE9wdGlvbnM7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAJKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVj
a2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgTWl4ZWRDb250
ZW50Q2hlY2tlcjo6Y2hlY2tGb3JtRm9yTWkKIHsKICAgICAvLyBVbmNvbmRpdGlvbmFsbHkgYWxs
b3cgamF2YXNjcmlwdDogVVJMcyBhcyBmb3JtIGFjdGlvbnMgYXMgc29tZSBwYWdlcyBkbyB0aGlz
IGFuZCBpdCBkb2VzIG5vdCBpbnRyb2R1Y2UKICAgICAvLyBhIG1peGVkIGNvbnRlbnQgaXNzdWUu
Ci0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCisgICAgaWYgKFdURjo6cHJvdG9j
b2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFpc01peGVk
Q29udGVudChzZWN1cml0eU9yaWdpbiwgdXJsKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NaXhlZENvbnRlbnRDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01peGVkQ29udGVudENoZWNrZXIuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJh
bWVMb2FkZXJDbGllbnQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xh
c3MgTWl4ZWRDb250ZW50Q2hlY2tlciB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
Niw3ICszNjYsNyBAQCBpbmxpbmUgYm9vbCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzaG91bGRTCiB7
CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnBy
b3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVy
biBOYXZpZ2F0aW9uRGlzYWJsZXI6OmlzTmF2aWdhdGlvbkFsbG93ZWQobV9mcmFtZSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgJKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3MgRm9ybVN1Ym1pc3Npb247
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFNjaGVkdWxlZE5hdmlnYXRpb247CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgTmF2aWdhdGlvblNjaGVkdWxlciB7CiBwdWJs
aWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgJKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9ybURhdGE7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiAKIGVudW0gY2xhc3MgVmlvbGF0aW9uUmVwb3J0VHlwZSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgJKHJldmlzaW9uIDIzNjc2NikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3
IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjIzLDcgKzIy
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWcKICAgICBhdXRv
IG9wZW5lclByaW1hcnlEb21haW4gPSBwcmltYXJ5RG9tYWluKG9wZW5lclVybCk7CiAgICAgaWYg
KGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAhPSBvcGVuZXJQcmltYXJ5RG9tYWluCiAgICAg
ICAgICYmICFvcGVuZXJEb2N1bWVudC5oYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzV2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpCi0gICAg
ICAgICYmICFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG9wZW5lclVybC5zdHJpbmcoKSwgYmxhbmtV
UkwoKSkpIHsKKyAgICAgICAgJiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uob3BlbmVyVXJsLnN0
cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpKSB7CiAgICAgICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lckNhbGxiYWNrKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVy
UGFnZUlELCBvcGVuZXJQcmltYXJ5RG9tYWluKTsKICAgICAgICAgLy8gUmVtZW1iZXIgdXNlciBp
bnRlcmFjdGlvbi1iYXNlZCByZXF1ZXN0cyBzaW5jZSB0aGV5IGRvbid0IG5lZWQgdG8gYmUgcmVw
ZWF0ZWQuCiAgICAgICAgIG9wZW5lckRvY3VtZW50LnNldEhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZp
Y1N0b3JhZ2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9uKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2Vzcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZE9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgY2xhc3MgUGFn
ZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCAr
MjYsMTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FudmFzQWN0aXZpdHlSZWNvcmQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFz
cyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcmV2aWV3TG9hZGVyOwotY2xhc3MgVVJMOwog
CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVy
PiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNyBAQAogI2luY2x1ZGUgIkxvYWRUaW1pbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9h
ZE1ldHJpY3MuaCIKICNpbmNsdWRlICJTZXJ2ZXJUaW1pbmcuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NywxNCArNzcsMTQgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhU
TUxGcgogICAgIC8vIFN1cHBvcnQgZm9yIDxmcmFtZSBzcmM9ImphdmFzY3JpcHQ6c3RyaW5nIj4K
ICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFVSTCB1cmw7Ci0gICAgaWYgKHByb3RvY29sSXNKYXZh
U2NyaXB0KHVybFN0cmluZykpIHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1
cmxTdHJpbmcpKSB7CiAgICAgICAgIHNjcmlwdFVSTCA9IGNvbXBsZXRlVVJMKHVybFN0cmluZyk7
IC8vIGNvbXBsZXRlVVJMKCkgZW5jb2RlcyB0aGUgVVJMLgotICAgICAgICB1cmwgPSBibGFua1VS
TCgpOworICAgICAgICB1cmwgPSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgfSBlbHNlCiAgICAgICAg
IHVybCA9IGNvbXBsZXRlVVJMKHVybFN0cmluZyk7CiAKICAgICBpZiAoc2hvdWxkQ29udmVydElu
dmFsaWRVUkxzVG9CbGFuaygpICYmICF1cmwuaXNWYWxpZCgpKQotICAgICAgICB1cmwgPSBibGFu
a1VSTCgpOworICAgICAgICB1cmwgPSBXVEY6OmJsYW5rVVJMKCk7CiAKICAgICBib29sIGhhc0V4
aXN0aW5nRnJhbWUgPSBvd25lckVsZW1lbnQuY29udGVudEZyYW1lKCk7CiAgICAgRnJhbWUqIGZy
YW1lID0gbG9hZE9yUmVkaXJlY3RTdWJmcmFtZShvd25lckVsZW1lbnQsIHVybCwgZnJhbWVOYW1l
LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCk7CkBAIC05NCw3ICs5NCw3IEBAIGJv
b2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnIKICAgICAvLyBJZiB3ZSBjcmVh
dGUgYSBuZXcgc3ViZnJhbWUgdGhlbiBhbiBlbXB0eSBkb2N1bWVudCBpcyBsb2FkZWQgaW50byBp
dCBzeW5jaHJvbm91c2x5IGFuZCBtYXkKICAgICAvLyBjYXVzZSBzY3JpcHQgZXhlY3V0aW9uIChz
YXksIHZpYSBhIERPTSBsb2FkIGV2ZW50IGhhbmRsZXIpIHRoYXQgY2FuIGRvIGFueXRoaW5nLCBp
bmNsdWRpbmcKICAgICAvLyBuYXZpZ2F0aW5nIHRoZSBzdWJmcmFtZS4gV2Ugb25seSB3YW50IHRv
IGV2YWx1YXRlIHNjcmlwdFVSTCBpZiB0aGUgZnJhbWUgaGFzIG5vdCBiZWVuIG5hdmlnYXRlZC4K
LSAgICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChmcmFtZS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKS0+b3JpZ2luYWxVUkwoKSA9PSBibGFua1VSTCgpKTsKKyAgICBib29sIGNhbkV4ZWN1dGVT
Y3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxVUkwoKSA9
PSBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGlmICghc2NyaXB0VVJMLmlzRW1wdHkoKSAmJiBjYW5F
eGVjdXRlU2NyaXB0ICYmIG93bmVyRWxlbWVudC5pc1VSTEFsbG93ZWQoc2NyaXB0VVJMKSkKICAg
ICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoc2NyaXB0VVJMKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDIz
Njc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKIGNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogY2xh
c3MgSW50U2l6ZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFdpZGdldDsKIAogLy8gVGhpcyBpcyBhIHNs
aWdodCBtaXNub21lci4gSXQgaGFuZGxlcyB0aGUgaGlnaGVyIGxldmVsIGxvZ2ljIG9mIGxvYWRp
bmcgYm90aCBzdWJmcmFtZXMgYW5kIHBsdWdpbnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3Vic3RpdHV0ZURhdGEuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAKIAog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAkocmV2aXNpb24gMjM2NzY2
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBVUkw7CiAKIHVzaW5nIEZhbGxiYWNrVVJM
VmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxVUkwsIFVSTD4+OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5o
CShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNywxMCBAQAog
CiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
RE9NQXBwbGljYXRpb25DYWNoZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCShyZXZpc2lvbiAy
MzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRh
dGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNiBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdG9yYWdlSURKb3Vy
bmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZl
c3RQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKIAogI2luY2x1ZGUgIlRleHRSZXNvdXJj
ZURlY29kZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJh
Y3Rlck5hbWVzLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5p
ZmVzdFBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9NYW5pZmVzdFBhcnNlci5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCAr
MzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogc3RydWN0IE1h
bmlmZXN0IHsKICAgICBWZWN0b3I8VVJMPiBvbmxpbmVXaGl0ZWxpc3RlZFVSTHM7CiAgICAgSGFz
aFNldDxTdHJpbmc+IGV4cGxpY2l0VVJMczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgJKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmU7CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1j
bGFzcyBVUkw7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBACiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01MSw2
ICs1MCw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIApAQCAtNTY0LDcgKzU2NCw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXYKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1bWVudCBpbiBh
biBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhlciBkb2N1bWVu
dCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3duKS4gCiAgICAg
U3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBtYXJnaW53
aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTgl
JVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2Uo
KS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwotICAgIGF1dG8gaWZyYW1lUmVzb3Vy
Y2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVyKGlmcmFtZU1hcmt1cCksIGJs
YW5rVVJMKCksICJ0ZXh0L2h0bWwiLCAiVVRGLTgiLCBTdHJpbmcoKSk7CisgICAgYXV0byBpZnJh
bWVSZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFy
a3VwKSwgV1RGOjpibGFua1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOwog
CiAgICAgVmVjdG9yPFJlZjxMZWdhY3lXZWJBcmNoaXZlPj4gc3ViZnJhbWVBcmNoaXZlczsKICAg
ICBzdWJmcmFtZUFyY2hpdmVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9u
IDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDExICs0NywxMSBAQAogI2luY2x1ZGUgIlNjaGVtZVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw3ICs1Nyw2IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7
CiBjbGFzcyBJbWFnZUxvYWRlcjsKIGNsYXNzIFNldHRpbmdzOwotY2xhc3MgVVJMOwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KIHVzaW5nIFJlc291cmNlRXJyb3JPciA9IEV4cGVjdGVkPFQsIFJl
c291cmNlRXJyb3I+OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0
eWxlU2hlZXRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hl
ZENTU1N0eWxlU2hlZXQ7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIENhY2hlZFN0eWxlU2hlZXRDbGll
bnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgJKHJldmlzaW9uIDIzNjc2NikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSAgewogCiBjbGFzcyBDYWNoZWRS
ZXNvdXJjZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw5ICsyNyw5IEBACiAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiTG9hZGVyTlNVUkxFeHRyYXMuaCIKIAotI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KLSNp
bXBvcnQgPHd0Zi9WZWN0b3IuaD4KLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTG9jYWxpemVk
U3RyaW5ncy5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2ltcG9ydCA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUYuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRy
b2xFbGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5o
IgogI2luY2x1ZGUgIlZUVEN1ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgyLDcgKzM4Miw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgeyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IEhhc2hTZXQ8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mKSB7IH07CisgICAg
dmlydHVhbCB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBVUkwmLCBjb25z
dCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgeyB9OwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXN0U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29y
KCkgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCShyZXZpc2lvbiAyMzY3
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNs
aWVudC5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDI5ICszMSwyOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBGcmFtZTsKLSAgICBjbGFzcyBVUkw7CitjbGFzcyBG
cmFtZTsKIAotICAgIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIHZpcnR1YWwgfkNvbnRleHRNZW51Q2xpZW50KCkgPSBkZWZhdWx0OwotICAgICAgICB2aXJ0
dWFsIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKSA9IDA7Ci0gICAgICAgIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKSA9IDA7Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBpc1NwZWFraW5nKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29u
c3QgU3RyaW5nJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgPSAw
OworY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNvbnRl
eHRNZW51Q2xpZW50KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURl
c3Ryb3llZCgpID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3Qg
VVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1l
KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNw
ZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkg
PSAwOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hX
aXRoU3BvdGxpZ2h0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoU3BvdGxpZ2h0
KCkgPSAwOwogI2VuZGlmCiAKICNpZiBVU0UoQUNDRVNTSUJJTElUWV9DT05URVhUX01FTlVTKQot
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzaG93Q29udGV4dE1lbnUoKSA9IDA7CiAjZW5kaWYKLSAgICB9OworfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMzYsNyAr
MTMzNiw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmwKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1h
Z2VUb0Rpc2s6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgaWYgKFdlYkNvcmU6OnBy
b3RvY29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksICJm
aWxlIikpCisgICAgICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKG1fY29udGV4dC5oaXRUZXN0
UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVSTCgpLCAiZmlsZSIpKQogICAgICAgICAgICAgICAgIHNo
b3VsZEVuYWJsZSA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKQEAgLTEzNTEs
NyArMTM1MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmwKICAg
ICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkVmlk
ZW9Ub0Rpc2soKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXRlbS5zZXRU
aXRsZShjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEF1ZGlvVG9EaXNrKCkpOwotICAgICAgICAg
ICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNv
bHV0ZUltYWdlVVJMKCksICJmaWxlIikpCisgICAgICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElz
KG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVSTCgpLCAiZmlsZSIpKQog
ICAgICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weU1lZGlhTGlua1RvQ2xpcGJvYXJk
OgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEs
NyArMTAxLDcgQEAKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3R5bGVT
Y29wZS5oIgogI2luY2x1ZGUgIlN1ZGRlblRlcm1pbmF0aW9uLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgi
CiAjaW5jbHVkZSAiVmlzdWFsVmlld3BvcnQuaCIKICNpbmNsdWRlICJXZWJLaXRQb2ludC5oIgpA
QCAtMjIxNSw3ICsyMjE1LDcgQEAgU3RyaW5nIERPTVdpbmRvdzo6Y3Jvc3NEb21haW5BY2Nlc3NF
cnJvcgogCiBib29sIERPTVdpbmRvdzo6aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhET01XaW5kb3cm
IGFjdGl2ZVdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgaWYgKCFwcm90
b2NvbElzSmF2YVNjcmlwdCh1cmxTdHJpbmcpKQorICAgIGlmICghV1RGOjpwcm90b2NvbElzSmF2
YVNjcmlwdCh1cmxTdHJpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBJZiB0
aGlzIERPTVdpbmRvdyBpc24ndCBjdXJyZW50bHkgYWN0aXZlIGluIHRoZSBGcmFtZSwgdGhlbiB0
aGVyZSdzIG5vCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNjksNyArMTA2OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6
OnN0YXJ0RHJhZyhGcmFtZSYgc3IKICAgICAgICAgICAgIGlmIChtdXN0VXNlTGVnYWN5RHJhZ0Ns
aWVudCkKICAgICAgICAgICAgICAgICBzcmMuZWRpdG9yKCkuY29weVVSTChsaW5rVVJMLCB0ZXh0
Q29udGVudFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSwgZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQo
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcGFzdGVib2FyZFdyaXRlckRh
dGEuc2V0VVJMKHNyYy5lZGl0b3IoKS5wYXN0ZWJvYXJkV3JpdGVyVVJMKGxpbmtVUkwsIHRleHRD
b250ZW50V2l0aFNpbXBsaWZpZWRXaGl0ZVNwYWNlKSk7CisgICAgICAgICAgICAgICAgcGFzdGVi
b2FyZFdyaXRlckRhdGEuc2V0VVJMRGF0YShzcmMuZWRpdG9yKCkucGFzdGVib2FyZFdyaXRlclVS
TChsaW5rVVJMLCB0ZXh0Q29udGVudFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSkpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwYXN0ZWJvYXJkIGFsc28g
Y29udGFpbnMgdHJ1c3R3b3J0aHkgbGluayBkYXRhCiAgICAgICAgICAgICAvLyBidXQgZG9uJ3Qg
b3ZlcndyaXRlIG1vcmUgZ2VuZXJhbCBwYXN0ZWJvYXJkIHR5cGVzLgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBA
CiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3Vy
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgJKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVGhyZWFkYWJs
ZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw2IEBAIGNsYXNz
IFJlbmRlcldpZGdldDsKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIGNsYXNzIFNldHRpbmdzOwotY2xhc3MgVVJMOwogY2xhc3MgVmlzaWJsZVBvc2l0aW9u
OwogY2xhc3MgV2lkZ2V0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlzaW9u
IDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDcgKzUyLDYgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNs
YXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwotY2xhc3MgVVJMOwogY2xh
c3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJCb3g7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0hp
c3RvcnkuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwotY2xhc3MgVVJMOwogCiBjbGFzcyBIaXN0
b3J5IGZpbmFsIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SGlz
dG9yeT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0xvY2F0aW9uLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlv
blNjaGVkdWxlci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw3
ICs1MCw3IEBAIGlubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogCiAgICAg
Y29uc3QgVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAoIXVy
bC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBibGFua1VSTCgpOyAvLyBVc2UgImFib3V0OmJs
YW5rIiB3aGlsZSB0aGUgcGFnZSBpcyBzdGlsbCBsb2FkaW5nIChiZWZvcmUgd2UgaGF2ZSBhIGZy
YW1lKS4KKyAgICAgICAgcmV0dXJuIFdURjo6YmxhbmtVUkwoKTsgLy8gVXNlICJhYm91dDpibGFu
ayIgd2hpbGUgdGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdlIGhhdmUgYSBmcmFt
ZSkuCiAKICAgICByZXR1cm4gdXJsOwogfQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgTG9jYXRp
b246OnJlbG9hZChET01XaW5kb3cmIGFjdGl2ZVcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh0YXJnZXREb2N1bWVudC51cmwoKSkpCisgICAg
aWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodGFyZ2V0RG9jdW1lbnQudXJsKCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1
bGVSZWZyZXNoKGFjdGl2ZURvY3VtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9j
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgJKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERP
TVdpbmRvdzsKIGNsYXNzIEZyYW1lOwotY2xhc3MgVVJMOwogCiBjbGFzcyBMb2NhdGlvbiA6IHB1
YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPExvY2F0aW9uPiwgcHVibGlj
IERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMTM1LDcgKzEzNSw2IEBAIGNsYXNzIFNldHRpbmdzOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7
CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
OwotY2xhc3MgVVJMOwogY2xhc3MgVXNlckNvbnRlbnRQcm92aWRlcjsKIGNsYXNzIFZhbGlkYXRp
b25NZXNzYWdlQ2xpZW50OwogY2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCwxMSArMzAsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2UuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw2IEBAIGNsYXNz
IFBlcmZvcm1hbmNlVGltaW5nOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291
cmNlVGltaW5nOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFVSTDsKIGNs
YXNzIFVzZXJUaW1pbmc7CiAKIGNsYXNzIFBlcmZvcm1hbmNlIGZpbmFsIDogcHVibGljIFJlZkNv
dW50ZWQ8UGVyZm9ybWFuY2U+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIsIHB1
YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAkocmV2aXNpb24gMjM2NzY2
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkxvYWRUaW1pbmcuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VUaW1pbmcu
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJCbG9iVVJMLmgi
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
UG9saWN5LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCkBAIC0xNDgsNyArMTQ4LDcgQEAg
U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFVSTAogICAgIC8vIGRvY3VtZW50
LmRvbWFpbiBzdGFydHMgYXMgbV9kYXRhLmhvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBET00u
CiAgICAgbV9kb21haW4gPSBtX2RhdGEuaG9zdDsKIAotICAgIGlmIChtX2RhdGEucG9ydCAmJiBp
c0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9kYXRhLnBvcnQudmFsdWUoKSwgbV9kYXRhLnByb3Rv
Y29sKSkKKyAgICBpZiAobV9kYXRhLnBvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wobV9kYXRhLnBvcnQudmFsdWUoKSwgbV9kYXRhLnByb3RvY29sKSkKICAgICAgICAgbV9kYXRh
LnBvcnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBCeSBkZWZhdWx0LCBvbmx5IGxvY2FsIFNl
Y3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCkBAIC01MTYsNyArNTE2LDcg
QEAgUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYQogewogICAgIFN0cmlu
ZyBkZWNvZGVkSG9zdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKICAgICBhdXRv
IG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8i
KSk7Ci0gICAgaWYgKHBvcnQgJiYgIWlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJv
dG9jb2wpKQorICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgq
cG9ydCwgcHJvdG9jb2wpKQogICAgICAgICBvcmlnaW4tPm1fZGF0YS5wb3J0ID0gcG9ydDsKICAg
ICByZXR1cm4gb3JpZ2luOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
aAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgVVJMOwotCiBjbGFzcyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTZWN1cml0eU9yaWdpbj4gewogcHVibGljOgogICAgIGVudW0gUG9saWN5
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAkocmV2aXNp
b24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgJKHJldmlzaW9u
IDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlQb2xpY3kuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDExIEBACiAK
ICNpbmNsdWRlICJPcmlnaW5BY2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDIsNyArMTQyLDcgQEAg
Ym9vbCBTZWN1cml0eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNlY3VyaQogICAgIC8vCiAgICAgLy8g
Tm90ZTogV2UgZ2VuZXJhbGl6ZSB0aGlzIHRvIGludmFsaWQgVVJMcyBiZWNhdXNlIHdlIHRyZWF0
IHN1Y2ggVVJMcyBhcyBhYm91dDpibGFuay4KICAgICAvLwotICAgIHJldHVybiB1cmwuaXNFbXB0
eSgpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnN0cmluZygpLCBibGFua1VSTCgpKSB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNk
b2MiKTsKKyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KHVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNkb2MiKTsKIH0KIAogdm9pZCBTZWN1cml0
eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KExvY2FsTG9hZFBvbGljeSBwb2xpY3kpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFNlY3VyaXR5UG9saWN5IHsKIHB1YmxpYzoKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBA
QAogI2luY2x1ZGUgIlN0b3JhZ2VNYXAuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNs
dWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVG
bGFncy5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdXNjcmlwdC5oPgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YS5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI3ByYWdtYSBv
bmNlCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oCShy
ZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsKIGNs
YXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgU29ja2V0UHJvdmlkZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29j
a2V0UHJvdmlkZXI+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRQcm92aWRlci5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50UHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQCBj
bGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBVUkw7CiBjbGFzcyBVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yOwogY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNw
cAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
aAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVS
TFBhdHRlcm4uaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuIHsK
IHB1YmxpYzoKICAgICBVc2VyQ29udGVudFVSTFBhdHRlcm4oKSA6IG1faW52YWxpZCh0cnVlKSwg
bV9tYXRjaFN1YmRvbWFpbnMoZmFsc2UpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyU2NyaXB0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0
LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAgCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJVc2VyQ29udGVu
dFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAkocmV2aXNpb24g
MjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAgCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJVc2VyQ29udGVudFR5cGVzLmgi
CiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCShyZXZpc2lvbiAy
MzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYg
dWludDY0X3QgU2hhcmVkU3RyaW5nSGFzaDsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBVUkw7CiAKIGNs
YXNzIFZpc2l0ZWRMaW5rU3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxWaXNpdGVkTGlua1N0b3Jl
PiB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3kuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2
LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVGV4dEVuY29kaW5nOwotY2xhc3MgVVJM
Owogc3RydWN0IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+PiBDU1BE
aXJlY3RpdmVMaXN0VmVjdG9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmgJKHJldmlzaW9uIDIzNjc2NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZvcm1EYXRhOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgQ1NQSW5mbyB7CiAgICAgU3RyaW5n
IGRvY3VtZW50VVJJOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAkocmV2aXNpb24gMjM2
NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3REaXJlY3RpdmUuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCShyZXZp
c2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNs
dWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRh
dGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMTAwLDE0ICsxMDAsMTQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2U6OnBvcnRNYQogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAoKG1fcG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
bV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29sSXMoImh0
dHBzIikpIHx8IChwb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCks
ICJodHRwcyIpKSkpCisgICAgaWYgKChtX3BvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29s
SXMoImh0dHBzIikpIHx8IChwb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBv
cnQudmFsdWUoKSwgImh0dHBzIikpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAo
IXBvcnQpCi0gICAgICAgIHJldHVybiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZh
bHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9y
dEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSk7CiAKICAgICBpZiAo
IW1fcG9ydCkKLSAgICAgICAgcmV0dXJuIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZh
bHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9y
dEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpOwogCiAgICAgcmV0dXJu
IGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeTsKLWNsYXNzIFVSTDsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7
CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0LmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDkgKzMxLDkgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5oIgogI2luY2x1ZGUgIlBhcnNpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJUZXh0RW5jb2Rp
bmcuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3QuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0
eVBvbGljeTsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZl
LmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNCAr
MjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcl9oCi0jZGVmaW5lIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogT0JKQ19DTEFTUyBOU0NvZGVyOwpAQCAtNzcsNSArNzYsMyBA
QCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQotCi0jZW5kaWYgLy8gQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCShyZXZp
c2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0u
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENvbnRleHRNZW51OwogY2xhc3MgSW1hZ2U7Ci1jbGFzcyBVUkw7CiAKIGVudW0gQ29u
dGV4dE1lbnVBY3Rpb24gewogICAgIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFp
dHMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgQ29va2llOwogc3RydWN0IFNhbWVTaXRl
SW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAkocmV2aXNpb24gMjM2NzY2
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtNTYsOCArNTYsNiBAQCB0eXBlZGVmIHZvaWQqIERyYWdEYXRhUmVmOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogZW51bSBEcmFnQXBwbGljYXRpb25GbGFncyB7CiAg
ICAgRHJhZ0FwcGxpY2F0aW9uTm9uZSA9IDAsCiAgICAgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCA9
IDEsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAkocmV2aXNpb24gMjM2NzY2
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgSW1hZ2U7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTm9k
ZTsKIGNsYXNzIFJhbmdlOwotY2xhc3MgVVJMOwogCiAjaWYgUExBVEZPUk0oSU9TKQogdHlwZWRl
ZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gRHJhZ0ltYWdlUmVmOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTdHJlYW0uaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiAvLyBBbGwgbWV0aG9kcyBhcmUg
c3luY2hyb25vdXMuCiBjbGFzcyBGaWxlU3RyZWFtIHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGlua0ljb24uaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGlua0ljb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJMaW5rSWNvblR5cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5j
cHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2Vy
Lmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgYm9vbCBQYXN0
ZWJvYXJkOjppc1NhZmVUeXBlRm9yRE9NVG9SZWFkQQogCiBib29sIFBhc3RlYm9hcmQ6OmNhbkV4
cG9zZVVSTFRvRE9NV2hlblBhc3RlYm9hcmRDb250YWluc0ZpbGVzKGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKQogewotICAgIGF1dG8gdXJsID0gVVJMUGFyc2VyIHsgdXJsU3RyaW5nIH0ucmVzdWx0
KCk7CisgICAgVVJMIHVybCh7IH0sIHVybFN0cmluZyk7CiAgICAgcmV0dXJuIHVybC5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkgfHwgdXJsLnByb3RvY29sSXNCbG9iKCkgfHwgdXJsLnByb3RvY29s
SXNEYXRhKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgJKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRlICJEcmFnSW1hZ2Uu
aCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3ku
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBDb2xvcjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1j
bGFzcyBVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVt
SW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgUGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFBs
YWluVGV4dCgKICAgICBtX3BsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KTsKIH0KIAotdm9p
ZCBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMKFVSTCB1cmwpCit2b2lkIFBhc3RlYm9hcmRX
cml0ZXJEYXRhOjpzZXRVUkxEYXRhKFVSTERhdGEgdXJsKQogewogICAgIEFTU0VSVCghbV91cmwp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRXcml0ZXJEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY2LDggKzY2LDggQEAgcHVibGljOgogICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8UGxhaW5UZXh0PiYgcGxhaW5UZXh0KCkgY29uc3QgeyByZXR1cm4gbV9w
bGFpblRleHQ7IH0KICAgICB2b2lkIHNldFBsYWluVGV4dChQbGFpblRleHQpOwogCi0gICAgc3Ry
dWN0IFVSTCB7Ci0gICAgICAgIFdlYkNvcmU6OlVSTCB1cmw7CisgICAgc3RydWN0IFVSTERhdGEg
eworICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcgdGl0bGU7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgICAgICBTdHJpbmcgdXNlclZpc2libGVGb3JtOwpAQCAtNzYsMTUgKzc2LDE1IEBA
IHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAKLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4m
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgdm9pZCBzZXRVUkwoVVJMKTsKKyAg
ICBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTERhdGE+JiB1cmxEYXRhKCkgY29uc3QgeyByZXR1cm4g
bV91cmw7IH0KKyAgICB2b2lkIHNldFVSTERhdGEoVVJMRGF0YSk7CiAKICAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvbnRlbnQ+JiB3ZWJDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV93ZWJD
b250ZW50OyB9CiAgICAgdm9pZCBzZXRXZWJDb250ZW50KFdlYkNvbnRlbnQpOwogCiBwcml2YXRl
OgogICAgIHN0ZDo6b3B0aW9uYWw8UGxhaW5UZXh0PiBtX3BsYWluVGV4dDsKLSAgICBzdGQ6Om9w
dGlvbmFsPFVSTD4gbV91cmw7CisgICAgc3RkOjpvcHRpb25hbDxVUkxEYXRhPiBtX3VybDsKICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvbnRlbnQ+IG1fd2ViQ29udGVudDsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCShyZXZpc2lvbiAy
MzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBDb2xvcjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFz
cyBVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZElt
YWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgJKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIHsKICAgICBVUkwgYmxvYlVSTDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NT
TEtleUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NT
TEtleUdlbmVyYXRvci5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogLy8gUmV0dXJucyBzdHJpbmdz
IHJlcHJlc2VudGluZyBrZXkgc2l6ZXMgdGhhdCBtYXkgYmUgdXNlZAogLy8gZm9yIHRoZSA8a2V5
Z2VuPiB0YWcuIFRoZSBmaXJzdCBzdHJpbmcgaXMgZGlzcGxheWVkIGFzIHRoZSBkZWZhdWx0CiAv
LyBrZXkgc2l6ZSBpbiB0aGUgPGtleWdlbj4gbWVudS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
MTEgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0
cnkuaCIKIAotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL0xvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIu
aCIKQEAgLTU1MSw3ICs1NTEsNyBAQCBib29sIFNjaGVtZVJlZ2lzdHJ5Ojppc1VzZXJFeHRlbnNp
b25TY2hlCiAKIGJvb2wgU2NoZW1lUmVnaXN0cnk6OmlzQnVpbHRpblNjaGVtZShjb25zdCBTdHJp
bmcmIHNjaGVtZSkKIHsKLSAgICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiAoYWxsQnVpbHRp
blNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpIHx8IFVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1l
KHNjaGVtZSkpOworICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIChhbGxCdWlsdGluU2No
ZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkgfHwgV1RGOjpVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVt
ZShzY2hlbWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHAJKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U2hhcmVkU3RyaW5nSGFzaC5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5oCShyZXZpc2lvbiAy
MzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBVUkw7Ci0KIHR5cGVkZWYgdWludDY0X3QgU2hhcmVkU3RyaW5nSGFzaDsKIAogLy8gVXNl
IHRoZSBsb3cgMzItYml0cyBvZiB0aGUgNjQtYml0IFNoYXJlZFN0cmluZ0hhc2ggYXMgdGhlIGtl
eSBmb3IgSGFzaFNldHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJKHJldmlzaW9uIDIz
Njc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSwxMTA5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwg
MjAxMS0yMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVSTC5oIgotCi0jaW5jbHVkZSAiVVJMUGFy
c2VyLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotCi0vLyBGSVhNRTogVGhpcyBm
aWxlIG1ha2VzIHRvbyBtdWNoIHVzZSBvZiB0aGUgKyBvcGVyYXRvciBvbiBTdHJpbmcuCi0vLyBX
ZSBlaXRoZXIgaGF2ZSB0byBvcHRpbWl6ZSB0aGF0IG9wZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52
b2x2ZQotLy8gc28gbWFueSBhbGxvY2F0aW9ucywgb3IgY2hhbmdlIHRoaXMgdG8gdXNlIFN0cmlu
Z0J1ZmZlciBpbnN0ZWFkLgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFj
ZSBXVEY7Ci0KLXR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKLXR5cGVkZWYg
VmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQg
aW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7Ci0KLS8vIENvcGllcyB0aGUgc291cmNlIHRvIHRo
ZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKLS8v
IEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxs
IGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKLS8vIGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8g
YXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRoZSByZXN1bHQuCi1zdGF0aWMgdm9p
ZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRlc3QpCi17Ci0gICAgaWYg
KHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChzdHJpbmcuaXM4
Qml0KCkpCi0gICAgICAgIG1lbWNweShkZXN0LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5n
Lmxlbmd0aCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgo
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAg
ICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzcmNbaV0pOwotICAgIH0KLX0KLQotdm9p
ZCBVUkw6OmludmFsaWRhdGUoKQotewotICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgIG1fcHJv
dG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOwotICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZh
bHNlOwotICAgIG1fc2NoZW1lRW5kID0gMDsKLSAgICBtX3VzZXJTdGFydCA9IDA7Ci0gICAgbV91
c2VyRW5kID0gMDsKLSAgICBtX3Bhc3N3b3JkRW5kID0gMDsKLSAgICBtX2hvc3RFbmQgPSAwOwot
ICAgIG1fcG9ydExlbmd0aCA9IDA7Ci0gICAgbV9wYXRoRW5kID0gMDsKLSAgICBtX3BhdGhBZnRl
ckxhc3RTbGFzaCA9IDA7Ci0gICAgbV9xdWVyeUVuZCA9IDA7Ci19Ci0KLVVSTDo6VVJMKGNvbnN0
IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5n
KiBlbmNvZGluZykKLXsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNv
ZGluZyk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBib29sIHNo
b3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCi17Ci0gICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRp
bmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbAotICAgIC8vIGNoYXJhY3RlcnMgZnJv
bSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4gKnVuc2lnbmVkKiBjaGFyIGhlcmUKLSAgICAvLyBz
byB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9ubHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgot
ICAgIHJldHVybiBjIDw9ICcgJzsKLX0KLQotVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
LXsKLSAgICBVUkwgcmVzdWx0ID0gKnRoaXM7Ci0gICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0
Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cmlu
ZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKLXsKLSAgICBpZiAoIWhhc1BhdGgoKSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5k
IC0gMTsKLSAgICBpZiAobV9zdHJpbmdbZW5kXSA9PSAnLycpCi0gICAgICAgIC0tZW5kOwotCi0g
ICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlm
IChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgp
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgKytzdGFydDsKLQotICAgIHJldHVybiBt
X3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7Ci19Ci0KLVN0cmluZ1Zp
ZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpob3N0
KCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBzdGFydCA9IGhvc3RTdGFydCgpOwotICAgIHJldHVy
biBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0
KTsKLX0KLQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1fcG9ydExlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
IGJvb2wgb2sgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBudW1iZXI7Ci0gICAgaWYgKG1fc3RyaW5n
LmlzOEJpdCgpKQotICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3Ry
aW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2sp
OwotICAgIGVsc2UKLSAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0
cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZv
ayk7Ci0gICAgaWYgKCFvayB8fCBudW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90
Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJl
cjsKLX0KLQotU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdAotewotICAgIGlmIChhdXRv
IHBvcnQgPSB0aGlzLT5wb3J0KCkpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwg
JzonLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9ydC52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIGhv
c3QoKS50b1N0cmluZygpOwotfQotCi1TdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkg
Y29uc3QKLXsKLSAgICBTdHJpbmcgcmVzdWx0ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9z
dEVuZCArIG1fcG9ydExlbmd0aCk7Ci0KLSAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0
YXJ0ID4gMCkgewotICAgICAgICBjb25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7
Ci0gICAgICAgIHJlc3VsdC5yZW1vdmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3Vz
ZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdBdFNpZ24pOwotICAgIH0KLQotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNl
ZFVSTChTdHJpbmdWaWV3IGlucHV0KQotewotICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5s
ZW5ndGgoKTsKLSAgICBpZiAoIWlucHV0TGVuZ3RoKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKLSAgICBWZWN0b3I8TENoYXI+IHBlcmNlbnREZWNvZGVkOwotICAgIHBlcmNlbnREZWNv
ZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXRMZW5ndGgpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChpbnB1dFtpXSA9
PSAnJScKLSAgICAgICAgICAgICYmIGlucHV0TGVuZ3RoID4gMgotICAgICAgICAgICAgJiYgaSA8
IGlucHV0TGVuZ3RoIC0gMgotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kg
KyAxXSkKLSAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7Ci0g
ICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVl
KGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlu
cHV0W2ldKTsKLSAgICB9Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29k
ZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotfQotCi1TdHJpbmcgVVJMOjp1c2Vy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAt
IG1fdXNlclN0YXJ0KSk7Ci19Ci0KLVN0cmluZyBVUkw6OnBhc3MoKSBjb25zdAotewotICAgIGlm
IChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
Ci0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3Vz
ZXJFbmQgLSAxKSk7Ci19Ci0KLVN0cmluZyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3Vz
ZXJTdGFydCk7Ci19Ci0KLVN0cmluZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKLXsKLSAgICBp
ZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29y
ZEVuZCAtIG1fdXNlckVuZCAtIDEpOwotfQotCi1TdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZp
ZXIoKSBjb25zdAotewotICAgIGlmICghaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVy
eUVuZCArIDEpOwotfQotCi1ib29sIFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlF
bmQ7Ci19Ci0KLVN0cmluZyBVUkw6OmJhc2VBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi0jaWYgIVVTRShDRikK
LQotU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAotewotICAgIGlmICghaXNWYWxp
ZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBy
ZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgo
KSkpOwotfQotCi0jZW5kaWYKLQotI2lmZGVmIE5ERUJVRwotCi1zdGF0aWMgaW5saW5lIHZvaWQg
YXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldykKLXsKLX0KLQotI2Vsc2UKLQotc3RhdGlj
IHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAgICAv
LyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgot
ICAgIC8vIFRoZSBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhh
dCBwYXNzZWQtaW4gY2hhcmFjdGVycwotICAgIC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRo
ZSBvbGRlciBjb2RlIGRpZCBub3QgYW5kIHJlbGllZCBvbiB0aGVzZSBjaGVja3MuCi0gICAgZm9y
IChhdXRvIGNoYXJhY3RlciA6IHByb3RvY29sLmNvZGVVbml0cygpKSB7Ci0gICAgICAgIEFTU0VS
VChpc0FTQ0lJKGNoYXJhY3RlcikpOwotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsK
LSAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgIEFTU0VS
VCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSA9PSBjaGFyYWN0ZXIpOwotICAgIH0K
LX0KLQotI2VuZGlmCi0KLXN0YXRpYyBMb2NrIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JU
ZXN0aW5nTG9jazsKLQotdXNpbmcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmcg
PSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+Owotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQot
ewotICAgIHN0YXRpYyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcDsKLSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cDsKLX0KLQotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1
cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpCi17Ci0gICAgRGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0g
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKTsKLSAgICBpZiAoIWRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXApCi0gICAgICAgIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBu
ZXcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmc7Ci0gICAgcmV0dXJuICpkZWZh
dWx0UG9ydEZvclByb3RvY29sTWFwOwotfQotCi12b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkK
LXsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBG
b3JUZXN0aW5nTG9jayk7Ci0gICAgZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQpOwotfQotCi12b2lkIGNsZWFyRGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQotewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsKLSAgICBpZiAoYXV0byog
bWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkKLSAgICAgICAgbWFw
LT5jbGVhcigpOwotfQotCi1zdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclBy
b3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCi17Ci0gICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFw
ID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9j
ayk7Ci0gICAgICAgIEFTU0VSVChvdmVycmlkZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVj
ayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRlTWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBi
ZWluZyBub24tbnVsbC4KLSAgICAgICAgYXV0byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5k
KHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Ci0gICAgICAgIGlmIChpdGVyYXRv
ciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZh
bHVlOwotICAgIH0KLSAgICByZXR1cm4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29s
KHByb3RvY29sKTsKLX0KLQotYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3Qg
cG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsKLX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXMoY29u
c3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Ci17Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3Ry
aW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4o
cHJvdG9jb2wpKSk7Ci0KLSAgICAvLyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNo
b3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCi0g
ICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUg
dXNlZCBpbnN0ZWFkLiAKLSAgICBBU1NFUlQoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2YXNjcmlwdCIpKTsKLQotICAgIGlmICghbV9pc1Zh
bGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3
aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwg
IWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuICFwcm90b2NvbFttX3Nj
aGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZlIGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRo
ZSBhcmd1bWVudC4KLX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2Nv
bCkgY29uc3QKLXsKLSAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7Ci0KLSAgICBp
ZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGlmIChtX3Nj
aGVtZUVuZCAhPSBwcm90b2NvbC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVj
dC4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgewotICAg
ICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29s
W2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLVN0cmluZyBVUkw6OnF1ZXJ5KCkgY29uc3QKLXsKLSAgICBpZiAobV9xdWVyeUVuZCA9
PSBtX3BhdGhFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0
cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAx
KSk7IAotfQotCi1TdHJpbmcgVVJMOjpwYXRoKCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBwb3J0
RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOwotICAgIHJldHVybiBtX3N0cmluZy5zdWJz
dHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0gcG9ydEVuZCk7Ci19Ci0KLWJvb2wgVVJMOjpzZXRQ
cm90b2NvbChjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3Zl
IGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KLSAgICBzaXplX3Qgc2VwYXJhdG9yUG9z
aXRpb24gPSBzLmZpbmQoJzonKTsKLSAgICBTdHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmlu
ZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0gICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFy
c2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbCk7Ci0gICAgaWYgKCFjYW5v
bmljYWxpemVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkg
ewotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6
IiwgbV9zdHJpbmcpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygq
Y2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwotICAgICp0
aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9v
bCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3Rl
cnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Ci19Ci0gICAgCi0vLyBB
cHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3Ry
aW5nIGFuZCBsZW5ndGggdG8KLS8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwg
bm90IGJlIG51bGwgdGVybWluYXRlZC4KLS8vIFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBl
cnJvciBpbiBlbmNvZGluZy4KLXN0YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hh
ckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICAvLyBOZWVkcyB0byBi
ZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KLSAgICAvLyBGb3IgaG9z
dCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNo
IGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0gICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZm
ZXJMZW5ndGggPSAyMDQ4OwotICAgIAotICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFt
ZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJKHN0cmluZykpIHsKLSAgICAgICAgYXBwZW5kKGJ1
ZmZlciwgc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIFVD
aGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2Rl
IGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9
IFVJRE5BX0lORk9fSU5JVElBTElaRVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVy
dGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5h
bWVUcmFuc2NvZGVyKCksCi0gICAgICAgIHN0cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwg
c3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZw
cm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKLSAgICAKLSAgICBpZiAoVV9TVUNDRVNTKGVycm9y
KSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQo
aG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi11bnNpZ25lZCBVUkw6Omhvc3RT
dGFydCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0
KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKLX0KLQotdm9pZCBVUkw6OnNl
dEhvc3QoY29uc3QgU3RyaW5nJiBzKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBhdXRvIGNvbG9uSW5kZXggPSBzLmZpbmQoJzonKTsKLSAgICBpZiAoY29s
b25JbmRleCAhPSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVUNoYXJCdWZmZXIg
ZW5jb2RlZEhvc3ROYW1lOwotICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRI
b3N0TmFtZSwgcykpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBib29sIHNsYXNoU2xhc2hO
ZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQg
KyAxKTsKLSAgICAKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBl
bmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVk
KQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBl
bmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6
ZSgpKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkp
OwotCi0gICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlz
ID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCi17Ci0gICAg
aWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAgIHJldHVybjsKLSAgICBVUkxQYXJzZXIgcGFyc2Vy
KG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAg
ICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25l
ZCBzaG9ydCBpKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9ydExlbmd0aDsKLSAgICB1bnNpZ25lZCBwb3J0U3Rh
cnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIFVS
TFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRT
dGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0g
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXZvaWQgVVJMOjpzZXRIb3N0QW5kUG9y
dChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmdWaWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKLSAg
ICBTdHJpbmdWaWV3IHBvcnQ7Ci0gICAgCi0gICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUu
ZmluZCgnOicpOwotICAgIGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHBv
cnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEpOwotICAgICAgICBib29sIG9r
OwotICAgICAgICBpbnQgcG9ydEludCA9IHBvcnQudG9JbnRTdHJpY3Qob2spOwotICAgICAgICBp
ZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBob3N0
TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsKLSAgICB9Ci0KLSAgICBp
ZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBVQ2hhckJ1ZmZl
ciBlbmNvZGVkSG9zdE5hbWU7Ci0gICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2Rl
ZEhvc3ROYW1lLCBob3N0TmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgc2xhc2hT
bGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVt
ZUVuZCArIDEpOwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRl
ZCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNp
emUoKSkpOwotICAgIGlmICghcG9ydC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI6Iik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBvcnQpOwotICAgIH0KLSAg
ICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5k
ICsgbV9wb3J0TGVuZ3RoKSk7Ci0KLSAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJp
bmcoKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcg
cGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxk
RW5jb2RlKShVQ2hhcikpCi17Ci0gICAgYXV0byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29u
c3QgU3RyaW5nJiBpbnB1dCkgewotICAgICAgICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7
Ci0gICAgICAgIGF1dG8qIGRhdGEgPSB1dGY4LmRhdGEoKTsKLSAgICAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwotICAgICAgICBhdXRvIGxlbmd0aCA9IHV0ZjgubGVuZ3RoKCk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7IGorKykgewotICAgICAgICAgICAgYXV0
byBjID0gZGF0YVtqXTsKLSAgICAgICAgICAgIGlmIChzaG91bGRFbmNvZGUoYykpIHsKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpKTsKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKSk7Ci0gICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotICAgIH07Ci0KLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKFVOTElL
RUxZKHNob3VsZEVuY29kZShpbnB1dFtpXSkpKQotICAgICAgICAgICAgcmV0dXJuIGVuY29kZShp
bnB1dCk7Ci0gICAgfQotICAgIHJldHVybiBpbnB1dDsKLX0KLQotdm9pZCBVUkw6OnNldFVzZXIo
Y29uc3QgU3RyaW5nJiB1c2VyKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVk
IGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0
byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KLQotICAgIHVu
c2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKLSAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29kZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjpp
c0luVXNlckluZm9FbmNvZGVTZXQpOwotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICB1ID0gIi8vIiAr
IHU7Ci0gICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAg
ICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1f
c3RyaW5nW2VuZF0gIT0gJ0AnKSkKLSAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1f
dXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAg
ICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8g
UmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAg
ICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAm
JiBtX3N0cmluZ1tlbmRdID09ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAv
LyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hl
cmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2Vy
U3RhcnQgIT0gZW5kKSB7Ci0gICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmco
U3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQo
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5n
JiBwYXNzd29yZCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKLSAgICBpZiAoIXBhc3N3b3JkLmlzRW1w
dHkoKSkgewotICAgICAgICBTdHJpbmcgcCA9ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJz
KHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCkgKyAiQCI7Ci0gICAg
ICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsg
MSkpCi0gICAgICAgICAgICBwID0gIi8vIiArIHA7Ci0gICAgICAgIC8vIEVhdCB0aGUgZXhpc3Rp
bmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KLSAgICAgICAgaWYgKGVu
ZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQg
Kz0gMTsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9z
dHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBh
c3N3b3JkLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBt
X2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsK
LSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1v
biBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAg
aWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKLSAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5y
ZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBVUkw6OnNldEZyYWdtZW50SWRl
bnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0
aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBlbnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFz
c2VkPwotICAgIC8vIEZJWE1FOiBJcyBpdCBjb3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNv
ZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnM/Ci0gICAgKnRoaXMgPSBVUkxQ
YXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBt
X3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVyKSB9LnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAg
ICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kKQotICAgICAgICBt
X3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7Ci19Ci0KLXZvaWQgVVJMOjpyZW1v
dmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQp
OwotICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhFbmQ7Ci19Ci0KLXZvaWQgVVJMOjpzZXRRdWVyeShj
b25zdCBTdHJpbmcmIHF1ZXJ5KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJl
IGVuY29kZWQgYW5kIGVzY2FwZWQuCi0gICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29k
ZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUK
LSAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCi0gICAgLy8g
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2Ci0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwg
cXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsKLSAgICAgICAgVVJMUGFyc2Vy
IHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwg
Ij8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7
Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1f
cGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVu
ZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfQotCi19Ci0KLXZv
aWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIHBhdGggPSBzOwotICAgIGlmIChwYXRoLmlz
RW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKLSAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0K
LSAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIp
IHsKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsK
LSAgICB9OwotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0
ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19
Ci0KLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNv
bnN0IFVSTCYgYikKLXsKLSAgICBpZiAoYS5tX3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5
RW5kOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQotICAg
ICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGVxdWFsSWdub3JpbmdRdWVy
eUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIGlmIChhLnBh
dGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2ln
bmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cGF0aEVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClb
aV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0
IFVSTCYgYikKLXsKLSAgICBpZiAoYS5tX3NjaGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3Rh
cnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0
QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25l
ZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gYi5ob3N0U3RhcnQoKTsKLSAgICBpZiAoaG9z
dExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8v
IENoZWNrIHRoZSBzY2hlbWUKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVt
ZUVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0p
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gQW5kIHRoZSBob3N0
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAg
ICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0
QiArIGldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChhLnBv
cnQoKSAhPSBiLnBvcnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikK
LXsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25l
ZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBo
b3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIu
bV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0
aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBob3N0TGVuZ3RoQTsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEg
KyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFydEIgKyBpXSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBVUkw6OmlzTWF0Y2hp
bmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOwot
ICAgIGlmICghaG9zdC5lbmRzV2l0aChkb21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0
Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgpIC0gMV0gPT0gJy4nOwotfQotCi1TdHJpbmcgZW5j
b2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIGlucHV0KQotewotICAgIHJl
dHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlcklu
Zm9FbmNvZGVTZXQpOwotfQotCi1ib29sIFVSTDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAotewot
ICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQVNTRVJUKG1f
c3RyaW5nW21fc2NoZW1lRW5kXSA9PSAnOicpOwotICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVt
ZUVuZCArIDFdID09ICcvJzsKLX0KLQotdm9pZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hh
ciwgNTEyPiYgYnVmZmVyKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5
IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQotICAg
IC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlkIFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQg
bm90IGZvciBpbnZhbGlkIFVSTHMuCi0gICAgYnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgo
KSk7Ci0gICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Ci1ib29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBT
dHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICAvLyBEbyB0aGUg
Y29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2Vy
dFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29sKSkpOwotICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1
ZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBqID0gMDsgdXJsW2ldOyArK2kpIHsKLSAgICAg
ICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAg
ICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91bGRUcmltRnJvbVVSTCh1cmxbaV0pKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOwotCi0gICAgICAgIC8v
IFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVzLgotICAgICAgICBpZiAodXJsW2ldID09ICdcdCcg
fHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ldID09ICdcbicpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICBpZiAoIXByb3RvY29sW2pdKQotICAgICAgICAgICAgcmV0dXJuIHVybFtp
XSA9PSAnOic7Ci0gICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0s
IHByb3RvY29sW2pdKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICArK2o7
Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBwcm90b2NvbElzKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gcHJv
dG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OnBy
b3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewot
ICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzSW50ZXJuYWwoc3RyaW5nLCBwcm90b2NvbCk7
Ci19Ci0KLSNpZm5kZWYgTkRFQlVHCi0KLXZvaWQgVVJMOjpwcmludCgpIGNvbnN0Ci17Ci0gICAg
cHJpbnRmKCIlc1xuIiwgbV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLSNlbmRpZgotCi1T
dHJpbmcgVVJMOjpzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdAotewotICAgIFVSTCBy
ZWZlcnJlcigqdGhpcyk7Ci0gICAgcmVmZXJyZXIuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgcmVm
ZXJyZXIuc2V0UGFzcyhTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7Ci0gICAgcmV0dXJuIHJlZmVycmVyLnN0cmluZygpOwotfQotCi1ib29sIFVSTDo6
aXNMb2NhbEZpbGUoKSBjb25zdAotewotICAgIC8vIEluY2x1ZGluZyBmZWVkIGhlcmUgbWlnaHQg
YmUgYSBiYWQgaWRlYSBzaW5jZSBkcmFnIGFuZCBkcm9wIHVzZXMgdGhpcyBjaGVjawotICAgIC8v
IGFuZCBpbmNsdWRpbmcgZmVlZCB3b3VsZCBhbGxvdyBmZWVkcyB0byBwb3RlbnRpYWxseSBsZXQg
c29tZW9uZSdzIGJsb2cKLSAgICAvLyByZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJk
IG9uIGEgZHJhZywgZXZlbiB3aXRob3V0IGEgZHJvcC4KLSAgICAvLyBMaWtld2lzZSB3aXRoIHVz
aW5nIHRoZSBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc0xvY2FsKCkgZnVuY3Rpb24uCi0g
ICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNj
cmlwdChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFs
KHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJp
bmdWaWV3IHVybCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFz
Y3JpcHQiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYg
dXJsKQotewotICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgpOwotICAgIC8vIERvIHRoZSBj
b21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCi0gICAgcmV0dXJu
IGxlbmd0aCA+PSA1Ci0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzBd
LCAnaCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzFdLCAndCcp
Ci0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzJdLCAndCcpCi0gICAg
ICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzNdLCAncCcpCi0gICAgICAgICYm
ICh1cmxbNF0gPT0gJzonIHx8IChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFs0XSwgJ3Mn
KSAmJiBsZW5ndGggPj0gNiAmJiB1cmxbNV0gPT0gJzonKSk7Ci19Ci0KLWNvbnN0IFVSTCYgYmxh
bmtVUkwoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJM
KFVSTCgpLCAiYWJvdXQ6YmxhbmsiKTsKLSAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7Ci19Ci0K
LWJvb2wgVVJMOjppc0JsYW5rVVJMKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJcygi
YWJvdXQiKTsKLX0KLQotYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKLXsKLSAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKLQotICAgIC8vIFNpbmNl
IG1vc3QgVVJMcyBkb24ndCBoYXZlIGEgcG9ydCwgcmV0dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBv
cnQiIGNhc2UuCi0gICAgaWYgKCFwb3J0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8v
IFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1v
emlsbGEgaW1wbGVtZW50cy4KLSAgICAvLyBTZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9q
ZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBz
dGF0aWMgY29uc3QgdWludDE2X3QgYmxvY2tlZFBvcnRMaXN0W10gPSB7Ci0gICAgICAgIDEsICAg
IC8vIHRjcG11eAotICAgICAgICA3LCAgICAvLyBlY2hvCi0gICAgICAgIDksICAgIC8vIGRpc2Nh
cmQKLSAgICAgICAgMTEsICAgLy8gc3lzdGF0Ci0gICAgICAgIDEzLCAgIC8vIGRheXRpbWUKLSAg
ICAgICAgMTUsICAgLy8gbmV0c3RhdAotICAgICAgICAxNywgICAvLyBxb3RkCi0gICAgICAgIDE5
LCAgIC8vIGNoYXJnZW4KLSAgICAgICAgMjAsICAgLy8gRlRQLWRhdGEKLSAgICAgICAgMjEsICAg
Ly8gRlRQLWNvbnRyb2wKLSAgICAgICAgMjIsICAgLy8gU1NICi0gICAgICAgIDIzLCAgIC8vIHRl
bG5ldAotICAgICAgICAyNSwgICAvLyBTTVRQCi0gICAgICAgIDM3LCAgIC8vIHRpbWUKLSAgICAg
ICAgNDIsICAgLy8gbmFtZQotICAgICAgICA0MywgICAvLyBuaWNuYW1lCi0gICAgICAgIDUzLCAg
IC8vIGRvbWFpbgotICAgICAgICA3NywgICAvLyBwcml2LXJqcwotICAgICAgICA3OSwgICAvLyBm
aW5nZXIKLSAgICAgICAgODcsICAgLy8gdHR5bGluawotICAgICAgICA5NSwgICAvLyBzdXBkdXAK
LSAgICAgICAgMTAxLCAgLy8gaG9zdHJpYW1lCi0gICAgICAgIDEwMiwgIC8vIGlzby10c2FwCi0g
ICAgICAgIDEwMywgIC8vIGdwcGl0bnAKLSAgICAgICAgMTA0LCAgLy8gYWNyLW5lbWEKLSAgICAg
ICAgMTA5LCAgLy8gUE9QMgotICAgICAgICAxMTAsICAvLyBQT1AzCi0gICAgICAgIDExMSwgIC8v
IHN1bnJwYwotICAgICAgICAxMTMsICAvLyBhdXRoCi0gICAgICAgIDExNSwgIC8vIFNGVFAKLSAg
ICAgICAgMTE3LCAgLy8gdXVjcC1wYXRoCi0gICAgICAgIDExOSwgIC8vIG5udHAKLSAgICAgICAg
MTIzLCAgLy8gTlRQCi0gICAgICAgIDEzNSwgIC8vIGxvYy1zcnYgLyBlcG1hcAotICAgICAgICAx
MzksICAvLyBuZXRiaW9zCi0gICAgICAgIDE0MywgIC8vIElNQVAyCi0gICAgICAgIDE3OSwgIC8v
IEJHUAotICAgICAgICAzODksICAvLyBMREFQCi0gICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCi0g
ICAgICAgIDUxMiwgIC8vIHByaW50IC8gZXhlYwotICAgICAgICA1MTMsICAvLyBsb2dpbgotICAg
ICAgICA1MTQsICAvLyBzaGVsbAotICAgICAgICA1MTUsICAvLyBwcmludGVyCi0gICAgICAgIDUy
NiwgIC8vIHRlbXBvCi0gICAgICAgIDUzMCwgIC8vIGNvdXJpZXIKLSAgICAgICAgNTMxLCAgLy8g
Q2hhdAotICAgICAgICA1MzIsICAvLyBuZXRuZXdzCi0gICAgICAgIDU0MCwgIC8vIFVVQ1AKLSAg
ICAgICAgNTQ4LCAgLy8gYWZwb3ZlcnRjcCBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDU1Niwg
IC8vIHJlbW90ZWZzCi0gICAgICAgIDU2MywgIC8vIE5OVFArU1NMCi0gICAgICAgIDU4NywgIC8v
IEVTTVRQCi0gICAgICAgIDYwMSwgIC8vIHN5c2xvZy1jb25uCi0gICAgICAgIDYzNiwgIC8vIExE
QVArU1NMCi0gICAgICAgIDk5MywgIC8vIElNQVArU1NMCi0gICAgICAgIDk5NSwgIC8vIFBPUDMr
U1NMCi0gICAgICAgIDIwNDksIC8vIE5GUwotICAgICAgICAzNjU5LCAvLyBhcHBsZS1zYXNsIC8g
UGFzc3dvcmRTZXJ2ZXIgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA0MDQ1LCAvLyBsb2NrZAot
ICAgICAgICA0MTkwLCAvLyBNYW5hZ2VTaWV2ZSBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDYw
MDAsIC8vIFgxMQotICAgICAgICA2NjY1LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlv
bl0KLSAgICAgICAgNjY2NiwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAg
ICAgIDY2NjcsIC8vIFN0YW5kYXJkIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2Njgs
IC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY5LCAvLyBBbHRl
cm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElS
QyBTU0wgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBh
ZGRpdGlvbl0KLSAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxs
IGludmFsaWQgcG9ydCBudW1iZXJzCi0gICAgfTsKLQotICAgIC8vIElmIHRoZSBwb3J0IGlzIG5v
dCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgotICAgIEFTU0VSVChzdGQ6Omlz
X3NvcnRlZChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0
TGlzdCkpKTsKLSAgICBpZiAoIXN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQ
b3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAg
VVJMcywgYXMgTW96aWxsYSBkb2VzLgotICAgIGlmICgocG9ydC52YWx1ZSgpID09IDIxIHx8IHBv
cnQudmFsdWUoKSA9PSAyMikgJiYgdXJsLnByb3RvY29sSXMoImZ0cCIpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIC8vIEFsbG93IGFueSBwb3J0IG51bWJlciBpbiBhIGZpbGUgVVJMLCBz
aW5jZSB0aGUgcG9ydCBudW1iZXIgaXMgaWdub3JlZC4KLSAgICBpZiAodXJsLnByb3RvY29sSXMo
ImZpbGUiKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LVN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFT
U0VSVChwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiZGF0YSIpKTsKLQotICAgIC8vIEZJWE1FOiBX
aGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9yIHdoZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwg
YnV0IGEgc2VtaWNvbG9uIGxhdGVyPwotICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBi
cmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRoYXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJl
Y3QuCi0gICAgYXV0byBpbmRleCA9IHVybC5maW5kKCc7JywgNSk7Ci0gICAgaWYgKGluZGV4ID09
IG5vdEZvdW5kKQotICAgICAgICBpbmRleCA9IHVybC5maW5kKCcsJywgNSk7Ci0gICAgaWYgKGlu
ZGV4ID09IG5vdEZvdW5kKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNv
bW1lbnQgaGVyZSB0aGF0IG1hZGUgaXQgc291bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5p
bmcgdGV4dC9wbGFpbi4KLSAgICAgICAgLy8gQnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1w
dHkgc3RyaW5nIGhlcmUgZm9yIHNvbWUgdGltZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlv
ciBhdCB0aGlzIHRpbWUuCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLSAg
ICBpZiAoaW5kZXggPT0gNSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOwotICAgIEFT
U0VSVChpbmRleCA+PSA1KTsKLSAgICByZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci19Ci0KLVN0cmluZyBVUkw6OnN0cmluZ0NlbnRl
ckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgaWYgKHN0
cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0cmluZygpOwotCi0g
ICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJpbmco
KS5yaWdodChsZW5ndGggLyAyIC0gMik7Ci19Ci0KLVVSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRp
dmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXJ0KQotewotICAgIHJldHVybiBVUkwoVVJM
KCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsg
Jy8nICsgcmVsYXRpdmVQYXJ0KTsKLX0KLQotVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVt
UGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJm
aWxlOi8vLyIgKyBmaWxlUGF0aCk7Ci19Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJsKQotewotICAgIHRzIDw8IHVybC5zdHJpbmcoKTsKLSAg
ICByZXR1cm4gdHM7Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoU09VUCkKLXN0
YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYXV0byBj
b3VudCA9IDA7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXRBbGxv
d2luZ0VtcHR5RW50cmllcygnLicpKSB7Ci0gICAgICAgIGlmIChjb3VudCA+PSA0KQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gb2N0ZXQu
bGVuZ3RoKCk7Ci0gICAgICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCA+IDMpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgYXV0byB2YWx1ZSA9IDA7Ci0gICAgICAgIGZvciAo
YXV0byBpID0gMHU7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgY29uc3QgYXV0byBk
aWdpdCA9IG9jdGV0W2ldOwotCi0gICAgICAgICAgICAvLyBQcm9oaWJpdCBsZWFkaW5nIHplcm9l
cy4KLSAgICAgICAgICAgIGlmIChkaWdpdCA+ICc5JyB8fCBkaWdpdCA8ICghaSAmJiBsZW5ndGgg
PiAxID8gJzEnIDogJzAnKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgICAgIHZhbHVlID0gMTAgKiB2YWx1ZSArIChkaWdpdCAtICcwJyk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAodmFsdWUgPiAyNTUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgY291bnQrKzsKLSAgICB9Ci0KLSAgICByZXR1cm4gKGNvdW50ID09IDQpOwotfQotCi1z
dGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGVudW0g
U2tpcFN0YXRlIHsgTm9uZSwgV2lsbFNraXAsIFNraXBwaW5nLCBTa2lwcGVkLCBGaW5hbCB9Owot
ICAgIGF1dG8gc2tpcFN0YXRlID0gTm9uZTsKLSAgICBhdXRvIGNvdW50ID0gMDsKLQotICAgIGZv
ciAoY29uc3QgYXV0byBoZXh0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygn
OicpKSB7Ci0gICAgICAgIGlmIChjb3VudCA+PSA4IHx8IHNraXBTdGF0ZSA9PSBGaW5hbCkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IGhl
eHRldC5sZW5ndGgoKTsKLSAgICAgICAgaWYgKCFsZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIDo6
IG1heSBiZSB1c2VkIGFueXdoZXJlIHRvIHNraXAgMSB0byA4IGhleHRldHMsIGJ1dCBvbmx5IG9u
Y2UuCi0gICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IFNraXBwZWQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IE5vbmUpCi0g
ICAgICAgICAgICAgICAgc2tpcFN0YXRlID0gIWNvdW50ID8gV2lsbFNraXAgOiBTa2lwcGluZzsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAg
ICAgICBza2lwU3RhdGUgPSBTa2lwcGluZzsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBza2lwU3RhdGUgPSBGaW5hbDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICBpZiAoc2tpcFN0YXRlID09IFNraXBwaW5nKQotICAgICAgICAg
ICAgc2tpcFN0YXRlID0gU2tpcHBlZDsKLQotICAgICAgICBpZiAobGVuZ3RoID4gNCkgewotICAg
ICAgICAgICAgLy8gQW4gSVB2NCBhZGRyZXNzIG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBm
aW5hbCB0d28gaGV4dGV0cy4KLSAgICAgICAgICAgIGlmICgoc2tpcFN0YXRlID09IE5vbmUgJiYg
Y291bnQgIT0gNikgfHwgKHNraXBTdGF0ZSA9PSBTa2lwcGVkICYmIGNvdW50ID49IDYpIHx8ICFp
c0lQdjRBZGRyZXNzKGhleHRldCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvIGNvZGVVbml0IDogaGV4dGV0LmNvZGVV
bml0cygpKSB7Ci0gICAgICAgICAgICAvLyBJUHY2IGFsbG93cyBsZWFkaW5nIHplcm9lcy4KLSAg
ICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGNvZGVVbml0KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBjb3VudCsrOwotICAgIH0KLQot
ICAgIHJldHVybiAoY291bnQgPT0gOCAmJiBza2lwU3RhdGUgPT0gTm9uZSkgfHwgc2tpcFN0YXRl
ID09IFNraXBwZWQgfHwgc2tpcFN0YXRlID09IEZpbmFsOwotfQotCi1ib29sIFVSTDo6aG9zdElz
SVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKLXsKLSAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0g
bm90Rm91bmQpCi0gICAgICAgIHJldHVybiBpc0lQdjRBZGRyZXNzKGhvc3QpOwotCi0gICAgcmV0
dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNw
cApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZl
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5o
CShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDM5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LSNpZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKLSNl
bmRpZgotCi0jaWYgVVNFKFNPVVApCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKLSNlbmRp
ZgotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi1PQkpDX0NMQVNTIE5TVVJMOwotI2VuZGlmCi0KLW5h
bWVzcGFjZSBXVEYgewotY2xhc3MgVGV4dFN0cmVhbTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBVUkxUZXh0RW5jb2RpbmcgewotcHVibGljOgotICAgIHZpcnR1YWwgVmVjdG9y
PHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldykgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgflVSTFRleHRFbmNvZGluZygpIHsgfTsKLX07Ci0KLXN0cnVjdCBVUkxIYXNoOwot
Ci1jbGFzcyBVUkwgewotcHVibGljOgotICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250
YWlucyBhIG51bGwgc3RyaW5nLgotICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9Ci0KLSAgICBl
eHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsgfQotCi0gICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBi
YXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQotICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2Vk
IHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAg
Ly8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUg
aW50ZXJwcmV0ZWQgYXMKLSAgICAvLyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJh
c2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8v
IFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52
YWxpZCBiYXNlIFVSTHMKLSAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVt
cHR5IGJhc2UgVVJMcy4KLSAgICBXRUJDT1JFX0VYUE9SVCBVUkwoY29uc3QgVVJMJiBiYXNlLCBj
b25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7
Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0
KGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBVUkwgZmlsZVVSTFdp
dGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBzdHJpcHBlZEZv
clVzZUFzUmVmZXJyZXIoKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rp
b25zIHNob3VsZCBiZSBoYXJtb25pemVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBv
ZiBudWxsIG9yIHRoZSBlbXB0eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQot
ICAgIC8vIHN0YW5kYXJkIFN0cmluZyBjb25zdHJ1Y3Rvci4KLQotICAgIC8vIE1ha2VzIGEgZGVl
cCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIK
LSAgICAvLyB0aHJlYWQuIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBh
cmUgaW1tdXRhYmxlLCB0aGVyZSdzCi0gICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJl
ZmVyIGlzb2xhdGVkQ29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgV0VCQ09S
RV9FWFBPUlQgVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc051bGwoKSBj
b25zdDsKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKLSAgICBib29sIGlzVmFsaWQoKSBjb25z
dDsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9y
dCBmb3IgdGhlIFVSTC4KLSAgICAvLyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBh
IGhvc3QgYW5kIHBvcnQuCi0gICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1
cm4gaXNIaWVyYXJjaGljYWwoKTsgfQotCi0gICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0
IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KLSAgICBib29sIGlzSGllcmFyY2hpY2FsKCkg
Y29uc3Q7Ci0KLSAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaG9zdEFu
ZFBvcnQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvdG9jb2xIb3N0QW5k
UG9ydCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBhc3MoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcGF0aCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXN0UGF0
aENvbXBvbmVudCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBxdWVyeSgpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0
OwotCi0gICAgYm9vbCBoYXNVc2VybmFtZSgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGFzc3dvcmQo
KSBjb25zdDsKLSAgICBib29sIGhhc1F1ZXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVu
dCgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0OwotCi0gICAgLy8gVW5saWtlIHVz
ZXIoKSBhbmQgcGFzcygpLCB0aGVzZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1
ZW5jZXMuCi0gICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBw
aW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgotICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVkVXNlcigpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBlbmNvZGVkUGFzcygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1
cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCi0gICAgLy8gdGVy
bWluYXRlZCBBU0NJSSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4K
LSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0Owot
ICAgIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsKLSAgICBib29sIHByb3RvY29s
SXNCbG9iKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9Ci0gICAgYm9vbCBw
cm90b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAg
IGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQmxh
bmtVUkwoKSBjb25zdDsKLSAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVy
biBtX2Nhbm5vdEJlQUJhc2VVUkw7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNYXRj
aGluZ0RvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0
cmluZyYpOwotCi0gICAgdm9pZCByZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2ln
bmVkIHNob3J0KTsKLQotICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29t
OjgwMDAiLgotICAgIHZvaWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2
b2lkIHNldFVzZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmlu
ZyYpOwotCi0gICAgLy8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQ
UyBVUkxzLCB0aGUgcmVzdWx0aW5nIHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFBhdGgoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBUaGUgcXVl
cnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBi
ZSBhZGRlZAotICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBz
dHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKLSAgICAvLyBVUkwgKHdpdGggbm90aGluZyBh
ZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOwot
Ci0gICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCgp
IGNvbnN0OwotICAgIHVuc2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0OwotCi0gICAg
b3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0KLSNp
ZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMKENGVVJMUmVmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0jZW5kaWYK
LQotI2lmIFVTRShTT1VQKQotICAgIFVSTChTb3VwVVJJKik7Ci0gICAgR1VuaXF1ZVB0cjxTb3Vw
VVJJPiBjcmVhdGVTb3VwVVJJKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShGT1VOREFUSU9O
KQotICAgIFdFQkNPUkVfRVhQT1JUIFVSTChOU1VSTCopOwotICAgIFdFQkNPUkVfRVhQT1JUIG9w
ZXJhdG9yIE5TVVJMKigpIGNvbnN0OwotI2VuZGlmCi0jaWZkZWYgX19PQkpDX18KLSAgICBvcGVy
YXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQotI2VuZGlmCi0KLSNp
Zm5kZWYgTkRFQlVHCi0gICAgdm9pZCBwcmludCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRl
bXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYp
OwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVUkw+
IGRlY29kZShEZWNvZGVyJik7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNl
cjsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKLSAgICBzdGF0aWMgYm9v
bCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKLSAgICB2b2lkIGNvcHlU
b0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdDsKLSAgICB1bnNpZ25lZCBo
b3N0U3RhcnQoKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGhv
c3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0KLSAgICBTdHJpbmcgbV9zdHJp
bmc7Ci0KLSAgICB1bnNpZ25lZCBtX2lzVmFsaWQgOiAxOwotICAgIHVuc2lnbmVkIG1fcHJvdG9j
b2xJc0luSFRUUEZhbWlseSA6IDE7Ci0gICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDog
MTsKLQotICAgIC8vIFRoaXMgaXMgb3V0IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRzIGJldHRl
ci4gVGhlIHBvcnQgaXMgYWZ0ZXIgdGhlIGhvc3QuCi0gICAgdW5zaWduZWQgbV9wb3J0TGVuZ3Ro
IDogMzsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGggPSAoMSA8
PCAzKSAtIDE7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVtZUxlbmd0
aCA9ICgxIDw8IDI2KSAtIDE7Ci0gICAgdW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsKLSAgICB1
bnNpZ25lZCBtX3VzZXJTdGFydDsKLSAgICB1bnNpZ25lZCBtX3VzZXJFbmQ7Ci0gICAgdW5zaWdu
ZWQgbV9wYXNzd29yZEVuZDsKLSAgICB1bnNpZ25lZCBtX2hvc3RFbmQ7Ci0gICAgdW5zaWduZWQg
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgdW5zaWduZWQgbV9wYXRoRW5kOwotICAgIHVuc2ln
bmVkIG1fcXVlcnlFbmQ7Ci19OwotCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVv
ZihTdHJpbmcpICsgOCAqIHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwi
KTsKLQotdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Ci12b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX3N0cmluZzsKLX0KLQotdGVtcGxh
dGUgPGNsYXNzIERlY29kZXI+Ci1ib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVS
TCYgdXJsKQotewotICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsK
LSAgICBpZiAoIW9wdGlvbmFsVVJMKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdXJsID0g
V1RGTW92ZSgqb3B0aW9uYWxVUkwpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8
Y2xhc3MgRGVjb2Rlcj4KLXN0ZDo6b3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQotewotICAgIFN0cmluZyBzdHJpbmc7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
dHJpbmcpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBVUkwoVVJM
KCksIHN0cmluZyk7Ci19Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJv
b2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaG9zdHNBcmVFcXVhbChjb25z
dCBVUkwmLCBjb25zdCBVUkwmKTsKLQotV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiBibGFua1VS
TCgpOwotCi0vLyBGdW5jdGlvbnMgdG8gZG8gVVJMIG9wZXJhdGlvbnMgb24gc3RyaW5ncy4KLS8v
IFRoZXNlIGFyZSBvcGVyYXRpb25zIHRoYXQgYXJlbid0IGZhc3RlciBvbiBhIHBhcnNlZCBVUkwu
Ci0vLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9ucyBpbiB0
aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNh
YmxlIFVSTC4KLS8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBq
YXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFVS
TC4KLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBjaGFyKiBwcm90b2NvbCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXNKYXZh
U2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3Ry
aW5nVmlldyB1cmwpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5
KGNvbnN0IFN0cmluZyYgdXJsKTsKLQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBv
cnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9j
b2wpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxh
Y2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMu
Ci0KLVdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9y
VGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKLVdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwot
Ci1ib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKLQotU3RyaW5nIG1pbWVUeXBl
RnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwotCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdy
b25nIGNvbmNlcHQgdG8gZXhwb3NlLCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZm
ZXJlbnQgZXNjYXBpbmcgcGVyIHRoZSBVUkwgU3RhbmRhcmQuCi1XRUJDT1JFX0VYUE9SVCBTdHJp
bmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKLQotLy8gSW5s
aW5lcy4KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYg
YikKLXsKLSAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJl
dHVybiBhLnN0cmluZygpID09IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5zdHJpbmcoKTsK
LX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikK
LXsKLSAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVy
biBhLnN0cmluZygpICE9IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3Ry
aW5nJiBhLCBjb25zdCBVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKLX0K
LQotLy8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28g
d2UgY2FuIGdldCBpbmxpbmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1
Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KLQotaW5saW5lIGJvb2wgVVJMOjpp
c051bGwoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5pc051bGwoKTsKLX0KLQotaW5s
aW5lIGJvb2wgVVJMOjppc0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNF
bXB0eSgpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2lzVmFsaWQ7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUGF0aCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19Ci0K
LWlubGluZSBib29sIFVSTDo6aGFzVXNlcm5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3Vz
ZXJFbmQgPiBtX3VzZXJTdGFydDsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpoYXNQYXNzd29yZCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFzc3dvcmRFbmQgPiAobV91c2VyRW5kICsgMSk7Ci19
Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUXVlcnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3F1
ZXJ5RW5kID4gbV9wYXRoRW5kOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9x
dWVyeUVuZDsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwotfQotCi1pbmxp
bmUgdW5zaWduZWQgVVJMOjpwYXRoU3RhcnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2hvc3RF
bmQgKyBtX3BvcnRMZW5ndGg7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhFbmQoKSBj
b25zdAotewotICAgIHJldHVybiBtX3BhdGhFbmQ7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6
OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFz
dFNsYXNoOwotfQotCi1XVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgY29uc3QgVVJMJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdU
RiB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+OwotdGVtcGxh
dGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+OwotfSAvLyBuYW1lc3BhY2UgV1RG
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTEhhc2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNo
LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTEhhc2gu
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBVUkxIYXNoX2gKLSNkZWZpbmUgVVJMSGFz
aF9oCi0KLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotICAgIHN0cnVjdCBVUkxIYXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgVVJMJiBrZXkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBrZXkuc3RyaW5nKCku
aW1wbCgpLT5oYXNoKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IFN0cmluZ0hhc2g6OmVxdWFsKGEuc3RyaW5nKCksIGIuc3RyaW5nKCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBmYWxzZTsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBX
VEYgewotCi0vLyBVUkxIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9yIFN0cmluZwotdGVtcGxh
dGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6VVJMPiB7Ci0gICAgdXNpbmcgSGFzaCA9
IFdlYkNvcmU6OlVSTEhhc2g7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdl
YkNvcmU6OlVSTD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8V2ViQ29yZTo6VVJMPiB7IH07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gVVJMSGFzaF9oCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmgKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxl
dGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAJ
KHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5j
cHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyOTI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLQotI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRl
IDxhcnJheT4KLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0j
aW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jZGVm
aW5lIFVSTF9QQVJTRVJfREVCVUdHSU5HIDAKLQotI2lmIFVSTF9QQVJTRVJfREVCVUdHSU5HCi0j
ZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4uLikgTE9HKFVSTFBhcnNlciwgX19WQV9BUkdTX18pCi0j
ZWxzZQotI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pCi0jZW5kaWYKLSAgICAKLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1jbGFzcyBDb2RlUG9pbnRJdGVyYXRvciB7Ci1wdWJs
aWM6Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcigpIHsgfQotICAgIEFMV0FZ
U19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogYmVnaW4sIGNv
bnN0IENoYXJhY3RlclR5cGUqIGVuZCkKLSAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQotICAgICAg
ICAsIG1fZW5kKGVuZCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgQ29k
ZVBvaW50SXRlcmF0b3IoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIGJlZ2luLCBjb25zdCBDb2Rl
UG9pbnRJdGVyYXRvciYgZW5kKQotICAgICAgICA6IENvZGVQb2ludEl0ZXJhdG9yKGJlZ2luLm1f
YmVnaW4sIGVuZC5tX2JlZ2luKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGVuZC5tX2JlZ2luID49
IGJlZ2luLm1fYmVnaW4pOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIg
b3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvciYg
b3BlcmF0b3IrKygpOwotCi0gICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YmVnaW4gPT0gb3RoZXIubV9iZWdpbgotICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9l
bmQ7Ci0gICAgfQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVQ
b2ludEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0K
LSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29u
c3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9iZWdpbiA9IG90
aGVyLm1fYmVnaW47Ci0gICAgICAgIG1fZW5kID0gb3RoZXIubV9lbmQ7Ci0gICAgICAgIHJldHVy
biAqdGhpczsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgYXRFbmQoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fYmVnaW4gPD0gbV9lbmQpOwotICAgICAgICByZXR1cm4g
bV9iZWdpbiA+PSBtX2VuZDsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3Qg
Y29kZVVuaXRzU2luY2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogcmVmZXJlbmNlKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fYmVnaW4gPj0gcmVmZXJlbmNlKTsKLSAgICAgICAgcmV0dXJu
IG1fYmVnaW4gLSByZWZlcmVuY2U7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3Qg
Y29kZVVuaXRzU2luY2UoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGNvZGVVbml0c1NpbmNlKG90aGVyLm1fYmVnaW4pOwotICAgIH0K
LSAgICAKLXByaXZhdGU6Ci0gICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogbV9iZWdpbiB7IG51bGxw
dHIgfTsKLSAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2VuZCB7IG51bGxwdHIgfTsKLX07Ci0K
LXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hh
cj46Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFhdEVuZCgpKTsKLSAgICByZXR1
cm4gKm1fYmVnaW47Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgYXV0byBDb2RlUG9p
bnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKysoKSAtPiBDb2RlUG9pbnRJdGVyYXRvciYKLXsK
LSAgICBtX2JlZ2luKys7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdB
WVNfSU5MSU5FIFVDaGFyMzIgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+OjpvcGVyYXRvciooKSBj
b25zdAotewotICAgIEFTU0VSVCghYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjOwotICAgIFUxNl9H
RVQobV9iZWdpbiwgMCwgMCwgbV9lbmQgLSBtX2JlZ2luLCBjKTsKLSAgICByZXR1cm4gYzsKLX0K
LQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPFVDaGFy
Pjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgotewotICAgIHVuc2lnbmVkIGkg
PSAwOwotICAgIHNpemVfdCBsZW5ndGggPSBtX2VuZCAtIG1fYmVnaW47Ci0gICAgVTE2X0ZXRF8x
KG1fYmVnaW4sIGksIGxlbmd0aCk7Ci0gICAgbV9iZWdpbiArPSBpOwotICAgIHJldHVybiAqdGhp
czsKLX0KLSAgICAKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgYXBwZW5kQ29kZVBvaW50KFZl
Y3RvcjxVQ2hhcj4mIGRlc3RpbmF0aW9uLCBVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBpZiAo
VV9JU19CTVAoY29kZVBvaW50KSkgewotICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoc3RhdGlj
X2Nhc3Q8VUNoYXI+KGNvZGVQb2ludCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGRl
c3RpbmF0aW9uLnJlc2VydmVDYXBhY2l0eShkZXN0aW5hdGlvbi5zaXplKCkgKyAyKTsKLSAgICBk
ZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X0xFQUQoY29kZVBvaW50KSk7Ci0gICAgZGVz
dGluYXRpb24udW5jaGVja2VkQXBwZW5kKFUxNl9UUkFJTChjb2RlUG9pbnQpKTsKLX0KLQotZW51
bSBVUkxDaGFyYWN0ZXJDbGFzcyB7Ci0gICAgVXNlckluZm8gPSAweDEsCi0gICAgRGVmYXVsdCA9
IDB4MiwKLSAgICBGb3JiaWRkZW5Ib3N0ID0gMHg0LAotICAgIFF1ZXJ5UGVyY2VudCA9IDB4OCwK
LSAgICBTbGFzaFF1ZXN0aW9uT3JIYXNoID0gMHgxMCwKLSAgICBWYWxpZFNjaGVtZSA9IDB4MjAs
Ci19OwotCi1zdGF0aWMgY29uc3QgdWludDhfdCBjaGFyYWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwg
Ly8gMHgwCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEKLSAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MgotICAgIFVzZXJJbmZv
IHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgzCi0gICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAweDQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQsIC8vIDB4NQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8g
MHg2Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDcKLSAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4OAotICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4OQotICAgIFVzZXJJ
bmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4QQotICAg
IFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhCCi0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweEQKLSAgICBVc2VySW5mbyB8IERl
ZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4RQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1
ZXJ5UGVyY2VudCwgLy8gMHhGCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDEwCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEx
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEyCi0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEzCi0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE0Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDE1Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDE2Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAw
eDE3Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE4Ci0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE5Ci0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFBCi0gICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAweDFCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDFDCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDFECi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFFCi0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFGCi0gICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyAnCi0gICAg
MCwgLy8gJyEnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAnIicK
LSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBTbGFzaFF1ZXN0aW9uT3JI
YXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJyMnCi0gICAgMCwgLy8gJyQnCi0gICAgRm9yYmlkZGVu
SG9zdCwgLy8gJyUnCi0gICAgMCwgLy8gJyYnCi0gICAgMCwgLy8gJ1wnJwotICAgIDAsIC8vICco
JwotICAgIDAsIC8vICcpJwotICAgIDAsIC8vICcqJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnKycK
LSAgICAwLCAvLyAnLCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJy0nCi0gICAgVmFsaWRTY2hlbWUs
IC8vICcuJwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhv
c3QsIC8vICcvJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMCcKLSAgICBWYWxpZFNjaGVtZSwgLy8g
JzEnCi0gICAgVmFsaWRTY2hlbWUsIC8vICcyJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMycKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJzQnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc1JwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnNicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzcnCi0gICAgVmFsaWRTY2hlbWUs
IC8vICc4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnOScKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRl
bkhvc3QsIC8vICc6JwotICAgIFVzZXJJbmZvLCAvLyAnOycKLSAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnPCcKLSAgICBVc2VySW5mbywg
Ly8gJz0nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVu
SG9zdCwgLy8gJz4nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgU2xhc2hRdWVzdGlvbk9ySGFz
aCB8IEZvcmJpZGRlbkhvc3QsIC8vICc/JwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwg
Ly8gJ0AnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdBJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnQicK
LSAgICBWYWxpZFNjaGVtZSwgLy8gJ0MnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdEJwotICAgIFZh
bGlkU2NoZW1lLCAvLyAnRScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0YnCi0gICAgVmFsaWRTY2hl
bWUsIC8vICdHJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSCcKLSAgICBWYWxpZFNjaGVtZSwgLy8g
J0knCi0gICAgVmFsaWRTY2hlbWUsIC8vICdKJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSycKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJ0wnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdNJwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnTicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ08nCi0gICAgVmFsaWRTY2hlbWUs
IC8vICdQJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnUScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1In
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICdTJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnVCcKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ1UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdWJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnVycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1gnCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICdZJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnWicKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhv
c3QsIC8vICdbJwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRl
bkhvc3QsIC8vICdcXCcKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICddJwotICAg
IFVzZXJJbmZvLCAvLyAnXicKLSAgICAwLCAvLyAnXycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQs
IC8vICdgJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnYScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2In
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICdjJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnZCcKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ2UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdmJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnZycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2gnCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICdpJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnaicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2snCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdsJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnbScKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ24nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdvJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAncCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3EnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdy
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAncycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3QnCi0gICAg
VmFsaWRTY2hlbWUsIC8vICd1JwotICAgIFZhbGlkU2NoZW1lLCAvLyAndicKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJ3cnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd4JwotICAgIFZhbGlkU2NoZW1lLCAv
LyAneScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3onCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAv
LyAneycKLSAgICBVc2VySW5mbywgLy8gJ3wnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAn
fScKLSAgICAwLCAvLyAnficKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4N0YKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4ODAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODEKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4ODIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODMKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4ODQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODUKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4ODYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
ODgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEEK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEMKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OEQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEUKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OEYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTAKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTIKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTQKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTYKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTgKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUQK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUYKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTEKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTMKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTUKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTcKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTkKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUIKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjAK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjIKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjQKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QjUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjYKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjgKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkEKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkMKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkUKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QkYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QzEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzMK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzUKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QzYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzcKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QzgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzkKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4Q0EKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0IKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4Q0MKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0QKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4Q0UKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0YKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RDAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDEKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RDIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RDQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDYK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDgKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RDkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REEKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4REIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REMKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4REQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REUKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4REYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTAKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTIKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTQKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTkK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUIKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUQKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUYKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RjAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjEKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RjIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjMKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RjQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjUKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RjYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjcKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RjgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RkEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkMK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkUKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RkYKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRyb2woQ2hhcmFjdGVyVHlw
ZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweDFGOyB9Ci10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzQzBDb250cm9s
T3JTcGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4
MjA7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3Rh
dGljIGJvb2wgaXNUYWJPck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJu
IGNoYXJhY3RlciA8PSAweEQgJiYgY2hhcmFjdGVyID49IDB4OSAmJiBjaGFyYWN0ZXIgIT0gMHhC
ICYmIGNoYXJhY3RlciAhPSAweEM7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblNpbXBsZUVuY29kZVNldChDaGFyYWN0ZXJU
eXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3RSB8fCBpc0MwQ29udHJvbChj
aGFyYWN0ZXIpOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBib29sIGlzSW5EZWZhdWx0RW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFj
dGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hh
cmFjdGVyXSAmIERlZmF1bHQ7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5jb2RlU2V0KENoYXJhY3RlclR5
cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNz
VGFibGVbY2hhcmFjdGVyXSAmIFVzZXJJbmZvOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzUGVyY2VudE9yTm9uQVNDSUkoQ2hh
cmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuICFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgY2hh
cmFjdGVyID09ICclJzsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlT
X0lOTElORSBzdGF0aWMgYm9vbCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXFwnICYmIGNoYXJhY3RlckNsYXNzVGFi
bGVbY2hhcmFjdGVyXSAmIFNsYXNoUXVlc3Rpb25Pckhhc2g7IH0KLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNWYWxpZFNjaGVtZUNo
YXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICd6
JyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBWYWxpZFNjaGVtZTsgfQotdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBp
c0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJu
IGNoYXJhY3RlciA8PSAnXScgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgRm9y
YmlkZGVuSG9zdDsgfQotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBzaG91bGRQZXJjZW50RW5j
b2RlUXVlcnlCeXRlKHVpbnQ4X3QgYnl0ZSwgY29uc3QgYm9vbCYgdXJsSXNTcGVjaWFsKQotewot
ICAgIGlmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2J5dGVdICYgUXVlcnlQZXJjZW50KQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoYnl0ZSA9PSAnXCcnICYmIHVybElzU3BlY2lhbCkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFVSTFBhcnNl
cjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OmlzSW5Vc2VySW5mb0VuY29kZVNldChjKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZSwgVVJMUGFyc2VyOjpSZXBvcnRTeW50YXhWaW9sYXRpb24gcmVwb3J0U3ludGF4Vmlv
bGF0aW9uPgotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YWR2YW5jZShDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQotewot
ICAgICsraXRlcmF0b3I7Ci0gICAgd2hpbGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYm
IGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgIGlmIChyZXBvcnRTeW50YXhW
aW9sYXRpb24gPT0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXMpCi0gICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAg
ICsraXRlcmF0b3I7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PgotYm9vbCBVUkxQYXJzZXI6OnRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVw
b3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIGlmIChpdGVyYXRvci5hdEVu
ZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBS
ZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Ci0gICAgcmV0dXJuIGl0ZXJhdG9y
LmF0RW5kKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNf
SU5MSU5FIGJvb2wgVVJMUGFyc2VyOjppc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQo
KSB8fCAhaXNBU0NJSUFscGhhKCppdGVyYXRvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJh
dG9yKTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
VU5MSUtFTFkoKml0ZXJhdG9yID09ICd8JykpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9B
U0NJSUJ1ZmZlcihVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBBU1NFUlQoaXNBU0NJSShjb2Rl
UG9pbnQpKTsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQotICAg
ICAgICBtX2FzY2lpQnVmZmVyLmFwcGVuZChjb2RlUG9pbnQpOwotfQotCi1BTFdBWVNfSU5MSU5F
IHZvaWQgVVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqIGNoYXJhY3Rl
cnMsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4Vmlv
bGF0aW9uKSkKLSAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3Ro
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2Vy
OjphcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mIGl0ZXJhdG9yKQotewotICAgIEFTU0VSVChpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRv
cikpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoKml0ZXJhdG9yKTsKLSAgICBhZHZhbmNlKGl0
ZXJhdG9yKTsKLSAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwotICAgIEFTU0VSVCgqaXRl
cmF0b3IgPT0gJzonIHx8ICppdGVyYXRvciA9PSAnfCcpOwotICAgIGlmICgqaXRlcmF0b3IgPT0g
J3wnKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJzonKTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLX0KLQotYm9vbCBVUkxQYXJz
ZXI6OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVSTCYgYmFzZSkKLXsKLSAgICBp
ZiAoYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFz
ZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCA8IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkp
OwotICAgICAgICBpZiAoYmFzZS5tX3N0cmluZy5pczhCaXQoKSkgewotICAgICAgICAgICAgY29u
c3QgTENoYXIqIGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAg
ICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJh
c2UubV9wb3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAg
IGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFVD
aGFyKiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczE2KCk7Ci0gICAgICAgICAgICBD
b2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5t
X3BvcnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAg
ICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0gICAgICAgICAgICAgICAgYXBw
ZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRD
b3B5RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsK
LSAgICBpZiAoIWlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgYWR2YW5jZShpdGVyYXRvcik7Ci0gICAgaWYgKGl0ZXJhdG9y
LmF0RW5kKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiAhaXNTbGFzaFF1ZXN0
aW9uT3JIYXNoKCppdGVyYXRvcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcmNlbnRFbmNvZGVCeXRl
KHVpbnQ4X3QgYnl0ZSwgVmVjdG9yPExDaGFyPiYgYnVmZmVyKQotewotICAgIGJ1ZmZlci5hcHBl
bmQoJyUnKTsKLSAgICBidWZmZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5
dGUpKTsKLSAgICBidWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUp
KTsKLX0KLQotdm9pZCBVUkxQYXJzZXI6OnBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSkK
LXsKLSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJyUnKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHVwcGVyTmliYmxlVG9BU0NJ
SUhleERpZ2l0KGJ5dGUpKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9B
U0NJSUhleERpZ2l0KGJ5dGUpKTsKLX0KLQotY29uc3QgY2hhciByZXBsYWNlbWVudENoYXJhY3Rl
clVURjhQZXJjZW50RW5jb2RlZFsxMF0gPSAiJUVGJUJGJUJEIjsKLWNvbnN0IHNpemVfdCByZXBs
YWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCA9IHNpemVvZihyZXBsYWNl
bWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCkgLSAxOwotCi10ZW1wbGF0ZTxib29sKCpp
c0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5M
SU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCFpdGVyYXRvci5h
dEVuZCgpKTsKLSAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVyYXRvcjsKLSAgICBpZiAoTElL
RUxZKGlzQVNDSUkoY29kZVBvaW50KSkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzSW5Db2Rl
U2V0KGNvZGVQb2ludCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3Ip
OwotICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBvaW50KTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvZGVQb2ludCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0luQ29kZVNldChjb2Rl
UG9pbnQpLCAiaXNJbkNvZGVTZXQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBmb3Igbm9uLUFT
Q0lJIGNoYXJhY3RlcnMiKTsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIAot
ICAgIGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgewotICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkLCByZXBs
YWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgCi0gICAgdWludDhfdCBidWZmZXJbVThfTUFYX0xFTkdUSF07Ci0gICAg
aW50MzJfdCBvZmZzZXQgPSAwOwotICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQs
IGNvZGVQb2ludCk7Ci0gICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgb2Zmc2V0OyArK2kpCi0g
ICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ1ZmZlcltpXSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UXVl
cnlFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9y
KQotewotICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjb2RlUG9p
bnQgPSAqaXRlcmF0b3I7Ci0gICAgaWYgKExJS0VMWShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7Ci0g
ICAgICAgIGlmIChVTkxJS0VMWShzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGNvZGVQb2lu
dCwgbV91cmxJc1NwZWNpYWwpKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yKTsKLSAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7
Ci0gICAgCi0gICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUihjb2RlUG9pbnQpKSB7Ci0gICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29k
ZWQsIHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwot
ICAgIGludDMyX3Qgb2Zmc2V0ID0gMDsKLSAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zm
c2V0LCBjb2RlUG9pbnQpOwotICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytp
KSB7Ci0gICAgICAgIGF1dG8gYnl0ZSA9IGJ1ZmZlcltpXTsKLSAgICAgICAgaWYgKHNob3VsZFBl
cmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQotICAgICAgICAgICAg
cGVyY2VudEVuY29kZUJ5dGUoYnl0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoYnl0ZSk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0
b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGF1dG8gZW5jb2Rl
ZCA9IGVuY29kaW5nLmVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldyhzb3VyY2UuZGF0YSgp
LCBzb3VyY2Uuc2l6ZSgpKSk7Ci0gICAgYXV0byogZGF0YSA9IGVuY29kZWQuZGF0YSgpOwotICAg
IHNpemVfdCBsZW5ndGggPSBlbmNvZGVkLnNpemUoKTsKLSAgICAKLSAgICBpZiAoIWxlbmd0aCA9
PSAhaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3Ip
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHNpemVfdCBpID0gMDsKLSAgICBm
b3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQo
KSk7Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGRhdGFbaV07Ci0gICAgICAgIGlmIChVTkxJS0VM
WShieXRlICE9ICppdGVyYXRvcikpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVy
YXRvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoVU5MSUtF
TFkoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpKSB7
Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKLSAgICAg
ICAgKytpdGVyYXRvcjsKLSAgICB9Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpICYmIGlz
VGFiT3JOZXdsaW5lKCppdGVyYXRvcikpCi0gICAgICAgICsraXRlcmF0b3I7Ci0gICAgQVNTRVJU
KChpID09IGxlbmd0aCkgPT0gaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgZm9yICg7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAg
ICAgICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOwotICAgICAgICBpZiAoc2hvdWxkUGVyY2VudEVu
Y29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCi0gICAgICAgICAgICBwZXJjZW50
RW5jb2RlQnl0ZShieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcihieXRlKTsKLSAgICB9Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTFBh
cnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKLXsKLSAgICBz
dGF0aWMgY29uc3QgdWludDE2X3QgZnRwUG9ydCA9IDIxOwotICAgIHN0YXRpYyBjb25zdCB1aW50
MTZfdCBnb3BoZXJQb3J0ID0gNzA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBQb3J0
ID0gODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBzUG9ydCA9IDQ0MzsKLSAgICBz
dGF0aWMgY29uc3QgdWludDE2X3Qgd3NQb3J0ID0gODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQx
Nl90IHdzc1BvcnQgPSA0NDM7Ci0gICAgCi0gICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3Ro
KCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
c3dpdGNoIChzY2hlbWVbMF0pIHsKLSAgICBjYXNlICd3JzoKLSAgICAgICAgc3dpdGNoIChsZW5n
dGgpIHsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHdzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0g
J3MnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAg
ICByZXR1cm4gd3NzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBj
YXNlICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSA0OgotICAg
ICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVb
Ml0gPT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKLSAgICAgICAg
ICAgICAgICByZXR1cm4gaHR0cFBvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAg
ICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hl
bWVbM10gPT0gJ3AnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdzJykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gaHR0cHNQb3J0OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgICAgIH0KLSAgICBjYXNlICdnJzoKLSAgICAgICAgaWYgKGxlbmd0aCA9PSA2Ci0gICAg
ICAgICAgICAmJiBzY2hlbWVbMV0gPT0gJ28nCi0gICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0g
J3AnCi0gICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCi0gICAgICAgICAgICAmJiBzY2hl
bWVbNF0gPT0gJ2UnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNV0gPT0gJ3InKQotICAgICAgICAg
ICAgcmV0dXJuIGdvcGhlclBvcnQ7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
Y2FzZSAnZic6Ci0gICAgICAgIGlmIChsZW5ndGggPT0gMwotICAgICAgICAgICAgJiYgc2NoZW1l
WzFdID09ICd0JwotICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJykKLSAgICAgICAgICAg
IHJldHVybiBmdHBQb3J0OwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotfQotCi1lbnVtIGNsYXNz
IFNjaGVtZSB7Ci0gICAgV1MsCi0gICAgV1NTLAotICAgIEZpbGUsCi0gICAgRlRQLAotICAgIEdv
cGhlciwKLSAgICBIVFRQLAotICAgIEhUVFBTLAotICAgIE5vblNwZWNpYWwKLX07Ci0KLUFMV0FZ
U19JTkxJTkUgc3RhdGljIFNjaGVtZSBzY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpCi17Ci0gICAg
YXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAg
IHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKLSAg
ICBjYXNlICdmJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSAzOgot
ICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hl
bWVbMl0gPT0gJ3AnKQotICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkZUUDsKLSAgICAg
ICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAg
ICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ2knCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJd
ID09ICdsJwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnZScpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFNjaGVtZTo6RmlsZTsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5v
blNwZWNpYWw7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpO
b25TcGVjaWFsOwotICAgICAgICB9Ci0gICAgY2FzZSAnZyc6Ci0gICAgICAgIGlmIChsZW5ndGgg
PT0gNgotICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJwotICAgICAgICAgICAgJiYgc2No
ZW1lWzJdID09ICdwJwotICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJwotICAgICAgICAg
ICAgJiYgc2NoZW1lWzRdID09ICdlJwotICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykK
LSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkdvcGhlcjsKLSAgICAgICAgcmV0dXJuIFNjaGVt
ZTo6Tm9uU3BlY2lhbDsKLSAgICBjYXNlICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsK
LSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzNdID09ICdwJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpIVFRQOwotICAgICAg
ICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgY2FzZSA1OgotICAgICAg
ICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0g
PT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJwotICAgICAgICAgICAg
ICAgICYmIHNjaGVtZVs0XSA9PSAncycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6
SFRUUFM7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAg
fQotICAgIGNhc2UgJ3cnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNl
IDI6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gU2NoZW1lOjpXUzsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7
Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAg
ICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4g
U2NoZW1lOjpXU1M7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAg
ICAgICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7
Ci0gICAgfQotfQotCi1zdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9u
aWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoc2NoZW1lLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICghaXNBU0NJ
SUFscGhhKHNjaGVtZVswXSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBm
b3IgKHNpemVfdCBpID0gMTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChpc0FTQ0lJQWxwaGFudW1lcmljKHNjaGVtZVtpXSkgfHwgc2NoZW1lW2ldID09ICcrJyB8fCBz
Y2hlbWVbaV0gPT0gJy0nIHx8IHNjaGVtZVtpXSA9PSAnLicpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2No
ZW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc1Nw
ZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWVBcmcpCi17Ci0gICAgcmV0dXJuIHNjaGVt
ZShzY2hlbWVBcmcpICE9IFNjaGVtZTo6Tm9uU3BlY2lhbDsKLX0KLQotZW51bSBjbGFzcyBVUkxQ
YXJzZXI6OlVSTFBhcnQgewotICAgIFNjaGVtZUVuZCwKLSAgICBVc2VyU3RhcnQsCi0gICAgVXNl
ckVuZCwKLSAgICBQYXNzd29yZEVuZCwKLSAgICBIb3N0RW5kLAotICAgIFBvcnRFbmQsCi0gICAg
UGF0aEFmdGVyTGFzdFNsYXNoLAotICAgIFBhdGhFbmQsCi0gICAgUXVlcnlFbmQsCi19OwotCi1z
aXplX3QgVVJMUGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQoY29uc3QgVVJMJiB1cmwsIFVSTFBh
cnQgcGFydCkKLXsKLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBjYXNlIFVSTFBhcnQ6OlF1ZXJ5
RW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fcXVlcnlFbmQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQ
YXRoRW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6
OlBhdGhBZnRlckxhc3RTbGFzaDoKLSAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9o
b3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aDsKLSAgICBjYXNlIFVSTFBhcnQ6Okhvc3RFbmQ6Ci0g
ICAgICAgIHJldHVybiB1cmwubV9ob3N0RW5kOwotICAgIGNhc2UgVVJMUGFydDo6UGFzc3dvcmRF
bmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9wYXNzd29yZEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6
OlVzZXJFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV91c2VyRW5kOwotICAgIGNhc2UgVVJMUGFy
dDo6VXNlclN0YXJ0OgotICAgICAgICByZXR1cm4gdXJsLm1fdXNlclN0YXJ0OwotICAgIGNhc2Ug
VVJMUGFydDo6U2NoZW1lRW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kOwotICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBV
UkxQYXJzZXI6OmNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBzaXpl
X3QgbGVuZ3RoKQotewotICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSBzdHJpbmcubGVuZ3Ro
KCkpOwotICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NF
UlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0g
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nLmNo
YXJhY3RlcnMxNigpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7Ci0gICAgICAgICAgICBVQ2hhciBjID0gY2hhcmFjdGVyc1tpXTsKLSAgICAgICAgICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzQVNDSUkoYykpOwotICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcihjKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRp
bChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQgcGFydCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqJiBub25VVEY4
UXVlcnlFbmNvZGluZykKLXsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotCi0gICAg
bV9hc2NpaUJ1ZmZlci5jbGVhcigpOwotICAgIGNvcHlBU0NJSVN0cmluZ1VudGlsKGJhc2UubV9z
dHJpbmcsIHVybExlbmd0aFVudGlsUGFydChiYXNlLCBwYXJ0KSk7Ci0gICAgc3dpdGNoIChwYXJ0
KSB7Ci0gICAgY2FzZSBVUkxQYXJ0OjpRdWVyeUVuZDoKLSAgICAgICAgbV91cmwubV9xdWVyeUVu
ZCA9IGJhc2UubV9xdWVyeUVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQ
YXJ0OjpQYXRoRW5kOgotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBiYXNlLm1fcGF0aEVuZDsK
LSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xh
c2g6Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BhdGhBZnRl
ckxhc3RTbGFzaDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQb3J0
RW5kOgotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBiYXNlLm1fcG9ydExlbmd0aDsKLSAg
ICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgotICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0g
ICAgY2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVu
ZCA9IGJhc2UubV9wYXNzd29yZEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBV
UkxQYXJ0OjpVc2VyRW5kOgotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBiYXNlLm1fdXNlckVu
ZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyU3RhcnQ6Ci0g
ICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gYmFzZS5tX3VzZXJTdGFydDsKLSAgICAgICAgRkFM
TFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpTY2hlbWVFbmQ6Ci0gICAgICAgIG1fdXJsLm1f
aXNWYWxpZCA9IGJhc2UubV9pc1ZhbGlkOwotICAgICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhU
VFBGYW1pbHkgPSBiYXNlLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsKLSAgICAgICAgbV91cmwu
bV9zY2hlbWVFbmQgPSBiYXNlLm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBzd2l0Y2ggKHNjaGVt
ZShTdHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpLCBtX3VybC5tX3NjaGVtZUVuZCkpKSB7
Ci0gICAgY2FzZSBTY2hlbWU6OldTOgotICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgIG5v
blVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0
cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6OkZpbGU6Ci0gICAgICAgIG1f
dXJsSXNGaWxlID0gdHJ1ZTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBTY2hlbWU6
OkZUUDoKLSAgICBjYXNlIFNjaGVtZTo6R29waGVyOgotICAgIGNhc2UgU2NoZW1lOjpIVFRQOgot
ICAgIGNhc2UgU2NoZW1lOjpIVFRQUzoKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6Ok5vblNwZWNpYWw6Ci0gICAgICAgIG1f
dXJsSXNTcGVjaWFsID0gZmFsc2U7Ci0gICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVs
bHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KLQotc3RhdGljIGNvbnN0IGNoYXIgZG90QVNDSUlDb2RlWzJdID0geycyJywgJ2UnfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgYm9vbCBVUkxQ
YXJzZXI6OmlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4gYykKLXsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCpjID09ICcuJykgewotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9y
dFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlz
U2xhc2hRdWVzdGlvbk9ySGFzaCgqYyk7Ci0gICAgfQotICAgIGlmICgqYyAhPSAnJScpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgIGlmIChjLmF0RW5kKCkgfHwgKmMgIT0gZG90QVNDSUlD
b2RlWzBdKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBl
LCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlD
b2RlWzFdKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4Vmlv
bGF0aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0
aW9uT3JIYXNoKCpjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNE
b3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQot
ewotICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKmMg
PT0gJy4nKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4Vmlv
bGF0aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMp
OwotICAgIH0KLSAgICBpZiAoKmMgIT0gJyUnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
YWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAg
ICBpZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29kZVswXSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9u
OjpObz4oYyk7Ci0gICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkgewotICAgICAgICBhZHZh
bmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAg
ICByZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJz
ZXI6OmNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKSk7Ci0g
ICAgaWYgKCpjID09ICcuJykgewotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMu
YXRFbmQoKSkgewotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAg
ICAgICAgICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgQVNTRVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAg
ICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNlKGMpOwot
ICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAg
ICAgICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkgewotICAgICAgICAgICAg
aWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAq
YyA9PSAnIycpOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNEb3Vi
bGVEb3RQYXRoU2VnbWVudChjKSk7Ci0gICAgaWYgKCpjID09ICcuJykKLSAgICAgICAgYWR2YW5j
ZShjKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFk
dmFuY2UoYyk7Ci0gICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAg
ICBhZHZhbmNlKGMpOwotICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJ
SUNvZGVbMV0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgIH0KLSAgICBjb25zdW1lU2luZ2xl
RG90UGF0aFNlZ21lbnQoYyk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKHVu
c2lnbmVkIG5ld1BhdGhBZnRlckxhc3RTbGFzaCkKLXsKLSAgICBBU1NFUlQobV9kaWRTZWVTeW50
YXhWaW9sYXRpb24pOwotICAgIGlmICghbV91cmxJc0ZpbGUpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgQVNTRVJUKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IG1fYXNjaWlCdWZm
ZXIuc2l6ZSgpKTsKLSAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gY29tcG9uZW50VG9Qb3Ao
Jm1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSwgJm1fYXNjaWlCdWZmZXJbMF0g
KyBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCk7Ci0gICAgaWYgKG5ld1BhdGhBZnRlckxhc3RT
bGFzaCA9PSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxICYmIGlzV2lu
ZG93c0RyaXZlTGV0dGVyKGNvbXBvbmVudFRvUG9wKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFVSTFBhcnNlcjo6cG9wUGF0aCgpCi17Ci0gICAg
QVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICBpZiAobV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxKSB7
Ci0gICAgICAgIGF1dG8gbmV3UGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggLSAxOwotICAgICAgICBpZiAobV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0
U2xhc2hdID09ICcvJykKLSAgICAgICAgICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaC0tOwotICAg
ICAgICB3aGlsZSAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91
cmwubV9wb3J0TGVuZ3RoICYmIG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSAh
PSAnLycpCi0gICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKLSAgICAgICAgbmV3
UGF0aEFmdGVyTGFzdFNsYXNoKys7Ci0gICAgICAgIGlmIChzaG91bGRQb3BQYXRoKG5ld1BhdGhB
ZnRlckxhc3RTbGFzaCkpCi0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IG5ld1BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICB9Ci0gICAgbV9hc2NpaUJ1ZmZlci5yZXNpemUo
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgaWYgKG1fZGlkU2Vl
U3ludGF4VmlvbGF0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kaWRTZWVTeW50YXhWaW9s
YXRpb24gPSB0cnVlOwotICAgIAotICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7
Ci0gICAgc2l6ZV90IGNvZGVVbml0c1RvQ29weSA9IGl0ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlwZSo+KG1faW5wdXRCZWdpbikpOwotICAg
IFJFTEVBU0VfQVNTRVJUKGNvZGVVbml0c1RvQ29weSA8PSBtX2lucHV0U3RyaW5nLmxlbmd0aCgp
KTsKLSAgICBtX2FzY2lpQnVmZmVyLnJlc2VydmVDYXBhY2l0eShtX2lucHV0U3RyaW5nLmxlbmd0
aCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVVbml0c1RvQ29weTsgKytpKSB7
Ci0gICAgICAgIEFTU0VSVChpc0FTQ0lJKG1faW5wdXRTdHJpbmdbaV0pKTsKLSAgICAgICAgbV9h
c2NpaUJ1ZmZlci51bmNoZWNrZWRBcHBlbmQobV9pbnB1dFN0cmluZ1tpXSk7Ci0gICAgfQotfQot
Ci12b2lkIFVSTFBhcnNlcjo6ZmFpbHVyZSgpCi17Ci0gICAgbV91cmwuaW52YWxpZGF0ZSgpOwot
ICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpjaGVja0xvY2FsaG9zdENvZGVQb2lu
dChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIFVDaGFyMzIgY29k
ZVBvaW50KQotewotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8IHRvQVNDSUlMb3dlcigqaXRl
cmF0b3IpICE9IGNvZGVQb2ludCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8
Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9v
bCBVUkxQYXJzZXI6OmlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4gaXRlcmF0b3IpCi17Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRv
ciwgJ2wnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RD
b2RlUG9pbnQoaXRlcmF0b3IsICdvJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
IWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYycpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2EnKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQo
aXRlcmF0b3IsICdsJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9j
YWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnaCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ28nKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3Is
ICdzJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29k
ZVBvaW50KGl0ZXJhdG9yLCAndCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IGl0ZXJhdG9yLmF0RW5kKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc0xvY2FsaG9zdChTdHJp
bmdWaWV3IHZpZXcpCi17Ci0gICAgaWYgKHZpZXcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBp
c0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPih2aWV3LmNoYXJhY3RlcnM4KCks
IHZpZXcuY2hhcmFjdGVyczgoKSArIHZpZXcubGVuZ3RoKCkpKTsKLSAgICByZXR1cm4gaXNBdExv
Y2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4odmlldy5jaGFyYWN0ZXJzMTYoKSwgdmll
dy5jaGFyYWN0ZXJzMTYoKSArIHZpZXcubGVuZ3RoKCkpKTsKLX0KLQotQUxXQVlTX0lOTElORSBT
dHJpbmdWaWV3IFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXcoc2l6ZV90IHN0YXJ0LCBzaXplX3Qg
bGVuZ3RoKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpIHsK
LSAgICAgICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsK
LSAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZlci5kYXRhKCkgKyBzdGFydCwg
bGVuZ3RoKTsKLSAgICB9Ci0gICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1faW5wdXRTdHJp
bmcubGVuZ3RoKCkpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1faW5wdXRTdHJpbmcpLnN1YnN0
cmluZyhzdGFydCwgbGVuZ3RoKTsKLX0KLQotQUxXQVlTX0lOTElORSBVQ2hhciBVUkxQYXJzZXI6
OnBhcnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlvbikKLXsKLSAgICBpZiAoVU5MSUtFTFkobV9k
aWRTZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlcltwb3Np
dGlvbl07Ci0gICAgcmV0dXJuIG1faW5wdXRTdHJpbmdbcG9zaXRpb25dOwotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzaXplX3QgVVJMUGFyc2Vy
OjpjdXJyZW50UG9zaXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
IGl0ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikp
Ci0gICAgICAgIHJldHVybiBtX2FzY2lpQnVmZmVyLnNpemUoKTsKLSAgICAKLSAgICByZXR1cm4g
aXRlcmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBDaGFyYWN0ZXJU
eXBlKj4obV9pbnB1dEJlZ2luKSk7Ci19Ci0KLVVSTFBhcnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0
cmluZyYgaW5wdXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25V
VEY4UXVlcnlFbmNvZGluZykKLSAgICA6IG1faW5wdXRTdHJpbmcoaW5wdXQpCi17Ci0gICAgaWYg
KGlucHV0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiAhYmFzZS5t
X2Nhbm5vdEJlQUJhc2VVUkwpIHsKLSAgICAgICAgICAgIG1fdXJsID0gYmFzZTsKLSAgICAgICAg
ICAgIG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoaW5wdXQuaXM4Qml0KCkpIHsKLSAgICAgICAgbV9p
bnB1dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hh
cmFjdGVyczgoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1dC5jaGFyYWN0ZXJzMTYo
KTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczE2KCksIGlucHV0Lmxlbmd0aCgpLCBi
YXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX3VybC5t
X2lzVmFsaWQKLSAgICAgICAgfHwgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPT0gKG1fdXJsLnN0
cmluZygpICE9IGlucHV0KQotICAgICAgICB8fCAoaW5wdXQuaXNBbGxTcGVjaWFsQ2hhcmFjdGVy
czxpc0MwQ29udHJvbE9yU3BhY2U+KCkKLSAgICAgICAgICAgICYmIG1fdXJsLm1fc3RyaW5nID09
IGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpKSk7Ci0gICAgQVNTRVJUKGludGVy
bmFsVmFsdWVzQ29uc2lzdGVudChtX3VybCkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBp
ZiAoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSB7Ci0gICAgICAgIC8vIEZvcmNlIGEgc3ludGF4
IHZpb2xhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlIHNhbWUg
cmVzdWx0LgotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoIiAiLCBpbnB1dCks
IGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgVVJMIHBhcnNlZCA9IHBhcnNl
ci5yZXN1bHQoKTsKLSAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBB
U1NFUlQoYWxsVmFsdWVzRXF1YWwocGFyc2VyLnJlc3VsdCgpLCBtX3VybCkpOwotICAgIH0KLSNl
bmRpZgotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJz
ZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqIGlucHV0LCBjb25zdCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlF
bmNvZGluZykKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2luZyBVUkwgPCVzPiBiYXNlIDwl
cz4iLCBTdHJpbmcoaW5wdXQsIGxlbmd0aCkudXRmOCgpLmRhdGEoKSwgYmFzZS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKLSAgICBtX3VybCA9IHsgfTsKLSAgICBBU1NFUlQobV9hc2NpaUJ1ZmZl
ci5pc0VtcHR5KCkpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBxdWVyeUJ1ZmZlcjsKLQotICAgIHVu
c2lnbmVkIGVuZEluZGV4ID0gbGVuZ3RoOwotICAgIHdoaWxlIChVTkxJS0VMWShlbmRJbmRleCAm
JiBpc0MwQ29udHJvbE9yU3BhY2UoaW5wdXRbZW5kSW5kZXggLSAxXSkpKSB7Ci0gICAgICAgIHN5
bnRheFZpb2xhdGlvbihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihpbnB1dCwgaW5w
dXQpKTsKLSAgICAgICAgZW5kSW5kZXgtLTsKLSAgICB9Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4gYyhpbnB1dCwgaW5wdXQgKyBlbmRJbmRleCk7Ci0gICAgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYXV0aG9yaXR5T3JIb3N0QmVnaW47Ci0gICAgQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gcXVlcnlCZWdpbjsKLSAgICB3aGlsZSAoVU5MSUtF
TFkoIWMuYXRFbmQoKSAmJiBpc0MwQ29udHJvbE9yU3BhY2UoKmMpKSkgewotICAgICAgICBzeW50
YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICsrYzsKLSAgICB9Ci0gICAgYXV0byBiZWdpbkFmdGVy
Q29udHJvbEFuZFNwYWNlID0gYzsKLQotICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsK
LSAgICAgICAgU2NoZW1lU3RhcnQsCi0gICAgICAgIFNjaGVtZSwKLSAgICAgICAgTm9TY2hlbWUs
Ci0gICAgICAgIFNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5LAotICAgICAgICBQYXRoT3JBdXRo
b3JpdHksCi0gICAgICAgIFJlbGF0aXZlLAotICAgICAgICBSZWxhdGl2ZVNsYXNoLAotICAgICAg
ICBTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcywKLSAgICAgICAgU3BlY2lhbEF1dGhvcml0eUlnbm9y
ZVNsYXNoZXMsCi0gICAgICAgIEF1dGhvcml0eU9ySG9zdCwKLSAgICAgICAgSG9zdCwKLSAgICAg
ICAgRmlsZSwKLSAgICAgICAgRmlsZVNsYXNoLAotICAgICAgICBGaWxlSG9zdCwKLSAgICAgICAg
UGF0aFN0YXJ0LAotICAgICAgICBQYXRoLAotICAgICAgICBDYW5ub3RCZUFCYXNlVVJMUGF0aCwK
LSAgICAgICAgVVRGOFF1ZXJ5LAotICAgICAgICBOb25VVEY4UXVlcnksCi0gICAgICAgIEZyYWdt
ZW50LAotICAgIH07Ci0KLSNkZWZpbmUgTE9HX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJTdGF0
ZSAlcywgY29kZSBwb2ludCAlYywgcGFyc2VkIGRhdGEgPCVzPiBzaXplICV6dSIsIHgsICpjLCBw
YXJzZWREYXRhVmlldygwLCBjdXJyZW50UG9zaXRpb24oYykpLnV0ZjgoKS5kYXRhKCksIGN1cnJl
bnRQb3NpdGlvbihjKSkKLSNkZWZpbmUgTE9HX0ZJTkFMX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9H
KCJGaW5hbCBTdGF0ZTogJXMiLCB4KQotCi0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6U2NoZW1l
U3RhcnQ7Ci0gICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlz
VGFiT3JOZXdsaW5lKCpjKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAg
ICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKLSAg
ICAgICAgICAgIExPR19TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgICAgIGlmIChpc0FT
Q0lJQWxwaGEoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBl
cigqYykpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAg
ICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICAgICAgYyA9IGJl
Z2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTY2hlbWU7Ci0g
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVt
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAg
ICAgICAgICBMT0dfU1RBVEUoIlNjaGVtZSIpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWRTY2hl
bWVDaGFyYWN0ZXIoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlV
cHBlcigqYykpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQg
c2NoZW1lRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChzY2hl
bWVFbmQgPiBVUkw6Om1heFNjaGVtZUxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBmYWls
dXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBzY2hlbWVFbmQ7Ci0gICAgICAgICAg
ICAgICAgU3RyaW5nVmlldyB1cmxTY2hlbWUgPSBwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3Nj
aGVtZUVuZCk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAg
ICAgICAgICAgICAgIHN3aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIFNjaGVtZTo6RmlsZToKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwg
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBtX3VybElzRmlsZSA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7Ci0gICAgICAgICAgICAgICAgICAgICsr
YzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hl
bWU6OldTOgotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgICAgICAg
ICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAg
ICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5w
cm90b2NvbElzKHVybFNjaGVtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eTsKLSAgICAgICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0
eVNsYXNoZXM7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFA6Ci0gICAgICAgICAgICAg
ICAgY2FzZSBTY2hlbWU6OkhUVFBTOgotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Byb3Rv
Y29sSXNJbkhUVFBGYW1pbHkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBGQUxMVEhST1VH
SDsKLSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RlRQOgotICAgICAgICAgICAgICAgIGNh
c2UgU2NoZW1lOjpHb3BoZXI6Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJvdG9jb2xJcyh1cmxTY2hlbWUp
KQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZl
T3JBdXRob3JpdHk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOwotICAgICAgICAg
ICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgotICAgICAgICAgICAgICAgICAgICBub25VVEY4
UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbWF5YmVT
bGFzaCA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIGFkdmFuY2UobWF5YmVTbGFzaCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghbWF5YmVTbGFzaC5hdEVuZCgpICYmICptYXliZVNsYXNoID09
ICcvJykgewotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG1heWJlU2xhc2g7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoT3JBdXRob3JpdHk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoKmMgPT0gJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsr
YzsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBv
c2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQg
PSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX2Nhbm5vdEJlQUJhc2VVUkwgPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7Ci0gICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJD
b250cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgewotICAg
ICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRy
b2xBbmRTcGFjZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFN0YXRlOjpOb1NjaGVtZToKLSAgICAgICAgICAgIExPR19TVEFURSgiTm9TY2hlbWUiKTsK
LSAgICAgICAgICAgIGlmICghYmFzZS5pc1ZhbGlkKCkgfHwgKGJhc2UubV9jYW5ub3RCZUFCYXNl
VVJMICYmICpjICE9ICcjJykpIHsKLSAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGJhc2UubV9j
YW5ub3RCZUFCYXNlVVJMICYmICpjID09ICcjJykgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgICsrYzsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghYmFz
ZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpS
ZWxhdGl2ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwot
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eToKLSAgICAgICAgICAg
IExPR19TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgICAgIGlm
ICgqYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7
Ci0gICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoYy5hdEVu
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKmMgPT0g
Jy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNs
YXNoZXM7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDsKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToK
LSAgICAgICAgICAgIExPR19TVEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7Ci0gICAgICAgICAgICBp
ZiAoKmMgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKLSAgICAg
ICAgICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0
ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJl
Z2luID0gYzsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHBh
cnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAg
ICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAg
ICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAg
ICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlJl
bGF0aXZlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAgICAgICBjYXNlICcv
JzoKLSAgICAgICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpSZWxhdGl2ZVNsYXNoOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgJz8nOgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0
c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsK
LSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAg
ICAgKytjOwotICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAg
ICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlICcjJzoKLSAgICAgICAgICAgICAgICBjb3B5VVJMUGFy
dHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rpbmcp
OwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKLSAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
IGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywg
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRp
b24oYykgJiYgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgIT0gJy8nKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAg
ICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24o
Yyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBh
dGg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKLSAgICAgICAgICAgIExP
R19TVEFURSgiUmVsYXRpdmVTbGFzaCIpOwotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAq
YyA9PSAnXFwnKSB7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGNvcHlV
UkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjovLyIsIDMpOwot
ICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKLSAgICAgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3Vy
cmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRo
b3JpdHlPckhvc3Q7Ci0gICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0g
YzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhR
dWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7
Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1faG9z
dEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpQYXRoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgotICAgICAgICAgICAgTE9HX1NUQVRF
KCJTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcyIpOwotICAgICAgICAgICAgaWYgKExJS0VMWSgqYyA9
PSAnLycgfHwgKmMgPT0gJ1xcJykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMg
PT0gJ1xcJykpCi0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAg
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgYWR2
YW5jZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoTElLRUxZKCFjLmF0RW5kKCkgJiYgKCpjID09
ICcvJyB8fCAqYyA9PSAnXFwnKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCpjID09ICdcXCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNo
ZXM6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVz
Iik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpIHsKLSAgICAgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlP
ckhvc3Q7Ci0gICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0
eU9ySG9zdDoKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkF1
dGhvcml0eU9ySG9zdCIpOwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnQCcpIHsKLSAgICAg
ICAgICAgICAgICAgICAgYXV0byBsYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICBhdXRv
IGZpbmRMYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWZpbmRMYXN0QXQu
YXRFbmQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgVVJMX1BBUlNFUl9MT0coIkZpbmRp
bmcgbGFzdCBAOiAlYyIsICpmaW5kTGFzdEF0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgqZmluZExhc3RBdCA9PSAnQCcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEF0
ID0gZmluZExhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTbGFzaCA9ICpm
aW5kTGFzdEF0ID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmZpbmRMYXN0QXQgPT0gJ1xc
Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8fCAqZmluZExhc3RBdCA9
PSAnPycgfHwgKmZpbmRMYXN0QXQgPT0gJyMnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgKytmaW5kTGFzdEF0OwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlQXV0aG9yaXR5KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBsYXN0QXQpKTsK
LSAgICAgICAgICAgICAgICAgICAgYyA9IGxhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgYWR2
YW5jZShjKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwot
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIb3N0OwotICAgICAgICAgICAgICAg
ICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1Ns
YXNoID0gKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKTsKLSAgICAg
ICAgICAgICAgICBpZiAoaXNTbGFzaCB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJ
c1NwZWNpYWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBt
X3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5n
dGggPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYXV0
aG9yaXR5T3JIb3N0QmVnaW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNz
d29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
cGFyc2VIb3N0QW5kUG9ydChpdGVyYXRvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCFpc1NsYXNoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3Bl
Y2lhbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
Yyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRP
ck5vbkFTQ0lJKCpjKSkKLSAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9u
QVNDSUkgPSB0cnVlOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0gd2hpbGUg
KCFjLmF0RW5kKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Okhv
c3Q6Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJIb3N0Iik7
Ci0gICAgICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMn
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCpj
ID09ICc/JyB8fCAqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25B
U0NJSSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJ
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5h
dEVuZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpGaWxlOgot
ICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7
Ci0gICAgICAgICAgICBjYXNlICdcXCc6Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGMpOwotICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSAnLyc6
Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OkZpbGVTbGFzaDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICc/JzoKLSAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgp
ICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvcHlV
UkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29k
aW5nKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOwotICAg
ICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vPyIsIDQpOwotICAgICAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3Vy
cmVudFBvc2l0aW9uKGMpIC0gMjsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9o
b3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cG9ydExlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgJyMnOgotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKLSAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2Nv
bElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFz
ZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyMiLCA0
KTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRp
b24oYykgLSAyOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBt
X3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVu
ZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OwotICAgICAgICAg
ICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlm
IChiYXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSAmJiBzaG91bGRDb3B5
RmlsZVVSTChjKSkKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwg
VVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0g
ICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoIi8vLyIsIDMpOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
c3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKQotICAgICAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFz
aDoKLSAgICAgICAgICAgIExPR19TVEFURSgiRmlsZVNsYXNoIik7Ci0gICAgICAgICAgICBpZiAo
TElLRUxZKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChV
TkxJS0VMWSgqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAg
ICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwot
ICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpGaWxlSG9zdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFy
dCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAg
ICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFwcGVu
ZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7Ci0gICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNl
clN0YXJ0ICsgMTsKLSAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6Ci0gICAgICAgICAgICBkbyB7
Ci0gICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICAgICAgICAg
IGlmIChpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJv
b2wgd2luZG93c1F1aXJrID0gdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2lu
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyaykgewotICAgICAgICAgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdp
bik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRv
d3NRdWlyayB8fCBhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQod2luZG93c1F1aXJrIHx8IHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3Np
dGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoKmMgPT0gJz8nKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KCIvPyIsIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9
PSAnIycpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8jIiwg
Mik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMp
IC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhv
cml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNMb2NhbGhvc3QocGFyc2VkRGF0
YVZpZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91cmwubV9w
YXNzd29yZEVuZCkpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGMpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91cmwu
bV9wYXNzd29yZEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoU3RhcnQ7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhh
c1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAg
ICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFN0YXRlOjpQYXRoU3RhcnQ6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhTdGFydCIp
OwotICAgICAgICAgICAgaWYgKCpjICE9ICcvJyAmJiAqYyAhPSAnXFwnKSB7Ci0gICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6UGF0aDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpQYXRoOgot
ICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8n
IHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlm
IChVTkxJS0VMWShtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoY3VycmVu
dFBvc2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09
ICcvJykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNEb3VibGVEb3RQYXRoU2Vn
bWVudChjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAg
ICAgICAgICAgICAgICAgICBjb25zdW1lRG91YmxlRG90UGF0aFNlZ21lbnQoYyk7Ci0gICAgICAg
ICAgICAgICAgICAgIHBvcFBhdGgoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1NpbmdsZURvdFBh
dGhTZWdtZW50KGMpKSkgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKCpjID09ICc/JykgewotICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGlm
IChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2lu
ID0gYzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5Owot
ICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpVVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21l
bnQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1
dGY4UGVyY2VudEVuY29kZTxpc0luRGVmYXVsdEVuY29kZVNldD4oYyk7Ci0gICAgICAgICAgICAr
K2M7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFz
ZVVSTFBhdGg6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7
Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJz8nKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9w
YXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJz8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgaWYg
KG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4g
PSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlVURjhRdWVyeTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09
ICcvJykgewotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAg
ICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAg
ICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFN0YXRlOjpVVEY4UXVlcnk6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlVURjhRdWVy
eSIpOwotICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4oKSk7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAg
ICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVCghbm9uVVRGOFF1ZXJ5RW5jb2Rpbmcp
OwotICAgICAgICAgICAgdXRmOFF1ZXJ5RW5jb2RlKGMpOwotICAgICAgICAgICAgKytjOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKLSAgICAg
ICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIk5vblVURjhRdWVyeSIpOwot
ICAgICAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KCkpOwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4s
IGMpKTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3Np
dGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBhcHBlbmRDb2RlUG9pbnQocXVlcnlCdWZmZXIsICpjKTsKLSAgICAgICAgICAgICAgICBh
ZHZhbmNlKGMsIHF1ZXJ5QmVnaW4pOwotICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAg
ICAgICAgICBVUkxfUEFSU0VSX0xPRygiU3RhdGUgRnJhZ21lbnQiKTsKLSAgICAgICAgICAgIHV0
ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAgICAgKytj
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHN0
YXRlKSB7Ci0gICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgaWYgKCFjdXJyZW50UG9zaXRpb24oYykgJiYg
YmFzZS5pc1ZhbGlkKCkgJiYgIWJhc2UubV9jYW5ub3RCZUFCYXNlVVJMKSB7Ci0gICAgICAgICAg
ICBtX3VybCA9IGJhc2U7Ci0gICAgICAgICAgICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZp
ZXIoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmYWlsdXJlKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAgIExPR19G
SU5BTF9TVEFURSgiU2NoZW1lIik7Ci0gICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgU3RhdGU6Ok5vU2NoZW1lOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5v
U2NoZW1lIik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2Fz
ZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgY29weVVSTFBhcnRz
VW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgotICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOwotICAgICAgICBBU1NFUlQobV91
cmwubV91c2VyU3RhcnQpOwotICAgICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQgPT0gY3Vy
cmVudFBvc2l0aW9uKGMpKTsKLSAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQ
b3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0LS07Ci0g
ICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3Vy
bC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9z
dEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAw
OwotICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0
ICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgIExP
R19GSU5BTF9TVEFURSgiUmVsYXRpdmUiKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgotICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFz
ZSwgVVJMUGFydDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1f
dXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM6Ci0gICAgICAgIExP
R19GSU5BTF9TVEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKLSAgICAgICAgbV91cmwu
bV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpTcGVjaWFs
QXV0aG9yaXR5SWdub3JlU2xhc2hlczoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTcGVjaWFs
QXV0aG9yaXR5SWdub3JlU2xhc2hlcyIpOwotICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6Ci0gICAgICAgIExPR19GSU5B
TF9TVEFURSgiQXV0aG9yaXR5T3JIb3N0Iik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1
cnJlbnRQb3NpdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgIG1fdXJsLm1fcGFz
c3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RC
ZWdpbi5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owot
ICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICB9IGVsc2UgaWYgKCFwYXJzZUhv
c3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgZmFpbHVyZSgp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYg
KG1fdXJsSXNTcGVjaWFsKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGgg
KyAxOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOwotICAgICAgICB9Ci0gICAg
ICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAg
ICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFN0YXRlOjpIb3N0OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkhvc3QiKTsKLSAg
ICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAg
ICAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChtX3VybElzU3BlY2lhbCkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgbV91
cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsK
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hv
c3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91
cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAg
ICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGUiKTsKLSAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgp
ICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICBjb3B5VVJMUGFydHNV
bnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8iLCAzKTsKLSAgICAgICAgbV91cmwu
bV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgIG1f
dXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJG
aWxlU2xhc2giKTsKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICBtX3VybC5t
X3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSArIDE7Ci0gICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoIi8vIiwgMik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBt
X3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVM
ZXR0ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQg
KyA0OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRl
OjpGaWxlSG9zdDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAg
ICBpZiAodGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICYmIGlzV2luZG93
c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRo
b3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0g
ICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3Np
dGlvbihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAg
ICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgbV91
cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBt
X3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7
Ci0gICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgIGlmIChpc0xvY2FsaG9zdChw
YXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBt
X3VybC5tX3Bhc3N3b3JkRW5kKSkpIHsKLSAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5r
KG1fdXJsLm1fcGFzc3dvcmRFbmQpOwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3Vy
cmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAg
ICAgICAgfQotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVu
Z3RoICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgotICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIGNhc2UgU3RhdGU6OlBhdGg6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiUGF0aCIpOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24o
Yyk7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRoOgotICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAgIG1fdXJsLm1f
cGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9
IG1fdXJsLm1fcGF0aEVuZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6VVRGOFF1
ZXJ5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlVURjhRdWVyeSIpOwotICAgICAgICBBU1NF
UlQocXVlcnlCZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAg
ICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgotICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIk5vblVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5
KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6RnJh
Z21lbnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiRnJhZ21lbnQiKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgaWYgKExJS0VMWSghbV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKSB7
Ci0gICAgICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLSAgICAgICAgQVNTRVJU
KG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV91cmwubV9z
dHJpbmcgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUobV9hc2NpaUJ1ZmZlcikpOwotICAgIG1fdXJs
Lm1faXNWYWxpZCA9IHRydWU7Ci0gICAgVVJMX1BBUlNFUl9MT0coIlBhcnNlZCBVUkwgPCVzPiIs
IG1fdXJsLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShpdGVy
YXRvci5hdEVuZCgpKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAg
ICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAg
ICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgYWR2YW5jZShpdGVyYXRvcikp
IHsKLSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpIHsKLSAgICAgICAgICAgIG1fdXJsLm1f
dXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAgICBhdXRvIGl0
ZXJhdG9yQXRDb2xvbiA9IGl0ZXJhdG9yOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAg
ICAgICAgIGJvb2wgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IGZhbHNlOwotICAgICAgICAgICAg
d2hpbGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVy
YXRvcikpKSB7Ci0gICAgICAgICAgICAgICAgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihpdGVyYXRvckF0Q29sb24pOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFz
c3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdXJsLm1f
dXNlckVuZCA+IG1fdXJsLm1fdXNlclN0YXJ0KQotICAgICAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCdAJyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHRhYk9yTmV3bGluZUFmdGVyQ29sb24pCi0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yQXRDb2xvbik7Ci0gICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc6Jyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICB1dGY4UGVyY2VudEVuY29kZTxXZWJDb3JlOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJh
dG9yKTsKLSAgICB9Ci0gICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJh
dG9yKSkKLSAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V2ViQ29yZTo6aXNJblVzZXJJbmZvRW5j
b2RlU2V0PihpdGVyYXRvcik7Ci0gICAgbV91cmwubV9wYXNzd29yZEVuZCA9IGN1cnJlbnRQb3Np
dGlvbihpdGVyYXRvcik7Ci0gICAgaWYgKCFtX3VybC5tX3VzZXJFbmQpCi0gICAgICAgIG1fdXJs
Lm1fdXNlckVuZCA9IG1fdXJsLm1fcGFzc3dvcmRFbmQ7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignQCcpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPgotdm9p
ZCBVUkxQYXJzZXI6OmFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIoVW5zaWduZWRJbnRlZ2VyVHlw
ZSBudW1iZXIpCi17Ci0gICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAq
IDMgKyAxXTsKLSAgICBMQ2hhciogZW5kID0gc3RkOjplbmQoYnVmKTsKLSAgICBMQ2hhciogcCA9
IGVuZDsKLSAgICBkbyB7Ci0gICAgICAgICotLXAgPSAobnVtYmVyICUgMTApICsgJzAnOwotICAg
ICAgICBudW1iZXIgLz0gMTA7Ci0gICAgfSB3aGlsZSAobnVtYmVyKTsKLSAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKHAsIGVuZCAtIHApOwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2
NChJUHY0QWRkcmVzcyBhZGRyZXNzKQotewotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8
dWludDhfdD4oYWRkcmVzcyA+PiAyNCk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwot
ICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAxNik7Ci0g
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZm
ZXI8dWludDhfdD4oYWRkcmVzcyA+PiA4KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7
Ci0gICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzKTsKLX0KLSAg
ICAKLXN0YXRpYyBzaXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWlu
dDE2X3QsIDg+JiBhZGRyZXNzLCBzaXplX3QgYmVnaW4pCi17Ci0gICAgc2l6ZV90IGVuZCA9IGJl
Z2luOwotICAgIGZvciAoOyBlbmQgPCA4OyBlbmQrKykgewotICAgICAgICBpZiAoYWRkcmVzc1tl
bmRdKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBlbmQgLSBiZWdpbjsK
LX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5j
ZShjb25zdCBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKLXsKLSAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbG9uZ2VzdDsKLSAgICBzaXplX3QgbG9uZ2VzdExlbmd0aCA9IDA7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyBpKyspIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0
aCA9IHplcm9TZXF1ZW5jZUxlbmd0aChhZGRyZXNzLCBpKTsKLSAgICAgICAgaWYgKGxlbmd0aCkg
ewotICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgKCFsb25nZXN0IHx8IGxvbmdlc3RMZW5n
dGggPCBsZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgbG9uZ2VzdCA9IGk7Ci0gICAgICAgICAg
ICAgICAgbG9uZ2VzdExlbmd0aCA9IGxlbmd0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGkgKz0gbGVuZ3RoOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsb25nZXN0OwotfQot
Ci12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKQotewot
ICAgIGJvb2wgcHJpbnRlZCA9IGZhbHNlOwotICAgIGlmIChhdXRvIG5pYmJsZTAgPSBwaWVjZSA+
PiAxMikgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNh
c2VBU0NJSUhleERpZ2l0KG5pYmJsZTApKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0gICAg
fQotICAgIGF1dG8gbmliYmxlMSA9IHBpZWNlID4+IDggJiAweEY7Ci0gICAgaWYgKHByaW50ZWQg
fHwgbmliYmxlMSkgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9M
b3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTEpKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7
Ci0gICAgfQotICAgIGF1dG8gbmliYmxlMiA9IHBpZWNlID4+IDQgJiAweEY7Ci0gICAgaWYgKHBy
aW50ZWQgfHwgbmliYmxlMikKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJs
ZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChuaWJibGUyKSk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChwaWVjZSAmIDB4RikpOwot
fQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NihVUkxQYXJzZXI6OklQdjZBZGRyZXNz
IGFkZHJlc3MpCi17Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignWycpOwotICAgIGF1dG8gY29t
cHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7Ci0gICAgZm9y
IChzaXplX3QgcGllY2UgPSAwOyBwaWVjZSA8IDg7IHBpZWNlKyspIHsKLSAgICAgICAgaWYgKGNv
bXByZXNzUG9pbnRlciAmJiBjb21wcmVzc1BvaW50ZXIudmFsdWUoKSA9PSBwaWVjZSkgewotICAg
ICAgICAgICAgQVNTRVJUKCFhZGRyZXNzW3BpZWNlXSk7Ci0gICAgICAgICAgICBpZiAocGllY2Up
Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjo6IiwgMik7Ci0gICAg
ICAgICAgICB3aGlsZSAocGllY2UgPCA4ICYmICFhZGRyZXNzW3BpZWNlXSkKLSAgICAgICAgICAg
ICAgICBwaWVjZSsrOwotICAgICAgICAgICAgaWYgKHBpZWNlID09IDgpCi0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc2VyaWFsaXplSVB2NlBpZWNlKGFkZHJlc3Nb
cGllY2VdKTsKLSAgICAgICAgaWYgKHBpZWNlIDwgNykKLSAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJzonKTsKLSAgICB9Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignXScpOwotfQot
Ci1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yIHsKLSAgICBGYWls
dXJlLAotICAgIE92ZXJmbG93LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KLUV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4g
VVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiYgaXRlcmF0b3IsIGJvb2wmIGRpZFNlZVN5bnRheFZpb2xhdGlvbikKLXsKLSAgICBlbnVtIGNs
YXNzIFN0YXRlIDogdWludDhfdCB7Ci0gICAgICAgIFVua25vd25CYXNlLAotICAgICAgICBEZWNp
bWFsLAotICAgICAgICBPY3RhbE9ySGV4LAotICAgICAgICBPY3RhbCwKLSAgICAgICAgSGV4LAot
ICAgIH07Ci0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93bkJhc2U7Ci0gICAgQ2hlY2tl
ZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsKLSAgICBpZiAoIWl0ZXJhdG9y
LmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgd2hpbGUgKCFpdGVyYXRv
ci5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7Ci0g
ICAgICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgKytp
dGVyYXRvcjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICgq
aXRlcmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93
ZWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Ci0gICAgICAgIH0K
LSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpVbmtub3duQmFz
ZToKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0b3IgPT0gJzAnKSkgewotICAgICAg
ICAgICAgICAgICsraXRlcmF0b3I7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6T2N0
YWxPckhleDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OkRlY2ltYWw7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBTdGF0ZTo6T2N0YWxPckhleDoKLSAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlv
biA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09ICd4JyB8fCAqaXRlcmF0b3Ig
PT0gJ1gnKSB7Ci0gICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpIZXg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbDsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFN0YXRlOjpEZWNpbWFsOgotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGln
aXQoKml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2
NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICAgICAgICAgIHZhbHVlICo9IDEwOwot
ICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICAgICAgaWYgKFVO
TElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAg
ICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpP
Y3RhbDoKLSAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAg
ICAgICAgaWYgKCppdGVyYXRvciA8ICcwJyB8fCAqaXRlcmF0b3IgPiAnNycpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVy
ZSk7Ci0gICAgICAgICAgICB2YWx1ZSAqPSA4OwotICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJh
dG9yIC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQo
KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNp
bmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpIZXg6Ci0gICAgICAgICAgICBBU1NFUlQoZGlk
U2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KCpp
dGVyYXRvcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVj
ZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgICAgICB2YWx1ZSAqPSAxNjsKLSAgICAg
ICAgICAgIHZhbHVlICs9IHRvQVNDSUlIZXhWYWx1ZSgqaXRlcmF0b3IpOwotICAgICAgICAgICAg
aWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAg
ICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
fQotICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gdmFsdWUu
dW5zYWZlR2V0KCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQ2NF90IHBvdzI1Nihz
aXplX3QgZXhwb25lbnQpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhwb25lbnQgPD0gNCk7Ci0g
ICAgdWludDY0X3QgdmFsdWVzWzVdID0gezEsIDI1NiwgMjU2ICogMjU2LCAyNTYgKiAyNTYgKiAy
NTYsIDI1NnVsbCAqIDI1NiAqIDI1NiAqIDI1NiB9OwotICAgIHJldHVybiB2YWx1ZXNbZXhwb25l
bnRdOwotfQotCi1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvciB7Ci0gICAg
RmFpbHVyZSwKLSAgICBOb3RJUHY0LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVjdGVk
PFVSTFBhcnNlcjo6SVB2NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvcj4gVVJM
UGFyc2VyOjpwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGVGb3JTeW50YXhWaW9sYXRpb24+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9u
LCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBWZWN0
b3I8RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiwg
ND4gaXRlbXM7Ci0gICAgYm9vbCBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSBmYWxzZTsKLSAgICBp
ZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIHdoaWxlICgh
aXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9y
KSkgewotICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKLSAgICAgICAg
ICAgICsraXRlcmF0b3I7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoaXRlbXMuc2l6ZSgpID49IDQpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAgIGl0ZW1zLmFwcGVuZChwYXJz
ZUlQdjRQaWVjZShpdGVyYXRvciwgZGlkU2VlU3ludGF4VmlvbGF0aW9uKSk7Ci0gICAgICAgIGlm
ICghaXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICAr
K2l0ZXJhdG9yOwotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24p
OwotICAgICAgICAgICAgZWxzZSBpZiAoKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpIHx8ICFpdGVtcy5zaXplKCkg
fHwgaXRlbXMuc2l6ZSgpID4gNCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQ
YXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1z
KSB7Ci0gICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2
NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIH0KLSAgICBmb3IgKGNvbnN0
IGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYg
aXRlbS5lcnJvcigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCi0gICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0g
ICAgfQotICAgIGlmIChpdGVtcy5zaXplKCkgPiAxKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaXRlbXMuc2l6ZSgpIC0gMTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoaXRlbXNb
aV0udmFsdWUoKSA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
SVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGl0
ZW1zW2l0ZW1zLnNpemUoKSAtIDFdLnZhbHVlKCkgPj0gcG93MjU2KDUgLSBpdGVtcy5zaXplKCkp
KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVy
ZSk7Ci0KLSAgICBpZiAoZGlkU2VlU3ludGF4VmlvbGF0aW9uKQotICAgICAgICBzeW50YXhWaW9s
YXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgZm9yIChjb25z
dCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgaWYgKGl0ZW0udmFsdWUoKSA+IDI1NSkK
LSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBv
c2l0aW9uKTsKLSAgICB9Ci0KLSAgICBpZiAoVU5MSUtFTFkoaXRlbXMuc2l6ZSgpICE9IDQpKQot
ICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlv
bik7Ci0KLSAgICBJUHY0QWRkcmVzcyBpcHY0ID0gaXRlbXMudGFrZUxhc3QoKS52YWx1ZSgpOwot
ICAgIGZvciAoc2l6ZV90IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgaXRlbXMuc2l6ZSgpOyArK2Nv
dW50ZXIpCi0gICAgICAgIGlwdjQgKz0gaXRlbXNbY291bnRlcl0udmFsdWUoKSAqIHBvdzI1Nigz
IC0gY291bnRlcik7Ci0gICAgcmV0dXJuIGlwdjQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+Ci1zdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2
NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0
b3IpCi17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgdWludDMyX3QgcGllY2UgPSAwOwotICAgIGJvb2wgbGVhZGluZ1plcm9zID0g
ZmFsc2U7Ci0gICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOwotICAgIHdoaWxlICghaXRlcmF0b3Iu
YXRFbmQoKSkgewotICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgKytkaWdpdENvdW50OwotICAgICAg
ICBpZiAoIXBpZWNlICYmICppdGVyYXRvciA9PSAnMCcpIHsKLSAgICAgICAgICAgIGlmIChsZWFk
aW5nWmVyb3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
ICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwaWVjZSAm
JiAqaXRlcmF0b3IgPT0gJzAnKQotICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAg
ICAgICAgcGllY2UgPSBwaWVjZSAqIDEwICsgKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICBpZiAo
cGllY2UgPiAyNTUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBh
ZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9y
KTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgaWYgKCppdGVyYXRvciA9PSAnLicpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgaWYgKHBpZWNlICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICByZXR1cm4gcGllY2U7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1zdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFy
c2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
aXRlcmF0b3IpCi17Ci0gICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9IDA7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IHBpZWNlID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKLSAgICAgICAg
ICAgIGFkZHJlc3MgPSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZhbHVlKCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmIChpIDwgMykg
ewotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4nKQotICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICBhZHZhbmNlPENo
YXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAg
ICAgfSBlbHNlIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgfQotICAgIEFTU0VSVChpdGVyYXRvci5hdEVuZCgpKTsKLSAgICByZXR1
cm4gYWRkcmVzczsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0ZDo6
b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0
KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCi17Ci0gICAgQVNTRVJUKCpjID09
ICdbJyk7Ci0gICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBjOwotICAgIGFkdmFuY2UoYywgaG9z
dEJlZ2luKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotCi0gICAgSVB2NkFkZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19
OwotICAgIHNpemVfdCBwaWVjZVBvaW50ZXIgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBjb21wcmVzc1BvaW50ZXI7Ci0KLSAgICBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgIGFkdmFu
Y2UoYywgaG9zdEJlZ2luKTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICgqYyAhPSAnOicpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7Ci0gICAg
ICAgICsrcGllY2VQb2ludGVyOwotICAgICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50
ZXI7Ci0gICAgfQotICAgIAotICAgIHdoaWxlICghYy5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChw
aWVjZVBvaW50ZXIgPT0gOCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgIGlmICgqYyA9PSAnOicpIHsKLSAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGFkdmFuY2Uo
YywgaG9zdEJlZ2luKTsKLSAgICAgICAgICAgICsrcGllY2VQb2ludGVyOwotICAgICAgICAgICAg
Y29tcHJlc3NQb2ludGVyID0gcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50
ZXIgJiYgcGllY2VQb2ludGVyIDwgNikpIHsKLSAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFs
PElQdjRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIg
PT0gNSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICBhZGRy
ZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgPj4gMTY7Ci0gICAgICAg
ICAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpICYg
MHhGRkZGOwotICAgICAgICAgICAgICAgIGMgPSB7IH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdWludDE2X3QgdmFsdWUgPSAwOwot
ICAgICAgICBzaXplX3QgbGVuZ3RoID0gMDsKLSAgICAgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBm
YWxzZTsKLSAgICAgICAgZm9yICg7IGxlbmd0aCA8IDQ7IGxlbmd0aCsrKSB7Ci0gICAgICAgICAg
ICBpZiAoYy5hdEVuZCgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYg
KCFpc0FTQ0lJSGV4RGlnaXQoKmMpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgaWYgKGlzQVNDSUlVcHBlcigqYykpCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGhvc3RCZWdpbik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJzAnICYmICFsZW5ndGgpCi0gICAg
ICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgIHZhbHVlID0gdmFs
dWUgKiAweDEwICsgdG9BU0NJSUhleFZhbHVlKCpjKTsKLSAgICAgICAgICAgIGFkdmFuY2UoYywg
aG9zdEJlZ2luKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKFVOTElLRUxZKCh2
YWx1ZSAmJiBsZWFkaW5nWmVyb3MpIHx8ICghdmFsdWUgJiYgbGVuZ3RoID4gMSkpKQotICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAgICAgYWRkcmVzc1twaWVj
ZVBvaW50ZXIrK10gPSB2YWx1ZTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDggfHwgKmMgIT0gJzonKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgYWR2YW5jZShjLCBob3N0QmVn
aW4pOwotICAgIH0KLSAgICAKLSAgICBpZiAoIWMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAKLSAgICBpZiAoY29tcHJlc3NQb2ludGVyKSB7Ci0gICAgICAgIHNp
emVfdCBzd2FwcyA9IHBpZWNlUG9pbnRlciAtIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpOwotICAg
ICAgICBwaWVjZVBvaW50ZXIgPSA3OwotICAgICAgICB3aGlsZSAoc3dhcHMpCi0gICAgICAgICAg
ICBzdGQ6OnN3YXAoYWRkcmVzc1twaWVjZVBvaW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2lu
dGVyLnZhbHVlKCkgKyBzd2Fwcy0tIC0gMV0pOwotICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVy
ICE9IDgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gcG9zc2libGVDb21wcmVzc1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5j
ZShhZGRyZXNzKTsKLSAgICBpZiAocG9zc2libGVDb21wcmVzc1BvaW50ZXIpCi0gICAgICAgIHBv
c3NpYmxlQ29tcHJlc3NQb2ludGVyLnZhbHVlKCkrKzsKLSAgICBpZiAoVU5MSUtFTFkoY29tcHJl
c3NQb2ludGVyICE9IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKSkKLSAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGhvc3RCZWdpbik7Ci0gICAgCi0gICAgcmV0dXJuIGFkZHJlc3M7Ci19Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1VUkxQYXJzZXI6OkxDaGFyQnVmZmVyIFVSTFBh
cnNlcjo6cGVyY2VudERlY29kZShjb25zdCBMQ2hhciogaW5wdXQsIHNpemVfdCBsZW5ndGgsIGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZp
b2xhdGlvblBvc2l0aW9uKQotewotICAgIExDaGFyQnVmZmVyIG91dHB1dDsKLSAgICBvdXRwdXQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07
Ci0gICAgICAgIGlmIChieXRlICE9ICclJykKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRB
cHBlbmQoYnl0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAt
IDIpIHsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBp
c0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICAgICAgICAg
ICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0s
IGlucHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLSAgICAKLVVSTFBhcnNlcjo6TENoYXJCdWZmZXIg
VVJMUGFyc2VyOjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0
aCkKLXsKLSAgICBMQ2hhckJ1ZmZlciBvdXRwdXQ7Ci0gICAgb3V0cHV0LnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobGVuZ3RoKTsKLSAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGlucHV0W2ldOwotICAgICAgICBpZiAo
Ynl0ZSAhPSAnJScpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOwot
ICAgICAgICBlbHNlIGlmIChsZW5ndGggPiAyICYmIGkgPCBsZW5ndGggLSAyKSB7Ci0gICAgICAg
ICAgICBpZiAoaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkgJiYgaXNBU0NJSUhleERpZ2l0
KGlucHV0W2kgKyAyXSkpIHsKLSAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5k
KHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAgICAgICAg
ICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG91dHB1
dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0
cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxVUkxQYXJz
ZXI6OkxDaGFyQnVmZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9t
YWluLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JT
eW50YXhWaW9sYXRpb25Qb3NpdGlvbikKLXsKLSAgICBMQ2hhckJ1ZmZlciBhc2NpaTsKLSAgICBp
ZiAoZG9tYWluLmlzQWxsQVNDSUkoKSkgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gZG9tYWlu
Lmxlbmd0aCgpOwotICAgICAgICBpZiAoZG9tYWluLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBj
b25zdCBMQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAg
ICAgYXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChV
TkxJS0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQotICAgICAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0g
ICAgICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0
ZXJzW2ldKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBj
b25zdCBVQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAg
ICAgIGFzY2lpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkKLSAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwot
ICAgICAgICAgICAgICAgIGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJTG93ZXIoY2hhcmFj
dGVyc1tpXSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhc2Np
aTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3Qgc2l6ZV90IG1heERvbWFpbkxlbmd0aCA9IDY0Owot
ICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW21heERvbWFpbkxlbmd0aF07Ci0gICAgVUVycm9yQ29k
ZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMg
PSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOwotICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZl
cnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29k
ZXIoKSwgU3RyaW5nVmlldyhkb21haW4pLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBkb21haW4u
bGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVyLCBtYXhEb21haW5MZW5ndGgsICZwcm9jZXNzaW5nRGV0
YWlscywgJmVycm9yKTsKLSAgICBBU1NFUlQobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA8PSBzdGF0
aWNfY2FzdDxpbnQzMl90PihtYXhEb21haW5MZW5ndGgpKTsKLQotICAgIGlmIChVX1NVQ0NFU1Mo
ZXJyb3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKLSAgICAgICAgZm9yIChpbnQz
Ml90IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsgKytpKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQoaXNBU0NJSShob3N0bmFtZUJ1ZmZlcltpXSkpOwotICAgICAgICAgICAgQVNTRVJU
KCFpc0FTQ0lJVXBwZXIoaG9zdG5hbWVCdWZmZXJbaV0pKTsKLSAgICAgICAgfQotICAgICAgICBh
c2NpaS5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotICAg
ICAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcoYXNjaWkuZGF0YSgpLCBhc2NpaS5zaXplKCkp
KQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9u
UG9zaXRpb24pOwotICAgICAgICByZXR1cm4gYXNjaWk7Ci0gICAgfQotICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50
KGNvbnN0IFVSTFBhcnNlcjo6TENoYXJCdWZmZXImIGFzY2lpRG9tYWluKQotewotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXNjaWlEb21haW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYg
KGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbltpXSkpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCppdGVyYXRv
ciA9PSAnOicpOwotICAgIGF1dG8gY29sb25JdGVyYXRvciA9IGl0ZXJhdG9yOwotICAgIGFkdmFu
Y2UoaXRlcmF0b3IsIGNvbG9uSXRlcmF0b3IpOwotICAgIHVpbnQzMl90IHBvcnQgPSAwOwotICAg
IGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICB1bnNpZ25lZCBwb3J0
TGVuZ3RoID0gY3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5k
OwotICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0
aCk7Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHN5
bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHNpemVfdCBkaWdpdENvdW50ID0gMDsKLSAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZh
bHNlOwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAg
ICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAg
IHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkgewotICAgICAg
ICAgICAgaWYgKCppdGVyYXRvciA9PSAnMCcgJiYgIWRpZ2l0Q291bnQpCi0gICAgICAgICAgICAg
ICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgICsrZGlnaXRDb3VudDsKLSAgICAg
ICAgICAgIHBvcnQgPSBwb3J0ICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7Ci0gICAgICAgICAgICBp
ZiAocG9ydCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGlmIChwb3J0ICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgIAotICAgIGlmICghcG9ydCAmJiBk
aWdpdENvdW50ID4gMSkKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwot
Ci0gICAgQVNTRVJUKHBvcnQgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwYXJzZWREYXRhVmlldygwLCBtX3Vy
bC5tX3NjaGVtZUVuZCkpID09IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSkpCi0gICAgICAg
IHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICBlbHNlIHsKLSAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICBBU1NFUlQocG9ydCA8PSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOwotICAgICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJ
QnVmZmVyPHVpbnQxNl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOwotICAgIH0KLQot
ICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91
cmwubV9ob3N0RW5kOwotICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQ
b3J0TGVuZ3RoKTsKLSAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBV
UkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4gaXRlcmF0b3IpCi17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICgqaXRlcmF0b3IgPT0gJ1snKSB7Ci0gICAgICAgIGF1dG8gaXB2NkVuZCA9IGl0
ZXJhdG9yOwotICAgICAgICB3aGlsZSAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCAhPSAn
XScpCi0gICAgICAgICAgICArK2lwdjZFbmQ7Ci0gICAgICAgIGlmIChpcHY2RW5kLmF0RW5kKCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBw
YXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGl0ZXJhdG9yLCBp
cHY2RW5kKSkpIHsKLSAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjYoYWRkcmVzcy52YWx1ZSgpKTsK
LSAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgYWR2
YW5jZShpcHY2RW5kKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlwdjZFbmQuYXRFbmQoKSAmJiAq
aXB2NkVuZCA9PSAnOicpIHsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
Y3VycmVudFBvc2l0aW9uKGlwdjZFbmQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFy
c2VQb3J0KGlwdjZFbmQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX3Vy
bC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXB2NkVuZCk7Ci0gICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlv
bihpcHY2RW5kKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdXJsSXNTcGVjaWFsKSB7Ci0gICAg
ICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAg
aWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRm9yYmlkZGVuSG9z
dENvZGVQb2ludCgqaXRlcmF0b3IpICYmICppdGVyYXRvciAhPSAnJScpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1w
bGVFbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKLSAgICAgICAgfQotICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBpZiAoaXRlcmF0b3IuYXRF
bmQoKSkgewotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0
b3IpOwotICAgIH0KLSAgICAKLSAgICBpZiAoTElLRUxZKCFtX2hvc3RIYXNQZXJjZW50T3JOb25B
U0NJSSkpIHsKLSAgICAgICAgYXV0byBob3N0SXRlcmF0b3IgPSBpdGVyYXRvcjsKLSAgICAgICAg
Zm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBpZiAo
aXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGFkZHJl
c3MgPSBwYXJzZUlQdjRIb3N0KGhvc3RJdGVyYXRvciwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4oaG9zdEl0ZXJhdG9yLCBpdGVyYXRvcikpOwotICAgICAgICBpZiAoYWRkcmVzcykg
ewotICAgICAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOwotICAgICAgICAg
ICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAg
ICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZm9yICg7IGhvc3RJdGVyYXRvciAhPSBp
dGVyYXRvcjsgKytob3N0SXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1Rh
Yk9yTmV3bGluZSgqaG9zdEl0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oaG9zdEl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoKmhvc3RJdGVyYXRv
cikpKQotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0SXRlcmF0b3IpOwotICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmhvc3RJdGVyYXRvcikp
OwotICAgICAgICB9Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihp
dGVyYXRvcik7Ci0gICAgICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAg
ICByZXR1cm4gcGFyc2VQb3J0KGhvc3RJdGVyYXRvcik7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRM
ZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0g
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICAKLSAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGl0ZXJhdG9yOwot
ICAgIAotICAgIExDaGFyQnVmZmVyIHV0ZjhFbmNvZGVkOwotICAgIGZvciAoOyAhaXRlcmF0b3Iu
YXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xp
bmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4p
OwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCppdGVyYXRv
ciA9PSAnOicpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FT
Q0lJKCppdGVyYXRvcikpKQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7
Ci0KLSAgICAgICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUigqaXRlcmF0b3IpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsK
LSAgICAgICAgaW50MzJfdCBvZmZzZXQgPSAwOwotICAgICAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1
ZmZlciwgb2Zmc2V0LCAqaXRlcmF0b3IpOwotICAgICAgICB1dGY4RW5jb2RlZC5hcHBlbmQoYnVm
ZmVyLCBvZmZzZXQpOwotICAgIH0KLSAgICBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlZCA9IHBl
cmNlbnREZWNvZGUodXRmOEVuY29kZWQuZGF0YSgpLCB1dGY4RW5jb2RlZC5zaXplKCksIGhvc3RC
ZWdpbik7Ci0gICAgU3RyaW5nIGRvbWFpbiA9IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29k
ZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotICAgIGlmIChkb21haW4uaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXco
cGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpKQotICAgICAgICBz
eW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICBhdXRvIGFzY2lpRG9tYWluID0gZG9tYWlu
VG9BU0NJSSgqZG9tYWluLmltcGwoKSwgaG9zdEJlZ2luKTsKLSAgICBpZiAoIWFzY2lpRG9tYWlu
IHx8IGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlEb21haW4udmFsdWUoKSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW5WYWx1ZSA9IGFz
Y2lpRG9tYWluLnZhbHVlKCk7Ci0gICAgY29uc3QgTENoYXIqIGFzY2lpRG9tYWluQ2hhcmFjdGVy
cyA9IGFzY2lpRG9tYWluVmFsdWUuZGF0YSgpOwotCi0gICAgYXV0byBhZGRyZXNzID0gcGFyc2VJ
UHY0SG9zdChob3N0QmVnaW4sIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPihhc2NpaURvbWFpblZh
bHVlLmJlZ2luKCksIGFzY2lpRG9tYWluVmFsdWUuZW5kKCkpKTsKLSAgICBpZiAoYWRkcmVzcykg
ewotICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7Ci0gICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmIChpdGVy
YXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlUG9y
dChpdGVyYXRvcik7Ci0gICAgfQotICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNp
bmdFcnJvcjo6RmFpbHVyZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcihhc2NpaURvbWFpbkNoYXJhY3RlcnMsIGFzY2lpRG9tYWluVmFsdWUuc2l6ZSgp
KTsKLSAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAg
IGlmICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRv
cik7Ci0gICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
c3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3
IGlucHV0KQotewotICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7
Ci0gICAgaWYgKHV0ZjguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgYXV0byBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXpl
KCkpOwotfQotCi0vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsZW5j
b2RlZC1wYXJzZXIKLWF1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1Zp
ZXcgaW5wdXQpIC0+IFVSTEVuY29kZWRGb3JtCi17Ci0gICAgVVJMRW5jb2RlZEZvcm0gb3V0cHV0
OwotICAgIGZvciAoU3RyaW5nVmlldyBieXRlcyA6IGlucHV0LnNwbGl0KCcmJykpIHsKLSAgICAg
ICAgYXV0byBlcXVhbEluZGV4ID0gYnl0ZXMuZmluZCgnPScpOwotICAgICAgICBpZiAoZXF1YWxJ
bmRleCA9PSBub3RGb3VuZCkgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29k
ZShieXRlcy50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7Ci0gICAgICAgICAgICBpZiAo
bmFtZSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0
eVN0cmluZygpIH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBuYW1lID0g
Zm9ybVVSTERlY29kZShieXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5y
ZXBsYWNlKCcrJywgMHgyMCkpOwotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGZvcm1VUkxEZWNv
ZGUoYnl0ZXMuc3Vic3RyaW5nKGVxdWFsSW5kZXggKyAxKS50b1N0cmluZygpLnJlcGxhY2UoJysn
LCAweDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSkKLSAgICAgICAgICAgICAg
ICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52YWx1ZSgpIH0pOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHJldHVybiBvdXRwdXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHNlcmlhbGl6
ZVVSTEVuY29kZWRGb3JtKGNvbnN0IFN0cmluZyYgaW5wdXQsIFZlY3RvcjxMQ2hhcj4mIG91dHB1
dCkKLXsKLSAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOwotICAg
IGNvbnN0IGNoYXIqIGRhdGEgPSB1dGY4LmRhdGEoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHV0ZjgubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBjb25zdCBjaGFyIGJ5dGUgPSBkYXRh
W2ldOwotICAgICAgICBpZiAoYnl0ZSA9PSAweDIwKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVu
ZCgweDJCKTsKLSAgICAgICAgZWxzZSBpZiAoYnl0ZSA9PSAweDJBCi0gICAgICAgICAgICB8fCBi
eXRlID09IDB4MkQKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgyRQotICAgICAgICAgICAgfHwg
KGJ5dGUgPj0gMHgzMCAmJiBieXRlIDw9IDB4MzkpCi0gICAgICAgICAgICB8fCAoYnl0ZSA+PSAw
eDQxICYmIGJ5dGUgPD0gMHg1QSkKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHg1RgotICAgICAg
ICAgICAgfHwgKGJ5dGUgPj0gMHg2MSAmJiBieXRlIDw9IDB4N0EpKSAvLyBGSVhNRTogUHV0IHRo
ZXNlIGluIHRoZSBjaGFyYWN0ZXJDbGFzc1RhYmxlIHRvIGF2b2lkIGJyYW5jaGVzLgotICAgICAg
ICAgICAgb3V0cHV0LmFwcGVuZChieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcGVy
Y2VudEVuY29kZUJ5dGUoYnl0ZSwgb3V0cHV0KTsKLSAgICB9Ci19Ci0gICAgCi1TdHJpbmcgVVJM
UGFyc2VyOjpzZXJpYWxpemUoY29uc3QgVVJMRW5jb2RlZEZvcm0mIHR1cGxlcykKLXsKLSAgICBp
ZiAodHVwbGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3RvcjxM
Q2hhcj4gb3V0cHV0OwotICAgIGZvciAoYXV0byYgdHVwbGUgOiB0dXBsZXMpIHsKLSAgICAgICAg
aWYgKCFvdXRwdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgnJicpOwot
ICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS5rZXksIG91dHB1dCk7Ci0gICAg
ICAgIG91dHB1dC5hcHBlbmQoJz0nKTsKLSAgICAgICAgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0o
dHVwbGUudmFsdWUsIG91dHB1dCk7Ci0gICAgfQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdU
Rk1vdmUob3V0cHV0KSk7Ci19Ci0KLWNvbnN0IFVJRE5BJiBVUkxQYXJzZXI6OmludGVybmF0aW9u
YWxEb21haW5OYW1lVHJhbnNjb2RlcigpCi17Ci0gICAgc3RhdGljIFVJRE5BKiBlbmNvZGVyOwot
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShv
bmNlRmxhZywgW10gewotICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwot
ICAgICAgICAvLyBXYXJuaW5nOiBQbGVhc2UgY29udGFjdCBhIFdlYktpdEdUSysgZGV2ZWxvcGVy
IGlmIGNoYW5naW5nIHRoZXNlIGZsYWdzLgotICAgICAgICAvLyBUaGV5IHNob3VsZCBiZSBzeW5j
ZWQgd2l0aCBlcGh5X3VyaV9kZWNvZGUoKSBpbiBlcGh5LXVyaS1oZWxwZXJzLmMuCi0gICAgICAg
IGVuY29kZXIgPSB1aWRuYV9vcGVuVVRTNDYoVUlETkFfQ0hFQ0tfQklESSB8IFVJRE5BX0NIRUNL
X0NPTlRFWFRKIHwgVUlETkFfTk9OVFJBTlNJVElPTkFMX1RPX1VOSUNPREUgfCBVSUROQV9OT05U
UkFOU0lUSU9OQUxfVE9fQVNDSUksICZlcnJvcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFVf
U1VDQ0VTUyhlcnJvcikpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmNvZGVyKTsKLSAgICB9
KTsKLSAgICByZXR1cm4gKmVuY29kZXI7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNF
cXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygi
JWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVk
ICVkICVkICVkICVkICVkICVkICVzIiwKLSAgICAgICAgYS5tX2lzVmFsaWQsCi0gICAgICAgIGEu
bV9jYW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwK
LSAgICAgICAgYS5tX3NjaGVtZUVuZCwKLSAgICAgICAgYS5tX3VzZXJTdGFydCwKLSAgICAgICAg
YS5tX3VzZXJFbmQsCi0gICAgICAgIGEubV9wYXNzd29yZEVuZCwKLSAgICAgICAgYS5tX2hvc3RF
bmQsCi0gICAgICAgIGEubV9ob3N0RW5kICsgYS5tX3BvcnRMZW5ndGgsCi0gICAgICAgIGEubV9w
YXRoQWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGEubV9wYXRoRW5kLAotICAgICAgICBhLm1fcXVl
cnlFbmQsCi0gICAgICAgIGEubV9zdHJpbmcudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgYi5tX2lz
VmFsaWQsCi0gICAgICAgIGIubV9jYW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBiLm1fcHJvdG9j
b2xJc0luSFRUUEZhbWlseSwKLSAgICAgICAgYi5tX3NjaGVtZUVuZCwKLSAgICAgICAgYi5tX3Vz
ZXJTdGFydCwKLSAgICAgICAgYi5tX3VzZXJFbmQsCi0gICAgICAgIGIubV9wYXNzd29yZEVuZCwK
LSAgICAgICAgYi5tX2hvc3RFbmQsCi0gICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5n
dGgsCi0gICAgICAgIGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGIubV9wYXRoRW5k
LAotICAgICAgICBiLm1fcXVlcnlFbmQsCi0gICAgICAgIGIubV9zdHJpbmcudXRmOCgpLmRhdGEo
KSk7Ci0KLSAgICByZXR1cm4gYS5tX3N0cmluZyA9PSBiLm1fc3RyaW5nCi0gICAgICAgICYmIGEu
bV9pc1ZhbGlkID09IGIubV9pc1ZhbGlkCi0gICAgICAgICYmIGEubV9jYW5ub3RCZUFCYXNlVVJM
ID09IGIubV9jYW5ub3RCZUFCYXNlVVJMCi0gICAgICAgICYmIGEubV9wcm90b2NvbElzSW5IVFRQ
RmFtaWx5ID09IGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5Ci0gICAgICAgICYmIGEubV9zY2hl
bWVFbmQgPT0gYi5tX3NjaGVtZUVuZAotICAgICAgICAmJiBhLm1fdXNlclN0YXJ0ID09IGIubV91
c2VyU3RhcnQKLSAgICAgICAgJiYgYS5tX3VzZXJFbmQgPT0gYi5tX3VzZXJFbmQKLSAgICAgICAg
JiYgYS5tX3Bhc3N3b3JkRW5kID09IGIubV9wYXNzd29yZEVuZAotICAgICAgICAmJiBhLm1faG9z
dEVuZCA9PSBiLm1faG9zdEVuZAotICAgICAgICAmJiBhLm1fcG9ydExlbmd0aCA9PSBiLm1fcG9y
dExlbmd0aAotICAgICAgICAmJiBhLm1fcGF0aEFmdGVyTGFzdFNsYXNoID09IGIubV9wYXRoQWZ0
ZXJMYXN0U2xhc2gKLSAgICAgICAgJiYgYS5tX3BhdGhFbmQgPT0gYi5tX3BhdGhFbmQKLSAgICAg
ICAgJiYgYS5tX3F1ZXJ5RW5kID09IGIubV9xdWVyeUVuZDsKLX0KLQotYm9vbCBVUkxQYXJzZXI6
OmludGVybmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4g
dXJsLm1fc2NoZW1lRW5kIDw9IHVybC5tX3VzZXJTdGFydAotICAgICAgICAmJiB1cmwubV91c2Vy
U3RhcnQgPD0gdXJsLm1fdXNlckVuZAotICAgICAgICAmJiB1cmwubV91c2VyRW5kIDw9IHVybC5t
X3Bhc3N3b3JkRW5kCi0gICAgICAgICYmIHVybC5tX3Bhc3N3b3JkRW5kIDw9IHVybC5tX2hvc3RF
bmQKLSAgICAgICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGggPD0gdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoCi0gICAgICAgICYmIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8
PSB1cmwubV9wYXRoRW5kCi0gICAgICAgICYmIHVybC5tX3BhdGhFbmQgPD0gdXJsLm1fcXVlcnlF
bmQKLSAgICAgICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1fc3RyaW5nLmxlbmd0aCgpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkxQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQ
YXJzZXIuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJM
UGFyc2VyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0
ZWQuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1zdHJ1Y3QgVUlETkE7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY2xhc3Mg
Q29kZVBvaW50SXRlcmF0b3I7Ci0KLWNsYXNzIFVSTFBhcnNlciB7Ci1wdWJsaWM6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgVVJMUGFyc2VyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYgPSB7IH0sIGNv
bnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKLSAgICBVUkwgcmVzdWx0KCkgeyByZXR1
cm4gbV91cmw7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGFsbFZhbHVlc0Vx
dWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGludGVybmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmKTsKLSAgICAKLSAgICB0eXBl
ZGVmIFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IFVSTEVuY29kZWRG
b3JtOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBVUkxFbmNvZGVkRm9ybSBwYXJzZVVSTEVu
Y29kZWRGb3JtKFN0cmluZ1ZpZXcpOwotICAgIHN0YXRpYyBTdHJpbmcgc2VyaWFsaXplKGNvbnN0
IFVSTEVuY29kZWRGb3JtJik7Ci0KLSAgICBzdGF0aWMgY29uc3QgVUlETkEmIGludGVybmF0aW9u
YWxEb21haW5OYW1lVHJhbnNjb2RlcigpOwotICAgIHN0YXRpYyBib29sIGlzSW5Vc2VySW5mb0Vu
Y29kZVNldChVQ2hhcik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1NwZWNp
YWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF5YmVDYW5vbmljYWxpemVTY2hlbWUoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpOwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQx
Nl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcpOwotICAgIGZyaWVuZCBzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcpOwot
Ci0gICAgVVJMIG1fdXJsOwotICAgIFZlY3RvcjxMQ2hhcj4gbV9hc2NpaUJ1ZmZlcjsKLSAgICBi
b29sIG1fdXJsSXNTcGVjaWFsIHsgZmFsc2UgfTsKLSAgICBib29sIG1fdXJsSXNGaWxlIHsgZmFs
c2UgfTsKLSAgICBib29sIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJIHsgZmFsc2UgfTsKLSAg
ICBTdHJpbmcgbV9pbnB1dFN0cmluZzsKLSAgICBjb25zdCB2b2lkKiBtX2lucHV0QmVnaW4geyBu
dWxscHRyIH07Ci0KLSAgICBib29sIG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uIHsgZmFsc2UgfTsK
LSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZSA9IDIw
NDg7Ci0gICAgdXNpbmcgTENoYXJCdWZmZXIgPSBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVC
dWZmZXJTaXplPjsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQg
cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwZSosIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29uc3Qg
VVJMJiwgY29uc3QgVVJMVGV4dEVuY29kaW5nKik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gdm9pZCBwYXJzZUF1dGhvcml0eShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJz
ZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIHBhcnNlUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotCi0gICAgdm9pZCBmYWlsdXJlKCk7Ci0gICAgZW51bSBj
bGFzcyBSZXBvcnRTeW50YXhWaW9sYXRpb24geyBObywgWWVzIH07Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZp
b2xhdGlvbiA9IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6WWVzPgotICAgIHZvaWQgYWR2YW5jZShD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpIHsgYWR2YW5jZTxDaGFy
YWN0ZXJUeXBlLCByZXBvcnRTeW50YXhWaW9sYXRpb24+KGl0ZXJhdG9yLCBpdGVyYXRvcik7IH0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRp
b24gPSBSZXBvcnRTeW50YXhWaW9sYXRpb246Olllcz4KLSAgICB2b2lkIGFkdmFuY2UoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCB0YWtlc1R3b0FkdmFuY2VzVW50aWxF
bmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHZvaWQgc3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gYm9vbCBpc1BlcmNlbnRFbmNvZGVkRG90KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzV2lu
ZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzU2luZ2xlRG90UGF0aFNlZ21l
bnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gYm9vbCBzaG91bGRDb3B5RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBjaGVja0xv
Y2FsaG9zdENvZGVQb2ludChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIFVDaGFy
MzIpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBdExvY2Fs
aG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgYm9vbCBpc0xvY2Fs
aG9zdChTdHJpbmdWaWV3KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2
b2lkIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29u
c3VtZURvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBlbmRXaW5k
b3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzaXplX3QgY3VycmVudFBvc2l0aW9uKGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZT4gdm9pZCBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVy
KFVuc2lnbmVkSW50ZWdlclR5cGUpOwotICAgIHRlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShV
Q2hhcjMyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB1dGY4UGVyY2VudEVuY29kZShj
b25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RkOjpvcHRpb25hbDxMQ2hhckJ1ZmZlcj4gZG9tYWluVG9BU0NJSShTdHJpbmdJ
bXBsJiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9y
U3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZp
b2xhdGlvblBvc2l0aW9uKTsKLSAgICBzdGF0aWMgTENoYXJCdWZmZXIgcGVyY2VudERlY29kZShj
b25zdCBMQ2hhciosIHNpemVfdCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBm
b3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpOwotICAgIHN0YXRpYyBib29sIGhhc0ZvcmJp
ZGRlbkhvc3RDb2RlUG9pbnQoY29uc3QgTENoYXJCdWZmZXImKTsKLSAgICB2b2lkIHBlcmNlbnRF
bmNvZGVCeXRlKHVpbnQ4X3QpOwotICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMy
KTsKLSAgICB2b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0g
ICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBzaXpl
X3Qgc2l6ZSkgeyBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGNoYXJhY3RlcnMpLCBzaXplKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgZW5jb2RlTm9uVVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIHNvdXJj
ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nJiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4pOwotICAgIHZvaWQgY29weUFTQ0lJU3RyaW5nVW50aWwoY29uc3QgU3RyaW5nJiwgc2l6ZV90
IGxlbmd0aCk7Ci0gICAgYm9vbCBjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwm
KTsKLSAgICBTdHJpbmdWaWV3IHBhcnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6ZV90IGxl
bmd0aCk7Ci0gICAgVUNoYXIgcGFyc2VkRGF0YVZpZXcoc2l6ZV90IHBvc2l0aW9uKTsKLQotICAg
IHVzaW5nIElQdjRBZGRyZXNzID0gdWludDMyX3Q7Ci0gICAgdm9pZCBzZXJpYWxpemVJUHY0KElQ
djRBZGRyZXNzKTsKLSAgICBlbnVtIGNsYXNzIElQdjRQYXJzaW5nRXJyb3I7Ci0gICAgZW51bSBj
bGFzcyBJUHY0UGllY2VQYXJzaW5nRXJyb3I7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0
ZWQ8SVB2NEFkZHJlc3MsIElQdjRQYXJzaW5nRXJyb3I+IHBhcnNlSVB2NEhvc3QoY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbj4mLCBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gRXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vy
cm9yPiBwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGJv
b2wmIHN5bnRheFZpb2xhdGlvbik7Ci0gICAgdXNpbmcgSVB2NkFkZHJlc3MgPSBzdGQ6OmFycmF5
PHVpbnQxNl90LCA4PjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6
Om9wdGlvbmFsPElQdjZBZGRyZXNzPiBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBzdGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2
NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdm9pZCBzZXJpYWxpemVJ
UHY2UGllY2UodWludDE2X3QgcGllY2UpOwotICAgIHZvaWQgc2VyaWFsaXplSVB2NihJUHY2QWRk
cmVzcyk7Ci0KLSAgICBlbnVtIGNsYXNzIFVSTFBhcnQ7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gdm9pZCBjb3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVS
TFBhcnQsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgVVJM
VGV4dEVuY29kaW5nKiYpOwotICAgIHN0YXRpYyBzaXplX3QgdXJsTGVuZ3RoVW50aWxQYXJ0KGNv
bnN0IFVSTCYsIFVSTFBhcnQpOwotICAgIHZvaWQgcG9wUGF0aCgpOwotICAgIGJvb2wgc2hvdWxk
UG9wUGF0aCh1bnNpZ25lZCk7Ci19OwotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Vc2VyQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2Vy
QWdlbnQuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNl
ckFnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHN0YW5kYXJkVXNlckFnZW50VwogU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25G
b3JVc2VyQWdlbnRTdHJpbmcoKTsKIFN0cmluZyB1c2VyQWdlbnRCdW5kbGVWZXJzaW9uKCk7CiAj
ZWxzZQotY2xhc3MgVVJMOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdl
bnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBlbXB0eVN0cmluZygpLCBjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCkpOwogV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcAkocmV2aXNpb24gMjM2NzY2
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwCShub25leGlz
dGVudCkKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJDRlVSTEV4dHJhcy5oIgotCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJldGFpblB0cjxD
RlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplLCBDRlVSTFJlZiBiYXNlVVJMKQotewotICAgIC8vIE5PVEU6IFdlIHVzZSBVVEYtOCBoZXJl
IHNpbmNlIHRoaXMgZW5jb2RpbmcgaXMgdXNlZCB3aGVuIGNvbXB1dGluZyBzdHJpbmdzIHdoZW4g
cmV0dXJuaW5nIFVSTCBjb21wb25lbnRzCi0gICAgLy8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0
aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRG
LTggc2VxdWVuY2VzLCB3aGljaAotICAgIC8vIGNvdWxkIGVpdGhlciBiZSBhIG1hbGZvcm1lZCBz
dHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZmZXJlbnQgZW5jb2RpbmcsIGxpa2UgU2hpZnQtSklTLCBz
byB3ZSBmYWxsIGJhY2sKLSAgICAvLyBvbnRvIHVzaW5nIElTTyBMYXRpbi0xIGluIHRob3NlIGNh
c2VzLgotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0
ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihk
YXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBiYXNlVVJMLCB0cnVlKSk7Ci0gICAg
aWYgKCFyZXN1bHQpCi0gICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0
ZVVSTFdpdGhCeXRlcygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSksIHNp
emUsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBiYXNlVVJMLCB0cnVlKSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiB1cmwsIFVSTENoYXJC
dWZmZXImIHJlc3VsdCkKLXsKLSAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRl
cyh1cmwsIDAsIDApOwotICAgIHJlc3VsdC5yZXNpemUoYnl0ZXNMZW5ndGgpOwotICAgIENGSW5k
ZXggZmluYWxMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgcmVpbnRlcnByZXRfY2FzdDxVSW50
OCo+KHJlc3VsdC5kYXRhKCkpLCBieXRlc0xlbmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmaW5h
bExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5ndGgpOwotfQotCi12b2lkIGdldFVSTEJ5
dGVzKENGVVJMUmVmIHVybCwgQ1N0cmluZyYgcmVzdWx0KQotewotICAgIENGSW5kZXggYnl0ZXNM
ZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7Ci0gICAgY2hhciogYnl0ZXM7Ci0gICAg
cmVzdWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChieXRlc0xlbmd0aCwgYnl0ZXMpOwot
ICAgIENGSW5kZXggZmluYWxMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgcmVpbnRlcnByZXRf
Y2FzdDxVSW50OCo+KGJ5dGVzKSwgYnl0ZXNMZW5ndGgpOwotICAgIEFTU0VSVF9VTlVTRUQoZmlu
YWxMZW5ndGgsIGZpbmFsTGVuZ3RoID09IGJ5dGVzTGVuZ3RoKTsKLX0KLQotYm9vbCBpc0NGVVJM
U2FtZU9yaWdpbihDRlVSTFJlZiBjZlVSTCwgY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgQVNTRVJU
KHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwotCi0gICAgaWYgKHVybC5oYXNVc2VybmFt
ZSgpIHx8IHVybC5oYXNQYXNzd29yZCgpKQotICAgICAgICByZXR1cm4gcHJvdG9jb2xIb3N0QW5k
UG9ydEFyZUVxdWFsKHVybCwgVVJMIHsgY2ZVUkwgfSk7Ci0KLSAgICBVUkxDaGFyQnVmZmVyIGJ5
dGVzOwotICAgIGdldFVSTEJ5dGVzKGNmVVJMLCBieXRlcyk7Ci0gICAgU3RyaW5nVmlldyBjZlVS
TFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihieXRlcy5kYXRhKCkpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnl0ZXMuc2l6ZSgpKSB9OwotCi0gICAgaWYgKCF1cmwuaGFz
UGF0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9ID09IGNm
VVJMU3RyaW5nOwotCi0gICAgYXV0byB1cmxXaXRob3V0UGF0aCA9IFN0cmluZ1ZpZXcgeyB1cmwu
c3RyaW5nKCkgfS5zdWJzdHJpbmcoMCwgdXJsLnBhdGhTdGFydCgpICsgMSk7Ci0gICAgcmV0dXJu
IGNmVVJMU3RyaW5nLnN0YXJ0c1dpdGgodXJsV2l0aG91dFBhdGgpOwotfQotCi19CgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9DRlVSTEV4dHJhcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0NGVVJMRXh0cmFzLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDRlVSTEV4dHJhc19oCi0jZGVmaW5lIENGVVJMRXh0cmFz
X2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBVUkw7Ci10eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IFVSTENoYXJCdWZmZXI7Ci0KLVdFQkNP
UkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0
IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VVUkwgPSAwKTsKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKLVdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIENTdHJpbmcmKTsKLQotYm9vbCBpc0NGVVJMU2Ft
ZU9yaWdpbihDRlVSTFJlZiwgY29uc3QgVVJMJik7Ci0KLX0KLQotI2VuZGlmIC8vIENGVVJMRXh0
cmFzX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NG
VVJMRXh0cmFzLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAg
IyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkwuaCIKLQotI2luY2x1ZGUgIkNG
VVJMRXh0cmFzLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ0ZVUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLSNpZiBQTEFU
Rk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0jZW5kaWYK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6OlVSTChDRlVSTFJlZiB1cmwpCi17Ci0gICAg
aWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8K
LSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHVybCwgdXJsQnl0ZXMpOwot
ICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsKLSAgICAqdGhpcyA9IHBhcnNl
ci5yZXN1bHQoKTsKLX0KLQotI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRlVSTFJl
Zj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxk
IHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/Ci0gICAgLy8gQ3VycmVudGx5IGl0IHRocm93
cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgaW4g
dGhhdCBjYXNlLAotICAgIC8vIHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCi0gICAgVVJMQ2hhckJ1
ZmZlciBidWZmZXI7Ci0gICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7Ci0gICAgYXV0byBjZlVSTCA9
IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLQot
ICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWlzQ0ZVUkxTYW1lT3JpZ2luKGNm
VVJMLmdldCgpLCAqdGhpcykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJu
IGNmVVJMOwotfQotI2VuZGlmCi0KLVN0cmluZyBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QK
LXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gY3JlYXRlQ0ZVUkwoKTsKLSAgICBp
ZiAoIWNmVVJMKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSNpZiBQTEFURk9STShXSU4p
Ci0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NGVVJMV2luZG93c1BhdGhTdHlsZTsK
LSNlbHNlCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5
bGU7Ci0jZW5kaWYKLSAgICByZXR1cm4gYWRvcHRDRihDRlVSTENvcHlGaWxlU3lzdGVtUGF0aChj
ZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7Ci19Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24g
MjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXJfaAotI2RlZmluZSBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGVudEZpbHRlci5oIgog
I2luY2x1ZGUgPG9iamMvTlNPYmpDUnVudGltZS5oPgpAQCAtMzksOCArMzgsNiBAQCBPQkpDX0NM
QVNTIE5TRGF0YTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNz
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ29u
dGVudEZpbHRlciB7CiAgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcj4oKTsKIApAQCAtNjksNSArNjYsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXJfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbXBvcnQgIlJlc291cmNl
UmVzcG9uc2UuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2ltcG9y
dCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgPG9iamMvcnVudGlt
ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9ORUZpbHRlclNvdXJjZVNQSS5oPgogI2ltcG9y
dCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYv
dGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05B
TChOZXR3b3JrRXh0ZW5zaW9uKTsKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIE5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjp3aWxsCiAKICAgICBVUkwgbW9kaWZpZWRSZXF1ZXN0VVJMIHsg
VVJMKCksIG1vZGlmaWVkUmVxdWVzdFVSTFN0cmluZy5nZXQoKSB9OwogICAgIGlmICghbW9kaWZp
ZWRSZXF1ZXN0VVJMLmlzVmFsaWQoKSkgewotICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywg
Ik5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZhaWxlZCB0byBjb252ZXJ0IG1vZGlmaWVk
IFVSTCBzdHJpbmcgJUAgdG8gYSBXZWJDb3JlOjpVUkwuXG4iLCBtb2RpZmllZFJlcXVlc3RVUkxT
dHJpbmcuZ2V0KCkpOworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIk5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyIGZhaWxlZCB0byBjb252ZXJ0IG1vZGlmaWVkIFVSTCBzdHJpbmcg
JUAgdG8gYSAgVVJMLlxuIiwgbW9kaWZpZWRSZXF1ZXN0VVJMU3RyaW5nLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw3ICs4NSw2IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFJvdW5kZWRSZWN0
OwotY2xhc3MgVVJMOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBQYXRoOwogY2xh
c3MgVGV4dFJ1bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTAgKzM1LDEwIEBACiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNWR0ltYWdlLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAK
ICNpZiBVU0UoQ0cpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDYgQEAgY2xhc3MgRmxvYXRTaXpl
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMg
Y2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVj
b2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgJ
KHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCiAgKi8KIAotI2lmbmRlZiBJbWFnZU9ic2VydmVyX2gKLSNkZWZpbmUgSW1hZ2VPYnNl
cnZlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKIApAQCAtMzIs
NyArMzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlOwogY2xhc3MgSW50
UmVjdDsKLWNsYXNzIFVSTDsKIAogLy8gSW50ZXJmYWNlIGZvciBub3RpZmljYXRpb24gYWJvdXQg
Y2hhbmdlcyB0byBhbiBpbWFnZSwgaW5jbHVkaW5nIGRlY29kaW5nLAogLy8gZHJhd2luZywgYW5k
IGFuaW1hdGluZy4KQEAgLTU0LDUgKzUyLDMgQEAgcHVibGljOgogfTsKIAogfQotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDExIEBACiAj
aW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCShyZXZpc2lvbiAyMzY3NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1h
cEltYWdlOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW1hZ2VEZWNvZGVyOwotY2xh
c3MgVVJMOwogCiBjbGFzcyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNp
b24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3Jt
TWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5IYXNoLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50
OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAkocmV2aXNp
b24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1UaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5o
PgpAQCAtNDksNiArNDgsNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVh
bS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2
aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTksNyArNTksNiBAQAogI2ltcG9ydCAiVGV4dEVuY29kaW5nLmgiCiAjaW1w
b3J0ICJUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oIgogI2ltcG9ydCAiVGV4dHVyZUNhY2hlQ1Yu
aCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
T2JqQy5oIgogI2ltcG9ydCAiVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCIKICNpbXBvcnQgIlZpZGVv
VHJhY2tQcml2YXRlQVZGT2JqQy5oIgpAQCAtODEsNiArODAsNyBAQAogI2ltcG9ydCA8d3RmL0xp
c3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0
Zi9PU09iamVjdFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQx
LDEwIEBACiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVX
aXRoVGltZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFBMQVRGT1JNKFdJTikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRD
dWUuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPVlRUQ3VlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsOSBAQAog
I2luY2x1ZGUgIklTT1ZUVEN1ZS5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RhdGFWaWV3Lmg+CiAjaW5jbHVkZSA8
d3RmL0pTT05WYWx1ZXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIEpTQzo6RGF0
YVZpZXc7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsMTAgKzM1LDEwIEBACiAjaW1w
b3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0
ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5o
IgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBAaW50
ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoTlNBdHRyaWJ1dGVkU3RyaW5nS2l0QWRkaXRpb25z
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5
ICszMiw3IEBACiAjaW1wb3J0ICJJbWFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgogI2lt
cG9ydCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlVUSVV0aWxp
dGllcy5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxl
Q29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUNvbG9yLmg+CkBAIC00NCw2ICs0Miw4
IEBACiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL0xpc3RI
YXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogCiAjZGVmaW5lIFBBU1RFQk9BUkRfU1VQUE9SVFNfSVRFTV9QUk9WSURF
UlMgKFBMQVRGT1JNKElPUykgJiYgIShQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBM
RVRWKSkpCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhcwogICAgIGF1dG8mIHBhc3RlYm9hcmRVUkwgPSBwYXN0ZWJvYXJkSW1hZ2UudXJs
OwogICAgIGlmIChOU1VSTCAqbnNVUkwgPSBwYXN0ZWJvYXJkVVJMLnVybCkgewogI2lmIE5TVVJM
X1NVUFBPUlRTX1RJVExFCi0gICAgICAgIG5zVVJMLl90aXRsZSA9IHBhc3RlYm9hcmRVUkwudGl0
bGUuaXNFbXB0eSgpID8gdXNlclZpc2libGVTdHJpbmcocGFzdGVib2FyZFVSTC51cmwpIDogKE5T
U3RyaW5nICopcGFzdGVib2FyZFVSTC50aXRsZTsKKyAgICAgICAgbnNVUkwuX3RpdGxlID0gcGFz
dGVib2FyZFVSTC50aXRsZS5pc0VtcHR5KCkgPyBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3Rl
Ym9hcmRVUkwudXJsKSA6IChOU1N0cmluZyAqKXBhc3RlYm9hcmRVUkwudGl0bGU7CiAjZW5kaWYK
ICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0
Om5zVVJMXTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tM
b29rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9v
ay5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVp
Y2tMb29rLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDYgQEAgT0JKQ19DTEFTUyBOU1VS
TFJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiBXRUJDT1JF
X0VYUE9SVCBOU1NldCAqUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCk7CiBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlbW92ZVFMUHJldmlld0NvbnZlcnRlckZvclVSTChOU1VSTCAqKTsK
IFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlZ2lzdGVyUUxQcmV2aWV3
Q29udmVydGVySWZOZWVkZWQoTlNVUkwgKiwgTlNTdHJpbmcgKm1pbWVUeXBlLCBOU0RhdGEgKik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCShyZXZp
c2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIgogI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2ltcG9ydCAi
V2ViQ29yZU5TVVJMRXh0cmFzLmgiCisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4K
IAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVD
b3JlU2VydmljZXMuaD4KQEAgLTIxMCw3ICsyMTEsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzUGxh
aW5UZXh0KCkgY29uc3QKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhpcyBpcyAxMDAl
IGNvcnJlY3Qgc2luY2Ugd2Uga25vdyAtW05TVVJMIFVSTFdpdGhTdHJpbmc6XSBkb2VzIG5vdCBo
YW5kbGUKICAgICAvLyBhbGwgdGhlIHNhbWUgY2FzZXMgd2UgaGFuZGxlIHdlbGwgaW4gdGhlIFVS
TCBjb2RlIGZvciBjcmVhdGluZyBhbiBOU1VSTC4KICAgICBpZiAodGV4dC5pc1VSTCkKLSAgICAg
ICAgcmV0dXJuIHVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10p
OworICAgICAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgVVJMV2l0aFN0
cmluZzpzdHJpbmddKTsKIAogICAgIC8vIEZJWE1FOiBXVEYgc2hvdWxkIG9mZmVyIGEgbm9uLU1h
Yy1zcGVjaWZpYyB3YXkgdG8gY29udmVydCBzdHJpbmcgdG8gcHJlY29tcG9zZWQgZm9ybSBzbyB3
ZSBjYW4gZG8gaXQgZm9yIGFsbCBwbGF0Zm9ybXMuCiAgICAgcmV0dXJuIFsoTlNTdHJpbmcgKilz
dHJpbmcgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0JKHJldmlzaW9uIDIzNjc2
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQxLDEyICs0MSwxMiBAQAogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAi
U3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW1wb3J0ICJUZXh0SW5kaWNhdG9yLmgiCi0jaW1wb3J0ICJV
UkwuaCIKICNpbXBvcnQgIldlYktpdE5TSW1hZ2VFeHRyYXMuaCIKICNpbXBvcnQgPHBhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJ
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1VSTEZvcm1hdHRpbmdTUEkuaD4KICNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjaWYgIUhBVkUoVVJM
X0ZPUk1BVFRJTkcpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAw
CiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoTGlua1ByZXNlbnRhdGlvbikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCShy
ZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3Rl
bU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgUExBVEZPUk0o
TUFDKQogCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgPHBhbC9zcGkv
bWFjL01ldGFkYXRhU1BJLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
Miw3ICs1Miw3IEBAIHZvaWQgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoY29uc3QgU3QKIHsK
ICAgICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJU
eXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJsU3RyaW5nID0g
dXNlclZpc2libGVTdHJpbmcoVVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOworICAgICAgICB1
cmxTdHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1vdmluZ1VzZXJJ
bmZvKHVybCkpOwogICAgIGVsc2UKICAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRhdGFVUkxTdHJp
bmc7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2ltcG9ydCAi
UGxhdGZvcm1QYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNp
bXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJVVElVdGls
aXRpZXMuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9y
dCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KQEAgLTQ1LDYgKzQ0LDcgQEAKICNpbXBv
cnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAj
aW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW1wb3J0IDx3dGYvdW5pY29kZS9DaGFyYWN0
ZXJOYW1lcy5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZFdyaXRlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZFdyaXRlci5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzLDEwICs2
MywxMCBAQCBSZXRhaW5QdHI8aWQgPE5TUGFzdGVib2FyZFdyaXRpbmc+PiBjcmVhCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBpZiAoYXV0byYgdXJsID0gZGF0YS51cmwoKSkgewotICAgICAgICBO
U1VSTCAqY29jb2FVUkwgPSB1cmwtPnVybDsKLSAgICAgICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxl
U3RyaW5nID0gdXJsLT51c2VyVmlzaWJsZUZvcm07Ci0gICAgICAgIE5TU3RyaW5nICp0aXRsZSA9
IChOU1N0cmluZyAqKXVybC0+dGl0bGU7CisgICAgaWYgKGF1dG8mIHVybERhdGEgPSBkYXRhLnVy
bERhdGEoKSkgeworICAgICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmxEYXRhLT51cmw7CisgICAg
ICAgIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyA9IHVybERhdGEtPnVzZXJWaXNpYmxlRm9y
bTsKKyAgICAgICAgTlNTdHJpbmcgKnRpdGxlID0gKE5TU3RyaW5nICopdXJsRGF0YS0+dGl0bGU7
CiAgICAgICAgIGlmICghdGl0bGUubGVuZ3RoKSB7CiAgICAgICAgICAgICB0aXRsZSA9IGNvY29h
VVJMLnBhdGgubGFzdFBhdGhDb21wb25lbnQ7CiAgICAgICAgICAgICBpZiAoIXRpdGxlLmxlbmd0
aCkKQEAgLTc0LDcgKzc0LDcgQEAgUmV0YWluUHRyPGlkIDxOU1Bhc3RlYm9hcmRXcml0aW5nPj4g
Y3JlYQogICAgICAgICB9CiAKICAgICAgICAgLy8gV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBl
LgotICAgICAgICBhdXRvIHBhdGhzID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRo
T2JqZWN0czpAWyBAWyBjb2NvYVVSTC5hYnNvbHV0ZVN0cmluZyBdIF0sIEBbIHVybC0+dGl0bGUu
c3RyaXBXaGl0ZVNwYWNlKCkgXSwgbmlsXSk7CisgICAgICAgIGF1dG8gcGF0aHMgPSBhZG9wdE5T
KFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOkBbIEBbIGNvY29hVVJMLmFic29sdXRl
U3RyaW5nIF0gXSwgQFsgdXJsRGF0YS0+dGl0bGUuc3RyaXBXaGl0ZVNwYWNlKCkgXSwgbmlsXSk7
CiAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRQcm9wZXJ0eUxpc3Q6cGF0aHMuZ2V0KCkgZm9y
VHlwZTp0b1VUSShAIldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSIpLmdldCgpXTsKIAogICAg
ICAgICAvLyBOU1VSTFBib2FyZFR5cGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0JKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9ydCAiQ29sb3JNYWMuaCIK
ICNpbXBvcnQgIkxlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJk
LmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCA8
d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1
ZmZpeE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVi
bGljU3VmZml4TWFjLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5
IEBACiAKICNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQogCi0jaW1wb3J0ICJVUkwuaCIK
LSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYzLDcgKzYzLDcgQEAgU3Ry
aW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oY29ucwogCiBTdHJpbmcgZGVjb2RlSG9z
dE5hbWUoY29uc3QgU3RyaW5nJiBkb21haW4pCiB7Ci0gICAgcmV0dXJuIGRlY29kZUhvc3ROYW1l
KChOU1N0cmluZyAqKShkb21haW4pKTsKKyAgICByZXR1cm4gV1RGOjpkZWNvZGVIb3N0TmFtZShk
b21haW4pOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5
R2VuZXJhdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TU0xLZXlHZW5lcmF0b3JNYWMubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI5LDEzICsyOSwxMyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiTG9jYWxpemVk
U3RyaW5ncy5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxTZWN1cml0eS9TZWNBc24xQ29k
ZXIuaD4KICNpbXBvcnQgPFNlY3VyaXR5L1NlY0FzbjFUZW1wbGF0ZXMuaD4KICNpbXBvcnQgPFNl
Y3VyaXR5L1NlY0VuY29kZVRyYW5zZm9ybS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxl
Z2UuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1w
b3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNl
NjQuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQkocmV2aXNpb24g
MjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQkobm9uZXhp
c3RlbnQpCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJVUkwuaCIK
LQotI2ltcG9ydCAiQ0ZVUkxFeHRyYXMuaCIKLSNpbXBvcnQgIlVSTFBhcnNlci5oIgotI2ltcG9y
dCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCi0jaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMu
aD4KLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotQGludGVyZmFjZSBOU1N0cmluZyAo
V2ViQ29yZU5TVVJMRXh0cmFzKQotLSAoQk9PTClfd2ViX2xvb2tzTGlrZUlQQWRkcmVzczsKLUBl
bmQKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6OlVSTChOU1VSTCAqdXJsKQotewotICAg
IGlmICghdXJsKSB7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/
Ci0gICAgQ1N0cmluZyB1cmxCeXRlczsKLSAgICBnZXRVUkxCeXRlcygoX19icmlkZ2UgQ0ZVUkxS
ZWYpdXJsLCB1cmxCeXRlcyk7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxCeXRlcy5kYXRhKCkp
OwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi1VUkw6Om9wZXJhdG9yIE5TVVJM
ICooKSBjb25zdAotewotICAgIC8vIENyZWF0aW5nIGEgdG9sbC1mcmVlIGJyaWRnZWQgQ0ZVUkwg
YmVjYXVzZSBjcmVhdGlvbiB3aXRoIE5TVVJMIG1ldGhvZHMgd291bGQgbm90IHByZXNlcnZlIHRo
ZSBvcmlnaW5hbCBzdHJpbmcuCi0gICAgLy8gV2UnbGwgbmVlZCBmaWRlbGl0eSB3aGVuIHJvdW5k
LXRyaXBwaW5nIHZpYSBDRlVSTEdldEJ5dGVzKCkuCi0gICAgcmV0dXJuIGNyZWF0ZUNGVVJMKCku
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOwotfQotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3Jl
YXRlQ0ZVUkwoKSBjb25zdAotewotICAgIGlmIChpc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBpZiAoaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIFdlIHVzZSB0aGUgdG9s
bC1mcmVlIGJyaWRnZSBiZXR3ZWVuIE5TVVJMIGFuZCBDRlVSTCB0byBjcmVhdGUgYSBDRlVSTFJl
ZiBzdXBwb3J0aW5nIGJvdGggZW1wdHkgYW5kIG51bGwgdmFsdWVzLgotICAgICAgICByZXR1cm4g
KF9fYnJpZGdlIENGVVJMUmVmKWFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
QCIiXSkuZ2V0KCk7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTDsKLQot
ICAgIC8vIEZhc3QgcGF0aCBpZiB0aGUgaW5wdXQgZGF0YSBpcyA4LWJpdCB0byBhdm9pZCBjb3B5
aW5nIGludG8gYSB0ZW1wb3JhcnkgYnVmZmVyLgotICAgIGlmIChMSUtFTFkobV9zdHJpbmcuaXM4
Qml0KCkpKQotICAgICAgICBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVu
Z3RoKCkpOwotICAgIGVsc2UgewotICAgICAgICAvLyBTbG93ZXIgcGF0aC4KLSAgICAgICAgVVJM
Q2hhckJ1ZmZlciBidWZmZXI7Ci0gICAgICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOwotICAgICAg
ICBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKLSAgICB9Ci0KLSAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NG
VVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIHJldHVybiBjZlVSTDsKLX0KLQotYm9vbCBVUkw6Omhvc3RJc0lQQWRkcmVzcyhT
dHJpbmdWaWV3IGhvc3QpCi17Ci0gICAgcmV0dXJuIFtob3N0LmNyZWF0ZU5TU3RyaW5nV2l0aG91
dENvcHlpbmcoKS5nZXQoKSBfd2ViX2xvb2tzTGlrZUlQQWRkcmVzc107Ci19Ci0KLX0KClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0KX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDI5ICsyNiwxMCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1AY2xhc3MgTlNT
dHJpbmc7CiBAY2xhc3MgTlNVUkw7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV0VCQ09SRV9F
WFBPUlQgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopOwogV0VCQ09SRV9FWFBP
UlQgTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoTlNVUkwgKik7Ci1XRUJDT1JFX0VYUE9S
VCBOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAqLCBOU1VSTCAqYmFzZVVS
TCk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBO
U1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICopOwotV0VCQ09SRV9FWFBPUlQgQk9P
TCBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSwgQk9P
TCogZXJyb3IpOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSwgQk9PTCogZXJyb3IpOwotV0VCQ09SRV9FWFBPUlQg
TlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICosIE5TUmFuZ2UpOyAv
LyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgotV0VCQ09SRV9FWFBPUlQgTlNTdHJp
bmcgKmVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICosIE5TUmFuZ2UpOyAvLyBSZXR1
cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmRl
Y29kZUhvc3ROYW1lKE5TU3RyaW5nICopOyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVy
cm9yLgotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5TU3RyaW5nICop
OyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgotV0VCQ09SRV9FWFBPUlQgTlNV
UkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChOU1VSTCAqLCBD
RlVSTENvbXBvbmVudFR5cGUpOwotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTFdpdGhEYXRhKE5T
RGF0YSAqLCBOU1VSTCAqYmFzZVVSTCk7Ci1XRUJDT1JFX0VYUE9SVCBOU0RhdGEgKm9yaWdpbmFs
VVJMRGF0YShOU1VSTCAqKTsKLVdFQkNPUkVfRVhQT1JUIE5TRGF0YSAqZGF0YUZvclVSTENvbXBv
bmVudFR5cGUoTlNVUkwgKiwgQ0ZVUkxDb21wb25lbnRUeXBlKTsKLVdFQkNPUkVfRVhQT1JUIE5T
VVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChOU1N0cmluZyAqLCBOU1VSTCAq
YmFzZVVSTCk7Ci0KLU5TUmFuZ2UgcmFuZ2VPZlVSTFNjaGVtZShOU1N0cmluZyAqKTsKLVdFQkNP
UkVfRVhQT1JUIEJPT0wgaXNVc2VyVmlzaWJsZVVSTChOU1N0cmluZyAqKTsKLVdFQkNPUkVfRVhQ
T1JUIEJPT0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVOU1VSTEV4dHJhcy5tbQkocmV2aXNpb24gMjM2NzY3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiVVJMUGFyc2Vy
LmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KQEAgLTM5LDk5OSArMzgs
OCBAQAogI2ltcG9ydCA8dW5pY29kZS91aWRuYS5oPgogI2ltcG9ydCA8dW5pY29kZS91c2NyaXB0
Lmg+CiAKLS8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBu
YW1lLgotLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSURO
IGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgotI2RlZmluZSBIT1NUX05B
TUVfQlVGRkVSX0xFTkdUSCAyMDQ4Ci0jZGVmaW5lIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIIDIw
NDgKLQotdHlwZWRlZiB2b2lkICgqIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uKShOU1N0cmlu
ZyAqLCBOU1JhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+Jik7Ci0KLXN0YXRpYyB1aW50
MzJfdCBJRE5TY3JpcHRXaGl0ZUxpc3RbKFVTQ1JJUFRfQ09ERV9MSU1JVCArIDMxKSAvIDMyXTsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBpc0FybWVuaWFuTG9va2FsaWtl
Q2hhcmFjdGVyKFVDaGFyMzIgY29kZVBvaW50KQotewotICAgIHJldHVybiBjb2RlUG9pbnQgPT0g
MHgwNTQ4IHx8IGNvZGVQb2ludCA9PSAweDA1NEQgfHwgY29kZVBvaW50ID09IDB4MDU3OCB8fCBj
b2RlUG9pbnQgPT0gMHgwNTdEOwotfQotCi1zdGF0aWMgYm9vbCBpc0FybWVuaWFuU2NyaXB0Q2hh
cmFjdGVyKFVDaGFyMzIgY29kZVBvaW50KQotewotICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pF
Uk9fRVJST1I7Ci0gICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQoY29k
ZVBvaW50LCAmZXJyb3IpOwotICAgIGlmIChlcnJvciAhPSBVX1pFUk9fRVJST1IpIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNjcmlw
dHM6ICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHNjcmlwdCA9PSBVU0NSSVBUX0FSTUVOSUFOOwotfQotCi0KLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFj
dGVyKENoYXJhY3RlclR5cGUgY2hhckNvZGUpCi17Ci0gICAgaWYgKCFpc0FTQ0lJRGlnaXRPclB1
bmN0dWF0aW9uKGNoYXJDb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhp
bmdzIHRoZSBVUkwgUGFyc2VyIHJlamVjdHM6Ci0gICAgc3dpdGNoIChjaGFyQ29kZSkgewotICAg
IGNhc2UgJyMnOgotICAgIGNhc2UgJyUnOgotICAgIGNhc2UgJy8nOgotICAgIGNhc2UgJzonOgot
ICAgIGNhc2UgJz8nOgotICAgIGNhc2UgJ0AnOgotICAgIGNhc2UgJ1snOgotICAgIGNhc2UgJ1xc
JzoKLSAgICBjYXNlICddJzoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX0KLQotCi0KLXN0YXRpYyBCT09MIGlzTG9va2Fs
aWtlQ2hhcmFjdGVyKHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQsIFVD
aGFyMzIgY2hhckNvZGUpCi17Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiB0cmVhdHMgdGhlIGZvbGxv
d2luZyBhcyB1bnNhZmUsIGxvb2thbGlrZSBjaGFyYWN0ZXJzOgotICAgIC8vIGFueSBub24tcHJp
bnRhYmxlIGNoYXJhY3RlciwgYW55IGNoYXJhY3RlciBjb25zaWRlcmVkIGFzIHdoaXRlc3BhY2Us
Ci0gICAgLy8gYW55IGlnbm9yYWJsZSBjaGFyYWN0ZXIsIGFuZCBlbW9qaSBjaGFyYWN0ZXJzIHJl
bGF0ZWQgdG8gbG9ja3MuCi0gICAgCi0gICAgLy8gV2UgYWxzbyBjb25zaWRlcmVkIHRoZSBjaGFy
YWN0ZXJzIGluIE1vemlsbGEncyBibGFja2xpc3QgPGh0dHA6Ly9rYi5tb3ppbGxhemluZS5vcmcv
TmV0d29yay5JRE4uYmxhY2tsaXN0X2NoYXJzPi4KLQotICAgIC8vIFNvbWUgb2YgdGhlIGNoYXJh
Y3RlcnMgaGVyZSB3aWxsIG5ldmVyIGFwcGVhciBvbmNlIElDVSBoYXMgZW5jb2RlZC4KLSAgICAv
LyBGb3IgZXhhbXBsZSwgSUNVIHRyYW5zZm9ybXMgbW9zdCBzcGFjZXMgaW50byBhbiBBU0NJSSBz
cGFjZSBhbmQgbW9zdAotICAgIC8vIHNsYXNoZXMgaW50byBhbiBBU0NJSSBzb2xpZHVzLiBCdXQg
b25lIG9mIHRoZSB0d28gY2FsbGVycyB1c2VzIHRoaXMKLSAgICAvLyBvbiBjaGFyYWN0ZXJzIHRo
YXQgaGF2ZSBub3QgYmVlbiBwcm9jZXNzZWQgYnkgSUNVLCBzbyB0aGV5IGFyZSBuZWVkZWQgaGVy
ZS4KLSAgICAKLSAgICBpZiAoIXVfaXNwcmludChjaGFyQ29kZSkgfHwgdV9pc1VXaGl0ZVNwYWNl
KGNoYXJDb2RlKSB8fCB1X2hhc0JpbmFyeVByb3BlcnR5KGNoYXJDb2RlLCBVQ0hBUl9ERUZBVUxU
X0lHTk9SQUJMRV9DT0RFX1BPSU5UKSkKLSAgICAgICAgcmV0dXJuIFlFUzsKLSAgICAKLSAgICBz
d2l0Y2ggKGNoYXJDb2RlKSB7Ci0gICAgICAgIGNhc2UgMHgwMEJDOiAvKiBWVUxHQVIgRlJBQ1RJ
T04gT05FIFFVQVJURVIgKi8KLSAgICAgICAgY2FzZSAweDAwQkQ6IC8qIFZVTEdBUiBGUkFDVElP
TiBPTkUgSEFMRiAqLwotICAgICAgICBjYXNlIDB4MDBCRTogLyogVlVMR0FSIEZSQUNUSU9OIFRI
UkVFIFFVQVJURVJTICovCi0gICAgICAgIGNhc2UgMHgwMEVEOiAvKiBMQVRJTiBTTUFMTCBMRVRU
RVIgSSBXSVRIIEFDVVRFICovCi0gICAgICAgIGNhc2UgMHgwMUMzOiAvKiBMQVRJTiBMRVRURVIg
UkVUUk9GTEVYIENMSUNLICovCi0gICAgICAgIGNhc2UgMHgwMjUxOiAvKiBMQVRJTiBTTUFMTCBM
RVRURVIgQUxQSEEgKi8KLSAgICAgICAgY2FzZSAweDAyNjE6IC8qIExBVElOIFNNQUxMIExFVFRF
UiBTQ1JJUFQgRyAqLwotICAgICAgICBjYXNlIDB4MDJEMDogLyogTU9ESUZJRVIgTEVUVEVSIFRS
SUFOR1VMQVIgQ09MT04gKi8KLSAgICAgICAgY2FzZSAweDAzMzU6IC8qIENPTUJJTklORyBTSE9S
VCBTVFJPS0UgT1ZFUkxBWSAqLwotICAgICAgICBjYXNlIDB4MDMzNzogLyogQ09NQklOSU5HIFNI
T1JUIFNPTElEVVMgT1ZFUkxBWSAqLwotICAgICAgICBjYXNlIDB4MDMzODogLyogQ09NQklOSU5H
IExPTkcgU09MSURVUyBPVkVSTEFZICovCi0gICAgICAgIGNhc2UgMHgwNTg5OiAvKiBBUk1FTklB
TiBGVUxMIFNUT1AgKi8KLSAgICAgICAgY2FzZSAweDA1QjQ6IC8qIEhFQlJFVyBQT0lOVCBISVJJ
USAqLwotICAgICAgICBjYXNlIDB4MDVCQzogLyogSEVCUkVXIFBPSU5UIERBR0VTSCBPUiBNQVBJ
USAqLwotICAgICAgICBjYXNlIDB4MDVDMzogLyogSEVCUkVXIFBVTkNUVUFUSU9OIFNPRiBQQVNV
USAqLwotICAgICAgICBjYXNlIDB4MDVGNDogLyogSEVCUkVXIFBVTkNUVUFUSU9OIEdFUlNIQVlJ
TSAqLwotICAgICAgICBjYXNlIDB4MDYwOTogLyogQVJBQklDLUlORElDIFBFUiBNSUxMRSBTSUdO
ICovCi0gICAgICAgIGNhc2UgMHgwNjBBOiAvKiBBUkFCSUMtSU5ESUMgUEVSIFRFTiBUSE9VU0FO
RCBTSUdOICovCi0gICAgICAgIGNhc2UgMHgwNjUwOiAvKiBBUkFCSUMgS0FTUkEgKi8KLSAgICAg
ICAgY2FzZSAweDA2NjA6IC8qIEFSQUJJQyBJTkRJQyBESUdJVCBaRVJPICovCi0gICAgICAgIGNh
c2UgMHgwNjZBOiAvKiBBUkFCSUMgUEVSQ0VOVCBTSUdOICovCi0gICAgICAgIGNhc2UgMHgwNkQ0
OiAvKiBBUkFCSUMgRlVMTCBTVE9QICovCi0gICAgICAgIGNhc2UgMHgwNkYwOiAvKiBFWFRFTkRF
RCBBUkFCSUMgSU5ESUMgRElHSVQgWkVSTyAqLwotICAgICAgICBjYXNlIDB4MDcwMTogLyogU1lS
SUFDIFNVUFJBTElORUFSIEZVTEwgU1RPUCAqLwotICAgICAgICBjYXNlIDB4MDcwMjogLyogU1lS
SUFDIFNVQkxJTkVBUiBGVUxMIFNUT1AgKi8KLSAgICAgICAgY2FzZSAweDA3MDM6IC8qIFNZUklB
QyBTVVBSQUxJTkVBUiBDT0xPTiAqLwotICAgICAgICBjYXNlIDB4MDcwNDogLyogU1lSSUFDIFNV
QkxJTkVBUiBDT0xPTiAqLwotICAgICAgICBjYXNlIDB4MTczNTogLyogUEhJTElQUElORSBTSU5H
TEUgUFVOQ1RVQVRJT04gKi8KLSAgICAgICAgY2FzZSAweDFEMDQ6IC8qIExBVElOIExFVFRFUiBT
TUFMTCBDQVBJVEFMIEMgKi8KLSAgICAgICAgY2FzZSAweDFEMEY6IC8qIExBVElOIExFVFRFUiBT
TUFMTCBDQVBJVEFMIE8gKi8KLSAgICAgICAgY2FzZSAweDFEMUM6IC8qIExBVElOIExFVFRFUiBT
TUFMTCBDQVBJVEFMIFUgKi8KLSAgICAgICAgY2FzZSAweDFEMjA6IC8qIExBVElOIExFVFRFUiBT
TUFMTCBDQVBJVEFMIFYgKi8KLSAgICAgICAgY2FzZSAweDFEMjE6IC8qIExBVElOIExFVFRFUiBT
TUFMTCBDQVBJVEFMIFcgKi8KLSAgICAgICAgY2FzZSAweDFEMjI6IC8qIExBVElOIExFVFRFUiBT
TUFMTCBDQVBJVEFMIFogKi8KLSAgICAgICAgY2FzZSAweDFFQ0Q6IC8qIExBVElOIFNNQUxMIExF
VFRFUiBPIFdJVEggRE9UIEJFTE9XICovCi0gICAgICAgIGNhc2UgMHgyMDEwOiAvKiBIWVBIRU4g
Ki8KLSAgICAgICAgY2FzZSAweDIwMTE6IC8qIE5PTi1CUkVBS0lORyBIWVBIRU4gKi8KLSAgICAg
ICAgY2FzZSAweDIwMjQ6IC8qIE9ORSBET1QgTEVBREVSICovCi0gICAgICAgIGNhc2UgMHgyMDI3
OiAvKiBIWVBIRU5BVElPTiBQT0lOVCAqLwotICAgICAgICBjYXNlIDB4MjAzOTogLyogU0lOR0xF
IExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksgKi8KLSAgICAgICAgY2FzZSAweDIw
M0E6IC8qIFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLwotICAg
ICAgICBjYXNlIDB4MjA0MTogLyogQ0FSRVQgSU5TRVJUSU9OIFBPSU5UICovCi0gICAgICAgIGNh
c2UgMHgyMDQ0OiAvKiBGUkFDVElPTiBTTEFTSCAqLwotICAgICAgICBjYXNlIDB4MjA1MjogLyog
Q09NTUVSQ0lBTCBNSU5VUyBTSUdOICovCi0gICAgICAgIGNhc2UgMHgyMTUzOiAvKiBWVUxHQVIg
RlJBQ1RJT04gT05FIFRISVJEICovCi0gICAgICAgIGNhc2UgMHgyMTU0OiAvKiBWVUxHQVIgRlJB
Q1RJT04gVFdPIFRISVJEUyAqLwotICAgICAgICBjYXNlIDB4MjE1NTogLyogVlVMR0FSIEZSQUNU
SU9OIE9ORSBGSUZUSCAqLwotICAgICAgICBjYXNlIDB4MjE1NjogLyogVlVMR0FSIEZSQUNUSU9O
IFRXTyBGSUZUSFMgKi8KLSAgICAgICAgY2FzZSAweDIxNTc6IC8qIFZVTEdBUiBGUkFDVElPTiBU
SFJFRSBGSUZUSFMgKi8KLSAgICAgICAgY2FzZSAweDIxNTg6IC8qIFZVTEdBUiBGUkFDVElPTiBG
T1VSIEZJRlRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1OTogLyogVlVMR0FSIEZSQUNUSU9OIE9O
RSBTSVhUSCAqLwotICAgICAgICBjYXNlIDB4MjE1QTogLyogVlVMR0FSIEZSQUNUSU9OIEZJVkUg
U0lYVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTVCOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEVJ
R0hUICovCi0gICAgICAgIGNhc2UgMHgyMTVDOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRUlH
SFRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1RDogLyogVlVMR0FSIEZSQUNUSU9OIEZJVkUgRUlH
SFRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1RTogLyogVlVMR0FSIEZSQUNUSU9OIFNFVkVOIEVJ
R0hUSFMgKi8KLSAgICAgICAgY2FzZSAweDIxNUY6IC8qIEZSQUNUSU9OIE5VTUVSQVRPUiBPTkUg
Ki8KLSAgICAgICAgY2FzZSAweDIyMTI6IC8qIE1JTlVTIFNJR04gKi8KLSAgICAgICAgY2FzZSAw
eDIyMTU6IC8qIERJVklTSU9OIFNMQVNIICovCi0gICAgICAgIGNhc2UgMHgyMjE2OiAvKiBTRVQg
TUlOVVMgKi8KLSAgICAgICAgY2FzZSAweDIyMzY6IC8qIFJBVElPICovCi0gICAgICAgIGNhc2Ug
MHgyMzNGOiAvKiBBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU0xBU0ggQkFSICovCi0gICAgICAgIGNh
c2UgMHgyM0FFOiAvKiBJTlRFR1JBTCBFWFRFTlNJT04gKi8KLSAgICAgICAgY2FzZSAweDI0NEE6
IC8qIE9DUiBET1VCTEUgQkFDS1NMQVNIICovCi0gICAgICAgIGNhc2UgMHgyNTcxOiAvKiBEaXNw
bGF5VHlwZTo6Qm94IERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIFJJR0hUIFRPIExPV0VS
IExFRlQgKi8KLSAgICAgICAgY2FzZSAweDI1NzI6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJBV0lO
R1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVCAqLwotICAgICAgICBj
YXNlIDB4MjlGNjogLyogU09MSURVUyBXSVRIIE9WRVJCQVIgKi8KLSAgICAgICAgY2FzZSAweDI5
Rjg6IC8qIEJJRyBTT0xJRFVTICovCi0gICAgICAgIGNhc2UgMHgyQUZCOiAvKiBUUklQTEUgU09M
SURVUyBCSU5BUlkgUkVMQVRJT04gKi8KLSAgICAgICAgY2FzZSAweDJBRkQ6IC8qIERPVUJMRSBT
T0xJRFVTIE9QRVJBVE9SICovCi0gICAgICAgIGNhc2UgMHgyRkYwOiAvKiBJREVPR1JBUEhJQyBE
RVNDUklQVElPTiBDSEFSQUNURVIgTEVGVCBUTyBSSUdIVCAqLwotICAgICAgICBjYXNlIDB4MkZG
MTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEFCT1ZFIFRPIEJFTE9XICov
Ci0gICAgICAgIGNhc2UgMHgyRkYyOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNU
RVIgTEVGVCBUTyBNSURETEUgQU5EIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyRkYzOiAvKiBJ
REVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gTUlERExFIEFORCBCRUxP
VyAqLwotICAgICAgICBjYXNlIDB4MkZGNDogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hB
UkFDVEVSIEZVTEwgU1VSUk9VTkQgKi8KLSAgICAgICAgY2FzZSAweDJGRjU6IC8qIElERU9HUkFQ
SElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEFCT1ZFICovCi0gICAgICAg
IGNhc2UgMHgyRkY2OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9V
TkQgRlJPTSBCRUxPVyAqLwotICAgICAgICBjYXNlIDB4MkZGNzogLyogSURFT0dSQVBISUMgREVT
Q1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTEVGVCAqLwotICAgICAgICBjYXNlIDB4
MkZGODogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00g
VVBQRVIgTEVGVCAqLwotICAgICAgICBjYXNlIDB4MkZGOTogLyogSURFT0dSQVBISUMgREVTQ1JJ
UFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gVVBQRVIgUklHSFQgKi8KLSAgICAgICAgY2Fz
ZSAweDJGRkE6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBG
Uk9NIExPV0VSIExFRlQgKi8KLSAgICAgICAgY2FzZSAweDJGRkI6IC8qIElERU9HUkFQSElDIERF
U0NSSVBUSU9OIENIQVJBQ1RFUiBPVkVSTEFJRCAqLwotICAgICAgICBjYXNlIDB4MzAwMjogLyog
SURFT0dSQVBISUMgRlVMTCBTVE9QICovCi0gICAgICAgIGNhc2UgMHgzMDA4OiAvKiBMRUZUIEFO
R0xFIEJSQUNLRVQgKi8KLSAgICAgICAgY2FzZSAweDMwMTQ6IC8qIExFRlQgVE9SVE9JU0UgU0hF
TEwgQlJBQ0tFVCAqLwotICAgICAgICBjYXNlIDB4MzAxNTogLyogUklHSFQgVE9SVE9JU0UgU0hF
TEwgQlJBQ0tFVCAqLwotICAgICAgICBjYXNlIDB4MzAzMzogLyogVkVSVElDQUwgS0FOQSBSRVBF
QVQgTUFSSyBVUFBFUiBIQUxGICovCi0gICAgICAgIGNhc2UgMHgzMDM1OiAvKiBWRVJUSUNBTCBL
QU5BIFJFUEVBVCBNQVJLIExPV0VSIEhBTEYgKi8KLSAgICAgICAgY2FzZSAweDMyMUQ6IC8qIFBB
UkVOVEhFU0laRUQgS09SRUFOIENIQVJBQ1RFUiBPSkVPTiAqLwotICAgICAgICBjYXNlIDB4MzIx
RTogLyogUEFSRU5USEVTSVpFRCBLT1JFQU4gQ0hBUkFDVEVSIE8gSFUgKi8KLSAgICAgICAgY2Fz
ZSAweDMzQUU6IC8qIFNRVUFSRSBSQUQgT1ZFUiBTICovCi0gICAgICAgIGNhc2UgMHgzM0FGOiAv
KiBTUVVBUkUgUkFEIE9WRVIgUyBTUVVBUkVEICovCi0gICAgICAgIGNhc2UgMHgzM0M2OiAvKiBT
UVVBUkUgQyBPVkVSIEtHICovCi0gICAgICAgIGNhc2UgMHgzM0RGOiAvKiBTUVVBUkUgQSBPVkVS
IE0gKi8KLSAgICAgICAgY2FzZSAweDA1Qjk6IC8qIEhFQlJFVyBQT0lOVCBIT0xBTSAqLwotICAg
ICAgICBjYXNlIDB4MDVCQTogLyogSEVCUkVXIFBPSU5UIEhPTEFNIEhBU0VSIEZPUiBWQVYgKi8K
LSAgICAgICAgY2FzZSAweDA1QzE6IC8qIEhFQlJFVyBQT0lOVCBTSElOIERPVCAqLwotICAgICAg
ICBjYXNlIDB4MDVDMjogLyogSEVCUkVXIFBPSU5UIFNJTiBET1QgKi8KLSAgICAgICAgY2FzZSAw
eDA1QzQ6IC8qIEhFQlJFVyBNQVJLIFVQUEVSIERPVCAqLwotICAgICAgICBjYXNlIDB4QTczMTog
LyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgUyAqLwotICAgICAgICBjYXNlIDB4QTc3MTog
LyogTEFUSU4gU01BTEwgTEVUVEVSIERVTSAqLwotICAgICAgICBjYXNlIDB4QTc4OTogLyogTU9E
SUZJRVIgTEVUVEVSIENPTE9OICovCi0gICAgICAgIGNhc2UgMHhGRTE0OiAvKiBQUkVTRU5UQVRJ
T04gRk9STSBGT1IgVkVSVElDQUwgU0VNSUNPTE9OICovCi0gICAgICAgIGNhc2UgMHhGRTE1OiAv
KiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgRVhDTEFNQVRJT04gTUFSSyAqLwotICAg
ICAgICBjYXNlIDB4RkUzRjogLyogUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQg
QU5HTEUgQlJBQ0tFVCAqLwotICAgICAgICBjYXNlIDB4RkU1RDogLyogU01BTEwgTEVGVCBUT1JU
T0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAgIGNhc2UgMHhGRTVFOiAvKiBTTUFMTCBSSUdI
VCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAgIGNhc2UgMHhGRjBFOiAvKiBGVUxM
V0lEVEggRlVMTCBTVE9QICovCi0gICAgICAgIGNhc2UgMHhGRjBGOiAvKiBGVUxMIFdJRFRIIFNP
TElEVVMgKi8KLSAgICAgICAgY2FzZSAweEZGNjE6IC8qIEhBTEZXSURUSCBJREVPR1JBUEhJQyBG
VUxMIFNUT1AgKi8KLSAgICAgICAgY2FzZSAweEZGRkM6IC8qIE9CSkVDVCBSRVBMQUNFTUVOVCBD
SEFSQUNURVIgKi8KLSAgICAgICAgY2FzZSAweEZGRkQ6IC8qIFJFUExBQ0VNRU5UIENIQVJBQ1RF
UiAqLwotICAgICAgICBjYXNlIDB4MUY1MEY6IC8qIExPQ0sgV0lUSCBJTksgUEVOICovCi0gICAg
ICAgIGNhc2UgMHgxRjUxMDogLyogQ0xPU0VEIExPQ0sgV0lUSCBLRVkgKi8KLSAgICAgICAgY2Fz
ZSAweDFGNTExOiAvKiBLRVkgKi8KLSAgICAgICAgY2FzZSAweDFGNTEyOiAvKiBMT0NLICovCi0g
ICAgICAgIGNhc2UgMHgxRjUxMzogLyogT1BFTiBMT0NLICovCi0gICAgICAgICAgICByZXR1cm4g
WUVTOwotICAgICAgICBjYXNlIDB4MDMwNzogLyogQ09NQklOSU5HIERPVCBBQk9WRSAqLwotICAg
ICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDIzNyAvKiBMQVRJTiBTTUFM
TCBMRVRURVIgRE9UTEVTUyBKICovCi0gICAgICAgICAgICAgICAgfHwgcHJldmlvdXNDb2RlUG9p
bnQgPT0gMHgwMTMxIC8qIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEkgKi8KLSAgICAgICAg
ICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDA1RDU7IC8qIEhFQlJFVyBMRVRURVIg
VkFWICovCi0gICAgICAgIGNhc2UgMHgwNTQ4OiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBW
TyAqLwotICAgICAgICBjYXNlIDB4MDU0RDogLyogQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0VI
ICovCi0gICAgICAgIGNhc2UgMHgwNTc4OiAvKiBBUk1FTklBTiBTTUFMTCBMRVRURVIgVk8gKi8K
LSAgICAgICAgY2FzZSAweDA1N0Q6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBTRUggKi8KLSAg
ICAgICAgICAgIHJldHVybiBwcmV2aW91c0NvZGVQb2ludAotICAgICAgICAgICAgICAgICYmICFp
c0FTQ0lJRGlnaXRPclZhbGlkSG9zdENoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgp
KQotICAgICAgICAgICAgICAgICYmICFpc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKHByZXZpb3Vz
Q29kZVBvaW50LnZhbHVlKCkpOwotICAgICAgICBjYXNlICcuJzoKLSAgICAgICAgICAgIHJldHVy
biBOTzsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0NvZGVQ
b2ludAotICAgICAgICAgICAgICAgICYmIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIocHJl
dmlvdXNDb2RlUG9pbnQudmFsdWUoKSkKLSAgICAgICAgICAgICAgICAmJiAhKGlzQXJtZW5pYW5T
Y3JpcHRDaGFyYWN0ZXIoY2hhckNvZGUpIHx8IGlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFj
dGVyKGNoYXJDb2RlKSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCB3aGl0ZUxpc3RJRE5TY3Jp
cHQoY29uc3QgY2hhciogc2NyaXB0TmFtZSkKLXsKLSAgICBpbnQzMl90IHNjcmlwdCA9IHVfZ2V0
UHJvcGVydHlWYWx1ZUVudW0oVUNIQVJfU0NSSVBULCBzY3JpcHROYW1lKTsKLSAgICBpZiAoc2Ny
aXB0ID49IDAgJiYgc2NyaXB0IDwgVVNDUklQVF9DT0RFX0xJTUlUKSB7Ci0gICAgICAgIHNpemVf
dCBpbmRleCA9IHNjcmlwdCAvIDMyOwotICAgICAgICB1aW50MzJfdCBtYXNrID0gMSA8PCAoc2Ny
aXB0ICUgMzIpOwotICAgICAgICBJRE5TY3JpcHRXaGl0ZUxpc3RbaW5kZXhdIHw9IG1hc2s7Ci0g
ICAgfQotfQotCi1zdGF0aWMgQk9PTCByZWFkSUROU2NyaXB0V2hpdGVMaXN0RmlsZShOU1N0cmlu
ZyAqZmlsZW5hbWUpCi17Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIE5POwot
Ci0gICAgRklMRSAqZmlsZSA9IGZvcGVuKFtmaWxlbmFtZSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25dLCAiciIpOwotICAgIGlmICghZmlsZSkKLSAgICAgICAgcmV0dXJuIE5POwotICAgIAotICAg
IC8vIFJlYWQgYSB3b3JkIGF0IGEgdGltZS4KLSAgICAvLyBBbGxvdyBjb21tZW50cywgc3RhcnRp
bmcgd2l0aCAjIGNoYXJhY3RlciB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgotICAgIHdoaWxlICgx
KSB7Ci0gICAgICAgIC8vIFNraXAgYSBjb21tZW50IGlmIHByZXNlbnQuCi0gICAgICAgIGlmIChm
c2NhbmYoZmlsZSwgIiAjJSpbXlxuXHJdJSpbXG5ccl0iKSA9PSBFT0YpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgCi0gICAgICAgIC8vIFJlYWQgYSBzY3JpcHQgbmFtZSBpZiBwcmVzZW50
LgotICAgICAgICBjaGFyIHdvcmRbMzNdOwotICAgICAgICBpbnQgcmVzdWx0ID0gZnNjYW5mKGZp
bGUsICIgJTMyW14jIFx0XG5ccl0lKlteIyBcdFxuXHJdICIsIHdvcmQpOwotICAgICAgICBpZiAo
cmVzdWx0ID09IEVPRikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgaWYg
KHJlc3VsdCA9PSAxKSB7Ci0gICAgICAgICAgICAvLyBHb3QgYSB3b3JkLCBtYXAgdG8gc2NyaXB0
IGNvZGUgYW5kIHB1dCBpdCBpbnRvIHRoZSBhcnJheS4KLSAgICAgICAgICAgIHdoaXRlTGlzdElE
TlNjcmlwdCh3b3JkKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmY2xvc2UoZmlsZSk7Ci0gICAg
cmV0dXJuIFlFUzsKLX0KLQotc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hp
dGVMaXN0KGNvbnN0IFVDaGFyICpidWZmZXIsIGludDMyX3QgbGVuZ3RoKQotewotICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3QgZmxhZzsKLSAgICBkaXNwYXRjaF9vbmNlKCZmbGFnLCBeewotICAg
ICAgICAvLyBSZWFkIHdoaXRlIGxpc3QgZnJvbSBsaWJyYXJ5LgotICAgICAgICBOU0FycmF5ICpk
aXJzID0gTlNTZWFyY2hQYXRoRm9yRGlyZWN0b3JpZXNJbkRvbWFpbnMoTlNMaWJyYXJ5RGlyZWN0
b3J5LCBOU0FsbERvbWFpbnNNYXNrLCBZRVMpOwotICAgICAgICBpbnQgbnVtRGlycyA9IFtkaXJz
IGNvdW50XTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1EaXJzOyBpKyspIHsKLSAg
ICAgICAgICAgIGlmIChyZWFkSUROU2NyaXB0V2hpdGVMaXN0RmlsZShbW2RpcnMgb2JqZWN0QXRJ
bmRleDppXSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJRE5TY3JpcHRXaGl0ZUxp
c3QudHh0Il0pKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBj
b25zdCBjaGFyKiBkZWZhdWx0SUROU2NyaXB0V2hpdGVMaXN0WzIwXSA9IHsKLSAgICAgICAgICAg
ICJDb21tb24iLAotICAgICAgICAgICAgIkluaGVyaXRlZCIsCi0gICAgICAgICAgICAiQXJhYmlj
IiwKLSAgICAgICAgICAgICJBcm1lbmlhbiIsCi0gICAgICAgICAgICAiQm9wb21vZm8iLAotICAg
ICAgICAgICAgIkNhbmFkaWFuX0Fib3JpZ2luYWwiLAotICAgICAgICAgICAgIkRldmFuYWdhcmki
LAotICAgICAgICAgICAgIkRlc2VyZXQiLAotICAgICAgICAgICAgIkd1amFyYXRpIiwKLSAgICAg
ICAgICAgICJHdXJtdWtoaSIsCi0gICAgICAgICAgICAiSGFuZ3VsIiwKLSAgICAgICAgICAgICJI
YW4iLAotICAgICAgICAgICAgIkhlYnJldyIsCi0gICAgICAgICAgICAiSGlyYWdhbmEiLAotICAg
ICAgICAgICAgIkthdGFrYW5hX09yX0hpcmFnYW5hIiwKLSAgICAgICAgICAgICJLYXRha2FuYSIs
Ci0gICAgICAgICAgICAiTGF0aW4iLAotICAgICAgICAgICAgIlRhbWlsIiwKLSAgICAgICAgICAg
ICJUaGFpIiwKLSAgICAgICAgICAgICJZaSIsCi0gICAgICAgIH07Ci0gICAgICAgIGZvciAoY29u
c3QgY2hhciogc2NyaXB0TmFtZSA6IGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3QpCi0gICAgICAg
ICAgICB3aGl0ZUxpc3RJRE5TY3JpcHQoc2NyaXB0TmFtZSk7Ci0gICAgfSk7Ci0gICAgCi0gICAg
aW50MzJfdCBpID0gMDsKLSAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBv
aW50OwotICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7Ci0gICAgICAgIFVDaGFyMzIgYzsKLSAgICAg
ICAgVTE2X05FWFQoYnVmZmVyLCBpLCBsZW5ndGgsIGMpCi0gICAgICAgIFVFcnJvckNvZGUgZXJy
b3IgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9IHVzY3JpcHRf
Z2V0U2NyaXB0KGMsICZlcnJvcik7Ci0gICAgICAgIGlmIChlcnJvciAhPSBVX1pFUk9fRVJST1Ip
IHsKLSAgICAgICAgICAgIExPR19FUlJPUigiZ290IElDVSBlcnJvciB3aGlsZSB0cnlpbmcgdG8g
bG9vayBhdCBzY3JpcHRzOiAlZCIsIGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBOTzsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoc2NyaXB0IDwgMCkgewotICAgICAgICAgICAgTE9HX0VSUk9S
KCJnb3QgbmVnYXRpdmUgbnVtYmVyIGZvciBzY3JpcHQgY29kZSBmcm9tIElDVTogJWQiLCBzY3Jp
cHQpOwotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICB9Ci0gICAgICAgIGlmIChzY3Jp
cHQgPj0gVVNDUklQVF9DT0RFX0xJTUlUKQotICAgICAgICAgICAgcmV0dXJuIE5POwotCi0gICAg
ICAgIHNpemVfdCBpbmRleCA9IHNjcmlwdCAvIDMyOwotICAgICAgICB1aW50MzJfdCBtYXNrID0g
MSA8PCAoc2NyaXB0ICUgMzIpOwotICAgICAgICBpZiAoIShJRE5TY3JpcHRXaGl0ZUxpc3RbaW5k
ZXhdICYgbWFzaykpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0gICAgICAgIAotICAgICAgICBp
ZiAoaXNMb29rYWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQsIGMpKQotICAgICAgICAg
ICAgcmV0dXJuIE5POwotICAgICAgICBwcmV2aW91c0NvZGVQb2ludCA9IGM7Ci0gICAgfQotICAg
IHJldHVybiBZRVM7Ci19Ci0KLXN0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxs
b3dlZEJ5VExEUnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgsIGNvbnN0
IFdURjo6RnVuY3Rpb248Ym9vbChVQ2hhcik+JiBjaGFyYWN0ZXJJc0FsbG93ZWQpCi17Ci0gICAg
QVNTRVJUKGxlbmd0aCA+IDApOwotCi0gICAgZm9yIChpbnQzMl90IGkgPSBsZW5ndGggLSAxOyBp
ID49IDA7IC0taSkgewotICAgICAgICBVQ2hhciBjaCA9IGJ1ZmZlcltpXTsKLSAgICAgICAgCi0g
ICAgICAgIGlmIChjaGFyYWN0ZXJJc0FsbG93ZWQoY2gpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIAotICAgICAgICAvLyBPbmx5IGNoZWNrIHRoZSBzZWNvbmQgbGV2ZWwgZG9tYWlu
LiBMb3dlciBsZXZlbCByZWdpc3RyYXJzIG1heSBoYXZlIGRpZmZlcmVudCBydWxlcy4KLSAgICAg
ICAgaWYgKGNoID09ICcuJykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2RlZmluZSBDSEVD
S19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhzdWZmaXgsIGZ1bmN0aW9uKSBcCi0gICAgeyBcCi0g
ICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IHN1ZmZpeExlbmd0aCA9IHNpemVvZihzdWZmaXgp
IC8gc2l6ZW9mKHN1ZmZpeFswXSk7IFwKLSAgICAgICAgaWYgKGxlbmd0aCA+IHN1ZmZpeExlbmd0
aCAmJiAwID09IG1lbWNtcChidWZmZXIgKyBsZW5ndGggLSBzdWZmaXhMZW5ndGgsIHN1ZmZpeCwg
c2l6ZW9mKHN1ZmZpeCkpKSBcCi0gICAgICAgICAgICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFp
bk5hbWVBbGxvd2VkQnlUTERSdWxlcyhidWZmZXIsIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgZnVu
Y3Rpb24pOyBcCi0gICAgfQotCi1zdGF0aWMgYm9vbCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFj
dGVyKFVDaGFyIGNoKQotewotICAgIC8vIE9ubHkgbW9kZXJuIFJ1c3NpYW4gbGV0dGVycywgZGln
aXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYg
Y2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9
PSAnLSc7Ci19Ci0KLXN0YXRpYyBCT09MIGFsbENoYXJhY3RlcnNBbGxvd2VkQnlUTERSdWxlcyhj
b25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCkKLXsKLSAgICAvLyBTa2lwIHRyYWls
aW5nIGRvdCBmb3Igcm9vdCBkb21haW4uCi0gICAgaWYgKGJ1ZmZlcltsZW5ndGggLSAxXSA9PSAn
LicpCi0gICAgICAgIGxlbmd0aC0tOwotCi0gICAgLy8gaHR0cDovL2NjdGxkLnJ1L2ZpbGVzL3Bk
Zi9kb2NzL3J1bGVzX3J1LXJmLnBkZgotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1JG
W10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgRVIKLSAgICAgICAgMHgwNDQ0ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKLSAg
ICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljUkYsIGlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOwotCi0gICAgLy8gaHR0cDovL3J1c25hbWVzLnJ1L3J1
bGVzLnBsCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUlVTW10gPSB7Ci0gICAgICAg
ICcuJywKLSAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKLSAgICAg
ICAgMHgwNDQzLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQotICAgICAgICAweDA0NDEgIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBFUwotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VG
RklYX01BVENIRVMoY3lyaWxsaWNSVVMsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOwot
Ci0gICAgLy8gaHR0cDovL3J1LmZhaXRpZC5vcmcvcHJvamVjdHMvbW9zY293L2RvY3VtZW50cy9t
b3NrdmEvaWRuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTU9TS1ZBW10gPSB7Ci0g
ICAgICAgICcuJywKLSAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0K
LSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0
NDEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUwotICAgICAgICAweDA0M0EsIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBLQQotICAgICAgICAweDA0MzIsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBWRQotICAgICAgICAweDA0MzAgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAg
fTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY01PU0tWQSwgaXNS
dXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vd3d3LmRvdGRldGku
cnUvZm9ydXNlci9kb2NzL3JlZ3J1bGVzLnBocAotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJp
bGxpY0RFVElbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0MzQsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBERQotICAgICAgICAweDA0MzUsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBJRQotICAgICAgICAweDA0NDIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBURQotICAgICAg
ICAweDA0MzggIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBJCi0gICAgfTsKLSAgICBDSEVDS19S
VUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0RFVEksIGlzUnVzc2lhbkRvbWFpbk5hbWVD
aGFyYWN0ZXIpOwotCi0gICAgLy8gaHR0cDovL2NvcmVuaWMub3JnIC0gcnVsZXMgbm90IHB1Ymxp
c2hlZC4gVGhlIHdvcmQgaXMgUnVzc2lhbiwgc28gb25seSBhbGxvd2luZyBSdXNzaWFuIGF0IHRo
aXMgdGltZSwKLSAgICAvLyBhbHRob3VnaCB3ZSBtYXkgbmVlZCB0byByZXZpc2UgdGhlIGNoZWNr
cyBpZiB0aGlzIGVuZHMgdXAgYmVpbmcgdXNlZCB3aXRoIG90aGVyIGxhbmd1YWdlcyBzcG9rZW4g
aW4gUnVzc2lhLgotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY09OTEFZTltdID0gewot
ICAgICAgICAnLicsCi0gICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8K
LSAgICAgICAgMHgwNDNELCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KLSAgICAgICAgMHgw
NDNCLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKLSAgICAgICAgMHgwNDMwLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgQQotICAgICAgICAweDA0MzksIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBTSE9SVCBJCi0gICAgICAgIDB4MDQzRCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVO
Ci0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY09OTEFZ
TiwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vY29yZW5p
Yy5vcmcgLSBzYW1lIGFzIGFib3ZlLgotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1NB
WVRbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0NDEsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBFUwotICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0g
ICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKLSAgICAgICAg
MHgwNDQyICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKLSAgICB9OwotICAgIENIRUNLX1JV
TEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU0FZVCwgaXNSdXNzaWFuRG9tYWluTmFtZUNo
YXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vcGlyLm9yZy9wcm9kdWN0cy9vcHItZG9tYWluLyAt
IHJ1bGVzIG5vdCBwdWJsaXNoZWQuIEFjY29yZGluZyB0byB0aGUgcmVnaXN0cnkgc2l0ZSwKLSAg
ICAvLyB0aGUgaW50ZW5kZWQgYXVkaWVuY2UgaXMgIlJ1c3NpYW4gYW5kIG90aGVyIFNsYXZpYy1z
cGVha2luZyBtYXJrZXRzIi4KLSAgICAvLyBDaHJvbWUgYXBwZWFycyB0byBvbmx5IGFsbG93IFJ1
c3NpYW4sIHNvIHN0aWNraW5nIHdpdGggdGhhdCBmb3Igbm93LgotICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBjeXJpbGxpY09SR1tdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQzRSwgLy8g
Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KLSAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgRVIKLSAgICAgICAgMHgwNDMzICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hF
Ci0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY09SRywg
aXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vY2N0bGQuYnkv
cnVsZXMuaHRtbAotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY0JFTFtdID0gewotICAg
ICAgICAnLicsCi0gICAgICAgIDB4MDQzMSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCi0g
ICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCi0gICAgICAgIDB4MDQz
QiAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19J
Rl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0JFTCwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8g
UnVzc2lhbiBhbmQgQnllbG9ydXNzaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBh
bGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8
IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0NTYgfHwgY2ggPT0gMHgwNDVFIHx8IGNoID09IDB4
MjAxOSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8v
IGh0dHA6Ly93d3cubmljLmt6L2RvY3MvcG9yeWFkb2tfdm5lZHJlbml5YV9rYXpfcnUucGRmCi0g
ICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljS0FaW10gPSB7Ci0gICAgICAgICcuJywKLSAg
ICAgICAgMHgwNDlCLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIK
LSAgICAgICAgMHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQotICAgICAgICAweDA0
MzcgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBaRQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNf
SUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNLQVosIFtdKFVDaGFyIGNoKSB7Ci0gICAgICAgIC8v
IEthemFraCBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICAgICAg
cmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwg
Y2ggPT0gMHgwNEQ5IHx8IGNoID09IDB4MDQ5MyB8fCBjaCA9PSAweDA0OUIgfHwgY2ggPT0gMHgw
NEEzIHx8IGNoID09IDB4MDRFOSB8fCBjaCA9PSAweDA0QjEgfHwgY2ggPT0gMHgwNEFGIHx8IGNo
ID09IDB4MDRCQiB8fCBjaCA9PSAweDA0NTYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAn
LSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwOi8vdWFuaWMubmV0L2RvY3MvZG9jdW1lbnRzLXVr
ci9SdWxlcyUyMG9mJTIwVUtSX3Y0LjAucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljVUtSW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDQzLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgVQotICAgICAgICAweDA0M0EsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBL
QQotICAgICAgICAweDA0NDAgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgIH07Ci0g
ICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNVS1IsIFtdKFVDaGFyIGNo
KSB7Ci0gICAgICAgIC8vIFJ1c3NpYW4gYW5kIFVrcmFpbmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5k
IGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2gg
PD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNDkxIHx8IGNoID09IDB4MDQw
NCB8fCBjaCA9PSAweDA0NTYgfHwgY2ggPT0gMHgwNDU3IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwg
Y2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gaHR0cDovL3d3dy5ybmlkcy5ycy9kYXRhL0RP
S1VNRU5USS9pZG4tc3JiLXBvbGljeS10ZXJtc29mdXNlLXYxLjQtZW5nLnBkZgotICAgIHN0YXRp
YyBjb25zdCBVQ2hhciBjeXJpbGxpY1NSQltdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4
MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4MDQ0MCwgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgICAgIDB4MDQzMSAgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEJFCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJp
bGxpY1NSQiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gU2VyYmlhbiBsZXR0ZXJzLCBkaWdp
dHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAg
JiYgY2ggPD0gMHgwNDM4KSB8fCAoY2ggPj0gMHgwNDNBICYmIGNoIDw9IDB4MDQ0OCkgfHwgY2gg
PT0gMHgwNDUyIHx8IGNoID09IDB4MDQ1OCB8fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVB
IHx8IGNoID09IDB4MDQ1QiB8fCBjaCA9PSAweDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBj
aCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwOi8vbWFybmV0Lm1rL2RvYy9wcmF2aWxu
aWstbWstbWtkLnBkZgotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY01LRFtdID0gewot
ICAgICAgICAnLicsCi0gICAgICAgIDB4MDQzQywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVN
Ci0gICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAgIDB4
MDQzNCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCi0gICAgfTsKLSAgICBDSEVDS19SVUxF
U19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY01LRCwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAg
Ly8gTWFjZWRvbmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAg
ICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDM4KSB8fCAoY2ggPj0gMHgw
NDNBICYmIGNoIDw9IDB4MDQ0OCkgfHwgY2ggPT0gMHgwNDUzIHx8IGNoID09IDB4MDQ1NSB8fCBj
aCA9PSAweDA0NTggfHwgY2ggPT0gMHgwNDU5IHx8IGNoID09IDB4MDQ1QSB8fCBjaCA9PSAweDA0
NUMgfHwgY2ggPT0gMHgwNDVGIHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwotICAg
IH0pOwotCi0gICAgLy8gaHR0cHM6Ly93d3cubW9uLm1uL2NzLwotICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBjeXJpbGxpY01PTltdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQzQywgLy8g
Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCi0gICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01B
TEwgTEVUVEVSIE8KLSAgICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4K
LSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9OLCBb
XShVQ2hhciBjaCkgewotICAgICAgICAvLyBNb25nb2xpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBk
YXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9
IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09IDB4MDRFOSB8fCBjaCA9PSAweDA0QUYg
fHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBOb3Qg
YSBrbm93biB0b3AgbGV2ZWwgZG9tYWluIHdpdGggc3BlY2lhbCBydWxlcy4KLSAgICByZXR1cm4g
Tk87Ci19Ci0KLS8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgbm8gbWFwcGluZyBpcyBuZWNl
c3NhcnkuCi0vLyBJZiBtYWtlU3RyaW5nIGlzIE5PLCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRo
ZXIgbmlsIG9yIHNlbGYgdG8gaW5kaWNhdGUgbWFwcGluZyBpcyBuZWNlc3NhcnkuCi0vLyBJZiBt
YWtlU3RyaW5nIGlzIFlFUywgdGhlbiByZXR1cm4gdmFsdWUgaXMgZWl0aGVyIG5pbCBvciB0aGUg
bWFwcGVkIHN0cmluZy4KLXN0YXRpYyBOU1N0cmluZyAqbWFwSG9zdE5hbWVXaXRoUmFuZ2UoTlNT
dHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCBlbmNvZGUsIEJPT0wgbWFrZVN0cmlu
ZywgQk9PTCAqZXJyb3IpCi17Ci0gICAgaWYgKHJhbmdlLmxlbmd0aCA+IEhPU1RfTkFNRV9CVUZG
RVJfTEVOR1RIKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmICghW3N0cmluZyBs
ZW5ndGhdKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFVDaGFyIHNvdXJjZUJ1ZmZl
cltIT1NUX05BTUVfQlVGRkVSX0xFTkdUSF07Ci0gICAgVUNoYXIgZGVzdGluYXRpb25CdWZmZXJb
SE9TVF9OQU1FX0JVRkZFUl9MRU5HVEhdOwotICAgIAotICAgIGlmIChlbmNvZGUgJiYgW3N0cmlu
ZyByYW5nZU9mU3RyaW5nOkAiJSIgb3B0aW9uczpOU0xpdGVyYWxTZWFyY2ggcmFuZ2U6cmFuZ2Vd
LmxvY2F0aW9uICE9IE5TTm90Rm91bmQpIHsKLSAgICAgICAgTlNTdHJpbmcgKnN1YnN0cmluZyA9
IFtzdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnJhbmdlXTsKLSAgICAgICAgc3Vic3RyaW5nID0g
Q0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVTdHJpbmdCeVJlcGxhY2luZ1BlcmNlbnRFc2Nh
cGVzKG51bGxwdHIsIChDRlN0cmluZ1JlZilzdWJzdHJpbmcsIENGU1RSKCIiKSkpOwotICAgICAg
ICBpZiAoc3Vic3RyaW5nKSB7Ci0gICAgICAgICAgICBzdHJpbmcgPSBzdWJzdHJpbmc7Ci0gICAg
ICAgICAgICByYW5nZSA9IE5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgCi0gICAgaW50IGxlbmd0aCA9IHJhbmdlLmxlbmd0aDsKLSAgICBbc3Ry
aW5nIGdldENoYXJhY3RlcnM6c291cmNlQnVmZmVyIHJhbmdlOnJhbmdlXTsKLSAgICAKLSAgICBV
RXJyb3JDb2RlIHVlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBVSUROQUluZm8gcHJvY2Vzc2lu
Z0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOwotICAgIGludDMyX3QgbnVtQ2hhcmFj
dGVyc0NvbnZlcnRlZCA9IChlbmNvZGUgPyB1aWRuYV9uYW1lVG9BU0NJSSA6IHVpZG5hX25hbWVU
b1VuaWNvZGUpKCZVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2Rlcigp
LCBzb3VyY2VCdWZmZXIsIGxlbmd0aCwgZGVzdGluYXRpb25CdWZmZXIsIEhPU1RfTkFNRV9CVUZG
RVJfTEVOR1RILCAmcHJvY2Vzc2luZ0RldGFpbHMsICZ1ZXJyb3IpOwotICAgIGlmIChsZW5ndGgg
JiYgKFVfRkFJTFVSRSh1ZXJyb3IpIHx8IHByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykpIHsKLSAg
ICAgICAgKmVycm9yID0gWUVTOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLSAgICAKLSAg
ICBpZiAobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9PSBsZW5ndGggJiYgIW1lbWNtcChzb3VyY2VC
dWZmZXIsIGRlc3RpbmF0aW9uQnVmZmVyLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKSkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoIWVuY29kZSAmJiAhYWxsQ2hhcmFjdGVyc0lu
SUROU2NyaXB0V2hpdGVMaXN0KGRlc3RpbmF0aW9uQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVy
dGVkKSAmJiAhYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGRlc3RpbmF0aW9uQnVmZmVy
LCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAg
ICByZXR1cm4gbWFrZVN0cmluZyA/IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczpkZXN0
aW5hdGlvbkJ1ZmZlciBsZW5ndGg6bnVtQ2hhcmFjdGVyc0NvbnZlcnRlZF0gOiBzdHJpbmc7Ci19
Ci0KLUJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcs
IE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQotewotICAgIHJldHVybiBtYXBIb3N0TmFtZVdp
dGhSYW5nZShzdHJpbmcsIHJhbmdlLCBOTywgTk8sIGVycm9yKSAhPSBuaWw7Ci19Ci0gCi1CT09M
IGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1Jhbmdl
IHJhbmdlLCBCT09MICplcnJvcikKLXsKLSAgICByZXR1cm4gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uo
c3RyaW5nLCByYW5nZSwgWUVTLCAgTk8sIGVycm9yKSAhPSBuaWw7Ci19Ci0KLU5TU3RyaW5nICpk
ZWNvZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQot
ewotICAgIEJPT0wgZXJyb3IgPSBOTzsKLSAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1l
V2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIE5PLCBZRVMsICZlcnJvcik7Ci0gICAgaWYgKGVycm9y
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7
Ci19Ci0KLU5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5n
LCBOU1JhbmdlIHJhbmdlKQotewotICAgIEJPT0wgZXJyb3IgPSBOTzsKLSAgICBOU1N0cmluZyAq
aG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIFlFUywgWUVTLCAmZXJy
b3IpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gIWhv
c3QgPyBzdHJpbmcgOiBob3N0OwotfQotCi1OU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJp
bmcgKnN0cmluZykKLXsKLSAgICBCT09MIGVycm9yID0gTk87Ci0gICAgTlNTdHJpbmcgKmhvc3Qg
PSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIE5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVu
Z3RoXSksIE5PLCBZRVMsICZlcnJvcik7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm4g
bmlsOwotICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Ci19Ci0KLU5TU3RyaW5nICpl
bmNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQotewotICAgIEJPT0wgZXJyb3IgPSBOTzsK
LSAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgTlNNYWtl
UmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgWUVTLCBZRVMsICZlcnJvcik7Ci0gICAgaWYgKGVy
cm9yKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhv
c3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoTlNTdHJp
bmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJy
YXksIEJPT0wgZW5jb2RlKQotewotICAgIC8vIEdlbmVyYWxseSwgd2Ugd2FudCB0byBvcHRpbWl6
ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhvc3QgbmFtZSB0aGF0IGRvZXMgbm90
IG5lZWQgbWFwcGluZy4KLSAgICAvLyBUaGVyZWZvcmUsIHdlIHVzZSBuaWwgdG8gaW5kaWNhdGUg
bm8gbWFwcGluZyBoZXJlIGFuZCBhbiBlbXB0eSBhcnJheSB0byBpbmRpY2F0ZSBlcnJvci4KLQot
ICAgIEJPT0wgZXJyb3IgPSBOTzsKLSAgICBCT09MIG5lZWRzTWFwcGluZyA9IGVuY29kZSA/IGhv
c3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCAmZXJyb3IpIDogaG9z
dE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsICZlcnJvcik7Ci0gICAg
aWYgKCFlcnJvciAmJiAhbmVlZHNNYXBwaW5nKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
aWYgKCFhcnJheSkKLSAgICAgICAgYXJyYXkgPSBhZG9wdE5TKFtOU011dGFibGVBcnJheSBuZXdd
KTsKLQotICAgIGlmICghZXJyb3IpCi0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TVmFsdWUg
dmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKLX0KLQotc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1Ro
YXROZWVkRW5jb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCi17Ci0gICAgcmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0
TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIFlFUyk7Ci19Ci0KLXN0YXRpYyB2b2lk
IGNvbGxlY3RSYW5nZXNUaGF0TmVlZERlY29kaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2Ug
cmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQotewotICAgIHJldHVybiBj
b2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmluZywgcmFuZ2UsIGFycmF5LCBOTyk7Ci19
Ci0KLXN0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvTWFpbFRvVVJMU3RyaW5nKE5T
U3RyaW5nICpzdHJpbmcsIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYsIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4mIGFycmF5KQotewotICAgIC8vIEluIGEgbWFpbHRvOiBVUkwsIGhvc3Qg
bmFtZXMgY29tZSBhZnRlciBhICdAJyBjaGFyYWN0ZXIgYW5kIGVuZCB3aXRoIGEgJz4nIG9yICcs
JyBvciAnPycgY2hhcmFjdGVyLgotICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZ3Mgc28gdGhhdCBj
aGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29uZnVzZSB1cy4KLSAgICAvLyBXaGVuIHdlIGZpbmQg
YSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFzdCB0aGUgcGFydCBvZiB0aGUgVVJMIHRoYXQgY29u
dGFpbnMgaG9zdCBuYW1lcy4KLSAgICAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5hbWVPclN0cmluZ1N0YXJ0Q2hhcmFjdGVycyA9IFtO
U0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiXCJAPyJd
OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBo
b3N0TmFtZUVuZENoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENo
YXJhY3RlcnNJblN0cmluZzpAIj4sPyJdOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBxdW90ZWRTdHJpbmdDaGFyYWN0ZXJzID0gW05TQ2hhcmFj
dGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJcIlxcIl07Ci0gICAg
Ci0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0cmluZyBsZW5ndGhdOwotICAgIE5TUmFu
Z2UgcmVtYWluaW5nID0gTlNNYWtlUmFuZ2UoMCwgc3RyaW5nTGVuZ3RoKTsKLSAgICAKLSAgICB3
aGlsZSAoMSkgewotICAgICAgICAvLyBGaW5kIHN0YXJ0IG9mIGhvc3QgbmFtZSBvciBvZiBxdW90
ZWQgc3RyaW5nLgotICAgICAgICBOU1JhbmdlIGhvc3ROYW1lT3JTdHJpbmdTdGFydCA9IFtzdHJp
bmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdE5hbWVPclN0cmluZ1N0YXJ0Q2hhcmFjdGVy
cy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5nXTsKLSAgICAgICAgaWYgKGhv
c3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIHVuaWNoYXIgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRleDpo
b3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRpb25dOwotICAgICAgICByZW1haW5pbmcubG9jYXRp
b24gPSBOU01heFJhbmdlKGhvc3ROYW1lT3JTdHJpbmdTdGFydCk7Ci0gICAgICAgIHJlbWFpbmlu
Zy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247Ci0gICAgICAgIAot
ICAgICAgICBpZiAoYyA9PSAnPycpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAg
ICAgICBpZiAoYyA9PSAnQCcpIHsKLSAgICAgICAgICAgIC8vIEZpbmQgZW5kIG9mIGhvc3QgbmFt
ZS4KLSAgICAgICAgICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQgPSByZW1haW5pbmcubG9jYXRp
b247Ci0gICAgICAgICAgICBOU1JhbmdlIGhvc3ROYW1lRW5kID0gW3N0cmluZyByYW5nZU9mQ2hh
cmFjdGVyRnJvbVNldDpob3N0TmFtZUVuZENoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczow
IHJhbmdlOnJlbWFpbmluZ107Ci0gICAgICAgICAgICBCT09MIGRvbmU7Ci0gICAgICAgICAgICBp
ZiAoaG9zdE5hbWVFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkgewotICAgICAgICAgICAgICAg
IGhvc3ROYW1lRW5kLmxvY2F0aW9uID0gc3RyaW5nTGVuZ3RoOwotICAgICAgICAgICAgICAgIGRv
bmUgPSBZRVM7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJlbWFpbmlu
Zy5sb2NhdGlvbiA9IGhvc3ROYW1lRW5kLmxvY2F0aW9uOwotICAgICAgICAgICAgICAgIHJlbWFp
bmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247Ci0gICAgICAg
ICAgICAgICAgZG9uZSA9IE5POwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAg
ICAgICAvLyBQcm9jZXNzIGhvc3QgbmFtZSByYW5nZS4KLSAgICAgICAgICAgIGYoc3RyaW5nLCBO
U01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZC5sb2NhdGlvbiAtIGhvc3ROYW1l
U3RhcnQpLCBhcnJheSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChkb25lKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFNr
aXAgcXVvdGVkIHN0cmluZy4KLSAgICAgICAgICAgIEFTU0VSVChjID09ICciJyk7Ci0gICAgICAg
ICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgICAgIE5TUmFuZ2UgZXNjYXBlZENoYXJhY3Rl
ck9yU3RyaW5nRW5kID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpxdW90ZWRTdHJp
bmdDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpyZW1haW5pbmddOwotICAg
ICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb24gPT0g
TlNOb3RGb3VuZCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAg
ICAgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRleDplc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdF
bmQubG9jYXRpb25dOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4
UmFuZ2UoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kKTsKLSAgICAgICAgICAgICAgICByZW1h
aW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWluaW5nLmxvY2F0aW9uOwotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSB0aGUgZW5kIG9mIHRoZSBz
dHJpbmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUgc3RyaW5nIGxvb3AgYmFjayB0byB0aGUgaG9zdCBu
YW1lIGxvb3AuCi0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJyInKQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBTa2lwIGVz
Y2FwZWQgY2hhcmFjdGVyLgotICAgICAgICAgICAgICAgIEFTU0VSVChjID09ICdcXCcpOwotICAg
ICAgICAgICAgICAgIGlmICghcmVtYWluaW5nLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uICs9IDE7Ci0gICAg
ICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCAtPSAxOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0
cmluZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmLCBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKLXsKLSAgICAvLyBGaW5kIGhvc3RuYW1lcy4g
VG9vIGJhZCB3ZSBjYW4ndCB1c2UgYW55IHJlYWwgVVJMLXBhcnNpbmcgY29kZSB0byBkbyB0aGlz
LAotICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGRvIGl0IGJlZm9yZSBkb2luZyBhbGwgdGhlICUtZXNj
YXBpbmcsIGFuZCB0aGlzIGlzIHRoZSBvbmx5Ci0gICAgLy8gY29kZSB3ZSBoYXZlIHRoYXQgcGFy
c2VzIG1haWx0byBVUkxzIGFueXdheS4KLSAgICAKLSAgICAvLyBNYXliZSB3ZSBzaG91bGQgaW1w
bGVtZW50IHRoaXMgdXNpbmcgYSBjaGFyYWN0ZXIgYnVmZmVyIGluc3RlYWQ/Ci0gICAgCi0gICAg
aWYgKHByb3RvY29sSXMoc3RyaW5nLCAibWFpbHRvIikpIHsKLSAgICAgICAgYXBwbHlIb3N0TmFt
ZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoc3RyaW5nLCBmLCBhcnJheSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgCi0gICAgLy8gRmluZCB0aGUgaG9zdCBuYW1lIGluIGEgaGllcmFy
Y2hpY2FsIFVSTC4KLSAgICAvLyBJdCBjb21lcyBhZnRlciBhICI6Ly8iIHNlcXVlbmNlLCB3aXRo
IHNjaGVtZSBjaGFyYWN0ZXJzIHByZWNlZGluZy4KLSAgICAvLyBJZiBlbmRzIHdpdGggdGhlIGVu
ZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiLCAiLyIsIG9yIGEgIj8iLgotICAgIC8vIElmIHRoZXJl
IGlzIGEgIkAiIGNoYXJhY3RlciwgdGhlIGhvc3QgcGFydCBpcyBqdXN0IHRoZSBwYXJ0IGFmdGVy
IHRoZSAiQCIuCi0gICAgTlNSYW5nZSBzZXBhcmF0b3JSYW5nZSA9IFtzdHJpbmcgcmFuZ2VPZlN0
cmluZzpAIjovLyJdOwotICAgIGlmIChzZXBhcmF0b3JSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZv
dW5kKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gQ2hlY2sgdGhhdCBhbGwgY2hhcmFj
dGVycyBiZWZvcmUgdGhlIDovLyBhcmUgdmFsaWQgc2NoZW1lIGNoYXJhY3RlcnMuCi0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IG5vblNjaGVtZUNo
YXJhY3RlcnMgPSBbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5T
dHJpbmc6QCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3
eHl6MDEyMzQ1Njc4OSstLiJdIGludmVydGVkU2V0XTsKLSAgICBpZiAoW3N0cmluZyByYW5nZU9m
Q2hhcmFjdGVyRnJvbVNldDpub25TY2hlbWVDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6
MCByYW5nZTpOU01ha2VSYW5nZSgwLCBzZXBhcmF0b3JSYW5nZS5sb2NhdGlvbildLmxvY2F0aW9u
ICE9IE5TTm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICB1bnNpZ25lZCBzdHJp
bmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07Ci0gICAgCi0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3RUZXJtaW5hdG9ycyA9IFtOU0NoYXJh
Y3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiOi8/IyJdOwotICAg
IAotICAgIC8vIFN0YXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuCi0gICAgdW5zaWduZWQgYXV0aG9y
aXR5U3RhcnQgPSBOU01heFJhbmdlKHNlcGFyYXRvclJhbmdlKTsKLSAgICAKLSAgICAvLyBGaW5k
IHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KLSAgICBOU1JhbmdlIGhvc3ROYW1lVGVybWluYXRvciA9
IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdFRlcm1pbmF0b3JzLmdldCgpLmdl
dCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZShhdXRob3JpdHlTdGFydCwgc3RyaW5nTGVu
Z3RoIC0gYXV0aG9yaXR5U3RhcnQpXTsKLSAgICB1bnNpZ25lZCBob3N0TmFtZUVuZCA9IGhvc3RO
YW1lVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8gc3RyaW5nTGVuZ3RoIDogaG9z
dE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uOwotICAgIAotICAgIC8vIEZpbmQgIkAiIGZvciB0aGUg
c3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KLSAgICBOU1JhbmdlIHVzZXJJbmZvVGVybWluYXRvciA9
IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIkAiIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZShh
dXRob3JpdHlTdGFydCwgaG9zdE5hbWVFbmQgLSBhdXRob3JpdHlTdGFydCldOwotICAgIHVuc2ln
bmVkIGhvc3ROYW1lU3RhcnQgPSB1c2VySW5mb1Rlcm1pbmF0b3IubG9jYXRpb24gPT0gTlNOb3RG
b3VuZCA/IGF1dGhvcml0eVN0YXJ0IDogTlNNYXhSYW5nZSh1c2VySW5mb1Rlcm1pbmF0b3IpOwot
ICAgIAotICAgIHJldHVybiBmKHN0cmluZywgTlNNYWtlUmFuZ2UoaG9zdE5hbWVTdGFydCwgaG9z
dE5hbWVFbmQgLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkpOwotfQotCi1zdGF0aWMgUmV0YWluUHRy
PE5TU3RyaW5nPiBtYXBIb3N0TmFtZXMoTlNTdHJpbmcgKnN0cmluZywgQk9PTCBlbmNvZGUpCi17
Ci0gICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVy
ZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3QgbmVlZCBtYXBwaW5nLgotICAg
IAotICAgIGlmIChlbmNvZGUgJiYgW3N0cmluZyBjYW5CZUNvbnZlcnRlZFRvRW5jb2Rpbmc6TlNB
U0NJSVN0cmluZ0VuY29kaW5nXSkKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICAKLSAgICAv
LyBNYWtlIGEgbGlzdCBvZiByYW5nZXMgdGhhdCBhY3R1YWxseSBuZWVkIG1hcHBpbmcuCi0gICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBob3N0TmFtZVJhbmdlczsKLSAgICBTdHJpbmdSYW5n
ZUFwcGxpZXJGdW5jdGlvbiBmID0gZW5jb2RlID8gY29sbGVjdFJhbmdlc1RoYXROZWVkRW5jb2Rp
bmcgOiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWREZWNvZGluZzsKLSAgICBhcHBseUhvc3ROYW1lRnVu
Y3Rpb25Ub1VSTFN0cmluZyhzdHJpbmcsIGYsIGhvc3ROYW1lUmFuZ2VzKTsKLSAgICBpZiAoIWhv
c3ROYW1lUmFuZ2VzKQotICAgICAgICByZXR1cm4gc3RyaW5nOwotCi0gICAgaWYgKCFbaG9zdE5h
bWVSYW5nZXMgY291bnRdKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIC8vIERvIHRo
ZSBtYXBwaW5nLgotICAgIGF1dG8gbXV0YWJsZUNvcHkgPSBhZG9wdE5TKFtzdHJpbmcgbXV0YWJs
ZUNvcHldKTsKLSAgICB1bnNpZ25lZCBpID0gW2hvc3ROYW1lUmFuZ2VzIGNvdW50XTsKLSAgICB3
aGlsZSAoaS0tKSB7Ci0gICAgICAgIE5TUmFuZ2UgaG9zdE5hbWVSYW5nZSA9IFtbaG9zdE5hbWVS
YW5nZXMgb2JqZWN0QXRJbmRleDppXSByYW5nZVZhbHVlXTsKLSAgICAgICAgTlNTdHJpbmcgKm1h
cHBlZEhvc3ROYW1lID0gZW5jb2RlID8gZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBo
b3N0TmFtZVJhbmdlKSA6IGRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgaG9zdE5hbWVS
YW5nZSk7Ci0gICAgICAgIFttdXRhYmxlQ29weSByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6aG9z
dE5hbWVSYW5nZSB3aXRoU3RyaW5nOm1hcHBlZEhvc3ROYW1lXTsKLSAgICB9Ci0gICAgcmV0dXJu
IG11dGFibGVDb3B5OwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmdCeVRy
aW1taW5nV2hpdGVzcGFjZShOU1N0cmluZyAqc3RyaW5nKQotewotICAgIGF1dG8gdHJpbW1lZCA9
IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwotICAgIENGU3RyaW5nVHJpbVdoaXRlc3Bh
Y2UoKF9fYnJpZGdlIENGTXV0YWJsZVN0cmluZ1JlZil0cmltbWVkLmdldCgpKTsKLSAgICByZXR1
cm4gdHJpbW1lZDsKLX0KLQotTlNVUkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9y
ZUNvbXBvbmVudChOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50KQotewot
ICAgIGlmICghVVJMKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIENGUmFuZ2UgZnJh
Z1JnID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVS
TCwgY29tcG9uZW50LCBudWxscHRyKTsKLSAgICBpZiAoZnJhZ1JnLmxvY2F0aW9uID09IGtDRk5v
dEZvdW5kKQotICAgICAgICByZXR1cm4gVVJMOwotCi0gICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllU
RVNfQlVGRkVSX0xFTkdUSD4gdXJsQnl0ZXMoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwotICAg
IENGSW5kZXggbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkws
IHVybEJ5dGVzLmRhdGEoKSwgdXJsQnl0ZXMuc2l6ZSgpKTsKLSAgICBpZiAobnVtQnl0ZXMgPT0g
LTEpIHsKLSAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJl
ZilVUkwsIG51bGxwdHIsIDApOwotICAgICAgICB1cmxCeXRlcy5ncm93KG51bUJ5dGVzKTsKLSAg
ICAgICAgQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCB1cmxCeXRlcy5kYXRh
KCksIG51bUJ5dGVzKTsKLSAgICB9Ci0KLSAgICBDRlVSTFJlZiByZXN1bHQgPSBDRlVSTENyZWF0
ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEs
IGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAg
ICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLmRhdGEo
KSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxw
dHIpOwotICAgICAgICAKLSAgICByZXR1cm4gcmVzdWx0ID8gQ0ZCcmlkZ2luZ1JlbGVhc2UocmVz
dWx0KSA6IFVSTDsKLX0KLQotc3RhdGljIE5TVVJMICpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVj
aWZpZXIoTlNVUkwgKlVSTCkKLXsKLSAgICByZXR1cm4gVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFj
dGVyQmVmb3JlQ29tcG9uZW50KFVSTCwga0NGVVJMQ29tcG9uZW50UmVzb3VyY2VTcGVjaWZpZXIp
OwotfQotCi1OU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkK
LXsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgTlNVUkwg
KnJlc3VsdCA9IG5pbDsKLSAgICBzaXplX3QgbGVuZ3RoID0gW2RhdGEgbGVuZ3RoXTsKLSAgICBp
ZiAobGVuZ3RoID4gMCkgewotICAgICAgICAvLyB3b3JrIGFyb3VuZCA8cmRhcjovLzQ0NzA3NzE+
OiBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKC4uLCBUUlVFKSBkb2Vzbid0IHJlbW92
ZSBub24tcGF0aCBjb21wb25lbnRzLgotICAgICAgICBiYXNlVVJMID0gVVJMQnlSZW1vdmluZ1Jl
c291cmNlU3BlY2lmaWVyKGJhc2VVUkwpOwotICAgICAgICAKLSAgICAgICAgY29uc3QgVUludDgg
KmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDgqPihbZGF0YSBieXRlc10pOwotICAgICAg
ICAKLSAgICAgICAgLy8gQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyB3b3VsZCBjb21w
bGFpbiB0byBjb25zb2xlIGlmIHdlIHBhc3NlZCBhIHBhdGggdG8gaXQuCi0gICAgICAgIGlmIChi
eXRlc1swXSA9PSAnLycgJiYgIWJhc2VVUkwpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAg
ICAgICAKLSAgICAgICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNv
ZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNv
bXBvbmVudHMKLSAgICAgICAgLy8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIs
IHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2Vz
LCB3aGljaAotICAgICAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9y
IGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIHNoaWZ0LWppcywgc28gd2UgZmFs
bCBiYWNrCi0gICAgICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluIDEgaW4gdGhvc2UgY2FzZXMu
Ci0gICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVV
UkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAgICAgIGlmICghcmVzdWx0
KQotICAgICAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNv
bHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBieXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMSwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlFUykpOwotICAgIH0gZWxz
ZQotICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwotCi0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLXN0YXRpYyBOU0RhdGEgKmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKE5T
U3RyaW5nICpzdHJpbmcpCi17Ci0gICAgTlNEYXRhICp1c2VyVHlwZWREYXRhID0gW3N0cmluZyBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgQVNTRVJUKHVzZXJU
eXBlZERhdGEpOwotICAgIAotICAgIGNvbnN0IFVJbnQ4KiBpbkJ5dGVzID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVUludDggKj4oW3VzZXJUeXBlZERhdGEgYnl0ZXNdKTsKLSAgICBpbnQgaW5MZW5ndGgg
PSBbdXNlclR5cGVkRGF0YSBsZW5ndGhdOwotICAgIGlmICghaW5MZW5ndGgpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgCi0gICAgY2hhciogb3V0Qnl0ZXMgPSBzdGF0aWNfY2FzdDxjaGFyICo+
KG1hbGxvYyhpbkxlbmd0aCAqIDMpKTsgLy8gbGFyZ2UgZW5vdWdoIHRvICUtZXNjYXBlIGV2ZXJ5
IGNoYXJhY3RlcgotICAgIGNoYXIqIHAgPSBvdXRCeXRlczsKLSAgICBpbnQgb3V0TGVuZ3RoID0g
MDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluTGVuZ3RoOyBpKyspIHsKLSAgICAgICAgVUlu
dDggYyA9IGluQnl0ZXNbaV07Ci0gICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA+PSAweDdmKSB7
Ci0gICAgICAgICAgICAqcCsrID0gJyUnOwotICAgICAgICAgICAgKnArKyA9IHVwcGVyTmliYmxl
VG9BU0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAgKnArKyA9IGxvd2VyTmliYmxlVG9BU0NJ
SUhleERpZ2l0KGMpOwotICAgICAgICAgICAgb3V0TGVuZ3RoICs9IDM7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAqcCsrID0gYzsKLSAgICAgICAgICAgIG91dExlbmd0aCsrOwotICAg
ICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0Nv
cHk6b3V0Qnl0ZXMgbGVuZ3RoOm91dExlbmd0aF07IC8vIGFkb3B0cyBvdXRCeXRlcwotfQotCi1O
U1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1VSTCAqbnNV
UkwpCi17Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBhdXRv
IG1hcHBlZFN0cmluZyA9IG1hcEhvc3ROYW1lcyhzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShz
dHJpbmcpLmdldCgpLCBZRVMpOwotICAgIGlmICghbWFwcGVkU3RyaW5nKQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgLy8gTGV0J3MgY2hlY2sgd2hldGhlciB0aGUgVVJMIGlzIGJvZ3VzLgot
ICAgIFVSTCB1cmwgeyBVUkwgeyBuc1VSTCB9LCBtYXBwZWRTdHJpbmcuZ2V0KCkgfTsKLSAgICBp
ZiAoIXVybC5jcmVhdGVDRlVSTCgpKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgLy8gRklY
TUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYwNTcKLSAgICAv
LyBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgdXJsLmNyZWF0ZUNGVVJMIGluc3RlYWQgb2YgdXNp
bmcgZGlyZWN0bHkgQ0ZVUkwgcGFyc2luZyByb3V0aW5lcy4KLSAgICBOU0RhdGEgKmRhdGEgPSBk
YXRhV2l0aFVzZXJUeXBlZFN0cmluZyhtYXBwZWRTdHJpbmcuZ2V0KCkpOwotICAgIGlmICghZGF0
YSkKLSAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAgICByZXR1
cm4gVVJMV2l0aERhdGEoZGF0YSwgbnNVUkwpOwotfQotCi1OU1VSTCAqVVJMV2l0aFVzZXJUeXBl
ZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKnN0cmluZywgTlNVUkwgKlVSTCkKLXsKLSAgICBp
ZiAoIXN0cmluZykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIE5TVVJMICpyZXN1bHQgPSBV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZywgVVJMKTsKLSAgICBpZiAoIXJlc3VsdCkgewot
ICAgICAgICBOU0RhdGEgKnJlc3VsdERhdGEgPSBkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhzdHJp
bmcpOwotICAgICAgICBpZiAoIXJlc3VsdERhdGEpCi0gICAgICAgICAgICByZXR1cm4gW05TVVJM
IFVSTFdpdGhTdHJpbmc6QCIiXTsKLSAgICAgICAgcmVzdWx0ID0gVVJMV2l0aERhdGEocmVzdWx0
RGF0YSwgVVJMKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgQk9P
TCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoTlNVUkwgKlVSTCkKLXsKLSAgICBDRlJh
bmdlIHJhbmdlV2l0aFNlcGFyYXRvcnM7Ci0gICAgQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25l
bnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwga0NGVVJMQ29tcG9uZW50UXVlcnksICZyYW5nZVdp
dGhTZXBhcmF0b3JzKTsKLSAgICBpZiAocmFuZ2VXaXRoU2VwYXJhdG9ycy5sb2NhdGlvbiAhPSBr
Q0ZOb3RGb3VuZCAmJiByYW5nZVdpdGhTZXBhcmF0b3JzLmxlbmd0aCA9PSAxKQotICAgICAgICBy
ZXR1cm4gWUVTOwotCi0gICAgcmV0dXJuIE5POwotfQotCi1OU0RhdGEgKmRhdGFGb3JVUkxDb21w
b25lbnRUeXBlKE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZSBjb21wb25lbnRUeXBlKQot
ewotICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IGFsbEJ5dGVzQnVm
ZmVyKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKLSAgICBDRkluZGV4IGJ5dGVzRmlsbGVkID0g
Q0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBhbGxCeXRlc0J1ZmZlci5kYXRh
KCksIGFsbEJ5dGVzQnVmZmVyLnNpemUoKSk7Ci0gICAgaWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7
Ci0gICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZVUkxHZXRCeXRlcygoX19icmlk
Z2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKLSAgICAgICAgYWxsQnl0ZXNCdWZmZXIuZ3Jv
dyhieXRlc1RvQWxsb2NhdGUpOwotICAgICAgICBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMo
KF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYWxsQnl0ZXNCdWZmZXIuZGF0YSgpLCBieXRlc1RvQWxs
b2NhdGUpOwotICAgIH0KLSAgICAKLSAgICBjb25zdCBDRlVSTENvbXBvbmVudFR5cGUgY29tcGxl
dGVVUkwgPSAoQ0ZVUkxDb21wb25lbnRUeXBlKS0xOwotICAgIENGUmFuZ2UgcmFuZ2U7Ci0gICAg
aWYgKGNvbXBvbmVudFR5cGUgIT0gY29tcGxldGVVUkwpIHsKLSAgICAgICAgcmFuZ2UgPSBDRlVS
TEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25l
bnRUeXBlLCBudWxscHRyKTsKLSAgICAgICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZv
dW5kKQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9IGVsc2UgewotICAgICAgICByYW5n
ZS5sb2NhdGlvbiA9IDA7Ci0gICAgICAgIHJhbmdlLmxlbmd0aCA9IGJ5dGVzRmlsbGVkOwotICAg
IH0KLSAgICAKLSAgICBOU0RhdGEgKmNvbXBvbmVudERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6YWxsQnl0ZXNCdWZmZXIuZGF0YSgpICsgcmFuZ2UubG9jYXRpb24gbGVuZ3RoOnJhbmdlLmxl
bmd0aF07IAotICAgIAotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gc3RhdGljX2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbY29tcG9uZW50RGF0YSBieXRlc10pOwotICAgIE5T
TXV0YWJsZURhdGEgKnJlc3VsdERhdGEgPSBbTlNNdXRhYmxlRGF0YSBkYXRhXTsKLSAgICAvLyBO
T1RFOiBhZGQgbGVhZGluZyAnPycgdG8gcXVlcnkgc3RyaW5ncyBub24temVybyBsZW5ndGggcXVl
cnkgc3RyaW5ncy4KLSAgICAvLyBOT1RFOiByZXRhaW4gcXVlc3Rpb24tbWFyayBvbmx5IHF1ZXJ5
IHN0cmluZ3MuCi0gICAgaWYgKGNvbXBvbmVudFR5cGUgPT0ga0NGVVJMQ29tcG9uZW50UXVlcnkp
IHsKLSAgICAgICAgaWYgKHJhbmdlLmxlbmd0aCA+IDAgfHwgaGFzUXVlc3Rpb25NYXJrT25seVF1
ZXJ5U3RyaW5nKFVSTCkpCi0gICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczoiPyIg
bGVuZ3RoOjFdOyAgICAKLSAgICB9Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZS5sZW5n
dGg7IGkrKykgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBieXRlc1tpXTsKLSAgICAgICAg
aWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKLSAgICAgICAgICAgIGNoYXIgZXNjYXBlZFsz
XTsKLSAgICAgICAgICAgIGVzY2FwZWRbMF0gPSAnJSc7Ci0gICAgICAgICAgICBlc2NhcGVkWzFd
ID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICBlc2NhcGVkWzJd
ID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICBbcmVzdWx0RGF0
YSBhcHBlbmRCeXRlczplc2NhcGVkIGxlbmd0aDozXTsgICAgCi0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBjaGFyIGJbMV07Ci0gICAgICAgICAgICBiWzBdID0gYzsKLSAgICAgICAgICAg
IFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmIgbGVuZ3RoOjFdOyAgICAKLSAgICAgICAgfSAgICAg
ICAgICAgICAgIAotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVzdWx0RGF0YTsKLX0KLQotc3Rh
dGljIE5TVVJMICpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3RlcihO
U1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50KQotewotICAgIENGUmFuZ2Ug
cmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCBjb21wb25lbnQsIDApOwotICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuIFVSTDsKLSAgICAKLSAgICAvLyBSZW1vdmUgb25lIHN1YnNlcXVl
bnQgY2hhcmFjdGVyLgotICAgIHJhbmdlLmxlbmd0aCsrOwotCi0gICAgVmVjdG9yPFVJbnQ4LCBV
UkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYnVmZmVyKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsK
LSAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLSAgICBpZiAobnVtQnl0ZXMgPT0g
LTEpIHsKLSAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJl
ZilVUkwsIG51bGxwdHIsIDApOwotICAgICAgICBidWZmZXIuZ3JvdyhudW1CeXRlcyk7Ci0gICAg
ICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLmRhdGEoKSwg
bnVtQnl0ZXMpOwotICAgIH0KLSAgICBVSW50OCogdXJsQnl0ZXMgPSBidWZmZXIuZGF0YSgpOwot
ICAgICAgICAKLSAgICBpZiAobnVtQnl0ZXMgPCByYW5nZS5sb2NhdGlvbikKLSAgICAgICAgcmV0
dXJuIFVSTDsKLSAgICBpZiAobnVtQnl0ZXMgPCByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0
aCkKLSAgICAgICAgcmFuZ2UubGVuZ3RoID0gbnVtQnl0ZXMgLSByYW5nZS5sb2NhdGlvbjsKLSAg
ICAgICAgCi0gICAgbWVtbW92ZSh1cmxCeXRlcyArIHJhbmdlLmxvY2F0aW9uLCB1cmxCeXRlcyAr
IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoLCBudW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9u
ICsgcmFuZ2UubGVuZ3RoKTsKLSAgICAKLSAgICBDRlVSTFJlZiByZXN1bHQgPSBDRlVSTENyZWF0
ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtD
RlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAg
IHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRl
cyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpOwot
ICAgICAgICAgICAgICAgIAotICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShy
ZXN1bHQpIDogVVJMOwotfQotCi1OU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICpV
UkwpCi17Ci0gICAgcmV0dXJuIFVSTEJ5UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hh
cmFjdGVyKFVSTCwga0NGVVJMQ29tcG9uZW50VXNlckluZm8pOwotfQotCiBOU1VSTCAqVVJMQnlD
YW5vbmljYWxpemluZ1VSTChOU1VSTCAqVVJMKQogewogICAgIFJldGFpblB0cjxOU1VSTFJlcXVl
c3Q+IHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpV
UkxdKTsKQEAgLTEwNDksMjAzICs1Nyw0IEBAIE5TVVJMICpVUkxCeUNhbm9uaWNhbGl6aW5nVVJM
KE5TVVJMICpVUkwKICAgICByZXR1cm4gW1tuZXdVUkwgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9
CiAKLU5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICpVUkwpCi17Ci0gICAgVUludDggKmJ1
ZmZlciA9IChVSW50OCAqKW1hbGxvYyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJ
bmRleCBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwg
YnVmZmVyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgaWYgKGJ5dGVzRmlsbGVkID09
IC0xKSB7Ci0gICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZVUkxHZXRCeXRlcygo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKLSAgICAgICAgYnVmZmVyID0gKFVJ
bnQ4ICopcmVhbGxvYyhidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAgIGJ5dGVzRmls
bGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIsIGJ5dGVz
VG9BbGxvY2F0ZSk7Ci0gICAgICAgIEFTU0VSVChieXRlc0ZpbGxlZCA9PSBieXRlc1RvQWxsb2Nh
dGUpOwotICAgIH0KLSAgICAKLSAgICAvLyBidWZmZXIgaXMgYWRvcHRlZCBieSB0aGUgTlNEYXRh
Ci0gICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5OmJ1ZmZlciBs
ZW5ndGg6Ynl0ZXNGaWxsZWQgZnJlZVdoZW5Eb25lOllFU107Ci0gICAgCi0gICAgTlNVUkwgKmJh
c2VVUkwgPSAoX19icmlkZ2UgTlNVUkwgKilDRlVSTEdldEJhc2VVUkwoKF9fYnJpZGdlIENGVVJM
UmVmKVVSTCk7Ci0gICAgaWYgKGJhc2VVUkwpCi0gICAgICAgIHJldHVybiBvcmlnaW5hbFVSTERh
dGEoVVJMV2l0aERhdGEoZGF0YSwgYmFzZVVSTCkpOwotICAgIHJldHVybiBkYXRhOwotfQotCi1z
dGF0aWMgQ0ZTdHJpbmdSZWYgY3JlYXRlU3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJz
KENGU3RyaW5nUmVmIHN0cmluZykKLXsKLSAgICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0
TGVuZ3RoKHN0cmluZyk7Ci0gICAgVmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdU
SD4gc291cmNlQnVmZmVyKGxlbmd0aCk7Ci0gICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmlu
ZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgc291cmNlQnVmZmVyLmRhdGEoKSk7Ci0gICAgCi0g
ICAgVmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gb3V0QnVmZmVyOwotICAg
IAotICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgQ0ZJ
bmRleCBpID0gMDsKLSAgICB3aGlsZSAoaSA8IGxlbmd0aCkgewotICAgICAgICBVQ2hhcjMyIGM7
Ci0gICAgICAgIFUxNl9ORVhUKHNvdXJjZUJ1ZmZlciwgaSwgbGVuZ3RoLCBjKQotICAgICAgICAK
LSAgICAgICAgaWYgKGlzTG9va2FsaWtlQ2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LCBjKSkg
ewotICAgICAgICAgICAgdWludDhfdCB1dGY4QnVmZmVyWzRdOwotICAgICAgICAgICAgQ0ZJbmRl
eCBvZmZzZXQgPSAwOwotICAgICAgICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOwotICAgICAg
ICAgICAgVThfQVBQRU5EKHV0ZjhCdWZmZXIsIG9mZnNldCwgNCwgYywgZmFpbHVyZSkKLSAgICAg
ICAgICAgIEFTU0VSVCghZmFpbHVyZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAo
Q0ZJbmRleCBqID0gMDsgaiA8IG9mZnNldDsgKytqKSB7Ci0gICAgICAgICAgICAgICAgb3V0QnVm
ZmVyLmFwcGVuZCgnJScpOwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXBwZXJO
aWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAgICAgIG91
dEJ1ZmZlci5hcHBlbmQobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkp
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgVUNoYXIgdXRm
MTZCdWZmZXJbMl07Ci0gICAgICAgICAgICBDRkluZGV4IG9mZnNldCA9IDA7Ci0gICAgICAgICAg
ICBVQm9vbCBmYWlsdXJlID0gZmFsc2U7Ci0gICAgICAgICAgICBVMTZfQVBQRU5EKHV0ZjE2QnVm
ZmVyLCBvZmZzZXQsIDIsIGMsIGZhaWx1cmUpCi0gICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUp
OwotICAgICAgICAgICAgZm9yIChDRkluZGV4IGogPSAwOyBqIDwgb2Zmc2V0OyArK2opCi0gICAg
ICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCh1dGYxNkJ1ZmZlcltqXSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcHJldmlvdXNDb2RlUG9pbnQgPSBjOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4g
Q0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCBvdXRCdWZmZXIuZGF0YSgpLCBv
dXRCdWZmZXIuc2l6ZSgpKTsKLX0KLQotTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJM
ICpVUkwpCi17Ci0gICAgTlNEYXRhICpkYXRhID0gb3JpZ2luYWxVUkxEYXRhKFVSTCk7Ci0gICAg
Y29uc3QgdW5zaWduZWQgY2hhciAqYmVmb3JlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KFtkYXRhIGJ5dGVzXSk7Ci0gICAgaW50IGxlbmd0aCA9IFtkYXRhIGxlbmd0aF07Ci0g
ICAgCi0gICAgYm9vbCBtYXlOZWVkSG9zdE5hbWVEZWNvZGluZyA9IGZhbHNlOwotICAgIAotICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSBiZWZvcmU7Ci0gICAgaW50IGJ1ZmZlckxlbmd0aCA9
IChsZW5ndGggKiAzKSArIDE7Ci0gICAgVmVjdG9yPGNoYXIsIFVSTF9CWVRFU19CVUZGRVJfTEVO
R1RIPiBhZnRlcihidWZmZXJMZW5ndGgpOyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZl
cnkgY2hhcmFjdGVyCi0gICAgY2hhciAqcSA9IGFmdGVyLmRhdGEoKTsKLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07
Ci0gICAgICAgIC8vIHVuZXNjYXBlIGVzY2FwZSBzZXF1ZW5jZXMgdGhhdCBpbmRpY2F0ZSBieXRl
cyBncmVhdGVyIHRoYW4gMHg3ZgotICAgICAgICBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVu
Z3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlz
QVNDSUlIZXhEaWdpdChwW2kgKyAyXSkpIHsKLSAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlI
ZXhWYWx1ZShwW2kgKyAxXSwgcFtpICsgMl0pOwotICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7
Ci0gICAgICAgICAgICAgICAgLy8gdW5lc2NhcGUKLSAgICAgICAgICAgICAgICAqcSsrID0gdTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90IHVuZXNjYXBl
Ci0gICAgICAgICAgICAgICAgKnErKyA9IHBbaV07Ci0gICAgICAgICAgICAgICAgKnErKyA9IHBb
aSArIDFdOwotICAgICAgICAgICAgICAgICpxKysgPSBwW2kgKyAyXTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpxKysg
PSBjOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBDaGVjayBmb3IgInhuLS0iIGluIGFu
IGVmZmljaWVudCwgbm9uLWNhc2Utc2Vuc2l0aXZlLCB3YXkuCi0gICAgICAgICAgICBpZiAoYyA9
PSAnLScgJiYgaSA+PSAzICYmICFtYXlOZWVkSG9zdE5hbWVEZWNvZGluZyAmJiAocVstNF0gfCAw
eDIwKSA9PSAneCcgJiYgKHFbLTNdIHwgMHgyMCkgPT0gJ24nICYmIHFbLTJdID09ICctJykKLSAg
ICAgICAgICAgICAgICBtYXlOZWVkSG9zdE5hbWVEZWNvZGluZyA9IHRydWU7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgKnEgPSAnXDAnOwotICAgIAotICAgIC8vIENoZWNrIHN0cmluZyB0byBzZWUg
aWYgaXQgY2FuIGJlIGNvbnZlcnRlZCB0byBkaXNwbGF5IHVzaW5nIFVURi04ICAKLSAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IHJlc3VsdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzph
ZnRlci5kYXRhKCldOwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIC8vIENvdWxkIG5vdCBj
b252ZXJ0IHRvIFVURi04LgotICAgICAgICAvLyBDb252ZXJ0IGNoYXJhY3RlcnMgZ3JlYXRlciB0
aGFuIDB4N2YgdG8gZXNjYXBlIHNlcXVlbmNlcy4KLSAgICAgICAgLy8gU2hpZnQgY3VycmVudCBz
dHJpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYnVmZmVyCi0gICAgICAgIC8vIHRoZW4gd2Ugd2lsbCBj
b3B5IGJhY2sgYnl0ZXMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgCi0gICAgICAgIC8vIGFz
IHdlIGNvbnZlcnQuCi0gICAgICAgIGludCBhZnRlcmxlbmd0aCA9IHEgLSBhZnRlci5kYXRhKCk7
Ci0gICAgICAgIGNoYXIgKnAgPSBhZnRlci5kYXRhKCkgKyBidWZmZXJMZW5ndGggLSBhZnRlcmxl
bmd0aCAtIDE7Ci0gICAgICAgIG1lbW1vdmUocCwgYWZ0ZXIuZGF0YSgpLCBhZnRlcmxlbmd0aCAr
IDEpOyAvLyBjb3BpZXMgdHJhaWxpbmcgJ1wwJwotICAgICAgICBjaGFyICpxID0gYWZ0ZXIuZGF0
YSgpOwotICAgICAgICB3aGlsZSAoKnApIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9
ICpwOwotICAgICAgICAgICAgaWYgKGMgPiAweDdmKSB7Ci0gICAgICAgICAgICAgICAgKnErKyA9
ICclJzsKLSAgICAgICAgICAgICAgICAqcSsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQo
Yyk7Ci0gICAgICAgICAgICAgICAgKnErKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMp
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgKnErKyA9ICpwOwotICAgICAg
ICAgICAgcCsrOwotICAgICAgICB9Ci0gICAgICAgICpxID0gJ1wwJzsKLSAgICAgICAgcmVzdWx0
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFmdGVyLmRhdGEoKV07Ci0gICAgfQot
ICAgIAotICAgIGlmIChtYXlOZWVkSG9zdE5hbWVEZWNvZGluZykgewotICAgICAgICAvLyBGSVhN
RTogSXMgaXQgZ29vZCB0byBpZ25vcmUgdGhlIGZhaWx1cmUgb2YgbWFwSG9zdE5hbWVzIGFuZCBr
ZWVwIHJlc3VsdCBpbnRhY3Q/Ci0gICAgICAgIGF1dG8gbWFwcGVkUmVzdWx0ID0gbWFwSG9zdE5h
bWVzKHJlc3VsdC5nZXQoKSwgTk8pOwotICAgICAgICBpZiAobWFwcGVkUmVzdWx0KQotICAgICAg
ICAgICAgcmVzdWx0ID0gbWFwcGVkUmVzdWx0OwotICAgIH0KLQotICAgIHJlc3VsdCA9IFtyZXN1
bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107Ci0gICAgcmV0dXJuIENG
QnJpZGdpbmdSZWxlYXNlKGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzdWx0LmdldCgpKSk7Ci19Ci0KLUJPT0wgaXNVc2VyVmlz
aWJsZVVSTChOU1N0cmluZyAqc3RyaW5nKQotewotICAgIEJPT0wgdmFsaWQgPSBZRVM7Ci0gICAg
Ly8gZ2V0IGJ1ZmZlcgotICAgIAotICAgIGNoYXIgc3RhdGljX2J1ZmZlclsxMDI0XTsKLSAgICBj
b25zdCBjaGFyICpwOwotICAgIEJPT0wgc3VjY2VzcyA9IENGU3RyaW5nR2V0Q1N0cmluZygoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpc3RyaW5nLCBzdGF0aWNfYnVmZmVyLCAxMDIzLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgpOwotICAgIHAgPSBzdWNjZXNzID8gc3RhdGljX2J1ZmZlciA6IFtzdHJpbmcg
VVRGOFN0cmluZ107Ci0gICAgCi0gICAgaW50IGxlbmd0aCA9IHN0cmxlbihwKTsKLSAgICAKLSAg
ICAvLyBjaGVjayBmb3IgY2hhcmFjdGVycyA8PSAweDIwIG9yID49MHg3ZiwgJS1lc2NhcGUgc2Vx
dWVuY2VzIG9mICU3ZiwgYW5kIHhuLS0sIHRoZXNlCi0gICAgLy8gYXJlIHRoZSB0aGluZ3MgdGhh
dCB3aWxsIGxlYWQgX3dlYl91c2VyVmlzaWJsZVN0cmluZyB0byBhY3R1YWxseSBjaGFuZ2UgdGhp
bmdzLgotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdW5z
aWduZWQgY2hhciBjID0gcFtpXTsKLSAgICAgICAgLy8gZXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVy
cywgc3BhY2UsIGFuZCBkZWxldGUKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID09IDB4N2Yp
IHsKLSAgICAgICAgICAgIHZhbGlkID0gTk87Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fSBlbHNlIGlmIChjID09ICclJyAmJiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0
KHBbaSArIDFdKSkgJiYgaSArIDIgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDJd
KSkgewotICAgICAgICAgICAgYXV0byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSArIDFdLCBwW2kg
KyAyXSk7Ci0gICAgICAgICAgICBpZiAodSA+IDB4N2YpIHsKLSAgICAgICAgICAgICAgICB2YWxp
ZCA9IE5POwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaSArPSAyOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4
bi0tIiBpbiBhbiBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgotICAgICAgICAg
ICAgaWYgKGMgPT0gJy0nICYmIGkgPj0gMyAmJiAocFtpIC0gM10gfCAweDIwKSA9PSAneCcgJiYg
KHBbaSAtIDJdIHwgMHgyMCkgPT0gJ24nICYmIHBbaSAtIDFdID09ICctJykgewotICAgICAgICAg
ICAgICAgIHZhbGlkID0gTk87Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHZhbGlkOwotfQotCi1OU1Jhbmdl
IHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICBOU1JhbmdlIGNvbG9u
ID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiOiJdOwotICAgIGlmIChjb2xvbi5sb2NhdGlvbiAh
PSBOU05vdEZvdW5kICYmIGNvbG9uLmxvY2F0aW9uID4gMCkgewotICAgICAgICBOU1JhbmdlIHNj
aGVtZSA9IHswLCBjb2xvbi5sb2NhdGlvbn07Ci0gICAgICAgIC8qCi0gICAgICAgICBUaGlzIHN0
dWZmIGlzIHZlcnkgZXhwZW5zaXZlLiAgMTAtMTUgbXNlYyBvbiBhIDJ4MS4yR0h6LiAgSWYgbm90
IGNhY2hlZCBpdCBzd2FtcHMKLSAgICAgICAgIGV2ZXJ5dGhpbmcgZWxzZSB3aGVuIGFkZGluZyBp
dGVtcyB0byB0aGUgYXV0b2NvbXBsZXRlIERCLiAgTWFrZXMgbWUgd29uZGVyIGlmIHdlCi0gICAg
ICAgICBldmVuIG5lZWQgdG8gZW5mb3JjZSB0aGUgY2hhcmFjdGVyIHNldCBoZXJlLgotICAgICAg
ICAgKi8KLSAgICAgICAgTlNTdHJpbmcgKmFjY2VwdGFibGVDaGFyYWN0ZXJzID0gQCJBQkNERUZH
SElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsu
LSI7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJT
ZXQ+PiBJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0KFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVy
U2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzphY2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52ZXJ0ZWRT
ZXRdKTsKLSAgICAgICAgTlNSYW5nZSBpbGxlZ2FscyA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3Rl
ckZyb21TZXQ6SW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAg
cmFuZ2U6c2NoZW1lXTsKLSAgICAgICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90Rm91
bmQpCi0gICAgICAgICAgICByZXR1cm4gc2NoZW1lOwotICAgIH0KLSAgICByZXR1cm4gTlNNYWtl
UmFuZ2UoTlNOb3RGb3VuZCwgMCk7Ci19Ci0KLUJPT0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNT
dHJpbmcgKnN0cmluZykKLXsKLSAgICAvLyBUcmltIHdoaXRlc3BhY2UgYmVjYXVzZSBfd2ViX1VS
TFdpdGhTdHJpbmcgYWxsb3dzIHdoaXRlc3BhY2UuCi0gICAgcmV0dXJuIHJhbmdlT2ZVUkxTY2hl
bWUoc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2Uoc3RyaW5nKS5nZXQoKSkubG9jYXRpb24gIT0g
TlNOb3RGb3VuZDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVu
ZHBvaW50Q29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlICJSVENCdW5kbGVQb2xpY3ku
aCIKICNpbmNsdWRlICJSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0
aWVzLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI3ByYWdtYSBvbmNlCisKICNpbmNs
dWRlIDxDb3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0LmgJKHJldmlzaW9uIDIz
Njc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgJ
KHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgQmxvYlBhcnQ7CiBj
bGFzcyBCbG9iUmVnaXN0cnk7Ci1jbGFzcyBVUkw7CiAKIFdFQkNPUkVfRVhQT1JUIEJsb2JSZWdp
c3RyeSYgYmxvYlJlZ2lzdHJ5KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTQgKzMzLDEzIEBACiAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2lu
Y2x1ZGUgIkJsb2JSZWdpc3RyeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xh
c3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vy
cy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgJKHJldmlzaW9uIDIzNjc2NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5jbHVkZSAiQ29v
a2llc1N0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiU2FtZVNpdGVJbmZvLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAkocmV2aXNpb24gMjM2NzY2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJDcmVkZW50aWFsU3Rv
cmFnZS5oIgogCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1
ZGUgIldlYkNvcmVUaHJlYWQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRl
ZiBDcmVkZW50aWFsU3RvcmFnZV9oCi0jZGVmaW5lIENyZWRlbnRpYWxTdG9yYWdlX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25T
cGFjZUhhc2guaCIKQEAgLTM1LDcgKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBVUkw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKIGNsYXNzIENyZWRlbnRpYWxTdG9y
YWdlIHsKQEAgLTcwLDUgKzY4LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIENyZWRlbnRpYWxTdG9yYWdlX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNv
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsOSBAQAogI2luY2x1ZGUgIkhUVFBQ
YXJzZXJzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29k
aW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgJKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOSArMjMsNyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRGF0YVVSTERlY29kZXJfaAot
I2RlZmluZSBEYXRhVVJMRGVjb2Rlcl9oCi0KKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0zOCw3ICszNiw2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsK
IAogbmFtZXNwYWNlIERhdGFVUkxEZWNvZGVyIHsKIApAQCAtNjEsNSArNTgsMyBAQCB2b2lkIGRl
Y29kZShjb25zdCBVUkwmLCBjb25zdCBTY2hlZHVsZUNvCiB9CiAKIH0KLQotI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCShyZXZpc2lvbiAy
MzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwLDkgKzIwLDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QmxvYkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Qcm94eVNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUHJveHlTZXJ2ZXIuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNSAr
MjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIFByb3h5U2VydmVyX2gKLSNkZWZpbmUgUHJveHlTZXJ2ZXJfaAorI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTmV0d29ya2luZ0Nv
bnRleHQ7CiAKIC8vIFJlcHJlc2VudHMgYSBzaW5nbGUgcHJveHkgc2VydmVyLgpAQCAtNzUsNSAr
NzMsMyBAQCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5CiBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVmVjdG9yPFByb3h5U2VydmVyPiYpOwogICAg
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUHJveHlTZXJ2ZXJfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJv
ckJhc2UuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlUmVzcG9uc2UoCiAgICAgaWYgKHJl
c3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsK
ICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7Ci0gICAg
ICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1
cmwucHJvdG9jb2woKSkpIHsKKyAgICAgICAgaWYgKHBvcnQgJiYgIVdURjo6aXNEZWZhdWx0UG9y
dEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7CiAgICAgICAgICAg
ICBjYW5jZWwoKTsKICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gIkNhbmNlbGxlZCBsb2Fk
IGZyb20gJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNh
dXNlIGl0IGlzIHVzaW5nIEhUVFAvMC45LiI7CiAgICAgICAgICAgICBkLT5tX2NsaWVudC0+ZGlk
RmFpbCh0aGlzLCB7IFN0cmluZygpLCAwLCB1cmwsIG1lc3NhZ2UgfSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xh
c3MgRnJhbWU7Ci1jbGFzcyBVUkw7CiBjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKIGNsYXNzIFBy
b3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCShy
ZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDYgQEAgT0JKQ19D
TEFTUyBOU0NhY2hlZFVSTFJlc3BvbnNlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwotY2xhc3MgVVJMOwogY2xh
c3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDgsNyArMTQ4LDcgQEAgUmVzb3VyY2VSZXF1ZXN0IFJlc291cmNlUmVxdWVz
dEJhc2U6OnJlZAogICAgICAgICByZXF1ZXN0Lm1faHR0cEhlYWRlckZpZWxkcy5yZW1vdmUoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRMZW5ndGgpOwogICAgIH0KIAotICAgIGlmIChzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ICYmICFyZXF1ZXN0LnVybCgpLnByb3RvY29s
SXMoImh0dHBzIikgJiYgV2ViQ29yZTo6cHJvdG9jb2xJcyhyZXF1ZXN0Lmh0dHBSZWZlcnJlcigp
LCAiaHR0cHMiKSkKKyAgICBpZiAoc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCAmJiAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpICYmIFdURjo6cHJvdG9j
b2xJcyhyZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSkKICAgICAgICAgcmVxdWVzdC5j
bGVhckhUVFBSZWZlcnJlcigpOwogCiAgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1
YWwocmVxdWVzdC51cmwoKSwgcmVkaXJlY3RSZXNwb25zZS51cmwoKSkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNp
bmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
OCArMzEsOCBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJOZXR3b3Jr
TG9hZE1ldHJpY3MuaCIKICNpbmNsdWRlICJQYXJzZWRDb250ZW50UmFuZ2UuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGUuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jl
c29sdmVRdWV1ZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAkocmV2aXNpb24gMjM2NzY2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMSBAQAogCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNp
ZiBQTEFURk9STShXSU4pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAko
cmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEyICs0
MiwxMiBAQAogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgiCiAjaW5j
bHVkZSAiQ29va2llc1N0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4K
ICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHBh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUg
PHd0Zi9Tb2Z0TGlua2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
Y2YvVHlwZUNhc3RzQ0YuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5
U2VydmVyQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJveHlTZXJ2ZXIu
aCIKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQko
cmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEg
KzMxLDExIEBACiAjaW1wb3J0ICJDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIkNv
b2tpZXNTdHJhdGVneS5oIgogI2ltcG9ydCAiU2FtZVNpdGVJbmZvLmgiCi0jaW1wb3J0ICJVUkwu
aCIKICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxv
Y2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAjaW1wb3J0IDx3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBAaW50ZXJmYWNlIE5TVVJMICgpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJy
b3JNYWMubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDExICsy
NiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUVycm9yLmgiCiAK
LSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ0ZFcnJvci5oPgogI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogQGludGVyZmFjZSBOU0Vy
cm9yIChXZWJFeHRyYXMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRF
bmNvZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEVuY29kaW5nLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEVuY29kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEzICsyNSwxMyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC90ZXh0L1Vu
ZW5jb2RhYmxlSGFuZGxpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4dEVu
Y29kaW5nIDogcHVibGljIFVSTFRleHRFbmNvZGluZyB7CitjbGFzcyBUZXh0RW5jb2RpbmcgOiBw
dWJsaWMgV1RGOjpVUkxUZXh0RW5jb2RpbmcgewogcHVibGljOgogICAgIFRleHRFbmNvZGluZygp
ID0gZGVmYXVsdDsKICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29uc3QgY2hhciog
bmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAkocmV2aXNpb24gMjM2
NzY2KQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDEwICsyMCwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBAIGNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBT
Y3JvbGxiYXI7Ci1jbGFzcyBVUkw7CiAKIGVudW0gY2xhc3MgSGl0VGVzdFByb2dyZXNzIHsgU3Rv
cCwgQ29udGludWUgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0
dGFjaG1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJBdHRhY2htZW50LmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4
IEBACiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQXR0YWNobWVu
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9h
ZGVyLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCB2b2lkIFNWR0ltYWdl
TG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCgpCiBTdHJpbmcgU1ZHSW1hZ2VMb2FkZXI6OnNvdXJj
ZVVSSShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZSkgY29uc3QKIHsKICAgICBVUkwgYmFz
ZSA9IGVsZW1lbnQoKS5iYXNlVVJJKCk7Ci0gICAgaWYgKGJhc2UgIT0gYmxhbmtVUkwoKSkKKyAg
ICBpZiAoYmFzZSAhPSBXVEY6OmJsYW5rVVJMKCkpCiAgICAgICAgIHJldHVybiBVUkwoYmFzZSwg
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZSkpLnN0cmluZygpOwog
ICAgIHJldHVybiBlbGVtZW50KCkuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdB
bmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcg
QEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdBdHRyaWJ1dGVPd25lclByb3h5LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHJldmlzaW9uIDIz
Njc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdl
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNh
Y2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Q2FjaGUuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQCBjbGFzcyBM
YXlvdXRTaXplOwogY2xhc3MgU1ZHSW1hZ2U7CiBjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsK
IGNsYXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgU1ZHSW1hZ2VDYWNoZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAkocmV2aXNpb24gMjM2NzY2
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIK
ICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIlNWR0ltYWdlLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUw
LDcgKzQ1MCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFAKICAg
ICAgICAgICAgIGJhY2tpbmctPnNldFRpbGVTaXplVXBkYXRlRGVsYXlEaXNhYmxlZEZvclRlc3Rp
bmcoZmFsc2UpOwogICAgIH0KIAotICAgIFdlYkNvcmU6OmNsZWFyRGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcoKTsKKyAgICBXVEY6OmNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKTsKICAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoVmVj
dG9yPFN0cmluZz4oKSk7CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpz
ZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoZmFsc2UpOwogICAgIFdlYkNvcmU6OkRlcHJlY2F0ZWRH
bG9iYWxTZXR0aW5nczo6c2V0VXNlc01vY2tTY3JvbGxBbmltYXRvcihmYWxzZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMy
LDggQEAKICNpbXBvcnQgIkV2ZW50SGFuZGxlci5oIgogI2ltcG9ydCAiSGl0VGVzdFJlc3VsdC5o
IgogI2ltcG9ydCAiUmFuZ2UuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMu
aD4KIAogI2lmIFBMQVRGT1JNKElPUykKIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCkBAIC00
NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIEludGVybmFsczo6dXNl
clZpc2libGVTdHJpbmcoY29uc3QgRE9NVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OnVzZXJWaXNpYmxlU3RyaW5nKHVybC5ocmVmKCkpOworICAgIHJldHVybiBXVEY6OnVzZXJWaXNp
YmxlU3RyaW5nKHVybC5ocmVmKCkpOwogfQogCiBib29sIEludGVybmFsczo6dXNlclByZWZlcnNS
ZWR1Y2VkTW90aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgs
NyBAQCB2b2lkIE1vY2tDb250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QoCiAKICAgICBVUkwg
bW9kaWZpZWRSZXF1ZXN0VVJMIHsgcmVxdWVzdC51cmwoKSwgbW9kaWZpZWRSZXF1ZXN0VVJMU3Ry
aW5nIH07CiAgICAgaWYgKCFtb2RpZmllZFJlcXVlc3RVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAg
IExPRyhDb250ZW50RmlsdGVyaW5nLCAiTW9ja0NvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZl
cnQgJXMgdG8gYSBXZWJDb3JlOjpVUkwuXG4iLCBtb2RpZmllZFJlcXVlc3RVUkwuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIk1vY2tDb250
ZW50RmlsdGVyIGZhaWxlZCB0byBjb252ZXJ0ICVzIHRvIGEgIFVSTC5cbiIsIG1vZGlmaWVkUmVx
dWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBA
QAogI2luY2x1ZGUgIk1vY2tQYXltZW50TWV0aG9kLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBheW1lbnRDb29yZGluYXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0
U3VwcG9ydC5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEy
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIu
aCIKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1lLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcklubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZVRlc3RTdXBwb3J0IHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCShyZXZpc2lvbiAy
MzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDggKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBVUkw7Ci0KIGNsYXNzIEFic3RyYWN0V29ya2VyIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJh
Y3RXb3JrZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBACiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXAuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJXb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlUHJveHkuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDcgKzQyLDYgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7Ci1jbGFzcyBVUkw7CiBjbGFz
cyBXb3JrZXI7CiAKIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2VyIGNvbnRleHQuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCShy
ZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3Rv
clByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV29y
a2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9u
LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9j
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxMSBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAko
cmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1ZGUgIlRocmVhZEds
b2JhbERhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQCBjbGFzcyBT
ZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVyczsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vdGlmaWNhdGlvbkNsaWVu
dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmgJKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU1ZhbHVlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCShyZXZpc2lvbiAy
MzY3NjYpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRlci5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChm
bXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZp
Y2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OiIgZm10LCB0aGlzLCAjI19f
VkFfQVJHU19fKQogI2RlZmluZSBDT05UQUlORVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OiIgZm10LCB0
aGlzLCAjI19fVkFfQVJHU19fKQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAkocmV2aXNpb24gMjM2
NzY2KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTEgQEAKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgIldvcmtl
clR5cGUuaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgJKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCShyZXZpc2lvbiAyMzY3NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0
aW9ucy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIK
KyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
IAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDIsNyArMTAy
LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXlIYXNoIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXk+IHsKICAgICBzdGF0aWMgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBl
bXB0eVZhbHVlKCkgeyByZXR1cm4gV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eTo6ZW1wdHlLZXkoKTsgfQogCi0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVl
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgc2xvdC5zZXRT
Y29wZShXZWJDb3JlOjpVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7IH0KKyAgICBzdGF0aWMg
dm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgc2xvdCkgeyBzbG90LnNldFNjb3BlKFVSTChIYXNoVGFibGVEZWxldGVkVmFsdWUp
KTsgfQogICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgcmV0dXJuIHNsb3Quc2NvcGUoKS5pc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJG
b3JtRGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHd0Zi9WYXJp
YW50Lmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNjEgQEAKKzIwMTgtMTAtMDIgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3Zl
IFVSTCBmcm9tIFdlYkNvcmUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2Nv
YS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2Fk
Q2hlY2tlcjo6c2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZENoZWNrZXI6OnVybCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
d3JpdGVCbG9iVG9GaWxlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpw
cmVjb25uZWN0VG8pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojpsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24pOgorICAgICAgICAoV2Vi
S2l0Ojpsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldFN0
cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jkcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RhdGlz
dGljczo6cmVjb3JkUmV0cmlldmVkQ2FjaGVkRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlN0YXRpc3RpY3M6OnJlY29yZFJldmFsaWRhdGlvblN1Y2Nlc3MpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5Lmg6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VJbmZvOjpmaXJzdFBh
cnR5Rm9yQ29va2llcyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6
OlJlcXVlc3Q6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXNwb25zZTo6b3BlcmF0b3IgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJl
OjpFcnJvcjo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjb25zdCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6TWFuYWdlcjo6ZmluZEJlc3RGdXp6eU1hdGNo
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6OmZ1enp5TWF0Y2hV
UkxzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6OnVybElkZW50
aWZ5aW5nQ29tbW9uRG9tYWluKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05l
dHdvcmtDYXB0dXJlTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0
dXJlOjpSZXNvdXJjZTo6dXJsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6OlJl
c291cmNlOjpxdWVyeVBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1
cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0
d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2ZUNoYWxsZW5nZTpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Q
cm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpvcGVuQ0ZVUkxSZWYpOgorICAgICAgICAo
V2ViS2l0OjpyZXBsYWNlZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0aW9u
c19jb25maWd1cmF0aW9uX2Vycm9yKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVSTC5oOgor
ICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTDo6ZXF1YWxzKToK
KyAgICAgICAgKEFQSTo6VVJMOjpVUkwpOgorICAgICAgICAoQVBJOjpVUkw6OnVybCBjb25zdCk6
CisgICAgICAgIChBUEk6OlVSTDo6cGFyc2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAg
ICogU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaDoKKyAgICAgICAgKEFQSTo6
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzVVJMIGNvbnN0KToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxS
ZXNwb25zZS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW06CisgICAg
ICAgIChXS1VSTENyZWF0ZVdpdGhDRlVSTCk6CisgICAgICAgIChXS1VSTENvcHlDRlVSTCk6Cisg
ICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6
V2ViQXJjaGl2ZVJlc291cmNlOjpXZWJBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFNoYXJl
ZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XS05T
VVJMRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1VSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3Ry
aW5nXSk6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25TdGF0ZS5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zv
cndhcmRMaXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9jdW1lbnQgY29uc3QpOgorICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViRXJyb3JzLmg6CisgICAgICAg
ICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvY2Yv
QXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3Jl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAg
KEFQSTo6TmF2aWdhdGlvbjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjp0YWtl
UmVkaXJlY3RDaGFpbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0
aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRlbnRSdWxlTGlz
dE5vdGlmaWNhdGlvbik6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9h
ZFBvbGljeSBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVX
ZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNG
b2xkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHA6CisgICAg
ICAgIChBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRl
VW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoZmlsZVBhdGhzRnJvbUZpbGVVUkxzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmdXaXRo
VXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldCk6
CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVzZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2Vlbik6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NW
ZXJ5UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0
aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcik6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRl
cmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRV
c2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c0dyYW5kZmF0aGVyZWQpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNz
R3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RU
byk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW06CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW06CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBf
aW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRl
bGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmZv
clVSTFNjaGVtZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiB1cmxTY2hl
bWVIYW5kbGVyRm9yVVJMU2NoZW1lOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QXBwbGljYXRpb25NYW5pZmVzdC5tbToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVz
dCBpbml0V2l0aENvZGVyOl0pOgorICAgICAgICAoK1tfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFw
cGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjptYW5pZmVzdFVSTDpkb2N1bWVudFVSTDpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAg
ICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5Omxl
Z2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YmFzZVVSTDp1c2VyQ29udGVudFdvcmxkOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93
UGF5bWVudFVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnZhbGlkYXRlTWVyY2hhbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OnRvUEtQYXltZW50UmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Fw
cGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0Ojpkb21h
aW5CeUFkZGluZ0RvdFByZWZpeElmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Ojpk
aWRGaW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGlj
eSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nUmVzdWx0OjpTYWZlQnJvd3NpbmdSZXN1
bHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNv
Y29hLm1tOgorICAgICAgICAoLVtfV0tQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgZmluaXNo
Ol0pOgorICAgICAgICAoV2ViS2l0OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmluaXNoKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpV
SUNsaWVudDo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKToKKyAgICAgICAgKFdlYktp
dDo6cmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzKToKKyAgICAgICAgKFdl
YktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9y
aWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292
ZXJ5QXR0ZW1wdGVyLm1tOgorICAgICAgICAoLVtXS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0
dGVtcHRlciBhdHRlbXB0UmVjb3ZlcnldKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVUb1VSTEZvckZp
bGVQcm9taXNlUHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRSZWRpcmVjdENo
YWluKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6cmVkaXJlY3RDaGFpbiBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpkaWRTYW1lRG9j
dW1lbnROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6c2V0
VW5yZWFjaGFibGVVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5oOgor
ICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6dXJsIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkU3RhdGU6OnByb3Zpc2lvbmFsVVJMIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkU3RhdGU6OnVucmVhY2hhYmxlVVJMIGNvbnN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aCk6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QYWdlTG9hZFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6
aGFzT25seVNlY3VyZUNvbnRlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bkluZm9TdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0
b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94
eU1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2FmZUJyb3dzaW5nUmVzdWx0Lmg6CisgICAg
ICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6U2FmZUJyb3dzaW5nUmVzdWx0Ojp1cmwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3
Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZVByb3h5Ojp1cmwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBy
b3h5Ojpwcm92aXNpb25hbFVSTCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJv
eHk6OnVucmVhY2hhYmxlVVJMIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVj
dG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxl
TGlzdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vz
c0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRU
ZXJtaW5hdGVPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tOgorICAgICAgICAoLVtXS0Fj
dGlvblNoZWV0QXNzaXN0YW50IF9jcmVhdGVTaGVldFdpdGhFbGVtZW50QWN0aW9uczpzaG93TGlu
a1RpdGxlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNo
YXJlRWxlbWVudFdpdGhVUkw6cmVjdDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJl
c2VudGVkVmlld0NvbnRyb2xsZXJGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVk
XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW06CisgICAgICAg
ICgtW1dLTGVnYWN5UERGVmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRo
VVJMOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW06CisgICAg
ICAgICgtW1dLUERGVmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoVVJM
OnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXJJT1MubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIgX3VwZGF0ZUxvY2F0aW9uSW5mb10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
TGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZGVjb2RlTGVn
YWN5U2Vzc2lvblN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
IF9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5
bWVudENvb3JkaW5hdG9yOjpzaG93UGF5bWVudFVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5
bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZU1lcmNoYW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Q2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9h
ZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJD
bGllbnQ6OnVzZXJBZ2VudEZvclVSTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlRnJh
bWVBbGxvd3NGb2xsb3dpbmdMaW5rKToKKyAgICAgICAgKFdLQnVuZGxlRnJhbWVDb3B5U3VnZ2Vz
dGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwpOgorICAgICAgICAoV0tCdW5kbGVGcmFtZUNv
cHlNSU1FVHlwZUZvclJlc291cmNlV2l0aFVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdl
SGFzTG9jYWxEYXRhRm9yVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0
cmVhbTo6V2ViU29ja2V0U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0U3RyZWFtLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNsaWNrZWRMaW5rKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1VUkxSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5m
byk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxV
UkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRy
YWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjps
b2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRDU1BWaW9s
YXRpb25SZXBvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRVc2VyU2NyaXB0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQWN0aXZlUGFnZXMpOgorCiAyMDE4LTEw
LTAyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIFBhcnNlZFVSTFN0cmluZwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAko
cmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsMzIgKzE1MCwz
MiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcik7CiAgICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdl
SUQpOwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBi
b29sKTsKLSAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKTsKKyAgICB2b2lkIGNy
b3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBV
UkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQs
IERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7CiAgICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9h
ZFRvRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JET00o
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcywgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wmIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCk7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBTdHJpbmcmIGNvb2tpZVN0cmluZywgYm9vbCYg
c2VjdXJlQ29va2llc0FjY2Vzc2VkKTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjb29r
aWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCwgYm9vbCYgcmVzdWx0KTsKLSAgICB2b2lkIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYg
Y29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQpOwotICAgIHZvaWQgZ2V0
UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFt
ZSk7Ci0KLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVj
dGlvbkNoZWNrKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMs
IFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQpOworICAg
IHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWUoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisKKyAgICB2b2lkIHJl
Z2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZy
b21VUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29u
bmVjdGlvbkNoZWNrKTsKICAgICB2b2lkIHByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNGb3JP
cHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVCYWNrZWRQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKLSAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0
YXJ0LCBpbnQ2NF90IGVuZCk7Ci0gICAgdm9pZCBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwm
LCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxl
QmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVC
YWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0
YXJ0LCBpbnQ2NF90IGVuZCk7CisgICAgdm9pZCBibG9iU2l6ZShjb25zdCBVUkwmLCB1aW50NjRf
dCYgcmVzdWx0U2l6ZSk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsK
ICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBzdG9y
ZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YUtleSYs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBzZXRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRT
dHJlYW0oV2ViQ29yZTo6VVJMJiYsIFBBTDo6U2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRp
b24sIHVpbnQ2NF90KTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldFN0cmVhbShVUkwmJiwgUEFMOjpT
ZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QpOwogICAgIHZvaWQgZGVz
dHJveVNvY2tldFN0cmVhbSh1aW50NjRfdCk7CiAgICAgCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTM0LDI4ICszNCwyOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzCiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJp
bmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKLSAgICBTZXRDb29raWVzRnJvbURPTShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcs
IGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAgICBTZXRDb29raWVzRnJvbURPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3Ry
aW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJv
b2wgZW5hYmxlZCkKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVt
IFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAo
U3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKQotICAgIEdl
dFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQ
YXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6
OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpCi0g
ICAgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVy
bCwgU3RyaW5nIGNvb2tpZU5hbWUpCi0KLSAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFdlYkNvcmU6
OlVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBl
eHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkwo
V2ViQ29yZTo6VVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0
cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFdlYkNvcmU6OlVS
TCB1cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNo
ZWNrKQorICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2Ft
ZVNpdGVJbmZvLCBVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGVudW0gV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpCisgICAgR2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4gY29va2llcykKKyAgICBEZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBV
UkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKKworICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJM
IHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVu
c2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyQmxvYlVSTChVUkwg
dXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRU
eXBlKQorICAgIFJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoVVJMIHVybCwgVVJMIHNyY1VSTCwgYm9v
bCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spCiAgICAgUHJlcmVnaXN0ZXJTYW5kYm94RXh0
ZW5zaW9uc0Zvck9wdGlvbmFsbHlGaWxlQmFja2VkQmxvYihWZWN0b3I8U3RyaW5nPiBmaWxlUGF0
aHMsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgZXh0ZW5zaW9uSGFuZGxl
cykKLSAgICBSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChXZWJDb3JlOjpVUkwg
dXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBhdGgsIFN0cmluZyBj
b250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkxGb3JTbGljZShXZWJDb3JlOjpVUkwgdXJs
LCBXZWJDb3JlOjpVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKLSAgICBV
bnJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsKQotICAgIEJsb2JTaXplKFdlYkNvcmU6
OlVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1bHRTaXplKQorICAgIFJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKFVSTCB1cmwsIFVSTCBzcmNVUkwsIFN0cmluZyBmaWxlQmFja2Vk
UGF0aCwgU3RyaW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFVS
TCB1cmwsIFVSTCBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQorICAgIFVucmVn
aXN0ZXJCbG9iVVJMKFVSTCB1cmwpCisgICAgQmxvYlNpemUoVVJMIHVybCkgLT4gKHVpbnQ2NF90
IHJlc3VsdFNpemUpCiAgICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoVmVjdG9yPFN0cmlu
Zz4gYmxvYlVSTHMsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyKQogCiAgICAgU3RvcmVEZXJp
dmVkRGF0YVRvQ2FjaGUoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGFLZXkga2V5LCBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSkKIAogICAgIFNldENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCi0gICAgQ3JlYXRlU29ja2V0U3Ry
ZWFtKFdlYkNvcmU6OlVSTCB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGNh
Y2hlUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIENyZWF0ZVNvY2tldFN0cmVh
bShVUkwgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgdWludDY0X3QgaWRlbnRpZmllcikKIAogICAgIEVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3
ICsxMDYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAg
aWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAgYXV0byB1cmwgPSByZXNwb25zZS51
cmwoKTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7
Ci0gICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1
ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKKyAgICAgICAgaWYgKHBvcnQgJiYgIVdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAg
ICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJv
cih7IFN0cmluZygpLCAwLCB1cmwsICJDYW5jZWxsZWQgbG9hZCBmcm9tICciICsgdXJsLnN0cmlu
Z0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVzZSBpdCBpcyB1c2luZyBIVFRQ
LzAuOS4iIH0pOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw5ICs0OCw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3Mg
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOwogCiBjbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya0xvYWRDaGVja2VyPiB7CiBwdWJsaWM6Ci0g
ICAgTmV0d29ya0xvYWRDaGVja2VyKFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVh
ZGVyTWFwJiYsIFdlYkNvcmU6OlVSTCYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgc2hv
dWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UpOworICAgIE5ldHdvcmtM
b2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBV
UkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVmbGln
aHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcyA9IGZhbHNlKTsKICAgICB+TmV0d29ya0xvYWRDaGVja2VyKCk7CiAKICAg
ICB1c2luZyBSZXF1ZXN0T3JFcnJvciA9IEV4cGVjdGVkPFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj47CkBAIC02OSwxNCArNjksMTQgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRDU1BSZXNwb25zZUhlYWRlcnMoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiYgaGVhZGVycykgeyBtX2NzcFJlc3BvbnNlSGVhZGVycyA9
IFdURk1vdmUoaGVhZGVycyk7IH0KICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoV2ViQ29yZTo6VVJMJiYgbWFpbkRv
Y3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+
IGlkZW50aWZpZXIpCisgICAgdm9pZCBzZXRDb250ZW50RXh0ZW5zaW9uQ29udHJvbGxlcihVUkwm
JiBtYWluRG9jdW1lbnRVUkwsIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcj4gaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIG1fbWFpbkRvY3VtZW50VVJMID0g
V1RGTW92ZShtYWluRG9jdW1lbnRVUkwpOwogICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgIH0KICNlbmRpZgogCi0gICAgY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k7IH0KIAogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkSW5mb3Jt
YXRpb24gdGFrZU5ldHdvcmtMb2FkSW5mb3JtYXRpb24oKSB7IHJldHVybiBXVEZNb3ZlKG1fbG9h
ZEluZm9ybWF0aW9uKTsgfQpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBj
b250aW51ZUNoZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRh
dGlvbkhhbmRsZXImJik7CiAKLSAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNrKGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2soY29uc3Qg
VVJMJikgY29uc3Q7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxl
ciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKQEAgLTExOCwxMSArMTE4LDEx
IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hl
Y2tzLgogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAv
LyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKKyAgICBV
UkwgbV91cmw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsK
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycz4gbV9jc3BSZXNwb25zZUhlYWRlcnM7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKLSAgICBXZWJDb3JlOjpVUkwgbV9tYWluRG9jdW1lbnRVUkw7CisgICAgVVJMIG1fbWFp
bkRvY3VtZW50VVJMOwogICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiAKQEAg
LTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1NpbXBsZVJlcXVlc3QgeyB0
cnVlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgc2l6ZV90IG1fcmVkaXJlY3RDb3VudCB7
IDAgfTsKLSAgICBXZWJDb3JlOjpVUkwgbV9wcmV2aW91c1VSTDsKKyAgICBVUkwgbV9wcmV2aW91
c1VSTDsKICAgICBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3kgbV9wcmVmbGlnaHRQb2xpY3k7CiAg
ICAgU3RyaW5nIG1fZG50SGVhZGVyVmFsdWU7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXI7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAko
cmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDEzICs3NiwxMyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbkhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVk
ZSA8d3RmL0FsZ29yaXRobXMuaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmls
ZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2Vy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCkBAIC00NjUsNyArNDY1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVzdHJveVNlc3Npb24oUEFMOgogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Ondy
aXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgaGFuZGxlRm9yV3JpdGluZywgdWludDY0
X3QgcmVxdWVzdElEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxlUGF0aChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJiBoYW5kbGVGb3JXcml0aW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpCiB7CiAgICAgYXV0byBl
eHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShoYW5kbGVGb3JXcml0
aW5nKSk7CiAgICAgaWYgKCFleHRlbnNpb24pIHsKQEAgLTEwMDgsNyArMTAwOCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldENhY2hlU3RvcmFnZVBhcmEKICAgICAgICAgY2FsbGJhY2soU3Ry
aW5nIHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0sIHF1b3RhKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCiB7CiAjaWYgRU5BQkxF
KFNFUlZFUl9QUkVDT05ORUNUKQogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJz
OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw2IEBAIGNsYXNzIFByb3Rl
Y3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTV1NlcnZlcjsKIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBTdG9yZWRDcmVkZW50aWFs
c1BvbGljeTsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkRhdGE7CkBAIC0xNzIsNyArMTcxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENhY2hl
U3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QgcXVvdGEpPjsKICAgICB2b2lkIGNhY2hlU3RvcmFnZVBhcmFtZXRl
cnMoUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFjayYmKTsKIAot
ICAgIHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBVUkwmLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBib29sIHNob3Vs
ZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2dDb29raWVJbmZvcm1h
dGlvbjsgfQpAQCAtMjkzLDcgKzI5Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzeW5jQWxsQ29v
a2llcygpOwogICAgIHZvaWQgZGlkU3luY0FsbENvb2tpZXMoKTsKIAotICAgIHZvaWQgd3JpdGVC
bG9iVG9GaWxlUGF0aChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCB1aW50NjRfdCByZXF1ZXN0SUQpOworICAgIHZvaWQg
d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogCiAjaWYgVVNFKFNP
VVApCiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc3LDkgKzc3LDkgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIERpZEdldFNhbmRi
b3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBleHRlbnNpb25zKQogI2VuZGlmCiAKLSAgICBXcml0
ZUJsb2JUb0ZpbGVQYXRoKFdlYkNvcmU6OlVSTCBibG9iVVJMLCBTdHJpbmcgcGF0aCwgV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBjYWxsYmFja0lEKQor
ICAgIFdyaXRlQmxvYlRvRmlsZVBhdGgoVVJMIGJsb2JVUkwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAK
LSAgICBQcmVjb25uZWN0VG8oV2ViQ29yZTo6VVJMIHVybCwgZW51bSBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgUHJlY29ubmVj
dFRvKFVSTCB1cmwsIGVudW0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9CbG9jaywgYm9vbCBzaG91
bGRDbGVhckZpcnN0LCB1aW50NjRfdCBjb250ZXh0SWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+PiBmcmFtZUFuY2VzdG9yT3JpZ2luczsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCi0gICAgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTDsKKyAgICBVUkwgbWFpbkRvY3Vt
ZW50VVJMOwogICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgogfTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTc2LDcgKzk3
Niw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmYKICAgICBsb2dD
b29raWVJbmZvcm1hdGlvbigiTmV0d29ya1Jlc291cmNlTG9hZGVyIiwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9yaWdpbmFsUmVx
dWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdp
bmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFsUmVxdWVzdCgp
Lmh0dHBSZWZlcnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBpZGVudGlmaWVyKCkpOwogfQog
Ci1zdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgV2ViQ29y
ZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZv
cm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpOwogCkBAIC0xMDAzLDcgKzEw
MDMsNyBAQCBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oCiAjdW5kZWYg
TE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRp
b25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3Qs
IGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVy
KQorc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNo
b3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDIz
Njc2NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpOwotICAgIHN0YXRp
YyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZv
aWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGxv
Z0Nvb2tpZUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dl
ZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlk
ZW50aWZpZXIpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+
JiYpOwogICAgIHZvaWQgY29udGludWVQcm9jZXNzaW5nQ2FjaGVkRW50cnlBZnRlckRpZFJlY2Vp
dmVSZXNwb25zZShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogCi0gICAg
Ym9vbCBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJh
bWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIGJvb2wgc2hvdWxkSW50
ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIGVudW0gY2xhc3MgRmlyc3RMb2FkIHsgTm8s
IFllcyB9OwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lDbGllbnQKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbG9uZykgZmluYWw7Ci0g
ICAgdm9pZCBzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KFdlYkNvcmU6OlVSTCYmLCBSZWY8V2ViQ29y
ZTo6Rm9ybURhdGE+JiYpIGZpbmFsOworICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydChV
UkwmJiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGVucXVldWVT
ZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5VmlvbGF0
aW9uRXZlbnQ6OkluaXQmJikgZmluYWw7CiAKICAgICB2b2lkIGxvZ1Nsb3dDYWNoZVJldHJpZXZl
SWZOZWVkZWQoY29uc3QgTmV0d29ya0NhY2hlOjpDYWNoZTo6UmV0cmlldmVJbmZvJik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0
cmVhbS5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxO
ZXR3b3JrU29ja2V0U3RyZWFtPiBOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUoV2ViQ29yZTo6
VVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVu
dGlhbFBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpCitSZWY8TmV0
d29ya1NvY2tldFN0cmVhbT4gTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFVSTCYmIHVybCwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRp
b24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291
cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE5ldHdvcmtTb2NrZXRTdHJlYW0oV1RGTW92ZSh1cmwpLCBzZXNzaW9uSUQsIGNy
ZWRlbnRpYWxQYXJ0aXRpb24sIGlkZW50aWZpZXIsIGNvbm5lY3Rpb24sIFdURk1vdmUoYXVkaXRE
YXRhKSkpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSwxNCArMzksMTMgQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW0gOiBwdWJsaWMgUmVmQ291
bnRlZDxOZXR3b3JrU29ja2V0U3RyZWFtPiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+
IGNyZWF0ZShXZWJDb3JlOjpVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNv
dXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtTb2Nr
ZXRTdHJlYW0+IGNyZWF0ZShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNv
dXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKICAgICB+TmV0d29ya1NvY2tldFN0cmVhbSgp
OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKQEAgLTY3LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBJUEM6OkNvbm5lY3Rpb24q
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbDsKIAotICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0oV2Vi
Q29yZTo6VVJMJiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0
aXRpb24sIHVpbnQ2NF90LCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTb3VyY2VBcHBsaWNh
dGlvbkF1ZGl0VG9rZW4mJik7CisgICAgTmV0d29ya1NvY2tldFN0cmVhbShVUkwmJiwgUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQ
Qzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsK
IAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBJUEM6OkNvbm5lY3Rpb24mIG1fY29u
bmVjdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5OwogY2xhc3MgSFRUUEhlYWRlck1hcDsKLWNsYXNz
IFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MSw3ICs1MCw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgflBpbmdMb2FkKCk7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIGN1
cnJlbnRVUkwoKSBjb25zdDsKKyAgICBjb25zdCBVUkwmIGN1cnJlbnRVUkwoKSBjb25zdDsKICAg
ICBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSgp
IGNvbnN0OwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNp
b24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nv
b2tpZXMvV2ViQ29va2llTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgJKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgQ29va2llOwogfQogCkBAIC03OCw5ICs3Nyw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6
OlNlc3Npb25JRCwgV2FsbFRpbWUsIENhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBzZXRDb29raWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENhbGxiYWNrSUQpOwotICAg
IHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1
bWVudFVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
bWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEFsbENvb2tpZXMoUEFM
OjpTZXNzaW9uSUQsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2llcyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29r
aWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQg
cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzY3NjYpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQAogICAgIHZvaWQgRGVsZXRl
QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKICAgICB2b2lkIFNldENvb2tp
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2ll
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICB2b2lkIFNldENvb2tpZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBX
ZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBVUkwgdXJsLCBVUkwg
bWFpbkRvY3VtZW50VVJMLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICB2b2lk
IEdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKLSAgICB2b2lkIEdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICB2b2lkIEdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICB2b2lkIERlbGV0ZUNvb2tpZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZFNpbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzQsOCArMzQsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
ZXh0RW5jb2RpbmcuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL05TVVJMQ29ubmVjdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCShyZXZp
c2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0
d29ya0Jsb2JSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdm9p
ZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUgogICAgIG1hcEl0ZXJhdG9yLT52
YWx1ZS5hZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgYm9vbCBzaG91bGRC
eXBhc3NDb25uZWN0aW9uQ2hlY2spCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25D
aGVjaykKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYg
TmV0d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9yIGFueSByZWFzb24uCiAgICAgQmxv
YkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5l
Y3Rpb24uZmluZChjb25uZWN0aW9uKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIE5ldHdvcmtC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSCiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1
cmwpOwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNs
aWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQs
IGludDY0X3QgZW5kKQordm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxG
b3JTbGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkK
IHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgTmV0d29y
a1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9yIGFueSByZWFzb24uCiAgICAgQmxvYkZvckNv
bm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24u
ZmluZChjb25uZWN0aW9uKTsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSCiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwog
fQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCkKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAg
IC8vIFRoZSBjb25uZWN0aW9uIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBpZiBOZXR3b3JrUHJvY2Vz
cyBwcmV2b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJlYXNvbi4KICAgICBCbG9iRm9yQ29ubmVjdGlv
bk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNv
bm5lY3Rpb24pOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6
dW5yZWdpc3RlckJsb2IKICAgICBtYXBJdGVyYXRvci0+dmFsdWUucmVtb3ZlKHVybCk7CiB9CiAK
LXVpbnQ2NF90IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3VpbnQ2
NF90IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIW1fYmxvYnNG
b3JDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb24pIHx8ICFtX2Jsb2JzRm9yQ29ubmVjdGlv
bi5maW5kKGNvbm5lY3Rpb24pLT52YWx1ZS5jb250YWlucyh1cmwpKQogICAgICAgICByZXR1cm4g
MDsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OmNvbm5lY3Rp
b25Ub1dlCiAgICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwogfQog
Ci1WZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0
cnk6OmZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1ZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICgh
bV9ibG9ic0ZvckNvbm5lY3Rpb24uY29udGFpbnMoJmNvbm5lY3Rpb24pIHx8ICFtX2Jsb2JzRm9y
Q29ubmVjdGlvbi5maW5kKCZjb25uZWN0aW9uKS0+dmFsdWUuY29udGFpbnModXJsKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQ
SS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAkocmV2aXNpb24gMjM2NzY2
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVn
aXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTsKQEAgLTQ2LDI1ICs0NiwyNSBAQCBwdWJsaWM6CiAgICAgTmV0
d29ya0Jsb2JSZWdpc3RyeSgpOwogICAgIHN0YXRpYyBOZXR3b3JrQmxvYlJlZ2lzdHJ5JiBzaW5n
bGV0b24oKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwg
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwot
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayk7Ci0gICAgdm9p
ZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Jj
VVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBz
cmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJC
bG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJM
Jik7Ci0gICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyosIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgYm9vbCBzaG91
bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxv
YlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYpOworICAgIHVp
bnQ2NF90IGJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJM
Jik7CiAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBX
ZWJDb3JlOjpVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChi
b29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHdyaXRlQmxvYlRv
RmlsZVBhdGgoY29uc3QgVVJMJiBibG9iVVJMLCBjb25zdCBTdHJpbmcmIHBhdGgsIEZ1bmN0aW9u
PHZvaWQoYm9vbCBzdWNjZXNzKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICB2b2lkIGNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyopOwogCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
PiBmaWxlc0luQmxvYihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPj4gZmlsZXNJbkJsb2IoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFVSTCYpOworICAgIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJsb2IoY29uc3QgVVJMJik7CiAK
IHByaXZhdGU6CiAgICAgfk5ldHdvcmtCbG9iUmVnaXN0cnkoKTsKIAotICAgIHR5cGVkZWYgSGFz
aE1hcDxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIEhhc2hTZXQ8V2ViQ29yZTo6VVJM
Pj4gQmxvYkZvckNvbm5lY3Rpb25NYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiwgSGFzaFNldDxVUkw+PiBCbG9iRm9yQ29ubmVjdGlvbk1hcDsK
ICAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcCBtX2Jsb2JzRm9yQ29ubmVjdGlvbjsKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgJKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTAsOCArOTAsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwg
U3RyaW5nJiYgcmVmZXJyZXIpOwogICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7
CiAKLSAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNo
UmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9w
T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7Ci0gICAgdm9pZCBnZXRSZWdp
c3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGNsaWVudFVSTCk7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBy
ZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpOworICAgIHZvaWQg
Z2V0UmVnaXN0cmF0aW9ucyh1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3Qg
VVJMJiBjbGllbnRVUkwpOwogCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24gewogCiAgICAgRGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBrZXkpCiAKLSAgICBNYXRjaFJlZ2lzdHJhdGlvbih1
aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFdlYkNvcmU6OlVSTCBjbGll
bnRVUkwpCi0gICAgV2hlblJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3Ry
YXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKLSAgICBHZXRSZWdpc3Ry
YXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6
VVJMIGNsaWVudFVSTCkKKyAgICBNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVn
aXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGllbnRVUkwpCisgICAgV2hlblJlZ2lzdHJhdGlv
blJlYWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVu
dFVSTCkKKyAgICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25N
YXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
IHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBjb250cm9sbGluZ1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogICAgIFVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBp
ZGVudGlmaWVyKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNjc2NikKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aQogICAgIEZpbmRD
bGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcik7CiAg
ICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENs
YWltKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBTZXRTY3JpcHRSZXNv
dXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpVUkwgc2NyaXB0VVJMLCBTdHJpbmcgc2NyaXB0LCBXZWJDb3JlOjpVUkwgcmVzcG9uc2VVUkws
IFN0cmluZyBtaW1lVHlwZSk7CisgICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlw
dCwgVVJMIHJlc3BvbnNlVVJMLCBTdHJpbmcgbWltZVR5cGUpOwogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAkocmV2aXNpb24gMjM2
NzY2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBFbmdpbmU6
OnJldHJpZXZlQ2FjaGVzKFBBTDo6U2Vzc2lvbgogfQogCiAKLXZvaWQgRW5naW5lOjpyZXRyaWV2
ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlVSTCYmIHVybCwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHND
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6OnJldHJpZXZlUmVjb3JkcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMJiYgdXJsLCBX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgZnJvbShzZXNzaW9uSUQsIFtjYWNoZUlkZW50aWZpZXIsIHVybCA9IFdURk1vdmUodXJsKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKICAg
ICAgICAgZW5naW5lLnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJs
KSwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgRW5naW5lOjpy
ZXRyaWV2ZUNhY2hlcyhjb25zdCBXZWJDb3IKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OnJl
dHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVy
bCwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNv
cmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMJiYgdXJsLCBSZWNvcmRzQ2FsbGJhY2sm
JiBjYWxsYmFjaykKIHsKICAgICByZWFkQ2FjaGUoY2FjaGVJZGVudGlmaWVyLCBbdXJsID0gV1RG
TW92ZSh1cmwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZU9yRXJyb3ImJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZW1vdmUoUEFMOjpTZXNzaW9u
SUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwogICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlQ2FjaGVz
KFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgdWludDY0X3QgdXBkYXRl
Q291bnRlciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKTsK
IAotICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNDYWxsYmFjayYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXRyaWV2ZVJlY29yZHMo
UEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMJiYsIFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CiAgICAgc3RhdGljIHZvaWQgcHV0
UmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgc3RhdGljIHZvaWQgZGVsZXRl
TWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYm
LCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsK
IApAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJl
c2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAgICAgU3RyaW5nIHJlcHJlc2VudGF0aW9u
KCk7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNr
JiYpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
VVJMJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CiAgICAg
dm9pZCBwdXRSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNv
cmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRz
KHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNv
cmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5o
CShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcg
QEAgc3RydWN0IFJlY29yZEluZm9ybWF0aW9uIHsKIAogICAgIHVpbnQ2NF90IHNpemUgeyAwIH07
CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgYm9vbCBoYXNWYXJ5
U3RhciB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFyeUhlYWRlcnM7
CiB9OwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiB1bmlxdWVO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVOYW1lOyB9CiAgICAgYm9vbCBpc0FjdGl2ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OlVuaW5pdGlhbGl6ZWQ7IH0KIAotICAg
IHZvaWQgcmV0cmlldmVSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHMo
Y29uc3QgVVJMJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsK
ICAgICBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvIGluZm8oKSBjb25zdCB7IHJl
dHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07IH0KIAogICAgIHZvaWQgcHV0KFZlY3RvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKQEAgLTk0LDggKzk0LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERlY29kZWRSZWNvcmQ+IGRlY29kZVJlY29yZEhl
YWRlcihjb25zdCBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29yZCYpOwogCiBwcml2YXRlOgot
ICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNG
cm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIFZlY3RvcjxSZWNvcmRJbmZv
cm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFVSTCYpOworICAgIGNvbnN0IFZlY3RvcjxS
ZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFVSTCYpIGNvbnN0OwogICAg
IFJlY29yZEluZm9ybWF0aW9uJiBhZGRSZWNvcmQoVmVjdG9yPFJlY29yZEluZm9ybWF0aW9uPios
IGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQmKTsKIAogICAgIHZvaWQgc3Rv
cmVSZWNvcmRzKFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjM2NzY2KQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCB2b2lkIENhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hlCiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsKQordm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiB1cmwpCiB7
CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVSZWNvcmRzICglIiBQUkl1NjQg
IikgaW4gY2FjaGUgJSIgUFJJdTY0LCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVy
KTsKICAgICBFbmdpbmU6OnJldHJpZXZlUmVjb3JkcyhzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmll
ciwgV1RGTW92ZSh1cmwpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZHNPckVycm9yJiYg
cmVzdWx0KSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAkocmV2aXNp
b24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVtb3Zl
UmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBj
YWNoZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJldHJpZXZlQ2FjaGVzSWRlbnRpZmllciwg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpOwogCi0gICAg
dm9pZCByZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmKTsKKyAgICB2
b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMJiYpOwogICAgIHZvaWQgZGVsZXRl
TWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJik7CiAgICAgdm9pZCBwdXRSZWNvcmRzKFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQCBtZXNzYWdlcyAtPiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
CiAgICAgQ2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IG9yaWdpbik7CiAgICAgRW5naW5lUmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcik7CiAKLSAgICBSZXRyaWV2ZVJlY29yZHMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwgdXJsKTsKKyAgICBSZXRyaWV2ZVJl
Y29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwgdXJsKTsKICAgICBEZWxldGVNYXRjaGlu
Z1JlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAg
IFB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD4gcmVjb3JkKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAkocmV2aXNpb24gMjM2NzY2KQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBM
b3dQb3dlck1vZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VG
YWlsdXJlVG9ECiAKIHZvaWQgU3RhdGlzdGljczo6cmVjb3JkUmV0cmlldmVkQ2FjaGVkRW50cnko
dWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBVc2VEZWNpc2lvbiBkZWNpc2lvbikKIHsKLSAgICBXZWJDb3Jl
OjpVUkwgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7CisgICAgVVJMIHJlcXVlc3RVUkwgPSBy
ZXF1ZXN0LnVybCgpOwogICAgIGlmIChkZWNpc2lvbiA9PSBVc2VEZWNpc2lvbjo6VXNlKSB7CiAg
ICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIHdlYlBhZ2VJRCAlIiBQ
Ukl1NjQgIjogJXMgaXMgaW4gdGhlIGNhY2hlIGFuZCBpcyB1c2VkIiwgd2ViUGFnZUlELCByZXF1
ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh3ZWJQYWdlSUQsIFdl
YkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29ya0NhY2hlS2V5KCksIFdlYkNvcmU6
OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6cmV0cmlldmFsS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0
aWNMb2dnaW5nUmVzdWx0UGFzcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZZXMpOwpAQCAtMzE0
LDcgKzMxNCw3IEBAIHZvaWQgU3RhdGlzdGljczo6cmVjb3JkUmV0cmlldmVkQ2FjaGVkRW4KIAog
dm9pZCBTdGF0aXN0aWNzOjpyZWNvcmRSZXZhbGlkYXRpb25TdWNjZXNzKHVpbnQ2NF90IHdlYlBh
Z2VJRCwgY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7Cisg
ICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOwogICAgIExPRyhOZXR3b3JrQ2FjaGUs
ICIoTmV0d29ya1Byb2Nlc3MpIHdlYlBhZ2VJRCAlIiBQUkl1NjQgIjogJXMgd2FzIHN1Y2Nlc3Nm
dWxseSByZXZhbGlkYXRlZCIsIHdlYlBhZ2VJRCwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSk7CiAKICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkubG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoUmVzdWx0KHdlYlBhZ2VJRCwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzOjpuZXR3b3JrQ2FjaGVLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpy
ZXZhbGlkYXRpbmdLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRQYXNzLCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGU6Olllcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNv
dXJjZXNFbnRyeS5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDE1ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnlfaAotI2RlZmlu
ZSBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVO
QUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKIAogI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5l
dHdvcmtDYWNoZSB7CkBAIC01MCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBXYWxsVGltZSBmaXJz
dFNlZW4oKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0U2VlbjsgfQogCiAgICAgYm9vbCBpc1RyYW5z
aWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUcmFuc2llbnQ7IH0KLSAgICBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2ll
bnQpOyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQorICAgIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSBjb25zdCB7IEFTU0VSVCghbV9pc1RyYW5zaWVudCk7IHJldHVy
biBtX2ZpcnN0UGFydHlGb3JDb29raWVzOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCYgcmVxdWVzdEhlYWRlcnMoKSBjb25zdCB7IEFTU0VSVCghbV9pc1RyYW5zaWVudCk7IHJl
dHVybiBtX3JlcXVlc3RIZWFkZXJzOyB9CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3Jp
dHkgcHJpb3JpdHkoKSBjb25zdCB7IEFTU0VSVCghbV9pc1RyYW5zaWVudCk7IHJldHVybiBtX3By
aW9yaXR5OyB9CiAKQEAgLTY1LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBXYWxsVGltZSBtX2Zp
cnN0U2VlbjsKICAgICBib29sIG1faXNUcmFuc2llbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9p
c1NhbWVTaXRlIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpVUkwgbV9maXJzdFBhcnR5Rm9yQ29v
a2llczsKKyAgICBVUkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsKICAgICBXZWJDb3JlOjpIVFRQ
SGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRlcnM7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJp
b3JpdHkgbV9wcmlvcml0eTsKIH07CkBAIC0xMDcsNCArMTA2LDMgQEAgcHJpdmF0ZToKIH0gLy8g
bmFtZXNwYWNlIE5ldHdvcmtDYWNoZQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfQ0FDSEVf
U1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQotI2VuZGlmIC8vIE5ldHdvcmtDYWNoZVN1YnJlc291
cmNlc0VudHJ5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHAJKHJldmlzaW9uIDIzNjc2
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVy
ZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9CcmlnYW5kLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgxLDggKzgxLDcgQEAg
UmVxdWVzdDo6UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZQogCiBSZXF1ZXN0OjpvcGVy
YXRvciBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoKSBjb25zdAogewotICAgIFdlYkNvcmU6OlVS
TFBhcnNlciBwYXJzZXIodXJsKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dChwYXJzZXIucmVzdWx0KCksIHJlZmVycmVyLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeT4ocG9saWN5KSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QoVVJMKHsgfSwgdXJsKSwgcmVmZXJyZXIsIHN0YXRpY19jYXN0PFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5Pihwb2xpY3kpKTsKICAgICByZXF1ZXN0LnNldEhU
VFBNZXRob2QobWV0aG9kKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogaGVhZGVy
cykKQEAgLTExOCw4ICsxMTcsNyBAQCBSZXNwb25zZTo6UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
UmVzb3VyCiAKIFJlc3BvbnNlOjpvcGVyYXRvciBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlKCkg
Y29uc3QKIHsKLSAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKHVybCk7Ci0gICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwYXJzZXIucmVzdWx0KCksIG1pbWVUeXBlLCBl
eHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZShVUkwoeyB9LCB1cmwpLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgs
IHRleHRFbmNvZGluZ05hbWUpOwogICAgIHJlc3BvbnNlLnNldEhUVFBWZXJzaW9uKHZlcnNpb24p
OwogICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKHN0YXR1cyk7CiAgICAgcmVzcG9uc2Uu
c2V0SFRUUFN0YXR1c1RleHQocmVhc29uKTsKQEAgLTE1Miw4ICsxNTAsNyBAQCBFcnJvcjo6RXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvCiAKIEVycm9yOjpvcGVyYXRvciBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yKCkgY29uc3QKIHsKLSAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2Vy
KGZhaWxpbmdVUkwpOwotICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IoZG9tYWluLCBl
cnJvckNvZGUsIHBhcnNlci5yZXN1bHQoKSwgbG9jYWxpemVkRGVzY3JpcHRpb24sIHN0YXRpY19j
YXN0PFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU+KHR5cGUpKTsKKyAgICBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBVUkwoeyB9LCBmYWlsaW5nVVJM
KSwgbG9jYWxpemVkRGVzY3JpcHRpb24sIHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlc291cmNlRXJy
b3I6OlR5cGU+KHR5cGUpKTsKIAogICAgIHJldHVybiBlcnJvcjsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3Jr
Q2FwdHVyZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsMTIgKzMxLDEyIEBACiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1cmVMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8aXRlcmF0b3I+CiAjaW5jbHVkZSA8bGltaXRzPgogI2lu
Y2x1ZGUgPHd0Zi9NRDUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xNDYsNyArMTQ2LDcgQEAgUmVzb3VyY2Uq
IE1hbmFnZXI6OmZpbmRCZXN0RnV6enlNYXRjaChjbwogCiAgICAgUmVzb3VyY2UqIGJlc3RNYXRj
aCA9IG51bGxwdHI7CiAgICAgaW50IGJlc3RTY29yZSA9IGtNaW5NYXRjaDsKLSAgICBjb25zdCBh
dXRvJiByZXF1ZXN0UGFyYW1ldGVycyA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNv
ZGVkRm9ybSh1cmwucXVlcnkoKSk7CisgICAgY29uc3QgYXV0byYgcmVxdWVzdFBhcmFtZXRlcnMg
PSBXVEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybSh1cmwucXVlcnkoKSk7CiAgICAg
Zm9yIChhdXRvIGlSZXNvdXJjZSA9IGxvd2VyOyBpUmVzb3VyY2UgIT0gdXBwZXI7ICsraVJlc291
cmNlKSB7CiAgICAgICAgIGludCB0aGlzU2NvcmUgPSBmdXp6eU1hdGNoVVJMcyh1cmwsIHJlcXVl
c3RQYXJhbWV0ZXJzLCBpUmVzb3VyY2UtPnVybCgpLCBpUmVzb3VyY2UtPnF1ZXJ5UGFyYW1ldGVy
cygpKTsKICAgICAgICAgLy8gVE9ETzogQ29uc2lkZXIgaWdub3JpbmcgYW55IG1hdGNoZXMgPCAw
IGFzIGJlaW5nIHRvbyBkaWZmZXJlbnQuCkBAIC0xNjUsNyArMTY1LDcgQEAgUmVzb3VyY2UqIE1h
bmFnZXI6OmZpbmRCZXN0RnV6enlNYXRjaChjbwogLy8gVE9ETzogQ29udmVydCB0byBhbiBpbnRl
cmZhY2UgYmFzZWQgb24gUmVzb3VyY2VSZXF1ZXN0IHNvIHRoYXQgd2UgY2FuIGRvCiAvLyBkZWVw
ZXIgbWF0Y2hpbmcuCiAKLWludCBNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyhjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZv
cm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc291cmNlVVJMLCBj
b25zdCBXZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRl
cnMpCitpbnQgTWFuYWdlcjo6ZnV6enlNYXRjaFVSTHMoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBj
b25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBj
b25zdCBVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZv
cm0mIHJlc291cmNlUGFyYW1ldGVycykKIHsKICAgICAvLyBUT0RPOiBjb25zaWRlciByZXF1aXJp
bmcgdGhhdCBhbnkgdHJhaWxpbmcgc3VmZml4ZXMgKGUuZy4sICIuanMiLAogICAgIC8vICIucG5n
IiwgIi5jc3MiLCAiLmh0bWwiLCBldGMuKSBzaG91bGQgYmUgYW4gZXhhY3QgbWF0Y2guCkBAIC00
MTksNyArNDE5LDcgQEAgU3RyaW5nIE1hbmFnZXI6Omhhc2hUb1BhdGgoY29uc3QgU3RyaW5nJgog
ICAgIHJldHVybiBwYXRoOwogfQogCi1TdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21t
b25Eb21haW4oY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCitTdHJpbmcgTWFuYWdlcjo6dXJsSWRl
bnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHVybC5w
cm90b2NvbEhvc3RBbmRQb3J0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oCShy
ZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAK
IAogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtODIsNyArODIs
NyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6RmlsZUhhbmRsZSBvcGVuQ2FjaGVGaWxlKGNvbnN0
IFN0cmluZyYsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSk7CiAKICAgICBTdHJp
bmcgcmVxdWVzdFRvUGF0aChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBz
dGF0aWMgU3RyaW5nIHVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0IFdlYkNvcmU6OlVS
TCYpOworICAgIHN0YXRpYyBTdHJpbmcgdXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3Qg
VVJMJik7CiAKIHByaXZhdGU6CiAgICAgTWFuYWdlcigpID0gZGVmYXVsdDsKQEAgLTkwLDcgKzkw
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlKiBmaW5kRXhhY3RNYXRjaChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBSZXNvdXJjZSogZmluZEJlc3RGdXp6eU1hdGNo
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIGludCBmdXp6eU1hdGNoVVJM
cyhjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNl
cjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlc291cmNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiBy
ZXNvdXJjZVBhcmFtZXRlcnMpOworICAgIGludCBmdXp6eU1hdGNoVVJMcyhjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIGNvbnN0IFdURjo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVxdWVzdFBh
cmFtZXRlcnMsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwsIGNvbnN0IFdURjo6VVJMUGFyc2VyOjpV
UkxFbmNvZGVkRm9ybSYgcmVzb3VyY2VQYXJhbWV0ZXJzKTsKIAogICAgIHZvaWQgbG9hZFJlc291
cmNlcygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0
d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAy
MzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0Nh
cHR1cmVSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgUmVzb3Vy
Y2U6OlJlc291cmNlKGNvbnN0IFN0cmluZyYgZXZlbnRGaQogewogfQogCi1jb25zdCBXZWJDb3Jl
OjpVUkwmIFJlc291cmNlOjp1cmwoKQorY29uc3QgVVJMJiBSZXNvdXJjZTo6dXJsKCkKIHsKICAg
ICBpZiAoIW1fdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBhdXRvIGV2ZW50cyA9IGV2ZW50U3Ry
ZWFtKCk7CkBAIC01Miw4ICs1Miw3IEBAIGNvbnN0IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6OnVy
bCgpCiAgICAgICAgICAgICBERUJVR19MT0dfRVJST1IoIkV2ZW50IHN0cmVhbSBkb2VzIG5vdCBo
YXZlIGEgcmVxdWVzdFNlbnQgZXZlbnQ6IGZpbGUgPSAiIFNUUklOR19TUEVDSUZJRVIsIERFQlVH
X1NUUihtX2V2ZW50RmlsZVBhdGgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRv
IHJlcXVlc3RTZW50RXZlbnQgPSBXVEY6OmdldDxSZXF1ZXN0U2VudEV2ZW50PigqZXZlbnQpOwot
ICAgICAgICAgICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcihyZXF1ZXN0U2VudEV2ZW50LnJl
cXVlc3QudXJsKTsKLSAgICAgICAgICAgIG1fdXJsID0gcGFyc2VyLnJlc3VsdCgpOworICAgICAg
ICAgICAgbV91cmwgPSBVUkwoeyB9LCByZXF1ZXN0U2VudEV2ZW50LnJlcXVlc3QudXJsKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtNjgsMTAgKzY3LDEwIEBAIGNvbnN0IFN0cmluZyYgUmVzb3Vy
Y2U6OnVybElkZW50aWZ5aW5nQ28KICAgICByZXR1cm4gbV91cmxJZGVudGlmeWluZ0NvbW1vbkRv
bWFpbjsKIH0KIAotV2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSBSZXNvdXJjZTo6
cXVlcnlQYXJhbWV0ZXJzKCkKK1dURjo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSBSZXNvdXJj
ZTo6cXVlcnlQYXJhbWV0ZXJzKCkKIHsKICAgICBpZiAoIW1fcXVlcnlQYXJhbWV0ZXJzKQotICAg
ICAgICBtX3F1ZXJ5UGFyYW1ldGVycyA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNv
ZGVkRm9ybSh1cmwoKS5xdWVyeSgpKTsKKyAgICAgICAgbV9xdWVyeVBhcmFtZXRlcnMgPSBXVEY6
OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybSh1cmwoKS5xdWVyeSgpKTsKIAogICAgIHJl
dHVybiAqbV9xdWVyeVBhcmFtZXRlcnM7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNl
LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5
LDkgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtDYXB0dXJlRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhcHR1cmUgewpAQCAtNTUsMTYgKzU1LDE2IEBAIHB1Ymxp
YzoKIHB1YmxpYzoKICAgICBSZXNvdXJjZShjb25zdCBTdHJpbmcmIGV2ZW50RmlsZVBhdGgpOwog
Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCgpOwog
ICAgIGNvbnN0IFN0cmluZyYgdXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oKTsKLSAgICBXZWJD
b3JlOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIHF1ZXJ5UGFyYW1ldGVycygpOworICAgIFdU
Rjo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSBxdWVyeVBhcmFtZXRlcnMoKTsKICAgICBFdmVu
dFN0cmVhbSBldmVudFN0cmVhbSgpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2V2ZW50Rmls
ZVBhdGg7Ci0gICAgV2ViQ29yZTo6VVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBTdHJp
bmcgbV91cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbjsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0+IG1fcXVlcnlQYXJhbWV0ZXJzOworICAgIHN0
ZDo6b3B0aW9uYWw8V1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtPiBtX3F1ZXJ5UGFyYW1l
dGVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYXB0dXJlCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMx
MSw3ICszMTEsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUCiAg
ICAgfQogICAgIAogICAgIC8vIFNob3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIgYSByZWRpcmVj
dCBmcm9tIGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1cmUgb25lLgotICAgIGlmIChtX3No
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCku
cHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJl
ZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBX
VEY6OnByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikpCiAgICAgICAg
IHJlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAKICAgICBjb25zdCBhdXRvJiB1cmwg
PSByZXF1ZXN0LnVybCgpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjM2NzY2
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMiArNDYsMTIgQEAKICNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVVJMUmVzcG9uc2UuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2lt
cG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVn
ZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBA
IC0zNDgsNyArMzQ4LDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNz
aQogICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpD
cmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgpKSB7CiAKICAgICAgICAgICAgICAg
ICBXZWJDb3JlOjpDcmVkZW50aWFsIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwu
dXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUpOwotICAgICAgICAgICAgICAgIFdlYkNvcmU6OlVSTCB1cmxUb1N0b3JlOworICAg
ICAgICAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICAgICAgICAgIGlmIChhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQw
MSkKICAgICAgICAgICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIHN0
b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQpJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9Q
bHVnaW5Qcm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTUsMTEgKzIxNSwxMSBAQCBzdGF0aWMgdm9pZCBjYXJib25XaW5kb3dIaWRkZW4o
V2luZG93UmVmCiBzdGF0aWMgYm9vbCBvcGVuQ0ZVUkxSZWYoQ0ZVUkxSZWYgdXJsLCBpbnQzMl90
JiBzdGF0dXMsIENGVVJMUmVmKiBsYXVuY2hlZFVSTCkKIHsKICAgICBTdHJpbmcgbGF1bmNoZWRV
UkxTdHJpbmc7Ci0gICAgaWYgKCFQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5vcGVuVVJMKFdl
YkNvcmU6OlVSTCh1cmwpLnN0cmluZygpLCBzdGF0dXMsIGxhdW5jaGVkVVJMU3RyaW5nKSkKKyAg
ICBpZiAoIVBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLm9wZW5VUkwoVVJMKHVybCkuc3RyaW5n
KCksIHN0YXR1cywgbGF1bmNoZWRVUkxTdHJpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoIWxhdW5jaGVkVVJMU3RyaW5nLmlzTnVsbCgpICYmIGxhdW5jaGVkVVJMKQotICAg
ICAgICAqbGF1bmNoZWRVUkwgPSBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGxhdW5jaGVk
VVJMU3RyaW5nKS5jcmVhdGVDRlVSTCgpLmxlYWtSZWYoKTsKKyAgICAgICAgKmxhdW5jaGVkVVJM
ID0gVVJMKFVSTCgpLCBsYXVuY2hlZFVSTFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM5OSw3ICszOTksNyBAQCBzdGF0aWMgTlNSdW5u
aW5nQXBwbGljYXRpb24gKnJlcGxhY2VkTlNXCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
UGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkubGF1bmNoQXBwbGljYXRpb25BdFVSTChXZWJDb3Jl
OjpVUkwodXJsKS5zdHJpbmcoKSwgYXJndW1lbnRzKSkgeworICAgIGlmIChQbHVnaW5Qcm9jZXNz
OjpzaW5nbGV0b24oKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFVSTCh1cmwpLnN0cmluZygpLCBh
cmd1bWVudHMpKSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgICplcnJvciA9IG5p
bDsKICAgICAgICAgcmV0dXJuIG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdl
YkFyY2hpdmVSZXNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UElXZWJBcmNoaXZlUmVzb3VyY2UubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAs
OCArMzAsOCBAQAogCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXJj
aGl2ZVJlc291cmNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDYsOCArNDYsOCBAQCBSZWY8V2ViQXJjaGl2ZVJl
c291cmNlPiBXZWJBcmNoaXZlUmVzb3VyCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXJj
aGl2ZVJlc291cmNlKFdURk1vdmUoYXJjaGl2ZVJlc291cmNlKSkpOwogfQogCi1XZWJBcmNoaXZl
UmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
ZykKLSAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNpemUoKSksIFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgVVJMKSwgTUlNRVR5cGUsIHRleHRFbmNvZGluZywgU3RyaW5nKCkp
KQorV2ViQXJjaGl2ZVJlc291cmNlOjpXZWJBcmNoaXZlUmVzb3VyY2UoQVBJOjpEYXRhKiBkYXRh
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmcpCisgICAgOiBtX2FyY2hpdmVSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLT5ieXRlcygpLCBkYXRhLT5zaXplKCkp
LCBXVEY6OlVSTChXVEY6OlVSTCgpLCB1cmwpLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nLCBTdHJp
bmcoKSkpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lucHV0
TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgQXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24gewogICAgIFN0cmluZyB0aXRsZTsKICAgICBib29sIGFjY2Vw
dHNBdXRvZmlsbGVkTG9naW5DcmVkZW50aWFscyB7IGZhbHNlIH07CiAgICAgYm9vbCBpc0F1dG9m
aWxsYWJsZVVzZXJuYW1lRmllbGQgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6OlVSTCByZXByZXNl
bnRpbmdQYWdlVVJMOworICAgIFVSTCByZXByZXNlbnRpbmdQYWdlVVJMOwogICAgIFdlYkNvcmU6
OkF1dG9maWxsRmllbGROYW1lIGF1dG9maWxsRmllbGROYW1lIHsgV2ViQ29yZTo6QXV0b2ZpbGxG
aWVsZE5hbWU6Ok5vbmUgfTsKICAgICBTdHJpbmcgcGxhY2Vob2xkZXI7CiAgICAgU3RyaW5nIGxh
YmVsOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgJKHJldmlzaW9uIDIzNjc2
NikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE0OCw3ICsxNDgsNyBA
QCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGUgewogc3RydWN0IFNlc3Npb25TdGF0ZSB7CiAg
ICAgQmFja0ZvcndhcmRMaXN0U3RhdGUgYmFja0ZvcndhcmRMaXN0U3RhdGU7CiAgICAgdWludDY0
X3QgcmVuZGVyVHJlZVNpemU7Ci0gICAgV2ViQ29yZTo6VVJMIHByb3Zpc2lvbmFsVVJMOworICAg
IFVSTCBwcm92aXNpb25hbFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAJKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbS5oIgogCiAjaW5jbHVkZSAiU3VzcGVuZGVkUGFnZVByb3h5Lmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRpZXMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBA
IC0xMDQsOCArMTA0LDggQEAgYm9vbCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtSXNJblNh
bQogICAgIGlmIChtYWluRnJhbWVTdGF0ZS5zdGF0ZU9iamVjdERhdGEgfHwgb3RoZXJNYWluRnJh
bWVTdGF0ZS5zdGF0ZU9iamVjdERhdGEpCiAgICAgICAgIHJldHVybiBtYWluRnJhbWVTdGF0ZS5k
b2N1bWVudFNlcXVlbmNlTnVtYmVyID09IG90aGVyTWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1
ZW5jZU51bWJlcjsKIAotICAgIFdlYkNvcmU6OlVSTCB1cmwgPSBXZWJDb3JlOjpVUkwoeyB9LCBt
YWluRnJhbWVTdGF0ZS51cmxTdHJpbmcpOwotICAgIFdlYkNvcmU6OlVSTCBvdGhlclVSTCA9IFdl
YkNvcmU6OlVSTCh7IH0sIG90aGVyTWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKKyAgICBVUkwg
dXJsID0gVVJMKHsgfSwgbWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKKyAgICBVUkwgb3RoZXJV
UkwgPSBVUkwoeyB9LCBvdGhlck1haW5GcmFtZVN0YXRlLnVybFN0cmluZyk7CiAKICAgICBpZiAo
KHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSB8fCBvdGhlclVSTC5oYXNGcmFnbWVudElkZW50
aWZpZXIoKSkgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIG90aGVyVVJM
KSkKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIg
PT0gb3RoZXJNYWluRnJhbWVTdGF0ZS5kb2N1bWVudFNlcXVlbmNlTnVtYmVyOwpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMSArNzcsMTEgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWluZ0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU3R5bGVTaGVldC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0Zl
YXR1cmVzLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDYgQEAgY2xh
c3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwogY2xhc3MgVGV4dENoZWNraW5n
UmVxdWVzdERhdGE7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVzZXJTdHls
ZVNoZWV0OwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgQ2FjaGVRdWVyeU9wdGlvbnM7CiBzdHJ1Y3Qg
Q29tcG9zaXRpb25VbmRlcmxpbmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJv
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJvcnMuaAkocmV2
aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTQ4LDE4ICs0
NywxOCBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGCiBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlz
dEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7Ci1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3Qg
V2ViQ29yZTo6VVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29u
c3QgVVJMJik7CiAKICNpZiBVU0UoU09VUCkKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgZG93bmxv
YWROZXR3b3JrRXJyb3IoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsK
K1dlYkNvcmU6OlJlc291cmNlRXJyb3IgZG93bmxvYWROZXR3b3JrRXJyb3IoY29uc3QgVVJMJiwg
Y29uc3QgV1RGOjpTdHJpbmcmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZG93bmxvYWRDYW5j
ZWxsZWRCeVVzZXJFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oR1RLKQotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwcmludEVycm9yKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7Ci1XZWJDb3JlOjpSZXNvdXJjZUVycm9y
IHByaW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdlVG9QcmludChjb25zdCBXZWJDb3JlOjpVUkwmKTsK
K1dlYkNvcmU6OlJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBVUkwmLCBjb25zdCBXVEY6
OlN0cmluZyYpOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJvcihj
b25zdCBVUkwmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJp
bnQoY29uc3QgVVJMJik7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05v
ZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAkocmV2aXNpb24g
MjM2NzY2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMywzMiArMjMsMzEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIFdlYlVSTF9oCi0jZGVmaW5lIFdlYlVSTF9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmpl
Y3Q6OlR5cGU6OlVSTD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VVJMPiBjcmVhdGUoY29u
c3QgV1RGOjpTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0aWMgUmVmPEFQSTo6VVJMPiBjcmVhdGUo
Y29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFVSTChzdHJpbmcpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFVSTD4gY3JlYXRl
KGNvbnN0IFVSTCogYmFzZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIHJlbGF0aXZlVVJMKQorICAg
IHN0YXRpYyBSZWY8QVBJOjpVUkw+IGNyZWF0ZShjb25zdCBBUEk6OlVSTCogYmFzZVVSTCwgY29u
c3QgV1RGOjpTdHJpbmcmIHJlbGF0aXZlVVJMKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJhc2VV
UkwpOwogICAgICAgICBiYXNlVVJMLT5wYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGF1
dG8gYWJzb2x1dGVVUkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlVSTD4oKmJhc2VVUkwt
Pm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CisgICAgICAgIGF1dG8gYWJzb2x1dGVV
UkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0
KCksIHJlbGF0aXZlVVJMKTsKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGFic29sdXRlVVJM
U3RyaW5nID0gYWJzb2x1dGVVUkwtPnN0cmluZygpOwogCi0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJzb2x1dGVVUkxTdHJpbmcpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVBJOjpVUkwoV1RGTW92ZShhYnNvbHV0ZVVSTCks
IGFic29sdXRlVVJMU3RyaW5nKSk7CiAgICAgfQogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQpAQCAtNTYsNyArNTUsNyBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7
IH0KIAotICAgIHN0YXRpYyBib29sIGVxdWFscyhjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikK
KyAgICBzdGF0aWMgYm9vbCBlcXVhbHMoY29uc3QgQVBJOjpVUkwmIGEsIGNvbnN0IEFQSTo6VVJM
JiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGEudXJsKCkgPT0gYi51cmwoKTsKICAgICB9CkBA
IC0xMDYsMTMgKzEwNSwxMyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBVUkwoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJMLCBjb25zdCBXVEY6OlN0cmluZyYg
c3RyaW5nKQorICAgIFVSTChzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpVUkw+IHBhcnNlZFVSTCwgY29u
c3QgV1RGOjpTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCiAgICAg
ICAgICwgbV9wYXJzZWRVUkwoV1RGTW92ZShwYXJzZWRVUkwpKQogICAgIHsKICAgICB9CiAKLSAg
ICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0CisgICAgY29uc3QgV1RGOjpVUkwmIHVy
bCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5KCk7CiAgICAgICAg
IHJldHVybiAqbV9wYXJzZWRVUkw7CkBAIC0xMjIsMTMgKzEyMSwxMSBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgaWYgKG1fcGFyc2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPihXZWJDb3JlOjpV
UkwoKSwgbV9zdHJpbmcpOworICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8
V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmlu
ZyBtX3N0cmluZzsKLSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpVUkw+IG1f
cGFyc2VkVVJMOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdURjo6VVJMPiBtX3BhcnNl
ZFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVJMX2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElVc2VyQ29udGVudFVSTFBhdHRlcm4uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBA
QAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uaG9z
dCgpOyB9CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHNjaGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0dGVybi5zY2hlbWUoKTsgfQogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0dGVybi5pc1ZhbGlkKCk7IH07Ci0gICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0IFdURjo6U3Ry
aW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdlYkNvcmU6OlVSTCh7
IH0sIHVybCkpOyB9CisgICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdURjo6VVJMKHsgfSwgdXJsKSk7IH0K
ICAgICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1h
dGNoU3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgcGF0dGVyblN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRGF0YS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9X
S1VSTFJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS1VSTFJlc3BvbnNlLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIkFQSVVSTFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L2NmL1dLVVJMQ0YubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
Y2YvV0tVUkxDRi5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvY2YvV0tVUkxDRi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogCiAj
aW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLTlNVUkwuaCIKLSNpbXBvcnQgPFdlYkNv
cmUvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8d3Rm
L2NmL0NGVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBX
S19BUElfRU5BQkxFRApAQCAtNTYsNyArNTYsNyBAQCBXS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhD
RlVSTChDRlVSTFJlZiBjCiAjZW5kaWYKIAogICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgV2Vi
Q29yZTo6Z2V0VVJMQnl0ZXMoY2ZVUkwsIHVybEJ5dGVzKTsKKyAgICBXVEY6OmdldFVSTEJ5dGVz
KGNmVVJMLCB1cmxCeXRlcyk7CiAKICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSSh1
cmxCeXRlcy5kYXRhKCkpOwogfQpAQCAtNjksNSArNjksNSBAQCBDRlVSTFJlZiBXS1VSTENvcHlD
RlVSTChDRkFsbG9jYXRvclJlZiBhCiAgICAgLy8gVVRGLTggd2hpY2ggdXNlcyBsZXNzIG1lbW9y
eSBhbmQgaXMgd2hhdCBXZWJLaXQgY2xpZW50cyBtaWdodCBleHBlY3QuCiAKICAgICBDU3RyaW5n
IGJ1ZmZlciA9IFdlYktpdDo6dG9JbXBsKFVSTFJlZiktPnN0cmluZygpLnV0ZjgoKTsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5sZW5ndGgoKSwgMCkubGVha1JlZigpOworICAgIHJldHVybiBXVEY6OmNyZWF0ZUNGVVJMRnJv
bUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIubGVuZ3RoKCksIDApLmxlYWtSZWYoKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbQkocmV2
aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJh
cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvQ0ZVUkxFeHRy
YXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1w
b3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01MCw3ICs1MCw3IEBAICsgKGlu
c3RhbmNldHlwZSlfd2ViX1VSTFdpdGhXVEZTdHJpbmc6KGMKIC0gKFN0cmluZylfd2ViX29yaWdp
bmFsRGF0YUFzV1RGU3RyaW5nCiB7CiAgICAgQ1N0cmluZyBvcmlnaW5hbERhdGE7Ci0gICAgZ2V0
VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXNlbGYsIG9yaWdpbmFsRGF0YSk7CisgICAgV1RG
OjpnZXRVUkxCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpc2VsZiwgb3JpZ2luYWxEYXRhKTsKICAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChvcmlnaW5hbERhdGEpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAkocmV2aXNpb24gMjM2
NzY2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0NGVVJMRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL2NmL0NGVVJMRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogCiAjaWYgVVNFKEZPVU5E
QVRJT04pCkBAIC01OTksOCArNTk5LDggQEAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Q0ZVUkxSZWYgdQogICAgIGlmIChiYXNlVVJMKQogICAgICAgICBlbmNvZGUoZW5jb2RlciwgYmFz
ZVVSTCk7CiAKLSAgICBVUkxDaGFyQnVmZmVyIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHVy
bCwgdXJsQnl0ZXMpOworICAgIFdURjo6VVJMQ2hhckJ1ZmZlciB1cmxCeXRlczsKKyAgICBXVEY6
OmdldFVSTEJ5dGVzKHVybCwgdXJsQnl0ZXMpOwogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVybEJ5dGVzLmRhdGEo
KSksIHVybEJ5dGVzLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCBkYXRhUmVmZXJlbmNlOwogfQpA
QCAtNjMxLDcgKzYzMSw3IEBAIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0
cjwKICAgICB9CiAjZW5kaWYKIAotICAgIHJlc3VsdCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih1cmxCeXRlcy5kYXRhKCkpLCB1cmxCeXRlcy5z
aXplKCksIGJhc2VVUkwuZ2V0KCkpOworICAgIHJlc3VsdCA9IFdURjo6Y3JlYXRlQ0ZVUkxGcm9t
QnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJ5dGVzLmRhdGEoKSksIHVy
bEJ5dGVzLnNpemUoKSwgYmFzZVVSTC5nZXQoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uUmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGV4dEluZGljYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTYwLDggKzYwLDggQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uIAogICAgIGJvb2wgcHJldmVudFRleHRJbnRlcmFjdGlvbiB7IGZhbHNlIH07CiAjZW5k
aWYKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGFkanVzdGVkUG9pbnRGb3JOb2RlUmVzcG9uZGlu
Z1RvQ2xpY2tFdmVudHM7Ci0gICAgV2ViQ29yZTo6VVJMIHVybDsKLSAgICBXZWJDb3JlOjpVUkwg
aW1hZ2VVUkw7CisgICAgVVJMIHVybDsKKyAgICBVUkwgaW1hZ2VVUkw7CiAgICAgU3RyaW5nIHRp
dGxlOwogICAgIFN0cmluZyBpZEF0dHJpYnV0ZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGJvdW5k
czsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAJKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBGcmFtZUxvYWRTdGF0ZTo6fkZy
YW1lTG9hZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92
aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZFN0YXRl
OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQo
bV9wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwogCkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgRnJh
bWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWwKICAgICBtX3Byb3Zpc2lvbmFsVVJMID0g
dXJsOwogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIEZyYW1lTG9h
ZFN0YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKTsK
IApAQCAtODEsMTIgKzgxLDEyIEBAIHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZEZhaWxMb2FkKCkK
ICAgICBtX3N0YXRlID0gU3RhdGU6OkZpbmlzaGVkOwogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRl
OjpkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2
b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgbV91cmwgPSB1cmw7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OnNl
dFVucmVhY2hhYmxlVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwpCit2b2lk
IEZyYW1lTG9hZFN0YXRlOjpzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMKQogewogICAgIG1fbGFzdFVucmVhY2hhYmxlVVJMID0gbV91bnJlYWNoYWJsZVVSTDsKICAg
ICBtX3VucmVhY2hhYmxlVVJMID0gdW5yZWFjaGFibGVVUkw7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM5LDI5ICszOSwy
OSBAQCBwdWJsaWM6CiAgICAgICAgIEZpbmlzaGVkCiAgICAgfTsKIAotICAgIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7
CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKTsK
ICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKIAogICAgIHZvaWQgZGlkQ29tbWl0
TG9hZCgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZCgpOwogICAgIHZvaWQgZGlkRmFpbExvYWQo
KTsKIAotICAgIHZvaWQgZGlkU2FtZURvY3VtZW50Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6
OlVSTCYpOworICAgIHZvaWQgZGlkU2FtZURvY3VtZW50Tm90aWZpY2F0aW9uKGNvbnN0IFVSTCYp
OwogCiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Ci0gICAgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIGNvbnN0
IFdlYkNvcmU6OlVSTCYgcHJvdmlzaW9uYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lv
bmFsVVJMOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQor
ICAgIGNvbnN0IFVSTCYgcHJvdmlzaW9uYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lv
bmFsVVJMOyB9CiAKLSAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFdlYkNvcmU6OlVS
TCYpOwotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJl
dHVybiBtX3VucmVhY2hhYmxlVVJMOyB9CisgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25z
dCBVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4g
bV91bnJlYWNoYWJsZVVSTDsgfQogCiBwcml2YXRlOgogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0
ZTo6RmluaXNoZWQgfTsKLSAgICBXZWJDb3JlOjpVUkwgbV91cmw7Ci0gICAgV2ViQ29yZTo6VVJM
IG1fcHJvdmlzaW9uYWxVUkw7Ci0gICAgV2ViQ29yZTo6VVJMIG1fdW5yZWFjaGFibGVVUkw7Ci0g
ICAgV2ViQ29yZTo6VVJMIG1fbGFzdFVucmVhY2hhYmxlVVJMOworICAgIFVSTCBtX3VybDsKKyAg
ICBVUkwgbV9wcm92aXNpb25hbFVSTDsKKyAgICBVUkwgbV91bnJlYWNoYWJsZVVSTDsKKyAgICBV
UkwgbV9sYXN0VW5yZWFjaGFibGVVUkw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCShyZXZpc2lvbiAy
MzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjA2LDkgKzIwNiw5IEBAIGJvb2wgUGFnZUxvYWRTdGF0ZTo6aGFzT25s
eVNlY3VyZUNvbnRlbnQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGRhdGEuc3Rh
dGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9j
b2xJcyhkYXRhLnByb3Zpc2lvbmFsVVJMLCAiaHR0cHMiKTsKKyAgICAgICAgcmV0dXJuIFdURjo6
cHJvdG9jb2xJcyhkYXRhLnByb3Zpc2lvbmFsVVJMLCAiaHR0cHMiKTsKIAotICAgIHJldHVybiBX
ZWJDb3JlOjpwcm90b2NvbElzKGRhdGEudXJsLCAiaHR0cHMiKTsKKyAgICByZXR1cm4gV1RGOjpw
cm90b2NvbElzKGRhdGEudXJsLCAiaHR0cHMiKTsKIH0KIAogYm9vbCBQYWdlTG9hZFN0YXRlOjpo
YXNPbmx5U2VjdXJlQ29udGVudCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TYWZlQnJvd3NpbmdSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5nUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBPQkpDX0NMQVNTIFNTQlNlcnZpY2VMb29rdXBS
ZXN1bHQ7CkBAIC0zNiwxMiArMzYsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTYWZl
QnJvd3NpbmdSZXN1bHQgOiBwdWJsaWMgUmVmQ291bnRlZDxTYWZlQnJvd3NpbmdSZXN1bHQ+IHsK
IHB1YmxpYzoKICNpZiBIQVZFKFNBRkVfQlJPV1NJTkcpCi0gICAgc3RhdGljIFJlZjxTYWZlQnJv
d3NpbmdSZXN1bHQ+IGNyZWF0ZShXZWJDb3JlOjpVUkwmJiB1cmwsIFNTQlNlcnZpY2VMb29rdXBS
ZXN1bHQgKnJlc3VsdCkKKyAgICBzdGF0aWMgUmVmPFNhZmVCcm93c2luZ1Jlc3VsdD4gY3JlYXRl
KFVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2FmZUJyb3dzaW5nUmVzdWx0KFdURk1vdmUodXJsKSwg
cmVzdWx0KSk7CiAgICAgfQogI2VuZGlmCi0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1
cm4gbV91cmw7IH0KICAgICBjb25zdCBTdHJpbmcmIHByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4g
bV9wcm92aWRlcjsgfQogICAgIGJvb2wgaXNQaGlzaGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNQ
aGlzaGluZzsgfQogICAgIGJvb2wgaXNNYWx3YXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc01hbHdh
cmU7IH0KQEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIEhBVkUoU0FG
RV9CUk9XU0lORykKLSAgICBTYWZlQnJvd3NpbmdSZXN1bHQoV2ViQ29yZTo6VVJMJiYsIFNTQlNl
cnZpY2VMb29rdXBSZXN1bHQgKik7CisgICAgU2FmZUJyb3dzaW5nUmVzdWx0KFVSTCYmLCBTU0JT
ZXJ2aWNlTG9va3VwUmVzdWx0ICopOwogI2VuZGlmCi0gICAgV2ViQ29yZTo6VVJMIG1fdXJsOwor
ICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV9wcm92aWRlcjsKICAgICBib29sIG1faXNQaGlz
aGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzTWFsd2FyZSB7IGZhbHNlIH07CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L0RlYnVnVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJl
Y3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKIE9CSkNfQ0xBU1MgUUxQcmV2aWV3Q29udHJvbGxl
cjsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCB1cGRhdGVQ
cm9ncmVzcyhmbG9hdCk7Ci0gICAgdm9pZCBmaW5pc2goV2ViQ29yZTo6VVJMKTsKKyAgICB2b2lk
IGZpbmlzaChVUkwpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgdm9pZCBmYWlsKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MSwxMCArNzEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01v
ZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lLCBGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lkIHNldENvb2tpZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwotICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVS
TCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lkIGdl
dEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOwotICAgIHZvaWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRDb29r
aWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhh
bmRsZXIpOwogCiAgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lv
bklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vz
c2lvbklELCBGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFt
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDE0ICs4MCwxNCBAQCBwdWJsaWM6CiAKICAg
ICBGcmFtZUxvYWRTdGF0ZSYgZnJhbWVMb2FkU3RhdGUoKSB7IHJldHVybiBtX2ZyYW1lTG9hZFN0
YXRlOyB9CiAKLSAgICB2b2lkIGxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9p
ZCBsb2FkVVJMKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgc3RvcExvYWRpbmcoKSBjb25zdDsKIAot
ICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRT
dGF0ZS51cmwoKTsgfQotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgcHJvdmlzaW9uYWxVUkwoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnByb3Zpc2lvbmFsVVJMKCk7IH0KKyAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7IH0K
KyAgICBjb25zdCBVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxv
YWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9CiAKLSAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJM
KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFi
bGVVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVucmVhY2hhYmxlVVJMKCk7
IH0KKyAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYpOworICAgIGNvbnN0IFVS
TCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVucmVh
Y2hhYmxlVVJMKCk7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX01JTUVUeXBlOyB9CiAgICAgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jb250YWluc1BsdWdpbkRvY3VtZW50OyB9CkBAIC0xMDgsMTMgKzEwOCwx
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFJlc291
cmNlRGF0YShBUEk6OlVSTCosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3Qg
V2ViQ29yZTo6VVJMJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZChjb25zdCBVUkwmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNp
b25hbExvYWQoKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgV2ViQ2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50KTsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkKCk7Ci0gICAg
dm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOyAvLyBl
Zy4gYW5jaG9yIG5hdmlnYXRpb24sIHNlc3Npb24gc3RhdGUgY2hhbmdlLgorICAgIHZvaWQgZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBVUkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0
aW9uLCBzZXNzaW9uIHN0YXRlIGNoYW5nZS4KICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGlj
eUxpc3RlbmVyUHJveHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rp
b24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
VmVjdG9yPFJlZjxTYWZlQnJvd3NpbmdSZXN1bHQ+PiYmKT4mJiwgU2hvdWxkRXhwZWN0U2FmZUJy
b3dzaW5nUmVzdWx0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVj
dG9yUHJveHkuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDYgQEAgT0JK
Q19DTEFTUyBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyOwogI2luY2x1ZGUgIldlYlZpZXcuaCIK
ICNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtMTUxLDcgKzE0Nyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGluc3BlY3RvclBhZ2VVUkwoKTsKICAgICBzdGF0aWMg
U3RyaW5nIGluc3BlY3RvclRlc3RQYWdlVVJMKCk7CiAgICAgc3RhdGljIFN0cmluZyBpbnNwZWN0
b3JCYXNlVVJMKCk7Ci0gICAgc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShj
b25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBzdGF0aWMgYm9vbCBpc01haW5PclRlc3RJbnNwZWN0
b3JQYWdlKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1X
aW5kb3dXaWR0aDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bVdpbmRvd0hlaWdo
dDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAj
aW5jbHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDEzICsxNTMs
MTMgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Nob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRJbmRpY2F0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRy
YWNpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+CiAKQEAgLTEwNzEsNyArMTA3MSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG8KIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2Fk
U3RhdGUudHJhbnNhY3Rpb24oKTsKIAotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJ
UmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IGJs
YW5rVVJMKCkuc3RyaW5nKCkpOworICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVx
dWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IFdURjo6
YmxhbmtVUkwoKS5zdHJpbmcoKSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVh
dHRhY2hUb1dlYlByb2Nlc3MoKTsKQEAgLTEwOTIsNyArMTA5Miw3IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG8KICAgICByZXR1cm4gV1RGTW92ZShuYXZpZ2F0aW9u
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhLCBib29sIGZvclNhZmVCcm93c2luZykKK3ZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxE
YXRhLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVS
TCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgYm9vbCBmb3JTYWZlQnJv
d3NpbmcpCiB7CiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGluIHRoZSBwcm9jZXNzIG9m
IGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBub3QgYXR0ZW1wdCB0bwog
ICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0aXZlIEhUTUwgbG9hZCBhcyB0aGlzIHdpbGwg
cHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZyb20gYmVpbmcKQEAgLTExNDEsNyArMTE0MSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoQVAKICAgICAgICAgcmVh
dHRhY2hUb1dlYlByb2Nlc3MoKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2Fk
U3RhdGUudHJhbnNhY3Rpb24oKTsKLSAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJl
cXVlc3RVUkwodHJhbnNhY3Rpb24sIGJsYW5rVVJMKCkuc3RyaW5nKCkpOworICAgIG1fcGFnZUxv
YWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgV1RGOjpibGFua1VS
TCgpLnN0cmluZygpKTsKIAogICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAg
IGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IDA7CkBAIC0xMTYwLDcgKzExNjAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoCiAgICAgaWYgKG1faXNDbG9z
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSmF2YVNj
cmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghaXNWYWxpZCgpKQpAQCAtMzUwNiw3ICszNTA2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKAogICAgIG1fbmF2aWdhdGlv
blN0YXRlLT5kaWREZXN0cm95TmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmIHVybCwgV2ViQ29yZTo6
VVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYgdXJsLCBVUkwmJiB1bnJlYWNoYWJsZVVS
TCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTM2MDQsNyArMzYwNCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmUKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xp
ZW50LT5kaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgqdGhpcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90LCBXZWJDb3JlOjpVUkwmJiB1cmwpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdl
UHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgVVJMJiYg
dXJsKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7
CiAKQEAgLTM4NzQsNyArMzg3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZv
ckZyYW1lKHUKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgV2ViQ29yZTo6VVJM
JiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgb3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUs
IFVSTCYmIHVybCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGllbnRQ
cm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQyNDEsNyArNDI0MSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsU3VibWl0Rm9ybSh1aW50NjQKICAgICB9KTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJDb3JlOjpV
UkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYg
bm90aWZpY2F0aW9ucykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50UnVsZUxpc3ROb3RpZmlj
YXRpb24oVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBWZWN0b3I8U3Ry
aW5nPiYmIG5vdGlmaWNhdGlvbnMpCiB7CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZW50
UnVsZUxpc3ROb3RpZmljYXRpb24oKnRoaXMsIFdURk1vdmUodXJsKSwgV1RGTW92ZShpZGVudGlm
aWVycyksIFdURk1vdmUobm90aWZpY2F0aW9ucykpOwogfQpAQCAtNTk1Miw3ICs1OTUyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoUAogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIGlmIChtX3Byb2Nlc3MtPmlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpKSB7Ci0gICAg
ICAgIFN0cmluZyBkb21haW4gPSBXZWJDb3JlOjp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
KFdlYkNvcmU6OlVSTCh7IH0sIGN1cnJlbnRVUkwoKSkuaG9zdCgpLnRvU3RyaW5nKCkpOworICAg
ICAgICBTdHJpbmcgZG9tYWluID0gV2ViQ29yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bihVUkwoeyB9LCBjdXJyZW50VVJMKCkpLmhvc3QoKS50b1N0cmluZygpKTsKICAgICAgICAgaWYg
KCFkb21haW4uaXNFbXB0eSgpKQogICAgICAgICAgICAgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
RW5oYW5jZWRQcml2YWN5KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6ZG9tYWluQ2F1
c2luZ0pldHNhbUtleSgpLCBkb21haW4sIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAg
IH0KQEAgLTcwMzEsNyArNzAzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1bndyYXBDcnlwdG9L
ZXkoY29uc3QKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBj
aGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
VVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTc2NzYsOSArNzY3Niw5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jaygKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVS
TFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYgaGFuZGxl
ciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgYXV0byBjYW5vbmljYWxpemVkU2NoZW1l
ID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUpOworICAgIGF1dG8g
Y2Fub25pY2FsaXplZFNjaGVtZSA9IFdURjo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNj
aGVtZShzY2hlbWUpOwogICAgIEFTU0VSVChjYW5vbmljYWxpemVkU2NoZW1lKTsKLSAgICBBU1NF
UlQoIVVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUo
KSkpOworICAgIEFTU0VSVCghV1RGOjpVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZShjYW5vbmlj
YWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKIAogICAgIGF1dG8gc2NoZW1lUmVzdWx0ID0gbV91cmxT
Y2hlbWVIYW5kbGVyc0J5U2NoZW1lLmFkZChjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCksIGhh
bmRsZXIuZ2V0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoc2NoZW1lUmVzdWx0LCBzY2hlbWVSZXN1
bHQuaXNOZXdFbnRyeSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDYgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1NlYXJjaFBvcHVwTWVudS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9UZXh0R3JhbnVsYXJpdHkuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAg
LTk1LDYgKzk0LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NjQsNyArNDY0LDcgQEAgcHVibGljOgogICAg
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmln
YXRpb24+IGxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURpcmVjdG9yeVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKLSAgICB2
b2lkIGxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0ciwg
Ym9vbCBmb3JTYWZlQnJvd3NpbmcgPSBmYWxzZSk7CisgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRN
TChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25z
dCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSA9IG51bGxwdHIsIGJvb2wgZm9yU2FmZUJyb3dzaW5nID0gZmFsc2UpOwogICAgIHZv
aWQgbG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9
IG51bGxwdHIpOwogICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2so
Y29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNv
cmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKIApAQCAtMTA2NCw4ICsxMDY0LDggQEAgcHVibGlj
OgogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiBy
ZXN1bHQpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBXZWJDb3Jl
OjpVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJik7Ci0gICAgdm9pZCBzYXZlUERGVG9G
aWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFdlYkNvcmU6
OlVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2
b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmls
ZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRh
Jik7CisgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIFVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNhdmVQREZUb1RlbXBvcmFy
eUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25SYXcoY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQp
OwogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBs
aWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJp
bmcmIHBkZlVVSUQpOwpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW53
cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGJvb2wmIHN1Y2NlZWRlZCwgVmVj
dG9yPHVpbnQ4X3Q+Jik7CiAjZW5kaWYKIAotICAgIHZvaWQgc2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVu
Z2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lk
IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgs
IGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmLCBTdHJpbmcmIHJlc3Vs
dCk7CiAKICAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0LCBXZWJDb3JlOjpJ
bnRTaXplIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucywgV1RGOjpGdW5jdGlvbjx2b2lkIChj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
IApAQCAtMTM0Niw3ICsxMzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QXBwbGljYXRpb25N
YW5pZmVzdChGdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGlj
YXRpb25NYW5pZmVzdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAjZW5kaWYKIAotICAg
IHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBXZWJDb3JlOjpVUkwmIGJsb2JVUkwsIGNv
bnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKKyAgICB2
b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiBibG9iVVJMLCBjb25zdCBTdHJpbmcm
IHBhdGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCBzdWNjZXNzKT4mJik7CiAKICAgICBXZWJQcmVmZXJl
bmNlc1N0b3JlIHByZWZlcmVuY2VzU3RvcmUoKSBjb25zdDsKIApAQCAtMTQxMSwxNyArMTQxMSwx
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRlU3ViZnJhbWUodWludDY0X3QgZnJhbWVJ
RCk7CiAgICAgdm9pZCBkaWRDcmVhdGVXaW5kb3codWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
R2xvYmFsV2luZG93SWRlbnRpZmllciYmKTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdl
YkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRh
dGEmKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVV
UkwsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwog
ICAgIHZvaWQgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXkpOwogICAgIHZvaWQgZGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2b2lkIGRpZENo
YW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJik7CisgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25h
bFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJM
JiYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJM
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29u
c3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCB1aW50MzJfdCBzYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgV2ViQ29yZTo6
VVJMJiYsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50
MzJfdCBzYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYsIGNvbnN0IFVzZXJEYXRhJik7
CiAgICAgdm9pZCBkaWRDaGFuZ2VNYWluRG9jdW1lbnQodWludDY0X3QgZnJhbWVJRCk7CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNDQ4LDExICsxNDQ4LDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
Jik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBs
ZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOworICAgIHZv
aWQgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkmKTsKIAogICAgIHZvaWQgd2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3Qgc291cmNlRnJhbWVJRCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+JiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJik7CiAgICAgICAgIAotICAgIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdl
YkNvcmU6OlVSTCYmLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5n
PiYmIG5vdGlmaWNhdGlvbnMpOworICAgIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
KFVSTCYmLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiYmIG5v
dGlmaWNhdGlvbnMpOwogCiAgICAgLy8gSGlzdG9yeSBjbGllbnQKICAgICB2b2lkIGRpZE5hdmln
YXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1aW50
NjRfdCBmcmFtZUlEKTsKQEAgLTE0NzMsOCArMTQ3Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1
bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodWludDMyX3Qgb3BhcXVlUGx1Z2luVW5hdmFp
bGFiaWxpdHlSZWFzb24sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1
Z2luVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpbnNQYWdlVVJMU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpOwogI2Vu
ZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShXRUJHTCkKLSAg
ICB2b2lkIHdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOwotICAgIHZvaWQgcmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lk
IHdlYkdMUG9saWN5Rm9yVVJMKFVSTCYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXZWJHTFBv
bGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgcmVzb2x2ZVdlYkdMUG9saWN5
Rm9yVVJMKFVSTCYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lG
b3JVUkw6OkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAgICAgdm9p
ZCBzZXRUb29sYmFyc0FyZVZpc2libGUoYm9vbCB0b29sYmFyc0FyZVZpc2libGUpOwogICAgIHZv
aWQgZ2V0VG9vbGJhcnNBcmVWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xi
YXJzQXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYpOwpAQCAtMTY4Nyw3ICsxNjg3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZSh1aW50NjRfdCBw
bHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgdWludDY0X3QgY29tcGxleFRleHRJbnB1
dFN0YXRlKTsKICNlbmRpZgogCi0gICAgYm9vbCBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYp
OworICAgIGJvb2wgbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShjb25zdCBV
UkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKIAogI2lmIFVTRShBVVRPTUFUSUNfVEVY
VF9SRVBMQUNFTUVOVCkKICAgICB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodWlu
dDMyX3QgcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIFN0cmluZyBtaW1lVHlwZSwgU3RyaW5n
IHBsdWdpblVSTFN0cmluZywgU3RyaW5nIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5nLCBT
dHJpbmcgZnJhbWVVUkxTdHJpbmcsIFN0cmluZyBwYWdlVVJMU3RyaW5nKQogI2VuZGlmIC8vIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJHTFBv
bGljeUZvclVSTChXZWJDb3JlOjpVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVs
YXllZAotICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwgdXJsKSAtPiAo
dWludDMyX3QgbG9hZFBvbGljeSkgRGVsYXllZAorICAgIFdlYkdMUG9saWN5Rm9yVVJMKFVSTCB1
cmwpIC0+ICh1aW50MzJfdCBsb2FkUG9saWN5KSBEZWxheWVkCisgICAgUmVzb2x2ZVdlYkdMUG9s
aWN5Rm9yVVJMKFVSTCB1cmwpIC0+ICh1aW50MzJfdCBsb2FkUG9saWN5KSBEZWxheWVkCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkdMKQogICAgIERpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhzdHJ1
Y3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgRGlkUmVjZWl2
ZUV2ZW50KHVpbnQzMl90IHR5cGUsIGJvb2wgaGFuZGxlZCkKQEAgLTEyOCwxMSArMTI4LDExIEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ3JlYXRlV2luZG93KHVpbnQ2NF90
IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyIHdpbmRvd0lk
ZW50aWZpZXIpCiAKICAgICAjIEZyYW1lIGxvYWQgbWVzc2FnZXMKLSAgICBEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHVucmVhY2hhYmxlVVJMLCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwgdXJsLCBVUkwgdW5y
ZWFjaGFibGVVUkwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIHVybCwgZG91YmxlIGRlbGF5KQogICAg
IERpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKLSAgICBE
aWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMIHVybCkKKyAgICBEaWRDaGFuZ2VQcm92aXNpb25h
bFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJM
IHVybCkKICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBwcm92aXNpb25hbFVSTCwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRD
b21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJf
dCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbywgYm9v
bCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2Vj
dXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQpAQCAtMTQ1LDcgKzE0NSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgRGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkUnVuSW5zZWN1cmVDb250
ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
ICAgICBEaWREZXRlY3RYU1NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKQotICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5cGUsIFdlYkNv
cmU6OlVSTCB1cmwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgdWludDMyX3QgdHlwZSwgVVJMIHVybCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
ICAgICBEaWRDaGFuZ2VNYWluRG9jdW1lbnQodWludDY0X3QgZnJhbWVJRCk7CiAgICAgRGlkRGVz
dHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKQogCkBAIC00MjcsNyArNDI3LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTYXZlUmVjZW50U2VhcmNoZXMoU3Ry
aW5nIG5hbWUsIFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+IHNlYXJjaEl0ZW1zKQogICAg
IExvYWRSZWNlbnRTZWFyY2hlcyhTdHJpbmcgbmFtZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpSZWNl
bnRTZWFyY2g+IHJlc3VsdCkKIAotICAgIFNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihT
dHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUsIFdlYkNvcmU6OlVSTCBvcmlnaW5hdGluZ1VSTCwgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGEpCisgICAgU2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVy
KFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgVVJMIG9yaWdpbmF0aW5nVVJMLCBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YSkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNhdmVQREZUb1RlbXBv
cmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oU3RyaW5nIHN1Z2dlc3RlZEZp
bGVuYW1lLCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhLCBTdHJpbmcgcGRmVVVJRCkKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogCiAgICAgRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBl
YXJhbmNlKFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKLSAgICBDb250ZW50UnVsZUxpc3RO
b3RpZmljYXRpb24oV2ViQ29yZTo6VVJMIHVybCwgVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMs
IFZlY3RvcjxTdHJpbmc+IG5vdGlmaWNhdGlvbnMpCisgICAgQ29udGVudFJ1bGVMaXN0Tm90aWZp
Y2F0aW9uKFVSTCB1cmwsIFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5n
PiBub3RpZmljYXRpb25zKQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkg
JiYgIVBMQVRGT1JNKElPUykKICAgICBBZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCh1aW50
NjRfdCBjb250ZXh0SWQpCkBAIC01NDYsNiArNTQ2LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKICAgICBTdG9wRGlzcGxheUxpbmsodW5zaWduZWQgb2JzZXJ2ZXJJRCkKICNlbmRpZgog
Ci0gICAgU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJ
bmRleCwgU3RyaW5nIGNoYWxsZW5nZVN0cmluZywgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0cmlu
ZyByZXN1bHQpCisgICAgU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVk
IGtleVNpemVJbmRleCwgU3RyaW5nIGNoYWxsZW5nZVN0cmluZywgVVJMIHVybCkgLT4gKFN0cmlu
ZyByZXN1bHQpCiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNiBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0
Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC05NCw2ICs5Myw3
IEBACiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIu
aD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDcgKzIzNCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUoY29uc3QgU3RyaW5n
Jik7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVl
c3QoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUb1NlcnZlcihjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHByZWNvbm5lY3RUb1NlcnZlcihjb25zdCBVUkwmKTsK
IAogICAgIFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUoKSB7IHJldHVybiBtX3Zp
c2l0ZWRMaW5rU3RvcmUuZ2V0KCk7IH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMCAr
NTUsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUHVibGljU3VmZml4Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWRkZW5U
ZXJtaW5hdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8c3RkaW8u
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpw
cm9jZXNzRGlkVGVybWluYXQKICNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQogICAgIGlm
IChwYWdlcy5zaXplKCkgPT0gMSkgewogICAgICAgICBhdXRvJiBwYWdlID0gKnBhZ2VzWzBdOwot
ICAgICAgICBTdHJpbmcgZG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihXZWJD
b3JlOjpVUkwoeyB9LCBwYWdlLmN1cnJlbnRVUkwoKSkuaG9zdCgpLnRvU3RyaW5nKCkpOworICAg
ICAgICBTdHJpbmcgZG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihVUkwoeyB9
LCBwYWdlLmN1cnJlbnRVUkwoKSkuaG9zdCgpLnRvU3RyaW5nKCkpOwogICAgICAgICBpZiAoIWRv
bWFpbi5pc0VtcHR5KCkpCiAgICAgICAgICAgICBwYWdlLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aEVuaGFuY2VkUHJpdmFjeShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmRvbWFpbkNh
dXNpbmdDcmFzaEtleSgpLCBkb21haW4sIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZp
c2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlv
bjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3Mg
VVJMOwogc3RydWN0IFBsdWdpbkluZm87CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQpA
QCAtMTQ2LDEwICsxNDUsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsQWNxdWlyZVVuaXZl
cnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpIHsgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJl
YWRTYW5kYm94RXh0ZW5zaW9uID0gdHJ1ZTsgfQogICAgIHZvaWQgYXNzdW1lUmVhZEFjY2Vzc1Rv
QmFzZVVSTChjb25zdCBTdHJpbmcmKTsKLSAgICBib29sIGhhc0Fzc3VtZWRSZWFkQWNjZXNzVG9V
UkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgYm9vbCBoYXNBc3N1bWVkUmVhZEFj
Y2Vzc1RvVVJMKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgYm9vbCBjaGVja1VSTFJlY2VpdmVk
RnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBjaGVja1VSTFJlY2VpdmVk
RnJvbVdlYlByb2Nlc3MoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgYm9vbCBjaGVja1VSTFJl
Y2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgVVJMJik7CiAKICAgICBzdGF0aWMgYm9vbCBmdWxs
S2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2
aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXQKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlRm9y
RGVidWdNb2RlKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgVVJMJiB1cmwsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1YgogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1l
UHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFVSTCkKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dGcmFtZU5hdmlnYXRpb24oY29uc3Qg
V2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFVSTCYgcGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZp
c2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBjbGFzcyBX
b3JrUXVldWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
LWNsYXNzIFVSTDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogfQogCkBAIC04NCwy
OCArODMsMjggQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUo
KTsKIAotICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgbG9nVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7Ci0gICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0
aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwotICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgV2ViQ29yZTo6VVJMJiwgU2Vjb25kcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNl
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAg
dm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25z
dCBXZWJGcmFtZVByb3h5JiwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKTsKKyAgICB2b2lkIGxvZ1VzZXJJ
bnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldExhc3RTZWVuKGNv
bnN0IFVSTCYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2
b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShj
b25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwm
IHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRl
cihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YkZyYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZy
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0
ZXJlZEFzUmVkaXJlY3RpbmdUbyhjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3RSZWRpcmVjdGVkRnJv
bSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNl
dEdyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCk7Ci0gICAgdm9pZCBpc0dy
YW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7Ci0gICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3Qg
V2ViQ29yZTo6VVJMJiBzdWJmcmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0g
ICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6
VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9p
ZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJy
ZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAg
dm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwm
IHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20p
OwotICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVS
TCYgdG9wRnJhbWVIb3N0TmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0
ZWRUbyk7Ci0gICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJD
b3JlOjpVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVS
ZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgaXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoY29uc3QgVVJMJiBzdWJy
ZXNvdXJjZSwgY29uc3QgVVJMJiB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoY29uc3QgVVJMJiBz
dWJGcmFtZSwgY29uc3QgVVJMJiB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBo
b3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNl
KGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRH
cmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIGJvb2wpOworICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVk
KGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3ViZnJhbWUsIGNvbnN0
IFVSTCYgdG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3Jp
Z2luKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZv
aWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFVSTCYgc3VicmVzb3VyY2Us
IGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiBo
b3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKKyAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RUbyhjb25zdCBVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRp
cmVjdGVkVG8pOworICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3Qg
VVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20p
OwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZUZvckRv
bWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBTaG91bGRDbGVhckZp
cnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVh
ckJsb2NraW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTMyLDcgKzEzMSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdN
b2RlKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRQcmV2
YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICAKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKSB7IG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spOyB9CiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3Ry
aW5nJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0
b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yZS5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYg
QEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBVUkw7CiBzdHJ1Y3QgQ29va2llOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDcgKzY5LDcgQEAgdm9pZCBOYXZpZ2F0aW9uOjpzZXRDdXJyZW50UmVxdWVzdChSZXNvdQog
ICAgIG1fY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllciA9IHByb2Nlc3NJZGVudGlmaWVy
OwogfQogCi12b2lkIE5hdmlnYXRpb246OmFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsKQordm9pZCBOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVSTChjb25z
dCBXVEY6OlVSTCYgdXJsKQogewogICAgIGlmIChtX3JlZGlyZWN0Q2hhaW4uaXNFbXB0eSgpIHx8
IG1fcmVkaXJlY3RDaGFpbi5sYXN0KCkgIT0gdXJsKQogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4u
YXBwZW5kKHVybCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDggKzc3LDggQEAgcHVibGlj
OgogICAgIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogZnJvbUl0ZW0oKSBjb25zdCB7
IHJldHVybiBtX2Zyb21JdGVtLmdldCgpOyB9CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUxvYWRUeXBlPiBiYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZTsgfQogCi0gICAgdm9pZCBhcHBlbmRSZWRpcmVjdGlv
blVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiB0YWtl
UmVkaXJlY3RDaGFpbigpIHsgcmV0dXJuIFdURk1vdmUobV9yZWRpcmVjdENoYWluKTsgfQorICAg
IHZvaWQgYXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV1RGOjpVUkwmKTsKKyAgICBWZWN0b3I8
V1RGOjpVUkw+IHRha2VSZWRpcmVjdENoYWluKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlZGlyZWN0
Q2hhaW4pOyB9CiAKICAgICB2b2lkIHNldFdhc1VzZXJJbml0aWF0ZWQoYm9vbCB2YWx1ZSkgeyBt
X3dhc1VzZXJJbml0aWF0ZWQgPSB2YWx1ZTsgfQogICAgIGJvb2wgd2FzVXNlckluaXRpYXRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2FzVXNlckluaXRpYXRlZDsgfQpAQCAtMTE0LDcgKzExNCw3IEBA
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0
OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IG1fY3VycmVudFJlcXVlc3RQ
cm9jZXNzSWRlbnRpZmllcjsKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBtX3JlZGlyZWN0Q2hh
aW47CisgICAgVmVjdG9yPFdURjo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9vbCBtX3dh
c1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3Nob3VsZEZvcmNlRG93bmxvYWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1JlZGlyZWN0IHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaAkocmV2
aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25BY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkFQ
SVVzZXJJbml0aWF0ZWRBY3Rpb24uaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJn
ZXRGcmFtZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldEZyYW1lTmFtZTsgfQogCiAgICAg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4g
bV9yZXF1ZXN0OyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0
IHsgcmV0dXJuICFtX29yaWdpbmFsVVJMLmlzTnVsbCgpID8gbV9vcmlnaW5hbFVSTCA6IG1fcmVx
dWVzdC51cmwoKTsgfQorICAgIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0IHsg
cmV0dXJuICFtX29yaWdpbmFsVVJMLmlzTnVsbCgpID8gbV9vcmlnaW5hbFVSTCA6IG1fcmVxdWVz
dC51cmwoKTsgfQogCiAgICAgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUo
KSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlOyB9
CiAgICAgV2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycygpIGNvbnN0IHsgcmV0
dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzOyB9CkBAIC02Niw3ICs2Niw3IEBA
IHB1YmxpYzoKICAgICBOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYWluRnJhbWVOYXZpZ2F0aW9uLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgTmF2
aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSwgQVBJOjpGcmFtZUluZm8qIHRh
cmdldEZyYW1lLCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3Jp
Z2luYWxVUkwsIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzLCBSZWZQdHI8VXNlckluaXRpYXRlZEFj
dGlvbj4mJiB1c2VySW5pdGlhdGVkQWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG1haW5GcmFtZU5h
dmlnYXRpb24pCisgICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSwg
QVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiB0
YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0
IFdURjo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxV
c2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlv
biogbWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAgOiBtX3NvdXJjZUZyYW1lKHNvdXJjZUZy
YW1lKQogICAgICAgICAsIG1fdGFyZ2V0RnJhbWUodGFyZ2V0RnJhbWUpCiAgICAgICAgICwgbV90
YXJnZXRGcmFtZU5hbWUodGFyZ2V0RnJhbWVOYW1lKQpAQCAtNzksNyArNzksNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICB9CiAKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJj
ZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpT
dHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlu
a3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24pCisg
ICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSwgQVBJOjpGcmFtZUlu
Zm8qIHRhcmdldEZyYW1lLCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5h
bWUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBv
cmlnaW5hbFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVk
QWN0aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24pCiAgICAgICAgIDogTmF2aWdhdGlvbkFjdGlv
bihXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWUsIHRhcmdldEZyYW1l
LCB0YXJnZXRGcmFtZU5hbWUsIFdURk1vdmUocmVxdWVzdCksIG9yaWdpbmFsVVJMLCBzaG91bGRP
cGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGlvbiksIG51bGxwdHIpCiAgICAg
ewogICAgIH0KQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFdU
Rjo6U3RyaW5nPiBtX3RhcmdldEZyYW1lTmFtZTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCBtX3JlcXVlc3Q7Ci0gICAgV2ViQ29yZTo6VVJMIG1fb3JpZ2luYWxVUkw7CisgICAgV1RG
OjpVUkwgbV9vcmlnaW5hbFVSTDsKIAogICAgIGJvb2wgbV9zaG91bGRPcGVuQXBwTGlua3M7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25D
bGllbnQuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBudWxscHRyOyB9CiAKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPFN0cmluZz4m
IGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJikgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIHZpcnR1YWwgUmVmUHRyPFN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgdW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25z
dCBSZWZQdHI8U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXVEY6OlVSTCYpIHsgcmV0
dXJuIG51bGxwdHI7IH0KIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZpcnR1YWwgdm9pZCBk
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9CkBAIC0xMTQsNyArMTE0
LDcgQEAgcHVibGljOgogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQogICAgIAotICAg
IHZpcnR1YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJDb3JlOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZp
Y2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV1RGOjpVUkwmJiwgVmVjdG9yPFdURjo6U3Ry
aW5nPiYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiYpIHsgfTsKICAgICAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKICAgICB2aXJ0dWFsIGJvb2wgZGlkRmFpbFRvSW5pdGlhbGl6ZVBs
dWdJbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYpIHsgcmV0dXJuIGZh
bHNlOyB9CkBAIC0xMjYsOCArMTI2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
V0VCR0wpCi0gICAgdmlydHVhbCB2b2lkIHdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0
aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21w
bGV0aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlv
bik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2ViR0xMb2FkUG9saWN5KFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgY29uc3QgV1RGOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb24pOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBjb25zdCBXVEY6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFu
ZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7IH0KICNl
bmRpZgogICAgIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0o
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBi
b29sIGluUGFnZUNhY2hlLCBPYmplY3QqKSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgJKHJldmlzaW9uIDIzNjc2NikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2Rh
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsKFdl
YktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZURhdGFUb0Zp
bGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBEYXRhJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViS2l0
OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
Y29uc3QgV1RGOjpVUkwmLCBEYXRhJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGlubmVkU3Rh
dGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAkocmV2aXNpb24gMjM2NzY2
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1XZWJDb3Jl
OjpVUkwgVXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKQorV1RGOjpVUkwgVXNlclNjcmlw
dDo6Z2VuZXJhdGVVbmlxdWVVUkwoKQogewogICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVy
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgJ
KHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U2NyaXB0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSVVzZXJTY3JpcHRfaAotI2Rl
ZmluZSBBUElVc2VyU2NyaXB0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCiAjaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgpAQCAtMzUsNyArMzQsNyBAQCBu
YW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgVXNlclNjcmlwdCBmaW5hbCA6IHB1YmxpYyBPYmplY3RJ
bXBsPE9iamVjdDo6VHlwZTo6VXNlclNjcmlwdD4sIHB1YmxpYyBJZGVudGlmaWVkPFVzZXJTY3Jp
cHQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViQ29yZTo6VVJMIGdlbmVyYXRlVW5pcXVlVVJM
KCk7CisgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKICAgICBzdGF0
aWMgUmVmPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQs
IEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgewpAQCAtNTUsNSArNTQsMyBAQCBw
cml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCi0KLSNlbmRpZiAvLyBBUElVc2VyU2Ny
aXB0X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAs
NyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotV2ViQ29yZTo6VVJMIFVzZXJTdHlsZVNoZWV0Ojpn
ZW5lcmF0ZVVuaXF1ZVVSTCgpCitXVEY6OlVSTCBVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlx
dWVVUkwoKQogewogICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuaAkocmV2aXNp
b24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNo
ZWV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSVVzZXJTdHlsZVNoZWV0X2gKLSNk
ZWZpbmUgQVBJVXNlclN0eWxlU2hlZXRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0zNSw3ICszNCw3
IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1Ymxp
YyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclN0eWxlU2hlZXQ+LCBwdWJsaWMgSWRlbnRp
ZmllZDxVc2VyU3R5bGVTaGVldD4gewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwg
Z2VuZXJhdGVVbmlxdWVVUkwoKTsKKyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVV
UkwoKTsKIAogICAgIHN0YXRpYyBSZWY8VXNlclN0eWxlU2hlZXQ+IGNyZWF0ZShXZWJDb3JlOjpV
c2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3Js
ZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBBUEkKLQotI2VuZGlmIC8vIEFQSVVzZXJTdHlsZVNoZWV0X2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNyBAQAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBmaWxlUGF0
aHNGcm9tRmlsZVUKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAg
ICAgICBBUEk6OlVSTCogYXBpVVJMID0gZmlsZVVSTHMuYXQ8QVBJOjpVUkw+KGkpOwogICAgICAg
ICBpZiAoYXBpVVJMKQotICAgICAgICAgICAgZmlsZVBhdGhzLnVuY2hlY2tlZEFwcGVuZChXZWJD
b3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGFwaVVSTC0+c3RyaW5nKCkpLmZpbGVTeXN0ZW1QYXRo
KCkpOworICAgICAgICAgICAgZmlsZVBhdGhzLnVuY2hlY2tlZEFwcGVuZChVUkwoVVJMKCksIGFw
aVVSTC0+c3RyaW5nKCkpLmZpbGVTeXN0ZW1QYXRoKCkpOwogICAgIH0KIAogICAgIHJldHVybiBm
aWxlUGF0aHM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJ
KHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFdLUGFnZUxvYWRQ
bGFpblRleHRTdHJpbmcoV0tQYWdlUmVmCiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmlu
Z1dpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3Ry
aW5nUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7Ci0gICAgbG9hZFN0cmluZyhwYWdlUmVm
LCBwbGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBibGFua1VSTCgpLnN0cmluZygp
LCB1c2VyRGF0YVJlZik7CisgICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdS
ZWYsICJ0ZXh0L3BsYWluIl9zLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIHVzZXJEYXRhUmVm
KTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YVJlZikKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQg
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWcKIAogICAgICAgICAgICAgICAgIGF1
dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gcGFnZS5wcm9jZXNzKCkudXNlckluaXRpYXRlZEFj
dGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsK
ICAgICAgICAgICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFob3N0c0FyZUVxdWFs
KHNvdXJjZUZyYW1lSW5mby0+cmVxdWVzdCgpLnVybCgpLCByZXNvdXJjZVJlcXVlc3QudXJsKCkp
OwotICAgICAgICAgICAgICAgIGF1dG8gYXBpTmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdh
dGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VG
cmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXNvdXJjZVJl
cXVlc3QpLCBXZWJDb3JlOjpVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJ
bml0aWF0ZWRBY3Rpdml0eSkpOworICAgICAgICAgICAgICAgIGF1dG8gYXBpTmF2aWdhdGlvbkFj
dGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFj
dGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwg
V1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZN
b3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwogCiAgICAgICAgICAgICAgICAgYXV0byBhcGlX
aW5kb3dGZWF0dXJlcyA9IEFQSTo6V2luZG93RmVhdHVyZXM6OmNyZWF0ZSh3aW5kb3dGZWF0dXJl
cyk7CiAKQEAgLTE5NDUsNyArMTk0NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdL
UGFnZVJlZiBwYWcKICAgICAgICAgICAgIG1fY2xpZW50LnJ1bk1vZGFsKHRvQVBJKCZwYWdlKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2F2
ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIEFQSTo6RGF0YSYgZGF0YSkgZmluYWwKKyAgICAg
ICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSogcGFn
ZSwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjE4NSw3ICsyMTg1LDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZwogICAgICAgICAgICAgcmV0
dXJuIEFQSTo6RGF0YTo6Y3JlYXRlKG1hc3RlcktleS5kYXRhKCksIG1hc3RlcktleS5zaXplKCkp
OwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXpl
SW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwpIG92ZXJyaWRlCisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4g
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYgcGFnZSwgdW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VT
dHJpbmcsIGNvbnN0IFVSTCYgdXJsKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAobV9jbGllbnQuY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZykKICAgICAg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNvcHlTaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
R3JvdXAuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgdm9p
ZCBXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0KFdLUGFnZQogICAgIGF1dG8gd2hpdGVsaXN0
ID0gdG9JbXBsKHdoaXRlbGlzdGVkVVJMUGF0dGVybnMpOwogICAgIGF1dG8gYmxhY2tsaXN0ID0g
dG9JbXBsKGJsYWNrbGlzdGVkVVJMUGF0dGVybnMpOwogCi0gICAgUmVmPEFQSTo6VXNlclN0eWxl
U2hlZXQ+IHVzZXJTdHlsZVNoZWV0ID0gQVBJOjpVc2VyU3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNv
cmU6OlVzZXJTdHlsZVNoZWV0IHsgc291cmNlLCAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBX
ZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBiYXNlVVJM
U3RyaW5nKSksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3Rv
cjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZl
Y3RvcjxTdHJpbmc+KCksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1l
cyksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6
Om5vcm1hbFdvcmxkKCkpOworICAgIFJlZjxBUEk6OlVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVT
aGVldCA9IEFQSTo6VXNlclN0eWxlU2hlZXQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVl
dCB7IHNvdXJjZSwgKGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDog
IFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZykpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3Ry
aW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRv
U3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXMoaW5qZWN0ZWRGcmFtZXMpLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKIAogICAgIHRvSW1wbChwYWdlR3Jv
dXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCh1c2VyU3R5
bGVTaGVldC5nZXQoKSk7CiB9CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRV
c2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICBhdXRvIHdoaXRlbGlzdCA9IHRvSW1wbCh3aGl0ZWxp
c3RlZFVSTFBhdHRlcm5zKTsKICAgICBhdXRvIGJsYWNrbGlzdCA9IHRvSW1wbChibGFja2xpc3Rl
ZFVSTFBhdHRlcm5zKTsKICAgICAKLSAgICBhdXRvIHVybCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0
eSgpID8gV2ViQ29yZTo6YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
YmFzZVVSTFN0cmluZyk7CisgICAgYXV0byB1cmwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/
IFdURjo6YmxhbmtVUkwoKSA6ICBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpOwogICAgIFJlZjxB
UEk6OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQgPSBBUEk6OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJD
b3JlOjpVc2VyU2NyaXB0IHsgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHVybCksIHdoaXRlbGlz
dCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNr
bGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRv
VXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIHRvVXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcykgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3Jt
YWxXb3JsZCgpKTsKICAgICB0b0ltcGwocGFnZUdyb3VwUmVmKS0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkuYWRkVXNlclNjcmlwdCh1c2VyU2NyaXB0LmdldCgpLCBJbmplY3RVc2VyU2NyaXB0SW1t
ZWRpYXRlbHk6Ok5vKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAkocmV2aXNpb24gMjM2NzY2KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOCBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRh
RmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29yZC5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhVHlwZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogV0tUeXBl
SUQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKCkKIHsKQEAgLTk1LDcgKzk1LDcgQEAgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdAogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAotICAgIHN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShX
ZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIHN0b3JlLT5zZXRQcmV2YWxl
bnRSZXNvdXJjZUZvckRlYnVnTW9kZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5z
dHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBzdG9yZS0+c2V0TGFzdFNlZW4oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBzdG9yZS0+c2V0TGFzdFNlZW4oVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25k
cyB9LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0xMjEsMTEgKzEyMSwxMSBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2CiAgICAgfQogCiAgICAgaWYgKHZhbHVl
KQotICAgICAgICBzdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBs
ZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsK
ICAgICAgICAgfSk7CiAgICAgZWxzZQotICAgICAgICBzdG9yZS0+Y2xlYXJQcmV2YWxlbnRSZXNv
dXJjZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5z
dHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICBzdG9yZS0+
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5z
dHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogfQpAQCAtMTM5LDExICsxMzks
MTEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeQogICAgIH0KIAog
ICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShX
ZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICBzdG9yZS0+c2V0VmVy
eVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiAgICAgZWxzZQotICAgICAgICBzdG9y
ZS0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0geworICAgICAgICBzdG9yZS0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0p
OwogfQpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0
aWNzUHJldmEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5pc1ByZXZhbGVu
dFJlc291cmNlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUHJldmFsZW50UmVzb3Vy
Y2UpIHsKKyAgICBzdG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZh
bGVudFJlc291cmNlKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzUHJldmFsZW50UmVzb3VyY2UsIGNv
bnRleHQpOwogICAgIH0pOwogfQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlSXNTdGF0aXN0aWNzVmVyeVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2td
KGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKKyAgICBzdG9yZS0+aXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAg
ICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwog
fQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNz
UmVnaXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzdG9yZS0+aXNSZWdpc3Rl
cmVkQXNTdWJyZXNvdXJjZVVuZGVyKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgeworICAg
IHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChzdWJyZXNvdXJjZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzUmVn
aXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlciwgY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0yMDgs
NyArMjA4LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpcwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVV
bmRlcihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YkZyYW1l
SG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRv
SW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBp
c1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpIHsKKyAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNT
dWJGcmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3Ry
aW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygp
KSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikg
ewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIsIGNvbnRleHQp
OwogICAgIH0pOwogfQpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
SXNTdGF0aXN0aWNzUmVnaXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5p
c1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdU
bykgeworICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNh
bGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgewogICAgICAgICBjYWxs
YmFjayhpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNvbnRleHQpOwogICAgIH0pOwogfQpA
QCAtMjM1LDExICsyMzUsMTEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
SGFzSAogICAgIH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPmxvZ1VzZXJJbnRl
cmFjdGlvbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICBzdG9y
ZS0+bG9nVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiAgICAgZWxzZQotICAgICAgICBz
dG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVy
XSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7
CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3Rp
Y3NIYXNIYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPmhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNIYWRVc2VySW50ZXJh
Y3Rpb24pIHsKKyAgICBzdG9yZS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhh
c0hhZFVzZXJJbnRlcmFjdGlvbikgewogICAgICAgICBjYWxsYmFjayhoYXNIYWRVc2VySW50ZXJh
Y3Rpb24sIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0dyYW4KICAgICBpZiAoIXN0b3JlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0R3JhbmRmYXRoZXJlZChXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIHZhbHVlKTsKKyAg
ICBzdG9yZS0+c2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSksIHZhbHVlKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc0dyYW5kZmF0aGVyZWRGdW5jdGlvbiBjYWxsYmFjaykKQEAgLTI3NCw3ICsyNzQsNyBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBzdG9yZS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlVSTChX
ZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQs
IGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJlZCkgeworICAgIHN0b3JlLT5oYXNIYWRVc2Vy
SW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxi
YWNrKGlzR3JhbmRmYXRoZXJlZCwgY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0yODUsNyArMjg1
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZgogICAgIGlmICgh
c3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3JlLT5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVPcmlnaW4oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9J
bXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFN1YmZyYW1lVW5k
ZXJUb3BGcmFtZU9yaWdpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpKTsK
IH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkKQEAgLTI5NCw3ICsyOTQsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyCiAgICAgaWYgKCFzdG9y
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZU9yaWdpbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpKTsKKyAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lT3JpZ2luKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkp
OwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKQEAgLTMwMyw3ICszMDMs
NyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyCiAgICAgaWYgKCFz
dG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RUbyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmlu
ZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKQEAgLTMx
Miw3ICszMTIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyCiAg
ICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHN0b3JlLT5zZXRTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKKyAgICBz
dG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RS
ZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJl
Y3RlZFRvKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc1RvcEYKICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
c3RvcmUtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7
CisgICAgc3RvcmUtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRp
cmVjdGVkRnJvbSkKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUb3BGCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIHN0b3JlLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3Ry
aW5nKCkpKTsKKyAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0
b3JlLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCwx
MCBAQAogCiAjaW1wb3J0ICJIVFRQQ29va2llQWNjZXB0UG9saWN5LmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0Nvb2tpZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpD
UHRyLmg+CiAKIHN0YXRpYyBOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqY29yZUNvb2tpZXNUb05T
Q29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29yZUNvb2tpZXMpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQu
bW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJTY3JpcHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgLSAoaW5z
dGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbgogICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBXZWJDb3JlOjpVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6
dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdh
Y3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVj
dGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3Vz
ZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJ
OjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRl
bGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNv
cmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25s
eSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxG
cmFtZXMgfSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKIAogICAgIHJl
dHVybiBzZWxmOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDIzNjc2
NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBACiAjaW1wb3J0ICJfV0tX
ZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTFBhcnNlci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTFBhcnNlci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKICNpZiBQTEFU
Rk9STShJT1MpCkBAIC00NzgsNyArNDc4LDcgQEAgLSAodm9pZClzZXRVUkxTY2hlbWVIYW5kbGVy
OihpZCA8V0tVUkxTYwogICAgIGlmIChbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6dXJsU2No
ZW1lXSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0
aW9uIGZvcm1hdDpAIiclQCcgaXMgYSBVUkwgc2NoZW1lIHRoYXQgV0tXZWJWaWV3IGhhbmRsZXMg
bmF0aXZlbHkiLCB1cmxTY2hlbWVdOwogCi0gICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJD
b3JlOjpVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAg
YXV0byBjYW5vbmljYWxTY2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVT
Y2hlbWUodXJsU2NoZW1lKTsKICAgICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIiclQCcg
aXMgbm90IGEgdmFsaWQgVVJMIHNjaGVtZSIsIHVybFNjaGVtZV07CiAKQEAgLTQ5MCw3ICs0OTAs
NyBAQCAtICh2b2lkKXNldFVSTFNjaGVtZUhhbmRsZXI6KGlkIDxXS1VSTFNjCiAKIC0gKGlkIDxX
S1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6KE5TU3RyaW5n
ICopdXJsU2NoZW1lCiB7Ci0gICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJDb3JlOjpVUkxQ
YXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAgYXV0byBjYW5v
bmljYWxTY2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJs
U2NoZW1lKTsKICAgICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw5ICszOCw5IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW1wb3J0ICJf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYktpdC9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Lmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogQGltcGxlbWVudGF0aW9u
IFdLV2Vic2l0ZURhdGFTdG9yZQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQkocmV2aXNp
b24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxp
Y2F0aW9uTWFuaWZlc3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDkgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKgogICAgICAgICBXVEY6OlN0cmluZyhu
YW1lKSwKICAgICAgICAgV1RGOjpTdHJpbmcoc2hvcnROYW1lKSwKICAgICAgICAgV1RGOjpTdHJp
bmcoZGVzY3JpcHRpb24pLAotICAgICAgICBXZWJDb3JlOjpVUkwoc2NvcGVVUkwpLAorICAgICAg
ICBVUkwoc2NvcGVVUkwpLAogICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBcHBsaWNhdGlv
bk1hbmlmZXN0OjpEaXNwbGF5PihkaXNwbGF5KSwKLSAgICAgICAgV2ViQ29yZTo6VVJMKHN0YXJ0
VVJMKQorICAgICAgICBVUkwoc3RhcnRVUkwpCiAgICAgfTsKIAogICAgIEFQSTo6T2JqZWN0Ojpj
b25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0PihzZWxmLCBXVEZNb3Zl
KGNvcmVBcHBsaWNhdGlvbk1hbmlmZXN0KSk7CkBAIC04Myw3ICs4Myw3IEBAIC0gKHZvaWQpZW5j
b2RlV2l0aENvZGVyOihOU0NvZGVyICopYUNvZGUKIAogKyAoX1dLQXBwbGljYXRpb25NYW5pZmVz
dCAqKWFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjooTlNTdHJpbmcgKilqc29uIG1hbmlmZXN0
VVJMOihOU1VSTCAqKW1hbmlmZXN0VVJMIGRvY3VtZW50VVJMOihOU1VSTCAqKWRvY3VtZW50VVJM
CiB7Ci0gICAgYXV0byBtYW5pZmVzdCA9IFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJz
ZXI6OnBhcnNlKFdURjo6U3RyaW5nKGpzb24pLCBXZWJDb3JlOjpVUkwobWFuaWZlc3RVUkwpLCBX
ZWJDb3JlOjpVUkwoZG9jdW1lbnRVUkwpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gV2ViQ29yZTo6
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2UoV1RGOjpTdHJpbmcoanNvbiksIFVSTCht
YW5pZmVzdFVSTCksIFVSTChkb2N1bWVudFVSTCkpOwogICAgIHJldHVybiB3cmFwcGVyKEFQSTo6
QXBwbGljYXRpb25NYW5pZmVzdDo6Y3JlYXRlKG1hbmlmZXN0KSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hl
ZXQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklYTUU6
IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZv
cmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hv
dWxkIHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAot
ICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4o
c2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7IFdl
YkNvcmU6OlVSTCgpLCBXVEY6OlN0cmluZyhbYmFzZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RG
U3RyaW5nXSkgfSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRv
U3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3Jl
OjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzLCBXZWJD
b3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVu
dFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0
eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgeyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNX
VEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6
dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNv
cmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdl
YkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250
ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNSwxMSArMTA1LDExIEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNo
b3dQYXkKIAogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWN0aXZhdGluZzsKIAotICAgIFdlYkNvcmU6
OlVSTCBvcmlnaW5hdGluZ1VSTChXZWJDb3JlOjpVUkwoKSwgb3JpZ2luYXRpbmdVUkxTdHJpbmcp
OworICAgIFVSTCBvcmlnaW5hdGluZ1VSTChVUkwoKSwgb3JpZ2luYXRpbmdVUkxTdHJpbmcpOwog
Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlVSTD4gbGlua0ljb25VUkxzOworICAgIFZlY3RvcjxVUkw+
IGxpbmtJY29uVVJMczsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxpbmtJY29uVVJMU3RyaW5nIDog
bGlua0ljb25VUkxTdHJpbmdzKQotICAgICAgICBsaW5rSWNvblVSTHMuYXBwZW5kKFdlYkNvcmU6
OlVSTChXZWJDb3JlOjpVUkwoKSwgbGlua0ljb25VUkxTdHJpbmcpKTsKKyAgICAgICAgbGlua0lj
b25VUkxzLmFwcGVuZChVUkwoVVJMKCksIGxpbmtJY29uVVJMU3RyaW5nKSk7CiAKICAgICBwbGF0
Zm9ybVNob3dQYXltZW50VUkob3JpZ2luYXRpbmdVUkwsIGxpbmtJY29uVVJMcywgcGF5bWVudFJl
cXVlc3QsIFt0aGlzXShib29sIHJlc3VsdCkgewogICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBT
dGF0ZTo6QWN0aXZhdGluZyk7CkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6ZGlkQ2FuYwogICAgIGRpZFJlYWNoRmluYWxTdGF0ZSgpOwogfQogCi12
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRh
dGVNZXJjaGFudChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQobV9tZXJjaGFudFZhbGlk
YXRpb25TdGF0ZSA9PSBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6SWRsZSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBQYXltZW50OwogY2xhc3MgUGF5bWVudENv
bnRhY3Q7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uOwogY2xhc3MgUGF5bWVudE1ldGhv
ZDsKLWNsYXNzIFVSTDsKIH0KIAogT0JKQ19DTEFTUyBOU09iamVjdDsKQEAgLTYxLDcgKzYwLDcg
QEAgcHVibGljOgogICAgIH5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwogCiAgICAgdm9p
ZCBkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwotICAgIHZvaWQgdmFsaWRhdGVNZXJjaGFudChj
b25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJM
Jik7CiAgICAgdm9pZCBkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFdlYkNvcmU6OlBheW1lbnQm
KTsKICAgICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpOwogICAgIHZvaWQgZGlk
U2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0Jik7CkBA
IC05OSw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwbGF0Zm9ybUNhbk1ha2VQYXltZW50
cygpOwogICAgIHZvaWQgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25z
dCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lk
IHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25z
dCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJM
PiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdCYsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRp
b24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgcGxh
dGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2hpcHBpbmdDb250YWN0VXBkYXRlPiYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEsMTEgQEAKICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvUGFzc0tpdFNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTsKIAotUmV0YWlu
UHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmLCBj
b25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdCYpOworUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVz
dChXZWJQYWdlUHJveHkmLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8
VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdCYpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzIsMTEgKzMyLDExIEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9v
bC5oIgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5n
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktf
UFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoUGFzc0tpdCkKQEAgLTUxMSw3ICs1MTEsNyBAQCBz
dGF0aWMgUEtQYXltZW50UmVxdWVzdEFQSVR5cGUgdG9BUElUeXBlCiB9CiAjZW5kaWYKIAotUmV0
YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkm
IHdlYlBhZ2VQcm94eSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQorUmV0YWluUHRyPFBLUGF5
bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94
eSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29u
VVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1l
bnRSZXF1ZXN0KQogewogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRS
ZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlJT1MubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQ
YXltZW50QXV0aG9yCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBv
cmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMU3Ry
aW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVl
c3QsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3Qg
VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMU3RyaW5n
cywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3Qs
IFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBV
SVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBtX3dlYlBhZ2VQcm94
eS51aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFj
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgU09GVF9MSU5LX0NP
TlNUQU5UKFBhc3NLaXQsIFBLRXh0ZW5zaW9uUAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0
IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+
JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93
UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBs
aW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKCFQYXNzS2l0TGlicmFyeSgpKSB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCShyZXZpc2lvbiAy
MzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDEwIEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIApAQCAtNjU5LDcgKzY1
OSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om5hdmlnYXRlQnJvd3MKICAgICAgICAg
QVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFt
ZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3BhZ2VMb2FkU3RyYXRlZ3knIGlzIGludmFsaWQuIik7CiAg
ICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCA/IFNlY29u
ZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0KSA6IGRlZmF1bHRQ
YWdlTG9hZFRpbWVvdXQ7CiAKLSAgICBwYWdlLT5sb2FkUmVxdWVzdChXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIHVybCkpOworICAgIHBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdXJs
KSk7CiAgICAgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25QYWdlKCpwYWdlLCBwYWdlTG9h
ZFN0cmF0ZWd5LnZhbHVlKCksIHBhZ2VMb2FkVGltZW91dCwgV1RGTW92ZShjYWxsYmFjaykpOwog
fQogCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBzdGF0aWMgU3RyaW5nIGRvbWFpbkJ5QWRkaW5nRG90
UHJlZml4SWZOCiAgICAgaWYgKGRvbWFpblswXSAhPSAnLicpIHsKICAgICAgICAgLy8gUkZDIDI5
NjU6IElmIGFuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIHZhbHVlIGRvZXMgbm90IHN0YXJ0IHdpdGgg
YSBkb3QsIHRoZSB1c2VyIGFnZW50IHN1cHBsaWVzIGEgbGVhZGluZyBkb3QuCiAgICAgICAgIC8v
IEFzc3VtZSB0aGF0IGFueSBob3N0IHRoYXQgZW5kcyB3aXRoIGEgZGlnaXQgaXMgdHJ5aW5nIHRv
IGJlIGFuIElQIGFkZHJlc3MuCi0gICAgICAgIGlmICghV2ViQ29yZTo6VVJMOjpob3N0SXNJUEFk
ZHJlc3MoZG9tYWluKSkKKyAgICAgICAgaWYgKCFVUkw6Omhvc3RJc0lQQWRkcmVzcyhkb21haW4p
KQogICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJy4nLCBkb21haW4pOwogICAgIH0KICAg
ICAKQEAgLTEzMDAsNyArMTMwMCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNp
bmdsZUNvb2sKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIFdlYkNvcmU6OlVSTCBhY3RpdmVVUkwg
PSBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHBhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hY3Rp
dmVVUkwoKSk7CisgICAgVVJMIGFjdGl2ZVVSTCA9IFVSTChVUkwoKSwgcGFnZS0+cGFnZUxvYWRT
dGF0ZSgpLmFjdGl2ZVVSTCgpKTsKICAgICBBU1NFUlQoYWN0aXZlVVJMLmlzVmFsaWQoKSk7CiAK
ICAgICBXZWJDb3JlOjpDb29raWUgY29va2llOwpAQCAtMTM1Nyw3ICsxMzU3LDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29vawogICAgIGlmICghcGFnZSkKICAgICAg
ICAgU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAg
ICBXZWJDb3JlOjpVUkwgYWN0aXZlVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBw
YWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOworICAgIFVSTCBhY3RpdmVVUkwgPSBV
UkwoVVJMKCksIHBhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVVUkwoKSk7CiAgICAgQVNTRVJU
KGFjdGl2ZVVSTC5pc1ZhbGlkKCkpOwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29r
aWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJv
eHk+KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9h
ZENsaWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvRG93bmxvYWRDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBA
QCB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goV2ViUHJvY2VzCiAgICAgaWYgKGRvd25s
b2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewogICAgICAgICBpZiAoYXV0byog
d2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCkpIHsKICAgICAgICAgICAg
IE5TVVJMICpkZXN0aW5hdGlvblVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6KE5TU3RyaW5n
ICopZG93bmxvYWRQcm94eS5kZXN0aW5hdGlvbkZpbGVuYW1lKCldOwotICAgICAgICAgICAgd2Vi
UGFnZS0+c3lzdGVtUHJldmlld0NvbnRyb2xsZXIoKS0+ZmluaXNoKFdlYkNvcmU6OlVSTChkZXN0
aW5hdGlvblVSTCkpOworICAgICAgICAgICAgd2ViUGFnZS0+c3lzdGVtUHJldmlld0NvbnRyb2xs
ZXIoKS0+ZmluaXNoKFVSTChkZXN0aW5hdGlvblVSTCkpOwogICAgICAgICB9CiAgICAgICAgIHJl
bGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoZG93bmxvYWRQcm94eSk7CiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5
KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogCi0gICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4g
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVk
IGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5n
LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICAgICAgUmVmUHRyPEFQSTo6U3Ry
aW5nPiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiwgdW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VT
dHJpbmcsIGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAg
ICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRl
OwpAQCAtMTI0LDggKzEyNCw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICAgICAgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kpPiYmKSBjb25zdCBmaW5hbDsKLSAgICAgICAgdm9pZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmluYWw7CisgICAgICAgIHZv
aWQgd2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmluYWw7Cisg
ICAgICAgIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBV
UkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYp
IGNvbnN0IGZpbmFsOwogICAgICAgICBib29sIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShX
ZWJQYWdlUHJveHkmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgYm9vbCBpblBhZ2VDYWNoZSwg
QVBJOjpPYmplY3QqKSBmaW5hbDsKICAgICAgICAgYm9vbCBkaWRGYWlsVG9Jbml0aWFsaXplUGx1
Z0luKFdlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYpIGZpbmFsOwogICAgICAgICBib29s
IGRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlv
bmFyeSYpIGZpbmFsOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wg
ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYlBhZ2VQcm94eSYsIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qLCBjb25zdCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYpIGZpbmFs
OwogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2Vi
UGFnZVByb3h5JiwgV2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYsIFZlY3RvcjxTdHJp
bmc+JiYpIGZpbmFsOworICAgICAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihX
ZWJQYWdlUHJveHkmLCBVUkwmJiwgVmVjdG9yPFN0cmluZz4mJiwgVmVjdG9yPFN0cmluZz4mJikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQ
YWdlUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBSZWY8V2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogICAg
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJQYWdlUHJveHkm
LCBSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+JiYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHk+JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGU7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzAsOSArNzAsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9TU0xLZXlHZW5lcmF0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5E
YXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIEhBVkUoQVBQ
X0xJTktTKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgpAQCAt
MzkyLDcgKzM5Miw3IEBAIGlubGluZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgdG9XZWJDb3IK
ICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCi12b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94
eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQ
cm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYkdM
TG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJHTEFsbG93
Q3JlYXRpb24pOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjoKICAgICB9KS5nZXQoKV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpyZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQ
YWdlUHJveHkmLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewogICAgIGlm
ICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdS
ZXNvbHZlV2ViR0xMb2FkUG9saWN5Rm9yVVJMKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdlYkdMQWxsb3dDcmVhdGlvbik7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OgogICAgIH0KIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJQYWdl
UHJveHkmLCBXZWJDb3JlOjpVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgbGlzdElkZW50aWZp
ZXJzLCBWZWN0b3I8U3RyaW5nPiYmIG5vdGlmaWNhdGlvbnMpCit2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQ
cm94eSYsIFVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmllcnMsIFZlY3Rv
cjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucykKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRl
Lm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3VVJMQ29udGVudFJ1bGVMaXN0SWRl
bnRpZmllcnNOb3RpZmljYXRpb25zKQogICAgICAgICByZXR1cm47CkBAIC02OTksNyArNjk5LDcg
QEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OgogICAgIGlmICghbmF2
aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJs
KFdlYkNvcmU6OlVSTCgpLCB1cmxTdHJpbmcpOworICAgIFVSTCB1cmwoVVJMKCksIHVybFN0cmlu
Zyk7CiAKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+
KG5hdmlnYXRpb25EZWxlZ2F0ZSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3
IHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDp1cmwgZGVsYXk6ZGVsYXldOwogfQpAQCAt
OTcyLDcgKzk3Miw3IEBAIFJlZlB0cjxBUEk6OkRhdGE+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWcK
ICAgICByZXR1cm4gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhkYXRhKTsKIH0KIAot
UmVmUHRyPEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmIHBhZ2UsIHVuc2ln
bmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3Ry
aW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1JlZlB0cjxBUEk6OlN0cmluZz4gTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJl
ZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgLy8gV2ViS2l0VGVzdFJ1bm5lciB1c2VzIEMgQVBJLiBIZW5jZSwgbm8gU1BJIGlzIHByb3Zp
ZGVkIHRvIG92ZXJyaWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24uCiAgICAgcmV0dXJuIEFQSTo6
U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwgdXJsKSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdS
ZXN1bHRDb2NvYS5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU2FmZUJyb3dzaW5nUmVzdWx0Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgSEFWRShTQUZFX0JST1dTSU5H
KQotU2FmZUJyb3dzaW5nUmVzdWx0OjpTYWZlQnJvd3NpbmdSZXN1bHQoV2ViQ29yZTo6VVJMJiYg
dXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCitTYWZlQnJvd3NpbmdSZXN1bHQ6
OlNhZmVCcm93c2luZ1Jlc3VsdChVUkwmJiB1cmwsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJl
c3VsdCkKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1fcHJvdmlkZXIoW3Jlc3Vs
dCBwcm92aWRlcl0pCiAgICAgLCBtX2lzUGhpc2hpbmcoW3Jlc3VsdCBpc1BoaXNoaW5nXSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lz
dGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIC0gKHZvaWQpc2V0UHJvZ3Jlc3M6KGZs
b2F0KXByb2dyZXNzCiAgICAgICAgIFtfaXRlbSBzZXRQcmV2aWV3SXRlbVByb3ZpZGVyUHJvZ3Jl
c3M6QChwcm9ncmVzcyldOwogfQogCi0tICh2b2lkKWZpbmlzaDooV2ViQ29yZTo6VVJMKXVybAor
LSAodm9pZClmaW5pc2g6KFVSTCl1cmwKIHsKICAgICBpZiAoc2VsZi5jb21wbGV0aW9uSGFuZGxl
cikKICAgICAgICAgc2VsZi5jb21wbGV0aW9uSGFuZGxlcigoTlNVUkwqKXVybCwgbmlsKTsKQEAg
LTIyMSw3ICsyMjEsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp1cGRhdGVQcm9n
CiAgICAgICAgIFttX3FsUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlIHNldFByb2dyZXNzOnBy
b2dyZXNzXTsKIH0KIAotdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmluaXNoKFdlYkNv
cmU6OlVSTCB1cmwpCit2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2goVVJMIHVy
bCkKIHsKICAgICBpZiAobV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSkKICAgICAgICAg
W21fcWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgZmluaXNoOnVybF07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIHRvb2xiYXJz
QXJlVmlzaWJsZShXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsK
ICAgICAgICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1l
dGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAg
dm9pZCBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdl
YlBhZ2VQcm94eSYsIFdLUmVzb3VyY2VMaW1pdCkgZmluYWw7Ci0gICAgICAgIHZvaWQgc2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpEYXRhJikg
ZmluYWw7CisgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQ
YWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
VVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CiAjZW5kaWYKICAgICAgICAgYm9vbCBkZWNpZGVQb2xp
Y3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVBy
b3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JikgZmluYWw7CiAgICAgICAgIGJvb2wgY2hlY2tVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBB
UEk6OlNlY3VyaXR5T3JpZ2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5JikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUx
LDggQEAKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hp
dFRlc3RSZXN1bHRJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRh
dGEuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVkNhcHR1cmVEZXZpY2UuaD4KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlCiAKICAgICBhdXRvIHVzZXJJbml0aWF0ZWRB
Y3Rpdml0eSA9IHBhZ2UucHJvY2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9u
QWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgYm9vbCBzaG91bGRP
cGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3VyY2VGcmFtZUluZm8tPnJlcXVlc3QoKS51
cmwoKSwgcmVxdWVzdC51cmwoKSk7Ci0gICAgYXV0byBhcGlOYXZpZ2F0aW9uQWN0aW9uID0gQVBJ
OjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSks
IHNvdXJjZUZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJl
cXVlc3QpLCBXZWJDb3JlOjpVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJ
bml0aWF0ZWRBY3Rpdml0eSkpOworICAgIGF1dG8gYXBpTmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6
TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBz
b3VyY2VGcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXF1
ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0
aXZpdHkpKTsKIAogICAgIGF1dG8gYXBpV2luZG93RmVhdHVyZXMgPSBBUEk6OldpbmRvd0ZlYXR1
cmVzOjpjcmVhdGUod2luZG93RmVhdHVyZXMpOwogCkBAIC03ODcsNyArNzg3LDcgQEAgdm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6c2hvd1BhZ2UoV2ViUAogICAgIFsoaWQgPFdLVUlEZWxlZ2F0
ZVByaXZhdGU+KWRlbGVnYXRlIF9zaG93V2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsK
IH0KICAgICAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVuYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
b3JpZ2luYXRpbmdVUkwsIEFQSTo6RGF0YSYgZGF0YSkKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3Qg
V1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIEFQSTo6RGF0YSYgZGF0YSkKIHsKICAgICBp
ZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2F2ZURhdGFUb0ZpbGVT
dWdnZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRpbmdVUkwpCiAgICAgICAgIHJldHVybjsK
QEAgLTg2NSw4ICs4NjUsOCBAQCBzdGF0aWMgdm9pZCByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXph
dGlvCiAgICAgfSk7CiAKICAgICBjb25zdCBXZWJGcmFtZVByb3h5KiBtYWluRnJhbWUgPSBmcmFt
ZS5wYWdlKCktPm1haW5GcmFtZSgpOwotICAgIFdlYkNvcmU6OlVSTCByZXF1ZXN0RnJhbWVVUkwo
V2ViQ29yZTo6VVJMKCksIGZyYW1lLnVybCgpKTsKLSAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1l
VVJMKFdlYkNvcmU6OlVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKKyAgICBVUkwgcmVxdWVzdEZy
YW1lVVJMKFVSTCgpLCBmcmFtZS51cmwoKSk7CisgICAgVVJMIG1haW5GcmFtZVVSTChVUkwoKSwg
bWFpbkZyYW1lLT51cmwoKSk7CiAKICAgICBfV0tDYXB0dXJlRGV2aWNlcyBkZXZpY2VzID0gMDsK
ICAgICBpZiAocmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpKQpAQCAtOTczLDggKzk3Myw4
IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNoZWNrVXNlck1lZGkKIAogICAgIFdLV2Vi
VmlldyAqd2ViVmlldyA9IG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXc7CiAgICAgY29uc3QgV2ViRnJh
bWVQcm94eSogbWFpbkZyYW1lID0gZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKTsKLSAgICBXZWJD
b3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBmcmFtZS51cmwoKSk7Ci0g
ICAgV2ViQ29yZTo6VVJMIG1haW5GcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgbWFpbkZyYW1lLT51
cmwoKSk7CisgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgZnJhbWUudXJsKCkpOworICAg
IFVSTCBtYWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogCiAgICAgYXV0byBk
ZWNpc2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkKE5TU3RyaW5nICosIEJPT0wpPjo6ZnJvbUNh
bGxhYmxlKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oTlNTdHJpbmcgKnNh
bHQsIEJPT0wgYXV0aG9yaXplZCkgewogICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5zZXRVc2Vy
TWVkaWFBY2Nlc3NJbmZvKFN0cmluZyhzYWx0KSwgYXV0aG9yaXplZCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9h
ZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRl
bXB0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgLSAoQk9PTClhdHRlbXB0
UmVjb3ZlcnkKICAgICBpZiAoIXdlYkZyYW1lUHJveHkpCiAgICAgICAgIHJldHVybiBOTzsKIAot
ICAgIHdlYkZyYW1lUHJveHktPmxvYWRVUkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBf
dXJsU3RyaW5nKSk7CisgICAgd2ViRnJhbWVQcm94eS0+bG9hZFVSTChVUkwoVVJMKCksIF91cmxT
dHJpbmcpKTsKICAgICByZXR1cm4gWUVTOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQkocmV2
aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQwNjgsNyArNDA2OCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OndyaXRlVG9VUkxGb3JGaWxlUHJv
bWkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFdlYkNvcmU6OlVSTCBibG9iVVJMIHsg
aW5mby5ibG9iVVJMIH07CisgICAgVVJMIGJsb2JVUkwgeyBpbmZvLmJsb2JVUkwgfTsKICAgICBp
ZiAoYmxvYlVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2ViS2l0
VW5rbm93bkVycm9yKCkpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHJldmlzaW9uIDIzNjc2
NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIFBy
b3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc1LDggKzc0LDgg
QEAgcHVibGljOgogICAgIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRPcmlnaW5hdGluZ1BhZ2UoV2ViUGFnZVByb3h5Kik7CiAKLSAgICB2b2lkIHNl
dFJlZGlyZWN0Q2hhaW4oVmVjdG9yPFdlYkNvcmU6OlVSTD4mJiByZWRpcmVjdENoYWluKSB7IG1f
cmVkaXJlY3RDaGFpbiA9IFdURk1vdmUocmVkaXJlY3RDaGFpbik7IH0KLSAgICBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6VVJMPiYgcmVkaXJlY3RDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJl
Y3RDaGFpbjsgfQorICAgIHZvaWQgc2V0UmVkaXJlY3RDaGFpbihWZWN0b3I8VVJMPiYmIHJlZGly
ZWN0Q2hhaW4pIHsgbV9yZWRpcmVjdENoYWluID0gV1RGTW92ZShyZWRpcmVjdENoYWluKTsgfQor
ICAgIGNvbnN0IFZlY3RvcjxVUkw+JiByZWRpcmVjdENoYWluKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWRpcmVjdENoYWluOyB9CiAKICAgICB2b2lkIHNldFdhc1VzZXJJbml0aWF0ZWQoYm9vbCB2YWx1
ZSkgeyBtX3dhc1VzZXJJbml0aWF0ZWQgPSB2YWx1ZTsgfQogICAgIGJvb2wgd2FzVXNlckluaXRp
YXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzVXNlckluaXRpYXRlZDsgfQpAQCAtMTI2LDcgKzEy
NSw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9ieXRlc0xvYWRlZCB7IDAgfTsKIAogICAg
IFdlYWtQdHI8V2ViUGFnZVByb3h5PiBtX29yaWdpbmF0aW5nUGFnZTsKLSAgICBWZWN0b3I8V2Vi
Q29yZTo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CisgICAgVmVjdG9yPFVSTD4gbV9yZWRpcmVjdENo
YWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1ZSB9OwogfTsKIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzYs
NyArNTM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc0RpZAogICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc0RpZFJlc3VtZSgpLCAw
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Ondy
aXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWNhblNl
bmRNZXNzYWdlKCkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJ
KHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5X2gKLSNkZWZpbmUgTmV0d29ya1Byb2Nlc3NQcm94eV9oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nl
c3NQcm94eS5oIgpAQCAtNDksNyArNDgsNiBAQCBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwotY2xhc3MgVVJMOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApA
QCAtODcsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNh
bGxiYWNrKTsKIAogICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCk7CiAgICAgCkBAIC0y
MDMsNSArMjAxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gTmV0d29ya1Byb2Nlc3NQcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCShyZXZpc2lvbiAyMzY3
NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUgIlBsdWdpbk1v
ZHVsZUluZm8uaCIKICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAkocmV2aXNpb24g
MjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDYgQEAKIAogI2luY2x1ZGUgPFdlYkNv
cmUvUGx1Z2luRGF0YS5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0K
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQbHVnaW5JbmZvU3RvcmU7CkBAIC01Myw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZvciBhIHBsdWctaW4gdGhh
dCBjYW4gaGFuZGxlIHRoZSBnaXZlbiBNSU1FIHR5cGUuCiAgICAgLy8gSWYgdGhlIE1JTUUgdHlw
ZSBpcyBudWxsLCB0aGUgZmlsZSBleHRlbnNpb24gb2YgdGhlIGdpdmVuIHVybCB3aWxsIGJlIHVz
ZWQgdG8gaW5mZXIgdGhlCiAgICAgLy8gcGx1Zy1pbiB0eXBlLiBJbiB0aGF0IGNhc2UsIG1pbWVU
eXBlIHdpbGwgYmUgZmlsbGVkIGluIHdpdGggdGhlIHJpZ2h0IE1JTUUgdHlwZS4KLSAgICBQbHVn
aW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzID0gV2ViQ29yZTo6
UGx1Z2luRGF0YTo6QWxsUGx1Z2lucyk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2lu
KFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbG93
ZWRQbHVnaW5UeXBlcyA9IFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpOwogCiAgICAg
Ly8gUmV0dXJucyB0aGUgaW5mbyBmb3IgdGhlIHBsdWctaW4gd2l0aCB0aGUgZ2l2ZW4gYnVuZGxl
IGlkZW50aWZpZXIuCiAgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luV2l0aEJ1bmRsZUlk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKTsKQEAgLTYzLDcgKzU5LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgZGVmYXVsdExv
YWRQb2xpY3lGb3JQbHVnaW4oY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwogCi0gICAgYm9vbCBp
c1N1cHBvcnRlZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHBsdWdpblVSTCwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgV2ViQ29y
ZTo6VVJMJiBwYWdlVVJMKTsKKyAgICBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1Z2luVVJMLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJM
U3RyaW5nLCBjb25zdCBVUkwmIHBhZ2VVUkwpOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdl
YkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlm
aWVycygpOwogICAgIHZvaWQgYWRkU3VwcG9ydGVkUGx1Z2luKFN0cmluZyYmIG1hdGNoaW5nRG9t
YWluLCBTdHJpbmcmJiBpZGVudGlmaWVyLCBIYXNoU2V0PFN0cmluZz4mJiBtaW1lVHlwZXMsIEhh
c2hTZXQ8U3RyaW5nPiBleHRlbnNpb25zKTsKICAgICB2b2lkIGNsZWFyU3VwcG9ydGVkUGx1Z2lu
cygpIHsgbV9zdXBwb3J0ZWRQbHVnaW5zID0gc3RkOjpudWxsb3B0OyB9CkBAIC0xMDQsNyArMTAw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgSGFzaFNldDxTdHJpbmc+IG1pbWVUeXBlczsKICAgICAg
ICAgSGFzaFNldDxTdHJpbmc+IGV4dGVuc2lvbnM7CiAgICAgfTsKLSAgICBzdGF0aWMgYm9vbCBp
c1N1cHBvcnRlZFBsdWdpbihjb25zdCBTdXBwb3J0ZWRQbHVnaW4mLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHBsdWdpblVSTCk7CisgICAgc3RhdGljIGJvb2wg
aXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3VwcG9ydGVkUGx1Z2luJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgVVJMJiBwbHVnaW5VUkwpOwogCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8U3VwcG9ydGVkUGx1Z2luPj4gbV9zdXBwb3J0ZWRQbHVnaW5zOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Q
cm9jZXNzUHJveHlNYWMubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzQsMTIgKzM0LDEyIEBACiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1w
b3J0IDxRdWFydHpDb3JlL0NBUmVtb3RlTGF5ZXJTZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPGNydF9leHRl
cm5zLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaD4KICNpbXBvcnQgPHNwYXduLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZp
bGVnZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBAaW50ZXJmYWNlIFdLUGxhY2Vob2xkZXJNb2RhbFdpbmRvdyA6IE5TV2luZG93IApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVy
YWN0aW9uU3RhdGUuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwx
MCArMzIsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGF0aC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgRHJhZ1NvdXJjZVN0YXRlIHsKICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiBpbmRpY2F0b3JEYXRh
OwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF0aD4gdmlzaWJsZVBhdGg7CiAgICAgU3Ry
aW5nIGxpbmtUaXRsZTsKLSAgICBXZWJDb3JlOjpVUkwgbGlua1VSTDsKKyAgICBVUkwgbGlua1VS
TDsKICAgICBib29sIHBvc3NpYmx5TmVlZHNEcmFnUHJldmlld1VwZGF0ZSB7IHRydWUgfTsKIAog
ICAgIE5TSW50ZWdlciBpdGVtSWRlbnRpZmllciB7IDAgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCShyZXZp
c2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVl
dEFzc2lzdGFudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBACiAjaW1wb3J0
IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3Ry
aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAj
aW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVu
dHMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4K
IApAQCAtMzA0LDcgKzMwNCw3IEBAIC0gKHZvaWQpX2NyZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rp
b25zOigKICAgICAgICAgaWYgKGlzSmF2YVNjcmlwdFVSTCkKICAgICAgICAgICAgIHRpdGxlU3Ry
aW5nID0gV0VCX1VJX1NUUklOR19LRVkoIkphdmFTY3JpcHQiLCAiSmF2YVNjcmlwdCBBY3Rpb24g
U2hlZXQgVGl0bGUiLCAiVGl0bGUgZm9yIGFjdGlvbiBzaGVldCBmb3IgSmF2YVNjcmlwdCBsaW5r
Iik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdGl0bGVTdHJpbmcgPSBXZWJDb3JlOjp1
c2VyVmlzaWJsZVN0cmluZyh0YXJnZXRVUkwpOworICAgICAgICAgICAgdGl0bGVTdHJpbmcgPSBX
VEY6OnVzZXJWaXNpYmxlU3RyaW5nKHRhcmdldFVSTCk7CiAgICAgICAgICAgICB0aXRsZUlzVVJM
ID0gWUVTOwogICAgICAgICB9CiAgICAgfSBlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDYgQEAKICNpbXBvcnQg
PFdlYkNvcmUvU2hhcmVEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnQuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJTZWxlY3Rpb25SZWN0Lmg+IC8vIEZJWE1FOiBXSzIgc2hvdWxkIG5vdCBp
bmNsdWRlIFdlYktpdCBoZWFkZXJzIQogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaD4KQEAgLTk4LDYgKzk3LDcgQEAKICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0
cmVhbS5oPgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTQ4OTUsOSArNDg5NSw5IEBA
IC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2gKIC0gKHZvaWQpYWN0aW9u
U2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVF
bGVtZW50V2l0aFVSTDooTlNVUkwgKil1cmwgcmVjdDooQ0dSZWN0KWJvdW5kaW5nUmVjdAogewog
ICAgIGlmIChfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCkKLSAgICAgICAgW190ZXh0U2VsZWN0aW9u
QXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJl
Y3Q6Ym91bmRpbmdSZWN0XTsKKyAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNob3dT
aGFyZVNoZWV0Rm9yOldURjo6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGlu
Z1JlY3RdOwogICAgIGVsc2UgaWYgKF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQpCi0gICAgICAgIFtf
d2ViU2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOnVzZXJWaXNpYmxlU3RyaW5n
KHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKKyAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Np
c3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6V1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpIGZyb21S
ZWN0OmJvdW5kaW5nUmVjdF07CiB9CiAKICNpZiBIQVZFKEFQUF9MSU5LUykKQEAgLTYxODcsNyAr
NjE4Nyw3IEBAIC0gKFVJVmlld0NvbnRyb2xsZXIgKilfcHJlc2VudGVkVmlld0NvbnQKIAogICAg
IE5TVVJMICp0YXJnZXRVUkwgPSBjb250cm9sbGVyLnByZXZpZXdEYXRhW1VJUHJldmlld0RhdGFM
aW5rXTsKICAgICBVUkwgY29yZVRhcmdldFVSTCA9IHRhcmdldFVSTDsKLSAgICBib29sIGlzVmFs
aWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0VtcHR5KCkgJiYgKFdlYkNv
cmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29yZVRhcmdldFVSTCkgfHwgV2ViQ29yZTo6cHJv
dG9jb2xJcyhjb3JlVGFyZ2V0VVJMLCAiZGF0YSIpKTsKKyAgICBib29sIGlzVmFsaWRVUkxGb3JJ
bWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0VtcHR5KCkgJiYgKFdURjo6cHJvdG9jb2xJ
c0luSFRUUEZhbWlseShjb3JlVGFyZ2V0VVJMKSB8fCBXVEY6OnByb3RvY29sSXMoY29yZVRhcmdl
dFVSTCwgImRhdGEiKSk7CiAKICAgICBpZiAoW19wcmV2aWV3SXRlbUNvbnRyb2xsZXIgdHlwZV0g
PT0gVUlQcmV2aWV3SXRlbVR5cGVMaW5rKSB7CiAgICAgICAgIF9oaWdobGlnaHRMb25nUHJlc3ND
YW5DbGljayA9IE5POwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTMgQEAKICNpbXBvcnQgIl9XS0dlb2xvY2F0aW9u
Q29yZUxvY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIl9XS0dlb2xvY2F0aW9uUG9zaXRpb25J
bnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgog
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2lt
cG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJlbW92ZSB1
c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIKICNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlv
bkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CkBAIC0xODQsNyArMTg0LDcgQEAgLSAodm9pZClnZW9s
b2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAKICAgICAgICAgaWQ8V0tVSURlbGVnYXRlUHJp
dmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4o
W3JlcXVlc3QudmlldyBVSURlbGVnYXRlXSk7CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOildKSB7Ci0gICAgICAgICAgICBX
ZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0LmZyYW1l
LT51cmwoKSk7CisgICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0
LmZyYW1lLT51cmwoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1l
SW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQo
KSwgKnJlcXVlc3Qub3JpZ2luLmdldCgpKSk7CiAgICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3
OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5k
bGVyOikpOwogICAgICAgICAgICAgV0tXZWJWaWV3ICp2aWV3RnJvbVJlcXVlc3QgPSByZXF1ZXN0
LnZpZXcuZ2V0KCk7CkBAIC0yMDAsOCArMjAwLDggQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZFJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25Gb3JVUkw6aXNNYWluRnJhbWU6bWFpbkZyYW1lVVJMOildKSB7CiAgICAgICAgICAgICBjb25z
dCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9IHJlcXVlc3QuZnJhbWUtPnBhZ2Uo
KS0+bWFpbkZyYW1lKCk7CiAgICAgICAgICAgICBib29sIGlzTWFpbkZyYW1lID0gcmVxdWVzdC5m
cmFtZSA9PSBtYWluRnJhbWU7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1l
VVJMKFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7Ci0gICAgICAgICAgICBX
ZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBtYWluRnJhbWUtPnVybCgp
KTsKKyAgICAgICAgICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUt
PnVybCgpKTsKKyAgICAgICAgICAgIFVSTCBtYWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+
dXJsKCkpOwogICAgICAgICAgICAgcmVxdWlyZXNVc2VyQXV0aG9yaXphdGlvbiA9IFt1aURlbGVn
YXRlIF93ZWJWaWV3OnJlcXVlc3Qudmlldy5nZXQoKQogICAgICAgICAgICAgICAgICBzaG91bGRS
ZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTWFpbkZyYW1l
OmlzTWFpbkZyYW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQ
REZWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xl
Z2FjeVBERlZpZXcubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDExICs0Mywx
MSBAQAogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9y
dCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIC8vIEFsbCBvZiBVSVBERlBhZ2UqIGFyZSBk
ZXByZWNhdGVkLCBzbyBqdXN0IGlnbm9yZSBkZXByZWNhdGVkIGRlY2xhcmF0aW9ucwogLy8gaW4g
dGhpcyBmaWxlIHVudGlsIHdlIHN3aXRjaCBvZmYgdGhlbS4KQEAgLTc3OSw3ICs3NzksNyBAQCAt
ICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoCiAtICh2b2lkKWFjdGlvblNo
ZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxl
bWVudFdpdGhVUkw6KE5TVVJMICopdXJsIHJlY3Q6KENHUmVjdClib3VuZGluZ1JlY3QKIHsKICAg
ICBfd2ViU2VsZWN0aW9uQXNzaXN0YW50ID0gYWRvcHROUyhbW1VJV0tTZWxlY3Rpb25Bc3Npc3Rh
bnQgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7Ci0gICAgW193ZWJTZWxlY3Rpb25Bc3Npc3Rh
bnQgc2hvd1NoYXJlU2hlZXRGb3I6V2ViQ29yZTo6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9t
UmVjdDpib3VuZGluZ1JlY3RdOworICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFy
ZVNoZWV0Rm9yOldURjo6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1Jl
Y3RdOwogICAgIF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgPSBuaWw7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzgsMTEgKzM4LDExIEBACiAjaW1wb3J0ICJfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRl
cm5hbC5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogQGlu
dGVyZmFjZSBXS1BERlZpZXcgKCkgPFBERkhvc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlLCBXS0Fj
dGlvblNoZWV0QXNzaXN0YW50RGVsZWdhdGU+CiBAZW5kCkBAIC00OTcsNyArNDk3LDcgQEAgLSAo
dm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaAogLSAodm9pZClhY3Rpb25TaGVl
dEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1l
bnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAg
YXV0byBzZWxlY3Rpb25Bc3Npc3RhbnQgPSBhZG9wdE5TKFtbVUlXS1NlbGVjdGlvbkFzc2lzdGFu
dCBhbGxvY10gaW5pdFdpdGhWaWV3OltfaG9zdFZpZXdDb250cm9sbGVyIHZpZXddXSk7Ci0gICAg
W3NlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpXZWJDb3JlOjp1c2VyVmlzaWJs
ZVN0cmluZyh1cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CisgICAgW3NlbGVjdGlvbkFzc2lz
dGFudCBzaG93U2hhcmVTaGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJl
Y3Q6Ym91bmRpbmdSZWN0XTsKIH0KIAogI2lmIEhBVkUoQVBQX0xJTktTKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVs
bHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCShyZXZpc2lvbiAyMzY3
NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTIg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6
ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9D
Rk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNTdHJpbmdTUEkuaD4KICNp
bXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9VUkxGb3JtYXR0aW5nU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNp
bXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9T
ZWN1cml0eVNQSS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtOTQxLDcgKzk0MSw3
IEBAIC0gKHZvaWQpX3VwZGF0ZUxvY2F0aW9uSW5mbwogICAgIGlmIChMaW5rUHJlc2VudGF0aW9u
TGlicmFyeSgpKQogICAgICAgICBkb21haW4gPSBbdXJsIF9scF9zaW1wbGlmaWVkRGlzcGxheVN0
cmluZ107CiAgICAgZWxzZQotICAgICAgICBkb21haW4gPSB1c2VyVmlzaWJsZVN0cmluZyh1cmwp
OworICAgICAgICBkb21haW4gPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiAjZW5kaWYK
IAogICAgIE5TU3RyaW5nICp0ZXh0ID0gbmlsOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAJKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9u
U3RhdGVDb2RpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMzLDcgKzExMzMsNyBAQCBib29s
IGRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCB1aW50CiAgICAgfQogCiAgICAgaWYgKGF1
dG8gcHJvdmlzaW9uYWxVUkxTdHJpbmcgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKHNlc3Npb25TdGF0ZURpY3Rpb25hcnksIHByb3Zpc2lvbmFsVVJM
S2V5KSkpIHsKLSAgICAgICAgc2Vzc2lvblN0YXRlLnByb3Zpc2lvbmFsVVJMID0gV2ViQ29yZTo6
VVJMKFdlYkNvcmU6OlVSTCgpLCBwcm92aXNpb25hbFVSTFN0cmluZyk7CisgICAgICAgIHNlc3Np
b25TdGF0ZS5wcm92aXNpb25hbFVSTCA9IFVSTChVUkwoKSwgcHJvdmlzaW9uYWxVUkxTdHJpbmcp
OwogICAgICAgICBpZiAoIXNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTC5pc1ZhbGlkKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1t
CShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1l
ZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMyArMzgsMTMg
QEAKICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9HZW9tZXRyeVV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yV2lu
ZG93Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvRGF0
YURldGVjdG9yc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTG9va3VwU1BJLmg+CiAjaW1w
b3J0IDxwYWwvc3BpL21hYy9OU01lbnVTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TUG9w
b3ZlclNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvUXVpY2tMb29rTWFjU1BJLmg+CiAjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogU09GVF9MSU5L
X0ZSQU1FV09SS19JTl9VTUJSRUxMQShRdWFydHosIFF1aWNrTG9va1VJKQogU09GVF9MSU5LX0NM
QVNTKFF1aWNrTG9va1VJLCBRTFByZXZpZXdNZW51SXRlbSkKQEAgLTI3NiwxNyArMjc2LDE3IEBA
IC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2wKIAogICAgIFN0cmluZyBh
YnNvbHV0ZUxpbmtVUkwgPSBoaXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBp
ZiAoIWFic29sdXRlTGlua1VSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OnBy
b3RvY29sSXMoYWJzb2x1dGVMaW5rVVJMLCAibWFpbHRvIikpIHsKKyAgICAgICAgaWYgKFdURjo6
cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJtYWlsdG8iKSkgewogICAgICAgICAgICAgX3R5
cGUgPSBrV0tJbW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtz
ZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJ0ZWwi
KSkgeworICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKGFic29sdXRlTGlua1VSTCwgInRlbCIp
KSB7CiAgICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvblRlbExpbms7CiAgICAg
ICAgICAgICByZXR1cm4gW3NlbGYgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRM
aW5rXTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KGFic29sdXRlTGlua1VSTCkpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0lu
SFRUUEZhbWlseShhYnNvbHV0ZUxpbmtVUkwpKSB7CiAgICAgICAgICAgICBfdHlwZSA9IGtXS0lt
bWVkaWF0ZUFjdGlvbkxpbmtQcmV2aWV3OwogCiAgICAgICAgICAgICBRTFByZXZpZXdNZW51SXRl
bSAqaXRlbSA9IFtOU01lbnVJdGVtIHN0YW5kYXJkUXVpY2tMb29rTWVudUl0ZW1dOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjM2NzY2KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQsMTIgKzExNCwxMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYv
TGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAj
aWYgIU9TKFdJTkRPV1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMjM2
NzY2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGF5bWVudENvb3JkaW5hdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMzEsNyArMTMxLDcg
QEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6Om9wZW5QYXltZW50UwogICAgIG1fd2ViUGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6T3BlblBheW1lbnRT
ZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIHJlcGx5SUQpKTsKIH0KIAotYm9v
bCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJM
JiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJM
cywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRS
ZXF1ZXN0KQorYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkoY29uc3Qg
VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0
KQogewogICAgIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5nczsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGxpbmtJY29uVVJMIDogbGlua0ljb25VUkxzKQpAQCAtMTg2LDcgKzE4Niw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpwYXltZW50Q29vcmQKIAogdm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgU3RyaW5nJiB2YWxpZGF0aW9u
VVJMU3RyaW5nKQogewotICAgIHBheW1lbnRDb29yZGluYXRvcigpLnZhbGlkYXRlTWVyY2hhbnQo
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB2YWxpZGF0aW9uVVJMU3RyaW5nKSk7CisgICAg
cGF5bWVudENvb3JkaW5hdG9yKCkudmFsaWRhdGVNZXJjaGFudChVUkwoVVJMKCksIHZhbGlkYXRp
b25VUkxTdHJpbmcpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmRpZEF1dGhv
cml6ZVBheW1lbnQoY29uc3QgV2ViQ29yZTo6UGF5bWVudCYgcGF5bWVudCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjAs
NyArNjAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuTWFrZVBheW1lbnRzKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1l
cmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIG9w
ZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6
OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNv
blVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jikgb3Zl
cnJpZGU7CisgICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNo
YW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MSw3ICs3MSw3IEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWUKICAg
ICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bjo6Q2FjaGVzKG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luLCB1cGRhdGVD
b3VudGVyKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRy
aWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpSZXRyaWV2
ZVJlY29yZHMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIs
IHVybCksIDApOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkb1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0
ZUNvdW50ZXIpIGZpbmFsOwogCi0gICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpVUkwmKSBmaW5hbDsKKyAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYpIGZpbmFs
OwogICAgIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKSBmaW5hbDsKICAgICB2b2lkIGRv
QmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYp
IGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYg
ZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6
OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgJKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdp
c3RyeVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwxMyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJveHkgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgUmVmUHRyPFdl
YkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpV
UkwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQs
IGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6
ZShjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJs
b2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwg
UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92
ZXJyaWRlOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogfTsKIApJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9uIDIzNjc2
NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVW
aWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAKIG5hbWVzcGFjZSBB
UEkgewogY2xhc3MgT2JqZWN0OwogY2xhc3MgU3RyaW5nOwotY2xhc3MgVVJMOwogCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZT4gewog
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMCwgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50VjEsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYyLCBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnRWMywgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjQsIFdLQnVuZGxl
UGFnZUxvYWRlckNsaWVudFY1LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNiwgV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50VjcsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY4LCBXS0J1bmRsZVBh
Z2VMb2FkZXJDbGllbnRWOT4gVmVyc2lvbnM7CkBAIC00OCw3ICs0Nyw3IEBAIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoY29uc3QgV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50QmFzZSopOwogCiAgICAgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2Vi
UGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0Kikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6
OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpP
YmplY3QqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcios
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6
Ok9iamVjdCopIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbShXZWJQYWdlJiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtJiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3Zl
cnJpZGU7CkBAIC04Nyw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmVhdHVyZXNVc2Vk
SW5QYWdlKFdlYlBhZ2UmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+Jikgb3ZlcnJpZGU7CiAK
LSAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmKSBjb25zdCBvdmVycmlkZTsKKyAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwo
V2ViRnJhbWUmLCBjb25zdCBVUkwmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6Okxh
eW91dE1pbGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcygpIGNvbnN0IG92ZXJyaWRlOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQCBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcgKzU1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIEFQSTo6
T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRH
b1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OkluamVjdGVk
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVj
dD4mKSB7IH0KQEAgLTk2LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmZWF0
dXJlc1VzZWRJblBhZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJhbWUoV2ViS2l0OjpXZWJQ
YWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYpIHsgfQotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNl
ckFnZW50Rm9yVVJMKFdlYktpdDo6V2ViRnJhbWUmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25z
dCB7IHJldHVybiBXVEY6OlN0cmluZygpOyB9CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2Vy
QWdlbnRGb3JVUkwoV2ViS2l0OjpXZWJGcmFtZSYsIGNvbnN0IFdURjo6VVJMJikgY29uc3QgeyBy
ZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpMYXlvdXRNaWxl
c3RvbmVzIGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7IHJldHVybiAwOyB9CiB9OwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgV0tTdHJpbmdSZWYgV0tCdW5kbGVG
cmFtZUNvcHlMYXllclRyZWVBcwogCiBib29sIFdLQnVuZGxlRnJhbWVBbGxvd3NGb2xsb3dpbmdM
aW5rKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKLSAgICBy
ZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICByZXR1cm4gdG9JbXBs
KGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHVy
bFJlZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1lSGFuZGxlc1BhZ2VTY2FsZUdlc3R1cmUo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKQEAgLTIxNywxMiArMjE3LDEyIEBAIGJvb2wgV0tC
dW5kbGVGcmFtZUdldERvY3VtZW50QmFja2dyb3VuZEMKIAogV0tTdHJpbmdSZWYgV0tCdW5kbGVG
cmFtZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lUmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJ
KHRvSW1wbChmcmFtZVJlZiktPnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKKyAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5hbWVGb3JS
ZXNvdXJjZVdpdGhVUkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBX
S1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4g
dG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwo
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOworICAg
IHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5taW1lVHlwZUZvclJlc291cmNl
V2l0aFVSTChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKSk7CiB9CiAKIGJvb2wgV0tC
dW5kbGVGcmFtZUNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVS
ZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMjM2NzY2KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDkgKzY2LDkgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlckxheWVyQ29tcG9zaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1doZWVsRXZlbnRU
ZXN0VHJpZ2dlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTQyNSw3ICs0MjUsNyBA
QCB2b2lkIFdLQnVuZGxlUGFnZVNldEZvb3RlckJhbm5lcihXS0J1bmRsCiAKIGJvb2wgV0tCdW5k
bGVQYWdlSGFzTG9jYWxEYXRhRm9yVVJMKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJl
ZiB1cmxSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+aGFzTG9jYWxEYXRhRm9y
VVJMKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpOwor
ICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChVUkwoVVJMKCks
IHRvV1RGU3RyaW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZVBhZ2VDYW5IYW5kbGVS
ZXF1ZXN0KFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpkaWRGaW5pc2hQaW5n
TG9hCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXJyb3IpLCBXVEZNb3ZlKHJl
c3BvbnNlKSk7CiB9CiAKLXZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhGcmFt
ZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpw
cmVjb25uZWN0VG8oRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCBjb25zdCBVUkwmIHVybCwgU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RD
b21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHVpbnQ2NF90IHBy
ZWNvbm5lY3Rpb25JZGVudGlmaWVyID0gZ2VuZXJhdGVMb2FkSWRlbnRpZmllcigpOwogICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9wcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXJzLmFkZChwcmVjb25u
ZWN0aW9uSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7
CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9v
bCkgZmluYWw7Ci0gICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKSBmaW5hbDsK
KyAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlciosIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpIGZpbmFsOwogICAgIAogICAgIHZvaWQgc2Vy
dmVQZW5kaW5nUmVxdWVzdHMoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgbWluaW11bVBy
aW9yaXR5KSBmaW5hbDsKIApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFy
dFBpbmdMb2FkKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgY29uc3Qg
V2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYp
OwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVj
dENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNv
cmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImJik7CiAKICAgICB2b2lkIHN0b3JlRGVyaXZlZERhdGFUb0Nh
Y2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYgYm9keUhhc2gsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBwYXJ0aXRpb24sIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQ
cm92aWRlci5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViU29ja2V0UHJvdmlkZXIgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6U29ja2V0UHJvdmlkZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
V2ViU29ja2V0UHJvdmlkZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29j
a2V0UHJvdmlkZXIpOyB9Ci0gICAgUmVmPFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZT4gY3Jl
YXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRl
bnRpYWxQYXJ0aXRpb24pIGZpbmFsOworICAgIFJlZjxXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGU+IGNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmLCBXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50
aWFsUGFydGl0aW9uKSBmaW5hbDsKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRQcm92aWRlcigpIHsg
fQogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRTdHJlYW0uY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw3ICs3MCw3IEBAIFJlZjxXZWJTb2NrZXRTdHJlYW0+IFdlYlNvY2tldFN0cmVhbTo6Y3IK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRTdHJlYW0odXJsLCBjbGllbnQsIHNl
c3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbikpOwogfQogCi1XZWJTb2NrZXRTdHJlYW06Oldl
YlNvY2tldFN0cmVhbShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBjYWNoZVBhcnRpdGlvbikKK1dlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFt
KGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVu
dCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9u
KQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQogICAgICwgbV9jbGllbnQo
Y2xpZW50KQogewpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0U3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTb2NrZXRTdHJlYW0g
OiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUsIHB1YmxpYyBJZGVudGlmaWVkPFdl
YlNvY2tldFN0cmVhbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0U3RyZWFt
PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlv
bik7CisgICAgc3RhdGljIFJlZjxXZWJTb2NrZXRTdHJlYW0+IGNyZWF0ZShjb25zdCBVUkwmLCBX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uKTsKICAgICBzdGF0aWMgdm9pZCBuZXR3b3JrUHJv
Y2Vzc0NyYXNoZWQoKTsKICAgICBzdGF0aWMgV2ViU29ja2V0U3RyZWFtKiBzdHJlYW1XaXRoSWRl
bnRpZmllcih1aW50NjRfdCk7CiAgICAgCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAg
SVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHVp
bnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CiAKLSAgICBXZWJTb2Nr
ZXRTdHJlYW0oY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlv
bik7CisgICAgV2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQ
YXJ0aXRpb24pOwogICAgIH5XZWJTb2NrZXRTdHJlYW0oKTsKIAogICAgIHNpemVfdCBtX2J1ZmZl
cmVkQW1vdW50IHsgMCB9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNiArMjMsMTUgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsdWdpbl9oCi0j
ZGVmaW5lIFBsdWdpbl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmluZE9w
dGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNTMsMTUgKzUyLDE1
IEBAIGNsYXNzIERlY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBB
ZmZpbmVUcmFuc2Zvcm07Ci0gICAgY2xhc3MgRmxvYXRQb2ludDsKLSAgICBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7Ci0gICAgY2xhc3MgSW50UG9pbnQ7Ci0gICAgY2xhc3MgSW50UmVjdDsKLSAgICBj
bGFzcyBJbnRTaXplOwotICAgIGNsYXNzIEZsb2F0UG9pbnQ7Ci0gICAgY2xhc3MgU2Nyb2xsYmFy
OwotICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEFmZmluZVRyYW5zZm9ybTsKK2NsYXNz
IEZsb2F0UG9pbnQ7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBJbnRQb2ludDsKK2Ns
YXNzIEludFJlY3Q7CitjbGFzcyBJbnRTaXplOworY2xhc3MgRmxvYXRQb2ludDsKK2NsYXNzIFNj
cm9sbGJhcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC04Miw3ICs4MSw3IEBAIGVudW0gUGx1Z2luVHlwZSB7CiBjbGFzcyBQbHVnaW4gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFBhcmFt
ZXRlcnMgewotICAgICAgICBXZWJDb3JlOjpVUkwgdXJsOworICAgICAgICBVUkwgdXJsOwogICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gdmFsdWVz
OwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7CkBAIC0xNjcsMTAgKzE2NiwxMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0
SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1p
biB0aGF0IGEgc3RyZWFtIG1heSBzZW5kIGFuIEhUVFAgcmVxdWVzdC4KLSAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIGludCBy
ZXNwb25zZVN0YXR1c0NvZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtV2lsbFNlbmRS
ZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVS
TCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1c0NvZGUpID0gMDsKIAogICAgIC8vIFRl
bGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIHJlY2VpdmVkIGl0cyBIVFRQIHJlc3Bv
bnNlLgotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwgCisgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8g
VGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgpAQCAtMTgz
LDcgKzE4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50
NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpID0gMDsKIAogICAgIC8vIFRlbGxzIHRo
ZSBwbHVnLWluIHRoYXQgdGhlIG1hbnVhbCBzdHJlYW0gaGFzIHJlY2VpdmVkIGl0cyBIVFRQIHJl
c3BvbnNlLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAK
KyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVS
TCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1l
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWlu
IHRoYXQgdGhlIG1hbnVhbCBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTMyMyw1ICszMjIs
MyBAQCBwcml2YXRlOgogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OlRvVmFs
dWVUeXBlTmFtZSkgXAogc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYktpdDo6UGx1Z2luJiBw
bHVnaW4pIHsgcmV0dXJuIHBsdWdpbi50eXBlKCkgPT0gV2ViS2l0OjpTcGVjaWZpY1BsdWdpblR5
cGU7IH0gXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gUGx1Z2lu
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Db250cm9sbGVyLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyAr
NDMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwogY2xhc3Mg
SW50UmVjdDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDEyICs4Nywx
MiBAQCBwcml2YXRlOgogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJl
cXVlc3RJRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVz
dElELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUph
dmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25z
ZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1l
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtV2lsbFNl
bmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYg
cmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVk
VGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURp
ZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90
IHN0cmVhbUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3Ry
ZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50
MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxT
dHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1E
aWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE2Myw3ICsxMTYzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3Jt
VVJMUmVxdWVzdChVUkxSZQogICAgIFJlZjxQbHVnaW5WaWV3PiBwcm90ZWN0KCp0aGlzKTsKIAog
ICAgIC8vIEZpcnN0LCBjaGVjayBpZiB0aGlzIGlzIGEgamF2YXNjcmlwdDogdXJsLgotICAgIGlm
IChwcm90b2NvbElzSmF2YVNjcmlwdChyZXF1ZXN0LT5yZXF1ZXN0KCkudXJsKCkpKSB7CisgICAg
aWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVybCgpKSkg
ewogICAgICAgICBwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QocmVxdWVzdCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBl
cmZvcm1GcmFtZUxvYWRVUkxSZXF1CiAKIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3Jp
cHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHByb3RvY29s
SXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwoKSkpOworICAgIEFTU0VSVChXVEY6
OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwoKSkpOwogCiAgICAg
UmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgp
OwogICAgIGlmICghZnJhbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAJKHJldmlzaW9uIDIz
Njc2NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Q
cm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCBWZWN0b3I8UGx1
Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsKQorVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Q
cm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbkluZm8oUGFnZSYgcGFnZSwgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRl
bnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzOwogICAgIGF1dG8gcGx1Z2lucyA9
IHBsdWdpbkluZm8ocGFnZSwgc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMpOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiAKICAgICBW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+Jikg
ZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5J
bmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBWZWN0
b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFn
ZSYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBvdmVycmlk
ZTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmNwcAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw4ICszOCw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQSGVhZGVyTWFwLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMVUdJTl9B
UkNISVRFQ1RVUkUoVU5JWCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAkocmV2aXNpb24gMjM2
NzY2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2V0SXNQbGF5aW5nQXVkaW8oYm9vbCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyUmVk
aXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RV
UkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsK
KyAgICB2b2lkIHJlZ2lzdGVyUmVkaXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25zdCBV
UkwmIHJlcXVlc3RVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmlj
YXRpb25EYXRhKTsKICAgICB2b2lkIHVybFJlZGlyZWN0UmVzcG9uc2Uodm9pZCogbm90aWZ5RGF0
YSwgYm9vbCBhbGxvdyk7CiAKICAgICAvLyBNZW1iZXIgZnVuY3Rpb25zIGZvciBjYWxsaW5nIGlu
dG8gdGhlIHBsdWctaW4uCkBAIC0yMDQsMTMgKzIwNCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdHJlYW1XaWxs
U2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVz
dFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVz
KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFt
TGVuZ3RoLAorICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNw
b25zZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRG
YWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiBy
ZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKKyAgICB2b2lkIG1hbnVhbFN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJl
YW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVy
cmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlz
aExvYWRpbmcoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAg
KzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW47CkBAIC01NSw4ICs1MSw4IEBAIHB1
YmxpYzoKICAgICB1aW50NjRfdCBzdHJlYW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtSUQ7
IH0KICAgICBjb25zdCBOUFN0cmVhbSogbnBTdHJlYW0oKSBjb25zdCB7IHJldHVybiAmbV9ucFN0
cmVhbTsgfQogCi0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6VVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCBy
ZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCisgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJl
ZGlyZWN0UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJl
YW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlm
aWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgJKHJldmlzaW9uIDIzNjc2NikKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM1LDEyICsxMzUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZyYW1lRGlk
RmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVE
aWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAg
IHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3Ry
aW5nJiByZXN1bHQpIGZpbmFsOwotICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9Ci0gICAg
dm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3Qg
bGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKKyAgICB2b2lk
IHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1
ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFs
IHsgfQorICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7CiAgICAgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0
ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1
aW50NjRfdCBzdHJlYW1JRCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90
IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7Ci0gICAgdm9pZCBtYW51YWxTdHJl
YW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6
OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5n
dGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlk
RmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29s
IHdhc0NhbmNlbGxlZCkgZmluYWw7CkBAIC0zMDYsNyArMzA2LDcgQEAgcHJpdmF0ZToKIAogICAg
IFdlYkNvcmU6OkludFNpemUgbV9zaXplOwogCi0gICAgV2ViQ29yZTo6VVJMIG1fc291cmNlVVJM
OworICAgIFVSTCBtX3NvdXJjZVVSTDsKIAogICAgIFN0cmluZyBtX3N1Z2dlc3RlZEZpbGVuYW1l
OwogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBtX2RhdGE7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0JKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3MDIsNyArMTcwMiw3IEBAIGJvb2wgUERGUGx1
Z2luOjpoYW5kbGVzUGFnZVNjYWxlRmFjdG9yKCkKIHZvaWQgUERGUGx1Z2luOjpjbGlja2VkTGlu
ayhOU1VSTCAqdXJsKQogewogICAgIFVSTCBjb3JlVVJMID0gdXJsOwotICAgIGlmIChwcm90b2Nv
bElzSmF2YVNjcmlwdChjb3JlVVJMKSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlw
dChjb3JlVVJMKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRnJhbWUqIGZyYW1lID0gd2ViRnJh
bWUoKS0+Y29yZUZyYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAkocmV2aXNpb24gMjM2NzY2
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDEzICs3OSwxMyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcj4mKSBmaW5hbDsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcikgZmluYWw7CiAKLSAgICB2b2lkIG1hdGNoUmVn
aXN0cmF0aW9uKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBjbGllbnRVUkwsIFJlZ2lzdHJhdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
dG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBtYXRjaFJlcXVl
c3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhPiYmKTsKICAgICB2b2lkIGRpZEdldFJlZ2lzdHJhdGlvbnModWludDY0X3QgbWF0
Y2hSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhPiYmKTsKLSAgICB2b2lkIHdoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVu
dFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB3
aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9y
aWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgY2FsbGJhY2tJ
RCwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJik7CiAKLSAgICB2b2lk
IGdldFJlZ2lzdHJhdGlvbnMoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2lu
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNr
JiYpIGZpbmFsOworICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyhXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRp
b25zQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Q
cm9taXNlKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKSBmaW5h
bDsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyMzY3
NjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBtYXRjaEFsbChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNs
YWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc2tpcFdhaXRpbmcoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBzZXRT
Y3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdCYpIGZpbmFsOworICAgIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmKSBmaW5hbDsKIAogICAgIC8vIElQ
QyBtZXNzYWdlcy4KICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2Uoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNz
YWdlKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHJldmlzaW9u
IDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDEwIEBAIHB1
YmxpYzoKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgYWRkVXNlclNjcmlwdChJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkJiwgV2ViQ29yZTo6VXNlclNjcmlwdCYmKTsKLSAgICB2b2lkIHJl
bW92ZVVzZXJTY3JpcHRXaXRoVVJMKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRXaXRoVVJMKEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQmLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3Jp
cHRzKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmKTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNo
ZWV0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCYm
KTsKLSAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCByZW1vdmVVc2VyU3R5
bGVTaGVldFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IFVSTCYpOwog
ICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQm
KTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4
Myw3ICsxMTgzLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVud3JhcENyeXB0b0tleShjbwog
CiAjZW5kaWYKIAotU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVu
Z2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBjb25zdAorU3RyaW5nIFdlYkNocm9t
ZUNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNp
emVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYgdXJsKSBj
b25zdAogewogICAgIFN0cmluZyByZXN1bHQ7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZUluZGV4LCBj
aGFsbGVuZ2VTdHJpbmcsIHVybCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZzo6UmVwbHkocmVzdWx0KSwgbV9wYWdlLnBhZ2VJRCgpKSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUNvbXBv
c2l0aW5nTGF5ZXJGbHVzaCgpIGZpbmFsOwogICAgIGJvb2wgYWRqdXN0TGF5ZXJGbHVzaFRocm90
dGxpbmcoV2ViQ29yZTo6TGF5ZXJGbHVzaFRocm90dGxlU3RhdGU6OkZsYWdzKSBmaW5hbDsKIAot
ICAgIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IEhhc2hTZXQ8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mKSBmaW5hbDsKKyAgICB2
b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBVUkwmLCBjb25zdCBIYXNoU2V0
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgZmluYWw7CiAKICNpZiBQTEFURk9STShXSU4p
CiAgICAgdm9pZCBzZXRMYXN0U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29yKCkgZmluYWwgeyB9CkBA
IC0zMjUsNyArMzI1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHVud3JhcENyeXB0b0tleShjb25z
dCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCBmaW5hbDsKICNlbmRp
ZgogCi0gICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25l
ZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJD
b3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVu
Z2VTdHJpbmcsIGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKFRFTEVQSE9O
RV9OVU1CRVJfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBoYW5kbGVUZWxl
cGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcmIG51bWJlciwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICB2b2lkIHNlYXJj
aFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGxv
b2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogICAgIGJvb2wgaXNT
cGVha2luZygpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRDb25jbHVkZUVkaXREcmFnKCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5n
JiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50Jiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICNl
bmRpZgogCiAgICAgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzk2LDcgKzE3OTYsNyBAQCBib29sIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjphbGxvd1NjcmlwdChiCiAgICAgcmV0dXJuICFwbHVnaW5WaWV3IHx8ICFw
bHVnaW5WaWV3LT5zaG91bGRBbGxvd1NjcmlwdGluZygpOwogfQogCi1ib29sIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCkKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNl
VW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFdlYlBh
Z2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC05NywxMyArOTcsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3Bh
dGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICpkZXRlY3Rpb25SZXN1bHRzKSBmaW5h
bDsKICNlbmRpZgogICAgIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VNYWluRG9jdW1lbnQoKSBmaW5h
bDsKLSAgICB2b2lkIGRpc3BhdGNoV2lsbENoYW5nZURvY3VtZW50KGNvbnN0IFdlYkNvcmU6OlVS
TCYgY3VycmVudFVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBuZXdVcmwpIGZpbmFsOworICAgIHZv
aWQgZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgVVJMJiBjdXJyZW50VXJsLCBjb25z
dCBVUkwmIG5ld1VybCkgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxv
YWRFdmVudHMoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZVByb3Zpc2lvbmFsVVJMKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVu
dFJlZGlyZWN0KCkgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJl
RGF0ZSkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
Y29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIGZpbmFsOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CiAgICAgdm9pZCBk
aXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKQEAgLTE1NSw4ICsxNTUs
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKFdlYkNvcmU6Okhp
c3RvcnlJdGVtKikgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnQoKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOwotICAgIHZvaWQgZGlk
RGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYsIGNvbnN0IFVSTCYpIGZpbmFsOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVS
TCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBmaW5hbDsKIAogICAgIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikg
ZmluYWw7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgZmluYWw7CkBAIC0xODksOSArMTg5LDkgQEAgcHJpdmF0
ZToKICAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVy
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJD
b3JlOjpEb2N1bWVudExvYWRlciYpIGZpbmFsOwogCi0gICAgdm9pZCBzZXRUaXRsZShjb25zdCBX
ZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7
CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwg
Y29uc3QgVVJMJikgZmluYWw7CiAgICAgCi0gICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJD
b3JlOjpVUkwmKSBmaW5hbDsKKyAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGZpbmFs
OwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3QgZmlu
YWw7CiAKQEAgLTIxMCwyMCArMjEwLDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5DYWNoZVBh
Z2UoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGlu
dCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJv
b2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIGZp
bmFsOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkg
ZmluYWw7CiAgICAgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBmaW5hbDsK
ICAgICB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZpbmFsOwog
ICAgIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2Vi
R0xQb2xpY3lGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3QgZmluYWw7Ci0gICAgV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2Vi
R0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJikgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBm
aW5hbDsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJD
b3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bVZhbHVlcykgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFw
cGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVs
ZW1lbnQmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIGZpbmFsOwogICAgIAotICAg
IFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGZpbmFsOworICAgIFdlYkNvcmU6Ok9i
amVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIGZpbmFsOwogICAgIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0
IGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChX
ZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSBmaW5hbDsKQEAgLTI0OSw3ICsyNDksNyBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBhbGxvd1NjcmlwdChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgZmlu
YWw7CiAKLSAgICBib29sIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIGJvb2wgc2hvdWxkRm9yY2VVbml2ZXJzYWxB
Y2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgVVJMJikgZmluYWw7CiAKICAgICBSZWY8V2ViQ29yZTo6
RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSBmaW5hbDsK
IApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDIzNjc2
NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw5ICs2MCw5IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9TYW1lU2l0ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VOYW1l
c3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1YmZyYW1lTG9hZGVyLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3Rm
L0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBQTEFURk9STShNQUMpCiAj
aW5jbHVkZSAiU3RyaW5nVXRpbGl0aWVzLmgiCkBAIC0zNjQsNyArMzY0LDcgQEAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcgogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+
ZGF0YSgpKSwgc2l6ZSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFN0cmluZyYgdGl0bGUpCitVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJM
RnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJv
YXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVi
b2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NywxMyArNDcsMTMgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnkq
IGNyZWF0ZUJsb2JSZWdpc3RyeSgpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViQ29yZTo6Q29va2ll
c1N0cmF0ZWd5Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6
OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIG92ZXJyaWRlOwotICAgIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBX
ZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0
cmF0ZWd5CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAg
IGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6
VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIFVSTCByZWFkVVJMRnJvbVBh
c3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlKSBvdmVycmlkZTsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CiAgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIGxvbmcgY2hhbmdlQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHVuaXF1ZU5h
bWUoKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpVUkwgdXJsKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAKICAgICBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogICAgIGxvbmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFz
dGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJJbWFnZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TdHJpbmdUcnVuY2F0b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0
cmFzLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2Ev
TlNVUkxFeHRyYXMuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgIlVJS2l0U1BJLmgi
CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVE
cmFnSQogICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpIHsKICAgICAgICAgdGl0bGUgPSB1cmwubGFz
dFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIHRpdGxlID0gdXNlclZpc2libGVTdHJpbmcoKE5TVVJMICopdXJsKTsKKyAgICAgICAgICAg
IHRpdGxlID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogICAgIH0KIAogICAgIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGVs
ZW1lbnQpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0kKICAgICAgICAgICAgIGZpbGVuYW1lID0gZG93bmxvYWRGaWxlbmFtZTsKICAg
ICB9CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0UHJvbWlz
ZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIGltYWdlSGFuZGxlLCBpbWFnZVNpemUsIGZp
bGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCBTdHJpbmcoW1tyZXNwb25zZSBVUkxdIGFic29sdXRl
U3RyaW5nXSksIHVzZXJWaXNpYmxlU3RyaW5nKChOU1VSTCAqKXVybCksIGFyY2hpdmVIYW5kbGUs
IGFyY2hpdmVTaXplKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBpbWFnZUhhbmRsZSwgaW1h
Z2VTaXplLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgU3RyaW5nKFtbcmVzcG9uc2UgVVJM
XSBhYnNvbHV0ZVN0cmluZ10pLCBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCksIGFyY2hpdmVI
YW5kbGUsIGFyY2hpdmVTaXplKSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNs
aWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGll
bnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxF
eHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29u
dHJvbGxlci5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlu
a1N0b3JlLgotICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0xpbmtWaXNpdGVk
KFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoLCBjb25zdCBVUkwmIGJh
c2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBvdmVycmlkZTsKICAgICB2
b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdI
YXNoKSBvdmVycmlkZTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24g
MjM2NzY2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MDksNyArNTA5LDcgQEAgdW5zaWduZWQgV2ViRnJhbWU6OnBl
bmRpbmdVbmxvYWRDb3VudCgpIAogICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogfQogCi1ib29sIFdl
YkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBjb25z
dAorYm9vbCBXZWJGcmFtZTo6YWxsb3dzRm9sbG93aW5nTGluayhjb25zdCBVUkwmIHVybCkgY29u
c3QKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkocmV2aXNpb24g
MjM2NzY2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNiBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxG
cmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKLWNsYXNz
IFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMDYsNyArMTA1LDcgQEAgcHVibGlj
OgogICAgIC8vIFdLQnVuZGxlRnJhbWUgQVBJIGFuZCBTUEkgZnVuY3Rpb25zCiAgICAgYm9vbCBp
c01haW5GcmFtZSgpIGNvbnN0OwogICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7Ci0gICAgV2ViQ29y
ZTo6VVJMIHVybCgpIGNvbnN0OworICAgIFVSTCB1cmwoKSBjb25zdDsKICAgICBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CiAgICAgU3RyaW5nIGlubmVy
VGV4dCgpIGNvbnN0OwogICAgIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0OwpAQCAtMTQxLDExICsx
NDAsMTEgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIHBlbmRpbmdVbmxvYWRDb3VudCgp
IGNvbnN0OwogICAgIAotICAgIGJvb2wgYWxsb3dzRm9sbG93aW5nTGluayhjb25zdCBXZWJDb3Jl
OjpVUkwmKSBjb25zdDsKKyAgICBib29sIGFsbG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgVVJMJikg
Y29uc3Q7CiAKICAgICBTdHJpbmcgcHJvdmlzaW9uYWxVUkwoKSBjb25zdDsKLSAgICBTdHJpbmcg
c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikg
Y29uc3Q7Ci0gICAgU3RyaW5nIG1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0OworICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNl
V2l0aFVSTChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgbWltZVR5cGVGb3JSZXNvdXJj
ZVdpdGhVUkwoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICB2b2lkIHNldFRleHREaXJlY3Rpb24o
Y29uc3QgU3RyaW5nJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1Nyw3ICsxMjU3
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZW5kQ2xvc2UoKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6Q2xvc2VQYWdlKGZhbHNlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFVSTElu
RnJhbWUoV2ViQ29yZTo6VVJMJiYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJQYWdl
Ojpsb2FkVVJMSW5GcmFtZShVUkwmJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2Vi
RnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7
CiAgICAgaWYgKCFmcmFtZSkKQEAgLTEzMjAsNyArMTMyMCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9h
ZERhdGEoTG9hZFBhcmFtZXRlcnMmJiAKICAgICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1l
dGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJz
LmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwotICAgIFVSTCBiYXNl
VVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgp
IDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBVUkwgYmFz
ZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFu
a1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKICAgICBs
b2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBXVEZNb3ZlKHNoYXJlZEJ1
ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05h
bWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7CiB9CiAKQEAgLTEz
MjgsNyArMTMyOCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgTG8K
IHsKICAgICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7
CiAKLSAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0
eSgpID8gYmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmlu
Zyk7CisgICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nLmlzRW1w
dHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVS
TFN0cmluZyk7CiAgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gbG9hZFBhcmFtZXRlcnMudW5yZWFj
aGFibGVVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0
ZXJzLnVucmVhY2hhYmxlVVJMU3RyaW5nKTsKICAgICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JV
UkwgPSBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZy5pc0VtcHR5
KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJy
b3JVUkxTdHJpbmcpOwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRh
KCkpLCBsb2FkUGFyYW1ldGVycy5kYXRhLnNpemUoKSk7CkBAIC0zMzczLDcgKzMzNzMsNyBAQCB2
b2lkIFdlYlBhZ2U6OmFkZENvbnNvbGVNZXNzYWdlKHVpbnQ2NF90CiAgICAgICAgIGZyYW1lLT5h
ZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHJl
cXVlc3RJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcG9ydERhdGEpCit2b2lkIFdlYlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25S
ZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJMJiByZXBvcnRVUkwsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmJiByZXBvcnREYXRhKQogewogICAgIGF1dG8gcmVwb3J0ID0gcmVwb3J0RGF0
YS50YWtlRGF0YSgpOwogICAgIGlmICghcmVwb3J0KQpAQCAtNTg3NCwxNCArNTg3NCwxNCBAQCB2
b2lkIFdlYlBhZ2U6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoCiAKIHZvaWQgV2ViUGFnZTo6
YWRkVXNlclNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
IGluamVjdGlvblRpbWUpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0IHsg
V1RGTW92ZShzb3VyY2UpLCBVUkwoV2ViQ29yZTo6YmxhbmtVUkwoKSksIFZlY3RvcjxTdHJpbmc+
KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVzIH07Cisg
ICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0IHsgV1RGTW92ZShzb3VyY2UpLCBVUkwo
V1RGOjpibGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5q
ZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKIAogICAgIG1fdXNlckNvbnRlbnRDb250cm9s
bGVyLT5hZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxk
KCksIFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmFkZFVzZXJTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIGluamVjdGVkRnJhbWVzKQogewotICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVz
ZXJTdHlsZVNoZWV0eyBzb3VyY2UsIFdlYkNvcmU6OmJsYW5rVVJMKCksIFZlY3RvcjxTdHJpbmc+
KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVVc2VyTGV2ZWwg
fTsKKyAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCB7c291cmNlLCBX
VEY6OmJsYW5rVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVj
dGVkRnJhbWVzLCBVc2VyU3R5bGVVc2VyTGV2ZWwgfTsKIAogICAgIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3Jt
YWxXb3JsZCgpLCBXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1OSw3ICsxNTksNiBAQCBjbGFzcyBTZWxlY3Rpb25SZWN0OwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0Owot
Y2xhc3MgVVJMOwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogCiBlbnVtIFN5bnRoZXRpY0NsaWNr
VHlwZSA6IGludDhfdDsKQEAgLTMxNiw3ICszMTUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAg
IHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSwg
TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCByZXF1ZXN0SUQgPSAwKTsKLSAg
ICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJik7CisgICAgdm9p
ZCBzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFVSTCYgcmVw
b3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYpOwogICAgIHZvaWQgZW5xdWV1ZVNlY3Vy
aXR5UG9saWN5VmlvbGF0aW9uRXZlbnQodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJp
dHlQb2xpY3lWaW9sYXRpb25FdmVudDo6SW5pdCYmKTsKIAogICAgIC8vIC0tIENhbGxlZCBieSB0
aGUgRHJhd2luZ0FyZWEuCkBAIC0zMzQsOSArMzMzLDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
UmVwbGFjZU11bHRpcGFydENvbnRlbnQoY29uc3QgV2ViRnJhbWUmKTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWQoV2ViRnJhbWUqKTsKICAgICB2b2lkIHNob3coKTsKLSAgICBTdHJpbmcgdXNlckFn
ZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwotICAgIFN0cmluZyB1c2VyQWdlbnQoV2Vi
RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKLSAgICBTdHJpbmcgcGxhdGZvcm1V
c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHVzZXJBZ2Vu
dChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgdXNlckFnZW50KFdlYkZyYW1lKiwgY29u
c3QgVVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYp
IGNvbnN0OwogICAgIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCk7CiAK
ICAgICB2b2lkIGRpZEluc2VydE1lbnVFbGVtZW50KFdlYkNvcmU6OkhUTUxNZW51RWxlbWVudCYp
OwpAQCAtNDE5LDggKzQxOCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQkdM
KQotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChXZWJGcmFt
ZSosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBy
ZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsK
KyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUq
LCBjb25zdCBVUkwmKTsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdM
UG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAgICAKICAgICBl
bnVtIGNsYXNzIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgeyBObywgWWVzIH07CkBAIC02ODUs
NyArNjg0LDcgQEAgcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51KiBjb250ZXh0TWVudUF0UG9p
bnRJbldpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogI2VuZGlmCiAKLSAgICBib29s
IGhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBib29sIGhhc0xv
Y2FsRGF0YUZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyBib29sIGNhbkhhbmRsZVJl
cXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKQEAgLTk0Myw3ICs5NDIs
NyBAQCBwdWJsaWM6CiAgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0KCk7IH0KICNlbmRpZgogCi0g
ICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKKyAgICB2b2lkIHNhdmVQREZUb0Zp
bGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25z
dCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25n
IHNpemUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzYXZlUERGVG9UZW1wb3Jh
cnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsK
QEAgLTExNTksNyArMTE1OCw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJh
bWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVS
TCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAg
IHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25z
dCBVc2VyRGF0YSYpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKQEAg
LTExOTcsNyArMTE5Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2Nyb2xsKFdlYkNv
cmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51
bGFyaXR5KTsKICAgICBzdGF0aWMgYm9vbCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpTY3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0
eSk7CiAKLSAgICB2b2lkIGxvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCYmLCB1aW50NjRfdCBm
cmFtZUlEKTsKKyAgICB2b2lkIGxvYWRVUkxJbkZyYW1lKFVSTCYmLCB1aW50NjRfdCBmcmFtZUlE
KTsKIAogICAgIGVudW0gY2xhc3MgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07
CiAgICAgdm9pZCByZXN0b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGU+JiwgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QsIFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5OjpPdmVyd3JpdGVFeGlzdGluZ0l0ZW0pOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdz
QmFja2dyb3VuZCkKIAogICAgIEFkZENvbnNvbGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGVu
dW0gTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBlbnVtIE1lc3NhZ2VMZXZlbCBtZXNzYWdl
TGV2ZWwsIFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgU2VuZENTUFZp
b2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpVUkwgcmVwb3J0VVJMLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCisgICAgU2VuZENTUFZpb2xhdGlvblJl
cG9ydCh1aW50NjRfdCBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlIHJlcG9ydERhdGEpCiAgICAgRW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQo
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6
SW5pdCBldmVudEluaXQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE0Myw3ICsxNDMsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHb1RvQmFja0Zvcndh
cmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQsIGVudW0gV2ViQ29yZTo6RnJhbWVMb2Fk
VHlwZSBiYWNrRm9yd2FyZFR5cGUsIGVudW0gV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCkKICAgICBUcnlSZXN0b3JlU2Nyb2xs
UG9zaXRpb24oKQogCi0gICAgTG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMIHVybCwgdWludDY0
X3QgZnJhbWVJRCkKKyAgICBMb2FkVVJMSW5GcmFtZShVUkwgdXJsLCB1aW50NjRfdCBmcmFtZUlE
KQogICAgIExvYWRSZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJh
bWV0ZXJzKQogICAgIExvYWREYXRhKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzKQogICAgIExvYWRBbHRlcm5hdGVIVE1MKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJh
bWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL05TU2Nyb2xsZXJJbXBEZXRh
aWxzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BlcmZvcm1hbmNlTG9nZ2luZy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxhbGdvcml0aG0+CiAjaW1wb3J0IDxkaXNwYXRj
aC9kaXNwYXRjaC5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CkBAIC03MSw2ICs3MCw3IEBA
CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBh
bC9zcGkvbWFjL05TQXBwbGljYXRpb25TUEkuaD4KICNpbXBvcnQgPHN0ZGlvLmg+CisjaW1wb3J0
IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQg
IldLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJT1MuaCIKQEAgLTQzMyw3ICs0MzMsNyBAQCB2
b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGlmIChOU1VSTCAqb3JpZ2luQXNVUkwgPSBvcmlnaW4oKnBhZ2UpKQotICAg
ICAgICAgICAgW2FjdGl2ZVBhZ2VVUkxzIGFkZE9iamVjdDp1c2VyVmlzaWJsZVN0cmluZyhvcmln
aW5Bc1VSTCldOworICAgICAgICAgICAgW2FjdGl2ZVBhZ2VVUkxzIGFkZE9iamVjdDpXVEY6OnVz
ZXJWaXNpYmxlU3RyaW5nKG9yaWdpbkFzVVJMKV07CiAgICAgfQogCiAgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZB
VUxULCAwKSwgW2FjdGl2ZVBhZ2VVUkxzXSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkocmV2
aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0
byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKwogMjAxOC0wOS0wNSAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHIyMzU1ODUpOiBXZWJEb3dubG9hZEludGVybmFsLmggaXMgbWlzc2luZyBmcm9tIFdlYktpdExl
Z2FjeSBYY29kZSBwcm9qZWN0CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCShy
ZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxv
YWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3Zl
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCBzZXREZWZlcnNMb2Fk
aW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBjcm9z
c09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKSBmaW5hbDsKKyAgICB2b2lkIGNyb3NzT3JpZ2luUmVk
aXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFVSTCYgcmVkaXJl
Y3RVUkwpIGZpbmFsOwogICAgIAogICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkUHJpb3JpdHk6OlZlcnlMb3cpIGZpbmFsOwogICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdS
ZXF1ZXN0cygpIGZpbmFsOwpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0
YXJ0UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
JiwgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKIAotICAgIHZvaWQgcHJlY29u
bmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYsIGNv
bnN0IFVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAKICAgICB2b2lkIHN0b3JlRGVyaXZlZERhdGFUb0Nh
Y2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsIHsgfQogCkBAIC0xMTgsNyArMTE4LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgRmluZE9ubHkKICAgICB9OwogICAgIAotICAgIEhvc3RJbmZvcm1hdGlv
biogaG9zdEZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBDcmVhdGVIb3N0UG9saWN5ID0gRmlu
ZE9ubHkpOworICAgIEhvc3RJbmZvcm1hdGlvbiogaG9zdEZvclVSTChjb25zdCBVUkwmLCBDcmVh
dGVIb3N0UG9saWN5ID0gRmluZE9ubHkpOwogICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMo
SG9zdEluZm9ybWF0aW9uKiwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkpOwogCiAgICAg
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSG9zdEluZm9ybWF0aW9uKiwgU3RyaW5nSGFzaD4gSG9z
dE1hcDsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzNyBAQAorMjAxOC0xMC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTUF0
dHIubW06CisgICAgICAgICogRE9NL0RPTUJsb2IubW06CisgICAgICAgICogRE9NL0RPTUNTU0No
YXJzZXRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NJbXBvcnRSdWxlLm1tOgorICAgICAg
ICAqIERPTS9ET01DU1NNZWRpYVJ1bGUubW06CisgICAgICAgICogRE9NL0RPTUNTU1BhZ2VSdWxl
Lm1tOgorICAgICAgICAqIERPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbToKKyAgICAgICAgKiBE
T00vRE9NQ1NTUnVsZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5t
bToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01D
U1NTdHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9ET01DU1NWYWx1ZS5tbToKKyAgICAgICAg
KiBET00vRE9NQ2hhcmFjdGVyRGF0YS5tbToKKyAgICAgICAgKiBET00vRE9NQ291bnRlci5tbToK
KyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3VtZW50
RnJhZ21lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3VtZW50VHlwZS5tbToKKyAgICAgICAg
KiBET00vRE9NRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTUZpbGUubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQXBwbGV0
RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEFyZWFFbGVtZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01IVE1MQlJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQmFzZUVs
ZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEJ1
dHRvbkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50Lm1tOgor
ICAgICAgICAqIERPTS9ET01IVE1MQ29sbGVjdGlvbi5tbToKKyAgICAgICAgKiBET00vRE9NSFRN
TERpdkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxEb2N1bWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxFbWJlZEVs
ZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEZv
cm1FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tOgorICAg
ICAgICAqIERPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MSFJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSGVhZEVsZW1lbnQubW06Cisg
ICAgICAgICogRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9N
SFRNTEh0bWxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTEltYWdlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00v
RE9NSFRNTElucHV0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTExJRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbToKKyAgICAgICAgKiBET00v
RE9NSFRNTExlZ2VuZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxMaW5rRWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1hcEVsZW1lbnQubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1lZGlhRWxl
bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MTW9kRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9MaXN0RWxl
bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9iamVjdEVsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxP
cHRpb25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24u
bW06CisgICAgICAgICogRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MUGFyYW1FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MUXVvdGVF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MU2NyaXB0RWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxT
dHlsZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50
Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRh
YmxlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxVTGlzdEVs
ZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxWaWRlb0VsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUtleWJvYXJkRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTU1lZGlhTGlzdC5t
bToKKyAgICAgICAgKiBET00vRE9NTW91c2VFdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTXV0
YXRpb25FdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTmFtZWROb2RlTWFwLm1tOgorICAgICAg
ICAqIERPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW06CisgICAgICAgICogRE9NL0RPTVJh
bmdlLm1tOgorICAgICAgICAqIERPTS9ET01TdHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9E
T01UZXh0Lm1tOgorICAgICAgICAqIERPTS9ET01UZXh0RXZlbnQubW06CisgICAgICAgICogRE9N
L0RPTVRva2VuTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9NVUlFdmVudC5tbToKKyAgICAgICAg
KiBET00vRE9NWFBhdGhSZXN1bHQubW06CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRl
bS5tbToKKyAgICAgICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1VS
TCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfVVJMQnlS
ZW1vdmluZ1VzZXJJbmZvXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfZGF0YUZvclVSTENvbXBv
bmVudFR5cGU6XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfc2NoZW1lRGF0YV0pOgorICAgICAg
ICAoLVtOU1VSTCBfd2ViX2hvc3REYXRhXSk6CisgICAgICAgICogTWlzYy9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4ubW06CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0uaDoKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZXRSZXF1ZXN0VVJMKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGll
bnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyBjb25zdCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
bW06CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OnNob3dQYXltZW50VUkp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW06CisgICAgICAgIChXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJW
aXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9sb2Fk
RGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dW5yZWFjaGFibGVVUkw6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAg
ICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0aW9uQ29u
dHJvbGxlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0lu
dGVybmFsLmg6CisKIDIwMTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgUGFyc2VkVVJMU3RyaW5nCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUF0dHIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1
LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBdHRyKj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUJsb2IubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUJsb2IubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAg
QEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhl
Y1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0
PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJuYWwpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTQ2hhcnNldFJ1bGUubW0JKHJldmlzaW9uIDIzNjc2NikKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsOSArMzAsOSBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogQGltcGxlbWVudGF0aW9uIERPTUNTU0NoYXJzZXRSdWxlCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NJbXBvcnRSdWxlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NJbXBvcnRSdWxlLm1tCShyZXZp
c2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0
UnVsZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYUxpc3QuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkNTU0ltcG9ydFJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihf
aW50ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVk
aWFSdWxlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
U1NNZWRpYVJ1bGUubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVk
aWFMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NNZWRpYVJ1bGUqPihyZWludGVycHJldF9jYXN0PFdl
YkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQ1NTUGFnZVJ1bGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUGFnZVJ1bGUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM0LDkgKzM0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NQYWdlUnVsZSo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q1NTUnVsZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUHJpbWl0aXZlVmFs
dWUubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01DU1NQcmltaXRpdmVWYWx1ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcsOSBAQAog
I2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkRlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlKj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01WYWx1ZSo+KF9pbnRlcm5hbCkpCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5k
bGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVy
bmFsKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVEZWNs
YXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbi5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM2LDEwICszNiwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpD
RXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbio+KF9pbnRlcm5h
bCkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVS
dWxlLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTU3R5bGVSdWxlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVy
dGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q1NTU3R5bGVSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZVNoZWV0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q1NTU3R5bGVTaGVldCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6U3R5bGVTaGVldCo+KF9pbnRlcm5hbCkpCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0JKHJldmlzaW9u
IDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5k
bGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01W
YWx1ZSo+KF9pbnRlcm5hbCkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUNoYXJhY3RlckRhdGEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUNoYXJhY3RlckRhdGEubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DaGFyYWN0ZXJEYXRhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSwxMCArMzEsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NoYXJhY3RlckRhdGEuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkNoYXJhY3RlckRhdGEqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihfaW50ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q291bnRlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q291bnRlci5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUNvdW50ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQAogI2lt
cG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6RGVwcmVjYXRlZENTU09NQ291bnRlcio+KF9pbnRlcm5hbCkKIApJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC04MiwxMiArODIsMTIgQEAKICNpbXBvcnQgPFdlYkNvcmUvVGV4dC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9UcmVlV2Fsa2VyLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRoRXhwcmVzc2lvbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9YUGF0aE5TUmVzb2x2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhSZXN1bHQu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRvY3VtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0JKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw5ICszNyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL05hbWVOb2Rl
TGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1l
bnRGcmFnbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkp
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudFR5cGUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50VHlw
ZS5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TURvY3VtZW50VHlwZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OYW1lZE5vZGVNYXAu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkRvY3VtZW50VHlwZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01FdmVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
RXZlbnQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01FdmVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDEwIEBACiAjaW1wb3J0
IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQq
PihfaW50ZXJuYWwpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1t
CShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmls
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9G
aWxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpGaWxl
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpCbG9iKj4oX2ludGVybmFsKSkKIApJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQW5jaG9yRWxlbWVu
dC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxBbmNob3JFbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdl
YkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTEFwcGxldEVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFwcGxldEVsZW1lbnQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5h
bWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
QXBwbGV0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1l
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxB
cmVhRWxlbWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxBcmVhRWxlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MQlJFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQlJFbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJSRWxlbWVudC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxCUkVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VFbGVtZW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQu
bW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQmFzZUVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpIVE1MQmFzZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
Ok5vZGUqPihfaW50ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTEJhc2VGb250RWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFVu
a25vd25FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MVW5rbm93bkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUq
PihfaW50ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEJvZHlFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MQm9keUVsZW1lbnQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQqPihyZWlu
dGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCdXR0b25FbGVtZW50Lm1tCShy
ZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJ1
dHRvbkVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDkgQEAKICNpbXBvcnQg
PFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MQ2FudmFzRWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTENhbnZhc0VsZW1lbnQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ2FudmFzRWxlbWVudC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TdHJpbmdBZGFwdG9ycy5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24u
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xs
ZWN0aW9uLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTENvbGxlY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICszNSwxMCBA
QAogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OkhUTUxDb2xsZWN0aW9uKj4oX2ludGVybmFsKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTERpdkVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEaXZFbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERpdkVsZW1lbnQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRGl2RWxl
bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRG9jdW1lbnQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEb2N1bWVudC5tbQko
cmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxE
b2N1bWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkhUTUxEb2N1bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+
KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
RWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEVsZW1lbnQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRWxlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRW1iZWRFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRW1iZWRFbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVtYmVkRWxlbWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFt
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxF
bWJlZEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxl
bWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEZpZWxkU2V0RWxlbWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM2LDEwICszNiwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkaXR5U3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MRm9udEVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGb250RWxl
bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9ybUVsZW1lbnQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVu
dC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxGb3JtRWxlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGcmFtZUVs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1l
U2V0RWxlbWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxGcmFtZVNldEVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDkg
KzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZp
bmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0JKHJldmlzaW9uIDIz
Njc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSFJFbGVtZW50Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxO
YW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TEhSRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkp
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZEVsZW1lbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFk
RWxlbWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxIZWFkRWxlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxIZWFkRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MSGVhZGluZ0VsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbQkocmV2aXNpb24gMjM2
NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkhUTUxIZWFkaW5nRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSHRt
bEVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxIdG1sRWxlbWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEs
OSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxIdG1sRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElGcmFtZUVsZW1lbnQubW0JKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1l
RWxlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxJbWFnZUVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW1hZ2VFbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElucHV0RWxlbWVudC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElucHV0RWxlbWVu
dC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxJbnB1dEVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0LDkgKzY0LDkgQEAgQGlu
dGVyZmFjZSBVSVRleHRBdXRvZmlsbFN1Z2dlc3Rpb24gOiBVSQogI2ltcG9ydCA8V2ViQ29yZS9O
b2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMSUVs
ZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxMSUVsZW1lbnQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MTElFbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExJRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFt
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxM
YWJlbEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExlZ2VuZEVsZW1l
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxM
ZWdlbmRFbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDkg
KzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZp
bmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTGVnZW5kRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGlua0VsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMaW5rRWxlbWVudC5tbQkocmV2aXNpb24g
MjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMaW5rRWxlbWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MTGlua0VsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcEVs
ZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxNYXBFbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTE1hcEVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMz
LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWFwRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbQkocmV2aXNpb24g
MjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXJxdWVlRWxl
bWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxNYXJxdWVlRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+
KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
TWVkaWFFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1lZGlhRWxlbWVudC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzgsOSArMzgsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYUVycm9yLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RpbWVSYW5nZXMuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWV0YUVsZW1lbnQubW0JKHJl
dmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWV0
YUVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUq
PihfaW50ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE1vZEVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxNb2RFbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTE1vZEVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMx
LDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTW9kRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT0xpc3RFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT0xpc3RFbGVtZW50Lm1tCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9MaXN0RWxl
bWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MT0xpc3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MT0xpc3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxPYmplY3RFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw5ICszNyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPYmpl
Y3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1l
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxP
cHRHcm91cEVsZW1lbnQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MT3B0R3JvdXBFbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxPcHRHcm91cEVsZW1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPcHRHcm91cEVs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbkVsZW1lbnQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25F
bGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTE9wdGlvbkVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE9wdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9u
Lm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9k
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZhcmlhbnQuaD4KIAogI2RlZmluZSBJ
TVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uKj4oX2lu
dGVybmFsKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3Jh
cGhFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxQYXJhZ3JhcGhFbGVt
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
UGFyYWdyYXBoRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRl
cm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUGFyYW1F
bGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MUGFyYW1FbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEs
OSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MUGFyYW1FbGVtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0J
KHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
UXVvdGVFbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxRdW90ZUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxRdW90ZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdl
YkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTFNjcmlwdEVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTY3JpcHRFbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNjcmlwdEVsZW1lbnQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFNj
cmlwdEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxTY3JpcHRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxT
ZWxlY3RFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MU2VsZWN0RWxlbWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxlY3RFbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw5ICs0NCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTdHlsZUVsZW1lbnQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTdHlsZUVsZW1lbnQubW0JKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU3R5bGVF
bGVtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlU2hlZXQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUq
PihfaW50ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNhcHRpb25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbQkocmV2aXNp
b24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNl
bGxFbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxUYWJsZUNlbGxFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29s
RWxlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MVGFibGVDb2xFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVDb2xFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxUYWJsZUVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUVsZW1lbnQubW0JKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJs
ZVNlY3Rpb25FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxUYWJsZVJvd0VsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVSb3dFbGVtZW50Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw5ICszNSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZVJv
d0VsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkhUTUxUYWJsZVJvd0VsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihf
aW50ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW0JKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGl0bGVFbGVtZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUaXRs
ZUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkhUTUxUaXRsZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFVMaXN0
RWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFVMaXN0RWxlbWVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMx
LDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFVMaXN0RWxlbWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFVMaXN0RWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVmlkZW9FbGVtZW50Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVmlkZW9FbGVtZW50Lm1t
CShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TFZpZGVvRWxlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OktleWJvYXJkRXZl
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2ludGVybmFsKSkKIApJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tCShyZXZpc2lv
biAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFMaXN0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok1lZGlhTGlzdCo+KF9p
bnRlcm5hbCkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZl
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNl
RXZlbnQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Nb3VzZUV2ZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6TW91c2VFdmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihf
aW50ZXJuYWwpKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTXV0YXRp
b25FdmVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
TXV0YXRpb25FdmVudC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMy
LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTXV0YXRpb25FdmVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNdXRhdGlvbkV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTU5hbWVkTm9kZU1hcC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5hbWVkTm9kZU1hcC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL05hbWVkTm9kZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOYW1lZE5vZGVNYXAqPihfaW50ZXJuYWwp
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVTaGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQkocmV2
aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvTm9k
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpSYW5nZSo+KF9pbnRlcm5hbCkKIApJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxlU2hlZXQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxlU2hlZXQubW0JKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUv
Tm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlN0eWxlU2hlZXQqPihfaW50
ZXJuYWwpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0Lm1tCShyZXZp
c2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0Kj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dEV2ZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRva2VuTGlzdC5tbQkocmV2aXNpb24gMjM2
NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRva2VuTGlzdC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVy
cy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
ZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpET01Ub2tlbkxpc3QqPihfaW50
ZXJuYWwpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1t
CShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlF
dmVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1VJRXZlbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OlVJRXZlbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2ludGVybmFs
KSkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aFJlc3Vs
dC5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVhQYXRoUmVzdWx0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aFJlc3VsdC5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpYUGF0aFJlc3VsdCo+KF9pbnRlcm5hbCkKIApJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJ
dGVtLm1tCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnlJdGVtLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMyArNDcsMTMgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzMsMTQgKzMzLDE1IEBACiAjaW1wb3J0ICJXZWJMb2NhbGl6YWJsZVN0cmluZ3MuaCIK
ICNpbXBvcnQgIldlYk5TRGF0YUV4dHJhcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJl
cXVlc3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvYWRl
ck5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHVuaWNvZGUv
dWNoYXIuaD4KICNpbXBvcnQgPHVuaWNvZGUvdXNjcmlwdC5oPgorI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTEwOSw3ICsxMTAsNyBAQCAt
IChOU1N0cmluZyAqKV93ZWJfb3JpZ2luYWxEYXRhQXNTdHJpbmcKIAogLSAoTlNTdHJpbmcgKilf
d2ViX3VzZXJWaXNpYmxlU3RyaW5nCiB7Ci0gICAgcmV0dXJuIHVzZXJWaXNpYmxlU3RyaW5nKHNl
bGYpOworICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHNlbGYpOwogfQogCiAtIChC
T09MKV93ZWJfaXNFbXB0eQpAQCAtMTM5LDcgKzE0MCw3IEBAIC0gKE5TVVJMICopX3dlYmtpdF9V
UkxCeVJlbW92aW5nRnJhZ21lbnQKIAogLSAoTlNVUkwgKilfd2ViX1VSTEJ5UmVtb3ZpbmdVc2Vy
SW5mbwogewotICAgIHJldHVybiBVUkxCeVJlbW92aW5nVXNlckluZm8oc2VsZik7CisgICAgcmV0
dXJuIFdURjo6VVJMQnlSZW1vdmluZ1VzZXJJbmZvKHNlbGYpOwogfQogCiAtIChCT09MKV93ZWJr
aXRfaXNKYXZhU2NyaXB0VVJMCkBAIC0xNzUsMTcgKzE3NiwxNyBAQCAtKE5TRGF0YSAqKV93ZWJf
c2NoZW1lU2VwYXJhdG9yV2l0aG91dENvCiAKIC0oTlNEYXRhICopX3dlYl9kYXRhRm9yVVJMQ29t
cG9uZW50VHlwZTooQ0ZVUkxDb21wb25lbnRUeXBlKWNvbXBvbmVudFR5cGUKIHsKLSAgICByZXR1
cm4gZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwgY29tcG9uZW50VHlwZSk7CisgICAgcmV0
dXJuIFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwgY29tcG9uZW50VHlwZSk7CiB9
CiAKIC0oTlNEYXRhICopX3dlYl9zY2hlbWVEYXRhCiB7Ci0gICAgcmV0dXJuIGRhdGFGb3JVUkxD
b21wb25lbnRUeXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudFNjaGVtZSk7CisgICAgcmV0dXJuIFdU
Rjo6ZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwga0NGVVJMQ29tcG9uZW50U2NoZW1lKTsK
IH0KIAogLShOU0RhdGEgKilfd2ViX2hvc3REYXRhCiB7Ci0gICAgTlNEYXRhICpyZXN1bHQgPSBk
YXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRIb3N0KTsKKyAgICBO
U0RhdGEgKnJlc3VsdCA9IFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwga0NGVVJM
Q29tcG9uZW50SG9zdCk7CiAgICAgTlNEYXRhICpzY2hlbWUgPSBbc2VsZiBfd2ViX3NjaGVtZURh
dGFdOwogICAgIC8vIFRha2Ugb2ZmIGxvY2FsaG9zdCBmb3IgZmlsZQogICAgIGlmIChbc2NoZW1l
IF93ZWJfaXNDYXNlSW5zZW5zaXRpdmVFcXVhbFRvQ1N0cmluZzoiZmlsZSJdKSB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250ZW50
VVJMUGF0dGVybi5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0
LDggKzI0LDggQEAKIAogI2ltcG9ydCAiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAKLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJDb250ZW50VVJMUGF0
dGVybi5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
blN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FuY2VsTG9hZEFu
ZERlc3Ryb3lTdHJlYW1XaXRoRXJyb3IoTlNFcnJvciAqKTsKIAotICAgIHZvaWQgc2V0UmVxdWVz
dFVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwpIHsgbV9yZXF1ZXN0VVJMID0gcmVx
dWVzdFVSTDsgfQorICAgIHZvaWQgc2V0UmVxdWVzdFVSTChjb25zdCBVUkwmIHJlcXVlc3RVUkwp
IHsgbV9yZXF1ZXN0VVJMID0gcmVxdWVzdFVSTDsgfQogCiAgICAgdm9pZCBzdGFydCgpOwogICAg
IHZvaWQgc3RvcCgpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB3YW50
c0FsbFN0cmVhbXMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVE
YXRhPiBtX2RlbGl2ZXJ5RGF0YTsKLSAgICBXZWJDb3JlOjpVUkwgbV9yZXF1ZXN0VVJMOworICAg
IFVSTCBtX3JlcXVlc3RVUkw7CiAgICAgUmV0YWluUHRyPE5TVVJMPiBtX3Jlc3BvbnNlVVJMOwog
ICAgIENTdHJpbmcgbV9taW1lVHlwZTsKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OCw3ICs1OCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Byb3h5U2VydmVy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL25wcnVudGlt
ZV9pbXBsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL3J1bnRpbWVfb2JqZWN0Lmg+CkBAIC02Niw2ICs2
NSw3IEBACiAjaW1wb3J0IDx1dGlsaXR5PgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIGV4dGVybiAiQyIgewpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjcsNyArMjI3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKICNlbmRpZgogCi0gICAgU3RyaW5nIHNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmlu
ZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAg
ICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNp
emVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYpIGNvbnN0
IGZpbmFsOwogCiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEzOSw3ICsx
MTM5LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYQogCiAjZW5k
aWYKIAotU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJp
bmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBjb25zdAorU3RyaW5nIFdlYkNocm9tZUNsaWVu
dDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRl
eCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAog
ewogICAgIFNFTCBzZWxlY3RvciA9IEBzZWxlY3RvcihzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmdGb3JXZWJWaWV3Oik7CiAgICAgaWYgKFtbbV93ZWJWaWV3IFVJRGVsZWdhdGVdIHJl
c3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmgJKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb250ZXh0TWVudURlc3Ryb3llZCgpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Vh
cmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogICAgIHZvaWQg
bG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c1NwZWFraW5nKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQko
cmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvRE9NUHJp
dmF0ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNTaGFyaW5nU2VydmljZVBpY2tlclNQSS5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3
ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5EcmFnKFdlYkNvcmU6OkRyYWdJdGVt
LCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtb3VzZURvd25Qb3Np
dGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRHJhZ2dlZFBvc2l0aW9uLCBXZWJD
b3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBT
dHJpbmcmLCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIHZvaWQgZGVjbGFyZUFuZFdy
aXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkVsZW1l
bnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkQ29uY2x1ZGVFZGl0RHJhZygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
c3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgZmluYWw7CiAgICAg
dm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgZmluYWw7Ci0gICAgdm9pZCBk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91
YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRj
aFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBX
YWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0
aW9uV2l0aGluUGFnZSgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRo
aW5QYWdlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBh
Z2UoKSBmaW5hbDsKQEAgLTE1OSw4ICsxNTksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
R2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkgZmluYWw7CiAKICAgICB2b2lkIGRpZERpc3BsYXlJ
bnNlY3VyZUNvbnRlbnQoKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOwotICAg
IHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRp
cmVQYWdlKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYpIGZpbmFsOworICAgIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBmaW5hbDsKIAogICAgIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JikgZmluYWw7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgZmluYWw7CkBAIC0xNzcsNyArMTc3LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogCi0gICAgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGZpbmFsOworICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwm
KSBmaW5hbDsKICAgICAKICAgICB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdl
YkNvcmU6OkNhY2hlZEZyYW1lKikgZmluYWw7CiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0
ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBmaW5hbDsKQEAgLTIwNiwz
MCArMjA2LDMwIEBAIHByaXZhdGU6CiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBj
cmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVk
RG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBmaW5hbCB7IH0KIAotICAg
IHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpIGZpbmFsOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6
OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3Ry
aW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLAogICAgICAgICBjb25z
dCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2lu
V2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRn
ZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBs
dWdJbkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLAorICAgIFJlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
Ym9vbCkgZmluYWw7CiAgICAgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBm
aW5hbDsKICAgICB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZp
bmFsOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3
ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKLSAgICBX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3
ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0
IGZpbmFsOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZh
QXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0
RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwKICAgICAg
ICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIGZpbmFsOwogICAgIAotICAgIFdlYkNvcmU6Ok9iamVj
dENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVu
dFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1p
bWVUeXBlKSBmaW5hbDsKICAgICBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0
IGZpbmFsOwogICAgIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgZmluYWw7CiAKICNpZiBQTEFURk9STShJT1Mp
Ci0gICAgYm9vbCBzaG91bGRMb2FkTWVkaWFFbGVtZW50VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgc2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBV
UkwmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNz
aWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTI0Miw3ICsyNDIs
NyBAQCBwcml2YXRlOgogCiAgICAgUmVmPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+
IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgZmluYWw7CiAKLSAgICBib29sIHNob3VsZFBhaW50
QnJva2VuSW1hZ2UoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBz
aG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAjaWYgVVNF
KFFVSUNLX0xPT0spCiAgICAgUmVmUHRyPFdlYkNvcmU6OlByZXZpZXdMb2FkZXJDbGllbnQ+IGNy
ZWF0ZVByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3Ry
aW5nJiB1dGkpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMxLDcgKzEwMzEsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxICiAgICAgV2ViVmlldyog
dmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCk7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChsb2FkZXItPnVybEZvckhpc3RvcnkoKSA9
PSBibGFua1VSTCgpKQorICAgIGlmIChsb2FkZXItPnVybEZvckhpc3RvcnkoKSA9PSBXVEY6OmJs
YW5rVVJMKCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
YXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNh
bk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFj
dGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lk
IChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5
bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOworICAgIGJvb2wgc2hv
d1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRl
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9u
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlk
ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0JKHJldmlz
aW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcs
OCBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIFdlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudDo6V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KCkKIHsK
QEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6Om9wZW5Q
YQogICAgIH0pOwogfQogCi1ib29sIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6c2hvd1Bh
eW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYs
IGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikKK2Jvb2wgV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0
IFZlY3RvcjxVUkw+JiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCShyZXZpc2lvbiAyMzY3NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDgs
MTMgKzQ4LDEzIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5KiBjcmVhdGVC
bG9iUmVnaXN0cnkoKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVn
eQotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOwotICAgIHN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMpIG92ZXJyaWRlOwotICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIG92ZXJyaWRlOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQog
I2lmIFBMQVRGT1JNKElPUykKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgZ2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlVSTCByZWFk
VVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkg
b3ZlcnJpZGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFz
dGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwog
ICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKQEAg
LTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBsb25nIGNoYW5nZUNvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyB1bmlxdWVOYW1lKCkgb3Zl
cnJpZGU7CiAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6VVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogCiAgICAgbG9uZyB3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgb3Zl
cnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCShyZXZpc2lvbiAyMzY3
NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOSw3ICsyMzksNyBAQCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9yCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CiAKLVdl
YkNvcmU6OlVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitV
UkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQogewogICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRp
dGxlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsdWdpbkluZm9Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCShyZXZpc2lvbiAyMzY3
NjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKICAgICBWZWN0b3I8
V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRp
b25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7
Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdl
YkNvcmU6OlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBWZWN0b3I8V2Vi
Q29yZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNv
bnN0IFVSTCYpIGZpbmFsOwogCiAgICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiB9OwpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1By
b3ZpZGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIFZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiBXZWJQbHVnaW5JbmYKICAgICByZXR1cm4gcGx1Z2luczsKIH0KIAotVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdp
bkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6VVJMJikKK1ZlY3RvcjxX
ZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVn
aW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYpCiB7CiAgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbklk
ZW50aWZpZXJzOwogICAgIHJldHVybiBwbHVnaW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklk
ZW50aWZpZXJzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlNlY3VyaXR5T3JpZ2luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCShyZXZpc2lvbiAyMzY3NjYp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9y
aWdpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRl
ZExpbmtTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAkocmV2aXNpb24gMjM2NzY2KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
V2ViVmlzaXRlZExpbmtTdG9yZSgpOwogCi0gICAgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6
OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJh
c2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hh
c2gsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwp
IG92ZXJyaWRlOwogICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSYsIFdlYkNv
cmU6OlNoYXJlZFN0cmluZ0hhc2gpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwb3B1bGF0ZVZpc2l0
ZWRMaW5rc0lmTmVlZGVkKFdlYkNvcmU6OlBhZ2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0JKHJldmlzaW9uIDIzNjc2NikK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVV
UkxSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTUhUTUwuaD4KQEAgLTY1LDYg
KzY0LDcgQEAKICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNpZiBQ
TEFURk9STShJT1MpCiAjaW1wb3J0ICJXZWJQREZWaWV3SU9TLmgiCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDIzNjc2NikKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI1MDgsNyArMjUwOCw3IEBAIC0gKHZvaWQpX2xvYWREYXRhOihOU0RhdGEgKilkYXRh
IE1JTUVUeXAKICAgICBpZiAoYmFzZVVSTCkKICAgICAgICAgYmFzZVVSTCA9IFtiYXNlVVJMIGFi
c29sdXRlVVJMXTsKICAgICBlbHNlIHsKLSAgICAgICAgYmFzZVVSTCA9IGJsYW5rVVJMKCk7Cisg
ICAgICAgIGJhc2VVUkwgPSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgICAgIHJlc3BvbnNlVVJMID0g
Y3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjU2LDE3ICsyNTYsMTcgQEAgLSAoaWQgPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0
aW9uQ29udHJvbAogICAgIE5TVVJMICp1cmwgPSBfaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtV
UkwoKTsKICAgICBOU1N0cmluZyAqYWJzb2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3Ry
aW5nXTsKICAgICBpZiAodXJsICYmIF9oaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSkgewotICAg
ICAgICBpZiAocHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgIm1haWx0byIpKSB7CisgICAg
ICAgIGlmIChXVEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJtYWlsdG8iKSkgewog
ICAgICAgICAgICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5rOwogICAgICAg
ICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlu
a107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAocHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmlu
ZywgInRlbCIpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJp
bmcsICJ0ZWwiKSkgewogICAgICAgICAgICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25UZWxM
aW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0
YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9j
b2xJc0luSFRUUEZhbWlseShhYnNvbHV0ZVVSTFN0cmluZykpIHsKKyAgICAgICAgaWYgKFdURjo6
cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0ZVVSTFN0cmluZykpIHsKICAgICAgICAgICAg
IF90eXBlID0gV2ViSW1tZWRpYXRlQWN0aW9uTGlua1ByZXZpZXc7CiAKICAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gbGlua1JhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpfaGl0VGVzdFJlc3VsdC5V
UkxFbGVtZW50KCkpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQ
REZWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUERGVmlldy5tbQkocmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZv
cm1FdmVudEZhY3RvcnlNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKIGV4dGVybiAiQyIgewogICAgIGJvb2wgQ0dDb250ZXh0R2V0
QWxsb3dzRm9udFNtb290aGluZyhDR0NvbnRleHRSZWYgY29udGV4dCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0J
KHJldmlzaW9uIDIzNjc2NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
U2NyaXB0RGVidWdnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAKICNpbXBv
cnQgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAko
cmV2aXNpb24gMjM2NzY2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNiBAQCBjbGFzcyBLZXli
b2FyZEV2ZW50OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIFRleHRJbmRp
Y2F0b3I7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1Y3Qg
RGljdGlvbmFyeVBvcHVwSW5mbzsKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjc4NCkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE4LTEwLTAyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJv
bSBXZWJDb3JlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMu
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFy
c2VyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y2hlY2tVUkxEaWZmZXJlbmNlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0
aXZlVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpvcmlnaW5hbERhdGFBc1N0cmluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp1c2VyVmlz
aWJsZVN0cmluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpsaXRlcmFsVVJMKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW06CisgICAgICAgIChURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJM
UmVxdWVzdC5tbToKKyAgICAgICAgKGxpdGVyYWxVUkwpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbToKKyAgICAgICAgKC1bTG9hZElu
dmFsaWRVUkxXZWJGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25hbExv
YWRXaXRoRXJyb3I6Zm9yRnJhbWU6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvU1NMS2V5R2VuZXJhdG9yLm1tOgorCiAyMDE4LTEwLTAyICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJLaXQyXSBGb3JtYXQgPiBCb2xkIGFu
ZCBGb3JtYXQgPiBJdGFsaWMgZG9uJ3QgdG9nZ2xlIGJldHdlZW4gYm9sZCBhbmQgaXRhbGljIHN0
eWxlCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVu
c2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAJKHJldmlzaW9uIDIzNjc2NSkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDEwICszOCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTkZBLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9ORkFUb0RGQS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkSW5m
by5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkxGaWx0
ZXJQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNw
cAkocmV2aXNpb24gMjM2NzY1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogI2lu
Y2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAJKHJldmlzaW9uIDIzNjc2NSkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwx
MSArMjUsOSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRp
bGl0aWVzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2Vy
Lmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtNzMsOCArNzEsNyBAQCBURVNU
X0YoVVJMVGVzdCwgVVJMQ29uc3RydWN0b3JDb25zdENoYXIpCiAKIHN0YXRpYyBVUkwgY3JlYXRl
VVJMKGNvbnN0IGNoYXIqIHVybEFzU3RyaW5nKQogewotICAgIFVSTFBhcnNlciBwYXJzZXIodXJs
QXNTdHJpbmcpOwotICAgIHJldHVybiBwYXJzZXIucmVzdWx0KCk7CisgICAgcmV0dXJuIFVSTCh7
IH0sIHVybEFzU3RyaW5nKTsKIH07CiAKIFRFU1RfRihVUkxUZXN0LCBVUkxQcm90b2NvbEhvc3RB
bmRQb3J0KQpAQCAtMzE3LDIwICszMTQsMjAgQEAgVEVTVF9GKFVSTFRlc3QsIEVxdWFsSWdub3Jp
bmdRdWVyeUFuZEZyYQogCiBURVNUX0YoVVJMVGVzdCwgUHJvdG9jb2xJc0luSFRUUEZhbWlseSkK
IHsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSh7fSkpOwotICAgIEVY
UEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCIiKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImEiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29s
SXNJbkhUVFBGYW1pbHkoImFiIikpOwotICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCJhYmMiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHko
ImFiY2QiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2Rl
IikpOwotICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNkZWYiKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlZmciKSk7Ci0g
ICAgRVhQRUNUX1RSVUUocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cDoiKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHAiKSk7Ci0gICAgRVhQRUNUX1RS
VUUocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cHM6IikpOwotICAgIEVYUEVDVF9GQUxTRShw
cm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwcyIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCJodHRwczovLyFAIyQlXiYqKCkiKSk7CisgICAgRVhQRUNUX0ZBTFNF
KFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSh7IH0pKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RG
Ojpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCIiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJv
dG9jb2xJc0luSFRUUEZhbWlseSgiYSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCJhYiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElz
SW5IVFRQRmFtaWx5KCJhYmMiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgiYWJjZCIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5I
VFRQRmFtaWx5KCJhYmNkZSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5I
VFRQRmFtaWx5KCJhYmNkZWYiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgiYWJjZGVmZyIpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoImh0dHA6IikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoImh0dHAiKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpwcm90b2NvbElzSW5I
VFRQRmFtaWx5KCJodHRwczoiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgiaHR0cHMiKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpwcm90b2NvbElzSW5I
VFRQRmFtaWx5KCJodHRwczovLyFAIyQlXiYqKCkiKSk7CiB9CiAKIFRFU1RfRihVUkxUZXN0LCBI
b3N0SXNJUEFkZHJlc3MpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VVJMUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVVJMUGFyc2VyLmNwcAkocmV2aXNpb24gMjM2NzY1KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRp
ZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCBj
aGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJh
Z21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnN0cmluZywgdXJsLnN0cmluZygpKSk7CiAKLSAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6
OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OlVS
TFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwogCiAgICAgaWYgKHRlc3RU
YWJzID09IFRlc3RUYWJzOjpObykKICAgICAgICAgcmV0dXJuOwpAQCAtMTI5LDcgKzEyOSw3IEBA
IHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW4KICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMuc3RyaW5nLCB1cmwuc3RyaW5nKCkpKTsKICAgICAKLSAgICBFWFBF
Q1RfVFJVRShVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKKyAgICBF
WFBFQ1RfVFJVRShXVEY6OlVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkp
OwogICAgIAogICAgIGlmICh0ZXN0VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAgICAgIHJldHVy
bjsKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2VzKGNv
bnN0IFN0CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVu
dElkZW50aWZpZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnN0cmluZywgdXJs
LnN0cmluZygpKSk7CiAgICAgCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZh
bHVlc0NvbnNpc3RlbnQodXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6Omlu
dGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKICAgICAKICAgICBpZiAodGVzdFRhYnMgPT0g
VGVzdFRhYnM6Ok5vKQogICAgICAgICByZXR1cm47CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGlj
IHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKAogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzTmV3LmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c05ldy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogICAgIAotICAgIEVYUEVD
VF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOworICAgIEVY
UEVDVF9UUlVFKFdURjo6VVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7
CiAgICAgCiAgICAgaWYgKHRlc3RUYWJzID09IFRlc3RUYWJzOjpObykKICAgICAgICAgcmV0dXJu
OwpAQCAtMjEzLDggKzIxMyw3IEBAIHN0YXRpYyB2b2lkIHNob3VsZEZhaWwoY29uc3QgU3RyaW5n
JiB1cmwKIAogc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBU
ZXN0VGFicyB0ZXN0VGFicyA9IFRlc3RUYWJzOjpZZXMpCiB7Ci0gICAgVVJMUGFyc2VyIHBhcnNl
cih1cmxTdHJpbmcsIHsgfSwgZW5jb2RpbmcpOwotICAgIGF1dG8gdXJsID0gcGFyc2VyLnJlc3Vs
dCgpOworICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CkBAIC0yMzgsOSArMjM3LDcgQEAgc3RhdGlj
IHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdAogCiBzdGF0aWMgdm9pZCBjaGVja1VS
TChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBj
b25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywg
VGVzdFRhYnMgdGVzdFRhYnMgPSBUZXN0VGFiczo6WWVzKQogewotICAgIFVSTFBhcnNlciBiYXNl
UGFyc2VyKGJhc2VVUkxTdHJpbmcsIHsgfSwgZW5jb2RpbmcpOwotICAgIFVSTFBhcnNlciBwYXJz
ZXIodXJsU3RyaW5nLCBiYXNlUGFyc2VyLnJlc3VsdCgpLCBlbmNvZGluZyk7Ci0gICAgYXV0byB1
cmwgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgYXV0byB1cmwgPSBVUkwoVVJMKHsgfSwgYmFzZVVS
TFN0cmluZyksIHVybFN0cmluZywgZW5jb2RpbmcpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVz
ZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJs
LnBhc3MoKSkpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAJKHJldmlzaW9uIDIz
Njc2NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5ICsyNCw5IEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRy
YXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1VSTEV4dHJhcy5tbQkocmV2aXNpb24gMjM2NzY1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1VSTEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUs
OCArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKQEAgLTUwLDE3ICs1MCwxNyBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogZGF0YUFzU3RyaW5nKE5TRGF0YSAqCiAKIHN0YXRpYyBjb25zdCBjaGFyKiBvcmlnaW5h
bERhdGFBc1N0cmluZyhOU1VSTCAqVVJMKQogewotICAgIHJldHVybiBkYXRhQXNTdHJpbmcoV2Vi
Q29yZTo6b3JpZ2luYWxVUkxEYXRhKFVSTCkpOworICAgIHJldHVybiBkYXRhQXNTdHJpbmcoV1RG
OjpvcmlnaW5hbFVSTERhdGEoVVJMKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiB1c2VyVmlz
aWJsZVN0cmluZyhOU1VSTCAqVVJMKQogewotICAgIHJldHVybiBbV2ViQ29yZTo6dXNlclZpc2li
bGVTdHJpbmcoVVJMKSBVVEY4U3RyaW5nXTsKKyAgICByZXR1cm4gW1dURjo6dXNlclZpc2libGVT
dHJpbmcoVVJMKSBVVEY4U3RyaW5nXTsKIH0KIAogc3RhdGljIE5TVVJMICpsaXRlcmFsVVJMKGNv
bnN0IGNoYXIqIGxpdGVyYWwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlVSTFdpdGhEYXRhKGxp
dGVyYWxBc0RhdGEobGl0ZXJhbCksIG5pbCk7CisgICAgcmV0dXJuIFdURjo6VVJMV2l0aERhdGEo
bGl0ZXJhbEFzRGF0YShsaXRlcmFsKSwgbmlsKTsKIH0KIAogVEVTVChXZWJDb3JlLCBVUkxFeHRy
YXMpCkBAIC0xMjcsOCArMTI3LDggQEAgVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfRGl2aXNpb25T
aWduKQogICAgIC8vIFNlbGVjdGVkIHRoZSBkaXZpc2lvbiBzaWduIGFzIGFuIGV4YW1wbGUgb2Yg
YSBub24tQVNDSUkgY2hhcmFjdGVyIHRoYXQgaXMgYWxsb3dlZCBpbiBob3N0IG5hbWVzLCBzaW5j
ZSBpdCdzIGEgbG9va2FsaWtlIGNoYXJhY3Rlci4KIAogICAgIC8vIENvZGUgcGF0aCBzaW1pbGFy
IHRvIHRoZSBvbmUgdXNlZCB3aGVuIHR5cGluZyBpbiBhIFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly9zaXRlLnhuLS1jb21vdGhlcnNpdGUta2piLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3Ry
aW5nKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMz
XHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0
ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUu
b3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUueG4tLWNvbW90aGVy
c2l0ZS1ramIub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV1RGOjpVUkxXaXRoVXNlclR5cGVk
U3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgbmlsKSkpOwor
ICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwg
dXNlclZpc2libGVTdHJpbmcoV1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3Np
dGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgbmlsKSkpOwogCiAgICAgLy8gQ29kZSBwYXRo
cyBzaW1pbGFyIHRvIHRoZSBvbmVzIHVzZWQgZm9yIFVSTHMgZm91bmQgaW4gd2VicGFnZXMgb3Ig
SFRUUCByZXNwb25zZXMuCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEMzXHhC
N290aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8v
c2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciKSkpOwpAQCAtMTM3LDE3ICsxMzcsMTcgQEAg
VEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfRGl2aXNpb25TaWduKQogICAgIEVYUEVDVF9TVFJFUSgi
aHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmco
bGl0ZXJhbFVSTCgiaHR0cDovL3NpdGUuY29tJUMzJUI3b3RoZXJzaXRlLm9yZyIpKSk7CiAKICAg
ICAvLyBTZXBhcmF0ZSBmdW5jdGlvbnMgdGhhdCBkZWFsIHdpdGgganVzdCBhIGhvc3QgbmFtZSBv
biBpdHMgb3duLgotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS54bi0tY29tb3RoZXJzaXRlLWtqYi5v
cmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRl
Lm9yZyIpIFVURjhTdHJpbmddKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tXHhDM1x4Qjdv
dGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEMzXHhC
N290aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLnhu
LS1jb21vdGhlcnNpdGUta2piLm9yZyIsIFtXVEY6OmVuY29kZUhvc3ROYW1lKEAic2l0ZS5jb21c
eEMzXHhCN290aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJz
aXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIFtXVEY6OmRlY29kZUhvc3ROYW1lKEAic2l0
ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CiB9CiAKLVRFU1QoV2Vi
Q29yZSwgVVJMRXh0cmFzX1NvbGlkdXMpCitURVNUKFdURiwgVVJMRXh0cmFzX1NvbGlkdXMpCiB7
CiAgICAgLy8gU2VsZWN0ZWQgZnVsbCB3aWR0aCBzb2xpZHVzLCB3aGljaCBsb29rcyBsaWtlIHRo
ZSBzb2xpZHVzLCB3aGljaCBpcyB0aGUgY2hhcmFjdGVyIHRoYXQgaW5kaWNhdGVzIHRoZSBlbmQg
b2YgdGhlIGhvc3QgbmFtZS4KIAogICAgIC8vIENvZGUgcGF0aCBzaW1pbGFyIHRvIHRoZSBvbmUg
dXNlZCB3aGVuIHR5cGluZyBpbiBhIFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRl
LmNvbS9vdGhlcnNpdGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV2ViQ29yZTo6VVJMV2l0
aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5v
cmciLCBuaWwpKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20vb3RoZXJzaXRl
Lm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmco
QCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAg
IEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tL290aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERh
dGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21c
eEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0
cDovL3NpdGUuY29tL290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUu
b3JnIiwgbmlsKSkpOwogCiAgICAgLy8gQ29kZSBwYXRocyBzaW1pbGFyIHRvIHRoZSBvbmVzIHVz
ZWQgZm9yIFVSTHMgZm91bmQgaW4gd2VicGFnZXMgb3IgSFRUUCByZXNwb25zZXMuCiAgICAgRVhQ
RUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIiwgb3Jp
Z2luYWxEYXRhQXNTdHJpbmcobGl0ZXJhbFVSTCgiaHR0cDovL3NpdGUuY29tXHhFRlx4QkNceDhG
b3RoZXJzaXRlLm9yZyIpKSk7CkBAIC0xNTYsOCArMTU2LDggQEAgVEVTVChXZWJDb3JlLCBVUkxF
eHRyYXNfU29saWR1cykKICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSVFRiVCQyU4
Rm90aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0
ZS5jb20lRUYlQkMlOEZvdGhlcnNpdGUub3JnIikpKTsKIAogICAgIC8vIFNlcGFyYXRlIGZ1bmN0
aW9ucyB0aGF0IGRlYWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1lIG9uIGl0cyBvd24uCi0gICAgRVhQ
RUNUX1NUUkVRKCJzaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmVuY29kZUhvc3RO
YW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwot
ICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXZWJDb3JlOjpkZWNv
ZGVIb3N0TmFtZShAInNpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIpIFVURjhTdHJp
bmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tL290aGVyc2l0ZS5vcmciLCBbV1RGOjpl
bmNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIpIFVURjhT
dHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tL290aGVyc2l0ZS5vcmciLCBbV1RG
OjpkZWNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIpIFVU
RjhTdHJpbmddKTsKIH0KIAogVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfU3BhY2UpCkBAIC0xNjUs
OCArMTY1LDggQEAgVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfU3BhY2UpCiAgICAgLy8gU2VsZWN0
ZWQgaWRlb2dyYXBoaWMgc3BhY2UsIHdoaWNoIGxvb2tzIGxpa2UgdGhlIEFTQ0lJIHNwYWNlLCB3
aGljaCBpcyBub3QgYWxsb3dlZCB1bmVzY2FwZWQuCiAKICAgICAvLyBDb2RlIHBhdGggc2ltaWxh
ciB0byB0aGUgb25lIHVzZWQgd2hlbiB0eXBpbmcgaW4gYSBVUkwuCi0gICAgRVhQRUNUX1NUUkVR
KCJodHRwOi8vc2l0ZS5jb20lMjBvdGhlcnNpdGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmco
V2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgw
XHg4MG90aGVyc2l0ZS5vcmciLCBuaWwpKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0
ZS5jb20lMjBvdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmcoV2ViQ29yZTo6VVJMV2l0
aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5v
cmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20lMjBvdGhlcnNp
dGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5n
KEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCB1c2VyVmlz
aWJsZVN0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21c
eEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgbmlsKSkpOwogCiAgICAgLy8gQ29kZSBwYXRocyBz
aW1pbGFyIHRvIHRoZSBvbmVzIHVzZWQgZm9yIFVSTHMgZm91bmQgaW4gd2VicGFnZXMgb3IgSFRU
UCByZXNwb25zZXMuCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEUzXHg4MFx4
ODBvdGhlcnNpdGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcobGl0ZXJhbFVSTCgiaHR0cDov
L3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIpKSk7CkBAIC0xNzUsMzEgKzE3NSwz
MSBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKICAgICBFWFBFQ1RfU1RSRVEoImh0
dHA6Ly9zaXRlLmNvbSVFMyU4MCU4MG90aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhs
aXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb20lRTMlODAlODBvdGhlcnNpdGUub3JnIikpKTsKIAog
ICAgIC8vIFNlcGFyYXRlIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1l
IG9uIGl0cyBvd24uCi0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbSBvdGhlcnNpdGUub3JnIiwg
W1dlYkNvcmU6OmVuY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUu
b3JnIikgVVRGOFN0cmluZ10pOwotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb21ceEUzXHg4MFx4
ODBvdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEUz
XHg4MFx4ODBvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJFUSgi
c2l0ZS5jb20gb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmVuY29kZUhvc3ROYW1lKEAic2l0ZS5jb21c
eEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJF
USgic2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgW1dURjo6ZGVjb2RlSG9zdE5h
bWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CiB9
CiAKIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX0ZpbGUpCiB7Ci0gICAgRVhQRUNUX1NUUkVRKCJm
aWxlOi8vLyVFMiU5OCU4MyIsIFtbV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImZp
bGU6Ly8v4piDIiwgbmlsKSBhYnNvbHV0ZVN0cmluZ10gVVRGOFN0cmluZ10pOworICAgIEVYUEVD
VF9TVFJFUSgiZmlsZTovLy8lRTIlOTglODMiLCBbW1dURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmlu
ZyhAImZpbGU6Ly8v4piDIiwgbmlsKSBhYnNvbHV0ZVN0cmluZ10gVVRGOFN0cmluZ10pOwogfQog
CiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19QYXJzaW5nRXJyb3IpCiB7CiAgICAgLy8gRXhwZWN0
IElETiBmYWlsdXJlLgotICAgIE5TVVJMICp1cmwgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVk
U3RyaW5nKEAiaHR0cDovL++jvy5jb20iLCBuaWwpOworICAgIE5TVVJMICp1cmwgPSBXVEY6OlVS
TFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v76O/LmNvbSIsIG5pbCk7CiAgICAgRVhQRUNU
X1RSVUUodXJsID09IG5pbCk7CiAKLSAgICBOU1N0cmluZyAqZW5jb2RlZEhvc3ROYW1lID0gV2Vi
Q29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJodHRwOi8v76O/LmNvbSIpOworICAgIE5TU3RyaW5nICpl
bmNvZGVkSG9zdE5hbWUgPSBXVEY6OmVuY29kZUhvc3ROYW1lKEAiaHR0cDovL++jvy5jb20iKTsK
ICAgICBFWFBFQ1RfVFJVRShlbmNvZGVkSG9zdE5hbWUgPT0gbmlsKTsKIH0KIAogVEVTVChXZWJD
b3JlLCBVUkxFeHRyYXNfTmlsKQogewotICAgIE5TVVJMICp1cmwxID0gV2ViQ29yZTo6VVJMV2l0
aFVzZXJUeXBlZFN0cmluZyhuaWwsIG5pbCk7CisgICAgTlNVUkwgKnVybDEgPSBXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmcobmlsLCBuaWwpOwogICAgIEVYUEVDVF9UUlVFKHVybDEgPT0gbmls
KTsKIAotICAgIE5TVVJMICp1cmwyID0gV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZ0Rl
cHJlY2F0ZWQobmlsLCBuaWwpOworICAgIE5TVVJMICp1cmwyID0gV1RGOjpVUkxXaXRoVXNlclR5
cGVkU3RyaW5nRGVwcmVjYXRlZChuaWwsIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUodXJsMiA9PSBu
aWwpOwogfQogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0JKHJldmlzaW9u
IDIzNjc2NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDkgQEAKIAog
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKLSNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29h
L05TVVJMRXh0cmFzLmg+CiAKIHN0YXRpYyBib29sIGlzRG9uZTsKIHN0YXRpYyBpbnQgcHJvdmlz
aW9uYWxMb2FkQ291bnQ7CkBAIC0xMTAsNyArMTEwLDcgQEAgVEVTVChXS1dlYlZpZXcsIExvYWRB
bHRlcm5hdGVIVE1MU3RyaW5nRgogICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgICAgIGNoYXIgbGl0ZXJhbFtdID0gImh0dHBzOi8v
d3d3LmV4YW1wbGUuY29tPD4vIjsKLSAgICAgICAgTlNVUkwqIHRhcmdldFVSTCA9IFdlYkNvcmU6
OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4o
bGl0ZXJhbCldLCBuaWwpOworICAgICAgICBOU1VSTCogdGFyZ2V0VVJMID0gV1RGOjpVUkxXaXRo
RGF0YShbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bGl0ZXJhbCBsZW5ndGg6c3RybGVuKGxpdGVyYWwp
XSwgbmlsKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDp0YXJnZXRVUkxdXTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0YXJnZXRVUkxdXTsKIApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52
YWxpZFVSTFJlcXVlc3QubW0JKHJldmlzaW9uIDIzNjc2NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMCArMjgsMTAgQEAKICNpZiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMu
aD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaD4KIAogc3RhdGljIGJvb2wgZGlkRmluaXNoVGVzdDsKIHN0YXRp
YyBib29sIGRpZEZhaWxQcm92aXNpb25hbExvYWQ7CkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBj
b25zdCBjaGFyIGxpdGVyYWxbXSA9ICJodHRwczovL3cKIAogc3RhdGljIE5TVVJMICpsaXRlcmFs
VVJMKGNvbnN0IGNoYXIqIGxpdGVyYWwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlVSTFdpdGhE
YXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCld
LCBuaWwpOworICAgIHJldHVybiBXVEY6OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRl
czpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBuaWwpOwogfQogCiBAaW50ZXJmYWNl
IExvYWRJbnZhbGlkVVJMTmF2aWdhdGlvbkFjdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2
aWdhdGlvbkRlbGVnYXRlPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9h
ZEludmFsaWRVUkxSZXF1ZXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQkocmV2aXNpb24gMjM2NzY1KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAog
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5T
VVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIHN0YXRpYyBib29sIGRpZEZpbmlzaFRl
c3Q7CiBzdGF0aWMgYm9vbCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkOwpAQCAtNTEsNyArNTEsNyBA
QCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmFpCiAgICAgRVhQRUNUX0VR
KGVycm9yLmNvZGUsIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCk7CiAKICAgICBzdGF0aWMgY2hh
ciBsaXRlcmFsW10gPSAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20kLyI7Ci0gICAgTlNVUkwgKmZh
aWxlZFVSTCA9IFdlYkNvcmU6OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRl
cmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBuaWwpOworICAgIE5TVVJMICpmYWlsZWRVUkwg
PSBXVEY6OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpz
dHJsZW4obGl0ZXJhbCldLCBuaWwpOwogICAgIEVYUEVDVF9UUlVFKFtlcnJvci51c2VySW5mb1tA
Ik5TRXJyb3JGYWlsaW5nVVJMS2V5Il0gaXNFcXVhbDpmYWlsZWRVUkxdKTsKIAogICAgIGRpZEZh
aWxQcm92aXNpb25hbExvYWQgPSB0cnVlOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvU1NMS2V5R2VuZXJhdG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL1NTTEtleUdlbmVyYXRvci5tbQkocmV2aXNpb24gMjM2NzY1KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5R2VuZXJhdG9yLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw5ICsyOSw5IEBACiAjaW1wb3J0IDxTZWN1cml0eS9TZWNBc24xVGVtcGxhdGVz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU1NMS2V5R2VuZXJhdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvQmFzZTY0Lmg+CiAKQEAgLTY5LDcgKzY5LDcgQEAgY29uc3QgU2VjQXNuMVRlbXBsYXRl
IHNpZ25lZFB1YmxpY0tleUFuZAogICAgIHsgMCwgMCwgMCwgMCB9CiB9OwogCi1jb25zdCBXZWJD
b3JlOjpVUkwgdXJsID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCAiaHR0cDovL3d3dy53
ZWJraXQub3JnLyIpOworY29uc3QgVVJMIHVybCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cud2Vi
a2l0Lm9yZy8iKTsKIAogY2xhc3MgU1NMS2V5R2VuZXJhdG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKIHB1YmxpYzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351481</attachid>
            <date>2018-10-02 23:02:41 -0700</date>
            <delta_ts>2018-10-02 23:39:52 -0700</delta_ts>
            <desc>Add Linux support</desc>
            <filename>bug-190234-20181003150239.patch</filename>
            <type>text/plain</type>
            <size>1270475</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2Y2I1MjQ5NmNlZGVkZGJhYjM0NDA0
Mjc5MzdlMWM4NmQ3YTg4ZjQuLjJkMzk5NzYyOWExNmNjZTkyMzNhNWVjYjVhMTUwNjgyOGYwMDIw
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUg
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICogd3Rm
L1VSTC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwLgor
ICAgICAgICAoV1RGOjpVUkw6OnByb3RvY29sSXMpOgorICAgICAgICAqIHd0Zi9VUkwuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oLgorICAgICAgICAqIHd0Zi9V
UkxIYXNoLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmgu
CisgICAgICAgIChXVEY6OlVSTEhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpVUkxIYXNoOjpl
cXVhbCk6CisgICAgICAgICogd3RmL1VSTFBhcnNlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwLgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6
OmlzSW5Vc2VySW5mb0VuY29kZVNldCk6CisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6cGFyc2VB
dXRob3JpdHkpOgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oLgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6
OlVSTFBhcnNlcik6CisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6cmVzdWx0KToKKyAgICAgICAg
KiB3dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwLgorICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4dHJhcy5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuaC4K
KyAgICAgICAgKiB3dGYvY2YvVVJMQ0YuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvVVJMQ0YuY3BwLgorICAgICAgICAqIHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2VDb2xsZWN0aW9uLmguCisgICAgICAgICogd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1t
LgorICAgICAgICAoV1RGOjppc0FybWVuaWFuTG9va2FsaWtlQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdURjo6aXNBcm1lbmlhblNjcmlwdENoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OmlzQVNDSUlE
aWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6aXNMb29rYWxpa2VDaGFy
YWN0ZXIpOgorICAgICAgICAoV1RGOjp3aGl0ZUxpc3RJRE5TY3JpcHQpOgorICAgICAgICAoV1RG
OjpyZWFkSUROU2NyaXB0V2hpdGVMaXN0RmlsZSk6CisgICAgICAgIChXVEY6OmFsbENoYXJhY3Rl
cnNJbklETlNjcmlwdFdoaXRlTGlzdCk6CisgICAgICAgIChXVEY6OmlzU2Vjb25kTGV2ZWxEb21h
aW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMpOgorICAgICAgICAoV1RGOjppc1J1c3NpYW5Eb21haW5O
YW1lQ2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6YWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1
bGVzKToKKyAgICAgICAgKFdURjo6bWFwSG9zdE5hbWVXaXRoUmFuZ2UpOgorICAgICAgICAoV1RG
Ojpob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2UpOgorICAgICAgICAoV1RGOjpob3N0TmFt
ZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UpOgorICAgICAgICAoV1RGOjpkZWNvZGVIb3N0TmFtZVdp
dGhSYW5nZSk6CisgICAgICAgIChXVEY6OmVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKToKKyAgICAg
ICAgKFdURjo6ZGVjb2RlSG9zdE5hbWUpOgorICAgICAgICAoV1RGOjplbmNvZGVIb3N0TmFtZSk6
CisgICAgICAgIChXVEY6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcpOgorICAgICAgICAo
V1RGOjpjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyk6CisgICAgICAgIChXVEY6OmNvbGxl
Y3RSYW5nZXNUaGF0TmVlZERlY29kaW5nKToKKyAgICAgICAgKFdURjo6YXBwbHlIb3N0TmFtZUZ1
bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcpOgorICAgICAgICAoV1RGOjphcHBseUhvc3ROYW1lRnVu
Y3Rpb25Ub1VSTFN0cmluZyk6CisgICAgICAgIChXVEY6Om1hcEhvc3ROYW1lcyk6CisgICAgICAg
IChXVEY6OnN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKToKKyAgICAgICAgKFdURjo6VVJMQnlU
cnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KToKKyAgICAgICAgKFdURjo6VVJM
QnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKToKKyAgICAgICAgKFdURjo6VVJMV2l0aERhdGEp
OgorICAgICAgICAoV1RGOjpkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyk6CisgICAgICAgIChXVEY6
OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcpOgorICAgICAgICAoV1RGOjpVUkxXaXRoVXNlclR5cGVk
U3RyaW5nRGVwcmVjYXRlZCk6CisgICAgICAgIChXVEY6Omhhc1F1ZXN0aW9uTWFya09ubHlRdWVy
eVN0cmluZyk6CisgICAgICAgIChXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKToKKyAgICAg
ICAgKFdURjo6VVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIpOgor
ICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nVXNlckluZm8pOgorICAgICAgICAoV1RGOjpvcmln
aW5hbFVSTERhdGEpOgorICAgICAgICAoV1RGOjpjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2Fm
ZUNoYXJhY3RlcnMpOgorICAgICAgICAoV1RGOjp1c2VyVmlzaWJsZVN0cmluZyk6CisgICAgICAg
IChXVEY6OmlzVXNlclZpc2libGVVUkwpOgorICAgICAgICAoV1RGOjpyYW5nZU9mVVJMU2NoZW1l
KToKKyAgICAgICAgKFdURjo6bG9va3NMaWtlQWJzb2x1dGVVUkwpOgorICAgICAgICAqIHd0Zi9j
b2NvYS9VUkxDb2NvYS5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9VUkxNYWMubW0uCisgICAgICAgIChXVEY6OlVSTDo6VVJMKToKKyAgICAgICAgKFdURjo6VVJM
OjpjcmVhdGVDRlVSTCBjb25zdCk6CisgICAgICAgICogd3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAu
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5p
cXVlUHRyU291cC5oLgorICAgICAgICAqIHd0Zi9nbGliL1VSTFNvdXAuY3BwOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9VUkxTb3VwLmNwcC4KKwogMjAxOC0xMC0w
MSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBTd2l0
Y2hpbmcgdG8gZGlzY3JldGUgR1BVIHNob3VsZCBiZSBkb25lIGluIHRoZSBVSSBwcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYzlkMzBhNDhjOWNjNjc3MzdmNmNmZWNlZGI0ZmFhZjBhMWExODIxMC4uYTFk
N2U5YjY1NWY3OGUwM2M4MjUzODdlYWIzYzcxNWY5MjI5MTVkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUzNyBAQAorMjAxOC0xMC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgVVJMIGlzIGEgbG93
LWxldmVsIGNvbmNlcHQgdGhhdCBkb2VzIG5vdCBkZXBlbmQgb24gb3RoZXIgY2xhc3NlcyBpbiBX
ZWJDb3JlLgorICAgICAgICBXZSBhcmUgc3RhcnRpbmcgdG8gdXNlIFVSTHMgaW4gSmF2YVNjcmlw
dENvcmUgZm9yIG1vZHVsZXMuCisgICAgICAgIEkgbmVlZCBVUkwgYW5kIFVSTFBhcnNlciBpbiBh
IHBsYWNlIHdpdGggZmV3ZXIgZGVwZW5kZW5jaWVzIGZvciByZGFyOi8vcHJvYmxlbS80NDExOTY5
NgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmg6CisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHA6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL25hdmlnYXRv
cmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oOgorICAgICAgICAqIE1vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL3Bs
dWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Lmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZUlmSmF2YVNjcmlwdFVSTCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50
YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5h
bWUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9i
amVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVh
Y3Rpb25zLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGguY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25J
bmRpcmVjdEluaGVyaXRhbmNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9u
UnVsZXNGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5n
TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6YXBwbHlCbG9ja2Vk
U3RhdHVzVG9SZXF1ZXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKiBj
c3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAg
ICAgICAgKiBjc3MvU3R5bGVTaGVldC5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVu
dHMuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHRIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6SGFz
aFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVl
KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOgorICAgICAgICAqIGRv
bS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRE
YXRhRnJvbUl0ZW1MaXN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnNldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cHJvY2Vzc0h0dHBFcXVpdik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29tcGxldGVV
UkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZVRlbXBsYXRlRG9j
dW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnVybEZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc0phdmFTY3JpcHRVUkxBdHRyaWJ1dGUgY29u
c3QpOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VyQ29udGV4dEZvckVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmJhc2VVUkkgY29uc3QpOgorICAgICAgICAqIGRv
bS9Ob2RlLmg6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQu
aDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnBhc3RlYm9hcmRXcml0ZXJVUkwpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVzZXJWaXNp
YmxlU3RyaW5nKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZSk6
CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpwbGFpblRleHRGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21NYXJrdXApOgorICAgICAgICAqIGVk
aXRpbmcvbWFya3VwLmg6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwOgor
ICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmg6CisgICAgICAgICogZmlsZWFwaS9C
bG9iLmg6CisgICAgICAgICogZmlsZWFwaS9CbG9iVVJMLmNwcDoKKyAgICAgICAgKiBmaWxlYXBp
L0Jsb2JVUkwuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuaDoKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmg6CisgICAgICAgICogaGlz
dG9yeS9IaXN0b3J5SXRlbS5oOgorICAgICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVVSTDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZyYW1lRWxlbWVudEJhc2U6OmlzVVJMQWxsb3dlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6b3BlblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8
VVJMPjo6dG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpVUkw+
Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFsbG93
ZWRUb0xvYWRGcmFtZVVSTCk6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5oOgorICAgICAg
ICAqIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oOgorICAgICAgICAqIGh0bWwvUHVibGlj
VVJMTWFuYWdlci5jcHA6CisgICAgICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmg6CisgICAg
ICAgICogaHRtbC9VUkxJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvVVJMUmVnaXN0cnku
aDoKKyAgICAgICAgKiBodG1sL1VSTFNlYXJjaFBhcmFtcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpVUkxTZWFyY2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpV
UkxTZWFyY2hQYXJhbXM6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFNl
YXJjaFBhcmFtczo6dXBkYXRlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFt
czo6dXBkYXRlRnJvbUFzc29jaWF0ZWRVUkwpOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNv
cmU6OlVSTFV0aWxzPFQ+OjpzZXRQb3J0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6
CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbik6CisgICAgICAgIChXZWJD
b3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpY
U1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmZpbHRlckVtYmVkVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6Zmls
dGVyRm9ybVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlcklucHV0
VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyQnV0dG9uVG9rZW4p
OgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZXJhc2VEYW5nZXJvdXNBdHRyaWJ1dGVz
SWZJbmplY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjppc0xpa2VseVNhZmVS
ZXNvdXJjZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRIb3N0OjpvcGVuSW5OZXdUYWIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9Db29raWVKYXIuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmg6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGUuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkpOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNlcnZlclJl
ZGlyZWN0U291cmNlRm9ySGlzdG9yeSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmg6CisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmg6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpz
dWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJO
YXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvdyk6CisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpj
dXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlz
dG9yeUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9Mb2FkVGltaW5nLmg6CisgICAgICAgICogbG9hZGVy
L0xvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JtRm9y
TWl4ZWRDb250ZW50IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tl
ci5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNob3VsZFNjaGVkdWxlTmF2aWdhdGlvbiBj
b25zdCk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvUGluZ0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRJbmZv
Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZVRpbWluZy5oOgorICAg
ICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJm
cmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2Fk
ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZURhdGEuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNl
ci5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmg6CisgICAg
ICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU3R5
bGVTaGVldENsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgor
ICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvbWFj
L0xvYWRlck5TVVJMRXh0cmFzLm1tOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUYuY3BwOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAg
ICogcGFnZS9DbGllbnRPcmlnaW4uaDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQgY29u
c3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVdpbmRvdzo6aXNJbnNlY3VyZVNjcmlwdEFjY2Vzcyk6CisgICAgICAgICogcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFn
KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9FdmVu
dFNvdXJjZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5oOgorICAgICAgICAqIHBhZ2UvSGlzdG9yeS5oOgorICAgICAgICAqIHBhZ2UvTG9jYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnVybCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhdGlvbjo6cmVsb2FkKToKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmg6
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5o
OgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuaDoKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1h
bmNlUmVzb3VyY2VUaW1pbmcuY3BwOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
U2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgor
ICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmg6CisgICAgICAgICogcGFnZS9TZWN1
cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6c2hvdWxk
SW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9TZXR0aW5nc0Jhc2UuaDoKKyAgICAgICAgKiBwYWdl
L1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoKKyAgICAgICAg
KiBwYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5jcHA6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaDoK
KyAgICAgICAgKiBwYWdlL1VzZXJTY3JpcHQuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJTdHlsZVNo
ZWV0Lmg6CisgICAgICAgICogcGFnZS9WaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2U6OnBvcnRNYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1l
bnVJdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vQ29va2llLmg6CisgICAgICAgICogcGxhdGZv
cm0vQ29va2llc1N0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3Ry
ZWFtLmg6CisgICAgICAgICogcGxhdGZvcm0vTGlua0ljb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNhbkV4cG9z
ZVVSTFRvRE9NV2hlblBhc3RlYm9hcmRDb250YWluc0ZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFVSTERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFVSTCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJ
bmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9yLmg6CisgICAgICAgICog
cGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVn
aXN0cnk6OmlzQnVpbHRpblNjaGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5oOgorICAgICAgICAqIHBsYXRmb3JtL1NvdXJjZXNT
b3VwLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Vc2VyQWdlbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1
aXJrcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NTTEtleUdl
bmVyYXRvckdMaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Vi
S2l0TWVkaWFTcmNTZXRVcmkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09W
VFRDdWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHREaXJlY3QyRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0Rh
dGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgICogcGxh
dGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzZXRNZXRhZGF0YVVSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QdWJs
aWNTdWZmaXhNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVIb3N0TmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXJtZW5pYW5Mb29rYWxp
a2VDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBcm1lbmlhblNjcmlw
dENoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0FTQ0lJRGlnaXRPclZh
bGlkSG9zdENoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0xvb2thbGlr
ZUNoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp3aGl0ZUxpc3RJRE5TY3Jp
cHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmVhZElETlNjcmlwdFdoaXRlTGlzdEZp
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0
V2hpdGVMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzU2Vjb25kTGV2ZWxEb21h
aW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNS
dXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjph
bGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6bWFwSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aG9z
dE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjplbmNvZGVIb3N0TmFtZVdpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpk
ZWNvZGVIb3N0TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplbmNvZGVIb3N0TmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBw
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVu
Y29kaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RSYW5nZXNUaGF0TmVl
ZERlY29kaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5SG9zdE5hbWVGdW5j
dGlvblRvTWFpbFRvVVJMU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om1hcEhvc3ROYW1lcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdCeVRyaW1t
aW5nV2hpdGVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxCeVRydW5jYXRp
bmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVSTFdpdGhEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRhdGFXaXRo
VXNlclR5cGVkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBl
ZFN0cmluZ0RlcHJlY2F0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aGFzUXVlc3Rp
b25NYXJrT25seVF1ZXJ5U3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRhdGFG
b3JVUkxDb21wb25lbnRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTEJ5UmVt
b3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpvcmlnaW5hbFVSTERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
U3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omlz
VXNlclZpc2libGVVUkwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmFuZ2VPZlVSTFNj
aGVtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVWaWRlb1V0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsU3RvcmFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnJlZGlyZWN0ZWRSZXF1ZXN0IGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmxEYXRhYmFzZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llVXRpbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlT
ZXR0aW5ncy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q3VybC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3Vy
bC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDdXJsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVy
cm9yTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlT
ZXJ2ZXJTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVz
dFNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBO
ZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBO
ZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmg6
CisgICAgICAgICogcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9CU3RyaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRh
dGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSSBjb25z
dCk6CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLm1t
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp1c2VyVmlzaWJsZVN0cmluZyk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tQYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAqIHRlc3RpbmcvanMvV2ViQ29yZVRl
c3RTdXBwb3J0LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGVQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VySW5zcGVjdG9y
UHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmg6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJEYXRhLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2JEYXRhLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5Lmg6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleT46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAg
ICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMTgtMTAtMDIgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNZXNzYWdlRXZlbnQucG9ydHMgc2hvdWxkIHJldHVy
biB0aGUgc2FtZSBvYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzA1OTY0NGEwNWJhM2ZmNGE0YmI2NzhhMTlm
MmQwNDE2NzYxMjQ1ZC4uOTI1NWI5MzJkZTZmMDExYjBhYTZhOGU0MTQ2NjY3NjM3ZGI2ZGJiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzODEgQEAKKzIwMTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNv
cmUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9GaWxlQVBJ
L05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxv
YlJlZ2lzdHJ5OjpmaWxlc0luQmxvYik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQ
SS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0
YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRDaGVja2VyLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6c2V0Q29u
dGVudEV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENo
ZWNrZXI6OnVybCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxl
UGF0aCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8pOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojps
b2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0Ojpsb2dDb29raWVJ
bmZvcm1hdGlvbkludGVybmFsKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
RW5naW5lOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVz
c2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RhdGlzdGljczo6cmVjb3JkUmV0
cmlldmVkQ2FjaGVkRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRp
c3RpY3M6OnJlY29yZFJldmFsaWRhdGlvblN1Y2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5Lmg6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VJbmZvOjpmaXJzdFBhcnR5Rm9yQ29va2llcyBj
b25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6OlJlcXVlc3Q6Om9wZXJh
dG9yIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYXB0dXJlOjpSZXNwb25zZTo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpFcnJvcjo6b3BlcmF0
b3IgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FwdHVyZTo6TWFuYWdlcjo6ZmluZEJlc3RGdXp6eU1hdGNoKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6OmZ1enp5TWF0Y2hVUkxzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6OnVybElkZW50aWZ5aW5nQ29tbW9uRG9t
YWluKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFu
YWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXNvdXJjZTo6
dXJsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6OlJlc291cmNlOjpxdWVyeVBh
cmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1
cmVSZXNvdXJjZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxl
Z2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpvcGVuQ0ZVUkxSZWYpOgorICAgICAgICAoV2ViS2l0OjpyZXBsYWNl
ZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0aW9uc19jb25maWd1cmF0aW9u
X2Vycm9yKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVSTC5oOgorICAgICAgICAoQVBJOjpV
Ukw6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTDo6ZXF1YWxzKToKKyAgICAgICAgKEFQSTo6
VVJMOjpVUkwpOgorICAgICAgICAoQVBJOjpVUkw6OnVybCBjb25zdCk6CisgICAgICAgIChBUEk6
OlVSTDo6cGFyc2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9B
UElVc2VyQ29udGVudFVSTFBhdHRlcm4uaDoKKyAgICAgICAgKEFQSTo6VXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjptYXRjaGVzVVJMIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW06CisgICAgICAgIChXS1VSTENyZWF0
ZVdpdGhDRlVSTCk6CisgICAgICAgIChXS1VSTENvcHlDRlVSTCk6CisgICAgICAgICogU2hhcmVk
L0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRVUklSZXNwb25zZS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVS
ZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpXZWJBcmNoaXZl
UmVzb3VyY2UpOgorICAgICAgICAqIFNoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oOgor
ICAgICAgICAqIFNoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1VS
TCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSk6CisgICAgICAgICogU2hhcmVkL1Nlc3Np
b25TdGF0ZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9j
dW1lbnQgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBT
aGFyZWQvV2ViRXJyb3JzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRh
LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAg
IChJUEM6OmVuY29kZSk6CisgICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L2d0ay9XZWJFcnJvcnNHdGsuY3BwOgorICAgICAgICAqIFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHA6
CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmFwcGVuZFJlZGlyZWN0aW9uVVJMKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaDoKKyAgICAgICAgKEFQSTo6TmF2aWdh
dGlvbjo6dGFrZVJlZGlyZWN0Q2hhaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmcpOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250
ZW50UnVsZUxpc3ROb3RpZmljYXRpb24pOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50
Ojp3ZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50
OjpyZXNvbHZlV2ViR0xMb2FkUG9saWN5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpzYXZlRGF0YVRvRmlsZUlu
RG93bmxvYWRzRm9sZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQu
Y3BwOgorICAgICAgICAoQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJTdHlsZVNoZWV0
OjpnZW5lcmF0ZVVuaXF1ZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5
bGVTaGVldC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLmNwcDoKKyAgICAgICAgKGZpbGVQYXRoc0Zyb21GaWxlVVJMcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VMb2FkUGxhaW5UZXh0
U3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6Cisg
ICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdLUGFnZUdyb3VwQWRkVXNlclN0
eWxlU2hlZXQpOgorICAgICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdL
V2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZUZvckRlYnVnTW9kZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
TGFzdFNlZW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NW
ZXJ5UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNT
dGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIpOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcik6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRp
cmVjdGluZ1RvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NIYXNI
YWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0
aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlz
U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tOgorICAgICAgICAoLVtXS1Vz
ZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTps
ZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFzc29jaWF0ZWRVUkw6dXNlckNvbnRlbnRX
b3JsZDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1l
SGFuZGxlcjpmb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gdXJsU2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW06CisgICAgICAgICgtW19XS0FwcGxpY2F0
aW9uTWFuaWZlc3QgaW5pdFdpdGhDb2RlcjpdKToKKyAgICAgICAgKCtbX1dLQXBwbGljYXRpb25N
YW5pZmVzdCBhcHBsaWNhdGlvbk1hbmlmZXN0RnJvbUpTT046bWFuaWZlc3RVUkw6ZG9jdW1lbnRV
Ukw6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5t
bToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9yTWFpbkZy
YW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmJhc2VVUkw6dXNlckNvbnRl
bnRXb3JsZDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHA6
CisgICAgICAgICh3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2Nvb2tpZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
ICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbG9hZF9w
bGFpbl90ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50UmVxdWVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L21h
Yy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQp
OgorICAgICAgICAoV2ViS2l0Ojpkb21haW5CeUFkZGluZ0RvdFByZWZpeElmTmVlZGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OndlYkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9T
YWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5n
UmVzdWx0OjpTYWZlQnJvd3NpbmdSZXN1bHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9T
eXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoLVtfV0tQcmV2aWV3Q29u
dHJvbGxlckRhdGFTb3VyY2UgZmluaXNoOl0pOgorICAgICAgICAoV2ViS2l0OjpTeXN0ZW1QcmV2
aWV3Q29udHJvbGxlcjo6ZmluaXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAg
ICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRz
Rm9sZGVyKToKKyAgICAgICAgKFdlYktpdDo6cmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25G
b3JEZXZpY2VzKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNoZWNr
VXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tOgorICAgICAgICAoLVtXS1Jl
bG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlciBhdHRlbXB0UmVjb3ZlcnldKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6d3JpdGVUb1VSTEZvckZpbGVQcm9taXNlUHJvdmlkZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5OjpzZXRSZWRpcmVjdENoYWluKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQ
cm94eTo6cmVkaXJlY3RDaGFpbiBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0ZyYW1lTG9h
ZFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkZy
YW1lTG9hZFN0YXRlOjpkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRTdGF0ZTo6c2V0VW5yZWFjaGFibGVVUkwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9GcmFtZUxvYWRTdGF0ZS5oOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6
dXJsIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OnByb3Zpc2lvbmFs
VVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OnVucmVhY2hhYmxl
VVJMIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6d3JpdGVCbG9i
VG9GaWxlUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6aGFzT25seVNlY3VyZUNvbnRlbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdp
bnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2Fm
ZUJyb3dzaW5nUmVzdWx0Lmg6CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nUmVzdWx0Ojp1cmwgY29uc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5Ojp1cmwgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5Ojpwcm92aXNpb25hbFVSTCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OnVucmVhY2hhYmxlVVJMIGNvbnN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRl
ZENsaWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaGFu
Z2VQcm92aXNpb25hbFVSTEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGVPckZhaWxlZFRvTGF1bmNoKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omxv
Z0ZyYW1lTmF2aWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0
YW50Lm1tOgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IF9jcmVhdGVTaGVldFdp
dGhFbGVtZW50QWN0aW9uczpzaG93TGlua1RpdGxlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6cmVjdDpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJGb3JQcmV2aWV3SXRl
bUNvbnRyb2xsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBnZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0xl
Z2FjeVBERlZpZXcubW06CisgICAgICAgICgtW1dLTGVnYWN5UERGVmlldyBhY3Rpb25TaGVldEFz
c2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoVVJMOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dLUERGVmlldyBhY3Rpb25TaGVldEFzc2lz
dGFudDpzaGFyZUVsZW1lbnRXaXRoVVJMOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06CisgICAgICAg
ICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgX3VwZGF0ZUxvY2F0aW9uSW5mb10pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6ZGVjb2RlTGVnYWN5U2Vzc2lvblN0YXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpzaG93UGF5bWVudFVJKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZU1lcmNoYW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmll
dmVSZWNvcmRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxl
QmxvYlVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudEZvclVSTCBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNw
cDoKKyAgICAgICAgKFdLQnVuZGxlRnJhbWVBbGxvd3NGb2xsb3dpbmdMaW5rKToKKyAgICAgICAg
KFdLQnVuZGxlRnJhbWVDb3B5U3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwpOgor
ICAgICAgICAoV0tCdW5kbGVGcmFtZUNvcHlNSU1FVHlwZUZvclJlc291cmNlV2l0aFVSTCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3Bw
OgorICAgICAgICAoV0tCdW5kbGVQYWdlSGFzTG9jYWxEYXRhRm9yVVJMKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcu
Y3BwOgorICAgICAgICAoY29udmVydFRvVVRGOFN0cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0
ZWd5OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92
aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRTdHJlYW06OldlYlNvY2tldFN0cmVhbSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpjbGlja2VkTGluayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjpwZXJmb3JtVVJMUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBl
cmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbklu
Zm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbkluZm8pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3Vs
ZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVE
cmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVk
aXRvckNsaWVudE1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExp
bmtUYWJsZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6YWxsb3dzRm9sbG93aW5nTGluayBj
b25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkVVJMSW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmFkZFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6ZnJhbWVVUkwgY29uc3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjp1cGRhdGVBY3RpdmVQYWdlcyk6CisKIDIwMTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEZXByZWNhdGUgV0tDb25uZWN0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDE0YzYyMGFhYWIxYjdhMTU2ODU1ZGNkN2E2Mzhh
NjBkMzhlZDEzNTguLjQ4OGVjODk4NGNkOTk5ZjBjMWVlOTFhYzY2NjBjMDI0MmIxMjE2NDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMTAtMDIgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBm
cm9tIFdlYkNvcmUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisK
IDIwMTgtMTAtMDEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtt
YWNPU10gU3dpdGNoaW5nIHRvIGRpc2NyZXRlIEdQVSBzaG91bGQgYmUgZG9uZSBpbiB0aGUgVUkg
cHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGNlMzFlNzM4MWI4OWQ4ZDhk
NjY4YmZiMTQ0YjMyMmM4OGU3NjlmNjUuLjY5ZGQyZmM5OGUzMTlmZjExODcwOTczZGJkMjQ4ODgz
YzBhMmYwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzcgQEAK
KzIwMTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01BdHRyLm1tOgorICAgICAg
ICAqIERPTS9ET01CbG9iLm1tOgorICAgICAgICAqIERPTS9ET01DU1NDaGFyc2V0UnVsZS5tbToK
KyAgICAgICAgKiBET00vRE9NQ1NTSW1wb3J0UnVsZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NT
TWVkaWFSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NQYWdlUnVsZS5tbToKKyAgICAgICAg
KiBET00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW06CisgICAgICAgICogRE9NL0RPTUNTU1J1bGUu
bW06CisgICAgICAgICogRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW06CisgICAgICAgICog
RE9NL0RPTUNTU1N0eWxlUnVsZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVTaGVldC5t
bToKKyAgICAgICAgKiBET00vRE9NQ1NTVmFsdWUubW06CisgICAgICAgICogRE9NL0RPTUNoYXJh
Y3RlckRhdGEubW06CisgICAgICAgICogRE9NL0RPTUNvdW50ZXIubW06CisgICAgICAgICogRE9N
L0RPTURvY3VtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tOgor
ICAgICAgICAqIERPTS9ET01Eb2N1bWVudFR5cGUubW06CisgICAgICAgICogRE9NL0RPTUV2ZW50
Lm1tOgorICAgICAgICAqIERPTS9ET01GaWxlLm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQW5j
aG9yRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEFwcGxldEVsZW1lbnQubW06Cisg
ICAgICAgICogRE9NL0RPTUhUTUxBcmVhRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRN
TEJSRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEJhc2VFbGVtZW50Lm1tOgorICAg
ICAgICAqIERPTS9ET01IVE1MQmFzZUZvbnRFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MQm9keUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCdXR0b25FbGVtZW50Lm1t
OgorICAgICAgICAqIERPTS9ET01IVE1MQ2FudmFzRWxlbWVudC5tbToKKyAgICAgICAgKiBET00v
RE9NSFRNTENvbGxlY3Rpb24ubW06CisgICAgICAgICogRE9NL0RPTUhUTUxEaXZFbGVtZW50Lm1t
OgorICAgICAgICAqIERPTS9ET01IVE1MRG9jdW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhU
TUxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRW1iZWRFbGVtZW50Lm1tOgorICAg
ICAgICAqIERPTS9ET01IVE1MRmllbGRTZXRFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MRm9udEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9N
SFRNTEZyYW1lU2V0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEhSRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTEhlYWRFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9E
T01IVE1MSGVhZGluZ0VsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxIdG1sRWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTElGcmFtZUVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxJbnB1dEVs
ZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxMSUVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxMYWJlbEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxMZWdlbmRF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MTGlua0VsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MTWFycXVl
ZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxNZXRhRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1v
ZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
T3B0R3JvdXBFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MT3B0aW9uRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFBh
cmFtRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTFNjcmlwdEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhU
TUxTZWxlY3RFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MU3R5bGVFbGVtZW50Lm1t
OgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxU
YWJsZUNvbEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxUYWJsZUVsZW1lbnQubW06
CisgICAgICAgICogRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MVGl0
bGVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MVUxpc3RFbGVtZW50Lm1tOgorICAg
ICAgICAqIERPTS9ET01IVE1MVmlkZW9FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01LZXli
b2FyZEV2ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01NZWRpYUxpc3QubW06CisgICAgICAgICog
RE9NL0RPTU1vdXNlRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTU11dGF0aW9uRXZlbnQubW06
CisgICAgICAgICogRE9NL0RPTU5hbWVkTm9kZU1hcC5tbToKKyAgICAgICAgKiBET00vRE9NUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLm1tOgorICAgICAgICAqIERPTS9ET01SYW5nZS5tbToKKyAgICAg
ICAgKiBET00vRE9NU3R5bGVTaGVldC5tbToKKyAgICAgICAgKiBET00vRE9NVGV4dC5tbToKKyAg
ICAgICAgKiBET00vRE9NVGV4dEV2ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01Ub2tlbkxpc3Qu
bW06CisgICAgICAgICogRE9NL0RPTVVJRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTVhQYXRo
UmVzdWx0Lm1tOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06CisgICAgICAg
ICogTWlzYy9XZWJOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNVUkwgX3dlYl91c2VyVmlz
aWJsZVN0cmluZ10pOgorICAgICAgICAoLVtOU1VSTCBfd2ViX1VSTEJ5UmVtb3ZpbmdVc2VySW5m
b10pOgorICAgICAgICAoLVtOU1VSTCBfd2ViX2RhdGFGb3JVUkxDb21wb25lbnRUeXBlOl0pOgor
ICAgICAgICAoLVtOU1VSTCBfd2ViX3NjaGVtZURhdGFdKToKKyAgICAgICAgKC1bTlNVUkwgX3dl
Yl9ob3N0RGF0YV0pOgorICAgICAgICAqIE1pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1t
OgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAg
IChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2V0UmVxdWVzdFVSTCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcgY29uc3QpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpzaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLm1tOgorICAgICAgICAoV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3
ZWJWaXNpYmxlUGx1Z2luSW5mbyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJp
dHlPcmlnaW4ubW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9y
ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfbG9hZERhdGE6TUlNRVR5cGU6
dGV4dEVuY29kaW5nTmFtZTpiYXNlVVJMOnVucmVhY2hhYmxlVVJMOl0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1t
ZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXJdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAgICAgICogV2ViVmlldy9XZWJTY3Jp
cHREZWJ1Z2dlci5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorCiAy
MDE4LTEwLTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFj
T1NdIFN3aXRjaGluZyB0byBkaXNjcmV0ZSBHUFUgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIFVJIHBy
b2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBlYzgyZDQ5YWNmZmI3OTE0NWFm
MzNjNDI1OTNhM2MwYWViNGFkZThiLi45ZTRkNjdhYTFlYjFiMjg4MjliNzk2OGM5OTFjZmUzYTk3
MDA0MDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIw
MTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1hcnNoYWxsaW5nSGVscGVycy5jcHA6Cisg
ICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5E
YXRhYmFzZS5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oOgorICAgICAg
ICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAgICAqIFBsdWdpbnMvUGx1
Z2luU3RyZWFtLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViUGx1Z2luSW5mb1By
b3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlz
aXRlZExpbmtTdG9yZS5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAq
IFdlYkRvd25sb2FkLmg6CisgICAgICAgICogV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoKKyAg
ICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYkhpc3RvcnkuY3BwOgorICAgICAgICAq
IFdlYkhpc3RvcnkuaDoKKyAgICAgICAgKiBXZWJIaXN0b3J5SXRlbS5jcHA6CisgICAgICAgICog
V2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OldlYlJlc291cmNlKToKKyAg
ICAgICAgKiBXZWJSZXNvdXJjZS5oOgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoK
KyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJVUkxSZXNwb25zZTo6
Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6
CisgICAgICAgICogV2ViVmlldy5oOgorCiAyMDE4LTEwLTAyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFBhcnNlZFVSTFN0cmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2NmMjk0NmE5
ZGE1ZmM4NjBmMzU4Y2QzMGVjOWIzNjhmNTBkNmY2OS4uOGU1ZmNlZGZiNTFhNTI2Y2U3ZWU0ZDE4
MWRjOGUwNzkwNjUxNjBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC03Niw2ICs3NiwxMiBAQAogCQk1MzExQkQ1MzFFQTcxQ0FEMDA1MjUyODEgLyogU2ln
bmFscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzExQkQ1MTFFQTcxQ0FEMDA1MjUyODEgLyogU2lnbmFscy5jcHAgKi87IH07CiAJCTUzMTFCRDVD
MUVBODIyRjkwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTFCRDVCMUVBODIyRjkwMDUyNTI4MSAvKiBU
aHJlYWRNZXNzYWdlLmNwcCAqLzsgfTsKIAkJNTM1MzRGMkExRUMwRTEwRTAwMTQxQjJGIC8qIE1h
Y2hFeGNlcHRpb25zLmRlZnMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzUzNEYyOTFFQzBFMTBFMDAxNDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChDbGllbnQsIFNlcnZlciwgKTsgfTsgfTsKKwkJ
NUMxRjA1OTMyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUYwNTkxMjE2NDM1NkIwMDM5MzAy
QyAvKiBDRlVSTEV4dHJhcy5jcHAgKi87IH07CisJCTVDMUYwNTk1MjE2NDM3QjMwMDM5MzAyQyAv
KiBVUkxDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzFGMDU5NDIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwICovOyB9OworCQk1Q0MwRUU3
NTIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTczMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQ
YXJzZXIuY3BwICovOyB9OworCQk1Q0MwRUU3NjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTc0MjE2
MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwICovOyB9OworCQk1Q0MwRUU4OTIxNjJCQzIyMDBBMUE4
NDIgLyogVVJMQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0MwRUU4NjIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0gKi87IH07CisJ
CTVDQzBFRThBMjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTg4MjE2MkJDMjIwMEExQTg0
MiAvKiBOU1VSTEV4dHJhcy5tbSAqLzsgfTsKIAkJNzBBOTkzRkUxQUQ3MTUxMzAwRkE2MTVCIC8q
IFN5bWJvbFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwQTk5M0ZDMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAg
Ki87IH07CiAJCTcwRUNBNjBEMUIwMjQyNjgwMDQ0OTczOSAvKiBBdG9taWNTdHJpbmdJbXBsLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjBB
MUIwMjQyNjgwMDQ0OTczOSAvKiBBdG9taWNTdHJpbmdJbXBsLmNwcCAqLzsgfTsKIAkJN0EwNTA5
M0YxRkI5RENDNTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwNTA5M0UxRkI5RENDNTAwQjMzRkI4IC8qIEpT
T05WYWx1ZXMuY3BwICovOyB9OwpAQCAtMzcyLDcgKzM3OCwxOSBAQAogCQk1NTMwNzFDOTFDNDA0
MjcyMDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRpbnlMUlVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3
RjgyQzFEOTRCOTk3MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVCNDMzODNBNUQwQjQ2M0M5NDMzRDkzMyAvKiBJbmRl
eE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleE1hcC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZV
UkxFeHRyYXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0ZVUkxF
eHRyYXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzFGMDU5MjIxNjQzNTZC
MDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ0ZVUkxFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMxRjA1OTQy
MTY0MzdCMzAwMzkzMDJDIC8qIFVSTENGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFVSTENGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMxRjA1
OTcyMTY0Mzk5NDAwMzkzMDJDIC8qIFVSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVVJMSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzdDODhE
MzFEMEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVuaXF1ZVJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0Mw
RUU3MTIxNjI5RjE4MDBBMUE4NDIgLyogVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3MjIxNjI5
RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVSTFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3MzIx
NjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVSTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQzBFRTc0MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNDMEVFNzcyMTYyQTAxMDAwQTFBODQyIC8qIFVSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVJMSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
Q0MwRUU4NjIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVUkxDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNDMEVFODcyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TVVJMRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDQzBFRTg4MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5TVVJMRXh0cmFzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I2MjE0Njg5Qjg2MDBFNzhCNzYg
LyogbGliV1RGLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYldURi5hOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDI0N0I2RTE0Njg5QzQ3MDBFNzhC
NzYgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I3MDE0Njg5QzQ3MDBFNzhCNzYgLyogRGVidWdS
ZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyMCw5ICs3MzgsMTIgQEAKIAkJMkNERUQwRjAx
ODExNUMzRjAwNERCQTcwIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuY3Bw
ICovLAorCQkJCTVDMUYwNTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5oICovLAog
CQkJCUMyQkNGQzQxMUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNwcCAqLywKIAkJCQky
Q0RFRDBFRTE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCAqLywKIAkJCQkxQUZERTY0
NzE5NTIwMUMzMDBDNDhGRkEgLyogVHlwZUNhc3RzQ0YuaCAqLywKKwkJCQk1QzFGMDU5NDIxNjQz
N0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMTMxLDYgKzExNTIsMTIgQEAKIAkJCQlFMzAwRTUy
MTIwM0Q2NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLywKIAkJCQk1QzdDODhEMzFEMEEz
QTBBMDA5RDJGNkQgLyogVW5pcXVlUmVmLmggKi8sCiAJCQkJQ0Q3NjAwRkYxRjkwQTNDQTAwMDI2
RTI2IC8qIFVuc2FmZVBvaW50ZXIuaCAqLywKKwkJCQk1Q0MwRUU3NDIxNjI5RjE5MDBBMUE4NDIg
LyogVVJMLmNwcCAqLywKKwkJCQk1Q0MwRUU3MTIxNjI5RjE4MDBBMUE4NDIgLyogVVJMLmggKi8s
CisJCQkJNUMxRjA1OTcyMTY0Mzk5NDAwMzkzMDJDIC8qIFVSTEhhc2guaCAqLywKKwkJCQk1Q0Mw
RUU3NzIxNjJBMDEwMDBBMUE4NDIgLyogVVJMSGFzaC5oICovLAorCQkJCTVDQzBFRTczMjE2MjlG
MTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuY3BwICovLAorCQkJCTVDQzBFRTcyMjE2MjlGMTkwMEEx
QTg0MiAvKiBVUkxQYXJzZXIuaCAqLywKIAkJCQk3QUZFQzZCMDFFQjIyQjU5MDBEQURFMzYgLyog
VVVJRC5jcHAgKi8sCiAJCQkJN0FGRUM2QUUxRUIyMkFDNjAwREFERTM2IC8qIFVVSUQuaCAqLywK
IAkJCQlBOEE0NzM2RjE1MUE4MjVCMDA0MTIzRkYgLyogVmFsdWVDaGVjay5oICovLApAQCAtMTM1
NCw3ICsxMzgxLDEwIEBACiAJCQkJQThBNDcyQzUxNTFBODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJl
YWRDb2NvYS5tbSAqLywKIAkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9v
dHByaW50Q29jb2EuY3BwICovLAogCQkJCUFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1v
cnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSAqLywKKwkJCQk1Q0MwRUU4NzIxNjJCQzIyMDBBMUE4
NDIgLyogTlNVUkxFeHRyYXMuaCAqLywKKwkJCQk1Q0MwRUU4ODIxNjJCQzIyMDBBMUE4NDIgLyog
TlNVUkxFeHRyYXMubW0gKi8sCiAJCQkJQTMwRDQxMkMxRjBERTBCQTAwQjcxOTU0IC8qIFNvZnRM
aW5raW5nLmggKi8sCisJCQkJNUNDMEVFODYyMTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29hLm1t
ICovLAogCQkJCUU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwpAQCAtMTQ4MSw2ICsxNTExLDcgQEAKIAkJCQlB
OEE0NzM4QjE1MUE4MjVCMDA0MTIzRkYgLyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCURDRUUyMjAxMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQUMxNTFBODI1QjAwNDEyM0ZGIC8qIGNhY2hlZC1wb3dl
cnMuY2MgaW4gU291cmNlcyAqLywKKwkJCQk1QzFGMDU5MzIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZV
UkxFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOEExREM5N0JBQjAwNEExRDNG
IC8qIENsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MDE1MUE4MjVCMDA0
MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDYz
MTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvcklDVS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1
MzIsNiArMTU2Myw3IEBACiAJCQkJQUQ4OUI2QkExRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRUMxNTFBODI1
QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIy
OEMxREM5N0JBQjAwNEExRDNGIC8qIE1vbm90b25pY1RpbWUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNUNDMEVFOEEyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjcxNTFBODI1QjAwNDEyM0ZGIC8qIE9TQWxsb2NhdG9y
UG9zaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjkxNTFBODI1QjAwNDEyM0ZGIC8q
IE9TUmFuZG9tU291cmNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTU4NSw2ICsxNjE3LDEwIEBA
CiAJCQkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY2NkIyOTAxREM5N0JBQjAwNEExRDNGIC8qIFRpbWVXaXRoRHluYW1p
Y0Nsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcwNzVGNTFGQkY1M0NEMDA0ODlB
RjAgLyogVGltaW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDMEVFNzYyMTYyOUYx
OTAwQTFBODQyIC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzFGMDU5NTIxNjQzN0Iz
MDAzOTMwMkMgLyogVVJMQ0YuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDMEVFODkyMTYyQkMy
MjAwQTFBODQyIC8qIFVSTENvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDMEVFNzUyMTYy
OUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzE4MUM4
RjFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQzE4MUM5MTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQzE4MUM5MzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRl
clVURjE2LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCAzOWNjMTk5
OTY5MjVhMTJkYzM0ZGUwNzM0YjlmMjk2ZWRhNDdjZjQwLi4yODkyMWJjOGQyNGY0OWUzNWYxZjM3
NzZiN2FjNmU3NDgyOTRjMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMjQwLDYgKzI0MCw5
IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBUaW55UHRyU2V0LmgKICAgICBUcmlTdGF0
ZS5oCiAgICAgVHlwZUNhc3RzLmgKKyAgICBVUkwuaAorICAgIFVSTEhhc2guaAorICAgIFVSTFBh
cnNlci5oCiAgICAgVVVJRC5oCiAgICAgVW5hbGlnbmVkQWNjZXNzLmgKICAgICBVbmV4cGVjdGVk
LmgKQEAgLTM5Miw2ICszOTUsOCBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBUaHJlYWRpbmcuY3Bw
CiAgICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcAogICAgIFRpbWluZ1Njb3BlLmNwcAor
ICAgIFVSTC5jcHAKKyAgICBVUkxQYXJzZXIuY3BwCiAgICAgVVVJRC5jcHAKICAgICBXVEZBc3Nl
cnRpb25zLmNwcAogICAgIFdhbGxUaW1lLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Rm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IGVlNTFjNzMyMThmMWZm
YjllNTI1MGI2NWZkNWJmNTM4ODI3YWZlZTIuLjRiZWY4MTBjYzEwODY3MmQ5ODI5NjhjYjU5MzVi
YTI0MDI3MDY0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgU3RyaW5nVmll
dzsKIGNsYXNzIFRleHRQb3NpdGlvbjsKIGNsYXNzIFRleHRTdHJlYW07CiBjbGFzcyBVbmlxdWVk
U3RyaW5nSW1wbDsKK2NsYXNzIFVSTDsKIGNsYXNzIFdhbGxUaW1lOwogCiBzdHJ1Y3QgRmFzdE1h
bGxvYzsKQEAgLTEwOSw2ICsxMTAsNyBAQCB1c2luZyBXVEY6OlN0cmluZ0ltcGw7CiB1c2luZyBX
VEY6OlN0cmluZ1ZpZXc7CiB1c2luZyBXVEY6OlRleHRQb3NpdGlvbjsKIHVzaW5nIFdURjo6VGV4
dFN0cmVhbTsKK3VzaW5nIFdURjo6VVJMOwogdXNpbmcgV1RGOjpWYXJpYW50OwogdXNpbmcgV1RG
OjpWZWN0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNDY5MDNjMzY0MjljZWI3
MjZhMTExOTMzYWUyZmIzNTA0ODhkZjIyNS4uNDFjODk1NDkxODgyOWM3ZTA3ZWZlYzhkYTk1NzFh
NjY2ZjY4MjUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTYsNiArNiw3IEBAIGxp
c3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgIGdsaWIvR1JlZlB0ci5oCiAgICAgZ2xp
Yi9HVHlwZWRlZnMuaAogICAgIGdsaWIvR1VuaXF1ZVB0ci5oCisgICAgZ2xpYi9HVW5pcXVlUHRy
U291cC5oCiAgICAgZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaAogICAgIGdsaWIvV1RGR1R5
cGUuaAogCkBAIC0yMSw2ICsyMiw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgZ2xp
Yi9HTGliVXRpbGl0aWVzLmNwcAogICAgIGdsaWIvR1JlZlB0ci5jcHAKICAgICBnbGliL1J1bkxv
b3BHTGliLmNwcAorICAgIGdsaWIvVVJMU291cC5jcHAKIAogICAgIGxpbnV4L0N1cnJlbnRQcm9j
ZXNzTWVtb3J5U3RhdHVzLmNwcAogICAgIGxpbnV4L01lbW9yeUZvb3RwcmludExpbnV4LmNwcApA
QCAtMzcsOSArMzksMTEgQEAgbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUwogICAgICR7R0xJQl9H
SU9fTElCUkFSSUVTfQogICAgICR7R0xJQl9HT0JKRUNUX0xJQlJBUklFU30KICAgICAke0dMSUJf
TElCUkFSSUVTfQorICAgICR7TElCU09VUF9MSUJSQVJJRVN9CiAgICAgJHtaTElCX0xJQlJBUklF
U30KICkKIAogbGlzdChBUFBFTkQgV1RGX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
JHtHTElCX0lOQ0xVREVfRElSU30KKyAgICAke0xJQlNPVVBfSU5DTFVERV9ESVJTfQogKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA3NTJiNTk5MzE0OGYxMTEwYTI5M2M5ZGE5ZTI4YWRl
ZjA4ZmVlNDBjLi5hMDJkYTUyNzhlZWVhYjhkYjgwMGJjOGY5NmY4OWZiOTcyZjNlMWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtNCw2ICs0LDcgQEAgbGlzdChBUFBFTkQgV1RGX1BV
QkxJQ19IRUFERVJTCiAgICAgZ2xpYi9HUmVmUHRyLmgKICAgICBnbGliL0dUeXBlZGVmcy5oCiAg
ICAgZ2xpYi9HVW5pcXVlUHRyLmgKKyAgICBnbGliL0dVbmlxdWVQdHJTb3VwLmgKICAgICBnbGli
L1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oCiAgICAgZ2xpYi9XVEZHVHlwZS5oCiAKQEAgLTE5LDYg
KzIwLDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnbGliL0dMaWJVdGlsaXRpZXMu
Y3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCisgICAg
Z2xpYi9VUkxTb3VwLmNwcAogCiAgICAgbGludXgvQ3VycmVudFByb2Nlc3NNZW1vcnlTdGF0dXMu
Y3BwCiAgICAgbGludXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwCkBAIC0zNSw5ICszNywxMSBA
QCBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCiAgICAgJHtHTElCX0dJT19MSUJSQVJJRVN9CiAg
ICAgJHtHTElCX0dPQkpFQ1RfTElCUkFSSUVTfQogICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAg
JHtMSUJTT1VQX0xJQlJBUklFU30KICAgICAke1pMSUJfTElCUkFSSUVTfQogKQogCiBsaXN0KEFQ
UEVORCBXVEZfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0dMSUJfSU5DTFVERV9E
SVJTfQorICAgICR7TElCU09VUF9JTkNMVURFX0RJUlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9VUkwuY3BwIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDM0
NWFlZTc1MzMzYmNmODdjMTZhMzVjZDdjMDFkNTBjMDA1ZTlmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMCwwICsxLDExMDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxMS0yMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKworI2luY2x1ZGUgIlVSTFBhcnNlci5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+Cisj
aW5jbHVkZSA8dW5pY29kZS91aWRuYS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL0hleE51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KKworLy8gRklYTUU6IFRoaXMgZmlsZSBtYWtlcyB0b28gbXVjaCB1c2Ugb2YgdGhl
ICsgb3BlcmF0b3Igb24gU3RyaW5nLgorLy8gV2UgZWl0aGVyIGhhdmUgdG8gb3B0aW1pemUgdGhh
dCBvcGVyYXRvciBzbyBpdCBkb2Vzbid0IGludm9sdmUKKy8vIHNvIG1hbnkgYWxsb2NhdGlvbnMs
IG9yIGNoYW5nZSB0aGlzIHRvIHVzZSBTdHJpbmdCdWZmZXIgaW5zdGVhZC4KKworCituYW1lc3Bh
Y2UgV1RGIHsKKwordHlwZWRlZiBWZWN0b3I8Y2hhciwgNTEyPiBDaGFyQnVmZmVyOwordHlwZWRl
ZiBWZWN0b3I8VUNoYXIsIDUxMj4gVUNoYXJCdWZmZXI7CisKK3N0YXRpYyBjb25zdCB1bnNpZ25l
ZCBpbnZhbGlkUG9ydE51bWJlciA9IDB4RkZGRjsKKworLy8gQ29waWVzIHRoZSBzb3VyY2UgdG8g
dGhlIGRlc3RpbmF0aW9uLCBhc3N1bWluZyBhbGwgdGhlIHNvdXJjZSBjaGFyYWN0ZXJzIGFyZQor
Ly8gQVNDSUkuIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIgbXVzdCBiZSBsYXJnZSBlbm91Z2guIE51
bGwgY2hhcmFjdGVycyBhcmUgYWxsb3dlZAorLy8gaW4gdGhlIHNvdXJjZSBzdHJpbmcsIGFuZCBu
byBhdHRlbXB0IGlzIG1hZGUgdG8gbnVsbC10ZXJtaW5hdGUgdGhlIHJlc3VsdC4KK3N0YXRpYyB2
b2lkIGNvcHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmluZywgY2hhciogZGVzdCkKK3sKKyAgICBp
ZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHN0cmluZy5p
czhCaXQoKSkKKyAgICAgICAgbWVtY3B5KGRlc3QsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJp
bmcubGVuZ3RoKCkpOworICAgIGVsc2UgeworICAgICAgICBjb25zdCBVQ2hhciogc3JjID0gc3Ry
aW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAg
ICAgICAgZGVzdFtpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHNyY1tpXSk7CisgICAgfQorfQorCit2
b2lkIFVSTDo6aW52YWxpZGF0ZSgpCit7CisgICAgbV9pc1ZhbGlkID0gZmFsc2U7CisgICAgbV9w
cm90b2NvbElzSW5IVFRQRmFtaWx5ID0gZmFsc2U7CisgICAgbV9jYW5ub3RCZUFCYXNlVVJMID0g
ZmFsc2U7CisgICAgbV9zY2hlbWVFbmQgPSAwOworICAgIG1fdXNlclN0YXJ0ID0gMDsKKyAgICBt
X3VzZXJFbmQgPSAwOworICAgIG1fcGFzc3dvcmRFbmQgPSAwOworICAgIG1faG9zdEVuZCA9IDA7
CisgICAgbV9wb3J0TGVuZ3RoID0gMDsKKyAgICBtX3BhdGhFbmQgPSAwOworICAgIG1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gMDsKKyAgICBtX3F1ZXJ5RW5kID0gMDsKK30KKworVVJMOjpVUkwoY29u
c3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2Rp
bmcqIGVuY29kaW5nKQoreworICAgIFVSTFBhcnNlciBwYXJzZXIocmVsYXRpdmUsIGJhc2UsIGVu
Y29kaW5nKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKworc3RhdGljIGJvb2wg
c2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgYykKK3sKKyAgICAvLyBCcm93c2VycyBpZ25vcmUgbGVh
ZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sCisgICAgLy8gY2hhcmFjdGVycyBm
cm9tIFVSTHMuICBOb3RlIHRoYXQgYyBpcyBhbiAqdW5zaWduZWQqIGNoYXIgaGVyZQorICAgIC8v
IHNvIHRoaXMgY29tcGFyaXNvbiBzaG91bGQgb25seSBjYXRjaCBjb250cm9sIGNoYXJhY3RlcnMu
CisgICAgcmV0dXJuIGMgPD0gJyAnOworfQorCitVUkwgVVJMOjppc29sYXRlZENvcHkoKSBjb25z
dAoreworICAgIFVSTCByZXN1bHQgPSAqdGhpczsKKyAgICByZXN1bHQubV9zdHJpbmcgPSByZXN1
bHQubV9zdHJpbmcuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3Ry
aW5nIFVSTDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAoreworICAgIGlmICghaGFzUGF0aCgp
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICB1bnNpZ25lZCBlbmQgPSBtX3BhdGhF
bmQgLSAxOworICAgIGlmIChtX3N0cmluZ1tlbmRdID09ICcvJykKKyAgICAgICAgLS1lbmQ7CisK
KyAgICBzaXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNlRmluZCgnLycsIGVuZCk7CisgICAg
aWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1faG9zdEVuZCArIG1fcG9ydExlbmd0
aCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICArK3N0YXJ0OworCisgICAgcmV0dXJu
IG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKK30KKworU3RyaW5n
VmlldyBVUkw6OnByb3RvY29sKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKDAsIG1fc2NoZW1lRW5kKTsKK30KKworU3RyaW5nVmlldyBVUkw6Omhv
c3QoKSBjb25zdAoreworICAgIHVuc2lnbmVkIHN0YXJ0ID0gaG9zdFN0YXJ0KCk7CisgICAgcmV0
dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhzdGFydCwgbV9ob3N0RW5kIC0gc3Rh
cnQpOworfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBVUkw6OnBvcnQoKSBjb25zdAorewor
ICAgIGlmICghbV9wb3J0TGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgYm9vbCBvayA9IGZhbHNlOworICAgIHVuc2lnbmVkIG51bWJlcjsKKyAgICBpZiAobV9zdHJp
bmcuaXM4Qml0KCkpCisgICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QobV9z
dHJpbmcuY2hhcmFjdGVyczgoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZv
ayk7CisgICAgZWxzZQorICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1f
c3RyaW5nLmNoYXJhY3RlcnMxNigpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSwg
Jm9rKTsKKyAgICBpZiAoIW9rIHx8IG51bWJlciA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2
X3Q+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gbnVt
YmVyOworfQorCitTdHJpbmcgVVJMOjpob3N0QW5kUG9ydCgpIGNvbnN0Cit7CisgICAgaWYgKGF1
dG8gcG9ydCA9IHRoaXMtPnBvcnQoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoaG9zdCgp
LCAnOicsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3J0LnZhbHVlKCkpKTsKKyAgICByZXR1cm4g
aG9zdCgpLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQo
KSBjb25zdAoreworICAgIFN0cmluZyByZXN1bHQgPSBtX3N0cmluZy5zdWJzdHJpbmcoMCwgbV9o
b3N0RW5kICsgbV9wb3J0TGVuZ3RoKTsKKworICAgIGlmIChtX3Bhc3N3b3JkRW5kIC0gbV91c2Vy
U3RhcnQgPiAwKSB7CisgICAgICAgIGNvbnN0IGludCBhbGxvd0ZvclRyYWlsaW5nQXRTaWduID0g
MTsKKyAgICAgICAgcmVzdWx0LnJlbW92ZShtX3VzZXJTdGFydCwgbV9wYXNzd29yZEVuZCAtIG1f
dXNlclN0YXJ0ICsgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbik7CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworc3RhdGljIFN0cmluZyBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFy
c2VkVVJMKFN0cmluZ1ZpZXcgaW5wdXQpCit7CisgICAgYXV0byBpbnB1dExlbmd0aCA9IGlucHV0
Lmxlbmd0aCgpOworICAgIGlmICghaW5wdXRMZW5ndGgpCisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworICAgIFZlY3RvcjxMQ2hhcj4gcGVyY2VudERlY29kZWQ7CisgICAgcGVyY2VudERl
Y29kZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnB1dExlbmd0aCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGlucHV0TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGlucHV0W2ld
ID09ICclJworICAgICAgICAgICAgJiYgaW5wdXRMZW5ndGggPiAyCisgICAgICAgICAgICAmJiBp
IDwgaW5wdXRMZW5ndGggLSAyCisgICAgICAgICAgICAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRb
aSArIDFdKQorICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAyXSkpIHsK
KyAgICAgICAgICAgIHBlcmNlbnREZWNvZGVkLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJSGV4VmFs
dWUoaW5wdXRbaSArIDFdLCBpbnB1dFtpICsgMl0pKTsKKyAgICAgICAgICAgIGkgKz0gMjsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQo
aW5wdXRbaV0pOworICAgIH0KKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVj
b2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7Cit9CisKK1N0cmluZyBVUkw6OnVz
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2Vk
VVJMKFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5k
IC0gbV91c2VyU3RhcnQpKTsKK30KKworU3RyaW5nIFVSTDo6cGFzcygpIGNvbnN0Cit7CisgICAg
aWYgKG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyRW5kKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdW
aWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1f
dXNlckVuZCAtIDEpKTsKK30KKworU3RyaW5nIFVSTDo6ZW5jb2RlZFVzZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1f
dXNlclN0YXJ0KTsKK30KKworU3RyaW5nIFVSTDo6ZW5jb2RlZFBhc3MoKSBjb25zdAoreworICAg
IGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3
b3JkRW5kIC0gbV91c2VyRW5kIC0gMSk7Cit9CisKK1N0cmluZyBVUkw6OmZyYWdtZW50SWRlbnRp
ZmllcigpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNGcmFnbWVudElkZW50aWZpZXIoKSkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1
ZXJ5RW5kICsgMSk7Cit9CisKK2Jvb2wgVVJMOjpoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgIT0gbV9xdWVy
eUVuZDsKK30KKworU3RyaW5nIFVSTDo6YmFzZUFzU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zdHJpbmcubGVmdChtX3BhdGhBZnRlckxhc3RTbGFzaCk7Cit9CisKKyNpZiAhVVNFKENG
KQorCitTdHJpbmcgVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0Cit7CisgICAgaWYgKCFpc1Zh
bGlkKCkgfHwgIWlzTG9jYWxGaWxlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcocGF0
aCgpKSk7Cit9CisKKyNlbmRpZgorCisjaWZkZWYgTkRFQlVHCisKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBhc3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3KQoreworfQorCisjZWxzZQorCitzdGF0
aWMgdm9pZCBhc3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3IHByb3RvY29sKQoreworICAg
IC8vIEZJWE1FOiBXZSBwcm9iYWJseSBkb24ndCBuZWVkIHRoaXMgZnVuY3Rpb24gYW55IG1vcmUu
CisgICAgLy8gVGhlIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwgZnVuY3Rpb24gYXNzZXJ0cyB0
aGF0IHBhc3NlZC1pbiBjaGFyYWN0ZXJzCisgICAgLy8gYXJlIG9uZXMgaXQgY2FuIGhhbmRsZTsg
dGhlIG9sZGVyIGNvZGUgZGlkIG5vdCBhbmQgcmVsaWVkIG9uIHRoZXNlIGNoZWNrcy4KKyAgICBm
b3IgKGF1dG8gY2hhcmFjdGVyIDogcHJvdG9jb2wuY29kZVVuaXRzKCkpIHsKKyAgICAgICAgQVNT
RVJUKGlzQVNDSUkoY2hhcmFjdGVyKSk7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIgPiAnICcp
OworICAgICAgICBBU1NFUlQoIWlzQVNDSUlVcHBlcihjaGFyYWN0ZXIpKTsKKyAgICAgICAgQVNT
RVJUKHRvQVNDSUlMb3dlclVuY2hlY2tlZChjaGFyYWN0ZXIpID09IGNoYXJhY3Rlcik7CisgICAg
fQorfQorCisjZW5kaWYKKworc3RhdGljIExvY2sgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmdMb2NrOworCit1c2luZyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGlu
ZyA9IEhhc2hNYXA8U3RyaW5nLCB1aW50MTZfdD47CitzdGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygp
Cit7CisgICAgc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiBkZWZh
dWx0UG9ydEZvclByb3RvY29sTWFwOworICAgIHJldHVybiBkZWZhdWx0UG9ydEZvclByb3RvY29s
TWFwOworfQorCitzdGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcmIGVu
c3VyZURlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkKK3sKKyAgICBEZWZhdWx0
UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyomIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAg
PSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOworICAgIGlmICghZGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcCkKKyAgICAgICAgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcCA9
IG5ldyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZzsKKyAgICByZXR1cm4gKmRl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXA7Cit9CisKK3ZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZv
clByb3RvY29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmdMb2NrKTsKKyAgICBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9y
VGVzdGluZygpLmFkZChwcm90b2NvbCwgcG9ydCk7Cit9CisKK3ZvaWQgY2xlYXJEZWZhdWx0UG9y
dEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZ0xvY2spOworICAgIGlmIChhdXRv
KiBtYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpKQorICAgICAgICBt
YXAtPmNsZWFyKCk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2woU3RyaW5nVmlldyBwcm90b2NvbCkKK3sKKyAgICBpZiAoYXV0byogb3ZlcnJpZGVN
YXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpKSB7CisgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdM
b2NrKTsKKyAgICAgICAgQVNTRVJUKG92ZXJyaWRlTWFwKTsgLy8gTm8gbmVlZCB0byBudWxsIGNo
ZWNrIGFnYWluIGhlcmUgc2luY2Ugb3ZlcnJpZGVNYXAgY2Fubm90IGJlY29tZSBudWxsIGFmdGVy
IGJlaW5nIG5vbi1udWxsLgorICAgICAgICBhdXRvIGl0ZXJhdG9yID0gb3ZlcnJpZGVNYXAtPmZp
bmQocHJvdG9jb2wudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKKyAgICAgICAgaWYgKGl0ZXJh
dG9yICE9IG92ZXJyaWRlTWFwLT5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBpdGVyYXRvci0+
dmFsdWU7CisgICAgfQorICAgIHJldHVybiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wocHJvdG9jb2wpOworfQorCitib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1aW50MTZf
dCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKQoreworICAgIHJldHVybiBkZWZhdWx0UG9ydEZv
clByb3RvY29sKHByb3RvY29sKSA9PSBwb3J0OworfQorCitib29sIFVSTDo6cHJvdG9jb2xJcyhj
b25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKK3sKKyAgICBhc3NlcnRQcm90b2NvbElzR29vZChT
dHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihwcm90b2NvbCksIHN0cmxl
bihwcm90b2NvbCkpKTsKKworICAgIC8vIEphdmFTY3JpcHQgVVJMcyBhcmUgInZhbGlkIiBhbmQg
c2hvdWxkIGJlIGV4ZWN1dGVkIGV2ZW4gaWYgVVJMIGRlY2lkZXMgdGhleSBhcmUgaW52YWxpZC4K
KyAgICAvLyBUaGUgZnJlZSBmdW5jdGlvbiBwcm90b2NvbElzSmF2YVNjcmlwdCgpIHNob3VsZCBi
ZSB1c2VkIGluc3RlYWQuIAorICAgIEFTU0VSVCghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoU3RyaW5nVmlldyhwcm90b2NvbCksICJqYXZhc2NyaXB0IikpOworCisgICAgaWYgKCFtX2lz
VmFsaWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIERvIHRoZSBjb21wYXJpc29u
IHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2NoZW1lRW5kOyArK2kpIHsKKyAgICAgICAgaWYgKCFwcm90b2NvbFtpXSB8
fCAhaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX3N0cmluZ1tpXSwgcHJvdG9jb2xbaV0pKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gIXByb3RvY29sW21f
c2NoZW1lRW5kXTsgLy8gV2Ugc2hvdWxkIGhhdmUgY29uc3VtZWQgYWxsIGNoYXJhY3RlcnMgaW4g
dGhlIGFyZ3VtZW50LgorfQorCitib29sIFVSTDo6cHJvdG9jb2xJcyhTdHJpbmdWaWV3IHByb3Rv
Y29sKSBjb25zdAoreworICAgIGFzc2VydFByb3RvY29sSXNHb29kKHByb3RvY29sKTsKKworICAg
IGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG1f
c2NoZW1lRW5kICE9IHByb3RvY29sLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2Jq
ZWN0LgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7Cisg
ICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX3N0cmluZ1tpXSwgcHJvdG9j
b2xbaV0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworU3RyaW5nIFVSTDo6cXVlcnkoKSBjb25zdAoreworICAgIGlmIChtX3F1ZXJ5RW5k
ID09IG1fcGF0aEVuZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIG1f
c3RyaW5nLnN1YnN0cmluZyhtX3BhdGhFbmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCAr
IDEpKTsgCit9CisKK1N0cmluZyBVUkw6OnBhdGgoKSBjb25zdAoreworICAgIHVuc2lnbmVkIHBv
cnRFbmQgPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7CisgICAgcmV0dXJuIG1fc3RyaW5nLnN1
YnN0cmluZyhwb3J0RW5kLCBtX3BhdGhFbmQgLSBwb3J0RW5kKTsKK30KKworYm9vbCBVUkw6OnNl
dFByb3RvY29sKGNvbnN0IFN0cmluZyYgcykKK3sKKyAgICAvLyBGaXJlZm94IGFuZCBJRSByZW1v
dmUgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgJzonLgorICAgIHNpemVfdCBzZXBhcmF0b3JQ
b3NpdGlvbiA9IHMuZmluZCgnOicpOworICAgIFN0cmluZyBuZXdQcm90b2NvbCA9IHMuc3Vic3Ry
aW5nKDAsIHNlcGFyYXRvclBvc2l0aW9uKTsKKyAgICBhdXRvIGNhbm9uaWNhbGl6ZWQgPSBVUkxQ
YXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKG5ld1Byb3RvY29sKTsKKyAgICBpZiAoIWNh
bm9uaWNhbGl6ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9pc1ZhbGlk
KSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwg
IjoiLCBtX3N0cmluZykpOworICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5n
KCpjYW5vbmljYWxpemVkLCBtX3N0cmluZy5zdWJzdHJpbmcobV9zY2hlbWVFbmQpKSk7CisgICAg
KnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBi
b29sIGlzQWxsQVNDSUkoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgaWYgKHN0cmluZy5pczhC
aXQoKSkKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFT
Q0lJKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKK30KKyAgICAKKy8v
IEFwcGVuZHMgdGhlIHB1bnljb2RlZCBob3N0bmFtZSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBz
dHJpbmcgYW5kIGxlbmd0aCB0bworLy8gdGhlIG91dHB1dCBidWZmZXIuIFRoZSByZXN1bHQgd2ls
bCBub3QgYmUgbnVsbCB0ZXJtaW5hdGVkLgorLy8gUmV0dXJuIHZhbHVlIG9mIGZhbHNlIG1lYW5z
IGVycm9yIGluIGVuY29kaW5nLgorc3RhdGljIGJvb2wgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKFVD
aGFyQnVmZmVyJiBidWZmZXIsIFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIC8vIE5lZWRzIHRv
IGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBuYW1lLgorICAgIC8vIEZvciBo
b3N0IG5hbWVzIGJpZ2dlciB0aGFuIHRoaXMsIHdlIHdvbid0IGRvIElETiBlbmNvZGluZywgd2hp
Y2ggaXMgYWxtb3N0IGNlcnRhaW5seSBPSy4KKyAgICBjb25zdCB1bnNpZ25lZCBob3N0bmFtZUJ1
ZmZlckxlbmd0aCA9IDIwNDg7CisgICAgCisgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+IGhvc3Ru
YW1lQnVmZmVyTGVuZ3RoIHx8IGlzQWxsQVNDSUkoc3RyaW5nKSkgeworICAgICAgICBhcHBlbmQo
YnVmZmVyLCBzdHJpbmcpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAg
VUNoYXIgaG9zdG5hbWVCdWZmZXJbaG9zdG5hbWVCdWZmZXJMZW5ndGhdOworICAgIFVFcnJvckNv
ZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgVUlETkFJbmZvIHByb2Nlc3NpbmdEZXRhaWxz
ID0gVUlETkFfSU5GT19JTklUSUFMSVpFUjsKKyAgICBpbnQzMl90IG51bUNoYXJhY3RlcnNDb252
ZXJ0ZWQgPSB1aWRuYV9uYW1lVG9BU0NJSSgmVVJMUGFyc2VyOjppbnRlcm5hdGlvbmFsRG9tYWlu
TmFtZVRyYW5zY29kZXIoKSwKKyAgICAgICAgc3RyaW5nLnVwY29udmVydGVkQ2hhcmFjdGVycygp
LCBzdHJpbmcubGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVyLCBob3N0bmFtZUJ1ZmZlckxlbmd0aCwg
JnByb2Nlc3NpbmdEZXRhaWxzLCAmZXJyb3IpOworICAgIAorICAgIGlmIChVX1NVQ0NFU1MoZXJy
b3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKKyAgICAgICAgYnVmZmVyLmFwcGVu
ZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIFVSTDo6aG9z
dFN0YXJ0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyU3Rh
cnQpID8gbV9wYXNzd29yZEVuZCA6IG1fcGFzc3dvcmRFbmQgKyAxOworfQorCit2b2lkIFVSTDo6
c2V0SG9zdChjb25zdCBTdHJpbmcmIHMpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gY29sb25JbmRleCA9IHMuZmluZCgnOicpOworICAgIGlmIChj
b2xvbkluZGV4ICE9IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBVQ2hhckJ1ZmZl
ciBlbmNvZGVkSG9zdE5hbWU7CisgICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2Rl
ZEhvc3ROYW1lLCBzKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGJvb2wgc2xhc2hTbGFz
aE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVu
ZCArIDEpOworICAgIAorICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFw
cGVuZChtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSk7CisgICAgaWYgKHNsYXNoU2xhc2hOZWVk
ZWQpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLy8iKTsKKyAgICBidWlsZGVyLmFw
cGVuZChTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0TmFtZS5z
aXplKCkpKTsKKyAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5zdWJzdHJpbmcobV9ob3N0RW5k
KSk7CisKKyAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK3ZvaWQgVVJMOjpyZW1vdmVQb3J0KCkKK3sKKyAg
ICBpZiAoIW1fcG9ydExlbmd0aCkKKyAgICAgICAgcmV0dXJuOworICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCksIFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Cisg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK3ZvaWQgVVJMOjpzZXRQb3J0KHVuc2ln
bmVkIHNob3J0IGkpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGJvb2wgY29sb25OZWVkZWQgPSAhbV9wb3J0TGVuZ3RoOworICAgIHVuc2lnbmVkIHBvcnRT
dGFydCA9IChjb2xvbk5lZWRlZCA/IG1faG9zdEVuZCA6IG1faG9zdEVuZCArIDEpOworCisgICAg
VVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQocG9y
dFN0YXJ0KSwgKGNvbG9uTmVlZGVkID8gIjoiIDogIiIpLCBTdHJpbmc6Om51bWJlcihpKSwgU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpKTsK
KyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKwordm9pZCBVUkw6OnNldEhvc3RBbmRQ
b3J0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFN0cmluZ1ZpZXcgaG9zdE5hbWUoaG9zdEFuZFBvcnQpOwor
ICAgIFN0cmluZ1ZpZXcgcG9ydDsKKyAgICAKKyAgICBhdXRvIGNvbG9uSW5kZXggPSBob3N0TmFt
ZS5maW5kKCc6Jyk7CisgICAgaWYgKGNvbG9uSW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAg
cG9ydCA9IGhvc3ROYW1lLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSk7CisgICAgICAgIGJvb2wg
b2s7CisgICAgICAgIGludCBwb3J0SW50ID0gcG9ydC50b0ludFN0cmljdChvayk7CisgICAgICAg
IGlmICghb2sgfHwgcG9ydEludCA8IDApCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGhv
c3ROYW1lID0gaG9zdE5hbWUuc3Vic3RyaW5nKDAsIGNvbG9uSW5kZXgpOworICAgIH0KKworICAg
IGlmIChob3N0TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFVDaGFyQnVm
ZmVyIGVuY29kZWRIb3N0TmFtZTsKKyAgICBpZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFtZShlbmNv
ZGVkSG9zdE5hbWUsIGhvc3ROYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBzbGFz
aFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2No
ZW1lRW5kICsgMSk7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5h
cHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOworICAgIGlmIChzbGFzaFNsYXNoTmVl
ZGVkKQorICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7CisgICAgYnVpbGRlci5h
cHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUu
c2l6ZSgpKSk7CisgICAgaWYgKCFwb3J0LmlzRW1wdHkoKSkgeworICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIjoiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocG9ydCk7CisgICAgfQor
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RF
bmQgKyBtX3BvcnRMZW5ndGgpKTsKKworICAgIFVSTFBhcnNlciBwYXJzZXIoYnVpbGRlci50b1N0
cmluZygpKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKworc3RhdGljIFN0cmlu
ZyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcmIGlucHV0LCBib29sKCpzaG91
bGRFbmNvZGUpKFVDaGFyKSkKK3sKKyAgICBhdXRvIGVuY29kZSA9IFtzaG91bGRFbmNvZGVdIChj
b25zdCBTdHJpbmcmIGlucHV0KSB7CisgICAgICAgIENTdHJpbmcgdXRmOCA9IGlucHV0LnV0Zjgo
KTsKKyAgICAgICAgYXV0byogZGF0YSA9IHV0ZjguZGF0YSgpOworICAgICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgICAgIGF1dG8gbGVuZ3RoID0gdXRmOC5sZW5ndGgoKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICBh
dXRvIGMgPSBkYXRhW2pdOworICAgICAgICAgICAgaWYgKHNob3VsZEVuY29kZShjKSkgeworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJyk7CisgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYykpOworICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpKTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGMpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoVU5M
SUtFTFkoc2hvdWxkRW5jb2RlKGlucHV0W2ldKSkpCisgICAgICAgICAgICByZXR1cm4gZW5jb2Rl
KGlucHV0KTsKKyAgICB9CisgICAgcmV0dXJuIGlucHV0OworfQorCit2b2lkIFVSTDo6c2V0VXNl
cihjb25zdCBTdHJpbmcmIHVzZXIpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29k
ZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMsCisgICAgLy8gYW5k
IHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IHRoZSB1c2VyIGxvZ2luLgorCisgICAg
dW5zaWduZWQgZW5kID0gbV91c2VyRW5kOworICAgIGlmICghdXNlci5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgU3RyaW5nIHUgPSBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyh1c2VyLCBVUkxQYXJzZXI6
OmlzSW5Vc2VySW5mb0VuY29kZVNldCk7CisgICAgICAgIGlmIChtX3VzZXJTdGFydCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKSkKKyAgICAgICAgICAgIHUgPSAiLy8i
ICsgdTsKKyAgICAgICAgLy8gQWRkICdAJyBpZiB3ZSBkaWRuJ3QgaGF2ZSBvbmUgYmVmb3JlLgor
ICAgICAgICBpZiAoZW5kID09IG1faG9zdEVuZCB8fCAoZW5kID09IG1fcGFzc3dvcmRFbmQgJiYg
bV9zdHJpbmdbZW5kXSAhPSAnQCcpKQorICAgICAgICAgICAgdS5hcHBlbmQoJ0AnKTsKKyAgICAg
ICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQo
bV91c2VyU3RhcnQpLCB1LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwor
ICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCisg
ICAgICAgIGlmIChtX3VzZXJFbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBlbmQgIT0gbV9ob3N0RW5k
ICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQorICAgICAgICAgICAgZW5kICs9IDE7CisgICAgICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3
aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UuCisgICAgICAgIGlmIChtX3Vz
ZXJTdGFydCAhPSBlbmQpIHsKKyAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3Vs
dCgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFVSTDo6c2V0UGFzcyhjb25zdCBTdHJp
bmcmIHBhc3N3b3JkKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisK
KyAgICB1bnNpZ25lZCBlbmQgPSBtX3Bhc3N3b3JkRW5kOworICAgIGlmICghcGFzc3dvcmQuaXNF
bXB0eSgpKSB7CisgICAgICAgIFN0cmluZyBwID0gIjoiICsgcGVyY2VudEVuY29kZUNoYXJhY3Rl
cnMocGFzc3dvcmQsIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KSArICJAIjsKKyAg
ICAgICAgaWYgKG1fdXNlckVuZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQg
KyAxKSkKKyAgICAgICAgICAgIHAgPSAiLy8iICsgcDsKKyAgICAgICAgLy8gRWF0IHRoZSBleGlz
dGluZyAnQCcgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIGFkZCBvdXIgb3duLgorICAgICAgICBpZiAo
ZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKKyAgICAgICAgICAgIGVu
ZCArPSAxOworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyht
X3N0cmluZykubGVmdChtX3VzZXJFbmQpLCBwLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJp
bmcoZW5kKSkpOworICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3Ig
cGFzc3dvcmQuCisgICAgICAgIGlmIChtX3VzZXJTdGFydCA9PSBtX3VzZXJFbmQgJiYgZW5kICE9
IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKKyAgICAgICAgICAgIGVuZCArPSAx
OworICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29t
bW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgorICAgICAg
ICBpZiAobV91c2VyRW5kICE9IGVuZCkgeworICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlciht
YWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgICAgICp0aGlzID0gcGFyc2Vy
LnJlc3VsdCgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFVSTDo6c2V0RnJhZ21lbnRJ
ZGVudGlmaWVyKFN0cmluZ1ZpZXcgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IE9wdGltaXplIHRoZSBjYXNlIHdoZXJl
IHRoZSBpZGVudGlmaWVyIGFscmVhZHkgaGFwcGVucyB0byBiZSBlcXVhbCB0byB3aGF0IHdhcyBw
YXNzZWQ/CisgICAgLy8gRklYTUU6IElzIGl0IGNvcnJlY3QgdG8gZG8gdGhpcyB3aXRob3V0IGVu
Y29kaW5nIGFuZCBlc2NhcGluZyBub24tQVNDSUkgY2hhcmFjdGVycz8KKyAgICAqdGhpcyA9IFVS
TFBhcnNlciB7IG1ha2VTdHJpbmcoU3RyaW5nVmlldyB7IG1fc3RyaW5nIH0uc3Vic3RyaW5nKDAs
IG1fcXVlcnlFbmQpLCAnIycsIGlkZW50aWZpZXIpIH0ucmVzdWx0KCk7Cit9CisKK3ZvaWQgVVJM
OjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKQoreworICAgIGlmICghbV9pc1ZhbGlkKSB7Cisg
ICAgICAgIEFTU0VSVCghbV9xdWVyeUVuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlFbmQpCisgICAgICAg
IG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKTsKK30KKwordm9pZCBVUkw6OnJl
bW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdHJpbmcgPSBtX3N0cmluZy5sZWZ0KG1fcGF0aEVu
ZCk7CisgICAgbV9xdWVyeUVuZCA9IG1fcGF0aEVuZDsKK30KKwordm9pZCBVUkw6OnNldFF1ZXJ5
KGNvbnN0IFN0cmluZyYgcXVlcnkpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEZJWE1FOiAnIycgYW5kIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3Qg
YmUgZW5jb2RlZCBhbmQgZXNjYXBlZC4KKyAgICAvLyBVc3VhbGx5LCB0aGUgcXVlcnkgaXMgZW5j
b2RlZCB1c2luZyBkb2N1bWVudCBlbmNvZGluZywgbm90IFVURi04LCBidXQgd2UgZG9uJ3QgaGF2
ZQorICAgIC8vIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQgaW4gdGhpcyBmdW5jdGlvbi4KKyAgICAv
LyBodHRwczovL3dlYmtpdC5vcmcvYi8xNjExNzYKKyAgICBpZiAoKHF1ZXJ5LmlzRW1wdHkoKSB8
fCBxdWVyeVswXSAhPSAnPycpICYmICFxdWVyeS5pc051bGwoKSkgeworICAgICAgICBVUkxQYXJz
ZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3BhdGhFbmQp
LCAiPyIsIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkp
KTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQo
bV9wYXRoRW5kKSwgcXVlcnksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5
RW5kKSkpOworICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICB9CisKK30KKwor
dm9pZCBVUkw6OnNldFBhdGgoY29uc3QgU3RyaW5nJiBzKQoreworICAgIGlmICghbV9pc1ZhbGlk
KQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgcGF0aCA9IHM7CisgICAgaWYgKHBhdGgu
aXNFbXB0eSgpIHx8IHBhdGhbMF0gIT0gJy8nKQorICAgICAgICBwYXRoID0gIi8iICsgcGF0aDsK
KworICAgIGF1dG8gcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduID0gW10gKFVDaGFyIGNoYXJhY3Rl
cikgeworICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09ICc/JyB8fCBjaGFyYWN0ZXIgPT0gJyMn
OworICAgIH07CisgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9z
dHJpbmcpLmxlZnQobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSwgcGVyY2VudEVuY29kZUNoYXJh
Y3RlcnMocGF0aCwgcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWduKSwgU3RyaW5nVmlldyhtX3N0cmlu
Zykuc3Vic3RyaW5nKG1fcGF0aEVuZCkpKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsK
K30KKworYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYgYSwg
Y29uc3QgVVJMJiBiKQoreworICAgIGlmIChhLm1fcXVlcnlFbmQgIT0gYi5tX3F1ZXJ5RW5kKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdW5zaWduZWQgcXVlcnlMZW5ndGggPSBhLm1fcXVl
cnlFbmQ7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHF1ZXJ5TGVuZ3RoOyArK2kpCisg
ICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgZXF1YWxJZ25vcmluZ1F1
ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgaWYgKGEu
cGF0aEVuZCgpICE9IGIucGF0aEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdW5z
aWduZWQgcGF0aEVuZCA9IGEucGF0aEVuZCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBwYXRoRW5kOyArK2kpIHsKKyAgICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmco
KVtpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29u
c3QgVVJMJiBiKQoreworICAgIGlmIChhLm1fc2NoZW1lRW5kICE9IGIubV9zY2hlbWVFbmQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIGhvc3RTdGFydEEgPSBhLmhvc3RT
dGFydCgpOworICAgIHVuc2lnbmVkIGhvc3RMZW5ndGhBID0gYS5tX2hvc3RFbmQgLSBob3N0U3Rh
cnRBOworICAgIHVuc2lnbmVkIGhvc3RTdGFydEIgPSBiLmhvc3RTdGFydCgpOworICAgIHVuc2ln
bmVkIGhvc3RMZW5ndGhCID0gYi5tX2hvc3RFbmQgLSBiLmhvc3RTdGFydCgpOworICAgIGlmICho
b3N0TGVuZ3RoQSAhPSBob3N0TGVuZ3RoQikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gQ2hlY2sgdGhlIHNjaGVtZQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhLm1fc2No
ZW1lRW5kOyArK2kpIHsKKyAgICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtp
XSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBBbmQgdGhlIGhv
c3QKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaG9zdExlbmd0aEE7ICsraSkgeworICAg
ICAgICBpZiAoYS5zdHJpbmcoKVtob3N0U3RhcnRBICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3Rh
cnRCICsgaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGEu
cG9ydCgpICE9IGIucG9ydCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBi
KQoreworICAgIHVuc2lnbmVkIGhvc3RTdGFydEEgPSBhLmhvc3RTdGFydCgpOworICAgIHVuc2ln
bmVkIGhvc3RMZW5ndGhBID0gYS5tX2hvc3RFbmQgLSBob3N0U3RhcnRBOworICAgIHVuc2lnbmVk
IGhvc3RTdGFydEIgPSBiLmhvc3RTdGFydCgpOworICAgIHVuc2lnbmVkIGhvc3RMZW5ndGhCID0g
Yi5tX2hvc3RFbmQgLSBob3N0U3RhcnRCOworICAgIGlmIChob3N0TGVuZ3RoQSAhPSBob3N0TGVu
Z3RoQikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKKyAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0
QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFVSTDo6aXNNYXRj
aGluZ0RvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChkb21haW4uaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghcHJvdG9jb2xJc0luSFRUUEZhbWlseSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGhvc3QgPSB0aGlzLT5ob3N0KCk7
CisgICAgaWYgKCFob3N0LmVuZHNXaXRoKGRvbWFpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBob3N0Lmxlbmd0aCgpID09IGRvbWFpbi5sZW5ndGgoKSB8fCBob3N0W2hv
c3QubGVuZ3RoKCkgLSBkb21haW4ubGVuZ3RoKCkgLSAxXSA9PSAnLic7Cit9CisKK1N0cmluZyBl
bmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgaW5wdXQpCit7CisgICAg
cmV0dXJuIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKGlucHV0LCBVUkxQYXJzZXI6OmlzSW5Vc2Vy
SW5mb0VuY29kZVNldCk7Cit9CisKK2Jvb2wgVVJMOjppc0hpZXJhcmNoaWNhbCgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQo
bV9zdHJpbmdbbV9zY2hlbWVFbmRdID09ICc6Jyk7CisgICAgcmV0dXJuIG1fc3RyaW5nW21fc2No
ZW1lRW5kICsgMV0gPT0gJy8nOworfQorCit2b2lkIFVSTDo6Y29weVRvQnVmZmVyKFZlY3Rvcjxj
aGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFRoaXMgdGhyb3dzIGF3
YXkgdGhlIGhpZ2ggYnl0ZXMgb2YgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmchCisg
ICAgLy8gVGhhdCdzIGZpbmUgZm9yIGEgdmFsaWQgVVJMLCB3aGljaCBpcyBhbGwgQVNDSUksIGJ1
dCBub3QgZm9yIGludmFsaWQgVVJMcy4KKyAgICBidWZmZXIucmVzaXplKG1fc3RyaW5nLmxlbmd0
aCgpKTsKKyAgICBjb3B5QVNDSUkobV9zdHJpbmcsIGJ1ZmZlci5kYXRhKCkpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcz4KK2Jvb2wgcHJvdG9jb2xJc0ludGVybmFsKGNvbnN0
IFN0cmluZ0NsYXNzJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKQoreworICAgIC8vIERvIHRo
ZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCisgICAgYXNz
ZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7CisgICAgYm9vbCBpc0xlYWRpbmcgPSB0
cnVlOworICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGogPSAwOyB1cmxbaV07ICsraSkgeworICAg
ICAgICAvLyBTa2lwIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgor
ICAgICAgICBpZiAoaXNMZWFkaW5nICYmIHNob3VsZFRyaW1Gcm9tVVJMKHVybFtpXSkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaXNMZWFkaW5nID0gZmFsc2U7CisKKyAgICAgICAg
Ly8gU2tpcCBhbnkgdGFicyBhbmQgbmV3bGluZXMuCisgICAgICAgIGlmICh1cmxbaV0gPT0gJ1x0
JyB8fCB1cmxbaV0gPT0gJ1xyJyB8fCB1cmxbaV0gPT0gJ1xuJykKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGlmICghcHJvdG9jb2xbal0pCisgICAgICAgICAgICByZXR1cm4gdXJs
W2ldID09ICc6JzsKKyAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFtp
XSwgcHJvdG9jb2xbal0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICsr
ajsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIHByb3RvY29sSXMo
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKQoreworICAgIHJldHVybiBw
cm90b2NvbElzSW50ZXJuYWwodXJsLCBwcm90b2NvbCk7Cit9CisKK2lubGluZSBib29sIFVSTDo6
cHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgY2hhciogcHJvdG9jb2wpCit7
CisgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJc0ludGVybmFsKHN0cmluZywgcHJvdG9jb2wpOwor
fQorCisjaWZuZGVmIE5ERUJVRworCit2b2lkIFVSTDo6cHJpbnQoKSBjb25zdAoreworICAgIHBy
aW50ZigiJXNcbiIsIG1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworfQorCisjZW5kaWYKKworU3Ry
aW5nIFVSTDo6c3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29uc3QKK3sKKyAgICBVUkwgcmVm
ZXJyZXIoKnRoaXMpOworICAgIHJlZmVycmVyLnNldFVzZXIoU3RyaW5nKCkpOworICAgIHJlZmVy
cmVyLnNldFBhc3MoU3RyaW5nKCkpOworICAgIHJlZmVycmVyLnJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpOworICAgIHJldHVybiByZWZlcnJlci5zdHJpbmcoKTsKK30KKworYm9vbCBVUkw6Omlz
TG9jYWxGaWxlKCkgY29uc3QKK3sKKyAgICAvLyBJbmNsdWRpbmcgZmVlZCBoZXJlIG1pZ2h0IGJl
IGEgYmFkIGlkZWEgc2luY2UgZHJhZyBhbmQgZHJvcCB1c2VzIHRoaXMgY2hlY2sKKyAgICAvLyBh
bmQgaW5jbHVkaW5nIGZlZWQgd291bGQgYWxsb3cgZmVlZHMgdG8gcG90ZW50aWFsbHkgbGV0IHNv
bWVvbmUncyBibG9nCisgICAgLy8gcmVhZCB0aGUgY29udGVudHMgb2YgdGhlIGNsaXBib2FyZCBv
biBhIGRyYWcsIGV2ZW4gd2l0aG91dCBhIGRyb3AuCisgICAgLy8gTGlrZXdpc2Ugd2l0aCB1c2lu
ZyB0aGUgRnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0VVJMQXNMb2NhbCgpIGZ1bmN0aW9uLgorICAg
IHJldHVybiBwcm90b2NvbElzKCJmaWxlIik7Cit9CisKK2Jvb2wgcHJvdG9jb2xJc0phdmFTY3Jp
cHQoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1
cmwsICJqYXZhc2NyaXB0Iik7Cit9CisKK2Jvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5n
VmlldyB1cmwpCit7CisgICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJqYXZhc2Ny
aXB0Iik7Cit9CisKK2Jvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25zdCBTdHJpbmcmIHVy
bCkKK3sKKyAgICBhdXRvIGxlbmd0aCA9IHVybC5sZW5ndGgoKTsKKyAgICAvLyBEbyB0aGUgY29t
cGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgorICAgIHJldHVybiBs
ZW5ndGggPj0gNQorICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFswXSwg
J2gnKQorICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFsxXSwgJ3QnKQor
ICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFsyXSwgJ3QnKQorICAgICAg
ICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFszXSwgJ3AnKQorICAgICAgICAmJiAo
dXJsWzRdID09ICc6JyB8fCAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbNF0sICdzJykg
JiYgbGVuZ3RoID49IDYgJiYgdXJsWzVdID09ICc6JykpOworfQorCitjb25zdCBVUkwmIGJsYW5r
VVJMKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNCbGFua1VSTChV
UkwoKSwgImFib3V0OmJsYW5rIik7CisgICAgcmV0dXJuIHN0YXRpY0JsYW5rVVJMOworfQorCiti
b29sIFVSTDo6aXNCbGFua1VSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHByb3RvY29sSXMoImFi
b3V0Iik7Cit9CisKK2Jvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpCit7CisgICAgc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CisKKyAgICAvLyBTaW5jZSBt
b3N0IFVSTHMgZG9uJ3QgaGF2ZSBhIHBvcnQsIHJldHVybiBlYXJseSBmb3IgdGhlICJubyBwb3J0
IiBjYXNlLgorICAgIGlmICghcG9ydCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBU
aGlzIGJsb2NrZWQgcG9ydCBsaXN0IG1hdGNoZXMgdGhlIHBvcnQgYmxvY2tpbmcgdGhhdCBNb3pp
bGxhIGltcGxlbWVudHMuCisgICAgLy8gU2VlIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVj
dHMvbmV0bGliL1BvcnRCYW5uaW5nLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgc3Rh
dGljIGNvbnN0IHVpbnQxNl90IGJsb2NrZWRQb3J0TGlzdFtdID0geworICAgICAgICAxLCAgICAv
LyB0Y3BtdXgKKyAgICAgICAgNywgICAgLy8gZWNobworICAgICAgICA5LCAgICAvLyBkaXNjYXJk
CisgICAgICAgIDExLCAgIC8vIHN5c3RhdAorICAgICAgICAxMywgICAvLyBkYXl0aW1lCisgICAg
ICAgIDE1LCAgIC8vIG5ldHN0YXQKKyAgICAgICAgMTcsICAgLy8gcW90ZAorICAgICAgICAxOSwg
ICAvLyBjaGFyZ2VuCisgICAgICAgIDIwLCAgIC8vIEZUUC1kYXRhCisgICAgICAgIDIxLCAgIC8v
IEZUUC1jb250cm9sCisgICAgICAgIDIyLCAgIC8vIFNTSAorICAgICAgICAyMywgICAvLyB0ZWxu
ZXQKKyAgICAgICAgMjUsICAgLy8gU01UUAorICAgICAgICAzNywgICAvLyB0aW1lCisgICAgICAg
IDQyLCAgIC8vIG5hbWUKKyAgICAgICAgNDMsICAgLy8gbmljbmFtZQorICAgICAgICA1MywgICAv
LyBkb21haW4KKyAgICAgICAgNzcsICAgLy8gcHJpdi1yanMKKyAgICAgICAgNzksICAgLy8gZmlu
Z2VyCisgICAgICAgIDg3LCAgIC8vIHR0eWxpbmsKKyAgICAgICAgOTUsICAgLy8gc3VwZHVwCisg
ICAgICAgIDEwMSwgIC8vIGhvc3RyaWFtZQorICAgICAgICAxMDIsICAvLyBpc28tdHNhcAorICAg
ICAgICAxMDMsICAvLyBncHBpdG5wCisgICAgICAgIDEwNCwgIC8vIGFjci1uZW1hCisgICAgICAg
IDEwOSwgIC8vIFBPUDIKKyAgICAgICAgMTEwLCAgLy8gUE9QMworICAgICAgICAxMTEsICAvLyBz
dW5ycGMKKyAgICAgICAgMTEzLCAgLy8gYXV0aAorICAgICAgICAxMTUsICAvLyBTRlRQCisgICAg
ICAgIDExNywgIC8vIHV1Y3AtcGF0aAorICAgICAgICAxMTksICAvLyBubnRwCisgICAgICAgIDEy
MywgIC8vIE5UUAorICAgICAgICAxMzUsICAvLyBsb2Mtc3J2IC8gZXBtYXAKKyAgICAgICAgMTM5
LCAgLy8gbmV0YmlvcworICAgICAgICAxNDMsICAvLyBJTUFQMgorICAgICAgICAxNzksICAvLyBC
R1AKKyAgICAgICAgMzg5LCAgLy8gTERBUAorICAgICAgICA0NjUsICAvLyBTTVRQK1NTTAorICAg
ICAgICA1MTIsICAvLyBwcmludCAvIGV4ZWMKKyAgICAgICAgNTEzLCAgLy8gbG9naW4KKyAgICAg
ICAgNTE0LCAgLy8gc2hlbGwKKyAgICAgICAgNTE1LCAgLy8gcHJpbnRlcgorICAgICAgICA1MjYs
ICAvLyB0ZW1wbworICAgICAgICA1MzAsICAvLyBjb3VyaWVyCisgICAgICAgIDUzMSwgIC8vIENo
YXQKKyAgICAgICAgNTMyLCAgLy8gbmV0bmV3cworICAgICAgICA1NDAsICAvLyBVVUNQCisgICAg
ICAgIDU0OCwgIC8vIGFmcG92ZXJ0Y3AgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA1NTYsICAv
LyByZW1vdGVmcworICAgICAgICA1NjMsICAvLyBOTlRQK1NTTAorICAgICAgICA1ODcsICAvLyBF
U01UUAorICAgICAgICA2MDEsICAvLyBzeXNsb2ctY29ubgorICAgICAgICA2MzYsICAvLyBMREFQ
K1NTTAorICAgICAgICA5OTMsICAvLyBJTUFQK1NTTAorICAgICAgICA5OTUsICAvLyBQT1AzK1NT
TAorICAgICAgICAyMDQ5LCAvLyBORlMKKyAgICAgICAgMzY1OSwgLy8gYXBwbGUtc2FzbCAvIFBh
c3N3b3JkU2VydmVyIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNDA0NSwgLy8gbG9ja2QKKyAg
ICAgICAgNDE5MCwgLy8gTWFuYWdlU2lldmUgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2MDAw
LCAvLyBYMTEKKyAgICAgICAgNjY2NSwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25d
CisgICAgICAgIDY2NjYsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAg
ICA2NjY3LCAvLyBTdGFuZGFyZCBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2NjY4LCAv
LyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2OSwgLy8gQWx0ZXJu
YXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2NzksIC8vIEFsdGVybmF0ZSBJUkMg
U1NMIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY5NywgLy8gSVJDK1NTTCBbQXBwbGUgYWRk
aXRpb25dCisgICAgICAgIGludmFsaWRQb3J0TnVtYmVyLCAvLyBVc2VkIHRvIGJsb2NrIGFsbCBp
bnZhbGlkIHBvcnQgbnVtYmVycworICAgIH07CisKKyAgICAvLyBJZiB0aGUgcG9ydCBpcyBub3Qg
aW4gdGhlIGJsb2NrZWQgcG9ydCBsaXN0LCBhbGxvdyBpdC4KKyAgICBBU1NFUlQoc3RkOjppc19z
b3J0ZWQoc3RkOjpiZWdpbihibG9ja2VkUG9ydExpc3QpLCBzdGQ6OmVuZChibG9ja2VkUG9ydExp
c3QpKSk7CisgICAgaWYgKCFzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbihibG9ja2VkUG9y
dExpc3QpLCBzdGQ6OmVuZChibG9ja2VkUG9ydExpc3QpLCBwb3J0LnZhbHVlKCkpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEFsbG93IHBvcnRzIDIxIGFuZCAyMiBmb3IgRlRQIFVS
THMsIGFzIE1vemlsbGEgZG9lcy4KKyAgICBpZiAoKHBvcnQudmFsdWUoKSA9PSAyMSB8fCBwb3J0
LnZhbHVlKCkgPT0gMjIpICYmIHVybC5wcm90b2NvbElzKCJmdHAiKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAvLyBBbGxvdyBhbnkgcG9ydCBudW1iZXIgaW4gYSBmaWxlIFVSTCwgc2lu
Y2UgdGhlIHBvcnQgbnVtYmVyIGlzIGlnbm9yZWQuCisgICAgaWYgKHVybC5wcm90b2NvbElzKCJm
aWxlIikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitT
dHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBBU1NF
UlQocHJvdG9jb2xJc0ludGVybmFsKHVybCwgImRhdGEiKSk7CisKKyAgICAvLyBGSVhNRTogV2hh
dCdzIHRoZSByaWdodCBiZWhhdmlvciB3aGVuIHRoZSBVUkwgaGFzIGEgY29tbWEgZmlyc3QsIGJ1
dCBhIHNlbWljb2xvbiBsYXRlcj8KKyAgICAvLyBDdXJyZW50bHkgdGhpcyBjb2RlIHdpbGwgYnJl
YWsgYXQgdGhlIHNlbWljb2xvbiBpbiB0aGF0IGNhc2UuIE5vdCBzdXJlIHRoYXQncyBjb3JyZWN0
LgorICAgIGF1dG8gaW5kZXggPSB1cmwuZmluZCgnOycsIDUpOworICAgIGlmIChpbmRleCA9PSBu
b3RGb3VuZCkKKyAgICAgICAgaW5kZXggPSB1cmwuZmluZCgnLCcsIDUpOworICAgIGlmIChpbmRl
eCA9PSBub3RGb3VuZCkgeworICAgICAgICAvLyBGSVhNRTogVGhlcmUgd2FzIGFuIG9sZCBjb21t
ZW50IGhlcmUgdGhhdCBtYWRlIGl0IHNvdW5kIGxpa2UgdGhpcyBzaG91bGQgYmUgcmV0dXJuaW5n
IHRleHQvcGxhaW4uCisgICAgICAgIC8vIEJ1dCB3ZSBoYXZlIGJlZW4gcmV0dXJuaW5nIGVtcHR5
IHN0cmluZyBoZXJlIGZvciBzb21lIHRpbWUsIHNvIG5vdCBjaGFuZ2luZyBpdHMgYmVoYXZpb3Ig
YXQgdGhpcyB0aW1lLgorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICB9CisgICAg
aWYgKGluZGV4ID09IDUpCisgICAgICAgIHJldHVybiAidGV4dC9wbGFpbiJfczsKKyAgICBBU1NF
UlQoaW5kZXggPj0gNSk7CisgICAgcmV0dXJuIHVybC5zdWJzdHJpbmcoNSwgaW5kZXggLSA1KS5j
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworfQorCitTdHJpbmcgVVJMOjpzdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoKSBjb25zdAoreworICAgIGlmIChzdHJp
bmcoKS5sZW5ndGgoKSA8PSBsZW5ndGgpCisgICAgICAgIHJldHVybiBzdHJpbmcoKTsKKworICAg
IHJldHVybiBzdHJpbmcoKS5sZWZ0KGxlbmd0aCAvIDIgLSAxKSArICIuLi4iICsgc3RyaW5nKCku
cmlnaHQobGVuZ3RoIC8gMiAtIDIpOworfQorCitVUkwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZl
UGFydChjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGFydCkKK3sKKyAgICByZXR1cm4gVVJMKFVSTCgp
LCAid2Via2l0LWZha2UtdXJsOi8vIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSArICcv
JyArIHJlbGF0aXZlUGFydCk7Cit9CisKK1VSTCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICByZXR1cm4gVVJMKFVSTCgpLCAiZmls
ZTovLy8iICsgZmlsZVBhdGgpOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBVUkwmIHVybCkKK3sKKyAgICB0cyA8PCB1cmwuc3RyaW5nKCk7CisgICAg
cmV0dXJuIHRzOworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKFNPVVApCitzdGF0
aWMgYm9vbCBpc0lQdjRBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGF1dG8gY291
bnQgPSAwOworCisgICAgZm9yIChjb25zdCBhdXRvIG9jdGV0IDogc3RyaW5nLnNwbGl0QWxsb3dp
bmdFbXB0eUVudHJpZXMoJy4nKSkgeworICAgICAgICBpZiAoY291bnQgPj0gNCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IG9jdGV0Lmxl
bmd0aCgpOworICAgICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggPiAzKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIGF1dG8gdmFsdWUgPSAwOworICAgICAgICBmb3IgKGF1
dG8gaSA9IDB1OyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gZGln
aXQgPSBvY3RldFtpXTsKKworICAgICAgICAgICAgLy8gUHJvaGliaXQgbGVhZGluZyB6ZXJvZXMu
CisgICAgICAgICAgICBpZiAoZGlnaXQgPiAnOScgfHwgZGlnaXQgPCAoIWkgJiYgbGVuZ3RoID4g
MSA/ICcxJyA6ICcwJykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICB2YWx1ZSA9IDEwICogdmFsdWUgKyAoZGlnaXQgLSAnMCcpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKHZhbHVlID4gMjU1KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGNvdW50Kys7CisgICAgfQorCisgICAgcmV0dXJuIChjb3VudCA9PSA0KTsKK30KKworc3Rh
dGljIGJvb2wgaXNJUHY2QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBlbnVtIFNr
aXBTdGF0ZSB7IE5vbmUsIFdpbGxTa2lwLCBTa2lwcGluZywgU2tpcHBlZCwgRmluYWwgfTsKKyAg
ICBhdXRvIHNraXBTdGF0ZSA9IE5vbmU7CisgICAgYXV0byBjb3VudCA9IDA7CisKKyAgICBmb3Ig
KGNvbnN0IGF1dG8gaGV4dGV0IDogc3RyaW5nLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJzon
KSkgeworICAgICAgICBpZiAoY291bnQgPj0gOCB8fCBza2lwU3RhdGUgPT0gRmluYWwpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgYXV0byBsZW5ndGggPSBoZXh0
ZXQubGVuZ3RoKCk7CisgICAgICAgIGlmICghbGVuZ3RoKSB7CisgICAgICAgICAgICAvLyA6OiBt
YXkgYmUgdXNlZCBhbnl3aGVyZSB0byBza2lwIDEgdG8gOCBoZXh0ZXRzLCBidXQgb25seSBvbmNl
LgorICAgICAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBTa2lwcGVkKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBOb25lKQorICAg
ICAgICAgICAgICAgIHNraXBTdGF0ZSA9ICFjb3VudCA/IFdpbGxTa2lwIDogU2tpcHBpbmc7Cisg
ICAgICAgICAgICBlbHNlIGlmIChza2lwU3RhdGUgPT0gV2lsbFNraXApCisgICAgICAgICAgICAg
ICAgc2tpcFN0YXRlID0gU2tpcHBpbmc7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgc2tpcFN0YXRlID0gRmluYWw7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChza2lwU3RhdGUgPT0gV2lsbFNraXApCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBTa2lwcGluZykKKyAgICAgICAgICAg
IHNraXBTdGF0ZSA9IFNraXBwZWQ7CisKKyAgICAgICAgaWYgKGxlbmd0aCA+IDQpIHsKKyAgICAg
ICAgICAgIC8vIEFuIElQdjQgYWRkcmVzcyBtYXkgYmUgdXNlZCBpbiBwbGFjZSBvZiB0aGUgZmlu
YWwgdHdvIGhleHRldHMuCisgICAgICAgICAgICBpZiAoKHNraXBTdGF0ZSA9PSBOb25lICYmIGNv
dW50ICE9IDYpIHx8IChza2lwU3RhdGUgPT0gU2tpcHBlZCAmJiBjb3VudCA+PSA2KSB8fCAhaXNJ
UHY0QWRkcmVzcyhoZXh0ZXQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAgICAgc2tpcFN0YXRlID0gRmluYWw7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAoY29uc3QgYXV0byBjb2RlVW5pdCA6IGhleHRldC5jb2RlVW5p
dHMoKSkgeworICAgICAgICAgICAgLy8gSVB2NiBhbGxvd3MgbGVhZGluZyB6ZXJvZXMuCisgICAg
ICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChjb2RlVW5pdCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgY291bnQrKzsKKyAgICB9CisKKyAg
ICByZXR1cm4gKGNvdW50ID09IDggJiYgc2tpcFN0YXRlID09IE5vbmUpIHx8IHNraXBTdGF0ZSA9
PSBTa2lwcGVkIHx8IHNraXBTdGF0ZSA9PSBGaW5hbDsKK30KKworYm9vbCBVUkw6Omhvc3RJc0lQ
QWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCit7CisgICAgaWYgKGhvc3QuZmluZCgnOicpID09IG5v
dEZvdW5kKQorICAgICAgICByZXR1cm4gaXNJUHY0QWRkcmVzcyhob3N0KTsKKworICAgIHJldHVy
biBpc0lQdjZBZGRyZXNzKGhvc3QpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45NjQ2ZGExOTgzMDI0MWUwNTAzNzkxOGZlYWRlMzU0MTk4MjBlMDExCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmgKQEAgLTAsMCArMSwzOTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFVTRShDRikKK3R5cGVkZWYgY29uc3Qgc3Ry
dWN0IF9fQ0ZVUkwqIENGVVJMUmVmOworI2VuZGlmCisKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRl
IDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oPgorI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRBVElP
TikKK09CSkNfQ0xBU1MgTlNVUkw7CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBU
ZXh0U3RyZWFtOworCitjbGFzcyBVUkxUZXh0RW5jb2RpbmcgeworcHVibGljOgorICAgIHZpcnR1
YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldykgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgflVSTFRleHRFbmNvZGluZygpIHsgfTsKK307CisKK3N0cnVjdCBV
UkxIYXNoOworCitjbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIHsKK3B1YmxpYzoKKyAgICAv
LyBHZW5lcmF0ZXMgYSBVUkwgd2hpY2ggY29udGFpbnMgYSBudWxsIHN0cmluZy4KKyAgICBVUkwo
KSB7IGludmFsaWRhdGUoKTsgfQorCisgICAgZXhwbGljaXQgVVJMKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9
CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHN0cmlu
ZygpLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKworICAgIC8vIFJlc29sdmVzIHRoZSBy
ZWxhdGl2ZSBVUkwgd2l0aCB0aGUgZ2l2ZW4gYmFzZSBVUkwuIElmIHByb3ZpZGVkLCB0aGUKKyAg
ICAvLyBVUkxUZXh0RW5jb2RpbmcgaXMgdXNlZCB0byBlbmNvZGUgbm9uLUFTQ0lJIGNoYXJhY2Vy
cy4gVGhlIGJhc2UgVVJMIGNhbiBiZQorICAgIC8vIG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNh
c2UgdGhlIHJlbGF0aXZlIFVSTCB3aWxsIGJlIGludGVycHJldGVkIGFzCisgICAgLy8gYWJzb2x1
dGUuCisgICAgLy8gRklYTUU6IElmIHRoZSBiYXNlIFVSTCBpcyBpbnZhbGlkLCB0aGlzIGFsd2F5
cyBjcmVhdGVzIGFuIGludmFsaWQKKyAgICAvLyBVUkwuIEluc3RlYWQgSSB0aGluayBpdCB3b3Vs
ZCBiZSBiZXR0ZXIgdG8gdHJlYXQgYWxsIGludmFsaWQgYmFzZSBVUkxzCisgICAgLy8gdGhlIHNh
bWUgd2F5IHdlIHRyZWF0ZSBudWxsIGFuZCBlbXB0eSBiYXNlIFVSTHMuCisgICAgVVJMKGNvbnN0
IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5n
KiA9IG51bGxwdHIpOworCisgICAgc3RhdGljIFVSTCBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChj
b25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgVVJMIGZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgo
Y29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkg
Y29uc3Q7CisKKyAgICAvLyBGSVhNRTogVGhlIGFib3ZlIGZ1bmN0aW9ucyBzaG91bGQgYmUgaGFy
bW9uaXplZCBzbyB0aGF0IHBhc3NpbmcgYQorICAgIC8vIGJhc2Ugb2YgbnVsbCBvciB0aGUgZW1w
dHkgc3RyaW5nIGdpdmVzIHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUKKyAgICAvLyBzdGFuZGFyZCBT
dHJpbmcgY29uc3RydWN0b3IuCisKKyAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4gSGVscGZ1bCBv
bmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIFVSTCBvbiBhbm90aGVyCisgICAgLy8gdGhyZWFkLiBT
aW5jZSB0aGUgdW5kZXJseWluZyBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhl
cmUncworICAgIC8vIG5vIG90aGVyIHJlYXNvbiB0byBldmVyIHByZWZlciBpc29sYXRlZENvcHko
KSBvdmVyIHBsYWluIG9sZCBhc3NpZ25tZW50LgorICAgIFVSTCBpc29sYXRlZENvcHkoKSBjb25z
dDsKKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgeW91
IGNhbiBzZXQgdGhlIGhvc3QgYW5kIHBvcnQgZm9yIHRoZSBVUkwuCisgICAgLy8gTm9uLWhpZXJh
cmNoaWNhbCBVUkxzIGRvbid0IGhhdmUgYSBob3N0IGFuZCBwb3J0LgorICAgIGJvb2wgY2FuU2V0
SG9zdE9yUG9ydCgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KKworICAgIGJv
b2wgY2FuU2V0UGF0aG5hbWUoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9Cisg
ICAgYm9vbCBpc0hpZXJhcmNoaWNhbCgpIGNvbnN0OworCisgICAgY29uc3QgU3RyaW5nJiBzdHJp
bmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorCisgICAgU3RyaW5nIHN0cmluZ0NlbnRl
ckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGggPSAxMDI0KSBjb25zdDsKKworICAg
IFN0cmluZ1ZpZXcgcHJvdG9jb2woKSBjb25zdDsKKyAgICBTdHJpbmdWaWV3IGhvc3QoKSBjb25z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3Q7CisgICAgU3RyaW5n
IGhvc3RBbmRQb3J0KCkgY29uc3Q7CisgICAgU3RyaW5nIHByb3RvY29sSG9zdEFuZFBvcnQoKSBj
b25zdDsKKyAgICBTdHJpbmcgdXNlcigpIGNvbnN0OworICAgIFN0cmluZyBwYXNzKCkgY29uc3Q7
CisgICAgU3RyaW5nIHBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQo
KSBjb25zdDsKKyAgICBTdHJpbmcgcXVlcnkoKSBjb25zdDsKKyAgICBTdHJpbmcgZnJhZ21lbnRJ
ZGVudGlmaWVyKCkgY29uc3Q7CisgICAgYm9vbCBoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25z
dDsKKworICAgIGJvb2wgaGFzVXNlcm5hbWUoKSBjb25zdDsKKyAgICBib29sIGhhc1Bhc3N3b3Jk
KCkgY29uc3Q7CisgICAgYm9vbCBoYXNRdWVyeSgpIGNvbnN0OworICAgIGJvb2wgaGFzRnJhZ21l
bnQoKSBjb25zdDsKKyAgICBib29sIGhhc1BhdGgoKSBjb25zdDsKKworICAgIC8vIFVubGlrZSB1
c2VyKCkgYW5kIHBhc3MoKSwgdGhlc2UgZnVuY3Rpb25zIGRvbid0IGRlY29kZSBlc2NhcGUgc2Vx
dWVuY2VzLgorICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBhY2N1cmF0ZSByb3VuZC10cmlw
cGluZywgYmVjYXVzZSBlbmNvZGluZyBkb2Vzbid0IGVuY29kZSAnJScgY2hhcmFjdGVycy4KKyAg
ICBTdHJpbmcgZW5jb2RlZFVzZXIoKSBjb25zdDsKKyAgICBTdHJpbmcgZW5jb2RlZFBhc3MoKSBj
b25zdDsKKworICAgIFN0cmluZyBiYXNlQXNTdHJpbmcoKSBjb25zdDsKKworICAgIFN0cmluZyBm
aWxlU3lzdGVtUGF0aCgpIGNvbnN0OworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJy
ZW50IFVSTCdzIHByb3RvY29sIGlzIHRoZSBzYW1lIGFzIHRoZSBudWxsLQorICAgIC8vIHRlcm1p
bmF0ZWQgQVNDSUkgYXJndW1lbnQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGxvd2VyLWNhc2UuCisg
ICAgYm9vbCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25zdDsKKyAgICBib29sIHByb3RvY29s
SXMoU3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9vbCBwcm90b2NvbElzQmxvYigpIGNvbnN0IHsg
cmV0dXJuIHByb3RvY29sSXMoImJsb2IiKTsgfQorICAgIGJvb2wgcHJvdG9jb2xJc0RhdGEoKSBj
b25zdCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KKyAgICBib29sIHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSBjb25zdDsKKyAgICBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CisgICAg
Ym9vbCBpc0JsYW5rVVJMKCkgY29uc3Q7CisgICAgYm9vbCBjYW5ub3RCZUFCYXNlVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9jYW5ub3RCZUFCYXNlVVJMOyB9CisKKyAgICBib29sIGlzTWF0Y2hpbmdE
b21haW4oY29uc3QgU3RyaW5nJikgY29uc3Q7CisKKyAgICBib29sIHNldFByb3RvY29sKGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQg
cmVtb3ZlUG9ydCgpOworICAgIHZvaWQgc2V0UG9ydCh1bnNpZ25lZCBzaG9ydCk7CisKKyAgICAv
LyBJbnB1dCBpcyBsaWtlICJmb28uY29tIiBvciAiZm9vLmNvbTo4MDAwIi4KKyAgICB2b2lkIHNl
dEhvc3RBbmRQb3J0KGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCBzZXRVc2VyKGNvbnN0IFN0
cmluZyYpOworICAgIHZvaWQgc2V0UGFzcyhjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIElmIHlv
dSBwYXNzIGFuIGVtcHR5IHBhdGggZm9yIEhUVFAgb3IgSFRUUFMgVVJMcywgdGhlIHJlc3VsdGlu
ZyBwYXRoCisgICAgLy8gd2lsbCBiZSAiLyIuCisgICAgdm9pZCBzZXRQYXRoKGNvbnN0IFN0cmlu
ZyYpOworCisgICAgLy8gVGhlIHF1ZXJ5IG1heSBiZWdpbiB3aXRoIGEgcXVlc3Rpb24gbWFyaywg
b3IsIGlmIG5vdCwgb25lIHdpbGwgYmUgYWRkZWQKKyAgICAvLyBmb3IgeW91LiBTZXR0aW5nIHRo
ZSBxdWVyeSB0byB0aGUgZW1wdHkgc3RyaW5nIHdpbGwgbGVhdmUgYSAiPyIgaW4gdGhlCisgICAg
Ly8gVVJMICh3aXRoIG5vdGhpbmcgYWZ0ZXIgaXQpLiBUbyBjbGVhciB0aGUgcXVlcnksIHBhc3Mg
YSBudWxsIHN0cmluZy4KKyAgICB2b2lkIHNldFF1ZXJ5KGNvbnN0IFN0cmluZyYpOworCisgICAg
dm9pZCBzZXRGcmFnbWVudElkZW50aWZpZXIoU3RyaW5nVmlldyk7CisgICAgdm9pZCByZW1vdmVG
cmFnbWVudElkZW50aWZpZXIoKTsKKworICAgIHZvaWQgcmVtb3ZlUXVlcnlBbmRGcmFnbWVudElk
ZW50aWZpZXIoKTsKKworICAgIHN0YXRpYyBib29sIGhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3
KTsKKworICAgIHVuc2lnbmVkIHBhdGhTdGFydCgpIGNvbnN0OworICAgIHVuc2lnbmVkIHBhdGhF
bmQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdDsKKwor
ICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQor
CisjaWYgVVNFKENGKQorICAgIFVSTChDRlVSTFJlZik7CisgICAgUmV0YWluUHRyPENGVVJMUmVm
PiBjcmVhdGVDRlVSTCgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoU09VUCkKKyAgICBVUkwo
U291cFVSSSopOworICAgIEdVbmlxdWVQdHI8U291cFVSST4gY3JlYXRlU291cFVSSSgpIGNvbnN0
OworI2VuZGlmCisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBVUkwoTlNVUkwqKTsKKyAgICBv
cGVyYXRvciBOU1VSTCooKSBjb25zdDsKKyNlbmRpZgorI2lmZGVmIF9fT0JKQ19fCisgICAgb3Bl
cmF0b3IgTlNTdHJpbmcqKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KKyNlbmRpZgorCisj
aWZuZGVmIE5ERUJVRworICAgIHZvaWQgcHJpbnQoKSBjb25zdDsKKyNlbmRpZgorCisgICAgdGVt
cGxhdGUgPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBVUkwm
KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VVJM
PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBVUkxQYXJz
ZXI7CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgc3RhdGljIGJvb2wgcHJvdG9jb2xJcyhj
b25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7CisgICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9y
PGNoYXIsIDUxMj4mIGJ1ZmZlcikgY29uc3Q7CisgICAgdW5zaWduZWQgaG9zdFN0YXJ0KCkgY29u
c3Q7CisKKyAgICBmcmllbmQgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYpOworICAgIGZyaWVuZCBib29sIHByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKyAgICBmcmllbmQgYm9vbCBob3N0
c0FyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworCisgICAgU3RyaW5nIG1fc3RyaW5n
OworCisgICAgdW5zaWduZWQgbV9pc1ZhbGlkIDogMTsKKyAgICB1bnNpZ25lZCBtX3Byb3RvY29s
SXNJbkhUVFBGYW1pbHkgOiAxOworICAgIHVuc2lnbmVkIG1fY2Fubm90QmVBQmFzZVVSTCA6IDE7
CisKKyAgICAvLyBUaGlzIGlzIG91dCBvZiBvcmRlciB0byBhbGlnbiB0aGUgYml0cyBiZXR0ZXIu
IFRoZSBwb3J0IGlzIGFmdGVyIHRoZSBob3N0LgorICAgIHVuc2lnbmVkIG1fcG9ydExlbmd0aCA6
IDM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhQb3J0TGVuZ3RoID0gKDEgPDwg
MykgLSAxOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhTY2hlbWVMZW5ndGgg
PSAoMSA8PCAyNikgLSAxOworICAgIHVuc2lnbmVkIG1fc2NoZW1lRW5kIDogMjY7CisgICAgdW5z
aWduZWQgbV91c2VyU3RhcnQ7CisgICAgdW5zaWduZWQgbV91c2VyRW5kOworICAgIHVuc2lnbmVk
IG1fcGFzc3dvcmRFbmQ7CisgICAgdW5zaWduZWQgbV9ob3N0RW5kOworICAgIHVuc2lnbmVkIG1f
cGF0aEFmdGVyTGFzdFNsYXNoOworICAgIHVuc2lnbmVkIG1fcGF0aEVuZDsKKyAgICB1bnNpZ25l
ZCBtX3F1ZXJ5RW5kOworfTsKKworc3RhdGljX2Fzc2VydChzaXplb2YoVVJMKSA9PSBzaXplb2Yo
U3RyaW5nKSArIDggKiBzaXplb2YodW5zaWduZWQpLCAiVVJMIHNob3VsZCBzdGF5IHNtYWxsIik7
CisKK3RlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPgordm9pZCBVUkw6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9zdHJpbmc7Cit9CisKK3RlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPgorYm9vbCBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBVUkwm
IHVybCkKK3sKKyAgICBhdXRvIG9wdGlvbmFsVVJMID0gVVJMOjpkZWNvZGUoZGVjb2Rlcik7Cisg
ICAgaWYgKCFvcHRpb25hbFVSTCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVybCA9IFdU
Rk1vdmUoKm9wdGlvbmFsVVJMKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBTdHJpbmcgc3RyaW5nOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Ry
aW5nKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gVVJMKFVSTCgp
LCBzdHJpbmcpOworfQorCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nRnJh
Z21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3Qg
VVJMJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1
YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBob3N0
c0FyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworCitXVEZfRVhQT1JUX1BSSVZBVEUg
Y29uc3QgVVJMJiBibGFua1VSTCgpOworCisvLyBGdW5jdGlvbnMgdG8gZG8gVVJMIG9wZXJhdGlv
bnMgb24gc3RyaW5ncy4KKy8vIFRoZXNlIGFyZSBvcGVyYXRpb25zIHRoYXQgYXJlbid0IGZhc3Rl
ciBvbiBhIHBhcnNlZCBVUkwuCisvLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUg
VVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJl
IGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KKy8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRh
bnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25z
aWRlcmVkIHZhbGlkIGJ5IFVSTC4KKworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJ
cyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpOworV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwpOworV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwp
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25zdCBT
dHJpbmcmIHVybCk7CisKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0
cmluZ1ZpZXcgcHJvdG9jb2wpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcG9ydEFsbG93ZWQo
Y29uc3QgVVJMJik7IC8vIEJsYWNrbGlzdCBwb3J0cyB0aGF0IHNob3VsZCBuZXZlciBiZSB1c2Vk
IGZvciBXZWIgcmVzb3VyY2VzLgorCitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckRl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2xGb3JUZXN0aW5nKHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xlYXJEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZygpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1Zh
bGlkUHJvdG9jb2woY29uc3QgU3RyaW5nJik7CisKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
bWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCk7CisKKy8vIEZJWE1FOiBUaGlz
IGlzIGEgd3JvbmcgY29uY2VwdCB0byBleHBvc2UsIGRpZmZlcmVudCBwYXJ0cyBvZiBhIFVSTCBu
ZWVkIGRpZmZlcmVudCBlc2NhcGluZyBwZXIgdGhlIFVSTCBTdGFuZGFyZC4KK1dURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcm
KTsKKworLy8gSW5saW5lcy4KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEs
IGNvbnN0IFVSTCYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOwor
fQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBi
KQoreworICAgIHJldHVybiBhLnN0cmluZygpID09IGI7Cit9CisKK2lubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEgPT0g
Yi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEsIGNv
bnN0IFVSTCYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiLnN0cmluZygpOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQor
eworICAgIHJldHVybiBhLnN0cmluZygpICE9IGI7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEgIT0gYi5z
dHJpbmcoKTsKK30KKworLy8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBm
dW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxpbmluZworLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2
ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KKworaW5saW5l
IGJvb2wgVVJMOjppc051bGwoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5pc051bGwo
KTsKK30KKworaW5saW5lIGJvb2wgVVJMOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9zdHJpbmcuaXNFbXB0eSgpOworfQorCitpbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25z
dAoreworICAgIHJldHVybiBtX2lzVmFsaWQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6aGFzUGF0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRM
ZW5ndGg7Cit9CisKK2lubGluZSBib29sIFVSTDo6aGFzVXNlcm5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3VzZXJFbmQgPiBtX3VzZXJTdGFydDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpo
YXNQYXNzd29yZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFzc3dvcmRFbmQgPiAobV91c2Vy
RW5kICsgMSk7Cit9CisKK2lubGluZSBib29sIFVSTDo6aGFzUXVlcnkoKSBjb25zdAoreworICAg
IHJldHVybiBtX3F1ZXJ5RW5kID4gbV9wYXRoRW5kOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhh
c0ZyYWdtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxl
bmd0aCgpID4gbV9xdWVyeUVuZDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzSW5I
VFRQRmFtaWx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5
OworfQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoU3RhcnQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Cit9CisKK2lubGluZSB1bnNpZ25lZCBVUkw6
OnBhdGhFbmQoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhdGhFbmQ7Cit9CisKK2lubGluZSB1
bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cGF0aEFmdGVyTGFzdFNsYXNoOworfQorCitXVEZfRVhQT1JUX1BSSVZBVEUgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFVSTCYpOworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxVUkw+OwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0
czxVUkw+OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1VSTEhhc2guaCBiL1NvdXJjZS9XVEYvd3RmL1VSTEhhc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDJmYTNk
Y2NmNjYxMDBmYzg1MDg2NmVjMzU0N2EzYTg2ZGY5YmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvVVJMSGFzaC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBVUkxIYXNoX2gKKyNkZWZpbmUg
VVJMSGFzaF9oCisKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKworc3RydWN0IFVSTEhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IFVSTCYga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCktPmhh
c2goKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0
IFVSTCYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJpbmdIYXNoOjplcXVhbChhLnN0cmlu
ZygpLCBiLnN0cmluZygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKworLy8gVVJMSGFzaCBpcyB0aGUg
ZGVmYXVsdCBoYXNoIGZvciBTdHJpbmcKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFVS
TD4geworICAgIHVzaW5nIEhhc2ggPSBVUkxIYXNoOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SGFzaFRyYWl0czxVUkw+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFVSTD4geyB9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVSTEhhc2hfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjkwNDJmMTAzMjVmNjdlYzAyY2U5NzU2ZjQ5MWMzNzAzMzY5ZWJjYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKQEAgLTAsMCArMSwyOTI0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3Rm
L1VSTFBhcnNlci5oPgorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8bXV0ZXg+CisjaW5j
bHVkZSA8dW5pY29kZS91aWRuYS5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdXR5cGVzLmg+CisKK25h
bWVzcGFjZSBXVEYgeworCisjZGVmaW5lIFVSTF9QQVJTRVJfREVCVUdHSU5HIDAKKworI2lmIFVS
TF9QQVJTRVJfREVCVUdHSU5HCisjZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4uLikgV1RGTG9nQWx3
YXlzKF9fVkFfQVJHU19fKQorI2Vsc2UKKyNkZWZpbmUgVVJMX1BBUlNFUl9MT0coLi4uKQorI2Vu
ZGlmCisgICAgCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorY2xhc3MgQ29kZVBv
aW50SXRlcmF0b3IgeworcHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0
b3IoKSB7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGJlZ2luLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQpCisgICAgICAgIDogbV9i
ZWdpbihiZWdpbikKKyAgICAgICAgLCBtX2VuZChlbmQpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
JiBiZWdpbiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIGVuZCkKKyAgICAgICAgOiBDb2RlUG9p
bnRJdGVyYXRvcihiZWdpbi5tX2JlZ2luLCBlbmQubV9iZWdpbikKKyAgICB7CisgICAgICAgIEFT
U0VSVChlbmQubV9iZWdpbiA+PSBiZWdpbi5tX2JlZ2luKTsKKyAgICB9CisgICAgCisgICAgQUxX
QVlTX0lOTElORSBVQ2hhcjMyIG9wZXJhdG9yKigpIGNvbnN0OworICAgIEFMV0FZU19JTkxJTkUg
Q29kZVBvaW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKKworICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2JlZ2luID09IG90aGVyLm1fYmVnaW4KKyAgICAgICAgICAgICYm
IG1fZW5kID09IG90aGVyLm1fZW5kOworICAgIH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVy
YXRvciYgb3BlcmF0b3I9KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yJiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIG1fYmVnaW4gPSBvdGhlci5tX2JlZ2luOworICAgICAgICBtX2VuZCA9IG90aGVyLm1f
ZW5kOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBi
b29sIGF0RW5kKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2JlZ2luIDw9IG1fZW5k
KTsKKyAgICAgICAgcmV0dXJuIG1fYmVnaW4gPj0gbV9lbmQ7CisgICAgfQorICAgIAorICAgIEFM
V0FZU19JTkxJTkUgc2l6ZV90IGNvZGVVbml0c1NpbmNlKGNvbnN0IENoYXJhY3RlclR5cGUqIHJl
ZmVyZW5jZSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2JlZ2luID49IHJlZmVyZW5j
ZSk7CisgICAgICAgIHJldHVybiBtX2JlZ2luIC0gcmVmZXJlbmNlOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgc2l6ZV90IGNvZGVVbml0c1NpbmNlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb2RlVW5pdHNTaW5jZShvdGhl
ci5tX2JlZ2luKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIGNvbnN0IENoYXJhY3RlclR5
cGUqIG1fYmVnaW4geyBudWxscHRyIH07CisgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogbV9lbmQg
eyBudWxscHRyIH07Cit9OworCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIFVDaGFyMzIgQ29k
ZVBvaW50SXRlcmF0b3I8TENoYXI+OjpvcGVyYXRvciooKSBjb25zdAoreworICAgIEFTU0VSVCgh
YXRFbmQoKSk7CisgICAgcmV0dXJuICptX2JlZ2luOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNf
SU5MSU5FIGF1dG8gQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+OjpvcGVyYXRvcisrKCkgLT4gQ29k
ZVBvaW50SXRlcmF0b3ImCit7CisgICAgbV9iZWdpbisrOworICAgIHJldHVybiAqdGhpczsKK30K
KwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBVQ2hhcjMyIENvZGVQb2ludEl0ZXJhdG9yPFVD
aGFyPjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWF0RW5kKCkpOworICAgIFVD
aGFyMzIgYzsKKyAgICBVMTZfR0VUKG1fYmVnaW4sIDAsIDAsIG1fZW5kIC0gbV9iZWdpbiwgYyk7
CisgICAgcmV0dXJuIGM7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgYXV0byBDb2Rl
UG9pbnRJdGVyYXRvcjxVQ2hhcj46Om9wZXJhdG9yKysoKSAtPiBDb2RlUG9pbnRJdGVyYXRvciYK
K3sKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBzaXplX3QgbGVuZ3RoID0gbV9lbmQgLSBtX2Jl
Z2luOworICAgIFUxNl9GV0RfMShtX2JlZ2luLCBpLCBsZW5ndGgpOworICAgIG1fYmVnaW4gKz0g
aTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisgICAgCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lk
IGFwcGVuZENvZGVQb2ludChWZWN0b3I8VUNoYXI+JiBkZXN0aW5hdGlvbiwgVUNoYXIzMiBjb2Rl
UG9pbnQpCit7CisgICAgaWYgKFVfSVNfQk1QKGNvZGVQb2ludCkpIHsKKyAgICAgICAgZGVzdGlu
YXRpb24uYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjb2RlUG9pbnQpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBkZXN0aW5hdGlvbi5yZXNlcnZlQ2FwYWNpdHkoZGVzdGluYXRpb24u
c2l6ZSgpICsgMik7CisgICAgZGVzdGluYXRpb24udW5jaGVja2VkQXBwZW5kKFUxNl9MRUFEKGNv
ZGVQb2ludCkpOworICAgIGRlc3RpbmF0aW9uLnVuY2hlY2tlZEFwcGVuZChVMTZfVFJBSUwoY29k
ZVBvaW50KSk7Cit9CisKK2VudW0gVVJMQ2hhcmFjdGVyQ2xhc3MgeworICAgIFVzZXJJbmZvID0g
MHgxLAorICAgIERlZmF1bHQgPSAweDIsCisgICAgRm9yYmlkZGVuSG9zdCA9IDB4NCwKKyAgICBR
dWVyeVBlcmNlbnQgPSAweDgsCisgICAgU2xhc2hRdWVzdGlvbk9ySGFzaCA9IDB4MTAsCisgICAg
VmFsaWRTY2hlbWUgPSAweDIwLAorfTsKKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgY2hhcmFjdGVy
Q2xhc3NUYWJsZVsyNTZdID0geworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2Vu
dCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4MAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCwgLy8gMHgxCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDIKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MworICAg
IFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg0CisgICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDUKKyAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQsIC8vIDB4NgorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVy
Y2VudCwgLy8gMHg3CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAw
eDgKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0
LCAvLyAweDkKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAweEEKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4QgorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhDCisgICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHhE
CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEUKKyAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4RgorICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgxMAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1
ZXJ5UGVyY2VudCwgLy8gMHgxMQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2Vu
dCwgLy8gMHgxMgorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgx
MworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgxNAorICAgIFVz
ZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgxNQorICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgxNgorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFF1ZXJ5UGVyY2VudCwgLy8gMHgxNworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVy
Y2VudCwgLy8gMHgxOAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8g
MHgxOQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgxQQorICAg
IFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgxQgorICAgIFVzZXJJbmZv
IHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgxQworICAgIFVzZXJJbmZvIHwgRGVmYXVs
dCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgxRAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCwgLy8gMHgxRQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwg
Ly8gMHgxRgorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRl
bkhvc3QsIC8vICcgJworICAgIDAsIC8vICchJworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1
ZXJ5UGVyY2VudCwgLy8gJyInCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
IHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICcjJworICAgIDAsIC8v
ICckJworICAgIEZvcmJpZGRlbkhvc3QsIC8vICclJworICAgIDAsIC8vICcmJworICAgIDAsIC8v
ICdcJycKKyAgICAwLCAvLyAnKCcKKyAgICAwLCAvLyAnKScKKyAgICAwLCAvLyAnKicKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJysnCisgICAgMCwgLy8gJywnCisgICAgVmFsaWRTY2hlbWUsIC8vICct
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnLicKKyAgICBVc2VySW5mbyB8IFNsYXNoUXVlc3Rpb25P
ckhhc2ggfCBGb3JiaWRkZW5Ib3N0LCAvLyAnLycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzAnCisg
ICAgVmFsaWRTY2hlbWUsIC8vICcxJworICAgIFZhbGlkU2NoZW1lLCAvLyAnMicKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJzMnCisgICAgVmFsaWRTY2hlbWUsIC8vICc0JworICAgIFZhbGlkU2NoZW1l
LCAvLyAnNScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzYnCisgICAgVmFsaWRTY2hlbWUsIC8vICc3
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnOCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzknCisgICAg
VXNlckluZm8gfCBGb3JiaWRkZW5Ib3N0LCAvLyAnOicKKyAgICBVc2VySW5mbywgLy8gJzsnCisg
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8g
JzwnCisgICAgVXNlckluZm8sIC8vICc9JworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vICc+JworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFNsYXNoUXVlc3Rpb25Pckhhc2ggfCBGb3JiaWRkZW5Ib3N0LCAvLyAnPycKKyAgICBVc2VySW5m
byB8IEZvcmJpZGRlbkhvc3QsIC8vICdAJworICAgIFZhbGlkU2NoZW1lLCAvLyAnQScKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJ0InCisgICAgVmFsaWRTY2hlbWUsIC8vICdDJworICAgIFZhbGlkU2No
ZW1lLCAvLyAnRCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0UnCisgICAgVmFsaWRTY2hlbWUsIC8v
ICdGJworICAgIFZhbGlkU2NoZW1lLCAvLyAnRycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0gnCisg
ICAgVmFsaWRTY2hlbWUsIC8vICdJJworICAgIFZhbGlkU2NoZW1lLCAvLyAnSicKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJ0snCisgICAgVmFsaWRTY2hlbWUsIC8vICdMJworICAgIFZhbGlkU2NoZW1l
LCAvLyAnTScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ04nCisgICAgVmFsaWRTY2hlbWUsIC8vICdP
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnUCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1EnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdSJworICAgIFZhbGlkU2NoZW1lLCAvLyAnUycKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ1QnCisgICAgVmFsaWRTY2hlbWUsIC8vICdVJworICAgIFZhbGlkU2NoZW1lLCAv
LyAnVicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1cnCisgICAgVmFsaWRTY2hlbWUsIC8vICdYJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnWScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1onCisgICAgVXNl
ckluZm8gfCBGb3JiaWRkZW5Ib3N0LCAvLyAnWycKKyAgICBVc2VySW5mbyB8IFNsYXNoUXVlc3Rp
b25Pckhhc2ggfCBGb3JiaWRkZW5Ib3N0LCAvLyAnXFwnCisgICAgVXNlckluZm8gfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAnXScKKyAgICBVc2VySW5mbywgLy8gJ14nCisgICAgMCwgLy8gJ18nCisgICAg
VXNlckluZm8gfCBEZWZhdWx0LCAvLyAnYCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2EnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdiJworICAgIFZhbGlkU2NoZW1lLCAvLyAnYycKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ2QnCisgICAgVmFsaWRTY2hlbWUsIC8vICdlJworICAgIFZhbGlkU2NoZW1lLCAv
LyAnZicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2cnCisgICAgVmFsaWRTY2hlbWUsIC8vICdoJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnaScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2onCisgICAgVmFs
aWRTY2hlbWUsIC8vICdrJworICAgIFZhbGlkU2NoZW1lLCAvLyAnbCcKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJ20nCisgICAgVmFsaWRTY2hlbWUsIC8vICduJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
bycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdxJworICAg
IFZhbGlkU2NoZW1lLCAvLyAncicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3MnCisgICAgVmFsaWRT
Y2hlbWUsIC8vICd0JworICAgIFZhbGlkU2NoZW1lLCAvLyAndScKKyAgICBWYWxpZFNjaGVtZSwg
Ly8gJ3YnCisgICAgVmFsaWRTY2hlbWUsIC8vICd3JworICAgIFZhbGlkU2NoZW1lLCAvLyAneCcK
KyAgICBWYWxpZFNjaGVtZSwgLy8gJ3knCisgICAgVmFsaWRTY2hlbWUsIC8vICd6JworICAgIFVz
ZXJJbmZvIHwgRGVmYXVsdCwgLy8gJ3snCisgICAgVXNlckluZm8sIC8vICd8JworICAgIFVzZXJJ
bmZvIHwgRGVmYXVsdCwgLy8gJ30nCisgICAgMCwgLy8gJ34nCisgICAgUXVlcnlQZXJjZW50LCAv
LyAweDdGCisgICAgUXVlcnlQZXJjZW50LCAvLyAweDgwCisgICAgUXVlcnlQZXJjZW50LCAvLyAw
eDgxCisgICAgUXVlcnlQZXJjZW50LCAvLyAweDgyCisgICAgUXVlcnlQZXJjZW50LCAvLyAweDgz
CisgICAgUXVlcnlQZXJjZW50LCAvLyAweDg0CisgICAgUXVlcnlQZXJjZW50LCAvLyAweDg1Cisg
ICAgUXVlcnlQZXJjZW50LCAvLyAweDg2CisgICAgUXVlcnlQZXJjZW50LCAvLyAweDg3CisgICAg
UXVlcnlQZXJjZW50LCAvLyAweDg4CisgICAgUXVlcnlQZXJjZW50LCAvLyAweDg5CisgICAgUXVl
cnlQZXJjZW50LCAvLyAweDhBCisgICAgUXVlcnlQZXJjZW50LCAvLyAweDhCCisgICAgUXVlcnlQ
ZXJjZW50LCAvLyAweDhDCisgICAgUXVlcnlQZXJjZW50LCAvLyAweDhECisgICAgUXVlcnlQZXJj
ZW50LCAvLyAweDhFCisgICAgUXVlcnlQZXJjZW50LCAvLyAweDhGCisgICAgUXVlcnlQZXJjZW50
LCAvLyAweDkwCisgICAgUXVlcnlQZXJjZW50LCAvLyAweDkxCisgICAgUXVlcnlQZXJjZW50LCAv
LyAweDkyCisgICAgUXVlcnlQZXJjZW50LCAvLyAweDkzCisgICAgUXVlcnlQZXJjZW50LCAvLyAw
eDk0CisgICAgUXVlcnlQZXJjZW50LCAvLyAweDk1CisgICAgUXVlcnlQZXJjZW50LCAvLyAweDk2
CisgICAgUXVlcnlQZXJjZW50LCAvLyAweDk3CisgICAgUXVlcnlQZXJjZW50LCAvLyAweDk4Cisg
ICAgUXVlcnlQZXJjZW50LCAvLyAweDk5CisgICAgUXVlcnlQZXJjZW50LCAvLyAweDlBCisgICAg
UXVlcnlQZXJjZW50LCAvLyAweDlCCisgICAgUXVlcnlQZXJjZW50LCAvLyAweDlDCisgICAgUXVl
cnlQZXJjZW50LCAvLyAweDlECisgICAgUXVlcnlQZXJjZW50LCAvLyAweDlFCisgICAgUXVlcnlQ
ZXJjZW50LCAvLyAweDlGCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEEwCisgICAgUXVlcnlQZXJj
ZW50LCAvLyAweEExCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEEyCisgICAgUXVlcnlQZXJjZW50
LCAvLyAweEEzCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEE0CisgICAgUXVlcnlQZXJjZW50LCAv
LyAweEE1CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEE2CisgICAgUXVlcnlQZXJjZW50LCAvLyAw
eEE3CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEE4CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEE5
CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEFBCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEFCCisg
ICAgUXVlcnlQZXJjZW50LCAvLyAweEFDCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEFECisgICAg
UXVlcnlQZXJjZW50LCAvLyAweEFFCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEFGCisgICAgUXVl
cnlQZXJjZW50LCAvLyAweEIwCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEIxCisgICAgUXVlcnlQ
ZXJjZW50LCAvLyAweEIyCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEIzCisgICAgUXVlcnlQZXJj
ZW50LCAvLyAweEI0CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEI1CisgICAgUXVlcnlQZXJjZW50
LCAvLyAweEI2CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEI3CisgICAgUXVlcnlQZXJjZW50LCAv
LyAweEI4CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEI5CisgICAgUXVlcnlQZXJjZW50LCAvLyAw
eEJBCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEJCCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEJD
CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEJECisgICAgUXVlcnlQZXJjZW50LCAvLyAweEJFCisg
ICAgUXVlcnlQZXJjZW50LCAvLyAweEJGCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEMwCisgICAg
UXVlcnlQZXJjZW50LCAvLyAweEMxCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEMyCisgICAgUXVl
cnlQZXJjZW50LCAvLyAweEMzCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEM0CisgICAgUXVlcnlQ
ZXJjZW50LCAvLyAweEM1CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEM2CisgICAgUXVlcnlQZXJj
ZW50LCAvLyAweEM3CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEM4CisgICAgUXVlcnlQZXJjZW50
LCAvLyAweEM5CisgICAgUXVlcnlQZXJjZW50LCAvLyAweENBCisgICAgUXVlcnlQZXJjZW50LCAv
LyAweENCCisgICAgUXVlcnlQZXJjZW50LCAvLyAweENDCisgICAgUXVlcnlQZXJjZW50LCAvLyAw
eENECisgICAgUXVlcnlQZXJjZW50LCAvLyAweENFCisgICAgUXVlcnlQZXJjZW50LCAvLyAweENG
CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEQwCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEQxCisg
ICAgUXVlcnlQZXJjZW50LCAvLyAweEQyCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEQzCisgICAg
UXVlcnlQZXJjZW50LCAvLyAweEQ0CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEQ1CisgICAgUXVl
cnlQZXJjZW50LCAvLyAweEQ2CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEQ3CisgICAgUXVlcnlQ
ZXJjZW50LCAvLyAweEQ4CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEQ5CisgICAgUXVlcnlQZXJj
ZW50LCAvLyAweERBCisgICAgUXVlcnlQZXJjZW50LCAvLyAweERCCisgICAgUXVlcnlQZXJjZW50
LCAvLyAweERDCisgICAgUXVlcnlQZXJjZW50LCAvLyAweERECisgICAgUXVlcnlQZXJjZW50LCAv
LyAweERFCisgICAgUXVlcnlQZXJjZW50LCAvLyAweERGCisgICAgUXVlcnlQZXJjZW50LCAvLyAw
eEUwCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEUxCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEUy
CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEUzCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEU0Cisg
ICAgUXVlcnlQZXJjZW50LCAvLyAweEU1CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEU2CisgICAg
UXVlcnlQZXJjZW50LCAvLyAweEU3CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEU4CisgICAgUXVl
cnlQZXJjZW50LCAvLyAweEU5CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEVBCisgICAgUXVlcnlQ
ZXJjZW50LCAvLyAweEVCCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEVDCisgICAgUXVlcnlQZXJj
ZW50LCAvLyAweEVECisgICAgUXVlcnlQZXJjZW50LCAvLyAweEVFCisgICAgUXVlcnlQZXJjZW50
LCAvLyAweEVGCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEYwCisgICAgUXVlcnlQZXJjZW50LCAv
LyAweEYxCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEYyCisgICAgUXVlcnlQZXJjZW50LCAvLyAw
eEYzCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEY0CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEY1
CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEY2CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEY3Cisg
ICAgUXVlcnlQZXJjZW50LCAvLyAweEY4CisgICAgUXVlcnlQZXJjZW50LCAvLyAweEY5CisgICAg
UXVlcnlQZXJjZW50LCAvLyAweEZBCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEZCCisgICAgUXVl
cnlQZXJjZW50LCAvLyAweEZDCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEZECisgICAgUXVlcnlQ
ZXJjZW50LCAvLyAweEZFCisgICAgUXVlcnlQZXJjZW50LCAvLyAweEZGCit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzQzBD
b250cm9sKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0gMHgx
RjsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0
aWMgYm9vbCBpc0MwQ29udHJvbE9yU3BhY2UoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0
dXJuIGNoYXJhY3RlciA8PSAweDIwOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVGFiT3JOZXdsaW5lKENoYXJhY3RlclR5cGUg
Y2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0gMHhEICYmIGNoYXJhY3RlciA+PSAweDkg
JiYgY2hhcmFjdGVyICE9IDB4QiAmJiBjaGFyYWN0ZXIgIT0gMHhDOyB9Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5TaW1wbGVF
bmNvZGVTZXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4
N0UgfHwgaXNDMENvbnRyb2woY2hhcmFjdGVyKTsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luRGVmYXVsdEVuY29kZVNldChD
aGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3RSB8fCBjaGFy
YWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBEZWZhdWx0OyB9Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5Vc2VySW5mb0Vu
Y29kZVNldChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3
RSB8fCBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBVc2VySW5mbzsgfQordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1Bl
cmNlbnRPck5vbkFTQ0lJKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiAhaXNBU0NJ
SShjaGFyYWN0ZXIpIHx8IGNoYXJhY3RlciA9PSAnJSc7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNTbGFzaFF1ZXN0aW9uT3JI
YXNoKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0gJ1xcJyAm
JiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBTbGFzaFF1ZXN0aW9uT3JIYXNoOyB9
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBi
b29sIGlzVmFsaWRTY2hlbWVDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0
dXJuIGNoYXJhY3RlciA8PSAneicgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYg
VmFsaWRTY2hlbWU7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KENoYXJhY3RlclR5cGUg
Y2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0gJ10nICYmIGNoYXJhY3RlckNsYXNzVGFi
bGVbY2hhcmFjdGVyXSAmIEZvcmJpZGRlbkhvc3Q7IH0KK0FMV0FZU19JTkxJTkUgc3RhdGljIGJv
b2wgc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZSh1aW50OF90IGJ5dGUsIGNvbnN0IGJvb2wm
IHVybElzU3BlY2lhbCkKK3sKKyAgICBpZiAoY2hhcmFjdGVyQ2xhc3NUYWJsZVtieXRlXSAmIFF1
ZXJ5UGVyY2VudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGJ5dGUgPT0gJ1wnJyAm
JiB1cmxJc1NwZWNpYWwpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldChVQ2hhciBjKQorewor
ICAgIHJldHVybiBXVEY6OmlzSW5Vc2VySW5mb0VuY29kZVNldChjKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgVVJMUGFyc2VyOjpSZXBvcnRTeW50YXhWaW9sYXRpb24g
cmVwb3J0U3ludGF4VmlvbGF0aW9uPgorQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YWR2
YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlv
blBvc2l0aW9uKQoreworICAgICsraXRlcmF0b3I7CisgICAgd2hpbGUgKFVOTElLRUxZKCFpdGVy
YXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7CisgICAgICAgIGlm
IChyZXBvcnRTeW50YXhWaW9sYXRpb24gPT0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXMpCisg
ICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3Np
dGlvbik7CisgICAgICAgICsraXRlcmF0b3I7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OnRha2VzVHdvQWR2YW5jZXNVbnRpbEVu
ZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBpZiAo
aXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgIGlm
IChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxD
aGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7CisgICAg
cmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFyc2VyOjppc1dpbmRvd3NEcml2ZUxldHRl
cihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBpZiAo
aXRlcmF0b3IuYXRFbmQoKSB8fCAhaXNBU0NJSUFscGhhKCppdGVyYXRvcikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoVU5MSUtFTFkoKml0ZXJhdG9yID09ICd8JykpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSB2b2lkIFVSTFBh
cnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyIGNvZGVQb2ludCkKK3sKKyAgICBBU1NF
UlQoaXNBU0NJSShjb2RlUG9pbnQpKTsKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhW
aW9sYXRpb24pKQorICAgICAgICBtX2FzY2lpQnVmZmVyLmFwcGVuZChjb2RlUG9pbnQpOworfQor
CitBTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0
IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKFVOTElLRUxZKG1f
ZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY2hh
cmFjdGVycywgbGVuZ3RoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K3ZvaWQgVVJMUGFyc2VyOjphcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIEFTU0VSVChpc1dpbmRvd3NEcml2
ZUxldHRlcihpdGVyYXRvcikpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoKml0ZXJhdG9yKTsK
KyAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKKyAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwor
ICAgIEFTU0VSVCgqaXRlcmF0b3IgPT0gJzonIHx8ICppdGVyYXRvciA9PSAnfCcpOworICAgIGlm
ICgqaXRlcmF0b3IgPT0gJ3wnKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwor
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKK30K
KworYm9vbCBVUkxQYXJzZXI6OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVSTCYg
YmFzZSkKK3sKKyAgICBpZiAoYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCA8IGJhc2UubV9z
dHJpbmcubGVuZ3RoKCkpOworICAgICAgICBpZiAoYmFzZS5tX3N0cmluZy5pczhCaXQoKSkgewor
ICAgICAgICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJz
OCgpOworICAgICAgICAgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGMoYmVnaW4gKyBiYXNl
Lm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewor
ICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczE2KCk7
CisgICAgICAgICAgICBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9o
b3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVu
Z3RoKCkpOworICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7CisgICAg
ICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wgVVJM
UGFyc2VyOjpzaG91bGRDb3B5RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiBpdGVyYXRvcikKK3sKKyAgICBpZiAoIWlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKKyAgICBpZiAoaXRlcmF0b3Iu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgYWR2YW5jZShpdGVyYXRvcik7Cisg
ICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biAhaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCppdGVyYXRvcik7Cit9CisKK3N0YXRpYyB2b2lkIHBl
cmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSwgVmVjdG9yPExDaGFyPiYgYnVmZmVyKQorewor
ICAgIGJ1ZmZlci5hcHBlbmQoJyUnKTsKKyAgICBidWZmZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9B
U0NJSUhleERpZ2l0KGJ5dGUpKTsKKyAgICBidWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJ
SUhleERpZ2l0KGJ5dGUpKTsKK30KKwordm9pZCBVUkxQYXJzZXI6OnBlcmNlbnRFbmNvZGVCeXRl
KHVpbnQ4X3QgYnl0ZSkKK3sKKyAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwor
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyUnKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHVw
cGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKK30KKworY29uc3QgY2hhciByZXBs
YWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZFsxMF0gPSAiJUVGJUJGJUJEIjsKK2Nv
bnN0IHNpemVfdCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCA9
IHNpemVvZihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCkgLSAxOworCit0
ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+CitBTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UGVyY2VudEVuY29kZShjb25z
dCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7CisgICAgQVNT
RVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKKyAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVyYXRv
cjsKKyAgICBpZiAoTElLRUxZKGlzQVNDSUkoY29kZVBvaW50KSkpIHsKKyAgICAgICAgaWYgKFVO
TElLRUxZKGlzSW5Db2RlU2V0KGNvZGVQb2ludCkpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBvaW50
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvZGVQ
b2ludCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShp
c0luQ29kZVNldChjb2RlUG9pbnQpLCAiaXNJbkNvZGVTZXQgc2hvdWxkIGFsd2F5cyByZXR1cm4g
dHJ1ZSBmb3Igbm9uLUFTQ0lJIGNoYXJhY3RlcnMiKTsKKyAgICBzeW50YXhWaW9sYXRpb24oaXRl
cmF0b3IpOworICAgIAorICAgIGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgewor
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNl
bnRFbmNvZGVkLCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgdWludDhfdCBidWZmZXJbVThfTUFY
X0xFTkdUSF07CisgICAgaW50MzJfdCBvZmZzZXQgPSAwOworICAgIFU4X0FQUEVORF9VTlNBRkUo
YnVmZmVyLCBvZmZzZXQsIGNvZGVQb2ludCk7CisgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwg
b2Zmc2V0OyArK2kpCisgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ1ZmZlcltpXSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIHZvaWQgVVJM
UGFyc2VyOjp1dGY4UXVlcnlFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGl0ZXJhdG9yKQoreworICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7CisgICAg
VUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRlcmF0b3I7CisgICAgaWYgKExJS0VMWShpc0FTQ0lJKGNv
ZGVQb2ludCkpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShzaG91bGRQZXJjZW50RW5jb2RlUXVl
cnlCeXRlKGNvZGVQb2ludCwgbV91cmxJc1NwZWNpYWwpKSkgeworICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQ
b2ludCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihj
b2RlUG9pbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHN5bnRheFZpb2xh
dGlvbihpdGVyYXRvcik7CisgICAgCisgICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUihjb2RlUG9p
bnQpKSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0ZXJV
VEY4UGVyY2VudEVuY29kZWQsIHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVk
TGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ4X3QgYnVmZmVyW1U4
X01BWF9MRU5HVEhdOworICAgIGludDMyX3Qgb2Zmc2V0ID0gMDsKKyAgICBVOF9BUFBFTkRfVU5T
QUZFKGJ1ZmZlciwgb2Zmc2V0LCBjb2RlUG9pbnQpOworICAgIGZvciAoaW50MzJfdCBpID0gMDsg
aSA8IG9mZnNldDsgKytpKSB7CisgICAgICAgIGF1dG8gYnl0ZSA9IGJ1ZmZlcltpXTsKKyAgICAg
ICAgaWYgKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwp
KQorICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnl0ZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYnl0ZSk7CisgICAgfQorfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVURjhR
dWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYg
ZW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQorewor
ICAgIGF1dG8gZW5jb2RlZCA9IGVuY29kaW5nLmVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmll
dyhzb3VyY2UuZGF0YSgpLCBzb3VyY2Uuc2l6ZSgpKSk7CisgICAgYXV0byogZGF0YSA9IGVuY29k
ZWQuZGF0YSgpOworICAgIHNpemVfdCBsZW5ndGggPSBlbmNvZGVkLnNpemUoKTsKKyAgICAKKyAg
ICBpZiAoIWxlbmd0aCA9PSAhaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICBzeW50YXhWaW9s
YXRpb24oaXRlcmF0b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNpemVf
dCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIEFTU0VSVCgh
aXRlcmF0b3IuYXRFbmQoKSk7CisgICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGRhdGFbaV07CisgICAg
ICAgIGlmIChVTkxJS0VMWShieXRlICE9ICppdGVyYXRvcikpIHsKKyAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3Vy
bElzU3BlY2lhbCkpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihieXRlKTsKKyAgICAgICAgKytpdGVyYXRvcjsKKyAgICB9CisgICAgd2hpbGUgKCFpdGVyYXRv
ci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpCisgICAgICAgICsraXRlcmF0
b3I7CisgICAgQVNTRVJUKChpID09IGxlbmd0aCkgPT0gaXRlcmF0b3IuYXRFbmQoKSk7CisgICAg
Zm9yICg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhW
aW9sYXRpb24pOworICAgICAgICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOworICAgICAgICBpZiAo
c2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCisgICAg
ICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShieXRlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKKyAgICB9Cit9CisKK3N0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNj
aGVtZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgZnRwUG9ydCA9IDIxOworICAgIHN0
YXRpYyBjb25zdCB1aW50MTZfdCBnb3BoZXJQb3J0ID0gNzA7CisgICAgc3RhdGljIGNvbnN0IHVp
bnQxNl90IGh0dHBQb3J0ID0gODA7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBzUG9y
dCA9IDQ0MzsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qgd3NQb3J0ID0gODA7CisgICAgc3Rh
dGljIGNvbnN0IHVpbnQxNl90IHdzc1BvcnQgPSA0NDM7CisgICAgCisgICAgYXV0byBsZW5ndGgg
PSBzY2hlbWUubGVuZ3RoKCk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKKyAgICBjYXNlICd3JzoKKyAgICAg
ICAgc3dpdGNoIChsZW5ndGgpIHsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgaWYgKHNj
aGVtZVsxXSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0dXJuIHdzUG9ydDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGlm
IChzY2hlbWVbMV0gPT0gJ3MnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykK
KyAgICAgICAgICAgICAgICByZXR1cm4gd3NzUG9ydDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICBjYXNlICdoJzoKKyAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAgICAg
ICAgY2FzZSA0OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKKyAgICAgICAgICAg
ICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09
ICdwJykKKyAgICAgICAgICAgICAgICByZXR1cm4gaHR0cFBvcnQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICBpZiAoc2NoZW1l
WzFdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKKyAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzRd
ID09ICdzJykKKyAgICAgICAgICAgICAgICByZXR1cm4gaHR0cHNQb3J0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICBjYXNlICdnJzoKKyAgICAgICAgaWYgKGxl
bmd0aCA9PSA2CisgICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0gJ28nCisgICAgICAgICAgICAm
JiBzY2hlbWVbMl0gPT0gJ3AnCisgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCisgICAg
ICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ2UnCisgICAgICAgICAgICAmJiBzY2hlbWVbNV0gPT0g
J3InKQorICAgICAgICAgICAgcmV0dXJuIGdvcGhlclBvcnQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgY2FzZSAnZic6CisgICAgICAgIGlmIChsZW5ndGggPT0gMworICAgICAg
ICAgICAgJiYgc2NoZW1lWzFdID09ICd0JworICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdw
JykKKyAgICAgICAgICAgIHJldHVybiBmdHBQb3J0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQor
fQorCitlbnVtIGNsYXNzIFNjaGVtZSB7CisgICAgV1MsCisgICAgV1NTLAorICAgIEZpbGUsCisg
ICAgRlRQLAorICAgIEdvcGhlciwKKyAgICBIVFRQLAorICAgIEhUVFBTLAorICAgIE5vblNwZWNp
YWwKK307CisKK0FMV0FZU19JTkxJTkUgc3RhdGljIFNjaGVtZSBzY2hlbWUoU3RyaW5nVmlldyBz
Y2hlbWUpCit7CisgICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7CisgICAgaWYgKCFs
ZW5ndGgpCisgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgc3dpdGNoIChz
Y2hlbWVbMF0pIHsKKyAgICBjYXNlICdmJzoKKyAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAg
ICAgICAgY2FzZSAzOgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKKyAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnKQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hl
bWU6OkZUUDsKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAg
IGNhc2UgNDoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ2knCisgICAgICAgICAgICAg
ICAgJiYgc2NoZW1lWzJdID09ICdsJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAn
ZScpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6RmlsZTsKKyAgICAgICAgICAgIHJl
dHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICB9CisgICAgY2FzZSAnZyc6CisgICAg
ICAgIGlmIChsZW5ndGggPT0gNgorICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJworICAg
ICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJworICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09
ICdoJworICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdlJworICAgICAgICAgICAgJiYgc2No
ZW1lWzVdID09ICdyJykKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkdvcGhlcjsKKyAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICBjYXNlICdoJzoKKyAgICAgICAgc3dp
dGNoIChsZW5ndGgpIHsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsx
XSA9PSAndCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCisgICAgICAgICAg
ICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKKyAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1l
OjpIVFRQOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAg
Y2FzZSA1OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKKyAgICAgICAgICAgICAg
ICAmJiBzY2hlbWVbMl0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdw
JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAncycpCisgICAgICAgICAgICAgICAg
cmV0dXJuIFNjaGVtZTo6SFRUUFM7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVj
aWFsOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3Bl
Y2lhbDsKKyAgICAgICAgfQorICAgIGNhc2UgJ3cnOgorICAgICAgICBzd2l0Y2ggKGxlbmd0aCkg
eworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpXUzsKKyAgICAgICAgICAgIHJldHVybiBTY2hl
bWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGlmIChzY2hlbWVb
MV0gPT0gJ3MnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gU2NoZW1lOjpXU1M7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpO
b25TcGVjaWFsOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6
Tm9uU3BlY2lhbDsKKyAgICAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBTY2hl
bWU6Ok5vblNwZWNpYWw7CisgICAgfQorfQorCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFy
c2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAg
ICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIGlmICghaXNBU0NJSUFscGhhKHNjaGVtZVswXSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsgKytp
KSB7CisgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKHNjaGVtZVtpXSkgfHwgc2NoZW1l
W2ldID09ICcrJyB8fCBzY2hlbWVbaV0gPT0gJy0nIHx8IHNjaGVtZVtpXSA9PSAnLicpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICByZXR1cm4gc2NoZW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Cit9CisKK2Jvb2wg
VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWVBcmcpCit7Cisg
ICAgcmV0dXJuIHNjaGVtZShzY2hlbWVBcmcpICE9IFNjaGVtZTo6Tm9uU3BlY2lhbDsKK30KKwor
ZW51bSBjbGFzcyBVUkxQYXJzZXI6OlVSTFBhcnQgeworICAgIFNjaGVtZUVuZCwKKyAgICBVc2Vy
U3RhcnQsCisgICAgVXNlckVuZCwKKyAgICBQYXNzd29yZEVuZCwKKyAgICBIb3N0RW5kLAorICAg
IFBvcnRFbmQsCisgICAgUGF0aEFmdGVyTGFzdFNsYXNoLAorICAgIFBhdGhFbmQsCisgICAgUXVl
cnlFbmQsCit9OworCitzaXplX3QgVVJMUGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQoY29uc3Qg
VVJMJiB1cmwsIFVSTFBhcnQgcGFydCkKK3sKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAgICBjYXNl
IFVSTFBhcnQ6OlF1ZXJ5RW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fcXVlcnlFbmQ7CisgICAg
Y2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEVuZDsKKyAg
ICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaDoKKyAgICAgICAgcmV0dXJuIHVybC5t
X3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6CisgICAgICAg
IHJldHVybiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aDsKKyAgICBjYXNlIFVSTFBh
cnQ6Okhvc3RFbmQ6CisgICAgICAgIHJldHVybiB1cmwubV9ob3N0RW5kOworICAgIGNhc2UgVVJM
UGFydDo6UGFzc3dvcmRFbmQ6CisgICAgICAgIHJldHVybiB1cmwubV9wYXNzd29yZEVuZDsKKyAg
ICBjYXNlIFVSTFBhcnQ6OlVzZXJFbmQ6CisgICAgICAgIHJldHVybiB1cmwubV91c2VyRW5kOwor
ICAgIGNhc2UgVVJMUGFydDo6VXNlclN0YXJ0OgorICAgICAgICByZXR1cm4gdXJsLm1fdXNlclN0
YXJ0OworICAgIGNhc2UgVVJMUGFydDo6U2NoZW1lRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1f
c2NoZW1lRW5kOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
MDsKK30KKwordm9pZCBVUkxQYXJzZXI6OmNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8
PSBzdHJpbmcubGVuZ3RoKCkpOworICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOworICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpCisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoc3RyaW5nLmNoYXJhY3Rl
cnM4KCksIGxlbmd0aCk7CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBVQ2hhciBjID0gY2hhcmFjdGVyc1tpXTsK
KyAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzQVNDSUkoYykp
OworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpj
b3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQgcGFydCwgY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBVUkxUZXh0RW5j
b2RpbmcqJiBub25VVEY4UXVlcnlFbmNvZGluZykKK3sKKyAgICBzeW50YXhWaW9sYXRpb24oaXRl
cmF0b3IpOworCisgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOworICAgIGNvcHlBU0NJSVN0cmlu
Z1VudGlsKGJhc2UubV9zdHJpbmcsIHVybExlbmd0aFVudGlsUGFydChiYXNlLCBwYXJ0KSk7Cisg
ICAgc3dpdGNoIChwYXJ0KSB7CisgICAgY2FzZSBVUkxQYXJ0OjpRdWVyeUVuZDoKKyAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IGJhc2UubV9xdWVyeUVuZDsKKyAgICAgICAgRkFMTFRIUk9VR0g7
CisgICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgorICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBi
YXNlLm1fcGF0aEVuZDsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBVUkxQYXJ0OjpQ
YXRoQWZ0ZXJMYXN0U2xhc2g6CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
YmFzZS5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2Fz
ZSBVUkxQYXJ0OjpQb3J0RW5kOgorICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBiYXNlLm1f
cG9ydExlbmd0aDsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBVUkxQYXJ0OjpIb3N0
RW5kOgorICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKKyAgICAgICAg
RkFMTFRIUk9VR0g7CisgICAgY2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKKyAgICAgICAgbV91
cmwubV9wYXNzd29yZEVuZCA9IGJhc2UubV9wYXNzd29yZEVuZDsKKyAgICAgICAgRkFMTFRIUk9V
R0g7CisgICAgY2FzZSBVUkxQYXJ0OjpVc2VyRW5kOgorICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBiYXNlLm1fdXNlckVuZDsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBVUkxQYXJ0
OjpVc2VyU3RhcnQ6CisgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gYmFzZS5tX3VzZXJTdGFy
dDsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBVUkxQYXJ0OjpTY2hlbWVFbmQ6Cisg
ICAgICAgIG1fdXJsLm1faXNWYWxpZCA9IGJhc2UubV9pc1ZhbGlkOworICAgICAgICBtX3VybC5t
X3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBiYXNlLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsK
KyAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBiYXNlLm1fc2NoZW1lRW5kOworICAgIH0KKyAg
ICBzd2l0Y2ggKHNjaGVtZShTdHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpLCBtX3VybC5t
X3NjaGVtZUVuZCkpKSB7CisgICAgY2FzZSBTY2hlbWU6OldTOgorICAgIGNhc2UgU2NoZW1lOjpX
U1M6CisgICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKKyAgICAgICAgbV91
cmxJc1NwZWNpYWwgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTY2hlbWU6OkZp
bGU6CisgICAgICAgIG1fdXJsSXNGaWxlID0gdHJ1ZTsKKyAgICAgICAgRkFMTFRIUk9VR0g7Cisg
ICAgY2FzZSBTY2hlbWU6OkZUUDoKKyAgICBjYXNlIFNjaGVtZTo6R29waGVyOgorICAgIGNhc2Ug
U2NoZW1lOjpIVFRQOgorICAgIGNhc2UgU2NoZW1lOjpIVFRQUzoKKyAgICAgICAgbV91cmxJc1Nw
ZWNpYWwgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTY2hlbWU6Ok5vblNwZWNp
YWw6CisgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gZmFsc2U7CisgICAgICAgIG5vblVURjhRdWVy
eUVuY29kaW5nID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgZG90QVNDSUlDb2RlWzJdID0g
eycyJywgJ2UnfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19J
TkxJTkUgYm9vbCBVUkxQYXJzZXI6OmlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sKKyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCpjID09ICcuJykgeworICAgICAgICBhZHZhbmNlPENoYXJh
Y3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4g
Yy5hdEVuZCgpIHx8IGlzU2xhc2hRdWVzdGlvbk9ySGFzaCgqYyk7CisgICAgfQorICAgIGlmICgq
YyAhPSAnJScpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5
cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkgfHwg
KmMgIT0gZG90QVNDSUlDb2RlWzBdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5j
ZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICBpZiAo
Yy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHRvQVNDSUlMb3dlcigq
YykgPT0gZG90QVNDSUlDb2RlWzFdKSB7CisgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwg
UmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgICAgIHJldHVybiBjLmF0RW5kKCkg
fHwgaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSBib29s
IFVSTFBhcnNlcjo6aXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiBjKQoreworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoKmMgPT0gJy4nKSB7CisgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwg
UmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgICAgIHJldHVybiBpc1NpbmdsZURv
dFBhdGhTZWdtZW50KGMpOworICAgIH0KKyAgICBpZiAoKmMgIT0gJyUnKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRp
b246Ok5vPihjKTsKKyAgICBpZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29kZVswXSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0
U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkg
eworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6
Tm8+KGMpOworICAgICAgICByZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgordm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKK3sKKyAgICBBU1NFUlQoaXNTaW5nbGVEb3RQYXRo
U2VnbWVudChjKSk7CisgICAgaWYgKCpjID09ICcuJykgeworICAgICAgICBhZHZhbmNlKGMpOwor
ICAgICAgICBpZiAoIWMuYXRFbmQoKSkgeworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAq
YyA9PSAnXFwnKQorICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKCpjID09ICclJyk7CisgICAgICAgIGFk
dmFuY2UoYyk7CisgICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOworICAgICAg
ICBhZHZhbmNlKGMpOworICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJ
SUNvZGVbMV0pOworICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICBpZiAoIWMuYXRFbmQoKSkg
eworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQorICAgICAgICAgICAg
ICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgQVNTRVJU
KCpjID09ICc/JyB8fCAqYyA9PSAnIycpOworICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVEb3VibGVE
b3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKK3sKKyAg
ICBBU1NFUlQoaXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSk7CisgICAgaWYgKCpjID09ICcuJykK
KyAgICAgICAgYWR2YW5jZShjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKCpjID09ICcl
Jyk7CisgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNv
ZGVbMF0pOworICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2Vy
KCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOworICAgICAgICBhZHZhbmNlKGMpOworICAgIH0KKyAg
ICBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7Cit9CisKK2Jvb2wgVVJMUGFyc2VyOjpz
aG91bGRQb3BQYXRoKHVuc2lnbmVkIG5ld1BhdGhBZnRlckxhc3RTbGFzaCkKK3sKKyAgICBBU1NF
UlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOworICAgIGlmICghbV91cmxJc0ZpbGUpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgQVNTRVJUKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
IDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKKyAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4g
Y29tcG9uZW50VG9Qb3AoJm1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSwgJm1f
YXNjaWlCdWZmZXJbMF0gKyBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCk7CisgICAgaWYgKG5l
d1BhdGhBZnRlckxhc3RTbGFzaCA9PSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5n
dGggKyAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGNvbXBvbmVudFRvUG9wKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFVSTFBhcnNlcjo6cG9w
UGF0aCgpCit7CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICBpZiAo
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3Bv
cnRMZW5ndGggKyAxKSB7CisgICAgICAgIGF1dG8gbmV3UGF0aEFmdGVyTGFzdFNsYXNoID0gbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggLSAxOworICAgICAgICBpZiAobV9hc2NpaUJ1ZmZlcltu
ZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdID09ICcvJykKKyAgICAgICAgICAgIG5ld1BhdGhBZnRlckxh
c3RTbGFzaC0tOworICAgICAgICB3aGlsZSAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID4gbV91cmwu
bV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICYmIG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFm
dGVyTGFzdFNsYXNoXSAhPSAnLycpCisgICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gt
LTsKKyAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoKys7CisgICAgICAgIGlmIChzaG91bGRQ
b3BQYXRoKG5ld1BhdGhBZnRlckxhc3RTbGFzaCkpCisgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG5ld1BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICB9CisgICAgbV9hc2Np
aUJ1ZmZlci5yZXNpemUobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OnN5bnRheFZpb2xhdGlv
bihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7Cisg
ICAgaWYgKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKQorICAgICAgICByZXR1cm47CisgICAgbV9k
aWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOworICAgIAorICAgIEFTU0VSVChtX2FzY2lpQnVm
ZmVyLmlzRW1wdHkoKSk7CisgICAgc2l6ZV90IGNvZGVVbml0c1RvQ29weSA9IGl0ZXJhdG9yLmNv
ZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlwZSo+KG1faW5w
dXRCZWdpbikpOworICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVVbml0c1RvQ29weSA8PSBtX2lucHV0
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtX2FzY2lpQnVmZmVyLnJlc2VydmVDYXBhY2l0eShtX2lu
cHV0U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVVbml0
c1RvQ29weTsgKytpKSB7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKG1faW5wdXRTdHJpbmdbaV0p
KTsKKyAgICAgICAgbV9hc2NpaUJ1ZmZlci51bmNoZWNrZWRBcHBlbmQobV9pbnB1dFN0cmluZ1tp
XSk7CisgICAgfQorfQorCit2b2lkIFVSTFBhcnNlcjo6ZmFpbHVyZSgpCit7CisgICAgbV91cmwu
aW52YWxpZGF0ZSgpOworICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wgVVJMUGFyc2VyOjpjaGVja0xv
Y2FsaG9zdENvZGVQb2ludChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0
b3IsIFVDaGFyMzIgY29kZVBvaW50KQoreworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8IHRv
QVNDSUlMb3dlcigqaXRlcmF0b3IpICE9IGNvZGVQb2ludCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4o
aXRlcmF0b3IpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OmlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENv
ZGVQb2ludChpdGVyYXRvciwgJ2wnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
Y2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdvJykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYycpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChp
dGVyYXRvciwgJ2EnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2Nh
bGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdsJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnaCcpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwg
J28nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2Rl
UG9pbnQoaXRlcmF0b3IsICdzJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNo
ZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAndCcpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7Cit9CisKK2Jvb2wgVVJMUGFyc2VyOjpp
c0xvY2FsaG9zdChTdHJpbmdWaWV3IHZpZXcpCit7CisgICAgaWYgKHZpZXcuaXM4Qml0KCkpCisg
ICAgICAgIHJldHVybiBpc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPih2aWV3
LmNoYXJhY3RlcnM4KCksIHZpZXcuY2hhcmFjdGVyczgoKSArIHZpZXcubGVuZ3RoKCkpKTsKKyAg
ICByZXR1cm4gaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4odmlldy5jaGFy
YWN0ZXJzMTYoKSwgdmlldy5jaGFyYWN0ZXJzMTYoKSArIHZpZXcubGVuZ3RoKCkpKTsKK30KKwor
QUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXcoc2l6ZV90
IHN0YXJ0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRh
eFZpb2xhdGlvbikpIHsKKyAgICAgICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1fYXNjaWlC
dWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZlci5k
YXRhKCkgKyBzdGFydCwgbGVuZ3RoKTsKKyAgICB9CisgICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3Ro
IDw9IG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1faW5w
dXRTdHJpbmcpLnN1YnN0cmluZyhzdGFydCwgbGVuZ3RoKTsKK30KKworQUxXQVlTX0lOTElORSBV
Q2hhciBVUkxQYXJzZXI6OnBhcnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlvbikKK3sKKyAgICBp
ZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQorICAgICAgICByZXR1cm4gbV9h
c2NpaUJ1ZmZlcltwb3NpdGlvbl07CisgICAgcmV0dXJuIG1faW5wdXRTdHJpbmdbcG9zaXRpb25d
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSBz
aXplX3QgVVJMUGFyc2VyOjpjdXJyZW50UG9zaXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5
bnRheFZpb2xhdGlvbikpCisgICAgICAgIHJldHVybiBtX2FzY2lpQnVmZmVyLnNpemUoKTsKKyAg
ICAKKyAgICByZXR1cm4gaXRlcmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBDaGFyYWN0ZXJUeXBlKj4obV9pbnB1dEJlZ2luKSk7Cit9CisKK1VSTFBhcnNlcjo6VVJM
UGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4
dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNvZGluZykKKyAgICA6IG1faW5wdXRTdHJpbmcoaW5w
dXQpCit7CisgICAgaWYgKGlucHV0LmlzTnVsbCgpKSB7CisgICAgICAgIGlmIChiYXNlLmlzVmFs
aWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwpIHsKKyAgICAgICAgICAgIG1fdXJsID0g
YmFzZTsKKyAgICAgICAgICAgIG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoaW5wdXQuaXM4Qml0KCkp
IHsKKyAgICAgICAgbV9pbnB1dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKKyAgICAgICAg
cGFyc2UoaW5wdXQuY2hhcmFjdGVyczgoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVURjhR
dWVyeUVuY29kaW5nKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1
dC5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczE2KCksIGlu
cHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgfQorCisgICAg
QVNTRVJUKCFtX3VybC5tX2lzVmFsaWQKKyAgICAgICAgfHwgbV9kaWRTZWVTeW50YXhWaW9sYXRp
b24gPT0gKG1fdXJsLnN0cmluZygpICE9IGlucHV0KQorICAgICAgICB8fCAoaW5wdXQuaXNBbGxT
cGVjaWFsQ2hhcmFjdGVyczxpc0MwQ29udHJvbE9yU3BhY2U+KCkKKyAgICAgICAgICAgICYmIG1f
dXJsLm1fc3RyaW5nID09IGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpKSk7Cisg
ICAgQVNTRVJUKGludGVybmFsVmFsdWVzQ29uc2lzdGVudChtX3VybCkpOworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyAgICBpZiAoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSB7CisgICAgICAgIC8v
IEZvcmNlIGEgc3ludGF4IHZpb2xhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3VyZSB3
ZSBnZXQgdGhlIHNhbWUgcmVzdWx0LgorICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJp
bmcoIiAiLCBpbnB1dCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgVVJM
IHBhcnNlZCA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkp
CisgICAgICAgICAgICBBU1NFUlQoYWxsVmFsdWVzRXF1YWwocGFyc2VyLnJlc3VsdCgpLCBtX3Vy
bCkpOworICAgIH0KKyNlbmRpZgorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgordm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqIGlucHV0LCBjb25z
dCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5n
KiBub25VVEY4UXVlcnlFbmNvZGluZykKK3sKKyAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2luZyBV
UkwgPCVzPiBiYXNlIDwlcz4iLCBTdHJpbmcoaW5wdXQsIGxlbmd0aCkudXRmOCgpLmRhdGEoKSwg
YmFzZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBtX3VybCA9IHsgfTsKKyAgICBBU1NF
UlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOworCisgICAgVmVjdG9yPFVDaGFyPiBxdWVyeUJ1
ZmZlcjsKKworICAgIHVuc2lnbmVkIGVuZEluZGV4ID0gbGVuZ3RoOworICAgIHdoaWxlIChVTkxJ
S0VMWShlbmRJbmRleCAmJiBpc0MwQ29udHJvbE9yU3BhY2UoaW5wdXRbZW5kSW5kZXggLSAxXSkp
KSB7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPihpbnB1dCwgaW5wdXQpKTsKKyAgICAgICAgZW5kSW5kZXgtLTsKKyAgICB9CisgICAgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYyhpbnB1dCwgaW5wdXQgKyBlbmRJbmRleCk7
CisgICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYXV0aG9yaXR5T3JIb3N0QmVn
aW47CisgICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gcXVlcnlCZWdpbjsKKyAg
ICB3aGlsZSAoVU5MSUtFTFkoIWMuYXRFbmQoKSAmJiBpc0MwQ29udHJvbE9yU3BhY2UoKmMpKSkg
eworICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICsrYzsKKyAgICB9CisgICAg
YXV0byBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlID0gYzsKKworICAgIGVudW0gY2xhc3MgU3Rh
dGUgOiB1aW50OF90IHsKKyAgICAgICAgU2NoZW1lU3RhcnQsCisgICAgICAgIFNjaGVtZSwKKyAg
ICAgICAgTm9TY2hlbWUsCisgICAgICAgIFNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5LAorICAg
ICAgICBQYXRoT3JBdXRob3JpdHksCisgICAgICAgIFJlbGF0aXZlLAorICAgICAgICBSZWxhdGl2
ZVNsYXNoLAorICAgICAgICBTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcywKKyAgICAgICAgU3BlY2lh
bEF1dGhvcml0eUlnbm9yZVNsYXNoZXMsCisgICAgICAgIEF1dGhvcml0eU9ySG9zdCwKKyAgICAg
ICAgSG9zdCwKKyAgICAgICAgRmlsZSwKKyAgICAgICAgRmlsZVNsYXNoLAorICAgICAgICBGaWxl
SG9zdCwKKyAgICAgICAgUGF0aFN0YXJ0LAorICAgICAgICBQYXRoLAorICAgICAgICBDYW5ub3RC
ZUFCYXNlVVJMUGF0aCwKKyAgICAgICAgVVRGOFF1ZXJ5LAorICAgICAgICBOb25VVEY4UXVlcnks
CisgICAgICAgIEZyYWdtZW50LAorICAgIH07CisKKyNkZWZpbmUgTE9HX1NUQVRFKHgpIFVSTF9Q
QVJTRVJfTE9HKCJTdGF0ZSAlcywgY29kZSBwb2ludCAlYywgcGFyc2VkIGRhdGEgPCVzPiBzaXpl
ICV6dSIsIHgsICpjLCBwYXJzZWREYXRhVmlldygwLCBjdXJyZW50UG9zaXRpb24oYykpLnV0Zjgo
KS5kYXRhKCksIGN1cnJlbnRQb3NpdGlvbihjKSkKKyNkZWZpbmUgTE9HX0ZJTkFMX1NUQVRFKHgp
IFVSTF9QQVJTRVJfTE9HKCJGaW5hbCBTdGF0ZTogJXMiLCB4KQorCisgICAgU3RhdGUgc3RhdGUg
PSBTdGF0ZTo6U2NoZW1lU3RhcnQ7CisgICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAg
aWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCpjKSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihjKTsKKyAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBjYXNlIFN0YXRlOjpT
Y2hlbWVTdGFydDoKKyAgICAgICAgICAgIExPR19TVEFURSgiU2NoZW1lU3RhcnQiKTsKKyAgICAg
ICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoKmMpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGlzQVNDSUlVcHBlcigqYykpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIo
KmMpKTsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgICAgIGlmIChj
LmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwor
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKKyAgICAgICAgICAg
ICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpTY2hlbWU7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpOb1NjaGVtZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRl
OjpTY2hlbWU6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlNjaGVtZSIpOworICAgICAgICAgICAg
aWYgKGlzVmFsaWRTY2hlbWVDaGFyYWN0ZXIoKmMpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93
ZXIoKmMpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJzonKSB7CisgICAgICAgICAg
ICAgICAgdW5zaWduZWQgc2NoZW1lRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAg
ICAgICAgIGlmIChzY2hlbWVFbmQgPiBVUkw6Om1heFNjaGVtZUxlbmd0aCkgeworICAgICAgICAg
ICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBzY2hlbWVF
bmQ7CisgICAgICAgICAgICAgICAgU3RyaW5nVmlldyB1cmxTY2hlbWUgPSBwYXJzZWREYXRhVmll
dygwLCBtX3VybC5tX3NjaGVtZUVuZCk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignOicpOworICAgICAgICAgICAgICAgIHN3aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RmlsZToKKyAgICAgICAgICAgICAgICAgICAg
bV91cmxJc1NwZWNpYWwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtX3VybElzRmlsZSA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7CisgICAgICAg
ICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBTY2hlbWU6OldTOgorICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpXU1M6
CisgICAgICAgICAgICAgICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBpZiAoYmFzZS5wcm90b2NvbElzKHVybFNjaGVtZSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM7CisgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFA6
CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFBTOgorICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RlRQOgorICAg
ICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpHb3BoZXI6CisgICAgICAgICAgICAgICAgICAgIG1f
dXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJvdG9j
b2xJcyh1cmxTY2hlbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFz
aGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgorICAgICAgICAgICAg
ICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gbWF5YmVTbGFzaCA9IGM7CisgICAgICAgICAgICAgICAgICAgIGFkdmFuY2UobWF5
YmVTbGFzaCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbWF5YmVTbGFzaC5hdEVuZCgpICYm
ICptYXliZVNsYXNoID09ICcvJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG1heWJlU2xhc2g7
CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoT3JBdXRob3JpdHk7
CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoKmMgPT0gJy8nKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0
YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICAgICAgbV91
cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owor
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2Vy
U3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2Nhbm5vdEJlQUJhc2VVUkwg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Q2Fubm90QmVB
QmFzZVVSTFBhdGg7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7Cisg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAg
YyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgaWYgKGMu
YXRFbmQoKSkgeworICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKKyAgICAgICAgICAgICAgICBjID0g
YmVnaW5BZnRlckNvbnRyb2xBbmRTcGFjZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpOb1NjaGVtZToKKyAgICAgICAgICAgIExPR19TVEFU
RSgiTm9TY2hlbWUiKTsKKyAgICAgICAgICAgIGlmICghYmFzZS5pc1ZhbGlkKCkgfHwgKGJhc2Uu
bV9jYW5ub3RCZUFCYXNlVVJMICYmICpjICE9ICcjJykpIHsKKyAgICAgICAgICAgICAgICBmYWls
dXJlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpjID09ICcjJykgeworICAgICAgICAg
ICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25V
VEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21l
bnQ7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOworICAgICAgICAg
ICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmICghYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKKyAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVt
ZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignOicpOworICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0
eToKKyAgICAgICAgICAgIExPR19TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsK
KyAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAg
ICAgICBpZiAoYy5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBpZiAoKmMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXM7CisgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRp
dmVTbGFzaDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OlJlbGF0aXZlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlBh
dGhPckF1dGhvcml0eToKKyAgICAgICAgICAgIExPR19TVEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7
CisgICAgICAgICAgICBpZiAoKmMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0
eU9ySG9zdDsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIGF1
dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcv
Jyk7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24o
YykgLSAxOworICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwor
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6CisgICAgICAgICAg
ICBMT0dfU1RBVEUoIlJlbGF0aXZlIik7CisgICAgICAgICAgICBzd2l0Y2ggKCpjKSB7CisgICAg
ICAgICAgICBjYXNlICcvJzoKKyAgICAgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZVNsYXNoOworICAgICAgICAgICAgICAgICsrYzsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJz8nOgorICAgICAgICAgICAg
ICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhR
dWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7
CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlF
bmNvZGluZykgeworICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAgICAgICAg
ICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMn
KTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAg
ICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhBZnRl
ckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAgIGlm
IChjdXJyZW50UG9zaXRpb24oYykgJiYgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMp
IC0gMSkgIT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBj
dXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoK
KyAgICAgICAgICAgIExPR19TVEFURSgiUmVsYXRpdmVTbGFzaCIpOworICAgICAgICAgICAgaWYg
KCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgKytjOworICAgICAg
ICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywg
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoIjovLyIsIDMpOworICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNo
ZXM7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
dXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0
eU9ySG9zdEJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRF
bmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMTsKKyAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgorICAgICAg
ICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcyIpOworICAgICAgICAgICAg
aWYgKExJS0VMWSgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBpZiAoTElLRUxZKCFjLmF0
RW5kKCkgJiYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCpjID09ICdcXCcpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNo
ZXM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhv
cml0eUlnbm9yZVNsYXNoZXM6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRob3Jp
dHlJZ25vcmVTbGFzaGVzIik7CisgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdc
XCcpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAg
ICAgKytjOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Vz
ZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpBdXRob3JpdHlPckhvc3Q7CisgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVn
aW4gPSBjOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
U3RhdGU6OkF1dGhvcml0eU9ySG9zdDoKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAg
ICBMT0dfU1RBVEUoIkF1dGhvcml0eU9ySG9zdCIpOworICAgICAgICAgICAgICAgIGlmICgqYyA9
PSAnQCcpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsYXN0QXQgPSBjOworICAgICAgICAg
ICAgICAgICAgICBhdXRvIGZpbmRMYXN0QXQgPSBjOworICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoIWZpbmRMYXN0QXQuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgVVJMX1BB
UlNFUl9MT0coIkZpbmRpbmcgbGFzdCBAOiAlYyIsICpmaW5kTGFzdEF0KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgqZmluZExhc3RBdCA9PSAnQCcpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGFzdEF0ID0gZmluZExhc3RBdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNTbGFzaCA9ICpmaW5kTGFzdEF0ID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmZp
bmRMYXN0QXQgPT0gJ1xcJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8
fCAqZmluZExhc3RBdCA9PSAnPycgfHwgKmZpbmRMYXN0QXQgPT0gJyMnKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgKytmaW5kTGFz
dEF0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBhcnNlQXV0
aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJl
Z2luLCBsYXN0QXQpKTsKKyAgICAgICAgICAgICAgICAgICAgYyA9IGxhc3RBdDsKKyAgICAgICAg
ICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JI
b3N0QmVnaW4gPSBjOworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIb3N0Owor
ICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYm9vbCBpc1NsYXNoID0gKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9
PSAnXFwnKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8fCAqYyA9PSAnPycgfHwgKmMg
PT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYyk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobV91cmxJc1NwZWNpYWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFz
c3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJy
ZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChpdGVyYXRvcikpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCFpc1NsYXNoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtX3VybElzU3BlY2lhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJy
ZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJKCpjKSkKKyAgICAgICAgICAgICAgICAgICAgbV9ob3N0
SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVlOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAg
ICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU3RhdGU6Okhvc3Q6CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9H
X1NUQVRFKCJIb3N0Iik7CisgICAgICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAn
PycgfHwgKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5k
UG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdp
biwgYykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo
aXNQZXJjZW50T3JOb25BU0NJSSgqYykpCisgICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1Bl
cmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAg
ICB9IHdoaWxlICghYy5hdEVuZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0YXRlOjpGaWxlOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlIik7CisgICAgICAgICAg
ICBzd2l0Y2ggKCpjKSB7CisgICAgICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAg
ICAgICAgY2FzZSAnLyc6CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGVTbGFzaDsKKyAgICAgICAgICAg
ICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICc/JzoK
KyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgaWYg
KGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5v
blVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignPycpOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vPyIsIDQp
OworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
dXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMjsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29k
aW5nKSB7CisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJyMnOgorICAgICAgICAgICAgICAg
IHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkg
JiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKKyAgICAgICAgICAgICAgICAgICAgY29weVVS
TFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29k
aW5nKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoIi8vLyMiLCA0KTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQg
PSBjdXJyZW50UG9zaXRpb24oYykgLSAyOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9w
YXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdt
ZW50OworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAg
ICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUi
KSAmJiBzaG91bGRDb3B5RmlsZVVSTChjKSkKKyAgICAgICAgICAgICAgICAgICAgY29weVVSTFBh
cnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4UXVl
cnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyIsIDMpOworICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
U3RhdGU6OkZpbGVTbGFzaDoKKyAgICAgICAgICAgIExPR19TVEFURSgiRmlsZVNsYXNoIik7Cisg
ICAgICAgICAgICBpZiAoTElLRUxZKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkgeworICAgICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnXFwnKSkKKyAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgICAgIG1fdXJs
Lm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIG1fdXJs
Lm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsK
KyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlSG9zdDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7CisgICAgICAgICAgICBt
X3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAgICBt
X3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1faG9z
dEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKKyAgICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgeworICAgICAg
ICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBh
dGg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6Cisg
ICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlSG9zdCIpOwor
ICAgICAgICAgICAgICAgIGlmIChpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGJvb2wgd2luZG93c1F1aXJrID0gdGFrZXNUd29BZHZhbmNlc1VudGlsRW5k
KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBj
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhv
cml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyaykg
eworICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9z
dEJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRo
b3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvd3NRdWlyayB8fCBhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQod2luZG93c1F1aXJrIHx8IHBhcnNlZERhdGFW
aWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJz8nKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCIvPyIsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsr
YzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2Rpbmcp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMp
IC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChVTkxJS0VMWSgqYyA9PSAnIycpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoIi8jIiwgMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3Vy
cmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNMb2Nh
bGhvc3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9u
KGMpIC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZl
ci5zaHJpbmsobV91cmwubV9wYXNzd29yZEVuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRo
U3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCisgICAgICAgICAgICAg
ICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICArK2M7CisgICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpQYXRoU3RhcnQ6CisgICAgICAgICAgICBMT0dfU1RB
VEUoIlBhdGhTdGFydCIpOworICAgICAgICAgICAgaWYgKCpjICE9ICcvJyAmJiAqYyAhPSAnXFwn
KSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0YXRlOjpQYXRoOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoIik7CisgICAgICAgICAg
ICBpZiAoKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkgeworICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkK
KyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoY3VycmVudFBvc2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3Np
dGlvbihjKSAtIDEpID09ICcvJykpIHsKKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNE
b3VibGVEb3RQYXRoU2VnbWVudChjKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICBjb25zdW1lRG91YmxlRG90UGF0aFNlZ21l
bnQoYyk7CisgICAgICAgICAgICAgICAgICAgIHBvcFBhdGgoKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpKSkgeworICAgICAgICAgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVTaW5nbGVEb3RQYXRo
U2VnbWVudChjKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCpjID09ICc/JykgeworICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7CisgICAgICAgICAgICAgICAgKytjOworICAg
ICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAgICAgICAg
ICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIG1f
dXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luRGVmYXVsdEVuY29kZVNldD4oYyk7
CisgICAgICAgICAgICArK2M7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0
ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6CisgICAgICAgICAgICBMT0dfU1RBVEUoIkNhbm5vdEJl
QUJhc2VVUkxQYXRoIik7CisgICAgICAgICAgICBpZiAoKmMgPT0gJz8nKSB7CisgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAg
ICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7CisgICAgICAgICAgICAgICAg
ICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpO
b25VVEY4UXVlcnk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0g
JyMnKSB7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9u
KGMpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7
CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKCpjID09ICcvJykgeworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVT
ZXQ+KGMpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpVVEY4UXVlcnk6CisgICAgICAgICAgICBMT0df
U1RBVEUoIlVURjhRdWVyeSIpOworICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gPT0gQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAgICAgICAgICBpZiAoKmMgPT0g
JyMnKSB7CisgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVCghbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgdXRmOFF1ZXJ5RW5jb2RlKGMpOworICAgICAg
ICAgICAgKytjOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6Ok5vblVU
RjhRdWVyeToKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIk5v
blVURjhRdWVyeSIpOworICAgICAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOworICAgICAgICAgICAgICAgIGlmICgqYyA9
PSAnIycpIHsKKyAgICAgICAgICAgICAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVm
ZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBhcHBlbmRDb2RlUG9pbnQocXVlcnlCdWZmZXIsICpjKTsKKyAg
ICAgICAgICAgICAgICBhZHZhbmNlKGMsIHF1ZXJ5QmVnaW4pOworICAgICAgICAgICAgfSB3aGls
ZSAoIWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6
RnJhZ21lbnQ6CisgICAgICAgICAgICBVUkxfUEFSU0VSX0xPRygiU3RhdGUgRnJhZ21lbnQiKTsK
KyAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwor
ICAgICAgICAgICAgKytjOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6CisgICAg
ICAgIExPR19GSU5BTF9TVEFURSgiU2NoZW1lU3RhcnQiKTsKKyAgICAgICAgaWYgKCFjdXJyZW50
UG9zaXRpb24oYykgJiYgYmFzZS5pc1ZhbGlkKCkgJiYgIWJhc2UubV9jYW5ub3RCZUFCYXNlVVJM
KSB7CisgICAgICAgICAgICBtX3VybCA9IGJhc2U7CisgICAgICAgICAgICBtX3VybC5yZW1vdmVG
cmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBmYWlsdXJlKCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0YXRlOjpTY2hlbWU6
CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiU2NoZW1lIik7CisgICAgICAgIGZhaWx1cmUoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RhdGU6Ok5vU2NoZW1lOgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIk5vU2NoZW1lIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6CisgICAg
ICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKKyAgICAg
ICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhR
dWVyeUVuY29kaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0
aG9yaXR5OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOworICAg
ICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQpOworICAgICAgICBBU1NFUlQobV91cmwubV91
c2VyU3RhcnQgPT0gY3VycmVudFBvc2l0aW9uKGMpKTsKKyAgICAgICAgQVNTRVJUKHBhcnNlZERh
dGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7CisgICAgICAgIG1fdXJsLm1f
dXNlclN0YXJ0LS07CisgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OworICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAg
ICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSAwOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1f
dXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6UmVsYXRp
dmU6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiUmVsYXRpdmUiKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgor
ICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKKyAgICAgICAgY29weVVS
TFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rp
bmcpOworICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3Ro
ICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNo
ZXM6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsK
KyAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAg
IG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX3Bh
c3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAg
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAg
ICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczoKKyAgICAgICAgTE9HX0ZJTkFM
X1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcyIpOworICAgICAgICBmYWlsdXJl
KCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6Cisg
ICAgICAgIExPR19GSU5BTF9TVEFURSgiQXV0aG9yaXR5T3JIb3N0Iik7CisgICAgICAgIG1fdXJs
Lm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAg
ICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgIGlmIChh
dXRob3JpdHlPckhvc3RCZWdpbi5hdEVuZCgpKSB7CisgICAgICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICB9IGVs
c2UgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgeworICAgICAg
ICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKSB7CisgICAgICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsK
KyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3Vy
bC5tX3BvcnRMZW5ndGggKyAxOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOwor
ICAgICAgICB9CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9w
YXRoRW5kOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpIb3N0OgorICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIkhvc3QiKTsKKyAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9z
dEJlZ2luKSkgeworICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkgeworICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwor
ICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9w
b3J0TGVuZ3RoICsgMTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3VybC5tX3BhdGhF
bmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7CisgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0
YXRlOjpGaWxlOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGUiKTsKKyAgICAgICAgaWYg
KGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgICAg
ICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOworICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8iLCAzKTsK
KyAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAg
ICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsK
KyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCAr
IDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
OworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKKyAgICAgICAgTE9H
X0ZJTkFMX1NUQVRFKCJGaWxlU2xhc2giKTsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwor
ICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSArIDE7CisgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7CisgICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICBpZiAoY29weUJh
c2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91
cmwubV91c2VyU3RhcnQgKyA0OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFN0YXRlOjpGaWxlSG9zdDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxl
SG9zdCIpOworICAgICAgICBpZiAodGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKKyAgICAgICAg
ICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgeworICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NE
cml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RC
ZWdpbiA9PSBjKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFy
dCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwor
ICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7
CisgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghcGFyc2VI
b3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhv
c3RCZWdpbiwgYykpKSB7CisgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgIGlm
IChpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50
UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpIHsKKyAgICAgICAgICAgIG1fYXNj
aWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOworICAgICAgICAgICAgbV91cmwu
bV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7
CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsg
bV91cmwubV9wb3J0TGVuZ3RoICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6UGF0
aFN0YXJ0OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlBhdGhTdGFydCIpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgU3RhdGU6OlBhdGg6CisgICAg
ICAgIExPR19GSU5BTF9TVEFURSgiUGF0aCIpOworICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBj
dXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3Bh
dGhFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQ
YXRoOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Cisg
ICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTdGF0ZTo6VVRGOFF1ZXJ5OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlVURjhRdWVyeSIp
OworICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPigpKTsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihj
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgorICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIk5vblVURjhRdWVyeSIpOworICAgICAgICBBU1NFUlQocXVlcnlC
ZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKKyAgICAgICAgZW5j
b2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKKyAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTdGF0ZTo6RnJhZ21lbnQ6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRnJhZ21lbnQi
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKExJS0VMWSghbV9kaWRTZWVTeW50
YXhWaW9sYXRpb24pKSB7CisgICAgICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsK
KyAgICAgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgbV91cmwubV9zdHJpbmcgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUobV9hc2NpaUJ1ZmZl
cikpOworICAgIG1fdXJsLm1faXNWYWxpZCA9IHRydWU7CisgICAgVVJMX1BBUlNFUl9MT0coIlBh
cnNlZCBVUkwgPCVzPiIsIG1fdXJsLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OnBhcnNlQXV0aG9y
aXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIGlm
IChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgeworICAgICAgICBzeW50YXhWaW9sYXRpb24o
aXRlcmF0b3IpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRl
cmF0b3IpOworICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgYWR2
YW5jZShpdGVyYXRvcikpIHsKKyAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpIHsKKyAgICAg
ICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAg
ICAgICAgICBhdXRvIGl0ZXJhdG9yQXRDb2xvbiA9IGl0ZXJhdG9yOworICAgICAgICAgICAgKytp
dGVyYXRvcjsKKyAgICAgICAgICAgIGJvb2wgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IGZhbHNl
OworICAgICAgICAgICAgd2hpbGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFi
T3JOZXdsaW5lKCppdGVyYXRvcikpKSB7CisgICAgICAgICAgICAgICAgdGFiT3JOZXdsaW5lQWZ0
ZXJDb2xvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgeworICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckF0Q29sb24pOworICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAg
ICAgaWYgKG1fdXJsLm1fdXNlckVuZCA+IG1fdXJsLm1fdXNlclN0YXJ0KQorICAgICAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdAJyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRhYk9yTmV3bGluZUFmdGVyQ29sb24p
CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yQXRDb2xvbik7CisgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxXVEY6OmlzSW5Vc2VySW5mb0VuY29k
ZVNldD4oaXRlcmF0b3IpOworICAgIH0KKyAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7IGFk
dmFuY2UoaXRlcmF0b3IpKQorICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxXVEY6OmlzSW5Vc2Vy
SW5mb0VuY29kZVNldD4oaXRlcmF0b3IpOworICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBjdXJy
ZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgIGlmICghbV91cmwubV91c2VyRW5kKQorICAgICAg
ICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3Bhc3N3b3JkRW5kOworICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJ0AnKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlw
ZT4KK3ZvaWQgVVJMUGFyc2VyOjphcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50
ZWdlclR5cGUgbnVtYmVyKQoreworICAgIExDaGFyIGJ1ZltzaXplb2YoVW5zaWduZWRJbnRlZ2Vy
VHlwZSkgKiAzICsgMV07CisgICAgTENoYXIqIGVuZCA9IHN0ZDo6ZW5kKGJ1Zik7CisgICAgTENo
YXIqIHAgPSBlbmQ7CisgICAgZG8geworICAgICAgICAqLS1wID0gKG51bWJlciAlIDEwKSArICcw
JzsKKyAgICAgICAgbnVtYmVyIC89IDEwOworICAgIH0gd2hpbGUgKG51bWJlcik7CisgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcihwLCBlbmQgLSBwKTsKK30KKwordm9pZCBVUkxQYXJzZXI6OnNlcmlh
bGl6ZUlQdjQoSVB2NEFkZHJlc3MgYWRkcmVzcykKK3sKKyAgICBhcHBlbmROdW1iZXJUb0FTQ0lJ
QnVmZmVyPHVpbnQ4X3Q+KGFkZHJlc3MgPj4gMjQpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy4nKTsKKyAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQ4X3Q+KGFkZHJlc3MgPj4g
MTYpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy4nKTsKKyAgICBhcHBlbmROdW1iZXJUb0FT
Q0lJQnVmZmVyPHVpbnQ4X3Q+KGFkZHJlc3MgPj4gOCk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignLicpOworICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyk7
Cit9CisgICAgCitzdGF0aWMgc2l6ZV90IHplcm9TZXF1ZW5jZUxlbmd0aChjb25zdCBzdGQ6OmFy
cmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcywgc2l6ZV90IGJlZ2luKQoreworICAgIHNpemVfdCBl
bmQgPSBiZWdpbjsKKyAgICBmb3IgKDsgZW5kIDwgODsgZW5kKyspIHsKKyAgICAgICAgaWYgKGFk
ZHJlc3NbZW5kXSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZW5kIC0g
YmVnaW47Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZmluZExvbmdlc3RaZXJv
U2VxdWVuY2UoY29uc3Qgc3RkOjphcnJheTx1aW50MTZfdCwgOD4mIGFkZHJlc3MpCit7CisgICAg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGxvbmdlc3Q7CisgICAgc2l6ZV90IGxvbmdlc3RMZW5ndGgg
PSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgODsgaSsrKSB7CisgICAgICAgIHNpemVf
dCBsZW5ndGggPSB6ZXJvU2VxdWVuY2VMZW5ndGgoYWRkcmVzcywgaSk7CisgICAgICAgIGlmIChs
ZW5ndGgpIHsKKyAgICAgICAgICAgIGlmIChsZW5ndGggPiAxICYmICghbG9uZ2VzdCB8fCBsb25n
ZXN0TGVuZ3RoIDwgbGVuZ3RoKSkgeworICAgICAgICAgICAgICAgIGxvbmdlc3QgPSBpOworICAg
ICAgICAgICAgICAgIGxvbmdlc3RMZW5ndGggPSBsZW5ndGg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpICs9IGxlbmd0aDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbG9uZ2Vz
dDsKK30KKwordm9pZCBVUkxQYXJzZXI6OnNlcmlhbGl6ZUlQdjZQaWVjZSh1aW50MTZfdCBwaWVj
ZSkKK3sKKyAgICBib29sIHByaW50ZWQgPSBmYWxzZTsKKyAgICBpZiAoYXV0byBuaWJibGUwID0g
cGllY2UgPj4gMTIpIHsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRv
TG93ZXJjYXNlQVNDSUlIZXhEaWdpdChuaWJibGUwKSk7CisgICAgICAgIHByaW50ZWQgPSB0cnVl
OworICAgIH0KKyAgICBhdXRvIG5pYmJsZTEgPSBwaWVjZSA+PiA4ICYgMHhGOworICAgIGlmIChw
cmludGVkIHx8IG5pYmJsZTEpIHsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5p
YmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChuaWJibGUxKSk7CisgICAgICAgIHByaW50ZWQg
PSB0cnVlOworICAgIH0KKyAgICBhdXRvIG5pYmJsZTIgPSBwaWVjZSA+PiA0ICYgMHhGOworICAg
IGlmIChwcmludGVkIHx8IG5pYmJsZTIpCisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93
ZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJSGV4RGlnaXQobmliYmxlMikpOworICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJSGV4RGlnaXQocGllY2UgJiAw
eEYpKTsKK30KKwordm9pZCBVUkxQYXJzZXI6OnNlcmlhbGl6ZUlQdjYoVVJMUGFyc2VyOjpJUHY2
QWRkcmVzcyBhZGRyZXNzKQoreworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJ1snKTsKKyAgICBh
dXRvIGNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFkZHJlc3MpOwor
ICAgIGZvciAoc2l6ZV90IHBpZWNlID0gMDsgcGllY2UgPCA4OyBwaWVjZSsrKSB7CisgICAgICAg
IGlmIChjb21wcmVzc1BvaW50ZXIgJiYgY29tcHJlc3NQb2ludGVyLnZhbHVlKCkgPT0gcGllY2Up
IHsKKyAgICAgICAgICAgIEFTU0VSVCghYWRkcmVzc1twaWVjZV0pOworICAgICAgICAgICAgaWYg
KHBpZWNlKQorICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCI6OiIsIDIp
OworICAgICAgICAgICAgd2hpbGUgKHBpZWNlIDwgOCAmJiAhYWRkcmVzc1twaWVjZV0pCisgICAg
ICAgICAgICAgICAgcGllY2UrKzsKKyAgICAgICAgICAgIGlmIChwaWVjZSA9PSA4KQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHNlcmlhbGl6ZUlQdjZQaWVjZShh
ZGRyZXNzW3BpZWNlXSk7CisgICAgICAgIGlmIChwaWVjZSA8IDcpCisgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgfQorICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJ10n
KTsKK30KKworZW51bSBjbGFzcyBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvciB7Cisg
ICAgRmFpbHVyZSwKKyAgICBPdmVyZmxvdywKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+CitFeHBlY3RlZDx1aW50MzJfdCwgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5n
RXJyb3I+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mIGl0ZXJhdG9yLCBib29sJiBkaWRTZWVTeW50YXhWaW9sYXRpb24pCit7CisgICAg
ZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBVbmtub3duQmFzZSwKKyAgICAg
ICAgRGVjaW1hbCwKKyAgICAgICAgT2N0YWxPckhleCwKKyAgICAgICAgT2N0YWwsCisgICAgICAg
IEhleCwKKyAgICB9OworICAgIFN0YXRlIHN0YXRlID0gU3RhdGU6OlVua25vd25CYXNlOworICAg
IENoZWNrZWQ8dWludDMyX3QsIFJlY29yZE92ZXJmbG93PiB2YWx1ZSA9IDA7CisgICAgaWYgKCFp
dGVyYXRvci5hdEVuZCgpICYmICppdGVyYXRvciA9PSAnLicpCisgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChJUHY0UGllY2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpOworICAgIHdoaWxlICgh
aXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9y
KSkgeworICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKKyAgICAgICAg
ICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoKml0ZXJhdG9yID09ICcuJykgeworICAgICAgICAgICAgQVNTRVJUKCF2YWx1ZS5oYXNP
dmVyZmxvd2VkKCkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnVuc2FmZUdldCgpOworICAg
ICAgICB9CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTdGF0ZTo6VW5r
bm93bkJhc2U6CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKml0ZXJhdG9yID09ICcwJykpIHsK
KyAgICAgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6Ok9jdGFsT3JIZXg7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpEZWNpbWFsOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU3RhdGU6Ok9jdGFsT3JIZXg6CisgICAgICAgICAgICBkaWRTZWVTeW50YXhW
aW9sYXRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAneCcgfHwgKml0
ZXJhdG9yID09ICdYJykgeworICAgICAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6SGV4OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6T2N0YWw7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6RGVjaW1hbDoKKyAgICAgICAgICAgIGlmICghaXNB
U0NJSURpZ2l0KCppdGVyYXRvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CisgICAgICAgICAgICB2YWx1ZSAq
PSAxMDsKKyAgICAgICAgICAgIHZhbHVlICs9ICppdGVyYXRvciAtICcwJzsKKyAgICAgICAgICAg
IGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGllY2VQYXJzaW5nRXJyb3I6Ok92ZXJmbG93KTsKKyAg
ICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBT
dGF0ZTo6T2N0YWw6CisgICAgICAgICAgICBBU1NFUlQoZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsK
KyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPCAnMCcgfHwgKml0ZXJhdG9yID4gJzcnKQorICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGllY2VQYXJzaW5nRXJyb3I6
OkZhaWx1cmUpOworICAgICAgICAgICAgdmFsdWUgKj0gODsKKyAgICAgICAgICAgIHZhbHVlICs9
ICppdGVyYXRvciAtICcwJzsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNPdmVy
Zmxvd2VkKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGll
Y2VQYXJzaW5nRXJyb3I6Ok92ZXJmbG93KTsKKyAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6SGV4OgorICAgICAgICAgICAgQVNT
RVJUKGRpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhE
aWdpdCgqaXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJ
UHY0UGllY2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpOworICAgICAgICAgICAgdmFsdWUgKj0gMTY7
CisgICAgICAgICAgICB2YWx1ZSArPSB0b0FTQ0lJSGV4VmFsdWUoKml0ZXJhdG9yKTsKKyAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGllY2VQYXJzaW5nRXJyb3I6Ok92ZXJmbG93
KTsKKyAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKyAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7CisgICAgcmV0dXJu
IHZhbHVlLnVuc2FmZUdldCgpOworfQorCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB1aW50NjRfdCBw
b3cyNTYoc2l6ZV90IGV4cG9uZW50KQoreworICAgIFJFTEVBU0VfQVNTRVJUKGV4cG9uZW50IDw9
IDQpOworICAgIHVpbnQ2NF90IHZhbHVlc1s1XSA9IHsxLCAyNTYsIDI1NiAqIDI1NiwgMjU2ICog
MjU2ICogMjU2LCAyNTZ1bGwgKiAyNTYgKiAyNTYgKiAyNTYgfTsKKyAgICByZXR1cm4gdmFsdWVz
W2V4cG9uZW50XTsKK30KKworZW51bSBjbGFzcyBVUkxQYXJzZXI6OklQdjRQYXJzaW5nRXJyb3Ig
eworICAgIEZhaWx1cmUsCisgICAgTm90SVB2NCwKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24sIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitF
eHBlY3RlZDxVUkxQYXJzZXI6OklQdjRBZGRyZXNzLCBVUkxQYXJzZXI6OklQdjRQYXJzaW5nRXJy
b3I+IFVSTFBhcnNlcjo6cGFyc2VJUHY0SG9zdChjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlRm9yU3ludGF4VmlvbGF0aW9uPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Q
b3NpdGlvbiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7Cisg
ICAgVmVjdG9yPEV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdF
cnJvcj4sIDQ+IGl0ZW1zOworICAgIGJvb2wgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gZmFsc2U7
CisgICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpICYmICppdGVyYXRvciA9PSAnLicpCisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICB3
aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKGlzVGFiT3JOZXdsaW5lKCpp
dGVyYXRvcikpIHsKKyAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7Cisg
ICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGl0ZW1zLnNpemUoKSA+PSA0KQorICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOworICAgICAgICBpdGVtcy5hcHBl
bmQocGFyc2VJUHY0UGllY2UoaXRlcmF0b3IsIGRpZFNlZVN5bnRheFZpb2xhdGlvbikpOworICAg
ICAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykgeworICAgICAg
ICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAg
ICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppdGVyYXRvciA9PSAnLicpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQp
OworICAgICAgICB9CisgICAgfQorICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSB8fCAhaXRlbXMu
c2l6ZSgpIHx8IGl0ZW1zLnNpemUoKSA+IDQpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0g
OiBpdGVtcykgeworICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigp
ID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICB9CisgICAgZm9y
IChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKKyAgICAgICAgaWYgKCFpdGVtLmhhc192YWx1
ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0UGllY2VQYXJzaW5nRXJyb3I6Ok92ZXJmbG93KQor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6OkZhaWx1
cmUpOworICAgIH0KKyAgICBpZiAoaXRlbXMuc2l6ZSgpID4gMSkgeworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKSAtIDE7IGkrKykgeworICAgICAgICAgICAgaWYg
KGl0ZW1zW2ldLnZhbHVlKCkgPiAyNTUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6OkZhaWx1cmUpOworICAgICAgICB9CisgICAgfQorICAg
IGlmIChpdGVtc1tpdGVtcy5zaXplKCkgLSAxXS52YWx1ZSgpID49IHBvdzI1Nig1IC0gaXRlbXMu
c2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6
OkZhaWx1cmUpOworCisgICAgaWYgKGRpZFNlZVN5bnRheFZpb2xhdGlvbikKKyAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgIGZv
ciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7CisgICAgICAgIGlmIChpdGVtLnZhbHVlKCkg
PiAyNTUpCisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9s
YXRpb25Qb3NpdGlvbik7CisgICAgfQorCisgICAgaWYgKFVOTElLRUxZKGl0ZW1zLnNpemUoKSAh
PSA0KSkKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9u
UG9zaXRpb24pOworCisgICAgSVB2NEFkZHJlc3MgaXB2NCA9IGl0ZW1zLnRha2VMYXN0KCkudmFs
dWUoKTsKKyAgICBmb3IgKHNpemVfdCBjb3VudGVyID0gMDsgY291bnRlciA8IGl0ZW1zLnNpemUo
KTsgKytjb3VudGVyKQorICAgICAgICBpcHY0ICs9IGl0ZW1zW2NvdW50ZXJdLnZhbHVlKCkgKiBw
b3cyNTYoMyAtIGNvdW50ZXIpOworICAgIHJldHVybiBpcHY0OworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gVVJMUGFyc2VyOjpw
YXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
IGl0ZXJhdG9yKQoreworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHVpbnQzMl90IHBpZWNlID0gMDsKKyAgICBib29sIGxlYWRpbmda
ZXJvcyA9IGZhbHNlOworICAgIHNpemVfdCBkaWdpdENvdW50ID0gMDsKKyAgICB3aGlsZSAoIWl0
ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICsrZGlnaXRDb3VudDsK
KyAgICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0gJzAnKSB7CisgICAgICAgICAgICBp
ZiAobGVhZGluZ1plcm9zKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICgh
cGllY2UgJiYgKml0ZXJhdG9yID09ICcwJykKKyAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRy
dWU7CisgICAgICAgIHBpZWNlID0gcGllY2UgKiAxMCArICppdGVyYXRvciAtICcwJzsKKyAgICAg
ICAgaWYgKHBpZWNlID4gMjU1KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihp
dGVyYXRvcik7CisgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGlmIChwaWVjZSAmJiBsZWFkaW5nWmVyb3MpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHBpZWNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OklQdjRBZGRyZXNzPiBVUkxQYXJz
ZXI6OnBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+IGl0ZXJhdG9yKQoreworICAgIElQdjRBZGRyZXNzIGFkZHJlc3MgPSAwOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBwaWVjZSA9IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihpdGVyYXRvcikpCisg
ICAgICAgICAgICBhZGRyZXNzID0gKGFkZHJlc3MgPDwgOCkgKyBwaWVjZS52YWx1ZSgpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAo
aSA8IDMpIHsKKyAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBpZiAoKml0ZXJhdG9yICE9ICcu
JykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgYWR2
YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7
CisgICAgICAgIH0gZWxzZSBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIH0KKyAgICBBU1NFUlQoaXRlcmF0b3IuYXRFbmQoKSk7Cisg
ICAgcmV0dXJuIGFkZHJlc3M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
CitzdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJ
UHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQoreworICAgIEFTU0VS
VCgqYyA9PSAnWycpOworICAgIGNvbnN0IGF1dG8gaG9zdEJlZ2luID0gYzsKKyAgICBhZHZhbmNl
KGMsIGhvc3RCZWdpbik7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIElQdjZBZGRyZXNzIGFkZHJlc3MgPSB7ezAsIDAsIDAsIDAsIDAsIDAs
IDAsIDB9fTsKKyAgICBzaXplX3QgcGllY2VQb2ludGVyID0gMDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gY29tcHJlc3NQb2ludGVyOworCisgICAgaWYgKCpjID09ICc6JykgeworICAgICAg
ICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CisgICAgICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoKmMgIT0gJzonKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4p
OworICAgICAgICArK3BpZWNlUG9pbnRlcjsKKyAgICAgICAgY29tcHJlc3NQb2ludGVyID0gcGll
Y2VQb2ludGVyOworICAgIH0KKyAgICAKKyAgICB3aGlsZSAoIWMuYXRFbmQoKSkgeworICAgICAg
ICBpZiAocGllY2VQb2ludGVyID09IDgpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICBpZiAoKmMgPT0gJzonKSB7CisgICAgICAgICAgICBpZiAoY29tcHJlc3NQb2lu
dGVyKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBh
ZHZhbmNlKGMsIGhvc3RCZWdpbik7CisgICAgICAgICAgICArK3BpZWNlUG9pbnRlcjsKKyAgICAg
ICAgICAgIGNvbXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRlcjsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gNiB8fCAoY29tcHJl
c3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA8IDYpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjpv
cHRpb25hbDxJUHY0QWRkcmVzcz4gaXB2NEFkZHJlc3MgPSBwYXJzZUlQdjRBZGRyZXNzSW5zaWRl
SVB2NihjKSkgeworICAgICAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQ
b2ludGVyID09IDUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisgICAgICAgICAgICAg
ICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpID4+IDE2Owor
ICAgICAgICAgICAgICAgIGFkZHJlc3NbcGllY2VQb2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFs
dWUoKSAmIDB4RkZGRjsKKyAgICAgICAgICAgICAgICBjID0geyB9OworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHVpbnQxNl90IHZhbHVl
ID0gMDsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CisgICAgICAgIGJvb2wgbGVhZGluZ1pl
cm9zID0gZmFsc2U7CisgICAgICAgIGZvciAoOyBsZW5ndGggPCA0OyBsZW5ndGgrKykgeworICAg
ICAgICAgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGlmICghaXNBU0NJSUhleERpZ2l0KCpjKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoKmMpKQorICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihob3N0QmVnaW4pOworICAgICAgICAgICAgaWYgKCpjID09ICcwJyAmJiAhbGVuZ3Ro
KQorICAgICAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7CisgICAgICAgICAgICB2YWx1
ZSA9IHZhbHVlICogMHgxMCArIHRvQVNDSUlIZXhWYWx1ZSgqYyk7CisgICAgICAgICAgICBhZHZh
bmNlKGMsIGhvc3RCZWdpbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChVTkxJ
S0VMWSgodmFsdWUgJiYgbGVhZGluZ1plcm9zKSB8fCAoIXZhbHVlICYmIGxlbmd0aCA+IDEpKSkK
KyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOworCisgICAgICAgIGFkZHJl
c3NbcGllY2VQb2ludGVyKytdID0gdmFsdWU7CisgICAgICAgIGlmIChjLmF0RW5kKCkpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA4IHx8ICpjICE9ICc6
JykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGFkdmFuY2UoYywg
aG9zdEJlZ2luKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjLmF0RW5kKCkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgaWYgKGNvbXByZXNzUG9pbnRlcikgeworICAg
ICAgICBzaXplX3Qgc3dhcHMgPSBwaWVjZVBvaW50ZXIgLSBjb21wcmVzc1BvaW50ZXIudmFsdWUo
KTsKKyAgICAgICAgcGllY2VQb2ludGVyID0gNzsKKyAgICAgICAgd2hpbGUgKHN3YXBzKQorICAg
ICAgICAgICAgc3RkOjpzd2FwKGFkZHJlc3NbcGllY2VQb2ludGVyLS1dLCBhZGRyZXNzW2NvbXBy
ZXNzUG9pbnRlci52YWx1ZSgpICsgc3dhcHMtLSAtIDFdKTsKKyAgICB9IGVsc2UgaWYgKHBpZWNl
UG9pbnRlciAhPSA4KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJv
U2VxdWVuY2UoYWRkcmVzcyk7CisgICAgaWYgKHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKQorICAg
ICAgICBwb3NzaWJsZUNvbXByZXNzUG9pbnRlci52YWx1ZSgpKys7CisgICAgaWYgKFVOTElLRUxZ
KGNvbXByZXNzUG9pbnRlciAhPSBwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikpCisgICAgICAgIHN5
bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgIAorICAgIHJldHVybiBhZGRyZXNzOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorVVJMUGFyc2VyOjpMQ2hhckJ1ZmZl
ciBVUkxQYXJzZXI6OnBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqIGlucHV0LCBzaXplX3QgbGVu
Z3RoLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JT
eW50YXhWaW9sYXRpb25Qb3NpdGlvbikKK3sKKyAgICBMQ2hhckJ1ZmZlciBvdXRwdXQ7CisgICAg
b3V0cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICAKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGlu
cHV0W2ldOworICAgICAgICBpZiAoYnl0ZSAhPSAnJScpCisgICAgICAgICAgICBvdXRwdXQudW5j
aGVja2VkQXBwZW5kKGJ5dGUpOworICAgICAgICBlbHNlIGlmIChsZW5ndGggPiAyICYmIGkgPCBs
ZW5ndGggLSAyKSB7CisgICAgICAgICAgICBpZiAoaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAx
XSkgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAyXSkpIHsKKyAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAg
ICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRb
aSArIDFdLCBpbnB1dFtpICsgMl0pKTsKKyAgICAgICAgICAgICAgICBpICs9IDI7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0
ZSk7CisgICAgfQorICAgIHJldHVybiBvdXRwdXQ7Cit9CisgICAgCitVUkxQYXJzZXI6OkxDaGFy
QnVmZmVyIFVSTFBhcnNlcjo6cGVyY2VudERlY29kZShjb25zdCBMQ2hhciogaW5wdXQsIHNpemVf
dCBsZW5ndGgpCit7CisgICAgTENoYXJCdWZmZXIgb3V0cHV0OworICAgIG91dHB1dC5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgeworICAgICAgICB1aW50OF90IGJ5dGUgPSBpbnB1dFtpXTsKKyAgICAg
ICAgaWYgKGJ5dGUgIT0gJyUnKQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChi
eXRlKTsKKyAgICAgICAgZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpIDwgbGVuZ3RoIC0gMikgewor
ICAgICAgICAgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pICYmIGlzQVNDSUlI
ZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tl
ZEFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRbaSArIDFdLCBpbnB1dFtpICsgMl0pKTsKKyAg
ICAgICAgICAgICAgICBpICs9IDI7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAgfQorICAgIHJldHVybiBvdXRw
dXQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8
VVJMUGFyc2VyOjpMQ2hhckJ1ZmZlcj4gVVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKFN0cmluZ0lt
cGwmIGRvbWFpbiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJh
dG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pCit7CisgICAgTENoYXJCdWZmZXIgYXNjaWk7
CisgICAgaWYgKGRvbWFpbi5pc0FsbEFTQ0lJKCkpIHsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IGRvbWFpbi5sZW5ndGgoKTsKKyAgICAgICAgaWYgKGRvbWFpbi5pczhCaXQoKSkgeworICAgICAg
ICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMgPSBkb21haW4uY2hhcmFjdGVyczgoKTsKKyAg
ICAgICAgICAgIGFzY2lpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkKKyAgICAgICAgICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRp
b24pOworICAgICAgICAgICAgICAgIGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJTG93ZXIo
Y2hhcmFjdGVyc1tpXSkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBkb21haW4uY2hhcmFjdGVyczE2KCk7Cisg
ICAgICAgICAgICBhc2NpaS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcihjaGFyYWN0ZXJzW2ldKSkpCisgICAgICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0
aW9uKTsKKyAgICAgICAgICAgICAgICBhc2NpaS51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUxvd2Vy
KGNoYXJhY3RlcnNbaV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gYXNjaWk7CisgICAgfQorICAgIAorICAgIGNvbnN0IHNpemVfdCBtYXhEb21haW5MZW5ndGgg
PSA2NDsKKyAgICBVQ2hhciBob3N0bmFtZUJ1ZmZlclttYXhEb21haW5MZW5ndGhdOworICAgIFVF
cnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgVUlETkFJbmZvIHByb2Nlc3NpbmdE
ZXRhaWxzID0gVUlETkFfSU5GT19JTklUSUFMSVpFUjsKKyAgICBpbnQzMl90IG51bUNoYXJhY3Rl
cnNDb252ZXJ0ZWQgPSB1aWRuYV9uYW1lVG9BU0NJSSgmaW50ZXJuYXRpb25hbERvbWFpbk5hbWVU
cmFuc2NvZGVyKCksIFN0cmluZ1ZpZXcoZG9tYWluKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwg
ZG9tYWluLmxlbmd0aCgpLCBob3N0bmFtZUJ1ZmZlciwgbWF4RG9tYWluTGVuZ3RoLCAmcHJvY2Vz
c2luZ0RldGFpbHMsICZlcnJvcik7CisgICAgQVNTRVJUKG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQg
PD0gc3RhdGljX2Nhc3Q8aW50MzJfdD4obWF4RG9tYWluTGVuZ3RoKSk7CisKKyAgICBpZiAoVV9T
VUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7CisgICAgICAgIGZv
ciAoaW50MzJfdCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQ7ICsraSkgeworICAg
ICAgICAgICAgQVNTRVJUKGlzQVNDSUkoaG9zdG5hbWVCdWZmZXJbaV0pKTsKKyAgICAgICAgICAg
IEFTU0VSVCghaXNBU0NJSVVwcGVyKGhvc3RuYW1lQnVmZmVyW2ldKSk7CisgICAgICAgIH0KKyAg
ICAgICAgYXNjaWkuYXBwZW5kKGhvc3RuYW1lQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVk
KTsKKyAgICAgICAgaWYgKGRvbWFpbiAhPSBTdHJpbmdWaWV3KGFzY2lpLmRhdGEoKSwgYXNjaWku
c2l6ZSgpKSkKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZp
b2xhdGlvblBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIGFzY2lpOworICAgIH0KKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworfQorCitib29sIFVSTFBhcnNlcjo6aGFzRm9yYmlkZGVuSG9zdENv
ZGVQb2ludChjb25zdCBVUkxQYXJzZXI6OkxDaGFyQnVmZmVyJiBhc2NpaURvbWFpbikKK3sKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFzY2lpRG9tYWluLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChpc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlEb21haW5baV0pKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wgVVJMUGFyc2VyOjpwYXJzZVBvcnQoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIEFTU0VSVCgq
aXRlcmF0b3IgPT0gJzonKTsKKyAgICBhdXRvIGNvbG9uSXRlcmF0b3IgPSBpdGVyYXRvcjsKKyAg
ICBhZHZhbmNlKGl0ZXJhdG9yLCBjb2xvbkl0ZXJhdG9yKTsKKyAgICB1aW50MzJfdCBwb3J0ID0g
MDsKKyAgICBpZiAoVU5MSUtFTFkoaXRlcmF0b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgdW5zaWdu
ZWQgcG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihjb2xvbkl0ZXJhdG9yKSAtIG1fdXJsLm1f
aG9zdEVuZDsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBv
cnRMZW5ndGgpOworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOworICAg
ICAgICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICBzaXplX3QgZGlnaXRDb3VudCA9IDA7CisgICAgYm9vbCBsZWFkaW5nWmVy
b3MgPSBmYWxzZTsKKyAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7ICsraXRlcmF0b3IpIHsK
KyAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7CisgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KCppdGVyYXRvcikpIHsK
KyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzAnICYmICFkaWdpdENvdW50KQorICAgICAg
ICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7CisgICAgICAgICAgICArK2RpZ2l0Q291bnQ7
CisgICAgICAgICAgICBwb3J0ID0gcG9ydCAqIDEwICsgKml0ZXJhdG9yIC0gJzAnOworICAgICAg
ICAgICAgaWYgKHBvcnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAocG9ydCAmJiBsZWFkaW5nWmVyb3MpCisg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKKyAgICAKKyAgICBpZiAoIXBv
cnQgJiYgZGlnaXRDb3VudCA+IDEpCisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJh
dG9yKTsKKworICAgIEFTU0VSVChwb3J0ID09IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSk7
CisgICAgaWYgKFVOTElLRUxZKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocGFyc2VkRGF0YVZpZXco
MCwgbV91cmwubV9zY2hlbWVFbmQpKSA9PSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpKQor
ICAgICAgICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisgICAgZWxzZSB7CisgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICAgICAgQVNTRVJUKHBvcnQgPD0gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKTsKKyAgICAgICAgYXBwZW5kTnVtYmVy
VG9BU0NJSUJ1ZmZlcjx1aW50MTZfdD4oc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKKyAg
ICB9CisKKyAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9y
KSAtIG1fdXJsLm1faG9zdEVuZDsKKyAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVS
TDo6bWF4UG9ydExlbmd0aCk7CisgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K2Jvb2wgVVJMUGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoKml0ZXJhdG9yID09ICdbJykgeworICAgICAgICBhdXRvIGlwdjZF
bmQgPSBpdGVyYXRvcjsKKyAgICAgICAgd2hpbGUgKCFpcHY2RW5kLmF0RW5kKCkgJiYgKmlwdjZF
bmQgIT0gJ10nKQorICAgICAgICAgICAgKytpcHY2RW5kOworICAgICAgICBpZiAoaXB2NkVuZC5h
dEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoYXV0byBhZGRy
ZXNzID0gcGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihpdGVy
YXRvciwgaXB2NkVuZCkpKSB7CisgICAgICAgICAgICBzZXJpYWxpemVJUHY2KGFkZHJlc3MudmFs
dWUoKSk7CisgICAgICAgICAgICBpZiAoIWlwdjZFbmQuYXRFbmQoKSkgeworICAgICAgICAgICAg
ICAgIGFkdmFuY2UoaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgaWYgKCFpcHY2RW5kLmF0RW5k
KCkgJiYgKmlwdjZFbmQgPT0gJzonKSB7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9z
dEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHBhcnNlUG9ydChpcHY2RW5kKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQpOworICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50
UG9zaXRpb24oaXB2NkVuZCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFtX3VybElzU3BlY2lhbCkg
eworICAgICAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7ICsraXRlcmF0b3IpIHsKKyAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09ICc6JykK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0ZvcmJp
ZGRlbkhvc3RDb2RlUG9pbnQoKml0ZXJhdG9yKSAmJiAqaXRlcmF0b3IgIT0gJyUnKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxp
c0luU2ltcGxlRW5jb2RlU2V0PihpdGVyYXRvcik7CisgICAgICAgIH0KKyAgICAgICAgbV91cmwu
bV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZXJh
dG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0
KGl0ZXJhdG9yKTsKKyAgICB9CisgICAgCisgICAgaWYgKExJS0VMWSghbV9ob3N0SGFzUGVyY2Vu
dE9yTm9uQVNDSUkpKSB7CisgICAgICAgIGF1dG8gaG9zdEl0ZXJhdG9yID0gaXRlcmF0b3I7Cisg
ICAgICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgeworICAgICAgICAg
ICAgaWYgKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGlmIChpc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoKml0ZXJhdG9y
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYXV0
byBhZGRyZXNzID0gcGFyc2VJUHY0SG9zdChob3N0SXRlcmF0b3IsIENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+KGhvc3RJdGVyYXRvciwgaXRlcmF0b3IpKTsKKyAgICAgICAgaWYgKGFk
ZHJlc3MpIHsKKyAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjQoYWRkcmVzcy52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Cisg
ICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoYWRkcmVzcy5lcnJvcigpID09IElQdjRQYXJzaW5nRXJyb3I6OkZhaWx1
cmUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGZvciAoOyBob3N0SXRlcmF0
b3IgIT0gaXRlcmF0b3I7ICsraG9zdEl0ZXJhdG9yKSB7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoaXNUYWJPck5ld2xpbmUoKmhvc3RJdGVyYXRvcikpKSB7CisgICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGhvc3RJdGVyYXRvcik7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKCpob3N0
SXRlcmF0b3IpKSkKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEl0ZXJhdG9y
KTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpob3N0SXRl
cmF0b3IpKTsKKyAgICAgICAgfQorICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9z
aXRpb24oaXRlcmF0b3IpOworICAgICAgICBpZiAoIWhvc3RJdGVyYXRvci5hdEVuZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChob3N0SXRlcmF0b3IpOworICAgICAgICB1bnNpZ25l
ZCBwb3J0TGVuZ3RoID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKSAtIG1fdXJsLm1faG9zdEVu
ZDsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRMZW5n
dGgpOworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBpdGVy
YXRvcjsKKyAgICAKKyAgICBMQ2hhckJ1ZmZlciB1dGY4RW5jb2RlZDsKKyAgICBmb3IgKDsgIWl0
ZXJhdG9yLmF0RW5kKCk7ICsraXRlcmF0b3IpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFi
T3JOZXdsaW5lKCppdGVyYXRvcikpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9z
dEJlZ2luKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICgq
aXRlcmF0b3IgPT0gJzonKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChVTkxJS0VM
WSghaXNBU0NJSSgqaXRlcmF0b3IpKSkKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0
QmVnaW4pOworCisgICAgICAgIGlmICghVV9JU19VTklDT0RFX0NIQVIoKml0ZXJhdG9yKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdWludDhfdCBidWZmZXJbVThfTUFYX0xF
TkdUSF07CisgICAgICAgIGludDMyX3Qgb2Zmc2V0ID0gMDsKKyAgICAgICAgVThfQVBQRU5EX1VO
U0FGRShidWZmZXIsIG9mZnNldCwgKml0ZXJhdG9yKTsKKyAgICAgICAgdXRmOEVuY29kZWQuYXBw
ZW5kKGJ1ZmZlciwgb2Zmc2V0KTsKKyAgICB9CisgICAgTENoYXJCdWZmZXIgcGVyY2VudERlY29k
ZWQgPSBwZXJjZW50RGVjb2RlKHV0ZjhFbmNvZGVkLmRhdGEoKSwgdXRmOEVuY29kZWQuc2l6ZSgp
LCBob3N0QmVnaW4pOworICAgIFN0cmluZyBkb21haW4gPSBTdHJpbmc6OmZyb21VVEY4KHBlcmNl
bnREZWNvZGVkLmRhdGEoKSwgcGVyY2VudERlY29kZWQuc2l6ZSgpKTsKKyAgICBpZiAoZG9tYWlu
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGRvbWFpbiAhPSBTdHJp
bmdWaWV3KHBlcmNlbnREZWNvZGVkLmRhdGEoKSwgcGVyY2VudERlY29kZWQuc2l6ZSgpKSkKKyAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisgICAgYXV0byBhc2NpaURvbWFpbiA9
IGRvbWFpblRvQVNDSUkoKmRvbWFpbi5pbXBsKCksIGhvc3RCZWdpbik7CisgICAgaWYgKCFhc2Np
aURvbWFpbiB8fCBoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGFzY2lpRG9tYWluLnZhbHVlKCkp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgTENoYXJCdWZmZXImIGFzY2lpRG9tYWluVmFs
dWUgPSBhc2NpaURvbWFpbi52YWx1ZSgpOworICAgIGNvbnN0IExDaGFyKiBhc2NpaURvbWFpbkNo
YXJhY3RlcnMgPSBhc2NpaURvbWFpblZhbHVlLmRhdGEoKTsKKworICAgIGF1dG8gYWRkcmVzcyA9
IHBhcnNlSVB2NEhvc3QoaG9zdEJlZ2luLCBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4oYXNjaWlE
b21haW5WYWx1ZS5iZWdpbigpLCBhc2NpaURvbWFpblZhbHVlLmVuZCgpKSk7CisgICAgaWYgKGFk
ZHJlc3MpIHsKKyAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOworICAgICAg
ICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICBp
ZiAoaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBw
YXJzZVBvcnQoaXRlcmF0b3IpOworICAgIH0KKyAgICBpZiAoYWRkcmVzcy5lcnJvcigpID09IElQ
djRQYXJzaW5nRXJyb3I6OkZhaWx1cmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoYXNjaWlEb21haW5DaGFyYWN0ZXJzLCBhc2NpaURvbWFpblZhbHVl
LnNpemUoKSk7CisgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9y
KTsKKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBwYXJzZVBvcnQo
aXRlcmF0b3IpOworICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUoU3Ry
aW5nVmlldyBpbnB1dCkKK3sKKyAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZl
cnNpb24pOworICAgIGlmICh1dGY4LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIGF1dG8gcGVyY2VudERlY29kZWQgPSBwZXJjZW50RGVjb2RlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOworICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHBlcmNlbnREZWNvZGVkLmRhdGEoKSwgcGVyY2VudERlY29k
ZWQuc2l6ZSgpKTsKK30KKworLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0
LXVybGVuY29kZWQtcGFyc2VyCithdXRvIFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShT
dHJpbmdWaWV3IGlucHV0KSAtPiBVUkxFbmNvZGVkRm9ybQoreworICAgIFVSTEVuY29kZWRGb3Jt
IG91dHB1dDsKKyAgICBmb3IgKFN0cmluZ1ZpZXcgYnl0ZXMgOiBpbnB1dC5zcGxpdCgnJicpKSB7
CisgICAgICAgIGF1dG8gZXF1YWxJbmRleCA9IGJ5dGVzLmZpbmQoJz0nKTsKKyAgICAgICAgaWYg
KGVxdWFsSW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGF1dG8gbmFtZSA9IGZvcm1V
UkxEZWNvZGUoYnl0ZXMudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOworICAgICAgICAg
ICAgaWYgKG5hbWUpCisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCh7IG5hbWUudmFsdWUo
KSwgZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8g
bmFtZSA9IGZvcm1VUkxEZWNvZGUoYnl0ZXMuc3Vic3RyaW5nKDAsIGVxdWFsSW5kZXgpLnRvU3Ry
aW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBmb3Jt
VVJMRGVjb2RlKGJ5dGVzLnN1YnN0cmluZyhlcXVhbEluZGV4ICsgMSkudG9TdHJpbmcoKS5yZXBs
YWNlKCcrJywgMHgyMCkpOworICAgICAgICAgICAgaWYgKG5hbWUgJiYgdmFsdWUpCisgICAgICAg
ICAgICAgICAgb3V0cHV0LmFwcGVuZCh7IG5hbWUudmFsdWUoKSwgdmFsdWUudmFsdWUoKSB9KTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gb3V0cHV0OworfQorCitzdGF0aWMgdm9pZCBz
ZXJpYWxpemVVUkxFbmNvZGVkRm9ybShjb25zdCBTdHJpbmcmIGlucHV0LCBWZWN0b3I8TENoYXI+
JiBvdXRwdXQpCit7CisgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJzaW9u
KTsKKyAgICBjb25zdCBjaGFyKiBkYXRhID0gdXRmOC5kYXRhKCk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB1dGY4Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgY2hhciBieXRl
ID0gZGF0YVtpXTsKKyAgICAgICAgaWYgKGJ5dGUgPT0gMHgyMCkKKyAgICAgICAgICAgIG91dHB1
dC5hcHBlbmQoMHgyQik7CisgICAgICAgIGVsc2UgaWYgKGJ5dGUgPT0gMHgyQQorICAgICAgICAg
ICAgfHwgYnl0ZSA9PSAweDJECisgICAgICAgICAgICB8fCBieXRlID09IDB4MkUKKyAgICAgICAg
ICAgIHx8IChieXRlID49IDB4MzAgJiYgYnl0ZSA8PSAweDM5KQorICAgICAgICAgICAgfHwgKGJ5
dGUgPj0gMHg0MSAmJiBieXRlIDw9IDB4NUEpCisgICAgICAgICAgICB8fCBieXRlID09IDB4NUYK
KyAgICAgICAgICAgIHx8IChieXRlID49IDB4NjEgJiYgYnl0ZSA8PSAweDdBKSkgLy8gRklYTUU6
IFB1dCB0aGVzZSBpbiB0aGUgY2hhcmFjdGVyQ2xhc3NUYWJsZSB0byBhdm9pZCBicmFuY2hlcy4K
KyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoYnl0ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ5dGUsIG91dHB1dCk7CisgICAgfQorfQorICAgIAorU3Ry
aW5nIFVSTFBhcnNlcjo6c2VyaWFsaXplKGNvbnN0IFVSTEVuY29kZWRGb3JtJiB0dXBsZXMpCit7
CisgICAgaWYgKHR1cGxlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBW
ZWN0b3I8TENoYXI+IG91dHB1dDsKKyAgICBmb3IgKGF1dG8mIHR1cGxlIDogdHVwbGVzKSB7Cisg
ICAgICAgIGlmICghb3V0cHV0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQo
JyYnKTsKKyAgICAgICAgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0odHVwbGUua2V5LCBvdXRwdXQp
OworICAgICAgICBvdXRwdXQuYXBwZW5kKCc9Jyk7CisgICAgICAgIHNlcmlhbGl6ZVVSTEVuY29k
ZWRGb3JtKHR1cGxlLnZhbHVlLCBvdXRwdXQpOworICAgIH0KKyAgICByZXR1cm4gU3RyaW5nOjph
ZG9wdChXVEZNb3ZlKG91dHB1dCkpOworfQorCitjb25zdCBVSUROQSYgVVJMUGFyc2VyOjppbnRl
cm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKQoreworICAgIHN0YXRpYyBVSUROQSogZW5j
b2RlcjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19F
UlJPUjsKKyAgICAgICAgLy8gV2FybmluZzogUGxlYXNlIGNvbnRhY3QgYSBXZWJLaXRHVEsrIGRl
dmVsb3BlciBpZiBjaGFuZ2luZyB0aGVzZSBmbGFncy4KKyAgICAgICAgLy8gVGhleSBzaG91bGQg
YmUgc3luY2VkIHdpdGggZXBoeV91cmlfZGVjb2RlKCkgaW4gZXBoeS11cmktaGVscGVycy5jLgor
ICAgICAgICBlbmNvZGVyID0gdWlkbmFfb3BlblVUUzQ2KFVJRE5BX0NIRUNLX0JJREkgfCBVSURO
QV9DSEVDS19DT05URVhUSiB8IFVJRE5BX05PTlRSQU5TSVRJT05BTF9UT19VTklDT0RFIHwgVUlE
TkFfTk9OVFJBTlNJVElPTkFMX1RPX0FTQ0lJLCAmZXJyb3IpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChVX1NVQ0NFU1MoZXJyb3IpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW5jb2Rlcik7
CisgICAgfSk7CisgICAgcmV0dXJuICplbmNvZGVyOworfQorCitib29sIFVSTFBhcnNlcjo6YWxs
VmFsdWVzRXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgVVJMX1BBUlNF
Ul9MT0coIiVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzXG4lZCAlZCAlZCAl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlcyIsCisgICAgICAgIGEubV9pc1ZhbGlkLAorICAg
ICAgICBhLm1fY2Fubm90QmVBQmFzZVVSTCwKKyAgICAgICAgYS5tX3Byb3RvY29sSXNJbkhUVFBG
YW1pbHksCisgICAgICAgIGEubV9zY2hlbWVFbmQsCisgICAgICAgIGEubV91c2VyU3RhcnQsCisg
ICAgICAgIGEubV91c2VyRW5kLAorICAgICAgICBhLm1fcGFzc3dvcmRFbmQsCisgICAgICAgIGEu
bV9ob3N0RW5kLAorICAgICAgICBhLm1faG9zdEVuZCArIGEubV9wb3J0TGVuZ3RoLAorICAgICAg
ICBhLm1fcGF0aEFmdGVyTGFzdFNsYXNoLAorICAgICAgICBhLm1fcGF0aEVuZCwKKyAgICAgICAg
YS5tX3F1ZXJ5RW5kLAorICAgICAgICBhLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCksCisgICAgICAg
IGIubV9pc1ZhbGlkLAorICAgICAgICBiLm1fY2Fubm90QmVBQmFzZVVSTCwKKyAgICAgICAgYi5t
X3Byb3RvY29sSXNJbkhUVFBGYW1pbHksCisgICAgICAgIGIubV9zY2hlbWVFbmQsCisgICAgICAg
IGIubV91c2VyU3RhcnQsCisgICAgICAgIGIubV91c2VyRW5kLAorICAgICAgICBiLm1fcGFzc3dv
cmRFbmQsCisgICAgICAgIGIubV9ob3N0RW5kLAorICAgICAgICBiLm1faG9zdEVuZCArIGIubV9w
b3J0TGVuZ3RoLAorICAgICAgICBiLm1fcGF0aEFmdGVyTGFzdFNsYXNoLAorICAgICAgICBiLm1f
cGF0aEVuZCwKKyAgICAgICAgYi5tX3F1ZXJ5RW5kLAorICAgICAgICBiLm1fc3RyaW5nLnV0Zjgo
KS5kYXRhKCkpOworCisgICAgcmV0dXJuIGEubV9zdHJpbmcgPT0gYi5tX3N0cmluZworICAgICAg
ICAmJiBhLm1faXNWYWxpZCA9PSBiLm1faXNWYWxpZAorICAgICAgICAmJiBhLm1fY2Fubm90QmVB
QmFzZVVSTCA9PSBiLm1fY2Fubm90QmVBQmFzZVVSTAorICAgICAgICAmJiBhLm1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSA9PSBiLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseQorICAgICAgICAmJiBh
Lm1fc2NoZW1lRW5kID09IGIubV9zY2hlbWVFbmQKKyAgICAgICAgJiYgYS5tX3VzZXJTdGFydCA9
PSBiLm1fdXNlclN0YXJ0CisgICAgICAgICYmIGEubV91c2VyRW5kID09IGIubV91c2VyRW5kCisg
ICAgICAgICYmIGEubV9wYXNzd29yZEVuZCA9PSBiLm1fcGFzc3dvcmRFbmQKKyAgICAgICAgJiYg
YS5tX2hvc3RFbmQgPT0gYi5tX2hvc3RFbmQKKyAgICAgICAgJiYgYS5tX3BvcnRMZW5ndGggPT0g
Yi5tX3BvcnRMZW5ndGgKKyAgICAgICAgJiYgYS5tX3BhdGhBZnRlckxhc3RTbGFzaCA9PSBiLm1f
cGF0aEFmdGVyTGFzdFNsYXNoCisgICAgICAgICYmIGEubV9wYXRoRW5kID09IGIubV9wYXRoRW5k
CisgICAgICAgICYmIGEubV9xdWVyeUVuZCA9PSBiLm1fcXVlcnlFbmQ7Cit9CisKK2Jvb2wgVVJM
UGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQoY29uc3QgVVJMJiB1cmwpCit7CisgICAg
cmV0dXJuIHVybC5tX3NjaGVtZUVuZCA8PSB1cmwubV91c2VyU3RhcnQKKyAgICAgICAgJiYgdXJs
Lm1fdXNlclN0YXJ0IDw9IHVybC5tX3VzZXJFbmQKKyAgICAgICAgJiYgdXJsLm1fdXNlckVuZCA8
PSB1cmwubV9wYXNzd29yZEVuZAorICAgICAgICAmJiB1cmwubV9wYXNzd29yZEVuZCA8PSB1cmwu
bV9ob3N0RW5kCisgICAgICAgICYmIHVybC5tX2hvc3RFbmQgKyB1cmwubV9wb3J0TGVuZ3RoIDw9
IHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaAorICAgICAgICAmJiB1cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPD0gdXJsLm1fcGF0aEVuZAorICAgICAgICAmJiB1cmwubV9wYXRoRW5kIDw9IHVybC5t
X3F1ZXJ5RW5kCisgICAgICAgICYmIHVybC5tX3F1ZXJ5RW5kIDw9IHVybC5tX3N0cmluZy5sZW5n
dGgoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9VUkxQYXJzZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjll
MjViNTQwMjIzNDBhOWU4OGJlZDhjY2YxNzAwMzkyNzc3ZmU3MmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworc3RydWN0IFVJRE5B
OworCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
Y2xhc3MgQ29kZVBvaW50SXRlcmF0b3I7CisKK2NsYXNzIFVSTFBhcnNlciB7CitwdWJsaWM6Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGFsbFZhbHVlc0VxdWFsKGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBpbnRl
cm5hbFZhbHVlc0NvbnNpc3RlbnQoY29uc3QgVVJMJik7CisgICAgCisgICAgdXNpbmcgVVJMRW5j
b2RlZEZvcm0gPSBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PjsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVSTEVuY29kZWRGb3JtIHBhcnNlVVJMRW5jb2Rl
ZEZvcm0oU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcg
c2VyaWFsaXplKGNvbnN0IFVSTEVuY29kZWRGb3JtJik7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgaXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXliZUNh
bm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisKKyAgICBzdGF0aWMgY29u
c3QgVUlETkEmIGludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpOworICAgIHN0YXRp
YyBib29sIGlzSW5Vc2VySW5mb0VuY29kZVNldChVQ2hhcik7CisKK3ByaXZhdGU6CisgICAgVVJM
UGFyc2VyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYgPSB7IH0sIGNvbnN0IFVSTFRleHRFbmNv
ZGluZyogPSBudWxscHRyKTsKKyAgICBVUkwgcmVzdWx0KCkgeyByZXR1cm4gbV91cmw7IH0KKwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29s
KFN0cmluZ1ZpZXcpOworICAgIGZyaWVuZCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0
UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcpOworICAgIGZyaWVuZCBjbGFzcyBVUkw7CisKKyAg
ICBVUkwgbV91cmw7CisgICAgVmVjdG9yPExDaGFyPiBtX2FzY2lpQnVmZmVyOworICAgIGJvb2wg
bV91cmxJc1NwZWNpYWwgeyBmYWxzZSB9OworICAgIGJvb2wgbV91cmxJc0ZpbGUgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgeyBmYWxzZSB9OworICAgIFN0
cmluZyBtX2lucHV0U3RyaW5nOworICAgIGNvbnN0IHZvaWQqIG1faW5wdXRCZWdpbiB7IG51bGxw
dHIgfTsKKworICAgIGJvb2wgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24geyBmYWxzZSB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplID0gMjA0ODsK
KyAgICB1c2luZyBMQ2hhckJ1ZmZlciA9IFZlY3RvcjxMQ2hhciwgZGVmYXVsdElubGluZUJ1ZmZl
clNpemU+OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBwYXJz
ZShjb25zdCBDaGFyYWN0ZXJUeXBlKiwgY29uc3QgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVUkwm
LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiB2b2lkIHBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIHBhcnNlSG9z
dEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgcGFyc2VQb3J0KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+Jik7CisKKyAgICB2b2lkIGZhaWx1cmUoKTsKKyAgICBlbnVtIGNsYXNz
IFJlcG9ydFN5bnRheFZpb2xhdGlvbiB7IE5vLCBZZXMgfTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb24gcmVwb3J0U3ludGF4VmlvbGF0
aW9uID0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXM+CisgICAgdm9pZCBhZHZhbmNlKENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikgeyBhZHZhbmNlPENoYXJhY3Rl
clR5cGUsIHJlcG9ydFN5bnRheFZpb2xhdGlvbj4oaXRlcmF0b3IsIGl0ZXJhdG9yKTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbiA9
IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6WWVzPgorICAgIHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gdm9pZCBzeW50YXhWaW9sYXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBib29sIGlzUGVyY2VudEVuY29kZWREb3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNXaW5kb3dz
RHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNTaW5nbGVEb3RQYXRoU2VnbWVudChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gYm9vbCBpc0RvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBib29sIHNob3VsZENvcHlGaWxlVVJMKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGNoZWNrTG9jYWxo
b3N0Q29kZVBvaW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgVUNoYXIzMik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0F0TG9jYWxob3N0
KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICBib29sIGlzTG9jYWxob3N0
KFN0cmluZ1ZpZXcpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQg
Y29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb25zdW1l
RG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGFwcGVuZFdpbmRvd3NE
cml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHNpemVfdCBjdXJyZW50UG9zaXRpb24oY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVbnNpZ25lZEludGVnZXJUeXBlPiB2b2lkIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIoVW5z
aWduZWRJbnRlZ2VyVHlwZSk7CisgICAgdGVtcGxhdGU8Ym9vbCgqaXNJbkNvZGVTZXQpKFVDaGFy
MzIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhQZXJjZW50RW5jb2RlKGNvbnN0
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB1dGY4UXVlcnlFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBzdGQ6Om9wdGlvbmFsPExDaGFyQnVmZmVyPiBkb21haW5Ub0FTQ0lJKFN0cmluZ0ltcGwm
LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50
YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gTENoYXJCdWZmZXIgcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCwgY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0
aW9uUG9zaXRpb24pOworICAgIHN0YXRpYyBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlKGNvbnN0
IExDaGFyKiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGZvcm1V
UkxEZWNvZGUoU3RyaW5nVmlldyBpbnB1dCk7CisgICAgc3RhdGljIGJvb2wgaGFzRm9yYmlkZGVu
SG9zdENvZGVQb2ludChjb25zdCBMQ2hhckJ1ZmZlciYpOworICAgIHZvaWQgcGVyY2VudEVuY29k
ZUJ5dGUodWludDhfdCk7CisgICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKFVDaGFyMzIpOwor
ICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICB2
b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBz
aXplKSB7IGFwcGVuZFRvQVNDSUlCdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
Y2hhcmFjdGVycyksIHNpemUpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gdm9pZCBlbmNvZGVOb25VVEY4UXVlcnkoY29uc3QgVmVjdG9yPFVDaGFyPiYgc291cmNlLCBj
b25zdCBVUkxUZXh0RW5jb2RpbmcmLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7
CisgICAgdm9pZCBjb3B5QVNDSUlTdHJpbmdVbnRpbChjb25zdCBTdHJpbmcmLCBzaXplX3QgbGVu
Z3RoKTsKKyAgICBib29sIGNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVSTCYpOwor
ICAgIFN0cmluZ1ZpZXcgcGFyc2VkRGF0YVZpZXcoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3Ro
KTsKKyAgICBVQ2hhciBwYXJzZWREYXRhVmlldyhzaXplX3QgcG9zaXRpb24pOworCisgICAgdXNp
bmcgSVB2NEFkZHJlc3MgPSB1aW50MzJfdDsKKyAgICB2b2lkIHNlcmlhbGl6ZUlQdjQoSVB2NEFk
ZHJlc3MpOworICAgIGVudW0gY2xhc3MgSVB2NFBhcnNpbmdFcnJvcjsKKyAgICBlbnVtIGNsYXNz
IElQdjRQaWVjZVBhcnNpbmdFcnJvcjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlRm9yU3ludGF4VmlvbGF0aW9uLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBFeHBlY3RlZDxJ
UHY0QWRkcmVzcywgSVB2NFBhcnNpbmdFcnJvcj4gcGFyc2VJUHY0SG9zdChjb25zdCBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlRm9yU3ludGF4VmlvbGF0aW9uPiYsIENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBFeHBlY3RlZDx1aW50MzJfdCwgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3I+
IHBhcnNlSVB2NFBpZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgYm9vbCYg
c3ludGF4VmlvbGF0aW9uKTsKKyAgICB1c2luZyBJUHY2QWRkcmVzcyA9IHN0ZDo6YXJyYXk8dWlu
dDE2X3QsIDg+OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0
aW9uYWw8SVB2NkFkZHJlc3M+IHBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0ZDo6b3B0aW9uYWw8SVB2NEFkZHJlc3M+IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB2b2lkIHNlcmlhbGl6ZUlQdjZQ
aWVjZSh1aW50MTZfdCBwaWVjZSk7CisgICAgdm9pZCBzZXJpYWxpemVJUHY2KElQdjZBZGRyZXNz
KTsKKworICAgIGVudW0gY2xhc3MgVVJMUGFydDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiB2b2lkIGNvcHlVUkxQYXJ0c1VudGlsKGNvbnN0IFVSTCYgYmFzZSwgVVJMUGFy
dCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBjb25zdCBVUkxUZXh0
RW5jb2RpbmcqJik7CisgICAgc3RhdGljIHNpemVfdCB1cmxMZW5ndGhVbnRpbFBhcnQoY29uc3Qg
VVJMJiwgVVJMUGFydCk7CisgICAgdm9pZCBwb3BQYXRoKCk7CisgICAgYm9vbCBzaG91bGRQb3BQ
YXRoKHVuc2lnbmVkKTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0NG
VVJMRXh0cmFzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNjY2NWE4ZDBmZmI5NjM0OTIwNjQ1MzE3MDViYzFjYjkzM2JiNzhkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCkBAIC0wLDAgKzEsODEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ0ZVUkxFeHRy
YXMuaCIKKworI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJM
RnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQ0ZVUkxSZWYgYmFzZVVS
TCkKK3sKKyAgICAvLyBOT1RFOiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29kaW5n
IGlzIHVzZWQgd2hlbiBjb21wdXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29tcG9u
ZW50cworICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBhdGgpLiBIb3dldmVyLCB0aGlzIGZ1
bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVURi04IHNlcXVlbmNlcywgd2hpY2gK
KyAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEg
ZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIFNoaWZ0LUpJUywgc28gd2UgZmFsbCBiYWNrCisgICAg
Ly8gb250byB1c2luZyBJU08gTGF0aW4tMSBpbiB0aG9zZSBjYXNlcy4KKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRl
cygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSksIHNpemUsIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwgYmFzZVVSTCwgdHJ1ZSkpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMSwgYmFzZVVSTCwgdHJ1ZSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Zv
aWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBVUkxDaGFyQnVmZmVyJiByZXN1bHQpCit7Cisg
ICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKKyAgICBy
ZXN1bHQucmVzaXplKGJ5dGVzTGVuZ3RoKTsKKyAgICBDRkluZGV4IGZpbmFsTGVuZ3RoID0gQ0ZV
UkxHZXRCeXRlcyh1cmwsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihyZXN1bHQuZGF0YSgpKSwg
Ynl0ZXNMZW5ndGgpOworICAgIEFTU0VSVF9VTlVTRUQoZmluYWxMZW5ndGgsIGZpbmFsTGVuZ3Ro
ID09IGJ5dGVzTGVuZ3RoKTsKK30KKwordm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiB1cmwsIENT
dHJpbmcmIHJlc3VsdCkKK3sKKyAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRl
cyh1cmwsIDAsIDApOworICAgIGNoYXIqIGJ5dGVzOworICAgIHJlc3VsdCA9IENTdHJpbmc6Om5l
d1VuaW5pdGlhbGl6ZWQoYnl0ZXNMZW5ndGgsIGJ5dGVzKTsKKyAgICBDRkluZGV4IGZpbmFsTGVu
Z3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihieXRlcyks
IGJ5dGVzTGVuZ3RoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0
aCA9PSBieXRlc0xlbmd0aCk7Cit9CisKK2Jvb2wgaXNDRlVSTFNhbWVPcmlnaW4oQ0ZVUkxSZWYg
Y2ZVUkwsIGNvbnN0IFVSTCYgdXJsKQoreworICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpKTsKKworICAgIGlmICh1cmwuaGFzVXNlcm5hbWUoKSB8fCB1cmwuaGFzUGFzc3dv
cmQoKSkKKyAgICAgICAgcmV0dXJuIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCh1cmwsIFVS
TCB7IGNmVVJMIH0pOworCisgICAgVVJMQ2hhckJ1ZmZlciBieXRlczsKKyAgICBnZXRVUkxCeXRl
cyhjZlVSTCwgYnl0ZXMpOworICAgIFN0cmluZ1ZpZXcgY2ZVUkxTdHJpbmcgeyByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oYnl0ZXMuZGF0YSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGJ5dGVzLnNpemUoKSkgfTsKKworICAgIGlmICghdXJsLmhhc1BhdGgoKSkKKyAgICAgICAgcmV0
dXJuIFN0cmluZ1ZpZXcgeyB1cmwuc3RyaW5nKCkgfSA9PSBjZlVSTFN0cmluZzsKKworICAgIGF1
dG8gdXJsV2l0aG91dFBhdGggPSBTdHJpbmdWaWV3IHsgdXJsLnN0cmluZygpIH0uc3Vic3RyaW5n
KDAsIHVybC5wYXRoU3RhcnQoKSArIDEpOworICAgIHJldHVybiBjZlVSTFN0cmluZy5zdGFydHNX
aXRoKHVybFdpdGhvdXRQYXRoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Y2YvQ0ZVUkxFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGFjNDljM2YzN2Y2NTAwZTk2M2FlZDViMDRkMDk4ZjM4NTFmMGVmYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmgKQEAgLTAsMCArMSw0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQ0ZVUkxFeHRyYXNfaAorI2RlZmluZSBDRlVSTEV4dHJh
c19oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBV
Ukw7Cit0eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IFVSTENoYXJCdWZmZXI7CisKK1dURl9FWFBP
UlRfUFJJVkFURSBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihjb25z
dCBjaGFyKiwgc2l6ZV90LCBDRlVSTFJlZiBiYXNlVVJMID0gMCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgVVJMQ2hhckJ1ZmZlciYpOworV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIENTdHJpbmcmKTsKKworYm9vbCBp
c0NGVVJMU2FtZU9yaWdpbihDRlVSTFJlZiwgY29uc3QgVVJMJik7CisKK30KKworI2VuZGlmIC8v
IENGVVJMRXh0cmFzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTU5MWUyYjM4NGViYjIw
NmQ1MjIyN2VjOWNiZjllNzVkOTU4MjUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvY2YvVVJMQ0YuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCisjaW5jbHVk
ZSAiVVJMUGFyc2VyLmgiCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitVUkw6OlVSTChD
RlVSTFJlZiB1cmwpCit7CisgICAgaWYgKCF1cmwpIHsKKyAgICAgICAgaW52YWxpZGF0ZSgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBp
Z25vcmUgYmFzZSBVUkwgaGVyZT8KKyAgICBDU3RyaW5nIHVybEJ5dGVzOworICAgIGdldFVSTEJ5
dGVzKHVybCwgdXJsQnl0ZXMpOworICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgp
KTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKworI2lmICFVU0UoRk9VTkRBVElP
TikKK1JldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/CisgICAg
Ly8gQ3VycmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0
ZXJzIGluIHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAorICAgIC8vIHdoaWNoIGlzIGNsZWFybHkg
d3JvbmcuCisgICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7CisgICAgY29weVRvQnVmZmVyKGJ1ZmZl
cik7CisgICAgYXV0byBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKKworICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYg
IWlzQ0ZVUkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgcmV0dXJuIGNmVVJMOworfQorI2VuZGlmCisKK1N0cmluZyBVUkw6OmZp
bGVTeXN0ZW1QYXRoKCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0g
Y3JlYXRlQ0ZVUkwoKTsKKyAgICBpZiAoIWNmVVJMKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisKKyNpZiBQTEFURk9STShXSU4pCisgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NG
VVJMV2luZG93c1BhdGhTdHlsZTsKKyNlbHNlCisgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxl
ID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7CisjZW5kaWYKKyAgICByZXR1cm4gYWRvcHRDRihDRlVS
TENvcHlGaWxlU3lzdGVtUGF0aChjZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNDMyZTRiMzNkMjQ4
N2RiNzBmZjRkMzliMGJkNDNlOWY4OWFhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDUsIDIwMDcsIDIwMTIsIDIwMTQgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK0Bj
bGFzcyBOU1N0cmluZzsKK0BjbGFzcyBOU1VSTDsKKworbmFtZXNwYWNlIFdURiB7CisKK1dURl9F
WFBPUlRfUFJJVkFURSBOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcoTlNVUkwgKik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKiwg
TlNVUkwgKmJhc2VVUkwpOyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgorV1RG
X0VYUE9SVF9QUklWQVRFIE5TVVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNVUkwgKik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICopOyAv
LyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgorV1RGX0VYUE9SVF9QUklWQVRFIE5T
U3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5p
bCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJMQnlUcnVuY2F0aW5n
T25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICosIENGVVJMQ29tcG9uZW50VHlwZSk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTFdpdGhEYXRhKE5TRGF0YSAqLCBOU1VSTCAq
YmFzZVVSTCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgTlNEYXRhICpvcmlnaW5hbFVSTERhdGEoTlNV
UkwgKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgTlNEYXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlw
ZShOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOworV1RGX0VYUE9SVF9QUklWQVRFIE5TVVJM
ICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChOU1N0cmluZyAqLCBOU1VSTCAqYmFz
ZVVSTCk7CisKK05TUmFuZ2UgcmFuZ2VPZlVSTFNjaGVtZShOU1N0cmluZyAqKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBCT09MIGlzVXNlclZpc2libGVVUkwoTlNTdHJpbmcgKik7CitXVEZfRVhQT1JU
X1BSSVZBVEUgQk9PTCBsb29rc0xpa2VBYnNvbHV0ZVVSTChOU1N0cmluZyAqKTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJh
cy5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2
ZmM4ZjE2OGRlMDU2YzViMmEyOTcyMWYwYmQ3YjlmNmYxMjM0NDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAtMCwwICsxLDEyMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KKyNpbXBvcnQgIk5TVVJMRXh0cmFzLmgiCisKKyNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCisj
aW1wb3J0ICJVUkxQYXJzZXIuaCIKKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgorI2ltcG9ydCA8
d3RmL0hleE51bWJlci5oPgorI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx1
bmljb2RlL3VjaGFyLmg+CisjaW1wb3J0IDx1bmljb2RlL3VpZG5hLmg+CisjaW1wb3J0IDx1bmlj
b2RlL3VzY3JpcHQuaD4KKworLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElE
Ti1lbmNvZGVkIG5hbWUuCisvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3
b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCisjZGVm
aW5lIEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RIIDIwNDgKKyNkZWZpbmUgVVJMX0JZVEVTX0JVRkZF
Ul9MRU5HVEggMjA0OAorCit0eXBlZGVmIHZvaWQgKCogU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rp
b24pKE5TU3RyaW5nICosIE5TUmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mKTsKKwor
c3RhdGljIHVpbnQzMl90IElETlNjcmlwdFdoaXRlTGlzdFsoVVNDUklQVF9DT0RFX0xJTUlUICsg
MzEpIC8gMzJdOworCituYW1lc3BhY2UgV1RGIHsKKworc3RhdGljIGJvb2wgaXNBcm1lbmlhbkxv
b2thbGlrZUNoYXJhY3RlcihVQ2hhcjMyIGNvZGVQb2ludCkKK3sKKyAgICByZXR1cm4gY29kZVBv
aW50ID09IDB4MDU0OCB8fCBjb2RlUG9pbnQgPT0gMHgwNTREIHx8IGNvZGVQb2ludCA9PSAweDA1
NzggfHwgY29kZVBvaW50ID09IDB4MDU3RDsKK30KKworc3RhdGljIGJvb2wgaXNBcm1lbmlhblNj
cmlwdENoYXJhY3RlcihVQ2hhcjMyIGNvZGVQb2ludCkKK3sKKyAgICBVRXJyb3JDb2RlIGVycm9y
ID0gVV9aRVJPX0VSUk9SOworICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9IHVzY3JpcHRfZ2V0U2Ny
aXB0KGNvZGVQb2ludCwgJmVycm9yKTsKKyAgICBpZiAoZXJyb3IgIT0gVV9aRVJPX0VSUk9SKSB7
CisgICAgICAgIExPR19FUlJPUigiZ290IElDVSBlcnJvciB3aGlsZSB0cnlpbmcgdG8gbG9vayBh
dCBzY3JpcHRzOiAlZCIsIGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiBzY3JpcHQgPT0gVVNDUklQVF9BUk1FTklBTjsKK30KKworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJRGlnaXRPclZhbGlkSG9z
dENoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJDb2RlKQoreworICAgIGlmICghaXNBU0NJSURp
Z2l0T3JQdW5jdHVhdGlvbihjaGFyQ29kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIFRoaW5ncyB0aGUgVVJMIFBhcnNlciByZWplY3RzOgorICAgIHN3aXRjaCAoY2hhckNvZGUp
IHsKKyAgICBjYXNlICcjJzoKKyAgICBjYXNlICclJzoKKyAgICBjYXNlICcvJzoKKyAgICBjYXNl
ICc6JzoKKyAgICBjYXNlICc/JzoKKyAgICBjYXNlICdAJzoKKyAgICBjYXNlICdbJzoKKyAgICBj
YXNlICdcXCc6CisgICAgY2FzZSAnXSc6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CisKKworCitzdGF0aWMgQk9PTCBp
c0xvb2thbGlrZUNoYXJhY3RlcihzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBv
aW50LCBVQ2hhcjMyIGNoYXJDb2RlKQoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gdHJlYXRzIHRo
ZSBmb2xsb3dpbmcgYXMgdW5zYWZlLCBsb29rYWxpa2UgY2hhcmFjdGVyczoKKyAgICAvLyBhbnkg
bm9uLXByaW50YWJsZSBjaGFyYWN0ZXIsIGFueSBjaGFyYWN0ZXIgY29uc2lkZXJlZCBhcyB3aGl0
ZXNwYWNlLAorICAgIC8vIGFueSBpZ25vcmFibGUgY2hhcmFjdGVyLCBhbmQgZW1vamkgY2hhcmFj
dGVycyByZWxhdGVkIHRvIGxvY2tzLgorICAgIAorICAgIC8vIFdlIGFsc28gY29uc2lkZXJlZCB0
aGUgY2hhcmFjdGVycyBpbiBNb3ppbGxhJ3MgYmxhY2tsaXN0IDxodHRwOi8va2IubW96aWxsYXpp
bmUub3JnL05ldHdvcmsuSUROLmJsYWNrbGlzdF9jaGFycz4uCisKKyAgICAvLyBTb21lIG9mIHRo
ZSBjaGFyYWN0ZXJzIGhlcmUgd2lsbCBuZXZlciBhcHBlYXIgb25jZSBJQ1UgaGFzIGVuY29kZWQu
CisgICAgLy8gRm9yIGV4YW1wbGUsIElDVSB0cmFuc2Zvcm1zIG1vc3Qgc3BhY2VzIGludG8gYW4g
QVNDSUkgc3BhY2UgYW5kIG1vc3QKKyAgICAvLyBzbGFzaGVzIGludG8gYW4gQVNDSUkgc29saWR1
cy4gQnV0IG9uZSBvZiB0aGUgdHdvIGNhbGxlcnMgdXNlcyB0aGlzCisgICAgLy8gb24gY2hhcmFj
dGVycyB0aGF0IGhhdmUgbm90IGJlZW4gcHJvY2Vzc2VkIGJ5IElDVSwgc28gdGhleSBhcmUgbmVl
ZGVkIGhlcmUuCisgICAgCisgICAgaWYgKCF1X2lzcHJpbnQoY2hhckNvZGUpIHx8IHVfaXNVV2hp
dGVTcGFjZShjaGFyQ29kZSkgfHwgdV9oYXNCaW5hcnlQcm9wZXJ0eShjaGFyQ29kZSwgVUNIQVJf
REVGQVVMVF9JR05PUkFCTEVfQ09ERV9QT0lOVCkpCisgICAgICAgIHJldHVybiBZRVM7CisgICAg
CisgICAgc3dpdGNoIChjaGFyQ29kZSkgeworICAgICAgICBjYXNlIDB4MDBCQzogLyogVlVMR0FS
IEZSQUNUSU9OIE9ORSBRVUFSVEVSICovCisgICAgICAgIGNhc2UgMHgwMEJEOiAvKiBWVUxHQVIg
RlJBQ1RJT04gT05FIEhBTEYgKi8KKyAgICAgICAgY2FzZSAweDAwQkU6IC8qIFZVTEdBUiBGUkFD
VElPTiBUSFJFRSBRVUFSVEVSUyAqLworICAgICAgICBjYXNlIDB4MDBFRDogLyogTEFUSU4gU01B
TEwgTEVUVEVSIEkgV0lUSCBBQ1VURSAqLworICAgICAgICBjYXNlIDB4MDFDMzogLyogTEFUSU4g
TEVUVEVSIFJFVFJPRkxFWCBDTElDSyAqLworICAgICAgICBjYXNlIDB4MDI1MTogLyogTEFUSU4g
U01BTEwgTEVUVEVSIEFMUEhBICovCisgICAgICAgIGNhc2UgMHgwMjYxOiAvKiBMQVRJTiBTTUFM
TCBMRVRURVIgU0NSSVBUIEcgKi8KKyAgICAgICAgY2FzZSAweDAyRDA6IC8qIE1PRElGSUVSIExF
VFRFUiBUUklBTkdVTEFSIENPTE9OICovCisgICAgICAgIGNhc2UgMHgwMzM1OiAvKiBDT01CSU5J
TkcgU0hPUlQgU1RST0tFIE9WRVJMQVkgKi8KKyAgICAgICAgY2FzZSAweDAzMzc6IC8qIENPTUJJ
TklORyBTSE9SVCBTT0xJRFVTIE9WRVJMQVkgKi8KKyAgICAgICAgY2FzZSAweDAzMzg6IC8qIENP
TUJJTklORyBMT05HIFNPTElEVVMgT1ZFUkxBWSAqLworICAgICAgICBjYXNlIDB4MDU4OTogLyog
QVJNRU5JQU4gRlVMTCBTVE9QICovCisgICAgICAgIGNhc2UgMHgwNUI0OiAvKiBIRUJSRVcgUE9J
TlQgSElSSVEgKi8KKyAgICAgICAgY2FzZSAweDA1QkM6IC8qIEhFQlJFVyBQT0lOVCBEQUdFU0gg
T1IgTUFQSVEgKi8KKyAgICAgICAgY2FzZSAweDA1QzM6IC8qIEhFQlJFVyBQVU5DVFVBVElPTiBT
T0YgUEFTVVEgKi8KKyAgICAgICAgY2FzZSAweDA1RjQ6IC8qIEhFQlJFVyBQVU5DVFVBVElPTiBH
RVJTSEFZSU0gKi8KKyAgICAgICAgY2FzZSAweDA2MDk6IC8qIEFSQUJJQy1JTkRJQyBQRVIgTUlM
TEUgU0lHTiAqLworICAgICAgICBjYXNlIDB4MDYwQTogLyogQVJBQklDLUlORElDIFBFUiBURU4g
VEhPVVNBTkQgU0lHTiAqLworICAgICAgICBjYXNlIDB4MDY1MDogLyogQVJBQklDIEtBU1JBICov
CisgICAgICAgIGNhc2UgMHgwNjYwOiAvKiBBUkFCSUMgSU5ESUMgRElHSVQgWkVSTyAqLworICAg
ICAgICBjYXNlIDB4MDY2QTogLyogQVJBQklDIFBFUkNFTlQgU0lHTiAqLworICAgICAgICBjYXNl
IDB4MDZENDogLyogQVJBQklDIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MDZGMDogLyog
RVhURU5ERUQgQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KKyAgICAgICAgY2FzZSAweDA3MDE6
IC8qIFNZUklBQyBTVVBSQUxJTkVBUiBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDA3MDI6
IC8qIFNZUklBQyBTVUJMSU5FQVIgRlVMTCBTVE9QICovCisgICAgICAgIGNhc2UgMHgwNzAzOiAv
KiBTWVJJQUMgU1VQUkFMSU5FQVIgQ09MT04gKi8KKyAgICAgICAgY2FzZSAweDA3MDQ6IC8qIFNZ
UklBQyBTVUJMSU5FQVIgQ09MT04gKi8KKyAgICAgICAgY2FzZSAweDE3MzU6IC8qIFBISUxJUFBJ
TkUgU0lOR0xFIFBVTkNUVUFUSU9OICovCisgICAgICAgIGNhc2UgMHgxRDA0OiAvKiBMQVRJTiBM
RVRURVIgU01BTEwgQ0FQSVRBTCBDICovCisgICAgICAgIGNhc2UgMHgxRDBGOiAvKiBMQVRJTiBM
RVRURVIgU01BTEwgQ0FQSVRBTCBPICovCisgICAgICAgIGNhc2UgMHgxRDFDOiAvKiBMQVRJTiBM
RVRURVIgU01BTEwgQ0FQSVRBTCBVICovCisgICAgICAgIGNhc2UgMHgxRDIwOiAvKiBMQVRJTiBM
RVRURVIgU01BTEwgQ0FQSVRBTCBWICovCisgICAgICAgIGNhc2UgMHgxRDIxOiAvKiBMQVRJTiBM
RVRURVIgU01BTEwgQ0FQSVRBTCBXICovCisgICAgICAgIGNhc2UgMHgxRDIyOiAvKiBMQVRJTiBM
RVRURVIgU01BTEwgQ0FQSVRBTCBaICovCisgICAgICAgIGNhc2UgMHgxRUNEOiAvKiBMQVRJTiBT
TUFMTCBMRVRURVIgTyBXSVRIIERPVCBCRUxPVyAqLworICAgICAgICBjYXNlIDB4MjAxMDogLyog
SFlQSEVOICovCisgICAgICAgIGNhc2UgMHgyMDExOiAvKiBOT04tQlJFQUtJTkcgSFlQSEVOICov
CisgICAgICAgIGNhc2UgMHgyMDI0OiAvKiBPTkUgRE9UIExFQURFUiAqLworICAgICAgICBjYXNl
IDB4MjAyNzogLyogSFlQSEVOQVRJT04gUE9JTlQgKi8KKyAgICAgICAgY2FzZSAweDIwMzk6IC8q
IFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICovCisgICAgICAgIGNh
c2UgMHgyMDNBOiAvKiBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksg
Ki8KKyAgICAgICAgY2FzZSAweDIwNDE6IC8qIENBUkVUIElOU0VSVElPTiBQT0lOVCAqLworICAg
ICAgICBjYXNlIDB4MjA0NDogLyogRlJBQ1RJT04gU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDIw
NTI6IC8qIENPTU1FUkNJQUwgTUlOVVMgU0lHTiAqLworICAgICAgICBjYXNlIDB4MjE1MzogLyog
VlVMR0FSIEZSQUNUSU9OIE9ORSBUSElSRCAqLworICAgICAgICBjYXNlIDB4MjE1NDogLyogVlVM
R0FSIEZSQUNUSU9OIFRXTyBUSElSRFMgKi8KKyAgICAgICAgY2FzZSAweDIxNTU6IC8qIFZVTEdB
UiBGUkFDVElPTiBPTkUgRklGVEggKi8KKyAgICAgICAgY2FzZSAweDIxNTY6IC8qIFZVTEdBUiBG
UkFDVElPTiBUV08gRklGVEhTICovCisgICAgICAgIGNhc2UgMHgyMTU3OiAvKiBWVUxHQVIgRlJB
Q1RJT04gVEhSRUUgRklGVEhTICovCisgICAgICAgIGNhc2UgMHgyMTU4OiAvKiBWVUxHQVIgRlJB
Q1RJT04gRk9VUiBGSUZUSFMgKi8KKyAgICAgICAgY2FzZSAweDIxNTk6IC8qIFZVTEdBUiBGUkFD
VElPTiBPTkUgU0lYVEggKi8KKyAgICAgICAgY2FzZSAweDIxNUE6IC8qIFZVTEdBUiBGUkFDVElP
TiBGSVZFIFNJWFRIUyAqLworICAgICAgICBjYXNlIDB4MjE1QjogLyogVlVMR0FSIEZSQUNUSU9O
IE9ORSBFSUdIVCAqLworICAgICAgICBjYXNlIDB4MjE1QzogLyogVlVMR0FSIEZSQUNUSU9OIFRI
UkVFIEVJR0hUSFMgKi8KKyAgICAgICAgY2FzZSAweDIxNUQ6IC8qIFZVTEdBUiBGUkFDVElPTiBG
SVZFIEVJR0hUSFMgKi8KKyAgICAgICAgY2FzZSAweDIxNUU6IC8qIFZVTEdBUiBGUkFDVElPTiBT
RVZFTiBFSUdIVEhTICovCisgICAgICAgIGNhc2UgMHgyMTVGOiAvKiBGUkFDVElPTiBOVU1FUkFU
T1IgT05FICovCisgICAgICAgIGNhc2UgMHgyMjEyOiAvKiBNSU5VUyBTSUdOICovCisgICAgICAg
IGNhc2UgMHgyMjE1OiAvKiBESVZJU0lPTiBTTEFTSCAqLworICAgICAgICBjYXNlIDB4MjIxNjog
LyogU0VUIE1JTlVTICovCisgICAgICAgIGNhc2UgMHgyMjM2OiAvKiBSQVRJTyAqLworICAgICAg
ICBjYXNlIDB4MjMzRjogLyogQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNMQVNIIEJBUiAqLworICAg
ICAgICBjYXNlIDB4MjNBRTogLyogSU5URUdSQUwgRVhURU5TSU9OICovCisgICAgICAgIGNhc2Ug
MHgyNDRBOiAvKiBPQ1IgRE9VQkxFIEJBQ0tTTEFTSCAqLworICAgICAgICBjYXNlIDB4MjU3MTog
LyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBVUFBFUiBSSUdIVCBU
TyBMT1dFUiBMRUZUICovCisgICAgICAgIGNhc2UgMHgyNTcyOiAvKiBEaXNwbGF5VHlwZTo6Qm94
IERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQgKi8KKyAg
ICAgICAgY2FzZSAweDI5RjY6IC8qIFNPTElEVVMgV0lUSCBPVkVSQkFSICovCisgICAgICAgIGNh
c2UgMHgyOUY4OiAvKiBCSUcgU09MSURVUyAqLworICAgICAgICBjYXNlIDB4MkFGQjogLyogVFJJ
UExFIFNPTElEVVMgQklOQVJZIFJFTEFUSU9OICovCisgICAgICAgIGNhc2UgMHgyQUZEOiAvKiBE
T1VCTEUgU09MSURVUyBPUEVSQVRPUiAqLworICAgICAgICBjYXNlIDB4MkZGMDogLyogSURFT0dS
QVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIExFRlQgVE8gUklHSFQgKi8KKyAgICAgICAgY2Fz
ZSAweDJGRjE6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBC
RUxPVyAqLworICAgICAgICBjYXNlIDB4MkZGMjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04g
Q0hBUkFDVEVSIExFRlQgVE8gTUlERExFIEFORCBSSUdIVCAqLworICAgICAgICBjYXNlIDB4MkZG
MzogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEFCT1ZFIFRPIE1JRERMRSBB
TkQgQkVMT1cgKi8KKyAgICAgICAgY2FzZSAweDJGRjQ6IC8qIElERU9HUkFQSElDIERFU0NSSVBU
SU9OIENIQVJBQ1RFUiBGVUxMIFNVUlJPVU5EICovCisgICAgICAgIGNhc2UgMHgyRkY1OiAvKiBJ
REVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBBQk9WRSAqLwor
ICAgICAgICBjYXNlIDB4MkZGNjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVS
IFNVUlJPVU5EIEZST00gQkVMT1cgKi8KKyAgICAgICAgY2FzZSAweDJGRjc6IC8qIElERU9HUkFQ
SElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIExFRlQgKi8KKyAgICAgICAg
Y2FzZSAweDJGRjg6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VO
RCBGUk9NIFVQUEVSIExFRlQgKi8KKyAgICAgICAgY2FzZSAweDJGRjk6IC8qIElERU9HUkFQSElD
IERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIFVQUEVSIFJJR0hUICovCisgICAg
ICAgIGNhc2UgMHgyRkZBOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VS
Uk9VTkQgRlJPTSBMT1dFUiBMRUZUICovCisgICAgICAgIGNhc2UgMHgyRkZCOiAvKiBJREVPR1JB
UEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgT1ZFUkxBSUQgKi8KKyAgICAgICAgY2FzZSAweDMw
MDI6IC8qIElERU9HUkFQSElDIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MzAwODogLyog
TEVGVCBBTkdMRSBCUkFDS0VUICovCisgICAgICAgIGNhc2UgMHgzMDE0OiAvKiBMRUZUIFRPUlRP
SVNFIFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweDMwMTU6IC8qIFJJR0hUIFRPUlRP
SVNFIFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweDMwMzM6IC8qIFZFUlRJQ0FMIEtB
TkEgUkVQRUFUIE1BUksgVVBQRVIgSEFMRiAqLworICAgICAgICBjYXNlIDB4MzAzNTogLyogVkVS
VElDQUwgS0FOQSBSRVBFQVQgTUFSSyBMT1dFUiBIQUxGICovCisgICAgICAgIGNhc2UgMHgzMjFE
OiAvKiBQQVJFTlRIRVNJWkVEIEtPUkVBTiBDSEFSQUNURVIgT0pFT04gKi8KKyAgICAgICAgY2Fz
ZSAweDMyMUU6IC8qIFBBUkVOVEhFU0laRUQgS09SRUFOIENIQVJBQ1RFUiBPIEhVICovCisgICAg
ICAgIGNhc2UgMHgzM0FFOiAvKiBTUVVBUkUgUkFEIE9WRVIgUyAqLworICAgICAgICBjYXNlIDB4
MzNBRjogLyogU1FVQVJFIFJBRCBPVkVSIFMgU1FVQVJFRCAqLworICAgICAgICBjYXNlIDB4MzND
NjogLyogU1FVQVJFIEMgT1ZFUiBLRyAqLworICAgICAgICBjYXNlIDB4MzNERjogLyogU1FVQVJF
IEEgT1ZFUiBNICovCisgICAgICAgIGNhc2UgMHgwNUI5OiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0g
Ki8KKyAgICAgICAgY2FzZSAweDA1QkE6IC8qIEhFQlJFVyBQT0lOVCBIT0xBTSBIQVNFUiBGT1Ig
VkFWICovCisgICAgICAgIGNhc2UgMHgwNUMxOiAvKiBIRUJSRVcgUE9JTlQgU0hJTiBET1QgKi8K
KyAgICAgICAgY2FzZSAweDA1QzI6IC8qIEhFQlJFVyBQT0lOVCBTSU4gRE9UICovCisgICAgICAg
IGNhc2UgMHgwNUM0OiAvKiBIRUJSRVcgTUFSSyBVUFBFUiBET1QgKi8KKyAgICAgICAgY2FzZSAw
eEE3MzE6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFMgKi8KKyAgICAgICAgY2FzZSAw
eEE3NzE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBEVU0gKi8KKyAgICAgICAgY2FzZSAweEE3ODk6
IC8qIE1PRElGSUVSIExFVFRFUiBDT0xPTiAqLworICAgICAgICBjYXNlIDB4RkUxNDogLyogUFJF
U0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFNFTUlDT0xPTiAqLworICAgICAgICBjYXNlIDB4
RkUxNTogLyogUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIEVYQ0xBTUFUSU9OIE1BUksg
Ki8KKyAgICAgICAgY2FzZSAweEZFM0Y6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNB
TCBMRUZUIEFOR0xFIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZFNUQ6IC8qIFNNQUxMIExF
RlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLworICAgICAgICBjYXNlIDB4RkU1RTogLyogU01B
TEwgUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLworICAgICAgICBjYXNlIDB4RkYwRTog
LyogRlVMTFdJRFRIIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4RkYwRjogLyogRlVMTCBX
SURUSCBTT0xJRFVTICovCisgICAgICAgIGNhc2UgMHhGRjYxOiAvKiBIQUxGV0lEVEggSURFT0dS
QVBISUMgRlVMTCBTVE9QICovCisgICAgICAgIGNhc2UgMHhGRkZDOiAvKiBPQkpFQ1QgUkVQTEFD
RU1FTlQgQ0hBUkFDVEVSICovCisgICAgICAgIGNhc2UgMHhGRkZEOiAvKiBSRVBMQUNFTUVOVCBD
SEFSQUNURVIgKi8KKyAgICAgICAgY2FzZSAweDFGNTBGOiAvKiBMT0NLIFdJVEggSU5LIFBFTiAq
LworICAgICAgICBjYXNlIDB4MUY1MTA6IC8qIENMT1NFRCBMT0NLIFdJVEggS0VZICovCisgICAg
ICAgIGNhc2UgMHgxRjUxMTogLyogS0VZICovCisgICAgICAgIGNhc2UgMHgxRjUxMjogLyogTE9D
SyAqLworICAgICAgICBjYXNlIDB4MUY1MTM6IC8qIE9QRU4gTE9DSyAqLworICAgICAgICAgICAg
cmV0dXJuIFlFUzsKKyAgICAgICAgY2FzZSAweDAzMDc6IC8qIENPTUJJTklORyBET1QgQUJPVkUg
Ki8KKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAyMzcgLyogTEFU
SU4gU01BTEwgTEVUVEVSIERPVExFU1MgSiAqLworICAgICAgICAgICAgICAgIHx8IHByZXZpb3Vz
Q29kZVBvaW50ID09IDB4MDEzMSAvKiBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJICovCisg
ICAgICAgICAgICAgICAgfHwgcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwNUQ1OyAvKiBIRUJSRVcg
TEVUVEVSIFZBViAqLworICAgICAgICBjYXNlIDB4MDU0ODogLyogQVJNRU5JQU4gQ0FQSVRBTCBM
RVRURVIgVk8gKi8KKyAgICAgICAgY2FzZSAweDA1NEQ6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVU
VEVSIFNFSCAqLworICAgICAgICBjYXNlIDB4MDU3ODogLyogQVJNRU5JQU4gU01BTEwgTEVUVEVS
IFZPICovCisgICAgICAgIGNhc2UgMHgwNTdEOiAvKiBBUk1FTklBTiBTTUFMTCBMRVRURVIgU0VI
ICovCisgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQKKyAgICAgICAgICAgICAg
ICAmJiAhaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQu
dmFsdWUoKSkKKyAgICAgICAgICAgICAgICAmJiAhaXNBcm1lbmlhblNjcmlwdENoYXJhY3Rlcihw
cmV2aW91c0NvZGVQb2ludC52YWx1ZSgpKTsKKyAgICAgICAgY2FzZSAnLic6CisgICAgICAgICAg
ICByZXR1cm4gTk87CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gcHJldmlv
dXNDb2RlUG9pbnQKKyAgICAgICAgICAgICAgICAmJiBpc0FybWVuaWFuTG9va2FsaWtlQ2hhcmFj
dGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCisgICAgICAgICAgICAgICAgJiYgIShpc0Fy
bWVuaWFuU2NyaXB0Q2hhcmFjdGVyKGNoYXJDb2RlKSB8fCBpc0FTQ0lJRGlnaXRPclZhbGlkSG9z
dENoYXJhY3RlcihjaGFyQ29kZSkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2hpdGVMaXN0
SUROU2NyaXB0KGNvbnN0IGNoYXIqIHNjcmlwdE5hbWUpCit7CisgICAgaW50MzJfdCBzY3JpcHQg
PSB1X2dldFByb3BlcnR5VmFsdWVFbnVtKFVDSEFSX1NDUklQVCwgc2NyaXB0TmFtZSk7CisgICAg
aWYgKHNjcmlwdCA+PSAwICYmIHNjcmlwdCA8IFVTQ1JJUFRfQ09ERV9MSU1JVCkgeworICAgICAg
ICBzaXplX3QgaW5kZXggPSBzY3JpcHQgLyAzMjsKKyAgICAgICAgdWludDMyX3QgbWFzayA9IDEg
PDwgKHNjcmlwdCAlIDMyKTsKKyAgICAgICAgSUROU2NyaXB0V2hpdGVMaXN0W2luZGV4XSB8PSBt
YXNrOworICAgIH0KK30KKworc3RhdGljIEJPT0wgcmVhZElETlNjcmlwdFdoaXRlTGlzdEZpbGUo
TlNTdHJpbmcgKmZpbGVuYW1lKQoreworICAgIGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVy
biBOTzsKKworICAgIEZJTEUgKmZpbGUgPSBmb3BlbihbZmlsZW5hbWUgZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uXSwgInIiKTsKKyAgICBpZiAoIWZpbGUpCisgICAgICAgIHJldHVybiBOTzsKKyAg
ICAKKyAgICAvLyBSZWFkIGEgd29yZCBhdCBhIHRpbWUuCisgICAgLy8gQWxsb3cgY29tbWVudHMs
IHN0YXJ0aW5nIHdpdGggIyBjaGFyYWN0ZXIgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KKyAgICB3
aGlsZSAoMSkgeworICAgICAgICAvLyBTa2lwIGEgY29tbWVudCBpZiBwcmVzZW50LgorICAgICAg
ICBpZiAoZnNjYW5mKGZpbGUsICIgIyUqW15cblxyXSUqW1xuXHJdIikgPT0gRU9GKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICAvLyBSZWFkIGEgc2NyaXB0IG5hbWUgaWYg
cHJlc2VudC4KKyAgICAgICAgY2hhciB3b3JkWzMzXTsKKyAgICAgICAgaW50IHJlc3VsdCA9IGZz
Y2FuZihmaWxlLCAiICUzMlteIyBcdFxuXHJdJSpbXiMgXHRcblxyXSAiLCB3b3JkKTsKKyAgICAg
ICAgaWYgKHJlc3VsdCA9PSBFT0YpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAg
ICAgIGlmIChyZXN1bHQgPT0gMSkgeworICAgICAgICAgICAgLy8gR290IGEgd29yZCwgbWFwIHRv
IHNjcmlwdCBjb2RlIGFuZCBwdXQgaXQgaW50byB0aGUgYXJyYXkuCisgICAgICAgICAgICB3aGl0
ZUxpc3RJRE5TY3JpcHQod29yZCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZmNsb3NlKGZpbGUp
OworICAgIHJldHVybiBZRVM7Cit9CisKK3N0YXRpYyBCT09MIGFsbENoYXJhY3RlcnNJbklETlNj
cmlwdFdoaXRlTGlzdChjb25zdCBVQ2hhciAqYnVmZmVyLCBpbnQzMl90IGxlbmd0aCkKK3sKKyAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IGZsYWc7CisgICAgZGlzcGF0Y2hfb25jZSgmZmxhZywg
XnsKKyAgICAgICAgLy8gUmVhZCB3aGl0ZSBsaXN0IGZyb20gbGlicmFyeS4KKyAgICAgICAgTlNB
cnJheSAqZGlycyA9IE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TTGlicmFy
eURpcmVjdG9yeSwgTlNBbGxEb21haW5zTWFzaywgWUVTKTsKKyAgICAgICAgaW50IG51bURpcnMg
PSBbZGlycyBjb3VudF07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtRGlyczsgaSsr
KSB7CisgICAgICAgICAgICBpZiAocmVhZElETlNjcmlwdFdoaXRlTGlzdEZpbGUoW1tkaXJzIG9i
amVjdEF0SW5kZXg6aV0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSUROU2NyaXB0
V2hpdGVMaXN0LnR4dCJdKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgY29uc3QgY2hhciogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdFsyMF0gPSB7CisgICAg
ICAgICAgICAiQ29tbW9uIiwKKyAgICAgICAgICAgICJJbmhlcml0ZWQiLAorICAgICAgICAgICAg
IkFyYWJpYyIsCisgICAgICAgICAgICAiQXJtZW5pYW4iLAorICAgICAgICAgICAgIkJvcG9tb2Zv
IiwKKyAgICAgICAgICAgICJDYW5hZGlhbl9BYm9yaWdpbmFsIiwKKyAgICAgICAgICAgICJEZXZh
bmFnYXJpIiwKKyAgICAgICAgICAgICJEZXNlcmV0IiwKKyAgICAgICAgICAgICJHdWphcmF0aSIs
CisgICAgICAgICAgICAiR3VybXVraGkiLAorICAgICAgICAgICAgIkhhbmd1bCIsCisgICAgICAg
ICAgICAiSGFuIiwKKyAgICAgICAgICAgICJIZWJyZXciLAorICAgICAgICAgICAgIkhpcmFnYW5h
IiwKKyAgICAgICAgICAgICJLYXRha2FuYV9Pcl9IaXJhZ2FuYSIsCisgICAgICAgICAgICAiS2F0
YWthbmEiLAorICAgICAgICAgICAgIkxhdGluIiwKKyAgICAgICAgICAgICJUYW1pbCIsCisgICAg
ICAgICAgICAiVGhhaSIsCisgICAgICAgICAgICAiWWkiLAorICAgICAgICB9OworICAgICAgICBm
b3IgKGNvbnN0IGNoYXIqIHNjcmlwdE5hbWUgOiBkZWZhdWx0SUROU2NyaXB0V2hpdGVMaXN0KQor
ICAgICAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHNjcmlwdE5hbWUpOworICAgIH0pOworICAg
IAorICAgIGludDMyX3QgaSA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91
c0NvZGVQb2ludDsKKyAgICB3aGlsZSAoaSA8IGxlbmd0aCkgeworICAgICAgICBVQ2hhcjMyIGM7
CisgICAgICAgIFUxNl9ORVhUKGJ1ZmZlciwgaSwgbGVuZ3RoLCBjKQorICAgICAgICBVRXJyb3JD
b2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOworICAgICAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1
c2NyaXB0X2dldFNjcmlwdChjLCAmZXJyb3IpOworICAgICAgICBpZiAoZXJyb3IgIT0gVV9aRVJP
X0VSUk9SKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoImdvdCBJQ1UgZXJyb3Igd2hpbGUgdHJ5
aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4g
Tk87CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNjcmlwdCA8IDApIHsKKyAgICAgICAgICAgIExP
R19FUlJPUigiZ290IG5lZ2F0aXZlIG51bWJlciBmb3Igc2NyaXB0IGNvZGUgZnJvbSBJQ1U6ICVk
Iiwgc2NyaXB0KTsKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoc2NyaXB0ID49IFVTQ1JJUFRfQ09ERV9MSU1JVCkKKyAgICAgICAgICAgIHJldHVybiBOTzsK
KworICAgICAgICBzaXplX3QgaW5kZXggPSBzY3JpcHQgLyAzMjsKKyAgICAgICAgdWludDMyX3Qg
bWFzayA9IDEgPDwgKHNjcmlwdCAlIDMyKTsKKyAgICAgICAgaWYgKCEoSUROU2NyaXB0V2hpdGVM
aXN0W2luZGV4XSAmIG1hc2spKQorICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAgICAKKyAg
ICAgICAgaWYgKGlzTG9va2FsaWtlQ2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LCBjKSkKKyAg
ICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgcHJldmlvdXNDb2RlUG9pbnQgPSBjOworICAg
IH0KKyAgICByZXR1cm4gWUVTOworfQorCitzdGF0aWMgYm9vbCBpc1NlY29uZExldmVsRG9tYWlu
TmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGludDMyX3QgbGVuZ3Ro
LCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woVUNoYXIpPiYgY2hhcmFjdGVySXNBbGxvd2VkKQor
eworICAgIEFTU0VSVChsZW5ndGggPiAwKTsKKworICAgIGZvciAoaW50MzJfdCBpID0gbGVuZ3Ro
IC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgVUNoYXIgY2ggPSBidWZmZXJbaV07CisgICAg
ICAgIAorICAgICAgICBpZiAoY2hhcmFjdGVySXNBbGxvd2VkKGNoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAKKyAgICAgICAgLy8gT25seSBjaGVjayB0aGUgc2Vjb25kIGxldmVs
IGRvbWFpbi4gTG93ZXIgbGV2ZWwgcmVnaXN0cmFycyBtYXkgaGF2ZSBkaWZmZXJlbnQgcnVsZXMu
CisgICAgICAgIGlmIChjaCA9PSAnLicpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNkZWZp
bmUgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoc3VmZml4LCBmdW5jdGlvbikgXAorICAg
IHsgXAorICAgICAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBzdWZmaXhMZW5ndGggPSBzaXplb2Yo
c3VmZml4KSAvIHNpemVvZihzdWZmaXhbMF0pOyBcCisgICAgICAgIGlmIChsZW5ndGggPiBzdWZm
aXhMZW5ndGggJiYgMCA9PSBtZW1jbXAoYnVmZmVyICsgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBz
dWZmaXgsIHNpemVvZihzdWZmaXgpKSkgXAorICAgICAgICAgICAgcmV0dXJuIGlzU2Vjb25kTGV2
ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMoYnVmZmVyLCBsZW5ndGggLSBzdWZmaXhMZW5n
dGgsIGZ1bmN0aW9uKTsgXAorICAgIH0KKworc3RhdGljIGJvb2wgaXNSdXNzaWFuRG9tYWluTmFt
ZUNoYXJhY3RlcihVQ2hhciBjaCkKK3sKKyAgICAvLyBPbmx5IG1vZGVybiBSdXNzaWFuIGxldHRl
cnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgIHJldHVybiAoY2ggPj0gMHgw
NDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGlzQVNDSUlEaWdpdChjaCkg
fHwgY2ggPT0gJy0nOworfQorCitzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExE
UnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCit7CisgICAgLy8gU2tp
cCB0cmFpbGluZyBkb3QgZm9yIHJvb3QgZG9tYWluLgorICAgIGlmIChidWZmZXJbbGVuZ3RoIC0g
MV0gPT0gJy4nKQorICAgICAgICBsZW5ndGgtLTsKKworICAgIC8vIGh0dHA6Ly9jY3RsZC5ydS9m
aWxlcy9wZGYvZG9jcy9ydWxlc19ydS1yZi5wZGYKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3ly
aWxsaWNSRltdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MCwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEVSCisgICAgICAgIDB4MDQ0NCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IEVGCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1JG
LCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9ydXNuYW1l
cy5ydS9ydWxlcy5wbAorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1JVU1tdID0gewor
ICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVS
CisgICAgICAgIDB4MDQ0MywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKKyAgICAgICAgMHgw
NDQxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICB9OworICAgIENIRUNLX1JVTEVT
X0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljUlVTLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFj
dGVyKTsKKworICAgIC8vIGh0dHA6Ly9ydS5mYWl0aWQub3JnL3Byb2plY3RzL21vc2Nvdy9kb2N1
bWVudHMvbW9za3ZhL2lkbgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY01PU0tWQVtd
ID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzQywgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEVNCisgICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAg
ICAgMHgwNDQxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAgICAgMHgwNDNBLCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyAgICAgICAgMHgwNDMyLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgVkUKKyAgICAgICAgMHgwNDMwICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
QQorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT1NL
VkEsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDovL3d3dy5k
b3RkZXRpLnJ1L2ZvcnVzZXIvZG9jcy9yZWdydWxlcy5waHAKKyAgICBzdGF0aWMgY29uc3QgVUNo
YXIgY3lyaWxsaWNERVRJW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDM0LCAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICAgICAgMHgwNDM1LCAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgSUUKKyAgICAgICAgMHgwNDQyLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUK
KyAgICAgICAgMHgwNDM4ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQorICAgIH07CisgICAg
Q0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNERVRJLCBpc1J1c3NpYW5Eb21h
aW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHJ1bGVzIG5v
dCBwdWJsaXNoZWQuIFRoZSB3b3JkIGlzIFJ1c3NpYW4sIHNvIG9ubHkgYWxsb3dpbmcgUnVzc2lh
biBhdCB0aGlzIHRpbWUsCisgICAgLy8gYWx0aG91Z2ggd2UgbWF5IG5lZWQgdG8gcmV2aXNlIHRo
ZSBjaGVja3MgaWYgdGhpcyBlbmRzIHVwIGJlaW5nIHVzZWQgd2l0aCBvdGhlciBsYW5ndWFnZXMg
c3Bva2VuIGluIFJ1c3NpYS4KKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNPTkxBWU5b
XSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBPCisgICAgICAgIDB4MDQzRCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCisgICAg
ICAgIDB4MDQzQiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCisgICAgICAgIDB4MDQzMCwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICAgICAgMHgwNDM5LCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgU0hPUlQgSQorICAgICAgICAweDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBFTgorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxs
aWNPTkxBWU4sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDov
L2NvcmVuaWMub3JnIC0gc2FtZSBhcyBhYm92ZS4KKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3ly
aWxsaWNTQVlUW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRVMKKyAgICAgICAgMHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgQQorICAgICAgICAweDA0MzksIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCisg
ICAgICAgIDB4MDQ0MiAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCisgICAgfTsKKyAgICBD
SEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1NBWVQsIGlzUnVzc2lhbkRvbWFp
bk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDovL3Bpci5vcmcvcHJvZHVjdHMvb3ByLWRv
bWFpbi8gLSBydWxlcyBub3QgcHVibGlzaGVkLiBBY2NvcmRpbmcgdG8gdGhlIHJlZ2lzdHJ5IHNp
dGUsCisgICAgLy8gdGhlIGludGVuZGVkIGF1ZGllbmNlIGlzICJSdXNzaWFuIGFuZCBvdGhlciBT
bGF2aWMtc3BlYWtpbmcgbWFya2V0cyIuCisgICAgLy8gQ2hyb21lIGFwcGVhcnMgdG8gb25seSBh
bGxvdyBSdXNzaWFuLCBzbyBzdGlja2luZyB3aXRoIHRoYXQgZm9yIG5vdy4KKyAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgY3lyaWxsaWNPUkdbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0
M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCisgICAgICAgIDB4MDQ0MCwgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIEVSCisgICAgICAgIDB4MDQzMyAgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEdIRQorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxs
aWNPUkcsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDovL2Nj
dGxkLmJ5L3J1bGVzLmh0bWwKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNCRUxbXSA9
IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0MzEsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBCRQorICAgICAgICAweDA0MzUsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBJRQorICAgICAg
ICAweDA0M0IgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAorICAgIH07CisgICAgQ0hFQ0tf
UlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNCRUwsIFtdKFVDaGFyIGNoKSB7CisgICAg
ICAgIC8vIFJ1c3NpYW4gYW5kIEJ5ZWxvcnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hl
cyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgw
NDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNDU2IHx8IGNoID09IDB4MDQ1RSB8fCBj
aCA9PSAweDIwMTkgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisK
KyAgICAvLyBodHRwOi8vd3d3Lm5pYy5rei9kb2NzL3BvcnlhZG9rX3ZuZWRyZW5peWFfa2F6X3J1
LnBkZgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY0tBWltdID0geworICAgICAgICAn
LicsCisgICAgICAgIDB4MDQ5QiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVT
Q0VOREVSCisgICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICAg
ICAgMHgwNDM3ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUKKyAgICB9OworICAgIENIRUNL
X1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljS0FaLCBbXShVQ2hhciBjaCkgeworICAg
ICAgICAvLyBLYXpha2ggbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisg
ICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgw
NDUxIHx8IGNoID09IDB4MDREOSB8fCBjaCA9PSAweDA0OTMgfHwgY2ggPT0gMHgwNDlCIHx8IGNo
ID09IDB4MDRBMyB8fCBjaCA9PSAweDA0RTkgfHwgY2ggPT0gMHgwNEIxIHx8IGNoID09IDB4MDRB
RiB8fCBjaCA9PSAweDA0QkIgfHwgY2ggPT0gMHgwNDU2IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwg
Y2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0cDovL3VhbmljLm5ldC9kb2NzL2RvY3Vt
ZW50cy11a3IvUnVsZXMlMjBvZiUyMFVLUl92NC4wLnBkZgorICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciBjeXJpbGxpY1VLUltdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MywgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIFUKKyAgICAgICAgMHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgS0EKKyAgICAgICAgMHgwNDQwICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAg
ICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljVUtSLCBbXShV
Q2hhciBjaCkgeworICAgICAgICAvLyBSdXNzaWFuIGFuZCBVa3JhaW5pYW4gbGV0dGVycywgZGln
aXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisgICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMw
ICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09IDB4MDQ5MSB8fCBjaCA9
PSAweDA0MDQgfHwgY2ggPT0gMHgwNDU2IHx8IGNoID09IDB4MDQ1NyB8fCBpc0FTQ0lJRGlnaXQo
Y2gpIHx8IGNoID09ICctJzsKKyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly93d3cucm5pZHMucnMv
ZGF0YS9ET0tVTUVOVEkvaWRuLXNyYi1wb2xpY3ktdGVybXNvZnVzZS12MS40LWVuZy5wZGYKKyAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNTUkJbXSA9IHsKKyAgICAgICAgJy4nLAorICAg
ICAgICAweDA0NDEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUworICAgICAgICAweDA0NDAs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICAgICAweDA0MzEgIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBCRQorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENI
RVMoY3lyaWxsaWNTUkIsIFtdKFVDaGFyIGNoKSB7CisgICAgICAgIC8vIFNlcmJpYW4gbGV0dGVy
cywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisgICAgICAgIHJldHVybiAoY2ggPj0g
MHgwNDMwICYmIGNoIDw9IDB4MDQzOCkgfHwgKGNoID49IDB4MDQzQSAmJiBjaCA8PSAweDA0NDgp
IHx8IGNoID09IDB4MDQ1MiB8fCBjaCA9PSAweDA0NTggfHwgY2ggPT0gMHgwNDU5IHx8IGNoID09
IDB4MDQ1QSB8fCBjaCA9PSAweDA0NUIgfHwgY2ggPT0gMHgwNDVGIHx8IGlzQVNDSUlEaWdpdChj
aCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0cDovL21hcm5ldC5tay9kb2Mv
cHJhdmlsbmlrLW1rLW1rZC5wZGYKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNS0Rb
XSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBFTQorICAgICAgICAweDA0M0EsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAg
ICAgICAweDA0MzQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBERQorICAgIH07CisgICAgQ0hF
Q0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNS0QsIFtdKFVDaGFyIGNoKSB7Cisg
ICAgICAgIC8vIE1hY2Vkb25pYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93
ZWQuCisgICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQzOCkgfHwgKGNo
ID49IDB4MDQzQSAmJiBjaCA8PSAweDA0NDgpIHx8IGNoID09IDB4MDQ1MyB8fCBjaCA9PSAweDA0
NTUgfHwgY2ggPT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2gg
PT0gMHgwNDVDIHx8IGNoID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICct
JzsKKyAgICB9KTsKKworICAgIC8vIGh0dHBzOi8vd3d3Lm1vbi5tbi9jcy8KKyAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgY3lyaWxsaWNNT05bXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0
M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQorICAgICAgICAweDA0M0UsIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBPCisgICAgICAgIDB4MDQzRCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEVOCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxp
Y01PTiwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gTW9uZ29saWFuIGxldHRlcnMsIGRpZ2l0
cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAm
JiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0RTkgfHwgY2ggPT0g
MHgwNEFGIHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAg
Ly8gTm90IGEga25vd24gdG9wIGxldmVsIGRvbWFpbiB3aXRoIHNwZWNpYWwgcnVsZXMuCisgICAg
cmV0dXJuIE5POworfQorCisvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIG5vIG1hcHBpbmcg
aXMgbmVjZXNzYXJ5LgorLy8gSWYgbWFrZVN0cmluZyBpcyBOTywgdGhlbiByZXR1cm4gdmFsdWUg
aXMgZWl0aGVyIG5pbCBvciBzZWxmIHRvIGluZGljYXRlIG1hcHBpbmcgaXMgbmVjZXNzYXJ5Lgor
Ly8gSWYgbWFrZVN0cmluZyBpcyBZRVMsIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwg
b3IgdGhlIG1hcHBlZCBzdHJpbmcuCitzdGF0aWMgTlNTdHJpbmcgKm1hcEhvc3ROYW1lV2l0aFJh
bmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgZW5jb2RlLCBCT09MIG1h
a2VTdHJpbmcsIEJPT0wgKmVycm9yKQoreworICAgIGlmIChyYW5nZS5sZW5ndGggPiBIT1NUX05B
TUVfQlVGRkVSX0xFTkdUSCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBpZiAoIVtz
dHJpbmcgbGVuZ3RoXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBVQ2hhciBzb3Vy
Y2VCdWZmZXJbSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEhdOworICAgIFVDaGFyIGRlc3RpbmF0aW9u
QnVmZmVyW0hPU1RfTkFNRV9CVUZGRVJfTEVOR1RIXTsKKyAgICAKKyAgICBpZiAoZW5jb2RlICYm
IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIiUiIG9wdGlvbnM6TlNMaXRlcmFsU2VhcmNoIHJhbmdl
OnJhbmdlXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKSB7CisgICAgICAgIE5TU3RyaW5nICpzdWJz
dHJpbmcgPSBbc3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpyYW5nZV07CisgICAgICAgIHN1YnN0
cmluZyA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlU3RyaW5nQnlSZXBsYWNpbmdQZXJj
ZW50RXNjYXBlcyhudWxscHRyLCAoQ0ZTdHJpbmdSZWYpc3Vic3RyaW5nLCBDRlNUUigiIikpKTsK
KyAgICAgICAgaWYgKHN1YnN0cmluZykgeworICAgICAgICAgICAgc3RyaW5nID0gc3Vic3RyaW5n
OworICAgICAgICAgICAgcmFuZ2UgPSBOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIGludCBsZW5ndGggPSByYW5nZS5sZW5ndGg7Cisg
ICAgW3N0cmluZyBnZXRDaGFyYWN0ZXJzOnNvdXJjZUJ1ZmZlciByYW5nZTpyYW5nZV07CisgICAg
CisgICAgVUVycm9yQ29kZSB1ZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgVUlETkFJbmZvIHBy
b2Nlc3NpbmdEZXRhaWxzID0gVUlETkFfSU5GT19JTklUSUFMSVpFUjsKKyAgICBpbnQzMl90IG51
bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPSAoZW5jb2RlID8gdWlkbmFfbmFtZVRvQVNDSUkgOiB1aWRu
YV9uYW1lVG9Vbmljb2RlKSgmVVJMUGFyc2VyOjppbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5z
Y29kZXIoKSwgc291cmNlQnVmZmVyLCBsZW5ndGgsIGRlc3RpbmF0aW9uQnVmZmVyLCBIT1NUX05B
TUVfQlVGRkVSX0xFTkdUSCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmdWVycm9yKTsKKyAgICBpZiAo
bGVuZ3RoICYmIChVX0ZBSUxVUkUodWVycm9yKSB8fCBwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMp
KSB7CisgICAgICAgICplcnJvciA9IFlFUzsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9Cisg
ICAgCisgICAgaWYgKG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPT0gbGVuZ3RoICYmICFtZW1jbXAo
c291cmNlQnVmZmVyLCBkZXN0aW5hdGlvbkJ1ZmZlciwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSkp
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKCFlbmNvZGUgJiYgIWFsbENoYXJh
Y3RlcnNJbklETlNjcmlwdFdoaXRlTGlzdChkZXN0aW5hdGlvbkJ1ZmZlciwgbnVtQ2hhcmFjdGVy
c0NvbnZlcnRlZCkgJiYgIWFsbENoYXJhY3RlcnNBbGxvd2VkQnlUTERSdWxlcyhkZXN0aW5hdGlv
bkJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCkpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgCisgICAgcmV0dXJuIG1ha2VTdHJpbmcgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6ZGVzdGluYXRpb25CdWZmZXIgbGVuZ3RoOm51bUNoYXJhY3RlcnNDb252ZXJ0ZWRdIDogc3Ry
aW5nOworfQorCitzdGF0aWMgQk9PTCBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2UoTlNT
dHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCAqZXJyb3IpCit7CisgICAgcmV0dXJu
IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIE5PLCBOTywgZXJyb3IpICE9IG5p
bDsKK30KKyAKK3N0YXRpYyBCT09MIGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShOU1N0
cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MICplcnJvcikKK3sKKyAgICByZXR1cm4g
bWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgWUVTLCAgTk8sIGVycm9yKSAhPSBu
aWw7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJp
bmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSkKK3sKKyAgICBCT09MIGVycm9yID0gTk87CisgICAg
TlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBOTywg
WUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBy
ZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQorCitzdGF0aWMgTlNTdHJpbmcgKmVuY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCit7Cisg
ICAgQk9PTCBlcnJvciA9IE5POworICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRo
UmFuZ2Uoc3RyaW5nLCByYW5nZSwgWUVTLCBZRVMsICZlcnJvcik7CisgICAgaWYgKGVycm9yKQor
ICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9
CisKK05TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQoreworICAgIEJP
T0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdl
KHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgTk8sIFlFUywgJmVycm9y
KTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICFob3N0
ID8gc3RyaW5nIDogaG9zdDsKK30KKworTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5TU3RyaW5n
ICpzdHJpbmcpCit7CisgICAgQk9PTCBlcnJvciA9IE5POworICAgIE5TU3RyaW5nICpob3N0ID0g
bWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0
aF0pLCBZRVMsIFlFUywgJmVycm9yKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKK30KKworc3RhdGljIHZvaWQg
Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJh
bmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSwgQk9PTCBlbmNvZGUpCit7Cisg
ICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0
aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3QgbmVlZCBtYXBwaW5nLgorICAgIC8v
IFRoZXJlZm9yZSwgd2UgdXNlIG5pbCB0byBpbmRpY2F0ZSBubyBtYXBwaW5nIGhlcmUgYW5kIGFu
IGVtcHR5IGFycmF5IHRvIGluZGljYXRlIGVycm9yLgorCisgICAgQk9PTCBlcnJvciA9IE5POwor
ICAgIEJPT0wgbmVlZHNNYXBwaW5nID0gZW5jb2RlID8gaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0
aFJhbmdlKHN0cmluZywgcmFuZ2UsICZlcnJvcikgOiBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRo
UmFuZ2Uoc3RyaW5nLCByYW5nZSwgJmVycm9yKTsKKyAgICBpZiAoIWVycm9yICYmICFuZWVkc01h
cHBpbmcpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoIWFycmF5KQorICAgICAgICBh
cnJheSA9IGFkb3B0TlMoW05TTXV0YWJsZUFycmF5IG5ld10pOworCisgICAgaWYgKCFlcnJvcikK
KyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1d
OworfQorCitzdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyhOU1N0cmlu
ZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJh
eSkKK3sKKyAgICByZXR1cm4gY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhzdHJpbmcsIHJh
bmdlLCBhcnJheSwgWUVTKTsKK30KKworc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVk
RGVjb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiYgYXJyYXkpCit7CisgICAgcmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1h
cHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIE5PKTsKK30KKworc3RhdGljIHZvaWQgYXBwbHlI
b3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywgU3RyaW5n
UmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkp
Cit7CisgICAgLy8gSW4gYSBtYWlsdG86IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVyIGEgJ0An
IGNoYXJhY3RlciBhbmQgZW5kIHdpdGggYSAnPicgb3IgJywnIG9yICc/JyBjaGFyYWN0ZXIuCisg
ICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5ncyBzbyB0aGF0IGNoYXJhY3RlcnMgaW4gdGhlbSBkb24n
dCBjb25mdXNlIHVzLgorICAgIC8vIFdoZW4gd2UgZmluZCBhICc/JyBjaGFyYWN0ZXIsIHdlIGFy
ZSBwYXN0IHRoZSBwYXJ0IG9mIHRoZSBVUkwgdGhhdCBjb250YWlucyBob3N0IG5hbWVzLgorICAg
IAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBo
b3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3Rl
clNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJcIkA/Il07CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3ROYW1lRW5kQ2hhcmFjdGVycyA9
IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiPiw/
Il07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+
IHF1b3RlZFN0cmluZ0NoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0
aENoYXJhY3RlcnNJblN0cmluZzpAIlwiXFwiXTsKKyAgICAKKyAgICB1bnNpZ25lZCBzdHJpbmdM
ZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07CisgICAgTlNSYW5nZSByZW1haW5pbmcgPSBOU01ha2VS
YW5nZSgwLCBzdHJpbmdMZW5ndGgpOworICAgIAorICAgIHdoaWxlICgxKSB7CisgICAgICAgIC8v
IEZpbmQgc3RhcnQgb2YgaG9zdCBuYW1lIG9yIG9mIHF1b3RlZCBzdHJpbmcuCisgICAgICAgIE5T
UmFuZ2UgaG9zdE5hbWVPclN0cmluZ1N0YXJ0ID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJv
bVNldDpob3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6
MCByYW5nZTpyZW1haW5pbmddOworICAgICAgICBpZiAoaG9zdE5hbWVPclN0cmluZ1N0YXJ0Lmxv
Y2F0aW9uID09IE5TTm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdW5p
Y2hhciBjID0gW3N0cmluZyBjaGFyYWN0ZXJBdEluZGV4Omhvc3ROYW1lT3JTdHJpbmdTdGFydC5s
b2NhdGlvbl07CisgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoaG9zdE5h
bWVPclN0cmluZ1N0YXJ0KTsKKyAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xlbmd0
aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKKyAgICAgICAgCisgICAgICAgIGlmIChjID09ICc/JykK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGlmIChjID09ICdAJykgewor
ICAgICAgICAgICAgLy8gRmluZCBlbmQgb2YgaG9zdCBuYW1lLgorICAgICAgICAgICAgdW5zaWdu
ZWQgaG9zdE5hbWVTdGFydCA9IHJlbWFpbmluZy5sb2NhdGlvbjsKKyAgICAgICAgICAgIE5TUmFu
Z2UgaG9zdE5hbWVFbmQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhvc3ROYW1l
RW5kQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5nXTsKKyAg
ICAgICAgICAgIEJPT0wgZG9uZTsKKyAgICAgICAgICAgIGlmIChob3N0TmFtZUVuZC5sb2NhdGlv
biA9PSBOU05vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgaG9zdE5hbWVFbmQubG9jYXRpb24g
PSBzdHJpbmdMZW5ndGg7CisgICAgICAgICAgICAgICAgZG9uZSA9IFlFUzsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gaG9zdE5hbWVF
bmQubG9jYXRpb247CisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xl
bmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICBkb25lID0gTk87Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFByb2Nlc3MgaG9zdCBu
YW1lIHJhbmdlLgorICAgICAgICAgICAgZihzdHJpbmcsIE5TTWFrZVJhbmdlKGhvc3ROYW1lU3Rh
cnQsIGhvc3ROYW1lRW5kLmxvY2F0aW9uIC0gaG9zdE5hbWVTdGFydCksIGFycmF5KTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKGRvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5nLgorICAg
ICAgICAgICAgQVNTRVJUKGMgPT0gJyInKTsKKyAgICAgICAgICAgIHdoaWxlICgxKSB7CisgICAg
ICAgICAgICAgICAgTlNSYW5nZSBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBbc3RyaW5n
IHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OnF1b3RlZFN0cmluZ0NoYXJhY3RlcnMuZ2V0KCkuZ2V0
KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107CisgICAgICAgICAgICAgICAgaWYgKGVzY2Fw
ZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBjID0gW3N0cmluZyBjaGFyYWN0
ZXJBdEluZGV4OmVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbl07CisgICAgICAg
ICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gTlNNYXhSYW5nZShlc2NhcGVkQ2hhcmFjdGVy
T3JTdHJpbmdFbmQpOworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdM
ZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgLy8gSWYgd2UgYXJlIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgdGhlbiBicmVhayBmcm9t
IHRoZSBzdHJpbmcgbG9vcCBiYWNrIHRvIHRoZSBob3N0IG5hbWUgbG9vcC4KKyAgICAgICAgICAg
ICAgICBpZiAoYyA9PSAnIicpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFNraXAgZXNjYXBlZCBjaGFyYWN0ZXIuCisgICAg
ICAgICAgICAgICAgQVNTRVJUKGMgPT0gJ1xcJyk7CisgICAgICAgICAgICAgICAgaWYgKCFyZW1h
aW5pbmcubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
ICAgICByZW1haW5pbmcubG9jYXRpb24gKz0gMTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmcu
bGVuZ3RoIC09IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRp
YyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcs
IFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4m
IGFycmF5KQoreworICAgIC8vIEZpbmQgaG9zdG5hbWVzLiBUb28gYmFkIHdlIGNhbid0IHVzZSBh
bnkgcmVhbCBVUkwtcGFyc2luZyBjb2RlIHRvIGRvIHRoaXMsCisgICAgLy8gYnV0IHdlIGhhdmUg
dG8gZG8gaXQgYmVmb3JlIGRvaW5nIGFsbCB0aGUgJS1lc2NhcGluZywgYW5kIHRoaXMgaXMgdGhl
IG9ubHkKKyAgICAvLyBjb2RlIHdlIGhhdmUgdGhhdCBwYXJzZXMgbWFpbHRvIFVSTHMgYW55d2F5
LgorICAgIAorICAgIC8vIE1heWJlIHdlIHNob3VsZCBpbXBsZW1lbnQgdGhpcyB1c2luZyBhIGNo
YXJhY3RlciBidWZmZXIgaW5zdGVhZD8KKyAgICAKKyAgICBpZiAocHJvdG9jb2xJcyhzdHJpbmcs
ICJtYWlsdG8iKSkgeworICAgICAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0
cmluZyhzdHJpbmcsIGYsIGFycmF5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICAvLyBGaW5kIHRoZSBob3N0IG5hbWUgaW4gYSBoaWVyYXJjaGljYWwgVVJMLgorICAgIC8vIEl0
IGNvbWVzIGFmdGVyIGEgIjovLyIgc2VxdWVuY2UsIHdpdGggc2NoZW1lIGNoYXJhY3RlcnMgcHJl
Y2VkaW5nLgorICAgIC8vIElmIGVuZHMgd2l0aCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgYSAi
OiIsICIvIiwgb3IgYSAiPyIuCisgICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFjdGVyLCB0
aGUgaG9zdCBwYXJ0IGlzIGp1c3QgdGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KKyAgICBOU1Jhbmdl
IHNlcGFyYXRvclJhbmdlID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiOi8vIl07CisgICAgaWYg
KHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICAvLyBDaGVjayB0aGF0IGFsbCBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgOi8vIGFy
ZSB2YWxpZCBzY2hlbWUgY2hhcmFjdGVycy4KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0
YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gbm9uU2NoZW1lQ2hhcmFjdGVycyA9IFtbTlNDaGFyYWN0
ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIkFCQ0RFRkdISUpLTE1O
T1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky0uIl0gaW52
ZXJ0ZWRTZXRdOworICAgIGlmIChbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Om5vblNj
aGVtZUNoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAs
IHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uKV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IFtzdHJpbmcgbGVu
Z3RoXTsKKyAgICAKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFj
dGVyU2V0Pj4gaG9zdFRlcm1pbmF0b3JzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdp
dGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCI6Lz8jIl07CisgICAgCisgICAgLy8gU3RhcnQgYWZ0ZXIg
dGhlIHNlcGFyYXRvci4KKyAgICB1bnNpZ25lZCBhdXRob3JpdHlTdGFydCA9IE5TTWF4UmFuZ2Uo
c2VwYXJhdG9yUmFuZ2UpOworICAgIAorICAgIC8vIEZpbmQgdGVybWluYXRpbmcgY2hhcmFjdGVy
LgorICAgIE5TUmFuZ2UgaG9zdE5hbWVUZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9mQ2hhcmFj
dGVyRnJvbVNldDpob3N0VGVybWluYXRvcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5T
TWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBzdHJpbmdMZW5ndGggLSBhdXRob3JpdHlTdGFydCld
OworICAgIHVuc2lnbmVkIGhvc3ROYW1lRW5kID0gaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9u
ID09IE5TTm90Rm91bmQgPyBzdHJpbmdMZW5ndGggOiBob3N0TmFtZVRlcm1pbmF0b3IubG9jYXRp
b247CisgICAgCisgICAgLy8gRmluZCAiQCIgZm9yIHRoZSBzdGFydCBvZiB0aGUgaG9zdCBuYW1l
LgorICAgIE5TUmFuZ2UgdXNlckluZm9UZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9mU3RyaW5n
OkAiQCIgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBob3N0TmFt
ZUVuZCAtIGF1dGhvcml0eVN0YXJ0KV07CisgICAgdW5zaWduZWQgaG9zdE5hbWVTdGFydCA9IHVz
ZXJJbmZvVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8gYXV0aG9yaXR5U3RhcnQg
OiBOU01heFJhbmdlKHVzZXJJbmZvVGVybWluYXRvcik7CisgICAgCisgICAgcmV0dXJuIGYoc3Ry
aW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZCAtIGhvc3ROYW1lU3Rh
cnQpLCBhcnJheSk7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IG1hcEhvc3ROYW1l
cyhOU1N0cmluZyAqc3RyaW5nLCBCT09MIGVuY29kZSkKK3sKKyAgICAvLyBHZW5lcmFsbHksIHdl
IHdhbnQgdG8gb3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIG9uZSBob3N0IG5h
bWUgdGhhdCBkb2VzIG5vdCBuZWVkIG1hcHBpbmcuCisgICAgCisgICAgaWYgKGVuY29kZSAmJiBb
c3RyaW5nIGNhbkJlQ29udmVydGVkVG9FbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddKQor
ICAgICAgICByZXR1cm4gc3RyaW5nOworICAgIAorICAgIC8vIE1ha2UgYSBsaXN0IG9mIHJhbmdl
cyB0aGF0IGFjdHVhbGx5IG5lZWQgbWFwcGluZy4KKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IGhvc3ROYW1lUmFuZ2VzOworICAgIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYgPSBl
bmNvZGUgPyBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyA6IGNvbGxlY3RSYW5nZXNUaGF0
TmVlZERlY29kaW5nOworICAgIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKHN0cmlu
ZywgZiwgaG9zdE5hbWVSYW5nZXMpOworICAgIGlmICghaG9zdE5hbWVSYW5nZXMpCisgICAgICAg
IHJldHVybiBzdHJpbmc7CisKKyAgICBpZiAoIVtob3N0TmFtZVJhbmdlcyBjb3VudF0pCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgCisgICAgLy8gRG8gdGhlIG1hcHBpbmcuCisgICAgYXV0byBt
dXRhYmxlQ29weSA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOworICAgIHVuc2lnbmVk
IGkgPSBbaG9zdE5hbWVSYW5nZXMgY291bnRdOworICAgIHdoaWxlIChpLS0pIHsKKyAgICAgICAg
TlNSYW5nZSBob3N0TmFtZVJhbmdlID0gW1tob3N0TmFtZVJhbmdlcyBvYmplY3RBdEluZGV4Omld
IHJhbmdlVmFsdWVdOworICAgICAgICBOU1N0cmluZyAqbWFwcGVkSG9zdE5hbWUgPSBlbmNvZGUg
PyBlbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIGhvc3ROYW1lUmFuZ2UpIDogZGVjb2Rl
SG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKTsKKyAgICAgICAgW211dGFi
bGVDb3B5IHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpob3N0TmFtZVJhbmdlIHdpdGhTdHJpbmc6
bWFwcGVkSG9zdE5hbWVdOworICAgIH0KKyAgICByZXR1cm4gbXV0YWJsZUNvcHk7Cit9CisKK3N0
YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKE5TU3Ry
aW5nICpzdHJpbmcpCit7CisgICAgYXV0byB0cmltbWVkID0gYWRvcHROUyhbc3RyaW5nIG11dGFi
bGVDb3B5XSk7CisgICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoX19icmlkZ2UgQ0ZNdXRhYmxl
U3RyaW5nUmVmKXRyaW1tZWQuZ2V0KCkpOworICAgIHJldHVybiB0cmltbWVkOworfQorCitOU1VS
TCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICpVUkws
IENGVVJMQ29tcG9uZW50VHlwZSBjb21wb25lbnQpCit7CisgICAgaWYgKCFVUkwpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgCisgICAgQ0ZSYW5nZSBmcmFnUmcgPSBDRlVSTEdldEJ5dGVSYW5n
ZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIG51bGxwdHIp
OworICAgIGlmIChmcmFnUmcubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCisgICAgICAgIHJldHVy
biBVUkw7CisKKyAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiB1cmxC
eXRlcyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7CisgICAgQ0ZJbmRleCBudW1CeXRlcyA9IENG
VVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCB1cmxC
eXRlcy5zaXplKCkpOworICAgIGlmIChudW1CeXRlcyA9PSAtMSkgeworICAgICAgICBudW1CeXRl
cyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Cisg
ICAgICAgIHVybEJ5dGVzLmdyb3cobnVtQnl0ZXMpOworICAgICAgICBDRlVSTEdldEJ5dGVzKChf
X2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOworICAgIH0K
KworICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVy
bEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCBudWxscHRyKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVh
dGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAx
LCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7CisgICAgICAgIAorICAgIHJl
dHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworfQorCitzdGF0
aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihOU1VSTCAqVVJMKQorewor
ICAgIHJldHVybiBVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoVVJM
LCBrQ0ZVUkxDb21wb25lbnRSZXNvdXJjZVNwZWNpZmllcik7Cit9CisKK05TVVJMICpVUkxXaXRo
RGF0YShOU0RhdGEgKmRhdGEsIE5TVVJMICpiYXNlVVJMKQoreworICAgIGlmICghZGF0YSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBOU1VSTCAqcmVzdWx0ID0gbmlsOworICAgIHNp
emVfdCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOworICAgIGlmIChsZW5ndGggPiAwKSB7CisgICAg
ICAgIC8vIHdvcmsgYXJvdW5kIDxyZGFyOi8vNDQ3MDc3MT46IENGVVJMQ3JlYXRlQWJzb2x1dGVV
UkxXaXRoQnl0ZXMoLi4sIFRSVUUpIGRvZXNuJ3QgcmVtb3ZlIG5vbi1wYXRoIGNvbXBvbmVudHMu
CisgICAgICAgIGJhc2VVUkwgPSBVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoYmFzZVVS
TCk7CisgICAgICAgIAorICAgICAgICBjb25zdCBVSW50OCAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxj
b25zdCBVSW50OCo+KFtkYXRhIGJ5dGVzXSk7CisgICAgICAgIAorICAgICAgICAvLyBDRlVSTENy
ZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzIHdvdWxkIGNvbXBsYWluIHRvIGNvbnNvbGUgaWYgd2Ug
cGFzc2VkIGEgcGF0aCB0byBpdC4KKyAgICAgICAgaWYgKGJ5dGVzWzBdID09ICcvJyAmJiAhYmFz
ZVVSTCkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIAorICAgICAgICAvLyBOT1RF
OiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hlbiBjb21w
dXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cworICAgICAgICAvLyAo
ZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3Qg
dG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCisgICAgICAgIC8vIGNv
dWxkIGVpdGhlciBiZSBhIG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZmZXJlbnQg
ZW5jb2RpbmcsIGxpa2Ugc2hpZnQtamlzLCBzbyB3ZSBmYWxsIGJhY2sKKyAgICAgICAgLy8gb250
byB1c2luZyBJU08gTGF0aW4gMSBpbiB0aG9zZSBjYXNlcy4KKyAgICAgICAgcmVzdWx0ID0gQ0ZC
cmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBi
eXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBDRlVSTFJlZili
YXNlVVJMLCBZRVMpKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXN1bHQg
PSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxw
dHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoX19icmlkZ2Ug
Q0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdCA9IFtO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorc3RhdGlj
IE5TRGF0YSAqZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAg
ICBOU0RhdGEgKnVzZXJUeXBlZERhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXTsKKyAgICBBU1NFUlQodXNlclR5cGVkRGF0YSk7CisgICAgCisgICAg
Y29uc3QgVUludDgqIGluQnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBVSW50OCAqPihbdXNlclR5
cGVkRGF0YSBieXRlc10pOworICAgIGludCBpbkxlbmd0aCA9IFt1c2VyVHlwZWREYXRhIGxlbmd0
aF07CisgICAgaWYgKCFpbkxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBj
aGFyKiBvdXRCeXRlcyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obWFsbG9jKGluTGVuZ3RoICogMykp
OyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCisgICAgY2hhciog
cCA9IG91dEJ5dGVzOworICAgIGludCBvdXRMZW5ndGggPSAwOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgaW5MZW5ndGg7IGkrKykgeworICAgICAgICBVSW50OCBjID0gaW5CeXRlc1tpXTsKKyAg
ICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKKyAgICAgICAgICAgICpwKysgPSAn
JSc7CisgICAgICAgICAgICAqcCsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Cisg
ICAgICAgICAgICAqcCsrID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7CisgICAgICAg
ICAgICBvdXRMZW5ndGggKz0gMzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpwKysg
PSBjOworICAgICAgICAgICAgb3V0TGVuZ3RoKys7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpvdXRCeXRlcyBsZW5ndGg6b3V0
TGVuZ3RoXTsgLy8gYWRvcHRzIG91dEJ5dGVzCit9CisKK05TVVJMICpVUkxXaXRoVXNlclR5cGVk
U3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TVVJMICpuc1VSTCkKK3sKKyAgICBpZiAoIXN0cmlu
ZykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gbWFwcGVkU3RyaW5nID0gbWFwSG9z
dE5hbWVzKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCksIFlFUyk7Cisg
ICAgaWYgKCFtYXBwZWRTdHJpbmcpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAvLyBMZXQn
cyBjaGVjayB3aGV0aGVyIHRoZSBVUkwgaXMgYm9ndXMuCisgICAgVVJMIHVybCB7IFVSTCB7IG5z
VVJMIH0sIG1hcHBlZFN0cmluZy5nZXQoKSB9OworICAgIGlmICghdXJsLmNyZWF0ZUNGVVJMKCkp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjA1NworICAgIC8vIFdlIHNob3VsZCBiZSBhYmxlIHRv
IHVzZSB1cmwuY3JlYXRlQ0ZVUkwgaW5zdGVhZCBvZiB1c2luZyBkaXJlY3RseSBDRlVSTCBwYXJz
aW5nIHJvdXRpbmVzLgorICAgIE5TRGF0YSAqZGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5n
KG1hcHBlZFN0cmluZy5nZXQoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gW05T
VVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKKworICAgIHJldHVybiBVUkxXaXRoRGF0YShkYXRhLCBu
c1VSTCk7Cit9CisKK05TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChOU1N0
cmluZyAqc3RyaW5nLCBOU1VSTCAqVVJMKQoreworICAgIGlmICghc3RyaW5nKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgTlNVUkwgKnJlc3VsdCA9IFVSTFdpdGhVc2VyVHlwZWRTdHJpbmco
c3RyaW5nLCBVUkwpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIE5TRGF0YSAqcmVzdWx0
RGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZyk7CisgICAgICAgIGlmICghcmVz
dWx0RGF0YSkKKyAgICAgICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwor
ICAgICAgICByZXN1bHQgPSBVUkxXaXRoRGF0YShyZXN1bHREYXRhLCBVUkwpOworICAgIH0KKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBCT09MIGhhc1F1ZXN0aW9uTWFya09ubHlR
dWVyeVN0cmluZyhOU1VSTCAqVVJMKQoreworICAgIENGUmFuZ2UgcmFuZ2VXaXRoU2VwYXJhdG9y
czsKKyAgICBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCBrQ0ZVUkxDb21wb25lbnRRdWVyeSwgJnJhbmdlV2l0aFNlcGFyYXRvcnMpOworICAgIGlm
IChyYW5nZVdpdGhTZXBhcmF0b3JzLmxvY2F0aW9uICE9IGtDRk5vdEZvdW5kICYmIHJhbmdlV2l0
aFNlcGFyYXRvcnMubGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBZRVM7CisKKyAgICByZXR1
cm4gTk87Cit9CisKK05TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKlVSTCwg
Q0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudFR5cGUpCit7CisgICAgVmVjdG9yPFVJbnQ4LCBV
UkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYWxsQnl0ZXNCdWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9M
RU5HVEgpOworICAgIENGSW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRn
ZSBDRlVSTFJlZilVUkwsIGFsbEJ5dGVzQnVmZmVyLmRhdGEoKSwgYWxsQnl0ZXNCdWZmZXIuc2l6
ZSgpKTsKKyAgICBpZiAoYnl0ZXNGaWxsZWQgPT0gLTEpIHsKKyAgICAgICAgQ0ZJbmRleCBieXRl
c1RvQWxsb2NhdGUgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxw
dHIsIDApOworICAgICAgICBhbGxCeXRlc0J1ZmZlci5ncm93KGJ5dGVzVG9BbGxvY2F0ZSk7Cisg
ICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJM
LCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGJ5dGVzVG9BbGxvY2F0ZSk7CisgICAgfQorICAgIAor
ICAgIGNvbnN0IENGVVJMQ29tcG9uZW50VHlwZSBjb21wbGV0ZVVSTCA9IChDRlVSTENvbXBvbmVu
dFR5cGUpLTE7CisgICAgQ0ZSYW5nZSByYW5nZTsKKyAgICBpZiAoY29tcG9uZW50VHlwZSAhPSBj
b21wbGV0ZVVSTCkgeworICAgICAgICByYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9u
ZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudFR5cGUsIG51bGxwdHIpOworICAg
ICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCisgICAgICAgICAgICByZXR1
cm4gbmlsOworICAgIH0gZWxzZSB7CisgICAgICAgIHJhbmdlLmxvY2F0aW9uID0gMDsKKyAgICAg
ICAgcmFuZ2UubGVuZ3RoID0gYnl0ZXNGaWxsZWQ7CisgICAgfQorICAgIAorICAgIE5TRGF0YSAq
Y29tcG9uZW50RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczphbGxCeXRlc0J1ZmZlci5kYXRh
KCkgKyByYW5nZS5sb2NhdGlvbiBsZW5ndGg6cmFuZ2UubGVuZ3RoXTsgCisgICAgCisgICAgY29u
c3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
ICo+KFtjb21wb25lbnREYXRhIGJ5dGVzXSk7CisgICAgTlNNdXRhYmxlRGF0YSAqcmVzdWx0RGF0
YSA9IFtOU011dGFibGVEYXRhIGRhdGFdOworICAgIC8vIE5PVEU6IGFkZCBsZWFkaW5nICc/JyB0
byBxdWVyeSBzdHJpbmdzIG5vbi16ZXJvIGxlbmd0aCBxdWVyeSBzdHJpbmdzLgorICAgIC8vIE5P
VEU6IHJldGFpbiBxdWVzdGlvbi1tYXJrIG9ubHkgcXVlcnkgc3RyaW5ncy4KKyAgICBpZiAoY29t
cG9uZW50VHlwZSA9PSBrQ0ZVUkxDb21wb25lbnRRdWVyeSkgeworICAgICAgICBpZiAocmFuZ2Uu
bGVuZ3RoID4gMCB8fCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoVVJMKSkKKyAgICAg
ICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOiI/IiBsZW5ndGg6MV07ICAgIAorICAgIH0K
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHVu
c2lnbmVkIGNoYXIgYyA9IGJ5dGVzW2ldOworICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPj0g
MHg3ZikgeworICAgICAgICAgICAgY2hhciBlc2NhcGVkWzNdOworICAgICAgICAgICAgZXNjYXBl
ZFswXSA9ICclJzsKKyAgICAgICAgICAgIGVzY2FwZWRbMV0gPSB1cHBlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdChjKTsKKyAgICAgICAgICAgIGVzY2FwZWRbMl0gPSBsb3dlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdChjKTsKKyAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmVzY2FwZWQg
bGVuZ3RoOjNdOyAgICAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNoYXIgYlsxXTsK
KyAgICAgICAgICAgIGJbMF0gPSBjOworICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0
ZXM6YiBsZW5ndGg6MV07ICAgIAorICAgICAgICB9ICAgICAgICAgICAgICAgCisgICAgfQorICAg
IAorICAgIHJldHVybiByZXN1bHREYXRhOworfQorCitzdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3Zp
bmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENGVVJMQ29tcG9u
ZW50VHlwZSBjb21wb25lbnQpCit7CisgICAgQ0ZSYW5nZSByYW5nZSA9IENGVVJMR2V0Qnl0ZVJh
bmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwgMCk7Cisg
ICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICByZXR1cm4gVVJM
OworICAgIAorICAgIC8vIFJlbW92ZSBvbmUgc3Vic2VxdWVudCBjaGFyYWN0ZXIuCisgICAgcmFu
Z2UubGVuZ3RoKys7CisKKyAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RI
PiBidWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOworICAgIENGSW5kZXggbnVtQnl0ZXMg
PSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpOworICAgIGlmIChudW1CeXRlcyA9PSAtMSkgeworICAgICAgICBudW1CeXRl
cyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Cisg
ICAgICAgIGJ1ZmZlci5ncm93KG51bUJ5dGVzKTsKKyAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19i
cmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBudW1CeXRlcyk7CisgICAgfQorICAg
IFVJbnQ4KiB1cmxCeXRlcyA9IGJ1ZmZlci5kYXRhKCk7CisgICAgICAgIAorICAgIGlmIChudW1C
eXRlcyA8IHJhbmdlLmxvY2F0aW9uKQorICAgICAgICByZXR1cm4gVVJMOworICAgIGlmIChudW1C
eXRlcyA8IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKQorICAgICAgICByYW5nZS5sZW5n
dGggPSBudW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uOworICAgICAgICAKKyAgICBtZW1tb3ZlKHVy
bEJ5dGVzICsgcmFuZ2UubG9jYXRpb24sIHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24gKyByYW5n
ZS5sZW5ndGgsIG51bUJ5dGVzIC0gcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpOworICAg
IAorICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVy
bEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBu
dWxscHRyKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVX
aXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZT
dHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgCisgICAg
cmV0dXJuIHJlc3VsdCA/IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7Cit9CisKK05T
VVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNVUkwgKlVSTCkKK3sKKyAgICByZXR1cm4gVVJM
QnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoVVJMLCBrQ0ZVUkxDb21w
b25lbnRVc2VySW5mbyk7Cit9CisKK05TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICpVUkwp
Cit7CisgICAgVUludDggKmJ1ZmZlciA9IChVSW50OCAqKW1hbGxvYyhVUkxfQllURVNfQlVGRkVS
X0xFTkdUSCk7CisgICAgQ0ZJbmRleCBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJp
ZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7CisgICAg
aWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7CisgICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9jYXRl
ID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAg
ICAgICAgYnVmZmVyID0gKFVJbnQ4ICopcmVhbGxvYyhidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7
CisgICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCBidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7CisgICAgICAgIEFTU0VSVChieXRlc0ZpbGxl
ZCA9PSBieXRlc1RvQWxsb2NhdGUpOworICAgIH0KKyAgICAKKyAgICAvLyBidWZmZXIgaXMgYWRv
cHRlZCBieSB0aGUgTlNEYXRhCisgICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5
dGVzTm9Db3B5OmJ1ZmZlciBsZW5ndGg6Ynl0ZXNGaWxsZWQgZnJlZVdoZW5Eb25lOllFU107Cisg
ICAgCisgICAgTlNVUkwgKmJhc2VVUkwgPSAoX19icmlkZ2UgTlNVUkwgKilDRlVSTEdldEJhc2VV
UkwoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCk7CisgICAgaWYgKGJhc2VVUkwpCisgICAgICAgIHJl
dHVybiBvcmlnaW5hbFVSTERhdGEoVVJMV2l0aERhdGEoZGF0YSwgYmFzZVVSTCkpOworICAgIHJl
dHVybiBkYXRhOworfQorCitzdGF0aWMgQ0ZTdHJpbmdSZWYgY3JlYXRlU3RyaW5nV2l0aEVzY2Fw
ZWRVbnNhZmVDaGFyYWN0ZXJzKENGU3RyaW5nUmVmIHN0cmluZykKK3sKKyAgICBDRkluZGV4IGxl
bmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7CisgICAgVmVjdG9yPFVDaGFyLCBVUkxf
QllURVNfQlVGRkVSX0xFTkdUSD4gc291cmNlQnVmZmVyKGxlbmd0aCk7CisgICAgQ0ZTdHJpbmdH
ZXRDaGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgc291cmNlQnVmZmVy
LmRhdGEoKSk7CisgICAgCisgICAgVmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdU
SD4gb3V0QnVmZmVyOworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXND
b2RlUG9pbnQ7CisgICAgQ0ZJbmRleCBpID0gMDsKKyAgICB3aGlsZSAoaSA8IGxlbmd0aCkgewor
ICAgICAgICBVQ2hhcjMyIGM7CisgICAgICAgIFUxNl9ORVhUKHNvdXJjZUJ1ZmZlciwgaSwgbGVu
Z3RoLCBjKQorICAgICAgICAKKyAgICAgICAgaWYgKGlzTG9va2FsaWtlQ2hhcmFjdGVyKHByZXZp
b3VzQ29kZVBvaW50LCBjKSkgeworICAgICAgICAgICAgdWludDhfdCB1dGY4QnVmZmVyWzRdOwor
ICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOworICAgICAgICAgICAgVUJvb2wgZmFpbHVy
ZSA9IGZhbHNlOworICAgICAgICAgICAgVThfQVBQRU5EKHV0ZjhCdWZmZXIsIG9mZnNldCwgNCwg
YywgZmFpbHVyZSkKKyAgICAgICAgICAgIEFTU0VSVCghZmFpbHVyZSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8IG9mZnNldDsgKytqKSB7CisgICAg
ICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCgnJScpOworICAgICAgICAgICAgICAgIG91dEJ1
ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwor
ICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGln
aXQodXRmOEJ1ZmZlcltqXSkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgVUNoYXIgdXRmMTZCdWZmZXJbMl07CisgICAgICAgICAgICBDRkluZGV4IG9mZnNl
dCA9IDA7CisgICAgICAgICAgICBVQm9vbCBmYWlsdXJlID0gZmFsc2U7CisgICAgICAgICAgICBV
MTZfQVBQRU5EKHV0ZjE2QnVmZmVyLCBvZmZzZXQsIDIsIGMsIGZhaWx1cmUpCisgICAgICAgICAg
ICBBU1NFUlQoIWZhaWx1cmUpOworICAgICAgICAgICAgZm9yIChDRkluZGV4IGogPSAwOyBqIDwg
b2Zmc2V0OyArK2opCisgICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCh1dGYxNkJ1ZmZl
cltqXSk7CisgICAgICAgIH0KKyAgICAgICAgcHJldmlvdXNDb2RlUG9pbnQgPSBjOworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCBv
dXRCdWZmZXIuZGF0YSgpLCBvdXRCdWZmZXIuc2l6ZSgpKTsKK30KKworTlNTdHJpbmcgKnVzZXJW
aXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCit7CisgICAgTlNEYXRhICpkYXRhID0gb3JpZ2luYWxV
UkxEYXRhKFVSTCk7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmVmb3JlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KFtkYXRhIGJ5dGVzXSk7CisgICAgaW50IGxlbmd0aCA9
IFtkYXRhIGxlbmd0aF07CisgICAgCisgICAgYm9vbCBtYXlOZWVkSG9zdE5hbWVEZWNvZGluZyA9
IGZhbHNlOworICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSBiZWZvcmU7CisgICAg
aW50IGJ1ZmZlckxlbmd0aCA9IChsZW5ndGggKiAzKSArIDE7CisgICAgVmVjdG9yPGNoYXIsIFVS
TF9CWVRFU19CVUZGRVJfTEVOR1RIPiBhZnRlcihidWZmZXJMZW5ndGgpOyAvLyBsYXJnZSBlbm91
Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCisgICAgY2hhciAqcSA9IGFmdGVyLmRhdGEo
KTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIHVuc2ln
bmVkIGNoYXIgYyA9IHBbaV07CisgICAgICAgIC8vIHVuZXNjYXBlIGVzY2FwZSBzZXF1ZW5jZXMg
dGhhdCBpbmRpY2F0ZSBieXRlcyBncmVhdGVyIHRoYW4gMHg3ZgorICAgICAgICBpZiAoYyA9PSAn
JScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAxXSkpICYmIGkg
KyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAyXSkpIHsKKyAgICAgICAgICAg
IGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAxXSwgcFtpICsgMl0pOworICAgICAgICAg
ICAgaWYgKHUgPiAweDdmKSB7CisgICAgICAgICAgICAgICAgLy8gdW5lc2NhcGUKKyAgICAgICAg
ICAgICAgICAqcSsrID0gdTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Ly8gZG8gbm90IHVuZXNjYXBlCisgICAgICAgICAgICAgICAgKnErKyA9IHBbaV07CisgICAgICAg
ICAgICAgICAgKnErKyA9IHBbaSArIDFdOworICAgICAgICAgICAgICAgICpxKysgPSBwW2kgKyAy
XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgKz0gMjsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICpxKysgPSBjOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBDaGVj
ayBmb3IgInhuLS0iIGluIGFuIGVmZmljaWVudCwgbm9uLWNhc2Utc2Vuc2l0aXZlLCB3YXkuCisg
ICAgICAgICAgICBpZiAoYyA9PSAnLScgJiYgaSA+PSAzICYmICFtYXlOZWVkSG9zdE5hbWVEZWNv
ZGluZyAmJiAocVstNF0gfCAweDIwKSA9PSAneCcgJiYgKHFbLTNdIHwgMHgyMCkgPT0gJ24nICYm
IHFbLTJdID09ICctJykKKyAgICAgICAgICAgICAgICBtYXlOZWVkSG9zdE5hbWVEZWNvZGluZyA9
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgKnEgPSAnXDAnOworICAgIAorICAgIC8vIENo
ZWNrIHN0cmluZyB0byBzZWUgaWYgaXQgY2FuIGJlIGNvbnZlcnRlZCB0byBkaXNwbGF5IHVzaW5n
IFVURi04ICAKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHJlc3VsdCA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOworICAgIGlmICghcmVzdWx0KSB7CisgICAg
ICAgIC8vIENvdWxkIG5vdCBjb252ZXJ0IHRvIFVURi04LgorICAgICAgICAvLyBDb252ZXJ0IGNo
YXJhY3RlcnMgZ3JlYXRlciB0aGFuIDB4N2YgdG8gZXNjYXBlIHNlcXVlbmNlcy4KKyAgICAgICAg
Ly8gU2hpZnQgY3VycmVudCBzdHJpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYnVmZmVyCisgICAgICAg
IC8vIHRoZW4gd2Ugd2lsbCBjb3B5IGJhY2sgYnl0ZXMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZm
ZXIgCisgICAgICAgIC8vIGFzIHdlIGNvbnZlcnQuCisgICAgICAgIGludCBhZnRlcmxlbmd0aCA9
IHEgLSBhZnRlci5kYXRhKCk7CisgICAgICAgIGNoYXIgKnAgPSBhZnRlci5kYXRhKCkgKyBidWZm
ZXJMZW5ndGggLSBhZnRlcmxlbmd0aCAtIDE7CisgICAgICAgIG1lbW1vdmUocCwgYWZ0ZXIuZGF0
YSgpLCBhZnRlcmxlbmd0aCArIDEpOyAvLyBjb3BpZXMgdHJhaWxpbmcgJ1wwJworICAgICAgICBj
aGFyICpxID0gYWZ0ZXIuZGF0YSgpOworICAgICAgICB3aGlsZSAoKnApIHsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgYyA9ICpwOworICAgICAgICAgICAgaWYgKGMgPiAweDdmKSB7CisgICAg
ICAgICAgICAgICAgKnErKyA9ICclJzsKKyAgICAgICAgICAgICAgICAqcSsrID0gdXBwZXJOaWJi
bGVUb0FTQ0lJSGV4RGlnaXQoYyk7CisgICAgICAgICAgICAgICAgKnErKyA9IGxvd2VyTmliYmxl
VG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
KnErKyA9ICpwOworICAgICAgICAgICAgcCsrOworICAgICAgICB9CisgICAgICAgICpxID0gJ1ww
JzsKKyAgICAgICAgcmVzdWx0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFmdGVy
LmRhdGEoKV07CisgICAgfQorICAgIAorICAgIGlmIChtYXlOZWVkSG9zdE5hbWVEZWNvZGluZykg
eworICAgICAgICAvLyBGSVhNRTogSXMgaXQgZ29vZCB0byBpZ25vcmUgdGhlIGZhaWx1cmUgb2Yg
bWFwSG9zdE5hbWVzIGFuZCBrZWVwIHJlc3VsdCBpbnRhY3Q/CisgICAgICAgIGF1dG8gbWFwcGVk
UmVzdWx0ID0gbWFwSG9zdE5hbWVzKHJlc3VsdC5nZXQoKSwgTk8pOworICAgICAgICBpZiAobWFw
cGVkUmVzdWx0KQorICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVkUmVzdWx0OworICAgIH0KKwor
ICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGlu
Z107CisgICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVk
VW5zYWZlQ2hhcmFjdGVycygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzdWx0LmdldCgpKSk7Cit9
CisKK0JPT0wgaXNVc2VyVmlzaWJsZVVSTChOU1N0cmluZyAqc3RyaW5nKQoreworICAgIEJPT0wg
dmFsaWQgPSBZRVM7CisgICAgLy8gZ2V0IGJ1ZmZlcgorICAgIAorICAgIGNoYXIgc3RhdGljX2J1
ZmZlclsxMDI0XTsKKyAgICBjb25zdCBjaGFyICpwOworICAgIEJPT0wgc3VjY2VzcyA9IENGU3Ry
aW5nR2V0Q1N0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc3RyaW5nLCBzdGF0aWNfYnVmZmVy
LCAxMDIzLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpOworICAgIHAgPSBzdWNjZXNzID8gc3RhdGlj
X2J1ZmZlciA6IFtzdHJpbmcgVVRGOFN0cmluZ107CisgICAgCisgICAgaW50IGxlbmd0aCA9IHN0
cmxlbihwKTsKKyAgICAKKyAgICAvLyBjaGVjayBmb3IgY2hhcmFjdGVycyA8PSAweDIwIG9yID49
MHg3ZiwgJS1lc2NhcGUgc2VxdWVuY2VzIG9mICU3ZiwgYW5kIHhuLS0sIHRoZXNlCisgICAgLy8g
YXJlIHRoZSB0aGluZ3MgdGhhdCB3aWxsIGxlYWQgX3dlYl91c2VyVmlzaWJsZVN0cmluZyB0byBh
Y3R1YWxseSBjaGFuZ2UgdGhpbmdzLgorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcFtpXTsKKyAgICAgICAgLy8gZXNjYXBl
IGNvbnRyb2wgY2hhcmFjdGVycywgc3BhY2UsIGFuZCBkZWxldGUKKyAgICAgICAgaWYgKGMgPD0g
MHgyMCB8fCBjID09IDB4N2YpIHsKKyAgICAgICAgICAgIHZhbGlkID0gTk87CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfSBlbHNlIGlmIChjID09ICclJyAmJiAoaSArIDEgPCBsZW5ndGgg
JiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDFdKSkgJiYgaSArIDIgPCBsZW5ndGggJiYgaXNBU0NJ
SUhleERpZ2l0KHBbaSArIDJdKSkgeworICAgICAgICAgICAgYXV0byB1ID0gdG9BU0NJSUhleFZh
bHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7CisgICAgICAgICAgICBpZiAodSA+IDB4N2YpIHsKKyAg
ICAgICAgICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaSArPSAyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBhbiBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2
ZSwgd2F5LgorICAgICAgICAgICAgaWYgKGMgPT0gJy0nICYmIGkgPj0gMyAmJiAocFtpIC0gM10g
fCAweDIwKSA9PSAneCcgJiYgKHBbaSAtIDJdIHwgMHgyMCkgPT0gJ24nICYmIHBbaSAtIDFdID09
ICctJykgeworICAgICAgICAgICAgICAgIHZhbGlkID0gTk87CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHZh
bGlkOworfQorCitOU1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKnN0cmluZykKK3sK
KyAgICBOU1JhbmdlIGNvbG9uID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiOiJdOworICAgIGlm
IChjb2xvbi5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIGNvbG9uLmxvY2F0aW9uID4gMCkgewor
ICAgICAgICBOU1JhbmdlIHNjaGVtZSA9IHswLCBjb2xvbi5sb2NhdGlvbn07CisgICAgICAgIC8q
CisgICAgICAgICBUaGlzIHN0dWZmIGlzIHZlcnkgZXhwZW5zaXZlLiAgMTAtMTUgbXNlYyBvbiBh
IDJ4MS4yR0h6LiAgSWYgbm90IGNhY2hlZCBpdCBzd2FtcHMKKyAgICAgICAgIGV2ZXJ5dGhpbmcg
ZWxzZSB3aGVuIGFkZGluZyBpdGVtcyB0byB0aGUgYXV0b2NvbXBsZXRlIERCLiAgTWFrZXMgbWUg
d29uZGVyIGlmIHdlCisgICAgICAgICBldmVuIG5lZWQgdG8gZW5mb3JjZSB0aGUgY2hhcmFjdGVy
IHNldCBoZXJlLgorICAgICAgICAgKi8KKyAgICAgICAgTlNTdHJpbmcgKmFjY2VwdGFibGVDaGFy
YWN0ZXJzID0gQCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6MDEyMzQ1Njc4OSsuLSI7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0KFtbTlNDaGFy
YWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzphY2NlcHRhYmxlQ2hh
cmFjdGVyc10gaW52ZXJ0ZWRTZXRdKTsKKyAgICAgICAgTlNSYW5nZSBpbGxlZ2FscyA9IFtzdHJp
bmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6SW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldC5nZXQo
KS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsKKyAgICAgICAgaWYgKGlsbGVnYWxzLmxv
Y2F0aW9uID09IE5TTm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gc2NoZW1lOworICAgIH0K
KyAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7Cit9CisKK0JPT0wgbG9va3NM
aWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICAvLyBUcmltIHdoaXRlc3Bh
Y2UgYmVjYXVzZSBfd2ViX1VSTFdpdGhTdHJpbmcgYWxsb3dzIHdoaXRlc3BhY2UuCisgICAgcmV0
dXJuIHJhbmdlT2ZVUkxTY2hlbWUoc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2Uoc3RyaW5nKS5n
ZXQoKSkubG9jYXRpb24gIT0gTlNOb3RGb3VuZDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0gYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDUxZmFkYmI2OGQ2NDc2ZDBj
YTQ2MDY4NGE5NzJiOGM1MzUwZGFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
Y29jb2EvVVJMQ29jb2EubW0KQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KKworI2ltcG9ydCAiQ0ZVUkxFeHRyYXMuaCIKKyNpbXBvcnQgIk5TVVJM
RXh0cmFzLmgiCisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KKyNpbXBvcnQgPHd0
Zi9VUkxQYXJzZXIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworQGludGVyZmFj
ZSBOU1N0cmluZyAoV1RGTlNVUkxFeHRyYXMpCistIChCT09MKV93ZWJfbG9va3NMaWtlSVBBZGRy
ZXNzOworQGVuZAorCituYW1lc3BhY2UgV1RGIHsKKworVVJMOjpVUkwoTlNVUkwgKnVybCkKK3sK
KyAgICBpZiAoIXVybCkgeworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBo
ZXJlPworICAgIENTdHJpbmcgdXJsQnl0ZXM7CisgICAgV1RGOjpnZXRVUkxCeXRlcygoX19icmlk
Z2UgQ0ZVUkxSZWYpdXJsLCB1cmxCeXRlcyk7CisgICAgVVJMUGFyc2VyIHBhcnNlcih1cmxCeXRl
cy5kYXRhKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCitVUkw6Om9wZXJh
dG9yIE5TVVJMICooKSBjb25zdAoreworICAgIC8vIENyZWF0aW5nIGEgdG9sbC1mcmVlIGJyaWRn
ZWQgQ0ZVUkwgYmVjYXVzZSBjcmVhdGlvbiB3aXRoIE5TVVJMIG1ldGhvZHMgd291bGQgbm90IHBy
ZXNlcnZlIHRoZSBvcmlnaW5hbCBzdHJpbmcuCisgICAgLy8gV2UnbGwgbmVlZCBmaWRlbGl0eSB3
aGVuIHJvdW5kLXRyaXBwaW5nIHZpYSBDRlVSTEdldEJ5dGVzKCkuCisgICAgcmV0dXJuIGNyZWF0
ZUNGVVJMKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOworfQorCitSZXRhaW5QdHI8Q0ZVUkxSZWY+
IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIFdlIHVz
ZSB0aGUgdG9sbC1mcmVlIGJyaWRnZSBiZXR3ZWVuIE5TVVJMIGFuZCBDRlVSTCB0byBjcmVhdGUg
YSBDRlVSTFJlZiBzdXBwb3J0aW5nIGJvdGggZW1wdHkgYW5kIG51bGwgdmFsdWVzLgorICAgICAg
ICByZXR1cm4gKF9fYnJpZGdlIENGVVJMUmVmKWFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdp
dGhTdHJpbmc6QCIiXSkuZ2V0KCk7CisgICAgfQorCisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBj
ZlVSTDsKKworICAgIC8vIEZhc3QgcGF0aCBpZiB0aGUgaW5wdXQgZGF0YSBpcyA4LWJpdCB0byBh
dm9pZCBjb3B5aW5nIGludG8gYSB0ZW1wb3JhcnkgYnVmZmVyLgorICAgIGlmIChMSUtFTFkobV9z
dHJpbmcuaXM4Qml0KCkpKQorICAgICAgICBjZlVSTCA9IFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVm
ZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkp
LCBtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIFNsb3dlciBwYXRo
LgorICAgICAgICBXVEY6OlVSTENoYXJCdWZmZXIgYnVmZmVyOworICAgICAgICBjb3B5VG9CdWZm
ZXIoYnVmZmVyKTsKKyAgICAgICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICB9CisKKyAgICBpZiAocHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpICYmICFXVEY6OmlzQ0ZVUkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAq
dGhpcykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGNmVVJMOworfQor
Citib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKK3sKKyAgICByZXR1
cm4gW2hvc3QuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpIF93ZWJfbG9va3NM
aWtlSVBBZGRyZXNzXTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9H
VW5pcXVlUHRyU291cC5oIGIvU291cmNlL1dURi93dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBiNGZiMzRmODZmMjRhNDYyMWUwZjkwNjcwNjc3NWY5NDgxODU5OTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmgKQEAgLTAs
MCArMSwzOCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgVVNF
KFNPVVApCisKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9H
VW5pcXVlUHRyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfREVGSU5FX0dQVFJfREVMRVRF
UihTb3VwVVJJLCBzb3VwX3VyaV9mcmVlKQorV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cENv
b2tpZSwgc291cF9jb29raWVfZnJlZSkKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBNZXNz
YWdlSGVhZGVycywgc291cF9tZXNzYWdlX2hlYWRlcnNfZnJlZSkKK1dURl9ERUZJTkVfR1BUUl9E
RUxFVEVSKFNvdXBCdWZmZXIsIHNvdXBfYnVmZmVyX2ZyZWUpCisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCisjZW5kaWYgLy8gVVNFKFNPVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGli
L1VSTFNvdXAuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9VUkxTb3VwLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41NWRiYzdlMTdiODM4OTE5YzUwY2ZmZmJkNmI0NWNmOGNiM2I4OWFkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9VUkxTb3VwLmNwcApAQCAtMCwwICsxLDc1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShT
T1VQKQorCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXVEYgeworCitVUkw6OlVSTChTb3VwVVJJKiBzb3VwVVJJKQoreworICAg
IGlmICghc291cFVSSSkgeworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB1cmxTdHJpbmcoc291cF91cmlfdG9fc3Ry
aW5nKHNvdXBVUkksIEZBTFNFKSk7CisgICAgVVJMUGFyc2VyIHBhcnNlcihTdHJpbmc6OmZyb21V
VEY4KHVybFN0cmluZy5nZXQoKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworCisg
ICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE1vdGl2YXRlZCBi
eSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg5NTYuIGxpYnNvdXAK
KyAgICAvLyBkb2VzIG5vdCBhZGQgdGhlIHBhc3N3b3JkIHRvIHRoZSBVUkwgd2hlbiBjYWxsaW5n
CisgICAgLy8gc291cF91cmlfdG9fc3RyaW5nLCBhbmQgdGh1cyB0aGUgcmVxdWVzdHMgYXJlIG5v
dCBwcm9wZXJseQorICAgIC8vIGJ1aWx0LiBGaXhpbmcgc291cF91cmlfdG9fc3RyaW5nIGlzIGEg
bm8tbm8gYXMgdGhlIG1haW50YWluZXIgZG9lcworICAgIC8vIG5vdCB3YW50IHRvIGJyZWFrIGNv
bXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbnMKKyAgICBpZiAoc291cFVS
SS0+cGFzc3dvcmQpCisgICAgICAgIHNldFBhc3MoU3RyaW5nOjpmcm9tVVRGOChzb3VwVVJJLT5w
YXNzd29yZCkpOworfQorCitHVW5pcXVlUHRyPFNvdXBVUkk+IFVSTDo6Y3JlYXRlU291cFVSSSgp
IGNvbnN0Cit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIEdVbmlxdWVQdHI8U291cFVSST4oc291cF91cmlfbmV3KHN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpKTsKK30KKworYm9vbCBVUkw6Omhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3
IGhvc3QpCit7CisgICAgcmV0dXJuICFob3N0LmlzRW1wdHkoKSAmJiBnX2hvc3RuYW1lX2lzX2lw
X2FkZHJlc3MoaG9zdC51dGY4KCkuZGF0YSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
ZXNzaW9uLmgKaW5kZXggZDBiOTAzOGY4MjY0N2JlMGExNWY1Y2VhNGY4MDE5NjFmNjcyZjI5Yi4u
N2VjMzk4MmUxMTBiN2FmNzMxNDlhZTlhZWM1NTFiMGQwMzZiMTQ5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCkBAIC00OCw3ICs0
OCw2IEBAIGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKIGNsYXNzIFBheW1l
bnRDb29yZGluYXRvcjsKIGNsYXNzIFBheW1lbnRNZXRob2Q7Ci1jbGFzcyBVUkw7CiBlbnVtIGNs
YXNzIFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOwogc3RydWN0IEFwcGxlUGF5TGluZUl0ZW07
CiBzdHJ1Y3QgQXBwbGVQYXlQYXltZW50UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZl
bnQuaAppbmRleCBiMDc1OWNkYTE4YzAzYzczZGIwYmQxZGNmODQ1MzFiMjRiNTJkMDlkLi4zYWEy
MmY1YjgyZDZjMmMxODBlY2U4MTQ1ODVkODUxMDg5NGIxYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVy
Y2hhbnRFdmVudC5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAog
I2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCBiZDU1MzRjMmRmOTEy
NTg3ZGQyNzc4OTIyOThiZDdkNDFlN2E5YWZjLi5lMzczMzU3Y2MwN2ZlYTU5ZGU5N2VjNTVkNWM4
ODkzZDA2Mzg2NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAi
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaCIKICNpbmNsdWRlICJQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQuaCIKICNpbmNsdWRlICJQYXltZW50U2Vzc2lvbi5oIgotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaApp
bmRleCBkNDY1MmNmZWQ1MGZmYzFkMmY2YjYyYjVlNGJkZDBmOTI4NjNkNDU2Li5hNTQ3MTU0OTcz
YzAxZjhiZWE1ZDFkY2ExMjE1ZDlkNDQ5ZTAwMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTM4LDcgKzM4LDYg
QEAgY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uOwog
Y2xhc3MgUGF5bWVudE1ldGhvZDsKIGNsYXNzIFBheW1lbnRTZXNzaW9uOwotY2xhc3MgVVJMOwog
ZW51bSBjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czsKIHN0cnVjdCBQYXltZW50QXV0
aG9yaXphdGlvblJlc3VsdDsKIHN0cnVjdCBQYXltZW50TWV0aG9kVXBkYXRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50LmgKaW5kZXggZTkxNWNhMTZkYjQwMjQzOGQ4YmQ4MDAxOWRhZGU5YjM2NzcwM2QxNy4u
ZTc3ZjJjYTk4ZmFmYzU1MzRlNGY2MGU4Y2Y5MDQwNjBkMjhiMTNkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNs
aWVudC5oCkBAIC0zNCw3ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBh
eW1lbnRNZXJjaGFudFNlc3Npb247Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgUGF5bWVudEF1dGhvcml6
YXRpb25SZXN1bHQ7CiBzdHJ1Y3QgUGF5bWVudE1ldGhvZFVwZGF0ZTsKIHN0cnVjdCBTaGlwcGlu
Z0NvbnRhY3RVcGRhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRTZXNzaW9uLmgKaW5kZXggMGEzNTA3ZTI2MGU3NDY3ZTBhYzBkMzFjOTQ5Mzc1NGEzM2Zm
MmE2NC4uOGY3YTRiNjUwZjBiOTJmODE1ZjliNWQ1Y2NlMTc5YTdkNTI5MTA0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaApAQCAtMzcs
NyArMzcsNiBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50
Q29udGFjdDsKIGNsYXNzIFBheW1lbnRNZXRob2Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFBheW1l
bnRTZXNzaW9uIDogcHVibGljIHZpcnR1YWwgUGF5bWVudFNlc3Npb25CYXNlIHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9B
cHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDk5OGI3ODQ2MGNjODdlZDM4ZTkx
ODZmMDhmZDI5OTdjNjNmODlkNzIuLmIyZjFiNDlmM2ViM2EzZWU4MGE0ZmIzMjlmNjllOGJmOGU1
MWE5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5p
ZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtMjcsOSArMjcsOSBA
QAogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKaW5kZXggZTY4
OTZlNzg3OGIyYzJiMTBmNjYxM2NkYjk4NWQwYjZlMjU4ZDk0YS4uNDg5NzZkMmEzNTJlMjBkZTQx
NGE2YmY5OGU1NjZlZTQ3MDQ3NWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4
IDM4ZDVhNjYwOGJkNWY0ZDQ4ODg4MTI2ZjliNThmMjAyZDk3MDIxM2UuLjlhNjRlZThjYjNmYzQx
NGE0NjI1NTFkYmJiMTM4MTJjNGMwY2JmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSlNGZXRjaFJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1DaHVuay5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCmluZGV4IDY3ZGUyZTU0NjJiZjNkYzZhYjgwYzI0YTMxOGM0MDU0ZmNm
OTJjYTUuLjQwMTFiMzczOGM5NzliYjk3OGFkZmRjZmNiYTg1NGNhZThjNWRmZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAK
ICNpbmNsdWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1l
dGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Np
b25NZXRhZGF0YS5oCmluZGV4IGUzNjQ0YTg3NTE5NTk3ZjY0ZTUzZjNjY2RhYzc0NDAzOTc2MDAy
M2QuLjZmM2RmZTM2ZjA1Mzg5OTE0N2M0ZWFkZWZjZTAyZDQzMmY5OTkzZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
TWV0YWRhdGEuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
CiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKaW5kZXggMmU4MmMzMjYxODY1ZDdhOTg4OGE1
YzJjNmI4NTc1NGI0MmNiYTQ1OS4uOThjNjYzYjZmYzZkYmRhMjkzNmE3ZGEyNjg5NmRmMDAzMjMz
YmRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRp
YVNvdXJjZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCkBAIC0zNSw5ICszNSw5IEBACiAjaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIk1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlUmVnaXN0cnkuaAppbmRleCAyYjg5NGUwY2E0M2JlNDFiNWIxMGY0ZDE5ODkxMzQzNDg3OTI4
MzA2Li4wMzM2NzRmMjZkMzQ1ODU5YTRhYTFjZGExMjBlNmQ4ODQxNTQ2ZDg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVn
aXN0cnkuaApAQCAtMzgsNyArMzgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFVSTDsKIGNsYXNzIE1lZGlhU291cmNlOwogCiBjbGFzcyBNZWRpYVNvdXJjZVJlZ2lzdHJ5IGZp
bmFsIDogcHVibGljIFVSTFJlZ2lzdHJ5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggN2UyMjE1MDI0MDhmYmM0OTFlODcw
NjY5NzY4Njc5ZWJlMDA0MzQ2Mi4uOGFjMTQ1Nzk1MGE3OTE4OWQzYWNkMmQwNzA1NjZhMjE4N2Jj
ZmFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwCmluZGV4IGQ2OWRjY2Y4NmUzOGFhM2Y3M2NjYTcx
OWRmMWI5ZWJmZmIyYzIwMDguLjY0MTVmZmFiYTVjOWE4NDgxMzRlNTIyMzM0ZGQzYTYwMWVjMmJm
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1SZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcApAQCAtMjksOSArMjksOSBAQAogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1S
ZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVJlZ2lzdHJ5LmgKaW5kZXggYTI2N2YxMTAwYmUxN2MyYTBiMjlhMjIxZTNiMTY5Yzk3NzRhYTIy
ZC4uZjZkMjNkMmQ3OTBmMGQ0ZjI3NTEwNWJiNDA2YjE5ZTNjZTBlNDkzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lz
dHJ5LmgKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRp
YVN0cmVhbTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKLWNsYXNzIFVSTDsKIAogY2xhc3Mg
TWVkaWFTdHJlYW1SZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBVUkxSZWdpc3RyeSB7CiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGls
cy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5oCmluZGV4
IGI2MmQ5YWZhOGVhZTViNGY2ZmUzNGI0YzU4Y2RiNGZkY2NkNjVhMDYuLjQ3MDY3M2EwOWU5NWYw
MzBmNWVlYWM0MjM5ODY5NmZhMTA0M2UxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmln
YXRvckNvbnRlbnRVdGlsc0NsaWVudC5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUo
TkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaAppbmRleCBmZjBkYzU0ZGFmMWU1MDIzOGFmYTM1ZjEzMjg5ZTViODNlMmIy
YjljLi5mZWRhMWExM2FlZDIxYzQ0YmFkMzM4OTYyOWE3MjUzZjkyYjFjOWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBA
IC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uRGlyZWN0aW9uLmgiCiAjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldyaXRpbmdNb2Rl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaApp
bmRleCBiMDkzZDNhNWZmYzk1NjcxMmVjOTEwZDRjZmExMjI3MWUyOGE5YmFhLi4yMDc3OWNlZGQy
NmY2Yjk0NzExMzg0NGZkOTYxZmJmOGJiMDA2NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25F
dmVudC5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKFBBWU1FTlRfUkVRVUVTVCkKIAog
I2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaAppbmRleCBlM2JkN2U1MzJjZjIz
ZjI1NzY2NjU0ZTEwYzM0NWRjYmNjMzQwODcyLi4zZDE4ODFjNTU3YjdkMzc2OGQ0MzNiMDg2ZTJm
N2Y0YTc5OWRkOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAi
UGF5bWVudE1ldGhvZENoYW5nZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGF5bWVudE9wdGlvbnMuaCIK
ICNpbmNsdWRlICJQYXltZW50UmVzcG9uc2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJl
cGxhY2VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFj
ZW1lbnQuaAppbmRleCA2YjU1NDJlMDg5MDA3ZDlhNDk3MDRmMmZiM2NmNDM5OGEwZmI0ZTBjLi5l
ZmVhZjAwYzllMzU4ZWQ2ODE1NWI1OGExMWFkNDcyNTU2MWUwMjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaApAQCAtNDAsNyAr
NDAsNiBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclRyZWVQb3NpdGlvbjsKIGNs
YXNzIFNldHRpbmdzOwogY2xhc3MgU2hhZG93Um9vdDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgUGx1
Z2luUmVwbGFjZW1lbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5SZXBsYWNlbWVudD4gewog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmgKaW5kZXggNzYwYTRlNzExNGY3NDc1ODIyM2FkZDFmYjBmODU2ZDZlODVkMzBjZS4uNGVmMGI0
ZGRlMDE3NTRmZDdiZDY4OTIyYTQ1NWQ5MzY3ZWNiODZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC03MSw3ICs3MSw2IEBAIGNsYXNz
IE9zY2lsbGF0b3JOb2RlOwogY2xhc3MgUGFubmVyTm9kZTsKIGNsYXNzIFBlcmlvZGljV2F2ZTsK
IGNsYXNzIFNjcmlwdFByb2Nlc3Nvck5vZGU7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXYXZlU2hhcGVy
Tm9kZTsKIAogLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0aGUgd2ViIGF1
ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggY2E0MDZhZjRjNmY1MjI1MWY5ZjZjY2E4YzQ1ZDQ0M2Fi
YjhkOTg1Ny4uYTg1ZGZkNzc0NGNkNDc5YWIxMjNkMzMyNzExZWU4ZjIzZDEwMWQ2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgQXJyYXlCdWZm
ZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7Ci1jbGFzcyBVUkw7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oCmluZGV4IDkwMTIxZjcwZDMwODgwYzJhMDJmOTY1ODBhZTA1NzI4ZmI4
YmRkYzguLjUwNDNjNDk0MjM1ZDA3MDg1NTA2YWFiZGNlM2JjNGQwYjg0YmJjMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTM0LDcgKzM0
LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDc0
MjdiYjU1NzA3NWVkYTg4ZmJkNjYxMjFlN2Q5MGEzZjE5Y2RkMzQuLjFiMTllZGFiNGM5YTZmMzgx
MmY3MTMwYjc2YTZiOTUzN2M1Yzc1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC00NCw3ICs0NCw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogI2luY2x1
ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tTnVtYmVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKaW5kZXggY2YyYmQ3YWMwYWYxYjI3NGQ5ODNiZDZiZmNm
MjRlMzgxZDEyMjNlNy4uZTk2Zjg2MDJhODdhOTM1MjY5Njk2NzY1YzgwZTczMDJjZjczN2ViMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuaApAQCAtMzEsNyArMzEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3Nvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAppbmRleCA4MTJmOGEwMmQzMGExNjgzY2U5NDY4NGY4NzEwMjBlNmJiYjk5ZDE4Li4zODk1ZTQ0
OTY3NTA3YzVlZTk5Y2MyMmY0M2U3MjFmMjkxMzc1ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaApAQCAtMzksNyArMzksNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI7CiBjbGFzcyBXb3JrZXJHbG9i
YWxTY29wZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZmMyODhiMDEzOTFkNzUyYjI0ZGM5ZmFlNzFlZmYw
ZjBlYjhiZTVhZi4uNjIxOTFjMDJlMzUzNzJkNzZiMzE3ZjI3NGY1YTgzNWU2NzMwNjgxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTE1MzUsOCArMTUzNSw2IEBAIHBsYXRmb3JtL1RoZW1lLmNwcAogcGxh
dGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKIHBs
YXRmb3JtL1RpbWVyLmNwcAotcGxhdGZvcm0vVVJMLmNwcAotcGxhdGZvcm0vVVJMUGFyc2VyLmNw
cAogcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcAogcGxhdGZvcm0vV2ViQ29yZUNyb3NzVGhyZWFk
Q29waWVyLmNwcAogcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAppbmRleCA1ODEzNmE5MzhjNGU4ODkwMmFkNTRhZmYxZDExNTI4ZmZhYzYxM2E4Li5m
YjlkOTIwMTQ2MmEyZjFlYjQ2Y2MwYmFhNTFiM2E1Njg2ODBiNDBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKQEAgLTE3OCw3ICsxNzgsNiBAQCBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNz
aW9uTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5jcHAKIHBsYXRmb3Jt
L2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKIAotcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3Bw
CiBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJD
Ri5jcHAKIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTg2LDcgKzE4NSw2IEBA
IHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcAogcGxhdGZvcm0vY2YvTWVk
aWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiBwbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIu
Y3BwCiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKLXBsYXRmb3JtL2NmL1VSTENGLmNw
cAogCiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSBA
bm8tdW5pZnkKIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcApAQCAtNDU4LDcg
KzQ1Niw2IEBAIHBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KIHBsYXRmb3JtL21hYy9T
dWRkZW5UZXJtaW5hdGlvbi5tbQogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCiBwbGF0Zm9ybS9t
YWMvVGhyZWFkQ2hlY2subW0gQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCiBwbGF0
Zm9ybS9tYWMvVXNlckFjdGl2aXR5TWFjLm1tCiBwbGF0Zm9ybS9tYWMvVXNlckFnZW50TWFjLm1t
CiBwbGF0Zm9ybS9tYWMvVmFsaWRhdGlvbkJ1YmJsZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQzNDQ0ZWVlNjU2Mzlm
NWU2NzlkOTY4NzMwY2IzOTM5MzhkZGMwYTAuLjlhODgzMmI1YmU0Mjg2ZWU2NmRmNGFlOTE0MGE3
MmUzNDRkNjc5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE4NDEsNyArMTg0MSw2IEBACiAJCTVDNDMwNEIwMTkxQUM5MDgw
MDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDMwNEFEMTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRT
aGFkZXJUZXh0dXJlTE9ELmNwcCAqLzsgfTsKIAkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8q
IEVYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDNDMwNEFFMTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJl
TE9ELmggKi87IH07CiAJCTVDNDMwNEI2MTkxQUVGNDYwMDBFMkJDMCAvKiBKU0VYVFNoYWRlclRl
eHR1cmVMT0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDNDMwNEI0MTkxQUVGNDYwMDBFMkJDMCAvKiBKU0VYVFNoYWRlclRleHR1cmVMT0QuaCAqLzsg
fTsKLQkJNUM2RTY1NDMxRDVDRUZCRjAwRjc4NjJFIC8qIFVSTFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM2RTY1NDAxRDVDRURDOTAwRjc4
NjJFIC8qIFVSTFBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTVDN0M4OEQ4MUQwRjFGNEEwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3Qzg4RDcx
RDBGMUYyQjAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM4QzYwMDkyMTI3NkI4NzAwODJGODhGIC8q
IFNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM4QzYwMDcyMTI3NkIwRjAwODJGODhGIC8qIFNob3VsZFNr
aXBTYWZlQnJvd3NpbmdDaGVjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTVDQTFERUM2MUY3MUYxQzcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmll
bGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTFE
RUM0MUY3MUU2ODcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTkxNyw3ICsxOTE2LDYgQEAKIAkJ
NjU2RDM3NDgwQURCQTVERTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZEMzczMDBBREJBNURFMDBB
NDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTdBRkFGQzIwMDQ3QTI5MDA1MDk0NjQgLyogU3BlY3Ry
ZUdhZGdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU3QUZBRjgyMDA0Nzg5OTAwNTA5NDY0IC8qIFNwZWN0cmVHYWRnZXQuaCAqLzsgfTsKIAkJNjU4
NDM2ODYwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc1
MyAvKiBGcmFtZUxvYWRSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNjU5MzkyMzgwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzYwOUFFNDM0
NjAwMkM1MzFGIC8qIFVSTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTY1OUE3RDEzMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5QTdEMTIw
QjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU5RERDODMwOUUxOThCQTAwMUJGM0M2IC8q
IEpTRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1OUREQzgxMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVBMjE0NjgwOTdBMzI5MTAw
QjkwNTBBIC8qIFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4MDUsNyArMzgwMyw2IEBACiAJ
CUJDQkI4QUI5MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCQjhBQjUxM0YxQUZCMDAwNzM0REYw
IC8qIFBPREludGVydmFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkNCQjhBQkExM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsVHJlZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCQjhBQjYx
M0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQkI4QUJCMTNGMUFGQjAwMDczNERGMCAv
KiBQT0RSZWRCbGFja1RyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQkI4QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQ0JEMjFB
QjBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCRDIxQUEwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2gu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JG
QjUzRDBEQ0QyOUNGMDAxOUIzRTUgLyogSlNXaW5kb3dQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8q
IEpTV2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlCQ0MwRTg3NjFCRkU3MEU5MDA4RjdGNTAgLyogSFRNTFBpY3R1cmVFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwRTg3
NDFCRkU3MEU5MDA4RjdGNTAgLyogSFRNTFBpY3R1cmVFbGVtZW50LmggKi87IH07CiAJCUJDQzVC
RTAxMEMwRTkzMTEwMDExQzJEQiAvKiBKU0NTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzVCREZGMEMwRTkzMTEwMDExQzJEQiAv
KiBKU0NTU1N0eWxlU2hlZXQuaCAqLzsgfTsKQEAgLTQ2NjksNyArNDY2Niw2IEBACiAJCUUxQTE0
NzA4MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMTQ3MDcxMTEwMkIxNTAw
RUVDMEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggKi87IH07CiAJCUUxQTMxNjJEMTM0
QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMxNjJCMTM0QkMzMkQwMDdD
OUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUE2NDNGMjBFQzA5NzI1MDA3Nzk2Njgg
LyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlFMUE4RTU2NzE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQThFNTY1MTc1NTJCMkEw
MDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUxQURFQ0JGMEU3NkFDRjEwMDRBMUE1RSAvKiBNZXNzYWdlUG9y
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBREVD
QkQwRTc2QUNGMTAwNEExQTVFIC8qIE1lc3NhZ2VQb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBREVDQ0UwRTc2QUQ4QjAwNEExQTVFIC8q
IE1lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUFERUNDQzBFNzZBRDhCMDA0QTFBNUUgLyogTWVzc2FnZUNoYW5uZWwuaCAqLzsg
fTsKIAkJRTFBREVEREEwRTc2QkQ5MzAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQURFREQ4MEU3NkJEOTMw
MDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0LmggKi87IH07CkBAIC02MTE2LDcgKzYxMTIsNiBAQAog
CQkxQTkyN0ZDRjE0MTZBMTVCMDAzQTgzQzggLyogbnBhcGkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gbnBhcGkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE5
MjdGRDAxNDE2QTE1QjAwM0E4M0M4IC8qIG5wcnVudGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBucHJ1bnRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUE5MjdGRDExNDE2QTE1QjAwM0E4M0M4IC8qIG5wdHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gbnB0eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
QTk4OTU2QTBBQTc4RjgwMDA1RUY1RUYgLyogVVJMQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFVSTENGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFBODRGMDIxNDNCQTdCRDAwNTFEMTUzIC8qIFNjcm9sbENvbnRyb2xsZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxDb250cm9sbGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUE4NEYwMzE0M0JBN0JEMDA1MUQxNTMgLyog
U2Nyb2xsQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jv
bGxDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQUFEREExMTRE
QjQwOUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODc0MCw4ICs4NzM1LDYgQEAKIAkJNUM2NjhFNjQxRTdDNkMzNTAwRDMyQjNCIC8q
IFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDNjg4QUEwMUQzODA1MDkwMDBCNTRGQSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
Njg4QUEyMUQzODEyNkYwMDBCNTRGQSAvKiBTb2NrZXRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTVDNkU2NTNGMUQ1Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM2RTY1NDAxRDVDRURDOTAwRjc4NjJFIC8q
IFVSTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxQYXJzZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3Qzg4RDcxRDBGMUYyQjAwOUQyRjZE
IC8qIFNvY2tldFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNv
Y2tldFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOEM2MDA3MjEy
NzZCMEYwMDgyRjg4RiAvKiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOTdBMzM2MUY1RjdBNjUwMDEwNTIwNyAvKiBS
ZWN0RWRnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdEVkZ2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODk1LDggKzg4ODgsNiBAQAogCQk2NTdB
RkFGQTIwMDQ3ODlBMDA1MDk0NjQgLyogU3BlY3RyZUdhZGdldC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gU3BlY3RyZUdhZGdldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTY1N0FGQUZCMjAwNDc4OUEwMDUwOTQ2NCAvKiBTcGVjdHJlR2FkZ2V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWN0cmVHYWRnZXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NTg0MzY4NTBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2Fk
UmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2FkUmVx
dWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2NTkzOTIzNTA5QUU0MzQ2MDAy
QzUzMUYgLyogVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBV
UkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2NTkzOTIzNjA5QUU0MzQ2MDAy
QzUzMUYgLyogVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8q
IFVSTE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVUkxN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUE3RDEyMEI2REI0RDkwMDEx
NTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3Vic3RpdHV0ZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5RERD
ODAwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTI5MDcsNyArMTI4OTgsNiBAQAogCQlCQ0JCOEFCNTEzRjFBRkIwMDA3MzRERjAg
LyogUE9ESW50ZXJ2YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9ESW50
ZXJ2YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCQjhBQjYxM0YxQUZCMDAw
NzM0REYwIC8qIFBPREludGVydmFsVHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQT0RJbnRlcnZhbFRyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNC
QjhBQjcxM0YxQUZCMDAwNzM0REYwIC8qIFBPRFJlZEJsYWNrVHJlZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQT0RSZWRCbGFja1RyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQkNCRDIxQUEwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNXaW5kb3dQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dpbmRvd1Byb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8q
IEpTV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXaW5k
b3dQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0MwRTg3MzFCRkU3MEU5
MDA4RjdGNTAgLyogSFRNTFBpY3R1cmVFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEhUTUxQaWN0dXJlRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNDI1Miw4ICsxNDI0Miw2IEBACiAJCUUxQTVGOTlBMEU3RUFBMjUwMEFG
ODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUE2NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQTY0M0ZDMEVD
MDk3QTAwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUE4RTU2NDE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZV
UkxFeHRyYXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0ZVUkxF
eHRyYXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUE4RTU2NTE3NTUyQjJB
MDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ0ZVUkxFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQTgx
NEU5RTI3RDAwNDQ5RTEzIC8qIEZpbGVMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBG
aWxlTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUI3MTRFOUUz
NTgwMDQ0OUUxMyAvKiBGaWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTFBQjFFQkIxNEU5RTM3QTAwNDQ5RTEzIC8qIEZpbGVFcnJvci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRmlsZUVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjM0LDgg
KzE2MjIyLDYgQEAKIAkJMUFFNDJGNjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNmICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlFMUE4RTU2NDE3NTUyQjJBMDA3
NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3BwICovLAotCQkJCUUxQThFNTY1MTc1NTJCMkEwMDc0ODhF
NyAvKiBDRlVSTEV4dHJhcy5oICovLAogCQkJCTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBG
aWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCTUxN0E2M0JGMUI3NDMxN0UwMEU3RENEQyAvKiBLZXll
ZERlY29kZXJDRi5jcHAgKi8sCiAJCQkJNTE3QTYzQzAxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVk
RGVjb2RlckNGLmggKi8sCkBAIC0xNjI0Nyw3ICsxNjIzMyw2IEBACiAJCQkJMkQ3NkJCODMxOTQ1
NkY4MTAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5jcHAgKi8sCiAJCQkJMkQ3NkJCODAxOTQ1
NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5oICovLAogCQkJCTUxMkREOEUyMEQ5MUUy
QjQwMDBGODlFRSAvKiBTaGFyZWRCdWZmZXJDRi5jcHAgKi8sCi0JCQkJMUE5ODk1NkEwQUE3OEY4
MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQ2OTksMTEgKzI0Njg0LDYgQEAKIAkJCQkxODVCQ0Yy
NzBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggKi8sCiAJCQkJOTMzMDlFQTEwOTlF
Qjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCAqLywKIAkJCQk5MzA1QjI0QzA5OEYxQjZCMDBDMjg4
NTUgLyogVGltZXIuaCAqLywKLQkJCQk2NTkzOTIzNTA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmNw
cCAqLywKLQkJCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggKi8sCi0JCQkJQkNC
RDIxQUEwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCAqLywKLQkJCQk1QzZFNjUzRjFENUNF
REM5MDBGNzg2MkUgLyogVVJMUGFyc2VyLmNwcCAqLywKLQkJCQk1QzZFNjU0MDFENUNFREM5MDBG
Nzg2MkUgLyogVVJMUGFyc2VyLmggKi8sCiAJCQkJODY4MTYwRDExODc2NjlDNDAwMjFFNzlEIC8q
IFVzZXJBY3Rpdml0eS5jcHAgKi8sCiAJCQkJODY4MTYwRDIxODc2NjlDNDAwMjFFNzlEIC8qIFVz
ZXJBY3Rpdml0eS5oICovLAogCQkJCUEzQUY5RDgyMjAzMjUzMjQwMDZDQUQwNiAvKiBVc2VyQWdl
bnQuaCAqLywKQEAgLTI3NDc2LDcgKzI3NDU2LDYgQEAKIAkJCQlDRDMxODYyMzE5OUYxRTJBMDAz
MEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RFNTk1OTcxQkYyNkUyMTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVGQTkwNENBMTc4RTYxRjUwMDRDOEEyRCAvKiBDZXJ0
aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAotCQkJCUUxQThFNTY3MTc1NTJCMkEwMDc0ODhF
NyAvKiBDRlVSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzNkZEMTUxNkM3ODI2NTAw
Rjg4N0MxIC8qIENoYW5nZVZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNjlE
RDE1MDVGMDc2MDAxQjc0QUMgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEMzE1RkZGMTJCMDI2NzYwMEMxQTM1OSAvKiBDaGFubmVsTWVyZ2VyTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMDkxNiwxMSArMzA4OTUsOCBAQAogCQkJCUU0QUZDRkE1MERBRjI5
QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDg2RkU5ODA5
RDUzQUFCMDA1QkM3NEQgLyogVW5saW5rQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQx
NzYyRTAxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NjU5MzkyMzgwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY3
NzI2MDUxQTVERjZGMjAwM0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCBpbiBIZWFkZXJzICov
LAogCQkJCUY1NUIzRERFMTI1MUYxMkQwMDNFRjI2OSAvKiBVUkxJbnB1dFR5cGUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTVDNkU2NTQzMUQ1Q0VGQkYwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdDQzI4OURGMUFBMEZFNUQwMDlBOUNFMyAvKiBVUkxSZWdpc3RyeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENDM3QTIxRDU3QjNGRTAwQUI4NUVBIC8qIFVSTFV0aWxz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI3NjNCRjE2Njg5QkZCMDAyRkNBQ0IgLyogVXNlckFj
dGlvbkVsZW1lbnRTZXQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAppbmRleCBmM2UzNDZiZWE3
ZTE4YmVkMmI4OTkwNjc0YjZlMjJmYzRhMDI1Y2MyLi42MmNkNTRhODRhYjRhNWYwMmZhYzdiNzI1
ZjYwZDdlOGFkMTJjMmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaApAQCAtNDAsNyArNDAsNiBAQCBjbGFzcyBEZWZl
cnJlZFByb21pc2U7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEpTRE9NR2xvYmFsT2JqZWN0Owog
Y2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzOwotY2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXI+LCBwcml2YXRlIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaAppbmRl
eCA1MjJiMmZmYzA0MzJjMTg5NGE0NWMwMmI2OTU5ZTllNjBhODQzNTZlLi5kNTM5MWM2OTdkN2Nm
NGY2ZjVkNDA3OWNhMjcyZWY3N2VhOWNhYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkU2NyaXB0OwogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFz
cyBVUkw7CiAKIGNsYXNzIENhY2hlZFNjcmlwdEZldGNoZXIgOiBwdWJsaWMgSlNDOjpTY3JpcHRG
ZXRjaGVyIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggODg2OWRiMWY5YTMyZGRjM2QyMDVjOGZmODVkMjI5NDAxOWQy
OWIzMS4uZDZjNzljZDIwYWQ1NzEyOGFkN2U2Nzk2YjVlMWY2NDE2MWQ0MWMxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU4OSw3
ICs1ODksNyBAQCBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRXhjZQogCiBib29sIFNjcmlwdENvbnRyb2xs
ZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VE
b2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRV
UkwpCiB7Ci0gICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmICghV1RG
Ojpwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoIW1fZnJhbWUucGFnZSgpIHx8ICFtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpLT5hbGxvd0phdmFTY3JpcHRVUkxzKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJs
KCksIGV2ZW50SGFuZGxlclBvc2l0aW9uKCkubV9saW5lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBmN2MwODI0ZTA2Y2M3MTQ2OWMwNzBk
Njg4ZTQyNjgyNGM5YzNjNGYwLi42ZTlkZGNhMDhkZTBmNjgxOGEwNzY3NWJhYTZmNGFlNGRlZWVi
YmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
CkBAIC02MCw3ICs2MCw2IEBAIGNsYXNzIExvYWRhYmxlTW9kdWxlU2NyaXB0OwogY2xhc3MgTW9k
dWxlRmV0Y2hQYXJhbWV0ZXJzOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwotY2xhc3MgVVJMOwogY2xhc3MgV2lkZ2V0Owogc3RydWN0IEV4Y2VwdGlvbkRl
dGFpbHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1v
ZHVsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9h
ZGVyLmgKaW5kZXggOTFmZjk5YzE1MGNmYmM4ZmI2ZWE3MGY1ZjUwNDJjN2FhMWU0MzQ0Yi4uYTYw
NjZmNGNlMzk5OTk2YzY1NGRiNjAzYzBhNDcyNGRkMDg0MDM2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKQEAgLTI3LDEwICsyNywxMCBA
QAogCiAjaW5jbHVkZSAiQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVk
ZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTEhhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAppbmRleCA1NmVlNjkwZGU4NDE1OWE1N2M0
MjhhOTA3MzliMjA1NmZmZGRiZmQ2Li5iN2Q3ZWI5M2NiYWNiNzRhODFjMDA3ZTVlZjA5ODEyMjVi
YzlhOTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3Vy
Y2VDb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29k
ZS5oCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNs
dWRlICJDYWNoZWRTY3JpcHRGZXRjaGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0U291cmNl
UHJvdmlkZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
b3VyY2VDb2RlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlUHJvdmlkZXIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IGQxMWI0MmU2ZTdlNzU0NzA0Mjc0MzM4MTNjMzU5OGM0MDAwZTg5NGQuLjVmM2VhNzNmOTc2NDEy
MDA1ZmMzOTI3YjA2ZTExYjZiNTE4MjNmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00NTMyLDcgKzQ1MzIsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIGlmIChOZWVkc0ltcGxlbWVudGF0aW9uQ2xh
c3MoJGludGVyZmFjZSkgJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3Rv
bUhlYXBTbmFwc2hvdH0pIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+Iik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiKTsKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IlVSTC5oIik7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8d3RmL1VSTC5oPiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpoZWFwU25hcHNob3Qo
SlNDZWxsKiBjZWxsLCBIZWFwU25hcHNob3RCdWlsZGVyJiBidWlsZGVyKVxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsK
QEAgLTQ1NDQsNyArNDU0NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQog
CiAgICAgaWYgKCRpbmRleGVkR2V0dGVyT3BlcmF0aW9uKSB7Ci0gICAgICAgICRpbXBsSW5jbHVk
ZXN7IlVSTC5oIn0gPSAxIGlmICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uLT50eXBlLT5uYW1lIGVx
ICJET01TdHJpbmciOworICAgICAgICAkaW1wbEluY2x1ZGVzeyI8d3RmL1VSTC5oPiJ9ID0gMSBp
ZiAkaW5kZXhlZEdldHRlck9wZXJhdGlvbi0+dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKICAg
ICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lID1+IC9eSFRNTFx3KkNvbGxlY3Rpb24kLyBvciAkaW50
ZXJmYWNlTmFtZSBlcSAiUmFkaW9Ob2RlTGlzdCIpIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkpTTm9kZS5oIn0gPSAxOwogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siTm9kZS5oIn0g
PSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcAppbmRleCAxMTc5NTg3NTM1MWJmMmUzNjNjOTE0ZWRk
NzQxMzUxYjc0MmEyOWFjLi42ZDliZDE3YjZkMTU0ZTBiZjBhNmZmOGIwMWIwMDFkMzM1NmRmZTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJ
bnRlcmZhY2VOYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcAppbmRleCA2ZDdmYWEyYjc3ZGFkNmE0NzNkMDljYTZm
ZjI5YjM4OTZjNWM0YTJiLi4wNzljNjY2Mjk0YWVlY2E4Mjc0YWUyYmNlNWVmZTRlYTc3YjE2YjRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNN
YXBMaWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNNYXBMaWtlLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRp
b24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExp
a2UuY3BwCmluZGV4IDAwOGRjZWJhNDJjNmQ0YzZmYjJjOWE5MTNmZmI2ZDMzZmQwZjFjODMuLjk3
ZDRmM2FiNGZhMTYwMmFlNDkwYWU4NmM5NmUwYzM4NDc4YmY5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlN
YXBMaWtlLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24u
aCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURP
TU9iamVjdC5jcHAKaW5kZXggNjI5MTZkMzZiYjU1YTY5MzIyNjJmZmE1NWRjMjRjZTZlZTNiZTg2
My4uNGQ5ZjE0MmM1NDQzMjgxZTU4ZmZjYjA1NTY0ZTVjZGNiZmM0ZDU0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTMzLDEyICszMywxMiBAQAogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKaW5kZXggNjQwNmJlOTk5MDNkMTRjMWIxNzEwOGI4ZmEz
ZDEyOTJlMWZjOTA3MC4uNGEwMjc5MzZiOWRiOTkzNjBiZmRkNzhhOTdiNmIzNWQ2NDY4NmNhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllci5jcHAKaW5kZXggYWRhZDA0OWIxNGM0YWE1ZjI1YWVhZDk0NjBiMWMyYmZhNjE5
MjI0ZS4uMzQyYTBkZjhkMWUyODM1Mjg0YmMzNmJlNjFkYmJiZjI3YmIyOGQwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcApAQCAtMzAsMTIgKzMwLDEy
IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAppbmRleCA0NjFj
NGQ5NmE1ZjM5MGRjOGYxOTAwOTVjYjc0NTY0YTcxMDdhNzIyLi4zYWQ4YzIzNzkzYTdhNjliODMz
NGRmNWJkNzU0MzIzZmQ5YWFiNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCkBAIC0zNywx
MiArMzcsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpT
Tm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggMWRiMGEzMmQ1NWU1Y2I3YzBm
OTRjODVmMmFmYzljOTgyYjJlYjAwZC4uMDA4YjVlODk3Njg2OTVmMjVjODMzYmEzNDYwMWQ0YmU1
N2QwZTI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKaW5kZXggZTFm
OWYxNzBhNmNkNzIzZGJlOTU1ODRkY2Y1ZmFkMDQyNDJjZWU4OC4uYTk0NTRlOWJhNmI5MzgwNGEz
ZTkwNTk0ZTlhNzBlNjBjZDZhMWI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCkBAIC0yNiwx
MiArMjYsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCmlu
ZGV4IDc2YzQwZmIwNDU3OTUwM2VhNWI1MmM0N2UwNDk2MGRiMjE5OTlmM2EuLjk1ZDc2NzA0NzM4
OGUzOGMwMTAwNDI5NWQ4Y2YxMzQ1NmJkNDRiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCkBAIC00MSwx
MiArNDEsMTIgQEAKICNpbmNsdWRlICJKU0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZyYW1lVHJhY2Vycy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAppbmRleCA4
N2IzNTNjNWI1OTg1ODlkNTkwMmI3MGU2NGYzOTA3MjFmYTkyYzkzLi4xMjdmYWE5NjdkMmFjNTM2
ZTQ2YWI5M2RiZjU2ZmQ1MjU0ZmUxOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRp
bmcuY3BwCkBAIC0zMSwxMyArMzEsMTMgQEAKICNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDU1ZGVhOGVlYWIwN2Y3NTA1ZjFhNmJk
ZmNjMjQxYjY3MWNiZGVhNTYuLjQ1ZGMxOTI3MDQ5YmUyNzIwNTUyYTk4YjdkZjIzNWIwZjVhMTVi
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMwLDExICszMCwx
MSBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcAppbmRleCAzMDhlMzRmMDAxYWMyZDhiMzUzZTgwNTFkOGVjNTFiYmFkZDZlZTBh
Li43MWUzYmYzNzU0NDI5ZWM3YTdjY2NhODM1NTFkMzkyODhhYzFlZWYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhj
ZXB0aW9uLmNwcAppbmRleCAyMzhhNDhmN2M2NWYwZDNjYjZmMWUwM2Y3YTI5ZTllODI5ZWJjYmNm
Li5kMzJjMDRjYzUwZWVkZjI2OWVkODAxZDY5MTIzZjZiNTA1NDA0NzIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhj
ZXB0aW9uLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IDM0MjM4YmM1
ZDIxM2VjNDk5ZmJlNWEyNTVjNTYxOGYzMDY4NWIyZGMuLmFjMmJlYmIyZDkzMjRhMWEyYzJhZGQ2
YTE2MGQzN2M3NzVjMjNiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxp
bmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggNzFiOGJkZGY2OGRhZWNjNzNlMjIxY2U4M2Q2
NjA3M2M3MzhiNGVjOC4uYjIwYjgzYzdiZTllNWIzN2I5Y2M1NzU4NjYzZTE3ODU1ODVlMzkyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
U25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CiAjaW5jbHVkZSAiVGVzdEdsb2JhbE9iamVjdEJ1aWx0aW5zLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggNjYwNzhiZDZjYjUxMWUx
ZDJmNDY4ODgyNTgyYTdmOTFmYmMwNmJjOS4uNTc4OTI1MzdiZTg3ODMyNGE1ZGRlOGY2ZDFjNTky
YzFiOTYyYjcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcApAQCAtMjcsMTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmlu
ZGV4IDYyMDNjYzBiOTg3MzkyNDc3YTFkOWJmN2I1NzBjYmUzN2MxMGUzNGYuLjM1NWFkY2Q5MGFl
ZmNmNTk1ZDA3ZWQ1NDZlNGNhYWIyMGIzZWUyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yNywxMyArMjcsMTMg
QEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggM2ZkYzU2MDQwMzUwZTEzMjFkYjI0Njk3YjcyNzI1
NTdkZDFhOTA4ZC4uNzY5NjczYWZiYjRlNjIwMWQ5NGMzMmE4NGNmMjQ5ZWU2MDM4OGZlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAK
QEAgLTI5LDEzICsyOSwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXgg
NGM2NGMxOWViODU4MjYwMjlmNjBiOTI1YjMxOWUxMWE3MDNkOTRmNy4uNjRhMzc4OTlhOWQ5MDdm
Yzg1Mjk5ODZiM2QwNDkxYmY3MDc4NjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTM0
LDEyICszNCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlRlc3RTdXBwbGVtZW50YWwuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiAjaW5jbHVkZSAiSlNET01Db252
ZXJ0U3RyaW5ncy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZS5jcHAKaW5kZXggNTVmZmQ2N2ExNTBmZTMyYzVlZGEzNWUzMmQyNDZmNjkzMmU4ZWJh
YS4uY2ZmMzJmZjBlYjNhZGRhNzdmZTk0NjNhMmE0Zjk5Y2U2NThiNDk3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCkBAIC0yOCwxMiAr
MjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcApp
bmRleCA5NzljMGY4Y2M1YmFkODQ2ZjA5NjFjYmRhMjY0ZTBjYjc2YzE4MzBjLi5hYzFlOGU3Zjll
ZjgyOTI3OGUyNDU4NDVhNjYyMzFhNWZjYmNhYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKQEAg
LTI4LDEzICsyOCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHAKaW5kZXggNTBhZGE4Y2FmMGVlNmQwMmJhZGE4MDFiMGI2OThhZWU5NTlkOTM2
MC4uMDBmYWY5ZjA1NzNmZDAwNzVkZThkZTUxNDllOGViNTA4NzRjOTRmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBA
CiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDMxODdkMmRh
ZjNkNmU3MjFlN2UwMDg1ZjI3Y2NiMjJmMmI0MWRhZjkuLjNmZWJkMWNkZWM0MGVjZWZiYTMyYmNm
YzQzNjMyNDM1MTVjZTZiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKICNp
bmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1By
b3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4IGQyNzE5NGU4M2U2YWM3
NzY1MzFhOWRiNzczMGYwNTc0YzJkZmFlMWQuLmUwNWQ2NTU0NmJmYTExMzZhMDg2NDI5NTg0NzJj
ZjUwY2EyZDUzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjgsMTMgKzI4LDEzIEBA
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBiMWYzNmQ3M2UwMzVhZmU3
OGVmZTkzMmIxNGRmOTNjZWZmYmE0ZGYyLi5lMDE1YjE3OGE3NjUzOGY4MTllNTNhZmU3YzVmYmJh
NzQxODRjYTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1
ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA5Mjk4YTE3NjBjMDgz
NTI2NmM0MmViNjY0ODY0YmY2NDQ4MmM3YjMwLi5mMWE4NGE4YmFkOWE1ZDYwNWExMGU0OWQ5YzVj
NDI3M2Q5OTI4N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0y
OSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU5hbWVkQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggNTdkNjdjMjM0ZTI2YjRk
ZGQwOTQ3ZTQwMmVmODliNDUwMmI2ZGQ0My4uODYyYjQ1OWZiYjIxZDdkMTAxMjU2OTVmNWEwZWFl
ZmVkNzU0ZjZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
Zmllci5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFu
ZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCmluZGV4IGQwZmNkMmYyYjkwMzI0OTViNGI2NThiZTliMzFiN2ZlNTVhMDg4NmEuLmMxMDVm
MTVkYmFmODVkYmYzZmU0NDMzYmE3YTgwNTVhODQyZmFhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjgsMTIgKzI4
LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggMjUxNDEwYjVmYWVmNzAwNGMw
MTE2NjY2ZmNlOGUxZTkwYTMzNzlhOS4uNjQxMzljOGY2YjIwYmIzNGI2MjM2ZDYyMDQxYzdlNmQw
MjlkOGE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5k
ZXggMjc1OGNhMTBhMTQxMmM0MTM5YjMyNTg0ZjNjZjkyYjQwM2FiYjAxNC4uZDYxNGJjZTQyMWZl
MzRjNmZiZTY3OGJkMzdlNTMyZDUyZDI3NjQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAK
ICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNw
cAppbmRleCBjYTJiZjYxMmFjYmMyZmQ0ZTA0NGExNTlhNzY0NjdlNWFhY2FiOWIyLi5lYTRjNWNk
MjdmODg3OWQxNzllYmJiOTE1M2RmOTkzODEwYmU3NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGguY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RP
TUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVy
LmNwcAppbmRleCA5MTIwZjRiZTdmMjFiNzhkMmM5YmZmMmRiMTcyNWE5NDk3NGJmY2QxLi42ZTQw
ZGVmM2Q0NGJhMzdmNzY0MDA5OTEyODlhZmMxMGUyOWI3YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2lu
Y2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyLmNwcAppbmRleCAzYmI3ZDNiN2UxMmY4MjljODhjMzQ0YmFiZGI0ODY4
MjJmNTdjYmEyLi5kMzkyNGNiYTYwODZjZjkwODQ2YmYxMTA4NTA5MzQyMDE4ZTQzMzY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0y
OSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggY2JkNWQzMWE2MjY3ZWExZWUyNWRlMDkx
NGQ2MTQ2OGJmY2Q5MjViNS4uYzdhM2M2YTlkNTk1ZGZlNjcyY2M3MmFiZGRlMDNlZmU2YzgzMjhm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBA
IC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggOWZj
YmY2OTdiNjM5YWUwM2RkYzBlYmIyMDgzY2U3OTlmNzM4ODM1My4uOThlYzEzZGMyZTc5ZWY1ZmRh
NjRiZjcyZDc0M2YxYmNmMzllNDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCmluZGV4IGI4YTlmYWRlODViNGU5ODdjNzA1MmEwMjlhOWRkOGZjZGE2
ZDMyNTAuLmRkZGZmOGNjZDcyNTliMzc0NWE2NmNjN2RiZTZhYWZmZjgwOWU2YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTI5LDEy
ICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggMTcxNDc3NTUwYjBjMzg0NTk1
NjJmNmE3NWMyZTgzZDgzMTVkYjkyNC4uYjY2MWY1M2NkMjg3MDg4ODNhMTFjOGMyMDVlNzA0ODA5
NTMxN2YxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRp
b24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIuY3BwCmluZGV4IDEwM2Y5MWMxYmFhMmFhMzlmMWUzOTlhYWZlY2U1ODExOTExMTZkZWUuLmMz
NWZmODk2YzQ4ZDhiYjI4NzgyM2JkZjBhNDYwN2ExYjNkYTg3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ci5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCBmYzEyMmEy
ZTJiYmY4N2JhMTRiMTZmNzA3OTllNmMyODBmMWU0YzRkLi45ZjEwZDY0ZWU1YTBkMTMxOWI4Y2Nm
ODk0ZGE5MGM4YWMxOGExODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNs
dWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAppbmRleCA0ODA3YjM2NTUzMzE4
ZTA0MmE5YjY3YjQ0NDA4MTE5ZDY4NGVkMWRlLi5jNjBkY2FiNjM1OTU5N2RiNGY4ODBlZGY0MDQw
YWM4MzQzNWE4MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogI2lu
Y2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnMuY3BwCmluZGV4IGRkNTE5MzA3MzNiNmNkYWE0OWUxZjY4NTZiNmI3MWYxZTExN2Nh
ZGUuLjQwYjk4MWUzNDQxMDU3ZDdjYmI3ZmVlMTcwZWU1M2NiOTAzMDE3N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0zMCwxMiAr
MzAsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IGRlOTZkM2I4Y2Jm
MjAxMjhiMzk2MzVkYjM2ZTA2ODRlOWY4NjY3YzYuLjJiMmRlZDRjMmM2ODhhZjQ0M2Y0YTk3YzBm
ZDQ5YjEyNjAwMDY1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0
cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKaW5kZXggMGNhNWRiZGUwYzk3MzRlMzk4MWVjMTFjMWU3NWU3ODg5YWJi
N2JiZi4uOWYyNTRiNDdlYjk5ZWU5OTBkNzU3Y2QyNzI4OGVjOGEwYjg5NzE1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKQEAgLTc3LDcgKzc3LDYgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheVByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgpAQCAtOTEsNiArOTAsNyBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAKaW5kZXggZWFmMDkyYWYzZjNhNzFlOWQzYzRjZjYwMTFiZmQ5MTkyYWIyMWI1YS4uMWFk
YjcwMjEyZjQ1MWNjZTg1YjA4Y2RhMDM2ZmU0NzgwODljMzk3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCmluZGV4IDA1ODE0M2JhMTRiYjRl
YjIyNDA5YzhkMjg0NzM3NTNkODRmMDNlN2YuLmIwNTU2Njg1OTZiYzZmMjdjODJjNzE2ZmQyMzRl
NWQ4MGFhOGE0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSXRlcmF0b3JPcGVyYXRpb25zLmg+CkBAIC0zNyw2ICszNiw3IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cy5jcHAKaW5kZXggMGRiNzc0YWYxMjVmNWQxODUwZjc5YTYxNzE0NzVlMTM3YWI3Y2Q2MS4uYzFh
NjM0MzBhYzBkOGFjMTNiYmE0YzRhNzQzOTQ5MDE4YzcxMWQzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25h
cHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1
Z2luSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCmluZGV4IDI4MzYyNDczYTcwOWY1OTY0NmJiZWI2
MDRiZTNkYTExMWEwYThjZWQuLmJlYzU3ZDU1MTdkNWIwOWM4ZDIwYTBhZGU0Mjk3Y2YwYWU4ZGZj
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCkBAIC0yNywxMiArMjcsMTIg
QEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTUGx1Z2luRWxl
bWVudEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudC5jcHAKaW5kZXggOGIwZjUxZWQzMTk0MWM4NGFlYjI0YTM3M2JlOWIx
N2MwN2Y3NjNkNy4uN2EyNTg5ODY3MTQ2MzBhMzA1M2JjNzQ4MWE1ZGUwZmVmMWJkNzk4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKQEAgLTM0LDExICsz
NCwxMSBAQAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb24uY3BwCmluZGV4IGUzYzFjYzI1OWExZDI3ODc5YTI2N2Q5ZjQ0NThkNWQ0ODlhNjg3
OTIuLjc4ZDFjNDFjNDI4YzAxZTFmNzVmNmU5MWE2NGFlYjMwNWMwYTUyNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbi5jcHAKQEAgLTM2LDEzICszNiwxMyBAQAogI2luY2x1ZGUgIkpTVGVz
dFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmgiCiAjaW5jbHVkZSAiSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXRGaW5hbC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdElu
aGVyaXRhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKaW5kZXggOTYzNjhmM2U2
ZjdiZmZhOGUxYTdlZmJmZTdmNTA2M2Y2NDZkYmRhNy4uMTMzZWRhMDJlNjQwMTYzZmM5YmU2NTQz
NDgyMGZiOTI1ZjA0YzBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNs
dWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdC5jcHAKaW5kZXggMzdmNjU0ZGRmY2Q3YzE1Yjc4ZWI2NzFjNGFhYzY3ODVk
NTQwMGJiNy4uYWQ1MzFiMjBiNzRiYzZkMjU5NTY5MTgyZWFlZmM1MzExY2Y4ZTA5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwCkBAIC0yOSwxMiArMjksMTIg
QEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0RmluYWwuY3BwCmluZGV4IDVlODY5MTBhYjUyMDg4ZTMxNzc5MzY0OWQ0YzYwNzJh
YzRlNzJiOTQuLmExYWMyZDAxMGU1MWM0ODM3YzBmMGI1NDYyMjgwMzRhZDBkYjg0ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKQEAgLTI5
LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDM0MmVkMWFhNTBi
NDY4NjhiZmIzOTE2NmFlMGY4M2QwOGM2ODAyYTguLmRmN2RmYjhmOTYxZDk0ZmU4ZTI0ZjAxZDI0
MWZiMjRmNmE5NGZhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAKICNpbmNsdWRlICJK
U01lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQXJyYXkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXIuY3BwCmluZGV4IGZmMmNhZDJjYWZmYzlhZGYxYWZmYTUzY2RmMDk3N2NmYzgz
ZTg3MTUuLjUyNDJiYjhiYWFjNmZjOGNhMTQwNDA2MGYxNTBiYjFkZDdjMDE1ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01P
cGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRp
b24uY3BwCmluZGV4IDg5ZWRmYjRkNTRmZmNlMjkzMTJlOWRjMzcwYTI5MDRlODYzODk0OGYuLjdj
YWUyNDM5ZWY2MjdiNmMyNjYxNzM5NGI5MWNjOGI4MDRmZjA1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcApAQCAtMjgsMTIg
KzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAppbmRleCBiMTZiNmZiNGJkMTRlMjRkMmRhZTBmNDRi
YWJlYTY0ZDg0NzAwZjQ0Li41MGE0NmY2MTRmOTg0OGI3NjkyODVlMTYzODkwNzNjMTI5MTU3ZmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3Bw
CkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAppbmRl
eCA1YTU0YWMxNDNjYjI3OTM2NGU2NDZjMzMzNGIwY2JjMTdhZTgzNDM1Li4wYTMzYWYzNzhhMmIx
MjE5ZjI5Mjg0ZGM4OWUxNmQzOGI3MjQ3NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcApAQCAtMjgsMTIgKzI4
LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKaW5kZXggZjI1MThhNzFlZDY4
NjFjNWE4Y2FmNmJlYjM0YzVmY2Y2YmQzMGRlZi4uNDkwNDkxNzRlMDM2ZjVmMTgwNjI0NGMzZjJl
YmQxOWUxNjk2MmU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZS5jcHAKaW5kZXggODEyMzcyYjRkNGVlNzBjNDIzYTI4NDMzNDY1MWQxMTU4ZWFh
Y2U1OS4uYzljNTI2OThiODJkM2ZmZjI3ZDIzNDRmZGRiNTU0M2QwOTJjYTQwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcApAQCAt
MjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCmluZGV4IDM5MTdiNGQ5Mjk2
YmE1MjNkYzEzMDcwNjE5Y2Y0Y2VkMzhhODNmYjEuLjc1ZWMzOGFkYjhmZTg4OTMwNDYwMzUzNDZi
NTY0NDZkN2IyYjYyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNE
T01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDFlNjEzYWFiMDY1MjRhZjU1NjA2MzNkODgy
MjQ5N2ZkMWMwMWUwYTIuLjE4NmE0MTZkYTg3M2E2NGU1ZGY1YzY2ZWJiZmQwOTAxYWNlNWRkMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBACiAjaW5jbHVkZSAiSlNU
ZXN0U3ViT2JqLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
QXJyYXkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25zQmFja2VuZC5jcHAKaW5kZXggNzI0MDcxNTZlYmQ2MjY4NmExMzRiMDFhNGU0MGNkNTEx
NmI3NTlkZi4uZDBlYWJhMDlmZDEyZWVhZjVhMTM3YTJhYjRkYzI0MGI5OTdiNzY5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
SW5mby5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
ICJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xOTQsNyArMTk0LDcgQEAgQmxv
Y2tlZFN0YXR1cyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKGNvbnMKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENv
bnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpNYWtlSFRUUFM6IHsKICAgICAgICAgICAgIGlm
ICgodXJsLnByb3RvY29sSXMoImh0dHAiKSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSkKLSAgICAg
ICAgICAgICAgICAmJiAoIXVybC5wb3J0KCkgfHwgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVy
bC5wb3J0KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKKyAgICAgICAgICAgICAgICAmJiAo
IXVybC5wb3J0KCkgfHwgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBvcnQoKS52
YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpKQogICAgICAgICAgICAgICAgIHdpbGxNYWtlSFRUUFMg
PSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI0NCw3ICsyNDQsNyBA
QCBCbG9ja2VkU3RhdHVzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRF
eHRlbnNpb25SdWxlc0ZvclBpbmdMb2FkKAogICAgICAgICAgICAgd2lsbEJsb2NrQ29va2llcyA9
IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9u
czo6QWN0aW9uVHlwZTo6TWFrZUhUVFBTOgotICAgICAgICAgICAgaWYgKCh1cmwucHJvdG9jb2xJ
cygiaHR0cCIpIHx8IHVybC5wcm90b2NvbElzKCJ3cyIpKSAmJiAoIXVybC5wb3J0KCkgfHwgaXNE
ZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5wb3J0KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkp
KSkKKyAgICAgICAgICAgIGlmICgodXJsLnByb3RvY29sSXMoImh0dHAiKSB8fCB1cmwucHJvdG9j
b2xJcygid3MiKSkgJiYgKCF1cmwucG9ydCgpIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHVybC5wb3J0KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKICAgICAgICAgICAgICAg
ICB3aWxsTWFrZUhUVFBTID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yOgpA
QCAtMjc1LDEyICsyNzUsMTIgQEAgdm9pZCBhcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QoY29u
c3QgQmxvY2tlZFN0YXR1cyYgc3RhdHVzLCBQYWdlKiBwYWdlLCBSZXNvdXIKICAgICBpZiAoc3Rh
dHVzLm1hZGVIVFRQUykgewogICAgICAgICBjb25zdCBVUkwmIG9yaWdpbmFsVVJMID0gcmVxdWVz
dC51cmwoKTsKICAgICAgICAgQVNTRVJUKG9yaWdpbmFsVVJMLnByb3RvY29sSXMoImh0dHAiKSk7
Ci0gICAgICAgIEFTU0VSVCghb3JpZ2luYWxVUkwucG9ydCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbChvcmlnaW5hbFVSTC5wb3J0KCkudmFsdWUoKSwgb3JpZ2luYWxVUkwucHJvdG9jb2wo
KSkpOworICAgICAgICBBU1NFUlQoIW9yaWdpbmFsVVJMLnBvcnQoKSB8fCBXVEY6OmlzRGVmYXVs
dFBvcnRGb3JQcm90b2NvbChvcmlnaW5hbFVSTC5wb3J0KCkudmFsdWUoKSwgb3JpZ2luYWxVUkwu
cHJvdG9jb2woKSkpOwogCiAgICAgICAgIFVSTCBuZXdVUkwgPSBvcmlnaW5hbFVSTDsKICAgICAg
ICAgbmV3VVJMLnNldFByb3RvY29sKCJodHRwcyIpOwogICAgICAgICBpZiAob3JpZ2luYWxVUkwu
cG9ydCgpKQotICAgICAgICAgICAgbmV3VVJMLnNldFBvcnQoZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bCgiaHR0cHMiKS52YWx1ZSgpKTsKKyAgICAgICAgICAgIG5ld1VSTC5zZXRQb3J0KFdURjo6ZGVm
YXVsdFBvcnRGb3JQcm90b2NvbCgiaHR0cHMiKS52YWx1ZSgpKTsKICAgICAgICAgcmVxdWVzdC5z
ZXRVUkwobmV3VVJMKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCmluZGV4IGEyOTZm
Zjk3ZmJjZmVjOTBiNWE2MGNmZWMzYzgwYzQwZThlNDE4MzMuLjM0Y2ZhY2E1MDFmZDNjNzJjOTY2
N2U4ZjRiNzBkZTI3N2FhYzVjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC0zNyw3ICsz
Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZv
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDVkMzg2YWZkZmIyOTczZjY5NjAyNzFjZjM2Nzkx
MmExZTM3NzQzZTQuLjM2YzdjNjRkY2I4NDI3MDI0NjMwZjBmNzkxNjMxYjc3OGRkYTk4N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0yMCwxMiArMjAsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTEhhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0aWVzLmgKaW5kZXggM2Y0YjY1YWI3Mjg4ZGQwZjNiMTYxYmE0MWJkNTA1ZGYyZTM3NTUw
Yy4uMzQyMTYzZGI1MDM2MzYyMDQ4M2ViZDAyYjNiY2M5MmZkYzZhMjgxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuaApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIElt
bXV0YWJsZVN0eWxlUHJvcGVydGllczsKLWNsYXNzIFVSTDsKIGNsYXNzIE11dGFibGVTdHlsZVBy
b3BlcnRpZXM7CiBjbGFzcyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBT
dHlsZWRFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNGU0OGMzMDRh
NTc3MTFlM2Y3NzQ4NmYzYzk2NzYyZDY0ZmUxYjEwNi4uMjBjZmNkNzExNTI1YjNmZGMwMzQwOGZj
ZTI1NjNjNDYxNDNiZWUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC01Nyw3
ICs1Nyw2IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwog
Y2xhc3MgRnJhbWVWaWV3OwotY2xhc3MgVVJMOwogY2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xhc3Mg
S2V5ZnJhbWVWYWx1ZTsKIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXQuaAppbmRleCBlOGI1YmZjNTYyODdhNGQ5ODI4ZTg5M2Q4NTc5Y2JhOGI4ZWViY2MyLi5i
YWI0ZTYyNzk0N2I2ZWU4NWQ4NDk5NWMzZmQwMjM0MjE4ZDQzODE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVNoZWV0LmgKQEAgLTMwLDcgKzMwLDYgQEAgY2xhc3MgQ1NTSW1wb3J0UnVsZTsKIGNsYXNzIE1l
ZGlhTGlzdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTdHlsZVNoZWV0OwotY2xhc3MgVVJMOwogCiBj
bGFzcyBTdHlsZVNoZWV0IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVTaGVldD4gewogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCmluZGV4IDJjMmJkMTE3YWUw
YTViMjNkZjI1MDE0YjllNWI5MzEwN2Q5NThhNDUuLmQxMTIwOTg0ZjVmNDQ3YTdkMmZiNDE3ZWZj
ODFjZjk1NmQ5YWEzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
Q29udGVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgK
QEAgLTIyLDEwICsyMiwxMCBAQAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkNhY2hlUG9saWN5LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdI
YXNoLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCmlu
ZGV4IDFlZjc3MTFmZDBjYmRiNTE1MjBmZmRhZDg2MjM3Nzc3Njg5MmQyNjQuLmRiZDIzNzc1MzRh
NGM5ODc1OTlhZTFiY2E0ZjhhMzcyYzVkNWRhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpbmNsdWRlICJD
U1NQYXJzZXJNb2RlLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Myw3
ICs4Myw3IEBAIFdFQkNPUkVfRVhQT1JUIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIHN0cmljdENT
U1BhcnNlckNvbnRleHQoKTsKIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0SGFzaCB7CiAgICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYga2V5KQogICAgIHsKLSAg
ICAgICAgYXV0byBoYXNoID0gVVJMSGFzaDo6aGFzaChrZXkuYmFzZVVSTCk7CisgICAgICAgIGF1
dG8gaGFzaCA9IFdURjo6VVJMSGFzaDo6aGFzaChrZXkuYmFzZVVSTCk7CiAgICAgICAgIGlmICgh
a2V5LmNoYXJzZXQuaXNFbXB0eSgpKQogICAgICAgICAgICAgaGFzaCBePSBTdHJpbmdIYXNoOjpo
YXNoKGtleS5jaGFyc2V0KTsKICAgICAgICAgdW5zaWduZWQgYml0cyA9IGtleS5pc0hUTUxEb2N1
bWVudCAgICAgICAgICAgICAgICAgIDw8IDAKQEAgLTExNSw3ICsxMTUsNyBAQCBzdHJ1Y3QgQ1NT
UGFyc2VyQ29udGV4dEhhc2ggewogCiBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dD4gOiBHZW5lcmljSGFzaFRyYWl0
czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0PiB7Ci0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQmIHNsb3QpIHsgbmV3IChOb3RO
dWxsLCAmc2xvdC5iYXNlVVJMKSBXZWJDb3JlOjpVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWUpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkNT
U1BhcnNlckNvbnRleHQmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdC5iYXNlVVJMKSBVUkwo
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVk
VmFsdWUoY29uc3QgV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCYgdmFsdWUpIHsgcmV0dXJuIHZh
bHVlLmJhc2VVUkwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogICAgIHN0YXRpYyBXZWJD
b3JlOjpDU1NQYXJzZXJDb250ZXh0IGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJDb3JlOjpDU1NQ
YXJzZXJDb250ZXh0KFdlYkNvcmU6OkhUTUxTdGFuZGFyZE1vZGUpOyB9CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgKaW5kZXggODcxZDU5OTFiNTc2YmIz
MGY0NjU4NzgxMTg3M2RhZjZmYTU4YmNhNC4uMjU3NWMwZGYyYjg3YzU5MDVmN2RiYzJjZTZmY2Mz
NTRmYjdhOTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9t
cy5oCkBAIC0zNSw4ICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkw7CiAgICAgCiAvLyBTcGFjZSBjaGFyYWN0ZXJz
IGFzIGRlZmluZWQgYnkgdGhlIENTUyBzcGVjaWZpY2F0aW9uLgogLy8gaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1zeW50YXgvI3doaXRlc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5j
cHAKaW5kZXggNmQzOWRhNDU1ZDQyZjMzODJkYzc0MjVkYWQ4MDA3YmZkNjcwN2I5ZS4uNjBlM2I3
Y2U2OWJmOTgwODQ2NTExN2M4YTY0Mzg2MzliMTc0NTEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAKQEAgLTQzLDEwICs0MywxMCBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0YXRpY1Bhc3Rl
Ym9hcmQuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKICNpbmNsdWRlICJXZWJDb250ZW50UmVh
ZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgiCiAjaW5jbHVk
ZSAibWFya3VwLmgiCisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI1NSw3
ICsyNTUsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RGF0YUZyb21JdGVtTGlzdChjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICBpZiAodHlwZSA9PSAidGV4dC9o
dG1sIikKICAgICAgICAgc2FuaXRpemVkRGF0YSA9IHNhbml0aXplTWFya3VwKGRhdGEpOwogICAg
IGVsc2UgaWYgKHR5cGUgPT0gInRleHQvdXJpLWxpc3QiKSB7Ci0gICAgICAgIGF1dG8gdXJsID0g
VVJMUGFyc2VyKGRhdGEpLnJlc3VsdCgpOworICAgICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIGRh
dGEpOwogICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHNhbml0aXplZERh
dGEgPSB1cmwuc3RyaW5nKCk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L3BsYWluIikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGY1OGViMmU1OWNiMGQ4YjExY2I1YTU2NDJjMDFl
NDFmYmJlYzhkZWYuLjg3MjRlODExNGJiMjE0YjUwMmNlY2E5OGFjNmYwYzI3N2QyOWNlYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzEzNiw3ICszMTM2LDcgQEAgdm9pZCBEb2N1bWVu
dDo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHMKIAogdm9pZCBEb2N1bWVudDo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogewot
ICAgIGNvbnN0IFVSTCYgbmV3VVJMID0gdXJsLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiB1cmw7
CisgICAgY29uc3QgVVJMJiBuZXdVUkwgPSB1cmwuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgp
IDogdXJsOwogICAgIGlmIChuZXdVUkwgPT0gbV91cmwpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MzQyNiw3ICszNDI2LDcgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdihjb25zdCBT
dHJpbmcmIGVxdWl2LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wKICAgICAgICAgICAgICAg
ICBjb21wbGV0ZWRVUkwgPSBtX3VybDsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBjb21wbGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwotICAgICAgICAgICAgaWYg
KCFwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZWRVUkwpKQorICAgICAgICAgICAgaWYgKCFX
VEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlZFVSTCkpCiAgICAgICAgICAgICAgICAg
ZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZVJlZGlyZWN0KCp0aGlzLCBkZWxh
eSwgY29tcGxldGVkVVJMKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFN0
cmluZyBtZXNzYWdlID0gIlJlZnVzZWQgdG8gcmVmcmVzaCAiICsgbV91cmwuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiIHRvIGEgamF2YXNjcmlwdDogVVJMIjsKQEAgLTQ4ODgs
NyArNDg4OCw3IEBAIFVSTCBEb2N1bWVudDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFVSTCYgYmFzZVVSTE92ZXJyaWRlKSBjb25zdAogICAgIC8vIFNlZSBhbHNvIFtDU1Nd
U3R5bGVTaGVldDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJikKICAgICBpZiAodXJsLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm4gVVJMKCk7Ci0gICAgY29uc3QgVVJMJiBiYXNlVVJMID0gKChi
YXNlVVJMT3ZlcnJpZGUuaXNFbXB0eSgpIHx8IGJhc2VVUkxPdmVycmlkZSA9PSBibGFua1VSTCgp
KSAmJiBwYXJlbnREb2N1bWVudCgpKSA/IHBhcmVudERvY3VtZW50KCktPmJhc2VVUkwoKSA6IGJh
c2VVUkxPdmVycmlkZTsKKyAgICBjb25zdCBVUkwmIGJhc2VVUkwgPSAoKGJhc2VVUkxPdmVycmlk
ZS5pc0VtcHR5KCkgfHwgYmFzZVVSTE92ZXJyaWRlID09IFdURjo6YmxhbmtVUkwoKSkgJiYgcGFy
ZW50RG9jdW1lbnQoKSkgPyBwYXJlbnREb2N1bWVudCgpLT5iYXNlVVJMKCkgOiBiYXNlVVJMT3Zl
cnJpZGU7CiAgICAgaWYgKCFtX2RlY29kZXIpCiAgICAgICAgIHJldHVybiBVUkwoYmFzZVVSTCwg
dXJsKTsKICAgICByZXR1cm4gVVJMKGJhc2VVUkwsIHVybCwgbV9kZWNvZGVyLT5lbmNvZGluZ0Zv
clVSTFBhcnNpbmcoKSk7CkBAIC03MTYyLDkgKzcxNjIsOSBAQCBEb2N1bWVudCYgRG9jdW1lbnQ6
OmVuc3VyZVRlbXBsYXRlRG9jdW1lbnQoKQogICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxEb2N1
bWVudCY+KCpkb2N1bWVudCk7CiAKICAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAg
bV90ZW1wbGF0ZURvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgYmxhbmtV
UkwoKSk7CisgICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRl
KG51bGxwdHIsIFdURjo6YmxhbmtVUkwoKSk7CiAgICAgZWxzZQotICAgICAgICBtX3RlbXBsYXRl
RG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIGJsYW5rVVJMKCkpOworICAgICAg
ICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFdURjo6Ymxh
bmtVUkwoKSk7CiAKICAgICBtX3RlbXBsYXRlRG9jdW1lbnQtPnNldENvbnRleHREb2N1bWVudChj
b250ZXh0RG9jdW1lbnQoKSk7CiAgICAgbV90ZW1wbGF0ZURvY3VtZW50LT5zZXRUZW1wbGF0ZURv
Y3VtZW50SG9zdCh0aGlzKTsgLy8gYmFsYW5jZWQgaW4gZHRvci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggYTc5NmI0OTA3YzEyMTU4YzA2YmZhNjI1MzFkOGYxN2VjZTBhYWM0Mi4uMWQ5Y2Y4NDQ4
M2M0ZTFiYjM5YWUyOTczNDY0NzNhMWNlNjMzNWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTY3MSw3ICs2NzEsNyBAQCBjbGFzcyBEb2N1bWVudAogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQogICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYp
OwotICAgIGNvbnN0IFVSTCYgdXJsRm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3VybC5p
c0VtcHR5KCkgPyBibGFua1VSTCgpIDogbV91cmw7IH0KKyAgICBjb25zdCBVUkwmIHVybEZvckJp
bmRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV91cmwuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgp
IDogbV91cmw7IH0KIAogICAgIC8vIFRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGNvbmNlcHRzIHJl
bGF0ZSB0byBvbmUgYW5vdGhlciwgcGxlYXNlIHNlZSB0aGUKICAgICAvLyBjb21tZW50cyBzdXJy
b3VuZGluZyB0aGVpciBkZWNsYXJhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBkOTFm
ZTQzMTVlNjI2ZjE0MGRjNjhiZTU5NTdmNmEwNGQ2ZjQ2MDA3Li44YjM3YjlmZjMyZjZjOGE1OThh
ZjI2ZWVhYTAyODA1NmEzNGM0NTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xNzE5LDcg
KzE3MTksNyBAQCBib29sIEVsZW1lbnQ6OmlzRXZlbnRIYW5kbGVyQXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogCiBib29sIEVsZW1lbnQ6OmlzSmF2YVNjcmlwdFVS
TEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKIHsKLSAgICByZXR1
cm4gaXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKSAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlLnZhbHVlKCkpKTsKKyAgICBy
ZXR1cm4gaXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKSAmJiBXVEY6OnByb3RvY29sSXNKYXZhU2Ny
aXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUudmFsdWUoKSkp
OwogfQogCiB2b2lkIEVsZW1lbnQ6OnN0cmlwU2NyaXB0aW5nQXR0cmlidXRlcyhWZWN0b3I8QXR0
cmlidXRlPiYgYXR0cmlidXRlVmVjdG9yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5s
aW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCA4ZWVjMjZhOWQ1NDRlMTM4NDZkOGE0MDQzOTY1
ZmNkNzA1ZTIwNDcwLi5jMjdmZGU0OGQ2NjBiZDU5ZGM2MmZhNDNiY2FkNjViNGJhYjA1NmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBzdGF0aWMgQ1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250ZXh0Rm9yRWxlbWVu
dChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8qIHNoYWRvd1Jvb3QgPSBlbGVt
ZW50LmNvbnRhaW5pbmdTaGFkb3dSb290KCk7CiAgICAgLy8gVXNlciBhZ2VudCBzaGFkb3cgdHJl
ZXMgY2FuJ3QgY29udGFpbiBkb2N1bWVudC1yZWxhdGl2ZSBVUkxzLiBVc2UgYmxhbmsgVVJMIGFz
IGJhc2UgYWxsb3dpbmcgY3Jvc3MtZG9jdW1lbnQgc2hhcmluZy4KLSAgICBhdXRvJiBiYXNlVVJM
ID0gc2hhZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVz
ZXJBZ2VudCA/IGJsYW5rVVJMKCkgOiBlbGVtZW50LmRvY3VtZW50KCkuYmFzZVVSTCgpOworICAg
IGF1dG8mIGJhc2VVUkwgPSBzaGFkb3dSb290ICYmIHNoYWRvd1Jvb3QtPm1vZGUoKSA9PSBTaGFk
b3dSb290TW9kZTo6VXNlckFnZW50ID8gV1RGOjpibGFua1VSTCgpIDogZWxlbWVudC5kb2N1bWVu
dCgpLmJhc2VVUkwoKTsKIAogICAgIENTU1BhcnNlckNvbnRleHQgcmVzdWx0ID0gQ1NTUGFyc2Vy
Q29udGV4dCB7IGVsZW1lbnQuZG9jdW1lbnQoKSwgYmFzZVVSTCwgZWxlbWVudC5kb2N1bWVudCgp
LmNoYXJhY3RlclNldFdpdGhVVEY4RmFsbGJhY2soKSB9OwogICAgIGlmIChzaGFkb3dSb290ICYm
IHNoYWRvd1Jvb3QtPm1vZGUoKSA9PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IGE1MjAyZDVjNWRhY2VlODI4OTZjNGUwMzcyNzQ3MTU3Zjk4NjE5ODMuLmYz
ZGU3MDFkNmQ0YmE4NDU2MTcyZjY2NDNjNjFmOTUxNGFlMzRhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTEzNDgsNyArMTM0OCw3IEBAIERvY3VtZW50KiBOb2RlOjpvd25lckRvY3VtZW50KCkgY29u
c3QKIGNvbnN0IFVSTCYgTm9kZTo6YmFzZVVSSSgpIGNvbnN0CiB7CiAgICAgYXV0byYgdXJsID0g
ZG9jdW1lbnQoKS5iYXNlVVJMKCk7Ci0gICAgcmV0dXJuIHVybC5pc051bGwoKSA/IGJsYW5rVVJM
KCkgOiB1cmw7CisgICAgcmV0dXJuIHVybC5pc051bGwoKSA/IFdURjo6YmxhbmtVUkwoKSA6IHVy
bDsKIH0KIAogYm9vbCBOb2RlOjppc0VxdWFsTm9kZShOb2RlKiBvdGhlcikgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCmluZGV4IDUyZGE2ZDExYTAxMGZmNDNhMzY5NTU1YWY3Nzk5NDYxYmNhMmE1OGIuLjEyNDM5
ZDc4ZDM1YzRjMjgyMWE3MjU0ZDAzMjE0NTAzNWZiNDdmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMzEs
MTEgKzMxLDExIEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRl
ICJTdHlsZVZhbGlkaXR5LmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCi0jaW5jbHVkZSAiVVJM
SGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Yy5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAogLy8gVGhpcyBuZWVkcyB0byBiZSBo
ZXJlIGJlY2F1c2UgRG9jdW1lbnQuaCBhbHNvIGRlcGVuZHMgb24gaXQuCiAjZGVmaW5lIERVTVBf
Tk9ERV9TVEFUSVNUSUNTIDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCmluZGV4IGE2MWRh
ZDQ1ZTllNDQ0ZmEzMjJlNTk4MjJiNGU4ZTZiMWU4ZjZkYjcuLjYyNDU0ZTc5M2NiMTMzNGY2NGNj
ZjNiZTIwOTVkMzNjYTlhNzJjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaApAQCAt
MzUsNyArMzUsNiBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgTG9hZGFibGVNb2R1bGVTY3JpcHQ7
CiBjbGFzcyBQZW5kaW5nU2NyaXB0OwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKLWNsYXNzIFVS
TDsKIAogY2xhc3MgU2NyaXB0RWxlbWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAzYmRmY2M4MGRiZTZlNmFkYWQ1ODc3ZDFm
ZWUzMDExMjczNzZkNTYzLi40YjIzZjQ3ZjdkZTNkYmUwZGZjY2E0YmFjMjdmMDQ1MjY5ZmY4MDI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTY4
LDcgKzY4LDYgQEAgY2xhc3MgUmVqZWN0ZWRQcm9taXNlVHJhY2tlcjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7Ci1j
bGFzcyBVUkw7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiBjbGFzcyBTZXJ2aWNlV29y
a2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCmluZGV4IDlmMjE1ZmJhMWI1M2Yy
NTYxNWNjMGRhM2NjNzM0MjA1MDEyNWFjYTUuLmMwY2M4ZTIxMTA5ZDYzYmY0YTMyZTliNWE3YzRm
MTk1YTQ4MDcwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKQEAgLTM3LDcg
KzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFz
cyBTZWN1cml0eU9yaWdpblBvbGljeTsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKLWNs
YXNzIFVSTDsKIAogZW51bSBTYW5kYm94RmxhZyB7CiAgICAgLy8gU2VlIGh0dHA6Ly93d3cud2hh
dHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2F0dHItaWZyYW1lLXNhbmRib3gg
Zm9yIGEgbGlzdCBvZiB0aGUgc2FuZGJveCBmbGFncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCA2N2U3ZWVlYzQ5Yzg4N2I2NjFlNDU1NTA3ZmEwYzgyMWY3ZWM2MDlmLi4xNjg2Mjkw
NWZhNjJlMjZiNzAyMmIxZjExM2NmM2Q5OTIwYTRhYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC0xNTEwLDkgKzE1MTAsOSBAQCB2b2lkIEVkaXRvcjo6Y29weVVSTChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYgcGFzdGVib2FyZAogICAg
IHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2FyZFVSTCk7CiB9CiAKLVBhc3RlYm9hcmRXcml0ZXJE
YXRhOjpVUkwgRWRpdG9yOjpwYXN0ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHRpdGxlKQorUGFzdGVib2FyZFdyaXRlckRhdGE6OlVSTERhdGEgRWRpdG9yOjpw
YXN0ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ewotICAgIFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkwgcmVzdWx0OworICAgIFBhc3RlYm9hcmRX
cml0ZXJEYXRhOjpVUkxEYXRhIHJlc3VsdDsKIAogICAgIHJlc3VsdC51cmwgPSB1cmw7CiAgICAg
cmVzdWx0LnRpdGxlID0gdGl0bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA2ZmYyODY2
YjE0OGZkZjRmZjkyMDVjZDNkZmY5NGVkMDJiZWM5NTNiLi5mYzI1NDAzMjI5MjFkZjJmYmU3NjFl
YzY2OWI0MzYxMjgyODYzNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTE3MCw3ICsx
NzAsNyBAQCBjbGFzcyBFZGl0b3IgewogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VVJM
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHZvaWQgY29weVVSTChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJik7Ci0gICAgUGFzdGVib2Fy
ZFdyaXRlckRhdGE6OlVSTCBwYXN0ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgdGl0bGUpOworICAgIFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkxEYXRhIHBhc3RlYm9h
cmRXcml0ZXJVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAjaWYgIVBMQVRG
T1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlJbWFnZShjb25zdCBIaXRUZXN0
UmVzdWx0Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFy
a3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVs
YXRvci5jcHAKaW5kZXggMzUzZGJhNjkyNzQ5YjE4Y2JhOTEzMTU0MDFmYWZhZWM0YmYwMzg1MS4u
ZmQ3ZjhhODE4MTgyNDNjMTYyODZmY2E3OGMwM2Y0MDM2MmQ4NmQ5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiWExp
bmtOYW1lcy5oIgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKQEAgLTIzMiw3ICsyMzIsNyBAQCB2
b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRRdW90ZWRVUkxBdHRyaWJ1dGVWYWx1ZShTdHJp
bmdCdWlsZGVyJiByZXN1bHQsIGNvbgogICAgIGNvbnN0IFN0cmluZyByZXNvbHZlZFVSTFN0cmlu
ZyA9IHJlc29sdmVVUkxJZk5lZWRlZChlbGVtZW50LCBhdHRyaWJ1dGUudmFsdWUoKSk7CiAgICAg
VUNoYXIgcXVvdGVDaGFyID0gJyInOwogICAgIFN0cmluZyBzdHJpcHBlZFVSTFN0cmluZyA9IHJl
c29sdmVkVVJMU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgIGlmIChwcm90b2NvbElzSmF2
YVNjcmlwdChzdHJpcHBlZFVSTFN0cmluZykpIHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2
YVNjcmlwdChzdHJpcHBlZFVSTFN0cmluZykpIHsKICAgICAgICAgLy8gbWluaW1hbCBlc2NhcGlu
ZyBmb3IgamF2YXNjcmlwdCB1cmxzCiAgICAgICAgIGlmIChzdHJpcHBlZFVSTFN0cmluZy5jb250
YWlucygnIicpKSB7CiAgICAgICAgICAgICBpZiAoc3RyaXBwZWRVUkxTdHJpbmcuY29udGFpbnMo
J1wnJykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCmlu
ZGV4IGYyNWZhYWUzNzU3MDYxMWU3ZGYyMjllZThhZjEzM2Y0NWRhYWY3ZjQuLjE1MDRmNmYzNGY3
ZTE1ZmNhMmM3MGI0NDM3NmExNjg4YzRmNTdmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5oCkBAIC00MSw3ICs0MSw2IEBAIGNsYXNzIEVsZW1lbnQ7
CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgUmFuZ2U7Ci1j
bGFzcyBVUkw7CiAKIGVudW0gRGF0YURldGVjdG9yVHlwZXMgewogICAgIERhdGFEZXRlY3RvclR5
cGVOb25lID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRp
dG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
CmluZGV4IGFmNjFmMzZiOGI0OGVkOGEyN2FiMGZkNWViOGIzZWI2MWRhZmU0ZDUuLmVjMzc5NWZl
NjZlMjA1NzUzZjM2ZDc2NmZkMjY3MTM3YmY0MTNmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNTEsMTEgKzUxLDExIEBACiAjaW1wb3J0ICJS
ZW5kZXJTdHlsZS5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiV2ViQ29udGVudFJlYWRl
ci5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIK
ICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEVkaXRvcjo6cmVw
bGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZAogCiBTdHJpbmcgRWRpdG9yOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVy
bCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKKyAgICBy
ZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogfQogCiBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tCmluZGV4IGM1YTg4ZjNhZDVhZjRiZGFjZTEzNjQwODkwZDdjYTA5OWQ0YmYyMzYu
LmQ1N2YxYWU1NjMxNGQyOWMyODMwYzFkMmM0YjcyZTA0N2YwZDM5OWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBA
IC01NCw3ICs1NCw2IEBACiAjaW1wb3J0ICJTZXR0aW5ncy5oIgogI2ltcG9ydCAiU29ja2V0UHJv
dmlkZXIuaCIKICNpbXBvcnQgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgotI2lt
cG9ydCAiVVJMUGFyc2VyLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldl
YkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIldlYkFy
Y2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5oIgpAQCAtNjIsNiArNjEsNyBAQAogI2lt
cG9ydCAibWFya3VwLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmlu
Z1NQSS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMUGFy
c2VyLmg+CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZS5oIgpAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNo
Q29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZy
CiAKICAgICAgICAgYXV0byBuYW1lID0gaW1hZ2UuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OmFsdEF0dHIpOwogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBuYW1lID0gVVJMUGFyc2VyIHsgcmVzb3VyY2VVUkxTdHJpbmcgfS5yZXN1bHQo
KS5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICAgICAgbmFtZSA9IFVSTCh7IH0sIHJlc291
cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAobmFtZS5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gQXRvbWljU3RyaW5nKCJtZWRpYSIpOwogCkBAIC0z
MDYsNyArMzA2LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1l
bnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKHJlc291
cmNlID09IHVybFRvUmVzb3VyY2VNYXAuZW5kKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBhdXRvIG5hbWUgPSBVUkxQYXJzZXIgeyByZXNvdXJjZVVSTFN0cmluZyB9LnJlc3Vs
dCgpLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgIGF1dG8gbmFtZSA9IFVSTCh7IH0sIHJl
c291cmNlVVJMU3RyaW5nKS5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAobmFtZS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gQXRvbWljU3RyaW5nKCJmaWxlIik7CiAKQEAg
LTUxOCw3ICs1MTgsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIFN0cmluZyBzYW5pdGl6ZWRNYXJrdXAgPSBzYW5pdGl6
ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCAqZnJhbWUuZG9jdW1lbnQoKSwgKnJlc3VsdCwgbXNv
TGlzdFF1aXJrc0Zvck1hcmt1cCgpLCBbJl0gKGNvbnN0IFN0cmluZyYgdHlwZSkgewogICAgICAg
ICByZXR1cm4gZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5
cGUpOwogICAgIH0pOwotICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpm
cmFtZS5kb2N1bWVudCgpLCBzYW5pdGl6ZWRNYXJrdXAsIGJsYW5rVVJMKCksIERpc2FsbG93U2Ny
aXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CisgICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZy
b21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIHNhbml0aXplZE1hcmt1cCwgV1RGOjpibGFua1VS
TCgpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOwogCiAgICAgaWYgKCFmcmFn
bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tCmluZGV4IGYxY2Q1M2M5ZTMzOGQxYWFhZjUzMGE5MDgxMThmZmUwODhiMjgyNGYu
LjQ2MjJmODY2YmQyMDYxMTg1ZjMyOTU1ZWU3ZTc5YmUxZDY5MmYyNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTUyLDExICs1MiwxMSBAQAogI2ltcG9ydCAi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2ltcG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAj
aW1wb3J0ICJXZWJDb250ZW50UmVhZGVyLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMu
aCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCAibWFy
a3VwLmgiCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAjaW1wb3J0IDxwYWwvc3lzdGVtL1Nv
dW5kLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0yNTMsNyArMjUzLDcgQEAgU3RyaW5nIEVkaXRvcjo6cGxhaW5UZXh0RnJv
bVBhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCkKICAgICAvLyBGSVhN
RTogSXQncyBub3QgY2xlYXIgdGhpcyBpcyAxMDAlIGNvcnJlY3Qgc2luY2Ugd2Uga25vdyAtW05T
VVJMIFVSTFdpdGhTdHJpbmc6XSBkb2VzIG5vdCBoYW5kbGUKICAgICAvLyBhbGwgdGhlIHNhbWUg
Y2FzZXMgd2UgaGFuZGxlIHdlbGwgaW4gdGhlIFVSTCBjb2RlIGZvciBjcmVhdGluZyBhbiBOU1VS
TC4KICAgICBpZiAodGV4dC5pc1VSTCkKLSAgICAgICAgc3RyaW5nID0gdXNlclZpc2libGVTdHJp
bmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CisgICAgICAgIHN0cmluZyA9IFdURjo6
dXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CiAKICAgICAv
LyBGSVhNRTogV1RGIHNob3VsZCBvZmZlciBhIG5vbi1NYWMtc3BlY2lmaWMgd2F5IHRvIGNvbnZl
cnQgc3RyaW5nIHRvIHByZWNvbXBvc2VkIGZvcm0gc28gd2UgY2FuIGRvIGl0IGZvciBhbGwgcGxh
dGZvcm1zLgogICAgIHJldHVybiBbKE5TU3RyaW5nICopc3RyaW5nIHByZWNvbXBvc2VkU3RyaW5n
V2l0aENhbm9uaWNhbE1hcHBpbmddOwpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgRWRpdG9yOjp3
cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGlt
YWdlRWxlbWVuCiAgICAgcGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3JtYXQgPSBp
bWFnZUluV2ViQXJjaGl2ZUZvcm1hdChpbWFnZUVsZW1lbnQpOwogICAgIHBhc3RlYm9hcmRJbWFn
ZS51cmwudXJsID0gdXJsOwogICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudGl0bGUgPSB0aXRsZTsK
LSAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnVzZXJWaXNpYmxlRm9ybSA9IHVzZXJWaXNpYmxlU3Ry
aW5nKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsKTsKKyAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnVz
ZXJWaXNpYmxlRm9ybSA9IFdURjo6dXNlclZpc2libGVTdHJpbmcocGFzdGVib2FyZEltYWdlLnVy
bC51cmwpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgPSBjYWNoZWRJbWFnZS0+
cmVzb3VyY2VCdWZmZXIoKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSA9
IGNhY2hlZEltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcAppbmRleCBmMGUwZDg2NWM4YmM3ZGNkYjEzNTgxNGMwN2QyNDQ1YTlkYTdjY2Y0Li45
MTRiODBjYjU4M2MzOThkNmE5NThkN2E3NTc1Y2FlMjgwNWY1Mjc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwCkBAIC03MywxMSArNzMsMTEgQEAKICNpbmNsdWRlICJTdHlsZVByb3BlcnRp
ZXMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUeXBlZEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJVUkxQYXJz
ZXIuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVu
aXRzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9p
ZCByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYg
ZnJhZ21lbnQsIFdURjo6RnVuY3QKICAgICAgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJp
YnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHdvbid0IHdvcmsgZm9yIHNyY3NldC4KICAgICAgICAgICAgIGlmIChlbGVtZW50
LmF0dHJpYnV0ZUNvbnRhaW5zVVJMKGF0dHJpYnV0ZSkgJiYgIWF0dHJpYnV0ZS52YWx1ZSgpLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgPSBVUkxQYXJzZXIgeyBhdHRyaWJ1
dGUudmFsdWUoKSB9LnJlc3VsdCgpOworICAgICAgICAgICAgICAgIFVSTCB1cmwoeyB9LCBhdHRy
aWJ1dGUudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJlbW92ZVVSTCh1cmwp
KQogICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzVG9SZW1vdmUuYXBwZW5kKHsgZWxlbWVu
dCwgYXR0cmlidXRlLm5hbWUoKSB9KTsKICAgICAgICAgICAgIH0KQEAgLTk1MSw3ICs5NTEsNyBA
QCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJgogCiAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJr
dXAsIGZha2VCb2R5LnB0cigpLCBwYXJzZXJDb250ZW50UG9saWN5KTsKICAgICByZXN0b3JlQXR0
YWNobWVudEVsZW1lbnRzSW5GcmFnbWVudChmcmFnbWVudCk7Ci0gICAgaWYgKCFiYXNlVVJMLmlz
RW1wdHkoKSAmJiBiYXNlVVJMICE9IGJsYW5rVVJMKCkgJiYgYmFzZVVSTCAhPSBkb2N1bWVudC5i
YXNlVVJMKCkpCisgICAgaWYgKCFiYXNlVVJMLmlzRW1wdHkoKSAmJiBiYXNlVVJMICE9IFdURjo6
YmxhbmtVUkwoKSAmJiBiYXNlVVJMICE9IGRvY3VtZW50LmJhc2VVUkwoKSkKICAgICAgICAgY29t
cGxldGVVUkxzKGZyYWdtZW50LnB0cigpLCBiYXNlVVJMKTsKIAogICAgIHJldHVybiBmcmFnbWVu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCmluZGV4IGI1NTBhOGY2N2YzOWRmYTNhYWU4OTA1ZDhh
MGQyZjI1Y2Y5MDRhODcuLmIwNDhjYTgyMzMyNzUwYmZhYmU4NGFjZjE5ZDRiNTFjZDBkMmIyOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaApAQCAtNDEsNyArNDEsNiBAQCBjbGFzcyBEb2N1bWVu
dEZyYWdtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEVsZW1l
bnQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNzIFF1YWxpZmll
ZE5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5kZXgg
NjNiMWUwZTU3NDExZDA2MzNjNDE5OGY0YWUwOTM1M2EwMzU1MTI3ZS4uNzNhMzY1MjI4Nzk5YzE2
YjlhOTg4ZDlhMTE4OWUwY2Y5MzgwZmU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5
bmNGaWxlU3RyZWFtLmNwcApAQCAtMzQsNyArMzQsNiBAQAogCiAjaW5jbHVkZSAiRmlsZVN0cmVh
bS5oIgogI2luY2x1ZGUgIkZpbGVTdHJlYW1DbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC00Miw2ICs0MSw3IEBACiAjaW5jbHVkZSA8d3RmL01lc3Nh
Z2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
aCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXggNGYwZTdi
Mjc3NzE3YTE5Y2MyNzBkZjJlOTYzYWJlZWY5M2YzZjM1My4uNjJjYWZmZTJkOThhZDFkNWQxMGY0
ZWQ2ODgxN2RhOTA0OTRlYTE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0
cmVhbS5oCkBAIC0zOCw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmls
ZVN0cmVhbUNsaWVudDsKIGNsYXNzIEZpbGVTdHJlYW07Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIEFzeW5jRmlsZVN0cmVhbSB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5o
CmluZGV4IDIwMTM5YzRjMTJhMTQ5M2UwNTM4ZGM5YWI5NTE2M2IxNDk4Y2Y5NjIuLjkwZDQ2NTY5
OTczMDEyNThlZTg2ODI4ZTlhYjYwNzhhYzNmODlhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBA
IC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJCbG9iUHJvcGVydHlCYWcuaCIKICNpbmNsdWRl
ICJTY3JpcHRXcmFwcGFibGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAppbmRleCBjNmRmZWU2NTUwMTUzZTJiZjQ4OGEy
N2NjNWFlOGUyMGU5OGUwNDYxLi4xNDZjMGRiMDQ5ZDcxNTQ4ZDBmYzJkODg5ZTQ2YmI2ZjU1NjQ5
YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAog
I2luY2x1ZGUgIkJsb2JVUkwuaCIKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2JVUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5o
CmluZGV4IDM1OWVhYWY3ZjJhMjY2N2I4YjIyZjdhMzUwMzJhMTU3MWQ2NzIwYzQuLjNkMGFlMTFj
MTAzOWUzNDg0ZTBlZGY3MDA5Nzc3YmYyZWJmOWJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYlVSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVS
TC5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlLmgKaW5kZXggNTc1ZjBlNzZkMDlhOWQzZTU3ZjI1OGFlY2JlZjMxZjM2MGE0OGRmMC4u
ZGEyZThiY2EzNTJjYTNmYzdlYzdjYjQ1NjJkNzliYmI3MjhiZjA1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlLmgKQEAgLTMzLDggKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBV
Ukw7Ci0KIGNsYXNzIEZpbGUgZmluYWwgOiBwdWJsaWMgQmxvYiB7CiBwdWJsaWM6CiAgICAgc3Ry
dWN0IFByb3BlcnR5QmFnIDogQmxvYlByb3BlcnR5QmFnIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggZjNkYzZjNDc4Yzk4MDA0YTdiMTM0MGMzMjllZDY4
ODA4YjcyMThmMC4uMWY3Nzc4ZTg4OWUzOTNkN2ZiOTY5NDQzY2U4ZWJlMjEyNzRkNGEwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKQEAgLTMyLDcgKzMyLDcg
QEAKIAogI2luY2x1ZGUgIkJsb2JSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkZpbGVFcnJv
ci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJU
ZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmgKaW5kZXggNDI0NmQ3ZWVhMGIwZTczYjUwOWZiYzgwZDI0MWUxY2Zm
OTYyMDljMi4uYTljNzlmZTIyOTJmODk1YjMxYzYwZjc1NjdmZmQwNDkzZmVkYzgzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKQEAgLTM2
LDcgKzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYlBhcnQ7Ci1jbGFz
cyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKaW5kZXggZTBiZTU3MWEyOTA2
ODMyNWJhMTdlY2YzZWJkZmViODZiNmJkODE5OC4uMjk4Zjc4MjgzMWE2OTY5ODYzOGZjNTkyZDJm
NjMwNTQ2M2EzMDQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRG
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaApAQCAtMjYs
NyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0hpc3RvcnlJdGVtLmgKaW5kZXggZTcyYjU4OTM5NDk4MWVjZWM0MTA3ZjZkNjJiNzdjOWQ3NDM4
MzUxZC4uMjBhMzk3MzNmODUzM2E5MDM0ZTY1NmJhN2Y3YWIwYTA1NDgyZjRjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaApAQCAtNTQsNyArNTQsNiBAQCBjbGFzcyBGb3JtRGF0
YTsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7Ci1jbGFzcyBVUkw7CiBlbnVtIGNsYXNzIFBydW5pbmdSZWFzb247CiAKIFdFQkNPUkVfRVhQ
T1JUIGV4dGVybiB2b2lkICgqbm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKShIaXN0b3J5SXRlbSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01VUkwuY3BwCmluZGV4IGE3N2JjZDcwNzIzZjNjZjljYTExNjgyZTQ0NmVk
ZmU4N2Q4MTM4ZjguLjBhMDhiNTk0Njg2NTczMmYyOGRhMzBmYjdmNjNjYTRkMzE0ZWE5MTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVVSTC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgRXhjZXB0aW9uT3I8UmVmPERP
TVVSTD4+IERPTVVSTDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBET01VUkwmIGJh
c2UpCiAKIEV4Y2VwdGlvbk9yPFJlZjxET01VUkw+PiBET01VUkw6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIHVybCkKIHsKLSAgICBVUkwgYmFzZVVSTCB7IGJsYW5rVVJMKCkgfTsKKyAgICBVUkwgYmFz
ZVVSTCB7IFdURjo6YmxhbmtVUkwoKSB9OwogICAgIFVSTCBjb21wbGV0ZVVSTCB7IGJhc2VVUkws
IHVybCB9OwogICAgIGlmICghY29tcGxldGVVUkwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVVSTC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAppbmRleCA1OTAyNWMyZmI5
NmYwMjk5YWQ5MTdlNjE3YjI5MTFjMzFhYjkxZDM0Li5kMzEzZDdhNDQ0ZDhlYTU1MzRmMDAzZjQ0
NTBmZGRhMGQ0NjM1MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVVJMVXRpbHMuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNw
cAppbmRleCA5Yjk5YTM0NzMwOTcyZDRkZDc5OWMwODFhMGY5OGY2Mzc3YWI1YWQwLi4zMDQ4YjQ5
MGZhNTNmM2ZkNDE1MWUwMjEwNDM2YzY0ZmE5NDcxNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMzcsOCArMzcsOCBAQAogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN1
YmZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNzEsNyArNzEsNyBAQCBib29sIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjppc1VSTEFsbG93
ZWQoY29uc3QgVVJMJiBjb21wbGV0ZVVSTCkgY29uc3QKICAgICBpZiAoY29tcGxldGVVUkwuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChwcm90b2NvbElzSmF2YVNj
cmlwdChjb21wbGV0ZVVSTCkpIHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChj
b21wbGV0ZVVSTCkpIHsKICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBjb250ZW50RG9jID0gdGhp
cy0+Y29udGVudERvY3VtZW50KCk7CiAgICAgICAgIGlmIChjb250ZW50RG9jICYmICFTY3JpcHRD
b250cm9sbGVyOjpjYW5BY2Nlc3NGcm9tQ3VycmVudE9yaWdpbihjb250ZW50RG9jLT5mcmFtZSgp
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBIVE1M
RnJhbWVFbGVtZW50QmFzZTo6b3BlblVSTChMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgTG9ja0Jh
Y2tGb3J3YXJkTGlzdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9VUkwuaXNFbXB0eSgp
KQotICAgICAgICBtX1VSTCA9IGJsYW5rVVJMKCkuc3RyaW5nKCk7CisgICAgICAgIG1fVVJMID0g
V1RGOjpibGFua1VSTCgpLnN0cmluZygpOwogCiAgICAgUmVmUHRyPEZyYW1lPiBwYXJlbnRGcmFt
ZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIXBhcmVudEZyYW1lKQpAQCAtMTc5LDcg
KzE3OSw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldExvY2F0aW9uKGNvbnN0IFN0
cmluZyYgc3RyKQogCiB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYgbmV3TG9jYXRpb24pCiB7Ci0gICAgaWYg
KHByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhu
ZXdMb2NhdGlvbikpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKG5ld0xvY2F0aW9uKSkpIHsKICAgICAgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBjb250ZW50
RG9jdW1lbnQoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCAyMzJiM2RjYjMwMzE4ODlkYzgyNmY5ODdkMmJkNmZi
MDg3NThlOWI1Li5iMWNjZDc1NTc1MDBmYTFhYjc2MGUxMjQwMDIzYTNhOWVmYTZkMzdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtNDQsNyArNDQsNiBAQCBjbGFz
cyBJY29uOwogY2xhc3MgSW5wdXRUeXBlOwogY2xhc3MgTGlzdEF0dHJpYnV0ZVRhcmdldE9ic2Vy
dmVyOwogY2xhc3MgUmFkaW9CdXR0b25Hcm91cHM7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBEYXRl
VGltZUNob29zZXJQYXJhbWV0ZXJzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
aAppbmRleCA1MTBmNGNmYjYzNmQ5ZGExMWUyNThmOWVlM2E0MmZlZDZlZmQzNmNkLi42ODI4Zjkz
NDNiNTcyNDA5NWRiNjAyMTc0MjY4NzY1NDA3MGNkZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBET01Ub2tlbkxpc3Q7CiBjbGFzcyBIVE1MTGlua0VsZW1lbnQ7Ci1jbGFzcyBVUkw7CiBz
dHJ1Y3QgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQ7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNs
YXNzIEV2ZW50U2VuZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggOWMwOWIwOTQ4Mzk5NTUxMTU4M2RiNTEyNWQzZWM3YzczNGNkYzYwYi4uNzdkMGNiZmI3
ZDQ4MDRiNzIxYjIzZDQ0M2UwN2IwNzZmYzQ2OWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xNjgsOCArMTY4LDggQEAKIAogbmFtZXNwYWNlIFdURiB7
CiB0ZW1wbGF0ZSA8Pgotc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlVSTD4gewotICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCitzdHJ1Y3QgTG9n
QXJndW1lbnQ8VVJMPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBVUkwmIHVy
bCkKICAgICB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcgPSA1MTI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCAzMjEzYzQ0YWRiZjI4ZjI3MGI1
MjYwZGNhMTMwNTVkZThhYTQzZDliLi45ZTVjMjc3NzdkNjkzZTRmNjRiZWYxYjczMTI1ODM5NWM0
YWQyMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6Omlz
SW1hZ2VUeXBlKCkKIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6YWxsb3dlZFRvTG9hZEZy
YW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIFVSTCBjb21wbGV0ZVVSTCA9IGRvY3Vt
ZW50KCkuY29tcGxldGVVUkwodXJsKTsKLSAgICBpZiAoY29udGVudEZyYW1lKCkgJiYgcHJvdG9j
b2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpICYmICFkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2lu
KCkuY2FuQWNjZXNzKGNvbnRlbnREb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKKyAgICBp
ZiAoY29udGVudEZyYW1lKCkgJiYgV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZVVS
TCkgJiYgIWRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5jYW5BY2Nlc3MoY29udGVudERvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIGRvY3VtZW50KCkuZnJhbWUoKS0+aXNVUkxBbGxvd2VkKGNvbXBsZXRlVVJMKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VCaXRtYXAuaAppbmRleCAyN2E0ODlkNGY2NTdiNmU2OWRjNGU5OWY5ZDRk
YzliNjlkN2JjYzc3Li4xMjAwYjg3ODE2NDZmNjFhNmY3MGM0NmI5OWJjYzhlZmNmNjVhZDFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIEludFJl
Y3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgUGVuZGluZ0ltYWdlQml0bWFwOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFVSTDsKIHN0cnVjdCBJbWFnZUJpdG1hcE9wdGlv
bnM7CiAKIGNsYXNzIEltYWdlQml0bWFwIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGlj
IFJlZkNvdW50ZWQ8SW1hZ2VCaXRtYXA+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZy
YWdtZW50VVJJUGFyc2VyLmgKaW5kZXggN2M3NzM2YzM0ZWJjZjY0ZDk0NTYwM2RjZDg2MzkzOWU4
ZGIzN2U0Yy4uMTBhMmEwZDBmNTIyNGIwNTBhZDVjN2Y0ZDFkNjU2YWZlZTgzYzdlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmgKQEAgLTI3LDE0ICsy
NywxMiBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiBjbGFzcyBN
ZWRpYUZyYWdtZW50VVJJUGFyc2VyIGZpbmFsIHsKIHB1YmxpYzoKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCmluZGV4IGNmMTg2YzBiYTQwMGUyYTNjMjMwNGNj
NzlmZmFkYmE4YWYzYWEzNjEuLjczYjU0NzM1NzhlM2IwYjMxZWFmOTVkYTQwYzIwYWMwOTljMDcz
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcApAQCAtMjYsNyAr
MjYsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHVibGljVVJMTWFuYWdl
ci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJV
UkxSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaAppbmRleCBlMzI2NTQ1ZGNjYjQ5YmZhNmM1YWZm
OTIzYTJjNWUwYzBmYTc3NWE0Li5lNjlkZTRlZDhjODNiYjhhOGRjNGQzNjY4NjIyY2QzZmRkNTM3
ZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaApAQCAtMzMsNyArMzMs
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFVSTFJlZ2lzdHJ5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwCmluZGV4IDZjYTBhYzFhMjAxM2NmNmQ1
ZDhkYzVjMGVhMDNiMjExNzkyZjE5NWUuLjYzYmIzY2MyNjAxYTA0M2QxNDljNDVhMjllYzE4ZGEx
NDBiNWFkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBl
TmFtZXMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVVJMUmVnaXN0cnkuaAppbmRleCBiZDc3MmNlNWYxN2E2Yjg3ZGMyZjQ2MjViNzFiZTAxMTAz
YzM3NzQzLi44MjIzYmJkMDc1OTBkZGFjY2U5ZmQxNjA0ZTNhYzBiYzAxNWY2NGFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9VUkxSZWdpc3RyeS5oCkBAIC0zNCw3ICszNCw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdp
c3RyeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCmluZGV4IDMwZTg1
OTI0YTc4NTIwZDY1OTIwOTFhZDJkMzNjMDQyMGNmZWRkNDMuLjRlN2ZiYWVmZGYwYTQxNmNjNjU0
YWE3M2Q1OWI3YmU4MGI0MWQwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
U2VhcmNoUGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFt
cy5jcHAKQEAgLTI2LDEzICsyNiwxMyBAQAogI2luY2x1ZGUgIlVSTFNlYXJjaFBhcmFtcy5oIgog
CiAjaW5jbHVkZSAiRE9NVVJMLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCisjaW5jbHVkZSA8
d3RmL1VSTFBhcnNlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFVSTFNlYXJjaFBhcmFt
czo6VVJMU2VhcmNoUGFyYW1zKGNvbnN0IFN0cmluZyYgaW5pdCwgRE9NVVJMKiBhc3NvY2lhdGVk
VVJMKQogICAgIDogbV9hc3NvY2lhdGVkVVJMKGFzc29jaWF0ZWRVUkwpCi0gICAgLCBtX3BhaXJz
KGluaXQuc3RhcnRzV2l0aCgnPycpID8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0
cmluZ1ZpZXcoaW5pdCkuc3Vic3RyaW5nKDEpKSA6IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVk
Rm9ybShpbml0KSkKKyAgICAsIG1fcGFpcnMoaW5pdC5zdGFydHNXaXRoKCc/JykgPyBXVEY6OlVS
TFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KGluaXQpLnN1YnN0cmluZygx
KSkgOiBXVEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShpbml0KSkKIHsKIH0KIApA
QCAtMTMzLDIwICsxMzMsMjAgQEAgdm9pZCBVUkxTZWFyY2hQYXJhbXM6OnJlbW92ZShjb25zdCBT
dHJpbmcmIG5hbWUpCiAKIFN0cmluZyBVUkxTZWFyY2hQYXJhbXM6OnRvU3RyaW5nKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gVVJMUGFyc2VyOjpzZXJpYWxpemUobV9wYWlycyk7CisgICAgcmV0dXJu
IFdURjo6VVJMUGFyc2VyOjpzZXJpYWxpemUobV9wYWlycyk7CiB9CiAKIHZvaWQgVVJMU2VhcmNo
UGFyYW1zOjp1cGRhdGVVUkwoKQogewogICAgIGlmIChtX2Fzc29jaWF0ZWRVUkwpCi0gICAgICAg
IG1fYXNzb2NpYXRlZFVSTC0+c2V0UXVlcnkoVVJMUGFyc2VyOjpzZXJpYWxpemUobV9wYWlycykp
OworICAgICAgICBtX2Fzc29jaWF0ZWRVUkwtPnNldFF1ZXJ5KFdURjo6VVJMUGFyc2VyOjpzZXJp
YWxpemUobV9wYWlycykpOwogfQogCiB2b2lkIFVSTFNlYXJjaFBhcmFtczo6dXBkYXRlRnJvbUFz
c29jaWF0ZWRVUkwoKQogewogICAgIEFTU0VSVChtX2Fzc29jaWF0ZWRVUkwpOwogICAgIFN0cmlu
ZyBzZWFyY2ggPSBtX2Fzc29jaWF0ZWRVUkwtPnNlYXJjaCgpOwotICAgIG1fcGFpcnMgPSBzZWFy
Y2guc3RhcnRzV2l0aCgnPycpID8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmlu
Z1ZpZXcoc2VhcmNoKS5zdWJzdHJpbmcoMSkpIDogVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRG
b3JtKHNlYXJjaCk7CisgICAgbV9wYWlycyA9IHNlYXJjaC5zdGFydHNXaXRoKCc/JykgPyBXVEY6
OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KHNlYXJjaCkuc3Vic3Ry
aW5nKDEpKSA6IFdURjo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHNlYXJjaCk7CiB9
CiAKIHN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBVUkxT
ZWFyY2hQYXJhbXM6Okl0ZXJhdG9yOjpuZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVVJMVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAppbmRleCBh
MDdjMDgxNGYxMWUxNzExODQ1MDNlNmFhNmFhYWQ2YzA0N2Q0NzVhLi42NTZhYmZiZGEwYmRiY2Uz
OTNiODhjYzUyMzQ0YjljZDYxNmU3NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCkBAIC0xNzQs
NyArMTc0LDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVl
KQogICAgICAgICAgICAgLy8gcmVxdWlyZXMgc2V0dGluZyB0aGUgcG9ydCB0byAiMCIgaWYgaXQg
aXMgc2V0IHRvIGVtcHR5IHN0cmluZy4KICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2
YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yICsgMSkgKyAnMCcpOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJv
dG9jb2woKSkpCisgICAgICAgICAgICBpZiAoV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
cG9ydCwgdXJsLnByb3RvY29sKCkpKQogICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9y
dCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBwb3J0RW5k
KSk7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBVUkxVdGlsczxUPjo6c2V0UG9ydChjb25zdCBT
dHJpbmcmIHZhbHVlKQogICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAiIGlm
IGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCiAgICAgLy8gRklYTUU6IGh0dHA6Ly91cmwuc3Bl
Yy53aGF0d2cub3JnLyBkb2Vzbid0IGFwcGVhciB0byByZXF1aXJlIHRoaXM7IHRlc3Qgd2hhdCBi
cm93c2VycyBkbwogICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1ZS50b1VJbnQoKTsKLSAgICBpZiAo
aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKKyAgICBpZiAo
V1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQogICAg
ICAgICB1cmwucmVtb3ZlUG9ydCgpOwogICAgIGVsc2UKICAgICAgICAgdXJsLnNldFBvcnQocG9y
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuY3BwCmluZGV4IGMzNDYxMDIxNWU1NjlmZTdhYTExOWNhNTIxNmE3ZDgzZTE1NTYy
MjkuLmQ3NzIzZWRkZWRmYWM4NWFlZDk4M2M1YTU0MWQ0YzAwMjJkMzVmOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZUJp
dG1hcC5oIgogI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgotI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggODFjYjU1ZDc3ZTMxODA1NjQ0NzA3Nzc3YTFlMjk5
NTZmNDQzZjY1OC4uOThlYzQ2MmVmZWIzOTViOWE3ZTljMzk5NzAxOGVhYWQ1ZWY3ZmM1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhU
TUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSW1hZ2VCaXRt
YXA7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXZWJHTE9iamVjdDsKIAogY2xhc3MgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA2NzRkZWJjNjk4ZGI5Yjcw
MDJlYjQwNTIzMzViOWU2ZGI4MWI2NGEzLi40MjMwOTI2OGU5YmRkMDk1YWM5YmYxNmFkOWY3MzMy
YTM3MWNkNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcApAQCAtMjcsOSArMjcsOSBAQAogCiAjaW5jbHVkZSAiRGVjaW1hbC5oIgogI2lu
Y2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxsaW1p
dHM+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL2R0b2EuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCA3MTkyOGM3Y2VhOGUxNGYwNDRkZTQ5
ZjlkMDEzODQ3MzBhYWEyY2ViLi42MTA0YmUzOTJiY2UzMWM2M2NhMWVmMjRhZTEyZWViMTMxOTU1
YzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtMjQ0
LDcgKzI0NCw3IEBAIHN0YXRpYyBib29sIGlzU2VtaWNvbG9uU2VwYXJhdGVkQXR0cmlidXRlKGNv
bnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlJiBhdHRyaWJ1dGUpCiBzdGF0aWMgYm9vbCBzZW1pY29s
b25TZXBhcmF0ZWRWYWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTChTdHJpbmdWaWV3IHNlbWljb2xv
blNlcGFyYXRlZFZhbHVlKQogewogICAgIGZvciAoYXV0byB2YWx1ZSA6IHNlbWljb2xvblNlcGFy
YXRlZFZhbHVlLnNwbGl0KCc7JykpIHsKLSAgICAgICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0
KHZhbHVlKSkKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodmFsdWUpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0
Niw5ICs0NDYsOSBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKGNvbnN0IEZp
bHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBm
YWxzZTsKICAgICBpZiAobV93YXNTY3JpcHRUYWdGb3VuZEluUmVxdWVzdCkgewotICAgICAgICBk
aWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgc3JjQXR0
ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRl
KTsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJl
cXVlc3QsIFNWR05hbWVzOjpocmVmQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlv
blN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBibGFu
a1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAg
ICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwg
c3JjQXR0ciwgV1RGOjpibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xp
a2VBdHRyaWJ1dGUpOworICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlm
SW5qZWN0ZWQocmVxdWVzdCwgU1ZHTmFtZXM6OmhyZWZBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3Ry
aW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CisgICAgICAgIGRpZEJs
b2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBYTGlua05hbWVz
OjpocmVmQXR0ciwgV1RGOjpibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNy
Y0xpa2VBdHRyaWJ1dGUpOwogICAgIH0KIAogICAgIHJldHVybiBkaWRCbG9ja1NjcmlwdDsKQEAg
LTQ2MSw3ICs0NjEsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKGNvbnN0
IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQg
PSBmYWxzZTsKICAgICBpZiAoaXNDb250YWluZWRJblJlcXVlc3QoY2Fub25pY2FsaXplZFNuaXBw
ZXRGb3JUYWdOYW1lKHJlcXVlc3QpKSkgewotICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFz
ZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZGF0YUF0dHIsIGJsYW5rVVJMKCkuc3RyaW5n
KCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CisgICAgICAgIGRpZEJsb2Nr
U2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBkYXRhQXR0ciwgV1RG
OjpibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUp
OwogICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVx
dWVzdCwgdHlwZUF0dHIpOwogICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0
ZUlmSW5qZWN0ZWQocmVxdWVzdCwgY2xhc3NpZEF0dHIpOwogICAgIH0KQEAgLTQ4MSw3ICs0ODEs
NyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5S
ZXF1ZXN0JiByZXF1ZXN0KQogICAgIGlmICghSFRNTFBhcmFtRWxlbWVudDo6aXNVUkxQYXJhbWV0
ZXIoU3RyaW5nKG5hbWVBdHRyaWJ1dGUudmFsdWUpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCB2YWx1ZUF0dHIs
IGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7
CisgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCB2YWx1ZUF0dHIs
IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmli
dXRlKTsKIH0KIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0IEZpbHRl
clRva2VuUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTQ5Miw3ICs0OTIsNyBAQCBib29sIFhTU0F1ZGl0
b3I6OmZpbHRlckVtYmVkVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQog
ICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKICAgICBpZiAoaXNDb250YWluZWRJblJl
cXVlc3QoY2Fub25pY2FsaXplZFNuaXBwZXRGb3JUYWdOYW1lKHJlcXVlc3QpKSkgewogICAgICAg
ICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgY29k
ZUF0dHIsIFN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOwotICAg
ICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwg
c3JjQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0
cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVj
dGVkKHJlcXVlc3QsIHNyY0F0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlv
blN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHR5cGVBdHRyKTsKICAgICB9CiAgICAgcmV0
dXJuIGRpZEJsb2NrU2NyaXB0OwpAQCAtNTQ0LDcgKzU0NCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6
ZmlsdGVyRm9ybVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBB
U1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAg
QVNTRVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwgZm9ybVRhZykpOwogCi0gICAgcmV0dXJuIGVy
YXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBhY3Rpb25BdHRyLCBibGFua1VSTCgpLnN0
cmluZygpKTsKKyAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGFj
dGlvbkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRv
cjo6ZmlsdGVySW5wdXRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBA
IC01NTIsNyArNTUyLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJJbnB1dFRva2VuKGNvbnN0
IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVz
dC50b2tlbiwgaW5wdXRUYWcpKTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0
ZWQocmVxdWVzdCwgZm9ybWFjdGlvbkF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRp
b25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CisgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJ
bmplY3RlZChyZXF1ZXN0LCBmb3JtYWN0aW9uQXR0ciwgV1RGOjpibGFua1VSTCgpLnN0cmluZygp
LCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOwogfQogCiBib29sIFhTU0F1ZGl0
b3I6OmZpbHRlckJ1dHRvblRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkK
QEAgLTU2MCw3ICs1NjAsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckJ1dHRvblRva2VuKGNv
bnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBBU1NFUlQocmVxdWVzdC50b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVx
dWVzdC50b2tlbiwgYnV0dG9uVGFnKSk7CiAKLSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZklu
amVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVu
Y2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0
ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZm9ybWFjdGlvbkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJp
bmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKIH0KIAogYm9vbCBYU1NB
dWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRlclRv
a2VuUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTU3Myw3ICs1NzMsNyBAQCBib29sIFhTU0F1ZGl0b3I6
OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlc0lmSW5qZWN0ZWQoY29uc3QgRmlsdGVyVG9rZW5SZXF1
ZXN0JiByZQogICAgICAgICBib29sIGlzSW5saW5lRXZlbnRIYW5kbGVyID0gaXNOYW1lT2ZJbmxp
bmVFdmVudEhhbmRsZXIoYXR0cmlidXRlLm5hbWUpOwogICAgICAgICAvLyBGSVhNRTogSXQgd291
bGQgYmUgYmV0dGVyIGlmIHdlIGRpZG4ndCBjcmVhdGUgYSBuZXcgU3RyaW5nIGZvciBldmVyeSBh
dHRyaWJ1dGUgaW4gdGhlIGRvY3VtZW50LgogICAgICAgICBTdHJpbmcgc3RyaXBwZWRWYWx1ZSA9
IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhTdHJpbmcoYXR0cmlidXRlLnZhbHVl
KSk7Ci0gICAgICAgIGJvb2wgdmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwgPSAoIWlzSW5saW5l
RXZlbnRIYW5kbGVyICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwcGVkVmFsdWUpKSB8fCAo
aXNTZW1pY29sb25TZXBhcmF0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlKSAmJiBzZW1pY29sb25TZXBh
cmF0ZWRWYWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTChzdHJpcHBlZFZhbHVlKSk7CisgICAgICAg
IGJvb2wgdmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwgPSAoIWlzSW5saW5lRXZlbnRIYW5kbGVy
ICYmIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBwZWRWYWx1ZSkpIHx8IChpc1NlbWlj
b2xvblNlcGFyYXRlZEF0dHJpYnV0ZShhdHRyaWJ1dGUpICYmIHNlbWljb2xvblNlcGFyYXRlZFZh
bHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMKHN0cmlwcGVkVmFsdWUpKTsKICAgICAgICAgaWYgKCFp
c0lubGluZUV2ZW50SGFuZGxlciAmJiAhdmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFpc0NvbnRhaW5lZEluUmVxdWVzdChjYW5v
bmljYWxpemUoc25pcHBldEZyb21BdHRyaWJ1dGUocmVxdWVzdCwgYXR0cmlidXRlKSwgVHJ1bmNh
dGlvblN0eWxlOjpTY3JpcHRMaWtlQXR0cmlidXRlKSkpCkBAIC03MjcsNyArNzI3LDcgQEAgYm9v
bCBYU1NBdWRpdG9yOjppc0xpa2VseVNhZmVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCkKICAg
ICAvLyBHaXZlIGVtcHR5IFVSTHMgYW5kIGFib3V0OmJsYW5rIGEgcGFzcy4gTWFraW5nIGEgcmVz
b3VyY2VVUkwgZnJvbSBhbgogICAgIC8vIGVtcHR5IHN0cmluZyBiZWxvdyB3aWxsIGxpa2VseSBs
YXRlciBmYWlsIHRoZSAibm8gcXVlcnkgYXJncyB0ZXN0IiBhcwogICAgIC8vIGl0IGluaGVyaXRz
IHRoZSBkb2N1bWVudCdzIHF1ZXJ5IGFyZ3MuCi0gICAgaWYgKHVybC5pc0VtcHR5KCkgfHwgdXJs
ID09IGJsYW5rVVJMKCkuc3RyaW5nKCkpCisgICAgaWYgKHVybC5pc0VtcHR5KCkgfHwgdXJsID09
IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAv
LyBJZiB0aGUgcmVzb3VyY2UgaXMgbG9hZGVkIGZyb20gdGhlIHNhbWUgaG9zdCBhcyB0aGUgZW5j
bG9zaW5nIHBhZ2UsIGl0J3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaApp
bmRleCBkYzgyYWRkN2M3ZjViZGRhM2NhYjUzNGRmYWExMDliZmQxOTBiYzI3Li4xMmVjOThjMDky
ZmY2NTA0Y2RlNTNmZmY5MzY4MWUwMjUxMTAwNTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvWFNTQXVkaXRvci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJIVE1MVG9rZW4u
aCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTdWZmaXhUcmVlLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29k
aW5nLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0
b3JEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVn
YXRlLmgKaW5kZXggNjdhMzJlZDkzMGQ3ZDlkZDRkYWM0MDg5MjIwYmRmM2YyYWQ3NmU4Ny4uNjA1
MTU5YjJmYWZhNGNmODcxYWU2NTZmMTBhZjQzZjAwMWU5M2ZhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmgKQEAgLTI2LDcgKzI2LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAKaW5kZXggYzczNGRhMmJlYWUxMzg0NTI3ZDc3MmFlOWJlMThiMzdmNTQ0NWM4Yi4uMjZh
YjZkZjk1MjRhNGU2OTgxNDg4MTUyNWVkYzg3ZjY2MDg2Yjg1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTMxMSw3ICsz
MTEsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6a2lsbFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0LCBib29sIHNob3VsZFByZXBlbmRUb0tpbAogCiB2b2lkIEluc3BlY3RvckZyb250ZW5k
SG9zdDo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIGlmIChXZWJDb3Jl
Ojpwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZh
U2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2NsaWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBkZGUyMTIyY2NlZDAwYThlMzIwY2Y0NDA5OGZhZDA2NjU3NjQ3OTcwLi44YzM3MmZhYWY3
ZWQ4ZWVkMzk4YjVhNmNkN2U1NGZhOGY2ZWVjNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC04OCw3ICs4OCw2IEBA
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNs
YXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBUaW1lckJhc2U7Ci1jbGFzcyBVUkw7CiAjaWYgRU5BQkxF
KFdFQkdMKQogY2xhc3MgV2ViR0xQcm9ncmFtOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5k
ZXggMzMzMTA3ODFjYWFiNWI1MTUyZDYxZmM1NjY2OGE0OWNjMzUyNDRjNi4uN2M2NzQ0NjEyMDU3
MDc5OGNhZmQ3ODAxNWZhZDk5ZDYwODczMTQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNjYs
NyArNjYsNyBAQAogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV2ViU29j
a2V0LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tl
dEZyYW1lLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA2NGQwZTA0NTgwMjU5NWZmMzA1YzlhMzZjMTEy
MmQxNjY0Mzc4Yzk0Li5iNjg1OTBmMWI4NDA4ODI4NGE4YTU1ZmM3NWQwZTU1OWQ0OTA5YmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKQEAgLTU4LDcgKzU4LDYgQEAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4
dFJlc291cmNlRGVjb2RlcjsKLWNsYXNzIFVSTDsKIGNsYXNzIFdlYlNvY2tldDsKIAogc3RydWN0
IFdlYlNvY2tldEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggNjcwOWY1MmJlMDM0MzJiMmM1NWViOTQ3MWJj
NGMwZGIyNWQwODZjNy4uNzJmNjNiZDg5NjI1YjYyNjljYmY3YTYzZjEyNTIxNWY0MTU3NWI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oCkBAIC00OSw3ICs0OSw2IEBAIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFz
cyBQYWdlOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3Mg
VVJMOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCmluZGV4IDcy
ODhjZmZlNGNmMmU4ZmViZWIwYzYxMGQ0NmI3ZWNhZmJjNjVmNGQuLjVlMDQwYzk1NGQ0YjUxNGEx
NDkwM2MwNzIwNzBiZWNkZTA2MGNiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmgKQEAgLTM0LDcgKzM0LDYgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFnZTsKLWNsYXNzIFVSTDsKIAogdHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBw
bGljYXRpb25NYW5pZmVzdExvYWRlci5oCmluZGV4IDhiNjQzMWFiNDIyZjJjYjZjOTQ4ZDhjZjhl
YmI1NTExNzExN2RkYmEuLjFiMGY3NjBkMmVjZWJkNWMyOGVmNWMyZWM0MmVkYTEyZjAzZjNiZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2Fk
ZXIuaApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uTWFuaWZlc3QuaCIK
ICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCA1ZmE3MDVkOGE4NWZmMTU4Njg5MDY1ZmM4YmNk
ODhiM2ZjOThiNGU0Li5iOWI5ZjM3NDk3NDNlZDQ4ZjczOGEzZmQ4ZTcyYTY5YTRkMDA5ZTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgVVJMOwogc3RydWN0IENvb2tpZTsK
IHN0cnVjdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCmluZGV4IGQyYjA5YmQ1ZGI1
Njc2YzAxYWJmODIzZDNmMDcyMmE3NzBlYTU0MGIuLjJhZjNkNGExYzUyMDkxMjkzZGUxYzQ4M2Ey
ZmMxNzNhYzY2ZWEyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9u
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlLmgKaW5kZXggZGMwNzEzMGExYjE0NjUzYmQxZGY1YmVlZTk4ODA5ZTNi
NzJlZmJlMy4uOTY1ZGU2ZjhhMDdiZGM3OGMwOGUwZjFjMmU3MjE5ZTFlZGE0MDQ3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1
bHRDYWNoZS5oCkBAIC0yNyw5ICsyNyw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LmgiCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
NjZmZDZhODZhODQ1YWQ0ZGYxYjBlMDViY2FkNzVjMjAzMjM0ODFjYS4uZGE2YjJhYmUxMTM4ZDhm
NDFhMzBhYmM3ZDE5NzY0Yjg4N2Y2ZDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMK
ICAgICAgICAgc3dpdGNoIChzaG91bGRDb250aW51ZSkgewogICAgICAgICBjYXNlIFNob3VsZENv
bnRpbnVlOjpGb3JTdXNwZW5zaW9uOgogICAgICAgICAgICAgLy8gV2UgaGFuZGxlIHN1c3BlbnNp
b24gYnkgbmF2aWdhdGluZyBmb3J3YXJkIHRvIGFib3V0OmJsYW5rLCB3aGljaCBsZWF2ZXMgdXMg
c2V0dXAgdG8gbmF2aWdhdGUgYmFjayB0byByZXN1bWUuCi0gICAgICAgICAgICByZXF1ZXN0ID0g
eyBibGFua1VSTCgpIH07CisgICAgICAgICAgICByZXF1ZXN0ID0geyBXVEY6OmJsYW5rVVJMKCkg
fTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpObzoK
ICAgICAgICAgICAgIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7CkBAIC0xNjY3LDcgKzE2
NjcsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSgpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChtX3JlcXVlc3QudXJsKCkuaXNFbXB0eSgpICYmICFmcmFt
ZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkp
IHsKLSAgICAgICAgbV9yZXF1ZXN0LnNldFVSTChibGFua1VSTCgpKTsKKyAgICAgICAgbV9yZXF1
ZXN0LnNldFVSTChXVEY6OmJsYW5rVVJMKCkpOwogICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJl
c291cmNlKCkpCiAgICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5kaXNwYXRjaERp
ZENoYW5nZVByb3Zpc2lvbmFsVVJMKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAppbmRleCBhYzk0OGNjZGFkZDBhYTFjNWUxYmU3YTAxZWExNjA5MDFjMWZhMzc0
Li5lOWY1MDNjYzZmNjM0ZWUxMDM2N2FkYTc4N2QxNjYyMTA2YzEyYjQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIERvY3Vt
ZW50TG9hZGVyCiAgICAgU3RyaW5nIGNsaWVudFJlZGlyZWN0RGVzdGluYXRpb25Gb3JIaXN0b3J5
KCkgY29uc3QgeyByZXR1cm4gdXJsRm9ySGlzdG9yeSgpOyB9CiAgICAgdm9pZCBzZXRDbGllbnRS
ZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoY29uc3QgU3RyaW5nJiBjbGllbnRSZWRpcmVjdFNvdXJj
ZUZvckhpc3RvcnkpIHsgbV9jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBjbGllbnRS
ZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7IH0KICAgICAKLSAgICBTdHJpbmcgc2VydmVyUmVkaXJl
Y3RTb3VyY2VGb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gKHVybEZvckhpc3RvcnkoKSA9PSB1
cmwoKSB8fCB1cmwoKSA9PSBibGFua1VSTCgpKSA/IFN0cmluZygpIDogdXJsRm9ySGlzdG9yeSgp
LnN0cmluZygpOyB9IC8vIG51bGwgaWYgbm8gc2VydmVyIHJlZGlyZWN0IG9jY3VycmVkLgorICAg
IFN0cmluZyBzZXJ2ZXJSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKSBjb25zdCB7IHJldHVybiAo
dXJsRm9ySGlzdG9yeSgpID09IHVybCgpIHx8IHVybCgpID09IFdURjo6YmxhbmtVUkwoKSkgPyBT
dHJpbmcoKSA6IHVybEZvckhpc3RvcnkoKS5zdHJpbmcoKTsgfSAvLyBudWxsIGlmIG5vIHNlcnZl
ciByZWRpcmVjdCBvY2N1cnJlZC4KICAgICBTdHJpbmcgc2VydmVyUmVkaXJlY3REZXN0aW5hdGlv
bkZvckhpc3RvcnkoKSBjb25zdCB7IHJldHVybiB1cmwoKTsgfQogCiAgICAgYm9vbCBkaWRDcmVh
dGVHbG9iYWxIaXN0b3J5RW50cnkoKSBjb25zdCB7IHJldHVybiBtX2RpZENyZWF0ZUdsb2JhbEhp
c3RvcnlFbnRyeTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCAz
ODVmYjY0MDdiYTQxOWJiYjg2NjdjYmM1MDk5N2MxYjBkNGJmMjE0Li4zMDQ4YzU5ZTU3NTEzN2Q4
NWUwYTk5Y2U5MmM1MGUzZGU3YmFmNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRX
cml0ZXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Np
b24uaAppbmRleCA0Y2RmNDhiNzdjNmQwNWUyZTY1NTc5YTQzMjE0ODMwOGQ4NDhlYmM5Li5mOWFj
Y2YxNzIxNWJiMDZhNmY4OTY2Y2YwMjE3OTliZWQ1OGUzZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRm9ybVN1Ym1pc3Npb24uaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiRm9ybVN0
YXRlLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBiM2FlNmFiMGUzZDQ5YTBkYjYxMzc1YTNjN2Rj
ZmQyODIwNDQ0OGQyLi45ZDAyOTdiMWI0NzU3ZDI4YjMwM2FjMGJkMzg2ZjljNjMyNzUwMzliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTQyMSw3ICs0MjEsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJtaXNz
aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2Ny
aXB0KHN1Ym1pc3Npb24tPmFjdGlvbigpKSkgeworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZh
U2NyaXB0KHN1Ym1pc3Npb24tPmFjdGlvbigpKSkgewogICAgICAgICBpZiAoIW1fZnJhbWUuZG9j
dW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Rm9ybUFjdGlvbihVUkwoc3Vi
bWlzc2lvbi0+YWN0aW9uKCkpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9pc0V4
ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0aW9uID0gdHJ1ZTsKQEAgLTY5OSw3ICs2OTksNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSgpCiAgICAgaWYgKCFwYXJzZUhUVFBS
ZWZyZXNoKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFk
ZXJOYW1lOjpSZWZyZXNoKSwgZGVsYXksIHVybFN0cmluZykpCiAgICAgICAgIHJldHVybjsKICAg
ICBhdXRvIGNvbXBsZXRlZFVSTCA9IHVybFN0cmluZy5pc0VtcHR5KCkgPyBkb2N1bWVudC51cmwo
KSA6IGRvY3VtZW50LmNvbXBsZXRlVVJMKHVybFN0cmluZyk7Ci0gICAgaWYgKCFwcm90b2NvbElz
SmF2YVNjcmlwdChjb21wbGV0ZWRVUkwpKQorICAgIGlmICghV1RGOjpwcm90b2NvbElzSmF2YVNj
cmlwdChjb21wbGV0ZWRVUkwpKQogICAgICAgICBtX2ZyYW1lLm5hdmlnYXRpb25TY2hlZHVsZXIo
KS5zY2hlZHVsZVJlZGlyZWN0KGRvY3VtZW50LCBkZWxheSwgY29tcGxldGVkVVJMKTsKICAgICBl
bHNlIHsKICAgICAgICAgYXV0byBtZXNzYWdlID0gIlJlZnVzZWQgdG8gcmVmcmVzaCAiICsgZG9j
dW1lbnQudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiIHRvIGEgamF2
YXNjcmlwdDogVVJMIjsKQEAgLTMzNTUsNyArMzM1NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNv
bnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlCiAKICAgICAgICAgLy8gV2UgaGFuZGxlIHN1c3BlbnNpb24gYnkgbmF2aWdhdGluZyBmb3J3
YXJkIHRvIGFib3V0OmJsYW5rLCB3aGljaCBsZWF2ZXMgdXMgc2V0dXAgdG8gbmF2aWdhdGUgYmFj
ayB0byByZXN1bWUuCiAgICAgICAgIGlmIChzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51
ZTo6Rm9yU3VzcGVuc2lvbikKLSAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
ci0+d2lsbENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBibGFua1VSTCgp
IH0pOworICAgICAgICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT53aWxsQ29udGlu
dWVNYWluUmVzb3VyY2VMb2FkQWZ0ZXJSZWRpcmVjdCh7IFdURjo6YmxhbmtVUkwoKSB9KTsKIAog
ICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01haW5SZXNv
dXJjZShzaG91bGRDb250aW51ZSk7CiAgICAgfTsKQEAgLTM5MDYsNyArMzkwNiw3IEBAIFJlZlB0
cjxGcmFtZT4gY3JlYXRlV2luZG93KEZyYW1lJiBvcGVuZXJGcmFtZSwgRnJhbWUmIGxvb2t1cEZy
YW1lLCBGcmFtZUxvYWRSZXF1CiAgICAgY3JlYXRlZCA9IGZhbHNlOwogCiAgICAgLy8gRklYTUU6
IFByb3ZpZGUgbGluZSBudW1iZXIgaW5mb3JtYXRpb24gd2l0aCByZXNwZWN0IHRvIHRoZSBvcGVu
ZXIncyBkb2N1bWVudC4KLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKS51cmwoKSkgJiYgIW9wZW5lckZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLT5hbGxvd0phdmFTY3JpcHRVUkxzKG9wZW5lckZyYW1lLmRvY3VtZW50
KCktPnVybCgpLCB7IH0pKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpICYmICFvcGVuZXJGcmFtZS5kb2N1bWVudCgpLT5j
b250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhvcGVuZXJGcmFtZS5k
b2N1bWVudCgpLT51cmwoKSwgeyB9KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBp
ZiAoIXJlcXVlc3QuZnJhbWVOYW1lKCkuaXNFbXB0eSgpICYmICFlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKHJlcXVlc3QuZnJhbWVOYW1lKCksICJfYmxhbmsiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxYjkxMWEyYjdkMjkyMmJhMzY2OTVkNGQ5MjYz
MDQwZjUwZjJmZjNmLi45MDRlZDk2MmY3OTc5M2M4M2VjYjdkODE1ZjQ1MDZmZmM4NTBhNWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTAwLDcgKzEw
MCw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwotY2xhc3MgVVJMOwogY2xh
c3MgV2lkZ2V0OwogCiBlbnVtIGNsYXNzIFBvbGljeURlY2lzaW9uTW9kZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDlmYmE4MzVhNDU1MjllZWM5
MTkwMGMyZjNiMmViNTBiNzE4ODg0ZDguLjUwYmQxMzhmMDJlMzRiMTRhMzkxOWUzNjdlZDc4MWJk
YmM3OWJiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cApAQCAtNjE1LDcgKzYxNSw3IEBAIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OmN1cnJlbnRJdGVt
U2hvdWxkQmVSZXBsYWNlZCgpIGNvbnN0CiAgICAgLy8gICJJZiB0aGUgYnJvd3NpbmcgY29udGV4
dCdzIHNlc3Npb24gaGlzdG9yeSBjb250YWlucyBvbmx5IG9uZSBEb2N1bWVudCwKICAgICAvLyAg
IGFuZCB0aGF0IHdhcyB0aGUgYWJvdXQ6YmxhbmsgRG9jdW1lbnQgY3JlYXRlZCB3aGVuIHRoZSBi
cm93c2luZyBjb250ZXh0CiAgICAgLy8gICB3YXMgY3JlYXRlZCwgdGhlbiB0aGUgbmF2aWdhdGlv
biBtdXN0IGJlIGRvbmUgd2l0aCByZXBsYWNlbWVudCBlbmFibGVkLiIKLSAgICByZXR1cm4gbV9j
dXJyZW50SXRlbSAmJiAhbV9wcmV2aW91c0l0ZW0gJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSht
X2N1cnJlbnRJdGVtLT51cmxTdHJpbmcoKSwgYmxhbmtVUkwoKSk7CisgICAgcmV0dXJuIG1fY3Vy
cmVudEl0ZW0gJiYgIW1fcHJldmlvdXNJdGVtICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9j
dXJyZW50SXRlbS0+dXJsU3RyaW5nKCksIFdURjo6YmxhbmtVUkwoKSk7CiB9CiAKIHZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OmNsZWFyUHJldmlvdXNJdGVtKCkKQEAgLTY1NCw5ICs2NTQsOSBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbShIaXN0b3J5SXRlbSYgaXRlbSkK
ICAgICAvLyBMYXRlciB3ZSBtYXkgd2FudCB0byBsZWFybiB0byBsaXZlIHdpdGggbmlsIGZvciBV
UkwuCiAgICAgLy8gU2VlIGJ1ZyAzMzY4MjM2IGFuZCByZWxhdGVkIGJ1Z3MgZm9yIG1vcmUgaW5m
b3JtYXRpb24uCiAgICAgaWYgKHVybC5pc0VtcHR5KCkpIAotICAgICAgICB1cmwgPSBibGFua1VS
TCgpOworICAgICAgICB1cmwgPSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgaWYgKG9yaWdpbmFsVVJM
LmlzRW1wdHkoKSkKLSAgICAgICAgb3JpZ2luYWxVUkwgPSBibGFua1VSTCgpOworICAgICAgICBv
cmlnaW5hbFVSTCA9IFdURjo6YmxhbmtVUkwoKTsKICAgICAKICAgICBTdHJpbmdXaXRoRGlyZWN0
aW9uIHRpdGxlID0gZG9jdW1lbnRMb2FkZXItPnRpdGxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlu
a0xvYWRlci5oCmluZGV4IDAxZDFlZmMzMTVhNWIwMmQwNjk5ZTlhYzQ1ZGZkMTM2ODc4ZjRhYjEu
LjU0ZDcyMjMxMGQ4ZGZmOTIxZjFlOWRlMDU0NWJkOWUxYzYyMDk0N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuaApAQCAtNDEsNyArNDEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFVSTDsKIGNsYXNzIExpbmtQcmVsb2FkUmVzb3VyY2VD
bGllbnQ7CiAKIHN0cnVjdCBMaW5rUmVsQXR0cmlidXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvYWRUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGlt
aW5nLmgKaW5kZXggNzNmOWVmOTRhZmQ2MjU1ZDVhM2Y1NzQ1ODJkMzBhNjRmMjFkMTQ2NC4uZmVh
N2M0MWZjZTYwMjUyNmUzNmFhOGVkYjZlYWI0NjU2OTg1OGM4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xvYWRUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TG9hZFRpbWluZy5oCkBAIC0yNSwxMyArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJM
OwotCiBjbGFzcyBMb2FkVGltaW5nIHsKIHB1YmxpYzoKICAgICBTZWNvbmRzIHNlY29uZHNTaW5j
ZVN0YXJ0VGltZShNb25vdG9uaWNUaW1lKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRl
clN0cmF0ZWd5LmgKaW5kZXggNTk2NzgyYzY1N2NhYzUwODJjYWZlMWNlNGIxYzE2ZmZiOWE2OGQ0
ZC4uMjg1ZTY4MDljZTQ1ZTIyMTI0NDQ2OWZmOTU1YWU1NWVmZGViNTE0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDYgQEAgY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBGZXRjaE9wdGlv
bnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApp
bmRleCAwNTBjYjc5ZWE2NTc3ZDUzYTAzMzUyMDZiZDQ2MGVhNDQ3M2YyMzc3Li5mYWRlMDFiN2Mx
ZDBiZWM4NDYzNjdmZjVhNjI3ZDkzZGYxZjA5YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBNaXhl
ZENvbnRlbnRDaGVja2VyOjpjaGVja0Zvcm1Gb3JNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4m
IHNlY3VyaXR5T3JpZ2kKIHsKICAgICAvLyBVbmNvbmRpdGlvbmFsbHkgYWxsb3cgamF2YXNjcmlw
dDogVVJMcyBhcyBmb3JtIGFjdGlvbnMgYXMgc29tZSBwYWdlcyBkbyB0aGlzIGFuZCBpdCBkb2Vz
IG5vdCBpbnRyb2R1Y2UKICAgICAvLyBhIG1peGVkIGNvbnRlbnQgaXNzdWUuCi0gICAgaWYgKHBy
b3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3Jp
cHQodXJsKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFpc01peGVkQ29udGVudChzZWN1
cml0eU9yaWdpbiwgdXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hl
Y2tlci5oCmluZGV4IGEyNmE4NTc5N2QzYThjYjBjMjkzM2RmMjQ3NzZiNjk1YjcwZDQ0MzQuLjVm
ZGZmZjgwYTMxODc0MzcxODM4ODkwYjVlMjQwNGVhMDA5ZjExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQ7Ci1j
bGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgTWl4ZWRDb250ZW50Q2hl
Y2tlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVk
dWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAK
aW5kZXggYThmODBiZTEzODIwN2RjN2FhNmM2YzE0Njk3M2QwZGI5ZTRiOWIxYy4uODhlNzA1MTZk
NmNlOTNkMzZlYzgzYWIyYzhkNDNiN2ZjNDVkYTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMzY2LDcgKzM2Niw3IEBAIGlubGluZSBi
b29sIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNob3VsZFNjaGVkdWxlTmF2aWdhdGlvbihjb25zdCBV
UkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIXNob3VsZFNjaGVkdWxlTmF2aWdhdGlvbigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkp
CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgcmV0dXJuIE5hdmlnYXRpb25EaXNhYmxlcjo6aXNOYXZpZ2F0aW9uQWxsb3dl
ZChtX2ZyYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5oCmluZGV4IDA0NTkzMTgxOTE3NjQ5YmIyOTg3NTM1NWUzMzg3MjA3MzU0MzIxOTQuLjZmYmUy
YTViM2RiYzk2ZmNiZDQ1MDkyNTU5Nzg0ZThkZDBjZDZiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaApAQCAtNDEsNyArNDEsNiBAQCBjbGFzcyBGb3Jt
U3VibWlzc2lvbjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgU2NoZWR1bGVkTmF2aWdhdGlvbjsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVVJMOwogCiBjbGFzcyBOYXZpZ2F0aW9uU2NoZWR1
bGVyIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCmluZGV4IDE1NDg5ZGNm
MDRiZjFkZWQ3ODg2ZWY4YzA4NjE3ZGRiYzEzZDlhMTguLjZkZWVmNDUxNjlhOWU1Y2EzMGE5ZjJm
ODMzNDIzNzlkMzk5YjFkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5n
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaApAQCAtNDAs
NyArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEZy
YW1lOwogY2xhc3MgSFRUUEhlYWRlck1hcDsKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIAogZW51bSBjbGFzcyBWaW9sYXRpb25SZXBvcnRUeXBlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oCmluZGV4IDliNjMzMGVkNDdiYWM2NmRlYTIyYjg0ZTE5
Y2YxZDAwYjA2YTIzYzEuLjFjMTIzZDA2ZjdhZDY3NTIyOWQ2YzVlMDFmOTI1MWE2OGIxNjIyNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaApAQCAtMjYsNyArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRl
eCA3YmRmYzQ4ZjVkNDA1OWJlNmFiOGJiOWEyNWViMDgzNTBlODkwMTk5Li4xMjcyM2IzNDJjYjVj
MjY1MmYzZTE0YWQ0YWMzYzJkMWM0MGY2ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihjb25zdCBT
dHJpbmcmIGRvbWFpbkkKICAgICBhdXRvIG9wZW5lclByaW1hcnlEb21haW4gPSBwcmltYXJ5RG9t
YWluKG9wZW5lclVybCk7CiAgICAgaWYgKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAhPSBv
cGVuZXJQcmltYXJ5RG9tYWluCiAgICAgICAgICYmICFvcGVuZXJEb2N1bWVudC5oYXNSZXF1ZXN0
ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MpCi0gICAgICAgICYmICFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG9w
ZW5lclVybC5zdHJpbmcoKSwgYmxhbmtVUkwoKSkpIHsKKyAgICAgICAgJiYgIWVxdWFsSWdub3Jp
bmdBU0NJSUNhc2Uob3BlbmVyVXJsLnN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpKSB7CiAgICAg
ICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJQcmltYXJ5RG9tYWluKTsKICAg
ICAgICAgLy8gUmVtZW1iZXIgdXNlciBpbnRlcmFjdGlvbi1iYXNlZCByZXF1ZXN0cyBzaW5jZSB0
aGV5IGRvbid0IG5lZWQgdG8gYmUgcmVwZWF0ZWQuCiAgICAgICAgIG9wZW5lckRvY3VtZW50LnNl
dEhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9u
KGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGFlMmNhZTI3ODA5MTc1NTgzZjJlYmI0MzM2NWEx
MDE5YTE0NzEwODcuLjJhYmZjNTAzMzRjMTdkODllMmI2ZmZiZGMzOGEzODJhMWYxMDZlOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC00Nyw3
ICs0Nyw2IEBAIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFVSTDsK
IAogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCmluZGV4IGY5NGQ2ZmQxOWU3NzQ2ZGY1ZTY4
M2E5NTdmMGZkOTlhNzcyZDMyMWEuLjA4MjQ2OWRhMTJhMDQwYjMxOGM0MmFmM2M2NzRjZDgwYzBm
ZDZlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbnZh
c0FjdGl2aXR5UmVjb3JkLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hD
b3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNmJh
NTUyNmMwYWY1NmU5NjIzNTYxZGI0N2NkMWJhZmY4MTMxOTZjYy4uYTBiN2Q4NDk4NTAyYjBlNzIz
N2FmMWEwMWEyMWI2YmQ3YTk1ODliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKQEAgLTUyLDcgKzUyLDYgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsK
IGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFByZXZpZXdMb2FkZXI7Ci1jbGFzcyBV
Ukw7CiAKIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VM
b2FkZXI+LCBwcm90ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQgewogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuaAppbmRleCA2YzlhY2IxOTNhNjcwMjNiYjVkYzM2
YmFjNGRhN2U3OTg4MzQ0M2JlLi43ZWY4ZGJjODUxNGRjZWNmZjFiMDdmNDUwMzcwMzdmOGU4ODQ4
ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuaApAQCAtMjgsNyArMjgs
NyBAQAogI2luY2x1ZGUgIkxvYWRUaW1pbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJp
Y3MuaCIKICNpbmNsdWRlICJTZXJ2ZXJUaW1pbmcuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJmcmFtZUxvYWRlci5jcHAKaW5kZXggNWQ3ZDM4YzNiMDcyM2I3MTg2MDlhZDg3YjEw
ZTc1MjE2NGRlODczNi4uNTVhMTY4NDgzMWJkMDFmNmUwYzRhNjFmYzdiNzdiYjU3N2VkODgyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCkBAIC03NywxNCArNzcs
MTQgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxl
bWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBTdHIKICAgICAvLyBTdXBwb3J0IGZvciA8ZnJhbWUg
c3JjPSJqYXZhc2NyaXB0OnN0cmluZyI+CiAgICAgVVJMIHNjcmlwdFVSTDsKICAgICBVUkwgdXJs
OwotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1cmxTdHJpbmcpKSB7CisgICAgaWYgKFdU
Rjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkgewogICAgICAgICBzY3JpcHRVUkwg
PSBjb21wbGV0ZVVSTCh1cmxTdHJpbmcpOyAvLyBjb21wbGV0ZVVSTCgpIGVuY29kZXMgdGhlIFVS
TC4KLSAgICAgICAgdXJsID0gYmxhbmtVUkwoKTsKKyAgICAgICAgdXJsID0gV1RGOjpibGFua1VS
TCgpOwogICAgIH0gZWxzZQogICAgICAgICB1cmwgPSBjb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwog
CiAgICAgaWYgKHNob3VsZENvbnZlcnRJbnZhbGlkVVJMc1RvQmxhbmsoKSAmJiAhdXJsLmlzVmFs
aWQoKSkKLSAgICAgICAgdXJsID0gYmxhbmtVUkwoKTsKKyAgICAgICAgdXJsID0gV1RGOjpibGFu
a1VSTCgpOwogCiAgICAgYm9vbCBoYXNFeGlzdGluZ0ZyYW1lID0gb3duZXJFbGVtZW50LmNvbnRl
bnRGcmFtZSgpOwogICAgIEZyYW1lKiBmcmFtZSA9IGxvYWRPclJlZGlyZWN0U3ViZnJhbWUob3du
ZXJFbGVtZW50LCB1cmwsIGZyYW1lTmFtZSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExp
c3QpOwpAQCAtOTQsNyArOTQsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUo
SFRNTEZyYW1lT3duZXJFbGVtZW50JiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cgogICAgIC8vIElm
IHdlIGNyZWF0ZSBhIG5ldyBzdWJmcmFtZSB0aGVuIGFuIGVtcHR5IGRvY3VtZW50IGlzIGxvYWRl
ZCBpbnRvIGl0IHN5bmNocm9ub3VzbHkgYW5kIG1heQogICAgIC8vIGNhdXNlIHNjcmlwdCBleGVj
dXRpb24gKHNheSwgdmlhIGEgRE9NIGxvYWQgZXZlbnQgaGFuZGxlcikgdGhhdCBjYW4gZG8gYW55
dGhpbmcsIGluY2x1ZGluZwogICAgIC8vIG5hdmlnYXRpbmcgdGhlIHN1YmZyYW1lLiBXZSBvbmx5
IHdhbnQgdG8gZXZhbHVhdGUgc2NyaXB0VVJMIGlmIHRoZSBmcmFtZSBoYXMgbm90IGJlZW4gbmF2
aWdhdGVkLgotICAgIGJvb2wgY2FuRXhlY3V0ZVNjcmlwdCA9IGhhc0V4aXN0aW5nRnJhbWUgfHwg
KGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpICYmIGZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5vcmlnaW5hbFVSTCgpID09IGJsYW5rVVJMKCkpOworICAgIGJvb2wgY2Fu
RXhlY3V0ZVNjcmlwdCA9IGhhc0V4aXN0aW5nRnJhbWUgfHwgKGZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpICYmIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5vcmlnaW5h
bFVSTCgpID09IFdURjo6YmxhbmtVUkwoKSk7CiAgICAgaWYgKCFzY3JpcHRVUkwuaXNFbXB0eSgp
ICYmIGNhbkV4ZWN1dGVTY3JpcHQgJiYgb3duZXJFbGVtZW50LmlzVVJMQWxsb3dlZChzY3JpcHRV
UkwpKQogICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChzY3Jp
cHRVUkwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCmluZGV4IDQ4OTZk
NjJmNDVmMWY4MWQ5MGRlNzQwMmUyMDk3MDQxYTZlYjA2NGMuLjJjYWFlOWNhNjA5OGE3NTMzYzMw
OTM4OTZkYzIwMzEyNmU2ODk0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJmcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRl
ci5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNz
IEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogY2xhc3Mg
SW50U2l6ZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFdpZGdldDsKIAogLy8gVGhpcyBpcyBhIHNsaWdo
dCBtaXNub21lci4gSXQgaGFuZGxlcyB0aGUgaGlnaGVyIGxldmVsIGxvZ2ljIG9mIGxvYWRpbmcg
Ym90aCBzdWJmcmFtZXMgYW5kIHBsdWdpbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRl
RGF0YS5oCmluZGV4IGYxMDEzNTE1OTcxOTgxODI5YzYxMDE5MTc1MmI5MWFmOWVjN2ZiNzUuLjcw
NTYzMjEzM2RmOGVmODU2NTk4NTI4N2U0MTA2MGIxZGIzNzk0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlRGF0YS5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGUuaAppbmRleCA1ZGY1ZjYwMTdjZTRjMDNiNzg4YmU5OGJlYjdiNmUx
N2JiMDQwYjZlLi42MTMxN2I1MzFjY2MxYjA2MjliMjFkYmYwYTY3Y2NmZWVhNmNmNDY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgK
QEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXBwbGljYXRpb25D
YWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogCiB1c2luZyBGYWxsYmFja1VSTFZlY3RvciA9IFZlY3Rv
cjxzdGQ6OnBhaXI8VVJMLCBVUkw+PjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IGFiYWE3M2UxNGFiNGI4
YzdhYmFiMTA4OGRkOGMyMzhlNjllMmI0MWUuLjQ3ZDg5MzRiYTk5MTRhNWE1NmQxMTQ2YTc5N2Vk
ZWI4NGRmMmRiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKQEAgLTI3LDEwICsyNywxMCBAQAogCiAjaW5jbHVk
ZSAiQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRE9NQXBwbGlj
YXRpb25DYWNoZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggZjJmYjFmNzgzMmJjZDgwNDYyYmNh
YjA4Y2ViYTdkMTI1Yjg1YTI0My4uMGQxMzBhNDVmOGFmM2I0OTkwNDIxMDViOTYxMDM5ZmY1ZmJm
MzQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTMxLDggKzMxLDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAppbmRleCA4MWMyMzIxZjMzOTljMzA0MDMzNzc2ZDkyNmQ4ZTMwMDNiNmU0
MWE1Li4wNDBkOGI3YWQ2YTA5MWViMWM5ZTQzNWI1ZTBjMzQwMWY5M2FlMjUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW5EYXRhLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oCmluZGV4IDQ4Y2JmODhlNWQ4OTAzNzExMzYxODk1Y2ExYzEzMmE2NDBj
N2Q5MDQuLjY4YzM2MWU1MmI0MmQ5MWQzNjFlOWNjODI5MGVmMzVjMzUwMTUyYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0
b3JhZ2VJREpvdXJuYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01h
bmlmZXN0UGFyc2VyLmNwcAppbmRleCBjYjQ4MTU4NWY0YTBkYzM2ODljOGU4MTVlNzA2Y2EyNGM0
MjYwMDE1Li44NDQ2OWY4YWQ0YTk0YTg0NjJlNzZmM2Q5MTBjMzJlOGIxNDEyMTk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKQEAg
LTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJNYW5pZmVzdFBhcnNlci5oIgogCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvTWFuaWZlc3RQYXJzZXIuaAppbmRleCBlNzgxMDg5M2EyMDY5MGFjZTYzYWVjM2VjODhl
NjBlYWY2MmZjNzgwLi44ZmU0MGE2NGU0NDkwYWFjODI3YTYxZGIwZjQwNDdjMWVlODYwYjE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaApA
QCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQog
c3RydWN0IE1hbmlmZXN0IHsKICAgICBWZWN0b3I8VVJMPiBvbmxpbmVXaGl0ZWxpc3RlZFVSTHM7
CiAgICAgSGFzaFNldDxTdHJpbmc+IGV4cGxpY2l0VVJMczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaAppbmRl
eCAzN2RmNjhiMzY2Y2ZmODUzOWI5NWM4MjNmMmU5MTI0ZDM1ZWE5OTM4Li5lNDYwYjY5YzJhZWQ1
ZDI3OWRkNTRhMGRmOWFmMDEwYjk0YmM3N2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCkBAIC0zNyw3
ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJjaGl2ZTsKIGNsYXNzIEFy
Y2hpdmVSZXNvdXJjZTsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwCmluZGV4IDY0MTIyNjJlMTViOTFmMWE5YWU1NGFjMDUxOTUxNmI2Y2E2NWI4
MWYuLmExZDM3YzcwMjlmMjk3YTQxZjY4M2YwOWU3ODY0YTlkYzhiN2IwMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRN
TE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlVSTEhhc2gu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCkBAIC01MSw2ICs1MCw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNTY0LDcgKzU2NCw3IEBAIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0
aW9uKEZyYW1lKiBmcmFtZSkKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1bWVudCBpbiBh
biBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhlciBkb2N1bWVu
dCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3duKS4gCiAgICAg
U3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBtYXJnaW53
aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTgl
JVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2Uo
KS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwotICAgIGF1dG8gaWZyYW1lUmVzb3Vy
Y2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVyKGlmcmFtZU1hcmt1cCksIGJs
YW5rVVJMKCksICJ0ZXh0L2h0bWwiLCAiVVRGLTgiLCBTdHJpbmcoKSk7CisgICAgYXV0byBpZnJh
bWVSZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIoaWZyYW1lTWFy
a3VwKSwgV1RGOjpibGFua1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOwog
CiAgICAgVmVjdG9yPFJlZjxMZWdhY3lXZWJBcmNoaXZlPj4gc3ViZnJhbWVBcmNoaXZlczsKICAg
ICBzdWJmcmFtZUFyY2hpdmVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA1ZTFlM2YxZDNj
ZDE0YTQ2YTI3NDlhNDhhMTkzOWNhMmQ2Mzg4YjRjLi44ZjVkZDIwNjE3NGZmNDg2ZjQxMmNlZGY4
MTJhOTgwZGQ2M2RjNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKQEAgLTQ3LDExICs0NywxMSBAQAogI2luY2x1ZGUgIlNjaGVtZVJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdWJyZXNvdXJj
ZUxvYWRlci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCAwNzc3YjE3NzI0ZTliMDVjZWY1ZWQ1NGEzYWVmYzFk
MTE0NjdmNGQ3Li4xMGY2OWM2YTEwNTI5ZjFmZDkxMWExZDA3NGVmMDMwOWMwZjVjYmI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aApAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwog
Y2xhc3MgSW1hZ2VMb2FkZXI7CiBjbGFzcyBTZXR0aW5nczsKLWNsYXNzIFVSTDsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiB1c2luZyBSZXNvdXJjZUVycm9yT3IgPSBFeHBlY3RlZDxULCBSZXNv
dXJjZUVycm9yPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTdHlsZVNoZWV0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U3R5bGVTaGVldENsaWVudC5oCmluZGV4IGRmNDZiZTJkMzc3ZTRjMWRlMTgyYWRhZjE0ZDczOWEx
Zjk3Y2RjMDIuLjM4YmIxOTk5MDA4N2M4ZDY2NjFmMzZhMzY2OWQ0YzlhZTMzNDgxNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGll
bnQuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OwotY2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRTdHlsZVNoZWV0Q2xp
ZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKaW5kZXggZDcxNjc5OGE0Y2UxZDk3ZDYxZDMx
M2U5NTE4YjdkYzIyNjlmNzA1Yy4uMmZjYmQzMTk4NWE0NzVhMzBmZjE3N2Y2MzI5NDYyMmYwMTI1
MjlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTQx
LDcgKzQxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlICB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNl
OwotY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uTG9hZGVyLmgKaW5kZXggNmFhNTUzNzRmNzhiNjY3N2Y1NzA5YTJiZDlkY2I3MTRj
MThmZmRmYS4uMzRhMGYzMmI0ZjVlOGRmOWE2YzAzZWY1NzQxOGZjNmFhODUxZDM0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaApAQCAtMjcsOSArMjcsOSBAQAogCiAj
aW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9t
YWMvTG9hZGVyTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRl
ck5TVVJMRXh0cmFzLm1tCmluZGV4IGY5MTBlZDViZGUyNDliYTMxYjhhNTgzZmM1NDFlZjdhYWNj
YzNjYzAuLmNiZTAwMDQ4MDZjYzU4NzQyM2Q4ZGViMGVlNDg0YTAxZjdlMDZmMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQpAQCAtMzAsMTEg
KzMwLDExIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkxvYWRlck5TVVJMRXh0cmFz
LmgiCiAKLSNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvVmVjdG9yLmg+
Ci0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbXBvcnQg
Ik1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmluZGV4IGMx
MzkwNzY4ZWY4NjVmMjY2NDFlOWE5MzQ4ZTZlNjYwZGIwNzJkZWEuLjkxNmQzZjUxMWI5NjUzZDg0
Y2U3YWIzZjE1MTFmMGJiNzM1YjZhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCiAj
aW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlICJVc2VyU3R5bGVTaGVldFR5cGVzLmgiCiAjaW5jbHVkZSAiVlRU
Q3VlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
aW5kZXggYjUxN2I1MmU3OWQ4ODRkMGU3Njg2NTBhNjEzZmY3NDk4MjI0NWY0YS4uYTU1MGQ1YjBi
NzlhOTQxODc3YTNmYmY1NDk2NzRjZGIzM2VlYmNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCkBAIC0zODIsNyArMzgyLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgQ2hyb21lQ2xp
ZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IEhhc2hTZXQ8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mKSB7IH07CisgICAgdmly
dHVhbCB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBVUkwmLCBjb25zdCBI
YXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgeyB9OwogCiAjaWYgUExBVEZPUk0o
V0lOKQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXN0U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29yKCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKaW5kZXggYWY3Y2E5MjY0YTRmMmY4NWU5
NDBjOWJkMWQ0MDE2ZGZhMDk5MmNjMC4uYjg3NTA1YTA1MDU3OWUzYmYxMzg1MDJhNWVmZjRhNDU1
MmVkMWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCkBAIC0yNiw3ICsyNiw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggNWU3YzM1Yzk3NzE4
ZDg4Zjg0MWJmNDE4MDQ1MjQ5NGFkOGY3NTE5Mi4uODg5ZWU5OTc2MTI4ZDFhOTY2N2UwYTUwYTM0
OGU1MTJiZTY4NzA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDbGllbnQuaApA
QCAtMzEsMjkgKzMxLDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEZy
YW1lOwotICAgIGNsYXNzIFVSTDsKLQotICAgIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkNvbnRleHRNZW51Q2xpZW50KCkgPSBkZWZhdWx0
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKSA9IDA7Ci0gICAg
ICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpID0g
MDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9
IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkgPSAwOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cFNwZWFraW5nKCkgPSAwOworY2xhc3MgRnJhbWU7CisKK2NsYXNzIENvbnRleHRNZW51Q2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgpID0gZGVmYXVsdDsK
KyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKSA9IDA7CisgICAgCisgICAg
dmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
bG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFr
aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHN0b3BTcGVha2luZygpID0gMDsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aFNwb3RsaWdodCgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aFNwb3RsaWdodCgpID0gMDsKICNlbmRpZgogCiAjaWYgVVNF
KEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUykKLSAgICAgICAgdmlydHVhbCB2b2lkIHNob3dD
b250ZXh0TWVudSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgPSAw
OwogI2VuZGlmCi0gICAgfTsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDY4MTI2YmE5
NmU4YmYxN2U3Njg5M2UxZWJhYWNmNTQ5NDBmMmZiYzcuLmEzZTVlYWU4OTRkNjQyNzYzN2RkODQ1
ZWRhYWRlNzFjNjE1MWMxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAKQEAgLTEzMzYsNyArMTMzNiw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250
cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25z
dAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRG93
bmxvYWRJbWFnZVRvRGlzazoKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICBpZiAoV2Vi
Q29yZTo6cHJvdG9jb2xJcyhtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlSW1hZ2VV
UkwoKSwgImZpbGUiKSkKKyAgICAgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMobV9jb250ZXh0
LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksICJmaWxlIikpCiAgICAgICAgICAg
ICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTM1MSw3ICsxMzUxLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JF
bmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0pIGNvbnN0CiAgICAgICAgICAgICAg
ICAgaXRlbS5zZXRUaXRsZShjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZFZpZGVvVG9EaXNrKCkp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRBdWRpb1RvRGlzaygpKTsKLSAgICAgICAgICAgIGlmIChXZWJD
b3JlOjpwcm90b2NvbElzKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVS
TCgpLCAiZmlsZSIpKQorICAgICAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhtX2NvbnRleHQu
aGl0VGVzdFJlc3VsdCgpLmFic29sdXRlSW1hZ2VVUkwoKSwgImZpbGUiKSkKICAgICAgICAgICAg
ICAgICBzaG91bGRFbmFibGUgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxpbmtUb0NsaXBib2FyZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAppbmRleCA3YmRlMWNiYjhiNjM3MWU3YTdhMDhiYTU1MWU4NTZiODE5
MmY2MGZjLi4xZDZkZDdjYTdiODhmOGY5M2E5YzI0OWQ0OWFlMTc1N2Y5MDMwNGIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAKICNpbmNsdWRlICJTdHls
ZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlN1ZGRlblRl
cm1pbmF0aW9uLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlzdWFsVmlld3BvcnQu
aCIKICNpbmNsdWRlICJXZWJLaXRQb2ludC5oIgpAQCAtMjIxNSw3ICsyMjE1LDcgQEAgU3RyaW5n
IERPTVdpbmRvdzo6Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoY29uc3QgRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIEkKIAogYm9vbCBET01XaW5kb3c6OmlzSW5zZWN1cmVTY3JpcHRBY2Nl
c3MoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewot
ICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkKKyAgICBpZiAoIVdURjo6
cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gSWYgdGhpcyBET01XaW5kb3cgaXNuJ3QgY3VycmVudGx5IGFjdGl2ZSBpbiB0aGUg
RnJhbWUsIHRoZW4gdGhlcmUncyBubwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cAppbmRleCBhMTBkYWIzM2ZiNzIwMGRmMWE0MjBjMzQyOGU1ZjdiMzk2ZmNjZDZmLi5lMDEwOGE3
YmViM2FhYmM0ZDEyYTdlODNhYTk3OTFkZDJlMTMxMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcApAQCAtMTA2OSw3ICsxMDY5LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxl
cjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVy
YXRpb24KICAgICAgICAgICAgIGlmIChtdXN0VXNlTGVnYWN5RHJhZ0NsaWVudCkKICAgICAgICAg
ICAgICAgICBzcmMuZWRpdG9yKCkuY29weVVSTChsaW5rVVJMLCB0ZXh0Q29udGVudFdpdGhTaW1w
bGlmaWVkV2hpdGVTcGFjZSwgZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKSk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0VVJMKHNyYy5l
ZGl0b3IoKS5wYXN0ZWJvYXJkV3JpdGVyVVJMKGxpbmtVUkwsIHRleHRDb250ZW50V2l0aFNpbXBs
aWZpZWRXaGl0ZVNwYWNlKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEu
c2V0VVJMRGF0YShzcmMuZWRpdG9yKCkucGFzdGVib2FyZFdyaXRlclVSTChsaW5rVVJMLCB0ZXh0
Q29udGVudFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSkpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwYXN0ZWJvYXJkIGFsc28gY29udGFpbnMgdHJ1c3R3
b3J0aHkgbGluayBkYXRhCiAgICAgICAgICAgICAvLyBidXQgZG9uJ3Qgb3ZlcndyaXRlIG1vcmUg
Z2VuZXJhbCBwYXN0ZWJvYXJkIHR5cGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5o
CmluZGV4IGMwMmQ1YzgwMTZjNjViM2Q1ZWY5MzU2YzgyYmU3ZDU3MmI5NzlhOTQuLjg0MzUyODNj
ZGZjYjExYTg2MmQ5ZmNjYzY2ZjMwNDNmMmM1N2E5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNp
bmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudFNvdXJjZS5oCmluZGV4IDM3OTJhOTEyNmYxZDMwYWZmZTM3YmUxYzJhNmRhYzc4
MjE2YTcyOWEuLjU4YTRjMzg3NDllOTUwYjQ3OGNmODcwNjhhMjYzOTMxMGFkZWYwOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbk9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCBlODg2YjkwZmMwODFiYTdiM2Yz
MGVjMzQxNGIyZmNiYmU5ZWYxNWE1Li5hMDIxNWZhNzc0MjM4NTJhYmI1NDExMGE3Mjk3MTZiOTM0
ZTkzNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC04OSw3ICs4OSw2IEBAIGNsYXNzIFJlbmRlcldp
ZGdldDsKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNs
YXNzIFNldHRpbmdzOwotY2xhc3MgVVJMOwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogY2xhc3Mg
V2lkZ2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAyNDBlNjQ1NzM3YTRjNzhjZjUy
ZDcxZDhkMjg1NzBhMDNiODRmOWFmLi44NGM2MjAxMGY2NmU5M2MyZWFhZWVkNDNjZDdmMjQwNTUy
Y2RkYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTUyLDcgKzUyLDYgQEAgY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1l
T3duZXJFbGVtZW50OwotY2xhc3MgVVJMOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFz
cyBSZW5kZXJCb3g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oCmluZGV4IDA1ZmUyYjNmNjcwZGUyZmZiNWIw
ZDZhOTBkOGQ3NGY5MmE4NDY1NzIuLjdmMzVmNGQ3MDEwNTU3ZmM1OTlhMjFhZGRlNjYyYTM1OTRi
NmIyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIFVSTDsKIAog
Y2xhc3MgSGlzdG9yeSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZD
b3VudGVkPEhpc3Rvcnk+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRleCA3Yjk4YTA2MzZjNDkzNmNkNmZkNjI5NDAxMjJjYWNj
OWE4NTg2NzY2Li44MGE2ZWQ5MmIwN2FiNzllMDBmNTFhNzVhODIwMjc0Y2VjNTk2NTM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0xvY2F0aW9uLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1
bGVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUwLDcg
QEAgaW5saW5lIGNvbnN0IFVSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0CiAKICAgICBjb25zdCBV
UkwmIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLmlzVmFs
aWQoKSkKLSAgICAgICAgcmV0dXJuIGJsYW5rVVJMKCk7IC8vIFVzZSAiYWJvdXQ6YmxhbmsiIHdo
aWxlIHRoZSBwYWdlIGlzIHN0aWxsIGxvYWRpbmcgKGJlZm9yZSB3ZSBoYXZlIGEgZnJhbWUpLgor
ICAgICAgICByZXR1cm4gV1RGOjpibGFua1VSTCgpOyAvLyBVc2UgImFib3V0OmJsYW5rIiB3aGls
ZSB0aGUgcGFnZSBpcyBzdGlsbCBsb2FkaW5nIChiZWZvcmUgd2UgaGF2ZSBhIGZyYW1lKS4KIAog
ICAgIHJldHVybiB1cmw7CiB9CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBMb2NhdGlvbjo6cmVs
b2FkKERPTVdpbmRvdyYgYWN0aXZlV2luZG93KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHRhcmdldERvY3VtZW50LnVybCgpKSkKKyAgICBp
ZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCh0YXJnZXREb2N1bWVudC51cmwoKSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVs
ZVJlZnJlc2goYWN0aXZlRG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCmluZGV4IGJiN2Qy
ZDFkMzNlZWZmNmM5ZDE2NjZhYjAwMTAxNzgzMmE0ZjJhZjguLjAzNGNlOGI2ZWZjZjcyYzBhN2Vk
NGJlZTAwZmUwZWVjOTRiMTQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9j
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKQEAgLTM3LDcgKzM3
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBGcmFt
ZTsKLWNsYXNzIFVSTDsKIAogY2xhc3MgTG9jYXRpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxl
LCBwdWJsaWMgUmVmQ291bnRlZDxMb2NhdGlvbj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDI0YjQxZGUzZDYxZmExNjgxODgyMWVkMzBjZDdl
N2I5NGY2ODBkNzEuLmIyYjlhZTZlNTk1ODcyN2ViZTQzZmNjMGQ4MmQwYTNhN2QyMDgxYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCkBAIC0xMzUsNyArMTM1LDYgQEAgY2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBT
b2NrZXRQcm92aWRlcjsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2U7CiBjbGFzcyBTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI7Ci1jbGFzcyBVUkw7CiBjbGFzcyBVc2VyQ29udGVudFByb3ZpZGVyOwog
Y2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiBjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggM2I2ZTE4Mjll
MjhjMzVhMzllNGExNmI1ZjA4OGU2MWMzYzQ2ZWQ4YS4uZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZk
NGMyZDE4MGFmNDliZjc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2Vy
aWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAt
MzAsMTEgKzMwLDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2UuaAppbmRleCAyNGFiOTRiY2EyOTVjY2FmYjBhNjUxYTYyNzBiMjg3OTQ1ZWJh
OTkxLi4zYTg2MzRhYjYzN2E5MTQyYTcyNTAzZjlhODhhNTI2Zjc5ZTBhOWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZS5oCkBAIC00OSw3ICs0OSw2IEBAIGNsYXNzIFBlcmZvcm1hbmNlVGlt
aW5nOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlVGltaW5nOwogY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFVSTDsKIGNsYXNzIFVzZXJUaW1pbmc7
CiAKIGNsYXNzIFBlcmZvcm1hbmNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UGVyZm9ybWFu
Y2U+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
UmVzb3VyY2VUaW1pbmcuY3BwCmluZGV4IDU3NTMzNTgwYzMwMjFlYWU2NmRlMzE5MDg5ZDhlNGIx
YmMxMDNmOWQuLjdiN2Q4N2E0NThmYmEwZTczOWQyYzQyMDljZjgyNDJiYmQ4NzQ5MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcApA
QCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkxvYWRUaW1pbmcuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VUaW1pbmcuaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAyMjllZmY4NDM4NTRiMjA2ODBk
NGEzOWRjNTFjMDA3MmE3NjQ5ZTkzLi4wMjBlMDkyYjk4ZjhjODNmZDhhNWIzZjQzMzJjMjQ2YjNl
YzU4NzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMzEsNyAr
MzEsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
LSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2NoZW1l
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlRleHRF
bmNvZGluZy5oIgpAQCAtMTQ4LDcgKzE0OCw3IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9y
aWdpbihjb25zdCBVUkwmIHVybCkKICAgICAvLyBkb2N1bWVudC5kb21haW4gc3RhcnRzIGFzIG1f
ZGF0YS5ob3N0LCBidXQgY2FuIGJlIHNldCBieSB0aGUgRE9NLgogICAgIG1fZG9tYWluID0gbV9k
YXRhLmhvc3Q7CiAKLSAgICBpZiAobV9kYXRhLnBvcnQgJiYgaXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKG1fZGF0YS5wb3J0LnZhbHVlKCksIG1fZGF0YS5wcm90b2NvbCkpCisgICAgaWYgKG1fZGF0
YS5wb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1fZGF0YS5wb3J0LnZhbHVl
KCksIG1fZGF0YS5wcm90b2NvbCkpCiAgICAgICAgIG1fZGF0YS5wb3J0ID0gc3RkOjpudWxsb3B0
OwogCiAgICAgLy8gQnkgZGVmYXVsdCwgb25seSBsb2NhbCBTZWN1cml0eU9yaWdpbnMgY2FuIGxv
YWQgbG9jYWwgcmVzb3VyY2VzLgpAQCAtNTE2LDcgKzUxNiw3IEBAIFJlZjxTZWN1cml0eU9yaWdp
bj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBT
dHJpbmcmCiB7CiAgICAgU3RyaW5nIGRlY29kZWRIb3N0ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVu
Y2VzKGhvc3QpOwogICAgIGF1dG8gb3JpZ2luID0gY3JlYXRlKFVSTChVUkwoKSwgcHJvdG9jb2wg
KyAiOi8vIiArIGhvc3QgKyAiLyIpKTsKLSAgICBpZiAocG9ydCAmJiAhaXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKCpwb3J0LCBwcm90b2NvbCkpCisgICAgaWYgKHBvcnQgJiYgIVdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKCpwb3J0LCBwcm90b2NvbCkpCiAgICAgICAgIG9yaWdpbi0+bV9k
YXRhLnBvcnQgPSBwb3J0OwogICAgIHJldHVybiBvcmlnaW47CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKaW5kZXggNWFkZjUwMTc0OWIwOWMyOTNlNTliYTQwNDU2Zjc2N2NiNTZl
MDhlMS4uYjkzZDBmYWYyMzVhN2ZlMzU0NzY1MDlmNmU0MzdkNTQ0MDVjYzEyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaApAQCAtMzQsOCArMzQsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VjdXJpdHlPcmlnaW4+IHsKIHB1YmxpYzoKICAgICBlbnVt
IFBvbGljeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAppbmRleCBj
ZWZmZWEzMmIwODRjNTYzMTI0ZjIwYjdjNWZlMjhmMTQ5MDQwNDc1Li4yNzc2MmVhMjFkNmQyMDY1
ZTlkZDAxNDZkYjk3OWIzMzJlYzQ1NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKaW5kZXggZWUyNTcyYzVhOWE2
NDQzOTU3YTVmM2Y3NTNmNDZlMmZiYTkyMjM0MC4uZTAxNDhhMmQwNWQ5OWIwZGRkZjA2YTIzZDI0
NmQ1MzQ1MmNiMmMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkhhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5o
CkBAIC0yOCw3ICsyOCw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmlu
ZGV4IDE1M2VkZDgxOWQxMjU1NTU1Njg4NzY1NjZkZTMxZjk4YjZjMDU1M2IuLjQyMzQxODI4MGVh
MmVlM2M5YmZkZmM5MWNkMTI3Yjk2OGViMWUxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwCkBAIC0zMSwxMSArMzEsMTEgQEAKIAogI2luY2x1ZGUgIk9yaWdpbkFjY2Vz
c0VudHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIFNlY3VyaXR5UG9saWN5Ojpz
aG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIoY29uc3QgVVJMJiB1cmwpCiAgICAg
Ly8KICAgICAvLyBOb3RlOiBXZSBnZW5lcmFsaXplIHRoaXMgdG8gaW52YWxpZCBVUkxzIGJlY2F1
c2Ugd2UgdHJlYXQgc3VjaCBVUkxzIGFzIGFib3V0OmJsYW5rLgogICAgIC8vCi0gICAgcmV0dXJu
IHVybC5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5nKCksIGJs
YW5rVVJMKCkpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5zdHJpbmcoKSwg
ImFib3V0OnNyY2RvYyIpOworICAgIHJldHVybiB1cmwuaXNFbXB0eSgpIHx8IGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UodXJsLnN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHVybC5zdHJpbmcoKSwgImFib3V0OnNyY2RvYyIpOwogfQogCiB2
b2lkIFNlY3VyaXR5UG9saWN5OjpzZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9saWN5IHBv
bGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaAppbmRleCBjZDM3Y2EzYWQyZGZk
YmQ3ZTY3MjM1MWZhNTQzZWVmNDllODJiNGY0Li41MzNiMWQ0ZmJkYWQ1MmUzOGYxZmQzNWEyZjZh
MDdkNDgwMDhiMTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9s
aWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCkBAIC0zNCw3
ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwot
Y2xhc3MgVVJMOwogCiBjbGFzcyBTZWN1cml0eVBvbGljeSB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5nc0Jhc2UuaAppbmRleCBhYTgwNGNkYjA4NGUwZDZhM2ZkM2RlZWI2ZjYxZDU1NDNh
ZjM0MWIxLi45ODY3NzZjYTNkYjVkYThmOGUxYTZiYTg3NzlmZGVlYTcyODNiOWIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJTdG9y
YWdlTWFwLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV3JpdGluZ01v
ZGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRl
IDx1bmljb2RlL3VzY3JpcHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDI3OWYwMzNh
MjY0ODEzYzIxYWRmOTBjZmE2YzM2NThhYzM4NDNmMjMuLmM4YjEyYTM5NzFiNjYyZjgwNzhmM2Nh
NjhmNTBlNjFmOWE3ZjhjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMjQsNyArMjQs
NyBAQAogICovCiAKICNwcmFnbWEgb25jZQotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Tb2Nr
ZXRQcm92aWRlci5oCmluZGV4IGQxOTc5NzdhZmViODIwYWE0MTJlMmMzNGZhNTQ3MjE2Mzg0OTBl
NzIuLjllOGMwMDNiZmY1MWUxYTVjYzk2ZDJlNDczZTdhZWVlZWRiZGE4ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKQEAgLTM0LDcgKzM0LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNvY2tldFN0cmVhbUhh
bmRsZTsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKLWNsYXNzIFVSTDsKIAogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgU29ja2V0UHJvdmlkZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U29ja2V0UHJvdmlkZXI+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
Q29udGVudFByb3ZpZGVyLmgKaW5kZXggMjhkZmIzMmEwNzZlNjUxMmVjZjkyNGYwMTQ1MjIwZWVh
ZTQ5YzQ3Mi4uZmE2OTIwMzRkYmFlNWZkNzlmZTgxOTc4OWE3MzIxZWJlNGIwZGVkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKQEAgLTQyLDcgKzQyLDYgQEAg
Y2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBQYWdl
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogY2xhc3MgVXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvcjsKIGNsYXNzIFVzZXJTY3JpcHQ7CiBjbGFzcyBVc2VyU3R5bGVTaGVl
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRl
eCBiOWI4MTE1ODI3Yjc4ZjUyNzMwOTVjMmMzZTE1MThiZjQzZjQzZTkwLi5mMzczY2YzN2IyNGM1
MGZjMjFkYzZkYzQ3MWFiMDhlZDRlYzUwOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0yNiw5ICsyNiw5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJu
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCmluZGV4IDkz
M2Y2OWQ2YzVhNjBlNmVkNzI4YmEwODBlZWU4NGY1NDgwZGYyZDYuLjkzZjY1ODEyZGFjNWRlOGFk
NWZjZGI2NzBkOGQyZjllODY5NzgxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29u
dGVudFVSTFBhdHRlcm4uaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuIHsKIHB1YmxpYzoK
ICAgICBVc2VyQ29udGVudFVSTFBhdHRlcm4oKSA6IG1faW52YWxpZCh0cnVlKSwgbV9tYXRjaFN1
YmRvbWFpbnMoZmFsc2UpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
U2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAppbmRleCA4NTEwYzFm
MzM5OTAxZTk5NWYzMjBjY2M5YmY3MTliMmU0OWFlNDI3Li41MmMxMmYzYzY5NjYzMDJhYWVmNDU1
YjhmZWZiYzk5ZWJkYTU4NGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJT
Y3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaApAQCAtMjUsNyAr
MjUsNyBAQAogIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJT
Y3JpcHRUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
clN0eWxlU2hlZXQuaAppbmRleCA2OGYxMGE4MmFkZjg5OGYyNTJjNDE1NTljYjE2NzhhZWM4YzUw
ODQxLi5jNDc0NzY3ZTdjOThiYjQ4YTg4M2NiNzNiNjk4OTA1ZjYwMWQ3NjAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCkBAIC0yNSw3ICsyNSw3IEBACiAgCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJV
c2VyQ29udGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlz
aXRlZExpbmtTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaXNpdGVkTGlua1N0b3JlLmgK
aW5kZXggNDNjMzUxMzcyZDYxOGI2ODEwOWIwZmI4Y2NkNjlmYzg1ZjhiZGQ3OC4uMjZkNjUwZGJh
NzRkYzUwMmNmOTMwOWEzZjNkMWMwNWRhNmI2NDliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9WaXNpdGVkTGlua1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaXNp
dGVkTGlua1N0b3JlLmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0
eXBlZGVmIHVpbnQ2NF90IFNoYXJlZFN0cmluZ0hhc2g7CiBjbGFzcyBQYWdlOwotY2xhc3MgVVJM
OwogCiBjbGFzcyBWaXNpdGVkTGlua1N0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8VmlzaXRlZExp
bmtTdG9yZT4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3kuaAppbmRleCA1YjU5MmZkODI4Zjk3Zjk0YzIzYWUzMzQ5NjhhNWFiNDdk
OTZjMTYzLi5lMDJhN2FiNmM1OWJmY2Y1Yjk5ZTY0OGZmYzZjN2UyNTQ0Y2ZmZTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtNTYs
NyArNTYsNiBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBUZXh0RW5jb2Rpbmc7Ci1jbGFz
cyBVUkw7CiBzdHJ1Y3QgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50OwogCiB0eXBlZGVmIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4+
IENTUERpcmVjdGl2ZUxpc3RWZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oCmluZGV4IGViNGZlODdjMjlmMWNhYjEx
OGJkMWIwZGJlNjc2M2NiMTA0ZjMyMzAuLjhlMDUxODI2NDE0MDZmMmNjOGNhYTJkYzU2YWUzMzYw
NjM0ZTZiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeUNsaWVudC5oCkBAIC0zMiw3ICszMiw2IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZvcm1EYXRhOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgQ1NQSW5mbyB7CiAg
ICAgU3RyaW5nIGRvY3VtZW50VVJJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCmluZGV4IDI5MDcy
NTBmMGViMWRjNGZkMDhmYjIwNzJjNjgzMzdiMjhkN2IwMjYuLmRkNTEzMDBlYzNiMDAzMzFmMzNi
ZDAyNzM3YTE1OGMyYWFjNjIxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKQEAgLTMwLDcg
KzMwLDcgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmgiCiAjaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlLmgiCiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5oIgotI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlLmNwcAppbmRleCA5NGI0Y2MxM2MwZjZlNDViZGE0ZjVkODNiNGQxOGU3NzMwM2Y0MzZjLi5l
YjIxOTVhMjA0YTRjNmJlYTQ3YTQ3MDg0MTNiYzBiN2U2ZjM0OWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAK
QEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDAsMTQgKzEwMCwx
NCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMoY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiAgICAgaWYgKHBvcnQgPT0gbV9wb3J0KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGlmICgobV9wb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3Bv
cnQudmFsdWUoKSwgImh0dHAiKSkgJiYgKCghcG9ydCAmJiB1cmwucHJvdG9jb2xJcygiaHR0cHMi
KSkgfHwgKHBvcnQgJiYgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgImh0
dHBzIikpKSkKKyAgICBpZiAoKG1fcG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bChtX3BvcnQudmFsdWUoKSwgImh0dHAiKSkgJiYgKCghcG9ydCAmJiB1cmwucHJvdG9jb2xJcygi
aHR0cHMiKSkgfHwgKHBvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52
YWx1ZSgpLCAiaHR0cHMiKSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghcG9y
dCkKLSAgICAgICAgcmV0dXJuIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3BvcnQudmFsdWUo
KSwgdXJsLnByb3RvY29sKCkpOworICAgICAgICByZXR1cm4gV1RGOjppc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wobV9wb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKTsKIAogICAgIGlmICghbV9w
b3J0KQotICAgICAgICByZXR1cm4gaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUo
KSwgdXJsLnByb3RvY29sKCkpOworICAgICAgICByZXR1cm4gV1RGOjppc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSk7CiAKICAgICByZXR1cm4gZmFs
c2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZS5oCmluZGV4IDRlZWFiYjAxMzY1MjUxYjZkODk2MzNjYTk2ODBkMDE1ZjIz
MTA2YWEuLmEyZGI1MDQzODk4ZjJlNjk0N2JjN2IwYTJkZDY0NDNhYjUxNDM4ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZS5oCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeTsKLWNsYXNzIFVSTDsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7
CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Qu
Y3BwCmluZGV4IDFiNDMzMTI2NjAwYTUwMWY5NWY1ZTYzYjQyZGQ0Y2RkZGQ5NTc5YjIuLjI2ZGE5
MTE1Mzc2NGFmZjcwNDg2NzhlNjI3ZjcyZmM0Yzc5ODFkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Qu
Y3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTmFtZXMuaCIKICNpbmNsdWRlICJQYXJzaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAi
VGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5
cGUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3QuaAppbmRleCA5ZjYzYzMwMDZhMGNhN2YyZTMzOTk0ODAxYjU0MmMzNjY2
OGMyZTU0Li41ZmNmM2IyZWFlNGE5ZTVmODQ4MTBiZDUzYzQ1NTUyNDQwNzcyNmZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdC5oCkBAIC0zNiw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3REaXJlY3RpdmUuY3BwCmluZGV4IGMyYmYxZDQ1YTU1ZjU3N2ZhMmQzZmI2MDBiMmFjOWYzZmYw
Y2ExZTQuLjFiMDkyYjg0ZmQwYmY3ZDY2ZjhlMWFhZmUwZjFiYWM1MzM2YWU2NWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3REaXJlY3RpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNp
bmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgKaW5kZXggYjlhOWQwMGQ1
YmQyZmRhOWZhN2ZhMTRlYjkxNzFhYzg2MTI4NTdiOC4uNGI4ZTFhYWU2YjQ3NzBlZWQ5Njc4MWI2
ZGJmNjZhYmExZTEyNTU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgKQEAgLTIzLDE0ICsyMywxMyBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyX2gKLSNkZWZpbmUgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyX2gK
KyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBPQkpDX0NMQVNTIE5TQ29kZXI7CkBAIC03Nyw1ICs3NiwzIEBAIGNsYXNzIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB7CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0KLSNlbmRpZiAvLyBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4
dE1lbnVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaApp
bmRleCA0NzZhM2MzNmI5NWJkYjE4N2JiNTg5MzJlMDAzYmQxMWVmMzJiNDA2Li4xYjBmNzQ1MGI0
NTcyZDU2YTkxM2U1YzFlN2FhNTczOTg0OTQ4ZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZXh0TWVudUl0ZW0uaApAQCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvbnRleHRNZW51OwogY2xhc3MgSW1hZ2U7Ci1jbGFzcyBVUkw7CiAKIGVudW0g
Q29udGV4dE1lbnVBY3Rpb24gewogICAgIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db29raWUuaAppbmRleCBiMjEyMjRmMWNiOWEwZGE5YWY1ODZhYjliMDRmMzkx
MjU3NmVjZDk0Li44Y2JhNGRmNTkzMTE2YzNmMjNkMmI0YmRhNGNkM2IzZGY3OTI3OTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db29raWUuaApAQCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29va2llc1N0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVz
U3RyYXRlZ3kuaAppbmRleCBiNDM5Nzg2ODc4MTA5NWQwYzA5YTk5NmQyNDA0YTJmNGU5ZDk5OWRi
Li45YjBkNWE2OGQ5MmM4ZTU1YWQ5ZDBmOWFiMzM4Zjk1MTc2MjlkNzc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaApAQCAtMzMsNyArMzMsNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247Ci1jbGFzcyBVUkw7
CiAKIHN0cnVjdCBDb29raWU7CiBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdEYXRhLmgKaW5kZXggMWE0YTQ1ZjgwNWNjNTA2YWI5ZjE5MWY4MDYxNTc4NzA0ZmY0OTIw
Ni4uZTkzMDk1ZmM3YjJhMGIxMzZkNDY2MTZkMDIyMGNjZWJhMzk5YTAzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC01Niw4ICs1Niw2IEBAIHR5cGVkZWYgdm9pZCogRHJhZ0Rh
dGFSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiBlbnVtIERyYWdB
cHBsaWNhdGlvbkZsYWdzIHsKICAgICBEcmFnQXBwbGljYXRpb25Ob25lID0gMCwKICAgICBEcmFn
QXBwbGljYXRpb25Jc01vZGFsID0gMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKaW5k
ZXggYmU1YjRjOWMyYTQ3MDRhMWRiOTExMmM0Y2U5NGVhYzQzZjE1ZDZmOS4uZjMyYTY4NDVhNjg1
YzVhMGMyMWRhZjkyYzFmYzBmZWY0YTUwMDIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgSW1hZ2U7CiBjbGFzcyBJbnRSZWN0OwogY2xh
c3MgTm9kZTsKIGNsYXNzIFJhbmdlOwotY2xhc3MgVVJMOwogCiAjaWYgUExBVEZPUk0oSU9TKQog
dHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gRHJhZ0ltYWdlUmVmOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN0cmVhbS5oCmluZGV4IDk2N2RlZGM3YmE2ZWNmNDI5MmRmMTljZmMxODg1MWQx
NjZiM2FhNWYuLmIyYWEyODQ0NzlmN2IxMjI2ZWJmN2FhYTliN2ZkY2FjMzBjMzM3NjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKQEAgLTM1LDggKzM1LDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIC8vIEFsbCBtZXRob2RzIGFyZSBzeW5jaHJv
bm91cy4KIGNsYXNzIEZpbGVTdHJlYW0gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGlua0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJ
Y29uLmgKaW5kZXggMjgxNzU0NjAzNTlhZGZmN2EwY2YyZmUxZWI3ZmY0MTM0YzU3N2U1OS4uODll
MmY4OTY5YmI1MjZhMzY0ZGI2YjkwZTMwYTliNzcxY2RlNTg2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGlua0ljb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MaW5rSWNvbi5oCkBAIC0yNiw5ICsyNiw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkxpbmtJY29uVHlwZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDczN2EzOTA0MjU3ZGU2NDNiYzBk
OWFiOTliYzI2NGEzMTRmZDZmZjcuLjU1NWVjMjgyZTRiYjY2ZTVmOWQxMTEyMGI5NzYxYTcyNWVi
YzNmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnRDb2RlcnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAg
LTQ3LDcgKzQ3LDcgQEAgYm9vbCBQYXN0ZWJvYXJkOjppc1NhZmVUeXBlRm9yRE9NVG9SZWFkQW5k
V3JpdGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBib29sIFBhc3RlYm9hcmQ6OmNhbkV4cG9zZVVS
TFRvRE9NV2hlblBhc3RlYm9hcmRDb250YWluc0ZpbGVzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KQogewotICAgIGF1dG8gdXJsID0gVVJMUGFyc2VyIHsgdXJsU3RyaW5nIH0ucmVzdWx0KCk7Cisg
ICAgVVJMIHVybCh7IH0sIHVybFN0cmluZyk7CiAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzSW5I
VFRQRmFtaWx5KCkgfHwgdXJsLnByb3RvY29sSXNCbG9iKCkgfHwgdXJsLnByb3RvY29sSXNEYXRh
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCAyMDYzNWFiMDI5
NGYyOTk3ZTI4ZmJmZmQ1MDk4Njk0OGE5OWI2MDMwLi5hMmJhMmI3NjAwZGQ0ZWJhMjY4ZjYyOWNk
ZDE5MTQxMzg4MWJkNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0y
NywxMCArMjcsMTAgQEAKIAogI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIlBhc3Rl
Ym9hcmRJdGVtSW5mby5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCA5OWQ4ZGRmZmFlMDBlYWNlMWE2MzJjYjBkM2Y1
MzgxYTIzZmEzNjVjLi5hNWIzNjUwYTBiYmMwYWY4OGY5YWY3NDQ0MDhkZWFlOTk2MGRhOWYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzMs
NyArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIFNlbGVj
dGlvbkRhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgUGFzdGVi
b2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJk
VVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRl
ckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEu
Y3BwCmluZGV4IDNkMmRjZWVkN2M1NmU4NzA5Njc4OTgwN2E2N2JlZTJlZDAzMjkyN2YuLmUyNTY5
MDc0ZWU1YTJiM2VmNmMyMGU4YmU0OGRmZTc1N2E4MDY5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAg
dm9pZCBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0UGxhaW5UZXh0KFBsYWluVGV4dCBwbGFpblRl
eHQpCiAgICAgbV9wbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCk7CiB9CiAKLXZvaWQgUGFz
dGVib2FyZFdyaXRlckRhdGE6OnNldFVSTChVUkwgdXJsKQordm9pZCBQYXN0ZWJvYXJkV3JpdGVy
RGF0YTo6c2V0VVJMRGF0YShVUkxEYXRhIHVybCkKIHsKICAgICBBU1NFUlQoIW1fdXJsKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXgg
ZDUzZmQ3MmZmNWU2YzQ0ZTBhMTZlNzdmMzkxZGFmY2Q4NDY1MDIwYS4uNWY0NzU5MmIxMDE5NTEx
OTExNzk3Njg4ZTc4NTUwZjQ4YmJlZDU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC02Niw4ICs2Niw4IEBAIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRh
IGZpbmFsIHsKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFBsYWluVGV4dD4mIHBsYWluVGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5UZXh0OyB9CiAgICAgdm9pZCBzZXRQbGFpblRleHQoUGxh
aW5UZXh0KTsKIAotICAgIHN0cnVjdCBVUkwgewotICAgICAgICBXZWJDb3JlOjpVUkwgdXJsOwor
ICAgIHN0cnVjdCBVUkxEYXRhIHsKKyAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIHRp
dGxlOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgU3RyaW5nIHVzZXJWaXNpYmxlRm9ybTsK
QEAgLTc2LDE1ICs3NiwxNSBAQCBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiAj
ZW5kaWYKICAgICB9OwogCi0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxVUkw+JiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQotICAgIHZvaWQgc2V0VVJMKFVSTCk7CisgICAgY29uc3Qgc3Rk
OjpvcHRpb25hbDxVUkxEYXRhPiYgdXJsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Cisg
ICAgdm9pZCBzZXRVUkxEYXRhKFVSTERhdGEpOwogCiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb250ZW50PiYgd2ViQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29udGVudDsgfQog
ICAgIHZvaWQgc2V0V2ViQ29udGVudChXZWJDb250ZW50KTsKIAogcHJpdmF0ZToKICAgICBzdGQ6
Om9wdGlvbmFsPFBsYWluVGV4dD4gbV9wbGFpblRleHQ7Ci0gICAgc3RkOjpvcHRpb25hbDxVUkw+
IG1fdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMRGF0YT4gbV91cmw7CiAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb250ZW50PiBtX3dlYkNvbnRlbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDhlMTNiZjRkODQxNDEzYmYxYzExN2Rl
YzllZmY4NWM0ODI0Yjg4ZWYuLmUwYTIxMzMzNzQ2Y2RmOTRkZDcwZTk1ZTNmNjJlZDBkNzgyMDAw
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBA
IC00OCw3ICs0OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3Mg
U2VsZWN0aW9uRGF0YTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIHN0cnVjdCBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFz
dGVib2FyZEl0ZW1JbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJv
bWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRB
dHRhY2htZW50SW5mby5oCmluZGV4IGRiZWNmYzFiM2IxNmQ3ZjVlMDMwOGUxMTBhY2RhMTEwMmNi
NDIwN2UuLmE5NThjMmYwYWIyZDlmMWYzNzY2MmE3YTBiNjAyYmUzMTM0MzA3YjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMx
LDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkQnVmZmVyOwot
Y2xhc3MgVVJMOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAgICAgVVJMIGJs
b2JVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NTTEtleUdlbmVyYXRvci5oCmluZGV4IDA3
NjcyMzg2ZjY4ZWFhOTgxZmU3YzU5N2MwNWY2MWVmOGU2NzNjZTQuLmMyYmQ4ZDZlOWQzYWE5M2Uy
NDYwMjQ4NjJjMWYzYjIyZjQ1YTQ4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NTTEtleUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NTTEtl
eUdlbmVyYXRvci5oCkBAIC0zMSw4ICszMSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgVVJMOwotCiAvLyBSZXR1cm5zIHN0cmluZ3MgcmVwcmVzZW50aW5nIGtleSBzaXplcyB0
aGF0IG1heSBiZSB1c2VkCiAvLyBmb3IgdGhlIDxrZXlnZW4+IHRhZy4gVGhlIGZpcnN0IHN0cmlu
ZyBpcyBkaXNwbGF5ZWQgYXMgdGhlIGRlZmF1bHQKIC8vIGtleSBzaXplIGluIHRoZSA8a2V5Z2Vu
PiBtZW51LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCmluZGV4
IDk0OWRlNjNhZWYwNmNmY2ZhZjBjMDJkMjRjNmFjNDRlNjZmZTBiOTcuLjc3ZjZjMzkyYTkxN2Yw
YzkxNzI2NjVhNzYxOGU2NzA0MzhjNGU0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y2hlbWVSZWdpc3RyeS5jcHAKQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIK
ICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
ICNpbmNsdWRlICJDb250ZW50RmlsdGVyLmgiCkBAIC01NTEsNyArNTUxLDcgQEAgYm9vbCBTY2hl
bWVSZWdpc3RyeTo6aXNVc2VyRXh0ZW5zaW9uU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQog
CiBib29sIFNjaGVtZVJlZ2lzdHJ5Ojppc0J1aWx0aW5TY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hl
bWUpCiB7Ci0gICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgKGFsbEJ1aWx0aW5TY2hlbWVz
KCkuY29udGFpbnMoc2NoZW1lKSB8fCBVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZShzY2hlbWUp
KTsKKyAgICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiAoYWxsQnVpbHRpblNjaGVtZXMoKS5j
b250YWlucyhzY2hlbWUpIHx8IFdURjo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoc2NoZW1l
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKaW5kZXggZTJhYWUyZjMwNDU3MzU1ZjQ4OWVlYzRhYjRlY2YxY2U3ZDNlNDUy
Zi4uZjg2OGMyYzAxZDZiMTBlY2YzNjRiMWE2ZmZlM2RkNDJmNWY1MjI4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTQwLDcgKzQwLDcgQEAKICNlbmRpZgogCiAj
aWYgVVNFKFNPVVApCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKKyNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyU291cC5oPgogI2VuZGlmCiAKICNpZiBVU0UoR0xJQikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHAKaW5kZXggMGNjNWY2ODdkNjIx
ZWZlN2VhYmFjNGRiZjllNTQ1NDdhNDhkY2UxOC4uYWZiNzU3Y2JlNDAyMmZlZGZjNDc5M2VhYmMy
NTY5ZTg2MGU5NTk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
U3RyaW5nSGFzaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5n
SGFzaC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTaGFyZWRTdHJpbmdIYXNoLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guaAppbmRleCA3MzI0NjE3YmE0
OTZhMDY2M2JmZDUzZGVjNGE0NDNkOTc2OTM5ZThlLi4zNjAzY2YwZjJlN2Y5MjE0YjNlMjUzZjU0
NzlkOWNiMzQ2YjI3YWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRTdHJpbmdIYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5n
SGFzaC5oCkBAIC0zMCw4ICszMCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
VVJMOwotCiB0eXBlZGVmIHVpbnQ2NF90IFNoYXJlZFN0cmluZ0hhc2g7CiAKIC8vIFVzZSB0aGUg
bG93IDMyLWJpdHMgb2YgdGhlIDY0LWJpdCBTaGFyZWRTdHJpbmdIYXNoIGFzIHRoZSBrZXkgZm9y
IEhhc2hTZXRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1Nv
dXAudHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CmluZGV4IGMw
MmU0OWU0ZTUxZWY3NDkzMWY3MGRkODY1NWQzNGRlMmQ2M2U0OGIuLjJlODU2YTk4MDBjMzM3YTQw
NTMxNjUyYzcwNGYzZTJmYjZmZDMwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NvdXJjZXNTb3VwLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2Vz
U291cC50eHQKQEAgLTQxLDQgKzQxLDMgQEAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1dlYktpdFNv
dXBSZXF1ZXN0R2VuZXJpYy5jcHAKIAogcGxhdGZvcm0vc291cC9QdWJsaWNTdWZmaXhTb3VwLmNw
cAogcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAotcGxhdGZvcm0vc291cC9VUkxT
b3VwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGJkYjQ2ODY5NThmMzAwMDkzMzM0NDMxODk0NzdhOWQ0NWY0ZjVkODguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMDkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNy0yMDA4LCAyMDExLTIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
VVJMLmgiCi0KLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLSNpbmNsdWRlIDxzdGRpby5oPgotI2lu
Y2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1VVSUQuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3Ry
ZWFtLmg+Ci0KLS8vIEZJWE1FOiBUaGlzIGZpbGUgbWFrZXMgdG9vIG11Y2ggdXNlIG9mIHRoZSAr
IG9wZXJhdG9yIG9uIFN0cmluZy4KLS8vIFdlIGVpdGhlciBoYXZlIHRvIG9wdGltaXplIHRoYXQg
b3BlcmF0b3Igc28gaXQgZG9lc24ndCBpbnZvbHZlCi0vLyBzbyBtYW55IGFsbG9jYXRpb25zLCBv
ciBjaGFuZ2UgdGhpcyB0byB1c2UgU3RyaW5nQnVmZmVyIGluc3RlYWQuCi0KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotdHlwZWRlZiBWZWN0b3I8Y2hhciwg
NTEyPiBDaGFyQnVmZmVyOwotdHlwZWRlZiBWZWN0b3I8VUNoYXIsIDUxMj4gVUNoYXJCdWZmZXI7
Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnZhbGlkUG9ydE51bWJlciA9IDB4RkZGRjsKLQot
Ly8gQ29waWVzIHRoZSBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9uLCBhc3N1bWluZyBhbGwgdGhl
IHNvdXJjZSBjaGFyYWN0ZXJzIGFyZQotLy8gQVNDSUkuIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIg
bXVzdCBiZSBsYXJnZSBlbm91Z2guIE51bGwgY2hhcmFjdGVycyBhcmUgYWxsb3dlZAotLy8gaW4g
dGhlIHNvdXJjZSBzdHJpbmcsIGFuZCBubyBhdHRlbXB0IGlzIG1hZGUgdG8gbnVsbC10ZXJtaW5h
dGUgdGhlIHJlc3VsdC4KLXN0YXRpYyB2b2lkIGNvcHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmlu
ZywgY2hhciogZGVzdCkKLXsKLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgbWVtY3B5KGRlc3QsIHN0
cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAgIGVsc2UgewotICAgICAg
ICBjb25zdCBVQ2hhciogc3JjID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICBzaXpl
X3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAgZGVzdFtpXSA9IHN0YXRpY19jYXN0PGNoYXI+
KHNyY1tpXSk7Ci0gICAgfQotfQotCi12b2lkIFVSTDo6aW52YWxpZGF0ZSgpCi17Ci0gICAgbV9p
c1ZhbGlkID0gZmFsc2U7Ci0gICAgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID0gZmFsc2U7Ci0g
ICAgbV9jYW5ub3RCZUFCYXNlVVJMID0gZmFsc2U7Ci0gICAgbV9zY2hlbWVFbmQgPSAwOwotICAg
IG1fdXNlclN0YXJ0ID0gMDsKLSAgICBtX3VzZXJFbmQgPSAwOwotICAgIG1fcGFzc3dvcmRFbmQg
PSAwOwotICAgIG1faG9zdEVuZCA9IDA7Ci0gICAgbV9wb3J0TGVuZ3RoID0gMDsKLSAgICBtX3Bh
dGhFbmQgPSAwOwotICAgIG1fcGF0aEFmdGVyTGFzdFNsYXNoID0gMDsKLSAgICBtX3F1ZXJ5RW5k
ID0gMDsKLX0KLQotVVJMOjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0
aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIGVuY29kaW5nKQotewotICAgIFVSTFBhcnNlciBw
YXJzZXIocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1
bHQoKTsKLX0KLQotc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgYykKLXsKLSAg
ICAvLyBCcm93c2VycyBpZ25vcmUgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250
cm9sCi0gICAgLy8gY2hhcmFjdGVycyBmcm9tIFVSTHMuICBOb3RlIHRoYXQgYyBpcyBhbiAqdW5z
aWduZWQqIGNoYXIgaGVyZQotICAgIC8vIHNvIHRoaXMgY29tcGFyaXNvbiBzaG91bGQgb25seSBj
YXRjaCBjb250cm9sIGNoYXJhY3RlcnMuCi0gICAgcmV0dXJuIGMgPD0gJyAnOwotfQotCi1VUkwg
VVJMOjppc29sYXRlZENvcHkoKSBjb25zdAotewotICAgIFVSTCByZXN1bHQgPSAqdGhpczsKLSAg
ICByZXN1bHQubV9zdHJpbmcgPSByZXN1bHQubV9zdHJpbmcuaXNvbGF0ZWRDb3B5KCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotU3RyaW5nIFVSTDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25z
dAotewotICAgIGlmICghaGFzUGF0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAg
ICB1bnNpZ25lZCBlbmQgPSBtX3BhdGhFbmQgLSAxOwotICAgIGlmIChtX3N0cmluZ1tlbmRdID09
ICcvJykKLSAgICAgICAgLS1lbmQ7Ci0KLSAgICBzaXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZl
cnNlRmluZCgnLycsIGVuZCk7Ci0gICAgaWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICArK3N0YXJ0OwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kIC0g
c3RhcnQgKyAxKTsKLX0KLQotU3RyaW5nVmlldyBVUkw6OnByb3RvY29sKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIG1fc2NoZW1lRW5kKTsK
LX0KLQotU3RyaW5nVmlldyBVUkw6Omhvc3QoKSBjb25zdAotewotICAgIHVuc2lnbmVkIHN0YXJ0
ID0gaG9zdFN0YXJ0KCk7Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
ZyhzdGFydCwgbV9ob3N0RW5kIC0gc3RhcnQpOwotfQotCi1zdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBVUkw6OnBvcnQoKSBjb25zdAotewotICAgIGlmICghbV9wb3J0TGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgYm9vbCBvayA9IGZhbHNlOwotICAgIHVuc2lnbmVk
IG51bWJlcjsKLSAgICBpZiAobV9zdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG51bWJlciA9IGNo
YXJhY3RlcnNUb1VJbnRTdHJpY3QobV9zdHJpbmcuY2hhcmFjdGVyczgoKSArIG1faG9zdEVuZCAr
IDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7Ci0gICAgZWxzZQotICAgICAgICBudW1iZXIgPSBj
aGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgbV9ob3N0RW5k
ICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSwgJm9rKTsKLSAgICBpZiAoIW9rIHx8IG51bWJlciA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICByZXR1cm4gbnVtYmVyOwotfQotCi1TdHJpbmcgVVJMOjpob3N0QW5kUG9y
dCgpIGNvbnN0Ci17Ci0gICAgaWYgKGF1dG8gcG9ydCA9IHRoaXMtPnBvcnQoKSkKLSAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoaG9zdCgpLCAnOicsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3J0
LnZhbHVlKCkpKTsKLSAgICByZXR1cm4gaG9zdCgpLnRvU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBV
Ukw6OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdAotewotICAgIFN0cmluZyByZXN1bHQgPSBt
X3N0cmluZy5zdWJzdHJpbmcoMCwgbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKTsKLQotICAgIGlm
IChtX3Bhc3N3b3JkRW5kIC0gbV91c2VyU3RhcnQgPiAwKSB7Ci0gICAgICAgIGNvbnN0IGludCBh
bGxvd0ZvclRyYWlsaW5nQXRTaWduID0gMTsKLSAgICAgICAgcmVzdWx0LnJlbW92ZShtX3VzZXJT
dGFydCwgbV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ICsgYWxsb3dGb3JUcmFpbGluZ0F0U2ln
bik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIFN0cmluZyBkZWNv
ZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcgaW5wdXQpCi17Ci0gICAg
YXV0byBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwotICAgIGlmICghaW5wdXRMZW5ndGgp
Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIFZlY3RvcjxMQ2hhcj4gcGVyY2Vu
dERlY29kZWQ7Ci0gICAgcGVyY2VudERlY29kZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnB1
dExlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlucHV0TGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgaWYgKGlucHV0W2ldID09ICclJwotICAgICAgICAgICAgJiYgaW5wdXRMZW5n
dGggPiAyCi0gICAgICAgICAgICAmJiBpIDwgaW5wdXRMZW5ndGggLSAyCi0gICAgICAgICAgICAm
JiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKQotICAgICAgICAgICAgJiYgaXNBU0NJSUhl
eERpZ2l0KGlucHV0W2kgKyAyXSkpIHsKLSAgICAgICAgICAgIHBlcmNlbnREZWNvZGVkLnVuY2hl
Y2tlZEFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRbaSArIDFdLCBpbnB1dFtpICsgMl0pKTsK
LSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwZXJjZW50
RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQoaW5wdXRbaV0pOwotICAgIH0KLSAgICByZXR1cm4gU3Ry
aW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUo
KSk7Ci19Ci0KLVN0cmluZyBVUkw6OnVzZXIoKSBjb25zdAotewotICAgIHJldHVybiBkZWNvZGVF
c2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
ZyhtX3VzZXJTdGFydCwgbV91c2VyRW5kIC0gbV91c2VyU3RhcnQpKTsKLX0KLQotU3RyaW5nIFVS
TDo6cGFzcygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyRW5kKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVu
Y2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyRW5k
ICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpKTsKLX0KLQotU3RyaW5nIFVSTDo6
ZW5jb2RlZFVzZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91
c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KTsKLX0KLQotU3RyaW5nIFVSTDo6ZW5j
b2RlZFBhc3MoKSBjb25zdAotewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmlu
ZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSk7Ci19Ci0KLVN0
cmluZyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgaWYgKCFoYXNGcmFn
bWVudElkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJu
IG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kICsgMSk7Ci19Ci0KLWJvb2wgVVJMOjpoYXNG
cmFnbWVudElkZW50aWZpZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9z
dHJpbmcubGVuZ3RoKCkgIT0gbV9xdWVyeUVuZDsKLX0KLQotU3RyaW5nIFVSTDo6YmFzZUFzU3Ry
aW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcubGVmdChtX3BhdGhBZnRlckxhc3RT
bGFzaCk7Ci19Ci0KLSNpZiAhVVNFKENGKQotCi1TdHJpbmcgVVJMOjpmaWxlU3lzdGVtUGF0aCgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFpc1ZhbGlkKCkgfHwgIWlzTG9jYWxGaWxlKCkpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9t
UGFyc2VkVVJMKFN0cmluZ1ZpZXcocGF0aCgpKSk7Ci19Ci0KLSNlbmRpZgotCi0jaWZkZWYgTkRF
QlVHCi0KLXN0YXRpYyBpbmxpbmUgdm9pZCBhc3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3
KQotewotfQotCi0jZWxzZQotCi1zdGF0aWMgdm9pZCBhc3NlcnRQcm90b2NvbElzR29vZChTdHJp
bmdWaWV3IHByb3RvY29sKQotewotICAgIC8vIEZJWE1FOiBXZSBwcm9iYWJseSBkb24ndCBuZWVk
IHRoaXMgZnVuY3Rpb24gYW55IG1vcmUuCi0gICAgLy8gVGhlIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwgZnVuY3Rpb24gYXNzZXJ0cyB0aGF0IHBhc3NlZC1pbiBjaGFyYWN0ZXJzCi0gICAgLy8g
YXJlIG9uZXMgaXQgY2FuIGhhbmRsZTsgdGhlIG9sZGVyIGNvZGUgZGlkIG5vdCBhbmQgcmVsaWVk
IG9uIHRoZXNlIGNoZWNrcy4KLSAgICBmb3IgKGF1dG8gY2hhcmFjdGVyIDogcHJvdG9jb2wuY29k
ZVVuaXRzKCkpIHsKLSAgICAgICAgQVNTRVJUKGlzQVNDSUkoY2hhcmFjdGVyKSk7Ci0gICAgICAg
IEFTU0VSVChjaGFyYWN0ZXIgPiAnICcpOwotICAgICAgICBBU1NFUlQoIWlzQVNDSUlVcHBlcihj
aGFyYWN0ZXIpKTsKLSAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlclVuY2hlY2tlZChjaGFyYWN0
ZXIpID09IGNoYXJhY3Rlcik7Ci0gICAgfQotfQotCi0jZW5kaWYKLQotc3RhdGljIExvY2sgZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrOwotCi11c2luZyBEZWZhdWx0UG9y
dEZvclByb3RvY29sTWFwRm9yVGVzdGluZyA9IEhhc2hNYXA8U3RyaW5nLCB1aW50MTZfdD47Ci1z
dGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZygpCi17Ci0gICAgc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJv
dG9jb2xNYXBGb3JUZXN0aW5nKiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOwotICAgIHJldHVy
biBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOwotfQotCi1zdGF0aWMgRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcmIGVuc3VyZURlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JU
ZXN0aW5nKCkKLXsKLSAgICBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyomIGRl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVz
dGluZygpOwotICAgIGlmICghZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcCkKLSAgICAgICAgZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcCA9IG5ldyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9y
VGVzdGluZzsKLSAgICByZXR1cm4gKmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXA7Ci19Ci0KLXZv
aWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQotewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsKLSAgICBlbnN1cmVEZWZh
dWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpLmFkZChwcm90b2NvbCwgcG9ydCk7Ci19
Ci0KLXZvaWQgY2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpCi17Ci0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVz
dGluZ0xvY2spOwotICAgIGlmIChhdXRvKiBtYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
Rm9yVGVzdGluZygpKQotICAgICAgICBtYXAtPmNsZWFyKCk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBwcm90b2NvbCkKLXsK
LSAgICBpZiAoYXV0byogb3ZlcnJpZGVNYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9y
VGVzdGluZygpKSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsKLSAgICAgICAgQVNTRVJUKG92ZXJyaWRlTWFw
KTsgLy8gTm8gbmVlZCB0byBudWxsIGNoZWNrIGFnYWluIGhlcmUgc2luY2Ugb3ZlcnJpZGVNYXAg
Y2Fubm90IGJlY29tZSBudWxsIGFmdGVyIGJlaW5nIG5vbi1udWxsLgotICAgICAgICBhdXRvIGl0
ZXJhdG9yID0gb3ZlcnJpZGVNYXAtPmZpbmQocHJvdG9jb2wudG9TdHJpbmdXaXRob3V0Q29weWlu
ZygpKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG92ZXJyaWRlTWFwLT5lbmQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci0gICAgfQotICAgIHJldHVybiBVUkxQYXJz
ZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocHJvdG9jb2wpOwotfQotCi1ib29sIGlzRGVmYXVs
dFBvcnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKQotewot
ICAgIHJldHVybiBkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKSA9PSBwb3J0OwotfQot
Ci1ib29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKLXsKLSAg
ICBhc3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihwcm90b2NvbCksIHN0cmxlbihwcm90b2NvbCkpKTsKLQotICAgIC8vIEphdmFTY3Jp
cHQgVVJMcyBhcmUgInZhbGlkIiBhbmQgc2hvdWxkIGJlIGV4ZWN1dGVkIGV2ZW4gaWYgVVJMIGRl
Y2lkZXMgdGhleSBhcmUgaW52YWxpZC4KLSAgICAvLyBUaGUgZnJlZSBmdW5jdGlvbiBwcm90b2Nv
bElzSmF2YVNjcmlwdCgpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIAotICAgIEFTU0VSVCghZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyhwcm90b2NvbCksICJqYXZhc2Ny
aXB0IikpOwotCi0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmpl
Y3QuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NoZW1lRW5kOyArK2kpIHsKLSAg
ICAgICAgaWYgKCFwcm90b2NvbFtpXSB8fCAhaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX3N0
cmluZ1tpXSwgcHJvdG9jb2xbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICByZXR1cm4gIXByb3RvY29sW21fc2NoZW1lRW5kXTsgLy8gV2Ugc2hvdWxkIGhhdmUgY29u
c3VtZWQgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIGFyZ3VtZW50LgotfQotCi1ib29sIFVSTDo6cHJv
dG9jb2xJcyhTdHJpbmdWaWV3IHByb3RvY29sKSBjb25zdAotewotICAgIGFzc2VydFByb3RvY29s
SXNHb29kKHByb3RvY29sKTsKLQotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgCi0gICAgaWYgKG1fc2NoZW1lRW5kICE9IHByb3RvY29sLmxlbmd0aCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0
IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbChtX3N0cmluZ1tpXSwgcHJvdG9jb2xbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIFVSTDo6cXVlcnkoKSBjb25z
dAotewotICAgIGlmIChtX3F1ZXJ5RW5kID09IG1fcGF0aEVuZCkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhFbmQgKyAxLCBt
X3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsgCi19Ci0KLVN0cmluZyBVUkw6OnBhdGgoKSBj
b25zdAotewotICAgIHVuc2lnbmVkIHBvcnRFbmQgPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7
Ci0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhwb3J0RW5kLCBtX3BhdGhFbmQgLSBwb3J0
RW5kKTsKLX0KLQotYm9vbCBVUkw6OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgcykKLXsKLSAg
ICAvLyBGaXJlZm94IGFuZCBJRSByZW1vdmUgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgJzon
LgotICAgIHNpemVfdCBzZXBhcmF0b3JQb3NpdGlvbiA9IHMuZmluZCgnOicpOwotICAgIFN0cmlu
ZyBuZXdQcm90b2NvbCA9IHMuc3Vic3RyaW5nKDAsIHNlcGFyYXRvclBvc2l0aW9uKTsKLSAgICBh
dXRvIGNhbm9uaWNhbGl6ZWQgPSBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKG5l
d1Byb3RvY29sKTsKLSAgICBpZiAoIWNhbm9uaWNhbGl6ZWQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZygqY2Fub25pY2FsaXplZCwgIjoiLCBtX3N0cmluZykpOwotICAgICAgICAqdGhpcyA9
IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgVVJM
UGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCpjYW5vbmljYWxpemVkLCBtX3N0cmluZy5zdWJzdHJp
bmcobV9zY2hlbWVFbmQpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGlzQWxsQVNDSUkoU3RyaW5nVmlldyBzdHJpbmcp
Ci17Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNB
cmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBy
ZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5n
Lmxlbmd0aCgpKTsKLX0KLSAgICAKLS8vIEFwcGVuZHMgdGhlIHB1bnljb2RlZCBob3N0bmFtZSBp
ZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBzdHJpbmcgYW5kIGxlbmd0aCB0bwotLy8gdGhlIG91dHB1
dCBidWZmZXIuIFRoZSByZXN1bHQgd2lsbCBub3QgYmUgbnVsbCB0ZXJtaW5hdGVkLgotLy8gUmV0
dXJuIHZhbHVlIG9mIGZhbHNlIG1lYW5zIGVycm9yIGluIGVuY29kaW5nLgotc3RhdGljIGJvb2wg
YXBwZW5kRW5jb2RlZEhvc3RuYW1lKFVDaGFyQnVmZmVyJiBidWZmZXIsIFN0cmluZ1ZpZXcgc3Ry
aW5nKQotewotICAgIC8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5j
b2RlZCBuYW1lLgotICAgIC8vIEZvciBob3N0IG5hbWVzIGJpZ2dlciB0aGFuIHRoaXMsIHdlIHdv
bid0IGRvIElETiBlbmNvZGluZywgd2hpY2ggaXMgYWxtb3N0IGNlcnRhaW5seSBPSy4KLSAgICBj
b25zdCB1bnNpZ25lZCBob3N0bmFtZUJ1ZmZlckxlbmd0aCA9IDIwNDg7Ci0gICAgCi0gICAgaWYg
KHN0cmluZy5sZW5ndGgoKSA+IGhvc3RuYW1lQnVmZmVyTGVuZ3RoIHx8IGlzQWxsQVNDSUkoc3Ry
aW5nKSkgewotICAgICAgICBhcHBlbmQoYnVmZmVyLCBzdHJpbmcpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgVUNoYXIgaG9zdG5hbWVCdWZmZXJbaG9zdG5hbWVCdWZm
ZXJMZW5ndGhdOwotICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7Ci0gICAgVUlE
TkFJbmZvIHByb2Nlc3NpbmdEZXRhaWxzID0gVUlETkFfSU5GT19JTklUSUFMSVpFUjsKLSAgICBp
bnQzMl90IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPSB1aWRuYV9uYW1lVG9BU0NJSSgmVVJMUGFy
c2VyOjppbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwKLSAgICAgICAgc3RyaW5n
LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVy
LCBob3N0bmFtZUJ1ZmZlckxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmZXJyb3IpOwotICAg
IAotICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMp
IHsKLSAgICAgICAgYnVmZmVyLmFwcGVuZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0Nv
bnZlcnRlZCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLXVuc2lnbmVkIFVSTDo6aG9zdFN0YXJ0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gKG1f
cGFzc3dvcmRFbmQgPT0gbV91c2VyU3RhcnQpID8gbV9wYXNzd29yZEVuZCA6IG1fcGFzc3dvcmRF
bmQgKyAxOwotfQotCi12b2lkIFVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAg
aWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY29sb25JbmRleCA9
IHMuZmluZCgnOicpOwotICAgIGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5kKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7Ci0gICAgaWYgKCFhcHBl
bmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBzKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwotICAgIAotICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSk7
Ci0gICAgaWYgKHNsYXNoU2xhc2hOZWVkZWQpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLy8iKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5k
YXRhKCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpKTsKLSAgICBidWlsZGVyLmFwcGVuZChtX3N0
cmluZy5zdWJzdHJpbmcobV9ob3N0RW5kKSk7Ci0KLSAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxk
ZXIudG9TdHJpbmcoKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXZvaWQg
VVJMOjpyZW1vdmVQb3J0KCkKLXsKLSAgICBpZiAoIW1fcG9ydExlbmd0aCkKLSAgICAgICAgcmV0
dXJuOwotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5n
KS5sZWZ0KG1faG9zdEVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RF
bmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0K
LXZvaWQgVVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCi17Ci0gICAgaWYgKCFtX2lzVmFs
aWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgY29sb25OZWVkZWQgPSAhbV9wb3J0TGVu
Z3RoOwotICAgIHVuc2lnbmVkIHBvcnRTdGFydCA9IChjb2xvbk5lZWRlZCA/IG1faG9zdEVuZCA6
IG1faG9zdEVuZCArIDEpOwotCi0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLmxlZnQocG9ydFN0YXJ0KSwgKGNvbG9uTmVlZGVkID8gIjoiIDogIiIp
LCBTdHJpbmc6Om51bWJlcihpKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9z
dEVuZCArIG1fcG9ydExlbmd0aCkpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0K
LQotdm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQpCi17
Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZ1ZpZXcg
aG9zdE5hbWUoaG9zdEFuZFBvcnQpOwotICAgIFN0cmluZ1ZpZXcgcG9ydDsKLSAgICAKLSAgICBh
dXRvIGNvbG9uSW5kZXggPSBob3N0TmFtZS5maW5kKCc6Jyk7Ci0gICAgaWYgKGNvbG9uSW5kZXgg
IT0gbm90Rm91bmQpIHsKLSAgICAgICAgcG9ydCA9IGhvc3ROYW1lLnN1YnN0cmluZyhjb2xvbklu
ZGV4ICsgMSk7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGludCBwb3J0SW50ID0gcG9ydC50
b0ludFN0cmljdChvayk7Ci0gICAgICAgIGlmICghb2sgfHwgcG9ydEludCA8IDApCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGhvc3ROYW1lID0gaG9zdE5hbWUuc3Vic3RyaW5nKDAsIGNv
bG9uSW5kZXgpOwotICAgIH0KLQotICAgIGlmIChob3N0TmFtZS5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFVDaGFyQnVmZmVyIGVuY29kZWRIb3N0TmFtZTsKLSAgICBpZiAoIWFw
cGVuZEVuY29kZWRIb3N0bmFtZShlbmNvZGVkSG9zdE5hbWUsIGhvc3ROYW1lKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSk7Ci0KLSAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkp
OwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUu
ZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgaWYgKCFwb3J0LmlzRW1wdHko
KSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjoiKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQocG9ydCk7Ci0gICAgfQotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKTsKLQotICAgIFVSTFBh
cnNlciBwYXJzZXIoYnVpbGRlci50b1N0cmluZygpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1
bHQoKTsKLX0KLQotc3RhdGljIFN0cmluZyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhjb25zdCBT
dHJpbmcmIGlucHV0LCBib29sKCpzaG91bGRFbmNvZGUpKFVDaGFyKSkKLXsKLSAgICBhdXRvIGVu
Y29kZSA9IFtzaG91bGRFbmNvZGVdIChjb25zdCBTdHJpbmcmIGlucHV0KSB7Ci0gICAgICAgIENT
dHJpbmcgdXRmOCA9IGlucHV0LnV0ZjgoKTsKLSAgICAgICAgYXV0byogZGF0YSA9IHV0ZjguZGF0
YSgpOwotICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGF1dG8gbGVuZ3Ro
ID0gdXRmOC5sZW5ndGgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGxlbmd0
aDsgaisrKSB7Ci0gICAgICAgICAgICBhdXRvIGMgPSBkYXRhW2pdOwotICAgICAgICAgICAgaWYg
KHNob3VsZEVuY29kZShjKSkgewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJyk7
Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGln
aXQoYykpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJ
SUhleERpZ2l0KGMpKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGMpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7Ci0gICAgfTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoKCk7
ICsraSkgewotICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkRW5jb2RlKGlucHV0W2ldKSkpCi0g
ICAgICAgICAgICByZXR1cm4gZW5jb2RlKGlucHV0KTsKLSAgICB9Ci0gICAgcmV0dXJuIGlucHV0
OwotfQotCi12b2lkIFVSTDo6c2V0VXNlcihjb25zdCBTdHJpbmcmIHVzZXIpCi17Ci0gICAgaWYg
KCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkg
Y2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBl
eHBlY3RhdGlvbnMsCi0gICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0
IHRoZSB1c2VyIGxvZ2luLgotCi0gICAgdW5zaWduZWQgZW5kID0gbV91c2VyRW5kOwotICAgIGlm
ICghdXNlci5pc0VtcHR5KCkpIHsKLSAgICAgICAgU3RyaW5nIHUgPSBwZXJjZW50RW5jb2RlQ2hh
cmFjdGVycyh1c2VyLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCk7Ci0gICAgICAg
IGlmIChtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAx
KSkKLSAgICAgICAgICAgIHUgPSAiLy8iICsgdTsKLSAgICAgICAgLy8gQWRkICdAJyBpZiB3ZSBk
aWRuJ3QgaGF2ZSBvbmUgYmVmb3JlLgotICAgICAgICBpZiAoZW5kID09IG1faG9zdEVuZCB8fCAo
ZW5kID09IG1fcGFzc3dvcmRFbmQgJiYgbV9zdHJpbmdbZW5kXSAhPSAnQCcpKQotICAgICAgICAg
ICAgdS5hcHBlbmQoJ0AnKTsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyU3RhcnQpLCB1LCBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsK
LSAgICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRo
ZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0gbV9wYXNzd29y
ZEVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQotICAgICAg
ICAgICAgZW5kICs9IDE7Ci0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhl
IGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBj
aGFuZ2UuCi0gICAgICAgIGlmIChtX3VzZXJTdGFydCAhPSBlbmQpIHsKLSAgICAgICAgICAgIFVS
TFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNl
clN0YXJ0KSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAg
ICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lk
IFVSTDo6c2V0UGFzcyhjb25zdCBTdHJpbmcmIHBhc3N3b3JkKQotewotICAgIGlmICghbV9pc1Zh
bGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBlbmQgPSBtX3Bhc3N3b3JkRW5k
OwotICAgIGlmICghcGFzc3dvcmQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyBwID0gIjoi
ICsgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGFzc3dvcmQsIFVSTFBhcnNlcjo6aXNJblVzZXJJ
bmZvRW5jb2RlU2V0KSArICJAIjsKLSAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKSkKLSAgICAgICAgICAgIHAgPSAiLy8iICsgcDsK
LSAgICAgICAgLy8gRWF0IHRoZSBleGlzdGluZyAnQCcgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIGFk
ZCBvdXIgb3duLgotICAgICAgICBpZiAoZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRd
ID09ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
KG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJFbmQpLCBwLCBTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAgICAqdGhpcyA9IHBhcnNl
ci5yZXN1bHQoKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5v
dyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmIChtX3VzZXJTdGFy
dCA9PSBtX3VzZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdA
JykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBh
cnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0
byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyRW5kICE9IGVuZCkgewotICAgICAg
ICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxl
ZnQobV91c2VyRW5kKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAg
ICAgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIFVSTDo6c2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgaWRlbnRpZmllcikK
LXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6
IE9wdGltaXplIHRoZSBjYXNlIHdoZXJlIHRoZSBpZGVudGlmaWVyIGFscmVhZHkgaGFwcGVucyB0
byBiZSBlcXVhbCB0byB3aGF0IHdhcyBwYXNzZWQ/Ci0gICAgLy8gRklYTUU6IElzIGl0IGNvcnJl
Y3QgdG8gZG8gdGhpcyB3aXRob3V0IGVuY29kaW5nIGFuZCBlc2NhcGluZyBub24tQVNDSUkgY2hh
cmFjdGVycz8KLSAgICAqdGhpcyA9IFVSTFBhcnNlciB7IG1ha2VTdHJpbmcoU3RyaW5nVmlldyB7
IG1fc3RyaW5nIH0uc3Vic3RyaW5nKDAsIG1fcXVlcnlFbmQpLCAnIycsIGlkZW50aWZpZXIpIH0u
cmVzdWx0KCk7Ci19Ci0KLXZvaWQgVVJMOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKQotewot
ICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIEFTU0VSVCghbV9xdWVyeUVuZCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgo
KSA+IG1fcXVlcnlFbmQpCi0gICAgICAgIG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3F1ZXJ5
RW5kKTsKLX0KLQotdm9pZCBVUkw6OnJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCkK
LXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdHJpbmcg
PSBtX3N0cmluZy5sZWZ0KG1fcGF0aEVuZCk7Ci0gICAgbV9xdWVyeUVuZCA9IG1fcGF0aEVuZDsK
LX0KLQotdm9pZCBVUkw6OnNldFF1ZXJ5KGNvbnN0IFN0cmluZyYgcXVlcnkpCi17Ci0gICAgaWYg
KCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiAnIycgYW5kIG5v
bi1BU0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2RlZCBhbmQgZXNjYXBlZC4KLSAgICAvLyBV
c3VhbGx5LCB0aGUgcXVlcnkgaXMgZW5jb2RlZCB1c2luZyBkb2N1bWVudCBlbmNvZGluZywgbm90
IFVURi04LCBidXQgd2UgZG9uJ3QgaGF2ZQotICAgIC8vIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQg
aW4gdGhpcyBmdW5jdGlvbi4KLSAgICAvLyBodHRwczovL3dlYmtpdC5vcmcvYi8xNjExNzYKLSAg
ICBpZiAoKHF1ZXJ5LmlzRW1wdHkoKSB8fCBxdWVyeVswXSAhPSAnPycpICYmICFxdWVyeS5pc051
bGwoKSkgewotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyht
X3N0cmluZykubGVmdChtX3BhdGhFbmQpLCAiPyIsIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgcXVlcnksIFN0cmluZ1ZpZXcobV9z
dHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSkpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5y
ZXN1bHQoKTsKLSAgICB9Ci0KLX0KLQotdm9pZCBVUkw6OnNldFBhdGgoY29uc3QgU3RyaW5nJiBz
KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcg
cGF0aCA9IHM7Ci0gICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGhbMF0gIT0gJy8nKQotICAg
ICAgICBwYXRoID0gIi8iICsgcGF0aDsKLQotICAgIGF1dG8gcXVlc3Rpb25NYXJrT3JOdW1iZXJT
aWduID0gW10gKFVDaGFyIGNoYXJhY3RlcikgewotICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09
ICc/JyB8fCBjaGFyYWN0ZXIgPT0gJyMnOwotICAgIH07Ci0gICAgVVJMUGFyc2VyIHBhcnNlciht
YWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kICsgbV9wb3J0TGVu
Z3RoKSwgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGF0aCwgcXVlc3Rpb25NYXJrT3JOdW1iZXJT
aWduKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCkpKTsKLSAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJ
ZGVudGlmaWVyKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIGlmIChhLm1fcXVl
cnlFbmQgIT0gYi5tX3F1ZXJ5RW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWdu
ZWQgcXVlcnlMZW5ndGggPSBhLm1fcXVlcnlFbmQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHF1ZXJ5TGVuZ3RoOyArK2kpCi0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3Ry
aW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiBhLCBjb25z
dCBVUkwmIGIpCi17Ci0gICAgaWYgKGEucGF0aEVuZCgpICE9IGIucGF0aEVuZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCA9IGEucGF0aEVuZCgpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRoRW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGEu
c3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFy
ZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIGlmIChhLm1fc2NoZW1l
RW5kICE9IGIubV9zY2hlbWVFbmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHVuc2ln
bmVkIGhvc3RTdGFydEEgPSBhLmhvc3RTdGFydCgpOwotICAgIHVuc2lnbmVkIGhvc3RMZW5ndGhB
ID0gYS5tX2hvc3RFbmQgLSBob3N0U3RhcnRBOwotICAgIHVuc2lnbmVkIGhvc3RTdGFydEIgPSBi
Lmhvc3RTdGFydCgpOwotICAgIHVuc2lnbmVkIGhvc3RMZW5ndGhCID0gYi5tX2hvc3RFbmQgLSBi
Lmhvc3RTdGFydCgpOwotICAgIGlmIChob3N0TGVuZ3RoQSAhPSBob3N0TGVuZ3RoQikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgdGhlIHNjaGVtZQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBhLm1fc2NoZW1lRW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3Ry
aW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICAvLyBBbmQgdGhlIGhvc3QKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
aG9zdExlbmd0aEE7ICsraSkgewotICAgICAgICBpZiAoYS5zdHJpbmcoKVtob3N0U3RhcnRBICsg
aV0gIT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgaWYgKGEucG9ydCgpICE9IGIucG9ydCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBob3N0c0FyZUVxdWFsKGNv
bnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIHVuc2lnbmVkIGhvc3RTdGFydEEgPSBh
Lmhvc3RTdGFydCgpOwotICAgIHVuc2lnbmVkIGhvc3RMZW5ndGhBID0gYS5tX2hvc3RFbmQgLSBo
b3N0U3RhcnRBOwotICAgIHVuc2lnbmVkIGhvc3RTdGFydEIgPSBiLmhvc3RTdGFydCgpOwotICAg
IHVuc2lnbmVkIGhvc3RMZW5ndGhCID0gYi5tX2hvc3RFbmQgLSBob3N0U3RhcnRCOwotICAgIGlm
IChob3N0TGVuZ3RoQSAhPSBob3N0TGVuZ3RoQikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAg
aWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiAr
IGldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIFVSTDo6aXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikg
Y29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChkb21haW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICgh
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBh
dXRvIGhvc3QgPSB0aGlzLT5ob3N0KCk7Ci0gICAgaWYgKCFob3N0LmVuZHNXaXRoKGRvbWFpbikp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBob3N0Lmxlbmd0aCgpID09IGRv
bWFpbi5sZW5ndGgoKSB8fCBob3N0W2hvc3QubGVuZ3RoKCkgLSBkb21haW4ubGVuZ3RoKCkgLSAx
XSA9PSAnLic7Ci19Ci0KLVN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0
IFN0cmluZyYgaW5wdXQpCi17Ci0gICAgcmV0dXJuIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKGlu
cHV0LCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCk7Ci19Ci0KLWJvb2wgVVJMOjpp
c0hpZXJhcmNoaWNhbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBBU1NFUlQobV9zdHJpbmdbbV9zY2hlbWVFbmRdID09ICc6Jyk7Ci0g
ICAgcmV0dXJuIG1fc3RyaW5nW21fc2NoZW1lRW5kICsgMV0gPT0gJy8nOwotfQotCi12b2lkIFVS
TDo6Y29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0Ci17Ci0gICAg
Ly8gRklYTUU6IFRoaXMgdGhyb3dzIGF3YXkgdGhlIGhpZ2ggYnl0ZXMgb2YgYWxsIHRoZSBjaGFy
YWN0ZXJzIGluIHRoZSBzdHJpbmchCi0gICAgLy8gVGhhdCdzIGZpbmUgZm9yIGEgdmFsaWQgVVJM
LCB3aGljaCBpcyBhbGwgQVNDSUksIGJ1dCBub3QgZm9yIGludmFsaWQgVVJMcy4KLSAgICBidWZm
ZXIucmVzaXplKG1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBjb3B5QVNDSUkobV9zdHJpbmcsIGJ1
ZmZlci5kYXRhKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcz4KLWJvb2wg
cHJvdG9jb2xJc0ludGVybmFsKGNvbnN0IFN0cmluZ0NsYXNzJiB1cmwsIGNvbnN0IGNoYXIqIHBy
b3RvY29sKQotewotICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3
IHN0cmluZyBvYmplY3QuCi0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7
Ci0gICAgYm9vbCBpc0xlYWRpbmcgPSB0cnVlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGog
PSAwOyB1cmxbaV07ICsraSkgewotICAgICAgICAvLyBTa2lwIGxlYWRpbmcgd2hpdGVzcGFjZSBh
bmQgY29udHJvbCBjaGFyYWN0ZXJzLgotICAgICAgICBpZiAoaXNMZWFkaW5nICYmIHNob3VsZFRy
aW1Gcm9tVVJMKHVybFtpXSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaXNMZWFk
aW5nID0gZmFsc2U7Ci0KLSAgICAgICAgLy8gU2tpcCBhbnkgdGFicyBhbmQgbmV3bGluZXMuCi0g
ICAgICAgIGlmICh1cmxbaV0gPT0gJ1x0JyB8fCB1cmxbaV0gPT0gJ1xyJyB8fCB1cmxbaV0gPT0g
J1xuJykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmICghcHJvdG9jb2xbal0p
Ci0gICAgICAgICAgICByZXR1cm4gdXJsW2ldID09ICc6JzsKLSAgICAgICAgaWYgKCFpc0FTQ0lJ
QWxwaGFDYXNlbGVzc0VxdWFsKHVybFtpXSwgcHJvdG9jb2xbal0pKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgICsrajsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHBy
b3RvY29sKQotewotICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCBwcm90b2NvbCk7
Ci19Ci0KLWlubGluZSBib29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHN0cmluZywg
Y29uc3QgY2hhciogcHJvdG9jb2wpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnByb3RvY29sSXNJ
bnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsKLX0KLQotI2lmbmRlZiBOREVCVUcKLQotdm9pZCBV
Ukw6OnByaW50KCkgY29uc3QKLXsKLSAgICBwcmludGYoIiVzXG4iLCBtX3N0cmluZy51dGY4KCku
ZGF0YSgpKTsKLX0KLQotI2VuZGlmCi0KLVN0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZl
cnJlcigpIGNvbnN0Ci17Ci0gICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKLSAgICByZWZlcnJlci5z
ZXRVc2VyKFN0cmluZygpKTsKLSAgICByZWZlcnJlci5zZXRQYXNzKFN0cmluZygpKTsKLSAgICBy
ZWZlcnJlci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICByZXR1cm4gcmVmZXJyZXIu
c3RyaW5nKCk7Ci19Ci0KLWJvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0Ci17Ci0gICAgLy8g
SW5jbHVkaW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVhIHNpbmNlIGRyYWcgYW5kIGRy
b3AgdXNlcyB0aGlzIGNoZWNrCi0gICAgLy8gYW5kIGluY2x1ZGluZyBmZWVkIHdvdWxkIGFsbG93
IGZlZWRzIHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxvZwotICAgIC8vIHJlYWQgdGhl
IGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBldmVuIHdpdGhvdXQgYSBkcm9w
LgotICAgIC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVh
dFVSTEFzTG9jYWwoKSBmdW5jdGlvbi4KLSAgICByZXR1cm4gcHJvdG9jb2xJcygiZmlsZSIpOwot
fQotCi1ib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAg
IHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOwotfQotCi1ib29s
IHByb3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKQotewotICAgIHJldHVybiBwcm90
b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOwotfQotCi1ib29sIHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgYXV0byBsZW5ndGggPSB1cmwu
bGVuZ3RoKCk7Ci0gICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcg
c3RyaW5nIG9iamVjdC4KLSAgICByZXR1cm4gbGVuZ3RoID49IDUKLSAgICAgICAgJiYgaXNBU0NJ
SUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMF0sICdoJykKLSAgICAgICAgJiYgaXNBU0NJSUFscGhh
Q2FzZWxlc3NFcXVhbCh1cmxbMV0sICd0JykKLSAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxl
c3NFcXVhbCh1cmxbMl0sICd0JykKLSAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVh
bCh1cmxbM10sICdwJykKLSAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwgKGlzQVNDSUlBbHBo
YUNhc2VsZXNzRXF1YWwodXJsWzRdLCAncycpICYmIGxlbmd0aCA+PSA2ICYmIHVybFs1XSA9PSAn
OicpKTsKLX0KLQotY29uc3QgVVJMJiBibGFua1VSTCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayIpOwotICAgIHJl
dHVybiBzdGF0aWNCbGFua1VSTDsKLX0KLQotYm9vbCBVUkw6OmlzQmxhbmtVUkwoKSBjb25zdAot
ewotICAgIHJldHVybiBwcm90b2NvbElzKCJhYm91dCIpOwotfQotCi1ib29sIHBvcnRBbGxvd2Vk
KGNvbnN0IFVSTCYgdXJsKQotewotICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1
cmwucG9ydCgpOwotCi0gICAgLy8gU2luY2UgbW9zdCBVUkxzIGRvbid0IGhhdmUgYSBwb3J0LCBy
ZXR1cm4gZWFybHkgZm9yIHRoZSAibm8gcG9ydCIgY2FzZS4KLSAgICBpZiAoIXBvcnQpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gVGhpcyBibG9ja2VkIHBvcnQgbGlzdCBtYXRjaGVz
IHRoZSBwb3J0IGJsb2NraW5nIHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgotICAgIC8vIFNlZSBo
dHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFubmluZy5odG1sIGZv
ciBtb3JlIGluZm9ybWF0aW9uLgotICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBibG9ja2VkUG9y
dExpc3RbXSA9IHsKLSAgICAgICAgMSwgICAgLy8gdGNwbXV4Ci0gICAgICAgIDcsICAgIC8vIGVj
aG8KLSAgICAgICAgOSwgICAgLy8gZGlzY2FyZAotICAgICAgICAxMSwgICAvLyBzeXN0YXQKLSAg
ICAgICAgMTMsICAgLy8gZGF5dGltZQotICAgICAgICAxNSwgICAvLyBuZXRzdGF0Ci0gICAgICAg
IDE3LCAgIC8vIHFvdGQKLSAgICAgICAgMTksICAgLy8gY2hhcmdlbgotICAgICAgICAyMCwgICAv
LyBGVFAtZGF0YQotICAgICAgICAyMSwgICAvLyBGVFAtY29udHJvbAotICAgICAgICAyMiwgICAv
LyBTU0gKLSAgICAgICAgMjMsICAgLy8gdGVsbmV0Ci0gICAgICAgIDI1LCAgIC8vIFNNVFAKLSAg
ICAgICAgMzcsICAgLy8gdGltZQotICAgICAgICA0MiwgICAvLyBuYW1lCi0gICAgICAgIDQzLCAg
IC8vIG5pY25hbWUKLSAgICAgICAgNTMsICAgLy8gZG9tYWluCi0gICAgICAgIDc3LCAgIC8vIHBy
aXYtcmpzCi0gICAgICAgIDc5LCAgIC8vIGZpbmdlcgotICAgICAgICA4NywgICAvLyB0dHlsaW5r
Ci0gICAgICAgIDk1LCAgIC8vIHN1cGR1cAotICAgICAgICAxMDEsICAvLyBob3N0cmlhbWUKLSAg
ICAgICAgMTAyLCAgLy8gaXNvLXRzYXAKLSAgICAgICAgMTAzLCAgLy8gZ3BwaXRucAotICAgICAg
ICAxMDQsICAvLyBhY3ItbmVtYQotICAgICAgICAxMDksICAvLyBQT1AyCi0gICAgICAgIDExMCwg
IC8vIFBPUDMKLSAgICAgICAgMTExLCAgLy8gc3VucnBjCi0gICAgICAgIDExMywgIC8vIGF1dGgK
LSAgICAgICAgMTE1LCAgLy8gU0ZUUAotICAgICAgICAxMTcsICAvLyB1dWNwLXBhdGgKLSAgICAg
ICAgMTE5LCAgLy8gbm50cAotICAgICAgICAxMjMsICAvLyBOVFAKLSAgICAgICAgMTM1LCAgLy8g
bG9jLXNydiAvIGVwbWFwCi0gICAgICAgIDEzOSwgIC8vIG5ldGJpb3MKLSAgICAgICAgMTQzLCAg
Ly8gSU1BUDIKLSAgICAgICAgMTc5LCAgLy8gQkdQCi0gICAgICAgIDM4OSwgIC8vIExEQVAKLSAg
ICAgICAgNDY1LCAgLy8gU01UUCtTU0wKLSAgICAgICAgNTEyLCAgLy8gcHJpbnQgLyBleGVjCi0g
ICAgICAgIDUxMywgIC8vIGxvZ2luCi0gICAgICAgIDUxNCwgIC8vIHNoZWxsCi0gICAgICAgIDUx
NSwgIC8vIHByaW50ZXIKLSAgICAgICAgNTI2LCAgLy8gdGVtcG8KLSAgICAgICAgNTMwLCAgLy8g
Y291cmllcgotICAgICAgICA1MzEsICAvLyBDaGF0Ci0gICAgICAgIDUzMiwgIC8vIG5ldG5ld3MK
LSAgICAgICAgNTQwLCAgLy8gVVVDUAotICAgICAgICA1NDgsICAvLyBhZnBvdmVydGNwIFtBcHBs
ZSBhZGRpdGlvbl0KLSAgICAgICAgNTU2LCAgLy8gcmVtb3RlZnMKLSAgICAgICAgNTYzLCAgLy8g
Tk5UUCtTU0wKLSAgICAgICAgNTg3LCAgLy8gRVNNVFAKLSAgICAgICAgNjAxLCAgLy8gc3lzbG9n
LWNvbm4KLSAgICAgICAgNjM2LCAgLy8gTERBUCtTU0wKLSAgICAgICAgOTkzLCAgLy8gSU1BUCtT
U0wKLSAgICAgICAgOTk1LCAgLy8gUE9QMytTU0wKLSAgICAgICAgMjA0OSwgLy8gTkZTCi0gICAg
ICAgIDM2NTksIC8vIGFwcGxlLXNhc2wgLyBQYXNzd29yZFNlcnZlciBbQXBwbGUgYWRkaXRpb25d
Ci0gICAgICAgIDQwNDUsIC8vIGxvY2tkCi0gICAgICAgIDQxOTAsIC8vIE1hbmFnZVNpZXZlIFtB
cHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjAwMCwgLy8gWDExCi0gICAgICAgIDY2NjUsIC8vIEFs
dGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY2LCAvLyBBbHRlcm5hdGUg
SVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2NywgLy8gU3RhbmRhcmQgSVJDIFtBcHBs
ZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2OCwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRp
b25dCi0gICAgICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQotICAg
ICAgICA2Njc5LCAvLyBBbHRlcm5hdGUgSVJDIFNTTCBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAg
IDY2OTcsIC8vIElSQytTU0wgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICBpbnZhbGlkUG9ydE51
bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJlcnMKLSAgICB9Owot
Ci0gICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBvcnQgbGlzdCwgYWxs
b3cgaXQuCi0gICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4oYmxvY2tlZFBvcnRM
aXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRMaXN0KSkpOwotICAgIGlmICghc3RkOjpiaW5hcnlf
c2VhcmNoKHN0ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRM
aXN0KSwgcG9ydC52YWx1ZSgpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBBbGxv
dyBwb3J0cyAyMSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxhIGRvZXMuCi0gICAgaWYg
KChwb3J0LnZhbHVlKCkgPT0gMjEgfHwgcG9ydC52YWx1ZSgpID09IDIyKSAmJiB1cmwucHJvdG9j
b2xJcygiZnRwIikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gQWxsb3cgYW55IHBv
cnQgbnVtYmVyIGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJlciBpcyBpZ25vcmVk
LgotICAgIGlmICh1cmwucHJvdG9jb2xJcygiZmlsZSIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29u
c3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgQVNTRVJUKHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJk
YXRhIikpOwotCi0gICAgLy8gRklYTUU6IFdoYXQncyB0aGUgcmlnaHQgYmVoYXZpb3Igd2hlbiB0
aGUgVVJMIGhhcyBhIGNvbW1hIGZpcnN0LCBidXQgYSBzZW1pY29sb24gbGF0ZXI/Ci0gICAgLy8g
Q3VycmVudGx5IHRoaXMgY29kZSB3aWxsIGJyZWFrIGF0IHRoZSBzZW1pY29sb24gaW4gdGhhdCBj
YXNlLiBOb3Qgc3VyZSB0aGF0J3MgY29ycmVjdC4KLSAgICBhdXRvIGluZGV4ID0gdXJsLmZpbmQo
JzsnLCA1KTsKLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIGluZGV4ID0gdXJs
LmZpbmQoJywnLCA1KTsKLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKLSAgICAgICAgLy8g
RklYTUU6IFRoZXJlIHdhcyBhbiBvbGQgY29tbWVudCBoZXJlIHRoYXQgbWFkZSBpdCBzb3VuZCBs
aWtlIHRoaXMgc2hvdWxkIGJlIHJldHVybmluZyB0ZXh0L3BsYWluLgotICAgICAgICAvLyBCdXQg
d2UgaGF2ZSBiZWVuIHJldHVybmluZyBlbXB0eSBzdHJpbmcgaGVyZSBmb3Igc29tZSB0aW1lLCBz
byBub3QgY2hhbmdpbmcgaXRzIGJlaGF2aW9yIGF0IHRoaXMgdGltZS4KLSAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7Ci0gICAgfQotICAgIGlmIChpbmRleCA9PSA1KQotICAgICAgICByZXR1
cm4gInRleHQvcGxhaW4iX3M7Ci0gICAgQVNTRVJUKGluZGV4ID49IDUpOwotICAgIHJldHVybiB1
cmwuc3Vic3RyaW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLX0K
LQotU3RyaW5nIFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxl
bmd0aCkgY29uc3QKLXsKLSAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkgPD0gbGVuZ3RoKQotICAg
ICAgICByZXR1cm4gc3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gc3RyaW5nKCkubGVmdChsZW5ndGgg
LyAyIC0gMSkgKyAiLi4uIiArIHN0cmluZygpLnJpZ2h0KGxlbmd0aCAvIDIgLSAyKTsKLX0KLQot
VVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBh
cnQpCi17Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgIndlYmtpdC1mYWtlLXVybDovLyIgKyBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgKyAnLycgKyByZWxhdGl2ZVBhcnQpOwotfQotCi1VUkwg
VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCi17
Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgImZpbGU6Ly8vIiArIGZpbGVQYXRoKTsKLX0KLQotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVVJMJiB1cmwpCi17Ci0g
ICAgdHMgPDwgdXJsLnN0cmluZygpOwotICAgIHJldHVybiB0czsKLX0KLQotI2lmICFQTEFURk9S
TShDT0NPQSkgJiYgIVVTRShTT1VQKQotc3RhdGljIGJvb2wgaXNJUHY0QWRkcmVzcyhTdHJpbmdW
aWV3IHN0cmluZykKLXsKLSAgICBhdXRvIGNvdW50ID0gMDsKLQotICAgIGZvciAoY29uc3QgYXV0
byBvY3RldCA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCcuJykpIHsKLSAgICAg
ICAgaWYgKGNvdW50ID49IDQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
Y29uc3QgYXV0byBsZW5ndGggPSBvY3RldC5sZW5ndGgoKTsKLSAgICAgICAgaWYgKCFsZW5ndGgg
fHwgbGVuZ3RoID4gMykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBhdXRv
IHZhbHVlID0gMDsKLSAgICAgICAgZm9yIChhdXRvIGkgPSAwdTsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICBjb25zdCBhdXRvIGRpZ2l0ID0gb2N0ZXRbaV07Ci0KLSAgICAgICAgICAg
IC8vIFByb2hpYml0IGxlYWRpbmcgemVyb2VzLgotICAgICAgICAgICAgaWYgKGRpZ2l0ID4gJzkn
IHx8IGRpZ2l0IDwgKCFpICYmIGxlbmd0aCA+IDEgPyAnMScgOiAnMCcpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgdmFsdWUgPSAxMCAqIHZhbHVlICsgKGRp
Z2l0IC0gJzAnKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh2YWx1ZSA+IDI1NSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBjb3VudCsrOwotICAgIH0KLQotICAgIHJl
dHVybiAoY291bnQgPT0gNCk7Ci19Ci0KLXN0YXRpYyBib29sIGlzSVB2NkFkZHJlc3MoU3RyaW5n
VmlldyBzdHJpbmcpCi17Ci0gICAgZW51bSBTa2lwU3RhdGUgeyBOb25lLCBXaWxsU2tpcCwgU2tp
cHBpbmcsIFNraXBwZWQsIEZpbmFsIH07Ci0gICAgYXV0byBza2lwU3RhdGUgPSBOb25lOwotICAg
IGF1dG8gY291bnQgPSAwOwotCi0gICAgZm9yIChjb25zdCBhdXRvIGhleHRldCA6IHN0cmluZy5z
cGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCc6JykpIHsKLSAgICAgICAgaWYgKGNvdW50ID49IDgg
fHwgc2tpcFN0YXRlID09IEZpbmFsKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gaGV4dGV0Lmxlbmd0aCgpOwotICAgICAgICBpZiAoIWxl
bmd0aCkgewotICAgICAgICAgICAgLy8gOjogbWF5IGJlIHVzZWQgYW55d2hlcmUgdG8gc2tpcCAx
IHRvIDggaGV4dGV0cywgYnV0IG9ubHkgb25jZS4KLSAgICAgICAgICAgIGlmIChza2lwU3RhdGUg
PT0gU2tpcHBlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAg
IGlmIChza2lwU3RhdGUgPT0gTm9uZSkKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSAhY291
bnQgPyBXaWxsU2tpcCA6IFNraXBwaW5nOwotICAgICAgICAgICAgZWxzZSBpZiAoc2tpcFN0YXRl
ID09IFdpbGxTa2lwKQotICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IFNraXBwaW5nOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IEZpbmFsOwotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2tpcFN0YXRlID09IFdp
bGxTa2lwKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChza2lwU3Rh
dGUgPT0gU2tpcHBpbmcpCi0gICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGVkOwotCi0gICAg
ICAgIGlmIChsZW5ndGggPiA0KSB7Ci0gICAgICAgICAgICAvLyBBbiBJUHY0IGFkZHJlc3MgbWF5
IGJlIHVzZWQgaW4gcGxhY2Ugb2YgdGhlIGZpbmFsIHR3byBoZXh0ZXRzLgotICAgICAgICAgICAg
aWYgKChza2lwU3RhdGUgPT0gTm9uZSAmJiBjb3VudCAhPSA2KSB8fCAoc2tpcFN0YXRlID09IFNr
aXBwZWQgJiYgY291bnQgPj0gNikgfHwgIWlzSVB2NEFkZHJlc3MoaGV4dGV0KSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHNraXBTdGF0ZSA9IEZpbmFsOwot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8gY29kZVVuaXQgOiBoZXh0ZXQuY29kZVVuaXRzKCkpIHsKLSAgICAgICAgICAgIC8vIElQdjYg
YWxsb3dzIGxlYWRpbmcgemVyb2VzLgotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQo
Y29kZVVuaXQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGNvdW50Kys7Ci0gICAgfQotCi0gICAgcmV0dXJuIChjb3VudCA9PSA4ICYmIHNraXBT
dGF0ZSA9PSBOb25lKSB8fCBza2lwU3RhdGUgPT0gU2tpcHBlZCB8fCBza2lwU3RhdGUgPT0gRmlu
YWw7Ci19Ci0KLWJvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewot
ICAgIGlmIChob3N0LmZpbmQoJzonKSA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIGlzSVB2
NEFkZHJlc3MoaG9zdCk7Ci0KLSAgICByZXR1cm4gaXNJUHY2QWRkcmVzcyhob3N0KTsKLX0KLSNl
bmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjBlMzhhNzFiNjFiNGZkYTgxNmI3NGQ1MzM5MzVkZjQz
MWI2NmQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzk3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2lmIFVTRShDRikKLXR5cGVkZWYgY29u
c3Qgc3RydWN0IF9fQ0ZVUkwqIENGVVJMUmVmOwotI2VuZGlmCi0KLSNpZiBVU0UoU09VUCkKLSNp
bmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgotI2VuZGlmCi0KLSNpZiBVU0UoRk9VTkRBVElPTikK
LU9CSkNfQ0xBU1MgTlNVUkw7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0
U3RyZWFtOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFVSTFRleHRFbmNvZGlu
ZyB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gZW5jb2RlRm9yVVJMUGFy
c2luZyhTdHJpbmdWaWV3KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB+VVJMVGV4dEVuY29kaW5n
KCkgeyB9OwotfTsKLQotc3RydWN0IFVSTEhhc2g7Ci0KLWNsYXNzIFVSTCB7Ci1wdWJsaWM6Ci0g
ICAgLy8gR2VuZXJhdGVzIGEgVVJMIHdoaWNoIGNvbnRhaW5zIGEgbnVsbCBzdHJpbmcuCi0gICAg
VVJMKCkgeyBpbnZhbGlkYXRlKCk7IH0KLQotICAgIGV4cGxpY2l0IFVSTChXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
IHsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBz
dHJpbmcoKS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Ci0KLSAgICAvLyBSZXNvbHZlcyB0
aGUgcmVsYXRpdmUgVVJMIHdpdGggdGhlIGdpdmVuIGJhc2UgVVJMLiBJZiBwcm92aWRlZCwgdGhl
Ci0gICAgLy8gVVJMVGV4dEVuY29kaW5nIGlzIHVzZWQgdG8gZW5jb2RlIG5vbi1BU0NJSSBjaGFy
YWNlcnMuIFRoZSBiYXNlIFVSTCBjYW4gYmUKLSAgICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGlj
aCBjYXNlIHRoZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcwotICAgIC8vIGFi
c29sdXRlLgotICAgIC8vIEZJWE1FOiBJZiB0aGUgYmFzZSBVUkwgaXMgaW52YWxpZCwgdGhpcyBh
bHdheXMgY3JlYXRlcyBhbiBpbnZhbGlkCi0gICAgLy8gVVJMLiBJbnN0ZWFkIEkgdGhpbmsgaXQg
d291bGQgYmUgYmV0dGVyIHRvIHRyZWF0IGFsbCBpbnZhbGlkIGJhc2UgVVJMcwotICAgIC8vIHRo
ZSBzYW1lIHdheSB3ZSB0cmVhdGUgbnVsbCBhbmQgZW1wdHkgYmFzZSBVUkxzLgotICAgIFdFQkNP
UkVfRVhQT1JUIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNv
bnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBVUkwgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFVSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0
cmluZyYpOwotCi0gICAgU3RyaW5nIHN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0Owot
Ci0gICAgLy8gRklYTUU6IFRoZSBhYm92ZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhcm1vbml6ZWQg
c28gdGhhdCBwYXNzaW5nIGEKLSAgICAvLyBiYXNlIG9mIG51bGwgb3IgdGhlIGVtcHR5IHN0cmlu
ZyBnaXZlcyB0aGUgc2FtZSByZXN1bHQgYXMgdGhlCi0gICAgLy8gc3RhbmRhcmQgU3RyaW5nIGNv
bnN0cnVjdG9yLgotCi0gICAgLy8gTWFrZXMgYSBkZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5
b3UgbmVlZCB0byB1c2UgYSBVUkwgb24gYW5vdGhlcgotICAgIC8vIHRocmVhZC4gU2luY2UgdGhl
IHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFibGUsIHRoZXJlJ3MKLSAg
ICAvLyBubyBvdGhlciByZWFzb24gdG8gZXZlciBwcmVmZXIgaXNvbGF0ZWRDb3B5KCkgb3ZlciBw
bGFpbiBvbGQgYXNzaWdubWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBVUkwgaXNvbGF0ZWRDb3B5
KCkgY29uc3Q7Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0OwotICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0OwotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyB0cnVl
IGlmIHlvdSBjYW4gc2V0IHRoZSBob3N0IGFuZCBwb3J0IGZvciB0aGUgVVJMLgotICAgIC8vIE5v
bi1oaWVyYXJjaGljYWwgVVJMcyBkb24ndCBoYXZlIGEgaG9zdCBhbmQgcG9ydC4KLSAgICBib29s
IGNhblNldEhvc3RPclBvcnQoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9Ci0K
LSAgICBib29sIGNhblNldFBhdGhuYW1lKCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwo
KTsgfQotICAgIGJvb2wgaXNIaWVyYXJjaGljYWwoKSBjb25zdDsKLQotICAgIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLQotICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3Ro
ID0gMTAyNCkgY29uc3Q7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmdWaWV3IHByb3RvY29s
KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBob3N0KCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBob3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHVzZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
cGFzcygpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXRoKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHF1ZXJ5KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7Ci0KLSAgICBib29sIGhhc1VzZXJuYW1l
KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OwotICAgIGJvb2wgaGFzUXVl
cnkoKSBjb25zdDsKLSAgICBib29sIGhhc0ZyYWdtZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQ
YXRoKCkgY29uc3Q7Ci0KLSAgICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzKCksIHRoZXNlIGZ1
bmN0aW9ucyBkb24ndCBkZWNvZGUgZXNjYXBlIHNlcXVlbmNlcy4KLSAgICAvLyBUaGlzIGlzIG5l
Y2Vzc2FyeSBmb3IgYWNjdXJhdGUgcm91bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5jb2RpbmcgZG9l
c24ndCBlbmNvZGUgJyUnIGNoYXJhY3RlcnMuCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGVu
Y29kZWRVc2VyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGVuY29kZWRQYXNz
KCkgY29uc3Q7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYmFzZUFzU3RyaW5nKCkgY29u
c3Q7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsK
LQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBVUkwncyBwcm90b2NvbCBpcyB0
aGUgc2FtZSBhcyB0aGUgbnVsbC0KLSAgICAvLyB0ZXJtaW5hdGVkIEFTQ0lJIGFyZ3VtZW50LiBU
aGUgYXJndW1lbnQgbXVzdCBiZSBsb3dlci1jYXNlLgotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
cHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7Ci0gICAgYm9vbCBwcm90b2NvbElzKFN0cmlu
Z1ZpZXcpIGNvbnN0OwotICAgIGJvb2wgcHJvdG9jb2xJc0Jsb2IoKSBjb25zdCB7IHJldHVybiBw
cm90b2NvbElzKCJibG9iIik7IH0KLSAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNCbGFua1VSTCgpIGNvbnN0OwotICAgIGJvb2wg
Y2Fubm90QmVBQmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fubm90QmVBQmFzZVVSTDsgfQot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYp
IGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRQcm90b2NvbChjb25zdCBTdHJp
bmcmKTsKLSAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHJlbW92
ZVBvcnQoKTsKLSAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOwotCi0gICAgLy8gSW5w
dXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCi0gICAgdm9pZCBzZXRIb3N0
QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKLQotICAgIHZvaWQgc2V0VXNlcihjb25zdCBTdHJpbmcm
KTsKLSAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBJZiB5b3UgcGFz
cyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0
aAotICAgIC8vIHdpbGwgYmUgIi8iLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF0aChj
b25zdCBTdHJpbmcmKTsKLQotICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0aCBhIHF1ZXN0
aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVkCi0gICAgLy8gZm9yIHlvdS4g
U2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZlIGEgIj8iIGlu
IHRoZQotICAgIC8vIFVSTCAod2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xlYXIgdGhlIHF1
ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRRdWVy
eShjb25zdCBTdHJpbmcmKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RnJhZ21lbnRJ
ZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVF1ZXJ5
QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyk7Ci0KLSAgICB1bnNpZ25lZCBwYXRoU3RhcnQo
KSBjb25zdDsKLSAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0
aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7Ci0KLSAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkg
Y29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KLQotI2lmIFVTRShDRikKLSAgICBXRUJDT1JFX0VY
UE9SVCBVUkwoQ0ZVUkxSZWYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFJl
Zj4gY3JlYXRlQ0ZVUkwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKFNPVVApCi0gICAgVVJM
KFNvdXBVUkkqKTsKLSAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IGNyZWF0ZVNvdXBVUkkoKSBjb25z
dDsKLSNlbmRpZgotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJM
KE5TVVJMKik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgTlNVUkwqKCkgY29uc3Q7Ci0j
ZW5kaWYKLSNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsg
cmV0dXJuIHN0cmluZygpOyB9Ci0jZW5kaWYKLQotI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIHBy
aW50KCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgVVJMJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXImKTsKLQotcHJp
dmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVVJMUGFyc2VyOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgaW52YWxpZGF0ZSgpOwotICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5n
JiwgY29uc3QgY2hhciopOwotICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+
JiBidWZmZXIpIGNvbnN0OwotICAgIHVuc2lnbmVkIGhvc3RTdGFydCgpIGNvbnN0OwotCi0gICAg
V0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmll
cihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBmcmllbmQgYm9v
bCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBj
b25zdCBVUkwmKTsKLQotICAgIFN0cmluZyBtX3N0cmluZzsKLQotICAgIHVuc2lnbmVkIG1faXNW
YWxpZCA6IDE7Ci0gICAgdW5zaWduZWQgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKLSAg
ICB1bnNpZ25lZCBtX2Nhbm5vdEJlQUJhc2VVUkwgOiAxOwotCi0gICAgLy8gVGhpcyBpcyBvdXQg
b2Ygb3JkZXIgdG8gYWxpZ24gdGhlIGJpdHMgYmV0dGVyLiBUaGUgcG9ydCBpcyBhZnRlciB0aGUg
aG9zdC4KLSAgICB1bnNpZ25lZCBtX3BvcnRMZW5ndGggOiAzOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbWF4UG9ydExlbmd0aCA9ICgxIDw8IDMpIC0gMTsKLQotICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbWF4U2NoZW1lTGVuZ3RoID0gKDEgPDwgMjYpIC0gMTsKLSAgICB1
bnNpZ25lZCBtX3NjaGVtZUVuZCA6IDI2OwotICAgIHVuc2lnbmVkIG1fdXNlclN0YXJ0OwotICAg
IHVuc2lnbmVkIG1fdXNlckVuZDsKLSAgICB1bnNpZ25lZCBtX3Bhc3N3b3JkRW5kOwotICAgIHVu
c2lnbmVkIG1faG9zdEVuZDsKLSAgICB1bnNpZ25lZCBtX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAg
ICB1bnNpZ25lZCBtX3BhdGhFbmQ7Ci0gICAgdW5zaWduZWQgbV9xdWVyeUVuZDsKLX07Ci0KLXN0
YXRpY19hc3NlcnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6ZW9mKHVu
c2lnbmVkKSwgIlVSTCBzaG91bGQgc3RheSBzbWFsbCIpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgRW5j
b2Rlcj4KLXZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBl
bmNvZGVyIDw8IG1fc3RyaW5nOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wg
VVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCi17Ci0gICAgYXV0byBvcHRp
b25hbFVSTCA9IFVSTDo6ZGVjb2RlKGRlY29kZXIpOwotICAgIGlmICghb3B0aW9uYWxVUkwpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVSTCk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgotc3RkOjpvcHRp
b25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgU3RyaW5nIHN0
cmluZzsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmluZykpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgc3RyaW5nKTsKLX0KLQotV0VCQ09S
RV9FWFBPUlQgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBlcXVhbElnbm9yaW5nUXVlcnlBbmRG
cmFnbWVudChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgcHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotV0VCQ09S
RV9FWFBPUlQgYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotCi1X
RUJDT1JFX0VYUE9SVCBjb25zdCBVUkwmIGJsYW5rVVJMKCk7Ci0KLS8vIEZ1bmN0aW9ucyB0byBk
byBVUkwgb3BlcmF0aW9ucyBvbiBzdHJpbmdzLgotLy8gVGhlc2UgYXJlIG9wZXJhdGlvbnMgdGhh
dCBhcmVuJ3QgZmFzdGVyIG9uIGEgcGFyc2VkIFVSTC4KLS8vIFRoZXNlIGFyZSBhbHNvIGRpZmZl
cmVudCBmcm9tIHRoZSBVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCByZXF1aXJlIHRo
ZSBzdHJpbmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgotLy8gVGhpcyBpcyBlc3Bl
Y2lhbGx5IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90IG5l
Y2Vzc2FyaWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgVVJMLgotCi1XRUJDT1JFX0VYUE9SVCBib29s
IHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKTsKLVdF
QkNPUkVfRVhQT1JUIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwp
OwotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCk7Ci1XRUJDT1JFX0VY
UE9SVCBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOwotCi1z
dGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcg
cHJvdG9jb2wpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
dWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCk7Ci1XRUJDT1JFX0VYUE9SVCBib29s
IHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYpOyAvLyBCbGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQg
bmV2ZXIgYmUgdXNlZCBmb3IgV2ViIHJlc291cmNlcy4KLQotV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWdpc3RlckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xGb3JUZXN0aW5nKHVpbnQxNl90IHBvcnQsIGNv
bnN0IFN0cmluZyYgcHJvdG9jb2wpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7Ci0KLWJvb2wgaXNWYWxpZFByb3RvY29sKGNv
bnN0IFN0cmluZyYpOwotCi1TdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcm
IHVybCk7Ci0KLS8vIEZJWE1FOiBUaGlzIGlzIGEgd3JvbmcgY29uY2VwdCB0byBleHBvc2UsIGRp
ZmZlcmVudCBwYXJ0cyBvZiBhIFVSTCBuZWVkIGRpZmZlcmVudCBlc2NhcGluZyBwZXIgdGhlIFVS
TCBTdGFuZGFyZC4KLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBlU2Vx
dWVuY2VzKGNvbnN0IFN0cmluZyYpOwotCi0vLyBJbmxpbmVzLgotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIHJldHVybiBhLnN0cmlu
ZygpID09IGIuc3RyaW5nKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJM
JiBhLCBjb25zdCBTdHJpbmcmIGIpCi17Ci0gICAgcmV0dXJuIGEuc3RyaW5nKCkgPT0gYjsKLX0K
LQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFVSTCYgYikK
LXsKLSAgICByZXR1cm4gYSA9PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygp
ICE9IGIuc3RyaW5nKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiBh
LCBjb25zdCBTdHJpbmcmIGIpCi17Ci0gICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYjsKLX0KLQot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFVSTCYgYikKLXsK
LSAgICByZXR1cm4gYSAhPSBiLnN0cmluZygpOwotfQotCi0vLyBJbmxpbmUgdmVyc2lvbnMgb2Yg
c29tZSBub24tR29vZ2xlVVJMIGZ1bmN0aW9ucyBzbyB3ZSBjYW4gZ2V0IGlubGluaW5nCi0vLyB3
aXRob3V0IGhhdmluZyB0byBoYXZlIGEgbG90IG9mIHVnbHkgaWZkZWZzIGluIHRoZSBjbGFzcyBk
ZWZpbml0aW9uLgotCi1pbmxpbmUgYm9vbCBVUkw6OmlzTnVsbCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fc3RyaW5nLmlzTnVsbCgpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OmlzRW1wdHkoKSBj
b25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7Ci19Ci0KLWlubGluZSBib29s
IFVSTDo6aXNWYWxpZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faXNWYWxpZDsKLX0KLQotaW5s
aW5lIGJvb2wgVVJMOjpoYXNQYXRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXRoRW5kICE9
IG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpoYXNVc2Vy
bmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdXNlckVuZCA+IG1fdXNlclN0YXJ0OwotfQot
Ci1pbmxpbmUgYm9vbCBVUkw6Omhhc1Bhc3N3b3JkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9w
YXNzd29yZEVuZCA+IChtX3VzZXJFbmQgKyAxKTsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpoYXNR
dWVyeSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcXVlcnlFbmQgPiBtX3BhdGhFbmQ7Ci19Ci0K
LWlubGluZSBib29sIFVSTDo6aGFzRnJhZ21lbnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2lz
VmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kOwotfQotCi1pbmxpbmUgYm9v
bCBVUkw6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3By
b3RvY29sSXNJbkhUVFBGYW1pbHk7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhTdGFy
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKLX0KLQot
aW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aEVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0
aEVuZDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aEFmdGVyTGFzdFNsYXNoKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci19Ci0KLVdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBVUkwmKTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLXRlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPFdlYkNvcmU6OlVSTD47Ci10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdl
YkNvcmU6OlVSTD47Ci19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTEhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTEhhc2gu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFkMGFiOTZkYTM1ZDMxYWM4ZGI0ZWI0
ZGFiZDNmNGUxNTkyYjgxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpZm5kZWYgVVJMSGFzaF9oCi0jZGVmaW5lIFVSTEhhc2hfaAotCi0jaW5jbHVkZSAi
VVJMLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBzdHJ1Y3QgVVJM
SGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFVSTCYga2V5KQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5LnN0cmluZygpLmltcGwoKS0+aGFzaCgpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVJMJiBhLCBjb25z
dCBVUkwmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoOjplcXVh
bChhLnN0cmluZygpLCBiLnN0cmluZygpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotLy8gVVJMSGFz
aCBpcyB0aGUgZGVmYXVsdCBoYXNoIGZvciBTdHJpbmcKLXRlbXBsYXRlPD4gc3RydWN0IERlZmF1
bHRIYXNoPFdlYkNvcmU6OlVSTD4gewotICAgIHVzaW5nIEhhc2ggPSBXZWJDb3JlOjpVUkxIYXNo
OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+IDogU2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPFdlYkNvcmU6OlVSTD4geyB9OwotCi19IC8vIG5hbWVzcGFjZSBX
VEYKLQotI2VuZGlmIC8vIFVSTEhhc2hfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YmFjNDlkOWI2NWRlOGIxMDRkNWE2
Zjc1YjI1ODBiOGI4OTJjNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDI5MjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2lu
Y2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgotI2luY2x1ZGUgPGFycmF5PgotI2lu
Y2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KLSNpbmNsdWRlIDx1bmlj
b2RlL3V0eXBlcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNkZWZpbmUgVVJMX1BBUlNF
Ul9ERUJVR0dJTkcgMAotCi0jaWYgVVJMX1BBUlNFUl9ERUJVR0dJTkcKLSNkZWZpbmUgVVJMX1BB
UlNFUl9MT0coLi4uKSBMT0coVVJMUGFyc2VyLCBfX1ZBX0FSR1NfXykKLSNlbHNlCi0jZGVmaW5l
IFVSTF9QQVJTRVJfTE9HKC4uLikKLSNlbmRpZgotICAgIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KLWNsYXNzIENvZGVQb2ludEl0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICBBTFdB
WVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yKCkgeyB9Ci0gICAgQUxXQVlTX0lOTElORSBDb2Rl
UG9pbnRJdGVyYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBiZWdpbiwgY29uc3QgQ2hhcmFjdGVy
VHlwZSogZW5kKQotICAgICAgICA6IG1fYmVnaW4oYmVnaW4pCi0gICAgICAgICwgbV9lbmQoZW5k
KQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRv
cihjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgYmVnaW4sIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
JiBlbmQpCi0gICAgICAgIDogQ29kZVBvaW50SXRlcmF0b3IoYmVnaW4ubV9iZWdpbiwgZW5kLm1f
YmVnaW4pCi0gICAgewotICAgICAgICBBU1NFUlQoZW5kLm1fYmVnaW4gPj0gYmVnaW4ubV9iZWdp
bik7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgVUNoYXIzMiBvcGVyYXRvciooKSBj
b25zdDsKLSAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlUG9pbnRJdGVy
YXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9iZWdpbiA9PSBvdGhl
ci5tX2JlZ2luCi0gICAgICAgICAgICAmJiBtX2VuZCA9PSBvdGhlci5tX2VuZDsKLSAgICB9Ci0g
ICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3Im
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotICAgIAotICAgIEFM
V0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBDb2RlUG9pbnRJ
dGVyYXRvciYgb3RoZXIpCi0gICAgewotICAgICAgICBtX2JlZ2luID0gb3RoZXIubV9iZWdpbjsK
LSAgICAgICAgbV9lbmQgPSBvdGhlci5tX2VuZDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBhdEVuZCgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV9iZWdpbiA8PSBtX2VuZCk7Ci0gICAgICAgIHJldHVybiBtX2JlZ2luID49IG1f
ZW5kOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBjb2RlVW5pdHNTaW5j
ZShjb25zdCBDaGFyYWN0ZXJUeXBlKiByZWZlcmVuY2UpIGNvbnN0Ci0gICAgewotICAgICAgICBB
U1NFUlQobV9iZWdpbiA+PSByZWZlcmVuY2UpOwotICAgICAgICByZXR1cm4gbV9iZWdpbiAtIHJl
ZmVyZW5jZTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBjb2RlVW5pdHNTaW5j
ZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gY29kZVVuaXRzU2luY2Uob3RoZXIubV9iZWdpbik7Ci0gICAgfQotICAgIAotcHJpdmF0
ZToKLSAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2JlZ2luIHsgbnVsbHB0ciB9OwotICAgIGNv
bnN0IENoYXJhY3RlclR5cGUqIG1fZW5kIHsgbnVsbHB0ciB9OwotfTsKLQotdGVtcGxhdGU8Pgot
QUxXQVlTX0lOTElORSBVQ2hhcjMyIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPjo6b3BlcmF0b3Iq
KCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWF0RW5kKCkpOwotICAgIHJldHVybiAqbV9iZWdpbjsK
LX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPExD
aGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgotewotICAgIG1fYmVnaW4r
KzsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgVUNo
YXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj46Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKCFhdEVuZCgpKTsKLSAgICBVQ2hhcjMyIGM7Ci0gICAgVTE2X0dFVChtX2JlZ2luLCAw
LCAwLCBtX2VuZCAtIG1fYmVnaW4sIGMpOwotICAgIHJldHVybiBjOwotfQotCi10ZW1wbGF0ZTw+
Ci1BTFdBWVNfSU5MSU5FIGF1dG8gQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+OjpvcGVyYXRvcisr
KCkgLT4gQ29kZVBvaW50SXRlcmF0b3ImCi17Ci0gICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgc2l6
ZV90IGxlbmd0aCA9IG1fZW5kIC0gbV9iZWdpbjsKLSAgICBVMTZfRldEXzEobV9iZWdpbiwgaSwg
bGVuZ3RoKTsKLSAgICBtX2JlZ2luICs9IGk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotICAgIAot
QUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBhcHBlbmRDb2RlUG9pbnQoVmVjdG9yPFVDaGFyPiYg
ZGVzdGluYXRpb24sIFVDaGFyMzIgY29kZVBvaW50KQotewotICAgIGlmIChVX0lTX0JNUChjb2Rl
UG9pbnQpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4o
Y29kZVBvaW50KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZGVzdGluYXRpb24ucmVz
ZXJ2ZUNhcGFjaXR5KGRlc3RpbmF0aW9uLnNpemUoKSArIDIpOwotICAgIGRlc3RpbmF0aW9uLnVu
Y2hlY2tlZEFwcGVuZChVMTZfTEVBRChjb2RlUG9pbnQpKTsKLSAgICBkZXN0aW5hdGlvbi51bmNo
ZWNrZWRBcHBlbmQoVTE2X1RSQUlMKGNvZGVQb2ludCkpOwotfQotCi1lbnVtIFVSTENoYXJhY3Rl
ckNsYXNzIHsKLSAgICBVc2VySW5mbyA9IDB4MSwKLSAgICBEZWZhdWx0ID0gMHgyLAotICAgIEZv
cmJpZGRlbkhvc3QgPSAweDQsCi0gICAgUXVlcnlQZXJjZW50ID0gMHg4LAotICAgIFNsYXNoUXVl
c3Rpb25Pckhhc2ggPSAweDEwLAotICAgIFZhbGlkU2NoZW1lID0gMHgyMCwKLX07Ci0KLXN0YXRp
YyBjb25zdCB1aW50OF90IGNoYXJhY3RlckNsYXNzVGFibGVbMjU2XSA9IHsKLSAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweDAKLSAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MQotICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgyCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4NAotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg1
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDYKLSAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NwotICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg4Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHg5Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHhBCi0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEIKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQsIC8vIDB4QwotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2Vu
dCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4RAotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCwgLy8gMHhFCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweEYKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTAKLSAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTEKLSAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTIKLSAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQsIC8vIDB4MTQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQs
IC8vIDB4MTUKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTYK
LSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTcKLSAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTgKLSAgICBVc2VySW5mbyB8IERl
ZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTkKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQsIC8vIDB4MUEKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4MUIKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
MUMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUQKLSAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUUKLSAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUYKLSAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnICcKLSAgICAwLCAvLyAnIScKLSAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vICciJwotICAgIFVzZXJJbmZv
IHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IFNsYXNoUXVlc3Rpb25Pckhhc2ggfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAnIycKLSAgICAwLCAvLyAnJCcKLSAgICBGb3JiaWRkZW5Ib3N0LCAvLyAnJScK
LSAgICAwLCAvLyAnJicKLSAgICAwLCAvLyAnXCcnCi0gICAgMCwgLy8gJygnCi0gICAgMCwgLy8g
JyknCi0gICAgMCwgLy8gJyonCi0gICAgVmFsaWRTY2hlbWUsIC8vICcrJwotICAgIDAsIC8vICcs
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnLScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJy4nCi0gICAg
VXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJy8nCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICcwJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMScKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJzInCi0gICAgVmFsaWRTY2hlbWUsIC8vICczJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnNCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzUnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc2
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnNycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzgnCi0gICAg
VmFsaWRTY2hlbWUsIC8vICc5JwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJzon
Ci0gICAgVXNlckluZm8sIC8vICc7JwotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVy
Y2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vICc8JwotICAgIFVzZXJJbmZvLCAvLyAnPScKLSAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnPicK
LSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVu
SG9zdCwgLy8gJz8nCi0gICAgVXNlckluZm8gfCBGb3JiaWRkZW5Ib3N0LCAvLyAnQCcKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ0EnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdCJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnQycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0QnCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICdFJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnRicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0cnCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdIJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSScKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ0onCi0gICAgVmFsaWRTY2hlbWUsIC8vICdLJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnTCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ00nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdO
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnTycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1AnCi0gICAg
VmFsaWRTY2hlbWUsIC8vICdRJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnUicKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJ1MnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdUJwotICAgIFZhbGlkU2NoZW1lLCAv
LyAnVScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1YnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdXJwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAnWCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1knCi0gICAgVmFs
aWRTY2hlbWUsIC8vICdaJwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ1snCi0g
ICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ1xc
JwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ10nCi0gICAgVXNlckluZm8sIC8v
ICdeJwotICAgIDAsIC8vICdfJwotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCwgLy8gJ2AnCi0gICAg
VmFsaWRTY2hlbWUsIC8vICdhJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnYicKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJ2MnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdkJwotICAgIFZhbGlkU2NoZW1lLCAv
LyAnZScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2YnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdnJwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAnaCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2knCi0gICAgVmFs
aWRTY2hlbWUsIC8vICdqJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnaycKLSAgICBWYWxpZFNjaGVt
ZSwgLy8gJ2wnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdtJwotICAgIFZhbGlkU2NoZW1lLCAvLyAn
bicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ28nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdwJwotICAg
IFZhbGlkU2NoZW1lLCAvLyAncScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3InCi0gICAgVmFsaWRT
Y2hlbWUsIC8vICdzJwotICAgIFZhbGlkU2NoZW1lLCAvLyAndCcKLSAgICBWYWxpZFNjaGVtZSwg
Ly8gJ3UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd2JwotICAgIFZhbGlkU2NoZW1lLCAvLyAndycK
LSAgICBWYWxpZFNjaGVtZSwgLy8gJ3gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd5JwotICAgIFZh
bGlkU2NoZW1lLCAvLyAneicKLSAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8vICd7JwotICAgIFVz
ZXJJbmZvLCAvLyAnfCcKLSAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8vICd9JwotICAgIDAsIC8v
ICd+JwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg3RgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4
MAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4Mgot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NAotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg4NQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NgotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg4NwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4OAotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg4OQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4QQotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg4QgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4QwotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg4RAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RQotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg4RgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MAotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg5MQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5
MwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NQot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NwotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg5OAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5OQotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg5QQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QgotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg5QwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RAotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg5RQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RgotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhBMAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMQotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhBMgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMwotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhBNAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhB
NgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBOAot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBOQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBQQotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhBQgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBQwotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhBRAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRQotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhBRgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMAotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhCMQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMgotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhCMwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNAotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhCNQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNgotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhCNwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCOAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhC
OQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQgot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCRAotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhCRQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCRgotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhDMAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMQotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhDMgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMwotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhDNAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNQotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhDNgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNwotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhDOAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDOQotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhDQQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhD
QwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRQot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMAotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhEMQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMgotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhEMwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENAotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhENQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENgotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhENwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOAotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhEOQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQQotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhEQgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQwotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhERAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhE
RgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMQot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMwotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhFNAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNQotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhFNgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNwotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhFOAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFOQotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhFQQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQgotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhFQwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRAotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhFRQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRgotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhGMAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhG
MgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNAot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNgotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhGNwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGOAotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhGOQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQQotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhGQgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQwotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhGRAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRQotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhGRgotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlT
X0lOTElORSBzdGF0aWMgYm9vbCBpc0MwQ29udHJvbChDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rlcikg
eyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MUY7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRyb2xPclNwYWNlKENoYXJh
Y3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0gMHgyMDsgfQotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1Rh
Yk9yTmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9
IDB4RCAmJiBjaGFyYWN0ZXIgPj0gMHg5ICYmIGNoYXJhY3RlciAhPSAweEIgJiYgY2hhcmFjdGVy
ICE9IDB4QzsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElO
RSBzdGF0aWMgYm9vbCBpc0luU2ltcGxlRW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVy
KSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGlzQzBDb250cm9sKGNoYXJhY3Rlcik7IH0K
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJv
b2wgaXNJbkRlZmF1bHRFbmNvZGVTZXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJu
IGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgRGVm
YXVsdDsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBz
dGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIp
IHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0
ZXJdICYgVXNlckluZm87IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZ
U19JTkxJTkUgc3RhdGljIGJvb2wgaXNQZXJjZW50T3JOb25BU0NJSShDaGFyYWN0ZXJUeXBlIGNo
YXJhY3RlcikgeyByZXR1cm4gIWlzQVNDSUkoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT0gJyUn
OyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGlzU2xhc2hRdWVzdGlvbk9ySGFzaChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyBy
ZXR1cm4gY2hhcmFjdGVyIDw9ICdcXCcgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJd
ICYgU2xhc2hRdWVzdGlvbk9ySGFzaDsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1ZhbGlkU2NoZW1lQ2hhcmFjdGVyKENoYXJh
Y3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0gJ3onICYmIGNoYXJhY3Rl
ckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFZhbGlkU2NoZW1lOyB9Ci10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzRm9yYmlkZGVuSG9z
dENvZGVQb2ludChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9
ICddJyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBGb3JiaWRkZW5Ib3N0OyB9
Ci1BTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUo
dWludDhfdCBieXRlLCBjb25zdCBib29sJiB1cmxJc1NwZWNpYWwpCi17Ci0gICAgaWYgKGNoYXJh
Y3RlckNsYXNzVGFibGVbYnl0ZV0gJiBRdWVyeVBlcmNlbnQpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIGlmIChieXRlID09ICdcJycgJiYgdXJsSXNTcGVjaWFsKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc0luVXNlcklu
Zm9FbmNvZGVTZXQoVUNoYXIgYykKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6aXNJblVzZXJJbmZv
RW5jb2RlU2V0KGMpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBVUkxQ
YXJzZXI6OlJlcG9ydFN5bnRheFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24+Ci1BTFdB
WVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphZHZhbmNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+JiBpdGVyYXRvciwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pCi17Ci0gICAgKytpdGVyYXRv
cjsKLSAgICB3aGlsZSAoVU5MSUtFTFkoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJPck5ld2xp
bmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgaWYgKHJlcG9ydFN5bnRheFZpb2xhdGlvbiA9PSBS
ZXBvcnRTeW50YXhWaW9sYXRpb246OlllcykKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihp
dGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICAgICAgKytpdGVyYXRvcjsK
LSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1ib29sIFVSTFBh
cnNlcjo6dGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+IGl0ZXJhdG9yKQotewotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9s
YXRpb246Ok5vPihpdGVyYXRvcik7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZp
b2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICByZXR1cm4gaXRlcmF0b3IuYXRFbmQoKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgYm9vbCBV
UkxQYXJzZXI6OmlzV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+IGl0ZXJhdG9yKQotewotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8ICFpc0FTQ0lJ
QWxwaGEoKml0ZXJhdG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIGlm
IChpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCppdGVy
YXRvciA9PSAnOicpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChVTkxJS0VMWSgqaXRl
cmF0b3IgPT0gJ3wnKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKFVD
aGFyMzIgY29kZVBvaW50KQotewotICAgIEFTU0VSVChpc0FTQ0lJKGNvZGVQb2ludCkpOwotICAg
IGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCi0gICAgICAgIG1fYXNjaWlC
dWZmZXIuYXBwZW5kKGNvZGVQb2ludCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJz
ZXI6OmFwcGVuZFRvQVNDSUlCdWZmZXIoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxl
bmd0aCkKLXsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQotICAg
ICAgICBtX2FzY2lpQnVmZmVyLmFwcGVuZChjaGFyYWN0ZXJzLCBsZW5ndGgpOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmFwcGVuZFdpbmRv
d3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3Ip
Ci17Ci0gICAgQVNTRVJUKGlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSk7Ci0gICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcigqaXRlcmF0b3IpOwotICAgIGFkdmFuY2UoaXRlcmF0b3IpOwotICAg
IEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgQVNTRVJUKCppdGVyYXRvciA9PSAnOicg
fHwgKml0ZXJhdG9yID09ICd8Jyk7Ci0gICAgaWYgKCppdGVyYXRvciA9PSAnfCcpCi0gICAgICAg
IHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicp
OwotICAgIGFkdmFuY2UoaXRlcmF0b3IpOwotfQotCi1ib29sIFVSTFBhcnNlcjo6Y29weUJhc2VX
aW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJiBiYXNlKQotewotICAgIGlmIChiYXNlLnByb3Rv
Y29sSXMoImZpbGUiKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLm1faG9zdEVuZCAr
IGJhc2UubV9wb3J0TGVuZ3RoIDwgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgIGlm
IChiYXNlLm1fc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBMQ2hhciogYmVn
aW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgICAgICBDb2RlUG9pbnRJ
dGVyYXRvcjxMQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5n
dGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAgICAgaWYg
KGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kV2luZG93
c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29uc3QgVUNoYXIqIGJlZ2luID0g
YmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAgIENvZGVQb2ludEl0ZXJh
dG9yPFVDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCAr
IDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBpZiAoaXNX
aW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJp
dmVMZXR0ZXIoYyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnNob3VsZENvcHlGaWxlVVJMKENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGlmICghaXNX
aW5kb3dzRHJpdmVMZXR0ZXIoaXRlcmF0b3IpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBp
ZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2Uo
aXRlcmF0b3IpOwotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuICFpc1NsYXNoUXVlc3Rpb25Pckhhc2goKml0
ZXJhdG9yKTsKLX0KLQotc3RhdGljIHZvaWQgcGVyY2VudEVuY29kZUJ5dGUodWludDhfdCBieXRl
LCBWZWN0b3I8TENoYXI+JiBidWZmZXIpCi17Ci0gICAgYnVmZmVyLmFwcGVuZCgnJScpOwotICAg
IGJ1ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0ZSkpOwotICAgIGJ1
ZmZlci5hcHBlbmQobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0ZSkpOwotfQotCi12b2lk
IFVSTFBhcnNlcjo6cGVyY2VudEVuY29kZUJ5dGUodWludDhfdCBieXRlKQotewotICAgIEFTU0VS
VChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignJScp
OwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0
ZSkpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQo
Ynl0ZSkpOwotfQotCi1jb25zdCBjaGFyIHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRF
bmNvZGVkWzEwXSA9ICIlRUYlQkYlQkQiOwotY29uc3Qgc2l6ZV90IHJlcGxhY2VtZW50Q2hhcmFj
dGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoID0gc2l6ZW9mKHJlcGxhY2VtZW50Q2hhcmFjdGVy
VVRGOFBlcmNlbnRFbmNvZGVkKSAtIDE7Ci0KLXRlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShV
Q2hhcjMyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgdm9pZCBVUkxQ
YXJzZXI6OnV0ZjhQZXJjZW50RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+JiBpdGVyYXRvcikKLXsKLSAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwotICAg
IFVDaGFyMzIgY29kZVBvaW50ID0gKml0ZXJhdG9yOwotICAgIGlmIChMSUtFTFkoaXNBU0NJSShj
b2RlUG9pbnQpKSkgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNJbkNvZGVTZXQoY29kZVBvaW50
KSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAg
ICBwZXJjZW50RW5jb2RlQnl0ZShjb2RlUG9pbnQpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29kZVBvaW50KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzSW5Db2RlU2V0KGNvZGVQb2ludCksICJpc0lu
Q29kZVNldCBzaG91bGQgYWx3YXlzIHJldHVybiB0cnVlIGZvciBub24tQVNDSUkgY2hhcmFjdGVy
cyIpOwotICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgCi0gICAgaWYgKCFVX0lT
X1VOSUNPREVfQ0hBUihjb2RlUG9pbnQpKSB7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
cmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQsIHJlcGxhY2VtZW50Q2hhcmFj
dGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAKLSAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKLSAgICBpbnQzMl90IG9mZnNl
dCA9IDA7Ci0gICAgVThfQVBQRU5EX1VOU0FGRShidWZmZXIsIG9mZnNldCwgY29kZVBvaW50KTsK
LSAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBvZmZzZXQ7ICsraSkKLSAgICAgICAgcGVyY2Vu
dEVuY29kZUJ5dGUoYnVmZmVyW2ldKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KLUFMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OnV0ZjhRdWVyeUVuY29kZShjb25z
dCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNT
RVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKLSAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVyYXRv
cjsKLSAgICBpZiAoTElLRUxZKGlzQVNDSUkoY29kZVBvaW50KSkpIHsKLSAgICAgICAgaWYgKFVO
TElLRUxZKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoY29kZVBvaW50LCBtX3VybElzU3Bl
Y2lhbCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAg
ICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBvaW50KTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvZGVQb2ludCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAKLSAgICBp
ZiAoIVVfSVNfVU5JQ09ERV9DSEFSKGNvZGVQb2ludCkpIHsKLSAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCwgcmVwbGFjZW1l
bnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgdWludDhfdCBidWZmZXJbVThfTUFYX0xFTkdUSF07Ci0gICAgaW50MzJfdCBv
ZmZzZXQgPSAwOwotICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQsIGNvZGVQb2lu
dCk7Ci0gICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgb2Zmc2V0OyArK2kpIHsKLSAgICAgICAg
YXV0byBieXRlID0gYnVmZmVyW2ldOwotICAgICAgICBpZiAoc2hvdWxkUGVyY2VudEVuY29kZVF1
ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCi0gICAgICAgICAgICBwZXJjZW50RW5jb2Rl
Qnl0ZShieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihieXRlKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci12
b2lkIFVSTFBhcnNlcjo6ZW5jb2RlTm9uVVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIHNv
dXJjZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nJiBlbmNvZGluZywgQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgYXV0byBlbmNvZGVkID0gZW5jb2Rpbmcu
ZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3KHNvdXJjZS5kYXRhKCksIHNvdXJjZS5zaXpl
KCkpKTsKLSAgICBhdXRvKiBkYXRhID0gZW5jb2RlZC5kYXRhKCk7Ci0gICAgc2l6ZV90IGxlbmd0
aCA9IGVuY29kZWQuc2l6ZSgpOwotICAgIAotICAgIGlmICghbGVuZ3RoID09ICFpdGVyYXRvci5h
dEVuZCgpKSB7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgCi0gICAgc2l6ZV90IGkgPSAwOwotICAgIGZvciAoOyBpIDwgbGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKLSAgICAgICAg
dWludDhfdCBieXRlID0gZGF0YVtpXTsKLSAgICAgICAgaWYgKFVOTElLRUxZKGJ5dGUgIT0gKml0
ZXJhdG9yKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChVTkxJS0VMWShzaG91bGRQZXJj
ZW50RW5jb2RlUXVlcnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkpIHsKLSAgICAgICAgICAg
IHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGJ5dGUpOwotICAgICAgICArK2l0ZXJhdG9y
OwotICAgIH0KLSAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJPck5ld2xpbmUo
Kml0ZXJhdG9yKSkKLSAgICAgICAgKytpdGVyYXRvcjsKLSAgICBBU1NFUlQoKGkgPT0gbGVuZ3Ro
KSA9PSBpdGVyYXRvci5hdEVuZCgpKTsKLSAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7Ci0gICAgICAgIHVpbnQ4X3Qg
Ynl0ZSA9IGRhdGFbaV07Ci0gICAgICAgIGlmIChzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRl
KGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkKLSAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ5
dGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGJ5dGUp
OwotICAgIH0KLX0KLQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMUGFyc2VyOjpkZWZhdWx0
UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgc2NoZW1lKQotewotICAgIHN0YXRpYyBjb25zdCB1
aW50MTZfdCBmdHBQb3J0ID0gMjE7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGdvcGhlclBv
cnQgPSA3MDsKLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgaHR0cFBvcnQgPSA4MDsKLSAgICBz
dGF0aWMgY29uc3QgdWludDE2X3QgaHR0cHNQb3J0ID0gNDQzOwotICAgIHN0YXRpYyBjb25zdCB1
aW50MTZfdCB3c1BvcnQgPSA4MDsKLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qgd3NzUG9ydCA9
IDQ0MzsKLSAgICAKLSAgICBhdXRvIGxlbmd0aCA9IHNjaGVtZS5sZW5ndGgoKTsKLSAgICBpZiAo
IWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBzd2l0Y2ggKHNjaGVt
ZVswXSkgewotICAgIGNhc2UgJ3cnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAg
ICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gd3NQb3J0OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgY2FzZSAzOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycKLSAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3MnKQotICAgICAgICAgICAgICAgIHJldHVybiB3c3NQ
b3J0OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGNhc2UgJ2gnOgotICAg
ICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICBpZiAo
c2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKLSAg
ICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnKQotICAgICAgICAgICAgICAgIHJldHVy
biBodHRwUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGNh
c2UgNToKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCi0gICAgICAgICAgICAgICAg
JiYgc2NoZW1lWzJdID09ICd0JwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcK
LSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQotICAgICAgICAgICAgICAgIHJl
dHVybiBodHRwc1BvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgfQot
ICAgIGNhc2UgJ2cnOgotICAgICAgICBpZiAobGVuZ3RoID09IDYKLSAgICAgICAgICAgICYmIHNj
aGVtZVsxXSA9PSAnbycKLSAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcKLSAgICAgICAg
ICAgICYmIHNjaGVtZVszXSA9PSAnaCcKLSAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAnZScK
LSAgICAgICAgICAgICYmIHNjaGVtZVs1XSA9PSAncicpCi0gICAgICAgICAgICByZXR1cm4gZ29w
aGVyUG9ydDsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBjYXNlICdmJzoKLSAg
ICAgICAgaWYgKGxlbmd0aCA9PSAzCi0gICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0gJ3QnCi0g
ICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnKQotICAgICAgICAgICAgcmV0dXJuIGZ0cFBv
cnQ7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci19Ci0KLWVudW0gY2xhc3MgU2NoZW1lIHsKLSAg
ICBXUywKLSAgICBXU1MsCi0gICAgRmlsZSwKLSAgICBGVFAsCi0gICAgR29waGVyLAotICAgIEhU
VFAsCi0gICAgSFRUUFMsCi0gICAgTm9uU3BlY2lhbAotfTsKLQotQUxXQVlTX0lOTElORSBzdGF0
aWMgU2NoZW1lIHNjaGVtZShTdHJpbmdWaWV3IHNjaGVtZSkKLXsKLSAgICBhdXRvIGxlbmd0aCA9
IHNjaGVtZS5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFNjaGVt
ZTo6Tm9uU3BlY2lhbDsKLSAgICBzd2l0Y2ggKHNjaGVtZVswXSkgewotICAgIGNhc2UgJ2YnOgot
ICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICBp
ZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6RlRQOwotICAgICAgICAgICAgcmV0dXJu
IFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKHNj
aGVtZVsxXSA9PSAnaScKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ2wnCi0gICAg
ICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdlJykKLSAgICAgICAgICAgICAgICByZXR1cm4g
U2NoZW1lOjpGaWxlOwotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0g
ICAgICAgIH0KLSAgICBjYXNlICdnJzoKLSAgICAgICAgaWYgKGxlbmd0aCA9PSA2Ci0gICAgICAg
ICAgICAmJiBzY2hlbWVbMV0gPT0gJ28nCi0gICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3An
Ci0gICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCi0gICAgICAgICAgICAmJiBzY2hlbWVb
NF0gPT0gJ2UnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNV0gPT0gJ3InKQotICAgICAgICAgICAg
cmV0dXJuIFNjaGVtZTo6R29waGVyOwotICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFs
OwotICAgIGNhc2UgJ2gnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNl
IDQ6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAgICAgICYm
IHNjaGVtZVsyXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnKQot
ICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkhUVFA7Ci0gICAgICAgICAgICByZXR1cm4g
U2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAgICBpZiAoc2No
ZW1lWzFdID09ICd0JwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKLSAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzRdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpIVFRQUzsKLSAgICAg
ICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICB9Ci0gICAgY2FzZSAn
dyc6Ci0gICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7Ci0gICAgICAgIGNhc2UgMjoKLSAgICAgICAg
ICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnKQotICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6
OldTOwotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgY2Fz
ZSAzOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycKLSAgICAgICAgICAgICAgICAm
JiBzY2hlbWVbMl0gPT0gJ3MnKQotICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OldTUzsK
LSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICB9Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICB9Ci19Ci0K
LXN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1l
KGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmIChzY2hlbWUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaWYgKCFpc0FTQ0lJQWxwaGEoc2NoZW1l
WzBdKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGZvciAoc2l6ZV90IGkg
PSAxOyBpIDwgc2NoZW1lLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKGlzQVNDSUlBbHBo
YW51bWVyaWMoc2NoZW1lW2ldKSB8fCBzY2hlbWVbaV0gPT0gJysnIHx8IHNjaGVtZVtpXSA9PSAn
LScgfHwgc2NoZW1lW2ldID09ICcuJykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiBzY2hlbWUuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZShj
b25zdCBTdHJpbmcmIHNjaGVtZUFyZykKLXsKLSAgICByZXR1cm4gc2NoZW1lKHNjaGVtZUFyZykg
IT0gU2NoZW1lOjpOb25TcGVjaWFsOwotfQotCi1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6VVJMUGFy
dCB7Ci0gICAgU2NoZW1lRW5kLAotICAgIFVzZXJTdGFydCwKLSAgICBVc2VyRW5kLAotICAgIFBh
c3N3b3JkRW5kLAotICAgIEhvc3RFbmQsCi0gICAgUG9ydEVuZCwKLSAgICBQYXRoQWZ0ZXJMYXN0
U2xhc2gsCi0gICAgUGF0aEVuZCwKLSAgICBRdWVyeUVuZCwKLX07Ci0KLXNpemVfdCBVUkxQYXJz
ZXI6OnVybExlbmd0aFVudGlsUGFydChjb25zdCBVUkwmIHVybCwgVVJMUGFydCBwYXJ0KQotewot
ICAgIHN3aXRjaCAocGFydCkgewotICAgIGNhc2UgVVJMUGFydDo6UXVlcnlFbmQ6Ci0gICAgICAg
IHJldHVybiB1cmwubV9xdWVyeUVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBhdGhFbmQ6Ci0gICAg
ICAgIHJldHVybiB1cmwubV9wYXRoRW5kOwotICAgIGNhc2UgVVJMUGFydDo6UGF0aEFmdGVyTGFz
dFNsYXNoOgotICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgIGNh
c2UgVVJMUGFydDo6UG9ydEVuZDoKLSAgICAgICAgcmV0dXJuIHVybC5tX2hvc3RFbmQgKyB1cmwu
bV9wb3J0TGVuZ3RoOwotICAgIGNhc2UgVVJMUGFydDo6SG9zdEVuZDoKLSAgICAgICAgcmV0dXJu
IHVybC5tX2hvc3RFbmQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKLSAgICAgICAg
cmV0dXJuIHVybC5tX3Bhc3N3b3JkRW5kOwotICAgIGNhc2UgVVJMUGFydDo6VXNlckVuZDoKLSAg
ICAgICAgcmV0dXJuIHVybC5tX3VzZXJFbmQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyU3RhcnQ6
Ci0gICAgICAgIHJldHVybiB1cmwubV91c2VyU3RhcnQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpTY2hl
bWVFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9zY2hlbWVFbmQ7Ci0gICAgfQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIFVSTFBhcnNlcjo6Y29w
eUFTQ0lJU3RyaW5nVW50aWwoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHNpemVfdCBsZW5ndGgpCi17
Ci0gICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDw9IHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgaWYg
KHN0cmluZy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVChtX2FzY2lpQnVm
ZmVyLmlzRW1wdHkoKSk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcihzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIFVDaGFyIGMgPSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oaXNBU0NJSShjKSk7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGMpOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvcHlVUkxQYXJ0c1VudGlsKGNvbnN0IFVSTCYg
YmFzZSwgVVJMUGFydCBwYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiYgaXRlcmF0b3IsIGNvbnN0IFVSTFRleHRFbmNvZGluZyomIG5vblVURjhRdWVyeUVuY29kaW5n
KQotewotICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0KLSAgICBtX2FzY2lpQnVmZmVy
LmNsZWFyKCk7Ci0gICAgY29weUFTQ0lJU3RyaW5nVW50aWwoYmFzZS5tX3N0cmluZywgdXJsTGVu
Z3RoVW50aWxQYXJ0KGJhc2UsIHBhcnQpKTsKLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBjYXNl
IFVSTFBhcnQ6OlF1ZXJ5RW5kOgotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gYmFzZS5tX3F1
ZXJ5RW5kOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBhdGhFbmQ6
Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGJhc2UubV9wYXRoRW5kOwotICAgICAgICBGQUxM
VEhST1VHSDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaDoKLSAgICAgICAg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwot
ICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAg
IG1fdXJsLm1fcG9ydExlbmd0aCA9IGJhc2UubV9wb3J0TGVuZ3RoOwotICAgICAgICBGQUxMVEhS
T1VHSDsKLSAgICBjYXNlIFVSTFBhcnQ6Okhvc3RFbmQ6Ci0gICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IGJhc2UubV9ob3N0RW5kOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFVSTFBh
cnQ6OlBhc3N3b3JkRW5kOgotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gYmFzZS5tX3Bh
c3N3b3JkRW5kOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFVSTFBhcnQ6OlVzZXJF
bmQ6Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGJhc2UubV91c2VyRW5kOwotICAgICAgICBG
QUxMVEhST1VHSDsKLSAgICBjYXNlIFVSTFBhcnQ6OlVzZXJTdGFydDoKLSAgICAgICAgbV91cmwu
bV91c2VyU3RhcnQgPSBiYXNlLm1fdXNlclN0YXJ0OwotICAgICAgICBGQUxMVEhST1VHSDsKLSAg
ICBjYXNlIFVSTFBhcnQ6OlNjaGVtZUVuZDoKLSAgICAgICAgbV91cmwubV9pc1ZhbGlkID0gYmFz
ZS5tX2lzVmFsaWQ7Ci0gICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGJh
c2UubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwotICAgICAgICBtX3VybC5tX3NjaGVtZUVuZCA9
IGJhc2UubV9zY2hlbWVFbmQ7Ci0gICAgfQotICAgIHN3aXRjaCAoc2NoZW1lKFN0cmluZ1ZpZXco
bV9hc2NpaUJ1ZmZlci5kYXRhKCksIG1fdXJsLm1fc2NoZW1lRW5kKSkpIHsKLSAgICBjYXNlIFNj
aGVtZTo6V1M6Ci0gICAgY2FzZSBTY2hlbWU6OldTUzoKLSAgICAgICAgbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcgPSBudWxscHRyOwotICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIFNjaGVtZTo6RmlsZToKLSAgICAgICAgbV91cmxJc0ZpbGUgPSB0
cnVlOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFNjaGVtZTo6RlRQOgotICAgIGNh
c2UgU2NoZW1lOjpHb3BoZXI6Ci0gICAgY2FzZSBTY2hlbWU6OkhUVFA6Ci0gICAgY2FzZSBTY2hl
bWU6OkhUVFBTOgotICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIFNjaGVtZTo6Tm9uU3BlY2lhbDoKLSAgICAgICAgbV91cmxJc1NwZWNpYWwg
PSBmYWxzZTsKLSAgICAgICAgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1zdGF0aWMg
Y29uc3QgY2hhciBkb3RBU0NJSUNvZGVbMl0gPSB7JzInLCAnZSd9OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNTaW5n
bGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQotewot
ICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKmMgPT0g
Jy4nKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9u
T3JIYXNoKCpjKTsKLSAgICB9Ci0gICAgaWYgKCpjICE9ICclJykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpO
bz4oYyk7Ci0gICAgaWYgKGMuYXRFbmQoKSB8fCAqYyAhPSBkb3RBU0NJSUNvZGVbMF0pCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pIHsKLSAg
ICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihj
KTsKLSAgICAgICAgcmV0dXJuIGMuYXRFbmQoKSB8fCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMp
OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFyc2VyOjppc0RvdWJsZURvdFBhdGhT
ZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCi17Ci0gICAgaWYgKGMu
YXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgqYyA9PSAnLicpIHsKLSAg
ICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihj
KTsKLSAgICAgICAgcmV0dXJuIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7Ci0gICAgfQotICAg
IGlmICgqYyAhPSAnJScpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJh
Y3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgIGlmIChjLmF0RW5k
KCkgfHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
YWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAg
ICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHRvQVNDSUlM
b3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBpc1Np
bmdsZURvdFBhdGhTZWdtZW50KGMpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci12b2lkIFVSTFBhcnNlcjo6Y29uc3VtZVNp
bmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBjKQot
ewotICAgIEFTU0VSVChpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpKTsKLSAgICBpZiAoKmMgPT0g
Jy4nKSB7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgIGlmICghYy5hdEVuZCgpKSB7Ci0g
ICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpCi0gICAgICAgICAgICAgICAg
YWR2YW5jZShjKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBBU1NFUlQoKmMg
PT0gJz8nIHx8ICpjID09ICcjJyk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBB
U1NFUlQoKmMgPT0gJyUnKTsKLSAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgQVNTRVJUKCpj
ID09IGRvdEFTQ0lJQ29kZVswXSk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgIEFTU0VS
VCh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSk7Ci0gICAgICAgIGFkdmFuY2Uo
Yyk7Ci0gICAgICAgIGlmICghYy5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8n
IHx8ICpjID09ICdcXCcpCi0gICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBBU1NFUlQoKmMgPT0gJz8nIHx8ICpjID09ICcjJyk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci12
b2lkIFVSTFBhcnNlcjo6Y29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBjKQotewotICAgIEFTU0VSVChpc0RvdWJsZURvdFBhdGhTZWdt
ZW50KGMpKTsKLSAgICBpZiAoKmMgPT0gJy4nKQotICAgICAgICBhZHZhbmNlKGMpOwotICAgIGVs
c2UgewotICAgICAgICBBU1NFUlQoKmMgPT0gJyUnKTsKLSAgICAgICAgYWR2YW5jZShjKTsKLSAg
ICAgICAgQVNTRVJUKCpjID09IGRvdEFTQ0lJQ29kZVswXSk7Ci0gICAgICAgIGFkdmFuY2UoYyk7
Ci0gICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSk7Ci0g
ICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgfQotICAgIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVu
dChjKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OnNob3VsZFBvcFBhdGgodW5zaWduZWQgbmV3UGF0
aEFmdGVyTGFzdFNsYXNoKQotewotICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7
Ci0gICAgaWYgKCFtX3VybElzRmlsZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBBU1NF
UlQobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPD0gbV9hc2NpaUJ1ZmZlci5zaXplKCkpOwot
ICAgIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjb21wb25lbnRUb1BvcCgmbV9hc2NpaUJ1ZmZl
cltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdLCAmbV9hc2NpaUJ1ZmZlclswXSArIG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoKTsKLSAgICBpZiAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID09IG1fdXJs
Lm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDEgJiYgaXNXaW5kb3dzRHJpdmVMZXR0
ZXIoY29tcG9uZW50VG9Qb3ApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLXZvaWQgVVJMUGFyc2VyOjpwb3BQYXRoKCkKLXsKLSAgICBBU1NFUlQobV9kaWRT
ZWVTeW50YXhWaW9sYXRpb24pOwotICAgIGlmIChtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA+
IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDEpIHsKLSAgICAgICAgYXV0
byBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCAtIDE7
Ci0gICAgICAgIGlmIChtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0gPT0gJy8n
KQotICAgICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07Ci0gICAgICAgIHdoaWxlIChu
ZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5n
dGggJiYgbV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdICE9ICcvJykKLSAgICAg
ICAgICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaC0tOwotICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0
U2xhc2grKzsKLSAgICAgICAgaWYgKHNob3VsZFBvcFBhdGgobmV3UGF0aEFmdGVyTGFzdFNsYXNo
KSkKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbmV3UGF0aEFmdGVy
TGFzdFNsYXNoOwotICAgIH0KLSAgICBtX2FzY2lpQnVmZmVyLnJlc2l6ZShtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci12
b2lkIFVSTFBhcnNlcjo6c3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvcikKLXsKLSAgICBpZiAobV9kaWRTZWVTeW50YXhWaW9sYXRp
b24pCi0gICAgICAgIHJldHVybjsKLSAgICBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7
Ci0gICAgCi0gICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKLSAgICBzaXplX3Qg
Y29kZVVuaXRzVG9Db3B5ID0gaXRlcmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBDaGFyYWN0ZXJUeXBlKj4obV9pbnB1dEJlZ2luKSk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQoY29kZVVuaXRzVG9Db3B5IDw9IG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOwotICAgIG1fYXNj
aWlCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZVVuaXRzVG9Db3B5OyArK2kpIHsKLSAgICAgICAgQVNT
RVJUKGlzQVNDSUkobV9pbnB1dFN0cmluZ1tpXSkpOwotICAgICAgICBtX2FzY2lpQnVmZmVyLnVu
Y2hlY2tlZEFwcGVuZChtX2lucHV0U3RyaW5nW2ldKTsKLSAgICB9Ci19Ci0KLXZvaWQgVVJMUGFy
c2VyOjpmYWlsdXJlKCkKLXsKLSAgICBtX3VybC5pbnZhbGlkYXRlKCk7Ci0gICAgbV91cmwubV9z
dHJpbmcgPSBtX2lucHV0U3RyaW5nOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgotYm9vbCBVUkxQYXJzZXI6OmNoZWNrTG9jYWxob3N0Q29kZVBvaW50KENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgVUNoYXIzMiBjb2RlUG9pbnQpCi17Ci0g
ICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkgfHwgdG9BU0NJSUxvd2VyKCppdGVyYXRvcikgIT0gY29k
ZVBvaW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBl
LCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1ib29sIFVSTFBhcnNlcjo6
aXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikK
LXsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbCcpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVy
YXRvciwgJ28nKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhv
c3RDb2RlUG9pbnQoaXRlcmF0b3IsICdjJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYScpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2wn
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9p
bnQoaXRlcmF0b3IsICdoJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNr
TG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbycpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ3MnKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0
b3IsICd0JykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXRlcmF0b3IuYXRF
bmQoKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmlzTG9jYWxob3N0KFN0cmluZ1ZpZXcgdmlldykK
LXsKLSAgICBpZiAodmlldy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGlzQXRMb2NhbGhvc3Qo
Q29kZVBvaW50SXRlcmF0b3I8TENoYXI+KHZpZXcuY2hhcmFjdGVyczgoKSwgdmlldy5jaGFyYWN0
ZXJzOCgpICsgdmlldy5sZW5ndGgoKSkpOwotICAgIHJldHVybiBpc0F0TG9jYWxob3N0KENvZGVQ
b2ludEl0ZXJhdG9yPFVDaGFyPih2aWV3LmNoYXJhY3RlcnMxNigpLCB2aWV3LmNoYXJhY3RlcnMx
NigpICsgdmlldy5sZW5ndGgoKSkpOwotfQotCi1BTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXcgVVJM
UGFyc2VyOjpwYXJzZWREYXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpCi17Ci0g
ICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkgewotICAgICAgICBBU1NF
UlQoc3RhcnQgKyBsZW5ndGggPD0gbV9hc2NpaUJ1ZmZlci5zaXplKCkpOwotICAgICAgICByZXR1
cm4gU3RyaW5nVmlldyhtX2FzY2lpQnVmZmVyLmRhdGEoKSArIHN0YXJ0LCBsZW5ndGgpOwotICAg
IH0KLSAgICBBU1NFUlQoc3RhcnQgKyBsZW5ndGggPD0gbV9pbnB1dFN0cmluZy5sZW5ndGgoKSk7
Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9pbnB1dFN0cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBs
ZW5ndGgpOwotfQotCi1BTFdBWVNfSU5MSU5FIFVDaGFyIFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZp
ZXcoc2l6ZV90IHBvc2l0aW9uKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZp
b2xhdGlvbikpCi0gICAgICAgIHJldHVybiBtX2FzY2lpQnVmZmVyW3Bvc2l0aW9uXTsKLSAgICBy
ZXR1cm4gbV9pbnB1dFN0cmluZ1twb3NpdGlvbl07Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHNpemVfdCBVUkxQYXJzZXI6OmN1cnJlbnRQb3Np
dGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17
Ci0gICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKLSAgICAgICAgcmV0
dXJuIG1fYXNjaWlCdWZmZXIuc2l6ZSgpOwotICAgIAotICAgIHJldHVybiBpdGVyYXRvci5jb2Rl
VW5pdHNTaW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IENoYXJhY3RlclR5cGUqPihtX2lucHV0
QmVnaW4pKTsKLX0KLQotVVJMUGFyc2VyOjpVUkxQYXJzZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwg
Y29uc3QgVVJMJiBiYXNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIG5vblVURjhRdWVyeUVuY29k
aW5nKQotICAgIDogbV9pbnB1dFN0cmluZyhpbnB1dCkKLXsKLSAgICBpZiAoaW5wdXQuaXNOdWxs
KCkpIHsKLSAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmICFiYXNlLm1fY2Fubm90QmVBQmFz
ZVVSTCkgewotICAgICAgICAgICAgbV91cmwgPSBiYXNlOwotICAgICAgICAgICAgbV91cmwucmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChpbnB1dC5pczhCaXQoKSkgewotICAgICAgICBtX2lucHV0QmVnaW4gPSBp
bnB1dC5jaGFyYWN0ZXJzOCgpOwotICAgICAgICBwYXJzZShpbnB1dC5jaGFyYWN0ZXJzOCgpLCBp
bnB1dC5sZW5ndGgoKSwgYmFzZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIG1faW5wdXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnMxNigpOwotICAgICAgICBw
YXJzZShpbnB1dC5jaGFyYWN0ZXJzMTYoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVURjhR
dWVyeUVuY29kaW5nKTsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIW1fdXJsLm1faXNWYWxpZAotICAg
ICAgICB8fCBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiA9PSAobV91cmwuc3RyaW5nKCkgIT0gaW5w
dXQpCi0gICAgICAgIHx8IChpbnB1dC5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQzBDb250cm9s
T3JTcGFjZT4oKQotICAgICAgICAgICAgJiYgbV91cmwubV9zdHJpbmcgPT0gYmFzZS5tX3N0cmlu
Zy5sZWZ0KGJhc2UubV9xdWVyeUVuZCkpKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxWYWx1ZXNDb25z
aXN0ZW50KG1fdXJsKSk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGlmICghbV9kaWRTZWVT
eW50YXhWaW9sYXRpb24pIHsKLSAgICAgICAgLy8gRm9yY2UgYSBzeW50YXggdmlvbGF0aW9uIGF0
IHRoZSBiZWdpbm5pbmcgdG8gbWFrZSBzdXJlIHdlIGdldCB0aGUgc2FtZSByZXN1bHQuCi0gICAg
ICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygiICIsIGlucHV0KSwgYmFzZSwgbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICBVUkwgcGFyc2VkID0gcGFyc2VyLnJlc3VsdCgpOwot
ICAgICAgICBpZiAocGFyc2VkLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIEFTU0VSVChhbGxWYWx1
ZXNFcXVhbChwYXJzZXIucmVzdWx0KCksIG1fdXJsKSk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci12b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29u
c3QgQ2hhcmFjdGVyVHlwZSogaW5wdXQsIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVVJM
JiBiYXNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIG5vblVURjhRdWVyeUVuY29kaW5nKQotewot
ICAgIFVSTF9QQVJTRVJfTE9HKCJQYXJzaW5nIFVSTCA8JXM+IGJhc2UgPCVzPiIsIFN0cmluZyhp
bnB1dCwgbGVuZ3RoKS51dGY4KCkuZGF0YSgpLCBiYXNlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotICAgIG1fdXJsID0geyB9OwotICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7
Ci0KLSAgICBWZWN0b3I8VUNoYXI+IHF1ZXJ5QnVmZmVyOwotCi0gICAgdW5zaWduZWQgZW5kSW5k
ZXggPSBsZW5ndGg7Ci0gICAgd2hpbGUgKFVOTElLRUxZKGVuZEluZGV4ICYmIGlzQzBDb250cm9s
T3JTcGFjZShpbnB1dFtlbmRJbmRleCAtIDFdKSkpIHsKLSAgICAgICAgc3ludGF4VmlvbGF0aW9u
KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGlucHV0LCBpbnB1dCkpOwotICAgICAg
ICBlbmRJbmRleC0tOwotICAgIH0KLSAgICBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiBjKGlucHV0LCBpbnB1dCArIGVuZEluZGV4KTsKLSAgICBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiBhdXRob3JpdHlPckhvc3RCZWdpbjsKLSAgICBDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiBxdWVyeUJlZ2luOwotICAgIHdoaWxlIChVTkxJS0VMWSghYy5hdEVuZCgp
ICYmIGlzQzBDb250cm9sT3JTcGFjZSgqYykpKSB7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKLSAgICAgICAgKytjOwotICAgIH0KLSAgICBhdXRvIGJlZ2luQWZ0ZXJDb250cm9sQW5kU3Bh
Y2UgPSBjOwotCi0gICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgewotICAgICAgICBTY2hl
bWVTdGFydCwKLSAgICAgICAgU2NoZW1lLAotICAgICAgICBOb1NjaGVtZSwKLSAgICAgICAgU3Bl
Y2lhbFJlbGF0aXZlT3JBdXRob3JpdHksCi0gICAgICAgIFBhdGhPckF1dGhvcml0eSwKLSAgICAg
ICAgUmVsYXRpdmUsCi0gICAgICAgIFJlbGF0aXZlU2xhc2gsCi0gICAgICAgIFNwZWNpYWxBdXRo
b3JpdHlTbGFzaGVzLAotICAgICAgICBTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcywKLSAg
ICAgICAgQXV0aG9yaXR5T3JIb3N0LAotICAgICAgICBIb3N0LAotICAgICAgICBGaWxlLAotICAg
ICAgICBGaWxlU2xhc2gsCi0gICAgICAgIEZpbGVIb3N0LAotICAgICAgICBQYXRoU3RhcnQsCi0g
ICAgICAgIFBhdGgsCi0gICAgICAgIENhbm5vdEJlQUJhc2VVUkxQYXRoLAotICAgICAgICBVVEY4
UXVlcnksCi0gICAgICAgIE5vblVURjhRdWVyeSwKLSAgICAgICAgRnJhZ21lbnQsCi0gICAgfTsK
LQotI2RlZmluZSBMT0dfU1RBVEUoeCkgVVJMX1BBUlNFUl9MT0coIlN0YXRlICVzLCBjb2RlIHBv
aW50ICVjLCBwYXJzZWQgZGF0YSA8JXM+IHNpemUgJXp1IiwgeCwgKmMsIHBhcnNlZERhdGFWaWV3
KDAsIGN1cnJlbnRQb3NpdGlvbihjKSkudXRmOCgpLmRhdGEoKSwgY3VycmVudFBvc2l0aW9uKGMp
KQotI2RlZmluZSBMT0dfRklOQUxfU1RBVEUoeCkgVVJMX1BBUlNFUl9MT0coIkZpbmFsIFN0YXRl
OiAlcyIsIHgpCi0KLSAgICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpTY2hlbWVTdGFydDsKLSAgICB3
aGlsZSAoIWMuYXRFbmQoKSkgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUo
KmMpKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgKytj
OwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKHN0
YXRlKSB7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlNjaGVtZVN0YXJ0OgotICAgICAgICAgICAgTE9H
X1NUQVRFKCJTY2hlbWVTdGFydCIpOwotICAgICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYSgqYykp
IHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKCpjKSkpCi0gICAg
ICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqYykpOwotICAgICAgICAgICAgICAgIGFkdmFu
Y2UoYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgewotICAgICAgICAgICAgICAg
ICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6Ok5vU2NoZW1lOwotICAgICAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRy
b2xBbmRTcGFjZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNjaGVtZTsKLSAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vU2NoZW1lOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlNjaGVtZToKLSAgICAgICAgICAgIExPR19T
VEFURSgiU2NoZW1lIik7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFNjaGVtZUNoYXJhY3Rlcigq
YykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKCpjKSkpCi0g
ICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqYykpOwotICAgICAgICAgICAgfSBlbHNl
IGlmICgqYyA9PSAnOicpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBzY2hlbWVFbmQgPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgaWYgKHNjaGVtZUVuZCA+IFVSTDo6
bWF4U2NoZW1lTGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBtX3VybC5tX3NjaGVtZUVuZCA9IHNjaGVtZUVuZDsKLSAgICAgICAgICAgICAgICBTdHJpbmdW
aWV3IHVybFNjaGVtZSA9IHBhcnNlZERhdGFWaWV3KDAsIG1fdXJsLm1fc2NoZW1lRW5kKTsKLSAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7Ci0gICAgICAgICAgICAgICAg
c3dpdGNoIChzY2hlbWUodXJsU2NoZW1lKSkgewotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1l
OjpGaWxlOgotICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fdXJsSXNGaWxlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RmlsZTsKLSAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6V1M6Ci0gICAg
ICAgICAgICAgICAgY2FzZSBTY2hlbWU6OldTUzoKLSAgICAgICAgICAgICAgICAgICAgbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICBtX3VybElzU3Bl
Y2lhbCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLnByb3RvY29sSXModXJs
U2NoZW1lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxS
ZWxhdGl2ZU9yQXV0aG9yaXR5OwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczsKLSAg
ICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIFNjaGVtZTo6SFRUUDoKLSAgICAgICAgICAgICAgICBjYXNlIFNjaGVt
ZTo6SFRUUFM6Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZh
bWlseSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAg
ICAgICAgIGNhc2UgU2NoZW1lOjpGVFA6Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6Okdv
cGhlcjoKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoYmFzZS5wcm90b2NvbElzKHVybFNjaGVtZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eTsK
LSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM7Ci0gICAgICAgICAgICAgICAgICAgICsr
YzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hl
bWU6Ok5vblNwZWNpYWw6Ci0gICAgICAgICAgICAgICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5n
ID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBtYXliZVNsYXNoID0gYzsKLSAg
ICAgICAgICAgICAgICAgICAgYWR2YW5jZShtYXliZVNsYXNoKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFtYXliZVNsYXNoLmF0RW5kKCkgJiYgKm1heWJlU2xhc2ggPT0gJy8nKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjID0gbWF5YmVTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlBhdGhPckF1dGhvcml0eTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVCgqYyA9PSAnLycpOwotICAgICAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICArK2M7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3Np
dGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9o
b3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fY2Fubm90QmVBQmFzZVVSTCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xBbmRTcGFj
ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFk
dmFuY2UoYyk7Ci0gICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAg
bV9hc2NpaUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5v
U2NoZW1lOwotICAgICAgICAgICAgICAgIGMgPSBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Ok5v
U2NoZW1lOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJOb1NjaGVtZSIpOwotICAgICAgICAgICAg
aWYgKCFiYXNlLmlzVmFsaWQoKSB8fCAoYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwgJiYgKmMgIT0g
JyMnKSkgewotICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYmFzZS5tX2Nhbm5vdEJlQUJhc2VV
UkwgJiYgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFz
ZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcjJyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFiYXNlLnByb3RvY29sSXMo
ImZpbGUiKSkgewotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29weVVSTFBh
cnRzVW50aWwoYmFzZSwgVVJMUGFydDo6U2NoZW1lRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7Ci0gICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpGaWxlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3Rh
dGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OgotICAgICAgICAgICAgTE9HX1NUQVRFKCJT
cGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSIpOwotICAgICAgICAgICAgaWYgKCpjID09ICcvJykg
ewotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsKLSAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsKLSAgICAg
ICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZVNsYXNoOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmU7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgotICAgICAgICAgICAg
TE9HX1NUQVRFKCJQYXRoT3JBdXRob3JpdHkiKTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAnLycp
IHsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OwotICAgICAgICAgICAgICAgIGFk
dmFuY2UoYyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9z
aXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkRGF0YVZpZXco
Y3VycmVudFBvc2l0aW9uKGMpIC0gMSkgPT0gJy8nKTsKLSAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICAgICAgbV91
cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1f
cG9ydExlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6UGF0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFN0YXRlOjpSZWxhdGl2ZToKLSAgICAgICAgICAgIExPR19TVEFURSgiUmVsYXRpdmUiKTsKLSAg
ICAgICAgICAgIHN3aXRjaCAoKmMpIHsKLSAgICAgICAgICAgIGNhc2UgJy8nOgotICAgICAgICAg
ICAgY2FzZSAnXFwnOgotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlU2xh
c2g7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSAnPyc6Ci0gICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwg
VVJMUGFydDo6UGF0aEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAg
ICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpO
b25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgJyMnOgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2Us
IFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OkZyYWdtZW50OwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgY29weVVSTFBhcnRz
VW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4UXVlcnlF
bmNvZGluZyk7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbihjKSAmJiBwYXJz
ZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSAhPSAnLycpIHsKLSAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJSZWxh
dGl2ZVNsYXNoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpIHsK
LSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwo
YmFzZSwgVVJMUGFydDo6U2NoZW1lRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOi8vIiwgMyk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fdXJsSXNTcGVjaWFsKQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsKLSAgICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24o
Yyk7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsK
LSAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29weVVSTFBh
cnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rpbmcp
OwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJhc2UubV9ob3N0RW5kICsgYmFzZS5t
X3BvcnRMZW5ndGggKyAxOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6U3Bl
Y2lhbEF1dGhvcml0eVNsYXNoZXM6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRo
b3JpdHlTbGFzaGVzIik7Ci0gICAgICAgICAgICBpZiAoTElLRUxZKCpjID09ICcvJyB8fCAqYyA9
PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnXFwnKSkKLSAg
ICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwotICAg
ICAgICAgICAgICAgIGlmIChMSUtFTFkoIWMuYXRFbmQoKSAmJiAoKmMgPT0gJy8nIHx8ICpjID09
ICdcXCcpKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAg
ICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoIi8vIiwgMik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczoKLSAgICAgICAg
ICAgIExPR19TVEFURSgiU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMiKTsKLSAgICAgICAg
ICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykgewotICAgICAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMp
OwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKLSAgICAg
ICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OgotICAg
ICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIExPR19TVEFURSgiQXV0aG9yaXR5T3JIb3N0
Iik7Ci0gICAgICAgICAgICAgICAgaWYgKCpjID09ICdAJykgewotICAgICAgICAgICAgICAgICAg
ICBhdXRvIGxhc3RBdCA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZmluZExhc3RBdCA9
IGM7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICghZmluZExhc3RBdC5hdEVuZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBVUkxfUEFSU0VSX0xPRygiRmluZGluZyBsYXN0IEA6ICVj
IiwgKmZpbmRMYXN0QXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmaW5kTGFzdEF0
ID09ICdAJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QXQgPSBmaW5kTGFzdEF0
OwotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1NsYXNoID0gKmZpbmRMYXN0QXQgPT0g
Jy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqZmluZExhc3RBdCA9PSAnXFwnKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChpc1NsYXNoIHx8ICpmaW5kTGFzdEF0ID09ICc/JyB8fCAqZmlu
ZExhc3RBdCA9PSAnIycpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICArK2ZpbmRMYXN0QXQ7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgcGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGxhc3RBdCkpOwotICAgICAgICAgICAg
ICAgICAgICBjID0gbGFzdEF0OwotICAgICAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwotICAg
ICAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7Ci0gICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6Okhvc3Q7Ci0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhh
c1BlcmNlbnRPck5vbkFTQ0lJID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBib29sIGlzU2xhc2ggPSAqYyA9PSAn
LycgfHwgKG1fdXJsSXNTcGVjaWFsICYmICpjID09ICdcXCcpOwotICAgICAgICAgICAgICAgIGlm
IChpc1NsYXNoIHx8ICpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byBpdGVyYXRvciA9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhv
cml0eU9ySG9zdEJlZ2luLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZSgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlckVu
ZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1f
dXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihhdXRob3JpdHlPckhvc3RC
ZWdpbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91
cmwubV91c2VyRW5kOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQ
b3J0KGl0ZXJhdG9yKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlzU2xhc2gpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGlzUGVyY2VudE9yTm9uQVNDSUkoKmMp
KQotICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6SG9zdDoKLSAgICAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkhvc3QiKTsKLSAgICAgICAgICAg
ICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJz8nIHx8ICpj
ID09ICcjJykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9z
aXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJKCpjKSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkZpbGU6Ci0gICAgICAgICAgICBM
T0dfU1RBVEUoIkZpbGUiKTsKLSAgICAgICAgICAgIHN3aXRjaCAoKmMpIHsKLSAgICAgICAgICAg
IGNhc2UgJ1xcJzoKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgICAgICAgICBjYXNlICcvJzoKLSAgICAgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6RmlsZVNsYXNoOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgJz8nOgotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKLSAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90
b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwo
YmFzZSwgVVJMUGFydDo6UGF0aEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAg
ICAgICsrYzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8/IiwgNCk7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsK
LSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24o
YykgLSAyOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3Vy
bC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAg
cXVlcnlCZWdpbiA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVU
RjhRdWVyeTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSAnIyc6Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICAgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkg
ewotICAgICAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpR
dWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIyIsIDQpOwotICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDI7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owot
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0
YXJ0ICsgMTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxp
ZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpICYmIHNob3VsZENvcHlGaWxlVVJMKGMpKQot
ICAgICAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRo
QWZ0ZXJMYXN0U2xhc2gsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIiwg
Myk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0
aW9uKGMpIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
bV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0
aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgICAgICBpZiAoaXNXaW5kb3dz
RHJpdmVMZXR0ZXIoYykpCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJp
dmVMZXR0ZXIoYyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZVNsYXNoOgotICAgICAgICAg
ICAgTE9HX1NUQVRFKCJGaWxlU2xhc2giKTsKLSAgICAgICAgICAgIGlmIChMSUtFTFkoKmMgPT0g
Jy8nIHx8ICpjID09ICdcXCcpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09
ICdcXCcpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIGFkdmFu
Y2UoYyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRp
b24oYyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0gICAgICAgICAgICAg
ICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OkZpbGVIb3N0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcigiLy8iLCAyKTsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBv
c2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0g
ICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgaWYgKGlzV2lu
ZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZl
TGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjb3B5QmFzZVdp
bmRvd3NEcml2ZUxldHRlcihiYXNlKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IG1fdXJsLm1fdXNlclN0YXJ0ICsgNDsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwot
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFN0YXRlOjpGaWxlSG9zdDoKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAg
ICAgICBMT0dfU1RBVEUoIkZpbGVIb3N0Iik7Ci0gICAgICAgICAgICAgICAgaWYgKGlzU2xhc2hR
dWVzdGlvbk9ySGFzaCgqYykpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCB3aW5kb3dzUXVp
cmsgPSB0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKQotICAgICAgICAgICAgICAgICAgICAgICAg
JiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0QmVnaW4pOwotICAgICAgICAg
ICAgICAgICAgICBpZiAod2luZG93c1F1aXJrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93c1F1aXJrIHx8IGF1
dGhvcml0eU9ySG9zdEJlZ2luID09IGMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VCh3aW5kb3dzUXVpcmsgfHwgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkg
PT0gJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnPycp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8/IiwgMik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpV
VEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICcjJykpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLyMiLCAyKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlSG9zdEFu
ZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVn
aW4sIGMpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWShpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5t
X3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLnNocmluayhtX3VybC5tX3Bhc3N3b3JkRW5k
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3Np
dGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGhTdGFydDsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRP
ck5vbkFTQ0lJKCpjKSkKLSAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9u
QVNDSUkgPSB0cnVlOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0gd2hpbGUg
KCFjLmF0RW5kKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlBh
dGhTdGFydDoKLSAgICAgICAgICAgIExPR19TVEFURSgiUGF0aFN0YXJ0Iik7Ci0gICAgICAgICAg
ICBpZiAoKmMgIT0gJy8nICYmICpjICE9ICdcXCcpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlBhdGg6Ci0gICAgICAgICAgICBM
T0dfU1RBVEUoIlBhdGgiKTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKG1fdXJsSXNT
cGVjaWFsICYmICpjID09ICdcXCcpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1f
dXJsSXNTcGVjaWFsICYmICpjID09ICdcXCcpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwot
ICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShjdXJyZW50UG9zaXRpb24oYykg
JiYgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgPT0gJy8nKSkgewotICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0RvdWJsZURvdFBhdGhTZWdtZW50KGMpKSkgewot
ICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICAgICAgICAgICAgICAgICAg
cG9wUGF0aCgpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYykp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KGMpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoKmMgPT0gJz8nKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3Vy
cmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8n
KTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVy
eUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgq
YyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9z
aXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0
aEVuZDsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5j
b2RlPGlzSW5EZWZhdWx0RW5jb2RlU2V0PihjKTsKLSAgICAgICAgICAgICsrYzsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDoKLSAg
ICAgICAgICAgIExPR19TVEFURSgiQ2Fubm90QmVBQmFzZVVSTFBhdGgiKTsKLSAgICAgICAgICAg
IGlmICgqYyA9PSAnPycpIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJy
ZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycp
OwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5
RW5jb2RpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5Owot
ICAgICAgICAgICAgfSBlbHNlIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJy8nKSB7Ci0gICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgICsr
YzsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQ
b3NpdGlvbihjKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdXRmOFBl
cmNlbnRFbmNvZGU8aXNJblNpbXBsZUVuY29kZVNldD4oYyk7Ci0gICAgICAgICAgICAgICAgKytj
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6
OlVURjhRdWVyeToKLSAgICAgICAgICAgIExPR19TVEFURSgiVVRGOFF1ZXJ5Iik7Ci0gICAgICAg
ICAgICBBU1NFUlQocXVlcnlCZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PigpKTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkZyYWdtZW50OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgQVNTRVJUKCFub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAg
ICB1dGY4UXVlcnlFbmNvZGUoYyk7Ci0gICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgotICAgICAgICAgICAgZG8gewot
ICAgICAgICAgICAgICAgIExPR19TVEFURSgiTm9uVVRGOFF1ZXJ5Iik7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKHF1ZXJ5QmVnaW4gIT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4o
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCpjID09ICcjJykgewotICAgICAgICAgICAgICAgICAg
ICBlbmNvZGVOb25VVEY4UXVlcnkocXVlcnlCdWZmZXIsICpub25VVEY4UXVlcnlFbmNvZGluZywg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4ocXVlcnlCZWdpbiwgYykpOwotICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFwcGVuZENv
ZGVQb2ludChxdWVyeUJ1ZmZlciwgKmMpOwotICAgICAgICAgICAgICAgIGFkdmFuY2UoYywgcXVl
cnlCZWdpbik7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpGcmFnbWVudDoKLSAgICAgICAgICAgIFVSTF9Q
QVJTRVJfTE9HKCJTdGF0ZSBGcmFnbWVudCIpOwotICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNv
ZGU8aXNJblNpbXBsZUVuY29kZVNldD4oYyk7Ci0gICAgICAgICAgICArK2M7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICBj
YXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTY2hlbWVT
dGFydCIpOwotICAgICAgICBpZiAoIWN1cnJlbnRQb3NpdGlvbihjKSAmJiBiYXNlLmlzVmFsaWQo
KSAmJiAhYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwpIHsKLSAgICAgICAgICAgIG1fdXJsID0gYmFz
ZTsKLSAgICAgICAgICAgIG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgU3RhdGU6OlNjaGVtZToKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJT
Y2hlbWUiKTsKLSAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBT
dGF0ZTo6Tm9TY2hlbWU6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiTm9TY2hlbWUiKTsKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBjYXNlIFN0YXRlOjpTcGVj
aWFsUmVsYXRpdmVPckF1dGhvcml0eToKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTcGVjaWFs
UmVsYXRpdmVPckF1dGhvcml0eSIpOwotICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBV
UkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFN0YXRlOjpQYXRoT3JBdXRob3JpdHk6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7Ci0gICAgICAgIEFTU0VSVChtX3VybC5tX3VzZXJTdGFy
dCk7Ci0gICAgICAgIEFTU0VSVChtX3VybC5tX3VzZXJTdGFydCA9PSBjdXJyZW50UG9zaXRpb24o
YykpOwotICAgICAgICBBU1NFUlQocGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0g
MSkgPT0gJy8nKTsKLSAgICAgICAgbV91cmwubV91c2VyU3RhcnQtLTsKLSAgICAgICAgbV91cmwu
bV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0gICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAg
ICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZToKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJSZWxhdGl2ZSIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IGNhc2UgU3RhdGU6OlJlbGF0aXZlU2xhc2g6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiUmVs
YXRpdmVTbGFzaCIpOwotICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQ
b3J0RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKLSAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5t
X2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOwotICAgICAgICBtX3VybC5tX3BhdGhF
bmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVu
ZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcyIpOwotICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAg
IG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25v
cmVTbGFzaGVzOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlJZ25v
cmVTbGFzaGVzIik7Ci0gICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgU3RhdGU6OkF1dGhvcml0eU9ySG9zdDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJBdXRo
b3JpdHlPckhvc3QiKTsKLSAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9u
KGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1f
dXJsLm1fdXNlckVuZDsKLSAgICAgICAgaWYgKGF1dGhvcml0eU9ySG9zdEJlZ2luLmF0RW5kKCkp
IHsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAg
ICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAg
ICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICBt
X3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoYXV0
aG9yaXR5T3JIb3N0QmVnaW4pKSB7Ci0gICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobV91cmxJc1NwZWNp
YWwpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7Ci0gICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hv
c3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7Ci0gICAgICAgIH0KLSAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgIG1fdXJsLm1fcXVl
cnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6
Okhvc3Q6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiSG9zdCIpOwotICAgICAgICBpZiAoIXBh
cnNlSG9zdEFuZFBvcnQoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7Ci0gICAgICAgICAgICBmYWls
dXJlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fdXJs
SXNTcGVjaWFsKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJs
Lm1fcG9ydExlbmd0aDsKLSAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3Vy
bC5tX3BhdGhFbmQ7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OkZpbGU6Ci0gICAgICAgIExPR19GSU5B
TF9TVEFURSgiRmlsZSIpOwotICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90
b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVS
TFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoIi8vLyIsIDMpOwotICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
dGF0ZTo6RmlsZVNsYXNoOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGVTbGFzaCIpOwot
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0g
Y3VycmVudFBvc2l0aW9uKGMpICsgMTsKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8i
LCAyKTsKLSAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAg
ICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91
cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1fcG9ydExl
bmd0aCA9IDA7Ci0gICAgICAgIGlmIChjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihiYXNlKSkg
ewotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5t
X3VzZXJTdGFydCArIDE7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OkZpbGVIb3N0Ogot
ICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGVIb3N0Iik7Ci0gICAgICAgIGlmICh0YWtlc1R3
b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9y
aXR5T3JIb3N0QmVnaW4sIGMpKQotICAgICAgICAgICAgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIo
YXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYXV0
aG9yaXR5T3JIb3N0QmVnaW4pOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OwotICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJl
Z2luKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBv
c2l0aW9uKGMpOwotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgaWYgKGF1dGhvcml0eU9ySG9zdEJlZ2luID09IGMpIHsKLSAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsK
LSAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsK
LSAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAg
ICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAg
ICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKLSAgICAgICAgICAg
IGZhaWx1cmUoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN5
bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgaWYgKGlzTG9jYWxob3N0KHBhcnNlZERhdGFWaWV3
KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJlbnRQb3NpdGlvbihjKSAtIG1fdXJsLm1fcGFzc3dv
cmRFbmQpKSkgewotICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91cmwubV9wYXNz
d29yZEVuZCk7Ci0gICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24o
Yyk7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICB9Ci0gICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOwotICAg
ICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpQYXRoU3RhcnQ6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiUGF0aFN0YXJ0Iik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoIik7
Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6Ci0gICAgICAgIExPR19GSU5BTF9TVEFU
RSgiQ2Fubm90QmVBQmFzZVVSTFBhdGgiKTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3Vy
cmVudFBvc2l0aW9uKGMpOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRo
RW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpVVEY4UXVlcnk6Ci0gICAgICAg
IExPR19GSU5BTF9TVEFURSgiVVRGOFF1ZXJ5Iik7Ci0gICAgICAgIEFTU0VSVChxdWVyeUJlZ2lu
ID09IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOwotICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFN0YXRlOjpOb25VVEY4UXVlcnk6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiTm9uVVRGOFF1
ZXJ5Iik7Ci0gICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KCkpOwotICAgICAgICBlbmNvZGVOb25VVEY4UXVlcnkocXVlcnlCdWZmZXIs
ICpub25VVEY4UXVlcnlFbmNvZGluZywgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4o
cXVlcnlCZWdpbiwgYykpOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGcmFnbWVudDoKLSAgICAg
ICAgTE9HX0ZJTkFMX1NUQVRFKCJGcmFnbWVudCIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0K
LSAgICBpZiAoTElLRUxZKCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpIHsKLSAgICAgICAgbV91
cmwubV9zdHJpbmcgPSBtX2lucHV0U3RyaW5nOwotICAgICAgICBBU1NFUlQobV9hc2NpaUJ1ZmZl
ci5pc0VtcHR5KCkpOwotICAgIH0gZWxzZQotICAgICAgICBtX3VybC5tX3N0cmluZyA9IFN0cmlu
Zzo6YWRvcHQoV1RGTW92ZShtX2FzY2lpQnVmZmVyKSk7Ci0gICAgbV91cmwubV9pc1ZhbGlkID0g
dHJ1ZTsKLSAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2VkIFVSTCA8JXM+IiwgbV91cmwubV9zdHJp
bmcudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Ci12b2lkIFVSTFBhcnNlcjo6cGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgaWYgKFVOTElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkp
KSB7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIG1fdXJsLm1f
dXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIG1fdXJsLm1fcGFz
c3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Zm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkgewotICAgICAgICBp
ZiAoKml0ZXJhdG9yID09ICc6JykgewotICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3Vy
cmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGF1dG8gaXRlcmF0b3JBdENvbG9u
ID0gaXRlcmF0b3I7Ci0gICAgICAgICAgICArK2l0ZXJhdG9yOwotICAgICAgICAgICAgYm9vbCB0
YWJPck5ld2xpbmVBZnRlckNvbG9uID0gZmFsc2U7Ci0gICAgICAgICAgICB3aGlsZSAoVU5MSUtF
TFkoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAg
ICAgICAgICAgICAgICB0YWJPck5ld2xpbmVBZnRlckNvbG9uID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICArK2l0ZXJhdG9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KGl0ZXJhdG9yLmF0RW5kKCkpKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0
ZXJhdG9yQXRDb2xvbik7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1f
dXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICBpZiAobV91cmwubV91c2VyRW5kID4gbV91
cmwubV91c2VyU3RhcnQpCi0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
J0AnKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAodGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbikKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oaXRlcmF0b3JBdENvbG9uKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
JzonKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHV0ZjhQZXJjZW50
RW5jb2RlPFdlYkNvcmU6OmlzSW5Vc2VySW5mb0VuY29kZVNldD4oaXRlcmF0b3IpOwotICAgIH0K
LSAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7IGFkdmFuY2UoaXRlcmF0b3IpKQotICAgICAg
ICB1dGY4UGVyY2VudEVuY29kZTxXZWJDb3JlOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJh
dG9yKTsKLSAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9y
KTsKLSAgICBpZiAoIW1fdXJsLm1fdXNlckVuZCkKLSAgICAgICAgbV91cmwubV91c2VyRW5kID0g
bV91cmwubV9wYXNzd29yZEVuZDsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdAJyk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+Ci12b2lkIFVSTFBhcnNlcjo6
YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikKLXsK
LSAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2lnbmVkSW50ZWdlclR5cGUpICogMyArIDFdOwotICAg
IExDaGFyKiBlbmQgPSBzdGQ6OmVuZChidWYpOwotICAgIExDaGFyKiBwID0gZW5kOwotICAgIGRv
IHsKLSAgICAgICAgKi0tcCA9IChudW1iZXIgJSAxMCkgKyAnMCc7Ci0gICAgICAgIG51bWJlciAv
PSAxMDsKLSAgICB9IHdoaWxlIChudW1iZXIpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIocCwg
ZW5kIC0gcCk7Ci19Ci0KLXZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY0KElQdjRBZGRyZXNz
IGFkZHJlc3MpCi17Ci0gICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRy
ZXNzID4+IDI0KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7Ci0gICAgYXBwZW5kTnVt
YmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzID4+IDE2KTsKLSAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcuJyk7Ci0gICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90Pihh
ZGRyZXNzID4+IDgpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy4nKTsKLSAgICBhcHBlbmRO
dW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQ4X3Q+KGFkZHJlc3MpOwotfQotICAgIAotc3RhdGljIHNp
emVfdCB6ZXJvU2VxdWVuY2VMZW5ndGgoY29uc3Qgc3RkOjphcnJheTx1aW50MTZfdCwgOD4mIGFk
ZHJlc3MsIHNpemVfdCBiZWdpbikKLXsKLSAgICBzaXplX3QgZW5kID0gYmVnaW47Ci0gICAgZm9y
ICg7IGVuZCA8IDg7IGVuZCsrKSB7Ci0gICAgICAgIGlmIChhZGRyZXNzW2VuZF0pCi0gICAgICAg
ICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIGVuZCAtIGJlZ2luOwotfQotCi1zdGF0aWMg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNvbnN0IHN0ZDo6
YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzKQotewotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBsb25nZXN0OwotICAgIHNpemVfdCBsb25nZXN0TGVuZ3RoID0gMDsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IDg7IGkrKykgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gemVyb1NlcXVl
bmNlTGVuZ3RoKGFkZHJlc3MsIGkpOwotICAgICAgICBpZiAobGVuZ3RoKSB7Ci0gICAgICAgICAg
ICBpZiAobGVuZ3RoID4gMSAmJiAoIWxvbmdlc3QgfHwgbG9uZ2VzdExlbmd0aCA8IGxlbmd0aCkp
IHsKLSAgICAgICAgICAgICAgICBsb25nZXN0ID0gaTsKLSAgICAgICAgICAgICAgICBsb25nZXN0
TGVuZ3RoID0gbGVuZ3RoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaSArPSBsZW5ndGg7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGxvbmdlc3Q7Ci19Ci0KLXZvaWQgVVJMUGFy
c2VyOjpzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGllY2UpCi17Ci0gICAgYm9vbCBwcmlu
dGVkID0gZmFsc2U7Ci0gICAgaWYgKGF1dG8gbmliYmxlMCA9IHBpZWNlID4+IDEyKSB7Ci0gICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJSGV4RGln
aXQobmliYmxlMCkpOwotICAgICAgICBwcmludGVkID0gdHJ1ZTsKLSAgICB9Ci0gICAgYXV0byBu
aWJibGUxID0gcGllY2UgPj4gOCAmIDB4RjsKLSAgICBpZiAocHJpbnRlZCB8fCBuaWJibGUxKSB7
Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJ
SGV4RGlnaXQobmliYmxlMSkpOwotICAgICAgICBwcmludGVkID0gdHJ1ZTsKLSAgICB9Ci0gICAg
YXV0byBuaWJibGUyID0gcGllY2UgPj4gNCAmIDB4RjsKLSAgICBpZiAocHJpbnRlZCB8fCBuaWJi
bGUyKQotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VB
U0NJSUhleERpZ2l0KG5pYmJsZTIpKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmli
YmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHBpZWNlICYgMHhGKSk7Ci19Ci0KLXZvaWQgVVJM
UGFyc2VyOjpzZXJpYWxpemVJUHY2KFVSTFBhcnNlcjo6SVB2NkFkZHJlc3MgYWRkcmVzcykKLXsK
LSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdbJyk7Ci0gICAgYXV0byBjb21wcmVzc1BvaW50ZXIg
PSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKLSAgICBmb3IgKHNpemVfdCBwaWVj
ZSA9IDA7IHBpZWNlIDwgODsgcGllY2UrKykgewotICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVy
ICYmIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpID09IHBpZWNlKSB7Ci0gICAgICAgICAgICBBU1NF
UlQoIWFkZHJlc3NbcGllY2VdKTsKLSAgICAgICAgICAgIGlmIChwaWVjZSkKLSAgICAgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOjoiLCAyKTsKLSAgICAgICAgICAgIHdoaWxl
IChwaWVjZSA8IDggJiYgIWFkZHJlc3NbcGllY2VdKQotICAgICAgICAgICAgICAgIHBpZWNlKys7
Ci0gICAgICAgICAgICBpZiAocGllY2UgPT0gOCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBzZXJpYWxpemVJUHY2UGllY2UoYWRkcmVzc1twaWVjZV0pOwotICAg
ICAgICBpZiAocGllY2UgPCA3KQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicp
OwotICAgIH0KLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCddJyk7Ci19Ci0KLWVudW0gY2xhc3Mg
VVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3IgewotICAgIEZhaWx1cmUsCi0gICAgT3Zl
cmZsb3csCi19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotRXhwZWN0ZWQ8
dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6OnBh
cnNlSVB2NFBpZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwg
Ym9vbCYgZGlkU2VlU3ludGF4VmlvbGF0aW9uKQotewotICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1
aW50OF90IHsKLSAgICAgICAgVW5rbm93bkJhc2UsCi0gICAgICAgIERlY2ltYWwsCi0gICAgICAg
IE9jdGFsT3JIZXgsCi0gICAgICAgIE9jdGFsLAotICAgICAgICBIZXgsCi0gICAgfTsKLSAgICBT
dGF0ZSBzdGF0ZSA9IFN0YXRlOjpVbmtub3duQmFzZTsKLSAgICBDaGVja2VkPHVpbnQzMl90LCBS
ZWNvcmRPdmVyZmxvdz4gdmFsdWUgPSAwOwotICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAmJiAq
aXRlcmF0b3IgPT0gJy4nKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNl
UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsK
LSAgICAgICAgaWYgKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpIHsKLSAgICAgICAgICAgIGRp
ZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICArK2l0ZXJhdG9yOwotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAn
LicpIHsKLSAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICAg
ICAgICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKLSAgICAgICAgfQotICAgICAgICBzd2l0
Y2ggKHN0YXRlKSB7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlVua25vd25CYXNlOgotICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCppdGVyYXRvciA9PSAnMCcpKSB7Ci0gICAgICAgICAgICAgICAgKytp
dGVyYXRvcjsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbE9ySGV4OwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6RGVjaW1hbDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpP
Y3RhbE9ySGV4OgotICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJ3gnIHx8ICppdGVyYXRvciA9PSAnWCcpIHsKLSAg
ICAgICAgICAgICAgICArK2l0ZXJhdG9yOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OkhleDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6Ok9jdGFsOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U3RhdGU6OkRlY2ltYWw6Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3Ip
KQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGllY2VQYXJzaW5n
RXJyb3I6OkZhaWx1cmUpOwotICAgICAgICAgICAgdmFsdWUgKj0gMTA7Ci0gICAgICAgICAgICB2
YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUu
aGFzT3ZlcmZsb3dlZCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
SVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7Ci0gICAgICAgICAgICArK2l0ZXJhdG9y
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Ok9jdGFsOgotICAgICAg
ICAgICAgQVNTRVJUKGRpZFNlZVN5bnRheFZpb2xhdGlvbik7Ci0gICAgICAgICAgICBpZiAoKml0
ZXJhdG9yIDwgJzAnIHx8ICppdGVyYXRvciA+ICc3JykKLSAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICAgICAg
ICAgIHZhbHVlICo9IDg7Ci0gICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7Ci0g
ICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVy
Zmxvdyk7Ci0gICAgICAgICAgICArK2l0ZXJhdG9yOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgU3RhdGU6OkhleDoKLSAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhWaW9s
YXRpb24pOwotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKml0ZXJhdG9yKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9y
OjpGYWlsdXJlKTsKLSAgICAgICAgICAgIHZhbHVlICo9IDE2OwotICAgICAgICAgICAgdmFsdWUg
Kz0gdG9BU0NJSUhleFZhbHVlKCppdGVyYXRvcik7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFko
dmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7Ci0gICAgICAgICAgICArK2l0
ZXJhdG9yOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJU
KCF2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpOwotICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsK
LX0KLQotQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDY0X3QgcG93MjU2KHNpemVfdCBleHBvbmVu
dCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChleHBvbmVudCA8PSA0KTsKLSAgICB1aW50NjRfdCB2
YWx1ZXNbNV0gPSB7MSwgMjU2LCAyNTYgKiAyNTYsIDI1NiAqIDI1NiAqIDI1NiwgMjU2dWxsICog
MjU2ICogMjU2ICogMjU2IH07Ci0gICAgcmV0dXJuIHZhbHVlc1tleHBvbmVudF07Ci19Ci0KLWVu
dW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yIHsKLSAgICBGYWlsdXJlLAotICAg
IE5vdElQdjQsCi19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlRm9yU3ludGF4
VmlvbGF0aW9uLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotRXhwZWN0ZWQ8VVJMUGFyc2VyOjpJ
UHY0QWRkcmVzcywgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6OnBhcnNl
SVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZvclN5bnRheFZp
b2xhdGlvbj4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24sIENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIFZlY3RvcjxFeHBlY3RlZDx1
aW50MzJfdCwgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3I+LCA0PiBpdGVtczsKLSAg
ICBib29sIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IGZhbHNlOwotICAgIGlmICghaXRlcmF0b3Iu
YXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVu
ZCgpKSB7Ci0gICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7Ci0gICAgICAg
ICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgKytpdGVyYXRv
cjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpdGVtcy5z
aXplKCkgPj0gNCkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2lu
Z0Vycm9yOjpOb3RJUHY0KTsKLSAgICAgICAgaXRlbXMuYXBwZW5kKHBhcnNlSVB2NFBpZWNlKGl0
ZXJhdG9yLCBkaWRTZWVTeW50YXhWaW9sYXRpb24pKTsKLSAgICAgICAgaWYgKCFpdGVyYXRvci5h
dEVuZCgpICYmICppdGVyYXRvciA9PSAnLicpIHsKLSAgICAgICAgICAgICsraXRlcmF0b3I7Ci0g
ICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICAg
ICBlbHNlIGlmICgqaXRlcmF0b3IgPT0gJy4nKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgfHwgIWl0ZW1zLnNpemUoKSB8fCBpdGVtcy5zaXpl
KCkgPiA0KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6
Tm90SVB2NCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAg
aWYgKCFpdGVtLmhhc192YWx1ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0UGllY2VQYXJzaW5n
RXJyb3I6OkZhaWx1cmUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBh
cnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgfQotICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6
IGl0ZW1zKSB7Ci0gICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkg
PT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdykKLSAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICB9Ci0gICAgaWYg
KGl0ZW1zLnNpemUoKSA+IDEpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpdGVt
cy5zaXplKCkgLSAxOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChpdGVtc1tpXS52YWx1ZSgpID4g
MjU1KQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoaXRlbXNbaXRlbXMuc2l6
ZSgpIC0gMV0udmFsdWUoKSA+PSBwb3cyNTYoNSAtIGl0ZW1zLnNpemUoKSkpCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLQotICAgIGlm
IChkaWRTZWVTeW50YXhWaW9sYXRpb24pCi0gICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRv
ckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0g
OiBpdGVtcykgewotICAgICAgICBpZiAoaXRlbS52YWx1ZSgpID4gMjU1KQotICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAg
IH0KLQotICAgIGlmIChVTkxJS0VMWShpdGVtcy5zaXplKCkgIT0gNCkpCi0gICAgICAgIHN5bnRh
eFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLQotICAgIElQ
djRBZGRyZXNzIGlwdjQgPSBpdGVtcy50YWtlTGFzdCgpLnZhbHVlKCk7Ci0gICAgZm9yIChzaXpl
X3QgY291bnRlciA9IDA7IGNvdW50ZXIgPCBpdGVtcy5zaXplKCk7ICsrY291bnRlcikKLSAgICAg
ICAgaXB2NCArPSBpdGVtc1tjb3VudGVyXS52YWx1ZSgpICogcG93MjU2KDMgLSBjb3VudGVyKTsK
LSAgICByZXR1cm4gaXB2NDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
LXN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJ
UHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKLXsKLSAgICBp
ZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB1
aW50MzJfdCBwaWVjZSA9IDA7Ci0gICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKLSAgICBz
aXplX3QgZGlnaXRDb3VudCA9IDA7Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7Ci0g
ICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCppdGVyYXRvcikpCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgICAgICArK2RpZ2l0Q291bnQ7Ci0gICAgICAgIGlmICghcGllY2Ug
JiYgKml0ZXJhdG9yID09ICcwJykgewotICAgICAgICAgICAgaWYgKGxlYWRpbmdaZXJvcykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgbGVhZGluZ1pl
cm9zID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXBpZWNlICYmICppdGVyYXRvciA9
PSAnMCcpCi0gICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOwotICAgICAgICBwaWVjZSA9
IHBpZWNlICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7Ci0gICAgICAgIGlmIChwaWVjZSA+IDI1NSkK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFj
dGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgICAgICBp
ZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoKml0
ZXJhdG9yID09ICcuJykKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAocGllY2Ug
JiYgbGVhZGluZ1plcm9zKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVy
biBwaWVjZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0ZDo6b3B0
aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjRBZGRyZXNz
SW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsK
LSAgICBJUHY0QWRkcmVzcyBhZGRyZXNzID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IDQ7ICsraSkgewotICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGllY2UgPSBw
YXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoaXRlcmF0b3IpKQotICAgICAgICAgICAgYWRkcmVzcyA9
IChhZGRyZXNzIDw8IDgpICsgcGllY2UudmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgaWYgKGkgPCAzKSB7Ci0gICAgICAgICAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgICAgICAgICAgaWYgKCppdGVyYXRvciAhPSAnLicpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwg
UmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgICAgICB9IGVsc2UgaWYg
KCFpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICB9Ci0gICAgQVNTRVJUKGl0ZXJhdG9yLmF0RW5kKCkpOwotICAgIHJldHVybiBhZGRyZXNzOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RkOjpvcHRpb25hbDxVUkxQ
YXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKLXsKLSAgICBBU1NFUlQoKmMgPT0gJ1snKTsKLSAgICBj
b25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7Ci0gICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwotICAg
IGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBJUHY2
QWRkcmVzcyBhZGRyZXNzID0ge3swLCAwLCAwLCAwLCAwLCAwLCAwLCAwfX07Ci0gICAgc2l6ZV90
IHBpZWNlUG9pbnRlciA9IDA7Ci0gICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNvbXByZXNzUG9p
bnRlcjsKLQotICAgIGlmICgqYyA9PSAnOicpIHsKLSAgICAgICAgYWR2YW5jZShjLCBob3N0QmVn
aW4pOwotICAgICAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICAgICAgaWYgKCpjICE9ICc6JykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICAgICAgKytwaWVjZVBv
aW50ZXI7Ci0gICAgICAgIGNvbXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRlcjsKLSAgICB9Ci0g
ICAgCi0gICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9
PSA4KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCpjID09
ICc6JykgewotICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlcikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4p
OwotICAgICAgICAgICAgKytwaWVjZVBvaW50ZXI7Ci0gICAgICAgICAgICBjb21wcmVzc1BvaW50
ZXIgPSBwaWVjZVBvaW50ZXI7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAocGllY2VQb2ludGVyID09IDYgfHwgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBv
aW50ZXIgPCA2KSkgewotICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8SVB2NEFkZHJlc3M+
IGlwdjRBZGRyZXNzID0gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoYykpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA9PSA1KQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihob3N0QmVnaW4pOwotICAgICAgICAgICAgICAgIGFkZHJlc3NbcGllY2VQb2lu
dGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSA+PiAxNjsKLSAgICAgICAgICAgICAgICBhZGRy
ZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgJiAweEZGRkY7Ci0gICAg
ICAgICAgICAgICAgYyA9IHsgfTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICB1aW50MTZfdCB2YWx1ZSA9IDA7Ci0gICAgICAgIHNpemVf
dCBsZW5ndGggPSAwOwotICAgICAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOwotICAgICAg
ICBmb3IgKDsgbGVuZ3RoIDwgNDsgbGVuZ3RoKyspIHsKLSAgICAgICAgICAgIGlmIChjLmF0RW5k
KCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhE
aWdpdCgqYykpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoaXNBU0NJ
SVVwcGVyKCpjKSkKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsK
LSAgICAgICAgICAgIGlmICgqYyA9PSAnMCcgJiYgIWxlbmd0aCkKLSAgICAgICAgICAgICAgICBs
ZWFkaW5nWmVyb3MgPSB0cnVlOwotICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAqIDB4MTAgKyB0
b0FTQ0lJSGV4VmFsdWUoKmMpOwotICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoVU5MSUtFTFkoKHZhbHVlICYmIGxlYWRp
bmdaZXJvcykgfHwgKCF2YWx1ZSAmJiBsZW5ndGggPiAxKSkpCi0gICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaG9zdEJlZ2luKTsKLQotICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9
IHZhbHVlOwotICAgICAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCB8fCAqYyAhPSAnOicpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7Ci0gICAgfQot
ICAgIAotICAgIGlmICghYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIAotICAgIGlmIChjb21wcmVzc1BvaW50ZXIpIHsKLSAgICAgICAgc2l6ZV90IHN3YXBzID0g
cGllY2VQb2ludGVyIC0gY29tcHJlc3NQb2ludGVyLnZhbHVlKCk7Ci0gICAgICAgIHBpZWNlUG9p
bnRlciA9IDc7Ci0gICAgICAgIHdoaWxlIChzd2FwcykKLSAgICAgICAgICAgIHN0ZDo6c3dhcChh
ZGRyZXNzW3BpZWNlUG9pbnRlci0tXSwgYWRkcmVzc1tjb21wcmVzc1BvaW50ZXIudmFsdWUoKSAr
IHN3YXBzLS0gLSAxXSk7Ci0gICAgfSBlbHNlIGlmIChwaWVjZVBvaW50ZXIgIT0gOCkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwb3Nz
aWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFkZHJlc3MpOwot
ICAgIGlmIChwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikKLSAgICAgICAgcG9zc2libGVDb21wcmVz
c1BvaW50ZXIudmFsdWUoKSsrOwotICAgIGlmIChVTkxJS0VMWShjb21wcmVzc1BvaW50ZXIgIT0g
cG9zc2libGVDb21wcmVzc1BvaW50ZXIpKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJl
Z2luKTsKLSAgICAKLSAgICByZXR1cm4gYWRkcmVzczsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KLVVSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJjZW50
RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRp
b24pCi17Ci0gICAgTENoYXJCdWZmZXIgb3V0cHV0OwotICAgIG91dHB1dC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGxlbmd0aCk7Ci0gICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICB1aW50OF90IGJ5dGUgPSBpbnB1dFtpXTsKLSAgICAgICAgaWYg
KGJ5dGUgIT0gJyUnKQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsK
LSAgICAgICAgZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpIDwgbGVuZ3RoIC0gMikgewotICAgICAg
ICAgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pICYmIGlzQVNDSUlIZXhEaWdp
dChpbnB1dFtpICsgMl0pKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICAgICAgICAgIG91dHB1dC51
bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJd
KSk7Ci0gICAgICAgICAgICAgICAgaSArPSAyOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOwotICAgIH0KLSAgICByZXR1
cm4gb3V0cHV0OwotfQotICAgIAotVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciBVUkxQYXJzZXI6OnBl
cmNlbnREZWNvZGUoY29uc3QgTENoYXIqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIExD
aGFyQnVmZmVyIG91dHB1dDsKLSAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5n
dGgpOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07Ci0gICAgICAgIGlmIChieXRlICE9ICclJykK
LSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIGVsc2Ug
aWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKLSAgICAgICAgICAgIGlmIChpc0FT
Q0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDJd
KSkgewotICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZh
bHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7Ci0gICAgICAgICAgICAgICAgaSArPSAy
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFw
cGVuZChieXRlKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2Vk
QXBwZW5kKGJ5dGUpOwotICAgIH0KLSAgICByZXR1cm4gb3V0cHV0OwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6TENoYXJCdWZm
ZXI+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiBkb21haW4sIGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlv
blBvc2l0aW9uKQotewotICAgIExDaGFyQnVmZmVyIGFzY2lpOwotICAgIGlmIChkb21haW4uaXNB
bGxBU0NJSSgpKSB7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBkb21haW4ubGVuZ3RoKCk7Ci0g
ICAgICAgIGlmIChkb21haW4uaXM4Qml0KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IExDaGFyKiBj
aGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgICAgICBhc2NpaS5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVND
SUlVcHBlcihjaGFyYWN0ZXJzW2ldKSkpCi0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICAgICAgICAgICAg
ICBhc2NpaS51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUxvd2VyKGNoYXJhY3RlcnNbaV0pKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnMxNigpOwotICAgICAgICAgICAgYXNjaWkucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FT
Q0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICAgICAg
ICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGFzY2lpOwotICAgIH0KLSAg
ICAKLSAgICBjb25zdCBzaXplX3QgbWF4RG9tYWluTGVuZ3RoID0gNjQ7Ci0gICAgVUNoYXIgaG9z
dG5hbWVCdWZmZXJbbWF4RG9tYWluTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9a
RVJPX0VSUk9SOwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9f
SU5JVElBTElaRVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFf
bmFtZVRvQVNDSUkoJmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpLCBTdHJpbmdW
aWV3KGRvbWFpbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGRvbWFpbi5sZW5ndGgoKSwgaG9z
dG5hbWVCdWZmZXIsIG1heERvbWFpbkxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmZXJyb3Ip
OwotICAgIEFTU0VSVChudW1DaGFyYWN0ZXJzQ29udmVydGVkIDw9IHN0YXRpY19jYXN0PGludDMy
X3Q+KG1heERvbWFpbkxlbmd0aCkpOwotCi0gICAgaWYgKFVfU1VDQ0VTUyhlcnJvcikgJiYgIXBy
b2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgewotICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkg
PCBudW1DaGFyYWN0ZXJzQ29udmVydGVkOyArK2kpIHsKLSAgICAgICAgICAgIEFTU0VSVChpc0FT
Q0lJKGhvc3RuYW1lQnVmZmVyW2ldKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWlzQVNDSUlVcHBl
cihob3N0bmFtZUJ1ZmZlcltpXSkpOwotICAgICAgICB9Ci0gICAgICAgIGFzY2lpLmFwcGVuZCho
b3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7Ci0gICAgICAgIGlmIChkb21h
aW4gIT0gU3RyaW5nVmlldyhhc2NpaS5kYXRhKCksIGFzY2lpLnNpemUoKSkpCi0gICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0g
ICAgICAgIHJldHVybiBhc2NpaTsKLSAgICB9Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0K
LQotYm9vbCBVUkxQYXJzZXI6Omhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29uc3QgVVJMUGFy
c2VyOjpMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW4pCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhc2NpaURvbWFpbi5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoaXNGb3JiaWRkZW5I
b3N0Q29kZVBvaW50KGFzY2lpRG9tYWluW2ldKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+Ci1ib29sIFVSTFBhcnNlcjo6cGFyc2VQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+JiBpdGVyYXRvcikKLXsKLSAgICBBU1NFUlQoKml0ZXJhdG9yID09ICc6Jyk7Ci0g
ICAgYXV0byBjb2xvbkl0ZXJhdG9yID0gaXRlcmF0b3I7Ci0gICAgYWR2YW5jZShpdGVyYXRvciwg
Y29sb25JdGVyYXRvcik7Ci0gICAgdWludDMyX3QgcG9ydCA9IDA7Ci0gICAgaWYgKFVOTElLRUxZ
KGl0ZXJhdG9yLmF0RW5kKCkpKSB7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJy
ZW50UG9zaXRpb24oY29sb25JdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKLSAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKLSAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGNvbG9uSXRlcmF0b3IpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgc2l6ZV90
IGRpZ2l0Q291bnQgPSAwOwotICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7Ci0gICAgZm9y
ICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgIGlmIChVTkxJS0VM
WShpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKSB7Ci0gICAgICAgICAgICBpZiAoKml0
ZXJhdG9yID09ICcwJyAmJiAhZGlnaXRDb3VudCkKLSAgICAgICAgICAgICAgICBsZWFkaW5nWmVy
b3MgPSB0cnVlOwotICAgICAgICAgICAgKytkaWdpdENvdW50OwotICAgICAgICAgICAgcG9ydCA9
IHBvcnQgKiAxMCArICppdGVyYXRvciAtICcwJzsKLSAgICAgICAgICAgIGlmIChwb3J0ID4gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgaWYgKHBvcnQgJiYgbGVhZGluZ1plcm9zKQotICAgICAgICBzeW50YXhWaW9sYXRp
b24oY29sb25JdGVyYXRvcik7Ci0gICAgCi0gICAgaWYgKCFwb3J0ICYmIGRpZ2l0Q291bnQgPiAx
KQotICAgICAgICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7Ci0KLSAgICBBU1NFUlQo
cG9ydCA9PSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOwotICAgIGlmIChVTkxJS0VMWShk
ZWZhdWx0UG9ydEZvclByb3RvY29sKHBhcnNlZERhdGFWaWV3KDAsIG1fdXJsLm1fc2NoZW1lRW5k
KSkgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKSkKLSAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgIGVsc2UgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCc6Jyk7Ci0gICAgICAgIEFTU0VSVChwb3J0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDE2X3Q+OjptYXgoKSk7Ci0gICAgICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDE2
X3Q+KHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQg
cG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7
Ci0gICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRMZW5ndGgpOwot
ICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1ib29sIFVSTFBhcnNlcjo6cGFy
c2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikK
LXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCpp
dGVyYXRvciA9PSAnWycpIHsKLSAgICAgICAgYXV0byBpcHY2RW5kID0gaXRlcmF0b3I7Ci0gICAg
ICAgIHdoaWxlICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2RW5kICE9ICddJykKLSAgICAgICAg
ICAgICsraXB2NkVuZDsKLSAgICAgICAgaWYgKGlwdjZFbmQuYXRFbmQoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IHBhcnNlSVB2Nkhvc3Qo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaXRlcmF0b3IsIGlwdjZFbmQpKSkgewot
ICAgICAgICAgICAgc2VyaWFsaXplSVB2NihhZGRyZXNzLnZhbHVlKCkpOwotICAgICAgICAgICAg
aWYgKCFpcHY2RW5kLmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGlwdjZFbmQp
OwotICAgICAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2RW5kID09ICc6
JykgewotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRp
b24oaXB2NkVuZCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXB2NkVu
ZCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRM
ZW5ndGggPSAwOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQpOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIGlmICghbV91cmxJc1NwZWNpYWwpIHsKLSAgICAgICAgZm9yICg7ICFp
dGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFko
aXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCi0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KCpp
dGVyYXRvcikgJiYgKml0ZXJhdG9yICE9ICclJykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJblNpbXBsZUVuY29kZVNldD4o
aXRlcmF0b3IpOwotICAgICAgICB9Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQ
b3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAg
ICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAgfQot
ICAgIAotICAgIGlmIChMSUtFTFkoIW1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJKSkgewotICAg
ICAgICBhdXRvIGhvc3RJdGVyYXRvciA9IGl0ZXJhdG9yOwotICAgICAgICBmb3IgKDsgIWl0ZXJh
dG9yLmF0RW5kKCk7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGlmIChpc1RhYk9yTmV3bGlu
ZSgqaXRlcmF0b3IpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYg
KCppdGVyYXRvciA9PSAnOicpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBp
ZiAoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KCppdGVyYXRvcikpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gYWRkcmVzcyA9IHBhcnNlSVB2
NEhvc3QoaG9zdEl0ZXJhdG9yLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihob3N0
SXRlcmF0b3IsIGl0ZXJhdG9yKSk7Ci0gICAgICAgIGlmIChhZGRyZXNzKSB7Ci0gICAgICAgICAg
ICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7Ci0gICAgICAgICAgICBtX3VybC5tX2hv
c3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgaWYgKGl0ZXJh
dG9yLmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFkZHJl
c3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBmb3IgKDsgaG9zdEl0ZXJhdG9yICE9IGl0ZXJhdG9yOyArK2hv
c3RJdGVyYXRvcikgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCpo
b3N0SXRlcmF0b3IpKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0SXRl
cmF0b3IpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqaG9zdEl0ZXJhdG9yKSkpCi0gICAgICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RJdGVyYXRvcik7Ci0gICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqaG9zdEl0ZXJhdG9yKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAg
ICAgICAgaWYgKCFob3N0SXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJz
ZVBvcnQoaG9zdEl0ZXJhdG9yKTsKLSAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGN1cnJl
bnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKLSAgICAgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIAotICAgIGNvbnN0IGF1dG8gaG9zdEJlZ2luID0gaXRlcmF0b3I7Ci0gICAgCi0gICAgTENo
YXJCdWZmZXIgdXRmOEVuY29kZWQ7Ci0gICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0
ZXJhdG9yKSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3Ip
KSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUkoKml0ZXJhdG9y
KSkpCi0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLQotICAgICAgICBp
ZiAoIVVfSVNfVU5JQ09ERV9DSEFSKCppdGVyYXRvcikpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwotICAgICAgICBpbnQz
Ml90IG9mZnNldCA9IDA7Ci0gICAgICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQs
ICppdGVyYXRvcik7Ci0gICAgICAgIHV0ZjhFbmNvZGVkLmFwcGVuZChidWZmZXIsIG9mZnNldCk7
Ci0gICAgfQotICAgIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZSh1
dGY4RW5jb2RlZC5kYXRhKCksIHV0ZjhFbmNvZGVkLnNpemUoKSwgaG9zdEJlZ2luKTsKLSAgICBT
dHJpbmcgZG9tYWluID0gU3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBl
cmNlbnREZWNvZGVkLnNpemUoKSk7Ci0gICAgaWYgKGRvbWFpbi5pc051bGwoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhwZXJjZW50RGVjb2Rl
ZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSkpCi0gICAgICAgIHN5bnRheFZpb2xhdGlv
bihob3N0QmVnaW4pOwotICAgIGF1dG8gYXNjaWlEb21haW4gPSBkb21haW5Ub0FTQ0lJKCpkb21h
aW4uaW1wbCgpLCBob3N0QmVnaW4pOwotICAgIGlmICghYXNjaWlEb21haW4gfHwgaGFzRm9yYmlk
ZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbi52YWx1ZSgpKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIExDaGFyQnVmZmVyJiBhc2NpaURvbWFpblZhbHVlID0gYXNjaWlEb21haW4udmFs
dWUoKTsKLSAgICBjb25zdCBMQ2hhciogYXNjaWlEb21haW5DaGFyYWN0ZXJzID0gYXNjaWlEb21h
aW5WYWx1ZS5kYXRhKCk7Ci0KLSAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRIb3N0KGhvc3RC
ZWdpbiwgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+KGFzY2lpRG9tYWluVmFsdWUuYmVnaW4oKSwg
YXNjaWlEb21haW5WYWx1ZS5lbmQoKSkpOwotICAgIGlmIChhZGRyZXNzKSB7Ci0gICAgICAgIHNl
cmlhbGl6ZUlQdjQoYWRkcmVzcy52YWx1ZSgpKTsKLSAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
Y3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkp
IHsKLSAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsK
LSAgICB9Ci0gICAgaWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpGYWls
dXJlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGFz
Y2lpRG9tYWluQ2hhcmFjdGVycywgYXNjaWlEb21haW5WYWx1ZS5zaXplKCkpOwotICAgIG1fdXJs
Lm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgaWYgKCFpdGVyYXRv
ci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsKLSAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGQ6Om9wdGlvbmFs
PFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCi17Ci0g
ICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJzaW9uKTsKLSAgICBpZiAodXRm
OC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvIHBlcmNl
bnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
dXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7Ci19Ci0KLS8v
IGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmxlbmNvZGVkLXBhcnNlcgot
YXV0byBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyBpbnB1dCkgLT4g
VVJMRW5jb2RlZEZvcm0KLXsKLSAgICBVUkxFbmNvZGVkRm9ybSBvdXRwdXQ7Ci0gICAgZm9yIChT
dHJpbmdWaWV3IGJ5dGVzIDogaW5wdXQuc3BsaXQoJyYnKSkgewotICAgICAgICBhdXRvIGVxdWFs
SW5kZXggPSBieXRlcy5maW5kKCc9Jyk7Ci0gICAgICAgIGlmIChlcXVhbEluZGV4ID09IG5vdEZv
dW5kKSB7Ci0gICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVjb2RlKGJ5dGVzLnRvU3Ry
aW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKLSAgICAgICAgICAgIGlmIChuYW1lKQotICAgICAg
ICAgICAgICAgIG91dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIGVtcHR5U3RyaW5nKCkgfSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVjb2Rl
KGJ5dGVzLnN1YnN0cmluZygwLCBlcXVhbEluZGV4KS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAw
eDIwKSk7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJz
dHJpbmcoZXF1YWxJbmRleCArIDEpLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKLSAg
ICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVlKQotICAgICAgICAgICAgICAgIG91dHB1dC5hcHBl
bmQoeyBuYW1lLnZhbHVlKCksIHZhbHVlLnZhbHVlKCkgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIG91dHB1dDsKLX0KLQotc3RhdGljIHZvaWQgc2VyaWFsaXplVVJMRW5jb2RlZEZv
cm0oY29uc3QgU3RyaW5nJiBpbnB1dCwgVmVjdG9yPExDaGFyPiYgb3V0cHV0KQotewotICAgIGF1
dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7Ci0gICAgY29uc3QgY2hhciog
ZGF0YSA9IHV0ZjguZGF0YSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXRmOC5sZW5n
dGgoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgYnl0ZSA9IGRhdGFbaV07Ci0gICAgICAg
IGlmIChieXRlID09IDB4MjApCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDB4MkIpOwotICAg
ICAgICBlbHNlIGlmIChieXRlID09IDB4MkEKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgyRAot
ICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDJFCi0gICAgICAgICAgICB8fCAoYnl0ZSA+PSAweDMw
ICYmIGJ5dGUgPD0gMHgzOSkKLSAgICAgICAgICAgIHx8IChieXRlID49IDB4NDEgJiYgYnl0ZSA8
PSAweDVBKQotICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDVGCi0gICAgICAgICAgICB8fCAoYnl0
ZSA+PSAweDYxICYmIGJ5dGUgPD0gMHg3QSkpIC8vIEZJWE1FOiBQdXQgdGhlc2UgaW4gdGhlIGNo
YXJhY3RlckNsYXNzVGFibGUgdG8gYXZvaWQgYnJhbmNoZXMuCi0gICAgICAgICAgICBvdXRwdXQu
YXBwZW5kKGJ5dGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0
ZShieXRlLCBvdXRwdXQpOwotICAgIH0KLX0KLSAgICAKLVN0cmluZyBVUkxQYXJzZXI6OnNlcmlh
bGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYgdHVwbGVzKQotewotICAgIGlmICh0dXBsZXMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgVmVjdG9yPExDaGFyPiBvdXRwdXQ7
Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IHR1cGxlcykgewotICAgICAgICBpZiAoIW91dHB1dC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCcmJyk7Ci0gICAgICAgIHNlcmlh
bGl6ZVVSTEVuY29kZWRGb3JtKHR1cGxlLmtleSwgb3V0cHV0KTsKLSAgICAgICAgb3V0cHV0LmFw
cGVuZCgnPScpOwotICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS52YWx1ZSwg
b3V0cHV0KTsKLSAgICB9Ci0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShvdXRwdXQp
KTsKLX0KLQotY29uc3QgVUlETkEmIFVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVU
cmFuc2NvZGVyKCkKLXsKLSAgICBzdGF0aWMgVUlETkEqIGVuY29kZXI7Ci0gICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7
Ci0gICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIC8vIFdh
cm5pbmc6IFBsZWFzZSBjb250YWN0IGEgV2ViS2l0R1RLKyBkZXZlbG9wZXIgaWYgY2hhbmdpbmcg
dGhlc2UgZmxhZ3MuCi0gICAgICAgIC8vIFRoZXkgc2hvdWxkIGJlIHN5bmNlZCB3aXRoIGVwaHlf
dXJpX2RlY29kZSgpIGluIGVwaHktdXJpLWhlbHBlcnMuYy4KLSAgICAgICAgZW5jb2RlciA9IHVp
ZG5hX29wZW5VVFM0NihVSUROQV9DSEVDS19CSURJIHwgVUlETkFfQ0hFQ0tfQ09OVEVYVEogfCBV
SUROQV9OT05UUkFOU0lUSU9OQUxfVE9fVU5JQ09ERSB8IFVJRE5BX05PTlRSQU5TSVRJT05BTF9U
T19BU0NJSSwgJmVycm9yKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoVV9TVUNDRVNTKGVycm9y
KSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuY29kZXIpOwotICAgIH0pOwotICAgIHJldHVy
biAqZW5jb2RlcjsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFsKGNvbnN0IFVS
TCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIFVSTF9QQVJTRVJfTE9HKCIlZCAlZCAlZCAlZCAl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlc1xuJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJXMiLAotICAgICAgICBhLm1faXNWYWxpZCwKLSAgICAgICAgYS5tX2Nhbm5vdEJlQUJh
c2VVUkwsCi0gICAgICAgIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAotICAgICAgICBhLm1f
c2NoZW1lRW5kLAotICAgICAgICBhLm1fdXNlclN0YXJ0LAotICAgICAgICBhLm1fdXNlckVuZCwK
LSAgICAgICAgYS5tX3Bhc3N3b3JkRW5kLAotICAgICAgICBhLm1faG9zdEVuZCwKLSAgICAgICAg
YS5tX2hvc3RFbmQgKyBhLm1fcG9ydExlbmd0aCwKLSAgICAgICAgYS5tX3BhdGhBZnRlckxhc3RT
bGFzaCwKLSAgICAgICAgYS5tX3BhdGhFbmQsCi0gICAgICAgIGEubV9xdWVyeUVuZCwKLSAgICAg
ICAgYS5tX3N0cmluZy51dGY4KCkuZGF0YSgpLAotICAgICAgICBiLm1faXNWYWxpZCwKLSAgICAg
ICAgYi5tX2Nhbm5vdEJlQUJhc2VVUkwsCi0gICAgICAgIGIubV9wcm90b2NvbElzSW5IVFRQRmFt
aWx5LAotICAgICAgICBiLm1fc2NoZW1lRW5kLAotICAgICAgICBiLm1fdXNlclN0YXJ0LAotICAg
ICAgICBiLm1fdXNlckVuZCwKLSAgICAgICAgYi5tX3Bhc3N3b3JkRW5kLAotICAgICAgICBiLm1f
aG9zdEVuZCwKLSAgICAgICAgYi5tX2hvc3RFbmQgKyBiLm1fcG9ydExlbmd0aCwKLSAgICAgICAg
Yi5tX3BhdGhBZnRlckxhc3RTbGFzaCwKLSAgICAgICAgYi5tX3BhdGhFbmQsCi0gICAgICAgIGIu
bV9xdWVyeUVuZCwKLSAgICAgICAgYi5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKLQotICAgIHJl
dHVybiBhLm1fc3RyaW5nID09IGIubV9zdHJpbmcKLSAgICAgICAgJiYgYS5tX2lzVmFsaWQgPT0g
Yi5tX2lzVmFsaWQKLSAgICAgICAgJiYgYS5tX2Nhbm5vdEJlQUJhc2VVUkwgPT0gYi5tX2Nhbm5v
dEJlQUJhc2VVUkwKLSAgICAgICAgJiYgYS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPT0gYi5t
X3Byb3RvY29sSXNJbkhUVFBGYW1pbHkKLSAgICAgICAgJiYgYS5tX3NjaGVtZUVuZCA9PSBiLm1f
c2NoZW1lRW5kCi0gICAgICAgICYmIGEubV91c2VyU3RhcnQgPT0gYi5tX3VzZXJTdGFydAotICAg
ICAgICAmJiBhLm1fdXNlckVuZCA9PSBiLm1fdXNlckVuZAotICAgICAgICAmJiBhLm1fcGFzc3dv
cmRFbmQgPT0gYi5tX3Bhc3N3b3JkRW5kCi0gICAgICAgICYmIGEubV9ob3N0RW5kID09IGIubV9o
b3N0RW5kCi0gICAgICAgICYmIGEubV9wb3J0TGVuZ3RoID09IGIubV9wb3J0TGVuZ3RoCi0gICAg
ICAgICYmIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gYi5tX3BhdGhBZnRlckxhc3RTbGFzaAot
ICAgICAgICAmJiBhLm1fcGF0aEVuZCA9PSBiLm1fcGF0aEVuZAotICAgICAgICAmJiBhLm1fcXVl
cnlFbmQgPT0gYi5tX3F1ZXJ5RW5kOwotfQotCi1ib29sIFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1
ZXNDb25zaXN0ZW50KGNvbnN0IFVSTCYgdXJsKQotewotICAgIHJldHVybiB1cmwubV9zY2hlbWVF
bmQgPD0gdXJsLm1fdXNlclN0YXJ0Ci0gICAgICAgICYmIHVybC5tX3VzZXJTdGFydCA8PSB1cmwu
bV91c2VyRW5kCi0gICAgICAgICYmIHVybC5tX3VzZXJFbmQgPD0gdXJsLm1fcGFzc3dvcmRFbmQK
LSAgICAgICAgJiYgdXJsLm1fcGFzc3dvcmRFbmQgPD0gdXJsLm1faG9zdEVuZAotICAgICAgICAm
JiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aCA8PSB1cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2gKLSAgICAgICAgJiYgdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IHVybC5tX3BhdGhF
bmQKLSAgICAgICAgJiYgdXJsLm1fcGF0aEVuZCA8PSB1cmwubV9xdWVyeUVuZAotICAgICAgICAm
JiB1cmwubV9xdWVyeUVuZCA8PSB1cmwubV9zdHJpbmcubGVuZ3RoKCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBh
cnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGY2NWJlYjAyNGM5ODAzMjJhNmUwNTM5YTViZmU4NDdhZTkxMGNm
YWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJVUkwuaCIK
LSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1z
dHJ1Y3QgVUlETkE7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gY2xhc3MgQ29kZVBvaW50SXRlcmF0b3I7Ci0KLWNsYXNzIFVSTFBhcnNl
ciB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgVVJMUGFyc2VyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFVSTCYgPSB7IH0sIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKLSAg
ICBVUkwgcmVzdWx0KCkgeyByZXR1cm4gbV91cmw7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGFsbFZhbHVlc0VxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGludGVybmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBV
UkwmKTsKLSAgICAKLSAgICB0eXBlZGVmIFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcs
IFN0cmluZz4+IFVSTEVuY29kZWRGb3JtOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBVUkxF
bmNvZGVkRm9ybSBwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcpOwotICAgIHN0YXRpYyBT
dHJpbmcgc2VyaWFsaXplKGNvbnN0IFVSTEVuY29kZWRGb3JtJik7Ci0KLSAgICBzdGF0aWMgY29u
c3QgVUlETkEmIGludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpOwotICAgIHN0YXRp
YyBib29sIGlzSW5Vc2VySW5mb0VuY29kZVNldChVQ2hhcik7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBpc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF5YmVDYW5vbmlj
YWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotCi1wcml2YXRlOgotICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1Zp
ZXcpOwotICAgIGZyaWVuZCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclBy
b3RvY29sKFN0cmluZ1ZpZXcpOwotCi0gICAgVVJMIG1fdXJsOwotICAgIFZlY3RvcjxMQ2hhcj4g
bV9hc2NpaUJ1ZmZlcjsKLSAgICBib29sIG1fdXJsSXNTcGVjaWFsIHsgZmFsc2UgfTsKLSAgICBi
b29sIG1fdXJsSXNGaWxlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faG9zdEhhc1BlcmNlbnRPck5v
bkFTQ0lJIHsgZmFsc2UgfTsKLSAgICBTdHJpbmcgbV9pbnB1dFN0cmluZzsKLSAgICBjb25zdCB2
b2lkKiBtX2lucHV0QmVnaW4geyBudWxscHRyIH07Ci0KLSAgICBib29sIG1fZGlkU2VlU3ludGF4
VmlvbGF0aW9uIHsgZmFsc2UgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0
SW5saW5lQnVmZmVyU2l6ZSA9IDIwNDg7Ci0gICAgdXNpbmcgTENoYXJCdWZmZXIgPSBWZWN0b3I8
TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPjsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwZSosIGNvbnN0IHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgVVJMJiwgY29uc3QgVVJMVGV4dEVuY29kaW5nKik7Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBwYXJzZUF1dGhvcml0eShDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gYm9vbCBwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIHBh
cnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotCi0gICAgdm9pZCBm
YWlsdXJlKCk7Ci0gICAgZW51bSBjbGFzcyBSZXBvcnRTeW50YXhWaW9sYXRpb24geyBObywgWWVz
IH07Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4Vmlv
bGF0aW9uIHJlcG9ydFN5bnRheFZpb2xhdGlvbiA9IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6WWVz
PgotICAgIHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRl
cmF0b3IpIHsgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCByZXBvcnRTeW50YXhWaW9sYXRpb24+KGl0
ZXJhdG9yLCBpdGVyYXRvcik7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
LCBSZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9sYXRpb246Olllcz4KLSAg
ICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBjb25zdCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRp
b25Qb3NpdGlvbik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCB0
YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4p
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgc3ludGF4VmlvbGF0
aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1BlcmNlbnRFbmNvZGVkRG90KENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBib29sIGlzV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29s
IGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4p
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNEb3VibGVEb3RQ
YXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBzaG91bGRDb3B5RmlsZVVSTChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gYm9vbCBjaGVja0xvY2FsaG9zdENvZGVQb2ludChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYsIFVDaGFyMzIpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IGJvb2wgaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
Pik7Ci0gICAgYm9vbCBpc0xvY2FsaG9zdChTdHJpbmdWaWV3KTsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHZvaWQgY29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gdm9pZCBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzaXpl
X3QgY3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZT4gdm9pZCBhcHBl
bmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdlclR5cGUpOwotICAgIHRlbXBsYXRl
PGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9p
ZCB1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRmOFF1ZXJ5
RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxMQ2hhckJ1ZmZlcj4g
ZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29u
c3QgTENoYXIqLCBzaXplX3QsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICBzdGF0aWMgTENoYXJC
dWZmZXIgcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCk7Ci0gICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpOwotICAg
IHN0YXRpYyBib29sIGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29uc3QgTENoYXJCdWZmZXIm
KTsKLSAgICB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QpOwotICAgIHZvaWQgYXBwZW5k
VG9BU0NJSUJ1ZmZlcihVQ2hhcjMyKTsKLSAgICB2b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29u
c3QgY2hhciosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNoYXJhY3RlcnMpLCBzaXplKTsgfQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgZW5jb2RlTm9uVVRGOFF1ZXJ5KGNvbnN0
IFZlY3RvcjxVQ2hhcj4mIHNvdXJjZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nJiwgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHZvaWQgY29weUFTQ0lJU3RyaW5nVW50aWwo
Y29uc3QgU3RyaW5nJiwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgYm9vbCBjb3B5QmFzZVdpbmRvd3NE
cml2ZUxldHRlcihjb25zdCBVUkwmKTsKLSAgICBTdHJpbmdWaWV3IHBhcnNlZERhdGFWaWV3KHNp
emVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgVUNoYXIgcGFyc2VkRGF0YVZpZXcoc2l6
ZV90IHBvc2l0aW9uKTsKLQotICAgIHVzaW5nIElQdjRBZGRyZXNzID0gdWludDMyX3Q7Ci0gICAg
dm9pZCBzZXJpYWxpemVJUHY0KElQdjRBZGRyZXNzKTsKLSAgICBlbnVtIGNsYXNzIElQdjRQYXJz
aW5nRXJyb3I7Ci0gICAgZW51bSBjbGFzcyBJUHY0UGllY2VQYXJzaW5nRXJyb3I7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8SVB2NEFkZHJlc3MsIElQdjRQYXJzaW5nRXJyb3I+IHBh
cnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZvclN5bnRh
eFZpb2xhdGlvbj4mLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNl
cjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xhdGlvbik7Ci0gICAgdXNpbmcgSVB2
NkFkZHJlc3MgPSBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQdjZBZGRyZXNzPiBwYXJzZUlQdjZIb3N0
KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUlQdjRQaWVjZUlu
c2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBwYXJz
ZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7
Ci0gICAgdm9pZCBzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGllY2UpOwotICAgIHZvaWQg
c2VyaWFsaXplSVB2NihJUHY2QWRkcmVzcyk7Ci0KLSAgICBlbnVtIGNsYXNzIFVSTFBhcnQ7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb3B5VVJMUGFydHNVbnRp
bChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+JiwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYpOwotICAgIHN0YXRpYyBzaXplX3Qg
dXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYsIFVSTFBhcnQpOwotICAgIHZvaWQgcG9wUGF0
aCgpOwotICAgIGJvb2wgc2hvdWxkUG9wUGF0aCh1bnNpZ25lZCk7Ci19OwotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IDQxODFlYzEzYmZmOGY0ZTJhYTgyOTVlMWJmYjdl
ZmU1OWVkMDgxZTMuLmMzNDQ4NDg2ZWU3YzJhZWFjYWFlYmViZjVhMGViNzE4M2RjNmVmZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNiw3ICszNiw2IEBAIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3Qg
U3RyaW5nJiBhcHBsaWNhCiBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2Vu
dFN0cmluZygpOwogU3RyaW5nIHVzZXJBZ2VudEJ1bmRsZVZlcnNpb24oKTsKICNlbHNlCi1jbGFz
cyBVUkw7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uTmFtZSA9IGVtcHR5U3RyaW5nKCksIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25WZXJzaW9uID0gZW1wdHlTdHJpbmcoKSk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
c3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoY29uc3QgVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcAppbmRleCAyMzJlNWNlNTdkYjA1ZGIzOGI0OWRkOWMw
MjFhMWJjOTljMDM4NWNiLi40OWI1ODkyMGE3YWViNzczMmQ2NTczMjc1NTkzNDc3YTE4NmIwYjA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKQEAgLTI3
LDcgKzI3LDcgQEAKICNpbmNsdWRlICJVc2VyQWdlbnRRdWlya3MuaCIKIAogI2luY2x1ZGUgIlB1
YmxpY1N1ZmZpeC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Vc2VyQWdlbnRRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1
aXJrcy5oCmluZGV4IGJmMTBjZTIzMmQ5MWQ0MzFiY2I2ZDRhNzFhNTFkZDRkZGU4ZmI4OGEuLmRj
NzdkNGU4NTBlZjkwOWQ0YjAwNTZkN2M5YTdlMWFkNDVmZGQ4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5oCkBAIC0zMCw4ICszMCw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiBjbGFzcyBVc2VyQWdlbnRRdWlya3MgewogcHVi
bGljOgogICAgIGVudW0gVXNlckFnZW50UXVpcmsgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvQ0ZVUkxFeHRyYXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2I0M2Jj
N2EwN2I4MGFlNGJhYTM1ZmRiNzMzNWFjM2JhNzY0NDE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJM
RXh0cmFzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ0ZVUkxFeHRyYXMuaCIKLQotI2luY2x1ZGUg
IlVSTC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQ0ZVUkxSZWYgYmFzZVVSTCkKLXsKLSAgICAvLyBOT1RF
OiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hlbiBjb21w
dXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAgIC8vIChlLmcg
Y2FsbHMgdG8gTlNVUkwgLXBhdGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0b2xl
cmFudCBvZiBpbGxlZ2FsIFVURi04IHNlcXVlbmNlcywgd2hpY2gKLSAgICAvLyBjb3VsZCBlaXRo
ZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5n
LCBsaWtlIFNoaWZ0LUpJUywgc28gd2UgZmFsbCBiYWNrCi0gICAgLy8gb250byB1c2luZyBJU08g
TGF0aW4tMSBpbiB0aG9zZSBjYXNlcy4KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHJlc3VsdCA9
IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcygwLCByZWludGVycHJldF9j
YXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSksIHNpemUsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgYmFz
ZVVSTCwgdHJ1ZSkpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBhZG9wdENG
KENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgYmFzZVVS
TCwgdHJ1ZSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgZ2V0VVJMQnl0ZXMoQ0ZV
UkxSZWYgdXJsLCBVUkxDaGFyQnVmZmVyJiByZXN1bHQpCi17Ci0gICAgQ0ZJbmRleCBieXRlc0xl
bmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKLSAgICByZXN1bHQucmVzaXplKGJ5dGVz
TGVuZ3RoKTsKLSAgICBDRkluZGV4IGZpbmFsTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIHJl
aW50ZXJwcmV0X2Nhc3Q8VUludDgqPihyZXN1bHQuZGF0YSgpKSwgYnl0ZXNMZW5ndGgpOwotICAg
IEFTU0VSVF9VTlVTRUQoZmluYWxMZW5ndGgsIGZpbmFsTGVuZ3RoID09IGJ5dGVzTGVuZ3RoKTsK
LX0KLQotdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiB1cmwsIENTdHJpbmcmIHJlc3VsdCkKLXsK
LSAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIDAsIDApOwotICAg
IGNoYXIqIGJ5dGVzOwotICAgIHJlc3VsdCA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoYnl0
ZXNMZW5ndGgsIGJ5dGVzKTsKLSAgICBDRkluZGV4IGZpbmFsTGVuZ3RoID0gQ0ZVUkxHZXRCeXRl
cyh1cmwsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihieXRlcyksIGJ5dGVzTGVuZ3RoKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRlc0xlbmd0aCk7
Ci19Ci0KLWJvb2wgaXNDRlVSTFNhbWVPcmlnaW4oQ0ZVUkxSZWYgY2ZVUkwsIGNvbnN0IFVSTCYg
dXJsKQotewotICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKLQotICAg
IGlmICh1cmwuaGFzVXNlcm5hbWUoKSB8fCB1cmwuaGFzUGFzc3dvcmQoKSkKLSAgICAgICAgcmV0
dXJuIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCh1cmwsIFVSTCB7IGNmVVJMIH0pOwotCi0g
ICAgVVJMQ2hhckJ1ZmZlciBieXRlczsKLSAgICBnZXRVUkxCeXRlcyhjZlVSTCwgYnl0ZXMpOwot
ICAgIFN0cmluZ1ZpZXcgY2ZVUkxTdHJpbmcgeyByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oYnl0ZXMuZGF0YSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ5dGVzLnNpemUoKSkgfTsK
LQotICAgIGlmICghdXJsLmhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcgeyB1
cmwuc3RyaW5nKCkgfSA9PSBjZlVSTFN0cmluZzsKLQotICAgIGF1dG8gdXJsV2l0aG91dFBhdGgg
PSBTdHJpbmdWaWV3IHsgdXJsLnN0cmluZygpIH0uc3Vic3RyaW5nKDAsIHVybC5wYXRoU3RhcnQo
KSArIDEpOwotICAgIHJldHVybiBjZlVSTFN0cmluZy5zdGFydHNXaXRoKHVybFdpdGhvdXRQYXRo
KTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxF
eHRyYXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZDU3MDY2MGRhNmFhOThkMTIyODY0MDc4ZmVkN2Rk
NmU3NzllZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENGVVJMRXh0cmFzX2gKLSNkZWZp
bmUgQ0ZVUkxFeHRyYXNfaAotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIFVSTDsKLXR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gVVJMQ2hhckJ1
ZmZlcjsKLQotV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZy
b21CdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgQ0ZVUkxSZWYgYmFzZVVSTCA9IDApOwotV0VC
Q09SRV9FWFBPUlQgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgVVJMQ2hhckJ1ZmZlciYpOwot
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgQ1N0cmluZyYpOwotCi1i
b29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmLCBjb25zdCBVUkwmKTsKLQotfQotCi0jZW5k
aWYgLy8gQ0ZVUkxFeHRyYXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvVVJMQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjY0MWVkMmQ5YmVjMTNkNmExNzc4ZjYzNjYyZjli
NjY3YTk3MWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVSTC5oIgotCi0j
aW5jbHVkZSAiQ0ZVUkxFeHRyYXMuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLSNpbmNsdWRl
IDxDb3JlRm91bmRhdGlvbi9DRlVSTC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
LQotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVVSTDo6VVJMKENGVVJMUmVmIHVy
bCkKLXsKLSAgICBpZiAoIXVybCkgewotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBiYXNl
IFVSTCBoZXJlPwotICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXModXJsLCB1
cmxCeXRlcyk7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxCeXRlcy5kYXRhKCkpOwotICAgICp0
aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi0jaWYgIVVTRShGT1VOREFUSU9OKQotUmV0YWlu
UHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTog
V2hhdCBzaG91bGQgdGhpcyByZXR1cm4gZm9yIGludmFsaWQgVVJMcz8KLSAgICAvLyBDdXJyZW50
bHkgaXQgdGhyb3dzIGF3YXkgdGhlIGhpZ2ggYnl0ZXMgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhl
IHN0cmluZyBpbiB0aGF0IGNhc2UsCi0gICAgLy8gd2hpY2ggaXMgY2xlYXJseSB3cm9uZy4KLSAg
ICBVUkxDaGFyQnVmZmVyIGJ1ZmZlcjsKLSAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsKLSAgICBh
dXRvIGNmVVJMID0gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOwotCi0gICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhaXNDRlVSTFNh
bWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gY2ZVUkw7Ci19Ci0jZW5kaWYKLQotU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBh
dGgoKSBjb25zdAotewotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkwgPSBjcmVhdGVDRlVS
TCgpOwotICAgIGlmICghY2ZVUkwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotI2lmIFBM
QVRGT1JNKFdJTikKLSAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dz
UGF0aFN0eWxlOwotI2Vsc2UKLSAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUgPSBrQ0ZVUkxQ
T1NJWFBhdGhTdHlsZTsKLSNlbmRpZgotICAgIHJldHVybiBhZG9wdENGKENGVVJMQ29weUZpbGVT
eXN0ZW1QYXRoKGNmVVJMLmdldCgpLCBwYXRoU3R5bGUpKS5nZXQoKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyLmgKaW5kZXggMjEwNmMyYmE5Yjg2YWMwMjBiNDA3MDEwZTkxMzIzOWJk
NDI1OTBlZi4uYTRlNzYyZTc4NjM5ZGQ2YzYzY2MyNmU4Njk3MDlhNTk3Y2E0MTA5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlcl9oCi0jZGVmaW5lIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSA8
b2JqYy9OU09iakNSdW50aW1lLmg+CkBAIC0zOSw4ICszOCw2IEBAIE9CSkNfQ0xBU1MgTlNEYXRh
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1Db250ZW50RmlsdGVy
IHsKICAgICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyPiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOwog
CkBAIC02OSw1ICs2NiwzIEBAIGNsYXNzIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZp
bmFsIDogcHVibGljIFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4IGU5NDQxZmZjZGViODZlNjI4YmJlNTRmN2M5
NjVkODY2ODA2MTE0NTUuLmRlMWRhZGJiOTNiZGUyYWZmYjAyZDNiNjY5YmJiYjBhN2RhYWJiN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbXBv
cnQgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQg
PG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9ORUZpbHRlclNvdXJjZVNQ
SS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAj
aW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAogU09GVF9MSU5LX0ZSQU1F
V09SS19PUFRJT05BTChOZXR3b3JrRXh0ZW5zaW9uKTsKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lk
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjbwogCiAgICAgVVJMIG1vZGlmaWVkUmVxdWVzdFVSTCB7IFVSTCgp
LCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcuZ2V0KCkgfTsKICAgICBpZiAoIW1vZGlmaWVkUmVx
dWVzdFVSTC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlciBmYWlsZWQgdG8gY29udmVydCBtb2RpZmllZCBVUkwg
c3RyaW5nICVAIHRvIGEgV2ViQ29yZTo6VVJMLlxuIiwgbW9kaWZpZWRSZXF1ZXN0VVJMU3RyaW5n
LmdldCgpKTsKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlciBmYWlsZWQgdG8gY29udmVydCBtb2RpZmllZCBVUkwgc3RyaW5nICVAIHRv
IGEgIFVSTC5cbiIsIG1vZGlmaWVkUmVxdWVzdFVSTFN0cmluZy5nZXQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
U1NMS2V5R2VuZXJhdG9yR0xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NT
TEtleUdlbmVyYXRvckdMaWIuY3BwCmluZGV4IDk0NTA2ZjU3YTQ3NWUxZWM1NjdmYjY4ZmRjYWRi
NGQyMGMyMmYyYmYuLjQxZjQ4ZDcxNjFlN2YyOTY1YzE1NTg1ZmYwMDhmYzI5MzA5MmMzOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xp
Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TU0xLZXlHZW5lcmF0b3JH
TGliLmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAppbmRleCAx
NjIxYTg4NWU4NzA0Y2E4NDgzMjBmNjI1MWMwNmY5MjFiMTg5ZDg4Li5hM2JhNGU0NmRjMjgzOTVk
ODUyY2U4ZmI2OGM3MGI1Nzk5ZTI3NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvVXNlckFnZW50R0xpYi5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJVc2VyQWdlbnQuaCIKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIlVzZXJBZ2VudFF1aXJrcy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKICNpZiBPUyhVTklYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0OTdkMmM3OWZkMmNiMDhmYzNkMGNjYmY4ZjhlYTIy
NzNjNDMxMDFjLi5hZThhOTNmNGYxYTQ4OGNlYWI4YjMxYjQ4NWNiYWE4YjJiODViZmVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtNjUsNiArNjUsMTIgQEAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJbnQ4OwogI2VuZGlm
CiAjZW5kaWYKIAorLy8gWDExIGhlYWRlciBkZWZpbmVzICJOb25lIiBhcyBjb25zdGFudCBpbiBt
YWNybyBhbmQgYnJlYWtlcyB0aGUgUGFpbnRJbnZhbGlkYXRpb25SZWFzb25zIGVudW0ncyAiTm9u
ZSIuCisvLyBBcyBhIHdvcmthcm91bmQsIHdlIGV4cGxpY2l0bHkgdW5kZWYgWDExJ3MgTm9uZSBo
ZXJlLgorI2lmIGRlZmluZWQoTm9uZSkKKyN1bmRlZiBOb25lCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgVVNFKFdJTkdESSkKQEAgLTg1LDcgKzkxLDYgQEAgY2xhc3MgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBJ
bnRSZWN0OwogY2xhc3MgUm91bmRlZFJlY3Q7Ci1jbGFzcyBVUkw7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQzRDsKIGNsYXNzIFBhdGg7CiBjbGFzcyBUZXh0UnVuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IGQ2YjBjNjVmYmY1N2Q5YzdkZWExOTYwODAy
OWJjMmE2MDE0NTc4YjEuLmJjMzg5MTQ0ODllMzJkMzI4YTU0ZDQyMWU1N2RiN2YzMTU4ZjMzYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTM1LDEw
ICszNSwxMCBAQAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTVkdJ
bWFnZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmgKaW5kZXggNWYyMjBiZTRlZjA2ZjNmYzFlNzkzNDlmZGViMzMwZWQ5MWU3
NGFjOS4uMWUzMGYzNDY5ZTRhYjc5ODQ0MTRjMmJmZDhmYWU2NGUxOGEwMGFjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC02OCw3ICs2OCw2IEBAIGNsYXNz
IEZsb2F0U2l6ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEltcGw7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgTGVuZ3RoOwog
CiAvLyBUaGlzIGNsYXNzIGdldHMgbm90aWZpZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVzIG9yIGRl
c3Ryb3lzIGRlY29kZWQgZnJhbWVzIGFuZCB3aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlvbiBmcmFt
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9i
c2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVy
LmgKaW5kZXggODI2OWNjNGVkYzM3Y2U1ZjRkYzE2NWZiZDRkNjFjMzY5OGE0MjdmZS4uZjI4MzIz
YzI1NWIxZDBhMDE0MzUxYzkzNDI3M2RhMDFjNWFmODViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaApAQCAtMjMsOCArMjMsNyBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBJbWFnZU9ic2VydmVyX2gKLSNkZWZpbmUg
SW1hZ2VPYnNlcnZlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIK
IApAQCAtMzIsNyArMzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlOwog
Y2xhc3MgSW50UmVjdDsKLWNsYXNzIFVSTDsKIAogLy8gSW50ZXJmYWNlIGZvciBub3RpZmljYXRp
b24gYWJvdXQgY2hhbmdlcyB0byBhbiBpbWFnZSwgaW5jbHVkaW5nIGRlY29kaW5nLAogLy8gZHJh
d2luZywgYW5kIGFuaW1hdGluZy4KQEAgLTU0LDUgKzUyLDMgQEAgY2xhc3MgSW1hZ2VPYnNlcnZl
ciB7CiB9OwogCiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDQ4OGY5NDVmZGMzZDAwMGRiZmFhMzM3ZDQ2NWU1
ZmIyZWZhYWI0MzguLmZkNGExZmUyZGQ4N2JmOWMwOGVjYWJiMTBmM2VmMzc0Mjk0YjE4MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
QEAgLTMwLDExICszMCwxMSBAQAogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUg
IkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1U
cmFjaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4
IDA5MDEwMTIyOTllYmM0MWMyY2E4NGUxOWU5NTFlMDI0Nzg4Njk1OGUuLjk4MGQ2MGVlNTBkNTBi
YzI2YTAwMzA1ZTAzZTUxYjRkNDRjYzllNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBCaXRtYXBJbWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNz
IEltYWdlRGVjb2RlcjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgSW1hZ2VTb3VyY2UgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VTb3VyY2U+IHsKICAgICBmcmllbmQgY2xhc3MgQml0
bWFwSW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAppbmRleCA0NjJhNzI2NjA1ODQ3MTIzZTg3Yjc0OTU1ZjRmMTY4ZmY4MmZhNmYwLi4wNjAx
NDZkM2FjNzEwZmUxYzRkNzhhMzA4MTA2OTNiYmZhOGIxMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQwLDcgKzQwLDcgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
SGFzaC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cAppbmRleCA1OTE1YTc3MzE2ZWQ4YTAzMGE0ZTZkM2FkNzQxMDRjMTc4Y2FkOWQyLi4zZTFkMjcw
ZTY0ZTc4NWRhYTcxOTU1ZGQ0YWFmZTQwMzJmOWViNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMzksNyArMzks
NiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVS
YW5nZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EYXRh
Vmlldy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CkBAIC00OSw2
ICs0OCw3IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggZTgyNDQ5YTUwZmNjOGU5YjgxN2Zj
NzdlMmFhM2EwMTk1ZjZhMTIyNi4uMWRiYzVjZDg4YTdhMDhhNTBjMzk5OWEwMDJlZTQ3Yjc1ZjIx
Zjc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC00NSw5ICs0NSw5IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1DQUxheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyV2luLmgiCiAj
aW5jbHVkZSAiVGltZVJhbmdlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlh
VGltZUFWRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2luY2x1ZGUgPEFW
Rm91bmRhdGlvbkNGL0FWQ0ZQbGF5ZXJJdGVtLmg+CiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTEVH
SUJMRV9PVVRQVVRfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDdkNDlkNGUx
MGM5ZTUxNjViY2VhZTI1MTYzZDk2YWRhYWZiZDdjMWIuLjZlNDExN2U1ZWEzOWE4ZTA5ZWZjNWQ5
MTQ0OGY3NjZmNWFhZTNhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNTksNyArNTks
NiBAQAogI2ltcG9ydCAiVGV4dEVuY29kaW5nLmgiCiAjaW1wb3J0ICJUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5oIgogI2ltcG9ydCAiVGV4dHVyZUNhY2hlQ1YuaCIKLSNpbXBvcnQgIlVSTC5oIgog
I2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQy5oIgogI2ltcG9ydCAiVmlk
ZW9UZXh0dXJlQ29waWVyQ1YuaCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5o
IgpAQCAtODEsNiArODAsNyBAQAogI2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5B
QkxFKEFWRl9DQVBUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA1Zjg1
NzBiMTIxNzA1YTZiYTkxNTA2ZTMxYmVkOTdmNjQ3ODhjZjZmLi43NmJlZjA3M2Q5NzJlYzE3MDcy
MGQ2ZGVlMmFlOTAwMWYzYTI2ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAjaWYgVVNFKENBSVJPKQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCisjaW5jbHVkZSAiQ2Fpcm9PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0
LmgiCiAjaW5jbHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEltcGwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBiZDJhNzNhMzRmYWExZGJlMTU5MjJl
YzNiMWMxMWFkMTFiNTZmNjU3Li42OGVjMzFlZGRhMGRhOTBlZjgxNjFiODk2N2M0NzQ4YTgwMzAy
OGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC00MSwxMCArNDEsMTAgQEAKICNpbmNsdWRlICJT
aGFkb3dCbHVyLmgiCiAjaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3Jl
R3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFN0cmVhbS5oPgogCiAjaWYgUExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2OTcwM2UyMWViMjE1NzBmMTAzZTU0
MmI1ZTU0NDNhYjM4Njg5ZTc0Li5jNTMzYTJkZTQzYjBjYjIxODY3MzAyZWY4NjA4OGJjNGY2MzZh
OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSA8
Z2xpYi5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KQEAgLTQ3LDYgKzQ2LDcgQEAKICNpbmNsdWRl
IDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRl
eCA0ZjFmOGFiMDM4Yjc4MzNiZWFlMjg5MGEyY2FlNDU1OThkZmIyYTc2Li5kMTVjMmE1MGQ3MmM1
M2UzYTA5NWUwNjJiMWMzNDA5ZmVlZjI2ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0zOSw3ICszOSw2IEBA
CiAjaW5jbHVkZSAiUGxheWJhY2tQaXBlbGluZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKIAogI2luY2x1ZGUg
PGZubWF0Y2guaD4KQEAgLTUyLDYgKzUxLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmlu
dFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
V2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5k
ZXggZjdiZDQ3NzNiZmQ1YzU2N2U4MDFmYjA3MTc4ZWI4ZmQ4NjFiN2Q0MC4uOTY5YTQyMjQ0MmU1
ODNkM2VkMWFmN2NmZTQzZDI5ZTQyYWE5ZWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTYzNSw3ICs2MzUsNyBAQCBnYm9v
bGVhbiB3ZWJLaXRNZWRpYVNyY1NldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBn
Y2hhciogdXJpLCBHRXJyb3IqKgogICAgICAgICByZXR1cm4gVFJVRTsKICAgICB9CiAKLSAgICBX
ZWJDb3JlOjpVUkwgdXJsKFdlYkNvcmU6OlVSTCgpLCB1cmkpOworICAgIFVSTCB1cmwoVVJMKCks
IHVyaSk7CiAKICAgICBwcml2LT5sb2NhdGlvbiA9IEdVbmlxdWVQdHI8Z2NoYXI+KGdfc3RyZHVw
KHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR1NUX09CSkVDVF9VTkxPQ0soc291
cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZU
VEN1ZS5jcHAKaW5kZXggZDAzZjVmN2ZjZWEzYzhmMTczNzcxNmE0MzVmOWU2NjYwMTJhNWYxOC4u
OWVjNDA4OTRmMWUyOGEwNWEyMTRjYjMyMzUxNGY3YjEzOTU1ZDI4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKQEAgLTI3LDkg
KzI3LDkgQEAKICNpbmNsdWRlICJJU09WVFRDdWUuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EYXRhVmlldy5oPgog
I2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2lu
ZyBKU0M6OkRhdGFWaWV3OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCA1
ZWFjZTEwODg2NjdjMjI5YjVhZmMzOWVjOTM2ODdlMGQ0NWE1MmZiLi40NDgxNzMxNTc1YWU0MDk0
OTU0Yzc2OTVmZGQ3NWU3YTA1NWM4YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5j
cHAKQEAgLTMzLDEwICszMywxMCBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8ZDJkMS5oPgogI2luY2x1ZGUgPGQyZDFlZmZlY3RzLmg+CiAjaW5jbHVk
ZSA8ZHdyaXRlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjcHJhZ21hIHdhcm5pbmcgKGRp
c2FibGUgOiA0NzU2KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RHJhZ0ltYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VH
dGsuY3BwCmluZGV4IDMzZjRmZTNhNDJmMDVmMmQ2YjkzZGIwZmFkYTg3ODQzZTliNzAyNjguLmY3
ZDE4NGY2N2U4YWMzNTY1NTMzNTE1M2UxY2U1NThhZTE4ZTk3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCkBAIC0yMyw5ICsyMyw5IEBACiAjaW5j
bHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlICJUZXh0SW5k
aWNhdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRl
IDxnZGsvZ2RrLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRl
eCBhNGFiNjEwYTczZmYxYWM5MTQ5MGRkYzIwMDhjNDg4ZDQyYzkwMGYwLi43MWEwMGEzMGMwZmFl
ZGQ5YjQwZWM0ZmZhZGYxNzg2MzhmMjViODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiUGFz
dGVib2FyZFN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5j
bHVkZSAiU2VsZWN0aW9uRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Q
YXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBh
c3RlYm9hcmRHdGsuY3BwCmluZGV4IGYzMDhjMmJiN2U1MzY5MWRhMzRjNmViZDBiMzRlZDExYmVi
MmZiNjQuLjgxNDNmYWZjMzdjMWJjNDhhNGMwZGU4ZGYxMDk2ZDcyMzhlNjUwMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRHdGsu
Y3BwCkBAIC0yMyw4ICsyMyw4IEBACiAjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlci5oIgogI2lu
Y2x1ZGUgIlNlbGVjdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Vs
ZWN0aW9uRGF0YS5oCmluZGV4IGRhNTFkYTA5YWQxMjc0OGNmNzlhNTBmNmMzMzQ5OWU1MGFhMzVj
ODcuLjFiODU4ZWY5ZGVlNTdjMjA2YmEzZTBjNzNhYWQ4YTg2Njk2YjgyMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtMTksOSArMTksOSBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCmluZGV4IDlmNjkxNGVjNDgxZjFkY2FhZGE3NWRmOTZkMWQ1NzAyNTVmZjcxNTIuLjRk
NjY5ZjAxYTEzNTlkYThhNDczNDVlYzNjMzI3YWRiMjM5YTk5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zNSwxMCArMzUsMTAgQEAKICNp
bXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBv
cnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFz
LmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIEBp
bnRlcmZhY2UgTlNBdHRyaWJ1dGVkU3RyaW5nIChOU0F0dHJpYnV0ZWRTdHJpbmdLaXRBZGRpdGlv
bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQppbmRleCBkYTdmNjIxNzdhYzg1OTYwNTMxMDFiNWI4OTE4MmUwMjFhOWIyNmRj
Li5kN2FkNDI1ZGFhYjQ2ZjgxYjY5OTkzOTg3ODNjYzI1MWZlODJiZGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAg
LTMyLDkgKzMyLDcgQEAKICNpbXBvcnQgIkltYWdlLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgi
CiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVVRJ
VXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9N
b2JpbGVDb3JlU2VydmljZXMuaD4KICNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KQEAgLTQ0LDYg
KzQyLDggQEAKICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYv
TGlzdEhhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CiAKICNkZWZpbmUgUEFTVEVCT0FSRF9TVVBQT1JUU19JVEVNX1BS
T1ZJREVSUyAoUExBVEZPUk0oSU9TKSAmJiAhKFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JN
KEFQUExFVFYpKSkKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgYXV0byYg
cGFzdGVib2FyZFVSTCA9IHBhc3RlYm9hcmRJbWFnZS51cmw7CiAgICAgaWYgKE5TVVJMICpuc1VS
TCA9IHBhc3RlYm9hcmRVUkwudXJsKSB7CiAjaWYgTlNVUkxfU1VQUE9SVFNfVElUTEUKLSAgICAg
ICAgbnNVUkwuX3RpdGxlID0gcGFzdGVib2FyZFVSTC50aXRsZS5pc0VtcHR5KCkgPyB1c2VyVmlz
aWJsZVN0cmluZyhwYXN0ZWJvYXJkVVJMLnVybCkgOiAoTlNTdHJpbmcgKilwYXN0ZWJvYXJkVVJM
LnRpdGxlOworICAgICAgICBuc1VSTC5fdGl0bGUgPSBwYXN0ZWJvYXJkVVJMLnRpdGxlLmlzRW1w
dHkoKSA/IFdURjo6dXNlclZpc2libGVTdHJpbmcocGFzdGVib2FyZFVSTC51cmwpIDogKE5TU3Ry
aW5nICopcGFzdGVib2FyZFVSTC50aXRsZTsKICNlbmRpZgogICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6bnNVUkxdOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2suaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2suaAppbmRleCA0OWQ4MTFkNTE0MGM4ZmQwYWYw
MTYyOWQ4ZDBjMWM5ZTllOTk0ZjE3Li4wYTZlZmFlZjNlODYxZWY1OWZkNDI4OWNlZjkxMWM3Nzhk
YTcwY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29r
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5oCkBAIC0zNSw4
ICszNSw2IEBAIE9CSkNfQ0xBU1MgTlNVUkxSZXF1ZXN0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFVSTDsKLQogV0VCQ09SRV9FWFBPUlQgTlNTZXQgKlFMUHJldmlld0dldFN1cHBv
cnRlZE1JTUVUeXBlc1NldCgpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVRTFByZXZpZXdD
b252ZXJ0ZXJGb3JVUkwoTlNVUkwgKik7CiBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNVUkxS
ZXF1ZXN0PiByZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICosIE5TU3Ry
aW5nICptaW1lVHlwZSwgTlNEYXRhICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Ry
YWdEYXRhTWFjLm1tCmluZGV4IGRjZTczMzMxZTc3YTg3NDY4YjY3MTE3YzQzNGI0YjBiODIzMmE5
ZWIuLjcxNmMzNjY2YjljNGJjZTcxMzYxZjRjMDUzODFkYzNhOWEzYmQxNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNp
bXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCisjaW1wb3J0IDx3dGYvY29j
b2EvTlNVUkxFeHRyYXMuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPE1vYmlsZUNv
cmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KQEAgLTIxMCw3ICsyMTEsNyBAQCBTdHJp
bmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkgY29uc3QKICAgICAvLyBGSVhNRTogSXQncyBub3Qg
Y2xlYXIgdGhpcyBpcyAxMDAlIGNvcnJlY3Qgc2luY2Ugd2Uga25vdyAtW05TVVJMIFVSTFdpdGhT
dHJpbmc6XSBkb2VzIG5vdCBoYW5kbGUKICAgICAvLyBhbGwgdGhlIHNhbWUgY2FzZXMgd2UgaGFu
ZGxlIHdlbGwgaW4gdGhlIFVSTCBjb2RlIGZvciBjcmVhdGluZyBhbiBOU1VSTC4KICAgICBpZiAo
dGV4dC5pc1VSTCkKLSAgICAgICAgcmV0dXJuIHVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxX
aXRoU3RyaW5nOnN0cmluZ10pOworICAgICAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmlu
ZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsKIAogICAgIC8vIEZJWE1FOiBXVEYgc2hv
dWxkIG9mZmVyIGEgbm9uLU1hYy1zcGVjaWZpYyB3YXkgdG8gY29udmVydCBzdHJpbmcgdG8gcHJl
Y29tcG9zZWQgZm9ybSBzbyB3ZSBjYW4gZG8gaXQgZm9yIGFsbCBwbGF0Zm9ybXMuCiAgICAgcmV0
dXJuIFsoTlNTdHJpbmcgKilzdHJpbmcgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFw
cGluZ107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRl
eCAyMDFjYjMzOGJiZDdkYzc1M2IzMzVhMzAwNjJjMmI5MTI2YjExOTQ5Li45ZDhiYjg3ZjliZTE3
YmEzNTcyNDdlMDU2OWNlNDY1ZmE2NjZjMWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW0KQEAgLTQxLDEyICs0MSwxMiBAQAogI2ltcG9ydCAiUGFnZS5o
IgogI2ltcG9ydCAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW1wb3J0ICJUZXh0SW5kaWNhdG9yLmgi
Ci0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIldlYktpdE5TSW1hZ2VFeHRyYXMuaCIKICNpbXBv
cnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L0NvcmVUZXh0U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1VSTEZvcm1hdHRpbmdTUEku
aD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
aWYgIUhBVkUoVVJMX0ZPUk1BVFRJTkcpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMzAwCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoTGlua1By
ZXNlbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxl
U3lzdGVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMu
bW0KaW5kZXggMDcxZDBjOTExNzc5NGU2MDM4ZDk4YWFkNTZmZTk2ZmY4ZjQ4MTUzMy4uOGVkNzUx
YTdlYzBlNWQwYmFmNzc0Zjk4NjEwYWNiMDQ1Y2QyYjAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIFBM
QVRGT1JNKE1BQykKIAotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0IDxw
YWwvc3BpL21hYy9NZXRhZGF0YVNQSS5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFz
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cgogewogICAgIFN0cmlu
ZyB1cmxTdHJpbmc7CiAgICAgaWYgKE5TVVJMICp1cmwgPSBVUkxXaXRoVXNlclR5cGVkU3RyaW5n
KG1ldGFkYXRhVVJMU3RyaW5nLCBuaWwpKQotICAgICAgICB1cmxTdHJpbmcgPSB1c2VyVmlzaWJs
ZVN0cmluZyhVUkxCeVJlbW92aW5nVXNlckluZm8odXJsKSk7CisgICAgICAgIHVybFN0cmluZyA9
IFdURjo6dXNlclZpc2libGVTdHJpbmcoV1RGOjpVUkxCeVJlbW92aW5nVXNlckluZm8odXJsKSk7
CiAgICAgZWxzZQogICAgICAgICB1cmxTdHJpbmcgPSBtZXRhZGF0YVVSTFN0cmluZzsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCAzYzM2N2Rh
NDg0MGMwZTQyZDNhNGE5NWM3MDYxMTU1OTYxMTM0NzYyLi44YTVjMjc0Y2E2NGMzOTAyMDA3ZTg3
NDZhNDNmNWJmYzM2MGRkZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQpAQCAtMzcsNyArMzcsNiBAQAogI2ltcG9ydCAiUGxhdGZvcm1QYXN0ZWJv
YXJkLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1
ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBv
cnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaD4KQEAgLTQ1LDYgKzQ0LDcgQEAKICNpbXBvcnQgPHd0Zi9Qcm9jZXNz
UHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW1wb3J0IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4
IDZhMjhmZTYyYWNlY2Q1NzI2NThkMDMzZDBjZDljMWFjMzFlZTBlM2QuLjBmZTUwNWRlNTVjNjYx
NjQ4ZjA1OWRhOWI3ZmFlMmEwNzdmYzYyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC02MywxMCArNjMsMTAgQEAgUmV0YWluUHRy
PGlkIDxOU1Bhc3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2FyZFdyaXRlcihjb25zdCBQ
YXN0ZWJvYXJkV3JpdGUKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChhdXRvJiB1cmwgPSBk
YXRhLnVybCgpKSB7Ci0gICAgICAgIE5TVVJMICpjb2NvYVVSTCA9IHVybC0+dXJsOwotICAgICAg
ICBOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcgPSB1cmwtPnVzZXJWaXNpYmxlRm9ybTsKLSAg
ICAgICAgTlNTdHJpbmcgKnRpdGxlID0gKE5TU3RyaW5nICopdXJsLT50aXRsZTsKKyAgICBpZiAo
YXV0byYgdXJsRGF0YSA9IGRhdGEudXJsRGF0YSgpKSB7CisgICAgICAgIE5TVVJMICpjb2NvYVVS
TCA9IHVybERhdGEtPnVybDsKKyAgICAgICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nID0g
dXJsRGF0YS0+dXNlclZpc2libGVGb3JtOworICAgICAgICBOU1N0cmluZyAqdGl0bGUgPSAoTlNT
dHJpbmcgKil1cmxEYXRhLT50aXRsZTsKICAgICAgICAgaWYgKCF0aXRsZS5sZW5ndGgpIHsKICAg
ICAgICAgICAgIHRpdGxlID0gY29jb2FVUkwucGF0aC5sYXN0UGF0aENvbXBvbmVudDsKICAgICAg
ICAgICAgIGlmICghdGl0bGUubGVuZ3RoKQpAQCAtNzQsNyArNzQsNyBAQCBSZXRhaW5QdHI8aWQg
PE5TUGFzdGVib2FyZFdyaXRpbmc+PiBjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKGNvbnN0IFBhc3Rl
Ym9hcmRXcml0ZQogICAgICAgICB9CiAKICAgICAgICAgLy8gV2ViVVJMc1dpdGhUaXRsZXNQYm9h
cmRUeXBlLgotICAgICAgICBhdXRvIHBhdGhzID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0czpAWyBAWyBjb2NvYVVSTC5hYnNvbHV0ZVN0cmluZyBdIF0sIEBbIHVybC0+
dGl0bGUuc3RyaXBXaGl0ZVNwYWNlKCkgXSwgbmlsXSk7CisgICAgICAgIGF1dG8gcGF0aHMgPSBh
ZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOkBbIEBbIGNvY29hVVJMLmFi
c29sdXRlU3RyaW5nIF0gXSwgQFsgdXJsRGF0YS0+dGl0bGUuc3RyaXBXaGl0ZVNwYWNlKCkgXSwg
bmlsXSk7CiAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRQcm9wZXJ0eUxpc3Q6cGF0aHMuZ2V0
KCkgZm9yVHlwZTp0b1VUSShAIldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSIpLmdldCgpXTsK
IAogICAgICAgICAvLyBOU1VSTFBib2FyZFR5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBiMWRmZmI2Y2I3ZTY0
MjU3NDFiZDBjNmMwZTUzYjRlZmRjZmRiMTcxLi4wY2IxZGQ4YjkzMGEwNjViN2MwODAxNWNhMmUw
Y2U1ZGJkNWIyYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9ydCAiQ29s
b3JNYWMuaCIKICNpbXBvcnQgIkxlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmgiCiAjaW1wb3J0ICJQ
YXN0ZWJvYXJkLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgog
I2ltcG9ydCA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTGlzdEhhc2hTZXQu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
dWJsaWNTdWZmaXhNYWMubW0KaW5kZXggMjMwMzgxN2YzYjIxNGZhYzU0ZmUwZjRlMjZkMDQ5MzMz
YjUxMDQzNS4uMDE5NmI0MTZlZDQyNWIxNzAwZWJjZTljMGJjMWRjOGI2NjMxMzgyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCkBAIC0yOCw5
ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQogCi0jaW1wb3J0ICJV
UkwuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2Nv
YS9OU1VSTEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYzLDcgKzYzLDcg
QEAgU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oY29uc3QgU3RyaW5nJiBkb21h
aW4pCiAKIFN0cmluZyBkZWNvZGVIb3N0TmFtZShjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsKLSAg
ICByZXR1cm4gZGVjb2RlSG9zdE5hbWUoKE5TU3RyaW5nICopKGRvbWFpbikpOworICAgIHJldHVy
biBXVEY6OmRlY29kZUhvc3ROYW1lKGRvbWFpbik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCmluZGV4IGZjNDBhYTE5YjA0
YzNhZTM0NzE4MDI3NjNmN2RmMzg5YTcyMjhjOWQuLmJkOWRhMGRkODZhY2NkMWQ4NGE2YzNmZWRh
MGI0MTJhMjZhZGY2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
U0xLZXlHZW5lcmF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NT
TEtleUdlbmVyYXRvck1hYy5tbQpAQCAtMjksMTMgKzI5LDEzIEBACiAjaWYgUExBVEZPUk0oTUFD
KQogCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBv
cnQgPFNlY3VyaXR5L1NlY0FzbjFDb2Rlci5oPgogI2ltcG9ydCA8U2VjdXJpdHkvU2VjQXNuMVRl
bXBsYXRlcy5oPgogI2ltcG9ydCA8U2VjdXJpdHkvU2VjRW5jb2RlVHJhbnNmb3JtLmg+CiAjaW1w
b3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL1Njb3BlLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYv
Y2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VSTE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxN
YWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyNWMxZGU3YjAyODNjZDBkYmRi
YTU2Y2ExNmZhZmM1ZjM5YzU4YjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQorKysgL2Rl
di9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJVUkwuaCIK
LQotI2ltcG9ydCAiQ0ZVUkxFeHRyYXMuaCIKLSNpbXBvcnQgIlVSTFBhcnNlci5oIgotI2ltcG9y
dCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCi0jaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMu
aD4KLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotQGludGVyZmFjZSBOU1N0cmluZyAo
V2ViQ29yZU5TVVJMRXh0cmFzKQotLSAoQk9PTClfd2ViX2xvb2tzTGlrZUlQQWRkcmVzczsKLUBl
bmQKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6OlVSTChOU1VSTCAqdXJsKQotewotICAg
IGlmICghdXJsKSB7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/
Ci0gICAgQ1N0cmluZyB1cmxCeXRlczsKLSAgICBnZXRVUkxCeXRlcygoX19icmlkZ2UgQ0ZVUkxS
ZWYpdXJsLCB1cmxCeXRlcyk7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxCeXRlcy5kYXRhKCkp
OwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi1VUkw6Om9wZXJhdG9yIE5TVVJM
ICooKSBjb25zdAotewotICAgIC8vIENyZWF0aW5nIGEgdG9sbC1mcmVlIGJyaWRnZWQgQ0ZVUkwg
YmVjYXVzZSBjcmVhdGlvbiB3aXRoIE5TVVJMIG1ldGhvZHMgd291bGQgbm90IHByZXNlcnZlIHRo
ZSBvcmlnaW5hbCBzdHJpbmcuCi0gICAgLy8gV2UnbGwgbmVlZCBmaWRlbGl0eSB3aGVuIHJvdW5k
LXRyaXBwaW5nIHZpYSBDRlVSTEdldEJ5dGVzKCkuCi0gICAgcmV0dXJuIGNyZWF0ZUNGVVJMKCku
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOwotfQotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3Jl
YXRlQ0ZVUkwoKSBjb25zdAotewotICAgIGlmIChpc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBpZiAoaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIFdlIHVzZSB0aGUgdG9s
bC1mcmVlIGJyaWRnZSBiZXR3ZWVuIE5TVVJMIGFuZCBDRlVSTCB0byBjcmVhdGUgYSBDRlVSTFJl
ZiBzdXBwb3J0aW5nIGJvdGggZW1wdHkgYW5kIG51bGwgdmFsdWVzLgotICAgICAgICByZXR1cm4g
KF9fYnJpZGdlIENGVVJMUmVmKWFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
QCIiXSkuZ2V0KCk7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTDsKLQot
ICAgIC8vIEZhc3QgcGF0aCBpZiB0aGUgaW5wdXQgZGF0YSBpcyA4LWJpdCB0byBhdm9pZCBjb3B5
aW5nIGludG8gYSB0ZW1wb3JhcnkgYnVmZmVyLgotICAgIGlmIChMSUtFTFkobV9zdHJpbmcuaXM4
Qml0KCkpKQotICAgICAgICBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVu
Z3RoKCkpOwotICAgIGVsc2UgewotICAgICAgICAvLyBTbG93ZXIgcGF0aC4KLSAgICAgICAgVVJM
Q2hhckJ1ZmZlciBidWZmZXI7Ci0gICAgICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOwotICAgICAg
ICBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKLSAgICB9Ci0KLSAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NG
VVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIHJldHVybiBjZlVSTDsKLX0KLQotYm9vbCBVUkw6Omhvc3RJc0lQQWRkcmVzcyhT
dHJpbmdWaWV3IGhvc3QpCi17Ci0gICAgcmV0dXJuIFtob3N0LmNyZWF0ZU5TU3RyaW5nV2l0aG91
dENvcHlpbmcoKS5nZXQoKSBfd2ViX2xvb2tzTGlrZUlQQWRkcmVzc107Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaAppbmRleCBm
ZTEwNjgxMzQ1ZjU3ZjNmNDFmNGQwZGE3MmNlNjE2MWRiYjA2OTQ4Li4xYzA3MzI5YmU5ZWJiNmZi
MGEyM2M1ZDI3Y2RhODAyYzRlODAxZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oCkBAIC0yNiwyOSArMjYsMTAgQEAKICAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotQGNsYXNzIE5TU3RyaW5nOwogQGNsYXNzIE5TVVJMOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhO
U1VSTCAqKTsKIFdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKE5T
VVJMICopOwotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoTlNT
dHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVy
cm9yLgotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhOU1VSTCAq
KTsKLVdFQkNPUkVfRVhQT1JUIEJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKE5T
U3RyaW5nICosIE5TUmFuZ2UsIEJPT0wqIGVycm9yKTsKLVdFQkNPUkVfRVhQT1JUIEJPT0wgaG9z
dE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICosIE5TUmFuZ2UsIEJPT0wqIGVy
cm9yKTsKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZShO
U1N0cmluZyAqLCBOU1JhbmdlKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4K
LVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmlu
ZyAqLCBOU1JhbmdlKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KLVdFQkNP
UkVfRVhQT1JUIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsgLy8gUmV0dXJu
IHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICplbmNv
ZGVIb3N0TmFtZShOU1N0cmluZyAqKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJv
ci4KLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZv
cmVDb21wb25lbnQoTlNVUkwgKiwgQ0ZVUkxDb21wb25lbnRUeXBlKTsKLVdFQkNPUkVfRVhQT1JU
IE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKiwgTlNVUkwgKmJhc2VVUkwpOwotV0VCQ09SRV9F
WFBPUlQgTlNEYXRhICpvcmlnaW5hbFVSTERhdGEoTlNVUkwgKik7Ci1XRUJDT1JFX0VYUE9SVCBO
U0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICosIENGVVJMQ29tcG9uZW50VHlw
ZSk7Ci1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0RlcHJlY2F0
ZWQoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOwotCi1OU1JhbmdlIHJhbmdlT2ZVUkxTY2hl
bWUoTlNTdHJpbmcgKik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGlzVXNlclZpc2libGVVUkwoTlNT
dHJpbmcgKik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGxvb2tzTGlrZUFic29sdXRlVVJMKE5TU3Ry
aW5nICopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQppbmRleCBjZTFjOTU2M2IwYjU5Y2E5
NjQ1OTNhYzZkYzk5N2Q0YzQ0NjBhYTBiLi4wNDRjNDI5MGRkZmU1ZjUwOTgzODkxODNhOGJiNDlh
ZTQ3NGE4MGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZU5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
TlNVUkxFeHRyYXMubW0KQEAgLTI3LDcgKzI3LDYgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIlVSTFBhcnNlci5oIgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgi
CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0
aW9uLmg+CkBAIC0zOSw5OTkgKzM4LDggQEAKICNpbXBvcnQgPHVuaWNvZGUvdWlkbmEuaD4KICNp
bXBvcnQgPHVuaWNvZGUvdXNjcmlwdC5oPgogCi0vLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRv
IGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KLS8vIEZvciBob3N0IG5hbWVzIGJpZ2dlciB0aGFu
IHRoaXMsIHdlIHdvbid0IGRvIElETiBlbmNvZGluZywgd2hpY2ggaXMgYWxtb3N0IGNlcnRhaW5s
eSBPSy4KLSNkZWZpbmUgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEggMjA0OAotI2RlZmluZSBVUkxf
QllURVNfQlVGRkVSX0xFTkdUSCAyMDQ4Ci0KLXR5cGVkZWYgdm9pZCAoKiBTdHJpbmdSYW5nZUFw
cGxpZXJGdW5jdGlvbikoTlNTdHJpbmcgKiwgTlNSYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiYpOwotCi1zdGF0aWMgdWludDMyX3QgSUROU2NyaXB0V2hpdGVMaXN0WyhVU0NSSVBUX0NP
REVfTElNSVQgKyAzMSkgLyAzMl07Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJv
b2wgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAg
ICByZXR1cm4gY29kZVBvaW50ID09IDB4MDU0OCB8fCBjb2RlUG9pbnQgPT0gMHgwNTREIHx8IGNv
ZGVQb2ludCA9PSAweDA1NzggfHwgY29kZVBvaW50ID09IDB4MDU3RDsKLX0KLQotc3RhdGljIGJv
b2wgaXNBcm1lbmlhblNjcmlwdENoYXJhY3RlcihVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBV
RXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9
IHVzY3JpcHRfZ2V0U2NyaXB0KGNvZGVQb2ludCwgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IgIT0g
VV9aRVJPX0VSUk9SKSB7Ci0gICAgICAgIExPR19FUlJPUigiZ290IElDVSBlcnJvciB3aGlsZSB0
cnlpbmcgdG8gbG9vayBhdCBzY3JpcHRzOiAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIHJldHVybiBzY3JpcHQgPT0gVVNDUklQVF9BUk1FTklBTjsKLX0K
LQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJ
RGlnaXRPclZhbGlkSG9zdENoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJDb2RlKQotewotICAg
IGlmICghaXNBU0NJSURpZ2l0T3JQdW5jdHVhdGlvbihjaGFyQ29kZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIC8vIFRoaW5ncyB0aGUgVVJMIFBhcnNlciByZWplY3RzOgotICAgIHN3
aXRjaCAoY2hhckNvZGUpIHsKLSAgICBjYXNlICcjJzoKLSAgICBjYXNlICclJzoKLSAgICBjYXNl
ICcvJzoKLSAgICBjYXNlICc6JzoKLSAgICBjYXNlICc/JzoKLSAgICBjYXNlICdAJzoKLSAgICBj
YXNlICdbJzoKLSAgICBjYXNlICdcXCc6Ci0gICAgY2FzZSAnXSc6Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19Ci0KLQot
Ci1zdGF0aWMgQk9PTCBpc0xvb2thbGlrZUNoYXJhY3RlcihzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+
IHByZXZpb3VzQ29kZVBvaW50LCBVQ2hhcjMyIGNoYXJDb2RlKQotewotICAgIC8vIFRoaXMgZnVu
Y3Rpb24gdHJlYXRzIHRoZSBmb2xsb3dpbmcgYXMgdW5zYWZlLCBsb29rYWxpa2UgY2hhcmFjdGVy
czoKLSAgICAvLyBhbnkgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXIsIGFueSBjaGFyYWN0ZXIgY29u
c2lkZXJlZCBhcyB3aGl0ZXNwYWNlLAotICAgIC8vIGFueSBpZ25vcmFibGUgY2hhcmFjdGVyLCBh
bmQgZW1vamkgY2hhcmFjdGVycyByZWxhdGVkIHRvIGxvY2tzLgotICAgIAotICAgIC8vIFdlIGFs
c28gY29uc2lkZXJlZCB0aGUgY2hhcmFjdGVycyBpbiBNb3ppbGxhJ3MgYmxhY2tsaXN0IDxodHRw
Oi8va2IubW96aWxsYXppbmUub3JnL05ldHdvcmsuSUROLmJsYWNrbGlzdF9jaGFycz4uCi0KLSAg
ICAvLyBTb21lIG9mIHRoZSBjaGFyYWN0ZXJzIGhlcmUgd2lsbCBuZXZlciBhcHBlYXIgb25jZSBJ
Q1UgaGFzIGVuY29kZWQuCi0gICAgLy8gRm9yIGV4YW1wbGUsIElDVSB0cmFuc2Zvcm1zIG1vc3Qg
c3BhY2VzIGludG8gYW4gQVNDSUkgc3BhY2UgYW5kIG1vc3QKLSAgICAvLyBzbGFzaGVzIGludG8g
YW4gQVNDSUkgc29saWR1cy4gQnV0IG9uZSBvZiB0aGUgdHdvIGNhbGxlcnMgdXNlcyB0aGlzCi0g
ICAgLy8gb24gY2hhcmFjdGVycyB0aGF0IGhhdmUgbm90IGJlZW4gcHJvY2Vzc2VkIGJ5IElDVSwg
c28gdGhleSBhcmUgbmVlZGVkIGhlcmUuCi0gICAgCi0gICAgaWYgKCF1X2lzcHJpbnQoY2hhckNv
ZGUpIHx8IHVfaXNVV2hpdGVTcGFjZShjaGFyQ29kZSkgfHwgdV9oYXNCaW5hcnlQcm9wZXJ0eShj
aGFyQ29kZSwgVUNIQVJfREVGQVVMVF9JR05PUkFCTEVfQ09ERV9QT0lOVCkpCi0gICAgICAgIHJl
dHVybiBZRVM7Ci0gICAgCi0gICAgc3dpdGNoIChjaGFyQ29kZSkgewotICAgICAgICBjYXNlIDB4
MDBCQzogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSICovCi0gICAgICAgIGNhc2UgMHgw
MEJEOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYgKi8KLSAgICAgICAgY2FzZSAweDAwQkU6
IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUyAqLwotICAgICAgICBjYXNlIDB4MDBF
RDogLyogTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURSAqLwotICAgICAgICBjYXNlIDB4
MDFDMzogLyogTEFUSU4gTEVUVEVSIFJFVFJPRkxFWCBDTElDSyAqLwotICAgICAgICBjYXNlIDB4
MDI1MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIEFMUEhBICovCi0gICAgICAgIGNhc2UgMHgwMjYx
OiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgU0NSSVBUIEcgKi8KLSAgICAgICAgY2FzZSAweDAyRDA6
IC8qIE1PRElGSUVSIExFVFRFUiBUUklBTkdVTEFSIENPTE9OICovCi0gICAgICAgIGNhc2UgMHgw
MzM1OiAvKiBDT01CSU5JTkcgU0hPUlQgU1RST0tFIE9WRVJMQVkgKi8KLSAgICAgICAgY2FzZSAw
eDAzMzc6IC8qIENPTUJJTklORyBTSE9SVCBTT0xJRFVTIE9WRVJMQVkgKi8KLSAgICAgICAgY2Fz
ZSAweDAzMzg6IC8qIENPTUJJTklORyBMT05HIFNPTElEVVMgT1ZFUkxBWSAqLwotICAgICAgICBj
YXNlIDB4MDU4OTogLyogQVJNRU5JQU4gRlVMTCBTVE9QICovCi0gICAgICAgIGNhc2UgMHgwNUI0
OiAvKiBIRUJSRVcgUE9JTlQgSElSSVEgKi8KLSAgICAgICAgY2FzZSAweDA1QkM6IC8qIEhFQlJF
VyBQT0lOVCBEQUdFU0ggT1IgTUFQSVEgKi8KLSAgICAgICAgY2FzZSAweDA1QzM6IC8qIEhFQlJF
VyBQVU5DVFVBVElPTiBTT0YgUEFTVVEgKi8KLSAgICAgICAgY2FzZSAweDA1RjQ6IC8qIEhFQlJF
VyBQVU5DVFVBVElPTiBHRVJTSEFZSU0gKi8KLSAgICAgICAgY2FzZSAweDA2MDk6IC8qIEFSQUJJ
Qy1JTkRJQyBQRVIgTUlMTEUgU0lHTiAqLwotICAgICAgICBjYXNlIDB4MDYwQTogLyogQVJBQklD
LUlORElDIFBFUiBURU4gVEhPVVNBTkQgU0lHTiAqLwotICAgICAgICBjYXNlIDB4MDY1MDogLyog
QVJBQklDIEtBU1JBICovCi0gICAgICAgIGNhc2UgMHgwNjYwOiAvKiBBUkFCSUMgSU5ESUMgRElH
SVQgWkVSTyAqLwotICAgICAgICBjYXNlIDB4MDY2QTogLyogQVJBQklDIFBFUkNFTlQgU0lHTiAq
LwotICAgICAgICBjYXNlIDB4MDZENDogLyogQVJBQklDIEZVTEwgU1RPUCAqLwotICAgICAgICBj
YXNlIDB4MDZGMDogLyogRVhURU5ERUQgQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KLSAgICAg
ICAgY2FzZSAweDA3MDE6IC8qIFNZUklBQyBTVVBSQUxJTkVBUiBGVUxMIFNUT1AgKi8KLSAgICAg
ICAgY2FzZSAweDA3MDI6IC8qIFNZUklBQyBTVUJMSU5FQVIgRlVMTCBTVE9QICovCi0gICAgICAg
IGNhc2UgMHgwNzAzOiAvKiBTWVJJQUMgU1VQUkFMSU5FQVIgQ09MT04gKi8KLSAgICAgICAgY2Fz
ZSAweDA3MDQ6IC8qIFNZUklBQyBTVUJMSU5FQVIgQ09MT04gKi8KLSAgICAgICAgY2FzZSAweDE3
MzU6IC8qIFBISUxJUFBJTkUgU0lOR0xFIFBVTkNUVUFUSU9OICovCi0gICAgICAgIGNhc2UgMHgx
RDA0OiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBDICovCi0gICAgICAgIGNhc2UgMHgx
RDBGOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBPICovCi0gICAgICAgIGNhc2UgMHgx
RDFDOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBVICovCi0gICAgICAgIGNhc2UgMHgx
RDIwOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBWICovCi0gICAgICAgIGNhc2UgMHgx
RDIxOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBXICovCi0gICAgICAgIGNhc2UgMHgx
RDIyOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBaICovCi0gICAgICAgIGNhc2UgMHgx
RUNEOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVCBCRUxPVyAqLwotICAgICAgICBj
YXNlIDB4MjAxMDogLyogSFlQSEVOICovCi0gICAgICAgIGNhc2UgMHgyMDExOiAvKiBOT04tQlJF
QUtJTkcgSFlQSEVOICovCi0gICAgICAgIGNhc2UgMHgyMDI0OiAvKiBPTkUgRE9UIExFQURFUiAq
LwotICAgICAgICBjYXNlIDB4MjAyNzogLyogSFlQSEVOQVRJT04gUE9JTlQgKi8KLSAgICAgICAg
Y2FzZSAweDIwMzk6IC8qIFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJL
ICovCi0gICAgICAgIGNhc2UgMHgyMDNBOiAvKiBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUg
UVVPVEFUSU9OIE1BUksgKi8KLSAgICAgICAgY2FzZSAweDIwNDE6IC8qIENBUkVUIElOU0VSVElP
TiBQT0lOVCAqLwotICAgICAgICBjYXNlIDB4MjA0NDogLyogRlJBQ1RJT04gU0xBU0ggKi8KLSAg
ICAgICAgY2FzZSAweDIwNTI6IC8qIENPTU1FUkNJQUwgTUlOVVMgU0lHTiAqLwotICAgICAgICBj
YXNlIDB4MjE1MzogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBUSElSRCAqLwotICAgICAgICBjYXNl
IDB4MjE1NDogLyogVlVMR0FSIEZSQUNUSU9OIFRXTyBUSElSRFMgKi8KLSAgICAgICAgY2FzZSAw
eDIxNTU6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRklGVEggKi8KLSAgICAgICAgY2FzZSAweDIx
NTY6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08gRklGVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTU3
OiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRklGVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTU4
OiAvKiBWVUxHQVIgRlJBQ1RJT04gRk9VUiBGSUZUSFMgKi8KLSAgICAgICAgY2FzZSAweDIxNTk6
IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgU0lYVEggKi8KLSAgICAgICAgY2FzZSAweDIxNUE6IC8q
IFZVTEdBUiBGUkFDVElPTiBGSVZFIFNJWFRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1QjogLyog
VlVMR0FSIEZSQUNUSU9OIE9ORSBFSUdIVCAqLwotICAgICAgICBjYXNlIDB4MjE1QzogLyogVlVM
R0FSIEZSQUNUSU9OIFRIUkVFIEVJR0hUSFMgKi8KLSAgICAgICAgY2FzZSAweDIxNUQ6IC8qIFZV
TEdBUiBGUkFDVElPTiBGSVZFIEVJR0hUSFMgKi8KLSAgICAgICAgY2FzZSAweDIxNUU6IC8qIFZV
TEdBUiBGUkFDVElPTiBTRVZFTiBFSUdIVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTVGOiAvKiBG
UkFDVElPTiBOVU1FUkFUT1IgT05FICovCi0gICAgICAgIGNhc2UgMHgyMjEyOiAvKiBNSU5VUyBT
SUdOICovCi0gICAgICAgIGNhc2UgMHgyMjE1OiAvKiBESVZJU0lPTiBTTEFTSCAqLwotICAgICAg
ICBjYXNlIDB4MjIxNjogLyogU0VUIE1JTlVTICovCi0gICAgICAgIGNhc2UgMHgyMjM2OiAvKiBS
QVRJTyAqLwotICAgICAgICBjYXNlIDB4MjMzRjogLyogQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNM
QVNIIEJBUiAqLwotICAgICAgICBjYXNlIDB4MjNBRTogLyogSU5URUdSQUwgRVhURU5TSU9OICov
Ci0gICAgICAgIGNhc2UgMHgyNDRBOiAvKiBPQ1IgRE9VQkxFIEJBQ0tTTEFTSCAqLwotICAgICAg
ICBjYXNlIDB4MjU3MTogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBESUFHT05B
TCBVUFBFUiBSSUdIVCBUTyBMT1dFUiBMRUZUICovCi0gICAgICAgIGNhc2UgMHgyNTcyOiAvKiBE
aXNwbGF5VHlwZTo6Qm94IERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIExFRlQgVE8gTE9X
RVIgUklHSFQgKi8KLSAgICAgICAgY2FzZSAweDI5RjY6IC8qIFNPTElEVVMgV0lUSCBPVkVSQkFS
ICovCi0gICAgICAgIGNhc2UgMHgyOUY4OiAvKiBCSUcgU09MSURVUyAqLwotICAgICAgICBjYXNl
IDB4MkFGQjogLyogVFJJUExFIFNPTElEVVMgQklOQVJZIFJFTEFUSU9OICovCi0gICAgICAgIGNh
c2UgMHgyQUZEOiAvKiBET1VCTEUgU09MSURVUyBPUEVSQVRPUiAqLwotICAgICAgICBjYXNlIDB4
MkZGMDogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIExFRlQgVE8gUklHSFQg
Ki8KLSAgICAgICAgY2FzZSAweDJGRjE6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJB
Q1RFUiBBQk9WRSBUTyBCRUxPVyAqLwotICAgICAgICBjYXNlIDB4MkZGMjogLyogSURFT0dSQVBI
SUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIExFRlQgVE8gTUlERExFIEFORCBSSUdIVCAqLwotICAg
ICAgICBjYXNlIDB4MkZGMzogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEFC
T1ZFIFRPIE1JRERMRSBBTkQgQkVMT1cgKi8KLSAgICAgICAgY2FzZSAweDJGRjQ6IC8qIElERU9H
UkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBGVUxMIFNVUlJPVU5EICovCi0gICAgICAgIGNh
c2UgMHgyRkY1OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQg
RlJPTSBBQk9WRSAqLwotICAgICAgICBjYXNlIDB4MkZGNjogLyogSURFT0dSQVBISUMgREVTQ1JJ
UFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQkVMT1cgKi8KLSAgICAgICAgY2FzZSAweDJG
Rjc6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIExF
RlQgKi8KLSAgICAgICAgY2FzZSAweDJGRjg6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENI
QVJBQ1RFUiBTVVJST1VORCBGUk9NIFVQUEVSIExFRlQgKi8KLSAgICAgICAgY2FzZSAweDJGRjk6
IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIFVQUEVS
IFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyRkZBOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElP
TiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMT1dFUiBMRUZUICovCi0gICAgICAgIGNhc2UgMHgy
RkZCOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgT1ZFUkxBSUQgKi8KLSAg
ICAgICAgY2FzZSAweDMwMDI6IC8qIElERU9HUkFQSElDIEZVTEwgU1RPUCAqLwotICAgICAgICBj
YXNlIDB4MzAwODogLyogTEVGVCBBTkdMRSBCUkFDS0VUICovCi0gICAgICAgIGNhc2UgMHgzMDE0
OiAvKiBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KLSAgICAgICAgY2FzZSAweDMwMTU6
IC8qIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KLSAgICAgICAgY2FzZSAweDMwMzM6
IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgVVBQRVIgSEFMRiAqLwotICAgICAgICBjYXNl
IDB4MzAzNTogLyogVkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSyBMT1dFUiBIQUxGICovCi0gICAg
ICAgIGNhc2UgMHgzMjFEOiAvKiBQQVJFTlRIRVNJWkVEIEtPUkVBTiBDSEFSQUNURVIgT0pFT04g
Ki8KLSAgICAgICAgY2FzZSAweDMyMUU6IC8qIFBBUkVOVEhFU0laRUQgS09SRUFOIENIQVJBQ1RF
UiBPIEhVICovCi0gICAgICAgIGNhc2UgMHgzM0FFOiAvKiBTUVVBUkUgUkFEIE9WRVIgUyAqLwot
ICAgICAgICBjYXNlIDB4MzNBRjogLyogU1FVQVJFIFJBRCBPVkVSIFMgU1FVQVJFRCAqLwotICAg
ICAgICBjYXNlIDB4MzNDNjogLyogU1FVQVJFIEMgT1ZFUiBLRyAqLwotICAgICAgICBjYXNlIDB4
MzNERjogLyogU1FVQVJFIEEgT1ZFUiBNICovCi0gICAgICAgIGNhc2UgMHgwNUI5OiAvKiBIRUJS
RVcgUE9JTlQgSE9MQU0gKi8KLSAgICAgICAgY2FzZSAweDA1QkE6IC8qIEhFQlJFVyBQT0lOVCBI
T0xBTSBIQVNFUiBGT1IgVkFWICovCi0gICAgICAgIGNhc2UgMHgwNUMxOiAvKiBIRUJSRVcgUE9J
TlQgU0hJTiBET1QgKi8KLSAgICAgICAgY2FzZSAweDA1QzI6IC8qIEhFQlJFVyBQT0lOVCBTSU4g
RE9UICovCi0gICAgICAgIGNhc2UgMHgwNUM0OiAvKiBIRUJSRVcgTUFSSyBVUFBFUiBET1QgKi8K
LSAgICAgICAgY2FzZSAweEE3MzE6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFMgKi8K
LSAgICAgICAgY2FzZSAweEE3NzE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBEVU0gKi8KLSAgICAg
ICAgY2FzZSAweEE3ODk6IC8qIE1PRElGSUVSIExFVFRFUiBDT0xPTiAqLwotICAgICAgICBjYXNl
IDB4RkUxNDogLyogUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFNFTUlDT0xPTiAqLwot
ICAgICAgICBjYXNlIDB4RkUxNTogLyogUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIEVY
Q0xBTUFUSU9OIE1BUksgKi8KLSAgICAgICAgY2FzZSAweEZFM0Y6IC8qIFBSRVNFTlRBVElPTiBG
T1JNIEZPUiBWRVJUSUNBTCBMRUZUIEFOR0xFIEJSQUNLRVQgKi8KLSAgICAgICAgY2FzZSAweEZF
NUQ6IC8qIFNNQUxMIExFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLwotICAgICAgICBjYXNl
IDB4RkU1RTogLyogU01BTEwgUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLwotICAgICAg
ICBjYXNlIDB4RkYwRTogLyogRlVMTFdJRFRIIEZVTEwgU1RPUCAqLwotICAgICAgICBjYXNlIDB4
RkYwRjogLyogRlVMTCBXSURUSCBTT0xJRFVTICovCi0gICAgICAgIGNhc2UgMHhGRjYxOiAvKiBI
QUxGV0lEVEggSURFT0dSQVBISUMgRlVMTCBTVE9QICovCi0gICAgICAgIGNhc2UgMHhGRkZDOiAv
KiBPQkpFQ1QgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCi0gICAgICAgIGNhc2UgMHhGRkZEOiAv
KiBSRVBMQUNFTUVOVCBDSEFSQUNURVIgKi8KLSAgICAgICAgY2FzZSAweDFGNTBGOiAvKiBMT0NL
IFdJVEggSU5LIFBFTiAqLwotICAgICAgICBjYXNlIDB4MUY1MTA6IC8qIENMT1NFRCBMT0NLIFdJ
VEggS0VZICovCi0gICAgICAgIGNhc2UgMHgxRjUxMTogLyogS0VZICovCi0gICAgICAgIGNhc2Ug
MHgxRjUxMjogLyogTE9DSyAqLwotICAgICAgICBjYXNlIDB4MUY1MTM6IC8qIE9QRU4gTE9DSyAq
LwotICAgICAgICAgICAgcmV0dXJuIFlFUzsKLSAgICAgICAgY2FzZSAweDAzMDc6IC8qIENPTUJJ
TklORyBET1QgQUJPVkUgKi8KLSAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0NvZGVQb2ludCA9
PSAweDAyMzcgLyogTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSiAqLwotICAgICAgICAgICAg
ICAgIHx8IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDEzMSAvKiBMQVRJTiBTTUFMTCBMRVRURVIg
RE9UTEVTUyBJICovCi0gICAgICAgICAgICAgICAgfHwgcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgw
NUQ1OyAvKiBIRUJSRVcgTEVUVEVSIFZBViAqLwotICAgICAgICBjYXNlIDB4MDU0ODogLyogQVJN
RU5JQU4gQ0FQSVRBTCBMRVRURVIgVk8gKi8KLSAgICAgICAgY2FzZSAweDA1NEQ6IC8qIEFSTUVO
SUFOIENBUElUQUwgTEVUVEVSIFNFSCAqLwotICAgICAgICBjYXNlIDB4MDU3ODogLyogQVJNRU5J
QU4gU01BTEwgTEVUVEVSIFZPICovCi0gICAgICAgIGNhc2UgMHgwNTdEOiAvKiBBUk1FTklBTiBT
TUFMTCBMRVRURVIgU0VIICovCi0gICAgICAgICAgICByZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQK
LSAgICAgICAgICAgICAgICAmJiAhaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIocHJl
dmlvdXNDb2RlUG9pbnQudmFsdWUoKSkKLSAgICAgICAgICAgICAgICAmJiAhaXNBcm1lbmlhblNj
cmlwdENoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgpKTsKLSAgICAgICAgY2FzZSAn
Lic6Ci0gICAgICAgICAgICByZXR1cm4gTk87Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQKLSAgICAgICAgICAgICAgICAmJiBpc0FybWVuaWFu
TG9va2FsaWtlQ2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCi0gICAgICAgICAg
ICAgICAgJiYgIShpc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKGNoYXJDb2RlKSB8fCBpc0FTQ0lJ
RGlnaXRPclZhbGlkSG9zdENoYXJhY3RlcihjaGFyQ29kZSkpOwotICAgIH0KLX0KLQotc3RhdGlj
IHZvaWQgd2hpdGVMaXN0SUROU2NyaXB0KGNvbnN0IGNoYXIqIHNjcmlwdE5hbWUpCi17Ci0gICAg
aW50MzJfdCBzY3JpcHQgPSB1X2dldFByb3BlcnR5VmFsdWVFbnVtKFVDSEFSX1NDUklQVCwgc2Ny
aXB0TmFtZSk7Ci0gICAgaWYgKHNjcmlwdCA+PSAwICYmIHNjcmlwdCA8IFVTQ1JJUFRfQ09ERV9M
SU1JVCkgewotICAgICAgICBzaXplX3QgaW5kZXggPSBzY3JpcHQgLyAzMjsKLSAgICAgICAgdWlu
dDMyX3QgbWFzayA9IDEgPDwgKHNjcmlwdCAlIDMyKTsKLSAgICAgICAgSUROU2NyaXB0V2hpdGVM
aXN0W2luZGV4XSB8PSBtYXNrOwotICAgIH0KLX0KLQotc3RhdGljIEJPT0wgcmVhZElETlNjcmlw
dFdoaXRlTGlzdEZpbGUoTlNTdHJpbmcgKmZpbGVuYW1lKQotewotICAgIGlmICghZmlsZW5hbWUp
Ci0gICAgICAgIHJldHVybiBOTzsKLQotICAgIEZJTEUgKmZpbGUgPSBmb3BlbihbZmlsZW5hbWUg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSwgInIiKTsKLSAgICBpZiAoIWZpbGUpCi0gICAgICAg
IHJldHVybiBOTzsKLSAgICAKLSAgICAvLyBSZWFkIGEgd29yZCBhdCBhIHRpbWUuCi0gICAgLy8g
QWxsb3cgY29tbWVudHMsIHN0YXJ0aW5nIHdpdGggIyBjaGFyYWN0ZXIgdG8gdGhlIGVuZCBvZiB0
aGUgbGluZS4KLSAgICB3aGlsZSAoMSkgewotICAgICAgICAvLyBTa2lwIGEgY29tbWVudCBpZiBw
cmVzZW50LgotICAgICAgICBpZiAoZnNjYW5mKGZpbGUsICIgIyUqW15cblxyXSUqW1xuXHJdIikg
PT0gRU9GKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICAvLyBSZWFkIGEg
c2NyaXB0IG5hbWUgaWYgcHJlc2VudC4KLSAgICAgICAgY2hhciB3b3JkWzMzXTsKLSAgICAgICAg
aW50IHJlc3VsdCA9IGZzY2FuZihmaWxlLCAiICUzMlteIyBcdFxuXHJdJSpbXiMgXHRcblxyXSAi
LCB3b3JkKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBFT0YpCi0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQgPT0gMSkgewotICAgICAgICAgICAgLy8gR290
IGEgd29yZCwgbWFwIHRvIHNjcmlwdCBjb2RlIGFuZCBwdXQgaXQgaW50byB0aGUgYXJyYXkuCi0g
ICAgICAgICAgICB3aGl0ZUxpc3RJRE5TY3JpcHQod29yZCk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgZmNsb3NlKGZpbGUpOwotICAgIHJldHVybiBZRVM7Ci19Ci0KLXN0YXRpYyBCT09MIGFsbENo
YXJhY3RlcnNJbklETlNjcmlwdFdoaXRlTGlzdChjb25zdCBVQ2hhciAqYnVmZmVyLCBpbnQzMl90
IGxlbmd0aCkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IGZsYWc7Ci0gICAgZGlzcGF0
Y2hfb25jZSgmZmxhZywgXnsKLSAgICAgICAgLy8gUmVhZCB3aGl0ZSBsaXN0IGZyb20gbGlicmFy
eS4KLSAgICAgICAgTlNBcnJheSAqZGlycyA9IE5TU2VhcmNoUGF0aEZvckRpcmVjdG9yaWVzSW5E
b21haW5zKE5TTGlicmFyeURpcmVjdG9yeSwgTlNBbGxEb21haW5zTWFzaywgWUVTKTsKLSAgICAg
ICAgaW50IG51bURpcnMgPSBbZGlycyBjb3VudF07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbnVtRGlyczsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAocmVhZElETlNjcmlwdFdoaXRlTGlz
dEZpbGUoW1tkaXJzIG9iamVjdEF0SW5kZXg6aV0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiSUROU2NyaXB0V2hpdGVMaXN0LnR4dCJdKSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgY2hhciogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlz
dFsyMF0gPSB7Ci0gICAgICAgICAgICAiQ29tbW9uIiwKLSAgICAgICAgICAgICJJbmhlcml0ZWQi
LAotICAgICAgICAgICAgIkFyYWJpYyIsCi0gICAgICAgICAgICAiQXJtZW5pYW4iLAotICAgICAg
ICAgICAgIkJvcG9tb2ZvIiwKLSAgICAgICAgICAgICJDYW5hZGlhbl9BYm9yaWdpbmFsIiwKLSAg
ICAgICAgICAgICJEZXZhbmFnYXJpIiwKLSAgICAgICAgICAgICJEZXNlcmV0IiwKLSAgICAgICAg
ICAgICJHdWphcmF0aSIsCi0gICAgICAgICAgICAiR3VybXVraGkiLAotICAgICAgICAgICAgIkhh
bmd1bCIsCi0gICAgICAgICAgICAiSGFuIiwKLSAgICAgICAgICAgICJIZWJyZXciLAotICAgICAg
ICAgICAgIkhpcmFnYW5hIiwKLSAgICAgICAgICAgICJLYXRha2FuYV9Pcl9IaXJhZ2FuYSIsCi0g
ICAgICAgICAgICAiS2F0YWthbmEiLAotICAgICAgICAgICAgIkxhdGluIiwKLSAgICAgICAgICAg
ICJUYW1pbCIsCi0gICAgICAgICAgICAiVGhhaSIsCi0gICAgICAgICAgICAiWWkiLAotICAgICAg
ICB9OwotICAgICAgICBmb3IgKGNvbnN0IGNoYXIqIHNjcmlwdE5hbWUgOiBkZWZhdWx0SUROU2Ny
aXB0V2hpdGVMaXN0KQotICAgICAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHNjcmlwdE5hbWUp
OwotICAgIH0pOwotICAgIAotICAgIGludDMyX3QgaSA9IDA7Ci0gICAgc3RkOjpvcHRpb25hbDxV
Q2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludDsKLSAgICB3aGlsZSAoaSA8IGxlbmd0aCkgewotICAg
ICAgICBVQ2hhcjMyIGM7Ci0gICAgICAgIFUxNl9ORVhUKGJ1ZmZlciwgaSwgbGVuZ3RoLCBjKQot
ICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBVU2NyaXB0
Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjLCAmZXJyb3IpOwotICAgICAgICBpZiAo
ZXJyb3IgIT0gVV9aRVJPX0VSUk9SKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoImdvdCBJQ1Ug
ZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBlcnJvcik7Ci0gICAg
ICAgICAgICByZXR1cm4gTk87Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNjcmlwdCA8IDApIHsK
LSAgICAgICAgICAgIExPR19FUlJPUigiZ290IG5lZ2F0aXZlIG51bWJlciBmb3Igc2NyaXB0IGNv
ZGUgZnJvbSBJQ1U6ICVkIiwgc2NyaXB0KTsKLSAgICAgICAgICAgIHJldHVybiBOTzsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoc2NyaXB0ID49IFVTQ1JJUFRfQ09ERV9MSU1JVCkKLSAgICAgICAg
ICAgIHJldHVybiBOTzsKLQotICAgICAgICBzaXplX3QgaW5kZXggPSBzY3JpcHQgLyAzMjsKLSAg
ICAgICAgdWludDMyX3QgbWFzayA9IDEgPDwgKHNjcmlwdCAlIDMyKTsKLSAgICAgICAgaWYgKCEo
SUROU2NyaXB0V2hpdGVMaXN0W2luZGV4XSAmIG1hc2spKQotICAgICAgICAgICAgcmV0dXJuIE5P
OwotICAgICAgICAKLSAgICAgICAgaWYgKGlzTG9va2FsaWtlQ2hhcmFjdGVyKHByZXZpb3VzQ29k
ZVBvaW50LCBjKSkKLSAgICAgICAgICAgIHJldHVybiBOTzsKLSAgICAgICAgcHJldmlvdXNDb2Rl
UG9pbnQgPSBjOwotICAgIH0KLSAgICByZXR1cm4gWUVTOwotfQotCi1zdGF0aWMgYm9vbCBpc1Nl
Y29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIs
IGludDMyX3QgbGVuZ3RoLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woVUNoYXIpPiYgY2hhcmFj
dGVySXNBbGxvd2VkKQotewotICAgIEFTU0VSVChsZW5ndGggPiAwKTsKLQotICAgIGZvciAoaW50
MzJfdCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgVUNoYXIgY2ggPSBi
dWZmZXJbaV07Ci0gICAgICAgIAotICAgICAgICBpZiAoY2hhcmFjdGVySXNBbGxvd2VkKGNoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgLy8gT25seSBjaGVjayB0
aGUgc2Vjb25kIGxldmVsIGRvbWFpbi4gTG93ZXIgbGV2ZWwgcmVnaXN0cmFycyBtYXkgaGF2ZSBk
aWZmZXJlbnQgcnVsZXMuCi0gICAgICAgIGlmIChjaCA9PSAnLicpCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLSNkZWZpbmUgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoc3VmZml4LCBm
dW5jdGlvbikgXAotICAgIHsgXAotICAgICAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBzdWZmaXhM
ZW5ndGggPSBzaXplb2Yoc3VmZml4KSAvIHNpemVvZihzdWZmaXhbMF0pOyBcCi0gICAgICAgIGlm
IChsZW5ndGggPiBzdWZmaXhMZW5ndGggJiYgMCA9PSBtZW1jbXAoYnVmZmVyICsgbGVuZ3RoIC0g
c3VmZml4TGVuZ3RoLCBzdWZmaXgsIHNpemVvZihzdWZmaXgpKSkgXAotICAgICAgICAgICAgcmV0
dXJuIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMoYnVmZmVyLCBsZW5n
dGggLSBzdWZmaXhMZW5ndGgsIGZ1bmN0aW9uKTsgXAotICAgIH0KLQotc3RhdGljIGJvb2wgaXNS
dXNzaWFuRG9tYWluTmFtZUNoYXJhY3RlcihVQ2hhciBjaCkKLXsKLSAgICAvLyBPbmx5IG1vZGVy
biBSdXNzaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgIHJl
dHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGlz
QVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwotfQotCi1zdGF0aWMgQk9PTCBhbGxDaGFyYWN0
ZXJzQWxsb3dlZEJ5VExEUnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgp
Ci17Ci0gICAgLy8gU2tpcCB0cmFpbGluZyBkb3QgZm9yIHJvb3QgZG9tYWluLgotICAgIGlmIChi
dWZmZXJbbGVuZ3RoIC0gMV0gPT0gJy4nKQotICAgICAgICBsZW5ndGgtLTsKLQotICAgIC8vIGh0
dHA6Ly9jY3RsZC5ydS9maWxlcy9wZGYvZG9jcy9ydWxlc19ydS1yZi5wZGYKLSAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgY3lyaWxsaWNSRltdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQ0
MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgICAgIDB4MDQ0NCAgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIEVGCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFU
Q0hFUyhjeXJpbGxpY1JGLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8v
IGh0dHA6Ly9ydXNuYW1lcy5ydS9ydWxlcy5wbAotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJp
bGxpY1JVU1tdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQ0MCwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEVSCi0gICAgICAgIDB4MDQ0MywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IFUKLSAgICAgICAgMHgwNDQxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKLSAgICB9Owot
ICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljUlVTLCBpc1J1c3NpYW5E
b21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9ydS5mYWl0aWQub3JnL3Byb2pl
Y3RzL21vc2Nvdy9kb2N1bWVudHMvbW9za3ZhL2lkbgotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBj
eXJpbGxpY01PU0tWQVtdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQzQywgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEVNCi0gICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIE8KLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKLSAg
ICAgICAgMHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwNDMy
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKLSAgICAgICAgMHgwNDMwICAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgQQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENI
RVMoY3lyaWxsaWNNT1NLVkEsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOwotCi0gICAg
Ly8gaHR0cDovL3d3dy5kb3RkZXRpLnJ1L2ZvcnVzZXIvZG9jcy9yZWdydWxlcy5waHAKLSAgICBz
dGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNERVRJW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAg
ICAgMHgwNDM0LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKLSAgICAgICAgMHgwNDM1LCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKLSAgICAgICAgMHgwNDQyLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgVEUKLSAgICAgICAgMHgwNDM4ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
SQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNERVRJ
LCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jb3Jlbmlj
Lm9yZyAtIHJ1bGVzIG5vdCBwdWJsaXNoZWQuIFRoZSB3b3JkIGlzIFJ1c3NpYW4sIHNvIG9ubHkg
YWxsb3dpbmcgUnVzc2lhbiBhdCB0aGlzIHRpbWUsCi0gICAgLy8gYWx0aG91Z2ggd2UgbWF5IG5l
ZWQgdG8gcmV2aXNlIHRoZSBjaGVja3MgaWYgdGhpcyBlbmRzIHVwIGJlaW5nIHVzZWQgd2l0aCBv
dGhlciBsYW5ndWFnZXMgc3Bva2VuIGluIFJ1c3NpYS4KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIg
Y3lyaWxsaWNPTkxBWU5bXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0M0UsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDQzRCwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEVOCi0gICAgICAgIDB4MDQzQiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCi0g
ICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICAgICAgMHgwNDM5
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQotICAgICAgICAweDA0M0QgIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklY
X01BVENIRVMoY3lyaWxsaWNPTkxBWU4sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOwot
Ci0gICAgLy8gaHR0cDovL2NvcmVuaWMub3JnIC0gc2FtZSBhcyBhYm92ZS4KLSAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgY3lyaWxsaWNTQVlUW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgw
NDQxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKLSAgICAgICAgMHgwNDMwLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgQQotICAgICAgICAweDA0MzksIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBTSE9SVCBJCi0gICAgICAgIDB4MDQ0MiAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRF
Ci0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1NBWVQs
IGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOwotCi0gICAgLy8gaHR0cDovL3Bpci5vcmcv
cHJvZHVjdHMvb3ByLWRvbWFpbi8gLSBydWxlcyBub3QgcHVibGlzaGVkLiBBY2NvcmRpbmcgdG8g
dGhlIHJlZ2lzdHJ5IHNpdGUsCi0gICAgLy8gdGhlIGludGVuZGVkIGF1ZGllbmNlIGlzICJSdXNz
aWFuIGFuZCBvdGhlciBTbGF2aWMtc3BlYWtpbmcgbWFya2V0cyIuCi0gICAgLy8gQ2hyb21lIGFw
cGVhcnMgdG8gb25seSBhbGxvdyBSdXNzaWFuLCBzbyBzdGlja2luZyB3aXRoIHRoYXQgZm9yIG5v
dy4KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNPUkdbXSA9IHsKLSAgICAgICAgJy4n
LAotICAgICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4
MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgICAgIDB4MDQzMyAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEdIRQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklY
X01BVENIRVMoY3lyaWxsaWNPUkcsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOwotCi0g
ICAgLy8gaHR0cDovL2NjdGxkLmJ5L3J1bGVzLmh0bWwKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIg
Y3lyaWxsaWNCRUxbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0MzEsIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBCRQotICAgICAgICAweDA0MzUsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBJRQotICAgICAgICAweDA0M0IgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAotICAg
IH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNCRUwsIFtdKFVD
aGFyIGNoKSB7Ci0gICAgICAgIC8vIFJ1c3NpYW4gYW5kIEJ5ZWxvcnVzc2lhbiBsZXR0ZXJzLCBk
aWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0
MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNDU2IHx8IGNo
ID09IDB4MDQ1RSB8fCBjaCA9PSAweDIwMTkgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAn
LSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwOi8vd3d3Lm5pYy5rei9kb2NzL3BvcnlhZG9rX3Zu
ZWRyZW5peWFfa2F6X3J1LnBkZgotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY0tBWltd
ID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQ5QiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEtBIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEEKLSAgICAgICAgMHgwNDM3ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUKLSAg
ICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljS0FaLCBbXShV
Q2hhciBjaCkgewotICAgICAgICAvLyBLYXpha2ggbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMg
YXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0
ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09IDB4MDREOSB8fCBjaCA9PSAweDA0OTMgfHwgY2gg
PT0gMHgwNDlCIHx8IGNoID09IDB4MDRBMyB8fCBjaCA9PSAweDA0RTkgfHwgY2ggPT0gMHgwNEIx
IHx8IGNoID09IDB4MDRBRiB8fCBjaCA9PSAweDA0QkIgfHwgY2ggPT0gMHgwNDU2IHx8IGlzQVND
SUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gaHR0cDovL3Vhbmlj
Lm5ldC9kb2NzL2RvY3VtZW50cy11a3IvUnVsZXMlMjBvZiUyMFVLUl92NC4wLnBkZgotICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1VLUltdID0gewotICAgICAgICAnLicsCi0gICAgICAg
IDB4MDQ0MywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKLSAgICAgICAgMHgwNDNBLCAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwNDQwICAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgRVIKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5
cmlsbGljVUtSLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBSdXNzaWFuIGFuZCBVa3JhaW5p
YW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVy
biAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09
IDB4MDQ5MSB8fCBjaCA9PSAweDA0MDQgfHwgY2ggPT0gMHgwNDU2IHx8IGNoID09IDB4MDQ1NyB8
fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIGh0dHA6
Ly93d3cucm5pZHMucnMvZGF0YS9ET0tVTUVOVEkvaWRuLXNyYi1wb2xpY3ktdGVybXNvZnVzZS12
MS40LWVuZy5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNTUkJbXSA9IHsKLSAg
ICAgICAgJy4nLAotICAgICAgICAweDA0NDEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUwot
ICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0
MzEgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBCRQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNf
SUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNTUkIsIFtdKFVDaGFyIGNoKSB7Ci0gICAgICAgIC8v
IFNlcmJpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAg
IHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQzOCkgfHwgKGNoID49IDB4MDQzQSAm
JiBjaCA8PSAweDA0NDgpIHx8IGNoID09IDB4MDQ1MiB8fCBjaCA9PSAweDA0NTggfHwgY2ggPT0g
MHgwNDU5IHx8IGNoID09IDB4MDQ1QSB8fCBjaCA9PSAweDA0NUIgfHwgY2ggPT0gMHgwNDVGIHx8
IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gaHR0cDov
L21hcm5ldC5tay9kb2MvcHJhdmlsbmlrLW1rLW1rZC5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNo
YXIgY3lyaWxsaWNNS0RbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0M0MsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAweDA0M0EsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBLQQotICAgICAgICAweDA0MzQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBERQot
ICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNS0QsIFtd
KFVDaGFyIGNoKSB7Ci0gICAgICAgIC8vIE1hY2Vkb25pYW4gbGV0dGVycywgZGlnaXRzIGFuZCBk
YXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9
IDB4MDQzOCkgfHwgKGNoID49IDB4MDQzQSAmJiBjaCA8PSAweDA0NDgpIHx8IGNoID09IDB4MDQ1
MyB8fCBjaCA9PSAweDA0NTUgfHwgY2ggPT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9
PSAweDA0NUEgfHwgY2ggPT0gMHgwNDVDIHx8IGNoID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQo
Y2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIGh0dHBzOi8vd3d3Lm1vbi5tbi9j
cy8KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT05bXSA9IHsKLSAgICAgICAgJy4n
LAotICAgICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAw
eDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDQzRCAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEVOCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhf
TUFUQ0hFUyhjeXJpbGxpY01PTiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gTW9uZ29saWFu
IGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4g
KGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAw
eDA0RTkgfHwgY2ggPT0gMHgwNEFGIHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwot
ICAgIH0pOwotCi0gICAgLy8gTm90IGEga25vd24gdG9wIGxldmVsIGRvbWFpbiB3aXRoIHNwZWNp
YWwgcnVsZXMuCi0gICAgcmV0dXJuIE5POwotfQotCi0vLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1l
YW5zIG5vIG1hcHBpbmcgaXMgbmVjZXNzYXJ5LgotLy8gSWYgbWFrZVN0cmluZyBpcyBOTywgdGhl
biByZXR1cm4gdmFsdWUgaXMgZWl0aGVyIG5pbCBvciBzZWxmIHRvIGluZGljYXRlIG1hcHBpbmcg
aXMgbmVjZXNzYXJ5LgotLy8gSWYgbWFrZVN0cmluZyBpcyBZRVMsIHRoZW4gcmV0dXJuIHZhbHVl
IGlzIGVpdGhlciBuaWwgb3IgdGhlIG1hcHBlZCBzdHJpbmcuCi1zdGF0aWMgTlNTdHJpbmcgKm1h
cEhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wg
ZW5jb2RlLCBCT09MIG1ha2VTdHJpbmcsIEJPT0wgKmVycm9yKQotewotICAgIGlmIChyYW5nZS5s
ZW5ndGggPiBIT1NUX05BTUVfQlVGRkVSX0xFTkdUSCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICAKLSAgICBpZiAoIVtzdHJpbmcgbGVuZ3RoXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAK
LSAgICBVQ2hhciBzb3VyY2VCdWZmZXJbSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEhdOwotICAgIFVD
aGFyIGRlc3RpbmF0aW9uQnVmZmVyW0hPU1RfTkFNRV9CVUZGRVJfTEVOR1RIXTsKLSAgICAKLSAg
ICBpZiAoZW5jb2RlICYmIFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIiUiIG9wdGlvbnM6TlNMaXRl
cmFsU2VhcmNoIHJhbmdlOnJhbmdlXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKSB7Ci0gICAgICAg
IE5TU3RyaW5nICpzdWJzdHJpbmcgPSBbc3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpyYW5nZV07
Ci0gICAgICAgIHN1YnN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlU3RyaW5n
QnlSZXBsYWNpbmdQZXJjZW50RXNjYXBlcyhudWxscHRyLCAoQ0ZTdHJpbmdSZWYpc3Vic3RyaW5n
LCBDRlNUUigiIikpKTsKLSAgICAgICAgaWYgKHN1YnN0cmluZykgewotICAgICAgICAgICAgc3Ry
aW5nID0gc3Vic3RyaW5nOwotICAgICAgICAgICAgcmFuZ2UgPSBOU01ha2VSYW5nZSgwLCBbc3Ry
aW5nIGxlbmd0aF0pOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGludCBsZW5ndGggPSBy
YW5nZS5sZW5ndGg7Ci0gICAgW3N0cmluZyBnZXRDaGFyYWN0ZXJzOnNvdXJjZUJ1ZmZlciByYW5n
ZTpyYW5nZV07Ci0gICAgCi0gICAgVUVycm9yQ29kZSB1ZXJyb3IgPSBVX1pFUk9fRVJST1I7Ci0g
ICAgVUlETkFJbmZvIHByb2Nlc3NpbmdEZXRhaWxzID0gVUlETkFfSU5GT19JTklUSUFMSVpFUjsK
LSAgICBpbnQzMl90IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPSAoZW5jb2RlID8gdWlkbmFfbmFt
ZVRvQVNDSUkgOiB1aWRuYV9uYW1lVG9Vbmljb2RlKSgmVVJMUGFyc2VyOjppbnRlcm5hdGlvbmFs
RG9tYWluTmFtZVRyYW5zY29kZXIoKSwgc291cmNlQnVmZmVyLCBsZW5ndGgsIGRlc3RpbmF0aW9u
QnVmZmVyLCBIT1NUX05BTUVfQlVGRkVSX0xFTkdUSCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmdWVy
cm9yKTsKLSAgICBpZiAobGVuZ3RoICYmIChVX0ZBSUxVUkUodWVycm9yKSB8fCBwcm9jZXNzaW5n
RGV0YWlscy5lcnJvcnMpKSB7Ci0gICAgICAgICplcnJvciA9IFlFUzsKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPT0gbGVu
Z3RoICYmICFtZW1jbXAoc291cmNlQnVmZmVyLCBkZXN0aW5hdGlvbkJ1ZmZlciwgbGVuZ3RoICog
c2l6ZW9mKFVDaGFyKSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKCFlbmNv
ZGUgJiYgIWFsbENoYXJhY3RlcnNJbklETlNjcmlwdFdoaXRlTGlzdChkZXN0aW5hdGlvbkJ1ZmZl
ciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCkgJiYgIWFsbENoYXJhY3RlcnNBbGxvd2VkQnlUTERS
dWxlcyhkZXN0aW5hdGlvbkJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCkpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcgPyBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6ZGVzdGluYXRpb25CdWZmZXIgbGVuZ3RoOm51bUNoYXJhY3RlcnND
b252ZXJ0ZWRdIDogc3RyaW5nOwotfQotCi1CT09MIGhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhS
YW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MICplcnJvcikKLXsKLSAg
ICByZXR1cm4gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgTk8sIE5PLCBlcnJv
cikgIT0gbmlsOwotfQotIAotQk9PTCBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UoTlNT
dHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCAqZXJyb3IpCi17Ci0gICAgcmV0dXJu
IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIFlFUywgIE5PLCBlcnJvcikgIT0g
bmlsOwotfQotCi1OU1N0cmluZyAqZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0
cmluZywgTlNSYW5nZSByYW5nZSkKLXsKLSAgICBCT09MIGVycm9yID0gTk87Ci0gICAgTlNTdHJp
bmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBOTywgWUVTLCAm
ZXJyb3IpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
IWhvc3QgPyBzdHJpbmcgOiBob3N0OwotfQotCi1OU1N0cmluZyAqZW5jb2RlSG9zdE5hbWVXaXRo
UmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSkKLXsKLSAgICBCT09MIGVycm9y
ID0gTk87Ci0gICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcs
IHJhbmdlLCBZRVMsIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcg
KmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5P
OwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBOU01h
a2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pLCBOTywgWUVTLCAmZXJyb3IpOwotICAgIGlmIChl
cnJvcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBo
b3N0OwotfQotCi1OU1N0cmluZyAqZW5jb2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKLXsK
LSAgICBCT09MIGVycm9yID0gTk87Ci0gICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdp
dGhSYW5nZShzdHJpbmcsIE5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSksIFlFUywgWUVT
LCAmZXJyb3IpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1
cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OwotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2Vz
VGhhdE5lZWRNYXBwaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4mIGFycmF5LCBCT09MIGVuY29kZSkKLXsKLSAgICAvLyBHZW5lcmFs
bHksIHdlIHdhbnQgdG8gb3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIG9uZSBo
b3N0IG5hbWUgdGhhdCBkb2VzIG5vdCBuZWVkIG1hcHBpbmcuCi0gICAgLy8gVGhlcmVmb3JlLCB3
ZSB1c2UgbmlsIHRvIGluZGljYXRlIG5vIG1hcHBpbmcgaGVyZSBhbmQgYW4gZW1wdHkgYXJyYXkg
dG8gaW5kaWNhdGUgZXJyb3IuCi0KLSAgICBCT09MIGVycm9yID0gTk87Ci0gICAgQk9PTCBuZWVk
c01hcHBpbmcgPSBlbmNvZGUgPyBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2Uoc3RyaW5n
LCByYW5nZSwgJmVycm9yKSA6IGhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZShzdHJpbmcs
IHJhbmdlLCAmZXJyb3IpOwotICAgIGlmICghZXJyb3IgJiYgIW5lZWRzTWFwcGluZykKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIGlmICghYXJyYXkpCi0gICAgICAgIGFycmF5ID0gYWRvcHRO
UyhbTlNNdXRhYmxlQXJyYXkgbmV3XSk7Ci0KLSAgICBpZiAoIWVycm9yKQotICAgICAgICBbYXJy
YXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOnJhbmdlXV07Ci19Ci0KLXN0YXRp
YyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5T
UmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQotewotICAgIHJl
dHVybiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmluZywgcmFuZ2UsIGFycmF5LCBZ
RVMpOwotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWREZWNvZGluZyhOU1N0
cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBh
cnJheSkKLXsKLSAgICByZXR1cm4gY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhzdHJpbmcs
IHJhbmdlLCBhcnJheSwgTk8pOwotfQotCi1zdGF0aWMgdm9pZCBhcHBseUhvc3ROYW1lRnVuY3Rp
b25Ub01haWxUb1VSTFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJpbmdSYW5nZUFwcGxpZXJG
dW5jdGlvbiBmLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKLXsKLSAgICAvLyBJ
biBhIG1haWx0bzogVVJMLCBob3N0IG5hbWVzIGNvbWUgYWZ0ZXIgYSAnQCcgY2hhcmFjdGVyIGFu
ZCBlbmQgd2l0aCBhICc+JyBvciAnLCcgb3IgJz8nIGNoYXJhY3Rlci4KLSAgICAvLyBTa2lwIHF1
b3RlZCBzdHJpbmdzIHNvIHRoYXQgY2hhcmFjdGVycyBpbiB0aGVtIGRvbid0IGNvbmZ1c2UgdXMu
Ci0gICAgLy8gV2hlbiB3ZSBmaW5kIGEgJz8nIGNoYXJhY3Rlciwgd2UgYXJlIHBhc3QgdGhlIHBh
cnQgb2YgdGhlIFVSTCB0aGF0IGNvbnRhaW5zIGhvc3QgbmFtZXMuCi0gICAgCi0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3ROYW1lT3JTdHJp
bmdTdGFydENoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJh
Y3RlcnNJblN0cmluZzpAIlwiQD8iXTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5hbWVFbmRDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVy
U2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCI+LD8iXTsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gcXVvdGVkU3RyaW5n
Q2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0lu
U3RyaW5nOkAiXCJcXCJdOwotICAgIAotICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IFtzdHJp
bmcgbGVuZ3RoXTsKLSAgICBOU1JhbmdlIHJlbWFpbmluZyA9IE5TTWFrZVJhbmdlKDAsIHN0cmlu
Z0xlbmd0aCk7Ci0gICAgCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgLy8gRmluZCBzdGFydCBv
ZiBob3N0IG5hbWUgb3Igb2YgcXVvdGVkIHN0cmluZy4KLSAgICAgICAgTlNSYW5nZSBob3N0TmFt
ZU9yU3RyaW5nU3RhcnQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhvc3ROYW1l
T3JTdHJpbmdTdGFydENoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFp
bmluZ107Ci0gICAgICAgIGlmIChob3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRpb24gPT0gTlNO
b3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB1bmljaGFyIGMgPSBbc3Ry
aW5nIGNoYXJhY3RlckF0SW5kZXg6aG9zdE5hbWVPclN0cmluZ1N0YXJ0LmxvY2F0aW9uXTsKLSAg
ICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gTlNNYXhSYW5nZShob3N0TmFtZU9yU3RyaW5nU3Rh
cnQpOwotICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWluaW5n
LmxvY2F0aW9uOwotICAgICAgICAKLSAgICAgICAgaWYgKGMgPT0gJz8nKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAKLSAgICAgICAgaWYgKGMgPT0gJ0AnKSB7Ci0gICAgICAgICAgICAv
LyBGaW5kIGVuZCBvZiBob3N0IG5hbWUuCi0gICAgICAgICAgICB1bnNpZ25lZCBob3N0TmFtZVN0
YXJ0ID0gcmVtYWluaW5nLmxvY2F0aW9uOwotICAgICAgICAgICAgTlNSYW5nZSBob3N0TmFtZUVu
ZCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdE5hbWVFbmRDaGFyYWN0ZXJz
LmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpyZW1haW5pbmddOwotICAgICAgICAgICAgQk9P
TCBkb25lOwotICAgICAgICAgICAgaWYgKGhvc3ROYW1lRW5kLmxvY2F0aW9uID09IE5TTm90Rm91
bmQpIHsKLSAgICAgICAgICAgICAgICBob3N0TmFtZUVuZC5sb2NhdGlvbiA9IHN0cmluZ0xlbmd0
aDsKLSAgICAgICAgICAgICAgICBkb25lID0gWUVTOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICByZW1haW5pbmcubG9jYXRpb24gPSBob3N0TmFtZUVuZC5sb2NhdGlvbjsK
LSAgICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWlu
aW5nLmxvY2F0aW9uOwotICAgICAgICAgICAgICAgIGRvbmUgPSBOTzsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gUHJvY2VzcyBob3N0IG5hbWUgcmFuZ2UuCi0g
ICAgICAgICAgICBmKHN0cmluZywgTlNNYWtlUmFuZ2UoaG9zdE5hbWVTdGFydCwgaG9zdE5hbWVF
bmQubG9jYXRpb24gLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAoZG9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAvLyBTa2lwIHF1b3RlZCBzdHJpbmcuCi0gICAgICAgICAgICBBU1NF
UlQoYyA9PSAnIicpOwotICAgICAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgICAgICBO
U1JhbmdlIGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJh
Y3RlckZyb21TZXQ6cXVvdGVkU3RyaW5nQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAg
cmFuZ2U6cmVtYWluaW5nXTsKLSAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZENoYXJhY3Rlck9y
U3RyaW5nRW5kLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICAgICAgICAgIGMgPSBbc3RyaW5nIGNoYXJhY3RlckF0SW5kZXg6ZXNj
YXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kLmxvY2F0aW9uXTsKLSAgICAgICAgICAgICAgICByZW1h
aW5pbmcubG9jYXRpb24gPSBOU01heFJhbmdlKGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCk7
Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xlbmd0aCAtIHJlbWFp
bmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBJZiB3
ZSBhcmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCB0aGVuIGJyZWFrIGZyb20gdGhlIHN0cmluZyBs
b29wIGJhY2sgdG8gdGhlIGhvc3QgbmFtZSBsb29wLgotICAgICAgICAgICAgICAgIGlmIChjID09
ICciJykKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgLy8gU2tpcCBlc2NhcGVkIGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICBB
U1NFUlQoYyA9PSAnXFwnKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlbWFpbmluZy5sZW5ndGgp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHJlbWFpbmlu
Zy5sb2NhdGlvbiArPSAxOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggLT0gMTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgYXBwbHlI
b3N0TmFtZUZ1bmN0aW9uVG9VUkxTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywgU3RyaW5nUmFuZ2VB
cHBsaWVyRnVuY3Rpb24gZiwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCi17Ci0g
ICAgLy8gRmluZCBob3N0bmFtZXMuIFRvbyBiYWQgd2UgY2FuJ3QgdXNlIGFueSByZWFsIFVSTC1w
YXJzaW5nIGNvZGUgdG8gZG8gdGhpcywKLSAgICAvLyBidXQgd2UgaGF2ZSB0byBkbyBpdCBiZWZv
cmUgZG9pbmcgYWxsIHRoZSAlLWVzY2FwaW5nLCBhbmQgdGhpcyBpcyB0aGUgb25seQotICAgIC8v
IGNvZGUgd2UgaGF2ZSB0aGF0IHBhcnNlcyBtYWlsdG8gVVJMcyBhbnl3YXkuCi0gICAgCi0gICAg
Ly8gTWF5YmUgd2Ugc2hvdWxkIGltcGxlbWVudCB0aGlzIHVzaW5nIGEgY2hhcmFjdGVyIGJ1ZmZl
ciBpbnN0ZWFkPwotICAgIAotICAgIGlmIChwcm90b2NvbElzKHN0cmluZywgIm1haWx0byIpKSB7
Ci0gICAgICAgIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvTWFpbFRvVVJMU3RyaW5nKHN0cmluZywg
ZiwgYXJyYXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIEZpbmQgdGhl
IGhvc3QgbmFtZSBpbiBhIGhpZXJhcmNoaWNhbCBVUkwuCi0gICAgLy8gSXQgY29tZXMgYWZ0ZXIg
YSAiOi8vIiBzZXF1ZW5jZSwgd2l0aCBzY2hlbWUgY2hhcmFjdGVycyBwcmVjZWRpbmcuCi0gICAg
Ly8gSWYgZW5kcyB3aXRoIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBvciBhICI6IiwgIi8iLCBvciBh
ICI/Ii4KLSAgICAvLyBJZiB0aGVyZSBpcyBhICJAIiBjaGFyYWN0ZXIsIHRoZSBob3N0IHBhcnQg
aXMganVzdCB0aGUgcGFydCBhZnRlciB0aGUgIkAiLgotICAgIE5TUmFuZ2Ugc2VwYXJhdG9yUmFu
Z2UgPSBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCI6Ly8iXTsKLSAgICBpZiAoc2VwYXJhdG9yUmFu
Z2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8v
IENoZWNrIHRoYXQgYWxsIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSA6Ly8gYXJlIHZhbGlkIHNjaGVt
ZSBjaGFyYWN0ZXJzLgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFy
YWN0ZXJTZXQ+PiBub25TY2hlbWVDaGFyYWN0ZXJzID0gW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0
ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVph
YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLS4iXSBpbnZlcnRlZFNldF07Ci0g
ICAgaWYgKFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6bm9uU2NoZW1lQ2hhcmFjdGVy
cy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgc2VwYXJhdG9yUmFu
Z2UubG9jYXRpb24pXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0cmluZyBsZW5ndGhdOwotICAgIAot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBob3N0
VGVybWluYXRvcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJ
blN0cmluZzpAIjovPyMiXTsKLSAgICAKLSAgICAvLyBTdGFydCBhZnRlciB0aGUgc2VwYXJhdG9y
LgotICAgIHVuc2lnbmVkIGF1dGhvcml0eVN0YXJ0ID0gTlNNYXhSYW5nZShzZXBhcmF0b3JSYW5n
ZSk7Ci0gICAgCi0gICAgLy8gRmluZCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIuCi0gICAgTlNSYW5n
ZSBob3N0TmFtZVRlcm1pbmF0b3IgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhv
c3RUZXJtaW5hdG9ycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoYXV0
aG9yaXR5U3RhcnQsIHN0cmluZ0xlbmd0aCAtIGF1dGhvcml0eVN0YXJ0KV07Ci0gICAgdW5zaWdu
ZWQgaG9zdE5hbWVFbmQgPSBob3N0TmFtZVRlcm1pbmF0b3IubG9jYXRpb24gPT0gTlNOb3RGb3Vu
ZCA/IHN0cmluZ0xlbmd0aCA6IGhvc3ROYW1lVGVybWluYXRvci5sb2NhdGlvbjsKLSAgICAKLSAg
ICAvLyBGaW5kICJAIiBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBob3N0IG5hbWUuCi0gICAgTlNSYW5n
ZSB1c2VySW5mb1Rlcm1pbmF0b3IgPSBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCJAIiBvcHRpb25z
OjAgcmFuZ2U6TlNNYWtlUmFuZ2UoYXV0aG9yaXR5U3RhcnQsIGhvc3ROYW1lRW5kIC0gYXV0aG9y
aXR5U3RhcnQpXTsKLSAgICB1bnNpZ25lZCBob3N0TmFtZVN0YXJ0ID0gdXNlckluZm9UZXJtaW5h
dG9yLmxvY2F0aW9uID09IE5TTm90Rm91bmQgPyBhdXRob3JpdHlTdGFydCA6IE5TTWF4UmFuZ2Uo
dXNlckluZm9UZXJtaW5hdG9yKTsKLSAgICAKLSAgICByZXR1cm4gZihzdHJpbmcsIE5TTWFrZVJh
bmdlKGhvc3ROYW1lU3RhcnQsIGhvc3ROYW1lRW5kIC0gaG9zdE5hbWVTdGFydCksIGFycmF5KTsK
LX0KLQotc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gbWFwSG9zdE5hbWVzKE5TU3RyaW5nICpz
dHJpbmcsIEJPT0wgZW5jb2RlKQotewotICAgIC8vIEdlbmVyYWxseSwgd2Ugd2FudCB0byBvcHRp
bWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhvc3QgbmFtZSB0aGF0IGRvZXMg
bm90IG5lZWQgbWFwcGluZy4KLSAgICAKLSAgICBpZiAoZW5jb2RlICYmIFtzdHJpbmcgY2FuQmVD
b252ZXJ0ZWRUb0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ10pCi0gICAgICAgIHJldHVy
biBzdHJpbmc7Ci0gICAgCi0gICAgLy8gTWFrZSBhIGxpc3Qgb2YgcmFuZ2VzIHRoYXQgYWN0dWFs
bHkgbmVlZCBtYXBwaW5nLgotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gaG9zdE5hbWVS
YW5nZXM7Ci0gICAgU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiA9IGVuY29kZSA/IGNvbGxl
Y3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nIDogY29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2Rpbmc7
Ci0gICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9VUkxTdHJpbmcoc3RyaW5nLCBmLCBob3N0TmFt
ZVJhbmdlcyk7Ci0gICAgaWYgKCFob3N0TmFtZVJhbmdlcykKLSAgICAgICAgcmV0dXJuIHN0cmlu
ZzsKLQotICAgIGlmICghW2hvc3ROYW1lUmFuZ2VzIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICAKLSAgICAvLyBEbyB0aGUgbWFwcGluZy4KLSAgICBhdXRvIG11dGFibGVDb3B5ID0g
YWRvcHROUyhbc3RyaW5nIG11dGFibGVDb3B5XSk7Ci0gICAgdW5zaWduZWQgaSA9IFtob3N0TmFt
ZVJhbmdlcyBjb3VudF07Ci0gICAgd2hpbGUgKGktLSkgewotICAgICAgICBOU1JhbmdlIGhvc3RO
YW1lUmFuZ2UgPSBbW2hvc3ROYW1lUmFuZ2VzIG9iamVjdEF0SW5kZXg6aV0gcmFuZ2VWYWx1ZV07
Ci0gICAgICAgIE5TU3RyaW5nICptYXBwZWRIb3N0TmFtZSA9IGVuY29kZSA/IGVuY29kZUhvc3RO
YW1lV2l0aFJhbmdlKHN0cmluZywgaG9zdE5hbWVSYW5nZSkgOiBkZWNvZGVIb3N0TmFtZVdpdGhS
YW5nZShzdHJpbmcsIGhvc3ROYW1lUmFuZ2UpOwotICAgICAgICBbbXV0YWJsZUNvcHkgcmVwbGFj
ZUNoYXJhY3RlcnNJblJhbmdlOmhvc3ROYW1lUmFuZ2Ugd2l0aFN0cmluZzptYXBwZWRIb3N0TmFt
ZV07Ci0gICAgfQotICAgIHJldHVybiBtdXRhYmxlQ29weTsKLX0KLQotc3RhdGljIFJldGFpblB0
cjxOU1N0cmluZz4gc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UoTlNTdHJpbmcgKnN0cmluZykK
LXsKLSAgICBhdXRvIHRyaW1tZWQgPSBhZG9wdE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsKLSAg
ICBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChfX2JyaWRnZSBDRk11dGFibGVTdHJpbmdSZWYpdHJp
bW1lZC5nZXQoKSk7Ci0gICAgcmV0dXJuIHRyaW1tZWQ7Ci19Ci0KLU5TVVJMICpVUkxCeVRydW5j
YXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wb25l
bnRUeXBlIGNvbXBvbmVudCkKLXsKLSAgICBpZiAoIVVSTCkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICAKLSAgICBDRlJhbmdlIGZyYWdSZyA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwgbnVsbHB0cik7Ci0gICAgaWYgKGZy
YWdSZy5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFVSTDsKLQotICAg
IFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IHVybEJ5dGVzKFVSTF9CWVRF
U19CVUZGRVJfTEVOR1RIKTsKLSAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCB1cmxCeXRlcy5kYXRhKCksIHVybEJ5dGVzLnNpemUoKSk7
Ci0gICAgaWYgKG51bUJ5dGVzID09IC0xKSB7Ci0gICAgICAgIG51bUJ5dGVzID0gQ0ZVUkxHZXRC
eXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKLSAgICAgICAgdXJsQnl0
ZXMuZ3JvdyhudW1CeXRlcyk7Ci0gICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJM
UmVmKVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCBudW1CeXRlcyk7Ci0gICAgfQotCi0gICAgQ0ZVUkxS
ZWYgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgp
LCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpOwot
ICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhu
dWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0Vu
Y29kaW5nSVNPTGF0aW4xLCBudWxscHRyKTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHJlc3VsdCA/
IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7Ci19Ci0KLXN0YXRpYyBOU1VSTCAqVVJM
QnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKE5TVVJMICpVUkwpCi17Ci0gICAgcmV0dXJuIFVS
TEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChVUkwsIGtDRlVSTENvbXBv
bmVudFJlc291cmNlU3BlY2lmaWVyKTsKLX0KLQotTlNVUkwgKlVSTFdpdGhEYXRhKE5TRGF0YSAq
ZGF0YSwgTlNVUkwgKmJhc2VVUkwpCi17Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4g
bmlsOwotICAgIAotICAgIE5TVVJMICpyZXN1bHQgPSBuaWw7Ci0gICAgc2l6ZV90IGxlbmd0aCA9
IFtkYXRhIGxlbmd0aF07Ci0gICAgaWYgKGxlbmd0aCA+IDApIHsKLSAgICAgICAgLy8gd29yayBh
cm91bmQgPHJkYXI6Ly80NDcwNzcxPjogQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcygu
LiwgVFJVRSkgZG9lc24ndCByZW1vdmUgbm9uLXBhdGggY29tcG9uZW50cy4KLSAgICAgICAgYmFz
ZVVSTCA9IFVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihiYXNlVVJMKTsKLSAgICAgICAg
Ci0gICAgICAgIGNvbnN0IFVJbnQ4ICpieXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IFVJbnQ4Kj4o
W2RhdGEgYnl0ZXNdKTsKLSAgICAgICAgCi0gICAgICAgIC8vIENGVVJMQ3JlYXRlQWJzb2x1dGVV
UkxXaXRoQnl0ZXMgd291bGQgY29tcGxhaW4gdG8gY29uc29sZSBpZiB3ZSBwYXNzZWQgYSBwYXRo
IHRvIGl0LgotICAgICAgICBpZiAoYnl0ZXNbMF0gPT0gJy8nICYmICFiYXNlVVJMKQotICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgCi0gICAgICAgIC8vIE5PVEU6IFdlIHVzZSBVVEYt
OCBoZXJlIHNpbmNlIHRoaXMgZW5jb2RpbmcgaXMgdXNlZCB3aGVuIGNvbXB1dGluZyBzdHJpbmdz
IHdoZW4gcmV0dXJuaW5nIFVSTCBjb21wb25lbnRzCi0gICAgICAgIC8vIChlLmcgY2FsbHMgdG8g
TlNVUkwgLXBhdGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBp
bGxlZ2FsIFVURi04IHNlcXVlbmNlcywgd2hpY2gKLSAgICAgICAgLy8gY291bGQgZWl0aGVyIGJl
IGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlr
ZSBzaGlmdC1qaXMsIHNvIHdlIGZhbGwgYmFjawotICAgICAgICAvLyBvbnRvIHVzaW5nIElTTyBM
YXRpbiAxIGluIHRob3NlIGNhc2VzLgotICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFz
ZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgs
IGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlFUykp
OwotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdS
ZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxl
bmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChfX2JyaWRnZSBDRlVSTFJlZiliYXNl
VVJMLCBZRVMpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0ID0gW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCIiXTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1zdGF0aWMgTlNEYXRhICpkYXRh
V2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAqc3RyaW5nKQotewotICAgIE5TRGF0YSAqdXNl
clR5cGVkRGF0YSA9IFtzdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddOwotICAgIEFTU0VSVCh1c2VyVHlwZWREYXRhKTsKLSAgICAKLSAgICBjb25zdCBVSW50OCog
aW5CeXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IFVJbnQ4ICo+KFt1c2VyVHlwZWREYXRhIGJ5dGVz
XSk7Ci0gICAgaW50IGluTGVuZ3RoID0gW3VzZXJUeXBlZERhdGEgbGVuZ3RoXTsKLSAgICBpZiAo
IWluTGVuZ3RoKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGNoYXIqIG91dEJ5dGVz
ID0gc3RhdGljX2Nhc3Q8Y2hhciAqPihtYWxsb2MoaW5MZW5ndGggKiAzKSk7IC8vIGxhcmdlIGVu
b3VnaCB0byAlLWVzY2FwZSBldmVyeSBjaGFyYWN0ZXIKLSAgICBjaGFyKiBwID0gb3V0Qnl0ZXM7
Ci0gICAgaW50IG91dExlbmd0aCA9IDA7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbkxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgIFVJbnQ4IGMgPSBpbkJ5dGVzW2ldOwotICAgICAgICBpZiAoYyA8
PSAweDIwIHx8IGMgPj0gMHg3ZikgewotICAgICAgICAgICAgKnArKyA9ICclJzsKLSAgICAgICAg
ICAgICpwKysgPSB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAgICpw
KysgPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAgIG91dExlbmd0
aCArPSAzOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgKnArKyA9IGM7Ci0gICAgICAg
ICAgICBvdXRMZW5ndGgrKzsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gW05T
RGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5Om91dEJ5dGVzIGxlbmd0aDpvdXRMZW5ndGhdOyAvLyBh
ZG9wdHMgb3V0Qnl0ZXMKLX0KLQotTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJp
bmcgKnN0cmluZywgTlNVUkwgKm5zVVJMKQotewotICAgIGlmICghc3RyaW5nKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgYXV0byBtYXBwZWRTdHJpbmcgPSBtYXBIb3N0TmFtZXMoc3RyaW5n
QnlUcmltbWluZ1doaXRlc3BhY2Uoc3RyaW5nKS5nZXQoKSwgWUVTKTsKLSAgICBpZiAoIW1hcHBl
ZFN0cmluZykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIC8vIExldCdzIGNoZWNrIHdoZXRo
ZXIgdGhlIFVSTCBpcyBib2d1cy4KLSAgICBVUkwgdXJsIHsgVVJMIHsgbnNVUkwgfSwgbWFwcGVk
U3RyaW5nLmdldCgpIH07Ci0gICAgaWYgKCF1cmwuY3JlYXRlQ0ZVUkwoKSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg2MDU3Ci0gICAgLy8gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIHVybC5jcmVh
dGVDRlVSTCBpbnN0ZWFkIG9mIHVzaW5nIGRpcmVjdGx5IENGVVJMIHBhcnNpbmcgcm91dGluZXMu
Ci0gICAgTlNEYXRhICpkYXRhID0gZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcobWFwcGVkU3RyaW5n
LmdldCgpKTsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0
cmluZzpAIiJdOwotCi0gICAgcmV0dXJuIFVSTFdpdGhEYXRhKGRhdGEsIG5zVVJMKTsKLX0KLQot
TlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKE5TU3RyaW5nICpzdHJpbmcs
IE5TVVJMICpVUkwpCi17Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICBOU1VSTCAqcmVzdWx0ID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhzdHJpbmcsIFVSTCk7
Ci0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgTlNEYXRhICpyZXN1bHREYXRhID0gZGF0YVdp
dGhVc2VyVHlwZWRTdHJpbmcoc3RyaW5nKTsKLSAgICAgICAgaWYgKCFyZXN1bHREYXRhKQotICAg
ICAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0gICAgICAgIHJlc3Vs
dCA9IFVSTFdpdGhEYXRhKHJlc3VsdERhdGEsIFVSTCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotc3RhdGljIEJPT0wgaGFzUXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKE5T
VVJMICpVUkwpCi17Ci0gICAgQ0ZSYW5nZSByYW5nZVdpdGhTZXBhcmF0b3JzOwotICAgIENGVVJM
R2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGtDRlVSTENv
bXBvbmVudFF1ZXJ5LCAmcmFuZ2VXaXRoU2VwYXJhdG9ycyk7Ci0gICAgaWYgKHJhbmdlV2l0aFNl
cGFyYXRvcnMubG9jYXRpb24gIT0ga0NGTm90Rm91bmQgJiYgcmFuZ2VXaXRoU2VwYXJhdG9ycy5s
ZW5ndGggPT0gMSkKLSAgICAgICAgcmV0dXJuIFlFUzsKLQotICAgIHJldHVybiBOTzsKLX0KLQot
TlNEYXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVu
dFR5cGUgY29tcG9uZW50VHlwZSkKLXsKLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZG
RVJfTEVOR1RIPiBhbGxCeXRlc0J1ZmZlcihVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAg
Q0ZJbmRleCBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVS
TCwgYWxsQnl0ZXNCdWZmZXIuZGF0YSgpLCBhbGxCeXRlc0J1ZmZlci5zaXplKCkpOwotICAgIGlm
IChieXRlc0ZpbGxlZCA9PSAtMSkgewotICAgICAgICBDRkluZGV4IGJ5dGVzVG9BbGxvY2F0ZSA9
IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Ci0gICAg
ICAgIGFsbEJ5dGVzQnVmZmVyLmdyb3coYnl0ZXNUb0FsbG9jYXRlKTsKLSAgICAgICAgYnl0ZXNG
aWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGFsbEJ5dGVzQnVm
ZmVyLmRhdGEoKSwgYnl0ZXNUb0FsbG9jYXRlKTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3QgQ0ZV
UkxDb21wb25lbnRUeXBlIGNvbXBsZXRlVVJMID0gKENGVVJMQ29tcG9uZW50VHlwZSktMTsKLSAg
ICBDRlJhbmdlIHJhbmdlOwotICAgIGlmIChjb21wb25lbnRUeXBlICE9IGNvbXBsZXRlVVJMKSB7
Ci0gICAgICAgIHJhbmdlID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdl
IENGVVJMUmVmKVVSTCwgY29tcG9uZW50VHlwZSwgbnVsbHB0cik7Ci0gICAgICAgIGlmIChyYW5n
ZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgcmFuZ2UubG9jYXRpb24gPSAwOwotICAgICAgICByYW5nZS5sZW5n
dGggPSBieXRlc0ZpbGxlZDsKLSAgICB9Ci0gICAgCi0gICAgTlNEYXRhICpjb21wb25lbnREYXRh
ID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmFsbEJ5dGVzQnVmZmVyLmRhdGEoKSArIHJhbmdlLmxv
Y2F0aW9uIGxlbmd0aDpyYW5nZS5sZW5ndGhdOyAKLSAgICAKLSAgICBjb25zdCB1bnNpZ25lZCBj
aGFyICpieXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oW2NvbXBvbmVu
dERhdGEgYnl0ZXNdKTsKLSAgICBOU011dGFibGVEYXRhICpyZXN1bHREYXRhID0gW05TTXV0YWJs
ZURhdGEgZGF0YV07Ci0gICAgLy8gTk9URTogYWRkIGxlYWRpbmcgJz8nIHRvIHF1ZXJ5IHN0cmlu
Z3Mgbm9uLXplcm8gbGVuZ3RoIHF1ZXJ5IHN0cmluZ3MuCi0gICAgLy8gTk9URTogcmV0YWluIHF1
ZXN0aW9uLW1hcmsgb25seSBxdWVyeSBzdHJpbmdzLgotICAgIGlmIChjb21wb25lbnRUeXBlID09
IGtDRlVSTENvbXBvbmVudFF1ZXJ5KSB7Ci0gICAgICAgIGlmIChyYW5nZS5sZW5ndGggPiAwIHx8
IGhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyhVUkwpKQotICAgICAgICAgICAgW3Jlc3Vs
dERhdGEgYXBwZW5kQnl0ZXM6Ij8iIGxlbmd0aDoxXTsgICAgCi0gICAgfQotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgcmFuZ2UubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBj
ID0gYnl0ZXNbaV07Ci0gICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA+PSAweDdmKSB7Ci0gICAg
ICAgICAgICBjaGFyIGVzY2FwZWRbM107Ci0gICAgICAgICAgICBlc2NhcGVkWzBdID0gJyUnOwot
ICAgICAgICAgICAgZXNjYXBlZFsxXSA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOwot
ICAgICAgICAgICAgZXNjYXBlZFsyXSA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOwot
ICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0ZXM6ZXNjYXBlZCBsZW5ndGg6M107ICAg
IAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY2hhciBiWzFdOwotICAgICAgICAgICAg
YlswXSA9IGM7Ci0gICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczpiIGxlbmd0aDox
XTsgICAgCi0gICAgICAgIH0gICAgICAgICAgICAgICAKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJu
IHJlc3VsdERhdGE7Ci19Ci0KLXN0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ0NvbXBvbmVudEFu
ZFN1YnNlcXVlbnRDaGFyYWN0ZXIoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBv
bmVudCkKLXsKLSAgICBDRlJhbmdlIHJhbmdlID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25l
bnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50LCAwKTsKLSAgICBpZiAocmFuZ2Uu
bG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgIHJldHVybiBVUkw7Ci0gICAgCi0gICAg
Ly8gUmVtb3ZlIG9uZSBzdWJzZXF1ZW50IGNoYXJhY3Rlci4KLSAgICByYW5nZS5sZW5ndGgrKzsK
LQotICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IGJ1ZmZlcihVUkxf
QllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBudW1CeXRlcyA9IENGVVJMR2V0Qnl0
ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
Ci0gICAgaWYgKG51bUJ5dGVzID09IC0xKSB7Ci0gICAgICAgIG51bUJ5dGVzID0gQ0ZVUkxHZXRC
eXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKLSAgICAgICAgYnVmZmVy
Lmdyb3cobnVtQnl0ZXMpOwotICAgICAgICBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJl
ZilVUkwsIGJ1ZmZlci5kYXRhKCksIG51bUJ5dGVzKTsKLSAgICB9Ci0gICAgVUludDgqIHVybEJ5
dGVzID0gYnVmZmVyLmRhdGEoKTsKLSAgICAgICAgCi0gICAgaWYgKG51bUJ5dGVzIDwgcmFuZ2Uu
bG9jYXRpb24pCi0gICAgICAgIHJldHVybiBVUkw7Ci0gICAgaWYgKG51bUJ5dGVzIDwgcmFuZ2Uu
bG9jYXRpb24gKyByYW5nZS5sZW5ndGgpCi0gICAgICAgIHJhbmdlLmxlbmd0aCA9IG51bUJ5dGVz
IC0gcmFuZ2UubG9jYXRpb247Ci0gICAgICAgIAotICAgIG1lbW1vdmUodXJsQnl0ZXMgKyByYW5n
ZS5sb2NhdGlvbiwgdXJsQnl0ZXMgKyByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCwgbnVt
Qnl0ZXMgLSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCk7Ci0gICAgCi0gICAgQ0ZVUkxS
ZWYgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5
dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpOwotICAg
IGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxs
cHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5n
SVNPTGF0aW4xLCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICAKLSAgICByZXR1cm4gcmVzdWx0
ID8gQ0ZCcmlkZ2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKLX0KLQotTlNVUkwgKlVSTEJ5UmVt
b3ZpbmdVc2VySW5mbyhOU1VSTCAqVVJMKQotewotICAgIHJldHVybiBVUkxCeVJlbW92aW5nQ29t
cG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3RlcihVUkwsIGtDRlVSTENvbXBvbmVudFVzZXJJbmZv
KTsKLX0KLQogTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoTlNVUkwgKlVSTCkKIHsKICAg
ICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVz
dCBhbGxvY10gaW5pdFdpdGhVUkw6VVJMXSk7CkBAIC0xMDQ5LDIwMyArNTcsNCBAQCBOU1VSTCAq
VVJMQnlDYW5vbmljYWxpemluZ1VSTChOU1VSTCAqVVJMKQogICAgIHJldHVybiBbW25ld1VSTCBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAotTlNEYXRhICpvcmlnaW5hbFVSTERhdGEoTlNVUkwg
KlVSTCkKLXsKLSAgICBVSW50OCAqYnVmZmVyID0gKFVJbnQ4ICopbWFsbG9jKFVSTF9CWVRFU19C
VUZGRVJfTEVOR1RIKTsKLSAgICBDRkluZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsK
LSAgICBpZiAoYnl0ZXNGaWxsZWQgPT0gLTEpIHsKLSAgICAgICAgQ0ZJbmRleCBieXRlc1RvQWxs
b2NhdGUgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDAp
OwotICAgICAgICBidWZmZXIgPSAoVUludDggKilyZWFsbG9jKGJ1ZmZlciwgYnl0ZXNUb0FsbG9j
YXRlKTsKLSAgICAgICAgYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVS
TFJlZilVUkwsIGJ1ZmZlciwgYnl0ZXNUb0FsbG9jYXRlKTsKLSAgICAgICAgQVNTRVJUKGJ5dGVz
RmlsbGVkID09IGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgfQotICAgIAotICAgIC8vIGJ1ZmZlciBp
cyBhZG9wdGVkIGJ5IHRoZSBOU0RhdGEKLSAgICBOU0RhdGEgKmRhdGEgPSBbTlNEYXRhIGRhdGFX
aXRoQnl0ZXNOb0NvcHk6YnVmZmVyIGxlbmd0aDpieXRlc0ZpbGxlZCBmcmVlV2hlbkRvbmU6WUVT
XTsKLSAgICAKLSAgICBOU1VSTCAqYmFzZVVSTCA9IChfX2JyaWRnZSBOU1VSTCAqKUNGVVJMR2V0
QmFzZVVSTCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMKTsKLSAgICBpZiAoYmFzZVVSTCkKLSAgICAg
ICAgcmV0dXJuIG9yaWdpbmFsVVJMRGF0YShVUkxXaXRoRGF0YShkYXRhLCBiYXNlVVJMKSk7Ci0g
ICAgcmV0dXJuIGRhdGE7Ci19Ci0KLXN0YXRpYyBDRlN0cmluZ1JlZiBjcmVhdGVTdHJpbmdXaXRo
RXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoQ0ZTdHJpbmdSZWYgc3RyaW5nKQotewotICAgIENGSW5k
ZXggbGVuZ3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsKLSAgICBWZWN0b3I8VUNoYXIs
IFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBzb3VyY2VCdWZmZXIobGVuZ3RoKTsKLSAgICBDRlN0
cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBsZW5ndGgpLCBzb3VyY2VC
dWZmZXIuZGF0YSgpKTsKLSAgICAKLSAgICBWZWN0b3I8VUNoYXIsIFVSTF9CWVRFU19CVUZGRVJf
TEVOR1RIPiBvdXRCdWZmZXI7Ci0gICAgCi0gICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2
aW91c0NvZGVQb2ludDsKLSAgICBDRkluZGV4IGkgPSAwOwotICAgIHdoaWxlIChpIDwgbGVuZ3Ro
KSB7Ci0gICAgICAgIFVDaGFyMzIgYzsKLSAgICAgICAgVTE2X05FWFQoc291cmNlQnVmZmVyLCBp
LCBsZW5ndGgsIGMpCi0gICAgICAgIAotICAgICAgICBpZiAoaXNMb29rYWxpa2VDaGFyYWN0ZXIo
cHJldmlvdXNDb2RlUG9pbnQsIGMpKSB7Ci0gICAgICAgICAgICB1aW50OF90IHV0ZjhCdWZmZXJb
NF07Ci0gICAgICAgICAgICBDRkluZGV4IG9mZnNldCA9IDA7Ci0gICAgICAgICAgICBVQm9vbCBm
YWlsdXJlID0gZmFsc2U7Ci0gICAgICAgICAgICBVOF9BUFBFTkQodXRmOEJ1ZmZlciwgb2Zmc2V0
LCA0LCBjLCBmYWlsdXJlKQotICAgICAgICAgICAgQVNTRVJUKCFmYWlsdXJlKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgZm9yIChDRkluZGV4IGogPSAwOyBqIDwgb2Zmc2V0OyArK2opIHsK
LSAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKCclJyk7Ci0gICAgICAgICAgICAgICAg
b3V0QnVmZmVyLmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1dGY4QnVmZmVyW2pd
KSk7Ci0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdCh1dGY4QnVmZmVyW2pdKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBVQ2hhciB1dGYxNkJ1ZmZlclsyXTsKLSAgICAgICAgICAgIENGSW5kZXgg
b2Zmc2V0ID0gMDsKLSAgICAgICAgICAgIFVCb29sIGZhaWx1cmUgPSBmYWxzZTsKLSAgICAgICAg
ICAgIFUxNl9BUFBFTkQodXRmMTZCdWZmZXIsIG9mZnNldCwgMiwgYywgZmFpbHVyZSkKLSAgICAg
ICAgICAgIEFTU0VSVCghZmFpbHVyZSk7Ci0gICAgICAgICAgICBmb3IgKENGSW5kZXggaiA9IDA7
IGogPCBvZmZzZXQ7ICsraikKLSAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKHV0ZjE2
QnVmZmVyW2pdKTsKLSAgICAgICAgfQotICAgICAgICBwcmV2aW91c0NvZGVQb2ludCA9IGM7Ci0g
ICAgfQotICAgIAotICAgIHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxw
dHIsIG91dEJ1ZmZlci5kYXRhKCksIG91dEJ1ZmZlci5zaXplKCkpOwotfQotCi1OU1N0cmluZyAq
dXNlclZpc2libGVTdHJpbmcoTlNVUkwgKlVSTCkKLXsKLSAgICBOU0RhdGEgKmRhdGEgPSBvcmln
aW5hbFVSTERhdGEoVVJMKTsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiZWZvcmUgPSBzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oW2RhdGEgYnl0ZXNdKTsKLSAgICBpbnQgbGVu
Z3RoID0gW2RhdGEgbGVuZ3RoXTsKLSAgICAKLSAgICBib29sIG1heU5lZWRIb3N0TmFtZURlY29k
aW5nID0gZmFsc2U7Ci0gICAgCi0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCA9IGJlZm9yZTsK
LSAgICBpbnQgYnVmZmVyTGVuZ3RoID0gKGxlbmd0aCAqIDMpICsgMTsKLSAgICBWZWN0b3I8Y2hh
ciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IGFmdGVyKGJ1ZmZlckxlbmd0aCk7IC8vIGxhcmdl
IGVub3VnaCB0byAlLWVzY2FwZSBldmVyeSBjaGFyYWN0ZXIKLSAgICBjaGFyICpxID0gYWZ0ZXIu
ZGF0YSgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
dW5zaWduZWQgY2hhciBjID0gcFtpXTsKLSAgICAgICAgLy8gdW5lc2NhcGUgZXNjYXBlIHNlcXVl
bmNlcyB0aGF0IGluZGljYXRlIGJ5dGVzIGdyZWF0ZXIgdGhhbiAweDdmCi0gICAgICAgIGlmIChj
ID09ICclJyAmJiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDFdKSkg
JiYgaSArIDIgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDJdKSkgewotICAgICAg
ICAgICAgYXV0byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7Ci0gICAg
ICAgICAgICBpZiAodSA+IDB4N2YpIHsKLSAgICAgICAgICAgICAgICAvLyB1bmVzY2FwZQotICAg
ICAgICAgICAgICAgICpxKysgPSB1OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyBkbyBub3QgdW5lc2NhcGUKLSAgICAgICAgICAgICAgICAqcSsrID0gcFtpXTsKLSAg
ICAgICAgICAgICAgICAqcSsrID0gcFtpICsgMV07Ci0gICAgICAgICAgICAgICAgKnErKyA9IHBb
aSArIDJdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgKnErKyA9IGM7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8v
IENoZWNrIGZvciAieG4tLSIgaW4gYW4gZWZmaWNpZW50LCBub24tY2FzZS1zZW5zaXRpdmUsIHdh
eS4KLSAgICAgICAgICAgIGlmIChjID09ICctJyAmJiBpID49IDMgJiYgIW1heU5lZWRIb3N0TmFt
ZURlY29kaW5nICYmIChxWy00XSB8IDB4MjApID09ICd4JyAmJiAocVstM10gfCAweDIwKSA9PSAn
bicgJiYgcVstMl0gPT0gJy0nKQotICAgICAgICAgICAgICAgIG1heU5lZWRIb3N0TmFtZURlY29k
aW5nID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAqcSA9ICdcMCc7Ci0gICAgCi0gICAg
Ly8gQ2hlY2sgc3RyaW5nIHRvIHNlZSBpZiBpdCBjYW4gYmUgY29udmVydGVkIHRvIGRpc3BsYXkg
dXNpbmcgVVRGLTggIAotICAgIFJldGFpblB0cjxOU1N0cmluZz4gcmVzdWx0ID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFmdGVyLmRhdGEoKV07Ci0gICAgaWYgKCFyZXN1bHQpIHsK
LSAgICAgICAgLy8gQ291bGQgbm90IGNvbnZlcnQgdG8gVVRGLTguCi0gICAgICAgIC8vIENvbnZl
cnQgY2hhcmFjdGVycyBncmVhdGVyIHRoYW4gMHg3ZiB0byBlc2NhcGUgc2VxdWVuY2VzLgotICAg
ICAgICAvLyBTaGlmdCBjdXJyZW50IHN0cmluZyB0byB0aGUgZW5kIG9mIHRoZSBidWZmZXIKLSAg
ICAgICAgLy8gdGhlbiB3ZSB3aWxsIGNvcHkgYmFjayBieXRlcyB0byB0aGUgc3RhcnQgb2YgdGhl
IGJ1ZmZlciAKLSAgICAgICAgLy8gYXMgd2UgY29udmVydC4KLSAgICAgICAgaW50IGFmdGVybGVu
Z3RoID0gcSAtIGFmdGVyLmRhdGEoKTsKLSAgICAgICAgY2hhciAqcCA9IGFmdGVyLmRhdGEoKSAr
IGJ1ZmZlckxlbmd0aCAtIGFmdGVybGVuZ3RoIC0gMTsKLSAgICAgICAgbWVtbW92ZShwLCBhZnRl
ci5kYXRhKCksIGFmdGVybGVuZ3RoICsgMSk7IC8vIGNvcGllcyB0cmFpbGluZyAnXDAnCi0gICAg
ICAgIGNoYXIgKnEgPSBhZnRlci5kYXRhKCk7Ci0gICAgICAgIHdoaWxlICgqcCkgewotICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBjID0gKnA7Ci0gICAgICAgICAgICBpZiAoYyA+IDB4N2YpIHsK
LSAgICAgICAgICAgICAgICAqcSsrID0gJyUnOwotICAgICAgICAgICAgICAgICpxKysgPSB1cHBl
ck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAgICAgICAqcSsrID0gbG93ZXJO
aWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICAqcSsrID0gKnA7Ci0gICAgICAgICAgICBwKys7Ci0gICAgICAgIH0KLSAgICAgICAgKnEg
PSAnXDAnOwotICAgICAgICByZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6
YWZ0ZXIuZGF0YSgpXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1heU5lZWRIb3N0TmFtZURlY29k
aW5nKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJcyBpdCBnb29kIHRvIGlnbm9yZSB0aGUgZmFpbHVy
ZSBvZiBtYXBIb3N0TmFtZXMgYW5kIGtlZXAgcmVzdWx0IGludGFjdD8KLSAgICAgICAgYXV0byBt
YXBwZWRSZXN1bHQgPSBtYXBIb3N0TmFtZXMocmVzdWx0LmdldCgpLCBOTyk7Ci0gICAgICAgIGlm
IChtYXBwZWRSZXN1bHQpCi0gICAgICAgICAgICByZXN1bHQgPSBtYXBwZWRSZXN1bHQ7Ci0gICAg
fQotCi0gICAgcmVzdWx0ID0gW3Jlc3VsdCBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxN
YXBwaW5nXTsKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoY3JlYXRlU3RyaW5nV2l0aEVz
Y2FwZWRVbnNhZmVDaGFyYWN0ZXJzKChfX2JyaWRnZSBDRlN0cmluZ1JlZilyZXN1bHQuZ2V0KCkp
KTsKLX0KLQotQk9PTCBpc1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICpzdHJpbmcpCi17Ci0gICAg
Qk9PTCB2YWxpZCA9IFlFUzsKLSAgICAvLyBnZXQgYnVmZmVyCi0gICAgCi0gICAgY2hhciBzdGF0
aWNfYnVmZmVyWzEwMjRdOwotICAgIGNvbnN0IGNoYXIgKnA7Ci0gICAgQk9PTCBzdWNjZXNzID0g
Q0ZTdHJpbmdHZXRDU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilzdHJpbmcsIHN0YXRpY19i
dWZmZXIsIDEwMjMsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7Ci0gICAgcCA9IHN1Y2Nlc3MgPyBz
dGF0aWNfYnVmZmVyIDogW3N0cmluZyBVVEY4U3RyaW5nXTsKLSAgICAKLSAgICBpbnQgbGVuZ3Ro
ID0gc3RybGVuKHApOwotICAgIAotICAgIC8vIGNoZWNrIGZvciBjaGFyYWN0ZXJzIDw9IDB4MjAg
b3IgPj0weDdmLCAlLWVzY2FwZSBzZXF1ZW5jZXMgb2YgJTdmLCBhbmQgeG4tLSwgdGhlc2UKLSAg
ICAvLyBhcmUgdGhlIHRoaW5ncyB0aGF0IHdpbGwgbGVhZCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5n
IHRvIGFjdHVhbGx5IGNoYW5nZSB0aGluZ3MuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBwW2ldOwotICAgICAgICAvLyBl
c2NhcGUgY29udHJvbCBjaGFyYWN0ZXJzLCBzcGFjZSwgYW5kIGRlbGV0ZQotICAgICAgICBpZiAo
YyA8PSAweDIwIHx8IGMgPT0gMHg3ZikgewotICAgICAgICAgICAgdmFsaWQgPSBOTzsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJyUnICYmIChpICsgMSA8IGxl
bmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAmJiBpICsgMiA8IGxlbmd0aCAmJiBp
c0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7Ci0gICAgICAgICAgICBhdXRvIHUgPSB0b0FTQ0lJ
SGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKLSAgICAgICAgICAgIGlmICh1ID4gMHg3Zikg
ewotICAgICAgICAgICAgICAgIHZhbGlkID0gTk87Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAvLyBDaGVjayBmb3IgInhuLS0iIGluIGFuIGVmZmljaWVudCwgbm9uLWNhc2Utc2Vu
c2l0aXZlLCB3YXkuCi0gICAgICAgICAgICBpZiAoYyA9PSAnLScgJiYgaSA+PSAzICYmIChwW2kg
LSAzXSB8IDB4MjApID09ICd4JyAmJiAocFtpIC0gMl0gfCAweDIwKSA9PSAnbicgJiYgcFtpIC0g
MV0gPT0gJy0nKSB7Ci0gICAgICAgICAgICAgICAgdmFsaWQgPSBOTzsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1
cm4gdmFsaWQ7Ci19Ci0KLU5TUmFuZ2UgcmFuZ2VPZlVSTFNjaGVtZShOU1N0cmluZyAqc3RyaW5n
KQotewotICAgIE5TUmFuZ2UgY29sb24gPSBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCI6Il07Ci0g
ICAgaWYgKGNvbG9uLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgY29sb24ubG9jYXRpb24gPiAw
KSB7Ci0gICAgICAgIE5TUmFuZ2Ugc2NoZW1lID0gezAsIGNvbG9uLmxvY2F0aW9ufTsKLSAgICAg
ICAgLyoKLSAgICAgICAgIFRoaXMgc3R1ZmYgaXMgdmVyeSBleHBlbnNpdmUuICAxMC0xNSBtc2Vj
IG9uIGEgMngxLjJHSHouICBJZiBub3QgY2FjaGVkIGl0IHN3YW1wcwotICAgICAgICAgZXZlcnl0
aGluZyBlbHNlIHdoZW4gYWRkaW5nIGl0ZW1zIHRvIHRoZSBhdXRvY29tcGxldGUgREIuICBNYWtl
cyBtZSB3b25kZXIgaWYgd2UKLSAgICAgICAgIGV2ZW4gbmVlZCB0byBlbmZvcmNlIHRoZSBjaGFy
YWN0ZXIgc2V0IGhlcmUuCi0gICAgICAgICAqLwotICAgICAgICBOU1N0cmluZyAqYWNjZXB0YWJs
ZUNoYXJhY3RlcnMgPSBAIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky4tIjsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IEludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQoW1tO
U0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFi
bGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0pOwotICAgICAgICBOU1JhbmdlIGlsbGVnYWxzID0g
W3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0
LmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpzY2hlbWVdOwotICAgICAgICBpZiAoaWxsZWdh
bHMubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBzY2hlbWU7Ci0g
ICAgfQotICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKLX0KLQotQk9PTCBs
b29rc0xpa2VBYnNvbHV0ZVVSTChOU1N0cmluZyAqc3RyaW5nKQotewotICAgIC8vIFRyaW0gd2hp
dGVzcGFjZSBiZWNhdXNlIF93ZWJfVVJMV2l0aFN0cmluZyBhbGxvd3Mgd2hpdGVzcGFjZS4KLSAg
ICByZXR1cm4gcmFuZ2VPZlVSTFNjaGVtZShzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShzdHJp
bmcpLmdldCgpKS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOwotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaAppbmRleCBjOTljYjM4Mzc4YzE5
YWI4MmNlOTFlOGJmMDIzN2FiNzcyODc5MTFhLi42MzMxNzhlNGVlYWI1ZWEzMTkzNjIxMDEwZTc1
OGNiMzQyMGM4MTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgKQEAgLTM1LDcg
KzM1LDcgQEAKIAogI2luY2x1ZGUgIlJUQ0J1bmRsZVBvbGljeS5oIgogI2luY2x1ZGUgIlJUQ0lj
ZVRyYW5zcG9ydFBvbGljeS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oCmluZGV4IGI3MDI2NzQ4MjQ2OWQ1
ODc1ZWZiNWY3NDk0ZDFiZjdhYzQyYzg5ZTEuLjM4MGQzNzMxYjBhMTUzYWJiOWMyMjcwYmZlZTc2
ODBmMDNiM2I4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaApAQCAtMjMsNiAr
MjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjcHJhZ21hIG9uY2UKKwogI2luY2x1ZGUg
PENvcmVWaWRlby9Db3JlVmlkZW8uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUGFydC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUGFydC5oCmluZGV4IDYyOGY5MzlhMzA1Y2NmNzQ2
NjllNmJjYmFiYzBmNTkxNzk1NjM3ODYuLjA0MWMyOWEzMTJmMDk4MTdmOGVjZjE3MzYxNjEzY2Fk
MmZkNmY0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0LmgK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggOWZmNjAwY2FjNTkz
ZDM1OTQ1YzEwZWExMTQ1Mzc0ZGJjOTcyODAxMy4uNDc0YTBmMmY4YmJhMWNiMWY5NjNjY2M5OTQ0
ZjJlNzlkYWJjMWRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZWdpc3RyeS5oCkBAIC00MCw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJlZ2lz
dHJ5OwotY2xhc3MgVVJMOwogCiBXRUJDT1JFX0VYUE9SVCBCbG9iUmVnaXN0cnkmIGJsb2JSZWdp
c3RyeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZWdpc3RyeUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5oCmluZGV4IDI0ZmVjYzk1YTQxOTYwYjEzZGQ4NzQ4MTUxMGVjMjc4YThiMWVm
MjQuLmM2OTFlNWI2NzAwN2VkYTJlMmZmOGJiNjIyNmEwMGEzMDA1MTRmNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCkBAIC0z
MywxNCArMzMsMTMgQEAKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiQmxvYlJl
Z2lzdHJ5LmgiCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUhh
bmRsZUNsaWVudDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCA2MTgy
YmU1NmM0MjYwNWQ1MGVhMjlkMmQ3YmUxMDIxN2RiZjYyMTA5Li5jOTRlMzk0OTRiOGUzMjZkYjRh
MTJhMjcyMDFhNDYyMzhkZTE4YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAj
aW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNp
bmNsdWRlICJQYXJzZWRDb250ZW50UmFuZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFByb3h5LmgKaW5kZXggMjQ5YTAwMzYxYmVmYWMzYzhhYjMzOWFkODc3ZTg3
MWY0YmZlNTkzMi4uMzJhNmY1N2MwYTIxOTYwNDdjNzQzOWIwOTM5ZGZlMmNkMGMzNjllNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5jbHVk
ZSAiQ29va2llc1N0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiU2FtZVNpdGVJbmZvLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCmluZGV4IGU1ZjMwNGJiY2U1ZDAx
OTY5OTFmNWNkOWNlMmUwZjIyMTJjYWU2YTAuLjJjNTQzNDM4NWYxODVlODJlMjkxNjFiOGZjNDdm
ZTk5MDEzOTQ3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiQ3Jl
ZGVudGlhbFN0b3JhZ2UuaCIKIAogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgot
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKElP
UykKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKaW5kZXggNWNhY2MwNTYzMWMxNjgw
ZDFkOTQyN2Q3Nzg5NTI5ZjNiMThkMzA3ZC4uN2RkYzRmZTU1YmIxYmUyZjY5MjAwMDgwYzM0ZjM0
YmFiZDUwZWRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
cmVkZW50aWFsU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbFN0b3JhZ2UuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAotI2lmbmRlZiBDcmVkZW50aWFsU3RvcmFnZV9oCi0jZGVmaW5lIENyZWRlbnRpYWxTdG9y
YWdlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUg
IlByb3RlY3Rpb25TcGFjZUhhc2guaCIKQEAgLTM1LDcgKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKIGNsYXNzIENy
ZWRlbnRpYWxTdG9yYWdlIHsKQEAgLTcwLDUgKzY4LDMgQEAgY2xhc3MgQ3JlZGVudGlhbFN0b3Jh
Z2UgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ3JlZGVudGlh
bFN0b3JhZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
YXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmNwcAppbmRleCAzZjRmYjFhZDg4NGE3ODJiZGM2MTRmZDM5NGZlNzc3MWFiYTU0
YTRmLi40NjA1YmVhMGE3YTE2ZDEzYTVkMmMwZTkwNmZiYWU5MGNkZDQ2MjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAt
MzAsOSArMzAsOSBAQAogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQmFzZTY0Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRGF0YVVSTERlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuaAppbmRleCA3MjU4MjQ3MTI5Y2JiYWEyYzg1ZmMzYjQ5Y2ZkYjY2
ODBkMmJkNzVkLi45NzRkOWNlYmViMTk1MTg4YjVjODQ2OTJhYTBmNWIyNmJhOTkwY2Q2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCkBA
IC0yMyw5ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBEYXRhVVJMRGVjb2Rlcl9oCi0jZGVmaW5lIERhdGFVUkxEZWNvZGVyX2gKLQor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KQEAgLTM4LDcgKzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogCiBuYW1lc3BhY2UgRGF0YVVSTERlY29kZXIg
ewogCkBAIC02MSw1ICs1OCwzIEBAIHZvaWQgZGVjb2RlKGNvbnN0IFVSTCYsIGNvbnN0IFNjaGVk
dWxlQ29udGV4dCYsIERlY29kZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogfQogCiB9Ci0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IGU4Yzdk
OThhMDc1YjY2ZGQwNTQyODc5YjU5MTY0YzBkNDZmNmE3MjYuLmJiYWFkZTE4NWI3OWY1NGY4YzA3
MDc1Mzk2MzIxNjYzNDZlYzJkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmgKQEAgLTIwLDkgKzIwLDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QmxvYkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Qcm94eVNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
cm94eVNlcnZlci5oCmluZGV4IDEwM2Q5YTk2YmJkYzYxNTJhNjFiN2QxNjFmZTQwOTBiYTViYzNh
MDUuLjUyNzg5YjViZGQ4ZGFiMzk3YjM2OWFhYzE1OGMyNjc3MjE4NzdkZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmgKQEAgLTIzLDE1ICsyMywx
MyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
UHJveHlTZXJ2ZXJfaAotI2RlZmluZSBQcm94eVNlcnZlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBOZXR3b3JraW5nQ29udGV4
dDsKIAogLy8gUmVwcmVzZW50cyBhIHNpbmdsZSBwcm94eSBzZXJ2ZXIuCkBAIC03NSw1ICs3Mywz
IEBAIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJM
KGNvbnN0IFVSTCYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFZlY3Rv
cjxQcm94eVNlcnZlcj4mKTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFByb3h5U2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VFcnJvckJhc2UuaAppbmRleCA3NjMzMThjMmUxMTQ3MzYyMzZlYzNkMTM2Yzdj
NGE4NzhkZGNiMmYzLi5lMGJmMDRiOGFjOGYwMGIzOTM5NzkxZWJmZDAwODdlY2I5MGRiNzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
QmFzZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDQ5MTQzNGQ4ZmE1M2YxOTBlNTQ1M2Vi
OWYzOTRlNDA3ZGQ2YzEzYmYuLjQ2YWY1NjcxM2Q4OThjM2E3ZmJkNzk4YWE1MGZlYWE2NTQ3ODQ5
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgQ29tcGxldGlvbkgKICAg
ICBpZiAocmVzcG9uc2UuaXNIVFRQMDkoKSkgewogICAgICAgICBhdXRvIHVybCA9IHJlc3BvbnNl
LnVybCgpOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQo
KTsKLSAgICAgICAgaWYgKHBvcnQgJiYgIWlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZh
bHVlKCksIHVybC5wcm90b2NvbCgpKSkgeworICAgICAgICBpZiAocG9ydCAmJiAhV1RGOjppc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKICAg
ICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiQ2FuY2Vs
bGVkIGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSAr
ICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIjsKICAgICAgICAgICAgIGQtPm1fY2xp
ZW50LT5kaWRGYWlsKHRoaXMsIHsgU3RyaW5nKCksIDAsIHVybCwgbWVzc2FnZSB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCAw
MWE4NmUzNTliMWZkMGYyZWFmNDU2OGFhNzI4NjQwYzMyYjc2Zjc4Li42NWYzMGY5NWRiNjA1NGE1
ZDAxYjI5ZjI0NjhiNTllOTczNzI0Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC03Nyw3ICs3Nyw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlh
bDsKIGNsYXNzIEZyYW1lOwotY2xhc3MgVVJMOwogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBj
bGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmlu
ZGV4IGQ2ZWRiNmQ2MThhZGMzYmNjZTIzZjAxZmI5N2ZmMTM5OTdhNmZhYzIuLjNlMTBiZWY0OTEw
N2QxMzc4MTdjYjk5MzI5ODUyMTc1YmI4ZDQwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTQ0LDcgKzQ0
LDYgQEAgT0JKQ19DTEFTUyBOU0NhY2hlZFVSTFJlc3BvbnNlOwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwotY2xh
c3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBj
bGFzcyBSZXNvdXJjZUVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggZmY1ODM2MTc0ZWFiOTU5NTI4
YTIwN2JmYmFhYjYwMDM5ZDliNTAzMy4uZmI0NjM2MzUyMmE3ZmVjMjUyN2RjYzRkMTI3NWVkYTNm
NzYzMzA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgUmVzb3VyY2VSZXF1
ZXN0IFJlc291cmNlUmVxdWVzdEJhc2U6OnJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHIKICAgICAgICAgcmVxdWVzdC5tX2h0dHBIZWFkZXJGaWVsZHMucmVtb3ZlKEhU
VFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoKTsKICAgICB9CiAKLSAgICBpZiAoc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCAmJiAhcmVxdWVzdC51cmwoKS5wcm90b2Nv
bElzKCJodHRwcyIpICYmIFdlYkNvcmU6OnByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIo
KSwgImh0dHBzIikpCisgICAgaWYgKHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXVEY6OnByb3Rv
Y29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikpCiAgICAgICAgIHJlcXVlc3Qu
Y2xlYXJIVFRQUmVmZXJyZXIoKTsKIAogICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVx
dWFsKHJlcXVlc3QudXJsKCksIHJlZGlyZWN0UmVzcG9uc2UudXJsKCkpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRl
eCAzYWY0MzUyNjlmZTFmY2UwMzc3ODVmZDI1YTFlMGNiYmZkNzkwZjM1Li5lN2MxYzQwOWMzYjli
NjRlYTdiNGUzNzg3ODM0Mzk1NDJhNGFkMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMzEsNyArMzEsNyBA
QAogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oCmluZGV4IGQ4ZmNjMTQzMWI1MGJjN2FiNjdmMWQxOTY4YjkxY2U3MGVhMTYx
ZWYuLjBlNTVjMWNlZmYyYWU3YzM3MWY2MGU2ZWMzNGE4MTViNzhhODIxM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmgKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0xvYWRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFJhbmdlLmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1IYW5kbGUuaAppbmRleCBiNTliZGJhMGI0MTI5NWNlZTM4NTNmNmZlYTIyYWJjMjRlY2RiZjI1
Li42ZDFmZDFhODMwOTkzOTg5NGI0OWVhODRiNzdhNTlmMTE3ZDhhMDIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKQEAg
LTMxLDggKzMxLDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAppbmRleCBiYTM0MGZm
ODhkNjIwM2I3MTI1MjA5YTg1MDIzZDM0OWRmMzVmMmRmLi40ZjhlNDMyMmFjNTcxZDc3NzEzZDEw
MTQzNzQwNDVmZjZkY2NmY2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApAQCAtMzAsMTEgKzMw
LDExIEBACiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldC5jcHAKaW5kZXggZmEwNGM4YjcwOTljYmFlYjZlNWY0YzE1YjE3NDUyNjc0MDli
M2FkNy4uZjhlYmIwNmNjZDA1NmUzNTBlZDAwZjBiOTI1ZmRhYWNmZmRlNGQ5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQAogI2luY2x1ZGUg
IkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgiCiAjaW5jbHVkZSAiQ29va2llc1N0cmF0
ZWd5LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KICNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ0ZOZXR3b3Jr
U1BJLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKaW5kZXggYjVj
NmE4ZDZjMzJmZmRiZDkwYjIxMDA0MmI5NDcxNDc0M2EwYzU0Yi4uMmFiMzQ5NzIxNmFjNWFhODc2
ZTAwNGU3YTdkNTZhOGU0OGRlYzRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJveHlTZXJ2ZXIuaCIKIAotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvckNGLmNwcAppbmRleCBiYTM2MDViYmQxZDQ2Zjk3ZGUyODM4ZjM5ODM3ODkyZjk5NTIyYjY4
Li5kNDE2ZjYxNTE0ZWYxZmYwMjMxMWQ1YzJkMTAzNWVmZDU0MWU5NDMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3Bw
CkBAIC0yOCwxMSArMjgsMTEgQEAKIAogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW5jbHVk
ZSA8Q0ZOZXR3b3JrL0NGTmV0d29ya0Vycm9ycy5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUlu
dGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDg5NDg1YTMxZjU0NDVhNWM4OWU5
M2I4MTNjOTEwODFhNzRhNDkxOWMuLjBlYWRlMTU5OWNlNThiYjY0MGYyZDEyMTNhYzQzNjAyMTQ3
M2E4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMzEsMTEg
KzMxLDExIEBACiAjaW1wb3J0ICJDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIkNv
b2tpZXNTdHJhdGVneS5oIgogI2ltcG9ydCAiU2FtZVNpdGVJbmZvLmgiCi0jaW1wb3J0ICJVUkwu
aCIKICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxv
Y2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAjaW1wb3J0IDx3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBAaW50ZXJmYWNlIE5TVVJMICgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaAppbmRl
eCBlMGIyMWNjMTM3NzQ4YThlMTYyNzQ4MzI2MDdjMThkN2E0ODE2MGZlLi5iOTYxNGJmZjAwNzk4
NGNhNWYyMjE4ZTBiNjU5YWFmMmY0YTJkNjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmgKQEAgLTI1LDcgKzI1LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBOZXR3b3JrU3RvcmFn
ZVNlc3Npb247CiAKIHN0cnVjdCBDb29raWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwCmlu
ZGV4IDVlODQ1NGFhNTRhZjZmNzFhY2ZhZTdlOTM2MjQwN2MyMTQxNzUxODUuLmMyZDA1MWUzNzkz
ZjVhOGU4NjhhNGU3OWRmZTE2NDY1Njc1MTdhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2Uu
Y3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXgg
NjUwMDM4ZDM5NDEyYzdjYTAzODQzZDhhYzkzZjE0NjZhNGU4N2M4Mi4uMzllNzdiZjdkNDYwZmY3
NmFhNzdmY2E2MWNiMjYxM2IxYTc1NTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0yOSw5ICsyOSw5IEBACiAj
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJT
UUxpdGVGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvTW9u
b3RvbmljVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llVXRpbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0
aWwuaAppbmRleCBhODljOWFiN2I5NjI2MjQ0ODMyNjI1MjU0NzBmMWE0ZGNjOWZmMzcyLi42MThk
ZjdiODhlNDI5ZWY3NjRlMTJiMjY3Yzc0YWRmYTFhZTllYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmgKQEAgLTI0LDggKzI0LDgg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaAppbmRleCAzNzMyNjAxNzliODg2ZjFlZWRh
MDY4MTM5ZjAwNjg0YTE0YWYwNzc1Li5mOGQ2ODEwODAxZWZiYWRkOWQ0MTAwMjI5NGFkYTM5OWEw
OTY1ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuaApAQCAtMjgsMTMgKzI4LDEzIEBACiAKICNpbmNsdWRlICJDdXJsUHJveHlT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgIkN1cmxTU0xIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIK
IAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaWYg
T1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5oCmluZGV4IGE2
MWM2ZWMyMjYyZDJlMzg3OTkyNzI0YjZkY2M1ZjY5NGQxMTY2NDkuLmYzNWY0MWI1MWY1ODk2ZjZm
NzMzNjYwNTUyNDljMzBiYTM5NWIzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5oCkBAIC0yNSw3ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjZGVmaW5lIGtDVVJMQVVU
SF9ESUdFU1RfSUUgICAgKCgodW5zaWduZWQgbG9uZykgMSkgPDwgNCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2UuaAppbmRleCAzNzM2
NjFiZDM1YWZjZTY2N2FlMWJiMzU3N2E2YzA5ZGMxNDRmYTRkLi5lNjExZmZjNGZiMTU0MWY0Y2Zk
MTMyODcyY2JjMWQ1ZGMzZDkzZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNwb25zZS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRl
eCBlMTEwYWQxNjQ5MTA1ZWM2YjAwM2IxOTkwMzZhZDhhOGU3MDQ3NzE0Li4xYmQyMWVjZWFiZmY3
ZTc5MjAwYWY4MmNjZDA5YzJhODg3MTg5ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkN1cmwuY3BwCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgotI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3Vy
bC5jcHAKaW5kZXggY2RhNDQ5OTNmNjM0YjI0NDRhNjFkY2FmOTc0MDFlOWYyNjAyZjBiMC4uMThm
NTA4YjZlNDg2ODJhOGZjNzAwZDFmNjdkN2E5NmUwOTNlZDRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFVTRShDVVJMKQogCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCmluZGV4IGNmYzQ4ZmZhMjVmZDgwZmRiOGQ3MWZhN2Mz
ODkzZDNlODZhNDU3N2EuLjA3MTBjYWVlMjUwM2MxZjNmMzgwOGUyMDQzNzA1ODgyN2VkMzZkYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcApAQCAtMzksOSArMzksOSBA
QAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgog
I2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUVycm9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQppbmRleCAyZWNmNDI4YzBhYjUxNGFjZTBjMDFjNWY0
ZDE2Mjk4Y2VhMjE2MDczLi5kY2JkZTM0OGViNDc3YzJhMWI1YWJlNGFiNTkzNTkzOThlMmFjOWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUVycm9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlRXJyb3JNYWMubW0KQEAgLTI2LDExICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJSZXNvdXJjZUVycm9yLmgiCiAKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCA8
Q29yZUZvdW5kYXRpb24vQ0ZFcnJvci5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogQGludGVyZmFjZSBOU0Vycm9yIChXZWJFeHRyYXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNvdXAuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmRjNjM3NDEyZTE4YmE3MjVmNzQ4M2VjMzI2
ZTEyNDlhODhhMTZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5o
CisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTAotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIEdVbmlxdWVQdHJTb3VwX2gKLSNkZWZp
bmUgR1VuaXF1ZVB0clNvdXBfaAotCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotV1RGX0RFRklO
RV9HUFRSX0RFTEVURVIoU291cFVSSSwgc291cF91cmlfZnJlZSkKLVdURl9ERUZJTkVfR1BUUl9E
RUxFVEVSKFNvdXBDb29raWUsIHNvdXBfY29va2llX2ZyZWUpCi1XVEZfREVGSU5FX0dQVFJfREVM
RVRFUihTb3VwTWVzc2FnZUhlYWRlcnMsIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2ZyZWUpCi1XVEZf
REVGSU5FX0dQVFJfREVMRVRFUihTb3VwQnVmZmVyLCBzb3VwX2J1ZmZlcl9mcmVlKQotCi19IC8v
IG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5j
cHAKaW5kZXggZTQ4M2FhNjMxNmNlNmM1ZDZjOGYzZTY1NWQ1NWRkMWVlYjA0NjNjZi4uMDNkMTU2
ZTVlZDZlOGMxZjU5MDk1NmE4YmQ4NDBlOGEzZDEwZTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiQ29va2llLmgi
CiAjaW5jbHVkZSAiQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCIKLSNpbmNsdWRlICJH
VW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
U291cE5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CkBAIC00MSw2
ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KIAogI2lmIFVTRShMSUJTRUNSRVQpCiAjaW5j
bHVkZSAiR1JlZlB0ckd0ay5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcAppbmRleCA0YzI3N2MzZDIxNjdhY2M1
NDQxMWY5NjAzZTM1MTkwMDE3MzNiNGFkLi45Yzk5Zjg5NWRiNGRiN2M4MTFjYTUwZjUxMWQzZDRm
YjI1YzcxNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUHJveHlTZXJ2ZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgVVNF
KFNPVVApCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCA2MzczNGM2NzRjNTJl
ZTk1ZGM2YzllNDIxYzQ2NjBmNDE4NDAwYmFhLi5mYjcxODEzYTM3NTkwOWMwYTdhMmY1NDU3NGE4
MTFhZWRkYjNmZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMzMsNyArMzMsNiBAQAog
CiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
Ci0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgog
I2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCkBAIC01OCw2ICs1Nyw3IEBACiAjZW5kaWYKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJp
b3JpdHkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAppbmRl
eCAzOGUzYThlZTY5NjgxMWZkNWJhNzhiNGIzMGMyYzAxYTM5ZmY1YjVmLi43NDcyYWQyMzhiMzM0
YTk1MDkwMWVkZTkwMTU4MzI2NWIzZjliYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCkBAIC0yNyw5ICsyNyw5
IEBACiAjaWZuZGVmIFJlc291cmNlUmVxdWVzdF9oCiAjZGVmaW5lIFJlc291cmNlUmVxdWVzdF9o
CiAKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dEJhc2UuaCIKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9H
VW5pcXVlUHRyU291cC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RT
b3VwLmNwcAppbmRleCA1OGNmYTc3NjE0NGM4NGEwOTBkMzYyMmRmMjIyNzQyMThmNzkxYmI2Li5l
ZDI2OTQwMWViYmZmNGRkNjM4ZWY4ZWZjMWUwZWQ4NjkyMmY0NmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVz
dFNvdXAuY3BwCkBAIC0yNCwxMSArMjQsMTEgQEAKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAj
aW5jbHVkZSAiQmxvYlJlZ2lzdHJ5SW1wbC5oIgotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgi
CiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViS2l0U291cFJlcXVlc3RH
ZW5lcmljLmgiCisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCmluZGV4IDljZGRkYjg3ZTM3NTk1
YTJiYmFkNjUxMDIwNDVmNmZhNzQyYjRlNDIuLjVhZjk0NzNmMzc3Mjg2MTEzMWJhZTcxNzdiMzQz
MTlhNWMyZGIwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcApAQCAt
NDEsOSArNDEsOSBAQAogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCiAjaW5jbHVkZSAi
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9u
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGds
aWIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29w
U291cmNlUHJpb3JpdHkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMTNlY2I1YjBmNzYz
YzIwMWNmMTdhNDE2MTJhNzNmMDlhOGY1YTA3OC4uNjAwNGQxN2Y3NmEwM2E5MGUzMzhhOTBlM2M1
NDViNTJmNTE5Yzc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAK
IAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oIgogI2luY2x1ZGUgPGdsaWIv
Z3N0ZGlvLmg+CkBAIC0zOSw2ICszOCw3IEBACiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9E
aWdlc3QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdv
cmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5l
dHdvcmtTZXNzaW9uLmgKaW5kZXggZDFlOWQ5Y2U1YjI4OWQxNGNjNmMxNjU5M2JmNGFkMDY3ODI3
ZTUzYS4uNWI1ZmY3OTc3MzQ3MTUxOTYxYTQ1YzM0OTdlYTJmNTUxMzQ0YjFhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29y
a1Nlc3Npb24uaApAQCAtNDQsNyArNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBVUkw7CiBzdHJ1
Y3QgU291cE5ldHdvcmtQcm94eVNldHRpbmdzOwogCiBjbGFzcyBTb3VwTmV0d29ya1Nlc3Npb24g
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9VUkxTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk3ZGJhMzI4Njk1ZmZjYjI2ZjM4N2I2NzJhYTkzODczNzJiMmU5MWMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc291cC9VUkxTb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0j
aWYgVVNFKFNPVVApCi0KLSNpbmNsdWRlICJVUkwuaCIKLQotI2luY2x1ZGUgIlVSTFBhcnNlci5o
IgotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6OlVSTChTb3VwVVJJKiBzb3VwVVJJKQot
ewotICAgIGlmICghc291cFVSSSkgewotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBHVW5pcXVlUHRyPGdjaGFyPiB1cmxTdHJpbmcoc291cF91cmlf
dG9fc3RyaW5nKHNvdXBVUkksIEZBTFNFKSk7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihTdHJpbmc6
OmZyb21VVEY4KHVybFN0cmluZy5nZXQoKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OwotCi0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE1vdGl2
YXRlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg5NTYuIGxp
YnNvdXAKLSAgICAvLyBkb2VzIG5vdCBhZGQgdGhlIHBhc3N3b3JkIHRvIHRoZSBVUkwgd2hlbiBj
YWxsaW5nCi0gICAgLy8gc291cF91cmlfdG9fc3RyaW5nLCBhbmQgdGh1cyB0aGUgcmVxdWVzdHMg
YXJlIG5vdCBwcm9wZXJseQotICAgIC8vIGJ1aWx0LiBGaXhpbmcgc291cF91cmlfdG9fc3RyaW5n
IGlzIGEgbm8tbm8gYXMgdGhlIG1haW50YWluZXIgZG9lcwotICAgIC8vIG5vdCB3YW50IHRvIGJy
ZWFrIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbnMKLSAgICBpZiAo
c291cFVSSS0+cGFzc3dvcmQpCi0gICAgICAgIHNldFBhc3MoU3RyaW5nOjpmcm9tVVRGOChzb3Vw
VVJJLT5wYXNzd29yZCkpOwotfQotCi1HVW5pcXVlUHRyPFNvdXBVUkk+IFVSTDo6Y3JlYXRlU291
cFVSSSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgcmV0dXJuIEdVbmlxdWVQdHI8U291cFVSST4oc291cF91cmlfbmV3KHN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpKTsKLX0KLQotYm9vbCBVUkw6Omhvc3RJc0lQQWRkcmVzcyhTdHJp
bmdWaWV3IGhvc3QpCi17Ci0gICAgcmV0dXJuICFob3N0LmlzRW1wdHkoKSAmJiBnX2hvc3RuYW1l
X2lzX2lwX2FkZHJlc3MoaG9zdC51dGY4KCkuZGF0YSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEVuY29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNv
ZGluZy5oCmluZGV4IDc3YzUyODhmZDBjZTA1OTg2NGVmODEyM2UwMDcyYmI3YzM1NzIzZGIuLjdk
MDNmODYzZDBkZjQ5ZDJmNzljN2MzYTZkMTM4MmNmNDE2ODEwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaApAQCAtMjUsMTMgKzI1LDEzIEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8cGFsL3RleHQvVW5lbmNv
ZGFibGVIYW5kbGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0RW5jb2Rp
bmcgOiBwdWJsaWMgVVJMVGV4dEVuY29kaW5nIHsKK2NsYXNzIFRleHRFbmNvZGluZyA6IHB1Ymxp
YyBXVEY6OlVSTFRleHRFbmNvZGluZyB7CiBwdWJsaWM6CiAgICAgVGV4dEVuY29kaW5nKCkgPSBk
ZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIFRleHRFbmNvZGluZyhjb25zdCBjaGFyKiBuYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcAppbmRleCBiYWUxYmVhYWFh
MzdhZGUzMDNiMDhmMzQ4OTQ5MjQ5MDE4NjQ3OWNhLi4wZjQ2YzVkY2FiMjliN2I0NjNiYjZlY2Qz
MWIwZWIzYjc1OGMyMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
QlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3Bw
CkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQlN0cmlu
Zy5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9CU3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmlu
Zy5oCmluZGV4IDFmYmUwMmMxNTg3YzEyOWI4ZDUwNTAyZTY0NjA0ZTc4NmNlODJhMmEuLjE4NGI1
NTFkNDhlOWMyMzFlYTAyYTc4NzU2ZmU5NmZlZDNlNTY2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0JTdHJpbmcuaApAQCAtNDAsOCArNDAsNiBAQCB0eXBlZGVmIF9OdWxsX3Rlcm1pbmF0
ZWRfIHdjaGFyX3QqIEJTVFI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFVS
TDsKLQogICAgIGNsYXNzIEJTdHJpbmcgewogICAgIHB1YmxpYzoKICAgICAgICAgQlN0cmluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxp
dGllc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0
aWVzV2luLmNwcAppbmRleCA2ZmY4OWVjMTgwZDU4MzVjNTkxNDBmYzZhMzg3ZjQ3YjEyNWIwYTMy
Li40ODU0NTQyZjBkNDAxMjY4MjI1YjdkNjBkZmM0MmU3ZmJlMjUwZjNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApA
QCAtMjcsMTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgiCiAK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8c2hsb2Jq
Lmg+CiAjaW5jbHVkZSA8c2hsd2FwaS5oPgogI2luY2x1ZGUgPHdpbmluZXQuaD4gLy8gZm9yIElO
VEVSTkVUX01BWF9VUkxfTEVOR1RICiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNX
aW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4u
aAppbmRleCA1Y2Q5ZTBlNzU3MzEzZmYwMjI5YTZjZmJhOGVkNjQ5MGE4MWFmZTI4Li5jMzdmM2Uy
ZGUxOTYxZTZhMTMwNDU0NzdjY2E4NjkyNjRmMDMyNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCkBAIC0zNCw3ICszNCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVu
dEZyYWdtZW50OwotY2xhc3MgVVJMOwogCiBIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3Qg
U3RyaW5nJik7CiBIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgVmVjdG9yPGNoYXI+Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IDFk
ZmE1MGI1MzJkZDhiNWFmNjY2NzVmODQ0OWZlNTQxOTExNzRlZmYuLmE2YjY3MmZjNzI3ZmU4Mzc5
YTJkMGY3ZTA0NjA3MTY5NjBjZmJiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlN0cmluZ1RydW5jYXRvci5oIgogI2luY2x1ZGUgIlRl
eHRJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRl
eHRSZW5kZXJlci5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDA2OTk3OTkwNjMxZTVjMzQzNjQ3MThhZTZhYjE3
NjU5NGNkZjM2OWQuLmQ1OTY3YTU4MjBjOTdhZTI4YzYyNWE1MGQ4MDM4ZTAwZWUyNWRkMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTQx
LDcgKzQxLDYgQEAKICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0
LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2Uu
aCIKQEAgLTQ5LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRl
ICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAppbmRleCAwYjZjNDJlZTJkMDgxNjhiZWRlZmM4ZjNk
MGY5ZWFlNmUxYTZiZjU4Li5mMDQwYjBhZjk2ZjNiOGJiZDlmNTQ5MzI5MzEyYjhmNGY3MDY5ZWQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtMjAsMTAgKzIwLDEwIEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCBkMDc3N2IzNDUw
YzNhMDIwYWVmZDQzYTcyM2NjNmNiMTMzZGVhZTBiLi4zMzJmMjg1MzFkMzg4Y2ZlMmMzZDU4YTk0
YzNmMjYxN2RjYjkxNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIEltYWdl
OwogY2xhc3MgTm9kZTsKIGNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIFVSTDsKIAogZW51bSBjbGFz
cyBIaXRUZXN0UHJvZ3Jlc3MgeyBTdG9wLCBDb250aW51ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAKaW5kZXggZWQzMzM1ZTEzNzRkOGY3MjI5
MjUyZDU0Y2UwNjdjYzM4NDc2ODFiZC4uNzQ2N2ZmMzg2NTY4MmI4YmU2M2JiNjdkZWJkNzE5YTRj
OGI3ZTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFj
aG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50
LmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlTG9hZGVyLmNwcAppbmRleCA5OTk5NmUwMWVkMDcxYWY1ODcxYTFkYTE2NmM2MzE0
OWExM2I0ZTc0Li43MjIxZGZjYjdkZGRlNTkwMzkyNzZhZGRjOWYzOWJkYTJkNzg5MDQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBT
VkdJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogU3RyaW5nIFNWR0ltYWdlTG9hZGVy
Ojpzb3VyY2VVUkkoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGUpIGNvbnN0CiB7CiAgICAg
VVJMIGJhc2UgPSBlbGVtZW50KCkuYmFzZVVSSSgpOwotICAgIGlmIChiYXNlICE9IGJsYW5rVVJM
KCkpCisgICAgaWYgKGJhc2UgIT0gV1RGOjpibGFua1VSTCgpKQogICAgICAgICByZXR1cm4gVVJM
KGJhc2UsIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUpKS5zdHJp
bmcoKTsKICAgICByZXR1cm4gZWxlbWVudCgpLmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAppbmRleCA2ODUwNGFhODRmMjZjYjE5M2ZmMzVmYTA4YjBh
NGY2ZDFlNTVmYzJjLi5kYTEzYjc3YjZmM2QxYjgyODNkY2E5OTg4ZDg4NzZkZDM2ZTE1Yzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcApAQCAtMjUsNyArMjUsNyBAQAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIlNW
R0F0dHJpYnV0ZU93bmVyUHJveHkuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDg3ZTI4MjNmOWU3MWI2N2Jk
NDgxZThlODg0MTFiYWQwMDEyNjRiOTguLmNkM2ZkMGQxZTI1OWRhYjRlMzNhNjlhYjZhZDE4NDZk
OWFlNWUxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC0yNyw3
ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCmluZGV4IDNmNWJjM2E3
NTZlNjg3OTFiYWM4ZDM2ODNiNmMzYzE2NzQ2ZDllNDIuLjMyZTcyMmJmYTI3MzQ1NGM0YjVhMTE0
ZWY4MDk2NDM3NTIzNGY4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlQ2FjaGUuaApAQCAtMzMsNyArMzMsNiBAQCBjbGFzcyBMYXlvdXRTaXplOwogY2xhc3MgU1ZH
SW1hZ2U7CiBjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsKIGNsYXNzIFJlbmRlck9iamVjdDsK
LWNsYXNzIFVSTDsKIAogY2xhc3MgU1ZHSW1hZ2VDYWNoZSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5oCmluZGV4IDY5ODA2YmU2NzcwM2UyZTk0OWYzNDFkNWM5ODZhODVlYTJkN2Uy
NGYuLjRjZmNlOGQ0YjAzNzg1NzkxNDIyNjdhYTZiODA4NzY3MTI2YjA0MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIK
ICNpbmNsdWRlICJTVkdJbWFnZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggNjdlMDZhMWI3OWM1OGUwODRjNzdhNTZiMmJmNzc5NzhmNDM2MGUxZi4uOTBi
Y2JiYjVkNzVhOTU1NGQ3OGQ3NWJkMDVmZGViZDE3YWE3OTNlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNl
dFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgICAgICAgICBiYWNraW5nLT5zZXRU
aWxlU2l6ZVVwZGF0ZURlbGF5RGlzYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsKICAgICB9CiAKLSAg
ICBXZWJDb3JlOjpjbGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7Cisg
ICAgV1RGOjpjbGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7CiAgICAg
b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKFZlY3RvcjxTdHJpbmc+KCkpOwogICAgIFdl
YkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0VXNlc092ZXJsYXlTY3JvbGxiYXJz
KGZhbHNlKTsKICAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFVzZXNN
b2NrU2Nyb2xsQW5pbWF0b3IoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMubW0gYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQpp
bmRleCA2ZmNkY2JlZGQzZjdkYTRjYzU0MjBhOTM2NzM0Mjk0MWE1YzExNDk3Li43YzViN2FkODQy
ZDk5OGZlNjFhMDE0MjMwNTJjMGExZTYwYjkzM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5tbQpAQCAtMzIsOCArMzIsOCBAQAogI2ltcG9ydCAiRXZlbnRIYW5kbGVyLmgiCiAjaW1w
b3J0ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJSYW5nZS5oIgotI2ltcG9ydCAiV2ViQ29y
ZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0
Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogU09GVF9MSU5LX0ZS
QU1FV09SSyhVSUtpdCkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
dHJpbmcgSW50ZXJuYWxzOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBET01VUkwmIHVybCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6dXNlclZpc2libGVTdHJpbmcodXJsLmhyZWYoKSk7CisgICAg
cmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsLmhyZWYoKSk7CiB9CiAKIGJvb2wgSW50
ZXJuYWxzOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRleCA2NDhmYmQyNmZhYzM2YTY1Yzk5
NTdjNTExNTc4ODc2NDZmMmRjMjYyLi41MTE4MWRhZTcyZTEzZTJiYmQxNTNlODExYzE0MzY0ZDFj
ZDhhMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNw
cApAQCAtODgsNyArODgsNyBAQCB2b2lkIE1vY2tDb250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZQogCiAgICAgVVJMIG1v
ZGlmaWVkUmVxdWVzdFVSTCB7IHJlcXVlc3QudXJsKCksIG1vZGlmaWVkUmVxdWVzdFVSTFN0cmlu
ZyB9OwogICAgIGlmICghbW9kaWZpZWRSZXF1ZXN0VVJMLmlzVmFsaWQoKSkgewotICAgICAgICBM
T0coQ29udGVudEZpbHRlcmluZywgIk1vY2tDb250ZW50RmlsdGVyIGZhaWxlZCB0byBjb252ZXJ0
ICVzIHRvIGEgV2ViQ29yZTo6VVJMLlxuIiwgbW9kaWZpZWRSZXF1ZXN0VVJMLnN0cmluZygpLmFz
Y2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJNb2NrQ29udGVu
dEZpbHRlciBmYWlsZWQgdG8gY29udmVydCAlcyB0byBhICBVUkwuXG4iLCBtb2RpZmllZFJlcXVl
c3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNw
cAppbmRleCA5YjZlOTVlMjE1NDgzMGMwMDAzZDZlMjE4MDAzYWNlYWEyMmZlZDUxLi40OTI5ZThh
ZTNkMTlkYzhlYjEzNTBhZDVlMTVjMDUxM2YxNjgxMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTMzLDggKzMzLDggQEAK
ICNpbmNsdWRlICJNb2NrUGF5bWVudE1ldGhvZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQYXltZW50Q29vcmRpbmF0b3IuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5j
cHAKaW5kZXggZDI0MTIwNmEyOGRkNWY2NDcwZGE5ZmI4NGU5ZWQ0ZmM3NGMyODdiMC4uNTgwOWYw
YmVkZjBlN2EwNzE3MjhkMDllYjkyOTc0N2M0YjRlZTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApAQCAtMzksMTIgKzM5LDEyIEBA
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIK
ICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1lLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcklubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZVRlc3RTdXBwb3J0IHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKaW5kZXggOTAwYzJjYjQwNDYyYTBl
YmUzNzAyOGEzNzVhNjMzZmVhZjk1MzRmMS4uMDMyMWMyYzdmZWQyNTY2MjhmZjI2Y2VkOTEzYWVi
OGFmYzMwZTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdv
cmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaApAQCAt
MzUsOCArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xh
c3MgQWJzdHJhY3RXb3JrZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBYnN0cmFjdFdvcmtlcj4sIHB1
YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKIHB1YmxpYzoKICAgICB1c2luZyBSZWZD
b3VudGVkOjpyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgK
aW5kZXggNWI5YTBiZTM2OWMyOTljMGZiNzU0MTA3OGZjNzY1NmQ2ZGU3OWVjMS4uMjgyZGQwNmJj
MzM4YTFlMDY5YTViZDQ2ZDg2M2ZjMzI5ZDBiYTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdl
Qml0bWFwLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlN1cHBsZW1lbnRhYmxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgIldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJX
b3JrZXJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaAppbmRl
eCAzNmJkMDA3MDdkMGE2OGRiMzA3NjI3MmJhNjVmMzBhM2E5MjdmMWU3Li44NTg1YTViZmY5M2Iw
NDY2NWRlNTMyMWVkMzJiOTJmZmE5NzZhMTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaApAQCAtNDIsNyArNDIsNiBAQCBjbGFzcyBTZXNz
aW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVyczsKLWNsYXNzIFVSTDsKIGNsYXNzIFdvcmtlcjsKIAogLy8gQSBwcm94
eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIgY29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VySW5zcGVjdG9yUHJveHkuaAppbmRleCBkZjQzNzFhZTIzYzMwMzA2ZWE3YmY2NDBk
MjdmOWUxNGI5NzVlNGIyLi5hMWQzZWE3NTc2ZTdlYTM0YTY0Y2I5MTU0N2RlNzZhY2Y1MThiZGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmgKaW5kZXggNTNjNzc2MTU2NzU1YjcwNmI5ZDI0OTM3
MTZhODEyNTI3ZmNhMzVmOC4uOTJjZmNjNzcwNmYwMzRlNTdiOWY4MmU5YmEyN2JhM2E1MWEwOWYw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaApAQCAtMjUsOCArMjUs
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBlNTdjMzIzY2RlOWU2ZjRmODBhZjliMjViMmNm
ZTFlZTJlNzM3NGQ5Li4wNGE0MWMyMWNiMmY3NTMxZmRlNjE5ZTRkNjdkZDU2NDQ5MDVmOThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTMyLDEx
ICszMiwxMSBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuY3BwCmluZGV4IDFjNmFhMTY1YjU5MTg3MTQ3YzhiYTgwOTU2MWIzMDMxNWM4NGIwYjcuLjg0
ZjExZTI2ZWVjNmJmOTIxYmIwNjUzYTJiOTU5MjM3NmM0M2MzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkR2xvYmFsRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmgKaW5kZXggZDcxNDEyNDg1YTk2OTA0OWFkYjQ5NjU5NzRkYmU5MWY1ZWUxOTE4
OS4uM2RjNTRmNmM0NzNkYjM3Njc1MjVkMWNhNDEwM2Q1ZDZhNTZjOTY4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC0zOSw3ICszOSw2IEBAIGNsYXNzIFNlc3Npb25J
RDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzOwotY2xhc3MgVVJMOwogY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50OwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oCmluZGV4IDliOWJjYzhhMjJmOWQ3
NjcxMjk4OTdlYzAxZjM3YjJhNTUyMWI3ZWQuLjdiMjM5ZjMwN2RhNzFlMTU2ZDg3YmEyMzUzYjUx
YjFhMzMzNWZmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXIuaApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmlu
ZGV4IDE0M2Q3ZDllMDQ1ZDU0ZTExYThjNmVkOWFjMTRlMzdiMTU2YTA1MjkuLmY5OTFmMzJjZTZk
M2E5YjI1N2E1NjEyYjQ2MzY1YTY3OWFlMmQxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggNDBkNDBkYWRhMGIxOGYy
MmE4ODM3Y2I5NzY4YTRhOTk2ZTJlNmJkMi4uOGRiOWM0MTZiZGY3M2M2ODZhZWYxNThkNjRkNjEw
MDQyZmU4ZWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtNDgsOSArNDgsOSBAQAogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclRocmVhZC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExP
V0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwg
U2VydmljZVdvcmtlciwgIiVwIC0gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6IiBmbXQsIHRoaXMs
ICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIENPTlRBSU5FUl9SRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVwIC0gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6IiBm
bXQsIHRoaXMsICMjX19WQV9BUkdTX18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKaW5kZXggM2JlOTUwNDI1
ZWE3ODBjZmZkNWJiZWU3ODVmYTQ1MzJhZjk0YTNkNy4uNGQ2MjA4ODlmOTM0YTdlZmEyNjBiMzIw
OWI0ZTE3NmIwMmFiMGQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApAQCAtMjksMTEgKzI5LDExIEBA
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNp
bmNsdWRlICJXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkxIYXNoLmg+CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgKaW5kZXggNzI4YzM3
Y2ZlNjJhNWZlNTYwYWI2YzRlYjE4NjRmMDQ0NGNmOTM2ZS4uY2UzNjFkM2YzZDBmMzg3M2E4NmRj
OGE5MzhiYWYwM2YxZDE2NGE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVz
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldv
cmtlclR5cGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaAppbmRleCAwODcwYmI2
ZWY2MDI5ODQ1Y2Q0YTliNmRlMjMwMGE4ODNjYWExYzIyLi45M2MyZGY2ZmYwZDJmMzk4ZTg0MTI2
OGJlMTk2NjRmN2E5Y2U2NGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5kZXggMWMzZDc0NmIyM2Ri
OTNlMzU2ZjIyZTYzMTIwYjFjZDRmNGNkYjBjOS4uYmNkZDhjNDY5MjdkYzQwMDYwYjBkZWY5ZGVi
ZWU1ZWVhNWVmMTc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcApAQCAtMjksNyAr
MjksNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKaW5kZXgg
NzEwZjQxMmI0NzJkOGYxNzQyZTBiZWU0OGQ1MDJiZTg5YTlhMDM5OS4uZTZhZjczMzFjN2I5NTQz
OWQ1Mzk4YTlhOGMzN2UzNDc2YjhmZGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCkBA
IC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW5EYXRhLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdHJ1Y3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleUhhc2ggewogdGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiA6IEdlbmVyaWNI
YXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IHsKICAgICBz
dGF0aWMgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBlbXB0eVZhbHVlKCkg
eyByZXR1cm4gV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZW1wdHlLZXko
KTsgfQogCi0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29wZShXZWJDb3Jl
OjpVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1
Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgc2xv
dCkgeyBzbG90LnNldFNjb3BlKFVSTChIYXNoVGFibGVEZWxldGVkVmFsdWUpKTsgfQogICAgIHN0
YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmIHNsb3QpIHsgcmV0dXJuIHNsb3Quc2NvcGUoKS5pc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDUw
NTIwYjZhMTQxYjE4M2YwNDhkZTYwOTMyOWY5Y2M4MWYyNTQ4NzAuLjYyNjE3Y2I4N2ExMGMxNWM1
MjM4ZTBjMGNhYTc2N2YyYmU4YWM4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJYTUxIdHRwUmVx
dWVzdEV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
VGhyb3R0bGUuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCmlu
ZGV4IGFjZDY1ZTljODBhMDY3ZjI3MmE1OGUxZDk3MzVjMTFmZTY1MTJhOTQuLjFmYjQxNWUyZDJk
MDg2NTNlZmNhMjcxYmU5YzhmMGVhZTQ1NGZmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAgLTMz
LDggKzMzLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29va2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4
IGRlMjJjNzlmOGU4ZDBlMmI4MTcyNGY2NTExMWE5ZjEwYTVkMjAzNjkuLjMyMTBlMzI5OWU2ZmNi
ODMyZmMzOWM4ZWQ2Y2E4ZTY2NzhiYzZiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtNDAsNyArNDAs
NiBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKIHN0cnVjdCBD
b29raWU7CiB9CiAKQEAgLTc4LDkgKzc3LDkgQEAgY2xhc3MgV2ViQ29va2llTWFuYWdlciA6IHB1
YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWMKICAg
ICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklELCBXYWxs
VGltZSwgQ2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIHNldENvb2tpZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6Q29va2llJiwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBzZXRDb29raWVz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkws
IENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCwgQ2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFVSTCYsIENhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBwbGF0Zm9ybVNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAgICAgdm9pZCBnZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5t
ZXNzYWdlcy5pbgppbmRleCBlM2RlOWQ4Y2ZhYjlmZDVmNmZiNjhhMmMwNzEwMjYyYTg1NWRjNDQ4
Li4wYjFmZDU1OWUwYmViMjZlMDAzNzk0MzRhZGFlNGU1YzllNDdkYWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjksOSArMjksOSBAQAogICAgIHZvaWQgRGVsZXRl
QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKICAgICB2b2lkIFNldENvb2tp
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2ll
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICB2b2lkIFNldENvb2tpZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBX
ZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBVUkwgdXJsLCBVUkwg
bWFpbkRvY3VtZW50VVJMLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICB2b2lk
IEdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKLSAgICB2b2lkIEdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICB2b2lkIEdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICB2b2lkIERlbGV0ZUNvb2tpZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZFNpbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMv
Q29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KaW5kZXggYzJiMTQ3YzVm
NzIxYjk1NDA3NDViNjQ4ZDIwYmJjYjcyODQ3MWFiZS4uNmU5MDI4ZGI1Yzk5N2JkMmEzMWZlZTE4
YTMzYzEyNGI3ZmYxNDI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29j
b2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KQEAgLTM0LDggKzM0LDggQEAK
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
c291cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1VSTENvbm5lY3Rp
b25TUEkuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJ
L05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCmluZGV4IGI2NzY2MTQ5ZWVkMTFlOWMyOGIwZTE0MzNh
ZTZkZWMwYWQ1ZDY5OTcuLjRlMGY3ZmE3ZGU2ODNiY2ExMjY1ODhkMWM0MTIzY2Q1YmFmYTQyYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqIGNvbm5lY3QKICAgICBtYXBJdGVyYXRvci0+dmFsdWUuYWRkKHVybCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQordm9p
ZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VS
TCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spCiB7CiAgICAgLy8gVGhlIGNvbm5l
Y3Rpb24gbWF5IG5vdCBiZSByZWdpc3RlcmVkIGlmIE5ldHdvcmtQcm9jZXNzIHByZXZvdXNseSBj
cmFzaGVkIGZvciBhbnkgcmVhc29uLgogICAgIEJsb2JGb3JDb25uZWN0aW9uTWFwOjppdGVyYXRv
ciBtYXBJdGVyYXRvciA9IG1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbik7CkBA
IC0xMDAsNyArMTAwLDcgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChOZXR3b3JrQ29ubmVjdGlvblQKICAgICBtYXBJdGVyYXRv
ci0+dmFsdWUuYWRkKHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rp
b24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwg
aW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25u
ZWN0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQs
IGludDY0X3QgZW5kKQogewogICAgIC8vIFRoZSBjb25uZWN0aW9uIG1heSBub3QgYmUgcmVnaXN0
ZXJlZCBpZiBOZXR3b3JrUHJvY2VzcyBwcmV2b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJlYXNvbi4K
ICAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2Jz
Rm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pOwpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQg
TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqCiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQog
Ci12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkK
K3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8v
IFRoZSBjb25uZWN0aW9uIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBpZiBOZXR3b3JrUHJvY2VzcyBw
cmV2b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJlYXNvbi4KICAgICBCbG9iRm9yQ29ubmVjdGlvbk1h
cDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5l
Y3Rpb24pOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6dW5y
ZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lCiAgICAg
bWFwSXRlcmF0b3ItPnZhbHVlLnJlbW92ZSh1cmwpOwogfQogCi11aW50NjRfdCBOZXR3b3JrQmxv
YlJlZ2lzdHJ5OjpibG9iU2l6ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVj
dGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit1aW50NjRfdCBOZXR3b3JrQmxvYlJlZ2lz
dHJ5OjpibG9iU2l6ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwg
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5jb250YWlu
cyhjb25uZWN0aW9uKSB8fCAhbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKS0+
dmFsdWUuY29udGFpbnModXJsKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNjksNyArMTY5LDcg
QEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xv
c2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlAKICAgICBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5yZW1v
dmUoY29ubmVjdGlvbik7CiB9CiAKLVZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNl
Pj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQorVmVjdG9yPFJl
ZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0lu
QmxvYihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgaWYgKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5jb250YWlucygmY29ubmVj
dGlvbikgfHwgIW1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoJmNvbm5lY3Rpb24pLT52YWx1ZS5j
b250YWlucyh1cmwpKQogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKaW5k
ZXggYzE5YTY1OWUwZWY0NTViYjEwODhiY2Y4NWMyOWZkZWFjOTM3MjYzOS4uOTA2YjllOGE1MmZl
NGNmYTAyNjZjZDk3MWQ3MThjZTJjOTI1NTQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCkBAIC0y
NSwxMCArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTEhh
c2guaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwpAQCAtNDYs
MjUgKzQ2LDI1IEBAIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtCbG9iUmVnaXN0cnkpOwog
ICAgIE5ldHdvcmtCbG9iUmVnaXN0cnkoKTsKICAgICBzdGF0aWMgTmV0d29ya0Jsb2JSZWdpc3Ry
eSYgc2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcm
IHBhdGgsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spOwot
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7Ci0gICAgdm9pZCB1bnJl
Z2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwotICAgIHVpbnQ2NF90IGJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9i
VVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqLCBjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGJv
b2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TE9wdGlvbmFsbHlGaWxlQmFja2VkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29u
c3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBVUkwmLCBjb25zdCBV
UkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOworICAgIHZvaWQgdW5yZWdp
c3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBVUkwmKTsK
KyAgICB1aW50NjRfdCBibG9iU2l6ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNv
bnN0IFVSTCYpOwogICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5n
PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgo
Y29uc3QgV2ViQ29yZTo6VVJMJiBibG9iVVJMLCBjb25zdCBTdHJpbmcmIHBhdGgsIEZ1bmN0aW9u
PHZvaWQoYm9vbCBzdWNjZXNzKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCB3cml0
ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBG
dW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAg
dm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPj4gZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25z
dCBXZWJDb3JlOjpVUkwmKTsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJsb2IoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmKTsKKyAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKGNvbnN0IFVS
TCYpOwogCiBwcml2YXRlOgogICAgIH5OZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CiAKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBIYXNoU2V0PFdlYkNv
cmU6OlVSTD4+IEJsb2JGb3JDb25uZWN0aW9uTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIEhhc2hTZXQ8VVJMPj4gQmxvYkZvckNvbm5lY3Rp
b25NYXA7CiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXAgbV9ibG9ic0ZvckNvbm5lY3Rpb247CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZDAzNzg3ZmI0YTI1ZDQ5YWVjM2VlNjc3
NWI4NzViZjhiMjAzMDM5My4uZjU4NGJjNDY2MDg1MWMwMGFmYWFiZTE1ZmJiMDk5YWEyOWE2ZGMw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTUwLDMyICsxNTAsMzIgQEAgY2xhc3Mg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHIKICAgICB2b2lkIHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNl
TG9hZElkZW50aWZpZXIpOwogICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2Vi
UGFnZUlEKTsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgYm9vbCk7Ci0gICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VM
b2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFVSTCk7CisgICAgdm9p
ZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29u
c3QgVVJMJiByZWRpcmVjdFVSTCk7CiAgICAgdm9pZCBzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lv
bklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSB7IH0pOwogICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCi0gICAgdm9pZCBjb29raWVzRm9y
RE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBz
ZWN1cmVDb29raWVzQWNjZXNzZWQpOwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJv
b2wmIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
Y29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIGJvb2wmIHJlc3VsdCk7Ci0gICAgdm9pZCBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBTdHJp
bmcmIGNvb2tpZVN0cmluZywgYm9vbCYgc2VjdXJlQ29va2llc0FjY2Vzc2VkKTsKLSAgICB2b2lk
IGdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2ll
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpOworICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgU3Ry
aW5nJiBjb29raWVTdHJpbmcsIGJvb2wmIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk7CisgICAgdm9p
ZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAotICAgIHZvaWQgcmVnaXN0
ZXJGaWxlQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29y
ZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spOworICAgIHZvaWQg
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
RnJvbVVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3ND
b25uZWN0aW9uQ2hlY2spOwogICAgIHZvaWQgcHJlcmVnaXN0ZXJTYW5kYm94RXh0ZW5zaW9uc0Zv
ck9wdGlvbmFsbHlGaWxlQmFja2VkQmxvYihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZUJhY2tl
ZFBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOwotICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGludDY0X3Qg
c3RhcnQsIGludDY0X3QgZW5kKTsKLSAgICB2b2lkIGJsb2JTaXplKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIHVpbnQ2NF90JiByZXN1bHRTaXplKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmls
ZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qg
c3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lkIGJsb2JTaXplKGNvbnN0IFVSTCYsIHVpbnQ2
NF90JiByZXN1bHRTaXplKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYp
OwogICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICB2b2lkIHN0
b3JlRGVyaXZlZERhdGFUb0NhY2hlKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhS2V5
JiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAKICAgICB2b2lkIHNldENhcHR1cmVFeHRy
YU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCk7CiAKLSAgICB2b2lkIGNyZWF0ZVNvY2tl
dFN0cmVhbShXZWJDb3JlOjpVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRp
dGlvbiwgdWludDY0X3QpOworICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6
OlNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCk7CiAgICAgdm9pZCBk
ZXN0cm95U29ja2V0U3RyZWFtKHVpbnQ2NF90KTsKICAgICAKICAgICB2b2lkIGVuc3VyZUxlZ2Fj
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDc3M2Q5ZDhlMTAzM2I2MmU0ODEzM2I5NjIwYjYyOWJmNzg4NmZl
YWQuLjllZmVhNTc1NGI0ZGNjZjYzM2IxZTQzMDRkYmEzNzQ0ZDdkYTNkYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzQsMjggKzM0LDI4IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBTdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3du
bG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJp
bmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogCi0gICAg
Q29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJz
dFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29y
ZTo6VVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlELCBlbnVtIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nl
c3NTZWN1cmVDb29raWVzKQotICAgIFNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8gc2FtZVNpdGVJbmZvLCBXZWJDb3JlOjpVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFN0cmluZyBjb29r
aWVTdHJpbmcpCisgICAgQ29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVS
TCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywg
VVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBlbnVtIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NT
ZWN1cmVDb29raWVzKQorICAgIFNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNp
dGVJbmZvLCBVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFN0cmluZyBjb29raWVTdHJpbmcpCiAgICAgQ29va2ll
c0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBlbmFibGVkKQotICAg
IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2Ft
ZVNpdGVJbmZvLCBXZWJDb3JlOjpVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGVudW0gV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3Ry
aW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpCi0gICAgR2V0UmF3Q29va2llcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
KSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykKLSAgICBEZWxldGVDb29raWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgY29va2ll
TmFtZSkKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNh
bWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9v
bCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKQorICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvb2tpZXMpCisgICAgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCiAKLSAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFdl
YkNvcmU6OlVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJs
b2JVUkwoV2ViQ29yZTo6VVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFy
dHMsIFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFdlYkNv
cmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVj
dGlvbkNoZWNrKQorICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgs
IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5n
IGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsLCBWZWN0b3I8V2ViQ29y
ZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVy
QmxvYlVSTEZyb21VUkwoVVJMIHVybCwgVVJMIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25u
ZWN0aW9uQ2hlY2spCiAgICAgUHJlcmVnaXN0ZXJTYW5kYm94RXh0ZW5zaW9uc0Zvck9wdGlvbmFs
bHlGaWxlQmFja2VkQmxvYihWZWN0b3I8U3RyaW5nPiBmaWxlUGF0aHMsIFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgZXh0ZW5zaW9uSGFuZGxlcykKLSAgICBSZWdpc3RlckJs
b2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwg
c3JjVVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBhdGgsIFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBS
ZWdpc3RlckJsb2JVUkxGb3JTbGljZShXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgc3Jj
VVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKLSAgICBVbnJlZ2lzdGVyQmxvYlVSTChX
ZWJDb3JlOjpVUkwgdXJsKQotICAgIEJsb2JTaXplKFdlYkNvcmU6OlVSTCB1cmwpIC0+ICh1aW50
NjRfdCByZXN1bHRTaXplKQorICAgIFJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KFVSTCB1cmwsIFVSTCBzcmNVUkwsIFN0cmluZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNvbnRl
bnRUeXBlKQorICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFVSTCB1cmwsIFVSTCBzcmNVUkws
IGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQorICAgIFVucmVnaXN0ZXJCbG9iVVJMKFVSTCB1
cmwpCisgICAgQmxvYlNpemUoVVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3VsdFNpemUpCiAgICAg
V3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoVmVjdG9yPFN0cmluZz4gYmxvYlVSTHMsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyKQogCiAgICAgU3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGFLZXkga2V5LCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgZGF0YSkKIAogICAgIFNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJs
ZWQoYm9vbCBlbmFibGVkKQogCi0gICAgQ3JlYXRlU29ja2V0U3RyZWFtKFdlYkNvcmU6OlVSTCB1
cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50
NjRfdCBpZGVudGlmaWVyKQorICAgIENyZWF0ZVNvY2tldFN0cmVhbShVUkwgdXJsLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRp
ZmllcikKIAogICAgIEVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKaW5kZXgg
Y2Y0ZTY0ZDUwM2YxYTllZTBiZGM1ZTBkNTI4YzQ3ZjI5NDI5YTY0MS4uMDU5YTEzMDE0M2JhNWYz
YTdlMGQxZWIxYjE0NjZmYTkxZmEwYjk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBSZXNwb25zZUNvCiAgICAgaWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAg
YXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4gcG9ydCA9IHVybC5wb3J0KCk7Ci0gICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKKyAgICAgICAgaWYg
KHBvcnQgJiYgIVdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJs
LnByb3RvY29sKCkpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rp
b246Oklnbm9yZSk7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRDb21wbGV0ZVdpdGhFcnJvcih7IFN0cmluZygpLCAwLCB1cmwsICJDYW5jZWxsZWQgbG9h
ZCBmcm9tICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVj
YXVzZSBpdCBpcyB1c2luZyBIVFRQLzAuOS4iIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggNjVlYWJiMmJmM2I1
OWQyZmQ0N2FhNDEyNjVkZmY2OTk0OGIzODBkYi4uZDczYTZlYTZmZjEyYzMwNGJmYTc0YmFiOTVi
ZTZhZWVlNjZiODk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC00OCw5ICs0OCw5IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCAxNzk3ZDdlMDI1YTA0ZGQyM2NlNDk3YzgxMWFmMjgx
YTI1OTcxMjVkLi44NDZjYjRkM2FkM2JjOTVhMGFlZTFiYmVlMDYwNmQyMzE0NWMxZjhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOwogCiBj
bGFzcyBOZXR3b3JrTG9hZENoZWNrZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya0xv
YWRDaGVja2VyPiB7CiBwdWJsaWM6Ci0gICAgTmV0d29ya0xvYWRDaGVja2VyKFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFdlYkNvcmU6OlVSTCYmLCBSZWZQdHI8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3Ry
aW5nJiYgcmVmZXJyZXIsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
ID0gZmFsc2UpOworICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnMm
JiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2Vi
Q29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiYmLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29s
IHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlKTsKICAgICB+TmV0
d29ya0xvYWRDaGVja2VyKCk7CiAKICAgICB1c2luZyBSZXF1ZXN0T3JFcnJvciA9IEV4cGVjdGVk
PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj47CkBAIC02
OSwxNCArNjksMTQgQEAgY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogCiAgICAgdm9pZCBzZXRDU1BSZXNwb25zZUhl
YWRlcnMoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiYgaGVh
ZGVycykgeyBtX2NzcFJlc3BvbnNlSGVhZGVycyA9IFdURk1vdmUoaGVhZGVycyk7IH0KICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNv
bnRyb2xsZXIoV2ViQ29yZTo6VVJMJiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCisgICAgdm9pZCBzZXRD
b250ZW50RXh0ZW5zaW9uQ29udHJvbGxlcihVUkwmJiBtYWluRG9jdW1lbnRVUkwsIHN0ZDo6b3B0
aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKICAgICB7
CiAgICAgICAgIG1fbWFpbkRvY3VtZW50VVJMID0gV1RGTW92ZShtYWluRG9jdW1lbnRVUkwpOwog
ICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOwog
ICAgIH0KICNlbmRpZgogCi0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7IH0KIAog
ICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkSW5mb3JtYXRpb24gdGFrZU5ldHdvcmtMb2FkSW5mb3Jt
YXRpb24oKSB7IHJldHVybiBXVEZNb3ZlKG1fbG9hZEluZm9ybWF0aW9uKTsgfQpAQCAtOTUsNyAr
OTUsNyBAQCBjbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
TmV0d29ya0xvYWRDaGVja2VyPiB7CiAKICAgICB2b2lkIGNvbnRpbnVlQ2hlY2tpbmdSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKIAotICAg
IGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7Cisg
ICAgYm9vbCBkb2VzTm90TmVlZENPUlNDaGVjayhjb25zdCBVUkwmKSBjb25zdDsKICAgICB2b2lk
IGNoZWNrQ09SU1JlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFZhbGlkYXRpb25I
YW5kbGVyJiYpOwogICAgIHZvaWQgY2hlY2tDT1JTUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFZhbGlkYXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgY2hlY2tD
T1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFZhbGlk
YXRpb25IYW5kbGVyJiYpOwpAQCAtMTE4LDExICsxMTgsMTEgQEAgY2xhc3MgTmV0d29ya0xvYWRD
aGVja2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogICAg
IHVpbnQ2NF90IG1fZnJhbWVJRDsKICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIG1fb3JpZ2lu
YWxSZXF1ZXN0SGVhZGVyczsgLy8gTmVlZGVkIGZvciBDT1JTIGNoZWNrcy4KICAgICBXZWJDb3Jl
OjpIVFRQSGVhZGVyTWFwIG1fZmlyc3RSZXF1ZXN0SGVhZGVyczsgLy8gTmVlZGVkIGZvciBDT1JT
IGNoZWNrcy4KLSAgICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IG1fY3NwUmVz
cG9uc2VIZWFkZXJzOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgV2ViQ29y
ZTo6VVJMIG1fbWFpbkRvY3VtZW50VVJMOworICAgIFVSTCBtX21haW5Eb2N1bWVudFVSTDsKICAg
ICBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IG1fdXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgogCkBAIC0xMzEsNyArMTMxLDcgQEAg
Y2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtM
b2FkQ2hlY2tlcj4gewogICAgIGJvb2wgbV9pc1NpbXBsZVJlcXVlc3QgeyB0cnVlIH07CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50
U2VjdXJpdHlQb2xpY3k7CiAgICAgc2l6ZV90IG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKLSAgICBX
ZWJDb3JlOjpVUkwgbV9wcmV2aW91c1VSTDsKKyAgICBVUkwgbV9wcmV2aW91c1VSTDsKICAgICBX
ZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3kgbV9wcmVmbGlnaHRQb2xpY3k7CiAgICAgU3RyaW5nIG1f
ZG50SGVhZGVyVmFsdWU7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGViODg2NjQ4MTM5Y2M3
Yjc1OWU3MmM2ODE4MjgwYjVkMDQ3MTA5ZTAuLjA2YzFiM2FkNGVhZTRjZDdkNDJkMjkwNDQ1NTI4
YTk5NGNjYTkxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC03NiwxMyArNzYsMTMgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFy
c2VyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0
aG1zLmg+CiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IApAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZUZvcldyaXRpbmcs
IHVpbnQ2NF90IHJlcXVlc3RJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndyaXRlQmxvYlRvRmls
ZVBhdGgoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYgaGFuZGxlRm9yV3JpdGluZywgdWludDY0X3QgcmVxdWVzdElEKQogewogICAg
IGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoaGFuZGxl
Rm9yV3JpdGluZykpOwogICAgIGlmICghZXh0ZW5zaW9uKSB7CkBAIC0xMDA4LDcgKzEwMDgsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0XwogICAgICAgICBjYWxsYmFjayhTdHJpbmcgeyBjYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkgfSwgcXVvdGEpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpw
cmVjb25uZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJlY29ubmVjdFRvKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkKIHsKICNpZiBFTkFCTEUoU0VSVkVSX1BS
RUNPTk5FQ1QpCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZmIzNzczZDFl
ZmUxZDM0MjE2ZDZhZWZjZTQ4NTNlYzc4OTlkYTU0Yy4uYWFhZGIxMzNjNzlmZmExMWMwY2Y2ODIz
MDJlN2JkMGEwZTYxZDNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaApAQCAtNjUsNyArNjUsNiBAQCBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgU1dTZXJ2ZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKLWNsYXNzIFVSTDsKIGVudW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiBzdHJ1
Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwpA
QCAtMTcyLDcgKzE3MSw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzIDogcHVibGljIENoaWxkUHJv
Y2VzcywgcHJpdmF0ZSBEb3dubG9hZE1hbmFnZXI6OkNsaWVudAogICAgIHVzaW5nIENhY2hlU3Rv
cmFnZVBhcmFtZXRlcnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QgcXVvdGEpPjsKICAgICB2b2lkIGNhY2hlU3RvcmFnZVBhcmFtZXRlcnMo
UEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFjayYmKTsKIAotICAg
IHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5KTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBVUkwmLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBib29sIHNob3VsZExv
Z0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2dDb29raWVJbmZvcm1hdGlv
bjsgfQpAQCAtMjkzLDcgKzI5Miw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzIDogcHVibGljIENo
aWxkUHJvY2VzcywgcHJpdmF0ZSBEb3dubG9hZE1hbmFnZXI6OkNsaWVudAogICAgIHZvaWQgc3lu
Y0FsbENvb2tpZXMoKTsKICAgICB2b2lkIGRpZFN5bmNBbGxDb29raWVzKCk7CiAKLSAgICB2b2lk
IHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBw
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgdWludDY0X3QgcmVxdWVzdElEKTsKKyAg
ICB2b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgdWludDY0X3QgcmVxdWVzdElEKTsKIAogI2lm
IFVTRShTT1VQKQogICAgIHZvaWQgc2V0SWdub3JlVExTRXJyb3JzKGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KaW5kZXggYWM3M2JlZDQyZTJkNDVhN2NlOGMxZmM0NGIzYzc2ZjJiYjJhOWViZS4uNzhmOWNi
Mjk4NmQzMDRjNWIwMmVmODM1YjcxOTcyMGM0MzBlMjNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03
Nyw5ICs3Nyw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBEaWRHZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyh1aW50NjRfdCByZXF1ZXN0
SUQsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgZXh0ZW5zaW9ucykKICNl
bmRpZgogCi0gICAgV3JpdGVCbG9iVG9GaWxlUGF0aChXZWJDb3JlOjpVUkwgYmxvYlVSTCwgU3Ry
aW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKKyAgICBXcml0ZUJsb2JUb0ZpbGVQYXRoKFVSTCBibG9iVVJMLCBTdHJp
bmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlLCB1aW50NjRf
dCBjYWxsYmFja0lEKQogCi0gICAgUHJlY29ubmVjdFRvKFdlYkNvcmU6OlVSTCB1cmwsIGVudW0g
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kp
OworICAgIFByZWNvbm5lY3RUbyhVUkwgdXJsLCBlbnVtIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKIAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29r
aWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1Rv
QmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCwgdWludDY0X3QgY29udGV4dElkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oCmluZGV4IGQ2MzczOGFlZWM4YTM1MzVkMDk2MTAzNjllNzg2NDkxYjFl
OWQyZjkuLjI3NDNlMTI5Yzg3OWY2YjBjMjVjMjExYmEwMDg5Mzk3OGEzYTBiYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMgOiBwdWJsaWMgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHsKICAgICBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gZnJhbWVBbmNlc3Rvck9yaWdpbnM7
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIFdlYkNvcmU6OlVSTCBtYWlu
RG9jdW1lbnRVUkw7CisgICAgVVJMIG1haW5Eb2N1bWVudFVSTDsKICAgICBzdGQ6Om9wdGlvbmFs
PFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXI7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZDFjNjg4OWVhNjQ4Y2NhY2Yw
OGFjMTRiZTdiNmM1MmNhM2IwM2QzNi4uNDNhZWQ1NDZkZWY2MGU4YWRjY2VmYzEzOWE3MmY4NmFm
Zjc1ZGY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTc2LDcgKzk3Niw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0CiAgICAgbG9nQ29va2ll
SW5mb3JtYXRpb24oIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3Qo
KS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJl
cXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRw
UmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgaWRlbnRpZmllcigpKTsKIH0KIAotc3Rh
dGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYgbGFiZWws
IGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRp
b24oY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKTsKIApAQCAtMTAwMyw3ICsxMDAzLDcg
QEAgc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE8KICN1bmRlZiBMT0NBTF9MT0dfSUZfQUxMT1dFRAog
fQogCi1zdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dDb29r
aWVJbmZvcm1hdGlvbkludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxv
Z2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRp
b24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGFmYjBlOWM3OTU2NjNlYWIwNWVjNGFmNGYzODI1NGI3N2Zh
ZWMxZGEuLmY4NzRmOGRiYTZlOWM1ZTU2MTBmNzM0ZDM0Y2Q0NzYwMWIwNGE4ODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKTsKLSAg
ICBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMg
dm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lk
KiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBpZGVudGlmaWVyKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTM0LDcgKzEzNCw3IEBA
IGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogICAgIHZvaWQgZGlzcGF0Y2hXaWxs
U2VuZFJlcXVlc3RGb3JDYWNoZUVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4mJik7CiAgICAgdm9pZCBjb250aW51ZVBy
b2Nlc3NpbmdDYWNoZWRFbnRyeUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrQ2FjaGU6OkVudHJ5Pik7CiAKLSAgICBib29sIHNob3VsZEludGVycnVwdExvYWRG
b3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAg
IGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiwg
Y29uc3QgVVJMJik7CiAgICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNl
c3RvcnNPclhGcmFtZU9wdGlvbnMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwog
CiAgICAgZW51bSBjbGFzcyBGaXJzdExvYWQgeyBObywgWWVzIH07CkBAIC0xNjksNyArMTY5LDcg
QEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyIGZpbmFsCiAKICAgICAvLyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lDbGllbnQKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbG9uZykgZmluYWw7Ci0g
ICAgdm9pZCBzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KFdlYkNvcmU6OlVSTCYmLCBSZWY8V2ViQ29y
ZTo6Rm9ybURhdGE+JiYpIGZpbmFsOworICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydChV
UkwmJiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGVucXVldWVT
ZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5VmlvbGF0
aW9uRXZlbnQ6OkluaXQmJikgZmluYWw7CiAKICAgICB2b2lkIGxvZ1Nsb3dDYWNoZVJldHJpZXZl
SWZOZWVkZWQoY29uc3QgTmV0d29ya0NhY2hlOjpDYWNoZTo6UmV0cmlldmVJbmZvJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0u
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNw
cAppbmRleCA0MmQzNmJjNGNjM2ZlNDMyZjM1MjRjODNiMGM5Zjg4NGU4ZDc0NDNjLi5jNWE2MmM2
OGZlOWRhNjU2ZTQyMzNmYmQxMzY5YTJjNjYxZTI5YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJl
ZjxOZXR3b3JrU29ja2V0U3RyZWFtPiBOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUoV2ViQ29y
ZTo6VVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpCitSZWY8
TmV0d29ya1NvY2tldFN0cmVhbT4gTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFVSTCYmIHVy
bCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0
aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE5ldHdvcmtTb2NrZXRTdHJlYW0oV1RGTW92ZSh1cmwpLCBzZXNzaW9uSUQs
IGNyZWRlbnRpYWxQYXJ0aXRpb24sIGlkZW50aWZpZXIsIGNvbm5lY3Rpb24sIFdURk1vdmUoYXVk
aXREYXRhKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRTdHJlYW0uaAppbmRleCA5MDZlNThlYmY1NzQyNWQ2ODM3NzA4OTE2ODVmZGFiZDJh
ODM3YmM4Li4zMjY4NzE2ZjQ0NjljMDk5M2YyNTk3ZDA5Y2JlMTU4OGU2ZjIzYTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaApA
QCAtMzksMTQgKzM5LDEzIEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGw7Ci1jbGFzcyBVUkw7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtIDogcHVibGljIFJl
ZkNvdW50ZWQ8TmV0d29ya1NvY2tldFN0cmVhbT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIs
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrU29ja2V0U3Ry
ZWFtPiBjcmVhdGUoV2ViQ29yZTo6VVJMJiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90LCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3Jl
OjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7CisgICAgc3RhdGljIFJlZjxOZXR3b3Jr
U29ja2V0U3RyZWFtPiBjcmVhdGUoVVJMJiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90LCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3Jl
OjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7CiAgICAgfk5ldHdvcmtTb2NrZXRTdHJl
YW0oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CkBAIC02Nyw3ICs2Niw3IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW0g
OiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrU29ja2V0U3RyZWFtPiwgcHVibGljIElQQzo6CiAg
ICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAg
IHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CiAKLSAgICBOZXR3
b3JrU29ja2V0U3RyZWFtKFdlYkNvcmU6OlVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2Vi
Q29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIE5ldHdvcmtTb2NrZXRT
dHJlYW0oVVJMJiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0
aXRpb24sIHVpbnQ2NF90LCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTb3VyY2VBcHBsaWNh
dGlvbkF1ZGl0VG9rZW4mJik7CiAKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgSVBD
OjpDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmgKaW5kZXggOWYwYzZiODZiNDIwZjQ1NWJmZmMyZGU2Yjk0ZWJlN2M4YmUxNDNhMC4u
ZDQ1NDNmMjM1YjkwNDdjNTcwOWM4MWZmZGEzODYxYzU5Zjc4NDI0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtMzYsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5OwogY2xhc3MgSFRUUEhlYWRlck1h
cDsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MSw3ICs1MCw3IEBA
IGNsYXNzIFBpbmdMb2FkIGZpbmFsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBpbmdMb2FkPiwg
cHJpdmF0ZSBOZXR3b3JrRGF0YVRhc2tDCiBwcml2YXRlOgogICAgIH5QaW5nTG9hZCgpOwogCi0g
ICAgY29uc3QgV2ViQ29yZTo6VVJMJiBjdXJyZW50VVJMKCkgY29uc3Q7CisgICAgY29uc3QgVVJM
JiBjdXJyZW50VVJMKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
KiBjb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdDsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCAyY2E2NjI1ZDFjMDBlNmQyN2Q1MjU4
ODYxNzIxZmNjNTBiNTM0YjU1Li45ZDE3MDM3ODk0ZjViNTExMDM4ZGUwNmJhZDA5ZGQ3ZjYzNGM3
ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC05MCw4ICs5MCw4
IEBAIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZl
cjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6CiAgICAgdm9pZCBzdGFydEZldGNoKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMm
JiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmLCBTdHJpbmcmJiByZWZlcnJlcik7CiAgICAgdm9p
ZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKIAotICAgIHZvaWQgbWF0Y2hSZWdpc3RyYXRp
b24odWludDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Y2xpZW50VVJMKTsKLSAgICB2b2lkIGdldFJlZ2lzdHJhdGlvbnModWludDY0X3QgcmVnaXN0cmF0
aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMKTsKKyAgICB2b2lk
IG1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25z
dCBVUkwmIGNsaWVudFVSTCk7CisgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJl
Z2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCk7CiAKICAgICB2b2lk
IHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiB0b3BPcmlnaW4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+
Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggMDYxOTViOGFkMTk0NjE4Y2Rm
ZjZmZmU5ZDU3NWU5ZjNhNDQ0YTdlZC4uMjk0YmQ1OTlkNDBiY2MyMTE4NGQ5N2Q3YWQ1MGNiYzhj
MzAxYTI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCkBAIC0zNiw5ICszNiw5IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVj
dGlvbiB7CiAKICAgICBEaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IGtleSkKIAotICAgIE1hdGNoUmVnaXN0cmF0aW9uKHVp
bnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVu
dFVSTCkKLSAgICBXaGVuUmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3Qgc2VydmljZVJlZ2lzdHJh
dGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgdG9wT3JpZ2luLCBXZWJDb3JlOjpVUkwgY2xpZW50VVJMKQotICAgIEdldFJlZ2lzdHJh
dGlvbnModWludDY0X3Qgc2VydmljZVJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIs
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luLCBXZWJDb3JlOjpV
UkwgY2xpZW50VVJMKQorICAgIE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHNlcnZpY2VSZWdp
c3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKKyAgICBXaGVuUmVnaXN0cmF0aW9u
UmVhZHkodWludDY0X3Qgc2VydmljZVJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIs
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luLCBVUkwgY2xpZW50
VVJMKQorICAgIEdldFJlZ2lzdHJhdGlvbnModWludDY0X3Qgc2VydmljZVJlZ2lzdHJhdGlvbk1h
dGNoUmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
dG9wT3JpZ2luLCBVUkwgY2xpZW50VVJMKQogICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dChzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgc3RydWN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhIGRhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IGNvbnRyb2xsaW5nU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiAgICAgVW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGQ4NmFiNjA5Mzk3NzY1YzViYmZhNzkz
NTRhMTE1YjdjNzQ5MWQyN2UuLjYxMTY5MmQxOTQ5OTcyZmViMWUzY2U4NWI4OGI4NTg1NTlmZTY0
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzUsNyArMzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gewogICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXIo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcik7CiAgICAgTWF0Y2hBbGwodWludDY0
X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKHVpbnQ2NF90IGNsYWlt
UmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwgc2NyaXB0VVJMLCBT
dHJpbmcgc2NyaXB0LCBXZWJDb3JlOjpVUkwgcmVzcG9uc2VVUkwsIFN0cmluZyBtaW1lVHlwZSk7
CisgICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgVVJMIHJlc3BvbnNlVVJM
LCBTdHJpbmcgbWltZVR5cGUpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IDU1YTA4YmMwOGMwOGQxZDhhOGFjODYyMjhkZjY1MDFh
OTE1OWE4N2EuLmIxOWJmZDEwMDU3MjY3NjQyMTY3MDBmNWIzODRjNmJlZWYxNDMwM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVD
YWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBv
cgogfQogCiAKLXZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCwgV2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBF
bmdpbmU6OnJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVj
b3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgZnJvbShzZXNzaW9uSUQsIFtjYWNoZUlk
ZW50aWZpZXIsIHVybCA9IFdURk1vdmUodXJsKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKICAgICAgICAgZW5naW5lLnJldHJpZXZlUmVjb3Jk
cyhjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAt
MjQ3LDcgKzI0Nyw3IEBAIHZvaWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlCiAgICAgfSk7CiB9CiAKLXZv
aWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpVUkwmJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6
OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCwgUmVj
b3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgcmVhZENhY2hlKGNhY2hlSWRlbnRpZmll
ciwgW3VybCA9IFdURk1vdmUodXJsKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2Fj
aGVPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3Zh
bHVlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IDhjMmU4Y2NlMTRkODEyOTA5N2Y3MWFjMjFlMjZl
MzYxZmQ2ZDY4MzMuLjdlMTQyMjViZWU1MGE5NzdiNWZjOTI1MTQ2NTQ2N2JiMzRkODM1MjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmUuaApAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBFbmdpbmUgOiBwdWJsaWMgUmVm
Q291bnRlZDxFbmdpbmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RW5naW5lPiB7CiAgICAgc3Rh
dGljIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKICAg
ICBzdGF0aWMgdm9pZCByZXRyaWV2ZUNhY2hlcyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CiAKLSAgICBzdGF0aWMgdm9pZCByZXRyaWV2ZVJl
Y29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6
VVJMJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAg
c3RhdGljIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxi
YWNrJiYpOwogICAgIHN0YXRpYyB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNv
cmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNr
JiYpOwogICAgIHN0YXRpYyB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBjbGFzcyBF
bmdpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxFbmdpbmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
RW5naW5lPiB7CiAgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2Fs
bGJhY2smJik7CiAgICAgU3RyaW5nIHJlcHJlc2VudGF0aW9uKCk7CiAKLSAgICB2b2lkIHJldHJp
ZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOworICAgIHZvaWQgcmV0cmll
dmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMJiYsIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBwdXRSZWNvcmRzKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNv
cmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNr
JiYpOwogICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRp
b25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNr
JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKaW5kZXggN2ZiNmUwODE4ZWMyNDE1OTVmODJj
Njc3MmM4NGI1ZTMyMGNmNzYxNS4uODk4MDE4ZTRlYTM3ZmIxMmZiNjMyYjE5MmZlOGFlYTFjNzE0
NjU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaApAQCAtNDUsNyArNDUsNyBAQCBzdHJ1Y3Qg
UmVjb3JkSW5mb3JtYXRpb24gewogCiAgICAgdWludDY0X3Qgc2l6ZSB7IDAgfTsKIAotICAgIFdl
YkNvcmU6OlVSTCB1cmw7CisgICAgVVJMIHVybDsKICAgICBib29sIGhhc1ZhcnlTdGFyIHsgZmFs
c2UgfTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB2YXJ5SGVhZGVyczsKIH07CkBAIC02
Niw3ICs2Niw3IEBAIGNsYXNzIENhY2hlIHsKICAgICBjb25zdCBTdHJpbmcmIHVuaXF1ZU5hbWUo
KSBjb25zdCB7IHJldHVybiBtX3VuaXF1ZU5hbWU7IH0KICAgICBib29sIGlzQWN0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6VW5pbml0aWFsaXplZDsgfQogCi0gICAgdm9p
ZCByZXRyaWV2ZVJlY29yZHMoY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyhjb25z
dCBVUkwmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwogICAg
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8gaW5mbygpIGNvbnN0IHsgcmV0dXJu
IHsgbV9pZGVudGlmaWVyLCBtX25hbWUgfTsgfQogCiAgICAgdm9pZCBwdXQoVmVjdG9yPFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpS
ZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwpAQCAtOTQsOCArOTQsOCBAQCBjbGFzcyBDYWNo
ZSB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGVjb2RlZFJlY29yZD4gZGVjb2RlUmVjb3Jk
SGVhZGVyKGNvbnN0IE5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6UmVjb3JkJik7CiAKIHByaXZhdGU6
Ci0gICAgVmVjdG9yPFJlY29yZEluZm9ybWF0aW9uPiogcmVjb3Jkc0Zyb21VUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJik7Ci0gICAgY29uc3QgVmVjdG9yPFJlY29yZEluZm9ybWF0aW9uPiogcmVjb3Jk
c0Zyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgVmVjdG9yPFJlY29yZElu
Zm9ybWF0aW9uPiogcmVjb3Jkc0Zyb21VUkwoY29uc3QgVVJMJik7CisgICAgY29uc3QgVmVjdG9y
PFJlY29yZEluZm9ybWF0aW9uPiogcmVjb3Jkc0Zyb21VUkwoY29uc3QgVVJMJikgY29uc3Q7CiAg
ICAgUmVjb3JkSW5mb3JtYXRpb24mIGFkZFJlY29yZChWZWN0b3I8UmVjb3JkSW5mb3JtYXRpb24+
KiwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZCYpOwogCiAgICAgdm9pZCBz
dG9yZVJlY29yZHMoVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKaW5kZXggMjliMzhiMWEyZTNlYmI0MTE3
NzJhMmFlYWFiZGNlZmIzY2Q0ZGU3My4uYzYyY2IzYWI4NTc0OGE1YjBjODllNTdiMTVjZjFjMDU2
ZDg3MTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCkBAIC04OSw3
ICs4OSw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2FjaGVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxCiAgICAgfSk7CiB9CiAKLXZvaWQgQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsKQordm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiB1cmwp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVSZWNvcmRzICglIiBQUkl1
NjQgIikgaW4gY2FjaGUgJSIgUFJJdTY0LCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlm
aWVyKTsKICAgICBFbmdpbmU6OnJldHJpZXZlUmVjb3JkcyhzZXNzaW9uSUQsIGNhY2hlSWRlbnRp
ZmllciwgV1RGTW92ZSh1cmwpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNv
bm5lY3Rpb24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZHNPckVycm9y
JiYgcmVzdWx0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCmluZGV4IGJjODgw
ZjVlYjU4OWFlZGNmZWU0NWEyMzQxODM4YjI1M2RiYTYxMDQuLjZhM2RkYzYzZDJhMDg4NWNhNGM1
MTQyNWU1NmMzYTVjYzk2ODNhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5o
CkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0CiAgICAgdm9pZCByZW1v
dmUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlbW92ZVJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2FjaGVzKFBBTDo6U2Vzc2lvbklELCB1
aW50NjRfdCByZXRyaWV2ZUNhY2hlc0lkZW50aWZpZXIsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
LCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKTsKIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBB
TDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJik7CisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHMoUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFVSTCYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRp
b25zJiYpOwogICAgIHZvaWQgcHV0UmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZTMxMDdlMjAxNDZkNTkwMDNiMjA2YjFk
ZWRmNmY4NjNjYjhjNTVlZS4uNjBlMzlhYTJjNDA1ZGNjOThhYWE5MjAwOTRhZTEwZDhlYWI1NDNj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgpAQCAtMzEsNyArMzEsNyBAQCBtZXNzYWdlcyAtPiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uIHsKICAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4gb3JpZ2luKTsKICAgICBFbmdpbmVSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyKTsKIAotICAgIFJldHJpZXZlUmVj
b3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCB1cmwpOworICAgIFJldHJp
ZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCB1cmwpOwogICAgIERlbGV0ZU1h
dGNoaW5nUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMgb3B0aW9ucyk7
CiAgICAgUHV0UmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPiByZWNvcmQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggZjE1YWQ2YmQwYWRjOGM3
MzU4YzFhOTQ5OTgwZDg0MDllNjI4MzNhNC4uMDE3YWQ2M2UyYzllYjczMzQ1YzU3NjFkOWFhNDdi
ZGZmNjllMzNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oCkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIExvd1Bvd2VyTW9kZU5vdGlmaWVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0YXRpc3RpY3MuY3BwCmluZGV4IGExNTVlOWYyZTNhZTEzODE0NDNhNGEwY2UwYjI0MDc1
N2U0YTY5ZWIuLmQwNjZhODk1Yjk0MDU4MWRlYThjYzEzYmE0NDIzNDU3OWU1NmRlNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcApAQCAtMjk0LDcgKzI5NCw3IEBAIHN0YXRpYyBTdHJpbmcg
Y2FjaGVkRW50cnlSZXVzZUZhaWx1cmVUb0RpYWdub3N0aWNLZXkoVXNlRGVjaXNpb24gZGVjaXNp
b24pCiAKIHZvaWQgU3RhdGlzdGljczo6cmVjb3JkUmV0cmlldmVkQ2FjaGVkRW50cnkodWludDY0
X3Qgd2ViUGFnZUlELCBjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBVc2VEZWNpc2lvbiBkZWNpc2lvbikKIHsKLSAgICBXZWJDb3JlOjpVUkwg
cmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7CisgICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0
LnVybCgpOwogICAgIGlmIChkZWNpc2lvbiA9PSBVc2VEZWNpc2lvbjo6VXNlKSB7CiAgICAgICAg
IExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIHdlYlBhZ2VJRCAlIiBQUkl1NjQg
IjogJXMgaXMgaW4gdGhlIGNhY2hlIGFuZCBpcyB1c2VkIiwgd2ViUGFnZUlELCByZXF1ZXN0VVJM
LnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmds
ZXRvbigpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh3ZWJQYWdlSUQsIFdlYkNvcmU6
OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29ya0NhY2hlS2V5KCksIFdlYkNvcmU6OkRpYWdu
b3N0aWNMb2dnaW5nS2V5czo6cmV0cmlldmFsS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dn
aW5nUmVzdWx0UGFzcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZZXMpOwpAQCAtMzE0LDcgKzMx
NCw3IEBAIHZvaWQgU3RhdGlzdGljczo6cmVjb3JkUmV0cmlldmVkQ2FjaGVkRW50cnkodWludDY0
X3Qgd2ViUGFnZUlELCBjb25zdCBLZXkmIGtleSwKIAogdm9pZCBTdGF0aXN0aWNzOjpyZWNvcmRS
ZXZhbGlkYXRpb25TdWNjZXNzKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBXZWJDb3JlOjpV
UkwgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7CisgICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1
ZXN0LnVybCgpOwogICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIHdlYlBh
Z2VJRCAlIiBQUkl1NjQgIjogJXMgd2FzIHN1Y2Nlc3NmdWxseSByZXZhbGlkYXRlZCIsIHdlYlBh
Z2VJRCwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICBOZXR3b3Jr
UHJvY2Vzczo6c2luZ2xldG9uKCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHdlYlBh
Z2VJRCwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpuZXR3b3JrQ2FjaGVLZXkoKSwg
V2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXZhbGlkYXRpbmdLZXkoKSwgV2ViQ29y
ZTo6RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRQYXNzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Olll
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKaW5kZXggZWYyNTJhMWM3Yjlj
NmJkNTY4MDk3MzBjMmQwNDkzMzUzMWYwNGM5Yi4uNDM5MjFhMDAyNGU5N2RkMzZmMGQyMjE4NTFl
YzRhZTk4NzYxYTE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaApAQCAt
MjMsMTUgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeV9oCi0jZGVmaW5lIE5ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5X2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKE5F
VFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogCiAjaW5jbHVkZSAiTmV0d29y
a0NhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0Nh
Y2hlIHsKQEAgLTUwLDcgKzQ5LDcgQEAgY2xhc3MgU3VicmVzb3VyY2VJbmZvIHsKICAgICBXYWxs
VGltZSBmaXJzdFNlZW4oKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0U2VlbjsgfQogCiAgICAgYm9v
bCBpc1RyYW5zaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUcmFuc2llbnQ7IH0KLSAgICBjb25z
dCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QgeyBBU1NFUlQoIW1f
aXNUcmFuc2llbnQpOyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQorICAgIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSBjb25zdCB7IEFTU0VSVCghbV9pc1RyYW5zaWVu
dCk7IHJldHVybiBtX2ZpcnN0UGFydHlGb3JDb29raWVzOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6
SFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMoKSBjb25zdCB7IEFTU0VSVCghbV9pc1RyYW5z
aWVudCk7IHJldHVybiBtX3JlcXVlc3RIZWFkZXJzOyB9CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkUHJpb3JpdHkgcHJpb3JpdHkoKSBjb25zdCB7IEFTU0VSVCghbV9pc1RyYW5zaWVudCk7IHJl
dHVybiBtX3ByaW9yaXR5OyB9CiAKQEAgLTY1LDcgKzY0LDcgQEAgY2xhc3MgU3VicmVzb3VyY2VJ
bmZvIHsKICAgICBXYWxsVGltZSBtX2ZpcnN0U2VlbjsKICAgICBib29sIG1faXNUcmFuc2llbnQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1NhbWVTaXRlIHsgZmFsc2UgfTsKLSAgICBXZWJDb3Jl
OjpVUkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsKKyAgICBVUkwgbV9maXJzdFBhcnR5Rm9yQ29v
a2llczsKICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRlcnM7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9wcmlvcml0eTsKIH07CkBAIC0xMDcsNCAr
MTA2LDMgQEAgY2xhc3MgU3VicmVzb3VyY2VzRW50cnkgewogfSAvLyBuYW1lc3BhY2UgTmV0d29y
a0NhY2hlCiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZB
TElEQVRJT04pCi0jZW5kaWYgLy8gTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnlfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0
dXJlRXZlbnQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlRXZlbnQuY3BwCmluZGV4IDk2NjE2OGI0ZTA3ODEyNDhlNTU2ODFmZjRiNzc3ZTZl
MTYwMzA5NDUuLmIxYzBmYjExMWJkNWJkNjExNDg5OThiNGI5N2E3ZjBmM2UzY2ExNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVy
ZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0
d29ya0NhcHR1cmVFdmVudC5jcHAKQEAgLTM2LDkgKzM2LDkgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYv
QnJpZ2FuZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04MSw4ICs4MSw3IEBAIFJlcXVl
c3Q6OlJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogCiBS
ZXF1ZXN0OjpvcGVyYXRvciBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoKSBjb25zdAogewotICAg
IFdlYkNvcmU6OlVSTFBhcnNlciBwYXJzZXIodXJsKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdChwYXJzZXIucmVzdWx0KCksIHJlZmVycmVyLCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4ocG9saWN5KSk7CisgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoVVJMKHsgfSwgdXJsKSwgcmVmZXJyZXIsIHN0YXRpY19j
YXN0PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5Pihwb2xpY3kpKTsKICAgICBy
ZXF1ZXN0LnNldEhUVFBNZXRob2QobWV0aG9kKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgaGVh
ZGVyIDogaGVhZGVycykKQEAgLTExOCw4ICsxMTcsNyBAQCBSZXNwb25zZTo6UmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKIFJlc3BvbnNlOjpvcGVy
YXRvciBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3QKIHsKLSAgICBXZWJDb3JlOjpV
UkxQYXJzZXIgcGFyc2VyKHVybCk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZShwYXJzZXIucmVzdWx0KCksIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29k
aW5nTmFtZSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoeyB9
LCB1cmwpLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUpOwogICAg
IHJlc3BvbnNlLnNldEhUVFBWZXJzaW9uKHZlcnNpb24pOwogICAgIHJlc3BvbnNlLnNldEhUVFBT
dGF0dXNDb2RlKHN0YXR1cyk7CiAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQocmVhc29u
KTsKQEAgLTE1Miw4ICsxNTAsNyBAQCBFcnJvcjo6RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiAKIEVycm9yOjpvcGVyYXRvciBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
KCkgY29uc3QKIHsKLSAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKGZhaWxpbmdVUkwpOwot
ICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IoZG9tYWluLCBlcnJvckNvZGUsIHBhcnNl
ci5yZXN1bHQoKSwgbG9jYWxpemVkRGVzY3JpcHRpb24sIHN0YXRpY19jYXN0PFdlYkNvcmU6OlJl
c291cmNlRXJyb3I6OlR5cGU+KHR5cGUpKTsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBVUkwoeyB9LCBmYWlsaW5nVVJMKSwgbG9jYWxpemVkRGVz
Y3JpcHRpb24sIHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU+KHR5cGUp
KTsKIAogICAgIHJldHVybiBlcnJvcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAKaW5k
ZXggMjc2ODllZTNiNzIzOThkODUxMjBmNzM2MzU3YzAwNzI0MjI4OWU4ZS4uZDU2NWE0ZWEzNzcx
ZTQ2Mzc5NzNmNzE5Y2ExOThhMjhjNTU3ZTBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5j
cHAKQEAgLTMxLDEyICszMSwxMiBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYXB0dXJlTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgogI2luY2x1ZGUgPGl0ZXJhdG9yPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNs
dWRlIDx3dGYvTUQ1Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIFJlc291cmNlKiBN
YW5hZ2VyOjpmaW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogCiAgICAgUmVzb3VyY2UqIGJlc3RNYXRjaCA9IG51bGxwdHI7CiAgICAgaW50
IGJlc3RTY29yZSA9IGtNaW5NYXRjaDsKLSAgICBjb25zdCBhdXRvJiByZXF1ZXN0UGFyYW1ldGVy
cyA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybSh1cmwucXVlcnkoKSk7
CisgICAgY29uc3QgYXV0byYgcmVxdWVzdFBhcmFtZXRlcnMgPSBXVEY6OlVSTFBhcnNlcjo6cGFy
c2VVUkxFbmNvZGVkRm9ybSh1cmwucXVlcnkoKSk7CiAgICAgZm9yIChhdXRvIGlSZXNvdXJjZSA9
IGxvd2VyOyBpUmVzb3VyY2UgIT0gdXBwZXI7ICsraVJlc291cmNlKSB7CiAgICAgICAgIGludCB0
aGlzU2NvcmUgPSBmdXp6eU1hdGNoVVJMcyh1cmwsIHJlcXVlc3RQYXJhbWV0ZXJzLCBpUmVzb3Vy
Y2UtPnVybCgpLCBpUmVzb3VyY2UtPnF1ZXJ5UGFyYW1ldGVycygpKTsKICAgICAgICAgLy8gVE9E
TzogQ29uc2lkZXIgaWdub3JpbmcgYW55IG1hdGNoZXMgPCAwIGFzIGJlaW5nIHRvbyBkaWZmZXJl
bnQuCkBAIC0xNjUsNyArMTY1LDcgQEAgUmVzb3VyY2UqIE1hbmFnZXI6OmZpbmRCZXN0RnV6enlN
YXRjaChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAvLyBUT0RPOiBD
b252ZXJ0IHRvIGFuIGludGVyZmFjZSBiYXNlZCBvbiBSZXNvdXJjZVJlcXVlc3Qgc28gdGhhdCB3
ZSBjYW4gZG8KIC8vIGRlZXBlciBtYXRjaGluZy4KIAotaW50IE1hbmFnZXI6OmZ1enp5TWF0Y2hV
UkxzKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMUGFy
c2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVxdWVzdFBhcmFtZXRlcnMsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgcmVzb3VyY2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0m
IHJlc291cmNlUGFyYW1ldGVycykKK2ludCBNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyhjb25zdCBV
UkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdURjo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVx
dWVzdFBhcmFtZXRlcnMsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwsIGNvbnN0IFdURjo6VVJMUGFy
c2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVzb3VyY2VQYXJhbWV0ZXJzKQogewogICAgIC8vIFRPRE86
IGNvbnNpZGVyIHJlcXVpcmluZyB0aGF0IGFueSB0cmFpbGluZyBzdWZmaXhlcyAoZS5nLiwgIi5q
cyIsCiAgICAgLy8gIi5wbmciLCAiLmNzcyIsICIuaHRtbCIsIGV0Yy4pIHNob3VsZCBiZSBhbiBl
eGFjdCBtYXRjaC4KQEAgLTQxOSw3ICs0MTksNyBAQCBTdHJpbmcgTWFuYWdlcjo6aGFzaFRvUGF0
aChjb25zdCBTdHJpbmcmIGhhc2gpCiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKLVN0cmluZyBNYW5h
Z2VyOjp1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbihjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkK
K1N0cmluZyBNYW5hZ2VyOjp1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbihjb25zdCBVUkwmIHVy
bCkKIHsKICAgICByZXR1cm4gdXJsLnByb3RvY29sSG9zdEFuZFBvcnQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2Fw
dHVyZU1hbmFnZXIuaAppbmRleCAzYzZiNTAxMGRhMjM0MWU2ODJjYjFjYTI0MDFhMDY2MGYzOWM3
NDFhLi5jMzY4MTZjOWE4OWExYzdlZmFkMTA0ZjFiMDM5MDg4MzZkY2E3ZjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtD
YXB0dXJlTWFuYWdlci5oCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUg
PHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTgyLDcgKzgyLDcgQEAgY2xhc3MgTWFuYWdlciB7CiAg
ICAgV2ViQ29yZTo6RmlsZUhhbmRsZSBvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYsIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSk7CiAKICAgICBTdHJpbmcgcmVxdWVzdFRvUGF0
aChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBzdGF0aWMgU3RyaW5nIHVy
bElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHN0YXRp
YyBTdHJpbmcgdXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgVVJMJik7CiAKIHByaXZh
dGU6CiAgICAgTWFuYWdlcigpID0gZGVmYXVsdDsKQEAgLTkwLDcgKzkwLDcgQEAgY2xhc3MgTWFu
YWdlciB7CiAKICAgICBSZXNvdXJjZSogZmluZEV4YWN0TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgUmVzb3VyY2UqIGZpbmRCZXN0RnV6enlNYXRjaChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBpbnQgZnV6enlNYXRjaFVSTHMoY29uc3Qg
V2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVu
Y29kZWRGb3JtJiByZXF1ZXN0UGFyYW1ldGVycywgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNvdXJj
ZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVzb3VyY2VQ
YXJhbWV0ZXJzKTsKKyAgICBpbnQgZnV6enlNYXRjaFVSTHMoY29uc3QgVVJMJiByZXF1ZXN0VVJM
LCBjb25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJz
LCBjb25zdCBVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2Rl
ZEZvcm0mIHJlc291cmNlUGFyYW1ldGVycyk7CiAKICAgICB2b2lkIGxvYWRSZXNvdXJjZXMoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0
dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwCmluZGV4IDcwNGMwZDZhZDRmNjZhMGMzY2Fi
M2JhZjNlOTk1NjFkODg4NGYwNDUuLmYzZGMyM2M1NzA2OTRlZjNiYmYyNWJiYmEzMjM1MWNkODBm
NzQwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAg
UmVzb3VyY2U6OlJlc291cmNlKGNvbnN0IFN0cmluZyYgZXZlbnRGaWxlUGF0aCkKIHsKIH0KIAot
Y29uc3QgV2ViQ29yZTo6VVJMJiBSZXNvdXJjZTo6dXJsKCkKK2NvbnN0IFVSTCYgUmVzb3VyY2U6
OnVybCgpCiB7CiAgICAgaWYgKCFtX3VybC5pc1ZhbGlkKCkpIHsKICAgICAgICAgYXV0byBldmVu
dHMgPSBldmVudFN0cmVhbSgpOwpAQCAtNTIsOCArNTIsNyBAQCBjb25zdCBXZWJDb3JlOjpVUkwm
IFJlc291cmNlOjp1cmwoKQogICAgICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJFdmVudCBzdHJl
YW0gZG9lcyBub3QgaGF2ZSBhIHJlcXVlc3RTZW50IGV2ZW50OiBmaWxlID0gIiBTVFJJTkdfU1BF
Q0lGSUVSLCBERUJVR19TVFIobV9ldmVudEZpbGVQYXRoKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgYXV0byByZXF1ZXN0U2VudEV2ZW50ID0gV1RGOjpnZXQ8UmVxdWVzdFNlbnRFdmVu
dD4oKmV2ZW50KTsKLSAgICAgICAgICAgIFdlYkNvcmU6OlVSTFBhcnNlciBwYXJzZXIocmVxdWVz
dFNlbnRFdmVudC5yZXF1ZXN0LnVybCk7Ci0gICAgICAgICAgICBtX3VybCA9IHBhcnNlci5yZXN1
bHQoKTsKKyAgICAgICAgICAgIG1fdXJsID0gVVJMKHsgfSwgcmVxdWVzdFNlbnRFdmVudC5yZXF1
ZXN0LnVybCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY4LDEwICs2NywxMCBAQCBjb25zdCBT
dHJpbmcmIFJlc291cmNlOjp1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbigpCiAgICAgcmV0dXJu
IG1fdXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW47CiB9CiAKLVdlYkNvcmU6OlVSTFBhcnNlcjo6
VVJMRW5jb2RlZEZvcm0gUmVzb3VyY2U6OnF1ZXJ5UGFyYW1ldGVycygpCitXVEY6OlVSTFBhcnNl
cjo6VVJMRW5jb2RlZEZvcm0gUmVzb3VyY2U6OnF1ZXJ5UGFyYW1ldGVycygpCiB7CiAgICAgaWYg
KCFtX3F1ZXJ5UGFyYW1ldGVycykKLSAgICAgICAgbV9xdWVyeVBhcmFtZXRlcnMgPSBXZWJDb3Jl
OjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJsKCkucXVlcnkoKSk7CisgICAgICAg
IG1fcXVlcnlQYXJhbWV0ZXJzID0gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0o
dXJsKCkucXVlcnkoKSk7CiAKICAgICByZXR1cm4gKm1fcXVlcnlQYXJhbWV0ZXJzOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0
dXJlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3
b3JrQ2FwdHVyZVJlc291cmNlLmgKaW5kZXggNzU3NmMwZDVlMDA4NDg5MTYyYzE4Yzk2NjA0ZmUz
YTM4N2YzOWU1ZS4uZDQ5M2Y0YTRhMzVhZDhlYTZjZGIyZGQ4ZTAyNWQ2OTBjNTg5MjVlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0
dXJlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCkBAIC0yOSw5ICsyOSw5IEBACiAKICNpbmNsdWRlICJO
ZXR3b3JrQ2FwdHVyZUV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMUGFyc2VyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdv
cmtDYXB0dXJlIHsKQEAgLTU1LDE2ICs1NSwxNiBAQCBjbGFzcyBSZXNvdXJjZSB7CiBwdWJsaWM6
CiAgICAgUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBldmVudEZpbGVQYXRoKTsKIAotICAgIGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwoKTsKICAgICBjb25zdCBT
dHJpbmcmIHVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKCk7Ci0gICAgV2ViQ29yZTo6VVJMUGFy
c2VyOjpVUkxFbmNvZGVkRm9ybSBxdWVyeVBhcmFtZXRlcnMoKTsKKyAgICBXVEY6OlVSTFBhcnNl
cjo6VVJMRW5jb2RlZEZvcm0gcXVlcnlQYXJhbWV0ZXJzKCk7CiAgICAgRXZlbnRTdHJlYW0gZXZl
bnRTdHJlYW0oKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9ldmVudEZpbGVQYXRoOwotICAg
IFdlYkNvcmU6OlVSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fdXJsSWRl
bnRpZnlpbmdDb21tb25Eb21haW47Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpVUkxQYXJz
ZXI6OlVSTEVuY29kZWRGb3JtPiBtX3F1ZXJ5UGFyYW1ldGVyczsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdURjo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybT4gbV9xdWVyeVBhcmFtZXRlcnM7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FwdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXgg
ZTVhZjRmODNmMWI1MDFiOGIzZDhhMWJjNTdjOWQ3MzkwNWZjOTkxNy4uODBiMTQwMzQ3N2E1Mzli
NmEwZDFjYmI5YTRlYWI4YmU1ZmUzZGRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0zMTEs
NyArMzExLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICB9CiAgICAgCiAgICAgLy8g
U2hvdWxkIG5vdCBzZXQgUmVmZXJlciBhZnRlciBhIHJlZGlyZWN0IGZyb20gYSBzZWN1cmUgcmVz
b3VyY2UgdG8gbm9uLXNlY3VyZSBvbmUuCi0gICAgaWYgKG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCAmJiAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIp
ICYmIFdlYkNvcmU6OnByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikp
CisgICAgaWYgKG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCAmJiAh
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpICYmIFdURjo6cHJvdG9jb2xJcyhyZXF1
ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSkKICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBS
ZWZlcnJlcigpOwogICAgIAogICAgIGNvbnN0IGF1dG8mIHVybCA9IHJlcXVlc3QudXJsKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0KaW5kZXggN2YxOGMwNTZmMWEwNWQyZjkwMTBlNGFiODc1MWUxMzQ3Yzgy
YTZlYi4uMjcwNTkyNWQ4NzMwOGI4YTJhNjQ3MDI5ZGZkNzhjNzY5NWYxZGRhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQpAQCAtNDYsMTIgKzQ2LDEyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZVVSTFJlc3BvbnNlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NG
TmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMzQ4LDcgKzM0
OCw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihO
U1VSTFNlc3Npb25UYXNrICopdGFzayBkaWRSZWNlCiAgICAgICAgICAgICBpZiAoY3JlZGVudGlh
bC5wZXJzaXN0ZW5jZSgpID09IFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Np
b24gJiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuaXNQYXNzd29y
ZEJhc2VkKCkpIHsKIAogICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNyZWRlbnRpYWwgbm9uUGVy
c2lzdGVudENyZWRlbnRpYWwoY3JlZGVudGlhbC51c2VyKCksIGNyZWRlbnRpYWwucGFzc3dvcmQo
KSwgV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7Ci0gICAgICAgICAgICAgICAg
V2ViQ29yZTo6VVJMIHVybFRvU3RvcmU7CisgICAgICAgICAgICAgICAgVVJMIHVybFRvU3RvcmU7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNw
b25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQogICAgICAgICAgICAgICAgICAgICB1cmxU
b1N0b3JlID0gYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXgg
NDAyZWMxZGUwMTk2MmYwY2NmNDIwNDI5NTcyMzc5MWY3YzY1NzJhMC4uZjVjYzFjMWUwYWM2ZGE4
NDI5MmM0OGI0NzFiMDhjODdiZjI5OGVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtMjE1LDExICsyMTUsMTEgQEAg
c3RhdGljIHZvaWQgY2FyYm9uV2luZG93SGlkZGVuKFdpbmRvd1JlZiB3aW5kb3cpCiBzdGF0aWMg
Ym9vbCBvcGVuQ0ZVUkxSZWYoQ0ZVUkxSZWYgdXJsLCBpbnQzMl90JiBzdGF0dXMsIENGVVJMUmVm
KiBsYXVuY2hlZFVSTCkKIHsKICAgICBTdHJpbmcgbGF1bmNoZWRVUkxTdHJpbmc7Ci0gICAgaWYg
KCFQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5vcGVuVVJMKFdlYkNvcmU6OlVSTCh1cmwpLnN0
cmluZygpLCBzdGF0dXMsIGxhdW5jaGVkVVJMU3RyaW5nKSkKKyAgICBpZiAoIVBsdWdpblByb2Nl
c3M6OnNpbmdsZXRvbigpLm9wZW5VUkwoVVJMKHVybCkuc3RyaW5nKCksIHN0YXR1cywgbGF1bmNo
ZWRVUkxTdHJpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWxhdW5jaGVk
VVJMU3RyaW5nLmlzTnVsbCgpICYmIGxhdW5jaGVkVVJMKQotICAgICAgICAqbGF1bmNoZWRVUkwg
PSBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGxhdW5jaGVkVVJMU3RyaW5nKS5jcmVhdGVD
RlVSTCgpLmxlYWtSZWYoKTsKKyAgICAgICAgKmxhdW5jaGVkVVJMID0gVVJMKFVSTCgpLCBsYXVu
Y2hlZFVSTFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTM5OSw3ICszOTksNyBAQCBzdGF0aWMgTlNSdW5uaW5nQXBwbGljYXRpb24gKnJl
cGxhY2VkTlNXb3Jrc3BhY2VfbGF1bmNoQXBwbGljYXRpb25BdFVSTF9vcHRpb25zXwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmxhdW5jaEFw
cGxpY2F0aW9uQXRVUkwoV2ViQ29yZTo6VVJMKHVybCkuc3RyaW5nKCksIGFyZ3VtZW50cykpIHsK
KyAgICBpZiAoUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkubGF1bmNoQXBwbGljYXRpb25BdFVS
TChVUkwodXJsKS5zdHJpbmcoKSwgYXJndW1lbnRzKSkgewogICAgICAgICBpZiAoZXJyb3IpCiAg
ICAgICAgICAgICAqZXJyb3IgPSBuaWw7CiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJVVJMLmgKaW5kZXggN2IwMWQwZTkyMDU2MjhjZDNjMDAyZWY1N2VmMTFlODE0ZGNj
Y2I5MS4uYmJkNDIzYmNmNTcxNWU0YWQ3MGJmNTJkZWY4YzJjMzBjNDFiZjBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElVUkwuaApAQCAtMjMsMzIgKzIzLDMxIEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJVUkxfaAotI2RlZmluZSBXZWJV
UkxfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgVVJMIDogcHVibGlj
IE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFVSTD4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBzdHJpbmcpCisgICAgc3RhdGljIFJlZjxB
UEk6OlVSTD4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBzdHJpbmcpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVUkwoc3RyaW5nKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IFJlZjxVUkw+IGNyZWF0ZShjb25zdCBVUkwqIGJhc2VVUkwsIGNvbnN0IFdURjo6U3RyaW5nJiBy
ZWxhdGl2ZVVSTCkKKyAgICBzdGF0aWMgUmVmPEFQSTo6VVJMPiBjcmVhdGUoY29uc3QgQVBJOjpV
UkwqIGJhc2VVUkwsIGNvbnN0IFdURjo6U3RyaW5nJiByZWxhdGl2ZVVSTCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChiYXNlVVJMKTsKICAgICAgICAgYmFzZVVSTC0+cGFyc2VVUkxJZk5lY2Vzc2Fy
eSgpOwotICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwpOworICAgICAg
ICBhdXRvIGFic29sdXRlVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6OlVSTD4oKmJhc2VVUkwt
Pm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CiAgICAgICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiBhYnNvbHV0ZVVSTFN0cmluZyA9IGFic29sdXRlVVJMLT5zdHJpbmcoKTsKIAotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVUkwoV1RGTW92ZShhYnNvbHV0ZVVSTCksIGFic29sdXRl
VVJMU3RyaW5nKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFQSTo6VVJMKFdURk1v
dmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykpOwogICAgIH0KIAogICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KQEAgLTU2LDcgKzU1
LDcgQEAgY2xhc3MgVVJMIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+IHsK
IAogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
ZzsgfQogCi0gICAgc3RhdGljIGJvb2wgZXF1YWxzKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBi
KQorICAgIHN0YXRpYyBib29sIGVxdWFscyhjb25zdCBBUEk6OlVSTCYgYSwgY29uc3QgQVBJOjpV
UkwmIGIpCiAgICAgewogICAgICAgICByZXR1cm4gYS51cmwoKSA9PSBiLnVybCgpOwogICAgIH0K
QEAgLTEwNiwxMyArMTA1LDEzIEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVj
dDo6VHlwZTo6VVJMPiB7CiAgICAgewogICAgIH0KIAotICAgIFVSTChzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6VVJMPiBwYXJzZWRVUkwsIGNvbnN0IFdURjo6U3RyaW5nJiBzdHJpbmcpCisgICAg
VVJMKHN0ZDo6dW5pcXVlX3B0cjxXVEY6OlVSTD4gcGFyc2VkVVJMLCBjb25zdCBXVEY6OlN0cmlu
ZyYgc3RyaW5nKQogICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykKICAgICAgICAgLCBtX3BhcnNl
ZFVSTChXVEZNb3ZlKHBhcnNlZFVSTCkpCiAgICAgewogICAgIH0KIAotICAgIGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsKCkgY29uc3QKKyAgICBjb25zdCBXVEY6OlVSTCYgdXJsKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKICAgICAgICAgcmV0dXJuICptX3Bh
cnNlZFVSTDsKQEAgLTEyMiwxMyArMTIxLDExIEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJ
bXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAgICAgewogICAgICAgICBpZiAobV9wYXJzZWRVUkwp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkVVJMID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpVUkw+KFdlYkNvcmU6OlVSTCgpLCBtX3N0cmluZyk7CisgICAgICAgIG1f
cGFyc2VkVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6OlVSTD4oV1RGOjpVUkwoKSwgbV9zdHJp
bmcpOwogICAgIH0KIAogICAgIFdURjo6U3RyaW5nIG1fc3RyaW5nOwotICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlVSTD4gbV9wYXJzZWRVUkw7CisgICAgbXV0YWJsZSBzdGQ6
OnVuaXF1ZV9wdHI8V1RGOjpVUkw+IG1fcGFyc2VkVVJMOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBVUkxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oCmluZGV4IDliNWM3ZjY2YjQ4YjhhOTZiZGQy
ZGNiZTg5Y2E5MGExMjNkMzA2YWEuLjY2OTk1YTBhODg1MjZiYWM1M2FiN2QxY2M1OTYxNWEzMjAy
MTllMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVu
dFVSTFBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250
ZW50VVJMUGF0dGVybi5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEFQSSB7
CiAKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnQKICAgICBjb25zdCBX
VEY6OlN0cmluZyYgaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5ob3N0KCk7IH0KICAg
ICBjb25zdCBXVEY6OlN0cmluZyYgc2NoZW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLnNj
aGVtZSgpOyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmlz
VmFsaWQoKTsgfTsKLSAgICBib29sIG1hdGNoZXNVUkwoY29uc3QgV1RGOjpTdHJpbmcmIHVybCkg
Y29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1hdGNoZXMoV2ViQ29yZTo6VVJMKHsgfSwgdXJsKSk7
IH0KKyAgICBib29sIG1hdGNoZXNVUkwoY29uc3QgV1RGOjpTdHJpbmcmIHVybCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXR0ZXJuLm1hdGNoZXMoV1RGOjpVUkwoeyB9LCB1cmwpKTsgfQogICAgIGJvb2wg
bWF0Y2hlc1N1YmRvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4ubWF0Y2hTdWJkb21h
aW5zKCk7IH0KIAogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBwYXR0ZXJuU3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXR0ZXJuU3RyaW5nOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tVUkxSZXF1ZXN0LmNwcAppbmRleCA3MzZlMWYzZTY2NDVjZTBlYzIxMmY2ZGI5Zjg3ODQzZDVj
ZDEzZGE1Li4xNDk5NTYzZTM5YWU3Yjk4NmRlMTczNDc2Nzg4NWY2YWFkOTI4ZDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAj
aW5jbHVkZSAiV0tEYXRhLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9u
c2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAKaW5k
ZXggYjhhOGE5MGJjZDNjMzQ1Y2Q0NzU2NTI3NzMxNDMyY2ZjYTAxN2M4Ny4uOGYxZmE5YWQ2ZTM2
ZTk4YWM0MTNlYmE5ZWY5NTUzY2FkNDA2MzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tVUkxSZXNwb25zZS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQ
SVVSTFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCmluZGV4IGRmMTk4M2E2
MDE1MGRkN2VhZGJhZTgzZDM4ODI4YWJhYTc4MGUwYWUuLmJkOTFhNDViMDljMzE0ZWZmMzYzMDUx
Y2NiODgxNWJkY2JiNmRiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L2NmL1dLVVJMQ0YubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxD
Ri5tbQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQg
IldLTlNVUkwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQgPG9i
amMvcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL2NmL0NGVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBXS19BUElfRU5BQkxFRApAQCAtNTYsNyArNTYsNyBA
QCBXS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhDRlVSTChDRlVSTFJlZiBjZlVSTCkKICNlbmRpZgog
CiAgICAgQ1N0cmluZyB1cmxCeXRlczsKLSAgICBXZWJDb3JlOjpnZXRVUkxCeXRlcyhjZlVSTCwg
dXJsQnl0ZXMpOworICAgIFdURjo6Z2V0VVJMQnl0ZXMoY2ZVUkwsIHVybEJ5dGVzKTsKIAogICAg
IHJldHVybiBXZWJLaXQ6OnRvQ29waWVkVVJMQVBJKHVybEJ5dGVzLmRhdGEoKSk7CiB9CkBAIC02
OSw1ICs2OSw1IEBAIENGVVJMUmVmIFdLVVJMQ29weUNGVVJMKENGQWxsb2NhdG9yUmVmIGFsbG9j
YXRvclJlZiwgV0tVUkxSZWYgVVJMUmVmKQogICAgIC8vIFVURi04IHdoaWNoIHVzZXMgbGVzcyBt
ZW1vcnkgYW5kIGlzIHdoYXQgV2ViS2l0IGNsaWVudHMgbWlnaHQgZXhwZWN0LgogCiAgICAgQ1N0
cmluZyBidWZmZXIgPSBXZWJLaXQ6OnRvSW1wbChVUkxSZWYpLT5zdHJpbmcoKS51dGY4KCk7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBi
dWZmZXIubGVuZ3RoKCksIDApLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV1RGOjpjcmVhdGVDRlVS
TEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpLCAwKS5sZWFrUmVmKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVl
c3QuY3BwCmluZGV4IDlmZTU5NTcyMDRjYzc5OTNlYmMwODg4OGJkMWY4OTMxZWE0ZWIwMDEuLjMx
ZjYxY2U3ZWFmOGI5YTk5Y2JhYWQ3ZGQwNTM3NWRhODFhMjViYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCkBAIC0yMSw4ICsy
MSw4IEBACiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdC5oIgogCiAjaW5jbHVkZSAiV2ViS2l0
VVJJUmVxdWVzdFByaXZhdGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Z2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRVUklSZXNwb25zZS5jcHAKaW5kZXggZDI0NTU4OTM2Y2Y0NjA3NTU1NzEyYTE2Yzk0
ZmQ0NjFlYzA5OGEyMy4uMjg3ZWVmZDRkOWNjZjQwMDM2NzNkZTk3Yjg4ZDNjMmQ2M2MyMzQwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3Bv
bnNlLmNwcApAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUgIldlYktpdFVSSVJlc3BvbnNlLmgi
CiAKICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNs
dWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdU
eXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXggZGMwZjkwZjBmMzg1MWFiZjEw
MDQ4NGJhNTczYWU0YWY4ZTgwYjIzMi4uYmMyZmU0OWUzMGFhMzgyYjQyM2I1NGRiMmJhZDcyYmI3
Zjk3ZWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJl
c291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5tbQpAQCAtMzAsOCArMzAsOCBAQAogCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3Bh
Y2UgQVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDYsOCArNDYsOCBAQCBSZWY8
V2ViQXJjaGl2ZVJlc291cmNlPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiYmIGFyYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFyY2hpdmVS
ZXNvdXJjZShXVEZNb3ZlKGFyY2hpdmVSZXNvdXJjZSkpKTsKIH0KIAotV2ViQXJjaGl2ZVJlc291
cmNlOjpXZWJBcmNoaXZlUmVzb3VyY2UoQVBJOjpEYXRhKiBkYXRhLCBjb25zdCBTdHJpbmcmIFVS
TCwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcpCi0g
ICAgOiBtX2FyY2hpdmVSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLT5ieXRlcygpLCBkYXRhLT5zaXplKCkpLCBXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIFVSTCksIE1JTUVUeXBlLCB0ZXh0RW5jb2RpbmcsIFN0cmluZygpKSkKK1dl
YkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6RGF0YSogZGF0YSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nKQorICAgIDogbV9hcmNoaXZlUmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKSwgV1RG
OjpVUkwoV1RGOjpVUkwoKSwgdXJsKSwgTUlNRVR5cGUsIHRleHRFbmNvZGluZywgU3RyaW5nKCkp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRp
b24uaAppbmRleCA0MzM2MzhiOTQ4ZGYwOTc4YWIzYzFiZDFiYTFhM2I3NDFkZGZhNmFmLi5kODZk
YzRhYjc1MGJmODFjZjllMzY0M2FlNjY5NGZjYjMyNDdmMjU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnB1dE1vZGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IEFzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uIHsKICAgICBTdHJpbmcgdGl0bGU7CiAgICAgYm9vbCBhY2NlcHRzQXV0b2Zp
bGxlZExvZ2luQ3JlZGVudGlhbHMgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNBdXRvZmlsbGFibGVV
c2VybmFtZUZpZWxkIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpVUkwgcmVwcmVzZW50aW5nUGFn
ZVVSTDsKKyAgICBVUkwgcmVwcmVzZW50aW5nUGFnZVVSTDsKICAgICBXZWJDb3JlOjpBdXRvZmls
bEZpZWxkTmFtZSBhdXRvZmlsbEZpZWxkTmFtZSB7IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1l
OjpOb25lIH07CiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyOwogICAgIFN0cmluZyBsYWJlbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCmluZGV4IDAxODhmNzQ3
OTgyYTk0MGE0OGFiODZmODI4OGFhYjAwNmRmZDExZDcuLjYwY2UwYWVmYzAwNDE0ZDhmMzFkZDdk
NDJhMDczYTNlODk4MWQ4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dLTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tOU1VS
TEV4dHJhcy5tbQpAQCAtMjYsOCArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJXS05TVVJMRXh0cmFzLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvQ0ZVUkxFeHRyYXMuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYv
Y2YvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01MCw3ICs1MCw3IEBAICsgKGluc3RhbmNldHlw
ZSlfd2ViX1VSTFdpdGhXVEZTdHJpbmc6KGNvbnN0IFN0cmluZyYpc3RyaW5nIHJlbGF0aXZlVG9V
Ukw6KE5TVVJMCiAtIChTdHJpbmcpX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZwogewogICAg
IENTdHJpbmcgb3JpZ2luYWxEYXRhOwotICAgIGdldFVSTEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJl
ZilzZWxmLCBvcmlnaW5hbERhdGEpOworICAgIFdURjo6Z2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENG
VVJMUmVmKXNlbGYsIG9yaWdpbmFsRGF0YSk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
b3JpZ2luYWxEYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vz
c2lvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAppbmRleCA5
ZGNmNmYyZTFkNzE1MzNhZDY0NWRmNjNkYmYyNDIyNjU3ODRiOGFmLi41M2NlMmQxYWYwNmQyNTFj
ODA1NWJkMmFkNTI3ZmFhNDY3NmVlOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TZXNzaW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUu
aApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xNDgsNyArMTQ4LDcg
QEAgc3RydWN0IEJhY2tGb3J3YXJkTGlzdFN0YXRlIHsKIHN0cnVjdCBTZXNzaW9uU3RhdGUgewog
ICAgIEJhY2tGb3J3YXJkTGlzdFN0YXRlIGJhY2tGb3J3YXJkTGlzdFN0YXRlOwogICAgIHVpbnQ2
NF90IHJlbmRlclRyZWVTaXplOwotICAgIFdlYkNvcmU6OlVSTCBwcm92aXNpb25hbFVSTDsKKyAg
ICBVUkwgcHJvdmlzaW9uYWxVUkw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKaW5kZXggZGY5
NzM1MGUwMzBjOTgyMzViYTNiYWU0YWQ1Y2IwNTY1Yzk0ZTY3NS4uYTkxOTY5MmY2OWMyM2I3MTMz
NTY2NTlhZDMwNDVkMDNmMGZlOTllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJXZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmgiCiAKICNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHkuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAg
LTEwNCw4ICsxMDQsOCBAQCBib29sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1Jc0luU2Ft
ZURvY3VtZW50KGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mCiAgICAgaWYgKG1haW5GcmFt
ZVN0YXRlLnN0YXRlT2JqZWN0RGF0YSB8fCBvdGhlck1haW5GcmFtZVN0YXRlLnN0YXRlT2JqZWN0
RGF0YSkKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1i
ZXIgPT0gb3RoZXJNYWluRnJhbWVTdGF0ZS5kb2N1bWVudFNlcXVlbmNlTnVtYmVyOwogCi0gICAg
V2ViQ29yZTo6VVJMIHVybCA9IFdlYkNvcmU6OlVSTCh7IH0sIG1haW5GcmFtZVN0YXRlLnVybFN0
cmluZyk7Ci0gICAgV2ViQ29yZTo6VVJMIG90aGVyVVJMID0gV2ViQ29yZTo6VVJMKHsgfSwgb3Ro
ZXJNYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcpOworICAgIFVSTCB1cmwgPSBVUkwoeyB9LCBtYWlu
RnJhbWVTdGF0ZS51cmxTdHJpbmcpOworICAgIFVSTCBvdGhlclVSTCA9IFVSTCh7IH0sIG90aGVy
TWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKIAogICAgIGlmICgodXJsLmhhc0ZyYWdtZW50SWRl
bnRpZmllcigpIHx8IG90aGVyVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSAmJiBlcXVhbEln
bm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgb3RoZXJVUkwpKQogICAgICAgICByZXR1cm4g
bWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlciA9PSBvdGhlck1haW5GcmFtZVN0
YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlNTA3YmY4NzU5YjExNzg5MDg2ZTUwZDdmMDZj
NTdkZDgzODBhNGY2Li4zOTVlYTc1OGQwM2MxYTA3MTYwYTZiMzVmZmVkYWUyODJmOWI4MGIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTc3LDExICs3NywxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGltaW5nRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RyYW5z
Zm9ybWF0aW9uTWF0cml4Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWV3cG9ydEFyZ3Vt
ZW50cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KICNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggM2VlYjQ0MmUzMjdk
Yzc5MTJiNDNjNDk2MzZhNjU3NGNmOWJjNDZjZS4uOTU0NTBmNDExYzdmYmEwM2MxZWQ3NjEwNTlm
ZGJhMzNiYTAyZTVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKQEAgLTkzLDcgKzkzLDYgQEAgY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENv
bnN0cmFpbnRzOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdERhdGE7CiBjbGFzcyBUcmFuc2Zv
cm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwotY2xhc3MgVVJMOwogCiBzdHJ1
Y3QgQ2FjaGVRdWVyeU9wdGlvbnM7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJvcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkVycm9ycy5oCmluZGV4IDI3ZDE0ZTMxYjMxMDg2NmM2ZjEzNmUzYWQ4YWFmZjg4
ZTIzYjM4NDIuLjdkNjAwYzZkMjNiNTVkY2MzOTYzMDk5MDQwN2NlNzQ0NDQ2Y2I0ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkVycm9ycy5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CkBAIC00OCwxOCArNDcsMTggQEAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250
ZW50RmlsdGVyRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXMKIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBXZWJD
b3JlOjpVUkwmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBV
UkwmKTsKIAogI2lmIFVTRShTT1VQKQotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBkb3dubG9hZE5l
dHdvcmtFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYpOworV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBkb3dubG9hZE5ldHdvcmtFcnJvcihjb25zdCBVUkwmLCBjb25z
dCBXVEY6OlN0cmluZyYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBkb3dubG9hZENhbmNlbGxl
ZEJ5VXNlckVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBjb25zdCBXVEY6OlN0cmluZyYpOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShHVEspCi1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgcHJp
bnRlck5vdEZvdW5kRXJyb3IoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci1XZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpOworV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBwcmludEVycm9yKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3Ry
aW5nJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHByaW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0
IFVSTCYpOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdlVG9QcmludChj
b25zdCBVUkwmKTsKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCAxNzljYTRiZTM3YmVk
MGUzZGNjYjVkMzI2M2YzZjA2OWIwNTI1NTViLi5jMWNmY2NmMDVmODQyMGFjM2I5YzI0ZGM1N2Y5
ODVmNzIyNjM3YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0
UmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dERhdGEuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob2RlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJz
Q0YuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKaW5k
ZXggZTNmMzA1NjY2ODYzMGE0YjVhZmViOTg0YzlkZTRkZWRlNTAxNWMwYi4uMmVkNzc0NGIwOGRm
OGZiZTlhYzcyZmQ0NzQ3NjRlMWNlNmQ3Mjc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0NGVVJMRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQ
cml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL2NmL0NG
VVJMRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogCiAj
aWYgVVNFKEZPVU5EQVRJT04pCkBAIC01OTksOCArNTk5LDggQEAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgQ0ZVUkxSZWYgdXJsKQogICAgIGlmIChiYXNlVVJMKQogICAgICAgICBlbmNv
ZGUoZW5jb2RlciwgYmFzZVVSTCk7CiAKLSAgICBVUkxDaGFyQnVmZmVyIHVybEJ5dGVzOwotICAg
IGdldFVSTEJ5dGVzKHVybCwgdXJsQnl0ZXMpOworICAgIFdURjo6VVJMQ2hhckJ1ZmZlciB1cmxC
eXRlczsKKyAgICBXVEY6OmdldFVSTEJ5dGVzKHVybCwgdXJsQnl0ZXMpOwogICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHVybEJ5dGVzLmRhdGEoKSksIHVybEJ5dGVzLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCBkYXRh
UmVmZXJlbmNlOwogfQpAQCAtNjMxLDcgKzYzMSw3IEBAIGJvb2wgZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFJldGFpblB0cjxDRlVSTFJlZj4mIHJlc3VsdCkKICAgICB9CiAjZW5kaWYKIAotICAg
IHJlc3VsdCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPih1cmxCeXRlcy5kYXRhKCkpLCB1cmxCeXRlcy5zaXplKCksIGJhc2VVUkwuZ2V0KCkpOwor
ICAgIHJlc3VsdCA9IFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KHVybEJ5dGVzLmRhdGEoKSksIHVybEJ5dGVzLnNpemUoKSwgYmFzZVVSTC5n
ZXQoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
V2ViRXJyb3JzR3RrLmNwcAppbmRleCBlOWQ5MjM5M2M3ZDVjNmIzYWJmM2Y5ZjQ0YTA3ZjQxYTAw
ODQ2MGU4Li42YTBkZjU0YzM3NDQ1ZGY2NGNjNWQzYjRiYjYxMGVjMWYzYzA2NWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcApAQCAtMjcsOCArMjcsOCBAQAog
I2luY2x1ZGUgIldlYkVycm9ycy5oIgogCiAjaW5jbHVkZSAiQVBJRXJyb3IuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24uaAppbmRleCAzZDA4Njg5ZmUxNzZkZDdhNjE3MmExMzdjMDU4
M2RjZWE3MzcyZjYzLi5jMWFiODVmZDQ0MWJjMTI4MDc1NDY2MDk0MDk2OGY3MzZhOGY2NmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24uaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvSW50UG9pbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvblJlY3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MCw4ICs2MCw4IEBAIHN0cnVjdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbiB7CiAgICAgYm9vbCBwcmV2ZW50VGV4dEludGVyYWN0aW9uIHsg
ZmFsc2UgfTsKICNlbmRpZgogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYWRqdXN0ZWRQb2ludEZv
ck5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50czsKLSAgICBXZWJDb3JlOjpVUkwgdXJsOwotICAg
IFdlYkNvcmU6OlVSTCBpbWFnZVVSTDsKKyAgICBVUkwgdXJsOworICAgIFVSTCBpbWFnZVVSTDsK
ICAgICBTdHJpbmcgdGl0bGU7CiAgICAgU3RyaW5nIGlkQXR0cmlidXRlOwogICAgIFdlYkNvcmU6
OkludFJlY3QgYm91bmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5oCmluZGV4IGJiMGQxY2I2M2Q0MWYyZTdiYzM2YmE5ZjVkNWRhZTVlNDA4
MTE1OTIuLjkwZmRlN2QwNGIyNzMwNWE0NjQzNjE0MWJkYjc3ZTEwMDRiZGQwNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKQEAgLTMz
LDcgKzMzLDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgQ29va2llOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKaW5kZXggNjhiODdkODg3ZmU2MzQyZjBmNTFj
OTQzMTJlYTBmNGJjZTEyYmY2YS4uOTMyYjYyNjc3N2YwYWYwYWI1NGY2NDdiZDgxYmZmNDc4NDM5
YzdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNw
cApAQCAtNjksNyArNjksNyBAQCB2b2lkIE5hdmlnYXRpb246OnNldEN1cnJlbnRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFByb2Nlc3NJZGVudGlmaWVyCiAgICAgbV9jdXJyZW50
UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyID0gcHJvY2Vzc0lkZW50aWZpZXI7CiB9CiAKLXZvaWQg
TmF2aWdhdGlvbjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwp
Cit2b2lkIE5hdmlnYXRpb246OmFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0IFdURjo6VVJMJiB1
cmwpCiB7CiAgICAgaWYgKG1fcmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENo
YWluLmxhc3QoKSAhPSB1cmwpCiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQodXJsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCmluZGV4IDk3ZWU5
NmRkZDZlNDdhMTlhY2RjMmYyODQ4ZjdhNzYyOTdiZGQxZjIuLmVkMDI5NGQ4Mjg3ZWNkODY2YmE2
ZTkzYjgxYzUzZjBiNDRiODQ5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb24uaApAQCAtNzcsOCArNzcsOCBAQCBjbGFzcyBOYXZpZ2F0aW9uIDogcHVibGlj
IE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uPiB7CiAgICAgV2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKiBmcm9tSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbUl0ZW0u
Z2V0KCk7IH0KICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lTG9hZFR5cGU+IGJhY2tG
b3J3YXJkRnJhbWVMb2FkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja0ZvcndhcmRGcmFtZUxv
YWRUeXBlOyB9CiAKLSAgICB2b2lkIGFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYpOwotICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IHRha2VSZWRpcmVjdENoYWluKCkgeyBy
ZXR1cm4gV1RGTW92ZShtX3JlZGlyZWN0Q2hhaW4pOyB9CisgICAgdm9pZCBhcHBlbmRSZWRpcmVj
dGlvblVSTChjb25zdCBXVEY6OlVSTCYpOworICAgIFZlY3RvcjxXVEY6OlVSTD4gdGFrZVJlZGly
ZWN0Q2hhaW4oKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVkaXJlY3RDaGFpbik7IH0KIAogICAgIHZv
aWQgc2V0V2FzVXNlckluaXRpYXRlZChib29sIHZhbHVlKSB7IG1fd2FzVXNlckluaXRpYXRlZCA9
IHZhbHVlOyB9CiAgICAgYm9vbCB3YXNVc2VySW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV93
YXNVc2VySW5pdGlhdGVkOyB9CkBAIC0xMTQsNyArMTE0LDcgQEAgY2xhc3MgTmF2aWdhdGlvbiA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6TmF2aWdhdGlvbj4gewogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyPiBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXI7Ci0g
ICAgVmVjdG9yPFdlYkNvcmU6OlVSTD4gbV9yZWRpcmVjdENoYWluOworICAgIFZlY3RvcjxXVEY6
OlVSTD4gbV9yZWRpcmVjdENoYWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1
ZSB9OwogICAgIGJvb2wgbV9zaG91bGRGb3JjZURvd25sb2FkIHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaAppbmRleCBlZWNiZmY0YTJhM2VkOTBmNDQ0MDhjY2Q2
Y2FmMjlkZTk4ZDk1MmQ3Li4zMDg3MWM3YTA5NTU0ZDVjYjhhN2VkNGFiODJjYmIxNDhjZGU3ODc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0
aW9uLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJBUElVc2VySW5pdGlhdGVkQWN0aW9u
LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBO
YXZpZ2F0aW9uQWN0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpO
YXZpZ2F0aW9uQWN0aW9uPgogICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZy
YW1lTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0RnJhbWVOYW1lOyB9CiAKICAgICBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jl
cXVlc3Q7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmFsVVJMKCkgY29uc3QgeyBy
ZXR1cm4gIW1fb3JpZ2luYWxVUkwuaXNOdWxsKCkgPyBtX29yaWdpbmFsVVJMIDogbV9yZXF1ZXN0
LnVybCgpOyB9CisgICAgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFsVVJMKCkgY29uc3QgeyByZXR1
cm4gIW1fb3JpZ2luYWxVUkwuaXNOdWxsKCkgPyBtX29yaWdpbmFsVVJMIDogbV9yZXF1ZXN0LnVy
bCgpOyB9CiAKICAgICBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGU7IH0KICAg
ICBXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnM7IH0KQEAgLTY2LDcgKzY2LDcgQEAgY2xh
c3MgTmF2aWdhdGlvbkFjdGlvbiBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlw
ZTo6TmF2aWdhdGlvbkFjdGlvbj4KICAgICBOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVOYXZpZ2F0aW9uLmdldCgpOyB9CiAKIHByaXZh
dGU6Ci0gICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSwgQVBJOjpG
cmFtZUluZm8qIHRhcmdldEZyYW1lLCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRG
cmFtZU5hbWUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgb3JpZ2luYWxVUkwsIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzLCBSZWZQdHI8VXNl
ckluaXRpYXRlZEFjdGlvbj4mJiB1c2VySW5pdGlhdGVkQWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24q
IG1haW5GcmFtZU5hdmlnYXRpb24pCisgICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmln
YXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBz
b3VyY2VGcmFtZSwgQVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBzdGQ6Om9wdGlvbmFsPFdU
Rjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlu
a3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQ
STo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAgOiBtX3NvdXJjZUZy
YW1lKHNvdXJjZUZyYW1lKQogICAgICAgICAsIG1fdGFyZ2V0RnJhbWUodGFyZ2V0RnJhbWUpCiAg
ICAgICAgICwgbV90YXJnZXRGcmFtZU5hbWUodGFyZ2V0RnJhbWVOYW1lKQpAQCAtNzksNyArNzks
NyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2Jq
ZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uPgogICAgIHsKICAgICB9CiAKLSAgICBOYXZpZ2F0
aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0
RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5h
bFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9u
PiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24pCisgICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZv
KiBzb3VyY2VGcmFtZSwgQVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBzdGQ6Om9wdGlvbmFs
PFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91bGRPcGVuQXBw
TGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24p
CiAgICAgICAgIDogTmF2aWdhdGlvbkFjdGlvbihXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRh
KSwgc291cmNlRnJhbWUsIHRhcmdldEZyYW1lLCB0YXJnZXRGcmFtZU5hbWUsIFdURk1vdmUocmVx
dWVzdCksIG9yaWdpbmFsVVJMLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRp
YXRlZEFjdGlvbiksIG51bGxwdHIpCiAgICAgewogICAgIH0KQEAgLTg5LDcgKzg5LDcgQEAgY2xh
c3MgTmF2aWdhdGlvbkFjdGlvbiBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlw
ZTo6TmF2aWdhdGlvbkFjdGlvbj4KICAgICBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiBtX3Rh
cmdldEZyYW1lTmFtZTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
Ci0gICAgV2ViQ29yZTo6VVJMIG1fb3JpZ2luYWxVUkw7CisgICAgV1RGOjpVUkwgbV9vcmlnaW5h
bFVSTDsKIAogICAgIGJvb2wgbV9zaG91bGRPcGVuQXBwTGlua3M7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDZhZDgzM2E2
MDk5NWI4OTlhMWIxMWM3MWFlOTljNDk1N2FjMjcyOTAuLjhlOTQ0YjdkZWM0ZDllNWRlNzRhNzQx
YzJhYWVkNzk5ODMyMDAzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtOTcsNyArOTcsNyBAQCBjbGFzcyBOYXZpZ2F0aW9u
Q2xpZW50IHsKIAogICAgIHZpcnR1YWwgUmVmUHRyPERhdGE+IHdlYkNyeXB0b01hc3RlcktleShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAotICAgIHZpcnR1YWwg
UmVmUHRyPFN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgdW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8U3RyaW5n
PiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmKSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgdmlydHVhbCBSZWZQdHI8U3RyaW5nPiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNv
bnN0IFJlZlB0cjxTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdURjo6VVJMJikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdmlydHVhbCB2b2lk
IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0KQEAgLTExNCw3ICsx
MTQsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQ2xpZW50IHsKICAgICAgICAgbGlzdGVuZXItPnVzZSgp
OwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0
aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxXVEY6OlN0
cmluZz4mJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGNv
bnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdURjo6VVJM
JiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmKSB7IH07CiAg
ICAgCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdmlydHVhbCBib29sIGRp
ZEZhaWxUb0luaXRpYWxpemVQbHVnSW4oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OkRpY3Rp
b25hcnkmKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIE5hdmln
YXRpb25DbGllbnQgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdmlydHVhbCB2
b2lkIHdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
cmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgd2ViR0xMb2FkUG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb24pOyB9CisgICAgdmlydHVhbCB2b2lkIHJlc29s
dmVXZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJHTExv
YWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7IH0KICNlbmRpZgogICAgIAogICAgIHZpcnR1
YWwgYm9vbCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBib29sIGluUGFnZUNhY2hlLCBPYmpl
Y3QqKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaAppbmRleCBiYTI5MGUwODk3YjljNzI3YWY2OTY4MmYyOGZmMzM0NTE5NWQ5MTYyLi44
M2RhMjljYzUyZmM4NzMwOWNmYzY1ZjQ2ZDcwMTEwZjEyOTQ2NDc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMTQwLDcgKzE0MCw3IEBAIGNsYXNzIFVJ
Q2xpZW50IHsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbChXZWJLaXQ6OldlYlBhZ2VQcm94eSYp
IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIo
V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgRGF0YSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
YXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgRGF0
YSYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBpbm5lZFN0YXRlRGlkQ2hhbmdlKFdlYktpdDo6
V2ViUGFnZVByb3h5JikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
c2VyU2NyaXB0LmNwcAppbmRleCA3NTg0ZTYzMTIxMDJiNWIwYzUwMDdlYTliODhjYWM3ODNiOWUx
NDZjLi40MDIyZWZkY2I5N2E1MDlmNmUwZWY4OTVkY2I2NzM4NjZhYTlmNTZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1XZWJDb3JlOjpVUkwgVXNlclNjcmlwdDo6Z2VuZXJh
dGVVbmlxdWVVUkwoKQorV1RGOjpVUkwgVXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKQog
ewogICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaAppbmRleCAxN2E0MDkwOTg5N2Y3NDRiNTA1YTA0OTJh
YzUwOGM0MDUwYjEzMWM1Li4wMzMzMjgyMGIxNjAxMTQ5MTQwMzYxOGI2MzdmMzNkYTgxNGIxOGEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKQEAgLTIz
LDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIEFQSVVzZXJTY3JpcHRfaAotI2RlZmluZSBBUElVc2VyU2NyaXB0X2gKKyNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRX
b3JsZC5oIgpAQCAtMzUsNyArMzQsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgVXNlclNj
cmlwdCBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclNjcmlwdD4s
IHB1YmxpYyBJZGVudGlmaWVkPFVzZXJTY3JpcHQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2Vi
Q29yZTo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CisgICAgc3RhdGljIFdURjo6VVJMIGdlbmVy
YXRlVW5pcXVlVVJMKCk7CiAKICAgICBzdGF0aWMgUmVmPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJD
b3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQp
CiAgICAgewpAQCAtNTUsNSArNTQsMyBAQCBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVibGlj
IE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyU2NyaXB0PiwgcHVibGljIElkZQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgQVBJCi0KLSNlbmRpZiAvLyBBUElVc2VyU2NyaXB0X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwCmluZGV4IDFk
NTk1YmIxNTg4ZDlmN2Q1ZDQ4ZmQ5MjFjZDFkZDk2NmIzZjg2YWYuLjNlYTQ2MWZlMWExNTZjNmE5
ZDU4OTU4NDAzN2ZlMzg3YzI5MDdmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgQVBJIHsKIAotV2ViQ29yZTo6VVJMIFVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVS
TCgpCitXVEY6OlVSTCBVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKQogewogICAg
IHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5oCmluZGV4IGQ4NTZmN2E1MmY5YjUwNGUwZmE0MjNl
YTlhM2I2ZTE1NzE0NTFlZGUuLjc1YmI5NWFmZWFjOGY4ZjFlODIyMzM1ZjI5M2U5ODM4N2I1ZDc2
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVT
aGVldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVl
dC5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBBUElVc2VyU3R5bGVTaGVldF9oCi0jZGVmaW5lIEFQSVVzZXJTdHls
ZVNoZWV0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgpAQCAtMzUsNyArMzQsNyBAQCBuYW1lc3BhY2UgQVBJ
IHsKIAogY2xhc3MgVXNlclN0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmpl
Y3Q6OlR5cGU6OlVzZXJTdHlsZVNoZWV0PiwgcHVibGljIElkZW50aWZpZWQ8VXNlclN0eWxlU2hl
ZXQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViQ29yZTo6VVJMIGdlbmVyYXRlVW5pcXVlVVJM
KCk7CisgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKICAgICBzdGF0
aWMgUmVmPFVzZXJTdHlsZVNoZWV0PiBjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNl
clN0eWxlU2hlZXQsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgewpAQCAtNTUs
NSArNTQsMyBAQCBjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBs
PE9iamVjdDo6VHlwZTo6VXNlclN0eWxlU2hlZXQ+LCBwdQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
QVBJCi0KLSNlbmRpZiAvLyBBUElVc2VyU3R5bGVTaGVldF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3Bw
CmluZGV4IDZlNzk2NjI1NTJiOWY2ODA1MjAyOTRlYmI5ZDc0ZWJhYmQ4MzI2NTAuLjRhMGZmYzQy
ZTU5NDFjMzA2YmNmZmJmODhjZTE1YWNjNzA5OWI1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3Bw
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+
IGZpbGVQYXRoc0Zyb21GaWxlVVJMcyhjb25zdCBBUEk6OkFycmF5JiBmaWxlVVJMcykKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBBUEk6OlVSTCogYXBp
VVJMID0gZmlsZVVSTHMuYXQ8QVBJOjpVUkw+KGkpOwogICAgICAgICBpZiAoYXBpVVJMKQotICAg
ICAgICAgICAgZmlsZVBhdGhzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIGFwaVVSTC0+c3RyaW5nKCkpLmZpbGVTeXN0ZW1QYXRoKCkpOworICAgICAgICAgICAg
ZmlsZVBhdGhzLnVuY2hlY2tlZEFwcGVuZChVUkwoVVJMKCksIGFwaVVSTC0+c3RyaW5nKCkpLmZp
bGVTeXN0ZW1QYXRoKCkpOwogICAgIH0KIAogICAgIHJldHVybiBmaWxlUGF0aHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBjYzJkZjliNTcxYTExNzhlY2Y1
N2Y2ZGU2ZmFhMzhkYWU1YWM2MTEwLi4yY2I5NmEzMjUwZGQzZDBjNGE3YTEzNGM5YjljOGE2ODIw
MmUxYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0
OSw3ICsyNDksNyBAQCB2b2lkIFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmcoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLU3RyaW5nUmVmIHBsYWluVGV4dFN0cmluZ1JlZgogCiB2b2lkIFdLUGFnZUxvYWRQ
bGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVm
IHBsYWluVGV4dFN0cmluZ1JlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewotICAgIGxvYWRT
dHJpbmcocGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5nUmVmLCAidGV4dC9wbGFpbiJfcywgYmxhbmtV
UkwoKS5zdHJpbmcoKSwgdXNlckRhdGFSZWYpOworICAgIGxvYWRTdHJpbmcocGFnZVJlZiwgcGxh
aW5UZXh0U3RyaW5nUmVmLCAidGV4dC9wbGFpbiJfcywgV1RGOjpibGFua1VSTCgpLnN0cmluZygp
LCB1c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFSZWYpCkBAIC0xNDczLDcgKzE0
NzMsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogCiAgICAgICAgICAgICAgICAgYXV0byB1
c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZp
dHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogICAg
ICAgICAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoc291
cmNlRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlc291cmNlUmVxdWVzdC51cmwoKSk7Ci0g
ICAgICAgICAgICAgICAgYXV0byBhcGlOYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1l
SW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlc291cmNlUmVxdWVz
dCksIFdlYkNvcmU6OlVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRp
YXRlZEFjdGl2aXR5KSk7CisgICAgICAgICAgICAgICAgYXV0byBhcGlOYXZpZ2F0aW9uQWN0aW9u
ID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
RGF0YSksIHNvdXJjZUZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZN
b3ZlKHJlc291cmNlUmVxdWVzdCksIFVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUo
dXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICAgICAgICAgICAgICBhdXRvIGFwaVdpbmRv
d0ZlYXR1cmVzID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzKTsK
IApAQCAtMTk0NSw3ICsxOTQ1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAg
ICAgIG1fY2xpZW50LnJ1bk1vZGFsKHRvQVBJKCZwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRp
bmdVUkwsIEFQSTo6RGF0YSYgZGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBzYXZlRGF0YVRvRmls
ZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiBvcmlnaW5h
dGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMjE4NSw3ICsyMTg1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2
aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNs
aWUKICAgICAgICAgICAgIHJldHVybiBBUEk6OkRhdGE6OmNyZWF0ZShtYXN0ZXJLZXkuZGF0YSgp
LCBtYXN0ZXJLZXkuc2l6ZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxBUEk6OlN0
cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgdW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFs
bGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBvdmVycmlkZQorICAgICAgICBS
ZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQ
YWdlUHJveHkmIHBhZ2UsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6
U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkgb3ZlcnJpZGUKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKHRvSW1wbChtX2Ns
aWVudC5jb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHRvQVBJKCZwYWdlKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlR3JvdXAuY3BwCmluZGV4IDM5MGUxMjA3NDdlYWU4OWNmZDlmZWU2OWRhY2Vj
YjZkZTA3OTVlYzUuLjAzNzc0MTBlYTdlNjdlNmIwOTEwY2ZiYzA1YTliMzJmNThjYjQzZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0KFdLUGFnZUdyb3Vw
UmVmIHBhZ2VHcm91cFJlZiwgV0tTdHJpbmdSZWYgc291cmMKICAgICBhdXRvIHdoaXRlbGlzdCA9
IHRvSW1wbCh3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zKTsKICAgICBhdXRvIGJsYWNrbGlzdCA9IHRv
SW1wbChibGFja2xpc3RlZFVSTFBhdHRlcm5zKTsKIAotICAgIFJlZjxBUEk6OlVzZXJTdHlsZVNo
ZWV0PiB1c2VyU3R5bGVTaGVldCA9IEFQSTo6VXNlclN0eWxlU2hlZXQ6OmNyZWF0ZShXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgKGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV2Vi
Q29yZTo6YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYmFzZVVSTFN0
cmluZykpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8
U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0
b3I8U3RyaW5nPigpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMp
LCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpu
b3JtYWxXb3JsZCgpKTsKKyAgICBSZWY8QVBJOjpVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxlU2hl
ZXQgPSBBUEk6OlVzZXJTdHlsZVNoZWV0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
eyBzb3VyY2UsIChiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6ICBV
UkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmlu
Z1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0
cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJh
bWVzKGluamVjdGVkRnJhbWVzKSwgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6
VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAKICAgICB0b0ltcGwocGFnZUdyb3Vw
UmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQodXNlclN0eWxl
U2hlZXQuZ2V0KCkpOwogfQpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFdLUGFnZUdyb3VwQWRkVXNl
clNjcmlwdChXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLU3RyaW5nUmVmIHNvdXJjZVJl
ZgogICAgIGF1dG8gd2hpdGVsaXN0ID0gdG9JbXBsKHdoaXRlbGlzdGVkVVJMUGF0dGVybnMpOwog
ICAgIGF1dG8gYmxhY2tsaXN0ID0gdG9JbXBsKGJsYWNrbGlzdGVkVVJMUGF0dGVybnMpOwogICAg
IAotICAgIGF1dG8gdXJsID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFu
a1VSTCgpIDogV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5nKTsKKyAg
ICBhdXRvIHVybCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDog
IFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZyk7CiAgICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNl
clNjcmlwdCA9IEFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBX
VEZNb3ZlKHNvdXJjZSksIFdURk1vdmUodXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0
cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50
b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9u
VGltZShpbmplY3Rpb25UaW1lKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVk
RnJhbWVzKSB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIHRv
SW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0
KHVzZXJTY3JpcHQuZ2V0KCksIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5jcHAKaW5kZXggNjdhNTQyM2VhNWVkNTdhMWU4YmY5ZGFkODMyMGUwNGRiYWY3MzFi
NC4uMzg1ZGNiY2Q4NjM3Njg2MjY3MmY2ZTg0NzA0ZDU3ZGVmNzgyNWJlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCkBAIC00MSw4ICs0MSw4IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFU
eXBlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tB
Z2dyZWdhdG9yLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBXS1R5cGVJRCBXS1dlYnNpdGVE
YXRhU3RvcmVHZXRUeXBlSUQoKQogewpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVn
TW9kZShXSwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHN0b3JlLT5zZXRQcmV2
YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0geworICAgIHN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9u
SGFuZGxlcl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsK
IH0KQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NMYXN0U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPnNldExhc3RTZWVuKFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgU2Vjb25kcyB7IHNl
Y29uZHMgfSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgc3RvcmUtPnNldExh
c3RTZWVuKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgU2Vjb25k
cyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTIxLDExICsxMjEsMTEg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGEKICAgICB9CiAKICAgICBpZiAodmFsdWUpCi0gICAg
ICAgIHN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9u
SGFuZGxlcl0geworICAgICAgICBzdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhh
bmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgICAg
ICB9KTsKICAgICBlbHNlCi0gICAgICAgIHN0b3JlLT5jbGVhclByZXZhbGVudFJlc291cmNlKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIHN0b3JlLT5jbGVhclBy
ZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiB9CkBAIC0xMzksMTEgKzEzOSwxMSBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2Uo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmCiAgICAgfQogCiAgICAgaWYgKHZhbHVlKQotICAgICAgICBz
dG9yZS0+c2V0VmVyeVByZXZhbGVudFJlc291cmNlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25I
YW5kbGVyXSB7CisgICAgICAgIHN0b3JlLT5zZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlv
bkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAg
ICAgICB9KTsKICAgICBlbHNlCi0gICAgICAgIHN0b3JlLT5jbGVhclByZXZhbGVudFJlc291cmNl
KFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIHN0b3JlLT5jbGVh
clByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiB9CkBAIC0xNjksNyArMTY5LDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0
b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlz
UHJldmFsZW50UmVzb3VyY2UpIHsKKyAgICBzdG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZShVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFj
a10oYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzUHJldmFs
ZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAg
c3RvcmUtPmlzVmVyeVByZXZhbGVudFJlc291cmNlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShi
b29sIGlzVmVyeVByZXZhbGVudFJlc291cmNlKSB7CisgICAgc3RvcmUtPmlzVmVyeVByZXZhbGVu
dFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShib29sIGlzVmVyeVByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAg
IGNhbGxiYWNrKGlzVmVyeVByZXZhbGVudFJlc291cmNlLCBjb250ZXh0KTsKICAgICB9KTsKIH0K
QEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoV0tXZWJzaXRlRGF0YVN0bwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXIoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJyZXNvdXJj
ZUhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKSB7CisgICAgc3RvcmUtPmlzUmVnaXN0ZXJl
ZEFzU3VicmVzb3VyY2VVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YnJlc291cmNl
SG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3Qp
LT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIpIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJj
ZVVuZGVyLCBjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoV0tX
ZWJzaXRlRGF0YVN0b3JlUgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPmlz
UmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdl
YktpdDo6dG9JbXBsKHN1YkZyYW1lSG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpIHsKKyAgICBz
dG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoc3ViRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRv
cEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0
ZXJlZEFzU3ViRnJhbWVVbmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1
YkZyYW1lVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjIxLDcgKzIyMSw3IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdU
byhXS1dlYnNpdGVEYXRhU3RvcmVSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9y
ZS0+aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5z
dHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0
aW5nVG8pIHsKKyAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtjb250ZXh0
LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pIHsKICAgICAgICAg
Y2FsbGJhY2soaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvLCBjb250ZXh0KTsKICAgICB9KTsK
IH0KQEAgLTIzNSwxMSArMjM1LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYKICAgICB9CiAK
ICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5sb2dVc2VySW50ZXJhY3Rpb24oV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmxvZ1VzZXJJbnRl
cmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmUtPmNsZWFyVXNl
ckludGVyYWN0aW9uKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAg
IHN0b3JlLT5jbGVhclVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogfQpAQCAtMjUyLDcg
KzI1Miw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlcklu
dGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBzdG9yZS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlVSTChXZWJDb3Jl
OjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxi
YWNrXShib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbikgeworICAgIHN0b3JlLT5oYXNIYWRVc2Vy
SW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKSB7CiAgICAgICAg
IGNhbGxiYWNrKGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgY29udGV4dCk7CiAgICAgfSk7CiB9CkBA
IC0yNjMsNyArMjYzLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3Jh
bmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3IKICAgICBpZiAoIXN0b3Jl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0R3JhbmRmYXRoZXJlZChXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIHZh
bHVlKTsKKyAgICBzdG9yZS0+c2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIHZhbHVlKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWRGdW5jdGlvbiBjYWxsYmFjaykKQEAgLTI3NCw3ICsy
NzQsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFj
a10oYm9vbCBpc0dyYW5kZmF0aGVyZWQpIHsKKyAgICBzdG9yZS0+aGFzSGFkVXNlckludGVyYWN0
aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQs
IGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJlZCkgewogICAgICAgICBjYWxsYmFjayhpc0dy
YW5kZmF0aGVyZWQsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9y
aWdpbihXS1dlYnNpdGVEYXRhU3RvCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc3RvcmUtPnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6
OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5n
KCkpKTsKKyAgICBzdG9yZS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYg
dG9wRnJhbWVIb3N0KQpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRh
CiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmUtPnNldFN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpKTsKKyAgICBzdG9yZS0+
c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhv
c3QpLT5zdHJpbmcoKSkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykK
QEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0bwogICAgIGlmICghc3Rv
cmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmco
KSkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCkBAIC0zMTIs
NyArMzEyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVMKICAgICBpZiAoIXN0b3JlKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RGcm9tKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3Ry
aW5nKCkpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJh
bWVVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pCkBAIC0zMjEsNyAr
MzIxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICBpZiAoIXN0b3JlKQogICAgICAg
ICByZXR1cm47CiAgICAgCi0gICAgc3RvcmUtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhX
ZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGly
ZWN0ZWRUbyktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9CiAKIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RG
cm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJv
bShXS1dlYnNpdGVEYXRhU3RvcgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSkt
PnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkpOwogfQogCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3Jl
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3Jl
Lm1tCmluZGV4IGE4MDZiZGVjMmUyZDQ4MjNiMmYxZTkyZWQxMzNlNzEzNjVkZWY2NjQuLmM4NTgw
MzNhZTU5MWIzYTIyMzliMDFmMWI5YjBmMzlmZGZiYjQwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KQEAgLTMw
LDEwICszMCwxMCBAQAogCiAjaW1wb3J0ICJIVFRQQ29va2llQWNjZXB0UG9saWN5LmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0Nvb2tpZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3Rm
L1dlYWtPYmpDUHRyLmg+CiAKIHN0YXRpYyBOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqY29yZUNv
b2tpZXNUb05TQ29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29yZUNvb2tp
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2Vy
U2NyaXB0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlw
dC5tbQppbmRleCA5Y2Y2NjgxYWFiMzkxYzM1YjYzNzkwN2IxMTEwODZmODI3OTc2ZDVhLi44ZTBj
NzIxMjg2ODI4MjExOWYyZjg5ZjI5NTA2NWFmNGQyZmVhMDljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KQEAgLTk1LDcgKzk1LDcg
QEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgaW5q
ZWN0aW9uVGltZTooV0tVc2VyU2NyaXB0SW4KICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRd
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldy
YXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpT
dHJpbmcoc291cmNlKSwgV2ViQ29yZTo6VVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5n
VmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2ts
aXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1l
KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2Vi
Q29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVu
dFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNj
cmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVS
TChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBB
UEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNj
cmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJD
b3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0s
ICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggMzFmMmE5MzZkOWFmOTFmOWUwYmZiOTY2
ZWEwYmZhZGZjOTk4OTA1Zi4uMDdhZTc4NGI3NTMzYzIzZjZjZDY0YTA1NjU5NDRhYzU1YjQzNDYw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTQ0LDggKzQ0LDggQEAKICNpbXBvcnQgIl9X
S1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMUGFyc2VyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogI2lmIFBM
QVRGT1JNKElPUykKQEAgLTQ3OCw3ICs0NzgsNyBAQCAtICh2b2lkKXNldFVSTFNjaGVtZUhhbmRs
ZXI6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXIgZm9yVVJMU2NoZQog
ICAgIGlmIChbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6dXJsU2NoZW1lXSkKICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIicl
QCcgaXMgYSBVUkwgc2NoZW1lIHRoYXQgV0tXZWJWaWV3IGhhbmRsZXMgbmF0aXZlbHkiLCB1cmxT
Y2hlbWVdOwogCi0gICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJDb3JlOjpVUkxQYXJzZXI6
Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAgYXV0byBjYW5vbmljYWxT
Y2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJsU2NoZW1l
KTsKICAgICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIiclQCcgaXMgbm90IGEgdmFsaWQg
VVJMIHNjaGVtZSIsIHVybFNjaGVtZV07CiAKQEAgLTQ5MCw3ICs0OTAsNyBAQCAtICh2b2lkKXNl
dFVSTFNjaGVtZUhhbmRsZXI6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRs
ZXIgZm9yVVJMU2NoZQogCiAtIChpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5k
bGVyRm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQogewotICAgIGF1dG8gY2Fub25p
Y2FsU2NoZW1lID0gV2ViQ29yZTo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1
cmxTY2hlbWUpOworICAgIGF1dG8gY2Fub25pY2FsU2NoZW1lID0gV1RGOjpVUkxQYXJzZXI6Om1h
eWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CiAgICAgaWYgKCFjYW5vbmljYWxTY2hl
bWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IGM2NDlmZjZjYmNl
YTVhMWRhNDVmMzYwYmU1MzljN2RiYzQ5MjgzMjYuLjUwNmZiNWJmNjc0ZmMzYWQ5NmVlM2EwMjli
N2FjZDNjZjhhMzQwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMzgsOSArMzgsOSBAQAogI2ltcG9y
dCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbi5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaCIKLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJLaXQvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYnNpdGVEYXRhU3RvcmUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9u
TWFuaWZlc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5tbQppbmRleCAzZWRkODUzMWEwOThiMDRmMjQzN2Q3ZGU1Yjg1NDBmM2Y2
MGVjZjcyLi5kZmVkMGE5YmUxNzUzNzIyYjY1NDA3NzFjODdiMzY1YWI2ZGYwOTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5p
ZmVzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5tbQpAQCAtNTQsOSArNTQsOSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDb2RlcjooTlNDb2RlciAqKWFEZWNvZGVyCiAgICAgICAgIFdURjo6U3RyaW5nKG5hbWUpLAog
ICAgICAgICBXVEY6OlN0cmluZyhzaG9ydE5hbWUpLAogICAgICAgICBXVEY6OlN0cmluZyhkZXNj
cmlwdGlvbiksCi0gICAgICAgIFdlYkNvcmU6OlVSTChzY29wZVVSTCksCisgICAgICAgIFVSTChz
Y29wZVVSTCksCiAgICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZl
c3Q6OkRpc3BsYXk+KGRpc3BsYXkpLAotICAgICAgICBXZWJDb3JlOjpVUkwoc3RhcnRVUkwpCisg
ICAgICAgIFVSTChzdGFydFVSTCkKICAgICB9OwogCiAgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVj
dEluV3JhcHBlcjxBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+KHNlbGYsIFdURk1vdmUoY29yZUFw
cGxpY2F0aW9uTWFuaWZlc3QpKTsKQEAgLTgzLDcgKzgzLDcgQEAgLSAodm9pZCllbmNvZGVXaXRo
Q29kZXI6KE5TQ29kZXIgKilhQ29kZXIKIAogKyAoX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKWFw
cGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjooTlNTdHJpbmcgKilqc29uIG1hbmlmZXN0VVJMOihO
U1VSTCAqKW1hbmlmZXN0VVJMIGRvY3VtZW50VVJMOihOU1VSTCAqKWRvY3VtZW50VVJMCiB7Ci0g
ICAgYXV0byBtYW5pZmVzdCA9IFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBh
cnNlKFdURjo6U3RyaW5nKGpzb24pLCBXZWJDb3JlOjpVUkwobWFuaWZlc3RVUkwpLCBXZWJDb3Jl
OjpVUkwoZG9jdW1lbnRVUkwpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gV2ViQ29yZTo6QXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2UoV1RGOjpTdHJpbmcoanNvbiksIFVSTChtYW5pZmVz
dFVSTCksIFVSTChkb2N1bWVudFVSTCkpOwogICAgIHJldHVybiB3cmFwcGVyKEFQSTo6QXBwbGlj
YXRpb25NYW5pZmVzdDo6Y3JlYXRlKG1hbmlmZXN0KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQppbmRleCBl
NmYwOTBmZjVkNDEzN2M2NTg5Y2VlOGZjYTgzNTAxM2I4YTZkZTNkLi42MTQ1MjMyYTBkOGU3ZjFh
OGQ3MmRhZDcxMzc3YmE1Yzc0YmI4NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCkBAIC03MCw3ICs3MCw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgZm9yTWFp
bkZyYW1lT25seTooQk9PTClmb3JNYWluCiAgICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwg
d2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0
IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJl
PwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6T2JqZWN0Ojpj
b25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNl
clN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7IFdlYkNvcmU6OlVSTCgpLCBXVEY6
OlN0cmluZyhbYmFzZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSkgfSwgQVBJOjp0
b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2Fj
eUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1l
T25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2Vy
TGV2ZWwgfSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBBUEk6
Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgeyAgVVJMKCksIFdU
Rjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6
OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVn
YWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJh
bWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVz
ZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOwogCiAgICAg
cmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmNwcAppbmRleCBhNzI5ZmFiOWE3OWUxZGNkMTU0ZjQzMDkxZDE3ZjRlZGM4
MGRmM2I0Li42NzRhNWRiMDQzYzhhNjBmMzYyMGFhN2JhMDE4YzFmOTg1ZWRmOGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAg
LTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIC8vIEZvciBtZXRo
b2RzIHRoYXQgYXJlIG1lYW50IHRvIHN1cHBvcnQgQVBJIGZyb20gdGhlIG1haW4gdGhyZWFkIC0g
c2hvdWxkIG5vdCBiZSBjYWxsZWQgaW50ZXJuYWxseQogI2RlZmluZSBBU1NFUlRfTk9UX1NZTkNf
VEhSRUFEKCkgQVNTRVJUKCFtX3N5bmNUaHJlYWRSdW5uaW5nIHx8ICFJU19JQ09OX1NZTkNfVEhS
RUFEKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGRlODJmZGFiNWM3Zjk1M2ZhNWJjYWY0MDdkOWM2
NmNiMTg1MjI3ZTMuLjdhOTQyOTE5ZGRmOGM0ZjJhM2IxNmRhNzY3MDE0YjJjMmMxNTRmYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENv
b2tpZU1hbmFnZXIuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCB3ZWJraXRfY29va2llX21h
bmFnZXJfZ2V0X2Nvb2tpZXMoV2ViS2l0Q29va2llTWFuYWdlciogbWFuYWdlciwgY29uc3QgZ2No
YXIKIAogICAgIC8vIENvb2tpZXMgYXJlIHJlYWQvd3JpdHRlbiBmcm9tL3RvIHRoZSBzYW1lIFNR
TGl0ZSBkYXRhYmFzZSBvbiBkaXNrIHJlZ2FyZGxlc3MKICAgICAvLyBvZiB0aGUgcHJvY2VzcyB3
ZSBhY2Nlc3MgdGhlbSBmcm9tLCBzbyBqdXN0IHVzZSB0aGUgZmlyc3QgcHJvY2VzcyBwb29sLgot
ICAgIHByb2Nlc3NQb29sc1swXS0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCkt
PmdldENvb2tpZXMoc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFN0cmlu
Zzo6ZnJvbVVURjgodXJpKSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAg
ICBwcm9jZXNzUG9vbHNbMF0tPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5n
ZXRDb29raWVzKHNlc3Npb25JRCwgVVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpLCBb
dGFzayA9IFdURk1vdmUodGFzayldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29r
aWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvciAhPSBD
YWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGNhbiBvbmx5
IGhhcHBlbiBpbiBjYXNlcyB3aGVyZSB0aGUgd2ViIHByb2Nlc3MgaXMgbm90IGF2YWlsYWJsZSwK
ICAgICAgICAgICAgIC8vIGNvbnNpZGVyIHRoZSBvcGVyYXRpb24gImNhbmNlbGxlZCIgZnJvbSB0
aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgY2xpZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAK
aW5kZXggY2QwMjZlNGY4ZTkxYTdhYmZiMTliY2MzMGIwYTEyMzU4ZjI3ZGU1MC4uMzdlNmNjYTBj
ZWJjZTkxNDczMGUzYzZkNDI1YzVmZWY3N2ZiNDg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Qu
Y3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dEVuY29kaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRl
IDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggM2JjYzIxMjM2
Nzg1OTM2YTc3MTI5N2U2ZTM5OGQyODBkZmI2YjgwMi4uODgzMzZiM2RjNDY4NDk4OGFjNzdkMTY5
ZGE2YTU5NWU2MWU1OWU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjEsNyArMjEsNyBAQAog
I2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luLmgiCiAKICNpbmNsdWRlICJXZWJLaXRTZWN1
cml0eU9yaWdpblByaXZhdGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIC8qKgpAQCAtMTEw
LDcgKzExMCw3IEBAIFdlYktpdFNlY3VyaXR5T3JpZ2luKiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X25ld19mb3JfdXJpKGNvbnN0IGdjaGFyKiB1cmkpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwodXJpLCBudWxscHRyKTsKIAotICAgIHJldHVybiB3ZWJraXRTZWN1cml0eU9yaWdpbkNyZWF0
ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSkpOworICAgIHJldHVybiB3ZWJraXRTZWN1cml0
eU9yaWdpbkNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChVUkwoKSwg
U3RyaW5nOjpmcm9tVVRGOCh1cmkpKSkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCAwMjc1NDMxMjdh
ZWUxYjA4NmQwMzYxNTFkMTE4Y2ZjNzk2NjZhNDJlLi45NmY5ZWUxMTgyYTI0MjNiOTE2M2RjM2Fm
MDgyMTZiM2U5MTg5YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFVJQ2xpZW50
IDogcHVibGljIEFQSTo6VUlDbGllbnQgewogICAgIHZvaWQgY3JlYXRlTmV3UGFnZShXZWJQYWdl
UHJveHkmIHBhZ2UsIFJlZjxBUEk6OkZyYW1lSW5mbz4mJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlc291cmNlUmVxdWVzdCwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMm
JiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICB7CiAgICAgICAgIGF1dG8gdXNlckluaXRpYXRl
ZEFjdGl2aXR5ID0gcGFnZS5wcm9jZXNzKCkudXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRp
b25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICAgICAgV2ViS2l0
TmF2aWdhdGlvbkFjdGlvbiBuYXZpZ2F0aW9uQWN0aW9uKEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6
Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm8ucHRyKCksIG51
bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBXZWJDb3JlOjpV
UkwgeyB9LCBmYWxzZSwgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKSk7CisgICAgICAg
IFdlYktpdE5hdmlnYXRpb25BY3Rpb24gbmF2aWdhdGlvbkFjdGlvbihBUEk6Ok5hdmlnYXRpb25B
Y3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgZnJhbWVJbmZvLnB0
cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgVVJM
IHsgfSwgZmFsc2UsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSkpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih3ZWJraXRXZWJWaWV3Q3JlYXRlTmV3UGFnZShtX3dlYlZpZXcsIHdp
bmRvd0ZlYXR1cmVzLCAmbmF2aWdhdGlvbkFjdGlvbikpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1
ZXN0LmNwcAppbmRleCA5MTY3NGFjMjg4ZjdlNzhmNDUxZTk1OTNkM2E1NTQ4ZmY1OTg4ODlmLi4w
N2I1OGFkMzIzZDU0NThjOTAzNjYzZGI4MzBlOTRiZTdlNWQ4OGZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1
ZXN0LmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFBy
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291
cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNw
cAppbmRleCAwZmE0YTE4Zjg5YzhjNTFhNDU0MDc3OGY1YWUyN2JlYTg3ZDdiNWYxLi4yMzQ4NTk2
NjNkMWYyYzc4MDg5OGYwNjBmNDAxNDk4OGU3ODZiNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNjYsMTIgKzY2LDEy
IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxq
c2MvSlNDQ29udGV4dFByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5m
by5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNh
aXJvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxp
Yi5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0yNjQ3LDcgKzI2NDcsNyBAQCB2b2lkIHdlYmtp
dF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3Qg
Z2NoYXIqIHBsYWluVAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdl
YlZpZXcpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHBsYWluVGV4dCk7CiAKLSAgICBnZXRQYWdl
KHdlYlZpZXcpLmxvYWREYXRhKHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGxh
aW5UZXh0KSwgcGxhaW5UZXh0ID8gc3RybGVuKHBsYWluVGV4dCkgOiAwIH0sICJ0ZXh0L3BsYWlu
Il9zLCAiVVRGLTgiX3MsIGJsYW5rVVJMKCkuc3RyaW5nKCkpOworICAgIGdldFBhZ2Uod2ViVmll
dykubG9hZERhdGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwbGFpblRleHQp
LCBwbGFpblRleHQgPyBzdHJsZW4ocGxhaW5UZXh0KSA6IDAgfSwgInRleHQvcGxhaW4iX3MsICJV
VEYtOCJfcywgV1RGOjpibGFua1VSTCgpLnN0cmluZygpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggYmJkNTE2ZTcyOTYyMzM3
YmRkZmVjZDBjNTZkMzk4MTQ4MzNkOGE3NC4uYjdlNjMzMGVhZWIyZTIwMjJlNjIzZjNhNjhlYzFi
YzE3YWEzNzc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdl
clByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggNzgwYTE1ZTk2
ZDNjMzYyNDZiYjVkNWE0MWM3MTI3YjJhYmRkMTMxYy4uMmYwNjYwODZkOTkyZmMzMGZhZjZjNzk0
MGFjZWYyZmRmY2M4NTNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtMTA1
LDExICsxMDUsMTEgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hvd1BheW1l
bnRVSShjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW4KIAogICAgIG1fc3RhdGUgPSBT
dGF0ZTo6QWN0aXZhdGluZzsKIAotICAgIFdlYkNvcmU6OlVSTCBvcmlnaW5hdGluZ1VSTChXZWJD
b3JlOjpVUkwoKSwgb3JpZ2luYXRpbmdVUkxTdHJpbmcpOworICAgIFVSTCBvcmlnaW5hdGluZ1VS
TChVUkwoKSwgb3JpZ2luYXRpbmdVUkxTdHJpbmcpOwogCi0gICAgVmVjdG9yPFdlYkNvcmU6OlVS
TD4gbGlua0ljb25VUkxzOworICAgIFZlY3RvcjxVUkw+IGxpbmtJY29uVVJMczsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGxpbmtJY29uVVJMU3RyaW5nIDogbGlua0ljb25VUkxTdHJpbmdzKQotICAg
ICAgICBsaW5rSWNvblVSTHMuYXBwZW5kKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgbGlu
a0ljb25VUkxTdHJpbmcpKTsKKyAgICAgICAgbGlua0ljb25VUkxzLmFwcGVuZChVUkwoVVJMKCks
IGxpbmtJY29uVVJMU3RyaW5nKSk7CiAKICAgICBwbGF0Zm9ybVNob3dQYXltZW50VUkob3JpZ2lu
YXRpbmdVUkwsIGxpbmtJY29uVVJMcywgcGF5bWVudFJlcXVlc3QsIFt0aGlzXShib29sIHJlc3Vs
dCkgewogICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZhdGluZyk7CkBAIC0y
MjQsNyArMjI0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkQ2FuY2Vs
UGF5bWVudFNlc3Npb24oKQogICAgIGRpZFJlYWNoRmluYWxTdGF0ZSgpOwogfQogCi12b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXJsKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJj
aGFudChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQobV9tZXJjaGFudFZhbGlkYXRpb25T
dGF0ZSA9PSBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6SWRsZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5oCmluZGV4IDA4NTAxOWRhMDZlMzJmYjBmNGVjNTg5OTE1MzU0ODZmZWJhN2Y4ZGEu
LmVkZTdhNzBjZjIxMzU5NDg4MGE2OGY1MGRhN2NmOWNmMTg1NDY2ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuaApAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBQYXltZW50OwogY2xhc3MgUGF5
bWVudENvbnRhY3Q7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uOwogY2xhc3MgUGF5bWVu
dE1ldGhvZDsKLWNsYXNzIFVSTDsKIH0KIAogT0JKQ19DTEFTUyBOU09iamVjdDsKQEAgLTYxLDcg
KzYwLDcgQEAgY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgOiBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVcKICAgICB+V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkoKTsKIAogICAgIHZvaWQgZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKTsKLSAgICB2
b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCB2YWxp
ZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkQXV0aG9yaXplUGF5bWVudChj
b25zdCBXZWJDb3JlOjpQYXltZW50Jik7CiAgICAgdm9pZCBkaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdN
ZXRob2QmKTsKICAgICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChjb25zdCBXZWJDb3Jl
OjpQYXltZW50Q29udGFjdCYpOwpAQCAtOTksNyArOTgsNyBAQCBjbGFzcyBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5N
YWtlVwogICAgIGJvb2wgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHMoKTsKICAgICB2b2lkIHBsYXRm
b3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW5QYXltZW50
U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9t
YWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7
Ci0gICAgdm9pZCBwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmln
aW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHBsYXRmb3JtU2hv
d1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYg
bGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dCYsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAg
dm9pZCBwbGF0Zm9ybUNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBh
eW1lbnRNZXJjaGFudFNlc3Npb24mKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVTaGlwcGlu
Z01ldGhvZFNlbGVjdGlvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0
aG9kVXBkYXRlPiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNl
bGVjdGlvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0
ZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29h
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaAppbmRl
eCAxNTlhYzE5MjQ2MmI0OWY3Zjk0NmZjNDZhNmU5OGY5MjZiYmNiOTZjLi40ZTBmMjJiN2FkZjUx
MDQxOWZlNjBhYzliYTRlYTU0ODlkYmFjYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oCkBAIC0zMSwxNSArMzEsMTEgQEAKICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvUGFzc0tpdFNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTsKIAotUmV0
YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkm
LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYpOworUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVx
dWVzdChXZWJQYWdlUHJveHkmLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0
b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tCmluZGV4IGE0ZWVjY2IwOTFiZjBiNDBjZmIwYzA1MzI4MjI1NjkzMWIwNzM0
YzUuLmRmNWI5ZGE3ZGRkYmZiNTY1YTU4YWJkZTI5ZWQzMzM3NDFiNTNmYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
Y29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMzIsMTEgKzMyLDEx
IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50
QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUGFzc0tp
dFNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5o
PgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNp
ZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwoUGFz
c0tpdCkKQEAgLTUxMSw3ICs1MTEsNyBAQCBzdGF0aWMgUEtQYXltZW50UmVxdWVzdEFQSVR5cGUg
dG9BUElUeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OgogfQogI2Vu
ZGlmCiAKLVJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiB0b1BLUGF5bWVudFJlcXVlc3QoV2Vi
UGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdV
UkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkKK1JldGFp
blB0cjxQS1BheW1lbnRSZXF1ZXN0PiB0b1BLUGF5bWVudFJlcXVlc3QoV2ViUGFnZVByb3h5JiB3
ZWJQYWdlUHJveHksIGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+
JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0JiBwYXltZW50UmVxdWVzdCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW2FsbG9j
UEtQYXltZW50UmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggYjEwZDkyZTM4YjBjMTc1MzMwMDI4MmViN2Q1ODBl
MmMyMzZjZmE4OS4uMTdiN2YyZjg5YTE4Yjc4MDZhMmU5NmM2NGUwOGRiMWZmMjg2Yzc1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxl
UGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtNDEsNyArNDEsNyBA
QCBTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdp
bmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxTdHJpbmdz
LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwg
V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwm
IG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFVJVmll
d0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fd2ViUGFnZVByb3h5LnVp
Q2xpZW50KCkucHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eU1hYy5tbQppbmRleCA3NDE1OTM4M2YxOTU0MjdkYjk3NjBhOGMwMWVj
NzA2N2E2N2M2Zjk1Li4yNTE0OTUwZTVkMDI0NjAzZTA1NzFhYmIwMzZmNzkxMjkzMGQxNjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC00MSw3ICs0MSw3
IEBAIFNPRlRfTElOS19DT05TVEFOVChQYXNzS2l0LCBQS0V4dGVuc2lvblBheW1lbnRBdXRob3Jp
emF0aW9uVUlFeHRlbnNpb25Qb2ludE5hbWUsCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3Qg
V2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4m
IGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3QmIHJlcXVlc3QsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQ
YXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxp
bmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3QmIHJlcXVlc3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIVBhc3NLaXRMaWJyYXJ5KCkpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBmNjNiYjJiYWZlYjk4
ZGU0MzVlZmI1ZjVjZDUzZGU0MGM0NzZjYmUxLi5hMTIyODc0YzFmMDUwNTI4ZjY3YjQ1MTNhYTdk
YjQyNDlmMTZhMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNDQsMTAgKzQ0LDEwIEBA
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIApAQCAt
NjU5LDcgKzY1OSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om5hdmlnYXRlQnJvd3Np
bmdDb250ZXh0KGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTCiAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJU
aGUgcGFyYW1ldGVyICdwYWdlTG9hZFN0cmF0ZWd5JyBpcyBpbnZhbGlkLiIpOwogICAgIGF1dG8g
cGFnZUxvYWRUaW1lb3V0ID0gb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQgPyBTZWNvbmRzOjpmcm9t
TWlsbGlzZWNvbmRzKCpvcHRpb25hbFBhZ2VMb2FkVGltZW91dCkgOiBkZWZhdWx0UGFnZUxvYWRU
aW1lb3V0OwogCi0gICAgcGFnZS0+bG9hZFJlcXVlc3QoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCB1cmwpKTsKKyAgICBwYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHVybCkpOwogICAg
IHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uUGFnZSgqcGFnZSwgcGFnZUxvYWRTdHJhdGVn
eS52YWx1ZSgpLCBwYWdlTG9hZFRpbWVvdXQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIApAQCAt
MTI4Nyw3ICsxMjg3LDcgQEAgc3RhdGljIFN0cmluZyBkb21haW5CeUFkZGluZ0RvdFByZWZpeElm
TmVlZGVkKFN0cmluZyBkb21haW4pCiAgICAgaWYgKGRvbWFpblswXSAhPSAnLicpIHsKICAgICAg
ICAgLy8gUkZDIDI5NjU6IElmIGFuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIHZhbHVlIGRvZXMgbm90
IHN0YXJ0IHdpdGggYSBkb3QsIHRoZSB1c2VyIGFnZW50IHN1cHBsaWVzIGEgbGVhZGluZyBkb3Qu
CiAgICAgICAgIC8vIEFzc3VtZSB0aGF0IGFueSBob3N0IHRoYXQgZW5kcyB3aXRoIGEgZGlnaXQg
aXMgdHJ5aW5nIHRvIGJlIGFuIElQIGFkZHJlc3MuCi0gICAgICAgIGlmICghV2ViQ29yZTo6VVJM
Ojpob3N0SXNJUEFkZHJlc3MoZG9tYWluKSkKKyAgICAgICAgaWYgKCFVUkw6Omhvc3RJc0lQQWRk
cmVzcyhkb21haW4pKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJy4nLCBkb21haW4p
OwogICAgIH0KICAgICAKQEAgLTEzMDAsNyArMTMwMCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OmFkZFNpbmdsZUNvb2tpZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRs
ZSwKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIFdlYkNvcmU6OlVSTCBhY3RpdmVVUkwgPSBXZWJD
b3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHBhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVVUkwo
KSk7CisgICAgVVJMIGFjdGl2ZVVSTCA9IFVSTChVUkwoKSwgcGFnZS0+cGFnZUxvYWRTdGF0ZSgp
LmFjdGl2ZVVSTCgpKTsKICAgICBBU1NFUlQoYWN0aXZlVVJMLmlzVmFsaWQoKSk7CiAKICAgICBX
ZWJDb3JlOjpDb29raWUgY29va2llOwpAQCAtMTM1Nyw3ICsxMzU3LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIFNZTkNfRkFJTF9XSVRIX1BSRURF
RklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAgV2ViQ29yZTo6VVJMIGFjdGl2ZVVS
TCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFj
dGl2ZVVSTCgpKTsKKyAgICBVUkwgYWN0aXZlVVJMID0gVVJMKFVSTCgpLCBwYWdlLT5wYWdlTG9h
ZFN0YXRlKCkuYWN0aXZlVVJMKCkpOwogICAgIEFTU0VSVChhY3RpdmVVUkwuaXNWYWxpZCgpKTsK
IAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJvY2Vzc1Bv
b2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQppbmRleCA2ZmYxYjQ3ODMyMzky
YmQwMzI1NjIxZTUwNWZiMDRhNzRmNDU2NWZmLi4xZDZlNzE4ODQ1YjE0ODVlMGIyNjY2YjlhZjFl
ZjkzMTYwMjA0MDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9E
b3dubG9hZENsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3du
bG9hZENsaWVudC5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRp
ZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAg
ICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewogICAgICAg
ICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCkpIHsK
ICAgICAgICAgICAgIE5TVVJMICpkZXN0aW5hdGlvblVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6KE5TU3RyaW5nICopZG93bmxvYWRQcm94eS5kZXN0aW5hdGlvbkZpbGVuYW1lKCldOwotICAg
ICAgICAgICAgd2ViUGFnZS0+c3lzdGVtUHJldmlld0NvbnRyb2xsZXIoKS0+ZmluaXNoKFdlYkNv
cmU6OlVSTChkZXN0aW5hdGlvblVSTCkpOworICAgICAgICAgICAgd2ViUGFnZS0+c3lzdGVtUHJl
dmlld0NvbnRyb2xsZXIoKS0+ZmluaXNoKFVSTChkZXN0aW5hdGlvblVSTCkpOwogICAgICAgICB9
CiAgICAgICAgIHJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoZG93bmxvYWRQcm94eSk7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLmgKaW5kZXggNDU5ODVmNTBlNGJmZTcwMjVhY2RhOGY2MmU1NWQ5OGNhZDM0
NWJiYy4uMDU1NmVjY2EzMjQ4MGU5ZDI2NzQ1YWU3YjE5NGQwZTVjOWU2Y2I5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTExNiw3
ICsxMTYsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uU3RhdGUgZmluYWwgOiBwcml2YXRlIFBhZ2VMb2Fk
U3RhdGU6Ok9ic2VydmVyIHsKIAogICAgICAgICBSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9N
YXN0ZXJLZXkoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CiAKLSAgICAgICAgUmVmUHRyPEFQSTo6
U3RyaW5nPiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5Jiwg
dW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVu
Z2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAgICAgICBSZWZQdHI8
QVBJOjpTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJv
eHkmLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNo
YWxsZW5nZVN0cmluZywgY29uc3QgVVJMJikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoUVVJQ0tfTE9P
SykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkg
b3ZlcnJpZGU7CkBAIC0xMjQsOCArMTI0LDggQEAgY2xhc3MgTmF2aWdhdGlvblN0YXRlIGZpbmFs
IDogcHJpdmF0ZSBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKE1BQykKLSAgICAgICAgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExv
YWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKLSAgICAgICAgdm9pZCByZXNvbHZlV2ViR0xMb2Fk
UG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmluYWw7CisgICAg
ICAgIHZvaWQgd2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmlu
YWw7CisgICAgICAgIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBj
b25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGlj
eSk+JiYpIGNvbnN0IGZpbmFsOwogICAgICAgICBib29sIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbShXZWJQYWdlUHJveHkmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgYm9vbCBpblBhZ2VD
YWNoZSwgQVBJOjpPYmplY3QqKSBmaW5hbDsKICAgICAgICAgYm9vbCBkaWRGYWlsVG9Jbml0aWFs
aXplUGx1Z0luKFdlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYpIGZpbmFsOwogICAgICAg
ICBib29sIGRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6
RGljdGlvbmFyeSYpIGZpbmFsOwpAQCAtMTMzLDcgKzEzMyw3IEBAIGNsYXNzIE5hdmlnYXRpb25T
dGF0ZSBmaW5hbCA6IHByaXZhdGUgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgewogICAgICAgICBi
b29sIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkmLCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtKiwgY29uc3QgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4mKSBm
aW5hbDsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
KFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OlVSTCYmLCBWZWN0b3I8U3RyaW5nPiYmLCBWZWN0b3I8
U3RyaW5nPiYmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRp
b24oV2ViUGFnZVByb3h5JiwgVVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYsIFZlY3RvcjxTdHJpbmc+
JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
V2ViUGFnZVByb3h5JiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiwgUmVmPFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eT4mJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsK
ICAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoV2ViUGFnZVBy
b3h5JiwgUmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiYmLCBSZWY8V2ViRnJhbWVQb2xpY3lM
aXN0ZW5lclByb3h5PiYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXgg
YTViMDg3Y2ZmMzA4YmYxNDBhZjg1YmRhZGQzOWZiZjY5OTEwNzlhNy4uNDIwNzczOWFiMGUwZjA0
YjUyN2NjOWY3N2Q1Yjg0MDEwMTNmNThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNzAsOSArNzAsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9TU0xLZXlHZW5lcmF0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW5EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIEhBVkUo
QVBQX0xJTktTKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgpA
QCAtMzkyLDcgKzM5Miw3IEBAIGlubGluZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgdG9XZWJD
b3JlV2ViR0xMb2FkUG9saWN5KF9XS1dlYkdMTG9hZFBvbGljeSBwb2xpCiAgICAgcmV0dXJuIFdl
YkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAordm9pZCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBV
UkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3Rh
dGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXZWJHTExvYWRQb2xpY3lGb3JV
UkwpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViR0xBbGxvd0NyZWF0aW9uKTsKQEAg
LTQwOSw3ICs0MDksNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYgogICAgIH0pLmdldCgpXTsK
IH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJH
TExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgY29uc3QKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpy
ZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1Jlc29sdmVXZWJHTExvYWRQb2xpY3lGb3JVUkwpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViR0xBbGxvd0NyZWF0aW9uKTsKQEAgLTU4OCw3
ICs1ODgsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUAogICAgIH0KIH0KIAotdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlv
bihXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgbGlz
dElkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiYmIG5vdGlmaWNhdGlvbnMpCit2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
KFdlYlBhZ2VQcm94eSYsIFVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmll
cnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucykKIHsKICAgICBpZiAoIW1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3VVJMQ29udGVudFJ1
bGVMaXN0SWRlbnRpZmllcnNOb3RpZmljYXRpb25zKQogICAgICAgICByZXR1cm47CkBAIC02OTks
NyArNjk5LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5JgogICAgIGlmICghbmF2aWdhdGlvbkRl
bGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsKFdlYkNvcmU6
OlVSTCgpLCB1cmxTdHJpbmcpOworICAgIFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CiAKICAg
ICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRp
b25EZWxlZ2F0ZSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IHdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3RUb1VSTDp1cmwgZGVsYXk6ZGVsYXldOwogfQpAQCAtOTcyLDcgKzk3
Miw3IEBAIFJlZlB0cjxBUEk6OkRhdGE+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQCiAgICAgcmV0dXJuIEFQSTo6RGF0YTo6Y3Jl
YXRlV2l0aG91dENvcHlpbmcoZGF0YSk7CiB9CiAKLVJlZlB0cjxBUEk6OlN0cmluZz4gTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJl
ZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1
cmwpCitSZWZQdHI8QVBJOjpTdHJpbmc+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYgcGFnZSwg
dW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVu
Z2VTdHJpbmcsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIFdlYktpdFRlc3RSdW5uZXIgdXNl
cyBDIEFQSS4gSGVuY2UsIG5vIFNQSSBpcyBwcm92aWRlZCB0byBvdmVycmlkZSB0aGUgZm9sbG93
aW5nIGZ1bmN0aW9uLgogICAgIHJldHVybiBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0
cmluZy0+c3RyaW5nKCksIHVybCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU2FmZUJyb3dzaW5nUmVzdWx0Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5tbQppbmRleCAwODdhYzY1NDkzMzNh
MTQwYWY1MzllYTQwNGI5NmZhMWVlY2YzNDk0Li4wNGRmZDVkNDRkNmU0ODMxMWRkYzJmMmZlNzQx
NjlmNDQ4YzViMzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
YWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TYWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5tbQpAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKICNpZiBIQVZFKFNBRkVfQlJPV1NJTkcpCi1TYWZlQnJvd3NpbmdSZXN1
bHQ6OlNhZmVCcm93c2luZ1Jlc3VsdChXZWJDb3JlOjpVUkwmJiB1cmwsIFNTQlNlcnZpY2VMb29r
dXBSZXN1bHQgKnJlc3VsdCkKK1NhZmVCcm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5nUmVzdWx0
KFVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQogICAgIDogbV91cmwo
V1RGTW92ZSh1cmwpKQogICAgICwgbV9wcm92aWRlcihbcmVzdWx0IHByb3ZpZGVyXSkKICAgICAs
IG1faXNQaGlzaGluZyhbcmVzdWx0IGlzUGhpc2hpbmddKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2Eu
bW0KaW5kZXggYTdkYWQ0ODE1MjYxYTk4YzZjMTFkMzQ0OGYzZGIyMTgxMzFhNjJkYS4uOThiZGMy
Nzk2NGE1NjlhNzc5OGMxOWM3YjVhYWMyYzc0ZTZkNTlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNv
Y29hLm1tCkBAIC0xMDUsNyArMTA1LDcgQEAgLSAodm9pZClzZXRQcm9ncmVzczooZmxvYXQpcHJv
Z3Jlc3MKICAgICAgICAgW19pdGVtIHNldFByZXZpZXdJdGVtUHJvdmlkZXJQcm9ncmVzczpAKHBy
b2dyZXNzKV07CiB9CiAKLS0gKHZvaWQpZmluaXNoOihXZWJDb3JlOjpVUkwpdXJsCistICh2b2lk
KWZpbmlzaDooVVJMKXVybAogewogICAgIGlmIChzZWxmLmNvbXBsZXRpb25IYW5kbGVyKQogICAg
ICAgICBzZWxmLmNvbXBsZXRpb25IYW5kbGVyKChOU1VSTCopdXJsLCBuaWwpOwpAQCAtMjIxLDcg
KzIyMSw3IEBAIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnVwZGF0ZVByb2dyZXNzKGZs
b2F0IHByb2dyZXNzKQogICAgICAgICBbbV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBz
ZXRQcm9ncmVzczpwcm9ncmVzc107CiB9CiAKLXZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6
OmZpbmlzaChXZWJDb3JlOjpVUkwgdXJsKQordm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6
ZmluaXNoKFVSTCB1cmwpCiB7CiAgICAgaWYgKG1fcWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3Vy
Y2UpCiAgICAgICAgIFttX3FsUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlIGZpbmlzaDp1cmxd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDMzZjBh
OWMyY2QyNjEyNTcxZTI4NmQ1NzY3M2ViNzA0MDRkMDAxYjIuLjZjZmI0NDNhOTU4ODY1NTZmMDk4
NjA4NzA0NGU0MjAyNmQzZmE5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLmgKQEAgLTExOSw3ICsxMTksNyBAQCBjbGFzcyBVSURlbGVnYXRlIHsKICAgICAg
ICAgdm9pZCB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChi
b29sKT4mJikgZmluYWw7CiAgICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSos
IFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBBUEk6
Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Kikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGls
ZUluRm9yZWdyb3VuZChXZWJQYWdlUHJveHkmLCBXS1Jlc291cmNlTGltaXQpIGZpbmFsOwotICAg
ICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIEFQSTo6RGF0YSYpIGZpbmFsOworICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6
OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6RGF0YSYpIGZpbmFsOwogI2VuZGlmCiAgICAgICAg
IGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVBy
b3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBBUEk6OlNlY3VyaXR5
T3JpZ2luJiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYpIGZpbmFsOwogICAgICAg
ICBib29sIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihXZWJQYWdlUHJveHkmLCBX
ZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4m
LCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggM2VjZTgyMGVkNGIzMTY0MzY5M2Y1
MjI0N2VkYWQ5YzY4YjgxZmY2MC4uZjkxN2FhNWY3YTExOGIyMmQ4ZWIyMjU1ODM0YzZjOWNjY2Rj
ZGJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBA
IC01MSw4ICs1MSw4IEBACiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1w
b3J0ICJfV0tIaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW5EYXRhLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlRGV2aWNlLmg+CkBAIC0yMzEsNyArMjMxLDcgQEAg
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZShXZWJQYWdlUHJveHkmIHBh
Z2UsIFJlZjxBUEk6OkZyYW1lSW5mbz4KIAogICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5
ID0gcGFnZS5wcm9jZXNzKCkudXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25E
YXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICAgICBib29sIHNob3VsZE9wZW5BcHBM
aW5rcyA9ICFob3N0c0FyZUVxdWFsKHNvdXJjZUZyYW1lSW5mby0+cmVxdWVzdCgpLnVybCgpLCBy
ZXF1ZXN0LnVybCgpKTsKLSAgICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmln
YXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNl
RnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCks
IFdlYkNvcmU6OlVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRl
ZEFjdGl2aXR5KSk7CisgICAgYXV0byBhcGlOYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0
aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZy
YW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBV
UkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkp
OwogCiAgICAgYXV0byBhcGlXaW5kb3dGZWF0dXJlcyA9IEFQSTo6V2luZG93RmVhdHVyZXM6OmNy
ZWF0ZSh3aW5kb3dGZWF0dXJlcyk7CiAKQEAgLTc4Nyw3ICs3ODcsNyBAQCB2b2lkIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpzaG93UGFnZShXZWJQYWdlUHJveHkqKQogICAgIFsoaWQgPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+KWRlbGVnYXRlIF9zaG93V2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3
XTsKIH0KICAgICAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5E
b3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgb3JpZ2luYXRpbmdVUkwsIEFQSTo6RGF0YSYgZGF0YSkKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29u
c3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIEFQSTo6RGF0YSYgZGF0YSkKIHsKICAg
ICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2F2ZURhdGFUb0Zp
bGVTdWdnZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRpbmdVUkwpCiAgICAgICAgIHJldHVy
bjsKQEAgLTg2NSw4ICs4NjUsOCBAQCBzdGF0aWMgdm9pZCByZXF1ZXN0VXNlck1lZGlhQXV0aG9y
aXphdGlvbkZvckRldmljZXMoY29uc3QgV2ViRnJhbWVQcm94eSYgZnJhbWUsCiAgICAgfSk7CiAK
ICAgICBjb25zdCBXZWJGcmFtZVByb3h5KiBtYWluRnJhbWUgPSBmcmFtZS5wYWdlKCktPm1haW5G
cmFtZSgpOwotICAgIFdlYkNvcmU6OlVSTCByZXF1ZXN0RnJhbWVVUkwoV2ViQ29yZTo6VVJMKCks
IGZyYW1lLnVybCgpKTsKLSAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVS
TCgpLCBtYWluRnJhbWUtPnVybCgpKTsKKyAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgpLCBm
cmFtZS51cmwoKSk7CisgICAgVVJMIG1haW5GcmFtZVVSTChVUkwoKSwgbWFpbkZyYW1lLT51cmwo
KSk7CiAKICAgICBfV0tDYXB0dXJlRGV2aWNlcyBkZXZpY2VzID0gMDsKICAgICBpZiAocmVxdWVz
dC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpKQpAQCAtOTczLDggKzk3Myw4IEBAIGJvb2wgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihXZWJQYWdl
UHJveHkmIHBhZ2UsCiAKICAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBtX3VpRGVsZWdhdGUubV93
ZWJWaWV3OwogICAgIGNvbnN0IFdlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9IGZyYW1lLnBhZ2Uo
KS0+bWFpbkZyYW1lKCk7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RGcmFtZVVSTChXZWJDb3Jl
OjpVUkwoKSwgZnJhbWUudXJsKCkpOwotICAgIFdlYkNvcmU6OlVSTCBtYWluRnJhbWVVUkwoV2Vi
Q29yZTo6VVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOworICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwo
VVJMKCksIGZyYW1lLnVybCgpKTsKKyAgICBVUkwgbWFpbkZyYW1lVVJMKFVSTCgpLCBtYWluRnJh
bWUtPnVybCgpKTsKIAogICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gQmxvY2tQdHI8dm9pZChO
U1N0cmluZyAqLCBCT09MKT46OmZyb21DYWxsYWJsZShbcHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VS
ZWYocmVxdWVzdCldKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpIHsKICAgICAgICAg
cHJvdGVjdGVkUmVxdWVzdC0+c2V0VXNlck1lZGlhQWNjZXNzSW5mbyhTdHJpbmcoc2FsdCksIGF1
dGhvcml6ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tS
ZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5tbQppbmRleCA1
Zjk5YWVjODVkYTc1MjRiYTA0MWU3NWViMDgwMTczOTkwNDliMjEyLi5hZTU3NjVlNDhlNzFiODdm
ZjYwZDE0MDVjM2M3YTMzNzI1MTVjYTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0
dGVtcHRlci5tbQpAQCAtNjksNyArNjksNyBAQCAtIChCT09MKWF0dGVtcHRSZWNvdmVyeQogICAg
IGlmICghd2ViRnJhbWVQcm94eSkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgd2ViRnJhbWVQ
cm94eS0+bG9hZFVSTChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIF91cmxTdHJpbmcpKTsK
KyAgICB3ZWJGcmFtZVByb3h5LT5sb2FkVVJMKFVSTChVUkwoKSwgX3VybFN0cmluZykpOwogICAg
IHJldHVybiBZRVM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggYWU2NDcwN2RhMTUxYzIyYmMz
ODM5ZGFiNGFmN2U3NDAxNGUwMjIwZS4uNWZkNWI5MGNkNDlkYjQ3ZDhlN2MzMDZmYzQ4NmIzYmUz
MTJkODE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTMzLDcgKzMzLDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtUGFz
dGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCmluZGV4IDVhYWRjZjY3ZDE1ZTBmZjRhNzc0MWI4NWU5ZGUyN2E0OTcy
MjI5ZjIuLmJjYmY1Mzc2YjFhM2ViZWI0N2Y4M2IzMjgzOGQyMTRkZDcwYjcxYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC00MDY2LDcgKzQw
NjYsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp3cml0ZVRvVVJMRm9yRmlsZVByb21pc2VQcm92aWRl
cihOU0ZpbGVQcm9taXNlUHJvdmlkZXIgKnByb3ZpZAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgV2ViQ29yZTo6VVJMIGJsb2JVUkwgeyBpbmZvLmJsb2JVUkwgfTsKKyAgICBVUkwgYmxv
YlVSTCB7IGluZm8uYmxvYlVSTCB9OwogICAgIGlmIChibG9iVVJMLmlzRW1wdHkoKSkgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih3ZWJLaXRVbmtub3duRXJyb3IoKSk7CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5oCmluZGV4IGUwN2FhYzg5NjAzODE1NjFhNzJjYTU0Yjc1NTczOTI3OTg1ZTM0MGMuLjQ3
NzM2ZjA2ZGY4Mjg2OGZlM2JjYmRjZDA4MTBjZWVjZmRkNmRiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAtNDUsNyArNDUs
NiBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNzUsOCArNzQsOCBAQCBjbGFzcyBEb3dubG9hZFByb3h5IDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6RG93bmxvYWQ+LCBwdWJsaQog
ICAgIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRP
cmlnaW5hdGluZ1BhZ2UoV2ViUGFnZVByb3h5Kik7CiAKLSAgICB2b2lkIHNldFJlZGlyZWN0Q2hh
aW4oVmVjdG9yPFdlYkNvcmU6OlVSTD4mJiByZWRpcmVjdENoYWluKSB7IG1fcmVkaXJlY3RDaGFp
biA9IFdURk1vdmUocmVkaXJlY3RDaGFpbik7IH0KLSAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VVJMPiYgcmVkaXJlY3RDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RDaGFpbjsgfQor
ICAgIHZvaWQgc2V0UmVkaXJlY3RDaGFpbihWZWN0b3I8VVJMPiYmIHJlZGlyZWN0Q2hhaW4pIHsg
bV9yZWRpcmVjdENoYWluID0gV1RGTW92ZShyZWRpcmVjdENoYWluKTsgfQorICAgIGNvbnN0IFZl
Y3RvcjxVUkw+JiByZWRpcmVjdENoYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdENoYWlu
OyB9CiAKICAgICB2b2lkIHNldFdhc1VzZXJJbml0aWF0ZWQoYm9vbCB2YWx1ZSkgeyBtX3dhc1Vz
ZXJJbml0aWF0ZWQgPSB2YWx1ZTsgfQogICAgIGJvb2wgd2FzVXNlckluaXRpYXRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2FzVXNlckluaXRpYXRlZDsgfQpAQCAtMTI2LDcgKzEyNSw3IEBAIGNsYXNz
IERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpEb3dubG9hZD4sIHB1YmxpCiAgICAgdWludDY0X3QgbV9ieXRlc0xvYWRlZCB7IDAgfTsKIAog
ICAgIFdlYWtQdHI8V2ViUGFnZVByb3h5PiBtX29yaWdpbmF0aW5nUGFnZTsKLSAgICBWZWN0b3I8
V2ViQ29yZTo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CisgICAgVmVjdG9yPFVSTD4gbV9yZWRpcmVj
dENoYWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1ZSB9OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwCmluZGV4IDlmZTNjNzY1NjFi
MjU1NzE2YTQ1YmJhMzhmZTk5NWEwMDU5NzdmZmIuLjcyZjRmNzI0NTVhN2ViOGE2NWI5ZTUyN2U1
NWExZjgyMWFjZTA4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1l
TG9hZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0
ZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgRnJhbWVMb2FkU3RhdGU6On5GcmFtZUxvYWRTdGF0ZSgp
CiB7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92
aXNpb25hbExvYWQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxV
UkwuaXNFbXB0eSgpKTsKIApAQCAtNDAsNyArNDAsNyBAQCB2b2lkIEZyYW1lTG9hZFN0YXRlOjpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKICAgICBtX3By
b3Zpc2lvbmFsVVJMID0gdXJsOwogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwp
Cit2b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6
OlByb3Zpc2lvbmFsKTsKIApAQCAtODEsMTIgKzgxLDEyIEBAIHZvaWQgRnJhbWVMb2FkU3RhdGU6
OmRpZEZhaWxMb2FkKCkKICAgICBtX3N0YXRlID0gU3RhdGU6OkZpbmlzaGVkOwogfQogCi12b2lk
IEZyYW1lTG9hZFN0YXRlOjpkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2ViQ29y
ZTo6VVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRTYW1lRG9jdW1lbnROb3RpZmlj
YXRpb24oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV91cmwgPSB1cmw7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkU3RhdGU6OnNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFj
aGFibGVVUkwpCit2b2lkIEZyYW1lTG9hZFN0YXRlOjpzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBV
UkwmIHVucmVhY2hhYmxlVVJMKQogewogICAgIG1fbGFzdFVucmVhY2hhYmxlVVJMID0gbV91bnJl
YWNoYWJsZVVSTDsKICAgICBtX3VucmVhY2hhYmxlVVJMID0gdW5yZWFjaGFibGVVUkw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuaAppbmRleCA5OGMzMjVlODQ0MzZlZGFl
NGRjZjYzOWQxNDA3NmRhOTgzNTM2YzEyLi5jNjUwMDAzZmZiNWYwYjY4ODVjMTNmMzI2YmQyZmI0
ZmQyNmM5ZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRT
dGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM5LDI5
ICszOSwyOSBAQCBjbGFzcyBGcmFtZUxvYWRTdGF0ZSB7CiAgICAgICAgIEZpbmlzaGVkCiAgICAg
fTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJM
Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQo
Y29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChj
b25zdCBVUkwmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZChjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsK
IAogICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZCgpOwog
ICAgIHZvaWQgZGlkRmFpbExvYWQoKTsKIAotICAgIHZvaWQgZGlkU2FtZURvY3VtZW50Tm90aWZp
Y2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgZGlkU2FtZURvY3VtZW50Tm90
aWZpY2F0aW9uKGNvbnN0IFVSTCYpOwogCiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgcHJvdmlzaW9uYWxVUkwoKSBjb25z
dCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsVVJMOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgcHJvdmlzaW9uYWxVUkwoKSBjb25z
dCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsVVJMOyB9CiAKLSAgICB2b2lkIHNldFVucmVhY2hhYmxl
VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFj
aGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3VucmVhY2hhYmxlVVJMOyB9CisgICAgdm9pZCBz
ZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMKCkgY29uc3QgeyByZXR1cm4gbV91bnJlYWNoYWJsZVVSTDsgfQogCiBwcml2YXRlOgogICAg
IFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6RmluaXNoZWQgfTsKLSAgICBXZWJDb3JlOjpVUkwgbV91
cmw7Ci0gICAgV2ViQ29yZTo6VVJMIG1fcHJvdmlzaW9uYWxVUkw7Ci0gICAgV2ViQ29yZTo6VVJM
IG1fdW5yZWFjaGFibGVVUkw7Ci0gICAgV2ViQ29yZTo6VVJMIG1fbGFzdFVucmVhY2hhYmxlVVJM
OworICAgIFVSTCBtX3VybDsKKyAgICBVUkwgbV9wcm92aXNpb25hbFVSTDsKKyAgICBVUkwgbV91
bnJlYWNoYWJsZVVSTDsKKyAgICBVUkwgbV9sYXN0VW5yZWFjaGFibGVVUkw7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDBlOTIxODMzMjdhYmY4N2FiYjYy
MDY3MDdlNmFlNThhNjU2YWI1YjQuLjE4MWE5ZTI0YWU1ZWY2NzZkNjk4YTZmNDI1ZGU5OTdkNTgz
ODhlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NEaWRSZXN1bWUoKQogICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc0RpZFJlc3VtZSgpLCAwKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y2FsbGJhY2spCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndyaXRlQmxvYlRvRmlsZVBhdGgo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKICAg
ICAgICAgY2FsbGJhY2soZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAyNTU4OTdlN2U4MjVlMTdiODNl
OGIxNDY0YjQ4MDkxNzU2ZWEzMDA3Li40ZGJiYjZmZWUwNjJmZjVlMDhiZjEzYzA3NzMxNTIwOGU5
OTUzNDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya1Byb2Nlc3NQcm94eV9oCi0j
ZGVmaW5lIE5ldHdvcmtQcm9jZXNzUHJveHlfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJB
UElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKQEAg
LTQ5LDcgKzQ4LDYgQEAgY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNs
YXNzIFVSTDsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKQEAgLTg3LDcgKzg1LDcg
QEAgY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eSBmaW5hbCA6IHB1YmxpYyBDaGlsZFByb2Nlc3NQ
cm94eSwgcHJpdmF0ZSBQcm9jZXNzVGhyb3QKICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAjZW5kaWYKIAotICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y2FsbGJhY2spOwogCiAgICAgdm9pZCBwcm9jZXNzUmVhZHlUb1N1c3BlbmQoKTsKICAgICAKQEAg
LTIwMyw1ICsyMDEsMyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGlj
IENoaWxkUHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJvdAogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAKaW5kZXggMTc1OWY4YTQ5MzY3ZDA1MmU1
ZmNhZTUxNzNkYTI2NzI1Mzk3ZjY2MC4uMmVkMTA3NWM2MDBlYmRkZWE1ZTRmZjU0ZmFhOTFkZGQ1
ZjViZTJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAKQEAg
LTIwNiw5ICsyMDYsOSBAQCBib29sIFBhZ2VMb2FkU3RhdGU6Omhhc09ubHlTZWN1cmVDb250ZW50
KGNvbnN0IERhdGEmIGRhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChkYXRh
LnN0YXRlID09IFN0YXRlOjpQcm92aXNpb25hbCkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OnBy
b3RvY29sSXMoZGF0YS5wcm92aXNpb25hbFVSTCwgImh0dHBzIik7CisgICAgICAgIHJldHVybiBX
VEY6OnByb3RvY29sSXMoZGF0YS5wcm92aXNpb25hbFVSTCwgImh0dHBzIik7CiAKLSAgICByZXR1
cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhkYXRhLnVybCwgImh0dHBzIik7CisgICAgcmV0dXJuIFdU
Rjo6cHJvdG9jb2xJcyhkYXRhLnVybCwgImh0dHBzIik7CiB9CiAKIGJvb2wgUGFnZUxvYWRTdGF0
ZTo6aGFzT25seVNlY3VyZUNvbnRlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCmluZGV4IDIzMTA3NWFjMzU5OWJh
ZDFkMTlhZDRkN2M0MmZjNzJmZjk4Y2RhMDMuLjUxMzJiODNiZmFhYWExM2Y0NzZhNjYzNjUxY2Qz
NjIwMDY2NGFlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luSW5mb1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUgIlBsdWdp
bk1vZHVsZUluZm8uaCIKICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oCmluZGV4IDZlOWVlZmM4
ZjVmNDM4YWU4OWEyZjI1YWM4ODJiNTUwN2ZlZTFiMzQuLjU1NTk3ZjM0NGJmNTEzOWI5ZjU2NzNj
MzBmODhjNzI4MTU3YWY5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5JbmZvU3RvcmUuaApAQCAtMzEsMTAgKzMxLDYgQEAKIAogI2luY2x1ZGUgPFdl
YkNvcmUvUGx1Z2luRGF0YS5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19
Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQbHVnaW5JbmZvU3RvcmU7CkBAIC01Myw3
ICs0OSw3IEBAIGNsYXNzIFBsdWdpbkluZm9TdG9yZSB7CiAgICAgLy8gUmV0dXJucyB0aGUgaW5m
byBmb3IgYSBwbHVnLWluIHRoYXQgY2FuIGhhbmRsZSB0aGUgZ2l2ZW4gTUlNRSB0eXBlLgogICAg
IC8vIElmIHRoZSBNSU1FIHR5cGUgaXMgbnVsbCwgdGhlIGZpbGUgZXh0ZW5zaW9uIG9mIHRoZSBn
aXZlbiB1cmwgd2lsbCBiZSB1c2VkIHRvIGluZmVyIHRoZQogICAgIC8vIHBsdWctaW4gdHlwZS4g
SW4gdGhhdCBjYXNlLCBtaW1lVHlwZSB3aWxsIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSByaWdodCBN
SU1FIHR5cGUuCi0gICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luKFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbG93ZWRQbHVn
aW5UeXBlcyA9IFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpOworICAgIFBsdWdpbk1v
ZHVsZUluZm8gZmluZFBsdWdpbihTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmLCBXZWJDb3Jl
OjpQbHVnaW5EYXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMgPSBXZWJDb3JlOjpQbHVnaW5EYXRhOjpB
bGxQbHVnaW5zKTsKIAogICAgIC8vIFJldHVybnMgdGhlIGluZm8gZm9yIHRoZSBwbHVnLWluIHdp
dGggdGhlIGdpdmVuIGJ1bmRsZSBpZGVudGlmaWVyLgogICAgIFBsdWdpbk1vZHVsZUluZm8gZmlu
ZFBsdWdpbldpdGhCdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmll
cik7CkBAIC02Myw3ICs1OSw3IEBAIGNsYXNzIFBsdWdpbkluZm9TdG9yZSB7CiAKICAgICBzdGF0
aWMgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBkZWZhdWx0TG9hZFBvbGljeUZvclBsdWdpbihjb25z
dCBQbHVnaW5Nb2R1bGVJbmZvJik7CiAKLSAgICBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcGx1Z2luVVJMLCBjb25zdCBT
dHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHBhZ2VVUkwpOworICAg
IGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJM
JiBwbHVnaW5VUkwsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFVSTCYgcGFn
ZVVSTCk7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2lu
SWRlbnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKCk7CiAgICAgdm9pZCBhZGRT
dXBwb3J0ZWRQbHVnaW4oU3RyaW5nJiYgbWF0Y2hpbmdEb21haW4sIFN0cmluZyYmIGlkZW50aWZp
ZXIsIEhhc2hTZXQ8U3RyaW5nPiYmIG1pbWVUeXBlcywgSGFzaFNldDxTdHJpbmc+IGV4dGVuc2lv
bnMpOwogICAgIHZvaWQgY2xlYXJTdXBwb3J0ZWRQbHVnaW5zKCkgeyBtX3N1cHBvcnRlZFBsdWdp
bnMgPSBzdGQ6Om51bGxvcHQ7IH0KQEAgLTEwNCw3ICsxMDAsNyBAQCBjbGFzcyBQbHVnaW5JbmZv
U3RvcmUgewogICAgICAgICBIYXNoU2V0PFN0cmluZz4gbWltZVR5cGVzOwogICAgICAgICBIYXNo
U2V0PFN0cmluZz4gZXh0ZW5zaW9uczsKICAgICB9OwotICAgIHN0YXRpYyBib29sIGlzU3VwcG9y
dGVkUGx1Z2luKGNvbnN0IFN1cHBvcnRlZFBsdWdpbiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgcGx1Z2luVVJMKTsKKyAgICBzdGF0aWMgYm9vbCBpc1N1cHBv
cnRlZFBsdWdpbihjb25zdCBTdXBwb3J0ZWRQbHVnaW4mLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBVUkwmIHBsdWdpblVSTCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdXBw
b3J0ZWRQbHVnaW4+PiBtX3N1cHBvcnRlZFBsdWdpbnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFj
Lm1tCmluZGV4IGQ5MGYwYTllYTA3NGY2ZjVmOTFiZGJhYTY2N2JlMDIyMmU1ODI3MzkuLmZhZWNm
MzFkZjc5NWQzMTYzODY0OWQyMjQzODA3Y2Y5NzViMmM1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlN
YWMubW0KQEAgLTM0LDEyICszNCwxMiBAQAogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgog
I2ltcG9ydCA8UXVhcnR6Q29yZS9DQVJlbW90ZUxheWVyU2VydmVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxjcnRf
ZXh0ZXJucy5oPgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxzcGF3bi5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQ
cml2aWxlZ2UuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogQGludGVyZmFjZSBXS1BsYWNlaG9sZGVyTW9kYWxXaW5kb3cgOiBOU1dpbmRvdyAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NhZmVCcm93c2luZ1Jlc3VsdC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5nUmVzdWx0LmgKaW5kZXggNzkz
YmY0YmE0YWY3M2RhMjBiZDk1N2E0YmZjMDMxMjVkZjNjNzc3Ni4uMzQyMjA0N2FiMjA4MGI2OWJj
YmI4ZDMzODM4YTcyZDhjYWU5OTZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU2FmZUJyb3dzaW5nUmVzdWx0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Fm
ZUJyb3dzaW5nUmVzdWx0LmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBPQkpD
X0NMQVNTIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQ7CkBAIC0zNiwxMiArMzYsMTIgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBTYWZlQnJvd3NpbmdSZXN1bHQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTYWZlQnJvd3NpbmdSZXN1bHQ+IHsKIHB1YmxpYzoKICNpZiBIQVZFKFNBRkVfQlJPV1NJTkcp
Ci0gICAgc3RhdGljIFJlZjxTYWZlQnJvd3NpbmdSZXN1bHQ+IGNyZWF0ZShXZWJDb3JlOjpVUkwm
JiB1cmwsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKKyAgICBzdGF0aWMgUmVmPFNh
ZmVCcm93c2luZ1Jlc3VsdD4gY3JlYXRlKFVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3Vs
dCAqcmVzdWx0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2FmZUJyb3dz
aW5nUmVzdWx0KFdURk1vdmUodXJsKSwgcmVzdWx0KSk7CiAgICAgfQogI2VuZGlmCi0gICAgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBTdHJpbmcmIHBy
b3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRlcjsgfQogICAgIGJvb2wgaXNQaGlzaGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1faXNQaGlzaGluZzsgfQogICAgIGJvb2wgaXNNYWx3YXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc01hbHdhcmU7IH0KQEAgLTUwLDkgKzUwLDkgQEAgY2xhc3MgU2Fm
ZUJyb3dzaW5nUmVzdWx0IDogcHVibGljIFJlZkNvdW50ZWQ8U2FmZUJyb3dzaW5nUmVzdWx0PiB7
CiAKIHByaXZhdGU6CiAjaWYgSEFWRShTQUZFX0JST1dTSU5HKQotICAgIFNhZmVCcm93c2luZ1Jl
c3VsdChXZWJDb3JlOjpVUkwmJiwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqKTsKKyAgICBTYWZl
QnJvd3NpbmdSZXN1bHQoVVJMJiYsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKik7CiAjZW5kaWYK
LSAgICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX3By
b3ZpZGVyOwogICAgIGJvb2wgbV9pc1BoaXNoaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNN
YWx3YXJlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuY3BwCmluZGV4IDhiYzRhNzUzZmE3NjczZDQxMWI5YjRjZjViNTQ0Mjk3OWQ2OTMy
MDQuLjJlYTc5ZjgyZDEzOWUxZGI1ZTI3MTgxZTQyNWM5ZWVlMTUxOGUyMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtMzMsOCArMzMs
OCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaApp
bmRleCA5NDljOGRmNzIxZWQ5ZWQzNWE3ZGE2OGVjN2NmOTEyNzllZjkwYTMxLi4yNjlkMGMzMmZi
MzIwODRiNTdlN2QxNmIwY2NmMjVjZWY3NGY5YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgKQEAgLTI5LDggKzI5LDggQEAKIAog
I2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VF
cnJvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIFVTRShRVUlDS19MT09LKQogT0JKQ19D
TEFTUyBRTFByZXZpZXdDb250cm9sbGVyOwpAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBTeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlciB7CiAKICAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIHVwZGF0ZVByb2dyZXNzKGZs
b2F0KTsKLSAgICB2b2lkIGZpbmlzaChXZWJDb3JlOjpVUkwpOworICAgIHZvaWQgZmluaXNoKFVS
TCk7CiAgICAgdm9pZCBjYW5jZWwoKTsKICAgICB2b2lkIGZhaWwoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5oCmluZGV4IGUzMzE2N2E4OTUwYzE2OGYwMWMwMzJjZWI5ZTVmOGY5ODFlNTEz
ODAuLjlmMjQwZDMwMjFlZGY4NmM3Y2FlZDdlODE0NTk1MWRlZDMyNjBlMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCkBAIC03MSwxMCAr
NzEsMTAgQEAgY2xhc3MgV2ViQ29va2llTWFuYWdlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Q29va2llTWEKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklELCBXYWxsVGltZSwgRnVuY3Rpb248dm9pZCAo
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCiAgICAgdm9pZCBzZXRDb29raWUoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIHNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1l
bnRVUkwsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCiAgICAgdm9p
ZCBnZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKTsKLSAgICB2b2lkIGdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ2V0
Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgRnVuY3Rpb248dm9pZChjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKIAogICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNl
c3Npb25JRCwgSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6
OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5o
CmluZGV4IDI5N2FhOGFmMzI1NWIwZGFmNGM0NzNhZTc3M2U3MGRhYzY5YjQ1YzguLjQ5N2IyMzE3
YjdkY2YxNjZmNzFkYzQwMGU1ZmY3OGZkMGVhMWRjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmgKQEAgLTgwLDE0ICs4MCwxNCBAQCBjbGFzcyBXZWJGcmFtZVByb3h5
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6RnJhbWU+IHsKIAog
ICAgIEZyYW1lTG9hZFN0YXRlJiBmcmFtZUxvYWRTdGF0ZSgpIHsgcmV0dXJuIG1fZnJhbWVMb2Fk
U3RhdGU7IH0KIAotICAgIHZvaWQgbG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2
b2lkIGxvYWRVUkwoY29uc3QgVVJMJik7CiAgICAgdm9pZCBzdG9wTG9hZGluZygpIGNvbnN0Owog
Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9h
ZFN0YXRlLnVybCgpOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiBwcm92aXNpb25hbFVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUucHJvdmlzaW9uYWxVUkwoKTsgfQorICAg
IGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51cmwoKTsg
fQorICAgIGNvbnN0IFVSTCYgcHJvdmlzaW9uYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
TG9hZFN0YXRlLnByb3Zpc2lvbmFsVVJMKCk7IH0KIAotICAgIHZvaWQgc2V0VW5yZWFjaGFibGVV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNo
YWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudW5yZWFjaGFibGVVUkwo
KTsgfQorICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgVVJMJik7CisgICAgY29uc3Qg
VVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudW5y
ZWFjaGFibGVVUkwoKTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fTUlNRVR5cGU7IH0KICAgICBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRhaW5zUGx1Z2luRG9jdW1lbnQ7IH0KQEAgLTEwOCwxMyArMTA4
LDEzIEBAIGNsYXNzIFdlYkZyYW1lUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpGcmFtZT4gewogICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YShGdW5j
dGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9p
ZCBnZXRSZXNvdXJjZURhdGEoQVBJOjpVUkwqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKLSAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgZGlk
U3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgVVJMJik7CisgICAgdm9pZCBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgVVJMJik7CiAgICAgdm9pZCBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkKGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIFdlYkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5E
b2N1bWVudCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWlsTG9h
ZCgpOwotICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBXZWJDb3JlOjpV
UkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRlIGNoYW5nZS4KKyAg
ICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oY29uc3QgVVJMJik7IC8vIGVnLiBhbmNo
b3IgbmF2aWdhdGlvbiwgc2Vzc2lvbiBzdGF0ZSBjaGFuZ2UuCiAgICAgdm9pZCBkaWRDaGFuZ2VU
aXRsZShjb25zdCBTdHJpbmcmKTsKIAogICAgIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYg
c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
UG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIFZlY3RvcjxSZWY8U2FmZUJyb3dzaW5nUmVzdWx0Pj4mJik+JiYsIFNob3VsZEV4
cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuaAppbmRleCA4NDQyMGExMzU3NDljNDlmMjNkOGUyYzQ5MGM4ZGQ5NDc2Y2Qz
MzdmLi41NTRlNzQ0OGVjNGFjZjg2OTczZDI2YjlkYTAwYWQxYzYzYmNkOWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTUwLDEwICs1MCw2IEBA
IE9CSkNfQ0xBU1MgV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlcjsKICNpbmNsdWRlICJXZWJWaWV3
LmgiCiAjZW5kaWYKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWVQcm94eTsKQEAgLTE1MSw3ICsxNDcsNyBA
QCBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eQogICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yUGFn
ZVVSTCgpOwogICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yVGVzdFBhZ2VVUkwoKTsKICAgICBz
dGF0aWMgU3RyaW5nIGluc3BlY3RvckJhc2VVUkwoKTsKLSAgICBzdGF0aWMgYm9vbCBpc01haW5P
clRlc3RJbnNwZWN0b3JQYWdlKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHN0YXRpYyBib29s
IGlzTWFpbk9yVGVzdEluc3BlY3RvclBhZ2UoY29uc3QgVVJMJik7CiAKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWluaW11bVdpbmRvd1dpZHRoOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBtaW5pbXVtV2luZG93SGVpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAppbmRleCAzYTU5NGJi
N2I0YTI2MGI5NGIwOGZmY2JlZGMyYWVjYWNlOTQxYWQ3Li4wMjgxMmNmN2ZiZTdiNGU1NmYyNzU3
OTJlZjI5NDBkOWVlZmQ4NmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtMjksNyArMjks
NyBAQAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQyMmYyNmFl
YTE4NDhhNDA5YTgyODdjMzI2NTY1YjNmM2VkMTM3YzAuLjg4NmJjMmJkMTMzYzYzOWEwZDBjZTRh
N2RmZThlM2M2YjQwNjc3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMTUzLDEzICsxNTMsMTMgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Nob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9WYWxpZGF0aW9uQnViYmxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5o
PgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTEwNzEsNyArMTA3MSw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdl
TG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKLSAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGlu
Z0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24sICFiYXNlVVJMLmlzRW1wdHkoKSA/IGJhc2VVUkwg
OiBibGFua1VSTCgpLnN0cmluZygpKTsKKyAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQ
SVJlcXVlc3RVUkwodHJhbnNhY3Rpb24sICFiYXNlVVJMLmlzRW1wdHkoKSA/IGJhc2VVUkwgOiBX
VEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAg
IHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CkBAIC0xMDkyLDcgKzEwOTIsNyBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgYwogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBi
YXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIGJvb2wgZm9yU2FmZUJyb3dzaW5nKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRB
bHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmcsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJs
ZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBib29sIGZvclNhZmVCcm93c2luZykKIHsKICAg
ICAvLyBXaGVuIHRoZSBVSVByb2Nlc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgaGFuZGxpbmcgYSBm
YWlsaW5nIHByb3Zpc2lvbmFsIGxvYWQsIGRvIG5vdCBhdHRlbXB0IHRvCiAgICAgLy8gc3RhcnQg
YSBzZWNvbmQgYWx0ZXJuYXRpdmUgSFRNTCBsb2FkIGFzIHRoaXMgd2lsbCBwcmV2ZW50IHRoZSBw
YWdlIGxvYWQgc3RhdGUgZnJvbSBiZWluZwpAQCAtMTE0MSw3ICsxMTQxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBB
UEk6Ok9iamVjdCogdXMKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAogICAgIGF1
dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKLSAgICBtX3Bh
Z2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24sIGJsYW5rVVJM
KCkuc3RyaW5nKCkpOworICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVS
TCh0cmFuc2FjdGlvbiwgV1RGOjpibGFua1VSTCgpLnN0cmluZygpKTsKIAogICAgIExvYWRQYXJh
bWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9
IDA7CkBAIC0xMTYwLDcgKzExNjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BE
RkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIEludFBvaQogICAgIGlm
IChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoV2ViQ29yZTo6cHJvdG9j
b2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1
cmwpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKQEAgLTM1MDYsNyAr
MzUwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRf
dCBuYXZpZ2F0aW9uSUQpCiAgICAgbV9uYXZpZ2F0aW9uU3RhdGUtPmRpZERlc3Ryb3lOYXZpZ2F0
aW9uKG5hdmlnYXRpb25JRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6VVJMJiYgdXJsLCBXZWJDb3JlOjpVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBVUkwmJiB1cmwsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IApAQCAtMzYwNCw3ICszNjA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENsaWVu
dFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKICAgICAgICAgbV9uYXZpZ2F0aW9u
Q2xpZW50LT5kaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgqdGhpcyk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90LCBXZWJDb3JlOjpVUkwmJiB1cmwpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hh
bmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgVVJM
JiYgdXJsKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQo
KSk7CiAKQEAgLTM4NzQsNyArMzg3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKICAgICB9
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFx
dWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgV2ViQ29yZTo6VVJMJiYgdXJsLCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
dWludDMyX3Qgb3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFVSTCYmIHVybCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQyNDEsNyArNDI0MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp3aWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFt
ZUlELCBjb25zCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50UnVsZUxp
c3ROb3RpZmljYXRpb24oV2ViQ29yZTo6VVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50
aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiYmIG5vdGlmaWNhdGlvbnMpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4m
JiBpZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4mJiBub3RpZmljYXRpb25zKQogewogICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKCp0aGlzLCBXVEZN
b3ZlKHVybCksIFdURk1vdmUoaWRlbnRpZmllcnMpLCBXVEZNb3ZlKG5vdGlmaWNhdGlvbnMpKTsK
IH0KQEAgLTU5NTIsNyArNTk1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVy
bWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiAKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgaWYgKG1fcHJvY2Vzcy0+aXNVbmRlck1lbW9yeVByZXNzdXJlKCkpIHsKLSAgICAg
ICAgU3RyaW5nIGRvbWFpbiA9IFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4o
V2ViQ29yZTo6VVJMKHsgfSwgY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAg
ICAgIFN0cmluZyBkb21haW4gPSBXZWJDb3JlOjp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
KFVSTCh7IH0sIGN1cnJlbnRVUkwoKSkuaG9zdCgpLnRvU3RyaW5nKCkpOwogICAgICAgICBpZiAo
IWRvbWFpbi5pc0VtcHR5KCkpCiAgICAgICAgICAgICBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhF
bmhhbmNlZFByaXZhY3koV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpkb21haW5DYXVz
aW5nSmV0c2FtS2V5KCksIGRvbWFpbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAgICAg
fQpAQCAtNzAzMSw3ICs3MDMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIGJvb2wmIHN1Y2MKIH0KICNlbmRp
ZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4
LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYg
cmVzdWx0KQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQo
KSk7CiAKQEAgLTc2NzYsOSArNzY3Niw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9p
bnRlclVubG9jaygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9y
U2NoZW1lKFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVyPiYmIGhhbmRsZXIsIGNvbnN0IFN0cmluZyYg
c2NoZW1lKQogewotICAgIGF1dG8gY2Fub25pY2FsaXplZFNjaGVtZSA9IFVSTFBhcnNlcjo6bWF5
YmVDYW5vbmljYWxpemVTY2hlbWUoc2NoZW1lKTsKKyAgICBhdXRvIGNhbm9uaWNhbGl6ZWRTY2hl
bWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUoc2NoZW1lKTsKICAg
ICBBU1NFUlQoY2Fub25pY2FsaXplZFNjaGVtZSk7Ci0gICAgQVNTRVJUKCFVUkxQYXJzZXI6Omlz
U3BlY2lhbFNjaGVtZShjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKKyAgICBBU1NFUlQo
IVdURjo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY2Fub25pY2FsaXplZFNjaGVtZS52YWx1
ZSgpKSk7CiAKICAgICBhdXRvIHNjaGVtZVJlc3VsdCA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNj
aGVtZS5hZGQoY2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpLCBoYW5kbGVyLmdldCgpKTsKICAg
ICBBU1NFUlRfVU5VU0VEKHNjaGVtZVJlc3VsdCwgc2NoZW1lUmVzdWx0LmlzTmV3RW50cnkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBlNjZjNTRhOGEzMjU4M2Ji
Zjc4YjBiNzNmN2FkOWEzY2VjY2M2NTU4Li5lZWRhNzE1YjcwMWMxOGFhNWYzMjM1YWNjZjg3YmY3
OGUzYzkxYjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODMs
NyArODMsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9UZXh0Q2hlY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRHcmFudWxh
cml0eS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtOTUsNiArOTQsNyBAQAogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQ2NCw3ICs0NjQsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IGxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9
IG51bGxwdHIpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVVSTCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTCwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKLSAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0ciwgYm9vbCBmb3JTYWZlQnJvd3NpbmcgPSBm
YWxzZSk7CisgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVS
TCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIsIGJvb2wg
Zm9yU2FmZUJyb3dzaW5nID0gZmFsc2UpOwogICAgIHZvaWQgbG9hZFdlYkFyY2hpdmVEYXRhKEFQ
STo6RGF0YSosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIHZvaWQgbmF2
aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNv
cmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50
KTsKIApAQCAtMTA2NCw4ICsxMDY0LDggQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIGhhbmRsZUFs
dGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKICNlbmRpZgogCi0g
ICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmluZyYmIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBTdHJpbmcmJiBtaW1lVHlwZSwgV2ViQ29yZTo6VVJMJiYgb3JpZ2luYXRpbmdV
UkwsIEFQSTo6RGF0YSYpOwotICAgIHZvaWQgc2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVy
KFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBXZWJDb3JlOjpVUkwmJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUlu
RG93bmxvYWRzRm9sZGVyKFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBTdHJpbmcmJiBtaW1l
VHlwZSwgVVJMJiYgb3JpZ2luYXRpbmdVUkwsIEFQSTo6RGF0YSYpOworICAgIHZvaWQgc2F2ZVBE
RlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBVUkwm
JiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdm9pZCBzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5h
dGl2ZUFwcGxpY2F0aW9uUmF3KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKICAgICB2b2lkIHNhdmVQREZU
b1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKQEAgLTEx
NzgsNyArMTE3OCw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCB1bndyYXBDcnlwdG9LZXkoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiwgYm9vbCYgc3VjY2VlZGVkLCBWZWN0b3I8dWludDhfdD4mKTsK
ICNlbmRpZgogCi0gICAgdm9pZCBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBj
aGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYsIFN0cmluZyYgcmVzdWx0KTsKIAogICAgIHZvaWQg
dGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6
ZSwgU25hcHNob3RPcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCkBAIC0xMzQ2LDcgKzEz
NDYsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdChGdW5j
dGlvbjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVz
dD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAjZW5kaWYKIAotICAgIHZvaWQgd3JpdGVC
bG9iVG9GaWxlUGF0aChjb25zdCBXZWJDb3JlOjpVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYg
cGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKKyAgICB2b2lkIHdyaXRlQmxv
YlRvRmlsZVBhdGgoY29uc3QgVVJMJiBibG9iVVJMLCBjb25zdCBTdHJpbmcmIHBhdGgsIEZ1bmN0
aW9uPHZvaWQoYm9vbCBzdWNjZXNzKT4mJik7CiAKICAgICBXZWJQcmVmZXJlbmNlc1N0b3JlIHBy
ZWZlcmVuY2VzU3RvcmUoKSBjb25zdDsKIApAQCAtMTQxMSwxNyArMTQxMSwxNyBAQCBjbGFzcyBX
ZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQ
YWdlPgogICAgIHZvaWQgZGlkQ3JlYXRlU3ViZnJhbWUodWludDY0X3QgZnJhbWVJRCk7CiAgICAg
dm9pZCBkaWRDcmVhdGVXaW5kb3codWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6R2xvYmFsV2lu
ZG93SWRlbnRpZmllciYmKTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVS
TCYmLCBXZWJDb3JlOjpVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKKyAg
ICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQg
d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXkpOwogICAgIHZvaWQgZGlkQ2FuY2VsQ2xpZW50UmVk
aXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2b2lkIGRpZENoYW5nZVByb3Zp
c2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBXZWJDb3JlOjpVUkwmJik7CisgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAg
IHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENv
bW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlk
ZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
byYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpI
YXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRh
dGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCB1aW50MzJfdCBzYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgV2ViQ29yZTo6VVJMJiYsIGNv
bnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBzYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VNYWluRG9jdW1lbnQodWludDY0X3QgZnJhbWVJRCk7CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVUaXRsZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFVzZXJEYXRhJik7CkBAIC0xNDQ4LDExICsxNDQ4LDExIEBAIGNsYXNzIFdlYlBhZ2VQcm94
eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQ
b2xpY3kodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNv
bnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOworICAgIHZvaWQgYmVn
aW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHkmKTsKIAogICAgIHZvaWQgd2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3Qgc291cmNlRnJhbWVJRCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+
JiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7
CiAgICAgICAgIAotICAgIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYkNvcmU6
OlVSTCYmLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiYmIG5v
dGlmaWNhdGlvbnMpOworICAgIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFVSTCYm
LCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiYmIG5vdGlmaWNh
dGlvbnMpOwogCiAgICAgLy8gSGlzdG9yeSBjbGllbnQKICAgICB2b2lkIGRpZE5hdmlnYXRlV2l0
aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1aW50NjRfdCBm
cmFtZUlEKTsKQEAgLTE0NzMsOCArMTQ3Myw4IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCB1bmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodWludDMyX3Qgb3BhcXVlUGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb24sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2lu
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpbnNQYWdlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpOwogI2VuZGlm
IC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2
b2lkIHdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOwotICAgIHZvaWQgcmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHdl
YkdMUG9saWN5Rm9yVVJMKFVSTCYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGlj
eUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgcmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKFVSTCYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JV
Ukw6OkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCBz
ZXRUb29sYmFyc0FyZVZpc2libGUoYm9vbCB0b29sYmFyc0FyZVZpc2libGUpOwogICAgIHZvaWQg
Z2V0VG9vbGJhcnNBcmVWaXNpYmxlKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJz
QXJlVmlzaWJsZTo6RGVsYXllZFJlcGx5JiYpOwpAQCAtMTY4Nyw3ICsxNjg3LDcgQEAgY2xhc3Mg
V2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
UGFnZT4KICAgICB2b2lkIHNldFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZSh1aW50NjRfdCBw
bHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgdWludDY0X3QgY29tcGxleFRleHRJbnB1
dFN0YXRlKTsKICNlbmRpZgogCi0gICAgYm9vbCBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYp
OworICAgIGJvb2wgbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShjb25zdCBV
UkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKIAogI2lmIFVTRShBVVRPTUFUSUNfVEVY
VF9SRVBMQUNFTUVOVCkKICAgICB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
ZWZiYjRiMWY4N2M0NzhmYjAzODMyNmI5OTQwMjdmMjJhNzgwZDVhNC4uYzBkN2Q4MjEyNTRjM2U3
YmE5ZmIwM2Q5ZTdmNWE4ZjFkNmY0ZWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzQsOCArMzQsOCBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlUHJveHkgewogICAgIFVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50
MzJfdCBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgU3RyaW5nIG1pbWVUeXBlLCBTdHJpbmcg
cGx1Z2luVVJMU3RyaW5nLCBTdHJpbmcgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIFN0
cmluZyBmcmFtZVVSTFN0cmluZywgU3RyaW5nIHBhZ2VVUkxTdHJpbmcpCiAjZW5kaWYgLy8gRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkdMUG9s
aWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCB1cmwpIC0+ICh1aW50MzJfdCBsb2FkUG9saWN5KSBEZWxh
eWVkCi0gICAgUmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCB1cmwpIC0+ICh1
aW50MzJfdCBsb2FkUG9saWN5KSBEZWxheWVkCisgICAgV2ViR0xQb2xpY3lGb3JVUkwoVVJMIHVy
bCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKKyAgICBSZXNvbHZlV2ViR0xQb2xp
Y3lGb3JVUkwoVVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCR0wpCiAgICAgRGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKHN0cnVj
dCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICBEaWRSZWNlaXZl
RXZlbnQodWludDMyX3QgdHlwZSwgYm9vbCBoYW5kbGVkKQpAQCAtMTI4LDExICsxMjgsMTEgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDcmVhdGVXaW5kb3codWludDY0X3Qg
ZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXIgd2luZG93SWRl
bnRpZmllcikKIAogICAgICMgRnJhbWUgbG9hZCBtZXNzYWdlcwotICAgIERpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgdW5yZWFjaGFibGVVUkwsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwsIFVSTCB1bnJl
YWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgdXJsLCBkb3VibGUgZGVsYXkpCiAgICAg
RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQotICAgIERp
ZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwgdXJsKQorICAgIERpZENoYW5nZVByb3Zpc2lvbmFs
VVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwg
dXJsKQogICAgIERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHByb3Zpc2lvbmFsVVJMLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZENv
bW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFN0cmluZyBtaW1lVHlwZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90
IGxvYWRUeXBlLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29s
IGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1
cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpCiAgICAgRGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCkBAIC0xNDUsNyArMTQ1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKICAgICBEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRSdW5JbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQog
ICAgIERpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCi0gICAgRGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3QgdHlwZSwgV2ViQ29y
ZTo6VVJMIHVybCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCB1aW50MzJfdCB0eXBlLCBVUkwgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQog
ICAgIERpZENoYW5nZU1haW5Eb2N1bWVudCh1aW50NjRfdCBmcmFtZUlEKTsKICAgICBEaWREZXN0
cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCiAKQEAgLTQyNyw3ICs0MjcsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFNhdmVSZWNlbnRTZWFyY2hlcyhTdHJp
bmcgbmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4gc2VhcmNoSXRlbXMpCiAgICAg
TG9hZFJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlJlY2Vu
dFNlYXJjaD4gcmVzdWx0KQogCi0gICAgU2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0
cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgV2ViQ29yZTo6VVJMIG9yaWdpbmF0aW5nVVJMLCBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIo
U3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBVUkwgb3JpZ2luYXRpbmdVUkwsIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2F2ZVBERlRvVGVtcG9y
YXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihTdHJpbmcgc3VnZ2VzdGVkRmls
ZW5hbWUsIFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGEsIFN0cmluZyBwZGZVVUlEKQpAQCAtNDg3LDcgKzQ4Nyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAKICAgICBEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVh
cmFuY2UoV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAotICAgIENvbnRlbnRSdWxlTGlzdE5v
dGlmaWNhdGlvbihXZWJDb3JlOjpVUkwgdXJsLCBWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywg
VmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9ucykKKyAgICBDb250ZW50UnVsZUxpc3ROb3RpZmlj
YXRpb24oVVJMIHVybCwgVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+
IG5vdGlmaWNhdGlvbnMpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAm
JiAhUExBVEZPUk0oSU9TKQogICAgIEFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KHVpbnQ2
NF90IGNvbnRleHRJZCkKQEAgLTU0Niw2ICs1NDYsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogICAgIFN0b3BEaXNwbGF5TGluayh1bnNpZ25lZCBvYnNlcnZlcklEKQogI2VuZGlmCiAK
LSAgICBTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUlu
ZGV4LCBTdHJpbmcgY2hhbGxlbmdlU3RyaW5nLCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoU3RyaW5n
IHJlc3VsdCkKKyAgICBTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQg
a2V5U2l6ZUluZGV4LCBTdHJpbmcgY2hhbGxlbmdlU3RyaW5nLCBVUkwgdXJsKSAtPiAoU3RyaW5n
IHJlc3VsdCkKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CmluZGV4IDgxNzVhM2M2ODVmNzQyN2YxNTQxNDk1YWYyMTUwOWFjOThjMWYxN2UuLjBhMDJlM2Jk
NzE4OGRkZTAwNTcwMjY2ZDA4YjIxYjVkMzc4Nzc5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTg2LDcgKzg2LDYgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBh
cnNlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3Vh
Z2UuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtOTQsNiArOTMsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
ICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5j
bHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAxNDQ0Mjhi
NmYwOWRjOWI1ZWY3MTc1NTdmNjQ0NGNhZWRlNTRhMGMxLi5iMWU0YzVkMWNjNDkyMTAxMjE2MzVl
ODdhYmI3OTY3ZDM0MWQ1ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKQEAgLTIzNCw3ICsyMzQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbCBmaW5hbCA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlByb2Nlc3NQbwogICAgIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVz
dChjb25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvU2VydmVyKGNvbnN0IFdl
YkNvcmU6OlVSTCYpOworICAgIHZvaWQgcHJlY29ubmVjdFRvU2VydmVyKGNvbnN0IFVSTCYpOwog
CiAgICAgVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSgpIHsgcmV0dXJuIG1fdmlz
aXRlZExpbmtTdG9yZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCA5ZTg0NGNkYjVlNmYyOWJkOGE0ZDMxNWNlZmZkYjZkY2MxODEx
OTMyLi5hZDI3M2EyMjg4ZWUzODliNjZmNDg1OGQyZTQ2MWE1MTllZDkxMzU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU1LDEwICs1NSwxMCBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QdWJsaWNTdWZmaXguaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1pbmF0
aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NE
aWRUZXJtaW5hdGVPckZhaWxlZFRvTGF1bmNoKCkKICNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9M
SVNUKQogICAgIGlmIChwYWdlcy5zaXplKCkgPT0gMSkgewogICAgICAgICBhdXRvJiBwYWdlID0g
KnBhZ2VzWzBdOwotICAgICAgICBTdHJpbmcgZG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxl
ZERvbWFpbihXZWJDb3JlOjpVUkwoeyB9LCBwYWdlLmN1cnJlbnRVUkwoKSkuaG9zdCgpLnRvU3Ry
aW5nKCkpOworICAgICAgICBTdHJpbmcgZG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbihVUkwoeyB9LCBwYWdlLmN1cnJlbnRVUkwoKSkuaG9zdCgpLnRvU3RyaW5nKCkpOwogICAg
ICAgICBpZiAoIWRvbWFpbi5pc0VtcHR5KCkpCiAgICAgICAgICAgICBwYWdlLmxvZ0RpYWdub3N0
aWNNZXNzYWdlV2l0aEVuaGFuY2VkUHJpdmFjeShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6OmRvbWFpbkNhdXNpbmdDcmFzaEtleSgpLCBkb21haW4sIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZTo6Tm8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
aW5kZXggZTBhNjdjYjc4OWRmZjZkMjBhYTViOTVkYTYwMWZjM2Y5ZmMyZThjNi4uMTI2YWQyNmI2
NjA5YzIyMjZkZWM5ODZiNTUyZDUyN2RhZTQyMDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgUGFnZUNvbmZpZ3Vy
YXRpb247CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNs
YXNzIFVSTDsKIHN0cnVjdCBQbHVnaW5JbmZvOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsK
IH0KQEAgLTE0NiwxMCArMTQ1LDEwIEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eSA6IHB1YmxpYyBD
aGlsZFByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsCiAKICAgICB2
b2lkIHdpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCkgeyBtX21h
eUhhdmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24gPSB0cnVlOyB9CiAgICAgdm9p
ZCBhc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgaGFz
QXNzdW1lZFJlYWRBY2Nlc3NUb1VSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKKyAgICBi
b29sIGhhc0Fzc3VtZWRSZWFkQWNjZXNzVG9VUkwoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBi
b29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcmKTsKLSAgICBi
b29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpVUkwmKTsK
KyAgICBib29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBVUkwmKTsKIAog
ICAgIHN0YXRpYyBib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKaW5kZXggMzE3ODM2YjQyZmY2NzRlNTdiNGNiZWFlZTg3MWRmMTM0N2VlNzVmNC4u
ZjhkOTI4NDVhNjNmYTJiMzliMTdiMWViZTg5YjE3MTVmYTdiYTcyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCB2YWwKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVu
dFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3Qg
VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zNjMsNyArMzYzLDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSgpCiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dGcmFt
ZU5hdmlnYXRpb24oY29uc3QgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFVSTCYgcGFnZVVS
TCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlZGlyZWN0VVJMKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgVVJM
JiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFVSTCYgcmVkaXJlY3RVUkwpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaAppbmRleCA2YzQxMGZhNGE5NWEzYzAwOGQ1N2IyM2Y2YzgzMWQ5ZWNkMDQw
N2QwLi41ODFhMmFlOTE4YmU3NDlmNmEzYTM0YzA2MjhhNTA0NTRhNDdiYjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaApAQCAtNDEsNyArNDEsNiBAQCBjbGFzcyBXb3JrUXVldWU7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIHN0cnVjdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOwogfQogCkBAIC04NCwyOCArODMsMjggQEAgY2xhc3MgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFdlYlJlc28KIAogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsVGVybWluYXRlKCk7CiAKLSAg
ICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKTsKLSAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlv
bihjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAg
IHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25z
dCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2
b2lkIHNldExhc3RTZWVuKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNlY29uZHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBX
ZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0
VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgV2ViRnJh
bWVQcm94eSYsIGNvbnN0IFVSTCYgcGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCk7CisgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rp
b24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNs
ZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBVUkwm
LCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0UHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7Ci0gICAgdm9pZCBpc1By
ZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwotICAgIHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBp
c1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNv
dXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7Ci0gICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoY29uc3Qg
V2ViQ29yZTo6VVJMJiBzdWJGcmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1Jl
ZGlyZWN0aW5nVG8oY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0
IFdlYkNvcmU6OlVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7Ci0gICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRHcmFuZGZh
dGhlcmVkKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wpOwotICAgIHZvaWQgaXNHcmFuZGZhdGhl
cmVkKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwotICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6
OlVSTCYgc3ViZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwotICAgIHZvaWQg
c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Vi
cmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwotICAgIHZvaWQgc2V0U3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2Us
IGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwotICAgIHZvaWQgc2V0
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNv
dXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKLSAgICB2
b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZy
YW1lSG9zdE5hbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwot
ICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgV2ViQ29yZTo6VVJM
JiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3Rl
ZEZyb20pOworICAgIHZvaWQgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGlzVmVyeVByZXZhbGVudFJlc291
cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZv
aWQgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKGNvbnN0IFVSTCYgc3VicmVzb3VyY2Us
IGNvbnN0IFVSTCYgdG9wRnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
ICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKGNvbnN0IFVSTCYgc3ViRnJhbWUs
IGNvbnN0IFVSTCYgdG9wRnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
ICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKGNvbnN0IFVSTCYgaG9zdFJlZGly
ZWN0ZWRGcm9tLCBjb25zdCBVUkwmIGhvc3RSZWRpcmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBV
UkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0R3JhbmRmYXRo
ZXJlZChjb25zdCBVUkwmLCBib29sKTsKKyAgICB2b2lkIGlzR3JhbmRmYXRoZXJlZChjb25zdCBV
UkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldFN1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRv
cEZyYW1lKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihjb25z
dCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKKyAgICB2b2lkIHNldFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBV
UkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVS
ZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oY29u
c3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRv
KTsKKyAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFVSTCYgdG9w
RnJhbWVIb3N0TmFtZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKICAgICB2
b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGVGb3JEb21haW5zKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJCbG9ja2lu
Z1N0YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTEzMiw3ICsxMzEsNyBAQCBjbGFzcyBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
V2ViUmVzbwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGUoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJj
ZUZvckRlYnVnTW9kZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIAogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spIHsgbV9zdGF0aXN0aWNzVGVzdGluZ0Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChj
b25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9E
cmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9E
cmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAppbmRleCA3OTkyNjNlYWM0YTJjMjg4MjQ2NGQ5ZWZh
ZWE0NmE4NDMxNDlkYTVmLi41ZjRhM2E1ZDE4NDNlYmEyYjE0MDI2NzIxMGE0MDQ4OWU3Yzk5Nzdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5oCkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvRHJh
Z0RhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF0aC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0
SW5kaWNhdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsNyArNTIsNyBAQCBzdHJ1
Y3QgRHJhZ1NvdXJjZVN0YXRlIHsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JEYXRhPiBpbmRpY2F0b3JEYXRhOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF0
aD4gdmlzaWJsZVBhdGg7CiAgICAgU3RyaW5nIGxpbmtUaXRsZTsKLSAgICBXZWJDb3JlOjpVUkwg
bGlua1VSTDsKKyAgICBVUkwgbGlua1VSTDsKICAgICBib29sIHBvc3NpYmx5TmVlZHNEcmFnUHJl
dmlld1VwZGF0ZSB7IHRydWUgfTsKIAogICAgIE5TSW50ZWdlciBpdGVtSWRlbnRpZmllciB7IDAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0
QXNzaXN0YW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRB
c3Npc3RhbnQubW0KaW5kZXggYmI2NjM0NzUyNWYxODg3MTAwN2NlNTA0YmViOTIyNDU5YzkwZTFj
YS4uZTM0NjBmNDE1ZDBiODY4YmRmM2MyOTI1ZmM0MzhiNTdlN2ZmOTJiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0K
QEAgLTQxLDEwICs0MSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF0
aFV0aWxpdGllcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNp
bXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAj
aW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNV
UkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2ltcG9ydCA8d3Rm
L3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKQEAgLTMwNCw3ICszMDQsNyBAQCAtICh2b2lk
KV9jcmVhdGVTaGVldFdpdGhFbGVtZW50QWN0aW9uczooTlNBcnJheSAqKWFjdGlvbnMgc2hvd0xp
bmtUaXRsZTooQk9PTClzaAogICAgICAgICBpZiAoaXNKYXZhU2NyaXB0VVJMKQogICAgICAgICAg
ICAgdGl0bGVTdHJpbmcgPSBXRUJfVUlfU1RSSU5HX0tFWSgiSmF2YVNjcmlwdCIsICJKYXZhU2Ny
aXB0IEFjdGlvbiBTaGVldCBUaXRsZSIsICJUaXRsZSBmb3IgYWN0aW9uIHNoZWV0IGZvciBKYXZh
U2NyaXB0IGxpbmsiKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0aXRsZVN0cmluZyA9
IFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHRhcmdldFVSTCk7CisgICAgICAgICAgICB0aXRs
ZVN0cmluZyA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodGFyZ2V0VVJMKTsKICAgICAgICAgICAg
IHRpdGxlSXNVUkwgPSBZRVM7CiAgICAgICAgIH0KICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IGIwMWM0ZjZhM2M1NGU5OWM3MTY1NTc4YmFlNzIyZjM4ZWNiOGU1OGMuLjUzMTZiYzNkMDZj
OTJhNmU3Mjc0ZGI4MTJjNGI5Y2YyMTE5NTE3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODcsNyAr
ODcsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZURhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJFdmVudC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlNlbGVjdGlvblJlY3QuaD4gLy8gRklYTUU6
IFdLMiBzaG91bGQgbm90IGluY2x1ZGUgV2ViS2l0IGhlYWRlcnMhCiAjaW1wb3J0IDxwYWwvc3Bp
L2NnL0NvcmVHcmFwaGljc1NQSS5oPgpAQCAtOTgsNiArOTcsNyBAQAogI2ltcG9ydCA8d3RmL1Nl
dEZvclNjb3BlLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9X
ZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAt
NDg5NSw5ICs0ODk1LDkgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25T
aGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBvcGVuRWxlbWVudEF0TG8KIC0gKHZvaWQpYWN0aW9u
U2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVF
bGVtZW50V2l0aFVSTDooTlNVUkwgKil1cmwgcmVjdDooQ0dSZWN0KWJvdW5kaW5nUmVjdAogewog
ICAgIGlmIChfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCkKLSAgICAgICAgW190ZXh0U2VsZWN0aW9u
QXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJl
Y3Q6Ym91bmRpbmdSZWN0XTsKKyAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNob3dT
aGFyZVNoZWV0Rm9yOldURjo6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGlu
Z1JlY3RdOwogICAgIGVsc2UgaWYgKF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQpCi0gICAgICAgIFtf
d2ViU2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOnVzZXJWaXNpYmxlU3RyaW5n
KHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKKyAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Np
c3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6V1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpIGZyb21S
ZWN0OmJvdW5kaW5nUmVjdF07CiB9CiAKICNpZiBIQVZFKEFQUF9MSU5LUykKQEAgLTYxODcsNyAr
NjE4Nyw3IEBAIC0gKFVJVmlld0NvbnRyb2xsZXIgKilfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJG
b3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmllCiAKICAgICBOU1VSTCAqdGFyZ2V0VVJM
ID0gY29udHJvbGxlci5wcmV2aWV3RGF0YVtVSVByZXZpZXdEYXRhTGlua107CiAgICAgVVJMIGNv
cmVUYXJnZXRVUkwgPSB0YXJnZXRVUkw7Ci0gICAgYm9vbCBpc1ZhbGlkVVJMRm9ySW1hZ2VQcmV2
aWV3ID0gIWNvcmVUYXJnZXRVUkwuaXNFbXB0eSgpICYmIChXZWJDb3JlOjpwcm90b2NvbElzSW5I
VFRQRmFtaWx5KGNvcmVUYXJnZXRVUkwpIHx8IFdlYkNvcmU6OnByb3RvY29sSXMoY29yZVRhcmdl
dFVSTCwgImRhdGEiKSk7CisgICAgYm9vbCBpc1ZhbGlkVVJMRm9ySW1hZ2VQcmV2aWV3ID0gIWNv
cmVUYXJnZXRVUkwuaXNFbXB0eSgpICYmIChXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29y
ZVRhcmdldFVSTCkgfHwgV1RGOjpwcm90b2NvbElzKGNvcmVUYXJnZXRVUkwsICJkYXRhIikpOwog
CiAgICAgaWYgKFtfcHJldmlld0l0ZW1Db250cm9sbGVyIHR5cGVdID09IFVJUHJldmlld0l0ZW1U
eXBlTGluaykgewogICAgICAgICBfaGlnaGxpZ2h0TG9uZ1ByZXNzQ2FuQ2xpY2sgPSBOTzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLm1tCmluZGV4IGJkY2M1NzEwZmM3ZjQ5NjVmM2M5OGRlMTcxNjEzNTlmYTczNTc1ODIu
LjVhYWNjNWVlOTA0NWFhZmRjMTZhMzYzNWExZWJmNDFhOTI0YTQ0MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5t
bQpAQCAtNDEsMTMgKzQxLDEzIEBACiAjaW1wb3J0ICJfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlv
blByb3ZpZGVyLmgiCiAjaW1wb3J0ICJfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24uaD4KICNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIC8vIEZJWE1FOiBSZW1vdmUgdXNlIG9mIFdlYktp
dDEgZnJvbSBXZWJLaXQyCiAjaW1wb3J0IDxXZWJLaXQvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRp
b25Qcm92aWRlci5oPgpAQCAtMTg0LDcgKzE4NCw3IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uR3JhbnRlZAogCiAgICAgICAgIGlkPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVpRGVs
ZWdhdGUgPSBzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KFtyZXF1ZXN0LnZp
ZXcgVUlEZWxlZ2F0ZV0pOwogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9y
VVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxlcjopXSkgewotICAgICAgICAgICAgV2ViQ29yZTo6VVJM
IHJlcXVlc3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCkpOwor
ICAgICAgICAgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgcmVxdWVzdC5mcmFtZS0+dXJs
KCkpOwogICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFw
cGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKnJlcXVlc3QuZnJhbWUuZ2V0KCksICpyZXF1ZXN0
Lm9yaWdpbi5nZXQoKSkpOwogICAgICAgICAgICAgUmVmUHRyPFdlYktpdDo6Q29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlcjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxlcjopKTsKICAg
ICAgICAgICAgIFdLV2ViVmlldyAqdmlld0Zyb21SZXF1ZXN0ID0gcmVxdWVzdC52aWV3LmdldCgp
OwpAQCAtMjAwLDggKzIwMCw4IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3Jh
bnRlZAogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlldzpzaG91bGRSZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmlz
TWFpbkZyYW1lOm1haW5GcmFtZVVSTDopXSkgewogICAgICAgICAgICAgY29uc3QgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5KiBtYWluRnJhbWUgPSByZXF1ZXN0LmZyYW1lLT5wYWdlKCktPm1haW5GcmFt
ZSgpOwogICAgICAgICAgICAgYm9vbCBpc01haW5GcmFtZSA9IHJlcXVlc3QuZnJhbWUgPT0gbWFp
bkZyYW1lOwotICAgICAgICAgICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RGcmFtZVVSTChXZWJDb3Jl
OjpVUkwoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCkpOwotICAgICAgICAgICAgV2ViQ29yZTo6VVJM
IG1haW5GcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgbWFpbkZyYW1lLT51cmwoKSk7CisgICAgICAg
ICAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7Cisg
ICAgICAgICAgICBVUkwgbWFpbkZyYW1lVVJMKFVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKICAg
ICAgICAgICAgIHJlcXVpcmVzVXNlckF1dGhvcml6YXRpb24gPSBbdWlEZWxlZ2F0ZSBfd2ViVmll
dzpyZXF1ZXN0LnZpZXcuZ2V0KCkKICAgICAgICAgICAgICAgICAgc2hvdWxkUmVxdWVzdEdlb2xv
Y2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDpyZXF1ZXN0RnJhbWVVUkwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01haW5GcmFtZTppc01haW5GcmFt
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW0KaW5k
ZXggZDM4ZjMxYzgxNWYzYzlmM2U5OGRhNTJlNTRmYjg4ODg0ZWQwYTQzMC4uYWVhMGQ2ZDM5ZjYy
ZDcxZDk2NzQ0NmU2ODIyN2ViZDdmMjgzYWQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tCkBAIC00MywxMSArNDMsMTEgQEAKICNpbXBvcnQg
PE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENvcmVUeXBlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgotI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVj
dG9yLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9O
U1VSTEV4dHJhcy5oPgogCiAvLyBBbGwgb2YgVUlQREZQYWdlKiBhcmUgZGVwcmVjYXRlZCwgc28g
anVzdCBpZ25vcmUgZGVwcmVjYXRlZCBkZWNsYXJhdGlvbnMKIC8vIGluIHRoaXMgZmlsZSB1bnRp
bCB3ZSBzd2l0Y2ggb2ZmIHRoZW0uCkBAIC03NzksNyArNzc5LDcgQEAgLSAodm9pZClhY3Rpb25T
aGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBvcGVuRWxl
bWVudEF0TG8KIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Np
c3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0aFVSTDooTlNVUkwgKil1cmwgcmVjdDoo
Q0dSZWN0KWJvdW5kaW5nUmVjdAogewogICAgIF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgPSBhZG9w
dE5TKFtbVUlXS1NlbGVjdGlvbkFzc2lzdGFudCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsK
LSAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpXZWJDb3JlOjp1
c2VyVmlzaWJsZVN0cmluZyh1cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CisgICAgW193ZWJT
ZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6V1RGOjp1c2VyVmlzaWJsZVN0cmlu
Zyh1cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CiAgICAgX3dlYlNlbGVjdGlvbkFzc2lzdGFu
dCA9IG5pbDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
UERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KaW5k
ZXggZGZmNGM2Y2JmMDAzMmUxNTVjYmNiOTFmMTNhYmZiM2RjMjM0MDFlYS4uY2Y0ZThhNzMzMzRm
ZjU3YzI2ZGNmMTUyZDIzNzRjYWU4ZGJjY2Y2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tQREZWaWV3Lm1tCkBAIC0zOCwxMSArMzgsMTEgQEAKICNpbXBvcnQgIl9XS1dlYlZpZXdQ
cmludEZvcm1hdHRlckludGVybmFsLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9i
aWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KLSNp
bXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5oPgogCiBAaW50ZXJmYWNlIFdLUERGVmlldyAoKSA8UERGSG9zdFZpZXdDb250cm9s
bGVyRGVsZWdhdGUsIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnREZWxlZ2F0ZT4KIEBlbmQKQEAgLTQ5
Nyw3ICs0OTcsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0
QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50QXRMbwogLSAodm9pZClhY3Rpb25TaGVl
dEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1l
bnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAg
YXV0byBzZWxlY3Rpb25Bc3Npc3RhbnQgPSBhZG9wdE5TKFtbVUlXS1NlbGVjdGlvbkFzc2lzdGFu
dCBhbGxvY10gaW5pdFdpdGhWaWV3OltfaG9zdFZpZXdDb250cm9sbGVyIHZpZXddXSk7Ci0gICAg
W3NlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpXZWJDb3JlOjp1c2VyVmlzaWJs
ZVN0cmluZyh1cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CisgICAgW3NlbGVjdGlvbkFzc2lz
dGFudCBzaG93U2hhcmVTaGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJl
Y3Q6Ym91bmRpbmdSZWN0XTsKIH0KIAogI2lmIEhBVkUoQVBQX0xJTktTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVu
L1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggNGVkZDk0YmViY2RkYjUw
NDBiMDA5NGZjNDg3YTU1MjZlNjkyNTBmZS4uMjY1OGIzNjNiNDExYTNiYmZiNmQ0ZGQ2ZDNlZGE0
ZDFhYWIyMWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxz
Y3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
SU9TLm1tCkBAIC00NSwxMiArNDUsMTIgQEAKICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zp
ZXdwb3J0QXJndW1lbnRzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTlNTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQ
SS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9VUkxGb3JtYXR0aW5nU1BJLmg+CiAjaW1wb3J0
IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwpAQCAtOTQxLDcgKzk0MSw3IEBAIC0gKHZvaWQpX3VwZGF0ZUxvY2F0aW9uSW5mbwog
ICAgIGlmIChMaW5rUHJlc2VudGF0aW9uTGlicmFyeSgpKQogICAgICAgICBkb21haW4gPSBbdXJs
IF9scF9zaW1wbGlmaWVkRGlzcGxheVN0cmluZ107CiAgICAgZWxzZQotICAgICAgICBkb21haW4g
PSB1c2VyVmlzaWJsZVN0cmluZyh1cmwpOworICAgICAgICBkb21haW4gPSBXVEY6OnVzZXJWaXNp
YmxlU3RyaW5nKHVybCk7CiAjZW5kaWYKIAogICAgIE5TU3RyaW5nICp0ZXh0ID0gbmlsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNv
ZGluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRl
Q29kaW5nLmNwcAppbmRleCAxN2Y2NmI3MTc3OWMwNTQ5Y2Y2OGFlMjgxNjU4MThhNzI5ZDY2M2Zl
Li45ZjY3ODU4NzZlNjljN2I2NGRkMjEwMjg1MGUwZjU2MDRkOGU0YjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5n
LmNwcApAQCAtMTEzMyw3ICsxMTMzLDcgQEAgYm9vbCBkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUo
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBzaXplLCBTZXNzaW9uU3RhdGUmIHMKICAgICB9
CiAKICAgICBpZiAoYXV0byBwcm92aXNpb25hbFVSTFN0cmluZyA9IGR5bmFtaWNfY2ZfY2FzdDxD
RlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2Vzc2lvblN0YXRlRGljdGlvbmFyeSwg
cHJvdmlzaW9uYWxVUkxLZXkpKSkgewotICAgICAgICBzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxV
UkwgPSBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHByb3Zpc2lvbmFsVVJMU3RyaW5nKTsK
KyAgICAgICAgc2Vzc2lvblN0YXRlLnByb3Zpc2lvbmFsVVJMID0gVVJMKFVSTCgpLCBwcm92aXNp
b25hbFVSTFN0cmluZyk7CiAgICAgICAgIGlmICghc2Vzc2lvblN0YXRlLnByb3Zpc2lvbmFsVVJM
LmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbQppbmRleCBmODcyMDcwNjRjN2JlNTFlYWViYjI3YTAzMWQ0OTA1MTEyYjM4OGY0Li40
YWFmZGZmM2RlYThjZjk0MmQwMGE0MGM3Yjc0YTdmMTNjNmM2ZGJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW0KQEAgLTM4LDEzICszOCwxMyBAQAogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9v
a3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dlb21ldHJ5VXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RleHRJbmRpY2F0b3JXaW5kb3cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL21hYy9EYXRhRGV0ZWN0b3JzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L21hYy9Mb29rdXBTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TTWVudVNQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9tYWMvTlNQb3BvdmVyU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9R
dWlja0xvb2tNYWNTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLX0lOX1VNQlJFTExBKFF1YXJ0eiwgUXVp
Y2tMb29rVUkpCiBTT0ZUX0xJTktfQ0xBU1MoUXVpY2tMb29rVUksIFFMUHJldmlld01lbnVJdGVt
KQpAQCAtMjc2LDE3ICsyNzYsMTcgQEAgLSAoaWQgPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9u
Q29udHJvbGxlcj4pX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyCiAKICAgICBTdHJpbmcgYWJz
b2x1dGVMaW5rVVJMID0gaGl0VGVzdFJlc3VsdC0+YWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgaWYg
KCFhYnNvbHV0ZUxpbmtVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChXZWJDb3JlOjpwcm90
b2NvbElzKGFic29sdXRlTGlua1VSTCwgIm1haWx0byIpKSB7CisgICAgICAgIGlmIChXVEY6OnBy
b3RvY29sSXMoYWJzb2x1dGVMaW5rVVJMLCAibWFpbHRvIikpIHsKICAgICAgICAgICAgIF90eXBl
ID0ga1dLSW1tZWRpYXRlQWN0aW9uTWFpbHRvTGluazsKICAgICAgICAgICAgIHJldHVybiBbc2Vs
ZiBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZExpbmtdOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMoYWJzb2x1dGVMaW5rVVJMLCAidGVsIikp
IHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJ0ZWwiKSkg
ewogICAgICAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVBY3Rpb25UZWxMaW5rOwogICAgICAg
ICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlu
a107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZh
bWlseShhYnNvbHV0ZUxpbmtVUkwpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoYWJzb2x1dGVMaW5rVVJMKSkgewogICAgICAgICAgICAgX3R5cGUgPSBrV0tJbW1l
ZGlhdGVBY3Rpb25MaW5rUHJldmlldzsKIAogICAgICAgICAgICAgUUxQcmV2aWV3TWVudUl0ZW0g
Kml0ZW0gPSBbTlNNZW51SXRlbSBzdGFuZGFyZFF1aWNrTG9va01lbnVJdGVtXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5jcHAKaW5kZXggMjA5YTg1ZGVhM2I2MzBkMjdjMWMyMTI1MTU1NmRjYzBjNWE4MmI5
Ny4uNTU2OWRmMmVhODU1ZDE1YzVhZTQ3MTQ5YTUxYWI0YzJiNDYzN2FjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudENvb3Jk
aW5hdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6Om9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGMKICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6Ok9wZW5QYXltZW50U2V0dXAobWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5O
YW1lLCByZXBseUlEKSk7CiB9CiAKLWJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpzaG93UGF5
bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkKK2Jvb2wgV2ViUGF5bWVudENvb3JkaW5h
dG9yOjpzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3Rv
cjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBsaW5rSWNv
blVSTFN0cmluZ3M7CiAgICAgZm9yIChjb25zdCBhdXRvJiBsaW5rSWNvblVSTCA6IGxpbmtJY29u
VVJMcykKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6cGF5
bWVudENvb3JkaW5hdG9yRGVzdHJveWVkKCkKIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6
OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgU3RyaW5nJiB2YWxpZGF0aW9uVVJMU3RyaW5nKQogewot
ICAgIHBheW1lbnRDb29yZGluYXRvcigpLnZhbGlkYXRlTWVyY2hhbnQoV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCB2YWxpZGF0aW9uVVJMU3RyaW5nKSk7CisgICAgcGF5bWVudENvb3JkaW5h
dG9yKCkudmFsaWRhdGVNZXJjaGFudChVUkwoVVJMKCksIHZhbGlkYXRpb25VUkxTdHJpbmcpKTsK
IH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmRpZEF1dGhvcml6ZVBheW1lbnQoY29u
c3QgV2ViQ29yZTo6UGF5bWVudCYgcGF5bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAppbmRleCBlNDg4
N2NjODhhYjFmMTlmYmRhOTlmM2MwYjJjOGFlZDFkYjNhMDQ0Li4wMjEyZDZhZGJiYjkwNTFmYjFi
YjQ2OTZkNWQ5YTgyOTUxYWYyNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCkBAIC02MCw3ICs2MCw3
IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQ
YXltZW50Q29vcmRpbmF0b3JDbGllbnQsIHByCiAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSBv
dmVycmlkZTsKICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6
RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAg
IHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKLSAgICBib29sIHNob3dQYXltZW50VUkoY29uc3Qg
V2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4m
IGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmKSBvdmVycmlkZTsKKyAgICBib29sIHNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5h
dGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Np
b24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24o
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAKaW5kZXggM2YyNzEyMzJkNjNlNGE0Zjc3NDVlZjI4YzY0ZWFlNTUzOGM0Yjdi
OS4uN2ZlOTMzNGJhNGYzNTljNzJiMGQ5MWQ1NTQyYTcxNjQ0NjJlNmRlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbgog
ICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpDYWNoZXMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4sIHVwZGF0
ZUNvdW50ZXIpLCAwKTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1Jl
dHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OlJldHJp
ZXZlUmVjb3JkcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmll
ciwgdXJsKSwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2Fj
aGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA0ODBlZGRkOWI0ZTUxNWM0
YjRhYWU2ZDRjNmQ5NDI1OGZjYmUyNTJiLi5kMmUwZGYyZDg2MDkyMmEzYjFlMzU2YmU5MjFlNzgw
MTk4NmRjNzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3Mg
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uIHsKICAgICB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZG9SZXRy
aWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikgZmluYWw7CiAKLSAgICB2b2lkIGRv
UmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIHZvaWQgZG9SZXRy
aWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgY29uc3QgVVJMJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0
aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRp
b25zJiYpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCA1MDcx
MzEzZWM2MjUzMDdjNDBiNWI0MDEwZjcwYzYxYzc1MDQxNWQ3Li45ZDYxZTkxY2VhZmMwMDYxNDll
NzAzMmI4OWVmZmZiZjVkYTFjNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIEJsb2JS
ZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
LCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0
IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lv
bkhhbmRsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmgKaW5kZXggYjA1NDg5YjhhMjNiYzc5MGI5NWU2ZWM5ZjBkNWM4MmVk
MDlmODczYy4uYTRjNWY2ODRhZDVmMTYzNDdiMDcwNzkxODVmNzdhOWFiN2IwMGE5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5oCkBAIC0zMSwxMyArMzEsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEJsb2JS
ZWdpc3RyeVByb3h5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSB7CiBwdWJs
aWM6Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFJl
ZjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQg
dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBvdmVycmlk
ZTsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgV2ViQ29yZTo6VVJMJikg
b3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxX
ZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNV
UkwpIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwg
bG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBs
b25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIEZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IDA4ZGRiYmVhNzJiZGU3YTY4NmNlNzVj
NGY0ZmM5ODY4YzZhZmI0ODkuLjgwMTJhODRmNGM4Mzg4ODAyNjM2NzE5MDYwZDQ4NTRhNjRmMDQw
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaApAQCAtMzcsNyArMzcsNiBAQCBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcgKzU1LDcg
QEAgY2xhc3MgUGFnZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB+UGFnZUxvYWRlckNsaWVu
dCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmpl
Y3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWRE
YXRhUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQogCiAgICAgdmly
dHVhbCBib29sIHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYktpdDo6V2ViUGFnZSYs
IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtJiwgUmVmUHRyPEFQSTo6
T2JqZWN0PiYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwg
UmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQpAQCAtOTYsNyArOTUsNyBAQCBjbGFzcyBQYWdlTG9h
ZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgZmVhdHVyZXNVc2VkSW5QYWdlKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUm
KSB7IH0KLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudEZvclVSTChXZWJLaXQ6Oldl
YkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3QgeyByZXR1cm4gV1RGOjpTdHJpbmco
KTsgfQorICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50Rm9yVVJMKFdlYktpdDo6V2Vi
RnJhbWUmLCBjb25zdCBXVEY6OlVSTCYpIGNvbnN0IHsgcmV0dXJuIFdURjo6U3RyaW5nKCk7IH0K
IAogICAgIHZpcnR1YWwgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBsYXlvdXRNaWxlc3RvbmVz
KCkgY29uc3QgeyByZXR1cm4gMDsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcApp
bmRleCA0YzBjNmFlZDM4OTlkOGIyODdjYzExMGViMDc5NzZmZjE0YzcxYWUzLi4wNDYwZWM2M2Yw
NzhhZGY1ZGNlYWJjMzBlZTgyNzYzY2QzZjU4NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJh
bWUuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlM
YXllclRyZWVBc1RleHQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKIAogYm9vbCBXS0J1bmRs
ZUZyYW1lQWxsb3dzRm9sbG93aW5nTGluayhXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1VS
TFJlZiB1cmxSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChmcmFtZVJlZiktPmFsbG93c0ZvbGxv
d2luZ0xpbmsoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYp
KSk7CisgICAgcmV0dXJuIHRvSW1wbChmcmFtZVJlZiktPmFsbG93c0ZvbGxvd2luZ0xpbmsoVVJM
KFVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVGcmFtZUhh
bmRsZXNQYWdlU2NhbGVHZXN0dXJlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCkBAIC0yMTcs
MTIgKzIxNywxMiBAQCBib29sIFdLQnVuZGxlRnJhbWVHZXREb2N1bWVudEJhY2tncm91bmRDb2xv
cihXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBkb3VibGUqCiAKIFdLU3RyaW5nUmVmIFdLQnVu
ZGxlRnJhbWVDb3B5U3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0NvcGll
ZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5zdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVS
TChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKSk7Cisg
ICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPnN1Z2dlc3RlZEZpbGVuYW1l
Rm9yUmVzb3VyY2VXaXRoVVJMKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKIH0K
IAogV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlNSU1FVHlwZUZvclJlc291cmNlV2l0aFVS
TChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgcmV0
dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPm1pbWVUeXBlRm9yUmVzb3VyY2VXaXRo
VVJMKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsK
KyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+bWltZVR5cGVGb3JSZXNv
dXJjZVdpdGhVUkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBib29s
IFdLQnVuZGxlRnJhbWVDb250YWluc0FueUZvcm1FbGVtZW50cyhXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCAwN2QwMjQyNDM2YmQ0MTQ1
ODAyY2IxNTllM2IwZDk3MDE0ZjNhMzA4Li45ZTlhMmIxZDUyODZlMTRmYzQ0NjhiYzEwMDJkNWFh
NzY2NjI1ZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNjYsOSArNjYsOSBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApA
QCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0Rm9vdGVyQmFubmVyKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VCYW5uZXJSZWYKIAogYm9vbCBXS0J1bmRs
ZVBhZ2VIYXNMb2NhbERhdGFGb3JVUkwoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVm
IHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5oYXNMb2NhbERhdGFGb3JV
UkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7Cisg
ICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+aGFzTG9jYWxEYXRhRm9yVVJMKFVSTChVUkwoKSwg
dG9XVEZTdHJpbmcodXJsUmVmKSkpOwogfQogCiBib29sIFdLQnVuZGxlUGFnZUNhbkhhbmRsZVJl
cXVlc3QoV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0
cmluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5jcHAKaW5kZXggYjVlMTY1N2EwZDIxZjZjMWM5N2Ji
OTAzOGZkNGE1MDE5OWJjZjFhZC4uNzE1NzQ5YTQ5MjM5YzMxYWFiN2ZjMWFlZGQwMjYyM2UxNGU4
YWFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5n
LmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNv
bnZlcnRUb1VURjhTdHJpbmcuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzUsNyArMzUsNyBAQCBnY2hhciogY29udmVydFRv
VVRGOFN0cmluZyhXVEY6OlN0cmluZyBjb25zdCYgcykKICAgICByZXR1cm4gZ19zdHJkdXAocy51
dGY4KCkuZGF0YSgpKTsKIH0KIAotZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6
VVJMIGNvbnN0JiBzKQorZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoVVJMIGNvbnN0JiBzKQog
ewogICAgIHJldHVybiBjb252ZXJ0VG9VVEY4U3RyaW5nKHMuc3RyaW5nKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L0NvbnZlcnRUb1VURjhTdHJpbmcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKaW5kZXggZTQ5NDExM2Ez
ZjhmZjZlOWM0ZGJlNjhhZjlmMWQ4YTJlMjIyZmVjOS4uYzM3MjUzNTliODkzNDdjMWY4ODk2YWRj
NWJjYWI0YjZhNDQ5NmM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRv
VVRGOFN0cmluZy5oCkBAIC0yMywxMyArMjMsOSBAQAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCiB0eXBlZGVmIGNoYXIg
Z2NoYXI7CiAKIGdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdURjo6U3RyaW5nIGNvbnN0JiBz
KTsKLWdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdlYkNvcmU6OlVSTCBjb25zdCYgcyk7Citn
Y2hhciogY29udmVydFRvVVRGOFN0cmluZyhVUkwgY29uc3QmIHMpOwogCiAjZW5kaWYgLyogQ29u
dmVydFRvVVRGOFN0cmluZ19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwCmluZGV4IDFiYjBiYTE2MDM3MjhiYzJmYzkyNDk3YWNiMDEzNmJiOTk5MDU3MmIu
LjA4MzE3NGU1ZWQyMWY5ODM5NzNiMjZjN2Q3YzhjNDg4ZTEwMmMyMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRl
c3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggNDkzNTY2MWVlMjQ4OGY2MzgwMTRlODY5ZGQ4ZjEx
MjA5YTQ4YjgxMC4uMDFkZDk5MDc5Y2I1NGZiNjMzNWVjZmEzZTM3MzM1ZWUxYjY1YmY3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtMzQsNyAr
MzQsNiBAQAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiBjbGFzcyBTdHJpbmc7Ci1j
bGFzcyBVUkw7CiAKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VM
b2FkZXJDbGllbnRCYXNlPiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQnVuZGxlUGFnZUxv
YWRlckNsaWVudFYwLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMSwgV0tCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50VjIsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYzLCBXS0J1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnRWNCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjUsIFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudFY2LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNywgV0tCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50VjgsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY5PiBWZXJzaW9uczsKQEAgLTQ4LDcg
KzQ3LDcgQEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQ
STo6Q2xpZW50PFdLQnVuZGxlUGFnZUxvYWRlckNsaWUKICAgICBleHBsaWNpdCBJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQoY29uc3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSop
OwogCiAgICAgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxs
TG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJQYWdlJiwgSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwg
V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CkBAIC04Nyw3ICs4Niw3
IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudCA6IHB1YmxpYyBBUEk6OkNs
aWVudDxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllCiAKICAgICB2b2lkIGZlYXR1cmVzVXNlZEluUGFn
ZShXZWJQYWdlJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYpIG92ZXJyaWRlOwogCi0gICAg
V1RGOjpTdHJpbmcgdXNlckFnZW50Rm9yVVJMKFdlYkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6VVJM
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgV1RGOjpTdHJpbmcgdXNlckFnZW50Rm9yVVJMKFdlYkZy
YW1lJiwgY29uc3QgVVJMJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXZWJDb3JlOjpMYXlvdXRN
aWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1l
ZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGUyYTY5NzhmZTI4M2FkNTNjMzQ4YmYwNzA3
YWI2OGRmN2Q5NjIzNjIuLjkwM2M2ZDAxMmMxZGIyODhmYmEyMzhiNTc4YmQwNjU2MzQ0OGQ4MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRp
YUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMTI3OGMx
YjQ0M2ZhZDdiZmE3MWYxMGYyYjRmMjg2ODZiNmUwMzQ0Zi4uNjVjZjQyM2FiMTY4MjcyNWFmZDk0
YTMxNGJlMTQ3YjgzZWE5ZjFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2Fk
SWRlbnRpZmllciwgUmVzb3VyY2VFCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
ZXJyb3IpLCBXVEZNb3ZlKHJlc3BvbnNlKSk7CiB9CiAKLXZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
UHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCBj
b25zdCBVUkwmIHVybCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyID0gZ2VuZXJhdGVMb2FkSWRl
bnRpZmllcigpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wcmVjb25uZWN0Q29tcGxldGlvbkhh
bmRsZXJzLmFkZChwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmgKaW5kZXggZTA0MGQwNzU1Yzc5NGRiZDcxZWE5YzU1ODg0MmEwNjVjNTJk
ZjVkZS4uMWMyZmIzZjExZTQ1ZTNiN2VhODgyOTYzZmExY2EwOTNkOGU2ZTE2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5o
CkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFdlYkxvYWRlclN0cmF0ZWd5IGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKIAogICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyJiwgYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBjcm9zc09yaWdpblJlZGly
ZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlZGlyZWN0VVJMKSBmaW5hbDsKKyAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZl
ZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpIGZpbmFs
OwogICAgIAogICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkUHJpb3JpdHkgbWluaW11bVByaW9yaXR5KSBmaW5hbDsKIApAQCAtNjUsNyArNjUsNyBAQCBj
bGFzcyBXZWJMb2FkZXJTdHJhdGVneSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSB7CiAgICAgdm9pZCBzdGFydFBpbmdMb2FkKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgb3JpZ2luYWxS
ZXF1ZXN0SGVhZGVycywgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgUGluZ0xvYWRDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2
NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oV2ViQ29yZTo6
RnJhbWVMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZv
aWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3QgcHJlY29u
bmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CiAKICAgICB2b2lk
IHN0b3JlRGVyaXZlZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYgYm9keUhhc2gsIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXJ0aXRpb24sIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgKaW5kZXggMDI0NGU1ZjJjODg2MjA1MzE3Njk5ZWNmZDFl
MWExYjIzYzdmZDk5OC4uNjliN2ZhM2I0MTZmNGVmMzk2YWVhZGU0YzEyMDg0YmIzNTJiMTE4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJv
dmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQ
cm92aWRlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
U29ja2V0UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U29ja2V0UHJvdmlkZXIgewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0UHJvdmlkZXI+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0UHJvdmlkZXIpOyB9Ci0gICAgUmVmPFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pIGZpbmFsOworICAgIFJlZjxX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25z
dCBVUkwmLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uKSBmaW5hbDsKICAgICB2aXJ0dWFs
IH5XZWJTb2NrZXRQcm92aWRlcigpIHsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKaW5kZXggN2EwYjllMzEyZWI5
OWQ0N2FjNTJkZWU5ZGU0YWE2OGVhZjU0ZDc0Ny4uMWQ1ZTIyOWFjMjNkYTMwODdlNDZkOTM1NTY1
YWFhNGQ2N2I1YTAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC03MCw3ICs3MCw3IEBAIFJlZjxXZWJTb2NrZXRT
dHJlYW0+IFdlYlNvY2tldFN0cmVhbTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0U3RyZWFtKHVybCwg
Y2xpZW50LCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24pKTsKIH0KIAotV2ViU29ja2V0
U3RyZWFtOjpXZWJTb2NrZXRTdHJlYW0oY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24pCitXZWJTb2NrZXRTdHJlYW06OldlYlNv
Y2tldFN0cmVhbShjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjYWNo
ZVBhcnRpdGlvbikKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0U3RyZWFtLmgKaW5kZXggM2ZlYjZhNjM1ZmZlOWU3OTIzMWQzMmI1MWM2
M2ZiNzI4NzdkOTllMy4uMzg5YTBiOThiNzU5OGNjNjY4YmU4ZGI0NWYxNzExYjhmZThmNzcwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlNv
Y2tldFN0cmVhbSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciwgcHVibGljIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSwgcHVibGljIElk
ZW50aWZpZWQ8V2ViU29ja2V0U3RyZWFtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJT
b2NrZXRTdHJlYW0+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50
aWFsUGFydGl0aW9uKTsKKyAgICBzdGF0aWMgUmVmPFdlYlNvY2tldFN0cmVhbT4gY3JlYXRlKGNv
bnN0IFVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOwogICAgIHN0YXRpYyB2b2lk
IG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpOwogICAgIHN0YXRpYyBXZWJTb2NrZXRTdHJlYW0qIHN0
cmVhbVdpdGhJZGVudGlmaWVyKHVpbnQ2NF90KTsKICAgICAKQEAgLTczLDcgKzczLDcgQEAgY2xh
c3MgV2ViU29ja2V0U3RyZWFtIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLAogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGZpbmFsOwogCi0gICAgV2ViU29ja2V0U3RyZWFtKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOworICAgIFdlYlNvY2tldFN0cmVhbShjb25zdCBV
UkwmLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uKTsKICAgICB+V2ViU29ja2V0U3RyZWFt
KCk7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZEFtb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcAppbmRleCAwMDNkMjdhMTAxODc5ODg5ZGFhNjZmYWEwYzZkOTkzZTkxNjBlMTBmLi5j
NmE1MDY5MTc0MGE1ZGIzZTY1ZjE5NzU3MWI3YmQ0MDA1YmI3MWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwCkBAIC0zOCw4ICszOCw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQSGVhZGVy
TWFwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHV0aWxp
dHk+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoVU5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4
IGJjYjNkN2ZiNzc3ZDEzMWM3ZjI0NzZmNjViMTUyZjA0MzkwMTQ2ZDcuLjc0YTg0ZTkyN2NmNWE3
ZGY2MjIzNmNmNGE5YmZmYjk1NTEyMzlhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTM5
LDcgKzEzOSw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiAKICAg
ICB2b2lkIHNldElzUGxheWluZ0F1ZGlvKGJvb2wpOwogCi0gICAgdm9pZCByZWdpc3RlclJlZGly
ZWN0KE5ldHNjYXBlUGx1Z2luU3RyZWFtKiwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJM
LCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cywgdm9pZCogbm90aWZpY2F0aW9uRGF0YSk7Cisg
ICAgdm9pZCByZWdpc3RlclJlZGlyZWN0KE5ldHNjYXBlUGx1Z2luU3RyZWFtKiwgY29uc3QgVVJM
JiByZXF1ZXN0VVJMLCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cywgdm9pZCogbm90aWZpY2F0
aW9uRGF0YSk7CiAgICAgdm9pZCB1cmxSZWRpcmVjdFJlc3BvbnNlKHZvaWQqIG5vdGlmeURhdGEs
IGJvb2wgYWxsb3cpOwogCiAgICAgLy8gTWVtYmVyIGZ1bmN0aW9ucyBmb3IgY2FsbGluZyBpbnRv
IHRoZSBwbHVnLWluLgpAQCAtMjA0LDEzICsyMDQsMTMgQEAgY2xhc3MgTmV0c2NhcGVQbHVnaW4g
OiBwdWJsaWMgUGx1Z2luIHsKICAgICB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRf
dCByZXF1ZXN0SUQpIG92ZXJyaWRlOwogICAgIHZvaWQgZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRXZhbHVh
dGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIG92
ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVz
cG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
cmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwKKyAgICB2b2lkIHN0cmVhbVdpbGxT
ZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOworICAgIHZv
aWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3
YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwgCisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJM
JiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1E
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCA0MDc0MDc4ZDdhOGZiNTM4Y2ZmNDdkYzFhZGE0
ZjlkMjBiNzBkMjJmLi5iYjZhNWIwOGM3Y2NlNWRkZWQ4OTkzNjBmN2FiODM0MGYwMzk1ZTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTM2LDEwICszNiw2IEBACiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIE5ldHNjYXBlUGx1Z2luOwpAQCAtNTUsOCArNTEsOCBAQCBjbGFzcyBOZXRzY2FwZVBs
dWdpblN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiB7CiAg
ICAgdWludDY0X3Qgc3RyZWFtSUQoKSBjb25zdCB7IHJldHVybiBtX3N0cmVhbUlEOyB9CiAgICAg
Y29uc3QgTlBTdHJlYW0qIG5wU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gJm1fbnBTdHJlYW07IH0K
IAotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVS
TCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFJlc3BvbnNlVVJMLCBpbnQgcmVkaXJlY3RS
ZXNwb25zZVN0YXR1cyk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAorICAgIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZWRpcmVjdFJl
c3BvbnNlVVJMLCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cyk7CisgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycyk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggZTU4ZGUyYzc2MGRkYjE0YzEyYzRjYmZiZjc1Y2U5
MmY1YWI4ZTAxYS4uNjg2MmUzMDRmZWRiODViNzg2MzQ3MDBiOWQ2YjM1YTZjM2MyMGNlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApA
QCAtMTM1LDEyICsxMzUsMTIgQEAgY2xhc3MgUERGUGx1Z2luIGZpbmFsIDogcHVibGljIFBsdWdp
biwgcHJpdmF0ZSBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSB7CiAgICAgdm9pZCBmcmFtZURpZEZp
bmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lRGlk
RmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2
b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KSBmaW5hbDsKLSAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQotICAgIHZv
aWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJD
b3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxh
c3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVh
ZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7CisgICAgdm9pZCBz
dHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVz
dFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBmaW5hbCB7
IH0KKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwg
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBs
YXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhl
YWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwogICAgIHZvaWQg
c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWlu
dDY0X3Qgc3RyZWFtSUQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBz
dHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFt
RGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQz
Ml90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZp
bmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3
YXNDYW5jZWxsZWQpIGZpbmFsOwpAQCAtMzA2LDcgKzMwNiw3IEBAIGNsYXNzIFBERlBsdWdpbiBm
aW5hbCA6IHB1YmxpYyBQbHVnaW4sIHByaXZhdGUgV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWEgewog
CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7CiAKLSAgICBXZWJDb3JlOjpVUkwgbV9zb3Vy
Y2VVUkw7CisgICAgVVJMIG1fc291cmNlVVJMOwogCiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmls
ZW5hbWU7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IG1fZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDcx
YjhjZjgzMzQzYzZjZjg1MmEwZDA5NzI4MzhkZmZhZDI3MDZjOGEuLmU0Y2Q2NTM1NjExNjI0NmJm
YTY4Zjc0YjE2YjQzMTU2OGQ3OTc1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTcwMiw3ICsxNzAyLDcgQEAgYm9vbCBQ
REZQbHVnaW46OmhhbmRsZXNQYWdlU2NhbGVGYWN0b3IoKSBjb25zdAogdm9pZCBQREZQbHVnaW46
OmNsaWNrZWRMaW5rKE5TVVJMICp1cmwpCiB7CiAgICAgVVJMIGNvcmVVUkwgPSB1cmw7Ci0gICAg
aWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KGNvcmVVUkwpKQorICAgIGlmIChXVEY6OnByb3RvY29s
SXNKYXZhU2NyaXB0KGNvcmVVUkwpKQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZSogZnJh
bWUgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmgKaW5kZXggODc2ZjZjZTQ4ZWNjYjYwNjMzOTQ3NmE2NjYxZjI2ZjRmOTBh
YTQ3Mi4uYWFiZDVlNTA1MWJlYzI5ZjU1MTE1NzM4MDYxYTZhNjA4ZWYyMzEyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTIzLDE2ICsyMywxNSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUGx1Z2lu
X2gKLSNkZWZpbmUgUGx1Z2luX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9G
aW5kT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC01MywxNSAr
NTIsMTUgQEAgY2xhc3MgRGVjb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNs
YXNzIEFmZmluZVRyYW5zZm9ybTsKLSAgICBjbGFzcyBGbG9hdFBvaW50OwotICAgIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKLSAgICBjbGFzcyBJbnRQb2ludDsKLSAgICBjbGFzcyBJbnRSZWN0Owot
ICAgIGNsYXNzIEludFNpemU7Ci0gICAgY2xhc3MgRmxvYXRQb2ludDsKLSAgICBjbGFzcyBTY3Jv
bGxiYXI7Ci0gICAgY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwor
Y2xhc3MgRmxvYXRQb2ludDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIEludFBvaW50
OworY2xhc3MgSW50UmVjdDsKK2NsYXNzIEludFNpemU7CitjbGFzcyBGbG9hdFBvaW50OworY2xh
c3MgU2Nyb2xsYmFyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTgyLDcgKzgxLDcgQEAgZW51bSBQbHVnaW5UeXBlIHsKIGNsYXNzIFBsdWdpbiA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbHVnaW4+IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
UGFyYW1ldGVycyB7Ci0gICAgICAgIFdlYkNvcmU6OlVSTCB1cmw7CisgICAgICAgIFVSTCB1cmw7
CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiB2
YWx1ZXM7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKQEAgLTE2NywxMCArMTY2LDEwIEBAIGNs
YXNzIFBsdWdpbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbHVnaW4+IHsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgU3RyaW5nJiByZXN1bHQpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQg
YSBzdHJlYW0gbWF5IHNlbmQgYW4gSFRUUCByZXF1ZXN0LgotICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
cmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNl
U3RhdHVzQ29kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3Qo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNw
b25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzQ29kZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhl
IHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgcmVjZWl2ZWQgaXRzIEhUVFAgcmVzcG9uc2UuCi0g
ICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCAKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0
cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1v
ZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJz
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0
aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCkBAIC0xODMsNyArMTgy
LDcgQEAgY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4g
ewogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29s
IHdhc0NhbmNlbGxlZCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUg
bWFudWFsIHN0cmVhbSBoYXMgcmVjZWl2ZWQgaXRzIEhUVFAgcmVzcG9uc2UuCi0gICAgdmlydHVh
bCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwm
IHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwgdm9pZCBt
YW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
TmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0
cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgpAQCAtMzIzLDUgKzMyMiwzIEBAIGNsYXNzIFBsdWdpbiA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbHVnaW4+IHsKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViS2l0OjpUb1ZhbHVlVHlwZU5hbWUpIFwKIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJLaXQ6OlBsdWdpbiYgcGx1Z2luKSB7IHJldHVybiBwbHVnaW4udHlwZSgpID09
IFdlYktpdDo6U3BlY2lmaWNQbHVnaW5UeXBlOyB9IFwKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKLQotI2VuZGlmIC8vIFBsdWdpbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKaW5kZXggYTVjNmZhMDQzYzM2MjI2OTQx
YzhkMjE0N2IyMTIwOGVjMmYyOTQ3NS4uYTFmODA3ZTFlNTUwNzIzZWZlZWExNzcxMzNiODFkZmY0
ZDE3NmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbkNvbnRyb2xsZXIuaApAQCAtNDMsNyArNDMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBIVFRQSGVhZGVyTWFwOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFByb3RlY3Rpb25TcGFj
ZTsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCBkYzQyMTFkMDBlZDg5MTBk
MzQ3ZDhmMGNhMWI3NTNjNmIyZTZlYTFkLi5lNmFiM2VkOWIwMzJmZTA0YzAyZGY1YzY4OTJlNDdk
NGU2OWQ0YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmgKQEAgLTg3LDEyICs4NywxMiBAQCBjbGFzcyBQbHVnaW5Qcm94eSA6IHB1YmxpYyBQ
bHVnaW4gewogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJ
RCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBi
b29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3Jp
cHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwg
aW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1
ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYg
cmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJl
YW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9u
c2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVh
bUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQs
IGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFt
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1E
aWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWls
KGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZjA3NTJiZDk4MmExNTNiYWQ0YjI5MjQ1
ZjEwMzIxOTcwZWIzYWM5MS4uM2NhYWFjOWFjMWNkM2RiZDZiZjQ2ZmVjNWQ3MWYxNDFkZjQ1YjM5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKQEAgLTExNjMsNyArMTE2Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVVSTFJlcXVl
c3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICBSZWY8UGx1Z2luVmlldz4gcHJvdGVjdCgqdGhp
cyk7CiAKICAgICAvLyBGaXJzdCwgY2hlY2sgaWYgdGhpcyBpcyBhIGphdmFzY3JpcHQ6IHVybC4K
LSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVybCgpKSkg
eworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51
cmwoKSkpIHsKICAgICAgICAgcGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KHJlcXVlc3QpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTIyOCw3ICsxMjI4LDcgQEAgdm9pZCBQbHVnaW5W
aWV3OjpwZXJmb3JtRnJhbWVMb2FkVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogCiB2
b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdChVUkxSZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIEFTU0VSVChwcm90b2NvbElzSmF2YVNjcmlwdChyZXF1ZXN0LT5yZXF1
ZXN0KCkudXJsKCkpKTsKKyAgICBBU1NFUlQoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChyZXF1
ZXN0LT5yZXF1ZXN0KCkudXJsKCkpKTsKIAogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBtX3Bs
dWdpbkVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Q
cm92aWRlci5jcHAKaW5kZXggNWM1MWM0NWY2NDA5ZGVlZGQ1NWU5M2MwZmQ5ODhiN2M4NzNkODMx
YS4uM2Y3MGIxZTg3YjlhZmU4ZjNmMDY1YTQxOWNjZGI5NTJjZWZmY2U2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJv
dmlkZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgVmVjdG9yPFBsdWdpbkluZm8+IFdlYlBsdWdp
bkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhQYWdlJiBwYWdlLCBzdGQ6Om9wdGlvbmFsPFYKICNl
bmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIH0KIAotVmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbkluZm8o
UGFnZSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCitWZWN0b3I8V2ViQ29yZTo6UGx1
Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQYWdl
JiBwYWdlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cnM7CiAgICAgYXV0byBwbHVnaW5zID0gcGx1Z2luSW5mbyhwYWdlLCBzdXBwb3J0ZWRQbHVnaW5J
ZGVudGlmaWVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCmluZGV4IDFiYmFkNWE3OWZiMTFlYzY4MDc0OTQ3
ZDAwN2MzY2Q1NmU1ODE5ZGQuLjg0NjQyZDdmYzAxMWY4Y2FjZjY0MWJiMWFlZThmMjgyMzkzYzA3
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdp
bkluZm9Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpbkluZm9Qcm92aWRlci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFdlYlBsdWdpbklu
Zm9Qcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5JbmZvUHJvdmlkZXIgewog
ICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcigpOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdl
YkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOwotICAgIFZlY3RvcjxX
ZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbklu
Zm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBVUkwmKSBmaW5h
bDsKICAgICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMmJmYWVlNDc2ZTFmNGJjY2Nk
YjI2NjBmZTVkOGU2NmJkNjc0YTNkNy4uZGNkNmRhNTgwNmJiMzMyYzI0ZmZlYzg1MThlZTUwOTZj
YmFlN2Y4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTc5LDEzICs3OSwxMyBAQCBjbGFzcyBXZWJT
V0NsaWVudENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0
aW9uLCBwdWJsaWMgSQogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mKSBmaW5hbDsKICAgICB2b2lkIHVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcikgZmluYWw7
CiAKLSAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6VVJMJiBjbGllbnRVUkwsIFJlZ2lzdHJhdGlv
bkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24oV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgUmVn
aXN0cmF0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBkaWRNYXRjaFJlZ2lzdHJhdGlv
bih1aW50NjRfdCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKTsKICAgICB2b2lkIGRpZEdldFJlZ2lz
dHJhdGlvbnModWludDY0X3QgbWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKTsKLSAgICB2b2lkIHdoZW5SZWdpc3Ry
YXRpb25SZWFkeShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCB3aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFdoZW5SZWdp
c3RyYXRpb25SZWFkeUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uUmVh
ZHkodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEmJik7CiAKLSAgICB2b2lkIGdldFJlZ2lzdHJhdGlvbnMoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCwgR2V0
UmVnaXN0cmF0aW9uc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9u
cyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xp
ZW50VVJMLCBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICB2b2lkIGRp
ZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
aW5kZXggZTg3M2ZmZmQyYThjNzAxYWU4NjkwNWNlOWU1NzA0ZjFhN2I5YzliNC4uZDk3OTQ2OTlj
OTFkYzVkNzU2ZGMzM2JkYjI1NDVjNWY1ZGMwNDE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvCiAgICAg
dm9pZCBtYXRjaEFsbChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsYWltKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIGZpbmFsOwogICAgIHZvaWQgc2tpcFdhaXRpbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTY3JpcHRS
ZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCYpIGZpbmFsOworICAgIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNz
YWdlcy4KICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2Uoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAppbmRleCAwMzcwMTA2ZTkyZjFmYjJh
NGFiZDg1MTExNmM3MjYyZmU0NTQwMGZiLi42MjZmNjFhNTBhNjQ1OWQ0OTU2N2Q2OGJmZWNiYTg3
N2JiYTZhYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCkBAIC01NywxMCArNTcs
MTAgQEAgY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OlVzZXJDb250ZW50UHJvdmlkZXIsIHByaXYKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIHZv
aWQgYWRkVXNlclNjcmlwdChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgV2ViQ29yZTo6VXNl
clNjcmlwdCYmKTsKLSAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRXaXRoVVJMKEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlbW92ZVVz
ZXJTY3JpcHRXaXRoVVJMKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBjb25zdCBVUkwmKTsK
ICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRzKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmKTsK
ICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBX
ZWJDb3JlOjpVc2VyU3R5bGVTaGVldCYmKTsKLSAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0
V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7
CisgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCYsIGNvbnN0IFVSTCYpOwogICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzKElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggZjkzNjY3YWU0OGU5ZDc4MWYzMmYyNmEx
MGEzYTUyZjdjZmE4YzMxNi4uNWE0NmVmODA3ZDcwMTczZTlmYzE4MzMyN2Q3NjFiZmIyNWNjOGQ1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTExODMsNyArMTE4Myw3IEBAIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFw
cGVkS2V5LCBWZWN0b3I8CiAKICNlbmRpZgogCi1TdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25z
dCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0
CitTdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywg
Y29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlc3VsdDsKICAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
ZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZywgdXJsKSwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nOjpSZXBseShyZXN1bHQpLCBt
X3BhZ2UucGFnZUlEKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDA5NDhmNjdhYmVjMTRkODRl
NmRmNTU2NDI3MWVkNmUxM2Q5NDI0Y2UuLjNmZWUwY2IwMWIzNmRiODZmNmYzYWYwMzkzY2FhM2Ex
NWYzNWQwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBjbGFzcyBX
ZWJDaHJvbWVDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKICAg
ICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCkgZmluYWw7CiAgICAgYm9vbCBh
ZGp1c3RMYXllckZsdXNoVGhyb3R0bGluZyhXZWJDb3JlOjpMYXllckZsdXNoVGhyb3R0bGVTdGF0
ZTo6RmxhZ3MpIGZpbmFsOwogCi0gICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24o
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgSGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJp
bmc+PiYpIGZpbmFsOworICAgIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKGNvbnN0
IFVSTCYsIGNvbnN0IEhhc2hTZXQ8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mKSBmaW5hbDsK
IAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIHNldExhc3RTZXRDdXJzb3JUb0N1cnJlbnRD
dXJzb3IoKSBmaW5hbCB7IH0KQEAgLTMyNSw3ICszMjUsNyBAQCBjbGFzcyBXZWJDaHJvbWVDbGll
bnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKICAgICBib29sIHVud3Jh
cENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25z
dCBmaW5hbDsKICNlbmRpZgogCi0gICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3Ry
aW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3Qg
U3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAjaWYg
RU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMpCiAgICAg
dm9pZCBoYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcmIG51bWJlciwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgK
aW5kZXggY2VjMzE0MmIxNmUzNWQwMDJjZmM4YzQyZjRlNzgxYjgyZWJlODU4Yy4uNWQ4ZTdkNmQw
ZmE1MWExMDUxZDgwY2ExNzY2ZWUzNzdmYmNmM2NiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJs
aWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgewogcHJpdmF0ZToKICAgICB2b2lkIGNvbnRl
eHRNZW51RGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0
IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJM
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZy
YW1lKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6RnJh
bWUqKSBvdmVycmlkZTsKICAgICBib29sIGlzU3BlYWtpbmcoKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5oCmluZGV4IDlmN2Q3ZmM1MGI2ZWM4YWVlNTZiYjI1OWI3MzM0MGM0MGQ5MzY3MjcuLjFhZDRj
M2RlMmNiN2QzOGU2MjYyYzE5N2FhYjI0Y2NhNmZlZGE4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdD
bGllbnQgewogICAgIHZvaWQgZGlkQ29uY2x1ZGVFZGl0RHJhZygpIG92ZXJyaWRlOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
V2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZy
YW1lKikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95
ZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGMyMzUz
OTUzNTMyYjA3NzcwMjIwNTczZjJkZjM2YjhjYzM2NmY3YWMuLmNhOWU2MzdiYzU5N2VhNjI5YTE2
ZjIwNzEwYTQ0YjVmMTRlMzVhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtMTc5Niw3ICsxNzk2LDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YWxsb3dTY3Jp
cHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpCiAgICAgcmV0dXJuICFwbHVnaW5WaWV3IHx8ICFw
bHVnaW5WaWV3LT5zaG91bGRBbGxvd1NjcmlwdGluZygpOwogfQogCi1ib29sIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCkKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNl
VW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFdlYlBh
Z2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBjMWI5Y2QwZjk0MzMyNzljZGQ4NGMwYzk1ZmE4MWI5
ODRlNWY1NGU4Li4zYzcxNjY4NTBiMjUxNTY2ZDVlNDQwZWUzZjU5MzdjYjljY2Y3MDEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtOTcsMTMgKzk3LDEzIEBAIGNsYXNzIFdlYkZy
YW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
IHsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICpkZXRl
Y3Rpb25SZXN1bHRzKSBmaW5hbDsKICNlbmRpZgogICAgIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VN
YWluRG9jdW1lbnQoKSBmaW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoV2lsbENoYW5nZURvY3VtZW50
KGNvbnN0IFdlYkNvcmU6OlVSTCYgY3VycmVudFVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBuZXdV
cmwpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgVVJM
JiBjdXJyZW50VXJsLCBjb25zdCBVUkwmIG5ld1VybCkgZmluYWw7CiAKICAgICB2b2lkIGRpc3Bh
dGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgZmluYWw7CiAgICAgdm9p
ZCBkaXNwYXRjaERpZENoYW5nZVByb3Zpc2lvbmFsVVJMKCkgZmluYWw7CiAgICAgdm9pZCBkaXNw
YXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaFdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVy
dmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBm
aXJlRGF0ZSkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZSgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkg
ZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBmaW5h
bDsKQEAgLTE1NSw4ICsxNTUsOCBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgYm9vbCBzaG91bGRHb1Rv
SGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdCBmaW5hbDsKIAogICAgIHZv
aWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIGZpbmFsOwotICAgIHZvaWQgZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6VVJM
JikgZmluYWw7Ci0gICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9v
bCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFsOworICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250
ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9p
ZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFs
OwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKQEAg
LTE4OSw5ICsxODksOSBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgdXBk
YXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBmaW5hbDsK
IAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIAotICAg
IFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgU3RyaW5n
IHVzZXJBZ2VudChjb25zdCBVUkwmKSBmaW5hbDsKIAogICAgIFN0cmluZyBvdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IGZpbmFsOwogCkBAIC0yMTAsMjAgKzIxMCwyMCBAQCBj
bGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudCB7CiAgICAgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExv
YWRlciosIFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdp
bkhlaWdodCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQg
bWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIGZpbmFsOwogCi0gICAgUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRN
YW51YWxseSkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2lu
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCYsIGNv
bnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgZmluYWw7CiAgICAgdm9pZCByZWNyZWF0
ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0RGF0YVRv
UGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZpbmFsOwogICAgIAogI2lmIEVOQUJMRShXRUJHTCkK
LSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJikgY29uc3QgZmluYWw7Ci0gICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJl
c29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsK
KyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJM
JikgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJH
TFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgZmluYWw7CisgICAgUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQmLCBjb25zdCBVUkwmIGJhc2VV
UkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpIGZpbmFsOwogICAgIAotICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRU
eXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpIGZpbmFsOworICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENv
bnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGZpbmFsOwogICAg
IFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaXNw
YXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQm
KSBmaW5hbDsKQEAgLTI0OSw3ICsyNDksNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBib29sIGFs
bG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSBmaW5hbDsKIAotICAgIGJvb2wgc2hv
dWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikg
ZmluYWw7CisgICAgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChj
b25zdCBVUkwmKSBmaW5hbDsKIAogICAgIFJlZjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250
ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCmluZGV4IGU5NzczZWE3ODBhMzMyYWU1OWYwMjc4YWU4M2EzMDc2ZGQy
Nzk3NmUuLjFkM2VlZTc5ODNjZWVjMjExMGMyZjg1N2EzMmI0ZWU1YzZlMWYyOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC02MCw5ICs2MCw5IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9TYW1lU2l0ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VOYW1lc3Bh
Y2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1YmZyYW1lTG9hZGVyLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0F0
b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5j
bHVkZSAiU3RyaW5nVXRpbGl0aWVzLmgiCkBAIC0zNjQsNyArMzY0LDcgQEAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoaW4KICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOwogfQog
Ci1XZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9h
cmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
KQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKIHsKICAg
ICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlJlYWRVUkxGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHVybFN0cmlu
ZywgdGl0bGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCA2ZWVjMDli
MWVkMjJiOWFkMDY4ZTNmNjkyNGI1OTI1NzQ1MTVkMTQ2Li43NmE4MTBhZmQzZTBmZjUwNzkzYjVk
ZjE1Y2VlYzgzYTI0YTE0YWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00
NywxMyArNDcsMTMgQEAgY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNv
cmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3IKICAgICBXZWJDb3JlOjpCbG9i
UmVnaXN0cnkqIGNyZWF0ZUJsb2JSZWdpc3RyeSgpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViQ29y
ZTo6Q29va2llc1N0cmF0ZWd5Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0Zv
ckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JE
T00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
Jiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIG92ZXJyaWRlOwotICAg
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0g
ICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgYm9vbCBnZXRSYXdDb29raWVz
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIG92ZXJyaWRlOworICAgIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViQ29yZTo6UGFz
dGVib2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNjQsNyArNjQsNyBAQCBjbGFz
cyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVn
aWVzLCBwcml2YXRlIFdlYkNvcgogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFN0cmlu
Z0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRl
OworICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICBWZWN0b3I8V2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpAQCAtODAsNyArODAsNyBAQCBjbGFzcyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBw
cml2YXRlIFdlYkNvcgogICAgIGxvbmcgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHVuaXF1ZU5hbWUoKSBvdmVycmlkZTsKICAg
ICBXZWJDb3JlOjpDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKLSAgICBXZWJDb3JlOjpVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOworICAgIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CiAKICAgICBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIGxv
bmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW0KaW5kZXggM2JkN2QxZmJiMzhjYjIwOWFmZGI3MWRlYjE4YjlkOTFlZGQ5MTMwZi4uYWU1
OTUyZDA4ZTY0OTc2MTYwYzhhMzQ0OTRiNGFkNjBiYWE5NzBmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbQpAQCAtNDgsOCArNDgsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJv
YXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1N0cmluZ1RydW5jYXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMu
aD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiVUlLaXRTUEkuaCIKQEAg
LTEyOSw3ICsxMjksNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIGlmICh0aXRsZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgdGl0bGUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAg
ICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRpdGxlID0gdXNlclZpc2li
bGVTdHJpbmcoKE5TVVJMICopdXJsKTsKKyAgICAgICAgICAgIHRpdGxlID0gV1RGOjp1c2VyVmlz
aWJsZVN0cmluZyh1cmwpOwogICAgIH0KIAogICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBh
cmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGVsZW1lbnQpOwpAQCAtMTY2LDcgKzE2
Niw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgICAgICAgICBmaWxlbmFtZSA9IGRv
d25sb2FkRmlsZW5hbWU7CiAgICAgfQogCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBpbWFnZUhh
bmRsZSwgaW1hZ2VTaXplLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgU3RyaW5nKFtbcmVz
cG9uc2UgVVJMXSBhYnNvbHV0ZVN0cmluZ10pLCB1c2VyVmlzaWJsZVN0cmluZygoTlNVUkwgKil1
cmwpLCBhcmNoaXZlSGFuZGxlLCBhcmNoaXZlU2l6ZSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTZXRQcm9taXNlZERhdGFGb3JJbWFnZShwYXN0ZWJvYXJkTmFt
ZSwgaW1hZ2VIYW5kbGUsIGltYWdlU2l6ZSwgZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIFN0
cmluZyhbW3Jlc3BvbnNlIFVSTF0gYWJzb2x1dGVTdHJpbmddKSwgV1RGOjp1c2VyVmlzaWJsZVN0
cmluZyh1cmwpLCBhcmNoaXZlSGFuZGxlLCBhcmNoaXZlU2l6ZSkpOwogfQogCiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQppbmRleCAxZjkw
YzRhNTc0MGY0MTUwOWQ4ZTg1YjE5ZDRhMDdlODAwNDNhMjU0Li4zZDFmZjg0OTAzMTExMTE1MWNh
MmU4N2M4YzRlNzA3YzJmMTMzOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5t
bQpAQCAtNDAsNyArNDAsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaAppbmRleCAwOTIzZTQ2MDk1OWIw
ZjM0YTk0MmVkOTI0ZjA0NGM1M2Y4NGMzM2U2Li4xN2ZhOGVjY2E3OGJhOGFjMjc2ODE2NTNhN2Qy
ZTdmZGQ3MGZlMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmgKQEAgLTQxLDcgKzQxLDcg
QEAgY2xhc3MgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6VmlzaXRlZExpbmtTdG9yZSAsIHByaXYKICAgICBleHBsaWNpdCBWaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIAogICAgIC8vIFdlYkNvcmU6OlZpc2l0
ZWRMaW5rU3RvcmUuCi0gICAgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBXZWJD
b3JlOjpTaGFyZWRTdHJpbmdIYXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0
IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBvdmVycmlkZTsKKyAgICBib29sIGlzTGlua1Zp
c2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFVS
TCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJyaWRlOwog
ICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0
cmluZ0hhc2gpIG92ZXJyaWRlOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMjU2MDc2
OWZiZTRiNWIzN2MxMmQyZTdlMTg0MmQwMWMzZTkxNDRlZi4uYzMyODk3YjNiOGUyYjVjMTY5MjRl
ZTllMzAyNDQ2NjQ2OTBjMjcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcApAQCAtNTA5LDcgKzUwOSw3IEBAIHVuc2lnbmVkIFdlYkZyYW1lOjpw
ZW5kaW5nVW5sb2FkQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogfQogCi1i
b29sIFdlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
KSBjb25zdAorYm9vbCBXZWJGcmFtZTo6YWxsb3dzRm9sbG93aW5nTGluayhjb25zdCBVUkwmIHVy
bCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IDJlMDNm
MmJkNTU2MjU0NGQ2NzhmMWE4M2E5NTM4Y2NmZTRhMzQ2OGIuLmViODEzNmFiNzcxMGE0ZWQxMzBl
Njc5ODAxYjk1MGQ5ZWNhNThiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuaApAQCAtNTMsNyArNTMsNiBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxG
cmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKLWNsYXNz
IFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMDYsNyArMTA1LDcgQEAgY2xhc3Mg
V2ViRnJhbWUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5k
bGVGcmFtZT4gewogICAgIC8vIFdLQnVuZGxlRnJhbWUgQVBJIGFuZCBTUEkgZnVuY3Rpb25zCiAg
ICAgYm9vbCBpc01haW5GcmFtZSgpIGNvbnN0OwogICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7Ci0g
ICAgV2ViQ29yZTo6VVJMIHVybCgpIGNvbnN0OworICAgIFVSTCB1cmwoKSBjb25zdDsKICAgICBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CiAgICAgU3Ry
aW5nIGlubmVyVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0OwpAQCAt
MTQxLDExICsxNDAsMTEgQEAgY2xhc3MgV2ViRnJhbWUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVGcmFtZT4gewogICAgIAogICAgIHVuc2lnbmVkIHBl
bmRpbmdVbmxvYWRDb3VudCgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgYWxsb3dzRm9sbG93aW5n
TGluayhjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKKyAgICBib29sIGFsbG93c0ZvbGxvd2lu
Z0xpbmsoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBTdHJpbmcgcHJvdmlzaW9uYWxVUkwoKSBj
b25zdDsKLSAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoY29u
c3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7Ci0gICAgU3RyaW5nIG1pbWVUeXBlRm9yUmVzb3VyY2VX
aXRoVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIFN0cmluZyBzdWdnZXN0ZWRG
aWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcg
bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICB2b2lk
IHNldFRleHREaXJlY3Rpb24oY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMjJiODA5MDExMjk3NjI4MGRiM2ZlZjIx
ODhlMmU3YjhhYmVkOTRkOS4uMDI5NTYwNWExNGQ4M2I5ZTlmOTg2ZmRiOGQ2NDRiNTNkZTcyOTdk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTEyNTcsNyArMTI1Nyw3IEBAIHZvaWQgV2ViUGFnZTo6c2VuZENsb3NlKCkKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsb3NlUGFnZShmYWxzZSkpOwogfQogCi12b2lkIFdlYlBh
Z2U6OmxvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCYmIHVybCwgdWludDY0X3QgZnJhbWVJRCkK
K3ZvaWQgV2ViUGFnZTo6bG9hZFVSTEluRnJhbWUoVVJMJiYgdXJsLCB1aW50NjRfdCBmcmFtZUlE
KQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZy
YW1lKGZyYW1lSUQpOwogICAgIGlmICghZnJhbWUpCkBAIC0xMzIwLDcgKzEzMjAsNyBAQCB2b2lk
IFdlYlBhZ2U6OmxvYWREYXRhKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiAgICAg
cGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCiAgICAg
YXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJz
LmRhdGEuc2l6ZSgpKTsKLSAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxT
dHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMu
YmFzZVVSTFN0cmluZyk7CisgICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNlVVJM
U3RyaW5nLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFt
ZXRlcnMuYmFzZVVSTFN0cmluZyk7CiAgICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5h
dmlnYXRpb25JRCwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlw
ZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFt
ZXRlcnMudXNlckRhdGEpOwogfQogCkBAIC0xMzI4LDcgKzEzMjgsNyBAQCB2b2lkIFdlYlBhZ2U6
OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykK
IHsKICAgICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7
CiAKLSAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0
eSgpID8gYmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmlu
Zyk7CisgICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nLmlzRW1w
dHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVS
TFN0cmluZyk7CiAgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gbG9hZFBhcmFtZXRlcnMudW5yZWFj
aGFibGVVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0
ZXJzLnVucmVhY2hhYmxlVVJMU3RyaW5nKTsKICAgICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JV
UkwgPSBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZy5pc0VtcHR5
KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJy
b3JVUkxTdHJpbmcpOwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRh
KCkpLCBsb2FkUGFyYW1ldGVycy5kYXRhLnNpemUoKSk7CkBAIC0zMzczLDcgKzMzNzMsNyBAQCB2
b2lkIFdlYlBhZ2U6OmFkZENvbnNvbGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQsIE1lc3NhZ2VT
b3VyY2UgbWVzc2FnZVNvdXJjZSwgTQogICAgICAgICBmcmFtZS0+YWRkQ29uc29sZU1lc3NhZ2Uo
bWVzc2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCByZXF1ZXN0SUQpOwogfQogCi12
b2lkIFdlYlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXBv
cnREYXRhKQordm9pZCBXZWJQYWdlOjpzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVw
b3J0RGF0YSkKIHsKICAgICBhdXRvIHJlcG9ydCA9IHJlcG9ydERhdGEudGFrZURhdGEoKTsKICAg
ICBpZiAoIXJlcG9ydCkKQEAgLTU4NzQsMTQgKzU4NzQsMTQgQEAgdm9pZCBXZWJQYWdlOjppbWFn
ZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAKIHZv
aWQgV2ViUGFnZTo6YWRkVXNlclNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYkNvcmU6OlVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1
c2VyU2NyaXB0IHsgV1RGTW92ZShzb3VyY2UpLCBVUkwoV2ViQ29yZTo6YmxhbmtVUkwoKSksIFZl
Y3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGlvblRpbWUsIGluamVjdGVk
RnJhbWVzIH07CisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0IHsgV1RGTW92ZShz
b3VyY2UpLCBVUkwoV1RGOjpibGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0
cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKIAogICAgIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
Om5vcm1hbFdvcmxkKCksIFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewotICAgIFdlYkNvcmU6OlVzZXJT
dHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0eyBzb3VyY2UsIFdlYkNvcmU6OmJsYW5rVVJMKCksIFZl
Y3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5
bGVVc2VyTGV2ZWwgfTsKKyAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVl
dCB7c291cmNlLCBXVEY6OmJsYW5rVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJp
bmc+KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVVc2VyTGV2ZWwgfTsKIAogICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldChJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkOjpub3JtYWxXb3JsZCgpLCBXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMTUwYWI0ZmVkOWU0
YTZjZDQzMTM0NTI3NjZiODk4MGQ4NzVjY2Y4OC4uNGI1ZDlkODhmZTVmOWJmOWQ0OGM3ZTNiYjkz
ZDY4ODU3NGZkYzI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtMTU5LDcgKzE1OSw2IEBAIGNsYXNzIFNlbGVjdGlvblJlY3Q7CiBjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVl
c3Q7Ci1jbGFzcyBVUkw7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAKIGVudW0gU3ludGhldGlj
Q2xpY2tUeXBlIDogaW50OF90OwpAQCAtMzE2LDcgKzMxNSw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVi
bGljIElQCiAjZW5kaWYKIAogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJh
bWVJRCwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCB1aW50NjRf
dCByZXF1ZXN0SUQgPSAwKTsKLSAgICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJik7CisgICAgdm9pZCBzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYpOwog
ICAgIHZvaWQgZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQodWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6SW5pdCYmKTsKIAog
ICAgIC8vIC0tIENhbGxlZCBieSB0aGUgRHJhd2luZ0FyZWEuCkBAIC0zMzQsOSArMzMzLDkgQEAg
Y2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVAKICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250
ZW50KGNvbnN0IFdlYkZyYW1lJik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKik7
CiAgICAgdm9pZCBzaG93KCk7Ci0gICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpV
UkwmKSBjb25zdDsKLSAgICBTdHJpbmcgdXNlckFnZW50KFdlYkZyYW1lKiwgY29uc3QgV2ViQ29y
ZTo6VVJMJikgY29uc3Q7Ci0gICAgU3RyaW5nIHBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0OworICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3Q7
CisgICAgU3RyaW5nIHVzZXJBZ2VudChXZWJGcmFtZSosIGNvbnN0IFVSTCYpIGNvbnN0OworICAg
IFN0cmluZyBwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKICAgICBXZWJDb3Jl
OjpLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9kZSgpOwogCiAgICAgdm9pZCBkaWRJbnNlcnRN
ZW51RWxlbWVudChXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQmKTsKQEAgLTQxOSw4ICs0MTgsOCBA
QCBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCR0wpCi0g
ICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwg
Y29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29s
dmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAg
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNv
bnN0IFVSTCYpOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSByZXNvbHZlV2ViR0xQb2xp
Y3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmKTsKICNlbmRpZgogICAgIAogICAgIGVudW0g
Y2xhc3MgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCB7IE5vLCBZZXMgfTsKQEAgLTY4NSw3ICs2
ODQsNyBAQCBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUAogICAgIFdlYkNvbnRleHRNZW51KiBjb250
ZXh0TWVudUF0UG9pbnRJbldpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogI2VuZGlm
CiAKLSAgICBib29sIGhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAg
ICBib29sIGhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyBib29s
IGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKQEAg
LTk0Myw3ICs5NDIsNyBAQCBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUAogICAgIE5TRGljdGlvbmFy
eSAqZGF0YURldGVjdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFEZXRlY3Rpb25D
b250ZXh0LmdldCgpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2F2ZVBERlRvRmlsZUluRG93bmxv
YWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcg
c2l6ZSk7CisgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBs
aWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNp
emUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCk7CkBAIC0xMTU5LDcgKzExNTgsNyBAQCBjbGFzcyBX
ZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxl
UGFnZT4sIHB1YmxpYyBJUAogCiAgICAgU3RyaW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7
CiAKLSAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGxvYWREYXRh
SW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25z
dCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmKTsK
IAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKCk7CkBAIC0xMTk3LDcgKzExOTYs
NyBAQCBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUAogICAgIHN0YXRpYyBib29sIHNjcm9sbChXZWJD
b3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFu
dWxhcml0eSk7CiAgICAgc3RhdGljIGJvb2wgbG9naWNhbFNjcm9sbChXZWJDb3JlOjpQYWdlKiwg
V2ViQ29yZTo6U2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJp
dHkpOwogCi0gICAgdm9pZCBsb2FkVVJMSW5GcmFtZShXZWJDb3JlOjpVUkwmJiwgdWludDY0X3Qg
ZnJhbWVJRCk7CisgICAgdm9pZCBsb2FkVVJMSW5GcmFtZShVUkwmJiwgdWludDY0X3QgZnJhbWVJ
RCk7CiAKICAgICBlbnVtIGNsYXNzIFdhc1Jlc3RvcmVkQnlBUElSZXF1ZXN0IHsgTm8sIFllcyB9
OwogICAgIHZvaWQgcmVzdG9yZVNlc3Npb25JbnRlcm5hbChjb25zdCBWZWN0b3I8QmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlPiYsIFdhc1Jlc3RvcmVkQnlBUElSZXF1ZXN0LCBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6T3ZlcndyaXRlRXhpc3RpbmdJdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGQ3NWFjZWVh
MGUwMDAyM2FiMjE5YjI5MTM5ZTM2MjI2YWY5YzZjNzYuLjI3Y2FhMjdjZTU3MWUyMmFhMDgxOTZh
MjJjNjcyYjQ1OGIwM2RhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjgsNyArMjgsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXREcmF3c0JhY2tncm91bmQoYm9vbCBk
cmF3c0JhY2tncm91bmQpCiAKICAgICBBZGRDb25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlE
LCBlbnVtIE1lc3NhZ2VTb3VyY2UgbWVzc2FnZVNvdXJjZSwgZW51bSBNZXNzYWdlTGV2ZWwgbWVz
c2FnZUxldmVsLCBTdHJpbmcgbWVzc2FnZSwgdWludDY0X3QgcmVxdWVzdElEKQotICAgIFNlbmRD
U1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6VVJMIHJlcG9ydFVS
TCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXBvcnREYXRhKQorICAgIFNlbmRDU1BWaW9sYXRp
b25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgVVJMIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSByZXBvcnREYXRhKQogICAgIEVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZl
bnQ6OkluaXQgZXZlbnRJbml0KQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xNDMsNyArMTQz
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgR29Ub0JhY2tG
b3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tGb3J3YXJkSXRlbUlELCBlbnVtIFdlYkNvcmU6OkZyYW1l
TG9hZFR5cGUgYmFja0ZvcndhcmRUeXBlLCBlbnVtIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQpCiAgICAgVHJ5UmVzdG9yZVNj
cm9sbFBvc2l0aW9uKCkKIAotICAgIExvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCB1cmwsIHVp
bnQ2NF90IGZyYW1lSUQpCisgICAgTG9hZFVSTEluRnJhbWUoVVJMIHVybCwgdWludDY0X3QgZnJh
bWVJRCkKICAgICBMb2FkUmVxdWVzdChzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2Fk
UGFyYW1ldGVycykKICAgICBMb2FkRGF0YShzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBs
b2FkUGFyYW1ldGVycykKICAgICBMb2FkQWx0ZXJuYXRlSFRNTChzdHJ1Y3QgV2ViS2l0OjpMb2Fk
UGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCmluZGV4
IGU1OGU5ZjFkZDdiMDc3ZjU2MWNhNTFjOTJmZWY3MTViMGFlMTQyOWQuLjczNTY2YTEzMzg1ZGUz
YWFjNjQ2ZmI5NDk2YmRkYWZjYjVhZjQ2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApA
QCAtNDAsOSArNDAsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaW50Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8Z3Rr
L2d0ay5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIApAQCAt
NDU0LDEzICs0NTQsMTMgQEAgYm9vbCBXZWJQcmludE9wZXJhdGlvbkd0azo6Y3VycmVudFBhZ2VJ
c0xhc3RQYWdlT2ZTaGVldCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX251bWJlclVwIDwgMiB8fCAh
KChtX3BhZ2VQb3NpdGlvbiArIDEpICUgbV9udW1iZXJVcCkgfHwgbV9wYWdlUG9zaXRpb24gPT0g
bV9udW1iZXJPZlBhZ2VzVG9QcmludCAtIDEpOwogfQogCi1XZWJDb3JlOjpVUkwgV2ViUHJpbnRP
cGVyYXRpb25HdGs6OmZyYW1lVVJMKCkgY29uc3QKK1VSTCBXZWJQcmludE9wZXJhdGlvbkd0azo6
ZnJhbWVVUkwoKSBjb25zdAogewogICAgIGlmICghbV9wcmludENvbnRleHQpCi0gICAgICAgIHJl
dHVybiBXZWJDb3JlOjpVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9wcmludENvbnRleHQtPmZyYW1l
KCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50TG9hZGVy
ID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogV2ViQ29yZTo6VVJMKCk7CisgICAgcmV0dXJuIGRv
Y3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogVVJMKCk7CiB9CiAKIHZvaWQg
V2ViUHJpbnRPcGVyYXRpb25HdGs6OnJvdGF0ZVBhZ2VJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlv
bkd0ay5oCmluZGV4IGIyNjJkZjM0YzgwNWZhYWNkZjIwMDc4MWRiN2FhZmUwNDJlN2Y1MjQuLmI3
ZTE0NDQyOTRiMjUxMjdkNDUyZjEyYTQ4YjJmYWU4OTU4MjBmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlv
bkd0ay5oCkBAIC00MCw3ICs0MCw2IEBAIHR5cGVkZWYgc3RydWN0IF9HdGtQYWdlUmFuZ2UgR3Rr
UGFnZVJhbmdlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUHJpbnRDb250ZXh0OwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFVSTDsKIH07CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtOTcsNyArOTYsNyBAQCBjbGFzcyBXZWJQcmludE9wZXJhdGlvbkd0ayA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYlByaW50T3BlcmF0aW9uR3RrPiB7CiAgICAgdm9pZCBwcmludFBhZ2VzRG9uZSgp
OwogICAgIHZvaWQgcHJpbnREb25lKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICB2b2lkIHNlbmRQcmludEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
LSAgICBXZWJDb3JlOjpVUkwgZnJhbWVVUkwoKSBjb25zdDsKKyAgICBVUkwgZnJhbWVVUkwoKSBj
b25zdDsKIAogICAgIFdlYlBhZ2UqIG1fd2ViUGFnZTsKICAgICBHUmVmUHRyPEd0a1ByaW50U2V0
dGluZ3M+IG1fcHJpbnRTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAppbmRleCBiZWQyODdkZmFjOWI5NDRlNDM0MjhmMjI0NzMzMTYwZjI3NDA2MWVkLi40NGFm
ZWVjMjBmMWViMTdjMjI1OGIzYzYzMmExOTMwNjliZmI0MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMTQsMTIgKzExNCwxMiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0
b3IuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1By
aXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3Rl
bVRyYWNpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgIU9TKFdJTkRPV1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBkYmM1NzliOTk1ZjE5
YmMzMjk1MWNjODAyZTY1YTdmZjg3YTI4MTQyLi42MmYzOTA1N2UxMmRkMzIwNWY5MDM1MjU3YWUx
NDkwZGVhNmEzNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0KQEAgLTYwLDcgKzYwLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvTlNT
Y3JvbGxlckltcERldGFpbHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGVyZm9ybWFuY2VMb2dnaW5n
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgotI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPGFsZ29yaXRobT4KICNp
bXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAg
LTcxLDYgKzcwLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQWNjZXNzaWJpbGl0eVNQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNBcHBsaWNhdGlvblNQSS5oPgogI2ltcG9ydCA8c3Rk
aW8uaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiAjaWYgUExBVEZPUk0o
SU9TKQogI2ltcG9ydCAiV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5oIgpAQCAtNDM2
LDcgKzQzNiw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQWN0aXZlUGFnZXMoKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKE5TVVJMICpvcmlnaW5Bc1VSTCA9IG9yaWdp
bigqcGFnZSkpCi0gICAgICAgICAgICBbYWN0aXZlUGFnZVVSTHMgYWRkT2JqZWN0OnVzZXJWaXNp
YmxlU3RyaW5nKG9yaWdpbkFzVVJMKV07CisgICAgICAgICAgICBbYWN0aXZlUGFnZVVSTHMgYWRk
T2JqZWN0OldURjo6dXNlclZpc2libGVTdHJpbmcob3JpZ2luQXNVUkwpXTsKICAgICB9CiAKICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVF
X1BSSU9SSVRZX0RFRkFVTFQsIDApLCBbYWN0aXZlUGFnZVVSTHNdIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcAppbmRleCA2YjRhNjZiZmEzOGYwNTMyYTBjYmVhNTkwMTQyM2RhNTVmZmQ4
ODYwLi4zYjVhYmEyMzM4MDQ0MTEzODc4Y2UwOGFjMjBiZDBmMmQ1NzYwOTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0zNSw5ICszNSw5IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VicmVzb3VyY2VMb2FkZXIuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L1NldEZvclNjb3BlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5o
CmluZGV4IDhhNTZhOWU3OTlmYTFmZjgyNDlmMDE0MGNhZDM4MWE1ZTJhY2E4M2IuLmVkZjY1MWZh
NmRmYmNhMzE4YThmNmYyMDdmNGI2NDlhZGUxYmYxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kgewogCiAgICAgdm9pZCByZW1vdmUo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRp
bmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGNyb3Nz
T3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdl
YkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpIGZpbmFsOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRp
cmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgVVJMJiByZWRpcmVj
dFVSTCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRQcmlvcml0eTo6VmVyeUxvdykgZmluYWw7CiAgICAgdm9pZCBzdXNwZW5kUGVuZGluZ1Jl
cXVlc3RzKCkgZmluYWw7CkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFNj
aGVkdWxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSB7CiAKICAgICB2
b2lkIHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hP
cHRpb25zJiwgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKIAotICAgIHZvaWQg
cHJlY29ubmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRl
ciYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25u
ZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAKICAgICB2b2lkIHN0b3JlRGVyaXZlZERh
dGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsIHsgfQogCkBAIC0xMTgsNyArMTE4LDcg
QEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkxvYWRlclN0cmF0ZWd5IHsKICAgICAgICAgRmluZE9ubHkKICAgICB9OwogICAgIAotICAgIEhv
c3RJbmZvcm1hdGlvbiogaG9zdEZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBDcmVhdGVIb3N0
UG9saWN5ID0gRmluZE9ubHkpOworICAgIEhvc3RJbmZvcm1hdGlvbiogaG9zdEZvclVSTChjb25z
dCBVUkwmLCBDcmVhdGVIb3N0UG9saWN5ID0gRmluZE9ubHkpOwogICAgIHZvaWQgc2VydmVQZW5k
aW5nUmVxdWVzdHMoSG9zdEluZm9ybWF0aW9uKiwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3Jp
dHkpOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSG9zdEluZm9ybWF0aW9uKiwgU3Ry
aW5nSGFzaD4gSG9zdE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01BdHRyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUF0dHIubW0KaW5k
ZXggZThmNzZmMTY0ZTA2NWY4MDI4ZTlhNmY2N2VhMzVkNTJlYjdlYzg3NS4uMjE2YmE2NTQ4MDcx
YzY2ZDFhNWE2MDRkOWNkYWRjM2FjYjI5OWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUF0dHIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUF0dHIubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpB
dHRyKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUJsb2IubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbQppbmRleCA0ZTZlZGM1NmE2M2ZmNGNhN2Nm
NGI0NmNlMWM3NzI0ODM5MTEzYzZlLi5kZTU5MTNjYTE4NjAwYzhlZDNjOTUyYjFhOTY5ZDdlZWVk
Yjc1MmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbQpAQCAtMzEsMTAg
KzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpCbG9iKj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTQ2hhcnNldFJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTQ2hhcnNldFJ1bGUubW0KaW5kZXggZDFiNWVhYmQ3NWQ2ZmFi
NmM3Y2NjN2Q2NmFmZjIzZDRjMjEyMDFkNC4uN2JmZmZkYzIxZGJhMDg5N2Y2NmZlNWFlMTQ1NTNj
NWVjNTM3YmY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNT
U0NoYXJzZXRSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1ND
aGFyc2V0UnVsZS5tbQpAQCAtMzAsOSArMzAsOSBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxl
cnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogQGltcGxlbWVudGF0aW9uIERPTUNTU0NoYXJzZXRSdWxlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NJbXBvcnRSdWxlLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0KaW5kZXgg
ODgwNGYyNDUwMGJkNmU4ZWY3YzJiNjBlNDcwNjdlNmM5MmQzZTAwMy4uYzUxNzhhZTIwMTg0YzYy
ZmIzZGEwYWRmZTY4N2U0M2Q0YWU1MmMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFMaXN0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpDU1NJbXBvcnRSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUNTU01lZGlhUnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NN
ZWRpYVJ1bGUubW0KaW5kZXggMTU5YTlhNDk0OTg3YmQ1NDUxOWNiZDYyZTQzMDkwMWE3ZDBjOGM5
ZS4uZWI1ZGNmMjJmN2NmYjhjNjE2Nzk5NzlhNWEzMjQ4MjUzZjlmOWU3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU01lZGlhUnVsZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tCkBAIC0zNSw5ICszNSw5
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01l
ZGlhTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q1NTTWVkaWFSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1tCmluZGV4IGYzNjIyMzFjZTViY2ZkNmRlYTY1ZjExZDMx
NGM0MWJkYzlmOTM0MjkuLmI2YmMyNzgwOTlmODI0NzcxN2IyZjliNzI5MWJmOTNiZmU4MTUxNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQYWdlUnVsZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUGFnZVJ1bGUubW0KQEAg
LTM0LDkgKzM0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NQYWdlUnVsZSo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q1NTUnVsZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbQppbmRl
eCAzNWE4OTM0OWMzMjEyOGJmOTM3MjViNjZmYWM0NjY2NDg4ZDZlMDU4Li4wNTVlYTllYzRhYjVh
NTEyMzk3NjhjM2Y3N2I5ZTAzNjk5ZTc5Nzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCkBAIC0zNyw5ICszNyw5IEBACiAj
aW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6OkRlcHJlY2F0ZWRDU1NPTVZhbHVlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1J1bGUubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbQppbmRleCBkNDhjYjNmOTIy
OWRkYjJiZDYzZGQ5OWYwOTFmZDViYzVjNjUyZDBmLi5hMTJiMGU4YzhmMDc3NzAxNjhlOThjYjdh
YTc1NTFkN2FmZDViMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVs
ZS5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0
aW9uLm1tCmluZGV4IDJkOWZlZmZmYzE1NDAwZDk4NzMzMTMzYzhhMzc0ZjFkNmU5MzhlZjguLmIz
YjA3ZjMzOTg2ODZkZWRiZDBkZDJjOTI0NjQxOWExZWNmZDc2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tCkBAIC0z
NiwxMCArMzYsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJh
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWlu
dGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qPihfaW50ZXJuYWwpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZVJ1bGUu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVSdWxlLm1tCmluZGV4
IDhhNGNmZjMwY2RkNTUzMTJmN2RkNDI3ZTUxMjFhMDY2MWQxMGI5MDkuLjJhZTE5MTNiMmU0M2Y4
MzEyZmViNDA4NDJhYThmOTdlMGZiNGY2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01DU1NTdHlsZVJ1bGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkNTU1N0eWxlUnVsZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q1NT
UnVsZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01DU1NTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUNTU1N0eWxlU2hlZXQubW0KaW5kZXggOGMyNDA2MDE2YzBlYTVjZWJhZWVhZGQ2ZGZkOTk1OTcx
NTEwODhhZC4uMjY5ZjAyNDhjN2M2MDE0MGU0NzRiODg0MDdiMDBhMzgwMDY1ZmZiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQubW0KQEAgLTM2
LDkgKzM2LDkgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpTdHlsZVNoZWV0Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCmluZGV4IDBjNmUwNzRkOGYzZDE1MDUwMDA5
MWIxMTFkZDk5ODdjODhhYTczOGYuLmI3N2Q0Yjg3MjA2NTk2MzA4YzczMmY4YWYzNGMxNjE0ODlm
NjIxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0KQEAg
LTMxLDEwICszMSwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0
cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RGVwcmVjYXRlZENTU09NVmFsdWUqPihfaW50ZXJuYWwp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DaGFyYWN0ZXJE
YXRhLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRhdGEubW0K
aW5kZXggOGMzYjRkNGE1ODJmZTk0N2EwYzM4ZDA2NGY5YTEyOTFiNTk5YzljMy4uYjMwZTk1Nzk0
MGVkOTY2NTc1YmM2MzQ5NDRlN2E5MTYwZTUyOTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRhdGEubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRhdGEubW0KQEAgLTMxLDEwICszMSwxMCBAQAogI2lt
cG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvQ2hhcmFjdGVyRGF0YS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q2hhcmFj
dGVyRGF0YSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Db3VudGVyLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0KaW5kZXggMmQxZTU2NTdl
YTJkNjY4ZDIwMDViNTNjNDg1OWVkZDlkNTJmOGJmOC4uMzA4NzAxZTViNDgxODY3NDczMjNjMThk
ZWVkNGU0MzBhZGFjMmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUNvdW50ZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50
ZXIubW0KQEAgLTMxLDEwICszMSwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RGVwcmVjYXRlZENTU09NQ291bnRlcio+
KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1t
CmluZGV4IGFkNTU4NTI5YWJiNzgzYTgxZDNmOTgzMmZjNDNmOWFiYzNhMjNhNTAuLjNiMDRkMzkz
M2QyNGFhZTMzMzViZDg3YjgxMDY5ZjRjY2U3YmQ2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NRG9jdW1lbnQubW0KQEAgLTgyLDEyICs4MiwxMiBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9UZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RyZWVXYWxrZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhF
eHByZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRoTlNSZXNvbHZlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9YUGF0aFJlc3VsdC5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRGcmFnbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tCmlu
ZGV4IDk2ZDAzMjliNDlhZTYxNWI3MWVmYWE0YzA1YjI2OTExZGU4NWMxN2QuLjJlZTJjZjg0YzYz
OTQ4YzAwMDJmOGE2NWQ4Y2Q2NjlhNzY3OWQyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tCkBAIC0zNyw5ICszNyw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL05hbWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlz
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01Eb2N1bWVudFR5cGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NRG9jdW1lbnRUeXBlLm1tCmluZGV4IGUyMDExNzZhOTJkYzY2NjQwY2Q1MDFlZjdlYzIw
YWNkODQ2NGFmOTIuLjdiMmUwM2VjNTIxY2RmMDc0MDMyNjU5MDBlNmQzY2IwNjM0MmEzZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudFR5cGUubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbQpAQCAt
MzIsOSArMzIsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9OYW1lZE5vZGVNYXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRvY3VtZW50VHlwZSo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01FdmVudC5tbQppbmRleCA2MGNkYjZlNTdmNWJlMTc2MGY0ZDkxNWQzOGFl
NGEzMzU1NzUxN2NkLi4yZDYxNTRiMWUwNjQ2ZDhhMzFjMGMwMzBlY2U2MzMzZmI1MTZjMDg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRXZlbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2ZW50Lm1tCkBAIC0zMywxMCArMzMsMTAg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9k
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpFdmVudCo+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUZpbGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmls
ZS5tbQppbmRleCBlZGE4N2ZmZjFjNGU0YjVhOWE4N2M2ZGI4YjQwMmFjNGIyNGIyODdmLi5mZGM1
NDEzYjlhNWY0NmI5ZWRhNWZjMGE3YjM2YWU1Zjg1ZDNkYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmlsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NRmlsZS5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9G
aWxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpGaWxl
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpCbG9iKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tCmlu
ZGV4IDQ0NjBmMjdjNmRmZGQzMDY1NjBjMTI0ZDlkNzk5NDFjOGQ1Yzg1MmQuLmM2YzAxYmQ3YTY5
NjE3NzBjZThmZjE4ZTU3NmMxMDk4NWVmZjQ5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MQW5jaG9yRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0KQEAgLTM0LDkgKzM0LDkgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5tbQppbmRleCBhODQ1NDJkYTQ3ZDY0NGRj
MzYyZThmZDFkZmI1MmQwNmIyMTNhNjRhLi4yNmI4ZDNjNThiZWJkMmQ3ZDVkYjJlOGRjY2NlMjY5
YTBmOTViY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEFwcGxldEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxBcHBsZXRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTEFwcGxldEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEFyZWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBcmVh
RWxlbWVudC5tbQppbmRleCBjNGFiMjMyMDI3NTdlZmMyMjZkMzQ3ZTUwYTIxMGRkNDNlMTIwNTJl
Li5iOWFjYTg5NmE0YzA5MTc2OGNmYTAzMThiNmM2YjdhMDdlZDU3NTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFyZWFFbGVtZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0KQEAgLTM0LDkg
KzM0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZp
bmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQqPihyZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJSRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MQlJFbGVtZW50Lm1tCmluZGV4IGNmNWIzZTA4ODQxMzljOThl
NGI3OGNiMzc4ZGYxYTY3YzQzNTk4YjguLjQzMjQ2NGI4ZGQyZDU2MjYzMTAxODhjNzE4MDcyODU5
MTYzMzkzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
QlJFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQlJF
bGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEJSRWxl
bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VFbGVtZW50Lm1tCmlu
ZGV4IDUxNGI3MDkxYjQzZDEyMjc3MmQwNzBjNzdlNmExMWRmNDgwMDZjMTMuLmFmZTNiNjk5M2I2
Mzg2ZDczOWUxNGNmY2EzYjdjOWRmNjk0MWU2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkhUTUxCYXNlRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MQmFzZUZvbnRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0KaW5kZXggYTk5YzBiNjIzODFmMjUxYzIx
ZTgwNzY4NWZiOTM1MDMwNjcxMWE0ZC4uMjYzM2M4MGY3MjRkODc5NDRkZWJmOTA4ZjAzOTJmZTdi
ZmNkYTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxC
YXNlRm9udEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxCYXNlRm9udEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
SFRNTFVua25vd25FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MVW5rbm93bkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTEJvZHlFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxCb2R5RWxlbWVudC5tbQppbmRleCA2OTUyOTNiNDI0NjNmYmU2NjI4N2IwNjQ3NjRl
ZjY5ZGZlNThmNzA0Li5kZjYxMjA4NjZjNmJjNjJjNDEyMjMzOTdmZjFjYjMwYzZhNmY0NDZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJvZHlFbGVtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQu
bW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQq
PihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW0KaW5k
ZXggOThhYTI3YzU2Mjc1YzU0M2NkNGQ5ZTJmYmIyN2MxOGRiOWQ4MmFiNS4uN2M3NTk1ZDMxNDgz
MDMyY2ZhZWJmZTQwMWMxNzMyMWNiOWRiZDQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxCdXR0b25FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbQpAQCAtMzYsOSArMzYsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9OYW1lTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxp
c3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50Lm1tCmluZGV4IDBmZDYwYTZkYThhYWFhYmU3
NGQyYmQyYmQ5NDc5YjgxNGJkOTYzNTEuLjE4YjMxM2ViNDRhYzAzNmIwMzdmNThhOTQyMzU3Njli
ZWRkMTA0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
Q2FudmFzRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TENhbnZhc0VsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3RyaW5nQWRhcHRvcnMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxDb2xsZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxD
b2xsZWN0aW9uLm1tCmluZGV4IGUzNDQwOThjYjQ4ZTJkMzkwZjU0MGJjMWQ1MGU2OTczY2M0M2Q3
ZjEuLmFhYzE4NTQ5ZDNkOGI0NzgxM2JjMTU0YjFjYTVjNDExNzNiNTM2ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ29sbGVjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0KQEAgLTM1LDEw
ICszNSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05v
ZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0
PFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uKj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERpdkVsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERpdkVsZW1lbnQubW0KaW5kZXggMjkzNmFmYWMwMjUz
MTg1OGQxZmI4YTk0ZDI3MmZmZjk1Y2U5NDlkZC4uOWNiMDNhMDExOTZiN2Y0NDE1NDUyN2E3YzVj
MjU1YjdkM2FlOWNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxEaXZFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MRGl2RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
TmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhU
TUxEaXZFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEb2N1
bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRG9jdW1lbnQubW0K
aW5kZXggMDM3NWEzY2Y0ZmQ2NzFmNjMzNmZiYjM3YzliYjdjOWFlZjAxNzYzZC4uODhkMTQyZWFk
YTg0MTEzNzA1MDE0OGZjZTRlYzg3NWYwMjI3YjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50Lm1tCkBAIC0zMiw5ICszMiw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxEb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTERvY3VtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxFbGVtZW50Lm1tCmluZGV4IGE1ZTBjZDMxOTEzYmQzODczMjY2MzVlNzkzNWY0YWE4OTgxOWM2
ZjAuLjJmZTI0YzcwNzQ5Nzg4NzI1MDg0ZjM2NmY5MGI5ZDg0NDk3NjgwNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1lbnQubW0KQEAgLTM2LDkgKzM2LDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0
PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEVtYmVkRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MRW1iZWRFbGVtZW50Lm1tCmluZGV4IDZiODJiZTA4ZTgyMTY2YzMx
OTQwYTM0OGVjZjk3MjU4MjU5Y2M5ZDAuLjBkNmQ4ODE0NzFhODE1ZTIwM2EwYzQ1NGQwZDc2NmE2
MDlkN2U3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
RW1iZWRFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
RW1iZWRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxO
YW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TEVtYmVkRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRmll
bGRTZXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVs
ZFNldEVsZW1lbnQubW0KaW5kZXggZWE5MmEwMTlhNTA2NTY5NWM2NDQ2YWRhNDkzOTVmNmZhM2Fl
MjY2Ni4uMWZkNGQ4MGJjNzE4Yzk1NmEzNWQ2YzhiYzBhMDdmYjAyYTk5NmM4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQu
bW0KQEAgLTM2LDEwICszNiwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkaXR5
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9udEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTEZvbnRFbGVtZW50Lm1tCmluZGV4IDgwZGU0OTA1NDkyNDgwMzNh
MzJiZmNhMDM4YjNhZjc3MTljNmZiNzYuLjkxMGU4ZjdkNDY2ZjFkZTNhNzhlY2QzMmZkODc3MWJi
N2U4NDgyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
Rm9udEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxG
b250RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFt
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxG
b250RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9ybUVs
ZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvcm1FbGVtZW50
Lm1tCmluZGV4IGJmZGUxZGFkODE0ZWRkY2JlYTc2NTdhZmI3OGNkMzRmN2JlZGQ1NmYuLmU4NjI2
YmEzNWFhMzM3ZjRiNGM3Y2ZhMWJkODMzYjk1ZmVlZTc4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9ybUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbQpAQCAtMzMsOSArMzMsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0KaW5kZXggNjAwZjQ0Zjg5YmM0Mzk5N2Rj
NDBlMDA2ZDI2Y2MzNTJlMzgxYWFmMS4uZWI1YzU1YWMyYjY3YWY0ZGVlYmRmNjE1YTM3NGUyNTcz
ZWIzM2I4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxG
cmFtZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxG
cmFtZUVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5h
bWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
RnJhbWVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFt
ZVNldEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1l
U2V0RWxlbWVudC5tbQppbmRleCBmMmYyMDdmMDUyNDk3YzIxOTdiNzQzNDc3YzNjYmIzMTI2ZmZj
OThhLi42OWI5NWEwNmY3OGQ4ODY4NDBlMzY2MDZiNzcxNWMyOTA2MTY0MTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5t
bQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGcmFtZVNldEVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhSRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tCmluZGV4IGIy
NTc4YWEyZGYzZWU4OTAwODU2MTJmYzIxNzczNTgzNTI2NWI3NmQuLmE3MjZiZGMxZTAyMjdhYjI2
Y2YwMDliNzM2NzM0MTg3ZmU0MDJhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTEhSRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MSGVhZEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhl
YWRFbGVtZW50Lm1tCmluZGV4IGJlZjM5YWU1NzA2Zjk0OWFjZDI3ZjQxYjVkMGJiMjdlZWUyZmQy
YTcuLjljYTRiODgwYjFhYWFiYWQ4YzMwYTllYjFkNmU0MGUzMzBiZWQ4MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZEVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5tbQpAQCAtMzEs
OSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxIZWFkRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZGluZ0VsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhlYWRpbmdFbGVtZW50Lm1tCmluZGV4IDgxMWJi
MTgwNDg4NjFmOGIxNzEyYzkzNTZjMWQ4Mjc2ZDAxMTMxODkuLmEyZGZiNmEzZWMxZWIwNWM4Y2Iz
MTExMjIyMDQ2YTAwMmM3OWRjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MSGVhZGluZ0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxIZWFkaW5nRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MSHRtbEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tCmluZGV4IDI4N2NlN2Y5NGZmMmU5Yzk2NWYzNWZkZTQz
MzUwY2Q0YWIzY2JjMWYuLmViYzNjZmU3NDg2MTQyNjMzZDMzOTI2ZDVkZTEzZTU5ZmVjMThjYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSHRtbEVsZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxIdG1sRWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQpp
bmRleCBmMzgyYzllZjhlMDk2OTIzYTYzMGU1ZGJiZDU5NzI2N2YxZTE2OWRmLi5lMzIxYjRmNzZk
MjE2ZTIzYTNkOWZhMDQzY2NlZjc4OGFjMzdhN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTElGcmFtZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCkBAIC0zNSw5ICszNSw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0
PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEltYWdlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MSW1hZ2VFbGVtZW50Lm1tCmluZGV4IGZjOTE5NTNjZWNjMmNhZWVl
NzYyYjM0NTQyMDI0MWJiZjliMzcxNTEuLmViYTRlYzkyMzE2YzM5Y2UwMTM0Y2RiMDA1ZDE2MDkz
YjAzMjJkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
SW1hZ2VFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
SW1hZ2VFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRl
c3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkhUTUxJbWFnZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TElucHV0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5w
dXRFbGVtZW50Lm1tCmluZGV4IDgzNjM3MzVkOTQ3NGE4NmJhOGE4MDVlMGYxYTNlYmE2Zjg0ZDRi
Y2QuLmQ3MzdhNTU3ZTlhM2VjMDM1MzUzYzUxMjY5MGRiZTc4ZWIwZTg0N2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5wdXRFbGVtZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5wdXRFbGVtZW50Lm1tCkBAIC02
NCw5ICs2NCw5IEBAIEBlbmQKICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUmVuZGVyRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTElFbGVtZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMSUVsZW1lbnQubW0KaW5kZXggMjY5ZDFh
NTRhZGQ4Y2UyYmQ0ZmVhZjZhNDJhNjM5ODIwODVmZWRhMC4uYTNjZjNmYThkYmZhOGNlYWQ3YTI5
ZmE5OGMyNzdhODRkOWJmMGRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxMSUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxMSUVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
SFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MTElFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxM
YWJlbEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVs
RWxlbWVudC5tbQppbmRleCA1MWY1NjBjMDk3OTE4OTNhZTY2ZGM1NTJkMmY5Njk3ZDJmYmYwMjgx
Li44MTM5MDAwZWFlYTRjYTdkMGVlOTJiNTgwZjRjZjA4MDE3YTExNjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbQpAQCAtMzUs
OSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxMYWJlbEVsZW1lbnQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW0KaW5kZXggOTM0M2Nh
NmU5ZGZhZjczNzgwNjU3Y2Y1NDJhZTEyMjU0NTJkOGIwYy4uZDRmMWYzNmM1ZjI0YjE5NGE5MmM4
MmIxMGNkYmExZDhlMTBlNjM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxMZWdlbmRFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkhUTUxMZWdlbmRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxMaW5rRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MTGlua0VsZW1lbnQubW0KaW5kZXggMjBmNGMwMTUxNWRlYjYwZWU0ZGIzNzlhMDA1ZTUy
Nzc5YjljNTIyMC4uNTY4N2M0NWJiYTBmYWM3NGI1NGM5NDg1ZDk4YWU0OWU4ZjczNWIwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMaW5rRWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1t
CkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1N0eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFwRWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFwRWxlbWVudC5tbQppbmRleCBiOTIx
YjNhNTBlZDA1MTUwM2YzZDc3YzQ1MGJkMzk3MTZhZDRjOTYwLi4yY2M5MGNmODYzNGUzOTZkZDAx
ZjRhMGMxMWYwNjEwZWNkNjBlOGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTE1hcEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTE1hcEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihf
aW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTE1hcnF1ZWVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxNYXJxdWVlRWxlbWVudC5tbQppbmRleCA2MWFiNGM2MjMzM2Y5NTZlMDcyNDM2Mjc3MmZjMWZm
ZmNhNDZhMjM4Li45NjIzZWRiMTZhYzA5OWI0MWRjOTYzODc1OTA0NGI0NzFiOTBiY2VhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcnF1ZWVFbGVtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1l
bnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWFycXVlZUVs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1lZGlhRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1t
CmluZGV4IDViYzc0NTZmNjBjZjc2MTJiNTA2ZWJmZDNkYzg5ZmE0N2FlY2E0NjcuLjc4M2E1YTE1
ZTlkZTFjNzVlNzRkYjg5NTJiNDE5OTIwMWE5NDM3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tCkBAIC0zOCw5ICszOCw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVGltZVJhbmdlcy5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MTWV0YUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tCmluZGV4IDk5ODcwMDJhZjdjYmUzZDE0ZDY3
Y2Y4YzRmM2I4MWRlM2QzYmYyNmMuLjc4ZWQ2ZTkzY2RmYWE1YjhjOTVmNzcyZjIwM2YzODQ0ZDgw
ZTk5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWV0
YUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRh
RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNZXRh
RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTW9kRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTW9kRWxlbWVudC5tbQpp
bmRleCBkODg1ZmNmZDA4MDM2YzczODI5MmUwMDcwNzIxZWU1ZjgyZTM3MTlhLi42MGY5ZTQ1Yzdi
MWUzNGJjMDYyZTZhNGViMzEyNzRhZjQ2NWIyNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTE1vZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTE1vZEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTE9MaXN0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MT0xpc3RFbGVtZW50Lm1tCmluZGV4IGEzMmMyZDhiYzk3MTIxNzA3YjZlMGUzNzhl
NzQ1MTUyMmM1NTg3MzAuLmI3ZmE1OWI2ZTY2OTVmNjZjODk2OWIxZmE0MDVlOGU0YTFkZWFlZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT0xpc3RFbGVt
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT0xpc3RFbGVt
ZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxPTGlzdEVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxP
TGlzdEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9iamVj
dEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9iamVjdEVs
ZW1lbnQubW0KaW5kZXggN2FiNzNmNTcyOTQzMGQzYmYyMDI3ZWRiYzVlNDYxMDMxNGJkY2ExNS4u
ZGIyMzZkOGI5NTg2YjhiNzJhYzhlODhjY2RmMmI0OTBhYmVkYjY2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbQpAQCAtMzcs
OSArMzcsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0R3JvdXBFbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0KaW5k
ZXggNGU1MTVkYWY1NWJiN2NjNWNjMDM4YmI1MjQwNGI2ZWVmMWI1NWNkYi4uMTc3MWMyZWZlMzE4
NjJkN2IxNTU5ZTBkMTI0NzUzZjEzZjM3MDFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE9wdEdyb3VwRWxlbWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
ZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uRWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uRWxlbWVudC5tbQppbmRleCBm
ZGVjNTRlZTFkNjQ3ODFlNjZlODgzMzRjNTJjZjU0MThiYzc5M2RmLi4xNDUzNTFkOWI2ZmVlM2Uz
YjEyYWYzMWYwNGJjMzAzN2ZkYTc3OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTE9wdGlvbkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxPcHRpb25FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhl
Y1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCmluZGV4IGY3NzBh
OGExNGQ1YTgzZDc2OTVlNDM3MTllZTFhZjRkY2I2NjRjYTEuLjM5MTIxMDE1NjFmNWZmZGY4OTQx
ZTlhNzFiZmJlNGI4MjhmODRiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQpAQCAtMzUsMTAgKzM1LDEwIEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9WYXJpYW50Lmg+CiAKICNkZWZpbmUgSU1Q
TCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVjdGlvbio+KF9pbnRl
cm5hbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUGFy
YWdyYXBoRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUGFy
YWdyYXBoRWxlbWVudC5tbQppbmRleCA2YzUxMWU5MTY2NGNlOTIzY2M5Mjg0YTI1NWExMWU2YTc5
M2IzZmQ0Li4xYTU0M2IzZmQzZTZmZTcyODI0NmIyYmE4YzEyZmYyNjQwZjY2MDY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVt
ZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxQYXJhZ3JhcGhF
bGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpI
VE1MUGFyYWdyYXBoRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MUGFyYW1FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQ
YXJhbUVsZW1lbnQubW0KaW5kZXggNWZiMGNlYzI3ZmI3MDk3ZjA5MTVlZTVjZGZjNDE4YTgxYzU5
NGZlOC4uZWRhNjUzMmM1ZDJhN2VmZWZjMTQ5YjBiNzY2YWU5ZGI4ZGJjOTE2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhbUVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhbUVsZW1lbnQubW0KQEAg
LTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBhcmFtRWxlbWVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFBhcmFtRWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUXVvdGVFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0KaW5k
ZXggMzc0OWMxODAzMzBmYjBlMzVjZDU0NTkxMWMwOWU3NzQ1ODc1YWZkMC4uYmNkNzg2NmNkNzZj
NzNlYWM2NDRlMDRmODQzN2U1MDMwZjVhMmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNp
bXBvcnQgPFdlYkNvcmUvSFRNTFF1b3RlRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFF1b3RlRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2NyaXB0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MU2NyaXB0RWxlbWVudC5tbQppbmRleCAzMzQ0ZDU0ODg4NDlj
MTRjOTFjNWE2OTNlNzlhZDdlNjcwZTA5ZmY0Li5lNGFjMDE3ODAyZGEyNTE0ZjRjZGZlN2RkN2M5
MjA0OWJkYWIwMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFNjcmlwdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxTY3JpcHRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0hUTUxTY3JpcHRFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MU2VsZWN0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MU2VsZWN0RWxlbWVudC5tbQppbmRleCA3NTgxNDFkZTNmYjdmNWFiZjZlMmEyOGZh
NmFlYTE0NjU4YzY2OTYyLi5iY2ZiZWNhY2QzODQ5MWZhN2JjOTk1NGIzZGU5MDMwMmY5MWE2NmE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNlbGVjdEVs
ZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxlY3RF
bGVtZW50Lm1tCkBAIC00NCw5ICs0NCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTdHlsZUVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbQppbmRl
eCBhNDUyNzgyMDgwYmI2MzljNGU2N2Y0NTc5ZjkzOTQ2NTY4YzVjZjEwLi44MDc2YTMzOGVlMWRj
MzBhZjFjMjhhNzQ4NWViNjQ3ZDhlZTM3YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1tCmluZGV4IGE3ODExYmQ2
OGIzODhiOGQ3MzMxZDQ1M2M5NjI4NjA4YTVhMzZlMzcuLjQ4M2Y5NGYxM2ZiYWQxNTk3ZTY3MzZh
Zjc2Y2E0YzBmMTA2ZWU4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFBy
aXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
I2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNhcHRpb25FbGVtZW50
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50
Lm1tCmluZGV4IGRkMzAxNmIzYWE2M2E0ZjliMDMxNDQwNzVmMDVlNWE5ODA1NThlZTAuLjlhZDkx
NDZlODRhMjc4MDY5OWJjYTczZDU0N2NiY2E4MjUwYzNlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0KQEAgLTMx
LDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNlbGxF
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNvbEVs
ZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxl
bWVudC5tbQppbmRleCBhZjI2NzE0ZDg0ZjMwYWFkY2FlMTQyYmU4NDZkNjZjZTZlMzVlNDBhLi5j
OWQ5OGNhNTE0ZTFhYmE3YjBlZjQ4OWMzZGFmMmJlNzljNzEyZDYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbQpAQCAt
MzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDb2xFbGVtZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVDb2xF
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5t
bQppbmRleCA0YzY4YzRiNmI0Y2E1ZDZmMWY2MTBlYzVhYzA3ZmE2ZDM0NzMyMGM5Li5iZWRkYWY1
MGZhYWFiNGMyZDM2ZmE1ZDEyOGQwMzE2NWYyMDRiN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbQpAQCAtMzksOSArMzksOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVSb3dFbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0KaW5k
ZXggMjQwOTZhOGQ5OTQ3ZmQ3YjdhMjRmZDE2NTczMTNhOTg0MDk5MzhjYy4uM2RmZWRjMzNlZmNj
MTVhYWUxNGQ0NDExZmZlZTcwNjc3M2Q2OGE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlUm93RWxlbWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
ZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlUm93RWxlbWVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVTZWN0aW9uRWxlbWVu
dC5tbQppbmRleCA5OGIxOWZhMzE1NDAzNGRhZDlmNjMwYjM0MzIyMjg4MjgzNGYzMTg4Li5jMzJj
MmU3MDI3MzQzZDQ3MDkzMGE2NzczYjI5ODg4ZWQ0ZjZmZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1t
CkBAIC0zNSw5ICszNSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
VGFibGVTZWN0aW9uRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MVGl0bGVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxU
aXRsZUVsZW1lbnQubW0KaW5kZXggMjQ4NmY3N2MzYTVlNzUwNDI3MTAyYWQyN2UyODJiNmI2NWI0
ZWZlOS4uMjgzOTE3MTc4NTU5OWY5Mjg1ODRhZDUyMTU4ZTBmMDVkMzQxMjBiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW0KQEAg
LTMwLDkgKzMwLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRpdGxlRWxlbWVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVUxpc3RFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0KaW5k
ZXggZjk4ZjhlODUyYmQ0N2ExNjI5MmI5NzM0MDkwMTU3MjhlNDVmMzNhMS4uZmNmOTA1NGFiMGYx
MjE2N2FlZTIwNmNhZDhhZGExZDEzOTA3YTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNp
bXBvcnQgPFdlYkNvcmUvSFRNTFVMaXN0RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFVMaXN0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxWaWRlb0VsZW1lbnQubW0KaW5kZXggMzM1ODA2NTAzOTI4NzE5
Yjk1YjBmNzE2N2YyNzFhOTAxZTg1YzExOS4uNDU3ZWFmYmEwZDBjZTUyZDAzZjU1MGYwNDc4YjM0
YjA4ZTg3M2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxWaWRlb0VsZW1lbnQubW0KQEAgLTM0LDkgKzM0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TFZpZGVvRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+
KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01LZXlib2FyZEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJv
YXJkRXZlbnQubW0KaW5kZXggM2ZkOGZjZTM2NDY2ZjM3YWI5YTE5NGMwYTMwYzFjM2M0MDUyZjYz
Yy4uMmMwMWYzZTYxMDU1MjY5N2U0NTEzNzk0ZGIxMzlhMzc5ZDMyYzc1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KQEAgLTMzLDkgKzMz
LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
S2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6S2V5Ym9hcmRFdmVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbQppbmRleCA5ZTgxNjdhMTZhNDRiMzEzN2IyM2VkYjFh
OGVlZDQ1OTQ5ZDI3ZDk4Li44NjUxZmM5N2I0ODcxMTVlMmQ0Y2RkNzcxNDkwZGYzZmQwMGE1ZGJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KQEAgLTMz
LDEwICszMywxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9NZWRpYUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6TWVkaWFMaXN0Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTW91c2VFdmVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tCmluZGV4IGY2NTZhOGFkZTU1MzVh
OTBlODdhYmNhYWI5ZDgwNzk5NjNhODEyMDYuLjk1ZjIyMzVkNDU3MmZiMzk2ZDYyNGMzOWZjNTA2
OWIzMDk2ZGMzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01N
b3VzZUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2
ZW50Lm1tCkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TW91c2VFdmVudCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTXV0YXRpb25FdmVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NdXRhdGlvbkV2ZW50Lm1tCmluZGV4IDBmNGVmMTY3NWEx
YzAzYTg3YTEwZDYxZTNmYjcxMWFhZjExYzc2YmQuLjJmYmY0MjJhZTg1ZDk5YzY2ODBhMGVkNThj
ZGJhMzI3ZjdlZDhmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01NdXRhdGlvbkV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01N
dXRhdGlvbkV2ZW50Lm1tCkBAIC0zMiw5ICszMiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL011dGF0
aW9uRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TXV0YXRp
b25FdmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTmFtZWROb2RlTWFw
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5hbWVkTm9kZU1hcC5tbQppbmRl
eCA1NjgxOTMzMmJiNjc0MmUxZWZlZGQwMWUyYzc1MzM1NzdkNzFlM2Y4Li4yOTE4MTkwOTBlNWUy
NTAzNTNiMzA3NGFmOTZiZDIzOGZkYjhkNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0KQEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OYW1lZE5vZGVNYXAuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
TmFtZWROb2RlTWFwKj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbQppbmRleCA5YWRjNDBiMDhh
YmJjODc3MWIzYzhiOGJkZmVlMDE5ZmM4MWNlMzI1Li4yMDBlODJhMzEwM2E2NzFkMDYxNTcxMTJj
N2RjOTcyNGE1NTZlMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvUHJvY2Vzc2luZ0luc3RydWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0
eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01SYW5nZS5tbQppbmRleCBmMjg5YjNhMjZlOGE0ZjU2NmI2NzI0ZmI4ZDYxNTEx
NThiZGI2MmU4Li5lZjJjMzU4MDliMGI2NzYzYjQ3NzQ1NjE4YzNiMjk1NjA2ZDk5OTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmFuZ2UubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tCkBAIC0zNCwxMCArMzQsMTAgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SYW5nZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpSYW5n
ZSo+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVN0eWxlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVT
aGVldC5tbQppbmRleCA3YTFhNGE4N2ZjNmVmMjQ5YWNiOWQwN2RlMjU0YmRiMmIwYTNjOTMzLi4w
ZTg3ODVjN2QyYzA2N2M0ODQ3MjFlZDUzNzg3NGQ3YzU1Y2IwYThmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5tbQpAQCAtMzYsMTAgKzM2LDEwIEBACiAj
aW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVTaGVldC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpT
dHlsZVNoZWV0Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NVGV4dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0
Lm1tCmluZGV4IDMwZTdkYTNjMGM5ODk3M2Q0MTI1YTY3ZWRkY2QyNmQ5Y2VlNzVjYjUuLmY3MzBh
ZDZkZWJhZmEwNWJlMzcyNDQwZjk2ZTYwMWFlZmY0ZGY3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01UZXh0Lm1tCkBAIC0zMCw5ICszMCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHQq
PihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQppbmRleCBjNTAyNmViNGIyZjg2
MDEzMzI4N2I5ZjJlMDU4YTc2MWZiMjQyMDRmLi5jYTA2ZmQ3YzBmZjBlMDAxYjllODg0MDZkMGJh
N2VhY2NhNDE0YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
VGV4dEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZl
bnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGV4dEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0RXZlbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRva2VuTGlzdC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0KaW5kZXggZGI4ZjU1Y2UwN2FhNjRm
ZDkyOWE1ZjVmODNmZjBjYmNjZGQ3NzQ2OC4uOWM0YWE4OTYzMGQ3ODE0NDQyYjEzYzZiYzI1Yzhl
NGI3Zjk2YmI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRv
a2VuTGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0
Lm1tCkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
T2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkRPTVRva2VuTGlzdCo+KF9pbnRlcm5hbCkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbQppbmRleCAxNzMyNDMx
OTBhMzJiMTVjNDdmZmZlMDAyYjNiYTYxNjdiMTc3OGRiLi5mODJjZjU4YTdlZDRhYmI5NGY4ODVm
MGVlNGFmZmJjM2Y5ZGUwMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlF
dmVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VJ
RXZlbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OlVJRXZlbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tCmluZGV4IGExZWY1NzNmOGRk
MmMxMGI2ODZjMTE5NTA5YTcwMjQyZDdjZjUyYWYuLmRhY2YxZDg2ZGY4ZTczYzFiYjA0NGNkZGE4
YjQ5MTUxYTRiZmZmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01YUGF0aFJlc3VsdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBh
dGhSZXN1bHQubW0KQEAgLTMxLDExICszMSwxMSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRoUmVzdWx0Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0
PFdlYkNvcmU6OlhQYXRoUmVzdWx0Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCA4ZjE3YzNhZjg5ZjJi
Mjc0YWI0NzU0NWVhOWY5ZWFhYTZjOWVjZGZjLi5iMmI0YWU4YTMxYzgzNTExZDkwNzUxMGQwOGFh
ODBiYTAwMTgxODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5
L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
V2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTQ3LDEzICs0NywxMyBAQAogI2ltcG9ydCA8V2ViQ29yZS9J
bWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9y
dCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lt
cG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExB
VEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRy
YXMubW0KaW5kZXggZjNiYWFlYTJmYTExM2Q4ZTQ3N2NmNjMwODM1ZTA3OGFkNDBhN2NhOC4uZWQy
ODRiNDY3Yjg0YmI2ZmQ4NWUwNGE0Mzc4NzZjZGU0YTZlOWFjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCkBAIC0zMywxNCArMzMsMTUgQEAK
ICNpbXBvcnQgIldlYkxvY2FsaXphYmxlU3RyaW5ncy5oIgogI2ltcG9ydCAiV2ViTlNEYXRhRXh0
cmFzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdC5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9hZGVyTlNVUkxFeHRyYXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VS
TEV4dHJhcy5oPgotI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9PYmpj
UnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgogI2ltcG9ydCA8dW5p
Y29kZS91c2NyaXB0Lmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3Rm
L09iamNSdW50aW1lRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgV1RGOwpAQCAtMTA5LDcgKzExMCw3IEBAIC0gKE5TU3RyaW5nICopX3dlYl9vcmln
aW5hbERhdGFBc1N0cmluZwogCiAtIChOU1N0cmluZyAqKV93ZWJfdXNlclZpc2libGVTdHJpbmcK
IHsKLSAgICByZXR1cm4gdXNlclZpc2libGVTdHJpbmcoc2VsZik7CisgICAgcmV0dXJuIFdURjo6
dXNlclZpc2libGVTdHJpbmcoc2VsZik7CiB9CiAKIC0gKEJPT0wpX3dlYl9pc0VtcHR5CkBAIC0x
MzksNyArMTQwLDcgQEAgLSAoTlNVUkwgKilfd2Via2l0X1VSTEJ5UmVtb3ZpbmdGcmFnbWVudAog
CiAtIChOU1VSTCAqKV93ZWJfVVJMQnlSZW1vdmluZ1VzZXJJbmZvCiB7Ci0gICAgcmV0dXJuIFVS
TEJ5UmVtb3ZpbmdVc2VySW5mbyhzZWxmKTsKKyAgICByZXR1cm4gV1RGOjpVUkxCeVJlbW92aW5n
VXNlckluZm8oc2VsZik7CiB9CiAKIC0gKEJPT0wpX3dlYmtpdF9pc0phdmFTY3JpcHRVUkwKQEAg
LTE3NSwxNyArMTc2LDE3IEBAIC0oTlNEYXRhICopX3dlYl9zY2hlbWVTZXBhcmF0b3JXaXRob3V0
Q29sb24KIAogLShOU0RhdGEgKilfd2ViX2RhdGFGb3JVUkxDb21wb25lbnRUeXBlOihDRlVSTENv
bXBvbmVudFR5cGUpY29tcG9uZW50VHlwZQogewotICAgIHJldHVybiBkYXRhRm9yVVJMQ29tcG9u
ZW50VHlwZShzZWxmLCBjb21wb25lbnRUeXBlKTsKKyAgICByZXR1cm4gV1RGOjpkYXRhRm9yVVJM
Q29tcG9uZW50VHlwZShzZWxmLCBjb21wb25lbnRUeXBlKTsKIH0KIAogLShOU0RhdGEgKilfd2Vi
X3NjaGVtZURhdGEKIHsKLSAgICByZXR1cm4gZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwg
a0NGVVJMQ29tcG9uZW50U2NoZW1lKTsKKyAgICByZXR1cm4gV1RGOjpkYXRhRm9yVVJMQ29tcG9u
ZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRTY2hlbWUpOwogfQogCiAtKE5TRGF0YSAqKV93
ZWJfaG9zdERhdGEKIHsKLSAgICBOU0RhdGEgKnJlc3VsdCA9IGRhdGFGb3JVUkxDb21wb25lbnRU
eXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudEhvc3QpOworICAgIE5TRGF0YSAqcmVzdWx0ID0gV1RG
OjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRIb3N0KTsKICAg
ICBOU0RhdGEgKnNjaGVtZSA9IFtzZWxmIF93ZWJfc2NoZW1lRGF0YV07CiAgICAgLy8gVGFrZSBv
ZmYgbG9jYWxob3N0IGZvciBmaWxlCiAgICAgaWYgKFtzY2hlbWUgX3dlYl9pc0Nhc2VJbnNlbnNp
dGl2ZUVxdWFsVG9DU3RyaW5nOiJmaWxlIl0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0KaW5kZXggZTllZDVj
YmViMjk1ZDA2ZGFhZDk2OTU3MjJhMzRmM2VlZTU1NjY4ZC4uYjcyNjU4M2Y5NzRjZGRmNzY2MTdm
MmFkMThkMzk4ZjQwM2I5MTNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0KQEAgLTI0LDggKzI0LDggQEAK
IAogI2ltcG9ydCAiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAKLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IGFjN2E0YmIzMThjNTVmOTM1OWM5
OGUwYThiZjk2ZDFlNmU0NDM2MzYuLjg4M2I5MjA3MjA3ZTI0OGRkNDdhMzBiYzBjNzYyMWU3MDY4
YjdjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTU4
LDcgKzU4LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUHJveHlTZXJ2ZXIuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlckdlc3R1
cmVJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvbnBydW50aW1lX2ltcGwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvcnVudGltZV9vYmplY3QuaD4KQEAgLTY2LDYgKzY1LDcgQEAKICNpbXBvcnQg
PHV0aWxpdHk+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9S
ZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogZXh0ZXJuICJDIiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXgg
MGUxODk4ZjAzMDU5OTcwNDNlNjRmNmEyOWFmNmZjZDNmOTljNWZhNy4uMmJjOTc4ZDM0MDNmNzNm
MWMwNjNkZjI1MjM0M2M1YjgzZWMxMzA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtNzIsNyAr
NzIsNyBAQCBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPgogCiAgICAgdm9pZCBjYW5jZWxMb2FkQW5kRGVzdHJv
eVN0cmVhbVdpdGhFcnJvcihOU0Vycm9yICopOwogCi0gICAgdm9pZCBzZXRSZXF1ZXN0VVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCkgeyBtX3JlcXVlc3RVUkwgPSByZXF1ZXN0VVJM
OyB9CisgICAgdm9pZCBzZXRSZXF1ZXN0VVJMKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCkgeyBtX3Jl
cXVlc3RVUkwgPSByZXF1ZXN0VVJMOyB9CiAKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBz
dG9wKCk7CkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0g
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJOZXRzY2FwZVBsdWdpblN0cmVhbT4KICAgICBib29sIHdh
bnRzQWxsU3RyZWFtcygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZURhdGE+IG1fZGVsaXZlcnlEYXRhOwotICAgIFdlYkNvcmU6OlVSTCBtX3JlcXVlc3RVUkw7Cisg
ICAgVVJMIG1fcmVxdWVzdFVSTDsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fcmVzcG9uc2VVUkw7
CiAgICAgQ1N0cmluZyBtX21pbWVUeXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDFhNzBiY2Vi
NjVkZjU3MTJmNjUwNTZhMjRmNGU5OTU5MjIzMWNiNmYuLjA0ZDI0NjgxNzg1MzYxZWI4MTYwYTM3
NTIzOGJhOGU0OGU5NGM2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMjcsNyArMjI3LDcgQEAg
Y2xhc3MgV2ViQ2hyb21lQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CiAg
ICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmlu
ZyYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpTdGF0ZSkgZmluYWw7CiAj
ZW5kaWYKIAotICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
V2ViQ29yZTo6VVJMJikgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hh
bGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYlZpZXcgKm1f
d2ViVmlldzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggNTg3ODRiOTk3OTZlYmEwYjc5MzFk
N2UyYTc4Zjg1ZTU3YTJmYTExOC4uOWU1MTI1MzA1MTI0ZTRmYTJhZTYzMjVkZTAyMzZhODEyMjgx
MWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtMTEzOSw3ICsxMTM5LDcgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLAogCiAjZW5kaWYKIAotU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6c2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3Qg
U3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBjb25zdAor
U3RyaW5nIFdlYkNocm9tZUNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIFNFTCBzZWxlY3RvciA9IEBzZWxlY3RvcihzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmdGb3JXZWJWaWV3Oik7CiAgICAgaWYgKFtbbV93
ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaAppbmRleCA4YjIwMzY0YmI2N2E5MTcyNzhiMjk1M2ZjNTE3OWExMmRk
MzY2ZGRkLi4xODg1ZjAzMTMxMzViODE3YjMwZjk0NTc3N2Q4ZTI0YjE1MzliZjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgV2ViQ29udGV4dE1l
bnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQKIAogICAgIHZvaWQg
Y29udGV4dE1lbnVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG93bmxvYWRVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkb3dubG9hZFVSTChjb25z
dCBVUkwmKSBvdmVycmlkZTsKICAgICB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29y
ZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3Jl
OjpGcmFtZSopIG92ZXJyaWRlOwogICAgIGJvb2wgaXNTcGVha2luZygpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRleCBhZjc4MTRiOTY5NjdlOWQ4NWY1OTQxZDRhZmFi
MzAyNDc1NmNmMzI1Li42MTYzMDQ5MDE5OTZmMTU3ZmM3ZTk4YTBlN2FiMGEwZTg3ZWM5OWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAtNTQsOSArNTQsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01Qcml2YXRlLmg+CiAjaW1w
b3J0IDxwYWwvc3BpL21hYy9OU1NoYXJpbmdTZXJ2aWNlUGlja2VyU1BJLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXgg
NGU4MWQzNzA4NDhmOWU0NGE0MGY1MDQwYmM5YWQ4YTM3Y2NhZDhlMC4uODQ3YTczYjE3YTQ2MTdi
ZDU0YThkMjhhOTIzYzFkNGE2M2JkZDEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtNDMsNyArNDMsNyBA
QCBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgewogCiAg
ICAgdm9pZCBiZWdpbkRyYWcoV2ViQ29yZTo6RHJhZ0l0ZW0sIFdlYkNvcmU6OkZyYW1lJiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRG93blBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgbW91c2VEcmFnZ2VkUG9zaXRpb24sIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdl
YkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkZWNsYXJlQW5k
V3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxl
bWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1l
Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb25jbHVk
ZUVkaXREcmFnKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCA3NzE4MmQyMGViYmIzOTA3MjFhZmI4MmU1OTRlMjE5YTBiNDQwZDRkLi5mZjZkMTQx
ZmUzZDg5Y2E5NWI1MGQ1OGQ3N2RlNDY5NmEyYzU2ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCBkaXNwYXRjaERpZERp
c3BhdGNoT25sb2FkRXZlbnRzKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0
Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hXaWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGRvdWJsZSBpbnRlcnZh
bCwgV2FsbFRpbWUgZmlyZURhdGUpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9y
bUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgV2FsbFRpbWUgZmly
ZURhdGUpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBh
Z2UoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIGZp
bmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7
CkBAIC0xNTksOCArMTU5LDggQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMg
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9y
eUl0ZW1Gb3JQYWdlKCkgZmluYWw7CiAKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnQoKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOwotICAgIHZvaWQgZGlkRGV0
ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biYsIGNvbnN0IFVSTCYpIGZpbmFsOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYs
IGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBmaW5hbDsKIAogICAgIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgZmlu
YWw7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JikgZmluYWw7CkBAIC0xNzcsNyArMTc3LDcgQEAgY2xhc3MgV2Vi
RnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewog
CiAgICAgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
ZmluYWw7CiAKLSAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikg
ZmluYWw7CisgICAgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGZpbmFsOwogICAg
IAogICAgIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVk
RnJhbWUqKSBmaW5hbDsKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRG
cmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIGZpbmFsOwpAQCAtMjA2LDMwICsyMDYsMzAgQEAg
Y2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnQgewogICAgIFJlZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRM
b2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGEmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVy
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJikgZmluYWwgeyB9CiAKLSAgICB2b2lkIHNldFRpdGxl
KGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpVUkwm
KSBmaW5hbDsKKyAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mLCBjb25zdCBVUkwmKSBmaW5hbDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4g
Y3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUs
IFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCYsCisgICAgUmVmUHRyPFdlYkNvcmU6OkZy
YW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcm
IHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFy
Z2luSGVpZ2h0KSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Jiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQ
bHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
JiwgY29uc3QgVVJMJiwKICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpIGZpbmFsOwog
ICAgIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgZmluYWw7CiAgICAgdm9p
ZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQmKSBmaW5hbDsKIAogI2lmIEVO
QUJMRShXRUJHTCkKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3QgZmluYWw7Ci0gICAgV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBj
b25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JV
UkwoY29uc3QgVVJMJikgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICNlbmRp
ZgogCi0gICAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQmLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsCisgICAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3Jl
YXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRN
TEFwcGxldEVsZW1lbnQmLCBjb25zdCBVUkwmIGJhc2VVUkwsCiAgICAgICAgIGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtVmFsdWVzKSBmaW5hbDsKICAgICAKLSAgICBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBv
YmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYg
bWltZVR5cGUpIGZpbmFsOworICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENv
bnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7
CiAgICAgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBmaW5hbDsKICAgICAK
ICAgICB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZCYpIGZpbmFsOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGJvb2wgc2hv
dWxkTG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIHNob3VsZExvYWRNZWRpYUVsZW1lbnRVUkwoY29uc3QgVVJMJikgY29uc3QgZmlu
YWw7CiAjZW5kaWYKIAogICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVP
YmplY3QoKSBmaW5hbCB7IHJldHVybiAwOyB9CkBAIC0yNDIsNyArMjQyLDcgQEAgY2xhc3MgV2Vi
RnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewog
CiAgICAgUmVmPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtp
bmdDb250ZXh0KCkgZmluYWw7CiAKLSAgICBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29u
c3QgV2ViQ29yZTo6VVJMJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzaG91bGRQYWludEJyb2tl
bkltYWdlKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlByZXZpZXdMb2FkZXJDbGllbnQ+IGNyZWF0ZVByZXZpZXdMb2Fk
ZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCAyODIxMjQyNzIzMmQyMzE5M2IyODFj
YzE1YWYyMGMyMWJkOTlhZjc1Li5lZmU5YTM0YmM1YjdmNTk1MGY3MmNiYmVmMWE5ZDI1MWVmZGE5
NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTAzMSw3ICsxMDMxLDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCiAgICAgV2Vi
VmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCk7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChsb2FkZXItPnVybEZvckhpc3Rv
cnkoKSA9PSBibGFua1VSTCgpKQorICAgIGlmIChsb2FkZXItPnVybEZvckhpc3RvcnkoKSA9PSBX
VEY6OmJsYW5rVVJMKCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudC5oCmluZGV4IGZkNGNkNGM0YjM2ZDhiZmY0YmNlNTdiZjE1
ZWQ2Zjg5ZjRlY2Q1ODAuLjA3N2QwMTRkM2U1MzVjN2E4YWJiMzQ2OGUxZDY1NGU5ZmU5YmUyNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC00MSw3ICs0MSw3
IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllCiAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSBv
dmVycmlkZTsKICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBT
dHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKLSAg
ICBib29sIHNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICBib29sIHNob3dQYXltZW50VUkoY29uc3Qg
VVJMJiwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRl
TWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24m
KSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
YXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KaW5kZXggMzM0OTNiZDlmMTYwYmRhOGFhYzVkYWZm
ZmE1OTJhNTYwZmE5OTI4Mi4uMzBlMDZjYWY5MzFhZTA2NmMzNjliNzM1MTEzZDljNDhhN2JkYzBk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbQpAQCAtMjcsOCAr
MjcsOCBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIFdl
YlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KCkK
IHsKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6Om9w
ZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwKICAgICB9KTsKIH0K
IAotYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OnNob3dQYXltZW50VUkoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mLCBjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpCitib29sIFdlYlBheW1lbnRDb29yZGlu
YXRvckNsaWVudDo6c2hvd1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8VVJMPiYs
IGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikKIHsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDczOWM5NTFm
NmJkN2ZmNTVmMjk5MmFkZmYzYTUwOWE2Y2UxMDA1OTQuLjRlYTFhZGQzZTEyMzdlMDJlNTAwOWMx
MWZkNWFiN2UyYTJjMzkzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00OCwx
MyArNDgsMTMgQEAgY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6
OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3IKICAgICBXZWJDb3JlOjpCbG9iUmVn
aXN0cnkqIGNyZWF0ZUJsb2JSZWdpc3RyeSgpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViQ29yZTo6
Q29va2llc1N0cmF0ZWd5Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRP
TShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00o
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIG92ZXJyaWRlOwotICAgIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJM
Jiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgYm9vbCBnZXRSYXdDb29raWVzKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgYm9vbCBn
ZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
Jiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVi
b2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVz
LCBwcml2YXRlIFdlYkNvcgogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7Ci0gICAgV2ViQ29yZTo6VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwor
ICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICBWZWN0b3I8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpAQCAtODAsNyArODAsNyBAQCBjbGFzcyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2
YXRlIFdlYkNvcgogICAgIGxvbmcgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHVuaXF1ZU5hbWUoKSBvdmVycmlkZTsKICAgICBX
ZWJDb3JlOjpDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKLSAgICBXZWJDb3JlOjpVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOworICAgIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CiAKICAgICBsb25nIHdyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAg
IFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBiZDc1ODFmYTUwNDgxYzk4OTdjOWExZmNkZDMy
MTkwZjY3ZjA2YjQ1Li5mNTBiMGViM2JjNDcwZWI5MTI4NWEwNWZkZDJkNGQzNDQ2ZTI1MTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0yMzksNyArMjM5LDcgQEAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoaW4KICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KIAotV2ViQ29yZTo6VVJMIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKK1VSTCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFVSTChpbmRleCwgdGl0bGUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnaW5JbmZvUHJvdmlkZXIuaAppbmRleCBkMWFiNTUxMTg0YzBhNWY2NDk5NDBkOGU5MjdiZDg0
ZTUyOWM3ZmYwLi41MjVlZTJmY2RlZWExNmM1YzZmOWRmZTgxMzVlZDdkMWM1ZWJiZDBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBXZWJQbHVn
aW5JbmZvUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z2luSW5mb1Byb3ZpZGVy
IHsKIHByaXZhdGU6CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpIG92ZXJyaWRlOwogICAgIFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mKSBm
aW5hbDsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBsdWdpbklu
Zm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdl
JiwgY29uc3QgVVJMJikgZmluYWw7CiAKICAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXIoKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnaW5JbmZvUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW0KaW5kZXggZTM0ZWM3M2U1NGZiZDk1NDE2OGZm
Y2E1NTJlNGYzNmJjOTVmNTQ0Yi4uYjA2ZGE2ZjBmMGMzNTdiMDBiYTg3NDkxY2IxN2JmZDJmYTk0
ZTM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5tbQpAQCAtNzQsNyArNzQsNyBAQCBW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5J
bmZvKFdlYkNvcmU6OlBhZ2UmIHBhZwogICAgIHJldHVybiBwbHVnaW5zOwogfQogCi1WZWN0b3I8
V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1
Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBjb25zdCBXZWJDb3JlOjpVUkwmKQorVmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBs
dWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgY29uc3QgVVJMJikKIHsKICAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2lu
SWRlbnRpZmllcnM7CiAgICAgcmV0dXJuIHBsdWdpbkluZm8ocGFnZSwgc3VwcG9ydGVkUGx1Z2lu
SWRlbnRpZmllcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQppbmRleCA0ZTRjMTNkZmI3M2FiNjRh
ZWU5N2Q3YTM3Mzk1MTNhZTQ5MjQyOWZjLi5kOWEwN2VlYzU3ODMzMjY5MDk2OGI0Nzk0ZDE1ZjI1
YmQ3OTUxMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4IGFlZjRmYzUyYWFlNDEy
ZjNlNmM0ZWNmNDAzOTViNDNlODdjYzk0NmMuLjIwZWU1MTg3OTQ1NTk3MmFiNGIwM2M0NjJhZTMx
ZjM5NDllYzkxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgV2ViVmlzaXRlZExpbmtTdG9yZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaXNpdGVk
TGlua1N0b3JlIHsKIHByaXZhdGU6CiAgICAgV2ViVmlzaXRlZExpbmtTdG9yZSgpOwogCi0gICAg
Ym9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdI
YXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0
cmlidXRlVVJMKSBvdmVycmlkZTsKKyAgICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFn
ZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkVmlzaXRl
ZExpbmsoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rc0lmTmVlZGVkKFdlYkNvcmU6OlBhZ2Um
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQppbmRleCA2MTE3OWZmODgxZTM1NTgyYzU3OTY5Yjc2NWRlMzY4YTY2YzI0YmEzLi4xZTIyNTkx
YjAyNzI3MjNlZDIyOTQzZGNiYzIzYTI2ZmU5NWUyYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC01NSw3ICs1NSw2IEBACiAj
aW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVVSTFJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJLaXRM
ZWdhY3kvRE9NSFRNTC5oPgpAQCAtNjUsNiArNjQsNyBAQAogI2ltcG9ydCA8d3RmL1JlZlB0ci5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgIldlYlBERlZp
ZXdJT1MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmlu
ZGV4IDM3YjMzYzgxMDg0MDJiZWNmN2U1NDU3MDU2YzRkNjM3MWMyMjA0NmIuLjc4YmQzZDQ5Yjkw
ZTc5ZTk3YzM4OGQwODY3ODU3YzdiZWFjMGE2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMjUwOCw3ICsyNTA4LDcgQEAgLSAodm9pZClfbG9h
ZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgdGV4dEVu
Y29kaW5nTmFtZToKICAgICBpZiAoYmFzZVVSTCkKICAgICAgICAgYmFzZVVSTCA9IFtiYXNlVVJM
IGFic29sdXRlVVJMXTsKICAgICBlbHNlIHsKLSAgICAgICAgYmFzZVVSTCA9IGJsYW5rVVJMKCk7
CisgICAgICAgIGJhc2VVUkwgPSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgICAgIHJlc3BvbnNlVVJM
ID0gY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbQppbmRleCA3NTRjY2NjMWFmMjgwNjU1OGNlZjk2Yjg4Y2M2ZTY4NzMzY2Ey
MmE2Li5mNTE0Yjg0MDU0YzIxYTkzNzNiZGU3ZjViOWE0MDFkOGRlZmIzNDE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyLm1tCkBAIC0yNTYsMTcgKzI1NiwxNyBAQCAtIChpZCA8TlNJbW1l
ZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xs
ZXIKICAgICBOU1VSTCAqdXJsID0gX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CiAg
ICAgTlNTdHJpbmcgKmFic29sdXRlVVJMU3RyaW5nID0gW3VybCBhYnNvbHV0ZVN0cmluZ107CiAg
ICAgaWYgKHVybCAmJiBfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkpIHsKLSAgICAgICAgaWYg
KHByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJtYWlsdG8iKSkgeworICAgICAgICBpZiAo
V1RGOjpwcm90b2NvbElzKGFic29sdXRlVVJMU3RyaW5nLCAibWFpbHRvIikpIHsKICAgICAgICAg
ICAgIF90eXBlID0gV2ViSW1tZWRpYXRlQWN0aW9uTWFpbHRvTGluazsKICAgICAgICAgICAgIHJl
dHVybiBbc2VsZiBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZExpbmtdOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKHByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJ0ZWwi
KSkgeworICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKGFic29sdXRlVVJMU3RyaW5nLCAidGVs
IikpIHsKICAgICAgICAgICAgIF90eXBlID0gV2ViSW1tZWRpYXRlQWN0aW9uVGVsTGluazsKICAg
ICAgICAgICAgIHJldHVybiBbc2VsZiBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3Rl
ZExpbmtdOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoYWJzb2x1dGVVUkxTdHJpbmcpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoYWJzb2x1dGVVUkxTdHJpbmcpKSB7CiAgICAgICAgICAgICBfdHlwZSA9
IFdlYkltbWVkaWF0ZUFjdGlvbkxpbmtQcmV2aWV3OwogCiAgICAgICAgICAgICBSZWZQdHI8UmFu
Z2U+IGxpbmtSYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqX2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVu
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERG
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQpp
bmRleCBhMDk5YzQ2ZGU3MjY5N2RjZGY5NTNmMWE0MWI5Yjc0MGMyMDA1MDRjLi45MDAzODJjZjhi
ODAwZWIxZDUxNTkxODVkZTJmMzgzM2IwYzY2ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCkBAIC02Miw5ICs2Miw5IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL01vdXNlRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3Rv
cnlNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJOU0F0dHJpYnV0ZWRT
dHJpbmdFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKIGV4dGVybiAiQyIgewogICAgIGJvb2wgQ0dDb250ZXh0R2V0QWxsb3dzRm9udFNt
b290aGluZyhDR0NvbnRleHRSZWYgY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQppbmRleCA4NWFmZmMxYmNhMGQ4
NzgzM2I0NDk2MjJlYTFkYWEzMmFhMGM2NDlhLi41ZmNmOWY2YWZlMDUxYmIyZjdjY2YxM2UzMjdi
NDVhNTU2Nzg4YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlNjcmlwdERlYnVnZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KQEAgLTM5LDggKzM5LDggQEAKICNpbXBvcnQgPFdlYkNv
cmUvRE9NV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRE9NV2luZG93Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TY3JpcHRDb250cm9sbGVyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDBlN2M1ZDdlOTJl
MjhiMmVmZTYyZmE3Y2UzYWQ5MTJhNDdmMDkzZDguLmI2MmYyYzM1MmEzYjAxYmVlMjc4MzA4ZTli
Nzg5ZWE5MDVhZWY2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtNTgsNyArNTgsNiBAQCBjbGFzcyBLZXlib2FyZEV2ZW50
OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIFRleHRJbmRpY2F0b3I7Ci1j
bGFzcyBVUkw7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1Y3QgRGljdGlvbmFy
eVBvcHVwSW5mbzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNo
YWxsaW5nSGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hl
bHBlcnMuY3BwCmluZGV4IDZhZjMxNTEzMTY1MThhMmNmNTYyODg4MWI0ODVjMjIzMzBjYzgwOTcu
Ljc0NzFhMTE2YzczMmRiZWY4ZmZmMTEwYzNkMTFiYzM2Yzg5ZThiODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcApAQCAtMjgsOSArMjgsOSBA
QAogCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRS
ZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGgu
aD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oCmluZGV4IDY2
ZGVlOGE0MDQ2MGY5MjVjNDhmNTllZjc3ZDhmOTMwNDYwNjhkNDcuLjgyMGI2MjEzNmJjOGNkMGQz
MTNmY2MwNzRmZWEzY2M1YTJhZWM0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01hcnNoYWxsaW5nSGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01h
cnNoYWxsaW5nSGVscGVycy5oCkBAIC0zMCwxNSArMzAsMTQgQEAKICNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xh
c3MgSW50UmVjdDsKLSAgICBjbGFzcyBVUkw7CitjbGFzcyBJbnRSZWN0OwogfQogCiBjbGFzcyBN
YXJzaGFsbGluZ0hlbHBlcnMKIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViQ29yZTo6VVJMIEJT
VFJUb0tVUkwoQlNUUik7Ci0gICAgc3RhdGljIEJTVFIgVVJMVG9CU1RSKGNvbnN0IFdlYkNvcmU6
OlVSTCYpOworICAgIHN0YXRpYyBVUkwgQlNUUlRvS1VSTChCU1RSKTsKKyAgICBzdGF0aWMgQlNU
UiBVUkxUb0JTVFIoY29uc3QgVVJMJik7CiAgICAgc3RhdGljIENGVVJMUmVmIFBhdGhTdHJpbmdU
b0ZpbGVDRlVSTFJlZihjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBGaWxlQ0ZVUkxSZWZUb1BhdGhTdHJpbmcoQ0ZVUkxSZWYgZmlsZVVSTCk7CiAgICAgc3RhdGlj
IENGVVJMUmVmIEJTVFJUb0NGVVJMUmVmKEJTVFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCBmMjQzNjAzY2U2NzE1ZDhm
MWYwODhkZWFmMjlhZTAwNzFkOGU5NDY4Li45Y2RjYzE0NWI3MTk5OWNkYTY5ODQxNGU1MmZlMjJj
MzdhODk3Yjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5jbHVkZSAiUGx1Z2luUGFj
a2FnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX01FVEFE
QVRBX0NBQ0hFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5E
YXRhYmFzZS5oCmluZGV4IDAxMzcwOGViZDcxZjk4MzcwNTQ5YTQ0NjQxMWJmYTRjN2ZkOTMwYWQu
LmFjYzBlMWZiYTc0NjQyOTQ0MWJiOWFkNjRmZGJjZTI1MGQyZGI3MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKQEAgLTM4LDcgKzM4
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3Mg
RnJhbWU7CiAgICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgUGx1
Z2luRGF0YWJhc2VDbGllbnQ7CiAgICAgY2xhc3MgUGx1Z2luUGFja2FnZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcApp
bmRleCBjM2U0OWY0NDE5NjU0NjEwZWZkNGRjNWY1ZWJkOWFiMDkxYzA2ZTE1Li44MTRlMmJiNmRj
MzkxZmMyZmZhMWE5NWI2OWU0NmQ0NTgwYzAzNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMjksNyArMjks
NyBAQAogCiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hh
clN0cmluZ0V4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5TdHJlYW0uaAppbmRleCBmNjI4Y2NkM2Q1YTQ1OTI2ZTUzNzAzNTJkODZkYzlhNzUzNTU4
ZTcxLi5jMWI5Zjg3YWM0ZTYyMmZiYjJlMmUyMDVkMTY0NTljMGMxOTRlN2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKQEAgLTMyLDEwICsz
MiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVfaW50
ZXJuYWwuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRl
eCBiNGU5MWY2ZTEyYjNiYjliMmEzOWQ4YmE4ZjAyYTk0MjA0MDViZDMwLi43Y2ZjN2E5YTgyZTcy
YzkxMmY1ZGI5OTljZmIzN2JmOWNmMWE5ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNjAsNyArNjAsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiAgICAgY2xhc3MgS2V5Ym9hcmRFdmVu
dDsKICAgICBjbGFzcyBNb3VzZUV2ZW50OwotICAgIGNsYXNzIFVSTDsKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKICAgICBjbGFzcyBQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCAyMDNkMTU2NWUyNTg2MTczY2Ey
NTYxYTU0NWEzOGU2MGU3NWM4ZDgyLi5jOWRlNDliM2NkMTQ1NTE3MjhmYjJmOWQ5NmVmNDkwZTk5
MTU4YmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xh
c3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGll
bnQgewogCiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVh
bCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hX
aXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIGxvb2tV
cEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBzcGVhayhj
b25zdCBXVEY6OlN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9u
c0RlbGVnYXRlLmNwcAppbmRleCA2NDM1MDc2N2Y5MzQwMjZkMDljMGZhOGI4OGRjY2RkMzg5NDJl
ZDA3Li5jYzAzOGNlZmQ5MTVmNDUxNmQ1ODdiYWYxMDlhNWFkNjQ3YTIwMTM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZp
Y2F0aW9uc0RlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcApAQCAtMzMsNyArMzMs
NyBAQAogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3Rv
cE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCmluZGV4IGYwZjFkOTJm
MmRiMjViNzQ0Mjg3NzUyNDYyYWZiYTRiYzFkMWM3ZjEuLjgyOTZjOGNjYjY4ODdkMzQ1NDhkNWE2
NGM2ODY3NzI2YTc0NjA3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9u
c0RlbGVnYXRlLmgKQEAgLTM4LDcgKzM4LDYgQEAgaW50ZXJmYWNlIElXZWJEZXNrdG9wTm90aWZp
Y2F0aW9uUHJlc2VudGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsK
LWNsYXNzIFVSTDsKIH0KIAogY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSA6
IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggMzljZDFjMTY3OWFkZGQyMDViYjA3ZTgzZmE2OTIwOTg1MzI4NTczNi4uMzJh
OWYwYmMzMTQwMjk5MWI4OTI0OTgwMjc5NTYzZGRlMjI4ODhjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDog
cHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6CiAgICAg
dm9pZCBkaXNwYXRjaERpZERpc3BhdGNoT25sb2FkRXZlbnRzKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgV2FsbFRpbWUgZmlyZURhdGUpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYs
IGRvdWJsZSBpbnRlcnZhbCwgV2FsbFRpbWUgZmlyZURhdGUpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlz
cGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGU7CkBAIC0xNDAsOCArMTQw
LDggQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjoKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3Rv
cnlJdGVtRm9yUGFnZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJl
UGFnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZERldGVj
dFhTUyhjb25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgb3ZlcnJpZGU7CiAKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxv
Y2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwpAQCAt
MTU0LDEyICsxNTQsMTIgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjoKIAogICAgIGJvb2wgc2hv
dWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0g
ICAgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwor
ICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBvdmVycmlkZTsKIAogICAgIFJl
ZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBv
dmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyJikgb3ZlcnJpZGUgeyB9CiAKLSAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24m
LCBjb25zdCBVUkwmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2Fj
aGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIHRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIG92
ZXJyaWRlOwpAQCAtMTg1LDE1ICsxODUsMTUgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjoKIAog
ICAgIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLAorICAgIFJlZlB0
cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJp
bmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCYsCiAgICAgICAgIGNvbnN0
IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5X
aWR0aCwgaW50IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6Oldp
ZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1M
UGx1Z0luRWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBi
b29sIGxvYWRNYW51YWxseSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0lu
RWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sIGxvYWRNYW51YWxs
eSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBv
dmVycmlkZSB7IH0KICAgICB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdl
dCYpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFw
cGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVs
ZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVz
KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0
V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVu
dCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1O
YW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIG92ZXJyaWRlOwog
Ci0gICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZTsKKyAg
ICBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwm
LCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOwogICAgIFdURjo6U3RyaW5n
IG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpc3BhdGNo
RGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAwYzRmYjA0MjRkMDFlYTEx
NWQyN2VjZTcyZTE5MDM4NzZlNWMxZTU5Li5iZTI0Y2I4YTU2ODU5Y2Q0M2NlMTlmMGExN2JiZjgx
ZGE3Yzk5ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNDUsMTEgKzQ1LDEx
IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9y
bVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAgICAgdmlydHVhbCBXZWJDb3JlOjpCbG9iUmVn
aXN0cnkqIGNyZWF0ZUJsb2JSZWdpc3RyeSgpOwogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0
cmF0ZWd5Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5n
Jik7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpOwotICAgIHN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBX
ZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIG92ZXJyaWRlOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKaW5kZXgg
MWE0NWFiOGRlMjgyMzdjZmRlYjZmMzlkZTBmMTc0ZWViNWQ4MjNlZi4uZDMxMGQyOTEwMDg3MDA5
ZTg5YmFmZWY1ZjBlMDEyNzYxOTRkZGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIu
Y3BwCkBAIC04NCw3ICs4NCw3IEBAIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVn
aW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnCiAgICAgcmV0dXJu
IG91dFBsdWdpbnM7CiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNv
bnN0IFdlYkNvcmU6OlVSTCYpCitWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBj
b25zdCBVUkwmKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRl
ZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5OYW1lczsKICAgICByZXR1cm4gcGx1
Z2luSW5mbyhwYWdlLCBzdXBwb3J0ZWRQbHVnaW5OYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92
aWRlci5oCmluZGV4IDgwMWJjYjdiNDYyZGNjZGRmYzc2NTJiNjRhZjA2Zjg2MGZmYzU1ZmIuLjEw
Zjc2NmUwNjA0NGQxNTliMGExY2Q5Mzk0OTIxZTc2MTJkNTc5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbklu
Zm9Qcm92aWRlci5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIFdlYlBsdWdpbkluZm9Qcm92aWRl
ciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5JbmZvUHJvdmlkZXIgewogcHJpdmF0ZToK
ICAgICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgZmluYWw7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOwotICAgIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdl
JmksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJmksIGNvbnN0IFVSTCYp
IGZpbmFsOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHNldFBsdWdpbkxvYWRDbGllbnRQ
b2xpY3koV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0
LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0
cmluZykgZmluYWw7CiAgICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJW
aXNpdGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKaW5kZXggNmE3Yjk5MjJjM2EzOTE1MjJjM2RhMDQ3ZTRh
MDY5NzNiNDA0ZDExMC4uOGJlZGU5ZTI1ODE5MTgzMjAyNzBlYWI2NTI3NGE3YTkwNmRiNThhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlz
aXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBXZWJWaXNp
dGVkTGlua1N0b3JlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RvcmUgewog
cHJpdmF0ZToKICAgICBXZWJWaXNpdGVkTGlua1N0b3JlKCk7CiAKLSAgICBib29sIGlzTGlua1Zp
c2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92
ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3Jl
OjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHBvcHVsYXRlVmlzaXRlZExpbmtzSWZOZWVkZWQoV2ViQ29yZTo6UGFnZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBhNjgyYzYyNzUwZTExZjUyMTU2
NzIxZjNkODI4MmQ1N2UwZjgwNmQyLi5iNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0
ZWYwMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAt
NDMsNyArNDMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmgKaW5kZXggODQ4
ODVmMjRmYjgzNGEyZGZjYTgyZWViNzllMTljNzE5MTA0YTQ3Mi4uNGY2MTExZTIzYjJjMmUwN2Uw
YWU0YWZhZDU4ZWE1MGVkMWEzMmM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9h
ZC5oCkBAIC0zOCw3ICszOCw2IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAg
IGNsYXNzIFVSTDsKICAgICBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKICAgICBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTUyLDEzICs1MSwxMyBA
QCBjbGFzcyBXZWJEb3dubG9hZAogI2VuZGlmCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkRv
d25sb2FkKiBjcmVhdGVJbnN0YW5jZShjb25zdCBXZWJDb3JlOjpVUkwmLCBJV2ViRG93bmxvYWRE
ZWxlZ2F0ZSopOworICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRlSW5zdGFuY2UoY29uc3Qg
VVJMJiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsKICAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNy
ZWF0ZUluc3RhbmNlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIElXZWJEb3du
bG9hZERlbGVnYXRlKik7CiAgICAgc3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJbnN0YW5jZSgp
OwogcHJpdmF0ZToKICAgICBXZWJEb3dubG9hZCgpOwogICAgIHZvaWQgaW5pdChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOwotICAgIHZv
aWQgaW5pdChjb25zdCBXZWJDb3JlOjpVUkwmLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOworICAg
IHZvaWQgaW5pdChjb25zdCBVUkwmLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOwogICAgIH5XZWJE
b3dubG9hZCgpOwogcHVibGljOgogICAgIC8vIElVbmtub3duCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCBjZGY4Y2FkNmEzNjk2
ZWViYWNlNjJmNGU1Nzg0Y2VlNGJlZjFkOWU5Li4yN2FmMWJhZTY1M2VmZjAyZjY3MDRmN2UzOWFk
MGUxYWM1MGFkNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVt
ZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1l
bnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hp
dFRlc3RSZXN1bHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbWFnZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAppbmRleCBkYmVh
Njk4YTU3NTAyMTJhNTA2NTBlNzgzOTE2OWQwYTVlMWIzNzU0Li5jNGQwODM2MmRhZDVlODM5M2U4
ZGZmODMxYzI1OTgxYTJjNzdmZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAg
LTM0LDkgKzM0LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lV2luLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFu
ZGxlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxzYWwuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTAsNyAr
MTkwLDcgQEAgY2xhc3MgREVDTFNQRUNfVVVJRCgie0EzNjc2Mzk4LTQ0ODUtNGE5ZC04N0RDLUNC
NUE0MEU2MzUxRH0iKSBXZWJGcmFtZSA6IHB1YmxpYwogICAgIEhSRVNVTFQgbWF0Y2hMYWJlbHNB
Z2FpbnN0RWxlbWVudChjb25zdCBCU1RSKiBsYWJlbHMsIGludCBjTGFiZWxzLCBJRE9NRWxlbWVu
dCogYWdhaW5zdEVsZW1lbnQsIEJTVFIqIHJlc3VsdCk7CiAgICAgSFJFU1VMVCBjYW5Qcm92aWRl
RG9jdW1lbnRTb3VyY2UoYm9vbCogcmVzdWx0KTsKIAotICAgIFdlYkNvcmU6OlVSTCB1cmwoKSBj
b25zdDsKKyAgICBVUkwgdXJsKCkgY29uc3Q7CiAKICAgICBXZWJWaWV3KiB3ZWJWaWV3KCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRXZWJWaWV3KFdlYlZpZXcqKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBj
bGFzcyBERUNMU1BFQ19VVUlEKCJ7QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQwRTYzNTFE
fSIpIFdlYkZyYW1lIDogcHVibGljCiAgICAgY2xhc3MgV2ViRnJhbWVQcml2YXRlOwogICAgIFdl
YkZyYW1lUHJpdmF0ZSogZDsKICAgICBib29sIG1fcXVpY2tSZWRpcmVjdENvbWluZyB7IGZhbHNl
IH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fb3JpZ2luYWxSZXF1ZXN0VVJMOworICAgIFVSTCBtX29y
aWdpbmFsUmVxdWVzdFVSTDsKICAgICBib29sIG1faW5QcmludGluZ01vZGUgeyBmYWxzZSB9Owog
CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG1fcGFnZVJlY3RzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCAyMmIwODQ2YTkwNmI3ODI4NjU2YjhkOTU3YzEw
YTBkZmFmZjhiMzAxLi4wMjMzODRjZTk2ZjEwOTQ5Y2RkNTlmNzc0YTgxNDVlYmJlYTdiN2E1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtMzYsMTIgKzM2LDEyIEBA
CiAjaW5jbHVkZSAiV2ViVmlzaXRlZExpbmtTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0
cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0
Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgVVNFKENGKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViSGlzdG9yeS5oCmluZGV4IDE3YWZmOTI4MjdkMWQxMDliNTNlOWNkY2M2
Y2U0OWM4YmUzZTcwZTUuLjY5Mzc0ZGYwMjAxZDg5OGY3N2Q2YjEyMTk4YzY3NWRjZTQ4MTgwODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmgKQEAgLTMzLDggKzMzLDcgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3Mg
VVJMOwotICAgIGNsYXNzIFBhZ2VHcm91cDsKK2NsYXNzIFBhZ2VHcm91cDsKIH0KIAogLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtNzgsNyArNzcsNyBAQCBjbGFzcyBXZWJIaXN0b3J5IDogcHVi
bGljIElXZWJIaXN0b3J5LCBwdWJsaWMgSVdlYkhpc3RvcnlQcml2YXRlIHsKIAogICAgIC8vIFdl
Ykhpc3RvcnkKICAgICBzdGF0aWMgV2ViSGlzdG9yeSogc2hhcmVkSGlzdG9yeSgpOwotICAgIHZv
aWQgdmlzaXRlZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0
bGUsIGNvbnN0IFdURjo6U3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1cmUsIGJvb2wg
aW5jcmVhc2VWaXNpdENvdW50KTsKKyAgICB2b2lkIHZpc2l0ZWRVUkwoY29uc3QgVVJMJiwgY29u
c3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXVEY6OlN0cmluZyYgaHR0cE1ldGhvZCwgYm9v
bCB3YXNGYWlsdXJlLCBib29sIGluY3JlYXNlVmlzaXRDb3VudCk7CiAgICAgdm9pZCBhZGRWaXNp
dGVkTGlua3NUb1Zpc2l0ZWRMaW5rU3RvcmUoV2ViVmlzaXRlZExpbmtTdG9yZSYpOwogCiAgICAg
Q09NUHRyPElXZWJIaXN0b3J5SXRlbT4gaXRlbUZvclVSTFN0cmluZyhjb25zdCBXVEY6OlN0cmlu
ZyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9y
eUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmlu
ZGV4IDg0Mzc2MjAxZDA3ZWIzZmVmNWViMmQ5YTcyMTc2ZDMxN2Y5OTEyMmUuLmE4NTU5YTVmZDIy
N2NiZDJiMTdlYWYyODVlYTYzOTVlYWZmOGE2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTMyLDggKzMyLDggQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSGlzdG9yeUl0ZW0uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlJlc291cmNlLmNwcAppbmRleCBiMjkyZGRlN2RjY2VmNjJmY2E3M2IwYzRjYjRiYWIy
YWRjNWJmZmIwLi44MTgwZGJlMDRmNmUyMDZlODUzOThjNjI5YTc2OWU4MzZlN2M2NGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBXZWJSZXNvdXJjZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
V2ViUmVzb3VyY2U6OldlYlJlc291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKQorV2ViUmVzb3Vy
Y2U6OldlYlJlc291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBXVEY6
OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBj
b25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKQogICAgIDogbV9kYXRhKGRhdGEpCiAgICAgLCBt
X3VybCh1cmwpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmgKaW5kZXggYjhjN2RjY2IwMzc0OWFiNzg3M2UzN2ZmYTI5ZjI1MmM2NTNi
ZWJhNS4uMDJkNjczNWFiNzM1ODQ4ODc0ZWZmMTkzNDg4MmRmNThjNGVmM2MzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0yOCwxNyArMjgsMTcgQEAKIAogI2luY2x1
ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIGNs
YXNzIFdlYlJlc291cmNlIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBwcm90ZWN0ZWQ6Ci0g
ICAgV2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpOworICAgIFdlYlJlc291cmNlKElT
dHJlYW0qIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYg
ZnJhbWVOYW1lKTsKICAgICB+V2ViUmVzb3VyY2UoKTsKIAogcHVibGljOgpAQCAtNTgsNyArNTgs
NyBAQCBjbGFzcyBXZWJSZXNvdXJjZSA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHJpdmF0ZToK
ICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIENPTVB0cjxJU3RyZWFtPiBtX2RhdGE7
Ci0gICAgV2ViQ29yZTo6VVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBXVEY6OlN0cmlu
ZyBtX21pbWVUeXBlOwogICAgIFdURjo6U3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICBX
VEY6OlN0cmluZyBtX2ZyYW1lTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
Y3VyaXR5T3JpZ2luLmNwcAppbmRleCA4MWIyNjlmYzQyMGM1OWNjNmVmNWQ5OTJmYzc2Y2M0OWIw
ZWEwZmI4Li45NDViODY5MjNmNmIxZmNhN2QwYjQ3NzdmMGNkMDYwMDI0NmExMDAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
YXRhYmFzZVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVVJMUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVz
cG9uc2UuY3BwCmluZGV4IDQ1NzZjMjIyNWM4MzU3ZjMwNjcwNjczYzE4ODA1ZDMzOGY0ODJiYjQu
LjdkYTE1NThiYjQ1N2Q5MjFkMjRjYTNiNWNjNzVlNmUxMGE3ZTYyNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTQwLDEyICs0MCwxMiBAQAogI2Vu
ZGlmCiAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxzaGxvYmouaD4KICNpbmNsdWRlIDxz
aGx3YXBpLmg+CiAjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yMjcsNyArMjI3LDcgQEAgV2ViVVJMUmVzcG9u
c2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9u
c2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRw
IHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQot
ICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXZWJDb3JlOjpVUkwo
eyB9LCAiaHR0cDovLyIpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOworICAgIGluc3RhbmNlLT5t
X3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShVUkwoeyB9LCAiaHR0cDovLyIpLCBTdHJpbmco
KSwgMCwgU3RyaW5nKCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5z
dGFuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29u
dGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmNwcAppbmRleCBiZDEyNjc1OGE1MWNjMzUzOGY5YWM5NTM3Y2ZiMWZjN2Rm
ZGFlMzg4Li40ODEyMzg0NzEzYzhiOTlkYTVjYmE1YjYzZjI1NDQ0OWZlNTBjNjQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5j
cHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKIAogI2luY2x1ZGUg
PFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVmlldy5oCmluZGV4IDNjZmQ2Njc2OGViMzI3YWVhZGM3YTA5ZTRkMjdjZWEyNDk0OGZkN2Uu
LjFiNzJiYmU4MjczNGNlODMzNjJhNzJjOTBlYzJiOGYwNmU1OGZmNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmgKQEAgLTQ2Myw3ICs0NjMsNyBAQCBjbGFzcyBXZWJWaWV3CiAKICAgICAv
LyBDb252ZW5pZW50IHRvIGJlIGFibGUgdG8gdmlvbGF0ZSB0aGUgcnVsZXMgb2YgQ09NIGhlcmUg
Zm9yIGVhc3kgbW92ZW1lbnQgdG8gdGhlIGZyYW1lLgogICAgIFdlYkZyYW1lKiB0b3BMZXZlbEZy
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWU7IH0KLSAgICBjb25zdCBXVEY6OlN0cmlu
ZyYgdXNlckFnZW50Rm9yS1VSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCk7CisgICAgY29uc3Qg
V1RGOjpTdHJpbmcmIHVzZXJBZ2VudEZvcktVUkwoY29uc3QgVVJMJiB1cmwpOwogCiAgICAgc3Rh
dGljIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKIApAQCAtNTAyLDcgKzUwMiw3IEBAIGNsYXNzIFdlYlZpZXcKICAgICBib29sIG9uR2V0T2Jq
ZWN0KFdQQVJBTSwgTFBBUkFNLCBMUkVTVUxUJikgY29uc3Q7CiAgICAgc3RhdGljIFNURE1FVEhP
RElNUCBBY2Nlc3NpYmxlT2JqZWN0RnJvbVdpbmRvdyhIV05ELCBEV09SRCBvYmplY3RJRCwgUkVG
SUlELCB2b2lkKiogcHBPYmplY3QpOwogCi0gICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKTsKKyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpOwogCiAgICAgdm9p
ZCBmbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nvb24oKTsKICAgICB2b2lkIHNldFJv
b3RDaGlsZExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjY2M3ZDc3NTBkMzc5ODk5NWI4MGY5
YmUxZTRhMWUzMDNiZDk3MGZhLi42MjAxZDllZDZlOGEyM2RmMjliZDE5OTE0OTM4ODQ5N2NjMTQx
NTE4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUgdG8gV1RGCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNyZWF0ZVVSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y2hlY2tVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tS
ZWxhdGl2ZVVSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTERpZmZlcmVuY2Vz
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcyk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5j
cHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1lvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1VSTEV4dHJhcy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om9yaWdpbmFsRGF0YUFz
U3RyaW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnVzZXJWaXNpYmxlU3RyaW5nKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmxpdGVyYWxVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2Fk
QWx0ZXJuYXRlSFRNTFN0cmluZy5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tOgorICAg
ICAgICAobGl0ZXJhbFVSTCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW06CisgICAgICAgICgtW0xvYWRJbnZhbGlkVVJM
V2ViRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVy
cm9yOmZvckZyYW1lOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NTTEtl
eUdlbmVyYXRvci5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxp
dGllc1dpbi5jcHA6CisKIDIwMTgtMTAtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYktpdDJdIEZvcm1hdCA+IEJvbGQgYW5kIEZvcm1hdCA+
IEl0YWxpYyBkb24ndCB0b2dnbGUgYmV0d2VlbiBib2xkIGFuZCBpdGFsaWMgc3R5bGUKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9u
cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lv
bnMuY3BwCmluZGV4IDU4ZTY5ZDBkZjYzMDU5N2ExMGRiMmU5Yzk2YTJkOGRkY2RhYTdjNjkuLjE4
OGI4YmRlMGM1ZjM0OWVkYzlmNDI1Y2Y5MDgzY2M3NzY4ZDA3MDcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApA
QCAtMzgsMTAgKzM4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9ORkEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05GQVRvREZBLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRJbmZvLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VSTEZpbHRlclBh
cnNlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggYjky
ODMyNGYzNTk4ZGRiNDYxN2ExZGVlYjg4MjYzNjBjNjVhNDIwNS4uYWFkMTZiODYwNDE3OWNhNDNh
OTc3Mzc5NTg1NGI1NzU3NzNhZmM5YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5j
bHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9VUkwuY3BwCmluZGV4IDczNTM0YzgxNzMzZWJhNDUyZjMyZmQ5ZjgyMTcxYmE5
YmE1NGI2YmIuLmRjMzFiNDdiZDA3ODY4YWVkY2FmZjk3ZjU2NTZkODNmNzg5ZDgzMjEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwCkBAIC0yNSwxMSArMjUsOSBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAKIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtNzMsOCArNzEsNyBAQCBURVNUX0YoVVJMVGVz
dCwgVVJMQ29uc3RydWN0b3JDb25zdENoYXIpCiAKIHN0YXRpYyBVUkwgY3JlYXRlVVJMKGNvbnN0
IGNoYXIqIHVybEFzU3RyaW5nKQogewotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQXNTdHJpbmcp
OwotICAgIHJldHVybiBwYXJzZXIucmVzdWx0KCk7CisgICAgcmV0dXJuIFVSTCh7IH0sIHVybEFz
U3RyaW5nKTsKIH07CiAKIFRFU1RfRihVUkxUZXN0LCBVUkxQcm90b2NvbEhvc3RBbmRQb3J0KQpA
QCAtMzE3LDIwICszMTQsMjAgQEAgVEVTVF9GKFVSTFRlc3QsIEVxdWFsSWdub3JpbmdRdWVyeUFu
ZEZyYWdtZW50KQogCiBURVNUX0YoVVJMVGVzdCwgUHJvdG9jb2xJc0luSFRUUEZhbWlseSkKIHsK
LSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSh7fSkpOwotICAgIEVYUEVD
VF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCIiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoImEiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoImFiIikpOwotICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCJhYmMiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFi
Y2QiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlIikp
OwotICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNkZWYiKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlZmciKSk7Ci0gICAg
RVhQRUNUX1RSVUUocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cDoiKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHAiKSk7Ci0gICAgRVhQRUNUX1RSVUUo
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cHM6IikpOwotICAgIEVYUEVDVF9GQUxTRShwcm90
b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwcyIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90b2NvbElz
SW5IVFRQRmFtaWx5KCJodHRwczovLyFAIyQlXiYqKCkiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdU
Rjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSh7IH0pKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpw
cm90b2NvbElzSW5IVFRQRmFtaWx5KCIiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9j
b2xJc0luSFRUUEZhbWlseSgiYSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElz
SW5IVFRQRmFtaWx5KCJhYiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5I
VFRQRmFtaWx5KCJhYmMiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRU
UEZhbWlseSgiYWJjZCIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCJhYmNkZSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCJhYmNkZWYiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRU
UEZhbWlseSgiYWJjZGVmZyIpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoImh0dHA6IikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoImh0dHAiKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCJodHRwczoiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRU
UEZhbWlseSgiaHR0cHMiKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCJodHRwczovLyFAIyQlXiYqKCkiKSk7CiB9CiAKIFRFU1RfRihVUkxUZXN0LCBIb3N0
SXNJUEFkZHJlc3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvVVJMUGFyc2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQ
YXJzZXIuY3BwCmluZGV4IDNlMTA1OTJhMDNkMGFiMDFlMmMxNjZhNDUzZWFhZWVjMWZhMDM5YzEu
LjFjNGRjZGQwNWUyMWQ3YjVmZDdhYjdkZmU4NWQ4ZjA1YzFhYzhhN2EgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCkBAIC0yNiw4ICsyNiw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1VS
TFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tV
UkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBU
ZXN0VGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRl
bnRpZmllcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuc3RyaW5nLCB1cmwuc3RyaW5n
KCkpKTsKIAotICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0
ZW50KHVybCkpOworICAgIEVYUEVDVF9UUlVFKFdURjo6VVJMUGFyc2VyOjppbnRlcm5hbFZhbHVl
c0NvbnNpc3RlbnQodXJsKSk7CiAKICAgICBpZiAodGVzdFRhYnMgPT0gVGVzdFRhYnM6Ok5vKQog
ICAgICAgICByZXR1cm47CkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxh
dGl2ZVVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3Ry
aW4KICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRp
ZmllcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuc3RyaW5nLCB1cmwuc3RyaW5nKCkp
KTsKICAgICAKLSAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lz
dGVudCh1cmwpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OlVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1
ZXNDb25zaXN0ZW50KHVybCkpOwogICAgIAogICAgIGlmICh0ZXN0VGFicyA9PSBUZXN0VGFiczo6
Tm8pCiAgICAgICAgIHJldHVybjsKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgdm9pZCBjaGVj
a1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBh
cnRzJiBwYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LmZyYWdtZW50LCB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5zdHJpbmcsIHVy
bC5zdHJpbmcoKSkpOwogICAgIAotICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxW
YWx1ZXNDb25zaXN0ZW50KHVybCkpOworICAgIEVYUEVDVF9UUlVFKFdURjo6VVJMUGFyc2VyOjpp
bnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CiAgICAgCiAgICAgaWYgKHRlc3RUYWJzID09
IFRlc3RUYWJzOjpObykKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRp
YyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBiCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQs
IHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3
LnN0cmluZywgdXJsLnN0cmluZygpKSk7CiAgICAgCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFyc2Vy
OjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpV
UkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKICAgICAKICAgICBpZiAo
dGVzdFRhYnMgPT0gVGVzdFRhYnM6Ok5vKQogICAgICAgICByZXR1cm47CkBAIC0yMTMsOCArMjEz
LDcgQEAgc3RhdGljIHZvaWQgc2hvdWxkRmFpbChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgU3RyaW5nJiBiYXNlU3RyaW5nKQogCiBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZywgY29uc3QgRXhwZWN0
ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYWJzIHRlc3RUYWJzID0gVGVzdFRhYnM6OlllcykKIHsKLSAg
ICBVUkxQYXJzZXIgcGFyc2VyKHVybFN0cmluZywgeyB9LCBlbmNvZGluZyk7Ci0gICAgYXV0byB1
cmwgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgYXV0byB1cmwgPSBVUkwoeyB9LCB1cmxTdHJpbmcs
IGVuY29kaW5nKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3Rv
Y29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKQEAgLTIzOCw5
ICsyMzcsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZywgY29ucwogCiBzdGF0aWMgdm9pZCBjaGVja1VS
TChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBj
b25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywg
VGVzdFRhYnMgdGVzdFRhYnMgPSBUZXN0VGFiczo6WWVzKQogewotICAgIFVSTFBhcnNlciBiYXNl
UGFyc2VyKGJhc2VVUkxTdHJpbmcsIHsgfSwgZW5jb2RpbmcpOwotICAgIFVSTFBhcnNlciBwYXJz
ZXIodXJsU3RyaW5nLCBiYXNlUGFyc2VyLnJlc3VsdCgpLCBlbmNvZGluZyk7Ci0gICAgYXV0byB1
cmwgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgYXV0byB1cmwgPSBVUkwoVVJMKHsgfSwgYmFzZVVS
TFN0cmluZyksIHVybFN0cmluZywgZW5jb2RpbmcpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVz
ZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJs
LnBhc3MoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VzZXJBZ2VudFF1aXJrcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VXNlckFnZW50UXVpcmtzLmNwcAppbmRleCA0YzgwMzJiOTM2Y2ZlM2E1OTFmMjAyZWYwZTBlYTFk
ZjBlZjdkN2I3Li4wYzVlNjM3NzliYTdlMDFmYTY4OWI3MDlkM2FmN2ZlNTE4ZjcwMDQzIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtz
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVp
cmtzLmNwcApAQCAtMjUsOCArMjUsOCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50Lmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1lvdVR1YmVQbHVnaW5SZXBsYWNl
bWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LmNwcAppbmRleCA3NmIxMDM1NzVjYTQyNWNlM2ZlNThkYTMxMzZiMGVlYzBk
NmQzZjFlLi4zMDBiMTNjYmNhMTBjMjFiMzA3ZWVlMzExNGRlMDBmYmYwZmUwMmQxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtMjQsOSArMjQsOSBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
WW91VHViZVBsdWdpblJlcGxhY2VtZW50Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVVJMRXh0cmFz
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1VSTEV4dHJhcy5t
bQppbmRleCA2ZmZkN2RhY2IzZmMwMjEyYTQwNGQ4NTZiMzE4YzkzNjlmODlmZTk2Li5iNjQwYjEw
YmZmMmYwMTliNzI3MjQzYTdjNjAwODUxYWRhZmQ3NWUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0KQEAgLTI1LDggKzI1
LDggQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5T
VVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvY29jb2Ev
TlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CkBAIC01MCwxNyArNTAsMTcgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGRhdGFBc1N0cmluZyhOU0RhdGEgKmRhdGEpCiAKIHN0YXRpYyBjb25zdCBjaGFyKiBvcmlnaW5h
bERhdGFBc1N0cmluZyhOU1VSTCAqVVJMKQogewotICAgIHJldHVybiBkYXRhQXNTdHJpbmcoV2Vi
Q29yZTo6b3JpZ2luYWxVUkxEYXRhKFVSTCkpOworICAgIHJldHVybiBkYXRhQXNTdHJpbmcoV1RG
OjpvcmlnaW5hbFVSTERhdGEoVVJMKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiB1c2VyVmlz
aWJsZVN0cmluZyhOU1VSTCAqVVJMKQogewotICAgIHJldHVybiBbV2ViQ29yZTo6dXNlclZpc2li
bGVTdHJpbmcoVVJMKSBVVEY4U3RyaW5nXTsKKyAgICByZXR1cm4gW1dURjo6dXNlclZpc2libGVT
dHJpbmcoVVJMKSBVVEY4U3RyaW5nXTsKIH0KIAogc3RhdGljIE5TVVJMICpsaXRlcmFsVVJMKGNv
bnN0IGNoYXIqIGxpdGVyYWwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlVSTFdpdGhEYXRhKGxp
dGVyYWxBc0RhdGEobGl0ZXJhbCksIG5pbCk7CisgICAgcmV0dXJuIFdURjo6VVJMV2l0aERhdGEo
bGl0ZXJhbEFzRGF0YShsaXRlcmFsKSwgbmlsKTsKIH0KIAogVEVTVChXZWJDb3JlLCBVUkxFeHRy
YXMpCkBAIC0xMjcsOCArMTI3LDggQEAgVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfRGl2aXNpb25T
aWduKQogICAgIC8vIFNlbGVjdGVkIHRoZSBkaXZpc2lvbiBzaWduIGFzIGFuIGV4YW1wbGUgb2Yg
YSBub24tQVNDSUkgY2hhcmFjdGVyIHRoYXQgaXMgYWxsb3dlZCBpbiBob3N0IG5hbWVzLCBzaW5j
ZSBpdCdzIGEgbG9va2FsaWtlIGNoYXJhY3Rlci4KIAogICAgIC8vIENvZGUgcGF0aCBzaW1pbGFy
IHRvIHRoZSBvbmUgdXNlZCB3aGVuIHR5cGluZyBpbiBhIFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly9zaXRlLnhuLS1jb21vdGhlcnNpdGUta2piLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3Ry
aW5nKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMz
XHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0
ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUu
b3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUueG4tLWNvbW90aGVy
c2l0ZS1ramIub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV1RGOjpVUkxXaXRoVXNlclR5cGVk
U3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgbmlsKSkpOwor
ICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwg
dXNlclZpc2libGVTdHJpbmcoV1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3Np
dGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgbmlsKSkpOwogCiAgICAgLy8gQ29kZSBwYXRo
cyBzaW1pbGFyIHRvIHRoZSBvbmVzIHVzZWQgZm9yIFVSTHMgZm91bmQgaW4gd2VicGFnZXMgb3Ig
SFRUUCByZXNwb25zZXMuCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEMzXHhC
N290aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8v
c2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciKSkpOwpAQCAtMTM3LDE3ICsxMzcsMTcgQEAg
VEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfRGl2aXNpb25TaWduKQogICAgIEVYUEVDVF9TVFJFUSgi
aHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmco
bGl0ZXJhbFVSTCgiaHR0cDovL3NpdGUuY29tJUMzJUI3b3RoZXJzaXRlLm9yZyIpKSk7CiAKICAg
ICAvLyBTZXBhcmF0ZSBmdW5jdGlvbnMgdGhhdCBkZWFsIHdpdGgganVzdCBhIGhvc3QgbmFtZSBv
biBpdHMgb3duLgotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS54bi0tY29tb3RoZXJzaXRlLWtqYi5v
cmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRl
Lm9yZyIpIFVURjhTdHJpbmddKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tXHhDM1x4Qjdv
dGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEMzXHhC
N290aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLnhu
LS1jb21vdGhlcnNpdGUta2piLm9yZyIsIFtXVEY6OmVuY29kZUhvc3ROYW1lKEAic2l0ZS5jb21c
eEMzXHhCN290aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJz
aXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIFtXVEY6OmRlY29kZUhvc3ROYW1lKEAic2l0
ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CiB9CiAKLVRFU1QoV2Vi
Q29yZSwgVVJMRXh0cmFzX1NvbGlkdXMpCitURVNUKFdURiwgVVJMRXh0cmFzX1NvbGlkdXMpCiB7
CiAgICAgLy8gU2VsZWN0ZWQgZnVsbCB3aWR0aCBzb2xpZHVzLCB3aGljaCBsb29rcyBsaWtlIHRo
ZSBzb2xpZHVzLCB3aGljaCBpcyB0aGUgY2hhcmFjdGVyIHRoYXQgaW5kaWNhdGVzIHRoZSBlbmQg
b2YgdGhlIGhvc3QgbmFtZS4KIAogICAgIC8vIENvZGUgcGF0aCBzaW1pbGFyIHRvIHRoZSBvbmUg
dXNlZCB3aGVuIHR5cGluZyBpbiBhIFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRl
LmNvbS9vdGhlcnNpdGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV2ViQ29yZTo6VVJMV2l0
aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5v
cmciLCBuaWwpKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20vb3RoZXJzaXRl
Lm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmco
QCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAg
IEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tL290aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERh
dGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21c
eEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0
cDovL3NpdGUuY29tL290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUu
b3JnIiwgbmlsKSkpOwogCiAgICAgLy8gQ29kZSBwYXRocyBzaW1pbGFyIHRvIHRoZSBvbmVzIHVz
ZWQgZm9yIFVSTHMgZm91bmQgaW4gd2VicGFnZXMgb3IgSFRUUCByZXNwb25zZXMuCiAgICAgRVhQ
RUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIiwgb3Jp
Z2luYWxEYXRhQXNTdHJpbmcobGl0ZXJhbFVSTCgiaHR0cDovL3NpdGUuY29tXHhFRlx4QkNceDhG
b3RoZXJzaXRlLm9yZyIpKSk7CkBAIC0xNTYsOCArMTU2LDggQEAgVEVTVChXZWJDb3JlLCBVUkxF
eHRyYXNfU29saWR1cykKICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSVFRiVCQyU4
Rm90aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0
ZS5jb20lRUYlQkMlOEZvdGhlcnNpdGUub3JnIikpKTsKIAogICAgIC8vIFNlcGFyYXRlIGZ1bmN0
aW9ucyB0aGF0IGRlYWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1lIG9uIGl0cyBvd24uCi0gICAgRVhQ
RUNUX1NUUkVRKCJzaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmVuY29kZUhvc3RO
YW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwot
ICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXZWJDb3JlOjpkZWNv
ZGVIb3N0TmFtZShAInNpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIpIFVURjhTdHJp
bmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tL290aGVyc2l0ZS5vcmciLCBbV1RGOjpl
bmNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIpIFVURjhT
dHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tL290aGVyc2l0ZS5vcmciLCBbV1RG
OjpkZWNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIpIFVU
RjhTdHJpbmddKTsKIH0KIAogVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfU3BhY2UpCkBAIC0xNjUs
OCArMTY1LDggQEAgVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfU3BhY2UpCiAgICAgLy8gU2VsZWN0
ZWQgaWRlb2dyYXBoaWMgc3BhY2UsIHdoaWNoIGxvb2tzIGxpa2UgdGhlIEFTQ0lJIHNwYWNlLCB3
aGljaCBpcyBub3QgYWxsb3dlZCB1bmVzY2FwZWQuCiAKICAgICAvLyBDb2RlIHBhdGggc2ltaWxh
ciB0byB0aGUgb25lIHVzZWQgd2hlbiB0eXBpbmcgaW4gYSBVUkwuCi0gICAgRVhQRUNUX1NUUkVR
KCJodHRwOi8vc2l0ZS5jb20lMjBvdGhlcnNpdGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmco
V2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgw
XHg4MG90aGVyc2l0ZS5vcmciLCBuaWwpKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0
ZS5jb20lMjBvdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmcoV2ViQ29yZTo6VVJMV2l0
aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5v
cmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20lMjBvdGhlcnNp
dGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5n
KEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCB1c2VyVmlz
aWJsZVN0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21c
eEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgbmlsKSkpOwogCiAgICAgLy8gQ29kZSBwYXRocyBz
aW1pbGFyIHRvIHRoZSBvbmVzIHVzZWQgZm9yIFVSTHMgZm91bmQgaW4gd2VicGFnZXMgb3IgSFRU
UCByZXNwb25zZXMuCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEUzXHg4MFx4
ODBvdGhlcnNpdGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcobGl0ZXJhbFVSTCgiaHR0cDov
L3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIpKSk7CkBAIC0xNzUsMzEgKzE3NSwz
MSBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKICAgICBFWFBFQ1RfU1RSRVEoImh0
dHA6Ly9zaXRlLmNvbSVFMyU4MCU4MG90aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhs
aXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb20lRTMlODAlODBvdGhlcnNpdGUub3JnIikpKTsKIAog
ICAgIC8vIFNlcGFyYXRlIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1l
IG9uIGl0cyBvd24uCi0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbSBvdGhlcnNpdGUub3JnIiwg
W1dlYkNvcmU6OmVuY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUu
b3JnIikgVVRGOFN0cmluZ10pOwotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb21ceEUzXHg4MFx4
ODBvdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEUz
XHg4MFx4ODBvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJFUSgi
c2l0ZS5jb20gb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmVuY29kZUhvc3ROYW1lKEAic2l0ZS5jb21c
eEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJF
USgic2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgW1dURjo6ZGVjb2RlSG9zdE5h
bWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CiB9
CiAKIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX0ZpbGUpCiB7Ci0gICAgRVhQRUNUX1NUUkVRKCJm
aWxlOi8vLyVFMiU5OCU4MyIsIFtbV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImZp
bGU6Ly8v4piDIiwgbmlsKSBhYnNvbHV0ZVN0cmluZ10gVVRGOFN0cmluZ10pOworICAgIEVYUEVD
VF9TVFJFUSgiZmlsZTovLy8lRTIlOTglODMiLCBbW1dURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmlu
ZyhAImZpbGU6Ly8v4piDIiwgbmlsKSBhYnNvbHV0ZVN0cmluZ10gVVRGOFN0cmluZ10pOwogfQog
CiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19QYXJzaW5nRXJyb3IpCiB7CiAgICAgLy8gRXhwZWN0
IElETiBmYWlsdXJlLgotICAgIE5TVVJMICp1cmwgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVk
U3RyaW5nKEAiaHR0cDovL++jvy5jb20iLCBuaWwpOworICAgIE5TVVJMICp1cmwgPSBXVEY6OlVS
TFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v76O/LmNvbSIsIG5pbCk7CiAgICAgRVhQRUNU
X1RSVUUodXJsID09IG5pbCk7CiAKLSAgICBOU1N0cmluZyAqZW5jb2RlZEhvc3ROYW1lID0gV2Vi
Q29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJodHRwOi8v76O/LmNvbSIpOworICAgIE5TU3RyaW5nICpl
bmNvZGVkSG9zdE5hbWUgPSBXVEY6OmVuY29kZUhvc3ROYW1lKEAiaHR0cDovL++jvy5jb20iKTsK
ICAgICBFWFBFQ1RfVFJVRShlbmNvZGVkSG9zdE5hbWUgPT0gbmlsKTsKIH0KIAogVEVTVChXZWJD
b3JlLCBVUkxFeHRyYXNfTmlsKQogewotICAgIE5TVVJMICp1cmwxID0gV2ViQ29yZTo6VVJMV2l0
aFVzZXJUeXBlZFN0cmluZyhuaWwsIG5pbCk7CisgICAgTlNVUkwgKnVybDEgPSBXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmcobmlsLCBuaWwpOwogICAgIEVYUEVDVF9UUlVFKHVybDEgPT0gbmls
KTsKIAotICAgIE5TVVJMICp1cmwyID0gV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZ0Rl
cHJlY2F0ZWQobmlsLCBuaWwpOworICAgIE5TVVJMICp1cmwyID0gV1RGOjpVUkxXaXRoVXNlclR5
cGVkU3RyaW5nRGVwcmVjYXRlZChuaWwsIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUodXJsMiA9PSBu
aWwpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Mb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbQppbmRleCA1MDVhZjM1N2U1
ZDEwMWQxNzZiNTIzZDE1NWE2Mjk0YmJlOGY3ZmRmLi45MGQ0NjEwYzc0MTA5OWZhZTRhNjBiZTk3
NzY1Y2MzZDdiMGVjZDQ0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0KQEAgLTMw
LDkgKzMwLDkgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRl
c3QuaCIKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIHN0YXRpYyBib29sIGlzRG9uZTsKIHN0
YXRpYyBpbnQgcHJvdmlzaW9uYWxMb2FkQ291bnQ7CkBAIC0xMTAsNyArMTEwLDcgQEAgVEVTVChX
S1dlYlZpZXcsIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nRnJvbVByb3Zpc2lvbmFsTG9hZEVycm9y
QmFja1RvQmFjaykKICAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKIAogICAgICAgICBjaGFyIGxpdGVyYWxbXSA9ICJodHRwczovL3d3dy5leGFt
cGxlLmNvbTw+LyI7Ci0gICAgICAgIE5TVVJMKiB0YXJnZXRVUkwgPSBXZWJDb3JlOjpVUkxXaXRo
RGF0YShbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bGl0ZXJhbCBsZW5ndGg6c3RybGVuKGxpdGVyYWwp
XSwgbmlsKTsKKyAgICAgICAgTlNVUkwqIHRhcmdldFVSTCA9IFdURjo6VVJMV2l0aERhdGEoW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7
CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6dGFyZ2V0VVJMXV07CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6dGFyZ2V0VVJMXV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVlc3Qu
bW0KaW5kZXggYWM5OGMxOTY0NDBhYjdiNTUwODRjOTVkNzhkMDlmZTdmYzc5N2UzYy4uZWFhNTVj
YWM2N2Y4ZTg0NDE0MzI3ZDRkYWUzMjYwOTY0NWQ5NWJhYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJl
cXVlc3QubW0KQEAgLTI4LDEwICsyOCwxMCBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4
dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvblByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQg
PHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hUZXN0Owog
c3RhdGljIGJvb2wgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZDsKQEAgLTM5LDcgKzM5LDcgQEAgc3Rh
dGljIGNvbnN0IGNoYXIgbGl0ZXJhbFtdID0gImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tPD4vIjsK
IAogc3RhdGljIE5TVVJMICpsaXRlcmFsVVJMKGNvbnN0IGNoYXIqIGxpdGVyYWwpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRlcmFs
IGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBuaWwpOworICAgIHJldHVybiBXVEY6OlVSTFdpdGhE
YXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCld
LCBuaWwpOwogfQogCiBAaW50ZXJmYWNlIExvYWRJbnZhbGlkVVJMTmF2aWdhdGlvbkFjdGlvbkRl
bGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5j
cHAKaW5kZXggYjA1MTQ1MjRmNzI1OTFmNmNiNTAyOTExMDMxYjdiZmE4YTNhZmEwNy4uMWJhYWU5
NWFjMDYyMzFmYmZiMjlhOGJhMTQxODc3NzJiNWFmM2FkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3Bw
CkBAIC0yMiw4ICsyMiw4IEBACiAKICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCiAjaW5j
bHVkZSAiV2ViVmlld1Rlc3QuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+
CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
U291cC5oPgogCiBzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1t
CmluZGV4IDhkNTRjYTZlMTllMGQ2OTk2MmE1ZjE1MzIzNTQyYWVmMjAzNTc1ZDEuLjg2YjdiM2M0
YTk5ODYzMGQyODVlNTE3OTVmYzhhZDY5ODFjZmM5MjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0KQEAgLTI2LDEw
ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQg
PFdlYktpdC9XS05hdmlnYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxF
eHRyYXMuaD4KIAogc3RhdGljIGJvb2wgZGlkRmluaXNoVGVzdDsKIHN0YXRpYyBib29sIGRpZEZh
aWxQcm92aXNpb25hbExvYWQ7CkBAIC01MSw3ICs1MSw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yOihOU0Vycm9yICop
ZXJyCiAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCk7
CiAKICAgICBzdGF0aWMgY2hhciBsaXRlcmFsW10gPSAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20k
LyI7Ci0gICAgTlNVUkwgKmZhaWxlZFVSTCA9IFdlYkNvcmU6OlVSTFdpdGhEYXRhKFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBuaWwpOworICAg
IE5TVVJMICpmYWlsZWRVUkwgPSBXVEY6OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRl
czpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBuaWwpOwogICAgIEVYUEVDVF9UUlVF
KFtlcnJvci51c2VySW5mb1tAIk5TRXJyb3JGYWlsaW5nVVJMS2V5Il0gaXNFcXVhbDpmYWlsZWRV
UkxdKTsKIAogICAgIGRpZEZhaWxQcm92aXNpb25hbExvYWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5R2VuZXJhdG9yLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5R2VuZXJhdG9yLm1tCmluZGV4IGRkZThjN2Qw
MWRhNjc4MDQxOTVjN2Y0MWUyOTExYTc4OWM3MDJjNTIuLmFjMWJmN2RiNmM5OGIwMmQyNTUyNjU5
NzJiYzI5OWRhMGM5ODdlZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL1NTTEtleUdlbmVyYXRvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9TU0xLZXlHZW5lcmF0b3IubW0KQEAgLTI5LDkgKzI5LDkgQEAKICNpbXBvcnQgPFNlY3VyaXR5
L1NlY0FzbjFUZW1wbGF0ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TU0xLZXlHZW5lcmF0b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1Njb3BlLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KIApAQCAtNjksNyArNjksNyBAQCBjb25z
dCBTZWNBc24xVGVtcGxhdGUgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlVGVtcGxhdGVbXSB7
CiAgICAgeyAwLCAwLCAwLCAwIH0KIH07CiAKLWNvbnN0IFdlYkNvcmU6OlVSTCB1cmwgPSBXZWJD
b3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIik7Citjb25z
dCBVUkwgdXJsID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy53ZWJraXQub3JnLyIpOwogCiBjbGFz
cyBTU0xLZXlHZW5lcmF0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4u
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCmlu
ZGV4IDhmNzU1YzMyYzhjMmUyZTBkMzc5ZDNlNWYwN2NjNmI5YmRjYzE4NjUuLjkxN2NiZWJjZWU1
NmM3YzE3NjQ4MjBmY2JkMWQwYjhmMzQ5MDY1NGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgPFNobHdhcGkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351483</attachid>
            <date>2018-10-02 23:39:55 -0700</date>
            <delta_ts>2018-10-03 00:35:34 -0700</delta_ts>
            <desc>Add Linux support</desc>
            <filename>bug-190234-20181003153953.patch</filename>
            <type>text/plain</type>
            <size>1274776</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2Y2I1MjQ5NmNlZGVkZGJhYjM0NDA0
Mjc5MzdlMWM4NmQ3YTg4ZjQuLmZlODg1ZjdkYjgxOTFjNTNhZDY5YmUzMjZmNmUyNGRiMTM4ZWE1
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUg
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAg
ICAgICAgKiB3dGYvVVJMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgICogd3Rm
L1VSTC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmguCisgICAg
ICAgICogd3RmL1VSTEhhc2guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTEhhc2guaC4KKyAgICAgICAgKFdURjo6VVJMSGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6
OlVSTEhhc2g6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvVVJMUGFyc2VyLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAuCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KToKKyAgICAgICAgKFdURjo6VVJMUGFy
c2VyOjpwYXJzZUF1dGhvcml0eSk6CisgICAgICAgICogd3RmL1VSTFBhcnNlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmguCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpyZXN1bHQp
OgorICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4dHJhcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAuCisgICAgICAgICogd3RmL2NmL0NG
VVJMRXh0cmFzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVS
TEV4dHJhcy5oLgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAuCisgICAgICAgICogd3RmL2NvY29hL05T
VVJMRXh0cmFzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRy
YXMubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0uCisgICAgICAgIChXVEY6OmlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIp
OgorICAgICAgICAoV1RGOjppc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdU
Rjo6aXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjppc0xv
b2thbGlrZUNoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OndoaXRlTGlzdElETlNjcmlwdCk6Cisg
ICAgICAgIChXVEY6OnJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKToKKyAgICAgICAgKFdURjo6
YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KToKKyAgICAgICAgKFdURjo6aXNTZWNv
bmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyk6CisgICAgICAgIChXVEY6OmlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjphbGxDaGFyYWN0ZXJzQWxs
b3dlZEJ5VExEUnVsZXMpOgorICAgICAgICAoV1RGOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6Cisg
ICAgICAgIChXVEY6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChX
VEY6Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChXVEY6OmRlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKToKKyAgICAgICAgKFdURjo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFu
Z2UpOgorICAgICAgICAoV1RGOjpkZWNvZGVIb3N0TmFtZSk6CisgICAgICAgIChXVEY6OmVuY29k
ZUhvc3ROYW1lKToKKyAgICAgICAgKFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyk6
CisgICAgICAgIChXVEY6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKToKKyAgICAgICAg
KFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcpOgorICAgICAgICAoV1RGOjphcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6CisgICAgICAgIChXVEY6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKToKKyAgICAgICAgKFdURjo6bWFwSG9zdE5hbWVz
KToKKyAgICAgICAgKFdURjo6c3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOgorICAgICAgICAo
V1RGOjpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOgorICAgICAg
ICAoV1RGOjpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIpOgorICAgICAgICAoV1RGOjpV
UkxXaXRoRGF0YSk6CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKToKKyAg
ICAgICAgKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyk6CisgICAgICAgIChXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKToKKyAgICAgICAgKFdURjo6aGFzUXVlc3Rpb25N
YXJrT25seVF1ZXJ5U3RyaW5nKToKKyAgICAgICAgKFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5
cGUpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENo
YXJhY3Rlcik6CisgICAgICAgIChXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6CisgICAgICAg
IChXVEY6Om9yaWdpbmFsVVJMRGF0YSk6CisgICAgICAgIChXVEY6OmNyZWF0ZVN0cmluZ1dpdGhF
c2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KToKKyAgICAgICAgKFdURjo6aXNVc2VyVmlzaWJsZVVSTCk6CisgICAgICAgIChXVEY6OnJhbmdl
T2ZVUkxTY2hlbWUpOgorICAgICAgICAoV1RGOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6CisgICAg
ICAgICogd3RmL2NvY29hL1VSTENvY29hLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VSTE1hYy5tbS4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOgorICAgICAg
ICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2xpYi9HVW5p
cXVlUHRyU291cC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0dVbmlxdWVQdHJTb3VwLmguCisgICAgICAgICogd3RmL2dsaWIvVVJMU291cC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwLgor
CiAyMDE4LTEwLTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBb
bWFjT1NdIFN3aXRjaGluZyB0byBkaXNjcmV0ZSBHUFUgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIFVJ
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOWQzMGE0OGM5Y2M2NzczN2Y2Y2ZlY2VkYjRmYWFmMGEx
YTE4MjEwLi4wMDJhMDFlMjZjZWE3NzY4MzY3YTJiZTY0YTBjMTBlNDQzODZjNGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTQwIEBACisyMDE4LTEwLTAyICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRv
IFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkw
MjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBV
UkwgaXMgYSBsb3ctbGV2ZWwgY29uY2VwdCB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbiBvdGhlciBj
bGFzc2VzIGluIFdlYkNvcmUuCisgICAgICAgIFdlIGFyZSBzdGFydGluZyB0byB1c2UgVVJMcyBp
biBKYXZhU2NyaXB0Q29yZSBmb3IgbW9kdWxlcy4KKyAgICAgICAgSSBuZWVkIFVSTCBhbmQgVVJM
UGFyc2VyIGluIGEgcGxhY2Ugd2l0aCBmZXdlciBkZXBlbmRlbmNpZXMgZm9yIHJkYXI6Ly9wcm9i
bGVtLzQ0MTE5Njk2CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50
RXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5j
cHA6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVs
ZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5oOgor
ICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAgICAgICAg
KiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTTWFwTGlrZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVh
ZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0Nv
bnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNp
b25SdWxlc0ZvclBpbmdMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjphcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVS
ZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3NzL1N0
eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+Ojpjb25zdHJ1
Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg6
CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb21wbGV0ZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5z
dXJlVGVtcGxhdGVEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dXJsRm9yQmluZGluZ3MgY29uc3QpOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzSmF2YVNjcmlwdFVS
TEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJDb250ZXh0Rm9yRWxlbWVudCk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YmFzZVVSSSBjb25zdCk6
CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5oOgor
ICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZG9tL1Nl
Y3VyaXR5Q29udGV4dC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTCk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRRdW90ZWRVUkxBdHRyaWJ1
dGVWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgICogZWRp
dGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU3VicmVzb3VyY2VVUkxB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCk6
CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHA6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaDoKKyAgICAg
ICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JVUkwuY3BwOgorICAg
ICAgICAqIGZpbGVhcGkvQmxvYlVSTC5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAg
ICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuaDoK
KyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgICogaHRtbC9ET01VUkwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
RE9NVVJMLmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVuVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbik6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RG
OjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50
PFdlYkNvcmU6OlVSTD46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0
bWFwLmg6CisgICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmg6CisgICAgICAg
ICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1h
bmFnZXIuaDoKKyAgICAgICAgKiBodG1sL1VSTElucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRt
bC9VUkxSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6VVJMU2VhcmNoUGFyYW1zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9tQXNzb2NpYXRlZFVSTCk6CisgICAgICAgICogaHRt
bC9VUkxVdGlscy5oOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldEhvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldFBvcnQpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNlbWljb2xvblNlcGFyYXRlZFZhbHVlQ29udGFpbnNKYXZhU2NyaXB0
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpY
U1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZmlsdGVySW5wdXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0
ZXJCdXR0b25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmlzTGlrZWx5U2FmZVJlc291cmNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9y
Lmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24u
aDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnJlY2VpdmVkRmlyc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250
aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0pOgorICAgICAgICAq
IGxvYWRlci9MaW5rTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0xvYWRUaW1pbmcuaDoKKyAg
ICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvTWl4ZWRD
b250ZW50Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVja2Vy
OjpjaGVja0Zvcm1Gb3JNaXhlZENvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2hvdWxkU2NoZWR1
bGVOYXZpZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5oOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZEluZm8uaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
VGltaW5nLmg6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAqIGxvYWRl
ci9TdWJmcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L01hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQ
YXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9u
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW06CisgICAgICAgICogcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvQ29u
dGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFi
bGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNzKToKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0V2ZW50U291cmNlLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9IaXN0b3J5Lmg6CisgICAgICAg
ICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6dXJsIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAqIHBh
Z2UvTG9jYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5oOgorICAgICAgICAq
IHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHA6CisgICAgICAgICogcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5oOgor
ICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9Tb2NrZXRQcm92aWRl
ci5oOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oOgorICAgICAgICAqIHBh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5oOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5oOgorICAgICAgICAqIHBh
Z2UvVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBwYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaDoK
KyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Lmg6CisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9E
cmFnRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MaW5rSWNvbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6Y2FuRXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmg6CisgICAgICAgICogcGxh
dGZvcm0vU291cmNlc1NvdXAudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vVXNlckFnZW50UXVpcmtzLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2Vk
U2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKHdlYktpdE1lZGlhU3JjU2V0VXJpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnSW1h
Z2VHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzUGxhaW5U
ZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUHVibGljU3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5h
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjppc0FybWVu
aWFuTG9va2FsaWtlQ2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQXJt
ZW5pYW5TY3JpcHRDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBU0NJ
SURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
aXNMb29rYWxpa2VDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d2hpdGVM
aXN0SUROU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJRE5TY3JpcHRX
aGl0ZUxpc3RGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFsbENoYXJhY3RlcnNJ
bklETlNjcmlwdFdoaXRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1NlY29u
ZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6YWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Om1hcEhvc3ROYW1lV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW5j
b2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFJhbmdlc1Ro
YXROZWVkTWFwcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFuZ2Vz
VGhhdE5lZWRFbmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFu
Z2VzVGhhdE5lZWREZWNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseUhv
c3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjphcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjptYXBIb3N0TmFtZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c3Ry
aW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJM
QnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpVUkxXaXRoRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3Rlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpVUkxCeVJlbW92aW5nVXNlckluZm8pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6b3JpZ2luYWxVUkxEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc1VzZXJWaXNpYmxlVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJh
bmdlT2ZVUkxTY2hlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9va3NMaWtlQWJz
b2x1dGVVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JQYXJ0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVz
dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94
eVNlcnZlckN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Byb3h5U2VydmVyU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRF
bmNvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vQlN0cmluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICogcGx1Z2lu
cy9QbHVnaW5EYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHA6CisgICAgICAgICogc3ZnL1NW
R0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjpzb3Vy
Y2VVUkkgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNhY2hlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dXNlclZpc2libGVTdHJp
bmcpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUp
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCiAyMDE4LTEwLTAyICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWVzc2FnZUV2ZW50LnBvcnRzIHNo
b3VsZCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwNTk2NDRhMDViYTNmZjRh
NGJiNjc4YTE5ZjJkMDQxNjc2MTI0NWQuLjRhYjQ1NDAwNmRkMWM3ZGVjNTYwOTdlOWY5MGJkYTU2
YjZlOTYxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgyIEBACisyMDE4LTEwLTAyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwg
ZnJvbSBXZWJDb3JlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6OmJsb2JTaXplKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNr
ZXI6OnNldENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWRDaGVja2VyOjp1cmwgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndyaXRl
QmxvYlRvRmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlY29u
bmVjdFRvKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
bG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRTdHJlYW06
OmNyZWF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3RpY3M6
OnJlY29yZFJldHJpZXZlZENhY2hlZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTdGF0aXN0aWNzOjpyZWNvcmRSZXZhbGlkYXRpb25TdWNjZXNzKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5mbzo6Zmlyc3RQYXJ0eUZv
ckNvb2tpZXMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVFdmVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXF1
ZXN0OjpvcGVyYXRvciBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6UmVzcG9uc2U6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6RXJy
b3I6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY29uc3QpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6OmZpbmRCZXN0RnV6enlNYXRjaCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjp1cmxJZGVudGlmeWlu
Z0NvbW1vbkRvbWFpbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3Jr
Q2FwdHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6
UmVzb3VyY2U6OnVybCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXNvdXJj
ZTo6cXVlcnlQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05l
dHdvcmtDYXB0dXJlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtT
ZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6b3BlbkNGVVJMUmVmKToKKyAgICAgICAgKFdlYktp
dDo6cmVwbGFjZWROU1dvcmtzcGFjZV9sYXVuY2hBcHBsaWNhdGlvbkF0VVJMX29wdGlvbnNfY29u
ZmlndXJhdGlvbl9lcnJvcik6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwuaDoKKyAgICAg
ICAgKEFQSTo6VVJMOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpVUkw6OmVxdWFscyk6CisgICAg
ICAgIChBUEk6OlVSTDo6VVJMKToKKyAgICAgICAgKEFQSTo6VVJMOjp1cmwgY29uc3QpOgorICAg
ICAgICAoQVBJOjpVUkw6OnBhcnNlVVJMSWZOZWNlc3NhcnkgY29uc3QpOgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg6CisgICAgICAgIChBUEk6OlVzZXJD
b250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1VSTCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQ
SS9jL1dLVVJMUmVxdWVzdC5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9u
c2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAo
V0tVUkxDcmVhdGVXaXRoQ0ZVUkwpOgorICAgICAgICAoV0tVUkxDb3B5Q0ZVUkwpOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6
V2ViQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbToKKyAgICAg
ICAgKC1bTlNVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtOjppdGVtSXNJblNhbWVEb2N1bWVudCBjb25zdCk6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJFcnJvcnMuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9j
Zi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHA6Cisg
ICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlv
bjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbi5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjp0YWtlUmVkaXJlY3RDaGFpbik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5h
dmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyk6CisgICAg
ICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGljeSBjb25zdCk6
CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kg
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAg
KEFQSTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJT
Y3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTY3JpcHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwOgorICAgICAgICAoZmls
ZVBhdGhzRnJvbUZpbGVVUkxzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cDoKKyAgICAgICAgKFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEpOgorICAg
ICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZp
Z2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3Bw
OgorICAgICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXS1Bh
Z2VHcm91cEFkZFVzZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2Vlbik6CisgICAgICAgIChXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6Cisg
ICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVz
b3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJl
ZEFzU3VicmVzb3VyY2VVbmRlcik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZy
b20pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tIVFRQQ29va2llU3RvcmUubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJTY3JpcHQubW06CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6
aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFj
a2xpc3Q6YXNzb2NpYXRlZFVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmZvclVSTFNjaGVtZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiB1cmxTY2hlbWVIYW5kbGVyRm9yVVJM
U2NoZW1lOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5p
ZmVzdC5tbToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBpbml0V2l0aENvZGVy
Ol0pOgorICAgICAgICAoK1tfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZl
c3RGcm9tSlNPTjptYW5pZmVzdFVSTDpkb2N1bWVudFVSTDpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5
bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDps
ZWdhY3lCbGFja2xpc3Q6YmFzZVVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9jb29raWVf
bWFuYWdlcl9nZXRfY29va2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEZpbGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5f
bmV3X2Zvcl91cmkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVu
dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQ
YXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
dmFsaWRhdGVNZXJjaGFudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29h
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBw
bGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjpuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OmRvbWFp
bkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9Eb3dubG9hZENsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRp
ZEZpbmlzaCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpyZXNvbHZlV2ViR0xMb2FkUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1bHQ6OlNhZmVCcm93c2luZ1Jlc3Vs
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW06CisgICAgICAgICgtW19XS1ByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBmaW5pc2g6
XSk6CisgICAgICAgIChXZWJLaXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2gpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIpOgorICAgICAgICAoV2ViS2l0
OjpyZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMpOgorICAgICAgICAoV2Vi
S2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3Jp
Z2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3Zl
cnlBdHRlbXB0ZXIubW06CisgICAgICAgICgtW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0
ZW1wdGVyIGF0dGVtcHRSZWNvdmVyeV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVRvVVJMRm9yRmls
ZVByb21pc2VQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldFJlZGlyZWN0Q2hh
aW4pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpyZWRpcmVjdENoYWluIGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1
bWVudE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpzZXRV
bnJlYWNoYWJsZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjp1cmwgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRTdGF0ZTo6cHJvdmlzaW9uYWxVUkwgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRTdGF0ZTo6dW5yZWFjaGFibGVVUkwgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VMb2FkU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpo
YXNPbmx5U2VjdXJlQ29udGVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
SW5mb1N0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5
TWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaDoKKyAgICAg
ICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nUmVzdWx0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpTYWZlQnJvd3NpbmdSZXN1bHQ6OnVybCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdD
b250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lUHJveHk6OnVybCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJv
eHk6OnByb3Zpc2lvbmFsVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94
eTo6dW5yZWFjaGFibGVVUkwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGVudFJ1bGVM
aXN0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNz
RGlkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRl
cm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW06CisgICAgICAgICgtW1dLQWN0
aW9uU2hlZXRBc3Npc3RhbnQgX2NyZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25zOnNob3dMaW5r
VGl0bGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hh
cmVFbGVtZW50V2l0aFVSTDpyZWN0Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmVz
ZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxlcjpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1b
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbToKKyAgICAgICAg
KC1bV0tMZWdhY3lQREZWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhV
Ukw6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAg
ICAgKC1bV0tQREZWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6
cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlciBfdXBkYXRlTG9jYXRpb25JbmZvXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9M
ZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVMZWdh
Y3lTZXNzaW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIg
X2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlTWVyY2hhbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2Fk
RGF0YVJlcXVlc3QpOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNs
aWVudDo6dXNlckFnZW50Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwOgorICAgICAgICAoV0tCdW5kbGVGcmFt
ZUFsbG93c0ZvbGxvd2luZ0xpbmspOgorICAgICAgICAoV0tCdW5kbGVGcmFtZUNvcHlTdWdnZXN0
ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTCk6CisgICAgICAgIChXS0J1bmRsZUZyYW1lQ29w
eU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VI
YXNMb2NhbERhdGFGb3JVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5jcHA6CisgICAgICAgIChjb252ZXJ0VG9V
VEY4U3RyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNv
Y2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNsaWNrZWRMaW5rKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1VUkxSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1
Z2luSW5mbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92
aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9t
TG9jYWxVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRD
U1BWaW9sYXRpb25SZXBvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRVc2VyU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
aW50T3BlcmF0aW9uR3RrOjpmcmFtZVVSTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKToK
KwogMjAxOC0xMC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIERlcHJlY2F0ZSBXS0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5k
ZXggMTRjNjIwYWFhYjFiN2ExNTY4NTVkY2Q3YTYzOGE2MGQzOGVkMTM1OC4uNDg4ZWM4OTg0Y2Q5
OTlmMGMxZWU5MWFjNjY2MGMwMjQyYjEyMTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxOC0xMC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKwogMjAxOC0xMC0wMSAgRGVhbiBKYWNrc29u
ICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBTd2l0Y2hpbmcgdG8gZGlzY3Jl
dGUgR1BVIHNob3VsZCBiZSBkb25lIGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggY2UzMWU3MzgxYjg5ZDhkOGQ2NjhiZmIxNDRiMzIyYzg4ZTc2OWY2NS4u
NjlkZDJmYzk4ZTMxOWZmMTE4NzA5NzNkYmQyNDg4ODNjMGEyZjBlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxOC0xMC0wMiAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20g
V2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTUF0dHIubW06CisgICAgICAgICogRE9NL0RPTUJsb2IubW06CisgICAg
ICAgICogRE9NL0RPTUNTU0NoYXJzZXRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NJbXBv
cnRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NNZWRpYVJ1bGUubW06CisgICAgICAgICog
RE9NL0RPTUNTU1BhZ2VSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NQcmltaXRpdmVWYWx1
ZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTUnVsZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbi5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVSdWxlLm1tOgor
ICAgICAgICAqIERPTS9ET01DU1NTdHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9ET01DU1NW
YWx1ZS5tbToKKyAgICAgICAgKiBET00vRE9NQ2hhcmFjdGVyRGF0YS5tbToKKyAgICAgICAgKiBE
T00vRE9NQ291bnRlci5tbToKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3VtZW50
VHlwZS5tbToKKyAgICAgICAgKiBET00vRE9NRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTUZp
bGUubW06CisgICAgICAgICogRE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEFyZWFF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQlJFbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MQmFzZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCYXNlRm9u
dEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxD
YW52YXNFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQ29sbGVjdGlvbi5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTERpdkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxE
b2N1bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGaWVsZFNl
dEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRnJh
bWVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tOgor
ICAgICAgICAqIERPTS9ET01IVE1MSFJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
SGVhZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MSUZyYW1lRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEltYWdlRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTElucHV0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00v
RE9NSFRNTExJRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTExhYmVsRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxMaW5rRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1hcEVsZW1lbnQu
bW06CisgICAgICAgICogRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTE1lZGlhRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1ldGFFbGVt
ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MTW9kRWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTE9MaXN0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9iamVjdEVs
ZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
T3B0aW9uc0NvbGxlY3Rpb24ubW06CisgICAgICAgICogRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVt
ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MUGFyYW1FbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MUXVvdGVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MU2NyaXB0
RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxTdHlsZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxU
YWJsZUNhcHRpb25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVDZWxsRWxl
bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRh
YmxlUm93RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxWaWRlb0Vs
ZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUtleWJvYXJkRXZlbnQubW06CisgICAgICAgICog
RE9NL0RPTU1lZGlhTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9NTW91c2VFdmVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NTXV0YXRpb25FdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTmFtZWRO
b2RlTWFwLm1tOgorICAgICAgICAqIERPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW06Cisg
ICAgICAgICogRE9NL0RPTVJhbmdlLm1tOgorICAgICAgICAqIERPTS9ET01TdHlsZVNoZWV0Lm1t
OgorICAgICAgICAqIERPTS9ET01UZXh0Lm1tOgorICAgICAgICAqIERPTS9ET01UZXh0RXZlbnQu
bW06CisgICAgICAgICogRE9NL0RPTVRva2VuTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9NVUlF
dmVudC5tbToKKyAgICAgICAgKiBET00vRE9NWFBhdGhSZXN1bHQubW06CisgICAgICAgICogSGlz
dG9yeS9XZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFzLm1t
OgorICAgICAgICAoLVtOU1VSTCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nXSk6CisgICAgICAgICgt
W05TVVJMIF93ZWJfVVJMQnlSZW1vdmluZ1VzZXJJbmZvXSk6CisgICAgICAgICgtW05TVVJMIF93
ZWJfZGF0YUZvclVSTENvbXBvbmVudFR5cGU6XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfc2No
ZW1lRGF0YV0pOgorICAgICAgICAoLVtOU1VSTCBfd2ViX2hvc3REYXRhXSk6CisgICAgICAgICog
TWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW06CisgICAgICAgICogUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAqIFBsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFt
OjpzZXRSZXF1ZXN0VVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyBj
b25zdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1
cGRhdGVHbG9iYWxIaXN0b3J5KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50
Q29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50
Q29vcmRpbmF0b3JDbGllbnQubW06CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JDbGll
bnQ6OnNob3dQYXltZW50VUkpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW06Cisg
ICAgICAgIChXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAg
ICgtW1dlYkZyYW1lIF9sb2FkRGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6
dW5yZWFjaGFibGVVUkw6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9k
ZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmll
dy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisKIDIwMTgtMTAtMDEgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gU3dpdGNoaW5nIHRvIGRpc2NyZXRl
IEdQVSBzaG91bGQgYmUgZG9uZSBpbiB0aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCmluZGV4IGVjODJkNDlhY2ZmYjc5MTQ1YWYzM2M0MjU5M2EzYzBhZWI0YWRlOGIuLjll
NGQ2N2FhMWViMWIyODgyOWI3OTY4Yzk5MWNmZTNhOTcwMDQwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOC0xMC0wMiAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2Vi
Q29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmNwcDoKKyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBl
cnMuaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpbkRhdGFiYXNlLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZVdpbi5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGUuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5jcHA6CisgICAgICAgIChXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5J
bmZvKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAg
ICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAg
KiBXZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAg
ICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgICogV2ViSGlzdG9yeS5oOgorICAgICAgICAq
IFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6Cisg
ICAgICAgICogV2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIFdlYlVSTFJlc3BvbnNl
LmNwcDoKKyAgICAgICAgKFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAg
ICogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisK
IDIwMTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgUGFyc2VkVVJMU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjY2YyOTQ2YTlkYTVmYzg2MGYzNThjZDMwZWM5YjM2OGY1
MGQ2ZjY5Li44ZTVmY2VkZmI1MWE1MjZjZTdlZTRkMTgxZGM4ZTA3OTA2NTE2MGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc2LDYgKzc2LDEyIEBACiAJ
CTUzMTFCRDUzMUVBNzFDQUQwMDUyNTI4MSAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTFCRDUxMUVBNzFDQUQwMDUyNTI4MSAv
KiBTaWduYWxzLmNwcCAqLzsgfTsKIAkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVh
ZE1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMUJENUIxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwICovOyB9Owog
CQk1MzUzNEYyQTFFQzBFMTBFMDAxNDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTM0RjI5MUVDMEUxMEUw
MDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKENsaWVudCwgU2VydmVyLCApOyB9OyB9OworCQk1QzFGMDU5MzIxNjQzNTZCMDAzOTMwMkMg
LyogQ0ZVUkxFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMxRjA1OTEyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLzsg
fTsKKwkJNUMxRjA1OTUyMTY0MzdCMzAwMzkzMDJDIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUYwNTk0MjE2NDM3QjMwMDM5MzAy
QyAvKiBVUkxDRi5jcHAgKi87IH07CisJCTVDQzBFRTc1MjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQ
YXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNDMEVFNzMyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5jcHAgKi87IH07CisJCTVDQzBF
RTc2MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFNzQyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAg
Ki87IH07CisJCTVDQzBFRTg5MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTg2MjE2MkJDMjIw
MEExQTg0MiAvKiBVUkxDb2NvYS5tbSAqLzsgfTsKKwkJNUNDMEVFOEEyMTYyQkMyMjAwQTFBODQy
IC8qIE5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNDMEVFODgyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tICovOyB9
OwogCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUx
MzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBFQ0E2MEQxQjAyNDI2
ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MEExQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21p
Y1N0cmluZ0ltcGwuY3BwICovOyB9OwogCQk3QTA1MDkzRjFGQjlEQ0M1MDBCMzNGQjggLyogSlNP
TlZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTA1MDkzRTFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVlcy5jcHAgKi87IH07CkBAIC0z
NzIsNyArMzc4LDE5IEBACiAJCTU1MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGlueUxSVUNhY2hlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1OTdGODJDMUQ5NEI5OTcwMDY2QkMyMSAvKiBT
eW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN5bmNocm9uaXplZEZpeGVkUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUI0MzM4M0E1RDBCNDYzQzk0MzNEOTMzIC8qIEluZGV4TWFwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluZGV4TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDMUYwNTkxMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRlVSTEV4dHJhcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDMUYwNTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRlVSTEV4dHJhcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QzFGMDU5NDIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0Yu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMQ0YuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzFGMDU5NzIxNjQzOTk0MDAzOTMwMkMgLyogVVJM
SGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlx
dWVSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlUmVmLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTcxMjE2MjlGMTgwMEExQTg0MiAvKiBV
UkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTcyMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMUGFyc2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTczMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJz
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzQyMTYyOUYxOTAwQTFBODQy
IC8qIFVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3NzIxNjJBMDEwMDBBMUE4NDIg
LyogVVJMSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAv
KiBVUkxDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVS
TENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU4NzIxNjJCQzIy
MDBBMUE4NDIgLyogTlNVUkxFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTlNVUkxFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFODgy
MTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTlNVUkxFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUlu
SW5kZXggPSAwOyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTVEMjQ3QjZFMTQ2ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVE
MjQ3QjcwMTQ2ODlDNDcwMEU3OEI3NiAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzIwLDkgKzczOCwxMiBAQAogCQkyQ0RFRDBGMDE4MTE1QzNGMDA0REJBNzAgLyogY2YgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDMUYwNTkxMjE2
NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8sCisJCQkJNUMxRjA1OTIyMTY0MzU2
QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmggKi8sCiAJCQkJQzJCQ0ZDNDExRjYxRDYxNjAwQzky
MjJDIC8qIExhbmd1YWdlQ0YuY3BwICovLAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAv
KiBSdW5Mb29wQ0YuY3BwICovLAogCQkJCTFBRkRFNjQ3MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBl
Q2FzdHNDRi5oICovLAorCQkJCTVDMUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTExMzEsNiArMTE1MiwxMiBAQAogCQkJCUUzMDBFNTIxMjAzRDY0NUYwMERBNzlCRSAvKiBVbmlx
dWVBcnJheS5oICovLAogCQkJCTVDN0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlxdWVSZWYu
aCAqLywKIAkJCQlDRDc2MDBGRjFGOTBBM0NBMDAwMjZFMjYgLyogVW5zYWZlUG9pbnRlci5oICov
LAorCQkJCTVDQzBFRTc0MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwICovLAorCQkJCTVDQzBF
RTcxMjE2MjlGMTgwMEExQTg0MiAvKiBVUkwuaCAqLywKKwkJCQk1QzFGMDU5NzIxNjQzOTk0MDAz
OTMwMkMgLyogVVJMSGFzaC5oICovLAorCQkJCTVDQzBFRTc3MjE2MkEwMTAwMEExQTg0MiAvKiBV
UkxIYXNoLmggKi8sCisJCQkJNUNDMEVFNzMyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5j
cHAgKi8sCisJCQkJNUNDMEVFNzIyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5oICovLAog
CQkJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAqLywKIAkJCQk3QUZFQzZB
RTFFQjIyQUM2MDBEQURFMzYgLyogVVVJRC5oICovLAogCQkJCUE4QTQ3MzZGMTUxQTgyNUIwMDQx
MjNGRiAvKiBWYWx1ZUNoZWNrLmggKi8sCkBAIC0xMzU0LDcgKzEzODEsMTAgQEAKIAkJCQlBOEE0
NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZENvY29hLm1tICovLAogCQkJCUFERjJD
RTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgKi8sCiAJCQkJ
QUQ4OUI2QjkxRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1t
ICovLAorCQkJCTVDQzBFRTg3MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5oICovLAor
CQkJCTVDQzBFRTg4MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSAqLywKIAkJCQlB
MzBENDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLywKKwkJCQk1Q0MwRUU4
NjIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0gKi8sCiAJCQkJRTRBMEFEM0MxQTk2MjUz
QzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29j
b2E7CkBAIC0xNDgxLDYgKzE1MTEsNyBAQAogCQkJCUE4QTQ3MzhCMTUxQTgyNUIwMDQxMjNGRiAv
KiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMy
Mzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNB
QzE1MUE4MjVCMDA0MTIzRkYgLyogY2FjaGVkLXBvd2Vycy5jYyBpbiBTb3VyY2VzICovLAorCQkJ
CTVDMUYwNTkzMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjY2QjI4QTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4QTQ3NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxh
dG9ySUNVLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTUzMiw2ICsxNTYzLDcgQEAKIAkJCQlBRDg5
QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI4QzFEQzk3QkFCMDA0QTFEM0YgLyogTW9u
b3RvbmljVGltZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0MwRUU4QTIxNjJCQzIyMDBBMUE4
NDIgLyogTlNVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNDE1MUE4MjVC
MDA0MTIzRkYgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNG
NzE1MUE4MjVCMDA0MTIzRkYgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNGOTE1MUE4MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0xNTg1LDYgKzE2MTcsMTAgQEAKIAkJCQk1MzExQkQ1QzFFQTgyMkY5MDA1
MjUyODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MDFE
Qzk3QkFCMDA0QTFEM0YgLyogVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNzA3NUY1MUZCRjUzQ0QwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1Q0MwRUU3NjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTVDMUYwNTk1MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1Q0MwRUU4OTIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1Q0MwRUU3NTIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzhGMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4
dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzkxMUQzMDdBQjgwMEY1RkEx
NiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzkz
MUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDM5Y2MxOTk5NjkyNWExMmRjMzRkZTA3MzRiOWYyOTZl
ZGE0N2NmNDAuLjI4OTIxYmM4ZDI0ZjQ5ZTM1ZjFmMzc3NmI3YWM2ZTc0ODI5NGMxZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CkBAIC0yNDAsNiArMjQwLDkgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVS
UwogICAgIFRpbnlQdHJTZXQuaAogICAgIFRyaVN0YXRlLmgKICAgICBUeXBlQ2FzdHMuaAorICAg
IFVSTC5oCisgICAgVVJMSGFzaC5oCisgICAgVVJMUGFyc2VyLmgKICAgICBVVUlELmgKICAgICBV
bmFsaWduZWRBY2Nlc3MuaAogICAgIFVuZXhwZWN0ZWQuaApAQCAtMzkyLDYgKzM5NSw4IEBAIHNl
dChXVEZfU09VUkNFUwogICAgIFRocmVhZGluZy5jcHAKICAgICBUaW1lV2l0aER5bmFtaWNDbG9j
a1R5cGUuY3BwCiAgICAgVGltaW5nU2NvcGUuY3BwCisgICAgVVJMLmNwcAorICAgIFVSTFBhcnNl
ci5jcHAKICAgICBVVUlELmNwcAogICAgIFdURkFzc2VydGlvbnMuY3BwCiAgICAgV2FsbFRpbWUu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RGL3d0
Zi9Gb3J3YXJkLmgKaW5kZXggZWU1MWM3MzIxOGYxZmZiOWU1MjUwYjY1ZmQ1YmY1Mzg4MjdhZmVl
Mi4uNGJlZjgxMGNjMTA4NjcyZDk4Mjk2OGNiNTkzNWJhMjQwMjcwNjRmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApA
QCAtNDMsNiArNDMsNyBAQCBjbGFzcyBTdHJpbmdWaWV3OwogY2xhc3MgVGV4dFBvc2l0aW9uOwog
Y2xhc3MgVGV4dFN0cmVhbTsKIGNsYXNzIFVuaXF1ZWRTdHJpbmdJbXBsOworY2xhc3MgVVJMOwog
Y2xhc3MgV2FsbFRpbWU7CiAKIHN0cnVjdCBGYXN0TWFsbG9jOwpAQCAtMTA5LDYgKzExMCw3IEBA
IHVzaW5nIFdURjo6U3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6U3RyaW5nVmlldzsKIHVzaW5nIFdU
Rjo6VGV4dFBvc2l0aW9uOwogdXNpbmcgV1RGOjpUZXh0U3RyZWFtOwordXNpbmcgV1RGOjpVUkw7
CiB1c2luZyBXVEY6OlZhcmlhbnQ7CiB1c2luZyBXVEY6OlZlY3RvcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUdUSy5jbWFrZQppbmRleCA0NjkwM2MzNjQyOWNlYjcyNmExMTE5MzNhZTJmYjM1MDQ4OGRmMjI1
Li40MWM4OTU0OTE4ODI5YzdlMDdlZmVjOGRhOTU3MWE2NjZmNjgyNTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUdUSy5jbWFrZQpAQCAtNiw2ICs2LDcgQEAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFE
RVJTCiAgICAgZ2xpYi9HUmVmUHRyLmgKICAgICBnbGliL0dUeXBlZGVmcy5oCiAgICAgZ2xpYi9H
VW5pcXVlUHRyLmgKKyAgICBnbGliL0dVbmlxdWVQdHJTb3VwLmgKICAgICBnbGliL1J1bkxvb3BT
b3VyY2VQcmlvcml0eS5oCiAgICAgZ2xpYi9XVEZHVHlwZS5oCiAKQEAgLTIxLDYgKzIyLDcgQEAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAg
Z2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCisgICAgZ2xpYi9VUkxT
b3VwLmNwcAogCiAgICAgbGludXgvQ3VycmVudFByb2Nlc3NNZW1vcnlTdGF0dXMuY3BwCiAgICAg
bGludXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwCkBAIC0zNyw5ICszOSwxMSBAQCBsaXN0KEFQ
UEVORCBXVEZfTElCUkFSSUVTCiAgICAgJHtHTElCX0dJT19MSUJSQVJJRVN9CiAgICAgJHtHTElC
X0dPQkpFQ1RfTElCUkFSSUVTfQogICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAgJHtMSUJTT1VQ
X0xJQlJBUklFU30KICAgICAke1pMSUJfTElCUkFSSUVTfQogKQogCiBsaXN0KEFQUEVORCBXVEZf
U1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAg
ICR7TElCU09VUF9JTkNMVURFX0RJUlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4
IGY0ZDUyNmU1NzFiOTMyMjk0ZWFhMzQyOWEzNDA0OTEwZTcxOTE0MjEuLmEwMThmOTI5ZWY1NTJl
ZTI0MjExNTY1ZjFhNzllZjBiM2MzZTU2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBA
IC04LDEwICs4LDEyIEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICkKIAogbGlzdChBUFBF
TkQgV1RGX1BVQkxJQ19IRUFERVJTCisgICAgY2YvQ0ZVUkxFeHRyYXMuaAogICAgIGNmL1R5cGVD
YXN0c0NGLmgKIAogICAgIGNvY29hL0VudGl0bGVtZW50cy5oCiAgICAgY29jb2EvTWFjaFNlbmRS
aWdodC5oCisgICAgY29jb2EvTlNVUkxFeHRyYXMuaAogICAgIGNvY29hL1NvZnRMaW5raW5nLmgK
IAogICAgIGRhcndpbi9XZWFrTGlua2luZy5oCkBAIC0zOCw4ICs0MCwxMCBAQCBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUwogICAgIFNjaGVkdWxlUGFpckNGLmNwcAogICAgIFNjaGVkdWxlUGFpck1h
Yy5tbQogCisgICAgY2YvQ0ZVUkxFeHRyYXMuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAg
ICBjZi9SdW5Mb29wQ0YuY3BwCisgICAgY2YvVVJMQ0YuY3BwCiAKICAgICBjb2NvYS9BdXRvZHJh
aW5lZFBvb2wuY3BwCiAgICAgY29jb2EvQ1BVVGltZUNvY29hLmNwcApAQCAtNDgsNiArNTIsOCBA
QCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNvY29hL01haW5UaHJlYWRDb2NvYS5tbQog
ICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcAogICAgIGNvY29hL01lbW9yeVByZXNz
dXJlSGFuZGxlckNvY29hLm1tCisgICAgY29jb2EvTlNVUkxFeHRyYXMubW0KKyAgICBjb2NvYS9V
UkxDb2NvYS5tbQogICAgIGNvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAogCiAgICAgbWFjL0RlcHJl
Y2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4
IDc1MmI1OTkzMTQ4ZjExMTBhMjkzYzlkYTllMjhhZGVmMDhmZWU0MGMuLmEwMmRhNTI3OGVlZWFi
OGRiODAwYmM4Zjk2Zjg5ZmI5NzJmM2UxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCkBA
IC00LDYgKzQsNyBAQCBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICBnbGliL0dS
ZWZQdHIuaAogICAgIGdsaWIvR1R5cGVkZWZzLmgKICAgICBnbGliL0dVbmlxdWVQdHIuaAorICAg
IGdsaWIvR1VuaXF1ZVB0clNvdXAuaAogICAgIGdsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmgK
ICAgICBnbGliL1dURkdUeXBlLmgKIApAQCAtMTksNiArMjAsNyBAQCBsaXN0KEFQUEVORCBXVEZf
U09VUkNFUwogICAgIGdsaWIvR0xpYlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3Bw
CiAgICAgZ2xpYi9SdW5Mb29wR0xpYi5jcHAKKyAgICBnbGliL1VSTFNvdXAuY3BwCiAKICAgICBs
aW51eC9DdXJyZW50UHJvY2Vzc01lbW9yeVN0YXR1cy5jcHAKICAgICBsaW51eC9NZW1vcnlGb290
cHJpbnRMaW51eC5jcHAKQEAgLTM1LDkgKzM3LDExIEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJ
RVMKICAgICAke0dMSUJfR0lPX0xJQlJBUklFU30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJ
RVN9CiAgICAgJHtHTElCX0xJQlJBUklFU30KKyAgICAke0xJQlNPVVBfTElCUkFSSUVTfQogICAg
ICR7WkxJQl9MSUJSQVJJRVN9CiApCiAKIGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9E
SVJFQ1RPUklFUwogICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CisgICAgJHtMSUJTT1VQX0lOQ0xV
REVfRElSU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtl
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggNDY4NTE5NmNlYTYyZGMw
NmQ1YmE2MzAwMjEyYzI3ODkwOTFlOWFkNy4uNjgzNTk5YjEwNzMyZTJmODAzY2Q5MTA1OTZlZDQy
ODE4MTNjODdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTIwLDExICsyMCwxNSBA
QCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogCiBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5E
IFdURl9QVUJMSUNfSEVBREVSUworICAgICAgICBjZi9DRlVSTEV4dHJhcy5oCiAgICAgICAgIGNm
L1R5cGVDYXN0c0NGLmgKIAogICAgICAgICB0ZXh0L2NmL1RleHRCcmVha0l0ZXJhdG9yQ0YuaAog
ICAgICkKICAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICBjZi9DRlVSTEV4dHJh
cy5jcHAKKyAgICAgICAgY2YvVVJMQ0YuY3BwCisKICAgICAgICAgdGV4dC9jZi9BdG9taWNTdHJp
bmdJbXBsQ0YuY3BwCiAgICAgICAgIHRleHQvY2YvU3RyaW5nQ0YuY3BwCiAgICAgICAgIHRleHQv
Y2YvU3RyaW5nSW1wbENGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQzNDVhZWU3NTMzM2JjZjg3YzE2
YTM1Y2Q3YzAxZDUwYzAwNWU5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VS
TC5jcHAKQEAgLTAsMCArMSwxMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3
LTIwMDgsIDIwMTEtMjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKyNpbmNs
dWRlICJVUkxQYXJzZXIuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaWNvZGUv
dWlkbmEuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1i
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKKy8vIEZJ
WE1FOiBUaGlzIGZpbGUgbWFrZXMgdG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJhdG9yIG9uIFN0
cmluZy4KKy8vIFdlIGVpdGhlciBoYXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0b3Igc28gaXQg
ZG9lc24ndCBpbnZvbHZlCisvLyBzbyBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFuZ2UgdGhpcyB0
byB1c2UgU3RyaW5nQnVmZmVyIGluc3RlYWQuCisKKworbmFtZXNwYWNlIFdURiB7CisKK3R5cGVk
ZWYgVmVjdG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKK3R5cGVkZWYgVmVjdG9yPFVDaGFyLCA1
MTI+IFVDaGFyQnVmZmVyOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1i
ZXIgPSAweEZGRkY7CisKKy8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwg
YXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKKy8vIEFTQ0lJLiBUaGUgZGVz
dGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJl
IGFsbG93ZWQKKy8vIGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRl
IHRvIG51bGwtdGVybWluYXRlIHRoZSByZXN1bHQuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRlc3QpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAg
IG1lbWNweShkZXN0LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYo
KTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGRlc3RbaV0gPSBz
dGF0aWNfY2FzdDxjaGFyPihzcmNbaV0pOworICAgIH0KK30KKwordm9pZCBVUkw6OmludmFsaWRh
dGUoKQoreworICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgIG1fcHJvdG9jb2xJc0luSFRUUEZh
bWlseSA9IGZhbHNlOworICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOworICAgIG1fc2No
ZW1lRW5kID0gMDsKKyAgICBtX3VzZXJTdGFydCA9IDA7CisgICAgbV91c2VyRW5kID0gMDsKKyAg
ICBtX3Bhc3N3b3JkRW5kID0gMDsKKyAgICBtX2hvc3RFbmQgPSAwOworICAgIG1fcG9ydExlbmd0
aCA9IDA7CisgICAgbV9wYXRoRW5kID0gMDsKKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7
CisgICAgbV9xdWVyeUVuZCA9IDA7Cit9CisKK1VSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29u
c3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKK3sK
KyAgICBVUkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CisgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK3N0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJM
KFVDaGFyIGMpCit7CisgICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hp
dGVzcGFjZSBhbmQgY29udHJvbAorICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0
aGF0IGMgaXMgYW4gKnVuc2lnbmVkKiBjaGFyIGhlcmUKKyAgICAvLyBzbyB0aGlzIGNvbXBhcmlz
b24gc2hvdWxkIG9ubHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgorICAgIHJldHVybiBjIDw9
ICcgJzsKK30KKworVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBVUkwgcmVz
dWx0ID0gKnRoaXM7CisgICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xh
dGVkQ29weSgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N0cmluZyBVUkw6Omxhc3RQYXRo
Q29tcG9uZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc1BhdGgoKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKKyAgICBpZiAo
bV9zdHJpbmdbZW5kXSA9PSAnLycpCisgICAgICAgIC0tZW5kOworCisgICAgc2l6ZV90IHN0YXJ0
ID0gbV9zdHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOworICAgIGlmIChzdGFydCA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgKytzdGFydDsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJp
bmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpwcm90b2Nv
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygw
LCBtX3NjaGVtZUVuZCk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKK3sKKyAg
ICB1bnNpZ25lZCBzdGFydCA9IGhvc3RTdGFydCgpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKK30KKworc3RkOjpv
cHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcG9ydExl
bmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGJvb2wgb2sgPSBmYWxz
ZTsKKyAgICB1bnNpZ25lZCBudW1iZXI7CisgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQorICAg
ICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4
KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOworICAgIGVsc2UKKyAg
ICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJz
MTYoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7CisgICAgaWYgKCFv
ayB8fCBudW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG51bWJlcjsKK30KKworU3RyaW5n
IFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdAoreworICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5w
b3J0KCkpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocG9ydC52YWx1ZSgpKSk7CisgICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygp
OworfQorCitTdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKK3sKKyAgICBT
dHJpbmcgcmVzdWx0ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExl
bmd0aCk7CisKKyAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgeworICAg
ICAgICBjb25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7CisgICAgICAgIHJlc3Vs
dC5yZW1vdmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93
Rm9yVHJhaWxpbmdBdFNpZ24pOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0
YXRpYyBTdHJpbmcgZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3
IGlucHV0KQoreworICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBp
ZiAoIWlucHV0TGVuZ3RoKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBWZWN0
b3I8TENoYXI+IHBlcmNlbnREZWNvZGVkOworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoaW5wdXRMZW5ndGgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
bnB1dExlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKKyAgICAgICAg
ICAgICYmIGlucHV0TGVuZ3RoID4gMgorICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0g
MgorICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKKyAgICAgICAg
ICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICBwZXJj
ZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwg
aW5wdXRbaSArIDJdKSk7CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKKyAgICB9
CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJj
ZW50RGVjb2RlZC5zaXplKCkpOworfQorCitTdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7
Cit9CisKK1N0cmluZyBVUkw6OnBhc3MoKSBjb25zdAoreworICAgIGlmIChtX3Bhc3N3b3JkRW5k
ID09IG1fdXNlckVuZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRl
Y29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Cit9
CisKK1N0cmluZyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJp
bmcuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Cit9CisK
K1N0cmluZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKK3sKKyAgICBpZiAobV9wYXNzd29yZEVu
ZCA9PSBtX3VzZXJFbmQpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBt
X3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVu
ZCAtIDEpOworfQorCitTdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAorewor
ICAgIGlmICghaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOworfQor
Citib29sIFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Cit9CisKK1N0cmlu
ZyBVUkw6OmJhc2VBc1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQo
bV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworfQorCisjaWYgIVVTRShDRikKKworU3RyaW5nIFVSTDo6
ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAoreworICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2Fs
RmlsZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGVjb2RlRXNj
YXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOworfQorCisjZW5k
aWYKKworI2lmZGVmIE5ERUJVRworCitzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJ
c0dvb2QoU3RyaW5nVmlldykKK3sKK30KKworI2Vsc2UKKworc3RhdGljIHZvaWQgYXNzZXJ0UHJv
dG9jb2xJc0dvb2QoU3RyaW5nVmlldyBwcm90b2NvbCkKK3sKKyAgICAvLyBGSVhNRTogV2UgcHJv
YmFibHkgZG9uJ3QgbmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgorICAgIC8vIFRoZSBpc0FT
Q0lJQWxwaGFDYXNlbGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hh
cmFjdGVycworICAgIC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRp
ZCBub3QgYW5kIHJlbGllZCBvbiB0aGVzZSBjaGVja3MuCisgICAgZm9yIChhdXRvIGNoYXJhY3Rl
ciA6IHByb3RvY29sLmNvZGVVbml0cygpKSB7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJh
Y3RlcikpOworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsKKyAgICAgICAgQVNTRVJU
KCFpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyKSk7CisgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJV
bmNoZWNrZWQoY2hhcmFjdGVyKSA9PSBjaGFyYWN0ZXIpOworICAgIH0KK30KKworI2VuZGlmCisK
K3N0YXRpYyBMb2NrIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKKwor
dXNpbmcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmlu
ZywgdWludDE2X3Q+Oworc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5n
KiYgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIHN0YXRpYyBE
ZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcDsKKyAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKK30KKworc3RhdGlj
IERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZygpCit7CisgICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcoKTsKKyAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xN
YXApCisgICAgICAgIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3Rpbmc7CisgICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwOworfQorCit2b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3Rp
bmcodWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7
CisgICAgZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJv
dG9jb2wsIHBvcnQpOworfQorCit2b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmcoKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsKKyAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkKKyAgICAgICAgbWFwLT5jbGVhcigpOworfQor
CitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1Zp
ZXcgcHJvdG9jb2wpCit7CisgICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgICAgIEFT
U0VSVChvdmVycmlkZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNp
bmNlIG92ZXJyaWRlTWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4K
KyAgICAgICAgYXV0byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3Ry
aW5nV2l0aG91dENvcHlpbmcoKSk7CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1h
cC0+ZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKyAg
ICByZXR1cm4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKK30K
KworYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmll
dyBwcm90b2NvbCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2Nv
bCkgPT0gcG9ydDsKK30KKworYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9j
b2wpIGNvbnN0Cit7CisgICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7CisK
KyAgICAvLyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRl
ZCBldmVuIGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCisgICAgLy8gVGhlIGZyZWUg
ZnVuY3Rpb24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAK
KyAgICBBU1NFUlQoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJv
dG9jb2wpLCAiamF2YXNjcmlwdCIpKTsKKworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBh
IG5ldyBzdHJpbmcgb2JqZWN0LgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVt
ZUVuZDsgKytpKSB7CisgICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdl
IHNob3VsZCBoYXZlIGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KK30K
KworYm9vbCBVUkw6OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKK3sKKyAg
ICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7CisKKyAgICBpZiAoIW1faXNWYWxpZCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90
b2NvbC5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG8gdGhlIGNv
bXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoIWlzQVND
SUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBV
Ukw6OnF1ZXJ5KCkgY29uc3QKK3sKKyAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmco
bV9wYXRoRW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAorfQorCitTdHJp
bmcgVVJMOjpwYXRoKCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5k
ICsgbV9wb3J0TGVuZ3RoOworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwg
bV9wYXRoRW5kIC0gcG9ydEVuZCk7Cit9CisKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBT
dHJpbmcmIHMpCit7CisgICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0
ZXIgdGhlIGZpcnN0ICc6Jy4KKyAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQo
JzonKTsKKyAgICBTdHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQ
b3NpdGlvbik7CisgICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9u
aWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbCk7CisgICAgaWYgKCFjYW5vbmljYWxpemVkKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBVUkxQ
YXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsK
KyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJl
c3VsdCgpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0
cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJl
dHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5s
ZW5ndGgoKSk7CisgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFj
dGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Cit9CisgICAgCisvLyBBcHBlbmRzIHRoZSBwdW55
Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGgg
dG8KKy8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVy
bWluYXRlZC4KKy8vIFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGlu
Zy4KK3N0YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVy
LCBTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRv
IGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KKyAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIg
dGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0
YWlubHkgT0suCisgICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4
OworICAgIAorICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8
fCBpc0FsbEFTQ0lJKHN0cmluZykpIHsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIFVDaGFyIGhvc3RuYW1lQnVm
ZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJP
X0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5J
VElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFt
ZVRvQVNDSUkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCks
CisgICAgICAgIHN0cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgp
LCBob3N0bmFtZUJ1ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWls
cywgJmVycm9yKTsKKyAgICAKKyAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2lu
Z0RldGFpbHMuZXJyb3JzKSB7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIs
IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit1bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRF
bmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKK30KKwordm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3Ry
aW5nJiBzKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGNvbG9uSW5kZXggPSBzLmZpbmQoJzonKTsKKyAgICBpZiAoY29sb25JbmRleCAhPSBub3RG
b3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1l
OworICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJT
dGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKKyAgICAKKyAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVm
dChob3N0U3RhcnQoKSkpOworICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQorICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhl
bmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7CisgICAgYnVp
bGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOworCisgICAgVVJMUGFy
c2VyIHBhcnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3Vs
dCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCit7CisgICAgaWYgKCFtX3BvcnRMZW5n
dGgpCisgICAgICAgIHJldHVybjsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3Ry
aW5nVmlldyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5z
dWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOworICAgICp0aGlzID0gcGFyc2Vy
LnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQorewor
ICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGNvbG9uTmVl
ZGVkID0gIW1fcG9ydExlbmd0aDsKKyAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVk
ZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKKworICAgIFVSTFBhcnNlciBwYXJzZXIo
bWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5l
ZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7CisgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7Cit9CisKK3ZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcm
IGhvc3RBbmRQb3J0KQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisK
KyAgICBTdHJpbmdWaWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKKyAgICBTdHJpbmdWaWV3IHBv
cnQ7CisgICAgCisgICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOworICAg
IGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHBvcnQgPSBob3N0TmFtZS5z
dWJzdHJpbmcoY29sb25JbmRleCArIDEpOworICAgICAgICBib29sIG9rOworICAgICAgICBpbnQg
cG9ydEludCA9IHBvcnQudG9JbnRTdHJpY3Qob2spOworICAgICAgICBpZiAoIW9rIHx8IHBvcnRJ
bnQgPCAwKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1l
LnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsKKyAgICB9CisKKyAgICBpZiAoaG9zdE5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5h
bWU7CisgICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0
TmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1f
dXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOworCisg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxl
ZnQoaG9zdFN0YXJ0KCkpKTsKKyAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKKyAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXco
ZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOworICAgIGlm
ICghcG9ydC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBvcnQpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3Ro
KSk7CisKKyAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK3N0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNo
YXJhY3RlcnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikp
Cit7CisgICAgYXV0byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1
dCkgeworICAgICAgICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7CisgICAgICAgIGF1dG8q
IGRhdGEgPSB1dGY4LmRhdGEoKTsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
ICAgICBhdXRvIGxlbmd0aCA9IHV0ZjgubGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aiA9IDA7IGogPCBsZW5ndGg7IGorKykgeworICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsK
KyAgICAgICAgICAgIGlmIChzaG91bGRFbmNvZGUoYykpIHsKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnJScpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmli
YmxlVG9BU0NJSUhleERpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChs
b3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGlucHV0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29k
ZShpbnB1dFtpXSkpKQorICAgICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7CisgICAgfQor
ICAgIHJldHVybiBpbnB1dDsKK30KKwordm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1
c2VyKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBG
SVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRv
IG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAorICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2lu
ZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KKworICAgIHVuc2lnbmVkIGVuZCA9IG1f
dXNlckVuZDsKKyAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyB1ID0g
cGVyY2VudEVuY29kZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNv
ZGVTZXQpOworICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fc2NoZW1lRW5kICsgMSkpCisgICAgICAgICAgICB1ID0gIi8vIiArIHU7CisgICAgICAgIC8v
IEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KKyAgICAgICAgaWYgKGVuZCA9
PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0g
J0AnKSkKKyAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7CisgICAgICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3
ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2Vy
RW5kID09IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRd
ID09ICdAJykKKyAgICAgICAgICAgIGVuZCArPSAxOworICAgICAgICAvLyBXZSBkb24ndCB3YW50
IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBn
b2luZyB0byBtYWtlIGEgY2hhbmdlLgorICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7
CisgICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhl
bmQpKSk7CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sK
KyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgZW5k
ID0gbV9wYXNzd29yZEVuZDsKKyAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgeworICAgICAg
ICBTdHJpbmcgcCA9ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQ
YXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCkgKyAiQCI7CisgICAgICAgIGlmIChtX3VzZXJF
bmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisgICAgICAgICAg
ICBwID0gIi8vIiArIHA7CisgICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdl
IGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KKyAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQg
JiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAg
VVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91
c2VyRW5kKSwgcCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVt
b3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAg
ICBpZiAobV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9z
dHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgLy8gV2Ug
ZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdl
IGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KKyAgICAgICAgaWYgKG1fdXNlckVuZCAh
PSBlbmQpIHsKKyAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhlbmQpKSk7CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdW
aWV3IGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBh
bHJlYWR5IGhhcHBlbnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPworICAgIC8vIEZJ
WE1FOiBJcyBpdCBjb3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBp
bmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnM/CisgICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3Ry
aW5nKFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMn
LCBpZGVudGlmaWVyKSB9LnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJ
ZGVudGlmaWVyKCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBBU1NFUlQoIW1f
cXVlcnlFbmQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2lzVmFsaWQgJiYg
bV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kKQorICAgICAgICBtX3N0cmluZyA9IG1fc3Ry
aW5nLmxlZnQobV9xdWVyeUVuZCk7Cit9CisKK3ZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdt
ZW50SWRlbnRpZmllcigpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQpOworICAgIG1fcXVlcnlF
bmQgPSBtX3BhdGhFbmQ7Cit9CisKK3ZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1
ZXJ5KQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBG
SVhNRTogJyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVz
Y2FwZWQuCisgICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1l
bnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKKyAgICAvLyBhY2Nlc3Mg
dG8gdGhlIGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCisgICAgLy8gaHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTYxMTc2CisgICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8n
KSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3Ry
aW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7CisgICAgICAgICp0aGlz
ID0gcGFyc2VyLnJlc3VsdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5
LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKKyAgICAgICAg
KnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgfQorCit9CisKK3ZvaWQgVVJMOjpzZXRQYXRo
KGNvbnN0IFN0cmluZyYgcykKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgU3RyaW5nIHBhdGggPSBzOworICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRo
WzBdICE9ICcvJykKKyAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7CisKKyAgICBhdXRvIHF1ZXN0
aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKKyAgICAgICAgcmV0
dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKKyAgICB9OworICAgIFVS
TFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9z
dEVuZCArIG1fcG9ydExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0
aW9uTWFya09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3Bh
dGhFbmQpKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK2Jvb2wgZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sK
KyAgICBpZiAoYS5tX3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHVuc2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQorICAgICAgICBpZiAoYS5zdHJp
bmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNv
bnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBh
dGhFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBh
LnBhdGhFbmQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7
CisgICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIHByb3Rv
Y29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAg
ICBpZiAoYS5tX3NjaGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNp
Z25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25l
ZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9
IGIubV9ob3N0RW5kIC0gYi5ob3N0U3RhcnQoKTsKKyAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9z
dExlbmd0aEIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoZSBzY2hl
bWUKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7Cisg
ICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQW5kIHRoZSBob3N0CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKKyAgICAgICAgaWYgKGEuc3RyaW5n
KClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
aG9zdHNBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICB1bnNpZ25l
ZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9
IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5o
b3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9z
dFN0YXJ0QjsKKyAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsg
KytpKSB7CisgICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmlu
ZygpW2hvc3RTdGFydEIgKyBpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3Qg
U3RyaW5nJiBkb21haW4pIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBpZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOworICAgIGlmICghaG9zdC5l
bmRzV2l0aChkb21haW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaG9z
dC5sZW5ndGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9t
YWluLmxlbmd0aCgpIC0gMV0gPT0gJy4nOworfQorCitTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2Fw
ZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIGlucHV0KQoreworICAgIHJldHVybiBwZXJjZW50RW5j
b2RlQ2hhcmFjdGVycyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwor
fQorCitib29sIFVSTDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAoreworICAgIGlmICghbV9pc1Zh
bGlkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1l
RW5kXSA9PSAnOicpOworICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcv
JzsKK30KKwordm9pZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVy
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVz
IG9mIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQorICAgIC8vIFRoYXQncyBmaW5l
IGZvciBhIHZhbGlkIFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlk
IFVSTHMuCisgICAgYnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgY29weUFT
Q0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3Ry
aW5nQ2xhc3M+Citib29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJs
LCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK3sKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRo
b3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgorICAgIGFzc2VydFByb3RvY29sSXNHb29k
KFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3Ry
bGVuKHByb3RvY29sKSkpOworICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBqID0gMDsgdXJsW2ldOyArK2kpIHsKKyAgICAgICAgLy8gU2tpcCBsZWFk
aW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICAgICAgaWYgKGlzTGVh
ZGluZyAmJiBzaG91bGRUcmltRnJvbVVSTCh1cmxbaV0pKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOworCisgICAgICAgIC8vIFNraXAgYW55IHRhYnMg
YW5kIG5ld2xpbmVzLgorICAgICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdc
cicgfHwgdXJsW2ldID09ICdcbicpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBp
ZiAoIXByb3RvY29sW2pdKQorICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7CisgICAg
ICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICArK2o7CisgICAgfQorICAgIAor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFs
KHVybCwgcHJvdG9jb2wpOworfQorCitpbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQoreworICAgIHJldHVybiBXVEY6
OnByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsKK30KKworI2lmbmRlZiBOREVC
VUcKKwordm9pZCBVUkw6OnByaW50KCkgY29uc3QKK3sKKyAgICBwcmludGYoIiVzXG4iLCBtX3N0
cmluZy51dGY4KCkuZGF0YSgpKTsKK30KKworI2VuZGlmCisKK1N0cmluZyBVUkw6OnN0cmlwcGVk
Rm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0Cit7CisgICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKKyAg
ICByZWZlcnJlci5zZXRVc2VyKFN0cmluZygpKTsKKyAgICByZWZlcnJlci5zZXRQYXNzKFN0cmlu
ZygpKTsKKyAgICByZWZlcnJlci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1
cm4gcmVmZXJyZXIuc3RyaW5nKCk7Cit9CisKK2Jvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0
Cit7CisgICAgLy8gSW5jbHVkaW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVhIHNpbmNl
IGRyYWcgYW5kIGRyb3AgdXNlcyB0aGlzIGNoZWNrCisgICAgLy8gYW5kIGluY2x1ZGluZyBmZWVk
IHdvdWxkIGFsbG93IGZlZWRzIHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxvZworICAg
IC8vIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBldmVuIHdp
dGhvdXQgYSBkcm9wLgorICAgIC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1lTG9hZGVy
OjpzaG91bGRUcmVhdFVSTEFzTG9jYWwoKSBmdW5jdGlvbi4KKyAgICByZXR1cm4gcHJvdG9jb2xJ
cygiZmlsZSIpOworfQorCitib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYg
dXJsKQoreworICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIp
OworfQorCitib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKQoreworICAg
IHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29s
IHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgYXV0byBs
ZW5ndGggPSB1cmwubGVuZ3RoKCk7CisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBt
YWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICByZXR1cm4gbGVuZ3RoID49IDUKKyAgICAg
ICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMF0sICdoJykKKyAgICAgICAgJiYg
aXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMV0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJ
SUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMl0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhh
Q2FzZWxlc3NFcXVhbCh1cmxbM10sICdwJykKKyAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwg
KGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzRdLCAncycpICYmIGxlbmd0aCA+PSA2ICYm
IHVybFs1XSA9PSAnOicpKTsKK30KKworY29uc3QgVVJMJiBibGFua1VSTCgpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFu
ayIpOworICAgIHJldHVybiBzdGF0aWNCbGFua1VSTDsKK30KKworYm9vbCBVUkw6OmlzQmxhbmtV
UkwoKSBjb25zdAoreworICAgIHJldHVybiBwcm90b2NvbElzKCJhYm91dCIpOworfQorCitib29s
IHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQoreworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2
X3Q+IHBvcnQgPSB1cmwucG9ydCgpOworCisgICAgLy8gU2luY2UgbW9zdCBVUkxzIGRvbid0IGhh
dmUgYSBwb3J0LCByZXR1cm4gZWFybHkgZm9yIHRoZSAibm8gcG9ydCIgY2FzZS4KKyAgICBpZiAo
IXBvcnQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gVGhpcyBibG9ja2VkIHBvcnQg
bGlzdCBtYXRjaGVzIHRoZSBwb3J0IGJsb2NraW5nIHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgor
ICAgIC8vIFNlZSBodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFu
bmluZy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCBibG9ja2VkUG9ydExpc3RbXSA9IHsKKyAgICAgICAgMSwgICAgLy8gdGNwbXV4CisgICAgICAg
IDcsICAgIC8vIGVjaG8KKyAgICAgICAgOSwgICAgLy8gZGlzY2FyZAorICAgICAgICAxMSwgICAv
LyBzeXN0YXQKKyAgICAgICAgMTMsICAgLy8gZGF5dGltZQorICAgICAgICAxNSwgICAvLyBuZXRz
dGF0CisgICAgICAgIDE3LCAgIC8vIHFvdGQKKyAgICAgICAgMTksICAgLy8gY2hhcmdlbgorICAg
ICAgICAyMCwgICAvLyBGVFAtZGF0YQorICAgICAgICAyMSwgICAvLyBGVFAtY29udHJvbAorICAg
ICAgICAyMiwgICAvLyBTU0gKKyAgICAgICAgMjMsICAgLy8gdGVsbmV0CisgICAgICAgIDI1LCAg
IC8vIFNNVFAKKyAgICAgICAgMzcsICAgLy8gdGltZQorICAgICAgICA0MiwgICAvLyBuYW1lCisg
ICAgICAgIDQzLCAgIC8vIG5pY25hbWUKKyAgICAgICAgNTMsICAgLy8gZG9tYWluCisgICAgICAg
IDc3LCAgIC8vIHByaXYtcmpzCisgICAgICAgIDc5LCAgIC8vIGZpbmdlcgorICAgICAgICA4Nywg
ICAvLyB0dHlsaW5rCisgICAgICAgIDk1LCAgIC8vIHN1cGR1cAorICAgICAgICAxMDEsICAvLyBo
b3N0cmlhbWUKKyAgICAgICAgMTAyLCAgLy8gaXNvLXRzYXAKKyAgICAgICAgMTAzLCAgLy8gZ3Bw
aXRucAorICAgICAgICAxMDQsICAvLyBhY3ItbmVtYQorICAgICAgICAxMDksICAvLyBQT1AyCisg
ICAgICAgIDExMCwgIC8vIFBPUDMKKyAgICAgICAgMTExLCAgLy8gc3VucnBjCisgICAgICAgIDEx
MywgIC8vIGF1dGgKKyAgICAgICAgMTE1LCAgLy8gU0ZUUAorICAgICAgICAxMTcsICAvLyB1dWNw
LXBhdGgKKyAgICAgICAgMTE5LCAgLy8gbm50cAorICAgICAgICAxMjMsICAvLyBOVFAKKyAgICAg
ICAgMTM1LCAgLy8gbG9jLXNydiAvIGVwbWFwCisgICAgICAgIDEzOSwgIC8vIG5ldGJpb3MKKyAg
ICAgICAgMTQzLCAgLy8gSU1BUDIKKyAgICAgICAgMTc5LCAgLy8gQkdQCisgICAgICAgIDM4OSwg
IC8vIExEQVAKKyAgICAgICAgNDY1LCAgLy8gU01UUCtTU0wKKyAgICAgICAgNTEyLCAgLy8gcHJp
bnQgLyBleGVjCisgICAgICAgIDUxMywgIC8vIGxvZ2luCisgICAgICAgIDUxNCwgIC8vIHNoZWxs
CisgICAgICAgIDUxNSwgIC8vIHByaW50ZXIKKyAgICAgICAgNTI2LCAgLy8gdGVtcG8KKyAgICAg
ICAgNTMwLCAgLy8gY291cmllcgorICAgICAgICA1MzEsICAvLyBDaGF0CisgICAgICAgIDUzMiwg
IC8vIG5ldG5ld3MKKyAgICAgICAgNTQwLCAgLy8gVVVDUAorICAgICAgICA1NDgsICAvLyBhZnBv
dmVydGNwIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNTU2LCAgLy8gcmVtb3RlZnMKKyAgICAg
ICAgNTYzLCAgLy8gTk5UUCtTU0wKKyAgICAgICAgNTg3LCAgLy8gRVNNVFAKKyAgICAgICAgNjAx
LCAgLy8gc3lzbG9nLWNvbm4KKyAgICAgICAgNjM2LCAgLy8gTERBUCtTU0wKKyAgICAgICAgOTkz
LCAgLy8gSU1BUCtTU0wKKyAgICAgICAgOTk1LCAgLy8gUE9QMytTU0wKKyAgICAgICAgMjA0OSwg
Ly8gTkZTCisgICAgICAgIDM2NTksIC8vIGFwcGxlLXNhc2wgLyBQYXNzd29yZFNlcnZlciBbQXBw
bGUgYWRkaXRpb25dCisgICAgICAgIDQwNDUsIC8vIGxvY2tkCisgICAgICAgIDQxOTAsIC8vIE1h
bmFnZVNpZXZlIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjAwMCwgLy8gWDExCisgICAgICAg
IDY2NjUsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2NjY2LCAv
LyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2NywgLy8gU3RhbmRh
cmQgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2OCwgLy8gQWx0ZXJuYXRlIElSQyBb
QXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFk
ZGl0aW9uXQorICAgICAgICA2Njc5LCAvLyBBbHRlcm5hdGUgSVJDIFNTTCBbQXBwbGUgYWRkaXRp
b25dCisgICAgICAgIDY2OTcsIC8vIElSQytTU0wgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICBp
bnZhbGlkUG9ydE51bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJl
cnMKKyAgICB9OworCisgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBv
cnQgbGlzdCwgYWxsb3cgaXQuCisgICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4o
YmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRMaXN0KSkpOworICAgIGlmICgh
c3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQo
YmxvY2tlZFBvcnRMaXN0KSwgcG9ydC52YWx1ZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAvLyBBbGxvdyBwb3J0cyAyMSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxhIGRv
ZXMuCisgICAgaWYgKChwb3J0LnZhbHVlKCkgPT0gMjEgfHwgcG9ydC52YWx1ZSgpID09IDIyKSAm
JiB1cmwucHJvdG9jb2xJcygiZnRwIikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8g
QWxsb3cgYW55IHBvcnQgbnVtYmVyIGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJl
ciBpcyBpZ25vcmVkLgorICAgIGlmICh1cmwucHJvdG9jb2xJcygiZmlsZSIpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIG1pbWVUeXBlRnJv
bURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgQVNTRVJUKHByb3RvY29sSXNJbnRl
cm5hbCh1cmwsICJkYXRhIikpOworCisgICAgLy8gRklYTUU6IFdoYXQncyB0aGUgcmlnaHQgYmVo
YXZpb3Igd2hlbiB0aGUgVVJMIGhhcyBhIGNvbW1hIGZpcnN0LCBidXQgYSBzZW1pY29sb24gbGF0
ZXI/CisgICAgLy8gQ3VycmVudGx5IHRoaXMgY29kZSB3aWxsIGJyZWFrIGF0IHRoZSBzZW1pY29s
b24gaW4gdGhhdCBjYXNlLiBOb3Qgc3VyZSB0aGF0J3MgY29ycmVjdC4KKyAgICBhdXRvIGluZGV4
ID0gdXJsLmZpbmQoJzsnLCA1KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAg
IGluZGV4ID0gdXJsLmZpbmQoJywnLCA1KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsK
KyAgICAgICAgLy8gRklYTUU6IFRoZXJlIHdhcyBhbiBvbGQgY29tbWVudCBoZXJlIHRoYXQgbWFk
ZSBpdCBzb3VuZCBsaWtlIHRoaXMgc2hvdWxkIGJlIHJldHVybmluZyB0ZXh0L3BsYWluLgorICAg
ICAgICAvLyBCdXQgd2UgaGF2ZSBiZWVuIHJldHVybmluZyBlbXB0eSBzdHJpbmcgaGVyZSBmb3Ig
c29tZSB0aW1lLCBzbyBub3QgY2hhbmdpbmcgaXRzIGJlaGF2aW9yIGF0IHRoaXMgdGltZS4KKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgfQorICAgIGlmIChpbmRleCA9PSA1KQor
ICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgQVNTRVJUKGluZGV4ID49IDUpOwor
ICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKTsKK30KKworU3RyaW5nIFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK3sKKyAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkgPD0g
bGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RyaW5nKCk7CisKKyAgICByZXR1cm4gc3RyaW5nKCku
bGVmdChsZW5ndGggLyAyIC0gMSkgKyAiLi4uIiArIHN0cmluZygpLnJpZ2h0KGxlbmd0aCAvIDIg
LSAyKTsKK30KKworVVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5n
JiByZWxhdGl2ZVBhcnQpCit7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgIndlYmtpdC1mYWtlLXVy
bDovLyIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgKyAnLycgKyByZWxhdGl2ZVBhcnQp
OworfQorCitVUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCit7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgImZpbGU6Ly8vIiArIGZpbGVQYXRo
KTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVVJM
JiB1cmwpCit7CisgICAgdHMgPDwgdXJsLnN0cmluZygpOworICAgIHJldHVybiB0czsKK30KKwor
I2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShTT1VQKQorc3RhdGljIGJvb2wgaXNJUHY0QWRk
cmVzcyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBhdXRvIGNvdW50ID0gMDsKKworICAgIGZv
ciAoY29uc3QgYXV0byBvY3RldCA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCcu
JykpIHsKKyAgICAgICAgaWYgKGNvdW50ID49IDQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgY29uc3QgYXV0byBsZW5ndGggPSBvY3RldC5sZW5ndGgoKTsKKyAgICAgICAg
aWYgKCFsZW5ndGggfHwgbGVuZ3RoID4gMykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBhdXRvIHZhbHVlID0gMDsKKyAgICAgICAgZm9yIChhdXRvIGkgPSAwdTsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBhdXRvIGRpZ2l0ID0gb2N0ZXRbaV07CisK
KyAgICAgICAgICAgIC8vIFByb2hpYml0IGxlYWRpbmcgemVyb2VzLgorICAgICAgICAgICAgaWYg
KGRpZ2l0ID4gJzknIHx8IGRpZ2l0IDwgKCFpICYmIGxlbmd0aCA+IDEgPyAnMScgOiAnMCcpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgdmFsdWUgPSAxMCAq
IHZhbHVlICsgKGRpZ2l0IC0gJzAnKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2YWx1ZSA+
IDI1NSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb3VudCsrOworICAg
IH0KKworICAgIHJldHVybiAoY291bnQgPT0gNCk7Cit9CisKK3N0YXRpYyBib29sIGlzSVB2NkFk
ZHJlc3MoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgZW51bSBTa2lwU3RhdGUgeyBOb25lLCBX
aWxsU2tpcCwgU2tpcHBpbmcsIFNraXBwZWQsIEZpbmFsIH07CisgICAgYXV0byBza2lwU3RhdGUg
PSBOb25lOworICAgIGF1dG8gY291bnQgPSAwOworCisgICAgZm9yIChjb25zdCBhdXRvIGhleHRl
dCA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCc6JykpIHsKKyAgICAgICAgaWYg
KGNvdW50ID49IDggfHwgc2tpcFN0YXRlID09IEZpbmFsKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gaGV4dGV0Lmxlbmd0aCgpOworICAg
ICAgICBpZiAoIWxlbmd0aCkgeworICAgICAgICAgICAgLy8gOjogbWF5IGJlIHVzZWQgYW55d2hl
cmUgdG8gc2tpcCAxIHRvIDggaGV4dGV0cywgYnV0IG9ubHkgb25jZS4KKyAgICAgICAgICAgIGlm
IChza2lwU3RhdGUgPT0gU2tpcHBlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgICAgIGlmIChza2lwU3RhdGUgPT0gTm9uZSkKKyAgICAgICAgICAgICAgICBza2lw
U3RhdGUgPSAhY291bnQgPyBXaWxsU2tpcCA6IFNraXBwaW5nOworICAgICAgICAgICAgZWxzZSBp
ZiAoc2tpcFN0YXRlID09IFdpbGxTa2lwKQorICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IFNr
aXBwaW5nOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IEZp
bmFsOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2tp
cFN0YXRlID09IFdpbGxTa2lwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGlmIChza2lwU3RhdGUgPT0gU2tpcHBpbmcpCisgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lw
cGVkOworCisgICAgICAgIGlmIChsZW5ndGggPiA0KSB7CisgICAgICAgICAgICAvLyBBbiBJUHY0
IGFkZHJlc3MgbWF5IGJlIHVzZWQgaW4gcGxhY2Ugb2YgdGhlIGZpbmFsIHR3byBoZXh0ZXRzLgor
ICAgICAgICAgICAgaWYgKChza2lwU3RhdGUgPT0gTm9uZSAmJiBjb3VudCAhPSA2KSB8fCAoc2tp
cFN0YXRlID09IFNraXBwZWQgJiYgY291bnQgPj0gNikgfHwgIWlzSVB2NEFkZHJlc3MoaGV4dGV0
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHNraXBTdGF0
ZSA9IEZpbmFsOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8gY29kZVVuaXQgOiBoZXh0ZXQuY29kZVVuaXRzKCkpIHsKKyAgICAgICAg
ICAgIC8vIElQdjYgYWxsb3dzIGxlYWRpbmcgemVyb2VzLgorICAgICAgICAgICAgaWYgKCFpc0FT
Q0lJSGV4RGlnaXQoY29kZVVuaXQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvdW50Kys7CisgICAgfQorCisgICAgcmV0dXJuIChjb3VudCA9
PSA4ICYmIHNraXBTdGF0ZSA9PSBOb25lKSB8fCBza2lwU3RhdGUgPT0gU2tpcHBlZCB8fCBza2lw
U3RhdGUgPT0gRmluYWw7Cit9CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmll
dyBob3N0KQoreworICAgIGlmIChob3N0LmZpbmQoJzonKSA9PSBub3RGb3VuZCkKKyAgICAgICAg
cmV0dXJuIGlzSVB2NEFkZHJlc3MoaG9zdCk7CisKKyAgICByZXR1cm4gaXNJUHY2QWRkcmVzcyho
b3N0KTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY0NmRh
MTk4MzAyNDFlMDUwMzc5MThmZWFkZTM1NDE5ODIwZTAxMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1VSTC5oCkBAIC0wLDAgKzEsMzkyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKKyNpZiBVU0UoQ0YpCit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVS
TFJlZjsKKyNlbmRpZgorCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1
ZVB0clNvdXAuaD4KKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pCitPQkpDX0NMQVNTIE5T
VVJMOworI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKKworY2xh
c3MgVVJMVGV4dEVuY29kaW5nIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90
PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IH5VUkxUZXh0RW5jb2RpbmcoKSB7IH07Cit9OworCitzdHJ1Y3QgVVJMSGFzaDsKKworY2xhc3Mg
V1RGX0VYUE9SVF9QUklWQVRFIFVSTCB7CitwdWJsaWM6CisgICAgLy8gR2VuZXJhdGVzIGEgVVJM
IHdoaWNoIGNvbnRhaW5zIGEgbnVsbCBzdHJpbmcuCisgICAgVVJMKCkgeyBpbnZhbGlkYXRlKCk7
IH0KKworICAgIGV4cGxpY2l0IFVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDog
bV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQorICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKS5pc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpOyB9CisKKyAgICAvLyBSZXNvbHZlcyB0aGUgcmVsYXRpdmUgVVJMIHdpdGgg
dGhlIGdpdmVuIGJhc2UgVVJMLiBJZiBwcm92aWRlZCwgdGhlCisgICAgLy8gVVJMVGV4dEVuY29k
aW5nIGlzIHVzZWQgdG8gZW5jb2RlIG5vbi1BU0NJSSBjaGFyYWNlcnMuIFRoZSBiYXNlIFVSTCBj
YW4gYmUKKyAgICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2ZSBV
Ukwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcworICAgIC8vIGFic29sdXRlLgorICAgIC8vIEZJWE1F
OiBJZiB0aGUgYmFzZSBVUkwgaXMgaW52YWxpZCwgdGhpcyBhbHdheXMgY3JlYXRlcyBhbiBpbnZh
bGlkCisgICAgLy8gVVJMLiBJbnN0ZWFkIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVyIHRvIHRy
ZWF0IGFsbCBpbnZhbGlkIGJhc2UgVVJMcworICAgIC8vIHRoZSBzYW1lIHdheSB3ZSB0cmVhdGUg
bnVsbCBhbmQgZW1wdHkgYmFzZSBVUkxzLgorICAgIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0
IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKKwor
ICAgIHN0YXRpYyBVUkwgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJik7Cisg
ICAgc3RhdGljIFVSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYpOwor
CisgICAgU3RyaW5nIHN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OworCisgICAgLy8g
RklYTUU6IFRoZSBhYm92ZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhcm1vbml6ZWQgc28gdGhhdCBw
YXNzaW5nIGEKKyAgICAvLyBiYXNlIG9mIG51bGwgb3IgdGhlIGVtcHR5IHN0cmluZyBnaXZlcyB0
aGUgc2FtZSByZXN1bHQgYXMgdGhlCisgICAgLy8gc3RhbmRhcmQgU3RyaW5nIGNvbnN0cnVjdG9y
LgorCisgICAgLy8gTWFrZXMgYSBkZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5b3UgbmVlZCB0
byB1c2UgYSBVUkwgb24gYW5vdGhlcgorICAgIC8vIHRocmVhZC4gU2luY2UgdGhlIHVuZGVybHlp
bmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFibGUsIHRoZXJlJ3MKKyAgICAvLyBubyBv
dGhlciByZWFzb24gdG8gZXZlciBwcmVmZXIgaXNvbGF0ZWRDb3B5KCkgb3ZlciBwbGFpbiBvbGQg
YXNzaWdubWVudC4KKyAgICBVUkwgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKKyAgICBib29sIGlz
TnVsbCgpIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0OworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHlvdSBjYW4gc2V0IHRoZSBob3N0
IGFuZCBwb3J0IGZvciB0aGUgVVJMLgorICAgIC8vIE5vbi1oaWVyYXJjaGljYWwgVVJMcyBkb24n
dCBoYXZlIGEgaG9zdCBhbmQgcG9ydC4KKyAgICBib29sIGNhblNldEhvc3RPclBvcnQoKSBjb25z
dCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9CisKKyAgICBib29sIGNhblNldFBhdGhuYW1l
KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQorICAgIGJvb2wgaXNIaWVyYXJj
aGljYWwoKSBjb25zdDsKKworICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmc7IH0KKworICAgIFN0cmluZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgodW5zaWduZWQgbGVuZ3RoID0gMTAyNCkgY29uc3Q7CisKKyAgICBTdHJpbmdWaWV3IHByb3Rv
Y29sKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBob3N0KCkgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0OworICAgIFN0cmluZyBob3N0QW5kUG9ydCgpIGNv
bnN0OworICAgIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7CisgICAgU3RyaW5n
IHVzZXIoKSBjb25zdDsKKyAgICBTdHJpbmcgcGFzcygpIGNvbnN0OworICAgIFN0cmluZyBwYXRo
KCkgY29uc3Q7CisgICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7CisgICAgU3Ry
aW5nIHF1ZXJ5KCkgY29uc3Q7CisgICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0
OworICAgIGJvb2wgaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBib29sIGhh
c1VzZXJuYW1lKCkgY29uc3Q7CisgICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OworICAgIGJv
b2wgaGFzUXVlcnkoKSBjb25zdDsKKyAgICBib29sIGhhc0ZyYWdtZW50KCkgY29uc3Q7CisgICAg
Ym9vbCBoYXNQYXRoKCkgY29uc3Q7CisKKyAgICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzKCks
IHRoZXNlIGZ1bmN0aW9ucyBkb24ndCBkZWNvZGUgZXNjYXBlIHNlcXVlbmNlcy4KKyAgICAvLyBU
aGlzIGlzIG5lY2Vzc2FyeSBmb3IgYWNjdXJhdGUgcm91bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5j
b2RpbmcgZG9lc24ndCBlbmNvZGUgJyUnIGNoYXJhY3RlcnMuCisgICAgU3RyaW5nIGVuY29kZWRV
c2VyKCkgY29uc3Q7CisgICAgU3RyaW5nIGVuY29kZWRQYXNzKCkgY29uc3Q7CisKKyAgICBTdHJp
bmcgYmFzZUFzU3RyaW5nKCkgY29uc3Q7CisKKyAgICBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBj
b25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBVUkwncyBwcm90b2Nv
bCBpcyB0aGUgc2FtZSBhcyB0aGUgbnVsbC0KKyAgICAvLyB0ZXJtaW5hdGVkIEFTQ0lJIGFyZ3Vt
ZW50LiBUaGUgYXJndW1lbnQgbXVzdCBiZSBsb3dlci1jYXNlLgorICAgIGJvb2wgcHJvdG9jb2xJ
cyhjb25zdCBjaGFyKikgY29uc3Q7CisgICAgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNv
bnN0OworICAgIGJvb2wgcHJvdG9jb2xJc0Jsb2IoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElz
KCJibG9iIik7IH0KKyAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29uc3QgeyByZXR1cm4gcHJv
dG9jb2xJcygiZGF0YSIpOyB9CisgICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29u
c3Q7CisgICAgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OworICAgIGJvb2wgaXNCbGFua1VSTCgp
IGNvbnN0OworICAgIGJvb2wgY2Fubm90QmVBQmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fu
bm90QmVBQmFzZVVSTDsgfQorCisgICAgYm9vbCBpc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OworCisgICAgYm9vbCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIHJlbW92ZVBvcnQoKTsKKyAg
ICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOworCisgICAgLy8gSW5wdXQgaXMgbGlrZSAi
Zm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCisgICAgdm9pZCBzZXRIb3N0QW5kUG9ydChjb25z
dCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0VXNlcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHNldFBhc3MoY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBw
YXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aAorICAgIC8vIHdp
bGwgYmUgIi8iLgorICAgIHZvaWQgc2V0UGF0aChjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFRo
ZSBxdWVyeSBtYXkgYmVnaW4gd2l0aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3
aWxsIGJlIGFkZGVkCisgICAgLy8gZm9yIHlvdS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVt
cHR5IHN0cmluZyB3aWxsIGxlYXZlIGEgIj8iIGluIHRoZQorICAgIC8vIFVSTCAod2l0aCBub3Ro
aW5nIGFmdGVyIGl0KS4gVG8gY2xlYXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcuCisg
ICAgdm9pZCBzZXRRdWVyeShjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0RnJhZ21lbnRJ
ZGVudGlmaWVyKFN0cmluZ1ZpZXcpOworICAgIHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVy
KCk7CisKKyAgICB2b2lkIHJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7CisKKyAg
ICBzdGF0aWMgYm9vbCBob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyk7CisKKyAgICB1bnNpZ25l
ZCBwYXRoU3RhcnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7CisgICAg
dW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CisKKyAgICBvcGVyYXRvciBjb25z
dCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KKworI2lmIFVTRShDRikKKyAg
ICBVUkwoQ0ZVUkxSZWYpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBj
b25zdDsKKyNlbmRpZgorCisjaWYgVVNFKFNPVVApCisgICAgVVJMKFNvdXBVUkkqKTsKKyAgICBH
VW5pcXVlUHRyPFNvdXBVUkk+IGNyZWF0ZVNvdXBVUkkoKSBjb25zdDsKKyNlbmRpZgorCisjaWYg
VVNFKEZPVU5EQVRJT04pCisgICAgVVJMKE5TVVJMKik7CisgICAgb3BlcmF0b3IgTlNVUkwqKCkg
Y29uc3Q7CisjZW5kaWYKKyNpZmRlZiBfX09CSkNfXworICAgIG9wZXJhdG9yIE5TU3RyaW5nKigp
IGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CisjZW5kaWYKKworI2lmbmRlZiBOREVCVUcKKyAg
ICB2b2lkIHByaW50KCkgY29uc3Q7CisjZW5kaWYKKworICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGUgPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgVVJMJik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXIm
KTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgVVJMUGFyc2VyOworICAgIHZvaWQgaW52
YWxpZGF0ZSgpOworICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29u
c3QgY2hhciopOworICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZm
ZXIpIGNvbnN0OworICAgIHVuc2lnbmVkIGhvc3RTdGFydCgpIGNvbnN0OworCisgICAgZnJpZW5k
IGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBV
UkwmKTsKKyAgICBmcmllbmQgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJik7CisgICAgZnJpZW5kIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKKworICAgIFN0cmluZyBtX3N0cmluZzsKKworICAgIHVuc2lnbmVk
IG1faXNWYWxpZCA6IDE7CisgICAgdW5zaWduZWQgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDog
MTsKKyAgICB1bnNpZ25lZCBtX2Nhbm5vdEJlQUJhc2VVUkwgOiAxOworCisgICAgLy8gVGhpcyBp
cyBvdXQgb2Ygb3JkZXIgdG8gYWxpZ24gdGhlIGJpdHMgYmV0dGVyLiBUaGUgcG9ydCBpcyBhZnRl
ciB0aGUgaG9zdC4KKyAgICB1bnNpZ25lZCBtX3BvcnRMZW5ndGggOiAzOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbWF4UG9ydExlbmd0aCA9ICgxIDw8IDMpIC0gMTsKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4U2NoZW1lTGVuZ3RoID0gKDEgPDwgMjYpIC0gMTsK
KyAgICB1bnNpZ25lZCBtX3NjaGVtZUVuZCA6IDI2OworICAgIHVuc2lnbmVkIG1fdXNlclN0YXJ0
OworICAgIHVuc2lnbmVkIG1fdXNlckVuZDsKKyAgICB1bnNpZ25lZCBtX3Bhc3N3b3JkRW5kOwor
ICAgIHVuc2lnbmVkIG1faG9zdEVuZDsKKyAgICB1bnNpZ25lZCBtX3BhdGhBZnRlckxhc3RTbGFz
aDsKKyAgICB1bnNpZ25lZCBtX3BhdGhFbmQ7CisgICAgdW5zaWduZWQgbV9xdWVyeUVuZDsKK307
CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6
ZW9mKHVuc2lnbmVkKSwgIlVSTCBzaG91bGQgc3RheSBzbWFsbCIpOworCit0ZW1wbGF0ZSA8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4K
K2Jvb2wgVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCit7CisgICAgYXV0
byBvcHRpb25hbFVSTCA9IFVSTDo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghb3B0aW9uYWxV
UkwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVS
TCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgU3Ry
aW5nIHN0cmluZzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmluZykpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgc3RyaW5nKTsKK30KKwor
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdu
b3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYmxhbmtV
UkwoKTsKKworLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCisv
LyBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJM
LgorLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50IGZyb20gdGhlIFVSTCBmdW5jdGlvbnMgaW4g
dGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJz
YWJsZSBVUkwuCisvLyBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1c2UgdmFsaWQg
amF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxpZCBieSBV
UkwuCisKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3Rv
Y29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIHByb3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOworCitX
VEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29s
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYpOyAvLyBC
bGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQgbmV2ZXIgYmUgdXNlZCBmb3IgV2ViIHJlc291cmNl
cy4KKworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3Rv
Y29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcoKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZFByb3RvY29sKGNvbnN0
IFN0cmluZyYpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFV
UkwoY29uc3QgU3RyaW5nJiB1cmwpOworCisvLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNl
cHQgdG8gZXhwb3NlLCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNj
YXBpbmcgcGVyIHRoZSBVUkwgU3RhbmRhcmQuCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVu
Y29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7CisKKy8vIElubGluZXMu
CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7
CisgICAgcmV0dXJuIGEuc3RyaW5nKCkgPT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4g
YS5zdHJpbmcoKSA9PSBiOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIHJldHVybiBhID09IGIuc3RyaW5nKCk7Cit9CisK
K2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7Cisg
ICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5z
dHJpbmcoKSAhPSBiOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYg
YSwgY29uc3QgVVJMJiBiKQoreworICAgIHJldHVybiBhICE9IGIuc3RyaW5nKCk7Cit9CisKKy8v
IElubGluZSB2ZXJzaW9ucyBvZiBzb21lIG5vbi1Hb29nbGVVUkwgZnVuY3Rpb25zIHNvIHdlIGNh
biBnZXQgaW5saW5pbmcKKy8vIHdpdGhvdXQgaGF2aW5nIHRvIGhhdmUgYSBsb3Qgb2YgdWdseSBp
ZmRlZnMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uCisKK2lubGluZSBib29sIFVSTDo6aXNOdWxs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7Cit9CisKK2lubGluZSBi
b29sIFVSTDo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHko
KTsKK30KKworaW5saW5lIGJvb2wgVVJMOjppc1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pc1ZhbGlkOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc1BhdGgoKSBjb25zdAoreworICAg
IHJldHVybiBtX3BhdGhFbmQgIT0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworfQorCitpbmxp
bmUgYm9vbCBVUkw6Omhhc1VzZXJuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VyRW5k
ID4gbV91c2VyU3RhcnQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6aGFzUGFzc3dvcmQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3Bhc3N3b3JkRW5kID4gKG1fdXNlckVuZCArIDEpOworfQorCitp
bmxpbmUgYm9vbCBVUkw6Omhhc1F1ZXJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9xdWVyeUVu
ZCA+IG1fcGF0aEVuZDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpoYXNGcmFnbWVudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlF
bmQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsKK30KKworaW5saW5lIHVu
c2lnbmVkIFVSTDo6cGF0aFN0YXJ0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ob3N0RW5kICsg
bV9wb3J0TGVuZ3RoOworfQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoRW5kKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wYXRoRW5kOworfQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRo
QWZ0ZXJMYXN0U2xhc2goKSBjb25zdAoreworICAgIHJldHVybiBtX3BhdGhBZnRlckxhc3RTbGFz
aDsKK30KKworV1RGX0VYUE9SVF9QUklWQVRFIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBjb25zdCBVUkwmKTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8VVJMPjsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkxIYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAyZmEzZGNjZjY2MTAwZmM4NTA4NjZl
YzM1NDdhM2E4NmRmOWJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhh
c2guaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgVVJMSGFzaF9oCisjZGVmaW5lIFVSTEhhc2hfaAorCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBV
UkxIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkKKyAgICB7
CisgICAgICAgIHJldHVybiBrZXkuc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCk7CisgICAgfQorCisg
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCisgICAgewor
ICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7
CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSBmYWxzZTsKK307CisKKy8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3Ig
U3RyaW5nCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxVUkw+IHsKKyAgICB1c2luZyBI
YXNoID0gVVJMSGFzaDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPiA6
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxVUkw+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
KyNlbmRpZiAvLyBVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MDQyZjEw
MzI1ZjY3ZWMwMmNlOTc1NmY0OTFjMzcwMzM2OWViY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBAIC0wLDAgKzEsMjkyNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KKwor
I2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHVuaWNvZGUvdWlk
bmEuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
I2RlZmluZSBVUkxfUEFSU0VSX0RFQlVHR0lORyAwCisKKyNpZiBVUkxfUEFSU0VSX0RFQlVHR0lO
RworI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pIFdURkxvZ0Fsd2F5cyhfX1ZBX0FSR1NfXykK
KyNlbHNlCisjZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4uLikKKyNlbmRpZgorICAgIAordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2NsYXNzIENvZGVQb2ludEl0ZXJhdG9yIHsKK3B1
YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yKCkgeyB9CisgICAgQUxX
QVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBiZWdpbiwg
Y29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQorICAgICAgICA6IG1fYmVnaW4oYmVnaW4pCisgICAg
ICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSBD
b2RlUG9pbnRJdGVyYXRvcihjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgYmVnaW4sIGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yJiBlbmQpCisgICAgICAgIDogQ29kZVBvaW50SXRlcmF0b3IoYmVnaW4u
bV9iZWdpbiwgZW5kLm1fYmVnaW4pCisgICAgeworICAgICAgICBBU1NFUlQoZW5kLm1fYmVnaW4g
Pj0gYmVnaW4ubV9iZWdpbik7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgVUNoYXIz
MiBvcGVyYXRvciooKSBjb25zdDsKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCk7CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luCisgICAgICAgICAgICAmJiBtX2VuZCA9PSBvdGhlci5t
X2VuZDsKKyAgICB9CisgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3ImIG9wZXJhdG9yPShj
b25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpCisgICAgeworICAgICAgICBtX2JlZ2luID0g
b3RoZXIubV9iZWdpbjsKKyAgICAgICAgbV9lbmQgPSBvdGhlci5tX2VuZDsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBhdEVuZCgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA8PSBtX2VuZCk7CisgICAgICAgIHJldHVy
biBtX2JlZ2luID49IG1fZW5kOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHNpemVf
dCBjb2RlVW5pdHNTaW5jZShjb25zdCBDaGFyYWN0ZXJUeXBlKiByZWZlcmVuY2UpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA+PSByZWZlcmVuY2UpOworICAgICAgICByZXR1
cm4gbV9iZWdpbiAtIHJlZmVyZW5jZTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHNpemVf
dCBjb2RlVW5pdHNTaW5jZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gY29kZVVuaXRzU2luY2Uob3RoZXIubV9iZWdpbik7CisgICAg
fQorICAgIAorcHJpdmF0ZToKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2JlZ2luIHsgbnVs
bHB0ciB9OworICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIG1fZW5kIHsgbnVsbHB0ciB9OworfTsK
KwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBVQ2hhcjMyIENvZGVQb2ludEl0ZXJhdG9yPExD
aGFyPjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWF0RW5kKCkpOworICAgIHJl
dHVybiAqbV9iZWdpbjsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBhdXRvIENvZGVQ
b2ludEl0ZXJhdG9yPExDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgor
eworICAgIG1fYmVnaW4rKzsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRlPD4KK0FM
V0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj46Om9wZXJhdG9yKigp
IGNvbnN0Cit7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBVQ2hhcjMyIGM7CisgICAgVTE2
X0dFVChtX2JlZ2luLCAwLCAwLCBtX2VuZCAtIG1fYmVnaW4sIGMpOworICAgIHJldHVybiBjOwor
fQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIGF1dG8gQ29kZVBvaW50SXRlcmF0b3I8VUNo
YXI+OjpvcGVyYXRvcisrKCkgLT4gQ29kZVBvaW50SXRlcmF0b3ImCit7CisgICAgdW5zaWduZWQg
aSA9IDA7CisgICAgc2l6ZV90IGxlbmd0aCA9IG1fZW5kIC0gbV9iZWdpbjsKKyAgICBVMTZfRldE
XzEobV9iZWdpbiwgaSwgbGVuZ3RoKTsKKyAgICBtX2JlZ2luICs9IGk7CisgICAgcmV0dXJuICp0
aGlzOworfQorICAgIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBhcHBlbmRDb2RlUG9pbnQo
VmVjdG9yPFVDaGFyPiYgZGVzdGluYXRpb24sIFVDaGFyMzIgY29kZVBvaW50KQoreworICAgIGlm
IChVX0lTX0JNUChjb2RlUG9pbnQpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLmFwcGVuZChzdGF0
aWNfY2FzdDxVQ2hhcj4oY29kZVBvaW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
ZGVzdGluYXRpb24ucmVzZXJ2ZUNhcGFjaXR5KGRlc3RpbmF0aW9uLnNpemUoKSArIDIpOworICAg
IGRlc3RpbmF0aW9uLnVuY2hlY2tlZEFwcGVuZChVMTZfTEVBRChjb2RlUG9pbnQpKTsKKyAgICBk
ZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X1RSQUlMKGNvZGVQb2ludCkpOworfQorCitl
bnVtIFVSTENoYXJhY3RlckNsYXNzIHsKKyAgICBVc2VySW5mbyA9IDB4MSwKKyAgICBEZWZhdWx0
ID0gMHgyLAorICAgIEZvcmJpZGRlbkhvc3QgPSAweDQsCisgICAgUXVlcnlQZXJjZW50ID0gMHg4
LAorICAgIFNsYXNoUXVlc3Rpb25Pckhhc2ggPSAweDEwLAorICAgIFZhbGlkU2NoZW1lID0gMHgy
MCwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGNoYXJhY3RlckNsYXNzVGFibGVbMjU2XSA9
IHsKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0
LCAvLyAweDAKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MQor
ICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgyCisgICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDMKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCwgLy8gMHg1CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NworICAg
IFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg4CisgICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHg5CisgICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHhBCisg
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEIKKyAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4QworICAgIFVzZXJJbmZvIHwgRGVmYXVs
dCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4RAorICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhFCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweEYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4MTAKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
MTEKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTIKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTMKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQsIC8vIDB4MTUKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQsIC8vIDB4MTYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MTcKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTgKKyAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTkKKyAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUEKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUIKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQsIC8vIDB4MUMKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQs
IC8vIDB4MUQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUUK
KyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUYKKyAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnICcKKyAg
ICAwLCAvLyAnIScKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vICci
JworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IFNsYXNoUXVlc3Rpb25P
ckhhc2ggfCBGb3JiaWRkZW5Ib3N0LCAvLyAnIycKKyAgICAwLCAvLyAnJCcKKyAgICBGb3JiaWRk
ZW5Ib3N0LCAvLyAnJScKKyAgICAwLCAvLyAnJicKKyAgICAwLCAvLyAnXCcnCisgICAgMCwgLy8g
JygnCisgICAgMCwgLy8gJyknCisgICAgMCwgLy8gJyonCisgICAgVmFsaWRTY2hlbWUsIC8vICcr
JworICAgIDAsIC8vICcsJworICAgIFZhbGlkU2NoZW1lLCAvLyAnLScKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJy4nCisgICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVu
SG9zdCwgLy8gJy8nCisgICAgVmFsaWRTY2hlbWUsIC8vICcwJworICAgIFZhbGlkU2NoZW1lLCAv
LyAnMScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzInCisgICAgVmFsaWRTY2hlbWUsIC8vICczJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnNCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzUnCisgICAgVmFs
aWRTY2hlbWUsIC8vICc2JworICAgIFZhbGlkU2NoZW1lLCAvLyAnNycKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJzgnCisgICAgVmFsaWRTY2hlbWUsIC8vICc5JworICAgIFVzZXJJbmZvIHwgRm9yYmlk
ZGVuSG9zdCwgLy8gJzonCisgICAgVXNlckluZm8sIC8vICc7JworICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vICc8JworICAgIFVzZXJJbmZv
LCAvLyAnPScKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAnPicKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBTbGFzaFF1ZXN0aW9uT3JI
YXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJz8nCisgICAgVXNlckluZm8gfCBGb3JiaWRkZW5Ib3N0
LCAvLyAnQCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0EnCisgICAgVmFsaWRTY2hlbWUsIC8vICdC
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnQycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0QnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdFJworICAgIFZhbGlkU2NoZW1lLCAvLyAnRicKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ0cnCisgICAgVmFsaWRTY2hlbWUsIC8vICdIJworICAgIFZhbGlkU2NoZW1lLCAv
LyAnSScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0onCisgICAgVmFsaWRTY2hlbWUsIC8vICdLJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnTCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ00nCisgICAgVmFs
aWRTY2hlbWUsIC8vICdOJworICAgIFZhbGlkU2NoZW1lLCAvLyAnTycKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJ1AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdRJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
UicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdUJworICAg
IFZhbGlkU2NoZW1lLCAvLyAnVScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1YnCisgICAgVmFsaWRT
Y2hlbWUsIC8vICdXJworICAgIFZhbGlkU2NoZW1lLCAvLyAnWCcKKyAgICBWYWxpZFNjaGVtZSwg
Ly8gJ1knCisgICAgVmFsaWRTY2hlbWUsIC8vICdaJworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVu
SG9zdCwgLy8gJ1snCisgICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlk
ZGVuSG9zdCwgLy8gJ1xcJworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ10nCisg
ICAgVXNlckluZm8sIC8vICdeJworICAgIDAsIC8vICdfJworICAgIFVzZXJJbmZvIHwgRGVmYXVs
dCwgLy8gJ2AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdhJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
YicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdkJworICAg
IFZhbGlkU2NoZW1lLCAvLyAnZScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2YnCisgICAgVmFsaWRT
Y2hlbWUsIC8vICdnJworICAgIFZhbGlkU2NoZW1lLCAvLyAnaCcKKyAgICBWYWxpZFNjaGVtZSwg
Ly8gJ2knCisgICAgVmFsaWRTY2hlbWUsIC8vICdqJworICAgIFZhbGlkU2NoZW1lLCAvLyAnaycK
KyAgICBWYWxpZFNjaGVtZSwgLy8gJ2wnCisgICAgVmFsaWRTY2hlbWUsIC8vICdtJworICAgIFZh
bGlkU2NoZW1lLCAvLyAnbicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ28nCisgICAgVmFsaWRTY2hl
bWUsIC8vICdwJworICAgIFZhbGlkU2NoZW1lLCAvLyAncScKKyAgICBWYWxpZFNjaGVtZSwgLy8g
J3InCisgICAgVmFsaWRTY2hlbWUsIC8vICdzJworICAgIFZhbGlkU2NoZW1lLCAvLyAndCcKKyAg
ICBWYWxpZFNjaGVtZSwgLy8gJ3UnCisgICAgVmFsaWRTY2hlbWUsIC8vICd2JworICAgIFZhbGlk
U2NoZW1lLCAvLyAndycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3gnCisgICAgVmFsaWRTY2hlbWUs
IC8vICd5JworICAgIFZhbGlkU2NoZW1lLCAvLyAneicKKyAgICBVc2VySW5mbyB8IERlZmF1bHQs
IC8vICd7JworICAgIFVzZXJJbmZvLCAvLyAnfCcKKyAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8v
ICd9JworICAgIDAsIC8vICd+JworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg3RgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg4MAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg4MgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MworICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg4NAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg4NgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NworICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg4OAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4
QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4Qwor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg4RgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg5MQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg5MworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg5NQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg5NworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5OAorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg5OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg5QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5
RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5Rgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhBMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMworICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhBNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhBNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNworICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhBOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBOQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhBQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBQgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhBQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhBRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhC
MAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNAorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhCNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNgorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhCNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCOAorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhCOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhCQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQworICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhCRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCRQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhCRgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhDMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhD
MworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNQor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNworICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhDOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDOQorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhDQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhDQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhDRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhEMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhEMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMworICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhENAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhE
NgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOAor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhEQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQworICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhERAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhERgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhFMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhFMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNAorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhFNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhFNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhF
OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRAorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhFRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRgorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhGMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhGMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMworICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhGNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhGNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNworICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhGOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhGQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhG
QworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRQor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRgorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0MwQ29udHJvbChDaGFyYWN0ZXJU
eXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MUY7IH0KK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRy
b2xPclNwYWNlKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0g
MHgyMDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBz
dGF0aWMgYm9vbCBpc1RhYk9yTmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gY2hhcmFjdGVyIDw9IDB4RCAmJiBjaGFyYWN0ZXIgPj0gMHg5ICYmIGNoYXJhY3RlciAhPSAw
eEIgJiYgY2hhcmFjdGVyICE9IDB4QzsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luU2ltcGxlRW5jb2RlU2V0KENoYXJhY3Rl
clR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGlzQzBDb250cm9s
KGNoYXJhY3Rlcik7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaXNJbkRlZmF1bHRFbmNvZGVTZXQoQ2hhcmFjdGVyVHlwZSBjaGFy
YWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xhc3NUYWJsZVtj
aGFyYWN0ZXJdICYgRGVmYXVsdDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
QUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoQ2hhcmFjdGVy
VHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xh
c3NUYWJsZVtjaGFyYWN0ZXJdICYgVXNlckluZm87IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNQZXJjZW50T3JOb25BU0NJSShD
aGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gIWlzQVNDSUkoY2hhcmFjdGVyKSB8fCBj
aGFyYWN0ZXIgPT0gJyUnOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBib29sIGlzU2xhc2hRdWVzdGlvbk9ySGFzaChDaGFyYWN0ZXJUeXBl
IGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICdcXCcgJiYgY2hhcmFjdGVyQ2xhc3NU
YWJsZVtjaGFyYWN0ZXJdICYgU2xhc2hRdWVzdGlvbk9ySGFzaDsgfQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1ZhbGlkU2NoZW1l
Q2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0g
J3onICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFZhbGlkU2NoZW1lOyB9Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29s
IGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gY2hhcmFjdGVyIDw9ICddJyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBG
b3JiaWRkZW5Ib3N0OyB9CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIHNob3VsZFBlcmNlbnRF
bmNvZGVRdWVyeUJ5dGUodWludDhfdCBieXRlLCBjb25zdCBib29sJiB1cmxJc1NwZWNpYWwpCit7
CisgICAgaWYgKGNoYXJhY3RlckNsYXNzVGFibGVbYnl0ZV0gJiBRdWVyeVBlcmNlbnQpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmIChieXRlID09ICdcJycgJiYgdXJsSXNTcGVjaWFsKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVVJMUGFy
c2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gV1RGOjpp
c0luVXNlckluZm9FbmNvZGVTZXQoYyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGUsIFVSTFBhcnNlcjo6UmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZpb2xh
dGlvbj4KK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFkdmFuY2UoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikKK3sKKyAg
ICArK2l0ZXJhdG9yOworICAgIHdoaWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQoKSAmJiBp
c1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICBpZiAocmVwb3J0U3ludGF4Vmlv
bGF0aW9uID09IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6WWVzKQorICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAr
K2l0ZXJhdG9yOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K2Jvb2wgVVJMUGFyc2VyOjp0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9y
dFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVw
b3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgIHJldHVybiBpdGVyYXRvci5h
dEVuZCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lO
TElORSBib29sIFVSTFBhcnNlcjo6aXNXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkg
fHwgIWlzQVNDSUlBbHBoYSgqaXRlcmF0b3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
YWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRv
cik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoKml0ZXJhdG9yID09ICc6JykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKFVO
TElLRUxZKCppdGVyYXRvciA9PSAnfCcpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFwcGVuZFRvQVND
SUlCdWZmZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgQVNTRVJUKGlzQVNDSUkoY29kZVBv
aW50KSk7CisgICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAg
ICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY29kZVBvaW50KTsKK30KKworQUxXQVlTX0lOTElORSB2
b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBjaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xh
dGlvbikpCisgICAgICAgIG1fYXNjaWlCdWZmZXIuYXBwZW5kKGNoYXJhY3RlcnMsIGxlbmd0aCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6
YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoaXRlcmF0b3Ip
KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCppdGVyYXRvcik7CisgICAgYWR2YW5jZShpdGVy
YXRvcik7CisgICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKKyAgICBBU1NFUlQoKml0ZXJh
dG9yID09ICc6JyB8fCAqaXRlcmF0b3IgPT0gJ3wnKTsKKyAgICBpZiAoKml0ZXJhdG9yID09ICd8
JykKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCc6Jyk7CisgICAgYWR2YW5jZShpdGVyYXRvcik7Cit9CisKK2Jvb2wgVVJMUGFyc2Vy
Ojpjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmIGJhc2UpCit7CisgICAgaWYg
KGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhc2Uu
bV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggPCBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsK
KyAgICAgICAgaWYgKGJhc2UubV9zdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0
IExDaGFyKiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczgoKTsKKyAgICAgICAgICAg
IENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQgKyBiYXNl
Lm1fcG9ydExlbmd0aCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAg
ICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAgICAgICBh
cHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hh
ciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAgQ29k
ZVBvaW50SXRlcmF0b3I8VUNoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9w
b3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAg
ICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgeworICAgICAgICAgICAgICAgIGFwcGVu
ZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6c2hvdWxkQ29w
eUZpbGVVUkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7Cisg
ICAgaWYgKCFpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgYWR2YW5jZShpdGVyYXRvcik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGFkdmFuY2UoaXRlcmF0b3IpOworICAgIGlmIChpdGVyYXRvci5h
dEVuZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gIWlzU2xhc2hRdWVzdGlv
bk9ySGFzaCgqaXRlcmF0b3IpOworfQorCitzdGF0aWMgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1
aW50OF90IGJ5dGUsIFZlY3RvcjxMQ2hhcj4mIGJ1ZmZlcikKK3sKKyAgICBidWZmZXIuYXBwZW5k
KCclJyk7CisgICAgYnVmZmVyLmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChieXRl
KSk7CisgICAgYnVmZmVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChieXRlKSk7
Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90IGJ5dGUpCit7
CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCclJyk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih1cHBlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdChieXRlKSk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvQVND
SUlIZXhEaWdpdChieXRlKSk7Cit9CisKK2NvbnN0IGNoYXIgcmVwbGFjZW1lbnRDaGFyYWN0ZXJV
VEY4UGVyY2VudEVuY29kZWRbMTBdID0gIiVFRiVCRiVCRCI7Citjb25zdCBzaXplX3QgcmVwbGFj
ZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGggPSBzaXplb2YocmVwbGFjZW1l
bnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQpIC0gMTsKKwordGVtcGxhdGU8Ym9vbCgqaXNJ
bkNvZGVTZXQpKFVDaGFyMzIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElO
RSB2b2lkIFVSTFBhcnNlcjo6dXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIEFTU0VSVCghaXRlcmF0b3IuYXRF
bmQoKSk7CisgICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRlcmF0b3I7CisgICAgaWYgKExJS0VM
WShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc0luQ29kZVNl
dChjb2RlUG9pbnQpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNJbkNvZGVTZXQoY29kZVBv
aW50KSwgImlzSW5Db2RlU2V0IHNob3VsZCBhbHdheXMgcmV0dXJuIHRydWUgZm9yIG5vbi1BU0NJ
SSBjaGFyYWN0ZXJzIik7CisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAKKyAg
ICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKGNvZGVQb2ludCkpIHsKKyAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCwgcmVwbGFj
ZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOworICAgIGlu
dDMyX3Qgb2Zmc2V0ID0gMDsKKyAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCBj
b2RlUG9pbnQpOworICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytpKQorICAg
ICAgICBwZXJjZW50RW5jb2RlQnl0ZShidWZmZXJbaV0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6dXRmOFF1ZXJ5
RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikK
K3sKKyAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOworICAgIFVDaGFyMzIgY29kZVBvaW50
ID0gKml0ZXJhdG9yOworICAgIGlmIChMSUtFTFkoaXNBU0NJSShjb2RlUG9pbnQpKSkgeworICAg
ICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShjb2RlUG9pbnQs
IG1fdXJsSXNTcGVjaWFsKSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRv
cik7CisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShjb2RlUG9pbnQpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29kZVBvaW50KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwor
ICAgIAorICAgIGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgeworICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVk
LCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKKyAg
ICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAgVThfQVBQRU5EX1VOU0FGRShidWZmZXIsIG9mZnNl
dCwgY29kZVBvaW50KTsKKyAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBvZmZzZXQ7ICsraSkg
eworICAgICAgICBhdXRvIGJ5dGUgPSBidWZmZXJbaV07CisgICAgICAgIGlmIChzaG91bGRQZXJj
ZW50RW5jb2RlUXVlcnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkKKyAgICAgICAgICAgIHBl
cmNlbnRFbmNvZGVCeXRlKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKGJ5dGUpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjplbmNvZGVOb25VVEY4UXVlcnkoY29uc3QgVmVjdG9y
PFVDaGFyPiYgc291cmNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBhdXRvIGVuY29kZWQg
PSBlbmNvZGluZy5lbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcoc291cmNlLmRhdGEoKSwg
c291cmNlLnNpemUoKSkpOworICAgIGF1dG8qIGRhdGEgPSBlbmNvZGVkLmRhdGEoKTsKKyAgICBz
aXplX3QgbGVuZ3RoID0gZW5jb2RlZC5zaXplKCk7CisgICAgCisgICAgaWYgKCFsZW5ndGggPT0g
IWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9y
ICg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkp
OworICAgICAgICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOworICAgICAgICBpZiAoVU5MSUtFTFko
Ynl0ZSAhPSAqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0
b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVOTElLRUxZ
KHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKSkgewor
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYnl0ZSk7CisgICAgICAg
ICsraXRlcmF0b3I7CisgICAgfQorICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSAmJiBpc1Rh
Yk9yTmV3bGluZSgqaXRlcmF0b3IpKQorICAgICAgICArK2l0ZXJhdG9yOworICAgIEFTU0VSVCgo
aSA9PSBsZW5ndGgpID09IGl0ZXJhdG9yLmF0RW5kKCkpOworICAgIGZvciAoOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICAg
ICAgdWludDhfdCBieXRlID0gZGF0YVtpXTsKKyAgICAgICAgaWYgKHNob3VsZFBlcmNlbnRFbmNv
ZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQorICAgICAgICAgICAgcGVyY2VudEVu
Y29kZUJ5dGUoYnl0ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoYnl0ZSk7CisgICAgfQorfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBVUkxQYXJz
ZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCit7CisgICAgc3Rh
dGljIGNvbnN0IHVpbnQxNl90IGZ0cFBvcnQgPSAyMTsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2
X3QgZ29waGVyUG9ydCA9IDcwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBodHRwUG9ydCA9
IDgwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBodHRwc1BvcnQgPSA0NDM7CisgICAgc3Rh
dGljIGNvbnN0IHVpbnQxNl90IHdzUG9ydCA9IDgwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCB3c3NQb3J0ID0gNDQzOworICAgIAorICAgIGF1dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgp
OworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN3
aXRjaCAoc2NoZW1lWzBdKSB7CisgICAgY2FzZSAndyc6CisgICAgICAgIHN3aXRjaCAobGVuZ3Ro
KSB7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnKQor
ICAgICAgICAgICAgICAgIHJldHVybiB3c1BvcnQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdz
JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHdzc1BvcnQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgY2Fz
ZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgNDoKKyAgICAg
ICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJd
ID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGh0dHBQb3J0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKKyAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzNdID09ICdwJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAncycpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGh0dHBzUG9ydDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICB9CisgICAgY2FzZSAnZyc6CisgICAgICAgIGlmIChsZW5ndGggPT0gNgorICAgICAg
ICAgICAgJiYgc2NoZW1lWzFdID09ICdvJworICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdw
JworICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJworICAgICAgICAgICAgJiYgc2NoZW1l
WzRdID09ICdlJworICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKKyAgICAgICAgICAg
IHJldHVybiBnb3BoZXJQb3J0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGNh
c2UgJ2YnOgorICAgICAgICBpZiAobGVuZ3RoID09IDMKKyAgICAgICAgICAgICYmIHNjaGVtZVsx
XSA9PSAndCcKKyAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcpCisgICAgICAgICAgICBy
ZXR1cm4gZnRwUG9ydDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KK30KKworZW51bSBjbGFzcyBT
Y2hlbWUgeworICAgIFdTLAorICAgIFdTUywKKyAgICBGaWxlLAorICAgIEZUUCwKKyAgICBHb3Bo
ZXIsCisgICAgSFRUUCwKKyAgICBIVFRQUywKKyAgICBOb25TcGVjaWFsCit9OworCitBTFdBWVNf
SU5MSU5FIHN0YXRpYyBTY2hlbWUgc2NoZW1lKFN0cmluZ1ZpZXcgc2NoZW1lKQoreworICAgIGF1
dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7CisgICAg
Y2FzZSAnZic6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgMzoKKyAg
ICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzJdID09ICdwJykKKyAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpGVFA7CisgICAgICAg
ICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICBjYXNlIDQ6CisgICAgICAg
ICAgICBpZiAoc2NoZW1lWzFdID09ICdpJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9
PSAnbCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2UnKQorICAgICAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6OkZpbGU7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25T
cGVjaWFsOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9u
U3BlY2lhbDsKKyAgICAgICAgfQorICAgIGNhc2UgJ2cnOgorICAgICAgICBpZiAobGVuZ3RoID09
IDYKKyAgICAgICAgICAgICYmIHNjaGVtZVsxXSA9PSAnbycKKyAgICAgICAgICAgICYmIHNjaGVt
ZVsyXSA9PSAncCcKKyAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnaCcKKyAgICAgICAgICAg
ICYmIHNjaGVtZVs0XSA9PSAnZScKKyAgICAgICAgICAgICYmIHNjaGVtZVs1XSA9PSAncicpCisg
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpHb3BoZXI7CisgICAgICAgIHJldHVybiBTY2hlbWU6
Ok5vblNwZWNpYWw7CisgICAgY2FzZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7Cisg
ICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsz
XSA9PSAncCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRUUDsKKyAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGNhc2UgNToKKyAgICAgICAg
ICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcKKyAgICAgICAgICAgICAg
ICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkhU
VFBTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIH0K
KyAgICBjYXNlICd3JzoKKyAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAgICAgICAgY2FzZSAy
OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6V1M7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwor
ICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJworICAgICAg
ICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNj
aGVtZTo6V1NTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAg
ICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwor
ICAgIH0KK30KKworc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6bWF5YmVDYW5vbmlj
YWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVtZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWlzQVNDSUlB
bHBoYShzY2hlbWVbMF0pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgZm9y
IChzaXplX3QgaSA9IDE7IGkgPCBzY2hlbWUubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAo
aXNBU0NJSUFscGhhbnVtZXJpYyhzY2hlbWVbaV0pIHx8IHNjaGVtZVtpXSA9PSAnKycgfHwgc2No
ZW1lW2ldID09ICctJyB8fCBzY2hlbWVbaV0gPT0gJy4nKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJuIHNjaGVt
ZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworfQorCitib29sIFVSTFBhcnNlcjo6aXNTcGVj
aWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lQXJnKQoreworICAgIHJldHVybiBzY2hlbWUo
c2NoZW1lQXJnKSAhPSBTY2hlbWU6Ok5vblNwZWNpYWw7Cit9CisKK2VudW0gY2xhc3MgVVJMUGFy
c2VyOjpVUkxQYXJ0IHsKKyAgICBTY2hlbWVFbmQsCisgICAgVXNlclN0YXJ0LAorICAgIFVzZXJF
bmQsCisgICAgUGFzc3dvcmRFbmQsCisgICAgSG9zdEVuZCwKKyAgICBQb3J0RW5kLAorICAgIFBh
dGhBZnRlckxhc3RTbGFzaCwKKyAgICBQYXRoRW5kLAorICAgIFF1ZXJ5RW5kLAorfTsKKworc2l6
ZV90IFVSTFBhcnNlcjo6dXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYgdXJsLCBVUkxQYXJ0
IHBhcnQpCit7CisgICAgc3dpdGNoIChwYXJ0KSB7CisgICAgY2FzZSBVUkxQYXJ0OjpRdWVyeUVu
ZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3F1ZXJ5RW5kOworICAgIGNhc2UgVVJMUGFydDo6UGF0
aEVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhFbmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpQ
YXRoQWZ0ZXJMYXN0U2xhc2g6CisgICAgICAgIHJldHVybiB1cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CisgICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgorICAgICAgICByZXR1cm4gdXJsLm1faG9z
dEVuZCArIHVybC5tX3BvcnRMZW5ndGg7CisgICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgorICAg
ICAgICByZXR1cm4gdXJsLm1faG9zdEVuZDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhc3N3b3JkRW5k
OgorICAgICAgICByZXR1cm4gdXJsLm1fcGFzc3dvcmRFbmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpV
c2VyRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fdXNlckVuZDsKKyAgICBjYXNlIFVSTFBhcnQ6
OlVzZXJTdGFydDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3VzZXJTdGFydDsKKyAgICBjYXNlIFVS
TFBhcnQ6OlNjaGVtZUVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3NjaGVtZUVuZDsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgVVJM
UGFyc2VyOjpjb3B5QVNDSUlTdHJpbmdVbnRpbChjb25zdCBTdHJpbmcmIHN0cmluZywgc2l6ZV90
IGxlbmd0aCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGggPD0gc3RyaW5nLmxlbmd0aCgp
KTsKKyAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJU
KG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwor
ICAgIGVsc2UgeworICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHN0cmluZy5jaGFy
YWN0ZXJzMTYoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgVUNoYXIgYyA9IGNoYXJhY3RlcnNbaV07CisgICAgICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpc0FTQ0lJKGMpKTsKKyAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoYyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6Y29weVVSTFBhcnRzVW50aWwo
Y29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0IHBhcnQsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvciwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpCit7CisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKworICAgIG1f
YXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICBjb3B5QVNDSUlTdHJpbmdVbnRpbChiYXNlLm1fc3Ry
aW5nLCB1cmxMZW5ndGhVbnRpbFBhcnQoYmFzZSwgcGFydCkpOworICAgIHN3aXRjaCAocGFydCkg
eworICAgIGNhc2UgVVJMUGFydDo6UXVlcnlFbmQ6CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBiYXNlLm1fcXVlcnlFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFy
dDo6UGF0aEVuZDoKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gYmFzZS5tX3BhdGhFbmQ7Cisg
ICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNo
OgorICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJhc2UubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6UG9ydEVu
ZDoKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gYmFzZS5tX3BvcnRMZW5ndGg7CisgICAg
ICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6SG9zdEVuZDoKKyAgICAgICAgbV91
cmwubV9ob3N0RW5kID0gYmFzZS5tX2hvc3RFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAg
IGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBiYXNlLm1fcGFzc3dvcmRFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJM
UGFydDo6VXNlckVuZDoKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gYmFzZS5tX3VzZXJFbmQ7
CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6VXNlclN0YXJ0OgorICAg
ICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGJhc2UubV91c2VyU3RhcnQ7CisgICAgICAgIEZBTExU
SFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6U2NoZW1lRW5kOgorICAgICAgICBtX3VybC5tX2lz
VmFsaWQgPSBiYXNlLm1faXNWYWxpZDsKKyAgICAgICAgbV91cmwubV9wcm90b2NvbElzSW5IVFRQ
RmFtaWx5ID0gYmFzZS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7CisgICAgICAgIG1fdXJsLm1f
c2NoZW1lRW5kID0gYmFzZS5tX3NjaGVtZUVuZDsKKyAgICB9CisgICAgc3dpdGNoIChzY2hlbWUo
U3RyaW5nVmlldyhtX2FzY2lpQnVmZmVyLmRhdGEoKSwgbV91cmwubV9zY2hlbWVFbmQpKSkgewor
ICAgIGNhc2UgU2NoZW1lOjpXUzoKKyAgICBjYXNlIFNjaGVtZTo6V1NTOgorICAgICAgICBub25V
VEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1lOjpGaWxlOgorICAgICAgICBtX3Vy
bElzRmlsZSA9IHRydWU7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgU2NoZW1lOjpG
VFA6CisgICAgY2FzZSBTY2hlbWU6OkdvcGhlcjoKKyAgICBjYXNlIFNjaGVtZTo6SFRUUDoKKyAg
ICBjYXNlIFNjaGVtZTo6SFRUUFM6CisgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgorICAgICAgICBtX3Vy
bElzU3BlY2lhbCA9IGZhbHNlOworICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxw
dHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3N0YXRpYyBjb25zdCBjaGFyIGRvdEFTQ0lJQ29kZVsyXSA9IHsnMicsICdlJ307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFy
c2VyOjppc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+IGMpCit7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRT
eW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICAgICAgcmV0dXJuIGMuYXRFbmQoKSB8fCBpc1Ns
YXNoUXVlc3Rpb25Pckhhc2goKmMpOworICAgIH0KKyAgICBpZiAoKmMgIT0gJyUnKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhW
aW9sYXRpb246Ok5vPihjKTsKKyAgICBpZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29k
ZVswXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwg
UmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29k
ZVsxXSkgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hRdWVzdGlv
bk9ySGFzaCgqYyk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6OmlzRG91
YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sK
KyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCpjID09
ICcuJykgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsK
KyAgICB9CisgICAgaWYgKCpjICE9ICclJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFk
dmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAg
aWYgKGMuYXRFbmQoKSB8fCAqYyAhPSBkb3RBU0NJSUNvZGVbMF0pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6
Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pIHsKKyAgICAgICAgYWR2YW5j
ZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICAgICAg
cmV0dXJuIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2Vy
Ojpjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYykpOworICAg
IGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYgKCFjLmF0
RW5kKCkpIHsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykKKyAgICAg
ICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IEFTU0VSVCgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOworICAgICAgICBhZHZhbmNlKGMpOworICAgICAg
ICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAg
ICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKTsKKyAgICAg
ICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGlm
ICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVCgqYyA9PSAnPycgfHwgKmMg
PT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpjb25zdW1lRG91YmxlRG90UGF0aFNlZ21lbnQoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlzRG91Ymxl
RG90UGF0aFNlZ21lbnQoYykpOworICAgIGlmICgqYyA9PSAnLicpCisgICAgICAgIGFkdmFuY2Uo
Yyk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOworICAgICAgICBhZHZh
bmNlKGMpOworICAgICAgICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKKyAgICAgICAg
YWR2YW5jZShjKTsKKyAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlD
b2RlWzFdKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICB9CisgICAgY29uc3VtZVNpbmdsZURv
dFBhdGhTZWdtZW50KGMpOworfQorCitib29sIFVSTFBhcnNlcjo6c2hvdWxkUG9wUGF0aCh1bnNp
Z25lZCBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gpCit7CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4
VmlvbGF0aW9uKTsKKyAgICBpZiAoIW1fdXJsSXNGaWxlKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIEFTU0VSVChtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSBtX2FzY2lpQnVmZmVy
LnNpemUoKSk7CisgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGNvbXBvbmVudFRvUG9wKCZt
X2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0sICZtX2FzY2lpQnVmZmVyWzBdICsg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworICAgIGlmIChuZXdQYXRoQWZ0ZXJMYXN0U2xh
c2ggPT0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSAmJiBpc1dpbmRv
d3NEcml2ZUxldHRlcihjb21wb25lbnRUb1BvcCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBVUkxQYXJzZXI6OnBvcFBhdGgoKQoreworICAgIEFT
U0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgaWYgKG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSkgewor
ICAgICAgICBhdXRvIG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoIC0gMTsKKyAgICAgICAgaWYgKG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNs
YXNoXSA9PSAnLycpCisgICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKKyAgICAg
ICAgd2hpbGUgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA+IG1fdXJsLm1faG9zdEVuZCArIG1fdXJs
Lm1fcG9ydExlbmd0aCAmJiBtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0gIT0g
Jy8nKQorICAgICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07CisgICAgICAgIG5ld1Bh
dGhBZnRlckxhc3RTbGFzaCsrOworICAgICAgICBpZiAoc2hvdWxkUG9wUGF0aChuZXdQYXRoQWZ0
ZXJMYXN0U2xhc2gpKQorICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBu
ZXdQYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgfQorICAgIG1fYXNjaWlCdWZmZXIucmVzaXplKG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpzeW50YXhWaW9sYXRpb24oY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIGlmIChtX2RpZFNlZVN5
bnRheFZpb2xhdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGlkU2VlU3ludGF4VmlvbGF0
aW9uID0gdHJ1ZTsKKyAgICAKKyAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwor
ICAgIHNpemVfdCBjb2RlVW5pdHNUb0NvcHkgPSBpdGVyYXRvci5jb2RlVW5pdHNTaW5jZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IENoYXJhY3RlclR5cGUqPihtX2lucHV0QmVnaW4pKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChjb2RlVW5pdHNUb0NvcHkgPD0gbV9pbnB1dFN0cmluZy5sZW5ndGgoKSk7
CisgICAgbV9hc2NpaUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobV9pbnB1dFN0cmluZy5sZW5ndGgo
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlVW5pdHNUb0NvcHk7ICsraSkgewor
ICAgICAgICBBU1NFUlQoaXNBU0NJSShtX2lucHV0U3RyaW5nW2ldKSk7CisgICAgICAgIG1fYXNj
aWlCdWZmZXIudW5jaGVja2VkQXBwZW5kKG1faW5wdXRTdHJpbmdbaV0pOworICAgIH0KK30KKwor
dm9pZCBVUkxQYXJzZXI6OmZhaWx1cmUoKQoreworICAgIG1fdXJsLmludmFsaWRhdGUoKTsKKyAg
ICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJpbmc7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6Y2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBVQ2hhcjMyIGNvZGVQ
b2ludCkKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCB0b0FTQ0lJTG93ZXIoKml0ZXJh
dG9yKSAhPSBjb2RlUG9pbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENo
YXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wg
VVJMUGFyc2VyOjppc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
IGl0ZXJhdG9yKQoreworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3Is
ICdsJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29k
ZVBvaW50KGl0ZXJhdG9yLCAnbycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFj
aGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2MnKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdhJykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0
ZXJhdG9yLCAnbCcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2Fs
aG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2gnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdvJykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAn
cycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQ
b2ludChpdGVyYXRvciwgJ3QnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBp
dGVyYXRvci5hdEVuZCgpOworfQorCitib29sIFVSTFBhcnNlcjo6aXNMb2NhbGhvc3QoU3RyaW5n
VmlldyB2aWV3KQoreworICAgIGlmICh2aWV3LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gaXNB
dExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4odmlldy5jaGFyYWN0ZXJzOCgpLCB2
aWV3LmNoYXJhY3RlcnM4KCkgKyB2aWV3Lmxlbmd0aCgpKSk7CisgICAgcmV0dXJuIGlzQXRMb2Nh
bGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+KHZpZXcuY2hhcmFjdGVyczE2KCksIHZpZXcu
Y2hhcmFjdGVyczE2KCkgKyB2aWV3Lmxlbmd0aCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgU3Ry
aW5nVmlldyBVUkxQYXJzZXI6OnBhcnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6ZV90IGxl
bmd0aCkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKSB7Cisg
ICAgICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSBtX2FzY2lpQnVmZmVyLnNpemUoKSk7Cisg
ICAgICAgIHJldHVybiBTdHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpICsgc3RhcnQsIGxl
bmd0aCk7CisgICAgfQorICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSBtX2lucHV0U3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX2lucHV0U3RyaW5nKS5zdWJzdHJp
bmcoc3RhcnQsIGxlbmd0aCk7Cit9CisKK0FMV0FZU19JTkxJTkUgVUNoYXIgVVJMUGFyc2VyOjpw
YXJzZWREYXRhVmlldyhzaXplX3QgcG9zaXRpb24pCit7CisgICAgaWYgKFVOTElLRUxZKG1fZGlk
U2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAgICAgcmV0dXJuIG1fYXNjaWlCdWZmZXJbcG9zaXRp
b25dOworICAgIHJldHVybiBtX2lucHV0U3RyaW5nW3Bvc2l0aW9uXTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgc2l6ZV90IFVSTFBhcnNlcjo6
Y3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQor
ICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlci5zaXplKCk7CisgICAgCisgICAgcmV0dXJuIGl0
ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlw
ZSo+KG1faW5wdXRCZWdpbikpOworfQorCitVUkxQYXJzZXI6OlVSTFBhcnNlcihjb25zdCBTdHJp
bmcmIGlucHV0LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcpCisgICAgOiBtX2lucHV0U3RyaW5nKGlucHV0KQoreworICAgIGlmIChp
bnB1dC5pc051bGwoKSkgeworICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgIWJhc2UubV9j
YW5ub3RCZUFCYXNlVVJMKSB7CisgICAgICAgICAgICBtX3VybCA9IGJhc2U7CisgICAgICAgICAg
ICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKGlucHV0LmlzOEJpdCgpKSB7CisgICAgICAgIG1faW5w
dXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnM4KCk7CisgICAgICAgIHBhcnNlKGlucHV0LmNoYXJh
Y3RlcnM4KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9pbnB1dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVyczE2KCk7
CisgICAgICAgIHBhcnNlKGlucHV0LmNoYXJhY3RlcnMxNigpLCBpbnB1dC5sZW5ndGgoKSwgYmFz
ZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgIH0KKworICAgIEFTU0VSVCghbV91cmwubV9p
c1ZhbGlkCisgICAgICAgIHx8IG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uID09IChtX3VybC5zdHJp
bmcoKSAhPSBpbnB1dCkKKyAgICAgICAgfHwgKGlucHV0LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8
aXNDMENvbnRyb2xPclNwYWNlPigpCisgICAgICAgICAgICAmJiBtX3VybC5tX3N0cmluZyA9PSBi
YXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5kKSkpOworICAgIEFTU0VSVChpbnRlcm5h
bFZhbHVlc0NvbnNpc3RlbnQobV91cmwpKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgaWYg
KCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikgeworICAgICAgICAvLyBGb3JjZSBhIHN5bnRheCB2
aW9sYXRpb24gYXQgdGhlIGJlZ2lubmluZyB0byBtYWtlIHN1cmUgd2UgZ2V0IHRoZSBzYW1lIHJl
c3VsdC4KKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCIgIiwgaW5wdXQpLCBi
YXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgIFVSTCBwYXJzZWQgPSBwYXJzZXIu
cmVzdWx0KCk7CisgICAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKQorICAgICAgICAgICAgQVNT
RVJUKGFsbFZhbHVlc0VxdWFsKHBhcnNlci5yZXN1bHQoKSwgbV91cmwpKTsKKyAgICB9CisjZW5k
aWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2Vy
OjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBpbnB1dCwgY29uc3QgdW5zaWduZWQgbGVuZ3Ro
LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpCit7CisgICAgVVJMX1BBUlNFUl9MT0coIlBhcnNpbmcgVVJMIDwlcz4gYmFzZSA8JXM+
IiwgU3RyaW5nKGlucHV0LCBsZW5ndGgpLnV0ZjgoKS5kYXRhKCksIGJhc2Uuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgbV91cmwgPSB7IH07CisgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIu
aXNFbXB0eSgpKTsKKworICAgIFZlY3RvcjxVQ2hhcj4gcXVlcnlCdWZmZXI7CisKKyAgICB1bnNp
Z25lZCBlbmRJbmRleCA9IGxlbmd0aDsKKyAgICB3aGlsZSAoVU5MSUtFTFkoZW5kSW5kZXggJiYg
aXNDMENvbnRyb2xPclNwYWNlKGlucHV0W2VuZEluZGV4IC0gMV0pKSkgeworICAgICAgICBzeW50
YXhWaW9sYXRpb24oQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaW5wdXQsIGlucHV0
KSk7CisgICAgICAgIGVuZEluZGV4LS07CisgICAgfQorICAgIENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+IGMoaW5wdXQsIGlucHV0ICsgZW5kSW5kZXgpOworICAgIENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+IGF1dGhvcml0eU9ySG9zdEJlZ2luOworICAgIENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IHF1ZXJ5QmVnaW47CisgICAgd2hpbGUgKFVOTElLRUxZ
KCFjLmF0RW5kKCkgJiYgaXNDMENvbnRyb2xPclNwYWNlKCpjKSkpIHsKKyAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGMpOworICAgICAgICArK2M7CisgICAgfQorICAgIGF1dG8gYmVnaW5BZnRlckNv
bnRyb2xBbmRTcGFjZSA9IGM7CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7Cisg
ICAgICAgIFNjaGVtZVN0YXJ0LAorICAgICAgICBTY2hlbWUsCisgICAgICAgIE5vU2NoZW1lLAor
ICAgICAgICBTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSwKKyAgICAgICAgUGF0aE9yQXV0aG9y
aXR5LAorICAgICAgICBSZWxhdGl2ZSwKKyAgICAgICAgUmVsYXRpdmVTbGFzaCwKKyAgICAgICAg
U3BlY2lhbEF1dGhvcml0eVNsYXNoZXMsCisgICAgICAgIFNwZWNpYWxBdXRob3JpdHlJZ25vcmVT
bGFzaGVzLAorICAgICAgICBBdXRob3JpdHlPckhvc3QsCisgICAgICAgIEhvc3QsCisgICAgICAg
IEZpbGUsCisgICAgICAgIEZpbGVTbGFzaCwKKyAgICAgICAgRmlsZUhvc3QsCisgICAgICAgIFBh
dGhTdGFydCwKKyAgICAgICAgUGF0aCwKKyAgICAgICAgQ2Fubm90QmVBQmFzZVVSTFBhdGgsCisg
ICAgICAgIFVURjhRdWVyeSwKKyAgICAgICAgTm9uVVRGOFF1ZXJ5LAorICAgICAgICBGcmFnbWVu
dCwKKyAgICB9OworCisjZGVmaW5lIExPR19TVEFURSh4KSBVUkxfUEFSU0VSX0xPRygiU3RhdGUg
JXMsIGNvZGUgcG9pbnQgJWMsIHBhcnNlZCBkYXRhIDwlcz4gc2l6ZSAlenUiLCB4LCAqYywgcGFy
c2VkRGF0YVZpZXcoMCwgY3VycmVudFBvc2l0aW9uKGMpKS51dGY4KCkuZGF0YSgpLCBjdXJyZW50
UG9zaXRpb24oYykpCisjZGVmaW5lIExPR19GSU5BTF9TVEFURSh4KSBVUkxfUEFSU0VSX0xPRygi
RmluYWwgU3RhdGU6ICVzIiwgeCkKKworICAgIFN0YXRlIHN0YXRlID0gU3RhdGU6OlNjaGVtZVN0
YXJ0OworICAgIHdoaWxlICghYy5hdEVuZCgpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc1Rh
Yk9yTmV3bGluZSgqYykpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAg
ICAgICAgICArK2M7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAg
IHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6CisgICAg
ICAgICAgICBMT0dfU1RBVEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgICAgICBpZiAoaXNBU0NJ
SUFscGhhKCpjKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIo
KmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7CisgICAgICAgICAg
ICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAgICAgIGMgPSBiZWdp
bkFmdGVyQ29udHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U2NoZW1lOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgorICAgICAg
ICAgICAgTE9HX1NUQVRFKCJTY2hlbWUiKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkU2NoZW1l
Q2hhcmFjdGVyKCpjKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBw
ZXIoKmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKCpjID09ICc6JykgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNj
aGVtZUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAoc2NoZW1l
RW5kID4gVVJMOjptYXhTY2hlbWVMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbHVy
ZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIG1fdXJsLm1fc2NoZW1lRW5kID0gc2NoZW1lRW5kOworICAgICAgICAgICAg
ICAgIFN0cmluZ1ZpZXcgdXJsU2NoZW1lID0gcGFyc2VkRGF0YVZpZXcoMCwgbV91cmwubV9zY2hl
bWVFbmQpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHNjaGVtZSh1cmxTY2hlbWUpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBTY2hlbWU6OkZpbGU6CisgICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmxJc0ZpbGUgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlOworICAgICAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1l
OjpXUzoKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6V1NTOgorICAgICAgICAgICAgICAg
ICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAg
IG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJv
dG9jb2xJcyh1cmxTY2hlbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlT
bGFzaGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpIVFRQOgorICAgICAgICAgICAgICAg
IGNhc2UgU2NoZW1lOjpIVFRQUzoKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wcm90b2Nv
bElzSW5IVFRQRmFtaWx5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7
CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkZUUDoKKyAgICAgICAgICAgICAgICBjYXNl
IFNjaGVtZTo6R29waGVyOgorICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLnByb3RvY29sSXModXJsU2NoZW1lKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9y
QXV0aG9yaXR5OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczsKKyAgICAgICAgICAg
ICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIFNjaGVtZTo6Tm9uU3BlY2lhbDoKKyAgICAgICAgICAgICAgICAgICAgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBhdXRvIG1heWJlU2xh
c2ggPSBjOworICAgICAgICAgICAgICAgICAgICBhZHZhbmNlKG1heWJlU2xhc2gpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIW1heWJlU2xhc2guYXRFbmQoKSAmJiAqbWF5YmVTbGFzaCA9PSAn
LycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBtYXliZVNsYXNoOworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OworICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKCpjID09ICcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3Np
dGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0g
Y3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9jYW5ub3RCZUFCYXNlVVJMID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRoOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAgICAgICAgICAgICAgIGMgPSBiZWdpbkFmdGVyQ29u
dHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKKyAgICAg
ICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9s
QW5kU3BhY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBTdGF0ZTo6Tm9TY2hlbWU6CisgICAgICAgICAgICBMT0dfU1RBVEUoIk5vU2NoZW1lIik7Cisg
ICAgICAgICAgICBpZiAoIWJhc2UuaXNWYWxpZCgpIHx8IChiYXNlLm1fY2Fubm90QmVBQmFzZVVS
TCAmJiAqYyAhPSAnIycpKSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChiYXNlLm1fY2Fu
bm90QmVBQmFzZVVSTCAmJiAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICBjb3B5VVJMUGFy
dHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rpbmcp
OworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWJhc2Uu
cHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVs
YXRpdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5vblVURjhR
dWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6CisgICAgICAgICAgICBM
T0dfU1RBVEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgICAgICBpZiAo
KmMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwor
ICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKGMuYXRFbmQo
KSkgeworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCpjID09ICcv
JykgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFz
aGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlU2xhc2g7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpQYXRoT3JBdXRob3JpdHk6Cisg
ICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOworICAgICAgICAgICAgaWYg
KCpjID09ICcvJykgeworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsK
KyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7CisgICAgICAg
ICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdp
biA9IGM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChwYXJz
ZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICAgICAg
ICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAg
ICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAg
ICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJSZWxh
dGl2ZSIpOworICAgICAgICAgICAgc3dpdGNoICgqYykgeworICAgICAgICAgICAgY2FzZSAnLyc6
CisgICAgICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
UmVsYXRpdmVTbGFzaDsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlICc/JzoKKyAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNV
bnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOworICAgICAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAnIyc6CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRz
VW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsK
KyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgKytjOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2gsIGMsIG5v
blVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9u
KGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpICE9ICcvJykgewor
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRo
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlU2xhc2g6CisgICAgICAgICAgICBMT0df
U1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMg
PT0gJ1xcJykgeworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBjb3B5VVJM
UGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5vblVURjhRdWVyeUVuY29k
aW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCI6Ly8iLCAzKTsKKyAg
ICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpCisgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9y
aXR5T3JIb3N0OworICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQb3J0RW5kLCBjLCBub25VVEY4UXVl
cnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwor
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX2hvc3RF
bmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6UGF0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczoKKyAgICAgICAgICAgIExPR19TVEFURSgi
U3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoKmMgPT0g
Jy8nIHx8ICpjID09ICdcXCcpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09
ICdcXCcpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIGFkdmFu
Y2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKExJS0VMWSghYy5hdEVuZCgpICYmICgqYyA9PSAn
LycgfHwgKmMgPT0gJ1xcJykpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgq
YyA9PSAnXFwnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcigiLy8iLCAyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVz
OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcyIp
OworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSB7CisgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50
UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXR5T3JI
b3N0OworICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlP
ckhvc3Q6CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJBdXRo
b3JpdHlPckhvc3QiKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJ0AnKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gbGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBm
aW5kTGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFmaW5kTGFzdEF0LmF0
RW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFVSTF9QQVJTRVJfTE9HKCJGaW5kaW5n
IGxhc3QgQDogJWMiLCAqZmluZExhc3RBdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KmZpbmRMYXN0QXQgPT0gJ0AnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RBdCA9
IGZpbmRMYXN0QXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU2xhc2ggPSAqZmlu
ZExhc3RBdCA9PSAnLycgfHwgKG1fdXJsSXNTcGVjaWFsICYmICpmaW5kTGFzdEF0ID09ICdcXCcp
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmZpbmRMYXN0QXQgPT0g
Jz8nIHx8ICpmaW5kTGFzdEF0ID09ICcjJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrZmluZExhc3RBdDsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJzZUF1dGhvcml0eShDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgbGFzdEF0KSk7Cisg
ICAgICAgICAgICAgICAgICAgIGMgPSBsYXN0QXQ7CisgICAgICAgICAgICAgICAgICAgIGFkdmFu
Y2UoYyk7CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6SG9zdDsKKyAgICAgICAgICAgICAgICAg
ICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJvb2wgaXNTbGFz
aCA9ICpjID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJyk7CisgICAgICAg
ICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmMgPT0gJz8nIHx8ICpjID09ICcjJykgeworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpOworICAgICAgICAgICAgICAgICAgICBpZiAo
aXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdXJsSXNT
cGVjaWFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24o
Yyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwu
bV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91
cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGF1dGhv
cml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBh
cnNlSG9zdEFuZFBvcnQoaXRlcmF0b3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgh
aXNTbGFzaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNp
YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JO
b25BU0NJSSgqYykpCisgICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFT
Q0lJID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9IHdoaWxlICgh
Yy5hdEVuZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpIb3N0
OgorICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiSG9zdCIpOwor
ICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJz8nIHx8ICpjID09ICcjJykg
eworICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgqYyA9
PSAnPycgfHwgKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzUGVyY2VudE9yTm9uQVND
SUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9
IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRF
bmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZToKKyAg
ICAgICAgICAgIExPR19TVEFURSgiRmlsZSIpOworICAgICAgICAgICAgc3dpdGNoICgqYykgewor
ICAgICAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgIGNhc2UgJy8nOgor
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpGaWxlU2xhc2g7CisgICAgICAgICAgICAgICAgKytjOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnPyc6CisgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAm
JiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgICAgICAgICBjb3B5VVJM
UGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKKyAgICAg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLz8iLCA0KTsKKyAgICAgICAgICAgICAg
ICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKSAtIDI7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3Jk
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9z
dEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAg
ICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
Yyk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJ
cygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2Us
IFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8jIiwgNCk7
CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9u
KGMpIC0gMjsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9
IDA7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91
cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAg
ICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAo
YmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikgJiYgc2hvdWxkQ29weUZp
bGVVUkwoYykpCisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVS
TFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCIvLy8iLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBj
dXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNz
d29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICAgICAgICAgIGlm
IChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpGaWxlU2xhc2g6
CisgICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGVTbGFzaCIpOworICAgICAgICAgICAgaWYgKExJ
S0VMWSgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoKmMgPT0gJ1xcJykpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAg
ICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1
cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAg
ICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RmlsZUhvc3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQg
PSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAg
ICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRX
aW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGJhc2UpKSB7CisgICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0OworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJT
dGFydCArIDE7CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZpbGVIb3N0OgorICAgICAgICAgICAgZG8gewor
ICAgICAgICAgICAgICAgIExPR19TVEFURSgiRmlsZUhvc3QiKTsKKyAgICAgICAgICAgICAgICBp
ZiAoaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKSkgeworICAgICAgICAgICAgICAgICAgICBib29s
IHdpbmRvd3NRdWlyayA9IHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7
CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3dzUXVpcmspIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0QmVnaW4p
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3dz
UXVpcmsgfHwgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHdpbmRvd3NRdWlyayB8fCBwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRp
b24oYykgLSAxKSA9PSAnLycpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCpjID09ICc/JykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigi
Lz8iLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0g
JyMnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvIyIsIDIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKSAt
IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgh
cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3Jp
dHlPckhvc3RCZWdpbiwgYykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzTG9jYWxob3N0KHBhcnNlZERhdGFW
aWV3KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJlbnRQb3NpdGlvbihjKSAtIG1fdXJsLm1fcGFz
c3dvcmRFbmQpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1f
cGFzc3dvcmRFbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
Y3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aFN0YXJ0OworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KGlzUGVyY2VudE9yTm9uQVNDSUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQ
ZXJjZW50T3JOb25BU0NJSSA9IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAg
ICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBTdGF0ZTo6UGF0aFN0YXJ0OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoU3RhcnQiKTsK
KyAgICAgICAgICAgIGlmICgqYyAhPSAnLycgJiYgKmMgIT0gJ1xcJykgeworICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlBhdGg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UGF0aDoKKyAg
ICAgICAgICAgIExPR19TVEFURSgiUGF0aCIpOworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8
fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJykpCisgICAgICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGN1cnJlbnRQ
b3NpdGlvbihjKSAmJiBwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSA9PSAn
LycpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRG91YmxlRG90UGF0aFNlZ21l
bnQoYykpKSB7CisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KGMpOworICAgICAgICAg
ICAgICAgICAgICBwb3BQYXRoKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNTaW5nbGVEb3RQYXRo
U2VnbWVudChjKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwor
ICAgICAgICAgICAgICAgICAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICgqYyA9PSAnPycpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignPycpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBpZiAo
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9
IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCpjID09ICcjJykgeworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0g
bV91cmwubV9wYXRoRW5kOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdXRm
OFBlcmNlbnRFbmNvZGU8aXNJbkRlZmF1bHRFbmNvZGVTZXQ+KGMpOworICAgICAgICAgICAgKytj
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VV
UkxQYXRoOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0aCIpOwor
ICAgICAgICAgICAgaWYgKCpjID09ICc/JykgeworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCc/Jyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGlmIChu
b25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0g
YzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpV
VEY4UXVlcnk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcjJykgeworICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgfSBlbHNlIGlmICgqYyA9PSAn
LycpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAg
ICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2RlU2V0PihjKTsKKyAgICAgICAg
ICAgICAgICArK2M7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJVVEY4UXVlcnki
KTsKKyAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luID09IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KCkpOworICAgICAgICAgICAgaWYgKCpjID09ICcjJykgeworICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoIW5vblVURjhRdWVyeUVuY29kaW5nKTsK
KyAgICAgICAgICAgIHV0ZjhRdWVyeUVuY29kZShjKTsKKyAgICAgICAgICAgICsrYzsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpOb25VVEY4UXVlcnk6CisgICAgICAg
ICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJOb25VVEY4UXVlcnkiKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPigpKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7CisgICAgICAg
ICAgICAgICAgICAgIGVuY29kZU5vblVURjhRdWVyeShxdWVyeUJ1ZmZlciwgKm5vblVURjhRdWVy
eUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBj
KSk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRp
b24oYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYXBwZW5kQ29kZVBvaW50KHF1ZXJ5QnVmZmVyLCAqYyk7CisgICAgICAgICAgICAgICAgYWR2
YW5jZShjLCBxdWVyeUJlZ2luKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZyYWdtZW50OgorICAgICAg
ICAgICAgVVJMX1BBUlNFUl9MT0coIlN0YXRlIEZyYWdtZW50Iik7CisgICAgICAgICAgICB1dGY4
UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2RlU2V0PihjKTsKKyAgICAgICAgICAgICsrYzsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgc3dpdGNoIChzdGF0
ZSkgeworICAgIGNhc2UgU3RhdGU6OlNjaGVtZVN0YXJ0OgorICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgIGlmICghY3VycmVudFBvc2l0aW9uKGMpICYmIGJh
c2UuaXNWYWxpZCgpICYmICFiYXNlLm1fY2Fubm90QmVBQmFzZVVSTCkgeworICAgICAgICAgICAg
bV91cmwgPSBiYXNlOworICAgICAgICAgICAgbV91cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVy
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZmFpbHVyZSgpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlNjaGVtZSIpOworICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIFN0YXRlOjpOb1NjaGVtZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJOb1Nj
aGVtZSIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2Ug
U3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OgorICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgIGNvcHlVUkxQYXJ0c1Vu
dGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKKyAgICAgICAg
TE9HX0ZJTkFMX1NUQVRFKCJQYXRoT3JBdXRob3JpdHkiKTsKKyAgICAgICAgQVNTRVJUKG1fdXJs
Lm1fdXNlclN0YXJ0KTsKKyAgICAgICAgQVNTRVJUKG1fdXJsLm1fdXNlclN0YXJ0ID09IGN1cnJl
bnRQb3NpdGlvbihjKSk7CisgICAgICAgIEFTU0VSVChwYXJzZWREYXRhVmlldyhjdXJyZW50UG9z
aXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICBtX3VybC5tX3VzZXJTdGFydC0tOworICAg
ICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsK
KyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCAr
IDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
OworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIlJlbGF0aXZlIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKKyAgICAgICAgTE9HX0ZJTkFM
X1NUQVRFKCJSZWxhdGl2ZVNsYXNoIik7CisgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2Us
IFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgIG1f
dXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzIik7CisgICAgICAgIG1fdXJsLm1f
dXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXM6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXMiKTsKKyAgICAgICAgZmFpbHVyZSgpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OgorICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIkF1dGhvcml0eU9ySG9zdCIpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJy
ZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICBpZiAoYXV0aG9yaXR5T3JIb3N0QmVn
aW4uYXRFbmQoKSkgeworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAg
ICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgfSBlbHNlIGlmICghcGFyc2VIb3N0
QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIGZhaWx1cmUoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICht
X3VybElzU3BlY2lhbCkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsg
MTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aDsKKyAgICAgICAgfQorICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTdGF0ZTo6SG9zdDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJIb3N0Iik7CisgICAg
ICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAg
ICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBpZiAobV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0
RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6RmlsZToKKyAgICAg
ICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlIik7CisgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAm
JiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgY29weVVSTFBhcnRzVW50
aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIiwgMyk7CisgICAgICAgIG1fdXJsLm1f
dXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFN0YXRlOjpGaWxlU2xhc2g6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRmls
ZVNsYXNoIik7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgbV91cmwubV91
c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgKyAxOworICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCIvLyIsIDIpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owor
ICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKGNvcHlCYXNlV2luZG93c0RyaXZlTGV0
dGVyKGJhc2UpKSB7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsg
NDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6
RmlsZUhvc3Q6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRmlsZUhvc3QiKTsKKyAgICAgICAg
aWYgKHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAgICAgICAmJiBpc1dpbmRvd3NE
cml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCcvJyk7CisgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9y
aXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAoYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykgeworICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignLycpOworICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRp
b24oYykgLSAxOworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKSkgewor
ICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICBpZiAoaXNMb2NhbGhvc3QocGFy
c2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91
cmwubV9wYXNzd29yZEVuZCkpKSB7CisgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLnNocmluayht
X3VybC5tX3Bhc3N3b3JkRW5kKTsKKyAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAg
ICAgIH0KKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0
aCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlBhdGhTdGFydDoKKyAgICAgICAg
TE9HX0ZJTkFMX1NUQVRFKCJQYXRoU3RhcnQiKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0YXRlOjpQYXRoOgorICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIlBhdGgiKTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMp
OworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDoKKyAgICAgICAgTE9H
X0ZJTkFMX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0aCIpOworICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlVURjhRdWVy
eToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJVVEY4UXVlcnkiKTsKKyAgICAgICAgQVNTRVJU
KHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJOb25VVEY4UXVlcnkiKTsKKyAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gIT0gQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAgICAgIGVuY29kZU5vblVURjhRdWVyeShx
dWVyeUJ1ZmZlciwgKm5vblVURjhRdWVyeUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBjKSk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBj
dXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OkZyYWdt
ZW50OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZyYWdtZW50Iik7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGlmIChMSUtFTFkoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkgewor
ICAgICAgICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJpbmc7CisgICAgICAgIEFTU0VSVCht
X2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fdXJsLm1fc3Ry
aW5nID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKG1fYXNjaWlCdWZmZXIpKTsKKyAgICBtX3VybC5t
X2lzVmFsaWQgPSB0cnVlOworICAgIFVSTF9QQVJTRVJfTE9HKCJQYXJzZWQgVVJMIDwlcz4iLCBt
X3VybC5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpwYXJzZUF1dGhvcml0eShDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFkoaXRlcmF0
b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAg
ICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7IGFkdmFuY2UoaXRlcmF0b3IpKSB7
CisgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKSB7CisgICAgICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgYXV0byBpdGVy
YXRvckF0Q29sb24gPSBpdGVyYXRvcjsKKyAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAg
ICAgICBib29sIHRhYk9yTmV3bGluZUFmdGVyQ29sb24gPSBmYWxzZTsKKyAgICAgICAgICAgIHdo
aWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQoKSAmJiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0
b3IpKSkgeworICAgICAgICAgICAgICAgIHRhYk9yTmV3bGluZUFmdGVyQ29sb24gPSB0cnVlOwor
ICAgICAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoaXRlcmF0b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JBdENvbG9uKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgIGlmIChtX3VybC5tX3Vz
ZXJFbmQgPiBtX3VybC5tX3VzZXJTdGFydCkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignQCcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICh0YWJPck5ld2xpbmVBZnRlckNvbG9uKQorICAgICAgICAgICAgICAg
IHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckF0Q29sb24pOworICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignOicpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
dXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJhdG9yKTsK
KyAgICB9CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkK
KyAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0
ZXJhdG9yKTsKKyAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJh
dG9yKTsKKyAgICBpZiAoIW1fdXJsLm1fdXNlckVuZCkKKyAgICAgICAgbV91cmwubV91c2VyRW5k
ID0gbV91cmwubV9wYXNzd29yZEVuZDsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdAJyk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+Cit2b2lkIFVSTFBhcnNl
cjo6YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikK
K3sKKyAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2lnbmVkSW50ZWdlclR5cGUpICogMyArIDFdOwor
ICAgIExDaGFyKiBlbmQgPSBzdGQ6OmVuZChidWYpOworICAgIExDaGFyKiBwID0gZW5kOworICAg
IGRvIHsKKyAgICAgICAgKi0tcCA9IChudW1iZXIgJSAxMCkgKyAnMCc7CisgICAgICAgIG51bWJl
ciAvPSAxMDsKKyAgICB9IHdoaWxlIChudW1iZXIpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
cCwgZW5kIC0gcCk7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY0KElQdjRBZGRy
ZXNzIGFkZHJlc3MpCit7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90Pihh
ZGRyZXNzID4+IDI0KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5k
TnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzID4+IDE2KTsKKyAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90
PihhZGRyZXNzID4+IDgpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy4nKTsKKyAgICBhcHBl
bmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQ4X3Q+KGFkZHJlc3MpOworfQorICAgIAorc3RhdGlj
IHNpemVfdCB6ZXJvU2VxdWVuY2VMZW5ndGgoY29uc3Qgc3RkOjphcnJheTx1aW50MTZfdCwgOD4m
IGFkZHJlc3MsIHNpemVfdCBiZWdpbikKK3sKKyAgICBzaXplX3QgZW5kID0gYmVnaW47CisgICAg
Zm9yICg7IGVuZCA8IDg7IGVuZCsrKSB7CisgICAgICAgIGlmIChhZGRyZXNzW2VuZF0pCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGVuZCAtIGJlZ2luOworfQorCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNvbnN0IHN0
ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzKQoreworICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBsb25nZXN0OworICAgIHNpemVfdCBsb25nZXN0TGVuZ3RoID0gMDsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0gemVyb1Nl
cXVlbmNlTGVuZ3RoKGFkZHJlc3MsIGkpOworICAgICAgICBpZiAobGVuZ3RoKSB7CisgICAgICAg
ICAgICBpZiAobGVuZ3RoID4gMSAmJiAoIWxvbmdlc3QgfHwgbG9uZ2VzdExlbmd0aCA8IGxlbmd0
aCkpIHsKKyAgICAgICAgICAgICAgICBsb25nZXN0ID0gaTsKKyAgICAgICAgICAgICAgICBsb25n
ZXN0TGVuZ3RoID0gbGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSArPSBsZW5n
dGg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxvbmdlc3Q7Cit9CisKK3ZvaWQgVVJM
UGFyc2VyOjpzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGllY2UpCit7CisgICAgYm9vbCBw
cmludGVkID0gZmFsc2U7CisgICAgaWYgKGF1dG8gbmliYmxlMCA9IHBpZWNlID4+IDEyKSB7Cisg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJSGV4
RGlnaXQobmliYmxlMCkpOworICAgICAgICBwcmludGVkID0gdHJ1ZTsKKyAgICB9CisgICAgYXV0
byBuaWJibGUxID0gcGllY2UgPj4gOCAmIDB4RjsKKyAgICBpZiAocHJpbnRlZCB8fCBuaWJibGUx
KSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFT
Q0lJSGV4RGlnaXQobmliYmxlMSkpOworICAgICAgICBwcmludGVkID0gdHJ1ZTsKKyAgICB9Cisg
ICAgYXV0byBuaWJibGUyID0gcGllY2UgPj4gNCAmIDB4RjsKKyAgICBpZiAocHJpbnRlZCB8fCBu
aWJibGUyKQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNh
c2VBU0NJSUhleERpZ2l0KG5pYmJsZTIpKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2Vy
TmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHBpZWNlICYgMHhGKSk7Cit9CisKK3ZvaWQg
VVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2KFVSTFBhcnNlcjo6SVB2NkFkZHJlc3MgYWRkcmVzcykK
K3sKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdbJyk7CisgICAgYXV0byBjb21wcmVzc1BvaW50
ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKKyAgICBmb3IgKHNpemVfdCBw
aWVjZSA9IDA7IHBpZWNlIDwgODsgcGllY2UrKykgeworICAgICAgICBpZiAoY29tcHJlc3NQb2lu
dGVyICYmIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpID09IHBpZWNlKSB7CisgICAgICAgICAgICBB
U1NFUlQoIWFkZHJlc3NbcGllY2VdKTsKKyAgICAgICAgICAgIGlmIChwaWVjZSkKKyAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOjoiLCAyKTsKKyAgICAgICAgICAgIHdo
aWxlIChwaWVjZSA8IDggJiYgIWFkZHJlc3NbcGllY2VdKQorICAgICAgICAgICAgICAgIHBpZWNl
Kys7CisgICAgICAgICAgICBpZiAocGllY2UgPT0gOCkKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBzZXJpYWxpemVJUHY2UGllY2UoYWRkcmVzc1twaWVjZV0pOwor
ICAgICAgICBpZiAocGllY2UgPCA3KQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
OicpOworICAgIH0KKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCddJyk7Cit9CisKK2VudW0gY2xh
c3MgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3IgeworICAgIEZhaWx1cmUsCisgICAg
T3ZlcmZsb3csCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorRXhwZWN0
ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6
OnBhcnNlSVB2NFBpZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRv
ciwgYm9vbCYgZGlkU2VlU3ludGF4VmlvbGF0aW9uKQoreworICAgIGVudW0gY2xhc3MgU3RhdGUg
OiB1aW50OF90IHsKKyAgICAgICAgVW5rbm93bkJhc2UsCisgICAgICAgIERlY2ltYWwsCisgICAg
ICAgIE9jdGFsT3JIZXgsCisgICAgICAgIE9jdGFsLAorICAgICAgICBIZXgsCisgICAgfTsKKyAg
ICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpVbmtub3duQmFzZTsKKyAgICBDaGVja2VkPHVpbnQzMl90
LCBSZWNvcmRPdmVyZmxvdz4gdmFsdWUgPSAwOworICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAm
JiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBp
ZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkp
IHsKKyAgICAgICAgaWYgKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpIHsKKyAgICAgICAgICAg
IGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7CisgICAgICAgICAgICArK2l0ZXJhdG9yOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCppdGVyYXRvciA9
PSAnLicpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKKyAgICAgICAgfQorICAgICAgICBz
d2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgU3RhdGU6OlVua25vd25CYXNlOgorICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKCppdGVyYXRvciA9PSAnMCcpKSB7CisgICAgICAgICAgICAgICAg
KytpdGVyYXRvcjsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbE9ySGV4Owor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6RGVjaW1hbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRl
OjpPY3RhbE9ySGV4OgorICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsK
KyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJ3gnIHx8ICppdGVyYXRvciA9PSAnWCcpIHsK
KyAgICAgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OkhleDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6Ok9jdGFsOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU3RhdGU6OkRlY2ltYWw6CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0
b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGllY2VQYXJz
aW5nRXJyb3I6OkZhaWx1cmUpOworICAgICAgICAgICAgdmFsdWUgKj0gMTA7CisgICAgICAgICAg
ICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFs
dWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICArK2l0ZXJh
dG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6Ok9jdGFsOgorICAg
ICAgICAgICAgQVNTRVJUKGRpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgICAgICAgICBpZiAo
Kml0ZXJhdG9yIDwgJzAnIHx8ICppdGVyYXRvciA+ICc3JykKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAg
ICAgICAgIHZhbHVlICo9IDg7CisgICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7
CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpP
dmVyZmxvdyk7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU3RhdGU6OkhleDoKKyAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhW
aW9sYXRpb24pOworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKml0ZXJhdG9yKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKTsKKyAgICAgICAgICAgIHZhbHVlICo9IDE2OworICAgICAgICAgICAgdmFs
dWUgKz0gdG9BU0NJSUhleFZhbHVlKCppdGVyYXRvcik7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICAr
K2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNT
RVJUKCF2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpOworICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQo
KTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDY0X3QgcG93MjU2KHNpemVfdCBleHBv
bmVudCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChleHBvbmVudCA8PSA0KTsKKyAgICB1aW50NjRf
dCB2YWx1ZXNbNV0gPSB7MSwgMjU2LCAyNTYgKiAyNTYsIDI1NiAqIDI1NiAqIDI1NiwgMjU2dWxs
ICogMjU2ICogMjU2ICogMjU2IH07CisgICAgcmV0dXJuIHZhbHVlc1tleHBvbmVudF07Cit9CisK
K2VudW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yIHsKKyAgICBGYWlsdXJlLAor
ICAgIE5vdElQdjQsCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlRm9yU3lu
dGF4VmlvbGF0aW9uLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorRXhwZWN0ZWQ8VVJMUGFyc2Vy
OjpJUHY0QWRkcmVzcywgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6OnBh
cnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZvclN5bnRh
eFZpb2xhdGlvbj4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24sIENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIFZlY3RvcjxFeHBlY3Rl
ZDx1aW50MzJfdCwgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3I+LCA0PiBpdGVtczsK
KyAgICBib29sIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IGZhbHNlOworICAgIGlmICghaXRlcmF0
b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgd2hpbGUgKCFpdGVyYXRvci5h
dEVuZCgpKSB7CisgICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7CisgICAg
ICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOworICAgICAgICAgICAgKytpdGVy
YXRvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChpdGVt
cy5zaXplKCkgPj0gNCkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFy
c2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAgaXRlbXMuYXBwZW5kKHBhcnNlSVB2NFBpZWNl
KGl0ZXJhdG9yLCBkaWRTZWVTeW50YXhWaW9sYXRpb24pKTsKKyAgICAgICAgaWYgKCFpdGVyYXRv
ci5hdEVuZCgpICYmICppdGVyYXRvciA9PSAnLicpIHsKKyAgICAgICAgICAgICsraXRlcmF0b3I7
CisgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlIGlmICgqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgfHwgIWl0ZW1zLnNpemUoKSB8fCBpdGVtcy5z
aXplKCkgPiA0KQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJv
cjo6Tm90SVB2NCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKKyAgICAg
ICAgaWYgKCFpdGVtLmhhc192YWx1ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0UGllY2VQYXJz
aW5nRXJyb3I6OkZhaWx1cmUpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2
NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgaXRl
bSA6IGl0ZW1zKSB7CisgICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9y
KCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdykKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICB9CisgICAg
aWYgKGl0ZW1zLnNpemUoKSA+IDEpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBp
dGVtcy5zaXplKCkgLSAxOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpdGVtc1tpXS52YWx1ZSgp
ID4gMjU1KQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2lu
Z0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaXRlbXNbaXRlbXMu
c2l6ZSgpIC0gMV0udmFsdWUoKSA+PSBwb3cyNTYoNSAtIGl0ZW1zLnNpemUoKSkpCisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKworICAg
IGlmIChkaWRTZWVTeW50YXhWaW9sYXRpb24pCisgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVy
YXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0
ZW0gOiBpdGVtcykgeworICAgICAgICBpZiAoaXRlbS52YWx1ZSgpID4gMjU1KQorICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwor
ICAgIH0KKworICAgIGlmIChVTkxJS0VMWShpdGVtcy5zaXplKCkgIT0gNCkpCisgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKworICAg
IElQdjRBZGRyZXNzIGlwdjQgPSBpdGVtcy50YWtlTGFzdCgpLnZhbHVlKCk7CisgICAgZm9yIChz
aXplX3QgY291bnRlciA9IDA7IGNvdW50ZXIgPCBpdGVtcy5zaXplKCk7ICsrY291bnRlcikKKyAg
ICAgICAgaXB2NCArPSBpdGVtc1tjb3VudGVyXS52YWx1ZSgpICogcG93MjU2KDMgLSBjb3VudGVy
KTsKKyAgICByZXR1cm4gaXB2NDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNp
ZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB1aW50MzJfdCBwaWVjZSA9IDA7CisgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKKyAg
ICBzaXplX3QgZGlnaXRDb3VudCA9IDA7CisgICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7
CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCppdGVyYXRvcikpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgICAgICArK2RpZ2l0Q291bnQ7CisgICAgICAgIGlmICghcGll
Y2UgJiYgKml0ZXJhdG9yID09ICcwJykgeworICAgICAgICAgICAgaWYgKGxlYWRpbmdaZXJvcykK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgbGVhZGlu
Z1plcm9zID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXBpZWNlICYmICppdGVyYXRv
ciA9PSAnMCcpCisgICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICBwaWVj
ZSA9IHBpZWNlICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgIGlmIChwaWVjZSA+IDI1
NSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgICAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAo
Kml0ZXJhdG9yID09ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocGll
Y2UgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJl
dHVybiBwaWVjZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6
b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjRBZGRy
ZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikK
K3sKKyAgICBJUHY0QWRkcmVzcyBhZGRyZXNzID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDQ7ICsraSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGllY2Ug
PSBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoaXRlcmF0b3IpKQorICAgICAgICAgICAgYWRkcmVz
cyA9IChhZGRyZXNzIDw8IDgpICsgcGllY2UudmFsdWUoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKGkgPCAzKSB7CisgICAgICAg
ICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgaWYgKCppdGVyYXRvciAhPSAnLicpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgICAgICB9IGVsc2Ug
aWYgKCFpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9CisgICAgQVNTRVJUKGl0ZXJhdG9yLmF0RW5kKCkpOworICAgIHJldHVybiBhZGRyZXNz
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxV
UkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sKKyAgICBBU1NFUlQoKmMgPT0gJ1snKTsKKyAg
ICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7CisgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwor
ICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBJ
UHY2QWRkcmVzcyBhZGRyZXNzID0ge3swLCAwLCAwLCAwLCAwLCAwLCAwLCAwfX07CisgICAgc2l6
ZV90IHBpZWNlUG9pbnRlciA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNvbXByZXNz
UG9pbnRlcjsKKworICAgIGlmICgqYyA9PSAnOicpIHsKKyAgICAgICAgYWR2YW5jZShjLCBob3N0
QmVnaW4pOworICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgaWYgKCpjICE9ICc6JykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAgKytwaWVj
ZVBvaW50ZXI7CisgICAgICAgIGNvbXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRlcjsKKyAgICB9
CisgICAgCisgICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKHBpZWNlUG9pbnRl
ciA9PSA4KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCpj
ID09ICc6JykgeworICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlcikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVn
aW4pOworICAgICAgICAgICAgKytwaWVjZVBvaW50ZXI7CisgICAgICAgICAgICBjb21wcmVzc1Bv
aW50ZXIgPSBwaWVjZVBvaW50ZXI7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDYgfHwgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVj
ZVBvaW50ZXIgPCA2KSkgeworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8SVB2NEFkZHJl
c3M+IGlwdjRBZGRyZXNzID0gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoYykpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA9PSA1KQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgICAgICAgICAgICAgIGFkZHJlc3NbcGllY2VQ
b2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSA+PiAxNjsKKyAgICAgICAgICAgICAgICBh
ZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgJiAweEZGRkY7Cisg
ICAgICAgICAgICAgICAgYyA9IHsgfTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICB1aW50MTZfdCB2YWx1ZSA9IDA7CisgICAgICAgIHNp
emVfdCBsZW5ndGggPSAwOworICAgICAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOworICAg
ICAgICBmb3IgKDsgbGVuZ3RoIDwgNDsgbGVuZ3RoKyspIHsKKyAgICAgICAgICAgIGlmIChjLmF0
RW5kKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlI
ZXhEaWdpdCgqYykpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoaXNB
U0NJSVVwcGVyKCpjKSkKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2lu
KTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnMCcgJiYgIWxlbmd0aCkKKyAgICAgICAgICAgICAg
ICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAqIDB4MTAg
KyB0b0FTQ0lJSGV4VmFsdWUoKmMpOworICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4p
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkoKHZhbHVlICYmIGxl
YWRpbmdaZXJvcykgfHwgKCF2YWx1ZSAmJiBsZW5ndGggPiAxKSkpCisgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKworICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisr
XSA9IHZhbHVlOworICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCB8fCAqYyAhPSAnOicpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CisgICAg
fQorICAgIAorICAgIGlmICghYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIAorICAgIGlmIChjb21wcmVzc1BvaW50ZXIpIHsKKyAgICAgICAgc2l6ZV90IHN3YXBz
ID0gcGllY2VQb2ludGVyIC0gY29tcHJlc3NQb2ludGVyLnZhbHVlKCk7CisgICAgICAgIHBpZWNl
UG9pbnRlciA9IDc7CisgICAgICAgIHdoaWxlIChzd2FwcykKKyAgICAgICAgICAgIHN0ZDo6c3dh
cChhZGRyZXNzW3BpZWNlUG9pbnRlci0tXSwgYWRkcmVzc1tjb21wcmVzc1BvaW50ZXIudmFsdWUo
KSArIHN3YXBzLS0gLSAxXSk7CisgICAgfSBlbHNlIGlmIChwaWVjZVBvaW50ZXIgIT0gOCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBw
b3NzaWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFkZHJlc3Mp
OworICAgIGlmIChwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikKKyAgICAgICAgcG9zc2libGVDb21w
cmVzc1BvaW50ZXIudmFsdWUoKSsrOworICAgIGlmIChVTkxJS0VMWShjb21wcmVzc1BvaW50ZXIg
IT0gcG9zc2libGVDb21wcmVzc1BvaW50ZXIpKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9z
dEJlZ2luKTsKKyAgICAKKyAgICByZXR1cm4gYWRkcmVzczsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KK1VSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJj
ZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9z
aXRpb24pCit7CisgICAgTENoYXJCdWZmZXIgb3V0cHV0OworICAgIG91dHB1dC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgeworICAgICAgICB1aW50OF90IGJ5dGUgPSBpbnB1dFtpXTsKKyAgICAgICAg
aWYgKGJ5dGUgIT0gJyUnKQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRl
KTsKKyAgICAgICAgZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpIDwgbGVuZ3RoIC0gMikgeworICAg
ICAgICAgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pICYmIGlzQVNDSUlIZXhE
aWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0
ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAgICAgICAgIG91dHB1
dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSAr
IDJdKSk7CisgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgIH0KKyAgICBy
ZXR1cm4gb3V0cHV0OworfQorICAgIAorVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciBVUkxQYXJzZXI6
OnBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAg
IExDaGFyQnVmZmVyIG91dHB1dDsKKyAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShs
ZW5ndGgpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07CisgICAgICAgIGlmIChieXRlICE9ICcl
JykKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAgICAgIGVs
c2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKKyAgICAgICAgICAgIGlmIChp
c0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSAr
IDJdKSkgeworICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhl
eFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7CisgICAgICAgICAgICAgICAgaSAr
PSAyOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tl
ZEFwcGVuZChieXRlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvdXRwdXQudW5jaGVj
a2VkQXBwZW5kKGJ5dGUpOworICAgIH0KKyAgICByZXR1cm4gb3V0cHV0OworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6TENoYXJC
dWZmZXI+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiBkb21haW4sIGNvbnN0
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xh
dGlvblBvc2l0aW9uKQoreworICAgIExDaGFyQnVmZmVyIGFzY2lpOworICAgIGlmIChkb21haW4u
aXNBbGxBU0NJSSgpKSB7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBkb21haW4ubGVuZ3RoKCk7
CisgICAgICAgIGlmIChkb21haW4uaXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0IExDaGFy
KiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnM4KCk7CisgICAgICAgICAgICBhc2NpaS5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlz
QVNDSUlVcHBlcihjaGFyYWN0ZXJzW2ldKSkpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICAgICAgICAg
ICAgICBhc2NpaS51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUxvd2VyKGNoYXJhY3RlcnNbaV0pKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAgYXNjaWku
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShp
c0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgICAgICAg
ICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFzY2lpOworICAgIH0K
KyAgICAKKyAgICBjb25zdCBzaXplX3QgbWF4RG9tYWluTGVuZ3RoID0gNjQ7CisgICAgVUNoYXIg
aG9zdG5hbWVCdWZmZXJbbWF4RG9tYWluTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0g
VV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lO
Rk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlk
bmFfbmFtZVRvQVNDSUkoJmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpLCBTdHJp
bmdWaWV3KGRvbWFpbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGRvbWFpbi5sZW5ndGgoKSwg
aG9zdG5hbWVCdWZmZXIsIG1heERvbWFpbkxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmZXJy
b3IpOworICAgIEFTU0VSVChudW1DaGFyYWN0ZXJzQ29udmVydGVkIDw9IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG1heERvbWFpbkxlbmd0aCkpOworCisgICAgaWYgKFVfU1VDQ0VTUyhlcnJvcikgJiYg
IXByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgeworICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7
IGkgPCBudW1DaGFyYWN0ZXJzQ29udmVydGVkOyArK2kpIHsKKyAgICAgICAgICAgIEFTU0VSVChp
c0FTQ0lJKGhvc3RuYW1lQnVmZmVyW2ldKSk7CisgICAgICAgICAgICBBU1NFUlQoIWlzQVNDSUlV
cHBlcihob3N0bmFtZUJ1ZmZlcltpXSkpOworICAgICAgICB9CisgICAgICAgIGFzY2lpLmFwcGVu
ZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CisgICAgICAgIGlmIChk
b21haW4gIT0gU3RyaW5nVmlldyhhc2NpaS5kYXRhKCksIGFzY2lpLnNpemUoKSkpCisgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7
CisgICAgICAgIHJldHVybiBhc2NpaTsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
K30KKworYm9vbCBVUkxQYXJzZXI6Omhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29uc3QgVVJM
UGFyc2VyOjpMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW4pCit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhc2NpaURvbWFpbi5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoaXNGb3JiaWRk
ZW5Ib3N0Q29kZVBvaW50KGFzY2lpRG9tYWluW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6cGFyc2VQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoKml0ZXJhdG9yID09ICc6Jyk7
CisgICAgYXV0byBjb2xvbkl0ZXJhdG9yID0gaXRlcmF0b3I7CisgICAgYWR2YW5jZShpdGVyYXRv
ciwgY29sb25JdGVyYXRvcik7CisgICAgdWludDMyX3QgcG9ydCA9IDA7CisgICAgaWYgKFVOTElL
RUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBj
dXJyZW50UG9zaXRpb24oY29sb25JdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKKyAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgc2l6
ZV90IGRpZ2l0Q291bnQgPSAwOworICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7CisgICAg
Zm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIGlmIChVTkxJ
S0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBpZiAo
Kml0ZXJhdG9yID09ICcwJyAmJiAhZGlnaXRDb3VudCkKKyAgICAgICAgICAgICAgICBsZWFkaW5n
WmVyb3MgPSB0cnVlOworICAgICAgICAgICAgKytkaWdpdENvdW50OworICAgICAgICAgICAgcG9y
dCA9IHBvcnQgKiAxMCArICppdGVyYXRvciAtICcwJzsKKyAgICAgICAgICAgIGlmIChwb3J0ID4g
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgaWYgKHBvcnQgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICBzeW50YXhWaW9s
YXRpb24oY29sb25JdGVyYXRvcik7CisgICAgCisgICAgaWYgKCFwb3J0ICYmIGRpZ2l0Q291bnQg
PiAxKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisKKyAgICBBU1NF
UlQocG9ydCA9PSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOworICAgIGlmIChVTkxJS0VM
WShkZWZhdWx0UG9ydEZvclByb3RvY29sKHBhcnNlZERhdGFWaWV3KDAsIG1fdXJsLm1fc2NoZW1l
RW5kKSkgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKSkKKyAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgIGVsc2UgeworICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCc6Jyk7CisgICAgICAgIEFTU0VSVChwb3J0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDE2X3Q+OjptYXgoKSk7CisgICAgICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWlu
dDE2X3Q+KHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSk7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgcG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RF
bmQ7CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRMZW5ndGgp
OworICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6
cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRv
cikKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCppdGVyYXRvciA9PSAnWycpIHsKKyAgICAgICAgYXV0byBpcHY2RW5kID0gaXRlcmF0b3I7Cisg
ICAgICAgIHdoaWxlICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2RW5kICE9ICddJykKKyAgICAg
ICAgICAgICsraXB2NkVuZDsKKyAgICAgICAgaWYgKGlwdjZFbmQuYXRFbmQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IHBhcnNlSVB2Nkhv
c3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaXRlcmF0b3IsIGlwdjZFbmQpKSkg
eworICAgICAgICAgICAgc2VyaWFsaXplSVB2NihhZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAg
ICAgaWYgKCFpcHY2RW5kLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGlwdjZF
bmQpOworICAgICAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2RW5kID09
ICc6JykgeworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9z
aXRpb24oaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXB2
NkVuZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmICghbV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAgZm9yICg7
ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50
KCppdGVyYXRvcikgJiYgKml0ZXJhdG9yICE9ICclJykpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJblNpbXBsZUVuY29kZVNl
dD4oaXRlcmF0b3IpOworICAgICAgICB9CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJl
bnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Cisg
ICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAg
fQorICAgIAorICAgIGlmIChMSUtFTFkoIW1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJKSkgewor
ICAgICAgICBhdXRvIGhvc3RJdGVyYXRvciA9IGl0ZXJhdG9yOworICAgICAgICBmb3IgKDsgIWl0
ZXJhdG9yLmF0RW5kKCk7ICsraXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGlmIChpc1RhYk9yTmV3
bGluZSgqaXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
aWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBpZiAoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KCppdGVyYXRvcikpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGF1dG8gYWRkcmVzcyA9IHBhcnNl
SVB2NEhvc3QoaG9zdEl0ZXJhdG9yLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiho
b3N0SXRlcmF0b3IsIGl0ZXJhdG9yKSk7CisgICAgICAgIGlmIChhZGRyZXNzKSB7CisgICAgICAg
ICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgaWYgKGl0
ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAw
OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFk
ZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKDsgaG9zdEl0ZXJhdG9yICE9IGl0ZXJhdG9yOyAr
K2hvc3RJdGVyYXRvcikgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5l
KCpob3N0SXRlcmF0b3IpKSkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0
SXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqaG9zdEl0ZXJhdG9yKSkpCisgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RJdGVyYXRvcik7CisgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqaG9zdEl0ZXJhdG9yKSk7CisgICAgICAg
IH0KKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgaWYgKCFob3N0SXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBw
YXJzZVBvcnQoaG9zdEl0ZXJhdG9yKTsKKyAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGN1
cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIAorICAgIGNvbnN0IGF1dG8gaG9zdEJlZ2luID0gaXRlcmF0b3I7CisgICAgCisgICAg
TENoYXJCdWZmZXIgdXRmOEVuY29kZWQ7CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyAr
K2l0ZXJhdG9yKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0
b3IpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKml0ZXJhdG9yID09ICc6JykK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUkoKml0ZXJh
dG9yKSkpCisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKworICAgICAg
ICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKCppdGVyYXRvcikpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOworICAgICAgICBp
bnQzMl90IG9mZnNldCA9IDA7CisgICAgICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZz
ZXQsICppdGVyYXRvcik7CisgICAgICAgIHV0ZjhFbmNvZGVkLmFwcGVuZChidWZmZXIsIG9mZnNl
dCk7CisgICAgfQorICAgIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29k
ZSh1dGY4RW5jb2RlZC5kYXRhKCksIHV0ZjhFbmNvZGVkLnNpemUoKSwgaG9zdEJlZ2luKTsKKyAg
ICBTdHJpbmcgZG9tYWluID0gU3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCks
IHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CisgICAgaWYgKGRvbWFpbi5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhwZXJjZW50RGVj
b2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSkpCisgICAgICAgIHN5bnRheFZpb2xh
dGlvbihob3N0QmVnaW4pOworICAgIGF1dG8gYXNjaWlEb21haW4gPSBkb21haW5Ub0FTQ0lJKCpk
b21haW4uaW1wbCgpLCBob3N0QmVnaW4pOworICAgIGlmICghYXNjaWlEb21haW4gfHwgaGFzRm9y
YmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbi52YWx1ZSgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIExDaGFyQnVmZmVyJiBhc2NpaURvbWFpblZhbHVlID0gYXNjaWlEb21haW4u
dmFsdWUoKTsKKyAgICBjb25zdCBMQ2hhciogYXNjaWlEb21haW5DaGFyYWN0ZXJzID0gYXNjaWlE
b21haW5WYWx1ZS5kYXRhKCk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRIb3N0KGhv
c3RCZWdpbiwgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+KGFzY2lpRG9tYWluVmFsdWUuYmVnaW4o
KSwgYXNjaWlEb21haW5WYWx1ZS5lbmQoKSkpOworICAgIGlmIChhZGRyZXNzKSB7CisgICAgICAg
IHNlcmlhbGl6ZUlQdjQoYWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5k
KCkpIHsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9y
KTsKKyAgICB9CisgICAgaWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpG
YWlsdXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KGFzY2lpRG9tYWluQ2hhcmFjdGVycywgYXNjaWlEb21haW5WYWx1ZS5zaXplKCkpOworICAgIG1f
dXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgaWYgKCFpdGVy
YXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsKKyAgICBt
X3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgIHJldHVybiB0cnVlOworfQorCitzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCit7
CisgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJzaW9uKTsKKyAgICBpZiAo
dXRmOC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBhdXRvIHBl
cmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7Cit9CisK
Ky8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmxlbmNvZGVkLXBhcnNl
cgorYXV0byBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyBpbnB1dCkg
LT4gVVJMRW5jb2RlZEZvcm0KK3sKKyAgICBVUkxFbmNvZGVkRm9ybSBvdXRwdXQ7CisgICAgZm9y
IChTdHJpbmdWaWV3IGJ5dGVzIDogaW5wdXQuc3BsaXQoJyYnKSkgeworICAgICAgICBhdXRvIGVx
dWFsSW5kZXggPSBieXRlcy5maW5kKCc9Jyk7CisgICAgICAgIGlmIChlcXVhbEluZGV4ID09IG5v
dEZvdW5kKSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVjb2RlKGJ5dGVzLnRv
U3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKKyAgICAgICAgICAgIGlmIChuYW1lKQorICAg
ICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIGVtcHR5U3RyaW5nKCkg
fSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVj
b2RlKGJ5dGVzLnN1YnN0cmluZygwLCBlcXVhbEluZGV4KS50b1N0cmluZygpLnJlcGxhY2UoJysn
LCAweDIwKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gZm9ybVVSTERlY29kZShieXRlcy5z
dWJzdHJpbmcoZXF1YWxJbmRleCArIDEpLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsK
KyAgICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVlKQorICAgICAgICAgICAgICAgIG91dHB1dC5h
cHBlbmQoeyBuYW1lLnZhbHVlKCksIHZhbHVlLnZhbHVlKCkgfSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworc3RhdGljIHZvaWQgc2VyaWFsaXplVVJMRW5jb2Rl
ZEZvcm0oY29uc3QgU3RyaW5nJiBpbnB1dCwgVmVjdG9yPExDaGFyPiYgb3V0cHV0KQoreworICAg
IGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CisgICAgY29uc3QgY2hh
ciogZGF0YSA9IHV0ZjguZGF0YSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXRmOC5s
ZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IGNoYXIgYnl0ZSA9IGRhdGFbaV07CisgICAg
ICAgIGlmIChieXRlID09IDB4MjApCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDB4MkIpOwor
ICAgICAgICBlbHNlIGlmIChieXRlID09IDB4MkEKKyAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgy
RAorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDJFCisgICAgICAgICAgICB8fCAoYnl0ZSA+PSAw
eDMwICYmIGJ5dGUgPD0gMHgzOSkKKyAgICAgICAgICAgIHx8IChieXRlID49IDB4NDEgJiYgYnl0
ZSA8PSAweDVBKQorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDVGCisgICAgICAgICAgICB8fCAo
Ynl0ZSA+PSAweDYxICYmIGJ5dGUgPD0gMHg3QSkpIC8vIEZJWE1FOiBQdXQgdGhlc2UgaW4gdGhl
IGNoYXJhY3RlckNsYXNzVGFibGUgdG8gYXZvaWQgYnJhbmNoZXMuCisgICAgICAgICAgICBvdXRw
dXQuYXBwZW5kKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwZXJjZW50RW5jb2Rl
Qnl0ZShieXRlLCBvdXRwdXQpOworICAgIH0KK30KKyAgICAKK1N0cmluZyBVUkxQYXJzZXI6OnNl
cmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYgdHVwbGVzKQoreworICAgIGlmICh0dXBsZXMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPExDaGFyPiBvdXRw
dXQ7CisgICAgZm9yIChhdXRvJiB0dXBsZSA6IHR1cGxlcykgeworICAgICAgICBpZiAoIW91dHB1
dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCcmJyk7CisgICAgICAgIHNl
cmlhbGl6ZVVSTEVuY29kZWRGb3JtKHR1cGxlLmtleSwgb3V0cHV0KTsKKyAgICAgICAgb3V0cHV0
LmFwcGVuZCgnPScpOworICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS52YWx1
ZSwgb3V0cHV0KTsKKyAgICB9CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShvdXRw
dXQpKTsKK30KKworY29uc3QgVUlETkEmIFVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5h
bWVUcmFuc2NvZGVyKCkKK3sKKyAgICBzdGF0aWMgVUlETkEqIGVuY29kZXI7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7CisgICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIC8v
IFdhcm5pbmc6IFBsZWFzZSBjb250YWN0IGEgV2ViS2l0R1RLKyBkZXZlbG9wZXIgaWYgY2hhbmdp
bmcgdGhlc2UgZmxhZ3MuCisgICAgICAgIC8vIFRoZXkgc2hvdWxkIGJlIHN5bmNlZCB3aXRoIGVw
aHlfdXJpX2RlY29kZSgpIGluIGVwaHktdXJpLWhlbHBlcnMuYy4KKyAgICAgICAgZW5jb2RlciA9
IHVpZG5hX29wZW5VVFM0NihVSUROQV9DSEVDS19CSURJIHwgVUlETkFfQ0hFQ0tfQ09OVEVYVEog
fCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fVU5JQ09ERSB8IFVJRE5BX05PTlRSQU5TSVRJT05B
TF9UT19BU0NJSSwgJmVycm9yKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoVV9TVUNDRVNTKGVy
cm9yKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuY29kZXIpOworICAgIH0pOworICAgIHJl
dHVybiAqZW5jb2RlcjsKK30KKworYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFsKGNvbnN0
IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIFVSTF9QQVJTRVJfTE9HKCIlZCAlZCAlZCAl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlc1xuJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJXMiLAorICAgICAgICBhLm1faXNWYWxpZCwKKyAgICAgICAgYS5tX2Nhbm5vdEJl
QUJhc2VVUkwsCisgICAgICAgIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAorICAgICAgICBh
Lm1fc2NoZW1lRW5kLAorICAgICAgICBhLm1fdXNlclN0YXJ0LAorICAgICAgICBhLm1fdXNlckVu
ZCwKKyAgICAgICAgYS5tX3Bhc3N3b3JkRW5kLAorICAgICAgICBhLm1faG9zdEVuZCwKKyAgICAg
ICAgYS5tX2hvc3RFbmQgKyBhLm1fcG9ydExlbmd0aCwKKyAgICAgICAgYS5tX3BhdGhBZnRlckxh
c3RTbGFzaCwKKyAgICAgICAgYS5tX3BhdGhFbmQsCisgICAgICAgIGEubV9xdWVyeUVuZCwKKyAg
ICAgICAgYS5tX3N0cmluZy51dGY4KCkuZGF0YSgpLAorICAgICAgICBiLm1faXNWYWxpZCwKKyAg
ICAgICAgYi5tX2Nhbm5vdEJlQUJhc2VVUkwsCisgICAgICAgIGIubV9wcm90b2NvbElzSW5IVFRQ
RmFtaWx5LAorICAgICAgICBiLm1fc2NoZW1lRW5kLAorICAgICAgICBiLm1fdXNlclN0YXJ0LAor
ICAgICAgICBiLm1fdXNlckVuZCwKKyAgICAgICAgYi5tX3Bhc3N3b3JkRW5kLAorICAgICAgICBi
Lm1faG9zdEVuZCwKKyAgICAgICAgYi5tX2hvc3RFbmQgKyBiLm1fcG9ydExlbmd0aCwKKyAgICAg
ICAgYi5tX3BhdGhBZnRlckxhc3RTbGFzaCwKKyAgICAgICAgYi5tX3BhdGhFbmQsCisgICAgICAg
IGIubV9xdWVyeUVuZCwKKyAgICAgICAgYi5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKKworICAg
IHJldHVybiBhLm1fc3RyaW5nID09IGIubV9zdHJpbmcKKyAgICAgICAgJiYgYS5tX2lzVmFsaWQg
PT0gYi5tX2lzVmFsaWQKKyAgICAgICAgJiYgYS5tX2Nhbm5vdEJlQUJhc2VVUkwgPT0gYi5tX2Nh
bm5vdEJlQUJhc2VVUkwKKyAgICAgICAgJiYgYS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPT0g
Yi5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkKKyAgICAgICAgJiYgYS5tX3NjaGVtZUVuZCA9PSBi
Lm1fc2NoZW1lRW5kCisgICAgICAgICYmIGEubV91c2VyU3RhcnQgPT0gYi5tX3VzZXJTdGFydAor
ICAgICAgICAmJiBhLm1fdXNlckVuZCA9PSBiLm1fdXNlckVuZAorICAgICAgICAmJiBhLm1fcGFz
c3dvcmRFbmQgPT0gYi5tX3Bhc3N3b3JkRW5kCisgICAgICAgICYmIGEubV9ob3N0RW5kID09IGIu
bV9ob3N0RW5kCisgICAgICAgICYmIGEubV9wb3J0TGVuZ3RoID09IGIubV9wb3J0TGVuZ3RoCisg
ICAgICAgICYmIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gYi5tX3BhdGhBZnRlckxhc3RTbGFz
aAorICAgICAgICAmJiBhLm1fcGF0aEVuZCA9PSBiLm1fcGF0aEVuZAorICAgICAgICAmJiBhLm1f
cXVlcnlFbmQgPT0gYi5tX3F1ZXJ5RW5kOworfQorCitib29sIFVSTFBhcnNlcjo6aW50ZXJuYWxW
YWx1ZXNDb25zaXN0ZW50KGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVybiB1cmwubV9zY2hl
bWVFbmQgPD0gdXJsLm1fdXNlclN0YXJ0CisgICAgICAgICYmIHVybC5tX3VzZXJTdGFydCA8PSB1
cmwubV91c2VyRW5kCisgICAgICAgICYmIHVybC5tX3VzZXJFbmQgPD0gdXJsLm1fcGFzc3dvcmRF
bmQKKyAgICAgICAgJiYgdXJsLm1fcGFzc3dvcmRFbmQgPD0gdXJsLm1faG9zdEVuZAorICAgICAg
ICAmJiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aCA8PSB1cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2gKKyAgICAgICAgJiYgdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IHVybC5tX3Bh
dGhFbmQKKyAgICAgICAgJiYgdXJsLm1fcGF0aEVuZCA8PSB1cmwubV9xdWVyeUVuZAorICAgICAg
ICAmJiB1cmwubV9xdWVyeUVuZCA8PSB1cmwubV9zdHJpbmcubGVuZ3RoKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmggYi9T
b3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTI1YjU0MDIyMzQwYTllODhi
ZWQ4Y2NmMTcwMDM5Mjc3N2ZlNzJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
VVJMUGFyc2VyLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKK3N0cnVjdCBVSUROQTsKKworbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQb2ludEl0
ZXJhdG9yOworCitjbGFzcyBVUkxQYXJzZXIgeworcHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaW50ZXJuYWxWYWx1ZXNDb25zaXN0
ZW50KGNvbnN0IFVSTCYpOworICAgIAorICAgIHVzaW5nIFVSTEVuY29kZWRGb3JtID0gVmVjdG9y
PFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj47CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBVUkxFbmNvZGVkRm9ybSBwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBV
UkxFbmNvZGVkRm9ybSYpOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlz
U3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF5YmVDYW5vbmljYWxpemVTY2hlbWUo
Y29uc3QgU3RyaW5nJiBzY2hlbWUpOworCisgICAgc3RhdGljIGNvbnN0IFVJRE5BJiBpbnRlcm5h
dGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBpc0luVXNlcklu
Zm9FbmNvZGVTZXQoVUNoYXIpOworCitwcml2YXRlOgorICAgIFVSTFBhcnNlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7
CisgICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9CisKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKKyAg
ICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChT
dHJpbmdWaWV3KTsKKyAgICBmcmllbmQgY2xhc3MgVVJMOworCisgICAgVVJMIG1fdXJsOworICAg
IFZlY3RvcjxMQ2hhcj4gbV9hc2NpaUJ1ZmZlcjsKKyAgICBib29sIG1fdXJsSXNTcGVjaWFsIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fdXJsSXNGaWxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1faG9z
dEhhc1BlcmNlbnRPck5vbkFTQ0lJIHsgZmFsc2UgfTsKKyAgICBTdHJpbmcgbV9pbnB1dFN0cmlu
ZzsKKyAgICBjb25zdCB2b2lkKiBtX2lucHV0QmVnaW4geyBudWxscHRyIH07CisKKyAgICBib29s
IG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZSA9IDIwNDg7CisgICAgdXNpbmcgTENoYXJC
dWZmZXIgPSBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPjsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2UoY29uc3QgQ2hhcmFjdGVy
VHlwZSosIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVVJMJiwgY29uc3QgVVJMVGV4dEVu
Y29kaW5nKik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBwYXJz
ZUF1dGhvcml0eShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBib29sIHBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYp
OworCisgICAgdm9pZCBmYWlsdXJlKCk7CisgICAgZW51bSBjbGFzcyBSZXBvcnRTeW50YXhWaW9s
YXRpb24geyBObywgWWVzIH07CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwg
UmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZpb2xhdGlvbiA9IFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6WWVzPgorICAgIHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3IpIHsgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCByZXBvcnRTeW50
YXhWaW9sYXRpb24+KGl0ZXJhdG9yLCBpdGVyYXRvcik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9s
YXRpb246Olllcz4KKyAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JG
b3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gYm9vbCB0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZv
aWQgc3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1BlcmNlbnRF
bmNvZGVkRG90KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzV2luZG93c0RyaXZlTGV0dGVyKENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBib29sIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJv
b2wgaXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
Pik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBzaG91bGRDb3B5
RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBjaGVja0xvY2FsaG9zdENvZGVQb2ludChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIFVDaGFyMzIpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPik7CisgICAgYm9vbCBpc0xvY2FsaG9zdChTdHJpbmdWaWV3KTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVTaW5nbGVEb3RQ
YXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29uc3VtZURvdWJsZURvdFBhdGhTZWdt
ZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzaXplX3QgY3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2Vy
VHlwZT4gdm9pZCBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdlclR5cGUp
OworICAgIHRlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gdm9pZCB1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHZvaWQgdXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25h
bDxMQ2hhckJ1ZmZlcj4gZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRp
b24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExDaGFyQnVmZmVyIHBl
cmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAg
ICBzdGF0aWMgTENoYXJCdWZmZXIgcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCk7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBmb3JtVVJMRGVjb2RlKFN0cmluZ1Zp
ZXcgaW5wdXQpOworICAgIHN0YXRpYyBib29sIGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29u
c3QgTENoYXJCdWZmZXImKTsKKyAgICB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QpOwor
ICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyKTsKKyAgICB2b2lkIGFwcGVuZFRv
QVNDSUlCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmRUb0FT
Q0lJQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNoYXJhY3RlcnMpLCBzaXpl
KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgZW5jb2RlTm9u
VVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIHNvdXJjZSwgY29uc3QgVVJMVGV4dEVuY29k
aW5nJiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHZvaWQgY29weUFT
Q0lJU3RyaW5nVW50aWwoY29uc3QgU3RyaW5nJiwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBj
b3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmKTsKKyAgICBTdHJpbmdWaWV3IHBh
cnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCk7CisgICAgVUNoYXIgcGFy
c2VkRGF0YVZpZXcoc2l6ZV90IHBvc2l0aW9uKTsKKworICAgIHVzaW5nIElQdjRBZGRyZXNzID0g
dWludDMyX3Q7CisgICAgdm9pZCBzZXJpYWxpemVJUHY0KElQdjRBZGRyZXNzKTsKKyAgICBlbnVt
IGNsYXNzIElQdjRQYXJzaW5nRXJyb3I7CisgICAgZW51bSBjbGFzcyBJUHY0UGllY2VQYXJzaW5n
RXJyb3I7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xh
dGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8SVB2NEFkZHJlc3MsIElQdjRQ
YXJzaW5nRXJyb3I+IHBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbj4mLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8dWlu
dDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRQaWVjZShD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xhdGlvbik7
CisgICAgdXNpbmcgSVB2NkFkZHJlc3MgPSBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PjsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQdjZBZGRyZXNz
PiBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBw
YXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQ
djRBZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPik7CisgICAgdm9pZCBzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGll
Y2UpOworICAgIHZvaWQgc2VyaWFsaXplSVB2NihJUHY2QWRkcmVzcyk7CisKKyAgICBlbnVtIGNs
YXNzIFVSTFBhcnQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBj
b3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQsIGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYpOworICAg
IHN0YXRpYyBzaXplX3QgdXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYsIFVSTFBhcnQpOwor
ICAgIHZvaWQgcG9wUGF0aCgpOworICAgIGJvb2wgc2hvdWxkUG9wUGF0aCh1bnNpZ25lZCk7Cit9
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY2NjVhOGQwZmZi
OTYzNDkyMDY0NTMxNzA1YmMxY2I5MzNiYjc4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCisKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKworUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCit7CisgICAgLy8gTk9U
RTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29t
cHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAvLyAoZS5n
IGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9s
ZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCisgICAgLy8gY291bGQgZWl0
aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGlu
ZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjaworICAgIC8vIG9udG8gdXNpbmcgSVNP
IExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCisgICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXN1bHQg
PSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGJh
c2VVUkwsIHRydWUpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRD
RihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGJhc2VV
UkwsIHRydWUpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIGdldFVSTEJ5dGVzKENG
VVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQoreworICAgIENGSW5kZXggYnl0ZXNM
ZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7CisgICAgcmVzdWx0LnJlc2l6ZShieXRl
c0xlbmd0aCk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCBy
ZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVuZ3RoKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRlc0xlbmd0aCk7
Cit9CisKK3ZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiByZXN1bHQpCit7
CisgICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKKyAg
ICBjaGFyKiBieXRlczsKKyAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGJ5
dGVzTGVuZ3RoLCBieXRlcyk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0
ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7Cisg
ICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5ndGgp
OworfQorCitib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25zdCBVUkwm
IHVybCkKK3sKKyAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CisKKyAg
ICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCisgICAgICAgIHJl
dHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsKKwor
ICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5dGVzKTsK
KyAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5zaXplKCkpIH07
CisKKyAgICBpZiAoIXVybC5oYXNQYXRoKCkpCisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3IHsg
dXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7CisKKyAgICBhdXRvIHVybFdpdGhvdXRQYXRo
ID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwucGF0aFN0YXJ0
KCkgKyAxKTsKKyAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxXaXRob3V0UGF0
aCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhYzQ5YzNmMzdm
NjUwMGU5NjNhZWQ1YjA0ZDA5OGYzODUxZjBlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIENGVVJMRXh0cmFzX2gKKyNkZWZpbmUgQ0ZVUkxFeHRyYXNfaAorCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVVJMOwordHlwZWRlZiBWZWN0
b3I8Y2hhciwgNTEyPiBVUkxDaGFyQnVmZmVyOworCitXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWlu
UHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwg
Q0ZVUkxSZWYgYmFzZVVSTCA9IDApOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0VVJMQnl0
ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGdl
dFVSTEJ5dGVzKENGVVJMUmVmLCBDU3RyaW5nJik7CisKK2Jvb2wgaXNDRlVSTFNhbWVPcmlnaW4o
Q0ZVUkxSZWYsIGNvbnN0IFVSTCYpOworCit9CisKKyNlbmRpZiAvLyBDRlVSTEV4dHJhc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9j
Zi9VUkxDRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk1OTFlMmIzODRlYmIyMDZkNTIyMjdlYzljYmY5ZTc1
ZDk1ODI1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcApA
QCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisKKyNpbmNsdWRlICJDRlVSTEV4dHJhcy5oIgorI2luY2x1ZGUgIlVSTFBhcnNlci5oIgor
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworVVJMOjpVUkwoQ0ZVUkxSZWYgdXJsKQorewor
ICAgIGlmICghdXJsKSB7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhl
cmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAgICBnZXRVUkxCeXRlcyh1cmwsIHVybEJ5dGVz
KTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKHVybEJ5dGVzLmRhdGEoKSk7CisgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Cit9CisKKyNpZiAhVVNFKEZPVU5EQVRJT04pCitSZXRhaW5QdHI8Q0ZV
UkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBXaGF0IHNo
b3VsZCB0aGlzIHJldHVybiBmb3IgaW52YWxpZCBVUkxzPworICAgIC8vIEN1cnJlbnRseSBpdCB0
aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5n
IGluIHRoYXQgY2FzZSwKKyAgICAvLyB3aGljaCBpcyBjbGVhcmx5IHdyb25nLgorICAgIFVSTENo
YXJCdWZmZXIgYnVmZmVyOworICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOworICAgIGF1dG8gY2ZV
UkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CisKKyAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NGVVJMU2FtZU9yaWdp
bihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBjZlVSTDsKK30KKyNlbmRpZgorCitTdHJpbmcgVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNv
bnN0Cit7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTCA9IGNyZWF0ZUNGVVJMKCk7Cisg
ICAgaWYgKCFjZlVSTCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisjaWYgUExBVEZPUk0o
V0lOKQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5
bGU7CisjZWxzZQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0
aFN0eWxlOworI2VuZGlmCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBh
dGgoY2ZVUkwuZ2V0KCksIHBhdGhTdHlsZSkpLmdldCgpOworfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TlNVUkxFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQzMmU0YjMzZDI0ODdkYjcwZmY0ZDM5YjBiZDQz
ZTlmODlhYTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxF
eHRyYXMuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3
LCAyMDEyLCAyMDE0IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAY2xhc3MgTlNTdHJpbmc7CitA
Y2xhc3MgTlNVUkw7CisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNT
dHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopOworV1RGX0VYUE9SVF9QUklWQVRFIE5T
VVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsg
Ly8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBO
U1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICopOworV1RGX0VYUE9SVF9QUklWQVRF
IE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsgLy8gUmV0dXJuIHZhbHVlIG9m
IG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAqZW5jb2RlSG9z
dE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCitX
VEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9y
ZUNvbXBvbmVudChOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOworV1RGX0VYUE9SVF9QUklW
QVRFIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKiwgTlNVUkwgKmJhc2VVUkwpOworV1RGX0VY
UE9SVF9QUklWQVRFIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOworV1RGX0VYUE9S
VF9QUklWQVRFIE5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKiwgQ0ZVUkxD
b21wb25lbnRUeXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJMV2l0aFVzZXJUeXBl
ZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOworCitOU1Jhbmdl
IHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgQk9PTCBp
c1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICopOworV1RGX0VYUE9SVF9QUklWQVRFIEJPT0wgbG9v
a3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKik7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmZjOGYxNjhkZTA1NmM1YjJh
Mjk3MjFmMGJkN2I5ZjZmMTIzNDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
Y29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTAsMCArMSwxMjM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0ICJOU1VS
TEV4dHJhcy5oIgorCisjaW1wb3J0ICJDRlVSTEV4dHJhcy5oIgorI2ltcG9ydCAiVVJMUGFyc2Vy
LmgiCisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi9IZXhOdW1iZXIuaD4K
KyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgor
I2ltcG9ydCA8dW5pY29kZS91aWRuYS5oPgorI2ltcG9ydCA8dW5pY29kZS91c2NyaXB0Lmg+CisK
Ky8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBuYW1lLgor
Ly8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSUROIGVuY29k
aW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgorI2RlZmluZSBIT1NUX05BTUVfQlVG
RkVSX0xFTkdUSCAyMDQ4CisjZGVmaW5lIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIIDIwNDgKKwor
dHlwZWRlZiB2b2lkICgqIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uKShOU1N0cmluZyAqLCBO
U1JhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+Jik7CisKK3N0YXRpYyB1aW50MzJfdCBJ
RE5TY3JpcHRXaGl0ZUxpc3RbKFVTQ1JJUFRfQ09ERV9MSU1JVCArIDMxKSAvIDMyXTsKKworbmFt
ZXNwYWNlIFdURiB7CisKK3N0YXRpYyBib29sIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIo
VUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgcmV0dXJuIGNvZGVQb2ludCA9PSAweDA1NDggfHwg
Y29kZVBvaW50ID09IDB4MDU0RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQb2ludCA9
PSAweDA1N0Q7Cit9CisKK3N0YXRpYyBib29sIGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoVUNo
YXIzMiBjb2RlUG9pbnQpCit7CisgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsK
KyAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjb2RlUG9pbnQsICZl
cnJvcik7CisgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgeworICAgICAgICBMT0dfRVJS
T1IoImdvdCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBl
cnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gc2NyaXB0
ID09IFVTQ1JJUFRfQVJNRU5JQU47Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2hhcmFj
dGVyVHlwZSBjaGFyQ29kZSkKK3sKKyAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24o
Y2hhckNvZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGluZ3MgdGhlIFVS
TCBQYXJzZXIgcmVqZWN0czoKKyAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7CisgICAgY2FzZSAnIyc6
CisgICAgY2FzZSAnJSc6CisgICAgY2FzZSAnLyc6CisgICAgY2FzZSAnOic6CisgICAgY2FzZSAn
Pyc6CisgICAgY2FzZSAnQCc6CisgICAgY2FzZSAnWyc6CisgICAgY2FzZSAnXFwnOgorICAgIGNh
c2UgJ10nOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorfQorCisKKworc3RhdGljIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0
ZXIoc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjaGFy
Q29kZSkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVu
c2FmZSwgbG9va2FsaWtlIGNoYXJhY3RlcnM6CisgICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hh
cmFjdGVyLCBhbnkgY2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKKyAgICAvLyBh
bnkgaWdub3JhYmxlIGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBs
b2Nrcy4KKyAgICAKKyAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4g
TW96aWxsYSdzIGJsYWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklE
Ti5ibGFja2xpc3RfY2hhcnM+LgorCisgICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVycyBoZXJl
IHdpbGwgbmV2ZXIgYXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgorICAgIC8vIEZvciBleGFt
cGxlLCBJQ1UgdHJhbnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNlIGFuZCBt
b3N0CisgICAgLy8gc2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUgb2YgdGhl
IHR3byBjYWxsZXJzIHVzZXMgdGhpcworICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBoYXZlIG5v
dCBiZWVuIHByb2Nlc3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgorICAgIAor
ICAgIGlmICghdV9pc3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hhckNvZGUp
IHx8IHVfaGFzQmluYXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxF
X0NPREVfUE9JTlQpKQorICAgICAgICByZXR1cm4gWUVTOworICAgIAorICAgIHN3aXRjaCAoY2hh
ckNvZGUpIHsKKyAgICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVB
UlRFUiAqLworICAgICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxG
ICovCisgICAgICAgIGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRF
UlMgKi8KKyAgICAgICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEgg
QUNVVEUgKi8KKyAgICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBSRVRST0ZMRVgg
Q0xJQ0sgKi8KKyAgICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBBTFBI
QSAqLworICAgICAgICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBH
ICovCisgICAgICAgIGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJQU5HVUxBUiBD
T0xPTiAqLworICAgICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JUIFNUUk9LRSBP
VkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQgU09MSURV
UyBPVkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcgTE9ORyBTT0xJ
RFVTIE9WRVJMQVkgKi8KKyAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZVTEwgU1RP
UCAqLworICAgICAgICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICovCisgICAg
ICAgIGNhc2UgMHgwNUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRICovCisgICAg
ICAgIGNhc2UgMHgwNUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRICovCisgICAg
ICAgIGNhc2UgMHgwNUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICovCisgICAg
ICAgIGNhc2UgMHgwNjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04gKi8KKyAgICAg
ICAgY2FzZSAweDA2MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJR04gKi8K
KyAgICAgICAgY2FzZSAweDA2NTA6IC8qIEFSQUJJQyBLQVNSQSAqLworICAgICAgICBjYXNlIDB4
MDY2MDogLyogQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KKyAgICAgICAgY2FzZSAweDA2NkE6
IC8qIEFSQUJJQyBQRVJDRU5UIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDA2RDQ6IC8qIEFSQUJJ
QyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDA2RjA6IC8qIEVYVEVOREVEIEFSQUJJQyBJ
TkRJQyBESUdJVCBaRVJPICovCisgICAgICAgIGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMgU1VQUkFM
SU5FQVIgRlVMTCBTVE9QICovCisgICAgICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMgU1VCTElO
RUFSIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MDcwMzogLyogU1lSSUFDIFNVUFJBTElO
RUFSIENPTE9OICovCisgICAgICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJQUMgU1VCTElORUFSIENP
TE9OICovCisgICAgICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQVU5DVFVB
VElPTiAqLworICAgICAgICBjYXNlIDB4MUQwNDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgQyAqLworICAgICAgICBjYXNlIDB4MUQwRjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgTyAqLworICAgICAgICBjYXNlIDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgVSAqLworICAgICAgICBjYXNlIDB4MUQyMDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgViAqLworICAgICAgICBjYXNlIDB4MUQyMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgVyAqLworICAgICAgICBjYXNlIDB4MUQyMjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgWiAqLworICAgICAgICBjYXNlIDB4MUVDRDogLyogTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lU
SCBET1QgQkVMT1cgKi8KKyAgICAgICAgY2FzZSAweDIwMTA6IC8qIEhZUEhFTiAqLworICAgICAg
ICBjYXNlIDB4MjAxMTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLworICAgICAgICBjYXNlIDB4
MjAyNDogLyogT05FIERPVCBMRUFERVIgKi8KKyAgICAgICAgY2FzZSAweDIwMjc6IC8qIEhZUEhF
TkFUSU9OIFBPSU5UICovCisgICAgICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVGVC1QT0lO
VElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4MjAzQTogLyogU0lO
R0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICovCisgICAgICAgIGNhc2Ug
MHgyMDQxOiAvKiBDQVJFVCBJTlNFUlRJT04gUE9JTlQgKi8KKyAgICAgICAgY2FzZSAweDIwNDQ6
IC8qIEZSQUNUSU9OIFNMQVNIICovCisgICAgICAgIGNhc2UgMHgyMDUyOiAvKiBDT01NRVJDSUFM
IE1JTlVTIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFDVElPTiBP
TkUgVEhJUkQgKi8KKyAgICAgICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08g
VEhJUkRTICovCisgICAgICAgIGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEZJ
RlRIICovCisgICAgICAgIGNhc2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRI
UyAqLworICAgICAgICBjYXNlIDB4MjE1NzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRI
UyAqLworICAgICAgICBjYXNlIDB4MjE1ODogLyogVlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhT
ICovCisgICAgICAgIGNhc2UgMHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIICov
CisgICAgICAgIGNhc2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhUSFMgKi8K
KyAgICAgICAgY2FzZSAweDIxNUI6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFQgKi8KKyAg
ICAgICAgY2FzZSAweDIxNUM6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhTICovCisg
ICAgICAgIGNhc2UgMHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTICovCisg
ICAgICAgIGNhc2UgMHgyMTVFOiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRIUyAqLwor
ICAgICAgICBjYXNlIDB4MjE1RjogLyogRlJBQ1RJT04gTlVNRVJBVE9SIE9ORSAqLworICAgICAg
ICBjYXNlIDB4MjIxMjogLyogTUlOVVMgU0lHTiAqLworICAgICAgICBjYXNlIDB4MjIxNTogLyog
RElWSVNJT04gU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDIyMTY6IC8qIFNFVCBNSU5VUyAqLwor
ICAgICAgICBjYXNlIDB4MjIzNjogLyogUkFUSU8gKi8KKyAgICAgICAgY2FzZSAweDIzM0Y6IC8q
IEFQTCBGVU5DVElPTkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KKyAgICAgICAgY2FzZSAweDIzQUU6
IC8qIElOVEVHUkFMIEVYVEVOU0lPTiAqLworICAgICAgICBjYXNlIDB4MjQ0QTogLyogT0NSIERP
VUJMRSBCQUNLU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlUeXBlOjpC
b3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLwor
ICAgICAgICBjYXNlIDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBE
SUFHT05BTCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUICovCisgICAgICAgIGNhc2UgMHgyOUY2
OiAvKiBTT0xJRFVTIFdJVEggT1ZFUkJBUiAqLworICAgICAgICBjYXNlIDB4MjlGODogLyogQklH
IFNPTElEVVMgKi8KKyAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFS
WSBSRUxBVElPTiAqLworICAgICAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BF
UkFUT1IgKi8KKyAgICAgICAgY2FzZSAweDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9O
IENIQVJBQ1RFUiBMRUZUIFRPIFJJR0hUICovCisgICAgICAgIGNhc2UgMHgyRkYxOiAvKiBJREVP
R1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KKyAgICAgICAg
Y2FzZSAweDJGRjI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRP
IE1JRERMRSBBTkQgUklHSFQgKi8KKyAgICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9HUkFQSElD
IERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICovCisgICAg
ICAgIGNhc2UgMHgyRkY0OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVM
TCBTVVJST1VORCAqLworICAgICAgICBjYXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJ
UFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQUJPVkUgKi8KKyAgICAgICAgY2FzZSAweDJG
RjY6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJF
TE9XICovCisgICAgICAgIGNhc2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBD
SEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMRUZUICovCisgICAgICAgIGNhc2UgMHgyRkY4OiAvKiBJ
REVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZU
ICovCisgICAgICAgIGNhc2UgMHgyRkY5OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFS
QUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBSSUdIVCAqLworICAgICAgICBjYXNlIDB4MkZGQTog
LyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIg
TEVGVCAqLworICAgICAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04g
Q0hBUkFDVEVSIE9WRVJMQUlEICovCisgICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVPR1JBUEhJ
QyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUgQlJBQ0tF
VCAqLworICAgICAgICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VU
ICovCisgICAgICAgIGNhc2UgMHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VU
ICovCisgICAgICAgIGNhc2UgMHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQ
UEVSIEhBTEYgKi8KKyAgICAgICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFU
IE1BUksgTE9XRVIgSEFMRiAqLworICAgICAgICBjYXNlIDB4MzIxRDogLyogUEFSRU5USEVTSVpF
RCBLT1JFQU4gQ0hBUkFDVEVSIE9KRU9OICovCisgICAgICAgIGNhc2UgMHgzMjFFOiAvKiBQQVJF
TlRIRVNJWkVEIEtPUkVBTiBDSEFSQUNURVIgTyBIVSAqLworICAgICAgICBjYXNlIDB4MzNBRTog
LyogU1FVQVJFIFJBRCBPVkVSIFMgKi8KKyAgICAgICAgY2FzZSAweDMzQUY6IC8qIFNRVUFSRSBS
QUQgT1ZFUiBTIFNRVUFSRUQgKi8KKyAgICAgICAgY2FzZSAweDMzQzY6IC8qIFNRVUFSRSBDIE9W
RVIgS0cgKi8KKyAgICAgICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9WRVIgTSAqLworICAg
ICAgICBjYXNlIDB4MDVCOTogLyogSEVCUkVXIFBPSU5UIEhPTEFNICovCisgICAgICAgIGNhc2Ug
MHgwNUJBOiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZBViAqLworICAgICAgICBj
YXNlIDB4MDVDMTogLyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCisgICAgICAgIGNhc2UgMHgw
NUMyOiAvKiBIRUJSRVcgUE9JTlQgU0lOIERPVCAqLworICAgICAgICBjYXNlIDB4MDVDNDogLyog
SEVCUkVXIE1BUksgVVBQRVIgRE9UICovCisgICAgICAgIGNhc2UgMHhBNzMxOiAvKiBMQVRJTiBM
RVRURVIgU01BTEwgQ0FQSVRBTCBTICovCisgICAgICAgIGNhc2UgMHhBNzcxOiAvKiBMQVRJTiBT
TUFMTCBMRVRURVIgRFVNICovCisgICAgICAgIGNhc2UgMHhBNzg5OiAvKiBNT0RJRklFUiBMRVRU
RVIgQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZP
UiBWRVJUSUNBTCBTRU1JQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZFMTU6IC8qIFBSRVNFTlRB
VElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFWENMQU1BVElPTiBNQVJLICovCisgICAgICAgIGNhc2Ug
MHhGRTNGOiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFD
S0VUICovCisgICAgICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxM
IEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRPUlRPSVNF
IFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZGMEU6IC8qIEZVTExXSURUSCBGVUxM
IFNUT1AgKi8KKyAgICAgICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09MSURVUyAqLwor
ICAgICAgICBjYXNlIDB4RkY2MTogLyogSEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwgU1RPUCAq
LworICAgICAgICBjYXNlIDB4RkZGQzogLyogT0JKRUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAq
LworICAgICAgICBjYXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCisgICAg
ICAgIGNhc2UgMHgxRjUwRjogLyogTE9DSyBXSVRIIElOSyBQRU4gKi8KKyAgICAgICAgY2FzZSAw
eDFGNTEwOiAvKiBDTE9TRUQgTE9DSyBXSVRIIEtFWSAqLworICAgICAgICBjYXNlIDB4MUY1MTE6
IC8qIEtFWSAqLworICAgICAgICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sgKi8KKyAgICAgICAgY2Fz
ZSAweDFGNTEzOiAvKiBPUEVOIExPQ0sgKi8KKyAgICAgICAgICAgIHJldHVybiBZRVM7CisgICAg
ICAgIGNhc2UgMHgwMzA3OiAvKiBDT01CSU5JTkcgRE9UIEFCT1ZFICovCisgICAgICAgICAgICBy
ZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMjM3IC8qIExBVElOIFNNQUxMIExFVFRFUiBE
T1RMRVNTIEogKi8KKyAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAx
MzEgLyogTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSSAqLworICAgICAgICAgICAgICAgIHx8
IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExFVFRFUiBWQVYgKi8KKyAg
ICAgICAgY2FzZSAweDA1NDg6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPICovCisgICAg
ICAgIGNhc2UgMHgwNTREOiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUggKi8KKyAgICAg
ICAgY2FzZSAweDA1Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLworICAgICAgICBj
YXNlIDB4MDU3RDogLyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNFSCAqLworICAgICAgICAgICAg
cmV0dXJuIHByZXZpb3VzQ29kZVBvaW50CisgICAgICAgICAgICAgICAgJiYgIWlzQVNDSUlEaWdp
dE9yVmFsaWRIb3N0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCisgICAgICAg
ICAgICAgICAgJiYgIWlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQu
dmFsdWUoKSk7CisgICAgICAgIGNhc2UgJy4nOgorICAgICAgICAgICAgcmV0dXJuIE5POworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50CisgICAg
ICAgICAgICAgICAgJiYgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQ
b2ludC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICYmICEoaXNBcm1lbmlhblNjcmlwdENoYXJh
Y3RlcihjaGFyQ29kZSkgfHwgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoY2hhckNv
ZGUpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdoaXRlTGlzdElETlNjcmlwdChjb25zdCBj
aGFyKiBzY3JpcHROYW1lKQoreworICAgIGludDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9wZXJ0eVZh
bHVlRW51bShVQ0hBUl9TQ1JJUFQsIHNjcmlwdE5hbWUpOworICAgIGlmIChzY3JpcHQgPj0gMCAm
JiBzY3JpcHQgPCBVU0NSSVBUX0NPREVfTElNSVQpIHsKKyAgICAgICAgc2l6ZV90IGluZGV4ID0g
c2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7
CisgICAgICAgIElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gfD0gbWFzazsKKyAgICB9Cit9CisK
K3N0YXRpYyBCT09MIHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpmaWxlbmFt
ZSkKK3sKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBGSUxF
ICpmaWxlID0gZm9wZW4oW2ZpbGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICJyIik7
CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gTk87CisgICAgCisgICAgLy8gUmVhZCBh
IHdvcmQgYXQgYSB0aW1lLgorICAgIC8vIEFsbG93IGNvbW1lbnRzLCBzdGFydGluZyB3aXRoICMg
Y2hhcmFjdGVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgICAgd2hpbGUgKDEpIHsKKyAgICAg
ICAgLy8gU2tpcCBhIGNvbW1lbnQgaWYgcHJlc2VudC4KKyAgICAgICAgaWYgKGZzY2FuZihmaWxl
LCAiICMlKlteXG5ccl0lKltcblxyXSIpID09IEVPRikKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAKKyAgICAgICAgLy8gUmVhZCBhIHNjcmlwdCBuYW1lIGlmIHByZXNlbnQuCisgICAgICAg
IGNoYXIgd29yZFszM107CisgICAgICAgIGludCByZXN1bHQgPSBmc2NhbmYoZmlsZSwgIiAlMzJb
XiMgXHRcblxyXSUqW14jIFx0XG5ccl0gIiwgd29yZCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0g
RU9GKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBpZiAocmVzdWx0ID09
IDEpIHsKKyAgICAgICAgICAgIC8vIEdvdCBhIHdvcmQsIG1hcCB0byBzY3JpcHQgY29kZSBhbmQg
cHV0IGl0IGludG8gdGhlIGFycmF5LgorICAgICAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHdv
cmQpOworICAgICAgICB9CisgICAgfQorICAgIGZjbG9zZShmaWxlKTsKKyAgICByZXR1cm4gWUVT
OworfQorCitzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29u
c3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCit7CisgICAgc3RhdGljIGRpc3BhdGNo
X29uY2VfdCBmbGFnOworICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57CisgICAgICAgIC8vIFJl
YWQgd2hpdGUgbGlzdCBmcm9tIGxpYnJhcnkuCisgICAgICAgIE5TQXJyYXkgKmRpcnMgPSBOU1Nl
YXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxs
RG9tYWluc01hc2ssIFlFUyk7CisgICAgICAgIGludCBudW1EaXJzID0gW2RpcnMgY291bnRdOwor
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykgeworICAgICAgICAgICAg
aWYgKHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0IGNoYXIq
IGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3RbMjBdID0geworICAgICAgICAgICAgIkNvbW1vbiIs
CisgICAgICAgICAgICAiSW5oZXJpdGVkIiwKKyAgICAgICAgICAgICJBcmFiaWMiLAorICAgICAg
ICAgICAgIkFybWVuaWFuIiwKKyAgICAgICAgICAgICJCb3BvbW9mbyIsCisgICAgICAgICAgICAi
Q2FuYWRpYW5fQWJvcmlnaW5hbCIsCisgICAgICAgICAgICAiRGV2YW5hZ2FyaSIsCisgICAgICAg
ICAgICAiRGVzZXJldCIsCisgICAgICAgICAgICAiR3VqYXJhdGkiLAorICAgICAgICAgICAgIkd1
cm11a2hpIiwKKyAgICAgICAgICAgICJIYW5ndWwiLAorICAgICAgICAgICAgIkhhbiIsCisgICAg
ICAgICAgICAiSGVicmV3IiwKKyAgICAgICAgICAgICJIaXJhZ2FuYSIsCisgICAgICAgICAgICAi
S2F0YWthbmFfT3JfSGlyYWdhbmEiLAorICAgICAgICAgICAgIkthdGFrYW5hIiwKKyAgICAgICAg
ICAgICJMYXRpbiIsCisgICAgICAgICAgICAiVGFtaWwiLAorICAgICAgICAgICAgIlRoYWkiLAor
ICAgICAgICAgICAgIllpIiwKKyAgICAgICAgfTsKKyAgICAgICAgZm9yIChjb25zdCBjaGFyKiBz
Y3JpcHROYW1lIDogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKKyAgICAgICAgICAgIHdoaXRl
TGlzdElETlNjcmlwdChzY3JpcHROYW1lKTsKKyAgICB9KTsKKyAgICAKKyAgICBpbnQzMl90IGkg
PSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7CisgICAg
d2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgVUNoYXIzMiBjOworICAgICAgICBVMTZfTkVY
VChidWZmZXIsIGksIGxlbmd0aCwgYykKKyAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVS
T19FUlJPUjsKKyAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQo
YywgJmVycm9yKTsKKyAgICAgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgeworICAgICAg
ICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNj
cmlwdHM6ICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAgICB9Cisg
ICAgICAgIGlmIChzY3JpcHQgPCAwKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoImdvdCBuZWdh
dGl2ZSBudW1iZXIgZm9yIHNjcmlwdCBjb2RlIGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7CisgICAg
ICAgICAgICByZXR1cm4gTk87CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNjcmlwdCA+PSBVU0NS
SVBUX0NPREVfTElNSVQpCisgICAgICAgICAgICByZXR1cm4gTk87CisKKyAgICAgICAgc2l6ZV90
IGluZGV4ID0gc2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3Jp
cHQgJSAzMik7CisgICAgICAgIGlmICghKElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gJiBtYXNr
KSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0xvb2th
bGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykpCisgICAgICAgICAgICByZXR1cm4g
Tk87CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKKyAgICB9CisgICAgcmV0dXJuIFlF
UzsKK30KKworc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERS
dWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5j
dGlvbjxib29sKFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKK3sKKyAgICBBU1NFUlQobGVu
Z3RoID4gMCk7CisKKyAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1p
KSB7CisgICAgICAgIFVDaGFyIGNoID0gYnVmZmVyW2ldOworICAgICAgICAKKyAgICAgICAgaWYg
KGNoYXJhY3RlcklzQWxsb3dlZChjaCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
CisgICAgICAgIC8vIE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExvd2VyIGxl
dmVsIHJlZ2lzdHJhcnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgorICAgICAgICBpZiAoY2gg
PT0gJy4nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisjZGVmaW5lIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKKyAgICB7IFwKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGludDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yo
c3VmZml4WzBdKTsgXAorICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYmIDAgPT0g
bWVtY21wKGJ1ZmZlciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXplb2Yoc3Vm
Zml4KSkpIFwKKyAgICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93
ZWRCeVRMRFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlvbik7IFwK
KyAgICB9CisKK3N0YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNoYXIg
Y2gpCit7CisgICAgLy8gT25seSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRh
c2hlcyBhcmUgYWxsb3dlZC4KKyAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0
NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKK30K
Kworc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFy
KiBidWZmZXIsIGludDMyX3QgbGVuZ3RoKQoreworICAgIC8vIFNraXAgdHJhaWxpbmcgZG90IGZv
ciByb290IGRvbWFpbi4KKyAgICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFdID09ICcuJykKKyAgICAg
ICAgbGVuZ3RoLS07CisKKyAgICAvLyBodHRwOi8vY2N0bGQucnUvZmlsZXMvcGRmL2RvY3MvcnVs
ZXNfcnUtcmYucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9IHsKKyAg
ICAgICAgJy4nLAorICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgor
ICAgICAgICAweDA0NDQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgorICAgIH07CisgICAg
Q0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFuRG9tYWlu
TmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vcnVzbmFtZXMucnUvcnVsZXMucGwKKyAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNSVVNbXSA9IHsKKyAgICAgICAgJy4nLAorICAg
ICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICAgICAweDA0NDMs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCisgICAgICAgIDB4MDQ0MSAgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEVTCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hF
UyhjeXJpbGxpY1JVUywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBo
dHRwOi8vcnUuZmFpdGlkLm9yZy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2YS9pZG4K
KyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9IHsKKyAgICAgICAgJy4n
LAorICAgICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQorICAgICAgICAw
eDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEtBCisgICAgICAgIDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCisg
ICAgICAgIDB4MDQzMCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICB9OworICAgIENI
RUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZBLCBpc1J1c3NpYW5Eb21h
aW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9mb3J1c2Vy
L2RvY3MvcmVncnVsZXMucGhwCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljREVUSVtd
ID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIERFCisgICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCisgICAg
ICAgIDB4MDQ0MiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCisgICAgICAgIDB4MDQzOCAg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NV
RkZJWF9NQVRDSEVTKGN5cmlsbGljREVUSSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7
CisKKyAgICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBydWxlcyBub3QgcHVibGlzaGVkLiBUaGUg
d29yZCBpcyBSdXNzaWFuLCBzbyBvbmx5IGFsbG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0aW1lLAor
ICAgIC8vIGFsdGhvdWdoIHdlIG1heSBuZWVkIHRvIHJldmlzZSB0aGUgY2hlY2tzIGlmIHRoaXMg
ZW5kcyB1cCBiZWluZyB1c2VkIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBSdXNzaWEu
CisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT05MQVlOW10gPSB7CisgICAgICAgICcu
JywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAgICAgICAw
eDA0M0QsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICAgICAweDA0M0IsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBFTAorICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBBCisgICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JU
IEkKKyAgICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICB9Owor
ICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT05MQVlOLCBpc1J1c3Np
YW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHNh
bWUgYXMgYWJvdmUuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU0FZVFtdID0gewor
ICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVT
CisgICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICAgICAgMHgw
NDM5LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQorICAgICAgICAweDA0NDIgIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VG
RklYX01BVENIRVMoY3lyaWxsaWNTQVlULCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsK
KworICAgIC8vIGh0dHA6Ly9waXIub3JnL3Byb2R1Y3RzL29wci1kb21haW4vIC0gcnVsZXMgbm90
IHB1Ymxpc2hlZC4gQWNjb3JkaW5nIHRvIHRoZSByZWdpc3RyeSBzaXRlLAorICAgIC8vIHRoZSBp
bnRlbmRlZCBhdWRpZW5jZSBpcyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xhdmljLXNwZWFraW5nIG1h
cmtldHMiLgorICAgIC8vIENocm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lhbiwgc28g
c3RpY2tpbmcgd2l0aCB0aGF0IGZvciBub3cuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljT1JHW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgTworICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBF
UgorICAgICAgICAweDA0MzMgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKKyAgICB9Owor
ICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1c3NpYW5E
b21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxlcy5odG1s
CisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7CisgICAgICAgICcuJywK
KyAgICAgICAgMHgwNDMxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKyAgICAgICAgMHgw
NDM1LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKyAgICAgICAgMHgwNDNCICAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9N
QVRDSEVTKGN5cmlsbGljQkVMLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBSdXNzaWFuIGFu
ZCBCeWVsb3J1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisg
ICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgw
NDUxIHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5IHx8IGlz
QVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0cDovL3d3
dy5uaWMua3ovZG9jcy9wb3J5YWRva192bmVkcmVuaXlhX2thel9ydS5wZGYKKyAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgY3lyaWxsaWNLQVpbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0
OUIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgICAgICAw
eDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzNyAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhf
TUFUQ0hFUyhjeXJpbGxpY0tBWiwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gS2F6YWtoIGxl
dHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNo
ID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0
RDkgfHwgY2ggPT0gMHgwNDkzIHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMgfHwgY2gg
PT0gMHgwNEU5IHx8IGNoID09IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0gMHgwNEJC
IHx8IGNoID09IDB4MDQ1NiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9
KTsKKworICAgIC8vIGh0dHA6Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1bGVzJTIw
b2YlMjBVS1JfdjQuMC5wZGYKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNVS1JbXSA9
IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBVCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCisgICAgICAg
IDB4MDQ0MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgfTsKKyAgICBDSEVDS19S
VUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1VLUiwgW10oVUNoYXIgY2gpIHsKKyAgICAg
ICAgLy8gUnVzc2lhbiBhbmQgVWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFy
ZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYp
IHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8IGNoID09
IDB4MDQ1NiB8fCBjaCA9PSAweDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7
CisgICAgfSk7CisKKyAgICAvLyBodHRwOi8vd3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1FTlRJL2lk
bi1zcmItcG9saWN5LXRlcm1zb2Z1c2UtdjEuNC1lbmcucGRmCisgICAgc3RhdGljIGNvbnN0IFVD
aGFyIGN5cmlsbGljU1JCW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQxLCAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDMxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUK
KyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU1JCLCBb
XShVQ2hhciBjaCkgeworICAgICAgICAvLyBTZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFz
aGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAw
eDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTIg
fHwgY2ggPT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0g
MHgwNDVCIHx8IGNoID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsK
KyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly9tYXJuZXQubWsvZG9jL3ByYXZpbG5pay1tay1ta2Qu
cGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTUtEW10gPSB7CisgICAgICAgICcu
JywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAgICAg
MHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyAgICAgICAgMHgwNDM0ICAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJ
WF9NQVRDSEVTKGN5cmlsbGljTUtELCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBNYWNlZG9u
aWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1
cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2gg
PD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1IHx8IGNoID09IDB4MDQ1
OCB8fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8fCBjaCA9
PSAweDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAg
ICAvLyBodHRwczovL3d3dy5tb24ubW4vY3MvCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljTU9OW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
TworICAgICAgICAweDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgIH07Cisg
ICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT04sIFtdKFVDaGFyIGNo
KSB7CisgICAgICAgIC8vIE1vbmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUg
YWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8
fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRBRiB8fCBpc0FTQ0lJ
RGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9KTsKKworICAgIC8vIE5vdCBhIGtub3duIHRv
cCBsZXZlbCBkb21haW4gd2l0aCBzcGVjaWFsIHJ1bGVzLgorICAgIHJldHVybiBOTzsKK30KKwor
Ly8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KKy8v
IElmIG1ha2VTdHJpbmcgaXMgTk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwgb3Ig
c2VsZiB0byBpbmRpY2F0ZSBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KKy8vIElmIG1ha2VTdHJpbmcg
aXMgWUVTLCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBwZWQgc3Ry
aW5nLgorc3RhdGljIE5TU3RyaW5nICptYXBIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3Ry
aW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MIGVuY29kZSwgQk9PTCBtYWtlU3RyaW5nLCBCT09MICpl
cnJvcikKK3sKKyAgICBpZiAocmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgp
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgVUNoYXIgc291cmNlQnVmZmVyW0hPU1RfTkFN
RV9CVUZGRVJfTEVOR1RIXTsKKyAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NUX05BTUVf
QlVGRkVSX0xFTkdUSF07CisgICAgCisgICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZT
dHJpbmc6QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24g
IT0gTlNOb3RGb3VuZCkgeworICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBz
dWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VdOworICAgICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5n
UmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMobnVsbHB0
ciwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7CisgICAgICAgIGlmIChzdWJz
dHJpbmcpIHsKKyAgICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKKyAgICAgICAgICAgIHJh
bmdlID0gTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBpbnQgbGVuZ3RoID0gcmFuZ2UubGVuZ3RoOworICAgIFtzdHJpbmcgZ2V0Q2hh
cmFjdGVyczpzb3VyY2VCdWZmZXIgcmFuZ2U6cmFuZ2VdOworICAgIAorICAgIFVFcnJvckNvZGUg
dWVycm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9
IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVy
dGVkID0gKGVuY29kZSA/IHVpZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5pY29kZSko
JlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksIHNvdXJjZUJ1
ZmZlciwgbGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgs
ICZwcm9jZXNzaW5nRGV0YWlscywgJnVlcnJvcik7CisgICAgaWYgKGxlbmd0aCAmJiAoVV9GQUlM
VVJFKHVlcnJvcikgfHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkgeworICAgICAgICAqZXJy
b3IgPSBZRVM7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIAorICAgIGlmIChudW1D
aGFyYWN0ZXJzQ29udmVydGVkID09IGxlbmd0aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZlciwgZGVz
dGluYXRpb25CdWZmZXIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIAorICAgIGlmICghZW5jb2RlICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRX
aGl0ZUxpc3QoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpICYmICFh
bGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJh
Y3RlcnNDb252ZXJ0ZWQpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJldHVybiBt
YWtlU3RyaW5nID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0aW9uQnVm
ZmVyIGxlbmd0aDpudW1DaGFyYWN0ZXJzQ29udmVydGVkXSA6IHN0cmluZzsKK30KKworc3RhdGlj
IEJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5T
UmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQoreworICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhS
YW5nZShzdHJpbmcsIHJhbmdlLCBOTywgTk8sIGVycm9yKSAhPSBuaWw7Cit9CisgCitzdGF0aWMg
Qk9PTCBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNS
YW5nZSByYW5nZSwgQk9PTCAqZXJyb3IpCit7CisgICAgcmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJh
bmdlKHN0cmluZywgcmFuZ2UsIFlFUywgIE5PLCBlcnJvcikgIT0gbmlsOworfQorCitzdGF0aWMg
TlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFu
Z2UgcmFuZ2UpCit7CisgICAgQk9PTCBlcnJvciA9IE5POworICAgIE5TU3RyaW5nICpob3N0ID0g
bWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgTk8sIFlFUywgJmVycm9yKTsKKyAg
ICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICFob3N0ID8gc3Ry
aW5nIDogaG9zdDsKK30KKworc3RhdGljIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdpdGhSYW5n
ZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQoreworICAgIEJPT0wgZXJyb3IgPSBO
TzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFu
Z2UsIFlFUywgWUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQorCitOU1N0cmluZyAqZGVj
b2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIGVycm9yID0gTk87Cisg
ICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIE5TTWFrZVJh
bmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSksIE5PLCBZRVMsICZlcnJvcik7CisgICAgaWYgKGVycm9y
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7
Cit9CisKK05TU3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQoreworICAg
IEJPT0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJh
bmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgWUVTLCBZRVMsICZl
cnJvcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAh
aG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0
TmVlZE1hcHBpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiYgYXJyYXksIEJPT0wgZW5jb2RlKQoreworICAgIC8vIEdlbmVyYWxseSwg
d2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhvc3Qg
bmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGluZy4KKyAgICAvLyBUaGVyZWZvcmUsIHdlIHVz
ZSBuaWwgdG8gaW5kaWNhdGUgbm8gbWFwcGluZyBoZXJlIGFuZCBhbiBlbXB0eSBhcnJheSB0byBp
bmRpY2F0ZSBlcnJvci4KKworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBCT09MIG5lZWRzTWFw
cGluZyA9IGVuY29kZSA/IGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShzdHJpbmcsIHJh
bmdlLCAmZXJyb3IpIDogaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKHN0cmluZywgcmFu
Z2UsICZlcnJvcik7CisgICAgaWYgKCFlcnJvciAmJiAhbmVlZHNNYXBwaW5nKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgYXJyYXkgPSBhZG9wdE5TKFtO
U011dGFibGVBcnJheSBuZXddKTsKKworICAgIGlmICghZXJyb3IpCisgICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKK30KKworc3RhdGljIHZv
aWQgY29sbGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5n
ZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCit7CisgICAgcmV0dXJu
IGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIFlFUyk7
Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZERlY29kaW5nKE5TU3RyaW5n
ICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5
KQoreworICAgIHJldHVybiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmluZywgcmFu
Z2UsIGFycmF5LCBOTyk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRv
TWFpbFRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0
aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQoreworICAgIC8vIEluIGEg
bWFpbHRvOiBVUkwsIGhvc3QgbmFtZXMgY29tZSBhZnRlciBhICdAJyBjaGFyYWN0ZXIgYW5kIGVu
ZCB3aXRoIGEgJz4nIG9yICcsJyBvciAnPycgY2hhcmFjdGVyLgorICAgIC8vIFNraXAgcXVvdGVk
IHN0cmluZ3Mgc28gdGhhdCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29uZnVzZSB1cy4KKyAg
ICAvLyBXaGVuIHdlIGZpbmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFzdCB0aGUgcGFydCBv
ZiB0aGUgVVJMIHRoYXQgY29udGFpbnMgaG9zdCBuYW1lcy4KKyAgICAKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5hbWVPclN0cmluZ1N0
YXJ0Q2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVy
c0luU3RyaW5nOkAiXCJAPyJdOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
TlNDaGFyYWN0ZXJTZXQ+PiBob3N0TmFtZUVuZENoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQg
Y2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIj4sPyJdOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBxdW90ZWRTdHJpbmdDaGFy
YWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJp
bmc6QCJcIlxcIl07CisgICAgCisgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0cmluZyBs
ZW5ndGhdOworICAgIE5TUmFuZ2UgcmVtYWluaW5nID0gTlNNYWtlUmFuZ2UoMCwgc3RyaW5nTGVu
Z3RoKTsKKyAgICAKKyAgICB3aGlsZSAoMSkgeworICAgICAgICAvLyBGaW5kIHN0YXJ0IG9mIGhv
c3QgbmFtZSBvciBvZiBxdW90ZWQgc3RyaW5nLgorICAgICAgICBOU1JhbmdlIGhvc3ROYW1lT3JT
dHJpbmdTdGFydCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdE5hbWVPclN0
cmluZ1N0YXJ0Q2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5n
XTsKKyAgICAgICAgaWYgKGhvc3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlvbiA9PSBOU05vdEZv
dW5kKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuaWNoYXIgYyA9IFtzdHJpbmcg
Y2hhcmFjdGVyQXRJbmRleDpob3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRpb25dOworICAgICAg
ICByZW1haW5pbmcubG9jYXRpb24gPSBOU01heFJhbmdlKGhvc3ROYW1lT3JTdHJpbmdTdGFydCk7
CisgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9j
YXRpb247CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnPycpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnQCcpIHsKKyAgICAgICAgICAgIC8vIEZp
bmQgZW5kIG9mIGhvc3QgbmFtZS4KKyAgICAgICAgICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQg
PSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAgICAgICBOU1JhbmdlIGhvc3ROYW1lRW5kID0g
W3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpob3N0TmFtZUVuZENoYXJhY3RlcnMuZ2V0
KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107CisgICAgICAgICAgICBCT09MIGRv
bmU7CisgICAgICAgICAgICBpZiAoaG9zdE5hbWVFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkg
eworICAgICAgICAgICAgICAgIGhvc3ROYW1lRW5kLmxvY2F0aW9uID0gc3RyaW5nTGVuZ3RoOwor
ICAgICAgICAgICAgICAgIGRvbmUgPSBZRVM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IGhvc3ROYW1lRW5kLmxvY2F0aW9uOworICAg
ICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcu
bG9jYXRpb247CisgICAgICAgICAgICAgICAgZG9uZSA9IE5POworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBQcm9jZXNzIGhvc3QgbmFtZSByYW5nZS4KKyAgICAg
ICAgICAgIGYoc3RyaW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZC5s
b2NhdGlvbiAtIGhvc3ROYW1lU3RhcnQpLCBhcnJheSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGlmIChkb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KKyAgICAgICAgICAgIEFTU0VSVChj
ID09ICciJyk7CisgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgIE5TUmFu
Z2UgZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVy
RnJvbVNldDpxdW90ZWRTdHJpbmdDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5n
ZTpyZW1haW5pbmddOworICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hhcmFjdGVyT3JTdHJp
bmdFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICAgICAgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRleDplc2NhcGVk
Q2hhcmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb25dOworICAgICAgICAgICAgICAgIHJlbWFpbmlu
Zy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kKTsKKyAg
ICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWluaW5n
LmxvY2F0aW9uOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIElmIHdlIGFy
ZSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUgc3RyaW5nIGxvb3Ag
YmFjayB0byB0aGUgaG9zdCBuYW1lIGxvb3AuCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyIn
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgIEFTU0VS
VChjID09ICdcXCcpOworICAgICAgICAgICAgICAgIGlmICghcmVtYWluaW5nLmxlbmd0aCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxv
Y2F0aW9uICs9IDE7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCAtPSAxOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhcHBseUhvc3RO
YW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJpbmdSYW5nZUFwcGxp
ZXJGdW5jdGlvbiBmLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKK3sKKyAgICAv
LyBGaW5kIGhvc3RuYW1lcy4gVG9vIGJhZCB3ZSBjYW4ndCB1c2UgYW55IHJlYWwgVVJMLXBhcnNp
bmcgY29kZSB0byBkbyB0aGlzLAorICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGRvIGl0IGJlZm9yZSBk
b2luZyBhbGwgdGhlICUtZXNjYXBpbmcsIGFuZCB0aGlzIGlzIHRoZSBvbmx5CisgICAgLy8gY29k
ZSB3ZSBoYXZlIHRoYXQgcGFyc2VzIG1haWx0byBVUkxzIGFueXdheS4KKyAgICAKKyAgICAvLyBN
YXliZSB3ZSBzaG91bGQgaW1wbGVtZW50IHRoaXMgdXNpbmcgYSBjaGFyYWN0ZXIgYnVmZmVyIGlu
c3RlYWQ/CisgICAgCisgICAgaWYgKHByb3RvY29sSXMoc3RyaW5nLCAibWFpbHRvIikpIHsKKyAg
ICAgICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoc3RyaW5nLCBmLCBh
cnJheSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gRmluZCB0aGUgaG9z
dCBuYW1lIGluIGEgaGllcmFyY2hpY2FsIFVSTC4KKyAgICAvLyBJdCBjb21lcyBhZnRlciBhICI6
Ly8iIHNlcXVlbmNlLCB3aXRoIHNjaGVtZSBjaGFyYWN0ZXJzIHByZWNlZGluZy4KKyAgICAvLyBJ
ZiBlbmRzIHdpdGggdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiLCAiLyIsIG9yIGEgIj8i
LgorICAgIC8vIElmIHRoZXJlIGlzIGEgIkAiIGNoYXJhY3RlciwgdGhlIGhvc3QgcGFydCBpcyBq
dXN0IHRoZSBwYXJ0IGFmdGVyIHRoZSAiQCIuCisgICAgTlNSYW5nZSBzZXBhcmF0b3JSYW5nZSA9
IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjovLyJdOworICAgIGlmIChzZXBhcmF0b3JSYW5nZS5s
b2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgLy8gQ2hl
Y2sgdGhhdCBhbGwgY2hhcmFjdGVycyBiZWZvcmUgdGhlIDovLyBhcmUgdmFsaWQgc2NoZW1lIGNo
YXJhY3RlcnMuCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3Rl
clNldD4+IG5vblNjaGVtZUNoYXJhY3RlcnMgPSBbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNl
dFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSstLiJdIGludmVydGVkU2V0XTsKKyAgICBp
ZiAoW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpub25TY2hlbWVDaGFyYWN0ZXJzLmdl
dCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBzZXBhcmF0b3JSYW5nZS5s
b2NhdGlvbildLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07CisgICAgCisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3RUZXJt
aW5hdG9ycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3Ry
aW5nOkAiOi8/IyJdOworICAgIAorICAgIC8vIFN0YXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuCisg
ICAgdW5zaWduZWQgYXV0aG9yaXR5U3RhcnQgPSBOU01heFJhbmdlKHNlcGFyYXRvclJhbmdlKTsK
KyAgICAKKyAgICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICBOU1JhbmdlIGhv
c3ROYW1lVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdFRl
cm1pbmF0b3JzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZShhdXRob3Jp
dHlTdGFydCwgc3RyaW5nTGVuZ3RoIC0gYXV0aG9yaXR5U3RhcnQpXTsKKyAgICB1bnNpZ25lZCBo
b3N0TmFtZUVuZCA9IGhvc3ROYW1lVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8g
c3RyaW5nTGVuZ3RoIDogaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uOworICAgIAorICAgIC8v
IEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KKyAgICBOU1JhbmdlIHVz
ZXJJbmZvVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIkAiIG9wdGlvbnM6MCBy
YW5nZTpOU01ha2VSYW5nZShhdXRob3JpdHlTdGFydCwgaG9zdE5hbWVFbmQgLSBhdXRob3JpdHlT
dGFydCldOworICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQgPSB1c2VySW5mb1Rlcm1pbmF0b3Iu
bG9jYXRpb24gPT0gTlNOb3RGb3VuZCA/IGF1dGhvcml0eVN0YXJ0IDogTlNNYXhSYW5nZSh1c2Vy
SW5mb1Rlcm1pbmF0b3IpOworICAgIAorICAgIHJldHVybiBmKHN0cmluZywgTlNNYWtlUmFuZ2Uo
aG9zdE5hbWVTdGFydCwgaG9zdE5hbWVFbmQgLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkpOworfQor
CitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBtYXBIb3N0TmFtZXMoTlNTdHJpbmcgKnN0cmlu
ZywgQk9PTCBlbmNvZGUpCit7CisgICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXpl
IGZvciB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3Qg
bmVlZCBtYXBwaW5nLgorICAgIAorICAgIGlmIChlbmNvZGUgJiYgW3N0cmluZyBjYW5CZUNvbnZl
cnRlZFRvRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXSkKKyAgICAgICAgcmV0dXJuIHN0
cmluZzsKKyAgICAKKyAgICAvLyBNYWtlIGEgbGlzdCBvZiByYW5nZXMgdGhhdCBhY3R1YWxseSBu
ZWVkIG1hcHBpbmcuCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBob3N0TmFtZVJhbmdl
czsKKyAgICBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmID0gZW5jb2RlID8gY29sbGVjdFJh
bmdlc1RoYXROZWVkRW5jb2RpbmcgOiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWREZWNvZGluZzsKKyAg
ICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhzdHJpbmcsIGYsIGhvc3ROYW1lUmFu
Z2VzKTsKKyAgICBpZiAoIWhvc3ROYW1lUmFuZ2VzKQorICAgICAgICByZXR1cm4gc3RyaW5nOwor
CisgICAgaWYgKCFbaG9zdE5hbWVSYW5nZXMgY291bnRdKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIAorICAgIC8vIERvIHRoZSBtYXBwaW5nLgorICAgIGF1dG8gbXV0YWJsZUNvcHkgPSBhZG9w
dE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsKKyAgICB1bnNpZ25lZCBpID0gW2hvc3ROYW1lUmFu
Z2VzIGNvdW50XTsKKyAgICB3aGlsZSAoaS0tKSB7CisgICAgICAgIE5TUmFuZ2UgaG9zdE5hbWVS
YW5nZSA9IFtbaG9zdE5hbWVSYW5nZXMgb2JqZWN0QXRJbmRleDppXSByYW5nZVZhbHVlXTsKKyAg
ICAgICAgTlNTdHJpbmcgKm1hcHBlZEhvc3ROYW1lID0gZW5jb2RlID8gZW5jb2RlSG9zdE5hbWVX
aXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKSA6IGRlY29kZUhvc3ROYW1lV2l0aFJhbmdl
KHN0cmluZywgaG9zdE5hbWVSYW5nZSk7CisgICAgICAgIFttdXRhYmxlQ29weSByZXBsYWNlQ2hh
cmFjdGVyc0luUmFuZ2U6aG9zdE5hbWVSYW5nZSB3aXRoU3RyaW5nOm1hcHBlZEhvc3ROYW1lXTsK
KyAgICB9CisgICAgcmV0dXJuIG11dGFibGVDb3B5OworfQorCitzdGF0aWMgUmV0YWluUHRyPE5T
U3RyaW5nPiBzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShOU1N0cmluZyAqc3RyaW5nKQorewor
ICAgIGF1dG8gdHJpbW1lZCA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOworICAgIENG
U3RyaW5nVHJpbVdoaXRlc3BhY2UoKF9fYnJpZGdlIENGTXV0YWJsZVN0cmluZ1JlZil0cmltbWVk
LmdldCgpKTsKKyAgICByZXR1cm4gdHJpbW1lZDsKK30KKworTlNVUkwgKlVSTEJ5VHJ1bmNhdGlu
Z09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5
cGUgY29tcG9uZW50KQoreworICAgIGlmICghVVJMKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IAorICAgIENGUmFuZ2UgZnJhZ1JnID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9f
YnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50LCBudWxscHRyKTsKKyAgICBpZiAoZnJhZ1Jn
LmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICByZXR1cm4gVVJMOworCisgICAgVmVj
dG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gdXJsQnl0ZXMoVVJMX0JZVEVTX0JV
RkZFUl9MRU5HVEgpOworICAgIENGSW5kZXggbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2Jy
aWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgdXJsQnl0ZXMuc2l6ZSgpKTsKKyAg
ICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICB1cmxCeXRlcy5n
cm93KG51bUJ5dGVzKTsKKyAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCB1cmxCeXRlcy5kYXRhKCksIG51bUJ5dGVzKTsKKyAgICB9CisKKyAgICBDRlVSTFJlZiBy
ZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZy
YWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxw
dHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2Rp
bmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAgICAKKyAgICByZXR1cm4gcmVzdWx0ID8gQ0ZC
cmlkZ2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKK30KKworc3RhdGljIE5TVVJMICpVUkxCeVJl
bW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKK3sKKyAgICByZXR1cm4gVVJMQnlU
cnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KFVSTCwga0NGVVJMQ29tcG9uZW50
UmVzb3VyY2VTcGVjaWZpZXIpOworfQorCitOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRh
LCBOU1VSTCAqYmFzZVVSTCkKK3sKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgCisgICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsKKyAgICBzaXplX3QgbGVuZ3RoID0gW2Rh
dGEgbGVuZ3RoXTsKKyAgICBpZiAobGVuZ3RoID4gMCkgeworICAgICAgICAvLyB3b3JrIGFyb3Vu
ZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKC4uLCBU
UlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21wb25lbnRzLgorICAgICAgICBiYXNlVVJM
ID0gVVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKGJhc2VVUkwpOworICAgICAgICAKKyAg
ICAgICAgY29uc3QgVUludDggKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDgqPihbZGF0
YSBieXRlc10pOworICAgICAgICAKKyAgICAgICAgLy8gQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdp
dGhCeXRlcyB3b3VsZCBjb21wbGFpbiB0byBjb25zb2xlIGlmIHdlIHBhc3NlZCBhIHBhdGggdG8g
aXQuCisgICAgICAgIGlmIChieXRlc1swXSA9PSAnLycgJiYgIWJhc2VVUkwpCisgICAgICAgICAg
ICByZXR1cm4gbmlsOworICAgICAgICAKKyAgICAgICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhl
cmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hl
biByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAgICAgLy8gKGUuZyBjYWxscyB0byBOU1VS
TCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVn
YWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAorICAgICAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBt
YWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIHNo
aWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCisgICAgICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGlu
IDEgaW4gdGhvc2UgY2FzZXMuCisgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENG
VVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Cisg
ICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2luZ1JlbGVh
c2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBieXRlcywgbGVuZ3Ro
LCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkws
IFlFUykpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAIiJdOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KK3N0YXRpYyBOU0RhdGEgKmRhdGFXaXRo
VXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNEYXRhICp1c2VyVHlw
ZWREYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107
CisgICAgQVNTRVJUKHVzZXJUeXBlZERhdGEpOworICAgIAorICAgIGNvbnN0IFVJbnQ4KiBpbkJ5
dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDggKj4oW3VzZXJUeXBlZERhdGEgYnl0ZXNdKTsK
KyAgICBpbnQgaW5MZW5ndGggPSBbdXNlclR5cGVkRGF0YSBsZW5ndGhdOworICAgIGlmICghaW5M
ZW5ndGgpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgY2hhciogb3V0Qnl0ZXMgPSBz
dGF0aWNfY2FzdDxjaGFyICo+KG1hbGxvYyhpbkxlbmd0aCAqIDMpKTsgLy8gbGFyZ2UgZW5vdWdo
IHRvICUtZXNjYXBlIGV2ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIqIHAgPSBvdXRCeXRlczsKKyAg
ICBpbnQgb3V0TGVuZ3RoID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGluTGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgVUludDggYyA9IGluQnl0ZXNbaV07CisgICAgICAgIGlmIChjIDw9IDB4
MjAgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICAqcCsrID0gJyUnOworICAgICAgICAgICAg
KnArKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgKnArKyA9
IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgb3V0TGVuZ3RoICs9
IDM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAg
IG91dExlbmd0aCsrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXNOb0NvcHk6b3V0Qnl0ZXMgbGVuZ3RoOm91dExlbmd0aF07IC8vIGFkb3B0
cyBvdXRCeXRlcworfQorCitOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAq
c3RyaW5nLCBOU1VSTCAqbnNVUkwpCit7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICBhdXRvIG1hcHBlZFN0cmluZyA9IG1hcEhvc3ROYW1lcyhzdHJpbmdCeVRy
aW1taW5nV2hpdGVzcGFjZShzdHJpbmcpLmdldCgpLCBZRVMpOworICAgIGlmICghbWFwcGVkU3Ry
aW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gTGV0J3MgY2hlY2sgd2hldGhlciB0
aGUgVVJMIGlzIGJvZ3VzLgorICAgIFVSTCB1cmwgeyBVUkwgeyBuc1VSTCB9LCBtYXBwZWRTdHJp
bmcuZ2V0KCkgfTsKKyAgICBpZiAoIXVybC5jcmVhdGVDRlVSTCgpKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODYwNTcKKyAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgdXJsLmNyZWF0ZUNG
VVJMIGluc3RlYWQgb2YgdXNpbmcgZGlyZWN0bHkgQ0ZVUkwgcGFyc2luZyByb3V0aW5lcy4KKyAg
ICBOU0RhdGEgKmRhdGEgPSBkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhtYXBwZWRTdHJpbmcuZ2V0
KCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiIl07CisKKyAgICByZXR1cm4gVVJMV2l0aERhdGEoZGF0YSwgbnNVUkwpOworfQorCitOU1VS
TCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKnN0cmluZywgTlNV
UkwgKlVSTCkKK3sKKyAgICBpZiAoIXN0cmluZykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IE5TVVJMICpyZXN1bHQgPSBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZywgVVJMKTsKKyAg
ICBpZiAoIXJlc3VsdCkgeworICAgICAgICBOU0RhdGEgKnJlc3VsdERhdGEgPSBkYXRhV2l0aFVz
ZXJUeXBlZFN0cmluZyhzdHJpbmcpOworICAgICAgICBpZiAoIXJlc3VsdERhdGEpCisgICAgICAg
ICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKKyAgICAgICAgcmVzdWx0ID0g
VVJMV2l0aERhdGEocmVzdWx0RGF0YSwgVVJMKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitzdGF0aWMgQk9PTCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoTlNVUkwg
KlVSTCkKK3sKKyAgICBDRlJhbmdlIHJhbmdlV2l0aFNlcGFyYXRvcnM7CisgICAgQ0ZVUkxHZXRC
eXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwga0NGVVJMQ29tcG9u
ZW50UXVlcnksICZyYW5nZVdpdGhTZXBhcmF0b3JzKTsKKyAgICBpZiAocmFuZ2VXaXRoU2VwYXJh
dG9ycy5sb2NhdGlvbiAhPSBrQ0ZOb3RGb3VuZCAmJiByYW5nZVdpdGhTZXBhcmF0b3JzLmxlbmd0
aCA9PSAxKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgcmV0dXJuIE5POworfQorCitOU0Rh
dGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlw
ZSBjb21wb25lbnRUeXBlKQoreworICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9M
RU5HVEg+IGFsbEJ5dGVzQnVmZmVyKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRklu
ZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBh
bGxCeXRlc0J1ZmZlci5kYXRhKCksIGFsbEJ5dGVzQnVmZmVyLnNpemUoKSk7CisgICAgaWYgKGJ5
dGVzRmlsbGVkID09IC0xKSB7CisgICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZV
UkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAgICAgICAg
YWxsQnl0ZXNCdWZmZXIuZ3JvdyhieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBieXRlc0ZpbGxl
ZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYWxsQnl0ZXNCdWZmZXIu
ZGF0YSgpLCBieXRlc1RvQWxsb2NhdGUpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBDRlVSTENv
bXBvbmVudFR5cGUgY29tcGxldGVVUkwgPSAoQ0ZVUkxDb21wb25lbnRUeXBlKS0xOworICAgIENG
UmFuZ2UgcmFuZ2U7CisgICAgaWYgKGNvbXBvbmVudFR5cGUgIT0gY29tcGxldGVVUkwpIHsKKyAg
ICAgICAgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCBjb21wb25lbnRUeXBlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJhbmdlLmxv
Y2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9IGVs
c2UgeworICAgICAgICByYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgICAgIHJhbmdlLmxlbmd0aCA9
IGJ5dGVzRmlsbGVkOworICAgIH0KKyAgICAKKyAgICBOU0RhdGEgKmNvbXBvbmVudERhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6YWxsQnl0ZXNCdWZmZXIuZGF0YSgpICsgcmFuZ2UubG9jYXRp
b24gbGVuZ3RoOnJhbmdlLmxlbmd0aF07IAorICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbY29tcG9uZW50RGF0
YSBieXRlc10pOworICAgIE5TTXV0YWJsZURhdGEgKnJlc3VsdERhdGEgPSBbTlNNdXRhYmxlRGF0
YSBkYXRhXTsKKyAgICAvLyBOT1RFOiBhZGQgbGVhZGluZyAnPycgdG8gcXVlcnkgc3RyaW5ncyBu
b24temVybyBsZW5ndGggcXVlcnkgc3RyaW5ncy4KKyAgICAvLyBOT1RFOiByZXRhaW4gcXVlc3Rp
b24tbWFyayBvbmx5IHF1ZXJ5IHN0cmluZ3MuCisgICAgaWYgKGNvbXBvbmVudFR5cGUgPT0ga0NG
VVJMQ29tcG9uZW50UXVlcnkpIHsKKyAgICAgICAgaWYgKHJhbmdlLmxlbmd0aCA+IDAgfHwgaGFz
UXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKFVSTCkpCisgICAgICAgICAgICBbcmVzdWx0RGF0
YSBhcHBlbmRCeXRlczoiPyIgbGVuZ3RoOjFdOyAgICAKKyAgICB9CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCByYW5nZS5sZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBi
eXRlc1tpXTsKKyAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKKyAgICAgICAg
ICAgIGNoYXIgZXNjYXBlZFszXTsKKyAgICAgICAgICAgIGVzY2FwZWRbMF0gPSAnJSc7CisgICAg
ICAgICAgICBlc2NhcGVkWzFdID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7CisgICAg
ICAgICAgICBlc2NhcGVkWzJdID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7CisgICAg
ICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczplc2NhcGVkIGxlbmd0aDozXTsgICAgCisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGFyIGJbMV07CisgICAgICAgICAgICBiWzBd
ID0gYzsKKyAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmIgbGVuZ3RoOjFdOyAg
ICAKKyAgICAgICAgfSAgICAgICAgICAgICAgIAorICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVz
dWx0RGF0YTsKK30KKworc3RhdGljIE5TVVJMICpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vi
c2VxdWVudENoYXJhY3RlcihOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50
KQoreworICAgIENGUmFuZ2UgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIDApOworICAgIGlmIChyYW5nZS5sb2Nh
dGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICAKKyAgICAvLyBS
ZW1vdmUgb25lIHN1YnNlcXVlbnQgY2hhcmFjdGVyLgorICAgIHJhbmdlLmxlbmd0aCsrOworCisg
ICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYnVmZmVyKFVSTF9CWVRF
U19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAg
ICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICBidWZmZXIuZ3Jv
dyhudW1CeXRlcyk7CisgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVS
TCwgYnVmZmVyLmRhdGEoKSwgbnVtQnl0ZXMpOworICAgIH0KKyAgICBVSW50OCogdXJsQnl0ZXMg
PSBidWZmZXIuZGF0YSgpOworICAgICAgICAKKyAgICBpZiAobnVtQnl0ZXMgPCByYW5nZS5sb2Nh
dGlvbikKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICBpZiAobnVtQnl0ZXMgPCByYW5nZS5sb2Nh
dGlvbiArIHJhbmdlLmxlbmd0aCkKKyAgICAgICAgcmFuZ2UubGVuZ3RoID0gbnVtQnl0ZXMgLSBy
YW5nZS5sb2NhdGlvbjsKKyAgICAgICAgCisgICAgbWVtbW92ZSh1cmxCeXRlcyArIHJhbmdlLmxv
Y2F0aW9uLCB1cmxCeXRlcyArIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoLCBudW1CeXRl
cyAtIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKTsKKyAgICAKKyAgICBDRlVSTFJlZiBy
ZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMg
LSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIs
IHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09M
YXRpbjEsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIAorICAgIHJldHVybiByZXN1bHQgPyBD
RkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworfQorCitOU1VSTCAqVVJMQnlSZW1vdmlu
Z1VzZXJJbmZvKE5TVVJMICpVUkwpCit7CisgICAgcmV0dXJuIFVSTEJ5UmVtb3ZpbmdDb21wb25l
bnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKFVSTCwga0NGVVJMQ29tcG9uZW50VXNlckluZm8pOwor
fQorCitOU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqVVJMKQoreworICAgIFVJbnQ4ICpi
dWZmZXIgPSAoVUludDggKiltYWxsb2MoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOworICAgIENG
SW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkws
IGJ1ZmZlciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOworICAgIGlmIChieXRlc0ZpbGxlZCA9
PSAtMSkgeworICAgICAgICBDRkluZGV4IGJ5dGVzVG9BbGxvY2F0ZSA9IENGVVJMR2V0Qnl0ZXMo
KF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7CisgICAgICAgIGJ1ZmZlciA9IChV
SW50OCAqKXJlYWxsb2MoYnVmZmVyLCBieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBieXRlc0Zp
bGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLCBieXRl
c1RvQWxsb2NhdGUpOworICAgICAgICBBU1NFUlQoYnl0ZXNGaWxsZWQgPT0gYnl0ZXNUb0FsbG9j
YXRlKTsKKyAgICB9CisgICAgCisgICAgLy8gYnVmZmVyIGlzIGFkb3B0ZWQgYnkgdGhlIE5TRGF0
YQorICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpidWZmZXIg
bGVuZ3RoOmJ5dGVzRmlsbGVkIGZyZWVXaGVuRG9uZTpZRVNdOworICAgIAorICAgIE5TVVJMICpi
YXNlVVJMID0gKF9fYnJpZGdlIE5TVVJMICopQ0ZVUkxHZXRCYXNlVVJMKChfX2JyaWRnZSBDRlVS
TFJlZilVUkwpOworICAgIGlmIChiYXNlVVJMKQorICAgICAgICByZXR1cm4gb3JpZ2luYWxVUkxE
YXRhKFVSTFdpdGhEYXRhKGRhdGEsIGJhc2VVUkwpKTsKKyAgICByZXR1cm4gZGF0YTsKK30KKwor
c3RhdGljIENGU3RyaW5nUmVmIGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVy
cyhDRlN0cmluZ1JlZiBzdHJpbmcpCit7CisgICAgQ0ZJbmRleCBsZW5ndGggPSBDRlN0cmluZ0dl
dExlbmd0aChzdHJpbmcpOworICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5H
VEg+IHNvdXJjZUJ1ZmZlcihsZW5ndGgpOworICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVycyhzdHJp
bmcsIENGUmFuZ2VNYWtlKDAsIGxlbmd0aCksIHNvdXJjZUJ1ZmZlci5kYXRhKCkpOworICAgIAor
ICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IG91dEJ1ZmZlcjsKKyAg
ICAKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50OworICAgIENG
SW5kZXggaSA9IDA7CisgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgVUNoYXIzMiBj
OworICAgICAgICBVMTZfTkVYVChzb3VyY2VCdWZmZXIsIGksIGxlbmd0aCwgYykKKyAgICAgICAg
CisgICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykp
IHsKKyAgICAgICAgICAgIHVpbnQ4X3QgdXRmOEJ1ZmZlcls0XTsKKyAgICAgICAgICAgIENGSW5k
ZXggb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIFVCb29sIGZhaWx1cmUgPSBmYWxzZTsKKyAgICAg
ICAgICAgIFU4X0FQUEVORCh1dGY4QnVmZmVyLCBvZmZzZXQsIDQsIGMsIGZhaWx1cmUpCisgICAg
ICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3Ig
KENGSW5kZXggaiA9IDA7IGogPCBvZmZzZXQ7ICsraikgeworICAgICAgICAgICAgICAgIG91dEJ1
ZmZlci5hcHBlbmQoJyUnKTsKKyAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKHVwcGVy
TmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZmZXJbal0pKTsKKyAgICAgICAgICAgICAgICBv
dXRCdWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZmZXJbal0p
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFVDaGFyIHV0
ZjE2QnVmZmVyWzJdOworICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOworICAgICAgICAg
ICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOworICAgICAgICAgICAgVTE2X0FQUEVORCh1dGYxNkJ1
ZmZlciwgb2Zmc2V0LCAyLCBjLCBmYWlsdXJlKQorICAgICAgICAgICAgQVNTRVJUKCFmYWlsdXJl
KTsKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8IG9mZnNldDsgKytqKQorICAg
ICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXRmMTZCdWZmZXJbal0pOworICAgICAgICB9
CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgb3V0QnVmZmVyLmRhdGEoKSwg
b3V0QnVmZmVyLnNpemUoKSk7Cit9CisKK05TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VS
TCAqVVJMKQoreworICAgIE5TRGF0YSAqZGF0YSA9IG9yaWdpbmFsVVJMRGF0YShVUkwpOworICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJlZm9yZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihbZGF0YSBieXRlc10pOworICAgIGludCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOwor
ICAgIAorICAgIGJvb2wgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSBmYWxzZTsKKyAgICAKKyAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gYmVmb3JlOworICAgIGludCBidWZmZXJMZW5ndGgg
PSAobGVuZ3RoICogMykgKyAxOworICAgIFZlY3RvcjxjaGFyLCBVUkxfQllURVNfQlVGRkVSX0xF
TkdUSD4gYWZ0ZXIoYnVmZmVyTGVuZ3RoKTsgLy8gbGFyZ2UgZW5vdWdoIHRvICUtZXNjYXBlIGV2
ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIgKnEgPSBhZnRlci5kYXRhKCk7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBwW2ld
OworICAgICAgICAvLyB1bmVzY2FwZSBlc2NhcGUgc2VxdWVuY2VzIHRoYXQgaW5kaWNhdGUgYnl0
ZXMgZ3JlYXRlciB0aGFuIDB4N2YKKyAgICAgICAgaWYgKGMgPT0gJyUnICYmIChpICsgMSA8IGxl
bmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAmJiBpICsgMiA8IGxlbmd0aCAmJiBp
c0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7CisgICAgICAgICAgICBhdXRvIHUgPSB0b0FTQ0lJ
SGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKKyAgICAgICAgICAgIGlmICh1ID4gMHg3Zikg
eworICAgICAgICAgICAgICAgIC8vIHVuZXNjYXBlCisgICAgICAgICAgICAgICAgKnErKyA9IHU7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGRvIG5vdCB1bmVzY2Fw
ZQorICAgICAgICAgICAgICAgICpxKysgPSBwW2ldOworICAgICAgICAgICAgICAgICpxKysgPSBw
W2kgKyAxXTsKKyAgICAgICAgICAgICAgICAqcSsrID0gcFtpICsgMl07CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcSsr
ID0gYzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBh
biBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgorICAgICAgICAgICAgaWYgKGMg
PT0gJy0nICYmIGkgPj0gMyAmJiAhbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgJiYgKHFbLTRdIHwg
MHgyMCkgPT0gJ3gnICYmIChxWy0zXSB8IDB4MjApID09ICduJyAmJiBxWy0yXSA9PSAnLScpCisg
ICAgICAgICAgICAgICAgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSB0cnVlOworICAgICAgICB9
CisgICAgfQorICAgICpxID0gJ1wwJzsKKyAgICAKKyAgICAvLyBDaGVjayBzdHJpbmcgdG8gc2Vl
IGlmIGl0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gZGlzcGxheSB1c2luZyBVVEYtOCAgCisgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiByZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6
YWZ0ZXIuZGF0YSgpXTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAvLyBDb3VsZCBub3Qg
Y29udmVydCB0byBVVEYtOC4KKyAgICAgICAgLy8gQ29udmVydCBjaGFyYWN0ZXJzIGdyZWF0ZXIg
dGhhbiAweDdmIHRvIGVzY2FwZSBzZXF1ZW5jZXMuCisgICAgICAgIC8vIFNoaWZ0IGN1cnJlbnQg
c3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgorICAgICAgICAvLyB0aGVuIHdlIHdpbGwg
Y29weSBiYWNrIGJ5dGVzIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIAorICAgICAgICAvLyBh
cyB3ZSBjb252ZXJ0LgorICAgICAgICBpbnQgYWZ0ZXJsZW5ndGggPSBxIC0gYWZ0ZXIuZGF0YSgp
OworICAgICAgICBjaGFyICpwID0gYWZ0ZXIuZGF0YSgpICsgYnVmZmVyTGVuZ3RoIC0gYWZ0ZXJs
ZW5ndGggLSAxOworICAgICAgICBtZW1tb3ZlKHAsIGFmdGVyLmRhdGEoKSwgYWZ0ZXJsZW5ndGgg
KyAxKTsgLy8gY29waWVzIHRyYWlsaW5nICdcMCcKKyAgICAgICAgY2hhciAqcSA9IGFmdGVyLmRh
dGEoKTsKKyAgICAgICAgd2hpbGUgKCpwKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMg
PSAqcDsKKyAgICAgICAgICAgIGlmIChjID4gMHg3ZikgeworICAgICAgICAgICAgICAgICpxKysg
PSAnJSc7CisgICAgICAgICAgICAgICAgKnErKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0
KGMpOworICAgICAgICAgICAgICAgICpxKysgPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChj
KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICpxKysgPSAqcDsKKyAgICAg
ICAgICAgIHArKzsKKyAgICAgICAgfQorICAgICAgICAqcSA9ICdcMCc7CisgICAgICAgIHJlc3Vs
dCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOworICAgIH0K
KyAgICAKKyAgICBpZiAobWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcpIHsKKyAgICAgICAgLy8gRklY
TUU6IElzIGl0IGdvb2QgdG8gaWdub3JlIHRoZSBmYWlsdXJlIG9mIG1hcEhvc3ROYW1lcyBhbmQg
a2VlcCByZXN1bHQgaW50YWN0PworICAgICAgICBhdXRvIG1hcHBlZFJlc3VsdCA9IG1hcEhvc3RO
YW1lcyhyZXN1bHQuZ2V0KCksIE5PKTsKKyAgICAgICAgaWYgKG1hcHBlZFJlc3VsdCkKKyAgICAg
ICAgICAgIHJlc3VsdCA9IG1hcHBlZFJlc3VsdDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBbcmVz
dWx0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOworICAgIHJldHVybiBD
RkJyaWRnaW5nUmVsZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMo
KF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSkpOworfQorCitCT09MIGlzVXNlclZp
c2libGVVUkwoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIHZhbGlkID0gWUVTOworICAg
IC8vIGdldCBidWZmZXIKKyAgICAKKyAgICBjaGFyIHN0YXRpY19idWZmZXJbMTAyNF07CisgICAg
Y29uc3QgY2hhciAqcDsKKyAgICBCT09MIHN1Y2Nlc3MgPSBDRlN0cmluZ0dldENTdHJpbmcoKF9f
YnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZywgc3RhdGljX2J1ZmZlciwgMTAyMywga0NGU3RyaW5n
RW5jb2RpbmdVVEY4KTsKKyAgICBwID0gc3VjY2VzcyA/IHN0YXRpY19idWZmZXIgOiBbc3RyaW5n
IFVURjhTdHJpbmddOworICAgIAorICAgIGludCBsZW5ndGggPSBzdHJsZW4ocCk7CisgICAgCisg
ICAgLy8gY2hlY2sgZm9yIGNoYXJhY3RlcnMgPD0gMHgyMCBvciA+PTB4N2YsICUtZXNjYXBlIHNl
cXVlbmNlcyBvZiAlN2YsIGFuZCB4bi0tLCB0aGVzZQorICAgIC8vIGFyZSB0aGUgdGhpbmdzIHRo
YXQgd2lsbCBsZWFkIF93ZWJfdXNlclZpc2libGVTdHJpbmcgdG8gYWN0dWFsbHkgY2hhbmdlIHRo
aW5ncy4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIHVu
c2lnbmVkIGNoYXIgYyA9IHBbaV07CisgICAgICAgIC8vIGVzY2FwZSBjb250cm9sIGNoYXJhY3Rl
cnMsIHNwYWNlLCBhbmQgZGVsZXRlCisgICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA9PSAweDdm
KSB7CisgICAgICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0gZWxzZSBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdp
dChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAy
XSkpIHsKKyAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAxXSwgcFtp
ICsgMl0pOworICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7CisgICAgICAgICAgICAgICAgdmFs
aWQgPSBOTzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGkgKz0gMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciAi
eG4tLSIgaW4gYW4gZWZmaWNpZW50LCBub24tY2FzZS1zZW5zaXRpdmUsIHdheS4KKyAgICAgICAg
ICAgIGlmIChjID09ICctJyAmJiBpID49IDMgJiYgKHBbaSAtIDNdIHwgMHgyMCkgPT0gJ3gnICYm
IChwW2kgLSAyXSB8IDB4MjApID09ICduJyAmJiBwW2kgLSAxXSA9PSAnLScpIHsKKyAgICAgICAg
ICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB2YWxpZDsKK30KKworTlNSYW5n
ZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNSYW5nZSBjb2xv
biA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjoiXTsKKyAgICBpZiAoY29sb24ubG9jYXRpb24g
IT0gTlNOb3RGb3VuZCAmJiBjb2xvbi5sb2NhdGlvbiA+IDApIHsKKyAgICAgICAgTlNSYW5nZSBz
Y2hlbWUgPSB7MCwgY29sb24ubG9jYXRpb259OworICAgICAgICAvKgorICAgICAgICAgVGhpcyBz
dHVmZiBpcyB2ZXJ5IGV4cGVuc2l2ZS4gIDEwLTE1IG1zZWMgb24gYSAyeDEuMkdIei4gIElmIG5v
dCBjYWNoZWQgaXQgc3dhbXBzCisgICAgICAgICBldmVyeXRoaW5nIGVsc2Ugd2hlbiBhZGRpbmcg
aXRlbXMgdG8gdGhlIGF1dG9jb21wbGV0ZSBEQi4gIE1ha2VzIG1lIHdvbmRlciBpZiB3ZQorICAg
ICAgICAgZXZlbiBuZWVkIHRvIGVuZm9yY2UgdGhlIGNoYXJhY3RlciBzZXQgaGVyZS4KKyAgICAg
ICAgICovCisgICAgICAgIE5TU3RyaW5nICphY2NlcHRhYmxlQ2hhcmFjdGVycyA9IEAiQUJDREVG
R0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkr
Li0iOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVy
U2V0Pj4gSW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldChbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3Rl
clNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGludmVydGVk
U2V0XSk7CisgICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0
ZXJGcm9tU2V0OkludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQuZ2V0KCkuZ2V0KCkgb3B0aW9uczow
IHJhbmdlOnNjaGVtZV07CisgICAgICAgIGlmIChpbGxlZ2Fscy5sb2NhdGlvbiA9PSBOU05vdEZv
dW5kKQorICAgICAgICAgICAgcmV0dXJuIHNjaGVtZTsKKyAgICB9CisgICAgcmV0dXJuIE5TTWFr
ZVJhbmdlKE5TTm90Rm91bmQsIDApOworfQorCitCT09MIGxvb2tzTGlrZUFic29sdXRlVVJMKE5T
U3RyaW5nICpzdHJpbmcpCit7CisgICAgLy8gVHJpbSB3aGl0ZXNwYWNlIGJlY2F1c2UgX3dlYl9V
UkxXaXRoU3RyaW5nIGFsbG93cyB3aGl0ZXNwYWNlLgorICAgIHJldHVybiByYW5nZU9mVVJMU2No
ZW1lKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCkpLmxvY2F0aW9uICE9
IE5TTm90Rm91bmQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvVVJM
Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ1MWZhZGJiNjhkNjQ3NmQwY2E0NjA2ODRhOTcyYjhjNTM1
MGRhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1t
CkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDx3dGYvVVJMLmg+CisK
KyNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCisjaW1wb3J0ICJOU1VSTEV4dHJhcy5oIgorI2ltcG9y
dCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMUGFyc2VyLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK0BpbnRlcmZhY2UgTlNTdHJpbmcgKFdURk5T
VVJMRXh0cmFzKQorLSAoQk9PTClfd2ViX2xvb2tzTGlrZUlQQWRkcmVzczsKK0BlbmQKKworbmFt
ZXNwYWNlIFdURiB7CisKK1VSTDo6VVJMKE5TVVJMICp1cmwpCit7CisgICAgaWYgKCF1cmwpIHsK
KyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
RklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KKyAgICBDU3RyaW5n
IHVybEJ5dGVzOworICAgIFdURjo6Z2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXVybCwg
dXJsQnl0ZXMpOworICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsKKyAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKworVVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29u
c3QKK3sKKyAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlkZ2VkIENGVVJMIGJlY2F1c2Ug
Y3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdvdWxkIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2lu
YWwgc3RyaW5nLgorICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxpdHkgd2hlbiByb3VuZC10cmlwcGlu
ZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgorICAgIHJldHVybiBjcmVhdGVDRlVSTCgpLmJyaWRnaW5n
QXV0b3JlbGVhc2UoKTsKK30KKworUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJM
KCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBi
cmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9y
dGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KKyAgICAgICAgcmV0dXJuIChfX2JyaWRn
ZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl0pLmdl
dCgpOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7CisKKyAgICAvLyBG
YXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMgOC1iaXQgdG8gYXZvaWQgY29weWluZyBpbnRv
IGEgdGVtcG9yYXJ5IGJ1ZmZlci4KKyAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpKSkK
KyAgICAgICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVuZ3Ro
KCkpOworICAgIGVsc2UgeworICAgICAgICAvLyBTbG93ZXIgcGF0aC4KKyAgICAgICAgV1RGOjpV
UkxDaGFyQnVmZmVyIGJ1ZmZlcjsKKyAgICAgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7CisgICAg
ICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CisgICAgfQorCisgICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAm
JiAhV1RGOjppc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjZlVSTDsKK30KKworYm9vbCBVUkw6Omhvc3RJ
c0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCit7CisgICAgcmV0dXJuIFtob3N0LmNyZWF0ZU5T
U3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSBfd2ViX2xvb2tzTGlrZUlQQWRkcmVzc107Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaCBi
L1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjRmYjM0
Zjg2ZjI0YTQ2MjFlMGY5MDY3MDY3NzVmOTQ4MTg1OTk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIFVTRShTT1VQKQorCisjaW5jbHVk
ZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cFVSSSwgc291cF91
cmlfZnJlZSkKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBDb29raWUsIHNvdXBfY29va2ll
X2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwTWVzc2FnZUhlYWRlcnMsIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQnVmZmVy
LCBzb3VwX2J1ZmZlcl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVT
RShTT1VQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9VUkxTb3VwLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkYmM3ZTE3YjgzODkx
OWM1MGNmZmZiZDZiNDVjZjhjYjNiODlhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL2dsaWIvVVJMU291cC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoU09VUCkKKworI2luY2x1ZGUg
PGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
UGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworVVJMOjpVUkwoU291cFVSSSogc291cFVSSSkKK3sKKyAgICBpZiAoIXNvdXBVUkkpIHsK
KyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxT
RSkpOworICAgIFVSTFBhcnNlciBwYXJzZXIoU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0
KCkpKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKworICAgIGlmICghaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTU2LiBsaWJzb3VwCisgICAgLy8gZG9lcyBub3Qg
YWRkIHRoZSBwYXNzd29yZCB0byB0aGUgVVJMIHdoZW4gY2FsbGluZworICAgIC8vIHNvdXBfdXJp
X3RvX3N0cmluZywgYW5kIHRodXMgdGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkKKyAgICAv
LyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWlu
dGFpbmVyIGRvZXMKKyAgICAvLyBub3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGgg
cHJldmlvdXMgaW1wbGVtZW50YXRpb25zCisgICAgaWYgKHNvdXBVUkktPnBhc3N3b3JkKQorICAg
ICAgICBzZXRQYXNzKFN0cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsKK30KKwor
R1VuaXF1ZVB0cjxTb3VwVVJJPiBVUkw6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAoreworICAgIGlm
ICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBHVW5p
cXVlUHRyPFNvdXBVUkk+KHNvdXBfdXJpX25ldyhzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Cit9
CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQoreworICAgIHJl
dHVybiAhaG9zdC5pc0VtcHR5KCkgJiYgZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGhvc3QudXRm
OCgpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCmluZGV4IGQw
YjkwMzhmODI2NDdiZTBhMTVmNWNlYTRmODAxOTYxZjY3MmYyOWIuLjdlYzM5ODJlMTEwYjdhZjcz
MTQ5YWU5YWVjNTUxYjBkMDM2YjE0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaApAQCAtNDgsNyArNDgsNiBAQCBjbGFzcyBQYXlt
ZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CiBj
bGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czsKIHN0cnVjdCBBcHBsZVBheUxpbmVJdGVtOwogc3RydWN0IEFwcGxlUGF5
UGF5bWVudFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmgKaW5kZXggYjA3NTlj
ZGExOGMwM2M3M2RiMGJkMWRjZjg0NTMxYjI0YjUyZDA5ZC4uM2FhMjJmNWI4MmQ2YzJjMTgwZWNl
ODE0NTg1ZDg1MTA4OTRiMWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaApAQCAt
MjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJFdmVudC5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggYmQ1NTM0YzJkZjkxMjU4N2RkMjc3ODkyMjk4YmQ3
ZDQxZTdhOWFmYy4uZTM3MzM1N2NjMDdmZWE1OWRlOTdlYzU1ZDVjODg5M2QwNjM4NjRkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5j
bHVkZSAiUGF5bWVudFNlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZDQ2NTJjZmVkNTBm
ZmMxZDJmNmI2MmI1ZTRiZGQwZjkyODYzZDQ1Ni4uYTU0NzE1NDk3M2MwMWY4YmVhNWQxZGNhMTIx
NWQ5ZDQ0OWUwMDE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIFBheW1lbnRD
b250YWN0OwogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKIGNsYXNzIFBheW1lbnRNZXRo
b2Q7CiBjbGFzcyBQYXltZW50U2Vzc2lvbjsKLWNsYXNzIFVSTDsKIGVudW0gY2xhc3MgUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXM7CiBzdHJ1Y3QgUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ7
CiBzdHJ1Y3QgUGF5bWVudE1ldGhvZFVwZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmluZGV4IGU5
MTVjYTE2ZGI0MDI0MzhkOGJkODAwMTlkYWRlOWIzNjc3MDNkMTcuLmU3N2YyY2E5OGZhZmM1NTM0
ZTRmNjBlOGNmOTA0MDYwZDI4YjEzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaApAQCAtMzQsNyAr
MzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNz
aW9uOwotY2xhc3MgVVJMOwogc3RydWN0IFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Owogc3Ry
dWN0IFBheW1lbnRNZXRob2RVcGRhdGU7CiBzdHJ1Y3QgU2hpcHBpbmdDb250YWN0VXBkYXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5oCmlu
ZGV4IDBhMzUwN2UyNjBlNzQ2N2UwYWMwZDMxYzk0OTM3NTRhMzNmZjJhNjQuLjhmN2E0YjY1MGYw
YjkyZjgxNWY5YjVkNWNjZTE3OWE3ZDUyOTEwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmgKQEAgLTM3LDcgKzM3LDYgQEAgY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBQYXltZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQ
YXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogCiBjbGFzcyBQYXltZW50U2Vzc2lvbiA6IHB1Ymxp
YyB2aXJ0dWFsIFBheW1lbnRTZXNzaW9uQmFzZSB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVz
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0
aW9uTWFuaWZlc3QuaAppbmRleCA5OThiNzg0NjBjYzg3ZWQzOGU5MTg2ZjA4ZmQyOTk3YzYzZjg5
ZDcyLi5iMmYxYjQ5ZjNlYjNhM2VlODBhNGZiMzI5ZjY5ZThiZjhlNTFhOThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25N
YW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVz
dC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2lmIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9F
bnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCmluZGV4IGU2ODk2ZTc4NzhiMmMyYjEwZjY2
MTNjZGI5ODVkMGI2ZTI1OGQ5NGEuLjQ4OTc2ZDJhMzUyZTIwZGU0MTRhNmJmOThlNTY2ZWU0NzA0
NzVlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRv
ckJlYWNvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9y
QmVhY29uLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAzOGQ1YTY2MDhiZDVmNGQ0
ODg4ODEyNmY5YjU4ZjIwMmQ5NzAyMTNlLi45YTY0ZWU4Y2IzZmM0MTRhNDYyNTUxZGJiYjEzODEy
YzRjMGNiZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApA
QCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUg
IlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApp
bmRleCA2N2RlMmU1NDYyYmYzZGM2YWI4MGMyNGEzMThjNDA1NGZjZjkyY2E1Li40MDExYjM3Mzhj
OTc5YmI5NzhhZGZkY2ZjYmE4NTRjYWU4YzVkZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiRmV0Y2hC
b2R5Q29uc3VtZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAppbmRl
eCBlMzY0NGE4NzUxOTU5N2Y2NGU1M2YzY2NkYWM3NDQwMzk3NjAwMjNkLi42ZjNkZmUzNmYwNTM4
OTkxNDdjNGVhZGVmY2UwMmQ0MzJmOTk5M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
UmVnaXN0cnkuY3BwCmluZGV4IDJlODJjMzI2MTg2NWQ3YTk4ODhhNWMyYzZiODU3NTRiNDJjYmE0
NTkuLjk4YzY2M2I2ZmM2ZGJkYTI5MzZhN2RhMjY4OTZkZjAwMzIzM2JkYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJl
Z2lzdHJ5LmNwcApAQCAtMzUsOSArMzUsOSBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAK
ICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKaW5k
ZXggMmI4OTRlMGNhNDNiZTQxYjViMTBmNGQxOTg5MTM0MzQ4NzkyODMwNi4uMDMzNjc0ZjI2ZDM0
NTg1OWE0YWExY2RhMTIwZTZkODg0MTU0NmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKQEAgLTM4LDcg
KzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBNZWRp
YVNvdXJjZTsKIAogY2xhc3MgTWVkaWFTb3VyY2VSZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBVUkxS
ZWdpc3RyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwCmluZGV4IDdlMjIxNTAyNDA4ZmJjNDkxZTg3MDY2OTc2ODY3OWViZTAwNDM0
NjIuLjhhYzE0NTc5NTBhNzkxODlkM2FjZDJkMDcwNTY2YTIxODdiY2ZhZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC00
MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJl
Z2lzdHJ5LmNwcAppbmRleCBkNjlkY2NmODZlMzhhYTNmNzNjY2E3MTlkZjFiOWViZmZiMmMyMDA4
Li42NDE1ZmZhYmE1YzlhODQ4MTM0ZTUyMjMzNGRkM2E2MDFlYzJiZjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdp
c3RyeS5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCmluZGV4
IGEyNjdmMTEwMGJlMTdjMmEwYjI5YTIyMWUzYjE2OWM5Nzc0YWEyMmQuLmY2ZDIzZDJkNzkwZjBk
NGYyNzUxMDViYjQwNmIxOWUzY2UwZTQ5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCkBAIC0zNiw3ICsz
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW07CiBjbGFzcyBN
ZWRpYVN0cmVhbVByaXZhdGU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIE1lZGlhU3RyZWFtUmVnaXN0
cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVu
dFV0aWxzQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1
dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAppbmRleCBiNjJkOWFmYThlYWU1YjRm
NmZlMzRiNGM1OGNkYjRmZGNjZDY1YTA2Li40NzA2NzNhMDllOTVmMDMwZjVlZWFjNDIzOTg2OTZm
YTEwNDNlMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNv
bnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHND
bGllbnQuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE5BVklHQVRPUl9DT05URU5U
X1VUSUxTKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5k
ZXggZmYwZGM1NGRhZjFlNTAyMzhhZmEzNWYxMzI4OWU1YjgzZTJiMmI5Yy4uZmVkYTFhMTNhZWQy
MWM0NGJhZDMzODk2MjlhNzI1M2Y5MmIxYzllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMzgsNyArMzgsNyBAQAog
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blBlcm1pc3Npb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmgKaW5kZXggYjA5M2QzYTVmZmM5
NTY3MTJlYzkxMGQ0Y2ZhMTIyNzFlMjhhOWJhYS4uMjA3NzljZWRkMjZmNmI5NDcxMTM4NDRmZDk2
MWZiZjhiYjAwNjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaApAQCAtMjgsNyAr
MjgsNyBAQAogI2lmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJFdmVudC5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXF1ZXN0LmgKaW5kZXggZTNiZDdlNTMyY2YyM2YyNTc2NjY1NGUxMGMzNDVk
Y2JjYzM0MDg3Mi4uM2QxODgxYzU1N2I3ZDM3NjhkNDMzYjA4NmUyZjdmNGE3OTlkZDkzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlcXVlc3QuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRNZXRob2RDaGFu
Z2VFdmVudC5oIgogI2luY2x1ZGUgIlBheW1lbnRPcHRpb25zLmgiCiAjaW5jbHVkZSAiUGF5bWVu
dFJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKaW5kZXggNmI1
NTQyZTA4OTAwN2Q5YTQ5NzA0ZjJmYjNjZjQzOThhMGZiNGUwYy4uZWZlYWYwMGM5ZTM1OGVkNjgx
NTViNThhMTFhZDQ3MjU1NjFlMDI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgUmVu
ZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJUcmVlUG9zaXRpb247CiBjbGFzcyBTZXR0aW5nczsKIGNs
YXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFBsdWdpblJlcGxhY2VtZW50IDog
cHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luUmVwbGFjZW1lbnQ+IHsKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDc2MGE0ZTcx
MTRmNzQ3NTgyMjNhZGQxZmIwZjg1NmQ2ZTg1ZDMwY2UuLjRlZjBiNGRkZTAxNzU0ZmQ3YmQ2ODky
MmE0NTVkOTM2N2VjYjg2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaApAQCAtNzEsNyArNzEsNiBAQCBjbGFzcyBPc2NpbGxhdG9yTm9kZTsK
IGNsYXNzIFBhbm5lck5vZGU7CiBjbGFzcyBQZXJpb2RpY1dhdmU7CiBjbGFzcyBTY3JpcHRQcm9j
ZXNzb3JOb2RlOwotY2xhc3MgVVJMOwogY2xhc3MgV2F2ZVNoYXBlck5vZGU7CiAKIC8vIEF1ZGlv
Q29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBB
dWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
CmluZGV4IGNhNDA2YWY0YzZmNTIyNTFmOWY2Y2NhOGM0NWQ0NDNhYmI4ZDk4NTcuLmE4NWRmZDc3
NDRjZDQ3OWFiMTIzZDMzMjcxMWVlOGYyM2QxMDFkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIEFycmF5QnVmZmVyOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBCbG9iOwotY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENs
aWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApp
bmRleCA5MDEyMWY3MGQzMDg4MGMyYTAyZjk2NTgwYWUwNTcyOGZiOGJkZGM4Li41MDQzYzQ5NDIz
NWQwNzA4NTUwNmFhYmRjZTNiYzRkMGI4NGJiYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldl
YlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA3NDI3YmI1NTcwNzVlZGE4OGZi
ZDY2MTIxZTdkOTBhM2YxOWNkZDM0Li4xYjE5ZWRhYjRjOWE2ZjM4MTJmNzEzMGI3NmE2Yjk1Mzdj
NWM3NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNDQsNyArNDQsNyBAQAogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlw
ZS5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oCmluZGV4IGNmMmJkN2FjMGFmMWIyNzRkOTgzYmQ2YmZjZjI0ZTM4MWQxMjIzZTcuLmU5
NmY4NjAyYTg3YTkzNTI2OTY5Njc2NWM4MGU3MzAyY2Y3MzdlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAg
LTMxLDcgKzMxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29va2llUmVxdWVzdEhl
YWRlckZpZWxkUHJveHkuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlNvY2tldEV4dGVu
c2lvbkRpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3Iu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggODEyZjhhMDJk
MzBhMTY4M2NlOTQ2ODRmODcxMDIwZTZiYmI5OWQxOC4uMzg5NWU0NDk2NzUwN2M1ZWU5OWNjMjJm
NDNlNzIxZjI5MTM3NWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmgKQEAgLTM5LDcgKzM5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IDk0MzM5ODQ3NTdlMWI0YzkxNDVlODBiN2QyMjcxZjllMjRh
Mjc0MGIuLjA2OGI1YzI2MjNjNDEwMGM5N2U2NzMyY2I1MjcxYzMxZDBlZGRjN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xODcsNyArMTg3LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAogICAgIHBs
YXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLm1tCiAKLSAgICBwbGF0Zm9y
bS9jZi9DRlVSTEV4dHJhcy5jcHAKICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAg
ICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwCkBAIC0xOTUsNyArMTk0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiAgICAg
cGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgcGxhdGZvcm0vY29j
b2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2Nv
YS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKQEAgLTM5OSw3ICszOTcsNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0KICAg
ICBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2su
bW0KLSAgICBwbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL1VzZXJBY3Rp
dml0eU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9WYWxpZGF0aW9uQnViYmxlTWFjLm1tCiAgICAg
cGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtV2luLmNtYWtlCmluZGV4IGEyNGE5MTk1MzYwYTNjNWI0NjBkNjI4ZTJmODQ0ZWQwMTkx
OWZkNzIuLjY1ODZiMDI0NjFhNDcyMTdlZjA4ZDVlYzBiM2NkYzMxNjY2MTEzZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNTAsMTIgKzI1MCwxMCBAQCBpZiAoVVNFX0NGKQogICAg
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBsb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcAogCi0gICAgICAgIHBsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNw
cAogICAgICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCi0gICAgICAgIHBs
YXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgICAgIHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0
ZUNGV2luLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGZjMjg4YjAxMzkxZDc1MmIyNGRjOWZhZTcx
ZWZmMGYwZWI4YmU1YWYuLjYyMTkxYzAyZTM1MzcyZDc2YjMxN2YyNzRmNWE4MzVlNjczMDY4MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xNTM1LDggKzE1MzUsNiBAQCBwbGF0Zm9ybS9UaGVtZS5jcHAK
IHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3Bw
CiBwbGF0Zm9ybS9UaW1lci5jcHAKLXBsYXRmb3JtL1VSTC5jcHAKLXBsYXRmb3JtL1VSTFBhcnNl
ci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAKIHBsYXRmb3JtL1dlYkNvcmVDcm9zc1Ro
cmVhZENvcGllci5jcHAKIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggNTgxMzZhOTM4YzRlODg5MDJhZDU0YWZmMWQxMTUyOGZmYWM2MTNh
OC4uZmI5ZDkyMDE0NjJhMmYxZWI0NmNjMGJhYTUxYjNhNTY4NjgwYjQwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC0xNzgsNyArMTc4LDYgQEAgcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2Vzc2lvbk1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3BwCiBwbGF0
Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCiAKLXBsYXRmb3JtL2NmL0NGVVJMRXh0cmFz
LmNwcAogcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogcGxhdGZvcm0vY2YvS2V5ZWREZWNv
ZGVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE4Niw3ICsxODUs
NiBAQCBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKIHBsYXRmb3JtL2Nm
L01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcAogcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2Vy
dmVyLmNwcAogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCi1wbGF0Zm9ybS9jZi9VUkxD
Ri5jcHAKIAogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2Eu
bW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKQEAgLTQ1
OCw3ICs0NTYsNiBAQCBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCiBwbGF0Zm9ybS9t
YWMvU3VkZGVuVGVybWluYXRpb24ubW0KIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQogcGxhdGZv
cm0vbWFjL1RocmVhZENoZWNrLm1tIEBuby11bmlmeQotcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQog
cGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQogcGxhdGZvcm0vbWFjL1VzZXJBZ2VudE1h
Yy5tbQogcGxhdGZvcm0vbWFjL1ZhbGlkYXRpb25CdWJibGVNYWMubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMzQ0NGVlZTY1
NjM5ZjVlNjc5ZDk2ODczMGNiMzkzOTM4ZGRjMGEwLi45YTg4MzJiNWJlNDI4NmVlNjZkZjRhZTkx
NDBhNzJlMzQ0ZDY3OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQxLDcgKzE4NDEsNiBAQAogCQk1QzQzMDRCMDE5MUFD
OTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRDE5MUFDOTA4MDAwRTJCQzAgLyog
RVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgKi87IH07CiAJCTVDNDMwNEIxMTkxQUM5MDgwMDBFMkJD
MCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4
dHVyZUxPRC5oICovOyB9OwogCQk1QzQzMDRCNjE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFk
ZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzQzMDRCNDE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmgg
Ki87IH07Ci0JCTVDNkU2NTQzMUQ1Q0VGQkYwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNkU2NTQwMUQ1Q0VEQzkw
MEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4
OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOEM2MDA5MjEyNzZCODcwMDgyRjg4
RiAvKiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEM2MDA3MjEyNzZCMEYwMDgyRjg4RiAvKiBTaG91
bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1Q0ExREVDNjFGNzFGMUM3MDBFNzFCRDMgLyogSFRUUEhlYWRl
ckZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5MTcsNyArMTkxNiw2IEBA
CiAJCTY1NkQzNzQ4MEFEQkE1REUwMEE0NTU0RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2RDM3MzAwQURCQTVE
RTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU3QUZBRkMyMDA0N0EyOTAwNTA5NDY0IC8qIFNw
ZWN0cmVHYWRnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1N0FGQUY4MjAwNDc4OTkwMDUwOTQ2NCAvKiBTcGVjdHJlR2FkZ2V0LmggKi87IH07CiAJ
CTY1ODQzNjg2MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg0MzY4NTBBRTAxQjc0MDBF
NTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM2MDlB
RTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2NTlBN0QxMzBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OUE3
RDEyMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1OUREQzgzMDlFMTk4QkEwMDFCRjND
NiAvKiBKU0RvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTlEREM4MTA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1QTIxNDY4MDk3QTMy
OTEwMEI5MDUwQSAvKiBQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODA1LDcgKzM4MDMsNiBA
QAogCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4QUI1MTNGMUFGQjAwMDcz
NERGMCAvKiBQT0RJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDQkI4QUJBMTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRy
ZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4
QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JCOEFCQjEzRjFBRkIwMDA3MzRE
RjAgLyogUE9EUmVkQmxhY2tUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0JCOEFCNzEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNC
RDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxI
YXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkZCNTNCMERDRDI5Q0YwMDE5QjNF
NSAvKiBKU1dpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkNDMEU4NzYxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkND
MEU4NzQxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5oICovOyB9OwogCQlC
Q0M1QkUwMTBDMEU5MzExMDAxMUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1QkRGRjBDMEU5MzExMDAxMUMy
REIgLyogSlNDU1NTdHlsZVNoZWV0LmggKi87IH07CkBAIC00NjY5LDcgKzQ2NjYsNiBAQAogCQlF
MUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTE0NzA3MTExMDJC
MTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oICovOyB9OwogCQlFMUEzMTYy
RDEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUEzMTYyQjEzNEJDMzJE
MDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBNjQzRjIwRUMwOTcyNTAwNzc5
NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJRTFBOEU1NjcxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUE4RTU2NTE3NTUy
QjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUFERUNCRjBFNzZBQ0YxMDA0QTFBNUUgLyogTWVzc2Fn
ZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
QURFQ0JEMEU3NkFDRjEwMDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQURFQ0NFMEU3NkFEOEIwMDRBMUE1
RSAvKiBNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFBREVDQ0MwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmgg
Ki87IH07CiAJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFERUREODBFNzZC
RDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oICovOyB9OwpAQCAtNjExNiw3ICs2MTEyLDYg
QEAKIAkJMUE5MjdGQ0YxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IG5wYXBpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBOTI3RkQwMTQxNkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gbnBydW50aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBOTI3RkQxMTQxNkExNUIwMDNBODNDOCAvKiBucHR5cGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IG5wdHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQTg0RjAyMTQzQkE3QkQwMDUxRDE1MyAvKiBTY3JvbGxDb250cm9sbGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsQ29udHJvbGxlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBODRGMDMxNDNCQTdCRDAwNTFEMTUz
IC8qIFNjcm9sbENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2Nyb2xsQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUFBRERB
MTE0REI0MDlGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg3NDAsOCArODczNSw2IEBACiAJCTVDNjY4RTY0MUU3QzZDMzUwMEQzMkIz
QiAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzY4OEFBMDFEMzgwNTA5MDAwQjU0RkEgLyogVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzY4OEFBMjFEMzgxMjZGMDAwQjU0RkEgLyogU29ja2V0UHJvdmlkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0UHJvdmlkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1QzZFNjUzRjFENUNFREM5MDBGNzg2MkUgLyogVVJMUGFy
c2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTFBhcnNlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNkU2NTQwMUQ1Q0VEQzkwMEY3ODYy
RSAvKiBVUkxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMUGFy
c2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OEQ3MUQwRjFGMkIwMDlE
MkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTb2NrZXRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzhDNjAw
NzIxMjc2QjBGMDA4MkY4OEYgLyogU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzk3QTMzNjFGNUY3QTY1MDAxMDUyMDcg
LyogUmVjdEVkZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3RFZGdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg5NSw4ICs4ODg4LDYgQEAKIAkJ
NjU3QUZBRkEyMDA0Nzg5QTAwNTA5NDY0IC8qIFNwZWN0cmVHYWRnZXQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFNwZWN0cmVHYWRnZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NTdBRkFGQjIwMDQ3ODlBMDA1MDk0NjQgLyogU3BlY3RyZUdhZGdldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjdHJlR2FkZ2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1l
TG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9h
ZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzUwOUFFNDM0
NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzYwOUFFNDM0
NjAwMkM1MzFGIC8qIFVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJM
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OTM5MjM5MDlBRTQzNUMwMDJDNTMx
RiAvKiBVUkxNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VVJMTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTlBN0QxMjBCNkRCNEQ5
MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN1YnN0aXR1dGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
OUREQzgwMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEyOTA3LDcgKzEyODk4LDYgQEAKIAkJQkNCQjhBQjUxM0YxQUZCMDAwNzM0
REYwIC8qIFBPREludGVydmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBP
REludGVydmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkI4QUI2MTNGMUFG
QjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUE9ESW50ZXJ2YWxUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQkI4QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9EUmVkQmxhY2tUcmVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTEhhc2guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNCRkI1M0EwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXaW5kb3dQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkZCNTNCMERDRDI5Q0YwMDE5QjNF
NSAvKiBKU1dpbmRvd1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDMEU4NzMxQkZF
NzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MUGljdHVyZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTQyNTIsOCArMTQyNDIsNiBAQAogCQlFMUE1Rjk5QTBFN0VBQTI1
MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNj
cmlwdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUE2NDNG
QzBFQzA5N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBOEU1NjQxNzU1MkIyQTAwNzQ4OEU3IC8q
IENGVVJMRXh0cmFzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENG
VVJMRXh0cmFzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBOEU1NjUxNzU1
MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENGVVJMRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIx
RUE4MTRFOUUyN0QwMDQ0OUUxMyAvKiBGaWxlTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRmlsZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVCNzE0
RTlFMzU4MDA0NDlFMTMgLyogRmlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxQUIxRUJCMTRFOUUzN0EwMDQ0OUUxMyAvKiBGaWxlRXJyb3IuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEZpbGVFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjIz
NCw4ICsxNjIyMiw2IEBACiAJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTFBOEU1NjQxNzU1MkIy
QTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCAqLywKLQkJCQlFMUE4RTU2NTE3NTUyQjJBMDA3
NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLywKIAkJCQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUg
LyogRmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQk1MTdBNjNCRjFCNzQzMTdFMDBFN0RDREMgLyog
S2V5ZWREZWNvZGVyQ0YuY3BwICovLAogCQkJCTUxN0E2M0MwMUI3NDMxN0UwMEU3RENEQyAvKiBL
ZXllZERlY29kZXJDRi5oICovLApAQCAtMTYyNDcsNyArMTYyMzMsNiBAQAogCQkJCTJENzZCQjgz
MTk0NTZGODEwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuY3BwICovLAogCQkJCTJENzZCQjgw
MTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCAqLywKIAkJCQk1MTJERDhFMjBE
OTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICovLAotCQkJCTFBOTg5NTZBMEFB
NzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNmOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0Njk5LDExICsyNDY4NCw2IEBACiAJCQkJMTg1
QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oICovLAogCQkJCTkzMzA5RUEx
MDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi8sCiAJCQkJOTMwNUIyNEMwOThGMUI2QjAw
QzI4ODU1IC8qIFRpbWVyLmggKi8sCi0JCQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIFVS
TC5jcHAgKi8sCi0JCQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oICovLAotCQkJ
CUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi8sCi0JCQkJNUM2RTY1M0Yx
RDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgKi8sCi0JCQkJNUM2RTY1NDAxRDVDRURD
OTAwRjc4NjJFIC8qIFVSTFBhcnNlci5oICovLAogCQkJCTg2ODE2MEQxMTg3NjY5QzQwMDIxRTc5
RCAvKiBVc2VyQWN0aXZpdHkuY3BwICovLAogCQkJCTg2ODE2MEQyMTg3NjY5QzQwMDIxRTc5RCAv
KiBVc2VyQWN0aXZpdHkuaCAqLywKIAkJCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNl
ckFnZW50LmggKi8sCkBAIC0yNzQ3Niw3ICsyNzQ1Niw2IEBACiAJCQkJQ0QzMTg2MjMxOTlGMUUy
QTAwMzBBMEY3IC8qIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RkE5MDRDQTE3OEU2MUY1MDA0QzhBMkQgLyog
Q2VydGlmaWNhdGVJbmZvLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMUE4RTU2NzE3NTUyQjJBMDA3
NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzZGRDE1MTZDNzgy
NjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdC
QzY5REQxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNUZGRjEyQjAyNjc2MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUu
aCBpbiBIZWFkZXJzICovLApAQCAtMzA5MTYsMTEgKzMwODk1LDggQEAKIAkJCQlFNEFGQ0ZBNTBE
QUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDA4NkZF
OTgwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEMTc2MkUwMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTI2NzcyNjA1MUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUJDQkQyMUFCMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGNTVCM0RERTEyNTFGMTJEMDAzRUYyNjkgLyogVVJMSW5wdXRUeXBlLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1QzZFNjU0MzFENUNFRkJGMDBGNzg2MkUgLyogVVJMUGFyc2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0MyODlERjFBQTBGRTVEMDA5QTlDRTMgLyogVVJMUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzN0EyMUQ1N0IzRkUwMEFCODVFQSAvKiBVUkxV
dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyNzYzQkYxNjY4OUJGQjAwMkZDQUNCIC8qIFVz
ZXJBY3Rpb25FbGVtZW50U2V0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKaW5kZXggZjNlMzQ2
YmVhN2UxOGJlZDJiODk5MDY3NGI2ZTIyZmM0YTAyNWNjMi4uNjJjZDU0YTg0YWI0YTVmMDJmYWM3
YjcyNWY2MGQ3ZThhZDEyYzJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3Mg
RGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVj
dDsKIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ2Fj
aGVkTW9kdWxlU2NyaXB0TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVkTW9k
dWxlU2NyaXB0TG9hZGVyPiwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRj
aGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmgK
aW5kZXggNTIyYjJmZmMwNDMyYzE4OTRhNDVjMDJiNjk1OWU5ZTYwYTg0MzU2ZS4uZDUzOTFjNjk3
ZDdjZjRmNmY1ZDQwNzljYTI3MmVmNzdlYTljYWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaApAQCAtMzMsNyArMzMsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERvY3VtZW50Owot
Y2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRTY3JpcHRGZXRjaGVyIDogcHVibGljIEpTQzo6U2Ny
aXB0RmV0Y2hlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDg4NjlkYjFmOWEzMmRkYzNkMjA1YzhmZjg1ZDIyOTQw
MTlkMjliMzEuLmQ2Yzc5Y2QyMGFkNTcxMjhhZDdlNjc5NmI1ZTFmNjQxNjFkNDFjMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01
ODksNyArNTg5LDcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2UKIAogYm9vbCBTY3JpcHRDb250
cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRSZXBs
YWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2Ny
aXB0VVJMKQogewotICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAo
IVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSB8fCAhbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhtX2ZyYW1lLmRvY3VtZW50KCkt
PnVybCgpLCBldmVudEhhbmRsZXJQb3NpdGlvbigpLm1fbGluZSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZjdjMDgyNGUwNmNjNzE0Njlj
MDcwZDY4OGU0MjY4MjRjOWMzYzRmMC4uNmU5ZGRjYTA4ZGUwZjY4MThhMDc2NzViYWE2ZjRhZTRk
ZWVlYmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaApAQCAtNjAsNyArNjAsNiBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdDsKIGNsYXNz
IE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIGNsYXNzIFdpZGdldDsKIHN0cnVjdCBFeGNlcHRp
b25EZXRhaWxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVs
ZUxvYWRlci5oCmluZGV4IDkxZmY5OWMxNTBjZmJjOGZiNmVhNzBmNWY1MDQyYzdhYTFlNDM0NGIu
LmE2MDY2ZjRjZTM5OTk5NmM2NTRkYjYwM2MwYTQ3MjRkZDA4NDAzNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCkBAIC0yNywxMCArMjcs
MTAgQEAKIAogI2luY2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIgogI2luY2x1ZGUg
IkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2lu
Y2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggNTZlZTY5MGRlODQxNTlh
NTdjNDI4YTkwNzM5YjIwNTZmZmRkYmZkNi4uYjdkN2ViOTNjYmFjYjc0YTgxYzAwN2U1ZWYwOTgx
MjI1YmM5YTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJj
ZUNvZGUuaApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAj
aW5jbHVkZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdFNv
dXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NvdXJjZVByb3ZpZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCBkMTFiNDJlNmU3ZTc1NDcwNDI3NDMzODEzYzM1OThjNDAwMGU4OTRkLi41ZjNlYTczZjk3
NjQxMjAwNWZjMzkyN2IwNmUxMWI2YjUxODIzZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDUzMiw3ICs0NTMyLDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAoTmVlZHNJbXBsZW1lbnRhdGlv
bkNsYXNzKCRpbnRlcmZhY2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
dXN0b21IZWFwU25hcHNob3R9KSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8SmF2YVNj
cmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPiIpOwogICAgICAgICBBZGRUb0ltcGxJbmNs
dWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJVUkwuaCIpOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHd0Zi9VUkwuaD4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6aGVhcFNuYXBz
aG90KEpTQ2VsbCogY2VsbCwgSGVhcFNuYXBzaG90QnVpbGRlciYgYnVpbGRlcilcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xu
Iik7CkBAIC00NTQ0LDcgKzQ1NDQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
IH0KIAogICAgIGlmICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbikgewotICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJVUkwuaCJ9ID0gMSBpZiAkaW5kZXhlZEdldHRlck9wZXJhdGlvbi0+dHlwZS0+bmFt
ZSBlcSAiRE9NU3RyaW5nIjsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siPHd0Zi9VUkwuaD4ifSA9
IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyI7
CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8gb3Ig
JGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxpc3QiKSB7CiAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ik5vZGUu
aCJ9ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKaW5kZXggMTE3OTU4NzUzNTFiZjJlMzYzYzkx
NGVkZDc0MTM1MWI3NDJhMjlhYy4uNmQ5YmQxN2I2ZDE1NGUwYmYwYTZmZjhiMDFiMDAxZDMzNTZk
ZmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKaW5kZXggNmQ3ZmFhMmI3N2RhZDZhNDczZDA5
Y2E2ZmYyOWIzODk2YzVjNGEyYi4uMDc5YzY2NjI5NGFlZWNhODI3NGFlMmJjZTVlZmU0ZWE3N2Ix
NmI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTTWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTTWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3Bl
cmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlN
YXBMaWtlLmNwcAppbmRleCAwMDhkY2ViYTQyYzZkNGM2ZmIyYzlhOTEzZmZiNmQzM2ZkMGYxYzgz
Li45N2Q0ZjNhYjRmYTE2MDJhZTQ5MGFlODZjOTZlMGMzODQ3OGJmOTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRP
bmx5TWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3Rp
dmVET01PYmplY3QuY3BwCmluZGV4IDYyOTE2ZDM2YmI1NWE2OTMyMjYyZmZhNTVkYzI0Y2U2ZWUz
YmU4NjMuLjRkOWYxNDJjNTQ0MzI4MWU1OGZmY2IwNTU2NGU1Y2RjYmZjNGQ1NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVE
T01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmluZGV4IDY0MDZiZTk5OTAzZDE0YzFiMTcxMDhi
OGZhM2QxMjkyZTFmYzkwNzAuLjRhMDI3OTM2YjlkYjk5MzYwYmZkZDc4YTk3YjZiMzVkNjQ2ODZj
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIuY3BwCmluZGV4IGFkYWQwNDliMTRjNGFhNWYyNWFlYWQ5NDYwYjFjMmJm
YTYxOTIyNGUuLjM0MmEwZGY4ZDFlMjgzNTI4NGJjMzZiZTYxZGJiYmYyN2JiMjhkMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKQEAgLTMwLDEyICsz
MCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKaW5kZXgg
NDYxYzRkOTZhNWYzOTBkYzhmMTkwMDk1Y2I3NDU2NGE3MTA3YTcyMi4uM2FkOGMyMzc5M2E3YTY5
YjgzMzRkZjViZDc1NDMyM2ZkOWFhYjcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcApAQCAt
MzcsMTIgKzM3LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDFkYjBhMzJkNTVlNWNi
N2MwZjk0Yzg1ZjJhZmM5Yzk4MmIyZWIwMGQuLjAwOGI1ZTg5NzY4Njk1ZjI1YzgzM2JhMzQ2MDFk
NGJlNTdkMGUyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5j
bHVkZSAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4
IGUxZjlmMTcwYTZjZDcyM2RiZTk1NTg0ZGNmNWZhZDA0MjQyY2VlODguLmE5NDU0ZTliYTZiOTM4
MDRhM2U5MDU5NGU5YTcwZTYwY2Q2YTFiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAt
MjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNw
cAppbmRleCA3NmM0MGZiMDQ1Nzk1MDNlYTViNTJjNDdlMDQ5NjBkYjIxOTk5ZjNhLi45NWQ3Njcw
NDczODhlMzhjMDEwMDQyOTVkOGNmMTM0NTZiZDQ0YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcApAQCAt
NDEsMTIgKzQxLDEyIEBACiAjaW5jbHVkZSAiSlNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRyYWNlcnMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKaW5k
ZXggODdiMzUzYzViNTk4NTg5ZDU5MDJiNzBlNjRmMzkwNzIxZmE5MmM5My4uMTI3ZmFhOTY3ZDJh
YzUzNmU0NmFiOTNkYmY1NmZkNTI1NGZlMTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiSlNUZXN0U3ViT2JqLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCA1NWRlYThlZWFiMDdmNzUwNWYx
YTZiZGZjYzI0MWI2NzFjYmRlYTU2Li40NWRjMTkyNzA0OWJlMjcyMDU1MmE5OGI3ZGYyMzViMGY1
YTE1YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0zMCwxMSAr
MzAsMTEgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90
QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFy
Z2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAKaW5kZXggMzA4ZTM0ZjAwMWFjMmQ4YjM1M2U4MDUxZDhlYzUxYmJhZGQ2
ZWUwYS4uNzFlM2JmMzc1NDQyOWVjN2E3Y2NjYTgzNTUxZDM5Mjg4YWMxZWVmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFy
Z2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNl
cHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAKaW5kZXggMjM4YTQ4ZjdjNjVmMGQzY2I2ZjFlMDNmN2EyOWU5ZTgyOWVi
Y2JjZi4uZDMyYzA0Y2M1MGVlZGYyNjllZDgwMWQ2OTEyM2Y2YjUwNTQwNDcyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCAzNDIz
OGJjNWQyMTNlYzQ5OWZiZTVhMjU1YzU2MThmMzA2ODViMmRjLi5hYzJiZWJiMmQ5MzI0YTFhMmMy
YWRkNmExNjBkMzdjNzc1YzIzYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IDcxYjhiZGRmNjhkYWVjYzczZTIyMWNl
ODNkNjYwNzNjNzM4YjRlYzguLmIyMGI4M2M3YmU5ZTViMzdiOWNjNTc1ODY2M2UxNzg1NTg1ZTM5
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQogI2luY2x1ZGUgIlRlc3RHbG9iYWxPYmplY3RCdWlsdGlucy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDY2MDc4YmQ2Y2I1
MTFlMWQyZjQ2ODg4MjU4MmE3ZjkxZmJjMDZiYzkuLjU3ODkyNTM3YmU4NzgzMjRhNWRkZThmNmQx
YzU5MmMxYjk2MmI3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAppbmRleCA2MjAzY2MwYjk4NzM5MjQ3N2ExZDliZjdiNTcwY2JlMzdjMTBlMzRmLi4zNTVhZGNk
OTBhZWZjZjU5NWQwN2VkNTQ2ZTRjYWFiMjBiM2VlMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjcsMTMgKzI3
LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDNmZGM1NjA0MDM1MGUxMzIxZGIyNDY5N2I3
MjcyNTU3ZGQxYTkwOGQuLjc2OTY3M2FmYmI0ZTYyMDFkOTRjMzJhODRjZjI0OWVlNjAzODhmZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCkBAIC0yOSwxMyArMjksMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmlu
ZGV4IDRjNjRjMTllYjg1ODI2MDI5ZjYwYjkyNWIzMTllMTFhNzAzZDk0ZjcuLjY0YTM3ODk5YTlk
OTA3ZmM4NTI5OTg2YjNkMDQ5MWJmNzA3ODY2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBA
IC0zNCwxMiArMzQsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXN0U3VwcGxlbWVudGFs
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgfHwgRU5BQkxFKENvbmRpdGlvbjIpIHx8IEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogI2luY2x1ZGUgIkpTRE9N
Q29udmVydFN0cmluZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGlu
Z1VuZGVyc2NvcmUuY3BwCmluZGV4IDU1ZmZkNjdhMTUwZmUzMmM1ZWRhMzVlMzJkMjQ2ZjY5MzJl
OGViYWEuLmNmZjMyZmYwZWIzYWRkYTc3ZmU5NDYzYTJhNGY5OWNlNjU4YjQ5NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcApAQCAtMjgs
MTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5j
cHAKaW5kZXggOTc5YzBmOGNjNWJhZDg0NmYwOTYxY2JkYTI2NGUwY2I3NmMxODMwYy4uYWMxZThl
N2Y5ZWY4MjkyNzhlMjQ1ODQ1YTY2MjMxYTVmY2JjYWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3Bw
CkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5O
YW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwCmluZGV4IDUwYWRhOGNhZjBlZTZkMDJiYWRhODAxYjBiNjk4YWVlOTU5
ZDkzNjAuLjAwZmFmOWYwNTczZmQwMDc1ZGU4ZGU1MTQ5ZThlYjUwODc0Yzk0ZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTMwLDEyICszMCwx
MiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCAzMTg3
ZDJkYWYzZDZlNzIxZTdlMDA4NWYyN2NjYjIyZjJiNDFkYWY5Li4zZmViZDFjZGVjNDBlY2VmYmEz
MmJjZmM0MzYzMjQzNTE1Y2U2YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMjgsMTMgKzI4LDEzIEBA
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBkMjcxOTRlODNl
NmFjNzc2NTMxYTlkYjc3MzBmMDU3NGMyZGZhZTFkLi5lMDVkNjU1NDZiZmExMTM2YTA4NjQyOTU4
NDcyY2Y1MGNhMmQ1MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEzICsyOCwx
MyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggYjFmMzZkNzNlMDM1
YWZlNzhlZmU5MzJiMTRkZjkzY2VmZmJhNGRmMi4uZTAxNWIxNzhhNzY1MzhmODE5ZTUzYWZlN2M1
ZmJiYTc0MTg0Y2EzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNp
bmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5h
bWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTI5OGExNzYw
YzA4MzUyNjZjNDJlYjY2NDg2NGJmNjQ0ODJjN2IzMC4uZjFhODRhOGJhZDlhNWQ2MDVhMTBlNDlk
OWM1YzQyNzNkOTkyODdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApA
QCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01OYW1lZENvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDU3ZDY3YzIzNGUy
NmI0ZGRkMDk0N2U0MDJlZjg5YjQ1MDJiNmRkNDMuLjg2MmI0NTlmYmIyMWQ3ZDEwMTI1Njk1ZjVh
MGVhZWZlZDc1NGY2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAppbmRleCBkMGZjZDJmMmI5MDMyNDk1YjRiNjU4YmU5YjMxYjdmZTU1YTA4ODZhLi5j
MTA1ZjE1ZGJhZjg1ZGJmM2ZlNDQzM2JhN2E4MDU1YTg0MmZhYTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEy
ICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDI1MTQxMGI1ZmFlZjcw
MDRjMDExNjY2NmZjZThlMWU5MGEzMzc5YTkuLjY0MTM5YzhmNmIyMGJiMzRiNjIzNmQ2MjA0MWM3
ZTZkMDI5ZDhhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRp
b24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
CmluZGV4IDI3NThjYTEwYTE0MTJjNDEzOWIzMjU4NGYzY2Y5MmI0MDNhYmIwMTQuLmQ2MTRiY2U0
MjFmZTM0YzZmYmU2NzhiZDM3ZTUzMmQ1MmQyNzY0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtMjgsMTMgKzI4LDEz
IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aC5jcHAKaW5kZXggY2EyYmY2MTJhY2JjMmZkNGUwNDRhMTU5YTc2NDY3ZTVhYWNhYjliMi4uZWE0
YzVjZDI3Zjg4NzlkMTc5ZWJiYjkxNTNkZjk5MzgxMGJlNzY0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllci5jcHAKaW5kZXggOTEyMGY0YmU3ZjIxYjc4ZDJjOWJmZjJkYjE3MjVhOTQ5NzRiZmNkMS4u
NmU0MGRlZjNkNDRiYTM3Zjc2NDAwOTkxMjg5YWZjMTBlMjliN2I1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggM2JiN2QzYjdlMTJmODI5Yzg4YzM0NGJhYmRi
NDg2ODIyZjU3Y2JhMi4uZDM5MjRjYmE2MDg2Y2Y5MDg0NmJmMTEwODUwOTM0MjAxOGU0MzM2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcApA
QCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGNiZDVkMzFhNjI2N2VhMWVlMjVk
ZTA5MTRkNjE0NjhiZmNkOTI1YjUuLmM3YTNjNmE5ZDU5NWRmZTY3MmNjNzJhYmRkZTAzZWZlNmM4
MzI4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4
IDlmY2JmNjk3YjYzOWFlMDNkZGMwZWJiMjA4M2NlNzk5ZjczODgzNTMuLjk4ZWMxM2RjMmU3OWVm
NWZkYTY0YmY3MmQ3NDNmMWJjZjM5ZTQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2lu
Y2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBiOGE5ZmFkZTg1YjRlOTg3YzcwNTJhMDI5YTlkZDhm
Y2RhNmQzMjUwLi5kZGRmZjhjY2Q3MjU5YjM3NDVhNjZjYzdkYmU2YWFmZmY4MDllNmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0y
OSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDE3MTQ3NzU1MGIwYzM4
NDU5NTYyZjZhNzVjMmU4M2Q4MzE1ZGI5MjQuLmI2NjFmNTNjZDI4NzA4ODgzYTExYzhjMjA1ZTcw
NDgwOTUzMTdmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlci5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3Bl
cmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyLmNwcAppbmRleCAxMDNmOTFjMWJhYTJhYTM5ZjFlMzk5YWFmZWNlNTgxMTkxMTE2ZGVl
Li5jMzVmZjg5NmM0OGQ4YmIyODc4MjNiZGYwYTQ2MDdhMWIzZGE4NzBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggZmMx
MjJhMmUyYmJmODdiYTE0YjE2ZjcwNzk5ZTZjMjgwZjFlNGM0ZC4uOWYxMGQ2NGVlNWEwZDEzMTli
OGNjZjg5NGRhOTBjOGFjMThhMTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAj
aW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKaW5kZXggNDgwN2IzNjU1
MzMxOGUwNDJhOWI2N2I0NDQwODExOWQ2ODRlZDFkZS4uYzYwZGNhYjYzNTk1OTdkYjRmODgwZWRm
NDA0MGFjODM0MzVhODI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zLmNwcAppbmRleCBkZDUxOTMwNzMzYjZjZGFhNDllMWY2ODU2YjZiNzFmMWUx
MTdjYWRlLi40MGI5ODFlMzQ0MTA1N2Q3Y2JiN2ZlZTE3MGVlNTNjYjkwMzAxNzdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMzAs
MTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCBkZTk2ZDNi
OGNiZjIwMTI4YjM5NjM1ZGIzNmUwNjg0ZTlmODY2N2M2Li4yYjJkZWQ0YzJjNjg4YWY0NDNmNGE5
N2MwZmQ0OWIxMjYwMDA2NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RD
b25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDBjYTVkYmRlMGM5NzM0ZTM5ODFlYzExYzFlNzVlNzg4
OWFiYjdiYmYuLjlmMjU0YjQ3ZWI5OWVlOTkwZDc1N2NkMjcyODhlYzhhMGI4OTcxNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCkBAIC03Nyw3ICs3Nyw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlQcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KQEAgLTkxLDYgKzkw
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuY3BwCmluZGV4IGVhZjA5MmFmM2YzYTcxZTlkM2M0Y2Y2MDExYmZkOTE5MmFiMjFiNWEu
LjFhZGI3MDIxMmY0NTFjY2U4NWIwOGNkYTAzNmZlNDc4MDg5YzM5NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAppbmRleCAwNTgxNDNiYTE0
YmI0ZWIyMjQwOWM4ZDI4NDczNzUzZDg0ZjAzZTdmLi5iMDU1NjY4NTk2YmM2ZjI3YzgyYzcxNmZk
MjM0ZTVkODBhYThhNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgpAQCAtMzcsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuY3BwCmluZGV4IDBkYjc3NGFmMTI1ZjVkMTg1MGY3OWE2MTcxNDc1ZTEzN2FiN2NkNjEu
LmMxYTYzNDMwYWMwZDhhYzEzYmJhNGM0YTc0Mzk0OTAxOGM3MTFkMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFBsdWdpbkludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAppbmRleCAyODM2MjQ3M2E3MDlmNTk2NDZi
YmViNjA0YmUzZGExMTFhMGE4Y2VkLi5iZWM1N2Q1NTE3ZDViMDljOGQyMGEwYWRlNDI5N2NmMGFl
OGRmY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcApAQCAtMjcsMTIgKzI3
LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4IDhiMGY1MWVkMzE5NDFjODRhZWIyNGEzNzNi
ZTliMTdjMDdmNzYzZDcuLjdhMjU4OTg2NzE0NjMwYTMwNTNiYzc0ODFhNWRlMGZlZjFiZDc5OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCkBAIC0zNCwx
MSArMzQsMTEgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uLmNwcAppbmRleCBlM2MxY2MyNTlhMWQyNzg3OWEyNjdkOWY0NDU4ZDVkNDg5
YTY4NzkyLi43OGQxYzQxYzQyOGMwMWUxZjc1ZjZlOTFhNjRhZWIzMDVjMGE1MjVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAKICNpbmNsdWRlICJK
U1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oIgogI2luY2x1ZGUgIkpTVGVz
dFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJl
Y3RJbmhlcml0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCmluZGV4IDk2MzY4
ZjNlNmY3YmZmYThlMWE3ZWZiZmU3ZjUwNjNmNjQ2ZGJkYTcuLjEzM2VkYTAyZTY0MDE2M2ZjOWJl
NjU0MzQ4MjBmYjkyNWYwNGMwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcApAQCAtMjYsMTEgKzI2LDExIEBACiAj
aW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQuY3BwCmluZGV4IDM3ZjY1NGRkZmNkN2MxNWI3OGViNjcxYzRhYWM2
Nzg1ZDU0MDBiYjcuLmFkNTMxYjIwYjc0YmM2ZDI1OTU2OTE4MmVhZWZjNTMxMWNmOGUwOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcApAQCAtMjksMTIgKzI5
LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdEZpbmFsLmNwcAppbmRleCA1ZTg2OTEwYWI1MjA4OGUzMTc3OTM2NDlkNGM2
MDcyYWM0ZTcyYjk0Li5hMWFjMmQwMTBlNTFjNDgzN2MwZjBiNTQ2MjI4MDM0YWQwZGI4NGU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwCkBA
IC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAzNDJlZDFh
YTUwYjQ2ODY4YmZiMzkxNjZhZTBmODNkMDhjNjgwMmE4Li5kZjdkZmI4Zjk2MWQ5NGZlOGUyNGYw
MWQyNDFmYjI0ZjZhOTRmYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBACiAjaW5jbHVk
ZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyLmNwcAppbmRleCBmZjJjYWQyY2FmZmM5YWRmMWFmZmE1M2NkZjA5Nzdj
ZmM4M2U4NzE1Li41MjQyYmI4YmFhYzZmYzhjYTE0MDQwNjBmMTUwYmIxZGQ3YzAxNWRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uLmNwcAppbmRleCA4OWVkZmI0ZDU0ZmZjZTI5MzEyZTlkYzM3MGEyOTA0ZTg2Mzg5NDhm
Li43Y2FlMjQzOWVmNjI3YjZjMjY2MTczOTRiOTFjYzhiODA0ZmYwNTViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKQEAgLTI4
LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKaW5kZXggYjE2YjZmYjRiZDE0ZTI0ZDJkYWUw
ZjQ0YmFiZWE2NGQ4NDcwMGY0NC4uNTBhNDZmNjE0Zjk4NDhiNzY5Mjg1ZTE2Mzg5MDczYzEyOTE1
N2ZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
LmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAK
aW5kZXggNWE1NGFjMTQzY2IyNzkzNjRlNjQ2YzMzMzRiMGNiYzE3YWU4MzQzNS4uMGEzM2FmMzc4
YTJiMTIxOWYyOTI4NGRjODllMTZkMzhiNzI0Nzc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKQEAgLTI4LDEy
ICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCmluZGV4IGYyNTE4YTcx
ZWQ2ODYxYzVhOGNhZjZiZWIzNGM1ZmNmNmJkMzBkZWYuLjQ5MDQ5MTc0ZTAzNmY1ZjE4MDYyNDRj
M2YyZWJkMTllMTY5NjJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNp
bmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuY3BwCmluZGV4IDgxMjM3MmI0ZDRlZTcwYzQyM2EyODQzMzQ2NTFkMTE1
OGVhYWNlNTkuLmM5YzUyNjk4YjgyZDNmZmYyN2QyMzQ0ZmRkYjU1NDNkMDkyY2E0MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAK
QEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAppbmRleCAzOTE3YjRk
OTI5NmJhNTIzZGMxMzA3MDYxOWNmNGNlZDM4YTgzZmIxLi43NWVjMzhhZGI4ZmU4ODkzMDQ2MDM1
MzQ2YjU2NDQ2ZDdiMmI2MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUg
IkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCAxZTYxM2FhYjA2NTI0YWY1NTYwNjMz
ZDg4MjI0OTdmZDFjMDFlMGEyLi4xODZhNDE2ZGE4NzNhNjRlNWRmNWM2NmViYmZkMDkwMWFjZTVk
ZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQAogI2luY2x1ZGUg
IkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IDcyNDA3MTU2ZWJkNjI2ODZhMTM0YjAxYTRlNDBj
ZDUxMTZiNzU5ZGYuLmQwZWFiYTA5ZmQxMmVlYWY1YTEzN2EyYWI0ZGMyNDBiOTk3Yjc2OTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZEluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTk0LDcgKzE5NCw3IEBA
IEJsb2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudEV4
dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6TWFrZUhUVFBTOiB7CiAgICAgICAgICAg
ICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwgdXJsLnByb3RvY29sSXMoIndzIikpCi0g
ICAgICAgICAgICAgICAgJiYgKCF1cmwucG9ydCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCisgICAgICAgICAgICAgICAg
JiYgKCF1cmwucG9ydCgpIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5wb3J0
KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKICAgICAgICAgICAgICAgICB3aWxsTWFrZUhU
VFBTID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNDQsNyArMjQ0
LDcgQEAgQmxvY2tlZFN0YXR1cyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250
ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZCgKICAgICAgICAgICAgIHdpbGxCbG9ja0Nvb2tp
ZXMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6Ok1ha2VIVFRQUzoKLSAgICAgICAgICAgIGlmICgodXJsLnByb3Rv
Y29sSXMoImh0dHAiKSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSkgJiYgKCF1cmwucG9ydCgpIHx8
IGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2Nv
bCgpKSkpCisgICAgICAgICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwgdXJsLnBy
b3RvY29sSXMoIndzIikpICYmICghdXJsLnBvcnQoKSB8fCBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCiAgICAgICAgICAg
ICAgICAgd2lsbE1ha2VIVFRQUyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rv
cjoKQEAgLTI3NSwxMiArMjc1LDEyIEBAIHZvaWQgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0
KGNvbnN0IEJsb2NrZWRTdGF0dXMmIHN0YXR1cywgUGFnZSogcGFnZSwgUmVzb3VyCiAgICAgaWYg
KHN0YXR1cy5tYWRlSFRUUFMpIHsKICAgICAgICAgY29uc3QgVVJMJiBvcmlnaW5hbFVSTCA9IHJl
cXVlc3QudXJsKCk7CiAgICAgICAgIEFTU0VSVChvcmlnaW5hbFVSTC5wcm90b2NvbElzKCJodHRw
IikpOwotICAgICAgICBBU1NFUlQoIW9yaWdpbmFsVVJMLnBvcnQoKSB8fCBpc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgpLnZhbHVlKCksIG9yaWdpbmFsVVJMLnByb3Rv
Y29sKCkpKTsKKyAgICAgICAgQVNTRVJUKCFvcmlnaW5hbFVSTC5wb3J0KCkgfHwgV1RGOjppc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgpLnZhbHVlKCksIG9yaWdpbmFs
VVJMLnByb3RvY29sKCkpKTsKIAogICAgICAgICBVUkwgbmV3VVJMID0gb3JpZ2luYWxVUkw7CiAg
ICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAgICAgICAgaWYgKG9yaWdpbmFs
VVJMLnBvcnQoKSkKLSAgICAgICAgICAgIG5ld1VSTC5zZXRQb3J0KGRlZmF1bHRQb3J0Rm9yUHJv
dG9jb2woImh0dHBzIikudmFsdWUoKSk7CisgICAgICAgICAgICBuZXdVUkwuc2V0UG9ydChXVEY6
OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woImh0dHBzIikudmFsdWUoKSk7CiAgICAgICAgIHJlcXVl
c3Quc2V0VVJMKG5ld1VSTCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAppbmRleCBh
Mjk2ZmY5N2ZiY2ZlYzkwYjVhNjBjZmVjM2M4MGM0MGU4ZTQxODMzLi4zNGNmYWNhNTAxZmQzYzcy
Yzk2NjdlOGY0YjcwZGUyNzdhYWM1YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApAQCAtMzcs
NyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50TG9hZGVyOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgUmVzb3VyY2VMb2Fk
SW5mbzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCA1ZDM4NmFmZGZiMjk3M2Y2OTYwMjcxY2Yz
Njc5MTJhMWUzNzc0M2U0Li4zNmM3YzY0ZGNiODQyNzAyNDYzMGYwZjc5MTYzMWI3NzhkZGE5ODdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMjAsMTIgKzIwLDEyIEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydGllcy5oCmluZGV4IDNmNGI2NWFiNzI4OGRkMGYzYjE2MWJhNDFiZDUwNWRmMmUz
NzU1MGMuLjM0MjE2M2RiNTAzNjM2MjA0ODNlYmQwMmIzYmNjOTJmZGM2YTI4MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgQ1NTU3R5
bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ29sb3I7CiBjbGFz
cyBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM7Ci1jbGFzcyBVUkw7CiBjbGFzcyBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOwogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xh
c3MgU3R5bGVkRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDRlNDhj
MzA0YTU3NzExZTNmNzc0ODZmM2M5Njc2MmQ2NGZlMWIxMDYuLjIwY2ZjZDcxMTUyNWIzZmRjMDM0
MDhmY2UyNTYzYzQ2MTQzYmVlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAt
NTcsNyArNTcsNiBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEZyYW1lVmlldzsKLWNsYXNzIFVSTDsKIGNsYXNzIEtleWZyYW1lTGlzdDsKIGNs
YXNzIEtleWZyYW1lVmFsdWU7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0LmgKaW5kZXggZThiNWJmYzU2Mjg3YTRkOTgyOGU4OTNkODU3OWNiYThiOGVlYmNj
Mi4uYmFiNGU2Mjc5NDdiNmVlODVkODQ5OTVjM2ZkMDIzNDIxOGQ0MzgxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldC5oCkBAIC0zMCw3ICszMCw2IEBAIGNsYXNzIENTU0ltcG9ydFJ1bGU7CiBjbGFz
cyBNZWRpYUxpc3Q7CiBjbGFzcyBOb2RlOwogY2xhc3MgU3R5bGVTaGVldDsKLWNsYXNzIFVSTDsK
IAogY2xhc3MgU3R5bGVTaGVldCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU2hlZXQ+IHsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAppbmRleCAyYzJiZDEx
N2FlMGE1YjIzZGYyNTAxNGI5ZTViOTMxMDdkOTU4YTQ1Li5kMTEyMDk4NGY1ZjQ0N2E3ZDJmYjQx
N2VmYzgxY2Y5NTZkOWFhM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
aGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5oCkBAIC0yMiwxMCArMjIsMTAgQEAKIAogI2luY2x1ZGUgIkNTU1BhcnNlckNvbnRleHQuaCIK
ICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQu
aAppbmRleCAxZWY3NzExZmQwY2JkYjUxNTIwZmZkYWQ4NjIzNzc3NzY4OTJkMjY0Li5kYmQyMzc3
NTM0YTRjOTg3NTk5YWUxYmNhNGY4YTM3MmM1ZDVkYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaApAQCAtMjcsOSArMjcsOSBAQAogCiAjaW5jbHVk
ZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUg
IlVSTC5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
ODMsNyArODMsNyBAQCBXRUJDT1JFX0VYUE9SVCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBzdHJp
Y3RDU1NQYXJzZXJDb250ZXh0KCk7CiBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dEhhc2ggewogICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGtleSkKICAgICB7
Ci0gICAgICAgIGF1dG8gaGFzaCA9IFVSTEhhc2g6Omhhc2goa2V5LmJhc2VVUkwpOworICAgICAg
ICBhdXRvIGhhc2ggPSBXVEY6OlVSTEhhc2g6Omhhc2goa2V5LmJhc2VVUkwpOwogICAgICAgICBp
ZiAoIWtleS5jaGFyc2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGhhc2ggXj0gU3RyaW5nSGFz
aDo6aGFzaChrZXkuY2hhcnNldCk7CiAgICAgICAgIHVuc2lnbmVkIGJpdHMgPSBrZXkuaXNIVE1M
RG9jdW1lbnQgICAgICAgICAgICAgICAgICA8PCAwCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RydWN0
IENTU1BhcnNlckNvbnRleHRIYXNoIHsKIAogbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTw+IHN0
cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+IDogR2VuZXJpY0hhc2hU
cmFpdHM8V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dD4gewotICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7IG5ldyAo
Tm90TnVsbCwgJnNsb3QuYmFzZVVSTCkgV2ViQ29yZTo6VVJMKFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3Jl
OjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QuYmFzZVVSTCkg
VVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQogICAgIHN0YXRpYyBib29sIGlzRGVs
ZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQmIHZhbHVlKSB7IHJldHVy
biB2YWx1ZS5iYXNlVVJMLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgICBzdGF0aWMg
V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gV2ViQ29yZTo6
Q1NTUGFyc2VyQ29udGV4dChXZWJDb3JlOjpIVE1MU3RhbmRhcmRNb2RlKTsgfQogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCmluZGV4IDg3MWQ1OTkxYjU3
NmJiMzBmNDY1ODc4MTE4NzNkYWY2ZmE1OGJjYTQuLjI1NzVjMGRmMmI4N2M1OTA1ZjdkYmMyY2U2
ZmNjMzU0ZmI3YTk3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
ZGlvbXMuaApAQCAtMzUsOCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVVJMOwogICAgIAogLy8gU3BhY2UgY2hhcmFj
dGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBDU1Mgc3BlY2lmaWNhdGlvbi4KIC8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL2NzczMtc3ludGF4LyN3aGl0ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCmluZGV4IDZkMzlkYTQ1NWQ0MmYzMzgyZGM3NDI1ZGFkODAwN2JmZDY3MDdiOWUuLjYw
ZTNiN2NlNjliZjk4MDg0NjUxMTdjOGE2NDM4NjM5YjE3NDUxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuY3BwCkBAIC00MywxMCArNDMsMTAgQEAKICNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdGF0aWNQ
YXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGVu
dFJlYWRlci5oIgogI2luY2x1ZGUgIldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIgogI2lu
Y2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3
dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0y
NTUsNyArMjU1LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgaWYgKHR5cGUgPT0gInRl
eHQvaHRtbCIpCiAgICAgICAgIHNhbml0aXplZERhdGEgPSBzYW5pdGl6ZU1hcmt1cChkYXRhKTsK
ICAgICBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L3VyaS1saXN0IikgewotICAgICAgICBhdXRvIHVy
bCA9IFVSTFBhcnNlcihkYXRhKS5yZXN1bHQoKTsKKyAgICAgICAgYXV0byB1cmwgPSBVUkwoeyB9
LCBkYXRhKTsKICAgICAgICAgaWYgKHVybC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBzYW5pdGl6
ZWREYXRhID0gdXJsLnN0cmluZygpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAidGV4dC9wbGFp
biIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmNThlYjJlNTljYjBkOGIxMWNiNWE1NjQy
YzAxZTQxZmJiZWM4ZGVmLi44NzI0ZTgxMTRiYjIxNGI1MDJjZWNhOThhYzZmMGMyNzdkMjljZWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMxMzYsNyArMzEzNiw3IEBAIHZvaWQgRG9j
dW1lbnQ6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzCiAKIHZvaWQgRG9jdW1lbnQ6OnNldFVSTChjb25zdCBVUkwmIHVybCkK
IHsKLSAgICBjb25zdCBVUkwmIG5ld1VSTCA9IHVybC5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDog
dXJsOworICAgIGNvbnN0IFVSTCYgbmV3VVJMID0gdXJsLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtV
UkwoKSA6IHVybDsKICAgICBpZiAobmV3VVJMID09IG1fdXJsKQogICAgICAgICByZXR1cm47CiAK
QEAgLTM0MjYsNyArMzQyNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29u
c3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sCiAgICAgICAgICAg
ICAgICAgY29tcGxldGVkVVJMID0gbV91cmw7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsKLSAgICAgICAgICAg
IGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICAgICAgICAgIGlm
ICghV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZWRVUkwpKQogICAgICAgICAgICAg
ICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdCgqdGhpcywg
ZGVsYXksIGNvbXBsZXRlZFVSTCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJlc2ggIiArIG1fdXJsLnN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0byBhIGphdmFzY3JpcHQ6IFVSTCI7CkBAIC00
ODg4LDcgKzQ4ODgsNyBAQCBVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3QKICAgICAvLyBTZWUgYWxzbyBb
Q1NTXVN0eWxlU2hlZXQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpCiAgICAgaWYgKHVybC5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIFVSTCgpOwotICAgIGNvbnN0IFVSTCYgYmFzZVVSTCA9
ICgoYmFzZVVSTE92ZXJyaWRlLmlzRW1wdHkoKSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0gYmxhbmtV
UkwoKSkgJiYgcGFyZW50RG9jdW1lbnQoKSkgPyBwYXJlbnREb2N1bWVudCgpLT5iYXNlVVJMKCkg
OiBiYXNlVVJMT3ZlcnJpZGU7CisgICAgY29uc3QgVVJMJiBiYXNlVVJMID0gKChiYXNlVVJMT3Zl
cnJpZGUuaXNFbXB0eSgpIHx8IGJhc2VVUkxPdmVycmlkZSA9PSBXVEY6OmJsYW5rVVJMKCkpICYm
IHBhcmVudERvY3VtZW50KCkpID8gcGFyZW50RG9jdW1lbnQoKS0+YmFzZVVSTCgpIDogYmFzZVVS
TE92ZXJyaWRlOwogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gVVJMKGJhc2VV
UkwsIHVybCk7CiAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwsIG1fZGVjb2Rlci0+ZW5jb2Rp
bmdGb3JVUkxQYXJzaW5nKCkpOwpAQCAtNzE2Miw5ICs3MTYyLDkgQEAgRG9jdW1lbnQmIERvY3Vt
ZW50OjplbnN1cmVUZW1wbGF0ZURvY3VtZW50KCkKICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8
RG9jdW1lbnQmPigqZG9jdW1lbnQpOwogCiAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpCi0gICAg
ICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIGJs
YW5rVVJMKCkpOworICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNy
ZWF0ZShudWxscHRyLCBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV90ZW1w
bGF0ZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBibGFua1VSTCgpKTsKKyAg
ICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBXVEY6
OmJsYW5rVVJMKCkpOwogCiAgICAgbV90ZW1wbGF0ZURvY3VtZW50LT5zZXRDb250ZXh0RG9jdW1l
bnQoY29udGV4dERvY3VtZW50KCkpOwogICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0VGVtcGxh
dGVEb2N1bWVudEhvc3QodGhpcyk7IC8vIGJhbGFuY2VkIGluIGR0b3IuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IGE3OTZiNDkwN2MxMjE1OGMwNmJmYTYyNTMxZDhmMTdlY2UwYWFjNDIuLjFkOWNm
ODQ0ODNjNGUxYmIzOWFlMjk3MzQ2NDczYTFjZTYzMzViYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC02NzEsNyArNjcxLDcgQEAgY2xhc3MgRG9jdW1lbnQKIAogICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KICAgICB2b2lkIHNldFVSTChjb25zdCBV
UkwmKTsKLSAgICBjb25zdCBVUkwmIHVybEZvckJpbmRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV91
cmwuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmxG
b3JCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtV
UkwoKSA6IG1fdXJsOyB9CiAKICAgICAvLyBUbyB1bmRlcnN0YW5kIGhvdyB0aGVzZSBjb25jZXB0
cyByZWxhdGUgdG8gb25lIGFub3RoZXIsIHBsZWFzZSBzZWUgdGhlCiAgICAgLy8gY29tbWVudHMg
c3Vycm91bmRpbmcgdGhlaXIgZGVjbGFyYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
ZDkxZmU0MzE1ZTYyNmYxNDBkYzY4YmU1OTU3ZjZhMDRkNmY0NjAwNy4uOGIzN2I5ZmYzMmY2Yzhh
NTk4YWYyNmVlYWEwMjgwNTZhMzRjNDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTcx
OSw3ICsxNzE5LDcgQEAgYm9vbCBFbGVtZW50Ojppc0V2ZW50SGFuZGxlckF0dHJpYnV0ZShjb25z
dCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKIAogYm9vbCBFbGVtZW50Ojppc0phdmFTY3Jp
cHRVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgcHJvdG9jb2xJc0phdmFTY3JpcHQo
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZS52YWx1ZSgpKSk7Cisg
ICAgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgV1RGOjpwcm90b2NvbElzSmF2
YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlLnZhbHVl
KCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzdHJpcFNjcmlwdGluZ0F0dHJpYnV0ZXMoVmVjdG9y
PEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXggOGVlYzI2YTlkNTQ0ZTEzODQ2ZDhhNDA0
Mzk2NWZjZDcwNWUyMDQ3MC4uYzI3ZmRlNDhkNjYwYmQ1OWRjNjJmYTQzYmNhZDY1YjRiYWIwNTZm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgc3RhdGljIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dEZvckVs
ZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBzaGFkb3dSb290ID0g
ZWxlbWVudC5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIC8vIFVzZXIgYWdlbnQgc2hhZG93
IHRyZWVzIGNhbid0IGNvbnRhaW4gZG9jdW1lbnQtcmVsYXRpdmUgVVJMcy4gVXNlIGJsYW5rIFVS
TCBhcyBiYXNlIGFsbG93aW5nIGNyb3NzLWRvY3VtZW50IHNoYXJpbmcuCi0gICAgYXV0byYgYmFz
ZVVSTCA9IHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jvb3RNb2Rl
OjpVc2VyQWdlbnQgPyBibGFua1VSTCgpIDogZWxlbWVudC5kb2N1bWVudCgpLmJhc2VVUkwoKTsK
KyAgICBhdXRvJiBiYXNlVVJMID0gc2hhZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0g
U2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCA/IFdURjo6YmxhbmtVUkwoKSA6IGVsZW1lbnQuZG9j
dW1lbnQoKS5iYXNlVVJMKCk7CiAKICAgICBDU1NQYXJzZXJDb250ZXh0IHJlc3VsdCA9IENTU1Bh
cnNlckNvbnRleHQgeyBlbGVtZW50LmRvY3VtZW50KCksIGJhc2VVUkwsIGVsZW1lbnQuZG9jdW1l
bnQoKS5jaGFyYWN0ZXJTZXRXaXRoVVRGOEZhbGxiYWNrKCkgfTsKICAgICBpZiAoc2hhZG93Um9v
dCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAppbmRleCBhNTIwMmQ1YzVkYWNlZTgyODk2YzRlMDM3Mjc0NzE1N2Y5ODYxOTgz
Li5mM2RlNzAxZDZkNGJhODQ1NjE3MmY2NjQzYzYxZjk1MTRhZTM0YTYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBEb2N1bWVudCogTm9kZTo6b3duZXJEb2N1bWVudCgp
IGNvbnN0CiBjb25zdCBVUkwmIE5vZGU6OmJhc2VVUkkoKSBjb25zdAogewogICAgIGF1dG8mIHVy
bCA9IGRvY3VtZW50KCkuYmFzZVVSTCgpOwotICAgIHJldHVybiB1cmwuaXNOdWxsKCkgPyBibGFu
a1VSTCgpIDogdXJsOworICAgIHJldHVybiB1cmwuaXNOdWxsKCkgPyBXVEY6OmJsYW5rVVJMKCkg
OiB1cmw7CiB9CiAKIGJvb2wgTm9kZTo6aXNFcXVhbE5vZGUoTm9kZSogb3RoZXIpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCA1MmRhNmQxMWEwMTBmZjQzYTM2OTU1NWFmNzc5OTQ2MWJjYTJhNThiLi4x
MjQzOWQ3OGQzNWM0YzI4MjFhNzI1NGQwMzIxNDUwMzVmYjQ3ZjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAg
LTMxLDExICszMSwxMSBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5j
bHVkZSAiU3R5bGVWYWxpZGl0eS5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgotI2luY2x1ZGUg
IlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIC8vIFRoaXMgbmVlZHMgdG8g
YmUgaGVyZSBiZWNhdXNlIERvY3VtZW50LmggYWxzbyBkZXBlbmRzIG9uIGl0LgogI2RlZmluZSBE
VU1QX05PREVfU1RBVElTVElDUyAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAppbmRleCBh
NjFkYWQ0NWU5ZTQ0NGZhMzIyZTU5ODIyYjRlOGU2YjFlOGY2ZGI3Li42MjQ1NGU3OTNjYjEzMzRm
NjRjY2YzYmUyMDk1ZDMzY2E5YTcyYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgK
QEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIExvYWRhYmxlTW9kdWxlU2Ny
aXB0OwogY2xhc3MgUGVuZGluZ1NjcmlwdDsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7Ci1jbGFz
cyBVUkw7CiAKIGNsYXNzIFNjcmlwdEVsZW1lbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggM2JkZmNjODBkYmU2ZTZhZGFkNTg3
N2QxZmVlMzAxMTI3Mzc2ZDU2My4uNGIyM2Y0N2Y3ZGUzZGJlMGRmY2NhNGJhYzI3ZjA0NTI2OWZm
ODAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBA
IC02OCw3ICs2OCw2IEBAIGNsYXNzIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNvY2tldFByb3ZpZGVy
OwotY2xhc3MgVVJMOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogY2xhc3MgU2Vydmlj
ZVdvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAppbmRleCA5ZjIxNWZiYTFi
NTNmMjU2MTVjYzBkYTNjYzczNDIwNTAxMjVhY2E1Li5jMGNjOGUyMTEwOWQ2M2JmNGEzMmU5YjVh
N2M0ZjE5NWE0ODA3MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCkBAIC0z
Nyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW5Qb2xpY3k7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7
Ci1jbGFzcyBVUkw7CiAKIGVudW0gU2FuZGJveEZsYWcgewogICAgIC8vIFNlZSBodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNhdHRyLWlmcmFtZS1zYW5k
Ym94IGZvciBhIGxpc3Qgb2YgdGhlIHNhbmRib3ggZmxhZ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKaW5kZXggNjdlN2VlZWM0OWM4ODdiNjYxZTQ1NTUwN2ZhMGM4MjFmN2VjNjA5Zi4uMTY4
NjI5MDVmYTYyZTI2YjcwMjJiMWYxMTNjZjNkOTkyMGE0YWJmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcApAQCAtMTUxMCw5ICsxNTEwLDkgQEAgdm9pZCBFZGl0b3I6OmNvcHlVUkwoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQK
ICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRVUkwpOwogfQogCi1QYXN0ZWJvYXJkV3Jp
dGVyRGF0YTo6VVJMIEVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkKK1Bhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkxEYXRhIEVkaXRv
cjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKIHsKLSAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMIHJlc3VsdDsKKyAgICBQYXN0ZWJv
YXJkV3JpdGVyRGF0YTo6VVJMRGF0YSByZXN1bHQ7CiAKICAgICByZXN1bHQudXJsID0gdXJsOwog
ICAgIHJlc3VsdC50aXRsZSA9IHRpdGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNmZm
Mjg2NmIxNDhmZGY0ZmY5MjA1Y2QzZGZmOTRlZDAyYmVjOTUzYi4uZmMyNTQwMzIyOTIxZGYyZmJl
NzYxZWM2NjliNDM2MTI4Mjg2Mzc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0xNzAs
NyArMTcwLDcgQEAgY2xhc3MgRWRpdG9yIHsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29w
eVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICB2b2lkIGNvcHlVUkwo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYpOwotICAgIFBhc3Rl
Ym9hcmRXcml0ZXJEYXRhOjpVUkwgcGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIHRpdGxlKTsKKyAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMRGF0YSBwYXN0
ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogI2lmICFQ
TEFURk9STShJT1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5SW1hZ2UoY29uc3QgSGl0
VGVzdFJlc3VsdCYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNj
dW11bGF0b3IuY3BwCmluZGV4IDM1M2RiYTY5Mjc0OWIxOGNiYTkxMzE1NDAxZmFmYWVjNGJmMDM4
NTEuLmZkN2Y4YTgxODE4MjQzYzE2Mjg2ZmNhNzhjMDNmNDAzNjJkODZkOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUg
IlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCkBAIC0yMzIsNyArMjMyLDcg
QEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUo
U3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb24KICAgICBjb25zdCBTdHJpbmcgcmVzb2x2ZWRVUkxT
dHJpbmcgPSByZXNvbHZlVVJMSWZOZWVkZWQoZWxlbWVudCwgYXR0cmlidXRlLnZhbHVlKCkpOwog
ICAgIFVDaGFyIHF1b3RlQ2hhciA9ICciJzsKICAgICBTdHJpbmcgc3RyaXBwZWRVUkxTdHJpbmcg
PSByZXNvbHZlZFVSTFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBpZiAocHJvdG9jb2xJ
c0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJ
c0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcpKSB7CiAgICAgICAgIC8vIG1pbmltYWwgZXNj
YXBpbmcgZm9yIGphdmFzY3JpcHQgdXJscwogICAgICAgICBpZiAoc3RyaXBwZWRVUkxTdHJpbmcu
Y29udGFpbnMoJyInKSkgewogICAgICAgICAgICAgaWYgKHN0cmlwcGVkVVJMU3RyaW5nLmNvbnRh
aW5zKCdcJycpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRh
RGV0ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
aAppbmRleCBmMjVmYWFlMzc1NzA2MTFlN2RmMjI5ZWU4YWYxMzNmNDVkYWFmN2Y0Li4xNTA0ZjZm
MzRmN2UxNWZjYTJjNzBiNDQzNzZhMTY4OGM0ZjU3Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaApAQCAtNDEsNyArNDEsNiBAQCBjbGFzcyBFbGVt
ZW50OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIFJhbmdl
OwotY2xhc3MgVVJMOwogCiBlbnVtIERhdGFEZXRlY3RvclR5cGVzIHsKICAgICBEYXRhRGV0ZWN0
b3JUeXBlTm9uZSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQppbmRleCBhZjYxZjM2YjhiNDhlZDhhMjdhYjBmZDVlYjhiM2ViNjFkYWZlNGQ1Li5lYzM3
OTVmZTY2ZTIwNTc1M2YzNmQ3NjZmZDI2NzEzN2JmNDEzZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTUxLDExICs1MSwxMSBAQAogI2ltcG9y
dCAiUmVuZGVyU3R5bGUuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIldlYkNvbnRlbnRS
ZWFkZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAibWFya3Vw
LmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHd0Zi9C
bG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBFZGl0b3I6
OnJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcg
KmF0dHJpYnV0ZWQKIAogU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJM
JiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7Cisg
ICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAogUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3Ry
aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbQppbmRleCBjNWE4OGYzYWQ1YWY0YmRhY2UxMzY0MDg5MGQ3Y2EwOTlkNGJm
MjM2Li5kNTdmMWFlNTYzMTRkMjljMjgzMGMxZDJjNGI3MmUwNDdmMGQzOTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bQpAQCAtNTQsNyArNTQsNiBAQAogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvY2tl
dFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIK
LSNpbXBvcnQgIlVSTFBhcnNlci5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJX
ZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIuaCIKQEAgLTYyLDYgKzYxLDcgQEAK
ICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRT
dHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VS
TFBhcnNlci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkxvY2FsRGVmYXVsdFN5
c3RlbUFwcGVhcmFuY2UuaCIKQEAgLTI4OCw3ICsyODgsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogCiAgICAgICAgIGF1dG8gbmFtZSA9IGltYWdlLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgbmFtZSA9IFVSTFBhcnNlciB7IHJlc291cmNlVVJMU3RyaW5nIH0ucmVz
dWx0KCkubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgICAgIG5hbWUgPSBVUkwoeyB9LCBy
ZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYgKG5hbWUu
aXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygibWVkaWEiKTsKIApA
QCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRh
Y2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChy
ZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgYXV0byBuYW1lID0gVVJMUGFyc2VyIHsgcmVzb3VyY2VVUkxTdHJpbmcgfS5y
ZXN1bHQoKS5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBhdXRvIG5hbWUgPSBVUkwoeyB9
LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygiZmlsZSIpOwog
CkBAIC01MTgsNyArNTE4LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2
ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBTdHJpbmcgc2FuaXRpemVkTWFya3VwID0gc2Fu
aXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgKmZyYW1lLmRvY3VtZW50KCksICpyZXN1bHQs
IG1zb0xpc3RRdWlya3NGb3JNYXJrdXAoKSwgWyZdIChjb25zdCBTdHJpbmcmIHR5cGUpIHsKICAg
ICAgICAgcmV0dXJuIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhblNob3dNSU1FVHlwZUFzSFRN
TCh0eXBlKTsKICAgICB9KTsKLSAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1
cCgqZnJhbWUuZG9jdW1lbnQoKSwgc2FuaXRpemVkTWFya3VwLCBibGFua1VSTCgpLCBEaXNhbGxv
d1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOworICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBzYW5pdGl6ZWRNYXJrdXAsIFdURjo6Ymxh
bmtVUkwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KTsKIAogICAgIGlmICgh
ZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbQppbmRleCBmMWNkNTNjOWUzMzhkMWFhYWY1MzBhOTA4MTE4ZmZlMDg4YjI4
MjRmLi40NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJmMjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC01MiwxMSArNTIsMTEgQEAKICNpbXBv
cnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5o
IgogI2ltcG9ydCAiV2ViQ29udGVudFJlYWRlci5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0
cmFzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQg
Im1hcmt1cC5oIgogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8cGFsL3N5c3Rl
bS9Tb3VuZC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMjUzLDcgKzI1Myw3IEBAIFN0cmluZyBFZGl0b3I6OnBsYWluVGV4
dEZyb21QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgLy8g
RklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdlIGtub3cg
LVtOU1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxsIHRoZSBz
YW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRpbmcgYW4g
TlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0gICAgICAgIHN0cmluZyA9IHVzZXJWaXNpYmxl
U3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworICAgICAgICBzdHJpbmcgPSBX
VEY6OnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOwogCiAg
ICAgLy8gRklYTUU6IFdURiBzaG91bGQgb2ZmZXIgYSBub24tTWFjLXNwZWNpZmljIHdheSB0byBj
b252ZXJ0IHN0cmluZyB0byBwcmVjb21wb3NlZCBmb3JtIHNvIHdlIGNhbiBkbyBpdCBmb3IgYWxs
IHBsYXRmb3Jtcy4KICAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21wb3NlZFN0
cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIEVkaXRv
cjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50
JiBpbWFnZUVsZW1lbgogICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0
ID0gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoaW1hZ2VFbGVtZW50KTsKICAgICBwYXN0ZWJvYXJk
SW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxlID0gdGl0
bGU7Ci0gICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSB1c2VyVmlzaWJs
ZVN0cmluZyhwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCk7CisgICAgcGFzdGVib2FyZEltYWdlLnVy
bC51c2VyVmlzaWJsZUZvcm0gPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRJbWFn
ZS51cmwudXJsKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1h
Z2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5
cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKaW5kZXggZjBlMGQ4NjVjOGJjN2RjZGIxMzU4MTRjMDdkMjQ0NWE5ZGE3Y2Nm
NC4uOTE0YjgwY2I1ODNjMzk4ZDZhOTU4ZDdhNzU3NWNhZTI4MDVmNTI3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcApAQCAtNzMsMTEgKzczLDExIEBACiAjaW5jbHVkZSAiU3R5bGVQcm9w
ZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVVJM
UGFyc2VyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlZpc2li
bGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50
PiYmIGZyYWdtZW50LCBXVEY6OkZ1bmN0CiAgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBh
dHRyaWJ1dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGZvciBzcmNzZXQuCiAgICAgICAgICAgICBpZiAoZWxl
bWVudC5hdHRyaWJ1dGVDb250YWluc1VSTChhdHRyaWJ1dGUpICYmICFhdHRyaWJ1dGUudmFsdWUo
KS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBVUkwgdXJsID0gVVJMUGFyc2VyIHsgYXR0
cmlidXRlLnZhbHVlKCkgfS5yZXN1bHQoKTsKKyAgICAgICAgICAgICAgICBVUkwgdXJsKHsgfSwg
YXR0cmlidXRlLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZW1vdmVVUkwo
dXJsKSkKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlc1RvUmVtb3ZlLmFwcGVuZCh7IGVs
ZW1lbnQsIGF0dHJpYnV0ZS5uYW1lKCkgfSk7CiAgICAgICAgICAgICB9CkBAIC05NTEsNyArOTUx
LDcgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYKIAogICAgIGZyYWdtZW50LT5wYXJzZUhUTUwo
bWFya3VwLCBmYWtlQm9keS5wdHIoKSwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAgcmVzdG9y
ZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQoZnJhZ21lbnQpOwotICAgIGlmICghYmFzZVVS
TC5pc0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBibGFua1VSTCgpICYmIGJhc2VVUkwgIT0gZG9jdW1l
bnQuYmFzZVVSTCgpKQorICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBX
VEY6OmJsYW5rVVJMKCkgJiYgYmFzZVVSTCAhPSBkb2N1bWVudC5iYXNlVVJMKCkpCiAgICAgICAg
IGNvbXBsZXRlVVJMcyhmcmFnbWVudC5wdHIoKSwgYmFzZVVSTCk7CiAKICAgICByZXR1cm4gZnJh
Z21lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCBiNTUwYThmNjdmMzlkZmEzYWFlODkw
NWQ4YTBkMmYyNWNmOTA0YTg3Li5iMDQ4Y2E4MjMzMjc1MGJmYWJlODRhY2YxOWQ0YjUxY2QwZDJi
Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3MgRG9j
dW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxF
bGVtZW50OwotY2xhc3MgVVJMOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBRdWFs
aWZpZWROYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVT
dHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmlu
ZGV4IDYzYjFlMGU1NzQxMWQwNjMzYzQxOThmNGFlMDkzNTNhMDM1NTEyN2UuLjczYTM2NTIyODc5
OWMxNmI5YTk4OGQ5YTExODllMGNmOTM4MGZlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKIAogI2luY2x1ZGUgIkZpbGVT
dHJlYW0uaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9N
ZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCmluZGV4IDRm
MGU3YjI3NzcxN2ExOWNjMjcwZGYyZTk2M2FiZWVmOTNmM2YzNTMuLjYyY2FmZmUyZDk4YWQxZDVk
MTBmNGVkNjg4MTdkYTkwNDk0ZWExNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0Zp
bGVTdHJlYW0uaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZpbGVTdHJlYW1DbGllbnQ7CiBjbGFzcyBGaWxlU3RyZWFtOwotY2xhc3MgVVJMOwogCiBjbGFz
cyBXRUJDT1JFX0VYUE9SVCBBc3luY0ZpbGVTdHJlYW0gewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuaAppbmRleCAyMDEzOWM0YzEyYTE0OTNlMDUzOGRjOWFiOTUxNjNiMTQ5OGNmOTYyLi45MGQ0
NjU2OTk3MzAxMjU4ZWU4NjgyOGU5YWI2MDc4YWMzZjg5YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
aApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlByb3BlcnR5QmFnLmgiCiAjaW5j
bHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKaW5kZXggYzZkZmVlNjU1MDE1M2UyYmY0
ODhhMjdjYzVhZThlMjBlOThlMDQ2MS4uMTQ2YzBkYjA0OWQ3MTU0OGQwZmMyZDg4OWU0NmJiNmY1
NTY0OWFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCkBAIC0zMiw3ICszMiw3IEBA
CiAKICNpbmNsdWRlICJCbG9iVVJMLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvVVVJ
RC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JV
UkwuaAppbmRleCAzNTllYWFmN2YyYTI2NjdiOGIyMmY3YTM1MDMyYTE1NzFkNjcyMGM0Li4zZDBh
ZTExYzEwMzllMzQ4NGUwZWRmNzAwOTc3N2JmMmViZjliZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2JVUkwuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5oCmluZGV4IDU3NWYwZTc2ZDA5YTlkM2U1N2YyNThhZWNiZWYzMWYzNjBhNDhk
ZjAuLmRhMmU4YmNhMzUyY2EzZmM3ZWM3Y2I0NTYyZDc5YmJiNzI4YmYwNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5oCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgVVJMOwotCiBjbGFzcyBGaWxlIGZpbmFsIDogcHVibGljIEJsb2IgewogcHVibGljOgogICAg
IHN0cnVjdCBQcm9wZXJ0eUJhZyA6IEJsb2JQcm9wZXJ0eUJhZyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCmluZGV4IGYzZGM2YzQ3OGM5ODAwNGE3YjEzNDBjMzI5
ZWQ2ODgwOGI3MjE4ZjAuLjFmNzc3OGU4ODllMzkzZDdmYjk2OTQ0M2NlOGViZTIxMjc0ZDRhMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCkBAIC0zMiw3ICsz
Miw3IEBACiAKICNpbmNsdWRlICJCbG9iUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGaWxl
RXJyb3IuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IDQyNDZkN2VlYTBiMGU3M2I1MDlmYmM4MGQyNDFl
MWNmZjk2MjA5YzIuLmE5Yzc5ZmUyMjkyZjg5NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBA
IC0zNiw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2JQYXJ0Owot
Y2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFRocmVhZGFibGVCbG9i
UmVnaXN0cnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCmluZGV4IGUwYmU1NzFh
MjkwNjgzMjViYTE3ZWNmM2ViZGZlYjg2YjZiZDgxOTguLjI5OGY3ODI4MzFhNjk2OTg2MzhmYzU5
MmQyZjYzMDU0NjNhMzA0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKQEAg
LTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNjcmlwdENh
Y2hlZEZyYW1lRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9IaXN0b3J5SXRlbS5oCmluZGV4IGU3MmI1ODkzOTQ5ODFlY2VjNDEwN2Y2ZDYyYjc3Yzlk
NzQzODM1MWQuLjIwYTM5NzMzZjg1MzNhOTAzNGU2NTZiYTdmN2FiMGEwNTQ4MmY0YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTU0LDcgKzU0LDYgQEAgY2xhc3MgRm9y
bURhdGE7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEltYWdlOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQcnVuaW5nUmVhc29uOwogCiBXRUJDT1JF
X0VYUE9SVCBleHRlcm4gdm9pZCAoKm5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCkoSGlzdG9yeUl0
ZW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAppbmRleCBhNzdiY2Q3MDcyM2YzY2Y5Y2ExMTY4MmU0
NDZlZGZlODdkODEzOGY4Li4wYTA4YjU5NDY4NjU3MzJmMjhkYTMwZmI3ZjYzY2E0ZDMxNGVhOTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZjxET01VUkw+PiBET01VUkw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgRE9NVVJM
JiBiYXNlKQogCiBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9NVVJMOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiB1cmwpCiB7Ci0gICAgVVJMIGJhc2VVUkwgeyBibGFua1VSTCgpIH07CisgICAgVVJM
IGJhc2VVUkwgeyBXVEY6OmJsYW5rVVJMKCkgfTsKICAgICBVUkwgY29tcGxldGVVUkwgeyBiYXNl
VVJMLCB1cmwgfTsKICAgICBpZiAoIWNvbXBsZXRlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9ET01VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKaW5kZXggNTkwMjVj
MmZiOTZmMDI5OWFkOTE3ZTYxN2IyOTExYzMxYWI5MWQzNC4uZDMxM2Q3YTQ0NGQ4ZWE1NTM0ZjAw
M2Y0NDUwZmRkYTBkNDYzNTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01V
UkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCkBAIC0yNyw3ICsyNyw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFV0aWxzLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5jcHAKaW5kZXggOWI5OWEzNDczMDk3MmQ0ZGQ3OTljMDgxYTBmOThmNjM3N2FiNWFkMC4uMzA0
OGI0OTBmYTUzZjNmZDQxNTFlMDIxMDQzNmM2NGZhOTQ3MTQ3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKQEAgLTM3LDggKzM3LDggQEAKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTdWJmcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxB
bGxvd2VkKGNvbnN0IFVSTCYgY29tcGxldGVVUkwpIGNvbnN0CiAgICAgaWYgKGNvbXBsZXRlVVJM
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29tcGxldGVVUkwpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3Jp
cHQoY29tcGxldGVVUkwpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gY29udGVudERvYyA9
IHRoaXMtPmNvbnRlbnREb2N1bWVudCgpOwogICAgICAgICBpZiAoY29udGVudERvYyAmJiAhU2Ny
aXB0Q29udHJvbGxlcjo6Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4oY29udGVudERvYy0+ZnJh
bWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQg
SFRNTEZyYW1lRWxlbWVudEJhc2U6Om9wZW5VUkwoTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExv
Y2tCYWNrRm9yd2FyZExpc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fVVJMLmlzRW1w
dHkoKSkKLSAgICAgICAgbV9VUkwgPSBibGFua1VSTCgpLnN0cmluZygpOworICAgICAgICBtX1VS
TCA9IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKTsKIAogICAgIFJlZlB0cjxGcmFtZT4gcGFyZW50
RnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFwYXJlbnRGcmFtZSkKQEAgLTE3
OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbihjb25z
dCBTdHJpbmcmIHN0cikKIAogdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TG9jYXRpb24o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG5ld0xvY2F0aW9uKQogewotICAg
IGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFj
ZXMobmV3TG9jYXRpb24pKSkgeworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhuZXdMb2NhdGlvbikpKSB7CiAgICAgICAg
IGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgY29u
dGVudERvY3VtZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMjMyYjNkY2IzMDMxODg5ZGM4MjZmOTg3ZDJi
ZDZmYjA4NzU4ZTliNS4uYjFjY2Q3NTU3NTAwZmExYWI3NjBlMTI0MDAyM2EzYTllZmE2ZDM3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDYgQEAg
Y2xhc3MgSWNvbjsKIGNsYXNzIElucHV0VHlwZTsKIGNsYXNzIExpc3RBdHRyaWJ1dGVUYXJnZXRP
YnNlcnZlcjsKIGNsYXNzIFJhZGlvQnV0dG9uR3JvdXBzOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3Qg
RGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKaW5kZXggNTEwZjRjZmI2MzZkOWRhMTFlMjU4ZjllZTNhNDJmZWQ2ZWZkMzZjZC4uNjgy
OGY5MzQzYjU3MjQwOTVkYjYwMjE3NDI2ODc2NTQwNzBjZGY4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRE9NVG9rZW5MaXN0OwogY2xhc3MgSFRNTExpbmtFbGVtZW50OwotY2xhc3MgVVJM
Owogc3RydWN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjbGFzcyBFdmVudFNlbmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDljMDliMDk0ODM5OTU1MTE1ODNkYjUxMjVkM2VjN2M3MzRjZGM2MGIuLjc3ZDBj
YmZiN2Q0ODA0YjcyMWIyM2Q0NDNlMDdiMDc2ZmM0NjliNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTY4LDggKzE2OCw4IEBACiAKIG5hbWVzcGFjZSBX
VEYgewogdGVtcGxhdGUgPD4KLXN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpVUkw+IHsKLSAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQorc3RydWN0
IExvZ0FyZ3VtZW50PFVSTD4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVVJM
JiB1cmwpCiAgICAgewogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gNTEyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggMzIxM2M0NGFkYmYyOGYy
NzBiNTI2MGRjYTEzMDU1ZGU4YWE0M2Q5Yi4uOWU1YzI3Nzc3ZDY5M2U0ZjY0YmVmMWI3MzEyNTgz
OTVjNGFkMjMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1h
Z2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojppc0ltYWdlVHlwZSgpCiBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFsbG93ZWRUb0xv
YWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVUkwgY29tcGxldGVVUkwgPSBk
b2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7Ci0gICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIHBy
b3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKSAmJiAhZG9jdW1lbnQoKS5zZWN1cml0eU9y
aWdpbigpLmNhbkFjY2Vzcyhjb250ZW50RG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCisg
ICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxl
dGVVUkwpICYmICFkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzKGNvbnRlbnRE
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHJldHVybiBkb2N1bWVudCgpLmZyYW1lKCktPmlzVVJMQWxsb3dlZChjb21wbGV0ZVVSTCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKaW5kZXggMjdhNDg5ZDRmNjU3YjZlNjlkYzRlOTlm
OWQ0ZGM5YjY5ZDdiY2M3Ny4uMTIwMGI4NzgxNjQ2ZjYxYTZmNzBjNDZiOTliY2M4ZWZjZjY1YWQx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaApAQCAtNDQsNyArNDQsNiBAQCBjbGFzcyBJ
bnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFBlbmRpbmdJbWFnZUJpdG1hcDsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgSW1hZ2VCaXRtYXBP
cHRpb25zOwogCiBjbGFzcyBJbWFnZUJpdG1hcCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1
YmxpYyBSZWZDb3VudGVkPEltYWdlQml0bWFwPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFGcmFnbWVudFVSSVBhcnNlci5oCmluZGV4IDdjNzczNmMzNGViY2Y2NGQ5NDU2MDNkY2Q4NjM5
MzllOGRiMzdlNGMuLjEwYTJhMGQwZjUyMjRiMDUwYWQ1YzdmNGQxZDY1NmFmZWU4M2M3ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCkBAIC0yNywx
NCArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xh
c3MgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBmaW5hbCB7CiBwdWJsaWM6CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAppbmRleCBjZjE4NmMwYmE0MDBlMmEzYzIz
MDRjYzc5ZmZhZGJhOGFmM2FhMzYxLi43M2I1NDczNTc4ZTNiMGIzMWVhZjk1ZGE0MGMyMGFjMDk5
YzA3MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTI2
LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlB1YmxpY1VSTE1h
bmFnZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSAiVVJMUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKaW5kZXggZTMyNjU0NWRjY2I0OWJmYTZj
NWFmZjkyM2EyYzVlMGMwZmE3NzVhNC4uZTY5ZGU0ZWQ4YzgzYmI4YThkYzRkMzY2ODYyMmNkM2Zk
ZDUzN2U3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKQEAgLTMzLDcg
KzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdp
c3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcAppbmRleCA2Y2EwYWMxYTIwMTNj
ZjZkNWQ4ZGM1YzBlYTAzYjIxMTc5MmYxOTVlLi42M2JiM2NjMjYwMWEwNDNkMTQ5YzQ1YTI5ZWMx
OGRhMTQwYjVhZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwCkBAIC0zNiw3
ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIklucHV0
VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1VSTFJlZ2lzdHJ5LmgKaW5kZXggYmQ3NzJjZTVmMTdhNmI4N2RjMmY0NjI1YjcxYmUw
MTEwM2MzNzc0My4uODIyM2JiZDA3NTkwZGRhY2NlOWZkMTYwNGUzYWMwYmMwMTVmNjRhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaApAQCAtMzQsNyArMzQsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVVJM
UmVnaXN0cnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFy
YW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcAppbmRleCAz
MGU4NTkyNGE3ODUyMGQ2NTkyMDkxYWQyZDMzYzA0MjBjZmVkZDQzLi40ZTdmYmFlZmRmMGE0MTZj
YzY1NGFhNzNkNTliN2JlODBiNDFkMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFNlYXJjaFBhcmFtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQ
YXJhbXMuY3BwCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpbmNsdWRlICJVUkxTZWFyY2hQYXJhbXMu
aCIKIAogI2luY2x1ZGUgIkRPTVVSTC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgorI2luY2x1
ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBVUkxTZWFyY2hQ
YXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhjb25zdCBTdHJpbmcmIGluaXQsIERPTVVSTCogYXNzb2Np
YXRlZFVSTCkKICAgICA6IG1fYXNzb2NpYXRlZFVSTChhc3NvY2lhdGVkVVJMKQotICAgICwgbV9w
YWlycyhpbml0LnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9y
bShTdHJpbmdWaWV3KGluaXQpLnN1YnN0cmluZygxKSkgOiBVUkxQYXJzZXI6OnBhcnNlVVJMRW5j
b2RlZEZvcm0oaW5pdCkpCisgICAgLCBtX3BhaXJzKGluaXQuc3RhcnRzV2l0aCgnPycpID8gV1RG
OjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhpbml0KS5zdWJzdHJp
bmcoMSkpIDogV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oaW5pdCkpCiB7CiB9
CiAKQEAgLTEzMywyMCArMTMzLDIwIEBAIHZvaWQgVVJMU2VhcmNoUGFyYW1zOjpyZW1vdmUoY29u
c3QgU3RyaW5nJiBuYW1lKQogCiBTdHJpbmcgVVJMU2VhcmNoUGFyYW1zOjp0b1N0cmluZygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOworICAgIHJl
dHVybiBXVEY6OlVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOwogfQogCiB2b2lkIFVSTFNl
YXJjaFBhcmFtczo6dXBkYXRlVVJMKCkKIHsKICAgICBpZiAobV9hc3NvY2lhdGVkVVJMKQotICAg
ICAgICBtX2Fzc29jaWF0ZWRVUkwtPnNldFF1ZXJ5KFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFp
cnMpKTsKKyAgICAgICAgbV9hc3NvY2lhdGVkVVJMLT5zZXRRdWVyeShXVEY6OlVSTFBhcnNlcjo6
c2VyaWFsaXplKG1fcGFpcnMpKTsKIH0KIAogdm9pZCBVUkxTZWFyY2hQYXJhbXM6OnVwZGF0ZUZy
b21Bc3NvY2lhdGVkVVJMKCkKIHsKICAgICBBU1NFUlQobV9hc3NvY2lhdGVkVVJMKTsKICAgICBT
dHJpbmcgc2VhcmNoID0gbV9hc3NvY2lhdGVkVVJMLT5zZWFyY2goKTsKLSAgICBtX3BhaXJzID0g
c2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShT
dHJpbmdWaWV3KHNlYXJjaCkuc3Vic3RyaW5nKDEpKSA6IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNv
ZGVkRm9ybShzZWFyY2gpOworICAgIG1fcGFpcnMgPSBzZWFyY2guc3RhcnRzV2l0aCgnPycpID8g
V1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhzZWFyY2gpLnN1
YnN0cmluZygxKSkgOiBXVEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShzZWFyY2gp
OwogfQogCiBzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4g
VVJMU2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKaW5k
ZXggYTA3YzA4MTRmMTFlMTcxMTg0NTAzZTZhYTZhYWFkNmMwNDdkNDc1YS4uNjU2YWJmYmRhMGJk
YmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaApAQCAt
MTc0LDcgKzE3NCw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICAgICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAiIGlm
IGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCiAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBv
cnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgJzAnKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJs
LnByb3RvY29sKCkpKQorICAgICAgICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFu
ZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgcG9y
dEVuZCkpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBvcnQoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIw
IiBpZiBpdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nLgogICAgIC8vIEZJWE1FOiBodHRwOi8vdXJs
LnNwZWMud2hhdHdnLm9yZy8gZG9lc24ndCBhcHBlYXIgdG8gcmVxdWlyZSB0aGlzOyB0ZXN0IHdo
YXQgYnJvd3NlcnMgZG8KICAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50KCk7Ci0gICAg
aWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAg
aWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkK
ICAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKICAgICBlbHNlCiAgICAgICAgIHVybC5zZXRQb3J0
KHBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCBjMzQ2MTAyMTVlNTY5ZmU3YWExMTljYTUyMTZhN2Q4M2Ux
NTU2MjI5Li5kNzcyM2VkZGVkZmFjODVhZWQ5ODNjNWE1NDFkNGMwMDIyZDM1Zjk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1h
Z2VCaXRtYXAuaCIKICNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDgxY2I1NWQ3N2UzMTgwNTY0NDcwNzc3N2Ex
ZTI5OTU2ZjQ0M2Y2NTguLjk4ZWM0NjJlZmViMzk1YjlhN2U5YzM5OTcwMThlYWFkNWVmN2ZjNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFz
cyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEltYWdl
Qml0bWFwOwotY2xhc3MgVVJMOwogY2xhc3MgV2ViR0xPYmplY3Q7CiAKIGNsYXNzIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggNjc0ZGViYzY5OGRi
OWI3MDAyZWI0MDUyMzM1YjllNmRiODFiNjRhMy4uNDIzMDkyNjhlOWJkZDA5NWFjOWJmMTZhZDlm
NzMzMmEzNzFjZDViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkRlY2ltYWwuaCIK
ICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggNzE5MjhjN2NlYThlMTRmMDQ0
ZGU0OWY5ZDAxMzg0NzMwYWFhMmNlYi4uNjEwNGJlMzkyYmNlMzFjNjNjYTFlZjI0YWUxMmVlYjEz
MTk1NWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAg
LTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgYm9vbCBpc1NlbWljb2xvblNlcGFyYXRlZEF0dHJpYnV0
ZShjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlKQogc3RhdGljIGJvb2wgc2Vt
aWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoU3RyaW5nVmlldyBzZW1p
Y29sb25TZXBhcmF0ZWRWYWx1ZSkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBzZW1pY29sb25T
ZXBhcmF0ZWRWYWx1ZS5zcGxpdCgnOycpKSB7Ci0gICAgICAgIGlmIChwcm90b2NvbElzSmF2YVNj
cmlwdCh2YWx1ZSkpCisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHZhbHVl
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBA
IC00NDYsOSArNDQ2LDkgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbihjb25z
dCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0
ID0gZmFsc2U7CiAgICAgaWYgKG1fd2FzU2NyaXB0VGFnRm91bmRJblJlcXVlc3QpIHsKLSAgICAg
ICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNy
Y0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJp
YnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3Rl
ZChyZXF1ZXN0LCBTVkdOYW1lczo6aHJlZkF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5j
YXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9
IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBYTGlua05hbWVzOjpocmVmQXR0ciwg
YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsK
KyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVl
c3QsIHNyY0F0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpT
cmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1
dGVJZkluamVjdGVkKHJlcXVlc3QsIFNWR05hbWVzOjpocmVmQXR0ciwgV1RGOjpibGFua1VSTCgp
LnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAgICBk
aWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgWExpbmtO
YW1lczo6aHJlZkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxl
OjpTcmNMaWtlQXR0cmlidXRlKTsKICAgICB9CiAKICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHQ7
CkBAIC00NjEsNyArNDYxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihj
b25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJsb2NrU2Ny
aXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29udGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRT
bmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0g
ZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGRhdGFBdHRyLCBibGFua1VSTCgpLnN0
cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAgICBkaWRC
bG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZGF0YUF0dHIs
IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmli
dXRlKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHJlcXVlc3QsIHR5cGVBdHRyKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRy
aWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGNsYXNzaWRBdHRyKTsKICAgICB9CkBAIC00ODEsNyAr
NDgxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKGNvbnN0IEZpbHRlclRv
a2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBpZiAoIUhUTUxQYXJhbUVsZW1lbnQ6OmlzVVJMUGFy
YW1ldGVyKFN0cmluZyhuYW1lQXR0cmlidXRlLnZhbHVlKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVB
dHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1
dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVB
dHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0
dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihjb25zdCBG
aWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC00OTIsNyArNDkyLDcgQEAgYm9vbCBYU1NB
dWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVz
dCkKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29udGFpbmVk
SW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRTbmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsKICAg
ICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3Qs
IGNvZGVBdHRyLCBTdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsK
LSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVl
c3QsIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlr
ZUF0dHJpYnV0ZSk7CisgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJ
bmplY3RlZChyZXF1ZXN0LCBzcmNBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5j
YXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiAgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9
IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCB0eXBlQXR0cik7CiAgICAgfQogICAg
IHJldHVybiBkaWRCbG9ja1NjcmlwdDsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIFhTU0F1ZGl0
b3I6OmZpbHRlckZvcm1Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAg
ICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwog
ICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGZvcm1UYWcpKTsKIAotICAgIHJldHVy
biBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgYWN0aW9uQXR0ciwgYmxhbmtVUkwo
KS5zdHJpbmcoKSk7CisgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0
LCBhY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiBib29sIFhTU0F1
ZGl0b3I6OmZpbHRlcklucHV0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0
KQpAQCAtNTUyLDcgKzU1Miw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVySW5wdXRUb2tlbihj
b25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJl
cXVlc3QudG9rZW4sIGlucHV0VGFnKSk7CiAKLSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZklu
amVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVu
Y2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0
ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZm9ybWFjdGlvbkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJp
bmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKIH0KIAogYm9vbCBYU1NB
dWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVl
c3QpCkBAIC01NjAsNyArNTYwLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tl
bihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3Qu
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1l
KHJlcXVlc3QudG9rZW4sIGJ1dHRvblRhZykpOwogCi0gICAgcmV0dXJuIGVyYXNlQXR0cmlidXRl
SWZJbmplY3RlZChyZXF1ZXN0LCBmb3JtYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwg
VHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICByZXR1cm4gZXJhc2VBdHRy
aWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCku
c3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wg
WFNTQXVkaXRvcjo6ZXJhc2VEYW5nZXJvdXNBdHRyaWJ1dGVzSWZJbmplY3RlZChjb25zdCBGaWx0
ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC01NzMsNyArNTczLDcgQEAgYm9vbCBYU1NBdWRp
dG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRlclRva2Vu
UmVxdWVzdCYgcmUKICAgICAgICAgYm9vbCBpc0lubGluZUV2ZW50SGFuZGxlciA9IGlzTmFtZU9m
SW5saW5lRXZlbnRIYW5kbGVyKGF0dHJpYnV0ZS5uYW1lKTsKICAgICAgICAgLy8gRklYTUU6IEl0
IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBkaWRuJ3QgY3JlYXRlIGEgbmV3IFN0cmluZyBmb3IgZXZl
cnkgYXR0cmlidXRlIGluIHRoZSBkb2N1bWVudC4KICAgICAgICAgU3RyaW5nIHN0cmlwcGVkVmFs
dWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5nKGF0dHJpYnV0ZS52
YWx1ZSkpOwotICAgICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lu
bGluZUV2ZW50SGFuZGxlciAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcHBlZFZhbHVlKSkg
fHwgKGlzU2VtaWNvbG9uU2VwYXJhdGVkQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgc2VtaWNvbG9u
U2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoc3RyaXBwZWRWYWx1ZSkpOworICAg
ICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lubGluZUV2ZW50SGFu
ZGxlciAmJiBXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwcGVkVmFsdWUpKSB8fCAoaXNT
ZW1pY29sb25TZXBhcmF0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlKSAmJiBzZW1pY29sb25TZXBhcmF0
ZWRWYWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTChzdHJpcHBlZFZhbHVlKSk7CiAgICAgICAgIGlm
ICghaXNJbmxpbmVFdmVudEhhbmRsZXIgJiYgIXZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghaXNDb250YWluZWRJblJlcXVlc3Qo
Y2Fub25pY2FsaXplKHNuaXBwZXRGcm9tQXR0cmlidXRlKHJlcXVlc3QsIGF0dHJpYnV0ZSksIFRy
dW5jYXRpb25TdHlsZTo6U2NyaXB0TGlrZUF0dHJpYnV0ZSkpKQpAQCAtNzI3LDcgKzcyNyw3IEBA
IGJvb2wgWFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwp
CiAgICAgLy8gR2l2ZSBlbXB0eSBVUkxzIGFuZCBhYm91dDpibGFuayBhIHBhc3MuIE1ha2luZyBh
IHJlc291cmNlVVJMIGZyb20gYW4KICAgICAvLyBlbXB0eSBzdHJpbmcgYmVsb3cgd2lsbCBsaWtl
bHkgbGF0ZXIgZmFpbCB0aGUgIm5vIHF1ZXJ5IGFyZ3MgdGVzdCIgYXMKICAgICAvLyBpdCBpbmhl
cml0cyB0aGUgZG9jdW1lbnQncyBxdWVyeSBhcmdzLgotICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8
IHVybCA9PSBibGFua1VSTCgpLnN0cmluZygpKQorICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVy
bCA9PSBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgLy8gSWYgdGhlIHJlc291cmNlIGlzIGxvYWRlZCBmcm9tIHRoZSBzYW1lIGhvc3QgYXMgdGhl
IGVuY2xvc2luZyBwYWdlLCBpdCdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9YU1NBdWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmgKaW5kZXggZGM4MmFkZDdjN2Y1YmRkYTNjYWI1MzRkZmFhMTA5YmZkMTkwYmMyNy4uMTJlYzk4
YzA5MmZmNjUwNGNkZTUzZmZmOTM2ODFlMDI1MTEwMDUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiSFRNTFRv
a2VuLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU3VmZml4VHJlZS5oIgogI2luY2x1ZGUgIlRleHRF
bmNvZGluZy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JE
ZWxlZ2F0ZS5oCmluZGV4IDY3YTMyZWQ5MzBkN2Q5ZGQ0ZGFjNDA4OTIyMGJkZjNmMmFkNzZlODcu
LjYwNTE1OWIyZmFmYTRjZjg3MWFlNjU2ZjEwYWY0M2YwMDFlOTNmYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCkBAIC0yNiw3ICsyNiw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwCmluZGV4IGM3MzRkYTJiZWFlMTM4NDUyN2Q3NzJhZTliZTE4YjM3ZjU0NDVjOGIu
LjI2YWI2ZGY5NTI0YTRlNjk4MTQ4ODE1MjVlZGM4N2Y2NjA4NmI4NTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0zMTEs
NyArMzExLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmtpbGxUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgYm9vbCBzaG91bGRQcmVwZW5kVG9LaWwKIAogdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBpZiAoV2Vi
Q29yZTo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElz
SmF2YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9jbGllbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggZGRlMjEyMmNjZWQwMGE4ZTMyMGNmNDQwOThmYWQwNjY1NzY0Nzk3MC4uOGMzNzJm
YWFmN2VkOGVlZDM5OGI1YTZjZDdlNTRmYThmNmVlYzQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtODgsNyArODgs
NiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgVGltZXJCYXNlOwotY2xhc3MgVVJMOwogI2lmIEVO
QUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
CmluZGV4IDMzMzEwNzgxY2FhYjViNTE1MmQ2MWZjNTY2NjhhNDljYzM1MjQ0YzYuLjdjNjc0NDYx
MjA1NzA3OThjYWZkNzgwMTVmYWQ5OWQ2MDg3MzE0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldl
YlNvY2tldC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRGcmFtZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggNjRkMGUwNDU4MDI1OTVmZjMwNWM5YTM2
YzExMjJkMTY2NDM3OGM5NC4uYjY4NTkwZjFiODQwODgyODRhOGE1NWZjNzVkMGU1NTlkNDkwOWJk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIFJlc291cmNlTG9hZGVy
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNz
IFRleHRSZXNvdXJjZURlY29kZXI7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXZWJTb2NrZXQ7CiAKIHN0
cnVjdCBXZWJTb2NrZXRGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDY3MDlmNTJiZTAzNDMyYjJjNTVlYjk0
NzFiYzRjMGRiMjVkMDg2YzcuLjcyZjYzYmQ4OTYyNWI2MjY5Y2JmN2E2M2YxMjUyMTVmNDE1NzVi
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBJbnNwZWN0b3JPdmVybGF5Owog
Y2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNs
YXNzIFVSTDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRl
eCA3Mjg4Y2ZmZTRjZjJlOGZlYmViMGM2MTBkNDZiN2VjYWZiYzY1ZjRkLi41ZTA0MGM5NTRkNGI1
MTRhMTQ5MDNjMDcyMDcwYmVjZGUwNjBjYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw2
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBVUkw7CiAKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaAppbmRleCA4YjY0MzFhYjQyMmYyY2I2Yzk0OGQ4
Y2Y4ZWJiNTUxMTcxMTdkZGJhLi4xYjBmNzYwZDJlY2ViZDVjMjhlZjVjMmVjNDJlZGExMmYwM2Yz
YmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVz
dExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLmgKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbk1hbmlmZXN0
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5kZXggNWZhNzA1ZDhhODVmZjE1ODY4OTA2NWZj
OGJjZDg4YjNmYzk4YjRlNC4uYjliOWYzNzQ5NzQzZWQ0OGY3MzhhM2ZkOGU3MmE2OWE0ZDAwOWU3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFVSTDsKIHN0cnVjdCBDb29r
aWU7CiBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAppbmRleCBkMmIwOWJk
NWRiNTY3NmMwMWFiZjgyM2QzZjA3MjJhNzcwZWE1NDBiLi4yYWYzZDRhMWM1MjA5MTI5M2RlMWM0
ODNhMmZjMTczYWM2NmVhMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5oCmluZGV4IGRjMDcxMzBhMWIxNDY1M2JkMWRmNWJlZWU5ODgw
OWUzYjcyZWZiZTMuLjk2NWRlNmY4YTA3YmRjNzhjMDhlMGYxYzJlNzIxOWUxZWRhNDA0NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGUuaApAQCAtMjcsOSArMjcsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmlu
ZGV4IDY2ZmQ2YTg2YTg0NWFkNGRmMWIwZTA1YmNhZDc1YzIwMzIzNDgxY2EuLmRhNmIyYWJlMTEz
OGQ4ZjQxYTMwYWJjN2QxOTc2NGI4ODdmNmQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcApAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNv
dXJjCiAgICAgICAgIHN3aXRjaCAoc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY2FzZSBTaG91
bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbjoKICAgICAgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNw
ZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVz
IHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sgdG8gcmVzdW1lLgotICAgICAgICAgICAgcmVxdWVz
dCA9IHsgYmxhbmtVUkwoKSB9OworICAgICAgICAgICAgcmVxdWVzdCA9IHsgV1RGOjpibGFua1VS
TCgpIH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6
Tm86CiAgICAgICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwpAQCAtMTY2Nyw3
ICsxNjY3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9yZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSAmJiAh
ZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVu
dCgpKSB7Ci0gICAgICAgIG1fcmVxdWVzdC5zZXRVUkwoYmxhbmtVUkwoKSk7CisgICAgICAgIG1f
cmVxdWVzdC5zZXRVUkwoV1RGOjpibGFua1VSTCgpKTsKICAgICAgICAgaWYgKGlzTG9hZGluZ01h
aW5SZXNvdXJjZSgpKQogICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlzcGF0
Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgKaW5kZXggYWM5NDhjY2RhZGQwYWExYzVlMWJlN2EwMWVhMTYwOTAxYzFm
YTM3NC4uZTlmNTAzY2M2ZjYzNGVlMTAzNjdhZGE3ODdkMTY2MjEwNmMxMmI0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTIzNCw3ICsyMzQsNyBAQCBjbGFzcyBE
b2N1bWVudExvYWRlcgogICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlz
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIHVybEZvckhpc3RvcnkoKTsgfQogICAgIHZvaWQgc2V0Q2xp
ZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KGNvbnN0IFN0cmluZyYgY2xpZW50UmVkaXJlY3RT
b3VyY2VGb3JIaXN0b3J5KSB7IG1fY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gY2xp
ZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OyB9CiAgICAgCi0gICAgU3RyaW5nIHNlcnZlclJl
ZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuICh1cmxGb3JIaXN0b3J5KCkg
PT0gdXJsKCkgfHwgdXJsKCkgPT0gYmxhbmtVUkwoKSkgPyBTdHJpbmcoKSA6IHVybEZvckhpc3Rv
cnkoKS5zdHJpbmcoKTsgfSAvLyBudWxsIGlmIG5vIHNlcnZlciByZWRpcmVjdCBvY2N1cnJlZC4K
KyAgICBTdHJpbmcgc2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1
cm4gKHVybEZvckhpc3RvcnkoKSA9PSB1cmwoKSB8fCB1cmwoKSA9PSBXVEY6OmJsYW5rVVJMKCkp
ID8gU3RyaW5nKCkgOiB1cmxGb3JIaXN0b3J5KCkuc3RyaW5nKCk7IH0gLy8gbnVsbCBpZiBubyBz
ZXJ2ZXIgcmVkaXJlY3Qgb2NjdXJyZWQuCiAgICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0RGVzdGlu
YXRpb25Gb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gdXJsKCk7IH0KIAogICAgIGJvb2wgZGlk
Q3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWRDcmVhdGVHbG9i
YWxIaXN0b3J5RW50cnk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5k
ZXggMzg1ZmI2NDA3YmE0MTliYmI4NjY3Y2JjNTA5OTdjMWIwZDRiZjIxNC4uMzA0OGM1OWU1NzUx
MzdkODVlMGE5OWNlOTJjNTBlM2RlN2JhZjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmgKaW5kZXggNGNkZjQ4Yjc3YzZkMDVlMmU2NTU3OWE0MzIxNDgzMDhkODQ4ZWJjOS4u
ZjlhY2NmMTcyMTViYjA2YTZmODk2NmNmMDIxNzk5YmVkNThlM2QxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkZv
cm1TdGF0ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYjNhZTZhYjBlM2Q0OWEwZGI2MTM3NWEz
YzdkY2ZkMjgyMDQ0NDhkMi4uOWQwMjk3YjFiNDc1N2QyOGIzMDNhYzBiZDM4NmY5YzYzMjc1MDM5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00MjEsNyArNDIxLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3Vi
bWlzc2lvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwcm90b2NvbElzSmF2
YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElz
SmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKICAgICAgICAgaWYgKCFtX2ZyYW1l
LmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Zvcm1BY3Rpb24oVVJM
KHN1Ym1pc3Npb24tPmFjdGlvbigpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1f
aXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7CkBAIC02OTksNyArNjk5LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIGlmICghcGFyc2VI
VFRQUmVmcmVzaChkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6UmVmcmVzaCksIGRlbGF5LCB1cmxTdHJpbmcpKQogICAgICAgICByZXR1cm47
CiAgICAgYXV0byBjb21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gZG9jdW1lbnQu
dXJsKCkgOiBkb2N1bWVudC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwotICAgIGlmICghcHJvdG9j
b2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICBpZiAoIVdURjo6cHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29tcGxldGVkVVJMKSkKICAgICAgICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1
bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkb2N1bWVudCwgZGVsYXksIGNvbXBsZXRlZFVSTCk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGF1dG8gbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJlc2ggIiAr
IGRvY3VtZW50LnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0byBh
IGphdmFzY3JpcHQ6IFVSTCI7CkBAIC0zMzU1LDcgKzMzNTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZQogCiAgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcg
Zm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRl
IGJhY2sgdG8gcmVzdW1lLgogICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29u
dGludWU6OkZvclN1c3BlbnNpb24pCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXItPndpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KHsgYmxhbmtV
UkwoKSB9KTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+d2lsbENv
bnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBXVEY6OmJsYW5rVVJMKCkgfSk7
CiAKICAgICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWlu
UmVzb3VyY2Uoc2hvdWxkQ29udGludWUpOwogICAgIH07CkBAIC0zOTA2LDcgKzM5MDYsNyBAQCBS
ZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyRnJhbWUsIEZyYW1lJiBsb29r
dXBGcmFtZSwgRnJhbWVMb2FkUmVxdQogICAgIGNyZWF0ZWQgPSBmYWxzZTsKIAogICAgIC8vIEZJ
WE1FOiBQcm92aWRlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUg
b3BlbmVyJ3MgZG9jdW1lbnQuCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpICYmICFvcGVuZXJGcmFtZS5kb2N1bWVudCgpLT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhvcGVuZXJGcmFtZS5kb2N1
bWVudCgpLT51cmwoKSwgeyB9KSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKSAmJiAhb3BlbmVyRnJhbWUuZG9jdW1lbnQo
KS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SmF2YVNjcmlwdFVSTHMob3BlbmVyRnJh
bWUuZG9jdW1lbnQoKS0+dXJsKCksIHsgfSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSAmJiAhZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShyZXF1ZXN0LmZyYW1lTmFtZSgpLCAiX2JsYW5rIikpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMWI5MTFhMmI3ZDI5MjJiYTM2Njk1ZDRk
OTI2MzA0MGY1MGYyZmYzZi4uOTA0ZWQ5NjJmNzk3OTNjODNlY2I3ZDgxNWY0NTA2ZmZjODUwYTVj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEwMCw3
ICsxMDAsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKLWNsYXNzIFVSTDsK
IGNsYXNzIFdpZGdldDsKIAogZW51bSBjbGFzcyBQb2xpY3lEZWNpc2lvbk1vZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA5ZmJhODM1YTQ1NTI5
ZWVjOTE5MDBjMmYzYjJlYjUwYjcxODg4NGQ4Li41MGJkMTM4ZjAyZTM0YjE0YTM5MTllMzY3ZWQ3
ODFiZGJjNzliYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJyZW50
SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdAogICAgIC8vICAiSWYgdGhlIGJyb3dzaW5nIGNv
bnRleHQncyBzZXNzaW9uIGhpc3RvcnkgY29udGFpbnMgb25seSBvbmUgRG9jdW1lbnQsCiAgICAg
Ly8gICBhbmQgdGhhdCB3YXMgdGhlIGFib3V0OmJsYW5rIERvY3VtZW50IGNyZWF0ZWQgd2hlbiB0
aGUgYnJvd3NpbmcgY29udGV4dAogICAgIC8vICAgd2FzIGNyZWF0ZWQsIHRoZW4gdGhlIG5hdmln
YXRpb24gbXVzdCBiZSBkb25lIHdpdGggcmVwbGFjZW1lbnQgZW5hYmxlZC4iCi0gICAgcmV0dXJu
IG1fY3VycmVudEl0ZW0gJiYgIW1fcHJldmlvdXNJdGVtICYmIGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobV9jdXJyZW50SXRlbS0+dXJsU3RyaW5nKCksIGJsYW5rVVJMKCkpOworICAgIHJldHVybiBt
X2N1cnJlbnRJdGVtICYmICFtX3ByZXZpb3VzSXRlbSAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG1fY3VycmVudEl0ZW0tPnVybFN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpOwogfQogCiB2b2lk
IEhpc3RvcnlDb250cm9sbGVyOjpjbGVhclByZXZpb3VzSXRlbSgpCkBAIC02NTQsOSArNjU0LDkg
QEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0mIGl0
ZW0pCiAgICAgLy8gTGF0ZXIgd2UgbWF5IHdhbnQgdG8gbGVhcm4gdG8gbGl2ZSB3aXRoIG5pbCBm
b3IgVVJMLgogICAgIC8vIFNlZSBidWcgMzM2ODIzNiBhbmQgcmVsYXRlZCBidWdzIGZvciBtb3Jl
IGluZm9ybWF0aW9uLgogICAgIGlmICh1cmwuaXNFbXB0eSgpKSAKLSAgICAgICAgdXJsID0gYmxh
bmtVUkwoKTsKKyAgICAgICAgdXJsID0gV1RGOjpibGFua1VSTCgpOwogICAgIGlmIChvcmlnaW5h
bFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIG9yaWdpbmFsVVJMID0gYmxhbmtVUkwoKTsKKyAgICAg
ICAgb3JpZ2luYWxVUkwgPSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgCiAgICAgU3RyaW5nV2l0aERp
cmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuaAppbmRleCAwMWQxZWZjMzE1YTViMDJkMDY5OWU5YWM0NWRmZDEzNjg3OGY0
YWIxLi41NGQ3MjIzMTBkOGRmZjkyMWYxZTlkZTA1NDViZDllMWM2MjA5NDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBMaW5rUHJlbG9hZFJlc291
cmNlQ2xpZW50OwogCiBzdHJ1Y3QgTGlua1JlbEF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZFRpbWluZy5oCmluZGV4IDczZjllZjk0YWZkNjI1NWQ1YTNmNTc0NTgyZDMwYTY0ZjIxZDE0NjQu
LmZlYTdjNDFmY2U2MDI1MjZlMzZhYThlZGI2ZWFiNDY1Njk4NThjODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xvYWRUaW1pbmcuaApAQCAtMjUsMTMgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFVSTDsKLQogY2xhc3MgTG9hZFRpbWluZyB7CiBwdWJsaWM6CiAgICAgU2Vjb25kcyBzZWNvbmRz
U2luY2VTdGFydFRpbWUoTW9ub3RvbmljVGltZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
b2FkZXJTdHJhdGVneS5oCmluZGV4IDU5Njc4MmM2NTdjYWM1MDgyY2FmZTFjZTRiMWMxNmZmYjlh
NjhkNGQuLjI4NWU2ODA5Y2U0NWUyMjEyNDQ0NjlmZjk1NWFlNTVlZmRlYjUxNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC01MSw3ICs1MSw2IEBAIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgRmV0Y2hP
cHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5j
cHAKaW5kZXggMDUwY2I3OWVhNjU3N2Q1M2EwMzM1MjA2YmQ0NjBlYTQ0NzNmMjM3Ny4uZmFkZTAx
YjdjMWQwYmVjODQ2MzY3ZmY1YTYyN2Q5M2RmMWYwOWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQg
TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JtRm9yTWl4ZWRDb250ZW50KFNlY3VyaXR5T3Jp
Z2luJiBzZWN1cml0eU9yaWdpCiB7CiAgICAgLy8gVW5jb25kaXRpb25hbGx5IGFsbG93IGphdmFz
Y3JpcHQ6IFVSTHMgYXMgZm9ybSBhY3Rpb25zIGFzIHNvbWUgcGFnZXMgZG8gdGhpcyBhbmQgaXQg
ZG9lcyBub3QgaW50cm9kdWNlCiAgICAgLy8gYSBtaXhlZCBjb250ZW50IGlzc3VlLgotICAgIGlm
IChwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZh
U2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaXNNaXhlZENvbnRlbnQo
c2VjdXJpdHlPcmlnaW4sIHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWl4ZWRDb250ZW50Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVu
dENoZWNrZXIuaAppbmRleCBhMjZhODU3OTdkM2E4Y2IwYzI5MzNkZjI0Nzc2YjY5NWI3MGQ0NDM0
Li41ZmRmZmY4MGEzMTg3NDM3MTgzODg5MGI1ZTI0MDRlYTAwOWYxMTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgKQEAgLTM3LDcgKzM3LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50
OwotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIE1peGVkQ29udGVu
dENoZWNrZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
Y3BwCmluZGV4IGE4ZjgwYmUxMzgyMDdkYzdhYTZjNmMxNDY5NzNkMGRiOWU0YjliMWMuLjg4ZTcw
NTE2ZDZjZTkzZDM2ZWM4M2FiMmM4ZDQzYjdmYzQ1ZGEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTM2Niw3ICszNjYsNyBAQCBpbmxp
bmUgYm9vbCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24o
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1
cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIHJldHVybiBOYXZpZ2F0aW9uRGlzYWJsZXI6OmlzTmF2aWdhdGlvbkFs
bG93ZWQobV9mcmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hl
ZHVsZXIuaAppbmRleCAwNDU5MzE4MTkxNzY0OWJiMjk4NzUzNTVlMzM4NzIwNzM1NDMyMTk0Li42
ZmJlMmE1YjNkYmM5NmZjYmQ0NTA5MjU1OTc4NGU4ZGQwY2Q2YjIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3Mg
Rm9ybVN1Ym1pc3Npb247CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFNjaGVkdWxlZE5hdmlnYXRpb247
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgTmF2aWdhdGlvblNj
aGVkdWxlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGlu
Z0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRleCAxNTQ4
OWRjZjA0YmYxZGVkNzg4NmVmOGMwODYxN2RkYmMxM2Q5YTE4Li42ZGVlZjQ1MTY5YTllNWNhMzBh
OWYyZjgzMzQyMzc5ZDM5OWIxZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UGluZ0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKQEAg
LTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9ybURhdGE7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiAKIGVudW0gY2xhc3MgVmlvbGF0aW9uUmVwb3J0VHlwZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaAppbmRleCA5YjYzMzBlZDQ3YmFjNjZkZWEyMmI4
NGUxOWNmMWQwMGIwNmEyM2MxLi4xYzEyM2QwNmY3YWQ2NzUyMjlkNmM1ZTAxZjkyNTFhNjhiMTYy
MjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKQEAgLTI2LDcg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAK
aW5kZXggN2JkZmM0OGY1ZDQwNTliZTZhYjhiYjlhMjVlYjA4MzUwZTg5MDE5OS4uMTI3MjNiMzQy
Y2I1YzI2NTJmM2UxNGFkNGFjM2MyZDFjNDBmNmZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoY29u
c3QgU3RyaW5nJiBkb21haW5JCiAgICAgYXV0byBvcGVuZXJQcmltYXJ5RG9tYWluID0gcHJpbWFy
eURvbWFpbihvcGVuZXJVcmwpOwogICAgIGlmIChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Mg
IT0gb3BlbmVyUHJpbWFyeURvbWFpbgogICAgICAgICAmJiAhb3BlbmVyRG9jdW1lbnQuaGFzUmVx
dWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24oZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzKQotICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShvcGVuZXJVcmwuc3RyaW5nKCksIGJsYW5rVVJMKCkpKSB7CisgICAgICAgICYmICFlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG9wZW5lclVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSkgewog
ICAgICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyUHJpbWFyeURvbWFpbik7
CiAgICAgICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVzdHMgc2lu
Y2UgdGhleSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJEb2N1bWVu
dC5zZXRIYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFj
dGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCBhZTJjYWUyNzgwOTE3NTU4M2YyZWJiNDMz
NjVhMTAxOWExNDcxMDg3Li4yYWJmYzUwMzM0YzE3ZDg5ZTJiNmZmYmRjMzhhMzgyYTFmMTA2ZTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAt
NDcsNyArNDcsNiBAQCBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBV
Ukw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAppbmRleCBmOTRkNmZkMTllNzc0NmRm
NWU2ODNhOTU3ZjBmZDk5YTc3MmQzMjFhLi4wODI0NjlkYTEyYTA0MGIzMThjNDJhZjNjNjc0Y2Q4
MGMwZmQ2ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmgKQEAgLTI2LDEwICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJD
YW52YXNBY3Rpdml0eVJlY29yZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4
IDZiYTU1MjZjMGFmNTZlOTYyMzU2MWRiNDdjZDFiYWZmODEzMTk2Y2MuLmEwYjdkODQ5ODUwMmIw
ZTcyMzdhZjFhMDFhMjFiNmJkN2E5NTg5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2Fk
ZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcmV2aWV3TG9hZGVyOwotY2xh
c3MgVVJMOwogCiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291
cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKaW5kZXggNmM5YWNiMTkzYTY3MDIzYmI1
ZGMzNmJhYzRkYTdlNzk4ODM0NDNiZS4uN2VmOGRiYzg1MTRkY2VjZmYxYjA3ZjQ1MDM3MDM3Zjhl
ODg0ODgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKQEAgLTI4LDcg
KzI4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRN
ZXRyaWNzLmgiCiAjaW5jbHVkZSAiU2VydmVyVGltaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IDVkN2QzOGMzYjA3MjNiNzE4NjA5YWQ4
N2IxMGU3NTIxNjRkZTg3MzYuLjU1YTE2ODQ4MzFiZDAxZjZlMGM0YTYxZmM3Yjc3YmI1NzdlZDg4
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtNzcsMTQg
Kzc3LDE0IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25l
ckVsZW1lbnQmIG93bmVyRWxlbWVudCwgY29uc3QgU3RyCiAgICAgLy8gU3VwcG9ydCBmb3IgPGZy
YW1lIHNyYz0iamF2YXNjcmlwdDpzdHJpbmciPgogICAgIFVSTCBzY3JpcHRVUkw7CiAgICAgVVJM
IHVybDsKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkgeworICAgIGlm
IChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpIHsKICAgICAgICAgc2NyaXB0
VVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsgLy8gY29tcGxldGVVUkwoKSBlbmNvZGVzIHRo
ZSBVUkwuCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdURjo6Ymxh
bmtVUkwoKTsKICAgICB9IGVsc2UKICAgICAgICAgdXJsID0gY29tcGxldGVVUkwodXJsU3RyaW5n
KTsKIAogICAgIGlmIChzaG91bGRDb252ZXJ0SW52YWxpZFVSTHNUb0JsYW5rKCkgJiYgIXVybC5p
c1ZhbGlkKCkpCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdURjo6
YmxhbmtVUkwoKTsKIAogICAgIGJvb2wgaGFzRXhpc3RpbmdGcmFtZSA9IG93bmVyRWxlbWVudC5j
b250ZW50RnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWUgPSBsb2FkT3JSZWRpcmVjdFN1YmZyYW1l
KG93bmVyRWxlbWVudCwgdXJsLCBmcmFtZU5hbWUsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0Zvcndh
cmRMaXN0KTsKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZy
YW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBTdHIKICAgICAv
LyBJZiB3ZSBjcmVhdGUgYSBuZXcgc3ViZnJhbWUgdGhlbiBhbiBlbXB0eSBkb2N1bWVudCBpcyBs
b2FkZWQgaW50byBpdCBzeW5jaHJvbm91c2x5IGFuZCBtYXkKICAgICAvLyBjYXVzZSBzY3JpcHQg
ZXhlY3V0aW9uIChzYXksIHZpYSBhIERPTSBsb2FkIGV2ZW50IGhhbmRsZXIpIHRoYXQgY2FuIGRv
IGFueXRoaW5nLCBpbmNsdWRpbmcKICAgICAvLyBuYXZpZ2F0aW5nIHRoZSBzdWJmcmFtZS4gV2Ug
b25seSB3YW50IHRvIGV2YWx1YXRlIHNjcmlwdFVSTCBpZiB0aGUgZnJhbWUgaGFzIG5vdCBiZWVu
IG5hdmlnYXRlZC4KLSAgICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1l
IHx8IChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxVUkwoKSA9PSBibGFua1VSTCgpKTsKKyAgICBib29s
IGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+b3Jp
Z2luYWxVUkwoKSA9PSBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGlmICghc2NyaXB0VVJMLmlzRW1w
dHkoKSAmJiBjYW5FeGVjdXRlU2NyaXB0ICYmIG93bmVyRWxlbWVudC5pc1VSTEFsbG93ZWQoc2Ny
aXB0VVJMKSkKICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwo
c2NyaXB0VVJMKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1l
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAppbmRleCA0
ODk2ZDYyZjQ1ZjFmODFkOTBkZTc0MDJlMjA5NzA0MWE2ZWIwNjRjLi4yY2FhZTljYTYwOThhNzUz
M2MzMDkzODk2ZGMyMDMxMjZlNjg5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3ViZnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVM
b2FkZXIuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBj
bGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVudDsKIGNs
YXNzIEludFNpemU7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXaWRnZXQ7CiAKIC8vIFRoaXMgaXMgYSBz
bGlnaHQgbWlzbm9tZXIuIEl0IGhhbmRsZXMgdGhlIGhpZ2hlciBsZXZlbCBsb2dpYyBvZiBsb2Fk
aW5nIGJvdGggc3ViZnJhbWVzIGFuZCBwbHVnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZURhdGEuaAppbmRleCBmMTAxMzUxNTk3MTk4MTgyOWM2MTAxOTE3NTJiOTFhZjllYzdmYjc1
Li43MDU2MzIxMzNkZjhlZjg1NjU5ODUyODdlNDEwNjBiMWRiMzc5NDg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKaW5kZXggNWRmNWY2MDE3Y2U0YzAzYjc4OGJlOThiZWI3
YjZlMTdiYjA0MGI2ZS4uNjEzMTdiNTMxY2NjMWIwNjI5YjIxZGJmMGE2N2NjZmVlYTZjZjQ2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIAogdXNpbmcgRmFsbGJhY2tVUkxWZWN0b3IgPSBW
ZWN0b3I8c3RkOjpwYWlyPFVSTCwgVVJMPj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCBhYmFhNzNlMTRh
YjRiOGM3YWJhYjEwODhkZDhjMjM4ZTY5ZTJiNDFlLi40N2Q4OTM0YmE5OTE0YTVhNTZkMTE0NmE3
OTdlZGViODRkZjJkYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0yNywxMCArMjcsMTAgQEAKIAogI2lu
Y2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRPTUFw
cGxpY2F0aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IGYyZmIxZjc4MzJiY2Q4MDQ2
MmJjYWIwOGNlYmE3ZDEyNWI4NWEyNDMuLjBkMTMwYTQ1ZjhhZjNiNDk5MDQyMTA1Yjk2MTAzOWZm
NWZiZjM0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggODFjMjMyMWYzMzk5YzMwNDAzMzc3NmQ5MjZkOGUzMDAz
YjZlNDFhNS4uMDQwZDhiN2FkNmEwOTFlYjFjOWU0MzViNWUwYzM0MDFmOTNhZTI1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA0OGNiZjg4ZTVkODkwMzcxMTM2MTg5NWNhMWMxMzJh
NjQwYzdkOTA0Li42OGMzNjFlNTJiNDJkOTFkMzYxZTljYzgyOTBlZjM1YzM1MDE1MmI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwog
Y2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFz
cyBTdG9yYWdlSURKb3VybmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggY2I0ODE1ODVmNGEwZGMzNjg5YzhlODE1ZTcwNmNh
MjRjNDI2MDAxNS4uODQ0NjlmOGFkNGE5NGE4NDYyZTc2ZjNkOTEwYzMyZThiMTQxMjE5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3Bw
CkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKIAogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0
Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKaW5kZXggZTc4MTA4OTNhMjA2OTBhY2U2M2FlYzNl
Yzg4ZTYwZWFmNjJmYzc4MC4uOGZlNDBhNjRlNDQ5MGFhYzgyN2E2MWRiMGY0MDQ3YzFlZTg2MGIx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2Vy
LmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7
Ci0KIHN0cnVjdCBNYW5pZmVzdCB7CiAgICAgVmVjdG9yPFVSTD4gb25saW5lV2hpdGVsaXN0ZWRV
UkxzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBsaWNpdFVSTHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgK
aW5kZXggMzdkZjY4YjM2NmNmZjg1MzliOTVjODIzZjJlOTEyNGQzNWVhOTkzOC4uZTQ2MGI2OWMy
YWVkNWQyNzlkZDU0YTBkZjlhZjAxMGI5NGJjNzdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaApAQCAt
MzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmU7CiBjbGFz
cyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcAppbmRleCA2NDEyMjYyZTE1YjkxZjFhOWFlNTRhYzA1MTk1MTZiNmNh
NjViODFmLi5hMWQzN2M3MDI5ZjI5N2E0MWY2ODNmMDllNzg2NGE5ZGM4YjdiMDA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkxI
YXNoLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtNTEsNiArNTAsNyBAQAogI2luY2x1ZGUgIm1hcmt1cC5oIgog
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTU2NCw3ICs1NjQsNyBA
QCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNl
bGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQg
aW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9j
dW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAog
ICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFy
Z2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1c
Ijk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3Bv
bnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKLSAgICBhdXRvIGlmcmFtZVJl
c291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXAp
LCBibGFua1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOworICAgIGF1dG8g
aWZyYW1lUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVyKGlmcmFt
ZU1hcmt1cCksIFdURjo6YmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFN0cmluZygp
KTsKIAogICAgIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7
CiAgICAgc3ViZnJhbWVBcmNoaXZlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNWUxZTNm
MWQzY2QxNGE0NmEyNzQ5YTQ4YTE5MzljYTJkNjM4OGI0Yy4uOGY1ZGQyMDYxNzRmZjQ4NmY0MTJj
ZWRmODEyYTk4MGRkNjNkYzUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCkBAIC00NywxMSArNDcsMTEgQEAKICNpbmNsdWRlICJTY2hlbWVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3VicmVz
b3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggMDc3N2IxNzcyNGU5YjA1Y2VmNWVkNTRhM2Fl
ZmMxZDExNDY3ZjRkNy4uMTBmNjljNmExMDUyOWYxZmQ5MTFhMWQwNzRlZjAzMDljMGY1Y2JiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEltYWdlTG9hZGVyOwogY2xhc3MgU2V0dGluZ3M7Ci1jbGFzcyBVUkw7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogdXNpbmcgUmVzb3VyY2VFcnJvck9yID0gRXhwZWN0ZWQ8VCwg
UmVzb3VyY2VFcnJvcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU3R5bGVTaGVldENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFN0eWxlU2hlZXRDbGllbnQuaAppbmRleCBkZjQ2YmUyZDM3N2U0YzFkZTE4MmFkYWYxNGQ3
MzlhMWY5N2NkYzAyLi4zOGJiMTk5OTAwODdjOGQ2NjYxZjM2YTM2NjlkNGM5YWUzMzQ4MTcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0
Q2xpZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q2FjaGVkQ1NTU3R5bGVTaGVldDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkU3R5bGVTaGVl
dENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGQ3MTY3OThhNGNlMWQ5N2Q2
MWQzMTNlOTUxOGI3ZGMyMjY5ZjcwNWMuLjJmY2JkMzE5ODVhNDc1YTMwZmYxNzdmNjMyOTQ2MjJm
MDEyNTI5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBA
IC00MSw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSAgewogCiBjbGFzcyBDYWNoZWRSZXNv
dXJjZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkxvYWRlci5oCmluZGV4IDZhYTU1Mzc0Zjc4YjY2NzdmNTcwOWEyYmQ5ZGNi
NzE0YzE4ZmZkZmEuLjM0YTBmMzJiNGY1ZThkZjlhNmMwM2VmNTc0MThmYzZhYTg1MWQzNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAgLTI3LDkgKzI3LDkgQEAK
IAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9M
b2FkZXJOU1VSTEV4dHJhcy5tbQppbmRleCBmOTEwZWQ1YmRlMjQ5YmEzMWI4YTU4M2ZjNTQxZWY3
YWFjY2MzY2MwLi5jYmUwMDA0ODA2Y2M1ODc0MjNkOGRlYjBlZTQ4NGEwMWY3ZTA2ZjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KQEAgLTMw
LDExICszMCwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMb2FkZXJOU1VSTEV4
dHJhcy5oIgogCi0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rv
ci5oPgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW1w
b3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRl
eCBjMTM5MDc2OGVmODY1ZjI2NjQxZTlhOTM0OGU2ZTY2MGRiMDcyZGVhLi45MTZkM2Y1MTFiOTY1
M2Q4NGNlN2FiM2YxNTExZjBiYjczNWI2YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNDEsNyArNDEsNyBA
QAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5o
IgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUg
IlZUVEN1ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCmluZGV4IGI1MTdiNTJlNzlkODg0ZDBlNzY4NjUwYTYxM2ZmNzQ5ODIyNDVmNGEuLmE1NTBk
NWIwYjc5YTk0MTg3N2EzZmJmNTQ5Njc0Y2RiMzNlZWJjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaApAQCAtMzgyLDcgKzM4Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIENocm9t
ZUNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIHsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgeyB9OworICAg
IHZpcnR1YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJMJiwgY29u
c3QgSGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIHsgfTsKIAogI2lmIFBMQVRG
T1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNv
cigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IGFmN2NhOTI2NGE0ZjJm
ODVlOTQwYzliZDFkNDAxNmRmYTA5OTJjYzAuLmI4NzUwNWEwNTA1NzllM2JmMTM4NTAyYTVlZmY0
YTQ1NTJlZDFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2lu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtMjYsNyArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDVlN2MzNWM5
NzcxOGQ4OGY4NDFiZjQxODA0NTI0OTRhZDhmNzUxOTIuLjg4OWVlOTk3NjEyOGQxYTk2NjdlMGE1
MGEzNDhlNTEyYmU2ODcwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50
LmgKQEAgLTMxLDI5ICszMSwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFz
cyBGcmFtZTsKLSAgICBjbGFzcyBVUkw7Ci0KLSAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVudCB7
Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgpID0gZGVm
YXVsdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOwot
ICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJs
KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1l
KikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikg
PSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IHN0b3BTcGVha2luZygpID0gMDsKK2NsYXNzIEZyYW1lOworCitjbGFzcyBDb250ZXh0TWVudUNs
aWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29udGV4dE1lbnVDbGllbnQoKSA9IGRlZmF1
bHQ7CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOworICAgIAor
ICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNT
cGVha2luZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSA9IDA7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7CiAjZW5kaWYKIAogI2lm
IFVTRShBQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCi0gICAgICAgIHZpcnR1YWwgdm9pZCBz
aG93Q29udGV4dE1lbnUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgp
ID0gMDsKICNlbmRpZgotICAgIH07Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCA2ODEy
NmJhOTZlOGJmMTdlNzY4OTNlMWViYWFjZjU0OTQwZjJmYmM3Li5hM2U1ZWFlODk0ZDY0Mjc2Mzdk
ZDg0NWVkYWFkZTcxYzYxNTFjMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkg
Y29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0Rvd25sb2FkSW1hZ2VUb0Rpc2s6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgaWYg
KFdlYkNvcmU6OnByb3RvY29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUlt
YWdlVVJMKCksICJmaWxlIikpCisgICAgICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKG1fY29u
dGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVSTCgpLCAiZmlsZSIpKQogICAgICAg
ICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgICAgICBicmVh
azsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVj
a09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAg
ICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRWaWRlb1RvRGlz
aygpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKGNv
bnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkQXVkaW9Ub0Rpc2soKSk7Ci0gICAgICAgICAgICBpZiAo
V2ViQ29yZTo6cHJvdG9jb2xJcyhtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlSW1h
Z2VVUkwoKSwgImZpbGUiKSkKKyAgICAgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMobV9jb250
ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksICJmaWxlIikpCiAgICAgICAg
ICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlwYm9hcmQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggN2JkZTFjYmI4YjYzNzFlN2E3YTA4YmE1NTFlODU2
YjgxOTJmNjBmYy4uMWQ2ZGQ3Y2E3Yjg4ZjhmOTNhOWMyNDlkNDlhZTE3NTdmOTAzMDRiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAjaW5jbHVkZSAi
U3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdWRk
ZW5UZXJtaW5hdGlvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc3VhbFZpZXdw
b3J0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9pbnQuaCIKQEAgLTIyMTUsNyArMjIxNSw3IEBAIFN0
cmluZyBET01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0IERPTVdp
bmRvdyYgYWN0aXZlV2luZG93LCBJCiAKIGJvb2wgRE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0
QWNjZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
IHsKLSAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCisgICAgaWYgKCFX
VEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIElmIHRoaXMgRE9NV2luZG93IGlzbid0IGN1cnJlbnRseSBhY3RpdmUgaW4g
dGhlIEZyYW1lLCB0aGVuIHRoZXJlJ3Mgbm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKaW5kZXggYTEwZGFiMzNmYjcyMDBkZjFhNDIwYzM0MjhlNWY3YjM5NmZjY2Q2Zi4uZTAx
MDhhN2JlYjNhYWJjNGQxMmE3ZTgzYWE5NzkxZGQyZTEzMTA1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTEwNjksNyArMTA2OSw3IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFn
T3BlcmF0aW9uCiAgICAgICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQpCiAgICAg
ICAgICAgICAgICAgc3JjLmVkaXRvcigpLmNvcHlVUkwobGlua1VSTCwgdGV4dENvbnRlbnRXaXRo
U2ltcGxpZmllZFdoaXRlU3BhY2UsIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFVSTChz
cmMuZWRpdG9yKCkucGFzdGVib2FyZFdyaXRlclVSTChsaW5rVVJMLCB0ZXh0Q29udGVudFdpdGhT
aW1wbGlmaWVkV2hpdGVTcGFjZSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJE
YXRhLnNldFVSTERhdGEoc3JjLmVkaXRvcigpLnBhc3RlYm9hcmRXcml0ZXJVUkwobGlua1VSTCwg
dGV4dENvbnRlbnRXaXRoU2ltcGxpZmllZFdoaXRlU3BhY2UpKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFzdGVib2FyZCBhbHNvIGNvbnRhaW5zIHRy
dXN0d29ydGh5IGxpbmsgZGF0YQogICAgICAgICAgICAgLy8gYnV0IGRvbid0IG92ZXJ3cml0ZSBt
b3JlIGdlbmVyYWwgcGFzdGVib2FyZCB0eXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuaAppbmRleCBjMDJkNWM4MDE2YzY1YjNkNWVmOTM1NmM4MmJlN2Q1NzJiOTc5YTk0Li44NDM1
MjgzY2RmY2IxMWE4NjJkOWZjY2M2NmYzMDQzZjJjNTdhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgi
CiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCAzNzkyYTkxMjZmMWQzMGFmZmUzN2JlMWMyYTZk
YWM3ODIxNmE3MjlhLi41OGE0YzM4NzQ5ZTk1MGI0NzhjZjg3MDY4YTI2MzkzMTBhZGVmMDlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggZTg4NmI5MGZjMDgxYmE3
YjNmMzBlYzM0MTRiMmZjYmJlOWVmMTVhNS4uYTAyMTVmYTc3NDIzODUyYWJiNTQxMTBhNzI5NzE2
YjkzNGU5MzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtODksNyArODksNiBAQCBjbGFzcyBSZW5k
ZXJXaWRnZXQ7CiBjbGFzcyBTY3JpcHRDb250cm9sbGVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiBjbGFzcyBTZXR0aW5nczsKLWNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNs
YXNzIFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMjQwZTY0NTczN2E0Yzc4
Y2Y1MmQ3MWQ4ZDI4NTcwYTAzYjg0ZjlhZi4uODRjNjIwMTBmNjZlOTNjMmVhYWVlZDQzY2Q3ZjI0
MDU1MmNkZGI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01Miw3ICs1Miw2IEBAIGNs
YXNzIEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxG
cmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwog
Y2xhc3MgUmVuZGVyQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAppbmRleCAwNWZlMmIzZjY3MGRlMmZm
YjViMGQ2YTkwZDhkNzRmOTJhODQ2NTcyLi43ZjM1ZjRkNzAxMDU1N2ZjNTk5YTIxYWRkZTY2MmEz
NTk0YjZiMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7Ci1jbGFzcyBVUkw7
CiAKIGNsYXNzIEhpc3RvcnkgZmluYWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMg
UmVmQ291bnRlZDxIaXN0b3J5PiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKaW5kZXggN2I5OGEwNjM2YzQ5MzZjZDZmZDYyOTQwMTIy
Y2FjYzlhODU4Njc2Ni4uODBhNmVkOTJiMDdhYjc5ZTAwZjUxYTc1YTgyMDI3NGNlYzU5NjUzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblNj
aGVkdWxlci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw3ICs1
MCw3IEBAIGlubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogCiAgICAgY29u
c3QgVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAoIXVybC5p
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBibGFua1VSTCgpOyAvLyBVc2UgImFib3V0OmJsYW5r
IiB3aGlsZSB0aGUgcGFnZSBpcyBzdGlsbCBsb2FkaW5nIChiZWZvcmUgd2UgaGF2ZSBhIGZyYW1l
KS4KKyAgICAgICAgcmV0dXJuIFdURjo6YmxhbmtVUkwoKTsgLy8gVXNlICJhYm91dDpibGFuayIg
d2hpbGUgdGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdlIGhhdmUgYSBmcmFtZSku
CiAKICAgICByZXR1cm4gdXJsOwogfQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgTG9jYXRpb246
OnJlbG9hZChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdykKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh0YXJnZXREb2N1bWVudC51cmwoKSkpCisg
ICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodGFyZ2V0RG9jdW1lbnQudXJsKCkpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2No
ZWR1bGVSZWZyZXNoKGFjdGl2ZURvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAppbmRleCBi
YjdkMmQxZDMzZWVmZjZjOWQxNjY2YWIwMDEwMTc4MzJhNGYyYWY4Li4wMzRjZThiNmVmY2Y3MmMw
YTdlZDRiZWUwMGZlMGVlYzk0YjE0NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCkBAIC0zNyw3
ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93OwogY2xhc3Mg
RnJhbWU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIExvY2F0aW9uIDogcHVibGljIFNjcmlwdFdyYXBw
YWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8TG9jYXRpb24+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVy
dHkgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAyNGI0MWRlM2Q2MWZhMTY4MTg4MjFlZDMw
Y2Q3ZTdiOTRmNjgwZDcxLi5iMmI5YWU2ZTU5NTg3MjdlYmU0M2ZjYzBkODJkMGEzYTdkMjA4MWJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaApAQCAtMTM1LDcgKzEzNSw2IEBAIGNsYXNzIFNldHRpbmdzOwogY2xh
c3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOwotY2xhc3MgVVJMOwogY2xhc3MgVXNlckNvbnRlbnRQcm92aWRl
cjsKIGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IDNiNmUx
ODI5ZTI4YzM1YTM5ZTRhMTZiNWYwODhlNjFjM2M0NmVkOGEuLmZmM2UyZTFmY2IwNjFhNGZmZmM1
ZGVmZDRjMmQxODBhZjQ5YmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgK
QEAgLTMwLDExICszMCwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTEhhc2gu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlLmgKaW5kZXggMjRhYjk0YmNhMjk1Y2NhZmIwYTY1MWE2MjcwYjI4Nzk0
NWViYTk5MS4uM2E4NjM0YWI2MzdhOTE0MmE3MjUwM2Y5YTg4YTUyNmY3OWUwYTliZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2UuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBQZXJmb3JtYW5j
ZVRpbWluZzsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBVc2VyVGlt
aW5nOwogCiBjbGFzcyBQZXJmb3JtYW5jZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlcmZv
cm1hbmNlPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZVJlc291cmNlVGltaW5nLmNwcAppbmRleCA1NzUzMzU4MGMzMDIxZWFlNjZkZTMxOTA4OWQ4
ZTRiMWJjMTAzZjlkLi43YjdkODdhNDU4ZmJhMGU3MzlkMmM0MjA5Y2Y4MjQyYmJkODc0OTA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlJlc291cmNlVGltaW5nLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggMjI5ZWZmODQzODU0YjIw
NjgwZDRhMzlkYzUxYzAwNzJhNzY0OWU5My4uMDIwZTA5MmI5OGY4YzgzZmQ4YTViM2Y0MzMyYzI0
NmIzZWM1ODc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNj
aGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJU
ZXh0RW5jb2RpbmcuaCIKQEAgLTE0OCw3ICsxNDgsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiAgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0cyBh
cyBtX2RhdGEuaG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KICAgICBtX2RvbWFpbiA9
IG1fZGF0YS5ob3N0OwogCi0gICAgaWYgKG1fZGF0YS5wb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbChtX2RhdGEucG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQorICAgIGlmICht
X2RhdGEucG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2RhdGEucG9ydC52
YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICBtX2RhdGEucG9ydCA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmlnaW5zIGNh
biBsb2FkIGxvY2FsIHJlc291cmNlcy4KQEAgLTUxNiw3ICs1MTYsNyBAQCBSZWY8U2VjdXJpdHlP
cmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29u
c3QgU3RyaW5nJgogewogICAgIFN0cmluZyBkZWNvZGVkSG9zdCA9IGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyhob3N0KTsKICAgICBhdXRvIG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3Rv
Y29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7Ci0gICAgaWYgKHBvcnQgJiYgIWlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQorICAgIGlmIChwb3J0ICYmICFXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQogICAgICAgICBvcmlnaW4t
Pm1fZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDVhZGY1MDE3NDliMDljMjkzZTU5YmE0MDQ1NmY3Njdj
YjU2ZTA4ZTEuLmI5M2QwZmFmMjM1YTdmZTM1NDc2NTA5ZjZlNDM3ZDU0NDA1Y2MxMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTM0LDggKzM0LDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6CiAgICAg
ZW51bSBQb2xpY3kgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5k
ZXggY2VmZmVhMzJiMDg0YzU2MzEyNGYyMGI3YzVmZTI4ZjE0OTA0MDQ3NS4uMjc3NjJlYTIxZDZk
MjA2NWU5ZGQwMTQ2ZGI5NzliMzMyZWM0NTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCmluZGV4IGVlMjU3MmM1
YTlhNjQ0Mzk1N2E1ZjNmNzUzZjQ2ZTJmYmE5MjIzNDAuLmUwMTQ4YTJkMDVkOTliMGRkZGYwNmEy
M2QyNDZkNTM0NTJjYjJjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW5IYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhh
c2guaApAQCAtMjgsNyArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNw
cAppbmRleCAxNTNlZGQ4MTlkMTI1NTU1NTY4ODc2NTY2ZGUzMWY5OGI2YzA1NTNiLi40MjM0MTgy
ODBlYTJlZTNjOWJmZGZjOTFjZDEyN2I5NjhlYjFlMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5UG9saWN5LmNwcApAQCAtMzEsMTEgKzMxLDExIEBACiAKICNpbmNsdWRlICJPcmlnaW5B
Y2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBTZWN1cml0eVBvbGlj
eTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKGNvbnN0IFVSTCYgdXJsKQog
ICAgIC8vCiAgICAgLy8gTm90ZTogV2UgZ2VuZXJhbGl6ZSB0aGlzIHRvIGludmFsaWQgVVJMcyBi
ZWNhdXNlIHdlIHRyZWF0IHN1Y2ggVVJMcyBhcyBhYm91dDpibGFuay4KICAgICAvLwotICAgIHJl
dHVybiB1cmwuaXNFbXB0eSgpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnN0cmluZygp
LCBibGFua1VSTCgpKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5n
KCksICJhYm91dDpzcmNkb2MiKTsKKyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKHVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNkb2MiKTsKIH0K
IAogdm9pZCBTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KExvY2FsTG9hZFBvbGlj
eSBwb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggY2QzN2NhM2Fk
MmRmZGJkN2U2NzIzNTFmYTU0M2VlZjQ5ZTgyYjRmNC4uNTMzYjFkNGZiZGFkNTJlMzhmMWZkMzVh
MmY2YTA3ZDQ4MDA4YjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaApAQCAt
MzQsNyArMzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgU2VjdXJpdHlQb2xpY3kgewogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3NCYXNlLmgKaW5kZXggYWE4MDRjZGIwODRlMGQ2YTNmZDNkZWViNmY2MWQ1
NTQzYWYzNDFiMS4uOTg2Nzc2Y2EzZGI1ZGE4ZjhlMWE2YmE4Nzc5ZmRlZWE3MjgzYjliMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAi
U3RvcmFnZU1hcC5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldyaXRp
bmdNb2RlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5j
bHVkZSA8dW5pY29kZS91c2NyaXB0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCAyNzlm
MDMzYTI2NDgxM2MyMWFkZjkwY2ZhNmMzNjU4YWMzODQzZjIzLi5jOGIxMmEzOTcxYjY2MmY4MDc4
ZjNjYTY4ZjUwZTYxZjlhN2Y4YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTI0LDcg
KzI0LDcgQEAKICAqLwogCiAjcHJhZ21hIG9uY2UKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U29ja2V0UHJvdmlkZXIuaAppbmRleCBkMTk3OTc3YWZlYjgyMGFhNDEyZTJjMzRmYTU0NzIxNjM4
NDkwZTcyLi45ZThjMDAzYmZmNTFlMWE1Y2M5NmQyZTQ3M2U3YWVlZWVkYmRhOGZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oCkBAIC0zNCw3ICszNCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTb2NrZXRTdHJl
YW1IYW5kbGU7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7Ci1jbGFzcyBVUkw7CiAK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvY2tldFByb3ZpZGVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNvY2tldFByb3ZpZGVyPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRQcm92aWRlci5oCmluZGV4IDI4ZGZiMzJhMDc2ZTY1MTJlY2Y5MjRmMDE0NTIy
MGVlYWU0OWM0NzIuLmZhNjkyMDM0ZGJhZTVmZDc5ZmU4MTk3ODlhNzMyMWViZTRiMGRlZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCkBAIC00Miw3ICs0Miw2
IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3Mg
UGFnZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIGNsYXNzIFVzZXJNZXNz
YWdlSGFuZGxlckRlc2NyaXB0b3I7CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0eWxl
U2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0
dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAK
aW5kZXggYjliODExNTgyN2I3OGY1MjczMDk1YzJjM2UxNTE4YmY0M2Y0M2U5MC4uZjM3M2NmMzdi
MjRjNTBmYzIxZGM2ZGM0NzFhYjA4ZWQ0ZWM1MDkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0
dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRl
eCA5MzNmNjlkNmM1YTYwZTZlZDcyOGJhMDgwZWVlODRmNTQ4MGRmMmQ2Li45M2Y2NTgxMmRhYzVk
ZThhZDVmY2RiNjcwZDhkMmY5ZTg2OTc4MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybiB7CiBwdWJs
aWM6CiAgICAgVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkgOiBtX2ludmFsaWQodHJ1ZSksIG1fbWF0
Y2hTdWJkb21haW5zKGZhbHNlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlclNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKaW5kZXggODUx
MGMxZjMzOTkwMWU5OTVmMzIwY2NjOWJmNzE5YjJlNDlhZTQyNy4uNTJjMTJmM2M2OTY2MzAyYWFl
ZjQ1NWI4ZmVmYmM5OWViZGE1ODRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKQEAgLTI1
LDcgKzI1LDcgQEAKICAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVzZXJDb250ZW50VHlwZXMuaCIKICNpbmNsdWRlICJV
c2VyU2NyaXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggNjhmMTBhODJhZGY4OThmMjUyYzQxNTU5Y2IxNjc4YWVj
OGM1MDg0MS4uYzQ3NDc2N2U3Yzk4YmI0OGE4ODNjYjczYjY5ODkwNWY2MDFkNzYwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAtMjUsNyArMjUsNyBAQAogIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSAiVXNlckNvbnRlbnRUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1Zpc2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9y
ZS5oCmluZGV4IDQzYzM1MTM3MmQ2MThiNjgxMDliMGZiOGNjZDY5ZmM4NWY4YmRkNzguLjI2ZDY1
MGRiYTc0ZGM1MDJjZjkzMDlhM2YzZDFjMDVkYTZiNjQ5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VmlzaXRlZExpbmtTdG9yZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogY2xhc3MgUGFnZTsKLWNsYXNz
IFVSTDsKIAogY2xhc3MgVmlzaXRlZExpbmtTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpc2l0
ZWRMaW5rU3RvcmU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgKaW5kZXggNWI1OTJmZDgyOGY5N2Y5NGMyM2FlMzM0OTY4YTVh
YjQ3ZDk2YzE2My4uZTAyYTdhYjZjNTliZmNmNWI5OWU2NDhmZmM2YzdlMjU0NGNmZmUzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAg
LTU2LDcgKzU2LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVGV4dEVuY29kaW5nOwot
Y2xhc3MgVVJMOwogc3RydWN0IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKIAogdHlwZWRl
ZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q+PiBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaAppbmRleCBlYjRmZTg3YzI5ZjFj
YWIxMThiZDFiMGRiZTY3NjNjYjEwNGYzMjMwLi44ZTA1MTgyNjQxNDA2ZjJjYzhjYWEyZGM1NmFl
MzM2MDYzNGU2YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaApAQCAtMzIsNyArMzIsNiBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGb3JtRGF0YTsKLWNsYXNzIFVSTDsKIAogc3RydWN0IENTUEluZm8g
ewogICAgIFN0cmluZyBkb2N1bWVudFVSSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAppbmRleCAy
OTA3MjUwZjBlYjFkYzRmZDA4ZmIyMDcyYzY4MzM3YjI4ZDdiMDI2Li5kZDUxMzAwZWMzYjAwMzMx
ZjMzYmQwMjczN2ExNThjMmFhYzYyMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oIgogI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZS5jcHAKaW5kZXggOTRiNGNjMTNjMGY2ZTQ1YmRhNGY1ZDgzYjRkMThlNzczMDNmNDM2
Yy4uZWIyMTk1YTIwNGE0YzZiZWE0N2E0NzA4NDEzYmMwYjdlNmYzNDlkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Uu
Y3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3ku
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAwLDE0ICsx
MDAsMTQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnBvcnRNYXRjaGVzKGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAoKG1fcG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
bV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29sSXMoImh0
dHBzIikpIHx8IChwb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCks
ICJodHRwcyIpKSkpCisgICAgaWYgKChtX3BvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29s
SXMoImh0dHBzIikpIHx8IChwb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBv
cnQudmFsdWUoKSwgImh0dHBzIikpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAo
IXBvcnQpCi0gICAgICAgIHJldHVybiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZh
bHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9y
dEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSk7CiAKICAgICBpZiAo
IW1fcG9ydCkKLSAgICAgICAgcmV0dXJuIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZh
bHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9y
dEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpOwogCiAgICAgcmV0dXJu
IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2UuaAppbmRleCA0ZWVhYmIwMTM2NTI1MWI2ZDg5NjMzY2E5NjgwZDAx
NWYyMzEwNmFhLi5hMmRiNTA0Mzg5OGYyZTY5NDdiYzdiMGEyZGQ2NDQzYWI1MTQzOGQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2UuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
b250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5E
YXRhOwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0LmNwcAppbmRleCAxYjQzMzEyNjYwMGE1MDFmOTVmNWU2M2I0MmRkNGNkZGRkOTU3OWIyLi4y
NmRhOTExNTM3NjRhZmY3MDQ4Njc4ZTYyN2Y3MmZjNGM3OTgxZDVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0LmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzLmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1
ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2VMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0LmgKaW5kZXggOWY2M2MzMDA2YTBjYTdmMmUzMzk5NDgwMWI1NDJj
MzY2NjhjMmU1NC4uNWZjZjNiMmVhZTRhOWU1Zjg0ODEwYmQ1M2M0NTU1MjQ0MDc3MjZmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3QuaApAQCAtMzYsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0RGlyZWN0aXZlLmNwcAppbmRleCBjMmJmMWQ0NWE1NWY1NzdmYTJkM2ZiNjAwYjJhYzlm
M2ZmMGNhMWU0Li4xYjA5MmI4NGZkMGJmN2Q2NmY4ZTFhYWZlMGYxYmFjNTMzNmFlNjVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0RGlyZWN0aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcApAQCAtMjksNyArMjksNyBAQAog
CiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCmluZGV4IGI5YTlk
MDBkNWJkMmZkYTlmYTdmYTE0ZWI5MTcxYWM4NjEyODU3YjguLjRiOGUxYWFlNmI0NzcwZWVkOTY3
ODFiNmRiZjY2YWJhMWUxMjU1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCkBAIC0yMywxNCArMjMsMTMgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcl9oCi0jZGVmaW5lIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogT0JKQ19DTEFTUyBOU0NvZGVyOwpAQCAtNzcsNSArNzYsMyBAQCBjbGFzcyBDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgewogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotCi0jZW5kaWYgLy8gQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVt
LmgKaW5kZXggNDc2YTNjMzZiOTViZGIxODdiYjU4OTMyZTAwM2JkMTFlZjMyYjQwNi4uMWIwZjc0
NTBiNDU3MmQ1NmE5MTNlNWMxZTdhYTU3Mzk4NDk0OGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb250ZXh0TWVudTsKIGNsYXNzIEltYWdlOwotY2xhc3MgVVJMOwogCiBl
bnVtIENvbnRleHRNZW51QWN0aW9uIHsKICAgICBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llLmgKaW5kZXggYjIxMjI0ZjFjYjlhMGRhOWFmNTg2YWI5YjA0
ZjM5MTI1NzZlY2Q5NC4uOGNiYTRkZjU5MzExNmMzZjIzZDJiNGJkYTRjZDNiM2RmNzkyNzk3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKQEAgLTI2LDggKzI2LDggQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29v
a2llc1N0cmF0ZWd5LmgKaW5kZXggYjQzOTc4Njg3ODEwOTVkMGMwOWE5OTZkMjQwNGEyZjRlOWQ5
OTlkYi4uOWIwZDVhNjhkOTJjOGU1NWFkOWQwZjlhYjMzOGY5NTE3NjI5ZDc3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKQEAgLTMzLDcgKzMzLDYgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwotY2xhc3Mg
VVJMOwogCiBzdHJ1Y3QgQ29va2llOwogc3RydWN0IFNhbWVTaXRlSW5mbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDFhNGE0NWY4MDVjYzUwNmFiOWYxOTFmODA2MTU3ODcwNGZm
NDkyMDYuLmU5MzA5NWZjN2IyYTBiMTM2ZDQ2NjE2ZDAyMjBjY2ViYTM5OWEwMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNTYsOCArNTYsNiBAQCB0eXBlZGVmIHZvaWQqIERy
YWdEYXRhUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogZW51bSBE
cmFnQXBwbGljYXRpb25GbGFncyB7CiAgICAgRHJhZ0FwcGxpY2F0aW9uTm9uZSA9IDAsCiAgICAg
RHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5o
CmluZGV4IGJlNWI0YzljMmE0NzA0YTFkYjkxMTJjNGNlOTRlYWM0M2YxNWQ2ZjkuLmYzMmE2ODQ1
YTY4NWM1YTBjMjFkYWY5MmMxZmMwZmVmNGE1MDAyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJbWFnZS5oCkBAIC01Nyw3ICs1Nyw2IEBAIGNsYXNzIEltYWdlOwogY2xhc3MgSW50UmVjdDsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKLWNsYXNzIFVSTDsKIAogI2lmIFBMQVRGT1JNKElP
UykKIHR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IERyYWdJbWFnZVJlZjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAppbmRleCA5NjdkZWRjN2JhNmVjZjQyOTJkZjE5Y2ZjMTg4
NTFkMTY2YjNhYTVmLi5iMmFhMjg0NDc5ZjdiMTIyNmViZjdhYWE5YjdmZGNhYzMwYzMzNzYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCkBAIC0zNSw4ICszNSw2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiAvLyBBbGwgbWV0aG9kcyBhcmUgc3lu
Y2hyb25vdXMuCiBjbGFzcyBGaWxlU3RyZWFtIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
aW5rSWNvbi5oCmluZGV4IDI4MTc1NDYwMzU5YWRmZjdhMGNmMmZlMWViN2ZmNDEzNGM1NzdlNTku
Ljg5ZTJmODk2OWJiNTI2YTM2NGRiNmI5MGUzMGE5Yjc3MWNkZTU4NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGlua0ljb24uaApAQCAtMjYsOSArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJMaW5rSWNvblR5cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCA3MzdhMzkwNDI1N2RlNjQz
YmMwZDlhYjk5YmMyNjRhMzE0ZmQ2ZmY3Li41NTVlYzI4MmU0YmI2NmU1ZjlkMTExMjBiOTc2MWE3
MjVlYmMzZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtMzAs
NyArMzAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2Vy
LmgiCisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
CkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgUGFzdGVib2FyZDo6aXNTYWZlVHlwZUZvckRPTVRvUmVh
ZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogYm9vbCBQYXN0ZWJvYXJkOjpjYW5FeHBv
c2VVUkxUb0RPTVdoZW5QYXN0ZWJvYXJkQ29udGFpbnNGaWxlcyhjb25zdCBTdHJpbmcmIHVybFN0
cmluZykKIHsKLSAgICBhdXRvIHVybCA9IFVSTFBhcnNlciB7IHVybFN0cmluZyB9LnJlc3VsdCgp
OworICAgIFVSTCB1cmwoeyB9LCB1cmxTdHJpbmcpOwogICAgIHJldHVybiB1cmwucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzQmxvYigpIHx8IHVybC5wcm90b2NvbElz
RGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggMjA2MzVh
YjAyOTRmMjk5N2UyOGZiZmZkNTA5ODY5NDhhOTliNjAzMC4uYTJiYTJiNzYwMGRkNGViYTI2OGY2
MjljZGQxOTE0MTM4ODFiZDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApA
QCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJQ
YXN0ZWJvYXJkSXRlbUluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggOTlkOGRkZmZhZTAwZWFjZTFhNjMyY2Iw
ZDNmNTM4MWEyM2ZhMzY1Yy4uYTViMzY1MGEwYmJjMGFmODhmOWFmNzQ0NDA4ZGVhZTk5NjBkYTlm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAg
LTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBT
ZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogc3RydWN0IFBh
c3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVi
b2FyZFVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmNwcAppbmRleCAzZDJkY2VlZDdjNTZlODcwOTY3ODk4MDdhNjdiZWUyZWQwMzI5MjdmLi5l
MjU2OTA3NGVlNWEyYjNlZjZjMjBlOGJlNDhkZmU3NTdhODA2OWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCkBAIC00OCw3ICs0OCw3
IEBAIHZvaWQgUGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFBsYWluVGV4dChQbGFpblRleHQgcGxh
aW5UZXh0KQogICAgIG1fcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpOwogfQogCi12b2lk
IFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpzZXRVUkwoVVJMIHVybCkKK3ZvaWQgUGFzdGVib2FyZFdy
aXRlckRhdGE6OnNldFVSTERhdGEoVVJMRGF0YSB1cmwpCiB7CiAgICAgQVNTRVJUKCFtX3VybCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmlu
ZGV4IGQ1M2ZkNzJmZjVlNmM0NGUwYTE2ZTc3ZjM5MWRhZmNkODQ2NTAyMGEuLjVmNDc1OTJiMTAx
OTUxMTkxMTc5NzY4OGU3ODU1MGY0OGJiZWQ1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNjYsOCArNjYsOCBAQCBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVy
RGF0YSBmaW5hbCB7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+JiBwbGFpblRl
eHQoKSBjb25zdCB7IHJldHVybiBtX3BsYWluVGV4dDsgfQogICAgIHZvaWQgc2V0UGxhaW5UZXh0
KFBsYWluVGV4dCk7CiAKLSAgICBzdHJ1Y3QgVVJMIHsKLSAgICAgICAgV2ViQ29yZTo6VVJMIHVy
bDsKKyAgICBzdHJ1Y3QgVVJMRGF0YSB7CisgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmlu
ZyB0aXRsZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFN0cmluZyB1c2VyVmlzaWJsZUZv
cm07CkBAIC03NiwxNSArNzYsMTUgQEAgY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwg
ewogI2VuZGlmCiAgICAgfTsKIAotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMPiYgdXJsKCkg
Y29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICB2b2lkIHNldFVSTChVUkwpOworICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8VVJMRGF0YT4mIHVybERhdGEoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQorICAgIHZvaWQgc2V0VVJMRGF0YShVUkxEYXRhKTsKIAogICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29udGVudD4mIHdlYkNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbnRlbnQ7
IH0KICAgICB2b2lkIHNldFdlYkNvbnRlbnQoV2ViQ29udGVudCk7CiAKIHByaXZhdGU6CiAgICAg
c3RkOjpvcHRpb25hbDxQbGFpblRleHQ+IG1fcGxhaW5UZXh0OwotICAgIHN0ZDo6b3B0aW9uYWw8
VVJMPiBtX3VybDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTERhdGE+IG1fdXJsOwogICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29udGVudD4gbV93ZWJDb250ZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA4ZTEzYmY0ZDg0MTQxM2JmMWMx
MTdkZWM5ZWZmODVjNDgyNGI4OGVmLi5lMGEyMTMzMzc0NmNkZjk0ZGQ3MGU5NWUzZjYyZWQwZDc4
MjAwMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aApAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNs
YXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiBzdHJ1
Y3QgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0
IFBhc3RlYm9hcmRJdGVtSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaAppbmRleCBkYmVjZmMxYjNiMTZkN2Y1ZTAzMDhlMTEwYWNkYTEx
MDJjYjQyMDdlLi5hOTU4YzJmMGFiMmQ5ZjFmMzc2NjJhN2EwYjYwMmJlMzEzNDMwN2I1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBA
IC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKLWNsYXNzIFVSTDsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogICAgIFVS
TCBibG9iVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU1NMS2V5R2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAppbmRl
eCAwNzY3MjM4NmY2OGVhYTk4MWZlN2M1OTdjMDVmNjFlZjhlNjczY2U0Li5jMmJkOGQ2ZTlkM2Fh
OTNlMjQ2MDI0ODYyYzFmM2IyMmY0NWE0ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
U0xLZXlHZW5lcmF0b3IuaApAQCAtMzEsOCArMzEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFVSTDsKLQogLy8gUmV0dXJucyBzdHJpbmdzIHJlcHJlc2VudGluZyBrZXkgc2l6
ZXMgdGhhdCBtYXkgYmUgdXNlZAogLy8gZm9yIHRoZSA8a2V5Z2VuPiB0YWcuIFRoZSBmaXJzdCBz
dHJpbmcgaXMgZGlzcGxheWVkIGFzIHRoZSBkZWZhdWx0CiAvLyBrZXkgc2l6ZSBpbiB0aGUgPGtl
eWdlbj4gbWVudS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcApp
bmRleCA5NDlkZTYzYWVmMDZjZmNmYWYwYzAyZDI0YzZhYzQ0ZTY2ZmUwYjk3Li43N2Y2YzM5MmE5
MTdmMGM5MTcyNjY1YTc2MThlNjcwNDM4YzRlNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2NoZW1lUmVnaXN0cnkuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogCi0jaW5jbHVkZSAiVVJMUGFyc2Vy
LmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgpAQCAtNTUxLDcgKzU1MSw3IEBAIGJvb2wg
U2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVt
ZSkKIAogYm9vbCBTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKGNvbnN0IFN0cmluZyYg
c2NoZW1lKQogewotICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIChhbGxCdWlsdGluU2No
ZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkgfHwgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoc2No
ZW1lKSk7CisgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgKGFsbEJ1aWx0aW5TY2hlbWVz
KCkuY29udGFpbnMoc2NoZW1lKSB8fCBXVEY6OlVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKHNj
aGVtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCmluZGV4IGUyYWFlMmYzMDQ1NzM1NWY0ODllZWM0YWI0ZWNmMWNlN2Qz
ZTQ1MmYuLmY4NjhjMmMwMWQ2YjEwZWNmMzY0YjFhNmZmZTNkZDQyZjVmNTIyODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC00MCw3ICs0MCw3IEBACiAjZW5kaWYK
IAogI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCisjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNlbmRpZgogCiAjaWYgVVNFKEdMSUIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCmluZGV4IDBjYzVmNjg3
ZDYyMWVmZTdlYWJhYzRkYmY5ZTU0NTQ3YTQ4ZGNlMTguLmFmYjc1N2NiZTQwMjJmZWRmYzQ3OTNl
YWJjMjU2OWU4NjBlOTU5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZFN0cmluZ0hhc2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0
cmluZ0hhc2guY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU2hhcmVkU3RyaW5nSGFzaC5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmgKaW5kZXggNzMyNDYx
N2JhNDk2YTA2NjNiZmQ1M2RlYzRhNDQzZDk3NjkzOWU4ZS4uMzYwM2NmMGYyZTdmOTIxNGIzZTI1
M2Y1NDc5ZDljYjM0NmIyN2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkU3RyaW5nSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0
cmluZ0hhc2guaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFVSTDsKLQogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogCiAvLyBVc2Ug
dGhlIGxvdyAzMi1iaXRzIG9mIHRoZSA2NC1iaXQgU2hhcmVkU3RyaW5nSGFzaCBhcyB0aGUga2V5
IGZvciBIYXNoU2V0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJj
ZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dAppbmRl
eCBjMDJlNDllNGU1MWVmNzQ5MzFmNzBkZDg2NTVkMzRkZTJkNjNlNDhiLi4yZTg1NmE5ODAwYzMz
N2E0MDUzMTY1MmM3MDRmM2UyZmI2ZmQzMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291
cmNlc1NvdXAudHh0CkBAIC00MSw0ICs0MSwzIEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9XZWJL
aXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwCiAKIHBsYXRmb3JtL3NvdXAvUHVibGljU3VmZml4U291
cC5jcHAKIHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKLXBsYXRmb3JtL3NvdXAv
VVJMU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiZGI0Njg2OTU4ZjMwMDA5MzMzNDQzMTg5NDc3YTlkNDVmNGY1ZDg4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTA5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxMS0yMDEzLCAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlVSTC5oIgotCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4K
LSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4
dFN0cmVhbS5oPgotCi0vLyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVzZSBvZiB0
aGUgKyBvcGVyYXRvciBvbiBTdHJpbmcuCi0vLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRpbWl6ZSB0
aGF0IG9wZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQotLy8gc28gbWFueSBhbGxvY2F0aW9u
cywgb3IgY2hhbmdlIHRoaXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgotCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLXR5cGVkZWYgVmVjdG9yPGNo
YXIsIDUxMj4gQ2hhckJ1ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVm
ZmVyOwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7
Ci0KLS8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxs
IHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKLS8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVm
ZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKLS8v
IGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVy
bWluYXRlIHRoZSByZXN1bHQuCi1zdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGNoYXIqIGRlc3QpCi17Ci0gICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG1lbWNweShkZXN0
LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAg
c2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxj
aGFyPihzcmNbaV0pOwotICAgIH0KLX0KLQotdm9pZCBVUkw6OmludmFsaWRhdGUoKQotewotICAg
IG1faXNWYWxpZCA9IGZhbHNlOwotICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNl
OwotICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOwotICAgIG1fc2NoZW1lRW5kID0gMDsK
LSAgICBtX3VzZXJTdGFydCA9IDA7Ci0gICAgbV91c2VyRW5kID0gMDsKLSAgICBtX3Bhc3N3b3Jk
RW5kID0gMDsKLSAgICBtX2hvc3RFbmQgPSAwOwotICAgIG1fcG9ydExlbmd0aCA9IDA7Ci0gICAg
bV9wYXRoRW5kID0gMDsKLSAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7Ci0gICAgbV9xdWVy
eUVuZCA9IDA7Ci19Ci0KLVVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiBy
ZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKLXsKLSAgICBVUkxQYXJz
ZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7Ci0gICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCi17
Ci0gICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQg
Y29udHJvbAotICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4g
KnVuc2lnbmVkKiBjaGFyIGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9u
bHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBjIDw9ICcgJzsKLX0KLQot
VVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICBVUkwgcmVzdWx0ID0gKnRoaXM7
Ci0gICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkg
Y29uc3QKLXsKLSAgICBpZiAoIWhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
Ci0gICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKLSAgICBpZiAobV9zdHJpbmdbZW5k
XSA9PSAnLycpCi0gICAgICAgIC0tZW5kOwotCi0gICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcu
cmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgKytzdGFydDsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVu
ZCAtIHN0YXJ0ICsgMSk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVu
ZCk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBz
dGFydCA9IGhvc3RTdGFydCgpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKLX0KLQotc3RkOjpvcHRpb25hbDx1aW50
MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcG9ydExlbmd0aCkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICB1bnNp
Z25lZCBudW1iZXI7Ci0gICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBudW1iZXIg
PSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RF
bmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwotICAgIGVsc2UKLSAgICAgICAgbnVtYmVy
ID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9z
dEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBudW1iZXIg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQotU3RyaW5nIFVSTDo6aG9zdEFu
ZFBvcnQoKSBjb25zdAotewotICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkpCi0gICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cG9ydC52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOwotfQotCi1TdHJp
bmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKLXsKLSAgICBTdHJpbmcgcmVzdWx0
ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7Ci0KLSAg
ICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgewotICAgICAgICBjb25zdCBp
bnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7Ci0gICAgICAgIHJlc3VsdC5yZW1vdmUobV91
c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdB
dFNpZ24pOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBTdHJpbmcg
ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0KQotewot
ICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAoIWlucHV0TGVu
Z3RoKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBWZWN0b3I8TENoYXI+IHBl
cmNlbnREZWNvZGVkOwotICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
aW5wdXRMZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsg
KytpKSB7Ci0gICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKLSAgICAgICAgICAgICYmIGlucHV0
TGVuZ3RoID4gMgotICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgotICAgICAgICAg
ICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKLSAgICAgICAgICAgICYmIGlzQVND
SUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7Ci0gICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51
bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJd
KSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcGVy
Y2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKLSAgICB9Ci0gICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5z
aXplKCkpOwotfQotCi1TdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZGVj
b2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Ci19Ci0KLVN0cmlu
ZyBVUkw6OnBhc3MoKSBjb25zdAotewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVu
ZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNl
cXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNl
ckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Ci19Ci0KLVN0cmluZyBV
Ukw6OmVuY29kZWRVc2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5n
KG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Ci19Ci0KLVN0cmluZyBVUkw6
OmVuY29kZWRQYXNzKCkgY29uc3QKLXsKLSAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJF
bmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJz
dHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOwotfQot
Ci1TdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAotewotICAgIGlmICghaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJl
dHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwotfQotCi1ib29sIFVSTDo6
aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1ZhbGlkICYm
IG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Ci19Ci0KLVN0cmluZyBVUkw6OmJhc2VB
c1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJM
YXN0U2xhc2gpOwotfQotCi0jaWYgIVVTRShDRikKLQotU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBh
dGgoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2Vz
RnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOwotfQotCi0jZW5kaWYKLQotI2lmZGVm
IE5ERUJVRwotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5n
VmlldykKLXsKLX0KLQotI2Vsc2UKLQotc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2Qo
U3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3Qg
bmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgotICAgIC8vIFRoZSBpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVycwotICAg
IC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3QgYW5kIHJl
bGllZCBvbiB0aGVzZSBjaGVja3MuCi0gICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHByb3RvY29s
LmNvZGVVbml0cygpKSB7Ci0gICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOwotICAg
ICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsKLSAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBw
ZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hh
cmFjdGVyKSA9PSBjaGFyYWN0ZXIpOwotICAgIH0KLX0KLQotI2VuZGlmCi0KLXN0YXRpYyBMb2Nr
IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKLQotdXNpbmcgRGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+
Owotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQotewotICAgIHN0YXRpYyBEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKLSAgICBy
ZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKLX0KLQotc3RhdGljIERlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
Rm9yVGVzdGluZygpCi17Ci0gICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmcq
JiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmcoKTsKLSAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCi0gICAgICAg
IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3Rpbmc7Ci0gICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOwotfQot
Ci12b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3Qg
cG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKLXsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgZW5zdXJl
RGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQp
OwotfQotCi12b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQot
ewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmdMb2NrKTsKLSAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKSkKLSAgICAgICAgbWFwLT5jbGVhcigpOwotfQotCi1zdGQ6Om9wdGlv
bmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wp
Ci17Ci0gICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmcoKSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgICAgIEFTU0VSVChvdmVycmlk
ZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRl
TWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KLSAgICAgICAgYXV0
byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENv
cHlpbmcoKSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCi0g
ICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotICAgIH0KLSAgICByZXR1cm4gVVJM
UGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKLX0KLQotYm9vbCBpc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkK
LXsKLSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsK
LX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Ci17
Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7Ci0KLSAgICAvLyBKYXZh
U2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVS
TCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCi0gICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJv
dG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKLSAgICBBU1NFUlQo
IWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2
YXNjcmlwdCIpKTsKLQotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcg
b2JqZWN0LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7
Ci0gICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
bV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZl
IGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KLX0KLQotYm9vbCBVUkw6
OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKLXsKLSAgICBhc3NlcnRQcm90
b2NvbElzR29vZChwcm90b2NvbCk7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIAotICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5sZW5ndGgo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0
aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgewotICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBVUkw6OnF1ZXJ5KCkg
Y29uc3QKLXsKLSAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCi0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsg
MSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAotfQotCi1TdHJpbmcgVVJMOjpwYXRo
KCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVu
Z3RoOwotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0g
cG9ydEVuZCk7Ci19Ci0KLWJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCi17
Ci0gICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0
ICc6Jy4KLSAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKLSAgICBT
dHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0g
ICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVt
ZShuZXdQcm90b2NvbCk7Ci0gICAgaWYgKCFjYW5vbmljYWxpemVkKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
KG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKLSAgICAgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fc2NoZW1lRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3Ry
aW5nKQotewotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0g
ICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0
cmluZy5sZW5ndGgoKSk7Ci19Ci0gICAgCi0vLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5h
bWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KLS8vIHRoZSBv
dXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KLS8v
IFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KLXN0YXRpYyBi
b29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3
IHN0cmluZykKLXsKLSAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSURO
LWVuY29kZWQgbmFtZS4KLSAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3
ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0g
ICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OwotICAgIAotICAg
IGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJ
KHN0cmluZykpIHsKLSAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1l
QnVmZmVyTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAg
IFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7Ci0g
ICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVS
TFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCi0gICAgICAgIHN0
cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1
ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsK
LSAgICAKLSAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJy
b3JzKSB7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3Rl
cnNDb252ZXJ0ZWQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi11bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3
b3JkRW5kICsgMTsKLX0KLQotdm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQotewot
ICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGNvbG9uSW5k
ZXggPSBzLmZpbmQoJzonKTsKLSAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOwotICAgIGlmICgh
YXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAKLSAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQo
KSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5h
bWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQo
bV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwotCi0gICAgVVJMUGFyc2VyIHBhcnNlcihi
dWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12
b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCi17Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAg
IHJldHVybjsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9o
b3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwot
fQotCi12b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQotewotICAgIGlmICghbV9p
c1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9y
dExlbmd0aDsKLSAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RF
bmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhT
dHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6
ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyht
X2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Ci19Ci0KLXZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0
KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmdW
aWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKLSAgICBTdHJpbmdWaWV3IHBvcnQ7Ci0gICAgCi0g
ICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOwotICAgIGlmIChjb2xvbklu
ZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29s
b25JbmRleCArIDEpOwotICAgICAgICBib29sIG9rOwotICAgICAgICBpbnQgcG9ydEludCA9IHBv
cnQudG9JbnRTdHJpY3Qob2spOwotICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygw
LCBjb2xvbkluZGV4KTsKLSAgICB9Ci0KLSAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7Ci0gICAgaWYg
KCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwotCi0gICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0
KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3RO
YW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAgIGlmICghcG9ydC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHBvcnQpOwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7Ci0KLSAgICBV
UkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29u
c3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCi17Ci0gICAgYXV0
byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgewotICAgICAg
ICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7Ci0gICAgICAgIGF1dG8qIGRhdGEgPSB1dGY4
LmRhdGEoKTsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBhdXRvIGxl
bmd0aCA9IHV0ZjgubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBs
ZW5ndGg7IGorKykgewotICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKLSAgICAgICAgICAg
IGlmIChzaG91bGRFbmNvZGUoYykpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
JScpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGMpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChjKSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChjKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwotICAgIH07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0
aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1dFtpXSkp
KQotICAgICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7Ci0gICAgfQotICAgIHJldHVybiBp
bnB1dDsKLX0KLQotdm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQotewotICAg
IGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFT
Q0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNl
KCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4g
anVzdCB0aGUgdXNlciBsb2dpbi4KLQotICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKLSAg
ICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29k
ZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwotICAg
ICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5k
ICsgMSkpCi0gICAgICAgICAgICB1ID0gIi8vIiArIHU7Ci0gICAgICAgIC8vIEFkZCAnQCcgaWYg
d2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQg
fHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKLSAgICAg
ICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBu
ZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFz
c3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKLSAg
ICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGlu
IHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtl
IGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7Ci0gICAgICAgICAg
ICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdCht
X3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAg
ICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
dm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKLXsKLSAgICBpZiAoIW1f
aXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29y
ZEVuZDsKLSAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgcCA9
ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5V
c2VySW5mb0VuY29kZVNldCkgKyAiQCI7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICBwID0gIi8vIiAr
IHA7Ci0gICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0
byBhZGQgb3VyIG93bi4KLSAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdb
ZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgVVJMUGFyc2VyIHBh
cnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3
ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2Vy
U3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9
PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29p
bmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKLSAg
ICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5n
KS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7
Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotdm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZp
ZXIpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJ
WE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBl
bnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPwotICAgIC8vIEZJWE1FOiBJcyBpdCBj
b3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJ
IGNoYXJhY3RlcnM/Ci0gICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1Zp
ZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVy
KSB9LnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkK
LXsKLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVu
Z3RoKCkgPiBtX3F1ZXJ5RW5kKQotICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9x
dWVyeUVuZCk7Ci19Ci0KLXZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmll
cigpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3Ry
aW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQpOwotICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhF
bmQ7Ci19Ci0KLXZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQotewotICAg
IGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogJyMnIGFu
ZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCi0gICAg
Ly8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2Rpbmcs
IG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3Vt
ZW50IGluIHRoaXMgZnVuY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2
Ci0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnku
aXNOdWxsKCkpIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJl
c3VsdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7Ci0gICAgfQotCi19Ci0KLXZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmlu
ZyYgcykKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3Ry
aW5nIHBhdGggPSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykK
LSAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0KLSAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNoYXJhY3Rl
ciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKLSAgICB9OwotICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9y
dExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Ci0g
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBpZiAoYS5t
X3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVu
c2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBi
LnN0cmluZygpW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwg
Y29uc3QgVVJMJiBiKQotewotICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7Ci0gICAgICAgIGlm
IChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIHByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBpZiAoYS5tX3Nj
aGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1
bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVu
Z3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRC
ID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5k
IC0gYi5ob3N0U3RhcnQoKTsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChh
LnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgLy8gQW5kIHRoZSBob3N0Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0
QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgaG9zdHNBcmVFcXVh
bChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRB
ID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5k
IC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsK
LSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKLSAg
ICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7Ci0gICAg
ICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFy
dEIgKyBpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21h
aW4pIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBp
ZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOwotICAgIGlmICghaG9zdC5lbmRzV2l0aChkb21h
aW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9
PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgp
IC0gMV0gPT0gJy4nOwotfQotCi1TdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhj
b25zdCBTdHJpbmcmIGlucHV0KQotewotICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVy
cyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwotfQotCi1ib29sIFVS
TDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9PSAnOicp
OwotICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKLX0KLQotdm9p
ZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAotewot
ICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUg
Y2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQotICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlk
IFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCi0gICAg
YnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgY29weUFTQ0lJKG1fc3RyaW5n
LCBidWZmZXIuZGF0YSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Ci1i
b29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFy
KiBwcm90b2NvbCkKLXsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBh
IG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXco
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29s
KSkpOwotICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBqID0gMDsgdXJsW2ldOyArK2kpIHsKLSAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3Bh
Y2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91
bGRUcmltRnJvbVVSTCh1cmxbaV0pKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlz
TGVhZGluZyA9IGZhbHNlOwotCi0gICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVz
LgotICAgICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ld
ID09ICdcbicpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIXByb3RvY29s
W2pdKQotICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7Ci0gICAgICAgIGlmICghaXNB
U0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICArK2o7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFy
KiBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9j
b2wpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2Nv
bElzSW50ZXJuYWwoc3RyaW5nLCBwcm90b2NvbCk7Ci19Ci0KLSNpZm5kZWYgTkRFQlVHCi0KLXZv
aWQgVVJMOjpwcmludCgpIGNvbnN0Ci17Ci0gICAgcHJpbnRmKCIlc1xuIiwgbV9zdHJpbmcudXRm
OCgpLmRhdGEoKSk7Ci19Ci0KLSNlbmRpZgotCi1TdHJpbmcgVVJMOjpzdHJpcHBlZEZvclVzZUFz
UmVmZXJyZXIoKSBjb25zdAotewotICAgIFVSTCByZWZlcnJlcigqdGhpcyk7Ci0gICAgcmVmZXJy
ZXIuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmcoKSk7Ci0g
ICAgcmVmZXJyZXIucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIHJlZmVy
cmVyLnN0cmluZygpOwotfQotCi1ib29sIFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdAotewotICAg
IC8vIEluY2x1ZGluZyBmZWVkIGhlcmUgbWlnaHQgYmUgYSBiYWQgaWRlYSBzaW5jZSBkcmFnIGFu
ZCBkcm9wIHVzZXMgdGhpcyBjaGVjawotICAgIC8vIGFuZCBpbmNsdWRpbmcgZmVlZCB3b3VsZCBh
bGxvdyBmZWVkcyB0byBwb3RlbnRpYWxseSBsZXQgc29tZW9uZSdzIGJsb2cKLSAgICAvLyByZWFk
IHRoZSBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJkIG9uIGEgZHJhZywgZXZlbiB3aXRob3V0IGEg
ZHJvcC4KLSAgICAvLyBMaWtld2lzZSB3aXRoIHVzaW5nIHRoZSBGcmFtZUxvYWRlcjo6c2hvdWxk
VHJlYXRVUkxBc0xvY2FsKCkgZnVuY3Rpb24uCi0gICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUi
KTsKLX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCkKLXsK
LSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQot
Ym9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCkKLXsKLSAgICByZXR1cm4g
cHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotYm9vbCBwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIGF1dG8gbGVuZ3RoID0g
dXJsLmxlbmd0aCgpOwotICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEg
bmV3IHN0cmluZyBvYmplY3QuCi0gICAgcmV0dXJuIGxlbmd0aCA+PSA1Ci0gICAgICAgICYmIGlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzBdLCAnaCcpCi0gICAgICAgICYmIGlzQVNDSUlB
bHBoYUNhc2VsZXNzRXF1YWwodXJsWzFdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwodXJsWzJdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwodXJsWzNdLCAncCcpCi0gICAgICAgICYmICh1cmxbNF0gPT0gJzonIHx8IChpc0FTQ0lJ
QWxwaGFDYXNlbGVzc0VxdWFsKHVybFs0XSwgJ3MnKSAmJiBsZW5ndGggPj0gNiAmJiB1cmxbNV0g
PT0gJzonKSk7Ci19Ci0KLWNvbnN0IFVSTCYgYmxhbmtVUkwoKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJvdXQ6YmxhbmsiKTsKLSAg
ICByZXR1cm4gc3RhdGljQmxhbmtVUkw7Ci19Ci0KLWJvb2wgVVJMOjppc0JsYW5rVVJMKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJcygiYWJvdXQiKTsKLX0KLQotYm9vbCBwb3J0QWxs
b3dlZChjb25zdCBVUkwmIHVybCkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0
ID0gdXJsLnBvcnQoKTsKLQotICAgIC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZlIGEgcG9y
dCwgcmV0dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBvcnQiIGNhc2UuCi0gICAgaWYgKCFwb3J0KQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0
Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KLSAgICAvLyBT
ZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRt
bCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgYmxvY2tl
ZFBvcnRMaXN0W10gPSB7Ci0gICAgICAgIDEsICAgIC8vIHRjcG11eAotICAgICAgICA3LCAgICAv
LyBlY2hvCi0gICAgICAgIDksICAgIC8vIGRpc2NhcmQKLSAgICAgICAgMTEsICAgLy8gc3lzdGF0
Ci0gICAgICAgIDEzLCAgIC8vIGRheXRpbWUKLSAgICAgICAgMTUsICAgLy8gbmV0c3RhdAotICAg
ICAgICAxNywgICAvLyBxb3RkCi0gICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KLSAgICAgICAgMjAs
ICAgLy8gRlRQLWRhdGEKLSAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKLSAgICAgICAgMjIs
ICAgLy8gU1NICi0gICAgICAgIDIzLCAgIC8vIHRlbG5ldAotICAgICAgICAyNSwgICAvLyBTTVRQ
Ci0gICAgICAgIDM3LCAgIC8vIHRpbWUKLSAgICAgICAgNDIsICAgLy8gbmFtZQotICAgICAgICA0
MywgICAvLyBuaWNuYW1lCi0gICAgICAgIDUzLCAgIC8vIGRvbWFpbgotICAgICAgICA3NywgICAv
LyBwcml2LXJqcwotICAgICAgICA3OSwgICAvLyBmaW5nZXIKLSAgICAgICAgODcsICAgLy8gdHR5
bGluawotICAgICAgICA5NSwgICAvLyBzdXBkdXAKLSAgICAgICAgMTAxLCAgLy8gaG9zdHJpYW1l
Ci0gICAgICAgIDEwMiwgIC8vIGlzby10c2FwCi0gICAgICAgIDEwMywgIC8vIGdwcGl0bnAKLSAg
ICAgICAgMTA0LCAgLy8gYWNyLW5lbWEKLSAgICAgICAgMTA5LCAgLy8gUE9QMgotICAgICAgICAx
MTAsICAvLyBQT1AzCi0gICAgICAgIDExMSwgIC8vIHN1bnJwYwotICAgICAgICAxMTMsICAvLyBh
dXRoCi0gICAgICAgIDExNSwgIC8vIFNGVFAKLSAgICAgICAgMTE3LCAgLy8gdXVjcC1wYXRoCi0g
ICAgICAgIDExOSwgIC8vIG5udHAKLSAgICAgICAgMTIzLCAgLy8gTlRQCi0gICAgICAgIDEzNSwg
IC8vIGxvYy1zcnYgLyBlcG1hcAotICAgICAgICAxMzksICAvLyBuZXRiaW9zCi0gICAgICAgIDE0
MywgIC8vIElNQVAyCi0gICAgICAgIDE3OSwgIC8vIEJHUAotICAgICAgICAzODksICAvLyBMREFQ
Ci0gICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCi0gICAgICAgIDUxMiwgIC8vIHByaW50IC8gZXhl
YwotICAgICAgICA1MTMsICAvLyBsb2dpbgotICAgICAgICA1MTQsICAvLyBzaGVsbAotICAgICAg
ICA1MTUsICAvLyBwcmludGVyCi0gICAgICAgIDUyNiwgIC8vIHRlbXBvCi0gICAgICAgIDUzMCwg
IC8vIGNvdXJpZXIKLSAgICAgICAgNTMxLCAgLy8gQ2hhdAotICAgICAgICA1MzIsICAvLyBuZXRu
ZXdzCi0gICAgICAgIDU0MCwgIC8vIFVVQ1AKLSAgICAgICAgNTQ4LCAgLy8gYWZwb3ZlcnRjcCBb
QXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDU1NiwgIC8vIHJlbW90ZWZzCi0gICAgICAgIDU2Mywg
IC8vIE5OVFArU1NMCi0gICAgICAgIDU4NywgIC8vIEVTTVRQCi0gICAgICAgIDYwMSwgIC8vIHN5
c2xvZy1jb25uCi0gICAgICAgIDYzNiwgIC8vIExEQVArU1NMCi0gICAgICAgIDk5MywgIC8vIElN
QVArU1NMCi0gICAgICAgIDk5NSwgIC8vIFBPUDMrU1NMCi0gICAgICAgIDIwNDksIC8vIE5GUwot
ICAgICAgICAzNjU5LCAvLyBhcHBsZS1zYXNsIC8gUGFzc3dvcmRTZXJ2ZXIgW0FwcGxlIGFkZGl0
aW9uXQotICAgICAgICA0MDQ1LCAvLyBsb2NrZAotICAgICAgICA0MTkwLCAvLyBNYW5hZ2VTaWV2
ZSBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDYwMDAsIC8vIFgxMQotICAgICAgICA2NjY1LCAv
LyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2NiwgLy8gQWx0ZXJu
YXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjcsIC8vIFN0YW5kYXJkIElSQyBb
QXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFk
ZGl0aW9uXQotICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0K
LSAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9uXQotICAg
ICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgaW52YWxpZFBv
cnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCi0gICAg
fTsKLQotICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3Qs
IGFsbG93IGl0LgotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJsb2NrZWRQ
b3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKLSAgICBpZiAoIXN0ZDo6Ymlu
YXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQ
b3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8g
QWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgotICAg
IGlmICgocG9ydC52YWx1ZSgpID09IDIxIHx8IHBvcnQudmFsdWUoKSA9PSAyMikgJiYgdXJsLnBy
b3RvY29sSXMoImZ0cCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEFsbG93IGFu
eSBwb3J0IG51bWJlciBpbiBhIGZpbGUgVVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIgaXMgaWdu
b3JlZC4KLSAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGUiKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJM
KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwodXJs
LCAiZGF0YSIpKTsKLQotICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9yIHdo
ZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVyPwotICAg
IC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRo
YXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJlY3QuCi0gICAgYXV0byBpbmRleCA9IHVybC5m
aW5kKCc7JywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBpbmRleCA9
IHVybC5maW5kKCcsJywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUgaXQgc291
bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcgdGV4dC9wbGFpbi4KLSAgICAgICAgLy8g
QnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNvbWUgdGlt
ZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBhdCB0aGlzIHRpbWUuCi0gICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLSAgICBpZiAoaW5kZXggPT0gNSkKLSAgICAgICAg
cmV0dXJuICJ0ZXh0L3BsYWluIl9zOwotICAgIEFTU0VSVChpbmRleCA+PSA1KTsKLSAgICByZXR1
cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7
Ci19Ci0KLVN0cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25l
ZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkK
LSAgICAgICAgcmV0dXJuIHN0cmluZygpOwotCi0gICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVu
Z3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7Ci19
Ci0KLVVSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRp
dmVQYXJ0KQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsg
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKLX0KLQot
VVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7Ci19Ci0K
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJsKQot
ewotICAgIHRzIDw8IHVybC5zdHJpbmcoKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLSNpZiAhUExB
VEZPUk0oQ09DT0EpICYmICFVU0UoU09VUCkKLXN0YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3Ry
aW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYXV0byBjb3VudCA9IDA7Ci0KLSAgICBmb3IgKGNvbnN0
IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicpKSB7Ci0g
ICAgICAgIGlmIChjb3VudCA+PSA0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gb2N0ZXQubGVuZ3RoKCk7Ci0gICAgICAgIGlmICghbGVu
Z3RoIHx8IGxlbmd0aCA+IDMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
YXV0byB2YWx1ZSA9IDA7Ci0gICAgICAgIGZvciAoYXV0byBpID0gMHU7IGkgPCBsZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgY29uc3QgYXV0byBkaWdpdCA9IG9jdGV0W2ldOwotCi0gICAgICAg
ICAgICAvLyBQcm9oaWJpdCBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmIChkaWdpdCA+
ICc5JyB8fCBkaWdpdCA8ICghaSAmJiBsZW5ndGggPiAxID8gJzEnIDogJzAnKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHZhbHVlID0gMTAgKiB2YWx1ZSAr
IChkaWdpdCAtICcwJyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodmFsdWUgPiAyNTUpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgY291bnQrKzsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gKGNvdW50ID09IDQpOwotfQotCi1zdGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNzKFN0
cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGVudW0gU2tpcFN0YXRlIHsgTm9uZSwgV2lsbFNraXAs
IFNraXBwaW5nLCBTa2lwcGVkLCBGaW5hbCB9OwotICAgIGF1dG8gc2tpcFN0YXRlID0gTm9uZTsK
LSAgICBhdXRvIGNvdW50ID0gMDsKLQotICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQgOiBzdHJp
bmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnOicpKSB7Ci0gICAgICAgIGlmIChjb3VudCA+
PSA4IHx8IHNraXBTdGF0ZSA9PSBGaW5hbCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IGhleHRldC5sZW5ndGgoKTsKLSAgICAgICAgaWYg
KCFsZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIDo6IG1heSBiZSB1c2VkIGFueXdoZXJlIHRvIHNr
aXAgMSB0byA4IGhleHRldHMsIGJ1dCBvbmx5IG9uY2UuCi0gICAgICAgICAgICBpZiAoc2tpcFN0
YXRlID09IFNraXBwZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
ICAgICBpZiAoc2tpcFN0YXRlID09IE5vbmUpCi0gICAgICAgICAgICAgICAgc2tpcFN0YXRlID0g
IWNvdW50ID8gV2lsbFNraXAgOiBTa2lwcGluZzsKLSAgICAgICAgICAgIGVsc2UgaWYgKHNraXBT
dGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGluZzsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNraXBTdGF0ZSA9
PSBXaWxsU2tpcCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoc2tp
cFN0YXRlID09IFNraXBwaW5nKQotICAgICAgICAgICAgc2tpcFN0YXRlID0gU2tpcHBlZDsKLQot
ICAgICAgICBpZiAobGVuZ3RoID4gNCkgewotICAgICAgICAgICAgLy8gQW4gSVB2NCBhZGRyZXNz
IG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBmaW5hbCB0d28gaGV4dGV0cy4KLSAgICAgICAg
ICAgIGlmICgoc2tpcFN0YXRlID09IE5vbmUgJiYgY291bnQgIT0gNikgfHwgKHNraXBTdGF0ZSA9
PSBTa2lwcGVkICYmIGNvdW50ID49IDYpIHx8ICFpc0lQdjRBZGRyZXNzKGhleHRldCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5h
bDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChjb25z
dCBhdXRvIGNvZGVVbml0IDogaGV4dGV0LmNvZGVVbml0cygpKSB7Ci0gICAgICAgICAgICAvLyBJ
UHY2IGFsbG93cyBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERp
Z2l0KGNvZGVVbml0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LQotICAgICAgICBjb3VudCsrOwotICAgIH0KLQotICAgIHJldHVybiAoY291bnQgPT0gOCAmJiBz
a2lwU3RhdGUgPT0gTm9uZSkgfHwgc2tpcFN0YXRlID09IFNraXBwZWQgfHwgc2tpcFN0YXRlID09
IEZpbmFsOwotfQotCi1ib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkK
LXsKLSAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBp
c0lQdjRBZGRyZXNzKGhvc3QpOwotCi0gICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7Ci19
Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YwZTM4YTcxYjYxYjRmZGE4MTZiNzRkNTMzOTM1
ZGY0MzFiNjZkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBVU0UoQ0YpCi10eXBlZGVm
IGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKLSNlbmRpZgotCi0jaWYgVVNFKFNPVVAp
Ci0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKLSNlbmRpZgotCi0jaWYgVVNFKEZPVU5EQVRJ
T04pCi1PQkpDX0NMQVNTIE5TVVJMOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotY2xhc3Mg
VGV4dFN0cmVhbTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkxUZXh0RW5j
b2RpbmcgewotcHVibGljOgotICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVS
TFBhcnNpbmcoU3RyaW5nVmlldykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgflVSTFRleHRFbmNv
ZGluZygpIHsgfTsKLX07Ci0KLXN0cnVjdCBVUkxIYXNoOwotCi1jbGFzcyBVUkwgewotcHVibGlj
OgotICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgot
ICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9Ci0KLSAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAgLy8gUmVzb2x2
ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQs
IHRoZQotICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkg
Y2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0eSwgaW4g
d2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMKLSAgICAv
LyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRo
aXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5r
IGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMKLSAgICAv
LyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4KLSAgICBX
RUJDT1JFX0VYUE9SVCBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZl
LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25z
dCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25z
dDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBoYXJtb25p
emVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBlbXB0eSBz
dHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8vIHN0YW5kYXJkIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KLQotICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkg
aWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIKLSAgICAvLyB0aHJlYWQuIFNpbmNl
IHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdz
Ci0gICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29weSgpIG92
ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIGlzb2xhdGVk
Q29weSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29sIGlzRW1w
dHkoKSBjb25zdDsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4KLSAgICAv
LyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQuCi0gICAg
Ym9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsg
fQotCi0gICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hp
Y2FsKCk7IH0KLSAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBT
dHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxl
bmd0aCA9IDEwMjQpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBwcm90
b2NvbCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHBhc3MoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aCgpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotCi0gICAgYm9vbCBoYXNVc2Vy
bmFtZSgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKLSAgICBib29sIGhh
c1F1ZXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OwotICAgIGJvb2wg
aGFzUGF0aCgpIGNvbnN0OwotCi0gICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygpLCB0aGVz
ZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAgLy8gVGhpcyBp
cyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5n
IGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBlbmNvZGVkVXNlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVk
UGFzcygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGJhc2VBc1N0cmluZygp
IGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29u
c3Q7Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wg
aXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCi0gICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVu
dC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OwotICAgIGJvb2wgcHJvdG9jb2xJcyhT
dHJpbmdWaWV3KSBjb25zdDsKLSAgICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3QgeyByZXR1
cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNMb2NhbEZpbGUoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQmxhbmtVUkwoKSBjb25zdDsKLSAgICBi
b29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJlQUJhc2VVUkw7
IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJp
bmcmKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0UHJvdG9jb2woY29uc3Qg
U3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwotCi0gICAgdm9pZCBy
ZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKLQotICAgIC8v
IElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgotICAgIHZvaWQgc2V0
SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHNldFVzZXIoY29uc3QgU3Ry
aW5nJik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOwotCi0gICAgLy8gSWYgeW91
IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5n
IHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBh
dGgoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBx
dWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAotICAgIC8vIGZvciB5
b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/
IiBpbiB0aGUKLSAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRo
ZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UXVlcnkoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZyYWdt
ZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVR
dWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOwotCi0gICAgdW5zaWduZWQgcGF0aFN0
YXJ0KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCgpIGNvbnN0OwotICAgIHVuc2lnbmVk
IHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0OwotCi0gICAgb3BlcmF0b3IgY29uc3QgU3RyaW5n
JigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0KLSNpZiBVU0UoQ0YpCi0gICAgV0VCQ09S
RV9FWFBPUlQgVVJMKENGVVJMUmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShTT1VQKQotICAg
IFVSTChTb3VwVVJJKik7Ci0gICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBjcmVhdGVTb3VwVVJJKCkg
Y29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFdFQkNPUkVfRVhQT1JU
IFVSTChOU1VSTCopOwotICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TVVJMKigpIGNvbnN0
OwotI2VuZGlmCi0jaWZkZWYgX19PQkpDX18KLSAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25z
dCB7IHJldHVybiBzdHJpbmcoKTsgfQotI2VuZGlmCi0KLSNpZm5kZWYgTkRFQlVHCi0gICAgdm9p
ZCBwcmludCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOwotICAgIHRlbXBsYXRlIDxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVyJik7Ci0K
LXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNlcjsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGludmFsaWRhdGUoKTsKLSAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0
cmluZyYsIGNvbnN0IGNoYXIqKTsKLSAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwg
NTEyPiYgYnVmZmVyKSBjb25zdDsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKLQot
ICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50
aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5k
IGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJM
JiwgY29uc3QgVVJMJik7Ci0KLSAgICBTdHJpbmcgbV9zdHJpbmc7Ci0KLSAgICB1bnNpZ25lZCBt
X2lzVmFsaWQgOiAxOwotICAgIHVuc2lnbmVkIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA6IDE7
Ci0gICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDogMTsKLQotICAgIC8vIFRoaXMgaXMg
b3V0IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRzIGJldHRlci4gVGhlIHBvcnQgaXMgYWZ0ZXIg
dGhlIGhvc3QuCi0gICAgdW5zaWduZWQgbV9wb3J0TGVuZ3RoIDogMzsKLSAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGggPSAoMSA8PCAzKSAtIDE7Ci0KLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVtZUxlbmd0aCA9ICgxIDw8IDI2KSAtIDE7Ci0g
ICAgdW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsKLSAgICB1bnNpZ25lZCBtX3VzZXJTdGFydDsK
LSAgICB1bnNpZ25lZCBtX3VzZXJFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXNzd29yZEVuZDsKLSAg
ICB1bnNpZ25lZCBtX2hvc3RFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7
Ci0gICAgdW5zaWduZWQgbV9wYXRoRW5kOwotICAgIHVuc2lnbmVkIG1fcXVlcnlFbmQ7Ci19Owot
Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVvZihTdHJpbmcpICsgOCAqIHNpemVv
Zih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwiKTsKLQotdGVtcGxhdGUgPGNsYXNz
IEVuY29kZXI+Ci12b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0g
ICAgZW5jb2RlciA8PCBtX3N0cmluZzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1i
b29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYgdXJsKQotewotICAgIGF1dG8g
b3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsKLSAgICBpZiAoIW9wdGlvbmFsVVJM
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdXJsID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLXN0ZDo6
b3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFN0cmlu
ZyBzdHJpbmc7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBVUkwoVVJMKCksIHN0cmluZyk7Ci19Ci0KLVdF
QkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5
QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci1XRUJDT1JFX0VYUE9SVCBib29s
IHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdF
QkNPUkVfRVhQT1JUIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsK
LQotV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiBibGFua1VSTCgpOwotCi0vLyBGdW5jdGlvbnMg
dG8gZG8gVVJMIG9wZXJhdGlvbnMgb24gc3RyaW5ncy4KLS8vIFRoZXNlIGFyZSBvcGVyYXRpb25z
IHRoYXQgYXJlbid0IGZhc3RlciBvbiBhIHBhcnNlZCBVUkwuCi0vLyBUaGVzZSBhcmUgYWxzbyBk
aWZmZXJlbnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3QgcmVxdWly
ZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KLS8vIFRoaXMgaXMg
ZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5v
dCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFVSTC4KLQotV0VCQ09SRV9FWFBPUlQg
Ym9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYg
dXJsKTsKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpOwotV0VCQ09S
RV9FWFBPUlQgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsK
LQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdW
aWV3IHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwotV0VCQ09SRV9FWFBPUlQg
Ym9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hv
dWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCi0KLVdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJEZWZh
dWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwotCi1ib29sIGlzVmFsaWRQcm90b2Nv
bChjb25zdCBTdHJpbmcmKTsKLQotU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpOwotCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3Nl
LCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRo
ZSBVUkwgU3RhbmRhcmQuCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2Fw
ZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKLQotLy8gSW5saW5lcy4KLQotaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYS5z
dHJpbmcoKSA9PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpID09IGI7
Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwm
IGIpCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5zdHJpbmcoKTsKLX0KLQotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJp
bmcoKSAhPSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVS
TCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpICE9IGI7Ci19
Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIp
Ci17Ci0gICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKLX0KLQotLy8gSW5saW5lIHZlcnNpb25z
IG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxpbmluZwot
Ly8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xh
c3MgZGVmaW5pdGlvbi4KLQotaW5saW5lIGJvb2wgVVJMOjppc051bGwoKSBjb25zdAotewotICAg
IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjppc0VtcHR5
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOwotfQotCi1pbmxpbmUg
Ym9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQ7Ci19Ci0K
LWlubGluZSBib29sIFVSTDo6aGFzUGF0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEVu
ZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFz
VXNlcm5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZXJFbmQgPiBtX3VzZXJTdGFydDsK
LX0KLQotaW5saW5lIGJvb2wgVVJMOjpoYXNQYXNzd29yZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fcGFzc3dvcmRFbmQgPiAobV91c2VyRW5kICsgMSk7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6
aGFzUXVlcnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3F1ZXJ5RW5kID4gbV9wYXRoRW5kOwot
fQotCi1pbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZDsKLX0KLQotaW5saW5l
IGJvb2wgVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwotfQotCi1pbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRo
U3RhcnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19
Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhFbmQoKSBjb25zdAotewotICAgIHJldHVybiBt
X3BhdGhFbmQ7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFzdFNsYXNoOwotfQotCi1XVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVj
dCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+OwotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0
czxXZWJDb3JlOjpVUkw+OwotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxI
YXNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZDBhYjk2ZGEzNWQzMWFjOGRi
NGViNGRhYmQzZjRlMTU5MmI4MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMSGFzaC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaWZuZGVmIFVSTEhhc2hfaAotI2RlZmluZSBVUkxIYXNoX2gKLQotI2luY2x1
ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgc3RydWN0
IFVSTEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCktPmhhc2go
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVSTCYgYSwg
Y29uc3QgVVJMJiBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6
ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAg
IH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIFVS
TEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nCi10ZW1wbGF0ZTw+IHN0cnVjdCBE
ZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+IHsKLSAgICB1c2luZyBIYXNoID0gV2ViQ29yZTo6VVJM
SGFzaDsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6VVJMPiA6
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+IHsgfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV1RGCi0KLSNlbmRpZiAvLyBVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJz
ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2JhYzQ5ZDliNjVkZThiMTA0
ZDVhNmY3NWIyNTgwYjhiODkyYzZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyOTI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
LSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlIDxhcnJheT4K
LSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8
dW5pY29kZS91dHlwZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jZGVmaW5lIFVSTF9Q
QVJTRVJfREVCVUdHSU5HIDAKLQotI2lmIFVSTF9QQVJTRVJfREVCVUdHSU5HCi0jZGVmaW5lIFVS
TF9QQVJTRVJfTE9HKC4uLikgTE9HKFVSTFBhcnNlciwgX19WQV9BUkdTX18pCi0jZWxzZQotI2Rl
ZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pCi0jZW5kaWYKLSAgICAKLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Ci1jbGFzcyBDb2RlUG9pbnRJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAg
QUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcigpIHsgfQotICAgIEFMV0FZU19JTkxJTkUg
Q29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogYmVnaW4sIGNvbnN0IENoYXJh
Y3RlclR5cGUqIGVuZCkKLSAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQotICAgICAgICAsIG1fZW5k
KGVuZCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRl
cmF0b3IoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIGJlZ2luLCBjb25zdCBDb2RlUG9pbnRJdGVy
YXRvciYgZW5kKQotICAgICAgICA6IENvZGVQb2ludEl0ZXJhdG9yKGJlZ2luLm1fYmVnaW4sIGVu
ZC5tX2JlZ2luKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGVuZC5tX2JlZ2luID49IGJlZ2luLm1f
YmVnaW4pOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIgb3BlcmF0b3Iq
KCkgY29uc3Q7Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvciYgb3BlcmF0b3Ir
KygpOwotCi0gICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZVBvaW50
SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0g
b3RoZXIubV9iZWdpbgotICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7Ci0gICAg
fQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAgICAKLSAg
ICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgQ29kZVBv
aW50SXRlcmF0b3ImIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9iZWdpbiA9IG90aGVyLm1fYmVn
aW47Ci0gICAgICAgIG1fZW5kID0gb3RoZXIubV9lbmQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsK
LSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgYXRFbmQoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fYmVnaW4gPD0gbV9lbmQpOwotICAgICAgICByZXR1cm4gbV9iZWdpbiA+
PSBtX2VuZDsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRz
U2luY2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogcmVmZXJlbmNlKSBjb25zdAotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fYmVnaW4gPj0gcmVmZXJlbmNlKTsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4g
LSByZWZlcmVuY2U7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRz
U2luY2UoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGNvZGVVbml0c1NpbmNlKG90aGVyLm1fYmVnaW4pOwotICAgIH0KLSAgICAKLXBy
aXZhdGU6Ci0gICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogbV9iZWdpbiB7IG51bGxwdHIgfTsKLSAg
ICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2VuZCB7IG51bGxwdHIgfTsKLX07Ci0KLXRlbXBsYXRl
PD4KLUFMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJh
dG9yKigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFhdEVuZCgpKTsKLSAgICByZXR1cm4gKm1fYmVn
aW47Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgYXV0byBDb2RlUG9pbnRJdGVyYXRv
cjxMQ2hhcj46Om9wZXJhdG9yKysoKSAtPiBDb2RlUG9pbnRJdGVyYXRvciYKLXsKLSAgICBtX2Jl
Z2luKys7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5F
IFVDaGFyMzIgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+OjpvcGVyYXRvciooKSBjb25zdAotewot
ICAgIEFTU0VSVCghYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjOwotICAgIFUxNl9HRVQobV9iZWdp
biwgMCwgMCwgbV9lbmQgLSBtX2JlZ2luLCBjKTsKLSAgICByZXR1cm4gYzsKLX0KLQotdGVtcGxh
dGU8PgotQUxXQVlTX0lOTElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPjo6b3BlcmF0
b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgotewotICAgIHVuc2lnbmVkIGkgPSAwOwotICAg
IHNpemVfdCBsZW5ndGggPSBtX2VuZCAtIG1fYmVnaW47Ci0gICAgVTE2X0ZXRF8xKG1fYmVnaW4s
IGksIGxlbmd0aCk7Ci0gICAgbV9iZWdpbiArPSBpOwotICAgIHJldHVybiAqdGhpczsKLX0KLSAg
ICAKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgYXBwZW5kQ29kZVBvaW50KFZlY3RvcjxVQ2hh
cj4mIGRlc3RpbmF0aW9uLCBVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBpZiAoVV9JU19CTVAo
Y29kZVBvaW50KSkgewotICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNo
YXI+KGNvZGVQb2ludCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGRlc3RpbmF0aW9u
LnJlc2VydmVDYXBhY2l0eShkZXN0aW5hdGlvbi5zaXplKCkgKyAyKTsKLSAgICBkZXN0aW5hdGlv
bi51bmNoZWNrZWRBcHBlbmQoVTE2X0xFQUQoY29kZVBvaW50KSk7Ci0gICAgZGVzdGluYXRpb24u
dW5jaGVja2VkQXBwZW5kKFUxNl9UUkFJTChjb2RlUG9pbnQpKTsKLX0KLQotZW51bSBVUkxDaGFy
YWN0ZXJDbGFzcyB7Ci0gICAgVXNlckluZm8gPSAweDEsCi0gICAgRGVmYXVsdCA9IDB4MiwKLSAg
ICBGb3JiaWRkZW5Ib3N0ID0gMHg0LAotICAgIFF1ZXJ5UGVyY2VudCA9IDB4OCwKLSAgICBTbGFz
aFF1ZXN0aW9uT3JIYXNoID0gMHgxMCwKLSAgICBWYWxpZFNjaGVtZSA9IDB4MjAsCi19OwotCi1z
dGF0aWMgY29uc3QgdWludDhfdCBjaGFyYWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7Ci0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHgwCi0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEKLSAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MgotICAgIFVzZXJJbmZvIHwgRGVmYXVs
dCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgzCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4NQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg2Ci0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDcKLSAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4OAotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4OQotICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4QQotICAgIFVzZXJJbmZv
IHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAweEMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweEQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQsIC8vIDB4RQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhGCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEw
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDExCi0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEyCi0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEzCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDE0Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDE1Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAw
eDE2Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE3Ci0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE4Ci0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE5Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAweDFBCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDFCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDFDCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFECi0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFFCi0gICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFGCi0gICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyAnCi0gICAgMCwgLy8gJyEn
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAnIicKLSAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9y
YmlkZGVuSG9zdCwgLy8gJyMnCi0gICAgMCwgLy8gJyQnCi0gICAgRm9yYmlkZGVuSG9zdCwgLy8g
JyUnCi0gICAgMCwgLy8gJyYnCi0gICAgMCwgLy8gJ1wnJwotICAgIDAsIC8vICcoJwotICAgIDAs
IC8vICcpJwotICAgIDAsIC8vICcqJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnKycKLSAgICAwLCAv
LyAnLCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJy0nCi0gICAgVmFsaWRTY2hlbWUsIC8vICcuJwot
ICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICcv
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzEnCi0gICAg
VmFsaWRTY2hlbWUsIC8vICcyJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMycKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJzQnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc1JwotICAgIFZhbGlkU2NoZW1lLCAv
LyAnNicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzcnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc4Jwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAnOScKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8v
ICc6JwotICAgIFVzZXJJbmZvLCAvLyAnOycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnPCcKLSAgICBVc2VySW5mbywgLy8gJz0nCi0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8g
Jz4nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJp
ZGRlbkhvc3QsIC8vICc/JwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ0AnCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdBJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnQicKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ0MnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdEJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnRScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0YnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdH
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0knCi0gICAg
VmFsaWRTY2hlbWUsIC8vICdKJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSycKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJ0wnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdNJwotICAgIFZhbGlkU2NoZW1lLCAv
LyAnTicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ08nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdQJwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAnUScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1InCi0gICAgVmFs
aWRTY2hlbWUsIC8vICdTJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnVCcKLSAgICBWYWxpZFNjaGVt
ZSwgLy8gJ1UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdWJwotICAgIFZhbGlkU2NoZW1lLCAvLyAn
VycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdZJwotICAg
IFZhbGlkU2NoZW1lLCAvLyAnWicKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICdb
JwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8v
ICdcXCcKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICddJwotICAgIFVzZXJJbmZv
LCAvLyAnXicKLSAgICAwLCAvLyAnXycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8vICdgJwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAnYScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2InCi0gICAgVmFs
aWRTY2hlbWUsIC8vICdjJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnZCcKLSAgICBWYWxpZFNjaGVt
ZSwgLy8gJ2UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdmJwotICAgIFZhbGlkU2NoZW1lLCAvLyAn
ZycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdpJwotICAg
IFZhbGlkU2NoZW1lLCAvLyAnaicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2snCi0gICAgVmFsaWRT
Y2hlbWUsIC8vICdsJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnbScKLSAgICBWYWxpZFNjaGVtZSwg
Ly8gJ24nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdvJwotICAgIFZhbGlkU2NoZW1lLCAvLyAncCcK
LSAgICBWYWxpZFNjaGVtZSwgLy8gJ3EnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdyJwotICAgIFZh
bGlkU2NoZW1lLCAvLyAncycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3QnCi0gICAgVmFsaWRTY2hl
bWUsIC8vICd1JwotICAgIFZhbGlkU2NoZW1lLCAvLyAndicKLSAgICBWYWxpZFNjaGVtZSwgLy8g
J3cnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAneScKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJ3onCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAneycKLSAg
ICBVc2VySW5mbywgLy8gJ3wnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAnfScKLSAgICAw
LCAvLyAnficKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4N0YKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4ODAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
ODIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODQK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODYKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4ODcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODgKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4ODkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEEKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OEIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEMKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OEQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEUKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OEYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTAKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTIKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTcK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTkKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUIKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUQKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUYKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTEKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTMKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTUKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUEK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUMKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUUKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjAKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QjEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjIKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjQKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QjUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjYKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjgKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkQK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkYKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QzAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzEKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QzIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzMKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QzQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzUKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QzYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzcKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QzgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzkKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4Q0EKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0IKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4Q0MKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0QKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
Q0UKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0YKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDAK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDIKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RDMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDQKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RDUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDYKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RDcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDgKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RDkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REEKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4REIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REMKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4REQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REUKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4REYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTMK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTUKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTcKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTkKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUIKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUQKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUYKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RjAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjEKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RjIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RjQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjYK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjgKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkEKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkMKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkUKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RkYKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRyb2woQ2hhcmFjdGVyVHlwZSBjaGFyYWN0
ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweDFGOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzQzBDb250cm9sT3JTcGFjZShD
aGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MjA7IH0KLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wg
aXNUYWJPck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3Rl
ciA8PSAweEQgJiYgY2hhcmFjdGVyID49IDB4OSAmJiBjaGFyYWN0ZXIgIT0gMHhCICYmIGNoYXJh
Y3RlciAhPSAweEM7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaXNJblNpbXBsZUVuY29kZVNldChDaGFyYWN0ZXJUeXBlIGNoYXJh
Y3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3RSB8fCBpc0MwQ29udHJvbChjaGFyYWN0ZXIp
OyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGlzSW5EZWZhdWx0RW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJl
dHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAm
IERlZmF1bHQ7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJ
TkUgc3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFj
dGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hh
cmFjdGVyXSAmIFVzZXJJbmZvOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzUGVyY2VudE9yTm9uQVNDSUkoQ2hhcmFjdGVyVHlw
ZSBjaGFyYWN0ZXIpIHsgcmV0dXJuICFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09
ICclJzsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBz
dGF0aWMgYm9vbCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIp
IHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXFwnICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFj
dGVyXSAmIFNsYXNoUXVlc3Rpb25Pckhhc2g7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNWYWxpZFNjaGVtZUNoYXJhY3RlcihD
aGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICd6JyAmJiBjaGFy
YWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBWYWxpZFNjaGVtZTsgfQotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0ZvcmJpZGRl
bkhvc3RDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3Rl
ciA8PSAnXScgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgRm9yYmlkZGVuSG9z
dDsgfQotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlC
eXRlKHVpbnQ4X3QgYnl0ZSwgY29uc3QgYm9vbCYgdXJsSXNTcGVjaWFsKQotewotICAgIGlmIChj
aGFyYWN0ZXJDbGFzc1RhYmxlW2J5dGVdICYgUXVlcnlQZXJjZW50KQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAoYnl0ZSA9PSAnXCcnICYmIHVybElzU3BlY2lhbCkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFVSTFBhcnNlcjo6aXNJblVz
ZXJJbmZvRW5jb2RlU2V0KFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmlzSW5Vc2Vy
SW5mb0VuY29kZVNldChjKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwg
VVJMUGFyc2VyOjpSZXBvcnRTeW50YXhWaW9sYXRpb24gcmVwb3J0U3ludGF4VmlvbGF0aW9uPgot
QUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQotewotICAgICsraXRl
cmF0b3I7Ci0gICAgd2hpbGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JO
ZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgIGlmIChyZXBvcnRTeW50YXhWaW9sYXRpb24g
PT0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXMpCi0gICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICsraXRlcmF0
b3I7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBV
UkxQYXJzZXI6OnRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4
VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50
YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIGJv
b2wgVVJMUGFyc2VyOjppc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCAhaXNB
U0NJSUFscGhhKCppdGVyYXRvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNl
PENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgq
aXRlcmF0b3IgPT0gJzonKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoVU5MSUtFTFko
Kml0ZXJhdG9yID09ICd8JykpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZl
cihVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBBU1NFUlQoaXNBU0NJSShjb2RlUG9pbnQpKTsK
LSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAgICBtX2Fz
Y2lpQnVmZmVyLmFwcGVuZChjb2RlUG9pbnQpOwotfQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgVVJM
UGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVf
dCBsZW5ndGgpCi17Ci0gICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkK
LSAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjphcHBlbmRX
aW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJh
dG9yKQotewotICAgIEFTU0VSVChpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikpOwotICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoKml0ZXJhdG9yKTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsK
LSAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwotICAgIEFTU0VSVCgqaXRlcmF0b3IgPT0g
JzonIHx8ICppdGVyYXRvciA9PSAnfCcpOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJ3wnKQotICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
JzonKTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmNvcHlC
YXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVSTCYgYmFzZSkKLXsKLSAgICBpZiAoYmFzZS5w
cm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5tX2hvc3RF
bmQgKyBiYXNlLm1fcG9ydExlbmd0aCA8IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAg
ICBpZiAoYmFzZS5tX3N0cmluZy5pczhCaXQoKSkgewotICAgICAgICAgICAgY29uc3QgTENoYXIq
IGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAgQ29kZVBv
aW50SXRlcmF0b3I8TENoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0
TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgICAg
IGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFdp
bmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBiZWdp
biA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczE2KCk7Ci0gICAgICAgICAgICBDb2RlUG9pbnRJ
dGVyYXRvcjxVQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5n
dGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAgICAgaWYg
KGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kV2luZG93
c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRDb3B5RmlsZVVS
TChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAo
IWlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZh
bmNlKGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgYWR2YW5jZShpdGVyYXRvcik7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiAhaXNTbGFzaFF1ZXN0aW9uT3JIYXNo
KCppdGVyYXRvcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3Qg
Ynl0ZSwgVmVjdG9yPExDaGFyPiYgYnVmZmVyKQotewotICAgIGJ1ZmZlci5hcHBlbmQoJyUnKTsK
LSAgICBidWZmZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLSAg
ICBidWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLX0KLQot
dm9pZCBVUkxQYXJzZXI6OnBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSkKLXsKLSAgICBB
U1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
JyUnKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0
KGJ5dGUpKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9BU0NJSUhleERp
Z2l0KGJ5dGUpKTsKLX0KLQotY29uc3QgY2hhciByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJj
ZW50RW5jb2RlZFsxMF0gPSAiJUVGJUJGJUJEIjsKLWNvbnN0IHNpemVfdCByZXBsYWNlbWVudENo
YXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCA9IHNpemVvZihyZXBsYWNlbWVudENoYXJh
Y3RlclVURjhQZXJjZW50RW5jb2RlZCkgLSAxOwotCi10ZW1wbGF0ZTxib29sKCppc0luQ29kZVNl
dCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQg
VVJMUGFyc2VyOjp1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsK
LSAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVyYXRvcjsKLSAgICBpZiAoTElLRUxZKGlzQVND
SUkoY29kZVBvaW50KSkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzSW5Db2RlU2V0KGNvZGVQ
b2ludCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAg
ICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBvaW50KTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvZGVQb2ludCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0luQ29kZVNldChjb2RlUG9pbnQpLCAi
aXNJbkNvZGVTZXQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBmb3Igbm9uLUFTQ0lJIGNoYXJh
Y3RlcnMiKTsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIAotICAgIGlmICgh
VV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkLCByZXBsYWNlbWVudENo
YXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCi0gICAgdWludDhfdCBidWZmZXJbVThfTUFYX0xFTkdUSF07Ci0gICAgaW50MzJfdCBv
ZmZzZXQgPSAwOwotICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQsIGNvZGVQb2lu
dCk7Ci0gICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgb2Zmc2V0OyArK2kpCi0gICAgICAgIHBl
cmNlbnRFbmNvZGVCeXRlKGJ1ZmZlcltpXSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UXVlcnlFbmNvZGUo
Y29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQotewotICAg
IEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRl
cmF0b3I7Ci0gICAgaWYgKExJS0VMWShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7Ci0gICAgICAgIGlm
IChVTkxJS0VMWShzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGNvZGVQb2ludCwgbV91cmxJ
c1NwZWNpYWwpKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAg
ICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgCi0g
ICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUihjb2RlUG9pbnQpKSB7Ci0gICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQsIHJlcGxh
Y2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwotICAgIGludDMy
X3Qgb2Zmc2V0ID0gMDsKLSAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCBjb2Rl
UG9pbnQpOwotICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytpKSB7Ci0gICAg
ICAgIGF1dG8gYnl0ZSA9IGJ1ZmZlcltpXTsKLSAgICAgICAgaWYgKHNob3VsZFBlcmNlbnRFbmNv
ZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQotICAgICAgICAgICAgcGVyY2VudEVu
Y29kZUJ5dGUoYnl0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoYnl0ZSk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgotdm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+
JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGF1dG8gZW5jb2RlZCA9IGVuY29k
aW5nLmVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldyhzb3VyY2UuZGF0YSgpLCBzb3VyY2Uu
c2l6ZSgpKSk7Ci0gICAgYXV0byogZGF0YSA9IGVuY29kZWQuZGF0YSgpOwotICAgIHNpemVfdCBs
ZW5ndGggPSBlbmNvZGVkLnNpemUoKTsKLSAgICAKLSAgICBpZiAoIWxlbmd0aCA9PSAhaXRlcmF0
b3IuYXRFbmQoKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHNpemVfdCBpID0gMDsKLSAgICBmb3IgKDsgaSA8
IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAg
ICAgIHVpbnQ4X3QgYnl0ZSA9IGRhdGFbaV07Ci0gICAgICAgIGlmIChVTkxJS0VMWShieXRlICE9
ICppdGVyYXRvcikpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxk
UGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpKSB7Ci0gICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKLSAgICAgICAgKytpdGVy
YXRvcjsKLSAgICB9Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXds
aW5lKCppdGVyYXRvcikpCi0gICAgICAgICsraXRlcmF0b3I7Ci0gICAgQVNTRVJUKChpID09IGxl
bmd0aCkgPT0gaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkg
ewotICAgICAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAgICB1aW50
OF90IGJ5dGUgPSBkYXRhW2ldOwotICAgICAgICBpZiAoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5
Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCi0gICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0
ZShieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihi
eXRlKTsKLSAgICB9Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVm
YXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKLXsKLSAgICBzdGF0aWMgY29u
c3QgdWludDE2X3QgZnRwUG9ydCA9IDIxOwotICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBnb3Bo
ZXJQb3J0ID0gNzA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBQb3J0ID0gODA7Ci0g
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBzUG9ydCA9IDQ0MzsKLSAgICBzdGF0aWMgY29u
c3QgdWludDE2X3Qgd3NQb3J0ID0gODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IHdzc1Bv
cnQgPSA0NDM7Ci0gICAgCi0gICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAg
aWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgc3dpdGNoIChz
Y2hlbWVbMF0pIHsKLSAgICBjYXNlICd3JzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAg
ICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHdzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAg
ICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4g
d3NzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBjYXNlICdoJzoK
LSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAg
aWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3Qn
Ci0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gaHR0cFBvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAg
ICBjYXNlIDU6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAg
ICAgICYmIHNjaGVtZVsyXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0g
J3AnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdzJykKLSAgICAgICAgICAgICAg
ICByZXR1cm4gaHR0cHNQb3J0OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IH0KLSAgICBjYXNlICdnJzoKLSAgICAgICAgaWYgKGxlbmd0aCA9PSA2Ci0gICAgICAgICAgICAm
JiBzY2hlbWVbMV0gPT0gJ28nCi0gICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnCi0gICAg
ICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0g
J2UnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNV0gPT0gJ3InKQotICAgICAgICAgICAgcmV0dXJu
IGdvcGhlclBvcnQ7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgY2FzZSAnZic6
Ci0gICAgICAgIGlmIChsZW5ndGggPT0gMwotICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICd0
JwotICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJykKLSAgICAgICAgICAgIHJldHVybiBm
dHBQb3J0OwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotfQotCi1lbnVtIGNsYXNzIFNjaGVtZSB7
Ci0gICAgV1MsCi0gICAgV1NTLAotICAgIEZpbGUsCi0gICAgRlRQLAotICAgIEdvcGhlciwKLSAg
ICBIVFRQLAotICAgIEhUVFBTLAotICAgIE5vblNwZWNpYWwKLX07Ci0KLUFMV0FZU19JTkxJTkUg
c3RhdGljIFNjaGVtZSBzY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpCi17Ci0gICAgYXV0byBsZW5n
dGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBT
Y2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKLSAgICBjYXNlICdm
JzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSAzOgotICAgICAgICAg
ICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0g
J3AnKQotICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkZUUDsKLSAgICAgICAgICAgIHJl
dHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlm
IChzY2hlbWVbMV0gPT0gJ2knCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdsJwot
ICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnZScpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6RmlsZTsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFs
OwotICAgICAgICB9Ci0gICAgY2FzZSAnZyc6Ci0gICAgICAgIGlmIChsZW5ndGggPT0gNgotICAg
ICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJwotICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICdwJwotICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJwotICAgICAgICAgICAgJiYgc2No
ZW1lWzRdID09ICdlJwotICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKLSAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6OkdvcGhlcjsKLSAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3Bl
Y2lhbDsKLSAgICBjYXNlICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAg
Y2FzZSA0OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAg
ICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdw
JykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpIVFRQOwotICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgaWYg
KHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0g
ICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJwotICAgICAgICAgICAgICAgICYmIHNj
aGVtZVs0XSA9PSAncycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRUUFM7Ci0g
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQotICAgIGNh
c2UgJ3cnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNlIDI6Ci0gICAg
ICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2No
ZW1lOjpXUzsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAg
IGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAgICAgICAgICAg
ICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpX
U1M7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgfQot
fQotCi1zdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICghaXNBU0NJSUFscGhhKHNj
aGVtZVswXSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBmb3IgKHNpemVf
dCBpID0gMTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmIChpc0FTQ0lJ
QWxwaGFudW1lcmljKHNjaGVtZVtpXSkgfHwgc2NoZW1lW2ldID09ICcrJyB8fCBzY2hlbWVbaV0g
PT0gJy0nIHx8IHNjaGVtZVtpXSA9PSAnLicpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NoZW1lLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hl
bWUoY29uc3QgU3RyaW5nJiBzY2hlbWVBcmcpCi17Ci0gICAgcmV0dXJuIHNjaGVtZShzY2hlbWVB
cmcpICE9IFNjaGVtZTo6Tm9uU3BlY2lhbDsKLX0KLQotZW51bSBjbGFzcyBVUkxQYXJzZXI6OlVS
TFBhcnQgewotICAgIFNjaGVtZUVuZCwKLSAgICBVc2VyU3RhcnQsCi0gICAgVXNlckVuZCwKLSAg
ICBQYXNzd29yZEVuZCwKLSAgICBIb3N0RW5kLAotICAgIFBvcnRFbmQsCi0gICAgUGF0aEFmdGVy
TGFzdFNsYXNoLAotICAgIFBhdGhFbmQsCi0gICAgUXVlcnlFbmQsCi19OwotCi1zaXplX3QgVVJM
UGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQoY29uc3QgVVJMJiB1cmwsIFVSTFBhcnQgcGFydCkK
LXsKLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBjYXNlIFVSTFBhcnQ6OlF1ZXJ5RW5kOgotICAg
ICAgICByZXR1cm4gdXJsLm1fcXVlcnlFbmQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgot
ICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRl
ckxhc3RTbGFzaDoKLSAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAg
ICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9ob3N0RW5kICsg
dXJsLm1fcG9ydExlbmd0aDsKLSAgICBjYXNlIFVSTFBhcnQ6Okhvc3RFbmQ6Ci0gICAgICAgIHJl
dHVybiB1cmwubV9ob3N0RW5kOwotICAgIGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6Ci0gICAg
ICAgIHJldHVybiB1cmwubV9wYXNzd29yZEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlVzZXJFbmQ6
Ci0gICAgICAgIHJldHVybiB1cmwubV91c2VyRW5kOwotICAgIGNhc2UgVVJMUGFydDo6VXNlclN0
YXJ0OgotICAgICAgICByZXR1cm4gdXJsLm1fdXNlclN0YXJ0OwotICAgIGNhc2UgVVJMUGFydDo6
U2NoZW1lRW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBVUkxQYXJzZXI6
OmNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBzaXplX3QgbGVuZ3Ro
KQotewotICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSBzdHJpbmcubGVuZ3RoKCkpOwotICAg
IGlmIChzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9hc2Np
aUJ1ZmZlci5pc0VtcHR5KCkpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMx
NigpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICBVQ2hhciBjID0gY2hhcmFjdGVyc1tpXTsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzQVNDSUkoYykpOwotICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcihjKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbChjb25zdCBV
UkwmIGJhc2UsIFVSTFBhcnQgcGFydCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqJiBub25VVEY4UXVlcnlFbmNv
ZGluZykKLXsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotCi0gICAgbV9hc2NpaUJ1
ZmZlci5jbGVhcigpOwotICAgIGNvcHlBU0NJSVN0cmluZ1VudGlsKGJhc2UubV9zdHJpbmcsIHVy
bExlbmd0aFVudGlsUGFydChiYXNlLCBwYXJ0KSk7Ci0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAg
Y2FzZSBVUkxQYXJ0OjpRdWVyeUVuZDoKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGJhc2Uu
bV9xdWVyeUVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRo
RW5kOgotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBiYXNlLm1fcGF0aEVuZDsKLSAgICAgICAg
RkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6Ci0gICAg
ICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgotICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBiYXNlLm1fcG9ydExlbmd0aDsKLSAgICAgICAgRkFM
TFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgotICAgICAgICBtX3VybC5tX2hv
c3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBV
UkxQYXJ0OjpQYXNzd29yZEVuZDoKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IGJhc2Uu
bV9wYXNzd29yZEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpV
c2VyRW5kOgotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBiYXNlLm1fdXNlckVuZDsKLSAgICAg
ICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyU3RhcnQ6Ci0gICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gYmFzZS5tX3VzZXJTdGFydDsKLSAgICAgICAgRkFMTFRIUk9VR0g7
Ci0gICAgY2FzZSBVUkxQYXJ0OjpTY2hlbWVFbmQ6Ci0gICAgICAgIG1fdXJsLm1faXNWYWxpZCA9
IGJhc2UubV9pc1ZhbGlkOwotICAgICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkg
PSBiYXNlLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsKLSAgICAgICAgbV91cmwubV9zY2hlbWVF
bmQgPSBiYXNlLm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBzd2l0Y2ggKHNjaGVtZShTdHJpbmdW
aWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpLCBtX3VybC5tX3NjaGVtZUVuZCkpKSB7Ci0gICAgY2Fz
ZSBTY2hlbWU6OldTOgotICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgIG5vblVURjhRdWVy
eUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6OkZpbGU6Ci0gICAgICAgIG1fdXJsSXNGaWxl
ID0gdHJ1ZTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBTY2hlbWU6OkZUUDoKLSAg
ICBjYXNlIFNjaGVtZTo6R29waGVyOgotICAgIGNhc2UgU2NoZW1lOjpIVFRQOgotICAgIGNhc2Ug
U2NoZW1lOjpIVFRQUzoKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6Ok5vblNwZWNpYWw6Ci0gICAgICAgIG1fdXJsSXNTcGVj
aWFsID0gZmFsc2U7Ci0gICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3Rh
dGljIGNvbnN0IGNoYXIgZG90QVNDSUlDb2RlWzJdID0geycyJywgJ2UnfTsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6Omlz
U2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykK
LXsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCpj
ID09ICcuJykgewotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZp
b2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hRdWVz
dGlvbk9ySGFzaCgqYyk7Ci0gICAgfQotICAgIGlmICgqYyAhPSAnJScpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlv
bjo6Tm8+KGMpOwotICAgIGlmIChjLmF0RW5kKCkgfHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRT
eW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKSB7
Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpO
bz4oYyk7Ci0gICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9uT3JIYXNo
KCpjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNEb3VibGVEb3RQ
YXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQotewotICAgIGlm
IChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKmMgPT0gJy4nKSB7
Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpO
bz4oYyk7Ci0gICAgICAgIHJldHVybiBpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpOwotICAgIH0K
LSAgICBpZiAoKmMgIT0gJyUnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxD
aGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5h
dEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29kZVswXSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7
Ci0gICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICh0b0FT
Q0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkgewotICAgICAgICBhZHZhbmNlPENoYXJh
Y3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4g
aXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1
bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
YykKLXsKLSAgICBBU1NFUlQoaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKSk7Ci0gICAgaWYgKCpj
ID09ICcuJykgewotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkg
ewotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAg
ICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJU
KCpjID09ICc/JyB8fCAqYyA9PSAnIycpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgIEFTU0VS
VCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBB
U1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAgICAgICBhZHZh
bmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkgewotICAgICAgICAgICAgaWYgKCpjID09
ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycp
OwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNEb3VibGVEb3RQYXRo
U2VnbWVudChjKSk7Ci0gICAgaWYgKCpjID09ICcuJykKLSAgICAgICAgYWR2YW5jZShjKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7
Ci0gICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNl
KGMpOwotICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0p
OwotICAgICAgICBhZHZhbmNlKGMpOwotICAgIH0KLSAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNl
Z21lbnQoYyk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKHVuc2lnbmVkIG5l
d1BhdGhBZnRlckxhc3RTbGFzaCkKLXsKLSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRp
b24pOwotICAgIGlmICghbV91cmxJc0ZpbGUpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
QVNTRVJUKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgp
KTsKLSAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gY29tcG9uZW50VG9Qb3AoJm1fYXNjaWlC
dWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSwgJm1fYXNjaWlCdWZmZXJbMF0gKyBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCk7Ci0gICAgaWYgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9PSBt
X3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxICYmIGlzV2luZG93c0RyaXZl
TGV0dGVyKGNvbXBvbmVudFRvUG9wKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biB0cnVlOwotfQotCi12b2lkIFVSTFBhcnNlcjo6cG9wUGF0aCgpCi17Ci0gICAgQVNTRVJUKG1f
ZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICBpZiAobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxKSB7Ci0gICAgICAg
IGF1dG8gbmV3UGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
LSAxOwotICAgICAgICBpZiAobV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdID09
ICcvJykKLSAgICAgICAgICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaC0tOwotICAgICAgICB3aGls
ZSAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0
TGVuZ3RoICYmIG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSAhPSAnLycpCi0g
ICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKLSAgICAgICAgbmV3UGF0aEFmdGVy
TGFzdFNsYXNoKys7Ci0gICAgICAgIGlmIChzaG91bGRQb3BQYXRoKG5ld1BhdGhBZnRlckxhc3RT
bGFzaCkpCi0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG5ld1BhdGhB
ZnRlckxhc3RTbGFzaDsKLSAgICB9Ci0gICAgbV9hc2NpaUJ1ZmZlci5yZXNpemUobV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgotdm9pZCBVUkxQYXJzZXI6OnN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgaWYgKG1fZGlkU2VlU3ludGF4Vmlv
bGF0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0
cnVlOwotICAgIAotICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7Ci0gICAgc2l6
ZV90IGNvZGVVbml0c1RvQ29weSA9IGl0ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlwZSo+KG1faW5wdXRCZWdpbikpOwotICAgIFJFTEVBU0Vf
QVNTRVJUKGNvZGVVbml0c1RvQ29weSA8PSBtX2lucHV0U3RyaW5nLmxlbmd0aCgpKTsKLSAgICBt
X2FzY2lpQnVmZmVyLnJlc2VydmVDYXBhY2l0eShtX2lucHV0U3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVVbml0c1RvQ29weTsgKytpKSB7Ci0gICAgICAg
IEFTU0VSVChpc0FTQ0lJKG1faW5wdXRTdHJpbmdbaV0pKTsKLSAgICAgICAgbV9hc2NpaUJ1ZmZl
ci51bmNoZWNrZWRBcHBlbmQobV9pbnB1dFN0cmluZ1tpXSk7Ci0gICAgfQotfQotCi12b2lkIFVS
TFBhcnNlcjo6ZmFpbHVyZSgpCi17Ci0gICAgbV91cmwuaW52YWxpZGF0ZSgpOwotICAgIG1fdXJs
Lm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpjaGVja0xvY2FsaG9zdENvZGVQb2ludChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIFVDaGFyMzIgY29kZVBvaW50KQot
ewotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8IHRvQVNDSUlMb3dlcigqaXRlcmF0b3IpICE9
IGNvZGVQb2ludCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJz
ZXI6OmlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0
b3IpCi17Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2wnKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQo
aXRlcmF0b3IsICdvJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9j
YWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYycpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2EnKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3Is
ICdsJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29k
ZVBvaW50KGl0ZXJhdG9yLCAnaCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFj
aGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ28nKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdzJykpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0
ZXJhdG9yLCAndCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGl0ZXJhdG9y
LmF0RW5kKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc0xvY2FsaG9zdChTdHJpbmdWaWV3IHZp
ZXcpCi17Ci0gICAgaWYgKHZpZXcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBpc0F0TG9jYWxo
b3N0KENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPih2aWV3LmNoYXJhY3RlcnM4KCksIHZpZXcuY2hh
cmFjdGVyczgoKSArIHZpZXcubGVuZ3RoKCkpKTsKLSAgICByZXR1cm4gaXNBdExvY2FsaG9zdChD
b2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4odmlldy5jaGFyYWN0ZXJzMTYoKSwgdmlldy5jaGFyYWN0
ZXJzMTYoKSArIHZpZXcubGVuZ3RoKCkpKTsKLX0KLQotQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3
IFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXcoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoKQot
ewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpIHsKLSAgICAgICAg
QVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAg
cmV0dXJuIFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZlci5kYXRhKCkgKyBzdGFydCwgbGVuZ3RoKTsK
LSAgICB9Ci0gICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1faW5wdXRTdHJpbmcubGVuZ3Ro
KCkpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1faW5wdXRTdHJpbmcpLnN1YnN0cmluZyhzdGFy
dCwgbGVuZ3RoKTsKLX0KLQotQUxXQVlTX0lOTElORSBVQ2hhciBVUkxQYXJzZXI6OnBhcnNlZERh
dGFWaWV3KHNpemVfdCBwb3NpdGlvbikKLXsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50
YXhWaW9sYXRpb24pKQotICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlcltwb3NpdGlvbl07Ci0g
ICAgcmV0dXJuIG1faW5wdXRTdHJpbmdbcG9zaXRpb25dOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzaXplX3QgVVJMUGFyc2VyOjpjdXJyZW50
UG9zaXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9y
KQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCi0gICAgICAg
IHJldHVybiBtX2FzY2lpQnVmZmVyLnNpemUoKTsKLSAgICAKLSAgICByZXR1cm4gaXRlcmF0b3Iu
Y29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBDaGFyYWN0ZXJUeXBlKj4obV9p
bnB1dEJlZ2luKSk7Ci19Ci0KLVVSTFBhcnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0cmluZyYgaW5w
dXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlF
bmNvZGluZykKLSAgICA6IG1faW5wdXRTdHJpbmcoaW5wdXQpCi17Ci0gICAgaWYgKGlucHV0Lmlz
TnVsbCgpKSB7Ci0gICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJl
QUJhc2VVUkwpIHsKLSAgICAgICAgICAgIG1fdXJsID0gYmFzZTsKLSAgICAgICAgICAgIG1fdXJs
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoaW5wdXQuaXM4Qml0KCkpIHsKLSAgICAgICAgbV9pbnB1dEJlZ2lu
ID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczgo
KSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1dC5jaGFyYWN0ZXJzMTYoKTsKLSAgICAg
ICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczE2KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25V
VEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX3VybC5tX2lzVmFsaWQK
LSAgICAgICAgfHwgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPT0gKG1fdXJsLnN0cmluZygpICE9
IGlucHV0KQotICAgICAgICB8fCAoaW5wdXQuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0MwQ29u
dHJvbE9yU3BhY2U+KCkKLSAgICAgICAgICAgICYmIG1fdXJsLm1fc3RyaW5nID09IGJhc2UubV9z
dHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpKSk7Ci0gICAgQVNTRVJUKGludGVybmFsVmFsdWVz
Q29uc2lzdGVudChtX3VybCkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpZiAoIW1fZGlk
U2VlU3ludGF4VmlvbGF0aW9uKSB7Ci0gICAgICAgIC8vIEZvcmNlIGEgc3ludGF4IHZpb2xhdGlv
biBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0Lgot
ICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoIiAiLCBpbnB1dCksIGJhc2UsIG5v
blVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgVVJMIHBhcnNlZCA9IHBhcnNlci5yZXN1bHQo
KTsKLSAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBBU1NFUlQoYWxs
VmFsdWVzRXF1YWwocGFyc2VyLnJlc3VsdCgpLCBtX3VybCkpOwotICAgIH0KLSNlbmRpZgotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNl
KGNvbnN0IENoYXJhY3RlclR5cGUqIGlucHV0LCBjb25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0
IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNvZGluZykK
LXsKLSAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2luZyBVUkwgPCVzPiBiYXNlIDwlcz4iLCBTdHJp
bmcoaW5wdXQsIGxlbmd0aCkudXRmOCgpLmRhdGEoKSwgYmFzZS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICBtX3VybCA9IHsgfTsKLSAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5
KCkpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBxdWVyeUJ1ZmZlcjsKLQotICAgIHVuc2lnbmVkIGVu
ZEluZGV4ID0gbGVuZ3RoOwotICAgIHdoaWxlIChVTkxJS0VMWShlbmRJbmRleCAmJiBpc0MwQ29u
dHJvbE9yU3BhY2UoaW5wdXRbZW5kSW5kZXggLSAxXSkpKSB7Ci0gICAgICAgIHN5bnRheFZpb2xh
dGlvbihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihpbnB1dCwgaW5wdXQpKTsKLSAg
ICAgICAgZW5kSW5kZXgtLTsKLSAgICB9Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4gYyhpbnB1dCwgaW5wdXQgKyBlbmRJbmRleCk7Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4gYXV0aG9yaXR5T3JIb3N0QmVnaW47Ci0gICAgQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gcXVlcnlCZWdpbjsKLSAgICB3aGlsZSAoVU5MSUtFTFkoIWMuYXRF
bmQoKSAmJiBpc0MwQ29udHJvbE9yU3BhY2UoKmMpKSkgewotICAgICAgICBzeW50YXhWaW9sYXRp
b24oYyk7Ci0gICAgICAgICsrYzsKLSAgICB9Ci0gICAgYXV0byBiZWdpbkFmdGVyQ29udHJvbEFu
ZFNwYWNlID0gYzsKLQotICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKLSAgICAgICAg
U2NoZW1lU3RhcnQsCi0gICAgICAgIFNjaGVtZSwKLSAgICAgICAgTm9TY2hlbWUsCi0gICAgICAg
IFNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5LAotICAgICAgICBQYXRoT3JBdXRob3JpdHksCi0g
ICAgICAgIFJlbGF0aXZlLAotICAgICAgICBSZWxhdGl2ZVNsYXNoLAotICAgICAgICBTcGVjaWFs
QXV0aG9yaXR5U2xhc2hlcywKLSAgICAgICAgU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMs
Ci0gICAgICAgIEF1dGhvcml0eU9ySG9zdCwKLSAgICAgICAgSG9zdCwKLSAgICAgICAgRmlsZSwK
LSAgICAgICAgRmlsZVNsYXNoLAotICAgICAgICBGaWxlSG9zdCwKLSAgICAgICAgUGF0aFN0YXJ0
LAotICAgICAgICBQYXRoLAotICAgICAgICBDYW5ub3RCZUFCYXNlVVJMUGF0aCwKLSAgICAgICAg
VVRGOFF1ZXJ5LAotICAgICAgICBOb25VVEY4UXVlcnksCi0gICAgICAgIEZyYWdtZW50LAotICAg
IH07Ci0KLSNkZWZpbmUgTE9HX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJTdGF0ZSAlcywgY29k
ZSBwb2ludCAlYywgcGFyc2VkIGRhdGEgPCVzPiBzaXplICV6dSIsIHgsICpjLCBwYXJzZWREYXRh
VmlldygwLCBjdXJyZW50UG9zaXRpb24oYykpLnV0ZjgoKS5kYXRhKCksIGN1cnJlbnRQb3NpdGlv
bihjKSkKLSNkZWZpbmUgTE9HX0ZJTkFMX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJGaW5hbCBT
dGF0ZTogJXMiLCB4KQotCi0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6U2NoZW1lU3RhcnQ7Ci0g
ICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXds
aW5lKCpjKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAg
ICsrYzsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNo
IChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKLSAgICAgICAgICAg
IExPR19TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGEo
KmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQot
ICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAgICAgICAgICBh
ZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJD
b250cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTY2hlbWU7Ci0gICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAgICAgICBM
T0dfU1RBVEUoIlNjaGVtZSIpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWRTY2hlbWVDaGFyYWN0
ZXIoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqYykp
KQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgc2NoZW1lRW5k
ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChzY2hlbWVFbmQgPiBV
Ukw6Om1heFNjaGVtZUxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBzY2hlbWVFbmQ7Ci0gICAgICAgICAgICAgICAgU3Ry
aW5nVmlldyB1cmxTY2hlbWUgPSBwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCk7
Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAg
ICAgIHN3aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFNj
aGVtZTo6RmlsZToKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICBtX3VybElzRmlsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OldTOgot
ICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgICAgICAgICAgICAgIG5v
blVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJ
c1NwZWNpYWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5wcm90b2NvbElz
KHVybFNjaGVtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVj
aWFsUmVsYXRpdmVPckF1dGhvcml0eTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM7
Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFA6Ci0gICAgICAgICAgICAgICAgY2FzZSBT
Y2hlbWU6OkhUVFBTOgotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhU
VFBGYW1pbHkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAg
ICAgICAgICAgICBjYXNlIFNjaGVtZTo6RlRQOgotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1l
OjpHb3BoZXI6Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJvdG9jb2xJcyh1cmxTY2hlbWUpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3Jp
dHk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOwotICAgICAgICAgICAgICAgICAg
ICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
U2NoZW1lOjpOb25TcGVjaWFsOgotICAgICAgICAgICAgICAgICAgICBub25VVEY4UXVlcnlFbmNv
ZGluZyA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbWF5YmVTbGFzaCA9IGM7
Ci0gICAgICAgICAgICAgICAgICAgIGFkdmFuY2UobWF5YmVTbGFzaCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghbWF5YmVTbGFzaC5hdEVuZCgpICYmICptYXliZVNsYXNoID09ICcvJykgewot
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYyA9IG1heWJlU2xhc2g7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpQYXRoT3JBdXRob3JpdHk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoKmMgPT0gJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMp
OwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
KytjOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50
UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX2Nhbm5vdEJlQUJhc2VVUkwgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6Tm9TY2hlbWU7Ci0gICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5k
U3BhY2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgewotICAgICAgICAgICAg
ICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xBbmRTcGFj
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRl
OjpOb1NjaGVtZToKLSAgICAgICAgICAgIExPR19TVEFURSgiTm9TY2hlbWUiKTsKLSAgICAgICAg
ICAgIGlmICghYmFzZS5pc1ZhbGlkKCkgfHwgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpj
ICE9ICcjJykpIHsKLSAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGJhc2UubV9jYW5ub3RCZUFC
YXNlVVJMICYmICpjID09ICcjJykgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGls
KGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghYmFzZS5wcm90b2Nv
bElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvcHlV
UkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eToKLSAgICAgICAgICAgIExPR19TVEFU
RSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAn
LycpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAg
ICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJy8nKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0g
ICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDsKLSAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKLSAgICAgICAg
ICAgIExPR19TVEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0g
Jy8nKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKLSAgICAgICAgICAgICAg
ICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFW
aWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAgICAgbV91
cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICAgICAgICAg
IG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlJlbGF0aXZlIik7
Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAgICAgICBjYXNlICcvJzoKLSAgICAg
ICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2
ZVNsYXNoOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgJz8nOgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJh
c2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAg
ICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlICcjJzoKLSAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChi
YXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKLSAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24oYykgJiYg
cGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgIT0gJy8nKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKLSAgICAgICAgICAgIExPR19TVEFURSgi
UmVsYXRpdmVTbGFzaCIpOwotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwn
KSB7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1Vu
dGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwot
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjovLyIsIDMpOwotICAgICAgICAg
ICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhv
c3Q7Ci0gICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGNvcHlV
UkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29k
aW5nKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1faG9zdEVuZCArIGJh
c2UubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRo
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6
OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFs
QXV0aG9yaXR5U2xhc2hlcyIpOwotICAgICAgICAgICAgaWYgKExJS0VMWSgqYyA9PSAnLycgfHwg
KmMgPT0gJ1xcJykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykp
Ci0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZShjKTsK
LSAgICAgICAgICAgICAgICBpZiAoTElLRUxZKCFjLmF0RW5kKCkgJiYgKCpjID09ICcvJyB8fCAq
YyA9PSAnXFwnKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICdc
XCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCIvLyIsIDIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6Ci0gICAg
ICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzIik7Ci0gICAg
ICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpIHsKLSAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Ci0g
ICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0eU9ySG9zdDoK
LSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkF1dGhvcml0eU9y
SG9zdCIpOwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnQCcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYXV0byBsYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICBhdXRvIGZpbmRMYXN0
QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWZpbmRMYXN0QXQuYXRFbmQoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgVVJMX1BBUlNFUl9MT0coIkZpbmRpbmcgbGFzdCBA
OiAlYyIsICpmaW5kTGFzdEF0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZmluZExh
c3RBdCA9PSAnQCcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEF0ID0gZmluZExh
c3RBdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTbGFzaCA9ICpmaW5kTGFzdEF0
ID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmZpbmRMYXN0QXQgPT0gJ1xcJyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8fCAqZmluZExhc3RBdCA9PSAnPycgfHwg
KmZpbmRMYXN0QXQgPT0gJyMnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgKytmaW5kTGFzdEF0OwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBsYXN0QXQpKTsKLSAgICAgICAg
ICAgICAgICAgICAgYyA9IGxhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgYWR2YW5jZShjKTsK
LSAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIb3N0OwotICAgICAgICAgICAgICAgICAgICBtX2hv
c3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1NsYXNoID0gKmMg
PT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKTsKLSAgICAgICAgICAgICAg
ICBpZiAoaXNTbGFzaCB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGF1dG8gaXRlcmF0b3IgPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihh
dXRob3JpdHlPckhvc3RCZWdpbiwgYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdGVyYXRv
ci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJF
bmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3Vz
ZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3Vy
bC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYXV0aG9yaXR5T3JI
b3N0QmVnaW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IG1fdXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0
QW5kUG9ydChpdGVyYXRvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJl
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc1NsYXNo
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJ
KCpjKSkKLSAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0
cnVlOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5k
KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Okhvc3Q6Ci0gICAg
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJIb3N0Iik7Ci0gICAgICAg
ICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCpjID09ICc/JyB8
fCAqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykp
Ci0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAgICAgICAg
ICAgTE9HX1NUQVRFKCJGaWxlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAg
ICAgICBjYXNlICdcXCc6Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAg
ICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkZpbGVTbGFzaDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICc/JzoKLSAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2Uu
cHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1Vu
dGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOwotICAgICAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vPyIsIDQpOwotICAgICAgICAgICAgICAgICAgICAr
K2M7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0
aW9uKGMpIC0gMjsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
bV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0
aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhF
bmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpO
b25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgJyMnOgotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAg
ICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxl
IikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFy
dDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyMiLCA0KTsKLSAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAy
OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3Vz
ZXJTdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5
RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OwotICAgICAgICAgICAgICAgICsr
YzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChiYXNlLmlz
VmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSAmJiBzaG91bGRDb3B5RmlsZVVSTChj
KSkKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6
UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8v
LyIsIDMpOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQ
b3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRM
ZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzV2lu
ZG93c0RyaXZlTGV0dGVyKGMpKQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93
c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAg
ICAgICAgIExPR19TVEFURSgiRmlsZVNsYXNoIik7Ci0gICAgICAgICAgICBpZiAoTElLRUxZKCpj
ID09ICcvJyB8fCAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgq
YyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBh
ZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBv
c2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAg
ICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpGaWxlSG9zdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoIi8vIiwgMik7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIGlmIChp
c1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NE
cml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY29weUJh
c2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsg
MTsKLSAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICAgICAgTE9HX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICAgICAgICAgIGlmIChpc1Ns
YXNoUXVlc3Rpb25Pckhhc2goKmMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgd2luZG93
c1F1aXJrID0gdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyaykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyayB8
fCBhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQod2luZG93c1F1aXJrIHx8IHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAt
IDEpID09ICcvJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0g
Jz8nKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvPyIsIDIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6VVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnIycpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8jIiwgMik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5
RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhv
c3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9z
dEJlZ2luLCBjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNMb2NhbGhvc3QocGFyc2VkRGF0YVZpZXcobV91
cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91cmwubV9wYXNzd29yZEVu
ZCkpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91cmwubV9wYXNzd29y
ZEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50
UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGgg
PSAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoU3RhcnQ7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXNQZXJj
ZW50T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRP
ck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICB9IHdo
aWxlICghYy5hdEVuZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRl
OjpQYXRoU3RhcnQ6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAg
ICAgICAgaWYgKCpjICE9ICcvJyAmJiAqYyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpQYXRoOgotICAgICAgICAg
ICAgTE9HX1NUQVRFKCJQYXRoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8IChtX3Vy
bElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoY3VycmVudFBvc2l0aW9u
KGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJykpIHsK
LSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAg
ICAgICAgICBjb25zdW1lRG91YmxlRG90UGF0aFNlZ21lbnQoYyk7Ci0gICAgICAgICAgICAgICAg
ICAgIHBvcFBhdGgoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1NpbmdsZURvdFBhdGhTZWdtZW50
KGMpKSkgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKCpjID09ICc/JykgewotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KCc/Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGlmIChub25VVEY4
UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVl
cnk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5t
X3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1dGY4UGVyY2Vu
dEVuY29kZTxpc0luRGVmYXVsdEVuY29kZVNldD4oYyk7Ci0gICAgICAgICAgICArK2M7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6
Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAg
ICAgICBpZiAoKmMgPT0gJz8nKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jz8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgaWYgKG5vblVURjhR
dWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVy
eTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1f
dXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcvJykgewot
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAg
ICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJy
ZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHV0
ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAgICAgICAg
ICsrYzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0
YXRlOjpVVEY4UXVlcnk6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlVURjhRdWVyeSIpOwotICAg
ICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4oKSk7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIEFTU0VSVCghbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAg
ICAgICAgdXRmOFF1ZXJ5RW5jb2RlKGMpOwotICAgICAgICAgICAgKytjOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKLSAgICAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIk5vblVURjhRdWVyeSIpOwotICAgICAgICAg
ICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KCkpOwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAg
ICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2Rp
bmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsK
LSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhcHBl
bmRDb2RlUG9pbnQocXVlcnlCdWZmZXIsICpjKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMs
IHF1ZXJ5QmVnaW4pOwotICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAgICAgICAgICBV
UkxfUEFSU0VSX0xPRygiU3RhdGUgRnJhZ21lbnQiKTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50
RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAgICAgKytjOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0g
ICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU2No
ZW1lU3RhcnQiKTsKLSAgICAgICAgaWYgKCFjdXJyZW50UG9zaXRpb24oYykgJiYgYmFzZS5pc1Zh
bGlkKCkgJiYgIWJhc2UubV9jYW5ub3RCZUFCYXNlVVJMKSB7Ci0gICAgICAgICAgICBtX3VybCA9
IGJhc2U7Ci0gICAgICAgICAgICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAgIExPR19GSU5BTF9TVEFU
RSgiU2NoZW1lIik7Ci0gICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgU3RhdGU6Ok5vU2NoZW1lOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5vU2NoZW1lIik7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2FzZSBTdGF0ZTo6
U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU3Bl
Y2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFz
ZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgotICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOwotICAgICAgICBBU1NFUlQobV91cmwubV91c2Vy
U3RhcnQpOwotICAgICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQgPT0gY3VycmVudFBvc2l0
aW9uKGMpKTsKLSAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihj
KSAtIDEpID09ICcvJyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0LS07Ci0gICAgICAgIG1f
dXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAg
ICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiUmVsYXRpdmUiKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUo
IlJlbGF0aXZlU2xhc2giKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFy
dDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91
cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgbV91cmwubV9w
YXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVl
cnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKLSAgICAgICAgbV91cmwubV91c2VyU3Rh
cnQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5
SWdub3JlU2xhc2hlczoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5
SWdub3JlU2xhc2hlcyIpOwotICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgi
QXV0aG9yaXR5T3JIb3N0Iik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3Np
dGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdpbi5hdEVu
ZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
LSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAg
ICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICB9IGVsc2UgaWYgKCFwYXJzZUhvc3RBbmRQb3J0
KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgZmFpbHVyZSgpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1fdXJsSXNT
cGVjaWFsKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOwotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOwotICAgICAgICB9Ci0gICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0
YXRlOjpIb3N0OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkhvc3QiKTsKLSAgICAgICAgaWYg
KCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAg
ZmFpbHVyZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmICht
X3VybElzU3BlY2lhbCkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBt
X3VybC5tX3BvcnRMZW5ndGg7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV9wYXRoRW5kOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRo
RW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAgICAgICBMT0df
RklOQUxfU1RBVEUoIkZpbGUiKTsKLSAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2Uu
cHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNl
LCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8iLCAzKTsKLSAgICAgICAgbV91cmwubV91c2VyU3Rh
cnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
LSAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBtX3VybC5tX3F1ZXJ5
RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlU2xhc2gi
KTsKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICBtX3VybC5tX3VzZXJTdGFy
dCA9IGN1cnJlbnRQb3NpdGlvbihjKSArIDE7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Ii8vIiwgMik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owot
ICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOwotICAgICAgICBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFz
ZSkpIHsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0OwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91
cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGaWxlSG9z
dDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICBpZiAodGFr
ZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1
dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0
dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKLSAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhv
c3RCZWdpbik7Ci0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAt
IDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAg
ICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAg
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBtX3VybC5tX3F1
ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAg
ICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgIGlmIChpc0xvY2FsaG9zdChwYXJzZWREYXRh
VmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bh
c3N3b3JkRW5kKSkpIHsKLSAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1f
cGFzc3dvcmRFbmQpOwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgfQot
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsK
LSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0g
ICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgotICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIGNhc2UgU3RhdGU6OlBhdGg6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiUGF0
aCIpOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRoOgotICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1f
cGF0aEVuZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgotICAg
ICAgICBMT0dfRklOQUxfU1RBVEUoIlVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQocXVlcnlC
ZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5vblVU
RjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVm
ZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQ
b3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0g
ICAgICAgIExPR19GSU5BTF9TVEFURSgiRnJhZ21lbnQiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotCi0gICAgaWYgKExJS0VMWSghbV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKSB7Ci0gICAgICAg
IG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLSAgICAgICAgQVNTRVJUKG1fYXNjaWlC
dWZmZXIuaXNFbXB0eSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV91cmwubV9zdHJpbmcgPSBT
dHJpbmc6OmFkb3B0KFdURk1vdmUobV9hc2NpaUJ1ZmZlcikpOwotICAgIG1fdXJsLm1faXNWYWxp
ZCA9IHRydWU7Ci0gICAgVVJMX1BBUlNFUl9MT0coIlBhcnNlZCBVUkwgPCVzPiIsIG1fdXJsLm1f
c3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVu
ZCgpKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICBtX3Vy
bC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgYWR2YW5jZShpdGVyYXRvcikpIHsKLSAgICAg
ICAgaWYgKCppdGVyYXRvciA9PSAnOicpIHsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAgICBhdXRvIGl0ZXJhdG9yQXRD
b2xvbiA9IGl0ZXJhdG9yOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJv
b2wgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IGZhbHNlOwotICAgICAgICAgICAgd2hpbGUgKFVO
TElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7
Ci0gICAgICAgICAgICAgICAgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihpdGVyYXRvckF0Q29sb24pOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdXJsLm1fdXNlckVuZCA+
IG1fdXJsLm1fdXNlclN0YXJ0KQotICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCdAJyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKHRhYk9yTmV3bGluZUFmdGVyQ29sb24pCi0gICAgICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGl0ZXJhdG9yQXRDb2xvbik7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCc6Jyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB1dGY4UGVy
Y2VudEVuY29kZTxXZWJDb3JlOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKLSAg
ICB9Ci0gICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkKLSAg
ICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V2ViQ29yZTo6aXNJblVzZXJJbmZvRW5jb2RlU2V0Pihp
dGVyYXRvcik7Ci0gICAgbV91cmwubV9wYXNzd29yZEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVy
YXRvcik7Ci0gICAgaWYgKCFtX3VybC5tX3VzZXJFbmQpCi0gICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IG1fdXJsLm1fcGFzc3dvcmRFbmQ7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignQCcpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPgotdm9pZCBVUkxQYXJz
ZXI6OmFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIp
Ci17Ci0gICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMgKyAxXTsK
LSAgICBMQ2hhciogZW5kID0gc3RkOjplbmQoYnVmKTsKLSAgICBMQ2hhciogcCA9IGVuZDsKLSAg
ICBkbyB7Ci0gICAgICAgICotLXAgPSAobnVtYmVyICUgMTApICsgJzAnOwotICAgICAgICBudW1i
ZXIgLz0gMTA7Ci0gICAgfSB3aGlsZSAobnVtYmVyKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KHAsIGVuZCAtIHApOwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NChJUHY0QWRk
cmVzcyBhZGRyZXNzKQotewotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4o
YWRkcmVzcyA+PiAyNCk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVu
ZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAxNik7Ci0gICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhf
dD4oYWRkcmVzcyA+PiA4KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7Ci0gICAgYXBw
ZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzKTsKLX0KLSAgICAKLXN0YXRp
YyBzaXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+
JiBhZGRyZXNzLCBzaXplX3QgYmVnaW4pCi17Ci0gICAgc2l6ZV90IGVuZCA9IGJlZ2luOwotICAg
IGZvciAoOyBlbmQgPCA4OyBlbmQrKykgewotICAgICAgICBpZiAoYWRkcmVzc1tlbmRdKQotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBlbmQgLSBiZWdpbjsKLX0KLQotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShjb25zdCBz
dGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gbG9uZ2VzdDsKLSAgICBzaXplX3QgbG9uZ2VzdExlbmd0aCA9IDA7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCA4OyBpKyspIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHplcm9T
ZXF1ZW5jZUxlbmd0aChhZGRyZXNzLCBpKTsKLSAgICAgICAgaWYgKGxlbmd0aCkgewotICAgICAg
ICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgKCFsb25nZXN0IHx8IGxvbmdlc3RMZW5ndGggPCBsZW5n
dGgpKSB7Ci0gICAgICAgICAgICAgICAgbG9uZ2VzdCA9IGk7Ci0gICAgICAgICAgICAgICAgbG9u
Z2VzdExlbmd0aCA9IGxlbmd0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkgKz0gbGVu
Z3RoOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsb25nZXN0OwotfQotCi12b2lkIFVS
TFBhcnNlcjo6c2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKQotewotICAgIGJvb2wg
cHJpbnRlZCA9IGZhbHNlOwotICAgIGlmIChhdXRvIG5pYmJsZTAgPSBwaWVjZSA+PiAxMikgewot
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhl
eERpZ2l0KG5pYmJsZTApKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQotICAgIGF1
dG8gbmliYmxlMSA9IHBpZWNlID4+IDggJiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwgbmliYmxl
MSkgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VB
U0NJSUhleERpZ2l0KG5pYmJsZTEpKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQot
ICAgIGF1dG8gbmliYmxlMiA9IHBpZWNlID4+IDQgJiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwg
bmliYmxlMikKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJj
YXNlQVNDSUlIZXhEaWdpdChuaWJibGUyKSk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dl
ck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChwaWVjZSAmIDB4RikpOwotfQotCi12b2lk
IFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NihVUkxQYXJzZXI6OklQdjZBZGRyZXNzIGFkZHJlc3Mp
Ci17Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignWycpOwotICAgIGF1dG8gY29tcHJlc3NQb2lu
dGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7Ci0gICAgZm9yIChzaXplX3Qg
cGllY2UgPSAwOyBwaWVjZSA8IDg7IHBpZWNlKyspIHsKLSAgICAgICAgaWYgKGNvbXByZXNzUG9p
bnRlciAmJiBjb21wcmVzc1BvaW50ZXIudmFsdWUoKSA9PSBwaWVjZSkgewotICAgICAgICAgICAg
QVNTRVJUKCFhZGRyZXNzW3BpZWNlXSk7Ci0gICAgICAgICAgICBpZiAocGllY2UpCi0gICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjo6IiwgMik7Ci0gICAgICAgICAgICB3
aGlsZSAocGllY2UgPCA4ICYmICFhZGRyZXNzW3BpZWNlXSkKLSAgICAgICAgICAgICAgICBwaWVj
ZSsrOwotICAgICAgICAgICAgaWYgKHBpZWNlID09IDgpCi0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgc2VyaWFsaXplSVB2NlBpZWNlKGFkZHJlc3NbcGllY2VdKTsK
LSAgICAgICAgaWYgKHBpZWNlIDwgNykKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
JzonKTsKLSAgICB9Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignXScpOwotfQotCi1lbnVtIGNs
YXNzIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yIHsKLSAgICBGYWlsdXJlLAotICAg
IE92ZXJmbG93LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVj
dGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gVVJMUGFyc2Vy
OjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0
b3IsIGJvb2wmIGRpZFNlZVN5bnRheFZpb2xhdGlvbikKLXsKLSAgICBlbnVtIGNsYXNzIFN0YXRl
IDogdWludDhfdCB7Ci0gICAgICAgIFVua25vd25CYXNlLAotICAgICAgICBEZWNpbWFsLAotICAg
ICAgICBPY3RhbE9ySGV4LAotICAgICAgICBPY3RhbCwKLSAgICAgICAgSGV4LAotICAgIH07Ci0g
ICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93bkJhc2U7Ci0gICAgQ2hlY2tlZDx1aW50MzJf
dCwgUmVjb3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsKLSAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkg
JiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQ
aWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgp
KSB7Ci0gICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7Ci0gICAgICAgICAg
ICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgKytpdGVyYXRvcjsK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICgqaXRlcmF0b3Ig
PT0gJy4nKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAg
c3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpVbmtub3duQmFzZToKLSAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0b3IgPT0gJzAnKSkgewotICAgICAgICAgICAgICAg
ICsraXRlcmF0b3I7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6T2N0YWxPckhleDsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkRlY2ltYWw7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0
ZTo6T2N0YWxPckhleDoKLSAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7
Ci0gICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09ICd4JyB8fCAqaXRlcmF0b3IgPT0gJ1gnKSB7
Ci0gICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpIZXg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFN0YXRlOjpEZWNpbWFsOgotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKml0ZXJh
dG9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFy
c2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICAgICAgICAgIHZhbHVlICo9IDEwOwotICAgICAgICAg
ICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZh
bHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVy
YXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpPY3RhbDoKLSAg
ICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAgICAgICAgaWYg
KCppdGVyYXRvciA8ICcwJyB8fCAqaXRlcmF0b3IgPiAnNycpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAg
ICAgICAgICB2YWx1ZSAqPSA4OwotICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAn
OwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6
T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFN0YXRlOjpIZXg6Ci0gICAgICAgICAgICBBU1NFUlQoZGlkU2VlU3ludGF4
VmlvbGF0aW9uKTsKLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KCppdGVyYXRvcikp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdF
cnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgICAgICB2YWx1ZSAqPSAxNjsKLSAgICAgICAgICAgIHZh
bHVlICs9IHRvQVNDSUlIZXhWYWx1ZSgqaXRlcmF0b3IpOwotICAgICAgICAgICAgaWYgKFVOTElL
RUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAg
KytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIEFT
U0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0
KCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQ2NF90IHBvdzI1NihzaXplX3QgZXhw
b25lbnQpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhwb25lbnQgPD0gNCk7Ci0gICAgdWludDY0
X3QgdmFsdWVzWzVdID0gezEsIDI1NiwgMjU2ICogMjU2LCAyNTYgKiAyNTYgKiAyNTYsIDI1NnVs
bCAqIDI1NiAqIDI1NiAqIDI1NiB9OwotICAgIHJldHVybiB2YWx1ZXNbZXhwb25lbnRdOwotfQot
Ci1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvciB7Ci0gICAgRmFpbHVyZSwK
LSAgICBOb3RJUHY0LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5
bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVjdGVkPFVSTFBhcnNl
cjo6SVB2NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpw
YXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50
YXhWaW9sYXRpb24+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uLCBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBWZWN0b3I8RXhwZWN0
ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiwgND4gaXRlbXM7
Ci0gICAgYm9vbCBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSBmYWxzZTsKLSAgICBpZiAoIWl0ZXJh
dG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIHdoaWxlICghaXRlcmF0b3Iu
YXRFbmQoKSkgewotICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkgewotICAg
ICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICsraXRl
cmF0b3I7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXRl
bXMuc2l6ZSgpID49IDQpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBh
cnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAgIGl0ZW1zLmFwcGVuZChwYXJzZUlQdjRQaWVj
ZShpdGVyYXRvciwgZGlkU2VlU3ludGF4VmlvbGF0aW9uKSk7Ci0gICAgICAgIGlmICghaXRlcmF0
b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICArK2l0ZXJhdG9y
OwotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAg
ICAgICAgZWxzZSBpZiAoKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpIHx8ICFpdGVtcy5zaXplKCkgfHwgaXRlbXMu
c2l6ZSgpID4gNCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJy
b3I6Ok5vdElQdjQpOwotICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAg
ICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFy
c2luZ0Vycm9yOjpGYWlsdXJlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQ
djRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0
ZW0gOiBpdGVtcykgewotICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJv
cigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCi0gICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgfQotICAg
IGlmIChpdGVtcy5zaXplKCkgPiAxKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aXRlbXMuc2l6ZSgpIC0gMTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoaXRlbXNbaV0udmFsdWUo
KSA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNp
bmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGl0ZW1zW2l0ZW1z
LnNpemUoKSAtIDFdLnZhbHVlKCkgPj0gcG93MjU2KDUgLSBpdGVtcy5zaXplKCkpKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0KLSAg
ICBpZiAoZGlkU2VlU3ludGF4VmlvbGF0aW9uKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRl
cmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBp
dGVtIDogaXRlbXMpIHsKLSAgICAgICAgaWYgKGl0ZW0udmFsdWUoKSA+IDI1NSkKLSAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsK
LSAgICB9Ci0KLSAgICBpZiAoVU5MSUtFTFkoaXRlbXMuc2l6ZSgpICE9IDQpKQotICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0KLSAg
ICBJUHY0QWRkcmVzcyBpcHY0ID0gaXRlbXMudGFrZUxhc3QoKS52YWx1ZSgpOwotICAgIGZvciAo
c2l6ZV90IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgaXRlbXMuc2l6ZSgpOyArK2NvdW50ZXIpCi0g
ICAgICAgIGlwdjQgKz0gaXRlbXNbY291bnRlcl0udmFsdWUoKSAqIHBvdzI1NigzIC0gY291bnRl
cik7Ci0gICAgcmV0dXJuIGlwdjQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1zdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5z
aWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0g
ICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgdWludDMyX3QgcGllY2UgPSAwOwotICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7Ci0g
ICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOwotICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkg
ewotICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgKytkaWdpdENvdW50OwotICAgICAgICBpZiAoIXBp
ZWNlICYmICppdGVyYXRvciA9PSAnMCcpIHsKLSAgICAgICAgICAgIGlmIChsZWFkaW5nWmVyb3Mp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGxlYWRp
bmdaZXJvcyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0
b3IgPT0gJzAnKQotICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgcGll
Y2UgPSBwaWVjZSAqIDEwICsgKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICBpZiAocGllY2UgPiAy
NTUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlPENo
YXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAg
ICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYg
KCppdGVyYXRvciA9PSAnLicpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKHBp
ZWNlICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBy
ZXR1cm4gcGllY2U7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGQ6
Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRk
cmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3Ip
Ci17Ci0gICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCA0OyArK2kpIHsKLSAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBpZWNl
ID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKLSAgICAgICAgICAgIGFkZHJl
c3MgPSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZhbHVlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmIChpIDwgMykgewotICAgICAg
ICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4nKQotICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5
cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAgICAgfSBlbHNl
IGlmICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgfQotICAgIEFTU0VSVChpdGVyYXRvci5hdEVuZCgpKTsKLSAgICByZXR1cm4gYWRkcmVz
czsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0ZDo6b3B0aW9uYWw8
VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCi17Ci0gICAgQVNTRVJUKCpjID09ICdbJyk7Ci0g
ICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBjOwotICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsK
LSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
SVB2NkFkZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19OwotICAgIHNp
emVfdCBwaWVjZVBvaW50ZXIgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb21wcmVz
c1BvaW50ZXI7Ci0KLSAgICBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgIGFkdmFuY2UoYywgaG9z
dEJlZ2luKTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgICAgIGlmICgqYyAhPSAnOicpCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7Ci0gICAgICAgICsrcGll
Y2VQb2ludGVyOwotICAgICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7Ci0gICAg
fQotICAgIAotICAgIHdoaWxlICghYy5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChwaWVjZVBvaW50
ZXIgPT0gOCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICgq
YyA9PSAnOicpIHsKLSAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJl
Z2luKTsKLSAgICAgICAgICAgICsrcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29tcHJlc3NQ
b2ludGVyID0gcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50ZXIgJiYgcGll
Y2VQb2ludGVyIDwgNikpIHsKLSAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPElQdjRBZGRy
ZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPT0gNSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNl
UG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgPj4gMTY7Ci0gICAgICAgICAgICAgICAg
YWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpICYgMHhGRkZGOwot
ICAgICAgICAgICAgICAgIGMgPSB7IH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdWludDE2X3QgdmFsdWUgPSAwOwotICAgICAgICBz
aXplX3QgbGVuZ3RoID0gMDsKLSAgICAgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKLSAg
ICAgICAgZm9yICg7IGxlbmd0aCA8IDQ7IGxlbmd0aCsrKSB7Ci0gICAgICAgICAgICBpZiAoYy5h
dEVuZCgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJ
SGV4RGlnaXQoKmMpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGlz
QVNDSUlVcHBlcigqYykpCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdp
bik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJzAnICYmICFsZW5ndGgpCi0gICAgICAgICAgICAg
ICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgKiAweDEw
ICsgdG9BU0NJSUhleFZhbHVlKCpjKTsKLSAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2lu
KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKFVOTElLRUxZKCh2YWx1ZSAmJiBs
ZWFkaW5nWmVyb3MpIHx8ICghdmFsdWUgJiYgbGVuZ3RoID4gMSkpKQotICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIr
K10gPSB2YWx1ZTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDggfHwgKmMgIT0gJzonKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwotICAg
IH0KLSAgICAKLSAgICBpZiAoIWMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICAKLSAgICBpZiAoY29tcHJlc3NQb2ludGVyKSB7Ci0gICAgICAgIHNpemVfdCBzd2Fw
cyA9IHBpZWNlUG9pbnRlciAtIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpOwotICAgICAgICBwaWVj
ZVBvaW50ZXIgPSA3OwotICAgICAgICB3aGlsZSAoc3dhcHMpCi0gICAgICAgICAgICBzdGQ6OnN3
YXAoYWRkcmVzc1twaWVjZVBvaW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2ludGVyLnZhbHVl
KCkgKyBzd2Fwcy0tIC0gMV0pOwotICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9IDgpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
cG9zc2libGVDb21wcmVzc1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNz
KTsKLSAgICBpZiAocG9zc2libGVDb21wcmVzc1BvaW50ZXIpCi0gICAgICAgIHBvc3NpYmxlQ29t
cHJlc3NQb2ludGVyLnZhbHVlKCkrKzsKLSAgICBpZiAoVU5MSUtFTFkoY29tcHJlc3NQb2ludGVy
ICE9IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKSkKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhv
c3RCZWdpbik7Ci0gICAgCi0gICAgcmV0dXJuIGFkZHJlc3M7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+Ci1VUkxQYXJzZXI6OkxDaGFyQnVmZmVyIFVSTFBhcnNlcjo6cGVy
Y2VudERlY29kZShjb25zdCBMQ2hhciogaW5wdXQsIHNpemVfdCBsZW5ndGgsIGNvbnN0IENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBv
c2l0aW9uKQotewotICAgIExDaGFyQnVmZmVyIG91dHB1dDsKLSAgICBvdXRwdXQucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07Ci0gICAgICAg
IGlmIChieXRlICE9ICclJykKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKLSAg
ICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4
RGlnaXQoaW5wdXRbaSArIDJdKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihp
dGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICBvdXRw
dXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kg
KyAyXSkpOwotICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG91dHB1dDsKLX0KLSAgICAKLVVSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2Vy
OjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAg
ICBMQ2hhckJ1ZmZlciBvdXRwdXQ7Ci0gICAgb3V0cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bGVuZ3RoKTsKLSAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGlucHV0W2ldOwotICAgICAgICBpZiAoYnl0ZSAhPSAn
JScpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOwotICAgICAgICBl
bHNlIGlmIChsZW5ndGggPiAyICYmIGkgPCBsZW5ndGggLSAyKSB7Ci0gICAgICAgICAgICBpZiAo
aXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kg
KyAyXSkpIHsKLSAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlI
ZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgICAgIGkg
Kz0gMjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNr
ZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hl
Y2tlZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OkxDaGFy
QnVmZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25z
dCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9s
YXRpb25Qb3NpdGlvbikKLXsKLSAgICBMQ2hhckJ1ZmZlciBhc2NpaTsKLSAgICBpZiAoZG9tYWlu
LmlzQWxsQVNDSUkoKSkgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gZG9tYWluLmxlbmd0aCgp
OwotICAgICAgICBpZiAoZG9tYWluLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBMQ2hh
ciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAgYXNjaWku
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShp
c0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICAg
ICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAgIGFzY2lp
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
aXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICAg
ICAgICAgIGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhc2NpaTsKLSAgICB9
Ci0gICAgCi0gICAgY29uc3Qgc2l6ZV90IG1heERvbWFpbkxlbmd0aCA9IDY0OwotICAgIFVDaGFy
IGhvc3RuYW1lQnVmZmVyW21heERvbWFpbkxlbmd0aF07Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9
IFVfWkVST19FUlJPUjsKLSAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9J
TkZPX0lOSVRJQUxJWkVSOwotICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVp
ZG5hX25hbWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwgU3Ry
aW5nVmlldyhkb21haW4pLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBkb21haW4ubGVuZ3RoKCks
IGhvc3RuYW1lQnVmZmVyLCBtYXhEb21haW5MZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVy
cm9yKTsKLSAgICBBU1NFUlQobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA8PSBzdGF0aWNfY2FzdDxp
bnQzMl90PihtYXhEb21haW5MZW5ndGgpKTsKLQotICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYm
ICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKLSAgICAgICAgZm9yIChpbnQzMl90IGkgPSAw
OyBpIDwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsgKytpKSB7Ci0gICAgICAgICAgICBBU1NFUlQo
aXNBU0NJSShob3N0bmFtZUJ1ZmZlcltpXSkpOwotICAgICAgICAgICAgQVNTRVJUKCFpc0FTQ0lJ
VXBwZXIoaG9zdG5hbWVCdWZmZXJbaV0pKTsKLSAgICAgICAgfQotICAgICAgICBhc2NpaS5hcHBl
bmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAgICBpZiAo
ZG9tYWluICE9IFN0cmluZ1ZpZXcoYXNjaWkuZGF0YSgpLCBhc2NpaS5zaXplKCkpKQotICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24p
OwotICAgICAgICByZXR1cm4gYXNjaWk7Ci0gICAgfQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IFVS
TFBhcnNlcjo6TENoYXJCdWZmZXImIGFzY2lpRG9tYWluKQotewotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXNjaWlEb21haW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGlzRm9yYmlk
ZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbltpXSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCppdGVyYXRvciA9PSAnOicp
OwotICAgIGF1dG8gY29sb25JdGVyYXRvciA9IGl0ZXJhdG9yOwotICAgIGFkdmFuY2UoaXRlcmF0
b3IsIGNvbG9uSXRlcmF0b3IpOwotICAgIHVpbnQzMl90IHBvcnQgPSAwOwotICAgIGlmIChVTkxJ
S0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0g
Y3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAg
ICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHN5bnRheFZpb2xh
dGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHNp
emVfdCBkaWdpdENvdW50ID0gMDsKLSAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOwotICAg
IGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBpZiAoVU5M
SUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkgewotICAgICAgICAgICAgaWYg
KCppdGVyYXRvciA9PSAnMCcgJiYgIWRpZ2l0Q291bnQpCi0gICAgICAgICAgICAgICAgbGVhZGlu
Z1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgICsrZGlnaXRDb3VudDsKLSAgICAgICAgICAgIHBv
cnQgPSBwb3J0ICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7Ci0gICAgICAgICAgICBpZiAocG9ydCA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIGlmIChwb3J0ICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgIAotICAgIGlmICghcG9ydCAmJiBkaWdpdENvdW50
ID4gMSkKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotCi0gICAgQVNT
RVJUKHBvcnQgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKLSAgICBpZiAoVU5MSUtF
TFkoZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVt
ZUVuZCkpID09IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSkpCi0gICAgICAgIHN5bnRheFZp
b2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICBlbHNlIHsKLSAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignOicpOwotICAgICAgICBBU1NFUlQocG9ydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQxNl90Pjo6bWF4KCkpOwotICAgICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVp
bnQxNl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOwotICAgIH0KLQotICAgIHVuc2ln
bmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0
RW5kOwotICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3Ro
KTsKLSAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwotICAgIHJldHVybiB0cnVl
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6
OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0
b3IpCi17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICgqaXRlcmF0b3IgPT0gJ1snKSB7Ci0gICAgICAgIGF1dG8gaXB2NkVuZCA9IGl0ZXJhdG9yOwot
ICAgICAgICB3aGlsZSAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCAhPSAnXScpCi0gICAg
ICAgICAgICArK2lwdjZFbmQ7Ci0gICAgICAgIGlmIChpcHY2RW5kLmF0RW5kKCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjZI
b3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGl0ZXJhdG9yLCBpcHY2RW5kKSkp
IHsKLSAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjYoYWRkcmVzcy52YWx1ZSgpKTsKLSAgICAgICAg
ICAgIGlmICghaXB2NkVuZC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZShpcHY2
RW5kKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCA9
PSAnOicpIHsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBv
c2l0aW9uKGlwdjZFbmQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGlw
djZFbmQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBjdXJyZW50UG9zaXRpb24oaXB2NkVuZCk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9w
b3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5k
KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdXJsSXNTcGVjaWFsKSB7Ci0gICAgICAgIGZvciAo
OyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRm9yYmlkZGVuSG9zdENvZGVQb2lu
dCgqaXRlcmF0b3IpICYmICppdGVyYXRvciAhPSAnJScpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVT
ZXQ+KGl0ZXJhdG9yKTsKLSAgICAgICAgfQotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJy
ZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewot
ICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAg
IH0KLSAgICAKLSAgICBpZiAoTElLRUxZKCFtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSkpIHsK
LSAgICAgICAgYXV0byBob3N0SXRlcmF0b3IgPSBpdGVyYXRvcjsKLSAgICAgICAgZm9yICg7ICFp
dGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBpZiAoaXNUYWJPck5l
d2xpbmUoKml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGFkZHJlc3MgPSBwYXJz
ZUlQdjRIb3N0KGhvc3RJdGVyYXRvciwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4o
aG9zdEl0ZXJhdG9yLCBpdGVyYXRvcikpOwotICAgICAgICBpZiAoYWRkcmVzcykgewotICAgICAg
ICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOwotICAgICAgICAgICAgbV91cmwu
bV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGlmIChp
dGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChh
ZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgZm9yICg7IGhvc3RJdGVyYXRvciAhPSBpdGVyYXRvcjsg
Kytob3N0SXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGlu
ZSgqaG9zdEl0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9z
dEl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoKmhvc3RJdGVyYXRvcikpKQotICAg
ICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0SXRlcmF0b3IpOwotICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmhvc3RJdGVyYXRvcikpOwotICAgICAg
ICB9Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7
Ci0gICAgICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4g
cGFyc2VQb3J0KGhvc3RJdGVyYXRvcik7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBj
dXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgICAgICBSRUxF
QVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICAKLSAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGl0ZXJhdG9yOwotICAgIAotICAg
IExDaGFyQnVmZmVyIHV0ZjhFbmNvZGVkOwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsg
KytpdGVyYXRvcikgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJh
dG9yKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJKCppdGVy
YXRvcikpKQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAg
ICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUigqaXRlcmF0b3IpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKLSAgICAgICAg
aW50MzJfdCBvZmZzZXQgPSAwOwotICAgICAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zm
c2V0LCAqaXRlcmF0b3IpOwotICAgICAgICB1dGY4RW5jb2RlZC5hcHBlbmQoYnVmZmVyLCBvZmZz
ZXQpOwotICAgIH0KLSAgICBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNv
ZGUodXRmOEVuY29kZWQuZGF0YSgpLCB1dGY4RW5jb2RlZC5zaXplKCksIGhvc3RCZWdpbik7Ci0g
ICAgU3RyaW5nIGRvbWFpbiA9IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgp
LCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotICAgIGlmIChkb21haW4uaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcocGVyY2VudERl
Y29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpKQotICAgICAgICBzeW50YXhWaW9s
YXRpb24oaG9zdEJlZ2luKTsKLSAgICBhdXRvIGFzY2lpRG9tYWluID0gZG9tYWluVG9BU0NJSSgq
ZG9tYWluLmltcGwoKSwgaG9zdEJlZ2luKTsKLSAgICBpZiAoIWFzY2lpRG9tYWluIHx8IGhhc0Zv
cmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlEb21haW4udmFsdWUoKSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW5WYWx1ZSA9IGFzY2lpRG9tYWlu
LnZhbHVlKCk7Ci0gICAgY29uc3QgTENoYXIqIGFzY2lpRG9tYWluQ2hhcmFjdGVycyA9IGFzY2lp
RG9tYWluVmFsdWUuZGF0YSgpOwotCi0gICAgYXV0byBhZGRyZXNzID0gcGFyc2VJUHY0SG9zdCho
b3N0QmVnaW4sIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPihhc2NpaURvbWFpblZhbHVlLmJlZ2lu
KCksIGFzY2lpRG9tYWluVmFsdWUuZW5kKCkpKTsKLSAgICBpZiAoYWRkcmVzcykgewotICAgICAg
ICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmIChpdGVyYXRvci5hdEVu
ZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRv
cik7Ci0gICAgfQotICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6
RmFpbHVyZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihhc2NpaURvbWFpbkNoYXJhY3RlcnMsIGFzY2lpRG9tYWluVmFsdWUuc2l6ZSgpKTsKLSAgICBt
X3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgIGlmICghaXRl
cmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RkOjpvcHRp
b25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQot
ewotICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7Ci0gICAgaWYg
KHV0ZjguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBw
ZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotfQot
Ci0vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsZW5jb2RlZC1wYXJz
ZXIKLWF1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQp
IC0+IFVSTEVuY29kZWRGb3JtCi17Ci0gICAgVVJMRW5jb2RlZEZvcm0gb3V0cHV0OwotICAgIGZv
ciAoU3RyaW5nVmlldyBieXRlcyA6IGlucHV0LnNwbGl0KCcmJykpIHsKLSAgICAgICAgYXV0byBl
cXVhbEluZGV4ID0gYnl0ZXMuZmluZCgnPScpOwotICAgICAgICBpZiAoZXF1YWxJbmRleCA9PSBu
b3RGb3VuZCkgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy50
b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFtZSkKLSAg
ICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygp
IH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERl
Y29kZShieXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcr
JywgMHgyMCkpOwotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGZvcm1VUkxEZWNvZGUoYnl0ZXMu
c3Vic3RyaW5nKGVxdWFsSW5kZXggKyAxKS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7
Ci0gICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSkKLSAgICAgICAgICAgICAgICBvdXRwdXQu
YXBwZW5kKHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52YWx1ZSgpIH0pOwotICAgICAgICB9Ci0gICAg
fQotICAgIHJldHVybiBvdXRwdXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHNlcmlhbGl6ZVVSTEVuY29k
ZWRGb3JtKGNvbnN0IFN0cmluZyYgaW5wdXQsIFZlY3RvcjxMQ2hhcj4mIG91dHB1dCkKLXsKLSAg
ICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOwotICAgIGNvbnN0IGNo
YXIqIGRhdGEgPSB1dGY4LmRhdGEoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHV0Zjgu
bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBjb25zdCBjaGFyIGJ5dGUgPSBkYXRhW2ldOwotICAg
ICAgICBpZiAoYnl0ZSA9PSAweDIwKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgweDJCKTsK
LSAgICAgICAgZWxzZSBpZiAoYnl0ZSA9PSAweDJBCi0gICAgICAgICAgICB8fCBieXRlID09IDB4
MkQKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgyRQotICAgICAgICAgICAgfHwgKGJ5dGUgPj0g
MHgzMCAmJiBieXRlIDw9IDB4MzkpCi0gICAgICAgICAgICB8fCAoYnl0ZSA+PSAweDQxICYmIGJ5
dGUgPD0gMHg1QSkKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHg1RgotICAgICAgICAgICAgfHwg
KGJ5dGUgPj0gMHg2MSAmJiBieXRlIDw9IDB4N0EpKSAvLyBGSVhNRTogUHV0IHRoZXNlIGluIHRo
ZSBjaGFyYWN0ZXJDbGFzc1RhYmxlIHRvIGF2b2lkIGJyYW5jaGVzLgotICAgICAgICAgICAgb3V0
cHV0LmFwcGVuZChieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcGVyY2VudEVuY29k
ZUJ5dGUoYnl0ZSwgb3V0cHV0KTsKLSAgICB9Ci19Ci0gICAgCi1TdHJpbmcgVVJMUGFyc2VyOjpz
ZXJpYWxpemUoY29uc3QgVVJMRW5jb2RlZEZvcm0mIHR1cGxlcykKLXsKLSAgICBpZiAodHVwbGVz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3RvcjxMQ2hhcj4gb3V0
cHV0OwotICAgIGZvciAoYXV0byYgdHVwbGUgOiB0dXBsZXMpIHsKLSAgICAgICAgaWYgKCFvdXRw
dXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgnJicpOwotICAgICAgICBz
ZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS5rZXksIG91dHB1dCk7Ci0gICAgICAgIG91dHB1
dC5hcHBlbmQoJz0nKTsKLSAgICAgICAgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0odHVwbGUudmFs
dWUsIG91dHB1dCk7Ci0gICAgfQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUob3V0
cHV0KSk7Ci19Ci0KLWNvbnN0IFVJRE5BJiBVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21haW5O
YW1lVHJhbnNjb2RlcigpCi17Ci0gICAgc3RhdGljIFVJRE5BKiBlbmNvZGVyOwotICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10gewotICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgICAgICAv
LyBXYXJuaW5nOiBQbGVhc2UgY29udGFjdCBhIFdlYktpdEdUSysgZGV2ZWxvcGVyIGlmIGNoYW5n
aW5nIHRoZXNlIGZsYWdzLgotICAgICAgICAvLyBUaGV5IHNob3VsZCBiZSBzeW5jZWQgd2l0aCBl
cGh5X3VyaV9kZWNvZGUoKSBpbiBlcGh5LXVyaS1oZWxwZXJzLmMuCi0gICAgICAgIGVuY29kZXIg
PSB1aWRuYV9vcGVuVVRTNDYoVUlETkFfQ0hFQ0tfQklESSB8IFVJRE5BX0NIRUNLX0NPTlRFWFRK
IHwgVUlETkFfTk9OVFJBTlNJVElPTkFMX1RPX1VOSUNPREUgfCBVSUROQV9OT05UUkFOU0lUSU9O
QUxfVE9fQVNDSUksICZlcnJvcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFVfU1VDQ0VTUyhl
cnJvcikpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmNvZGVyKTsKLSAgICB9KTsKLSAgICBy
ZXR1cm4gKmVuY29kZXI7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbChjb25z
dCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVkICVkICVk
ICVkICVkICVkICVzIiwKLSAgICAgICAgYS5tX2lzVmFsaWQsCi0gICAgICAgIGEubV9jYW5ub3RC
ZUFCYXNlVVJMLAotICAgICAgICBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKLSAgICAgICAg
YS5tX3NjaGVtZUVuZCwKLSAgICAgICAgYS5tX3VzZXJTdGFydCwKLSAgICAgICAgYS5tX3VzZXJF
bmQsCi0gICAgICAgIGEubV9wYXNzd29yZEVuZCwKLSAgICAgICAgYS5tX2hvc3RFbmQsCi0gICAg
ICAgIGEubV9ob3N0RW5kICsgYS5tX3BvcnRMZW5ndGgsCi0gICAgICAgIGEubV9wYXRoQWZ0ZXJM
YXN0U2xhc2gsCi0gICAgICAgIGEubV9wYXRoRW5kLAotICAgICAgICBhLm1fcXVlcnlFbmQsCi0g
ICAgICAgIGEubV9zdHJpbmcudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgYi5tX2lzVmFsaWQsCi0g
ICAgICAgIGIubV9jYW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBiLm1fcHJvdG9jb2xJc0luSFRU
UEZhbWlseSwKLSAgICAgICAgYi5tX3NjaGVtZUVuZCwKLSAgICAgICAgYi5tX3VzZXJTdGFydCwK
LSAgICAgICAgYi5tX3VzZXJFbmQsCi0gICAgICAgIGIubV9wYXNzd29yZEVuZCwKLSAgICAgICAg
Yi5tX2hvc3RFbmQsCi0gICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5ndGgsCi0gICAg
ICAgIGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGIubV9wYXRoRW5kLAotICAgICAg
ICBiLm1fcXVlcnlFbmQsCi0gICAgICAgIGIubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Ci0KLSAg
ICByZXR1cm4gYS5tX3N0cmluZyA9PSBiLm1fc3RyaW5nCi0gICAgICAgICYmIGEubV9pc1ZhbGlk
ID09IGIubV9pc1ZhbGlkCi0gICAgICAgICYmIGEubV9jYW5ub3RCZUFCYXNlVVJMID09IGIubV9j
YW5ub3RCZUFCYXNlVVJMCi0gICAgICAgICYmIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID09
IGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5Ci0gICAgICAgICYmIGEubV9zY2hlbWVFbmQgPT0g
Yi5tX3NjaGVtZUVuZAotICAgICAgICAmJiBhLm1fdXNlclN0YXJ0ID09IGIubV91c2VyU3RhcnQK
LSAgICAgICAgJiYgYS5tX3VzZXJFbmQgPT0gYi5tX3VzZXJFbmQKLSAgICAgICAgJiYgYS5tX3Bh
c3N3b3JkRW5kID09IGIubV9wYXNzd29yZEVuZAotICAgICAgICAmJiBhLm1faG9zdEVuZCA9PSBi
Lm1faG9zdEVuZAotICAgICAgICAmJiBhLm1fcG9ydExlbmd0aCA9PSBiLm1fcG9ydExlbmd0aAot
ICAgICAgICAmJiBhLm1fcGF0aEFmdGVyTGFzdFNsYXNoID09IGIubV9wYXRoQWZ0ZXJMYXN0U2xh
c2gKLSAgICAgICAgJiYgYS5tX3BhdGhFbmQgPT0gYi5tX3BhdGhFbmQKLSAgICAgICAgJiYgYS5t
X3F1ZXJ5RW5kID09IGIubV9xdWVyeUVuZDsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmludGVybmFs
VmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gdXJsLm1fc2No
ZW1lRW5kIDw9IHVybC5tX3VzZXJTdGFydAotICAgICAgICAmJiB1cmwubV91c2VyU3RhcnQgPD0g
dXJsLm1fdXNlckVuZAotICAgICAgICAmJiB1cmwubV91c2VyRW5kIDw9IHVybC5tX3Bhc3N3b3Jk
RW5kCi0gICAgICAgICYmIHVybC5tX3Bhc3N3b3JkRW5kIDw9IHVybC5tX2hvc3RFbmQKLSAgICAg
ICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGggPD0gdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoCi0gICAgICAgICYmIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSB1cmwubV9w
YXRoRW5kCi0gICAgICAgICYmIHVybC5tX3BhdGhFbmQgPD0gdXJsLm1fcXVlcnlFbmQKLSAgICAg
ICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1fc3RyaW5nLmxlbmd0aCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjViZWIwMjRjOTgwMzIyYTZlMDUzOWE1YmZlODQ3YWU5
MTBjZmFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiVVJM
LmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
LQotc3RydWN0IFVJRE5BOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQb2ludEl0ZXJhdG9yOwotCi1jbGFzcyBVUkxQ
YXJzZXIgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFVSTFBhcnNlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7
Ci0gICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQoY29u
c3QgVVJMJik7Ci0gICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiBVUkxFbmNvZGVkRm9ybTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
VVJMRW5jb2RlZEZvcm0gcGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KTsKLSAgICBzdGF0
aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYpOwotCi0gICAgc3RhdGlj
IGNvbnN0IFVJRE5BJiBpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKLSAgICBz
dGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIpOwotCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgaXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1heWJlQ2Fu
b25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLQotcHJpdmF0ZToKLSAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJp
bmdWaWV3KTsKLSAgICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRG
b3JQcm90b2NvbChTdHJpbmdWaWV3KTsKLQotICAgIFVSTCBtX3VybDsKLSAgICBWZWN0b3I8TENo
YXI+IG1fYXNjaWlCdWZmZXI7Ci0gICAgYm9vbCBtX3VybElzU3BlY2lhbCB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX3VybElzRmlsZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hvc3RIYXNQZXJjZW50
T3JOb25BU0NJSSB7IGZhbHNlIH07Ci0gICAgU3RyaW5nIG1faW5wdXRTdHJpbmc7Ci0gICAgY29u
c3Qgdm9pZCogbV9pbnB1dEJlZ2luIHsgbnVsbHB0ciB9OwotCi0gICAgYm9vbCBtX2RpZFNlZVN5
bnRheFZpb2xhdGlvbiB7IGZhbHNlIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVm
YXVsdElubGluZUJ1ZmZlclNpemUgPSAyMDQ4OwotICAgIHVzaW5nIExDaGFyQnVmZmVyID0gVmVj
dG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT47Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqLCBjb25z
dCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyopOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2VBdXRob3JpdHko
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGJvb2wgcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9v
bCBwYXJzZVBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLQotICAgIHZv
aWQgZmFpbHVyZSgpOwotICAgIGVudW0gY2xhc3MgUmVwb3J0U3ludGF4VmlvbGF0aW9uIHsgTm8s
IFllcyB9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRh
eFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9sYXRpb246
Olllcz4KLSAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
IGl0ZXJhdG9yKSB7IGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgcmVwb3J0U3ludGF4VmlvbGF0aW9u
PihpdGVyYXRvciwgaXRlcmF0b3IpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uID0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXM+
Ci0gICAgdm9pZCBhZHZhbmNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29u
c3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4Vmlv
bGF0aW9uUG9zaXRpb24pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJv
b2wgdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHN5bnRheFZp
b2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNQZXJjZW50RW5jb2RlZERvdChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gYm9vbCBpc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
Ym9vbCBpc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzRG91Ymxl
RG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgc2hvdWxkQ29weUZpbGVVUkwoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IGJvb2wgY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mLCBVQ2hhcjMyKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBib29sIGlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4pOwotICAgIGJvb2wgaXNMb2NhbGhvc3QoU3RyaW5nVmlldyk7Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHZvaWQgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c2l6ZV90IGN1cnJlbnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+IHZvaWQg
YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlKTsKLSAgICB0ZW1w
bGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhR
dWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8TENoYXJCdWZm
ZXI+IGRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2Rl
KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgc3RhdGljIExD
aGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QpOwotICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KTsK
LSAgICBzdGF0aWMgYm9vbCBoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IExDaGFyQnVm
ZmVyJik7Ci0gICAgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90KTsKLSAgICB2b2lkIGFw
cGVuZFRvQVNDSUlCdWZmZXIoVUNoYXIzMik7Ci0gICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVy
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25z
dCBMQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IHNpemUpIHsgYXBwZW5kVG9BU0NJSUJ1ZmZlcihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFyYWN0ZXJzKSwgc2l6ZSk7IH0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGVuY29kZU5vblVURjhRdWVyeShj
b25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYsIENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB2b2lkIGNvcHlBU0NJSVN0cmluZ1Vu
dGlsKGNvbnN0IFN0cmluZyYsIHNpemVfdCBsZW5ndGgpOwotICAgIGJvb2wgY29weUJhc2VXaW5k
b3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJik7Ci0gICAgU3RyaW5nVmlldyBwYXJzZWREYXRhVmll
dyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpOwotICAgIFVDaGFyIHBhcnNlZERhdGFWaWV3
KHNpemVfdCBwb3NpdGlvbik7Ci0KLSAgICB1c2luZyBJUHY0QWRkcmVzcyA9IHVpbnQzMl90Owot
ICAgIHZvaWQgc2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyk7Ci0gICAgZW51bSBjbGFzcyBJUHY0
UGFyc2luZ0Vycm9yOwotICAgIGVudW0gY2xhc3MgSVB2NFBpZWNlUGFyc2luZ0Vycm9yOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24sIHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPElQdjRBZGRyZXNzLCBJUHY0UGFyc2luZ0Vycm9y
PiBwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JT
eW50YXhWaW9sYXRpb24+JiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPHVpbnQzMl90LCBVUkxQ
YXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gcGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBib29sJiBzeW50YXhWaW9sYXRpb24pOwotICAgIHVzaW5n
IElQdjZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2
SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGll
Y2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4g
cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4pOwotICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsKLSAgICB2
b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOwotCi0gICAgZW51bSBjbGFzcyBVUkxQYXJ0
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29weVVSTFBhcnRz
VW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyomKTsKLSAgICBzdGF0aWMgc2l6
ZV90IHVybExlbmd0aFVudGlsUGFydChjb25zdCBVUkwmLCBVUkxQYXJ0KTsKLSAgICB2b2lkIHBv
cFBhdGgoKTsKLSAgICBib29sIHNob3VsZFBvcFBhdGgodW5zaWduZWQpOwotfTsKLQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAppbmRleCA0MTgxZWMxM2JmZjhmNGUyYWE4Mjk1ZTFi
ZmI3ZWZlNTllZDA4MWUzLi5jMzQ0ODQ4NmVlN2MyYWVhY2FhZWJlYmY1YTBlYjcxODNkYzZlZmY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzYsNyArMzYsNiBAQCBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNv
bnN0IFN0cmluZyYgYXBwbGljYQogU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2Vy
QWdlbnRTdHJpbmcoKTsKIFN0cmluZyB1c2VyQWdlbnRCdW5kbGVWZXJzaW9uKCk7CiAjZWxzZQot
Y2xhc3MgVVJMOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBlbXB0eVN0cmluZygpLCBjb25zdCBTdHJpbmcm
IGFwcGxpY2F0aW9uVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCkpOwogV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKaW5kZXggMjMyZTVjZTU3ZGIwNWRiMzhiNDlk
ZDljMDIxYTFiYzk5YzAzODVjYi4uNDliNTg5MjBhN2FlYjc3MzJkNjU3MzI3NTU5MzQ3N2ExODZi
MGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBA
IC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiVXNlckFnZW50UXVpcmtzLmgiCiAKICNpbmNsdWRl
ICJQdWJsaWNTdWZmaXguaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVXNlckFnZW50UXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnRRdWlya3MuaAppbmRleCBiZjEwY2UyMzJkOTFkNDMxYmNiNmQ0YTcxYTUxZGQ0ZGRlOGZiODhh
Li5kYzc3ZDRlODUwZWY5MDlkNGIwMDU2ZDdjOWE3ZTFhZDQ1ZmRkOGVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgVXNlckFnZW50UXVpcmtzIHsK
IHB1YmxpYzoKICAgICBlbnVtIFVzZXJBZ2VudFF1aXJrIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0NGVVJMRXh0cmFzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNi
NDNiYzdhMDdiODBhZTRiYWEzNWZkYjczMzVhYzNiYTc2NDQxNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9D
RlVSTEV4dHJhcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0KLSNpbmNs
dWRlICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCi17Ci0gICAgLy8g
Tk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4g
Y29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKLSAgICAvLyAo
ZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3Qg
dG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgLy8gY291bGQg
ZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNv
ZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjawotICAgIC8vIG9udG8gdXNpbmcg
SVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXN1
bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgs
IGJhc2VVUkwsIHRydWUpKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gYWRv
cHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGJh
c2VVUkwsIHRydWUpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIGdldFVSTEJ5dGVz
KENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQotewotICAgIENGSW5kZXggYnl0
ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7Ci0gICAgcmVzdWx0LnJlc2l6ZShi
eXRlc0xlbmd0aCk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJs
LCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVuZ3RoKTsK
LSAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRlc0xlbmd0
aCk7Ci19Ci0KLXZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiByZXN1bHQp
Ci17Ci0gICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsK
LSAgICBjaGFyKiBieXRlczsKLSAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVk
KGJ5dGVzTGVuZ3RoLCBieXRlcyk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0
Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7
Ci0gICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5n
dGgpOwotfQotCi1ib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25zdCBV
UkwmIHVybCkKLXsKLSAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7Ci0K
LSAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCi0gICAgICAg
IHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsK
LQotICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5dGVz
KTsKLSAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5zaXplKCkp
IH07Ci0KLSAgICBpZiAoIXVybC5oYXNQYXRoKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmdWaWV3
IHsgdXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7Ci0KLSAgICBhdXRvIHVybFdpdGhvdXRQ
YXRoID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwucGF0aFN0
YXJ0KCkgKyAxKTsKLSAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxXaXRob3V0
UGF0aCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NG
VVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmQ1NzA2NjBkYTZhYTk4ZDEyMjg2NDA3OGZl
ZDdkZDZlNzc5ZWY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDRlVSTEV4dHJhc19oCi0j
ZGVmaW5lIENGVVJMRXh0cmFzX2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBVUkw7Ci10eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IFVSTENo
YXJCdWZmZXI7Ci0KLVdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZV
UkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VVUkwgPSAwKTsK
LVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXIm
KTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIENTdHJpbmcmKTsK
LQotYm9vbCBpc0NGVVJMU2FtZU9yaWdpbihDRlVSTFJlZiwgY29uc3QgVVJMJik7Ci0KLX0KLQot
I2VuZGlmIC8vIENGVVJMRXh0cmFzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1VSTENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI2NDFlZDJkOWJlYzEzZDZhMTc3OGY2MzY2
MmY5YjY2N2E5NzFjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkwuaCIK
LQotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+Ci0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6OlVSTChDRlVSTFJl
ZiB1cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUg
YmFzZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHVy
bCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsKLSAg
ICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotI2lmICFVU0UoRk9VTkRBVElPTikKLVJl
dGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17Ci0gICAgLy8gRklY
TUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/Ci0gICAgLy8gQ3Vy
cmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGlu
IHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAotICAgIC8vIHdoaWNoIGlzIGNsZWFybHkgd3Jvbmcu
Ci0gICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0gICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7Ci0g
ICAgYXV0byBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKLQotICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWlzQ0ZV
UkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIGNmVVJMOwotfQotI2VuZGlmCi0KLVN0cmluZyBVUkw6OmZpbGVTeXN0
ZW1QYXRoKCkgY29uc3QKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gY3JlYXRl
Q0ZVUkwoKTsKLSAgICBpZiAoIWNmVVJMKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSNp
ZiBQTEFURk9STShXSU4pCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NGVVJMV2lu
ZG93c1BhdGhTdHlsZTsKLSNlbHNlCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NG
VVJMUE9TSVhQYXRoU3R5bGU7Ci0jZW5kaWYKLSAgICByZXR1cm4gYWRvcHRDRihDRlVSTENvcHlG
aWxlU3lzdGVtUGF0aChjZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IDIxMDZjMmJhOWI4NmFjMDIwYjQwNzAxMGU5MTMy
MzliZDQyNTkwZWYuLmE0ZTc2MmU3ODYzOWRkNmM2M2NjMjZlODY5NzA5YTU5N2NhNDEwOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXJfaAotI2RlZmluZSBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcl9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGVudEZpbHRlci5oIgogI2luY2x1
ZGUgPG9iamMvTlNPYmpDUnVudGltZS5oPgpAQCAtMzksOCArMzgsNiBAQCBPQkpDX0NMQVNTIE5T
RGF0YTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ29udGVudEZp
bHRlciB7CiAgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4o
KTsKIApAQCAtNjksNSArNjYsMyBAQCBjbGFzcyBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCBlOTQ0MWZmY2RlYjg2ZTYyOGJiZTU0
ZjdjOTY1ZDg2NjgwNjExNDU1Li5kZTFkYWRiYjkzYmRlMmFmZmIwMmQzYjY2OWJiYmIwYTdkYWFi
YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAj
aW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTkVGaWx0ZXJTb3Vy
Y2VTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogI2ltcG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIFNPRlRfTElOS19G
UkFNRVdPUktfT1BUSU9OQUwoTmV0d29ya0V4dGVuc2lvbik7CkBAIC0xMTgsNyArMTE4LDcgQEAg
dm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY28KIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RVUkwgeyBV
UkwoKSwgbW9kaWZpZWRSZXF1ZXN0VVJMU3RyaW5nLmdldCgpIH07CiAgICAgaWYgKCFtb2RpZmll
ZFJlcXVlc3RVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAi
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQg
VVJMIHN0cmluZyAlQCB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVzdFVSTFN0
cmluZy5nZXQoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQgVVJMIHN0cmluZyAl
QCB0byBhICBVUkwuXG4iLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcuZ2V0KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL1NTTEtleUdlbmVyYXRvckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TU0xLZXlHZW5lcmF0b3JHTGliLmNwcAppbmRleCA5NDUwNmY1N2E0NzVlMWVjNTY3ZmI2OGZk
Y2FkYjRkMjBjMjJmMmJmLi40MWY0OGQ3MTYxZTdmMjk2NWMxNTU4NWZmMDA4ZmMyOTMwOTJjMzkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NTTEtleUdlbmVyYXRv
ckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU1NMS2V5R2VuZXJh
dG9yR0xpYi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGli
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5k
ZXggMTYyMWE4ODVlODcwNGNhODQ4MzIwZjYyNTFjMDZmOTIxYjE4OWQ4OC4uYTNiYTRlNDZkYzI4
Mzk1ZDg1MmNlOGZiNjhjNzBiNTc5OWUyNzcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50LmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJVc2VyQWdlbnRRdWlya3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCiAjaWYgT1MoVU5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuY3BwCmluZGV4IGIwY2E0M2Q1NWM0NWNiNTBk
NzMwZjg5MmUxN2Q4MDg2OWNjZDQ5NjEuLmQzNWViMTZiYTUyYWQwM2YwN2E0ZWZlZDA0MWJmYmU4
ODQwMzM2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRUYWdnZWRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFRhZ2dlZFNldHRpbmdzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5ncy5oIgogCisjaW5jbHVkZSA8d3Rm
L0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNDk3ZDJjNzlmZDJjYjA4ZmMz
ZDBjY2JmOGY4ZWEyMjczYzQzMTAxYy4uYWU4YTkzZjRmMWE0ODhjZWFiOGIzMWI0ODVjYmFhOGIy
Yjg1YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTY1LDYgKzY1LDEyIEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciBV
SW50ODsKICNlbmRpZgogI2VuZGlmCiAKKy8vIFgxMSBoZWFkZXIgZGVmaW5lcyAiTm9uZSIgYXMg
Y29uc3RhbnQgaW4gbWFjcm8gYW5kIGJyZWFrZXMgdGhlIFBhaW50SW52YWxpZGF0aW9uUmVhc29u
cyBlbnVtJ3MgIk5vbmUiLgorLy8gQXMgYSB3b3JrYXJvdW5kLCB3ZSBleHBsaWNpdGx5IHVuZGVm
IFgxMSdzIE5vbmUgaGVyZS4KKyNpZiBkZWZpbmVkKE5vbmUpCisjdW5kZWYgTm9uZQorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShXSU5HREkpCkBAIC04NSw3ICs5MSw2
IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIGNsYXNzIEltYWdlQnVm
ZmVyOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFJvdW5kZWRSZWN0OwotY2xhc3MgVVJMOwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBQYXRoOwogY2xhc3MgVGV4dFJ1bjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBkNmIwYzY1ZmJmNTdk
OWM3ZGVhMTk2MDgwMjliYzJhNjAxNDU3OGIxLi5iYzM4OTE0NDg5ZTMyZDMyOGE1NGQ0MjFlNTdk
YjdmMzE1OGYzM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
Y3BwCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDVmMjIwYmU0ZWYwNmYzZmMxZTc5MzQ5
ZmRlYjMzMGVkOTFlNzRhYzkuLjFlMzBmMzQ2OWU0YWI3OTg0NDE0YzJiZmQ4ZmFlNjRlMThhMDBh
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtNjgsNyAr
NjgsNiBAQCBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHRJbXBsOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogc3Ry
dWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1hZ2Ug
Y3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNlcyBh
bmltYXRpb24gZnJhbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VPYnNlcnZlci5oCmluZGV4IDgyNjljYzRlZGMzN2NlNWY0ZGMxNjVmYmQ0ZDYxYzM2OThh
NDI3ZmUuLmYyODMyM2MyNTViMWQwYTAxNDM1MWM5MzQyNzNkYTAxYzVhZjg1YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTIz
LDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgSW1hZ2VPYnNlcnZl
cl9oCi0jZGVmaW5lIEltYWdlT2JzZXJ2ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJ
bWFnZVR5cGVzLmgiCiAKQEAgLTMyLDcgKzMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBJbWFnZTsKIGNsYXNzIEludFJlY3Q7Ci1jbGFzcyBVUkw7CiAKIC8vIEludGVyZmFjZSBm
b3Igbm90aWZpY2F0aW9uIGFib3V0IGNoYW5nZXMgdG8gYW4gaW1hZ2UsIGluY2x1ZGluZyBkZWNv
ZGluZywKIC8vIGRyYXdpbmcsIGFuZCBhbmltYXRpbmcuCkBAIC01NCw1ICs1MiwzIEBAIGNsYXNz
IEltYWdlT2JzZXJ2ZXIgewogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA0ODhmOTQ1ZmRjM2QwMDBk
YmZhYTMzN2Q0NjVlNWZiMmVmYWFiNDM4Li5mZDRhMWZlMmRkODdiZjljMDhlY2FiYjEwZjNlZjM3
NDI5NGIxODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJJbWFnZURlY29kZXIu
aCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRl
IDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaAppbmRleCAwOTAxMDEyMjk5ZWJjNDFjMmNhODRlMTllOTUxZTAyNDc4ODY5NThlLi45
ODBkNjBlZTUwZDUwYmMyNmEwMDMwNWUwM2U1MWI0ZDQ0Y2M5ZTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM4LDcgKzM4LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEltYWdlU291
cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiB7CiAgICAgZnJp
ZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKaW5kZXggNDYyYTcyNjYwNTg0NzEyM2U4N2I3NDk1NWY0ZjE2OGZm
ODJmYTZmMC4uMDYwMTQ2ZDNhYzcxMGZlMWM0ZDc4YTMwODEwNjkzYmJmYThiMTFjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MCw3
ICs0MCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5jcHAKaW5kZXggNTkxNWE3NzMxNmVkOGEwMzBhNGU2ZDNhZDc0MTA0YzE3OGNh
ZDlkMi4uM2UxZDI3MGU2NGU3ODVkYWE3MTk1NWRkNGFhZmU0MDMyZjllYjY1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAK
QEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1UaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5l
cy5oPgpAQCAtNDksNiArNDgsNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0
cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGU4MjQ0OWE1
MGZjYzhlOWI4MTdmYzc3ZTJhYTNhMDE5NWY2YTEyMjYuLjFkYmM1Y2Q4OGE3YTA4YTUwYzM5OTlh
MDAyZWU0N2I3NWYyMWY3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtNDUsOSArNDUsOSBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FM
YXllcldpbi5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8cGFsL2F2Zm91
bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
ICNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkNGUGxheWVySXRlbS5oPgogI2lmIEhBVkUoQVZG
T1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpp
bmRleCA3ZDQ5ZDRlMTBjOWU1MTY1YmNlYWUyNTE2M2Q5NmFkYWFmYmQ3YzFiLi42ZTQxMTdlNWVh
MzlhOGUwOWVmYzVkOTE0NDhmNzY2ZjVhYWUzYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
QEAgLTU5LDcgKzU5LDYgQEAKICNpbXBvcnQgIlRleHRFbmNvZGluZy5oIgogI2ltcG9ydCAiVGV4
dFRyYWNrUmVwcmVzZW50YXRpb24uaCIKICNpbXBvcnQgIlRleHR1cmVDYWNoZUNWLmgiCi0jaW1w
b3J0ICJVUkwuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMuaCIK
ICNpbXBvcnQgIlZpZGVvVGV4dHVyZUNvcGllckNWLmgiCiAjaW1wb3J0ICJWaWRlb1RyYWNrUHJp
dmF0ZUFWRk9iakMuaCIKQEAgLTgxLDYgKzgwLDcgQEAKICNpbXBvcnQgPHd0Zi9MaXN0SGFzaFNl
dC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmpl
Y3RQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKaW5kZXggNWY4NTcwYjEyMTcwNWE2YmE5MTUwNmUzMWJlZDk3ZjY0Nzg4Y2Y2Zi4uNzZiZWYw
NzNkOTcyZWMxNzA3MjBkNmRlZTJhZTkwMDFmM2EyNmU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lmIFVTRShDQUlSTykKIAogI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYmQyYTczYTM0
ZmFhMWRiZTE1OTIyZWMzYjFjMTFhZDExYjU2ZjY1Ny4uNjhlYzMxZWRkYTBkYTkwZWY4MTYxYjg5
NjdjNDc0OGE4MDMwMjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBA
CiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjk3MDNlMjFl
YjIxNTcwZjEwM2U1NDJiNWU1NDQzYWIzODY4OWU3NC4uYzUzM2EyZGU0M2IwY2IyMTg2NzMwMmVm
ODYwODhiYzRmNjM2YThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5o
IgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC00Nyw2ICs0Niw3
IEBACiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9H
VW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRS5jcHAKaW5kZXggNGYxZjhhYjAzOGI3ODMzYmVhZTI4OTBhMmNhZTQ1NTk4ZGZiMmE3Ni4u
ZDE1YzJhNTBkNzJjNTNlM2EwOTVlMDYyYjFjMzQwOWZlZWYyNmQ1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAt
MzksNyArMzksNiBAQAogI2luY2x1ZGUgIlBsYXliYWNrUGlwZWxpbmUuaCIKICNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgi
CiAKICNpbmNsdWRlIDxmbm1hdGNoLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
SGFzaC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGY3YmQ0NzczYmZkNWM1NjdlODAxZmIwNzE3OGViOGZkODYxYjdkNDAu
Ljk2OWE0MjI0NDJlNTgzZDNlZDFhZjdjZmU0M2QyOWU0MmFhOWViNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFT
b3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02MzUsNyAr
NjM1LDcgQEAgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFTcmNTZXRVcmkoR3N0VVJJSGFuZGxlciogaGFu
ZGxlciwgY29uc3QgZ2NoYXIqIHVyaSwgR0Vycm9yKioKICAgICAgICAgcmV0dXJuIFRSVUU7CiAg
ICAgfQogCi0gICAgV2ViQ29yZTo6VVJMIHVybChXZWJDb3JlOjpVUkwoKSwgdXJpKTsKKyAgICBV
UkwgdXJsKFVSTCgpLCB1cmkpOwogCiAgICAgcHJpdi0+bG9jYXRpb24gPSBHVW5pcXVlUHRyPGdj
aGFyPihnX3N0cmR1cCh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdTVF9PQkpF
Q1RfVU5MT0NLKHNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09WVFRDdWUuY3BwCmluZGV4IGQwM2Y1ZjdmY2VhM2M4ZjE3Mzc3MTZhNDM1Zjll
NjY2MDEyYTVmMTguLjllYzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQyODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
Y3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiSVNPVlRUQ3VlLmgiCiAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RGF0YVZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogdXNpbmcgSlNDOjpEYXRhVmlldzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHAKaW5kZXggNWVhY2UxMDg4NjY3YzIyOWI1YWZjMzllYzkzNjg3ZTBkNDVhNTJmYi4uNDQ4
MTczMTU3NWFlNDA5NDk1NGM3Njk1ZmRkNzVlN2EwNTVjOGFiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDxkMmQxZWZmZWN0
cy5oPgogI2luY2x1ZGUgPGR3cml0ZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI3ByYWdt
YSB3YXJuaW5nIChkaXNhYmxlIDogNDc1NikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRHJhZ0ltYWdlR3RrLmNwcAppbmRleCAzM2Y0ZmUzYTQyZjA1ZjJkNmI5M2RiMGZhZGE4Nzg0
M2U5YjcwMjY4Li5mN2QxODRmNjdlOGFjMzU2NTUzMzUxNTNlMWNlNTU4YWUxOGU5N2UxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAtMjMsOSAr
MjMsOSBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5j
bHVkZSAiVGV4dEluZGljYXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGNhaXJv
Lmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAKaW5kZXggYTRhYjYxMGE3M2ZmMWFjOTE0OTBkZGMyMDA4YzQ4OGQ0MmM5MDBmMC4u
NzFhMDBhMzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjcsOCArMjcsOCBAQAog
I2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRl
Z2llcy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBmMzA4YzJiYjdlNTM2OTFkYTM0YzZl
YmQwYjM0ZWQxMWJlYjJmYjY0Li44MTQzZmFmYzM3YzFiYzQ4YTRjMGRlOGRmMTA5NmQ3MjM4ZTY1
MDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0
ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Q
YXN0ZWJvYXJkR3RrLmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmRI
ZWxwZXIuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBkYTUxZGEwOWFkMTI3NDhjZjc5YTUwZjZj
MzM0OTllNTBhYTM1Yzg3Li4xYjg1OGVmOWRlZTU3YzIwNmJhM2UwYzczYWFkOGE4NjY5NmI4MjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTE5
LDkgKzE5LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA5ZjY5MTRlYzQ4MWYxZGNhYWRhNzVkZjk2ZDFkNTcw
MjU1ZmY3MTUyLi40ZDY2OWYwMWExMzU5ZGE4YTQ3MzQ1ZWMzYzMyN2FkYjIzOWE5OTdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMzUsMTAg
KzM1LDEwIEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAi
VVJMLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVT
ZXJ2aWNlcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCiBAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoTlNBdHRyaWJ1dGVkU3Ry
aW5nS2l0QWRkaXRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZGE3ZjYyMTc3YWM4NTk2MDUzMTAxYjViODkx
ODJlMDIxYTliMjZkYy4uZDdhZDQyNWRhYWI0NmY4MWI2OTk5Mzk4NzgzY2MyNTFmZTgyYmRiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCkBAIC0zMiw5ICszMiw3IEBACiAjaW1wb3J0ICJJbWFnZS5oIgogI2ltcG9ydCAi
UGFzdGVib2FyZC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJVUkwuaCIK
ICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgi
CiAjaW1wb3J0ICJXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0IDxNb2JpbGVD
b3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUNvbG9y
Lmg+CkBAIC00NCw2ICs0Miw4IEBACiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgog
I2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjZGVmaW5lIFBBU1RFQk9BUkRfU1VQ
UE9SVFNfSVRFTV9QUk9WSURFUlMgKFBMQVRGT1JNKElPUykgJiYgIShQTEFURk9STShXQVRDSE9T
KSB8fCBQTEFURk9STShBUFBMRVRWKSkpCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdl
KQogICAgIGF1dG8mIHBhc3RlYm9hcmRVUkwgPSBwYXN0ZWJvYXJkSW1hZ2UudXJsOwogICAgIGlm
IChOU1VSTCAqbnNVUkwgPSBwYXN0ZWJvYXJkVVJMLnVybCkgewogI2lmIE5TVVJMX1NVUFBPUlRT
X1RJVExFCi0gICAgICAgIG5zVVJMLl90aXRsZSA9IHBhc3RlYm9hcmRVUkwudGl0bGUuaXNFbXB0
eSgpID8gdXNlclZpc2libGVTdHJpbmcocGFzdGVib2FyZFVSTC51cmwpIDogKE5TU3RyaW5nICop
cGFzdGVib2FyZFVSTC50aXRsZTsKKyAgICAgICAgbnNVUkwuX3RpdGxlID0gcGFzdGVib2FyZFVS
TC50aXRsZS5pc0VtcHR5KCkgPyBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRVUkwu
dXJsKSA6IChOU1N0cmluZyAqKXBhc3RlYm9hcmRVUkwudGl0bGU7CiAjZW5kaWYKICAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0Om5zVVJMXTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29r
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgKaW5kZXggNDlkODEx
ZDUxNDBjOGZkMGFmMDE2MjlkOGQwYzFjOWU5ZTk5NGYxNy4uMGE2ZWZhZWYzZTg2MWVmNTlmZDQy
ODljZWY5MTFjNzc4ZGE3MGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xv
b2suaApAQCAtMzUsOCArMzUsNiBAQCBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIFdFQkNPUkVfRVhQT1JUIE5TU2V0ICpRTFBy
ZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChO
U1VSTCAqLCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0YSAqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBkY2U3MzMzMWU3N2E4NzQ2OGI2NzExN2M0
MzRiNGIwYjgyMzJhOWViLi43MTZjMzY2NmI5YzRiY2U3MTM2MWY0YzA1MzgxZGMzYTlhM2JkMTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0zNiw2
ICszNiw3IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgorI2lt
cG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1w
b3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CkBAIC0yMTAsNyAr
MjExLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgLy8gRklY
TUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdlIGtub3cgLVtO
U1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxsIHRoZSBzYW1l
IGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRpbmcgYW4gTlNV
UkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0gICAgICAgIHJldHVybiB1c2VyVmlzaWJsZVN0cmlu
ZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsKKyAgICAgICAgcmV0dXJuIFdURjo6dXNl
clZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CiAKICAgICAvLyBG
SVhNRTogV1RGIHNob3VsZCBvZmZlciBhIG5vbi1NYWMtc3BlY2lmaWMgd2F5IHRvIGNvbnZlcnQg
c3RyaW5nIHRvIHByZWNvbXBvc2VkIGZvcm0gc28gd2UgY2FuIGRvIGl0IGZvciBhbGwgcGxhdGZv
cm1zLgogICAgIHJldHVybiBbKE5TU3RyaW5nICopc3RyaW5nIHByZWNvbXBvc2VkU3RyaW5nV2l0
aENhbm9uaWNhbE1hcHBpbmddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1h
Z2VNYWMubW0KaW5kZXggMjAxY2IzMzhiYmQ3ZGM3NTNiMzM1YTMwMDYyYzJiOTEyNmIxMTk0OS4u
OWQ4YmI4N2Y5YmUxN2JhMzU3MjQ3ZTA1NjljZTQ2NWZhNjY2YzFkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC00MSwxMiArNDEsMTIgQEAKICNp
bXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlN0cmluZ1RydW5jYXRvci5oIgogI2ltcG9ydCAiVGV4
dEluZGljYXRvci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJLaXROU0ltYWdlRXh0
cmFzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9VUkxG
b3JtYXR0aW5nU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2lmICFIQVZFKFVSTF9GT1JNQVRUSU5HKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09Q
VElPTkFMKExpbmtQcmVzZW50YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9G
aWxlU3lzdGVtTWFjLm1tCmluZGV4IDA3MWQwYzkxMTc3OTRlNjAzOGQ5OGFhZDU2ZmU5NmZmOGY0
ODE1MzMuLjhlZDc1MWE3ZWMwZTVkMGJhZjc3NGY5ODYxMGFjYjA0NWNkMmIwMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCkBAIC0yOCw4ICsyOCw4
IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5o
IgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2Nv
YS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRh
ZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHIK
IHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVz
ZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJsU3RyaW5n
ID0gdXNlclZpc2libGVTdHJpbmcoVVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOworICAgICAg
ICB1cmxTdHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1vdmluZ1Vz
ZXJJbmZvKHVybCkpOwogICAgIGVsc2UKICAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRhdGFVUkxT
dHJpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
aW5kZXggM2MzNjdkYTQ4NDBjMGU0MmQzYTRhOTVjNzA2MTE1NTk2MTEzNDc2Mi4uOGE1YzI3NGNh
NjRjMzkwMjAwN2U4NzQ2YTQzZjViZmMzNjBkZGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTM3LDcgKzM3LDYgQEAKICNpbXBvcnQgIlBs
YXRmb3JtUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1w
b3J0ICJTaGFyZWRCdWZmZXIuaCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVVRJVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQg
PHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC00NSw2ICs0NCw3IEBACiAjaW1wb3J0
IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2ltcG9ydCA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVy
TmFtZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdy
aXRlci5tbQppbmRleCA2YTI4ZmU2MmFjZWNkNTcyNjU4ZDAzM2QwY2Q5YzFhYzMxZWUwZTNkLi4w
ZmU1MDVkZTU1YzY2MTY0OGYwNTlkYTliN2ZhZTJhMDc3ZmM2MjNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtNjMsMTAgKzYzLDEw
IEBAIFJldGFpblB0cjxpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4+IGNyZWF0ZVBhc3RlYm9hcmRX
cml0ZXIoY29uc3QgUGFzdGVib2FyZFdyaXRlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
YXV0byYgdXJsID0gZGF0YS51cmwoKSkgewotICAgICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmwt
PnVybDsKLSAgICAgICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nID0gdXJsLT51c2VyVmlz
aWJsZUZvcm07Ci0gICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IChOU1N0cmluZyAqKXVybC0+dGl0
bGU7CisgICAgaWYgKGF1dG8mIHVybERhdGEgPSBkYXRhLnVybERhdGEoKSkgeworICAgICAgICBO
U1VSTCAqY29jb2FVUkwgPSB1cmxEYXRhLT51cmw7CisgICAgICAgIE5TU3RyaW5nICp1c2VyVmlz
aWJsZVN0cmluZyA9IHVybERhdGEtPnVzZXJWaXNpYmxlRm9ybTsKKyAgICAgICAgTlNTdHJpbmcg
KnRpdGxlID0gKE5TU3RyaW5nICopdXJsRGF0YS0+dGl0bGU7CiAgICAgICAgIGlmICghdGl0bGUu
bGVuZ3RoKSB7CiAgICAgICAgICAgICB0aXRsZSA9IGNvY29hVVJMLnBhdGgubGFzdFBhdGhDb21w
b25lbnQ7CiAgICAgICAgICAgICBpZiAoIXRpdGxlLmxlbmd0aCkKQEAgLTc0LDcgKzc0LDcgQEAg
UmV0YWluUHRyPGlkIDxOU1Bhc3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2FyZFdyaXRl
cihjb25zdCBQYXN0ZWJvYXJkV3JpdGUKICAgICAgICAgfQogCiAgICAgICAgIC8vIFdlYlVSTHNX
aXRoVGl0bGVzUGJvYXJkVHlwZS4KLSAgICAgICAgYXV0byBwYXRocyA9IGFkb3B0TlMoW1tOU0Fy
cmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6QFsgQFsgY29jb2FVUkwuYWJzb2x1dGVTdHJpbmcg
XSBdLCBAWyB1cmwtPnRpdGxlLnN0cmlwV2hpdGVTcGFjZSgpIF0sIG5pbF0pOworICAgICAgICBh
dXRvIHBhdGhzID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpAWyBA
WyBjb2NvYVVSTC5hYnNvbHV0ZVN0cmluZyBdIF0sIEBbIHVybERhdGEtPnRpdGxlLnN0cmlwV2hp
dGVTcGFjZSgpIF0sIG5pbF0pOwogICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0UHJvcGVydHlM
aXN0OnBhdGhzLmdldCgpIGZvclR5cGU6dG9VVEkoQCJXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5
cGUiKS5nZXQoKV07CiAKICAgICAgICAgLy8gTlNVUkxQYm9hcmRUeXBlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXgg
YjFkZmZiNmNiN2U2NDI1NzQxYmQwYzZjMGU1M2I0ZWZkY2ZkYjE3MS4uMGNiMWRkOGI5MzBhMDY1
YjdjMDgwMTVjYTJlMGNlNWRiZDViMmI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0zMiwxMCArMzIsMTAgQEAK
ICNpbXBvcnQgIkNvbG9yTWFjLmgiCiAjaW1wb3J0ICJMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5o
IgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJTaGFy
ZWRCdWZmZXIuaCIKICNpbXBvcnQgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2ltcG9ydCA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCmluZGV4IDIzMDM4MTdmM2IyMTRmYWM1NGZl
MGY0ZTI2ZDA0OTMzM2I1MTA0MzUuLjAxOTZiNDE2ZWQ0MjViMTcwMGViY2U5YzBiYzFkYzhiNjYz
MTM4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZm
aXhNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1h
Yy5tbQpAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkK
IAotI2ltcG9ydCAiVVJMLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBv
cnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1w
b3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02Myw3ICs2Myw3IEBAIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGNvbnN0
IFN0cmluZyYgZG9tYWluKQogCiBTdHJpbmcgZGVjb2RlSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBk
b21haW4pCiB7Ci0gICAgcmV0dXJuIGRlY29kZUhvc3ROYW1lKChOU1N0cmluZyAqKShkb21haW4p
KTsKKyAgICByZXR1cm4gV1RGOjpkZWNvZGVIb3N0TmFtZShkb21haW4pOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQppbmRl
eCBmYzQwYWExOWIwNGMzYWUzNDcxODAyNzYzZjdkZjM4OWE3MjI4YzlkLi5iZDlkYTBkZDg2YWNj
ZDFkODRhNmMzZmVkYTBiNDEyYTI2YWRmNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KQEAgLTI5LDEzICsyOSwxMyBAQAogI2lm
IFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2ltcG9ydCAi
VVJMLmgiCiAjaW1wb3J0IDxTZWN1cml0eS9TZWNBc24xQ29kZXIuaD4KICNpbXBvcnQgPFNlY3Vy
aXR5L1NlY0FzbjFUZW1wbGF0ZXMuaD4KICNpbXBvcnQgPFNlY3VyaXR5L1NlY0VuY29kZVRyYW5z
Zm9ybS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
I2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvVVJMTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjVjMWRl
N2IwMjgzY2QwZGJkYmE1NmNhMTZmYWZjNWYzOWM1OGI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxN
YWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiVVJMLmgiCi0KLSNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJVUkxQYXJz
ZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgotI2ltcG9ydCA8d3RmL09iamNS
dW50aW1lRXh0cmFzLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLUBpbnRlcmZh
Y2UgTlNTdHJpbmcgKFdlYkNvcmVOU1VSTEV4dHJhcykKLS0gKEJPT0wpX3dlYl9sb29rc0xpa2VJ
UEFkZHJlc3M7Ci1AZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwoTlNVUkwg
KnVybCkKLXsKLSAgICBpZiAoIXVybCkgewotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBi
YXNlIFVSTCBoZXJlPwotICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXMoKF9f
YnJpZGdlIENGVVJMUmVmKXVybCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJzZXIodXJs
Qnl0ZXMuZGF0YSgpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotVVJMOjpv
cGVyYXRvciBOU1VSTCAqKCkgY29uc3QKLXsKLSAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBi
cmlkZ2VkIENGVVJMIGJlY2F1c2UgY3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdvdWxkIG5v
dCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5nLgotICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxp
dHkgd2hlbiByb3VuZC10cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgotICAgIHJldHVybiBj
cmVhdGVDRlVSTCgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKLX0KLQotUmV0YWluUHRyPENGVVJM
UmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICAvLyBX
ZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3Jl
YXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KLSAg
ICAgICAgcmV0dXJuIChfX2JyaWRnZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGlu
aXRXaXRoU3RyaW5nOkAiIl0pLmdldCgpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gY2ZVUkw7Ci0KLSAgICAvLyBGYXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMgOC1iaXQg
dG8gYXZvaWQgY29weWluZyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KLSAgICBpZiAoTElLRUxZ
KG1fc3RyaW5nLmlzOEJpdCgpKSkKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZm
ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSks
IG1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gU2xvd2VyIHBhdGgu
Ci0gICAgICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOwotICAgICAgICBjb3B5VG9CdWZmZXIoYnVm
ZmVyKTsKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgfQotCi0gICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSAmJiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gY2ZVUkw7Ci19Ci0KLWJvb2wgVVJMOjpob3N0
SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewotICAgIHJldHVybiBbaG9zdC5jcmVhdGVO
U1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkgX3dlYl9sb29rc0xpa2VJUEFkZHJlc3NdOwot
fQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5T
VVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0
cmFzLmgKaW5kZXggZmUxMDY4MTM0NWY1N2YzZjQxZjRkMGRhNzJjZTYxNjFkYmIwNjk0OC4uMWMw
NzMyOWJlOWViYjZmYjBhMjNjNWQyN2NkYTgwMmM0ZTgwMWUxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaApAQCAtMjYsMjkgKzI2LDEw
IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLUBjbGFzcyBOU1N0cmluZzsKIEBjbGFzcyBOU1VSTDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqdXNlclZp
c2libGVTdHJpbmcoTlNVUkwgKik7CiBXRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlDYW5vbmlj
YWxpemluZ1VSTChOU1VSTCAqKTsKLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxXaXRoVXNlclR5
cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsgLy8gUmV0dXJuIHZhbHVlIG9m
IG5pbCBtZWFucyBlcnJvci4KLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeVJlbW92aW5nVXNl
ckluZm8oTlNVUkwgKik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGhvc3ROYW1lTmVlZHNEZWNvZGlu
Z1dpdGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlLCBCT09MKiBlcnJvcik7Ci1XRUJDT1JFX0VY
UE9SVCBCT09MIGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqLCBOU1Jh
bmdlLCBCT09MKiBlcnJvcik7Ci1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2RlSG9zdE5h
bWVXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwg
bWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWVXaXRo
UmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMg
ZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcg
Kik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBO
U1N0cmluZyAqZW5jb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBu
aWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25l
Q2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICosIENGVVJMQ29tcG9uZW50VHlwZSk7Ci1X
RUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICosIE5TVVJMICpiYXNlVVJM
KTsKLVdFQkNPUkVfRVhQT1JUIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOwotV0VC
Q09SRV9FWFBPUlQgTlNEYXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAqLCBDRlVS
TENvbXBvbmVudFR5cGUpOwotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRT
dHJpbmdEZXByZWNhdGVkKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsKLQotTlNSYW5nZSBy
YW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBpc1VzZXJW
aXNpYmxlVVJMKE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBsb29rc0xpa2VBYnNv
bHV0ZVVSTChOU1N0cmluZyAqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KaW5kZXggY2Ux
Yzk1NjNiMGI1OWNhOTY0NTkzYWM2ZGM5OTdkNGM0NDYwYWEwYi4uMDQ0YzQyOTBkZGZlNWY1MDk4
Mzg5MTgzYThiYjQ5YWU0NzRhODBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBAIC0yNyw3ICsyNyw2IEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJVUkxQYXJzZXIuaCIKICNpbXBvcnQgIldlYkNvcmVO
U1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBv
cnQgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtMzksOTk5ICszOCw4IEBACiAjaW1wb3J0IDx1bmljb2Rl
L3VpZG5hLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KIAotLy8gTmVlZHMgdG8gYmUg
YmlnIGVub3VnaCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCi0vLyBGb3IgaG9zdCBuYW1l
cyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFs
bW9zdCBjZXJ0YWlubHkgT0suCi0jZGVmaW5lIEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RIIDIwNDgK
LSNkZWZpbmUgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEggMjA0OAotCi10eXBlZGVmIHZvaWQgKCog
U3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24pKE5TU3RyaW5nICosIE5TUmFuZ2UsIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4mKTsKLQotc3RhdGljIHVpbnQzMl90IElETlNjcmlwdFdoaXRlTGlz
dFsoVVNDUklQVF9DT0RFX0xJTUlUICsgMzEpIC8gMzJdOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBib29sIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIoVUNoYXIzMiBjb2Rl
UG9pbnQpCi17Ci0gICAgcmV0dXJuIGNvZGVQb2ludCA9PSAweDA1NDggfHwgY29kZVBvaW50ID09
IDB4MDU0RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQb2ludCA9PSAweDA1N0Q7Ci19
Ci0KLXN0YXRpYyBib29sIGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoVUNoYXIzMiBjb2RlUG9p
bnQpCi17Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBVU2NyaXB0
Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjb2RlUG9pbnQsICZlcnJvcik7Ci0gICAg
aWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICBMT0dfRVJST1IoImdvdCBJQ1Ug
ZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBlcnJvcik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NyaXB0ID09IFVTQ1JJUFRf
QVJNRU5JQU47Ci19Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5l
IGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSBjaGFy
Q29kZSkKLXsKLSAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24oY2hhckNvZGUpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGluZ3MgdGhlIFVSTCBQYXJzZXIgcmVq
ZWN0czoKLSAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7Ci0gICAgY2FzZSAnIyc6Ci0gICAgY2FzZSAn
JSc6Ci0gICAgY2FzZSAnLyc6Ci0gICAgY2FzZSAnOic6Ci0gICAgY2FzZSAnPyc6Ci0gICAgY2Fz
ZSAnQCc6Ci0gICAgY2FzZSAnWyc6Ci0gICAgY2FzZSAnXFwnOgotICAgIGNhc2UgJ10nOgotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotfQotCi0KLQotc3RhdGljIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0ZXIoc3RkOjpvcHRp
b25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjaGFyQ29kZSkKLXsKLSAg
ICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVuc2FmZSwgbG9va2Fs
aWtlIGNoYXJhY3RlcnM6Ci0gICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hhcmFjdGVyLCBhbnkg
Y2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKLSAgICAvLyBhbnkgaWdub3JhYmxl
IGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBsb2Nrcy4KLSAgICAK
LSAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4gTW96aWxsYSdzIGJs
YWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklETi5ibGFja2xpc3Rf
Y2hhcnM+LgotCi0gICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVycyBoZXJlIHdpbGwgbmV2ZXIg
YXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgotICAgIC8vIEZvciBleGFtcGxlLCBJQ1UgdHJh
bnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNlIGFuZCBtb3N0Ci0gICAgLy8g
c2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUgb2YgdGhlIHR3byBjYWxsZXJz
IHVzZXMgdGhpcwotICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBoYXZlIG5vdCBiZWVuIHByb2Nl
c3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgotICAgIAotICAgIGlmICghdV9p
c3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hhckNvZGUpIHx8IHVfaGFzQmlu
YXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQp
KQotICAgICAgICByZXR1cm4gWUVTOwotICAgIAotICAgIHN3aXRjaCAoY2hhckNvZGUpIHsKLSAg
ICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUiAqLwotICAg
ICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGICovCi0gICAgICAg
IGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMgKi8KLSAgICAg
ICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUgKi8KLSAg
ICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBSRVRST0ZMRVggQ0xJQ0sgKi8KLSAg
ICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBBTFBIQSAqLwotICAgICAg
ICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBHICovCi0gICAgICAg
IGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJQU5HVUxBUiBDT0xPTiAqLwotICAg
ICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JUIFNUUk9LRSBPVkVSTEFZICovCi0g
ICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQgU09MSURVUyBPVkVSTEFZICov
Ci0gICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9WRVJMQVkg
Ki8KLSAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZVTEwgU1RPUCAqLwotICAgICAg
ICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICovCi0gICAgICAgIGNhc2UgMHgw
NUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRICovCi0gICAgICAgIGNhc2UgMHgw
NUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRICovCi0gICAgICAgIGNhc2UgMHgw
NUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICovCi0gICAgICAgIGNhc2UgMHgw
NjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2
MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJR04gKi8KLSAgICAgICAgY2Fz
ZSAweDA2NTA6IC8qIEFSQUJJQyBLQVNSQSAqLwotICAgICAgICBjYXNlIDB4MDY2MDogLyogQVJB
QklDIElORElDIERJR0lUIFpFUk8gKi8KLSAgICAgICAgY2FzZSAweDA2NkE6IC8qIEFSQUJJQyBQ
RVJDRU5UIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2RDQ6IC8qIEFSQUJJQyBGVUxMIFNUT1Ag
Ki8KLSAgICAgICAgY2FzZSAweDA2RjA6IC8qIEVYVEVOREVEIEFSQUJJQyBJTkRJQyBESUdJVCBa
RVJPICovCi0gICAgICAgIGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMgU1VQUkFMSU5FQVIgRlVMTCBT
VE9QICovCi0gICAgICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMgU1VCTElORUFSIEZVTEwgU1RP
UCAqLwotICAgICAgICBjYXNlIDB4MDcwMzogLyogU1lSSUFDIFNVUFJBTElORUFSIENPTE9OICov
Ci0gICAgICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJQUMgU1VCTElORUFSIENPTE9OICovCi0gICAg
ICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQVU5DVFVBVElPTiAqLwotICAg
ICAgICBjYXNlIDB4MUQwNDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgQyAqLwotICAg
ICAgICBjYXNlIDB4MUQwRjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTyAqLwotICAg
ICAgICBjYXNlIDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVSAqLwotICAg
ICAgICBjYXNlIDB4MUQyMDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgViAqLwotICAg
ICAgICBjYXNlIDB4MUQyMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVyAqLwotICAg
ICAgICBjYXNlIDB4MUQyMjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgWiAqLwotICAg
ICAgICBjYXNlIDB4MUVDRDogLyogTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1QgQkVMT1cg
Ki8KLSAgICAgICAgY2FzZSAweDIwMTA6IC8qIEhZUEhFTiAqLwotICAgICAgICBjYXNlIDB4MjAx
MTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLwotICAgICAgICBjYXNlIDB4MjAyNDogLyogT05F
IERPVCBMRUFERVIgKi8KLSAgICAgICAgY2FzZSAweDIwMjc6IC8qIEhZUEhFTkFUSU9OIFBPSU5U
ICovCi0gICAgICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBR
VU9UQVRJT04gTUFSSyAqLwotICAgICAgICBjYXNlIDB4MjAzQTogLyogU0lOR0xFIFJJR0hULVBP
SU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHgyMDQxOiAvKiBD
QVJFVCBJTlNFUlRJT04gUE9JTlQgKi8KLSAgICAgICAgY2FzZSAweDIwNDQ6IC8qIEZSQUNUSU9O
IFNMQVNIICovCi0gICAgICAgIGNhc2UgMHgyMDUyOiAvKiBDT01NRVJDSUFMIE1JTlVTIFNJR04g
Ki8KLSAgICAgICAgY2FzZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgVEhJUkQgKi8K
LSAgICAgICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08gVEhJUkRTICovCi0g
ICAgICAgIGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEZJRlRIICovCi0gICAg
ICAgIGNhc2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRIUyAqLwotICAgICAg
ICBjYXNlIDB4MjE1NzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRIUyAqLwotICAgICAg
ICBjYXNlIDB4MjE1ODogLyogVlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhTICovCi0gICAgICAg
IGNhc2UgMHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIICovCi0gICAgICAgIGNh
c2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhUSFMgKi8KLSAgICAgICAgY2Fz
ZSAweDIxNUI6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFQgKi8KLSAgICAgICAgY2FzZSAw
eDIxNUM6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhTICovCi0gICAgICAgIGNhc2Ug
MHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTICovCi0gICAgICAgIGNhc2Ug
MHgyMTVFOiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRIUyAqLwotICAgICAgICBjYXNl
IDB4MjE1RjogLyogRlJBQ1RJT04gTlVNRVJBVE9SIE9ORSAqLwotICAgICAgICBjYXNlIDB4MjIx
MjogLyogTUlOVVMgU0lHTiAqLwotICAgICAgICBjYXNlIDB4MjIxNTogLyogRElWSVNJT04gU0xB
U0ggKi8KLSAgICAgICAgY2FzZSAweDIyMTY6IC8qIFNFVCBNSU5VUyAqLwotICAgICAgICBjYXNl
IDB4MjIzNjogLyogUkFUSU8gKi8KLSAgICAgICAgY2FzZSAweDIzM0Y6IC8qIEFQTCBGVU5DVElP
TkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KLSAgICAgICAgY2FzZSAweDIzQUU6IC8qIElOVEVHUkFM
IEVYVEVOU0lPTiAqLwotICAgICAgICBjYXNlIDB4MjQ0QTogLyogT0NSIERPVUJMRSBCQUNLU0xB
U0ggKi8KLSAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1Mg
TElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLwotICAgICAgICBjYXNl
IDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBVUFBF
UiBMRUZUIFRPIExPV0VSIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyOUY2OiAvKiBTT0xJRFVT
IFdJVEggT1ZFUkJBUiAqLwotICAgICAgICBjYXNlIDB4MjlGODogLyogQklHIFNPTElEVVMgKi8K
LSAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFSWSBSRUxBVElPTiAq
LwotICAgICAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BFUkFUT1IgKi8KLSAg
ICAgICAgY2FzZSAweDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBM
RUZUIFRPIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyRkYxOiAvKiBJREVPR1JBUEhJQyBERVND
UklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KLSAgICAgICAgY2FzZSAweDJGRjI6
IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIE1JRERMRSBBTkQg
UklHSFQgKi8KLSAgICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9O
IENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICovCi0gICAgICAgIGNhc2UgMHgy
RkY0OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVMTCBTVVJST1VORCAq
LwotICAgICAgICBjYXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFD
VEVSIFNVUlJPVU5EIEZST00gQUJPVkUgKi8KLSAgICAgICAgY2FzZSAweDJGRjY6IC8qIElERU9H
UkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJFTE9XICovCi0gICAg
ICAgIGNhc2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VS
Uk9VTkQgRlJPTSBMRUZUICovCi0gICAgICAgIGNhc2UgMHgyRkY4OiAvKiBJREVPR1JBUEhJQyBE
RVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZUICovCi0gICAgICAg
IGNhc2UgMHgyRkY5OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9V
TkQgRlJPTSBVUFBFUiBSSUdIVCAqLwotICAgICAgICBjYXNlIDB4MkZGQTogLyogSURFT0dSQVBI
SUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIgTEVGVCAqLwotICAg
ICAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIE9W
RVJMQUlEICovCi0gICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVPR1JBUEhJQyBGVUxMIFNUT1Ag
Ki8KLSAgICAgICAgY2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUgQlJBQ0tFVCAqLwotICAgICAg
ICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAg
IGNhc2UgMHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAg
IGNhc2UgMHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQUEVSIEhBTEYgKi8K
LSAgICAgICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgTE9XRVIg
SEFMRiAqLwotICAgICAgICBjYXNlIDB4MzIxRDogLyogUEFSRU5USEVTSVpFRCBLT1JFQU4gQ0hB
UkFDVEVSIE9KRU9OICovCi0gICAgICAgIGNhc2UgMHgzMjFFOiAvKiBQQVJFTlRIRVNJWkVEIEtP
UkVBTiBDSEFSQUNURVIgTyBIVSAqLwotICAgICAgICBjYXNlIDB4MzNBRTogLyogU1FVQVJFIFJB
RCBPVkVSIFMgKi8KLSAgICAgICAgY2FzZSAweDMzQUY6IC8qIFNRVUFSRSBSQUQgT1ZFUiBTIFNR
VUFSRUQgKi8KLSAgICAgICAgY2FzZSAweDMzQzY6IC8qIFNRVUFSRSBDIE9WRVIgS0cgKi8KLSAg
ICAgICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9WRVIgTSAqLwotICAgICAgICBjYXNlIDB4
MDVCOTogLyogSEVCUkVXIFBPSU5UIEhPTEFNICovCi0gICAgICAgIGNhc2UgMHgwNUJBOiAvKiBI
RUJSRVcgUE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZBViAqLwotICAgICAgICBjYXNlIDB4MDVDMTog
LyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCi0gICAgICAgIGNhc2UgMHgwNUMyOiAvKiBIRUJS
RVcgUE9JTlQgU0lOIERPVCAqLwotICAgICAgICBjYXNlIDB4MDVDNDogLyogSEVCUkVXIE1BUksg
VVBQRVIgRE9UICovCi0gICAgICAgIGNhc2UgMHhBNzMxOiAvKiBMQVRJTiBMRVRURVIgU01BTEwg
Q0FQSVRBTCBTICovCi0gICAgICAgIGNhc2UgMHhBNzcxOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIg
RFVNICovCi0gICAgICAgIGNhc2UgMHhBNzg5OiAvKiBNT0RJRklFUiBMRVRURVIgQ09MT04gKi8K
LSAgICAgICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBT
RU1JQ09MT04gKi8KLSAgICAgICAgY2FzZSAweEZFMTU6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZP
UiBWRVJUSUNBTCBFWENMQU1BVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHhGRTNGOiAvKiBQ
UkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFDS0VUICovCi0gICAg
ICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8K
LSAgICAgICAgY2FzZSAweEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNL
RVQgKi8KLSAgICAgICAgY2FzZSAweEZGMEU6IC8qIEZVTExXSURUSCBGVUxMIFNUT1AgKi8KLSAg
ICAgICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09MSURVUyAqLwotICAgICAgICBjYXNl
IDB4RkY2MTogLyogSEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwgU1RPUCAqLwotICAgICAgICBj
YXNlIDB4RkZGQzogLyogT0JKRUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAqLwotICAgICAgICBj
YXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCi0gICAgICAgIGNhc2UgMHgx
RjUwRjogLyogTE9DSyBXSVRIIElOSyBQRU4gKi8KLSAgICAgICAgY2FzZSAweDFGNTEwOiAvKiBD
TE9TRUQgTE9DSyBXSVRIIEtFWSAqLwotICAgICAgICBjYXNlIDB4MUY1MTE6IC8qIEtFWSAqLwot
ICAgICAgICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sgKi8KLSAgICAgICAgY2FzZSAweDFGNTEzOiAv
KiBPUEVOIExPQ0sgKi8KLSAgICAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgICAgIGNhc2UgMHgw
MzA3OiAvKiBDT01CSU5JTkcgRE9UIEFCT1ZFICovCi0gICAgICAgICAgICByZXR1cm4gcHJldmlv
dXNDb2RlUG9pbnQgPT0gMHgwMjM3IC8qIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogKi8K
LSAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAxMzEgLyogTEFUSU4g
U01BTEwgTEVUVEVSIERPVExFU1MgSSAqLwotICAgICAgICAgICAgICAgIHx8IHByZXZpb3VzQ29k
ZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExFVFRFUiBWQVYgKi8KLSAgICAgICAgY2FzZSAw
eDA1NDg6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPICovCi0gICAgICAgIGNhc2UgMHgw
NTREOiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUggKi8KLSAgICAgICAgY2FzZSAweDA1
Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLwotICAgICAgICBjYXNlIDB4MDU3RDog
LyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNFSCAqLwotICAgICAgICAgICAgcmV0dXJuIHByZXZp
b3VzQ29kZVBvaW50Ci0gICAgICAgICAgICAgICAgJiYgIWlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0
Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCi0gICAgICAgICAgICAgICAgJiYg
IWlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUoKSk7Ci0g
ICAgICAgIGNhc2UgJy4nOgotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50Ci0gICAgICAgICAgICAgICAg
JiYgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgp
KQotICAgICAgICAgICAgICAgICYmICEoaXNBcm1lbmlhblNjcmlwdENoYXJhY3RlcihjaGFyQ29k
ZSkgfHwgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoY2hhckNvZGUpKTsKLSAgICB9
Ci19Ci0KLXN0YXRpYyB2b2lkIHdoaXRlTGlzdElETlNjcmlwdChjb25zdCBjaGFyKiBzY3JpcHRO
YW1lKQotewotICAgIGludDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9wZXJ0eVZhbHVlRW51bShVQ0hB
Ul9TQ1JJUFQsIHNjcmlwdE5hbWUpOwotICAgIGlmIChzY3JpcHQgPj0gMCAmJiBzY3JpcHQgPCBV
U0NSSVBUX0NPREVfTElNSVQpIHsKLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc2NyaXB0IC8gMzI7
Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7Ci0gICAgICAgIElE
TlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gfD0gbWFzazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBCT09M
IHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpmaWxlbmFtZSkKLXsKLSAgICBp
ZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBGSUxFICpmaWxlID0gZm9w
ZW4oW2ZpbGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICJyIik7Ci0gICAgaWYgKCFm
aWxlKQotICAgICAgICByZXR1cm4gTk87Ci0gICAgCi0gICAgLy8gUmVhZCBhIHdvcmQgYXQgYSB0
aW1lLgotICAgIC8vIEFsbG93IGNvbW1lbnRzLCBzdGFydGluZyB3aXRoICMgY2hhcmFjdGVyIHRv
IHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgLy8gU2tpcCBh
IGNvbW1lbnQgaWYgcHJlc2VudC4KLSAgICAgICAgaWYgKGZzY2FuZihmaWxlLCAiICMlKlteXG5c
cl0lKltcblxyXSIpID09IEVPRikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAg
ICAgLy8gUmVhZCBhIHNjcmlwdCBuYW1lIGlmIHByZXNlbnQuCi0gICAgICAgIGNoYXIgd29yZFsz
M107Ci0gICAgICAgIGludCByZXN1bHQgPSBmc2NhbmYoZmlsZSwgIiAlMzJbXiMgXHRcblxyXSUq
W14jIFx0XG5ccl0gIiwgd29yZCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gRU9GKQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVzdWx0ID09IDEpIHsKLSAgICAg
ICAgICAgIC8vIEdvdCBhIHdvcmQsIG1hcCB0byBzY3JpcHQgY29kZSBhbmQgcHV0IGl0IGludG8g
dGhlIGFycmF5LgotICAgICAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHdvcmQpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGZjbG9zZShmaWxlKTsKLSAgICByZXR1cm4gWUVTOwotfQotCi1zdGF0
aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29uc3QgVUNoYXIgKmJ1
ZmZlciwgaW50MzJfdCBsZW5ndGgpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBmbGFn
OwotICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57Ci0gICAgICAgIC8vIFJlYWQgd2hpdGUgbGlz
dCBmcm9tIGxpYnJhcnkuCi0gICAgICAgIE5TQXJyYXkgKmRpcnMgPSBOU1NlYXJjaFBhdGhGb3JE
aXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxsRG9tYWluc01hc2ss
IFlFUyk7Ci0gICAgICAgIGludCBudW1EaXJzID0gW2RpcnMgY291bnRdOwotICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykgewotICAgICAgICAgICAgaWYgKHJlYWRJRE5T
Y3JpcHRXaGl0ZUxpc3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGNoYXIqIGRlZmF1bHRJRE5T
Y3JpcHRXaGl0ZUxpc3RbMjBdID0gewotICAgICAgICAgICAgIkNvbW1vbiIsCi0gICAgICAgICAg
ICAiSW5oZXJpdGVkIiwKLSAgICAgICAgICAgICJBcmFiaWMiLAotICAgICAgICAgICAgIkFybWVu
aWFuIiwKLSAgICAgICAgICAgICJCb3BvbW9mbyIsCi0gICAgICAgICAgICAiQ2FuYWRpYW5fQWJv
cmlnaW5hbCIsCi0gICAgICAgICAgICAiRGV2YW5hZ2FyaSIsCi0gICAgICAgICAgICAiRGVzZXJl
dCIsCi0gICAgICAgICAgICAiR3VqYXJhdGkiLAotICAgICAgICAgICAgIkd1cm11a2hpIiwKLSAg
ICAgICAgICAgICJIYW5ndWwiLAotICAgICAgICAgICAgIkhhbiIsCi0gICAgICAgICAgICAiSGVi
cmV3IiwKLSAgICAgICAgICAgICJIaXJhZ2FuYSIsCi0gICAgICAgICAgICAiS2F0YWthbmFfT3Jf
SGlyYWdhbmEiLAotICAgICAgICAgICAgIkthdGFrYW5hIiwKLSAgICAgICAgICAgICJMYXRpbiIs
Ci0gICAgICAgICAgICAiVGFtaWwiLAotICAgICAgICAgICAgIlRoYWkiLAotICAgICAgICAgICAg
IllpIiwKLSAgICAgICAgfTsKLSAgICAgICAgZm9yIChjb25zdCBjaGFyKiBzY3JpcHROYW1lIDog
ZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKLSAgICAgICAgICAgIHdoaXRlTGlzdElETlNjcmlw
dChzY3JpcHROYW1lKTsKLSAgICB9KTsKLSAgICAKLSAgICBpbnQzMl90IGkgPSAwOwotICAgIHN0
ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgd2hpbGUgKGkgPCBs
ZW5ndGgpIHsKLSAgICAgICAgVUNoYXIzMiBjOwotICAgICAgICBVMTZfTkVYVChidWZmZXIsIGks
IGxlbmd0aCwgYykKLSAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAg
ICAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQoYywgJmVycm9yKTsK
LSAgICAgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICAgICAgTE9HX0VS
Uk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNjcmlwdHM6ICVkIiwg
ZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICB9Ci0gICAgICAgIGlmIChz
Y3JpcHQgPCAwKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoImdvdCBuZWdhdGl2ZSBudW1iZXIg
Zm9yIHNjcmlwdCBjb2RlIGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7Ci0gICAgICAgICAgICByZXR1
cm4gTk87Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNjcmlwdCA+PSBVU0NSSVBUX0NPREVfTElN
SVQpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0KLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc2Ny
aXB0IC8gMzI7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7Ci0g
ICAgICAgIGlmICghKElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gJiBtYXNrKSkKLSAgICAgICAg
ICAgIHJldHVybiBOTzsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3Rl
cihwcmV2aW91c0NvZGVQb2ludCwgYykpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0gICAgICAg
IHByZXZpb3VzQ29kZVBvaW50ID0gYzsKLSAgICB9Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotc3Rh
dGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBV
Q2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKFVD
aGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKLXsKLSAgICBBU1NFUlQobGVuZ3RoID4gMCk7Ci0K
LSAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAg
IFVDaGFyIGNoID0gYnVmZmVyW2ldOwotICAgICAgICAKLSAgICAgICAgaWYgKGNoYXJhY3Rlcklz
QWxsb3dlZChjaCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8v
IE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExvd2VyIGxldmVsIHJlZ2lzdHJh
cnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgotICAgICAgICBpZiAoY2ggPT0gJy4nKQotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCi0jZGVmaW5lIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRD
SEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKLSAgICB7IFwKLSAgICAgICAgc3RhdGljIGNvbnN0IGlu
dDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yoc3VmZml4WzBdKTsg
XAotICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYmIDAgPT0gbWVtY21wKGJ1ZmZl
ciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXplb2Yoc3VmZml4KSkpIFwKLSAg
ICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVz
KGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlvbik7IFwKLSAgICB9Ci0KLXN0
YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNoYXIgY2gpCi17Ci0gICAg
Ly8gT25seSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxs
b3dlZC4KLSAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09
IDB4MDQ1MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLX0KLQotc3RhdGljIEJP
T0wgYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGlu
dDMyX3QgbGVuZ3RoKQotewotICAgIC8vIFNraXAgdHJhaWxpbmcgZG90IGZvciByb290IGRvbWFp
bi4KLSAgICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFdID09ICcuJykKLSAgICAgICAgbGVuZ3RoLS07
Ci0KLSAgICAvLyBodHRwOi8vY2N0bGQucnUvZmlsZXMvcGRmL2RvY3MvcnVsZXNfcnUtcmYucGRm
Ci0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9IHsKLSAgICAgICAgJy4nLAot
ICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0
NDQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNf
SUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rl
cik7Ci0KLSAgICAvLyBodHRwOi8vcnVzbmFtZXMucnUvcnVsZXMucGwKLSAgICBzdGF0aWMgY29u
c3QgVUNoYXIgY3lyaWxsaWNSVVNbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0NDAs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0NDMsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBVCi0gICAgICAgIDB4MDQ0MSAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IEVTCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1JV
UywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vcnUuZmFp
dGlkLm9yZy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2YS9pZG4KLSAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAw
eDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAweDA0M0UsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEVTCi0gICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0g
ICAgICAgIDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCi0gICAgICAgIDB4MDQz
MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZBLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFj
dGVyKTsKLQotICAgIC8vIGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9mb3J1c2VyL2RvY3MvcmVncnVs
ZXMucGhwCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljREVUSVtdID0gewotICAgICAg
ICAnLicsCi0gICAgICAgIDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCi0gICAg
ICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCi0gICAgICAgIDB4MDQ0Miwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCi0gICAgICAgIDB4MDQzOCAgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEkKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVT
KGN5cmlsbGljREVUSSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBo
dHRwOi8vY29yZW5pYy5vcmcgLSBydWxlcyBub3QgcHVibGlzaGVkLiBUaGUgd29yZCBpcyBSdXNz
aWFuLCBzbyBvbmx5IGFsbG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0aW1lLAotICAgIC8vIGFsdGhv
dWdoIHdlIG1heSBuZWVkIHRvIHJldmlzZSB0aGUgY2hlY2tzIGlmIHRoaXMgZW5kcyB1cCBiZWlu
ZyB1c2VkIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBSdXNzaWEuCi0gICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGN5cmlsbGljT05MQVlOW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAg
MHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0M0QsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgICAgICAweDA0M0IsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBFTAotICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0g
ICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKLSAgICAgICAg
MHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KLSAgICB9OwotICAgIENIRUNLX1JV
TEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT05MQVlOLCBpc1J1c3NpYW5Eb21haW5OYW1l
Q2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHNhbWUgYXMgYWJvdmUu
Ci0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU0FZVFtdID0gewotICAgICAgICAnLics
Ci0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4
MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICAgICAgMHgwNDM5LCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQotICAgICAgICAweDA0NDIgIC8vIENZUklMTElDIFNN
QUxMIExFVFRFUiBURQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMo
Y3lyaWxsaWNTQVlULCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0
dHA6Ly9waXIub3JnL3Byb2R1Y3RzL29wci1kb21haW4vIC0gcnVsZXMgbm90IHB1Ymxpc2hlZC4g
QWNjb3JkaW5nIHRvIHRoZSByZWdpc3RyeSBzaXRlLAotICAgIC8vIHRoZSBpbnRlbmRlZCBhdWRp
ZW5jZSBpcyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xhdmljLXNwZWFraW5nIG1hcmtldHMiLgotICAg
IC8vIENocm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lhbiwgc28gc3RpY2tpbmcgd2l0
aCB0aGF0IGZvciBub3cuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT1JHW10gPSB7
Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
TwotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAw
eDA0MzMgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKLSAgICB9OwotICAgIENIRUNLX1JV
TEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hh
cmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxlcy5odG1sCi0gICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgw
NDMxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICAgICAgMHgwNDM1LCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgSUUKLSAgICAgICAgMHgwNDNCICAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgRUwKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmls
bGljQkVMLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBSdXNzaWFuIGFuZCBCeWVsb3J1c3Np
YW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVy
biAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09
IDB4MDQ1NiB8fCBjaCA9PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5IHx8IGlzQVNDSUlEaWdpdChj
aCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gaHR0cDovL3d3dy5uaWMua3ovZG9j
cy9wb3J5YWRva192bmVkcmVuaXlhX2thel9ydS5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIg
Y3lyaWxsaWNLQVpbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0OUIsIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDA0MzAsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAgICAgIDB4MDQzNyAgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIFpFCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJp
bGxpY0tBWiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gS2F6YWtoIGxldHRlcnMsIGRpZ2l0
cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAm
JiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0RDkgfHwgY2ggPT0g
MHgwNDkzIHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMgfHwgY2ggPT0gMHgwNEU5IHx8
IGNoID09IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0gMHgwNEJCIHx8IGNoID09IDB4
MDQ1NiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8v
IGh0dHA6Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1bGVzJTIwb2YlMjBVS1JfdjQu
MC5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNVS1JbXSA9IHsKLSAgICAgICAg
Jy4nLAotICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCi0gICAgICAg
IDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAgIDB4MDQ0MCAgLy8g
Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZG
SVhfTUFUQ0hFUyhjeXJpbGxpY1VLUiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gUnVzc2lh
biBhbmQgVWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgot
ICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4
MDQ1MSB8fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8IGNoID09IDB4MDQ1NiB8fCBj
aCA9PSAweDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0K
LSAgICAvLyBodHRwOi8vd3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1FTlRJL2lkbi1zcmItcG9saWN5
LXRlcm1zb2Z1c2UtdjEuNC1lbmcucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGlj
U1JCW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgRVMKLSAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIK
LSAgICAgICAgMHgwNDMxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICB9OwotICAg
IENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU1JCLCBbXShVQ2hhciBjaCkg
ewotICAgICAgICAvLyBTZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxv
d2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChj
aCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTIgfHwgY2ggPT0gMHgw
NDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0gMHgwNDVCIHx8IGNo
ID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQot
ICAgIC8vIGh0dHA6Ly9tYXJuZXQubWsvZG9jL3ByYXZpbG5pay1tay1ta2QucGRmCi0gICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTUtEW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAg
MHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KLSAgICAgICAgMHgwNDNBLCAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwNDM0ICAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgREUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5
cmlsbGljTUtELCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBNYWNlZG9uaWFuIGxldHRlcnMs
IGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4
MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8
fCBjaCA9PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1IHx8IGNoID09IDB4MDQ1OCB8fCBjaCA9PSAw
eDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8fCBjaCA9PSAweDA0NUYgfHwg
aXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwczov
L3d3dy5tb24ubW4vY3MvCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTU9OW10gPSB7
Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
RU0KLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAw
eDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgIH07Ci0gICAgQ0hFQ0tfUlVM
RVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT04sIFtdKFVDaGFyIGNoKSB7Ci0gICAgICAg
IC8vIE1vbmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAg
ICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0
NTEgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRBRiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8
IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIE5vdCBhIGtub3duIHRvcCBsZXZlbCBkb21h
aW4gd2l0aCBzcGVjaWFsIHJ1bGVzLgotICAgIHJldHVybiBOTzsKLX0KLQotLy8gUmV0dXJuIHZh
bHVlIG9mIG5pbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1ha2VTdHJp
bmcgaXMgTk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwgb3Igc2VsZiB0byBpbmRp
Y2F0ZSBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1ha2VTdHJpbmcgaXMgWUVTLCB0aGVu
IHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBwZWQgc3RyaW5nLgotc3RhdGlj
IE5TU3RyaW5nICptYXBIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1Jhbmdl
IHJhbmdlLCBCT09MIGVuY29kZSwgQk9PTCBtYWtlU3RyaW5nLCBCT09MICplcnJvcikKLXsKLSAg
ICBpZiAocmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgCi0gICAgVUNoYXIgc291cmNlQnVmZmVyW0hPU1RfTkFNRV9CVUZGRVJfTEVO
R1RIXTsKLSAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NUX05BTUVfQlVGRkVSX0xFTkdU
SF07Ci0gICAgCi0gICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCIlIiBv
cHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24gIT0gTlNOb3RGb3Vu
ZCkgewotICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBzdWJzdHJpbmdXaXRo
UmFuZ2U6cmFuZ2VdOwotICAgICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVS
TENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgKENGU3RyaW5n
UmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7Ci0gICAgICAgIGlmIChzdWJzdHJpbmcpIHsKLSAg
ICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKLSAgICAgICAgICAgIHJhbmdlID0gTlNNYWtl
UmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBp
bnQgbGVuZ3RoID0gcmFuZ2UubGVuZ3RoOwotICAgIFtzdHJpbmcgZ2V0Q2hhcmFjdGVyczpzb3Vy
Y2VCdWZmZXIgcmFuZ2U6cmFuZ2VdOwotICAgIAotICAgIFVFcnJvckNvZGUgdWVycm9yID0gVV9a
RVJPX0VSUk9SOwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9f
SU5JVElBTElaRVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gKGVuY29k
ZSA/IHVpZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5pY29kZSkoJlVSTFBhcnNlcjo6
aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksIHNvdXJjZUJ1ZmZlciwgbGVuZ3Ro
LCBkZXN0aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgsICZwcm9jZXNzaW5n
RGV0YWlscywgJnVlcnJvcik7Ci0gICAgaWYgKGxlbmd0aCAmJiAoVV9GQUlMVVJFKHVlcnJvcikg
fHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkgewotICAgICAgICAqZXJyb3IgPSBZRVM7Ci0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIAotICAgIGlmIChudW1DaGFyYWN0ZXJzQ29u
dmVydGVkID09IGxlbmd0aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZlciwgZGVzdGluYXRpb25CdWZm
ZXIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAot
ICAgIGlmICghZW5jb2RlICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoZGVz
dGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpICYmICFhbGxDaGFyYWN0ZXJz
QWxsb3dlZEJ5VExEUnVsZXMoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0
ZWQpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBtYWtlU3RyaW5nID8g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0aW9uQnVmZmVyIGxlbmd0aDpu
dW1DaGFyYWN0ZXJzQ29udmVydGVkXSA6IHN0cmluZzsKLX0KLQotQk9PTCBob3N0TmFtZU5lZWRz
RGVjb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCAq
ZXJyb3IpCi17Ci0gICAgcmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2Us
IE5PLCBOTywgZXJyb3IpICE9IG5pbDsKLX0KLSAKLUJPT0wgaG9zdE5hbWVOZWVkc0VuY29kaW5n
V2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQot
ewotICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBZRVMsICBO
TywgZXJyb3IpICE9IG5pbDsKLX0KLQotTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdl
KE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5P
OwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5n
ZSwgTk8sIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcgKmVuY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0g
ICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRo
UmFuZ2Uoc3RyaW5nLCByYW5nZSwgWUVTLCBZRVMsICZlcnJvcik7Ci0gICAgaWYgKGVycm9yKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Ci19
Ci0KLU5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQotewotICAgIEJP
T0wgZXJyb3IgPSBOTzsKLSAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdl
KHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgTk8sIFlFUywgJmVycm9y
KTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuICFob3N0
ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5TU3RyaW5n
ICpzdHJpbmcpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0g
bWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0
aF0pLCBZRVMsIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotc3RhdGljIHZvaWQg
Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJh
bmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSwgQk9PTCBlbmNvZGUpCi17Ci0g
ICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0
aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3QgbmVlZCBtYXBwaW5nLgotICAgIC8v
IFRoZXJlZm9yZSwgd2UgdXNlIG5pbCB0byBpbmRpY2F0ZSBubyBtYXBwaW5nIGhlcmUgYW5kIGFu
IGVtcHR5IGFycmF5IHRvIGluZGljYXRlIGVycm9yLgotCi0gICAgQk9PTCBlcnJvciA9IE5POwot
ICAgIEJPT0wgbmVlZHNNYXBwaW5nID0gZW5jb2RlID8gaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0
aFJhbmdlKHN0cmluZywgcmFuZ2UsICZlcnJvcikgOiBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRo
UmFuZ2Uoc3RyaW5nLCByYW5nZSwgJmVycm9yKTsKLSAgICBpZiAoIWVycm9yICYmICFuZWVkc01h
cHBpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIWFycmF5KQotICAgICAgICBh
cnJheSA9IGFkb3B0TlMoW05TTXV0YWJsZUFycmF5IG5ld10pOwotCi0gICAgaWYgKCFlcnJvcikK
LSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1d
OwotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyhOU1N0cmlu
ZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJh
eSkKLXsKLSAgICByZXR1cm4gY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhzdHJpbmcsIHJh
bmdlLCBhcnJheSwgWUVTKTsKLX0KLQotc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVk
RGVjb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiYgYXJyYXkpCi17Ci0gICAgcmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1h
cHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIE5PKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbHlI
b3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywgU3RyaW5n
UmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkp
Ci17Ci0gICAgLy8gSW4gYSBtYWlsdG86IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVyIGEgJ0An
IGNoYXJhY3RlciBhbmQgZW5kIHdpdGggYSAnPicgb3IgJywnIG9yICc/JyBjaGFyYWN0ZXIuCi0g
ICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5ncyBzbyB0aGF0IGNoYXJhY3RlcnMgaW4gdGhlbSBkb24n
dCBjb25mdXNlIHVzLgotICAgIC8vIFdoZW4gd2UgZmluZCBhICc/JyBjaGFyYWN0ZXIsIHdlIGFy
ZSBwYXN0IHRoZSBwYXJ0IG9mIHRoZSBVUkwgdGhhdCBjb250YWlucyBob3N0IG5hbWVzLgotICAg
IAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBo
b3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3Rl
clNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJcIkA/Il07Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3ROYW1lRW5kQ2hhcmFjdGVycyA9
IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiPiw/
Il07Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+
IHF1b3RlZFN0cmluZ0NoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0
aENoYXJhY3RlcnNJblN0cmluZzpAIlwiXFwiXTsKLSAgICAKLSAgICB1bnNpZ25lZCBzdHJpbmdM
ZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07Ci0gICAgTlNSYW5nZSByZW1haW5pbmcgPSBOU01ha2VS
YW5nZSgwLCBzdHJpbmdMZW5ndGgpOwotICAgIAotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIC8v
IEZpbmQgc3RhcnQgb2YgaG9zdCBuYW1lIG9yIG9mIHF1b3RlZCBzdHJpbmcuCi0gICAgICAgIE5T
UmFuZ2UgaG9zdE5hbWVPclN0cmluZ1N0YXJ0ID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJv
bVNldDpob3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6
MCByYW5nZTpyZW1haW5pbmddOwotICAgICAgICBpZiAoaG9zdE5hbWVPclN0cmluZ1N0YXJ0Lmxv
Y2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdW5p
Y2hhciBjID0gW3N0cmluZyBjaGFyYWN0ZXJBdEluZGV4Omhvc3ROYW1lT3JTdHJpbmdTdGFydC5s
b2NhdGlvbl07Ci0gICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoaG9zdE5h
bWVPclN0cmluZ1N0YXJ0KTsKLSAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xlbmd0
aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09ICc/JykK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09ICdAJykgewot
ICAgICAgICAgICAgLy8gRmluZCBlbmQgb2YgaG9zdCBuYW1lLgotICAgICAgICAgICAgdW5zaWdu
ZWQgaG9zdE5hbWVTdGFydCA9IHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAgIE5TUmFu
Z2UgaG9zdE5hbWVFbmQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhvc3ROYW1l
RW5kQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5nXTsKLSAg
ICAgICAgICAgIEJPT0wgZG9uZTsKLSAgICAgICAgICAgIGlmIChob3N0TmFtZUVuZC5sb2NhdGlv
biA9PSBOU05vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgaG9zdE5hbWVFbmQubG9jYXRpb24g
PSBzdHJpbmdMZW5ndGg7Ci0gICAgICAgICAgICAgICAgZG9uZSA9IFlFUzsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gaG9zdE5hbWVF
bmQubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xl
bmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICBkb25lID0gTk87Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFByb2Nlc3MgaG9zdCBu
YW1lIHJhbmdlLgotICAgICAgICAgICAgZihzdHJpbmcsIE5TTWFrZVJhbmdlKGhvc3ROYW1lU3Rh
cnQsIGhvc3ROYW1lRW5kLmxvY2F0aW9uIC0gaG9zdE5hbWVTdGFydCksIGFycmF5KTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKGRvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5nLgotICAg
ICAgICAgICAgQVNTRVJUKGMgPT0gJyInKTsKLSAgICAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAg
ICAgICAgICAgICAgTlNSYW5nZSBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBbc3RyaW5n
IHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OnF1b3RlZFN0cmluZ0NoYXJhY3RlcnMuZ2V0KCkuZ2V0
KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107Ci0gICAgICAgICAgICAgICAgaWYgKGVzY2Fw
ZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBjID0gW3N0cmluZyBjaGFyYWN0
ZXJBdEluZGV4OmVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbl07Ci0gICAgICAg
ICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gTlNNYXhSYW5nZShlc2NhcGVkQ2hhcmFjdGVy
T3JTdHJpbmdFbmQpOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdM
ZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgLy8gSWYgd2UgYXJlIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgdGhlbiBicmVhayBmcm9t
IHRoZSBzdHJpbmcgbG9vcCBiYWNrIHRvIHRoZSBob3N0IG5hbWUgbG9vcC4KLSAgICAgICAgICAg
ICAgICBpZiAoYyA9PSAnIicpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIC8vIFNraXAgZXNjYXBlZCBjaGFyYWN0ZXIuCi0gICAg
ICAgICAgICAgICAgQVNTRVJUKGMgPT0gJ1xcJyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZW1h
aW5pbmcubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
ICAgICByZW1haW5pbmcubG9jYXRpb24gKz0gMTsKLSAgICAgICAgICAgICAgICByZW1haW5pbmcu
bGVuZ3RoIC09IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRp
YyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcs
IFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4m
IGFycmF5KQotewotICAgIC8vIEZpbmQgaG9zdG5hbWVzLiBUb28gYmFkIHdlIGNhbid0IHVzZSBh
bnkgcmVhbCBVUkwtcGFyc2luZyBjb2RlIHRvIGRvIHRoaXMsCi0gICAgLy8gYnV0IHdlIGhhdmUg
dG8gZG8gaXQgYmVmb3JlIGRvaW5nIGFsbCB0aGUgJS1lc2NhcGluZywgYW5kIHRoaXMgaXMgdGhl
IG9ubHkKLSAgICAvLyBjb2RlIHdlIGhhdmUgdGhhdCBwYXJzZXMgbWFpbHRvIFVSTHMgYW55d2F5
LgotICAgIAotICAgIC8vIE1heWJlIHdlIHNob3VsZCBpbXBsZW1lbnQgdGhpcyB1c2luZyBhIGNo
YXJhY3RlciBidWZmZXIgaW5zdGVhZD8KLSAgICAKLSAgICBpZiAocHJvdG9jb2xJcyhzdHJpbmcs
ICJtYWlsdG8iKSkgewotICAgICAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0
cmluZyhzdHJpbmcsIGYsIGFycmF5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAg
ICAvLyBGaW5kIHRoZSBob3N0IG5hbWUgaW4gYSBoaWVyYXJjaGljYWwgVVJMLgotICAgIC8vIEl0
IGNvbWVzIGFmdGVyIGEgIjovLyIgc2VxdWVuY2UsIHdpdGggc2NoZW1lIGNoYXJhY3RlcnMgcHJl
Y2VkaW5nLgotICAgIC8vIElmIGVuZHMgd2l0aCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgYSAi
OiIsICIvIiwgb3IgYSAiPyIuCi0gICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFjdGVyLCB0
aGUgaG9zdCBwYXJ0IGlzIGp1c3QgdGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KLSAgICBOU1Jhbmdl
IHNlcGFyYXRvclJhbmdlID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiOi8vIl07Ci0gICAgaWYg
KHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICAvLyBDaGVjayB0aGF0IGFsbCBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgOi8vIGFy
ZSB2YWxpZCBzY2hlbWUgY2hhcmFjdGVycy4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0
YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gbm9uU2NoZW1lQ2hhcmFjdGVycyA9IFtbTlNDaGFyYWN0
ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIkFCQ0RFRkdISUpLTE1O
T1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky0uIl0gaW52
ZXJ0ZWRTZXRdOwotICAgIGlmIChbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Om5vblNj
aGVtZUNoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAs
IHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uKV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IFtzdHJpbmcgbGVu
Z3RoXTsKLSAgICAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFj
dGVyU2V0Pj4gaG9zdFRlcm1pbmF0b3JzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdp
dGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCI6Lz8jIl07Ci0gICAgCi0gICAgLy8gU3RhcnQgYWZ0ZXIg
dGhlIHNlcGFyYXRvci4KLSAgICB1bnNpZ25lZCBhdXRob3JpdHlTdGFydCA9IE5TTWF4UmFuZ2Uo
c2VwYXJhdG9yUmFuZ2UpOwotICAgIAotICAgIC8vIEZpbmQgdGVybWluYXRpbmcgY2hhcmFjdGVy
LgotICAgIE5TUmFuZ2UgaG9zdE5hbWVUZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9mQ2hhcmFj
dGVyRnJvbVNldDpob3N0VGVybWluYXRvcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5T
TWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBzdHJpbmdMZW5ndGggLSBhdXRob3JpdHlTdGFydCld
OwotICAgIHVuc2lnbmVkIGhvc3ROYW1lRW5kID0gaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9u
ID09IE5TTm90Rm91bmQgPyBzdHJpbmdMZW5ndGggOiBob3N0TmFtZVRlcm1pbmF0b3IubG9jYXRp
b247Ci0gICAgCi0gICAgLy8gRmluZCAiQCIgZm9yIHRoZSBzdGFydCBvZiB0aGUgaG9zdCBuYW1l
LgotICAgIE5TUmFuZ2UgdXNlckluZm9UZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9mU3RyaW5n
OkAiQCIgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBob3N0TmFt
ZUVuZCAtIGF1dGhvcml0eVN0YXJ0KV07Ci0gICAgdW5zaWduZWQgaG9zdE5hbWVTdGFydCA9IHVz
ZXJJbmZvVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8gYXV0aG9yaXR5U3RhcnQg
OiBOU01heFJhbmdlKHVzZXJJbmZvVGVybWluYXRvcik7Ci0gICAgCi0gICAgcmV0dXJuIGYoc3Ry
aW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZCAtIGhvc3ROYW1lU3Rh
cnQpLCBhcnJheSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IG1hcEhvc3ROYW1l
cyhOU1N0cmluZyAqc3RyaW5nLCBCT09MIGVuY29kZSkKLXsKLSAgICAvLyBHZW5lcmFsbHksIHdl
IHdhbnQgdG8gb3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIG9uZSBob3N0IG5h
bWUgdGhhdCBkb2VzIG5vdCBuZWVkIG1hcHBpbmcuCi0gICAgCi0gICAgaWYgKGVuY29kZSAmJiBb
c3RyaW5nIGNhbkJlQ29udmVydGVkVG9FbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddKQot
ICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgIAotICAgIC8vIE1ha2UgYSBsaXN0IG9mIHJhbmdl
cyB0aGF0IGFjdHVhbGx5IG5lZWQgbWFwcGluZy4KLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IGhvc3ROYW1lUmFuZ2VzOwotICAgIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYgPSBl
bmNvZGUgPyBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyA6IGNvbGxlY3RSYW5nZXNUaGF0
TmVlZERlY29kaW5nOwotICAgIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKHN0cmlu
ZywgZiwgaG9zdE5hbWVSYW5nZXMpOwotICAgIGlmICghaG9zdE5hbWVSYW5nZXMpCi0gICAgICAg
IHJldHVybiBzdHJpbmc7Ci0KLSAgICBpZiAoIVtob3N0TmFtZVJhbmdlcyBjb3VudF0pCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgLy8gRG8gdGhlIG1hcHBpbmcuCi0gICAgYXV0byBt
dXRhYmxlQ29weSA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwotICAgIHVuc2lnbmVk
IGkgPSBbaG9zdE5hbWVSYW5nZXMgY291bnRdOwotICAgIHdoaWxlIChpLS0pIHsKLSAgICAgICAg
TlNSYW5nZSBob3N0TmFtZVJhbmdlID0gW1tob3N0TmFtZVJhbmdlcyBvYmplY3RBdEluZGV4Omld
IHJhbmdlVmFsdWVdOwotICAgICAgICBOU1N0cmluZyAqbWFwcGVkSG9zdE5hbWUgPSBlbmNvZGUg
PyBlbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIGhvc3ROYW1lUmFuZ2UpIDogZGVjb2Rl
SG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKTsKLSAgICAgICAgW211dGFi
bGVDb3B5IHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpob3N0TmFtZVJhbmdlIHdpdGhTdHJpbmc6
bWFwcGVkSG9zdE5hbWVdOwotICAgIH0KLSAgICByZXR1cm4gbXV0YWJsZUNvcHk7Ci19Ci0KLXN0
YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKE5TU3Ry
aW5nICpzdHJpbmcpCi17Ci0gICAgYXV0byB0cmltbWVkID0gYWRvcHROUyhbc3RyaW5nIG11dGFi
bGVDb3B5XSk7Ci0gICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoX19icmlkZ2UgQ0ZNdXRhYmxl
U3RyaW5nUmVmKXRyaW1tZWQuZ2V0KCkpOwotICAgIHJldHVybiB0cmltbWVkOwotfQotCi1OU1VS
TCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICpVUkws
IENGVVJMQ29tcG9uZW50VHlwZSBjb21wb25lbnQpCi17Ci0gICAgaWYgKCFVUkwpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCi0gICAgQ0ZSYW5nZSBmcmFnUmcgPSBDRlVSTEdldEJ5dGVSYW5n
ZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIG51bGxwdHIp
OwotICAgIGlmIChmcmFnUmcubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgIHJldHVy
biBVUkw7Ci0KLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiB1cmxC
eXRlcyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBudW1CeXRlcyA9IENG
VVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCB1cmxC
eXRlcy5zaXplKCkpOwotICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBudW1CeXRl
cyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Ci0g
ICAgICAgIHVybEJ5dGVzLmdyb3cobnVtQnl0ZXMpOwotICAgICAgICBDRlVSTEdldEJ5dGVzKChf
X2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOwotICAgIH0K
LQotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVy
bEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCBudWxscHRyKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVh
dGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAx
LCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgIAotICAgIHJl
dHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOwotfQotCi1zdGF0
aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihOU1VSTCAqVVJMKQotewot
ICAgIHJldHVybiBVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoVVJM
LCBrQ0ZVUkxDb21wb25lbnRSZXNvdXJjZVNwZWNpZmllcik7Ci19Ci0KLU5TVVJMICpVUkxXaXRo
RGF0YShOU0RhdGEgKmRhdGEsIE5TVVJMICpiYXNlVVJMKQotewotICAgIGlmICghZGF0YSkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBOU1VSTCAqcmVzdWx0ID0gbmlsOwotICAgIHNp
emVfdCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOwotICAgIGlmIChsZW5ndGggPiAwKSB7Ci0gICAg
ICAgIC8vIHdvcmsgYXJvdW5kIDxyZGFyOi8vNDQ3MDc3MT46IENGVVJMQ3JlYXRlQWJzb2x1dGVV
UkxXaXRoQnl0ZXMoLi4sIFRSVUUpIGRvZXNuJ3QgcmVtb3ZlIG5vbi1wYXRoIGNvbXBvbmVudHMu
Ci0gICAgICAgIGJhc2VVUkwgPSBVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoYmFzZVVS
TCk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBVSW50OCAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxj
b25zdCBVSW50OCo+KFtkYXRhIGJ5dGVzXSk7Ci0gICAgICAgIAotICAgICAgICAvLyBDRlVSTENy
ZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzIHdvdWxkIGNvbXBsYWluIHRvIGNvbnNvbGUgaWYgd2Ug
cGFzc2VkIGEgcGF0aCB0byBpdC4KLSAgICAgICAgaWYgKGJ5dGVzWzBdID09ICcvJyAmJiAhYmFz
ZVVSTCkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICAvLyBOT1RF
OiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hlbiBjb21w
dXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAgICAgICAvLyAo
ZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3Qg
dG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgICAgIC8vIGNv
dWxkIGVpdGhlciBiZSBhIG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZmZXJlbnQg
ZW5jb2RpbmcsIGxpa2Ugc2hpZnQtamlzLCBzbyB3ZSBmYWxsIGJhY2sKLSAgICAgICAgLy8gb250
byB1c2luZyBJU08gTGF0aW4gMSBpbiB0aG9zZSBjYXNlcy4KLSAgICAgICAgcmVzdWx0ID0gQ0ZC
cmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBi
eXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBDRlVSTFJlZili
YXNlVVJMLCBZRVMpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXN1bHQg
PSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxw
dHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoX19icmlkZ2Ug
Q0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFtO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotc3RhdGlj
IE5TRGF0YSAqZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAg
ICBOU0RhdGEgKnVzZXJUeXBlZERhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXTsKLSAgICBBU1NFUlQodXNlclR5cGVkRGF0YSk7Ci0gICAgCi0gICAg
Y29uc3QgVUludDgqIGluQnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBVSW50OCAqPihbdXNlclR5
cGVkRGF0YSBieXRlc10pOwotICAgIGludCBpbkxlbmd0aCA9IFt1c2VyVHlwZWREYXRhIGxlbmd0
aF07Ci0gICAgaWYgKCFpbkxlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBj
aGFyKiBvdXRCeXRlcyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obWFsbG9jKGluTGVuZ3RoICogMykp
OyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0gICAgY2hhciog
cCA9IG91dEJ5dGVzOwotICAgIGludCBvdXRMZW5ndGggPSAwOwotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgaW5MZW5ndGg7IGkrKykgewotICAgICAgICBVSW50OCBjID0gaW5CeXRlc1tpXTsKLSAg
ICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKLSAgICAgICAgICAgICpwKysgPSAn
JSc7Ci0gICAgICAgICAgICAqcCsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0g
ICAgICAgICAgICAqcCsrID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAg
ICAgICBvdXRMZW5ndGggKz0gMzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpwKysg
PSBjOwotICAgICAgICAgICAgb3V0TGVuZ3RoKys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0g
ICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpvdXRCeXRlcyBsZW5ndGg6b3V0
TGVuZ3RoXTsgLy8gYWRvcHRzIG91dEJ5dGVzCi19Ci0KLU5TVVJMICpVUkxXaXRoVXNlclR5cGVk
U3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TVVJMICpuc1VSTCkKLXsKLSAgICBpZiAoIXN0cmlu
ZykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGF1dG8gbWFwcGVkU3RyaW5nID0gbWFwSG9z
dE5hbWVzKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCksIFlFUyk7Ci0g
ICAgaWYgKCFtYXBwZWRTdHJpbmcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAvLyBMZXQn
cyBjaGVjayB3aGV0aGVyIHRoZSBVUkwgaXMgYm9ndXMuCi0gICAgVVJMIHVybCB7IFVSTCB7IG5z
VVJMIH0sIG1hcHBlZFN0cmluZy5nZXQoKSB9OwotICAgIGlmICghdXJsLmNyZWF0ZUNGVVJMKCkp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjA1NwotICAgIC8vIFdlIHNob3VsZCBiZSBhYmxlIHRv
IHVzZSB1cmwuY3JlYXRlQ0ZVUkwgaW5zdGVhZCBvZiB1c2luZyBkaXJlY3RseSBDRlVSTCBwYXJz
aW5nIHJvdXRpbmVzLgotICAgIE5TRGF0YSAqZGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5n
KG1hcHBlZFN0cmluZy5nZXQoKSk7Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gW05T
VVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKLQotICAgIHJldHVybiBVUkxXaXRoRGF0YShkYXRhLCBu
c1VSTCk7Ci19Ci0KLU5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChOU1N0
cmluZyAqc3RyaW5nLCBOU1VSTCAqVVJMKQotewotICAgIGlmICghc3RyaW5nKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgTlNVUkwgKnJlc3VsdCA9IFVSTFdpdGhVc2VyVHlwZWRTdHJpbmco
c3RyaW5nLCBVUkwpOwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIE5TRGF0YSAqcmVzdWx0
RGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZyk7Ci0gICAgICAgIGlmICghcmVz
dWx0RGF0YSkKLSAgICAgICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwot
ICAgICAgICByZXN1bHQgPSBVUkxXaXRoRGF0YShyZXN1bHREYXRhLCBVUkwpOwotICAgIH0KLQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBCT09MIGhhc1F1ZXN0aW9uTWFya09ubHlR
dWVyeVN0cmluZyhOU1VSTCAqVVJMKQotewotICAgIENGUmFuZ2UgcmFuZ2VXaXRoU2VwYXJhdG9y
czsKLSAgICBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCBrQ0ZVUkxDb21wb25lbnRRdWVyeSwgJnJhbmdlV2l0aFNlcGFyYXRvcnMpOwotICAgIGlm
IChyYW5nZVdpdGhTZXBhcmF0b3JzLmxvY2F0aW9uICE9IGtDRk5vdEZvdW5kICYmIHJhbmdlV2l0
aFNlcGFyYXRvcnMubGVuZ3RoID09IDEpCi0gICAgICAgIHJldHVybiBZRVM7Ci0KLSAgICByZXR1
cm4gTk87Ci19Ci0KLU5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKlVSTCwg
Q0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudFR5cGUpCi17Ci0gICAgVmVjdG9yPFVJbnQ4LCBV
UkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYWxsQnl0ZXNCdWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9M
RU5HVEgpOwotICAgIENGSW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRn
ZSBDRlVSTFJlZilVUkwsIGFsbEJ5dGVzQnVmZmVyLmRhdGEoKSwgYWxsQnl0ZXNCdWZmZXIuc2l6
ZSgpKTsKLSAgICBpZiAoYnl0ZXNGaWxsZWQgPT0gLTEpIHsKLSAgICAgICAgQ0ZJbmRleCBieXRl
c1RvQWxsb2NhdGUgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxw
dHIsIDApOwotICAgICAgICBhbGxCeXRlc0J1ZmZlci5ncm93KGJ5dGVzVG9BbGxvY2F0ZSk7Ci0g
ICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJM
LCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgfQotICAgIAot
ICAgIGNvbnN0IENGVVJMQ29tcG9uZW50VHlwZSBjb21wbGV0ZVVSTCA9IChDRlVSTENvbXBvbmVu
dFR5cGUpLTE7Ci0gICAgQ0ZSYW5nZSByYW5nZTsKLSAgICBpZiAoY29tcG9uZW50VHlwZSAhPSBj
b21wbGV0ZVVSTCkgewotICAgICAgICByYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9u
ZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudFR5cGUsIG51bGxwdHIpOwotICAg
ICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1
cm4gbmlsOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJhbmdlLmxvY2F0aW9uID0gMDsKLSAgICAg
ICAgcmFuZ2UubGVuZ3RoID0gYnl0ZXNGaWxsZWQ7Ci0gICAgfQotICAgIAotICAgIE5TRGF0YSAq
Y29tcG9uZW50RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczphbGxCeXRlc0J1ZmZlci5kYXRh
KCkgKyByYW5nZS5sb2NhdGlvbiBsZW5ndGg6cmFuZ2UubGVuZ3RoXTsgCi0gICAgCi0gICAgY29u
c3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
ICo+KFtjb21wb25lbnREYXRhIGJ5dGVzXSk7Ci0gICAgTlNNdXRhYmxlRGF0YSAqcmVzdWx0RGF0
YSA9IFtOU011dGFibGVEYXRhIGRhdGFdOwotICAgIC8vIE5PVEU6IGFkZCBsZWFkaW5nICc/JyB0
byBxdWVyeSBzdHJpbmdzIG5vbi16ZXJvIGxlbmd0aCBxdWVyeSBzdHJpbmdzLgotICAgIC8vIE5P
VEU6IHJldGFpbiBxdWVzdGlvbi1tYXJrIG9ubHkgcXVlcnkgc3RyaW5ncy4KLSAgICBpZiAoY29t
cG9uZW50VHlwZSA9PSBrQ0ZVUkxDb21wb25lbnRRdWVyeSkgewotICAgICAgICBpZiAocmFuZ2Uu
bGVuZ3RoID4gMCB8fCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoVVJMKSkKLSAgICAg
ICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOiI/IiBsZW5ndGg6MV07ICAgIAotICAgIH0K
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHVu
c2lnbmVkIGNoYXIgYyA9IGJ5dGVzW2ldOwotICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPj0g
MHg3ZikgewotICAgICAgICAgICAgY2hhciBlc2NhcGVkWzNdOwotICAgICAgICAgICAgZXNjYXBl
ZFswXSA9ICclJzsKLSAgICAgICAgICAgIGVzY2FwZWRbMV0gPSB1cHBlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdChjKTsKLSAgICAgICAgICAgIGVzY2FwZWRbMl0gPSBsb3dlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdChjKTsKLSAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmVzY2FwZWQg
bGVuZ3RoOjNdOyAgICAKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNoYXIgYlsxXTsK
LSAgICAgICAgICAgIGJbMF0gPSBjOwotICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0
ZXM6YiBsZW5ndGg6MV07ICAgIAotICAgICAgICB9ICAgICAgICAgICAgICAgCi0gICAgfQotICAg
IAotICAgIHJldHVybiByZXN1bHREYXRhOwotfQotCi1zdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3Zp
bmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENGVVJMQ29tcG9u
ZW50VHlwZSBjb21wb25lbnQpCi17Ci0gICAgQ0ZSYW5nZSByYW5nZSA9IENGVVJMR2V0Qnl0ZVJh
bmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwgMCk7Ci0g
ICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQotICAgICAgICByZXR1cm4gVVJM
OwotICAgIAotICAgIC8vIFJlbW92ZSBvbmUgc3Vic2VxdWVudCBjaGFyYWN0ZXIuCi0gICAgcmFu
Z2UubGVuZ3RoKys7Ci0KLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RI
PiBidWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwotICAgIENGSW5kZXggbnVtQnl0ZXMg
PSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpOwotICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBudW1CeXRl
cyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Ci0g
ICAgICAgIGJ1ZmZlci5ncm93KG51bUJ5dGVzKTsKLSAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19i
cmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBudW1CeXRlcyk7Ci0gICAgfQotICAg
IFVJbnQ4KiB1cmxCeXRlcyA9IGJ1ZmZlci5kYXRhKCk7Ci0gICAgICAgIAotICAgIGlmIChudW1C
eXRlcyA8IHJhbmdlLmxvY2F0aW9uKQotICAgICAgICByZXR1cm4gVVJMOwotICAgIGlmIChudW1C
eXRlcyA8IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKQotICAgICAgICByYW5nZS5sZW5n
dGggPSBudW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uOwotICAgICAgICAKLSAgICBtZW1tb3ZlKHVy
bEJ5dGVzICsgcmFuZ2UubG9jYXRpb24sIHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24gKyByYW5n
ZS5sZW5ndGgsIG51bUJ5dGVzIC0gcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpOwotICAg
IAotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVy
bEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBu
dWxscHRyKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVX
aXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZT
dHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgCi0gICAg
cmV0dXJuIHJlc3VsdCA/IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7Ci19Ci0KLU5T
VVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNVUkwgKlVSTCkKLXsKLSAgICByZXR1cm4gVVJM
QnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoVVJMLCBrQ0ZVUkxDb21w
b25lbnRVc2VySW5mbyk7Ci19Ci0KIE5TVVJMICpVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKE5TVVJM
ICpVUkwpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0TlMo
W1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOlVSTF0pOwpAQCAtMTA0OSwyMDMgKzU3
LDQgQEAgTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoTlNVUkwgKlVSTCkKICAgICByZXR1
cm4gW1tuZXdVUkwgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLU5TRGF0YSAqb3JpZ2luYWxV
UkxEYXRhKE5TVVJMICpVUkwpCi17Ci0gICAgVUludDggKmJ1ZmZlciA9IChVSW50OCAqKW1hbGxv
YyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBieXRlc0ZpbGxlZCA9IENG
VVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLCBVUkxfQllURVNfQlVG
RkVSX0xFTkdUSCk7Ci0gICAgaWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7Ci0gICAgICAgIENGSW5k
ZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJM
LCBudWxscHRyLCAwKTsKLSAgICAgICAgYnVmZmVyID0gKFVJbnQ4ICopcmVhbGxvYyhidWZmZXIs
IGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAg
IEFTU0VSVChieXRlc0ZpbGxlZCA9PSBieXRlc1RvQWxsb2NhdGUpOwotICAgIH0KLSAgICAKLSAg
ICAvLyBidWZmZXIgaXMgYWRvcHRlZCBieSB0aGUgTlNEYXRhCi0gICAgTlNEYXRhICpkYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5OmJ1ZmZlciBsZW5ndGg6Ynl0ZXNGaWxsZWQgZnJl
ZVdoZW5Eb25lOllFU107Ci0gICAgCi0gICAgTlNVUkwgKmJhc2VVUkwgPSAoX19icmlkZ2UgTlNV
UkwgKilDRlVSTEdldEJhc2VVUkwoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCk7Ci0gICAgaWYgKGJh
c2VVUkwpCi0gICAgICAgIHJldHVybiBvcmlnaW5hbFVSTERhdGEoVVJMV2l0aERhdGEoZGF0YSwg
YmFzZVVSTCkpOwotICAgIHJldHVybiBkYXRhOwotfQotCi1zdGF0aWMgQ0ZTdHJpbmdSZWYgY3Jl
YXRlU3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKENGU3RyaW5nUmVmIHN0cmluZykK
LXsKLSAgICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7Ci0gICAg
VmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gc291cmNlQnVmZmVyKGxlbmd0
aCk7Ci0gICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVu
Z3RoKSwgc291cmNlQnVmZmVyLmRhdGEoKSk7Ci0gICAgCi0gICAgVmVjdG9yPFVDaGFyLCBVUkxf
QllURVNfQlVGRkVSX0xFTkdUSD4gb3V0QnVmZmVyOwotICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8
VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgQ0ZJbmRleCBpID0gMDsKLSAgICB3aGls
ZSAoaSA8IGxlbmd0aCkgewotICAgICAgICBVQ2hhcjMyIGM7Ci0gICAgICAgIFUxNl9ORVhUKHNv
dXJjZUJ1ZmZlciwgaSwgbGVuZ3RoLCBjKQotICAgICAgICAKLSAgICAgICAgaWYgKGlzTG9va2Fs
aWtlQ2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LCBjKSkgewotICAgICAgICAgICAgdWludDhf
dCB1dGY4QnVmZmVyWzRdOwotICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOwotICAgICAg
ICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOwotICAgICAgICAgICAgVThfQVBQRU5EKHV0ZjhC
dWZmZXIsIG9mZnNldCwgNCwgYywgZmFpbHVyZSkKLSAgICAgICAgICAgIEFTU0VSVCghZmFpbHVy
ZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8IG9m
ZnNldDsgKytqKSB7Ci0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCgnJScpOwotICAg
ICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQo
dXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQobG93ZXJO
aWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgVUNoYXIgdXRmMTZCdWZmZXJbMl07Ci0gICAgICAg
ICAgICBDRkluZGV4IG9mZnNldCA9IDA7Ci0gICAgICAgICAgICBVQm9vbCBmYWlsdXJlID0gZmFs
c2U7Ci0gICAgICAgICAgICBVMTZfQVBQRU5EKHV0ZjE2QnVmZmVyLCBvZmZzZXQsIDIsIGMsIGZh
aWx1cmUpCi0gICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOwotICAgICAgICAgICAgZm9yIChD
RkluZGV4IGogPSAwOyBqIDwgb2Zmc2V0OyArK2opCi0gICAgICAgICAgICAgICAgb3V0QnVmZmVy
LmFwcGVuZCh1dGYxNkJ1ZmZlcltqXSk7Ci0gICAgICAgIH0KLSAgICAgICAgcHJldmlvdXNDb2Rl
UG9pbnQgPSBjOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycyhudWxscHRyLCBvdXRCdWZmZXIuZGF0YSgpLCBvdXRCdWZmZXIuc2l6ZSgpKTsKLX0K
LQotTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCi17Ci0gICAgTlNEYXRh
ICpkYXRhID0gb3JpZ2luYWxVUkxEYXRhKFVSTCk7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAq
YmVmb3JlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KFtkYXRhIGJ5dGVzXSk7
Ci0gICAgaW50IGxlbmd0aCA9IFtkYXRhIGxlbmd0aF07Ci0gICAgCi0gICAgYm9vbCBtYXlOZWVk
SG9zdE5hbWVEZWNvZGluZyA9IGZhbHNlOwotICAgIAotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KnAgPSBiZWZvcmU7Ci0gICAgaW50IGJ1ZmZlckxlbmd0aCA9IChsZW5ndGggKiAzKSArIDE7Ci0g
ICAgVmVjdG9yPGNoYXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBhZnRlcihidWZmZXJMZW5n
dGgpOyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0gICAgY2hh
ciAqcSA9IGFmdGVyLmRhdGEoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07Ci0gICAgICAgIC8vIHVuZXNjYXBl
IGVzY2FwZSBzZXF1ZW5jZXMgdGhhdCBpbmRpY2F0ZSBieXRlcyBncmVhdGVyIHRoYW4gMHg3Zgot
ICAgICAgICBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdp
dChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAy
XSkpIHsKLSAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAxXSwgcFtp
ICsgMl0pOwotICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7Ci0gICAgICAgICAgICAgICAgLy8g
dW5lc2NhcGUKLSAgICAgICAgICAgICAgICAqcSsrID0gdTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90IHVuZXNjYXBlCi0gICAgICAgICAgICAgICAgKnEr
KyA9IHBbaV07Ci0gICAgICAgICAgICAgICAgKnErKyA9IHBbaSArIDFdOwotICAgICAgICAgICAg
ICAgICpxKysgPSBwW2kgKyAyXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkgKz0gMjsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpxKysgPSBjOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICAvLyBDaGVjayBmb3IgInhuLS0iIGluIGFuIGVmZmljaWVudCwgbm9uLWNhc2Ut
c2Vuc2l0aXZlLCB3YXkuCi0gICAgICAgICAgICBpZiAoYyA9PSAnLScgJiYgaSA+PSAzICYmICFt
YXlOZWVkSG9zdE5hbWVEZWNvZGluZyAmJiAocVstNF0gfCAweDIwKSA9PSAneCcgJiYgKHFbLTNd
IHwgMHgyMCkgPT0gJ24nICYmIHFbLTJdID09ICctJykKLSAgICAgICAgICAgICAgICBtYXlOZWVk
SG9zdE5hbWVEZWNvZGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgKnEgPSAnXDAn
OwotICAgIAotICAgIC8vIENoZWNrIHN0cmluZyB0byBzZWUgaWYgaXQgY2FuIGJlIGNvbnZlcnRl
ZCB0byBkaXNwbGF5IHVzaW5nIFVURi04ICAKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHJlc3Vs
dCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOwotICAgIGlm
ICghcmVzdWx0KSB7Ci0gICAgICAgIC8vIENvdWxkIG5vdCBjb252ZXJ0IHRvIFVURi04LgotICAg
ICAgICAvLyBDb252ZXJ0IGNoYXJhY3RlcnMgZ3JlYXRlciB0aGFuIDB4N2YgdG8gZXNjYXBlIHNl
cXVlbmNlcy4KLSAgICAgICAgLy8gU2hpZnQgY3VycmVudCBzdHJpbmcgdG8gdGhlIGVuZCBvZiB0
aGUgYnVmZmVyCi0gICAgICAgIC8vIHRoZW4gd2Ugd2lsbCBjb3B5IGJhY2sgYnl0ZXMgdG8gdGhl
IHN0YXJ0IG9mIHRoZSBidWZmZXIgCi0gICAgICAgIC8vIGFzIHdlIGNvbnZlcnQuCi0gICAgICAg
IGludCBhZnRlcmxlbmd0aCA9IHEgLSBhZnRlci5kYXRhKCk7Ci0gICAgICAgIGNoYXIgKnAgPSBh
ZnRlci5kYXRhKCkgKyBidWZmZXJMZW5ndGggLSBhZnRlcmxlbmd0aCAtIDE7Ci0gICAgICAgIG1l
bW1vdmUocCwgYWZ0ZXIuZGF0YSgpLCBhZnRlcmxlbmd0aCArIDEpOyAvLyBjb3BpZXMgdHJhaWxp
bmcgJ1wwJwotICAgICAgICBjaGFyICpxID0gYWZ0ZXIuZGF0YSgpOwotICAgICAgICB3aGlsZSAo
KnApIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpwOwotICAgICAgICAgICAgaWYg
KGMgPiAweDdmKSB7Ci0gICAgICAgICAgICAgICAgKnErKyA9ICclJzsKLSAgICAgICAgICAgICAg
ICAqcSsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICAgICAg
KnErKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgKnErKyA9ICpwOwotICAgICAgICAgICAgcCsrOwotICAgICAgICB9
Ci0gICAgICAgICpxID0gJ1wwJzsKLSAgICAgICAgcmVzdWx0ID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhVVEY4U3RyaW5nOmFmdGVyLmRhdGEoKV07Ci0gICAgfQotICAgIAotICAgIGlmIChtYXlOZWVk
SG9zdE5hbWVEZWNvZGluZykgewotICAgICAgICAvLyBGSVhNRTogSXMgaXQgZ29vZCB0byBpZ25v
cmUgdGhlIGZhaWx1cmUgb2YgbWFwSG9zdE5hbWVzIGFuZCBrZWVwIHJlc3VsdCBpbnRhY3Q/Ci0g
ICAgICAgIGF1dG8gbWFwcGVkUmVzdWx0ID0gbWFwSG9zdE5hbWVzKHJlc3VsdC5nZXQoKSwgTk8p
OwotICAgICAgICBpZiAobWFwcGVkUmVzdWx0KQotICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVk
UmVzdWx0OwotICAgIH0KLQotICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdX
aXRoQ2Fub25pY2FsTWFwcGluZ107Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0
ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
cmVzdWx0LmdldCgpKSk7Ci19Ci0KLUJPT0wgaXNVc2VyVmlzaWJsZVVSTChOU1N0cmluZyAqc3Ry
aW5nKQotewotICAgIEJPT0wgdmFsaWQgPSBZRVM7Ci0gICAgLy8gZ2V0IGJ1ZmZlcgotICAgIAot
ICAgIGNoYXIgc3RhdGljX2J1ZmZlclsxMDI0XTsKLSAgICBjb25zdCBjaGFyICpwOwotICAgIEJP
T0wgc3VjY2VzcyA9IENGU3RyaW5nR2V0Q1N0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc3Ry
aW5nLCBzdGF0aWNfYnVmZmVyLCAxMDIzLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpOwotICAgIHAg
PSBzdWNjZXNzID8gc3RhdGljX2J1ZmZlciA6IFtzdHJpbmcgVVRGOFN0cmluZ107Ci0gICAgCi0g
ICAgaW50IGxlbmd0aCA9IHN0cmxlbihwKTsKLSAgICAKLSAgICAvLyBjaGVjayBmb3IgY2hhcmFj
dGVycyA8PSAweDIwIG9yID49MHg3ZiwgJS1lc2NhcGUgc2VxdWVuY2VzIG9mICU3ZiwgYW5kIHhu
LS0sIHRoZXNlCi0gICAgLy8gYXJlIHRoZSB0aGluZ3MgdGhhdCB3aWxsIGxlYWQgX3dlYl91c2Vy
VmlzaWJsZVN0cmluZyB0byBhY3R1YWxseSBjaGFuZ2UgdGhpbmdzLgotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcFtpXTsK
LSAgICAgICAgLy8gZXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVycywgc3BhY2UsIGFuZCBkZWxldGUK
LSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID09IDB4N2YpIHsKLSAgICAgICAgICAgIHZhbGlk
ID0gTk87Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChjID09ICclJyAm
JiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDFdKSkgJiYgaSArIDIg
PCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDJdKSkgewotICAgICAgICAgICAgYXV0
byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7Ci0gICAgICAgICAgICBp
ZiAodSA+IDB4N2YpIHsKLSAgICAgICAgICAgICAgICB2YWxpZCA9IE5POwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBhbiBlZmZpY2llbnQs
IG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgotICAgICAgICAgICAgaWYgKGMgPT0gJy0nICYmIGkg
Pj0gMyAmJiAocFtpIC0gM10gfCAweDIwKSA9PSAneCcgJiYgKHBbaSAtIDJdIHwgMHgyMCkgPT0g
J24nICYmIHBbaSAtIDFdID09ICctJykgewotICAgICAgICAgICAgICAgIHZhbGlkID0gTk87Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIHZhbGlkOwotfQotCi1OU1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNT
dHJpbmcgKnN0cmluZykKLXsKLSAgICBOU1JhbmdlIGNvbG9uID0gW3N0cmluZyByYW5nZU9mU3Ry
aW5nOkAiOiJdOwotICAgIGlmIChjb2xvbi5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIGNvbG9u
LmxvY2F0aW9uID4gMCkgewotICAgICAgICBOU1JhbmdlIHNjaGVtZSA9IHswLCBjb2xvbi5sb2Nh
dGlvbn07Ci0gICAgICAgIC8qCi0gICAgICAgICBUaGlzIHN0dWZmIGlzIHZlcnkgZXhwZW5zaXZl
LiAgMTAtMTUgbXNlYyBvbiBhIDJ4MS4yR0h6LiAgSWYgbm90IGNhY2hlZCBpdCBzd2FtcHMKLSAg
ICAgICAgIGV2ZXJ5dGhpbmcgZWxzZSB3aGVuIGFkZGluZyBpdGVtcyB0byB0aGUgYXV0b2NvbXBs
ZXRlIERCLiAgTWFrZXMgbWUgd29uZGVyIGlmIHdlCi0gICAgICAgICBldmVuIG5lZWQgdG8gZW5m
b3JjZSB0aGUgY2hhcmFjdGVyIHNldCBoZXJlLgotICAgICAgICAgKi8KLSAgICAgICAgTlNTdHJp
bmcgKmFjY2VwdGFibGVDaGFyYWN0ZXJzID0gQCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsuLSI7Ci0gICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBJbnZlcnNlU2NoZW1lQ2hh
cmFjdGVyU2V0KFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0
cmluZzphY2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52ZXJ0ZWRTZXRdKTsKLSAgICAgICAgTlNSYW5n
ZSBpbGxlZ2FscyA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6SW52ZXJzZVNjaGVt
ZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsKLSAgICAg
ICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1
cm4gc2NoZW1lOwotICAgIH0KLSAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7
Ci19Ci0KLUJPT0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAg
ICAvLyBUcmltIHdoaXRlc3BhY2UgYmVjYXVzZSBfd2ViX1VSTFdpdGhTdHJpbmcgYWxsb3dzIHdo
aXRlc3BhY2UuCi0gICAgcmV0dXJuIHJhbmdlT2ZVUkxTY2hlbWUoc3RyaW5nQnlUcmltbWluZ1do
aXRlc3BhY2Uoc3RyaW5nKS5nZXQoKSkubG9jYXRpb24gIT0gTlNOb3RGb3VuZDsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgKaW5kZXgg
Yzk5Y2IzODM3OGMxOWFiODJjZTkxZThiZjAyMzdhYjc3Mjg3OTExYS4uNjMzMTc4ZTRlZWFiNWVh
MzE5MzYyMTAxMGU3NThjYjM0MjBjODE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlv
bi5oCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlICJSVENCdW5kbGVQb2xpY3kuaCIKICNp
bmNsdWRlICJSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaAppbmRleCBi
NzAyNjc0ODI0NjlkNTg3NWVmYjVmNzQ5NGQxYmY3YWM0MmM4OWUxLi4zODBkMzczMWIwYTE1M2Fi
YjljMjI3MGJmZWU3NjgwZjAzYjNiOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVz
LmgKQEAgLTIzLDYgKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI3ByYWdtYSBvbmNl
CisKICNpbmNsdWRlIDxDb3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaAppbmRleCA2Mjhm
OTM5YTMwNWNjZjc0NjY5ZTZiY2JhYmMwZjU5MTc5NTYzNzg2Li4wNDFjMjlhMzEyZjA5ODE3Zjhl
Y2YxNzM2MTYxM2NhZDJmZDZmNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JQYXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUGFydC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCmluZGV4
IDlmZjYwMGNhYzU5M2QzNTk0NWMxMGVhMTE0NTM3NGRiYzk3MjgwMTMuLjQ3NGEwZjJmOGJiYTFj
YjFmOTYzY2NjOTk0NGYyZTc5ZGFiYzFkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFydDsKIGNs
YXNzIEJsb2JSZWdpc3RyeTsKLWNsYXNzIFVSTDsKIAogV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lz
dHJ5JiBibG9iUmVnaXN0cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCAyNGZlY2M5NWE0MTk2MGIxM2RkODc0ODE1
MTBlYzI3OGE4YjFlZjI0Li5jNjkxZTViNjcwMDdlZGEyZTJmZjhiYjYyMjZhMDBhMzAwNTE0ZjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaApAQCAtMzMsMTQgKzMzLDEzIEBACiAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2lu
Y2x1ZGUgIkJsb2JSZWdpc3RyeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xh
c3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5j
cHAKaW5kZXggNjE4MmJlNTZjNDI2MDVkNTBlYTI5ZDJkN2JlMTAyMTdkYmY2MjEwOS4uYzk0ZTM5
NDk0YjhlMzI2ZGI0YTEyYTI3MjAxYTQ2MjM4ZGUxOGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMzks
NyArMzksNyBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQ
YXJzZXJzLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFJhbmdlLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDI0OWEwMDM2MWJlZmFjM2M4
YWIzMzlhZDg3N2U4NzFmNGJmZTU5MzIuLjMyYTZmNTdjMGEyMTk2MDQ3Yzc0MzliMDkzOWRmZTJj
ZDBjMzY5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAgLTI3LDggKzI3LDgg
QEAKIAogI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5m
by5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAppbmRleCBl
NWYzMDRiYmNlNWQwMTk2OTkxZjVjZDljZTJlMGYyMjEyY2FlNmEwLi4yYzU0MzQzODVmMTg1ZTgy
ZTI5MTYxYjhmYzQ3ZmU5OTAxMzk0N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcApAQCAtMjcsNyArMjcsNyBAQAog
I2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNp
ZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCmluZGV4IDVj
YWNjMDU2MzFjMTY4MGQxZDk0MjdkNzc4OTUyOWYzYjE4ZDMwN2QuLjdkZGM0ZmU1NWJiMWJlMmY2
OTIwMDA4MGMzNGYzNGJhYmQ1MGVkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQ3JlZGVudGlhbFN0b3JhZ2VfaAotI2RlZmluZSBD
cmVkZW50aWFsU3RvcmFnZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWwu
aCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VIYXNoLmgiCkBAIC0zNSw3ICszNCw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNl
OwogCiBjbGFzcyBDcmVkZW50aWFsU3RvcmFnZSB7CkBAIC03MCw1ICs2OCwzIEBAIGNsYXNzIENy
ZWRlbnRpYWxTdG9yYWdlIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIENyZWRlbnRpYWxTdG9yYWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggM2Y0ZmIxYWQ4ODRhNzgyYmRjNjE0ZmQz
OTRmZTc3NzFhYmE1NGE0Zi4uNDYwNWJlYTBhN2ExNmQxM2E1ZDJjMGU5MDZmYmFlOTBjZGQ0NjIy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVj
b2Rlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggNzI1ODI0NzEyOWNiYmFhMmM4
NWZjM2I0OWNmZGI2NjgwZDJiZDc1ZC4uOTc0ZDljZWJlYjE5NTE4OGI1Yzg0NjkyYWEwZjViMjZi
YTk5MGNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuaApAQCAtMjMsOSArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgRGF0YVVSTERlY29kZXJfaAotI2RlZmluZSBEYXRhVVJM
RGVjb2Rlcl9oCi0KKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0zOCw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogbmFtZXNwYWNlIERh
dGFVUkxEZWNvZGVyIHsKIApAQCAtNjEsNSArNTgsMyBAQCB2b2lkIGRlY29kZShjb25zdCBVUkwm
LCBjb25zdCBTY2hlZHVsZUNvbnRleHQmLCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYmKTsKIH0K
IAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAppbmRleCBlOGM3ZDk4YTA3NWI2NmRkMDU0Mjg3OWI1OTE2NGMwZDQ2ZjZhNzI2Li5iYmFhZGUx
ODViNzlmNTRmOGMwNzA3NTM5NjMyMTY2MzQ2ZWMyZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0yMCw5ICsyMCw5IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaAppbmRleCAxMDNkOWE5NmJiZGM2MTUyYTYxYjdkMTYx
ZmU0MDkwYmE1YmMzYTA1Li41Mjc4OWI1YmRkOGRhYjM5N2IzNjlhYWMxNThjMjY3NzIxODc3ZGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oCkBA
IC0yMywxNSArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIFByb3h5U2VydmVyX2gKLSNkZWZpbmUgUHJveHlTZXJ2ZXJfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTmV0
d29ya2luZ0NvbnRleHQ7CiAKIC8vIFJlcHJlc2VudHMgYSBzaW5nbGUgcHJveHkgc2VydmVyLgpA
QCAtNzUsNSArNzMsMyBAQCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5
U2VydmVyc0ZvclVSTChjb25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+Jik7CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBQcm94eVNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggNzYzMzE4YzJlMTE0NzM2
MjM2ZWMzZDEzNmM3YzRhODc4ZGRjYjJmMy4uZTBiZjA0YjhhYzhmMDBiMzkzOTc5MWViZmQwMDg3
ZWNiOTBkYjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VFcnJvckJhc2UuaApAQCAtMjYsNyArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCA0OTE0MzRkOGZh
NTNmMTkwZTU0NTNlYjlmMzk0ZTQwN2RkNmMxM2JmLi40NmFmNTY3MTNkODk4YzNhN2ZiZDc5OGFh
NTBmZWFhNjU0Nzg0OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIENv
bXBsZXRpb25ICiAgICAgaWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAgYXV0byB1
cmwgPSByZXNwb25zZS51cmwoKTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9y
dCA9IHVybC5wb3J0KCk7Ci0gICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKKyAgICAgICAgaWYgKHBvcnQg
JiYgIVdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3Rv
Y29sKCkpKSB7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIFN0cmluZyBtZXNz
YWdlID0gIkNhbmNlbGxlZCBsb2FkIGZyb20gJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIGl0IGlzIHVzaW5nIEhUVFAvMC45LiI7CiAgICAgICAg
ICAgICBkLT5tX2NsaWVudC0+ZGlkRmFpbCh0aGlzLCB7IFN0cmluZygpLCAwLCB1cmwsIG1lc3Nh
Z2UgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKaW5kZXggMDFhODZlMzU5YjFmZDBmMmVhZjQ1NjhhYTcyODY0MGMzMmI3NmY3OC4uNjVm
MzBmOTVkYjYwNTRhNWQwMWIyOWYyNDY4YjU5ZTk3MzcyNGY3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtNzcsNyArNzcsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIENyZWRlbnRpYWw7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIFVSTDsKIGNsYXNzIE5ldHdvcmtp
bmdDb250ZXh0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuaAppbmRleCBkNmVkYjZkNjE4YWRjM2JjY2UyM2YwMWZiOTdmZjEzOTk3YTZmYWMy
Li4zZTEwYmVmNDkxMDdkMTM3ODE3Y2I5OTMyOTg1MjE3NWJiOGQ0MGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
CkBAIC00NCw3ICs0NCw2IEBAIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3Jl
ZGVudGlhbDsKLWNsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291
cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGZmNTgz
NjE3NGVhYjk1OTUyOGEyMDdiZmJhYWI2MDAzOWQ5YjUwMzMuLmZiNDYzNjM1MjJhN2ZlYzI1Mjdk
Y2M0ZDEyNzVlZGEzZjc2MzMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBA
IFJlc291cmNlUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByCiAgICAgICAgIHJlcXVlc3QubV9odHRwSGVhZGVyRmll
bGRzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAgICAgfQogCi0gICAg
aWYgKHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3Qu
dXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJlcXVlc3Qu
aHR0cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0ICYmICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikg
JiYgV1RGOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQogICAg
ICAgICByZXF1ZXN0LmNsZWFySFRUUFJlZmVycmVyKCk7CiAKICAgICBpZiAoIXByb3RvY29sSG9z
dEFuZFBvcnRBcmVFcXVhbChyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmgKaW5kZXggM2FmNDM1MjY5ZmUxZmNlMDM3Nzg1ZmQyNWExZTBjYmJmZDc5MGYzNS4u
ZTdjMWM0MDljM2I5YjY0ZWE3YjRlMzc4NzgzNDM5NTQyYTRhZDBjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkhUVFBIZWFk
ZXJNYXAuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAppbmRleCBkOGZjYzE0MzFiNTBiYzdhYjY3ZjFkMTk2
OGI5MWNlNzBlYTE2MWVmLi4wZTU1YzFjZWZmMmFlN2MzNzFmNjBlNmVjMzRhODE1Yjc4YTgyMTNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5oCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRlck1h
cC5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlBhcnNlZENv
bnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggYjU5YmRiYTBiNDEyOTVjZWUzODUzZjZmZWEy
MmFiYzI0ZWNkYmYyNS4uNmQxZmQxYTgzMDk5Mzk4OTRiNDllYTg0Yjc3YTU5ZjExN2Q4YTAyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZS5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAK
aW5kZXggYmEzNDBmZjg4ZDYyMDNiNzEyNTIwOWE4NTAyM2QzNDlkZjM1ZjJkZi4uNGY4ZTQzMjJh
YzU3MWQ3NzcxM2QxMDE0Mzc0MDQ1ZmY2ZGNjZmNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAK
QEAgLTMwLDExICszMCwxMSBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShXSU4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGZhMDRjOGI3MDk5Y2JhZWI2ZTVmNGMx
NWIxNzQ1MjY3NDA5YjNhZDcuLmY4ZWJiMDZjY2QwNTZlMzUwZWQwMGYwYjkyNWZkYWFjZmZkZTRk
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC00MiwxMiArNDIsMTIg
QEAKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgogI2luY2x1ZGUg
IkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxwYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYv
U29mdExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL2NmL1R5
cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQu
Y3BwCmluZGV4IGI1YzZhOGQ2YzMyZmZkYmQ5MGIyMTAwNDJiOTQ3MTQ3NDNhMGM1NGIuLjJhYjM0
OTcyMTZhYzVhYTg3NmUwMDRlN2E3ZDU2YThlNDhkZWM0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApAQCAt
MjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVy
LmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggYmEzNjA1YmJkMWQ0NmY5N2RlMjgzOGYzOTgz
Nzg5MmY5OTUyMmI2OC4uZDQxNmY2MTUxNGVmMWZmMDIzMTFkNWMyZDEwMzVlZmQ1NDFlOTQzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvckNGLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZFcnJv
ci5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KICNpbmNsdWRlIDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA4OTQ4NWEz
MWY1NDQ1YTVjODllOTNiODEzYzkxMDgxYTc0YTQ5MTljLi4wZWFkZTE1OTljZTU4YmI2NDBmMmQx
MjEzYWM0MzYwMjE0NzNhODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0KQEAgLTMxLDExICszMSwxMSBAQAogI2ltcG9ydCAiQ29va2llU3RvcmFnZU9ic2VydmVyLmgi
CiAjaW1wb3J0ICJDb29raWVzU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlNhbWVTaXRlSW5mby5oIgot
I2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5o
PgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogQGludGVyZmFjZSBOU1VSTCAo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJDdXJsLmgKaW5kZXggZTBiMjFjYzEzNzc0OGE4ZTE2Mjc0ODMyNjA3YzE4ZDdhNDgxNjBmZS4u
Yjk2MTRiZmYwMDc5ODRjYTVmMjIxOGUwYjY1OWFhZjJmNGEyZDYwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oCkBAIC0y
NSw3ICsyNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3Mg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogCiBzdHJ1Y3QgQ29va2llOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmxEYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERh
dGFiYXNlLmNwcAppbmRleCA1ZTg0NTRhYTU0YWY2ZjcxYWNmYWU3ZTkzNjI0MDdjMjE0MTc1MTg1
Li5jMmQwNTFlMzc5M2Y1YThlODY4YTRlNzlkZmUxNjQ2NTY3NTE3YWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
Q3VybERhdGFiYXNlLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFByb3h5LmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuY3BwCmluZGV4IDY1MDAzOGQzOTQxMmM3Y2EwMzg0M2Q4YWM5M2YxNDY2YTRlODdjODIuLjM5
ZTc3YmY3ZDQ2MGZmNzZhYTc3ZmNhNjFjYjI2MTNiMWE3NTU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMjks
OSArMjksOSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5j
bHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZVV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVVdGlsLmgKaW5kZXggYTg5YzlhYjdiOTYyNjI0NDgzMjYyNTI1NDcwZjFhNGRj
YzlmZjM3Mi4uNjE4ZGY3Yjg4ZTQyOWVmNzY0ZTEyYjI2N2M3NGFkZmExYWU5ZWM4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oCkBA
IC0yNCw4ICsyNCw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXggMzczMjYw
MTc5Yjg4NmYxZWVkYTA2ODEzOWYwMDY4NGExNGFmMDc3NS4uZjhkNjgxMDgwMWVmYmFkZDlkNDEw
MDIyOTRhZGEzOTlhMDk2NTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaW5jbHVk
ZSAiQ3VybFByb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlICJDdXJsU1NMSGFuZGxlLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGlu
Z3MuaAppbmRleCBhNjFjNmVjMjI2MmQyZTM4Nzk5MjcyNGI2ZGNjNWY2OTRkMTE2NjQ5Li5mMzVm
NDFiNTFmNTg5NmY2ZjczMzY2MDU1MjQ5YzMwYmEzOTViM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaApA
QCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2Rl
ZmluZSBrQ1VSTEFVVEhfRElHRVNUX0lFICAgICgoKHVuc2lnbmVkIGxvbmcpIDEpIDw8IDQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc3Bv
bnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc3BvbnNl
LmgKaW5kZXggMzczNjYxYmQzNWFmY2U2NjdhZTFiYjM1NzdhNmMwOWRjMTQ0ZmE0ZC4uZTYxMWZm
YzRmYjE1NDFmNGNmZDEzMjg3MmNiYzFkNWRjM2Q5M2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2UuaApAQCAtMjUsNyArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q3VybC5jcHAKaW5kZXggZTExMGFkMTY0OTEwNWVjNmIwMDNiMTk5MDM2YWQ4YThlNzA0NzcxNC4u
MWJkMjFlY2VhYmZmN2U3OTIwMGFmODJjY2QwOWMyYTg4NzE4OWUwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJv
eHlTZXJ2ZXJDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Q
cm94eVNlcnZlckN1cmwuY3BwCmluZGV4IGNkYTQ0OTkzZjYzNGIyNDQ0YTYxZGNhZjk3NDAxZTlm
MjYwMmYwYjAuLjE4ZjUwOGI2ZTQ4NjgyYThmYzcwMGQxZjY3ZDdhOTZlMDkzZWQ0YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNl
cnZlckN1cmwuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBVU0UoQ1VSTCkKIAotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCBjZmM0OGZmYTI1ZmQ4
MGZkYjhkNzFmYTdjMzg5M2QzZTg2YTQ1NzdhLi4wNzEwY2FlZTI1MDNjMWYzZjM4MDhlMjA0Mzcw
NTg4MjdlZDM2ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAg
LTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU29ja2V0U3Ry
ZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggMmVjZjQyOGMwYWI1
MTRhY2UwYzAxYzVmNGQxNjI5OGNlYTIxNjA3My4uZGNiZGUzNDhlYjQ3N2MyYTFiNWFiZTRhYjU5
MzU5Mzk4ZTJhYzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogCi0jaW1wb3J0ICJVUkwu
aCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9y
dCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIEBpbnRlcmZhY2UgTlNFcnJvciAoV2ViRXh0cmFz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlx
dWVQdHJTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1
ZVB0clNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZkYzYzNzQxMmUxOGJh
NzI1Zjc0ODNlYzMyNmUxMjQ5YTg4YTE2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1Vu
aXF1ZVB0clNvdXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBHVW5pcXVlUHRy
U291cF9oCi0jZGVmaW5lIEdVbmlxdWVQdHJTb3VwX2gKLQotI2luY2x1ZGUgPGxpYnNvdXAvc291
cC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7
Ci0KLVdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2ZyZWUpCi1XVEZf
REVGSU5FX0dQVFJfREVMRVRFUihTb3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVlKQotV1RGX0RF
RklORV9HUFRSX0RFTEVURVIoU291cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3NhZ2VfaGVhZGVy
c19mcmVlKQotV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cEJ1ZmZlciwgc291cF9idWZmZXJf
ZnJlZSkKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdl
U2Vzc2lvblNvdXAuY3BwCmluZGV4IGU0ODNhYTYzMTZjZTZjNWQ2YzhmM2U2NTVkNTVkZDFlZWIw
NDYzY2YuLjAzZDE1NmU1ZWQ2ZThjMWY1OTA5NTZhOGJkODQwZThhM2QxMGU0N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1
ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmgi
Ci0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291
cC5oPgpAQCAtNDEsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKICNpZiBVU0UoTElC
U0VDUkVUKQogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKaW5kZXggNGMy
NzdjM2QyMTY3YWNjNTQ0MTFmOTYwM2UzNTE5MDAxNzMzYjRhZC4uOWM5OWY4OTVkYjRkYjdjODEx
Y2E1MGY1MTFkM2Q0ZmIyNWM3MTZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKQEAgLTI4LDcgKzI4LDcg
QEAKIAogI2lmIFVTRShTT1VQKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXgg
NjM3MzRjNjc0YzUyZWU5NWRjNmM5ZTQyMWM0NjYwZjQxODQwMGJhYS4uZmI3MTgxM2EzNzU5MDlj
MGE3YTJmNTQ1NzRhODExYWVkZGIzZmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTMz
LDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiSFRU
UFBhcnNlcnMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgpAQCAtNTgsNiArNTcsNyBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVu
TG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0LmgKaW5kZXggMzhlM2E4ZWU2OTY4MTFmZDViYTc4YjRiMzBjMmMwMWEzOWZmNWI1Zi4u
NzQ3MmFkMjM4YjMzNGE5NTA5MDFlZGU5MDE1ODMyNjViM2Y5YmM0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApA
QCAtMjcsOSArMjcsOSBAQAogI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RfaAogI2RlZmluZSBSZXNv
dXJjZVJlcXVlc3RfaAogCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3RCYXNlLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggNThjZmE3NzYxNDRjODRhMDkwZDM2MjJkZjIyMjc0
MjE4Zjc5MWJiNi4uZWQyNjk0MDFlYmJmZjRkZDYzOGVmOGVmYzFlMGVkODY5MjJmNDZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVx
dWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtMjQsMTEgKzI0LDExIEBACiAKICNpbmNsdWRlICJC
bG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKLSNpbmNsdWRlICJHVW5p
cXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYktp
dFNvdXBSZXF1ZXN0R2VuZXJpYy5oIgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3Vw
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAppbmRleCA5
Y2RkZGI4N2UzNzU5NWEyYmJhZDY1MTAyMDQ1ZjZmYTc0MmI0ZTQyLi41YWY5NDczZjM3NzI4NjEx
MzFiYWU3MTc3YjM0MzE5YTVjMmRiMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
U291cC5jcHAKQEAgLTQxLDkgKzQxLDkgQEAKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5o
IgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlNvdXBO
ZXR3b3JrU2Vzc2lvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGdpby9naW8uaD4K
ICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4
IDEzZWNiNWIwZjc2M2MyMDFjZjE3YTQxNjEyYTczZjA5YThmNWEwNzguLjYwMDRkMTdmNzZhMDNh
OTBlMzM4YTkwZTNjNTQ1YjUyZjUxOWM3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0z
MSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MuaCIKICNp
bmNsdWRlIDxnbGliL2dzdGRpby5oPgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgPHBhbC9j
cnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291
cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGQxZTlkOWNlNWIyODlkMTRjYzZjMTY1
OTNiZjRhZDA2NzgyN2U1M2EuLjViNWZmNzk3NzM0NzE1MTk2MWE0NWMzNDk3ZWEyZjU1MTM0NGIx
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3Vw
TmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU291cE5ldHdvcmtTZXNzaW9uLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xh
c3MgVVJMOwogc3RydWN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczsKIAogY2xhc3MgU291cE5l
dHdvcmtTZXNzaW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAv
VVJMU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2RiYTMyODY5NWZmY2IyNmYzODdiNjcyYWE5
Mzg3MzcyYjJlOTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiVVJMLmgiCi0KLSNpbmNsdWRl
ICJVUkxQYXJzZXIuaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwoU291cFVS
SSogc291cFVSSSkKLXsKLSAgICBpZiAoIXNvdXBVUkkpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJsU3Ry
aW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwotICAgIFVSTFBhcnNlciBw
YXJzZXIoU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0KCkpKTsKLSAgICAqdGhpcyA9IHBh
cnNlci5yZXN1bHQoKTsKLQotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM4OTU2LiBsaWJzb3VwCi0gICAgLy8gZG9lcyBub3QgYWRkIHRoZSBwYXNzd29yZCB0byB0
aGUgVVJMIHdoZW4gY2FsbGluZwotICAgIC8vIHNvdXBfdXJpX3RvX3N0cmluZywgYW5kIHRodXMg
dGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkKLSAgICAvLyBidWlsdC4gRml4aW5nIHNvdXBf
dXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMKLSAgICAvLyBu
b3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRp
b25zCi0gICAgaWYgKHNvdXBVUkktPnBhc3N3b3JkKQotICAgICAgICBzZXRQYXNzKFN0cmluZzo6
ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsKLX0KLQotR1VuaXF1ZVB0cjxTb3VwVVJJPiBV
Ukw6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBHVW5pcXVlUHRyPFNvdXBVUkk+KHNvdXBf
dXJpX25ldyhzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci19Ci0KLWJvb2wgVVJMOjpob3N0SXNJ
UEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewotICAgIHJldHVybiAhaG9zdC5pc0VtcHR5KCkg
JiYgZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGhvc3QudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0RW5jb2RpbmcuaAppbmRleCA3N2M1Mjg4ZmQwY2UwNTk4NjRlZjgxMjNlMDA3MmJi
N2MzNTcyM2RiLi43ZDAzZjg2M2QwZGY0OWQyZjc5YzdjM2E2ZDEzODJjZjQxNjgxMGU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKQEAgLTI1LDEzICsy
NSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBh
bC90ZXh0L1VuZW5jb2RhYmxlSGFuZGxpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgVGV4dEVuY29kaW5nIDogcHVibGljIFVSTFRleHRFbmNvZGluZyB7CitjbGFzcyBUZXh0RW5j
b2RpbmcgOiBwdWJsaWMgV1RGOjpVUkxUZXh0RW5jb2RpbmcgewogcHVibGljOgogICAgIFRleHRF
bmNvZGluZygpID0gZGVmYXVsdDsKICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29u
c3QgY2hhciogbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
QlN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKaW5k
ZXggYmFlMWJlYWFhYTM3YWRlMzAzYjA4ZjM0ODk0OTI0OTAxODY0NzljYS4uMGY0NmM1ZGNhYjI5
YjdiNDYzYmI2ZWNkMzFiMGViM2I3NThjMjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9CU3RyaW5nLmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkJTdHJpbmcuaCIKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0JTdHJpbmcuaAppbmRleCAxZmJlMDJjMTU4N2MxMjliOGQ1MDUwMmU2NDYwNGU3ODZj
ZTgyYTJhLi4xODRiNTUxZDQ4ZTljMjMxZWEwMmE3ODc1NmZlOTZmZWQzZTU2NjY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKQEAgLTQwLDggKzQwLDYgQEAgdHlwZWRlZiBf
TnVsbF90ZXJtaW5hdGVkXyB3Y2hhcl90KiBCU1RSOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSAgICBjbGFzcyBVUkw7Ci0KICAgICBjbGFzcyBCU3RyaW5nIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIEJTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggNmZmODllYzE4MGQ1ODM1YzU5MTQwZmM2YTM4
N2Y0N2IxMjViMGEzMi4uNDg1NDU0MmYwZDQwMTI2ODIyNWI3ZDYwZGZjNDJlN2ZiZTI1MGYzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxp
dGllc1dpbi5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxp
dGllc1dpbi5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2lu
Y2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3aW5pbmV0
Lmg+IC8vIGZvciBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSAogI2luY2x1ZGUgPHd0Zi9TdHJpbmdF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkVXRpbGl0aWVzV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
VXRpbGl0aWVzV2luLmgKaW5kZXggNWNkOWUwZTc1NzMxM2ZmMDIyOWE2Y2ZiYThlZDY0OTBhODFh
ZmUyOC4uYzM3ZjNlMmRlMTk2MWU2YTEzMDQ1NDc3Y2NhODY5MjY0ZjAzMjViOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaApA
QCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKLWNsYXNzIFVSTDsKIAogSEdMT0JBTCBjcmVhdGVHbG9i
YWxEYXRhKGNvbnN0IFN0cmluZyYpOwogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZl
Y3RvcjxjaGFyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2lu
LmNwcAppbmRleCAxZGZhNTBiNTMyZGQ4YjVhZjY2Njc1Zjg0NDlmZTU0MTkxMTc0ZWZmLi5hNmI2
NzJmYzcyN2ZlODM3OWEyZDBmN2UwNDYwNzE2OTYwY2ZiYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAi
SW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIK
ICNpbmNsdWRlICJUZXh0SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1
ZGUgIldlYkNvcmVUZXh0UmVuZGVyZXIuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwNjk5Nzk5MDYzMWU1YzM0
MzY0NzE4YWU2YWIxNzY1OTRjZGYzNjlkLi5kNTk2N2E1ODIwYzk3YWUyOGM2MjVhNTBkODAzOGUw
MGVlMjVkZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAi
SGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUg
IlJlbmRlckltYWdlLmgiCkBAIC00OSw2ICs0OCw3IEBACiAjaW5jbHVkZSAiVGV4dEVuY29kaW5n
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAibWFya3Vw
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5kZXggMGI2YzQyZWUyZDA4
MTY4YmVkZWZjOGYzZDBmOWVhZTZlMWE2YmY1OC4uZjA0MGIwYWY5NmYzYjhiYmQ5ZjU0OTMyOTMx
MmI4ZjRmNzA2OWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKQEAgLTIwLDEw
ICsyMCwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5k
ZXggZDA3NzdiMzQ1MGMzYTAyMGFlZmQ0M2E3MjNjYzZjYjEzM2RlYWUwYi4uMzMyZjI4NTMxZDM4
OGNmZTJjM2Q1OGE5NGMzZjI2MTdkY2I5MTY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7
CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBVUkw7
CiAKIGVudW0gY2xhc3MgSGl0VGVzdFByb2dyZXNzIHsgU3RvcCwgQ29udGludWUgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCmluZGV4IGVkMzMz
NWUxMzc0ZDhmNzIyOTI1MmQ1NGNlMDY3Y2MzODQ3NjgxYmQuLjc0NjdmZjM4NjU2ODJiOGJlNjNi
YjY3ZGViZDcxOWE0YzhiN2UzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQXR0YWNobWVudC5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJGcmFtZVNlbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlJl
bmRlclRoZW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKaW5kZXggOTk5OTZlMDFlZDA3MWFmNTg3
MWExZGExNjZjNjMxNDlhMTNiNGU3NC4uNzIyMWRmY2I3ZGRkZTU5MDM5Mjc2YWRkYzlmMzliZGEy
ZDc4OTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIHZvaWQgU1ZHSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2ZW50KCkKIFN0cmluZyBT
VkdJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlKSBj
b25zdAogewogICAgIFVSTCBiYXNlID0gZWxlbWVudCgpLmJhc2VVUkkoKTsKLSAgICBpZiAoYmFz
ZSAhPSBibGFua1VSTCgpKQorICAgIGlmIChiYXNlICE9IFdURjo6YmxhbmtVUkwoKSkKICAgICAg
ICAgcmV0dXJuIFVSTChiYXNlLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0
cmlidXRlKSkuc3RyaW5nKCk7CiAgICAgcmV0dXJuIGVsZW1lbnQoKS5kb2N1bWVudCgpLmNvbXBs
ZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAKaW5kZXggNjg1MDRhYTg0ZjI2Y2Ix
OTNmZjM1ZmEwOGIwYTRmNmQxZTU1ZmMyYy4uZGExM2I3N2I2ZjNkMWI4MjgzZGNhOTk4OGQ4ODc2
ZGQzNmUxNWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAKQEAgLTI1
LDcgKzI1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVPd25lclByb3h5LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA4N2Uy
ODIzZjllNzFiNjdiZDQ4MWU4ZTg4NDExYmFkMDAxMjY0Yjk4Li5jZDNmZDBkMWUyNTlkYWI0ZTMz
YTY5YWI2YWQxODQ2ZDlhZTVlMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaApAQCAtMjcsNyArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbWFnZS5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaApp
bmRleCAzZjViYzNhNzU2ZTY4NzkxYmFjOGQzNjgzYjZjM2MxNjc0NmQ5ZTQyLi4zMmU3MjJiZmEy
NzM0NTRjNGI1YTExNGVmODA5NjQzNzUyMzRmODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKQEAgLTMzLDcgKzMzLDYgQEAgY2xhc3MgTGF5b3V0U2l6
ZTsKIGNsYXNzIFNWR0ltYWdlOwogY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CiBjbGFzcyBS
ZW5kZXJPYmplY3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFNWR0ltYWdlQ2FjaGUgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCA2OTgwNmJlNjc3MDNlMmU5NDlmMzQxZDVj
OTg2YTg1ZWEyZDdlMjRmLi40Y2ZjZThkNGIwMzc4NTc5MTQyMjY3YWE2YjgwODc2NzEyNmIwNDI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1
ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDY3ZTA2YTFiNzljNThlMDg0Yzc3YTU2YjJiZjc3OTc4
ZjQzNjBlMWYuLjkwYmNiYmI1ZDc1YTk1NTRkNzhkNzViZDA1ZmRlYmQxN2FhNzkzZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIElu
dGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgICAgICAgICAg
YmFja2luZy0+c2V0VGlsZVNpemVVcGRhdGVEZWxheURpc2FibGVkRm9yVGVzdGluZyhmYWxzZSk7
CiAgICAgfQogCi0gICAgV2ViQ29yZTo6Y2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9y
VGVzdGluZygpOworICAgIFdURjo6Y2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVz
dGluZygpOwogICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhWZWN0b3I8U3RyaW5n
PigpKTsKICAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFVzZXNPdmVy
bGF5U2Nyb2xsYmFycyhmYWxzZSk7CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRp
bmdzOjpzZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9yKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMubW0KaW5kZXggNmZjZGNiZWRkM2Y3ZGE0Y2M1NDIwYTkzNjczNDI5NDFhNWMxMTQ5
Ny4uN2M1YjdhZDg0MmQ5OThmZTYxYTAxNDIzMDUyYzBhMWU2MGI5MzNmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMubW0KQEAgLTMyLDggKzMyLDggQEAKICNpbXBvcnQgIkV2ZW50SGFu
ZGxlci5oIgogI2ltcG9ydCAiSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKLSNp
bXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+
CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogI2lmIFBMQVRGT1JNKElPUykK
IFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU3RyaW5nIEludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgRE9N
VVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybC5o
cmVmKCkpOworICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybC5ocmVmKCkpOwog
fQogCiBib29sIEludGVybmFsczo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggNjQ4ZmJk
MjZmYWMzNmE2NWM5OTU3YzUxMTU3ODg3NjQ2ZjJkYzI2Mi4uNTExODFkYWU3MmUxM2UyYmJkMTUz
ZTgxMWMxNDM2NGQxY2Q4YTE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2UK
IAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RVUkwgeyByZXF1ZXN0LnVybCgpLCBtb2RpZmllZFJl
cXVlc3RVUkxTdHJpbmcgfTsKICAgICBpZiAoIW1vZGlmaWVkUmVxdWVzdFVSTC5pc1ZhbGlkKCkp
IHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJNb2NrQ29udGVudEZpbHRlciBmYWls
ZWQgdG8gY29udmVydCAlcyB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVzdFVS
TC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5n
LCAiTW9ja0NvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgJXMgdG8gYSAgVVJMLlxuIiwg
bW9kaWZpZWRSZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5
bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRD
b29yZGluYXRvci5jcHAKaW5kZXggOWI2ZTk1ZTIxNTQ4MzBjMDAwM2Q2ZTIxODAwM2FjZWFhMjJm
ZWQ1MS4uNDkyOWU4YWUzZDE5ZGM4ZWIxMzUwYWQ1ZTE1YzA1MTNmMTY4MTMwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0z
Myw4ICszMyw4IEBACiAjaW5jbHVkZSAiTW9ja1BheW1lbnRNZXRob2QuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9X
ZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3Jl
VGVzdFN1cHBvcnQuY3BwCmluZGV4IGQyNDEyMDZhMjhkZDVmNjQ3MGRhOWZiODRlOWVkNGZjNzRj
Mjg3YjAuLjU4MDlmMGJlZGYwZTdhMDcxNzI4ZDA5ZWI5Mjk3NDdjNGI0ZWUwN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTM5
LDEyICszOSwxMiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAi
VVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nh
bGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9V
UkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiB1c2luZyBuYW1l
c3BhY2UgSlNDOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdv
cmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCmluZGV4IDkw
MGMyY2I0MDQ2MmEwZWJlMzcwMjhhMzc1YTYzM2ZlYWY5NTM0ZjEuLjAzMjFjMmM3ZmVkMjU2NjI4
ZmYyNmNlZDkxM2FlYjhhZmMzMGUwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmgKQEAgLTM1LDggKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBVUkw7Ci0KIGNsYXNzIEFic3RyYWN0V29ya2VyIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJh
Y3RXb3JrZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oCmluZGV4IDViOWEwYmUzNjljMjk5YzBmYjc1NDEwNzhmYzc2NTZkNmRlNzll
YzEuLjI4MmRkMDZiYzMzOGExZTA2OWE1YmQ0NmQ4NjNmYzMyOWQwYmE0MWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNp
bmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENv
bnRyb2xsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZVByb3h5LmgKaW5kZXggMzZiZDAwNzA3ZDBhNjhkYjMwNzYyNzJiYTY1ZjMwYTNhOTI3ZjFlNy4u
ODU4NWE1YmZmOTNiMDQ2NjVkZTUzMjFlZDMyYjkyZmZhOTc2YTE3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKQEAgLTQyLDcgKzQyLDYg
QEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXb3JrZXI7
CiAKIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2VyIGNvbnRleHQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKaW5kZXggZGY0MzcxYWUyM2Mz
MDMwNmVhN2JmNjQwZDI3ZjllMTRiOTc1ZTRiMi4uYTFkM2VhNzU3NmU3ZWEzNGE2NGNiOTE1NDdk
ZTc2YWNmNTE4YmRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJ
bnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVj
dG9yUHJveHkuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oCmluZGV4IDUzYzc3NjE1Njc1
NWI3MDZiOWQyNDkzNzE2YTgxMjUyN2ZjYTM1ZjguLjkyY2ZjYzc3MDZmMDM0ZTU3YjlmODJlOWJh
MjdiYTNhNTFhMDlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmgK
QEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggZTU3YzMyM2NkZTllNmY0
ZjgwYWY5YjI1YjJjZmUxZWUyZTczNzRkOS4uMDRhNDFjMjFjYjJmNzUzMWZkZTYxOWU0ZDY3ZGQ1
NjQ0OTA1Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5oCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNs
aWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCAxYzZhYTE2NWI1OTE4NzE0N2M4YmE4MDk1NjFiMzAz
MTVjODRiMGI3Li44NGYxMWUyNmVlYzZiZjkyMWJiMDY1M2EyYjk1OTIzNzZjNDNjM2MxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgog
I2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGQ3MTQxMjQ4NWE5NjkwNDlhZGI0OTY1OTc0
ZGJlOTFmNWVlMTkxODkuLjNkYzU0ZjZjNDczZGIzNzY3NTI1ZDFjYTQxMDNkNWQ2YTU2Yzk2OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtMzksNyArMzksNiBAQCBj
bGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vdGlmaWNhdGlv
bkNsaWVudDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaAppbmRleCA5
YjliY2M4YTIyZjlkNzY3MTI5ODk3ZWMwMWYzN2IyYTU1MjFiN2VkLi43YjIzOWYzMDdkYTcxZTE1
NmQ4N2JhMjM1M2I1MWIxYTMzMzVmZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyLmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU1ZhbHVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudERhdGEuaAppbmRleCAxNDNkN2Q5ZTA0NWQ1NGUxMWE4YzZlZDlhYzE0ZTM3YjE1NmEwNTI5
Li5mOTkxZjMyY2U2ZDNhOWIyNTdhNTYxMmI0NjM2NWE2NzlhZTJkMTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERh
dGEuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDQw
ZDQwZGFkYTBiMThmMjJhODgzN2NiOTc2OGE0YTk5NmUyZTZiZDIuLjhkYjljNDE2YmRmNzNjNjg2
YWVmMTU4ZDY0ZDYxMDA0MmZlOGVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTQ4LDkgKzQ4
LDkgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9T
Y29wZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBDT05UQUlORVJfUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBDT05UQUlORVJfUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmlu
ZGV4IDNiZTk1MDQyNWVhNzgwY2ZmZDViYmVlNzg1ZmE0NTMyYWY5NGEzZDcuLjRkNjIwODg5Zjkz
NGE3ZWZhMjYwYjMyMDliNGUxNzZiMDJhYjBkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTI5
LDExICsyOSwxMSBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJV
UkxIYXNoLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5o
CmluZGV4IDcyOGMzN2NmZTYyYTVmZTU2MGFiNmM0ZWIxODY0ZjA0NDRjZjkzNmUuLmNlMzYxZDNm
M2QwZjM4NzNhODZkYzhhOTM4YmFmMDNmMWQxNjRhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgK
aW5kZXggMDg3MGJiNmVmNjAyOTg0NWNkNGE5YjZkZTIzMDBhODgzY2FhMWMyMi4uOTNjMmRmNmZm
MGQyZjM5OGU4NDEyNjhiZTE5NjY0ZjdhOWNlNjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKQEAgLTM0LDcgKzM0
LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCmluZGV4
IDFjM2Q3NDZiMjNkYjkzZTM1NmYyMmU2MzEyMGIxY2Q0ZjRjZGIwYzkuLmJjZGQ4YzQ2OTI3ZGM0
MDA2MGIwZGVmOWRlYmVlNWVlYTVlZjE3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5j
cHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKKyNpbmNsdWRlIDx3
dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleS5oCmluZGV4IDcxMGY0MTJiNDcyZDhmMTc0MmUwYmVlNDhkNTAyYmU4OWE5YTAzOTkuLmU2
YWY3MzMxYzdiOTU0MzlkNTM5OGE5YThjMzdlMzQ3NmI4ZmRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
IAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDIsNyArMTAy
LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXlIYXNoIHsKIHRlbXBsYXRl
PD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5PiB7CiAgICAgc3RhdGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkg
ZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXk6OmVtcHR5S2V5KCk7IH0KIAotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1
ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHNsb3Quc2V0
U2NvcGUoV2ViQ29yZTo6VVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9CisgICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29wZShVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnNjb3BlKCkuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAppbmRleCA1MDUyMGI2YTE0MWIxODNmMDQ4ZGU2MDkzMjlmOWNjODFmMjU0ODcwLi42MjYx
N2NiODdhMTBjMTVjNTIzOGUwYzBjYWE3NjdmMmJlOGFjODJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJD
bGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmNwcAppbmRleCBhY2Q2NWU5YzgwYTA2N2YyNzJhNThlMWQ5NzM1YzExZmU2NTEyYTk0
Li4xZmI0MTVlMmQyZDA4NjUzZWZjYTI3MWJlOWM4ZjBlYWU0NTRmZjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIuaAppbmRleCBkZTIyYzc5ZjhlOGQwZTJiODE3MjRmNjUxMTFhOWYxMGE1ZDIwMzY5Li4z
MjEwZTMyOTllNmZjYjgzMmZjMzljOGVkNmNhOGU2Njc4YmM2YmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgK
QEAgLTQwLDcgKzQwLDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBV
Ukw7CiBzdHJ1Y3QgQ29va2llOwogfQogCkBAIC03OCw5ICs3Nyw5IEBAIGNsYXNzIFdlYkNvb2tp
ZU1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjCiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNl
c3Npb25JRCwgV2FsbFRpbWUsIENhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBzZXRDb29raWUoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENhbGxiYWNrSUQpOwotICAgIHZv
aWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVu
dFVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEFsbENvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29raWVz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxh
dGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwog
ICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZTNkZTlkOGNmYWI5ZmQ1ZjZmYjY4YTJjMDcx
MDI2MmE4NTVkYzQ0OC4uMGIxZmQ1NTllMGJlYjI2ZTAwMzc5NDM0YWRhZTRlNWM5ZTQ3ZGFhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI5LDkgKzI5LDkgQEAKICAg
ICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiAgICAg
dm9pZCBTZXRDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6
Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBT
ZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVS
TCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBTZXRDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywg
VVJMIHVybCwgVVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgdm9pZCBHZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
VVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVD
b29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNv
b2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRp
bWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3Vz
dG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCmlu
ZGV4IGMyYjE0N2M1ZjcyMWI5NTQwNzQ1YjY0OGQyMGJiY2I3Mjg0NzFhYmUuLjZlOTAyOGRiNWM5
OTdiZDJhMzFmZWUxOGEzM2MxMjRiN2ZmMTQyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9t
UHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCkBAIC0z
NCw4ICszNCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRFbmNv
ZGluZy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
TlNVUkxDb25uZWN0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBiNjc2NjE0OWVlZDEx
ZTljMjhiMGUxNDMzYWU2ZGVjMGFkNWQ2OTk3Li40ZTBmN2ZhN2RlNjgzYmNhMTI2NTg4ZDFjNDEy
M2NkNWJhZmE0MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Zp
bGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBAIC03MCw3ICs3MCw3IEBA
IHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwp
OwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1
cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rp
b25DaGVjaykKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogewogICAg
IC8vIFRoZSBjb25uZWN0aW9uIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBpZiBOZXR3b3JrUHJvY2Vz
cyBwcmV2b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJlYXNvbi4KICAgICBCbG9iRm9yQ29ubmVjdGlv
bk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNv
bm5lY3Rpb24pOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29ya0Nvbm5lY3Rpb25UCiAg
ICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6
VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQordm9pZCBOZXR3b3JrQmxv
YlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBp
bnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkg
bm90IGJlIHJlZ2lzdGVyZWQgaWYgTmV0d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9y
IGFueSByZWFzb24uCiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJh
dG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKQEAgLTExMyw3ICsx
MTMsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNl
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKgogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5h
ZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVS
TChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiB1cmwpCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJM
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVy
bCkKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgTmV0
d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9yIGFueSByZWFzb24uCiAgICAgQmxvYkZv
ckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rp
b24uZmluZChjb25uZWN0aW9uKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIE5ldHdvcmtCbG9i
UmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiBjb25uZQogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5yZW1vdmUodXJsKTsKIH0KIAotdWludDY0
X3QgTmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQordWludDY0X3QgTmV0
d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
IGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9ibG9ic0ZvckNvbm5l
Y3Rpb24uY29udGFpbnMoY29ubmVjdGlvbikgfHwgIW1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQo
Y29ubmVjdGlvbiktPnZhbHVlLmNvbnRhaW5zKHVybCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
MTY5LDcgKzE2OSw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6Y29ubmVjdGlvblRvV2Vi
UHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQCiAgICAgbV9ibG9ic0ZvckNv
bm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwogfQogCi1WZWN0b3I8UmVmUHRyPEJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVzSW5CbG9iKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCkKK1ZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JSZWdp
c3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9ibG9ic0ZvckNvbm5lY3Rpb24uY29u
dGFpbnMoJmNvbm5lY3Rpb24pIHx8ICFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKCZjb25uZWN0
aW9uKS0+dmFsdWUuY29udGFpbnModXJsKSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JS
ZWdpc3RyeS5oCmluZGV4IGMxOWE2NTllMGVmNDU1YmIxMDg4YmNmODVjMjlmZGVhYzkzNzI2Mzku
LjkwNmI5ZThhNTJmZTRjZmEwMjY2Y2Q5NzFkNzE4Y2UyYzkyNTU0NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVn
aXN0cnkuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8
V2ViQ29yZS9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTsKQEAgLTQ2LDI1ICs0NiwyNSBAQCBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrQmxv
YlJlZ2lzdHJ5KTsKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CiAgICAgc3RhdGljIE5ldHdv
cmtCbG9iUmVnaXN0cnkmIHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9i
VVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6
QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVj
dGlvbkNoZWNrKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xp
Y2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOwot
ICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB1aW50NjRfdCBibG9iU2l6ZShOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgcmVn
aXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQ
YXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayk7CisgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZp
bGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAg
ICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwg
Y29uc3QgVVJMJik7CisgICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCB3cml0ZUJs
b2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBw
YXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0
cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKIAogICAgIHZvaWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKik7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBXZWJDb3JlOjpVUkwm
KTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZp
bGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJik7Cisg
ICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0lu
QmxvYihjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICB+TmV0d29ya0Jsb2JSZWdpc3RyeSgp
OwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwg
SGFzaFNldDxXZWJDb3JlOjpVUkw+PiBCbG9iRm9yQ29ubmVjdGlvbk1hcDsKKyAgICB0eXBlZGVm
IEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBIYXNoU2V0PFVSTD4+IEJs
b2JGb3JDb25uZWN0aW9uTWFwOwogICAgIEJsb2JGb3JDb25uZWN0aW9uTWFwIG1fYmxvYnNGb3JD
b25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGQwMzc4N2ZiNGEy
NWQ0OWFlYzNlZTY3NzViODc1YmY4YjIwMzAzOTMuLmY1ODRiYzQ2NjA4NTFjMDBhZmFhYmUxNWZi
YjA5OWFhMjlhNmRjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE1MCwzMiArMTUw
LDMyIEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDogcHVibGljIFJlZkNv
dW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByCiAgICAgdm9pZCByZW1vdmVMb2FkSWRlbnRp
ZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVk
KHVpbnQ2NF90IHdlYlBhZ2VJRCk7CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291cmNl
TG9hZElkZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2Vp
dmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RV
UkwpOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElk
ZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnREb3dubG9h
ZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lkIGNvbnZl
cnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFp
blJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIHZv
aWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBTdHJpbmcmIGNvb2tpZVN0
cmluZywgYm9vbCYgc2VjdXJlQ29va2llc0FjY2Vzc2VkKTsKLSAgICB2b2lkIHNldENvb2tpZXNG
cm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYgY29v
a2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQpOworICAgIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29sJiByZXN1bHQp
OwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcywgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wmIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCk7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2b2lk
IGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNz
ZWQpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWUoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKLSAg
ICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsK
LSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNr
KTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNv
cmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wg
c2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKICAgICB2b2lkIHByZXJlZ2lzdGVyU2FuZGJv
eEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVCYWNrZWRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKLSAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNr
ZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Jj
VVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7Ci0gICAgdm9pZCBibG9iU2l6ZShjb25z
dCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7Ci0gICAgdm9pZCB1bnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25z
dCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CisgICAgdm9pZCBibG9iU2l6ZShjb25z
dCBVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVS
TChjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIpOwog
CiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6RGF0YUtleSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBz
ZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpOwogCi0gICAgdm9p
ZCBjcmVhdGVTb2NrZXRTdHJlYW0oV2ViQ29yZTo6VVJMJiYsIFBBTDo6U2Vzc2lvbklELCBTdHJp
bmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90KTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldFN0cmVh
bShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3Qp
OwogICAgIHZvaWQgZGVzdHJveVNvY2tldFN0cmVhbSh1aW50NjRfdCk7CiAgICAgCiAgICAgdm9p
ZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA3NzNkOWQ4ZTEwMzNiNjJlNDgxMzNiOTYy
MGI2MjliZjc4ODZmZWFkLi45ZWZlYTU3NTRiNGRjY2Y2MzNiMWU0MzA0ZGJhMzc0NGQ3ZGEzZGFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDI4
ICszNCwyOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291
cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSkKIAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcs
IGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKLSAgICBTZXRDb29raWVzRnJvbURPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAgICBTZXRDb29raWVzRnJvbURPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5n
KQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wg
ZW5hYmxlZCkKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3Ry
aW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKQotICAgIEdldFJh
d0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0
eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6OlVS
TCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpCi0gICAg
RGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwg
U3RyaW5nIGNvb2tpZU5hbWUpCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAgICBHZXRSYXdDb29raWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIC0+IChWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAgIERlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogCi0gICAgUmVnaXN0ZXJG
aWxlQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCi0g
ICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFZlY3RvcjxXZWJDb3JlOjpCbG9i
UGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJM
RnJvbVVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMLCBib29sIHNob3Vs
ZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmws
IFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25I
YW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkK
KyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwsIGJvb2wgc2hv
dWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogICAgIFByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lv
bnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzLCBX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4dGVuc2lvbkhhbmRsZXMpCi0g
ICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoV2ViQ29yZTo6VVJMIHVybCwg
V2ViQ29yZTo6VVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVu
dFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoV2ViQ29yZTo6VVJMIHVybCwgV2Vi
Q29yZTo6VVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdp
c3RlckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCkKLSAgICBCbG9iU2l6ZShXZWJDb3JlOjpVUkwg
dXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkKKyAgICBSZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZChVUkwgdXJsLCBVUkwgc3JjVVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBhdGgs
IFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGb3JTbGljZShVUkwgdXJs
LCBVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKKyAgICBVbnJlZ2lzdGVy
QmxvYlVSTChVUkwgdXJsKQorICAgIEJsb2JTaXplKFVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1
bHRTaXplKQogICAgIFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFZlY3RvcjxTdHJpbmc+IGJs
b2JVUkxzLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcikKIAogICAgIFN0b3JlRGVyaXZlZERh
dGFUb0NhY2hlKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhS2V5IGtleSwgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCiAKICAgICBTZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAotICAgIENyZWF0ZVNvY2tldFN0cmVhbShX
ZWJDb3JlOjpVUkwgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBh
cnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICBDcmVhdGVTb2NrZXRTdHJlYW0oVVJM
IHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVp
bnQ2NF90IGlkZW50aWZpZXIpCiAKICAgICBFbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suY3BwCmluZGV4IGNmNGU2NGQ1MDNmMWE5ZWUwYmRjNWUwZDUyOGM0N2YyOTQyOWE2NDEuLjA1
OWExMzAxNDNiYTVmM2E3ZTBkMWViMWIxNDY2ZmE5MWZhMGI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTEwNiw3ICsxMDYs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDbwogICAgIGlmIChyZXNwb25zZS5pc0hUVFAwOSgp
KSB7CiAgICAgICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7CiAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwotICAgICAgICBpZiAocG9ydCAmJiAh
aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7
CisgICAgICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0
LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoeyBTdHJpbmcoKSwgMCwgdXJsLCAi
Q2FuY2VsbGVkIGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgoKSArICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIiB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4
IDY1ZWFiYjJiZjNiNTlkMmZkNDdhYTQxMjY1ZGZmNjk5NDhiMzgwZGIuLmQ3M2E2ZWE2ZmYxMmMz
MDRiZmE3NGJhYjk1YmU2YWVlZTY2Yjg5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNDgsOSArNDgsOSBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMTc5N2Q3ZTAyNWEwNGRkMjNj
ZTQ5N2M4MTFhZjI4MWEyNTk3MTI1ZC4uODQ2Y2I0ZDNhZDNiYzk1YTBhZWUxYmJlZTA2MDZkMjMx
NDVjMWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlcjsKIAogY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogcHVibGljOgotICAgIE5ldHdvcmtMb2FkQ2hlY2tl
cihXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBXZWJDb3JlOjpV
UkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVmbGln
aHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcyA9IGZhbHNlKTsKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoV2ViQ29yZTo6
RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiBy
ZWZlcnJlciwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxz
ZSk7CiAgICAgfk5ldHdvcmtMb2FkQ2hlY2tlcigpOwogCiAgICAgdXNpbmcgUmVxdWVzdE9yRXJy
b3IgPSBFeHBlY3RlZDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3I+OwpAQCAtNjksMTQgKzY5LDE0IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKIAogICAgIHZvaWQgc2V0
Q1NQUmVzcG9uc2VIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycyYmIGhlYWRlcnMpIHsgbV9jc3BSZXNwb25zZUhlYWRlcnMgPSBXVEZNb3ZlKGhlYWRl
cnMpOyB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICB2b2lkIHNldENvbnRl
bnRFeHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6OlVSTCYmIG1haW5Eb2N1bWVudFVSTCwgc3Rk
OjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQor
ICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3VtZW50
VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50
aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5Eb2N1bWVudFVSTCA9IFdURk1vdmUobWFpbkRv
Y3VtZW50VVJMKTsKICAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0g
aWRlbnRpZmllcjsKICAgICB9CiAjZW5kaWYKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
KCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3N0b3JlZENyZWRlbnRpYWxz
UG9saWN5OyB9CiAKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZEluZm9ybWF0aW9uIHRha2VOZXR3
b3JrTG9hZEluZm9ybWF0aW9uKCkgeyByZXR1cm4gV1RGTW92ZShtX2xvYWRJbmZvcm1hdGlvbik7
IH0KQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogCiAgICAgdm9pZCBjb250aW51ZUNo
ZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRs
ZXImJik7CiAKLSAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNrKGNvbnN0IFdlYkNvcmU6OlVS
TCYpIGNvbnN0OworICAgIGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2soY29uc3QgVVJMJikgY29u
c3Q7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlZGlyZWN0ZWRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAg
ICB2b2lkIGNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKQEAgLTExOCwxMSArMTE4LDExIEBAIGNsYXNz
IE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENo
ZWNrZXI+IHsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQ7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCBtX29yaWdpbmFsUmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBmb3IgQ09SUyBjaGVja3Mu
CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX2ZpcnN0UmVxdWVzdEhlYWRlcnM7IC8vIE5l
ZWRlZCBmb3IgQ09SUyBjaGVja3MuCi0gICAgV2ViQ29yZTo6VVJMIG1fdXJsOworICAgIFVSTCBt
X3VybDsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVyczsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQotICAgIFdlYkNvcmU6OlVSTCBtX21haW5Eb2N1bWVudFVSTDsKKyAgICBVUkwgbV9tYWluRG9j
dW1lbnRVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIApAQCAtMTMx
LDcgKzEzMSw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICBib29sIG1faXNTaW1wbGVSZXF1ZXN0IHsg
dHJ1ZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIHNpemVfdCBtX3JlZGlyZWN0Q291bnQg
eyAwIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fcHJldmlvdXNVUkw7CisgICAgVVJMIG1fcHJldmlv
dXNVUkw7CiAgICAgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5IG1fcHJlZmxpZ2h0UG9saWN5Owog
ICAgIFN0cmluZyBtX2RudEhlYWRlclZhbHVlOwogICAgIFN0cmluZyBtX3JlZmVycmVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBl
Yjg4NjY0ODEzOWNjN2I3NTllNzJjNjgxODI4MGI1ZDA0NzEwOWUwLi4wNmMxYjNhZDRlYWU0Y2Q3
ZDQyZDI5MDQ0NTUyOGE5OTRjY2E5MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNzYsMTMgKzc2LDEzIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxl
Z2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
ZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAjZW5kaWYKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBoYW5k
bGVGb3JXcml0aW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp3
cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZUZvcldyaXRpbmcsIHVpbnQ2NF90IHJlcXVl
c3RJRCkKIHsKICAgICBhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShX
VEZNb3ZlKGhhbmRsZUZvcldyaXRpbmcpKTsKICAgICBpZiAoIWV4dGVuc2lvbikgewpAQCAtMTAw
OCw3ICsxMDA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVTdG9yYWdlUGFyYW1l
dGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF8KICAgICAgICAgY2FsbGJhY2so
U3RyaW5nIHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0sIHF1b3RhKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCiB7CiAjaWYgRU5B
QkxFKFNFUlZFUl9QUkVDT05ORUNUKQogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IGZiMzc3M2QxZWZlMWQzNDIxNmQ2YWVmY2U0ODUzZWM3ODk5ZGE1NGMuLmFhYWRiMTMzYzc5
ZmZhMTFjMGNmNjgyMzAyZTdiZDBhMGU2MWQzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTY1LDcgKzY1LDYgQEAgY2xhc3MgUHJvdGVj
dGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiBlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxz
UG9saWN5Owogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogc3RydWN0IFNlY3VyaXR5
T3JpZ2luRGF0YTsKQEAgLTE3Miw3ICsxNzEsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1
YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQKICAgICB1
c2luZyBDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHF1b3RhKT47CiAgICAgdm9pZCBjYWNoZVN0b3Jh
Z2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJh
Y2smJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oY29u
c3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
Ym9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nQ29v
a2llSW5mb3JtYXRpb247IH0KQEAgLTI5Myw3ICsyOTIsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vz
cyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQK
ICAgICB2b2lkIHN5bmNBbGxDb29raWVzKCk7CiAgICAgdm9pZCBkaWRTeW5jQWxsQ29va2llcygp
OwogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIHVpbnQ2NF90IHJl
cXVlc3RJRCk7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIHVpbnQ2NF90IHJlcXVl
c3RJRCk7CiAKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldElnbm9yZVRMU0Vycm9ycyhib29s
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFjNzNiZWQ0MmUyZDQ1YTdjZThjMWZjNDRiM2M3NmYyYmIy
YTllYmUuLjc4ZjljYjI5ODZkMzA0YzViMDJlZjgzNWI3MTk3MjBjNDMwZTIzYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtNzcsOSArNzcsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgRGlkR2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXModWlu
dDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4
dGVuc2lvbnMpCiAjZW5kaWYKIAotICAgIFdyaXRlQmxvYlRvRmlsZVBhdGgoV2ViQ29yZTo6VVJM
IGJsb2JVUkwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBo
YW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgV3JpdGVCbG9iVG9GaWxlUGF0aChVUkwg
YmxvYlVSTCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhh
bmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIFByZWNvbm5lY3RUbyhXZWJDb3JlOjpV
UkwgdXJsLCBlbnVtIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5KTsKKyAgICBQcmVjb25uZWN0VG8oVVJMIHVybCwgZW51bSBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJp
bmc+IGRvbWFpbnNUb0Jsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QsIHVpbnQ2NF90IGNvbnRl
eHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkNjM3MzhhZWVjOGEzNTM1ZDA5NjEw
MzY5ZTc4NjQ5MWIxZTlkMmY5Li4yNzQzZTEyOWM4NzlmNmIwYzI1YzIxMWJhMDA4OTM5NzhhM2Ew
YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIDogcHVibGljIE5ldHdvcmtMb2FkUGFyYW1ldGVy
cyB7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IGZyYW1lQW5j
ZXN0b3JPcmlnaW5zOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBXZWJD
b3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMOworICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CiAgICAg
c3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGQxYzY4
ODllYTY0OGNjYWNmMDhhYzE0YmU3YjZjNTJjYTNiMDNkMzYuLjQzYWVkNTQ2ZGVmNjBlOGFkY2Nl
ZmMxMzlhNzJmODZhZmY3NWRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk3Niw3ICs5NzYsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAog
ICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKCJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3Jp
Z2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVh
dGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxS
ZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50aWZpZXIo
KSk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENv
b2tpZUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9i
amVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSk7CiAKQEAgLTEw
MDMsNyArMTAwMyw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPCiAjdW5kZWYgTE9DQUxfTE9H
X0lGX0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5h
bChjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGlj
IHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVu
dGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nv
b2tpZUluZm9ybWF0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhZmIwZTljNzk1NjYzZWFiMDVlYzRh
ZjRmMzgyNTRiNzdmYWVjMWRhLi5mODc0ZjhkYmE2ZTljNWU1NjEwZjczNGQzNGNkNDc2MDFiMDRh
ODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIgZmluYWwKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRpYyBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9y
bWF0aW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7
CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiBsYWJl
bCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTEz
NCw3ICsxMzQsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwKICAgICB2b2lk
IGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYpOwogICAgIHZv
aWQgY29udGludWVQcm9jZXNzaW5nQ2FjaGVkRW50cnlBZnRlckRpZFJlY2VpdmVSZXNwb25zZShz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogCi0gICAgYm9vbCBzaG91bGRJ
bnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKKyAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZv
ckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKIAogICAgIGVudW0gY2xhc3MgRmlyc3RMb2FkIHsgTm8sIFllcyB9OwpAQCAt
MTY5LDcgKzE2OSw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogCiAgICAg
Ly8gQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxv
bmcpIGZpbmFsOwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydChXZWJDb3JlOjpVUkwm
JiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRDU1BWaW9s
YXRpb25SZXBvcnQoVVJMJiYsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAg
dm9pZCBlbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXZWJDb3JlOjpTZWN1cml0
eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpIGZpbmFsOwogCiAgICAgdm9pZCBsb2dTbG93
Q2FjaGVSZXRyaWV2ZUlmTmVlZGVkKGNvbnN0IE5ldHdvcmtDYWNoZTo6Q2FjaGU6OlJldHJpZXZl
SW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldFN0cmVhbS5jcHAKaW5kZXggNDJkMzZiYzRjYzNmZTQzMmYzNTI0YzgzYjBjOWY4ODRlOGQ3
NDQzYy4uYzVhNjJjNjhmZTlkYTY1NmU0MjMzZmJkMTM2OWEyYzY2MWUyOWE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3Bw
CkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1SZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gTmV0d29ya1NvY2tldFN0cmVhbTo6
Y3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVk
aXREYXRhKQorUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtTb2NrZXRTdHJlYW06OmNy
ZWF0ZShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBj
cmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU29ja2V0U3RyZWFtKFdURk1vdmUodXJs
KSwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBpZGVudGlmaWVyLCBjb25uZWN0aW9u
LCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggOTA2ZTU4ZWJmNTc0MjVkNjgzNzcw
ODkxNjg1ZmRhYmQyYTgzN2JjOC4uMzI2ODcxNmY0NDY5YzA5OTNmMjU5N2QwOWNiZTE1ODhlNmYy
M2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmgKQEAgLTM5LDE0ICszOSwxMyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOwotY2xhc3Mg
VVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1NvY2tldFN0cmVh
bSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRTdHJlYW0+LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0
d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmLCBQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0
aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIHN0YXRp
YyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0
aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogICAgIH5OZXR3
b3JrU29ja2V0U3RyZWFtKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtNjcsNyArNjYsNyBAQCBjbGFzcyBOZXR3b3Jr
U29ja2V0U3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1NvY2tldFN0cmVhbT4sIHB1
YmxpYyBJUEM6OgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFs
OwogCi0gICAgTmV0d29ya1NvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwmJiwgUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29u
bmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAgICBO
ZXR3b3JrU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBj
cmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6
U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogCiAgICAgdWludDY0X3QgbV9pZGVudGlm
aWVyOwogICAgIElQQzo6Q29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDlmMGM2Yjg2YjQyMGY0NTViZmZjMmRlNmI5NGVi
ZTdjOGJlMTQzYTAuLmQ0NTQzZjIzNWI5MDQ3YzU3MDljODFmZmRhMzg2MWM1OWY3ODQyNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTM2LDcgKzM2LDYgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIGNsYXNz
IEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTEsNyArNTAsNyBAQCBjbGFzcyBQaW5nTG9hZCBmaW5hbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxQaW5nTG9hZD4sIHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQwogcHJpdmF0ZToKICAgICB+UGlu
Z0xvYWQoKTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgY3VycmVudFVSTCgpIGNvbnN0Owor
ICAgIGNvbnN0IFVSTCYgY3VycmVudFVSTCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3Q7CiAKICAgICB2b2lk
IHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMmNhNjYyNWQx
YzAwZTZkMjdkNTI1ODg2MTcyMWZjYzUwYjUzNGI1NS4uOWQxNzAzNzg5NGY1YjUxMTAzOGRlMDZi
YWQwOWRkN2Y2MzRjN2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApA
QCAtOTAsOCArOTAsOCBAQCBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24gOiBwdWJsaWMgV2Vi
Q29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6OgogICAgIHZvaWQgc3RhcnRG
ZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29y
ZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJy
ZXIpOwogICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIG1h
dGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7Ci0gICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKHVpbnQ2
NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVS
TCk7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdpc3RyYXRpb25NYXRj
aFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRv
cE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpOworICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9u
cyh1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwp
OwogCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyPiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDA2MTk1
YjhhZDE5NDYxOGNkZmY2ZmZlOWQ1NzVlOWYzYTQ0NGE3ZWQuLjI5NGJkNTk5ZDQwYmNjMjExODRk
OTdkN2FkNTBjYmM4YzMwMWEyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsOSArMzYsOSBAQCBtZXNzYWdlcyAtPiBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gewogCiAgICAgRGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2Uo
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBrZXkpCiAKLSAgICBNYXRjaFJl
Z2lzdHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRp
Zmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFdlYkNv
cmU6OlVSTCBjbGllbnRVUkwpCi0gICAgV2hlblJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNl
cnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKLSAg
ICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVl
c3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdp
biwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKKyAgICBNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRf
dCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGllbnRVUkwpCisgICAgV2hl
blJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVl
c3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdp
biwgVVJMIGNsaWVudFVSTCkKKyAgICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VS
ZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKICAgICBSZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmln
aW4sIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBjb250
cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogICAgIFVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciBpZGVudGlmaWVyKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBkODZhYjYwOTM5
Nzc2NWM1YmJmYTc5MzU0YTExNWI3Yzc0OTFkMjdlLi42MTE2OTJkMTk0OTk3MmZlYjFlM2NlODVi
ODhiODU4NTU5ZmU2NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAgbWVz
c2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKICAgICBGaW5kQ2xpZW50
QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpOwogICAgIE1h
dGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbSh1
aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgU2V0U2NyaXB0UmVzb3VyY2Uo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6VVJM
IHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgV2ViQ29yZTo6VVJMIHJlc3BvbnNlVVJMLCBTdHJp
bmcgbWltZVR5cGUpOworICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVS
TCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVUeXBlKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA1NWEwOGJjMDhjMDhkMWQ4YThh
Yzg2MjI4ZGY2NTAxYTkxNTlhODdhLi5iMTliZmQxMDA1NzI2NzY0MjE2NzAwZjViMzg0YzZiZWVm
MTQzMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBFbmdp
bmU6OnJldHJpZXZlQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYgb3IKIH0KIAogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpV
UkwmJiB1cmwsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGZyb20oc2Vzc2lv
bklELCBbY2FjaGVJZGVudGlmaWVyLCB1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAgICAgIGVuZ2luZS5y
ZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHVybCksIFdURk1vdmUoY2Fs
bGJhY2spKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZQogICAg
IH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBV
UkwmJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNoZShj
YWNoZUlkZW50aWZpZXIsIFt1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
cmVzdWx0Lmhhc192YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA4YzJlOGNjZTE0ZDgxMjkw
OTdmNzFhYzIxZTI2ZTM2MWZkNmQ2ODMzLi43ZTE0MjI1YmVlNTBhOTc3YjVmYzkyNTE0NjU0Njdi
YjM0ZDgzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgRW5naW5l
IDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEVuZ2lu
ZT4gewogICAgIHN0YXRpYyB2b2lkIHJlbW92ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2Fs
bGJhY2smJik7CiAgICAgc3RhdGljIHZvaWQgcmV0cmlldmVDYWNoZXMoUEFMOjpTZXNzaW9uSUQs
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwogCi0gICAgc3RhdGljIHZv
aWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxi
YWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBwdXRSZWNvcmRzKFBBTDo6U2Vz
c2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRp
ZmllcnNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMo
UEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogCkBAIC0xMDQsNyArMTA0
LDcgQEAgY2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiwgcHVibGljIENh
bk1ha2VXZWFrUHRyPEVuZ2luZT4gewogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNlbnRhdGlvbigpOwogCi0g
ICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKKyAg
ICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmLCBX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgcHV0
UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRp
ZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpD
YWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRp
ZmllcnNDYWxsYmFjayYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCmluZGV4IDdmYjZlMDgx
OGVjMjQxNTk1ZjgyYzY3NzJjODRiNWUzMjBjZjc2MTUuLjg5ODAxOGU0ZWEzN2ZiMTJmYjYzMmIx
OTJmZThhZWExYzcxNDY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgc3RydWN0IFJlY29yZEluZm9ybWF0aW9uIHsKIAogICAgIHVpbnQ2NF90IHNpemUgeyAw
IH07CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgYm9vbCBoYXNW
YXJ5U3RhciB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFyeUhlYWRl
cnM7CiB9OwpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBDYWNoZSB7CiAgICAgY29uc3QgU3RyaW5n
JiB1bmlxdWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVOYW1lOyB9CiAgICAgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OlVuaW5pdGlhbGl6ZWQ7
IH0KIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZXRyaWV2
ZVJlY29yZHMoY29uc3QgVVJMJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxs
YmFjayYmKTsKICAgICBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvIGluZm8oKSBj
b25zdCB7IHJldHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07IH0KIAogICAgIHZvaWQgcHV0
KFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKQEAgLTk0LDggKzk0LDgg
QEAgY2xhc3MgQ2FjaGUgewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERlY29kZWRSZWNvcmQ+
IGRlY29kZVJlY29yZEhlYWRlcihjb25zdCBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29yZCYp
OwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9t
VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1h
dGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIFZl
Y3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFVSTCYpOworICAg
IGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFVS
TCYpIGNvbnN0OwogICAgIFJlY29yZEluZm9ybWF0aW9uJiBhZGRSZWNvcmQoVmVjdG9yPFJlY29y
ZEluZm9ybWF0aW9uPiosIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQmKTsK
IAogICAgIHZvaWQgc3RvcmVSZWNvcmRzKFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxs
YmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCmluZGV4IDI5YjM4
YjFhMmUzZWJiNDExNzcyYTJhZWFhYmRjZWZiM2NkNGRlNzMuLmM2MmNiM2FiODU3NDhhNWIwYzg5
ZTU3YjE1Y2YxYzA1NmQ4NzEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
LmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcQogICAgIH0pOwog
fQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3JkcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCkKK3ZvaWQgQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgVVJMJiYgdXJsKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlUmVj
b3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hlICUiIFBSSXU2NCwgcmVxdWVzdElkZW50aWZpZXIs
IGNhY2hlSWRlbnRpZmllcik7CiAgICAgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoc2Vzc2lvbklE
LCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShS
ZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
aAppbmRleCBiYzg4MGY1ZWI1ODlhZWRjZmVlNDVhMjM0MTgzOGIyNTNkYmE2MTA0Li42YTNkZGM2
M2QyYTA4ODVjYTRjNTE0MjVlNTZjM2E1Y2M5NjgzYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24uaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdAog
ICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZW1vdmVSZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlcyhQQUw6
OlNlc3Npb25JRCwgdWludDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlmaWVyLCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJiwgdWludDY0X3QgdXBkYXRlQ291bnRlcik7CiAKLSAgICB2b2lkIHJldHJp
ZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYpOworICAgIHZvaWQgcmV0cmll
dmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1Jl
Y29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpD
YWNoZVF1ZXJ5T3B0aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZl
Y3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGUzMTA3ZTIwMTQ2
ZDU5MDAzYjIwNmIxZGVkZjZmODYzY2I4YzU1ZWUuLjYwZTM5YWEyYzQwNWRjYzk4YWFhOTIwMDk0
YWUxMGQ4ZWFiNTQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbiB7CiAgICAgQ2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbik7CiAgICAgRW5naW5lUmVwcmVzZW50YXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcik7CiAKLSAg
ICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwgdXJs
KTsKKyAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwgdXJsKTsK
ICAgICBEZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRp
b25zIG9wdGlvbnMpOwogICAgIFB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0
b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3JkKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGYx
NWFkNmJkMGFkYzhjNzM1OGMxYTk0OTk4MGQ4NDA5ZTYyODMzYTQuLjAxN2FkNjNlMmM5ZWI3MzM0
NWM1NzYxZDlhYTQ3YmRmZjY5ZTMzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCBhMTU1ZTlmMmUzYWUxMzgxNDQz
YTRhMGNlMGIyNDA3NTdlNGE2OWViLi5kMDY2YTg5NWI5NDA1ODFkZWE4Y2MxM2JhNDQyMzQ1Nzll
NTZkZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBz
dGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9zdGljS2V5KFVzZURl
Y2lzaW9uIGRlY2lzaW9uKQogCiB2b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hl
ZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVXNlRGVjaXNpb24gZGVjaXNpb24pCiB7Ci0gICAg
V2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTCByZXF1ZXN0
VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAoZGVjaXNpb24gPT0gVXNlRGVjaXNpb246OlVz
ZSkgewogICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdl
SUQgJSIgUFJJdTY0ICI6ICVzIGlzIGluIHRoZSBjYWNoZSBhbmQgaXMgdXNlZCIsIHdlYlBhZ2VJ
RCwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFn
ZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5ldHdvcmtDYWNoZUtleSgpLCBX
ZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJldHJpZXZhbEtleSgpLCBXZWJDb3JlOjpE
aWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MsIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6WWVzKTsK
QEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hl
ZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksCiAKIHZvaWQgU3RhdGlz
dGljczo6cmVjb3JkUmV2YWxpZGF0aW9uU3VjY2Vzcyh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0
IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0g
ICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTCByZXF1
ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQ
cm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIHdhcyBzdWNjZXNzZnVsbHkgcmV2YWxp
ZGF0ZWQiLCB3ZWJQYWdlSUQsIHJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwog
CiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFJlc3VsdCh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29y
a0NhY2hlS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6cmV2YWxpZGF0aW5n
S2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0UGFzcywgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlOjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCmluZGV4
IGVmMjUyYTFjN2I5YzZiZDU2ODA5NzMwYzJkMDQ5MzM1MzFmMDRjOWIuLjQzOTIxYTAwMjRlOTdk
ZDM2ZjBkMjIxODUxZWM0YWU5ODc2MWExNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmgKQEAgLTIzLDE1ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnlfaAot
I2RlZmluZSBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeV9oCisjcHJhZ21hIG9uY2UKIAog
I2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKIAogI2lu
Y2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNw
YWNlIE5ldHdvcmtDYWNoZSB7CkBAIC01MCw3ICs0OSw3IEBAIGNsYXNzIFN1YnJlc291cmNlSW5m
byB7CiAgICAgV2FsbFRpbWUgZmlyc3RTZWVuKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFNlZW47
IH0KIAogICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhbnNpZW50
OyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0
IHsgQVNTRVJUKCFtX2lzVHJhbnNpZW50KTsgcmV0dXJuIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7
IH0KKyAgICBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QgeyBBU1NFUlQo
IW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQogICAgIGNv
bnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyBBU1NF
UlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVyczsgfQogICAgIFdlYkNv
cmU6OlJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KCkgY29uc3QgeyBBU1NFUlQoIW1faXNU
cmFuc2llbnQpOyByZXR1cm4gbV9wcmlvcml0eTsgfQogCkBAIC02NSw3ICs2NCw3IEBAIGNsYXNz
IFN1YnJlc291cmNlSW5mbyB7CiAgICAgV2FsbFRpbWUgbV9maXJzdFNlZW47CiAgICAgYm9vbCBt
X2lzVHJhbnNpZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTYW1lU2l0ZSB7IGZhbHNlIH07
Ci0gICAgV2ViQ29yZTo6VVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CisgICAgVVJMIG1fZmly
c3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX3JlcXVlc3RI
ZWFkZXJzOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7CiB9
OwpAQCAtMTA3LDQgKzEwNiwzIEBAIGNsYXNzIFN1YnJlc291cmNlc0VudHJ5IHsKIH0gLy8gbmFt
ZXNwYWNlIE5ldHdvcmtDYWNoZQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQotI2VuZGlmIC8vIE5ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcAppbmRleCA5NjYxNjhiNGUwNzgxMjQ4ZTU1
NjgxZmY0Yjc3N2U2ZTE2MDMwOTQ1Li5iMWMwZmIxMTFiZDViZDYxMTQ4OTk4YjRiOTdhN2YwZjNl
M2NhMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL0JyaWdhbmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODEsOCAr
ODEsNyBAQCBSZXF1ZXN0OjpSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKIAogUmVxdWVzdDo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KCkg
Y29uc3QKIHsKLSAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKHVybCk7Ci0gICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocGFyc2VyLnJlc3VsdCgpLCByZWZlcnJlciwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k+KHBvbGljeSkpOwor
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFVSTCh7IH0sIHVybCksIHJlZmVy
cmVyLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4ocG9s
aWN5KSk7CiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKG1ldGhvZCk7CiAKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpCkBAIC0xMTgsOCArMTE3LDcgQEAgUmVzcG9uc2U6
OlJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiBS
ZXNwb25zZTo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0CiB7Ci0g
ICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcih1cmwpOwotICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UocGFyc2VyLnJlc3VsdCgpLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5n
dGgsIHRleHRFbmNvZGluZ05hbWUpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UoVVJMKHsgfSwgdXJsKSwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2Rp
bmdOYW1lKTsKICAgICByZXNwb25zZS5zZXRIVFRQVmVyc2lvbih2ZXJzaW9uKTsKICAgICByZXNw
b25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOwogICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0
dXNUZXh0KHJlYXNvbik7CkBAIC0xNTIsOCArMTUwLDcgQEAgRXJyb3I6OkVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiBFcnJvcjo6b3BlcmF0b3IgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcigpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcihm
YWlsaW5nVVJMKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKGRvbWFpbiwgZXJy
b3JDb2RlLCBwYXJzZXIucmVzdWx0KCksIGxvY2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlPih0eXBlKSk7CisgICAgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBlcnJvcihkb21haW4sIGVycm9yQ29kZSwgVVJMKHsgfSwgZmFpbGluZ1VSTCks
IGxvY2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZUVycm9y
OjpUeXBlPih0eXBlKSk7CiAKICAgICByZXR1cm4gZXJyb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1h
bmFnZXIuY3BwCmluZGV4IDI3Njg5ZWUzYjcyMzk4ZDg1MTIwZjczNjM1N2MwMDcyNDIyODllOGUu
LmQ1NjVhNGVhMzc3MWU0NjM3OTczZjcxOWNhMTk4YTI4YzU1N2UwZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2Fw
dHVyZU1hbmFnZXIuY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2Fw
dHVyZUxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDxs
aW1pdHM+CiAjaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE0Niw3ICsxNDYsNyBA
QCBSZXNvdXJjZSogTWFuYWdlcjo6ZmluZEJlc3RGdXp6eU1hdGNoKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogICAgIFJlc291cmNlKiBiZXN0TWF0Y2ggPSBudWxs
cHRyOwogICAgIGludCBiZXN0U2NvcmUgPSBrTWluTWF0Y2g7Ci0gICAgY29uc3QgYXV0byYgcmVx
dWVzdFBhcmFtZXRlcnMgPSBXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0o
dXJsLnF1ZXJ5KCkpOworICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RQYXJhbWV0ZXJzID0gV1RGOjpV
UkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkpOwogICAgIGZvciAoYXV0
byBpUmVzb3VyY2UgPSBsb3dlcjsgaVJlc291cmNlICE9IHVwcGVyOyArK2lSZXNvdXJjZSkgewog
ICAgICAgICBpbnQgdGhpc1Njb3JlID0gZnV6enlNYXRjaFVSTHModXJsLCByZXF1ZXN0UGFyYW1l
dGVycywgaVJlc291cmNlLT51cmwoKSwgaVJlc291cmNlLT5xdWVyeVBhcmFtZXRlcnMoKSk7CiAg
ICAgICAgIC8vIFRPRE86IENvbnNpZGVyIGlnbm9yaW5nIGFueSBtYXRjaGVzIDwgMCBhcyBiZWlu
ZyB0b28gZGlmZmVyZW50LgpAQCAtMTY1LDcgKzE2NSw3IEBAIFJlc291cmNlKiBNYW5hZ2VyOjpm
aW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogLy8gVE9ETzogQ29udmVydCB0byBhbiBpbnRlcmZhY2UgYmFzZWQgb24gUmVzb3VyY2VSZXF1
ZXN0IHNvIHRoYXQgd2UgY2FuIGRvCiAvLyBkZWVwZXIgbWF0Y2hpbmcuCiAKLWludCBNYW5hZ2Vy
OjpmdXp6eU1hdGNoVVJMcyhjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdl
YkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkxQYXJzZXI6OlVS
TEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpCitpbnQgTWFuYWdlcjo6ZnV6enlNYXRj
aFVSTHMoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5j
b2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBVUkwmIHJlc291cmNlVVJMLCBjb25z
dCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNlUGFyYW1ldGVycykKIHsK
ICAgICAvLyBUT0RPOiBjb25zaWRlciByZXF1aXJpbmcgdGhhdCBhbnkgdHJhaWxpbmcgc3VmZml4
ZXMgKGUuZy4sICIuanMiLAogICAgIC8vICIucG5nIiwgIi5jc3MiLCAiLmh0bWwiLCBldGMuKSBz
aG91bGQgYmUgYW4gZXhhY3QgbWF0Y2guCkBAIC00MTksNyArNDE5LDcgQEAgU3RyaW5nIE1hbmFn
ZXI6Omhhc2hUb1BhdGgoY29uc3QgU3RyaW5nJiBoYXNoKQogICAgIHJldHVybiBwYXRoOwogfQog
Ci1TdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgV2ViQ29y
ZTo6VVJMJiB1cmwpCitTdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4o
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHVybC5wcm90b2NvbEhvc3RBbmRQb3J0KCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0
d29ya0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1
cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKaW5kZXggM2M2YjUwMTBkYTIzNDFlNjgyY2IxY2Ey
NDAxYTA2NjBmMzljNzQxYS4uYzM2ODE2YzlhODlhMWM3ZWZhZDEwNGYxYjAzOTA4ODM2ZGNhN2Yz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04Miw3ICs4Miw3IEBAIGNsYXNz
IE1hbmFnZXIgewogICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgb3BlbkNhY2hlRmlsZShjb25zdCBT
dHJpbmcmLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUpOwogCiAgICAgU3RyaW5n
IHJlcXVlc3RUb1BhdGgoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgc3Rh
dGljIFN0cmluZyB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbihjb25zdCBXZWJDb3JlOjpVUkwm
KTsKKyAgICBzdGF0aWMgU3RyaW5nIHVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0IFVS
TCYpOwogCiBwcml2YXRlOgogICAgIE1hbmFnZXIoKSA9IGRlZmF1bHQ7CkBAIC05MCw3ICs5MCw3
IEBAIGNsYXNzIE1hbmFnZXIgewogCiAgICAgUmVzb3VyY2UqIGZpbmRFeGFjdE1hdGNoKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIFJlc291cmNlKiBmaW5kQmVzdEZ1enp5
TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgaW50IGZ1enp5TWF0
Y2hVUkxzKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJM
UGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVxdWVzdFBhcmFtZXRlcnMsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVzb3VyY2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZv
cm0mIHJlc291cmNlUGFyYW1ldGVycyk7CisgICAgaW50IGZ1enp5TWF0Y2hVUkxzKGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXF1
ZXN0UGFyYW1ldGVycywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCwgY29uc3QgV1RGOjpVUkxQYXJz
ZXI6OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpOwogCiAgICAgdm9pZCBsb2Fk
UmVzb3VyY2VzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcAppbmRleCA3MDRjMGQ2
YWQ0ZjY2YTBjM2NhYjNiYWYzZTk5NTYxZDg4ODRmMDQ1Li5mM2RjMjNjNTcwNjk0ZWYzYmJmMjVi
YmJhMzIzNTFjZDgwZjc0MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIFJlc291cmNlOjpSZXNvdXJjZShjb25zdCBTdHJpbmcmIGV2ZW50RmlsZVBh
dGgpCiB7CiB9CiAKLWNvbnN0IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6OnVybCgpCitjb25zdCBV
UkwmIFJlc291cmNlOjp1cmwoKQogewogICAgIGlmICghbV91cmwuaXNWYWxpZCgpKSB7CiAgICAg
ICAgIGF1dG8gZXZlbnRzID0gZXZlbnRTdHJlYW0oKTsKQEAgLTUyLDggKzUyLDcgQEAgY29uc3Qg
V2ViQ29yZTo6VVJMJiBSZXNvdXJjZTo6dXJsKCkKICAgICAgICAgICAgIERFQlVHX0xPR19FUlJP
UigiRXZlbnQgc3RyZWFtIGRvZXMgbm90IGhhdmUgYSByZXF1ZXN0U2VudCBldmVudDogZmlsZSA9
ICIgU1RSSU5HX1NQRUNJRklFUiwgREVCVUdfU1RSKG1fZXZlbnRGaWxlUGF0aCkpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gcmVxdWVzdFNlbnRFdmVudCA9IFdURjo6Z2V0PFJl
cXVlc3RTZW50RXZlbnQ+KCpldmVudCk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkxQYXJzZXIg
cGFyc2VyKHJlcXVlc3RTZW50RXZlbnQucmVxdWVzdC51cmwpOwotICAgICAgICAgICAgbV91cmwg
PSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgICAgICBtX3VybCA9IFVSTCh7IH0sIHJlcXVlc3RT
ZW50RXZlbnQucmVxdWVzdC51cmwpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02OCwxMCArNjcs
MTAgQEAgY29uc3QgU3RyaW5nJiBSZXNvdXJjZTo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4o
KQogICAgIHJldHVybiBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluOwogfQogCi1XZWJDb3Jl
OjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpxdWVyeVBhcmFtZXRlcnMoKQor
V1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpxdWVyeVBhcmFtZXRlcnMo
KQogewogICAgIGlmICghbV9xdWVyeVBhcmFtZXRlcnMpCi0gICAgICAgIG1fcXVlcnlQYXJhbWV0
ZXJzID0gV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHVybCgpLnF1ZXJ5
KCkpOworICAgICAgICBtX3F1ZXJ5UGFyYW1ldGVycyA9IFdURjo6VVJMUGFyc2VyOjpwYXJzZVVS
TEVuY29kZWRGb3JtKHVybCgpLnF1ZXJ5KCkpOwogCiAgICAgcmV0dXJuICptX3F1ZXJ5UGFyYW1l
dGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCmluZGV4IDc1NzZjMGQ1ZTAwODQ4OTE2
MmMxOGM5NjYwNGZlM2EzODdmMzllNWUuLmQ0OTNmNGE0YTM1YWQ4ZWE2Y2RiMmRkOGUwMjVkNjkw
YzU4OTI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaApAQCAtMjksOSArMjksOSBAQAog
CiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1cmVFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9V
UkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5h
bWVzcGFjZSBOZXR3b3JrQ2FwdHVyZSB7CkBAIC01NSwxNiArNTUsMTYgQEAgY2xhc3MgUmVzb3Vy
Y2UgewogcHVibGljOgogICAgIFJlc291cmNlKGNvbnN0IFN0cmluZyYgZXZlbnRGaWxlUGF0aCk7
CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsKCk7
CiAgICAgY29uc3QgU3RyaW5nJiB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbigpOwotICAgIFdl
YkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0gcXVlcnlQYXJhbWV0ZXJzKCk7CisgICAg
V1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIHF1ZXJ5UGFyYW1ldGVycygpOwogICAgIEV2
ZW50U3RyZWFtIGV2ZW50U3RyZWFtKCk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZXZlbnRG
aWxlUGF0aDsKLSAgICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFN0
cmluZyBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluOwotICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybT4gbV9xdWVyeVBhcmFtZXRlcnM7CisgICAg
c3RkOjpvcHRpb25hbDxXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0+IG1fcXVlcnlQYXJh
bWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhcHR1cmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCmluZGV4IGU1YWY0ZjgzZjFiNTAxYjhiM2Q4YTFiYzU3YzlkNzM5MDVmYzk5MTcuLjgw
YjE0MDM0NzdhNTM5YjZhMGQxY2JiOWE0ZWFiOGJlNWZlM2RkZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgfQog
ICAgIAogICAgIC8vIFNob3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBmcm9t
IGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1cmUgb25lLgotICAgIGlmIChtX3Nob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9j
b2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVy
KCksICJodHRwcyIpKQorICAgIGlmIChtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXVEY6OnBy
b3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikpCiAgICAgICAgIHJlcXVl
c3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAKICAgICBjb25zdCBhdXRvJiB1cmwgPSByZXF1
ZXN0LnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDdmMThjMDU2ZjFhMDVkMmY5MDEwZTRh
Yjg3NTFlMTM0N2M4MmE2ZWIuLjI3MDU5MjVkODczMDhiOGEyYTY0NzAyOWRmZDc4Yzc2OTVmMWRk
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTQ2LDEyICs0NiwxMiBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVVUkxSZXNwb25zZS5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmls
ZWdlLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
QEAgLTM0OCw3ICszNDgsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNl
c3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlkUmVjZQogICAgICAgICAgICAg
aWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lz
dGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpLmlzUGFzc3dvcmRCYXNlZCgpKSB7CiAKICAgICAgICAgICAgICAgICBXZWJDb3JlOjpDcmVk
ZW50aWFsIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVkZW50
aWFsLnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwotICAg
ICAgICAgICAgICAgIFdlYkNvcmU6OlVSTCB1cmxUb1N0b3JlOworICAgICAgICAgICAgICAgIFVS
TCB1cmxUb1N0b3JlOwogICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAgICAgICAgICAg
ICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNw
b25zZSgpLnVybCgpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9uID0g
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9j
ZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tCmluZGV4IDQwMmVjMWRlMDE5NjJmMGNjZjQyMDQyOTU3MjM3OTFmN2M2NTcyYTAuLmY1
Y2MxYzFlMGFjNmRhODQyOTJjNDhiNDcxYjA4Yzg3YmYyOThlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTIxNSwx
MSArMjE1LDExIEBAIHN0YXRpYyB2b2lkIGNhcmJvbldpbmRvd0hpZGRlbihXaW5kb3dSZWYgd2lu
ZG93KQogc3RhdGljIGJvb2wgb3BlbkNGVVJMUmVmKENGVVJMUmVmIHVybCwgaW50MzJfdCYgc3Rh
dHVzLCBDRlVSTFJlZiogbGF1bmNoZWRVUkwpCiB7CiAgICAgU3RyaW5nIGxhdW5jaGVkVVJMU3Ry
aW5nOwotICAgIGlmICghUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkub3BlblVSTChXZWJDb3Jl
OjpVUkwodXJsKS5zdHJpbmcoKSwgc3RhdHVzLCBsYXVuY2hlZFVSTFN0cmluZykpCisgICAgaWYg
KCFQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5vcGVuVVJMKFVSTCh1cmwpLnN0cmluZygpLCBz
dGF0dXMsIGxhdW5jaGVkVVJMU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKCFsYXVuY2hlZFVSTFN0cmluZy5pc051bGwoKSAmJiBsYXVuY2hlZFVSTCkKLSAgICAgICAg
KmxhdW5jaGVkVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBsYXVuY2hlZFVSTFN0
cmluZykuY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7CisgICAgICAgICpsYXVuY2hlZFVSTCA9IFVS
TChVUkwoKSwgbGF1bmNoZWRVUkxTdHJpbmcpLmNyZWF0ZUNGVVJMKCkubGVha1JlZigpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0zOTksNyArMzk5LDcgQEAgc3RhdGljIE5TUnVubmluZ0Fw
cGxpY2F0aW9uICpyZXBsYWNlZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0
aW9uc18KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0
b24oKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFdlYkNvcmU6OlVSTCh1cmwpLnN0cmluZygpLCBh
cmd1bWVudHMpKSB7CisgICAgaWYgKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmxhdW5jaEFw
cGxpY2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5nKCksIGFyZ3VtZW50cykpIHsKICAgICAgICAg
aWYgKGVycm9yKQogICAgICAgICAgICAgKmVycm9yID0gbmlsOwogICAgICAgICByZXR1cm4gbmls
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IDdiMDFkMGU5MjA1NjI4Y2QzYzAwMmVm
NTdlZjExZTgxNGRjY2NiOTEuLmJiZDQyM2JjZjU3MTVlNGFkNzBiZjUyZGVmOGMyYzMwYzQxYmYw
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTIzLDMyICsyMywzMSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJMX2gK
LSNkZWZpbmUgV2ViVVJMX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAg
IHN0YXRpYyBSZWY8QVBJOjpVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKHN0cmluZykpOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8VVJMPiBjcmVhdGUoY29uc3QgVVJMKiBiYXNlVVJMLCBjb25zdCBX
VEY6OlN0cmluZyYgcmVsYXRpdmVVUkwpCisgICAgc3RhdGljIFJlZjxBUEk6OlVSTD4gY3JlYXRl
KGNvbnN0IEFQSTo6VVJMKiBiYXNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgcmVsYXRpdmVVUkwp
CiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwtPnBhcnNl
VVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZl
VVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpV
Ukw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwpOwogICAgICAgICBj
b25zdCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxTdHJpbmcgPSBhYnNvbHV0ZVVSTC0+c3RyaW5n
KCk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKFdURk1vdmUoYWJzb2x1dGVV
UkwpLCBhYnNvbHV0ZVVSTFN0cmluZykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBB
UEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJzb2x1dGVVUkxTdHJpbmcpKTsKICAgICB9
CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9
CkBAIC01Niw3ICs1NSw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6
VHlwZTo6VVJMPiB7CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KIAotICAgIHN0YXRpYyBib29sIGVxdWFscyhjb25zdCBVUkwmIGEs
IGNvbnN0IFVSTCYgYikKKyAgICBzdGF0aWMgYm9vbCBlcXVhbHMoY29uc3QgQVBJOjpVUkwmIGEs
IGNvbnN0IEFQSTo6VVJMJiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGEudXJsKCkgPT0gYi51
cmwoKTsKICAgICB9CkBAIC0xMDYsMTMgKzEwNSwxMyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMgT2Jq
ZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICB9CiAKLSAgICBVUkwoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJMLCBjb25zdCBXVEY6OlN0cmluZyYg
c3RyaW5nKQorICAgIFVSTChzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpVUkw+IHBhcnNlZFVSTCwgY29u
c3QgV1RGOjpTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCiAgICAg
ICAgICwgbV9wYXJzZWRVUkwoV1RGTW92ZShwYXJzZWRVUkwpKQogICAgIHsKICAgICB9CiAKLSAg
ICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0CisgICAgY29uc3QgV1RGOjpVUkwmIHVy
bCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5KCk7CiAgICAgICAg
IHJldHVybiAqbV9wYXJzZWRVUkw7CkBAIC0xMjIsMTMgKzEyMSwxMSBAQCBjbGFzcyBVUkwgOiBw
dWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgaWYg
KG1fcGFyc2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3BhcnNlZFVSTCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPihXZWJDb3JlOjpVUkwoKSwgbV9zdHJpbmcp
OworICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KFdURjo6
VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBtX3N0cmluZzsKLSAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpVUkw+IG1fcGFyc2VkVVJMOworICAg
IG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdURjo6VVJMPiBtX3BhcnNlZFVSTDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVJMX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRleCA5YjVjN2Y2
NmI0OGI4YTk2YmRkMmRjYmU4OWNhOTBhMTIzZDMwNmFhLi42Njk5NWEwYTg4NTI2YmFjNTNhYjdk
MWNjNTk2MTVhMzIwMjE5ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBBUEkgewogCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0
dGVybiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250
CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4u
aG9zdCgpOyB9CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHNjaGVtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF0dGVybi5zY2hlbWUoKTsgfQogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF0dGVybi5pc1ZhbGlkKCk7IH07Ci0gICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0IFdURjo6
U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdlYkNvcmU6OlVS
TCh7IH0sIHVybCkpOyB9CisgICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0IFdURjo6U3RyaW5nJiB1
cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdURjo6VVJMKHsgfSwgdXJsKSk7
IH0KICAgICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJu
Lm1hdGNoU3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgcGF0dGVyblN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggNzM2ZTFmM2U2NjQ1Y2UwZWMyMTJm
NmRiOWY4Nzg0M2Q1Y2QxM2RhNS4uMTQ5OTU2M2UzOWFlN2I5ODZkZTE3MzQ3Njc4ODVmNmFhZDky
OGQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCkBA
IC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRGF0YS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS1VSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVz
cG9uc2UuY3BwCmluZGV4IGI4YThhOTBiY2QzYzM0NWNkNDc1NjUyNzczMTQzMmNmY2EwMTdjODcu
LjhmMWZhOWFkNmUzNmU5OGFjNDEzZWJhOWVmOTU1M2NhZDQwNjM4Y2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJBUElVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9j
Zi9XS1VSTENGLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQpp
bmRleCBkZjE5ODNhNjAxNTBkZDdlYWRiYWU4M2QzODgyOGFiYWE3ODBlMGFlLi5iZDkxYTQ1YjA5
YzMxNGVmZjM2MzA1MWNjYjg4MTViZGNiYjZkYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL2NmL1dLVVJMQ0YubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2ltcG9ydCAiV0tBUElDYXN0
LmgiCiAjaW1wb3J0ICJXS05TVVJMLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0NGVVJMRXh0cmFzLmg+
CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9jZi9DRlVSTEV4dHJhcy5o
PgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKQEAg
LTU2LDcgKzU2LDcgQEAgV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoQ0ZVUkxSZWYgY2ZV
UkwpCiAjZW5kaWYKIAogICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgV2ViQ29yZTo6Z2V0VVJM
Qnl0ZXMoY2ZVUkwsIHVybEJ5dGVzKTsKKyAgICBXVEY6OmdldFVSTEJ5dGVzKGNmVVJMLCB1cmxC
eXRlcyk7CiAKICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSSh1cmxCeXRlcy5kYXRh
KCkpOwogfQpAQCAtNjksNSArNjksNSBAQCBDRlVSTFJlZiBXS1VSTENvcHlDRlVSTChDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVSTFJlZikKICAgICAvLyBVVEYtOCB3aGlj
aCB1c2VzIGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0IFdlYktpdCBjbGllbnRzIG1pZ2h0IGV4cGVj
dC4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gV2ViS2l0Ojp0b0ltcGwoVVJMUmVmKS0+c3RyaW5n
KCkudXRmOCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpLCAwKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdU
Rjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5sZW5ndGgoKSwg
MCkubGVha1JlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCA5ZmU1OTU3MjA0Y2M3OTkzZWJjMDg4ODhiZDFmODkz
MWVhNGViMDAxLi4zMWY2MWNlN2VhZjhiOWE5OWNiYWFkN2RkMDUzNzVkYTgxYTI1YmM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNw
cApAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3QuaCIKIAogI2lu
Y2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5p
cXVlUHRyU291cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3Rm
L2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwCmluZGV4IGQyNDU1ODkzNmNmNDYw
NzU1NTcxMmExNmM5NGZkNDYxZWMwOThhMjMuLjI4N2VlZmQ0ZDljY2Y0MDAzNjczZGU5N2I4OGQz
YzJkNjNjMjM0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dl
YktpdFVSSVJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXNwb25zZS5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJXZWJLaXRV
UklSZXNwb25zZS5oIgogCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4t
bGliLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGRjMGY5
MGYwZjM4NTFhYmYxMDA0ODRiYTU3M2FlNGFmOGU4MGIyMzIuLmJjMmZlNDllMzBhYTM4MmI0MjNi
NTRkYjJiYWQ3MmJiN2Y5N2VlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJB
cmNoaXZlUmVzb3VyY2UubW0KQEAgLTMwLDggKzMwLDggQEAKIAogI2luY2x1ZGUgIkFQSURhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ2LDgg
KzQ2LDggQEAgUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBhcmMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJBcmNoaXZlUmVzb3VyY2UoV1RGTW92ZShhcmNoaXZlUmVzb3VyY2UpKSk7CiB9CiAKLVdl
YkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6RGF0YSogZGF0YSwgY29u
c3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nKQotICAgIDogbV9hcmNoaXZlUmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKSwgV2Vi
Q29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBVUkwpLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nLCBT
dHJpbmcoKSkpCitXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShBUEk6OkRh
dGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZykKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEt
PnNpemUoKSksIFdURjo6VVJMKFdURjo6VVJMKCksIHVybCksIE1JTUVUeXBlLCB0ZXh0RW5jb2Rp
bmcsIFN0cmluZygpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uLmgKaW5kZXggNDMzNjM4Yjk0OGRmMDk3OGFiM2MxYmQxYmExYTNiNzQx
ZGRmYTZhZi4uZDg2ZGM0YWI3NTBiZjgxY2Y5ZTM2NDNhZTY2OTRmY2IzMjQ3ZjI1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCkBAIC0zMSw3
ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVj
dCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIGJvb2wg
YWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIHsgZmFsc2UgfTsKICAgICBib29sIGlz
QXV0b2ZpbGxhYmxlVXNlcm5hbWVGaWVsZCB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6VVJMIHJl
cHJlc2VudGluZ1BhZ2VVUkw7CisgICAgVVJMIHJlcHJlc2VudGluZ1BhZ2VVUkw7CiAgICAgV2Vi
Q29yZTo6QXV0b2ZpbGxGaWVsZE5hbWUgYXV0b2ZpbGxGaWVsZE5hbWUgeyBXZWJDb3JlOjpBdXRv
ZmlsbEZpZWxkTmFtZTo6Tm9uZSB9OwogICAgIFN0cmluZyBwbGFjZWhvbGRlcjsKICAgICBTdHJp
bmcgbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJM
RXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbQpp
bmRleCAwMTg4Zjc0Nzk4MmE5NDBhNDhhYjg2ZjgyODhhYWIwMDZkZmQxMWQ3Li41MTliOWQ4M2Vk
NzY2MWRjNmQ4N2Q2MjllN2M4Yzg1NWIwZWYyYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1dLTlNVUkxFeHRyYXMubW0KQEAgLTI2LDEzICsyNiwxMSBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvQ0ZV
UkxFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CisjaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQogQGltcGxlbWVudGF0aW9uIE5TVVJMIChXS0V4dHJhcykKIAogKyAoaW5zdGFu
Y2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcKQEAgLTUw
LDcgKzQ4LDcgQEAgKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3Qg
U3RyaW5nJilzdHJpbmcgcmVsYXRpdmVUb1VSTDooTlNVUkwKIC0gKFN0cmluZylfd2ViX29yaWdp
bmFsRGF0YUFzV1RGU3RyaW5nCiB7CiAgICAgQ1N0cmluZyBvcmlnaW5hbERhdGE7Ci0gICAgZ2V0
VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXNlbGYsIG9yaWdpbmFsRGF0YSk7CisgICAgV1RG
OjpnZXRVUkxCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpc2VsZiwgb3JpZ2luYWxEYXRhKTsKICAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChvcmlnaW5hbERhdGEpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IDlkY2Y2ZjJlMWQ3MTUzM2FkNjQ1ZGY2M2RiZjI0MjI2
NTc4NGI4YWYuLjUzY2UyZDFhZjA2ZDI1MWM4MDU1YmQyYWQ1MjdmYWE0Njc2ZWU5YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGUg
ewogc3RydWN0IFNlc3Npb25TdGF0ZSB7CiAgICAgQmFja0ZvcndhcmRMaXN0U3RhdGUgYmFja0Zv
cndhcmRMaXN0U3RhdGU7CiAgICAgdWludDY0X3QgcmVuZGVyVHJlZVNpemU7Ci0gICAgV2ViQ29y
ZTo6VVJMIHByb3Zpc2lvbmFsVVJMOworICAgIFVSTCBwcm92aXNpb25hbFVSTDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcAppbmRleCBkZjk3MzUwZTAzMGM5ODIzNWJhM2JhZTRhZDVjYjA1NjVj
OTRlNjc1Li5hOTE5NjkyZjY5YzIzYjcxMzM1NjY1OWFkMzA0NWQwM2YwZmU5OWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMjcs
OCArMjcsOCBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKIAogI2luY2x1
ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTA0LDggKzEwNCw4IEBAIGJvb2wgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9jdW1lbnQoY29uc3QgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYKICAgICBpZiAobWFpbkZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhIHx8IG90aGVy
TWFpbkZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhKQogICAgICAgICByZXR1cm4gbWFpbkZyYW1l
U3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlciA9PSBvdGhlck1haW5GcmFtZVN0YXRlLmRvY3Vt
ZW50U2VxdWVuY2VOdW1iZXI7CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsID0gV2ViQ29yZTo6VVJM
KHsgfSwgbWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKLSAgICBXZWJDb3JlOjpVUkwgb3RoZXJV
UkwgPSBXZWJDb3JlOjpVUkwoeyB9LCBvdGhlck1haW5GcmFtZVN0YXRlLnVybFN0cmluZyk7Cisg
ICAgVVJMIHVybCA9IFVSTCh7IH0sIG1haW5GcmFtZVN0YXRlLnVybFN0cmluZyk7CisgICAgVVJM
IG90aGVyVVJMID0gVVJMKHsgfSwgb3RoZXJNYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcpOwogCiAg
ICAgaWYgKCh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgfHwgb3RoZXJVUkwuaGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBv
dGhlclVSTCkpCiAgICAgICAgIHJldHVybiBtYWluRnJhbWVTdGF0ZS5kb2N1bWVudFNlcXVlbmNl
TnVtYmVyID09IG90aGVyTWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGU1
MDdiZjg3NTliMTE3ODkwODZlNTBkN2YwNmM1N2RkODM4MGE0ZjYuLjM5NWVhNzU4ZDAzYzFhMDcx
NjBhNmIzNWZmZWRhZTI4MmY5YjgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzcsMTEgKzc3LDExIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5k
b3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAppbmRleCAzZWViNDQyZTMyN2RjNzkxMmI0M2M0OTYzNmE2NTc0Y2Y5YmM0NmNlLi45
NTQ1MGY0MTFjN2ZiYTAzYzFlZDc2MTA1OWZkYmEzM2JhMDJlNWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtOTMsNyArOTMsNiBAQCBjbGFz
cyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBjbGFzcyBUZXh0Q2hlY2tpbmdS
ZXF1ZXN0RGF0YTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgVXNlclN0eWxl
U2hlZXQ7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0aW9uczsKIHN0cnVjdCBD
b21wb3NpdGlvblVuZGVybGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkVycm9ycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKaW5kZXggMjdkMTRl
MzFiMzEwODY2YzZmMTM2ZTNhZDhhYWZmODhlMjNiMzg0Mi4uN2Q2MDBjNmQyM2I1NWRjYzM5NjMw
OTkwNDA3Y2U3NDQ0NDZjYjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
RXJyb3JzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKQEAgLTI4LDcg
KzI4LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTQ4LDE4ICs0NywxOCBAQCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlcwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFVSTCYpOwogCiAjaWYgVVNFKFNPVVApCi1XZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFdURjo6U3RyaW5nJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0
d29ya0Vycm9yKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdURjo6U3Ry
aW5nJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLVdlYkNvcmU6OlJlc291cmNlRXJy
b3IgcHJpbnRFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYpOwot
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJvcihjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQo
Y29uc3QgV2ViQ29yZTo6VVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHByaW50RXJyb3Io
Y29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3Ig
cHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgVVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGNvbnN0IFVSTCYpOwogI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVz
dFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERh
dGEuY3BwCmluZGV4IDE3OWNhNGJlMzdiZWQwZTNkY2NiNWQzMjYzZjNmMDY5YjA1MjU1NWIuLmMx
Y2ZjY2YwNWY4NDIwYWMzYjljMjRkYzU3Zjk4NWY3MjI2MzdjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL05vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9V
UkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCBlM2YzMDU2NjY4NjMwYTRiNWFmZWI5ODRjOWRl
NGRlZGU1MDE1YzBiLi4yZWQ3NzQ0YjA4ZGY4ZmJlOWFjNzJmZDQ3NDc2NGUxY2U2ZDcyNzhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcApAQCAtMzEs
OSArMzEsOSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ0ZVUkxFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKICNpZiBVU0UoRk9VTkRBVElPTikKQEAgLTU5OSw4ICs1
OTksOCBAQCB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDRlVSTFJlZiB1cmwpCiAgICAg
aWYgKGJhc2VVUkwpCiAgICAgICAgIGVuY29kZShlbmNvZGVyLCBiYXNlVVJMKTsKIAotICAgIFVS
TENoYXJCdWZmZXIgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7Cisg
ICAgV1RGOjpVUkxDaGFyQnVmZmVyIHVybEJ5dGVzOworICAgIFdURjo6Z2V0VVJMQnl0ZXModXJs
LCB1cmxCeXRlcyk7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXJsQnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6
ZSgpKTsKICAgICBlbmNvZGVyIDw8IGRhdGFSZWZlcmVuY2U7CiB9CkBAIC02MzEsNyArNjMxLDcg
QEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPENGVVJMUmVmPiYgcmVz
dWx0KQogICAgIH0KICNlbmRpZgogCi0gICAgcmVzdWx0ID0gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVy
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJ5dGVzLmRhdGEoKSksIHVybEJ5dGVz
LnNpemUoKSwgYmFzZVVSTC5nZXQoKSk7CisgICAgcmVzdWx0ID0gV1RGOjpjcmVhdGVDRlVSTEZy
b21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJsQnl0ZXMuZGF0YSgpKSwg
dXJsQnl0ZXMuc2l6ZSgpLCBiYXNlVVJMLmdldCgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwCmluZGV4IGU5ZDkyMzkz
YzdkNWM2YjNhYmYzZjlmNDRhMDdmNDFhMDA4NDYwZTguLjZhMGRmNTRjMzc0NDVkZjY0Y2M1ZDNi
NGJiNjEwZWMxZjNjMDY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9X
ZWJFcnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNH
dGsuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAKICNpbmNs
dWRlICJBUElFcnJvci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8Z2xp
Yi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4IDNk
MDg2ODlmZTE3NmRkN2E2MTcyYTEzN2MwNTgzZGNlYTczNzJmNjMuLmMxYWI4NWZkNDQxYmMxMjgw
NzU0NjYwOTQwOTY4ZjczNmE4ZjY2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VsZWN0aW9uUmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDggKzYw
LDggQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIHsKICAgICBib29s
IHByZXZlbnRUZXh0SW50ZXJhY3Rpb24geyBmYWxzZSB9OwogI2VuZGlmCiAgICAgV2ViQ29yZTo6
RmxvYXRQb2ludCBhZGp1c3RlZFBvaW50Rm9yTm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzOwot
ICAgIFdlYkNvcmU6OlVSTCB1cmw7Ci0gICAgV2ViQ29yZTo6VVJMIGltYWdlVVJMOworICAgIFVS
TCB1cmw7CisgICAgVVJMIGltYWdlVVJMOwogICAgIFN0cmluZyB0aXRsZTsKICAgICBTdHJpbmcg
aWRBdHRyaWJ1dGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKaW5kZXggYmIwZDFjYjYz
ZDQxZjJlN2JjMzZiYTlmNWQ1ZGFlNWU0MDgxMTU5Mi4uOTBmZGU3ZDA0YjI3MzA1YTQ2NDM2MTQx
YmRiNzdlMTAwNGJkZDA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmUuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKIHN0cnVjdCBDb29raWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcApp
bmRleCA2OGI4N2Q4ODdmZTYzNDJmMGY1MWM5NDMxMmVhMGY0YmNlMTJiZjZhLi45MzJiNjI2Nzc3
ZjBhZjBhYjU0ZjY0N2JkODFiZmY0Nzg0MzljN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTmF2aWdh
dGlvbjo6c2V0Q3VycmVudFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUHJvY2Vz
c0lkZW50aWZpZXIKICAgICBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIgPSBwcm9j
ZXNzSWRlbnRpZmllcjsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVS
TChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgTmF2aWdhdGlvbjo6YXBwZW5kUmVkaXJl
Y3Rpb25VUkwoY29uc3QgV1RGOjpVUkwmIHVybCkKIHsKICAgICBpZiAobV9yZWRpcmVjdENoYWlu
LmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHVybCkKICAgICAgICAgbV9y
ZWRpcmVjdENoYWluLmFwcGVuZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uLmgKaW5kZXggOTdlZTk2ZGRkNmU0N2ExOWFjZGMyZjI4NDhmN2E3NjI5N2Jk
ZDFmMi4uZWQwMjk0ZDgyODdlY2Q4NjZiYTZlOTNiODFjNTNmMGI0NGI4NDlkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCkBAIC03Nyw4ICs3Nyw4IEBA
IGNsYXNzIE5hdmlnYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmln
YXRpb24+IHsKICAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKCkg
Y29uc3QgeyByZXR1cm4gbV9mcm9tSXRlbS5nZXQoKTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVMb2FkVHlwZT4gYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7IH0KIAotICAgIHZvaWQgYXBwZW5kUmVk
aXJlY3Rpb25VUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlVS
TD4gdGFrZVJlZGlyZWN0Q2hhaW4oKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVkaXJlY3RDaGFpbik7
IH0KKyAgICB2b2lkIGFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0IFdURjo6VVJMJik7CisgICAg
VmVjdG9yPFdURjo6VVJMPiB0YWtlUmVkaXJlY3RDaGFpbigpIHsgcmV0dXJuIFdURk1vdmUobV9y
ZWRpcmVjdENoYWluKTsgfQogCiAgICAgdm9pZCBzZXRXYXNVc2VySW5pdGlhdGVkKGJvb2wgdmFs
dWUpIHsgbV93YXNVc2VySW5pdGlhdGVkID0gdmFsdWU7IH0KICAgICBib29sIHdhc1VzZXJJbml0
aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJJbml0aWF0ZWQ7IH0KQEAgLTExNCw3ICsx
MTQsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpOYXZpZ2F0aW9uPiB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxS
ZXF1ZXN0OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0Owog
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IG1fY3VycmVudFJl
cXVlc3RQcm9jZXNzSWRlbnRpZmllcjsKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBtX3JlZGly
ZWN0Q2hhaW47CisgICAgVmVjdG9yPFdURjo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9v
bCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3Nob3VsZEZvcmNlRG93
bmxvYWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1JlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4
IGVlY2JmZjRhMmEzZWQ5MGY0NDQwOGNjZDZjYWYyOWRlOThkOTUyZDcuLjMwODcxYzdhMDk1NTRk
NWNiOGE3ZWQ0YWI4MmNiYjE0OGNkZTc4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIkFQSVVzZXJJbml0aWF0ZWRBY3Rpb24uaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9u
RGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBBUEkgewog
CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24gZmluYWwgOiBwdWJsaWMg
T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+CiAgICAgc3RkOjpvcHRp
b25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YXJn
ZXRGcmFtZU5hbWU7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQotICAgIGNvbnN0IFdlYkNvcmU6OlVS
TCYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5hbFVSTC5pc051bGwoKSA/
IG1fb3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KKyAgICBjb25zdCBXVEY6OlVSTCYg
b3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5hbFVSTC5pc051bGwoKSA/IG1f
b3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KIAogICAgIFdlYkNvcmU6Ok5hdmlnYXRp
b25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9u
RGF0YS5uYXZpZ2F0aW9uVHlwZTsgfQogICAgIFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVycyBt
b2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVy
czsgfQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIGZpbmFsIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uPgogICAgIE5hdmln
YXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZU5h
dmlnYXRpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktp
dDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFt
ZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0
aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91
bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0
ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKKyAgICBOYXZp
Z2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFy
Z2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFs
VVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+
JiYgdXNlckluaXRpYXRlZEFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0
aW9uKQogICAgICAgICA6IG1fc291cmNlRnJhbWUoc291cmNlRnJhbWUpCiAgICAgICAgICwgbV90
YXJnZXRGcmFtZSh0YXJnZXRGcmFtZSkKICAgICAgICAgLCBtX3RhcmdldEZyYW1lTmFtZSh0YXJn
ZXRGcmFtZU5hbWUpCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24gZmlu
YWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+CiAg
ICAgewogICAgIH0KIAotICAgIE5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBBUEk6OkZyYW1lSW5mbyogc291cmNlRnJh
bWUsIEFQSTo6RnJhbWVJbmZvKiB0YXJnZXRGcmFtZSwgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmlu
Zz4gdGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywg
UmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKKyAgICBO
YXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyog
dGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdp
bmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rp
b24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKICAgICAgICAgOiBOYXZpZ2F0aW9uQWN0aW9uKFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZSwgdGFyZ2V0RnJhbWUsIHRh
cmdldEZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxVUkwsIHNob3VsZE9wZW5B
cHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aW9uKSwgbnVsbHB0cikKICAgICB7CiAg
ICAgfQpAQCAtODksNyArODksNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIGZpbmFsIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uPgogICAgIHN0ZDo6
b3B0aW9uYWw8V1RGOjpTdHJpbmc+IG1fdGFyZ2V0RnJhbWVOYW1lOwogCiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBXZWJDb3JlOjpVUkwgbV9vcmlnaW5hbFVS
TDsKKyAgICBXVEY6OlVSTCBtX29yaWdpbmFsVVJMOwogCiAgICAgYm9vbCBtX3Nob3VsZE9wZW5B
cHBMaW5rczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmgKaW5kZXggNmFkODMzYTYwOTk1Yjg5OWExYjExYzcxYWU5OWM0OTU3YWMyNzI5
MC4uOGU5NDRiN2RlYzRkOWU1ZGU3NGE3NDFjMmFhZWQ3OTk4MzIwMDM5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC05Nyw3
ICs5Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgewogCiAgICAgdmlydHVhbCBSZWZQdHI8
RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4g
bnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U3RyaW5nPiBzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXpl
SW5kZXgsIGNvbnN0IFJlZlB0cjxTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNv
cmU6OlVSTCYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxTdHJpbmc+
IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPFN0cmluZz4mIGNoYWxsZW5nZVN0
cmluZywgY29uc3QgV1RGOjpVUkwmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3Ry
aW5nJiB1dGkpIHsgfQpAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIE5hdmlnYXRpb25DbGllbnQg
ewogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgdm9p
ZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJD
b3JlOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiYp
IHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgV1RGOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiYpIHsgfTsKICAgICAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICAgICB2aXJ0dWFsIGJvb2wgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdJbihXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYpIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0x
MjYsOCArMTI2LDggQEAgY2xhc3MgTmF2aWdhdGlvbkNsaWVudCB7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShXRUJHTCkKLSAgICB2aXJ0dWFsIHZvaWQgd2ViR0xMb2FkUG9saWN5KFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0
aW9uKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7
IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0Ny
ZWF0aW9uKTsgfQorICAgIHZpcnR1YWwgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBjb25zdCBXVEY6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0
aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIGNvbnN0IFdURjo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsg
fQogI2VuZGlmCiAgICAgCiAgICAgdmlydHVhbCBib29sIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYsIGJvb2wgaW5QYWdlQ2FjaGUsIE9iamVjdCopIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGJhMjkwZTA4OTdiOWM3Mjdh
ZjY5NjgyZjI4ZmYzMzQ1MTk1ZDkxNjIuLjgzZGEyOWNjNTJmYzg3MzA5Y2ZjNjVmNDZkNzAxMTBm
MTI5NDY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBA
IC0xNDAsNyArMTQwLDcgQEAgY2xhc3MgVUlDbGllbnQgewogICAgIHZpcnR1YWwgYm9vbCBjYW5S
dW5Nb2RhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1v
ZGFsKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBEYXRh
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIo
V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgV1RGOjpVUkwmLCBEYXRhJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGlu
bmVkU3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCmluZGV4IDc1ODRlNjMxMjEw
MmI1YjBjNTAwN2VhOWI4OGNhYzc4M2I5ZTE0NmMuLjQwMjJlZmRjYjk3YTUwOWY2ZTBlZjg5NWRj
YjY3Mzg2NmFhOWY1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVc2VyU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNl
clNjcmlwdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAKLVdlYkNv
cmU6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCitXVEY6OlVSTCBVc2VyU2Ny
aXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZp
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2Ny
aXB0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCmluZGV4
IDE3YTQwOTA5ODk3Zjc0NGI1MDVhMDQ5MmFjNTA4YzQwNTBiMTMxYzUuLjAzMzMyODIwYjE2MDEx
NDkxNDAzNjE4YjYzN2YzM2RhODE0YjE4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJTY3JpcHQuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQVBJVXNlclNjcmlwdF9oCi0jZGVmaW5l
IEFQSVVzZXJTY3JpcHRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0zNSw3ICszNCw3IEBAIG5hbWVz
cGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8
T2JqZWN0OjpUeXBlOjpVc2VyU2NyaXB0PiwgcHVibGljIElkZW50aWZpZWQ8VXNlclNjcmlwdD4g
ewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsK
KyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKIAogICAgIHN0YXRpYyBS
ZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIGNsYXNz
IFVzZXJTY3JpcHQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVzZXJT
Y3JpcHQ+LCBwdWJsaWMgSWRlCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8v
IEFQSVVzZXJTY3JpcHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
c2VyU3R5bGVTaGVldC5jcHAKaW5kZXggMWQ1OTViYjE1ODhkOWY3ZDVkNDhmZDkyMWNkMWRkOTY2
YjNmODZhZi4uM2VhNDYxZmUxYTE1NmM2YTlkNTg5NTg0MDM3ZmUzODdjMjkwN2YwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1XZWJDb3JlOjpVUkwgVXNlclN0
eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKK1dURjo6VVJMIFVzZXJTdHlsZVNoZWV0Ojpn
ZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVl
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKaW5k
ZXggZDg1NmY3YTUyZjliNTA0ZTBmYTQyM2VhOWEzYjZlMTU3MTQ1MWVkZS4uNzViYjk1YWZlYWM4
ZjhmMWU4MjIzMzVmMjkzZTk4Mzg3YjVkNzYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSVVzZXJTdHlsZVNo
ZWV0X2gKLSNkZWZpbmUgQVBJVXNlclN0eWxlU2hlZXRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0z
NSw3ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5h
bCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclN0eWxlU2hlZXQ+LCBwdWJs
aWMgSWRlbnRpZmllZDxVc2VyU3R5bGVTaGVldD4gewogcHVibGljOgotICAgIHN0YXRpYyBXZWJD
b3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKKyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJh
dGVVbmlxdWVVUkwoKTsKIAogICAgIHN0YXRpYyBSZWY8VXNlclN0eWxlU2hlZXQ+IGNyZWF0ZShX
ZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpVc2VyQ29udGVudFdv
cmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIGNsYXNzIFVzZXJTdHlsZVNoZWV0
IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyU3R5bGVTaGVldD4s
IHB1CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8vIEFQSVVzZXJTdHlsZVNo
ZWV0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXggNmU3OTY2MjU1MmI5ZjY4MDUyMDI5NGVi
YjlkNzRlYmFiZDgzMjY1MC4uNGEwZmZjNDJlNTk0MWMzMDZiY2ZmYmY4OGNlMTVhY2M3MDk5YjVj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJB
UElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtNDgsNyArNDgs
NyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzRnJvbUZpbGVVUkxzKGNvbnN0IEFQ
STo6QXJyYXkmIGZpbGVVUkxzKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CiAgICAgICAgIEFQSTo6VVJMKiBhcGlVUkwgPSBmaWxlVVJMcy5hdDxBUEk6OlVSTD4oaSk7
CiAgICAgICAgIGlmIChhcGlVUkwpCi0gICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVja2VkQXBw
ZW5kKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5
c3RlbVBhdGgoKSk7CisgICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVja2VkQXBwZW5kKFVSTChV
UkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIGZpbGVQYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CmluZGV4IGNjMmRmOWI1NzFhMTE3OGVjZjU3ZjZkZTZmYWEzOGRhZTVhYzYxMTAuLjJjYjk2YTMy
NTBkZDNkMGM0YTdhMTM0YzliOWM4YTY4MjAyZTFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgV0tQYWdlTG9hZFBs
YWluVGV4dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3Ry
aW5nUmVmCiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YShXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmLCBXS1R5cGVSZWYg
dXNlckRhdGFSZWYpCiB7Ci0gICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdS
ZWYsICJ0ZXh0L3BsYWluIl9zLCBibGFua1VSTCgpLnN0cmluZygpLCB1c2VyRGF0YVJlZik7Cisg
ICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9z
LCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIHVzZXJEYXRhUmVmKTsKIH0KIAogdm9pZCBXS1Bh
Z2VMb2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJlZiB3ZWJBcmNo
aXZlRGF0YVJlZikKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50
CiAKICAgICAgICAgICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHBhZ2UucHJv
Y2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2Vz
dHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBw
TGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3VyY2VGcmFtZUluZm8tPnJlcXVlc3QoKS51cmwoKSwg
cmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGFwaU5hdmlnYXRp
b25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRp
b25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxv
cHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgV2ViQ29yZTo6VVJMKCksIHNob3VsZE9wZW5B
cHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0
ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBu
dWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgVVJMKCksIHNo
b3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKIAogICAg
ICAgICAgICAgICAgIGF1dG8gYXBpV2luZG93RmVhdHVyZXMgPSBBUEk6OldpbmRvd0ZlYXR1cmVz
OjpjcmVhdGUod2luZG93RmVhdHVyZXMpOwogCkBAIC0xOTQ1LDcgKzE5NDUsNyBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGll
bnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgbV9jbGllbnQucnVuTW9kYWwodG9BUEkoJnBh
Z2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKSBmaW5hbAor
ICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5
KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBBUEk6OkRhdGEmIGRhdGEpIGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuc2F2ZURhdGFUb0ZpbGVJbkRv
d25sb2Fkc0ZvbGRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTg1LDcgKzIxODUs
NyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAgcmV0dXJuIEFQSTo6RGF0
YTo6Y3JlYXRlKG1hc3RlcktleS5kYXRhKCksIG1hc3RlcktleS5zaXplKCkpOwogICAgICAgICB9
CiAKLSAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0
IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpIG92ZXJyaWRlCisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYgcGFnZSwgdW5zaWduZWQga2V5U2l6
ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0
IFVSTCYgdXJsKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQu
Y29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZykKICAgICAgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKaW5kZXggMzkw
ZTEyMDc0N2VhZTg5Y2ZkOWZlZTY5ZGFjZWNiNmRlMDc5NWVjNS4uMDM3NzQxMGVhN2U2N2U2YjA5
MTBjZmJjMDVhOWIzMmY1OGNiNDNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZUdyb3VwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdLUGFnZUdyb3VwQWRk
VXNlclN0eWxlU2hlZXQoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS1N0cmluZ1JlZiBz
b3VyYwogICAgIGF1dG8gd2hpdGVsaXN0ID0gdG9JbXBsKHdoaXRlbGlzdGVkVVJMUGF0dGVybnMp
OwogICAgIGF1dG8gYmxhY2tsaXN0ID0gdG9JbXBsKGJsYWNrbGlzdGVkVVJMUGF0dGVybnMpOwog
Ci0gICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0ID0gQVBJOjpVc2Vy
U3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgc291cmNlLCAoYmFz
ZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+
dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlz
dC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9
LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIFJlZjxBUEk6OlVz
ZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCA9IEFQSTo6VXNlclN0eWxlU2hlZXQ6OmNyZWF0
ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgKGJhc2VVUkxTdHJpbmcuaXNFbXB0
eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZykpLCB3aGl0
ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBi
bGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigp
LCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpLCBXZWJDb3JlOjpV
c2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgp
KTsKIAogICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5h
ZGRVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldC5nZXQoKSk7CiB9CkBAIC05OCw3ICs5OCw3
IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZiwgV0tTdHJpbmdSZWYgc291cmNlUmVmCiAgICAgYXV0byB3aGl0ZWxpc3QgPSB0b0ltcGwo
d2hpdGVsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgYXV0byBibGFja2xpc3QgPSB0b0ltcGwoYmxh
Y2tsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgCi0gICAgYXV0byB1cmwgPSBiYXNlVVJMU3RyaW5n
LmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIGF1dG8gdXJsID0gYmFzZVVSTFN0cmluZy5pc0Vt
cHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiAgVVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKTsKICAg
ICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2VyU2NyaXB0ID0gQVBJOjpVc2VyU2NyaXB0OjpjcmVh
dGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwgV1RGTW92ZSh1cmwpLCB3
aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigp
LCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5n
PigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCB0b1VzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIEFQSTo6VXNlckNvbnRlbnRXb3Js
ZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50
Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQodXNlclNjcmlwdC5nZXQoKSwgSW5qZWN0VXNlclNj
cmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCA2N2E1NDIzZWE1ZWQ1
N2ExZThiZjlkYWQ4MzIwZTA0ZGJhZjczMWI0Li4zODVkY2JjZDg2Mzc2ODYyNjcyZjZlODQ3MDRk
NTdkZWY3ODI1YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQxLDggKzQxLDggQEAKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQu
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURhdGFTdG9yZUdldFR5cGVJRCgpCiB7CkBAIC05NSw3
ICs5NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCi0gICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgc3RvcmUtPnNldFByZXZhbGVudFJl
c291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+c2V0
TGFzdFNlZW4oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY29tcGxldGlvbkhh
bmRsZXJdIHsKKyAgICBzdG9yZS0+c2V0TGFzdFNlZW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY29tcGxl
dGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAg
fSk7CiB9CkBAIC0xMjEsMTEgKzEyMSwxMSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YQogICAg
IH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNl
KFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIHN0b3JlLT5zZXRQ
cmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmUt
PmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJd
IHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJd
IHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgICAgICB9KTsK
IH0KQEAgLTEzOSwxMSArMTM5LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYKICAgICB9CiAK
ICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5zZXRWZXJ5UHJldmFsZW50UmVzb3VyY2Uo
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPnNldFZl
cnlQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UKLSAgICAgICAgc3Rv
cmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgICAgICB9
KTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhUwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPmlzUHJldmFsZW50UmVzb3VyY2UoV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgIHN0b3Jl
LT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUHJldmFsZW50UmVzb3VyY2UpIHsK
ICAgICAgICAgY2FsbGJhY2soaXNQcmV2YWxlbnRSZXNvdXJjZSwgY29udGV4dCk7CiAgICAgfSk7
CiB9CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3Rp
Y3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGQKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2Uo
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsK
KyAgICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXS1dl
YnNpdGVEYXRhU3RvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc3RvcmUtPmlz
UmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IFdlYktpdDo6dG9JbXBsKHN1YnJlc291cmNlSG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIp
IHsKKyAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewogICAgICAgICBjYWxsYmFj
ayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogfQpA
QCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVn
aXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihXS1dlYnNpdGVEYXRhU3RvcmVSCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3Ry
aW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZy
YW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJl
ZEFzU3ViRnJhbWVVbmRlcikgeworICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5k
ZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKSB7CiAgICAgICAg
IGNhbGxiYWNrKGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlciwgY29udGV4dCk7CiAgICAgfSk7
CiB9CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3Rp
Y3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8o
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZEZyb20pLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShi
b29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgeworICAgIHN0b3JlLT5pc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZEZyb20pLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0
ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFz
UmVkaXJlY3RpbmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0
aW5nVG8sIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjM1LDExICsyMzUsMTEgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZgogICAgIH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUt
PmxvZ1VzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewor
ICAgICAgICBzdG9yZS0+bG9nVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiAgICAgZWxz
ZQotICAgICAgICBzdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyVXNlckludGVyYWN0aW9uKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBs
ZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsK
ICAgICAgICAgfSk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5oYXNIYWRVc2VySW50ZXJh
Y3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+
c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9u
KSB7CisgICAgc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNIYWRV
c2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFkVXNlckludGVyYWN0aW9u
LCBjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3Jl
LT5zZXRHcmFuZGZhdGhlcmVkKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUpOworICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhl
cmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUpOwog
fQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZEZ1bmN0
aW9uIGNhbGxiYWNrKQpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
SXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aGFzSGFkVXNlckludGVyYWN0
aW9uKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJlZCkgeworICAg
IHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVk
KSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29udGV4dCk7CiAgICAgfSk7
CiB9CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG8KICAgICBpZiAo
IXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0U3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRv
SW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJmcmFtZVVu
ZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSk7
CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0
cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpCkBAIC0yOTQsNyArMjk0LDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGEKICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3Qp
LT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0
cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dl
YnNpdGVEYXRhU3RvCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3Rv
cmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7
CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhv
c3RSZWRpcmVjdGVkRnJvbSkKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVE
YXRhUwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBzdG9yZS0+
c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSk7
CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9z
dFJlZGlyZWN0ZWRUbykKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3Jl
UgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBzdG9yZS0+c2V0
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpKTsKKyAgICBzdG9y
ZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZFRvKS0+c3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9t
KQpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yCiAgICAgaWYgKCFz
dG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHN0b3JlLT5zZXRUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKKyAgICBzdG9yZS0+c2V0VG9w
RnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+
c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSkt
PnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Rp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggYTgwNmJkZWMyZTJkNDgyM2IyZjFl
OTJlZDEzM2U3MTM2NWRlZjY2NC4uYzg1ODAzM2FlNTkxYjNhMjIzOWIwMWYxYjliMGYzOWZkZmJi
NDBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRU
UENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMzAsMTAgKzMwLDEwIEBACiAKICNpbXBvcnQgIkhUVFBD
b29raWVBY2NlcHRQb2xpY3kuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29va2llLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNp
bXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogc3RhdGljIE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICpjb3JlQ29va2llc1RvTlNDb29raWVzKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiBjb3JlQ29va2llcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCmluZGV4IDljZjY2ODFhYWIzOTFjMzViNjM3
OTA3YjExMTA4NmY4Mjc5NzZkNWEuLjhlMGM3MjEyODY4MjgyMTE5ZjJmODlmMjk1MDY1YWY0ZDJm
ZWEwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJTY3JpcHQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
clNjcmlwdC5tbQpAQCAtOTUsNyArOTUsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291
cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbgogICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
QVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdl
YkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBXZWJDb3JlOjpVUkwoYXNz
b2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0
b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCAqdXNl
ckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25z
dHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0
IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5n
VmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2ts
aXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1l
KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2Vi
Q29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVu
dFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRl
eCAzMWYyYTkzNmQ5YWY5MWY5ZTBiZmI5NjZlYTBiZmFkZmM5OTg5MDVmLi4wN2FlNzg0Yjc1MzNj
MjNmNmNkNjRhMDU2NTk0NGFjNTViNDM0NjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAt
NDQsOCArNDQsOCBAQAogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TZXR0aW5ncy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPHd0
Zi9XZWFrT2JqQ1B0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDc4LDcgKzQ3OCw3IEBA
IC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJs
U2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAgICAgaWYgKFtXS1dlYlZpZXcgaGFuZGxlc1VSTFNj
aGVtZTp1cmxTY2hlbWVdKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBhIFVSTCBzY2hlbWUgdGhhdCBXS1dlYlZp
ZXcgaGFuZGxlcyBuYXRpdmVseSIsIHVybFNjaGVtZV07CiAKLSAgICBhdXRvIGNhbm9uaWNhbFNj
aGVtZSA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJsU2No
ZW1lKTsKKyAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdURjo6VVJMUGFyc2VyOjptYXliZUNh
bm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOwogICAgIGlmICghY2Fub25pY2FsU2NoZW1lKQog
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiJyVAJyBpcyBub3QgYSB2YWxpZCBVUkwgc2NoZW1lIiwgdXJsU2NoZW1lXTsKIApAQCAt
NDkwLDcgKzQ5MCw3IEBAIC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2No
ZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAKIC0gKGlkIDxXS1VSTFNj
aGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJs
U2NoZW1lCiB7Ci0gICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJDb3JlOjpVUkxQYXJzZXI6
Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAgYXV0byBjYW5vbmljYWxT
Y2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJsU2NoZW1l
KTsKICAgICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0KaW5kZXggYzY0OWZmNmNiY2VhNWExZGE0NWYzNjBiZTUzOWM3ZGJjNDkyODMyNi4u
NTA2ZmI1YmY2NzRmYzNhZDk2ZWUzYTAyOWI3YWNkM2NmOGEzNDA4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CkBAIC0zOCw5ICszOCw5IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW1wb3J0ICJf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYktpdC9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Lmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogQGltcGxlbWVudGF0aW9u
IFdLV2Vic2l0ZURhdGFTdG9yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCmluZGV4IDNlZGQ4NTMx
YTA5OGIwNGYyNDM3ZDdkZTViODU0MGYzZjYwZWNmNzIuLmRmZWQwYTliZTE3NTM3MjJiNjU0MDc3
MWM4N2IzNjVhYjZkZjA5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC01NCw5ICs1NCw5
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIKICAg
ICAgICAgV1RGOjpTdHJpbmcobmFtZSksCiAgICAgICAgIFdURjo6U3RyaW5nKHNob3J0TmFtZSks
CiAgICAgICAgIFdURjo6U3RyaW5nKGRlc2NyaXB0aW9uKSwKLSAgICAgICAgV2ViQ29yZTo6VVJM
KHNjb3BlVVJMKSwKKyAgICAgICAgVVJMKHNjb3BlVVJMKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheT4oZGlzcGxheSksCi0gICAgICAg
IFdlYkNvcmU6OlVSTChzdGFydFVSTCkKKyAgICAgICAgVVJMKHN0YXJ0VVJMKQogICAgIH07CiAK
ICAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6QXBwbGljYXRpb25NYW5p
ZmVzdD4oc2VsZiwgV1RGTW92ZShjb3JlQXBwbGljYXRpb25NYW5pZmVzdCkpOwpAQCAtODMsNyAr
ODMsNyBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWFDb2RlcgogCiArIChf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOihOU1N0
cmluZyAqKWpzb24gbWFuaWZlc3RVUkw6KE5TVVJMICopbWFuaWZlc3RVUkwgZG9jdW1lbnRVUkw6
KE5TVVJMICopZG9jdW1lbnRVUkwKIHsKLSAgICBhdXRvIG1hbmlmZXN0ID0gV2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2UoV1RGOjpTdHJpbmcoanNvbiksIFdlYkNvcmU6
OlVSTChtYW5pZmVzdFVSTCksIFdlYkNvcmU6OlVSTChkb2N1bWVudFVSTCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZShXVEY6
OlN0cmluZyhqc29uKSwgVVJMKG1hbmlmZXN0VVJMKSwgVVJMKGRvY3VtZW50VVJMKSk7CiAgICAg
cmV0dXJuIHdyYXBwZXIoQVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0OjpjcmVhdGUobWFuaWZlc3Qp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IGU2ZjA5MGZmNWQ0MTM3YzY1ODljZWU4ZmNhODM1MDEz
YjhhNmRlM2QuLjYxNDUyMzJhMGQ4ZTdmMWE4ZDcyZGFkNzEzNzdiYTVjNzRiYjg0ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVl
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxl
U2hlZXQubW0KQEAgLTcwLDcgKzcwLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNl
OihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW4KICAgICAv
LyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJl
bG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3
aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0
MigpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHls
ZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJj
ZSksIHsgV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxE
YXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCks
IEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/
IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFt
ZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3Vz
ZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJ
OjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0
cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpTdHJpbmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5h
bERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0
KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5
ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZy
YW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5f
dXNlckNvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGE3MjlmYWI5
YTc5ZTFkY2QxNTRmNDMwOTFkMTdmNGVkYzgwZGYzYjQuLjY3NGE1ZGIwNDNjOGE2MGYzNjIwYWE3
YmEwMThjMWY5ODVlZGY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogLy8gRm9yIG1ldGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8gc3VwcG9ydCBB
UEkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgLSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbnRlcm5hbGx5
CiAjZGVmaW5lIEFTU0VSVF9OT1RfU1lOQ19USFJFQUQoKSBBU1NFUlQoIW1fc3luY1RocmVhZFJ1
bm5pbmcgfHwgIUlTX0lDT05fU1lOQ19USFJFQUQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKaW5kZXggZGU4
MmZkYWI1YzdmOTUzZmE1YmNhZjQwN2Q5YzY2Y2IxODUyMjdlMy4uN2E5NDI5MTlkZGY4YzRmMmEz
YjE2ZGE3NjcwMTRiMmMyYzE1NGZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKQEAgLTMyMSw3ICszMjEs
NyBAQCB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2llcyhXZWJLaXRDb29raWVN
YW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBnY2hhcgogCiAgICAgLy8gQ29va2llcyBhcmUgcmVhZC93
cml0dGVuIGZyb20vdG8gdGhlIHNhbWUgU1FMaXRlIGRhdGFiYXNlIG9uIGRpc2sgcmVnYXJkbGVz
cwogICAgIC8vIG9mIHRoZSBwcm9jZXNzIHdlIGFjY2VzcyB0aGVtIGZyb20sIHNvIGp1c3QgdXNl
IHRoZSBmaXJzdCBwcm9jZXNzIHBvb2wuCi0gICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50
PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0Q29va2llcyhzZXNzaW9uSUQsIFdlYkNvcmU6
OlVSTChXZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSwgW3Rhc2sgPSBXVEZN
b3ZlKHRhc2spXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIHByb2Nlc3NQb29sc1swXS0+c3VwcGxlbWVudDxX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZXMoc2Vzc2lvbklELCBVUkwoVVJMKCks
IFN0cmluZzo6ZnJvbVVURjgodXJpKSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKICAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKICAg
ICAgICAgICAgIC8vIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGluIGNhc2VzIHdoZXJlIHRoZSB3ZWIg
cHJvY2VzcyBpcyBub3QgYXZhaWxhYmxlLAogICAgICAgICAgICAgLy8gY29uc2lkZXIgdGhlIG9w
ZXJhdGlvbiAiY2FuY2VsbGVkIiBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHRoZSBjbGllbnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCBjZDAyNmU0ZjhlOTFhN2FiZmIxOWJjYzMw
YjBhMTIzNThmMjdkZTUwLi4zN2U2Y2NhMGNlYmNlOTE0NzMwZTNjNmQ0MjVjNWZlZjc3ZmI0ODVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRl
ICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3Jp
Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5
T3JpZ2luLmNwcAppbmRleCAzYmNjMjEyMzY3ODU5MzZhNzcxMjk3ZTZlMzk4ZDI4MGRmYjZiODAy
Li44ODMzNmIzZGM0Njg0OTg4YWM3N2QxNjlkYTZhNTk1ZTYxZTU5ZTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmln
aW4uY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlPcmlnaW4u
aCIKIAogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogLyoqCkBAIC0xMTAsNyArMTEwLDcgQEAgV2ViS2l0U2VjdXJpdHlPcmln
aW4qIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoY29uc3QgZ2NoYXIqIHVyaSkK
IHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCh1cmksIG51bGxwdHIpOwogCi0gICAgcmV0dXJu
IHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7
CisgICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CiB9CiAK
IC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwCmluZGV4IDAyNzU0MzEyN2FlZTFiMDg2ZDAzNjE1MWQxMThjZmM3OTY2NmE0MmUu
Ljk2ZjllZTExODJhMjQyM2I5MTYzZGMzYWYwODIxNmIzZTkxODliNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAgICAg
dm9pZCBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZv
PiYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0
LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgIHsK
ICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2Vy
SW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklk
ZW50aWZpZXIpOwotICAgICAgICBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uIG5hdmlnYXRpb25BY3Rp
b24oQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
RGF0YSksIGZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJl
c291cmNlUmVxdWVzdCksIFdlYkNvcmU6OlVSTCB7IH0sIGZhbHNlLCBXVEZNb3ZlKHVzZXJJbml0
aWF0ZWRBY3Rpdml0eSkpKTsKKyAgICAgICAgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiBuYXZpZ2F0
aW9uQWN0aW9uKEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbkRhdGEpLCBmcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RG
TW92ZShyZXNvdXJjZVJlcXVlc3QpLCBVUkwgeyB9LCBmYWxzZSwgV1RGTW92ZSh1c2VySW5pdGlh
dGVkQWN0aXZpdHkpKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYmtpdFdlYlZpZXdD
cmVhdGVOZXdQYWdlKG1fd2ViVmlldywgd2luZG93RmVhdHVyZXMsICZuYXZpZ2F0aW9uQWN0aW9u
KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4IDkxNjc0YWMyODhmN2U3OGY0
NTFlOTU5M2QzYTU1NDhmZjU5ODg4OWYuLjA3YjU4YWQzMjNkNTQ1OGM5MDM2NjNkYjgzMGU5NGJl
N2U1ZDg4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKICNp
bmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZp
ZXcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dVbmlx
dWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVk
ZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9v
cFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDBmYTRhMThmODljOGM1MWE0NTQwNzc4
ZjVhZTI3YmVhODdkN2I1ZjEuLjIzNDg1OTY2M2QxZjJjNzgwODk4ZjA2MGY0MDE0OTg4ZTc4NmI0
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwCkBAIC02NiwxMiArNjYsMTIgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJpdmF0ZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVl
UHRyU291cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
U291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTI2
NDcsNyArMjY0Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfcGxhaW5fdGV4dChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogcGxhaW5UCiAgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
cGxhaW5UZXh0KTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9hZERhdGEoeyByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwbGFpblRleHQpLCBwbGFpblRleHQgPyBzdHJsZW4ocGxh
aW5UZXh0KSA6IDAgfSwgInRleHQvcGxhaW4iX3MsICJVVEYtOCJfcywgYmxhbmtVUkwoKS5zdHJp
bmcoKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHBsYWluVGV4dCksIHBsYWluVGV4dCA/IHN0cmxlbihwbGFpblRleHQp
IDogMCB9LCAidGV4dC9wbGFpbiJfcywgIlVURi04Il9zLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5n
KCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcAppbmRleCBiYmQ1MTZlNzI5NjIzMzdiZGRmZWNkMGM1NmQzOTgxNDgzM2Q4YTc0Li5iN2U2
MzMwZWFlYjJlMjAyMmU2MjNmM2E2OGVjMWJjMTdhYTM3NzVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVk
ZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdl
YkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmNwcAppbmRleCA3ODBhMTVlOTZkM2MzNjI0NmJiNWQ1YTQxYzcxMjdiMmFiZGQxMzFj
Li4yZjA2NjA4NmQ5OTJmYzMwZmFmNmM3OTQwYWNlZjJmZGZjYzg1M2NlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDUsMTEgKzEwNSwxMSBAQCB2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdV
UkxTdHJpbgogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmF0aW5nOwogCi0gICAgV2ViQ29y
ZTo6VVJMIG9yaWdpbmF0aW5nVVJMKFdlYkNvcmU6OlVSTCgpLCBvcmlnaW5hdGluZ1VSTFN0cmlu
Zyk7CisgICAgVVJMIG9yaWdpbmF0aW5nVVJMKFVSTCgpLCBvcmlnaW5hdGluZ1VSTFN0cmluZyk7
CiAKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBsaW5rSWNvblVSTHM7CisgICAgVmVjdG9yPFVS
TD4gbGlua0ljb25VUkxzOwogICAgIGZvciAoY29uc3QgYXV0byYgbGlua0ljb25VUkxTdHJpbmcg
OiBsaW5rSWNvblVSTFN0cmluZ3MpCi0gICAgICAgIGxpbmtJY29uVVJMcy5hcHBlbmQoV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBsaW5rSWNvblVSTFN0cmluZykpOworICAgICAgICBsaW5r
SWNvblVSTHMuYXBwZW5kKFVSTChVUkwoKSwgbGlua0ljb25VUkxTdHJpbmcpKTsKIAogICAgIHBs
YXRmb3JtU2hvd1BheW1lbnRVSShvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxzLCBwYXltZW50
UmVxdWVzdCwgW3RoaXNdKGJvb2wgcmVzdWx0KSB7CiAgICAgICAgIEFTU0VSVChtX3N0YXRlID09
IFN0YXRlOjpBY3RpdmF0aW5nKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpCiAgICAgZGlkUmVhY2hG
aW5hbFN0YXRlKCk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlk
YXRlTWVyY2hhbnQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFT
U0VSVChtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlID09IE1lcmNoYW50VmFsaWRhdGlvblN0YXRl
OjpJZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggMDg1MDE5ZGEwNmUzMmZi
MGY0ZWM1ODk5MTUzNTQ4NmZlYmE3ZjhkYS4uZWRlN2E3MGNmMjEzNTk0ODgwYTY4ZjUwZGE3Y2Y5
Y2YxODU0NjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC00Myw3ICs0Myw2IEBA
IGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKIGNsYXNzIFBheW1lbnRNZXJj
aGFudFNlc3Npb247CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogfQogCiBPQkpD
X0NMQVNTIE5TT2JqZWN0OwpAQCAtNjEsNyArNjAsNyBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtl
VwogICAgIH5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwogCiAgICAgdm9pZCBkaWRDYW5j
ZWxQYXltZW50U2Vzc2lvbigpOwotICAgIHZvaWQgdmFsaWRhdGVNZXJjaGFudChjb25zdCBXZWJD
b3JlOjpVUkwmKTsKKyAgICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJik7CiAgICAg
dm9pZCBkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmKTsKICAgICB2
b2lkIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpOwogICAgIHZvaWQgZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0Jik7CkBAIC05OSw3ICs5
OCw3IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXCiAgICAgYm9vbCBwbGF0Zm9ybUNhbk1ha2VQ
YXltZW50cygpOwogICAgIHZvaWQgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2Fy
ZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5O
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAg
ICB2b2lkIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRV
SShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOworICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRp
bmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZh
bGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZv
aWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAgICAgdm9pZCBwbGF0Zm9y
bUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4IDE1OWFjMTkyNDYyYjQ5ZjdmOTQ2ZmM0NmE2ZTk4
ZjkyNmJiY2I5NmMuLjRlMGYyMmI3YWRmNTEwNDE5ZmU2MGFjOWJhNGVhNTQ4OWRiYWNhMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKQEAgLTMxLDE1
ICszMSwxMSBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OwogCi1SZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1Bh
eW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRp
bmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CitSZXRhaW5QdHI8UEtQYXlt
ZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYg
b3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2Nv
Y29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KaW5kZXggYTRlZWNjYjA5MWJm
MGI0MGNmYjBjMDUzMjgyMjU2OTMxYjA3MzRjNS4uZGY1YjlkYTdkZGRiZmI1NjVhNThhYmRlMjll
ZDMzMzc0MWI1M2ZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUNvY29hLm1tCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKIFNPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQpAQCAtNTExLDcgKzUxMSw3IEBAIHN0YXRp
YyBQS1BheW1lbnRSZXF1ZXN0QVBJVHlwZSB0b0FQSVR5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6CiB9CiAjZW5kaWYKIAotUmV0YWluUHRyPFBLUGF5bWVudFJlcXVl
c3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4m
IGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmIHBheW1lbnRSZXF1ZXN0KQorUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXlt
ZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29uc3QgVVJMJiBvcmlnaW5h
dGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQogewogICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBpbml0
XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCBiMTBk
OTJlMzhiMGMxNzUzMzAwMjgyZWI3ZDU4MGUyYzIzNmNmYTg5Li4xN2I3ZjJmODlhMThiNzgwNmEy
ZTk2YzY0ZTA4ZGIxZmYyODZjNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5SU9TLm1tCkBAIC00MSw3ICs0MSw3IEBAIFNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJ
KGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxV
Ukw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlDbGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFj
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4IDc0
MTU5MzgzZjE5NTQyN2RiOTc2MGE4YzAxZWM3MDY3YTY3YzZmOTUuLjI1MTQ5NTBlNWQwMjQ2MDNl
MDU3MWFiYjAzNmY3OTEyOTMwZDE2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlNYWMubW0KQEAgLTQxLDcgKzQxLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQs
IFBLRXh0ZW5zaW9uUGF5bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lvblBvaW50TmFtZSwKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJD
b3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RGOjpGdW5jdGlv
bjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5n
VVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghUGFzc0tpdExpYnJh
cnkoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCmluZGV4IGY2M2JiMmJhZmViOThkZTQzNWVmYjVmNWNkNTNkZTQwYzQ3NmNiZTEuLmEx
MjI4NzRjMWYwNTA1MjhmNjdiNDUxM2FhN2RiNDI0OWYxNmEwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCkBAIC00NCwxMCArNDQsMTAgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZS5oPgogCkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoY29uc3QgU3RyaW5nJiBoYW5kbGUs
IGNvbnN0IFMKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3BhZ2VMb2FkU3RyYXRlZ3kn
IGlzIGludmFsaWQuIik7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VM
b2FkVGltZW91dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRU
aW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKLSAgICBwYWdlLT5sb2FkUmVxdWVz
dChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHVybCkpOworICAgIHBhZ2UtPmxvYWRSZXF1
ZXN0KFVSTChVUkwoKSwgdXJsKSk7CiAgICAgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25Q
YWdlKCpwYWdlLCBwYWdlTG9hZFN0cmF0ZWd5LnZhbHVlKCksIHBhZ2VMb2FkVGltZW91dCwgV1RG
TW92ZShjYWxsYmFjaykpOwogfQogCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBzdGF0aWMgU3RyaW5n
IGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQoU3RyaW5nIGRvbWFpbikKICAgICBpZiAo
ZG9tYWluWzBdICE9ICcuJykgewogICAgICAgICAvLyBSRkMgMjk2NTogSWYgYW4gZXhwbGljaXRs
eSBzcGVjaWZpZWQgdmFsdWUgZG9lcyBub3Qgc3RhcnQgd2l0aCBhIGRvdCwgdGhlIHVzZXIgYWdl
bnQgc3VwcGxpZXMgYSBsZWFkaW5nIGRvdC4KICAgICAgICAgLy8gQXNzdW1lIHRoYXQgYW55IGhv
c3QgdGhhdCBlbmRzIHdpdGggYSBkaWdpdCBpcyB0cnlpbmcgdG8gYmUgYW4gSVAgYWRkcmVzcy4K
LSAgICAgICAgaWYgKCFXZWJDb3JlOjpVUkw6Omhvc3RJc0lQQWRkcmVzcyhkb21haW4pKQorICAg
ICAgICBpZiAoIVVSTDo6aG9zdElzSVBBZGRyZXNzKGRvbWFpbikpCiAgICAgICAgICAgICByZXR1
cm4gbWFrZVN0cmluZygnLicsIGRvbWFpbik7CiAgICAgfQogICAgIApAQCAtMTMwMCw3ICsxMzAw
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKGNvbnN0IFN0
cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLAogICAgIGlmICghcGFnZSkKICAgICAgICAgQVNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAgV2Vi
Q29yZTo6VVJMIGFjdGl2ZVVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgcGFnZS0+
cGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKTsKKyAgICBVUkwgYWN0aXZlVVJMID0gVVJMKFVS
TCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOwogICAgIEFTU0VSVChhY3Rp
dmVVUkwuaXNWYWxpZCgpKTsKIAogICAgIFdlYkNvcmU6OkNvb2tpZSBjb29raWU7CkBAIC0xMzU3
LDcgKzEzNTcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVBbGxDb29raWVz
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaQogICAgIGlmICghcGFnZSkKICAg
ICAgICAgU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAK
LSAgICBXZWJDb3JlOjpVUkwgYWN0aXZlVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOworICAgIFVSTCBhY3RpdmVVUkwg
PSBVUkwoVVJMKCksIHBhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVVUkwoKSk7CiAgICAgQVNT
RVJUKGFjdGl2ZVVSTC5pc1ZhbGlkKCkpOwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBj
b29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2Vy
UHJveHk+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3du
bG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xp
ZW50Lm1tCmluZGV4IDZmZjFiNDc4MzIzOTJiZDAzMjU2MjFlNTA1ZmIwNGE3NGY0NTY1ZmYuLjFk
NmU3MTg4NDViMTQ4NWUwYjI2NjZiOWFmMWVmOTMxNjAyMDQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC0yMTMsNyArMjEzLDcg
QEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSkKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVBy
ZXZpZXdEb3dubG9hZCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gZG93bmxvYWRQ
cm94eS5vcmlnaW5hdGluZ1BhZ2UoKSkgewogICAgICAgICAgICAgTlNVUkwgKmRlc3RpbmF0aW9u
VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDooTlNTdHJpbmcgKilkb3dubG9hZFByb3h5LmRl
c3RpbmF0aW9uRmlsZW5hbWUoKV07Ci0gICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcigpLT5maW5pc2goV2ViQ29yZTo6VVJMKGRlc3RpbmF0aW9uVVJMKSk7CisgICAg
ICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigpLT5maW5pc2goVVJMKGRl
c3RpbmF0aW9uVVJMKSk7CiAgICAgICAgIH0KICAgICAgICAgcmVsZWFzZUFjdGl2aXR5VG9rZW5J
Zk5lY2Vzc2FyeShkb3dubG9hZFByb3h5KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA0NTk4NWY1MGU0
YmZlNzAyNWFjZGE4ZjYyZTU1ZDk4Y2FkMzQ1YmJjLi4wNTU2ZWNjYTMyNDgwZTlkMjY3NDVhZTdi
MTk0ZDBlNWM5ZTZjYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUuaApAQCAtMTE2LDcgKzExNiw3IEBAIGNsYXNzIE5hdmlnYXRpb25TdGF0
ZSBmaW5hbCA6IHByaXZhdGUgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgewogCiAgICAgICAgIFJl
ZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmKSBvdmVycmlk
ZTsKIAotICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJl
ZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJikg
b3ZlcnJpZGU7CisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29u
c3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBvdmVy
cmlkZTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKQEAgLTEyNCw4ICsxMjQsOCBAQCBj
bGFzcyBOYXZpZ2F0aW9uU3RhdGUgZmluYWwgOiBwcml2YXRlIFBhZ2VMb2FkU3RhdGU6Ok9ic2Vy
dmVyIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICB2b2lkIHdlYkdMTG9h
ZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYpIGNvbnN0IGZpbmFsOwotICAg
ICAgICB2b2lkIHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViUGFn
ZVByb3h5JiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCByZXNvbHZlV2ViR0xM
b2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmluYWw7CiAgICAgICAgIGJv
b2wgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2VQcm94eSYsIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0mLCBib29sIGluUGFnZUNhY2hlLCBBUEk6Ok9iamVjdCopIGZpbmFsOwogICAg
ICAgICBib29sIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnSW4oV2ViUGFnZVByb3h5JiwgQVBJOjpE
aWN0aW9uYXJ5JikgZmluYWw7CiAgICAgICAgIGJvb2wgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZl
cnNpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7CkBAIC0xMzMsNyAr
MTMzLDcgQEAgY2xhc3MgTmF2aWdhdGlvblN0YXRlIGZpbmFsIDogcHJpdmF0ZSBQYWdlTG9hZFN0
YXRlOjpPYnNlcnZlciB7CiAgICAgICAgIGJvb2wgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdl
YlBhZ2VQcm94eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBjb25zdCBWZWN0b3I8UmVmPFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBj
b250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6VVJMJiYs
IFZlY3RvcjxTdHJpbmc+JiYsIFZlY3RvcjxTdHJpbmc+JiYpIGZpbmFsOworICAgICAgICB2b2lk
IGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkmLCBVUkwmJiwgVmVjdG9y
PFN0cmluZz4mJiwgVmVjdG9yPFN0cmluZz4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0
aW9uQWN0aW9uPiYmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25SZXNwb25zZShXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9u
c2U+JiYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBhNWIwODdjZmYzMDhiZjE0MGFmODViZGFkZDM5ZmJm
Njk5MTA3OWE3Li40MjA3NzM5YWIwZTBmMDRiNTI3Y2M5Zjc3ZDViODQwMTAxM2Y1OGU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBA
IC03MCw5ICs3MCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdlbmVyYXRvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Vy
aWFsaXplZENyeXB0b0tleVdyYXAuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjaWYgSEFWRShBUFBfTElOS1MpCiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CkBAIC0zOTIsNyArMzkyLDcgQEAgaW5saW5lIFdlYkNv
cmU6OldlYkdMTG9hZFBvbGljeSB0b1dlYkNvcmVXZWJHTExvYWRQb2xpY3koX1dLV2ViR0xMb2Fk
UG9saWN5IHBvbGkKICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQog
Ci12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNv
bnN0Cit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9s
aWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJHTEFsbG93Q3JlYXRpb24pOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5Jiwg
Y29uc3QgV2ViCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAordm9pZCBOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVBy
b3h5JiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBpZiAoIW1f
bmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVzb2x2
ZVdlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJH
TEFsbG93Q3JlYXRpb24pOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBh
Z2VQCiAgICAgfQogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OlVSTCYm
IHVybCwgVmVjdG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYg
bm90aWZpY2F0aW9ucykKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpj
b250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5JiwgVVJMJiYgdXJsLCBWZWN0
b3I8U3RyaW5nPiYmIGxpc3RJZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4mJiBub3RpZmljYXRp
b25zKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdVUkxDb250ZW50UnVsZUxpc3RJZGVudGlmaWVyc05vdGlmaWNhdGlvbnMp
CiAgICAgICAgIHJldHVybjsKQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJQYWdlUHJv
eHkmCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdlYkNvcmU6OlVSTCB1cmwoV2ViQ29yZTo6VVJMKCksIHVybFN0cmluZyk7CisgICAgVVJMIHVy
bChVUkwoKSwgdXJsU3RyaW5nKTsKIAogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlKSBfd2ViVmlldzptX25hdmlnYXRp
b25TdGF0ZS5tX3dlYlZpZXcgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOnVybCBkZWxh
eTpkZWxheV07CiB9CkBAIC05NzIsNyArOTcyLDcgQEAgUmVmUHRyPEFQSTo6RGF0YT4gTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVAK
ICAgICByZXR1cm4gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhkYXRhKTsKIH0KIAot
UmVmUHRyPEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmIHBhZ2UsIHVuc2ln
bmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3Ry
aW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1JlZlB0cjxBUEk6OlN0cmluZz4gTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJl
ZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgLy8gV2ViS2l0VGVzdFJ1bm5lciB1c2VzIEMgQVBJLiBIZW5jZSwgbm8gU1BJIGlzIHByb3Zp
ZGVkIHRvIG92ZXJyaWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24uCiAgICAgcmV0dXJuIEFQSTo6
U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwgdXJsKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdSZXN1bHRDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENv
Y29hLm1tCmluZGV4IDA4N2FjNjU0OTMzM2ExNDBhZjUzOWVhNDA0Yjk2ZmExZWVjZjM0OTQuLjA0
ZGZkNWQ0NGQ2ZTQ4MzExZGRjMmYyZmU3NDE2OWY0NDhjNWIzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1t
CkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIEhBVkUoU0FGRV9C
Uk9XU0lORykKLVNhZmVCcm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNvcmU6
OlVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorU2FmZUJyb3dzaW5n
UmVzdWx0OjpTYWZlQnJvd3NpbmdSZXN1bHQoVVJMJiYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVz
dWx0ICpyZXN1bHQpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX3Byb3ZpZGVy
KFtyZXN1bHQgcHJvdmlkZXJdKQogICAgICwgbV9pc1BoaXNoaW5nKFtyZXN1bHQgaXNQaGlzaGlu
Z10pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lz
dGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCBhN2RhZDQ4MTUyNjFhOThjNmMxMWQz
NDQ4ZjNkYjIxODEzMWE2MmRhLi45OGJkYzI3OTY0YTU2OWE3Nzk4YzE5YzdiNWFhYzJjNzRlNmQ1
OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTEwNSw3ICsxMDUsNyBAQCAtICh2
b2lkKXNldFByb2dyZXNzOihmbG9hdClwcm9ncmVzcwogICAgICAgICBbX2l0ZW0gc2V0UHJldmll
d0l0ZW1Qcm92aWRlclByb2dyZXNzOkAocHJvZ3Jlc3MpXTsKIH0KIAotLSAodm9pZClmaW5pc2g6
KFdlYkNvcmU6OlVSTCl1cmwKKy0gKHZvaWQpZmluaXNoOihVUkwpdXJsCiB7CiAgICAgaWYgKHNl
bGYuY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHNlbGYuY29tcGxldGlvbkhhbmRsZXIoKE5T
VVJMKil1cmwsIG5pbCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlcjo6dXBkYXRlUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCiAgICAgICAgIFttX3FsUHJl
dmlld0NvbnRyb2xsZXJEYXRhU291cmNlIHNldFByb2dyZXNzOnByb2dyZXNzXTsKIH0KIAotdm9p
ZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmluaXNoKFdlYkNvcmU6OlVSTCB1cmwpCit2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2goVVJMIHVybCkKIHsKICAgICBpZiAobV9x
bFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSkKICAgICAgICAgW21fcWxQcmV2aWV3Q29udHJv
bGxlckRhdGFTb3VyY2UgZmluaXNoOnVybF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLmgKaW5kZXggMzNmMGE5YzJjZDI2MTI1NzFlMjg2ZDU3NjczZWI3MDQwNGQw
MDFiMi4uNmNmYjQ0M2E5NTg4NjU1NmYwOTg2MDg3MDQ0ZTQyMDI2ZDNmYTlhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTE5LDcgKzExOSw3IEBA
IGNsYXNzIFVJRGVsZWdhdGUgewogICAgICAgICB2b2lkIHRvb2xiYXJzQXJlVmlzaWJsZShXZWJQ
YWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICAgICAgYm9vbCBy
dW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRFeGNlZWRC
YWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdlYlBhZ2VQcm94eSYsIFdL
UmVzb3VyY2VMaW1pdCkgZmluYWw7Ci0gICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25s
b2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CisgICAgICAg
IHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpEYXRh
JikgZmluYWw7CiAjZW5kaWYKICAgICAgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1
cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5JikgZmluYWw7CiAgICAgICAgIGJvb2wgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpp
bmRleCAzZWNlODIwZWQ0YjMxNjQzNjkzZjUyMjQ3ZWRhZDljNjhiODFmZjYwLi5mOTE3YWE1Zjdh
MTE4YjIyZDhlYjIyNTU4MzRjNmM5Y2NjZGNkYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTUxLDggKzUxLDggQEAKICNpbXBvcnQgIl9XS0Zy
YW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRlc3RSZXN1bHRJbnRlcm5hbC5o
IgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVEZXZp
Y2UuaD4KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVh
dGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZvPgogCiAgICAg
YXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlhdGVk
QWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIp
OwogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoc291cmNlRnJh
bWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpOwotICAgIGF1dG8gYXBpTmF2
aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0ZDo6
bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgV2ViQ29yZTo6VVJMKCksIHNob3VsZE9wZW5BcHBM
aW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAgICBhdXRvIGFwaU5hdmln
YXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51
bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1v
dmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICBhdXRvIGFwaVdpbmRvd0ZlYXR1cmVz
ID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzKTsKIApAQCAtNzg3
LDcgKzc4Nyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3dQYWdlKFdlYlBhZ2VQ
cm94eSopCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3Nob3dXZWJW
aWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogICAgIAotdm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBj
b25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBk
YXRhKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VS
TCwgQVBJOjpEYXRhJiBkYXRhKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmln
aW5hdGluZ1VSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtODY1LDggKzg2NSw4IEBAIHN0YXRpYyB2
b2lkIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcyhjb25zdCBXZWJGcmFt
ZVByb3h5JiBmcmFtZSwKICAgICB9KTsKIAogICAgIGNvbnN0IFdlYkZyYW1lUHJveHkqIG1haW5G
cmFtZSA9IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCk7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVl
c3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJhbWUudXJsKCkpOwotICAgIFdlYkNvcmU6OlVS
TCBtYWluRnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOworICAgIFVS
TCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIGZyYW1lLnVybCgpKTsKKyAgICBVUkwgbWFpbkZyYW1l
VVJMKFVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKIAogICAgIF9XS0NhcHR1cmVEZXZpY2VzIGRl
dmljZXMgPSAwOwogICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzQXVkaW9DYXB0dXJlKCkpCkBAIC05
NzMsOCArOTczLDggQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQ
ZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSwKIAogICAgIFdLV2ViVmlldyAq
d2ViVmlldyA9IG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXc7CiAgICAgY29uc3QgV2ViRnJhbWVQcm94
eSogbWFpbkZyYW1lID0gZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKTsKLSAgICBXZWJDb3JlOjpV
UkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBmcmFtZS51cmwoKSk7Ci0gICAgV2Vi
Q29yZTo6VVJMIG1haW5GcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgbWFpbkZyYW1lLT51cmwoKSk7
CisgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgZnJhbWUudXJsKCkpOworICAgIFVSTCBt
YWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogCiAgICAgYXV0byBkZWNpc2lv
bkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkKE5TU3RyaW5nICosIEJPT0wpPjo6ZnJvbUNhbGxhYmxl
KFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oTlNTdHJpbmcgKnNhbHQsIEJP
T0wgYXV0aG9yaXplZCkgewogICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5zZXRVc2VyTWVkaWFB
Y2Nlc3NJbmZvKFN0cmluZyhzYWx0KSwgYXV0aG9yaXplZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJl
Y292ZXJ5QXR0ZW1wdGVyLm1tCmluZGV4IDVmOTlhZWM4NWRhNzUyNGJhMDQxZTc1ZWIwODAxNzM5
OTA0OWIyMTIuLmFlNTc2NWU0OGU3MWI4N2ZmNjBkMTQwNWMzYzdhMzM3MjUxNWNhMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJl
Y292ZXJ5QXR0ZW1wdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
UmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCkBAIC02OSw3ICs2OSw3IEBAIC0g
KEJPT0wpYXR0ZW1wdFJlY292ZXJ5CiAgICAgaWYgKCF3ZWJGcmFtZVByb3h5KQogICAgICAgICBy
ZXR1cm4gTk87CiAKLSAgICB3ZWJGcmFtZVByb3h5LT5sb2FkVVJMKFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgX3VybFN0cmluZykpOworICAgIHdlYkZyYW1lUHJveHktPmxvYWRVUkwoVVJM
KFVSTCgpLCBfdXJsU3RyaW5nKSk7CiAgICAgcmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bQppbmRleCBhZTY0NzA3ZGExNTFjMjJiYzM4MzlkYWI0YWY3ZTc0MDE0ZTAyMjBlLi41ZmQ1Yjkw
Y2Q0OWRiNDdkOGU3YzMwNmZjNDg2YjNiZTMxMmQ4MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAt
MzMsNyArMzMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkSXRlbUluZm8uaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNWFhZGNmNjdk
MTVlMGZmNGE3NzQxYjg1ZTlkZTI3YTQ5NzIyMjlmMi4uYmNiZjUzNzZiMWEzZWJlYjQ3ZjgzYjMy
ODM4ZDIxNGRkNzBiNzFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KQEAgLTQwNjYsNyArNDA2Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OndyaXRl
VG9VUkxGb3JGaWxlUHJvbWlzZVByb3ZpZGVyKE5TRmlsZVByb21pc2VQcm92aWRlciAqcHJvdmlk
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpVUkwgYmxvYlVSTCB7IGlu
Zm8uYmxvYlVSTCB9OworICAgIFVSTCBibG9iVVJMIHsgaW5mby5ibG9iVVJMIH07CiAgICAgaWYg
KGJsb2JVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYktpdFVu
a25vd25FcnJvcigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggZTA3YWFjODk2MDM4MTU2MWE3
MmNhNTRiNzU1NzM5Mjc5ODVlMzQwYy4uNDc3MzZmMDZkZjgyODY4ZmUzYmNiZGNkMDgxMGNlZWNm
ZGQ2ZGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQcm90
ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NSw4ICs3NCw4IEBA
IGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpEb3dubG9hZD4sIHB1YmxpCiAgICAgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1Bh
Z2UoKSBjb25zdDsKICAgICB2b2lkIHNldE9yaWdpbmF0aW5nUGFnZShXZWJQYWdlUHJveHkqKTsK
IAotICAgIHZvaWQgc2V0UmVkaXJlY3RDaGFpbihWZWN0b3I8V2ViQ29yZTo6VVJMPiYmIHJlZGly
ZWN0Q2hhaW4pIHsgbV9yZWRpcmVjdENoYWluID0gV1RGTW92ZShyZWRpcmVjdENoYWluKTsgfQot
ICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiByZWRpcmVjdENoYWluKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWRpcmVjdENoYWluOyB9CisgICAgdm9pZCBzZXRSZWRpcmVjdENoYWluKFZlY3Rv
cjxVUkw+JiYgcmVkaXJlY3RDaGFpbikgeyBtX3JlZGlyZWN0Q2hhaW4gPSBXVEZNb3ZlKHJlZGly
ZWN0Q2hhaW4pOyB9CisgICAgY29uc3QgVmVjdG9yPFVSTD4mIHJlZGlyZWN0Q2hhaW4oKSBjb25z
dCB7IHJldHVybiBtX3JlZGlyZWN0Q2hhaW47IH0KIAogICAgIHZvaWQgc2V0V2FzVXNlckluaXRp
YXRlZChib29sIHZhbHVlKSB7IG1fd2FzVXNlckluaXRpYXRlZCA9IHZhbHVlOyB9CiAgICAgYm9v
bCB3YXNVc2VySW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNVc2VySW5pdGlhdGVkOyB9
CkBAIC0xMjYsNyArMTI1LDcgQEAgY2xhc3MgRG93bmxvYWRQcm94eSA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRvd25sb2FkPiwgcHVibGkKICAgICB1aW50NjRf
dCBtX2J5dGVzTG9hZGVkIHsgMCB9OwogCiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1fb3Jp
Z2luYXRpbmdQYWdlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IG1fcmVkaXJlY3RDaGFpbjsK
KyAgICBWZWN0b3I8VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9vbCBtX3dhc1VzZXJJbml0
aWF0ZWQgeyB0cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9GcmFtZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRT
dGF0ZS5jcHAKaW5kZXggOWZlM2M3NjU2MWIyNTU3MTZhNDViYmEzOGZlOTk1YTAwNTk3N2ZmYi4u
NzJmNGY3MjQ1NWE3ZWI4YTY1YjllNTI3ZTU1YTFmODIxYWNlMDhmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcApAQCAtMzIsNyArMzIsNyBAQCBGcmFtZUxv
YWRTdGF0ZTo6fkZyYW1lTG9hZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIEZy
YW1lTG9hZFN0YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBBU1NFUlQobV9wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwogCkBAIC00MCw3ICs0MCw3
IEBAIHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKQogICAgIG1fcHJvdmlzaW9uYWxVUkwgPSB1cmw7CiB9CiAKLXZvaWQg
RnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwpOwogCkBAIC04MSwxMiArODEs
MTIgQEAgdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkRmFpbExvYWQoKQogICAgIG1fc3RhdGUgPSBT
dGF0ZTo6RmluaXNoZWQ7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1bWVu
dE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkU3Rh
dGU6OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBt
X3VybCA9IHVybDsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6c2V0VW5yZWFjaGFibGVVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6
OnNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwpCiB7CiAgICAgbV9s
YXN0VW5yZWFjaGFibGVVUkwgPSBtX3VucmVhY2hhYmxlVVJMOwogICAgIG1fdW5yZWFjaGFibGVV
UkwgPSB1bnJlYWNoYWJsZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0ZyYW1lTG9hZFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0
ZS5oCmluZGV4IDk4YzMyNWU4NDQzNmVkYWU0ZGNmNjM5ZDE0MDc2ZGE5ODM1MzZjMTIuLmM2NTAw
MDNmZmI1ZjBiNjg4NWMxM2YzMjZiZDJmYjRmZDI2YzlkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRnJhbWVMb2FkU3RhdGUuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIApAQCAtMzksMjkgKzM5LDI5IEBAIGNsYXNzIEZyYW1lTG9hZFN0YXRl
IHsKICAgICAgICAgRmluaXNoZWQKICAgICB9OwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOworICAgIHZvaWQgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOwogICAgIHZvaWQg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWlsTG9hZCgpOwogCi0gICAg
dm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7Cisg
ICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgVVJMJik7CiAKICAgICBT
dGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICBjb25zdCBXZWJDb3Jl
OjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6
VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0K
KyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3Qg
VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0K
IAotICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAg
Y29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5y
ZWFjaGFibGVVUkw7IH0KKyAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYpOwor
ICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3VucmVhY2hh
YmxlVVJMOyB9CiAKIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpGaW5pc2hl
ZCB9OwotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKLSAgICBXZWJDb3JlOjpVUkwgbV9wcm92aXNp
b25hbFVSTDsKLSAgICBXZWJDb3JlOjpVUkwgbV91bnJlYWNoYWJsZVVSTDsKLSAgICBXZWJDb3Jl
OjpVUkwgbV9sYXN0VW5yZWFjaGFibGVVUkw7CisgICAgVVJMIG1fdXJsOworICAgIFVSTCBtX3By
b3Zpc2lvbmFsVVJMOworICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOworICAgIFVSTCBtX2xhc3RV
bnJlYWNoYWJsZVVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
aW5kZXggMGU5MjE4MzMyN2FiZjg3YWJiNjIwNjcwN2U2YWU1OGE2NTZhYjViNC4uMTgxYTllMjRh
ZTVlZjY3NmQ2OThhNmY0MjVkZTk5N2Q1ODM4OGVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01MzYs
NyArNTM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc0RpZFJlc3Vt
ZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzRGlkUmVz
dW1lKCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndyaXRlQmxvYlRvRmls
ZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
YXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlm
ICghY2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CmluZGV4IDI1NTg5N2U3ZTgyNWUxN2I4M2U4YjE0NjRiNDgwOTE3NTZlYTMwMDcuLjRkYmJiNmZl
ZTA2MmZmNWUwOGJmMTNjMDc3MzE1MjA4ZTk5NTM0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMyw4ICsy
Myw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKLSNkZWZpbmUgTmV0d29ya1Byb2Nlc3NQcm94eV9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
ICJDaGlsZFByb2Nlc3NQcm94eS5oIgpAQCAtNDksNyArNDgsNiBAQCBjbGFzcyBQcm90ZWN0aW9u
U3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZTsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVVJMOwogc3RydWN0IFNlY3VyaXR5T3JpZ2lu
RGF0YTsKIH0KIApAQCAtODcsNyArODUsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5IGZp
bmFsIDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJvdAogICAg
IHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCi0gICAgdm9pZCB3
cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0
aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCB3
cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CiAKICAgICB2b2lkIHByb2Nlc3NS
ZWFkeVRvU3VzcGVuZCgpOwogICAgIApAQCAtMjAzLDUgKzIwMSwzIEBAIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzUHJveHksIHByaXZhdGUgUHJv
Y2Vzc1Rocm90CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIE5ldHdv
cmtQcm9jZXNzUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNw
cAppbmRleCAxNzU5ZjhhNDkzNjdkMDUyZTVmY2FlNTE3M2RhMjY3MjUzOTdmNjYwLi4yZWQxMDc1
YzYwMGViZGRlYTVlNGZmNTRmYWE5MWRkZDVmNWJlMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlTG9hZFN0YXRlLmNwcApAQCAtMjA2LDkgKzIwNiw5IEBAIGJvb2wgUGFnZUxvYWRT
dGF0ZTo6aGFzT25seVNlY3VyZUNvbnRlbnQoY29uc3QgRGF0YSYgZGF0YSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKGRhdGEuc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKQot
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhkYXRhLnByb3Zpc2lvbmFsVVJMLCAi
aHR0cHMiKTsKKyAgICAgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJcyhkYXRhLnByb3Zpc2lvbmFs
VVJMLCAiaHR0cHMiKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzKGRhdGEudXJs
LCAiaHR0cHMiKTsKKyAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzKGRhdGEudXJsLCAiaHR0cHMi
KTsKIH0KIAogYm9vbCBQYWdlTG9hZFN0YXRlOjpoYXNPbmx5U2VjdXJlQ29udGVudCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9y
ZS5jcHAKaW5kZXggMjMxMDc1YWMzNTk5YmFkMWQxOWFkNGQ3YzQyZmM3MmZmOThjZGEwMy4uNTEz
MmI4M2JmYWFhYTEzZjQ3NmE2NjM2NTFjZDM2MjAwNjY0YWVmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMzEsMTAg
KzMxLDEwIEBACiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
SW5mb1N0b3JlLmgKaW5kZXggNmU5ZWVmYzhmNWY0MzhhZTg5YTJmMjVhYzg4MmI1NTA3ZmVlMWIz
NC4uNTU1OTdmMzQ0YmY1MTM5YjlmNTY3M2MzMGY4OGM3MjgxNTdhZjk5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oCkBAIC0zMSwx
MCArMzEsNiBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFBsdWdpbkluZm9TdG9yZTsKQEAgLTUzLDcgKzQ5LDcgQEAgY2xhc3MgUGx1Z2luSW5mb1N0b3Jl
IHsKICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZvciBhIHBsdWctaW4gdGhhdCBjYW4gaGFuZGxl
IHRoZSBnaXZlbiBNSU1FIHR5cGUuCiAgICAgLy8gSWYgdGhlIE1JTUUgdHlwZSBpcyBudWxsLCB0
aGUgZmlsZSBleHRlbnNpb24gb2YgdGhlIGdpdmVuIHVybCB3aWxsIGJlIHVzZWQgdG8gaW5mZXIg
dGhlCiAgICAgLy8gcGx1Zy1pbiB0eXBlLiBJbiB0aGF0IGNhc2UsIG1pbWVUeXBlIHdpbGwgYmUg
ZmlsbGVkIGluIHdpdGggdGhlIHJpZ2h0IE1JTUUgdHlwZS4KLSAgICBQbHVnaW5Nb2R1bGVJbmZv
IGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29y
ZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzID0gV2ViQ29yZTo6UGx1Z2luRGF0YTo6
QWxsUGx1Z2lucyk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luKFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBl
cyA9IFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpOwogCiAgICAgLy8gUmV0dXJucyB0
aGUgaW5mbyBmb3IgdGhlIHBsdWctaW4gd2l0aCB0aGUgZ2l2ZW4gYnVuZGxlIGlkZW50aWZpZXIu
CiAgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luV2l0aEJ1bmRsZUlkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKTsKQEAgLTYzLDcgKzU5LDcgQEAgY2xhc3MgUGx1
Z2luSW5mb1N0b3JlIHsKIAogICAgIHN0YXRpYyBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGRlZmF1
bHRMb2FkUG9saWN5Rm9yUGx1Z2luKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKIAotICAgIGJv
b2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBwbHVnaW5VUkwsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgcGFnZVVSTCk7CisgICAgYm9vbCBpc1N1cHBvcnRlZFBsdWdpbihjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHBsdWdpblVSTCwgY29uc3QgU3RyaW5nJiBmcmFt
ZVVSTFN0cmluZywgY29uc3QgVVJMJiBwYWdlVVJMKTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luSWRl
bnRpZmllcnMoKTsKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBsdWdpbihTdHJpbmcmJiBtYXRjaGlu
Z0RvbWFpbiwgU3RyaW5nJiYgaWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmc+JiYgbWltZVR5cGVz
LCBIYXNoU2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7CiAgICAgdm9pZCBjbGVhclN1cHBvcnRlZFBs
dWdpbnMoKSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9IHN0ZDo6bnVsbG9wdDsgfQpAQCAtMTA0LDcg
KzEwMCw3IEBAIGNsYXNzIFBsdWdpbkluZm9TdG9yZSB7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5n
PiBtaW1lVHlwZXM7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBleHRlbnNpb25zOwogICAgIH07
Ci0gICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3VwcG9ydGVkUGx1Z2lu
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBwbHVnaW5VUkwp
OworICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0IFN1cHBvcnRlZFBsdWdp
biYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1Z2luVVJMKTsKIAogICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbj4+IG1fc3VwcG9ydGVkUGx1Z2lu
czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9Q
bHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggZDkwZjBhOWVhMDc0ZjZmNWY5MWJk
YmFhNjY3YmUwMjIyZTU4MjczOS4uZmFlY2YzMWRmNzk1ZDMxNjM4NjQ5ZDIyNDM4MDdjZjk3NWIy
YzU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1
Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMzQsMTIgKzM0LDEyIEBACiAjaW1w
b3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBUmVtb3RlTGF5
ZXJTZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPGNydF9leHRlcm5zLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHls
ZC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHNwYXdu
Lmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBAaW50ZXJmYWNlIFdLUGxhY2Vob2xk
ZXJNb2RhbFdpbmRvdyA6IE5TV2luZG93IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU2FmZUJyb3dzaW5nUmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZl
QnJvd3NpbmdSZXN1bHQuaAppbmRleCA3OTNiZjRiYTRhZjczZGEyMGJkOTU3YTRiZmMwMzEyNWRm
M2M3Nzc2Li4zNDIyMDQ3YWIyMDgwYjY5YmNiYjhkMzM4MzhhNzJkOGNhZTk5NmE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaApAQCAtMjUsOCArMjUs
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgU1NCU2VydmljZUxvb2t1cFJlc3VsdDsK
QEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFNhZmVCcm93c2lu
Z1Jlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNhZmVCcm93c2luZ1Jlc3VsdD4gewogcHVibGlj
OgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLSAgICBzdGF0aWMgUmVmPFNhZmVCcm93c2luZ1Jl
c3VsdD4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAq
cmVzdWx0KQorICAgIHN0YXRpYyBSZWY8U2FmZUJyb3dzaW5nUmVzdWx0PiBjcmVhdGUoVVJMJiYg
dXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTYWZlQnJvd3NpbmdSZXN1bHQoV1RGTW92ZSh1cmwpLCByZXN1bHQp
KTsKICAgICB9CiAjZW5kaWYKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3Vy
bDsgfQogICAgIGNvbnN0IFN0cmluZyYgcHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zp
ZGVyOyB9CiAgICAgYm9vbCBpc1BoaXNoaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BoaXNoaW5n
OyB9CiAgICAgYm9vbCBpc01hbHdhcmUoKSBjb25zdCB7IHJldHVybiBtX2lzTWFsd2FyZTsgfQpA
QCAtNTAsOSArNTAsOSBAQCBjbGFzcyBTYWZlQnJvd3NpbmdSZXN1bHQgOiBwdWJsaWMgUmVmQ291
bnRlZDxTYWZlQnJvd3NpbmdSZXN1bHQ+IHsKIAogcHJpdmF0ZToKICNpZiBIQVZFKFNBRkVfQlJP
V1NJTkcpCi0gICAgU2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNvcmU6OlVSTCYmLCBTU0JTZXJ2aWNl
TG9va3VwUmVzdWx0ICopOworICAgIFNhZmVCcm93c2luZ1Jlc3VsdChVUkwmJiwgU1NCU2Vydmlj
ZUxvb2t1cFJlc3VsdCAqKTsKICNlbmRpZgotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKKyAgICBV
UkwgbV91cmw7CiAgICAgU3RyaW5nIG1fcHJvdmlkZXI7CiAgICAgYm9vbCBtX2lzUGhpc2hpbmcg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc01hbHdhcmUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggOGJjNGE3NTNmYTc2
NzNkNDExYjliNGNmNWI1NDQyOTc5ZDY5MzIwNC4uMmVhNzlmODJkMTM5ZTFkYjVlMjcxODFlNDI1
YzllZWUxNTE4ZTIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVu
ZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0
aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
eXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCmluZGV4IDk0OWM4ZGY3MjFlZDllZDM1YTdkYTY4ZWM3
Y2Y5MTI3OWVmOTBhMzEuLjI2OWQwYzMyZmIzMjA4NGI1N2U3ZDE2YjBjY2YyNWNlZjc0ZjljMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAj
aWYgVVNFKFFVSUNLX0xPT0spCiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnRyb2xsZXI7CkBAIC01
MCw3ICs1MCw3IEBAIGNsYXNzIFN5c3RlbVByZXZpZXdDb250cm9sbGVyIHsKIAogICAgIHZvaWQg
c3RhcnQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwog
ICAgIHZvaWQgdXBkYXRlUHJvZ3Jlc3MoZmxvYXQpOwotICAgIHZvaWQgZmluaXNoKFdlYkNvcmU6
OlVSTCk7CisgICAgdm9pZCBmaW5pc2goVVJMKTsKICAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZv
aWQgZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggZTMzMTY3YTg5NTBj
MTY4ZjAxYzAzMmNlYjllNWY4Zjk4MWU1MTM4MC4uOWYyNDBkMzAyMWVkZjg2YzdjYWVkN2U4MTQ1
OTUxZGVkMzI2MGUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5LmgKQEAgLTcxLDEwICs3MSwxMCBAQCBjbGFzcyBXZWJDb29raWVNYW5hZ2Vy
UHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb29raWVN
YQogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQs
IFdhbGxUaW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICAg
ICB2b2lkIHNldENvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwg
RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgc2V0Q29v
a2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVu
Y3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgc2V0Q29va2ll
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBV
UkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lkIGdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQs
IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZ2V0Q29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9pZCAoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgdm9pZCBzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5
LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChIVFRQ
Q29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggMjk3YWE4YWYzMjU1YjBkYWY0YzQ3M2Fl
NzczZTcwZGFjNjliNDVjOC4uNDk3YjIzMTdiN2RjZjE2NmY3MWRjNDAwZTVmZjc4ZmQwZWExZGMz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtODAsMTQgKzgw
LDE0IEBAIGNsYXNzIFdlYkZyYW1lUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpGcmFtZT4gewogCiAgICAgRnJhbWVMb2FkU3RhdGUmIGZyYW1lTG9hZFN0
YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZTsgfQogCi0gICAgdm9pZCBsb2FkVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgbG9hZFVSTChjb25zdCBVUkwmKTsKICAgICB2
b2lkIHN0b3BMb2FkaW5nKCkgY29uc3Q7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7IH0KLSAgICBjb25zdCBXZWJD
b3JlOjpVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0
ZS5wcm92aXNpb25hbFVSTCgpOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lTG9hZFN0YXRlLnVybCgpOyB9CisgICAgY29uc3QgVVJMJiBwcm92aXNpb25hbFVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUucHJvdmlzaW9uYWxVUkwoKTsgfQog
Ci0gICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBj
b25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CisgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVS
TChjb25zdCBVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CiAKICAgICBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9NSU1FVHlwZTsgfQogICAgIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNQbHVnaW5E
b2N1bWVudDsgfQpAQCAtMTA4LDEzICsxMDgsMTMgQEAgY2xhc3MgV2ViRnJhbWVQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkZyYW1lPiB7CiAgICAgdm9p
ZCBnZXRNYWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0YShBUEk6OlVSTCosIEZ1
bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAotICAg
IHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV2Vi
Q29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwm
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChj
b25zdCBVUkwmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKICAgICB2b2lk
IGRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgV2ViQ2VydGlmaWNhdGVJ
bmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50KTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWQoKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkKCk7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOyAvLyBlZy4gYW5jaG9yIG5hdmlnYXRpb24s
IHNlc3Npb24gc3RhdGUgY2hhbmdlLgorICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bihjb25zdCBVUkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRlIGNo
YW5nZS4KICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGlj
aWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgVmVjdG9yPFJlZjxTYWZlQnJvd3Np
bmdSZXN1bHQ+PiYmKT4mJiwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDg0NDIwYTEzNTc0
OWM0OWYyM2Q4ZTJjNDkwYzhkZDk0NzZjZDMzN2YuLjU1NGU3NDQ4ZWM0YWNmODY5NzNkMjZiOWRh
MDBhZDFjNjNiY2Q5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuaApAQCAtNTAsMTAgKzUwLDYgQEAgT0JKQ19DTEFTUyBXS0luc3BlY3RvclZpZXdDb250
cm9sbGVyOwogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFt
ZVByb3h5OwpAQCAtMTUxLDcgKzE0Nyw3IEBAIGNsYXNzIFdlYkluc3BlY3RvclByb3h5CiAgICAg
c3RhdGljIFN0cmluZyBpbnNwZWN0b3JQYWdlVVJMKCk7CiAgICAgc3RhdGljIFN0cmluZyBpbnNw
ZWN0b3JUZXN0UGFnZVVSTCgpOwogICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yQmFzZVVSTCgp
OwotICAgIHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdEluc3BlY3RvclBhZ2UoY29uc3QgV2ViQ29y
ZTo6VVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShjb25z
dCBVUkwmKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtV2luZG93V2lkdGg7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1XaW5kb3dIZWlnaHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwCmluZGV4IDNhNTk0YmI3YjRhMjYwYjk0YjA4ZmZjYmVkYzJhZWNhY2U5NDFh
ZDcuLjAyODEyY2Y3ZmJlN2I0ZTU2ZjI3NTc5MmVmMjk0MGQ5ZWVmZDg2YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNp
bmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggNDIyZjI2YWVhMTg0OGE0MDlhODI4N2MzMjY1NjViM2YzZWQxMzdj
MC4uODg2YmMyYmQxMzNjNjM5YTBkMGNlNGE3ZGZlOGUzYzZiNDA2Nzc0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTMsMTMgKzE1MywxMyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGlj
YXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQ
YXJzZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0u
aD4KIApAQCAtMTA3MSw3ICsxMDcxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKIAogICAg
IGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAotICAg
IG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJh
c2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IGJsYW5rVVJMKCkuc3RyaW5nKCkpOworICAgIG1f
cGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJhc2VV
UkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSk7CiAKICAg
ICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKQEAgLTEw
OTIsNyArMTA5Miw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9h
ZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgcmV0dXJuIFdURk1v
dmUobmF2aWdhdGlvbik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRN
TChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5y
ZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgYm9vbCBmb3JTYWZlQnJvd3Npbmcp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNl
VVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIGJv
b2wgZm9yU2FmZUJyb3dzaW5nKQogewogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0
aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90
IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQg
YXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCkBAIC0x
MTQxLDcgKzExNDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQ
STo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogICAgICAgICByZWF0dGFj
aFRvV2ViUHJvY2VzcygpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0
ZS50cmFuc2FjdGlvbigpOwotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVz
dFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgbV9wYWdlTG9hZFN0
YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBXVEY6OmJsYW5rVVJMKCku
c3RyaW5nKCkpOwogCiAgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9h
ZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsKQEAgLTExNjAsNyArMTE2MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBT
dHJpbmcmIHVybCwgSW50UG9pCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChX
VEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghaXNWYWxpZCgpKQpAQCAtMzUwNiw3ICszNTA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKICAgICBtX25hdmlnYXRp
b25TdGF0ZS0+ZGlkRGVzdHJveU5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJiB1cmwsIFdlYkNvcmU6
OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCwgVVJMJiYgdW5yZWFjaGFibGVV
UkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9y
IHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC0zNjA0LDcgKzM2MDQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlEKQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENhbmNlbENsaWVudFJlZGlyZWN0
KCp0aGlzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJM
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIFdlYkNvcmU6OlVSTCYmIHVybCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBVUkwmJiB1cmwpCiB7CiAgICAgUGFnZUNsaWVudFByb3Rl
Y3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtMzg3NCw3ICszODc0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBX
ZWJDb3JlOjpVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI0MSw3
ICs0MjQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKICAgICB9KTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJDb3JlOjpVUkwmJiB1
cmwsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZp
Y2F0aW9ucykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24o
VVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiYm
IG5vdGlmaWNhdGlvbnMpCiB7CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZW50UnVsZUxp
c3ROb3RpZmljYXRpb24oKnRoaXMsIFdURk1vdmUodXJsKSwgV1RGTW92ZShpZGVudGlmaWVycyks
IFdURk1vdmUobm90aWZpY2F0aW9ucykpOwogfQpAQCAtNTk1Miw3ICs1OTUyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
IHJlYXNvbikKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAobV9wcm9jZXNzLT5pc1VuZGVy
TWVtb3J5UHJlc3N1cmUoKSkgewotICAgICAgICBTdHJpbmcgZG9tYWluID0gV2ViQ29yZTo6dG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihXZWJDb3JlOjpVUkwoeyB9LCBjdXJyZW50VVJMKCkp
Lmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIGRvbWFpbiA9IFdlYkNvcmU6OnRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oVVJMKHsgfSwgY3VycmVudFVSTCgpKS5ob3N0KCku
dG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aEVuaGFuY2VkUHJpdmFjeShXZWJDb3JlOjpEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OmRvbWFpbkNhdXNpbmdKZXRzYW1LZXkoKSwgZG9tYWluLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB9CkBAIC03MDMxLDcgKzcwMzEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBl
ZEtleSwgYm9vbCYgc3VjYwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBT
dHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0cmluZyYg
cmVzdWx0KQordm9pZCBXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5n
LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgUGFnZUNsaWVudFByb3Rl
Y3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNzY3Niw5ICs3Njc2LDkgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+
JiYgaGFuZGxlciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgYXV0byBjYW5vbmljYWxp
emVkU2NoZW1lID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUpOwor
ICAgIGF1dG8gY2Fub25pY2FsaXplZFNjaGVtZSA9IFdURjo6VVJMUGFyc2VyOjptYXliZUNhbm9u
aWNhbGl6ZVNjaGVtZShzY2hlbWUpOwogICAgIEFTU0VSVChjYW5vbmljYWxpemVkU2NoZW1lKTsK
LSAgICBBU1NFUlQoIVVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKGNhbm9uaWNhbGl6ZWRTY2hl
bWUudmFsdWUoKSkpOworICAgIEFTU0VSVCghV1RGOjpVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVt
ZShjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKIAogICAgIGF1dG8gc2NoZW1lUmVzdWx0
ID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lLmFkZChjYW5vbmljYWxpemVkU2NoZW1lLnZh
bHVlKCksIGhhbmRsZXIuZ2V0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoc2NoZW1lUmVzdWx0LCBz
Y2hlbWVSZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGU2NmM1NGE4YTMyNTgzYmJmNzhiMGI3M2Y3YWQ5YTNjZWNjYzY1NTguLmVlZGE3
MTViNzAxYzE4YWE1ZjMyMzVhY2NmODdiZjc4ZTNjOTFiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04Myw3ICs4Myw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2luZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KICNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC05
NSw2ICs5NCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDY0LDcgKzQ2NCw3IEBAIGNsYXNzIFdlYlBhZ2VQ
cm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAg
ICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3Jl
OjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1l
cywgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gbG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHJl
c291cmNlRGlyZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAg
ICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwotICAg
IHZvaWQgbG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRy
LCBib29sIGZvclNhZmVCcm93c2luZyA9IGZhbHNlKTsKKyAgICB2b2lkIGxvYWRBbHRlcm5hdGVI
VE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhID0gbnVsbHB0ciwgYm9vbCBmb3JTYWZlQnJvd3NpbmcgPSBmYWxzZSk7CiAgICAg
dm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
ID0gbnVsbHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGlj
ayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2Vi
Q29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogCkBAIC0xMDY0LDggKzEwNjQsOCBAQCBjbGFz
cyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpQYWdlPgogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3Ry
aW5nJiByZXN1bHQpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBX
ZWJDb3JlOjpVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJik7Ci0gICAgdm9pZCBzYXZl
UERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFdl
YkNvcmU6OlVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsK
KyAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2Vz
dGVkRmlsZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJ
OjpEYXRhJik7CisgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5n
JiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNhdmVQREZUb1Rl
bXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25SYXcoY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywg
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBk
ZlVVSUQpOwogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRp
dmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25z
dCBTdHJpbmcmIHBkZlVVSUQpOwpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgY2xhc3MgV2ViUGFnZVBy
b3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAg
ICB2b2lkIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBib29sJiBzdWNj
ZWVkZWQsIFZlY3Rvcjx1aW50OF90PiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmlu
ZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7
CisgICAgdm9pZCBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5
U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiwgU3Ry
aW5nJiByZXN1bHQpOwogCiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCwg
V2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMsIFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CiAKQEAgLTEzNDYsNyArMTM0Niw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBn
ZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
ICNlbmRpZgogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVS
TCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vz
cyk+JiYpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JVUkws
IGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKIAog
ICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgcHJlZmVyZW5jZXNTdG9yZSgpIGNvbnN0OwogCkBAIC0x
NDExLDE3ICsxNDExLDE3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBkaWRDcmVhdGVTdWJmcmFt
ZSh1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBm
cmFtZUlELCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYpOwogCi0gICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6OlVSTCYmIHVucmVhY2hhYmxl
VVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBV
UkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSk7CiAg
ICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQp
OwotICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmKTsKKyAgICB2b2lkIGRp
ZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBV
c2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBm
cmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29u
c3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5z
ZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsK
LSAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlLCBXZWJDb3JlOjpVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBVUkwmJiwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZU1haW5Eb2N1bWVudCh1aW50NjRf
dCBmcmFtZUlEKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE0NDgsMTEgKzE0
NDgsMTEgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6
Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNl
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBj
YW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGJlZ2lu
U2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5Jik7CisgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYs
IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCiAgICAgdm9pZCB3aWxsU3VibWl0Rm9y
bSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICAgICAgCi0gICAgdm9pZCBjb250ZW50UnVs
ZUxpc3ROb3RpZmljYXRpb24oV2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRp
ZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7CisgICAgdm9pZCBjb250ZW50
UnVsZUxpc3ROb3RpZmljYXRpb24oVVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMs
IFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7CiAKICAgICAvLyBIaXN0b3J5IGNsaWVu
dAogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdh
dGlvbkRhdGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwpAQCAtMTQ3Myw4ICsxNDczLDggQEAg
Y2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6UGFnZT4KICAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50
MzJfdCBvcGFxdWVQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2lu
c1BhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcGFnZVVSTFN0cmluZyk7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6
VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVk
UmVwbHkmJik7Ci0gICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJM
JiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVs
YXllZFJlcGx5JiYpOworICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7CisgICAg
dm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOwogI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xiYXJzQXJlVmlzaWJsZShib29sIHRvb2xi
YXJzQXJlVmlzaWJsZSk7CiAgICAgdm9pZCBnZXRUb29sYmFyc0FyZVZpc2libGUoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHkmJik7CkBA
IC0xNjg3LDcgKzE2ODcsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQgc2V0UGx1Z2luQ29tcGxl
eFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVy
LCB1aW50NjRfdCBjb21wbGV4VGV4dElucHV0U3RhdGUpOwogI2VuZGlmCiAKLSAgICBib29sIG1h
eWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgYm9vbCBtYXliZUluaXRpYWxpemVTYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYp
OwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIHZvaWQgdG9nZ2xl
U21hcnRJbnNlcnREZWxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlZmJiNGIxZjg3YzQ3OGZiMDM4MzI2Yjk5NDAyN2Yy
MmE3ODBkNWE0Li5jMGQ3ZDgyMTI1NGMzZTdiYTlmYjAzZDllN2Y1YThmMWQ2ZjRlYWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0zNCw4ICszNCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgVW5hdmFpbGFi
bGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29u
LCBTdHJpbmcgbWltZVR5cGUsIFN0cmluZyBwbHVnaW5VUkxTdHJpbmcsIFN0cmluZyBwbHVnaW5z
cGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcgcGFn
ZVVSTFN0cmluZykKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBF
TkFCTEUoV0VCR0wpCi0gICAgV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMIHVybCkgLT4g
KHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKLSAgICBSZXNvbHZlV2ViR0xQb2xpY3lGb3JV
UkwoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKKyAg
ICBXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVs
YXllZAorICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3Qg
bG9hZFBvbGljeSkgRGVsYXllZAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICBEaWRDaGFu
Z2VWaWV3cG9ydFByb3BlcnRpZXMoc3RydWN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBh
dHRyaWJ1dGVzKQogICAgIERpZFJlY2VpdmVFdmVudCh1aW50MzJfdCB0eXBlLCBib29sIGhhbmRs
ZWQpCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
IERpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6R2xvYmFs
V2luZG93SWRlbnRpZmllciB3aW5kb3dJZGVudGlmaWVyKQogCiAgICAgIyBGcmFtZSBsb2FkIG1l
c3NhZ2VzCi0gICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVS
TCB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgVVJMIHVybCwgVVJMIHVucmVhY2hhYmxlVVJMLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAg
V2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyB1cmwsIGRvdWJsZSBkZWxheSkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwp
CisgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwpCiAgICAgRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcg
cHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRl
SW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29u
dGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGYWlsTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKQEAgLTE0NSw3ICsxNDUs
NyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogICAgIERpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCB1aW50MzJfdCB0eXBlLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQorICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5cGUsIFVSTCB1cmwsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ2hhbmdlTWFpbkRvY3VtZW50KHVpbnQ2
NF90IGZyYW1lSUQpOwogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCkKIApAQCAtNDI3LDcgKzQyNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50
U2VhcmNoPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUp
IC0+IChWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiByZXN1bHQpCiAKLSAgICBTYXZlUERG
VG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBXZWJDb3Jl
OjpVUkwgb3JpZ2luYXRpbmdVUkwsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFNhdmVQ
REZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUsIFVSTCBv
cmlnaW5hdGluZ1VSTCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBTYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxp
Y2F0aW9uKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3Ry
aW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIHBkZlVVSUQpCkBAIC00ODcsNyAr
NDg3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIERpZFJlc2lnbklucHV0
RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogCi0gICAgQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYkNvcmU6OlVSTCB1cmwsIFZl
Y3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiBub3RpZmljYXRpb25zKQor
ICAgIENvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihVUkwgdXJsLCBWZWN0b3I8U3RyaW5nPiBp
ZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9ucykKIAogI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCiAgICAgQWRkUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0X3QgY29udGV4dElkKQpAQCAtNTQ2LDYgKzU0Niw2
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RvcERpc3BsYXlMaW5rKHVuc2ln
bmVkIG9ic2VydmVySUQpCiAjZW5kaWYKIAotICAgIFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFsbGVuZ2VTdHJpbmcsIFdl
YkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQorICAgIFNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFsbGVuZ2VT
dHJpbmcsIFVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggODE3NWEzYzY4NWY3NDI3ZjE1NDE0OTVh
ZjIxNTA5YWM5OGMxZjE3ZS4uMGEwMmUzYmQ3MTg4ZGRlMDA1NzAyNjZkMDhiMjFiNWQzNzg3Nzkz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtODYs
NyArODYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25J
RC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CkBAIC05NCw2ICs5Myw3IEBACiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1
ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCmluZGV4IDE0NDQyOGI2ZjA5ZGM5YjVlZjcxNzU1N2Y2NDQ0Y2FlZGU1NGEw
YzEuLmIxZTRjNWQxY2M0OTIxMDEyMTYzNWU4N2FiYjc5NjdkMzQxZDVmMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNz
IFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6UHJvY2Vzc1BvCiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3Jr
ZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVB
c0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBw
cmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBwcmVjb25u
ZWN0VG9TZXJ2ZXIoY29uc3QgVVJMJik7CiAKICAgICBWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVk
TGlua1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdldCgpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDllODQ0Y2RiNWU2
ZjI5YmQ4YTRkMzE1Y2VmZmRiNmRjYzE4MTE5MzIuLmFkMjczYTIyODhlZTM4OWI2NmY0ODU4ZDJl
NDYxYTUxOWVkOTEzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGlj
TG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2goKQog
I2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAgICAgaWYgKHBhZ2VzLnNpemUoKSA9PSAx
KSB7CiAgICAgICAgIGF1dG8mIHBhZ2UgPSAqcGFnZXNbMF07Ci0gICAgICAgIFN0cmluZyBkb21h
aW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdlYkNvcmU6OlVSTCh7IH0sIHBhZ2Uu
Y3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIFN0cmluZyBkb21haW4g
PSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFVSTCh7IH0sIHBhZ2UuY3VycmVudFVSTCgp
KS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHBhZ2UubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5KFdl
YkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6ZG9tYWluQ2F1c2luZ0NyYXNoS2V5KCksIGRv
bWFpbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBlMGE2N2NiNzg5ZGZmNmQyMGFhNWI5NWRh
NjAxZmMzZjlmYzJlOGM2Li4xMjZhZDI2YjY2MDljMjIyNmRlYzk4NmI1NTJkNTI3ZGFlNDIwODZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNTcsNyAr
NTcsNiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogc3RydWN0IFBsdWdpbkluZm87CiBz
dHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQpAQCAtMTQ2LDEwICsxNDUsMTAgQEAgY2xhc3Mg
V2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9u
c2l2ZW5lc3NUaW1lcjo6Q2wKIAogICAgIHZvaWQgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVh
ZFNhbmRib3hFeHRlbnNpb24oKSB7IG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4
dGVuc2lvbiA9IHRydWU7IH0KICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29u
c3QgU3RyaW5nJik7Ci0gICAgYm9vbCBoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgaGFzQXNzdW1lZFJlYWRBY2Nlc3NUb1VSTChj
b25zdCBVUkwmKSBjb25zdDsKIAogICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9j
ZXNzKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9j
ZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21X
ZWJQcm9jZXNzKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgZnVsbEtleWJvYXJkQWNj
ZXNzRW5hYmxlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAzMTc4MzZiNDJmZjY3NGU1
N2I0Y2JlYWVlODcxZGYxMzQ3ZWU3NWY0Li5mOGQ5Mjg0NWE2M2ZhMmIzOWIxN2IxZWJlODliMTcx
NWZhN2JhNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZShib29sIHZhbAogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRS
ZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c3VibWl0VGVsZW1ldHJ5KCkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5
JiBmcmFtZSwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZy
YW1lUHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDZjNDEwZmE0YTk1
YTNjMDA4ZDU3YjIzZjZjODMxZDllY2QwNDA3ZDAuLjU4MWEyYWU5MThiZTc0OWY2YTNhMzRjMDYy
OGE1MDQ1NGE0N2JiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw3ICs0MSw2IEBAIGNsYXNz
IFdvcmtRdWV1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwotY2xhc3MgVVJMOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiB9CiAKQEAgLTg0
LDI4ICs4MywyOCBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUmVzbwogCiAgICAgdm9pZCBhcHBsaWNh
dGlvbldpbGxUZXJtaW5hdGUoKTsKIAotICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0
IFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpOwot
ICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25z
dCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgV2ViQ29yZTo6
VVJMJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNl
dFByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGxvZ0Zy
YW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiwgY29uc3QgVVJMJiBwYWdlVVJMLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKTsK
KyAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFj
dGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2
b2lkIHNldExhc3RTZWVuKGNvbnN0IFVSTCYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291
cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBk
dW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKTsKLSAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBpc1ZlcnlQ
cmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihj
b25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZy
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0
ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YkZyYW1lLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
LSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhjb25zdCBXZWJDb3JlOjpVUkwm
IGhvc3RSZWRpcmVjdGVkRnJvbSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0UmVkaXJlY3RlZFRv
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNsZWFyUHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9v
bCk7Ci0gICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJmcmFtZSwgY29uc3QgV2ViQ29yZTo6
VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0
b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3Qg
V2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJl
ZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShj
b25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3RO
YW1lUmVkaXJlY3RlZEZyb20pOwotICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRv
KGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29uc3QgV2ViQ29yZTo6VVJM
JiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBpc1ByZXZhbGVudFJl
c291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXIoY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiB0b3BGcmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1l
VW5kZXIoY29uc3QgVVJMJiBzdWJGcmFtZSwgY29uc3QgVVJMJiB0b3BGcmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0
aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0IFVSTCYgaG9zdFJlZGly
ZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjbGVh
clByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIGJvb2wpOworICAgIHZv
aWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVS
TCYgc3ViZnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYg
dG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0
IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAg
IHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiBzdWJyZXNv
dXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKKyAgICB2b2lkIHNldFRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0
IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdEZyb20oY29uc3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBVUkwmIGhvc3RO
YW1lUmVkaXJlY3RlZEZyb20pOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVC
bG9ja2luZ1VwZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Js
b2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgc2NoZWR1bGVDbGVhckJsb2NraW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTMyLDcg
KzEzMSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJSZXNvCiAgICAgdm9pZCByZXNldFBhcmFtZXRl
cnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZv
aWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGVz
dGluZ0NhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFj
aykgeyBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQog
ICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCmluZGV4
IDc5OTI2M2VhYzRhMmMyODgyNDY0ZDllZmFlYTQ2YTg0MzE0OWRhNWYuLjVmNGEzYTVkMTg0M2Vi
YTJiMTQwMjY3MjEwYTQwNDg5ZTdjOTk3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKQEAgLTMyLDEwICszMiwx
MCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRo
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaD4KICNp
bXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBEcmFnU291cmNlU3RhdGUgewogICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGE7CiAgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXRoPiB2aXNpYmxlUGF0aDsKICAgICBTdHJpbmcgbGlu
a1RpdGxlOwotICAgIFdlYkNvcmU6OlVSTCBsaW5rVVJMOworICAgIFVSTCBsaW5rVVJMOwogICAg
IGJvb2wgcG9zc2libHlOZWVkc0RyYWdQcmV2aWV3VXBkYXRlIHsgdHJ1ZSB9OwogCiAgICAgTlNJ
bnRlZ2VyIGl0ZW1JZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQppbmRleCBiYjY2MzQ3NTI1ZjE4
ODcxMDA3Y2U1MDRiZWI5MjI0NTljOTBlMWNhLi5lMzQ2MGY0MTVkMGI4NjhiZGYzYzI5MjVmYzQz
OGI1N2U3ZmY5MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tB
Y3Rpb25TaGVldEFzc2lzdGFudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpAQCAtNDEsMTAgKzQxLDEwIEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5n
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1w
b3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMu
aD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIApA
QCAtMzA0LDcgKzMwNCw3IEBAIC0gKHZvaWQpX2NyZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25z
OihOU0FycmF5ICopYWN0aW9ucyBzaG93TGlua1RpdGxlOihCT09MKXNoCiAgICAgICAgIGlmIChp
c0phdmFTY3JpcHRVUkwpCiAgICAgICAgICAgICB0aXRsZVN0cmluZyA9IFdFQl9VSV9TVFJJTkdf
S0VZKCJKYXZhU2NyaXB0IiwgIkphdmFTY3JpcHQgQWN0aW9uIFNoZWV0IFRpdGxlIiwgIlRpdGxl
IGZvciBhY3Rpb24gc2hlZXQgZm9yIEphdmFTY3JpcHQgbGluayIpOwogICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV2ViQ29yZTo6dXNlclZpc2libGVTdHJpbmcodGFy
Z2V0VVJMKTsKKyAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0cmlu
Zyh0YXJnZXRVUkwpOwogICAgICAgICAgICAgdGl0bGVJc1VSTCA9IFlFUzsKICAgICAgICAgfQog
ICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjAxYzRmNmEzYzU0ZTk5YzcxNjU1NzhiYWU3
MjJmMzhlY2I4ZTU4Yy4uNTMxNmJjM2QwNmM5MmE2ZTcyNzRkYjgxMmM0YjljZjIxMTk1MTdhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCkBAIC04Nyw3ICs4Nyw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJl
RGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0
cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
U2VsZWN0aW9uUmVjdC5oPiAvLyBGSVhNRTogV0syIHNob3VsZCBub3QgaW5jbHVkZSBXZWJLaXQg
aGVhZGVycyEKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC05OCw2
ICs5Nyw3IEBACiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvY29j
b2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC00ODk1LDkgKzQ4OTUsOSBAQCAtICh2b2lkKWFjdGlv
blNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5F
bGVtZW50QXRMbwogLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFz
c2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0
OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAgaWYgKF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50
KQotICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6dXNl
clZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOworICAgICAgICBbX3Rl
eHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6V1RGOjp1c2VyVmlzaWJsZVN0
cmluZyh1cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CiAgICAgZWxzZSBpZiAoX3dlYlNlbGVj
dGlvbkFzc2lzdGFudCkKLSAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJl
U2hlZXRGb3I6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOwor
ICAgICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpXVEY6OnVz
ZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKIH0KIAogI2lmIEhB
VkUoQVBQX0xJTktTKQpAQCAtNjE4Nyw3ICs2MTg3LDcgQEAgLSAoVUlWaWV3Q29udHJvbGxlciAq
KV9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2
aWUKIAogICAgIE5TVVJMICp0YXJnZXRVUkwgPSBjb250cm9sbGVyLnByZXZpZXdEYXRhW1VJUHJl
dmlld0RhdGFMaW5rXTsKICAgICBVUkwgY29yZVRhcmdldFVSTCA9IHRhcmdldFVSTDsKLSAgICBi
b29sIGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0VtcHR5KCkg
JiYgKFdlYkNvcmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29yZVRhcmdldFVSTCkgfHwgV2Vi
Q29yZTo6cHJvdG9jb2xJcyhjb3JlVGFyZ2V0VVJMLCAiZGF0YSIpKTsKKyAgICBib29sIGlzVmFs
aWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0VtcHR5KCkgJiYgKFdURjo6
cHJvdG9jb2xJc0luSFRUUEZhbWlseShjb3JlVGFyZ2V0VVJMKSB8fCBXVEY6OnByb3RvY29sSXMo
Y29yZVRhcmdldFVSTCwgImRhdGEiKSk7CiAKICAgICBpZiAoW19wcmV2aWV3SXRlbUNvbnRyb2xs
ZXIgdHlwZV0gPT0gVUlQcmV2aWV3SXRlbVR5cGVMaW5rKSB7CiAgICAgICAgIF9oaWdobGlnaHRM
b25nUHJlc3NDYW5DbGljayA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggYmRjYzU3MTBmYzdmNDk2
NWYzYzk4ZGUxNzE2MTM1OWZhNzM1NzU4Mi4uNWFhY2M1ZWU5MDQ1YWFmZGMxNmEzNjM1YTFlYmY0
MWE5MjRhNDQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC00MSwxMyArNDEsMTMgQEAKICNpbXBvcnQg
Il9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIl9XS0dlb2xv
Y2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvblBv
c2l0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogLy8g
RklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIKICNpbXBvcnQgPFdlYktp
dC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CkBAIC0xODQsNyArMTg0LDcg
QEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAKICAgICAgICAgaWQ8
V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPj4oW3JlcXVlc3QudmlldyBVSURlbGVnYXRlXSk7CiAgICAgICAgIGlmIChb
dWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RH
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOildKSB7
Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgp
LCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CisgICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJM
KFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tG
cmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqcmVx
dWVzdC5mcmFtZS5nZXQoKSwgKnJlcXVlc3Qub3JpZ2luLmdldCgpKSk7CiAgICAgICAgICAgICBS
ZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2Vi
S2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNl
bGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJh
bWU6ZGVjaXNpb25IYW5kbGVyOikpOwogICAgICAgICAgICAgV0tXZWJWaWV3ICp2aWV3RnJvbVJl
cXVlc3QgPSByZXF1ZXN0LnZpZXcuZ2V0KCk7CkBAIC0yMDAsOCArMjAwLDggQEAgLSAodm9pZCln
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZFJlcXVlc3RHZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6aXNNYWluRnJhbWU6bWFpbkZyYW1lVVJMOildKSB7CiAg
ICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9IHJlcXVl
c3QuZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgICAgICAgICBib29sIGlzTWFpbkZy
YW1lID0gcmVxdWVzdC5mcmFtZSA9PSBtYWluRnJhbWU7Ci0gICAgICAgICAgICBXZWJDb3JlOjpV
UkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7
Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBt
YWluRnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCks
IHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCBtYWluRnJhbWVVUkwoVVJM
KCksIG1haW5GcmFtZS0+dXJsKCkpOwogICAgICAgICAgICAgcmVxdWlyZXNVc2VyQXV0aG9yaXph
dGlvbiA9IFt1aURlbGVnYXRlIF93ZWJWaWV3OnJlcXVlc3Qudmlldy5nZXQoKQogICAgICAgICAg
ICAgICAgICBzaG91bGRSZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOnJlcXVl
c3RGcmFtZVVSTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlzTWFpbkZyYW1lOmlzTWFpbkZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLTGVnYWN5UERGVmlldy5tbQppbmRleCBkMzhmMzFjODE1ZjNjOWYzZTk4ZGE1MmU1NGZi
ODg4ODRlZDBhNDMwLi5hZWEwZDZkMzlmNjJkNzFkOTY3NDQ2ZTY4MjI3ZWJkN2YyODNhZDE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW0KQEAg
LTQzLDExICs0MywxMSBAQAogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2Nh
bGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0
ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIC8vIEFsbCBvZiBVSVBE
RlBhZ2UqIGFyZSBkZXByZWNhdGVkLCBzbyBqdXN0IGlnbm9yZSBkZXByZWNhdGVkIGRlY2xhcmF0
aW9ucwogLy8gaW4gdGhpcyBmaWxlIHVudGlsIHdlIHN3aXRjaCBvZmYgdGhlbS4KQEAgLTc3OSw3
ICs3NzksNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNz
aXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50QXRMbwogLSAodm9pZClhY3Rpb25TaGVldEFz
c2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRX
aXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAgX3dl
YlNlbGVjdGlvbkFzc2lzdGFudCA9IGFkb3B0TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFs
bG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwotICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IHNo
b3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6
Ym91bmRpbmdSZWN0XTsKKyAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVl
dEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsK
ICAgICBfd2ViU2VsZWN0aW9uQXNzaXN0YW50ID0gbmlsOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBkZmY0YzZjYmYwMDMyZTE1NWNiY2I5MWYxM2Fi
ZmIzZGMyMzQwMWVhLi5jZjRlOGE3MzMzNGZmNTdjMjZkY2YxNTJkMjM3NGNhZThkYmNjZjY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KQEAgLTM4LDExICszOCwx
MSBAQAogI2ltcG9ydCAiX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCIKICNpbXBv
cnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRGF0YURldGVjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRy
YXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5o
PgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIEBpbnRlcmZhY2UgV0tQREZW
aWV3ICgpIDxQREZIb3N0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSwgV0tBY3Rpb25TaGVldEFzc2lz
dGFudERlbGVnYXRlPgogQGVuZApAQCAtNDk3LDcgKzQ5Nyw3IEBAIC0gKHZvaWQpYWN0aW9uU2hl
ZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgb3BlbkVsZW1l
bnRBdExvCiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0
YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdGhVUkw6KE5TVVJMICopdXJsIHJlY3Q6KENH
UmVjdClib3VuZGluZ1JlY3QKIHsKICAgICBhdXRvIHNlbGVjdGlvbkFzc2lzdGFudCA9IGFkb3B0
TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6W19ob3N0Vmll
d0NvbnRyb2xsZXIgdmlld11dKTsKLSAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNo
ZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdS
ZWN0XTsKKyAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOldURjo6dXNl
clZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOwogfQogCiAjaWYgSEFW
RShBUFBfTElOS1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVs
bHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklP
Uy5tbQppbmRleCA0ZWRkOTRiZWJjZGRiNTA0MGIwMDk0ZmM0ODdhNTUyNmU2OTI1MGZlLi4yNjU4
YjM2M2I0MTFhM2JiZmI2ZDRkZDZkM2VkYTRkMWFhYjIxY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KQEAgLTQ1LDEyICs0NSwxMiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmlu
Z3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1N0cmluZ1NQSS5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1VS
TEZvcm1hdHRpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5
U1BJLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC05NDEsNyArOTQxLDcgQEAgLSAo
dm9pZClfdXBkYXRlTG9jYXRpb25JbmZvCiAgICAgaWYgKExpbmtQcmVzZW50YXRpb25MaWJyYXJ5
KCkpCiAgICAgICAgIGRvbWFpbiA9IFt1cmwgX2xwX3NpbXBsaWZpZWREaXNwbGF5U3RyaW5nXTsK
ICAgICBlbHNlCi0gICAgICAgIGRvbWFpbiA9IHVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CisgICAg
ICAgIGRvbWFpbiA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKICNlbmRpZgogCiAgICAg
TlNTdHJpbmcgKnRleHQgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IDE3ZjY2YjcxNzc5YzA1
NDljZjY4YWUyODE2NTgxOGE3MjlkNjYzZmUuLjlmNjc4NTg3NmU2OWM3YjY0ZGQyMTAyODUwZTBm
NTYwNGQ4ZTRiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdh
Y3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0xMTMzLDcgKzExMzMsNyBAQCBib29s
IGRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IHNp
emUsIFNlc3Npb25TdGF0ZSYgcwogICAgIH0KIAogICAgIGlmIChhdXRvIHByb3Zpc2lvbmFsVVJM
U3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1
ZShzZXNzaW9uU3RhdGVEaWN0aW9uYXJ5LCBwcm92aXNpb25hbFVSTEtleSkpKSB7Ci0gICAgICAg
IHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgcHJvdmlzaW9uYWxVUkxTdHJpbmcpOworICAgICAgICBzZXNzaW9uU3RhdGUucHJvdmlzaW9u
YWxVUkwgPSBVUkwoVVJMKCksIHByb3Zpc2lvbmFsVVJMU3RyaW5nKTsKICAgICAgICAgaWYgKCFz
ZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
S0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGY4NzIwNzA2NGM3YmU1MWVh
ZWJiMjdhMDMxZDQ5MDUxMTJiMzg4ZjQuLjRhYWZkZmYzZGVhOGNmOTQyZDAwYTQwYzdiNzRhN2Yx
M2M2YzZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzgsMTMgKzM4LDEzIEBACiAjaW1w
b3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvR2VvbWV0
cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0RhdGFEZXRlY3Rv
cnNTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0xvb2t1cFNQSS5oPgogI2ltcG9ydCA8cGFs
L3NwaS9tYWMvTlNNZW51U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1BvcG92ZXJTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL1F1aWNrTG9va01hY1NQSS5oPgogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIFNPRlRfTElOS19GUkFNRVdP
UktfSU5fVU1CUkVMTEEoUXVhcnR6LCBRdWlja0xvb2tVSSkKIFNPRlRfTElOS19DTEFTUyhRdWlj
a0xvb2tVSSwgUUxQcmV2aWV3TWVudUl0ZW0pCkBAIC0yNzYsMTcgKzI3NiwxNyBAQCAtIChpZCA8
TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilfZGVmYXVsdEFuaW1hdGlvbkNv
bnRyb2xsZXIKIAogICAgIFN0cmluZyBhYnNvbHV0ZUxpbmtVUkwgPSBoaXRUZXN0UmVzdWx0LT5h
YnNvbHV0ZUxpbmtVUkwoKTsKICAgICBpZiAoIWFic29sdXRlTGlua1VSTC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMoYWJzb2x1dGVMaW5rVVJMLCAibWFpbHRv
IikpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJtYWls
dG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5r
OwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURl
dGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJ
cyhhYnNvbHV0ZUxpbmtVUkwsICJ0ZWwiKSkgeworICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElz
KGFic29sdXRlTGlua1VSTCwgInRlbCIpKSB7CiAgICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVk
aWF0ZUFjdGlvblRlbExpbms7CiAgICAgICAgICAgICByZXR1cm4gW3NlbGYgX2FuaW1hdGlvbkNv
bnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rXTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChX
ZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGFic29sdXRlTGlua1VSTCkpIHsKKyAgICAg
ICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0ZUxpbmtVUkwpKSB7CiAg
ICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvbkxpbmtQcmV2aWV3OwogCiAgICAg
ICAgICAgICBRTFByZXZpZXdNZW51SXRlbSAqaXRlbSA9IFtOU01lbnVJdGVtIHN0YW5kYXJkUXVp
Y2tMb29rTWVudUl0ZW1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCAyMDlhODVkZWEzYjYz
MGQyN2MxYzIxMjUxNTU2ZGNjMGM1YTgyYjk3Li41NTY5ZGYyZWE4NTVkMTVjNWFlNDcxNDlhNTFh
YjRjMmI0NjM3YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtMzYsNyArMzYsNyBAQAog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYXltZW50Q29vcmRpbmF0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEz
MSw3ICsxMzEsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1
cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgYwogICAgIG1fd2ViUGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6T3BlblBheW1lbnRTZXR1cCht
ZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIHJlcGx5SUQpKTsKIH0KIAotYm9vbCBXZWJQ
YXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmln
aW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0
KQorYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkoY29uc3QgVVJMJiBv
cmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2Vi
Q29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQogewog
ICAgIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5nczsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGxpbmtJY29uVVJMIDogbGlua0ljb25VUkxzKQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yOjpwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQoKQogCiB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBTdHJpbmcm
IHZhbGlkYXRpb25VUkxTdHJpbmcpCiB7Ci0gICAgcGF5bWVudENvb3JkaW5hdG9yKCkudmFsaWRh
dGVNZXJjaGFudChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHZhbGlkYXRpb25VUkxTdHJp
bmcpKTsKKyAgICBwYXltZW50Q29vcmRpbmF0b3IoKS52YWxpZGF0ZU1lcmNoYW50KFVSTChVUkwo
KSwgdmFsaWRhdGlvblVSTFN0cmluZykpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
cjo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5oCmluZGV4IGU0ODg3Y2M4OGFiMWYxOWZiZGE5OWYzYzBiMmM4YWVkMWRi
M2EwNDQuLjAyMTJkNmFkYmJiOTA1MWZiMWJiNDY5NmQ1ZDlhODI5NTFhZjI0YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9y
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvckNsaWVudCwgcHIKICAg
ICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuTWFrZVBheW1l
bnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6
RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAg
IGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvd1Bh
eW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlu
a0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYp
IG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2Vi
Q29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxl
dGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5n
TWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250
YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRl
PiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNo
ZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCAzZjI3MTIzMmQ2M2U0
YTRmNzc0NWVmMjhjNjRlYWU1NTM4YzRiN2I5Li43ZmU5MzM0YmE0ZjM1OWM3MmIwZDkxZDU1NDJh
NzE2NDQ2MmU2ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUv
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC03MSw3ICs3MSw3IEBA
IHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgY29uCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OkNhY2hlcyhtX3Nlc3Npb25JRCwgcmVxdWVz
dElkZW50aWZpZXIsIG9yaWdpbiwgdXBkYXRlQ291bnRlciksIDApOwogfQogCi12b2lkIFdlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
dXJsKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6UmV0cmlldmVSZWNvcmRzKG1fc2Vzc2lvbklELCByZXF1ZXN0
SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1cmwpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5oCmluZGV4IDQ4MGVkZGQ5YjRlNTE1YzRiNGFhZTZkNGM2ZDk0MjU4ZmNiZTI1MmIuLmQyZTBk
ZjJkODYwOTIyYTNiMWUzNTZiZTkyMWU3ODAxOTg2ZGM3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
aApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24gewogICAgIHZvaWQgZG9S
ZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
cikgZmluYWw7CiAgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3Vu
dGVyKSBmaW5hbDsKIAotICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJM
JikgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBVUkwmKSBmaW5hbDsKICAg
ICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNo
UHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKSBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuY3BwCmluZGV4IDUwNzEzMTNlYzYyNTMwN2M0MGI1YjQwMTBmNzBjNjFjNzUw
NDE1ZDcuLjlkNjFlOTFjZWFmYzAwNjE0OWU3MDMyYjg5ZWZmZmJmNWRhMWM1ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYg
ZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6
OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAppbmRleCBiMDU0ODli
OGEyM2JjNzkwYjk1ZTZlYzlmMGQ1YzgyZWQwOWY4NzNjLi5hNGM1ZjY4NGFkNWYxNjM0N2IwNzA3
OTE4NWY3N2E5YWI3YjAwYTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTMxLDEzICszMSwxMyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJveHkgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0
PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VS
TCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgUmVmUHRy
PFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3Rh
cnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9i
U2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyRmls
ZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VS
TCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQp
IG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKSBv
dmVycmlkZTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5k
ZXggMDhkZGJiZWE3MmJkZTdhNjg2Y2U3NWM0ZjRmYzk4NjhjNmFmYjQ4OS4uODAxMmE4NGY0Yzgz
ODg4MDI2MzY3MTkwNjBkNDg1NGE2NGYwNDBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNyw3ICszNyw2IEBAIGNs
YXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTYsNyArNTUsNyBAQCBjbGFzcyBQYWdlTG9hZGVyQ2xpZW50IHsKICAg
ICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxs
TG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQ
STo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0oV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2Vi
UGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CkBAIC05
Niw3ICs5NSw3IEBAIGNsYXNzIFBhZ2VMb2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBm
ZWF0dXJlc1VzZWRJblBhZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJhbWUoV2ViS2l0OjpX
ZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYpIHsgfQotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
dXNlckFnZW50Rm9yVVJMKFdlYktpdDo6V2ViRnJhbWUmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBj
b25zdCB7IHJldHVybiBXVEY6OlN0cmluZygpOyB9CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1
c2VyQWdlbnRGb3JVUkwoV2ViS2l0OjpXZWJGcmFtZSYsIGNvbnN0IFdURjo6VVJMJikgY29uc3Qg
eyByZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpMYXlvdXRN
aWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7IHJldHVybiAwOyB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4IDRjMGM2YWVkMzg5OWQ4YjI4N2NjMTEwZWIw
Nzk3NmZmMTRjNzFhZTMuLjA0NjBlYzYzZjA3OGFkZjVkY2VhYmMzMGVlODI3NjNjZDNmNTg1MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBXS1N0
cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUxheWVyVHJlZUFzVGV4dChXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lUmVmKQogCiBib29sIFdLQnVuZGxlRnJhbWVBbGxvd3NGb2xsb3dpbmdMaW5rKFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9J
bXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVm
KS0+YWxsb3dzRm9sbG93aW5nTGluayhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsK
IH0KIAogYm9vbCBXS0J1bmRsZUZyYW1lSGFuZGxlc1BhZ2VTY2FsZUdlc3R1cmUoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZVJlZikKQEAgLTIxNywxMiArMjE3LDEyIEBAIGJvb2wgV0tCdW5kbGVGcmFt
ZUdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIGRv
dWJsZSoKIAogV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZUZv
clJlc291cmNlV2l0aFVSTChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1VSTFJlZiB1cmxS
ZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPnN1Z2dlc3Rl
ZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
dG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZy
YW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoVVJMKFVSTCgpLCB0
b1dURlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29w
eU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdL
VVJMUmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVm
KS0+bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwo
ZnJhbWVSZWYpLT5taW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChVUkwoVVJMKCksIHRvV1RGU3Ry
aW5nKHVybFJlZikpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVGcmFtZUNvbnRhaW5zQW55Rm9ybUVs
ZW1lbnRzKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwCmluZGV4IDA3ZDAyNDI0MzZiZDQxNDU4MDJjYjE1OWUzYjBkOTcwMTRmM2EzMDguLjllOWEy
YjFkNTI4NmUxNGZjNDQ2OGJjMTAwMmQ1YWE3NjY2MjVmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwCkBAIC02Niw5ICs2Niw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXS0J1bmRs
ZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFn
ZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xvY2FsRGF0YUZvclVSTChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0ltcGwo
cGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5oYXNM
b2NhbERhdGFGb3JVUkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CiB9CiAKIGJv
b2wgV0tCdW5kbGVQYWdlQ2FuSGFuZGxlUmVxdWVzdChXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJl
ZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcApp
bmRleCBiNWUxNjU3YTBkMjFmNmMxYzk3YmI5MDM4ZmQ0YTUwMTk5YmNmMWFkLi43MTU3NDlhNDky
MzljMzFhYWI3ZmMxYWVkZDAyNjIzZTE0ZThhYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgogCi0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNSw3
ICszNSw3IEBAIGdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdURjo6U3RyaW5nIGNvbnN0JiBz
KQogICAgIHJldHVybiBnX3N0cmR1cChzLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1nY2hhciogY29u
dmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpVUkwgY29uc3QmIHMpCitnY2hhciogY29udmVydFRv
VVRGOFN0cmluZyhVUkwgY29uc3QmIHMpCiB7CiAgICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJp
bmcocy5zdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VU
RjhTdHJpbmcuaAppbmRleCBlNDk0MTEzYTNmOGZmNmU5YzRkYmU2OGFmOWYxZDhhMmUyMjJmZWM5
Li5jMzcyNTM1OWI4OTM0N2MxZjg4OTZhZGM1YmNhYjRiNmE0NDk2YzQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVy
dFRvVVRGOFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKQEAgLTIzLDEzICsyMyw5IEBA
CiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBVUkw7Ci19Ci0KIHR5cGVkZWYgY2hhciBnY2hhcjsKIAogZ2NoYXIqIGNvbnZlcnRUb1VURjhT
dHJpbmcoV1RGOjpTdHJpbmcgY29uc3QmIHMpOwotZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmco
V2ViQ29yZTo6VVJMIGNvbnN0JiBzKTsKK2djaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFVSTCBj
b25zdCYgcyk7CiAKICNlbmRpZiAvKiBDb252ZXJ0VG9VVEY4U3RyaW5nX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggMWJiMGJhMTYwMzcyOGJj
MmZjOTI0OTdhY2IwMTM2YmI5OTkwNTcyYi4uMDgzMTc0ZTVlZDIxZjk4Mzk3M2IyNmM3ZDdjOGM0
ODhlMTAyYzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCA0OTM1
NjYxZWUyNDg4ZjYzODAxNGU4NjlkZDhmMTEyMDlhNDhiODEwLi4wMWRkOTkwNzljYjU0ZmI2MzM1
ZWNmYTNlMzczMzVlZTFiNjViZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oCkBAIC0zNCw3ICszNCw2IEBACiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNz
IE9iamVjdDsKIGNsYXNzIFN0cmluZzsKLWNsYXNzIFVSTDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2U+IHsKICAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjAsIFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMiwgV0tCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50VjMsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY0LCBXS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnRWNSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjYsIFdLQnVuZGxlUGFnZUxvYWRlckNs
aWVudFY3LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWOCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Vjk+IFZlcnNpb25zOwpAQCAtNDgsNyArNDcsNyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZQogICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChjb25zdCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKik7CiAKICAgICB2b2lkIHdpbGxMb2FkVVJMUmVxdWVz
dChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmplY3Qq
KSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0
IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBB
UEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQ
YWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYs
IEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtKFdlYlBhZ2UmLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBS
ZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4m
KSBvdmVycmlkZTsKQEAgLTg3LDcgKzg2LDcgQEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZUxvYWRlckNsaWUKIAog
ICAgIHZvaWQgZmVhdHVyZXNVc2VkSW5QYWdlKFdlYlBhZ2UmLCBjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+Jikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2Vi
RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBvdmVycmlkZTsKKyAgICBXVEY6OlN0
cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25zdCBVUkwmKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcygpIGNv
bnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXgg
ZTJhNjk3OGZlMjgzYWQ1M2MzNDhiZjA3MDdhYjY4ZGY3ZDk2MjM2Mi4uOTAzYzZkMDEyYzFkYjI4
OGZiYTIzOGI1NzhiZDA2NTYzNDQ4ZDgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAppbmRleCAxMjc4YzFiNDQzZmFkN2JmYTcxZjEwZjJiNGYyODY4NmI2ZTAz
NDRmLi42NWNmNDIzYWIxNjgyNzI1YWZkOTRhMzE0YmUxNDdiODNlYTlmMWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmluaXNo
UGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNvdXJjZUUKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlcnJvciksIFdURk1vdmUocmVzcG9uc2UpKTsKIH0K
IAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiBmcmFt
ZUxvYWRlciwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhG
cmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3QgcHJlY29ubmVjdGlvbklk
ZW50aWZpZXIgPSBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnMuYWRkKHByZWNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBlMDQwZDA3NTVj
Nzk0ZGJkNzFlYTljNTU4ODQyYTA2NWM1MmRmNWRlLi4xYzJmYjNmMTFlNDVlM2I3ZWE4ODI5NjNm
YTFjYTA5M2Q4ZTZlMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgV2ViTG9h
ZGVyU3RyYXRlZ3kgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kgewogCiAg
ICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lk
IHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sKSBmaW5hbDsK
LSAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpIGZpbmFsOworICAgIHZvaWQg
Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29u
c3QgVVJMJiByZWRpcmVjdFVSTCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdS
ZXF1ZXN0cyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpIGZp
bmFsOwogCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYkxvYWRlclN0cmF0ZWd5IGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKICAgICB2b2lkIHN0YXJ0UGluZ0xvYWQo
V2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBjb25zdCBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAKLSAgICB2
b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oV2ViQ29yZTo6RnJhbWVM
b2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJl
Y29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoUHJl
Y29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYmKTsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3Qg
U0hBMTo6RGlnZXN0JiBib2R5SGFzaCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaAppbmRleCAw
MjQ0ZTVmMmM4ODYyMDUzMTc2OTllY2ZkMWUxYTFiMjNjN2ZkOTk4Li42OWI3ZmEzYjQxNmY0ZWYz
OTZhZWFkZTRjMTIwODRiYjM1MmIxMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTb2NrZXRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpTb2NrZXRQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTb2Nr
ZXRQcm92aWRlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRQcm92
aWRlcik7IH0KLSAgICBSZWY8V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGVTb2Nr
ZXRTdHJlYW1IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBh
cnRpdGlvbikgZmluYWw7CisgICAgUmVmPFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZT4gY3Jl
YXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0
aXRpb24pIGZpbmFsOwogICAgIHZpcnR1YWwgfldlYlNvY2tldFByb3ZpZGVyKCkgeyB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmNwcAppbmRleCA3YTBiOWUzMTJlYjk5ZDQ3YWM1MmRlZTlkZTRhYTY4ZWFmNTRkNzQ3Li4x
ZDVlMjI5YWMyM2RhMzA4N2U0NmQ5MzU1NjVhYWE0ZDY3YjVhMDI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTcw
LDcgKzcwLDcgQEAgUmVmPFdlYlNvY2tldFN0cmVhbT4gV2ViU29ja2V0U3RyZWFtOjpjcmVhdGUo
Y29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUMKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJTb2NrZXRTdHJlYW0odXJsLCBjbGllbnQsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBh
cnRpdGlvbikpOwogfQogCi1XZWJTb2NrZXRTdHJlYW06OldlYlNvY2tldFN0cmVhbShjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGll
bnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlv
bikKK1dlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYgdXJsLCBXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKQogICAgIDogU29ja2V0U3RyZWFt
SGFuZGxlKHVybCwgY2xpZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAppbmRleCAz
ZmViNmE2MzVmZmU5ZTc5MjMxZDMyYjUxYzYzZmI3Mjg3N2Q5OWUzLi4zODlhMGI5OGI3NTk4Y2M2
NjhiZThkYjQ1ZjE3MTFiOGZlOGY3NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0U3RyZWFtIDogcHVibGljIElQQzo6TWVzc2Fn
ZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlLCBwdWJsaWMgSWRlbnRpZmllZDxXZWJTb2NrZXRTdHJlYW0+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNvY2tldFN0cmVhbT4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOworICAgIHN0YXRpYyBSZWY8
V2ViU29ja2V0U3RyZWFtPiBjcmVhdGUoY29uc3QgVVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBh
cnRpdGlvbik7CiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiAgICAg
c3RhdGljIFdlYlNvY2tldFN0cmVhbSogc3RyZWFtV2l0aElkZW50aWZpZXIodWludDY0X3QpOwog
ICAgIApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBXZWJTb2NrZXRTdHJlYW0gOiBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsCiAgICAgSVBDOjpD
b25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CiAKLSAgICBXZWJTb2NrZXRTdHJl
YW0oY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7Cisg
ICAgV2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRp
b24pOwogICAgIH5XZWJTb2NrZXRTdHJlYW0oKTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkQW1v
dW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDAwM2QyN2ExMDE4Nzk4ODlk
YWE2NmZhYTBjNmQ5OTNlOTE2MGUxMGYuLmM2YTUwNjkxNzQwYTVkYjNlNjVmMTk3NTcxYjdiZDQw
MDViYjcxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM4LDggKzM4LDggQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJl
Y3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShVTklY
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggYmNiM2Q3ZmI3NzdkMTMxYzdmMjQ3NmY2NWIxNTJm
MDQzOTAxNDZkNy4uNzRhODRlOTI3Y2Y1YTdkZjYyMjM2Y2Y0YTliZmZiOTU1MTIzOWE4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0xMzksNyArMTM5LDcgQEAgY2xhc3MgTmV0c2NhcGVQbHVn
aW4gOiBwdWJsaWMgUGx1Z2luIHsKIAogICAgIHZvaWQgc2V0SXNQbGF5aW5nQXVkaW8oYm9vbCk7
CiAKLSAgICB2b2lkIHJlZ2lzdGVyUmVkaXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2
b2lkKiBub3RpZmljYXRpb25EYXRhKTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVkaXJlY3QoTmV0c2Nh
cGVQbHVnaW5TdHJlYW0qLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGludCByZWRpcmVjdFJlc3Bv
bnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKICAgICB2b2lkIHVybFJlZGlyZWN0
UmVzcG9uc2Uodm9pZCogbm90aWZ5RGF0YSwgYm9vbCBhbGxvdyk7CiAKICAgICAvLyBNZW1iZXIg
ZnVuY3Rpb25zIGZvciBjYWxsaW5nIGludG8gdGhlIHBsdWctaW4uCkBAIC0yMDQsMTMgKzIwNCwx
MyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1YmxpYyBQbHVnaW4gewogICAgIHZvaWQgZnJh
bWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdHJlYW1XaWxsU2Vu
ZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVS
TCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBv
dmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLAorICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25z
ZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9h
ZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWls
KHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1M
ZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlk
ZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExv
YWRpbmcoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IDQw
NzQwNzhkN2E4ZmI1MzhjZmY0N2RjMWFkYTRmOWQyMGI3MGQyMmYuLmJiNmE1YjA4YzdjY2U1ZGRl
ZDg5OTM2MGY3YWI4MzQwZjAzOTVlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwot
fQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW47CkBAIC01NSw4
ICs1MSw4IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8
TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHsKICAgICB1aW50NjRfdCBzdHJlYW1JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyZWFtSUQ7IH0KICAgICBjb25zdCBOUFN0cmVhbSogbnBTdHJlYW0oKSBjb25z
dCB7IHJldHVybiAmbV9ucFN0cmVhbTsgfQogCi0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29u
c3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0
UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsCisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgVVJMJiByZXF1ZXN0
VVJMLCBjb25zdCBVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNl
U3RhdHVzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBoZWFkZXJzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBlNThk
ZTJjNzYwZGRiMTRjMTJjNGNiZmJmNzVjZTkyZjVhYjhlMDFhLi42ODYyZTMwNGZlZGI4NWI3ODYz
NDcwMGI5ZDZiMzVhNmMzYzIwY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xMzUsMTIgKzEzNSwxMiBAQCBjbGFzcyBQREZQ
bHVnaW4gZmluYWwgOiBwdWJsaWMgUGx1Z2luLCBwcml2YXRlIFdlYkNvcmU6OlNjcm9sbGFibGVB
cmVhIHsKICAgICB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQp
IGZpbmFsOwogICAgIHZvaWQgZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3
YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFsOwotICAgIHZvaWQgc3Ry
ZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25z
ZVN0YXR1cykgZmluYWwgeyB9Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90
IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBp
bnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQorICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJf
dCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQg
c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgZmluYWw7CiAgICAgdm9p
ZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgZmlu
YWw7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKKyAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwog
ICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQg
bWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CkBAIC0zMDYsNyAr
MzA2LDcgQEAgY2xhc3MgUERGUGx1Z2luIGZpbmFsIDogcHVibGljIFBsdWdpbiwgcHJpdmF0ZSBX
ZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSB7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsK
IAotICAgIFdlYkNvcmU6OlVSTCBtX3NvdXJjZVVSTDsKKyAgICBVUkwgbV9zb3VyY2VVUkw7CiAK
ICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
RGF0YVJlZj4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KaW5kZXggNzFiOGNmODMzNDNjNmNmODUyYTBkMDk3MjgzOGRmZmFk
MjcwNmM4YS4uZTRjZDY1MzU2MTE2MjQ2YmZhNjhmNzRiMTZiNDMxNTY4ZDc5NzViNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBA
IC0xNzAyLDcgKzE3MDIsNyBAQCBib29sIFBERlBsdWdpbjo6aGFuZGxlc1BhZ2VTY2FsZUZhY3Rv
cigpIGNvbnN0CiB2b2lkIFBERlBsdWdpbjo6Y2xpY2tlZExpbmsoTlNVUkwgKnVybCkKIHsKICAg
ICBVUkwgY29yZVVSTCA9IHVybDsKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoY29yZVVS
TCkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29yZVVSTCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCA4NzZmNmNlNDhl
Y2NiNjA2MzM5NDc2YTY2NjFmMjZmNGY5MGFhNDcyLi5hYWJkNWU1MDUxYmVjMjlmNTUxMTU3Mzgw
NjFhNmE2MDhlZjIzMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaApAQCAtMjMsMTYgKzIzLDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBQbHVnaW5faAotI2RlZmluZSBQbHVnaW5faAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKQEAgLTUzLDE1ICs1MiwxNSBAQCBjbGFzcyBEZWNvZGVyOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotICAgIGNsYXNz
IEZsb2F0UG9pbnQ7Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotICAgIGNsYXNzIEludFBv
aW50OwotICAgIGNsYXNzIEludFJlY3Q7Ci0gICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBG
bG9hdFBvaW50OwotICAgIGNsYXNzIFNjcm9sbGJhcjsKLSAgICBjbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBGbG9hdFBvaW50OworY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgSW50U2l6
ZTsKK2NsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBTY3JvbGxiYXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODEsNyBAQCBlbnVtIFBsdWdp
blR5cGUgewogY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdp
bj4gewogcHVibGljOgogICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKLSAgICAgICAgV2ViQ29yZTo6
VVJMIHVybDsKKyAgICAgICAgVVJMIHVybDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7
CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlczsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBl
OwpAQCAtMTY3LDEwICsxNjYsMTAgQEAgY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFBsdWdpbj4gewogICAgIHZpcnR1YWwgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3Jp
cHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgPSAwOwogCiAgICAg
Ly8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBtYXkgc2VuZCBhbiBIVFRQIHJlcXVl
c3QuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXNDb2RlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXNDb2Rl
KSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyByZWNl
aXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkws
IHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5h
bWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJl
Y2VpdmUgZGF0YS4KQEAgLTE4Myw3ICsxODIsNyBAQCBjbGFzcyBQbHVnaW4gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZh
aWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSA9IDA7CiAKICAgICAvLyBU
ZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMg
SFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwgCisgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlm
aWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUg
cGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCkBAIC0zMjMs
NSArMzIyLDMgQEAgY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBs
dWdpbj4gewogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OlRvVmFsdWVUeXBl
TmFtZSkgXAogc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYktpdDo6UGx1Z2luJiBwbHVnaW4p
IHsgcmV0dXJuIHBsdWdpbi50eXBlKCkgPT0gV2ViS2l0OjpTcGVjaWZpY1BsdWdpblR5cGU7IH0g
XAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gUGx1Z2luX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIu
aAppbmRleCBhNWM2ZmEwNDNjMzYyMjY5NDFjOGQyMTQ3YjIxMjA4ZWMyZjI5NDc1Li5hMWY4MDdl
MWU1NTA3MjNlZmVlYTE3NzEzM2I4MWRmZjRkMTc2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC00Myw3ICs0Myw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBJbnRS
ZWN0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5oCmluZGV4IGRjNDIxMWQwMGVkODkxMGQzNDdkOGYwY2ExYjc1M2M2YjJlNmVhMWQuLmU2YWIz
ZWQ5YjAzMmZlMDRjMDJkZjVjNjg5MmU0N2Q0ZTY5ZDRhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtODcsMTIgKzg3LDEyIEBAIGNs
YXNzIFBsdWdpblByb3h5IDogcHVibGljIFBsdWdpbiB7CiAgICAgdm9pZCBmcmFtZURpZEZpbmlz
aExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKICAgICB2b2lkIGZyYW1lRGlk
RmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0
cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVz
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZp
bmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFt
RGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwot
ICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVS
TCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlm
aWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlk
ZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRl
eCBmMDc1MmJkOTgyYTE1M2JhZDRiMjkyNDVmMTAzMjE5NzBlYjNhYzkxLi4zY2FhYWM5YWMxY2Qz
ZGJkNmJmNDZmZWM1ZDcxZjE0MWRmNDViMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE2Myw3ICsxMTYzLDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIFJl
ZjxQbHVnaW5WaWV3PiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIC8vIEZpcnN0LCBjaGVjayBpZiB0
aGlzIGlzIGEgamF2YXNjcmlwdDogdXJsLgotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChy
ZXF1ZXN0LT5yZXF1ZXN0KCkudXJsKCkpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFT
Y3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICBwZXJmb3JtSmF2YVNj
cmlwdFVSTFJlcXVlc3QocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjI4
LDcgKzEyMjgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1GcmFtZUxvYWRVUkxSZXF1ZXN0
KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAKIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3Jp
cHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHByb3RvY29s
SXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwoKSkpOworICAgIEFTU0VSVChXVEY6
OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwoKSkpOwogCiAgICAg
UmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgp
OwogICAgIGlmICghZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCA1YzUxYzQ1ZjY0MDlk
ZWVkZDU1ZTkzYzBmZDk4OGI3Yzg3M2Q4MzFhLi4zZjcwYjFlODdiOWFmZThmM2YwNjVhNDE5Y2Nk
Yjk1MmNlZmZjZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBW
ZWN0b3I8UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5JbmZvKFBhZ2Um
IHBhZ2UsIHN0ZDo6b3B0aW9uYWw8VgogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogfQogCi1WZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQYWdlJiBwYWdlLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCkKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6
OndlYlZpc2libGVQbHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYgdXJsKQogewogICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+
PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKICAgICBhdXRvIHBsdWdpbnMgPSBwbHVnaW5J
bmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5k
ZXggMWJiYWQ1YTc5ZmIxMWVjNjgwNzQ5NDdkMDA3YzNjZDU2ZTU4MTlkZC4uODQ2NDJkN2ZjMDEx
ZjhjYWNmNjQxYmIxYWVlOGYyODIzOTNjMDdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiAgICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiAK
ICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdl
Jiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQ
bHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29y
ZTo6UGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBv
dmVycmlkZTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
aAppbmRleCAyYmZhZWU0NzZlMWY0YmNjY2RiMjY2MGZlNWQ4ZTY2YmQ2NzRhM2Q3Li5kY2Q2ZGE1
ODA2YmIzMzJjMjRmZmVjODUxOGVlNTA5NmNiYWU3ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAt
NzksMTMgKzc5LDEzIEBAIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24sIHB1YmxpYyBJCiAgICAgdm9pZCByZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9y
aWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYp
IGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6
RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24o
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpV
UkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBt
YXRjaFJlZ2lzdHJhdGlvbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4s
IGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IG1hdGNoUmVxdWVzdElkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+
JiYpOwogICAgIHZvaWQgZGlkR2V0UmVnaXN0cmF0aW9ucyh1aW50NjRfdCBtYXRjaFJlcXVlc3RJ
ZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+
JiYpOwotICAgIHZvaWQgd2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMLCBXaGVu
UmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHdoZW5SZWdpc3Ry
YXRpb25SZWFkeShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25z
dCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCByZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKTsKIAotICAgIHZvaWQgZ2V0UmVnaXN0
cmF0aW9ucyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFdl
YkNvcmU6OlVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFj
ayYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBlODczZmZmZDJhOGM3MDFhZTg2OTA1Y2U5
ZTU3MDRmMWE3YjljOWI0Li5kOTc5NDY5OWM5MWRjNWQ3NTZkYzMzYmRiMjU0NWM1ZjVkYzA0MTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTcyLDcgKzcyLDcgQEAgY2xh
c3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
U1dDb250ZXh0TWFuYWdlcjo6Q28KICAgICB2b2lkIG1hdGNoQWxsKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlP
cHRpb25zJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgY2xhaW0oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBza2lwV2FpdGlu
ZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgRnVuY3Rpb248dm9pZCgpPiYmKSBm
aW5hbDsKLSAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgZmluYWw7CisgICAgdm9pZCBzZXRTY3Jp
cHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYp
IGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0
YXJ0ZWRXaXRoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5oCmluZGV4IDAzNzAxMDZlOTJmMWZiMmE0YWJkODUxMTE2YzcyNjJmZTQ1NDAwZmIuLjYyNmY2
MWE1MGE2NDU5ZDQ5NTY3ZDY4YmZlY2JhODc3YmJhNmFiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmgKQEAgLTU3LDEwICs1NywxMCBAQCBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VXNlckNvbnRlbnRQcm92aWRlciwgcHJpdgog
ICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQmLCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNl
clNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYpOworICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCYsIGNvbnN0IFVSTCYpOwogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdHMoSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiYpOwotICAg
IHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRXaXRoVVJMKEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0
V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3QgVVJMJik7CiAgICAgdm9p
ZCByZW1vdmVVc2VyU3R5bGVTaGVldHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAg
IHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCBmOTM2NjdhZTQ4ZTlkNzgxZjMyZjI2YTEwYTNhNTJmN2NmYThjMzE2Li41YTQ2ZWY4MDdkNzAx
NzNlOWZjMTgzMzI3ZDc2MWJmYjI1Y2M4ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAt
MTE4Myw3ICsxMTgzLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVud3JhcENyeXB0b0tleShj
b25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwKIAogI2VuZGlmCiAKLVN0
cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1
bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0
IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBT
dHJpbmcgcmVzdWx0OwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5n
LCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS5wYWdlSUQoKSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKaW5kZXggMDk0OGY2N2FiZWMxNGQ4NGU2ZGY1NTY0MjcxZWQ2ZTEzZDk0MjRjZS4uM2ZlZTBj
YjAxYjM2ZGI4NmY2ZjNhZjAzOTNjYWEzYTE1ZjM1ZDAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApA
QCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVy
Rmx1c2goKSBmaW5hbDsKICAgICBib29sIGFkanVzdExheWVyRmx1c2hUaHJvdHRsaW5nKFdlYkNv
cmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFncykgZmluYWw7CiAKLSAgICB2b2lkIGNv
bnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBIYXNo
U2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgZmluYWw7CisgICAgdm9pZCBjb250ZW50
UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJMJiwgY29uc3QgSGFzaFNldDxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiYpIGZpbmFsOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQg
c2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpIGZpbmFsIHsgfQpAQCAtMzI1LDcgKzMy
NSw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJv
bWVDbGllbnQgewogICAgIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKLSAgICBTdHJpbmcg
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwg
Y29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0
IGZpbmFsOworICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
VVJMJikgY29uc3QgZmluYWw7CiAKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJ
T04pICYmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNr
KGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBjZWMzMTQyYjE2ZTM1ZDAwMmNmYzhjNDJm
NGU3ODFiODJlYmU4NThjLi41ZDhlN2Q2ZDBmYTUxYTEwNTFkODBjYTE3NjZlZTM3N2ZiY2YzY2Iz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBX
ZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7
CiBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICB2b2lkIHNlYXJjaFdp
dGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGxvb2tV
cEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogICAgIGJvb2wgaXNTcGVh
a2luZygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggOWY3ZDdmYzUwYjZlYzhhZWU1NmJi
MjU5YjczMzQwYzQwZDkzNjcyNy4uMWFkNGMzZGUyY2I3ZDM4ZTYyNjJjMTk3YWFiMjRjY2E2ZmVk
YTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFdlYkRyYWdDbGll
bnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAgICAgdm9pZCBkaWRDb25jbHVkZUVk
aXREcmFnKCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3Jl
OjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6
RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAg
dm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggYzIzNTM5NTM1MzJiMDc3NzAyMjA1NzNmMmRmMzZiOGNjMzY2
ZjdhYy4uY2E5ZTYzN2JjNTk3ZWE2MjlhMTZmMjA3MTBhNDRiNWYxNGUzNWFmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNzk2LDcgKzE3OTYsNyBAQCBib29sIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjphbGxvd1NjcmlwdChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykKICAg
ICByZXR1cm4gIXBsdWdpblZpZXcgfHwgIXBsdWdpblZpZXctPnNob3VsZEFsbG93U2NyaXB0aW5n
KCk7CiB9CiAKLWJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2Fs
QWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQorYm9vbCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
ICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGMxYjlj
ZDBmOTQzMzI3OWNkZDg0YzBjOTVmYTgxYjk4NGU1ZjU0ZTguLjNjNzE2Njg1MGIyNTE1NjZkNWU0
NDBlZTNmNTkzN2NiOWNjZjcwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05
NywxMyArOTcsMTMgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hE
YXRhRGV0ZWN0aW9uKE5TQXJyYXkgKmRldGVjdGlvblJlc3VsdHMpIGZpbmFsOwogI2VuZGlmCiAg
ICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZU1haW5Eb2N1bWVudCgpIGZpbmFsOwotICAgIHZvaWQg
ZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgV2ViQ29yZTo6VVJMJiBjdXJyZW50VXJs
LCBjb25zdCBXZWJDb3JlOjpVUkwmIG5ld1VybCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdp
bGxDaGFuZ2VEb2N1bWVudChjb25zdCBVUkwmIGN1cnJlbnRVcmwsIGNvbnN0IFVSTCYgbmV3VXJs
KSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWREaXNwYXRjaE9ubG9hZEV2ZW50cygpIGZp
bmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlUHJvdmlzaW9uYWxV
UkwoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBm
aW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBX
ZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZpcmVEYXRlKSBmaW5hbDsK
KyAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBk
b3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZpcmVEYXRlKSBmaW5hbDsKICAgICB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRj
aERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVw
bGFjZVN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOwpAQCAtMTU1LDggKzE1NSw4IEBAIGNsYXNzIFdl
YkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50IHsKICAgICBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRl
bSopIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKLSAgICB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBj
b25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29s
IGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOwog
ICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIGZpbmFsOwpAQCAtMTg5LDkgKzE4OSw5IEBAIGNsYXNzIFdlYkZyYW1l
TG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsK
ICAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVE
YXRhJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciYpIGZpbmFsOwogCi0gICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJD
b3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7Cisg
ICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29u
c3QgVVJMJikgZmluYWw7CiAgICAgCi0gICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3Jl
OjpVUkwmKSBmaW5hbDsKKyAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGZpbmFsOwog
CiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3QgZmluYWw7
CiAKQEAgLTIxMCwyMCArMjEwLDIwIEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBib29sIGNhbkNhY2hl
UGFnZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25l
ckVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywg
aW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
V2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
Ym9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkg
ZmluYWw7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5
KSBmaW5hbDsKICAgICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIGZpbmFs
OwogICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0JikgZmluYWw7
CiAgICAgCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3
ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKLSAgICBX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3
ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0
IGZpbmFsOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdl
YkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZh
QXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0
RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgZmluYWw7CiAgICAgCi0g
ICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CisgICAgV2ViQ29yZTo6
T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkgZmluYWw7CiAgICAgU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29u
c3QgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIGZpbmFsOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIGNs
YXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50IHsKIAogICAgIGJvb2wgYWxsb3dTY3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGlu
Z3MpIGZpbmFsOwogCi0gICAgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2Nh
bFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBib29sIHNob3VsZEZvcmNlVW5p
dmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgUmVmPFdl
YkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZTk3NzNlYTc4
MGEzMzJhZTU5ZjAyNzhhZTgzYTMwNzZkZDI3OTc2ZS4uMWQzZWVlNzk4M2NlZWMyMTEwYzJmODU3
YTMyYjRlZTVjNmUxZjI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAg
LTYwLDkgKzYwLDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3ViZnJh
bWVMb2FkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHBhbC9TZXNz
aW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTdHJpbmdVdGlsaXRpZXMuaCIKQEAgLTM2
NCw3ICszNjQsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbgogICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1
ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBw
YXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9t
UGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCmluZGV4IDZlZWMwOWIxZWQyMmI5YWQwNjhlM2Y2OTI0YjU5MjU3NDUxNWQx
NDYuLjc2YTgxMGFmZDNlMGZmNTA3OTNiNWRmMTVjZWVjODNhMjRhMTRhZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ3LDEzICs0NywxMyBAQCBjbGFzcyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRl
IFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkg
b3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlk
ZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsK
KyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKICNpZiBQTEFURk9STShJ
T1MpCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1Ymxp
YyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAgICAgaW50IGdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpVUkwgcmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2Fy
ZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUp
IG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAg
IHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CkBA
IC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJD
b3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAgICAgbG9uZyBjaGFuZ2VD
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcg
dW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlVSTCB1cmwoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVVJMIHVybChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAogICAgIGxvbmcgYWRkVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCAzYmQ3ZDFmYmIzOGNiMjA5YWZk
YjcxZGViMThiOWQ5MWVkZDkxMzBmLi5hZTU5NTJkMDhlNjQ5NzYxNjBjOGEzNDQ5NGI0YWQ2MGJh
YTk3MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC00OCw4ICs0OCw4IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVy
SW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3RyaW5nVHJ1bmNhdG9yLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1Mp
CiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViRHJhZ0Ns
aWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIEVsZW1lCiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkgewogICAgICAgICB0aXRsZSA9IHVy
bC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgdGl0bGUgPSB1c2VyVmlzaWJsZVN0cmluZygoTlNVUkwgKil1cmwpOworICAgICAg
ICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiAgICAgfQogCiAgICAg
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoZWxlbWVudCk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUK
ICAgICAgICAgICAgIGZpbGVuYW1lID0gZG93bmxvYWRGaWxlbmFtZTsKICAgICB9CiAKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UocGFzdGVib2FyZE5hbWUsIGltYWdlSGFuZGxlLCBpbWFnZVNpemUsIGZpbGVuYW1lLCBleHRl
bnNpb24sIHRpdGxlLCBTdHJpbmcoW1tyZXNwb25zZSBVUkxdIGFic29sdXRlU3RyaW5nXSksIHVz
ZXJWaXNpYmxlU3RyaW5nKChOU1VSTCAqKXVybCksIGFyY2hpdmVIYW5kbGUsIGFyY2hpdmVTaXpl
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldFByb21pc2Vk
RGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBpbWFnZUhhbmRsZSwgaW1hZ2VTaXplLCBmaWxl
bmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgU3RyaW5nKFtbcmVzcG9uc2UgVVJMXSBhYnNvbHV0ZVN0
cmluZ10pLCBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCksIGFyY2hpdmVIYW5kbGUsIGFyY2hp
dmVTaXplKSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRp
dG9yQ2xpZW50TWFjLm1tCmluZGV4IDFmOTBjNGE1NzQwZjQxNTA5ZDhlODViMTlkNGEwN2U4MDA0
M2EyNTQuLjNkMWZmODQ5MDMxMTExMTUxY2EyZTg3YzhjNGU3MDdjMmYxMzM5N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9y
Q2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC00MCw3ICs0MCw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5T
VVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJv
bGxlci5oCmluZGV4IDA5MjNlNDYwOTU5YjBmMzRhOTQyZWQ5MjRmMDQ0YzUzZjg0YzMzZTYuLjE3
ZmE4ZWNjYTc4YmE4YWMyNzY4MTY1M2E3ZDJlN2ZkZDcwZmUyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNv
bnRyb2xsZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBWaXNpdGVkTGlua1RhYmxlQ29udHJv
bGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0b3JlICwgcHJpdgogICAg
IGV4cGxpY2l0IFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIp
OwogCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZS4KLSAgICBib29sIGlzTGlua1Zp
c2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92
ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3Jl
OjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJpZGU7CiAKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAppbmRleCAyNTYwNzY5ZmJlNGI1YjM3YzEyZDJlN2UxODQyZDAxYzNlOTE0
NGVmLi5jMzI4OTdiM2I4ZTJiNWMxNjkyNGVlOWUzMDI0NDY2NDY5MGMyNzI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC01MDksNyArNTA5
LDcgQEAgdW5zaWduZWQgV2ViRnJhbWU6OnBlbmRpbmdVbmxvYWRDb3VudCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9h
ZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKLWJvb2wgV2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xp
bmsoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0Citib29sIFdlYkZyYW1lOjphbGxvd3NG
b2xsb3dpbmdMaW5rKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghbV9jb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmgKaW5kZXggMmUwM2YyYmQ1NTYyNTQ0ZDY3OGYxYTgzYTk1MzhjY2ZlNGEz
NDY4Yi4uZWI4MTM2YWI3NzEwYTRlZDEzMGU2Nzk4MDFiOTUwZDllY2E1OGI1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC01Myw3ICs1Myw2IEBA
IGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgSW50UG9p
bnQ7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTEwNiw3ICsxMDUsNyBAQCBjbGFzcyBXZWJGcmFtZSA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUZyYW1lPiB7CiAgICAgLy8gV0tCdW5kbGVGcmFt
ZSBBUEkgYW5kIFNQSSBmdW5jdGlvbnMKICAgICBib29sIGlzTWFpbkZyYW1lKCkgY29uc3Q7CiAg
ICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBXZWJDb3JlOjpVUkwgdXJsKCkgY29uc3Q7Cisg
ICAgVVJMIHVybCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZp
Y2F0ZUluZm8oKSBjb25zdDsKICAgICBTdHJpbmcgaW5uZXJUZXh0KCkgY29uc3Q7CiAgICAgYm9v
bCBpc0ZyYW1lU2V0KCkgY29uc3Q7CkBAIC0xNDEsMTEgKzE0MCwxMSBAQCBjbGFzcyBXZWJGcmFt
ZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUZyYW1l
PiB7CiAgICAgCiAgICAgdW5zaWduZWQgcGVuZGluZ1VubG9hZENvdW50KCkgY29uc3Q7CiAgICAg
Ci0gICAgYm9vbCBhbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0
OworICAgIGJvb2wgYWxsb3dzRm9sbG93aW5nTGluayhjb25zdCBVUkwmKSBjb25zdDsKIAogICAg
IFN0cmluZyBwcm92aXNpb25hbFVSTCgpIGNvbnN0OwotICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKLSAgICBT
dHJpbmcgbWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29u
c3Q7CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0
IFVSTCYpIGNvbnN0OworICAgIFN0cmluZyBtaW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChjb25z
dCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4dERpcmVjdGlvbihjb25zdCBTdHJpbmcm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCAyMmI4MDkwMTEyOTc2MjgwZGIzZmVmMjE4OGUyZTdiOGFiZWQ5NGQ5Li4wMjk1NjA1YTE0ZDgz
YjllOWY5ODZmZGI4ZDY0NGI1M2RlNzI5N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgdm9pZCBXZWJQYWdl
OjpzZW5kQ2xvc2UoKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2xvc2VQYWdl
KGZhbHNlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJM
JiYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJQYWdlOjpsb2FkVVJMSW5GcmFtZShV
UkwmJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkK
QEAgLTEzMjAsNyArMTMyMCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRl
cnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVy
cyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRh
dGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwotICAgIFVSTCBiYXNlVVJM
ID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDog
VVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBVUkwgYmFzZVVS
TCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VS
TCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKICAgICBsb2Fk
RGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBXVEZNb3ZlKHNoYXJlZEJ1ZmZl
ciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUs
IGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7CiB9CiAKQEAgLTEzMjgs
NyArMTMyOCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgTG9hZFBh
cmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewogICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQ
YXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFt
ZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBs
b2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJh
bWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogVVJMKFVS
TCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKICAgICBVUkwgdW5yZWFjaGFibGVV
UkwgPSBsb2FkUGFyYW1ldGVycy51bnJlYWNoYWJsZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwo
KSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVVUkxTdHJpbmcpOwogICAg
IFVSTCBwcm92aXNpb25hbExvYWRFcnJvclVSTCA9IGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFs
TG9hZEVycm9yVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFy
YW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZyk7CiAgICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
Pihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgp
KTsKQEAgLTMzNzMsNyArMzM3Myw3IEBAIHZvaWQgV2ViUGFnZTo6YWRkQ29uc29sZU1lc3NhZ2Uo
dWludDY0X3QgZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBNCiAgICAgICAg
IGZyYW1lLT5hZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1l
c3NhZ2UsIHJlcXVlc3RJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VuZENTUFZpb2xhdGlvblJl
cG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcG9ydFVSTCwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcG9ydERhdGEpCit2b2lkIFdlYlBhZ2U6OnNlbmRDU1BW
aW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJMJiByZXBvcnRVUkwsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXBvcnREYXRhKQogewogICAgIGF1dG8gcmVwb3J0ID0g
cmVwb3J0RGF0YS50YWtlRGF0YSgpOwogICAgIGlmICghcmVwb3J0KQpAQCAtNTg3NCwxNCArNTg3
NCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29u
c3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogdm9pZCBXZWJQYWdlOjphZGRVc2VyU2NyaXB0KFN0cmlu
ZyYmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsK
LSAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVS
TChXZWJDb3JlOjpibGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4o
KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKKyAgICBXZWJDb3JlOjpVc2VyU2Ny
aXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVSTChXVEY6OmJsYW5rVVJMKCkpLCBW
ZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3Rpb25UaW1lLCBpbmplY3Rl
ZEZyYW1lcyB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHQo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgV1RGTW92ZSh1c2VyU2Ny
aXB0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFt
ZXMpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0eWxlU2hlZXR7IHNvdXJj
ZSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4o
KSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9OworICAgIFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0IHtzb3VyY2UsIFdURjo6YmxhbmtVUkwoKSwgVmVj
dG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHls
ZVVzZXJMZXZlbCB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTdHls
ZVNoZWV0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIFdURk1vdmUo
dXNlclN0eWxlU2hlZXQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCAxNTBhYjRmZWQ5ZTRhNmNkNDMxMzQ1Mjc2NmI4OTgwZDg3NWNjZjg4Li40
YjVkOWQ4OGZlNWY5YmY5ZDQ4YzdlM2JiOTNkNjg4NTc0ZmRjMjYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTksNyArMTU5LDYgQEAgY2xhc3Mg
U2VsZWN0aW9uUmVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRh
OwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKLWNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQ
b3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4X3Q7CkBAIC0zMTYsNyAr
MzE1LDcgQEAgY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVAKICNlbmRpZgogCiAgICAgdm9pZCBhZGRD
b25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlELCBNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHJlcXVlc3RJRCA9IDApOwotICAgIHZvaWQgc2Vu
ZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIHNlbmRDU1BW
aW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJMJiByZXBvcnRVUkwsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJik7CiAgICAgdm9pZCBlbnF1ZXVlU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eVBvbGljeVZp
b2xhdGlvbkV2ZW50OjpJbml0JiYpOwogCiAgICAgLy8gLS0gQ2FsbGVkIGJ5IHRoZSBEcmF3aW5n
QXJlYS4KQEAgLTMzNCw5ICszMzMsOSBAQCBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2Jq
ZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUAogICAgIHZv
aWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoY29uc3QgV2ViRnJhbWUmKTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWQoV2ViRnJhbWUqKTsKICAgICB2b2lkIHNob3coKTsKLSAgICBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwotICAgIFN0cmluZyB1c2VyQWdl
bnQoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKLSAgICBTdHJpbmcgcGxh
dGZvcm1Vc2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHVz
ZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgdXNlckFnZW50KFdlYkZyYW1l
KiwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3JtVXNlckFnZW50KGNvbnN0
IFVSTCYpIGNvbnN0OwogICAgIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2Rl
KCk7CiAKICAgICB2b2lkIGRpZEluc2VydE1lbnVFbGVtZW50KFdlYkNvcmU6OkhUTUxNZW51RWxl
bWVudCYpOwpAQCAtNDE5LDggKzQxOCw4IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2Vi
R0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBXZWJD
b3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwg
Y29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdM
UG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYp
OwogI2VuZGlmCiAgICAgCiAgICAgZW51bSBjbGFzcyBJbmNsdWRlUG9zdExheW91dERhdGFIaW50
IHsgTm8sIFllcyB9OwpAQCAtNjg1LDcgKzY4NCw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQ
CiAgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRleHRNZW51QXRQb2ludEluV2luZG93KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYKIAotICAgIGJvb2wgaGFzTG9jYWxEYXRhRm9yVVJM
KGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgaGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0
IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtOTQzLDcgKzk0Miw3IEBAIGNsYXNzIFdlYlBhZ2Ug
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwg
cHVibGljIElQCiAgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9uQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0KCk7IH0KICNlbmRpZgogCi0gICAg
dm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKKyAgICB2b2lkIHNhdmVQREZUb0ZpbGVJ
bkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBV
UkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNp
emUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzYXZlUERGVG9UZW1wb3JhcnlG
b2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKQEAg
LTExNTksNyArMTE1OCw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAKICAgICBTdHJpbmcg
c291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2Vy
RGF0YSYpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5
Q2xvc2UoKTsKQEAgLTExOTcsNyArMTE5Niw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAg
ICAgc3RhdGljIGJvb2wgc2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxEaXJl
Y3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKICAgICBzdGF0aWMgYm9vbCBsb2dp
Y2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxMb2dpY2FsRGlyZWN0aW9u
LCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAKLSAgICB2b2lkIGxvYWRVUkxJbkZyYW1l
KFdlYkNvcmU6OlVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKKyAgICB2b2lkIGxvYWRVUkxJbkZy
YW1lKFVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIGVudW0gY2xhc3MgV2FzUmVzdG9y
ZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07CiAgICAgdm9pZCByZXN0b3JlU2Vzc2lvbkludGVy
bmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+JiwgV2FzUmVzdG9yZWRC
eUFQSVJlcXVlc3QsIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpPdmVyd3JpdGVFeGlzdGluZ0l0
ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KaW5kZXggZDc1YWNlZWEwZTAwMDIzYWIyMTliMjkxMzllMzYyMjZhZjljNmM3
Ni4uMjdjYWEyN2NlNTcxZTIyYWEwODE5NmEyMmM2NzJiNDU4YjAzZGE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBA
IC0yOCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKIAogICAgIEFkZENvbnNv
bGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGVudW0gTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291
cmNlLCBlbnVtIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIFN0cmluZyBtZXNzYWdlLCB1aW50
NjRfdCByZXF1ZXN0SUQpCi0gICAgU2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9y
dERhdGEpCisgICAgU2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBVUkwg
cmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCiAgICAgRW5xdWV1
ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6SW5pdCBldmVudEluaXQpCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBHb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJ
dGVtSUQsIGVudW0gV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBiYWNrRm9yd2FyZFR5cGUsIGVudW0g
V2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCkKICAgICBUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCi0gICAgTG9hZFVSTElu
RnJhbWUoV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3QgZnJhbWVJRCkKKyAgICBMb2FkVVJMSW5G
cmFtZShVUkwgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQogICAgIExvYWRSZXF1ZXN0KHN0cnVjdCBX
ZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogICAgIExvYWREYXRhKHN0cnVj
dCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogICAgIExvYWRBbHRlcm5h
dGVIVE1MKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggZTU4ZTlmMWRkN2IwNzdmNTYxY2E1MWM5MmZlZjcx
NWIwYWUxNDI5ZC4uNzM1NjZhMTMzODVkZTNhYWM2NDZmYjk0OTZiZGRhZmNiNWFmNDZiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCkBAIC00MCw5ICs0MCw5IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpbnRDb250
ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L2dsaWIvR1VuaXF1ZVB0ci5oPgogCkBAIC00NTQsMTMgKzQ1NCwxMyBAQCBib29sIFdlYlByaW50
T3BlcmF0aW9uR3RrOjpjdXJyZW50UGFnZUlzTGFzdFBhZ2VPZlNoZWV0KCkgY29uc3QKICAgICBy
ZXR1cm4gKG1fbnVtYmVyVXAgPCAyIHx8ICEoKG1fcGFnZVBvc2l0aW9uICsgMSkgJSBtX251bWJl
clVwKSB8fCBtX3BhZ2VQb3NpdGlvbiA9PSBtX251bWJlck9mUGFnZXNUb1ByaW50IC0gMSk7CiB9
CiAKLVdlYkNvcmU6OlVSTCBXZWJQcmludE9wZXJhdGlvbkd0azo6ZnJhbWVVUkwoKSBjb25zdAor
VVJMIFdlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFtZVVSTCgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3ByaW50Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVSTCgpOworICAgICAgICBy
ZXR1cm4gVVJMKCk7CiAKICAgICBXZWJDb3JlOjpEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIgPSBtX3ByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsK
LSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBXZWJD
b3JlOjpVUkwoKTsKKyAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+
dXJsKCkgOiBVUkwoKTsKIH0KIAogdm9pZCBXZWJQcmludE9wZXJhdGlvbkd0azo6cm90YXRlUGFn
ZUlmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKaW5kZXggYjI2MmRmMzRjODA1ZmFhY2Rm
MjAwNzgxZGI3YWFmZTA0MmU3ZjUyNC4uYjdlMTQ0NDI5NGIyNTEyN2Q0NTJmMTJhNDhiMmZhZTg5
NTgyMGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlByaW50T3BlcmF0aW9uR3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKQEAgLTQwLDcgKzQwLDYgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX0d0a1BhZ2VSYW5nZSBHdGtQYWdlUmFuZ2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBQcmludENvbnRleHQ7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgVVJMOwog
fTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05Nyw3ICs5Niw3IEBAIGNsYXNzIFdlYlByaW50
T3BlcmF0aW9uR3RrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUHJpbnRPcGVyYXRpb25HdGs+IHsK
ICAgICB2b2lkIHByaW50UGFnZXNEb25lKCk7CiAgICAgdm9pZCBwcmludERvbmUoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgc2VuZFByaW50RmluaXNoZWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIFdlYkNvcmU6OlVSTCBmcmFtZVVSTCgpIGNv
bnN0OworICAgIFVSTCBmcmFtZVVSTCgpIGNvbnN0OwogCiAgICAgV2ViUGFnZSogbV93ZWJQYWdl
OwogICAgIEdSZWZQdHI8R3RrUHJpbnRTZXR0aW5ncz4gbV9wcmludFNldHRpbmdzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGJlZDI4N2RmYWM5Yjk0NGU0MzQy
OGYyMjQ3MzMxNjBmMjc0MDYxZWQuLjQ0YWZlZWMyMGYxZWIxN2MyMjU4YjNjNjMyYTE5MzA2OWJm
YjQxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTExNCwx
MiArMTE0LDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5o
PgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQ
YXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiAhT1MoV0lO
RE9XUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCmluZGV4IGRiYzU3OWI5OTVmMTliYzMyOTUxY2M4MDJlNjVhN2ZmODdhMjgxNDIuLjYy
ZjM5MDU3ZTEyZGQzMjA1ZjkwMzUyNTdhZTE0OTBkZWE2YTM2MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNjAsNyArNjAs
NiBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Njcm9sbGVySW1wRGV0YWlscy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5o
PgogI2ltcG9ydCA8YWxnb3JpdGhtPgogI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNp
bXBvcnQgPG9iamMvcnVudGltZS5oPgpAQCAtNzEsNiArNzAsNyBAQAogI2ltcG9ydCA8cGFsL3Nw
aS9tYWMvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0FwcGxp
Y2F0aW9uU1BJLmg+CiAjaW1wb3J0IDxzdGRpby5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJM
RXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0SU9TLmgiCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1
cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAo
TlNVUkwgKm9yaWdpbkFzVVJMID0gb3JpZ2luKCpwYWdlKSkKLSAgICAgICAgICAgIFthY3RpdmVQ
YWdlVVJMcyBhZGRPYmplY3Q6dXNlclZpc2libGVTdHJpbmcob3JpZ2luQXNVUkwpXTsKKyAgICAg
ICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmplY3Q6V1RGOjp1c2VyVmlzaWJsZVN0cmluZyhv
cmlnaW5Bc1VSTCldOwogICAgIH0KIAogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9n
bG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFthY3RpdmVQ
YWdlVVJMc10gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDZiNGE2NmJmYTM4
ZjA1MzJhMGNiZWE1OTAxNDIzZGE1NWZmZDg4NjAuLjNiNWFiYTIzMzgwNDQxMTM4NzhjZTA4YWMy
MGJkMGYyZDU3NjA5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTM1LDkg
KzM1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNv
dXJjZUxvYWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggOGE1NmE5ZTc5OWZhMWZmODI0OWYwMTQw
Y2FkMzgxYTVlMmFjYTgzYi4uZWRmNjUxZmE2ZGZiY2EzMThhOGY2ZjIwN2Y0YjY0OWFkZTFiZjEw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSB7CiAKICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFs
OwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJv
b2wpIGZpbmFsOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFVSTCkgZmluYWw7
CisgICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHNl
cnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Q
cmlvcml0eSA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5OjpWZXJ5TG93KSBmaW5hbDsK
ICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKSBmaW5hbDsKQEAgLTYzLDcgKzYzLDcg
QEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkxvYWRlclN0cmF0ZWd5IHsKIAogICAgIHZvaWQgc3RhcnRQaW5nTG9hZChXZWJDb3JlOjpGcmFt
ZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJN
YXAmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2Fk
ZXImLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgcHJlY29u
bmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
IAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0Jiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmlu
YWwgeyB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kgewogICAgICAgICBGaW5k
T25seQogICAgIH07CiAgICAgCi0gICAgSG9zdEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CisgICAgSG9zdElu
Zm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0IFVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5k
T25seSk7CiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJpbmdIYXNoPiBIb3N0TWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUF0dHIubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQXR0ci5tbQppbmRleCBlOGY3NmYxNjRlMDY1ZjgwMjhlOWE2ZjY3ZWEz
NWQ1MmViN2VjODc1Li4yMTZiYTY1NDgwNzFjNjZkMWE1YTYwNGQ5Y2RhZGMzYWNiMjk5ZWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQpAQCAtMzUsOSArMzUsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVBy
b3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkF0dHIqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQmxvYi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1t
CmluZGV4IDRlNmVkYzU2YTYzZmY0Y2E3Y2Y0YjQ2Y2UxYzc3MjQ4MzkxMTNjNmUuLmRlNTkxM2Nh
MTg2MDBjOGVkM2M5NTJiMWE5NjlkN2VlZWRiNzUyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01CbG9iLm1tCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhh
bmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJu
YWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NDaGFy
c2V0UnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NDaGFyc2V0UnVs
ZS5tbQppbmRleCBkMWI1ZWFiZDc1ZDZmYWI2YzdjY2M3ZDY2YWZmMjNkNGMyMTIwMWQ0Li43YmZm
ZmRjMjFkYmEwODk3ZjY2ZmU1YWUxNDU1M2M1ZWM1MzdiZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTQ2hhcnNldFJ1bGUubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0NoYXJzZXRSdWxlLm1tCkBAIC0zMCw5ICszMCw5IEBA
CiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiBAaW1wbGVtZW50YXRp
b24gRE9NQ1NTQ2hhcnNldFJ1bGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTSW1wb3J0UnVsZS5tbQppbmRleCA4ODA0ZjI0NTAwYmQ2ZThlZjdjMmI2MGU0NzA2N2U2
YzkyZDNlMDAzLi5jNTE3OGFlMjAxODRjNjJmYjNkYTBhZGZlNjg3ZTQzZDRhZTUyYzNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQpAQCAt
MzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9NZWRpYUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFBy
aXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
I2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU0ltcG9ydFJ1bGUqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU01lZGlhUnVsZS5tbQppbmRleCAxNTlhOWE0OTQ5ODdi
ZDU0NTE5Y2JkNjJlNDMwOTAxYTdkMGM4YzllLi5lYjVkY2YyMmY3Y2ZiOGM2MTY3OTk3OWE1YTMy
NDgyNTNmOWY5ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTTWVkaWFSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NN
ZWRpYVJ1bGUubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NNZWRp
YVJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUGFnZVJ1bGUu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUGFnZVJ1bGUubW0KaW5kZXgg
ZjM2MjIzMWNlNWJjZmQ2ZGVhNjVmMTFkMzE0YzQxYmRjOWY5MzQyOS4uYjZiYzI3ODA5OWY4MjQ3
NzE3YjJmOWI3MjkxYmY5M2JmZTgxNTE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01DU1NQYWdlUnVsZS5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkNTU1BhZ2VSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmluZGV4IDM1YTg5MzQ5YzMyMTI4YmY5MzcyNWI2NmZhYzQ2
NjY0ODhkNmUwNTguLjA1NWVhOWVjNGFiNWE1MTIzOTc2OGMzZjc3YjllMDM2OTllNzk3NzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQcmltaXRpdmVWYWx1
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUHJpbWl0aXZlVmFs
dWUubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RGVwcmVjYXRlZENT
U09NVmFsdWUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQ1NTUnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
U1NSdWxlLm1tCmluZGV4IGQ0OGNiM2Y5MjI5ZGRiMmJkNjNkZDk5ZjA5MWZkNWJjNWM2NTJkMGYu
LmExMmIwZThjOGYwNzc3MDE2OGU5OGNiN2FhNzU1MWQ3YWZkNWIyNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbXBv
cnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OkNTU1J1bGUqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KaW5kZXggMmQ5ZmVmZmZjMTU0MDBkOTg3
MzMxMzNjOGEzNzRmMWQ2ZTkzOGVmOC4uYjNiMDdmMzM5ODY4NmRlZGJkMGRkMmM5MjQ2NDE5YTFl
Y2ZkNzY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0
eWxlRGVjbGFyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNT
U1N0eWxlRGVjbGFyYXRpb24ubW0KQEAgLTM2LDEwICszNiwxMCBAQAogI2ltcG9ydCAiRXhjZXB0
aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q1NTU3R5bGVE
ZWNsYXJhdGlvbio+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01DU1NTdHlsZVJ1bGUubW0KaW5kZXggOGE0Y2ZmMzBjZGQ1NTMxMmY3ZGQ0MjdlNTEyMWEw
NjYxZDEwYjkwOS4uMmFlMTkxM2IyZTQzZjgzMTJmZWI0MDg0MmFhOGY5N2UwZmI0ZjY5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVSdWxlLm1tCkBAIC0z
NCw5ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q1NTU3R5bGVSdWxlKj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQppbmRleCA4YzI0MDYw
MTZjMGVhNWNlYmFlZWFkZDZkZmQ5OTU5NzE1MTA4OGFkLi4yNjlmMDI0OGM3YzYwMTQwZTQ3NGI4
ODQwN2IwMGEzODAwNjVmZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQ1NTU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTU3R5bGVTaGVldC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9ydCAiRXhjZXB0aW9u
SGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkNTU1N0eWxlU2hlZXQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlN0eWxlU2hlZXQqPihf
aW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTVmFsdWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0K
aW5kZXggMGM2ZTA3NGQ4ZjNkMTUwNTAwMDkxYjExMWRkOTk4N2M4OGFhNzM4Zi4uYjc3ZDRiODcy
MDY1OTYzMDhjNzMyZjhhZjM0YzE2MTQ4OWY2MjFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NWYWx1ZS5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNl
cHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNh
dGVkQ1NTT01WYWx1ZSo+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRhdGEubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQppbmRleCA4YzNiNGQ0YTU4MmZlOTQ3YTBjMzhkMDY0
ZjlhMTI5MWI1OTljOWMzLi5iMzBlOTU3OTQwZWQ5NjY1NzViYzYzNDk0NGU3YTkxNjBlNTI5MmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5t
bQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DaGFyYWN0ZXJEYXRhLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUNvdW50ZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q291bnRlci5tbQppbmRleCAyZDFlNTY1N2VhMmQ2NjhkMjAwNWI1M2M0ODU5ZWRkOWQ1MmY4YmY4
Li4zMDg3MDFlNWI0ODE4Njc0NzMyM2MxOGRlZWQ0ZTQzMGFkYWMyYjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1w
b3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpEZXByZWNhdGVkQ1NTT01Db3VudGVyKj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXggYWQ1NTg1MjlhYmI3ODNhODFkM2Y5ODMy
ZmM0M2Y5YWJjM2EyM2E1MC4uM2IwNGQzOTMzZDI0YWFlMzMzNWJkODdiODEwNjlmNGNjZTdiZDYx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtODIs
MTIgKzgyLDEyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVHJlZVdhbGtlci5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aEV4cHJlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUv
WFBhdGhOU1Jlc29sdmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRoUmVzdWx0Lmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTURvY3VtZW50RnJhZ21lbnQubW0KaW5kZXggOTZkMDMyOWI0OWFlNjE1YjcxZWZhYTRjMDVi
MjY5MTFkZTg1YzE3ZC4uMmVlMmNmODRjNjM5NDhjMDAwMmY4YTY1ZDhjZDY2OWE3Njc5ZDI0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21l
bnQubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudEZyYWdt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudFR5cGUubW0KaW5kZXggZTIw
MTE3NmE5MmRjNjY2NDBjZDUwMWVmN2VjMjBhY2Q4NDY0YWY5Mi4uN2IyZTAzZWM1MjFjZGYwNzQw
MzI2NTkwMGU2ZDNjYjA2MzQyYTNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NRG9jdW1lbnRUeXBlLm1tCkBAIC0zMiw5ICszMiw5IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVkTm9kZU1hcC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RG9jdW1lbnRUeXBlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2ZW50Lm1tCmluZGV4IDYw
Y2RiNmU1N2Y1YmUxNzYwZjRkOTE1ZDM4YWU0YTMzNTU3NTE3Y2QuLjJkNjE1NGIxZTA2NDZkOGEz
MWMwYzAzMGVjZTYzMzNmYjUxNmMwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01FdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
RXZlbnQubW0KQEAgLTMzLDEwICszMywxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
T2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2ludGVybmFsKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmlsZS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1tCmluZGV4IGVkYTg3ZmZmMWM0ZTRiNWE5YTg3
YzZkYjhiNDAyYWM0YjI0YjI4N2YuLmZkYzU0MTNiOWE1ZjQ2YjllZGE1ZmMwYTdiMzZhZTVmODVk
M2RiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1tCkBAIC0zMSw5ICsz
MSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkZpbGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkJs
b2IqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTEFuY2hvckVsZW1lbnQubW0KaW5kZXggNDQ2MGYyN2M2ZGZkZDMwNjU2MGMxMjRkOWQ3
OTk0MWM4ZDVjODUyZC4uYzZjMDFiZDdhNjk2MTc3MGNlOGZmMThlNTc2YzEwOTg1ZWZmNDk0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBbmNob3JFbGVt
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQW5jaG9yRWxl
bWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxBbmNob3JF
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBcHBsZXRFbGVt
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50
Lm1tCmluZGV4IGE4NDU0MmRhNDdkNjQ0ZGMzNjJlOGZkMWRmYjUyZDA2YjIxM2E2NGEuLjI2Yjhk
M2M1OGJlYmQyZDdkNWRiMmU4ZGNjY2UyNjlhMGY5NWJjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFwcGxldEVsZW1lbnQubW0KQEAgLTMxLDkgKzMx
LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEFyZWFFbGVtZW50Lm1tCmluZGV4IGM0YWIyMzIwMjc1N2Vm
YzIyNmQzNDdlNTBhMjEwZGQ0M2UxMjA1MmUuLmI5YWNhODk2YTRjMDkxNzY4Y2ZhMDMxOGI2YzZi
N2EwN2VkNTc1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQXJlYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxBcmVhRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
TmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhU
TUxBcmVhRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQlJF
bGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQu
bW0KaW5kZXggY2Y1YjNlMDg4NDEzOWM5OGU0Yjc4Y2IzNzhkZjFhNjdjNDM1OThiOC4uNDMyNDY0
YjhkZDJkNTYyNjMxMDE4OGM3MTgwNzI4NTkxNjMzOTM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNp
bXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MQlJFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MQmFzZUVsZW1lbnQubW0KaW5kZXggNTE0YjcwOTFiNDNkMTIyNzcyZDA3MGM3N2U2
YTExZGY0ODAwNmMxMy4uYWZlM2I2OTkzYjYzODZkNzM5ZTE0Y2ZjYTNiN2M5ZGY2OTQxZTY2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VFbGVtZW50
Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEJhc2VFbGVtZW50
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5t
bQppbmRleCBhOTljMGI2MjM4MWYyNTFjMjFlODA3Njg1ZmI5MzUwMzA2NzExYTRkLi4yNjMzYzgw
ZjcyNGQ4Nzk0NGRlYmY5MDhmMDM5MmZlN2JmY2RhNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5tbQpAQCAtMzEsOSAr
MzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVW5rbm93bkVsZW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxVbmtub3duRWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJvZHlFbGVtZW50Lm1tCmluZGV4IDY5
NTI5M2I0MjQ2M2ZiZTY2Mjg3YjA2NDc2NGVmNjlkZmU1OGY3MDQuLmRmNjEyMDg2NmM2YmM2MmM0
MTIyMzM5N2ZmMWNiMzBjNmE2ZjQ0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9k
ZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MQnV0dG9uRWxlbWVudC5tbQppbmRleCA5OGFhMjdjNTYyNzVjNTQzY2Q0ZDllMmZiYjI3
YzE4ZGI5ZDgyYWI1Li43Yzc1OTVkMzE0ODMwMzJjZmFlYmZlNDAxYzE3MzIxY2I5ZGJkNDJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJ1dHRvbkVsZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCdXR0b25FbGVt
ZW50Lm1tCkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL05hbWVOb2RlTGlzdC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEJ1dHRvbkVs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENhbnZhc0VsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENhbnZhc0VsZW1lbnQu
bW0KaW5kZXggMGZkNjBhNmRhOGFhYWFiZTc0ZDJiZDJiZDk0NzliODE0YmQ5NjM1MS4uMThiMzEz
ZWI0NGFjMDM2YjAzN2Y1OGE5NDIzNTc2OWJlZGQxMDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ2FudmFzRWxlbWVudC5tbQpAQCAtMzEsOSArMzEs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
dHJpbmdBZGFwdG9ycy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0KaW5kZXggZTM0NDA5OGNiNDhl
MmQzOTBmNTQwYmMxZDUwZTY5NzNjYzQzZDdmMS4uYWFjMTg1NDlkM2Q4YjQ3ODEzYmMxNTRiMWNh
NWM0MTE3M2I1MzZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxDb2xsZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQ29sbGVjdGlvbi5tbQpAQCAtMzUsMTAgKzM1LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL05v
ZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SFRNTENvbGxlY3Rpb24qPihfaW50
ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
RGl2RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRGl2RWxl
bWVudC5tbQppbmRleCAyOTM2YWZhYzAyNTMxODU4ZDFmYjhhOTRkMjcyZmZmOTVjZTk0OWRkLi45
Y2IwM2EwMTE5NmI3ZjQ0MTU0NTI3YTdjNWMyNTViN2QzYWU5Y2JlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERpdkVsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEaXZFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTERpdkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0
PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxEb2N1bWVudC5tbQppbmRleCAwMzc1YTNjZjRmZDY3MWY2MzM2ZmJiMzdj
OWJiN2M5YWVmMDE3NjNkLi44OGQxNDJlYWRhODQxMTM3MDUwMTQ4ZmNlNGVjODc1ZjAyMjdiN2Ri
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRG9jdW1lbnQubW0K
QEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTERvY3VtZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRG9jdW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1lbnQubW0KaW5kZXggYTVlMGNkMzE5MTNi
ZDM4NzMyNjYzNWU3OTM1ZjRhYTg5ODE5YzZmMC4uMmZlMjRjNzA3NDk3ODg3MjUwODRmMzY2Zjkw
YjlkODQ0OTc2ODA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
RWxlbWVudC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVz
dWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRW1iZWRFbGVt
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQu
bW0KaW5kZXggNmI4MmJlMDhlODIxNjZjMzE5NDBhMzQ4ZWNmOTcyNTgyNTljYzlkMC4uMGQ2ZDg4
MTQ3MWE4MTVlMjAzYTBjNDU0ZDBkNzY2YTYwOWQ3ZTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhl
Y1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQppbmRleCBlYTkyYTAxOWE1
MDY1Njk1YzY0NDZhZGE0OTM5NWY2ZmEzYWUyNjY2Li4xZmQ0ZDgwYmM3MThjOTU2YTM1ZDZjOGJj
MGEwN2ZiMDJhOTk2YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRpdHlTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRmllbGRT
ZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9udEVsZW1lbnQu
bW0KaW5kZXggODBkZTQ5MDU0OTI0ODAzM2EzMmJmY2EwMzhiM2FmNzcxOWM2ZmI3Ni4uOTEwZThm
N2Q0NjZmMWRlM2E3OGVjZDMyZmQ4NzcxYmI3ZTg0ODJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvbnRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZvbnRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRm9ybUVsZW1lbnQubW0KaW5kZXggYmZkZTFkYWQ4MTRlZGRjYmVhNzY1
N2FmYjc4Y2QzNGY3YmVkZDU2Zi4uZTg2MjZiYTM1YWEzMzdmNGI0YzdjZmExYmQ4MzNiOTVmZWVl
NzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3Jt
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvcm1F
bGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5t
bQppbmRleCA2MDBmNDRmODliYzQzOTk3ZGM0MGUwMDZkMjZjYzM1MmUzODFhYWYxLi5lYjVjNTVh
YzJiNjdhZjRkZWViZGY2MTVhMzc0ZTI1NzNlYjMzYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0
PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCmluZGV4IGYyZjIwN2YwNTI0
OTdjMjE5N2I3NDM0NzdjM2NiYjMxMjZmZmM5OGEuLjY5Yjk1YTA2Zjc4ZDg4Njg0MGUzNjYwNmI3
NzE1YzI5MDYxNjQxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxIUkVsZW1lbnQubW0KaW5kZXggYjI1NzhhYTJkZjNlZTg5MDA4NTYxMmZjMjE3NzM1ODM1
MjY1Yjc2ZC4uYTcyNmJkYzFlMDIyN2FiMjZjZjAwOWI3MzY3MzQxODdmZTQwMmFmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KQEAgLTMx
LDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSFJFbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZEVsZW1lbnQubW0KaW5kZXggYmVmMzlhZTU3MDZm
OTQ5YWNkMjdmNDFiNWQwYmIyN2VlZTJmZDJhNy4uOWNhNGI4ODBiMWFhYWJhZDhjMzBhOWViMWQ2
ZTQwZTMzMGJlZDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxIZWFkRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEhlYWRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTEhlYWRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxI
ZWFkaW5nRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVh
ZGluZ0VsZW1lbnQubW0KaW5kZXggODExYmIxODA0ODg2MWY4YjE3MTJjOTM1NmMxZDgyNzZkMDEx
MzE4OS4uYTJkZmI2YTNlYzFlYjA1YzhjYjMxMTEyMjIwNDZhMDAyYzc5ZGM5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhlYWRpbmdFbGVtZW50Lm1t
CkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEhlYWRpbmdFbGVtZW50
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSHRtbEVsZW1lbnQubW0KaW5kZXgg
Mjg3Y2U3Zjk0ZmYyZTljOTY1ZjM1ZmRlNDMzNTBjZDRhYjNjYmMxZi4uZWJjM2NmZTc0ODYxNDI2
MzNkMzM5MjZkNWRlMTNlNTlmZWMxOGNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SFRNTEh0bWxFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCmluZGV4IGYzODJjOWVmOGUwOTY5MjNhNjMwZTVkYmJk
NTk3MjY3ZjFlMTY5ZGYuLmUzMjFiNGY3NmQyMTZlMjNhM2Q5ZmEwNDNjY2VmNzg4YWMzN2E3ZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElGcmFtZUVs
ZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSUZyYW1l
RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW1hZ2VFbGVt
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQu
bW0KaW5kZXggZmM5MTk1M2NlY2MyY2FlZWU3NjJiMzQ1NDIwMjQxYmJmOWIzNzE1MS4uZWJhNGVj
OTIzMTZjMzljZTAxMzRjZGIwMDVkMTYwOTNiMDMyMmRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5wdXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KaW5kZXggODM2MzczNWQ5NDc0
YTg2YmE4YTgwNWUwZjFhM2ViYTZmODRkNGJjZC4uZDczN2E1NTdlOWEzZWMwMzUzNTNjNTEyNjkw
ZGJlNzhlYjBlODQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxJbnB1dEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxJbnB1dEVsZW1lbnQubW0KQEAgLTY0LDkgKzY0LDkgQEAgQGVuZAogI2ltcG9ydCA8V2Vi
Q29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxMSUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TExJRWxlbWVudC5tbQppbmRleCAyNjlkMWE1NGFkZDhjZTJiZDRmZWFmNmE0MmE2Mzk4MjA4NWZl
ZGEwLi5hM2NmM2ZhOGRiZmE4Y2VhZDdhMjlmYTk4YzI3N2E4NGQ5YmYwZGVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxlbWVudC5tbQpAQCAtMzEsOSAr
MzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxMSUVsZW1lbnQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCmluZGV4IDUxZjU2MGMwOTc5MTg5
M2FlNjZkYzU1MmQyZjk2OTdkMmZiZjAyODEuLjgxMzkwMDBlYWVhNGNhN2QwZWU5MmI1ODBmNGNm
MDgwMTdhMTE2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MTGFiZWxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MTGFiZWxFbGVtZW50Lm1tCkBAIC0zNSw5ICszNSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTExhYmVsRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRl
cm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
TGVnZW5kRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGVn
ZW5kRWxlbWVudC5tbQppbmRleCA5MzQzY2E2ZTlkZmFmNzM3ODA2NTdjZjU0MmFlMTIyNTQ1MmQ4
YjBjLi5kNGYxZjM2YzVmMjRiMTk0YTkyYzgyYjEwY2RiYTFkOGUxMGU2MzVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMZWdlbmRFbGVtZW50Lm1tCkBA
IC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExlZ2VuZEVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMaW5rRWxlbWVudC5tbQppbmRleCAyMGY0
YzAxNTE1ZGViNjBlZTRkYjM3OWEwMDVlNTI3NzliOWM1MjIwLi41Njg3YzQ1YmJhMGZhYzc0YjU0
Yzk0ODVkOThhZTQ5ZThmNzM1YjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MTGlua0VsZW1lbnQubW0KQEAgLTM2LDkgKzM2LDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVTaGVldC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxNYXBFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxNYXBFbGVtZW50Lm1tCmluZGV4IGI5MjFiM2E1MGVkMDUxNTAzZjNkNzdjNDUwYmQzOTcxNmFk
NGM5NjAuLjJjYzkwY2Y4NjM0ZTM5NmRkMDFmNGEwYzExZjA2MTBlY2Q2MGU4ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFwRWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcEVsZW1lbnQubW0KQEAgLTMz
LDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWFwRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcnF1ZWVFbGVtZW50Lm1tCmluZGV4IDYxYWI0
YzYyMzMzZjk1NmUwNzI0MzYyNzcyZmMxZmZmY2E0NmEyMzguLjk2MjNlZGIxNmFjMDk5YjQxZGM5
NjM4NzU5MDQ0YjQ3MWI5MGJjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KaW5kZXggNWJjNzQ1NmY2MGNmNzYxMmI1MDZlYmZk
M2RjODlmYTQ3YWVjYTQ2Ny4uNzgzYTVhMTVlOWRlMWM3NWU3NGRiODk1MmI0MTk5MjAxYTk0Mzdk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVs
ZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVs
ZW1lbnQubW0KQEAgLTM4LDkgKzM4LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFFcnJvci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaW1l
UmFuZ2VzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWV0YUVsZW1lbnQubW0K
aW5kZXggOTk4NzAwMmFmN2NiZTNkMTRkNjdjZjhjNGYzYjgxZGUzZDNiZjI2Yy4uNzhlZDZlOTNj
ZGZhYTViOGM5NWY3NzJmMjAzZjM4NDRkODBlOTllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tCmluZGV4IGQ4ODVmY2ZkMDgwMzZjNzM4MjkyZTAwNzA3
MjFlZTVmODJlMzcxOWEuLjYwZjllNDVjN2IxZTM0YmMwNjJlNmE0ZWIzMTI3NGFmNDY1YjI1NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTW9kRWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1vZEVsZW1lbnQu
bW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTW9kRWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT0xpc3RFbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KaW5kZXgg
YTMyYzJkOGJjOTcxMjE3MDdiNmUwZTM3OGU3NDUxNTIyYzU1ODczMC4uYjdmYTU5YjZlNjY5NWY2
NmM4OTY5YjFmYTQwNWU4ZTRhMWRlYWVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTE9MaXN0RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE9MaXN0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbQppbmRleCA3YWI3M2Y1NzI5NDMwZDNi
ZjIwMjdlZGJjNWU0NjEwMzE0YmRjYTE1Li5kYjIzNmQ4Yjk1ODZiOGI3MmFjOGU4OGNjZGYyYjQ5
MGFiZWRiNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE9iamVjdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxPYmplY3RFbGVtZW50Lm1tCkBAIC0zNyw5ICszNyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxPYmplY3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxPcHRHcm91cEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTE9wdEdyb3VwRWxlbWVudC5tbQppbmRleCA0ZTUxNWRhZjU1YmI3Y2M1Y2MwMzhiYjUyNDA0
YjZlZWYxYjU1Y2RiLi4xNzcxYzJlZmUzMTg2MmQ3YjE1NTllMGQxMjQ3NTNmMTNmMzcwMWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3VwRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3Vw
RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MT3B0R3Jv
dXBFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MT3B0R3JvdXBFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxPcHRpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxPcHRpb25FbGVtZW50Lm1tCmluZGV4IGZkZWM1NGVlMWQ2NDc4MWU2NmU4ODMzNGM1MmNmNTQx
OGJjNzkzZGYuLjE0NTM1MWQ5YjZmZWUzZTNiMTJhZjMxZjA0YmMzMDM3ZmRhNzc5YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uRWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbkVsZW1lbnQu
bW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE9wdGlvbkVsZW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPcHRp
b25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25z
Q29sbGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9u
c0NvbGxlY3Rpb24ubW0KaW5kZXggZjc3MGE4YTE0ZDVhODNkNzY5NWU0MzcxOWVlMWFmNGRjYjY2
NGNhMS4uMzkxMjEwMTU2MWY1ZmZkZjg5NDFlOWE3MWJmYmU0YjgyOGY4NGIxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLm1tCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9i
akNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3Rm
L1ZhcmlhbnQuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SFRN
TE9wdGlvbnNDb2xsZWN0aW9uKj4oX2ludGVybmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tCmluZGV4IDZjNTExZTkx
NjY0Y2U5MjNjYzkyODRhMjU1YTExZTZhNzkzYjNmZDQuLjFhNTQzYjNmZDNlNmZlNzI4MjQ2YjJi
YThjMTJmZjI2NDBmNjYwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTFBhcmFncmFwaEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxQYXJhZ3JhcGhFbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhbUVsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQppbmRleCA1ZmIwY2VjMjdm
YjcwOTdmMDkxNWVlNWNkZmM0MThhODFjNTk0ZmU4Li5lZGE2NTMyYzVkMmE3ZWZlZmMxNDliMGI3
NjZhZTlkYjhkYmM5MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFBhcmFtRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFBhcmFtRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MUGFyYW1FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFF1b3RlRWxlbWVudC5tbQppbmRleCAzNzQ5YzE4MDMzMGZiMGUzNWNkNTQ1OTExYzA5
ZTc3NDU4NzVhZmQwLi5iY2Q3ODY2Y2Q3NmM3M2VhYzY0NGUwNGY4NDM3ZTUwMzBmNWEyZjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MUXVvdGVFbGVtZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUXVv
dGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTY3JpcHRF
bGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTY3JpcHRFbGVt
ZW50Lm1tCmluZGV4IDMzNDRkNTQ4ODg0OWMxNGM5MWM1YTY5M2U3OWFkN2U2NzBlMDlmZjQuLmU0
YWMwMTc4MDJkYTI1MTRmNGNkZmU3ZGQ3YzkyMDQ5YmRhYjAxZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2NyaXB0RWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNjcmlwdEVsZW1lbnQubW0KQEAgLTMxLDkg
KzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFNjcmlwdEVsZW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxlY3RFbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxlY3RFbGVtZW50Lm1tCmluZGV4
IDc1ODE0MWRlM2ZiN2Y1YWJmNmUyYTI4ZmE2YWVhMTQ2NThjNjY5NjIuLmJjZmJlY2FjZDM4NDkx
ZmE3YmM5OTU0YjNkZTkwMzAyZjkxYTY2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MU2VsZWN0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW0KQEAgLTQ0LDkgKzQ0LDkgQEAKICNp
bXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MU3R5bGVFbGVtZW50Lm1tCmluZGV4IGE0NTI3ODIwODBiYjYzOWM0ZTY3ZjQ1NzlmOTM5
NDY1NjhjNWNmMTAuLjgwNzZhMzM4ZWUxZGMzMGFmMWMyOGE3NDg1ZWI2NDdkOGVlMzdhZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50
Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1N0eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQubW0KaW5kZXggYTc4MTFiZDY4YjM4OGI4ZDczMzFkNDUzYzk2Mjg2MDhhNWEzNmUz
Ny4uNDgzZjk0ZjEzZmJhZDE1OTdlNjczNmFmNzZjYTRjMGYxMDZlZTg5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDYXB0aW9uRWxl
bWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDYXB0
aW9uRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0KaW5kZXggZGQzMDE2YjNhYTYzYTRmOWIwMzE0
NDA3NWYwNWU1YTk4MDU1OGVlMC4uOWFkOTE0NmU4NGEyNzgwNjk5YmNhNzNkNTQ3Y2JjYTgyNTBj
M2U1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJs
ZUNlbGxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
VGFibGVDZWxsRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MVGFibGVDZWxsRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNv
cmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCmluZGV4IGFmMjY3MTRkODRmMzBhYWRj
YWUxNDJiZTg0NmQ2NmNlNmUzNWU0MGEuLmM5ZDk4Y2E1MTRlMWFiYTdiMGVmNDg5YzNkYWYyYmU3
OWM3MTJkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
VGFibGVDb2xFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MVGFibGVDb2xFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0hUTUxUYWJsZUNvbEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNvbEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNv
cmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCmluZGV4IDRjNjhjNGI2YjRjYTVkNmYxZjYxMGVj
NWFjMDdmYTZkMzQ3MzIwYzkuLmJlZGRhZjUwZmFhYWI0YzJkMzZmYTVkMTI4ZDAzMTY1ZjIwNGI3
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVF
bGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVF
bGVtZW50Lm1tCkBAIC0zOSw5ICszOSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxUYWJsZVJvd0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFRhYmxlUm93RWxlbWVudC5tbQppbmRleCAyNDA5NmE4ZDk5NDdmZDdiN2EyNGZkMTY1NzMx
M2E5ODQwOTkzOGNjLi4zZGZlZGMzM2VmY2MxNWFhZTE0ZDQ0MTFmZmVlNzA2NzczZDY4YTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93RWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93
RWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVS
b3dFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MVGFibGVSb3dFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tCmluZGV4IDk4YjE5ZmEzMTU0MDM0ZGFkOWY2
MzBiMzQzMjIyODgyODM0ZjMxODguLmMzMmMyZTcwMjczNDNkNDcwOTMwYTY3NzNiMjk4ODhlZDRm
NmZlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQppbmRleCAyNDg2Zjc3YzNh
NWU3NTA0MjcxMDJhZDI3ZTI4MmI2YjY1YjRlZmU5Li4yODM5MTcxNzg1NTk5ZjkyODU4NGFkNTIx
NThlMGYwNWQzNDEyMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFRpdGxlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFRpdGxlRWxlbWVudC5tbQpAQCAtMzAsOSArMzAsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MVGl0bGVFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFVMaXN0RWxlbWVudC5tbQppbmRleCBmOThmOGU4NTJiZDQ3YTE2MjkyYjk3MzQwOTAx
NTcyOGU0NWYzM2ExLi5mY2Y5MDU0YWIwZjEyMTY3YWVlMjA2Y2FkOGFkYTFkMTM5MDdhM2NjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVUxpc3RFbGVtZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVUxp
c3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxWaWRlb0Vs
ZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVu
dC5tbQppbmRleCAzMzU4MDY1MDM5Mjg3MTliOTViMGY3MTY3ZjI3MWE5MDFlODVjMTE5Li40NTdl
YWZiYTBkMGNlNTJkMDNmNTUwZjA0NzhiMzRiMDhlODczZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5tbQpAQCAtMzQsOSArMzQs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQppbmRleCAzZmQ4ZmNlMzY0NjZm
MzdhYjlhMTk0YzBhMzBjMWMzYzQwNTJmNjNjLi4yYzAxZjNlNjEwNTUyNjk3ZTQ1MTM3OTRkYjEz
OWEzNzlkMzJjNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
S2V5Ym9hcmRFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5
Ym9hcmRFdmVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpL
ZXlib2FyZEV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxp
c3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tCmluZGV4
IDllODE2N2ExNmE0NGIzMTM3YjIzZWRiMWE4ZWVkNDU5NDlkMjdkOTguLjg2NTFmYzk3YjQ4NzEx
NWUyZDRjZGQ3NzE0OTBkZjNmZDAwYTVkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU1lZGlhTGlzdC5tbQpAQCAtMzMsMTAgKzMzLDEwIEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhTGlzdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpNZWRpYUxpc3Qq
PihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZl
bnQubW0KaW5kZXggZjY1NmE4YWRlNTUzNWE5MGU4N2FiY2FhYjlkODA3OTk2M2E4MTIwNi4uOTVm
MjIzNWQ0NTcyZmIzOTZkNjI0YzM5ZmM1MDY5YjMwOTZkYzM5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KQEAgLTM2LDkgKzM2LDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpNb3VzZUV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01N
dXRhdGlvbkV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9u
RXZlbnQubW0KaW5kZXggMGY0ZWYxNjc1YTFjMDNhODdhMTBkNjFlM2ZiNzExYWFmMTFjNzZiZC4u
MmZiZjQyMmFlODVkOTljNjY4MGEwZWQ1OGNkYmEzMjdmN2VkOGZjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQubW0KQEAgLTMyLDkgKzMyLDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvTXV0YXRpb25FdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9O
b2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpNdXRhdGlvbkV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NTmFtZWROb2RlTWFwLm1tCmluZGV4IDU2ODE5MzMyYmI2NzQyZTFlZmVkZDAxZTJjNzUz
MzU3N2Q3MWUzZjguLjI5MTgxOTA5MGU1ZTI1MDM1M2IzMDc0YWY5NmJkMjM4ZmRiOGQ1NGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5hbWVkTm9kZU1hcC5tbQpAQCAt
MzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL05hbWVkTm9kZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNF
eHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOYW1lZE5vZGVNYXAqPihfaW50ZXJuYWwpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLm1tCmluZGV4IDlhZGM0MGIwOGFiYmM4NzcxYjNjOGI4YmRmZWUwMTlmYzgxY2UzMjUu
LjIwMGU4MmEzMTAzYTY3MWQwNjE1NzExMmM3ZGM5NzI0YTU1NmUyZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5t
bQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVTaGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdl
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tCmluZGV4IGYyODli
M2EyNmU4YTRmNTY2YjY3MjRmYjhkNjE1MTE1OGJkYjYyZTguLmVmMmMzNTgwOWIwYjY3NjNiNDc3
NDU2MThjM2IyOTU2MDZkOTk5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmFu
Z2UubW0KQEAgLTM0LDEwICszNCwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJh
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWlu
dGVycHJldF9jYXN0PFdlYkNvcmU6OlJhbmdlKj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCmluZGV4IDdhMWE0YTg3ZmM2ZWYyNDlh
Y2I5ZDA3ZGUyNTRiZGIyYjBhM2M5MzMuLjBlODc4NWM3ZDJjMDY3YzQ4NDcyMWVkNTM3ODc0ZDdj
NTVjYjBhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHls
ZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0
Lm1tCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4
dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlN0eWxlU2hlZXQqPihfaW50ZXJuYWwpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0KaW5kZXggMzBlN2RhM2MwYzk4OTczZDQxMjVh
NjdlZGRjZDI2ZDljZWU3NWNiNS4uZjczMGFkNmRlYmFmYTA1YmUzNzI0NDBmOTZlNjAxYWVmZjRk
ZjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0KQEAgLTMwLDkgKzMw
LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9k
ZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01UZXh0RXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2
ZW50Lm1tCmluZGV4IGM1MDI2ZWI0YjJmODYwMTMzMjg3YjlmMmUwNThhNzYxZmIyNDIwNGYuLmNh
MDZmZDdjMGZmMGUwMDFiOWU4ODQwNmQwYmE3ZWFjY2E0MTRhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0RXZlbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OlRleHRFdmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NVG9rZW5MaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRva2VuTGlz
dC5tbQppbmRleCBkYjhmNTVjZTA3YWE2NGZkOTI5YTVmNWY4M2ZmMGNiY2NkZDc3NDY4Li45YzRh
YTg5NjMwZDc4MTQ0NDJiMTNjNmJjMjVjOGU0YjdmOTZiYjYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0KQEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9y
dCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
RE9NVG9rZW5MaXN0Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUV2ZW50Lm1tCmluZGV4IDE3MzI0MzE5MGEzMmIxNWM0N2ZmZmUwMDJiM2JhNjE2N2IxNzc4
ZGIuLmY4MmNmNThhN2VkNGFiYjk0Zjg4NWYwZWU0YWZmYmMzZjlkZTAxZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCkBAIC0zNCw5ICszNCw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVUlFdmVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6VUlFdmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NWFBhdGhSZXN1bHQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhS
ZXN1bHQubW0KaW5kZXggYTFlZjU3M2Y4ZGQyYzEwYjY4NmMxMTk1MDlhNzAyNDJkN2NmNTJhZi4u
ZGFjZjFkODZkZjhlNzNjMWJiMDQ0Y2RkYThiNDkxNTFhNGJmZmZkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aFJlc3VsdC5tbQpAQCAtMzEsMTEgKzMxLDExIEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhSZXN1
bHQuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6WFBhdGhSZXN1bHQqPihfaW50ZXJu
YWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlz
dG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJ
dGVtLm1tCmluZGV4IDhmMTdjM2FmODlmMmIyNzRhYjQ3NTQ1ZWE5ZjllYWFhNmM5ZWNkZmMuLmIy
YjRhZThhMzFjODM1MTFkOTA3NTEwZDA4YWE4MGJhMDAxODE4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtNDcsMTMgKzQ3
LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VD
YWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQppbmRleCBmM2JhYWVhMmZhMTEzZDhlNDc3
Y2Y2MzA4MzVlMDc4YWQ0MGE3Y2E4Li5lZDI4NGI0NjdiODRiYjZmZDg1ZTA0YTQzNzg3NmNkZTRh
NmU5YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJM
RXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRy
YXMubW0KQEAgLTMzLDE0ICszMywxNSBAQAogI2ltcG9ydCAiV2ViTG9jYWxpemFibGVTdHJpbmdz
LmgiCiAjaW1wb3J0ICJXZWJOU0RhdGFFeHRyYXMuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNV
UkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9M
b2FkZXJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+Ci0jaW1wb3J0IDx3dGYvQXNzZXJ0
aW9ucy5oPgotI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx1bmlj
b2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KKyNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBAIC0xMDksNyArMTEwLDcg
QEAgLSAoTlNTdHJpbmcgKilfd2ViX29yaWdpbmFsRGF0YUFzU3RyaW5nCiAKIC0gKE5TU3RyaW5n
ICopX3dlYl91c2VyVmlzaWJsZVN0cmluZwogewotICAgIHJldHVybiB1c2VyVmlzaWJsZVN0cmlu
ZyhzZWxmKTsKKyAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhzZWxmKTsKIH0KIAog
LSAoQk9PTClfd2ViX2lzRW1wdHkKQEAgLTEzOSw3ICsxNDAsNyBAQCAtIChOU1VSTCAqKV93ZWJr
aXRfVVJMQnlSZW1vdmluZ0ZyYWdtZW50CiAKIC0gKE5TVVJMICopX3dlYl9VUkxCeVJlbW92aW5n
VXNlckluZm8KIHsKLSAgICByZXR1cm4gVVJMQnlSZW1vdmluZ1VzZXJJbmZvKHNlbGYpOworICAg
IHJldHVybiBXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhzZWxmKTsKIH0KIAogLSAoQk9PTClf
d2Via2l0X2lzSmF2YVNjcmlwdFVSTApAQCAtMTc1LDE3ICsxNzYsMTcgQEAgLShOU0RhdGEgKilf
d2ViX3NjaGVtZVNlcGFyYXRvcldpdGhvdXRDb2xvbgogCiAtKE5TRGF0YSAqKV93ZWJfZGF0YUZv
clVSTENvbXBvbmVudFR5cGU6KENGVVJMQ29tcG9uZW50VHlwZSljb21wb25lbnRUeXBlCiB7Ci0g
ICAgcmV0dXJuIGRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGNvbXBvbmVudFR5cGUpOwor
ICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGNvbXBvbmVudFR5
cGUpOwogfQogCiAtKE5TRGF0YSAqKV93ZWJfc2NoZW1lRGF0YQogewotICAgIHJldHVybiBkYXRh
Rm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRTY2hlbWUpOworICAgIHJl
dHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudFNj
aGVtZSk7CiB9CiAKIC0oTlNEYXRhICopX3dlYl9ob3N0RGF0YQogewotICAgIE5TRGF0YSAqcmVz
dWx0ID0gZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwga0NGVVJMQ29tcG9uZW50SG9zdCk7
CisgICAgTlNEYXRhICpyZXN1bHQgPSBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYs
IGtDRlVSTENvbXBvbmVudEhvc3QpOwogICAgIE5TRGF0YSAqc2NoZW1lID0gW3NlbGYgX3dlYl9z
Y2hlbWVEYXRhXTsKICAgICAvLyBUYWtlIG9mZiBsb2NhbGhvc3QgZm9yIGZpbGUKICAgICBpZiAo
W3NjaGVtZSBfd2ViX2lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb0NTdHJpbmc6ImZpbGUiXSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250ZW50
VVJMUGF0dGVybi5tbQppbmRleCBlOWVkNWNiZWIyOTVkMDZkYWFkOTY5NTcyMmEzNGYzZWVlNTU2
NjhkLi5iNzI2NTgzZjk3NGNkZGY3NjYxN2YyYWQxOGQzOThmNDAzYjkxM2JlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5tbQpAQCAtMjQsOCArMjQsOCBAQAogCiAjaW1wb3J0ICJXZWJVc2VyQ29udGVudFVSTFBh
dHRlcm4uaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0K
aW5kZXggYWM3YTRiYjMxOGM1NWY5MzU5Yzk4ZTBhOGJmOTZkMWU2ZTQ0MzYzNi4uODgzYjkyMDcy
MDdlMjQ4ZGQ0N2EzMGJjMGM3NjIxZTcwNjhiN2MzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNTgsNyArNTgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9Q
cm94eVNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9ucHJ1bnRpbWVfaW1wbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ydW50aW1lX29iamVjdC5oPgpA
QCAtNjYsNiArNjUsNyBAQAogI2ltcG9ydCA8dXRpbGl0eT4KICNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBleHRlcm4gIkMi
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAwZTE4OThmMDMwNTk5NzA0M2U2NGY2YTI5YWY2ZmNk
M2Y5OWM1ZmE3Li4yYmM5NzhkMzQwM2Y3M2YxYzA2M2RmMjUyMzQzYzViODNlYzEzMDZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFdlYk5ldHNjYXBlUGx1Z2lu
U3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0+CiAKICAg
ICB2b2lkIGNhbmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0aEVycm9yKE5TRXJyb3IgKik7CiAK
LSAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMKSB7
IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0KKyAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29u
c3QgVVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0KIAogICAg
IHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFz
cyBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtPgogICAgIGJvb2wgd2FudHNBbGxTdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gbV9kZWxpdmVyeURhdGE7Ci0gICAgV2Vi
Q29yZTo6VVJMIG1fcmVxdWVzdFVSTDsKKyAgICBVUkwgbV9yZXF1ZXN0VVJMOwogICAgIFJldGFp
blB0cjxOU1VSTD4gbV9yZXNwb25zZVVSTDsKICAgICBDU3RyaW5nIG1fbWltZVR5cGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKaW5kZXggMWE3MGJjZWI2NWRmNTcxMmY2NTA1NmEyNGY0ZTk5NTkyMjMxY2I2
Zi4uMDRkMjQ2ODE3ODUzNjFlYjgxNjBhMzc1MjM4YmE4ZTQ4ZTk0YzY5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKQEAgLTIyNyw3ICsyMjcsNyBAQCBjbGFzcyBXZWJDaHJvbWVDbGllbnQgOiBwdWJsaWMg
V2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKICNlbmRpZgogCi0gICAgU3RyaW5nIHNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmlu
ZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAg
ICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNp
emVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYpIGNvbnN0
IGZpbmFsOwogCiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpp
bmRleCA1ODc4NGI5OTc5NmViYTBiNzkzMWQ3ZTJhNzhmODVlNTdhMmZhMTE4Li45ZTUxMjUzMDUx
MjRlNGZhMmFlNjMyNWRlMDIzNmE4MTIyODExZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC0x
MTM5LDcgKzExMzksNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsCiAKICNlbmRpZgogCi1TdHJp
bmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CitTdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBT
dHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgU0VM
IHNlbGVjdG9yID0gQHNlbGVjdG9yKHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZ0Zv
cldlYlZpZXc6KTsKICAgICBpZiAoW1ttX3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1Nl
bGVjdG9yOnNlbGVjdG9yXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDhiMjAzNjRi
YjY3YTkxNzI3OGIyOTUzZmM1MTc5YTEyZGQzNjZkZGQuLjE4ODVmMDMxMzEzNWI4MTdiMzBmOTQ1
Nzc3ZDhlMjRiMTUzOWJmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNTAsNyAr
NTAsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250
ZXh0TWVudUNsaWVudAogCiAgICAgdm9pZCBjb250ZXh0TWVudURlc3Ryb3llZCgpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Vh
cmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogICAgIHZvaWQg
bG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c1NwZWFraW5nKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IGFm
NzgxNGI5Njk2N2U5ZDg1ZjU5NDFkNGFmYWIzMDI0NzU2Y2YzMjUuLjYxNjMwNDkwMTk5NmYxNTdm
YzdlOThhMGU3YWIwYTBlODdlYzk5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBA
IC01NCw5ICs1NCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViS2l0
TGVnYWN5L0RPTVByaXZhdGUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TU2hhcmluZ1NlcnZp
Y2VQaWNrZXJTUEkuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCA0ZTgxZDM3MDg0OGY5ZTQ0YTQwZjUwNDBiYzlhZDhh
MzdjY2FkOGUwLi44NDdhNzNiMTdhNDYxN2JkNTRhOGQyOGE5MjNjMWQ0YTYzYmRkMTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMg
V2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAKICAgICB2b2lkIGJlZ2luRHJhZyhXZWJDb3JlOjpEcmFn
SXRlbSwgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEb3du
UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtb3VzZURyYWdnZWRQb3NpdGlvbiwg
V2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpF
bGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDc3MTgyZDIwZWJiYjM5MDcyMWFmYjgy
ZTU5NGUyMTlhMGI0NDBkNGQuLmZmNmQxNDFmZTNkODljYTk1YjUwZDU4ZDc3ZGU0Njk2YTJjNTZk
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTA3LDcgKzEwNyw3IEBAIGNsYXNz
IFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
IHsKICAgICB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBmaW5hbDsKICAg
ICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgZmlu
YWw7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7Cisg
ICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91
YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hE
aWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxh
Y2VTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKQEAgLTE1OSw4ICsxNTksOCBAQCBjbGFzcyBXZWJG
cmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAg
ICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKSBmaW5hbDsKIAogICAgIHZv
aWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIGZpbmFsOwotICAgIHZvaWQgZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6VVJM
JikgZmluYWw7Ci0gICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9v
bCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFsOworICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250
ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9p
ZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFs
OwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKQEAg
LTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBib29sIHNob3VsZEZhbGxCYWNrKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIAotICAgIFdURjo6U3RyaW5nIHVzZXJB
Z2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBXVEY6OlN0cmluZyB1c2VyQWdl
bnQoY29uc3QgVVJMJikgZmluYWw7CiAgICAgCiAgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9D
YWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIGZpbmFsOwogICAgIHZvaWQgdHJhbnNp
dGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgZmlu
YWw7CkBAIC0yMDYsMzAgKzIwNiwzMCBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgUmVmPFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogICAgIHZvaWQg
dXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBmaW5h
bCB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIHZvaWQgc2V0VGl0bGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpIGZpbmFsOwogCi0g
ICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50
JiwKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNv
bnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLAog
ICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5n
LCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIGZpbmFsOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2Vi
Q29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLAorICAgIFJlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3Jl
OjpXaWRnZXQqKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6
OldpZGdldCYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkNvcmU6OldlYkdM
TG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBm
aW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OldlYkdM
TG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKKyAg
ICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0
IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3Jl
OjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFz
ZVVSTCwKICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIGZpbmFsOwogICAgIAotICAgIFdl
YkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CisgICAgV2ViQ29yZTo6
T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgV1RG
OjpTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbDsKICAgICBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlh
VHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRv
d09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgZmluYWw7CiAKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgYm9vbCBzaG91bGRMb2FkTWVkaWFFbGVtZW50VVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc2hvdWxkTG9hZE1lZGlhRWxlbWVu
dFVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAgICAgUmVtb3RlQVhPYmpl
Y3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAg
LTI0Miw3ICsyNDIsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBSZWY8V2ViQ29yZTo6RnJhbWVOZXR3b3Jr
aW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSBmaW5hbDsKIAotICAgIGJvb2wg
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgVVJMJikgY29uc3QgZmluYWw7
CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBSZWZQdHI8V2ViQ29yZTo6UHJldmlld0xvYWRl
ckNsaWVudD4gY3JlYXRlUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIHV0aSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmlu
ZGV4IDI4MjEyNDI3MjMyZDIzMTkzYjI4MWNjMTVhZjIwYzIxYmQ5OWFmNzUuLmVmZTlhMzRiYzVi
N2Y1OTUwZjcyY2JiZWYxYTlkMjUxZWZkYTk2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRh
dGVHbG9iYWxIaXN0b3J5KCkKICAgICBXZWJWaWV3KiB2aWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZy
YW1lLmdldCgpKTsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gY29yZShtX3dlYkZyYW1l
LmdldCgpKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IGJsYW5rVVJMKCkpCisgICAgaWYgKGxv
YWRlci0+dXJsRm9ySGlzdG9yeSgpID09IFdURjo6YmxhbmtVUkwoKSkKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXgg
ZmQ0Y2Q0YzRiMzZkOGJmZjRiY2U1N2JmMTVlZDZmODlmNGVjZDU4MC4uMDc3ZDAxNGQzZTUzNWM3
YThhYmIzNDY4ZTFkNjU0ZTlmZTliZTI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvckNsaWUKICAg
ICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuTWFrZVBheW1l
bnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5j
dGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25z
dCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOworICAg
IGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0lj
b25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29y
ZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVT
aGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0
aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0
U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbQppbmRl
eCAzMzQ5M2JkOWYxNjBiZGE4YWFjNWRhZmZmYTU5MmE1NjBmYTk5MjgyLi4zMGUwNmNhZjkzMWFl
MDY2YzM2OWI3MzUxMTNkOWM0OGE3YmRjMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50Lm1tCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQogCi0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JDbGllbnQoKQogewpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudDo6b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLAogICAgIH0pOwogfQogCi1ib29sIFdlYlBheW1lbnRDb29yZGluYXRvckNs
aWVudDo6c2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6VVJMPiYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
JikKK2Jvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpzaG93UGF5bWVudFVJKGNvbnN0
IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKaW5kZXggNzM5Yzk1MWY2YmQ3ZmY1NWYyOTkyYWRmZjNhNTA5YTZjZTEwMDU5
NC4uNGVhMWFkZDNlMTIzN2UwMmU1MDA5YzExZmQ1YWI3ZTJhMmMzOTM4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBjbGFzcyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdl
YkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsK
LSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAg
ICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKICNpZiBQTEFURk9STShJT1Mp
CkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBX
ZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAgICAgaW50IGdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpVUkwgcmVhZFVS
TEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92
ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAg
ICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZv
aWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBp
ZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CkBAIC04
MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3Jl
OjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAgICAgbG9uZyBjaGFuZ2VDb3Vu
dChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgdW5p
cXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlVSTCB1cmwoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVVJMIHVybChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAogICAgIGxvbmcgd3JpdGVDdXN0b21EYXRh
KGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBvcmlnaW4pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGJk
NzU4MWZhNTA0ODFjOTg5N2M5YTFmY2RkMzIxOTBmNjdmMDZiNDUuLmY1MGIwZWIzYmM0NzBlYjkx
Mjg1YTA1ZmRkMmQ0ZDM0NDZlMjUxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
QEAgLTIzOSw3ICsyMzksNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbgogICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUp
OwogfQogCi1XZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBh
c3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkK
IHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJM
KGluZGV4LCB0aXRsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCmluZGV4IGQxYWI1
NTExODRjMGE1ZjY0OTk0MGQ4ZTkyN2JkODRlNTI5YzdmZjAuLjUyNWVlMmZjZGVlYTE2YzVjNmY5
ZGZlODEzNWVkN2QxYzVlYmJkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCkBAIC0z
NSw3ICszNSw3IEBAIGNsYXNzIFdlYlBsdWdpbkluZm9Qcm92aWRlciBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpQbHVnaW5JbmZvUHJvdmlkZXIgewogcHJpdmF0ZToKICAgICB2b2lkIHJlZnJlc2hQ
bHVnaW5zKCkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdp
bkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBv
cnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2li
bGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBVUkwmKSBmaW5hbDsKIAogICAgIFdl
YlBsdWdpbkluZm9Qcm92aWRlcigpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5tbQpp
bmRleCBlMzRlYzczZTU0ZmJkOTU0MTY4ZmZjYTU1MmU0ZjM2YmM5NWY1NDRiLi5iMDZkYTZmMGYw
YzM1N2IwMGJhODc0OTFjYjE3YmZkMmZhOTRlMzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyLm1tCkBAIC03NCw3ICs3NCw3IEBAIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQ
bHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnCiAgICAgcmV0
dXJuIHBsdWdpbnM7CiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNv
bnN0IFdlYkNvcmU6OlVSTCYpCitWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBj
b25zdCBVUkwmKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklk
ZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKICAgICByZXR1cm4gcGx1Z2lu
SW5mbyhwYWdlLCBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tCmluZGV4IDRlNGMxM2RmYjczYWI2NGFlZTk3ZDdhMzczOTUxM2FlNDkyNDI5ZmMuLmQ5YTA3
ZWVjNTc4MzMyNjkwOTY4YjQ3OTRkMTVmMjViZDc5NTExYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0
b3JlLmgKaW5kZXggYWVmNGZjNTJhYWU0MTJmM2U2YzRlY2Y0MDM5NWI0M2U4N2NjOTQ2Yy4uMjBl
ZTUxODc5NDU1OTcyYWI0YjAzYzQ2MmFlMzFmMzk0OWVjOTEzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5r
U3RvcmUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBXZWJWaXNpdGVkTGlua1N0b3JlIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RvcmUgewogcHJpdmF0ZToKICAgICBXZWJW
aXNpdGVkTGlua1N0b3JlKCk7CiAKLSAgICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFn
ZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVS
TCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wg
aXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwg
Y29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBvcHVsYXRlVmlzaXRlZExp
bmtzSWZOZWVkZWQoV2ViQ29yZTo6UGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDYxMTc5ZmY4ODFlMzU1ODJjNTc5Njli
NzY1ZGUzNjhhNjZjMjRiYTMuLjFlMjI1OTFiMDI3MjcyM2VkMjI5NDNkY2JjMjNhMjZmZTk1ZTJh
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KQEAgLTU1LDcgKzU1LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3Ry
eS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVVJMUmVz
cG9uc2UuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01IVE1MLmg+CkBAIC02NSw2ICs2NCw3
IEBACiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAj
aW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjaWYgUExBVEZP
Uk0oSU9TKQogI2ltcG9ydCAiV2ViUERGVmlld0lPUy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMzdiMzNjODEwODQwMmJlY2Y3ZTU0NTcwNTZj
NGQ2MzcxYzIyMDQ2Yi4uNzhiZDNkNDliOTBlNzllOTdjMzg4ZDA4Njc4NTdjN2JlYWMwYTZkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yNTA4
LDcgKzI1MDgsNyBAQCAtICh2b2lkKV9sb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZToo
TlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOgogICAgIGlmIChiYXNlVVJMKQog
ICAgICAgICBiYXNlVVJMID0gW2Jhc2VVUkwgYWJzb2x1dGVVUkxdOwogICAgIGVsc2UgewotICAg
ICAgICBiYXNlVVJMID0gYmxhbmtVUkwoKTsKKyAgICAgICAgYmFzZVVSTCA9IFdURjo6YmxhbmtV
UkwoKTsKICAgICAgICAgcmVzcG9uc2VVUkwgPSBjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCk7CiAg
ICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IDc1NGNjY2MxYWYy
ODA2NTU4Y2VmOTZiODhjYzZlNjg3MzNjYTIyYTYuLmY1MTRiODQwNTRjMjFhOTM3M2JkZTdmNWI5
YTQwMWQ4ZGVmYjM0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTI1Niwx
NyArMjU2LDE3IEBAIC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+
KV9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcgogICAgIE5TVVJMICp1cmwgPSBfaGl0VGVzdFJl
c3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBOU1N0cmluZyAqYWJzb2x1dGVVUkxTdHJpbmcg
PSBbdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICBpZiAodXJsICYmIF9oaXRUZXN0UmVzdWx0LlVS
TEVsZW1lbnQoKSkgewotICAgICAgICBpZiAocHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywg
Im1haWx0byIpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJp
bmcsICJtYWlsdG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25N
YWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVy
Rm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAocHJvdG9jb2xJ
cyhhYnNvbHV0ZVVSTFN0cmluZywgInRlbCIpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29s
SXMoYWJzb2x1dGVVUkxTdHJpbmcsICJ0ZWwiKSkgewogICAgICAgICAgICAgX3R5cGUgPSBXZWJJ
bW1lZGlhdGVBY3Rpb25UZWxMaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRp
b25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0ZVVSTFN0cmluZykpIHsK
KyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0ZVVSTFN0cmlu
ZykpIHsKICAgICAgICAgICAgIF90eXBlID0gV2ViSW1tZWRpYXRlQWN0aW9uTGlua1ByZXZpZXc7
CiAKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0gcmFuZ2VPZkNvbnRlbnRz
KCpfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4IGEwOTljNDZkZTcyNjk3ZGNkZjk1M2YxYTQx
YjliNzQwYzIwMDUwNGMuLjkwMDM4MmNmOGI4MDBlYjFkNTE1OTE4NWRlMmYzODMzYjBjNjZlZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAg
LTYyLDkgKzYyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oPgogI2ltcG9ydCA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogZXh0ZXJuICJDIiB7CiAgICAgYm9v
bCBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3RoaW5nKENHQ29udGV4dFJlZiBjb250ZXh0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVn
Z2VyLm1tCmluZGV4IDg1YWZmYzFiY2EwZDg3ODMzYjQ0OTYyMmVhMWRhYTMyYWEwYzY0OWEuLjVm
Y2Y5ZjZhZmUwNTFiYjJmN2NjZjEzZTMyN2I0NWE1NTY3ODhiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtMzks
OCArMzksOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0lu
dGVybmFsLmgKaW5kZXggMGU3YzVkN2U5MmUyOGIyZWZlNjJmYTdjZTNhZDkxMmE0N2YwOTNkOC4u
YjYyZjJjMzUyYTNiMDFiZWUyNzgzMDhlOWI3ODllYTkwNWFlZjY0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC01OCw3ICs1
OCw2IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyQm94
OwogY2xhc3MgVGV4dEluZGljYXRvcjsKLWNsYXNzIFVSTDsKIHN0cnVjdCBEaWN0YXRpb25BbHRl
cm5hdGl2ZTsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXggNmFmMzE1MTMxNjUxOGEy
Y2Y1NjI4ODgxYjQ4NWMyMjMzMGNjODA5Ny4uNzQ3MWExMTZjNzMyZGJlZjhmZmYxMTBjM2QxMWJj
MzZjODllOGI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxp
bmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hl
bHBlcnMuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFy
c2hhbGxpbmdIZWxwZXJzLmgKaW5kZXggNjZkZWU4YTQwNDYwZjkyNWM0OGY1OWVmNzdkOGY5MzA0
NjA2OGQ0Ny4uODIwYjYyMTM2YmM4Y2QwZDMxM2ZjYzA3NGZlYTNjYzVhMmFlYzRlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKQEAgLTMwLDE1ICsz
MCwxNCBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBJbnRSZWN0OwotICAgIGNsYXNzIFVSTDsKK2Ns
YXNzIEludFJlY3Q7CiB9CiAKIGNsYXNzIE1hcnNoYWxsaW5nSGVscGVycwogewogcHVibGljOgot
ICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgQlNUUlRvS1VSTChCU1RSKTsKLSAgICBzdGF0aWMgQlNU
UiBVUkxUb0JTVFIoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgc3RhdGljIFVSTCBCU1RSVG9L
VVJMKEJTVFIpOworICAgIHN0YXRpYyBCU1RSIFVSTFRvQlNUUihjb25zdCBVUkwmKTsKICAgICBz
dGF0aWMgQ0ZVUkxSZWYgUGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNvbnN0IFdURjo6U3RyaW5n
Jik7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIEZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVS
TFJlZiBmaWxlVVJMKTsKICAgICBzdGF0aWMgQ0ZVUkxSZWYgQlNUUlRvQ0ZVUkxSZWYoQlNUUik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCmluZGV4IGYyNDM2MDNjZTY3MTVkOGYxZjA4OGRlYWYyOWFlMDA3MWQ4ZTk0NjguLjljZGNj
MTQ1YjcxOTk5Y2RhNjk4NDE0ZTUyZmUyMmMzN2E4OTdiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0yOCw4ICsyOCw4
IEBACiAKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXggMDEzNzA4ZWJkNzFmOTgz
NzA1NDlhNDQ2NDExYmZhNGM3ZmQ5MzBhZC4uYWNjMGUxZmJhNzQ2NDI5NDQxYmI5YWQ2NGZkYmNl
MjUwZDJkYjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBJbnRTaXplOwotICAg
IGNsYXNzIFVSTDsKICAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVudDsKICAgICBjbGFzcyBQ
bHVnaW5QYWNrYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4IGMzZTQ5ZjQ0MTk2NTQ2MTBlZmQ0ZGM1ZjVl
YmQ5YWIwOTFjMDZlMTUuLjgxNGUyYmI2ZGMzOTFmYzJmZmExYTk1YjY5ZTQ2ZDQ1ODBjMDM2NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0
YWJhc2VXaW4uY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCmluZGV4IGY2MjhjY2QzZDVh
NDU5MjZlNTM3MDM1MmQ4NmRjOWE3NTM1NThlNzEuLmMxYjlmODdhYzRlNjIyZmJiMmUyZTIwNWQx
NjQ1OWMwYzE5NGU3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5TdHJlYW0uaApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGI0ZTkxZjZlMTJiM2JiOWIyYTM5ZDhiYThmMDJh
OTQyMDQwNWJkMzAuLjdjZmM3YTlhODJlNzJjOTEyZjVkYjk5OWNmYjM3YmY5Y2YxYTlmNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC02MCw3
ICs2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBIVE1MUGx1Z0luRWxlbWVu
dDsKICAgICBjbGFzcyBLZXlib2FyZEV2ZW50OwogICAgIGNsYXNzIE1vdXNlRXZlbnQ7Ci0gICAg
Y2xhc3MgVVJMOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGNsYXNzIFBs
dWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW47CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CmluZGV4IDIwM2QxNTY1ZTI1ODYxNzNjYTI1NjFhNTQ1YTM4ZTYwZTc1YzhkODIuLmM5ZGU0OWIz
Y2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkxNThiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4
dE1lbnVEZXN0cm95ZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJik7
CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKik7
CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFdURjo6U3RyaW5nJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZp
Y2F0aW9uc0RlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCmluZGV4IDY0MzUwNzY3Zjkz
NDAyNmQwOWMwZmE4Yjg4ZGNjZGQzODk0MmVkMDcuLmNjMDM4Y2VmZDkxNWY0NTE2ZDU4N2JhZjEw
OWE1YWQ2NDdhMjAxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25z
RGVsZWdhdGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9u
c0RlbGVnYXRlLmgKaW5kZXggZjBmMWQ5MmYyZGIyNWI3NDQyODc3NTI0NjJhZmJhNGJjMWQxYzdm
MS4uODI5NmM4Y2NiNjg4N2QzNDU0OGQ1YTY0YzY4Njc3MjZhNzQ2MDc3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaApAQCAtMzgsNyArMzgsNiBAQCBp
bnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgVVJMOwogfQogCiBjbGFzcyBXZWJEZXNr
dG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlIDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNs
aWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzOWNkMWMxNjc5YWRkZDIwNWJi
MDdlODNmYTY5MjA5ODUzMjg1NzM2Li4zMmE5ZjBiYzMxNDAyOTkxYjg5MjQ5ODAyNzk1NjNkZGUy
Mjg4OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgY2xh
c3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnQsIHB1YmxpYyBXZWJDb3JlOjoKICAgICB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRF
dmVudHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZENh
bmNlbENsaWVudFJlZGlyZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBX
YWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJl
RGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdl
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2Uo
KSBvdmVycmlkZTsKQEAgLTE0MCw4ICsxNDAsOCBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6Ogog
ICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
ZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tF
bnRpcmVQYWdlKSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2Vs
bGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CkBAIC0xNTQsMTIgKzE1NCwxMiBAQCBjbGFzcyBXZWJGcmFt
ZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGlj
IFdlYkNvcmU6OgogCiAgICAgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3Qg
V2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0
IFVSTCYpIG92ZXJyaWRlOwogCiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVk
RG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBvdmVycmlkZSB7IH0KIAot
ICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSop
IG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1l
KFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgb3ZlcnJpZGU7CkBAIC0xODUsMTUgKzE4NSwxNSBAQCBj
bGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudCYsCisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3du
ZXJFbGVtZW50JiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVycmlk
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6
OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKICAgICB2b2lkIHJlY3JlYXRl
UGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVkaXJlY3RE
YXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Jikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFz
ZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiBwYXJhbVZhbHVlcykgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlw
ZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWltZVR5cGUpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9i
amVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkg
b3ZlcnJpZGU7CiAgICAgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2Vi
Q29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IDBjNGZiMDQyNGQwMWVhMTE1ZDI3ZWNlNzJlMTkwMzg3NmU1YzFlNTkuLmJlMjRj
YjhhNTY4NTljZDQzY2UxOWYwYTE3YmJmODFkYTdjOTlmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCkBAIC00NSwxMSArNDUsMTEgQEAgY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3IKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCk7CiAK
ICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0
dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJik7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBv
dmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBX
ZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7
CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCAxYTQ1YWI4ZGUyODIzN2NmZGViNmYzOWRlMGYxNzRl
ZWI1ZDgyM2VmLi5kMzEwZDI5MTAwODcwMDllODliYWZlZjVmMGUwMTI3NjE5NGRkZTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhXZWJD
b3JlOjpQYWdlJiBwYWcKICAgICByZXR1cm4gb3V0UGx1Z2luczsKIH0KIAotVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbklu
Zm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6VVJMJikKK1ZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5J
bmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYpCiB7CiAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IHN1cHBvcnRlZFBs
dWdpbk5hbWVzOwogICAgIHJldHVybiBwbHVnaW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbk5h
bWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5kZXggODAxYmNiN2I0NjJkY2NkZGZj
NzY1MmI2NGFmMDZmODYwZmZjNTVmYi4uMTBmNzY2ZTA2MDQ0ZDE1OWIwYTFjZDkzOTQ5MjFlNzYx
MmQ1NzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAg
Y2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBsdWdp
bkluZm9Qcm92aWRlciB7CiBwcml2YXRlOgogICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBmaW5h
bDsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2luSW5mbyhXZWJDb3JlOjpQ
YWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRp
Zmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2li
bGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7
CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdl
YkNvcmU6OlBhZ2UmaSwgY29uc3QgVVJMJikgZmluYWw7CiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyUGx1
Z2luQ2xpZW50UG9saWNpZXMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAppbmRleCA2
YTdiOTkyMmMzYTM5MTUyMmMzZGEwNDdlNGEwNjk3M2I0MDRkMTEwLi44YmVkZTllMjU4MTkxODMy
MDI3MGVhYjY1Mjc0YTdhOTA2ZGI1OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCkBAIC00
Miw3ICs0Miw3IEBAIGNsYXNzIFdlYlZpc2l0ZWRMaW5rU3RvcmUgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6VmlzaXRlZExpbmtTdG9yZSB7CiBwcml2YXRlOgogICAgIFdlYlZpc2l0ZWRMaW5rU3Rv
cmUoKTsKIAotICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0xpbmtWaXNpdGVk
KFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoLCBjb25zdCBVUkwmIGJh
c2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBvdmVycmlkZTsKICAgICB2
b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdI
YXNoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcG9wdWxhdGVWaXNpdGVkTGlua3NJZk5lZWRlZChX
ZWJDb3JlOjpQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
YXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3Bw
CmluZGV4IGE2ODJjNjI3NTBlMTFmNTIxNTY3MjFmM2Q4MjgyZDU3ZTBmODA2ZDIuLmI0MDczZTEw
OGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lTG9hZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRG93bmxvYWQuaAppbmRleCA4NDg4NWYyNGZiODM0YTJkZmNhODJlZWI3OWUxOWM3MTkx
MDRhNDcyLi40ZjYxMTFlMjNiMmMyZTA3ZTBhZTRhZmFkNThlYTUwZWQxYTMyYzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmgKQEAgLTM4LDcgKzM4LDYgQEAKICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFJlc291cmNl
SGFuZGxlOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwpAQCAtNTIsMTMgKzUxLDEzIEBAIGNsYXNzIFdlYkRvd25sb2FkCiAjZW5kaWYKIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAgc3RhdGljIFdlYkRvd25s
b2FkKiBjcmVhdGVJbnN0YW5jZShjb25zdCBVUkwmLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOwog
ICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsKICAgICBzdGF0aWMgV2Vi
RG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKCk7CiBwcml2YXRlOgogICAgIFdlYkRvd25sb2FkKCk7
CiAgICAgdm9pZCBpbml0KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIElXZWJE
b3dubG9hZERlbGVnYXRlKik7Ci0gICAgdm9pZCBpbml0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIElX
ZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAgdm9pZCBpbml0KGNvbnN0IFVSTCYsIElXZWJEb3du
bG9hZERlbGVnYXRlKik7CiAgICAgfldlYkRvd25sb2FkKCk7CiBwdWJsaWM6CiAgICAgLy8gSVVu
a25vd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9w
ZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlC
YWcuY3BwCmluZGV4IGNkZjhjYWQ2YTM2OTZlZWJhY2U2MmY0ZTU3ODRjZWU0YmVmMWQ5ZTkuLjI3
YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQwZTFhYzUwYWQ3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAtMzYsOCArMzYs
OCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5oCmluZGV4IGRiZWE2OThhNTc1MDIxMmE1MDY1MGU3ODM5MTY5ZDBhNWUx
YjM3NTQuLmM0ZDA4MzYyZGFkNWU4MzkzZThkZmY4MzFjMjU5ODFhMmM3N2ZmZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtMzQsOSArMzQsOSBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgogI2luY2x1ZGUgPHNhbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBjbGFzcyBERUNMU1BFQ19VVUlEKCJ7
QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQwRTYzNTFEfSIpIFdlYkZyYW1lIDogcHVibGlj
CiAgICAgSFJFU1VMVCBtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IEJTVFIqIGxhYmVs
cywgaW50IGNMYWJlbHMsIElET01FbGVtZW50KiBhZ2FpbnN0RWxlbWVudCwgQlNUUiogcmVzdWx0
KTsKICAgICBIUkVTVUxUIGNhblByb3ZpZGVEb2N1bWVudFNvdXJjZShib29sKiByZXN1bHQpOwog
Ci0gICAgV2ViQ29yZTo6VVJMIHVybCgpIGNvbnN0OworICAgIFVSTCB1cmwoKSBjb25zdDsKIAog
ICAgIFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsKICAgICB2b2lkIHNldFdlYlZpZXcoV2ViVmll
dyopOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIERFQ0xTUEVDX1VVSUQoIntBMzY3NjM5OC00
NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgOiBwdWJsaWMKICAgICBjbGFz
cyBXZWJGcmFtZVByaXZhdGU7CiAgICAgV2ViRnJhbWVQcml2YXRlKiBkOwogICAgIGJvb2wgbV9x
dWlja1JlZGlyZWN0Q29taW5nIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpVUkwgbV9vcmlnaW5h
bFJlcXVlc3RVUkw7CisgICAgVVJMIG1fb3JpZ2luYWxSZXF1ZXN0VVJMOwogICAgIGJvb2wgbV9p
blByaW50aW5nTW9kZSB7IGZhbHNlIH07CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4g
bV9wYWdlUmVjdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDIy
YjA4NDZhOTA2Yjc4Mjg2NTZiOGQ5NTdjMTBhMGRmYWZmOGIzMDEuLjAyMzM4NGNlOTZmMTA5NDlj
ZGQ1OWY3NzRhODE0NWViYmVhN2I3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAKICNpbmNsdWRlICJXZWJWaXNpdGVkTGlua1N0b3Jl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0
b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUg
PGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmgKaW5kZXgg
MTdhZmY5MjgyN2QxZDEwOWI1M2U5Y2RjYzZjZTQ5YzhiZTNlNzBlNS4uNjkzNzRkZjAyMDFkODk4
Zjc3ZDZiMTIxOThjNjc1ZGNlNDgxODA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuaApAQCAtMzMsOCArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBVUkw7Ci0gICAgY2xhc3MgUGFnZUdyb3VwOworY2xh
c3MgUGFnZUdyb3VwOwogfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03OCw3ICs3Nyw3
IEBAIGNsYXNzIFdlYkhpc3RvcnkgOiBwdWJsaWMgSVdlYkhpc3RvcnksIHB1YmxpYyBJV2ViSGlz
dG9yeVByaXZhdGUgewogCiAgICAgLy8gV2ViSGlzdG9yeQogICAgIHN0YXRpYyBXZWJIaXN0b3J5
KiBzaGFyZWRIaXN0b3J5KCk7Ci0gICAgdm9pZCB2aXNpdGVkVVJMKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV1RGOjpTdHJpbmcmIGh0dHBNZXRo
b2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9vbCBpbmNyZWFzZVZpc2l0Q291bnQpOworICAgIHZvaWQg
dmlzaXRlZFVSTChjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNp
dENvdW50KTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rc1RvVmlzaXRlZExpbmtTdG9yZShXZWJW
aXNpdGVkTGlua1N0b3JlJik7CiAKICAgICBDT01QdHI8SVdlYkhpc3RvcnlJdGVtPiBpdGVtRm9y
VVJMU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggODQzNzYyMDFkMDdlYjNmZWY1ZWIyZDlhNzIx
NzZkMzE3Zjk5MTIyZS4uYTg1NTlhNWZkMjI3Y2JkMmIxN2VhZjI4NWVhNjM5NWVhZmY4YTZjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMzIsOCAr
MzIsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IGIyOTJk
ZGU3ZGNjZWY2MmZjYTczYjBjNGNiNGJhYjJhZGM1YmZmYjAuLjgxODBkYmUwNGY2ZTIwNmU4NTM5
OGM2MjlhNzY5ZTgzNmU3YzY0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIFdl
YlJlc291cmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVh
bSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBmcmFtZU5hbWUpCitXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpCiAg
ICAgOiBtX2RhdGEoZGF0YSkKICAgICAsIG1fdXJsKHVybCkKICAgICAsIG1fbWltZVR5cGUobWlt
ZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiOGM3ZGNjYjAz
NzQ5YWI3ODczZTM3ZmZhMjlmMjUyYzY1M2JlYmE1Li4wMmQ2NzM1YWI3MzU4NDg4NzRlZmYxOTM0
ODgyZGY1OGM0ZWYzYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAg
LTI4LDE3ICsyOCwxNyBAQAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogY2xhc3MgV2ViUmVzb3VyY2UgOiBwdWJsaWMgSVdlYlJl
c291cmNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKIHByb3RlY3RlZDoKLSAgICBXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1l
TmFtZSk7CisgICAgV2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpOwogICAgIH5XZWJSZXNvdXJjZSgp
OwogCiBwdWJsaWM6CkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIFdlYlJlc291cmNlIDogcHVibGlj
IElXZWJSZXNvdXJjZSB7CiBwcml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAg
ICAgQ09NUHRyPElTdHJlYW0+IG1fZGF0YTsKLSAgICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAg
VVJMIG1fdXJsOwogICAgIFdURjo6U3RyaW5nIG1fbWltZVR5cGU7CiAgICAgV1RGOjpTdHJpbmcg
bV90ZXh0RW5jb2RpbmdOYW1lOwogICAgIFdURjo6U3RyaW5nIG1fZnJhbWVOYW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDgxYjI2OWZj
NDIwYzU5Y2M2ZWY1ZDk5MmZjNzZjYzQ5YjBlYTBmYjguLjk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3
N2YwY2QwNjAwMjQ2YTEwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1
cml0eU9yaWdpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJp
bmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggNDU3NmMyMjI1YzgzNTdm
MzA2NzA2NzNjMTg4MDVkMzM4ZjQ4MmJiNC4uN2RhMTU1OGJiNDU3ZDkyMWQyNGNhM2I1Y2M3NWU2
ZTEwYTdlNjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVz
cG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNw
cApAQCAtNDAsMTIgKzQwLDEyIEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmlu
Zy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6
ZWRTdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1
ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3Y2hhci5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTIy
Nyw3ICsyMjcsNyBAQCBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9uc2U6OmNyZWF0ZUluc3Rh
bmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9u
c2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBpdCBoYXMgdGhlIElXZWJI
VFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNv
dXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBT
dHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFVS
TCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CiAgICAgaW5zdGFuY2Ut
PkFkZFJlZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IGJkMTI2NzU4
YTUxY2MzNTM4ZjlhYzk1MzdjZmIxZmM3ZGZkYWUzODguLjQ4MTIzODQ3MTNjOGI5OWRhNWNiYTVi
NjNmMjU0NDQ5ZmU1MGM2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUg
IldlYktpdERMTC5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKaW5kZXggM2NmZDY2NzY4ZWIzMjdh
ZWFkYzdhMDllNGQyN2NlYTI0OTQ4ZmQ3ZS4uMWI3MmJiZTgyNzM0Y2U4MzM2MmE3MmM5MGVjMmI4
ZjA2ZTU4ZmY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNDYzLDcgKzQ2Myw3
IEBAIGNsYXNzIFdlYlZpZXcKIAogICAgIC8vIENvbnZlbmllbnQgdG8gYmUgYWJsZSB0byB2aW9s
YXRlIHRoZSBydWxlcyBvZiBDT00gaGVyZSBmb3IgZWFzeSBtb3ZlbWVudCB0byB0aGUgZnJhbWUu
CiAgICAgV2ViRnJhbWUqIHRvcExldmVsRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFt
ZTsgfQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiB1c2VyQWdlbnRGb3JLVVJMKGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsKTsKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdXNlckFnZW50Rm9yS1VSTChj
b25zdCBVUkwmIHVybCk7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBAIC01MDIsNyArNTAyLDcgQEAgY2xhc3Mg
V2ViVmlldwogICAgIGJvb2wgb25HZXRPYmplY3QoV1BBUkFNLCBMUEFSQU0sIExSRVNVTFQmKSBj
b25zdDsKICAgICBzdGF0aWMgU1RETUVUSE9ESU1QIEFjY2Vzc2libGVPYmplY3RGcm9tV2luZG93
KEhXTkQsIERXT1JEIG9iamVjdElELCBSRUZJSUQsIHZvaWQqKiBwcE9iamVjdCk7CiAKLSAgICB2
b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgZG93bmxvYWRV
UkwoY29uc3QgVVJMJik7CiAKICAgICB2b2lkIGZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFu
Z2VzU29vbigpOwogICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NM
YXllciopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGNjYzdkNzc1MGQzNzk4OTk1YjgwZjliZTFlNGExZTMwM2JkOTcwZmEuLjYyMDFkOWVkNmU4
YTIzZGYyOWJkMTk5MTQ5Mzg4NDk3Y2MxNDE1MTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0xMC0wMiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUg
VVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRl
bnNpb25zLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlVVJMKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VSTFBhcnNlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmNoZWNrVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hl
Y2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6b3JpZ2luYWxEYXRhQXNTdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bGl0ZXJhbFVS
TCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2Fk
SW52YWxpZFVSTFJlcXVlc3QubW06CisgICAgICAgIChsaXRlcmFsVVJMKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbToK
KyAgICAgICAgKC1bTG9hZEludmFsaWRVUkxXZWJGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRp
ZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6Zm9yRnJhbWU6XSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5R2VuZXJhdG9yLm1tOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcDoKKwogMjAxOC0xMC0wMiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0Ml0g
Rm9ybWF0ID4gQm9sZCBhbmQgRm9ybWF0ID4gSXRhbGljIGRvbid0IHRvZ2dsZSBiZXR3ZWVuIGJv
bGQgYW5kIGl0YWxpYyBzdHlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggNThlNjlkMGRmNjMwNTk3YTEw
ZGIyZTljOTZhMmQ4ZGRjZGFhN2M2OS4uMTg4YjhiZGUwYzVmMzQ5ZWRjOWY0MjVjZjkwODNjYzc3
NjhkMDcwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Nv
bnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC0zOCwxMCArMzgsMTAgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL05GQS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTkZBVG9ERkEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlTG9hZEluZm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMRmlsdGVyUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAppbmRleCBiOTI4MzI0ZjM1OThkZGI0NjE3YTFkZWViODgyNjM2MGM2
NWE0MjA1Li5hYWQxNmI4NjA0MTc5Y2E0M2E5NzczNzk1ODU0YjU3NTc3M2FmYzlhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5j
cHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKaW5kZXggNzM1MzRj
ODE3MzNlYmE0NTJmMzJmZDlmODIxNzFiYTliYTU0YjZiYi4uZGMzMWI0N2JkMDc4NjhhZWRjYWZm
OTdmNTY1NmQ4M2Y3ODlkODMyMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1VSTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VSTC5jcHAKQEAgLTI1LDExICsyNSw5IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC03
Myw4ICs3MSw3IEBAIFRFU1RfRihVUkxUZXN0LCBVUkxDb25zdHJ1Y3RvckNvbnN0Q2hhcikKIAog
c3RhdGljIFVSTCBjcmVhdGVVUkwoY29uc3QgY2hhciogdXJsQXNTdHJpbmcpCiB7Ci0gICAgVVJM
UGFyc2VyIHBhcnNlcih1cmxBc1N0cmluZyk7Ci0gICAgcmV0dXJuIHBhcnNlci5yZXN1bHQoKTsK
KyAgICByZXR1cm4gVVJMKHsgfSwgdXJsQXNTdHJpbmcpOwogfTsKIAogVEVTVF9GKFVSTFRlc3Qs
IFVSTFByb3RvY29sSG9zdEFuZFBvcnQpCkBAIC0zMTcsMjAgKzMxNCwyMCBAQCBURVNUX0YoVVJM
VGVzdCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpCiAKIFRFU1RfRihVUkxUZXN0LCBQ
cm90b2NvbElzSW5IVFRQRmFtaWx5KQogewotICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5I
VFRQRmFtaWx5KHt9KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHko
IiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYSIpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWIiKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiYyIpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZCIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9j
b2xJc0luSFRUUEZhbWlseSgiYWJjZGUiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoImFiY2RlZiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRU
UEZhbWlseSgiYWJjZGVmZyIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCJodHRwOiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgi
aHR0cCIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwczoi
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzIikpOwot
ICAgIEVYUEVDVF9UUlVFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzOi8vIUAjJCVeJioo
KSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KHsgfSkp
OworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoIiIpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhIikpOworICAgIEVY
UEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiIikpOworICAgIEVYUEVD
VF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiYyIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNkIikpOworICAgIEVYUEVDVF9G
QUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlIikpOworICAgIEVYUEVDVF9G
QUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlZiIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNkZWZnIikpOworICAgIEVYUEVD
VF9UUlVFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cDoiKSk7CisgICAgRVhQRUNU
X0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cCIpKTsKKyAgICBFWFBFQ1Rf
VFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzOiIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwcyIpKTsKKyAgICBFWFBFQ1Rf
VFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzOi8vIUAjJCVeJiooKSIpKTsK
IH0KIAogVEVTVF9GKFVSTFRlc3QsIEhvc3RJc0lQQWRkcmVzcykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKaW5kZXggM2UxMDU5MmEwM2QwYWIw
MWUyYzE2NmE0NTNlYWFlZWMxZmEwMzljMS4uMWM0ZGNkZDA1ZTIxZDdiNWZkN2FiN2RmZTg1ZDhm
MDVjMWFjOGE3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VSTFBhcnNlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VS
TFBhcnNlci5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGlu
Zy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTEwMiw3ICsx
MDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFy
c2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RG
OjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKIAogICAgIGlmICh0
ZXN0VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAgICAgIHJldHVybjsKQEAgLTEyOSw3ICsxMjks
NyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZy
YWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogICAgIAotICAgIEVYUEVDVF9UUlVFKFVSTFBh
cnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOworICAgIEVYUEVDVF9UUlVFKFdU
Rjo6VVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CiAgICAgCiAgICAg
aWYgKHRlc3RUYWJzID09IFRlc3RUYWJzOjpObykKICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDcg
KzE1OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzTmV3LnN0cmluZywgdXJsLnN0cmluZygpKSk7CiAgICAgCi0gICAgRVhQRUNU
X1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CisgICAgRVhQ
RUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsK
ICAgICAKICAgICBpZiAodGVzdFRhYnMgPT0gVGVzdFRhYnM6Ok5vKQogICAgICAgICByZXR1cm47
CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVu
Y2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGIKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuc3RyaW5nLCB1cmwuc3RyaW5nKCkpKTsKICAgICAK
LSAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwp
KTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OlVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0
ZW50KHVybCkpOwogICAgIAogICAgIGlmICh0ZXN0VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAg
ICAgIHJldHVybjsKQEAgLTIxMyw4ICsyMTMsNyBAQCBzdGF0aWMgdm9pZCBzaG91bGRGYWlsKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VTdHJpbmcpCiAKIHN0YXRp
YyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2Rp
bmcqIGVuY29kaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRhYnMgdGVzdFRh
YnMgPSBUZXN0VGFiczo6WWVzKQogewotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsU3RyaW5nLCB7
IH0sIGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBhdXRv
IHVybCA9IFVSTCh7IH0sIHVybFN0cmluZywgZW5jb2RpbmcpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29y
ZCwgdXJsLnBhc3MoKSkpOwpAQCAtMjM4LDkgKzIzNyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJM
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBj
b25zCiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNv
bnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGFicyB0ZXN0VGFicyA9IFRlc3RUYWJzOjpZ
ZXMpCiB7Ci0gICAgVVJMUGFyc2VyIGJhc2VQYXJzZXIoYmFzZVVSTFN0cmluZywgeyB9LCBlbmNv
ZGluZyk7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxTdHJpbmcsIGJhc2VQYXJzZXIucmVzdWx0
KCksIGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBhdXRv
IHVybCA9IFVSTChVUkwoeyB9LCBiYXNlVVJMU3RyaW5nKSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCmluZGV4IDRjODAz
MmI5MzZjZmUzYTU5MWYyMDJlZjBlMGVhMWRmMGVmN2Q3YjcuLjBjNWU2Mzc3OWJhN2UwMWZhNjg5
YjcwOWQzYWY3ZmU1MThmNzAwNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0yNSw4ICsyNSw4IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VyQWdlbnQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDc2YjEwMzU3
NWNhNDI1Y2UzZmU1OGRhMzEzNmIwZWVjMGQ2ZDNmMWUuLjMwMGIxM2NiY2ExMGMyMWIzMDdlZWUz
MTE0ZGUwMGZiZjBmZTAyZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC0yNCw5
ICsyNCw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tCmluZGV4IDZmZmQ3ZGFjYjNmYzAyMTJhNDA0ZDg1
NmIzMThjOTM2OWY4OWZlOTYuLmI2NDBiMTBiZmYyZjAxOWI3MjcyNDNhN2M2MDA4NTFhZGFmZDc1
ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9V
UkxFeHRyYXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1VSTEV4dHJhcy5tbQpAQCAtMjUsOCArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAot
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9WZWN0
b3IuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKQEAgLTUwLDE3ICs1
MCwxNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZGF0YUFzU3RyaW5nKE5TRGF0YSAqZGF0YSkKIAog
c3RhdGljIGNvbnN0IGNoYXIqIG9yaWdpbmFsRGF0YUFzU3RyaW5nKE5TVVJMICpVUkwpCiB7Ci0g
ICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXZWJDb3JlOjpvcmlnaW5hbFVSTERhdGEoVVJMKSk7Cisg
ICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXVEY6Om9yaWdpbmFsVVJMRGF0YShVUkwpKTsKIH0KIAog
c3RhdGljIGNvbnN0IGNoYXIqIHVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCiB7Ci0gICAg
cmV0dXJuIFtXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyhVUkwpIFVURjhTdHJpbmddOworICAg
IHJldHVybiBbV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhVUkwpIFVURjhTdHJpbmddOwogfQogCiBz
dGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29uc3QgY2hhciogbGl0ZXJhbCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEobGl0ZXJhbEFzRGF0YShsaXRlcmFsKSwgbmlsKTsKKyAg
ICByZXR1cm4gV1RGOjpVUkxXaXRoRGF0YShsaXRlcmFsQXNEYXRhKGxpdGVyYWwpLCBuaWwpOwog
fQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhcykKQEAgLTEyNyw4ICsxMjcsOCBAQCBURVNUKFdl
YkNvcmUsIFVSTEV4dHJhc19EaXZpc2lvblNpZ24pCiAgICAgLy8gU2VsZWN0ZWQgdGhlIGRpdmlz
aW9uIHNpZ24gYXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1BU0NJSSBjaGFyYWN0ZXIgdGhhdCBpcyBh
bGxvd2VkIGluIGhvc3QgbmFtZXMsIHNpbmNlIGl0J3MgYSBsb29rYWxpa2UgY2hhcmFjdGVyLgog
CiAgICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1c2VkIHdoZW4gdHlwaW5nIGlu
IGEgVVJMLgotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUueG4tLWNvbW90aGVyc2l0ZS1r
amIub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0
cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAg
ICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIHVz
ZXJWaXNpYmxlU3RyaW5nKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v
c2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVR
KCJodHRwOi8vc2l0ZS54bi0tY29tb3RoZXJzaXRlLWtqYi5vcmciLCBvcmlnaW5hbERhdGFBc1N0
cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhC
N290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5j
b21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTFdpdGhV
c2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBu
aWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3Ig
VVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RS
RVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFz
U3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIp
KSk7CkBAIC0xMzcsMTcgKzEzNywxNyBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19EaXZpc2lv
blNpZ24pCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0
ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb20lQzMl
QjdvdGhlcnNpdGUub3JnIikpKTsKIAogICAgIC8vIFNlcGFyYXRlIGZ1bmN0aW9ucyB0aGF0IGRl
YWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1lIG9uIGl0cyBvd24uCi0gICAgRVhQRUNUX1NUUkVRKCJz
aXRlLnhuLS1jb21vdGhlcnNpdGUta2piLm9yZyIsIFtXZWJDb3JlOjplbmNvZGVIb3N0TmFtZShA
InNpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwotICAgIEVYUEVD
VF9TVFJFUSgic2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZGVjb2Rl
SG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsK
KyAgICBFWFBFQ1RfU1RSRVEoInNpdGUueG4tLWNvbW90aGVyc2l0ZS1ramIub3JnIiwgW1dURjo6
ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJp
bmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwg
W1dURjo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVU
RjhTdHJpbmddKTsKIH0KIAotVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfU29saWR1cykKK1RFU1Qo
V1RGLCBVUkxFeHRyYXNfU29saWR1cykKIHsKICAgICAvLyBTZWxlY3RlZCBmdWxsIHdpZHRoIHNv
bGlkdXMsIHdoaWNoIGxvb2tzIGxpa2UgdGhlIHNvbGlkdXMsIHdoaWNoIGlzIHRoZSBjaGFyYWN0
ZXIgdGhhdCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgaG9zdCBuYW1lLgogCiAgICAgLy8gQ29k
ZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1c2VkIHdoZW4gdHlwaW5nIGluIGEgVVJMLgotICAg
IEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tL290aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERh
dGFBc1N0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUu
Y29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly9zaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmcoV2ViQ29y
ZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90
aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20v
b3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBl
ZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwp
KSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIHVz
ZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRl
LmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBh
dGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBv
ciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4RUZc
eEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJo
dHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikpKTsKQEAgLTE1Niw4ICsx
NTYsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19Tb2xpZHVzKQogICAgIEVYUEVDVF9TVFJF
USgiaHR0cDovL3NpdGUuY29tJUVGJUJDJThGb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3Ry
aW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVFRiVCQyU4Rm90aGVyc2l0ZS5vcmciKSkp
OwogCiAgICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGp1c3QgYSBob3N0
IG5hbWUgb24gaXRzIG93bi4KLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tL290aGVyc2l0ZS5v
cmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVy
c2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbS9vdGhl
cnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4
OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5j
b20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmVuY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhC
Q1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJFUSgic2l0
ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmRlY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVG
XHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwogfQogCiBURVNUKFdlYkNvcmUs
IFVSTEV4dHJhc19TcGFjZSkKQEAgLTE2NSw4ICsxNjUsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4
dHJhc19TcGFjZSkKICAgICAvLyBTZWxlY3RlZCBpZGVvZ3JhcGhpYyBzcGFjZSwgd2hpY2ggbG9v
a3MgbGlrZSB0aGUgQVNDSUkgc3BhY2UsIHdoaWNoIGlzIG5vdCBhbGxvd2VkIHVuZXNjYXBlZC4K
IAogICAgIC8vIENvZGUgcGF0aCBzaW1pbGFyIHRvIHRoZSBvbmUgdXNlZCB3aGVuIHR5cGluZyBp
biBhIFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5v
cmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5n
KEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAg
ICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCB1c2VyVmlz
aWJsZVN0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUu
Y29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhX
VEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEUzXHg4MFx4ODBv
dGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29t
JTIwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBl
ZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBuaWwp
KSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJM
cyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFB
c1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUu
b3JnIikpKTsKQEAgLTE3NSwzMSArMTc1LDMxIEBAIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX1Nw
YWNlKQogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJUUzJTgwJTgwb3RoZXJzaXRl
Lm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVFMyU4
MCU4MG90aGVyc2l0ZS5vcmciKSkpOwogCiAgICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25zIHRoYXQg
ZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5hbWUgb24gaXRzIG93bi4KLSAgICBFWFBFQ1RfU1RSRVEo
InNpdGUuY29tIG90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRl
LmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7Ci0gICAgRVhQRUNU
X1NUUkVRKCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZGVj
b2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3Ry
aW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbSBvdGhlcnNpdGUub3JnIiwgW1dURjo6
ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4
U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0
ZS5vcmciLCBbV1RGOjpkZWNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJz
aXRlLm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAogVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfRmls
ZSkKIHsKLSAgICBFWFBFQ1RfU1RSRVEoImZpbGU6Ly8vJUUyJTk4JTgzIiwgW1tXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTovLy/imIMiLCBuaWwpIGFic29sdXRlU3RyaW5n
XSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJmaWxlOi8vLyVFMiU5OCU4MyIsIFtb
V1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTovLy/imIMiLCBuaWwpIGFic29sdXRl
U3RyaW5nXSBVVEY4U3RyaW5nXSk7CiB9CiAKIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX1BhcnNp
bmdFcnJvcikKIHsKICAgICAvLyBFeHBlY3QgSUROIGZhaWx1cmUuCi0gICAgTlNVUkwgKnVybCA9
IFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v76O/LmNvbSIsIG5pbCk7
CisgICAgTlNVUkwgKnVybCA9IFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly/v
o78uY29tIiwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwgPT0gbmlsKTsKIAotICAgIE5TU3Ry
aW5nICplbmNvZGVkSG9zdE5hbWUgPSBXZWJDb3JlOjplbmNvZGVIb3N0TmFtZShAImh0dHA6Ly/v
o78uY29tIik7CisgICAgTlNTdHJpbmcgKmVuY29kZWRIb3N0TmFtZSA9IFdURjo6ZW5jb2RlSG9z
dE5hbWUoQCJodHRwOi8v76O/LmNvbSIpOwogICAgIEVYUEVDVF9UUlVFKGVuY29kZWRIb3N0TmFt
ZSA9PSBuaWwpOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19OaWwpCiB7Ci0gICAgTlNV
UkwgKnVybDEgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKG5pbCwgbmlsKTsKKyAg
ICBOU1VSTCAqdXJsMSA9IFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhuaWwsIG5pbCk7CiAg
ICAgRVhQRUNUX1RSVUUodXJsMSA9PSBuaWwpOwogCi0gICAgTlNVUkwgKnVybDIgPSBXZWJDb3Jl
OjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChuaWwsIG5pbCk7CisgICAgTlNVUkwg
KnVybDIgPSBXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKG5pbCwgbmlsKTsK
ICAgICBFWFBFQ1RfVFJVRSh1cmwyID09IG5pbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRBbHRlcm5hdGVIVE1M
U3RyaW5nLm1tCmluZGV4IDUwNWFmMzU3ZTVkMTAxZDE3NmI1MjNkMTU1YTYyOTRiYmU4ZjdmZGYu
LjkwZDQ2MTBjNzQxMDk5ZmFlNGE2MGJlOTc3NjVjYzNkN2IwZWNkNDQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJp
bmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkQWx0
ZXJuYXRlSFRNTFN0cmluZy5tbQpAQCAtMzAsOSArMzAsOSBAQAogCiAjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
TlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4K
IAogc3RhdGljIGJvb2wgaXNEb25lOwogc3RhdGljIGludCBwcm92aXNpb25hbExvYWRDb3VudDsK
QEAgLTExMCw3ICsxMTAsNyBAQCBURVNUKFdLV2ViVmlldywgTG9hZEFsdGVybmF0ZUhUTUxTdHJp
bmdGcm9tUHJvdmlzaW9uYWxMb2FkRXJyb3JCYWNrVG9CYWNrKQogICAgICAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgICAgIGNoYXIgbGl0
ZXJhbFtdID0gImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tPD4vIjsKLSAgICAgICAgTlNVUkwqIHRh
cmdldFVSTCA9IFdlYkNvcmU6OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRl
cmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBuaWwpOworICAgICAgICBOU1VSTCogdGFyZ2V0
VVJMID0gV1RGOjpVUkxXaXRoRGF0YShbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bGl0ZXJhbCBsZW5n
dGg6c3RybGVuKGxpdGVyYWwpXSwgbmlsKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0YXJnZXRVUkxdXTsKICAgICAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0YXJnZXRVUkxdXTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2Fk
SW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQppbmRleCBhYzk4YzE5NjQ0MGFiN2I1NTA4NGM5
NWQ3OGQwOWZlN2ZjNzk3ZTNjLi5lYWE1NWNhYzY3ZjhlODQ0MTQzMjdkNGRhZTMyNjA5NjQ1ZDk1
YmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xv
YWRJbnZhbGlkVVJMUmVxdWVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQpAQCAtMjgsMTAgKzI4LDEwIEBACiAj
aWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZp
Z2F0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIHN0
YXRpYyBib29sIGRpZEZpbmlzaFRlc3Q7CiBzdGF0aWMgYm9vbCBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkOwpAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgY29uc3QgY2hhciBsaXRlcmFsW10gPSAiaHR0
cHM6Ly93d3cuZXhhbXBsZS5jb208Pi8iOwogCiBzdGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29u
c3QgY2hhciogbGl0ZXJhbCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEoW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7
CisgICAgcmV0dXJuIFdURjo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVy
YWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CiB9CiAKIEBpbnRlcmZhY2UgTG9hZElu
dmFsaWRVUkxOYXZpZ2F0aW9uQWN0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGU+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAppbmRleCBiMDUxNDUyNGY3MjU5MWY2Y2I1MDI5
MTEwMzFiN2JmYThhM2FmYTA3Li4xYmFhZTk1YWMwNjIzMWZiZmIyOWE4YmExNDE4Nzc3MmI1YWYz
YWQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAKQEAgLTIyLDggKzIyLDggQEAKIAogI2luY2x1ZGUg
IldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKIHN0YXRpYyBXZWJLaXRUZXN0U2Vy
dmVyKiBrU2VydmVyOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0KaW5kZXggOGQ1NGNhNmUxOWUwZDY5OTYyYTVmMTUz
MjM1NDJhZWYyMDM1NzVkMS4uODZiN2IzYzRhOTk4NjMwZDI4NWU1MTc5NWZjOGFkNjk4MWNmYzky
NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRV
UkxSZXF1ZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRJbnZh
bGlkVVJMUmVxdWVzdC5tbQpAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvblByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBzdGF0aWMgYm9vbCBkaWRGaW5p
c2hUZXN0Owogc3RhdGljIGJvb2wgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZDsKQEAgLTUxLDcgKzUx
LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZhaWxQcm92aXNpb25h
bExvYWRXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwg
V2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMKTsKIAogICAgIHN0YXRpYyBjaGFyIGxpdGVyYWxbXSA9
ICJodHRwczovL3d3dy5leGFtcGxlLmNvbSQvIjsKLSAgICBOU1VSTCAqZmFpbGVkVVJMID0gV2Vi
Q29yZTo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0
cmxlbihsaXRlcmFsKV0sIG5pbCk7CisgICAgTlNVUkwgKmZhaWxlZFVSTCA9IFdURjo6VVJMV2l0
aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFs
KV0sIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUoW2Vycm9yLnVzZXJJbmZvW0AiTlNFcnJvckZhaWxp
bmdVUkxLZXkiXSBpc0VxdWFsOmZhaWxlZFVSTF0pOwogCiAgICAgZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9T
U0xLZXlHZW5lcmF0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xLZXlH
ZW5lcmF0b3IubW0KaW5kZXggZGRlOGM3ZDAxZGE2NzgwNDE5NWM3ZjQxZTI5MTFhNzg5YzcwMmM1
Mi4uYWMxYmY3ZGI2Yzk4YjAyZDI1NTI2NTk3MmJjMjk5ZGEwYzk4N2VkZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5R2VuZXJhdG9yLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NTTEtleUdlbmVyYXRvci5tbQpAQCAtMjksOSAr
MjksOSBAQAogI2ltcG9ydCA8U2VjdXJpdHkvU2VjQXNuMVRlbXBsYXRlcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdlbmVy
YXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQg
PHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5o
PgogCkBAIC02OSw3ICs2OSw3IEBAIGNvbnN0IFNlY0FzbjFUZW1wbGF0ZSBzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VUZW1wbGF0ZVtdIHsKICAgICB7IDAsIDAsIDAsIDAgfQogfTsKIAotY29u
c3QgV2ViQ29yZTo6VVJMIHVybCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgImh0dHA6
Ly93d3cud2Via2l0Lm9yZy8iKTsKK2NvbnN0IFVSTCB1cmwgPSBVUkwoVVJMKCksICJodHRwOi8v
d3d3LndlYmtpdC5vcmcvIik7CiAKIGNsYXNzIFNTTEtleUdlbmVyYXRvclRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9Q
bGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5kZXggOGY3NTVjMzJjOGMyZTJlMGQzNzlkM2U1ZjA3
Y2M2YjliZGNjMTg2NS4uOTE3Y2JlYmNlZTU2YzdjMTc2NDgyMGZjYmQxZDBiOGYzNDkwNjU0ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4u
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNw
cApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8U2hsd2FwaS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351486</attachid>
            <date>2018-10-03 00:35:37 -0700</date>
            <delta_ts>2018-10-03 01:08:15 -0700</delta_ts>
            <desc>Add Linux support</desc>
            <filename>bug-190234-20181003163535.patch</filename>
            <type>text/plain</type>
            <size>1274833</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2Y2I1MjQ5NmNlZGVkZGJhYjM0NDA0
Mjc5MzdlMWM4NmQ3YTg4ZjQuLjZhNmQyOTA5NjY3OTgwNGQzZDljNDY2MGFmZTNhMTVlMDZiYWFm
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTgtMTAtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUg
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAg
ICAgICAgKiB3dGYvVVJMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgICogd3Rm
L1VSTC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmguCisgICAg
ICAgICogd3RmL1VSTEhhc2guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTEhhc2guaC4KKyAgICAgICAgKFdURjo6VVJMSGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6
OlVSTEhhc2g6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvVVJMUGFyc2VyLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAuCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KToKKyAgICAgICAgKFdURjo6VVJMUGFy
c2VyOjpwYXJzZUF1dGhvcml0eSk6CisgICAgICAgICogd3RmL1VSTFBhcnNlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmguCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpyZXN1bHQp
OgorICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4dHJhcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAuCisgICAgICAgICogd3RmL2NmL0NG
VVJMRXh0cmFzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVS
TEV4dHJhcy5oLgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAuCisgICAgICAgICogd3RmL2NvY29hL05T
VVJMRXh0cmFzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRy
YXMubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0uCisgICAgICAgIChXVEY6OmlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIp
OgorICAgICAgICAoV1RGOjppc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdU
Rjo6aXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjppc0xv
b2thbGlrZUNoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OndoaXRlTGlzdElETlNjcmlwdCk6Cisg
ICAgICAgIChXVEY6OnJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKToKKyAgICAgICAgKFdURjo6
YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KToKKyAgICAgICAgKFdURjo6aXNTZWNv
bmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyk6CisgICAgICAgIChXVEY6OmlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjphbGxDaGFyYWN0ZXJzQWxs
b3dlZEJ5VExEUnVsZXMpOgorICAgICAgICAoV1RGOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6Cisg
ICAgICAgIChXVEY6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChX
VEY6Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChXVEY6OmRlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKToKKyAgICAgICAgKFdURjo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFu
Z2UpOgorICAgICAgICAoV1RGOjpkZWNvZGVIb3N0TmFtZSk6CisgICAgICAgIChXVEY6OmVuY29k
ZUhvc3ROYW1lKToKKyAgICAgICAgKFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyk6
CisgICAgICAgIChXVEY6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKToKKyAgICAgICAg
KFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcpOgorICAgICAgICAoV1RGOjphcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6CisgICAgICAgIChXVEY6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKToKKyAgICAgICAgKFdURjo6bWFwSG9zdE5hbWVz
KToKKyAgICAgICAgKFdURjo6c3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOgorICAgICAgICAo
V1RGOjpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOgorICAgICAg
ICAoV1RGOjpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIpOgorICAgICAgICAoV1RGOjpV
UkxXaXRoRGF0YSk6CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKToKKyAg
ICAgICAgKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyk6CisgICAgICAgIChXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKToKKyAgICAgICAgKFdURjo6aGFzUXVlc3Rpb25N
YXJrT25seVF1ZXJ5U3RyaW5nKToKKyAgICAgICAgKFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5
cGUpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENo
YXJhY3Rlcik6CisgICAgICAgIChXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6CisgICAgICAg
IChXVEY6Om9yaWdpbmFsVVJMRGF0YSk6CisgICAgICAgIChXVEY6OmNyZWF0ZVN0cmluZ1dpdGhF
c2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KToKKyAgICAgICAgKFdURjo6aXNVc2VyVmlzaWJsZVVSTCk6CisgICAgICAgIChXVEY6OnJhbmdl
T2ZVUkxTY2hlbWUpOgorICAgICAgICAoV1RGOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6CisgICAg
ICAgICogd3RmL2NvY29hL1VSTENvY29hLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VSTE1hYy5tbS4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOgorICAgICAg
ICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2xpYi9HVW5p
cXVlUHRyU291cC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0dVbmlxdWVQdHJTb3VwLmguCisgICAgICAgICogd3RmL2dsaWIvVVJMU291cC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwLgor
CiAyMDE4LTEwLTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBb
bWFjT1NdIFN3aXRjaGluZyB0byBkaXNjcmV0ZSBHUFUgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIFVJ
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOWQzMGE0OGM5Y2M2NzczN2Y2Y2ZlY2VkYjRmYWFmMGEx
YTE4MjEwLi42NmUxYzVjY2IxMjBmYjA0MTRjYmRjNDE0YjNmZDgyNmM3MTNlYTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTQwIEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRv
IFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkw
MjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBV
UkwgaXMgYSBsb3ctbGV2ZWwgY29uY2VwdCB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbiBvdGhlciBj
bGFzc2VzIGluIFdlYkNvcmUuCisgICAgICAgIFdlIGFyZSBzdGFydGluZyB0byB1c2UgVVJMcyBp
biBKYXZhU2NyaXB0Q29yZSBmb3IgbW9kdWxlcy4KKyAgICAgICAgSSBuZWVkIFVSTCBhbmQgVVJM
UGFyc2VyIGluIGEgcGxhY2Ugd2l0aCBmZXdlciBkZXBlbmRlbmNpZXMgZm9yIHJkYXI6Ly9wcm9i
bGVtLzQ0MTE5Njk2CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50
RXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5j
cHA6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVs
ZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5oOgor
ICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAgICAgICAg
KiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTTWFwTGlrZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVh
ZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0Nv
bnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNp
b25SdWxlc0ZvclBpbmdMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjphcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVS
ZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3NzL1N0
eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+Ojpjb25zdHJ1
Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg6
CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb21wbGV0ZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5z
dXJlVGVtcGxhdGVEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dXJsRm9yQmluZGluZ3MgY29uc3QpOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzSmF2YVNjcmlwdFVS
TEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJDb250ZXh0Rm9yRWxlbWVudCk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YmFzZVVSSSBjb25zdCk6
CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5oOgor
ICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZG9tL1Nl
Y3VyaXR5Q29udGV4dC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTCk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRRdW90ZWRVUkxBdHRyaWJ1
dGVWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgICogZWRp
dGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU3VicmVzb3VyY2VVUkxB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCk6
CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHA6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaDoKKyAgICAg
ICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JVUkwuY3BwOgorICAg
ICAgICAqIGZpbGVhcGkvQmxvYlVSTC5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAg
ICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuaDoK
KyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgICogaHRtbC9ET01VUkwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
RE9NVVJMLmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVuVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbik6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RG
OjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50
PFdlYkNvcmU6OlVSTD46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0
bWFwLmg6CisgICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmg6CisgICAgICAg
ICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1h
bmFnZXIuaDoKKyAgICAgICAgKiBodG1sL1VSTElucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRt
bC9VUkxSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6VVJMU2VhcmNoUGFyYW1zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9tQXNzb2NpYXRlZFVSTCk6CisgICAgICAgICogaHRt
bC9VUkxVdGlscy5oOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldEhvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldFBvcnQpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNlbWljb2xvblNlcGFyYXRlZFZhbHVlQ29udGFpbnNKYXZhU2NyaXB0
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpY
U1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZmlsdGVySW5wdXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0
ZXJCdXR0b25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmlzTGlrZWx5U2FmZVJlc291cmNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9y
Lmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24u
aDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnJlY2VpdmVkRmlyc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250
aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0pOgorICAgICAgICAq
IGxvYWRlci9MaW5rTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0xvYWRUaW1pbmcuaDoKKyAg
ICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvTWl4ZWRD
b250ZW50Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVja2Vy
OjpjaGVja0Zvcm1Gb3JNaXhlZENvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2hvdWxkU2NoZWR1
bGVOYXZpZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5oOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZEluZm8uaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
VGltaW5nLmg6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAqIGxvYWRl
ci9TdWJmcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L01hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQ
YXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9u
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW06CisgICAgICAgICogcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvQ29u
dGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFi
bGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNzKToKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0V2ZW50U291cmNlLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9IaXN0b3J5Lmg6CisgICAgICAg
ICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6dXJsIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAqIHBh
Z2UvTG9jYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5oOgorICAgICAgICAq
IHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHA6CisgICAgICAgICogcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5oOgor
ICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9Tb2NrZXRQcm92aWRl
ci5oOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oOgorICAgICAgICAqIHBh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5oOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5oOgorICAgICAgICAqIHBh
Z2UvVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBwYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaDoK
KyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Lmg6CisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9E
cmFnRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MaW5rSWNvbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6Y2FuRXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmg6CisgICAgICAgICogcGxh
dGZvcm0vU291cmNlc1NvdXAudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vVXNlckFnZW50UXVpcmtzLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2Vk
U2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKHdlYktpdE1lZGlhU3JjU2V0VXJpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnSW1h
Z2VHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzUGxhaW5U
ZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUHVibGljU3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5h
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjppc0FybWVu
aWFuTG9va2FsaWtlQ2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQXJt
ZW5pYW5TY3JpcHRDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBU0NJ
SURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
aXNMb29rYWxpa2VDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d2hpdGVM
aXN0SUROU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJRE5TY3JpcHRX
aGl0ZUxpc3RGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFsbENoYXJhY3RlcnNJ
bklETlNjcmlwdFdoaXRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1NlY29u
ZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6YWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Om1hcEhvc3ROYW1lV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW5j
b2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFJhbmdlc1Ro
YXROZWVkTWFwcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFuZ2Vz
VGhhdE5lZWRFbmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFu
Z2VzVGhhdE5lZWREZWNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseUhv
c3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjphcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjptYXBIb3N0TmFtZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c3Ry
aW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJM
QnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpVUkxXaXRoRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3Rlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpVUkxCeVJlbW92aW5nVXNlckluZm8pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6b3JpZ2luYWxVUkxEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc1VzZXJWaXNpYmxlVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJh
bmdlT2ZVUkxTY2hlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9va3NMaWtlQWJz
b2x1dGVVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JQYXJ0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVz
dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94
eVNlcnZlckN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Byb3h5U2VydmVyU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRF
bmNvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vQlN0cmluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICogcGx1Z2lu
cy9QbHVnaW5EYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHA6CisgICAgICAgICogc3ZnL1NW
R0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjpzb3Vy
Y2VVUkkgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNhY2hlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dXNlclZpc2libGVTdHJp
bmcpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUp
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCiAyMDE4LTEwLTAyICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWVzc2FnZUV2ZW50LnBvcnRzIHNo
b3VsZCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwNTk2NDRhMDViYTNmZjRh
NGJiNjc4YTE5ZjJkMDQxNjc2MTI0NWQuLjM5OTRiZjYxZTRkZmQ2NjFlM2FmY2QzYzBiZDQ5MzEw
MTVjOTZmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgyIEBACisyMDE4LTEwLTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwg
ZnJvbSBXZWJDb3JlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6OmJsb2JTaXplKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNr
ZXI6OnNldENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWRDaGVja2VyOjp1cmwgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndyaXRl
QmxvYlRvRmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlY29u
bmVjdFRvKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
bG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRTdHJlYW06
OmNyZWF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3RpY3M6
OnJlY29yZFJldHJpZXZlZENhY2hlZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTdGF0aXN0aWNzOjpyZWNvcmRSZXZhbGlkYXRpb25TdWNjZXNzKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5mbzo6Zmlyc3RQYXJ0eUZv
ckNvb2tpZXMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVFdmVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXF1
ZXN0OjpvcGVyYXRvciBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6UmVzcG9uc2U6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6RXJy
b3I6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY29uc3QpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6OmZpbmRCZXN0RnV6enlNYXRjaCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjp1cmxJZGVudGlmeWlu
Z0NvbW1vbkRvbWFpbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3Jr
Q2FwdHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6
UmVzb3VyY2U6OnVybCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXNvdXJj
ZTo6cXVlcnlQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05l
dHdvcmtDYXB0dXJlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtT
ZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6b3BlbkNGVVJMUmVmKToKKyAgICAgICAgKFdlYktp
dDo6cmVwbGFjZWROU1dvcmtzcGFjZV9sYXVuY2hBcHBsaWNhdGlvbkF0VVJMX29wdGlvbnNfY29u
ZmlndXJhdGlvbl9lcnJvcik6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwuaDoKKyAgICAg
ICAgKEFQSTo6VVJMOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpVUkw6OmVxdWFscyk6CisgICAg
ICAgIChBUEk6OlVSTDo6VVJMKToKKyAgICAgICAgKEFQSTo6VVJMOjp1cmwgY29uc3QpOgorICAg
ICAgICAoQVBJOjpVUkw6OnBhcnNlVVJMSWZOZWNlc3NhcnkgY29uc3QpOgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg6CisgICAgICAgIChBUEk6OlVzZXJD
b250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1VSTCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQ
SS9jL1dLVVJMUmVxdWVzdC5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9u
c2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAo
V0tVUkxDcmVhdGVXaXRoQ0ZVUkwpOgorICAgICAgICAoV0tVUkxDb3B5Q0ZVUkwpOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6
V2ViQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbToKKyAgICAg
ICAgKC1bTlNVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtOjppdGVtSXNJblNhbWVEb2N1bWVudCBjb25zdCk6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJFcnJvcnMuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9j
Zi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHA6Cisg
ICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlv
bjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbi5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjp0YWtlUmVkaXJlY3RDaGFpbik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5h
dmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyk6CisgICAg
ICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGljeSBjb25zdCk6
CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kg
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAg
KEFQSTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJT
Y3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTY3JpcHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwOgorICAgICAgICAoZmls
ZVBhdGhzRnJvbUZpbGVVUkxzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cDoKKyAgICAgICAgKFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEpOgorICAg
ICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZp
Z2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3Bw
OgorICAgICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXS1Bh
Z2VHcm91cEFkZFVzZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2Vlbik6CisgICAgICAgIChXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6Cisg
ICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVz
b3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJl
ZEFzU3VicmVzb3VyY2VVbmRlcik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZy
b20pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tIVFRQQ29va2llU3RvcmUubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJTY3JpcHQubW06CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6
aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFj
a2xpc3Q6YXNzb2NpYXRlZFVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmZvclVSTFNjaGVtZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiB1cmxTY2hlbWVIYW5kbGVyRm9yVVJM
U2NoZW1lOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5p
ZmVzdC5tbToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBpbml0V2l0aENvZGVy
Ol0pOgorICAgICAgICAoK1tfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZl
c3RGcm9tSlNPTjptYW5pZmVzdFVSTDpkb2N1bWVudFVSTDpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5
bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDps
ZWdhY3lCbGFja2xpc3Q6YmFzZVVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9jb29raWVf
bWFuYWdlcl9nZXRfY29va2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEZpbGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5f
bmV3X2Zvcl91cmkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVu
dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQ
YXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
dmFsaWRhdGVNZXJjaGFudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29h
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBw
bGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjpuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OmRvbWFp
bkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9Eb3dubG9hZENsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRp
ZEZpbmlzaCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpyZXNvbHZlV2ViR0xMb2FkUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1bHQ6OlNhZmVCcm93c2luZ1Jlc3Vs
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW06CisgICAgICAgICgtW19XS1ByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBmaW5pc2g6
XSk6CisgICAgICAgIChXZWJLaXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2gpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIpOgorICAgICAgICAoV2ViS2l0
OjpyZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMpOgorICAgICAgICAoV2Vi
S2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3Jp
Z2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3Zl
cnlBdHRlbXB0ZXIubW06CisgICAgICAgICgtW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0
ZW1wdGVyIGF0dGVtcHRSZWNvdmVyeV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVRvVVJMRm9yRmls
ZVByb21pc2VQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldFJlZGlyZWN0Q2hh
aW4pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpyZWRpcmVjdENoYWluIGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1
bWVudE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpzZXRV
bnJlYWNoYWJsZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjp1cmwgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRTdGF0ZTo6cHJvdmlzaW9uYWxVUkwgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRTdGF0ZTo6dW5yZWFjaGFibGVVUkwgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VMb2FkU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpo
YXNPbmx5U2VjdXJlQ29udGVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
SW5mb1N0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5
TWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaDoKKyAgICAg
ICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nUmVzdWx0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpTYWZlQnJvd3NpbmdSZXN1bHQ6OnVybCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdD
b250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lUHJveHk6OnVybCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJv
eHk6OnByb3Zpc2lvbmFsVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94
eTo6dW5yZWFjaGFibGVVUkwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGVudFJ1bGVM
aXN0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNz
RGlkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRl
cm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW06CisgICAgICAgICgtW1dLQWN0
aW9uU2hlZXRBc3Npc3RhbnQgX2NyZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25zOnNob3dMaW5r
VGl0bGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hh
cmVFbGVtZW50V2l0aFVSTDpyZWN0Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmVz
ZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxlcjpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1b
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbToKKyAgICAgICAg
KC1bV0tMZWdhY3lQREZWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhV
Ukw6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAg
ICAgKC1bV0tQREZWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6
cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlciBfdXBkYXRlTG9jYXRpb25JbmZvXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9M
ZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVMZWdh
Y3lTZXNzaW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIg
X2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlTWVyY2hhbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2Fk
RGF0YVJlcXVlc3QpOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNs
aWVudDo6dXNlckFnZW50Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwOgorICAgICAgICAoV0tCdW5kbGVGcmFt
ZUFsbG93c0ZvbGxvd2luZ0xpbmspOgorICAgICAgICAoV0tCdW5kbGVGcmFtZUNvcHlTdWdnZXN0
ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTCk6CisgICAgICAgIChXS0J1bmRsZUZyYW1lQ29w
eU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VI
YXNMb2NhbERhdGFGb3JVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5jcHA6CisgICAgICAgIChjb252ZXJ0VG9V
VEY4U3RyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNv
Y2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNsaWNrZWRMaW5rKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1VUkxSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1
Z2luSW5mbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92
aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9t
TG9jYWxVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRD
U1BWaW9sYXRpb25SZXBvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRVc2VyU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
aW50T3BlcmF0aW9uR3RrOjpmcmFtZVVSTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKToK
KwogMjAxOC0xMC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIERlcHJlY2F0ZSBXS0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5k
ZXggMTRjNjIwYWFhYjFiN2ExNTY4NTVkY2Q3YTYzOGE2MGQzOGVkMTM1OC4uM2Y5MjIzYmI3ZDE3
ZWIwZDIxNTczMDc1ZmEzNzBjNDczZmM0OTRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKwogMjAxOC0xMC0wMSAgRGVhbiBKYWNrc29u
ICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBTd2l0Y2hpbmcgdG8gZGlzY3Jl
dGUgR1BVIHNob3VsZCBiZSBkb25lIGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggY2UzMWU3MzgxYjg5ZDhkOGQ2NjhiZmIxNDRiMzIyYzg4ZTc2OWY2NS4u
ZTgwNmVlNjE4ZmIyYjcyOTkyOGEwYzBiOGFhOWViNzcwNTU1NTNmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20g
V2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTUF0dHIubW06CisgICAgICAgICogRE9NL0RPTUJsb2IubW06CisgICAg
ICAgICogRE9NL0RPTUNTU0NoYXJzZXRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NJbXBv
cnRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NNZWRpYVJ1bGUubW06CisgICAgICAgICog
RE9NL0RPTUNTU1BhZ2VSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NQcmltaXRpdmVWYWx1
ZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTUnVsZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbi5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVSdWxlLm1tOgor
ICAgICAgICAqIERPTS9ET01DU1NTdHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9ET01DU1NW
YWx1ZS5tbToKKyAgICAgICAgKiBET00vRE9NQ2hhcmFjdGVyRGF0YS5tbToKKyAgICAgICAgKiBE
T00vRE9NQ291bnRlci5tbToKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3VtZW50
VHlwZS5tbToKKyAgICAgICAgKiBET00vRE9NRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTUZp
bGUubW06CisgICAgICAgICogRE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEFyZWFF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQlJFbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MQmFzZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCYXNlRm9u
dEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxD
YW52YXNFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQ29sbGVjdGlvbi5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTERpdkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxE
b2N1bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGaWVsZFNl
dEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRnJh
bWVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tOgor
ICAgICAgICAqIERPTS9ET01IVE1MSFJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
SGVhZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MSUZyYW1lRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEltYWdlRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTElucHV0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00v
RE9NSFRNTExJRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTExhYmVsRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxMaW5rRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1hcEVsZW1lbnQu
bW06CisgICAgICAgICogRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTE1lZGlhRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1ldGFFbGVt
ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MTW9kRWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTE9MaXN0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9iamVjdEVs
ZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
T3B0aW9uc0NvbGxlY3Rpb24ubW06CisgICAgICAgICogRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVt
ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MUGFyYW1FbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MUXVvdGVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MU2NyaXB0
RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxTdHlsZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxU
YWJsZUNhcHRpb25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVDZWxsRWxl
bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRh
YmxlUm93RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxWaWRlb0Vs
ZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUtleWJvYXJkRXZlbnQubW06CisgICAgICAgICog
RE9NL0RPTU1lZGlhTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9NTW91c2VFdmVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NTXV0YXRpb25FdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTmFtZWRO
b2RlTWFwLm1tOgorICAgICAgICAqIERPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW06Cisg
ICAgICAgICogRE9NL0RPTVJhbmdlLm1tOgorICAgICAgICAqIERPTS9ET01TdHlsZVNoZWV0Lm1t
OgorICAgICAgICAqIERPTS9ET01UZXh0Lm1tOgorICAgICAgICAqIERPTS9ET01UZXh0RXZlbnQu
bW06CisgICAgICAgICogRE9NL0RPTVRva2VuTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9NVUlF
dmVudC5tbToKKyAgICAgICAgKiBET00vRE9NWFBhdGhSZXN1bHQubW06CisgICAgICAgICogSGlz
dG9yeS9XZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFzLm1t
OgorICAgICAgICAoLVtOU1VSTCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nXSk6CisgICAgICAgICgt
W05TVVJMIF93ZWJfVVJMQnlSZW1vdmluZ1VzZXJJbmZvXSk6CisgICAgICAgICgtW05TVVJMIF93
ZWJfZGF0YUZvclVSTENvbXBvbmVudFR5cGU6XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfc2No
ZW1lRGF0YV0pOgorICAgICAgICAoLVtOU1VSTCBfd2ViX2hvc3REYXRhXSk6CisgICAgICAgICog
TWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW06CisgICAgICAgICogUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAqIFBsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFt
OjpzZXRSZXF1ZXN0VVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyBj
b25zdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1
cGRhdGVHbG9iYWxIaXN0b3J5KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50
Q29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50
Q29vcmRpbmF0b3JDbGllbnQubW06CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JDbGll
bnQ6OnNob3dQYXltZW50VUkpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW06Cisg
ICAgICAgIChXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAg
ICgtW1dlYkZyYW1lIF9sb2FkRGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6
dW5yZWFjaGFibGVVUkw6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9k
ZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmll
dy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisKIDIwMTgtMTAtMDEgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gU3dpdGNoaW5nIHRvIGRpc2NyZXRl
IEdQVSBzaG91bGQgYmUgZG9uZSBpbiB0aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCmluZGV4IGVjODJkNDlhY2ZmYjc5MTQ1YWYzM2M0MjU5M2EzYzBhZWI0YWRlOGIuLmU2
ZmU2Y2Q3YmFjMGI1OWYwOTllNDA1MmZkODQyZTVhMGJjNmI0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2Vi
Q29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmNwcDoKKyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBl
cnMuaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpbkRhdGFiYXNlLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZVdpbi5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGUuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5jcHA6CisgICAgICAgIChXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5J
bmZvKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAg
ICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAg
KiBXZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAg
ICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgICogV2ViSGlzdG9yeS5oOgorICAgICAgICAq
IFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6Cisg
ICAgICAgICogV2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIFdlYlVSTFJlc3BvbnNl
LmNwcDoKKyAgICAgICAgKFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAg
ICogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisK
IDIwMTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgUGFyc2VkVVJMU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjY2YyOTQ2YTlkYTVmYzg2MGYzNThjZDMwZWM5YjM2OGY1
MGQ2ZjY5Li44ZTVmY2VkZmI1MWE1MjZjZTdlZTRkMTgxZGM4ZTA3OTA2NTE2MGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc2LDYgKzc2LDEyIEBACiAJ
CTUzMTFCRDUzMUVBNzFDQUQwMDUyNTI4MSAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTFCRDUxMUVBNzFDQUQwMDUyNTI4MSAv
KiBTaWduYWxzLmNwcCAqLzsgfTsKIAkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVh
ZE1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMUJENUIxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwICovOyB9Owog
CQk1MzUzNEYyQTFFQzBFMTBFMDAxNDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTM0RjI5MUVDMEUxMEUw
MDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKENsaWVudCwgU2VydmVyLCApOyB9OyB9OworCQk1QzFGMDU5MzIxNjQzNTZCMDAzOTMwMkMg
LyogQ0ZVUkxFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMxRjA1OTEyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLzsg
fTsKKwkJNUMxRjA1OTUyMTY0MzdCMzAwMzkzMDJDIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUYwNTk0MjE2NDM3QjMwMDM5MzAy
QyAvKiBVUkxDRi5jcHAgKi87IH07CisJCTVDQzBFRTc1MjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQ
YXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNDMEVFNzMyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5jcHAgKi87IH07CisJCTVDQzBF
RTc2MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFNzQyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAg
Ki87IH07CisJCTVDQzBFRTg5MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTg2MjE2MkJDMjIw
MEExQTg0MiAvKiBVUkxDb2NvYS5tbSAqLzsgfTsKKwkJNUNDMEVFOEEyMTYyQkMyMjAwQTFBODQy
IC8qIE5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNDMEVFODgyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tICovOyB9
OwogCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUx
MzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBFQ0E2MEQxQjAyNDI2
ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MEExQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21p
Y1N0cmluZ0ltcGwuY3BwICovOyB9OwogCQk3QTA1MDkzRjFGQjlEQ0M1MDBCMzNGQjggLyogSlNP
TlZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTA1MDkzRTFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVlcy5jcHAgKi87IH07CkBAIC0z
NzIsNyArMzc4LDE5IEBACiAJCTU1MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGlueUxSVUNhY2hlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1OTdGODJDMUQ5NEI5OTcwMDY2QkMyMSAvKiBT
eW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN5bmNocm9uaXplZEZpeGVkUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUI0MzM4M0E1RDBCNDYzQzk0MzNEOTMzIC8qIEluZGV4TWFwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluZGV4TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDMUYwNTkxMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRlVSTEV4dHJhcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDMUYwNTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRlVSTEV4dHJhcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QzFGMDU5NDIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0Yu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMQ0YuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzFGMDU5NzIxNjQzOTk0MDAzOTMwMkMgLyogVVJM
SGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlx
dWVSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlUmVmLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTcxMjE2MjlGMTgwMEExQTg0MiAvKiBV
UkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTcyMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMUGFyc2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTczMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJz
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzQyMTYyOUYxOTAwQTFBODQy
IC8qIFVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3NzIxNjJBMDEwMDBBMUE4NDIg
LyogVVJMSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAv
KiBVUkxDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVS
TENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU4NzIxNjJCQzIy
MDBBMUE4NDIgLyogTlNVUkxFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTlNVUkxFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFODgy
MTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTlNVUkxFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUlu
SW5kZXggPSAwOyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTVEMjQ3QjZFMTQ2ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVE
MjQ3QjcwMTQ2ODlDNDcwMEU3OEI3NiAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzIwLDkgKzczOCwxMiBAQAogCQkyQ0RFRDBGMDE4MTE1QzNGMDA0REJBNzAgLyogY2YgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDMUYwNTkxMjE2
NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8sCisJCQkJNUMxRjA1OTIyMTY0MzU2
QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmggKi8sCiAJCQkJQzJCQ0ZDNDExRjYxRDYxNjAwQzky
MjJDIC8qIExhbmd1YWdlQ0YuY3BwICovLAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAv
KiBSdW5Mb29wQ0YuY3BwICovLAogCQkJCTFBRkRFNjQ3MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBl
Q2FzdHNDRi5oICovLAorCQkJCTVDMUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTExMzEsNiArMTE1MiwxMiBAQAogCQkJCUUzMDBFNTIxMjAzRDY0NUYwMERBNzlCRSAvKiBVbmlx
dWVBcnJheS5oICovLAogCQkJCTVDN0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlxdWVSZWYu
aCAqLywKIAkJCQlDRDc2MDBGRjFGOTBBM0NBMDAwMjZFMjYgLyogVW5zYWZlUG9pbnRlci5oICov
LAorCQkJCTVDQzBFRTc0MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwICovLAorCQkJCTVDQzBF
RTcxMjE2MjlGMTgwMEExQTg0MiAvKiBVUkwuaCAqLywKKwkJCQk1QzFGMDU5NzIxNjQzOTk0MDAz
OTMwMkMgLyogVVJMSGFzaC5oICovLAorCQkJCTVDQzBFRTc3MjE2MkEwMTAwMEExQTg0MiAvKiBV
UkxIYXNoLmggKi8sCisJCQkJNUNDMEVFNzMyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5j
cHAgKi8sCisJCQkJNUNDMEVFNzIyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5oICovLAog
CQkJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAqLywKIAkJCQk3QUZFQzZB
RTFFQjIyQUM2MDBEQURFMzYgLyogVVVJRC5oICovLAogCQkJCUE4QTQ3MzZGMTUxQTgyNUIwMDQx
MjNGRiAvKiBWYWx1ZUNoZWNrLmggKi8sCkBAIC0xMzU0LDcgKzEzODEsMTAgQEAKIAkJCQlBOEE0
NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZENvY29hLm1tICovLAogCQkJCUFERjJD
RTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgKi8sCiAJCQkJ
QUQ4OUI2QjkxRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1t
ICovLAorCQkJCTVDQzBFRTg3MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5oICovLAor
CQkJCTVDQzBFRTg4MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSAqLywKIAkJCQlB
MzBENDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLywKKwkJCQk1Q0MwRUU4
NjIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0gKi8sCiAJCQkJRTRBMEFEM0MxQTk2MjUz
QzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29j
b2E7CkBAIC0xNDgxLDYgKzE1MTEsNyBAQAogCQkJCUE4QTQ3MzhCMTUxQTgyNUIwMDQxMjNGRiAv
KiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMy
Mzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNB
QzE1MUE4MjVCMDA0MTIzRkYgLyogY2FjaGVkLXBvd2Vycy5jYyBpbiBTb3VyY2VzICovLAorCQkJ
CTVDMUYwNTkzMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjY2QjI4QTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4QTQ3NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxh
dG9ySUNVLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTUzMiw2ICsxNTYzLDcgQEAKIAkJCQlBRDg5
QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI4QzFEQzk3QkFCMDA0QTFEM0YgLyogTW9u
b3RvbmljVGltZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0MwRUU4QTIxNjJCQzIyMDBBMUE4
NDIgLyogTlNVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNDE1MUE4MjVC
MDA0MTIzRkYgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNG
NzE1MUE4MjVCMDA0MTIzRkYgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNGOTE1MUE4MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0xNTg1LDYgKzE2MTcsMTAgQEAKIAkJCQk1MzExQkQ1QzFFQTgyMkY5MDA1
MjUyODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MDFE
Qzk3QkFCMDA0QTFEM0YgLyogVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNzA3NUY1MUZCRjUzQ0QwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1Q0MwRUU3NjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTVDMUYwNTk1MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1Q0MwRUU4OTIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1Q0MwRUU3NTIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzhGMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4
dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzkxMUQzMDdBQjgwMEY1RkEx
NiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzkz
MUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDM5Y2MxOTk5NjkyNWExMmRjMzRkZTA3MzRiOWYyOTZl
ZGE0N2NmNDAuLjI4OTIxYmM4ZDI0ZjQ5ZTM1ZjFmMzc3NmI3YWM2ZTc0ODI5NGMxZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CkBAIC0yNDAsNiArMjQwLDkgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVS
UwogICAgIFRpbnlQdHJTZXQuaAogICAgIFRyaVN0YXRlLmgKICAgICBUeXBlQ2FzdHMuaAorICAg
IFVSTC5oCisgICAgVVJMSGFzaC5oCisgICAgVVJMUGFyc2VyLmgKICAgICBVVUlELmgKICAgICBV
bmFsaWduZWRBY2Nlc3MuaAogICAgIFVuZXhwZWN0ZWQuaApAQCAtMzkyLDYgKzM5NSw4IEBAIHNl
dChXVEZfU09VUkNFUwogICAgIFRocmVhZGluZy5jcHAKICAgICBUaW1lV2l0aER5bmFtaWNDbG9j
a1R5cGUuY3BwCiAgICAgVGltaW5nU2NvcGUuY3BwCisgICAgVVJMLmNwcAorICAgIFVSTFBhcnNl
ci5jcHAKICAgICBVVUlELmNwcAogICAgIFdURkFzc2VydGlvbnMuY3BwCiAgICAgV2FsbFRpbWUu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RGL3d0
Zi9Gb3J3YXJkLmgKaW5kZXggZWU1MWM3MzIxOGYxZmZiOWU1MjUwYjY1ZmQ1YmY1Mzg4MjdhZmVl
Mi4uNGJlZjgxMGNjMTA4NjcyZDk4Mjk2OGNiNTkzNWJhMjQwMjcwNjRmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApA
QCAtNDMsNiArNDMsNyBAQCBjbGFzcyBTdHJpbmdWaWV3OwogY2xhc3MgVGV4dFBvc2l0aW9uOwog
Y2xhc3MgVGV4dFN0cmVhbTsKIGNsYXNzIFVuaXF1ZWRTdHJpbmdJbXBsOworY2xhc3MgVVJMOwog
Y2xhc3MgV2FsbFRpbWU7CiAKIHN0cnVjdCBGYXN0TWFsbG9jOwpAQCAtMTA5LDYgKzExMCw3IEBA
IHVzaW5nIFdURjo6U3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6U3RyaW5nVmlldzsKIHVzaW5nIFdU
Rjo6VGV4dFBvc2l0aW9uOwogdXNpbmcgV1RGOjpUZXh0U3RyZWFtOwordXNpbmcgV1RGOjpVUkw7
CiB1c2luZyBXVEY6OlZhcmlhbnQ7CiB1c2luZyBXVEY6OlZlY3RvcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUdUSy5jbWFrZQppbmRleCA0NjkwM2MzNjQyOWNlYjcyNmExMTE5MzNhZTJmYjM1MDQ4OGRmMjI1
Li40MWM4OTU0OTE4ODI5YzdlMDdlZmVjOGRhOTU3MWE2NjZmNjgyNTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUdUSy5jbWFrZQpAQCAtNiw2ICs2LDcgQEAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFE
RVJTCiAgICAgZ2xpYi9HUmVmUHRyLmgKICAgICBnbGliL0dUeXBlZGVmcy5oCiAgICAgZ2xpYi9H
VW5pcXVlUHRyLmgKKyAgICBnbGliL0dVbmlxdWVQdHJTb3VwLmgKICAgICBnbGliL1J1bkxvb3BT
b3VyY2VQcmlvcml0eS5oCiAgICAgZ2xpYi9XVEZHVHlwZS5oCiAKQEAgLTIxLDYgKzIyLDcgQEAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAg
Z2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCisgICAgZ2xpYi9VUkxT
b3VwLmNwcAogCiAgICAgbGludXgvQ3VycmVudFByb2Nlc3NNZW1vcnlTdGF0dXMuY3BwCiAgICAg
bGludXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwCkBAIC0zNyw5ICszOSwxMSBAQCBsaXN0KEFQ
UEVORCBXVEZfTElCUkFSSUVTCiAgICAgJHtHTElCX0dJT19MSUJSQVJJRVN9CiAgICAgJHtHTElC
X0dPQkpFQ1RfTElCUkFSSUVTfQogICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAgJHtMSUJTT1VQ
X0xJQlJBUklFU30KICAgICAke1pMSUJfTElCUkFSSUVTfQogKQogCiBsaXN0KEFQUEVORCBXVEZf
U1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAg
ICR7TElCU09VUF9JTkNMVURFX0RJUlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4
IGY0ZDUyNmU1NzFiOTMyMjk0ZWFhMzQyOWEzNDA0OTEwZTcxOTE0MjEuLmEwMThmOTI5ZWY1NTJl
ZTI0MjExNTY1ZjFhNzllZjBiM2MzZTU2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBA
IC04LDEwICs4LDEyIEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICkKIAogbGlzdChBUFBF
TkQgV1RGX1BVQkxJQ19IRUFERVJTCisgICAgY2YvQ0ZVUkxFeHRyYXMuaAogICAgIGNmL1R5cGVD
YXN0c0NGLmgKIAogICAgIGNvY29hL0VudGl0bGVtZW50cy5oCiAgICAgY29jb2EvTWFjaFNlbmRS
aWdodC5oCisgICAgY29jb2EvTlNVUkxFeHRyYXMuaAogICAgIGNvY29hL1NvZnRMaW5raW5nLmgK
IAogICAgIGRhcndpbi9XZWFrTGlua2luZy5oCkBAIC0zOCw4ICs0MCwxMCBAQCBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUwogICAgIFNjaGVkdWxlUGFpckNGLmNwcAogICAgIFNjaGVkdWxlUGFpck1h
Yy5tbQogCisgICAgY2YvQ0ZVUkxFeHRyYXMuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAg
ICBjZi9SdW5Mb29wQ0YuY3BwCisgICAgY2YvVVJMQ0YuY3BwCiAKICAgICBjb2NvYS9BdXRvZHJh
aW5lZFBvb2wuY3BwCiAgICAgY29jb2EvQ1BVVGltZUNvY29hLmNwcApAQCAtNDgsNiArNTIsOCBA
QCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNvY29hL01haW5UaHJlYWRDb2NvYS5tbQog
ICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcAogICAgIGNvY29hL01lbW9yeVByZXNz
dXJlSGFuZGxlckNvY29hLm1tCisgICAgY29jb2EvTlNVUkxFeHRyYXMubW0KKyAgICBjb2NvYS9V
UkxDb2NvYS5tbQogICAgIGNvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAogCiAgICAgbWFjL0RlcHJl
Y2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4
IDc1MmI1OTkzMTQ4ZjExMTBhMjkzYzlkYTllMjhhZGVmMDhmZWU0MGMuLmEwMmRhNTI3OGVlZWFi
OGRiODAwYmM4Zjk2Zjg5ZmI5NzJmM2UxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCkBA
IC00LDYgKzQsNyBAQCBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICBnbGliL0dS
ZWZQdHIuaAogICAgIGdsaWIvR1R5cGVkZWZzLmgKICAgICBnbGliL0dVbmlxdWVQdHIuaAorICAg
IGdsaWIvR1VuaXF1ZVB0clNvdXAuaAogICAgIGdsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmgK
ICAgICBnbGliL1dURkdUeXBlLmgKIApAQCAtMTksNiArMjAsNyBAQCBsaXN0KEFQUEVORCBXVEZf
U09VUkNFUwogICAgIGdsaWIvR0xpYlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3Bw
CiAgICAgZ2xpYi9SdW5Mb29wR0xpYi5jcHAKKyAgICBnbGliL1VSTFNvdXAuY3BwCiAKICAgICBs
aW51eC9DdXJyZW50UHJvY2Vzc01lbW9yeVN0YXR1cy5jcHAKICAgICBsaW51eC9NZW1vcnlGb290
cHJpbnRMaW51eC5jcHAKQEAgLTM1LDkgKzM3LDExIEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJ
RVMKICAgICAke0dMSUJfR0lPX0xJQlJBUklFU30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJ
RVN9CiAgICAgJHtHTElCX0xJQlJBUklFU30KKyAgICAke0xJQlNPVVBfTElCUkFSSUVTfQogICAg
ICR7WkxJQl9MSUJSQVJJRVN9CiApCiAKIGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9E
SVJFQ1RPUklFUwogICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CisgICAgJHtMSUJTT1VQX0lOQ0xV
REVfRElSU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtl
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggNDY4NTE5NmNlYTYyZGMw
NmQ1YmE2MzAwMjEyYzI3ODkwOTFlOWFkNy4uNjgzNTk5YjEwNzMyZTJmODAzY2Q5MTA1OTZlZDQy
ODE4MTNjODdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTIwLDExICsyMCwxNSBA
QCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogCiBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5E
IFdURl9QVUJMSUNfSEVBREVSUworICAgICAgICBjZi9DRlVSTEV4dHJhcy5oCiAgICAgICAgIGNm
L1R5cGVDYXN0c0NGLmgKIAogICAgICAgICB0ZXh0L2NmL1RleHRCcmVha0l0ZXJhdG9yQ0YuaAog
ICAgICkKICAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICBjZi9DRlVSTEV4dHJh
cy5jcHAKKyAgICAgICAgY2YvVVJMQ0YuY3BwCisKICAgICAgICAgdGV4dC9jZi9BdG9taWNTdHJp
bmdJbXBsQ0YuY3BwCiAgICAgICAgIHRleHQvY2YvU3RyaW5nQ0YuY3BwCiAgICAgICAgIHRleHQv
Y2YvU3RyaW5nSW1wbENGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQzNDVhZWU3NTMzM2JjZjg3YzE2
YTM1Y2Q3YzAxZDUwYzAwNWU5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VS
TC5jcHAKQEAgLTAsMCArMSwxMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3
LTIwMDgsIDIwMTEtMjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKyNpbmNs
dWRlICJVUkxQYXJzZXIuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaWNvZGUv
dWlkbmEuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1i
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKKy8vIEZJ
WE1FOiBUaGlzIGZpbGUgbWFrZXMgdG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJhdG9yIG9uIFN0
cmluZy4KKy8vIFdlIGVpdGhlciBoYXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0b3Igc28gaXQg
ZG9lc24ndCBpbnZvbHZlCisvLyBzbyBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFuZ2UgdGhpcyB0
byB1c2UgU3RyaW5nQnVmZmVyIGluc3RlYWQuCisKKworbmFtZXNwYWNlIFdURiB7CisKK3R5cGVk
ZWYgVmVjdG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKK3R5cGVkZWYgVmVjdG9yPFVDaGFyLCA1
MTI+IFVDaGFyQnVmZmVyOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1i
ZXIgPSAweEZGRkY7CisKKy8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwg
YXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKKy8vIEFTQ0lJLiBUaGUgZGVz
dGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJl
IGFsbG93ZWQKKy8vIGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRl
IHRvIG51bGwtdGVybWluYXRlIHRoZSByZXN1bHQuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRlc3QpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAg
IG1lbWNweShkZXN0LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYo
KTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGRlc3RbaV0gPSBz
dGF0aWNfY2FzdDxjaGFyPihzcmNbaV0pOworICAgIH0KK30KKwordm9pZCBVUkw6OmludmFsaWRh
dGUoKQoreworICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgIG1fcHJvdG9jb2xJc0luSFRUUEZh
bWlseSA9IGZhbHNlOworICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOworICAgIG1fc2No
ZW1lRW5kID0gMDsKKyAgICBtX3VzZXJTdGFydCA9IDA7CisgICAgbV91c2VyRW5kID0gMDsKKyAg
ICBtX3Bhc3N3b3JkRW5kID0gMDsKKyAgICBtX2hvc3RFbmQgPSAwOworICAgIG1fcG9ydExlbmd0
aCA9IDA7CisgICAgbV9wYXRoRW5kID0gMDsKKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7
CisgICAgbV9xdWVyeUVuZCA9IDA7Cit9CisKK1VSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29u
c3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKK3sK
KyAgICBVUkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CisgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK3N0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJM
KFVDaGFyIGMpCit7CisgICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hp
dGVzcGFjZSBhbmQgY29udHJvbAorICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0
aGF0IGMgaXMgYW4gKnVuc2lnbmVkKiBjaGFyIGhlcmUKKyAgICAvLyBzbyB0aGlzIGNvbXBhcmlz
b24gc2hvdWxkIG9ubHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgorICAgIHJldHVybiBjIDw9
ICcgJzsKK30KKworVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBVUkwgcmVz
dWx0ID0gKnRoaXM7CisgICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xh
dGVkQ29weSgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N0cmluZyBVUkw6Omxhc3RQYXRo
Q29tcG9uZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc1BhdGgoKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKKyAgICBpZiAo
bV9zdHJpbmdbZW5kXSA9PSAnLycpCisgICAgICAgIC0tZW5kOworCisgICAgc2l6ZV90IHN0YXJ0
ID0gbV9zdHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOworICAgIGlmIChzdGFydCA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgKytzdGFydDsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJp
bmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpwcm90b2Nv
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygw
LCBtX3NjaGVtZUVuZCk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKK3sKKyAg
ICB1bnNpZ25lZCBzdGFydCA9IGhvc3RTdGFydCgpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKK30KKworc3RkOjpv
cHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcG9ydExl
bmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGJvb2wgb2sgPSBmYWxz
ZTsKKyAgICB1bnNpZ25lZCBudW1iZXI7CisgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQorICAg
ICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4
KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOworICAgIGVsc2UKKyAg
ICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJz
MTYoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7CisgICAgaWYgKCFv
ayB8fCBudW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG51bWJlcjsKK30KKworU3RyaW5n
IFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdAoreworICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5w
b3J0KCkpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocG9ydC52YWx1ZSgpKSk7CisgICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygp
OworfQorCitTdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKK3sKKyAgICBT
dHJpbmcgcmVzdWx0ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExl
bmd0aCk7CisKKyAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgeworICAg
ICAgICBjb25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7CisgICAgICAgIHJlc3Vs
dC5yZW1vdmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93
Rm9yVHJhaWxpbmdBdFNpZ24pOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0
YXRpYyBTdHJpbmcgZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3
IGlucHV0KQoreworICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBp
ZiAoIWlucHV0TGVuZ3RoKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBWZWN0
b3I8TENoYXI+IHBlcmNlbnREZWNvZGVkOworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoaW5wdXRMZW5ndGgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
bnB1dExlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKKyAgICAgICAg
ICAgICYmIGlucHV0TGVuZ3RoID4gMgorICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0g
MgorICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKKyAgICAgICAg
ICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICBwZXJj
ZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwg
aW5wdXRbaSArIDJdKSk7CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKKyAgICB9
CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJj
ZW50RGVjb2RlZC5zaXplKCkpOworfQorCitTdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7
Cit9CisKK1N0cmluZyBVUkw6OnBhc3MoKSBjb25zdAoreworICAgIGlmIChtX3Bhc3N3b3JkRW5k
ID09IG1fdXNlckVuZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRl
Y29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Cit9
CisKK1N0cmluZyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJp
bmcuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Cit9CisK
K1N0cmluZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKK3sKKyAgICBpZiAobV9wYXNzd29yZEVu
ZCA9PSBtX3VzZXJFbmQpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBt
X3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVu
ZCAtIDEpOworfQorCitTdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAorewor
ICAgIGlmICghaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOworfQor
Citib29sIFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Cit9CisKK1N0cmlu
ZyBVUkw6OmJhc2VBc1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQo
bV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworfQorCisjaWYgIVVTRShDRikKKworU3RyaW5nIFVSTDo6
ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAoreworICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2Fs
RmlsZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGVjb2RlRXNj
YXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOworfQorCisjZW5k
aWYKKworI2lmZGVmIE5ERUJVRworCitzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJ
c0dvb2QoU3RyaW5nVmlldykKK3sKK30KKworI2Vsc2UKKworc3RhdGljIHZvaWQgYXNzZXJ0UHJv
dG9jb2xJc0dvb2QoU3RyaW5nVmlldyBwcm90b2NvbCkKK3sKKyAgICAvLyBGSVhNRTogV2UgcHJv
YmFibHkgZG9uJ3QgbmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgorICAgIC8vIFRoZSBpc0FT
Q0lJQWxwaGFDYXNlbGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hh
cmFjdGVycworICAgIC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRp
ZCBub3QgYW5kIHJlbGllZCBvbiB0aGVzZSBjaGVja3MuCisgICAgZm9yIChhdXRvIGNoYXJhY3Rl
ciA6IHByb3RvY29sLmNvZGVVbml0cygpKSB7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJh
Y3RlcikpOworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsKKyAgICAgICAgQVNTRVJU
KCFpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyKSk7CisgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJV
bmNoZWNrZWQoY2hhcmFjdGVyKSA9PSBjaGFyYWN0ZXIpOworICAgIH0KK30KKworI2VuZGlmCisK
K3N0YXRpYyBMb2NrIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKKwor
dXNpbmcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmlu
ZywgdWludDE2X3Q+Oworc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5n
KiYgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIHN0YXRpYyBE
ZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcDsKKyAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKK30KKworc3RhdGlj
IERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZygpCit7CisgICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcoKTsKKyAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xN
YXApCisgICAgICAgIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3Rpbmc7CisgICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwOworfQorCit2b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3Rp
bmcodWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7
CisgICAgZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJv
dG9jb2wsIHBvcnQpOworfQorCit2b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmcoKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsKKyAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkKKyAgICAgICAgbWFwLT5jbGVhcigpOworfQor
CitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1Zp
ZXcgcHJvdG9jb2wpCit7CisgICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgICAgIEFT
U0VSVChvdmVycmlkZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNp
bmNlIG92ZXJyaWRlTWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4K
KyAgICAgICAgYXV0byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3Ry
aW5nV2l0aG91dENvcHlpbmcoKSk7CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1h
cC0+ZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKyAg
ICByZXR1cm4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKK30K
KworYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmll
dyBwcm90b2NvbCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2Nv
bCkgPT0gcG9ydDsKK30KKworYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9j
b2wpIGNvbnN0Cit7CisgICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7CisK
KyAgICAvLyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRl
ZCBldmVuIGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCisgICAgLy8gVGhlIGZyZWUg
ZnVuY3Rpb24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAK
KyAgICBBU1NFUlQoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJv
dG9jb2wpLCAiamF2YXNjcmlwdCIpKTsKKworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBh
IG5ldyBzdHJpbmcgb2JqZWN0LgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVt
ZUVuZDsgKytpKSB7CisgICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdl
IHNob3VsZCBoYXZlIGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KK30K
KworYm9vbCBVUkw6OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKK3sKKyAg
ICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7CisKKyAgICBpZiAoIW1faXNWYWxpZCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90
b2NvbC5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG8gdGhlIGNv
bXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoIWlzQVND
SUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBV
Ukw6OnF1ZXJ5KCkgY29uc3QKK3sKKyAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmco
bV9wYXRoRW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAorfQorCitTdHJp
bmcgVVJMOjpwYXRoKCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5k
ICsgbV9wb3J0TGVuZ3RoOworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwg
bV9wYXRoRW5kIC0gcG9ydEVuZCk7Cit9CisKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBT
dHJpbmcmIHMpCit7CisgICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0
ZXIgdGhlIGZpcnN0ICc6Jy4KKyAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQo
JzonKTsKKyAgICBTdHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQ
b3NpdGlvbik7CisgICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9u
aWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbCk7CisgICAgaWYgKCFjYW5vbmljYWxpemVkKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBVUkxQ
YXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsK
KyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJl
c3VsdCgpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0
cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJl
dHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5s
ZW5ndGgoKSk7CisgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFj
dGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Cit9CisgICAgCisvLyBBcHBlbmRzIHRoZSBwdW55
Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGgg
dG8KKy8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVy
bWluYXRlZC4KKy8vIFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGlu
Zy4KK3N0YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVy
LCBTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRv
IGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KKyAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIg
dGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0
YWlubHkgT0suCisgICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4
OworICAgIAorICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8
fCBpc0FsbEFTQ0lJKHN0cmluZykpIHsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIFVDaGFyIGhvc3RuYW1lQnVm
ZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJP
X0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5J
VElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFt
ZVRvQVNDSUkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCks
CisgICAgICAgIHN0cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgp
LCBob3N0bmFtZUJ1ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWls
cywgJmVycm9yKTsKKyAgICAKKyAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2lu
Z0RldGFpbHMuZXJyb3JzKSB7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIs
IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit1bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRF
bmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKK30KKwordm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3Ry
aW5nJiBzKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGNvbG9uSW5kZXggPSBzLmZpbmQoJzonKTsKKyAgICBpZiAoY29sb25JbmRleCAhPSBub3RG
b3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1l
OworICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJT
dGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKKyAgICAKKyAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVm
dChob3N0U3RhcnQoKSkpOworICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQorICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhl
bmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7CisgICAgYnVp
bGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOworCisgICAgVVJMUGFy
c2VyIHBhcnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3Vs
dCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCit7CisgICAgaWYgKCFtX3BvcnRMZW5n
dGgpCisgICAgICAgIHJldHVybjsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3Ry
aW5nVmlldyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5z
dWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOworICAgICp0aGlzID0gcGFyc2Vy
LnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQorewor
ICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGNvbG9uTmVl
ZGVkID0gIW1fcG9ydExlbmd0aDsKKyAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVk
ZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKKworICAgIFVSTFBhcnNlciBwYXJzZXIo
bWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5l
ZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7CisgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7Cit9CisKK3ZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcm
IGhvc3RBbmRQb3J0KQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisK
KyAgICBTdHJpbmdWaWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKKyAgICBTdHJpbmdWaWV3IHBv
cnQ7CisgICAgCisgICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOworICAg
IGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHBvcnQgPSBob3N0TmFtZS5z
dWJzdHJpbmcoY29sb25JbmRleCArIDEpOworICAgICAgICBib29sIG9rOworICAgICAgICBpbnQg
cG9ydEludCA9IHBvcnQudG9JbnRTdHJpY3Qob2spOworICAgICAgICBpZiAoIW9rIHx8IHBvcnRJ
bnQgPCAwKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1l
LnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsKKyAgICB9CisKKyAgICBpZiAoaG9zdE5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5h
bWU7CisgICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0
TmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1f
dXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOworCisg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxl
ZnQoaG9zdFN0YXJ0KCkpKTsKKyAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKKyAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXco
ZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOworICAgIGlm
ICghcG9ydC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBvcnQpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3Ro
KSk7CisKKyAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK3N0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNo
YXJhY3RlcnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikp
Cit7CisgICAgYXV0byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1
dCkgeworICAgICAgICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7CisgICAgICAgIGF1dG8q
IGRhdGEgPSB1dGY4LmRhdGEoKTsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
ICAgICBhdXRvIGxlbmd0aCA9IHV0ZjgubGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aiA9IDA7IGogPCBsZW5ndGg7IGorKykgeworICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsK
KyAgICAgICAgICAgIGlmIChzaG91bGRFbmNvZGUoYykpIHsKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnJScpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmli
YmxlVG9BU0NJSUhleERpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChs
b3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGlucHV0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29k
ZShpbnB1dFtpXSkpKQorICAgICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7CisgICAgfQor
ICAgIHJldHVybiBpbnB1dDsKK30KKwordm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1
c2VyKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBG
SVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRv
IG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAorICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2lu
ZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KKworICAgIHVuc2lnbmVkIGVuZCA9IG1f
dXNlckVuZDsKKyAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyB1ID0g
cGVyY2VudEVuY29kZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNv
ZGVTZXQpOworICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fc2NoZW1lRW5kICsgMSkpCisgICAgICAgICAgICB1ID0gIi8vIiArIHU7CisgICAgICAgIC8v
IEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KKyAgICAgICAgaWYgKGVuZCA9
PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0g
J0AnKSkKKyAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7CisgICAgICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3
ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2Vy
RW5kID09IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRd
ID09ICdAJykKKyAgICAgICAgICAgIGVuZCArPSAxOworICAgICAgICAvLyBXZSBkb24ndCB3YW50
IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBn
b2luZyB0byBtYWtlIGEgY2hhbmdlLgorICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7
CisgICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhl
bmQpKSk7CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sK
KyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgZW5k
ID0gbV9wYXNzd29yZEVuZDsKKyAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgeworICAgICAg
ICBTdHJpbmcgcCA9ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQ
YXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCkgKyAiQCI7CisgICAgICAgIGlmIChtX3VzZXJF
bmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisgICAgICAgICAg
ICBwID0gIi8vIiArIHA7CisgICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdl
IGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KKyAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQg
JiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAg
VVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91
c2VyRW5kKSwgcCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVt
b3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAg
ICBpZiAobV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9z
dHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgLy8gV2Ug
ZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdl
IGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KKyAgICAgICAgaWYgKG1fdXNlckVuZCAh
PSBlbmQpIHsKKyAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhlbmQpKSk7CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdW
aWV3IGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBh
bHJlYWR5IGhhcHBlbnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPworICAgIC8vIEZJ
WE1FOiBJcyBpdCBjb3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBp
bmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnM/CisgICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3Ry
aW5nKFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMn
LCBpZGVudGlmaWVyKSB9LnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJ
ZGVudGlmaWVyKCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBBU1NFUlQoIW1f
cXVlcnlFbmQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2lzVmFsaWQgJiYg
bV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kKQorICAgICAgICBtX3N0cmluZyA9IG1fc3Ry
aW5nLmxlZnQobV9xdWVyeUVuZCk7Cit9CisKK3ZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdt
ZW50SWRlbnRpZmllcigpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQpOworICAgIG1fcXVlcnlF
bmQgPSBtX3BhdGhFbmQ7Cit9CisKK3ZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1
ZXJ5KQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBG
SVhNRTogJyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVz
Y2FwZWQuCisgICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1l
bnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKKyAgICAvLyBhY2Nlc3Mg
dG8gdGhlIGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCisgICAgLy8gaHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTYxMTc2CisgICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8n
KSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3Ry
aW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7CisgICAgICAgICp0aGlz
ID0gcGFyc2VyLnJlc3VsdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5
LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKKyAgICAgICAg
KnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgfQorCit9CisKK3ZvaWQgVVJMOjpzZXRQYXRo
KGNvbnN0IFN0cmluZyYgcykKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgU3RyaW5nIHBhdGggPSBzOworICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRo
WzBdICE9ICcvJykKKyAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7CisKKyAgICBhdXRvIHF1ZXN0
aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKKyAgICAgICAgcmV0
dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKKyAgICB9OworICAgIFVS
TFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9z
dEVuZCArIG1fcG9ydExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0
aW9uTWFya09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3Bh
dGhFbmQpKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK2Jvb2wgZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sK
KyAgICBpZiAoYS5tX3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHVuc2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQorICAgICAgICBpZiAoYS5zdHJp
bmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNv
bnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBh
dGhFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBh
LnBhdGhFbmQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7
CisgICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIHByb3Rv
Y29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAg
ICBpZiAoYS5tX3NjaGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNp
Z25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25l
ZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9
IGIubV9ob3N0RW5kIC0gYi5ob3N0U3RhcnQoKTsKKyAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9z
dExlbmd0aEIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoZSBzY2hl
bWUKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7Cisg
ICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQW5kIHRoZSBob3N0CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKKyAgICAgICAgaWYgKGEuc3RyaW5n
KClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
aG9zdHNBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICB1bnNpZ25l
ZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9
IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5o
b3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9z
dFN0YXJ0QjsKKyAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsg
KytpKSB7CisgICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmlu
ZygpW2hvc3RTdGFydEIgKyBpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3Qg
U3RyaW5nJiBkb21haW4pIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBpZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOworICAgIGlmICghaG9zdC5l
bmRzV2l0aChkb21haW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaG9z
dC5sZW5ndGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9t
YWluLmxlbmd0aCgpIC0gMV0gPT0gJy4nOworfQorCitTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2Fw
ZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIGlucHV0KQoreworICAgIHJldHVybiBwZXJjZW50RW5j
b2RlQ2hhcmFjdGVycyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwor
fQorCitib29sIFVSTDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAoreworICAgIGlmICghbV9pc1Zh
bGlkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1l
RW5kXSA9PSAnOicpOworICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcv
JzsKK30KKwordm9pZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVy
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVz
IG9mIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQorICAgIC8vIFRoYXQncyBmaW5l
IGZvciBhIHZhbGlkIFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlk
IFVSTHMuCisgICAgYnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgY29weUFT
Q0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3Ry
aW5nQ2xhc3M+Citib29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJs
LCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK3sKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRo
b3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgorICAgIGFzc2VydFByb3RvY29sSXNHb29k
KFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3Ry
bGVuKHByb3RvY29sKSkpOworICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBqID0gMDsgdXJsW2ldOyArK2kpIHsKKyAgICAgICAgLy8gU2tpcCBsZWFk
aW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICAgICAgaWYgKGlzTGVh
ZGluZyAmJiBzaG91bGRUcmltRnJvbVVSTCh1cmxbaV0pKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOworCisgICAgICAgIC8vIFNraXAgYW55IHRhYnMg
YW5kIG5ld2xpbmVzLgorICAgICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdc
cicgfHwgdXJsW2ldID09ICdcbicpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBp
ZiAoIXByb3RvY29sW2pdKQorICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7CisgICAg
ICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICArK2o7CisgICAgfQorICAgIAor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFs
KHVybCwgcHJvdG9jb2wpOworfQorCitpbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQoreworICAgIHJldHVybiBXVEY6
OnByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsKK30KKworI2lmbmRlZiBOREVC
VUcKKwordm9pZCBVUkw6OnByaW50KCkgY29uc3QKK3sKKyAgICBwcmludGYoIiVzXG4iLCBtX3N0
cmluZy51dGY4KCkuZGF0YSgpKTsKK30KKworI2VuZGlmCisKK1N0cmluZyBVUkw6OnN0cmlwcGVk
Rm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0Cit7CisgICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKKyAg
ICByZWZlcnJlci5zZXRVc2VyKFN0cmluZygpKTsKKyAgICByZWZlcnJlci5zZXRQYXNzKFN0cmlu
ZygpKTsKKyAgICByZWZlcnJlci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1
cm4gcmVmZXJyZXIuc3RyaW5nKCk7Cit9CisKK2Jvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0
Cit7CisgICAgLy8gSW5jbHVkaW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVhIHNpbmNl
IGRyYWcgYW5kIGRyb3AgdXNlcyB0aGlzIGNoZWNrCisgICAgLy8gYW5kIGluY2x1ZGluZyBmZWVk
IHdvdWxkIGFsbG93IGZlZWRzIHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxvZworICAg
IC8vIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBldmVuIHdp
dGhvdXQgYSBkcm9wLgorICAgIC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1lTG9hZGVy
OjpzaG91bGRUcmVhdFVSTEFzTG9jYWwoKSBmdW5jdGlvbi4KKyAgICByZXR1cm4gcHJvdG9jb2xJ
cygiZmlsZSIpOworfQorCitib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYg
dXJsKQoreworICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIp
OworfQorCitib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKQoreworICAg
IHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29s
IHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgYXV0byBs
ZW5ndGggPSB1cmwubGVuZ3RoKCk7CisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBt
YWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICByZXR1cm4gbGVuZ3RoID49IDUKKyAgICAg
ICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMF0sICdoJykKKyAgICAgICAgJiYg
aXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMV0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJ
SUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMl0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhh
Q2FzZWxlc3NFcXVhbCh1cmxbM10sICdwJykKKyAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwg
KGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzRdLCAncycpICYmIGxlbmd0aCA+PSA2ICYm
IHVybFs1XSA9PSAnOicpKTsKK30KKworY29uc3QgVVJMJiBibGFua1VSTCgpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFu
ayIpOworICAgIHJldHVybiBzdGF0aWNCbGFua1VSTDsKK30KKworYm9vbCBVUkw6OmlzQmxhbmtV
UkwoKSBjb25zdAoreworICAgIHJldHVybiBwcm90b2NvbElzKCJhYm91dCIpOworfQorCitib29s
IHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQoreworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2
X3Q+IHBvcnQgPSB1cmwucG9ydCgpOworCisgICAgLy8gU2luY2UgbW9zdCBVUkxzIGRvbid0IGhh
dmUgYSBwb3J0LCByZXR1cm4gZWFybHkgZm9yIHRoZSAibm8gcG9ydCIgY2FzZS4KKyAgICBpZiAo
IXBvcnQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gVGhpcyBibG9ja2VkIHBvcnQg
bGlzdCBtYXRjaGVzIHRoZSBwb3J0IGJsb2NraW5nIHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgor
ICAgIC8vIFNlZSBodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFu
bmluZy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCBibG9ja2VkUG9ydExpc3RbXSA9IHsKKyAgICAgICAgMSwgICAgLy8gdGNwbXV4CisgICAgICAg
IDcsICAgIC8vIGVjaG8KKyAgICAgICAgOSwgICAgLy8gZGlzY2FyZAorICAgICAgICAxMSwgICAv
LyBzeXN0YXQKKyAgICAgICAgMTMsICAgLy8gZGF5dGltZQorICAgICAgICAxNSwgICAvLyBuZXRz
dGF0CisgICAgICAgIDE3LCAgIC8vIHFvdGQKKyAgICAgICAgMTksICAgLy8gY2hhcmdlbgorICAg
ICAgICAyMCwgICAvLyBGVFAtZGF0YQorICAgICAgICAyMSwgICAvLyBGVFAtY29udHJvbAorICAg
ICAgICAyMiwgICAvLyBTU0gKKyAgICAgICAgMjMsICAgLy8gdGVsbmV0CisgICAgICAgIDI1LCAg
IC8vIFNNVFAKKyAgICAgICAgMzcsICAgLy8gdGltZQorICAgICAgICA0MiwgICAvLyBuYW1lCisg
ICAgICAgIDQzLCAgIC8vIG5pY25hbWUKKyAgICAgICAgNTMsICAgLy8gZG9tYWluCisgICAgICAg
IDc3LCAgIC8vIHByaXYtcmpzCisgICAgICAgIDc5LCAgIC8vIGZpbmdlcgorICAgICAgICA4Nywg
ICAvLyB0dHlsaW5rCisgICAgICAgIDk1LCAgIC8vIHN1cGR1cAorICAgICAgICAxMDEsICAvLyBo
b3N0cmlhbWUKKyAgICAgICAgMTAyLCAgLy8gaXNvLXRzYXAKKyAgICAgICAgMTAzLCAgLy8gZ3Bw
aXRucAorICAgICAgICAxMDQsICAvLyBhY3ItbmVtYQorICAgICAgICAxMDksICAvLyBQT1AyCisg
ICAgICAgIDExMCwgIC8vIFBPUDMKKyAgICAgICAgMTExLCAgLy8gc3VucnBjCisgICAgICAgIDEx
MywgIC8vIGF1dGgKKyAgICAgICAgMTE1LCAgLy8gU0ZUUAorICAgICAgICAxMTcsICAvLyB1dWNw
LXBhdGgKKyAgICAgICAgMTE5LCAgLy8gbm50cAorICAgICAgICAxMjMsICAvLyBOVFAKKyAgICAg
ICAgMTM1LCAgLy8gbG9jLXNydiAvIGVwbWFwCisgICAgICAgIDEzOSwgIC8vIG5ldGJpb3MKKyAg
ICAgICAgMTQzLCAgLy8gSU1BUDIKKyAgICAgICAgMTc5LCAgLy8gQkdQCisgICAgICAgIDM4OSwg
IC8vIExEQVAKKyAgICAgICAgNDY1LCAgLy8gU01UUCtTU0wKKyAgICAgICAgNTEyLCAgLy8gcHJp
bnQgLyBleGVjCisgICAgICAgIDUxMywgIC8vIGxvZ2luCisgICAgICAgIDUxNCwgIC8vIHNoZWxs
CisgICAgICAgIDUxNSwgIC8vIHByaW50ZXIKKyAgICAgICAgNTI2LCAgLy8gdGVtcG8KKyAgICAg
ICAgNTMwLCAgLy8gY291cmllcgorICAgICAgICA1MzEsICAvLyBDaGF0CisgICAgICAgIDUzMiwg
IC8vIG5ldG5ld3MKKyAgICAgICAgNTQwLCAgLy8gVVVDUAorICAgICAgICA1NDgsICAvLyBhZnBv
dmVydGNwIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNTU2LCAgLy8gcmVtb3RlZnMKKyAgICAg
ICAgNTYzLCAgLy8gTk5UUCtTU0wKKyAgICAgICAgNTg3LCAgLy8gRVNNVFAKKyAgICAgICAgNjAx
LCAgLy8gc3lzbG9nLWNvbm4KKyAgICAgICAgNjM2LCAgLy8gTERBUCtTU0wKKyAgICAgICAgOTkz
LCAgLy8gSU1BUCtTU0wKKyAgICAgICAgOTk1LCAgLy8gUE9QMytTU0wKKyAgICAgICAgMjA0OSwg
Ly8gTkZTCisgICAgICAgIDM2NTksIC8vIGFwcGxlLXNhc2wgLyBQYXNzd29yZFNlcnZlciBbQXBw
bGUgYWRkaXRpb25dCisgICAgICAgIDQwNDUsIC8vIGxvY2tkCisgICAgICAgIDQxOTAsIC8vIE1h
bmFnZVNpZXZlIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjAwMCwgLy8gWDExCisgICAgICAg
IDY2NjUsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2NjY2LCAv
LyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2NywgLy8gU3RhbmRh
cmQgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2OCwgLy8gQWx0ZXJuYXRlIElSQyBb
QXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFk
ZGl0aW9uXQorICAgICAgICA2Njc5LCAvLyBBbHRlcm5hdGUgSVJDIFNTTCBbQXBwbGUgYWRkaXRp
b25dCisgICAgICAgIDY2OTcsIC8vIElSQytTU0wgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICBp
bnZhbGlkUG9ydE51bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJl
cnMKKyAgICB9OworCisgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBv
cnQgbGlzdCwgYWxsb3cgaXQuCisgICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4o
YmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRMaXN0KSkpOworICAgIGlmICgh
c3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQo
YmxvY2tlZFBvcnRMaXN0KSwgcG9ydC52YWx1ZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAvLyBBbGxvdyBwb3J0cyAyMSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxhIGRv
ZXMuCisgICAgaWYgKChwb3J0LnZhbHVlKCkgPT0gMjEgfHwgcG9ydC52YWx1ZSgpID09IDIyKSAm
JiB1cmwucHJvdG9jb2xJcygiZnRwIikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8g
QWxsb3cgYW55IHBvcnQgbnVtYmVyIGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJl
ciBpcyBpZ25vcmVkLgorICAgIGlmICh1cmwucHJvdG9jb2xJcygiZmlsZSIpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIG1pbWVUeXBlRnJv
bURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgQVNTRVJUKHByb3RvY29sSXNJbnRl
cm5hbCh1cmwsICJkYXRhIikpOworCisgICAgLy8gRklYTUU6IFdoYXQncyB0aGUgcmlnaHQgYmVo
YXZpb3Igd2hlbiB0aGUgVVJMIGhhcyBhIGNvbW1hIGZpcnN0LCBidXQgYSBzZW1pY29sb24gbGF0
ZXI/CisgICAgLy8gQ3VycmVudGx5IHRoaXMgY29kZSB3aWxsIGJyZWFrIGF0IHRoZSBzZW1pY29s
b24gaW4gdGhhdCBjYXNlLiBOb3Qgc3VyZSB0aGF0J3MgY29ycmVjdC4KKyAgICBhdXRvIGluZGV4
ID0gdXJsLmZpbmQoJzsnLCA1KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAg
IGluZGV4ID0gdXJsLmZpbmQoJywnLCA1KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsK
KyAgICAgICAgLy8gRklYTUU6IFRoZXJlIHdhcyBhbiBvbGQgY29tbWVudCBoZXJlIHRoYXQgbWFk
ZSBpdCBzb3VuZCBsaWtlIHRoaXMgc2hvdWxkIGJlIHJldHVybmluZyB0ZXh0L3BsYWluLgorICAg
ICAgICAvLyBCdXQgd2UgaGF2ZSBiZWVuIHJldHVybmluZyBlbXB0eSBzdHJpbmcgaGVyZSBmb3Ig
c29tZSB0aW1lLCBzbyBub3QgY2hhbmdpbmcgaXRzIGJlaGF2aW9yIGF0IHRoaXMgdGltZS4KKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgfQorICAgIGlmIChpbmRleCA9PSA1KQor
ICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgQVNTRVJUKGluZGV4ID49IDUpOwor
ICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKTsKK30KKworU3RyaW5nIFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK3sKKyAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkgPD0g
bGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RyaW5nKCk7CisKKyAgICByZXR1cm4gc3RyaW5nKCku
bGVmdChsZW5ndGggLyAyIC0gMSkgKyAiLi4uIiArIHN0cmluZygpLnJpZ2h0KGxlbmd0aCAvIDIg
LSAyKTsKK30KKworVVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5n
JiByZWxhdGl2ZVBhcnQpCit7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgIndlYmtpdC1mYWtlLXVy
bDovLyIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgKyAnLycgKyByZWxhdGl2ZVBhcnQp
OworfQorCitVUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCit7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgImZpbGU6Ly8vIiArIGZpbGVQYXRo
KTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVVJM
JiB1cmwpCit7CisgICAgdHMgPDwgdXJsLnN0cmluZygpOworICAgIHJldHVybiB0czsKK30KKwor
I2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShTT1VQKQorc3RhdGljIGJvb2wgaXNJUHY0QWRk
cmVzcyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBhdXRvIGNvdW50ID0gMDsKKworICAgIGZv
ciAoY29uc3QgYXV0byBvY3RldCA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCcu
JykpIHsKKyAgICAgICAgaWYgKGNvdW50ID49IDQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgY29uc3QgYXV0byBsZW5ndGggPSBvY3RldC5sZW5ndGgoKTsKKyAgICAgICAg
aWYgKCFsZW5ndGggfHwgbGVuZ3RoID4gMykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBhdXRvIHZhbHVlID0gMDsKKyAgICAgICAgZm9yIChhdXRvIGkgPSAwdTsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBhdXRvIGRpZ2l0ID0gb2N0ZXRbaV07CisK
KyAgICAgICAgICAgIC8vIFByb2hpYml0IGxlYWRpbmcgemVyb2VzLgorICAgICAgICAgICAgaWYg
KGRpZ2l0ID4gJzknIHx8IGRpZ2l0IDwgKCFpICYmIGxlbmd0aCA+IDEgPyAnMScgOiAnMCcpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgdmFsdWUgPSAxMCAq
IHZhbHVlICsgKGRpZ2l0IC0gJzAnKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2YWx1ZSA+
IDI1NSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb3VudCsrOworICAg
IH0KKworICAgIHJldHVybiAoY291bnQgPT0gNCk7Cit9CisKK3N0YXRpYyBib29sIGlzSVB2NkFk
ZHJlc3MoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgZW51bSBTa2lwU3RhdGUgeyBOb25lLCBX
aWxsU2tpcCwgU2tpcHBpbmcsIFNraXBwZWQsIEZpbmFsIH07CisgICAgYXV0byBza2lwU3RhdGUg
PSBOb25lOworICAgIGF1dG8gY291bnQgPSAwOworCisgICAgZm9yIChjb25zdCBhdXRvIGhleHRl
dCA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCc6JykpIHsKKyAgICAgICAgaWYg
KGNvdW50ID49IDggfHwgc2tpcFN0YXRlID09IEZpbmFsKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gaGV4dGV0Lmxlbmd0aCgpOworICAg
ICAgICBpZiAoIWxlbmd0aCkgeworICAgICAgICAgICAgLy8gOjogbWF5IGJlIHVzZWQgYW55d2hl
cmUgdG8gc2tpcCAxIHRvIDggaGV4dGV0cywgYnV0IG9ubHkgb25jZS4KKyAgICAgICAgICAgIGlm
IChza2lwU3RhdGUgPT0gU2tpcHBlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgICAgIGlmIChza2lwU3RhdGUgPT0gTm9uZSkKKyAgICAgICAgICAgICAgICBza2lw
U3RhdGUgPSAhY291bnQgPyBXaWxsU2tpcCA6IFNraXBwaW5nOworICAgICAgICAgICAgZWxzZSBp
ZiAoc2tpcFN0YXRlID09IFdpbGxTa2lwKQorICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IFNr
aXBwaW5nOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IEZp
bmFsOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2tp
cFN0YXRlID09IFdpbGxTa2lwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGlmIChza2lwU3RhdGUgPT0gU2tpcHBpbmcpCisgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lw
cGVkOworCisgICAgICAgIGlmIChsZW5ndGggPiA0KSB7CisgICAgICAgICAgICAvLyBBbiBJUHY0
IGFkZHJlc3MgbWF5IGJlIHVzZWQgaW4gcGxhY2Ugb2YgdGhlIGZpbmFsIHR3byBoZXh0ZXRzLgor
ICAgICAgICAgICAgaWYgKChza2lwU3RhdGUgPT0gTm9uZSAmJiBjb3VudCAhPSA2KSB8fCAoc2tp
cFN0YXRlID09IFNraXBwZWQgJiYgY291bnQgPj0gNikgfHwgIWlzSVB2NEFkZHJlc3MoaGV4dGV0
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHNraXBTdGF0
ZSA9IEZpbmFsOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8gY29kZVVuaXQgOiBoZXh0ZXQuY29kZVVuaXRzKCkpIHsKKyAgICAgICAg
ICAgIC8vIElQdjYgYWxsb3dzIGxlYWRpbmcgemVyb2VzLgorICAgICAgICAgICAgaWYgKCFpc0FT
Q0lJSGV4RGlnaXQoY29kZVVuaXQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvdW50Kys7CisgICAgfQorCisgICAgcmV0dXJuIChjb3VudCA9
PSA4ICYmIHNraXBTdGF0ZSA9PSBOb25lKSB8fCBza2lwU3RhdGUgPT0gU2tpcHBlZCB8fCBza2lw
U3RhdGUgPT0gRmluYWw7Cit9CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmll
dyBob3N0KQoreworICAgIGlmIChob3N0LmZpbmQoJzonKSA9PSBub3RGb3VuZCkKKyAgICAgICAg
cmV0dXJuIGlzSVB2NEFkZHJlc3MoaG9zdCk7CisKKyAgICByZXR1cm4gaXNJUHY2QWRkcmVzcyho
b3N0KTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ3M2Jj
NzA1NmZhMzQ1YmVkZTBhOGMyNTgxYTgwM2RhNzViMDk5NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1VSTC5oCkBAIC0wLDAgKzEsMzkyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKKyNpZiBVU0UoQ0YpCit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVS
TFJlZjsKKyNlbmRpZgorCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1
ZVB0clNvdXAuaD4KKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pCitPQkpDX0NMQVNTIE5T
VVJMOworI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKKworY2xh
c3MgVVJMVGV4dEVuY29kaW5nIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90
PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IH5VUkxUZXh0RW5jb2RpbmcoKSB7IH07Cit9OworCitzdHJ1Y3QgVVJMSGFzaDsKKworY2xhc3Mg
V1RGX0VYUE9SVF9QUklWQVRFIFVSTCB7CitwdWJsaWM6CisgICAgLy8gR2VuZXJhdGVzIGEgVVJM
IHdoaWNoIGNvbnRhaW5zIGEgbnVsbCBzdHJpbmcuCisgICAgVVJMKCkgeyBpbnZhbGlkYXRlKCk7
IH0KKworICAgIGV4cGxpY2l0IFVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDog
bV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQorICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKS5pc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpOyB9CisKKyAgICAvLyBSZXNvbHZlcyB0aGUgcmVsYXRpdmUgVVJMIHdpdGgg
dGhlIGdpdmVuIGJhc2UgVVJMLiBJZiBwcm92aWRlZCwgdGhlCisgICAgLy8gVVJMVGV4dEVuY29k
aW5nIGlzIHVzZWQgdG8gZW5jb2RlIG5vbi1BU0NJSSBjaGFyYWNlcnMuIFRoZSBiYXNlIFVSTCBj
YW4gYmUKKyAgICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2ZSBV
Ukwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcworICAgIC8vIGFic29sdXRlLgorICAgIC8vIEZJWE1F
OiBJZiB0aGUgYmFzZSBVUkwgaXMgaW52YWxpZCwgdGhpcyBhbHdheXMgY3JlYXRlcyBhbiBpbnZh
bGlkCisgICAgLy8gVVJMLiBJbnN0ZWFkIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVyIHRvIHRy
ZWF0IGFsbCBpbnZhbGlkIGJhc2UgVVJMcworICAgIC8vIHRoZSBzYW1lIHdheSB3ZSB0cmVhdGUg
bnVsbCBhbmQgZW1wdHkgYmFzZSBVUkxzLgorICAgIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0
IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKKwor
ICAgIHN0YXRpYyBVUkwgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJik7Cisg
ICAgc3RhdGljIFVSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYpOwor
CisgICAgU3RyaW5nIHN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OworCisgICAgLy8g
RklYTUU6IFRoZSBhYm92ZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhcm1vbml6ZWQgc28gdGhhdCBw
YXNzaW5nIGEKKyAgICAvLyBiYXNlIG9mIG51bGwgb3IgdGhlIGVtcHR5IHN0cmluZyBnaXZlcyB0
aGUgc2FtZSByZXN1bHQgYXMgdGhlCisgICAgLy8gc3RhbmRhcmQgU3RyaW5nIGNvbnN0cnVjdG9y
LgorCisgICAgLy8gTWFrZXMgYSBkZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5b3UgbmVlZCB0
byB1c2UgYSBVUkwgb24gYW5vdGhlcgorICAgIC8vIHRocmVhZC4gU2luY2UgdGhlIHVuZGVybHlp
bmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFibGUsIHRoZXJlJ3MKKyAgICAvLyBubyBv
dGhlciByZWFzb24gdG8gZXZlciBwcmVmZXIgaXNvbGF0ZWRDb3B5KCkgb3ZlciBwbGFpbiBvbGQg
YXNzaWdubWVudC4KKyAgICBVUkwgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKKyAgICBib29sIGlz
TnVsbCgpIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0OworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHlvdSBjYW4gc2V0IHRoZSBob3N0
IGFuZCBwb3J0IGZvciB0aGUgVVJMLgorICAgIC8vIE5vbi1oaWVyYXJjaGljYWwgVVJMcyBkb24n
dCBoYXZlIGEgaG9zdCBhbmQgcG9ydC4KKyAgICBib29sIGNhblNldEhvc3RPclBvcnQoKSBjb25z
dCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9CisKKyAgICBib29sIGNhblNldFBhdGhuYW1l
KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQorICAgIGJvb2wgaXNIaWVyYXJj
aGljYWwoKSBjb25zdDsKKworICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmc7IH0KKworICAgIFN0cmluZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgodW5zaWduZWQgbGVuZ3RoID0gMTAyNCkgY29uc3Q7CisKKyAgICBTdHJpbmdWaWV3IHByb3Rv
Y29sKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBob3N0KCkgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0OworICAgIFN0cmluZyBob3N0QW5kUG9ydCgpIGNv
bnN0OworICAgIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7CisgICAgU3RyaW5n
IHVzZXIoKSBjb25zdDsKKyAgICBTdHJpbmcgcGFzcygpIGNvbnN0OworICAgIFN0cmluZyBwYXRo
KCkgY29uc3Q7CisgICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7CisgICAgU3Ry
aW5nIHF1ZXJ5KCkgY29uc3Q7CisgICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0
OworICAgIGJvb2wgaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBib29sIGhh
c1VzZXJuYW1lKCkgY29uc3Q7CisgICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OworICAgIGJv
b2wgaGFzUXVlcnkoKSBjb25zdDsKKyAgICBib29sIGhhc0ZyYWdtZW50KCkgY29uc3Q7CisgICAg
Ym9vbCBoYXNQYXRoKCkgY29uc3Q7CisKKyAgICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzKCks
IHRoZXNlIGZ1bmN0aW9ucyBkb24ndCBkZWNvZGUgZXNjYXBlIHNlcXVlbmNlcy4KKyAgICAvLyBU
aGlzIGlzIG5lY2Vzc2FyeSBmb3IgYWNjdXJhdGUgcm91bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5j
b2RpbmcgZG9lc24ndCBlbmNvZGUgJyUnIGNoYXJhY3RlcnMuCisgICAgU3RyaW5nIGVuY29kZWRV
c2VyKCkgY29uc3Q7CisgICAgU3RyaW5nIGVuY29kZWRQYXNzKCkgY29uc3Q7CisKKyAgICBTdHJp
bmcgYmFzZUFzU3RyaW5nKCkgY29uc3Q7CisKKyAgICBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBj
b25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBVUkwncyBwcm90b2Nv
bCBpcyB0aGUgc2FtZSBhcyB0aGUgbnVsbC0KKyAgICAvLyB0ZXJtaW5hdGVkIEFTQ0lJIGFyZ3Vt
ZW50LiBUaGUgYXJndW1lbnQgbXVzdCBiZSBsb3dlci1jYXNlLgorICAgIGJvb2wgcHJvdG9jb2xJ
cyhjb25zdCBjaGFyKikgY29uc3Q7CisgICAgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNv
bnN0OworICAgIGJvb2wgcHJvdG9jb2xJc0Jsb2IoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElz
KCJibG9iIik7IH0KKyAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29uc3QgeyByZXR1cm4gcHJv
dG9jb2xJcygiZGF0YSIpOyB9CisgICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29u
c3Q7CisgICAgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OworICAgIGJvb2wgaXNCbGFua1VSTCgp
IGNvbnN0OworICAgIGJvb2wgY2Fubm90QmVBQmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fu
bm90QmVBQmFzZVVSTDsgfQorCisgICAgYm9vbCBpc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OworCisgICAgYm9vbCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIHJlbW92ZVBvcnQoKTsKKyAg
ICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOworCisgICAgLy8gSW5wdXQgaXMgbGlrZSAi
Zm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCisgICAgdm9pZCBzZXRIb3N0QW5kUG9ydChjb25z
dCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0VXNlcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHNldFBhc3MoY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBw
YXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aAorICAgIC8vIHdp
bGwgYmUgIi8iLgorICAgIHZvaWQgc2V0UGF0aChjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFRo
ZSBxdWVyeSBtYXkgYmVnaW4gd2l0aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3
aWxsIGJlIGFkZGVkCisgICAgLy8gZm9yIHlvdS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVt
cHR5IHN0cmluZyB3aWxsIGxlYXZlIGEgIj8iIGluIHRoZQorICAgIC8vIFVSTCAod2l0aCBub3Ro
aW5nIGFmdGVyIGl0KS4gVG8gY2xlYXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcuCisg
ICAgdm9pZCBzZXRRdWVyeShjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0RnJhZ21lbnRJ
ZGVudGlmaWVyKFN0cmluZ1ZpZXcpOworICAgIHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVy
KCk7CisKKyAgICB2b2lkIHJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7CisKKyAg
ICBzdGF0aWMgYm9vbCBob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyk7CisKKyAgICB1bnNpZ25l
ZCBwYXRoU3RhcnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7CisgICAg
dW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CisKKyAgICBvcGVyYXRvciBjb25z
dCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KKworI2lmIFVTRShDRikKKyAg
ICBVUkwoQ0ZVUkxSZWYpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBj
b25zdDsKKyNlbmRpZgorCisjaWYgVVNFKFNPVVApCisgICAgVVJMKFNvdXBVUkkqKTsKKyAgICBH
VW5pcXVlUHRyPFNvdXBVUkk+IGNyZWF0ZVNvdXBVUkkoKSBjb25zdDsKKyNlbmRpZgorCisjaWYg
VVNFKEZPVU5EQVRJT04pCisgICAgVVJMKE5TVVJMKik7CisgICAgb3BlcmF0b3IgTlNVUkwqKCkg
Y29uc3Q7CisjZW5kaWYKKyNpZmRlZiBfX09CSkNfXworICAgIG9wZXJhdG9yIE5TU3RyaW5nKigp
IGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CisjZW5kaWYKKworI2lmbmRlZiBOREVCVUcKKyAg
ICB2b2lkIHByaW50KCkgY29uc3Q7CisjZW5kaWYKKworICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGUgPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgVVJMJik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXIm
KTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgVVJMUGFyc2VyOworICAgIHZvaWQgaW52
YWxpZGF0ZSgpOworICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29u
c3QgY2hhciopOworICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZm
ZXIpIGNvbnN0OworICAgIHVuc2lnbmVkIGhvc3RTdGFydCgpIGNvbnN0OworCisgICAgZnJpZW5k
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsK
KyAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKKworICAgIFN0cmluZyBtX3N0cmluZzsKKworICAgIHVuc2lnbmVk
IG1faXNWYWxpZCA6IDE7CisgICAgdW5zaWduZWQgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDog
MTsKKyAgICB1bnNpZ25lZCBtX2Nhbm5vdEJlQUJhc2VVUkwgOiAxOworCisgICAgLy8gVGhpcyBp
cyBvdXQgb2Ygb3JkZXIgdG8gYWxpZ24gdGhlIGJpdHMgYmV0dGVyLiBUaGUgcG9ydCBpcyBhZnRl
ciB0aGUgaG9zdC4KKyAgICB1bnNpZ25lZCBtX3BvcnRMZW5ndGggOiAzOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbWF4UG9ydExlbmd0aCA9ICgxIDw8IDMpIC0gMTsKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4U2NoZW1lTGVuZ3RoID0gKDEgPDwgMjYpIC0gMTsK
KyAgICB1bnNpZ25lZCBtX3NjaGVtZUVuZCA6IDI2OworICAgIHVuc2lnbmVkIG1fdXNlclN0YXJ0
OworICAgIHVuc2lnbmVkIG1fdXNlckVuZDsKKyAgICB1bnNpZ25lZCBtX3Bhc3N3b3JkRW5kOwor
ICAgIHVuc2lnbmVkIG1faG9zdEVuZDsKKyAgICB1bnNpZ25lZCBtX3BhdGhBZnRlckxhc3RTbGFz
aDsKKyAgICB1bnNpZ25lZCBtX3BhdGhFbmQ7CisgICAgdW5zaWduZWQgbV9xdWVyeUVuZDsKK307
CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6
ZW9mKHVuc2lnbmVkKSwgIlVSTCBzaG91bGQgc3RheSBzbWFsbCIpOworCit0ZW1wbGF0ZSA8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4K
K2Jvb2wgVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCit7CisgICAgYXV0
byBvcHRpb25hbFVSTCA9IFVSTDo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghb3B0aW9uYWxV
UkwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVS
TCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgU3Ry
aW5nIHN0cmluZzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmluZykpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgc3RyaW5nKTsKK30KKwor
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdu
b3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYmxhbmtV
UkwoKTsKKworLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCisv
LyBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJM
LgorLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50IGZyb20gdGhlIFVSTCBmdW5jdGlvbnMgaW4g
dGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJz
YWJsZSBVUkwuCisvLyBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1c2UgdmFsaWQg
amF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxpZCBieSBV
UkwuCisKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3Rv
Y29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIHByb3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOworCitX
VEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29s
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYpOyAvLyBC
bGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQgbmV2ZXIgYmUgdXNlZCBmb3IgV2ViIHJlc291cmNl
cy4KKworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3Rv
Y29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcoKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZFByb3RvY29sKGNvbnN0
IFN0cmluZyYpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFV
UkwoY29uc3QgU3RyaW5nJiB1cmwpOworCisvLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNl
cHQgdG8gZXhwb3NlLCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNj
YXBpbmcgcGVyIHRoZSBVUkwgU3RhbmRhcmQuCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVu
Y29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7CisKKy8vIElubGluZXMu
CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7
CisgICAgcmV0dXJuIGEuc3RyaW5nKCkgPT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4g
YS5zdHJpbmcoKSA9PSBiOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIHJldHVybiBhID09IGIuc3RyaW5nKCk7Cit9CisK
K2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7Cisg
ICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5z
dHJpbmcoKSAhPSBiOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYg
YSwgY29uc3QgVVJMJiBiKQoreworICAgIHJldHVybiBhICE9IGIuc3RyaW5nKCk7Cit9CisKKy8v
IElubGluZSB2ZXJzaW9ucyBvZiBzb21lIG5vbi1Hb29nbGVVUkwgZnVuY3Rpb25zIHNvIHdlIGNh
biBnZXQgaW5saW5pbmcKKy8vIHdpdGhvdXQgaGF2aW5nIHRvIGhhdmUgYSBsb3Qgb2YgdWdseSBp
ZmRlZnMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uCisKK2lubGluZSBib29sIFVSTDo6aXNOdWxs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7Cit9CisKK2lubGluZSBi
b29sIFVSTDo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHko
KTsKK30KKworaW5saW5lIGJvb2wgVVJMOjppc1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pc1ZhbGlkOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc1BhdGgoKSBjb25zdAoreworICAg
IHJldHVybiBtX3BhdGhFbmQgIT0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworfQorCitpbmxp
bmUgYm9vbCBVUkw6Omhhc1VzZXJuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VyRW5k
ID4gbV91c2VyU3RhcnQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6aGFzUGFzc3dvcmQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3Bhc3N3b3JkRW5kID4gKG1fdXNlckVuZCArIDEpOworfQorCitp
bmxpbmUgYm9vbCBVUkw6Omhhc1F1ZXJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9xdWVyeUVu
ZCA+IG1fcGF0aEVuZDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpoYXNGcmFnbWVudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlF
bmQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsKK30KKworaW5saW5lIHVu
c2lnbmVkIFVSTDo6cGF0aFN0YXJ0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ob3N0RW5kICsg
bV9wb3J0TGVuZ3RoOworfQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoRW5kKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wYXRoRW5kOworfQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRo
QWZ0ZXJMYXN0U2xhc2goKSBjb25zdAoreworICAgIHJldHVybiBtX3BhdGhBZnRlckxhc3RTbGFz
aDsKK30KKworV1RGX0VYUE9SVF9QUklWQVRFIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBjb25zdCBVUkwmKTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8VVJMPjsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkxIYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAyZmEzZGNjZjY2MTAwZmM4NTA4NjZl
YzM1NDdhM2E4NmRmOWJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhh
c2guaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgVVJMSGFzaF9oCisjZGVmaW5lIFVSTEhhc2hfaAorCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBV
UkxIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkKKyAgICB7
CisgICAgICAgIHJldHVybiBrZXkuc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCk7CisgICAgfQorCisg
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCisgICAgewor
ICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7
CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSBmYWxzZTsKK307CisKKy8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3Ig
U3RyaW5nCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxVUkw+IHsKKyAgICB1c2luZyBI
YXNoID0gVVJMSGFzaDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPiA6
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxVUkw+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
KyNlbmRpZiAvLyBVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MDQyZjEw
MzI1ZjY3ZWMwMmNlOTc1NmY0OTFjMzcwMzM2OWViY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBAIC0wLDAgKzEsMjkyNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KKwor
I2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHVuaWNvZGUvdWlk
bmEuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
I2RlZmluZSBVUkxfUEFSU0VSX0RFQlVHR0lORyAwCisKKyNpZiBVUkxfUEFSU0VSX0RFQlVHR0lO
RworI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pIFdURkxvZ0Fsd2F5cyhfX1ZBX0FSR1NfXykK
KyNlbHNlCisjZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4uLikKKyNlbmRpZgorICAgIAordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2NsYXNzIENvZGVQb2ludEl0ZXJhdG9yIHsKK3B1
YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yKCkgeyB9CisgICAgQUxX
QVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBiZWdpbiwg
Y29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQorICAgICAgICA6IG1fYmVnaW4oYmVnaW4pCisgICAg
ICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSBD
b2RlUG9pbnRJdGVyYXRvcihjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgYmVnaW4sIGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yJiBlbmQpCisgICAgICAgIDogQ29kZVBvaW50SXRlcmF0b3IoYmVnaW4u
bV9iZWdpbiwgZW5kLm1fYmVnaW4pCisgICAgeworICAgICAgICBBU1NFUlQoZW5kLm1fYmVnaW4g
Pj0gYmVnaW4ubV9iZWdpbik7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgVUNoYXIz
MiBvcGVyYXRvciooKSBjb25zdDsKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCk7CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luCisgICAgICAgICAgICAmJiBtX2VuZCA9PSBvdGhlci5t
X2VuZDsKKyAgICB9CisgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3ImIG9wZXJhdG9yPShj
b25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpCisgICAgeworICAgICAgICBtX2JlZ2luID0g
b3RoZXIubV9iZWdpbjsKKyAgICAgICAgbV9lbmQgPSBvdGhlci5tX2VuZDsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBhdEVuZCgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA8PSBtX2VuZCk7CisgICAgICAgIHJldHVy
biBtX2JlZ2luID49IG1fZW5kOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHNpemVf
dCBjb2RlVW5pdHNTaW5jZShjb25zdCBDaGFyYWN0ZXJUeXBlKiByZWZlcmVuY2UpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA+PSByZWZlcmVuY2UpOworICAgICAgICByZXR1
cm4gbV9iZWdpbiAtIHJlZmVyZW5jZTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHNpemVf
dCBjb2RlVW5pdHNTaW5jZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gY29kZVVuaXRzU2luY2Uob3RoZXIubV9iZWdpbik7CisgICAg
fQorICAgIAorcHJpdmF0ZToKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2JlZ2luIHsgbnVs
bHB0ciB9OworICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIG1fZW5kIHsgbnVsbHB0ciB9OworfTsK
KwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBVQ2hhcjMyIENvZGVQb2ludEl0ZXJhdG9yPExD
aGFyPjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWF0RW5kKCkpOworICAgIHJl
dHVybiAqbV9iZWdpbjsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBhdXRvIENvZGVQ
b2ludEl0ZXJhdG9yPExDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgor
eworICAgIG1fYmVnaW4rKzsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRlPD4KK0FM
V0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj46Om9wZXJhdG9yKigp
IGNvbnN0Cit7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBVQ2hhcjMyIGM7CisgICAgVTE2
X0dFVChtX2JlZ2luLCAwLCAwLCBtX2VuZCAtIG1fYmVnaW4sIGMpOworICAgIHJldHVybiBjOwor
fQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIGF1dG8gQ29kZVBvaW50SXRlcmF0b3I8VUNo
YXI+OjpvcGVyYXRvcisrKCkgLT4gQ29kZVBvaW50SXRlcmF0b3ImCit7CisgICAgdW5zaWduZWQg
aSA9IDA7CisgICAgc2l6ZV90IGxlbmd0aCA9IG1fZW5kIC0gbV9iZWdpbjsKKyAgICBVMTZfRldE
XzEobV9iZWdpbiwgaSwgbGVuZ3RoKTsKKyAgICBtX2JlZ2luICs9IGk7CisgICAgcmV0dXJuICp0
aGlzOworfQorICAgIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBhcHBlbmRDb2RlUG9pbnQo
VmVjdG9yPFVDaGFyPiYgZGVzdGluYXRpb24sIFVDaGFyMzIgY29kZVBvaW50KQoreworICAgIGlm
IChVX0lTX0JNUChjb2RlUG9pbnQpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLmFwcGVuZChzdGF0
aWNfY2FzdDxVQ2hhcj4oY29kZVBvaW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
ZGVzdGluYXRpb24ucmVzZXJ2ZUNhcGFjaXR5KGRlc3RpbmF0aW9uLnNpemUoKSArIDIpOworICAg
IGRlc3RpbmF0aW9uLnVuY2hlY2tlZEFwcGVuZChVMTZfTEVBRChjb2RlUG9pbnQpKTsKKyAgICBk
ZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X1RSQUlMKGNvZGVQb2ludCkpOworfQorCitl
bnVtIFVSTENoYXJhY3RlckNsYXNzIHsKKyAgICBVc2VySW5mbyA9IDB4MSwKKyAgICBEZWZhdWx0
ID0gMHgyLAorICAgIEZvcmJpZGRlbkhvc3QgPSAweDQsCisgICAgUXVlcnlQZXJjZW50ID0gMHg4
LAorICAgIFNsYXNoUXVlc3Rpb25Pckhhc2ggPSAweDEwLAorICAgIFZhbGlkU2NoZW1lID0gMHgy
MCwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGNoYXJhY3RlckNsYXNzVGFibGVbMjU2XSA9
IHsKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0
LCAvLyAweDAKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MQor
ICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgyCisgICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDMKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCwgLy8gMHg1CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NworICAg
IFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg4CisgICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHg5CisgICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHhBCisg
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEIKKyAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4QworICAgIFVzZXJJbmZvIHwgRGVmYXVs
dCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4RAorICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhFCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweEYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4MTAKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
MTEKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTIKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTMKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQsIC8vIDB4MTUKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQsIC8vIDB4MTYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MTcKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTgKKyAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTkKKyAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUEKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUIKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQsIC8vIDB4MUMKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQs
IC8vIDB4MUQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUUK
KyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUYKKyAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnICcKKyAg
ICAwLCAvLyAnIScKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vICci
JworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IFNsYXNoUXVlc3Rpb25P
ckhhc2ggfCBGb3JiaWRkZW5Ib3N0LCAvLyAnIycKKyAgICAwLCAvLyAnJCcKKyAgICBGb3JiaWRk
ZW5Ib3N0LCAvLyAnJScKKyAgICAwLCAvLyAnJicKKyAgICAwLCAvLyAnXCcnCisgICAgMCwgLy8g
JygnCisgICAgMCwgLy8gJyknCisgICAgMCwgLy8gJyonCisgICAgVmFsaWRTY2hlbWUsIC8vICcr
JworICAgIDAsIC8vICcsJworICAgIFZhbGlkU2NoZW1lLCAvLyAnLScKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJy4nCisgICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVu
SG9zdCwgLy8gJy8nCisgICAgVmFsaWRTY2hlbWUsIC8vICcwJworICAgIFZhbGlkU2NoZW1lLCAv
LyAnMScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzInCisgICAgVmFsaWRTY2hlbWUsIC8vICczJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnNCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzUnCisgICAgVmFs
aWRTY2hlbWUsIC8vICc2JworICAgIFZhbGlkU2NoZW1lLCAvLyAnNycKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJzgnCisgICAgVmFsaWRTY2hlbWUsIC8vICc5JworICAgIFVzZXJJbmZvIHwgRm9yYmlk
ZGVuSG9zdCwgLy8gJzonCisgICAgVXNlckluZm8sIC8vICc7JworICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vICc8JworICAgIFVzZXJJbmZv
LCAvLyAnPScKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAnPicKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBTbGFzaFF1ZXN0aW9uT3JI
YXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJz8nCisgICAgVXNlckluZm8gfCBGb3JiaWRkZW5Ib3N0
LCAvLyAnQCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0EnCisgICAgVmFsaWRTY2hlbWUsIC8vICdC
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnQycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0QnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdFJworICAgIFZhbGlkU2NoZW1lLCAvLyAnRicKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ0cnCisgICAgVmFsaWRTY2hlbWUsIC8vICdIJworICAgIFZhbGlkU2NoZW1lLCAv
LyAnSScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0onCisgICAgVmFsaWRTY2hlbWUsIC8vICdLJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnTCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ00nCisgICAgVmFs
aWRTY2hlbWUsIC8vICdOJworICAgIFZhbGlkU2NoZW1lLCAvLyAnTycKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJ1AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdRJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
UicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdUJworICAg
IFZhbGlkU2NoZW1lLCAvLyAnVScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1YnCisgICAgVmFsaWRT
Y2hlbWUsIC8vICdXJworICAgIFZhbGlkU2NoZW1lLCAvLyAnWCcKKyAgICBWYWxpZFNjaGVtZSwg
Ly8gJ1knCisgICAgVmFsaWRTY2hlbWUsIC8vICdaJworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVu
SG9zdCwgLy8gJ1snCisgICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlk
ZGVuSG9zdCwgLy8gJ1xcJworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ10nCisg
ICAgVXNlckluZm8sIC8vICdeJworICAgIDAsIC8vICdfJworICAgIFVzZXJJbmZvIHwgRGVmYXVs
dCwgLy8gJ2AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdhJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
YicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdkJworICAg
IFZhbGlkU2NoZW1lLCAvLyAnZScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2YnCisgICAgVmFsaWRT
Y2hlbWUsIC8vICdnJworICAgIFZhbGlkU2NoZW1lLCAvLyAnaCcKKyAgICBWYWxpZFNjaGVtZSwg
Ly8gJ2knCisgICAgVmFsaWRTY2hlbWUsIC8vICdqJworICAgIFZhbGlkU2NoZW1lLCAvLyAnaycK
KyAgICBWYWxpZFNjaGVtZSwgLy8gJ2wnCisgICAgVmFsaWRTY2hlbWUsIC8vICdtJworICAgIFZh
bGlkU2NoZW1lLCAvLyAnbicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ28nCisgICAgVmFsaWRTY2hl
bWUsIC8vICdwJworICAgIFZhbGlkU2NoZW1lLCAvLyAncScKKyAgICBWYWxpZFNjaGVtZSwgLy8g
J3InCisgICAgVmFsaWRTY2hlbWUsIC8vICdzJworICAgIFZhbGlkU2NoZW1lLCAvLyAndCcKKyAg
ICBWYWxpZFNjaGVtZSwgLy8gJ3UnCisgICAgVmFsaWRTY2hlbWUsIC8vICd2JworICAgIFZhbGlk
U2NoZW1lLCAvLyAndycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3gnCisgICAgVmFsaWRTY2hlbWUs
IC8vICd5JworICAgIFZhbGlkU2NoZW1lLCAvLyAneicKKyAgICBVc2VySW5mbyB8IERlZmF1bHQs
IC8vICd7JworICAgIFVzZXJJbmZvLCAvLyAnfCcKKyAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8v
ICd9JworICAgIDAsIC8vICd+JworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg3RgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg4MAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg4MgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MworICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg4NAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg4NgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NworICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg4OAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4
QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4Qwor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg4RgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg5MQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg5MworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg5NQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg5NworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5OAorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg5OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg5QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5
RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5Rgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhBMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMworICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhBNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhBNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNworICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhBOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBOQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhBQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBQgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhBQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhBRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhC
MAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNAorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhCNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNgorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhCNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCOAorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhCOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhCQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQworICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhCRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCRQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhCRgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhDMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhD
MworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNQor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNworICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhDOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDOQorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhDQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhDQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhDRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhEMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhEMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMworICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhENAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhE
NgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOAor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhEQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQworICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhERAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhERgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhFMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhFMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNAorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhFNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhFNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhF
OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRAorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhFRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRgorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhGMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhGMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMworICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhGNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhGNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNworICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhGOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhGQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhG
QworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRQor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRgorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0MwQ29udHJvbChDaGFyYWN0ZXJU
eXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MUY7IH0KK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRy
b2xPclNwYWNlKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0g
MHgyMDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBz
dGF0aWMgYm9vbCBpc1RhYk9yTmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gY2hhcmFjdGVyIDw9IDB4RCAmJiBjaGFyYWN0ZXIgPj0gMHg5ICYmIGNoYXJhY3RlciAhPSAw
eEIgJiYgY2hhcmFjdGVyICE9IDB4QzsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luU2ltcGxlRW5jb2RlU2V0KENoYXJhY3Rl
clR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGlzQzBDb250cm9s
KGNoYXJhY3Rlcik7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaXNJbkRlZmF1bHRFbmNvZGVTZXQoQ2hhcmFjdGVyVHlwZSBjaGFy
YWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xhc3NUYWJsZVtj
aGFyYWN0ZXJdICYgRGVmYXVsdDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
QUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoQ2hhcmFjdGVy
VHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xh
c3NUYWJsZVtjaGFyYWN0ZXJdICYgVXNlckluZm87IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNQZXJjZW50T3JOb25BU0NJSShD
aGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gIWlzQVNDSUkoY2hhcmFjdGVyKSB8fCBj
aGFyYWN0ZXIgPT0gJyUnOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBib29sIGlzU2xhc2hRdWVzdGlvbk9ySGFzaChDaGFyYWN0ZXJUeXBl
IGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICdcXCcgJiYgY2hhcmFjdGVyQ2xhc3NU
YWJsZVtjaGFyYWN0ZXJdICYgU2xhc2hRdWVzdGlvbk9ySGFzaDsgfQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1ZhbGlkU2NoZW1l
Q2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0g
J3onICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFZhbGlkU2NoZW1lOyB9Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29s
IGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gY2hhcmFjdGVyIDw9ICddJyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBG
b3JiaWRkZW5Ib3N0OyB9CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIHNob3VsZFBlcmNlbnRF
bmNvZGVRdWVyeUJ5dGUodWludDhfdCBieXRlLCBjb25zdCBib29sJiB1cmxJc1NwZWNpYWwpCit7
CisgICAgaWYgKGNoYXJhY3RlckNsYXNzVGFibGVbYnl0ZV0gJiBRdWVyeVBlcmNlbnQpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmIChieXRlID09ICdcJycgJiYgdXJsSXNTcGVjaWFsKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVVJMUGFy
c2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gV1RGOjpp
c0luVXNlckluZm9FbmNvZGVTZXQoYyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGUsIFVSTFBhcnNlcjo6UmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZpb2xh
dGlvbj4KK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFkdmFuY2UoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikKK3sKKyAg
ICArK2l0ZXJhdG9yOworICAgIHdoaWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQoKSAmJiBp
c1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICBpZiAocmVwb3J0U3ludGF4Vmlv
bGF0aW9uID09IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6WWVzKQorICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAr
K2l0ZXJhdG9yOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K2Jvb2wgVVJMUGFyc2VyOjp0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9y
dFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVw
b3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgIHJldHVybiBpdGVyYXRvci5h
dEVuZCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lO
TElORSBib29sIFVSTFBhcnNlcjo6aXNXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkg
fHwgIWlzQVNDSUlBbHBoYSgqaXRlcmF0b3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
YWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRv
cik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoKml0ZXJhdG9yID09ICc6JykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKFVO
TElLRUxZKCppdGVyYXRvciA9PSAnfCcpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFwcGVuZFRvQVND
SUlCdWZmZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgQVNTRVJUKGlzQVNDSUkoY29kZVBv
aW50KSk7CisgICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAg
ICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY29kZVBvaW50KTsKK30KKworQUxXQVlTX0lOTElORSB2
b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBjaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xh
dGlvbikpCisgICAgICAgIG1fYXNjaWlCdWZmZXIuYXBwZW5kKGNoYXJhY3RlcnMsIGxlbmd0aCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6
YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoaXRlcmF0b3Ip
KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCppdGVyYXRvcik7CisgICAgYWR2YW5jZShpdGVy
YXRvcik7CisgICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKKyAgICBBU1NFUlQoKml0ZXJh
dG9yID09ICc6JyB8fCAqaXRlcmF0b3IgPT0gJ3wnKTsKKyAgICBpZiAoKml0ZXJhdG9yID09ICd8
JykKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCc6Jyk7CisgICAgYWR2YW5jZShpdGVyYXRvcik7Cit9CisKK2Jvb2wgVVJMUGFyc2Vy
Ojpjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmIGJhc2UpCit7CisgICAgaWYg
KGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhc2Uu
bV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggPCBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsK
KyAgICAgICAgaWYgKGJhc2UubV9zdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0
IExDaGFyKiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczgoKTsKKyAgICAgICAgICAg
IENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQgKyBiYXNl
Lm1fcG9ydExlbmd0aCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAg
ICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAgICAgICBh
cHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hh
ciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAgQ29k
ZVBvaW50SXRlcmF0b3I8VUNoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9w
b3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAg
ICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgeworICAgICAgICAgICAgICAgIGFwcGVu
ZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6c2hvdWxkQ29w
eUZpbGVVUkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7Cisg
ICAgaWYgKCFpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgYWR2YW5jZShpdGVyYXRvcik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGFkdmFuY2UoaXRlcmF0b3IpOworICAgIGlmIChpdGVyYXRvci5h
dEVuZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gIWlzU2xhc2hRdWVzdGlv
bk9ySGFzaCgqaXRlcmF0b3IpOworfQorCitzdGF0aWMgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1
aW50OF90IGJ5dGUsIFZlY3RvcjxMQ2hhcj4mIGJ1ZmZlcikKK3sKKyAgICBidWZmZXIuYXBwZW5k
KCclJyk7CisgICAgYnVmZmVyLmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChieXRl
KSk7CisgICAgYnVmZmVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChieXRlKSk7
Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90IGJ5dGUpCit7
CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCclJyk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih1cHBlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdChieXRlKSk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvQVND
SUlIZXhEaWdpdChieXRlKSk7Cit9CisKK2NvbnN0IGNoYXIgcmVwbGFjZW1lbnRDaGFyYWN0ZXJV
VEY4UGVyY2VudEVuY29kZWRbMTBdID0gIiVFRiVCRiVCRCI7Citjb25zdCBzaXplX3QgcmVwbGFj
ZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGggPSBzaXplb2YocmVwbGFjZW1l
bnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQpIC0gMTsKKwordGVtcGxhdGU8Ym9vbCgqaXNJ
bkNvZGVTZXQpKFVDaGFyMzIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElO
RSB2b2lkIFVSTFBhcnNlcjo6dXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIEFTU0VSVCghaXRlcmF0b3IuYXRF
bmQoKSk7CisgICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRlcmF0b3I7CisgICAgaWYgKExJS0VM
WShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc0luQ29kZVNl
dChjb2RlUG9pbnQpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNJbkNvZGVTZXQoY29kZVBv
aW50KSwgImlzSW5Db2RlU2V0IHNob3VsZCBhbHdheXMgcmV0dXJuIHRydWUgZm9yIG5vbi1BU0NJ
SSBjaGFyYWN0ZXJzIik7CisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAKKyAg
ICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKGNvZGVQb2ludCkpIHsKKyAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCwgcmVwbGFj
ZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOworICAgIGlu
dDMyX3Qgb2Zmc2V0ID0gMDsKKyAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCBj
b2RlUG9pbnQpOworICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytpKQorICAg
ICAgICBwZXJjZW50RW5jb2RlQnl0ZShidWZmZXJbaV0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6dXRmOFF1ZXJ5
RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikK
K3sKKyAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOworICAgIFVDaGFyMzIgY29kZVBvaW50
ID0gKml0ZXJhdG9yOworICAgIGlmIChMSUtFTFkoaXNBU0NJSShjb2RlUG9pbnQpKSkgeworICAg
ICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShjb2RlUG9pbnQs
IG1fdXJsSXNTcGVjaWFsKSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRv
cik7CisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShjb2RlUG9pbnQpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29kZVBvaW50KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwor
ICAgIAorICAgIGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgeworICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVk
LCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKKyAg
ICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAgVThfQVBQRU5EX1VOU0FGRShidWZmZXIsIG9mZnNl
dCwgY29kZVBvaW50KTsKKyAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBvZmZzZXQ7ICsraSkg
eworICAgICAgICBhdXRvIGJ5dGUgPSBidWZmZXJbaV07CisgICAgICAgIGlmIChzaG91bGRQZXJj
ZW50RW5jb2RlUXVlcnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkKKyAgICAgICAgICAgIHBl
cmNlbnRFbmNvZGVCeXRlKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKGJ5dGUpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjplbmNvZGVOb25VVEY4UXVlcnkoY29uc3QgVmVjdG9y
PFVDaGFyPiYgc291cmNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBhdXRvIGVuY29kZWQg
PSBlbmNvZGluZy5lbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcoc291cmNlLmRhdGEoKSwg
c291cmNlLnNpemUoKSkpOworICAgIGF1dG8qIGRhdGEgPSBlbmNvZGVkLmRhdGEoKTsKKyAgICBz
aXplX3QgbGVuZ3RoID0gZW5jb2RlZC5zaXplKCk7CisgICAgCisgICAgaWYgKCFsZW5ndGggPT0g
IWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9y
ICg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkp
OworICAgICAgICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOworICAgICAgICBpZiAoVU5MSUtFTFko
Ynl0ZSAhPSAqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0
b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVOTElLRUxZ
KHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKSkgewor
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYnl0ZSk7CisgICAgICAg
ICsraXRlcmF0b3I7CisgICAgfQorICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSAmJiBpc1Rh
Yk9yTmV3bGluZSgqaXRlcmF0b3IpKQorICAgICAgICArK2l0ZXJhdG9yOworICAgIEFTU0VSVCgo
aSA9PSBsZW5ndGgpID09IGl0ZXJhdG9yLmF0RW5kKCkpOworICAgIGZvciAoOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICAg
ICAgdWludDhfdCBieXRlID0gZGF0YVtpXTsKKyAgICAgICAgaWYgKHNob3VsZFBlcmNlbnRFbmNv
ZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQorICAgICAgICAgICAgcGVyY2VudEVu
Y29kZUJ5dGUoYnl0ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoYnl0ZSk7CisgICAgfQorfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBVUkxQYXJz
ZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCit7CisgICAgc3Rh
dGljIGNvbnN0IHVpbnQxNl90IGZ0cFBvcnQgPSAyMTsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2
X3QgZ29waGVyUG9ydCA9IDcwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBodHRwUG9ydCA9
IDgwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBodHRwc1BvcnQgPSA0NDM7CisgICAgc3Rh
dGljIGNvbnN0IHVpbnQxNl90IHdzUG9ydCA9IDgwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCB3c3NQb3J0ID0gNDQzOworICAgIAorICAgIGF1dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgp
OworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN3
aXRjaCAoc2NoZW1lWzBdKSB7CisgICAgY2FzZSAndyc6CisgICAgICAgIHN3aXRjaCAobGVuZ3Ro
KSB7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnKQor
ICAgICAgICAgICAgICAgIHJldHVybiB3c1BvcnQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdz
JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHdzc1BvcnQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgY2Fz
ZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgNDoKKyAgICAg
ICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJd
ID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGh0dHBQb3J0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKKyAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzNdID09ICdwJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAncycpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGh0dHBzUG9ydDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICB9CisgICAgY2FzZSAnZyc6CisgICAgICAgIGlmIChsZW5ndGggPT0gNgorICAgICAg
ICAgICAgJiYgc2NoZW1lWzFdID09ICdvJworICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdw
JworICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJworICAgICAgICAgICAgJiYgc2NoZW1l
WzRdID09ICdlJworICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKKyAgICAgICAgICAg
IHJldHVybiBnb3BoZXJQb3J0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGNh
c2UgJ2YnOgorICAgICAgICBpZiAobGVuZ3RoID09IDMKKyAgICAgICAgICAgICYmIHNjaGVtZVsx
XSA9PSAndCcKKyAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcpCisgICAgICAgICAgICBy
ZXR1cm4gZnRwUG9ydDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KK30KKworZW51bSBjbGFzcyBT
Y2hlbWUgeworICAgIFdTLAorICAgIFdTUywKKyAgICBGaWxlLAorICAgIEZUUCwKKyAgICBHb3Bo
ZXIsCisgICAgSFRUUCwKKyAgICBIVFRQUywKKyAgICBOb25TcGVjaWFsCit9OworCitBTFdBWVNf
SU5MSU5FIHN0YXRpYyBTY2hlbWUgc2NoZW1lKFN0cmluZ1ZpZXcgc2NoZW1lKQoreworICAgIGF1
dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7CisgICAg
Y2FzZSAnZic6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgMzoKKyAg
ICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzJdID09ICdwJykKKyAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpGVFA7CisgICAgICAg
ICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICBjYXNlIDQ6CisgICAgICAg
ICAgICBpZiAoc2NoZW1lWzFdID09ICdpJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9
PSAnbCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2UnKQorICAgICAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6OkZpbGU7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25T
cGVjaWFsOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9u
U3BlY2lhbDsKKyAgICAgICAgfQorICAgIGNhc2UgJ2cnOgorICAgICAgICBpZiAobGVuZ3RoID09
IDYKKyAgICAgICAgICAgICYmIHNjaGVtZVsxXSA9PSAnbycKKyAgICAgICAgICAgICYmIHNjaGVt
ZVsyXSA9PSAncCcKKyAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnaCcKKyAgICAgICAgICAg
ICYmIHNjaGVtZVs0XSA9PSAnZScKKyAgICAgICAgICAgICYmIHNjaGVtZVs1XSA9PSAncicpCisg
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpHb3BoZXI7CisgICAgICAgIHJldHVybiBTY2hlbWU6
Ok5vblNwZWNpYWw7CisgICAgY2FzZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7Cisg
ICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsz
XSA9PSAncCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRUUDsKKyAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGNhc2UgNToKKyAgICAgICAg
ICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcKKyAgICAgICAgICAgICAg
ICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkhU
VFBTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIH0K
KyAgICBjYXNlICd3JzoKKyAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAgICAgICAgY2FzZSAy
OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6V1M7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwor
ICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJworICAgICAg
ICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNj
aGVtZTo6V1NTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAg
ICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwor
ICAgIH0KK30KKworc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6bWF5YmVDYW5vbmlj
YWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVtZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWlzQVNDSUlB
bHBoYShzY2hlbWVbMF0pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgZm9y
IChzaXplX3QgaSA9IDE7IGkgPCBzY2hlbWUubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAo
aXNBU0NJSUFscGhhbnVtZXJpYyhzY2hlbWVbaV0pIHx8IHNjaGVtZVtpXSA9PSAnKycgfHwgc2No
ZW1lW2ldID09ICctJyB8fCBzY2hlbWVbaV0gPT0gJy4nKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJuIHNjaGVt
ZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworfQorCitib29sIFVSTFBhcnNlcjo6aXNTcGVj
aWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lQXJnKQoreworICAgIHJldHVybiBzY2hlbWUo
c2NoZW1lQXJnKSAhPSBTY2hlbWU6Ok5vblNwZWNpYWw7Cit9CisKK2VudW0gY2xhc3MgVVJMUGFy
c2VyOjpVUkxQYXJ0IHsKKyAgICBTY2hlbWVFbmQsCisgICAgVXNlclN0YXJ0LAorICAgIFVzZXJF
bmQsCisgICAgUGFzc3dvcmRFbmQsCisgICAgSG9zdEVuZCwKKyAgICBQb3J0RW5kLAorICAgIFBh
dGhBZnRlckxhc3RTbGFzaCwKKyAgICBQYXRoRW5kLAorICAgIFF1ZXJ5RW5kLAorfTsKKworc2l6
ZV90IFVSTFBhcnNlcjo6dXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYgdXJsLCBVUkxQYXJ0
IHBhcnQpCit7CisgICAgc3dpdGNoIChwYXJ0KSB7CisgICAgY2FzZSBVUkxQYXJ0OjpRdWVyeUVu
ZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3F1ZXJ5RW5kOworICAgIGNhc2UgVVJMUGFydDo6UGF0
aEVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhFbmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpQ
YXRoQWZ0ZXJMYXN0U2xhc2g6CisgICAgICAgIHJldHVybiB1cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CisgICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgorICAgICAgICByZXR1cm4gdXJsLm1faG9z
dEVuZCArIHVybC5tX3BvcnRMZW5ndGg7CisgICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgorICAg
ICAgICByZXR1cm4gdXJsLm1faG9zdEVuZDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhc3N3b3JkRW5k
OgorICAgICAgICByZXR1cm4gdXJsLm1fcGFzc3dvcmRFbmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpV
c2VyRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fdXNlckVuZDsKKyAgICBjYXNlIFVSTFBhcnQ6
OlVzZXJTdGFydDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3VzZXJTdGFydDsKKyAgICBjYXNlIFVS
TFBhcnQ6OlNjaGVtZUVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3NjaGVtZUVuZDsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgVVJM
UGFyc2VyOjpjb3B5QVNDSUlTdHJpbmdVbnRpbChjb25zdCBTdHJpbmcmIHN0cmluZywgc2l6ZV90
IGxlbmd0aCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGggPD0gc3RyaW5nLmxlbmd0aCgp
KTsKKyAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJU
KG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwor
ICAgIGVsc2UgeworICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHN0cmluZy5jaGFy
YWN0ZXJzMTYoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgVUNoYXIgYyA9IGNoYXJhY3RlcnNbaV07CisgICAgICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpc0FTQ0lJKGMpKTsKKyAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoYyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6Y29weVVSTFBhcnRzVW50aWwo
Y29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0IHBhcnQsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvciwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpCit7CisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKworICAgIG1f
YXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICBjb3B5QVNDSUlTdHJpbmdVbnRpbChiYXNlLm1fc3Ry
aW5nLCB1cmxMZW5ndGhVbnRpbFBhcnQoYmFzZSwgcGFydCkpOworICAgIHN3aXRjaCAocGFydCkg
eworICAgIGNhc2UgVVJMUGFydDo6UXVlcnlFbmQ6CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBiYXNlLm1fcXVlcnlFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFy
dDo6UGF0aEVuZDoKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gYmFzZS5tX3BhdGhFbmQ7Cisg
ICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNo
OgorICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJhc2UubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6UG9ydEVu
ZDoKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gYmFzZS5tX3BvcnRMZW5ndGg7CisgICAg
ICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6SG9zdEVuZDoKKyAgICAgICAgbV91
cmwubV9ob3N0RW5kID0gYmFzZS5tX2hvc3RFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAg
IGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBiYXNlLm1fcGFzc3dvcmRFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJM
UGFydDo6VXNlckVuZDoKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gYmFzZS5tX3VzZXJFbmQ7
CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6VXNlclN0YXJ0OgorICAg
ICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGJhc2UubV91c2VyU3RhcnQ7CisgICAgICAgIEZBTExU
SFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6U2NoZW1lRW5kOgorICAgICAgICBtX3VybC5tX2lz
VmFsaWQgPSBiYXNlLm1faXNWYWxpZDsKKyAgICAgICAgbV91cmwubV9wcm90b2NvbElzSW5IVFRQ
RmFtaWx5ID0gYmFzZS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7CisgICAgICAgIG1fdXJsLm1f
c2NoZW1lRW5kID0gYmFzZS5tX3NjaGVtZUVuZDsKKyAgICB9CisgICAgc3dpdGNoIChzY2hlbWUo
U3RyaW5nVmlldyhtX2FzY2lpQnVmZmVyLmRhdGEoKSwgbV91cmwubV9zY2hlbWVFbmQpKSkgewor
ICAgIGNhc2UgU2NoZW1lOjpXUzoKKyAgICBjYXNlIFNjaGVtZTo6V1NTOgorICAgICAgICBub25V
VEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1lOjpGaWxlOgorICAgICAgICBtX3Vy
bElzRmlsZSA9IHRydWU7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgU2NoZW1lOjpG
VFA6CisgICAgY2FzZSBTY2hlbWU6OkdvcGhlcjoKKyAgICBjYXNlIFNjaGVtZTo6SFRUUDoKKyAg
ICBjYXNlIFNjaGVtZTo6SFRUUFM6CisgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgorICAgICAgICBtX3Vy
bElzU3BlY2lhbCA9IGZhbHNlOworICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxw
dHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3N0YXRpYyBjb25zdCBjaGFyIGRvdEFTQ0lJQ29kZVsyXSA9IHsnMicsICdlJ307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFy
c2VyOjppc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+IGMpCit7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRT
eW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICAgICAgcmV0dXJuIGMuYXRFbmQoKSB8fCBpc1Ns
YXNoUXVlc3Rpb25Pckhhc2goKmMpOworICAgIH0KKyAgICBpZiAoKmMgIT0gJyUnKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhW
aW9sYXRpb246Ok5vPihjKTsKKyAgICBpZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29k
ZVswXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwg
UmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29k
ZVsxXSkgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hRdWVzdGlv
bk9ySGFzaCgqYyk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6OmlzRG91
YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sK
KyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCpjID09
ICcuJykgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsK
KyAgICB9CisgICAgaWYgKCpjICE9ICclJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFk
dmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAg
aWYgKGMuYXRFbmQoKSB8fCAqYyAhPSBkb3RBU0NJSUNvZGVbMF0pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6
Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pIHsKKyAgICAgICAgYWR2YW5j
ZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICAgICAg
cmV0dXJuIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2Vy
Ojpjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYykpOworICAg
IGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYgKCFjLmF0
RW5kKCkpIHsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykKKyAgICAg
ICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IEFTU0VSVCgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOworICAgICAgICBhZHZhbmNlKGMpOworICAgICAg
ICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAg
ICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKTsKKyAgICAg
ICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGlm
ICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVCgqYyA9PSAnPycgfHwgKmMg
PT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpjb25zdW1lRG91YmxlRG90UGF0aFNlZ21lbnQoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlzRG91Ymxl
RG90UGF0aFNlZ21lbnQoYykpOworICAgIGlmICgqYyA9PSAnLicpCisgICAgICAgIGFkdmFuY2Uo
Yyk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOworICAgICAgICBhZHZh
bmNlKGMpOworICAgICAgICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKKyAgICAgICAg
YWR2YW5jZShjKTsKKyAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlD
b2RlWzFdKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICB9CisgICAgY29uc3VtZVNpbmdsZURv
dFBhdGhTZWdtZW50KGMpOworfQorCitib29sIFVSTFBhcnNlcjo6c2hvdWxkUG9wUGF0aCh1bnNp
Z25lZCBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gpCit7CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4
VmlvbGF0aW9uKTsKKyAgICBpZiAoIW1fdXJsSXNGaWxlKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIEFTU0VSVChtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSBtX2FzY2lpQnVmZmVy
LnNpemUoKSk7CisgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGNvbXBvbmVudFRvUG9wKCZt
X2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0sICZtX2FzY2lpQnVmZmVyWzBdICsg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworICAgIGlmIChuZXdQYXRoQWZ0ZXJMYXN0U2xh
c2ggPT0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSAmJiBpc1dpbmRv
d3NEcml2ZUxldHRlcihjb21wb25lbnRUb1BvcCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBVUkxQYXJzZXI6OnBvcFBhdGgoKQoreworICAgIEFT
U0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgaWYgKG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSkgewor
ICAgICAgICBhdXRvIG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoIC0gMTsKKyAgICAgICAgaWYgKG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNs
YXNoXSA9PSAnLycpCisgICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKKyAgICAg
ICAgd2hpbGUgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA+IG1fdXJsLm1faG9zdEVuZCArIG1fdXJs
Lm1fcG9ydExlbmd0aCAmJiBtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0gIT0g
Jy8nKQorICAgICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07CisgICAgICAgIG5ld1Bh
dGhBZnRlckxhc3RTbGFzaCsrOworICAgICAgICBpZiAoc2hvdWxkUG9wUGF0aChuZXdQYXRoQWZ0
ZXJMYXN0U2xhc2gpKQorICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBu
ZXdQYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgfQorICAgIG1fYXNjaWlCdWZmZXIucmVzaXplKG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpzeW50YXhWaW9sYXRpb24oY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIGlmIChtX2RpZFNlZVN5
bnRheFZpb2xhdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGlkU2VlU3ludGF4VmlvbGF0
aW9uID0gdHJ1ZTsKKyAgICAKKyAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwor
ICAgIHNpemVfdCBjb2RlVW5pdHNUb0NvcHkgPSBpdGVyYXRvci5jb2RlVW5pdHNTaW5jZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IENoYXJhY3RlclR5cGUqPihtX2lucHV0QmVnaW4pKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChjb2RlVW5pdHNUb0NvcHkgPD0gbV9pbnB1dFN0cmluZy5sZW5ndGgoKSk7
CisgICAgbV9hc2NpaUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobV9pbnB1dFN0cmluZy5sZW5ndGgo
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlVW5pdHNUb0NvcHk7ICsraSkgewor
ICAgICAgICBBU1NFUlQoaXNBU0NJSShtX2lucHV0U3RyaW5nW2ldKSk7CisgICAgICAgIG1fYXNj
aWlCdWZmZXIudW5jaGVja2VkQXBwZW5kKG1faW5wdXRTdHJpbmdbaV0pOworICAgIH0KK30KKwor
dm9pZCBVUkxQYXJzZXI6OmZhaWx1cmUoKQoreworICAgIG1fdXJsLmludmFsaWRhdGUoKTsKKyAg
ICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJpbmc7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6Y2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBVQ2hhcjMyIGNvZGVQ
b2ludCkKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCB0b0FTQ0lJTG93ZXIoKml0ZXJh
dG9yKSAhPSBjb2RlUG9pbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENo
YXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wg
VVJMUGFyc2VyOjppc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
IGl0ZXJhdG9yKQoreworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3Is
ICdsJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29k
ZVBvaW50KGl0ZXJhdG9yLCAnbycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFj
aGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2MnKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdhJykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0
ZXJhdG9yLCAnbCcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2Fs
aG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2gnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdvJykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAn
cycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQ
b2ludChpdGVyYXRvciwgJ3QnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBp
dGVyYXRvci5hdEVuZCgpOworfQorCitib29sIFVSTFBhcnNlcjo6aXNMb2NhbGhvc3QoU3RyaW5n
VmlldyB2aWV3KQoreworICAgIGlmICh2aWV3LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gaXNB
dExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4odmlldy5jaGFyYWN0ZXJzOCgpLCB2
aWV3LmNoYXJhY3RlcnM4KCkgKyB2aWV3Lmxlbmd0aCgpKSk7CisgICAgcmV0dXJuIGlzQXRMb2Nh
bGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+KHZpZXcuY2hhcmFjdGVyczE2KCksIHZpZXcu
Y2hhcmFjdGVyczE2KCkgKyB2aWV3Lmxlbmd0aCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgU3Ry
aW5nVmlldyBVUkxQYXJzZXI6OnBhcnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6ZV90IGxl
bmd0aCkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKSB7Cisg
ICAgICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSBtX2FzY2lpQnVmZmVyLnNpemUoKSk7Cisg
ICAgICAgIHJldHVybiBTdHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpICsgc3RhcnQsIGxl
bmd0aCk7CisgICAgfQorICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSBtX2lucHV0U3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX2lucHV0U3RyaW5nKS5zdWJzdHJp
bmcoc3RhcnQsIGxlbmd0aCk7Cit9CisKK0FMV0FZU19JTkxJTkUgVUNoYXIgVVJMUGFyc2VyOjpw
YXJzZWREYXRhVmlldyhzaXplX3QgcG9zaXRpb24pCit7CisgICAgaWYgKFVOTElLRUxZKG1fZGlk
U2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAgICAgcmV0dXJuIG1fYXNjaWlCdWZmZXJbcG9zaXRp
b25dOworICAgIHJldHVybiBtX2lucHV0U3RyaW5nW3Bvc2l0aW9uXTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgc2l6ZV90IFVSTFBhcnNlcjo6
Y3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQor
ICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlci5zaXplKCk7CisgICAgCisgICAgcmV0dXJuIGl0
ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlw
ZSo+KG1faW5wdXRCZWdpbikpOworfQorCitVUkxQYXJzZXI6OlVSTFBhcnNlcihjb25zdCBTdHJp
bmcmIGlucHV0LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcpCisgICAgOiBtX2lucHV0U3RyaW5nKGlucHV0KQoreworICAgIGlmIChp
bnB1dC5pc051bGwoKSkgeworICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgIWJhc2UubV9j
YW5ub3RCZUFCYXNlVVJMKSB7CisgICAgICAgICAgICBtX3VybCA9IGJhc2U7CisgICAgICAgICAg
ICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKGlucHV0LmlzOEJpdCgpKSB7CisgICAgICAgIG1faW5w
dXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnM4KCk7CisgICAgICAgIHBhcnNlKGlucHV0LmNoYXJh
Y3RlcnM4KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9pbnB1dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVyczE2KCk7
CisgICAgICAgIHBhcnNlKGlucHV0LmNoYXJhY3RlcnMxNigpLCBpbnB1dC5sZW5ndGgoKSwgYmFz
ZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgIH0KKworICAgIEFTU0VSVCghbV91cmwubV9p
c1ZhbGlkCisgICAgICAgIHx8IG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uID09IChtX3VybC5zdHJp
bmcoKSAhPSBpbnB1dCkKKyAgICAgICAgfHwgKGlucHV0LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8
aXNDMENvbnRyb2xPclNwYWNlPigpCisgICAgICAgICAgICAmJiBtX3VybC5tX3N0cmluZyA9PSBi
YXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5kKSkpOworICAgIEFTU0VSVChpbnRlcm5h
bFZhbHVlc0NvbnNpc3RlbnQobV91cmwpKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgaWYg
KCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikgeworICAgICAgICAvLyBGb3JjZSBhIHN5bnRheCB2
aW9sYXRpb24gYXQgdGhlIGJlZ2lubmluZyB0byBtYWtlIHN1cmUgd2UgZ2V0IHRoZSBzYW1lIHJl
c3VsdC4KKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCIgIiwgaW5wdXQpLCBi
YXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgIFVSTCBwYXJzZWQgPSBwYXJzZXIu
cmVzdWx0KCk7CisgICAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKQorICAgICAgICAgICAgQVNT
RVJUKGFsbFZhbHVlc0VxdWFsKHBhcnNlci5yZXN1bHQoKSwgbV91cmwpKTsKKyAgICB9CisjZW5k
aWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2Vy
OjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBpbnB1dCwgY29uc3QgdW5zaWduZWQgbGVuZ3Ro
LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpCit7CisgICAgVVJMX1BBUlNFUl9MT0coIlBhcnNpbmcgVVJMIDwlcz4gYmFzZSA8JXM+
IiwgU3RyaW5nKGlucHV0LCBsZW5ndGgpLnV0ZjgoKS5kYXRhKCksIGJhc2Uuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgbV91cmwgPSB7IH07CisgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIu
aXNFbXB0eSgpKTsKKworICAgIFZlY3RvcjxVQ2hhcj4gcXVlcnlCdWZmZXI7CisKKyAgICB1bnNp
Z25lZCBlbmRJbmRleCA9IGxlbmd0aDsKKyAgICB3aGlsZSAoVU5MSUtFTFkoZW5kSW5kZXggJiYg
aXNDMENvbnRyb2xPclNwYWNlKGlucHV0W2VuZEluZGV4IC0gMV0pKSkgeworICAgICAgICBzeW50
YXhWaW9sYXRpb24oQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaW5wdXQsIGlucHV0
KSk7CisgICAgICAgIGVuZEluZGV4LS07CisgICAgfQorICAgIENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+IGMoaW5wdXQsIGlucHV0ICsgZW5kSW5kZXgpOworICAgIENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+IGF1dGhvcml0eU9ySG9zdEJlZ2luOworICAgIENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IHF1ZXJ5QmVnaW47CisgICAgd2hpbGUgKFVOTElLRUxZ
KCFjLmF0RW5kKCkgJiYgaXNDMENvbnRyb2xPclNwYWNlKCpjKSkpIHsKKyAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGMpOworICAgICAgICArK2M7CisgICAgfQorICAgIGF1dG8gYmVnaW5BZnRlckNv
bnRyb2xBbmRTcGFjZSA9IGM7CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7Cisg
ICAgICAgIFNjaGVtZVN0YXJ0LAorICAgICAgICBTY2hlbWUsCisgICAgICAgIE5vU2NoZW1lLAor
ICAgICAgICBTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSwKKyAgICAgICAgUGF0aE9yQXV0aG9y
aXR5LAorICAgICAgICBSZWxhdGl2ZSwKKyAgICAgICAgUmVsYXRpdmVTbGFzaCwKKyAgICAgICAg
U3BlY2lhbEF1dGhvcml0eVNsYXNoZXMsCisgICAgICAgIFNwZWNpYWxBdXRob3JpdHlJZ25vcmVT
bGFzaGVzLAorICAgICAgICBBdXRob3JpdHlPckhvc3QsCisgICAgICAgIEhvc3QsCisgICAgICAg
IEZpbGUsCisgICAgICAgIEZpbGVTbGFzaCwKKyAgICAgICAgRmlsZUhvc3QsCisgICAgICAgIFBh
dGhTdGFydCwKKyAgICAgICAgUGF0aCwKKyAgICAgICAgQ2Fubm90QmVBQmFzZVVSTFBhdGgsCisg
ICAgICAgIFVURjhRdWVyeSwKKyAgICAgICAgTm9uVVRGOFF1ZXJ5LAorICAgICAgICBGcmFnbWVu
dCwKKyAgICB9OworCisjZGVmaW5lIExPR19TVEFURSh4KSBVUkxfUEFSU0VSX0xPRygiU3RhdGUg
JXMsIGNvZGUgcG9pbnQgJWMsIHBhcnNlZCBkYXRhIDwlcz4gc2l6ZSAlenUiLCB4LCAqYywgcGFy
c2VkRGF0YVZpZXcoMCwgY3VycmVudFBvc2l0aW9uKGMpKS51dGY4KCkuZGF0YSgpLCBjdXJyZW50
UG9zaXRpb24oYykpCisjZGVmaW5lIExPR19GSU5BTF9TVEFURSh4KSBVUkxfUEFSU0VSX0xPRygi
RmluYWwgU3RhdGU6ICVzIiwgeCkKKworICAgIFN0YXRlIHN0YXRlID0gU3RhdGU6OlNjaGVtZVN0
YXJ0OworICAgIHdoaWxlICghYy5hdEVuZCgpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc1Rh
Yk9yTmV3bGluZSgqYykpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAg
ICAgICAgICArK2M7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAg
IHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6CisgICAg
ICAgICAgICBMT0dfU1RBVEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgICAgICBpZiAoaXNBU0NJ
SUFscGhhKCpjKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIo
KmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7CisgICAgICAgICAg
ICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAgICAgIGMgPSBiZWdp
bkFmdGVyQ29udHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U2NoZW1lOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgorICAgICAg
ICAgICAgTE9HX1NUQVRFKCJTY2hlbWUiKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkU2NoZW1l
Q2hhcmFjdGVyKCpjKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBw
ZXIoKmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKCpjID09ICc6JykgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNj
aGVtZUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAoc2NoZW1l
RW5kID4gVVJMOjptYXhTY2hlbWVMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbHVy
ZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIG1fdXJsLm1fc2NoZW1lRW5kID0gc2NoZW1lRW5kOworICAgICAgICAgICAg
ICAgIFN0cmluZ1ZpZXcgdXJsU2NoZW1lID0gcGFyc2VkRGF0YVZpZXcoMCwgbV91cmwubV9zY2hl
bWVFbmQpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHNjaGVtZSh1cmxTY2hlbWUpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBTY2hlbWU6OkZpbGU6CisgICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmxJc0ZpbGUgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlOworICAgICAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1l
OjpXUzoKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6V1NTOgorICAgICAgICAgICAgICAg
ICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAg
IG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJv
dG9jb2xJcyh1cmxTY2hlbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlT
bGFzaGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpIVFRQOgorICAgICAgICAgICAgICAg
IGNhc2UgU2NoZW1lOjpIVFRQUzoKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wcm90b2Nv
bElzSW5IVFRQRmFtaWx5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7
CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkZUUDoKKyAgICAgICAgICAgICAgICBjYXNl
IFNjaGVtZTo6R29waGVyOgorICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLnByb3RvY29sSXModXJsU2NoZW1lKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9y
QXV0aG9yaXR5OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczsKKyAgICAgICAgICAg
ICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIFNjaGVtZTo6Tm9uU3BlY2lhbDoKKyAgICAgICAgICAgICAgICAgICAgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBhdXRvIG1heWJlU2xh
c2ggPSBjOworICAgICAgICAgICAgICAgICAgICBhZHZhbmNlKG1heWJlU2xhc2gpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIW1heWJlU2xhc2guYXRFbmQoKSAmJiAqbWF5YmVTbGFzaCA9PSAn
LycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBtYXliZVNsYXNoOworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OworICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKCpjID09ICcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3Np
dGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0g
Y3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9jYW5ub3RCZUFCYXNlVVJMID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRoOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAgICAgICAgICAgICAgIGMgPSBiZWdpbkFmdGVyQ29u
dHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKKyAgICAg
ICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9s
QW5kU3BhY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBTdGF0ZTo6Tm9TY2hlbWU6CisgICAgICAgICAgICBMT0dfU1RBVEUoIk5vU2NoZW1lIik7Cisg
ICAgICAgICAgICBpZiAoIWJhc2UuaXNWYWxpZCgpIHx8IChiYXNlLm1fY2Fubm90QmVBQmFzZVVS
TCAmJiAqYyAhPSAnIycpKSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChiYXNlLm1fY2Fu
bm90QmVBQmFzZVVSTCAmJiAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICBjb3B5VVJMUGFy
dHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rpbmcp
OworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWJhc2Uu
cHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVs
YXRpdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5vblVURjhR
dWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6CisgICAgICAgICAgICBM
T0dfU1RBVEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgICAgICBpZiAo
KmMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwor
ICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKGMuYXRFbmQo
KSkgeworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCpjID09ICcv
JykgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFz
aGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlU2xhc2g7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpQYXRoT3JBdXRob3JpdHk6Cisg
ICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOworICAgICAgICAgICAgaWYg
KCpjID09ICcvJykgeworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsK
KyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7CisgICAgICAg
ICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdp
biA9IGM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChwYXJz
ZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICAgICAg
ICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAg
ICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAg
ICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJSZWxh
dGl2ZSIpOworICAgICAgICAgICAgc3dpdGNoICgqYykgeworICAgICAgICAgICAgY2FzZSAnLyc6
CisgICAgICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
UmVsYXRpdmVTbGFzaDsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlICc/JzoKKyAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNV
bnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOworICAgICAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAnIyc6CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRz
VW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsK
KyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgKytjOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2gsIGMsIG5v
blVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9u
KGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpICE9ICcvJykgewor
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRo
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlU2xhc2g6CisgICAgICAgICAgICBMT0df
U1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMg
PT0gJ1xcJykgeworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBjb3B5VVJM
UGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5vblVURjhRdWVyeUVuY29k
aW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCI6Ly8iLCAzKTsKKyAg
ICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpCisgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9y
aXR5T3JIb3N0OworICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQb3J0RW5kLCBjLCBub25VVEY4UXVl
cnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwor
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX2hvc3RF
bmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6UGF0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczoKKyAgICAgICAgICAgIExPR19TVEFURSgi
U3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoKmMgPT0g
Jy8nIHx8ICpjID09ICdcXCcpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09
ICdcXCcpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIGFkdmFu
Y2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKExJS0VMWSghYy5hdEVuZCgpICYmICgqYyA9PSAn
LycgfHwgKmMgPT0gJ1xcJykpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgq
YyA9PSAnXFwnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcigiLy8iLCAyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVz
OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcyIp
OworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSB7CisgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50
UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXR5T3JI
b3N0OworICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlP
ckhvc3Q6CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJBdXRo
b3JpdHlPckhvc3QiKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJ0AnKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gbGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBm
aW5kTGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFmaW5kTGFzdEF0LmF0
RW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFVSTF9QQVJTRVJfTE9HKCJGaW5kaW5n
IGxhc3QgQDogJWMiLCAqZmluZExhc3RBdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KmZpbmRMYXN0QXQgPT0gJ0AnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RBdCA9
IGZpbmRMYXN0QXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU2xhc2ggPSAqZmlu
ZExhc3RBdCA9PSAnLycgfHwgKG1fdXJsSXNTcGVjaWFsICYmICpmaW5kTGFzdEF0ID09ICdcXCcp
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmZpbmRMYXN0QXQgPT0g
Jz8nIHx8ICpmaW5kTGFzdEF0ID09ICcjJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrZmluZExhc3RBdDsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJzZUF1dGhvcml0eShDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgbGFzdEF0KSk7Cisg
ICAgICAgICAgICAgICAgICAgIGMgPSBsYXN0QXQ7CisgICAgICAgICAgICAgICAgICAgIGFkdmFu
Y2UoYyk7CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6SG9zdDsKKyAgICAgICAgICAgICAgICAg
ICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJvb2wgaXNTbGFz
aCA9ICpjID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJyk7CisgICAgICAg
ICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmMgPT0gJz8nIHx8ICpjID09ICcjJykgeworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpOworICAgICAgICAgICAgICAgICAgICBpZiAo
aXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdXJsSXNT
cGVjaWFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24o
Yyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwu
bV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91
cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGF1dGhv
cml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBh
cnNlSG9zdEFuZFBvcnQoaXRlcmF0b3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgh
aXNTbGFzaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNp
YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JO
b25BU0NJSSgqYykpCisgICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFT
Q0lJID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9IHdoaWxlICgh
Yy5hdEVuZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpIb3N0
OgorICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiSG9zdCIpOwor
ICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJz8nIHx8ICpjID09ICcjJykg
eworICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgqYyA9
PSAnPycgfHwgKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzUGVyY2VudE9yTm9uQVND
SUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9
IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRF
bmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZToKKyAg
ICAgICAgICAgIExPR19TVEFURSgiRmlsZSIpOworICAgICAgICAgICAgc3dpdGNoICgqYykgewor
ICAgICAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgIGNhc2UgJy8nOgor
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpGaWxlU2xhc2g7CisgICAgICAgICAgICAgICAgKytjOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnPyc6CisgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAm
JiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgICAgICAgICBjb3B5VVJM
UGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKKyAgICAg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLz8iLCA0KTsKKyAgICAgICAgICAgICAg
ICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKSAtIDI7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3Jk
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9z
dEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAg
ICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
Yyk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJ
cygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2Us
IFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8jIiwgNCk7
CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9u
KGMpIC0gMjsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9
IDA7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91
cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAg
ICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAo
YmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikgJiYgc2hvdWxkQ29weUZp
bGVVUkwoYykpCisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVS
TFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCIvLy8iLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBj
dXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNz
d29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICAgICAgICAgIGlm
IChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpGaWxlU2xhc2g6
CisgICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGVTbGFzaCIpOworICAgICAgICAgICAgaWYgKExJ
S0VMWSgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoKmMgPT0gJ1xcJykpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAg
ICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1
cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAg
ICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RmlsZUhvc3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQg
PSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAg
ICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRX
aW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGJhc2UpKSB7CisgICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0OworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJT
dGFydCArIDE7CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZpbGVIb3N0OgorICAgICAgICAgICAgZG8gewor
ICAgICAgICAgICAgICAgIExPR19TVEFURSgiRmlsZUhvc3QiKTsKKyAgICAgICAgICAgICAgICBp
ZiAoaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKSkgeworICAgICAgICAgICAgICAgICAgICBib29s
IHdpbmRvd3NRdWlyayA9IHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7
CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3dzUXVpcmspIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0QmVnaW4p
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3dz
UXVpcmsgfHwgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHdpbmRvd3NRdWlyayB8fCBwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRp
b24oYykgLSAxKSA9PSAnLycpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCpjID09ICc/JykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigi
Lz8iLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0g
JyMnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvIyIsIDIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKSAt
IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgh
cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3Jp
dHlPckhvc3RCZWdpbiwgYykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzTG9jYWxob3N0KHBhcnNlZERhdGFW
aWV3KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJlbnRQb3NpdGlvbihjKSAtIG1fdXJsLm1fcGFz
c3dvcmRFbmQpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1f
cGFzc3dvcmRFbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
Y3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aFN0YXJ0OworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KGlzUGVyY2VudE9yTm9uQVNDSUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQ
ZXJjZW50T3JOb25BU0NJSSA9IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAg
ICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBTdGF0ZTo6UGF0aFN0YXJ0OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoU3RhcnQiKTsK
KyAgICAgICAgICAgIGlmICgqYyAhPSAnLycgJiYgKmMgIT0gJ1xcJykgeworICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlBhdGg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UGF0aDoKKyAg
ICAgICAgICAgIExPR19TVEFURSgiUGF0aCIpOworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8
fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJykpCisgICAgICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGN1cnJlbnRQ
b3NpdGlvbihjKSAmJiBwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSA9PSAn
LycpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRG91YmxlRG90UGF0aFNlZ21l
bnQoYykpKSB7CisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KGMpOworICAgICAgICAg
ICAgICAgICAgICBwb3BQYXRoKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNTaW5nbGVEb3RQYXRo
U2VnbWVudChjKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwor
ICAgICAgICAgICAgICAgICAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICgqYyA9PSAnPycpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignPycpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBpZiAo
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9
IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCpjID09ICcjJykgeworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0g
bV91cmwubV9wYXRoRW5kOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdXRm
OFBlcmNlbnRFbmNvZGU8aXNJbkRlZmF1bHRFbmNvZGVTZXQ+KGMpOworICAgICAgICAgICAgKytj
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VV
UkxQYXRoOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0aCIpOwor
ICAgICAgICAgICAgaWYgKCpjID09ICc/JykgeworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCc/Jyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGlmIChu
b25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0g
YzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpV
VEY4UXVlcnk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcjJykgeworICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgfSBlbHNlIGlmICgqYyA9PSAn
LycpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAg
ICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2RlU2V0PihjKTsKKyAgICAgICAg
ICAgICAgICArK2M7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJVVEY4UXVlcnki
KTsKKyAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luID09IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KCkpOworICAgICAgICAgICAgaWYgKCpjID09ICcjJykgeworICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoIW5vblVURjhRdWVyeUVuY29kaW5nKTsK
KyAgICAgICAgICAgIHV0ZjhRdWVyeUVuY29kZShjKTsKKyAgICAgICAgICAgICsrYzsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpOb25VVEY4UXVlcnk6CisgICAgICAg
ICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJOb25VVEY4UXVlcnkiKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPigpKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7CisgICAgICAg
ICAgICAgICAgICAgIGVuY29kZU5vblVURjhRdWVyeShxdWVyeUJ1ZmZlciwgKm5vblVURjhRdWVy
eUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBj
KSk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRp
b24oYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYXBwZW5kQ29kZVBvaW50KHF1ZXJ5QnVmZmVyLCAqYyk7CisgICAgICAgICAgICAgICAgYWR2
YW5jZShjLCBxdWVyeUJlZ2luKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZyYWdtZW50OgorICAgICAg
ICAgICAgVVJMX1BBUlNFUl9MT0coIlN0YXRlIEZyYWdtZW50Iik7CisgICAgICAgICAgICB1dGY4
UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2RlU2V0PihjKTsKKyAgICAgICAgICAgICsrYzsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgc3dpdGNoIChzdGF0
ZSkgeworICAgIGNhc2UgU3RhdGU6OlNjaGVtZVN0YXJ0OgorICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgIGlmICghY3VycmVudFBvc2l0aW9uKGMpICYmIGJh
c2UuaXNWYWxpZCgpICYmICFiYXNlLm1fY2Fubm90QmVBQmFzZVVSTCkgeworICAgICAgICAgICAg
bV91cmwgPSBiYXNlOworICAgICAgICAgICAgbV91cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVy
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZmFpbHVyZSgpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlNjaGVtZSIpOworICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIFN0YXRlOjpOb1NjaGVtZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJOb1Nj
aGVtZSIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2Ug
U3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OgorICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgIGNvcHlVUkxQYXJ0c1Vu
dGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKKyAgICAgICAg
TE9HX0ZJTkFMX1NUQVRFKCJQYXRoT3JBdXRob3JpdHkiKTsKKyAgICAgICAgQVNTRVJUKG1fdXJs
Lm1fdXNlclN0YXJ0KTsKKyAgICAgICAgQVNTRVJUKG1fdXJsLm1fdXNlclN0YXJ0ID09IGN1cnJl
bnRQb3NpdGlvbihjKSk7CisgICAgICAgIEFTU0VSVChwYXJzZWREYXRhVmlldyhjdXJyZW50UG9z
aXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICBtX3VybC5tX3VzZXJTdGFydC0tOworICAg
ICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsK
KyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCAr
IDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
OworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIlJlbGF0aXZlIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKKyAgICAgICAgTE9HX0ZJTkFM
X1NUQVRFKCJSZWxhdGl2ZVNsYXNoIik7CisgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2Us
IFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgIG1f
dXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzIik7CisgICAgICAgIG1fdXJsLm1f
dXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXM6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXMiKTsKKyAgICAgICAgZmFpbHVyZSgpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OgorICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIkF1dGhvcml0eU9ySG9zdCIpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJy
ZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICBpZiAoYXV0aG9yaXR5T3JIb3N0QmVn
aW4uYXRFbmQoKSkgeworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAg
ICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgfSBlbHNlIGlmICghcGFyc2VIb3N0
QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIGZhaWx1cmUoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICht
X3VybElzU3BlY2lhbCkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsg
MTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aDsKKyAgICAgICAgfQorICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTdGF0ZTo6SG9zdDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJIb3N0Iik7CisgICAg
ICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAg
ICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBpZiAobV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0
RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6RmlsZToKKyAgICAg
ICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlIik7CisgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAm
JiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgY29weVVSTFBhcnRzVW50
aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIiwgMyk7CisgICAgICAgIG1fdXJsLm1f
dXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFN0YXRlOjpGaWxlU2xhc2g6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRmls
ZVNsYXNoIik7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgbV91cmwubV91
c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgKyAxOworICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCIvLyIsIDIpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owor
ICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKGNvcHlCYXNlV2luZG93c0RyaXZlTGV0
dGVyKGJhc2UpKSB7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsg
NDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6
RmlsZUhvc3Q6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRmlsZUhvc3QiKTsKKyAgICAgICAg
aWYgKHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAgICAgICAmJiBpc1dpbmRvd3NE
cml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCcvJyk7CisgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9y
aXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAoYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykgeworICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignLycpOworICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRp
b24oYykgLSAxOworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKSkgewor
ICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICBpZiAoaXNMb2NhbGhvc3QocGFy
c2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91
cmwubV9wYXNzd29yZEVuZCkpKSB7CisgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLnNocmluayht
X3VybC5tX3Bhc3N3b3JkRW5kKTsKKyAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAg
ICAgIH0KKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0
aCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlBhdGhTdGFydDoKKyAgICAgICAg
TE9HX0ZJTkFMX1NUQVRFKCJQYXRoU3RhcnQiKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0YXRlOjpQYXRoOgorICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIlBhdGgiKTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMp
OworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDoKKyAgICAgICAgTE9H
X0ZJTkFMX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0aCIpOworICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlVURjhRdWVy
eToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJVVEY4UXVlcnkiKTsKKyAgICAgICAgQVNTRVJU
KHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJOb25VVEY4UXVlcnkiKTsKKyAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gIT0gQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAgICAgIGVuY29kZU5vblVURjhRdWVyeShx
dWVyeUJ1ZmZlciwgKm5vblVURjhRdWVyeUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBjKSk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBj
dXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OkZyYWdt
ZW50OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZyYWdtZW50Iik7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGlmIChMSUtFTFkoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkgewor
ICAgICAgICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJpbmc7CisgICAgICAgIEFTU0VSVCht
X2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fdXJsLm1fc3Ry
aW5nID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKG1fYXNjaWlCdWZmZXIpKTsKKyAgICBtX3VybC5t
X2lzVmFsaWQgPSB0cnVlOworICAgIFVSTF9QQVJTRVJfTE9HKCJQYXJzZWQgVVJMIDwlcz4iLCBt
X3VybC5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpwYXJzZUF1dGhvcml0eShDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFkoaXRlcmF0
b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAg
ICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7IGFkdmFuY2UoaXRlcmF0b3IpKSB7
CisgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKSB7CisgICAgICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgYXV0byBpdGVy
YXRvckF0Q29sb24gPSBpdGVyYXRvcjsKKyAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAg
ICAgICBib29sIHRhYk9yTmV3bGluZUFmdGVyQ29sb24gPSBmYWxzZTsKKyAgICAgICAgICAgIHdo
aWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQoKSAmJiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0
b3IpKSkgeworICAgICAgICAgICAgICAgIHRhYk9yTmV3bGluZUFmdGVyQ29sb24gPSB0cnVlOwor
ICAgICAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoaXRlcmF0b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JBdENvbG9uKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgIGlmIChtX3VybC5tX3Vz
ZXJFbmQgPiBtX3VybC5tX3VzZXJTdGFydCkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignQCcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICh0YWJPck5ld2xpbmVBZnRlckNvbG9uKQorICAgICAgICAgICAgICAg
IHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckF0Q29sb24pOworICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignOicpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
dXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJhdG9yKTsK
KyAgICB9CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkK
KyAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0
ZXJhdG9yKTsKKyAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJh
dG9yKTsKKyAgICBpZiAoIW1fdXJsLm1fdXNlckVuZCkKKyAgICAgICAgbV91cmwubV91c2VyRW5k
ID0gbV91cmwubV9wYXNzd29yZEVuZDsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdAJyk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+Cit2b2lkIFVSTFBhcnNl
cjo6YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikK
K3sKKyAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2lnbmVkSW50ZWdlclR5cGUpICogMyArIDFdOwor
ICAgIExDaGFyKiBlbmQgPSBzdGQ6OmVuZChidWYpOworICAgIExDaGFyKiBwID0gZW5kOworICAg
IGRvIHsKKyAgICAgICAgKi0tcCA9IChudW1iZXIgJSAxMCkgKyAnMCc7CisgICAgICAgIG51bWJl
ciAvPSAxMDsKKyAgICB9IHdoaWxlIChudW1iZXIpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
cCwgZW5kIC0gcCk7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY0KElQdjRBZGRy
ZXNzIGFkZHJlc3MpCit7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90Pihh
ZGRyZXNzID4+IDI0KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5k
TnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzID4+IDE2KTsKKyAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90
PihhZGRyZXNzID4+IDgpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy4nKTsKKyAgICBhcHBl
bmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQ4X3Q+KGFkZHJlc3MpOworfQorICAgIAorc3RhdGlj
IHNpemVfdCB6ZXJvU2VxdWVuY2VMZW5ndGgoY29uc3Qgc3RkOjphcnJheTx1aW50MTZfdCwgOD4m
IGFkZHJlc3MsIHNpemVfdCBiZWdpbikKK3sKKyAgICBzaXplX3QgZW5kID0gYmVnaW47CisgICAg
Zm9yICg7IGVuZCA8IDg7IGVuZCsrKSB7CisgICAgICAgIGlmIChhZGRyZXNzW2VuZF0pCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGVuZCAtIGJlZ2luOworfQorCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNvbnN0IHN0
ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzKQoreworICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBsb25nZXN0OworICAgIHNpemVfdCBsb25nZXN0TGVuZ3RoID0gMDsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0gemVyb1Nl
cXVlbmNlTGVuZ3RoKGFkZHJlc3MsIGkpOworICAgICAgICBpZiAobGVuZ3RoKSB7CisgICAgICAg
ICAgICBpZiAobGVuZ3RoID4gMSAmJiAoIWxvbmdlc3QgfHwgbG9uZ2VzdExlbmd0aCA8IGxlbmd0
aCkpIHsKKyAgICAgICAgICAgICAgICBsb25nZXN0ID0gaTsKKyAgICAgICAgICAgICAgICBsb25n
ZXN0TGVuZ3RoID0gbGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSArPSBsZW5n
dGg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxvbmdlc3Q7Cit9CisKK3ZvaWQgVVJM
UGFyc2VyOjpzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGllY2UpCit7CisgICAgYm9vbCBw
cmludGVkID0gZmFsc2U7CisgICAgaWYgKGF1dG8gbmliYmxlMCA9IHBpZWNlID4+IDEyKSB7Cisg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJSGV4
RGlnaXQobmliYmxlMCkpOworICAgICAgICBwcmludGVkID0gdHJ1ZTsKKyAgICB9CisgICAgYXV0
byBuaWJibGUxID0gcGllY2UgPj4gOCAmIDB4RjsKKyAgICBpZiAocHJpbnRlZCB8fCBuaWJibGUx
KSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFT
Q0lJSGV4RGlnaXQobmliYmxlMSkpOworICAgICAgICBwcmludGVkID0gdHJ1ZTsKKyAgICB9Cisg
ICAgYXV0byBuaWJibGUyID0gcGllY2UgPj4gNCAmIDB4RjsKKyAgICBpZiAocHJpbnRlZCB8fCBu
aWJibGUyKQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNh
c2VBU0NJSUhleERpZ2l0KG5pYmJsZTIpKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2Vy
TmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHBpZWNlICYgMHhGKSk7Cit9CisKK3ZvaWQg
VVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2KFVSTFBhcnNlcjo6SVB2NkFkZHJlc3MgYWRkcmVzcykK
K3sKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdbJyk7CisgICAgYXV0byBjb21wcmVzc1BvaW50
ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKKyAgICBmb3IgKHNpemVfdCBw
aWVjZSA9IDA7IHBpZWNlIDwgODsgcGllY2UrKykgeworICAgICAgICBpZiAoY29tcHJlc3NQb2lu
dGVyICYmIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpID09IHBpZWNlKSB7CisgICAgICAgICAgICBB
U1NFUlQoIWFkZHJlc3NbcGllY2VdKTsKKyAgICAgICAgICAgIGlmIChwaWVjZSkKKyAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOjoiLCAyKTsKKyAgICAgICAgICAgIHdo
aWxlIChwaWVjZSA8IDggJiYgIWFkZHJlc3NbcGllY2VdKQorICAgICAgICAgICAgICAgIHBpZWNl
Kys7CisgICAgICAgICAgICBpZiAocGllY2UgPT0gOCkKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBzZXJpYWxpemVJUHY2UGllY2UoYWRkcmVzc1twaWVjZV0pOwor
ICAgICAgICBpZiAocGllY2UgPCA3KQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
OicpOworICAgIH0KKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCddJyk7Cit9CisKK2VudW0gY2xh
c3MgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3IgeworICAgIEZhaWx1cmUsCisgICAg
T3ZlcmZsb3csCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorRXhwZWN0
ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6
OnBhcnNlSVB2NFBpZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRv
ciwgYm9vbCYgZGlkU2VlU3ludGF4VmlvbGF0aW9uKQoreworICAgIGVudW0gY2xhc3MgU3RhdGUg
OiB1aW50OF90IHsKKyAgICAgICAgVW5rbm93bkJhc2UsCisgICAgICAgIERlY2ltYWwsCisgICAg
ICAgIE9jdGFsT3JIZXgsCisgICAgICAgIE9jdGFsLAorICAgICAgICBIZXgsCisgICAgfTsKKyAg
ICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpVbmtub3duQmFzZTsKKyAgICBDaGVja2VkPHVpbnQzMl90
LCBSZWNvcmRPdmVyZmxvdz4gdmFsdWUgPSAwOworICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAm
JiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBp
ZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkp
IHsKKyAgICAgICAgaWYgKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpIHsKKyAgICAgICAgICAg
IGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7CisgICAgICAgICAgICArK2l0ZXJhdG9yOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCppdGVyYXRvciA9
PSAnLicpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKKyAgICAgICAgfQorICAgICAgICBz
d2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgU3RhdGU6OlVua25vd25CYXNlOgorICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKCppdGVyYXRvciA9PSAnMCcpKSB7CisgICAgICAgICAgICAgICAg
KytpdGVyYXRvcjsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbE9ySGV4Owor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6RGVjaW1hbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRl
OjpPY3RhbE9ySGV4OgorICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsK
KyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJ3gnIHx8ICppdGVyYXRvciA9PSAnWCcpIHsK
KyAgICAgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OkhleDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6Ok9jdGFsOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU3RhdGU6OkRlY2ltYWw6CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0
b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGllY2VQYXJz
aW5nRXJyb3I6OkZhaWx1cmUpOworICAgICAgICAgICAgdmFsdWUgKj0gMTA7CisgICAgICAgICAg
ICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFs
dWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICArK2l0ZXJh
dG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6Ok9jdGFsOgorICAg
ICAgICAgICAgQVNTRVJUKGRpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgICAgICAgICBpZiAo
Kml0ZXJhdG9yIDwgJzAnIHx8ICppdGVyYXRvciA+ICc3JykKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAg
ICAgICAgIHZhbHVlICo9IDg7CisgICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7
CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpP
dmVyZmxvdyk7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU3RhdGU6OkhleDoKKyAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhW
aW9sYXRpb24pOworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKml0ZXJhdG9yKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKTsKKyAgICAgICAgICAgIHZhbHVlICo9IDE2OworICAgICAgICAgICAgdmFs
dWUgKz0gdG9BU0NJSUhleFZhbHVlKCppdGVyYXRvcik7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICAr
K2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNT
RVJUKCF2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpOworICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQo
KTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDY0X3QgcG93MjU2KHNpemVfdCBleHBv
bmVudCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChleHBvbmVudCA8PSA0KTsKKyAgICB1aW50NjRf
dCB2YWx1ZXNbNV0gPSB7MSwgMjU2LCAyNTYgKiAyNTYsIDI1NiAqIDI1NiAqIDI1NiwgMjU2dWxs
ICogMjU2ICogMjU2ICogMjU2IH07CisgICAgcmV0dXJuIHZhbHVlc1tleHBvbmVudF07Cit9CisK
K2VudW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yIHsKKyAgICBGYWlsdXJlLAor
ICAgIE5vdElQdjQsCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlRm9yU3lu
dGF4VmlvbGF0aW9uLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorRXhwZWN0ZWQ8VVJMUGFyc2Vy
OjpJUHY0QWRkcmVzcywgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6OnBh
cnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZvclN5bnRh
eFZpb2xhdGlvbj4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24sIENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIFZlY3RvcjxFeHBlY3Rl
ZDx1aW50MzJfdCwgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3I+LCA0PiBpdGVtczsK
KyAgICBib29sIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IGZhbHNlOworICAgIGlmICghaXRlcmF0
b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgd2hpbGUgKCFpdGVyYXRvci5h
dEVuZCgpKSB7CisgICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7CisgICAg
ICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOworICAgICAgICAgICAgKytpdGVy
YXRvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChpdGVt
cy5zaXplKCkgPj0gNCkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFy
c2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAgaXRlbXMuYXBwZW5kKHBhcnNlSVB2NFBpZWNl
KGl0ZXJhdG9yLCBkaWRTZWVTeW50YXhWaW9sYXRpb24pKTsKKyAgICAgICAgaWYgKCFpdGVyYXRv
ci5hdEVuZCgpICYmICppdGVyYXRvciA9PSAnLicpIHsKKyAgICAgICAgICAgICsraXRlcmF0b3I7
CisgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlIGlmICgqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgfHwgIWl0ZW1zLnNpemUoKSB8fCBpdGVtcy5z
aXplKCkgPiA0KQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJv
cjo6Tm90SVB2NCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKKyAgICAg
ICAgaWYgKCFpdGVtLmhhc192YWx1ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0UGllY2VQYXJz
aW5nRXJyb3I6OkZhaWx1cmUpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2
NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgaXRl
bSA6IGl0ZW1zKSB7CisgICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9y
KCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdykKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICB9CisgICAg
aWYgKGl0ZW1zLnNpemUoKSA+IDEpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBp
dGVtcy5zaXplKCkgLSAxOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpdGVtc1tpXS52YWx1ZSgp
ID4gMjU1KQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2lu
Z0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaXRlbXNbaXRlbXMu
c2l6ZSgpIC0gMV0udmFsdWUoKSA+PSBwb3cyNTYoNSAtIGl0ZW1zLnNpemUoKSkpCisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKworICAg
IGlmIChkaWRTZWVTeW50YXhWaW9sYXRpb24pCisgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVy
YXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0
ZW0gOiBpdGVtcykgeworICAgICAgICBpZiAoaXRlbS52YWx1ZSgpID4gMjU1KQorICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwor
ICAgIH0KKworICAgIGlmIChVTkxJS0VMWShpdGVtcy5zaXplKCkgIT0gNCkpCisgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKworICAg
IElQdjRBZGRyZXNzIGlwdjQgPSBpdGVtcy50YWtlTGFzdCgpLnZhbHVlKCk7CisgICAgZm9yIChz
aXplX3QgY291bnRlciA9IDA7IGNvdW50ZXIgPCBpdGVtcy5zaXplKCk7ICsrY291bnRlcikKKyAg
ICAgICAgaXB2NCArPSBpdGVtc1tjb3VudGVyXS52YWx1ZSgpICogcG93MjU2KDMgLSBjb3VudGVy
KTsKKyAgICByZXR1cm4gaXB2NDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNp
ZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB1aW50MzJfdCBwaWVjZSA9IDA7CisgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKKyAg
ICBzaXplX3QgZGlnaXRDb3VudCA9IDA7CisgICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7
CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCppdGVyYXRvcikpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgICAgICArK2RpZ2l0Q291bnQ7CisgICAgICAgIGlmICghcGll
Y2UgJiYgKml0ZXJhdG9yID09ICcwJykgeworICAgICAgICAgICAgaWYgKGxlYWRpbmdaZXJvcykK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgbGVhZGlu
Z1plcm9zID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXBpZWNlICYmICppdGVyYXRv
ciA9PSAnMCcpCisgICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICBwaWVj
ZSA9IHBpZWNlICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgIGlmIChwaWVjZSA+IDI1
NSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgICAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAo
Kml0ZXJhdG9yID09ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocGll
Y2UgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJl
dHVybiBwaWVjZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6
b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjRBZGRy
ZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikK
K3sKKyAgICBJUHY0QWRkcmVzcyBhZGRyZXNzID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDQ7ICsraSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGllY2Ug
PSBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoaXRlcmF0b3IpKQorICAgICAgICAgICAgYWRkcmVz
cyA9IChhZGRyZXNzIDw8IDgpICsgcGllY2UudmFsdWUoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKGkgPCAzKSB7CisgICAgICAg
ICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgaWYgKCppdGVyYXRvciAhPSAnLicpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgICAgICB9IGVsc2Ug
aWYgKCFpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9CisgICAgQVNTRVJUKGl0ZXJhdG9yLmF0RW5kKCkpOworICAgIHJldHVybiBhZGRyZXNz
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxV
UkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sKKyAgICBBU1NFUlQoKmMgPT0gJ1snKTsKKyAg
ICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7CisgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwor
ICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBJ
UHY2QWRkcmVzcyBhZGRyZXNzID0ge3swLCAwLCAwLCAwLCAwLCAwLCAwLCAwfX07CisgICAgc2l6
ZV90IHBpZWNlUG9pbnRlciA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNvbXByZXNz
UG9pbnRlcjsKKworICAgIGlmICgqYyA9PSAnOicpIHsKKyAgICAgICAgYWR2YW5jZShjLCBob3N0
QmVnaW4pOworICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgaWYgKCpjICE9ICc6JykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAgKytwaWVj
ZVBvaW50ZXI7CisgICAgICAgIGNvbXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRlcjsKKyAgICB9
CisgICAgCisgICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKHBpZWNlUG9pbnRl
ciA9PSA4KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCpj
ID09ICc6JykgeworICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlcikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVn
aW4pOworICAgICAgICAgICAgKytwaWVjZVBvaW50ZXI7CisgICAgICAgICAgICBjb21wcmVzc1Bv
aW50ZXIgPSBwaWVjZVBvaW50ZXI7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDYgfHwgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVj
ZVBvaW50ZXIgPCA2KSkgeworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8SVB2NEFkZHJl
c3M+IGlwdjRBZGRyZXNzID0gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoYykpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA9PSA1KQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgICAgICAgICAgICAgIGFkZHJlc3NbcGllY2VQ
b2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSA+PiAxNjsKKyAgICAgICAgICAgICAgICBh
ZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgJiAweEZGRkY7Cisg
ICAgICAgICAgICAgICAgYyA9IHsgfTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICB1aW50MTZfdCB2YWx1ZSA9IDA7CisgICAgICAgIHNp
emVfdCBsZW5ndGggPSAwOworICAgICAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOworICAg
ICAgICBmb3IgKDsgbGVuZ3RoIDwgNDsgbGVuZ3RoKyspIHsKKyAgICAgICAgICAgIGlmIChjLmF0
RW5kKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlI
ZXhEaWdpdCgqYykpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoaXNB
U0NJSVVwcGVyKCpjKSkKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2lu
KTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnMCcgJiYgIWxlbmd0aCkKKyAgICAgICAgICAgICAg
ICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAqIDB4MTAg
KyB0b0FTQ0lJSGV4VmFsdWUoKmMpOworICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4p
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkoKHZhbHVlICYmIGxl
YWRpbmdaZXJvcykgfHwgKCF2YWx1ZSAmJiBsZW5ndGggPiAxKSkpCisgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKworICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisr
XSA9IHZhbHVlOworICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCB8fCAqYyAhPSAnOicpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CisgICAg
fQorICAgIAorICAgIGlmICghYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIAorICAgIGlmIChjb21wcmVzc1BvaW50ZXIpIHsKKyAgICAgICAgc2l6ZV90IHN3YXBz
ID0gcGllY2VQb2ludGVyIC0gY29tcHJlc3NQb2ludGVyLnZhbHVlKCk7CisgICAgICAgIHBpZWNl
UG9pbnRlciA9IDc7CisgICAgICAgIHdoaWxlIChzd2FwcykKKyAgICAgICAgICAgIHN0ZDo6c3dh
cChhZGRyZXNzW3BpZWNlUG9pbnRlci0tXSwgYWRkcmVzc1tjb21wcmVzc1BvaW50ZXIudmFsdWUo
KSArIHN3YXBzLS0gLSAxXSk7CisgICAgfSBlbHNlIGlmIChwaWVjZVBvaW50ZXIgIT0gOCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBw
b3NzaWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFkZHJlc3Mp
OworICAgIGlmIChwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikKKyAgICAgICAgcG9zc2libGVDb21w
cmVzc1BvaW50ZXIudmFsdWUoKSsrOworICAgIGlmIChVTkxJS0VMWShjb21wcmVzc1BvaW50ZXIg
IT0gcG9zc2libGVDb21wcmVzc1BvaW50ZXIpKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9z
dEJlZ2luKTsKKyAgICAKKyAgICByZXR1cm4gYWRkcmVzczsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KK1VSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJj
ZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9z
aXRpb24pCit7CisgICAgTENoYXJCdWZmZXIgb3V0cHV0OworICAgIG91dHB1dC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgeworICAgICAgICB1aW50OF90IGJ5dGUgPSBpbnB1dFtpXTsKKyAgICAgICAg
aWYgKGJ5dGUgIT0gJyUnKQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRl
KTsKKyAgICAgICAgZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpIDwgbGVuZ3RoIC0gMikgeworICAg
ICAgICAgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pICYmIGlzQVNDSUlIZXhE
aWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0
ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAgICAgICAgIG91dHB1
dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSAr
IDJdKSk7CisgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgIH0KKyAgICBy
ZXR1cm4gb3V0cHV0OworfQorICAgIAorVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciBVUkxQYXJzZXI6
OnBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAg
IExDaGFyQnVmZmVyIG91dHB1dDsKKyAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShs
ZW5ndGgpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07CisgICAgICAgIGlmIChieXRlICE9ICcl
JykKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAgICAgIGVs
c2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKKyAgICAgICAgICAgIGlmIChp
c0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSAr
IDJdKSkgeworICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhl
eFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7CisgICAgICAgICAgICAgICAgaSAr
PSAyOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tl
ZEFwcGVuZChieXRlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvdXRwdXQudW5jaGVj
a2VkQXBwZW5kKGJ5dGUpOworICAgIH0KKyAgICByZXR1cm4gb3V0cHV0OworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6TENoYXJC
dWZmZXI+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiBkb21haW4sIGNvbnN0
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xh
dGlvblBvc2l0aW9uKQoreworICAgIExDaGFyQnVmZmVyIGFzY2lpOworICAgIGlmIChkb21haW4u
aXNBbGxBU0NJSSgpKSB7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBkb21haW4ubGVuZ3RoKCk7
CisgICAgICAgIGlmIChkb21haW4uaXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0IExDaGFy
KiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnM4KCk7CisgICAgICAgICAgICBhc2NpaS5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlz
QVNDSUlVcHBlcihjaGFyYWN0ZXJzW2ldKSkpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICAgICAgICAg
ICAgICBhc2NpaS51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUxvd2VyKGNoYXJhY3RlcnNbaV0pKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAgYXNjaWku
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShp
c0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgICAgICAg
ICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFzY2lpOworICAgIH0K
KyAgICAKKyAgICBjb25zdCBzaXplX3QgbWF4RG9tYWluTGVuZ3RoID0gNjQ7CisgICAgVUNoYXIg
aG9zdG5hbWVCdWZmZXJbbWF4RG9tYWluTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0g
VV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lO
Rk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlk
bmFfbmFtZVRvQVNDSUkoJmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpLCBTdHJp
bmdWaWV3KGRvbWFpbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGRvbWFpbi5sZW5ndGgoKSwg
aG9zdG5hbWVCdWZmZXIsIG1heERvbWFpbkxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmZXJy
b3IpOworICAgIEFTU0VSVChudW1DaGFyYWN0ZXJzQ29udmVydGVkIDw9IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG1heERvbWFpbkxlbmd0aCkpOworCisgICAgaWYgKFVfU1VDQ0VTUyhlcnJvcikgJiYg
IXByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgeworICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7
IGkgPCBudW1DaGFyYWN0ZXJzQ29udmVydGVkOyArK2kpIHsKKyAgICAgICAgICAgIEFTU0VSVChp
c0FTQ0lJKGhvc3RuYW1lQnVmZmVyW2ldKSk7CisgICAgICAgICAgICBBU1NFUlQoIWlzQVNDSUlV
cHBlcihob3N0bmFtZUJ1ZmZlcltpXSkpOworICAgICAgICB9CisgICAgICAgIGFzY2lpLmFwcGVu
ZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CisgICAgICAgIGlmIChk
b21haW4gIT0gU3RyaW5nVmlldyhhc2NpaS5kYXRhKCksIGFzY2lpLnNpemUoKSkpCisgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7
CisgICAgICAgIHJldHVybiBhc2NpaTsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
K30KKworYm9vbCBVUkxQYXJzZXI6Omhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29uc3QgVVJM
UGFyc2VyOjpMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW4pCit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhc2NpaURvbWFpbi5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoaXNGb3JiaWRk
ZW5Ib3N0Q29kZVBvaW50KGFzY2lpRG9tYWluW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6cGFyc2VQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoKml0ZXJhdG9yID09ICc6Jyk7
CisgICAgYXV0byBjb2xvbkl0ZXJhdG9yID0gaXRlcmF0b3I7CisgICAgYWR2YW5jZShpdGVyYXRv
ciwgY29sb25JdGVyYXRvcik7CisgICAgdWludDMyX3QgcG9ydCA9IDA7CisgICAgaWYgKFVOTElL
RUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBj
dXJyZW50UG9zaXRpb24oY29sb25JdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKKyAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgc2l6
ZV90IGRpZ2l0Q291bnQgPSAwOworICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7CisgICAg
Zm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIGlmIChVTkxJ
S0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBpZiAo
Kml0ZXJhdG9yID09ICcwJyAmJiAhZGlnaXRDb3VudCkKKyAgICAgICAgICAgICAgICBsZWFkaW5n
WmVyb3MgPSB0cnVlOworICAgICAgICAgICAgKytkaWdpdENvdW50OworICAgICAgICAgICAgcG9y
dCA9IHBvcnQgKiAxMCArICppdGVyYXRvciAtICcwJzsKKyAgICAgICAgICAgIGlmIChwb3J0ID4g
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgaWYgKHBvcnQgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICBzeW50YXhWaW9s
YXRpb24oY29sb25JdGVyYXRvcik7CisgICAgCisgICAgaWYgKCFwb3J0ICYmIGRpZ2l0Q291bnQg
PiAxKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisKKyAgICBBU1NF
UlQocG9ydCA9PSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOworICAgIGlmIChVTkxJS0VM
WShkZWZhdWx0UG9ydEZvclByb3RvY29sKHBhcnNlZERhdGFWaWV3KDAsIG1fdXJsLm1fc2NoZW1l
RW5kKSkgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKSkKKyAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgIGVsc2UgeworICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCc6Jyk7CisgICAgICAgIEFTU0VSVChwb3J0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDE2X3Q+OjptYXgoKSk7CisgICAgICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWlu
dDE2X3Q+KHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSk7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgcG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RF
bmQ7CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRMZW5ndGgp
OworICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6
cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRv
cikKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCppdGVyYXRvciA9PSAnWycpIHsKKyAgICAgICAgYXV0byBpcHY2RW5kID0gaXRlcmF0b3I7Cisg
ICAgICAgIHdoaWxlICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2RW5kICE9ICddJykKKyAgICAg
ICAgICAgICsraXB2NkVuZDsKKyAgICAgICAgaWYgKGlwdjZFbmQuYXRFbmQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IHBhcnNlSVB2Nkhv
c3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaXRlcmF0b3IsIGlwdjZFbmQpKSkg
eworICAgICAgICAgICAgc2VyaWFsaXplSVB2NihhZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAg
ICAgaWYgKCFpcHY2RW5kLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGlwdjZF
bmQpOworICAgICAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2RW5kID09
ICc6JykgeworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9z
aXRpb24oaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXB2
NkVuZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmICghbV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAgZm9yICg7
ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50
KCppdGVyYXRvcikgJiYgKml0ZXJhdG9yICE9ICclJykpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJblNpbXBsZUVuY29kZVNl
dD4oaXRlcmF0b3IpOworICAgICAgICB9CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJl
bnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Cisg
ICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAg
fQorICAgIAorICAgIGlmIChMSUtFTFkoIW1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJKSkgewor
ICAgICAgICBhdXRvIGhvc3RJdGVyYXRvciA9IGl0ZXJhdG9yOworICAgICAgICBmb3IgKDsgIWl0
ZXJhdG9yLmF0RW5kKCk7ICsraXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGlmIChpc1RhYk9yTmV3
bGluZSgqaXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
aWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBpZiAoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KCppdGVyYXRvcikpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGF1dG8gYWRkcmVzcyA9IHBhcnNl
SVB2NEhvc3QoaG9zdEl0ZXJhdG9yLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiho
b3N0SXRlcmF0b3IsIGl0ZXJhdG9yKSk7CisgICAgICAgIGlmIChhZGRyZXNzKSB7CisgICAgICAg
ICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgaWYgKGl0
ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAw
OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFk
ZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKDsgaG9zdEl0ZXJhdG9yICE9IGl0ZXJhdG9yOyAr
K2hvc3RJdGVyYXRvcikgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5l
KCpob3N0SXRlcmF0b3IpKSkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0
SXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqaG9zdEl0ZXJhdG9yKSkpCisgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RJdGVyYXRvcik7CisgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqaG9zdEl0ZXJhdG9yKSk7CisgICAgICAg
IH0KKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgaWYgKCFob3N0SXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBw
YXJzZVBvcnQoaG9zdEl0ZXJhdG9yKTsKKyAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGN1
cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIAorICAgIGNvbnN0IGF1dG8gaG9zdEJlZ2luID0gaXRlcmF0b3I7CisgICAgCisgICAg
TENoYXJCdWZmZXIgdXRmOEVuY29kZWQ7CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyAr
K2l0ZXJhdG9yKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0
b3IpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKml0ZXJhdG9yID09ICc6JykK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUkoKml0ZXJh
dG9yKSkpCisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKworICAgICAg
ICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKCppdGVyYXRvcikpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOworICAgICAgICBp
bnQzMl90IG9mZnNldCA9IDA7CisgICAgICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZz
ZXQsICppdGVyYXRvcik7CisgICAgICAgIHV0ZjhFbmNvZGVkLmFwcGVuZChidWZmZXIsIG9mZnNl
dCk7CisgICAgfQorICAgIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29k
ZSh1dGY4RW5jb2RlZC5kYXRhKCksIHV0ZjhFbmNvZGVkLnNpemUoKSwgaG9zdEJlZ2luKTsKKyAg
ICBTdHJpbmcgZG9tYWluID0gU3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCks
IHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CisgICAgaWYgKGRvbWFpbi5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhwZXJjZW50RGVj
b2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSkpCisgICAgICAgIHN5bnRheFZpb2xh
dGlvbihob3N0QmVnaW4pOworICAgIGF1dG8gYXNjaWlEb21haW4gPSBkb21haW5Ub0FTQ0lJKCpk
b21haW4uaW1wbCgpLCBob3N0QmVnaW4pOworICAgIGlmICghYXNjaWlEb21haW4gfHwgaGFzRm9y
YmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbi52YWx1ZSgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIExDaGFyQnVmZmVyJiBhc2NpaURvbWFpblZhbHVlID0gYXNjaWlEb21haW4u
dmFsdWUoKTsKKyAgICBjb25zdCBMQ2hhciogYXNjaWlEb21haW5DaGFyYWN0ZXJzID0gYXNjaWlE
b21haW5WYWx1ZS5kYXRhKCk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRIb3N0KGhv
c3RCZWdpbiwgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+KGFzY2lpRG9tYWluVmFsdWUuYmVnaW4o
KSwgYXNjaWlEb21haW5WYWx1ZS5lbmQoKSkpOworICAgIGlmIChhZGRyZXNzKSB7CisgICAgICAg
IHNlcmlhbGl6ZUlQdjQoYWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5k
KCkpIHsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9y
KTsKKyAgICB9CisgICAgaWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpG
YWlsdXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KGFzY2lpRG9tYWluQ2hhcmFjdGVycywgYXNjaWlEb21haW5WYWx1ZS5zaXplKCkpOworICAgIG1f
dXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgaWYgKCFpdGVy
YXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsKKyAgICBt
X3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgIHJldHVybiB0cnVlOworfQorCitzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCit7
CisgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJzaW9uKTsKKyAgICBpZiAo
dXRmOC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBhdXRvIHBl
cmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7Cit9CisK
Ky8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmxlbmNvZGVkLXBhcnNl
cgorYXV0byBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyBpbnB1dCkg
LT4gVVJMRW5jb2RlZEZvcm0KK3sKKyAgICBVUkxFbmNvZGVkRm9ybSBvdXRwdXQ7CisgICAgZm9y
IChTdHJpbmdWaWV3IGJ5dGVzIDogaW5wdXQuc3BsaXQoJyYnKSkgeworICAgICAgICBhdXRvIGVx
dWFsSW5kZXggPSBieXRlcy5maW5kKCc9Jyk7CisgICAgICAgIGlmIChlcXVhbEluZGV4ID09IG5v
dEZvdW5kKSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVjb2RlKGJ5dGVzLnRv
U3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKKyAgICAgICAgICAgIGlmIChuYW1lKQorICAg
ICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIGVtcHR5U3RyaW5nKCkg
fSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVj
b2RlKGJ5dGVzLnN1YnN0cmluZygwLCBlcXVhbEluZGV4KS50b1N0cmluZygpLnJlcGxhY2UoJysn
LCAweDIwKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gZm9ybVVSTERlY29kZShieXRlcy5z
dWJzdHJpbmcoZXF1YWxJbmRleCArIDEpLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsK
KyAgICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVlKQorICAgICAgICAgICAgICAgIG91dHB1dC5h
cHBlbmQoeyBuYW1lLnZhbHVlKCksIHZhbHVlLnZhbHVlKCkgfSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworc3RhdGljIHZvaWQgc2VyaWFsaXplVVJMRW5jb2Rl
ZEZvcm0oY29uc3QgU3RyaW5nJiBpbnB1dCwgVmVjdG9yPExDaGFyPiYgb3V0cHV0KQoreworICAg
IGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CisgICAgY29uc3QgY2hh
ciogZGF0YSA9IHV0ZjguZGF0YSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXRmOC5s
ZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IGNoYXIgYnl0ZSA9IGRhdGFbaV07CisgICAg
ICAgIGlmIChieXRlID09IDB4MjApCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDB4MkIpOwor
ICAgICAgICBlbHNlIGlmIChieXRlID09IDB4MkEKKyAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgy
RAorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDJFCisgICAgICAgICAgICB8fCAoYnl0ZSA+PSAw
eDMwICYmIGJ5dGUgPD0gMHgzOSkKKyAgICAgICAgICAgIHx8IChieXRlID49IDB4NDEgJiYgYnl0
ZSA8PSAweDVBKQorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDVGCisgICAgICAgICAgICB8fCAo
Ynl0ZSA+PSAweDYxICYmIGJ5dGUgPD0gMHg3QSkpIC8vIEZJWE1FOiBQdXQgdGhlc2UgaW4gdGhl
IGNoYXJhY3RlckNsYXNzVGFibGUgdG8gYXZvaWQgYnJhbmNoZXMuCisgICAgICAgICAgICBvdXRw
dXQuYXBwZW5kKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwZXJjZW50RW5jb2Rl
Qnl0ZShieXRlLCBvdXRwdXQpOworICAgIH0KK30KKyAgICAKK1N0cmluZyBVUkxQYXJzZXI6OnNl
cmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYgdHVwbGVzKQoreworICAgIGlmICh0dXBsZXMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPExDaGFyPiBvdXRw
dXQ7CisgICAgZm9yIChhdXRvJiB0dXBsZSA6IHR1cGxlcykgeworICAgICAgICBpZiAoIW91dHB1
dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCcmJyk7CisgICAgICAgIHNl
cmlhbGl6ZVVSTEVuY29kZWRGb3JtKHR1cGxlLmtleSwgb3V0cHV0KTsKKyAgICAgICAgb3V0cHV0
LmFwcGVuZCgnPScpOworICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS52YWx1
ZSwgb3V0cHV0KTsKKyAgICB9CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShvdXRw
dXQpKTsKK30KKworY29uc3QgVUlETkEmIFVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5h
bWVUcmFuc2NvZGVyKCkKK3sKKyAgICBzdGF0aWMgVUlETkEqIGVuY29kZXI7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7CisgICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIC8v
IFdhcm5pbmc6IFBsZWFzZSBjb250YWN0IGEgV2ViS2l0R1RLKyBkZXZlbG9wZXIgaWYgY2hhbmdp
bmcgdGhlc2UgZmxhZ3MuCisgICAgICAgIC8vIFRoZXkgc2hvdWxkIGJlIHN5bmNlZCB3aXRoIGVw
aHlfdXJpX2RlY29kZSgpIGluIGVwaHktdXJpLWhlbHBlcnMuYy4KKyAgICAgICAgZW5jb2RlciA9
IHVpZG5hX29wZW5VVFM0NihVSUROQV9DSEVDS19CSURJIHwgVUlETkFfQ0hFQ0tfQ09OVEVYVEog
fCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fVU5JQ09ERSB8IFVJRE5BX05PTlRSQU5TSVRJT05B
TF9UT19BU0NJSSwgJmVycm9yKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoVV9TVUNDRVNTKGVy
cm9yKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuY29kZXIpOworICAgIH0pOworICAgIHJl
dHVybiAqZW5jb2RlcjsKK30KKworYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFsKGNvbnN0
IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIFVSTF9QQVJTRVJfTE9HKCIlZCAlZCAlZCAl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlc1xuJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJXMiLAorICAgICAgICBhLm1faXNWYWxpZCwKKyAgICAgICAgYS5tX2Nhbm5vdEJl
QUJhc2VVUkwsCisgICAgICAgIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAorICAgICAgICBh
Lm1fc2NoZW1lRW5kLAorICAgICAgICBhLm1fdXNlclN0YXJ0LAorICAgICAgICBhLm1fdXNlckVu
ZCwKKyAgICAgICAgYS5tX3Bhc3N3b3JkRW5kLAorICAgICAgICBhLm1faG9zdEVuZCwKKyAgICAg
ICAgYS5tX2hvc3RFbmQgKyBhLm1fcG9ydExlbmd0aCwKKyAgICAgICAgYS5tX3BhdGhBZnRlckxh
c3RTbGFzaCwKKyAgICAgICAgYS5tX3BhdGhFbmQsCisgICAgICAgIGEubV9xdWVyeUVuZCwKKyAg
ICAgICAgYS5tX3N0cmluZy51dGY4KCkuZGF0YSgpLAorICAgICAgICBiLm1faXNWYWxpZCwKKyAg
ICAgICAgYi5tX2Nhbm5vdEJlQUJhc2VVUkwsCisgICAgICAgIGIubV9wcm90b2NvbElzSW5IVFRQ
RmFtaWx5LAorICAgICAgICBiLm1fc2NoZW1lRW5kLAorICAgICAgICBiLm1fdXNlclN0YXJ0LAor
ICAgICAgICBiLm1fdXNlckVuZCwKKyAgICAgICAgYi5tX3Bhc3N3b3JkRW5kLAorICAgICAgICBi
Lm1faG9zdEVuZCwKKyAgICAgICAgYi5tX2hvc3RFbmQgKyBiLm1fcG9ydExlbmd0aCwKKyAgICAg
ICAgYi5tX3BhdGhBZnRlckxhc3RTbGFzaCwKKyAgICAgICAgYi5tX3BhdGhFbmQsCisgICAgICAg
IGIubV9xdWVyeUVuZCwKKyAgICAgICAgYi5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKKworICAg
IHJldHVybiBhLm1fc3RyaW5nID09IGIubV9zdHJpbmcKKyAgICAgICAgJiYgYS5tX2lzVmFsaWQg
PT0gYi5tX2lzVmFsaWQKKyAgICAgICAgJiYgYS5tX2Nhbm5vdEJlQUJhc2VVUkwgPT0gYi5tX2Nh
bm5vdEJlQUJhc2VVUkwKKyAgICAgICAgJiYgYS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPT0g
Yi5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkKKyAgICAgICAgJiYgYS5tX3NjaGVtZUVuZCA9PSBi
Lm1fc2NoZW1lRW5kCisgICAgICAgICYmIGEubV91c2VyU3RhcnQgPT0gYi5tX3VzZXJTdGFydAor
ICAgICAgICAmJiBhLm1fdXNlckVuZCA9PSBiLm1fdXNlckVuZAorICAgICAgICAmJiBhLm1fcGFz
c3dvcmRFbmQgPT0gYi5tX3Bhc3N3b3JkRW5kCisgICAgICAgICYmIGEubV9ob3N0RW5kID09IGIu
bV9ob3N0RW5kCisgICAgICAgICYmIGEubV9wb3J0TGVuZ3RoID09IGIubV9wb3J0TGVuZ3RoCisg
ICAgICAgICYmIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gYi5tX3BhdGhBZnRlckxhc3RTbGFz
aAorICAgICAgICAmJiBhLm1fcGF0aEVuZCA9PSBiLm1fcGF0aEVuZAorICAgICAgICAmJiBhLm1f
cXVlcnlFbmQgPT0gYi5tX3F1ZXJ5RW5kOworfQorCitib29sIFVSTFBhcnNlcjo6aW50ZXJuYWxW
YWx1ZXNDb25zaXN0ZW50KGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVybiB1cmwubV9zY2hl
bWVFbmQgPD0gdXJsLm1fdXNlclN0YXJ0CisgICAgICAgICYmIHVybC5tX3VzZXJTdGFydCA8PSB1
cmwubV91c2VyRW5kCisgICAgICAgICYmIHVybC5tX3VzZXJFbmQgPD0gdXJsLm1fcGFzc3dvcmRF
bmQKKyAgICAgICAgJiYgdXJsLm1fcGFzc3dvcmRFbmQgPD0gdXJsLm1faG9zdEVuZAorICAgICAg
ICAmJiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aCA8PSB1cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2gKKyAgICAgICAgJiYgdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IHVybC5tX3Bh
dGhFbmQKKyAgICAgICAgJiYgdXJsLm1fcGF0aEVuZCA8PSB1cmwubV9xdWVyeUVuZAorICAgICAg
ICAmJiB1cmwubV9xdWVyeUVuZCA8PSB1cmwubV9zdHJpbmcubGVuZ3RoKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmggYi9T
b3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTI1YjU0MDIyMzQwYTllODhi
ZWQ4Y2NmMTcwMDM5Mjc3N2ZlNzJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
VVJMUGFyc2VyLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKK3N0cnVjdCBVSUROQTsKKworbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQb2ludEl0
ZXJhdG9yOworCitjbGFzcyBVUkxQYXJzZXIgeworcHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaW50ZXJuYWxWYWx1ZXNDb25zaXN0
ZW50KGNvbnN0IFVSTCYpOworICAgIAorICAgIHVzaW5nIFVSTEVuY29kZWRGb3JtID0gVmVjdG9y
PFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj47CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBVUkxFbmNvZGVkRm9ybSBwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBV
UkxFbmNvZGVkRm9ybSYpOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlz
U3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF5YmVDYW5vbmljYWxpemVTY2hlbWUo
Y29uc3QgU3RyaW5nJiBzY2hlbWUpOworCisgICAgc3RhdGljIGNvbnN0IFVJRE5BJiBpbnRlcm5h
dGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBpc0luVXNlcklu
Zm9FbmNvZGVTZXQoVUNoYXIpOworCitwcml2YXRlOgorICAgIFVSTFBhcnNlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7
CisgICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9CisKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKKyAg
ICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChT
dHJpbmdWaWV3KTsKKyAgICBmcmllbmQgY2xhc3MgVVJMOworCisgICAgVVJMIG1fdXJsOworICAg
IFZlY3RvcjxMQ2hhcj4gbV9hc2NpaUJ1ZmZlcjsKKyAgICBib29sIG1fdXJsSXNTcGVjaWFsIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fdXJsSXNGaWxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1faG9z
dEhhc1BlcmNlbnRPck5vbkFTQ0lJIHsgZmFsc2UgfTsKKyAgICBTdHJpbmcgbV9pbnB1dFN0cmlu
ZzsKKyAgICBjb25zdCB2b2lkKiBtX2lucHV0QmVnaW4geyBudWxscHRyIH07CisKKyAgICBib29s
IG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZSA9IDIwNDg7CisgICAgdXNpbmcgTENoYXJC
dWZmZXIgPSBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPjsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2UoY29uc3QgQ2hhcmFjdGVy
VHlwZSosIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVVJMJiwgY29uc3QgVVJMVGV4dEVu
Y29kaW5nKik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBwYXJz
ZUF1dGhvcml0eShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBib29sIHBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYp
OworCisgICAgdm9pZCBmYWlsdXJlKCk7CisgICAgZW51bSBjbGFzcyBSZXBvcnRTeW50YXhWaW9s
YXRpb24geyBObywgWWVzIH07CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwg
UmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZpb2xhdGlvbiA9IFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6WWVzPgorICAgIHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3IpIHsgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCByZXBvcnRTeW50
YXhWaW9sYXRpb24+KGl0ZXJhdG9yLCBpdGVyYXRvcik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9s
YXRpb246Olllcz4KKyAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JG
b3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gYm9vbCB0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZv
aWQgc3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1BlcmNlbnRF
bmNvZGVkRG90KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzV2luZG93c0RyaXZlTGV0dGVyKENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBib29sIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJv
b2wgaXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
Pik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBzaG91bGRDb3B5
RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBjaGVja0xvY2FsaG9zdENvZGVQb2ludChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIFVDaGFyMzIpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPik7CisgICAgYm9vbCBpc0xvY2FsaG9zdChTdHJpbmdWaWV3KTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVTaW5nbGVEb3RQ
YXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29uc3VtZURvdWJsZURvdFBhdGhTZWdt
ZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzaXplX3QgY3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2Vy
VHlwZT4gdm9pZCBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdlclR5cGUp
OworICAgIHRlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gdm9pZCB1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHZvaWQgdXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25h
bDxMQ2hhckJ1ZmZlcj4gZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRp
b24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExDaGFyQnVmZmVyIHBl
cmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAg
ICBzdGF0aWMgTENoYXJCdWZmZXIgcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCk7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBmb3JtVVJMRGVjb2RlKFN0cmluZ1Zp
ZXcgaW5wdXQpOworICAgIHN0YXRpYyBib29sIGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29u
c3QgTENoYXJCdWZmZXImKTsKKyAgICB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QpOwor
ICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyKTsKKyAgICB2b2lkIGFwcGVuZFRv
QVNDSUlCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmRUb0FT
Q0lJQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNoYXJhY3RlcnMpLCBzaXpl
KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgZW5jb2RlTm9u
VVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIHNvdXJjZSwgY29uc3QgVVJMVGV4dEVuY29k
aW5nJiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHZvaWQgY29weUFT
Q0lJU3RyaW5nVW50aWwoY29uc3QgU3RyaW5nJiwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBj
b3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmKTsKKyAgICBTdHJpbmdWaWV3IHBh
cnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCk7CisgICAgVUNoYXIgcGFy
c2VkRGF0YVZpZXcoc2l6ZV90IHBvc2l0aW9uKTsKKworICAgIHVzaW5nIElQdjRBZGRyZXNzID0g
dWludDMyX3Q7CisgICAgdm9pZCBzZXJpYWxpemVJUHY0KElQdjRBZGRyZXNzKTsKKyAgICBlbnVt
IGNsYXNzIElQdjRQYXJzaW5nRXJyb3I7CisgICAgZW51bSBjbGFzcyBJUHY0UGllY2VQYXJzaW5n
RXJyb3I7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xh
dGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8SVB2NEFkZHJlc3MsIElQdjRQ
YXJzaW5nRXJyb3I+IHBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbj4mLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8dWlu
dDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRQaWVjZShD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xhdGlvbik7
CisgICAgdXNpbmcgSVB2NkFkZHJlc3MgPSBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PjsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQdjZBZGRyZXNz
PiBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBw
YXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQ
djRBZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPik7CisgICAgdm9pZCBzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGll
Y2UpOworICAgIHZvaWQgc2VyaWFsaXplSVB2NihJUHY2QWRkcmVzcyk7CisKKyAgICBlbnVtIGNs
YXNzIFVSTFBhcnQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBj
b3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQsIGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYpOworICAg
IHN0YXRpYyBzaXplX3QgdXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYsIFVSTFBhcnQpOwor
ICAgIHZvaWQgcG9wUGF0aCgpOworICAgIGJvb2wgc2hvdWxkUG9wUGF0aCh1bnNpZ25lZCk7Cit9
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY2NjVhOGQwZmZi
OTYzNDkyMDY0NTMxNzA1YmMxY2I5MzNiYjc4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCisKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKworUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCit7CisgICAgLy8gTk9U
RTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29t
cHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAvLyAoZS5n
IGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9s
ZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCisgICAgLy8gY291bGQgZWl0
aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGlu
ZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjaworICAgIC8vIG9udG8gdXNpbmcgSVNP
IExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCisgICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXN1bHQg
PSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGJh
c2VVUkwsIHRydWUpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRD
RihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGJhc2VV
UkwsIHRydWUpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIGdldFVSTEJ5dGVzKENG
VVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQoreworICAgIENGSW5kZXggYnl0ZXNM
ZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7CisgICAgcmVzdWx0LnJlc2l6ZShieXRl
c0xlbmd0aCk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCBy
ZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVuZ3RoKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRlc0xlbmd0aCk7
Cit9CisKK3ZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiByZXN1bHQpCit7
CisgICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKKyAg
ICBjaGFyKiBieXRlczsKKyAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGJ5
dGVzTGVuZ3RoLCBieXRlcyk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0
ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7Cisg
ICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5ndGgp
OworfQorCitib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25zdCBVUkwm
IHVybCkKK3sKKyAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CisKKyAg
ICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCisgICAgICAgIHJl
dHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsKKwor
ICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5dGVzKTsK
KyAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5zaXplKCkpIH07
CisKKyAgICBpZiAoIXVybC5oYXNQYXRoKCkpCisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3IHsg
dXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7CisKKyAgICBhdXRvIHVybFdpdGhvdXRQYXRo
ID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwucGF0aFN0YXJ0
KCkgKyAxKTsKKyAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxXaXRob3V0UGF0
aCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhYzQ5YzNmMzdm
NjUwMGU5NjNhZWQ1YjA0ZDA5OGYzODUxZjBlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIENGVVJMRXh0cmFzX2gKKyNkZWZpbmUgQ0ZVUkxFeHRyYXNfaAorCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVVJMOwordHlwZWRlZiBWZWN0
b3I8Y2hhciwgNTEyPiBVUkxDaGFyQnVmZmVyOworCitXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWlu
UHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwg
Q0ZVUkxSZWYgYmFzZVVSTCA9IDApOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0VVJMQnl0
ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGdl
dFVSTEJ5dGVzKENGVVJMUmVmLCBDU3RyaW5nJik7CisKK2Jvb2wgaXNDRlVSTFNhbWVPcmlnaW4o
Q0ZVUkxSZWYsIGNvbnN0IFVSTCYpOworCit9CisKKyNlbmRpZiAvLyBDRlVSTEV4dHJhc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9j
Zi9VUkxDRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk1OTFlMmIzODRlYmIyMDZkNTIyMjdlYzljYmY5ZTc1
ZDk1ODI1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcApA
QCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisKKyNpbmNsdWRlICJDRlVSTEV4dHJhcy5oIgorI2luY2x1ZGUgIlVSTFBhcnNlci5oIgor
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworVVJMOjpVUkwoQ0ZVUkxSZWYgdXJsKQorewor
ICAgIGlmICghdXJsKSB7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhl
cmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAgICBnZXRVUkxCeXRlcyh1cmwsIHVybEJ5dGVz
KTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKHVybEJ5dGVzLmRhdGEoKSk7CisgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Cit9CisKKyNpZiAhVVNFKEZPVU5EQVRJT04pCitSZXRhaW5QdHI8Q0ZV
UkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBXaGF0IHNo
b3VsZCB0aGlzIHJldHVybiBmb3IgaW52YWxpZCBVUkxzPworICAgIC8vIEN1cnJlbnRseSBpdCB0
aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5n
IGluIHRoYXQgY2FzZSwKKyAgICAvLyB3aGljaCBpcyBjbGVhcmx5IHdyb25nLgorICAgIFVSTENo
YXJCdWZmZXIgYnVmZmVyOworICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOworICAgIGF1dG8gY2ZV
UkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CisKKyAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NGVVJMU2FtZU9yaWdp
bihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBjZlVSTDsKK30KKyNlbmRpZgorCitTdHJpbmcgVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNv
bnN0Cit7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTCA9IGNyZWF0ZUNGVVJMKCk7Cisg
ICAgaWYgKCFjZlVSTCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisjaWYgUExBVEZPUk0o
V0lOKQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5
bGU7CisjZWxzZQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0
aFN0eWxlOworI2VuZGlmCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBh
dGgoY2ZVUkwuZ2V0KCksIHBhdGhTdHlsZSkpLmdldCgpOworfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TlNVUkxFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQzMmU0YjMzZDI0ODdkYjcwZmY0ZDM5YjBiZDQz
ZTlmODlhYTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxF
eHRyYXMuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3
LCAyMDEyLCAyMDE0IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAY2xhc3MgTlNTdHJpbmc7CitA
Y2xhc3MgTlNVUkw7CisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNT
dHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopOworV1RGX0VYUE9SVF9QUklWQVRFIE5T
VVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsg
Ly8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBO
U1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICopOworV1RGX0VYUE9SVF9QUklWQVRF
IE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsgLy8gUmV0dXJuIHZhbHVlIG9m
IG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAqZW5jb2RlSG9z
dE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCitX
VEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9y
ZUNvbXBvbmVudChOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOworV1RGX0VYUE9SVF9QUklW
QVRFIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKiwgTlNVUkwgKmJhc2VVUkwpOworV1RGX0VY
UE9SVF9QUklWQVRFIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOworV1RGX0VYUE9S
VF9QUklWQVRFIE5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKiwgQ0ZVUkxD
b21wb25lbnRUeXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJMV2l0aFVzZXJUeXBl
ZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOworCitOU1Jhbmdl
IHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgQk9PTCBp
c1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICopOworV1RGX0VYUE9SVF9QUklWQVRFIEJPT0wgbG9v
a3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKik7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmZjOGYxNjhkZTA1NmM1YjJh
Mjk3MjFmMGJkN2I5ZjZmMTIzNDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
Y29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTAsMCArMSwxMjM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0ICJOU1VS
TEV4dHJhcy5oIgorCisjaW1wb3J0ICJDRlVSTEV4dHJhcy5oIgorI2ltcG9ydCAiVVJMUGFyc2Vy
LmgiCisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi9IZXhOdW1iZXIuaD4K
KyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgor
I2ltcG9ydCA8dW5pY29kZS91aWRuYS5oPgorI2ltcG9ydCA8dW5pY29kZS91c2NyaXB0Lmg+CisK
Ky8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBuYW1lLgor
Ly8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSUROIGVuY29k
aW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgorI2RlZmluZSBIT1NUX05BTUVfQlVG
RkVSX0xFTkdUSCAyMDQ4CisjZGVmaW5lIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIIDIwNDgKKwor
dHlwZWRlZiB2b2lkICgqIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uKShOU1N0cmluZyAqLCBO
U1JhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+Jik7CisKK3N0YXRpYyB1aW50MzJfdCBJ
RE5TY3JpcHRXaGl0ZUxpc3RbKFVTQ1JJUFRfQ09ERV9MSU1JVCArIDMxKSAvIDMyXTsKKworbmFt
ZXNwYWNlIFdURiB7CisKK3N0YXRpYyBib29sIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIo
VUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgcmV0dXJuIGNvZGVQb2ludCA9PSAweDA1NDggfHwg
Y29kZVBvaW50ID09IDB4MDU0RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQb2ludCA9
PSAweDA1N0Q7Cit9CisKK3N0YXRpYyBib29sIGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoVUNo
YXIzMiBjb2RlUG9pbnQpCit7CisgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsK
KyAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjb2RlUG9pbnQsICZl
cnJvcik7CisgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgeworICAgICAgICBMT0dfRVJS
T1IoImdvdCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBl
cnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gc2NyaXB0
ID09IFVTQ1JJUFRfQVJNRU5JQU47Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2hhcmFj
dGVyVHlwZSBjaGFyQ29kZSkKK3sKKyAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24o
Y2hhckNvZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGluZ3MgdGhlIFVS
TCBQYXJzZXIgcmVqZWN0czoKKyAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7CisgICAgY2FzZSAnIyc6
CisgICAgY2FzZSAnJSc6CisgICAgY2FzZSAnLyc6CisgICAgY2FzZSAnOic6CisgICAgY2FzZSAn
Pyc6CisgICAgY2FzZSAnQCc6CisgICAgY2FzZSAnWyc6CisgICAgY2FzZSAnXFwnOgorICAgIGNh
c2UgJ10nOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorfQorCisKKworc3RhdGljIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0
ZXIoc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjaGFy
Q29kZSkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVu
c2FmZSwgbG9va2FsaWtlIGNoYXJhY3RlcnM6CisgICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hh
cmFjdGVyLCBhbnkgY2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKKyAgICAvLyBh
bnkgaWdub3JhYmxlIGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBs
b2Nrcy4KKyAgICAKKyAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4g
TW96aWxsYSdzIGJsYWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklE
Ti5ibGFja2xpc3RfY2hhcnM+LgorCisgICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVycyBoZXJl
IHdpbGwgbmV2ZXIgYXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgorICAgIC8vIEZvciBleGFt
cGxlLCBJQ1UgdHJhbnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNlIGFuZCBt
b3N0CisgICAgLy8gc2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUgb2YgdGhl
IHR3byBjYWxsZXJzIHVzZXMgdGhpcworICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBoYXZlIG5v
dCBiZWVuIHByb2Nlc3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgorICAgIAor
ICAgIGlmICghdV9pc3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hhckNvZGUp
IHx8IHVfaGFzQmluYXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxF
X0NPREVfUE9JTlQpKQorICAgICAgICByZXR1cm4gWUVTOworICAgIAorICAgIHN3aXRjaCAoY2hh
ckNvZGUpIHsKKyAgICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVB
UlRFUiAqLworICAgICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxG
ICovCisgICAgICAgIGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRF
UlMgKi8KKyAgICAgICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEgg
QUNVVEUgKi8KKyAgICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBSRVRST0ZMRVgg
Q0xJQ0sgKi8KKyAgICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBBTFBI
QSAqLworICAgICAgICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBH
ICovCisgICAgICAgIGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJQU5HVUxBUiBD
T0xPTiAqLworICAgICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JUIFNUUk9LRSBP
VkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQgU09MSURV
UyBPVkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcgTE9ORyBTT0xJ
RFVTIE9WRVJMQVkgKi8KKyAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZVTEwgU1RP
UCAqLworICAgICAgICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICovCisgICAg
ICAgIGNhc2UgMHgwNUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRICovCisgICAg
ICAgIGNhc2UgMHgwNUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRICovCisgICAg
ICAgIGNhc2UgMHgwNUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICovCisgICAg
ICAgIGNhc2UgMHgwNjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04gKi8KKyAgICAg
ICAgY2FzZSAweDA2MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJR04gKi8K
KyAgICAgICAgY2FzZSAweDA2NTA6IC8qIEFSQUJJQyBLQVNSQSAqLworICAgICAgICBjYXNlIDB4
MDY2MDogLyogQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KKyAgICAgICAgY2FzZSAweDA2NkE6
IC8qIEFSQUJJQyBQRVJDRU5UIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDA2RDQ6IC8qIEFSQUJJ
QyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDA2RjA6IC8qIEVYVEVOREVEIEFSQUJJQyBJ
TkRJQyBESUdJVCBaRVJPICovCisgICAgICAgIGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMgU1VQUkFM
SU5FQVIgRlVMTCBTVE9QICovCisgICAgICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMgU1VCTElO
RUFSIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MDcwMzogLyogU1lSSUFDIFNVUFJBTElO
RUFSIENPTE9OICovCisgICAgICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJQUMgU1VCTElORUFSIENP
TE9OICovCisgICAgICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQVU5DVFVB
VElPTiAqLworICAgICAgICBjYXNlIDB4MUQwNDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgQyAqLworICAgICAgICBjYXNlIDB4MUQwRjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgTyAqLworICAgICAgICBjYXNlIDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgVSAqLworICAgICAgICBjYXNlIDB4MUQyMDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgViAqLworICAgICAgICBjYXNlIDB4MUQyMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgVyAqLworICAgICAgICBjYXNlIDB4MUQyMjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgWiAqLworICAgICAgICBjYXNlIDB4MUVDRDogLyogTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lU
SCBET1QgQkVMT1cgKi8KKyAgICAgICAgY2FzZSAweDIwMTA6IC8qIEhZUEhFTiAqLworICAgICAg
ICBjYXNlIDB4MjAxMTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLworICAgICAgICBjYXNlIDB4
MjAyNDogLyogT05FIERPVCBMRUFERVIgKi8KKyAgICAgICAgY2FzZSAweDIwMjc6IC8qIEhZUEhF
TkFUSU9OIFBPSU5UICovCisgICAgICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVGVC1QT0lO
VElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4MjAzQTogLyogU0lO
R0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICovCisgICAgICAgIGNhc2Ug
MHgyMDQxOiAvKiBDQVJFVCBJTlNFUlRJT04gUE9JTlQgKi8KKyAgICAgICAgY2FzZSAweDIwNDQ6
IC8qIEZSQUNUSU9OIFNMQVNIICovCisgICAgICAgIGNhc2UgMHgyMDUyOiAvKiBDT01NRVJDSUFM
IE1JTlVTIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFDVElPTiBP
TkUgVEhJUkQgKi8KKyAgICAgICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08g
VEhJUkRTICovCisgICAgICAgIGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEZJ
RlRIICovCisgICAgICAgIGNhc2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRI
UyAqLworICAgICAgICBjYXNlIDB4MjE1NzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRI
UyAqLworICAgICAgICBjYXNlIDB4MjE1ODogLyogVlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhT
ICovCisgICAgICAgIGNhc2UgMHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIICov
CisgICAgICAgIGNhc2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhUSFMgKi8K
KyAgICAgICAgY2FzZSAweDIxNUI6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFQgKi8KKyAg
ICAgICAgY2FzZSAweDIxNUM6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhTICovCisg
ICAgICAgIGNhc2UgMHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTICovCisg
ICAgICAgIGNhc2UgMHgyMTVFOiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRIUyAqLwor
ICAgICAgICBjYXNlIDB4MjE1RjogLyogRlJBQ1RJT04gTlVNRVJBVE9SIE9ORSAqLworICAgICAg
ICBjYXNlIDB4MjIxMjogLyogTUlOVVMgU0lHTiAqLworICAgICAgICBjYXNlIDB4MjIxNTogLyog
RElWSVNJT04gU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDIyMTY6IC8qIFNFVCBNSU5VUyAqLwor
ICAgICAgICBjYXNlIDB4MjIzNjogLyogUkFUSU8gKi8KKyAgICAgICAgY2FzZSAweDIzM0Y6IC8q
IEFQTCBGVU5DVElPTkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KKyAgICAgICAgY2FzZSAweDIzQUU6
IC8qIElOVEVHUkFMIEVYVEVOU0lPTiAqLworICAgICAgICBjYXNlIDB4MjQ0QTogLyogT0NSIERP
VUJMRSBCQUNLU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlUeXBlOjpC
b3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLwor
ICAgICAgICBjYXNlIDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBE
SUFHT05BTCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUICovCisgICAgICAgIGNhc2UgMHgyOUY2
OiAvKiBTT0xJRFVTIFdJVEggT1ZFUkJBUiAqLworICAgICAgICBjYXNlIDB4MjlGODogLyogQklH
IFNPTElEVVMgKi8KKyAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFS
WSBSRUxBVElPTiAqLworICAgICAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BF
UkFUT1IgKi8KKyAgICAgICAgY2FzZSAweDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9O
IENIQVJBQ1RFUiBMRUZUIFRPIFJJR0hUICovCisgICAgICAgIGNhc2UgMHgyRkYxOiAvKiBJREVP
R1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KKyAgICAgICAg
Y2FzZSAweDJGRjI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRP
IE1JRERMRSBBTkQgUklHSFQgKi8KKyAgICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9HUkFQSElD
IERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICovCisgICAg
ICAgIGNhc2UgMHgyRkY0OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVM
TCBTVVJST1VORCAqLworICAgICAgICBjYXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJ
UFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQUJPVkUgKi8KKyAgICAgICAgY2FzZSAweDJG
RjY6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJF
TE9XICovCisgICAgICAgIGNhc2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBD
SEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMRUZUICovCisgICAgICAgIGNhc2UgMHgyRkY4OiAvKiBJ
REVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZU
ICovCisgICAgICAgIGNhc2UgMHgyRkY5OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFS
QUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBSSUdIVCAqLworICAgICAgICBjYXNlIDB4MkZGQTog
LyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIg
TEVGVCAqLworICAgICAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04g
Q0hBUkFDVEVSIE9WRVJMQUlEICovCisgICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVPR1JBUEhJ
QyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUgQlJBQ0tF
VCAqLworICAgICAgICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VU
ICovCisgICAgICAgIGNhc2UgMHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VU
ICovCisgICAgICAgIGNhc2UgMHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQ
UEVSIEhBTEYgKi8KKyAgICAgICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFU
IE1BUksgTE9XRVIgSEFMRiAqLworICAgICAgICBjYXNlIDB4MzIxRDogLyogUEFSRU5USEVTSVpF
RCBLT1JFQU4gQ0hBUkFDVEVSIE9KRU9OICovCisgICAgICAgIGNhc2UgMHgzMjFFOiAvKiBQQVJF
TlRIRVNJWkVEIEtPUkVBTiBDSEFSQUNURVIgTyBIVSAqLworICAgICAgICBjYXNlIDB4MzNBRTog
LyogU1FVQVJFIFJBRCBPVkVSIFMgKi8KKyAgICAgICAgY2FzZSAweDMzQUY6IC8qIFNRVUFSRSBS
QUQgT1ZFUiBTIFNRVUFSRUQgKi8KKyAgICAgICAgY2FzZSAweDMzQzY6IC8qIFNRVUFSRSBDIE9W
RVIgS0cgKi8KKyAgICAgICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9WRVIgTSAqLworICAg
ICAgICBjYXNlIDB4MDVCOTogLyogSEVCUkVXIFBPSU5UIEhPTEFNICovCisgICAgICAgIGNhc2Ug
MHgwNUJBOiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZBViAqLworICAgICAgICBj
YXNlIDB4MDVDMTogLyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCisgICAgICAgIGNhc2UgMHgw
NUMyOiAvKiBIRUJSRVcgUE9JTlQgU0lOIERPVCAqLworICAgICAgICBjYXNlIDB4MDVDNDogLyog
SEVCUkVXIE1BUksgVVBQRVIgRE9UICovCisgICAgICAgIGNhc2UgMHhBNzMxOiAvKiBMQVRJTiBM
RVRURVIgU01BTEwgQ0FQSVRBTCBTICovCisgICAgICAgIGNhc2UgMHhBNzcxOiAvKiBMQVRJTiBT
TUFMTCBMRVRURVIgRFVNICovCisgICAgICAgIGNhc2UgMHhBNzg5OiAvKiBNT0RJRklFUiBMRVRU
RVIgQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZP
UiBWRVJUSUNBTCBTRU1JQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZFMTU6IC8qIFBSRVNFTlRB
VElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFWENMQU1BVElPTiBNQVJLICovCisgICAgICAgIGNhc2Ug
MHhGRTNGOiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFD
S0VUICovCisgICAgICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxM
IEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRPUlRPSVNF
IFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZGMEU6IC8qIEZVTExXSURUSCBGVUxM
IFNUT1AgKi8KKyAgICAgICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09MSURVUyAqLwor
ICAgICAgICBjYXNlIDB4RkY2MTogLyogSEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwgU1RPUCAq
LworICAgICAgICBjYXNlIDB4RkZGQzogLyogT0JKRUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAq
LworICAgICAgICBjYXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCisgICAg
ICAgIGNhc2UgMHgxRjUwRjogLyogTE9DSyBXSVRIIElOSyBQRU4gKi8KKyAgICAgICAgY2FzZSAw
eDFGNTEwOiAvKiBDTE9TRUQgTE9DSyBXSVRIIEtFWSAqLworICAgICAgICBjYXNlIDB4MUY1MTE6
IC8qIEtFWSAqLworICAgICAgICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sgKi8KKyAgICAgICAgY2Fz
ZSAweDFGNTEzOiAvKiBPUEVOIExPQ0sgKi8KKyAgICAgICAgICAgIHJldHVybiBZRVM7CisgICAg
ICAgIGNhc2UgMHgwMzA3OiAvKiBDT01CSU5JTkcgRE9UIEFCT1ZFICovCisgICAgICAgICAgICBy
ZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMjM3IC8qIExBVElOIFNNQUxMIExFVFRFUiBE
T1RMRVNTIEogKi8KKyAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAx
MzEgLyogTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSSAqLworICAgICAgICAgICAgICAgIHx8
IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExFVFRFUiBWQVYgKi8KKyAg
ICAgICAgY2FzZSAweDA1NDg6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPICovCisgICAg
ICAgIGNhc2UgMHgwNTREOiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUggKi8KKyAgICAg
ICAgY2FzZSAweDA1Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLworICAgICAgICBj
YXNlIDB4MDU3RDogLyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNFSCAqLworICAgICAgICAgICAg
cmV0dXJuIHByZXZpb3VzQ29kZVBvaW50CisgICAgICAgICAgICAgICAgJiYgIWlzQVNDSUlEaWdp
dE9yVmFsaWRIb3N0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCisgICAgICAg
ICAgICAgICAgJiYgIWlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQu
dmFsdWUoKSk7CisgICAgICAgIGNhc2UgJy4nOgorICAgICAgICAgICAgcmV0dXJuIE5POworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50CisgICAg
ICAgICAgICAgICAgJiYgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQ
b2ludC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICYmICEoaXNBcm1lbmlhblNjcmlwdENoYXJh
Y3RlcihjaGFyQ29kZSkgfHwgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoY2hhckNv
ZGUpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdoaXRlTGlzdElETlNjcmlwdChjb25zdCBj
aGFyKiBzY3JpcHROYW1lKQoreworICAgIGludDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9wZXJ0eVZh
bHVlRW51bShVQ0hBUl9TQ1JJUFQsIHNjcmlwdE5hbWUpOworICAgIGlmIChzY3JpcHQgPj0gMCAm
JiBzY3JpcHQgPCBVU0NSSVBUX0NPREVfTElNSVQpIHsKKyAgICAgICAgc2l6ZV90IGluZGV4ID0g
c2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7
CisgICAgICAgIElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gfD0gbWFzazsKKyAgICB9Cit9CisK
K3N0YXRpYyBCT09MIHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpmaWxlbmFt
ZSkKK3sKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBGSUxF
ICpmaWxlID0gZm9wZW4oW2ZpbGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICJyIik7
CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gTk87CisgICAgCisgICAgLy8gUmVhZCBh
IHdvcmQgYXQgYSB0aW1lLgorICAgIC8vIEFsbG93IGNvbW1lbnRzLCBzdGFydGluZyB3aXRoICMg
Y2hhcmFjdGVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgICAgd2hpbGUgKDEpIHsKKyAgICAg
ICAgLy8gU2tpcCBhIGNvbW1lbnQgaWYgcHJlc2VudC4KKyAgICAgICAgaWYgKGZzY2FuZihmaWxl
LCAiICMlKlteXG5ccl0lKltcblxyXSIpID09IEVPRikKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAKKyAgICAgICAgLy8gUmVhZCBhIHNjcmlwdCBuYW1lIGlmIHByZXNlbnQuCisgICAgICAg
IGNoYXIgd29yZFszM107CisgICAgICAgIGludCByZXN1bHQgPSBmc2NhbmYoZmlsZSwgIiAlMzJb
XiMgXHRcblxyXSUqW14jIFx0XG5ccl0gIiwgd29yZCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0g
RU9GKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBpZiAocmVzdWx0ID09
IDEpIHsKKyAgICAgICAgICAgIC8vIEdvdCBhIHdvcmQsIG1hcCB0byBzY3JpcHQgY29kZSBhbmQg
cHV0IGl0IGludG8gdGhlIGFycmF5LgorICAgICAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHdv
cmQpOworICAgICAgICB9CisgICAgfQorICAgIGZjbG9zZShmaWxlKTsKKyAgICByZXR1cm4gWUVT
OworfQorCitzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29u
c3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCit7CisgICAgc3RhdGljIGRpc3BhdGNo
X29uY2VfdCBmbGFnOworICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57CisgICAgICAgIC8vIFJl
YWQgd2hpdGUgbGlzdCBmcm9tIGxpYnJhcnkuCisgICAgICAgIE5TQXJyYXkgKmRpcnMgPSBOU1Nl
YXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxs
RG9tYWluc01hc2ssIFlFUyk7CisgICAgICAgIGludCBudW1EaXJzID0gW2RpcnMgY291bnRdOwor
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykgeworICAgICAgICAgICAg
aWYgKHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0IGNoYXIq
IGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3RbMjBdID0geworICAgICAgICAgICAgIkNvbW1vbiIs
CisgICAgICAgICAgICAiSW5oZXJpdGVkIiwKKyAgICAgICAgICAgICJBcmFiaWMiLAorICAgICAg
ICAgICAgIkFybWVuaWFuIiwKKyAgICAgICAgICAgICJCb3BvbW9mbyIsCisgICAgICAgICAgICAi
Q2FuYWRpYW5fQWJvcmlnaW5hbCIsCisgICAgICAgICAgICAiRGV2YW5hZ2FyaSIsCisgICAgICAg
ICAgICAiRGVzZXJldCIsCisgICAgICAgICAgICAiR3VqYXJhdGkiLAorICAgICAgICAgICAgIkd1
cm11a2hpIiwKKyAgICAgICAgICAgICJIYW5ndWwiLAorICAgICAgICAgICAgIkhhbiIsCisgICAg
ICAgICAgICAiSGVicmV3IiwKKyAgICAgICAgICAgICJIaXJhZ2FuYSIsCisgICAgICAgICAgICAi
S2F0YWthbmFfT3JfSGlyYWdhbmEiLAorICAgICAgICAgICAgIkthdGFrYW5hIiwKKyAgICAgICAg
ICAgICJMYXRpbiIsCisgICAgICAgICAgICAiVGFtaWwiLAorICAgICAgICAgICAgIlRoYWkiLAor
ICAgICAgICAgICAgIllpIiwKKyAgICAgICAgfTsKKyAgICAgICAgZm9yIChjb25zdCBjaGFyKiBz
Y3JpcHROYW1lIDogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKKyAgICAgICAgICAgIHdoaXRl
TGlzdElETlNjcmlwdChzY3JpcHROYW1lKTsKKyAgICB9KTsKKyAgICAKKyAgICBpbnQzMl90IGkg
PSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7CisgICAg
d2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgVUNoYXIzMiBjOworICAgICAgICBVMTZfTkVY
VChidWZmZXIsIGksIGxlbmd0aCwgYykKKyAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVS
T19FUlJPUjsKKyAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQo
YywgJmVycm9yKTsKKyAgICAgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgeworICAgICAg
ICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNj
cmlwdHM6ICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAgICB9Cisg
ICAgICAgIGlmIChzY3JpcHQgPCAwKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoImdvdCBuZWdh
dGl2ZSBudW1iZXIgZm9yIHNjcmlwdCBjb2RlIGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7CisgICAg
ICAgICAgICByZXR1cm4gTk87CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNjcmlwdCA+PSBVU0NS
SVBUX0NPREVfTElNSVQpCisgICAgICAgICAgICByZXR1cm4gTk87CisKKyAgICAgICAgc2l6ZV90
IGluZGV4ID0gc2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3Jp
cHQgJSAzMik7CisgICAgICAgIGlmICghKElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gJiBtYXNr
KSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0xvb2th
bGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykpCisgICAgICAgICAgICByZXR1cm4g
Tk87CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKKyAgICB9CisgICAgcmV0dXJuIFlF
UzsKK30KKworc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERS
dWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5j
dGlvbjxib29sKFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKK3sKKyAgICBBU1NFUlQobGVu
Z3RoID4gMCk7CisKKyAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1p
KSB7CisgICAgICAgIFVDaGFyIGNoID0gYnVmZmVyW2ldOworICAgICAgICAKKyAgICAgICAgaWYg
KGNoYXJhY3RlcklzQWxsb3dlZChjaCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
CisgICAgICAgIC8vIE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExvd2VyIGxl
dmVsIHJlZ2lzdHJhcnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgorICAgICAgICBpZiAoY2gg
PT0gJy4nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisjZGVmaW5lIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKKyAgICB7IFwKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGludDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yo
c3VmZml4WzBdKTsgXAorICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYmIDAgPT0g
bWVtY21wKGJ1ZmZlciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXplb2Yoc3Vm
Zml4KSkpIFwKKyAgICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93
ZWRCeVRMRFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlvbik7IFwK
KyAgICB9CisKK3N0YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNoYXIg
Y2gpCit7CisgICAgLy8gT25seSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRh
c2hlcyBhcmUgYWxsb3dlZC4KKyAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0
NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKK30K
Kworc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFy
KiBidWZmZXIsIGludDMyX3QgbGVuZ3RoKQoreworICAgIC8vIFNraXAgdHJhaWxpbmcgZG90IGZv
ciByb290IGRvbWFpbi4KKyAgICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFdID09ICcuJykKKyAgICAg
ICAgbGVuZ3RoLS07CisKKyAgICAvLyBodHRwOi8vY2N0bGQucnUvZmlsZXMvcGRmL2RvY3MvcnVs
ZXNfcnUtcmYucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9IHsKKyAg
ICAgICAgJy4nLAorICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgor
ICAgICAgICAweDA0NDQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgorICAgIH07CisgICAg
Q0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFuRG9tYWlu
TmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vcnVzbmFtZXMucnUvcnVsZXMucGwKKyAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNSVVNbXSA9IHsKKyAgICAgICAgJy4nLAorICAg
ICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICAgICAweDA0NDMs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCisgICAgICAgIDB4MDQ0MSAgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEVTCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hF
UyhjeXJpbGxpY1JVUywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBo
dHRwOi8vcnUuZmFpdGlkLm9yZy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2YS9pZG4K
KyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9IHsKKyAgICAgICAgJy4n
LAorICAgICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQorICAgICAgICAw
eDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEtBCisgICAgICAgIDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCisg
ICAgICAgIDB4MDQzMCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICB9OworICAgIENI
RUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZBLCBpc1J1c3NpYW5Eb21h
aW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9mb3J1c2Vy
L2RvY3MvcmVncnVsZXMucGhwCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljREVUSVtd
ID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIERFCisgICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCisgICAg
ICAgIDB4MDQ0MiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCisgICAgICAgIDB4MDQzOCAg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NV
RkZJWF9NQVRDSEVTKGN5cmlsbGljREVUSSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7
CisKKyAgICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBydWxlcyBub3QgcHVibGlzaGVkLiBUaGUg
d29yZCBpcyBSdXNzaWFuLCBzbyBvbmx5IGFsbG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0aW1lLAor
ICAgIC8vIGFsdGhvdWdoIHdlIG1heSBuZWVkIHRvIHJldmlzZSB0aGUgY2hlY2tzIGlmIHRoaXMg
ZW5kcyB1cCBiZWluZyB1c2VkIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBSdXNzaWEu
CisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT05MQVlOW10gPSB7CisgICAgICAgICcu
JywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAgICAgICAw
eDA0M0QsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICAgICAweDA0M0IsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBFTAorICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBBCisgICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JU
IEkKKyAgICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICB9Owor
ICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT05MQVlOLCBpc1J1c3Np
YW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHNh
bWUgYXMgYWJvdmUuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU0FZVFtdID0gewor
ICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVT
CisgICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICAgICAgMHgw
NDM5LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQorICAgICAgICAweDA0NDIgIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VG
RklYX01BVENIRVMoY3lyaWxsaWNTQVlULCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsK
KworICAgIC8vIGh0dHA6Ly9waXIub3JnL3Byb2R1Y3RzL29wci1kb21haW4vIC0gcnVsZXMgbm90
IHB1Ymxpc2hlZC4gQWNjb3JkaW5nIHRvIHRoZSByZWdpc3RyeSBzaXRlLAorICAgIC8vIHRoZSBp
bnRlbmRlZCBhdWRpZW5jZSBpcyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xhdmljLXNwZWFraW5nIG1h
cmtldHMiLgorICAgIC8vIENocm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lhbiwgc28g
c3RpY2tpbmcgd2l0aCB0aGF0IGZvciBub3cuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljT1JHW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgTworICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBF
UgorICAgICAgICAweDA0MzMgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKKyAgICB9Owor
ICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1c3NpYW5E
b21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxlcy5odG1s
CisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7CisgICAgICAgICcuJywK
KyAgICAgICAgMHgwNDMxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKyAgICAgICAgMHgw
NDM1LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKyAgICAgICAgMHgwNDNCICAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9N
QVRDSEVTKGN5cmlsbGljQkVMLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBSdXNzaWFuIGFu
ZCBCeWVsb3J1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisg
ICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgw
NDUxIHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5IHx8IGlz
QVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0cDovL3d3
dy5uaWMua3ovZG9jcy9wb3J5YWRva192bmVkcmVuaXlhX2thel9ydS5wZGYKKyAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgY3lyaWxsaWNLQVpbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0
OUIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgICAgICAw
eDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzNyAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhf
TUFUQ0hFUyhjeXJpbGxpY0tBWiwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gS2F6YWtoIGxl
dHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNo
ID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0
RDkgfHwgY2ggPT0gMHgwNDkzIHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMgfHwgY2gg
PT0gMHgwNEU5IHx8IGNoID09IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0gMHgwNEJC
IHx8IGNoID09IDB4MDQ1NiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9
KTsKKworICAgIC8vIGh0dHA6Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1bGVzJTIw
b2YlMjBVS1JfdjQuMC5wZGYKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNVS1JbXSA9
IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBVCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCisgICAgICAg
IDB4MDQ0MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgfTsKKyAgICBDSEVDS19S
VUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1VLUiwgW10oVUNoYXIgY2gpIHsKKyAgICAg
ICAgLy8gUnVzc2lhbiBhbmQgVWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFy
ZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYp
IHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8IGNoID09
IDB4MDQ1NiB8fCBjaCA9PSAweDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7
CisgICAgfSk7CisKKyAgICAvLyBodHRwOi8vd3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1FTlRJL2lk
bi1zcmItcG9saWN5LXRlcm1zb2Z1c2UtdjEuNC1lbmcucGRmCisgICAgc3RhdGljIGNvbnN0IFVD
aGFyIGN5cmlsbGljU1JCW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQxLCAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDMxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUK
KyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU1JCLCBb
XShVQ2hhciBjaCkgeworICAgICAgICAvLyBTZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFz
aGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAw
eDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTIg
fHwgY2ggPT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0g
MHgwNDVCIHx8IGNoID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsK
KyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly9tYXJuZXQubWsvZG9jL3ByYXZpbG5pay1tay1ta2Qu
cGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTUtEW10gPSB7CisgICAgICAgICcu
JywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAgICAg
MHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyAgICAgICAgMHgwNDM0ICAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJ
WF9NQVRDSEVTKGN5cmlsbGljTUtELCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBNYWNlZG9u
aWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1
cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2gg
PD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1IHx8IGNoID09IDB4MDQ1
OCB8fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8fCBjaCA9
PSAweDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAg
ICAvLyBodHRwczovL3d3dy5tb24ubW4vY3MvCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljTU9OW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
TworICAgICAgICAweDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgIH07Cisg
ICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT04sIFtdKFVDaGFyIGNo
KSB7CisgICAgICAgIC8vIE1vbmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUg
YWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8
fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRBRiB8fCBpc0FTQ0lJ
RGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9KTsKKworICAgIC8vIE5vdCBhIGtub3duIHRv
cCBsZXZlbCBkb21haW4gd2l0aCBzcGVjaWFsIHJ1bGVzLgorICAgIHJldHVybiBOTzsKK30KKwor
Ly8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KKy8v
IElmIG1ha2VTdHJpbmcgaXMgTk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwgb3Ig
c2VsZiB0byBpbmRpY2F0ZSBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KKy8vIElmIG1ha2VTdHJpbmcg
aXMgWUVTLCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBwZWQgc3Ry
aW5nLgorc3RhdGljIE5TU3RyaW5nICptYXBIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3Ry
aW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MIGVuY29kZSwgQk9PTCBtYWtlU3RyaW5nLCBCT09MICpl
cnJvcikKK3sKKyAgICBpZiAocmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgp
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgVUNoYXIgc291cmNlQnVmZmVyW0hPU1RfTkFN
RV9CVUZGRVJfTEVOR1RIXTsKKyAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NUX05BTUVf
QlVGRkVSX0xFTkdUSF07CisgICAgCisgICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZT
dHJpbmc6QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24g
IT0gTlNOb3RGb3VuZCkgeworICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBz
dWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VdOworICAgICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5n
UmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMobnVsbHB0
ciwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7CisgICAgICAgIGlmIChzdWJz
dHJpbmcpIHsKKyAgICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKKyAgICAgICAgICAgIHJh
bmdlID0gTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBpbnQgbGVuZ3RoID0gcmFuZ2UubGVuZ3RoOworICAgIFtzdHJpbmcgZ2V0Q2hh
cmFjdGVyczpzb3VyY2VCdWZmZXIgcmFuZ2U6cmFuZ2VdOworICAgIAorICAgIFVFcnJvckNvZGUg
dWVycm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9
IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVy
dGVkID0gKGVuY29kZSA/IHVpZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5pY29kZSko
JlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksIHNvdXJjZUJ1
ZmZlciwgbGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgs
ICZwcm9jZXNzaW5nRGV0YWlscywgJnVlcnJvcik7CisgICAgaWYgKGxlbmd0aCAmJiAoVV9GQUlM
VVJFKHVlcnJvcikgfHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkgeworICAgICAgICAqZXJy
b3IgPSBZRVM7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIAorICAgIGlmIChudW1D
aGFyYWN0ZXJzQ29udmVydGVkID09IGxlbmd0aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZlciwgZGVz
dGluYXRpb25CdWZmZXIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIAorICAgIGlmICghZW5jb2RlICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRX
aGl0ZUxpc3QoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpICYmICFh
bGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJh
Y3RlcnNDb252ZXJ0ZWQpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJldHVybiBt
YWtlU3RyaW5nID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0aW9uQnVm
ZmVyIGxlbmd0aDpudW1DaGFyYWN0ZXJzQ29udmVydGVkXSA6IHN0cmluZzsKK30KKworc3RhdGlj
IEJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5T
UmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQoreworICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhS
YW5nZShzdHJpbmcsIHJhbmdlLCBOTywgTk8sIGVycm9yKSAhPSBuaWw7Cit9CisgCitzdGF0aWMg
Qk9PTCBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNS
YW5nZSByYW5nZSwgQk9PTCAqZXJyb3IpCit7CisgICAgcmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJh
bmdlKHN0cmluZywgcmFuZ2UsIFlFUywgIE5PLCBlcnJvcikgIT0gbmlsOworfQorCitzdGF0aWMg
TlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFu
Z2UgcmFuZ2UpCit7CisgICAgQk9PTCBlcnJvciA9IE5POworICAgIE5TU3RyaW5nICpob3N0ID0g
bWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgTk8sIFlFUywgJmVycm9yKTsKKyAg
ICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICFob3N0ID8gc3Ry
aW5nIDogaG9zdDsKK30KKworc3RhdGljIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdpdGhSYW5n
ZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQoreworICAgIEJPT0wgZXJyb3IgPSBO
TzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFu
Z2UsIFlFUywgWUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQorCitOU1N0cmluZyAqZGVj
b2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIGVycm9yID0gTk87Cisg
ICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIE5TTWFrZVJh
bmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSksIE5PLCBZRVMsICZlcnJvcik7CisgICAgaWYgKGVycm9y
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7
Cit9CisKK05TU3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQoreworICAg
IEJPT0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJh
bmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgWUVTLCBZRVMsICZl
cnJvcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAh
aG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0
TmVlZE1hcHBpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiYgYXJyYXksIEJPT0wgZW5jb2RlKQoreworICAgIC8vIEdlbmVyYWxseSwg
d2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhvc3Qg
bmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGluZy4KKyAgICAvLyBUaGVyZWZvcmUsIHdlIHVz
ZSBuaWwgdG8gaW5kaWNhdGUgbm8gbWFwcGluZyBoZXJlIGFuZCBhbiBlbXB0eSBhcnJheSB0byBp
bmRpY2F0ZSBlcnJvci4KKworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBCT09MIG5lZWRzTWFw
cGluZyA9IGVuY29kZSA/IGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShzdHJpbmcsIHJh
bmdlLCAmZXJyb3IpIDogaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKHN0cmluZywgcmFu
Z2UsICZlcnJvcik7CisgICAgaWYgKCFlcnJvciAmJiAhbmVlZHNNYXBwaW5nKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgYXJyYXkgPSBhZG9wdE5TKFtO
U011dGFibGVBcnJheSBuZXddKTsKKworICAgIGlmICghZXJyb3IpCisgICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKK30KKworc3RhdGljIHZv
aWQgY29sbGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5n
ZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCit7CisgICAgcmV0dXJu
IGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIFlFUyk7
Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZERlY29kaW5nKE5TU3RyaW5n
ICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5
KQoreworICAgIHJldHVybiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmluZywgcmFu
Z2UsIGFycmF5LCBOTyk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRv
TWFpbFRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0
aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQoreworICAgIC8vIEluIGEg
bWFpbHRvOiBVUkwsIGhvc3QgbmFtZXMgY29tZSBhZnRlciBhICdAJyBjaGFyYWN0ZXIgYW5kIGVu
ZCB3aXRoIGEgJz4nIG9yICcsJyBvciAnPycgY2hhcmFjdGVyLgorICAgIC8vIFNraXAgcXVvdGVk
IHN0cmluZ3Mgc28gdGhhdCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29uZnVzZSB1cy4KKyAg
ICAvLyBXaGVuIHdlIGZpbmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFzdCB0aGUgcGFydCBv
ZiB0aGUgVVJMIHRoYXQgY29udGFpbnMgaG9zdCBuYW1lcy4KKyAgICAKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5hbWVPclN0cmluZ1N0
YXJ0Q2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVy
c0luU3RyaW5nOkAiXCJAPyJdOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
TlNDaGFyYWN0ZXJTZXQ+PiBob3N0TmFtZUVuZENoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQg
Y2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIj4sPyJdOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBxdW90ZWRTdHJpbmdDaGFy
YWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJp
bmc6QCJcIlxcIl07CisgICAgCisgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0cmluZyBs
ZW5ndGhdOworICAgIE5TUmFuZ2UgcmVtYWluaW5nID0gTlNNYWtlUmFuZ2UoMCwgc3RyaW5nTGVu
Z3RoKTsKKyAgICAKKyAgICB3aGlsZSAoMSkgeworICAgICAgICAvLyBGaW5kIHN0YXJ0IG9mIGhv
c3QgbmFtZSBvciBvZiBxdW90ZWQgc3RyaW5nLgorICAgICAgICBOU1JhbmdlIGhvc3ROYW1lT3JT
dHJpbmdTdGFydCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdE5hbWVPclN0
cmluZ1N0YXJ0Q2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5n
XTsKKyAgICAgICAgaWYgKGhvc3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlvbiA9PSBOU05vdEZv
dW5kKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuaWNoYXIgYyA9IFtzdHJpbmcg
Y2hhcmFjdGVyQXRJbmRleDpob3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRpb25dOworICAgICAg
ICByZW1haW5pbmcubG9jYXRpb24gPSBOU01heFJhbmdlKGhvc3ROYW1lT3JTdHJpbmdTdGFydCk7
CisgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9j
YXRpb247CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnPycpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnQCcpIHsKKyAgICAgICAgICAgIC8vIEZp
bmQgZW5kIG9mIGhvc3QgbmFtZS4KKyAgICAgICAgICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQg
PSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAgICAgICBOU1JhbmdlIGhvc3ROYW1lRW5kID0g
W3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpob3N0TmFtZUVuZENoYXJhY3RlcnMuZ2V0
KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107CisgICAgICAgICAgICBCT09MIGRv
bmU7CisgICAgICAgICAgICBpZiAoaG9zdE5hbWVFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkg
eworICAgICAgICAgICAgICAgIGhvc3ROYW1lRW5kLmxvY2F0aW9uID0gc3RyaW5nTGVuZ3RoOwor
ICAgICAgICAgICAgICAgIGRvbmUgPSBZRVM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IGhvc3ROYW1lRW5kLmxvY2F0aW9uOworICAg
ICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcu
bG9jYXRpb247CisgICAgICAgICAgICAgICAgZG9uZSA9IE5POworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBQcm9jZXNzIGhvc3QgbmFtZSByYW5nZS4KKyAgICAg
ICAgICAgIGYoc3RyaW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZC5s
b2NhdGlvbiAtIGhvc3ROYW1lU3RhcnQpLCBhcnJheSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGlmIChkb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KKyAgICAgICAgICAgIEFTU0VSVChj
ID09ICciJyk7CisgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgIE5TUmFu
Z2UgZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVy
RnJvbVNldDpxdW90ZWRTdHJpbmdDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5n
ZTpyZW1haW5pbmddOworICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hhcmFjdGVyT3JTdHJp
bmdFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICAgICAgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRleDplc2NhcGVk
Q2hhcmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb25dOworICAgICAgICAgICAgICAgIHJlbWFpbmlu
Zy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kKTsKKyAg
ICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWluaW5n
LmxvY2F0aW9uOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIElmIHdlIGFy
ZSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUgc3RyaW5nIGxvb3Ag
YmFjayB0byB0aGUgaG9zdCBuYW1lIGxvb3AuCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyIn
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgIEFTU0VS
VChjID09ICdcXCcpOworICAgICAgICAgICAgICAgIGlmICghcmVtYWluaW5nLmxlbmd0aCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxv
Y2F0aW9uICs9IDE7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCAtPSAxOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhcHBseUhvc3RO
YW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJpbmdSYW5nZUFwcGxp
ZXJGdW5jdGlvbiBmLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKK3sKKyAgICAv
LyBGaW5kIGhvc3RuYW1lcy4gVG9vIGJhZCB3ZSBjYW4ndCB1c2UgYW55IHJlYWwgVVJMLXBhcnNp
bmcgY29kZSB0byBkbyB0aGlzLAorICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGRvIGl0IGJlZm9yZSBk
b2luZyBhbGwgdGhlICUtZXNjYXBpbmcsIGFuZCB0aGlzIGlzIHRoZSBvbmx5CisgICAgLy8gY29k
ZSB3ZSBoYXZlIHRoYXQgcGFyc2VzIG1haWx0byBVUkxzIGFueXdheS4KKyAgICAKKyAgICAvLyBN
YXliZSB3ZSBzaG91bGQgaW1wbGVtZW50IHRoaXMgdXNpbmcgYSBjaGFyYWN0ZXIgYnVmZmVyIGlu
c3RlYWQ/CisgICAgCisgICAgaWYgKHByb3RvY29sSXMoc3RyaW5nLCAibWFpbHRvIikpIHsKKyAg
ICAgICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoc3RyaW5nLCBmLCBh
cnJheSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gRmluZCB0aGUgaG9z
dCBuYW1lIGluIGEgaGllcmFyY2hpY2FsIFVSTC4KKyAgICAvLyBJdCBjb21lcyBhZnRlciBhICI6
Ly8iIHNlcXVlbmNlLCB3aXRoIHNjaGVtZSBjaGFyYWN0ZXJzIHByZWNlZGluZy4KKyAgICAvLyBJ
ZiBlbmRzIHdpdGggdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiLCAiLyIsIG9yIGEgIj8i
LgorICAgIC8vIElmIHRoZXJlIGlzIGEgIkAiIGNoYXJhY3RlciwgdGhlIGhvc3QgcGFydCBpcyBq
dXN0IHRoZSBwYXJ0IGFmdGVyIHRoZSAiQCIuCisgICAgTlNSYW5nZSBzZXBhcmF0b3JSYW5nZSA9
IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjovLyJdOworICAgIGlmIChzZXBhcmF0b3JSYW5nZS5s
b2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgLy8gQ2hl
Y2sgdGhhdCBhbGwgY2hhcmFjdGVycyBiZWZvcmUgdGhlIDovLyBhcmUgdmFsaWQgc2NoZW1lIGNo
YXJhY3RlcnMuCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3Rl
clNldD4+IG5vblNjaGVtZUNoYXJhY3RlcnMgPSBbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNl
dFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSstLiJdIGludmVydGVkU2V0XTsKKyAgICBp
ZiAoW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpub25TY2hlbWVDaGFyYWN0ZXJzLmdl
dCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBzZXBhcmF0b3JSYW5nZS5s
b2NhdGlvbildLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07CisgICAgCisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3RUZXJt
aW5hdG9ycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3Ry
aW5nOkAiOi8/IyJdOworICAgIAorICAgIC8vIFN0YXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuCisg
ICAgdW5zaWduZWQgYXV0aG9yaXR5U3RhcnQgPSBOU01heFJhbmdlKHNlcGFyYXRvclJhbmdlKTsK
KyAgICAKKyAgICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICBOU1JhbmdlIGhv
c3ROYW1lVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdFRl
cm1pbmF0b3JzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZShhdXRob3Jp
dHlTdGFydCwgc3RyaW5nTGVuZ3RoIC0gYXV0aG9yaXR5U3RhcnQpXTsKKyAgICB1bnNpZ25lZCBo
b3N0TmFtZUVuZCA9IGhvc3ROYW1lVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8g
c3RyaW5nTGVuZ3RoIDogaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uOworICAgIAorICAgIC8v
IEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KKyAgICBOU1JhbmdlIHVz
ZXJJbmZvVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIkAiIG9wdGlvbnM6MCBy
YW5nZTpOU01ha2VSYW5nZShhdXRob3JpdHlTdGFydCwgaG9zdE5hbWVFbmQgLSBhdXRob3JpdHlT
dGFydCldOworICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQgPSB1c2VySW5mb1Rlcm1pbmF0b3Iu
bG9jYXRpb24gPT0gTlNOb3RGb3VuZCA/IGF1dGhvcml0eVN0YXJ0IDogTlNNYXhSYW5nZSh1c2Vy
SW5mb1Rlcm1pbmF0b3IpOworICAgIAorICAgIHJldHVybiBmKHN0cmluZywgTlNNYWtlUmFuZ2Uo
aG9zdE5hbWVTdGFydCwgaG9zdE5hbWVFbmQgLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkpOworfQor
CitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBtYXBIb3N0TmFtZXMoTlNTdHJpbmcgKnN0cmlu
ZywgQk9PTCBlbmNvZGUpCit7CisgICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXpl
IGZvciB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3Qg
bmVlZCBtYXBwaW5nLgorICAgIAorICAgIGlmIChlbmNvZGUgJiYgW3N0cmluZyBjYW5CZUNvbnZl
cnRlZFRvRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXSkKKyAgICAgICAgcmV0dXJuIHN0
cmluZzsKKyAgICAKKyAgICAvLyBNYWtlIGEgbGlzdCBvZiByYW5nZXMgdGhhdCBhY3R1YWxseSBu
ZWVkIG1hcHBpbmcuCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBob3N0TmFtZVJhbmdl
czsKKyAgICBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmID0gZW5jb2RlID8gY29sbGVjdFJh
bmdlc1RoYXROZWVkRW5jb2RpbmcgOiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWREZWNvZGluZzsKKyAg
ICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhzdHJpbmcsIGYsIGhvc3ROYW1lUmFu
Z2VzKTsKKyAgICBpZiAoIWhvc3ROYW1lUmFuZ2VzKQorICAgICAgICByZXR1cm4gc3RyaW5nOwor
CisgICAgaWYgKCFbaG9zdE5hbWVSYW5nZXMgY291bnRdKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIAorICAgIC8vIERvIHRoZSBtYXBwaW5nLgorICAgIGF1dG8gbXV0YWJsZUNvcHkgPSBhZG9w
dE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsKKyAgICB1bnNpZ25lZCBpID0gW2hvc3ROYW1lUmFu
Z2VzIGNvdW50XTsKKyAgICB3aGlsZSAoaS0tKSB7CisgICAgICAgIE5TUmFuZ2UgaG9zdE5hbWVS
YW5nZSA9IFtbaG9zdE5hbWVSYW5nZXMgb2JqZWN0QXRJbmRleDppXSByYW5nZVZhbHVlXTsKKyAg
ICAgICAgTlNTdHJpbmcgKm1hcHBlZEhvc3ROYW1lID0gZW5jb2RlID8gZW5jb2RlSG9zdE5hbWVX
aXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKSA6IGRlY29kZUhvc3ROYW1lV2l0aFJhbmdl
KHN0cmluZywgaG9zdE5hbWVSYW5nZSk7CisgICAgICAgIFttdXRhYmxlQ29weSByZXBsYWNlQ2hh
cmFjdGVyc0luUmFuZ2U6aG9zdE5hbWVSYW5nZSB3aXRoU3RyaW5nOm1hcHBlZEhvc3ROYW1lXTsK
KyAgICB9CisgICAgcmV0dXJuIG11dGFibGVDb3B5OworfQorCitzdGF0aWMgUmV0YWluUHRyPE5T
U3RyaW5nPiBzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShOU1N0cmluZyAqc3RyaW5nKQorewor
ICAgIGF1dG8gdHJpbW1lZCA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOworICAgIENG
U3RyaW5nVHJpbVdoaXRlc3BhY2UoKF9fYnJpZGdlIENGTXV0YWJsZVN0cmluZ1JlZil0cmltbWVk
LmdldCgpKTsKKyAgICByZXR1cm4gdHJpbW1lZDsKK30KKworTlNVUkwgKlVSTEJ5VHJ1bmNhdGlu
Z09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5
cGUgY29tcG9uZW50KQoreworICAgIGlmICghVVJMKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IAorICAgIENGUmFuZ2UgZnJhZ1JnID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9f
YnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50LCBudWxscHRyKTsKKyAgICBpZiAoZnJhZ1Jn
LmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICByZXR1cm4gVVJMOworCisgICAgVmVj
dG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gdXJsQnl0ZXMoVVJMX0JZVEVTX0JV
RkZFUl9MRU5HVEgpOworICAgIENGSW5kZXggbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2Jy
aWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgdXJsQnl0ZXMuc2l6ZSgpKTsKKyAg
ICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICB1cmxCeXRlcy5n
cm93KG51bUJ5dGVzKTsKKyAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCB1cmxCeXRlcy5kYXRhKCksIG51bUJ5dGVzKTsKKyAgICB9CisKKyAgICBDRlVSTFJlZiBy
ZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZy
YWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxw
dHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2Rp
bmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAgICAKKyAgICByZXR1cm4gcmVzdWx0ID8gQ0ZC
cmlkZ2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKK30KKworc3RhdGljIE5TVVJMICpVUkxCeVJl
bW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKK3sKKyAgICByZXR1cm4gVVJMQnlU
cnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KFVSTCwga0NGVVJMQ29tcG9uZW50
UmVzb3VyY2VTcGVjaWZpZXIpOworfQorCitOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRh
LCBOU1VSTCAqYmFzZVVSTCkKK3sKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgCisgICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsKKyAgICBzaXplX3QgbGVuZ3RoID0gW2Rh
dGEgbGVuZ3RoXTsKKyAgICBpZiAobGVuZ3RoID4gMCkgeworICAgICAgICAvLyB3b3JrIGFyb3Vu
ZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKC4uLCBU
UlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21wb25lbnRzLgorICAgICAgICBiYXNlVVJM
ID0gVVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKGJhc2VVUkwpOworICAgICAgICAKKyAg
ICAgICAgY29uc3QgVUludDggKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDgqPihbZGF0
YSBieXRlc10pOworICAgICAgICAKKyAgICAgICAgLy8gQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdp
dGhCeXRlcyB3b3VsZCBjb21wbGFpbiB0byBjb25zb2xlIGlmIHdlIHBhc3NlZCBhIHBhdGggdG8g
aXQuCisgICAgICAgIGlmIChieXRlc1swXSA9PSAnLycgJiYgIWJhc2VVUkwpCisgICAgICAgICAg
ICByZXR1cm4gbmlsOworICAgICAgICAKKyAgICAgICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhl
cmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hl
biByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAgICAgLy8gKGUuZyBjYWxscyB0byBOU1VS
TCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVn
YWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAorICAgICAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBt
YWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIHNo
aWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCisgICAgICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGlu
IDEgaW4gdGhvc2UgY2FzZXMuCisgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENG
VVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Cisg
ICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2luZ1JlbGVh
c2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBieXRlcywgbGVuZ3Ro
LCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkws
IFlFUykpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAIiJdOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KK3N0YXRpYyBOU0RhdGEgKmRhdGFXaXRo
VXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNEYXRhICp1c2VyVHlw
ZWREYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107
CisgICAgQVNTRVJUKHVzZXJUeXBlZERhdGEpOworICAgIAorICAgIGNvbnN0IFVJbnQ4KiBpbkJ5
dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDggKj4oW3VzZXJUeXBlZERhdGEgYnl0ZXNdKTsK
KyAgICBpbnQgaW5MZW5ndGggPSBbdXNlclR5cGVkRGF0YSBsZW5ndGhdOworICAgIGlmICghaW5M
ZW5ndGgpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgY2hhciogb3V0Qnl0ZXMgPSBz
dGF0aWNfY2FzdDxjaGFyICo+KG1hbGxvYyhpbkxlbmd0aCAqIDMpKTsgLy8gbGFyZ2UgZW5vdWdo
IHRvICUtZXNjYXBlIGV2ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIqIHAgPSBvdXRCeXRlczsKKyAg
ICBpbnQgb3V0TGVuZ3RoID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGluTGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgVUludDggYyA9IGluQnl0ZXNbaV07CisgICAgICAgIGlmIChjIDw9IDB4
MjAgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICAqcCsrID0gJyUnOworICAgICAgICAgICAg
KnArKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgKnArKyA9
IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgb3V0TGVuZ3RoICs9
IDM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAg
IG91dExlbmd0aCsrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXNOb0NvcHk6b3V0Qnl0ZXMgbGVuZ3RoOm91dExlbmd0aF07IC8vIGFkb3B0
cyBvdXRCeXRlcworfQorCitOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAq
c3RyaW5nLCBOU1VSTCAqbnNVUkwpCit7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICBhdXRvIG1hcHBlZFN0cmluZyA9IG1hcEhvc3ROYW1lcyhzdHJpbmdCeVRy
aW1taW5nV2hpdGVzcGFjZShzdHJpbmcpLmdldCgpLCBZRVMpOworICAgIGlmICghbWFwcGVkU3Ry
aW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gTGV0J3MgY2hlY2sgd2hldGhlciB0
aGUgVVJMIGlzIGJvZ3VzLgorICAgIFVSTCB1cmwgeyBVUkwgeyBuc1VSTCB9LCBtYXBwZWRTdHJp
bmcuZ2V0KCkgfTsKKyAgICBpZiAoIXVybC5jcmVhdGVDRlVSTCgpKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODYwNTcKKyAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgdXJsLmNyZWF0ZUNG
VVJMIGluc3RlYWQgb2YgdXNpbmcgZGlyZWN0bHkgQ0ZVUkwgcGFyc2luZyByb3V0aW5lcy4KKyAg
ICBOU0RhdGEgKmRhdGEgPSBkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhtYXBwZWRTdHJpbmcuZ2V0
KCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiIl07CisKKyAgICByZXR1cm4gVVJMV2l0aERhdGEoZGF0YSwgbnNVUkwpOworfQorCitOU1VS
TCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKnN0cmluZywgTlNV
UkwgKlVSTCkKK3sKKyAgICBpZiAoIXN0cmluZykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IE5TVVJMICpyZXN1bHQgPSBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZywgVVJMKTsKKyAg
ICBpZiAoIXJlc3VsdCkgeworICAgICAgICBOU0RhdGEgKnJlc3VsdERhdGEgPSBkYXRhV2l0aFVz
ZXJUeXBlZFN0cmluZyhzdHJpbmcpOworICAgICAgICBpZiAoIXJlc3VsdERhdGEpCisgICAgICAg
ICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKKyAgICAgICAgcmVzdWx0ID0g
VVJMV2l0aERhdGEocmVzdWx0RGF0YSwgVVJMKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitzdGF0aWMgQk9PTCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoTlNVUkwg
KlVSTCkKK3sKKyAgICBDRlJhbmdlIHJhbmdlV2l0aFNlcGFyYXRvcnM7CisgICAgQ0ZVUkxHZXRC
eXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwga0NGVVJMQ29tcG9u
ZW50UXVlcnksICZyYW5nZVdpdGhTZXBhcmF0b3JzKTsKKyAgICBpZiAocmFuZ2VXaXRoU2VwYXJh
dG9ycy5sb2NhdGlvbiAhPSBrQ0ZOb3RGb3VuZCAmJiByYW5nZVdpdGhTZXBhcmF0b3JzLmxlbmd0
aCA9PSAxKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgcmV0dXJuIE5POworfQorCitOU0Rh
dGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlw
ZSBjb21wb25lbnRUeXBlKQoreworICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9M
RU5HVEg+IGFsbEJ5dGVzQnVmZmVyKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRklu
ZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBh
bGxCeXRlc0J1ZmZlci5kYXRhKCksIGFsbEJ5dGVzQnVmZmVyLnNpemUoKSk7CisgICAgaWYgKGJ5
dGVzRmlsbGVkID09IC0xKSB7CisgICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZV
UkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAgICAgICAg
YWxsQnl0ZXNCdWZmZXIuZ3JvdyhieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBieXRlc0ZpbGxl
ZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYWxsQnl0ZXNCdWZmZXIu
ZGF0YSgpLCBieXRlc1RvQWxsb2NhdGUpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBDRlVSTENv
bXBvbmVudFR5cGUgY29tcGxldGVVUkwgPSAoQ0ZVUkxDb21wb25lbnRUeXBlKS0xOworICAgIENG
UmFuZ2UgcmFuZ2U7CisgICAgaWYgKGNvbXBvbmVudFR5cGUgIT0gY29tcGxldGVVUkwpIHsKKyAg
ICAgICAgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCBjb21wb25lbnRUeXBlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJhbmdlLmxv
Y2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9IGVs
c2UgeworICAgICAgICByYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgICAgIHJhbmdlLmxlbmd0aCA9
IGJ5dGVzRmlsbGVkOworICAgIH0KKyAgICAKKyAgICBOU0RhdGEgKmNvbXBvbmVudERhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6YWxsQnl0ZXNCdWZmZXIuZGF0YSgpICsgcmFuZ2UubG9jYXRp
b24gbGVuZ3RoOnJhbmdlLmxlbmd0aF07IAorICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbY29tcG9uZW50RGF0
YSBieXRlc10pOworICAgIE5TTXV0YWJsZURhdGEgKnJlc3VsdERhdGEgPSBbTlNNdXRhYmxlRGF0
YSBkYXRhXTsKKyAgICAvLyBOT1RFOiBhZGQgbGVhZGluZyAnPycgdG8gcXVlcnkgc3RyaW5ncyBu
b24temVybyBsZW5ndGggcXVlcnkgc3RyaW5ncy4KKyAgICAvLyBOT1RFOiByZXRhaW4gcXVlc3Rp
b24tbWFyayBvbmx5IHF1ZXJ5IHN0cmluZ3MuCisgICAgaWYgKGNvbXBvbmVudFR5cGUgPT0ga0NG
VVJMQ29tcG9uZW50UXVlcnkpIHsKKyAgICAgICAgaWYgKHJhbmdlLmxlbmd0aCA+IDAgfHwgaGFz
UXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKFVSTCkpCisgICAgICAgICAgICBbcmVzdWx0RGF0
YSBhcHBlbmRCeXRlczoiPyIgbGVuZ3RoOjFdOyAgICAKKyAgICB9CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCByYW5nZS5sZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBi
eXRlc1tpXTsKKyAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKKyAgICAgICAg
ICAgIGNoYXIgZXNjYXBlZFszXTsKKyAgICAgICAgICAgIGVzY2FwZWRbMF0gPSAnJSc7CisgICAg
ICAgICAgICBlc2NhcGVkWzFdID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7CisgICAg
ICAgICAgICBlc2NhcGVkWzJdID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7CisgICAg
ICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczplc2NhcGVkIGxlbmd0aDozXTsgICAgCisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGFyIGJbMV07CisgICAgICAgICAgICBiWzBd
ID0gYzsKKyAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmIgbGVuZ3RoOjFdOyAg
ICAKKyAgICAgICAgfSAgICAgICAgICAgICAgIAorICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVz
dWx0RGF0YTsKK30KKworc3RhdGljIE5TVVJMICpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vi
c2VxdWVudENoYXJhY3RlcihOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50
KQoreworICAgIENGUmFuZ2UgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIDApOworICAgIGlmIChyYW5nZS5sb2Nh
dGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICAKKyAgICAvLyBS
ZW1vdmUgb25lIHN1YnNlcXVlbnQgY2hhcmFjdGVyLgorICAgIHJhbmdlLmxlbmd0aCsrOworCisg
ICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYnVmZmVyKFVSTF9CWVRF
U19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAg
ICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICBidWZmZXIuZ3Jv
dyhudW1CeXRlcyk7CisgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVS
TCwgYnVmZmVyLmRhdGEoKSwgbnVtQnl0ZXMpOworICAgIH0KKyAgICBVSW50OCogdXJsQnl0ZXMg
PSBidWZmZXIuZGF0YSgpOworICAgICAgICAKKyAgICBpZiAobnVtQnl0ZXMgPCByYW5nZS5sb2Nh
dGlvbikKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICBpZiAobnVtQnl0ZXMgPCByYW5nZS5sb2Nh
dGlvbiArIHJhbmdlLmxlbmd0aCkKKyAgICAgICAgcmFuZ2UubGVuZ3RoID0gbnVtQnl0ZXMgLSBy
YW5nZS5sb2NhdGlvbjsKKyAgICAgICAgCisgICAgbWVtbW92ZSh1cmxCeXRlcyArIHJhbmdlLmxv
Y2F0aW9uLCB1cmxCeXRlcyArIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoLCBudW1CeXRl
cyAtIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKTsKKyAgICAKKyAgICBDRlVSTFJlZiBy
ZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMg
LSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIs
IHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09M
YXRpbjEsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIAorICAgIHJldHVybiByZXN1bHQgPyBD
RkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworfQorCitOU1VSTCAqVVJMQnlSZW1vdmlu
Z1VzZXJJbmZvKE5TVVJMICpVUkwpCit7CisgICAgcmV0dXJuIFVSTEJ5UmVtb3ZpbmdDb21wb25l
bnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKFVSTCwga0NGVVJMQ29tcG9uZW50VXNlckluZm8pOwor
fQorCitOU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqVVJMKQoreworICAgIFVJbnQ4ICpi
dWZmZXIgPSAoVUludDggKiltYWxsb2MoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOworICAgIENG
SW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkws
IGJ1ZmZlciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOworICAgIGlmIChieXRlc0ZpbGxlZCA9
PSAtMSkgeworICAgICAgICBDRkluZGV4IGJ5dGVzVG9BbGxvY2F0ZSA9IENGVVJMR2V0Qnl0ZXMo
KF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7CisgICAgICAgIGJ1ZmZlciA9IChV
SW50OCAqKXJlYWxsb2MoYnVmZmVyLCBieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBieXRlc0Zp
bGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLCBieXRl
c1RvQWxsb2NhdGUpOworICAgICAgICBBU1NFUlQoYnl0ZXNGaWxsZWQgPT0gYnl0ZXNUb0FsbG9j
YXRlKTsKKyAgICB9CisgICAgCisgICAgLy8gYnVmZmVyIGlzIGFkb3B0ZWQgYnkgdGhlIE5TRGF0
YQorICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpidWZmZXIg
bGVuZ3RoOmJ5dGVzRmlsbGVkIGZyZWVXaGVuRG9uZTpZRVNdOworICAgIAorICAgIE5TVVJMICpi
YXNlVVJMID0gKF9fYnJpZGdlIE5TVVJMICopQ0ZVUkxHZXRCYXNlVVJMKChfX2JyaWRnZSBDRlVS
TFJlZilVUkwpOworICAgIGlmIChiYXNlVVJMKQorICAgICAgICByZXR1cm4gb3JpZ2luYWxVUkxE
YXRhKFVSTFdpdGhEYXRhKGRhdGEsIGJhc2VVUkwpKTsKKyAgICByZXR1cm4gZGF0YTsKK30KKwor
c3RhdGljIENGU3RyaW5nUmVmIGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVy
cyhDRlN0cmluZ1JlZiBzdHJpbmcpCit7CisgICAgQ0ZJbmRleCBsZW5ndGggPSBDRlN0cmluZ0dl
dExlbmd0aChzdHJpbmcpOworICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5H
VEg+IHNvdXJjZUJ1ZmZlcihsZW5ndGgpOworICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVycyhzdHJp
bmcsIENGUmFuZ2VNYWtlKDAsIGxlbmd0aCksIHNvdXJjZUJ1ZmZlci5kYXRhKCkpOworICAgIAor
ICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IG91dEJ1ZmZlcjsKKyAg
ICAKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50OworICAgIENG
SW5kZXggaSA9IDA7CisgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgVUNoYXIzMiBj
OworICAgICAgICBVMTZfTkVYVChzb3VyY2VCdWZmZXIsIGksIGxlbmd0aCwgYykKKyAgICAgICAg
CisgICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykp
IHsKKyAgICAgICAgICAgIHVpbnQ4X3QgdXRmOEJ1ZmZlcls0XTsKKyAgICAgICAgICAgIENGSW5k
ZXggb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIFVCb29sIGZhaWx1cmUgPSBmYWxzZTsKKyAgICAg
ICAgICAgIFU4X0FQUEVORCh1dGY4QnVmZmVyLCBvZmZzZXQsIDQsIGMsIGZhaWx1cmUpCisgICAg
ICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3Ig
KENGSW5kZXggaiA9IDA7IGogPCBvZmZzZXQ7ICsraikgeworICAgICAgICAgICAgICAgIG91dEJ1
ZmZlci5hcHBlbmQoJyUnKTsKKyAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKHVwcGVy
TmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZmZXJbal0pKTsKKyAgICAgICAgICAgICAgICBv
dXRCdWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZmZXJbal0p
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFVDaGFyIHV0
ZjE2QnVmZmVyWzJdOworICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOworICAgICAgICAg
ICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOworICAgICAgICAgICAgVTE2X0FQUEVORCh1dGYxNkJ1
ZmZlciwgb2Zmc2V0LCAyLCBjLCBmYWlsdXJlKQorICAgICAgICAgICAgQVNTRVJUKCFmYWlsdXJl
KTsKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8IG9mZnNldDsgKytqKQorICAg
ICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXRmMTZCdWZmZXJbal0pOworICAgICAgICB9
CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgb3V0QnVmZmVyLmRhdGEoKSwg
b3V0QnVmZmVyLnNpemUoKSk7Cit9CisKK05TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VS
TCAqVVJMKQoreworICAgIE5TRGF0YSAqZGF0YSA9IG9yaWdpbmFsVVJMRGF0YShVUkwpOworICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJlZm9yZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihbZGF0YSBieXRlc10pOworICAgIGludCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOwor
ICAgIAorICAgIGJvb2wgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSBmYWxzZTsKKyAgICAKKyAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gYmVmb3JlOworICAgIGludCBidWZmZXJMZW5ndGgg
PSAobGVuZ3RoICogMykgKyAxOworICAgIFZlY3RvcjxjaGFyLCBVUkxfQllURVNfQlVGRkVSX0xF
TkdUSD4gYWZ0ZXIoYnVmZmVyTGVuZ3RoKTsgLy8gbGFyZ2UgZW5vdWdoIHRvICUtZXNjYXBlIGV2
ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIgKnEgPSBhZnRlci5kYXRhKCk7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBwW2ld
OworICAgICAgICAvLyB1bmVzY2FwZSBlc2NhcGUgc2VxdWVuY2VzIHRoYXQgaW5kaWNhdGUgYnl0
ZXMgZ3JlYXRlciB0aGFuIDB4N2YKKyAgICAgICAgaWYgKGMgPT0gJyUnICYmIChpICsgMSA8IGxl
bmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAmJiBpICsgMiA8IGxlbmd0aCAmJiBp
c0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7CisgICAgICAgICAgICBhdXRvIHUgPSB0b0FTQ0lJ
SGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKKyAgICAgICAgICAgIGlmICh1ID4gMHg3Zikg
eworICAgICAgICAgICAgICAgIC8vIHVuZXNjYXBlCisgICAgICAgICAgICAgICAgKnErKyA9IHU7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGRvIG5vdCB1bmVzY2Fw
ZQorICAgICAgICAgICAgICAgICpxKysgPSBwW2ldOworICAgICAgICAgICAgICAgICpxKysgPSBw
W2kgKyAxXTsKKyAgICAgICAgICAgICAgICAqcSsrID0gcFtpICsgMl07CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcSsr
ID0gYzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBh
biBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgorICAgICAgICAgICAgaWYgKGMg
PT0gJy0nICYmIGkgPj0gMyAmJiAhbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgJiYgKHFbLTRdIHwg
MHgyMCkgPT0gJ3gnICYmIChxWy0zXSB8IDB4MjApID09ICduJyAmJiBxWy0yXSA9PSAnLScpCisg
ICAgICAgICAgICAgICAgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSB0cnVlOworICAgICAgICB9
CisgICAgfQorICAgICpxID0gJ1wwJzsKKyAgICAKKyAgICAvLyBDaGVjayBzdHJpbmcgdG8gc2Vl
IGlmIGl0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gZGlzcGxheSB1c2luZyBVVEYtOCAgCisgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiByZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6
YWZ0ZXIuZGF0YSgpXTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAvLyBDb3VsZCBub3Qg
Y29udmVydCB0byBVVEYtOC4KKyAgICAgICAgLy8gQ29udmVydCBjaGFyYWN0ZXJzIGdyZWF0ZXIg
dGhhbiAweDdmIHRvIGVzY2FwZSBzZXF1ZW5jZXMuCisgICAgICAgIC8vIFNoaWZ0IGN1cnJlbnQg
c3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgorICAgICAgICAvLyB0aGVuIHdlIHdpbGwg
Y29weSBiYWNrIGJ5dGVzIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIAorICAgICAgICAvLyBh
cyB3ZSBjb252ZXJ0LgorICAgICAgICBpbnQgYWZ0ZXJsZW5ndGggPSBxIC0gYWZ0ZXIuZGF0YSgp
OworICAgICAgICBjaGFyICpwID0gYWZ0ZXIuZGF0YSgpICsgYnVmZmVyTGVuZ3RoIC0gYWZ0ZXJs
ZW5ndGggLSAxOworICAgICAgICBtZW1tb3ZlKHAsIGFmdGVyLmRhdGEoKSwgYWZ0ZXJsZW5ndGgg
KyAxKTsgLy8gY29waWVzIHRyYWlsaW5nICdcMCcKKyAgICAgICAgY2hhciAqcSA9IGFmdGVyLmRh
dGEoKTsKKyAgICAgICAgd2hpbGUgKCpwKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMg
PSAqcDsKKyAgICAgICAgICAgIGlmIChjID4gMHg3ZikgeworICAgICAgICAgICAgICAgICpxKysg
PSAnJSc7CisgICAgICAgICAgICAgICAgKnErKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0
KGMpOworICAgICAgICAgICAgICAgICpxKysgPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChj
KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICpxKysgPSAqcDsKKyAgICAg
ICAgICAgIHArKzsKKyAgICAgICAgfQorICAgICAgICAqcSA9ICdcMCc7CisgICAgICAgIHJlc3Vs
dCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOworICAgIH0K
KyAgICAKKyAgICBpZiAobWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcpIHsKKyAgICAgICAgLy8gRklY
TUU6IElzIGl0IGdvb2QgdG8gaWdub3JlIHRoZSBmYWlsdXJlIG9mIG1hcEhvc3ROYW1lcyBhbmQg
a2VlcCByZXN1bHQgaW50YWN0PworICAgICAgICBhdXRvIG1hcHBlZFJlc3VsdCA9IG1hcEhvc3RO
YW1lcyhyZXN1bHQuZ2V0KCksIE5PKTsKKyAgICAgICAgaWYgKG1hcHBlZFJlc3VsdCkKKyAgICAg
ICAgICAgIHJlc3VsdCA9IG1hcHBlZFJlc3VsdDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBbcmVz
dWx0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOworICAgIHJldHVybiBD
RkJyaWRnaW5nUmVsZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMo
KF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSkpOworfQorCitCT09MIGlzVXNlclZp
c2libGVVUkwoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIHZhbGlkID0gWUVTOworICAg
IC8vIGdldCBidWZmZXIKKyAgICAKKyAgICBjaGFyIHN0YXRpY19idWZmZXJbMTAyNF07CisgICAg
Y29uc3QgY2hhciAqcDsKKyAgICBCT09MIHN1Y2Nlc3MgPSBDRlN0cmluZ0dldENTdHJpbmcoKF9f
YnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZywgc3RhdGljX2J1ZmZlciwgMTAyMywga0NGU3RyaW5n
RW5jb2RpbmdVVEY4KTsKKyAgICBwID0gc3VjY2VzcyA/IHN0YXRpY19idWZmZXIgOiBbc3RyaW5n
IFVURjhTdHJpbmddOworICAgIAorICAgIGludCBsZW5ndGggPSBzdHJsZW4ocCk7CisgICAgCisg
ICAgLy8gY2hlY2sgZm9yIGNoYXJhY3RlcnMgPD0gMHgyMCBvciA+PTB4N2YsICUtZXNjYXBlIHNl
cXVlbmNlcyBvZiAlN2YsIGFuZCB4bi0tLCB0aGVzZQorICAgIC8vIGFyZSB0aGUgdGhpbmdzIHRo
YXQgd2lsbCBsZWFkIF93ZWJfdXNlclZpc2libGVTdHJpbmcgdG8gYWN0dWFsbHkgY2hhbmdlIHRo
aW5ncy4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIHVu
c2lnbmVkIGNoYXIgYyA9IHBbaV07CisgICAgICAgIC8vIGVzY2FwZSBjb250cm9sIGNoYXJhY3Rl
cnMsIHNwYWNlLCBhbmQgZGVsZXRlCisgICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA9PSAweDdm
KSB7CisgICAgICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0gZWxzZSBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdp
dChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAy
XSkpIHsKKyAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAxXSwgcFtp
ICsgMl0pOworICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7CisgICAgICAgICAgICAgICAgdmFs
aWQgPSBOTzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGkgKz0gMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciAi
eG4tLSIgaW4gYW4gZWZmaWNpZW50LCBub24tY2FzZS1zZW5zaXRpdmUsIHdheS4KKyAgICAgICAg
ICAgIGlmIChjID09ICctJyAmJiBpID49IDMgJiYgKHBbaSAtIDNdIHwgMHgyMCkgPT0gJ3gnICYm
IChwW2kgLSAyXSB8IDB4MjApID09ICduJyAmJiBwW2kgLSAxXSA9PSAnLScpIHsKKyAgICAgICAg
ICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB2YWxpZDsKK30KKworTlNSYW5n
ZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNSYW5nZSBjb2xv
biA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjoiXTsKKyAgICBpZiAoY29sb24ubG9jYXRpb24g
IT0gTlNOb3RGb3VuZCAmJiBjb2xvbi5sb2NhdGlvbiA+IDApIHsKKyAgICAgICAgTlNSYW5nZSBz
Y2hlbWUgPSB7MCwgY29sb24ubG9jYXRpb259OworICAgICAgICAvKgorICAgICAgICAgVGhpcyBz
dHVmZiBpcyB2ZXJ5IGV4cGVuc2l2ZS4gIDEwLTE1IG1zZWMgb24gYSAyeDEuMkdIei4gIElmIG5v
dCBjYWNoZWQgaXQgc3dhbXBzCisgICAgICAgICBldmVyeXRoaW5nIGVsc2Ugd2hlbiBhZGRpbmcg
aXRlbXMgdG8gdGhlIGF1dG9jb21wbGV0ZSBEQi4gIE1ha2VzIG1lIHdvbmRlciBpZiB3ZQorICAg
ICAgICAgZXZlbiBuZWVkIHRvIGVuZm9yY2UgdGhlIGNoYXJhY3RlciBzZXQgaGVyZS4KKyAgICAg
ICAgICovCisgICAgICAgIE5TU3RyaW5nICphY2NlcHRhYmxlQ2hhcmFjdGVycyA9IEAiQUJDREVG
R0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkr
Li0iOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVy
U2V0Pj4gSW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldChbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3Rl
clNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGludmVydGVk
U2V0XSk7CisgICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0
ZXJGcm9tU2V0OkludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQuZ2V0KCkuZ2V0KCkgb3B0aW9uczow
IHJhbmdlOnNjaGVtZV07CisgICAgICAgIGlmIChpbGxlZ2Fscy5sb2NhdGlvbiA9PSBOU05vdEZv
dW5kKQorICAgICAgICAgICAgcmV0dXJuIHNjaGVtZTsKKyAgICB9CisgICAgcmV0dXJuIE5TTWFr
ZVJhbmdlKE5TTm90Rm91bmQsIDApOworfQorCitCT09MIGxvb2tzTGlrZUFic29sdXRlVVJMKE5T
U3RyaW5nICpzdHJpbmcpCit7CisgICAgLy8gVHJpbSB3aGl0ZXNwYWNlIGJlY2F1c2UgX3dlYl9V
UkxXaXRoU3RyaW5nIGFsbG93cyB3aGl0ZXNwYWNlLgorICAgIHJldHVybiByYW5nZU9mVVJMU2No
ZW1lKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCkpLmxvY2F0aW9uICE9
IE5TTm90Rm91bmQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvVVJM
Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ1MWZhZGJiNjhkNjQ3NmQwY2E0NjA2ODRhOTcyYjhjNTM1
MGRhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1t
CkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDx3dGYvVVJMLmg+CisK
KyNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCisjaW1wb3J0ICJOU1VSTEV4dHJhcy5oIgorI2ltcG9y
dCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMUGFyc2VyLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK0BpbnRlcmZhY2UgTlNTdHJpbmcgKFdURk5T
VVJMRXh0cmFzKQorLSAoQk9PTClfd2ViX2xvb2tzTGlrZUlQQWRkcmVzczsKK0BlbmQKKworbmFt
ZXNwYWNlIFdURiB7CisKK1VSTDo6VVJMKE5TVVJMICp1cmwpCit7CisgICAgaWYgKCF1cmwpIHsK
KyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
RklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KKyAgICBDU3RyaW5n
IHVybEJ5dGVzOworICAgIFdURjo6Z2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXVybCwg
dXJsQnl0ZXMpOworICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsKKyAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKworVVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29u
c3QKK3sKKyAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlkZ2VkIENGVVJMIGJlY2F1c2Ug
Y3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdvdWxkIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2lu
YWwgc3RyaW5nLgorICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxpdHkgd2hlbiByb3VuZC10cmlwcGlu
ZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgorICAgIHJldHVybiBjcmVhdGVDRlVSTCgpLmJyaWRnaW5n
QXV0b3JlbGVhc2UoKTsKK30KKworUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJM
KCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBi
cmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9y
dGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KKyAgICAgICAgcmV0dXJuIChfX2JyaWRn
ZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl0pLmdl
dCgpOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7CisKKyAgICAvLyBG
YXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMgOC1iaXQgdG8gYXZvaWQgY29weWluZyBpbnRv
IGEgdGVtcG9yYXJ5IGJ1ZmZlci4KKyAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpKSkK
KyAgICAgICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVuZ3Ro
KCkpOworICAgIGVsc2UgeworICAgICAgICAvLyBTbG93ZXIgcGF0aC4KKyAgICAgICAgV1RGOjpV
UkxDaGFyQnVmZmVyIGJ1ZmZlcjsKKyAgICAgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7CisgICAg
ICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CisgICAgfQorCisgICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAm
JiAhV1RGOjppc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjZlVSTDsKK30KKworYm9vbCBVUkw6Omhvc3RJ
c0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCit7CisgICAgcmV0dXJuIFtob3N0LmNyZWF0ZU5T
U3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSBfd2ViX2xvb2tzTGlrZUlQQWRkcmVzc107Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaCBi
L1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjRmYjM0
Zjg2ZjI0YTQ2MjFlMGY5MDY3MDY3NzVmOTQ4MTg1OTk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIFVTRShTT1VQKQorCisjaW5jbHVk
ZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cFVSSSwgc291cF91
cmlfZnJlZSkKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBDb29raWUsIHNvdXBfY29va2ll
X2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwTWVzc2FnZUhlYWRlcnMsIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQnVmZmVy
LCBzb3VwX2J1ZmZlcl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVT
RShTT1VQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9VUkxTb3VwLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkYmM3ZTE3YjgzODkx
OWM1MGNmZmZiZDZiNDVjZjhjYjNiODlhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL2dsaWIvVVJMU291cC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoU09VUCkKKworI2luY2x1ZGUg
PGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
UGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworVVJMOjpVUkwoU291cFVSSSogc291cFVSSSkKK3sKKyAgICBpZiAoIXNvdXBVUkkpIHsK
KyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxT
RSkpOworICAgIFVSTFBhcnNlciBwYXJzZXIoU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0
KCkpKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKworICAgIGlmICghaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTU2LiBsaWJzb3VwCisgICAgLy8gZG9lcyBub3Qg
YWRkIHRoZSBwYXNzd29yZCB0byB0aGUgVVJMIHdoZW4gY2FsbGluZworICAgIC8vIHNvdXBfdXJp
X3RvX3N0cmluZywgYW5kIHRodXMgdGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkKKyAgICAv
LyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWlu
dGFpbmVyIGRvZXMKKyAgICAvLyBub3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGgg
cHJldmlvdXMgaW1wbGVtZW50YXRpb25zCisgICAgaWYgKHNvdXBVUkktPnBhc3N3b3JkKQorICAg
ICAgICBzZXRQYXNzKFN0cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsKK30KKwor
R1VuaXF1ZVB0cjxTb3VwVVJJPiBVUkw6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAoreworICAgIGlm
ICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBHVW5p
cXVlUHRyPFNvdXBVUkk+KHNvdXBfdXJpX25ldyhzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Cit9
CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQoreworICAgIHJl
dHVybiAhaG9zdC5pc0VtcHR5KCkgJiYgZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGhvc3QudXRm
OCgpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCmluZGV4IGQw
YjkwMzhmODI2NDdiZTBhMTVmNWNlYTRmODAxOTYxZjY3MmYyOWIuLjdlYzM5ODJlMTEwYjdhZjcz
MTQ5YWU5YWVjNTUxYjBkMDM2YjE0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaApAQCAtNDgsNyArNDgsNiBAQCBjbGFzcyBQYXlt
ZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CiBj
bGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czsKIHN0cnVjdCBBcHBsZVBheUxpbmVJdGVtOwogc3RydWN0IEFwcGxlUGF5
UGF5bWVudFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmgKaW5kZXggYjA3NTlj
ZGExOGMwM2M3M2RiMGJkMWRjZjg0NTMxYjI0YjUyZDA5ZC4uM2FhMjJmNWI4MmQ2YzJjMTgwZWNl
ODE0NTg1ZDg1MTA4OTRiMWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaApAQCAt
MjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJFdmVudC5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggYmQ1NTM0YzJkZjkxMjU4N2RkMjc3ODkyMjk4YmQ3
ZDQxZTdhOWFmYy4uZTM3MzM1N2NjMDdmZWE1OWRlOTdlYzU1ZDVjODg5M2QwNjM4NjRkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5j
bHVkZSAiUGF5bWVudFNlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZDQ2NTJjZmVkNTBm
ZmMxZDJmNmI2MmI1ZTRiZGQwZjkyODYzZDQ1Ni4uYTU0NzE1NDk3M2MwMWY4YmVhNWQxZGNhMTIx
NWQ5ZDQ0OWUwMDE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIFBheW1lbnRD
b250YWN0OwogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKIGNsYXNzIFBheW1lbnRNZXRo
b2Q7CiBjbGFzcyBQYXltZW50U2Vzc2lvbjsKLWNsYXNzIFVSTDsKIGVudW0gY2xhc3MgUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXM7CiBzdHJ1Y3QgUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ7
CiBzdHJ1Y3QgUGF5bWVudE1ldGhvZFVwZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmluZGV4IGU5
MTVjYTE2ZGI0MDI0MzhkOGJkODAwMTlkYWRlOWIzNjc3MDNkMTcuLmU3N2YyY2E5OGZhZmM1NTM0
ZTRmNjBlOGNmOTA0MDYwZDI4YjEzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaApAQCAtMzQsNyAr
MzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNz
aW9uOwotY2xhc3MgVVJMOwogc3RydWN0IFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Owogc3Ry
dWN0IFBheW1lbnRNZXRob2RVcGRhdGU7CiBzdHJ1Y3QgU2hpcHBpbmdDb250YWN0VXBkYXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5oCmlu
ZGV4IDBhMzUwN2UyNjBlNzQ2N2UwYWMwZDMxYzk0OTM3NTRhMzNmZjJhNjQuLjhmN2E0YjY1MGYw
YjkyZjgxNWY5YjVkNWNjZTE3OWE3ZDUyOTEwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmgKQEAgLTM3LDcgKzM3LDYgQEAgY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBQYXltZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQ
YXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogCiBjbGFzcyBQYXltZW50U2Vzc2lvbiA6IHB1Ymxp
YyB2aXJ0dWFsIFBheW1lbnRTZXNzaW9uQmFzZSB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVz
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0
aW9uTWFuaWZlc3QuaAppbmRleCA5OThiNzg0NjBjYzg3ZWQzOGU5MTg2ZjA4ZmQyOTk3YzYzZjg5
ZDcyLi5iMmYxYjQ5ZjNlYjNhM2VlODBhNGZiMzI5ZjY5ZThiZjhlNTFhOThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25N
YW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVz
dC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2lmIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9F
bnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCmluZGV4IGU2ODk2ZTc4NzhiMmMyYjEwZjY2
MTNjZGI5ODVkMGI2ZTI1OGQ5NGEuLjQ4OTc2ZDJhMzUyZTIwZGU0MTRhNmJmOThlNTY2ZWU0NzA0
NzVlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRv
ckJlYWNvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9y
QmVhY29uLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAzOGQ1YTY2MDhiZDVmNGQ0
ODg4ODEyNmY5YjU4ZjIwMmQ5NzAyMTNlLi45YTY0ZWU4Y2IzZmM0MTRhNDYyNTUxZGJiYjEzODEy
YzRjMGNiZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApA
QCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUg
IlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApp
bmRleCA2N2RlMmU1NDYyYmYzZGM2YWI4MGMyNGEzMThjNDA1NGZjZjkyY2E1Li40MDExYjM3Mzhj
OTc5YmI5NzhhZGZkY2ZjYmE4NTRjYWU4YzVkZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiRmV0Y2hC
b2R5Q29uc3VtZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAppbmRl
eCBlMzY0NGE4NzUxOTU5N2Y2NGU1M2YzY2NkYWM3NDQwMzk3NjAwMjNkLi42ZjNkZmUzNmYwNTM4
OTkxNDdjNGVhZGVmY2UwMmQ0MzJmOTk5M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
UmVnaXN0cnkuY3BwCmluZGV4IDJlODJjMzI2MTg2NWQ3YTk4ODhhNWMyYzZiODU3NTRiNDJjYmE0
NTkuLjk4YzY2M2I2ZmM2ZGJkYTI5MzZhN2RhMjY4OTZkZjAwMzIzM2JkYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJl
Z2lzdHJ5LmNwcApAQCAtMzUsOSArMzUsOSBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAK
ICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKaW5k
ZXggMmI4OTRlMGNhNDNiZTQxYjViMTBmNGQxOTg5MTM0MzQ4NzkyODMwNi4uMDMzNjc0ZjI2ZDM0
NTg1OWE0YWExY2RhMTIwZTZkODg0MTU0NmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKQEAgLTM4LDcg
KzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBNZWRp
YVNvdXJjZTsKIAogY2xhc3MgTWVkaWFTb3VyY2VSZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBVUkxS
ZWdpc3RyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwCmluZGV4IDdlMjIxNTAyNDA4ZmJjNDkxZTg3MDY2OTc2ODY3OWViZTAwNDM0
NjIuLjhhYzE0NTc5NTBhNzkxODlkM2FjZDJkMDcwNTY2YTIxODdiY2ZhZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC00
MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJl
Z2lzdHJ5LmNwcAppbmRleCBkNjlkY2NmODZlMzhhYTNmNzNjY2E3MTlkZjFiOWViZmZiMmMyMDA4
Li42NDE1ZmZhYmE1YzlhODQ4MTM0ZTUyMjMzNGRkM2E2MDFlYzJiZjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdp
c3RyeS5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCmluZGV4
IGEyNjdmMTEwMGJlMTdjMmEwYjI5YTIyMWUzYjE2OWM5Nzc0YWEyMmQuLmY2ZDIzZDJkNzkwZjBk
NGYyNzUxMDViYjQwNmIxOWUzY2UwZTQ5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCkBAIC0zNiw3ICsz
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW07CiBjbGFzcyBN
ZWRpYVN0cmVhbVByaXZhdGU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIE1lZGlhU3RyZWFtUmVnaXN0
cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVu
dFV0aWxzQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1
dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAppbmRleCBiNjJkOWFmYThlYWU1YjRm
NmZlMzRiNGM1OGNkYjRmZGNjZDY1YTA2Li40NzA2NzNhMDllOTVmMDMwZjVlZWFjNDIzOTg2OTZm
YTEwNDNlMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNv
bnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHND
bGllbnQuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE5BVklHQVRPUl9DT05URU5U
X1VUSUxTKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5k
ZXggZmYwZGM1NGRhZjFlNTAyMzhhZmEzNWYxMzI4OWU1YjgzZTJiMmI5Yy4uZmVkYTFhMTNhZWQy
MWM0NGJhZDMzODk2MjlhNzI1M2Y5MmIxYzllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMzgsNyArMzgsNyBAQAog
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blBlcm1pc3Npb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmgKaW5kZXggYjA5M2QzYTVmZmM5
NTY3MTJlYzkxMGQ0Y2ZhMTIyNzFlMjhhOWJhYS4uMjA3NzljZWRkMjZmNmI5NDcxMTM4NDRmZDk2
MWZiZjhiYjAwNjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaApAQCAtMjgsNyAr
MjgsNyBAQAogI2lmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJFdmVudC5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXF1ZXN0LmgKaW5kZXggZTNiZDdlNTMyY2YyM2YyNTc2NjY1NGUxMGMzNDVk
Y2JjYzM0MDg3Mi4uM2QxODgxYzU1N2I3ZDM3NjhkNDMzYjA4NmUyZjdmNGE3OTlkZDkzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlcXVlc3QuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRNZXRob2RDaGFu
Z2VFdmVudC5oIgogI2luY2x1ZGUgIlBheW1lbnRPcHRpb25zLmgiCiAjaW5jbHVkZSAiUGF5bWVu
dFJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKaW5kZXggNmI1
NTQyZTA4OTAwN2Q5YTQ5NzA0ZjJmYjNjZjQzOThhMGZiNGUwYy4uZWZlYWYwMGM5ZTM1OGVkNjgx
NTViNThhMTFhZDQ3MjU1NjFlMDI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgUmVu
ZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJUcmVlUG9zaXRpb247CiBjbGFzcyBTZXR0aW5nczsKIGNs
YXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFBsdWdpblJlcGxhY2VtZW50IDog
cHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luUmVwbGFjZW1lbnQ+IHsKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDc2MGE0ZTcx
MTRmNzQ3NTgyMjNhZGQxZmIwZjg1NmQ2ZTg1ZDMwY2UuLjRlZjBiNGRkZTAxNzU0ZmQ3YmQ2ODky
MmE0NTVkOTM2N2VjYjg2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaApAQCAtNzEsNyArNzEsNiBAQCBjbGFzcyBPc2NpbGxhdG9yTm9kZTsK
IGNsYXNzIFBhbm5lck5vZGU7CiBjbGFzcyBQZXJpb2RpY1dhdmU7CiBjbGFzcyBTY3JpcHRQcm9j
ZXNzb3JOb2RlOwotY2xhc3MgVVJMOwogY2xhc3MgV2F2ZVNoYXBlck5vZGU7CiAKIC8vIEF1ZGlv
Q29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBB
dWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
CmluZGV4IGNhNDA2YWY0YzZmNTIyNTFmOWY2Y2NhOGM0NWQ0NDNhYmI4ZDk4NTcuLmE4NWRmZDc3
NDRjZDQ3OWFiMTIzZDMzMjcxMWVlOGYyM2QxMDFkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIEFycmF5QnVmZmVyOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBCbG9iOwotY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENs
aWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApp
bmRleCA5MDEyMWY3MGQzMDg4MGMyYTAyZjk2NTgwYWUwNTcyOGZiOGJkZGM4Li41MDQzYzQ5NDIz
NWQwNzA4NTUwNmFhYmRjZTNiYzRkMGI4NGJiYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldl
YlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA3NDI3YmI1NTcwNzVlZGE4OGZi
ZDY2MTIxZTdkOTBhM2YxOWNkZDM0Li4xYjE5ZWRhYjRjOWE2ZjM4MTJmNzEzMGI3NmE2Yjk1Mzdj
NWM3NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNDQsNyArNDQsNyBAQAogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlw
ZS5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oCmluZGV4IGNmMmJkN2FjMGFmMWIyNzRkOTgzYmQ2YmZjZjI0ZTM4MWQxMjIzZTcuLmU5
NmY4NjAyYTg3YTkzNTI2OTY5Njc2NWM4MGU3MzAyY2Y3MzdlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAg
LTMxLDcgKzMxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29va2llUmVxdWVzdEhl
YWRlckZpZWxkUHJveHkuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlNvY2tldEV4dGVu
c2lvbkRpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3Iu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggODEyZjhhMDJk
MzBhMTY4M2NlOTQ2ODRmODcxMDIwZTZiYmI5OWQxOC4uMzg5NWU0NDk2NzUwN2M1ZWU5OWNjMjJm
NDNlNzIxZjI5MTM3NWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmgKQEAgLTM5LDcgKzM5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IDk0MzM5ODQ3NTdlMWI0YzkxNDVlODBiN2QyMjcxZjllMjRh
Mjc0MGIuLjA2OGI1YzI2MjNjNDEwMGM5N2U2NzMyY2I1MjcxYzMxZDBlZGRjN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xODcsNyArMTg3LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAogICAgIHBs
YXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLm1tCiAKLSAgICBwbGF0Zm9y
bS9jZi9DRlVSTEV4dHJhcy5jcHAKICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAg
ICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwCkBAIC0xOTUsNyArMTk0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiAgICAg
cGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgcGxhdGZvcm0vY29j
b2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2Nv
YS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKQEAgLTM5OSw3ICszOTcsNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0KICAg
ICBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2su
bW0KLSAgICBwbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL1VzZXJBY3Rp
dml0eU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9WYWxpZGF0aW9uQnViYmxlTWFjLm1tCiAgICAg
cGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtV2luLmNtYWtlCmluZGV4IGEyNGE5MTk1MzYwYTNjNWI0NjBkNjI4ZTJmODQ0ZWQwMTkx
OWZkNzIuLjY1ODZiMDI0NjFhNDcyMTdlZjA4ZDVlYzBiM2NkYzMxNjY2MTEzZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNTAsMTIgKzI1MCwxMCBAQCBpZiAoVVNFX0NGKQogICAg
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBsb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcAogCi0gICAgICAgIHBsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNw
cAogICAgICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCi0gICAgICAgIHBs
YXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgICAgIHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0
ZUNGV2luLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGZjMjg4YjAxMzkxZDc1MmIyNGRjOWZhZTcx
ZWZmMGYwZWI4YmU1YWYuLjYyMTkxYzAyZTM1MzcyZDc2YjMxN2YyNzRmNWE4MzVlNjczMDY4MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xNTM1LDggKzE1MzUsNiBAQCBwbGF0Zm9ybS9UaGVtZS5jcHAK
IHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3Bw
CiBwbGF0Zm9ybS9UaW1lci5jcHAKLXBsYXRmb3JtL1VSTC5jcHAKLXBsYXRmb3JtL1VSTFBhcnNl
ci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAKIHBsYXRmb3JtL1dlYkNvcmVDcm9zc1Ro
cmVhZENvcGllci5jcHAKIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggNTgxMzZhOTM4YzRlODg5MDJhZDU0YWZmMWQxMTUyOGZmYWM2MTNh
OC4uZmI5ZDkyMDE0NjJhMmYxZWI0NmNjMGJhYTUxYjNhNTY4NjgwYjQwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC0xNzgsNyArMTc4LDYgQEAgcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2Vzc2lvbk1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3BwCiBwbGF0
Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCiAKLXBsYXRmb3JtL2NmL0NGVVJMRXh0cmFz
LmNwcAogcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogcGxhdGZvcm0vY2YvS2V5ZWREZWNv
ZGVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE4Niw3ICsxODUs
NiBAQCBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKIHBsYXRmb3JtL2Nm
L01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcAogcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2Vy
dmVyLmNwcAogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCi1wbGF0Zm9ybS9jZi9VUkxD
Ri5jcHAKIAogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2Eu
bW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKQEAgLTQ1
OCw3ICs0NTYsNiBAQCBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCiBwbGF0Zm9ybS9t
YWMvU3VkZGVuVGVybWluYXRpb24ubW0KIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQogcGxhdGZv
cm0vbWFjL1RocmVhZENoZWNrLm1tIEBuby11bmlmeQotcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQog
cGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQogcGxhdGZvcm0vbWFjL1VzZXJBZ2VudE1h
Yy5tbQogcGxhdGZvcm0vbWFjL1ZhbGlkYXRpb25CdWJibGVNYWMubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMzQ0NGVlZTY1
NjM5ZjVlNjc5ZDk2ODczMGNiMzkzOTM4ZGRjMGEwLi45YTg4MzJiNWJlNDI4NmVlNjZkZjRhZTkx
NDBhNzJlMzQ0ZDY3OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQxLDcgKzE4NDEsNiBAQAogCQk1QzQzMDRCMDE5MUFD
OTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRDE5MUFDOTA4MDAwRTJCQzAgLyog
RVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgKi87IH07CiAJCTVDNDMwNEIxMTkxQUM5MDgwMDBFMkJD
MCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4
dHVyZUxPRC5oICovOyB9OwogCQk1QzQzMDRCNjE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFk
ZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzQzMDRCNDE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmgg
Ki87IH07Ci0JCTVDNkU2NTQzMUQ1Q0VGQkYwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNkU2NTQwMUQ1Q0VEQzkw
MEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4
OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOEM2MDA5MjEyNzZCODcwMDgyRjg4
RiAvKiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEM2MDA3MjEyNzZCMEYwMDgyRjg4RiAvKiBTaG91
bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1Q0ExREVDNjFGNzFGMUM3MDBFNzFCRDMgLyogSFRUUEhlYWRl
ckZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5MTcsNyArMTkxNiw2IEBA
CiAJCTY1NkQzNzQ4MEFEQkE1REUwMEE0NTU0RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2RDM3MzAwQURCQTVE
RTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU3QUZBRkMyMDA0N0EyOTAwNTA5NDY0IC8qIFNw
ZWN0cmVHYWRnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1N0FGQUY4MjAwNDc4OTkwMDUwOTQ2NCAvKiBTcGVjdHJlR2FkZ2V0LmggKi87IH07CiAJ
CTY1ODQzNjg2MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg0MzY4NTBBRTAxQjc0MDBF
NTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM2MDlB
RTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2NTlBN0QxMzBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OUE3
RDEyMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1OUREQzgzMDlFMTk4QkEwMDFCRjND
NiAvKiBKU0RvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTlEREM4MTA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1QTIxNDY4MDk3QTMy
OTEwMEI5MDUwQSAvKiBQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODA1LDcgKzM4MDMsNiBA
QAogCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4QUI1MTNGMUFGQjAwMDcz
NERGMCAvKiBQT0RJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDQkI4QUJBMTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRy
ZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4
QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JCOEFCQjEzRjFBRkIwMDA3MzRE
RjAgLyogUE9EUmVkQmxhY2tUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0JCOEFCNzEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNC
RDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxI
YXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkZCNTNCMERDRDI5Q0YwMDE5QjNF
NSAvKiBKU1dpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkNDMEU4NzYxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkND
MEU4NzQxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5oICovOyB9OwogCQlC
Q0M1QkUwMTBDMEU5MzExMDAxMUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1QkRGRjBDMEU5MzExMDAxMUMy
REIgLyogSlNDU1NTdHlsZVNoZWV0LmggKi87IH07CkBAIC00NjY5LDcgKzQ2NjYsNiBAQAogCQlF
MUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTE0NzA3MTExMDJC
MTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oICovOyB9OwogCQlFMUEzMTYy
RDEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUEzMTYyQjEzNEJDMzJE
MDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBNjQzRjIwRUMwOTcyNTAwNzc5
NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJRTFBOEU1NjcxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUE4RTU2NTE3NTUy
QjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUFERUNCRjBFNzZBQ0YxMDA0QTFBNUUgLyogTWVzc2Fn
ZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
QURFQ0JEMEU3NkFDRjEwMDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQURFQ0NFMEU3NkFEOEIwMDRBMUE1
RSAvKiBNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFBREVDQ0MwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmgg
Ki87IH07CiAJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFERUREODBFNzZC
RDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oICovOyB9OwpAQCAtNjExNiw3ICs2MTEyLDYg
QEAKIAkJMUE5MjdGQ0YxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IG5wYXBpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBOTI3RkQwMTQxNkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gbnBydW50aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBOTI3RkQxMTQxNkExNUIwMDNBODNDOCAvKiBucHR5cGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IG5wdHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQTg0RjAyMTQzQkE3QkQwMDUxRDE1MyAvKiBTY3JvbGxDb250cm9sbGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsQ29udHJvbGxlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBODRGMDMxNDNCQTdCRDAwNTFEMTUz
IC8qIFNjcm9sbENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2Nyb2xsQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUFBRERB
MTE0REI0MDlGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg3NDAsOCArODczNSw2IEBACiAJCTVDNjY4RTY0MUU3QzZDMzUwMEQzMkIz
QiAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzY4OEFBMDFEMzgwNTA5MDAwQjU0RkEgLyogVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzY4OEFBMjFEMzgxMjZGMDAwQjU0RkEgLyogU29ja2V0UHJvdmlkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0UHJvdmlkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1QzZFNjUzRjFENUNFREM5MDBGNzg2MkUgLyogVVJMUGFy
c2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTFBhcnNlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNkU2NTQwMUQ1Q0VEQzkwMEY3ODYy
RSAvKiBVUkxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMUGFy
c2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OEQ3MUQwRjFGMkIwMDlE
MkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTb2NrZXRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzhDNjAw
NzIxMjc2QjBGMDA4MkY4OEYgLyogU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzk3QTMzNjFGNUY3QTY1MDAxMDUyMDcg
LyogUmVjdEVkZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3RFZGdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg5NSw4ICs4ODg4LDYgQEAKIAkJ
NjU3QUZBRkEyMDA0Nzg5QTAwNTA5NDY0IC8qIFNwZWN0cmVHYWRnZXQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFNwZWN0cmVHYWRnZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NTdBRkFGQjIwMDQ3ODlBMDA1MDk0NjQgLyogU3BlY3RyZUdhZGdldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjdHJlR2FkZ2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1l
TG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9h
ZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzUwOUFFNDM0
NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzYwOUFFNDM0
NjAwMkM1MzFGIC8qIFVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJM
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OTM5MjM5MDlBRTQzNUMwMDJDNTMx
RiAvKiBVUkxNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VVJMTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTlBN0QxMjBCNkRCNEQ5
MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN1YnN0aXR1dGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
OUREQzgwMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEyOTA3LDcgKzEyODk4LDYgQEAKIAkJQkNCQjhBQjUxM0YxQUZCMDAwNzM0
REYwIC8qIFBPREludGVydmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBP
REludGVydmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkI4QUI2MTNGMUFG
QjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUE9ESW50ZXJ2YWxUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQkI4QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9EUmVkQmxhY2tUcmVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTEhhc2guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNCRkI1M0EwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXaW5kb3dQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkZCNTNCMERDRDI5Q0YwMDE5QjNF
NSAvKiBKU1dpbmRvd1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDMEU4NzMxQkZF
NzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MUGljdHVyZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTQyNTIsOCArMTQyNDIsNiBAQAogCQlFMUE1Rjk5QTBFN0VBQTI1
MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNj
cmlwdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUE2NDNG
QzBFQzA5N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBOEU1NjQxNzU1MkIyQTAwNzQ4OEU3IC8q
IENGVVJMRXh0cmFzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENG
VVJMRXh0cmFzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBOEU1NjUxNzU1
MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENGVVJMRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIx
RUE4MTRFOUUyN0QwMDQ0OUUxMyAvKiBGaWxlTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRmlsZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVCNzE0
RTlFMzU4MDA0NDlFMTMgLyogRmlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxQUIxRUJCMTRFOUUzN0EwMDQ0OUUxMyAvKiBGaWxlRXJyb3IuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEZpbGVFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjIz
NCw4ICsxNjIyMiw2IEBACiAJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTFBOEU1NjQxNzU1MkIy
QTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCAqLywKLQkJCQlFMUE4RTU2NTE3NTUyQjJBMDA3
NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLywKIAkJCQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUg
LyogRmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQk1MTdBNjNCRjFCNzQzMTdFMDBFN0RDREMgLyog
S2V5ZWREZWNvZGVyQ0YuY3BwICovLAogCQkJCTUxN0E2M0MwMUI3NDMxN0UwMEU3RENEQyAvKiBL
ZXllZERlY29kZXJDRi5oICovLApAQCAtMTYyNDcsNyArMTYyMzMsNiBAQAogCQkJCTJENzZCQjgz
MTk0NTZGODEwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuY3BwICovLAogCQkJCTJENzZCQjgw
MTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCAqLywKIAkJCQk1MTJERDhFMjBE
OTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICovLAotCQkJCTFBOTg5NTZBMEFB
NzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNmOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0Njk5LDExICsyNDY4NCw2IEBACiAJCQkJMTg1
QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oICovLAogCQkJCTkzMzA5RUEx
MDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi8sCiAJCQkJOTMwNUIyNEMwOThGMUI2QjAw
QzI4ODU1IC8qIFRpbWVyLmggKi8sCi0JCQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIFVS
TC5jcHAgKi8sCi0JCQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oICovLAotCQkJ
CUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi8sCi0JCQkJNUM2RTY1M0Yx
RDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgKi8sCi0JCQkJNUM2RTY1NDAxRDVDRURD
OTAwRjc4NjJFIC8qIFVSTFBhcnNlci5oICovLAogCQkJCTg2ODE2MEQxMTg3NjY5QzQwMDIxRTc5
RCAvKiBVc2VyQWN0aXZpdHkuY3BwICovLAogCQkJCTg2ODE2MEQyMTg3NjY5QzQwMDIxRTc5RCAv
KiBVc2VyQWN0aXZpdHkuaCAqLywKIAkJCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNl
ckFnZW50LmggKi8sCkBAIC0yNzQ3Niw3ICsyNzQ1Niw2IEBACiAJCQkJQ0QzMTg2MjMxOTlGMUUy
QTAwMzBBMEY3IC8qIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RkE5MDRDQTE3OEU2MUY1MDA0QzhBMkQgLyog
Q2VydGlmaWNhdGVJbmZvLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMUE4RTU2NzE3NTUyQjJBMDA3
NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzZGRDE1MTZDNzgy
NjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdC
QzY5REQxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNUZGRjEyQjAyNjc2MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUu
aCBpbiBIZWFkZXJzICovLApAQCAtMzA5MTYsMTEgKzMwODk1LDggQEAKIAkJCQlFNEFGQ0ZBNTBE
QUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDA4NkZF
OTgwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEMTc2MkUwMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTI2NzcyNjA1MUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUJDQkQyMUFCMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGNTVCM0RERTEyNTFGMTJEMDAzRUYyNjkgLyogVVJMSW5wdXRUeXBlLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1QzZFNjU0MzFENUNFRkJGMDBGNzg2MkUgLyogVVJMUGFyc2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0MyODlERjFBQTBGRTVEMDA5QTlDRTMgLyogVVJMUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzN0EyMUQ1N0IzRkUwMEFCODVFQSAvKiBVUkxV
dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyNzYzQkYxNjY4OUJGQjAwMkZDQUNCIC8qIFVz
ZXJBY3Rpb25FbGVtZW50U2V0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKaW5kZXggZjNlMzQ2
YmVhN2UxOGJlZDJiODk5MDY3NGI2ZTIyZmM0YTAyNWNjMi4uNjJjZDU0YTg0YWI0YTVmMDJmYWM3
YjcyNWY2MGQ3ZThhZDEyYzJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3Mg
RGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVj
dDsKIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ2Fj
aGVkTW9kdWxlU2NyaXB0TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVkTW9k
dWxlU2NyaXB0TG9hZGVyPiwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRj
aGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmgK
aW5kZXggNTIyYjJmZmMwNDMyYzE4OTRhNDVjMDJiNjk1OWU5ZTYwYTg0MzU2ZS4uZDUzOTFjNjk3
ZDdjZjRmNmY1ZDQwNzljYTI3MmVmNzdlYTljYWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaApAQCAtMzMsNyArMzMsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERvY3VtZW50Owot
Y2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRTY3JpcHRGZXRjaGVyIDogcHVibGljIEpTQzo6U2Ny
aXB0RmV0Y2hlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDg4NjlkYjFmOWEzMmRkYzNkMjA1YzhmZjg1ZDIyOTQw
MTlkMjliMzEuLmQ2Yzc5Y2QyMGFkNTcxMjhhZDdlNjc5NmI1ZTFmNjQxNjFkNDFjMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01
ODksNyArNTg5LDcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2UKIAogYm9vbCBTY3JpcHRDb250
cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRSZXBs
YWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2Ny
aXB0VVJMKQogewotICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAo
IVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSB8fCAhbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhtX2ZyYW1lLmRvY3VtZW50KCkt
PnVybCgpLCBldmVudEhhbmRsZXJQb3NpdGlvbigpLm1fbGluZSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZjdjMDgyNGUwNmNjNzE0Njlj
MDcwZDY4OGU0MjY4MjRjOWMzYzRmMC4uNmU5ZGRjYTA4ZGUwZjY4MThhMDc2NzViYWE2ZjRhZTRk
ZWVlYmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaApAQCAtNjAsNyArNjAsNiBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdDsKIGNsYXNz
IE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIGNsYXNzIFdpZGdldDsKIHN0cnVjdCBFeGNlcHRp
b25EZXRhaWxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVs
ZUxvYWRlci5oCmluZGV4IDkxZmY5OWMxNTBjZmJjOGZiNmVhNzBmNWY1MDQyYzdhYTFlNDM0NGIu
LmE2MDY2ZjRjZTM5OTk5NmM2NTRkYjYwM2MwYTQ3MjRkZDA4NDAzNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCkBAIC0yNywxMCArMjcs
MTAgQEAKIAogI2luY2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIgogI2luY2x1ZGUg
IkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2lu
Y2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggNTZlZTY5MGRlODQxNTlh
NTdjNDI4YTkwNzM5YjIwNTZmZmRkYmZkNi4uYjdkN2ViOTNjYmFjYjc0YTgxYzAwN2U1ZWYwOTgx
MjI1YmM5YTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJj
ZUNvZGUuaApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAj
aW5jbHVkZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdFNv
dXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NvdXJjZVByb3ZpZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCBkMTFiNDJlNmU3ZTc1NDcwNDI3NDMzODEzYzM1OThjNDAwMGU4OTRkLi41ZjNlYTczZjk3
NjQxMjAwNWZjMzkyN2IwNmUxMWI2YjUxODIzZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDUzMiw3ICs0NTMyLDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAoTmVlZHNJbXBsZW1lbnRhdGlv
bkNsYXNzKCRpbnRlcmZhY2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
dXN0b21IZWFwU25hcHNob3R9KSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8SmF2YVNj
cmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPiIpOwogICAgICAgICBBZGRUb0ltcGxJbmNs
dWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJVUkwuaCIpOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHd0Zi9VUkwuaD4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6aGVhcFNuYXBz
aG90KEpTQ2VsbCogY2VsbCwgSGVhcFNuYXBzaG90QnVpbGRlciYgYnVpbGRlcilcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xu
Iik7CkBAIC00NTQ0LDcgKzQ1NDQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
IH0KIAogICAgIGlmICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbikgewotICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJVUkwuaCJ9ID0gMSBpZiAkaW5kZXhlZEdldHRlck9wZXJhdGlvbi0+dHlwZS0+bmFt
ZSBlcSAiRE9NU3RyaW5nIjsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siPHd0Zi9VUkwuaD4ifSA9
IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyI7
CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8gb3Ig
JGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxpc3QiKSB7CiAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ik5vZGUu
aCJ9ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKaW5kZXggMTE3OTU4NzUzNTFiZjJlMzYzYzkx
NGVkZDc0MTM1MWI3NDJhMjlhYy4uNmQ5YmQxN2I2ZDE1NGUwYmYwYTZmZjhiMDFiMDAxZDMzNTZk
ZmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKaW5kZXggNmQ3ZmFhMmI3N2RhZDZhNDczZDA5
Y2E2ZmYyOWIzODk2YzVjNGEyYi4uMDc5YzY2NjI5NGFlZWNhODI3NGFlMmJjZTVlZmU0ZWE3N2Ix
NmI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTTWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTTWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3Bl
cmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlN
YXBMaWtlLmNwcAppbmRleCAwMDhkY2ViYTQyYzZkNGM2ZmIyYzlhOTEzZmZiNmQzM2ZkMGYxYzgz
Li45N2Q0ZjNhYjRmYTE2MDJhZTQ5MGFlODZjOTZlMGMzODQ3OGJmOTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRP
bmx5TWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3Rp
dmVET01PYmplY3QuY3BwCmluZGV4IDYyOTE2ZDM2YmI1NWE2OTMyMjYyZmZhNTVkYzI0Y2U2ZWUz
YmU4NjMuLjRkOWYxNDJjNTQ0MzI4MWU1OGZmY2IwNTU2NGU1Y2RjYmZjNGQ1NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVE
T01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmluZGV4IDY0MDZiZTk5OTAzZDE0YzFiMTcxMDhi
OGZhM2QxMjkyZTFmYzkwNzAuLjRhMDI3OTM2YjlkYjk5MzYwYmZkZDc4YTk3YjZiMzVkNjQ2ODZj
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIuY3BwCmluZGV4IGFkYWQwNDliMTRjNGFhNWYyNWFlYWQ5NDYwYjFjMmJm
YTYxOTIyNGUuLjM0MmEwZGY4ZDFlMjgzNTI4NGJjMzZiZTYxZGJiYmYyN2JiMjhkMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKQEAgLTMwLDEyICsz
MCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKaW5kZXgg
NDYxYzRkOTZhNWYzOTBkYzhmMTkwMDk1Y2I3NDU2NGE3MTA3YTcyMi4uM2FkOGMyMzc5M2E3YTY5
YjgzMzRkZjViZDc1NDMyM2ZkOWFhYjcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcApAQCAt
MzcsMTIgKzM3LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDFkYjBhMzJkNTVlNWNi
N2MwZjk0Yzg1ZjJhZmM5Yzk4MmIyZWIwMGQuLjAwOGI1ZTg5NzY4Njk1ZjI1YzgzM2JhMzQ2MDFk
NGJlNTdkMGUyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5j
bHVkZSAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4
IGUxZjlmMTcwYTZjZDcyM2RiZTk1NTg0ZGNmNWZhZDA0MjQyY2VlODguLmE5NDU0ZTliYTZiOTM4
MDRhM2U5MDU5NGU5YTcwZTYwY2Q2YTFiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAt
MjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNw
cAppbmRleCA3NmM0MGZiMDQ1Nzk1MDNlYTViNTJjNDdlMDQ5NjBkYjIxOTk5ZjNhLi45NWQ3Njcw
NDczODhlMzhjMDEwMDQyOTVkOGNmMTM0NTZiZDQ0YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcApAQCAt
NDEsMTIgKzQxLDEyIEBACiAjaW5jbHVkZSAiSlNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRyYWNlcnMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKaW5k
ZXggODdiMzUzYzViNTk4NTg5ZDU5MDJiNzBlNjRmMzkwNzIxZmE5MmM5My4uMTI3ZmFhOTY3ZDJh
YzUzNmU0NmFiOTNkYmY1NmZkNTI1NGZlMTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiSlNUZXN0U3ViT2JqLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCA1NWRlYThlZWFiMDdmNzUwNWYx
YTZiZGZjYzI0MWI2NzFjYmRlYTU2Li40NWRjMTkyNzA0OWJlMjcyMDU1MmE5OGI3ZGYyMzViMGY1
YTE1YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0zMCwxMSAr
MzAsMTEgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90
QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFy
Z2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAKaW5kZXggMzA4ZTM0ZjAwMWFjMmQ4YjM1M2U4MDUxZDhlYzUxYmJhZGQ2
ZWUwYS4uNzFlM2JmMzc1NDQyOWVjN2E3Y2NjYTgzNTUxZDM5Mjg4YWMxZWVmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFy
Z2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNl
cHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAKaW5kZXggMjM4YTQ4ZjdjNjVmMGQzY2I2ZjFlMDNmN2EyOWU5ZTgyOWVi
Y2JjZi4uZDMyYzA0Y2M1MGVlZGYyNjllZDgwMWQ2OTEyM2Y2YjUwNTQwNDcyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCAzNDIz
OGJjNWQyMTNlYzQ5OWZiZTVhMjU1YzU2MThmMzA2ODViMmRjLi5hYzJiZWJiMmQ5MzI0YTFhMmMy
YWRkNmExNjBkMzdjNzc1YzIzYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IDcxYjhiZGRmNjhkYWVjYzczZTIyMWNl
ODNkNjYwNzNjNzM4YjRlYzguLmIyMGI4M2M3YmU5ZTViMzdiOWNjNTc1ODY2M2UxNzg1NTg1ZTM5
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQogI2luY2x1ZGUgIlRlc3RHbG9iYWxPYmplY3RCdWlsdGlucy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDY2MDc4YmQ2Y2I1
MTFlMWQyZjQ2ODg4MjU4MmE3ZjkxZmJjMDZiYzkuLjU3ODkyNTM3YmU4NzgzMjRhNWRkZThmNmQx
YzU5MmMxYjk2MmI3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cAppbmRleCA2MjAzY2MwYjk4NzM5MjQ3N2ExZDliZjdiNTcwY2JlMzdjMTBlMzRmLi4zNTVhZGNk
OTBhZWZjZjU5NWQwN2VkNTQ2ZTRjYWFiMjBiM2VlMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjcsMTMgKzI3
LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDNmZGM1NjA0MDM1MGUxMzIxZGIyNDY5N2I3
MjcyNTU3ZGQxYTkwOGQuLjc2OTY3M2FmYmI0ZTYyMDFkOTRjMzJhODRjZjI0OWVlNjAzODhmZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCkBAIC0yOSwxMyArMjksMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmlu
ZGV4IDRjNjRjMTllYjg1ODI2MDI5ZjYwYjkyNWIzMTllMTFhNzAzZDk0ZjcuLjY0YTM3ODk5YTlk
OTA3ZmM4NTI5OTg2YjNkMDQ5MWJmNzA3ODY2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBA
IC0zNCwxMiArMzQsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXN0U3VwcGxlbWVudGFs
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgfHwgRU5BQkxFKENvbmRpdGlvbjIpIHx8IEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogI2luY2x1ZGUgIkpTRE9N
Q29udmVydFN0cmluZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGlu
Z1VuZGVyc2NvcmUuY3BwCmluZGV4IDU1ZmZkNjdhMTUwZmUzMmM1ZWRhMzVlMzJkMjQ2ZjY5MzJl
OGViYWEuLmNmZjMyZmYwZWIzYWRkYTc3ZmU5NDYzYTJhNGY5OWNlNjU4YjQ5NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcApAQCAtMjgs
MTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5j
cHAKaW5kZXggOTc5YzBmOGNjNWJhZDg0NmYwOTYxY2JkYTI2NGUwY2I3NmMxODMwYy4uYWMxZThl
N2Y5ZWY4MjkyNzhlMjQ1ODQ1YTY2MjMxYTVmY2JjYWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3Bw
CkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5O
YW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwCmluZGV4IDUwYWRhOGNhZjBlZTZkMDJiYWRhODAxYjBiNjk4YWVlOTU5
ZDkzNjAuLjAwZmFmOWYwNTczZmQwMDc1ZGU4ZGU1MTQ5ZThlYjUwODc0Yzk0ZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTMwLDEyICszMCwx
MiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCAzMTg3
ZDJkYWYzZDZlNzIxZTdlMDA4NWYyN2NjYjIyZjJiNDFkYWY5Li4zZmViZDFjZGVjNDBlY2VmYmEz
MmJjZmM0MzYzMjQzNTE1Y2U2YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMjgsMTMgKzI4LDEzIEBA
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBkMjcxOTRlODNl
NmFjNzc2NTMxYTlkYjc3MzBmMDU3NGMyZGZhZTFkLi5lMDVkNjU1NDZiZmExMTM2YTA4NjQyOTU4
NDcyY2Y1MGNhMmQ1MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEzICsyOCwx
MyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggYjFmMzZkNzNlMDM1
YWZlNzhlZmU5MzJiMTRkZjkzY2VmZmJhNGRmMi4uZTAxNWIxNzhhNzY1MzhmODE5ZTUzYWZlN2M1
ZmJiYTc0MTg0Y2EzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNp
bmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5h
bWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTI5OGExNzYw
YzA4MzUyNjZjNDJlYjY2NDg2NGJmNjQ0ODJjN2IzMC4uZjFhODRhOGJhZDlhNWQ2MDVhMTBlNDlk
OWM1YzQyNzNkOTkyODdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApA
QCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01OYW1lZENvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDU3ZDY3YzIzNGUy
NmI0ZGRkMDk0N2U0MDJlZjg5YjQ1MDJiNmRkNDMuLjg2MmI0NTlmYmIyMWQ3ZDEwMTI1Njk1ZjVh
MGVhZWZlZDc1NGY2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAppbmRleCBkMGZjZDJmMmI5MDMyNDk1YjRiNjU4YmU5YjMxYjdmZTU1YTA4ODZhLi5j
MTA1ZjE1ZGJhZjg1ZGJmM2ZlNDQzM2JhN2E4MDU1YTg0MmZhYTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEy
ICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDI1MTQxMGI1ZmFlZjcw
MDRjMDExNjY2NmZjZThlMWU5MGEzMzc5YTkuLjY0MTM5YzhmNmIyMGJiMzRiNjIzNmQ2MjA0MWM3
ZTZkMDI5ZDhhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRp
b24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
CmluZGV4IDI3NThjYTEwYTE0MTJjNDEzOWIzMjU4NGYzY2Y5MmI0MDNhYmIwMTQuLmQ2MTRiY2U0
MjFmZTM0YzZmYmU2NzhiZDM3ZTUzMmQ1MmQyNzY0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtMjgsMTMgKzI4LDEz
IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aC5jcHAKaW5kZXggY2EyYmY2MTJhY2JjMmZkNGUwNDRhMTU5YTc2NDY3ZTVhYWNhYjliMi4uZWE0
YzVjZDI3Zjg4NzlkMTc5ZWJiYjkxNTNkZjk5MzgxMGJlNzY0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllci5jcHAKaW5kZXggOTEyMGY0YmU3ZjIxYjc4ZDJjOWJmZjJkYjE3MjVhOTQ5NzRiZmNkMS4u
NmU0MGRlZjNkNDRiYTM3Zjc2NDAwOTkxMjg5YWZjMTBlMjliN2I1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggM2JiN2QzYjdlMTJmODI5Yzg4YzM0NGJhYmRi
NDg2ODIyZjU3Y2JhMi4uZDM5MjRjYmE2MDg2Y2Y5MDg0NmJmMTEwODUwOTM0MjAxOGU0MzM2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcApA
QCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGNiZDVkMzFhNjI2N2VhMWVlMjVk
ZTA5MTRkNjE0NjhiZmNkOTI1YjUuLmM3YTNjNmE5ZDU5NWRmZTY3MmNjNzJhYmRkZTAzZWZlNmM4
MzI4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4
IDlmY2JmNjk3YjYzOWFlMDNkZGMwZWJiMjA4M2NlNzk5ZjczODgzNTMuLjk4ZWMxM2RjMmU3OWVm
NWZkYTY0YmY3MmQ3NDNmMWJjZjM5ZTQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2lu
Y2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBiOGE5ZmFkZTg1YjRlOTg3YzcwNTJhMDI5YTlkZDhm
Y2RhNmQzMjUwLi5kZGRmZjhjY2Q3MjU5YjM3NDVhNjZjYzdkYmU2YWFmZmY4MDllNmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0y
OSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDE3MTQ3NzU1MGIwYzM4
NDU5NTYyZjZhNzVjMmU4M2Q4MzE1ZGI5MjQuLmI2NjFmNTNjZDI4NzA4ODgzYTExYzhjMjA1ZTcw
NDgwOTUzMTdmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlci5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3Bl
cmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyLmNwcAppbmRleCAxMDNmOTFjMWJhYTJhYTM5ZjFlMzk5YWFmZWNlNTgxMTkxMTE2ZGVl
Li5jMzVmZjg5NmM0OGQ4YmIyODc4MjNiZGYwYTQ2MDdhMWIzZGE4NzBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggZmMx
MjJhMmUyYmJmODdiYTE0YjE2ZjcwNzk5ZTZjMjgwZjFlNGM0ZC4uOWYxMGQ2NGVlNWEwZDEzMTli
OGNjZjg5NGRhOTBjOGFjMThhMTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAj
aW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKaW5kZXggNDgwN2IzNjU1
MzMxOGUwNDJhOWI2N2I0NDQwODExOWQ2ODRlZDFkZS4uYzYwZGNhYjYzNTk1OTdkYjRmODgwZWRm
NDA0MGFjODM0MzVhODI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
QW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zLmNwcAppbmRleCBkZDUxOTMwNzMzYjZjZGFhNDllMWY2ODU2YjZiNzFmMWUx
MTdjYWRlLi40MGI5ODFlMzQ0MTA1N2Q3Y2JiN2ZlZTE3MGVlNTNjYjkwMzAxNzdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMzAs
MTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCBkZTk2ZDNi
OGNiZjIwMTI4YjM5NjM1ZGIzNmUwNjg0ZTlmODY2N2M2Li4yYjJkZWQ0YzJjNjg4YWY0NDNmNGE5
N2MwZmQ0OWIxMjYwMDA2NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RD
b25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDBjYTVkYmRlMGM5NzM0ZTM5ODFlYzExYzFlNzVlNzg4
OWFiYjdiYmYuLjlmMjU0YjQ3ZWI5OWVlOTkwZDc1N2NkMjcyODhlYzhhMGI4OTcxNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCkBAIC03Nyw3ICs3Nyw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlQcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KQEAgLTkxLDYgKzkw
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuY3BwCmluZGV4IGVhZjA5MmFmM2YzYTcxZTlkM2M0Y2Y2MDExYmZkOTE5MmFiMjFiNWEu
LjFhZGI3MDIxMmY0NTFjY2U4NWIwOGNkYTAzNmZlNDc4MDg5YzM5NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAppbmRleCAwNTgxNDNiYTE0
YmI0ZWIyMjQwOWM4ZDI4NDczNzUzZDg0ZjAzZTdmLi5iMDU1NjY4NTk2YmM2ZjI3YzgyYzcxNmZk
MjM0ZTVkODBhYThhNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgpAQCAtMzcsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuY3BwCmluZGV4IDBkYjc3NGFmMTI1ZjVkMTg1MGY3OWE2MTcxNDc1ZTEzN2FiN2NkNjEu
LmMxYTYzNDMwYWMwZDhhYzEzYmJhNGM0YTc0Mzk0OTAxOGM3MTFkMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFBsdWdpbkludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAppbmRleCAyODM2MjQ3M2E3MDlmNTk2NDZi
YmViNjA0YmUzZGExMTFhMGE4Y2VkLi5iZWM1N2Q1NTE3ZDViMDljOGQyMGEwYWRlNDI5N2NmMGFl
OGRmY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcApAQCAtMjcsMTIgKzI3
LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4IDhiMGY1MWVkMzE5NDFjODRhZWIyNGEzNzNi
ZTliMTdjMDdmNzYzZDcuLjdhMjU4OTg2NzE0NjMwYTMwNTNiYzc0ODFhNWRlMGZlZjFiZDc5OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCkBAIC0zNCwx
MSArMzQsMTEgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uLmNwcAppbmRleCBlM2MxY2MyNTlhMWQyNzg3OWEyNjdkOWY0NDU4ZDVkNDg5
YTY4NzkyLi43OGQxYzQxYzQyOGMwMWUxZjc1ZjZlOTFhNjRhZWIzMDVjMGE1MjVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAKICNpbmNsdWRlICJK
U1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oIgogI2luY2x1ZGUgIkpTVGVz
dFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJl
Y3RJbmhlcml0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCmluZGV4IDk2MzY4
ZjNlNmY3YmZmYThlMWE3ZWZiZmU3ZjUwNjNmNjQ2ZGJkYTcuLjEzM2VkYTAyZTY0MDE2M2ZjOWJl
NjU0MzQ4MjBmYjkyNWYwNGMwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcApAQCAtMjYsMTEgKzI2LDExIEBACiAj
aW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQuY3BwCmluZGV4IDM3ZjY1NGRkZmNkN2MxNWI3OGViNjcxYzRhYWM2
Nzg1ZDU0MDBiYjcuLmFkNTMxYjIwYjc0YmM2ZDI1OTU2OTE4MmVhZWZjNTMxMWNmOGUwOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcApAQCAtMjksMTIgKzI5
LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdEZpbmFsLmNwcAppbmRleCA1ZTg2OTEwYWI1MjA4OGUzMTc3OTM2NDlkNGM2
MDcyYWM0ZTcyYjk0Li5hMWFjMmQwMTBlNTFjNDgzN2MwZjBiNTQ2MjI4MDM0YWQwZGI4NGU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwCkBA
IC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAzNDJlZDFh
YTUwYjQ2ODY4YmZiMzkxNjZhZTBmODNkMDhjNjgwMmE4Li5kZjdkZmI4Zjk2MWQ5NGZlOGUyNGYw
MWQyNDFmYjI0ZjZhOTRmYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBACiAjaW5jbHVk
ZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyLmNwcAppbmRleCBmZjJjYWQyY2FmZmM5YWRmMWFmZmE1M2NkZjA5Nzdj
ZmM4M2U4NzE1Li41MjQyYmI4YmFhYzZmYzhjYTE0MDQwNjBmMTUwYmIxZGQ3YzAxNWRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uLmNwcAppbmRleCA4OWVkZmI0ZDU0ZmZjZTI5MzEyZTlkYzM3MGEyOTA0ZTg2Mzg5NDhm
Li43Y2FlMjQzOWVmNjI3YjZjMjY2MTczOTRiOTFjYzhiODA0ZmYwNTViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKQEAgLTI4
LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKaW5kZXggYjE2YjZmYjRiZDE0ZTI0ZDJkYWUw
ZjQ0YmFiZWE2NGQ4NDcwMGY0NC4uNTBhNDZmNjE0Zjk4NDhiNzY5Mjg1ZTE2Mzg5MDczYzEyOTE1
N2ZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
LmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAK
aW5kZXggNWE1NGFjMTQzY2IyNzkzNjRlNjQ2YzMzMzRiMGNiYzE3YWU4MzQzNS4uMGEzM2FmMzc4
YTJiMTIxOWYyOTI4NGRjODllMTZkMzhiNzI0Nzc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKQEAgLTI4LDEy
ICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCmluZGV4IGYyNTE4YTcx
ZWQ2ODYxYzVhOGNhZjZiZWIzNGM1ZmNmNmJkMzBkZWYuLjQ5MDQ5MTc0ZTAzNmY1ZjE4MDYyNDRj
M2YyZWJkMTllMTY5NjJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNp
bmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuY3BwCmluZGV4IDgxMjM3MmI0ZDRlZTcwYzQyM2EyODQzMzQ2NTFkMTE1
OGVhYWNlNTkuLmM5YzUyNjk4YjgyZDNmZmYyN2QyMzQ0ZmRkYjU1NDNkMDkyY2E0MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAK
QEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAppbmRleCAzOTE3YjRk
OTI5NmJhNTIzZGMxMzA3MDYxOWNmNGNlZDM4YTgzZmIxLi43NWVjMzhhZGI4ZmU4ODkzMDQ2MDM1
MzQ2YjU2NDQ2ZDdiMmI2MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUg
IkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCAxZTYxM2FhYjA2NTI0YWY1NTYwNjMz
ZDg4MjI0OTdmZDFjMDFlMGEyLi4xODZhNDE2ZGE4NzNhNjRlNWRmNWM2NmViYmZkMDkwMWFjZTVk
ZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQAogI2luY2x1ZGUg
IkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IDcyNDA3MTU2ZWJkNjI2ODZhMTM0YjAxYTRlNDBj
ZDUxMTZiNzU5ZGYuLmQwZWFiYTA5ZmQxMmVlYWY1YTEzN2EyYWI0ZGMyNDBiOTk3Yjc2OTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZEluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTk0LDcgKzE5NCw3IEBA
IEJsb2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudEV4
dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6TWFrZUhUVFBTOiB7CiAgICAgICAgICAg
ICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwgdXJsLnByb3RvY29sSXMoIndzIikpCi0g
ICAgICAgICAgICAgICAgJiYgKCF1cmwucG9ydCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCisgICAgICAgICAgICAgICAg
JiYgKCF1cmwucG9ydCgpIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5wb3J0
KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKICAgICAgICAgICAgICAgICB3aWxsTWFrZUhU
VFBTID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNDQsNyArMjQ0
LDcgQEAgQmxvY2tlZFN0YXR1cyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250
ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZCgKICAgICAgICAgICAgIHdpbGxCbG9ja0Nvb2tp
ZXMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6Ok1ha2VIVFRQUzoKLSAgICAgICAgICAgIGlmICgodXJsLnByb3Rv
Y29sSXMoImh0dHAiKSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSkgJiYgKCF1cmwucG9ydCgpIHx8
IGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2Nv
bCgpKSkpCisgICAgICAgICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwgdXJsLnBy
b3RvY29sSXMoIndzIikpICYmICghdXJsLnBvcnQoKSB8fCBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCiAgICAgICAgICAg
ICAgICAgd2lsbE1ha2VIVFRQUyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rv
cjoKQEAgLTI3NSwxMiArMjc1LDEyIEBAIHZvaWQgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0
KGNvbnN0IEJsb2NrZWRTdGF0dXMmIHN0YXR1cywgUGFnZSogcGFnZSwgUmVzb3VyCiAgICAgaWYg
KHN0YXR1cy5tYWRlSFRUUFMpIHsKICAgICAgICAgY29uc3QgVVJMJiBvcmlnaW5hbFVSTCA9IHJl
cXVlc3QudXJsKCk7CiAgICAgICAgIEFTU0VSVChvcmlnaW5hbFVSTC5wcm90b2NvbElzKCJodHRw
IikpOwotICAgICAgICBBU1NFUlQoIW9yaWdpbmFsVVJMLnBvcnQoKSB8fCBpc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgpLnZhbHVlKCksIG9yaWdpbmFsVVJMLnByb3Rv
Y29sKCkpKTsKKyAgICAgICAgQVNTRVJUKCFvcmlnaW5hbFVSTC5wb3J0KCkgfHwgV1RGOjppc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgpLnZhbHVlKCksIG9yaWdpbmFs
VVJMLnByb3RvY29sKCkpKTsKIAogICAgICAgICBVUkwgbmV3VVJMID0gb3JpZ2luYWxVUkw7CiAg
ICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAgICAgICAgaWYgKG9yaWdpbmFs
VVJMLnBvcnQoKSkKLSAgICAgICAgICAgIG5ld1VSTC5zZXRQb3J0KGRlZmF1bHRQb3J0Rm9yUHJv
dG9jb2woImh0dHBzIikudmFsdWUoKSk7CisgICAgICAgICAgICBuZXdVUkwuc2V0UG9ydChXVEY6
OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woImh0dHBzIikudmFsdWUoKSk7CiAgICAgICAgIHJlcXVl
c3Quc2V0VVJMKG5ld1VSTCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAppbmRleCBh
Mjk2ZmY5N2ZiY2ZlYzkwYjVhNjBjZmVjM2M4MGM0MGU4ZTQxODMzLi4zNGNmYWNhNTAxZmQzYzcy
Yzk2NjdlOGY0YjcwZGUyNzdhYWM1YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApAQCAtMzcs
NyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50TG9hZGVyOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgUmVzb3VyY2VMb2Fk
SW5mbzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCA1ZDM4NmFmZGZiMjk3M2Y2OTYwMjcxY2Yz
Njc5MTJhMWUzNzc0M2U0Li4zNmM3YzY0ZGNiODQyNzAyNDYzMGYwZjc5MTYzMWI3NzhkZGE5ODdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMjAsMTIgKzIwLDEyIEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydGllcy5oCmluZGV4IDNmNGI2NWFiNzI4OGRkMGYzYjE2MWJhNDFiZDUwNWRmMmUz
NzU1MGMuLjM0MjE2M2RiNTAzNjM2MjA0ODNlYmQwMmIzYmNjOTJmZGM2YTI4MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgQ1NTU3R5
bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ29sb3I7CiBjbGFz
cyBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM7Ci1jbGFzcyBVUkw7CiBjbGFzcyBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOwogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xh
c3MgU3R5bGVkRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDRlNDhj
MzA0YTU3NzExZTNmNzc0ODZmM2M5Njc2MmQ2NGZlMWIxMDYuLjIwY2ZjZDcxMTUyNWIzZmRjMDM0
MDhmY2UyNTYzYzQ2MTQzYmVlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAt
NTcsNyArNTcsNiBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEZyYW1lVmlldzsKLWNsYXNzIFVSTDsKIGNsYXNzIEtleWZyYW1lTGlzdDsKIGNs
YXNzIEtleWZyYW1lVmFsdWU7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0LmgKaW5kZXggZThiNWJmYzU2Mjg3YTRkOTgyOGU4OTNkODU3OWNiYThiOGVlYmNj
Mi4uYmFiNGU2Mjc5NDdiNmVlODVkODQ5OTVjM2ZkMDIzNDIxOGQ0MzgxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldC5oCkBAIC0zMCw3ICszMCw2IEBAIGNsYXNzIENTU0ltcG9ydFJ1bGU7CiBjbGFz
cyBNZWRpYUxpc3Q7CiBjbGFzcyBOb2RlOwogY2xhc3MgU3R5bGVTaGVldDsKLWNsYXNzIFVSTDsK
IAogY2xhc3MgU3R5bGVTaGVldCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU2hlZXQ+IHsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAppbmRleCAyYzJiZDEx
N2FlMGE1YjIzZGYyNTAxNGI5ZTViOTMxMDdkOTU4YTQ1Li5kMTEyMDk4NGY1ZjQ0N2E3ZDJmYjQx
N2VmYzgxY2Y5NTZkOWFhM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
aGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5oCkBAIC0yMiwxMCArMjIsMTAgQEAKIAogI2luY2x1ZGUgIkNTU1BhcnNlckNvbnRleHQuaCIK
ICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQu
aAppbmRleCAxZWY3NzExZmQwY2JkYjUxNTIwZmZkYWQ4NjIzNzc3NzY4OTJkMjY0Li5kYmQyMzc3
NTM0YTRjOTg3NTk5YWUxYmNhNGY4YTM3MmM1ZDVkYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaApAQCAtMjcsOSArMjcsOSBAQAogCiAjaW5jbHVk
ZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUg
IlVSTC5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
ODMsNyArODMsNyBAQCBXRUJDT1JFX0VYUE9SVCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBzdHJp
Y3RDU1NQYXJzZXJDb250ZXh0KCk7CiBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dEhhc2ggewogICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGtleSkKICAgICB7
Ci0gICAgICAgIGF1dG8gaGFzaCA9IFVSTEhhc2g6Omhhc2goa2V5LmJhc2VVUkwpOworICAgICAg
ICBhdXRvIGhhc2ggPSBXVEY6OlVSTEhhc2g6Omhhc2goa2V5LmJhc2VVUkwpOwogICAgICAgICBp
ZiAoIWtleS5jaGFyc2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGhhc2ggXj0gU3RyaW5nSGFz
aDo6aGFzaChrZXkuY2hhcnNldCk7CiAgICAgICAgIHVuc2lnbmVkIGJpdHMgPSBrZXkuaXNIVE1M
RG9jdW1lbnQgICAgICAgICAgICAgICAgICA8PCAwCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RydWN0
IENTU1BhcnNlckNvbnRleHRIYXNoIHsKIAogbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTw+IHN0
cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+IDogR2VuZXJpY0hhc2hU
cmFpdHM8V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dD4gewotICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7IG5ldyAo
Tm90TnVsbCwgJnNsb3QuYmFzZVVSTCkgV2ViQ29yZTo6VVJMKFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3Jl
OjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QuYmFzZVVSTCkg
VVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQogICAgIHN0YXRpYyBib29sIGlzRGVs
ZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQmIHZhbHVlKSB7IHJldHVy
biB2YWx1ZS5iYXNlVVJMLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgICBzdGF0aWMg
V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gV2ViQ29yZTo6
Q1NTUGFyc2VyQ29udGV4dChXZWJDb3JlOjpIVE1MU3RhbmRhcmRNb2RlKTsgfQogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCmluZGV4IDg3MWQ1OTkxYjU3
NmJiMzBmNDY1ODc4MTE4NzNkYWY2ZmE1OGJjYTQuLjI1NzVjMGRmMmI4N2M1OTA1ZjdkYmMyY2U2
ZmNjMzU0ZmI3YTk3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
ZGlvbXMuaApAQCAtMzUsOCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVVJMOwogICAgIAogLy8gU3BhY2UgY2hhcmFj
dGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBDU1Mgc3BlY2lmaWNhdGlvbi4KIC8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL2NzczMtc3ludGF4LyN3aGl0ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCmluZGV4IDZkMzlkYTQ1NWQ0MmYzMzgyZGM3NDI1ZGFkODAwN2JmZDY3MDdiOWUuLjYw
ZTNiN2NlNjliZjk4MDg0NjUxMTdjOGE2NDM4NjM5YjE3NDUxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuY3BwCkBAIC00MywxMCArNDMsMTAgQEAKICNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdGF0aWNQ
YXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGVu
dFJlYWRlci5oIgogI2luY2x1ZGUgIldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIgogI2lu
Y2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3
dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0y
NTUsNyArMjU1LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgaWYgKHR5cGUgPT0gInRl
eHQvaHRtbCIpCiAgICAgICAgIHNhbml0aXplZERhdGEgPSBzYW5pdGl6ZU1hcmt1cChkYXRhKTsK
ICAgICBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L3VyaS1saXN0IikgewotICAgICAgICBhdXRvIHVy
bCA9IFVSTFBhcnNlcihkYXRhKS5yZXN1bHQoKTsKKyAgICAgICAgYXV0byB1cmwgPSBVUkwoeyB9
LCBkYXRhKTsKICAgICAgICAgaWYgKHVybC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBzYW5pdGl6
ZWREYXRhID0gdXJsLnN0cmluZygpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAidGV4dC9wbGFp
biIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmNThlYjJlNTljYjBkOGIxMWNiNWE1NjQy
YzAxZTQxZmJiZWM4ZGVmLi44NzI0ZTgxMTRiYjIxNGI1MDJjZWNhOThhYzZmMGMyNzdkMjljZWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMxMzYsNyArMzEzNiw3IEBAIHZvaWQgRG9j
dW1lbnQ6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzCiAKIHZvaWQgRG9jdW1lbnQ6OnNldFVSTChjb25zdCBVUkwmIHVybCkK
IHsKLSAgICBjb25zdCBVUkwmIG5ld1VSTCA9IHVybC5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDog
dXJsOworICAgIGNvbnN0IFVSTCYgbmV3VVJMID0gdXJsLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtV
UkwoKSA6IHVybDsKICAgICBpZiAobmV3VVJMID09IG1fdXJsKQogICAgICAgICByZXR1cm47CiAK
QEAgLTM0MjYsNyArMzQyNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29u
c3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sCiAgICAgICAgICAg
ICAgICAgY29tcGxldGVkVVJMID0gbV91cmw7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsKLSAgICAgICAgICAg
IGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICAgICAgICAgIGlm
ICghV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZWRVUkwpKQogICAgICAgICAgICAg
ICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdCgqdGhpcywg
ZGVsYXksIGNvbXBsZXRlZFVSTCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJlc2ggIiArIG1fdXJsLnN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0byBhIGphdmFzY3JpcHQ6IFVSTCI7CkBAIC00
ODg4LDcgKzQ4ODgsNyBAQCBVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3QKICAgICAvLyBTZWUgYWxzbyBb
Q1NTXVN0eWxlU2hlZXQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpCiAgICAgaWYgKHVybC5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIFVSTCgpOwotICAgIGNvbnN0IFVSTCYgYmFzZVVSTCA9
ICgoYmFzZVVSTE92ZXJyaWRlLmlzRW1wdHkoKSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0gYmxhbmtV
UkwoKSkgJiYgcGFyZW50RG9jdW1lbnQoKSkgPyBwYXJlbnREb2N1bWVudCgpLT5iYXNlVVJMKCkg
OiBiYXNlVVJMT3ZlcnJpZGU7CisgICAgY29uc3QgVVJMJiBiYXNlVVJMID0gKChiYXNlVVJMT3Zl
cnJpZGUuaXNFbXB0eSgpIHx8IGJhc2VVUkxPdmVycmlkZSA9PSBXVEY6OmJsYW5rVVJMKCkpICYm
IHBhcmVudERvY3VtZW50KCkpID8gcGFyZW50RG9jdW1lbnQoKS0+YmFzZVVSTCgpIDogYmFzZVVS
TE92ZXJyaWRlOwogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gVVJMKGJhc2VV
UkwsIHVybCk7CiAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwsIG1fZGVjb2Rlci0+ZW5jb2Rp
bmdGb3JVUkxQYXJzaW5nKCkpOwpAQCAtNzE2Miw5ICs3MTYyLDkgQEAgRG9jdW1lbnQmIERvY3Vt
ZW50OjplbnN1cmVUZW1wbGF0ZURvY3VtZW50KCkKICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8
RG9jdW1lbnQmPigqZG9jdW1lbnQpOwogCiAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpCi0gICAg
ICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIGJs
YW5rVVJMKCkpOworICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNy
ZWF0ZShudWxscHRyLCBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV90ZW1w
bGF0ZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBibGFua1VSTCgpKTsKKyAg
ICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBXVEY6
OmJsYW5rVVJMKCkpOwogCiAgICAgbV90ZW1wbGF0ZURvY3VtZW50LT5zZXRDb250ZXh0RG9jdW1l
bnQoY29udGV4dERvY3VtZW50KCkpOwogICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0VGVtcGxh
dGVEb2N1bWVudEhvc3QodGhpcyk7IC8vIGJhbGFuY2VkIGluIGR0b3IuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IGE3OTZiNDkwN2MxMjE1OGMwNmJmYTYyNTMxZDhmMTdlY2UwYWFjNDIuLjFkOWNm
ODQ0ODNjNGUxYmIzOWFlMjk3MzQ2NDczYTFjZTYzMzViYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC02NzEsNyArNjcxLDcgQEAgY2xhc3MgRG9jdW1lbnQKIAogICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KICAgICB2b2lkIHNldFVSTChjb25zdCBV
UkwmKTsKLSAgICBjb25zdCBVUkwmIHVybEZvckJpbmRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV91
cmwuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmxG
b3JCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtV
UkwoKSA6IG1fdXJsOyB9CiAKICAgICAvLyBUbyB1bmRlcnN0YW5kIGhvdyB0aGVzZSBjb25jZXB0
cyByZWxhdGUgdG8gb25lIGFub3RoZXIsIHBsZWFzZSBzZWUgdGhlCiAgICAgLy8gY29tbWVudHMg
c3Vycm91bmRpbmcgdGhlaXIgZGVjbGFyYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
ZDkxZmU0MzE1ZTYyNmYxNDBkYzY4YmU1OTU3ZjZhMDRkNmY0NjAwNy4uOGIzN2I5ZmYzMmY2Yzhh
NTk4YWYyNmVlYWEwMjgwNTZhMzRjNDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTcx
OSw3ICsxNzE5LDcgQEAgYm9vbCBFbGVtZW50Ojppc0V2ZW50SGFuZGxlckF0dHJpYnV0ZShjb25z
dCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKIAogYm9vbCBFbGVtZW50Ojppc0phdmFTY3Jp
cHRVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgcHJvdG9jb2xJc0phdmFTY3JpcHQo
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZS52YWx1ZSgpKSk7Cisg
ICAgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgV1RGOjpwcm90b2NvbElzSmF2
YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlLnZhbHVl
KCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzdHJpcFNjcmlwdGluZ0F0dHJpYnV0ZXMoVmVjdG9y
PEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXggOGVlYzI2YTlkNTQ0ZTEzODQ2ZDhhNDA0
Mzk2NWZjZDcwNWUyMDQ3MC4uYzI3ZmRlNDhkNjYwYmQ1OWRjNjJmYTQzYmNhZDY1YjRiYWIwNTZm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgc3RhdGljIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dEZvckVs
ZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBzaGFkb3dSb290ID0g
ZWxlbWVudC5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIC8vIFVzZXIgYWdlbnQgc2hhZG93
IHRyZWVzIGNhbid0IGNvbnRhaW4gZG9jdW1lbnQtcmVsYXRpdmUgVVJMcy4gVXNlIGJsYW5rIFVS
TCBhcyBiYXNlIGFsbG93aW5nIGNyb3NzLWRvY3VtZW50IHNoYXJpbmcuCi0gICAgYXV0byYgYmFz
ZVVSTCA9IHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jvb3RNb2Rl
OjpVc2VyQWdlbnQgPyBibGFua1VSTCgpIDogZWxlbWVudC5kb2N1bWVudCgpLmJhc2VVUkwoKTsK
KyAgICBhdXRvJiBiYXNlVVJMID0gc2hhZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0g
U2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCA/IFdURjo6YmxhbmtVUkwoKSA6IGVsZW1lbnQuZG9j
dW1lbnQoKS5iYXNlVVJMKCk7CiAKICAgICBDU1NQYXJzZXJDb250ZXh0IHJlc3VsdCA9IENTU1Bh
cnNlckNvbnRleHQgeyBlbGVtZW50LmRvY3VtZW50KCksIGJhc2VVUkwsIGVsZW1lbnQuZG9jdW1l
bnQoKS5jaGFyYWN0ZXJTZXRXaXRoVVRGOEZhbGxiYWNrKCkgfTsKICAgICBpZiAoc2hhZG93Um9v
dCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAppbmRleCBhNTIwMmQ1YzVkYWNlZTgyODk2YzRlMDM3Mjc0NzE1N2Y5ODYxOTgz
Li5mM2RlNzAxZDZkNGJhODQ1NjE3MmY2NjQzYzYxZjk1MTRhZTM0YTYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBEb2N1bWVudCogTm9kZTo6b3duZXJEb2N1bWVudCgp
IGNvbnN0CiBjb25zdCBVUkwmIE5vZGU6OmJhc2VVUkkoKSBjb25zdAogewogICAgIGF1dG8mIHVy
bCA9IGRvY3VtZW50KCkuYmFzZVVSTCgpOwotICAgIHJldHVybiB1cmwuaXNOdWxsKCkgPyBibGFu
a1VSTCgpIDogdXJsOworICAgIHJldHVybiB1cmwuaXNOdWxsKCkgPyBXVEY6OmJsYW5rVVJMKCkg
OiB1cmw7CiB9CiAKIGJvb2wgTm9kZTo6aXNFcXVhbE5vZGUoTm9kZSogb3RoZXIpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCA1MmRhNmQxMWEwMTBmZjQzYTM2OTU1NWFmNzc5OTQ2MWJjYTJhNThiLi4x
MjQzOWQ3OGQzNWM0YzI4MjFhNzI1NGQwMzIxNDUwMzVmYjQ3ZjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAg
LTMxLDExICszMSwxMSBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5j
bHVkZSAiU3R5bGVWYWxpZGl0eS5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgotI2luY2x1ZGUg
IlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIC8vIFRoaXMgbmVlZHMgdG8g
YmUgaGVyZSBiZWNhdXNlIERvY3VtZW50LmggYWxzbyBkZXBlbmRzIG9uIGl0LgogI2RlZmluZSBE
VU1QX05PREVfU1RBVElTVElDUyAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAppbmRleCBh
NjFkYWQ0NWU5ZTQ0NGZhMzIyZTU5ODIyYjRlOGU2YjFlOGY2ZGI3Li42MjQ1NGU3OTNjYjEzMzRm
NjRjY2YzYmUyMDk1ZDMzY2E5YTcyYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgK
QEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIExvYWRhYmxlTW9kdWxlU2Ny
aXB0OwogY2xhc3MgUGVuZGluZ1NjcmlwdDsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7Ci1jbGFz
cyBVUkw7CiAKIGNsYXNzIFNjcmlwdEVsZW1lbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggM2JkZmNjODBkYmU2ZTZhZGFkNTg3
N2QxZmVlMzAxMTI3Mzc2ZDU2My4uNGIyM2Y0N2Y3ZGUzZGJlMGRmY2NhNGJhYzI3ZjA0NTI2OWZm
ODAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBA
IC02OCw3ICs2OCw2IEBAIGNsYXNzIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNvY2tldFByb3ZpZGVy
OwotY2xhc3MgVVJMOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogY2xhc3MgU2Vydmlj
ZVdvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAppbmRleCA5ZjIxNWZiYTFi
NTNmMjU2MTVjYzBkYTNjYzczNDIwNTAxMjVhY2E1Li5jMGNjOGUyMTEwOWQ2M2JmNGEzMmU5YjVh
N2M0ZjE5NWE0ODA3MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCkBAIC0z
Nyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW5Qb2xpY3k7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7
Ci1jbGFzcyBVUkw7CiAKIGVudW0gU2FuZGJveEZsYWcgewogICAgIC8vIFNlZSBodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNhdHRyLWlmcmFtZS1zYW5k
Ym94IGZvciBhIGxpc3Qgb2YgdGhlIHNhbmRib3ggZmxhZ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKaW5kZXggNjdlN2VlZWM0OWM4ODdiNjYxZTQ1NTUwN2ZhMGM4MjFmN2VjNjA5Zi4uMTY4
NjI5MDVmYTYyZTI2YjcwMjJiMWYxMTNjZjNkOTkyMGE0YWJmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcApAQCAtMTUxMCw5ICsxNTEwLDkgQEAgdm9pZCBFZGl0b3I6OmNvcHlVUkwoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQK
ICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRVUkwpOwogfQogCi1QYXN0ZWJvYXJkV3Jp
dGVyRGF0YTo6VVJMIEVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkKK1Bhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkxEYXRhIEVkaXRv
cjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKIHsKLSAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMIHJlc3VsdDsKKyAgICBQYXN0ZWJv
YXJkV3JpdGVyRGF0YTo6VVJMRGF0YSByZXN1bHQ7CiAKICAgICByZXN1bHQudXJsID0gdXJsOwog
ICAgIHJlc3VsdC50aXRsZSA9IHRpdGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNmZm
Mjg2NmIxNDhmZGY0ZmY5MjA1Y2QzZGZmOTRlZDAyYmVjOTUzYi4uZmMyNTQwMzIyOTIxZGYyZmJl
NzYxZWM2NjliNDM2MTI4Mjg2Mzc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0xNzAs
NyArMTcwLDcgQEAgY2xhc3MgRWRpdG9yIHsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29w
eVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICB2b2lkIGNvcHlVUkwo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYpOwotICAgIFBhc3Rl
Ym9hcmRXcml0ZXJEYXRhOjpVUkwgcGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIHRpdGxlKTsKKyAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMRGF0YSBwYXN0
ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogI2lmICFQ
TEFURk9STShJT1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5SW1hZ2UoY29uc3QgSGl0
VGVzdFJlc3VsdCYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNj
dW11bGF0b3IuY3BwCmluZGV4IDM1M2RiYTY5Mjc0OWIxOGNiYTkxMzE1NDAxZmFmYWVjNGJmMDM4
NTEuLmZkN2Y4YTgxODE4MjQzYzE2Mjg2ZmNhNzhjMDNmNDAzNjJkODZkOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUg
IlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCkBAIC0yMzIsNyArMjMyLDcg
QEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUo
U3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb24KICAgICBjb25zdCBTdHJpbmcgcmVzb2x2ZWRVUkxT
dHJpbmcgPSByZXNvbHZlVVJMSWZOZWVkZWQoZWxlbWVudCwgYXR0cmlidXRlLnZhbHVlKCkpOwog
ICAgIFVDaGFyIHF1b3RlQ2hhciA9ICciJzsKICAgICBTdHJpbmcgc3RyaXBwZWRVUkxTdHJpbmcg
PSByZXNvbHZlZFVSTFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBpZiAocHJvdG9jb2xJ
c0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJ
c0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcpKSB7CiAgICAgICAgIC8vIG1pbmltYWwgZXNj
YXBpbmcgZm9yIGphdmFzY3JpcHQgdXJscwogICAgICAgICBpZiAoc3RyaXBwZWRVUkxTdHJpbmcu
Y29udGFpbnMoJyInKSkgewogICAgICAgICAgICAgaWYgKHN0cmlwcGVkVVJMU3RyaW5nLmNvbnRh
aW5zKCdcJycpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRh
RGV0ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
aAppbmRleCBmMjVmYWFlMzc1NzA2MTFlN2RmMjI5ZWU4YWYxMzNmNDVkYWFmN2Y0Li4xNTA0ZjZm
MzRmN2UxNWZjYTJjNzBiNDQzNzZhMTY4OGM0ZjU3Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaApAQCAtNDEsNyArNDEsNiBAQCBjbGFzcyBFbGVt
ZW50OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIFJhbmdl
OwotY2xhc3MgVVJMOwogCiBlbnVtIERhdGFEZXRlY3RvclR5cGVzIHsKICAgICBEYXRhRGV0ZWN0
b3JUeXBlTm9uZSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQppbmRleCBhZjYxZjM2YjhiNDhlZDhhMjdhYjBmZDVlYjhiM2ViNjFkYWZlNGQ1Li5lYzM3
OTVmZTY2ZTIwNTc1M2YzNmQ3NjZmZDI2NzEzN2JmNDEzZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTUxLDExICs1MSwxMSBAQAogI2ltcG9y
dCAiUmVuZGVyU3R5bGUuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIldlYkNvbnRlbnRS
ZWFkZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAibWFya3Vw
LmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHd0Zi9C
bG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBFZGl0b3I6
OnJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcg
KmF0dHJpYnV0ZWQKIAogU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJM
JiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7Cisg
ICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAogUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3Ry
aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbQppbmRleCBjNWE4OGYzYWQ1YWY0YmRhY2UxMzY0MDg5MGQ3Y2EwOTlkNGJm
MjM2Li5kNTdmMWFlNTYzMTRkMjljMjgzMGMxZDJjNGI3MmUwNDdmMGQzOTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bQpAQCAtNTQsNyArNTQsNiBAQAogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvY2tl
dFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIK
LSNpbXBvcnQgIlVSTFBhcnNlci5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJX
ZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIuaCIKQEAgLTYyLDYgKzYxLDcgQEAK
ICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRT
dHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VS
TFBhcnNlci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkxvY2FsRGVmYXVsdFN5
c3RlbUFwcGVhcmFuY2UuaCIKQEAgLTI4OCw3ICsyODgsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogCiAgICAgICAgIGF1dG8gbmFtZSA9IGltYWdlLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgbmFtZSA9IFVSTFBhcnNlciB7IHJlc291cmNlVVJMU3RyaW5nIH0ucmVz
dWx0KCkubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgICAgIG5hbWUgPSBVUkwoeyB9LCBy
ZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYgKG5hbWUu
aXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygibWVkaWEiKTsKIApA
QCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRh
Y2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChy
ZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgYXV0byBuYW1lID0gVVJMUGFyc2VyIHsgcmVzb3VyY2VVUkxTdHJpbmcgfS5y
ZXN1bHQoKS5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBhdXRvIG5hbWUgPSBVUkwoeyB9
LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygiZmlsZSIpOwog
CkBAIC01MTgsNyArNTE4LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2
ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBTdHJpbmcgc2FuaXRpemVkTWFya3VwID0gc2Fu
aXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgKmZyYW1lLmRvY3VtZW50KCksICpyZXN1bHQs
IG1zb0xpc3RRdWlya3NGb3JNYXJrdXAoKSwgWyZdIChjb25zdCBTdHJpbmcmIHR5cGUpIHsKICAg
ICAgICAgcmV0dXJuIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhblNob3dNSU1FVHlwZUFzSFRN
TCh0eXBlKTsKICAgICB9KTsKLSAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1
cCgqZnJhbWUuZG9jdW1lbnQoKSwgc2FuaXRpemVkTWFya3VwLCBibGFua1VSTCgpLCBEaXNhbGxv
d1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOworICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBzYW5pdGl6ZWRNYXJrdXAsIFdURjo6Ymxh
bmtVUkwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KTsKIAogICAgIGlmICgh
ZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbQppbmRleCBmMWNkNTNjOWUzMzhkMWFhYWY1MzBhOTA4MTE4ZmZlMDg4YjI4
MjRmLi40NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJmMjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC01MiwxMSArNTIsMTEgQEAKICNpbXBv
cnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5o
IgogI2ltcG9ydCAiV2ViQ29udGVudFJlYWRlci5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0
cmFzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQg
Im1hcmt1cC5oIgogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8cGFsL3N5c3Rl
bS9Tb3VuZC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMjUzLDcgKzI1Myw3IEBAIFN0cmluZyBFZGl0b3I6OnBsYWluVGV4
dEZyb21QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgLy8g
RklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdlIGtub3cg
LVtOU1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxsIHRoZSBz
YW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRpbmcgYW4g
TlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0gICAgICAgIHN0cmluZyA9IHVzZXJWaXNpYmxl
U3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworICAgICAgICBzdHJpbmcgPSBX
VEY6OnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOwogCiAg
ICAgLy8gRklYTUU6IFdURiBzaG91bGQgb2ZmZXIgYSBub24tTWFjLXNwZWNpZmljIHdheSB0byBj
b252ZXJ0IHN0cmluZyB0byBwcmVjb21wb3NlZCBmb3JtIHNvIHdlIGNhbiBkbyBpdCBmb3IgYWxs
IHBsYXRmb3Jtcy4KICAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21wb3NlZFN0
cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIEVkaXRv
cjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50
JiBpbWFnZUVsZW1lbgogICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0
ID0gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoaW1hZ2VFbGVtZW50KTsKICAgICBwYXN0ZWJvYXJk
SW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxlID0gdGl0
bGU7Ci0gICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSB1c2VyVmlzaWJs
ZVN0cmluZyhwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCk7CisgICAgcGFzdGVib2FyZEltYWdlLnVy
bC51c2VyVmlzaWJsZUZvcm0gPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRJbWFn
ZS51cmwudXJsKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1h
Z2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5
cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKaW5kZXggZjBlMGQ4NjVjOGJjN2RjZGIxMzU4MTRjMDdkMjQ0NWE5ZGE3Y2Nm
NC4uOTE0YjgwY2I1ODNjMzk4ZDZhOTU4ZDdhNzU3NWNhZTI4MDVmNTI3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcApAQCAtNzMsMTEgKzczLDExIEBACiAjaW5jbHVkZSAiU3R5bGVQcm9w
ZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVVJM
UGFyc2VyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlZpc2li
bGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50
PiYmIGZyYWdtZW50LCBXVEY6OkZ1bmN0CiAgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBh
dHRyaWJ1dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGZvciBzcmNzZXQuCiAgICAgICAgICAgICBpZiAoZWxl
bWVudC5hdHRyaWJ1dGVDb250YWluc1VSTChhdHRyaWJ1dGUpICYmICFhdHRyaWJ1dGUudmFsdWUo
KS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBVUkwgdXJsID0gVVJMUGFyc2VyIHsgYXR0
cmlidXRlLnZhbHVlKCkgfS5yZXN1bHQoKTsKKyAgICAgICAgICAgICAgICBVUkwgdXJsKHsgfSwg
YXR0cmlidXRlLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZW1vdmVVUkwo
dXJsKSkKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlc1RvUmVtb3ZlLmFwcGVuZCh7IGVs
ZW1lbnQsIGF0dHJpYnV0ZS5uYW1lKCkgfSk7CiAgICAgICAgICAgICB9CkBAIC05NTEsNyArOTUx
LDcgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYKIAogICAgIGZyYWdtZW50LT5wYXJzZUhUTUwo
bWFya3VwLCBmYWtlQm9keS5wdHIoKSwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAgcmVzdG9y
ZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQoZnJhZ21lbnQpOwotICAgIGlmICghYmFzZVVS
TC5pc0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBibGFua1VSTCgpICYmIGJhc2VVUkwgIT0gZG9jdW1l
bnQuYmFzZVVSTCgpKQorICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBX
VEY6OmJsYW5rVVJMKCkgJiYgYmFzZVVSTCAhPSBkb2N1bWVudC5iYXNlVVJMKCkpCiAgICAgICAg
IGNvbXBsZXRlVVJMcyhmcmFnbWVudC5wdHIoKSwgYmFzZVVSTCk7CiAKICAgICByZXR1cm4gZnJh
Z21lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCBiNTUwYThmNjdmMzlkZmEzYWFlODkw
NWQ4YTBkMmYyNWNmOTA0YTg3Li5iMDQ4Y2E4MjMzMjc1MGJmYWJlODRhY2YxOWQ0YjUxY2QwZDJi
Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3MgRG9j
dW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxF
bGVtZW50OwotY2xhc3MgVVJMOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBRdWFs
aWZpZWROYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVT
dHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmlu
ZGV4IDYzYjFlMGU1NzQxMWQwNjMzYzQxOThmNGFlMDkzNTNhMDM1NTEyN2UuLjczYTM2NTIyODc5
OWMxNmI5YTk4OGQ5YTExODllMGNmOTM4MGZlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKIAogI2luY2x1ZGUgIkZpbGVT
dHJlYW0uaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9N
ZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCmluZGV4IDRm
MGU3YjI3NzcxN2ExOWNjMjcwZGYyZTk2M2FiZWVmOTNmM2YzNTMuLjYyY2FmZmUyZDk4YWQxZDVk
MTBmNGVkNjg4MTdkYTkwNDk0ZWExNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0Zp
bGVTdHJlYW0uaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZpbGVTdHJlYW1DbGllbnQ7CiBjbGFzcyBGaWxlU3RyZWFtOwotY2xhc3MgVVJMOwogCiBjbGFz
cyBXRUJDT1JFX0VYUE9SVCBBc3luY0ZpbGVTdHJlYW0gewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuaAppbmRleCAyMDEzOWM0YzEyYTE0OTNlMDUzOGRjOWFiOTUxNjNiMTQ5OGNmOTYyLi45MGQ0
NjU2OTk3MzAxMjU4ZWU4NjgyOGU5YWI2MDc4YWMzZjg5YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
aApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlByb3BlcnR5QmFnLmgiCiAjaW5j
bHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKaW5kZXggYzZkZmVlNjU1MDE1M2UyYmY0
ODhhMjdjYzVhZThlMjBlOThlMDQ2MS4uMTQ2YzBkYjA0OWQ3MTU0OGQwZmMyZDg4OWU0NmJiNmY1
NTY0OWFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCkBAIC0zMiw3ICszMiw3IEBA
CiAKICNpbmNsdWRlICJCbG9iVVJMLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvVVVJ
RC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JV
UkwuaAppbmRleCAzNTllYWFmN2YyYTI2NjdiOGIyMmY3YTM1MDMyYTE1NzFkNjcyMGM0Li4zZDBh
ZTExYzEwMzllMzQ4NGUwZWRmNzAwOTc3N2JmMmViZjliZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2JVUkwuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5oCmluZGV4IDU3NWYwZTc2ZDA5YTlkM2U1N2YyNThhZWNiZWYzMWYzNjBhNDhk
ZjAuLmRhMmU4YmNhMzUyY2EzZmM3ZWM3Y2I0NTYyZDc5YmJiNzI4YmYwNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5oCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgVVJMOwotCiBjbGFzcyBGaWxlIGZpbmFsIDogcHVibGljIEJsb2IgewogcHVibGljOgogICAg
IHN0cnVjdCBQcm9wZXJ0eUJhZyA6IEJsb2JQcm9wZXJ0eUJhZyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCmluZGV4IGYzZGM2YzQ3OGM5ODAwNGE3YjEzNDBjMzI5
ZWQ2ODgwOGI3MjE4ZjAuLjFmNzc3OGU4ODllMzkzZDdmYjk2OTQ0M2NlOGViZTIxMjc0ZDRhMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCkBAIC0zMiw3ICsz
Miw3IEBACiAKICNpbmNsdWRlICJCbG9iUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGaWxl
RXJyb3IuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IDQyNDZkN2VlYTBiMGU3M2I1MDlmYmM4MGQyNDFl
MWNmZjk2MjA5YzIuLmE5Yzc5ZmUyMjkyZjg5NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBA
IC0zNiw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2JQYXJ0Owot
Y2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFRocmVhZGFibGVCbG9i
UmVnaXN0cnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCmluZGV4IGUwYmU1NzFh
MjkwNjgzMjViYTE3ZWNmM2ViZGZlYjg2YjZiZDgxOTguLjI5OGY3ODI4MzFhNjk2OTg2MzhmYzU5
MmQyZjYzMDU0NjNhMzA0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKQEAg
LTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNjcmlwdENh
Y2hlZEZyYW1lRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9IaXN0b3J5SXRlbS5oCmluZGV4IGU3MmI1ODkzOTQ5ODFlY2VjNDEwN2Y2ZDYyYjc3Yzlk
NzQzODM1MWQuLjIwYTM5NzMzZjg1MzNhOTAzNGU2NTZiYTdmN2FiMGEwNTQ4MmY0YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTU0LDcgKzU0LDYgQEAgY2xhc3MgRm9y
bURhdGE7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEltYWdlOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQcnVuaW5nUmVhc29uOwogCiBXRUJDT1JF
X0VYUE9SVCBleHRlcm4gdm9pZCAoKm5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCkoSGlzdG9yeUl0
ZW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAppbmRleCBhNzdiY2Q3MDcyM2YzY2Y5Y2ExMTY4MmU0
NDZlZGZlODdkODEzOGY4Li4wYTA4YjU5NDY4NjU3MzJmMjhkYTMwZmI3ZjYzY2E0ZDMxNGVhOTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZjxET01VUkw+PiBET01VUkw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgRE9NVVJM
JiBiYXNlKQogCiBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9NVVJMOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiB1cmwpCiB7Ci0gICAgVVJMIGJhc2VVUkwgeyBibGFua1VSTCgpIH07CisgICAgVVJM
IGJhc2VVUkwgeyBXVEY6OmJsYW5rVVJMKCkgfTsKICAgICBVUkwgY29tcGxldGVVUkwgeyBiYXNl
VVJMLCB1cmwgfTsKICAgICBpZiAoIWNvbXBsZXRlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9ET01VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKaW5kZXggNTkwMjVj
MmZiOTZmMDI5OWFkOTE3ZTYxN2IyOTExYzMxYWI5MWQzNC4uZDMxM2Q3YTQ0NGQ4ZWE1NTM0ZjAw
M2Y0NDUwZmRkYTBkNDYzNTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01V
UkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCkBAIC0yNyw3ICsyNyw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFV0aWxzLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5jcHAKaW5kZXggOWI5OWEzNDczMDk3MmQ0ZGQ3OTljMDgxYTBmOThmNjM3N2FiNWFkMC4uMzA0
OGI0OTBmYTUzZjNmZDQxNTFlMDIxMDQzNmM2NGZhOTQ3MTQ3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKQEAgLTM3LDggKzM3LDggQEAKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTdWJmcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxB
bGxvd2VkKGNvbnN0IFVSTCYgY29tcGxldGVVUkwpIGNvbnN0CiAgICAgaWYgKGNvbXBsZXRlVVJM
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29tcGxldGVVUkwpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3Jp
cHQoY29tcGxldGVVUkwpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gY29udGVudERvYyA9
IHRoaXMtPmNvbnRlbnREb2N1bWVudCgpOwogICAgICAgICBpZiAoY29udGVudERvYyAmJiAhU2Ny
aXB0Q29udHJvbGxlcjo6Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4oY29udGVudERvYy0+ZnJh
bWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQg
SFRNTEZyYW1lRWxlbWVudEJhc2U6Om9wZW5VUkwoTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExv
Y2tCYWNrRm9yd2FyZExpc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fVVJMLmlzRW1w
dHkoKSkKLSAgICAgICAgbV9VUkwgPSBibGFua1VSTCgpLnN0cmluZygpOworICAgICAgICBtX1VS
TCA9IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKTsKIAogICAgIFJlZlB0cjxGcmFtZT4gcGFyZW50
RnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFwYXJlbnRGcmFtZSkKQEAgLTE3
OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbihjb25z
dCBTdHJpbmcmIHN0cikKIAogdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TG9jYXRpb24o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG5ld0xvY2F0aW9uKQogewotICAg
IGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFj
ZXMobmV3TG9jYXRpb24pKSkgeworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhuZXdMb2NhdGlvbikpKSB7CiAgICAgICAg
IGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgY29u
dGVudERvY3VtZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMjMyYjNkY2IzMDMxODg5ZGM4MjZmOTg3ZDJi
ZDZmYjA4NzU4ZTliNS4uYjFjY2Q3NTU3NTAwZmExYWI3NjBlMTI0MDAyM2EzYTllZmE2ZDM3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDYgQEAg
Y2xhc3MgSWNvbjsKIGNsYXNzIElucHV0VHlwZTsKIGNsYXNzIExpc3RBdHRyaWJ1dGVUYXJnZXRP
YnNlcnZlcjsKIGNsYXNzIFJhZGlvQnV0dG9uR3JvdXBzOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3Qg
RGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKaW5kZXggNTEwZjRjZmI2MzZkOWRhMTFlMjU4ZjllZTNhNDJmZWQ2ZWZkMzZjZC4uNjgy
OGY5MzQzYjU3MjQwOTVkYjYwMjE3NDI2ODc2NTQwNzBjZGY4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRE9NVG9rZW5MaXN0OwogY2xhc3MgSFRNTExpbmtFbGVtZW50OwotY2xhc3MgVVJM
Owogc3RydWN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjbGFzcyBFdmVudFNlbmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDljMDliMDk0ODM5OTU1MTE1ODNkYjUxMjVkM2VjN2M3MzRjZGM2MGIuLjc3ZDBj
YmZiN2Q0ODA0YjcyMWIyM2Q0NDNlMDdiMDc2ZmM0NjliNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTY4LDggKzE2OCw4IEBACiAKIG5hbWVzcGFjZSBX
VEYgewogdGVtcGxhdGUgPD4KLXN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpVUkw+IHsKLSAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQorc3RydWN0
IExvZ0FyZ3VtZW50PFVSTD4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVVJM
JiB1cmwpCiAgICAgewogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gNTEyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggMzIxM2M0NGFkYmYyOGYy
NzBiNTI2MGRjYTEzMDU1ZGU4YWE0M2Q5Yi4uOWU1YzI3Nzc3ZDY5M2U0ZjY0YmVmMWI3MzEyNTgz
OTVjNGFkMjMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1h
Z2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojppc0ltYWdlVHlwZSgpCiBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFsbG93ZWRUb0xv
YWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVUkwgY29tcGxldGVVUkwgPSBk
b2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7Ci0gICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIHBy
b3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKSAmJiAhZG9jdW1lbnQoKS5zZWN1cml0eU9y
aWdpbigpLmNhbkFjY2Vzcyhjb250ZW50RG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCisg
ICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxl
dGVVUkwpICYmICFkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzKGNvbnRlbnRE
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHJldHVybiBkb2N1bWVudCgpLmZyYW1lKCktPmlzVVJMQWxsb3dlZChjb21wbGV0ZVVSTCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKaW5kZXggMjdhNDg5ZDRmNjU3YjZlNjlkYzRlOTlm
OWQ0ZGM5YjY5ZDdiY2M3Ny4uMTIwMGI4NzgxNjQ2ZjYxYTZmNzBjNDZiOTliY2M4ZWZjZjY1YWQx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaApAQCAtNDQsNyArNDQsNiBAQCBjbGFzcyBJ
bnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFBlbmRpbmdJbWFnZUJpdG1hcDsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgSW1hZ2VCaXRtYXBP
cHRpb25zOwogCiBjbGFzcyBJbWFnZUJpdG1hcCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1
YmxpYyBSZWZDb3VudGVkPEltYWdlQml0bWFwPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFGcmFnbWVudFVSSVBhcnNlci5oCmluZGV4IDdjNzczNmMzNGViY2Y2NGQ5NDU2MDNkY2Q4NjM5
MzllOGRiMzdlNGMuLjEwYTJhMGQwZjUyMjRiMDUwYWQ1YzdmNGQxZDY1NmFmZWU4M2M3ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCkBAIC0yNywx
NCArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xh
c3MgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBmaW5hbCB7CiBwdWJsaWM6CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAppbmRleCBjZjE4NmMwYmE0MDBlMmEzYzIz
MDRjYzc5ZmZhZGJhOGFmM2FhMzYxLi43M2I1NDczNTc4ZTNiMGIzMWVhZjk1ZGE0MGMyMGFjMDk5
YzA3MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTI2
LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlB1YmxpY1VSTE1h
bmFnZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSAiVVJMUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKaW5kZXggZTMyNjU0NWRjY2I0OWJmYTZj
NWFmZjkyM2EyYzVlMGMwZmE3NzVhNC4uZTY5ZGU0ZWQ4YzgzYmI4YThkYzRkMzY2ODYyMmNkM2Zk
ZDUzN2U3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKQEAgLTMzLDcg
KzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdp
c3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcAppbmRleCA2Y2EwYWMxYTIwMTNj
ZjZkNWQ4ZGM1YzBlYTAzYjIxMTc5MmYxOTVlLi42M2JiM2NjMjYwMWEwNDNkMTQ5YzQ1YTI5ZWMx
OGRhMTQwYjVhZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwCkBAIC0zNiw3
ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIklucHV0
VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1VSTFJlZ2lzdHJ5LmgKaW5kZXggYmQ3NzJjZTVmMTdhNmI4N2RjMmY0NjI1YjcxYmUw
MTEwM2MzNzc0My4uODIyM2JiZDA3NTkwZGRhY2NlOWZkMTYwNGUzYWMwYmMwMTVmNjRhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaApAQCAtMzQsNyArMzQsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVVJM
UmVnaXN0cnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFy
YW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcAppbmRleCAz
MGU4NTkyNGE3ODUyMGQ2NTkyMDkxYWQyZDMzYzA0MjBjZmVkZDQzLi40ZTdmYmFlZmRmMGE0MTZj
YzY1NGFhNzNkNTliN2JlODBiNDFkMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFNlYXJjaFBhcmFtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQ
YXJhbXMuY3BwCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpbmNsdWRlICJVUkxTZWFyY2hQYXJhbXMu
aCIKIAogI2luY2x1ZGUgIkRPTVVSTC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgorI2luY2x1
ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBVUkxTZWFyY2hQ
YXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhjb25zdCBTdHJpbmcmIGluaXQsIERPTVVSTCogYXNzb2Np
YXRlZFVSTCkKICAgICA6IG1fYXNzb2NpYXRlZFVSTChhc3NvY2lhdGVkVVJMKQotICAgICwgbV9w
YWlycyhpbml0LnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9y
bShTdHJpbmdWaWV3KGluaXQpLnN1YnN0cmluZygxKSkgOiBVUkxQYXJzZXI6OnBhcnNlVVJMRW5j
b2RlZEZvcm0oaW5pdCkpCisgICAgLCBtX3BhaXJzKGluaXQuc3RhcnRzV2l0aCgnPycpID8gV1RG
OjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhpbml0KS5zdWJzdHJp
bmcoMSkpIDogV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oaW5pdCkpCiB7CiB9
CiAKQEAgLTEzMywyMCArMTMzLDIwIEBAIHZvaWQgVVJMU2VhcmNoUGFyYW1zOjpyZW1vdmUoY29u
c3QgU3RyaW5nJiBuYW1lKQogCiBTdHJpbmcgVVJMU2VhcmNoUGFyYW1zOjp0b1N0cmluZygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOworICAgIHJl
dHVybiBXVEY6OlVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOwogfQogCiB2b2lkIFVSTFNl
YXJjaFBhcmFtczo6dXBkYXRlVVJMKCkKIHsKICAgICBpZiAobV9hc3NvY2lhdGVkVVJMKQotICAg
ICAgICBtX2Fzc29jaWF0ZWRVUkwtPnNldFF1ZXJ5KFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFp
cnMpKTsKKyAgICAgICAgbV9hc3NvY2lhdGVkVVJMLT5zZXRRdWVyeShXVEY6OlVSTFBhcnNlcjo6
c2VyaWFsaXplKG1fcGFpcnMpKTsKIH0KIAogdm9pZCBVUkxTZWFyY2hQYXJhbXM6OnVwZGF0ZUZy
b21Bc3NvY2lhdGVkVVJMKCkKIHsKICAgICBBU1NFUlQobV9hc3NvY2lhdGVkVVJMKTsKICAgICBT
dHJpbmcgc2VhcmNoID0gbV9hc3NvY2lhdGVkVVJMLT5zZWFyY2goKTsKLSAgICBtX3BhaXJzID0g
c2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShT
dHJpbmdWaWV3KHNlYXJjaCkuc3Vic3RyaW5nKDEpKSA6IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNv
ZGVkRm9ybShzZWFyY2gpOworICAgIG1fcGFpcnMgPSBzZWFyY2guc3RhcnRzV2l0aCgnPycpID8g
V1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhzZWFyY2gpLnN1
YnN0cmluZygxKSkgOiBXVEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShzZWFyY2gp
OwogfQogCiBzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4g
VVJMU2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKaW5k
ZXggYTA3YzA4MTRmMTFlMTcxMTg0NTAzZTZhYTZhYWFkNmMwNDdkNDc1YS4uNjU2YWJmYmRhMGJk
YmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaApAQCAt
MTc0LDcgKzE3NCw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICAgICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAiIGlm
IGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCiAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBv
cnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgJzAnKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJs
LnByb3RvY29sKCkpKQorICAgICAgICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFu
ZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgcG9y
dEVuZCkpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBvcnQoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIw
IiBpZiBpdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nLgogICAgIC8vIEZJWE1FOiBodHRwOi8vdXJs
LnNwZWMud2hhdHdnLm9yZy8gZG9lc24ndCBhcHBlYXIgdG8gcmVxdWlyZSB0aGlzOyB0ZXN0IHdo
YXQgYnJvd3NlcnMgZG8KICAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50KCk7Ci0gICAg
aWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAg
aWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkK
ICAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKICAgICBlbHNlCiAgICAgICAgIHVybC5zZXRQb3J0
KHBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCBjMzQ2MTAyMTVlNTY5ZmU3YWExMTljYTUyMTZhN2Q4M2Ux
NTU2MjI5Li5kNzcyM2VkZGVkZmFjODVhZWQ5ODNjNWE1NDFkNGMwMDIyZDM1Zjk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1h
Z2VCaXRtYXAuaCIKICNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDgxY2I1NWQ3N2UzMTgwNTY0NDcwNzc3N2Ex
ZTI5OTU2ZjQ0M2Y2NTguLjk4ZWM0NjJlZmViMzk1YjlhN2U5YzM5OTcwMThlYWFkNWVmN2ZjNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFz
cyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEltYWdl
Qml0bWFwOwotY2xhc3MgVVJMOwogY2xhc3MgV2ViR0xPYmplY3Q7CiAKIGNsYXNzIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggNjc0ZGViYzY5OGRi
OWI3MDAyZWI0MDUyMzM1YjllNmRiODFiNjRhMy4uNDIzMDkyNjhlOWJkZDA5NWFjOWJmMTZhZDlm
NzMzMmEzNzFjZDViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkRlY2ltYWwuaCIK
ICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggNzE5MjhjN2NlYThlMTRmMDQ0
ZGU0OWY5ZDAxMzg0NzMwYWFhMmNlYi4uNjEwNGJlMzkyYmNlMzFjNjNjYTFlZjI0YWUxMmVlYjEz
MTk1NWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAg
LTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgYm9vbCBpc1NlbWljb2xvblNlcGFyYXRlZEF0dHJpYnV0
ZShjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlKQogc3RhdGljIGJvb2wgc2Vt
aWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoU3RyaW5nVmlldyBzZW1p
Y29sb25TZXBhcmF0ZWRWYWx1ZSkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBzZW1pY29sb25T
ZXBhcmF0ZWRWYWx1ZS5zcGxpdCgnOycpKSB7Ci0gICAgICAgIGlmIChwcm90b2NvbElzSmF2YVNj
cmlwdCh2YWx1ZSkpCisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHZhbHVl
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBA
IC00NDYsOSArNDQ2LDkgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbihjb25z
dCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0
ID0gZmFsc2U7CiAgICAgaWYgKG1fd2FzU2NyaXB0VGFnRm91bmRJblJlcXVlc3QpIHsKLSAgICAg
ICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNy
Y0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJp
YnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3Rl
ZChyZXF1ZXN0LCBTVkdOYW1lczo6aHJlZkF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5j
YXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9
IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBYTGlua05hbWVzOjpocmVmQXR0ciwg
YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsK
KyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVl
c3QsIHNyY0F0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpT
cmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1
dGVJZkluamVjdGVkKHJlcXVlc3QsIFNWR05hbWVzOjpocmVmQXR0ciwgV1RGOjpibGFua1VSTCgp
LnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAgICBk
aWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgWExpbmtO
YW1lczo6aHJlZkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxl
OjpTcmNMaWtlQXR0cmlidXRlKTsKICAgICB9CiAKICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHQ7
CkBAIC00NjEsNyArNDYxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihj
b25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJsb2NrU2Ny
aXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29udGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRT
bmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0g
ZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGRhdGFBdHRyLCBibGFua1VSTCgpLnN0
cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAgICBkaWRC
bG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZGF0YUF0dHIs
IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmli
dXRlKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHJlcXVlc3QsIHR5cGVBdHRyKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRy
aWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGNsYXNzaWRBdHRyKTsKICAgICB9CkBAIC00ODEsNyAr
NDgxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKGNvbnN0IEZpbHRlclRv
a2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBpZiAoIUhUTUxQYXJhbUVsZW1lbnQ6OmlzVVJMUGFy
YW1ldGVyKFN0cmluZyhuYW1lQXR0cmlidXRlLnZhbHVlKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVB
dHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1
dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVB
dHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0
dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihjb25zdCBG
aWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC00OTIsNyArNDkyLDcgQEAgYm9vbCBYU1NB
dWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVz
dCkKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29udGFpbmVk
SW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRTbmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsKICAg
ICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3Qs
IGNvZGVBdHRyLCBTdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsK
LSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVl
c3QsIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlr
ZUF0dHJpYnV0ZSk7CisgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJ
bmplY3RlZChyZXF1ZXN0LCBzcmNBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5j
YXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiAgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9
IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCB0eXBlQXR0cik7CiAgICAgfQogICAg
IHJldHVybiBkaWRCbG9ja1NjcmlwdDsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIFhTU0F1ZGl0
b3I6OmZpbHRlckZvcm1Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAg
ICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwog
ICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGZvcm1UYWcpKTsKIAotICAgIHJldHVy
biBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgYWN0aW9uQXR0ciwgYmxhbmtVUkwo
KS5zdHJpbmcoKSk7CisgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0
LCBhY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiBib29sIFhTU0F1
ZGl0b3I6OmZpbHRlcklucHV0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0
KQpAQCAtNTUyLDcgKzU1Miw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVySW5wdXRUb2tlbihj
b25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJl
cXVlc3QudG9rZW4sIGlucHV0VGFnKSk7CiAKLSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZklu
amVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVu
Y2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0
ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZm9ybWFjdGlvbkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJp
bmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKIH0KIAogYm9vbCBYU1NB
dWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVl
c3QpCkBAIC01NjAsNyArNTYwLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tl
bihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3Qu
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1l
KHJlcXVlc3QudG9rZW4sIGJ1dHRvblRhZykpOwogCi0gICAgcmV0dXJuIGVyYXNlQXR0cmlidXRl
SWZJbmplY3RlZChyZXF1ZXN0LCBmb3JtYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwg
VHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICByZXR1cm4gZXJhc2VBdHRy
aWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCku
c3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wg
WFNTQXVkaXRvcjo6ZXJhc2VEYW5nZXJvdXNBdHRyaWJ1dGVzSWZJbmplY3RlZChjb25zdCBGaWx0
ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC01NzMsNyArNTczLDcgQEAgYm9vbCBYU1NBdWRp
dG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRlclRva2Vu
UmVxdWVzdCYgcmUKICAgICAgICAgYm9vbCBpc0lubGluZUV2ZW50SGFuZGxlciA9IGlzTmFtZU9m
SW5saW5lRXZlbnRIYW5kbGVyKGF0dHJpYnV0ZS5uYW1lKTsKICAgICAgICAgLy8gRklYTUU6IEl0
IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBkaWRuJ3QgY3JlYXRlIGEgbmV3IFN0cmluZyBmb3IgZXZl
cnkgYXR0cmlidXRlIGluIHRoZSBkb2N1bWVudC4KICAgICAgICAgU3RyaW5nIHN0cmlwcGVkVmFs
dWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5nKGF0dHJpYnV0ZS52
YWx1ZSkpOwotICAgICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lu
bGluZUV2ZW50SGFuZGxlciAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcHBlZFZhbHVlKSkg
fHwgKGlzU2VtaWNvbG9uU2VwYXJhdGVkQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgc2VtaWNvbG9u
U2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoc3RyaXBwZWRWYWx1ZSkpOworICAg
ICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lubGluZUV2ZW50SGFu
ZGxlciAmJiBXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwcGVkVmFsdWUpKSB8fCAoaXNT
ZW1pY29sb25TZXBhcmF0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlKSAmJiBzZW1pY29sb25TZXBhcmF0
ZWRWYWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTChzdHJpcHBlZFZhbHVlKSk7CiAgICAgICAgIGlm
ICghaXNJbmxpbmVFdmVudEhhbmRsZXIgJiYgIXZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghaXNDb250YWluZWRJblJlcXVlc3Qo
Y2Fub25pY2FsaXplKHNuaXBwZXRGcm9tQXR0cmlidXRlKHJlcXVlc3QsIGF0dHJpYnV0ZSksIFRy
dW5jYXRpb25TdHlsZTo6U2NyaXB0TGlrZUF0dHJpYnV0ZSkpKQpAQCAtNzI3LDcgKzcyNyw3IEBA
IGJvb2wgWFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwp
CiAgICAgLy8gR2l2ZSBlbXB0eSBVUkxzIGFuZCBhYm91dDpibGFuayBhIHBhc3MuIE1ha2luZyBh
IHJlc291cmNlVVJMIGZyb20gYW4KICAgICAvLyBlbXB0eSBzdHJpbmcgYmVsb3cgd2lsbCBsaWtl
bHkgbGF0ZXIgZmFpbCB0aGUgIm5vIHF1ZXJ5IGFyZ3MgdGVzdCIgYXMKICAgICAvLyBpdCBpbmhl
cml0cyB0aGUgZG9jdW1lbnQncyBxdWVyeSBhcmdzLgotICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8
IHVybCA9PSBibGFua1VSTCgpLnN0cmluZygpKQorICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVy
bCA9PSBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgLy8gSWYgdGhlIHJlc291cmNlIGlzIGxvYWRlZCBmcm9tIHRoZSBzYW1lIGhvc3QgYXMgdGhl
IGVuY2xvc2luZyBwYWdlLCBpdCdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9YU1NBdWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmgKaW5kZXggZGM4MmFkZDdjN2Y1YmRkYTNjYWI1MzRkZmFhMTA5YmZkMTkwYmMyNy4uMTJlYzk4
YzA5MmZmNjUwNGNkZTUzZmZmOTM2ODFlMDI1MTEwMDUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiSFRNTFRv
a2VuLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU3VmZml4VHJlZS5oIgogI2luY2x1ZGUgIlRleHRF
bmNvZGluZy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JE
ZWxlZ2F0ZS5oCmluZGV4IDY3YTMyZWQ5MzBkN2Q5ZGQ0ZGFjNDA4OTIyMGJkZjNmMmFkNzZlODcu
LjYwNTE1OWIyZmFmYTRjZjg3MWFlNjU2ZjEwYWY0M2YwMDFlOTNmYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCkBAIC0yNiw3ICsyNiw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwCmluZGV4IGM3MzRkYTJiZWFlMTM4NDUyN2Q3NzJhZTliZTE4YjM3ZjU0NDVjOGIu
LjI2YWI2ZGY5NTI0YTRlNjk4MTQ4ODE1MjVlZGM4N2Y2NjA4NmI4NTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0zMTEs
NyArMzExLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmtpbGxUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgYm9vbCBzaG91bGRQcmVwZW5kVG9LaWwKIAogdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBpZiAoV2Vi
Q29yZTo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElz
SmF2YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9jbGllbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggZGRlMjEyMmNjZWQwMGE4ZTMyMGNmNDQwOThmYWQwNjY1NzY0Nzk3MC4uOGMzNzJm
YWFmN2VkOGVlZDM5OGI1YTZjZDdlNTRmYThmNmVlYzQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtODgsNyArODgs
NiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgVGltZXJCYXNlOwotY2xhc3MgVVJMOwogI2lmIEVO
QUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
CmluZGV4IDMzMzEwNzgxY2FhYjViNTE1MmQ2MWZjNTY2NjhhNDljYzM1MjQ0YzYuLjdjNjc0NDYx
MjA1NzA3OThjYWZkNzgwMTVmYWQ5OWQ2MDg3MzE0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldl
YlNvY2tldC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRGcmFtZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggNjRkMGUwNDU4MDI1OTVmZjMwNWM5YTM2
YzExMjJkMTY2NDM3OGM5NC4uYjY4NTkwZjFiODQwODgyODRhOGE1NWZjNzVkMGU1NTlkNDkwOWJk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIFJlc291cmNlTG9hZGVy
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNz
IFRleHRSZXNvdXJjZURlY29kZXI7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXZWJTb2NrZXQ7CiAKIHN0
cnVjdCBXZWJTb2NrZXRGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDY3MDlmNTJiZTAzNDMyYjJjNTVlYjk0
NzFiYzRjMGRiMjVkMDg2YzcuLjcyZjYzYmQ4OTYyNWI2MjY5Y2JmN2E2M2YxMjUyMTVmNDE1NzVi
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBJbnNwZWN0b3JPdmVybGF5Owog
Y2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNs
YXNzIFVSTDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRl
eCA3Mjg4Y2ZmZTRjZjJlOGZlYmViMGM2MTBkNDZiN2VjYWZiYzY1ZjRkLi41ZTA0MGM5NTRkNGI1
MTRhMTQ5MDNjMDcyMDcwYmVjZGUwNjBjYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw2
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBVUkw7CiAKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaAppbmRleCA4YjY0MzFhYjQyMmYyY2I2Yzk0OGQ4
Y2Y4ZWJiNTUxMTcxMTdkZGJhLi4xYjBmNzYwZDJlY2ViZDVjMjhlZjVjMmVjNDJlZGExMmYwM2Yz
YmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVz
dExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLmgKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbk1hbmlmZXN0
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5kZXggNWZhNzA1ZDhhODVmZjE1ODY4OTA2NWZj
OGJjZDg4YjNmYzk4YjRlNC4uYjliOWYzNzQ5NzQzZWQ0OGY3MzhhM2ZkOGU3MmE2OWE0ZDAwOWU3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFVSTDsKIHN0cnVjdCBDb29r
aWU7CiBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAppbmRleCBkMmIwOWJk
NWRiNTY3NmMwMWFiZjgyM2QzZjA3MjJhNzcwZWE1NDBiLi4yYWYzZDRhMWM1MjA5MTI5M2RlMWM0
ODNhMmZjMTczYWM2NmVhMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5oCmluZGV4IGRjMDcxMzBhMWIxNDY1M2JkMWRmNWJlZWU5ODgw
OWUzYjcyZWZiZTMuLjk2NWRlNmY4YTA3YmRjNzhjMDhlMGYxYzJlNzIxOWUxZWRhNDA0NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGUuaApAQCAtMjcsOSArMjcsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmlu
ZGV4IDY2ZmQ2YTg2YTg0NWFkNGRmMWIwZTA1YmNhZDc1YzIwMzIzNDgxY2EuLmRhNmIyYWJlMTEz
OGQ4ZjQxYTMwYWJjN2QxOTc2NGI4ODdmNmQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcApAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNv
dXJjCiAgICAgICAgIHN3aXRjaCAoc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY2FzZSBTaG91
bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbjoKICAgICAgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNw
ZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVz
IHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sgdG8gcmVzdW1lLgotICAgICAgICAgICAgcmVxdWVz
dCA9IHsgYmxhbmtVUkwoKSB9OworICAgICAgICAgICAgcmVxdWVzdCA9IHsgV1RGOjpibGFua1VS
TCgpIH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6
Tm86CiAgICAgICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwpAQCAtMTY2Nyw3
ICsxNjY3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9yZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSAmJiAh
ZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVu
dCgpKSB7Ci0gICAgICAgIG1fcmVxdWVzdC5zZXRVUkwoYmxhbmtVUkwoKSk7CisgICAgICAgIG1f
cmVxdWVzdC5zZXRVUkwoV1RGOjpibGFua1VSTCgpKTsKICAgICAgICAgaWYgKGlzTG9hZGluZ01h
aW5SZXNvdXJjZSgpKQogICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlzcGF0
Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgKaW5kZXggYWM5NDhjY2RhZGQwYWExYzVlMWJlN2EwMWVhMTYwOTAxYzFm
YTM3NC4uZTlmNTAzY2M2ZjYzNGVlMTAzNjdhZGE3ODdkMTY2MjEwNmMxMmI0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTIzNCw3ICsyMzQsNyBAQCBjbGFzcyBE
b2N1bWVudExvYWRlcgogICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlz
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIHVybEZvckhpc3RvcnkoKTsgfQogICAgIHZvaWQgc2V0Q2xp
ZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KGNvbnN0IFN0cmluZyYgY2xpZW50UmVkaXJlY3RT
b3VyY2VGb3JIaXN0b3J5KSB7IG1fY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gY2xp
ZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OyB9CiAgICAgCi0gICAgU3RyaW5nIHNlcnZlclJl
ZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuICh1cmxGb3JIaXN0b3J5KCkg
PT0gdXJsKCkgfHwgdXJsKCkgPT0gYmxhbmtVUkwoKSkgPyBTdHJpbmcoKSA6IHVybEZvckhpc3Rv
cnkoKS5zdHJpbmcoKTsgfSAvLyBudWxsIGlmIG5vIHNlcnZlciByZWRpcmVjdCBvY2N1cnJlZC4K
KyAgICBTdHJpbmcgc2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1
cm4gKHVybEZvckhpc3RvcnkoKSA9PSB1cmwoKSB8fCB1cmwoKSA9PSBXVEY6OmJsYW5rVVJMKCkp
ID8gU3RyaW5nKCkgOiB1cmxGb3JIaXN0b3J5KCkuc3RyaW5nKCk7IH0gLy8gbnVsbCBpZiBubyBz
ZXJ2ZXIgcmVkaXJlY3Qgb2NjdXJyZWQuCiAgICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0RGVzdGlu
YXRpb25Gb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gdXJsKCk7IH0KIAogICAgIGJvb2wgZGlk
Q3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWRDcmVhdGVHbG9i
YWxIaXN0b3J5RW50cnk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5k
ZXggMzg1ZmI2NDA3YmE0MTliYmI4NjY3Y2JjNTA5OTdjMWIwZDRiZjIxNC4uMzA0OGM1OWU1NzUx
MzdkODVlMGE5OWNlOTJjNTBlM2RlN2JhZjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmgKaW5kZXggNGNkZjQ4Yjc3YzZkMDVlMmU2NTU3OWE0MzIxNDgzMDhkODQ4ZWJjOS4u
ZjlhY2NmMTcyMTViYjA2YTZmODk2NmNmMDIxNzk5YmVkNThlM2QxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkZv
cm1TdGF0ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYjNhZTZhYjBlM2Q0OWEwZGI2MTM3NWEz
YzdkY2ZkMjgyMDQ0NDhkMi4uOWQwMjk3YjFiNDc1N2QyOGIzMDNhYzBiZDM4NmY5YzYzMjc1MDM5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00MjEsNyArNDIxLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3Vi
bWlzc2lvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwcm90b2NvbElzSmF2
YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElz
SmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKICAgICAgICAgaWYgKCFtX2ZyYW1l
LmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Zvcm1BY3Rpb24oVVJM
KHN1Ym1pc3Npb24tPmFjdGlvbigpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1f
aXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7CkBAIC02OTksNyArNjk5LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIGlmICghcGFyc2VI
VFRQUmVmcmVzaChkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6UmVmcmVzaCksIGRlbGF5LCB1cmxTdHJpbmcpKQogICAgICAgICByZXR1cm47
CiAgICAgYXV0byBjb21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gZG9jdW1lbnQu
dXJsKCkgOiBkb2N1bWVudC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwotICAgIGlmICghcHJvdG9j
b2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICBpZiAoIVdURjo6cHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29tcGxldGVkVVJMKSkKICAgICAgICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1
bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkb2N1bWVudCwgZGVsYXksIGNvbXBsZXRlZFVSTCk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGF1dG8gbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJlc2ggIiAr
IGRvY3VtZW50LnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0byBh
IGphdmFzY3JpcHQ6IFVSTCI7CkBAIC0zMzU1LDcgKzMzNTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZQogCiAgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcg
Zm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRl
IGJhY2sgdG8gcmVzdW1lLgogICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29u
dGludWU6OkZvclN1c3BlbnNpb24pCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXItPndpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KHsgYmxhbmtV
UkwoKSB9KTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+d2lsbENv
bnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBXVEY6OmJsYW5rVVJMKCkgfSk7
CiAKICAgICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWlu
UmVzb3VyY2Uoc2hvdWxkQ29udGludWUpOwogICAgIH07CkBAIC0zOTA2LDcgKzM5MDYsNyBAQCBS
ZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyRnJhbWUsIEZyYW1lJiBsb29r
dXBGcmFtZSwgRnJhbWVMb2FkUmVxdQogICAgIGNyZWF0ZWQgPSBmYWxzZTsKIAogICAgIC8vIEZJ
WE1FOiBQcm92aWRlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUg
b3BlbmVyJ3MgZG9jdW1lbnQuCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpICYmICFvcGVuZXJGcmFtZS5kb2N1bWVudCgpLT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhvcGVuZXJGcmFtZS5kb2N1
bWVudCgpLT51cmwoKSwgeyB9KSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKSAmJiAhb3BlbmVyRnJhbWUuZG9jdW1lbnQo
KS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SmF2YVNjcmlwdFVSTHMob3BlbmVyRnJh
bWUuZG9jdW1lbnQoKS0+dXJsKCksIHsgfSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSAmJiAhZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShyZXF1ZXN0LmZyYW1lTmFtZSgpLCAiX2JsYW5rIikpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMWI5MTFhMmI3ZDI5MjJiYTM2Njk1ZDRk
OTI2MzA0MGY1MGYyZmYzZi4uOTA0ZWQ5NjJmNzk3OTNjODNlY2I3ZDgxNWY0NTA2ZmZjODUwYTVj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEwMCw3
ICsxMDAsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKLWNsYXNzIFVSTDsK
IGNsYXNzIFdpZGdldDsKIAogZW51bSBjbGFzcyBQb2xpY3lEZWNpc2lvbk1vZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA5ZmJhODM1YTQ1NTI5
ZWVjOTE5MDBjMmYzYjJlYjUwYjcxODg4NGQ4Li41MGJkMTM4ZjAyZTM0YjE0YTM5MTllMzY3ZWQ3
ODFiZGJjNzliYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJyZW50
SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdAogICAgIC8vICAiSWYgdGhlIGJyb3dzaW5nIGNv
bnRleHQncyBzZXNzaW9uIGhpc3RvcnkgY29udGFpbnMgb25seSBvbmUgRG9jdW1lbnQsCiAgICAg
Ly8gICBhbmQgdGhhdCB3YXMgdGhlIGFib3V0OmJsYW5rIERvY3VtZW50IGNyZWF0ZWQgd2hlbiB0
aGUgYnJvd3NpbmcgY29udGV4dAogICAgIC8vICAgd2FzIGNyZWF0ZWQsIHRoZW4gdGhlIG5hdmln
YXRpb24gbXVzdCBiZSBkb25lIHdpdGggcmVwbGFjZW1lbnQgZW5hYmxlZC4iCi0gICAgcmV0dXJu
IG1fY3VycmVudEl0ZW0gJiYgIW1fcHJldmlvdXNJdGVtICYmIGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobV9jdXJyZW50SXRlbS0+dXJsU3RyaW5nKCksIGJsYW5rVVJMKCkpOworICAgIHJldHVybiBt
X2N1cnJlbnRJdGVtICYmICFtX3ByZXZpb3VzSXRlbSAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG1fY3VycmVudEl0ZW0tPnVybFN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpOwogfQogCiB2b2lk
IEhpc3RvcnlDb250cm9sbGVyOjpjbGVhclByZXZpb3VzSXRlbSgpCkBAIC02NTQsOSArNjU0LDkg
QEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0mIGl0
ZW0pCiAgICAgLy8gTGF0ZXIgd2UgbWF5IHdhbnQgdG8gbGVhcm4gdG8gbGl2ZSB3aXRoIG5pbCBm
b3IgVVJMLgogICAgIC8vIFNlZSBidWcgMzM2ODIzNiBhbmQgcmVsYXRlZCBidWdzIGZvciBtb3Jl
IGluZm9ybWF0aW9uLgogICAgIGlmICh1cmwuaXNFbXB0eSgpKSAKLSAgICAgICAgdXJsID0gYmxh
bmtVUkwoKTsKKyAgICAgICAgdXJsID0gV1RGOjpibGFua1VSTCgpOwogICAgIGlmIChvcmlnaW5h
bFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIG9yaWdpbmFsVVJMID0gYmxhbmtVUkwoKTsKKyAgICAg
ICAgb3JpZ2luYWxVUkwgPSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgCiAgICAgU3RyaW5nV2l0aERp
cmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuaAppbmRleCAwMWQxZWZjMzE1YTViMDJkMDY5OWU5YWM0NWRmZDEzNjg3OGY0
YWIxLi41NGQ3MjIzMTBkOGRmZjkyMWYxZTlkZTA1NDViZDllMWM2MjA5NDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBMaW5rUHJlbG9hZFJlc291
cmNlQ2xpZW50OwogCiBzdHJ1Y3QgTGlua1JlbEF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZFRpbWluZy5oCmluZGV4IDczZjllZjk0YWZkNjI1NWQ1YTNmNTc0NTgyZDMwYTY0ZjIxZDE0NjQu
LmZlYTdjNDFmY2U2MDI1MjZlMzZhYThlZGI2ZWFiNDY1Njk4NThjODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xvYWRUaW1pbmcuaApAQCAtMjUsMTMgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFVSTDsKLQogY2xhc3MgTG9hZFRpbWluZyB7CiBwdWJsaWM6CiAgICAgU2Vjb25kcyBzZWNvbmRz
U2luY2VTdGFydFRpbWUoTW9ub3RvbmljVGltZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
b2FkZXJTdHJhdGVneS5oCmluZGV4IDU5Njc4MmM2NTdjYWM1MDgyY2FmZTFjZTRiMWMxNmZmYjlh
NjhkNGQuLjI4NWU2ODA5Y2U0NWUyMjEyNDQ0NjlmZjk1NWFlNTVlZmRlYjUxNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC01MSw3ICs1MSw2IEBAIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgRmV0Y2hP
cHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5j
cHAKaW5kZXggMDUwY2I3OWVhNjU3N2Q1M2EwMzM1MjA2YmQ0NjBlYTQ0NzNmMjM3Ny4uZmFkZTAx
YjdjMWQwYmVjODQ2MzY3ZmY1YTYyN2Q5M2RmMWYwOWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQg
TWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JtRm9yTWl4ZWRDb250ZW50KFNlY3VyaXR5T3Jp
Z2luJiBzZWN1cml0eU9yaWdpCiB7CiAgICAgLy8gVW5jb25kaXRpb25hbGx5IGFsbG93IGphdmFz
Y3JpcHQ6IFVSTHMgYXMgZm9ybSBhY3Rpb25zIGFzIHNvbWUgcGFnZXMgZG8gdGhpcyBhbmQgaXQg
ZG9lcyBub3QgaW50cm9kdWNlCiAgICAgLy8gYSBtaXhlZCBjb250ZW50IGlzc3VlLgotICAgIGlm
IChwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZh
U2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaXNNaXhlZENvbnRlbnQo
c2VjdXJpdHlPcmlnaW4sIHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWl4ZWRDb250ZW50Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVu
dENoZWNrZXIuaAppbmRleCBhMjZhODU3OTdkM2E4Y2IwYzI5MzNkZjI0Nzc2YjY5NWI3MGQ0NDM0
Li41ZmRmZmY4MGEzMTg3NDM3MTgzODg5MGI1ZTI0MDRlYTAwOWYxMTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgKQEAgLTM3LDcgKzM3LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50
OwotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIE1peGVkQ29udGVu
dENoZWNrZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
Y3BwCmluZGV4IGE4ZjgwYmUxMzgyMDdkYzdhYTZjNmMxNDY5NzNkMGRiOWU0YjliMWMuLjg4ZTcw
NTE2ZDZjZTkzZDM2ZWM4M2FiMmM4ZDQzYjdmYzQ1ZGEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTM2Niw3ICszNjYsNyBAQCBpbmxp
bmUgYm9vbCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24o
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1
cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIHJldHVybiBOYXZpZ2F0aW9uRGlzYWJsZXI6OmlzTmF2aWdhdGlvbkFs
bG93ZWQobV9mcmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hl
ZHVsZXIuaAppbmRleCAwNDU5MzE4MTkxNzY0OWJiMjk4NzUzNTVlMzM4NzIwNzM1NDMyMTk0Li42
ZmJlMmE1YjNkYmM5NmZjYmQ0NTA5MjU1OTc4NGU4ZGQwY2Q2YjIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3Mg
Rm9ybVN1Ym1pc3Npb247CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFNjaGVkdWxlZE5hdmlnYXRpb247
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgTmF2aWdhdGlvblNj
aGVkdWxlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGlu
Z0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRleCAxNTQ4
OWRjZjA0YmYxZGVkNzg4NmVmOGMwODYxN2RkYmMxM2Q5YTE4Li42ZGVlZjQ1MTY5YTllNWNhMzBh
OWYyZjgzMzQyMzc5ZDM5OWIxZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UGluZ0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKQEAg
LTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9ybURhdGE7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiAKIGVudW0gY2xhc3MgVmlvbGF0aW9uUmVwb3J0VHlwZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaAppbmRleCA5YjYzMzBlZDQ3YmFjNjZkZWEyMmI4
NGUxOWNmMWQwMGIwNmEyM2MxLi4xYzEyM2QwNmY3YWQ2NzUyMjlkNmM1ZTAxZjkyNTFhNjhiMTYy
MjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKQEAgLTI2LDcg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAK
aW5kZXggN2JkZmM0OGY1ZDQwNTliZTZhYjhiYjlhMjVlYjA4MzUwZTg5MDE5OS4uMTI3MjNiMzQy
Y2I1YzI2NTJmM2UxNGFkNGFjM2MyZDFjNDBmNmZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoY29u
c3QgU3RyaW5nJiBkb21haW5JCiAgICAgYXV0byBvcGVuZXJQcmltYXJ5RG9tYWluID0gcHJpbWFy
eURvbWFpbihvcGVuZXJVcmwpOwogICAgIGlmIChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Mg
IT0gb3BlbmVyUHJpbWFyeURvbWFpbgogICAgICAgICAmJiAhb3BlbmVyRG9jdW1lbnQuaGFzUmVx
dWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24oZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzKQotICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShvcGVuZXJVcmwuc3RyaW5nKCksIGJsYW5rVVJMKCkpKSB7CisgICAgICAgICYmICFlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG9wZW5lclVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSkgewog
ICAgICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyUHJpbWFyeURvbWFpbik7
CiAgICAgICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVzdHMgc2lu
Y2UgdGhleSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJEb2N1bWVu
dC5zZXRIYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFj
dGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCBhZTJjYWUyNzgwOTE3NTU4M2YyZWJiNDMz
NjVhMTAxOWExNDcxMDg3Li4yYWJmYzUwMzM0YzE3ZDg5ZTJiNmZmYmRjMzhhMzgyYTFmMTA2ZTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAt
NDcsNyArNDcsNiBAQCBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBV
Ukw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAppbmRleCBmOTRkNmZkMTllNzc0NmRm
NWU2ODNhOTU3ZjBmZDk5YTc3MmQzMjFhLi4wODI0NjlkYTEyYTA0MGIzMThjNDJhZjNjNjc0Y2Q4
MGMwZmQ2ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmgKQEAgLTI2LDEwICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJD
YW52YXNBY3Rpdml0eVJlY29yZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4
IDZiYTU1MjZjMGFmNTZlOTYyMzU2MWRiNDdjZDFiYWZmODEzMTk2Y2MuLmEwYjdkODQ5ODUwMmIw
ZTcyMzdhZjFhMDFhMjFiNmJkN2E5NTg5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2Fk
ZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcmV2aWV3TG9hZGVyOwotY2xh
c3MgVVJMOwogCiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291
cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKaW5kZXggNmM5YWNiMTkzYTY3MDIzYmI1
ZGMzNmJhYzRkYTdlNzk4ODM0NDNiZS4uN2VmOGRiYzg1MTRkY2VjZmYxYjA3ZjQ1MDM3MDM3Zjhl
ODg0ODgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKQEAgLTI4LDcg
KzI4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRN
ZXRyaWNzLmgiCiAjaW5jbHVkZSAiU2VydmVyVGltaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IDVkN2QzOGMzYjA3MjNiNzE4NjA5YWQ4
N2IxMGU3NTIxNjRkZTg3MzYuLjU1YTE2ODQ4MzFiZDAxZjZlMGM0YTYxZmM3Yjc3YmI1NzdlZDg4
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtNzcsMTQg
Kzc3LDE0IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25l
ckVsZW1lbnQmIG93bmVyRWxlbWVudCwgY29uc3QgU3RyCiAgICAgLy8gU3VwcG9ydCBmb3IgPGZy
YW1lIHNyYz0iamF2YXNjcmlwdDpzdHJpbmciPgogICAgIFVSTCBzY3JpcHRVUkw7CiAgICAgVVJM
IHVybDsKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkgeworICAgIGlm
IChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpIHsKICAgICAgICAgc2NyaXB0
VVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsgLy8gY29tcGxldGVVUkwoKSBlbmNvZGVzIHRo
ZSBVUkwuCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdURjo6Ymxh
bmtVUkwoKTsKICAgICB9IGVsc2UKICAgICAgICAgdXJsID0gY29tcGxldGVVUkwodXJsU3RyaW5n
KTsKIAogICAgIGlmIChzaG91bGRDb252ZXJ0SW52YWxpZFVSTHNUb0JsYW5rKCkgJiYgIXVybC5p
c1ZhbGlkKCkpCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdURjo6
YmxhbmtVUkwoKTsKIAogICAgIGJvb2wgaGFzRXhpc3RpbmdGcmFtZSA9IG93bmVyRWxlbWVudC5j
b250ZW50RnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWUgPSBsb2FkT3JSZWRpcmVjdFN1YmZyYW1l
KG93bmVyRWxlbWVudCwgdXJsLCBmcmFtZU5hbWUsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0Zvcndh
cmRMaXN0KTsKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZy
YW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBTdHIKICAgICAv
LyBJZiB3ZSBjcmVhdGUgYSBuZXcgc3ViZnJhbWUgdGhlbiBhbiBlbXB0eSBkb2N1bWVudCBpcyBs
b2FkZWQgaW50byBpdCBzeW5jaHJvbm91c2x5IGFuZCBtYXkKICAgICAvLyBjYXVzZSBzY3JpcHQg
ZXhlY3V0aW9uIChzYXksIHZpYSBhIERPTSBsb2FkIGV2ZW50IGhhbmRsZXIpIHRoYXQgY2FuIGRv
IGFueXRoaW5nLCBpbmNsdWRpbmcKICAgICAvLyBuYXZpZ2F0aW5nIHRoZSBzdWJmcmFtZS4gV2Ug
b25seSB3YW50IHRvIGV2YWx1YXRlIHNjcmlwdFVSTCBpZiB0aGUgZnJhbWUgaGFzIG5vdCBiZWVu
IG5hdmlnYXRlZC4KLSAgICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1l
IHx8IChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxVUkwoKSA9PSBibGFua1VSTCgpKTsKKyAgICBib29s
IGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+b3Jp
Z2luYWxVUkwoKSA9PSBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGlmICghc2NyaXB0VVJMLmlzRW1w
dHkoKSAmJiBjYW5FeGVjdXRlU2NyaXB0ICYmIG93bmVyRWxlbWVudC5pc1VSTEFsbG93ZWQoc2Ny
aXB0VVJMKSkKICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwo
c2NyaXB0VVJMKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1l
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAppbmRleCA0
ODk2ZDYyZjQ1ZjFmODFkOTBkZTc0MDJlMjA5NzA0MWE2ZWIwNjRjLi4yY2FhZTljYTYwOThhNzUz
M2MzMDkzODk2ZGMyMDMxMjZlNjg5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3ViZnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVM
b2FkZXIuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBj
bGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVudDsKIGNs
YXNzIEludFNpemU7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXaWRnZXQ7CiAKIC8vIFRoaXMgaXMgYSBz
bGlnaHQgbWlzbm9tZXIuIEl0IGhhbmRsZXMgdGhlIGhpZ2hlciBsZXZlbCBsb2dpYyBvZiBsb2Fk
aW5nIGJvdGggc3ViZnJhbWVzIGFuZCBwbHVnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZURhdGEuaAppbmRleCBmMTAxMzUxNTk3MTk4MTgyOWM2MTAxOTE3NTJiOTFhZjllYzdmYjc1
Li43MDU2MzIxMzNkZjhlZjg1NjU5ODUyODdlNDEwNjBiMWRiMzc5NDg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKaW5kZXggNWRmNWY2MDE3Y2U0YzAzYjc4OGJlOThiZWI3
YjZlMTdiYjA0MGI2ZS4uNjEzMTdiNTMxY2NjMWIwNjI5YjIxZGJmMGE2N2NjZmVlYTZjZjQ2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIAogdXNpbmcgRmFsbGJhY2tVUkxWZWN0b3IgPSBW
ZWN0b3I8c3RkOjpwYWlyPFVSTCwgVVJMPj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCBhYmFhNzNlMTRh
YjRiOGM3YWJhYjEwODhkZDhjMjM4ZTY5ZTJiNDFlLi40N2Q4OTM0YmE5OTE0YTVhNTZkMTE0NmE3
OTdlZGViODRkZjJkYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0yNywxMCArMjcsMTAgQEAKIAogI2lu
Y2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRPTUFw
cGxpY2F0aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IGYyZmIxZjc4MzJiY2Q4MDQ2
MmJjYWIwOGNlYmE3ZDEyNWI4NWEyNDMuLjBkMTMwYTQ1ZjhhZjNiNDk5MDQyMTA1Yjk2MTAzOWZm
NWZiZjM0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggODFjMjMyMWYzMzk5YzMwNDAzMzc3NmQ5MjZkOGUzMDAz
YjZlNDFhNS4uMDQwZDhiN2FkNmEwOTFlYjFjOWU0MzViNWUwYzM0MDFmOTNhZTI1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA0OGNiZjg4ZTVkODkwMzcxMTM2MTg5NWNhMWMxMzJh
NjQwYzdkOTA0Li42OGMzNjFlNTJiNDJkOTFkMzYxZTljYzgyOTBlZjM1YzM1MDE1MmI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwog
Y2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFz
cyBTdG9yYWdlSURKb3VybmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggY2I0ODE1ODVmNGEwZGMzNjg5YzhlODE1ZTcwNmNh
MjRjNDI2MDAxNS4uODQ0NjlmOGFkNGE5NGE4NDYyZTc2ZjNkOTEwYzMyZThiMTQxMjE5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3Bw
CkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKIAogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0
Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKaW5kZXggZTc4MTA4OTNhMjA2OTBhY2U2M2FlYzNl
Yzg4ZTYwZWFmNjJmYzc4MC4uOGZlNDBhNjRlNDQ5MGFhYzgyN2E2MWRiMGY0MDQ3YzFlZTg2MGIx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2Vy
LmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7
Ci0KIHN0cnVjdCBNYW5pZmVzdCB7CiAgICAgVmVjdG9yPFVSTD4gb25saW5lV2hpdGVsaXN0ZWRV
UkxzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBsaWNpdFVSTHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgK
aW5kZXggMzdkZjY4YjM2NmNmZjg1MzliOTVjODIzZjJlOTEyNGQzNWVhOTkzOC4uZTQ2MGI2OWMy
YWVkNWQyNzlkZDU0YTBkZjlhZjAxMGI5NGJjNzdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaApAQCAt
MzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmU7CiBjbGFz
cyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcAppbmRleCA2NDEyMjYyZTE1YjkxZjFhOWFlNTRhYzA1MTk1MTZiNmNh
NjViODFmLi5hMWQzN2M3MDI5ZjI5N2E0MWY2ODNmMDllNzg2NGE5ZGM4YjdiMDA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkxI
YXNoLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtNTEsNiArNTAsNyBAQAogI2luY2x1ZGUgIm1hcmt1cC5oIgog
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTU2NCw3ICs1NjQsNyBA
QCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNl
bGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQg
aW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9j
dW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAog
ICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFy
Z2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1c
Ijk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3Bv
bnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKLSAgICBhdXRvIGlmcmFtZVJl
c291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXAp
LCBibGFua1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOworICAgIGF1dG8g
aWZyYW1lUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVyKGlmcmFt
ZU1hcmt1cCksIFdURjo6YmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFN0cmluZygp
KTsKIAogICAgIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7
CiAgICAgc3ViZnJhbWVBcmNoaXZlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNWUxZTNm
MWQzY2QxNGE0NmEyNzQ5YTQ4YTE5MzljYTJkNjM4OGI0Yy4uOGY1ZGQyMDYxNzRmZjQ4NmY0MTJj
ZWRmODEyYTk4MGRkNjNkYzUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCkBAIC00NywxMSArNDcsMTEgQEAKICNpbmNsdWRlICJTY2hlbWVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3VicmVz
b3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggMDc3N2IxNzcyNGU5YjA1Y2VmNWVkNTRhM2Fl
ZmMxZDExNDY3ZjRkNy4uMTBmNjljNmExMDUyOWYxZmQ5MTFhMWQwNzRlZjAzMDljMGY1Y2JiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEltYWdlTG9hZGVyOwogY2xhc3MgU2V0dGluZ3M7Ci1jbGFzcyBVUkw7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogdXNpbmcgUmVzb3VyY2VFcnJvck9yID0gRXhwZWN0ZWQ8VCwg
UmVzb3VyY2VFcnJvcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU3R5bGVTaGVldENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFN0eWxlU2hlZXRDbGllbnQuaAppbmRleCBkZjQ2YmUyZDM3N2U0YzFkZTE4MmFkYWYxNGQ3
MzlhMWY5N2NkYzAyLi4zOGJiMTk5OTAwODdjOGQ2NjYxZjM2YTM2NjlkNGM5YWUzMzQ4MTcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0
Q2xpZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q2FjaGVkQ1NTU3R5bGVTaGVldDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkU3R5bGVTaGVl
dENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGQ3MTY3OThhNGNlMWQ5N2Q2
MWQzMTNlOTUxOGI3ZGMyMjY5ZjcwNWMuLjJmY2JkMzE5ODVhNDc1YTMwZmYxNzdmNjMyOTQ2MjJm
MDEyNTI5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBA
IC00MSw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSAgewogCiBjbGFzcyBDYWNoZWRSZXNv
dXJjZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkxvYWRlci5oCmluZGV4IDZhYTU1Mzc0Zjc4YjY2NzdmNTcwOWEyYmQ5ZGNi
NzE0YzE4ZmZkZmEuLjM0YTBmMzJiNGY1ZThkZjlhNmMwM2VmNTc0MThmYzZhYTg1MWQzNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAgLTI3LDkgKzI3LDkgQEAK
IAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9M
b2FkZXJOU1VSTEV4dHJhcy5tbQppbmRleCBmOTEwZWQ1YmRlMjQ5YmEzMWI4YTU4M2ZjNTQxZWY3
YWFjY2MzY2MwLi5jYmUwMDA0ODA2Y2M1ODc0MjNkOGRlYjBlZTQ4NGEwMWY3ZTA2ZjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KQEAgLTMw
LDExICszMCwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMb2FkZXJOU1VSTEV4
dHJhcy5oIgogCi0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rv
ci5oPgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW1w
b3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRl
eCBjMTM5MDc2OGVmODY1ZjI2NjQxZTlhOTM0OGU2ZTY2MGRiMDcyZGVhLi45MTZkM2Y1MTFiOTY1
M2Q4NGNlN2FiM2YxNTExZjBiYjczNWI2YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNDEsNyArNDEsNyBA
QAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5o
IgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUg
IlZUVEN1ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCmluZGV4IGI1MTdiNTJlNzlkODg0ZDBlNzY4NjUwYTYxM2ZmNzQ5ODIyNDVmNGEuLmE1NTBk
NWIwYjc5YTk0MTg3N2EzZmJmNTQ5Njc0Y2RiMzNlZWJjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaApAQCAtMzgyLDcgKzM4Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIENocm9t
ZUNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIHsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgeyB9OworICAg
IHZpcnR1YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJMJiwgY29u
c3QgSGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIHsgfTsKIAogI2lmIFBMQVRG
T1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNv
cigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IGFmN2NhOTI2NGE0ZjJm
ODVlOTQwYzliZDFkNDAxNmRmYTA5OTJjYzAuLmI4NzUwNWEwNTA1NzllM2JmMTM4NTAyYTVlZmY0
YTQ1NTJlZDFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2lu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtMjYsNyArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDVlN2MzNWM5
NzcxOGQ4OGY4NDFiZjQxODA0NTI0OTRhZDhmNzUxOTIuLjg4OWVlOTk3NjEyOGQxYTk2NjdlMGE1
MGEzNDhlNTEyYmU2ODcwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50
LmgKQEAgLTMxLDI5ICszMSwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFz
cyBGcmFtZTsKLSAgICBjbGFzcyBVUkw7Ci0KLSAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVudCB7
Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgpID0gZGVm
YXVsdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOwot
ICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJs
KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1l
KikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikg
PSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IHN0b3BTcGVha2luZygpID0gMDsKK2NsYXNzIEZyYW1lOworCitjbGFzcyBDb250ZXh0TWVudUNs
aWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29udGV4dE1lbnVDbGllbnQoKSA9IGRlZmF1
bHQ7CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOworICAgIAor
ICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNT
cGVha2luZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSA9IDA7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7CiAjZW5kaWYKIAogI2lm
IFVTRShBQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCi0gICAgICAgIHZpcnR1YWwgdm9pZCBz
aG93Q29udGV4dE1lbnUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgp
ID0gMDsKICNlbmRpZgotICAgIH07Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCA2ODEy
NmJhOTZlOGJmMTdlNzY4OTNlMWViYWFjZjU0OTQwZjJmYmM3Li5hM2U1ZWFlODk0ZDY0Mjc2Mzdk
ZDg0NWVkYWFkZTcxYzYxNTFjMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkg
Y29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0Rvd25sb2FkSW1hZ2VUb0Rpc2s6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgaWYg
KFdlYkNvcmU6OnByb3RvY29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUlt
YWdlVVJMKCksICJmaWxlIikpCisgICAgICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKG1fY29u
dGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVSTCgpLCAiZmlsZSIpKQogICAgICAg
ICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgICAgICBicmVh
azsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVj
a09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAg
ICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRWaWRlb1RvRGlz
aygpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKGNv
bnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkQXVkaW9Ub0Rpc2soKSk7Ci0gICAgICAgICAgICBpZiAo
V2ViQ29yZTo6cHJvdG9jb2xJcyhtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlSW1h
Z2VVUkwoKSwgImZpbGUiKSkKKyAgICAgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMobV9jb250
ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksICJmaWxlIikpCiAgICAgICAg
ICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlwYm9hcmQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggN2JkZTFjYmI4YjYzNzFlN2E3YTA4YmE1NTFlODU2
YjgxOTJmNjBmYy4uMWQ2ZGQ3Y2E3Yjg4ZjhmOTNhOWMyNDlkNDlhZTE3NTdmOTAzMDRiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAjaW5jbHVkZSAi
U3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdWRk
ZW5UZXJtaW5hdGlvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc3VhbFZpZXdw
b3J0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9pbnQuaCIKQEAgLTIyMTUsNyArMjIxNSw3IEBAIFN0
cmluZyBET01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0IERPTVdp
bmRvdyYgYWN0aXZlV2luZG93LCBJCiAKIGJvb2wgRE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0
QWNjZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
IHsKLSAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCisgICAgaWYgKCFX
VEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIElmIHRoaXMgRE9NV2luZG93IGlzbid0IGN1cnJlbnRseSBhY3RpdmUgaW4g
dGhlIEZyYW1lLCB0aGVuIHRoZXJlJ3Mgbm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKaW5kZXggYTEwZGFiMzNmYjcyMDBkZjFhNDIwYzM0MjhlNWY3YjM5NmZjY2Q2Zi4uZTAx
MDhhN2JlYjNhYWJjNGQxMmE3ZTgzYWE5NzkxZGQyZTEzMTA1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTEwNjksNyArMTA2OSw3IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFn
T3BlcmF0aW9uCiAgICAgICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQpCiAgICAg
ICAgICAgICAgICAgc3JjLmVkaXRvcigpLmNvcHlVUkwobGlua1VSTCwgdGV4dENvbnRlbnRXaXRo
U2ltcGxpZmllZFdoaXRlU3BhY2UsIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFVSTChz
cmMuZWRpdG9yKCkucGFzdGVib2FyZFdyaXRlclVSTChsaW5rVVJMLCB0ZXh0Q29udGVudFdpdGhT
aW1wbGlmaWVkV2hpdGVTcGFjZSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJE
YXRhLnNldFVSTERhdGEoc3JjLmVkaXRvcigpLnBhc3RlYm9hcmRXcml0ZXJVUkwobGlua1VSTCwg
dGV4dENvbnRlbnRXaXRoU2ltcGxpZmllZFdoaXRlU3BhY2UpKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFzdGVib2FyZCBhbHNvIGNvbnRhaW5zIHRy
dXN0d29ydGh5IGxpbmsgZGF0YQogICAgICAgICAgICAgLy8gYnV0IGRvbid0IG92ZXJ3cml0ZSBt
b3JlIGdlbmVyYWwgcGFzdGVib2FyZCB0eXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuaAppbmRleCBjMDJkNWM4MDE2YzY1YjNkNWVmOTM1NmM4MmJlN2Q1NzJiOTc5YTk0Li44NDM1
MjgzY2RmY2IxMWE4NjJkOWZjY2M2NmYzMDQzZjJjNTdhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgi
CiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCAzNzkyYTkxMjZmMWQzMGFmZmUzN2JlMWMyYTZk
YWM3ODIxNmE3MjlhLi41OGE0YzM4NzQ5ZTk1MGI0NzhjZjg3MDY4YTI2MzkzMTBhZGVmMDlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggZTg4NmI5MGZjMDgxYmE3
YjNmMzBlYzM0MTRiMmZjYmJlOWVmMTVhNS4uYTAyMTVmYTc3NDIzODUyYWJiNTQxMTBhNzI5NzE2
YjkzNGU5MzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtODksNyArODksNiBAQCBjbGFzcyBSZW5k
ZXJXaWRnZXQ7CiBjbGFzcyBTY3JpcHRDb250cm9sbGVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiBjbGFzcyBTZXR0aW5nczsKLWNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNs
YXNzIFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMjQwZTY0NTczN2E0Yzc4
Y2Y1MmQ3MWQ4ZDI4NTcwYTAzYjg0ZjlhZi4uODRjNjIwMTBmNjZlOTNjMmVhYWVlZDQzY2Q3ZjI0
MDU1MmNkZGI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01Miw3ICs1Miw2IEBAIGNs
YXNzIEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxG
cmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwog
Y2xhc3MgUmVuZGVyQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAppbmRleCAwNWZlMmIzZjY3MGRlMmZm
YjViMGQ2YTkwZDhkNzRmOTJhODQ2NTcyLi43ZjM1ZjRkNzAxMDU1N2ZjNTk5YTIxYWRkZTY2MmEz
NTk0YjZiMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7Ci1jbGFzcyBVUkw7
CiAKIGNsYXNzIEhpc3RvcnkgZmluYWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMg
UmVmQ291bnRlZDxIaXN0b3J5PiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKaW5kZXggN2I5OGEwNjM2YzQ5MzZjZDZmZDYyOTQwMTIy
Y2FjYzlhODU4Njc2Ni4uODBhNmVkOTJiMDdhYjc5ZTAwZjUxYTc1YTgyMDI3NGNlYzU5NjUzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblNj
aGVkdWxlci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw3ICs1
MCw3IEBAIGlubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogCiAgICAgY29u
c3QgVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAoIXVybC5p
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBibGFua1VSTCgpOyAvLyBVc2UgImFib3V0OmJsYW5r
IiB3aGlsZSB0aGUgcGFnZSBpcyBzdGlsbCBsb2FkaW5nIChiZWZvcmUgd2UgaGF2ZSBhIGZyYW1l
KS4KKyAgICAgICAgcmV0dXJuIFdURjo6YmxhbmtVUkwoKTsgLy8gVXNlICJhYm91dDpibGFuayIg
d2hpbGUgdGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdlIGhhdmUgYSBmcmFtZSku
CiAKICAgICByZXR1cm4gdXJsOwogfQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgTG9jYXRpb246
OnJlbG9hZChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdykKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh0YXJnZXREb2N1bWVudC51cmwoKSkpCisg
ICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodGFyZ2V0RG9jdW1lbnQudXJsKCkpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2No
ZWR1bGVSZWZyZXNoKGFjdGl2ZURvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAppbmRleCBi
YjdkMmQxZDMzZWVmZjZjOWQxNjY2YWIwMDEwMTc4MzJhNGYyYWY4Li4wMzRjZThiNmVmY2Y3MmMw
YTdlZDRiZWUwMGZlMGVlYzk0YjE0NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCkBAIC0zNyw3
ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93OwogY2xhc3Mg
RnJhbWU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIExvY2F0aW9uIDogcHVibGljIFNjcmlwdFdyYXBw
YWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8TG9jYXRpb24+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVy
dHkgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAyNGI0MWRlM2Q2MWZhMTY4MTg4MjFlZDMw
Y2Q3ZTdiOTRmNjgwZDcxLi5iMmI5YWU2ZTU5NTg3MjdlYmU0M2ZjYzBkODJkMGEzYTdkMjA4MWJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaApAQCAtMTM1LDcgKzEzNSw2IEBAIGNsYXNzIFNldHRpbmdzOwogY2xh
c3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOwotY2xhc3MgVVJMOwogY2xhc3MgVXNlckNvbnRlbnRQcm92aWRl
cjsKIGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IDNiNmUx
ODI5ZTI4YzM1YTM5ZTRhMTZiNWYwODhlNjFjM2M0NmVkOGEuLmZmM2UyZTFmY2IwNjFhNGZmZmM1
ZGVmZDRjMmQxODBhZjQ5YmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgK
QEAgLTMwLDExICszMCwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTEhhc2gu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlLmgKaW5kZXggMjRhYjk0YmNhMjk1Y2NhZmIwYTY1MWE2MjcwYjI4Nzk0
NWViYTk5MS4uM2E4NjM0YWI2MzdhOTE0MmE3MjUwM2Y5YTg4YTUyNmY3OWUwYTliZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2UuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBQZXJmb3JtYW5j
ZVRpbWluZzsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBVc2VyVGlt
aW5nOwogCiBjbGFzcyBQZXJmb3JtYW5jZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlcmZv
cm1hbmNlPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZVJlc291cmNlVGltaW5nLmNwcAppbmRleCA1NzUzMzU4MGMzMDIxZWFlNjZkZTMxOTA4OWQ4
ZTRiMWJjMTAzZjlkLi43YjdkODdhNDU4ZmJhMGU3MzlkMmM0MjA5Y2Y4MjQyYmJkODc0OTA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlJlc291cmNlVGltaW5nLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggMjI5ZWZmODQzODU0YjIw
NjgwZDRhMzlkYzUxYzAwNzJhNzY0OWU5My4uMDIwZTA5MmI5OGY4YzgzZmQ4YTViM2Y0MzMyYzI0
NmIzZWM1ODc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNj
aGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJU
ZXh0RW5jb2RpbmcuaCIKQEAgLTE0OCw3ICsxNDgsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiAgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0cyBh
cyBtX2RhdGEuaG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KICAgICBtX2RvbWFpbiA9
IG1fZGF0YS5ob3N0OwogCi0gICAgaWYgKG1fZGF0YS5wb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbChtX2RhdGEucG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQorICAgIGlmICht
X2RhdGEucG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2RhdGEucG9ydC52
YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICBtX2RhdGEucG9ydCA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmlnaW5zIGNh
biBsb2FkIGxvY2FsIHJlc291cmNlcy4KQEAgLTUxNiw3ICs1MTYsNyBAQCBSZWY8U2VjdXJpdHlP
cmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29u
c3QgU3RyaW5nJgogewogICAgIFN0cmluZyBkZWNvZGVkSG9zdCA9IGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyhob3N0KTsKICAgICBhdXRvIG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3Rv
Y29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7Ci0gICAgaWYgKHBvcnQgJiYgIWlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQorICAgIGlmIChwb3J0ICYmICFXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQogICAgICAgICBvcmlnaW4t
Pm1fZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDVhZGY1MDE3NDliMDljMjkzZTU5YmE0MDQ1NmY3Njdj
YjU2ZTA4ZTEuLmI5M2QwZmFmMjM1YTdmZTM1NDc2NTA5ZjZlNDM3ZDU0NDA1Y2MxMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTM0LDggKzM0LDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6CiAgICAg
ZW51bSBQb2xpY3kgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5k
ZXggY2VmZmVhMzJiMDg0YzU2MzEyNGYyMGI3YzVmZTI4ZjE0OTA0MDQ3NS4uMjc3NjJlYTIxZDZk
MjA2NWU5ZGQwMTQ2ZGI5NzliMzMyZWM0NTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCmluZGV4IGVlMjU3MmM1
YTlhNjQ0Mzk1N2E1ZjNmNzUzZjQ2ZTJmYmE5MjIzNDAuLmUwMTQ4YTJkMDVkOTliMGRkZGYwNmEy
M2QyNDZkNTM0NTJjYjJjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW5IYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhh
c2guaApAQCAtMjgsNyArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNw
cAppbmRleCAxNTNlZGQ4MTlkMTI1NTU1NTY4ODc2NTY2ZGUzMWY5OGI2YzA1NTNiLi40MjM0MTgy
ODBlYTJlZTNjOWJmZGZjOTFjZDEyN2I5NjhlYjFlMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5UG9saWN5LmNwcApAQCAtMzEsMTEgKzMxLDExIEBACiAKICNpbmNsdWRlICJPcmlnaW5B
Y2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBTZWN1cml0eVBvbGlj
eTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKGNvbnN0IFVSTCYgdXJsKQog
ICAgIC8vCiAgICAgLy8gTm90ZTogV2UgZ2VuZXJhbGl6ZSB0aGlzIHRvIGludmFsaWQgVVJMcyBi
ZWNhdXNlIHdlIHRyZWF0IHN1Y2ggVVJMcyBhcyBhYm91dDpibGFuay4KICAgICAvLwotICAgIHJl
dHVybiB1cmwuaXNFbXB0eSgpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnN0cmluZygp
LCBibGFua1VSTCgpKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5n
KCksICJhYm91dDpzcmNkb2MiKTsKKyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKHVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNkb2MiKTsKIH0K
IAogdm9pZCBTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KExvY2FsTG9hZFBvbGlj
eSBwb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggY2QzN2NhM2Fk
MmRmZGJkN2U2NzIzNTFmYTU0M2VlZjQ5ZTgyYjRmNC4uNTMzYjFkNGZiZGFkNTJlMzhmMWZkMzVh
MmY2YTA3ZDQ4MDA4YjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaApAQCAt
MzQsNyArMzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgU2VjdXJpdHlQb2xpY3kgewogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3NCYXNlLmgKaW5kZXggYWE4MDRjZGIwODRlMGQ2YTNmZDNkZWViNmY2MWQ1
NTQzYWYzNDFiMS4uOTg2Nzc2Y2EzZGI1ZGE4ZjhlMWE2YmE4Nzc5ZmRlZWE3MjgzYjliMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAi
U3RvcmFnZU1hcC5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldyaXRp
bmdNb2RlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5j
bHVkZSA8dW5pY29kZS91c2NyaXB0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCAyNzlm
MDMzYTI2NDgxM2MyMWFkZjkwY2ZhNmMzNjU4YWMzODQzZjIzLi5jOGIxMmEzOTcxYjY2MmY4MDc4
ZjNjYTY4ZjUwZTYxZjlhN2Y4YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTI0LDcg
KzI0LDcgQEAKICAqLwogCiAjcHJhZ21hIG9uY2UKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U29ja2V0UHJvdmlkZXIuaAppbmRleCBkMTk3OTc3YWZlYjgyMGFhNDEyZTJjMzRmYTU0NzIxNjM4
NDkwZTcyLi45ZThjMDAzYmZmNTFlMWE1Y2M5NmQyZTQ3M2U3YWVlZWVkYmRhOGZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oCkBAIC0zNCw3ICszNCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTb2NrZXRTdHJl
YW1IYW5kbGU7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7Ci1jbGFzcyBVUkw7CiAK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvY2tldFByb3ZpZGVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNvY2tldFByb3ZpZGVyPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRQcm92aWRlci5oCmluZGV4IDI4ZGZiMzJhMDc2ZTY1MTJlY2Y5MjRmMDE0NTIy
MGVlYWU0OWM0NzIuLmZhNjkyMDM0ZGJhZTVmZDc5ZmU4MTk3ODlhNzMyMWViZTRiMGRlZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCkBAIC00Miw3ICs0Miw2
IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3Mg
UGFnZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIGNsYXNzIFVzZXJNZXNz
YWdlSGFuZGxlckRlc2NyaXB0b3I7CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0eWxl
U2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0
dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAK
aW5kZXggYjliODExNTgyN2I3OGY1MjczMDk1YzJjM2UxNTE4YmY0M2Y0M2U5MC4uZjM3M2NmMzdi
MjRjNTBmYzIxZGM2ZGM0NzFhYjA4ZWQ0ZWM1MDkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0
dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRl
eCA5MzNmNjlkNmM1YTYwZTZlZDcyOGJhMDgwZWVlODRmNTQ4MGRmMmQ2Li45M2Y2NTgxMmRhYzVk
ZThhZDVmY2RiNjcwZDhkMmY5ZTg2OTc4MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybiB7CiBwdWJs
aWM6CiAgICAgVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkgOiBtX2ludmFsaWQodHJ1ZSksIG1fbWF0
Y2hTdWJkb21haW5zKGZhbHNlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlclNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKaW5kZXggODUx
MGMxZjMzOTkwMWU5OTVmMzIwY2NjOWJmNzE5YjJlNDlhZTQyNy4uNTJjMTJmM2M2OTY2MzAyYWFl
ZjQ1NWI4ZmVmYmM5OWViZGE1ODRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKQEAgLTI1
LDcgKzI1LDcgQEAKICAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVzZXJDb250ZW50VHlwZXMuaCIKICNpbmNsdWRlICJV
c2VyU2NyaXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggNjhmMTBhODJhZGY4OThmMjUyYzQxNTU5Y2IxNjc4YWVj
OGM1MDg0MS4uYzQ3NDc2N2U3Yzk4YmI0OGE4ODNjYjczYjY5ODkwNWY2MDFkNzYwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAtMjUsNyArMjUsNyBAQAogIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSAiVXNlckNvbnRlbnRUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1Zpc2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9y
ZS5oCmluZGV4IDQzYzM1MTM3MmQ2MThiNjgxMDliMGZiOGNjZDY5ZmM4NWY4YmRkNzguLjI2ZDY1
MGRiYTc0ZGM1MDJjZjkzMDlhM2YzZDFjMDVkYTZiNjQ5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VmlzaXRlZExpbmtTdG9yZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogY2xhc3MgUGFnZTsKLWNsYXNz
IFVSTDsKIAogY2xhc3MgVmlzaXRlZExpbmtTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpc2l0
ZWRMaW5rU3RvcmU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgKaW5kZXggNWI1OTJmZDgyOGY5N2Y5NGMyM2FlMzM0OTY4YTVh
YjQ3ZDk2YzE2My4uZTAyYTdhYjZjNTliZmNmNWI5OWU2NDhmZmM2YzdlMjU0NGNmZmUzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAg
LTU2LDcgKzU2LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVGV4dEVuY29kaW5nOwot
Y2xhc3MgVVJMOwogc3RydWN0IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKIAogdHlwZWRl
ZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q+PiBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaAppbmRleCBlYjRmZTg3YzI5ZjFj
YWIxMThiZDFiMGRiZTY3NjNjYjEwNGYzMjMwLi44ZTA1MTgyNjQxNDA2ZjJjYzhjYWEyZGM1NmFl
MzM2MDYzNGU2YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaApAQCAtMzIsNyArMzIsNiBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGb3JtRGF0YTsKLWNsYXNzIFVSTDsKIAogc3RydWN0IENTUEluZm8g
ewogICAgIFN0cmluZyBkb2N1bWVudFVSSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAppbmRleCAy
OTA3MjUwZjBlYjFkYzRmZDA4ZmIyMDcyYzY4MzM3YjI4ZDdiMDI2Li5kZDUxMzAwZWMzYjAwMzMx
ZjMzYmQwMjczN2ExNThjMmFhYzYyMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oIgogI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZS5jcHAKaW5kZXggOTRiNGNjMTNjMGY2ZTQ1YmRhNGY1ZDgzYjRkMThlNzczMDNmNDM2
Yy4uZWIyMTk1YTIwNGE0YzZiZWE0N2E0NzA4NDEzYmMwYjdlNmYzNDlkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Uu
Y3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3ku
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAwLDE0ICsx
MDAsMTQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnBvcnRNYXRjaGVzKGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAoKG1fcG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
bV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29sSXMoImh0
dHBzIikpIHx8IChwb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCks
ICJodHRwcyIpKSkpCisgICAgaWYgKChtX3BvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29s
SXMoImh0dHBzIikpIHx8IChwb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBv
cnQudmFsdWUoKSwgImh0dHBzIikpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAo
IXBvcnQpCi0gICAgICAgIHJldHVybiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZh
bHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9y
dEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSk7CiAKICAgICBpZiAo
IW1fcG9ydCkKLSAgICAgICAgcmV0dXJuIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZh
bHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9y
dEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpOwogCiAgICAgcmV0dXJu
IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2UuaAppbmRleCA0ZWVhYmIwMTM2NTI1MWI2ZDg5NjMzY2E5NjgwZDAx
NWYyMzEwNmFhLi5hMmRiNTA0Mzg5OGYyZTY5NDdiYzdiMGEyZGQ2NDQzYWI1MTQzOGQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2UuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
b250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5E
YXRhOwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0LmNwcAppbmRleCAxYjQzMzEyNjYwMGE1MDFmOTVmNWU2M2I0MmRkNGNkZGRkOTU3OWIyLi4y
NmRhOTExNTM3NjRhZmY3MDQ4Njc4ZTYyN2Y3MmZjNGM3OTgxZDVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0LmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzLmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1
ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2VMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0LmgKaW5kZXggOWY2M2MzMDA2YTBjYTdmMmUzMzk5NDgwMWI1NDJj
MzY2NjhjMmU1NC4uNWZjZjNiMmVhZTRhOWU1Zjg0ODEwYmQ1M2M0NTU1MjQ0MDc3MjZmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3QuaApAQCAtMzYsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0RGlyZWN0aXZlLmNwcAppbmRleCBjMmJmMWQ0NWE1NWY1NzdmYTJkM2ZiNjAwYjJhYzlm
M2ZmMGNhMWU0Li4xYjA5MmI4NGZkMGJmN2Q2NmY4ZTFhYWZlMGYxYmFjNTMzNmFlNjVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0RGlyZWN0aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcApAQCAtMjksNyArMjksNyBAQAog
CiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCmluZGV4IGI5YTlk
MDBkNWJkMmZkYTlmYTdmYTE0ZWI5MTcxYWM4NjEyODU3YjguLjRiOGUxYWFlNmI0NzcwZWVkOTY3
ODFiNmRiZjY2YWJhMWUxMjU1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCkBAIC0yMywxNCArMjMsMTMgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcl9oCi0jZGVmaW5lIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogT0JKQ19DTEFTUyBOU0NvZGVyOwpAQCAtNzcsNSArNzYsMyBAQCBjbGFzcyBDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgewogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotCi0jZW5kaWYgLy8gQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVt
LmgKaW5kZXggNDc2YTNjMzZiOTViZGIxODdiYjU4OTMyZTAwM2JkMTFlZjMyYjQwNi4uMWIwZjc0
NTBiNDU3MmQ1NmE5MTNlNWMxZTdhYTU3Mzk4NDk0OGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb250ZXh0TWVudTsKIGNsYXNzIEltYWdlOwotY2xhc3MgVVJMOwogCiBl
bnVtIENvbnRleHRNZW51QWN0aW9uIHsKICAgICBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llLmgKaW5kZXggYjIxMjI0ZjFjYjlhMGRhOWFmNTg2YWI5YjA0
ZjM5MTI1NzZlY2Q5NC4uOGNiYTRkZjU5MzExNmMzZjIzZDJiNGJkYTRjZDNiM2RmNzkyNzk3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKQEAgLTI2LDggKzI2LDggQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29v
a2llc1N0cmF0ZWd5LmgKaW5kZXggYjQzOTc4Njg3ODEwOTVkMGMwOWE5OTZkMjQwNGEyZjRlOWQ5
OTlkYi4uOWIwZDVhNjhkOTJjOGU1NWFkOWQwZjlhYjMzOGY5NTE3NjI5ZDc3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKQEAgLTMzLDcgKzMzLDYgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwotY2xhc3Mg
VVJMOwogCiBzdHJ1Y3QgQ29va2llOwogc3RydWN0IFNhbWVTaXRlSW5mbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDFhNGE0NWY4MDVjYzUwNmFiOWYxOTFmODA2MTU3ODcwNGZm
NDkyMDYuLmU5MzA5NWZjN2IyYTBiMTM2ZDQ2NjE2ZDAyMjBjY2ViYTM5OWEwMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNTYsOCArNTYsNiBAQCB0eXBlZGVmIHZvaWQqIERy
YWdEYXRhUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogZW51bSBE
cmFnQXBwbGljYXRpb25GbGFncyB7CiAgICAgRHJhZ0FwcGxpY2F0aW9uTm9uZSA9IDAsCiAgICAg
RHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5o
CmluZGV4IGJlNWI0YzljMmE0NzA0YTFkYjkxMTJjNGNlOTRlYWM0M2YxNWQ2ZjkuLmYzMmE2ODQ1
YTY4NWM1YTBjMjFkYWY5MmMxZmMwZmVmNGE1MDAyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJbWFnZS5oCkBAIC01Nyw3ICs1Nyw2IEBAIGNsYXNzIEltYWdlOwogY2xhc3MgSW50UmVjdDsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKLWNsYXNzIFVSTDsKIAogI2lmIFBMQVRGT1JNKElP
UykKIHR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IERyYWdJbWFnZVJlZjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAppbmRleCA5NjdkZWRjN2JhNmVjZjQyOTJkZjE5Y2ZjMTg4
NTFkMTY2YjNhYTVmLi5iMmFhMjg0NDc5ZjdiMTIyNmViZjdhYWE5YjdmZGNhYzMwYzMzNzYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCkBAIC0zNSw4ICszNSw2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiAvLyBBbGwgbWV0aG9kcyBhcmUgc3lu
Y2hyb25vdXMuCiBjbGFzcyBGaWxlU3RyZWFtIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
aW5rSWNvbi5oCmluZGV4IDI4MTc1NDYwMzU5YWRmZjdhMGNmMmZlMWViN2ZmNDEzNGM1NzdlNTku
Ljg5ZTJmODk2OWJiNTI2YTM2NGRiNmI5MGUzMGE5Yjc3MWNkZTU4NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGlua0ljb24uaApAQCAtMjYsOSArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJMaW5rSWNvblR5cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCA3MzdhMzkwNDI1N2RlNjQz
YmMwZDlhYjk5YmMyNjRhMzE0ZmQ2ZmY3Li41NTVlYzI4MmU0YmI2NmU1ZjlkMTExMjBiOTc2MWE3
MjVlYmMzZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtMzAs
NyArMzAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2Vy
LmgiCisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
CkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgUGFzdGVib2FyZDo6aXNTYWZlVHlwZUZvckRPTVRvUmVh
ZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogYm9vbCBQYXN0ZWJvYXJkOjpjYW5FeHBv
c2VVUkxUb0RPTVdoZW5QYXN0ZWJvYXJkQ29udGFpbnNGaWxlcyhjb25zdCBTdHJpbmcmIHVybFN0
cmluZykKIHsKLSAgICBhdXRvIHVybCA9IFVSTFBhcnNlciB7IHVybFN0cmluZyB9LnJlc3VsdCgp
OworICAgIFVSTCB1cmwoeyB9LCB1cmxTdHJpbmcpOwogICAgIHJldHVybiB1cmwucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzQmxvYigpIHx8IHVybC5wcm90b2NvbElz
RGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggMjA2MzVh
YjAyOTRmMjk5N2UyOGZiZmZkNTA5ODY5NDhhOTliNjAzMC4uYTJiYTJiNzYwMGRkNGViYTI2OGY2
MjljZGQxOTE0MTM4ODFiZDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApA
QCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJQ
YXN0ZWJvYXJkSXRlbUluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggOTlkOGRkZmZhZTAwZWFjZTFhNjMyY2Iw
ZDNmNTM4MWEyM2ZhMzY1Yy4uYTViMzY1MGEwYmJjMGFmODhmOWFmNzQ0NDA4ZGVhZTk5NjBkYTlm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAg
LTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBT
ZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogc3RydWN0IFBh
c3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVi
b2FyZFVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmNwcAppbmRleCAzZDJkY2VlZDdjNTZlODcwOTY3ODk4MDdhNjdiZWUyZWQwMzI5MjdmLi5l
MjU2OTA3NGVlNWEyYjNlZjZjMjBlOGJlNDhkZmU3NTdhODA2OWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCkBAIC00OCw3ICs0OCw3
IEBAIHZvaWQgUGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFBsYWluVGV4dChQbGFpblRleHQgcGxh
aW5UZXh0KQogICAgIG1fcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpOwogfQogCi12b2lk
IFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpzZXRVUkwoVVJMIHVybCkKK3ZvaWQgUGFzdGVib2FyZFdy
aXRlckRhdGE6OnNldFVSTERhdGEoVVJMRGF0YSB1cmwpCiB7CiAgICAgQVNTRVJUKCFtX3VybCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmlu
ZGV4IGQ1M2ZkNzJmZjVlNmM0NGUwYTE2ZTc3ZjM5MWRhZmNkODQ2NTAyMGEuLjVmNDc1OTJiMTAx
OTUxMTkxMTc5NzY4OGU3ODU1MGY0OGJiZWQ1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNjYsOCArNjYsOCBAQCBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVy
RGF0YSBmaW5hbCB7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+JiBwbGFpblRl
eHQoKSBjb25zdCB7IHJldHVybiBtX3BsYWluVGV4dDsgfQogICAgIHZvaWQgc2V0UGxhaW5UZXh0
KFBsYWluVGV4dCk7CiAKLSAgICBzdHJ1Y3QgVVJMIHsKLSAgICAgICAgV2ViQ29yZTo6VVJMIHVy
bDsKKyAgICBzdHJ1Y3QgVVJMRGF0YSB7CisgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmlu
ZyB0aXRsZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFN0cmluZyB1c2VyVmlzaWJsZUZv
cm07CkBAIC03NiwxNSArNzYsMTUgQEAgY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwg
ewogI2VuZGlmCiAgICAgfTsKIAotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMPiYgdXJsKCkg
Y29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICB2b2lkIHNldFVSTChVUkwpOworICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8VVJMRGF0YT4mIHVybERhdGEoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQorICAgIHZvaWQgc2V0VVJMRGF0YShVUkxEYXRhKTsKIAogICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29udGVudD4mIHdlYkNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbnRlbnQ7
IH0KICAgICB2b2lkIHNldFdlYkNvbnRlbnQoV2ViQ29udGVudCk7CiAKIHByaXZhdGU6CiAgICAg
c3RkOjpvcHRpb25hbDxQbGFpblRleHQ+IG1fcGxhaW5UZXh0OwotICAgIHN0ZDo6b3B0aW9uYWw8
VVJMPiBtX3VybDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTERhdGE+IG1fdXJsOwogICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29udGVudD4gbV93ZWJDb250ZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA4ZTEzYmY0ZDg0MTQxM2JmMWMx
MTdkZWM5ZWZmODVjNDgyNGI4OGVmLi5lMGEyMTMzMzc0NmNkZjk0ZGQ3MGU5NWUzZjYyZWQwZDc4
MjAwMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aApAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNs
YXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiBzdHJ1
Y3QgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0
IFBhc3RlYm9hcmRJdGVtSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaAppbmRleCBkYmVjZmMxYjNiMTZkN2Y1ZTAzMDhlMTEwYWNkYTEx
MDJjYjQyMDdlLi5hOTU4YzJmMGFiMmQ5ZjFmMzc2NjJhN2EwYjYwMmJlMzEzNDMwN2I1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBA
IC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKLWNsYXNzIFVSTDsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogICAgIFVS
TCBibG9iVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU1NMS2V5R2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAppbmRl
eCAwNzY3MjM4NmY2OGVhYTk4MWZlN2M1OTdjMDVmNjFlZjhlNjczY2U0Li5jMmJkOGQ2ZTlkM2Fh
OTNlMjQ2MDI0ODYyYzFmM2IyMmY0NWE0ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
U0xLZXlHZW5lcmF0b3IuaApAQCAtMzEsOCArMzEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFVSTDsKLQogLy8gUmV0dXJucyBzdHJpbmdzIHJlcHJlc2VudGluZyBrZXkgc2l6
ZXMgdGhhdCBtYXkgYmUgdXNlZAogLy8gZm9yIHRoZSA8a2V5Z2VuPiB0YWcuIFRoZSBmaXJzdCBz
dHJpbmcgaXMgZGlzcGxheWVkIGFzIHRoZSBkZWZhdWx0CiAvLyBrZXkgc2l6ZSBpbiB0aGUgPGtl
eWdlbj4gbWVudS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcApp
bmRleCA5NDlkZTYzYWVmMDZjZmNmYWYwYzAyZDI0YzZhYzQ0ZTY2ZmUwYjk3Li43N2Y2YzM5MmE5
MTdmMGM5MTcyNjY1YTc2MThlNjcwNDM4YzRlNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2NoZW1lUmVnaXN0cnkuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogCi0jaW5jbHVkZSAiVVJMUGFyc2Vy
LmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgpAQCAtNTUxLDcgKzU1MSw3IEBAIGJvb2wg
U2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVt
ZSkKIAogYm9vbCBTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKGNvbnN0IFN0cmluZyYg
c2NoZW1lKQogewotICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIChhbGxCdWlsdGluU2No
ZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkgfHwgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoc2No
ZW1lKSk7CisgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgKGFsbEJ1aWx0aW5TY2hlbWVz
KCkuY29udGFpbnMoc2NoZW1lKSB8fCBXVEY6OlVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKHNj
aGVtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCmluZGV4IGUyYWFlMmYzMDQ1NzM1NWY0ODllZWM0YWI0ZWNmMWNlN2Qz
ZTQ1MmYuLmY4NjhjMmMwMWQ2YjEwZWNmMzY0YjFhNmZmZTNkZDQyZjVmNTIyODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC00MCw3ICs0MCw3IEBACiAjZW5kaWYK
IAogI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCisjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNlbmRpZgogCiAjaWYgVVNFKEdMSUIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCmluZGV4IDBjYzVmNjg3
ZDYyMWVmZTdlYWJhYzRkYmY5ZTU0NTQ3YTQ4ZGNlMTguLmFmYjc1N2NiZTQwMjJmZWRmYzQ3OTNl
YWJjMjU2OWU4NjBlOTU5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZFN0cmluZ0hhc2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0
cmluZ0hhc2guY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU2hhcmVkU3RyaW5nSGFzaC5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmgKaW5kZXggNzMyNDYx
N2JhNDk2YTA2NjNiZmQ1M2RlYzRhNDQzZDk3NjkzOWU4ZS4uMzYwM2NmMGYyZTdmOTIxNGIzZTI1
M2Y1NDc5ZDljYjM0NmIyN2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkU3RyaW5nSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0
cmluZ0hhc2guaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFVSTDsKLQogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogCiAvLyBVc2Ug
dGhlIGxvdyAzMi1iaXRzIG9mIHRoZSA2NC1iaXQgU2hhcmVkU3RyaW5nSGFzaCBhcyB0aGUga2V5
IGZvciBIYXNoU2V0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJj
ZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dAppbmRl
eCBjMDJlNDllNGU1MWVmNzQ5MzFmNzBkZDg2NTVkMzRkZTJkNjNlNDhiLi4yZTg1NmE5ODAwYzMz
N2E0MDUzMTY1MmM3MDRmM2UyZmI2ZmQzMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291
cmNlc1NvdXAudHh0CkBAIC00MSw0ICs0MSwzIEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9XZWJL
aXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwCiAKIHBsYXRmb3JtL3NvdXAvUHVibGljU3VmZml4U291
cC5jcHAKIHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKLXBsYXRmb3JtL3NvdXAv
VVJMU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiZGI0Njg2OTU4ZjMwMDA5MzMzNDQzMTg5NDc3YTlkNDVmNGY1ZDg4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTA5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxMS0yMDEzLCAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlVSTC5oIgotCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4K
LSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4
dFN0cmVhbS5oPgotCi0vLyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVzZSBvZiB0
aGUgKyBvcGVyYXRvciBvbiBTdHJpbmcuCi0vLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRpbWl6ZSB0
aGF0IG9wZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQotLy8gc28gbWFueSBhbGxvY2F0aW9u
cywgb3IgY2hhbmdlIHRoaXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgotCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLXR5cGVkZWYgVmVjdG9yPGNo
YXIsIDUxMj4gQ2hhckJ1ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVm
ZmVyOwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7
Ci0KLS8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxs
IHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKLS8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVm
ZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKLS8v
IGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVy
bWluYXRlIHRoZSByZXN1bHQuCi1zdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGNoYXIqIGRlc3QpCi17Ci0gICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG1lbWNweShkZXN0
LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAg
c2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxj
aGFyPihzcmNbaV0pOwotICAgIH0KLX0KLQotdm9pZCBVUkw6OmludmFsaWRhdGUoKQotewotICAg
IG1faXNWYWxpZCA9IGZhbHNlOwotICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNl
OwotICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOwotICAgIG1fc2NoZW1lRW5kID0gMDsK
LSAgICBtX3VzZXJTdGFydCA9IDA7Ci0gICAgbV91c2VyRW5kID0gMDsKLSAgICBtX3Bhc3N3b3Jk
RW5kID0gMDsKLSAgICBtX2hvc3RFbmQgPSAwOwotICAgIG1fcG9ydExlbmd0aCA9IDA7Ci0gICAg
bV9wYXRoRW5kID0gMDsKLSAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7Ci0gICAgbV9xdWVy
eUVuZCA9IDA7Ci19Ci0KLVVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiBy
ZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKLXsKLSAgICBVUkxQYXJz
ZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7Ci0gICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCi17
Ci0gICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQg
Y29udHJvbAotICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4g
KnVuc2lnbmVkKiBjaGFyIGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9u
bHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBjIDw9ICcgJzsKLX0KLQot
VVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICBVUkwgcmVzdWx0ID0gKnRoaXM7
Ci0gICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkg
Y29uc3QKLXsKLSAgICBpZiAoIWhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
Ci0gICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKLSAgICBpZiAobV9zdHJpbmdbZW5k
XSA9PSAnLycpCi0gICAgICAgIC0tZW5kOwotCi0gICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcu
cmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgKytzdGFydDsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVu
ZCAtIHN0YXJ0ICsgMSk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVu
ZCk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBz
dGFydCA9IGhvc3RTdGFydCgpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKLX0KLQotc3RkOjpvcHRpb25hbDx1aW50
MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcG9ydExlbmd0aCkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICB1bnNp
Z25lZCBudW1iZXI7Ci0gICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBudW1iZXIg
PSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RF
bmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwotICAgIGVsc2UKLSAgICAgICAgbnVtYmVy
ID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9z
dEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBudW1iZXIg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQotU3RyaW5nIFVSTDo6aG9zdEFu
ZFBvcnQoKSBjb25zdAotewotICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkpCi0gICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cG9ydC52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOwotfQotCi1TdHJp
bmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKLXsKLSAgICBTdHJpbmcgcmVzdWx0
ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7Ci0KLSAg
ICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgewotICAgICAgICBjb25zdCBp
bnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7Ci0gICAgICAgIHJlc3VsdC5yZW1vdmUobV91
c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdB
dFNpZ24pOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBTdHJpbmcg
ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0KQotewot
ICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAoIWlucHV0TGVu
Z3RoKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBWZWN0b3I8TENoYXI+IHBl
cmNlbnREZWNvZGVkOwotICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
aW5wdXRMZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsg
KytpKSB7Ci0gICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKLSAgICAgICAgICAgICYmIGlucHV0
TGVuZ3RoID4gMgotICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgotICAgICAgICAg
ICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKLSAgICAgICAgICAgICYmIGlzQVND
SUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7Ci0gICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51
bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJd
KSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcGVy
Y2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKLSAgICB9Ci0gICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5z
aXplKCkpOwotfQotCi1TdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZGVj
b2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Ci19Ci0KLVN0cmlu
ZyBVUkw6OnBhc3MoKSBjb25zdAotewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVu
ZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNl
cXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNl
ckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Ci19Ci0KLVN0cmluZyBV
Ukw6OmVuY29kZWRVc2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5n
KG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Ci19Ci0KLVN0cmluZyBVUkw6
OmVuY29kZWRQYXNzKCkgY29uc3QKLXsKLSAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJF
bmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJz
dHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOwotfQot
Ci1TdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAotewotICAgIGlmICghaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJl
dHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwotfQotCi1ib29sIFVSTDo6
aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1ZhbGlkICYm
IG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Ci19Ci0KLVN0cmluZyBVUkw6OmJhc2VB
c1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJM
YXN0U2xhc2gpOwotfQotCi0jaWYgIVVTRShDRikKLQotU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBh
dGgoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2Vz
RnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOwotfQotCi0jZW5kaWYKLQotI2lmZGVm
IE5ERUJVRwotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5n
VmlldykKLXsKLX0KLQotI2Vsc2UKLQotc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2Qo
U3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3Qg
bmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgotICAgIC8vIFRoZSBpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVycwotICAg
IC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3QgYW5kIHJl
bGllZCBvbiB0aGVzZSBjaGVja3MuCi0gICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHByb3RvY29s
LmNvZGVVbml0cygpKSB7Ci0gICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOwotICAg
ICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsKLSAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBw
ZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hh
cmFjdGVyKSA9PSBjaGFyYWN0ZXIpOwotICAgIH0KLX0KLQotI2VuZGlmCi0KLXN0YXRpYyBMb2Nr
IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKLQotdXNpbmcgRGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+
Owotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQotewotICAgIHN0YXRpYyBEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKLSAgICBy
ZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKLX0KLQotc3RhdGljIERlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
Rm9yVGVzdGluZygpCi17Ci0gICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmcq
JiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmcoKTsKLSAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCi0gICAgICAg
IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3Rpbmc7Ci0gICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOwotfQot
Ci12b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3Qg
cG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKLXsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgZW5zdXJl
RGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQp
OwotfQotCi12b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQot
ewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmdMb2NrKTsKLSAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKSkKLSAgICAgICAgbWFwLT5jbGVhcigpOwotfQotCi1zdGQ6Om9wdGlv
bmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wp
Ci17Ci0gICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmcoKSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgICAgIEFTU0VSVChvdmVycmlk
ZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRl
TWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KLSAgICAgICAgYXV0
byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENv
cHlpbmcoKSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCi0g
ICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotICAgIH0KLSAgICByZXR1cm4gVVJM
UGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKLX0KLQotYm9vbCBpc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkK
LXsKLSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsK
LX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Ci17
Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7Ci0KLSAgICAvLyBKYXZh
U2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVS
TCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCi0gICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJv
dG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKLSAgICBBU1NFUlQo
IWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2
YXNjcmlwdCIpKTsKLQotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcg
b2JqZWN0LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7
Ci0gICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
bV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZl
IGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KLX0KLQotYm9vbCBVUkw6
OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKLXsKLSAgICBhc3NlcnRQcm90
b2NvbElzR29vZChwcm90b2NvbCk7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIAotICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5sZW5ndGgo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0
aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgewotICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBVUkw6OnF1ZXJ5KCkg
Y29uc3QKLXsKLSAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCi0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsg
MSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAotfQotCi1TdHJpbmcgVVJMOjpwYXRo
KCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVu
Z3RoOwotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0g
cG9ydEVuZCk7Ci19Ci0KLWJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCi17
Ci0gICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0
ICc6Jy4KLSAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKLSAgICBT
dHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0g
ICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVt
ZShuZXdQcm90b2NvbCk7Ci0gICAgaWYgKCFjYW5vbmljYWxpemVkKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
KG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKLSAgICAgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fc2NoZW1lRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3Ry
aW5nKQotewotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0g
ICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0
cmluZy5sZW5ndGgoKSk7Ci19Ci0gICAgCi0vLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5h
bWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KLS8vIHRoZSBv
dXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KLS8v
IFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KLXN0YXRpYyBi
b29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3
IHN0cmluZykKLXsKLSAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSURO
LWVuY29kZWQgbmFtZS4KLSAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3
ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0g
ICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OwotICAgIAotICAg
IGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJ
KHN0cmluZykpIHsKLSAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1l
QnVmZmVyTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAg
IFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7Ci0g
ICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVS
TFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCi0gICAgICAgIHN0
cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1
ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsK
LSAgICAKLSAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJy
b3JzKSB7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3Rl
cnNDb252ZXJ0ZWQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi11bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3
b3JkRW5kICsgMTsKLX0KLQotdm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQotewot
ICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGNvbG9uSW5k
ZXggPSBzLmZpbmQoJzonKTsKLSAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOwotICAgIGlmICgh
YXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAKLSAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQo
KSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5h
bWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQo
bV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwotCi0gICAgVVJMUGFyc2VyIHBhcnNlcihi
dWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12
b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCi17Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAg
IHJldHVybjsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9o
b3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwot
fQotCi12b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQotewotICAgIGlmICghbV9p
c1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9y
dExlbmd0aDsKLSAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RF
bmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhT
dHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6
ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyht
X2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Ci19Ci0KLXZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0
KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmdW
aWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKLSAgICBTdHJpbmdWaWV3IHBvcnQ7Ci0gICAgCi0g
ICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOwotICAgIGlmIChjb2xvbklu
ZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29s
b25JbmRleCArIDEpOwotICAgICAgICBib29sIG9rOwotICAgICAgICBpbnQgcG9ydEludCA9IHBv
cnQudG9JbnRTdHJpY3Qob2spOwotICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygw
LCBjb2xvbkluZGV4KTsKLSAgICB9Ci0KLSAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7Ci0gICAgaWYg
KCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwotCi0gICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0
KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3RO
YW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAgIGlmICghcG9ydC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHBvcnQpOwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7Ci0KLSAgICBV
UkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29u
c3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCi17Ci0gICAgYXV0
byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgewotICAgICAg
ICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7Ci0gICAgICAgIGF1dG8qIGRhdGEgPSB1dGY4
LmRhdGEoKTsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBhdXRvIGxl
bmd0aCA9IHV0ZjgubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBs
ZW5ndGg7IGorKykgewotICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKLSAgICAgICAgICAg
IGlmIChzaG91bGRFbmNvZGUoYykpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
JScpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGMpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChjKSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChjKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwotICAgIH07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0
aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1dFtpXSkp
KQotICAgICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7Ci0gICAgfQotICAgIHJldHVybiBp
bnB1dDsKLX0KLQotdm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQotewotICAg
IGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFT
Q0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNl
KCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4g
anVzdCB0aGUgdXNlciBsb2dpbi4KLQotICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKLSAg
ICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29k
ZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwotICAg
ICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5k
ICsgMSkpCi0gICAgICAgICAgICB1ID0gIi8vIiArIHU7Ci0gICAgICAgIC8vIEFkZCAnQCcgaWYg
d2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQg
fHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKLSAgICAg
ICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBu
ZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFz
c3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKLSAg
ICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGlu
IHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtl
IGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7Ci0gICAgICAgICAg
ICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdCht
X3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAg
ICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
dm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKLXsKLSAgICBpZiAoIW1f
aXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29y
ZEVuZDsKLSAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgcCA9
ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5V
c2VySW5mb0VuY29kZVNldCkgKyAiQCI7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICBwID0gIi8vIiAr
IHA7Ci0gICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0
byBhZGQgb3VyIG93bi4KLSAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdb
ZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgVVJMUGFyc2VyIHBh
cnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3
ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2Vy
U3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9
PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29p
bmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKLSAg
ICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5n
KS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7
Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotdm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZp
ZXIpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJ
WE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBl
bnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPwotICAgIC8vIEZJWE1FOiBJcyBpdCBj
b3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJ
IGNoYXJhY3RlcnM/Ci0gICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1Zp
ZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVy
KSB9LnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkK
LXsKLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVu
Z3RoKCkgPiBtX3F1ZXJ5RW5kKQotICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9x
dWVyeUVuZCk7Ci19Ci0KLXZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmll
cigpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3Ry
aW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQpOwotICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhF
bmQ7Ci19Ci0KLXZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQotewotICAg
IGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogJyMnIGFu
ZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCi0gICAg
Ly8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2Rpbmcs
IG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3Vt
ZW50IGluIHRoaXMgZnVuY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2
Ci0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnku
aXNOdWxsKCkpIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJl
c3VsdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7Ci0gICAgfQotCi19Ci0KLXZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmlu
ZyYgcykKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3Ry
aW5nIHBhdGggPSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykK
LSAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0KLSAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNoYXJhY3Rl
ciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKLSAgICB9OwotICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9y
dExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Ci0g
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBpZiAoYS5t
X3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVu
c2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBi
LnN0cmluZygpW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwg
Y29uc3QgVVJMJiBiKQotewotICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7Ci0gICAgICAgIGlm
IChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIHByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBpZiAoYS5tX3Nj
aGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1
bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVu
Z3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRC
ID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5k
IC0gYi5ob3N0U3RhcnQoKTsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChh
LnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgLy8gQW5kIHRoZSBob3N0Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0
QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgaG9zdHNBcmVFcXVh
bChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRB
ID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5k
IC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsK
LSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKLSAg
ICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7Ci0gICAg
ICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFy
dEIgKyBpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21h
aW4pIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBp
ZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOwotICAgIGlmICghaG9zdC5lbmRzV2l0aChkb21h
aW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9
PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgp
IC0gMV0gPT0gJy4nOwotfQotCi1TdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhj
b25zdCBTdHJpbmcmIGlucHV0KQotewotICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVy
cyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwotfQotCi1ib29sIFVS
TDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9PSAnOicp
OwotICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKLX0KLQotdm9p
ZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAotewot
ICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUg
Y2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQotICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlk
IFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCi0gICAg
YnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgY29weUFTQ0lJKG1fc3RyaW5n
LCBidWZmZXIuZGF0YSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Ci1i
b29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFy
KiBwcm90b2NvbCkKLXsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBh
IG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXco
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29s
KSkpOwotICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBqID0gMDsgdXJsW2ldOyArK2kpIHsKLSAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3Bh
Y2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91
bGRUcmltRnJvbVVSTCh1cmxbaV0pKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlz
TGVhZGluZyA9IGZhbHNlOwotCi0gICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVz
LgotICAgICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ld
ID09ICdcbicpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIXByb3RvY29s
W2pdKQotICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7Ci0gICAgICAgIGlmICghaXNB
U0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICArK2o7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFy
KiBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9j
b2wpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2Nv
bElzSW50ZXJuYWwoc3RyaW5nLCBwcm90b2NvbCk7Ci19Ci0KLSNpZm5kZWYgTkRFQlVHCi0KLXZv
aWQgVVJMOjpwcmludCgpIGNvbnN0Ci17Ci0gICAgcHJpbnRmKCIlc1xuIiwgbV9zdHJpbmcudXRm
OCgpLmRhdGEoKSk7Ci19Ci0KLSNlbmRpZgotCi1TdHJpbmcgVVJMOjpzdHJpcHBlZEZvclVzZUFz
UmVmZXJyZXIoKSBjb25zdAotewotICAgIFVSTCByZWZlcnJlcigqdGhpcyk7Ci0gICAgcmVmZXJy
ZXIuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmcoKSk7Ci0g
ICAgcmVmZXJyZXIucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIHJlZmVy
cmVyLnN0cmluZygpOwotfQotCi1ib29sIFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdAotewotICAg
IC8vIEluY2x1ZGluZyBmZWVkIGhlcmUgbWlnaHQgYmUgYSBiYWQgaWRlYSBzaW5jZSBkcmFnIGFu
ZCBkcm9wIHVzZXMgdGhpcyBjaGVjawotICAgIC8vIGFuZCBpbmNsdWRpbmcgZmVlZCB3b3VsZCBh
bGxvdyBmZWVkcyB0byBwb3RlbnRpYWxseSBsZXQgc29tZW9uZSdzIGJsb2cKLSAgICAvLyByZWFk
IHRoZSBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJkIG9uIGEgZHJhZywgZXZlbiB3aXRob3V0IGEg
ZHJvcC4KLSAgICAvLyBMaWtld2lzZSB3aXRoIHVzaW5nIHRoZSBGcmFtZUxvYWRlcjo6c2hvdWxk
VHJlYXRVUkxBc0xvY2FsKCkgZnVuY3Rpb24uCi0gICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUi
KTsKLX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCkKLXsK
LSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQot
Ym9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCkKLXsKLSAgICByZXR1cm4g
cHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotYm9vbCBwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIGF1dG8gbGVuZ3RoID0g
dXJsLmxlbmd0aCgpOwotICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEg
bmV3IHN0cmluZyBvYmplY3QuCi0gICAgcmV0dXJuIGxlbmd0aCA+PSA1Ci0gICAgICAgICYmIGlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzBdLCAnaCcpCi0gICAgICAgICYmIGlzQVNDSUlB
bHBoYUNhc2VsZXNzRXF1YWwodXJsWzFdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwodXJsWzJdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwodXJsWzNdLCAncCcpCi0gICAgICAgICYmICh1cmxbNF0gPT0gJzonIHx8IChpc0FTQ0lJ
QWxwaGFDYXNlbGVzc0VxdWFsKHVybFs0XSwgJ3MnKSAmJiBsZW5ndGggPj0gNiAmJiB1cmxbNV0g
PT0gJzonKSk7Ci19Ci0KLWNvbnN0IFVSTCYgYmxhbmtVUkwoKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJvdXQ6YmxhbmsiKTsKLSAg
ICByZXR1cm4gc3RhdGljQmxhbmtVUkw7Ci19Ci0KLWJvb2wgVVJMOjppc0JsYW5rVVJMKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJcygiYWJvdXQiKTsKLX0KLQotYm9vbCBwb3J0QWxs
b3dlZChjb25zdCBVUkwmIHVybCkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0
ID0gdXJsLnBvcnQoKTsKLQotICAgIC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZlIGEgcG9y
dCwgcmV0dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBvcnQiIGNhc2UuCi0gICAgaWYgKCFwb3J0KQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0
Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KLSAgICAvLyBT
ZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRt
bCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgYmxvY2tl
ZFBvcnRMaXN0W10gPSB7Ci0gICAgICAgIDEsICAgIC8vIHRjcG11eAotICAgICAgICA3LCAgICAv
LyBlY2hvCi0gICAgICAgIDksICAgIC8vIGRpc2NhcmQKLSAgICAgICAgMTEsICAgLy8gc3lzdGF0
Ci0gICAgICAgIDEzLCAgIC8vIGRheXRpbWUKLSAgICAgICAgMTUsICAgLy8gbmV0c3RhdAotICAg
ICAgICAxNywgICAvLyBxb3RkCi0gICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KLSAgICAgICAgMjAs
ICAgLy8gRlRQLWRhdGEKLSAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKLSAgICAgICAgMjIs
ICAgLy8gU1NICi0gICAgICAgIDIzLCAgIC8vIHRlbG5ldAotICAgICAgICAyNSwgICAvLyBTTVRQ
Ci0gICAgICAgIDM3LCAgIC8vIHRpbWUKLSAgICAgICAgNDIsICAgLy8gbmFtZQotICAgICAgICA0
MywgICAvLyBuaWNuYW1lCi0gICAgICAgIDUzLCAgIC8vIGRvbWFpbgotICAgICAgICA3NywgICAv
LyBwcml2LXJqcwotICAgICAgICA3OSwgICAvLyBmaW5nZXIKLSAgICAgICAgODcsICAgLy8gdHR5
bGluawotICAgICAgICA5NSwgICAvLyBzdXBkdXAKLSAgICAgICAgMTAxLCAgLy8gaG9zdHJpYW1l
Ci0gICAgICAgIDEwMiwgIC8vIGlzby10c2FwCi0gICAgICAgIDEwMywgIC8vIGdwcGl0bnAKLSAg
ICAgICAgMTA0LCAgLy8gYWNyLW5lbWEKLSAgICAgICAgMTA5LCAgLy8gUE9QMgotICAgICAgICAx
MTAsICAvLyBQT1AzCi0gICAgICAgIDExMSwgIC8vIHN1bnJwYwotICAgICAgICAxMTMsICAvLyBh
dXRoCi0gICAgICAgIDExNSwgIC8vIFNGVFAKLSAgICAgICAgMTE3LCAgLy8gdXVjcC1wYXRoCi0g
ICAgICAgIDExOSwgIC8vIG5udHAKLSAgICAgICAgMTIzLCAgLy8gTlRQCi0gICAgICAgIDEzNSwg
IC8vIGxvYy1zcnYgLyBlcG1hcAotICAgICAgICAxMzksICAvLyBuZXRiaW9zCi0gICAgICAgIDE0
MywgIC8vIElNQVAyCi0gICAgICAgIDE3OSwgIC8vIEJHUAotICAgICAgICAzODksICAvLyBMREFQ
Ci0gICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCi0gICAgICAgIDUxMiwgIC8vIHByaW50IC8gZXhl
YwotICAgICAgICA1MTMsICAvLyBsb2dpbgotICAgICAgICA1MTQsICAvLyBzaGVsbAotICAgICAg
ICA1MTUsICAvLyBwcmludGVyCi0gICAgICAgIDUyNiwgIC8vIHRlbXBvCi0gICAgICAgIDUzMCwg
IC8vIGNvdXJpZXIKLSAgICAgICAgNTMxLCAgLy8gQ2hhdAotICAgICAgICA1MzIsICAvLyBuZXRu
ZXdzCi0gICAgICAgIDU0MCwgIC8vIFVVQ1AKLSAgICAgICAgNTQ4LCAgLy8gYWZwb3ZlcnRjcCBb
QXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDU1NiwgIC8vIHJlbW90ZWZzCi0gICAgICAgIDU2Mywg
IC8vIE5OVFArU1NMCi0gICAgICAgIDU4NywgIC8vIEVTTVRQCi0gICAgICAgIDYwMSwgIC8vIHN5
c2xvZy1jb25uCi0gICAgICAgIDYzNiwgIC8vIExEQVArU1NMCi0gICAgICAgIDk5MywgIC8vIElN
QVArU1NMCi0gICAgICAgIDk5NSwgIC8vIFBPUDMrU1NMCi0gICAgICAgIDIwNDksIC8vIE5GUwot
ICAgICAgICAzNjU5LCAvLyBhcHBsZS1zYXNsIC8gUGFzc3dvcmRTZXJ2ZXIgW0FwcGxlIGFkZGl0
aW9uXQotICAgICAgICA0MDQ1LCAvLyBsb2NrZAotICAgICAgICA0MTkwLCAvLyBNYW5hZ2VTaWV2
ZSBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDYwMDAsIC8vIFgxMQotICAgICAgICA2NjY1LCAv
LyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2NiwgLy8gQWx0ZXJu
YXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjcsIC8vIFN0YW5kYXJkIElSQyBb
QXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFk
ZGl0aW9uXQotICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0K
LSAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9uXQotICAg
ICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgaW52YWxpZFBv
cnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCi0gICAg
fTsKLQotICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3Qs
IGFsbG93IGl0LgotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJsb2NrZWRQ
b3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKLSAgICBpZiAoIXN0ZDo6Ymlu
YXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQ
b3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8g
QWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgotICAg
IGlmICgocG9ydC52YWx1ZSgpID09IDIxIHx8IHBvcnQudmFsdWUoKSA9PSAyMikgJiYgdXJsLnBy
b3RvY29sSXMoImZ0cCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEFsbG93IGFu
eSBwb3J0IG51bWJlciBpbiBhIGZpbGUgVVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIgaXMgaWdu
b3JlZC4KLSAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGUiKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJM
KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwodXJs
LCAiZGF0YSIpKTsKLQotICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9yIHdo
ZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVyPwotICAg
IC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRo
YXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJlY3QuCi0gICAgYXV0byBpbmRleCA9IHVybC5m
aW5kKCc7JywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBpbmRleCA9
IHVybC5maW5kKCcsJywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUgaXQgc291
bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcgdGV4dC9wbGFpbi4KLSAgICAgICAgLy8g
QnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNvbWUgdGlt
ZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBhdCB0aGlzIHRpbWUuCi0gICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLSAgICBpZiAoaW5kZXggPT0gNSkKLSAgICAgICAg
cmV0dXJuICJ0ZXh0L3BsYWluIl9zOwotICAgIEFTU0VSVChpbmRleCA+PSA1KTsKLSAgICByZXR1
cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7
Ci19Ci0KLVN0cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25l
ZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkK
LSAgICAgICAgcmV0dXJuIHN0cmluZygpOwotCi0gICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVu
Z3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7Ci19
Ci0KLVVSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRp
dmVQYXJ0KQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsg
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKLX0KLQot
VVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7Ci19Ci0K
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJsKQot
ewotICAgIHRzIDw8IHVybC5zdHJpbmcoKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLSNpZiAhUExB
VEZPUk0oQ09DT0EpICYmICFVU0UoU09VUCkKLXN0YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3Ry
aW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYXV0byBjb3VudCA9IDA7Ci0KLSAgICBmb3IgKGNvbnN0
IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicpKSB7Ci0g
ICAgICAgIGlmIChjb3VudCA+PSA0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gb2N0ZXQubGVuZ3RoKCk7Ci0gICAgICAgIGlmICghbGVu
Z3RoIHx8IGxlbmd0aCA+IDMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
YXV0byB2YWx1ZSA9IDA7Ci0gICAgICAgIGZvciAoYXV0byBpID0gMHU7IGkgPCBsZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgY29uc3QgYXV0byBkaWdpdCA9IG9jdGV0W2ldOwotCi0gICAgICAg
ICAgICAvLyBQcm9oaWJpdCBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmIChkaWdpdCA+
ICc5JyB8fCBkaWdpdCA8ICghaSAmJiBsZW5ndGggPiAxID8gJzEnIDogJzAnKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHZhbHVlID0gMTAgKiB2YWx1ZSAr
IChkaWdpdCAtICcwJyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodmFsdWUgPiAyNTUpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgY291bnQrKzsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gKGNvdW50ID09IDQpOwotfQotCi1zdGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNzKFN0
cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGVudW0gU2tpcFN0YXRlIHsgTm9uZSwgV2lsbFNraXAs
IFNraXBwaW5nLCBTa2lwcGVkLCBGaW5hbCB9OwotICAgIGF1dG8gc2tpcFN0YXRlID0gTm9uZTsK
LSAgICBhdXRvIGNvdW50ID0gMDsKLQotICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQgOiBzdHJp
bmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnOicpKSB7Ci0gICAgICAgIGlmIChjb3VudCA+
PSA4IHx8IHNraXBTdGF0ZSA9PSBGaW5hbCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IGhleHRldC5sZW5ndGgoKTsKLSAgICAgICAgaWYg
KCFsZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIDo6IG1heSBiZSB1c2VkIGFueXdoZXJlIHRvIHNr
aXAgMSB0byA4IGhleHRldHMsIGJ1dCBvbmx5IG9uY2UuCi0gICAgICAgICAgICBpZiAoc2tpcFN0
YXRlID09IFNraXBwZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
ICAgICBpZiAoc2tpcFN0YXRlID09IE5vbmUpCi0gICAgICAgICAgICAgICAgc2tpcFN0YXRlID0g
IWNvdW50ID8gV2lsbFNraXAgOiBTa2lwcGluZzsKLSAgICAgICAgICAgIGVsc2UgaWYgKHNraXBT
dGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGluZzsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNraXBTdGF0ZSA9
PSBXaWxsU2tpcCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoc2tp
cFN0YXRlID09IFNraXBwaW5nKQotICAgICAgICAgICAgc2tpcFN0YXRlID0gU2tpcHBlZDsKLQot
ICAgICAgICBpZiAobGVuZ3RoID4gNCkgewotICAgICAgICAgICAgLy8gQW4gSVB2NCBhZGRyZXNz
IG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBmaW5hbCB0d28gaGV4dGV0cy4KLSAgICAgICAg
ICAgIGlmICgoc2tpcFN0YXRlID09IE5vbmUgJiYgY291bnQgIT0gNikgfHwgKHNraXBTdGF0ZSA9
PSBTa2lwcGVkICYmIGNvdW50ID49IDYpIHx8ICFpc0lQdjRBZGRyZXNzKGhleHRldCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5h
bDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChjb25z
dCBhdXRvIGNvZGVVbml0IDogaGV4dGV0LmNvZGVVbml0cygpKSB7Ci0gICAgICAgICAgICAvLyBJ
UHY2IGFsbG93cyBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERp
Z2l0KGNvZGVVbml0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LQotICAgICAgICBjb3VudCsrOwotICAgIH0KLQotICAgIHJldHVybiAoY291bnQgPT0gOCAmJiBz
a2lwU3RhdGUgPT0gTm9uZSkgfHwgc2tpcFN0YXRlID09IFNraXBwZWQgfHwgc2tpcFN0YXRlID09
IEZpbmFsOwotfQotCi1ib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkK
LXsKLSAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBp
c0lQdjRBZGRyZXNzKGhvc3QpOwotCi0gICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7Ci19
Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YwZTM4YTcxYjYxYjRmZGE4MTZiNzRkNTMzOTM1
ZGY0MzFiNjZkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBVU0UoQ0YpCi10eXBlZGVm
IGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKLSNlbmRpZgotCi0jaWYgVVNFKFNPVVAp
Ci0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKLSNlbmRpZgotCi0jaWYgVVNFKEZPVU5EQVRJ
T04pCi1PQkpDX0NMQVNTIE5TVVJMOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotY2xhc3Mg
VGV4dFN0cmVhbTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkxUZXh0RW5j
b2RpbmcgewotcHVibGljOgotICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVS
TFBhcnNpbmcoU3RyaW5nVmlldykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgflVSTFRleHRFbmNv
ZGluZygpIHsgfTsKLX07Ci0KLXN0cnVjdCBVUkxIYXNoOwotCi1jbGFzcyBVUkwgewotcHVibGlj
OgotICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgot
ICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9Ci0KLSAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAgLy8gUmVzb2x2
ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQs
IHRoZQotICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkg
Y2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0eSwgaW4g
d2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMKLSAgICAv
LyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRo
aXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5r
IGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMKLSAgICAv
LyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4KLSAgICBX
RUJDT1JFX0VYUE9SVCBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZl
LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25z
dCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25z
dDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBoYXJtb25p
emVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBlbXB0eSBz
dHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8vIHN0YW5kYXJkIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KLQotICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkg
aWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIKLSAgICAvLyB0aHJlYWQuIFNpbmNl
IHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdz
Ci0gICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29weSgpIG92
ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIGlzb2xhdGVk
Q29weSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29sIGlzRW1w
dHkoKSBjb25zdDsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4KLSAgICAv
LyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQuCi0gICAg
Ym9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsg
fQotCi0gICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hp
Y2FsKCk7IH0KLSAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBT
dHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxl
bmd0aCA9IDEwMjQpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBwcm90
b2NvbCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHBhc3MoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aCgpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotCi0gICAgYm9vbCBoYXNVc2Vy
bmFtZSgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKLSAgICBib29sIGhh
c1F1ZXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OwotICAgIGJvb2wg
aGFzUGF0aCgpIGNvbnN0OwotCi0gICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygpLCB0aGVz
ZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAgLy8gVGhpcyBp
cyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5n
IGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBlbmNvZGVkVXNlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVk
UGFzcygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGJhc2VBc1N0cmluZygp
IGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29u
c3Q7Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wg
aXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCi0gICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVu
dC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OwotICAgIGJvb2wgcHJvdG9jb2xJcyhT
dHJpbmdWaWV3KSBjb25zdDsKLSAgICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3QgeyByZXR1
cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNMb2NhbEZpbGUoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQmxhbmtVUkwoKSBjb25zdDsKLSAgICBi
b29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJlQUJhc2VVUkw7
IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJp
bmcmKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0UHJvdG9jb2woY29uc3Qg
U3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwotCi0gICAgdm9pZCBy
ZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKLQotICAgIC8v
IElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgotICAgIHZvaWQgc2V0
SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHNldFVzZXIoY29uc3QgU3Ry
aW5nJik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOwotCi0gICAgLy8gSWYgeW91
IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5n
IHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBh
dGgoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBx
dWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAotICAgIC8vIGZvciB5
b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/
IiBpbiB0aGUKLSAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRo
ZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UXVlcnkoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZyYWdt
ZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVR
dWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOwotCi0gICAgdW5zaWduZWQgcGF0aFN0
YXJ0KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCgpIGNvbnN0OwotICAgIHVuc2lnbmVk
IHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0OwotCi0gICAgb3BlcmF0b3IgY29uc3QgU3RyaW5n
JigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0KLSNpZiBVU0UoQ0YpCi0gICAgV0VCQ09S
RV9FWFBPUlQgVVJMKENGVVJMUmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShTT1VQKQotICAg
IFVSTChTb3VwVVJJKik7Ci0gICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBjcmVhdGVTb3VwVVJJKCkg
Y29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFdFQkNPUkVfRVhQT1JU
IFVSTChOU1VSTCopOwotICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TVVJMKigpIGNvbnN0
OwotI2VuZGlmCi0jaWZkZWYgX19PQkpDX18KLSAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25z
dCB7IHJldHVybiBzdHJpbmcoKTsgfQotI2VuZGlmCi0KLSNpZm5kZWYgTkRFQlVHCi0gICAgdm9p
ZCBwcmludCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOwotICAgIHRlbXBsYXRlIDxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVyJik7Ci0K
LXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNlcjsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGludmFsaWRhdGUoKTsKLSAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0
cmluZyYsIGNvbnN0IGNoYXIqKTsKLSAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwg
NTEyPiYgYnVmZmVyKSBjb25zdDsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKLQot
ICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50
aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5k
IGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJM
JiwgY29uc3QgVVJMJik7Ci0KLSAgICBTdHJpbmcgbV9zdHJpbmc7Ci0KLSAgICB1bnNpZ25lZCBt
X2lzVmFsaWQgOiAxOwotICAgIHVuc2lnbmVkIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA6IDE7
Ci0gICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDogMTsKLQotICAgIC8vIFRoaXMgaXMg
b3V0IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRzIGJldHRlci4gVGhlIHBvcnQgaXMgYWZ0ZXIg
dGhlIGhvc3QuCi0gICAgdW5zaWduZWQgbV9wb3J0TGVuZ3RoIDogMzsKLSAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGggPSAoMSA8PCAzKSAtIDE7Ci0KLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVtZUxlbmd0aCA9ICgxIDw8IDI2KSAtIDE7Ci0g
ICAgdW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsKLSAgICB1bnNpZ25lZCBtX3VzZXJTdGFydDsK
LSAgICB1bnNpZ25lZCBtX3VzZXJFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXNzd29yZEVuZDsKLSAg
ICB1bnNpZ25lZCBtX2hvc3RFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7
Ci0gICAgdW5zaWduZWQgbV9wYXRoRW5kOwotICAgIHVuc2lnbmVkIG1fcXVlcnlFbmQ7Ci19Owot
Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVvZihTdHJpbmcpICsgOCAqIHNpemVv
Zih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwiKTsKLQotdGVtcGxhdGUgPGNsYXNz
IEVuY29kZXI+Ci12b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0g
ICAgZW5jb2RlciA8PCBtX3N0cmluZzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1i
b29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYgdXJsKQotewotICAgIGF1dG8g
b3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsKLSAgICBpZiAoIW9wdGlvbmFsVVJM
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdXJsID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLXN0ZDo6
b3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFN0cmlu
ZyBzdHJpbmc7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBVUkwoVVJMKCksIHN0cmluZyk7Ci19Ci0KLVdF
QkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5
QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci1XRUJDT1JFX0VYUE9SVCBib29s
IHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdF
QkNPUkVfRVhQT1JUIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsK
LQotV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiBibGFua1VSTCgpOwotCi0vLyBGdW5jdGlvbnMg
dG8gZG8gVVJMIG9wZXJhdGlvbnMgb24gc3RyaW5ncy4KLS8vIFRoZXNlIGFyZSBvcGVyYXRpb25z
IHRoYXQgYXJlbid0IGZhc3RlciBvbiBhIHBhcnNlZCBVUkwuCi0vLyBUaGVzZSBhcmUgYWxzbyBk
aWZmZXJlbnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3QgcmVxdWly
ZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KLS8vIFRoaXMgaXMg
ZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5v
dCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFVSTC4KLQotV0VCQ09SRV9FWFBPUlQg
Ym9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7
Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYg
dXJsKTsKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpOwotV0VCQ09S
RV9FWFBPUlQgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsK
LQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdW
aWV3IHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwotV0VCQ09SRV9FWFBPUlQg
Ym9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hv
dWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCi0KLVdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJEZWZh
dWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwotCi1ib29sIGlzVmFsaWRQcm90b2Nv
bChjb25zdCBTdHJpbmcmKTsKLQotU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpOwotCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3Nl
LCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRo
ZSBVUkwgU3RhbmRhcmQuCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2Fw
ZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKLQotLy8gSW5saW5lcy4KLQotaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYS5z
dHJpbmcoKSA9PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpID09IGI7
Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwm
IGIpCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5zdHJpbmcoKTsKLX0KLQotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJp
bmcoKSAhPSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVS
TCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpICE9IGI7Ci19
Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIp
Ci17Ci0gICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKLX0KLQotLy8gSW5saW5lIHZlcnNpb25z
IG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxpbmluZwot
Ly8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xh
c3MgZGVmaW5pdGlvbi4KLQotaW5saW5lIGJvb2wgVVJMOjppc051bGwoKSBjb25zdAotewotICAg
IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjppc0VtcHR5
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOwotfQotCi1pbmxpbmUg
Ym9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQ7Ci19Ci0K
LWlubGluZSBib29sIFVSTDo6aGFzUGF0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEVu
ZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFz
VXNlcm5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZXJFbmQgPiBtX3VzZXJTdGFydDsK
LX0KLQotaW5saW5lIGJvb2wgVVJMOjpoYXNQYXNzd29yZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fcGFzc3dvcmRFbmQgPiAobV91c2VyRW5kICsgMSk7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6
aGFzUXVlcnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3F1ZXJ5RW5kID4gbV9wYXRoRW5kOwot
fQotCi1pbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZDsKLX0KLQotaW5saW5l
IGJvb2wgVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwotfQotCi1pbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRo
U3RhcnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19
Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhFbmQoKSBjb25zdAotewotICAgIHJldHVybiBt
X3BhdGhFbmQ7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFzdFNsYXNoOwotfQotCi1XVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVj
dCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+OwotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0
czxXZWJDb3JlOjpVUkw+OwotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxI
YXNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZDBhYjk2ZGEzNWQzMWFjOGRi
NGViNGRhYmQzZjRlMTU5MmI4MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMSGFzaC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaWZuZGVmIFVSTEhhc2hfaAotI2RlZmluZSBVUkxIYXNoX2gKLQotI2luY2x1
ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgc3RydWN0
IFVSTEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCktPmhhc2go
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVSTCYgYSwg
Y29uc3QgVVJMJiBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6
ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAg
IH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIFVS
TEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nCi10ZW1wbGF0ZTw+IHN0cnVjdCBE
ZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+IHsKLSAgICB1c2luZyBIYXNoID0gV2ViQ29yZTo6VVJM
SGFzaDsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6VVJMPiA6
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+IHsgfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV1RGCi0KLSNlbmRpZiAvLyBVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJz
ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2JhYzQ5ZDliNjVkZThiMTA0
ZDVhNmY3NWIyNTgwYjhiODkyYzZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyOTI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
LSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlIDxhcnJheT4K
LSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8
dW5pY29kZS91dHlwZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jZGVmaW5lIFVSTF9Q
QVJTRVJfREVCVUdHSU5HIDAKLQotI2lmIFVSTF9QQVJTRVJfREVCVUdHSU5HCi0jZGVmaW5lIFVS
TF9QQVJTRVJfTE9HKC4uLikgTE9HKFVSTFBhcnNlciwgX19WQV9BUkdTX18pCi0jZWxzZQotI2Rl
ZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pCi0jZW5kaWYKLSAgICAKLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Ci1jbGFzcyBDb2RlUG9pbnRJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAg
QUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcigpIHsgfQotICAgIEFMV0FZU19JTkxJTkUg
Q29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogYmVnaW4sIGNvbnN0IENoYXJh
Y3RlclR5cGUqIGVuZCkKLSAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQotICAgICAgICAsIG1fZW5k
KGVuZCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRl
cmF0b3IoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIGJlZ2luLCBjb25zdCBDb2RlUG9pbnRJdGVy
YXRvciYgZW5kKQotICAgICAgICA6IENvZGVQb2ludEl0ZXJhdG9yKGJlZ2luLm1fYmVnaW4sIGVu
ZC5tX2JlZ2luKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGVuZC5tX2JlZ2luID49IGJlZ2luLm1f
YmVnaW4pOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIgb3BlcmF0b3Iq
KCkgY29uc3Q7Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvciYgb3BlcmF0b3Ir
KygpOwotCi0gICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZVBvaW50
SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0g
b3RoZXIubV9iZWdpbgotICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7Ci0gICAg
fQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAgICAKLSAg
ICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgQ29kZVBv
aW50SXRlcmF0b3ImIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9iZWdpbiA9IG90aGVyLm1fYmVn
aW47Ci0gICAgICAgIG1fZW5kID0gb3RoZXIubV9lbmQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsK
LSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgYXRFbmQoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fYmVnaW4gPD0gbV9lbmQpOwotICAgICAgICByZXR1cm4gbV9iZWdpbiA+
PSBtX2VuZDsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRz
U2luY2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogcmVmZXJlbmNlKSBjb25zdAotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fYmVnaW4gPj0gcmVmZXJlbmNlKTsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4g
LSByZWZlcmVuY2U7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRz
U2luY2UoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGNvZGVVbml0c1NpbmNlKG90aGVyLm1fYmVnaW4pOwotICAgIH0KLSAgICAKLXBy
aXZhdGU6Ci0gICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogbV9iZWdpbiB7IG51bGxwdHIgfTsKLSAg
ICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2VuZCB7IG51bGxwdHIgfTsKLX07Ci0KLXRlbXBsYXRl
PD4KLUFMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJh
dG9yKigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFhdEVuZCgpKTsKLSAgICByZXR1cm4gKm1fYmVn
aW47Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgYXV0byBDb2RlUG9pbnRJdGVyYXRv
cjxMQ2hhcj46Om9wZXJhdG9yKysoKSAtPiBDb2RlUG9pbnRJdGVyYXRvciYKLXsKLSAgICBtX2Jl
Z2luKys7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5F
IFVDaGFyMzIgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+OjpvcGVyYXRvciooKSBjb25zdAotewot
ICAgIEFTU0VSVCghYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjOwotICAgIFUxNl9HRVQobV9iZWdp
biwgMCwgMCwgbV9lbmQgLSBtX2JlZ2luLCBjKTsKLSAgICByZXR1cm4gYzsKLX0KLQotdGVtcGxh
dGU8PgotQUxXQVlTX0lOTElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPjo6b3BlcmF0
b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgotewotICAgIHVuc2lnbmVkIGkgPSAwOwotICAg
IHNpemVfdCBsZW5ndGggPSBtX2VuZCAtIG1fYmVnaW47Ci0gICAgVTE2X0ZXRF8xKG1fYmVnaW4s
IGksIGxlbmd0aCk7Ci0gICAgbV9iZWdpbiArPSBpOwotICAgIHJldHVybiAqdGhpczsKLX0KLSAg
ICAKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgYXBwZW5kQ29kZVBvaW50KFZlY3RvcjxVQ2hh
cj4mIGRlc3RpbmF0aW9uLCBVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBpZiAoVV9JU19CTVAo
Y29kZVBvaW50KSkgewotICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNo
YXI+KGNvZGVQb2ludCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGRlc3RpbmF0aW9u
LnJlc2VydmVDYXBhY2l0eShkZXN0aW5hdGlvbi5zaXplKCkgKyAyKTsKLSAgICBkZXN0aW5hdGlv
bi51bmNoZWNrZWRBcHBlbmQoVTE2X0xFQUQoY29kZVBvaW50KSk7Ci0gICAgZGVzdGluYXRpb24u
dW5jaGVja2VkQXBwZW5kKFUxNl9UUkFJTChjb2RlUG9pbnQpKTsKLX0KLQotZW51bSBVUkxDaGFy
YWN0ZXJDbGFzcyB7Ci0gICAgVXNlckluZm8gPSAweDEsCi0gICAgRGVmYXVsdCA9IDB4MiwKLSAg
ICBGb3JiaWRkZW5Ib3N0ID0gMHg0LAotICAgIFF1ZXJ5UGVyY2VudCA9IDB4OCwKLSAgICBTbGFz
aFF1ZXN0aW9uT3JIYXNoID0gMHgxMCwKLSAgICBWYWxpZFNjaGVtZSA9IDB4MjAsCi19OwotCi1z
dGF0aWMgY29uc3QgdWludDhfdCBjaGFyYWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7Ci0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHgwCi0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEKLSAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MgotICAgIFVzZXJJbmZvIHwgRGVmYXVs
dCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgzCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4NQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg2Ci0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDcKLSAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4OAotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4OQotICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4QQotICAgIFVzZXJJbmZv
IHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAweEMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweEQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQsIC8vIDB4RQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhGCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEw
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDExCi0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEyCi0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEzCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDE0Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDE1Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAw
eDE2Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE3Ci0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE4Ci0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE5Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAweDFBCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDFCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDFDCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFECi0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFFCi0gICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFGCi0gICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyAnCi0gICAgMCwgLy8gJyEn
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAnIicKLSAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9y
YmlkZGVuSG9zdCwgLy8gJyMnCi0gICAgMCwgLy8gJyQnCi0gICAgRm9yYmlkZGVuSG9zdCwgLy8g
JyUnCi0gICAgMCwgLy8gJyYnCi0gICAgMCwgLy8gJ1wnJwotICAgIDAsIC8vICcoJwotICAgIDAs
IC8vICcpJwotICAgIDAsIC8vICcqJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnKycKLSAgICAwLCAv
LyAnLCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJy0nCi0gICAgVmFsaWRTY2hlbWUsIC8vICcuJwot
ICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICcv
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzEnCi0gICAg
VmFsaWRTY2hlbWUsIC8vICcyJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMycKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJzQnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc1JwotICAgIFZhbGlkU2NoZW1lLCAv
LyAnNicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzcnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc4Jwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAnOScKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8v
ICc6JwotICAgIFVzZXJJbmZvLCAvLyAnOycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnPCcKLSAgICBVc2VySW5mbywgLy8gJz0nCi0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8g
Jz4nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJp
ZGRlbkhvc3QsIC8vICc/JwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ0AnCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdBJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnQicKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ0MnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdEJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnRScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0YnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdH
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0knCi0gICAg
VmFsaWRTY2hlbWUsIC8vICdKJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSycKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJ0wnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdNJwotICAgIFZhbGlkU2NoZW1lLCAv
LyAnTicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ08nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdQJwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAnUScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1InCi0gICAgVmFs
aWRTY2hlbWUsIC8vICdTJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnVCcKLSAgICBWYWxpZFNjaGVt
ZSwgLy8gJ1UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdWJwotICAgIFZhbGlkU2NoZW1lLCAvLyAn
VycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdZJwotICAg
IFZhbGlkU2NoZW1lLCAvLyAnWicKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICdb
JwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8v
ICdcXCcKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICddJwotICAgIFVzZXJJbmZv
LCAvLyAnXicKLSAgICAwLCAvLyAnXycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8vICdgJwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAnYScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2InCi0gICAgVmFs
aWRTY2hlbWUsIC8vICdjJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnZCcKLSAgICBWYWxpZFNjaGVt
ZSwgLy8gJ2UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdmJwotICAgIFZhbGlkU2NoZW1lLCAvLyAn
ZycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdpJwotICAg
IFZhbGlkU2NoZW1lLCAvLyAnaicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2snCi0gICAgVmFsaWRT
Y2hlbWUsIC8vICdsJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnbScKLSAgICBWYWxpZFNjaGVtZSwg
Ly8gJ24nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdvJwotICAgIFZhbGlkU2NoZW1lLCAvLyAncCcK
LSAgICBWYWxpZFNjaGVtZSwgLy8gJ3EnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdyJwotICAgIFZh
bGlkU2NoZW1lLCAvLyAncycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3QnCi0gICAgVmFsaWRTY2hl
bWUsIC8vICd1JwotICAgIFZhbGlkU2NoZW1lLCAvLyAndicKLSAgICBWYWxpZFNjaGVtZSwgLy8g
J3cnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAneScKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJ3onCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAneycKLSAg
ICBVc2VySW5mbywgLy8gJ3wnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAnfScKLSAgICAw
LCAvLyAnficKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4N0YKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4ODAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
ODIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODQK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODYKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4ODcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODgKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4ODkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEEKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OEIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEMKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OEQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEUKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OEYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTAKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTIKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTcK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTkKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUIKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUQKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUYKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTEKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTMKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTUKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUEK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUMKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUUKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjAKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QjEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjIKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjQKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QjUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjYKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjgKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkQK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkYKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QzAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzEKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QzIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzMKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QzQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzUKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QzYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzcKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QzgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzkKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4Q0EKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0IKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4Q0MKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0QKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
Q0UKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0YKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDAK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDIKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RDMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDQKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RDUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDYKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RDcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDgKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RDkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REEKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4REIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REMKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4REQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REUKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4REYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTMK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTUKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTcKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTkKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUIKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUQKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUYKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RjAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjEKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RjIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RjQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjYK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjgKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkEKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkMKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkUKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RkYKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRyb2woQ2hhcmFjdGVyVHlwZSBjaGFyYWN0
ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweDFGOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzQzBDb250cm9sT3JTcGFjZShD
aGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MjA7IH0KLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wg
aXNUYWJPck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3Rl
ciA8PSAweEQgJiYgY2hhcmFjdGVyID49IDB4OSAmJiBjaGFyYWN0ZXIgIT0gMHhCICYmIGNoYXJh
Y3RlciAhPSAweEM7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaXNJblNpbXBsZUVuY29kZVNldChDaGFyYWN0ZXJUeXBlIGNoYXJh
Y3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3RSB8fCBpc0MwQ29udHJvbChjaGFyYWN0ZXIp
OyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGlzSW5EZWZhdWx0RW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJl
dHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAm
IERlZmF1bHQ7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJ
TkUgc3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFj
dGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hh
cmFjdGVyXSAmIFVzZXJJbmZvOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzUGVyY2VudE9yTm9uQVNDSUkoQ2hhcmFjdGVyVHlw
ZSBjaGFyYWN0ZXIpIHsgcmV0dXJuICFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09
ICclJzsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBz
dGF0aWMgYm9vbCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIp
IHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXFwnICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFj
dGVyXSAmIFNsYXNoUXVlc3Rpb25Pckhhc2g7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNWYWxpZFNjaGVtZUNoYXJhY3RlcihD
aGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICd6JyAmJiBjaGFy
YWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBWYWxpZFNjaGVtZTsgfQotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0ZvcmJpZGRl
bkhvc3RDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3Rl
ciA8PSAnXScgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgRm9yYmlkZGVuSG9z
dDsgfQotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlC
eXRlKHVpbnQ4X3QgYnl0ZSwgY29uc3QgYm9vbCYgdXJsSXNTcGVjaWFsKQotewotICAgIGlmIChj
aGFyYWN0ZXJDbGFzc1RhYmxlW2J5dGVdICYgUXVlcnlQZXJjZW50KQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAoYnl0ZSA9PSAnXCcnICYmIHVybElzU3BlY2lhbCkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFVSTFBhcnNlcjo6aXNJblVz
ZXJJbmZvRW5jb2RlU2V0KFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmlzSW5Vc2Vy
SW5mb0VuY29kZVNldChjKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwg
VVJMUGFyc2VyOjpSZXBvcnRTeW50YXhWaW9sYXRpb24gcmVwb3J0U3ludGF4VmlvbGF0aW9uPgot
QUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQotewotICAgICsraXRl
cmF0b3I7Ci0gICAgd2hpbGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JO
ZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgIGlmIChyZXBvcnRTeW50YXhWaW9sYXRpb24g
PT0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXMpCi0gICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICsraXRlcmF0
b3I7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBV
UkxQYXJzZXI6OnRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4
VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50
YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIGJv
b2wgVVJMUGFyc2VyOjppc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCAhaXNB
U0NJSUFscGhhKCppdGVyYXRvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNl
PENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgq
aXRlcmF0b3IgPT0gJzonKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoVU5MSUtFTFko
Kml0ZXJhdG9yID09ICd8JykpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZl
cihVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBBU1NFUlQoaXNBU0NJSShjb2RlUG9pbnQpKTsK
LSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAgICBtX2Fz
Y2lpQnVmZmVyLmFwcGVuZChjb2RlUG9pbnQpOwotfQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgVVJM
UGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVf
dCBsZW5ndGgpCi17Ci0gICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkK
LSAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjphcHBlbmRX
aW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJh
dG9yKQotewotICAgIEFTU0VSVChpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikpOwotICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoKml0ZXJhdG9yKTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsK
LSAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwotICAgIEFTU0VSVCgqaXRlcmF0b3IgPT0g
JzonIHx8ICppdGVyYXRvciA9PSAnfCcpOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJ3wnKQotICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
JzonKTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmNvcHlC
YXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVSTCYgYmFzZSkKLXsKLSAgICBpZiAoYmFzZS5w
cm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5tX2hvc3RF
bmQgKyBiYXNlLm1fcG9ydExlbmd0aCA8IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAg
ICBpZiAoYmFzZS5tX3N0cmluZy5pczhCaXQoKSkgewotICAgICAgICAgICAgY29uc3QgTENoYXIq
IGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAgQ29kZVBv
aW50SXRlcmF0b3I8TENoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0
TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgICAg
IGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFdp
bmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBiZWdp
biA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczE2KCk7Ci0gICAgICAgICAgICBDb2RlUG9pbnRJ
dGVyYXRvcjxVQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5n
dGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAgICAgaWYg
KGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kV2luZG93
c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRDb3B5RmlsZVVS
TChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAo
IWlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZh
bmNlKGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgYWR2YW5jZShpdGVyYXRvcik7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiAhaXNTbGFzaFF1ZXN0aW9uT3JIYXNo
KCppdGVyYXRvcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3Qg
Ynl0ZSwgVmVjdG9yPExDaGFyPiYgYnVmZmVyKQotewotICAgIGJ1ZmZlci5hcHBlbmQoJyUnKTsK
LSAgICBidWZmZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLSAg
ICBidWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLX0KLQot
dm9pZCBVUkxQYXJzZXI6OnBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSkKLXsKLSAgICBB
U1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
JyUnKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0
KGJ5dGUpKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9BU0NJSUhleERp
Z2l0KGJ5dGUpKTsKLX0KLQotY29uc3QgY2hhciByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJj
ZW50RW5jb2RlZFsxMF0gPSAiJUVGJUJGJUJEIjsKLWNvbnN0IHNpemVfdCByZXBsYWNlbWVudENo
YXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCA9IHNpemVvZihyZXBsYWNlbWVudENoYXJh
Y3RlclVURjhQZXJjZW50RW5jb2RlZCkgLSAxOwotCi10ZW1wbGF0ZTxib29sKCppc0luQ29kZVNl
dCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQg
VVJMUGFyc2VyOjp1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsK
LSAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVyYXRvcjsKLSAgICBpZiAoTElLRUxZKGlzQVND
SUkoY29kZVBvaW50KSkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzSW5Db2RlU2V0KGNvZGVQ
b2ludCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAg
ICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBvaW50KTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvZGVQb2ludCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0luQ29kZVNldChjb2RlUG9pbnQpLCAi
aXNJbkNvZGVTZXQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBmb3Igbm9uLUFTQ0lJIGNoYXJh
Y3RlcnMiKTsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIAotICAgIGlmICgh
VV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkLCByZXBsYWNlbWVudENo
YXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCi0gICAgdWludDhfdCBidWZmZXJbVThfTUFYX0xFTkdUSF07Ci0gICAgaW50MzJfdCBv
ZmZzZXQgPSAwOwotICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQsIGNvZGVQb2lu
dCk7Ci0gICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgb2Zmc2V0OyArK2kpCi0gICAgICAgIHBl
cmNlbnRFbmNvZGVCeXRlKGJ1ZmZlcltpXSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UXVlcnlFbmNvZGUo
Y29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQotewotICAg
IEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRl
cmF0b3I7Ci0gICAgaWYgKExJS0VMWShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7Ci0gICAgICAgIGlm
IChVTkxJS0VMWShzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGNvZGVQb2ludCwgbV91cmxJ
c1NwZWNpYWwpKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAg
ICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgCi0g
ICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUihjb2RlUG9pbnQpKSB7Ci0gICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQsIHJlcGxh
Y2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwotICAgIGludDMy
X3Qgb2Zmc2V0ID0gMDsKLSAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCBjb2Rl
UG9pbnQpOwotICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytpKSB7Ci0gICAg
ICAgIGF1dG8gYnl0ZSA9IGJ1ZmZlcltpXTsKLSAgICAgICAgaWYgKHNob3VsZFBlcmNlbnRFbmNv
ZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQotICAgICAgICAgICAgcGVyY2VudEVu
Y29kZUJ5dGUoYnl0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoYnl0ZSk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgotdm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+
JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGF1dG8gZW5jb2RlZCA9IGVuY29k
aW5nLmVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldyhzb3VyY2UuZGF0YSgpLCBzb3VyY2Uu
c2l6ZSgpKSk7Ci0gICAgYXV0byogZGF0YSA9IGVuY29kZWQuZGF0YSgpOwotICAgIHNpemVfdCBs
ZW5ndGggPSBlbmNvZGVkLnNpemUoKTsKLSAgICAKLSAgICBpZiAoIWxlbmd0aCA9PSAhaXRlcmF0
b3IuYXRFbmQoKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHNpemVfdCBpID0gMDsKLSAgICBmb3IgKDsgaSA8
IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAg
ICAgIHVpbnQ4X3QgYnl0ZSA9IGRhdGFbaV07Ci0gICAgICAgIGlmIChVTkxJS0VMWShieXRlICE9
ICppdGVyYXRvcikpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxk
UGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpKSB7Ci0gICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKLSAgICAgICAgKytpdGVy
YXRvcjsKLSAgICB9Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXds
aW5lKCppdGVyYXRvcikpCi0gICAgICAgICsraXRlcmF0b3I7Ci0gICAgQVNTRVJUKChpID09IGxl
bmd0aCkgPT0gaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkg
ewotICAgICAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAgICB1aW50
OF90IGJ5dGUgPSBkYXRhW2ldOwotICAgICAgICBpZiAoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5
Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCi0gICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0
ZShieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihi
eXRlKTsKLSAgICB9Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVm
YXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKLXsKLSAgICBzdGF0aWMgY29u
c3QgdWludDE2X3QgZnRwUG9ydCA9IDIxOwotICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBnb3Bo
ZXJQb3J0ID0gNzA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBQb3J0ID0gODA7Ci0g
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBzUG9ydCA9IDQ0MzsKLSAgICBzdGF0aWMgY29u
c3QgdWludDE2X3Qgd3NQb3J0ID0gODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IHdzc1Bv
cnQgPSA0NDM7Ci0gICAgCi0gICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAg
aWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgc3dpdGNoIChz
Y2hlbWVbMF0pIHsKLSAgICBjYXNlICd3JzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAg
ICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHdzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAg
ICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4g
d3NzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBjYXNlICdoJzoK
LSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAg
aWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3Qn
Ci0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gaHR0cFBvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAg
ICBjYXNlIDU6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAg
ICAgICYmIHNjaGVtZVsyXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0g
J3AnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdzJykKLSAgICAgICAgICAgICAg
ICByZXR1cm4gaHR0cHNQb3J0OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IH0KLSAgICBjYXNlICdnJzoKLSAgICAgICAgaWYgKGxlbmd0aCA9PSA2Ci0gICAgICAgICAgICAm
JiBzY2hlbWVbMV0gPT0gJ28nCi0gICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnCi0gICAg
ICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0g
J2UnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNV0gPT0gJ3InKQotICAgICAgICAgICAgcmV0dXJu
IGdvcGhlclBvcnQ7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgY2FzZSAnZic6
Ci0gICAgICAgIGlmIChsZW5ndGggPT0gMwotICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICd0
JwotICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJykKLSAgICAgICAgICAgIHJldHVybiBm
dHBQb3J0OwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotfQotCi1lbnVtIGNsYXNzIFNjaGVtZSB7
Ci0gICAgV1MsCi0gICAgV1NTLAotICAgIEZpbGUsCi0gICAgRlRQLAotICAgIEdvcGhlciwKLSAg
ICBIVFRQLAotICAgIEhUVFBTLAotICAgIE5vblNwZWNpYWwKLX07Ci0KLUFMV0FZU19JTkxJTkUg
c3RhdGljIFNjaGVtZSBzY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpCi17Ci0gICAgYXV0byBsZW5n
dGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBT
Y2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKLSAgICBjYXNlICdm
JzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSAzOgotICAgICAgICAg
ICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0g
J3AnKQotICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkZUUDsKLSAgICAgICAgICAgIHJl
dHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlm
IChzY2hlbWVbMV0gPT0gJ2knCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdsJwot
ICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnZScpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6RmlsZTsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFs
OwotICAgICAgICB9Ci0gICAgY2FzZSAnZyc6Ci0gICAgICAgIGlmIChsZW5ndGggPT0gNgotICAg
ICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJwotICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICdwJwotICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJwotICAgICAgICAgICAgJiYgc2No
ZW1lWzRdID09ICdlJwotICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKLSAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6OkdvcGhlcjsKLSAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3Bl
Y2lhbDsKLSAgICBjYXNlICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAg
Y2FzZSA0OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAg
ICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdw
JykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpIVFRQOwotICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgaWYg
KHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0g
ICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJwotICAgICAgICAgICAgICAgICYmIHNj
aGVtZVs0XSA9PSAncycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRUUFM7Ci0g
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQotICAgIGNh
c2UgJ3cnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNlIDI6Ci0gICAg
ICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2No
ZW1lOjpXUzsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAg
IGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAgICAgICAgICAg
ICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpX
U1M7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgfQot
fQotCi1zdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICghaXNBU0NJSUFscGhhKHNj
aGVtZVswXSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBmb3IgKHNpemVf
dCBpID0gMTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmIChpc0FTQ0lJ
QWxwaGFudW1lcmljKHNjaGVtZVtpXSkgfHwgc2NoZW1lW2ldID09ICcrJyB8fCBzY2hlbWVbaV0g
PT0gJy0nIHx8IHNjaGVtZVtpXSA9PSAnLicpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NoZW1lLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hl
bWUoY29uc3QgU3RyaW5nJiBzY2hlbWVBcmcpCi17Ci0gICAgcmV0dXJuIHNjaGVtZShzY2hlbWVB
cmcpICE9IFNjaGVtZTo6Tm9uU3BlY2lhbDsKLX0KLQotZW51bSBjbGFzcyBVUkxQYXJzZXI6OlVS
TFBhcnQgewotICAgIFNjaGVtZUVuZCwKLSAgICBVc2VyU3RhcnQsCi0gICAgVXNlckVuZCwKLSAg
ICBQYXNzd29yZEVuZCwKLSAgICBIb3N0RW5kLAotICAgIFBvcnRFbmQsCi0gICAgUGF0aEFmdGVy
TGFzdFNsYXNoLAotICAgIFBhdGhFbmQsCi0gICAgUXVlcnlFbmQsCi19OwotCi1zaXplX3QgVVJM
UGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQoY29uc3QgVVJMJiB1cmwsIFVSTFBhcnQgcGFydCkK
LXsKLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBjYXNlIFVSTFBhcnQ6OlF1ZXJ5RW5kOgotICAg
ICAgICByZXR1cm4gdXJsLm1fcXVlcnlFbmQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgot
ICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRl
ckxhc3RTbGFzaDoKLSAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAg
ICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9ob3N0RW5kICsg
dXJsLm1fcG9ydExlbmd0aDsKLSAgICBjYXNlIFVSTFBhcnQ6Okhvc3RFbmQ6Ci0gICAgICAgIHJl
dHVybiB1cmwubV9ob3N0RW5kOwotICAgIGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6Ci0gICAg
ICAgIHJldHVybiB1cmwubV9wYXNzd29yZEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlVzZXJFbmQ6
Ci0gICAgICAgIHJldHVybiB1cmwubV91c2VyRW5kOwotICAgIGNhc2UgVVJMUGFydDo6VXNlclN0
YXJ0OgotICAgICAgICByZXR1cm4gdXJsLm1fdXNlclN0YXJ0OwotICAgIGNhc2UgVVJMUGFydDo6
U2NoZW1lRW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBVUkxQYXJzZXI6
OmNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBzaXplX3QgbGVuZ3Ro
KQotewotICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSBzdHJpbmcubGVuZ3RoKCkpOwotICAg
IGlmIChzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9hc2Np
aUJ1ZmZlci5pc0VtcHR5KCkpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMx
NigpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICBVQ2hhciBjID0gY2hhcmFjdGVyc1tpXTsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzQVNDSUkoYykpOwotICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcihjKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbChjb25zdCBV
UkwmIGJhc2UsIFVSTFBhcnQgcGFydCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqJiBub25VVEY4UXVlcnlFbmNv
ZGluZykKLXsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotCi0gICAgbV9hc2NpaUJ1
ZmZlci5jbGVhcigpOwotICAgIGNvcHlBU0NJSVN0cmluZ1VudGlsKGJhc2UubV9zdHJpbmcsIHVy
bExlbmd0aFVudGlsUGFydChiYXNlLCBwYXJ0KSk7Ci0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAg
Y2FzZSBVUkxQYXJ0OjpRdWVyeUVuZDoKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGJhc2Uu
bV9xdWVyeUVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRo
RW5kOgotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBiYXNlLm1fcGF0aEVuZDsKLSAgICAgICAg
RkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6Ci0gICAg
ICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgotICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBiYXNlLm1fcG9ydExlbmd0aDsKLSAgICAgICAgRkFM
TFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgotICAgICAgICBtX3VybC5tX2hv
c3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBV
UkxQYXJ0OjpQYXNzd29yZEVuZDoKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IGJhc2Uu
bV9wYXNzd29yZEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpV
c2VyRW5kOgotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBiYXNlLm1fdXNlckVuZDsKLSAgICAg
ICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyU3RhcnQ6Ci0gICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gYmFzZS5tX3VzZXJTdGFydDsKLSAgICAgICAgRkFMTFRIUk9VR0g7
Ci0gICAgY2FzZSBVUkxQYXJ0OjpTY2hlbWVFbmQ6Ci0gICAgICAgIG1fdXJsLm1faXNWYWxpZCA9
IGJhc2UubV9pc1ZhbGlkOwotICAgICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkg
PSBiYXNlLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsKLSAgICAgICAgbV91cmwubV9zY2hlbWVF
bmQgPSBiYXNlLm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBzd2l0Y2ggKHNjaGVtZShTdHJpbmdW
aWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpLCBtX3VybC5tX3NjaGVtZUVuZCkpKSB7Ci0gICAgY2Fz
ZSBTY2hlbWU6OldTOgotICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgIG5vblVURjhRdWVy
eUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6OkZpbGU6Ci0gICAgICAgIG1fdXJsSXNGaWxl
ID0gdHJ1ZTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBTY2hlbWU6OkZUUDoKLSAg
ICBjYXNlIFNjaGVtZTo6R29waGVyOgotICAgIGNhc2UgU2NoZW1lOjpIVFRQOgotICAgIGNhc2Ug
U2NoZW1lOjpIVFRQUzoKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6Ok5vblNwZWNpYWw6Ci0gICAgICAgIG1fdXJsSXNTcGVj
aWFsID0gZmFsc2U7Ci0gICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3Rh
dGljIGNvbnN0IGNoYXIgZG90QVNDSUlDb2RlWzJdID0geycyJywgJ2UnfTsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6Omlz
U2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykK
LXsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCpj
ID09ICcuJykgewotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZp
b2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hRdWVz
dGlvbk9ySGFzaCgqYyk7Ci0gICAgfQotICAgIGlmICgqYyAhPSAnJScpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlv
bjo6Tm8+KGMpOwotICAgIGlmIChjLmF0RW5kKCkgfHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRT
eW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKSB7
Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpO
bz4oYyk7Ci0gICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9uT3JIYXNo
KCpjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNEb3VibGVEb3RQ
YXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQotewotICAgIGlm
IChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKmMgPT0gJy4nKSB7
Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpO
bz4oYyk7Ci0gICAgICAgIHJldHVybiBpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpOwotICAgIH0K
LSAgICBpZiAoKmMgIT0gJyUnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxD
aGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5h
dEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29kZVswXSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7
Ci0gICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICh0b0FT
Q0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkgewotICAgICAgICBhZHZhbmNlPENoYXJh
Y3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4g
aXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1
bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
YykKLXsKLSAgICBBU1NFUlQoaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKSk7Ci0gICAgaWYgKCpj
ID09ICcuJykgewotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkg
ewotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAg
ICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJU
KCpjID09ICc/JyB8fCAqYyA9PSAnIycpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgIEFTU0VS
VCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBB
U1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAgICAgICBhZHZh
bmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkgewotICAgICAgICAgICAgaWYgKCpjID09
ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycp
OwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNEb3VibGVEb3RQYXRo
U2VnbWVudChjKSk7Ci0gICAgaWYgKCpjID09ICcuJykKLSAgICAgICAgYWR2YW5jZShjKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7
Ci0gICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNl
KGMpOwotICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0p
OwotICAgICAgICBhZHZhbmNlKGMpOwotICAgIH0KLSAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNl
Z21lbnQoYyk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKHVuc2lnbmVkIG5l
d1BhdGhBZnRlckxhc3RTbGFzaCkKLXsKLSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRp
b24pOwotICAgIGlmICghbV91cmxJc0ZpbGUpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
QVNTRVJUKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgp
KTsKLSAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gY29tcG9uZW50VG9Qb3AoJm1fYXNjaWlC
dWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSwgJm1fYXNjaWlCdWZmZXJbMF0gKyBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCk7Ci0gICAgaWYgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9PSBt
X3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxICYmIGlzV2luZG93c0RyaXZl
TGV0dGVyKGNvbXBvbmVudFRvUG9wKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biB0cnVlOwotfQotCi12b2lkIFVSTFBhcnNlcjo6cG9wUGF0aCgpCi17Ci0gICAgQVNTRVJUKG1f
ZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICBpZiAobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxKSB7Ci0gICAgICAg
IGF1dG8gbmV3UGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
LSAxOwotICAgICAgICBpZiAobV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdID09
ICcvJykKLSAgICAgICAgICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaC0tOwotICAgICAgICB3aGls
ZSAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0
TGVuZ3RoICYmIG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSAhPSAnLycpCi0g
ICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKLSAgICAgICAgbmV3UGF0aEFmdGVy
TGFzdFNsYXNoKys7Ci0gICAgICAgIGlmIChzaG91bGRQb3BQYXRoKG5ld1BhdGhBZnRlckxhc3RT
bGFzaCkpCi0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG5ld1BhdGhB
ZnRlckxhc3RTbGFzaDsKLSAgICB9Ci0gICAgbV9hc2NpaUJ1ZmZlci5yZXNpemUobV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgotdm9pZCBVUkxQYXJzZXI6OnN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgaWYgKG1fZGlkU2VlU3ludGF4Vmlv
bGF0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0
cnVlOwotICAgIAotICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7Ci0gICAgc2l6
ZV90IGNvZGVVbml0c1RvQ29weSA9IGl0ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlwZSo+KG1faW5wdXRCZWdpbikpOwotICAgIFJFTEVBU0Vf
QVNTRVJUKGNvZGVVbml0c1RvQ29weSA8PSBtX2lucHV0U3RyaW5nLmxlbmd0aCgpKTsKLSAgICBt
X2FzY2lpQnVmZmVyLnJlc2VydmVDYXBhY2l0eShtX2lucHV0U3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVVbml0c1RvQ29weTsgKytpKSB7Ci0gICAgICAg
IEFTU0VSVChpc0FTQ0lJKG1faW5wdXRTdHJpbmdbaV0pKTsKLSAgICAgICAgbV9hc2NpaUJ1ZmZl
ci51bmNoZWNrZWRBcHBlbmQobV9pbnB1dFN0cmluZ1tpXSk7Ci0gICAgfQotfQotCi12b2lkIFVS
TFBhcnNlcjo6ZmFpbHVyZSgpCi17Ci0gICAgbV91cmwuaW52YWxpZGF0ZSgpOwotICAgIG1fdXJs
Lm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpjaGVja0xvY2FsaG9zdENvZGVQb2ludChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIFVDaGFyMzIgY29kZVBvaW50KQot
ewotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8IHRvQVNDSUlMb3dlcigqaXRlcmF0b3IpICE9
IGNvZGVQb2ludCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJz
ZXI6OmlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0
b3IpCi17Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2wnKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQo
aXRlcmF0b3IsICdvJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9j
YWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYycpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2EnKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3Is
ICdsJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29k
ZVBvaW50KGl0ZXJhdG9yLCAnaCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFj
aGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ28nKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdzJykpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0
ZXJhdG9yLCAndCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGl0ZXJhdG9y
LmF0RW5kKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc0xvY2FsaG9zdChTdHJpbmdWaWV3IHZp
ZXcpCi17Ci0gICAgaWYgKHZpZXcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBpc0F0TG9jYWxo
b3N0KENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPih2aWV3LmNoYXJhY3RlcnM4KCksIHZpZXcuY2hh
cmFjdGVyczgoKSArIHZpZXcubGVuZ3RoKCkpKTsKLSAgICByZXR1cm4gaXNBdExvY2FsaG9zdChD
b2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4odmlldy5jaGFyYWN0ZXJzMTYoKSwgdmlldy5jaGFyYWN0
ZXJzMTYoKSArIHZpZXcubGVuZ3RoKCkpKTsKLX0KLQotQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3
IFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXcoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoKQot
ewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpIHsKLSAgICAgICAg
QVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAg
cmV0dXJuIFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZlci5kYXRhKCkgKyBzdGFydCwgbGVuZ3RoKTsK
LSAgICB9Ci0gICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1faW5wdXRTdHJpbmcubGVuZ3Ro
KCkpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1faW5wdXRTdHJpbmcpLnN1YnN0cmluZyhzdGFy
dCwgbGVuZ3RoKTsKLX0KLQotQUxXQVlTX0lOTElORSBVQ2hhciBVUkxQYXJzZXI6OnBhcnNlZERh
dGFWaWV3KHNpemVfdCBwb3NpdGlvbikKLXsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50
YXhWaW9sYXRpb24pKQotICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlcltwb3NpdGlvbl07Ci0g
ICAgcmV0dXJuIG1faW5wdXRTdHJpbmdbcG9zaXRpb25dOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzaXplX3QgVVJMUGFyc2VyOjpjdXJyZW50
UG9zaXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9y
KQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCi0gICAgICAg
IHJldHVybiBtX2FzY2lpQnVmZmVyLnNpemUoKTsKLSAgICAKLSAgICByZXR1cm4gaXRlcmF0b3Iu
Y29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBDaGFyYWN0ZXJUeXBlKj4obV9p
bnB1dEJlZ2luKSk7Ci19Ci0KLVVSTFBhcnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0cmluZyYgaW5w
dXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlF
bmNvZGluZykKLSAgICA6IG1faW5wdXRTdHJpbmcoaW5wdXQpCi17Ci0gICAgaWYgKGlucHV0Lmlz
TnVsbCgpKSB7Ci0gICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJl
QUJhc2VVUkwpIHsKLSAgICAgICAgICAgIG1fdXJsID0gYmFzZTsKLSAgICAgICAgICAgIG1fdXJs
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoaW5wdXQuaXM4Qml0KCkpIHsKLSAgICAgICAgbV9pbnB1dEJlZ2lu
ID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczgo
KSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1dC5jaGFyYWN0ZXJzMTYoKTsKLSAgICAg
ICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczE2KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25V
VEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX3VybC5tX2lzVmFsaWQK
LSAgICAgICAgfHwgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPT0gKG1fdXJsLnN0cmluZygpICE9
IGlucHV0KQotICAgICAgICB8fCAoaW5wdXQuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0MwQ29u
dHJvbE9yU3BhY2U+KCkKLSAgICAgICAgICAgICYmIG1fdXJsLm1fc3RyaW5nID09IGJhc2UubV9z
dHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpKSk7Ci0gICAgQVNTRVJUKGludGVybmFsVmFsdWVz
Q29uc2lzdGVudChtX3VybCkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpZiAoIW1fZGlk
U2VlU3ludGF4VmlvbGF0aW9uKSB7Ci0gICAgICAgIC8vIEZvcmNlIGEgc3ludGF4IHZpb2xhdGlv
biBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0Lgot
ICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoIiAiLCBpbnB1dCksIGJhc2UsIG5v
blVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgVVJMIHBhcnNlZCA9IHBhcnNlci5yZXN1bHQo
KTsKLSAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBBU1NFUlQoYWxs
VmFsdWVzRXF1YWwocGFyc2VyLnJlc3VsdCgpLCBtX3VybCkpOwotICAgIH0KLSNlbmRpZgotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNl
KGNvbnN0IENoYXJhY3RlclR5cGUqIGlucHV0LCBjb25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0
IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNvZGluZykK
LXsKLSAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2luZyBVUkwgPCVzPiBiYXNlIDwlcz4iLCBTdHJp
bmcoaW5wdXQsIGxlbmd0aCkudXRmOCgpLmRhdGEoKSwgYmFzZS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICBtX3VybCA9IHsgfTsKLSAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5
KCkpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBxdWVyeUJ1ZmZlcjsKLQotICAgIHVuc2lnbmVkIGVu
ZEluZGV4ID0gbGVuZ3RoOwotICAgIHdoaWxlIChVTkxJS0VMWShlbmRJbmRleCAmJiBpc0MwQ29u
dHJvbE9yU3BhY2UoaW5wdXRbZW5kSW5kZXggLSAxXSkpKSB7Ci0gICAgICAgIHN5bnRheFZpb2xh
dGlvbihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihpbnB1dCwgaW5wdXQpKTsKLSAg
ICAgICAgZW5kSW5kZXgtLTsKLSAgICB9Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4gYyhpbnB1dCwgaW5wdXQgKyBlbmRJbmRleCk7Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4gYXV0aG9yaXR5T3JIb3N0QmVnaW47Ci0gICAgQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gcXVlcnlCZWdpbjsKLSAgICB3aGlsZSAoVU5MSUtFTFkoIWMuYXRF
bmQoKSAmJiBpc0MwQ29udHJvbE9yU3BhY2UoKmMpKSkgewotICAgICAgICBzeW50YXhWaW9sYXRp
b24oYyk7Ci0gICAgICAgICsrYzsKLSAgICB9Ci0gICAgYXV0byBiZWdpbkFmdGVyQ29udHJvbEFu
ZFNwYWNlID0gYzsKLQotICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKLSAgICAgICAg
U2NoZW1lU3RhcnQsCi0gICAgICAgIFNjaGVtZSwKLSAgICAgICAgTm9TY2hlbWUsCi0gICAgICAg
IFNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5LAotICAgICAgICBQYXRoT3JBdXRob3JpdHksCi0g
ICAgICAgIFJlbGF0aXZlLAotICAgICAgICBSZWxhdGl2ZVNsYXNoLAotICAgICAgICBTcGVjaWFs
QXV0aG9yaXR5U2xhc2hlcywKLSAgICAgICAgU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMs
Ci0gICAgICAgIEF1dGhvcml0eU9ySG9zdCwKLSAgICAgICAgSG9zdCwKLSAgICAgICAgRmlsZSwK
LSAgICAgICAgRmlsZVNsYXNoLAotICAgICAgICBGaWxlSG9zdCwKLSAgICAgICAgUGF0aFN0YXJ0
LAotICAgICAgICBQYXRoLAotICAgICAgICBDYW5ub3RCZUFCYXNlVVJMUGF0aCwKLSAgICAgICAg
VVRGOFF1ZXJ5LAotICAgICAgICBOb25VVEY4UXVlcnksCi0gICAgICAgIEZyYWdtZW50LAotICAg
IH07Ci0KLSNkZWZpbmUgTE9HX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJTdGF0ZSAlcywgY29k
ZSBwb2ludCAlYywgcGFyc2VkIGRhdGEgPCVzPiBzaXplICV6dSIsIHgsICpjLCBwYXJzZWREYXRh
VmlldygwLCBjdXJyZW50UG9zaXRpb24oYykpLnV0ZjgoKS5kYXRhKCksIGN1cnJlbnRQb3NpdGlv
bihjKSkKLSNkZWZpbmUgTE9HX0ZJTkFMX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJGaW5hbCBT
dGF0ZTogJXMiLCB4KQotCi0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6U2NoZW1lU3RhcnQ7Ci0g
ICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXds
aW5lKCpjKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAg
ICsrYzsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNo
IChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKLSAgICAgICAgICAg
IExPR19TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGEo
KmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQot
ICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAgICAgICAgICBh
ZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJD
b250cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTY2hlbWU7Ci0gICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAgICAgICBM
T0dfU1RBVEUoIlNjaGVtZSIpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWRTY2hlbWVDaGFyYWN0
ZXIoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqYykp
KQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgc2NoZW1lRW5k
ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChzY2hlbWVFbmQgPiBV
Ukw6Om1heFNjaGVtZUxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBzY2hlbWVFbmQ7Ci0gICAgICAgICAgICAgICAgU3Ry
aW5nVmlldyB1cmxTY2hlbWUgPSBwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCk7
Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAg
ICAgIHN3aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFNj
aGVtZTo6RmlsZToKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICBtX3VybElzRmlsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OldTOgot
ICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgICAgICAgICAgICAgIG5v
blVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJ
c1NwZWNpYWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5wcm90b2NvbElz
KHVybFNjaGVtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVj
aWFsUmVsYXRpdmVPckF1dGhvcml0eTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM7
Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFA6Ci0gICAgICAgICAgICAgICAgY2FzZSBT
Y2hlbWU6OkhUVFBTOgotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhU
VFBGYW1pbHkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAg
ICAgICAgICAgICBjYXNlIFNjaGVtZTo6RlRQOgotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1l
OjpHb3BoZXI6Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJvdG9jb2xJcyh1cmxTY2hlbWUpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3Jp
dHk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOwotICAgICAgICAgICAgICAgICAg
ICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
U2NoZW1lOjpOb25TcGVjaWFsOgotICAgICAgICAgICAgICAgICAgICBub25VVEY4UXVlcnlFbmNv
ZGluZyA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbWF5YmVTbGFzaCA9IGM7
Ci0gICAgICAgICAgICAgICAgICAgIGFkdmFuY2UobWF5YmVTbGFzaCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghbWF5YmVTbGFzaC5hdEVuZCgpICYmICptYXliZVNsYXNoID09ICcvJykgewot
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYyA9IG1heWJlU2xhc2g7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpQYXRoT3JBdXRob3JpdHk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoKmMgPT0gJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMp
OwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
KytjOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50
UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX2Nhbm5vdEJlQUJhc2VVUkwgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6Tm9TY2hlbWU7Ci0gICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5k
U3BhY2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgewotICAgICAgICAgICAg
ICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xBbmRTcGFj
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRl
OjpOb1NjaGVtZToKLSAgICAgICAgICAgIExPR19TVEFURSgiTm9TY2hlbWUiKTsKLSAgICAgICAg
ICAgIGlmICghYmFzZS5pc1ZhbGlkKCkgfHwgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpj
ICE9ICcjJykpIHsKLSAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGJhc2UubV9jYW5ub3RCZUFC
YXNlVVJMICYmICpjID09ICcjJykgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGls
KGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghYmFzZS5wcm90b2Nv
bElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvcHlV
UkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eToKLSAgICAgICAgICAgIExPR19TVEFU
RSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAn
LycpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAg
ICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJy8nKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0g
ICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDsKLSAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKLSAgICAgICAg
ICAgIExPR19TVEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0g
Jy8nKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKLSAgICAgICAgICAgICAg
ICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFW
aWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAgICAgbV91
cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICAgICAgICAg
IG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlJlbGF0aXZlIik7
Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAgICAgICBjYXNlICcvJzoKLSAgICAg
ICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2
ZVNsYXNoOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgJz8nOgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJh
c2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAg
ICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlICcjJzoKLSAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChi
YXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKLSAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24oYykgJiYg
cGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgIT0gJy8nKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKLSAgICAgICAgICAgIExPR19TVEFURSgi
UmVsYXRpdmVTbGFzaCIpOwotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwn
KSB7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1Vu
dGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwot
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjovLyIsIDMpOwotICAgICAgICAg
ICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhv
c3Q7Ci0gICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGNvcHlV
UkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29k
aW5nKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1faG9zdEVuZCArIGJh
c2UubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRo
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6
OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFs
QXV0aG9yaXR5U2xhc2hlcyIpOwotICAgICAgICAgICAgaWYgKExJS0VMWSgqYyA9PSAnLycgfHwg
KmMgPT0gJ1xcJykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykp
Ci0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZShjKTsK
LSAgICAgICAgICAgICAgICBpZiAoTElLRUxZKCFjLmF0RW5kKCkgJiYgKCpjID09ICcvJyB8fCAq
YyA9PSAnXFwnKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICdc
XCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCIvLyIsIDIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6Ci0gICAg
ICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzIik7Ci0gICAg
ICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpIHsKLSAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Ci0g
ICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0eU9ySG9zdDoK
LSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkF1dGhvcml0eU9y
SG9zdCIpOwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnQCcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYXV0byBsYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICBhdXRvIGZpbmRMYXN0
QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWZpbmRMYXN0QXQuYXRFbmQoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgVVJMX1BBUlNFUl9MT0coIkZpbmRpbmcgbGFzdCBA
OiAlYyIsICpmaW5kTGFzdEF0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZmluZExh
c3RBdCA9PSAnQCcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEF0ID0gZmluZExh
c3RBdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTbGFzaCA9ICpmaW5kTGFzdEF0
ID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmZpbmRMYXN0QXQgPT0gJ1xcJyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8fCAqZmluZExhc3RBdCA9PSAnPycgfHwg
KmZpbmRMYXN0QXQgPT0gJyMnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgKytmaW5kTGFzdEF0OwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBsYXN0QXQpKTsKLSAgICAgICAg
ICAgICAgICAgICAgYyA9IGxhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgYWR2YW5jZShjKTsK
LSAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIb3N0OwotICAgICAgICAgICAgICAgICAgICBtX2hv
c3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1NsYXNoID0gKmMg
PT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKTsKLSAgICAgICAgICAgICAg
ICBpZiAoaXNTbGFzaCB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGF1dG8gaXRlcmF0b3IgPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihh
dXRob3JpdHlPckhvc3RCZWdpbiwgYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdGVyYXRv
ci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJF
bmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3Vz
ZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3Vy
bC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYXV0aG9yaXR5T3JI
b3N0QmVnaW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IG1fdXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0
QW5kUG9ydChpdGVyYXRvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJl
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc1NsYXNo
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJ
KCpjKSkKLSAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0
cnVlOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5k
KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Okhvc3Q6Ci0gICAg
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJIb3N0Iik7Ci0gICAgICAg
ICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCpjID09ICc/JyB8
fCAqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykp
Ci0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAgICAgICAg
ICAgTE9HX1NUQVRFKCJGaWxlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAg
ICAgICBjYXNlICdcXCc6Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAg
ICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkZpbGVTbGFzaDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICc/JzoKLSAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2Uu
cHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1Vu
dGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOwotICAgICAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vPyIsIDQpOwotICAgICAgICAgICAgICAgICAgICAr
K2M7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0
aW9uKGMpIC0gMjsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
bV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0
aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhF
bmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpO
b25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgJyMnOgotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAg
ICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxl
IikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFy
dDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyMiLCA0KTsKLSAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAy
OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3Vz
ZXJTdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5
RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OwotICAgICAgICAgICAgICAgICsr
YzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChiYXNlLmlz
VmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSAmJiBzaG91bGRDb3B5RmlsZVVSTChj
KSkKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6
UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8v
LyIsIDMpOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQ
b3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRM
ZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzV2lu
ZG93c0RyaXZlTGV0dGVyKGMpKQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93
c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAg
ICAgICAgIExPR19TVEFURSgiRmlsZVNsYXNoIik7Ci0gICAgICAgICAgICBpZiAoTElLRUxZKCpj
ID09ICcvJyB8fCAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgq
YyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBh
ZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBv
c2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAg
ICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpGaWxlSG9zdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoIi8vIiwgMik7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIGlmIChp
c1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NE
cml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY29weUJh
c2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsg
MTsKLSAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICAgICAgTE9HX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICAgICAgICAgIGlmIChpc1Ns
YXNoUXVlc3Rpb25Pckhhc2goKmMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgd2luZG93
c1F1aXJrID0gdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyaykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyayB8
fCBhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQod2luZG93c1F1aXJrIHx8IHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAt
IDEpID09ICcvJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0g
Jz8nKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvPyIsIDIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6VVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnIycpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8jIiwgMik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5
RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhv
c3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9z
dEJlZ2luLCBjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNMb2NhbGhvc3QocGFyc2VkRGF0YVZpZXcobV91
cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91cmwubV9wYXNzd29yZEVu
ZCkpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91cmwubV9wYXNzd29y
ZEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50
UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGgg
PSAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoU3RhcnQ7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXNQZXJj
ZW50T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRP
ck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICB9IHdo
aWxlICghYy5hdEVuZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRl
OjpQYXRoU3RhcnQ6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAg
ICAgICAgaWYgKCpjICE9ICcvJyAmJiAqYyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpQYXRoOgotICAgICAgICAg
ICAgTE9HX1NUQVRFKCJQYXRoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8IChtX3Vy
bElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoY3VycmVudFBvc2l0aW9u
KGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJykpIHsK
LSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAg
ICAgICAgICBjb25zdW1lRG91YmxlRG90UGF0aFNlZ21lbnQoYyk7Ci0gICAgICAgICAgICAgICAg
ICAgIHBvcFBhdGgoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1NpbmdsZURvdFBhdGhTZWdtZW50
KGMpKSkgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKCpjID09ICc/JykgewotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KCc/Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGlmIChub25VVEY4
UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVl
cnk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5t
X3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1dGY4UGVyY2Vu
dEVuY29kZTxpc0luRGVmYXVsdEVuY29kZVNldD4oYyk7Ci0gICAgICAgICAgICArK2M7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6
Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAg
ICAgICBpZiAoKmMgPT0gJz8nKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jz8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgaWYgKG5vblVURjhR
dWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVy
eTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1f
dXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcvJykgewot
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAg
ICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJy
ZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHV0
ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAgICAgICAg
ICsrYzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0
YXRlOjpVVEY4UXVlcnk6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlVURjhRdWVyeSIpOwotICAg
ICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4oKSk7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIEFTU0VSVCghbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAg
ICAgICAgdXRmOFF1ZXJ5RW5jb2RlKGMpOwotICAgICAgICAgICAgKytjOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKLSAgICAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIk5vblVURjhRdWVyeSIpOwotICAgICAgICAg
ICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KCkpOwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAg
ICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2Rp
bmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsK
LSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhcHBl
bmRDb2RlUG9pbnQocXVlcnlCdWZmZXIsICpjKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMs
IHF1ZXJ5QmVnaW4pOwotICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAgICAgICAgICBV
UkxfUEFSU0VSX0xPRygiU3RhdGUgRnJhZ21lbnQiKTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50
RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAgICAgKytjOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0g
ICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU2No
ZW1lU3RhcnQiKTsKLSAgICAgICAgaWYgKCFjdXJyZW50UG9zaXRpb24oYykgJiYgYmFzZS5pc1Zh
bGlkKCkgJiYgIWJhc2UubV9jYW5ub3RCZUFCYXNlVVJMKSB7Ci0gICAgICAgICAgICBtX3VybCA9
IGJhc2U7Ci0gICAgICAgICAgICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAgIExPR19GSU5BTF9TVEFU
RSgiU2NoZW1lIik7Ci0gICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgU3RhdGU6Ok5vU2NoZW1lOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5vU2NoZW1lIik7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2FzZSBTdGF0ZTo6
U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU3Bl
Y2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFz
ZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgotICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOwotICAgICAgICBBU1NFUlQobV91cmwubV91c2Vy
U3RhcnQpOwotICAgICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQgPT0gY3VycmVudFBvc2l0
aW9uKGMpKTsKLSAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihj
KSAtIDEpID09ICcvJyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0LS07Ci0gICAgICAgIG1f
dXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAg
ICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiUmVsYXRpdmUiKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUo
IlJlbGF0aXZlU2xhc2giKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFy
dDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91
cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgbV91cmwubV9w
YXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVl
cnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKLSAgICAgICAgbV91cmwubV91c2VyU3Rh
cnQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5
SWdub3JlU2xhc2hlczoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5
SWdub3JlU2xhc2hlcyIpOwotICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgi
QXV0aG9yaXR5T3JIb3N0Iik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3Np
dGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdpbi5hdEVu
ZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
LSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAg
ICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICB9IGVsc2UgaWYgKCFwYXJzZUhvc3RBbmRQb3J0
KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgZmFpbHVyZSgpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1fdXJsSXNT
cGVjaWFsKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOwotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOwotICAgICAgICB9Ci0gICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0
YXRlOjpIb3N0OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkhvc3QiKTsKLSAgICAgICAgaWYg
KCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAg
ZmFpbHVyZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmICht
X3VybElzU3BlY2lhbCkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBt
X3VybC5tX3BvcnRMZW5ndGg7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV9wYXRoRW5kOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRo
RW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAgICAgICBMT0df
RklOQUxfU1RBVEUoIkZpbGUiKTsKLSAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2Uu
cHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNl
LCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8iLCAzKTsKLSAgICAgICAgbV91cmwubV91c2VyU3Rh
cnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
LSAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBtX3VybC5tX3F1ZXJ5
RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlU2xhc2gi
KTsKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICBtX3VybC5tX3VzZXJTdGFy
dCA9IGN1cnJlbnRQb3NpdGlvbihjKSArIDE7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Ii8vIiwgMik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owot
ICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOwotICAgICAgICBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFz
ZSkpIHsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0OwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91
cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGaWxlSG9z
dDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICBpZiAodGFr
ZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1
dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0
dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKLSAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhv
c3RCZWdpbik7Ci0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAt
IDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAg
ICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAg
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBtX3VybC5tX3F1
ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAg
ICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgIGlmIChpc0xvY2FsaG9zdChwYXJzZWREYXRh
VmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bh
c3N3b3JkRW5kKSkpIHsKLSAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1f
cGFzc3dvcmRFbmQpOwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgfQot
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsK
LSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0g
ICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgotICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIGNhc2UgU3RhdGU6OlBhdGg6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiUGF0
aCIpOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRoOgotICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1f
cGF0aEVuZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgotICAg
ICAgICBMT0dfRklOQUxfU1RBVEUoIlVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQocXVlcnlC
ZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5vblVU
RjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVm
ZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQ
b3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0g
ICAgICAgIExPR19GSU5BTF9TVEFURSgiRnJhZ21lbnQiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotCi0gICAgaWYgKExJS0VMWSghbV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKSB7Ci0gICAgICAg
IG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLSAgICAgICAgQVNTRVJUKG1fYXNjaWlC
dWZmZXIuaXNFbXB0eSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV91cmwubV9zdHJpbmcgPSBT
dHJpbmc6OmFkb3B0KFdURk1vdmUobV9hc2NpaUJ1ZmZlcikpOwotICAgIG1fdXJsLm1faXNWYWxp
ZCA9IHRydWU7Ci0gICAgVVJMX1BBUlNFUl9MT0coIlBhcnNlZCBVUkwgPCVzPiIsIG1fdXJsLm1f
c3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVu
ZCgpKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICBtX3Vy
bC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgYWR2YW5jZShpdGVyYXRvcikpIHsKLSAgICAg
ICAgaWYgKCppdGVyYXRvciA9PSAnOicpIHsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAgICBhdXRvIGl0ZXJhdG9yQXRD
b2xvbiA9IGl0ZXJhdG9yOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJv
b2wgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IGZhbHNlOwotICAgICAgICAgICAgd2hpbGUgKFVO
TElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7
Ci0gICAgICAgICAgICAgICAgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihpdGVyYXRvckF0Q29sb24pOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdXJsLm1fdXNlckVuZCA+
IG1fdXJsLm1fdXNlclN0YXJ0KQotICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCdAJyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKHRhYk9yTmV3bGluZUFmdGVyQ29sb24pCi0gICAgICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGl0ZXJhdG9yQXRDb2xvbik7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCc6Jyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB1dGY4UGVy
Y2VudEVuY29kZTxXZWJDb3JlOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKLSAg
ICB9Ci0gICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkKLSAg
ICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V2ViQ29yZTo6aXNJblVzZXJJbmZvRW5jb2RlU2V0Pihp
dGVyYXRvcik7Ci0gICAgbV91cmwubV9wYXNzd29yZEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVy
YXRvcik7Ci0gICAgaWYgKCFtX3VybC5tX3VzZXJFbmQpCi0gICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IG1fdXJsLm1fcGFzc3dvcmRFbmQ7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignQCcpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPgotdm9pZCBVUkxQYXJz
ZXI6OmFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIp
Ci17Ci0gICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMgKyAxXTsK
LSAgICBMQ2hhciogZW5kID0gc3RkOjplbmQoYnVmKTsKLSAgICBMQ2hhciogcCA9IGVuZDsKLSAg
ICBkbyB7Ci0gICAgICAgICotLXAgPSAobnVtYmVyICUgMTApICsgJzAnOwotICAgICAgICBudW1i
ZXIgLz0gMTA7Ci0gICAgfSB3aGlsZSAobnVtYmVyKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KHAsIGVuZCAtIHApOwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NChJUHY0QWRk
cmVzcyBhZGRyZXNzKQotewotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4o
YWRkcmVzcyA+PiAyNCk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVu
ZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAxNik7Ci0gICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhf
dD4oYWRkcmVzcyA+PiA4KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7Ci0gICAgYXBw
ZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzKTsKLX0KLSAgICAKLXN0YXRp
YyBzaXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+
JiBhZGRyZXNzLCBzaXplX3QgYmVnaW4pCi17Ci0gICAgc2l6ZV90IGVuZCA9IGJlZ2luOwotICAg
IGZvciAoOyBlbmQgPCA4OyBlbmQrKykgewotICAgICAgICBpZiAoYWRkcmVzc1tlbmRdKQotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBlbmQgLSBiZWdpbjsKLX0KLQotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShjb25zdCBz
dGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gbG9uZ2VzdDsKLSAgICBzaXplX3QgbG9uZ2VzdExlbmd0aCA9IDA7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCA4OyBpKyspIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHplcm9T
ZXF1ZW5jZUxlbmd0aChhZGRyZXNzLCBpKTsKLSAgICAgICAgaWYgKGxlbmd0aCkgewotICAgICAg
ICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgKCFsb25nZXN0IHx8IGxvbmdlc3RMZW5ndGggPCBsZW5n
dGgpKSB7Ci0gICAgICAgICAgICAgICAgbG9uZ2VzdCA9IGk7Ci0gICAgICAgICAgICAgICAgbG9u
Z2VzdExlbmd0aCA9IGxlbmd0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkgKz0gbGVu
Z3RoOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsb25nZXN0OwotfQotCi12b2lkIFVS
TFBhcnNlcjo6c2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKQotewotICAgIGJvb2wg
cHJpbnRlZCA9IGZhbHNlOwotICAgIGlmIChhdXRvIG5pYmJsZTAgPSBwaWVjZSA+PiAxMikgewot
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhl
eERpZ2l0KG5pYmJsZTApKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQotICAgIGF1
dG8gbmliYmxlMSA9IHBpZWNlID4+IDggJiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwgbmliYmxl
MSkgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VB
U0NJSUhleERpZ2l0KG5pYmJsZTEpKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQot
ICAgIGF1dG8gbmliYmxlMiA9IHBpZWNlID4+IDQgJiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwg
bmliYmxlMikKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJj
YXNlQVNDSUlIZXhEaWdpdChuaWJibGUyKSk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dl
ck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChwaWVjZSAmIDB4RikpOwotfQotCi12b2lk
IFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NihVUkxQYXJzZXI6OklQdjZBZGRyZXNzIGFkZHJlc3Mp
Ci17Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignWycpOwotICAgIGF1dG8gY29tcHJlc3NQb2lu
dGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7Ci0gICAgZm9yIChzaXplX3Qg
cGllY2UgPSAwOyBwaWVjZSA8IDg7IHBpZWNlKyspIHsKLSAgICAgICAgaWYgKGNvbXByZXNzUG9p
bnRlciAmJiBjb21wcmVzc1BvaW50ZXIudmFsdWUoKSA9PSBwaWVjZSkgewotICAgICAgICAgICAg
QVNTRVJUKCFhZGRyZXNzW3BpZWNlXSk7Ci0gICAgICAgICAgICBpZiAocGllY2UpCi0gICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjo6IiwgMik7Ci0gICAgICAgICAgICB3
aGlsZSAocGllY2UgPCA4ICYmICFhZGRyZXNzW3BpZWNlXSkKLSAgICAgICAgICAgICAgICBwaWVj
ZSsrOwotICAgICAgICAgICAgaWYgKHBpZWNlID09IDgpCi0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgc2VyaWFsaXplSVB2NlBpZWNlKGFkZHJlc3NbcGllY2VdKTsK
LSAgICAgICAgaWYgKHBpZWNlIDwgNykKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
JzonKTsKLSAgICB9Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignXScpOwotfQotCi1lbnVtIGNs
YXNzIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yIHsKLSAgICBGYWlsdXJlLAotICAg
IE92ZXJmbG93LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVj
dGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gVVJMUGFyc2Vy
OjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0
b3IsIGJvb2wmIGRpZFNlZVN5bnRheFZpb2xhdGlvbikKLXsKLSAgICBlbnVtIGNsYXNzIFN0YXRl
IDogdWludDhfdCB7Ci0gICAgICAgIFVua25vd25CYXNlLAotICAgICAgICBEZWNpbWFsLAotICAg
ICAgICBPY3RhbE9ySGV4LAotICAgICAgICBPY3RhbCwKLSAgICAgICAgSGV4LAotICAgIH07Ci0g
ICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93bkJhc2U7Ci0gICAgQ2hlY2tlZDx1aW50MzJf
dCwgUmVjb3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsKLSAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkg
JiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQ
aWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgp
KSB7Ci0gICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7Ci0gICAgICAgICAg
ICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgKytpdGVyYXRvcjsK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICgqaXRlcmF0b3Ig
PT0gJy4nKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAg
c3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpVbmtub3duQmFzZToKLSAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0b3IgPT0gJzAnKSkgewotICAgICAgICAgICAgICAg
ICsraXRlcmF0b3I7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6T2N0YWxPckhleDsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkRlY2ltYWw7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0
ZTo6T2N0YWxPckhleDoKLSAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7
Ci0gICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09ICd4JyB8fCAqaXRlcmF0b3IgPT0gJ1gnKSB7
Ci0gICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpIZXg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFN0YXRlOjpEZWNpbWFsOgotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKml0ZXJh
dG9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFy
c2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICAgICAgICAgIHZhbHVlICo9IDEwOwotICAgICAgICAg
ICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZh
bHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVy
YXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpPY3RhbDoKLSAg
ICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAgICAgICAgaWYg
KCppdGVyYXRvciA8ICcwJyB8fCAqaXRlcmF0b3IgPiAnNycpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAg
ICAgICAgICB2YWx1ZSAqPSA4OwotICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAn
OwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6
T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFN0YXRlOjpIZXg6Ci0gICAgICAgICAgICBBU1NFUlQoZGlkU2VlU3ludGF4
VmlvbGF0aW9uKTsKLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KCppdGVyYXRvcikp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdF
cnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgICAgICB2YWx1ZSAqPSAxNjsKLSAgICAgICAgICAgIHZh
bHVlICs9IHRvQVNDSUlIZXhWYWx1ZSgqaXRlcmF0b3IpOwotICAgICAgICAgICAgaWYgKFVOTElL
RUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAg
KytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIEFT
U0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0
KCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQ2NF90IHBvdzI1NihzaXplX3QgZXhw
b25lbnQpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhwb25lbnQgPD0gNCk7Ci0gICAgdWludDY0
X3QgdmFsdWVzWzVdID0gezEsIDI1NiwgMjU2ICogMjU2LCAyNTYgKiAyNTYgKiAyNTYsIDI1NnVs
bCAqIDI1NiAqIDI1NiAqIDI1NiB9OwotICAgIHJldHVybiB2YWx1ZXNbZXhwb25lbnRdOwotfQot
Ci1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvciB7Ci0gICAgRmFpbHVyZSwK
LSAgICBOb3RJUHY0LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5
bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVjdGVkPFVSTFBhcnNl
cjo6SVB2NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpw
YXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50
YXhWaW9sYXRpb24+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uLCBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBWZWN0b3I8RXhwZWN0
ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiwgND4gaXRlbXM7
Ci0gICAgYm9vbCBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSBmYWxzZTsKLSAgICBpZiAoIWl0ZXJh
dG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIHdoaWxlICghaXRlcmF0b3Iu
YXRFbmQoKSkgewotICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkgewotICAg
ICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICsraXRl
cmF0b3I7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXRl
bXMuc2l6ZSgpID49IDQpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBh
cnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAgIGl0ZW1zLmFwcGVuZChwYXJzZUlQdjRQaWVj
ZShpdGVyYXRvciwgZGlkU2VlU3ludGF4VmlvbGF0aW9uKSk7Ci0gICAgICAgIGlmICghaXRlcmF0
b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICArK2l0ZXJhdG9y
OwotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAg
ICAgICAgZWxzZSBpZiAoKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpIHx8ICFpdGVtcy5zaXplKCkgfHwgaXRlbXMu
c2l6ZSgpID4gNCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJy
b3I6Ok5vdElQdjQpOwotICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAg
ICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFy
c2luZ0Vycm9yOjpGYWlsdXJlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQ
djRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0
ZW0gOiBpdGVtcykgewotICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJv
cigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCi0gICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgfQotICAg
IGlmIChpdGVtcy5zaXplKCkgPiAxKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aXRlbXMuc2l6ZSgpIC0gMTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoaXRlbXNbaV0udmFsdWUo
KSA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNp
bmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGl0ZW1zW2l0ZW1z
LnNpemUoKSAtIDFdLnZhbHVlKCkgPj0gcG93MjU2KDUgLSBpdGVtcy5zaXplKCkpKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0KLSAg
ICBpZiAoZGlkU2VlU3ludGF4VmlvbGF0aW9uKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRl
cmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBp
dGVtIDogaXRlbXMpIHsKLSAgICAgICAgaWYgKGl0ZW0udmFsdWUoKSA+IDI1NSkKLSAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsK
LSAgICB9Ci0KLSAgICBpZiAoVU5MSUtFTFkoaXRlbXMuc2l6ZSgpICE9IDQpKQotICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0KLSAg
ICBJUHY0QWRkcmVzcyBpcHY0ID0gaXRlbXMudGFrZUxhc3QoKS52YWx1ZSgpOwotICAgIGZvciAo
c2l6ZV90IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgaXRlbXMuc2l6ZSgpOyArK2NvdW50ZXIpCi0g
ICAgICAgIGlwdjQgKz0gaXRlbXNbY291bnRlcl0udmFsdWUoKSAqIHBvdzI1NigzIC0gY291bnRl
cik7Ci0gICAgcmV0dXJuIGlwdjQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1zdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5z
aWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0g
ICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgdWludDMyX3QgcGllY2UgPSAwOwotICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7Ci0g
ICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOwotICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkg
ewotICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgKytkaWdpdENvdW50OwotICAgICAgICBpZiAoIXBp
ZWNlICYmICppdGVyYXRvciA9PSAnMCcpIHsKLSAgICAgICAgICAgIGlmIChsZWFkaW5nWmVyb3Mp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGxlYWRp
bmdaZXJvcyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0
b3IgPT0gJzAnKQotICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgcGll
Y2UgPSBwaWVjZSAqIDEwICsgKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICBpZiAocGllY2UgPiAy
NTUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlPENo
YXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAg
ICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYg
KCppdGVyYXRvciA9PSAnLicpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKHBp
ZWNlICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBy
ZXR1cm4gcGllY2U7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGQ6
Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRk
cmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3Ip
Ci17Ci0gICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCA0OyArK2kpIHsKLSAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBpZWNl
ID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKLSAgICAgICAgICAgIGFkZHJl
c3MgPSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZhbHVlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmIChpIDwgMykgewotICAgICAg
ICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4nKQotICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5
cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAgICAgfSBlbHNl
IGlmICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgfQotICAgIEFTU0VSVChpdGVyYXRvci5hdEVuZCgpKTsKLSAgICByZXR1cm4gYWRkcmVz
czsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0ZDo6b3B0aW9uYWw8
VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCi17Ci0gICAgQVNTRVJUKCpjID09ICdbJyk7Ci0g
ICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBjOwotICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsK
LSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
SVB2NkFkZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19OwotICAgIHNp
emVfdCBwaWVjZVBvaW50ZXIgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb21wcmVz
c1BvaW50ZXI7Ci0KLSAgICBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgIGFkdmFuY2UoYywgaG9z
dEJlZ2luKTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgICAgIGlmICgqYyAhPSAnOicpCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7Ci0gICAgICAgICsrcGll
Y2VQb2ludGVyOwotICAgICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7Ci0gICAg
fQotICAgIAotICAgIHdoaWxlICghYy5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChwaWVjZVBvaW50
ZXIgPT0gOCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICgq
YyA9PSAnOicpIHsKLSAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJl
Z2luKTsKLSAgICAgICAgICAgICsrcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29tcHJlc3NQ
b2ludGVyID0gcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50ZXIgJiYgcGll
Y2VQb2ludGVyIDwgNikpIHsKLSAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPElQdjRBZGRy
ZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPT0gNSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNl
UG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgPj4gMTY7Ci0gICAgICAgICAgICAgICAg
YWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpICYgMHhGRkZGOwot
ICAgICAgICAgICAgICAgIGMgPSB7IH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdWludDE2X3QgdmFsdWUgPSAwOwotICAgICAgICBz
aXplX3QgbGVuZ3RoID0gMDsKLSAgICAgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKLSAg
ICAgICAgZm9yICg7IGxlbmd0aCA8IDQ7IGxlbmd0aCsrKSB7Ci0gICAgICAgICAgICBpZiAoYy5h
dEVuZCgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJ
SGV4RGlnaXQoKmMpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGlz
QVNDSUlVcHBlcigqYykpCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdp
bik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJzAnICYmICFsZW5ndGgpCi0gICAgICAgICAgICAg
ICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgKiAweDEw
ICsgdG9BU0NJSUhleFZhbHVlKCpjKTsKLSAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2lu
KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKFVOTElLRUxZKCh2YWx1ZSAmJiBs
ZWFkaW5nWmVyb3MpIHx8ICghdmFsdWUgJiYgbGVuZ3RoID4gMSkpKQotICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIr
K10gPSB2YWx1ZTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDggfHwgKmMgIT0gJzonKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwotICAg
IH0KLSAgICAKLSAgICBpZiAoIWMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICAKLSAgICBpZiAoY29tcHJlc3NQb2ludGVyKSB7Ci0gICAgICAgIHNpemVfdCBzd2Fw
cyA9IHBpZWNlUG9pbnRlciAtIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpOwotICAgICAgICBwaWVj
ZVBvaW50ZXIgPSA3OwotICAgICAgICB3aGlsZSAoc3dhcHMpCi0gICAgICAgICAgICBzdGQ6OnN3
YXAoYWRkcmVzc1twaWVjZVBvaW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2ludGVyLnZhbHVl
KCkgKyBzd2Fwcy0tIC0gMV0pOwotICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9IDgpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
cG9zc2libGVDb21wcmVzc1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNz
KTsKLSAgICBpZiAocG9zc2libGVDb21wcmVzc1BvaW50ZXIpCi0gICAgICAgIHBvc3NpYmxlQ29t
cHJlc3NQb2ludGVyLnZhbHVlKCkrKzsKLSAgICBpZiAoVU5MSUtFTFkoY29tcHJlc3NQb2ludGVy
ICE9IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKSkKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhv
c3RCZWdpbik7Ci0gICAgCi0gICAgcmV0dXJuIGFkZHJlc3M7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+Ci1VUkxQYXJzZXI6OkxDaGFyQnVmZmVyIFVSTFBhcnNlcjo6cGVy
Y2VudERlY29kZShjb25zdCBMQ2hhciogaW5wdXQsIHNpemVfdCBsZW5ndGgsIGNvbnN0IENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBv
c2l0aW9uKQotewotICAgIExDaGFyQnVmZmVyIG91dHB1dDsKLSAgICBvdXRwdXQucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07Ci0gICAgICAg
IGlmIChieXRlICE9ICclJykKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKLSAg
ICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4
RGlnaXQoaW5wdXRbaSArIDJdKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihp
dGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICBvdXRw
dXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kg
KyAyXSkpOwotICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG91dHB1dDsKLX0KLSAgICAKLVVSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2Vy
OjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAg
ICBMQ2hhckJ1ZmZlciBvdXRwdXQ7Ci0gICAgb3V0cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bGVuZ3RoKTsKLSAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGlucHV0W2ldOwotICAgICAgICBpZiAoYnl0ZSAhPSAn
JScpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOwotICAgICAgICBl
bHNlIGlmIChsZW5ndGggPiAyICYmIGkgPCBsZW5ndGggLSAyKSB7Ci0gICAgICAgICAgICBpZiAo
aXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kg
KyAyXSkpIHsKLSAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlI
ZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgICAgIGkg
Kz0gMjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNr
ZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hl
Y2tlZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OkxDaGFy
QnVmZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25z
dCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9s
YXRpb25Qb3NpdGlvbikKLXsKLSAgICBMQ2hhckJ1ZmZlciBhc2NpaTsKLSAgICBpZiAoZG9tYWlu
LmlzQWxsQVNDSUkoKSkgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gZG9tYWluLmxlbmd0aCgp
OwotICAgICAgICBpZiAoZG9tYWluLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBMQ2hh
ciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAgYXNjaWku
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShp
c0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICAg
ICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAgIGFzY2lp
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
aXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICAg
ICAgICAgIGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhc2NpaTsKLSAgICB9
Ci0gICAgCi0gICAgY29uc3Qgc2l6ZV90IG1heERvbWFpbkxlbmd0aCA9IDY0OwotICAgIFVDaGFy
IGhvc3RuYW1lQnVmZmVyW21heERvbWFpbkxlbmd0aF07Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9
IFVfWkVST19FUlJPUjsKLSAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9J
TkZPX0lOSVRJQUxJWkVSOwotICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVp
ZG5hX25hbWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwgU3Ry
aW5nVmlldyhkb21haW4pLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBkb21haW4ubGVuZ3RoKCks
IGhvc3RuYW1lQnVmZmVyLCBtYXhEb21haW5MZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVy
cm9yKTsKLSAgICBBU1NFUlQobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA8PSBzdGF0aWNfY2FzdDxp
bnQzMl90PihtYXhEb21haW5MZW5ndGgpKTsKLQotICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYm
ICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKLSAgICAgICAgZm9yIChpbnQzMl90IGkgPSAw
OyBpIDwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsgKytpKSB7Ci0gICAgICAgICAgICBBU1NFUlQo
aXNBU0NJSShob3N0bmFtZUJ1ZmZlcltpXSkpOwotICAgICAgICAgICAgQVNTRVJUKCFpc0FTQ0lJ
VXBwZXIoaG9zdG5hbWVCdWZmZXJbaV0pKTsKLSAgICAgICAgfQotICAgICAgICBhc2NpaS5hcHBl
bmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAgICBpZiAo
ZG9tYWluICE9IFN0cmluZ1ZpZXcoYXNjaWkuZGF0YSgpLCBhc2NpaS5zaXplKCkpKQotICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24p
OwotICAgICAgICByZXR1cm4gYXNjaWk7Ci0gICAgfQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IFVS
TFBhcnNlcjo6TENoYXJCdWZmZXImIGFzY2lpRG9tYWluKQotewotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXNjaWlEb21haW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGlzRm9yYmlk
ZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbltpXSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCppdGVyYXRvciA9PSAnOicp
OwotICAgIGF1dG8gY29sb25JdGVyYXRvciA9IGl0ZXJhdG9yOwotICAgIGFkdmFuY2UoaXRlcmF0
b3IsIGNvbG9uSXRlcmF0b3IpOwotICAgIHVpbnQzMl90IHBvcnQgPSAwOwotICAgIGlmIChVTkxJ
S0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0g
Y3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAg
ICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHN5bnRheFZpb2xh
dGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHNp
emVfdCBkaWdpdENvdW50ID0gMDsKLSAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOwotICAg
IGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBpZiAoVU5M
SUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkgewotICAgICAgICAgICAgaWYg
KCppdGVyYXRvciA9PSAnMCcgJiYgIWRpZ2l0Q291bnQpCi0gICAgICAgICAgICAgICAgbGVhZGlu
Z1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgICsrZGlnaXRDb3VudDsKLSAgICAgICAgICAgIHBv
cnQgPSBwb3J0ICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7Ci0gICAgICAgICAgICBpZiAocG9ydCA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIGlmIChwb3J0ICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgIAotICAgIGlmICghcG9ydCAmJiBkaWdpdENvdW50
ID4gMSkKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotCi0gICAgQVNT
RVJUKHBvcnQgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKLSAgICBpZiAoVU5MSUtF
TFkoZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVt
ZUVuZCkpID09IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSkpCi0gICAgICAgIHN5bnRheFZp
b2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICBlbHNlIHsKLSAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignOicpOwotICAgICAgICBBU1NFUlQocG9ydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQxNl90Pjo6bWF4KCkpOwotICAgICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVp
bnQxNl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOwotICAgIH0KLQotICAgIHVuc2ln
bmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0
RW5kOwotICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3Ro
KTsKLSAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwotICAgIHJldHVybiB0cnVl
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6
OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0
b3IpCi17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICgqaXRlcmF0b3IgPT0gJ1snKSB7Ci0gICAgICAgIGF1dG8gaXB2NkVuZCA9IGl0ZXJhdG9yOwot
ICAgICAgICB3aGlsZSAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCAhPSAnXScpCi0gICAg
ICAgICAgICArK2lwdjZFbmQ7Ci0gICAgICAgIGlmIChpcHY2RW5kLmF0RW5kKCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjZI
b3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGl0ZXJhdG9yLCBpcHY2RW5kKSkp
IHsKLSAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjYoYWRkcmVzcy52YWx1ZSgpKTsKLSAgICAgICAg
ICAgIGlmICghaXB2NkVuZC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZShpcHY2
RW5kKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCA9
PSAnOicpIHsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBv
c2l0aW9uKGlwdjZFbmQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGlw
djZFbmQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBjdXJyZW50UG9zaXRpb24oaXB2NkVuZCk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9w
b3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5k
KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdXJsSXNTcGVjaWFsKSB7Ci0gICAgICAgIGZvciAo
OyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRm9yYmlkZGVuSG9zdENvZGVQb2lu
dCgqaXRlcmF0b3IpICYmICppdGVyYXRvciAhPSAnJScpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVT
ZXQ+KGl0ZXJhdG9yKTsKLSAgICAgICAgfQotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJy
ZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewot
ICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAg
IH0KLSAgICAKLSAgICBpZiAoTElLRUxZKCFtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSkpIHsK
LSAgICAgICAgYXV0byBob3N0SXRlcmF0b3IgPSBpdGVyYXRvcjsKLSAgICAgICAgZm9yICg7ICFp
dGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBpZiAoaXNUYWJPck5l
d2xpbmUoKml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGFkZHJlc3MgPSBwYXJz
ZUlQdjRIb3N0KGhvc3RJdGVyYXRvciwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4o
aG9zdEl0ZXJhdG9yLCBpdGVyYXRvcikpOwotICAgICAgICBpZiAoYWRkcmVzcykgewotICAgICAg
ICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOwotICAgICAgICAgICAgbV91cmwu
bV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGlmIChp
dGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChh
ZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgZm9yICg7IGhvc3RJdGVyYXRvciAhPSBpdGVyYXRvcjsg
Kytob3N0SXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGlu
ZSgqaG9zdEl0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9z
dEl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoKmhvc3RJdGVyYXRvcikpKQotICAg
ICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0SXRlcmF0b3IpOwotICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmhvc3RJdGVyYXRvcikpOwotICAgICAg
ICB9Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7
Ci0gICAgICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4g
cGFyc2VQb3J0KGhvc3RJdGVyYXRvcik7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBj
dXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgICAgICBSRUxF
QVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICAKLSAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGl0ZXJhdG9yOwotICAgIAotICAg
IExDaGFyQnVmZmVyIHV0ZjhFbmNvZGVkOwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsg
KytpdGVyYXRvcikgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJh
dG9yKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJKCppdGVy
YXRvcikpKQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAg
ICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUigqaXRlcmF0b3IpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKLSAgICAgICAg
aW50MzJfdCBvZmZzZXQgPSAwOwotICAgICAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zm
c2V0LCAqaXRlcmF0b3IpOwotICAgICAgICB1dGY4RW5jb2RlZC5hcHBlbmQoYnVmZmVyLCBvZmZz
ZXQpOwotICAgIH0KLSAgICBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNv
ZGUodXRmOEVuY29kZWQuZGF0YSgpLCB1dGY4RW5jb2RlZC5zaXplKCksIGhvc3RCZWdpbik7Ci0g
ICAgU3RyaW5nIGRvbWFpbiA9IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgp
LCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotICAgIGlmIChkb21haW4uaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcocGVyY2VudERl
Y29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpKQotICAgICAgICBzeW50YXhWaW9s
YXRpb24oaG9zdEJlZ2luKTsKLSAgICBhdXRvIGFzY2lpRG9tYWluID0gZG9tYWluVG9BU0NJSSgq
ZG9tYWluLmltcGwoKSwgaG9zdEJlZ2luKTsKLSAgICBpZiAoIWFzY2lpRG9tYWluIHx8IGhhc0Zv
cmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlEb21haW4udmFsdWUoKSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW5WYWx1ZSA9IGFzY2lpRG9tYWlu
LnZhbHVlKCk7Ci0gICAgY29uc3QgTENoYXIqIGFzY2lpRG9tYWluQ2hhcmFjdGVycyA9IGFzY2lp
RG9tYWluVmFsdWUuZGF0YSgpOwotCi0gICAgYXV0byBhZGRyZXNzID0gcGFyc2VJUHY0SG9zdCho
b3N0QmVnaW4sIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPihhc2NpaURvbWFpblZhbHVlLmJlZ2lu
KCksIGFzY2lpRG9tYWluVmFsdWUuZW5kKCkpKTsKLSAgICBpZiAoYWRkcmVzcykgewotICAgICAg
ICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmIChpdGVyYXRvci5hdEVu
ZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRv
cik7Ci0gICAgfQotICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6
RmFpbHVyZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihhc2NpaURvbWFpbkNoYXJhY3RlcnMsIGFzY2lpRG9tYWluVmFsdWUuc2l6ZSgpKTsKLSAgICBt
X3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgIGlmICghaXRl
cmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RkOjpvcHRp
b25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQot
ewotICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7Ci0gICAgaWYg
KHV0ZjguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBw
ZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotfQot
Ci0vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsZW5jb2RlZC1wYXJz
ZXIKLWF1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQp
IC0+IFVSTEVuY29kZWRGb3JtCi17Ci0gICAgVVJMRW5jb2RlZEZvcm0gb3V0cHV0OwotICAgIGZv
ciAoU3RyaW5nVmlldyBieXRlcyA6IGlucHV0LnNwbGl0KCcmJykpIHsKLSAgICAgICAgYXV0byBl
cXVhbEluZGV4ID0gYnl0ZXMuZmluZCgnPScpOwotICAgICAgICBpZiAoZXF1YWxJbmRleCA9PSBu
b3RGb3VuZCkgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy50
b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFtZSkKLSAg
ICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygp
IH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERl
Y29kZShieXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcr
JywgMHgyMCkpOwotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGZvcm1VUkxEZWNvZGUoYnl0ZXMu
c3Vic3RyaW5nKGVxdWFsSW5kZXggKyAxKS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7
Ci0gICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSkKLSAgICAgICAgICAgICAgICBvdXRwdXQu
YXBwZW5kKHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52YWx1ZSgpIH0pOwotICAgICAgICB9Ci0gICAg
fQotICAgIHJldHVybiBvdXRwdXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHNlcmlhbGl6ZVVSTEVuY29k
ZWRGb3JtKGNvbnN0IFN0cmluZyYgaW5wdXQsIFZlY3RvcjxMQ2hhcj4mIG91dHB1dCkKLXsKLSAg
ICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOwotICAgIGNvbnN0IGNo
YXIqIGRhdGEgPSB1dGY4LmRhdGEoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHV0Zjgu
bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBjb25zdCBjaGFyIGJ5dGUgPSBkYXRhW2ldOwotICAg
ICAgICBpZiAoYnl0ZSA9PSAweDIwKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgweDJCKTsK
LSAgICAgICAgZWxzZSBpZiAoYnl0ZSA9PSAweDJBCi0gICAgICAgICAgICB8fCBieXRlID09IDB4
MkQKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgyRQotICAgICAgICAgICAgfHwgKGJ5dGUgPj0g
MHgzMCAmJiBieXRlIDw9IDB4MzkpCi0gICAgICAgICAgICB8fCAoYnl0ZSA+PSAweDQxICYmIGJ5
dGUgPD0gMHg1QSkKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHg1RgotICAgICAgICAgICAgfHwg
KGJ5dGUgPj0gMHg2MSAmJiBieXRlIDw9IDB4N0EpKSAvLyBGSVhNRTogUHV0IHRoZXNlIGluIHRo
ZSBjaGFyYWN0ZXJDbGFzc1RhYmxlIHRvIGF2b2lkIGJyYW5jaGVzLgotICAgICAgICAgICAgb3V0
cHV0LmFwcGVuZChieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcGVyY2VudEVuY29k
ZUJ5dGUoYnl0ZSwgb3V0cHV0KTsKLSAgICB9Ci19Ci0gICAgCi1TdHJpbmcgVVJMUGFyc2VyOjpz
ZXJpYWxpemUoY29uc3QgVVJMRW5jb2RlZEZvcm0mIHR1cGxlcykKLXsKLSAgICBpZiAodHVwbGVz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3RvcjxMQ2hhcj4gb3V0
cHV0OwotICAgIGZvciAoYXV0byYgdHVwbGUgOiB0dXBsZXMpIHsKLSAgICAgICAgaWYgKCFvdXRw
dXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgnJicpOwotICAgICAgICBz
ZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS5rZXksIG91dHB1dCk7Ci0gICAgICAgIG91dHB1
dC5hcHBlbmQoJz0nKTsKLSAgICAgICAgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0odHVwbGUudmFs
dWUsIG91dHB1dCk7Ci0gICAgfQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUob3V0
cHV0KSk7Ci19Ci0KLWNvbnN0IFVJRE5BJiBVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21haW5O
YW1lVHJhbnNjb2RlcigpCi17Ci0gICAgc3RhdGljIFVJRE5BKiBlbmNvZGVyOwotICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10gewotICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgICAgICAv
LyBXYXJuaW5nOiBQbGVhc2UgY29udGFjdCBhIFdlYktpdEdUSysgZGV2ZWxvcGVyIGlmIGNoYW5n
aW5nIHRoZXNlIGZsYWdzLgotICAgICAgICAvLyBUaGV5IHNob3VsZCBiZSBzeW5jZWQgd2l0aCBl
cGh5X3VyaV9kZWNvZGUoKSBpbiBlcGh5LXVyaS1oZWxwZXJzLmMuCi0gICAgICAgIGVuY29kZXIg
PSB1aWRuYV9vcGVuVVRTNDYoVUlETkFfQ0hFQ0tfQklESSB8IFVJRE5BX0NIRUNLX0NPTlRFWFRK
IHwgVUlETkFfTk9OVFJBTlNJVElPTkFMX1RPX1VOSUNPREUgfCBVSUROQV9OT05UUkFOU0lUSU9O
QUxfVE9fQVNDSUksICZlcnJvcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFVfU1VDQ0VTUyhl
cnJvcikpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmNvZGVyKTsKLSAgICB9KTsKLSAgICBy
ZXR1cm4gKmVuY29kZXI7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbChjb25z
dCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVkICVkICVk
ICVkICVkICVkICVzIiwKLSAgICAgICAgYS5tX2lzVmFsaWQsCi0gICAgICAgIGEubV9jYW5ub3RC
ZUFCYXNlVVJMLAotICAgICAgICBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKLSAgICAgICAg
YS5tX3NjaGVtZUVuZCwKLSAgICAgICAgYS5tX3VzZXJTdGFydCwKLSAgICAgICAgYS5tX3VzZXJF
bmQsCi0gICAgICAgIGEubV9wYXNzd29yZEVuZCwKLSAgICAgICAgYS5tX2hvc3RFbmQsCi0gICAg
ICAgIGEubV9ob3N0RW5kICsgYS5tX3BvcnRMZW5ndGgsCi0gICAgICAgIGEubV9wYXRoQWZ0ZXJM
YXN0U2xhc2gsCi0gICAgICAgIGEubV9wYXRoRW5kLAotICAgICAgICBhLm1fcXVlcnlFbmQsCi0g
ICAgICAgIGEubV9zdHJpbmcudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgYi5tX2lzVmFsaWQsCi0g
ICAgICAgIGIubV9jYW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBiLm1fcHJvdG9jb2xJc0luSFRU
UEZhbWlseSwKLSAgICAgICAgYi5tX3NjaGVtZUVuZCwKLSAgICAgICAgYi5tX3VzZXJTdGFydCwK
LSAgICAgICAgYi5tX3VzZXJFbmQsCi0gICAgICAgIGIubV9wYXNzd29yZEVuZCwKLSAgICAgICAg
Yi5tX2hvc3RFbmQsCi0gICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5ndGgsCi0gICAg
ICAgIGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGIubV9wYXRoRW5kLAotICAgICAg
ICBiLm1fcXVlcnlFbmQsCi0gICAgICAgIGIubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Ci0KLSAg
ICByZXR1cm4gYS5tX3N0cmluZyA9PSBiLm1fc3RyaW5nCi0gICAgICAgICYmIGEubV9pc1ZhbGlk
ID09IGIubV9pc1ZhbGlkCi0gICAgICAgICYmIGEubV9jYW5ub3RCZUFCYXNlVVJMID09IGIubV9j
YW5ub3RCZUFCYXNlVVJMCi0gICAgICAgICYmIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID09
IGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5Ci0gICAgICAgICYmIGEubV9zY2hlbWVFbmQgPT0g
Yi5tX3NjaGVtZUVuZAotICAgICAgICAmJiBhLm1fdXNlclN0YXJ0ID09IGIubV91c2VyU3RhcnQK
LSAgICAgICAgJiYgYS5tX3VzZXJFbmQgPT0gYi5tX3VzZXJFbmQKLSAgICAgICAgJiYgYS5tX3Bh
c3N3b3JkRW5kID09IGIubV9wYXNzd29yZEVuZAotICAgICAgICAmJiBhLm1faG9zdEVuZCA9PSBi
Lm1faG9zdEVuZAotICAgICAgICAmJiBhLm1fcG9ydExlbmd0aCA9PSBiLm1fcG9ydExlbmd0aAot
ICAgICAgICAmJiBhLm1fcGF0aEFmdGVyTGFzdFNsYXNoID09IGIubV9wYXRoQWZ0ZXJMYXN0U2xh
c2gKLSAgICAgICAgJiYgYS5tX3BhdGhFbmQgPT0gYi5tX3BhdGhFbmQKLSAgICAgICAgJiYgYS5t
X3F1ZXJ5RW5kID09IGIubV9xdWVyeUVuZDsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmludGVybmFs
VmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gdXJsLm1fc2No
ZW1lRW5kIDw9IHVybC5tX3VzZXJTdGFydAotICAgICAgICAmJiB1cmwubV91c2VyU3RhcnQgPD0g
dXJsLm1fdXNlckVuZAotICAgICAgICAmJiB1cmwubV91c2VyRW5kIDw9IHVybC5tX3Bhc3N3b3Jk
RW5kCi0gICAgICAgICYmIHVybC5tX3Bhc3N3b3JkRW5kIDw9IHVybC5tX2hvc3RFbmQKLSAgICAg
ICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGggPD0gdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoCi0gICAgICAgICYmIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSB1cmwubV9w
YXRoRW5kCi0gICAgICAgICYmIHVybC5tX3BhdGhFbmQgPD0gdXJsLm1fcXVlcnlFbmQKLSAgICAg
ICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1fc3RyaW5nLmxlbmd0aCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjViZWIwMjRjOTgwMzIyYTZlMDUzOWE1YmZlODQ3YWU5
MTBjZmFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiVVJM
LmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
LQotc3RydWN0IFVJRE5BOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQb2ludEl0ZXJhdG9yOwotCi1jbGFzcyBVUkxQ
YXJzZXIgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFVSTFBhcnNlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7
Ci0gICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQoY29u
c3QgVVJMJik7Ci0gICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiBVUkxFbmNvZGVkRm9ybTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
VVJMRW5jb2RlZEZvcm0gcGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KTsKLSAgICBzdGF0
aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYpOwotCi0gICAgc3RhdGlj
IGNvbnN0IFVJRE5BJiBpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKLSAgICBz
dGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIpOwotCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgaXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1heWJlQ2Fu
b25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLQotcHJpdmF0ZToKLSAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJp
bmdWaWV3KTsKLSAgICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRG
b3JQcm90b2NvbChTdHJpbmdWaWV3KTsKLQotICAgIFVSTCBtX3VybDsKLSAgICBWZWN0b3I8TENo
YXI+IG1fYXNjaWlCdWZmZXI7Ci0gICAgYm9vbCBtX3VybElzU3BlY2lhbCB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX3VybElzRmlsZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hvc3RIYXNQZXJjZW50
T3JOb25BU0NJSSB7IGZhbHNlIH07Ci0gICAgU3RyaW5nIG1faW5wdXRTdHJpbmc7Ci0gICAgY29u
c3Qgdm9pZCogbV9pbnB1dEJlZ2luIHsgbnVsbHB0ciB9OwotCi0gICAgYm9vbCBtX2RpZFNlZVN5
bnRheFZpb2xhdGlvbiB7IGZhbHNlIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVm
YXVsdElubGluZUJ1ZmZlclNpemUgPSAyMDQ4OwotICAgIHVzaW5nIExDaGFyQnVmZmVyID0gVmVj
dG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT47Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqLCBjb25z
dCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyopOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2VBdXRob3JpdHko
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGJvb2wgcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9v
bCBwYXJzZVBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLQotICAgIHZv
aWQgZmFpbHVyZSgpOwotICAgIGVudW0gY2xhc3MgUmVwb3J0U3ludGF4VmlvbGF0aW9uIHsgTm8s
IFllcyB9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRh
eFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9sYXRpb246
Olllcz4KLSAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
IGl0ZXJhdG9yKSB7IGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgcmVwb3J0U3ludGF4VmlvbGF0aW9u
PihpdGVyYXRvciwgaXRlcmF0b3IpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uID0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXM+
Ci0gICAgdm9pZCBhZHZhbmNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29u
c3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4Vmlv
bGF0aW9uUG9zaXRpb24pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJv
b2wgdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHN5bnRheFZp
b2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNQZXJjZW50RW5jb2RlZERvdChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gYm9vbCBpc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
Ym9vbCBpc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzRG91Ymxl
RG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgc2hvdWxkQ29weUZpbGVVUkwoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IGJvb2wgY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mLCBVQ2hhcjMyKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBib29sIGlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4pOwotICAgIGJvb2wgaXNMb2NhbGhvc3QoU3RyaW5nVmlldyk7Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHZvaWQgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c2l6ZV90IGN1cnJlbnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+IHZvaWQg
YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlKTsKLSAgICB0ZW1w
bGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhR
dWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8TENoYXJCdWZm
ZXI+IGRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2Rl
KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgc3RhdGljIExD
aGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QpOwotICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KTsK
LSAgICBzdGF0aWMgYm9vbCBoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IExDaGFyQnVm
ZmVyJik7Ci0gICAgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90KTsKLSAgICB2b2lkIGFw
cGVuZFRvQVNDSUlCdWZmZXIoVUNoYXIzMik7Ci0gICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVy
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25z
dCBMQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IHNpemUpIHsgYXBwZW5kVG9BU0NJSUJ1ZmZlcihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFyYWN0ZXJzKSwgc2l6ZSk7IH0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGVuY29kZU5vblVURjhRdWVyeShj
b25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYsIENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB2b2lkIGNvcHlBU0NJSVN0cmluZ1Vu
dGlsKGNvbnN0IFN0cmluZyYsIHNpemVfdCBsZW5ndGgpOwotICAgIGJvb2wgY29weUJhc2VXaW5k
b3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJik7Ci0gICAgU3RyaW5nVmlldyBwYXJzZWREYXRhVmll
dyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpOwotICAgIFVDaGFyIHBhcnNlZERhdGFWaWV3
KHNpemVfdCBwb3NpdGlvbik7Ci0KLSAgICB1c2luZyBJUHY0QWRkcmVzcyA9IHVpbnQzMl90Owot
ICAgIHZvaWQgc2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyk7Ci0gICAgZW51bSBjbGFzcyBJUHY0
UGFyc2luZ0Vycm9yOwotICAgIGVudW0gY2xhc3MgSVB2NFBpZWNlUGFyc2luZ0Vycm9yOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24sIHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPElQdjRBZGRyZXNzLCBJUHY0UGFyc2luZ0Vycm9y
PiBwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JT
eW50YXhWaW9sYXRpb24+JiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPHVpbnQzMl90LCBVUkxQ
YXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gcGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBib29sJiBzeW50YXhWaW9sYXRpb24pOwotICAgIHVzaW5n
IElQdjZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2
SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGll
Y2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4g
cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4pOwotICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsKLSAgICB2
b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOwotCi0gICAgZW51bSBjbGFzcyBVUkxQYXJ0
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29weVVSTFBhcnRz
VW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyomKTsKLSAgICBzdGF0aWMgc2l6
ZV90IHVybExlbmd0aFVudGlsUGFydChjb25zdCBVUkwmLCBVUkxQYXJ0KTsKLSAgICB2b2lkIHBv
cFBhdGgoKTsKLSAgICBib29sIHNob3VsZFBvcFBhdGgodW5zaWduZWQpOwotfTsKLQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAppbmRleCA0MTgxZWMxM2JmZjhmNGUyYWE4Mjk1ZTFi
ZmI3ZWZlNTllZDA4MWUzLi5jMzQ0ODQ4NmVlN2MyYWVhY2FhZWJlYmY1YTBlYjcxODNkYzZlZmY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzYsNyArMzYsNiBAQCBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNv
bnN0IFN0cmluZyYgYXBwbGljYQogU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2Vy
QWdlbnRTdHJpbmcoKTsKIFN0cmluZyB1c2VyQWdlbnRCdW5kbGVWZXJzaW9uKCk7CiAjZWxzZQot
Y2xhc3MgVVJMOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBlbXB0eVN0cmluZygpLCBjb25zdCBTdHJpbmcm
IGFwcGxpY2F0aW9uVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCkpOwogV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKaW5kZXggMjMyZTVjZTU3ZGIwNWRiMzhiNDlk
ZDljMDIxYTFiYzk5YzAzODVjYi4uNDliNTg5MjBhN2FlYjc3MzJkNjU3MzI3NTU5MzQ3N2ExODZi
MGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBA
IC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiVXNlckFnZW50UXVpcmtzLmgiCiAKICNpbmNsdWRl
ICJQdWJsaWNTdWZmaXguaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVXNlckFnZW50UXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnRRdWlya3MuaAppbmRleCBiZjEwY2UyMzJkOTFkNDMxYmNiNmQ0YTcxYTUxZGQ0ZGRlOGZiODhh
Li5kYzc3ZDRlODUwZWY5MDlkNGIwMDU2ZDdjOWE3ZTFhZDQ1ZmRkOGVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgVXNlckFnZW50UXVpcmtzIHsK
IHB1YmxpYzoKICAgICBlbnVtIFVzZXJBZ2VudFF1aXJrIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0NGVVJMRXh0cmFzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNi
NDNiYzdhMDdiODBhZTRiYWEzNWZkYjczMzVhYzNiYTc2NDQxNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9D
RlVSTEV4dHJhcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0KLSNpbmNs
dWRlICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCi17Ci0gICAgLy8g
Tk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4g
Y29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKLSAgICAvLyAo
ZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3Qg
dG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgLy8gY291bGQg
ZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNv
ZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjawotICAgIC8vIG9udG8gdXNpbmcg
SVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXN1
bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgs
IGJhc2VVUkwsIHRydWUpKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gYWRv
cHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGJh
c2VVUkwsIHRydWUpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIGdldFVSTEJ5dGVz
KENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQotewotICAgIENGSW5kZXggYnl0
ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7Ci0gICAgcmVzdWx0LnJlc2l6ZShi
eXRlc0xlbmd0aCk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJs
LCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVuZ3RoKTsK
LSAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRlc0xlbmd0
aCk7Ci19Ci0KLXZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiByZXN1bHQp
Ci17Ci0gICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsK
LSAgICBjaGFyKiBieXRlczsKLSAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVk
KGJ5dGVzTGVuZ3RoLCBieXRlcyk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0
Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7
Ci0gICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5n
dGgpOwotfQotCi1ib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25zdCBV
UkwmIHVybCkKLXsKLSAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7Ci0K
LSAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCi0gICAgICAg
IHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsK
LQotICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5dGVz
KTsKLSAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5zaXplKCkp
IH07Ci0KLSAgICBpZiAoIXVybC5oYXNQYXRoKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmdWaWV3
IHsgdXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7Ci0KLSAgICBhdXRvIHVybFdpdGhvdXRQ
YXRoID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwucGF0aFN0
YXJ0KCkgKyAxKTsKLSAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxXaXRob3V0
UGF0aCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NG
VVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmQ1NzA2NjBkYTZhYTk4ZDEyMjg2NDA3OGZl
ZDdkZDZlNzc5ZWY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDRlVSTEV4dHJhc19oCi0j
ZGVmaW5lIENGVVJMRXh0cmFzX2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBVUkw7Ci10eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IFVSTENo
YXJCdWZmZXI7Ci0KLVdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZV
UkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VVUkwgPSAwKTsK
LVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXIm
KTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIENTdHJpbmcmKTsK
LQotYm9vbCBpc0NGVVJMU2FtZU9yaWdpbihDRlVSTFJlZiwgY29uc3QgVVJMJik7Ci0KLX0KLQot
I2VuZGlmIC8vIENGVVJMRXh0cmFzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1VSTENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI2NDFlZDJkOWJlYzEzZDZhMTc3OGY2MzY2
MmY5YjY2N2E5NzFjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkwuaCIK
LQotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+Ci0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6OlVSTChDRlVSTFJl
ZiB1cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUg
YmFzZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHVy
bCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsKLSAg
ICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotI2lmICFVU0UoRk9VTkRBVElPTikKLVJl
dGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17Ci0gICAgLy8gRklY
TUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/Ci0gICAgLy8gQ3Vy
cmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGlu
IHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAotICAgIC8vIHdoaWNoIGlzIGNsZWFybHkgd3Jvbmcu
Ci0gICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0gICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7Ci0g
ICAgYXV0byBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKLQotICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWlzQ0ZV
UkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIGNmVVJMOwotfQotI2VuZGlmCi0KLVN0cmluZyBVUkw6OmZpbGVTeXN0
ZW1QYXRoKCkgY29uc3QKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gY3JlYXRl
Q0ZVUkwoKTsKLSAgICBpZiAoIWNmVVJMKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSNp
ZiBQTEFURk9STShXSU4pCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NGVVJMV2lu
ZG93c1BhdGhTdHlsZTsKLSNlbHNlCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NG
VVJMUE9TSVhQYXRoU3R5bGU7Ci0jZW5kaWYKLSAgICByZXR1cm4gYWRvcHRDRihDRlVSTENvcHlG
aWxlU3lzdGVtUGF0aChjZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IDIxMDZjMmJhOWI4NmFjMDIwYjQwNzAxMGU5MTMy
MzliZDQyNTkwZWYuLmE0ZTc2MmU3ODYzOWRkNmM2M2NjMjZlODY5NzA5YTU5N2NhNDEwOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXJfaAotI2RlZmluZSBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcl9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGVudEZpbHRlci5oIgogI2luY2x1
ZGUgPG9iamMvTlNPYmpDUnVudGltZS5oPgpAQCAtMzksOCArMzgsNiBAQCBPQkpDX0NMQVNTIE5T
RGF0YTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ29udGVudEZp
bHRlciB7CiAgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4o
KTsKIApAQCAtNjksNSArNjYsMyBAQCBjbGFzcyBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCBlOTQ0MWZmY2RlYjg2ZTYyOGJiZTU0
ZjdjOTY1ZDg2NjgwNjExNDU1Li5kZTFkYWRiYjkzYmRlMmFmZmIwMmQzYjY2OWJiYmIwYTdkYWFi
YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAj
aW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTkVGaWx0ZXJTb3Vy
Y2VTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogI2ltcG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIFNPRlRfTElOS19G
UkFNRVdPUktfT1BUSU9OQUwoTmV0d29ya0V4dGVuc2lvbik7CkBAIC0xMTgsNyArMTE4LDcgQEAg
dm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY28KIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RVUkwgeyBV
UkwoKSwgbW9kaWZpZWRSZXF1ZXN0VVJMU3RyaW5nLmdldCgpIH07CiAgICAgaWYgKCFtb2RpZmll
ZFJlcXVlc3RVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAi
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQg
VVJMIHN0cmluZyAlQCB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVzdFVSTFN0
cmluZy5nZXQoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQgVVJMIHN0cmluZyAl
QCB0byBhICBVUkwuXG4iLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcuZ2V0KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL1NTTEtleUdlbmVyYXRvckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TU0xLZXlHZW5lcmF0b3JHTGliLmNwcAppbmRleCA5NDUwNmY1N2E0NzVlMWVjNTY3ZmI2OGZk
Y2FkYjRkMjBjMjJmMmJmLi40MWY0OGQ3MTYxZTdmMjk2NWMxNTU4NWZmMDA4ZmMyOTMwOTJjMzkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NTTEtleUdlbmVyYXRv
ckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU1NMS2V5R2VuZXJh
dG9yR0xpYi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGli
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5k
ZXggMTYyMWE4ODVlODcwNGNhODQ4MzIwZjYyNTFjMDZmOTIxYjE4OWQ4OC4uYTNiYTRlNDZkYzI4
Mzk1ZDg1MmNlOGZiNjhjNzBiNTc5OWUyNzcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50LmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJVc2VyQWdlbnRRdWlya3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCiAjaWYgT1MoVU5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuY3BwCmluZGV4IGIwY2E0M2Q1NWM0NWNiNTBk
NzMwZjg5MmUxN2Q4MDg2OWNjZDQ5NjEuLmQzNWViMTZiYTUyYWQwM2YwN2E0ZWZlZDA0MWJmYmU4
ODQwMzM2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRUYWdnZWRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFRhZ2dlZFNldHRpbmdzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5ncy5oIgogCisjaW5jbHVkZSA8d3Rm
L0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNDk3ZDJjNzlmZDJjYjA4ZmMz
ZDBjY2JmOGY4ZWEyMjczYzQzMTAxYy4uYWU4YTkzZjRmMWE0ODhjZWFiOGIzMWI0ODVjYmFhOGIy
Yjg1YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTY1LDYgKzY1LDEyIEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciBV
SW50ODsKICNlbmRpZgogI2VuZGlmCiAKKy8vIFgxMSBoZWFkZXIgZGVmaW5lcyAiTm9uZSIgYXMg
Y29uc3RhbnQgaW4gbWFjcm8gYW5kIGJyZWFrZXMgdGhlIFBhaW50SW52YWxpZGF0aW9uUmVhc29u
cyBlbnVtJ3MgIk5vbmUiLgorLy8gQXMgYSB3b3JrYXJvdW5kLCB3ZSBleHBsaWNpdGx5IHVuZGVm
IFgxMSdzIE5vbmUgaGVyZS4KKyNpZiBkZWZpbmVkKE5vbmUpCisjdW5kZWYgTm9uZQorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShXSU5HREkpCkBAIC04NSw3ICs5MSw2
IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIGNsYXNzIEltYWdlQnVm
ZmVyOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFJvdW5kZWRSZWN0OwotY2xhc3MgVVJMOwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBQYXRoOwogY2xhc3MgVGV4dFJ1bjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBkNmIwYzY1ZmJmNTdk
OWM3ZGVhMTk2MDgwMjliYzJhNjAxNDU3OGIxLi5iYzM4OTE0NDg5ZTMyZDMyOGE1NGQ0MjFlNTdk
YjdmMzE1OGYzM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
Y3BwCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDVmMjIwYmU0ZWYwNmYzZmMxZTc5MzQ5
ZmRlYjMzMGVkOTFlNzRhYzkuLjFlMzBmMzQ2OWU0YWI3OTg0NDE0YzJiZmQ4ZmFlNjRlMThhMDBh
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtNjgsNyAr
NjgsNiBAQCBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHRJbXBsOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogc3Ry
dWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1hZ2Ug
Y3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNlcyBh
bmltYXRpb24gZnJhbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VPYnNlcnZlci5oCmluZGV4IDgyNjljYzRlZGMzN2NlNWY0ZGMxNjVmYmQ0ZDYxYzM2OThh
NDI3ZmUuLmYyODMyM2MyNTViMWQwYTAxNDM1MWM5MzQyNzNkYTAxYzVhZjg1YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTIz
LDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgSW1hZ2VPYnNlcnZl
cl9oCi0jZGVmaW5lIEltYWdlT2JzZXJ2ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJ
bWFnZVR5cGVzLmgiCiAKQEAgLTMyLDcgKzMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBJbWFnZTsKIGNsYXNzIEludFJlY3Q7Ci1jbGFzcyBVUkw7CiAKIC8vIEludGVyZmFjZSBm
b3Igbm90aWZpY2F0aW9uIGFib3V0IGNoYW5nZXMgdG8gYW4gaW1hZ2UsIGluY2x1ZGluZyBkZWNv
ZGluZywKIC8vIGRyYXdpbmcsIGFuZCBhbmltYXRpbmcuCkBAIC01NCw1ICs1MiwzIEBAIGNsYXNz
IEltYWdlT2JzZXJ2ZXIgewogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA0ODhmOTQ1ZmRjM2QwMDBk
YmZhYTMzN2Q0NjVlNWZiMmVmYWFiNDM4Li5mZDRhMWZlMmRkODdiZjljMDhlY2FiYjEwZjNlZjM3
NDI5NGIxODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJJbWFnZURlY29kZXIu
aCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRl
IDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaAppbmRleCAwOTAxMDEyMjk5ZWJjNDFjMmNhODRlMTllOTUxZTAyNDc4ODY5NThlLi45
ODBkNjBlZTUwZDUwYmMyNmEwMDMwNWUwM2U1MWI0ZDQ0Y2M5ZTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM4LDcgKzM4LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEltYWdlU291
cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiB7CiAgICAgZnJp
ZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKaW5kZXggNDYyYTcyNjYwNTg0NzEyM2U4N2I3NDk1NWY0ZjE2OGZm
ODJmYTZmMC4uMDYwMTQ2ZDNhYzcxMGZlMWM0ZDc4YTMwODEwNjkzYmJmYThiMTFjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MCw3
ICs0MCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5jcHAKaW5kZXggNTkxNWE3NzMxNmVkOGEwMzBhNGU2ZDNhZDc0MTA0YzE3OGNh
ZDlkMi4uM2UxZDI3MGU2NGU3ODVkYWE3MTk1NWRkNGFhZmU0MDMyZjllYjY1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAK
QEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1UaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5l
cy5oPgpAQCAtNDksNiArNDgsNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0
cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGU4MjQ0OWE1
MGZjYzhlOWI4MTdmYzc3ZTJhYTNhMDE5NWY2YTEyMjYuLjFkYmM1Y2Q4OGE3YTA4YTUwYzM5OTlh
MDAyZWU0N2I3NWYyMWY3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtNDUsOSArNDUsOSBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FM
YXllcldpbi5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8cGFsL2F2Zm91
bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
ICNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkNGUGxheWVySXRlbS5oPgogI2lmIEhBVkUoQVZG
T1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpp
bmRleCA3ZDQ5ZDRlMTBjOWU1MTY1YmNlYWUyNTE2M2Q5NmFkYWFmYmQ3YzFiLi42ZTQxMTdlNWVh
MzlhOGUwOWVmYzVkOTE0NDhmNzY2ZjVhYWUzYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
QEAgLTU5LDcgKzU5LDYgQEAKICNpbXBvcnQgIlRleHRFbmNvZGluZy5oIgogI2ltcG9ydCAiVGV4
dFRyYWNrUmVwcmVzZW50YXRpb24uaCIKICNpbXBvcnQgIlRleHR1cmVDYWNoZUNWLmgiCi0jaW1w
b3J0ICJVUkwuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMuaCIK
ICNpbXBvcnQgIlZpZGVvVGV4dHVyZUNvcGllckNWLmgiCiAjaW1wb3J0ICJWaWRlb1RyYWNrUHJp
dmF0ZUFWRk9iakMuaCIKQEAgLTgxLDYgKzgwLDcgQEAKICNpbXBvcnQgPHd0Zi9MaXN0SGFzaFNl
dC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmpl
Y3RQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKaW5kZXggNWY4NTcwYjEyMTcwNWE2YmE5MTUwNmUzMWJlZDk3ZjY0Nzg4Y2Y2Zi4uNzZiZWYw
NzNkOTcyZWMxNzA3MjBkNmRlZTJhZTkwMDFmM2EyNmU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lmIFVTRShDQUlSTykKIAogI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYmQyYTczYTM0
ZmFhMWRiZTE1OTIyZWMzYjFjMTFhZDExYjU2ZjY1Ny4uNjhlYzMxZWRkYTBkYTkwZWY4MTYxYjg5
NjdjNDc0OGE4MDMwMjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBA
CiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjk3MDNlMjFl
YjIxNTcwZjEwM2U1NDJiNWU1NDQzYWIzODY4OWU3NC4uYzUzM2EyZGU0M2IwY2IyMTg2NzMwMmVm
ODYwODhiYzRmNjM2YThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5o
IgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC00Nyw2ICs0Niw3
IEBACiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9H
VW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRS5jcHAKaW5kZXggNGYxZjhhYjAzOGI3ODMzYmVhZTI4OTBhMmNhZTQ1NTk4ZGZiMmE3Ni4u
ZDE1YzJhNTBkNzJjNTNlM2EwOTVlMDYyYjFjMzQwOWZlZWYyNmQ1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAt
MzksNyArMzksNiBAQAogI2luY2x1ZGUgIlBsYXliYWNrUGlwZWxpbmUuaCIKICNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgi
CiAKICNpbmNsdWRlIDxmbm1hdGNoLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
SGFzaC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGY3YmQ0NzczYmZkNWM1NjdlODAxZmIwNzE3OGViOGZkODYxYjdkNDAu
Ljk2OWE0MjI0NDJlNTgzZDNlZDFhZjdjZmU0M2QyOWU0MmFhOWViNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFT
b3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02MzUsNyAr
NjM1LDcgQEAgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFTcmNTZXRVcmkoR3N0VVJJSGFuZGxlciogaGFu
ZGxlciwgY29uc3QgZ2NoYXIqIHVyaSwgR0Vycm9yKioKICAgICAgICAgcmV0dXJuIFRSVUU7CiAg
ICAgfQogCi0gICAgV2ViQ29yZTo6VVJMIHVybChXZWJDb3JlOjpVUkwoKSwgdXJpKTsKKyAgICBV
UkwgdXJsKFVSTCgpLCB1cmkpOwogCiAgICAgcHJpdi0+bG9jYXRpb24gPSBHVW5pcXVlUHRyPGdj
aGFyPihnX3N0cmR1cCh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdTVF9PQkpF
Q1RfVU5MT0NLKHNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09WVFRDdWUuY3BwCmluZGV4IGQwM2Y1ZjdmY2VhM2M4ZjE3Mzc3MTZhNDM1Zjll
NjY2MDEyYTVmMTguLjllYzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQyODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
Y3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiSVNPVlRUQ3VlLmgiCiAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RGF0YVZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogdXNpbmcgSlNDOjpEYXRhVmlldzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHAKaW5kZXggNWVhY2UxMDg4NjY3YzIyOWI1YWZjMzllYzkzNjg3ZTBkNDVhNTJmYi4uNDQ4
MTczMTU3NWFlNDA5NDk1NGM3Njk1ZmRkNzVlN2EwNTVjOGFiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDxkMmQxZWZmZWN0
cy5oPgogI2luY2x1ZGUgPGR3cml0ZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI3ByYWdt
YSB3YXJuaW5nIChkaXNhYmxlIDogNDc1NikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRHJhZ0ltYWdlR3RrLmNwcAppbmRleCAzM2Y0ZmUzYTQyZjA1ZjJkNmI5M2RiMGZhZGE4Nzg0
M2U5YjcwMjY4Li5mN2QxODRmNjdlOGFjMzU2NTUzMzUxNTNlMWNlNTU4YWUxOGU5N2UxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAtMjMsOSAr
MjMsOSBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5j
bHVkZSAiVGV4dEluZGljYXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGNhaXJv
Lmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAKaW5kZXggYTRhYjYxMGE3M2ZmMWFjOTE0OTBkZGMyMDA4YzQ4OGQ0MmM5MDBmMC4u
NzFhMDBhMzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjcsOCArMjcsOCBAQAog
I2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRl
Z2llcy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBmMzA4YzJiYjdlNTM2OTFkYTM0YzZl
YmQwYjM0ZWQxMWJlYjJmYjY0Li44MTQzZmFmYzM3YzFiYzQ4YTRjMGRlOGRmMTA5NmQ3MjM4ZTY1
MDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0
ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Q
YXN0ZWJvYXJkR3RrLmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmRI
ZWxwZXIuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBkYTUxZGEwOWFkMTI3NDhjZjc5YTUwZjZj
MzM0OTllNTBhYTM1Yzg3Li4xYjg1OGVmOWRlZTU3YzIwNmJhM2UwYzczYWFkOGE4NjY5NmI4MjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTE5
LDkgKzE5LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA5ZjY5MTRlYzQ4MWYxZGNhYWRhNzVkZjk2ZDFkNTcw
MjU1ZmY3MTUyLi40ZDY2OWYwMWExMzU5ZGE4YTQ3MzQ1ZWMzYzMyN2FkYjIzOWE5OTdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMzUsMTAg
KzM1LDEwIEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAi
VVJMLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVT
ZXJ2aWNlcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCiBAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoTlNBdHRyaWJ1dGVkU3Ry
aW5nS2l0QWRkaXRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZGE3ZjYyMTc3YWM4NTk2MDUzMTAxYjViODkx
ODJlMDIxYTliMjZkYy4uZDdhZDQyNWRhYWI0NmY4MWI2OTk5Mzk4NzgzY2MyNTFmZTgyYmRiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCkBAIC0zMiw5ICszMiw3IEBACiAjaW1wb3J0ICJJbWFnZS5oIgogI2ltcG9ydCAi
UGFzdGVib2FyZC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJVUkwuaCIK
ICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgi
CiAjaW1wb3J0ICJXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0IDxNb2JpbGVD
b3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUNvbG9y
Lmg+CkBAIC00NCw2ICs0Miw4IEBACiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgog
I2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjZGVmaW5lIFBBU1RFQk9BUkRfU1VQ
UE9SVFNfSVRFTV9QUk9WSURFUlMgKFBMQVRGT1JNKElPUykgJiYgIShQTEFURk9STShXQVRDSE9T
KSB8fCBQTEFURk9STShBUFBMRVRWKSkpCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdl
KQogICAgIGF1dG8mIHBhc3RlYm9hcmRVUkwgPSBwYXN0ZWJvYXJkSW1hZ2UudXJsOwogICAgIGlm
IChOU1VSTCAqbnNVUkwgPSBwYXN0ZWJvYXJkVVJMLnVybCkgewogI2lmIE5TVVJMX1NVUFBPUlRT
X1RJVExFCi0gICAgICAgIG5zVVJMLl90aXRsZSA9IHBhc3RlYm9hcmRVUkwudGl0bGUuaXNFbXB0
eSgpID8gdXNlclZpc2libGVTdHJpbmcocGFzdGVib2FyZFVSTC51cmwpIDogKE5TU3RyaW5nICop
cGFzdGVib2FyZFVSTC50aXRsZTsKKyAgICAgICAgbnNVUkwuX3RpdGxlID0gcGFzdGVib2FyZFVS
TC50aXRsZS5pc0VtcHR5KCkgPyBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRVUkwu
dXJsKSA6IChOU1N0cmluZyAqKXBhc3RlYm9hcmRVUkwudGl0bGU7CiAjZW5kaWYKICAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0Om5zVVJMXTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29r
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgKaW5kZXggNDlkODEx
ZDUxNDBjOGZkMGFmMDE2MjlkOGQwYzFjOWU5ZTk5NGYxNy4uMGE2ZWZhZWYzZTg2MWVmNTlmZDQy
ODljZWY5MTFjNzc4ZGE3MGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xv
b2suaApAQCAtMzUsOCArMzUsNiBAQCBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIFdFQkNPUkVfRVhQT1JUIE5TU2V0ICpRTFBy
ZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChO
U1VSTCAqLCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0YSAqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBkY2U3MzMzMWU3N2E4NzQ2OGI2NzExN2M0
MzRiNGIwYjgyMzJhOWViLi43MTZjMzY2NmI5YzRiY2U3MTM2MWY0YzA1MzgxZGMzYTlhM2JkMTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0zNiw2
ICszNiw3IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgorI2lt
cG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1w
b3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CkBAIC0yMTAsNyAr
MjExLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgLy8gRklY
TUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdlIGtub3cgLVtO
U1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxsIHRoZSBzYW1l
IGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRpbmcgYW4gTlNV
UkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0gICAgICAgIHJldHVybiB1c2VyVmlzaWJsZVN0cmlu
ZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsKKyAgICAgICAgcmV0dXJuIFdURjo6dXNl
clZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CiAKICAgICAvLyBG
SVhNRTogV1RGIHNob3VsZCBvZmZlciBhIG5vbi1NYWMtc3BlY2lmaWMgd2F5IHRvIGNvbnZlcnQg
c3RyaW5nIHRvIHByZWNvbXBvc2VkIGZvcm0gc28gd2UgY2FuIGRvIGl0IGZvciBhbGwgcGxhdGZv
cm1zLgogICAgIHJldHVybiBbKE5TU3RyaW5nICopc3RyaW5nIHByZWNvbXBvc2VkU3RyaW5nV2l0
aENhbm9uaWNhbE1hcHBpbmddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1h
Z2VNYWMubW0KaW5kZXggMjAxY2IzMzhiYmQ3ZGM3NTNiMzM1YTMwMDYyYzJiOTEyNmIxMTk0OS4u
OWQ4YmI4N2Y5YmUxN2JhMzU3MjQ3ZTA1NjljZTQ2NWZhNjY2YzFkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC00MSwxMiArNDEsMTIgQEAKICNp
bXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlN0cmluZ1RydW5jYXRvci5oIgogI2ltcG9ydCAiVGV4
dEluZGljYXRvci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJLaXROU0ltYWdlRXh0
cmFzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9VUkxG
b3JtYXR0aW5nU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2lmICFIQVZFKFVSTF9GT1JNQVRUSU5HKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09Q
VElPTkFMKExpbmtQcmVzZW50YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9G
aWxlU3lzdGVtTWFjLm1tCmluZGV4IDA3MWQwYzkxMTc3OTRlNjAzOGQ5OGFhZDU2ZmU5NmZmOGY0
ODE1MzMuLjhlZDc1MWE3ZWMwZTVkMGJhZjc3NGY5ODYxMGFjYjA0NWNkMmIwMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCkBAIC0yOCw4ICsyOCw4
IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5o
IgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2Nv
YS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRh
ZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHIK
IHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVz
ZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJsU3RyaW5n
ID0gdXNlclZpc2libGVTdHJpbmcoVVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOworICAgICAg
ICB1cmxTdHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1vdmluZ1Vz
ZXJJbmZvKHVybCkpOwogICAgIGVsc2UKICAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRhdGFVUkxT
dHJpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
aW5kZXggM2MzNjdkYTQ4NDBjMGU0MmQzYTRhOTVjNzA2MTE1NTk2MTEzNDc2Mi4uOGE1YzI3NGNh
NjRjMzkwMjAwN2U4NzQ2YTQzZjViZmMzNjBkZGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTM3LDcgKzM3LDYgQEAKICNpbXBvcnQgIlBs
YXRmb3JtUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1w
b3J0ICJTaGFyZWRCdWZmZXIuaCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVVRJVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQg
PHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC00NSw2ICs0NCw3IEBACiAjaW1wb3J0
IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2ltcG9ydCA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVy
TmFtZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdy
aXRlci5tbQppbmRleCA2YTI4ZmU2MmFjZWNkNTcyNjU4ZDAzM2QwY2Q5YzFhYzMxZWUwZTNkLi4w
ZmU1MDVkZTU1YzY2MTY0OGYwNTlkYTliN2ZhZTJhMDc3ZmM2MjNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtNjMsMTAgKzYzLDEw
IEBAIFJldGFpblB0cjxpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4+IGNyZWF0ZVBhc3RlYm9hcmRX
cml0ZXIoY29uc3QgUGFzdGVib2FyZFdyaXRlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
YXV0byYgdXJsID0gZGF0YS51cmwoKSkgewotICAgICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmwt
PnVybDsKLSAgICAgICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nID0gdXJsLT51c2VyVmlz
aWJsZUZvcm07Ci0gICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IChOU1N0cmluZyAqKXVybC0+dGl0
bGU7CisgICAgaWYgKGF1dG8mIHVybERhdGEgPSBkYXRhLnVybERhdGEoKSkgeworICAgICAgICBO
U1VSTCAqY29jb2FVUkwgPSB1cmxEYXRhLT51cmw7CisgICAgICAgIE5TU3RyaW5nICp1c2VyVmlz
aWJsZVN0cmluZyA9IHVybERhdGEtPnVzZXJWaXNpYmxlRm9ybTsKKyAgICAgICAgTlNTdHJpbmcg
KnRpdGxlID0gKE5TU3RyaW5nICopdXJsRGF0YS0+dGl0bGU7CiAgICAgICAgIGlmICghdGl0bGUu
bGVuZ3RoKSB7CiAgICAgICAgICAgICB0aXRsZSA9IGNvY29hVVJMLnBhdGgubGFzdFBhdGhDb21w
b25lbnQ7CiAgICAgICAgICAgICBpZiAoIXRpdGxlLmxlbmd0aCkKQEAgLTc0LDcgKzc0LDcgQEAg
UmV0YWluUHRyPGlkIDxOU1Bhc3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2FyZFdyaXRl
cihjb25zdCBQYXN0ZWJvYXJkV3JpdGUKICAgICAgICAgfQogCiAgICAgICAgIC8vIFdlYlVSTHNX
aXRoVGl0bGVzUGJvYXJkVHlwZS4KLSAgICAgICAgYXV0byBwYXRocyA9IGFkb3B0TlMoW1tOU0Fy
cmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6QFsgQFsgY29jb2FVUkwuYWJzb2x1dGVTdHJpbmcg
XSBdLCBAWyB1cmwtPnRpdGxlLnN0cmlwV2hpdGVTcGFjZSgpIF0sIG5pbF0pOworICAgICAgICBh
dXRvIHBhdGhzID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpAWyBA
WyBjb2NvYVVSTC5hYnNvbHV0ZVN0cmluZyBdIF0sIEBbIHVybERhdGEtPnRpdGxlLnN0cmlwV2hp
dGVTcGFjZSgpIF0sIG5pbF0pOwogICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0UHJvcGVydHlM
aXN0OnBhdGhzLmdldCgpIGZvclR5cGU6dG9VVEkoQCJXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5
cGUiKS5nZXQoKV07CiAKICAgICAgICAgLy8gTlNVUkxQYm9hcmRUeXBlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXgg
YjFkZmZiNmNiN2U2NDI1NzQxYmQwYzZjMGU1M2I0ZWZkY2ZkYjE3MS4uMGNiMWRkOGI5MzBhMDY1
YjdjMDgwMTVjYTJlMGNlNWRiZDViMmI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0zMiwxMCArMzIsMTAgQEAK
ICNpbXBvcnQgIkNvbG9yTWFjLmgiCiAjaW1wb3J0ICJMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5o
IgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJTaGFy
ZWRCdWZmZXIuaCIKICNpbXBvcnQgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2ltcG9ydCA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCmluZGV4IDIzMDM4MTdmM2IyMTRmYWM1NGZl
MGY0ZTI2ZDA0OTMzM2I1MTA0MzUuLjAxOTZiNDE2ZWQ0MjViMTcwMGViY2U5YzBiYzFkYzhiNjYz
MTM4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZm
aXhNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1h
Yy5tbQpAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkK
IAotI2ltcG9ydCAiVVJMLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBv
cnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1w
b3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02Myw3ICs2Myw3IEBAIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGNvbnN0
IFN0cmluZyYgZG9tYWluKQogCiBTdHJpbmcgZGVjb2RlSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBk
b21haW4pCiB7Ci0gICAgcmV0dXJuIGRlY29kZUhvc3ROYW1lKChOU1N0cmluZyAqKShkb21haW4p
KTsKKyAgICByZXR1cm4gV1RGOjpkZWNvZGVIb3N0TmFtZShkb21haW4pOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQppbmRl
eCBmYzQwYWExOWIwNGMzYWUzNDcxODAyNzYzZjdkZjM4OWE3MjI4YzlkLi5iZDlkYTBkZDg2YWNj
ZDFkODRhNmMzZmVkYTBiNDEyYTI2YWRmNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KQEAgLTI5LDEzICsyOSwxMyBAQAogI2lm
IFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2ltcG9ydCAi
VVJMLmgiCiAjaW1wb3J0IDxTZWN1cml0eS9TZWNBc24xQ29kZXIuaD4KICNpbXBvcnQgPFNlY3Vy
aXR5L1NlY0FzbjFUZW1wbGF0ZXMuaD4KICNpbXBvcnQgPFNlY3VyaXR5L1NlY0VuY29kZVRyYW5z
Zm9ybS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
I2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvVVJMTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjVjMWRl
N2IwMjgzY2QwZGJkYmE1NmNhMTZmYWZjNWYzOWM1OGI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxN
YWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiVVJMLmgiCi0KLSNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJVUkxQYXJz
ZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgotI2ltcG9ydCA8d3RmL09iamNS
dW50aW1lRXh0cmFzLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLUBpbnRlcmZh
Y2UgTlNTdHJpbmcgKFdlYkNvcmVOU1VSTEV4dHJhcykKLS0gKEJPT0wpX3dlYl9sb29rc0xpa2VJ
UEFkZHJlc3M7Ci1AZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwoTlNVUkwg
KnVybCkKLXsKLSAgICBpZiAoIXVybCkgewotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBi
YXNlIFVSTCBoZXJlPwotICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXMoKF9f
YnJpZGdlIENGVVJMUmVmKXVybCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJzZXIodXJs
Qnl0ZXMuZGF0YSgpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotVVJMOjpv
cGVyYXRvciBOU1VSTCAqKCkgY29uc3QKLXsKLSAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBi
cmlkZ2VkIENGVVJMIGJlY2F1c2UgY3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdvdWxkIG5v
dCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5nLgotICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxp
dHkgd2hlbiByb3VuZC10cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgotICAgIHJldHVybiBj
cmVhdGVDRlVSTCgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKLX0KLQotUmV0YWluUHRyPENGVVJM
UmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICAvLyBX
ZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3Jl
YXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KLSAg
ICAgICAgcmV0dXJuIChfX2JyaWRnZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGlu
aXRXaXRoU3RyaW5nOkAiIl0pLmdldCgpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gY2ZVUkw7Ci0KLSAgICAvLyBGYXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMgOC1iaXQg
dG8gYXZvaWQgY29weWluZyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KLSAgICBpZiAoTElLRUxZ
KG1fc3RyaW5nLmlzOEJpdCgpKSkKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZm
ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSks
IG1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gU2xvd2VyIHBhdGgu
Ci0gICAgICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOwotICAgICAgICBjb3B5VG9CdWZmZXIoYnVm
ZmVyKTsKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgfQotCi0gICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSAmJiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gY2ZVUkw7Ci19Ci0KLWJvb2wgVVJMOjpob3N0
SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewotICAgIHJldHVybiBbaG9zdC5jcmVhdGVO
U1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkgX3dlYl9sb29rc0xpa2VJUEFkZHJlc3NdOwot
fQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5T
VVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0
cmFzLmgKaW5kZXggZmUxMDY4MTM0NWY1N2YzZjQxZjRkMGRhNzJjZTYxNjFkYmIwNjk0OC4uMWMw
NzMyOWJlOWViYjZmYjBhMjNjNWQyN2NkYTgwMmM0ZTgwMWUxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaApAQCAtMjYsMjkgKzI2LDEw
IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLUBjbGFzcyBOU1N0cmluZzsKIEBjbGFzcyBOU1VSTDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqdXNlclZp
c2libGVTdHJpbmcoTlNVUkwgKik7CiBXRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlDYW5vbmlj
YWxpemluZ1VSTChOU1VSTCAqKTsKLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxXaXRoVXNlclR5
cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsgLy8gUmV0dXJuIHZhbHVlIG9m
IG5pbCBtZWFucyBlcnJvci4KLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeVJlbW92aW5nVXNl
ckluZm8oTlNVUkwgKik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGhvc3ROYW1lTmVlZHNEZWNvZGlu
Z1dpdGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlLCBCT09MKiBlcnJvcik7Ci1XRUJDT1JFX0VY
UE9SVCBCT09MIGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqLCBOU1Jh
bmdlLCBCT09MKiBlcnJvcik7Ci1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2RlSG9zdE5h
bWVXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwg
bWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWVXaXRo
UmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMg
ZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcg
Kik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBO
U1N0cmluZyAqZW5jb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBu
aWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25l
Q2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICosIENGVVJMQ29tcG9uZW50VHlwZSk7Ci1X
RUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICosIE5TVVJMICpiYXNlVVJM
KTsKLVdFQkNPUkVfRVhQT1JUIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOwotV0VC
Q09SRV9FWFBPUlQgTlNEYXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAqLCBDRlVS
TENvbXBvbmVudFR5cGUpOwotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRT
dHJpbmdEZXByZWNhdGVkKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsKLQotTlNSYW5nZSBy
YW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBpc1VzZXJW
aXNpYmxlVVJMKE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBsb29rc0xpa2VBYnNv
bHV0ZVVSTChOU1N0cmluZyAqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KaW5kZXggY2Ux
Yzk1NjNiMGI1OWNhOTY0NTkzYWM2ZGM5OTdkNGM0NDYwYWEwYi4uMDQ0YzQyOTBkZGZlNWY1MDk4
Mzg5MTgzYThiYjQ5YWU0NzRhODBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBAIC0yNyw3ICsyNyw2IEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJVUkxQYXJzZXIuaCIKICNpbXBvcnQgIldlYkNvcmVO
U1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBv
cnQgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtMzksOTk5ICszOCw4IEBACiAjaW1wb3J0IDx1bmljb2Rl
L3VpZG5hLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KIAotLy8gTmVlZHMgdG8gYmUg
YmlnIGVub3VnaCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCi0vLyBGb3IgaG9zdCBuYW1l
cyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFs
bW9zdCBjZXJ0YWlubHkgT0suCi0jZGVmaW5lIEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RIIDIwNDgK
LSNkZWZpbmUgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEggMjA0OAotCi10eXBlZGVmIHZvaWQgKCog
U3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24pKE5TU3RyaW5nICosIE5TUmFuZ2UsIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4mKTsKLQotc3RhdGljIHVpbnQzMl90IElETlNjcmlwdFdoaXRlTGlz
dFsoVVNDUklQVF9DT0RFX0xJTUlUICsgMzEpIC8gMzJdOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBib29sIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIoVUNoYXIzMiBjb2Rl
UG9pbnQpCi17Ci0gICAgcmV0dXJuIGNvZGVQb2ludCA9PSAweDA1NDggfHwgY29kZVBvaW50ID09
IDB4MDU0RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQb2ludCA9PSAweDA1N0Q7Ci19
Ci0KLXN0YXRpYyBib29sIGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoVUNoYXIzMiBjb2RlUG9p
bnQpCi17Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBVU2NyaXB0
Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjb2RlUG9pbnQsICZlcnJvcik7Ci0gICAg
aWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICBMT0dfRVJST1IoImdvdCBJQ1Ug
ZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBlcnJvcik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NyaXB0ID09IFVTQ1JJUFRf
QVJNRU5JQU47Ci19Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5l
IGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSBjaGFy
Q29kZSkKLXsKLSAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24oY2hhckNvZGUpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGluZ3MgdGhlIFVSTCBQYXJzZXIgcmVq
ZWN0czoKLSAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7Ci0gICAgY2FzZSAnIyc6Ci0gICAgY2FzZSAn
JSc6Ci0gICAgY2FzZSAnLyc6Ci0gICAgY2FzZSAnOic6Ci0gICAgY2FzZSAnPyc6Ci0gICAgY2Fz
ZSAnQCc6Ci0gICAgY2FzZSAnWyc6Ci0gICAgY2FzZSAnXFwnOgotICAgIGNhc2UgJ10nOgotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotfQotCi0KLQotc3RhdGljIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0ZXIoc3RkOjpvcHRp
b25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjaGFyQ29kZSkKLXsKLSAg
ICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVuc2FmZSwgbG9va2Fs
aWtlIGNoYXJhY3RlcnM6Ci0gICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hhcmFjdGVyLCBhbnkg
Y2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKLSAgICAvLyBhbnkgaWdub3JhYmxl
IGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBsb2Nrcy4KLSAgICAK
LSAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4gTW96aWxsYSdzIGJs
YWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklETi5ibGFja2xpc3Rf
Y2hhcnM+LgotCi0gICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVycyBoZXJlIHdpbGwgbmV2ZXIg
YXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgotICAgIC8vIEZvciBleGFtcGxlLCBJQ1UgdHJh
bnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNlIGFuZCBtb3N0Ci0gICAgLy8g
c2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUgb2YgdGhlIHR3byBjYWxsZXJz
IHVzZXMgdGhpcwotICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBoYXZlIG5vdCBiZWVuIHByb2Nl
c3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgotICAgIAotICAgIGlmICghdV9p
c3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hhckNvZGUpIHx8IHVfaGFzQmlu
YXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQp
KQotICAgICAgICByZXR1cm4gWUVTOwotICAgIAotICAgIHN3aXRjaCAoY2hhckNvZGUpIHsKLSAg
ICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUiAqLwotICAg
ICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGICovCi0gICAgICAg
IGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMgKi8KLSAgICAg
ICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUgKi8KLSAg
ICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBSRVRST0ZMRVggQ0xJQ0sgKi8KLSAg
ICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBBTFBIQSAqLwotICAgICAg
ICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBHICovCi0gICAgICAg
IGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJQU5HVUxBUiBDT0xPTiAqLwotICAg
ICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JUIFNUUk9LRSBPVkVSTEFZICovCi0g
ICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQgU09MSURVUyBPVkVSTEFZICov
Ci0gICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9WRVJMQVkg
Ki8KLSAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZVTEwgU1RPUCAqLwotICAgICAg
ICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICovCi0gICAgICAgIGNhc2UgMHgw
NUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRICovCi0gICAgICAgIGNhc2UgMHgw
NUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRICovCi0gICAgICAgIGNhc2UgMHgw
NUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICovCi0gICAgICAgIGNhc2UgMHgw
NjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2
MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJR04gKi8KLSAgICAgICAgY2Fz
ZSAweDA2NTA6IC8qIEFSQUJJQyBLQVNSQSAqLwotICAgICAgICBjYXNlIDB4MDY2MDogLyogQVJB
QklDIElORElDIERJR0lUIFpFUk8gKi8KLSAgICAgICAgY2FzZSAweDA2NkE6IC8qIEFSQUJJQyBQ
RVJDRU5UIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2RDQ6IC8qIEFSQUJJQyBGVUxMIFNUT1Ag
Ki8KLSAgICAgICAgY2FzZSAweDA2RjA6IC8qIEVYVEVOREVEIEFSQUJJQyBJTkRJQyBESUdJVCBa
RVJPICovCi0gICAgICAgIGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMgU1VQUkFMSU5FQVIgRlVMTCBT
VE9QICovCi0gICAgICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMgU1VCTElORUFSIEZVTEwgU1RP
UCAqLwotICAgICAgICBjYXNlIDB4MDcwMzogLyogU1lSSUFDIFNVUFJBTElORUFSIENPTE9OICov
Ci0gICAgICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJQUMgU1VCTElORUFSIENPTE9OICovCi0gICAg
ICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQVU5DVFVBVElPTiAqLwotICAg
ICAgICBjYXNlIDB4MUQwNDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgQyAqLwotICAg
ICAgICBjYXNlIDB4MUQwRjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTyAqLwotICAg
ICAgICBjYXNlIDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVSAqLwotICAg
ICAgICBjYXNlIDB4MUQyMDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgViAqLwotICAg
ICAgICBjYXNlIDB4MUQyMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVyAqLwotICAg
ICAgICBjYXNlIDB4MUQyMjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgWiAqLwotICAg
ICAgICBjYXNlIDB4MUVDRDogLyogTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1QgQkVMT1cg
Ki8KLSAgICAgICAgY2FzZSAweDIwMTA6IC8qIEhZUEhFTiAqLwotICAgICAgICBjYXNlIDB4MjAx
MTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLwotICAgICAgICBjYXNlIDB4MjAyNDogLyogT05F
IERPVCBMRUFERVIgKi8KLSAgICAgICAgY2FzZSAweDIwMjc6IC8qIEhZUEhFTkFUSU9OIFBPSU5U
ICovCi0gICAgICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBR
VU9UQVRJT04gTUFSSyAqLwotICAgICAgICBjYXNlIDB4MjAzQTogLyogU0lOR0xFIFJJR0hULVBP
SU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHgyMDQxOiAvKiBD
QVJFVCBJTlNFUlRJT04gUE9JTlQgKi8KLSAgICAgICAgY2FzZSAweDIwNDQ6IC8qIEZSQUNUSU9O
IFNMQVNIICovCi0gICAgICAgIGNhc2UgMHgyMDUyOiAvKiBDT01NRVJDSUFMIE1JTlVTIFNJR04g
Ki8KLSAgICAgICAgY2FzZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgVEhJUkQgKi8K
LSAgICAgICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08gVEhJUkRTICovCi0g
ICAgICAgIGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEZJRlRIICovCi0gICAg
ICAgIGNhc2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRIUyAqLwotICAgICAg
ICBjYXNlIDB4MjE1NzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRIUyAqLwotICAgICAg
ICBjYXNlIDB4MjE1ODogLyogVlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhTICovCi0gICAgICAg
IGNhc2UgMHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIICovCi0gICAgICAgIGNh
c2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhUSFMgKi8KLSAgICAgICAgY2Fz
ZSAweDIxNUI6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFQgKi8KLSAgICAgICAgY2FzZSAw
eDIxNUM6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhTICovCi0gICAgICAgIGNhc2Ug
MHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTICovCi0gICAgICAgIGNhc2Ug
MHgyMTVFOiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRIUyAqLwotICAgICAgICBjYXNl
IDB4MjE1RjogLyogRlJBQ1RJT04gTlVNRVJBVE9SIE9ORSAqLwotICAgICAgICBjYXNlIDB4MjIx
MjogLyogTUlOVVMgU0lHTiAqLwotICAgICAgICBjYXNlIDB4MjIxNTogLyogRElWSVNJT04gU0xB
U0ggKi8KLSAgICAgICAgY2FzZSAweDIyMTY6IC8qIFNFVCBNSU5VUyAqLwotICAgICAgICBjYXNl
IDB4MjIzNjogLyogUkFUSU8gKi8KLSAgICAgICAgY2FzZSAweDIzM0Y6IC8qIEFQTCBGVU5DVElP
TkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KLSAgICAgICAgY2FzZSAweDIzQUU6IC8qIElOVEVHUkFM
IEVYVEVOU0lPTiAqLwotICAgICAgICBjYXNlIDB4MjQ0QTogLyogT0NSIERPVUJMRSBCQUNLU0xB
U0ggKi8KLSAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1Mg
TElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLwotICAgICAgICBjYXNl
IDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBVUFBF
UiBMRUZUIFRPIExPV0VSIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyOUY2OiAvKiBTT0xJRFVT
IFdJVEggT1ZFUkJBUiAqLwotICAgICAgICBjYXNlIDB4MjlGODogLyogQklHIFNPTElEVVMgKi8K
LSAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFSWSBSRUxBVElPTiAq
LwotICAgICAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BFUkFUT1IgKi8KLSAg
ICAgICAgY2FzZSAweDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBM
RUZUIFRPIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyRkYxOiAvKiBJREVPR1JBUEhJQyBERVND
UklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KLSAgICAgICAgY2FzZSAweDJGRjI6
IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIE1JRERMRSBBTkQg
UklHSFQgKi8KLSAgICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9O
IENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICovCi0gICAgICAgIGNhc2UgMHgy
RkY0OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVMTCBTVVJST1VORCAq
LwotICAgICAgICBjYXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFD
VEVSIFNVUlJPVU5EIEZST00gQUJPVkUgKi8KLSAgICAgICAgY2FzZSAweDJGRjY6IC8qIElERU9H
UkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJFTE9XICovCi0gICAg
ICAgIGNhc2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VS
Uk9VTkQgRlJPTSBMRUZUICovCi0gICAgICAgIGNhc2UgMHgyRkY4OiAvKiBJREVPR1JBUEhJQyBE
RVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZUICovCi0gICAgICAg
IGNhc2UgMHgyRkY5OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9V
TkQgRlJPTSBVUFBFUiBSSUdIVCAqLwotICAgICAgICBjYXNlIDB4MkZGQTogLyogSURFT0dSQVBI
SUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIgTEVGVCAqLwotICAg
ICAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIE9W
RVJMQUlEICovCi0gICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVPR1JBUEhJQyBGVUxMIFNUT1Ag
Ki8KLSAgICAgICAgY2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUgQlJBQ0tFVCAqLwotICAgICAg
ICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAg
IGNhc2UgMHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAg
IGNhc2UgMHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQUEVSIEhBTEYgKi8K
LSAgICAgICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgTE9XRVIg
SEFMRiAqLwotICAgICAgICBjYXNlIDB4MzIxRDogLyogUEFSRU5USEVTSVpFRCBLT1JFQU4gQ0hB
UkFDVEVSIE9KRU9OICovCi0gICAgICAgIGNhc2UgMHgzMjFFOiAvKiBQQVJFTlRIRVNJWkVEIEtP
UkVBTiBDSEFSQUNURVIgTyBIVSAqLwotICAgICAgICBjYXNlIDB4MzNBRTogLyogU1FVQVJFIFJB
RCBPVkVSIFMgKi8KLSAgICAgICAgY2FzZSAweDMzQUY6IC8qIFNRVUFSRSBSQUQgT1ZFUiBTIFNR
VUFSRUQgKi8KLSAgICAgICAgY2FzZSAweDMzQzY6IC8qIFNRVUFSRSBDIE9WRVIgS0cgKi8KLSAg
ICAgICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9WRVIgTSAqLwotICAgICAgICBjYXNlIDB4
MDVCOTogLyogSEVCUkVXIFBPSU5UIEhPTEFNICovCi0gICAgICAgIGNhc2UgMHgwNUJBOiAvKiBI
RUJSRVcgUE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZBViAqLwotICAgICAgICBjYXNlIDB4MDVDMTog
LyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCi0gICAgICAgIGNhc2UgMHgwNUMyOiAvKiBIRUJS
RVcgUE9JTlQgU0lOIERPVCAqLwotICAgICAgICBjYXNlIDB4MDVDNDogLyogSEVCUkVXIE1BUksg
VVBQRVIgRE9UICovCi0gICAgICAgIGNhc2UgMHhBNzMxOiAvKiBMQVRJTiBMRVRURVIgU01BTEwg
Q0FQSVRBTCBTICovCi0gICAgICAgIGNhc2UgMHhBNzcxOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIg
RFVNICovCi0gICAgICAgIGNhc2UgMHhBNzg5OiAvKiBNT0RJRklFUiBMRVRURVIgQ09MT04gKi8K
LSAgICAgICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBT
RU1JQ09MT04gKi8KLSAgICAgICAgY2FzZSAweEZFMTU6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZP
UiBWRVJUSUNBTCBFWENMQU1BVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHhGRTNGOiAvKiBQ
UkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFDS0VUICovCi0gICAg
ICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8K
LSAgICAgICAgY2FzZSAweEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNL
RVQgKi8KLSAgICAgICAgY2FzZSAweEZGMEU6IC8qIEZVTExXSURUSCBGVUxMIFNUT1AgKi8KLSAg
ICAgICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09MSURVUyAqLwotICAgICAgICBjYXNl
IDB4RkY2MTogLyogSEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwgU1RPUCAqLwotICAgICAgICBj
YXNlIDB4RkZGQzogLyogT0JKRUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAqLwotICAgICAgICBj
YXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCi0gICAgICAgIGNhc2UgMHgx
RjUwRjogLyogTE9DSyBXSVRIIElOSyBQRU4gKi8KLSAgICAgICAgY2FzZSAweDFGNTEwOiAvKiBD
TE9TRUQgTE9DSyBXSVRIIEtFWSAqLwotICAgICAgICBjYXNlIDB4MUY1MTE6IC8qIEtFWSAqLwot
ICAgICAgICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sgKi8KLSAgICAgICAgY2FzZSAweDFGNTEzOiAv
KiBPUEVOIExPQ0sgKi8KLSAgICAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgICAgIGNhc2UgMHgw
MzA3OiAvKiBDT01CSU5JTkcgRE9UIEFCT1ZFICovCi0gICAgICAgICAgICByZXR1cm4gcHJldmlv
dXNDb2RlUG9pbnQgPT0gMHgwMjM3IC8qIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogKi8K
LSAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAxMzEgLyogTEFUSU4g
U01BTEwgTEVUVEVSIERPVExFU1MgSSAqLwotICAgICAgICAgICAgICAgIHx8IHByZXZpb3VzQ29k
ZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExFVFRFUiBWQVYgKi8KLSAgICAgICAgY2FzZSAw
eDA1NDg6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPICovCi0gICAgICAgIGNhc2UgMHgw
NTREOiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUggKi8KLSAgICAgICAgY2FzZSAweDA1
Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLwotICAgICAgICBjYXNlIDB4MDU3RDog
LyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNFSCAqLwotICAgICAgICAgICAgcmV0dXJuIHByZXZp
b3VzQ29kZVBvaW50Ci0gICAgICAgICAgICAgICAgJiYgIWlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0
Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCi0gICAgICAgICAgICAgICAgJiYg
IWlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUoKSk7Ci0g
ICAgICAgIGNhc2UgJy4nOgotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50Ci0gICAgICAgICAgICAgICAg
JiYgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgp
KQotICAgICAgICAgICAgICAgICYmICEoaXNBcm1lbmlhblNjcmlwdENoYXJhY3RlcihjaGFyQ29k
ZSkgfHwgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoY2hhckNvZGUpKTsKLSAgICB9
Ci19Ci0KLXN0YXRpYyB2b2lkIHdoaXRlTGlzdElETlNjcmlwdChjb25zdCBjaGFyKiBzY3JpcHRO
YW1lKQotewotICAgIGludDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9wZXJ0eVZhbHVlRW51bShVQ0hB
Ul9TQ1JJUFQsIHNjcmlwdE5hbWUpOwotICAgIGlmIChzY3JpcHQgPj0gMCAmJiBzY3JpcHQgPCBV
U0NSSVBUX0NPREVfTElNSVQpIHsKLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc2NyaXB0IC8gMzI7
Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7Ci0gICAgICAgIElE
TlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gfD0gbWFzazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBCT09M
IHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpmaWxlbmFtZSkKLXsKLSAgICBp
ZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBGSUxFICpmaWxlID0gZm9w
ZW4oW2ZpbGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICJyIik7Ci0gICAgaWYgKCFm
aWxlKQotICAgICAgICByZXR1cm4gTk87Ci0gICAgCi0gICAgLy8gUmVhZCBhIHdvcmQgYXQgYSB0
aW1lLgotICAgIC8vIEFsbG93IGNvbW1lbnRzLCBzdGFydGluZyB3aXRoICMgY2hhcmFjdGVyIHRv
IHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgLy8gU2tpcCBh
IGNvbW1lbnQgaWYgcHJlc2VudC4KLSAgICAgICAgaWYgKGZzY2FuZihmaWxlLCAiICMlKlteXG5c
cl0lKltcblxyXSIpID09IEVPRikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAg
ICAgLy8gUmVhZCBhIHNjcmlwdCBuYW1lIGlmIHByZXNlbnQuCi0gICAgICAgIGNoYXIgd29yZFsz
M107Ci0gICAgICAgIGludCByZXN1bHQgPSBmc2NhbmYoZmlsZSwgIiAlMzJbXiMgXHRcblxyXSUq
W14jIFx0XG5ccl0gIiwgd29yZCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gRU9GKQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVzdWx0ID09IDEpIHsKLSAgICAg
ICAgICAgIC8vIEdvdCBhIHdvcmQsIG1hcCB0byBzY3JpcHQgY29kZSBhbmQgcHV0IGl0IGludG8g
dGhlIGFycmF5LgotICAgICAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHdvcmQpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGZjbG9zZShmaWxlKTsKLSAgICByZXR1cm4gWUVTOwotfQotCi1zdGF0
aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29uc3QgVUNoYXIgKmJ1
ZmZlciwgaW50MzJfdCBsZW5ndGgpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBmbGFn
OwotICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57Ci0gICAgICAgIC8vIFJlYWQgd2hpdGUgbGlz
dCBmcm9tIGxpYnJhcnkuCi0gICAgICAgIE5TQXJyYXkgKmRpcnMgPSBOU1NlYXJjaFBhdGhGb3JE
aXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxsRG9tYWluc01hc2ss
IFlFUyk7Ci0gICAgICAgIGludCBudW1EaXJzID0gW2RpcnMgY291bnRdOwotICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykgewotICAgICAgICAgICAgaWYgKHJlYWRJRE5T
Y3JpcHRXaGl0ZUxpc3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGNoYXIqIGRlZmF1bHRJRE5T
Y3JpcHRXaGl0ZUxpc3RbMjBdID0gewotICAgICAgICAgICAgIkNvbW1vbiIsCi0gICAgICAgICAg
ICAiSW5oZXJpdGVkIiwKLSAgICAgICAgICAgICJBcmFiaWMiLAotICAgICAgICAgICAgIkFybWVu
aWFuIiwKLSAgICAgICAgICAgICJCb3BvbW9mbyIsCi0gICAgICAgICAgICAiQ2FuYWRpYW5fQWJv
cmlnaW5hbCIsCi0gICAgICAgICAgICAiRGV2YW5hZ2FyaSIsCi0gICAgICAgICAgICAiRGVzZXJl
dCIsCi0gICAgICAgICAgICAiR3VqYXJhdGkiLAotICAgICAgICAgICAgIkd1cm11a2hpIiwKLSAg
ICAgICAgICAgICJIYW5ndWwiLAotICAgICAgICAgICAgIkhhbiIsCi0gICAgICAgICAgICAiSGVi
cmV3IiwKLSAgICAgICAgICAgICJIaXJhZ2FuYSIsCi0gICAgICAgICAgICAiS2F0YWthbmFfT3Jf
SGlyYWdhbmEiLAotICAgICAgICAgICAgIkthdGFrYW5hIiwKLSAgICAgICAgICAgICJMYXRpbiIs
Ci0gICAgICAgICAgICAiVGFtaWwiLAotICAgICAgICAgICAgIlRoYWkiLAotICAgICAgICAgICAg
IllpIiwKLSAgICAgICAgfTsKLSAgICAgICAgZm9yIChjb25zdCBjaGFyKiBzY3JpcHROYW1lIDog
ZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKLSAgICAgICAgICAgIHdoaXRlTGlzdElETlNjcmlw
dChzY3JpcHROYW1lKTsKLSAgICB9KTsKLSAgICAKLSAgICBpbnQzMl90IGkgPSAwOwotICAgIHN0
ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgd2hpbGUgKGkgPCBs
ZW5ndGgpIHsKLSAgICAgICAgVUNoYXIzMiBjOwotICAgICAgICBVMTZfTkVYVChidWZmZXIsIGks
IGxlbmd0aCwgYykKLSAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAg
ICAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQoYywgJmVycm9yKTsK
LSAgICAgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICAgICAgTE9HX0VS
Uk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNjcmlwdHM6ICVkIiwg
ZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICB9Ci0gICAgICAgIGlmIChz
Y3JpcHQgPCAwKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoImdvdCBuZWdhdGl2ZSBudW1iZXIg
Zm9yIHNjcmlwdCBjb2RlIGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7Ci0gICAgICAgICAgICByZXR1
cm4gTk87Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNjcmlwdCA+PSBVU0NSSVBUX0NPREVfTElN
SVQpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0KLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc2Ny
aXB0IC8gMzI7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7Ci0g
ICAgICAgIGlmICghKElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gJiBtYXNrKSkKLSAgICAgICAg
ICAgIHJldHVybiBOTzsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3Rl
cihwcmV2aW91c0NvZGVQb2ludCwgYykpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0gICAgICAg
IHByZXZpb3VzQ29kZVBvaW50ID0gYzsKLSAgICB9Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotc3Rh
dGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBV
Q2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKFVD
aGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKLXsKLSAgICBBU1NFUlQobGVuZ3RoID4gMCk7Ci0K
LSAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAg
IFVDaGFyIGNoID0gYnVmZmVyW2ldOwotICAgICAgICAKLSAgICAgICAgaWYgKGNoYXJhY3Rlcklz
QWxsb3dlZChjaCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8v
IE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExvd2VyIGxldmVsIHJlZ2lzdHJh
cnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgotICAgICAgICBpZiAoY2ggPT0gJy4nKQotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCi0jZGVmaW5lIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRD
SEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKLSAgICB7IFwKLSAgICAgICAgc3RhdGljIGNvbnN0IGlu
dDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yoc3VmZml4WzBdKTsg
XAotICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYmIDAgPT0gbWVtY21wKGJ1ZmZl
ciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXplb2Yoc3VmZml4KSkpIFwKLSAg
ICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVz
KGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlvbik7IFwKLSAgICB9Ci0KLXN0
YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNoYXIgY2gpCi17Ci0gICAg
Ly8gT25seSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxs
b3dlZC4KLSAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09
IDB4MDQ1MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLX0KLQotc3RhdGljIEJP
T0wgYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGlu
dDMyX3QgbGVuZ3RoKQotewotICAgIC8vIFNraXAgdHJhaWxpbmcgZG90IGZvciByb290IGRvbWFp
bi4KLSAgICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFdID09ICcuJykKLSAgICAgICAgbGVuZ3RoLS07
Ci0KLSAgICAvLyBodHRwOi8vY2N0bGQucnUvZmlsZXMvcGRmL2RvY3MvcnVsZXNfcnUtcmYucGRm
Ci0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9IHsKLSAgICAgICAgJy4nLAot
ICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0
NDQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNf
SUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rl
cik7Ci0KLSAgICAvLyBodHRwOi8vcnVzbmFtZXMucnUvcnVsZXMucGwKLSAgICBzdGF0aWMgY29u
c3QgVUNoYXIgY3lyaWxsaWNSVVNbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0NDAs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0NDMsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBVCi0gICAgICAgIDB4MDQ0MSAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IEVTCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1JV
UywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vcnUuZmFp
dGlkLm9yZy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2YS9pZG4KLSAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAw
eDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAweDA0M0UsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEVTCi0gICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0g
ICAgICAgIDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCi0gICAgICAgIDB4MDQz
MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZBLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFj
dGVyKTsKLQotICAgIC8vIGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9mb3J1c2VyL2RvY3MvcmVncnVs
ZXMucGhwCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljREVUSVtdID0gewotICAgICAg
ICAnLicsCi0gICAgICAgIDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCi0gICAg
ICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCi0gICAgICAgIDB4MDQ0Miwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCi0gICAgICAgIDB4MDQzOCAgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEkKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVT
KGN5cmlsbGljREVUSSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBo
dHRwOi8vY29yZW5pYy5vcmcgLSBydWxlcyBub3QgcHVibGlzaGVkLiBUaGUgd29yZCBpcyBSdXNz
aWFuLCBzbyBvbmx5IGFsbG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0aW1lLAotICAgIC8vIGFsdGhv
dWdoIHdlIG1heSBuZWVkIHRvIHJldmlzZSB0aGUgY2hlY2tzIGlmIHRoaXMgZW5kcyB1cCBiZWlu
ZyB1c2VkIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBSdXNzaWEuCi0gICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGN5cmlsbGljT05MQVlOW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAg
MHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0M0QsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgICAgICAweDA0M0IsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBFTAotICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0g
ICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKLSAgICAgICAg
MHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KLSAgICB9OwotICAgIENIRUNLX1JV
TEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT05MQVlOLCBpc1J1c3NpYW5Eb21haW5OYW1l
Q2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHNhbWUgYXMgYWJvdmUu
Ci0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU0FZVFtdID0gewotICAgICAgICAnLics
Ci0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4
MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICAgICAgMHgwNDM5LCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQotICAgICAgICAweDA0NDIgIC8vIENZUklMTElDIFNN
QUxMIExFVFRFUiBURQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMo
Y3lyaWxsaWNTQVlULCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0
dHA6Ly9waXIub3JnL3Byb2R1Y3RzL29wci1kb21haW4vIC0gcnVsZXMgbm90IHB1Ymxpc2hlZC4g
QWNjb3JkaW5nIHRvIHRoZSByZWdpc3RyeSBzaXRlLAotICAgIC8vIHRoZSBpbnRlbmRlZCBhdWRp
ZW5jZSBpcyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xhdmljLXNwZWFraW5nIG1hcmtldHMiLgotICAg
IC8vIENocm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lhbiwgc28gc3RpY2tpbmcgd2l0
aCB0aGF0IGZvciBub3cuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT1JHW10gPSB7
Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
TwotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAw
eDA0MzMgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKLSAgICB9OwotICAgIENIRUNLX1JV
TEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hh
cmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxlcy5odG1sCi0gICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgw
NDMxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICAgICAgMHgwNDM1LCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgSUUKLSAgICAgICAgMHgwNDNCICAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgRUwKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmls
bGljQkVMLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBSdXNzaWFuIGFuZCBCeWVsb3J1c3Np
YW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVy
biAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09
IDB4MDQ1NiB8fCBjaCA9PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5IHx8IGlzQVNDSUlEaWdpdChj
aCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gaHR0cDovL3d3dy5uaWMua3ovZG9j
cy9wb3J5YWRva192bmVkcmVuaXlhX2thel9ydS5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIg
Y3lyaWxsaWNLQVpbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0OUIsIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDA0MzAsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAgICAgIDB4MDQzNyAgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIFpFCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJp
bGxpY0tBWiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gS2F6YWtoIGxldHRlcnMsIGRpZ2l0
cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAm
JiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0RDkgfHwgY2ggPT0g
MHgwNDkzIHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMgfHwgY2ggPT0gMHgwNEU5IHx8
IGNoID09IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0gMHgwNEJCIHx8IGNoID09IDB4
MDQ1NiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8v
IGh0dHA6Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1bGVzJTIwb2YlMjBVS1JfdjQu
MC5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNVS1JbXSA9IHsKLSAgICAgICAg
Jy4nLAotICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCi0gICAgICAg
IDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAgIDB4MDQ0MCAgLy8g
Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZG
SVhfTUFUQ0hFUyhjeXJpbGxpY1VLUiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gUnVzc2lh
biBhbmQgVWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgot
ICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4
MDQ1MSB8fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8IGNoID09IDB4MDQ1NiB8fCBj
aCA9PSAweDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0K
LSAgICAvLyBodHRwOi8vd3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1FTlRJL2lkbi1zcmItcG9saWN5
LXRlcm1zb2Z1c2UtdjEuNC1lbmcucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGlj
U1JCW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgRVMKLSAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIK
LSAgICAgICAgMHgwNDMxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICB9OwotICAg
IENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU1JCLCBbXShVQ2hhciBjaCkg
ewotICAgICAgICAvLyBTZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxv
d2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChj
aCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTIgfHwgY2ggPT0gMHgw
NDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0gMHgwNDVCIHx8IGNo
ID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQot
ICAgIC8vIGh0dHA6Ly9tYXJuZXQubWsvZG9jL3ByYXZpbG5pay1tay1ta2QucGRmCi0gICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTUtEW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAg
MHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KLSAgICAgICAgMHgwNDNBLCAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwNDM0ICAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgREUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5
cmlsbGljTUtELCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBNYWNlZG9uaWFuIGxldHRlcnMs
IGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4
MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8
fCBjaCA9PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1IHx8IGNoID09IDB4MDQ1OCB8fCBjaCA9PSAw
eDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8fCBjaCA9PSAweDA0NUYgfHwg
aXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwczov
L3d3dy5tb24ubW4vY3MvCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTU9OW10gPSB7
Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
RU0KLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAw
eDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgIH07Ci0gICAgQ0hFQ0tfUlVM
RVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT04sIFtdKFVDaGFyIGNoKSB7Ci0gICAgICAg
IC8vIE1vbmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAg
ICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0
NTEgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRBRiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8
IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIE5vdCBhIGtub3duIHRvcCBsZXZlbCBkb21h
aW4gd2l0aCBzcGVjaWFsIHJ1bGVzLgotICAgIHJldHVybiBOTzsKLX0KLQotLy8gUmV0dXJuIHZh
bHVlIG9mIG5pbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1ha2VTdHJp
bmcgaXMgTk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwgb3Igc2VsZiB0byBpbmRp
Y2F0ZSBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1ha2VTdHJpbmcgaXMgWUVTLCB0aGVu
IHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBwZWQgc3RyaW5nLgotc3RhdGlj
IE5TU3RyaW5nICptYXBIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1Jhbmdl
IHJhbmdlLCBCT09MIGVuY29kZSwgQk9PTCBtYWtlU3RyaW5nLCBCT09MICplcnJvcikKLXsKLSAg
ICBpZiAocmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgCi0gICAgVUNoYXIgc291cmNlQnVmZmVyW0hPU1RfTkFNRV9CVUZGRVJfTEVO
R1RIXTsKLSAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NUX05BTUVfQlVGRkVSX0xFTkdU
SF07Ci0gICAgCi0gICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCIlIiBv
cHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24gIT0gTlNOb3RGb3Vu
ZCkgewotICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBzdWJzdHJpbmdXaXRo
UmFuZ2U6cmFuZ2VdOwotICAgICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVS
TENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgKENGU3RyaW5n
UmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7Ci0gICAgICAgIGlmIChzdWJzdHJpbmcpIHsKLSAg
ICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKLSAgICAgICAgICAgIHJhbmdlID0gTlNNYWtl
UmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBp
bnQgbGVuZ3RoID0gcmFuZ2UubGVuZ3RoOwotICAgIFtzdHJpbmcgZ2V0Q2hhcmFjdGVyczpzb3Vy
Y2VCdWZmZXIgcmFuZ2U6cmFuZ2VdOwotICAgIAotICAgIFVFcnJvckNvZGUgdWVycm9yID0gVV9a
RVJPX0VSUk9SOwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9f
SU5JVElBTElaRVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gKGVuY29k
ZSA/IHVpZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5pY29kZSkoJlVSTFBhcnNlcjo6
aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksIHNvdXJjZUJ1ZmZlciwgbGVuZ3Ro
LCBkZXN0aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgsICZwcm9jZXNzaW5n
RGV0YWlscywgJnVlcnJvcik7Ci0gICAgaWYgKGxlbmd0aCAmJiAoVV9GQUlMVVJFKHVlcnJvcikg
fHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkgewotICAgICAgICAqZXJyb3IgPSBZRVM7Ci0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIAotICAgIGlmIChudW1DaGFyYWN0ZXJzQ29u
dmVydGVkID09IGxlbmd0aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZlciwgZGVzdGluYXRpb25CdWZm
ZXIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAot
ICAgIGlmICghZW5jb2RlICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoZGVz
dGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpICYmICFhbGxDaGFyYWN0ZXJz
QWxsb3dlZEJ5VExEUnVsZXMoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0
ZWQpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBtYWtlU3RyaW5nID8g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0aW9uQnVmZmVyIGxlbmd0aDpu
dW1DaGFyYWN0ZXJzQ29udmVydGVkXSA6IHN0cmluZzsKLX0KLQotQk9PTCBob3N0TmFtZU5lZWRz
RGVjb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCAq
ZXJyb3IpCi17Ci0gICAgcmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2Us
IE5PLCBOTywgZXJyb3IpICE9IG5pbDsKLX0KLSAKLUJPT0wgaG9zdE5hbWVOZWVkc0VuY29kaW5n
V2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQot
ewotICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBZRVMsICBO
TywgZXJyb3IpICE9IG5pbDsKLX0KLQotTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdl
KE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5P
OwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5n
ZSwgTk8sIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcgKmVuY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0g
ICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRo
UmFuZ2Uoc3RyaW5nLCByYW5nZSwgWUVTLCBZRVMsICZlcnJvcik7Ci0gICAgaWYgKGVycm9yKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Ci19
Ci0KLU5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQotewotICAgIEJP
T0wgZXJyb3IgPSBOTzsKLSAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdl
KHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgTk8sIFlFUywgJmVycm9y
KTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuICFob3N0
ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5TU3RyaW5n
ICpzdHJpbmcpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0g
bWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0
aF0pLCBZRVMsIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotc3RhdGljIHZvaWQg
Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJh
bmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSwgQk9PTCBlbmNvZGUpCi17Ci0g
ICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0
aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3QgbmVlZCBtYXBwaW5nLgotICAgIC8v
IFRoZXJlZm9yZSwgd2UgdXNlIG5pbCB0byBpbmRpY2F0ZSBubyBtYXBwaW5nIGhlcmUgYW5kIGFu
IGVtcHR5IGFycmF5IHRvIGluZGljYXRlIGVycm9yLgotCi0gICAgQk9PTCBlcnJvciA9IE5POwot
ICAgIEJPT0wgbmVlZHNNYXBwaW5nID0gZW5jb2RlID8gaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0
aFJhbmdlKHN0cmluZywgcmFuZ2UsICZlcnJvcikgOiBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRo
UmFuZ2Uoc3RyaW5nLCByYW5nZSwgJmVycm9yKTsKLSAgICBpZiAoIWVycm9yICYmICFuZWVkc01h
cHBpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIWFycmF5KQotICAgICAgICBh
cnJheSA9IGFkb3B0TlMoW05TTXV0YWJsZUFycmF5IG5ld10pOwotCi0gICAgaWYgKCFlcnJvcikK
LSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1d
OwotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyhOU1N0cmlu
ZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJh
eSkKLXsKLSAgICByZXR1cm4gY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhzdHJpbmcsIHJh
bmdlLCBhcnJheSwgWUVTKTsKLX0KLQotc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVk
RGVjb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiYgYXJyYXkpCi17Ci0gICAgcmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1h
cHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIE5PKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbHlI
b3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywgU3RyaW5n
UmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkp
Ci17Ci0gICAgLy8gSW4gYSBtYWlsdG86IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVyIGEgJ0An
IGNoYXJhY3RlciBhbmQgZW5kIHdpdGggYSAnPicgb3IgJywnIG9yICc/JyBjaGFyYWN0ZXIuCi0g
ICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5ncyBzbyB0aGF0IGNoYXJhY3RlcnMgaW4gdGhlbSBkb24n
dCBjb25mdXNlIHVzLgotICAgIC8vIFdoZW4gd2UgZmluZCBhICc/JyBjaGFyYWN0ZXIsIHdlIGFy
ZSBwYXN0IHRoZSBwYXJ0IG9mIHRoZSBVUkwgdGhhdCBjb250YWlucyBob3N0IG5hbWVzLgotICAg
IAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBo
b3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3Rl
clNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJcIkA/Il07Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3ROYW1lRW5kQ2hhcmFjdGVycyA9
IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiPiw/
Il07Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+
IHF1b3RlZFN0cmluZ0NoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0
aENoYXJhY3RlcnNJblN0cmluZzpAIlwiXFwiXTsKLSAgICAKLSAgICB1bnNpZ25lZCBzdHJpbmdM
ZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07Ci0gICAgTlNSYW5nZSByZW1haW5pbmcgPSBOU01ha2VS
YW5nZSgwLCBzdHJpbmdMZW5ndGgpOwotICAgIAotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIC8v
IEZpbmQgc3RhcnQgb2YgaG9zdCBuYW1lIG9yIG9mIHF1b3RlZCBzdHJpbmcuCi0gICAgICAgIE5T
UmFuZ2UgaG9zdE5hbWVPclN0cmluZ1N0YXJ0ID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJv
bVNldDpob3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6
MCByYW5nZTpyZW1haW5pbmddOwotICAgICAgICBpZiAoaG9zdE5hbWVPclN0cmluZ1N0YXJ0Lmxv
Y2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdW5p
Y2hhciBjID0gW3N0cmluZyBjaGFyYWN0ZXJBdEluZGV4Omhvc3ROYW1lT3JTdHJpbmdTdGFydC5s
b2NhdGlvbl07Ci0gICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoaG9zdE5h
bWVPclN0cmluZ1N0YXJ0KTsKLSAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xlbmd0
aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09ICc/JykK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09ICdAJykgewot
ICAgICAgICAgICAgLy8gRmluZCBlbmQgb2YgaG9zdCBuYW1lLgotICAgICAgICAgICAgdW5zaWdu
ZWQgaG9zdE5hbWVTdGFydCA9IHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAgIE5TUmFu
Z2UgaG9zdE5hbWVFbmQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhvc3ROYW1l
RW5kQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5nXTsKLSAg
ICAgICAgICAgIEJPT0wgZG9uZTsKLSAgICAgICAgICAgIGlmIChob3N0TmFtZUVuZC5sb2NhdGlv
biA9PSBOU05vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgaG9zdE5hbWVFbmQubG9jYXRpb24g
PSBzdHJpbmdMZW5ndGg7Ci0gICAgICAgICAgICAgICAgZG9uZSA9IFlFUzsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gaG9zdE5hbWVF
bmQubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xl
bmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICBkb25lID0gTk87Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFByb2Nlc3MgaG9zdCBu
YW1lIHJhbmdlLgotICAgICAgICAgICAgZihzdHJpbmcsIE5TTWFrZVJhbmdlKGhvc3ROYW1lU3Rh
cnQsIGhvc3ROYW1lRW5kLmxvY2F0aW9uIC0gaG9zdE5hbWVTdGFydCksIGFycmF5KTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKGRvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5nLgotICAg
ICAgICAgICAgQVNTRVJUKGMgPT0gJyInKTsKLSAgICAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAg
ICAgICAgICAgICAgTlNSYW5nZSBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBbc3RyaW5n
IHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OnF1b3RlZFN0cmluZ0NoYXJhY3RlcnMuZ2V0KCkuZ2V0
KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107Ci0gICAgICAgICAgICAgICAgaWYgKGVzY2Fw
ZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBjID0gW3N0cmluZyBjaGFyYWN0
ZXJBdEluZGV4OmVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbl07Ci0gICAgICAg
ICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gTlNNYXhSYW5nZShlc2NhcGVkQ2hhcmFjdGVy
T3JTdHJpbmdFbmQpOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdM
ZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgLy8gSWYgd2UgYXJlIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgdGhlbiBicmVhayBmcm9t
IHRoZSBzdHJpbmcgbG9vcCBiYWNrIHRvIHRoZSBob3N0IG5hbWUgbG9vcC4KLSAgICAgICAgICAg
ICAgICBpZiAoYyA9PSAnIicpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIC8vIFNraXAgZXNjYXBlZCBjaGFyYWN0ZXIuCi0gICAg
ICAgICAgICAgICAgQVNTRVJUKGMgPT0gJ1xcJyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZW1h
aW5pbmcubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
ICAgICByZW1haW5pbmcubG9jYXRpb24gKz0gMTsKLSAgICAgICAgICAgICAgICByZW1haW5pbmcu
bGVuZ3RoIC09IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRp
YyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcs
IFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4m
IGFycmF5KQotewotICAgIC8vIEZpbmQgaG9zdG5hbWVzLiBUb28gYmFkIHdlIGNhbid0IHVzZSBh
bnkgcmVhbCBVUkwtcGFyc2luZyBjb2RlIHRvIGRvIHRoaXMsCi0gICAgLy8gYnV0IHdlIGhhdmUg
dG8gZG8gaXQgYmVmb3JlIGRvaW5nIGFsbCB0aGUgJS1lc2NhcGluZywgYW5kIHRoaXMgaXMgdGhl
IG9ubHkKLSAgICAvLyBjb2RlIHdlIGhhdmUgdGhhdCBwYXJzZXMgbWFpbHRvIFVSTHMgYW55d2F5
LgotICAgIAotICAgIC8vIE1heWJlIHdlIHNob3VsZCBpbXBsZW1lbnQgdGhpcyB1c2luZyBhIGNo
YXJhY3RlciBidWZmZXIgaW5zdGVhZD8KLSAgICAKLSAgICBpZiAocHJvdG9jb2xJcyhzdHJpbmcs
ICJtYWlsdG8iKSkgewotICAgICAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0
cmluZyhzdHJpbmcsIGYsIGFycmF5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAg
ICAvLyBGaW5kIHRoZSBob3N0IG5hbWUgaW4gYSBoaWVyYXJjaGljYWwgVVJMLgotICAgIC8vIEl0
IGNvbWVzIGFmdGVyIGEgIjovLyIgc2VxdWVuY2UsIHdpdGggc2NoZW1lIGNoYXJhY3RlcnMgcHJl
Y2VkaW5nLgotICAgIC8vIElmIGVuZHMgd2l0aCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgYSAi
OiIsICIvIiwgb3IgYSAiPyIuCi0gICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFjdGVyLCB0
aGUgaG9zdCBwYXJ0IGlzIGp1c3QgdGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KLSAgICBOU1Jhbmdl
IHNlcGFyYXRvclJhbmdlID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiOi8vIl07Ci0gICAgaWYg
KHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICAvLyBDaGVjayB0aGF0IGFsbCBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgOi8vIGFy
ZSB2YWxpZCBzY2hlbWUgY2hhcmFjdGVycy4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0
YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gbm9uU2NoZW1lQ2hhcmFjdGVycyA9IFtbTlNDaGFyYWN0
ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIkFCQ0RFRkdISUpLTE1O
T1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky0uIl0gaW52
ZXJ0ZWRTZXRdOwotICAgIGlmIChbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Om5vblNj
aGVtZUNoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAs
IHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uKV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IFtzdHJpbmcgbGVu
Z3RoXTsKLSAgICAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFj
dGVyU2V0Pj4gaG9zdFRlcm1pbmF0b3JzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdp
dGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCI6Lz8jIl07Ci0gICAgCi0gICAgLy8gU3RhcnQgYWZ0ZXIg
dGhlIHNlcGFyYXRvci4KLSAgICB1bnNpZ25lZCBhdXRob3JpdHlTdGFydCA9IE5TTWF4UmFuZ2Uo
c2VwYXJhdG9yUmFuZ2UpOwotICAgIAotICAgIC8vIEZpbmQgdGVybWluYXRpbmcgY2hhcmFjdGVy
LgotICAgIE5TUmFuZ2UgaG9zdE5hbWVUZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9mQ2hhcmFj
dGVyRnJvbVNldDpob3N0VGVybWluYXRvcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5T
TWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBzdHJpbmdMZW5ndGggLSBhdXRob3JpdHlTdGFydCld
OwotICAgIHVuc2lnbmVkIGhvc3ROYW1lRW5kID0gaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9u
ID09IE5TTm90Rm91bmQgPyBzdHJpbmdMZW5ndGggOiBob3N0TmFtZVRlcm1pbmF0b3IubG9jYXRp
b247Ci0gICAgCi0gICAgLy8gRmluZCAiQCIgZm9yIHRoZSBzdGFydCBvZiB0aGUgaG9zdCBuYW1l
LgotICAgIE5TUmFuZ2UgdXNlckluZm9UZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9mU3RyaW5n
OkAiQCIgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBob3N0TmFt
ZUVuZCAtIGF1dGhvcml0eVN0YXJ0KV07Ci0gICAgdW5zaWduZWQgaG9zdE5hbWVTdGFydCA9IHVz
ZXJJbmZvVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8gYXV0aG9yaXR5U3RhcnQg
OiBOU01heFJhbmdlKHVzZXJJbmZvVGVybWluYXRvcik7Ci0gICAgCi0gICAgcmV0dXJuIGYoc3Ry
aW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZCAtIGhvc3ROYW1lU3Rh
cnQpLCBhcnJheSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IG1hcEhvc3ROYW1l
cyhOU1N0cmluZyAqc3RyaW5nLCBCT09MIGVuY29kZSkKLXsKLSAgICAvLyBHZW5lcmFsbHksIHdl
IHdhbnQgdG8gb3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIG9uZSBob3N0IG5h
bWUgdGhhdCBkb2VzIG5vdCBuZWVkIG1hcHBpbmcuCi0gICAgCi0gICAgaWYgKGVuY29kZSAmJiBb
c3RyaW5nIGNhbkJlQ29udmVydGVkVG9FbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddKQot
ICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgIAotICAgIC8vIE1ha2UgYSBsaXN0IG9mIHJhbmdl
cyB0aGF0IGFjdHVhbGx5IG5lZWQgbWFwcGluZy4KLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IGhvc3ROYW1lUmFuZ2VzOwotICAgIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYgPSBl
bmNvZGUgPyBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyA6IGNvbGxlY3RSYW5nZXNUaGF0
TmVlZERlY29kaW5nOwotICAgIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKHN0cmlu
ZywgZiwgaG9zdE5hbWVSYW5nZXMpOwotICAgIGlmICghaG9zdE5hbWVSYW5nZXMpCi0gICAgICAg
IHJldHVybiBzdHJpbmc7Ci0KLSAgICBpZiAoIVtob3N0TmFtZVJhbmdlcyBjb3VudF0pCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgLy8gRG8gdGhlIG1hcHBpbmcuCi0gICAgYXV0byBt
dXRhYmxlQ29weSA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwotICAgIHVuc2lnbmVk
IGkgPSBbaG9zdE5hbWVSYW5nZXMgY291bnRdOwotICAgIHdoaWxlIChpLS0pIHsKLSAgICAgICAg
TlNSYW5nZSBob3N0TmFtZVJhbmdlID0gW1tob3N0TmFtZVJhbmdlcyBvYmplY3RBdEluZGV4Omld
IHJhbmdlVmFsdWVdOwotICAgICAgICBOU1N0cmluZyAqbWFwcGVkSG9zdE5hbWUgPSBlbmNvZGUg
PyBlbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIGhvc3ROYW1lUmFuZ2UpIDogZGVjb2Rl
SG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKTsKLSAgICAgICAgW211dGFi
bGVDb3B5IHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpob3N0TmFtZVJhbmdlIHdpdGhTdHJpbmc6
bWFwcGVkSG9zdE5hbWVdOwotICAgIH0KLSAgICByZXR1cm4gbXV0YWJsZUNvcHk7Ci19Ci0KLXN0
YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKE5TU3Ry
aW5nICpzdHJpbmcpCi17Ci0gICAgYXV0byB0cmltbWVkID0gYWRvcHROUyhbc3RyaW5nIG11dGFi
bGVDb3B5XSk7Ci0gICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoX19icmlkZ2UgQ0ZNdXRhYmxl
U3RyaW5nUmVmKXRyaW1tZWQuZ2V0KCkpOwotICAgIHJldHVybiB0cmltbWVkOwotfQotCi1OU1VS
TCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICpVUkws
IENGVVJMQ29tcG9uZW50VHlwZSBjb21wb25lbnQpCi17Ci0gICAgaWYgKCFVUkwpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCi0gICAgQ0ZSYW5nZSBmcmFnUmcgPSBDRlVSTEdldEJ5dGVSYW5n
ZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIG51bGxwdHIp
OwotICAgIGlmIChmcmFnUmcubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgIHJldHVy
biBVUkw7Ci0KLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiB1cmxC
eXRlcyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBudW1CeXRlcyA9IENG
VVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCB1cmxC
eXRlcy5zaXplKCkpOwotICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBudW1CeXRl
cyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Ci0g
ICAgICAgIHVybEJ5dGVzLmdyb3cobnVtQnl0ZXMpOwotICAgICAgICBDRlVSTEdldEJ5dGVzKChf
X2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOwotICAgIH0K
LQotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVy
bEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCBudWxscHRyKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVh
dGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAx
LCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgIAotICAgIHJl
dHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOwotfQotCi1zdGF0
aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihOU1VSTCAqVVJMKQotewot
ICAgIHJldHVybiBVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoVVJM
LCBrQ0ZVUkxDb21wb25lbnRSZXNvdXJjZVNwZWNpZmllcik7Ci19Ci0KLU5TVVJMICpVUkxXaXRo
RGF0YShOU0RhdGEgKmRhdGEsIE5TVVJMICpiYXNlVVJMKQotewotICAgIGlmICghZGF0YSkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBOU1VSTCAqcmVzdWx0ID0gbmlsOwotICAgIHNp
emVfdCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOwotICAgIGlmIChsZW5ndGggPiAwKSB7Ci0gICAg
ICAgIC8vIHdvcmsgYXJvdW5kIDxyZGFyOi8vNDQ3MDc3MT46IENGVVJMQ3JlYXRlQWJzb2x1dGVV
UkxXaXRoQnl0ZXMoLi4sIFRSVUUpIGRvZXNuJ3QgcmVtb3ZlIG5vbi1wYXRoIGNvbXBvbmVudHMu
Ci0gICAgICAgIGJhc2VVUkwgPSBVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoYmFzZVVS
TCk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBVSW50OCAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxj
b25zdCBVSW50OCo+KFtkYXRhIGJ5dGVzXSk7Ci0gICAgICAgIAotICAgICAgICAvLyBDRlVSTENy
ZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzIHdvdWxkIGNvbXBsYWluIHRvIGNvbnNvbGUgaWYgd2Ug
cGFzc2VkIGEgcGF0aCB0byBpdC4KLSAgICAgICAgaWYgKGJ5dGVzWzBdID09ICcvJyAmJiAhYmFz
ZVVSTCkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICAvLyBOT1RF
OiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hlbiBjb21w
dXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAgICAgICAvLyAo
ZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3Qg
dG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgICAgIC8vIGNv
dWxkIGVpdGhlciBiZSBhIG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZmZXJlbnQg
ZW5jb2RpbmcsIGxpa2Ugc2hpZnQtamlzLCBzbyB3ZSBmYWxsIGJhY2sKLSAgICAgICAgLy8gb250
byB1c2luZyBJU08gTGF0aW4gMSBpbiB0aG9zZSBjYXNlcy4KLSAgICAgICAgcmVzdWx0ID0gQ0ZC
cmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBi
eXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBDRlVSTFJlZili
YXNlVVJMLCBZRVMpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXN1bHQg
PSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxw
dHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoX19icmlkZ2Ug
Q0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFtO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotc3RhdGlj
IE5TRGF0YSAqZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAg
ICBOU0RhdGEgKnVzZXJUeXBlZERhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXTsKLSAgICBBU1NFUlQodXNlclR5cGVkRGF0YSk7Ci0gICAgCi0gICAg
Y29uc3QgVUludDgqIGluQnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBVSW50OCAqPihbdXNlclR5
cGVkRGF0YSBieXRlc10pOwotICAgIGludCBpbkxlbmd0aCA9IFt1c2VyVHlwZWREYXRhIGxlbmd0
aF07Ci0gICAgaWYgKCFpbkxlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBj
aGFyKiBvdXRCeXRlcyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obWFsbG9jKGluTGVuZ3RoICogMykp
OyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0gICAgY2hhciog
cCA9IG91dEJ5dGVzOwotICAgIGludCBvdXRMZW5ndGggPSAwOwotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgaW5MZW5ndGg7IGkrKykgewotICAgICAgICBVSW50OCBjID0gaW5CeXRlc1tpXTsKLSAg
ICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKLSAgICAgICAgICAgICpwKysgPSAn
JSc7Ci0gICAgICAgICAgICAqcCsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0g
ICAgICAgICAgICAqcCsrID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAg
ICAgICBvdXRMZW5ndGggKz0gMzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpwKysg
PSBjOwotICAgICAgICAgICAgb3V0TGVuZ3RoKys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0g
ICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpvdXRCeXRlcyBsZW5ndGg6b3V0
TGVuZ3RoXTsgLy8gYWRvcHRzIG91dEJ5dGVzCi19Ci0KLU5TVVJMICpVUkxXaXRoVXNlclR5cGVk
U3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TVVJMICpuc1VSTCkKLXsKLSAgICBpZiAoIXN0cmlu
ZykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGF1dG8gbWFwcGVkU3RyaW5nID0gbWFwSG9z
dE5hbWVzKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCksIFlFUyk7Ci0g
ICAgaWYgKCFtYXBwZWRTdHJpbmcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAvLyBMZXQn
cyBjaGVjayB3aGV0aGVyIHRoZSBVUkwgaXMgYm9ndXMuCi0gICAgVVJMIHVybCB7IFVSTCB7IG5z
VVJMIH0sIG1hcHBlZFN0cmluZy5nZXQoKSB9OwotICAgIGlmICghdXJsLmNyZWF0ZUNGVVJMKCkp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjA1NwotICAgIC8vIFdlIHNob3VsZCBiZSBhYmxlIHRv
IHVzZSB1cmwuY3JlYXRlQ0ZVUkwgaW5zdGVhZCBvZiB1c2luZyBkaXJlY3RseSBDRlVSTCBwYXJz
aW5nIHJvdXRpbmVzLgotICAgIE5TRGF0YSAqZGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5n
KG1hcHBlZFN0cmluZy5nZXQoKSk7Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gW05T
VVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKLQotICAgIHJldHVybiBVUkxXaXRoRGF0YShkYXRhLCBu
c1VSTCk7Ci19Ci0KLU5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChOU1N0
cmluZyAqc3RyaW5nLCBOU1VSTCAqVVJMKQotewotICAgIGlmICghc3RyaW5nKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgTlNVUkwgKnJlc3VsdCA9IFVSTFdpdGhVc2VyVHlwZWRTdHJpbmco
c3RyaW5nLCBVUkwpOwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIE5TRGF0YSAqcmVzdWx0
RGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZyk7Ci0gICAgICAgIGlmICghcmVz
dWx0RGF0YSkKLSAgICAgICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwot
ICAgICAgICByZXN1bHQgPSBVUkxXaXRoRGF0YShyZXN1bHREYXRhLCBVUkwpOwotICAgIH0KLQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBCT09MIGhhc1F1ZXN0aW9uTWFya09ubHlR
dWVyeVN0cmluZyhOU1VSTCAqVVJMKQotewotICAgIENGUmFuZ2UgcmFuZ2VXaXRoU2VwYXJhdG9y
czsKLSAgICBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCBrQ0ZVUkxDb21wb25lbnRRdWVyeSwgJnJhbmdlV2l0aFNlcGFyYXRvcnMpOwotICAgIGlm
IChyYW5nZVdpdGhTZXBhcmF0b3JzLmxvY2F0aW9uICE9IGtDRk5vdEZvdW5kICYmIHJhbmdlV2l0
aFNlcGFyYXRvcnMubGVuZ3RoID09IDEpCi0gICAgICAgIHJldHVybiBZRVM7Ci0KLSAgICByZXR1
cm4gTk87Ci19Ci0KLU5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKlVSTCwg
Q0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudFR5cGUpCi17Ci0gICAgVmVjdG9yPFVJbnQ4LCBV
UkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYWxsQnl0ZXNCdWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9M
RU5HVEgpOwotICAgIENGSW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRn
ZSBDRlVSTFJlZilVUkwsIGFsbEJ5dGVzQnVmZmVyLmRhdGEoKSwgYWxsQnl0ZXNCdWZmZXIuc2l6
ZSgpKTsKLSAgICBpZiAoYnl0ZXNGaWxsZWQgPT0gLTEpIHsKLSAgICAgICAgQ0ZJbmRleCBieXRl
c1RvQWxsb2NhdGUgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxw
dHIsIDApOwotICAgICAgICBhbGxCeXRlc0J1ZmZlci5ncm93KGJ5dGVzVG9BbGxvY2F0ZSk7Ci0g
ICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJM
LCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgfQotICAgIAot
ICAgIGNvbnN0IENGVVJMQ29tcG9uZW50VHlwZSBjb21wbGV0ZVVSTCA9IChDRlVSTENvbXBvbmVu
dFR5cGUpLTE7Ci0gICAgQ0ZSYW5nZSByYW5nZTsKLSAgICBpZiAoY29tcG9uZW50VHlwZSAhPSBj
b21wbGV0ZVVSTCkgewotICAgICAgICByYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9u
ZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudFR5cGUsIG51bGxwdHIpOwotICAg
ICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1
cm4gbmlsOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJhbmdlLmxvY2F0aW9uID0gMDsKLSAgICAg
ICAgcmFuZ2UubGVuZ3RoID0gYnl0ZXNGaWxsZWQ7Ci0gICAgfQotICAgIAotICAgIE5TRGF0YSAq
Y29tcG9uZW50RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczphbGxCeXRlc0J1ZmZlci5kYXRh
KCkgKyByYW5nZS5sb2NhdGlvbiBsZW5ndGg6cmFuZ2UubGVuZ3RoXTsgCi0gICAgCi0gICAgY29u
c3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
ICo+KFtjb21wb25lbnREYXRhIGJ5dGVzXSk7Ci0gICAgTlNNdXRhYmxlRGF0YSAqcmVzdWx0RGF0
YSA9IFtOU011dGFibGVEYXRhIGRhdGFdOwotICAgIC8vIE5PVEU6IGFkZCBsZWFkaW5nICc/JyB0
byBxdWVyeSBzdHJpbmdzIG5vbi16ZXJvIGxlbmd0aCBxdWVyeSBzdHJpbmdzLgotICAgIC8vIE5P
VEU6IHJldGFpbiBxdWVzdGlvbi1tYXJrIG9ubHkgcXVlcnkgc3RyaW5ncy4KLSAgICBpZiAoY29t
cG9uZW50VHlwZSA9PSBrQ0ZVUkxDb21wb25lbnRRdWVyeSkgewotICAgICAgICBpZiAocmFuZ2Uu
bGVuZ3RoID4gMCB8fCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoVVJMKSkKLSAgICAg
ICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOiI/IiBsZW5ndGg6MV07ICAgIAotICAgIH0K
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHVu
c2lnbmVkIGNoYXIgYyA9IGJ5dGVzW2ldOwotICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPj0g
MHg3ZikgewotICAgICAgICAgICAgY2hhciBlc2NhcGVkWzNdOwotICAgICAgICAgICAgZXNjYXBl
ZFswXSA9ICclJzsKLSAgICAgICAgICAgIGVzY2FwZWRbMV0gPSB1cHBlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdChjKTsKLSAgICAgICAgICAgIGVzY2FwZWRbMl0gPSBsb3dlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdChjKTsKLSAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmVzY2FwZWQg
bGVuZ3RoOjNdOyAgICAKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNoYXIgYlsxXTsK
LSAgICAgICAgICAgIGJbMF0gPSBjOwotICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0
ZXM6YiBsZW5ndGg6MV07ICAgIAotICAgICAgICB9ICAgICAgICAgICAgICAgCi0gICAgfQotICAg
IAotICAgIHJldHVybiByZXN1bHREYXRhOwotfQotCi1zdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3Zp
bmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENGVVJMQ29tcG9u
ZW50VHlwZSBjb21wb25lbnQpCi17Ci0gICAgQ0ZSYW5nZSByYW5nZSA9IENGVVJMR2V0Qnl0ZVJh
bmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwgMCk7Ci0g
ICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQotICAgICAgICByZXR1cm4gVVJM
OwotICAgIAotICAgIC8vIFJlbW92ZSBvbmUgc3Vic2VxdWVudCBjaGFyYWN0ZXIuCi0gICAgcmFu
Z2UubGVuZ3RoKys7Ci0KLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RI
PiBidWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwotICAgIENGSW5kZXggbnVtQnl0ZXMg
PSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpOwotICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBudW1CeXRl
cyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Ci0g
ICAgICAgIGJ1ZmZlci5ncm93KG51bUJ5dGVzKTsKLSAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19i
cmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBudW1CeXRlcyk7Ci0gICAgfQotICAg
IFVJbnQ4KiB1cmxCeXRlcyA9IGJ1ZmZlci5kYXRhKCk7Ci0gICAgICAgIAotICAgIGlmIChudW1C
eXRlcyA8IHJhbmdlLmxvY2F0aW9uKQotICAgICAgICByZXR1cm4gVVJMOwotICAgIGlmIChudW1C
eXRlcyA8IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKQotICAgICAgICByYW5nZS5sZW5n
dGggPSBudW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uOwotICAgICAgICAKLSAgICBtZW1tb3ZlKHVy
bEJ5dGVzICsgcmFuZ2UubG9jYXRpb24sIHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24gKyByYW5n
ZS5sZW5ndGgsIG51bUJ5dGVzIC0gcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpOwotICAg
IAotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVy
bEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBu
dWxscHRyKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVX
aXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZT
dHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgCi0gICAg
cmV0dXJuIHJlc3VsdCA/IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7Ci19Ci0KLU5T
VVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNVUkwgKlVSTCkKLXsKLSAgICByZXR1cm4gVVJM
QnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoVVJMLCBrQ0ZVUkxDb21w
b25lbnRVc2VySW5mbyk7Ci19Ci0KIE5TVVJMICpVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKE5TVVJM
ICpVUkwpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0TlMo
W1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOlVSTF0pOwpAQCAtMTA0OSwyMDMgKzU3
LDQgQEAgTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoTlNVUkwgKlVSTCkKICAgICByZXR1
cm4gW1tuZXdVUkwgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLU5TRGF0YSAqb3JpZ2luYWxV
UkxEYXRhKE5TVVJMICpVUkwpCi17Ci0gICAgVUludDggKmJ1ZmZlciA9IChVSW50OCAqKW1hbGxv
YyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBieXRlc0ZpbGxlZCA9IENG
VVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLCBVUkxfQllURVNfQlVG
RkVSX0xFTkdUSCk7Ci0gICAgaWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7Ci0gICAgICAgIENGSW5k
ZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJM
LCBudWxscHRyLCAwKTsKLSAgICAgICAgYnVmZmVyID0gKFVJbnQ4ICopcmVhbGxvYyhidWZmZXIs
IGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAg
IEFTU0VSVChieXRlc0ZpbGxlZCA9PSBieXRlc1RvQWxsb2NhdGUpOwotICAgIH0KLSAgICAKLSAg
ICAvLyBidWZmZXIgaXMgYWRvcHRlZCBieSB0aGUgTlNEYXRhCi0gICAgTlNEYXRhICpkYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5OmJ1ZmZlciBsZW5ndGg6Ynl0ZXNGaWxsZWQgZnJl
ZVdoZW5Eb25lOllFU107Ci0gICAgCi0gICAgTlNVUkwgKmJhc2VVUkwgPSAoX19icmlkZ2UgTlNV
UkwgKilDRlVSTEdldEJhc2VVUkwoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCk7Ci0gICAgaWYgKGJh
c2VVUkwpCi0gICAgICAgIHJldHVybiBvcmlnaW5hbFVSTERhdGEoVVJMV2l0aERhdGEoZGF0YSwg
YmFzZVVSTCkpOwotICAgIHJldHVybiBkYXRhOwotfQotCi1zdGF0aWMgQ0ZTdHJpbmdSZWYgY3Jl
YXRlU3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKENGU3RyaW5nUmVmIHN0cmluZykK
LXsKLSAgICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7Ci0gICAg
VmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gc291cmNlQnVmZmVyKGxlbmd0
aCk7Ci0gICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVu
Z3RoKSwgc291cmNlQnVmZmVyLmRhdGEoKSk7Ci0gICAgCi0gICAgVmVjdG9yPFVDaGFyLCBVUkxf
QllURVNfQlVGRkVSX0xFTkdUSD4gb3V0QnVmZmVyOwotICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8
VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgQ0ZJbmRleCBpID0gMDsKLSAgICB3aGls
ZSAoaSA8IGxlbmd0aCkgewotICAgICAgICBVQ2hhcjMyIGM7Ci0gICAgICAgIFUxNl9ORVhUKHNv
dXJjZUJ1ZmZlciwgaSwgbGVuZ3RoLCBjKQotICAgICAgICAKLSAgICAgICAgaWYgKGlzTG9va2Fs
aWtlQ2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LCBjKSkgewotICAgICAgICAgICAgdWludDhf
dCB1dGY4QnVmZmVyWzRdOwotICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOwotICAgICAg
ICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOwotICAgICAgICAgICAgVThfQVBQRU5EKHV0ZjhC
dWZmZXIsIG9mZnNldCwgNCwgYywgZmFpbHVyZSkKLSAgICAgICAgICAgIEFTU0VSVCghZmFpbHVy
ZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8IG9m
ZnNldDsgKytqKSB7Ci0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCgnJScpOwotICAg
ICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQo
dXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQobG93ZXJO
aWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgVUNoYXIgdXRmMTZCdWZmZXJbMl07Ci0gICAgICAg
ICAgICBDRkluZGV4IG9mZnNldCA9IDA7Ci0gICAgICAgICAgICBVQm9vbCBmYWlsdXJlID0gZmFs
c2U7Ci0gICAgICAgICAgICBVMTZfQVBQRU5EKHV0ZjE2QnVmZmVyLCBvZmZzZXQsIDIsIGMsIGZh
aWx1cmUpCi0gICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOwotICAgICAgICAgICAgZm9yIChD
RkluZGV4IGogPSAwOyBqIDwgb2Zmc2V0OyArK2opCi0gICAgICAgICAgICAgICAgb3V0QnVmZmVy
LmFwcGVuZCh1dGYxNkJ1ZmZlcltqXSk7Ci0gICAgICAgIH0KLSAgICAgICAgcHJldmlvdXNDb2Rl
UG9pbnQgPSBjOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycyhudWxscHRyLCBvdXRCdWZmZXIuZGF0YSgpLCBvdXRCdWZmZXIuc2l6ZSgpKTsKLX0K
LQotTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCi17Ci0gICAgTlNEYXRh
ICpkYXRhID0gb3JpZ2luYWxVUkxEYXRhKFVSTCk7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAq
YmVmb3JlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KFtkYXRhIGJ5dGVzXSk7
Ci0gICAgaW50IGxlbmd0aCA9IFtkYXRhIGxlbmd0aF07Ci0gICAgCi0gICAgYm9vbCBtYXlOZWVk
SG9zdE5hbWVEZWNvZGluZyA9IGZhbHNlOwotICAgIAotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KnAgPSBiZWZvcmU7Ci0gICAgaW50IGJ1ZmZlckxlbmd0aCA9IChsZW5ndGggKiAzKSArIDE7Ci0g
ICAgVmVjdG9yPGNoYXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBhZnRlcihidWZmZXJMZW5n
dGgpOyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0gICAgY2hh
ciAqcSA9IGFmdGVyLmRhdGEoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07Ci0gICAgICAgIC8vIHVuZXNjYXBl
IGVzY2FwZSBzZXF1ZW5jZXMgdGhhdCBpbmRpY2F0ZSBieXRlcyBncmVhdGVyIHRoYW4gMHg3Zgot
ICAgICAgICBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdp
dChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAy
XSkpIHsKLSAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAxXSwgcFtp
ICsgMl0pOwotICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7Ci0gICAgICAgICAgICAgICAgLy8g
dW5lc2NhcGUKLSAgICAgICAgICAgICAgICAqcSsrID0gdTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90IHVuZXNjYXBlCi0gICAgICAgICAgICAgICAgKnEr
KyA9IHBbaV07Ci0gICAgICAgICAgICAgICAgKnErKyA9IHBbaSArIDFdOwotICAgICAgICAgICAg
ICAgICpxKysgPSBwW2kgKyAyXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkgKz0gMjsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpxKysgPSBjOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICAvLyBDaGVjayBmb3IgInhuLS0iIGluIGFuIGVmZmljaWVudCwgbm9uLWNhc2Ut
c2Vuc2l0aXZlLCB3YXkuCi0gICAgICAgICAgICBpZiAoYyA9PSAnLScgJiYgaSA+PSAzICYmICFt
YXlOZWVkSG9zdE5hbWVEZWNvZGluZyAmJiAocVstNF0gfCAweDIwKSA9PSAneCcgJiYgKHFbLTNd
IHwgMHgyMCkgPT0gJ24nICYmIHFbLTJdID09ICctJykKLSAgICAgICAgICAgICAgICBtYXlOZWVk
SG9zdE5hbWVEZWNvZGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgKnEgPSAnXDAn
OwotICAgIAotICAgIC8vIENoZWNrIHN0cmluZyB0byBzZWUgaWYgaXQgY2FuIGJlIGNvbnZlcnRl
ZCB0byBkaXNwbGF5IHVzaW5nIFVURi04ICAKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHJlc3Vs
dCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOwotICAgIGlm
ICghcmVzdWx0KSB7Ci0gICAgICAgIC8vIENvdWxkIG5vdCBjb252ZXJ0IHRvIFVURi04LgotICAg
ICAgICAvLyBDb252ZXJ0IGNoYXJhY3RlcnMgZ3JlYXRlciB0aGFuIDB4N2YgdG8gZXNjYXBlIHNl
cXVlbmNlcy4KLSAgICAgICAgLy8gU2hpZnQgY3VycmVudCBzdHJpbmcgdG8gdGhlIGVuZCBvZiB0
aGUgYnVmZmVyCi0gICAgICAgIC8vIHRoZW4gd2Ugd2lsbCBjb3B5IGJhY2sgYnl0ZXMgdG8gdGhl
IHN0YXJ0IG9mIHRoZSBidWZmZXIgCi0gICAgICAgIC8vIGFzIHdlIGNvbnZlcnQuCi0gICAgICAg
IGludCBhZnRlcmxlbmd0aCA9IHEgLSBhZnRlci5kYXRhKCk7Ci0gICAgICAgIGNoYXIgKnAgPSBh
ZnRlci5kYXRhKCkgKyBidWZmZXJMZW5ndGggLSBhZnRlcmxlbmd0aCAtIDE7Ci0gICAgICAgIG1l
bW1vdmUocCwgYWZ0ZXIuZGF0YSgpLCBhZnRlcmxlbmd0aCArIDEpOyAvLyBjb3BpZXMgdHJhaWxp
bmcgJ1wwJwotICAgICAgICBjaGFyICpxID0gYWZ0ZXIuZGF0YSgpOwotICAgICAgICB3aGlsZSAo
KnApIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpwOwotICAgICAgICAgICAgaWYg
KGMgPiAweDdmKSB7Ci0gICAgICAgICAgICAgICAgKnErKyA9ICclJzsKLSAgICAgICAgICAgICAg
ICAqcSsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICAgICAg
KnErKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgKnErKyA9ICpwOwotICAgICAgICAgICAgcCsrOwotICAgICAgICB9
Ci0gICAgICAgICpxID0gJ1wwJzsKLSAgICAgICAgcmVzdWx0ID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhVVEY4U3RyaW5nOmFmdGVyLmRhdGEoKV07Ci0gICAgfQotICAgIAotICAgIGlmIChtYXlOZWVk
SG9zdE5hbWVEZWNvZGluZykgewotICAgICAgICAvLyBGSVhNRTogSXMgaXQgZ29vZCB0byBpZ25v
cmUgdGhlIGZhaWx1cmUgb2YgbWFwSG9zdE5hbWVzIGFuZCBrZWVwIHJlc3VsdCBpbnRhY3Q/Ci0g
ICAgICAgIGF1dG8gbWFwcGVkUmVzdWx0ID0gbWFwSG9zdE5hbWVzKHJlc3VsdC5nZXQoKSwgTk8p
OwotICAgICAgICBpZiAobWFwcGVkUmVzdWx0KQotICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVk
UmVzdWx0OwotICAgIH0KLQotICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdX
aXRoQ2Fub25pY2FsTWFwcGluZ107Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0
ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
cmVzdWx0LmdldCgpKSk7Ci19Ci0KLUJPT0wgaXNVc2VyVmlzaWJsZVVSTChOU1N0cmluZyAqc3Ry
aW5nKQotewotICAgIEJPT0wgdmFsaWQgPSBZRVM7Ci0gICAgLy8gZ2V0IGJ1ZmZlcgotICAgIAot
ICAgIGNoYXIgc3RhdGljX2J1ZmZlclsxMDI0XTsKLSAgICBjb25zdCBjaGFyICpwOwotICAgIEJP
T0wgc3VjY2VzcyA9IENGU3RyaW5nR2V0Q1N0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc3Ry
aW5nLCBzdGF0aWNfYnVmZmVyLCAxMDIzLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpOwotICAgIHAg
PSBzdWNjZXNzID8gc3RhdGljX2J1ZmZlciA6IFtzdHJpbmcgVVRGOFN0cmluZ107Ci0gICAgCi0g
ICAgaW50IGxlbmd0aCA9IHN0cmxlbihwKTsKLSAgICAKLSAgICAvLyBjaGVjayBmb3IgY2hhcmFj
dGVycyA8PSAweDIwIG9yID49MHg3ZiwgJS1lc2NhcGUgc2VxdWVuY2VzIG9mICU3ZiwgYW5kIHhu
LS0sIHRoZXNlCi0gICAgLy8gYXJlIHRoZSB0aGluZ3MgdGhhdCB3aWxsIGxlYWQgX3dlYl91c2Vy
VmlzaWJsZVN0cmluZyB0byBhY3R1YWxseSBjaGFuZ2UgdGhpbmdzLgotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcFtpXTsK
LSAgICAgICAgLy8gZXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVycywgc3BhY2UsIGFuZCBkZWxldGUK
LSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID09IDB4N2YpIHsKLSAgICAgICAgICAgIHZhbGlk
ID0gTk87Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChjID09ICclJyAm
JiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDFdKSkgJiYgaSArIDIg
PCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDJdKSkgewotICAgICAgICAgICAgYXV0
byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7Ci0gICAgICAgICAgICBp
ZiAodSA+IDB4N2YpIHsKLSAgICAgICAgICAgICAgICB2YWxpZCA9IE5POwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBhbiBlZmZpY2llbnQs
IG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgotICAgICAgICAgICAgaWYgKGMgPT0gJy0nICYmIGkg
Pj0gMyAmJiAocFtpIC0gM10gfCAweDIwKSA9PSAneCcgJiYgKHBbaSAtIDJdIHwgMHgyMCkgPT0g
J24nICYmIHBbaSAtIDFdID09ICctJykgewotICAgICAgICAgICAgICAgIHZhbGlkID0gTk87Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIHZhbGlkOwotfQotCi1OU1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNT
dHJpbmcgKnN0cmluZykKLXsKLSAgICBOU1JhbmdlIGNvbG9uID0gW3N0cmluZyByYW5nZU9mU3Ry
aW5nOkAiOiJdOwotICAgIGlmIChjb2xvbi5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIGNvbG9u
LmxvY2F0aW9uID4gMCkgewotICAgICAgICBOU1JhbmdlIHNjaGVtZSA9IHswLCBjb2xvbi5sb2Nh
dGlvbn07Ci0gICAgICAgIC8qCi0gICAgICAgICBUaGlzIHN0dWZmIGlzIHZlcnkgZXhwZW5zaXZl
LiAgMTAtMTUgbXNlYyBvbiBhIDJ4MS4yR0h6LiAgSWYgbm90IGNhY2hlZCBpdCBzd2FtcHMKLSAg
ICAgICAgIGV2ZXJ5dGhpbmcgZWxzZSB3aGVuIGFkZGluZyBpdGVtcyB0byB0aGUgYXV0b2NvbXBs
ZXRlIERCLiAgTWFrZXMgbWUgd29uZGVyIGlmIHdlCi0gICAgICAgICBldmVuIG5lZWQgdG8gZW5m
b3JjZSB0aGUgY2hhcmFjdGVyIHNldCBoZXJlLgotICAgICAgICAgKi8KLSAgICAgICAgTlNTdHJp
bmcgKmFjY2VwdGFibGVDaGFyYWN0ZXJzID0gQCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsuLSI7Ci0gICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBJbnZlcnNlU2NoZW1lQ2hh
cmFjdGVyU2V0KFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0
cmluZzphY2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52ZXJ0ZWRTZXRdKTsKLSAgICAgICAgTlNSYW5n
ZSBpbGxlZ2FscyA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6SW52ZXJzZVNjaGVt
ZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsKLSAgICAg
ICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1
cm4gc2NoZW1lOwotICAgIH0KLSAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7
Ci19Ci0KLUJPT0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAg
ICAvLyBUcmltIHdoaXRlc3BhY2UgYmVjYXVzZSBfd2ViX1VSTFdpdGhTdHJpbmcgYWxsb3dzIHdo
aXRlc3BhY2UuCi0gICAgcmV0dXJuIHJhbmdlT2ZVUkxTY2hlbWUoc3RyaW5nQnlUcmltbWluZ1do
aXRlc3BhY2Uoc3RyaW5nKS5nZXQoKSkubG9jYXRpb24gIT0gTlNOb3RGb3VuZDsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgKaW5kZXgg
Yzk5Y2IzODM3OGMxOWFiODJjZTkxZThiZjAyMzdhYjc3Mjg3OTExYS4uNjMzMTc4ZTRlZWFiNWVh
MzE5MzYyMTAxMGU3NThjYjM0MjBjODE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlv
bi5oCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlICJSVENCdW5kbGVQb2xpY3kuaCIKICNp
bmNsdWRlICJSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaAppbmRleCBi
NzAyNjc0ODI0NjlkNTg3NWVmYjVmNzQ5NGQxYmY3YWM0MmM4OWUxLi4zODBkMzczMWIwYTE1M2Fi
YjljMjI3MGJmZWU3NjgwZjAzYjNiOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVz
LmgKQEAgLTIzLDYgKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI3ByYWdtYSBvbmNl
CisKICNpbmNsdWRlIDxDb3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaAppbmRleCA2Mjhm
OTM5YTMwNWNjZjc0NjY5ZTZiY2JhYmMwZjU5MTc5NTYzNzg2Li4wNDFjMjlhMzEyZjA5ODE3Zjhl
Y2YxNzM2MTYxM2NhZDJmZDZmNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JQYXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUGFydC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCmluZGV4
IDlmZjYwMGNhYzU5M2QzNTk0NWMxMGVhMTE0NTM3NGRiYzk3MjgwMTMuLjQ3NGEwZjJmOGJiYTFj
YjFmOTYzY2NjOTk0NGYyZTc5ZGFiYzFkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFydDsKIGNs
YXNzIEJsb2JSZWdpc3RyeTsKLWNsYXNzIFVSTDsKIAogV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lz
dHJ5JiBibG9iUmVnaXN0cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCAyNGZlY2M5NWE0MTk2MGIxM2RkODc0ODE1
MTBlYzI3OGE4YjFlZjI0Li5jNjkxZTViNjcwMDdlZGEyZTJmZjhiYjYyMjZhMDBhMzAwNTE0ZjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaApAQCAtMzMsMTQgKzMzLDEzIEBACiAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2lu
Y2x1ZGUgIkJsb2JSZWdpc3RyeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xh
c3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5j
cHAKaW5kZXggNjE4MmJlNTZjNDI2MDVkNTBlYTI5ZDJkN2JlMTAyMTdkYmY2MjEwOS4uYzk0ZTM5
NDk0YjhlMzI2ZGI0YTEyYTI3MjAxYTQ2MjM4ZGUxOGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMzks
NyArMzksNyBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQ
YXJzZXJzLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFJhbmdlLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDI0OWEwMDM2MWJlZmFjM2M4
YWIzMzlhZDg3N2U4NzFmNGJmZTU5MzIuLjMyYTZmNTdjMGEyMTk2MDQ3Yzc0MzliMDkzOWRmZTJj
ZDBjMzY5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAgLTI3LDggKzI3LDgg
QEAKIAogI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5m
by5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAppbmRleCBl
NWYzMDRiYmNlNWQwMTk2OTkxZjVjZDljZTJlMGYyMjEyY2FlNmEwLi4yYzU0MzQzODVmMTg1ZTgy
ZTI5MTYxYjhmYzQ3ZmU5OTAxMzk0N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcApAQCAtMjcsNyArMjcsNyBAQAog
I2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNp
ZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCmluZGV4IDVj
YWNjMDU2MzFjMTY4MGQxZDk0MjdkNzc4OTUyOWYzYjE4ZDMwN2QuLjdkZGM0ZmU1NWJiMWJlMmY2
OTIwMDA4MGMzNGYzNGJhYmQ1MGVkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQ3JlZGVudGlhbFN0b3JhZ2VfaAotI2RlZmluZSBD
cmVkZW50aWFsU3RvcmFnZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWwu
aCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VIYXNoLmgiCkBAIC0zNSw3ICszNCw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNl
OwogCiBjbGFzcyBDcmVkZW50aWFsU3RvcmFnZSB7CkBAIC03MCw1ICs2OCwzIEBAIGNsYXNzIENy
ZWRlbnRpYWxTdG9yYWdlIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIENyZWRlbnRpYWxTdG9yYWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggM2Y0ZmIxYWQ4ODRhNzgyYmRjNjE0ZmQz
OTRmZTc3NzFhYmE1NGE0Zi4uNDYwNWJlYTBhN2ExNmQxM2E1ZDJjMGU5MDZmYmFlOTBjZGQ0NjIy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVj
b2Rlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggNzI1ODI0NzEyOWNiYmFhMmM4
NWZjM2I0OWNmZGI2NjgwZDJiZDc1ZC4uOTc0ZDljZWJlYjE5NTE4OGI1Yzg0NjkyYWEwZjViMjZi
YTk5MGNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuaApAQCAtMjMsOSArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgRGF0YVVSTERlY29kZXJfaAotI2RlZmluZSBEYXRhVVJM
RGVjb2Rlcl9oCi0KKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0zOCw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogbmFtZXNwYWNlIERh
dGFVUkxEZWNvZGVyIHsKIApAQCAtNjEsNSArNTgsMyBAQCB2b2lkIGRlY29kZShjb25zdCBVUkwm
LCBjb25zdCBTY2hlZHVsZUNvbnRleHQmLCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYmKTsKIH0K
IAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAppbmRleCBlOGM3ZDk4YTA3NWI2NmRkMDU0Mjg3OWI1OTE2NGMwZDQ2ZjZhNzI2Li5iYmFhZGUx
ODViNzlmNTRmOGMwNzA3NTM5NjMyMTY2MzQ2ZWMyZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0yMCw5ICsyMCw5IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaAppbmRleCAxMDNkOWE5NmJiZGM2MTUyYTYxYjdkMTYx
ZmU0MDkwYmE1YmMzYTA1Li41Mjc4OWI1YmRkOGRhYjM5N2IzNjlhYWMxNThjMjY3NzIxODc3ZGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oCkBA
IC0yMywxNSArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIFByb3h5U2VydmVyX2gKLSNkZWZpbmUgUHJveHlTZXJ2ZXJfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTmV0
d29ya2luZ0NvbnRleHQ7CiAKIC8vIFJlcHJlc2VudHMgYSBzaW5nbGUgcHJveHkgc2VydmVyLgpA
QCAtNzUsNSArNzMsMyBAQCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5
U2VydmVyc0ZvclVSTChjb25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+Jik7CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBQcm94eVNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggNzYzMzE4YzJlMTE0NzM2
MjM2ZWMzZDEzNmM3YzRhODc4ZGRjYjJmMy4uZTBiZjA0YjhhYzhmMDBiMzkzOTc5MWViZmQwMDg3
ZWNiOTBkYjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VFcnJvckJhc2UuaApAQCAtMjYsNyArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCA0OTE0MzRkOGZh
NTNmMTkwZTU0NTNlYjlmMzk0ZTQwN2RkNmMxM2JmLi40NmFmNTY3MTNkODk4YzNhN2ZiZDc5OGFh
NTBmZWFhNjU0Nzg0OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIENv
bXBsZXRpb25ICiAgICAgaWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAgYXV0byB1
cmwgPSByZXNwb25zZS51cmwoKTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9y
dCA9IHVybC5wb3J0KCk7Ci0gICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKKyAgICAgICAgaWYgKHBvcnQg
JiYgIVdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3Rv
Y29sKCkpKSB7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIFN0cmluZyBtZXNz
YWdlID0gIkNhbmNlbGxlZCBsb2FkIGZyb20gJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIGl0IGlzIHVzaW5nIEhUVFAvMC45LiI7CiAgICAgICAg
ICAgICBkLT5tX2NsaWVudC0+ZGlkRmFpbCh0aGlzLCB7IFN0cmluZygpLCAwLCB1cmwsIG1lc3Nh
Z2UgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKaW5kZXggMDFhODZlMzU5YjFmZDBmMmVhZjQ1NjhhYTcyODY0MGMzMmI3NmY3OC4uNjVm
MzBmOTVkYjYwNTRhNWQwMWIyOWYyNDY4YjU5ZTk3MzcyNGY3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtNzcsNyArNzcsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIENyZWRlbnRpYWw7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIFVSTDsKIGNsYXNzIE5ldHdvcmtp
bmdDb250ZXh0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuaAppbmRleCBkNmVkYjZkNjE4YWRjM2JjY2UyM2YwMWZiOTdmZjEzOTk3YTZmYWMy
Li4zZTEwYmVmNDkxMDdkMTM3ODE3Y2I5OTMyOTg1MjE3NWJiOGQ0MGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
CkBAIC00NCw3ICs0NCw2IEBAIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3Jl
ZGVudGlhbDsKLWNsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291
cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGZmNTgz
NjE3NGVhYjk1OTUyOGEyMDdiZmJhYWI2MDAzOWQ5YjUwMzMuLmZiNDYzNjM1MjJhN2ZlYzI1Mjdk
Y2M0ZDEyNzVlZGEzZjc2MzMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBA
IFJlc291cmNlUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByCiAgICAgICAgIHJlcXVlc3QubV9odHRwSGVhZGVyRmll
bGRzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAgICAgfQogCi0gICAg
aWYgKHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3Qu
dXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJlcXVlc3Qu
aHR0cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0ICYmICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikg
JiYgV1RGOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQogICAg
ICAgICByZXF1ZXN0LmNsZWFySFRUUFJlZmVycmVyKCk7CiAKICAgICBpZiAoIXByb3RvY29sSG9z
dEFuZFBvcnRBcmVFcXVhbChyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmgKaW5kZXggM2FmNDM1MjY5ZmUxZmNlMDM3Nzg1ZmQyNWExZTBjYmJmZDc5MGYzNS4u
ZTdjMWM0MDljM2I5YjY0ZWE3YjRlMzc4NzgzNDM5NTQyYTRhZDBjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkhUVFBIZWFk
ZXJNYXAuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAppbmRleCBkOGZjYzE0MzFiNTBiYzdhYjY3ZjFkMTk2
OGI5MWNlNzBlYTE2MWVmLi4wZTU1YzFjZWZmMmFlN2MzNzFmNjBlNmVjMzRhODE1Yjc4YTgyMTNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5oCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRlck1h
cC5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlBhcnNlZENv
bnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggYjU5YmRiYTBiNDEyOTVjZWUzODUzZjZmZWEy
MmFiYzI0ZWNkYmYyNS4uNmQxZmQxYTgzMDk5Mzk4OTRiNDllYTg0Yjc3YTU5ZjExN2Q4YTAyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZS5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAK
aW5kZXggYmEzNDBmZjg4ZDYyMDNiNzEyNTIwOWE4NTAyM2QzNDlkZjM1ZjJkZi4uNGY4ZTQzMjJh
YzU3MWQ3NzcxM2QxMDE0Mzc0MDQ1ZmY2ZGNjZmNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAK
QEAgLTMwLDExICszMCwxMSBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShXSU4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGZhMDRjOGI3MDk5Y2JhZWI2ZTVmNGMx
NWIxNzQ1MjY3NDA5YjNhZDcuLmY4ZWJiMDZjY2QwNTZlMzUwZWQwMGYwYjkyNWZkYWFjZmZkZTRk
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC00MiwxMiArNDIsMTIg
QEAKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgogI2luY2x1ZGUg
IkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxwYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYv
U29mdExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL2NmL1R5
cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQu
Y3BwCmluZGV4IGI1YzZhOGQ2YzMyZmZkYmQ5MGIyMTAwNDJiOTQ3MTQ3NDNhMGM1NGIuLjJhYjM0
OTcyMTZhYzVhYTg3NmUwMDRlN2E3ZDU2YThlNDhkZWM0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApAQCAt
MjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVy
LmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggYmEzNjA1YmJkMWQ0NmY5N2RlMjgzOGYzOTgz
Nzg5MmY5OTUyMmI2OC4uZDQxNmY2MTUxNGVmMWZmMDIzMTFkNWMyZDEwMzVlZmQ1NDFlOTQzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvckNGLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZFcnJv
ci5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KICNpbmNsdWRlIDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA4OTQ4NWEz
MWY1NDQ1YTVjODllOTNiODEzYzkxMDgxYTc0YTQ5MTljLi4wZWFkZTE1OTljZTU4YmI2NDBmMmQx
MjEzYWM0MzYwMjE0NzNhODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0KQEAgLTMxLDExICszMSwxMSBAQAogI2ltcG9ydCAiQ29va2llU3RvcmFnZU9ic2VydmVyLmgi
CiAjaW1wb3J0ICJDb29raWVzU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlNhbWVTaXRlSW5mby5oIgot
I2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5o
PgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogQGludGVyZmFjZSBOU1VSTCAo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJDdXJsLmgKaW5kZXggZTBiMjFjYzEzNzc0OGE4ZTE2Mjc0ODMyNjA3YzE4ZDdhNDgxNjBmZS4u
Yjk2MTRiZmYwMDc5ODRjYTVmMjIxOGUwYjY1OWFhZjJmNGEyZDYwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oCkBAIC0y
NSw3ICsyNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3Mg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogCiBzdHJ1Y3QgQ29va2llOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmxEYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERh
dGFiYXNlLmNwcAppbmRleCA1ZTg0NTRhYTU0YWY2ZjcxYWNmYWU3ZTkzNjI0MDdjMjE0MTc1MTg1
Li5jMmQwNTFlMzc5M2Y1YThlODY4YTRlNzlkZmUxNjQ2NTY3NTE3YWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
Q3VybERhdGFiYXNlLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFByb3h5LmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuY3BwCmluZGV4IDY1MDAzOGQzOTQxMmM3Y2EwMzg0M2Q4YWM5M2YxNDY2YTRlODdjODIuLjM5
ZTc3YmY3ZDQ2MGZmNzZhYTc3ZmNhNjFjYjI2MTNiMWE3NTU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMjks
OSArMjksOSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5j
bHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZVV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVVdGlsLmgKaW5kZXggYTg5YzlhYjdiOTYyNjI0NDgzMjYyNTI1NDcwZjFhNGRj
YzlmZjM3Mi4uNjE4ZGY3Yjg4ZTQyOWVmNzY0ZTEyYjI2N2M3NGFkZmExYWU5ZWM4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oCkBA
IC0yNCw4ICsyNCw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXggMzczMjYw
MTc5Yjg4NmYxZWVkYTA2ODEzOWYwMDY4NGExNGFmMDc3NS4uZjhkNjgxMDgwMWVmYmFkZDlkNDEw
MDIyOTRhZGEzOTlhMDk2NTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaW5jbHVk
ZSAiQ3VybFByb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlICJDdXJsU1NMSGFuZGxlLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGlu
Z3MuaAppbmRleCBhNjFjNmVjMjI2MmQyZTM4Nzk5MjcyNGI2ZGNjNWY2OTRkMTE2NjQ5Li5mMzVm
NDFiNTFmNTg5NmY2ZjczMzY2MDU1MjQ5YzMwYmEzOTViM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaApA
QCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2Rl
ZmluZSBrQ1VSTEFVVEhfRElHRVNUX0lFICAgICgoKHVuc2lnbmVkIGxvbmcpIDEpIDw8IDQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc3Bv
bnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc3BvbnNl
LmgKaW5kZXggMzczNjYxYmQzNWFmY2U2NjdhZTFiYjM1NzdhNmMwOWRjMTQ0ZmE0ZC4uZTYxMWZm
YzRmYjE1NDFmNGNmZDEzMjg3MmNiYzFkNWRjM2Q5M2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2UuaApAQCAtMjUsNyArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q3VybC5jcHAKaW5kZXggZTExMGFkMTY0OTEwNWVjNmIwMDNiMTk5MDM2YWQ4YThlNzA0NzcxNC4u
MWJkMjFlY2VhYmZmN2U3OTIwMGFmODJjY2QwOWMyYTg4NzE4OWUwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJv
eHlTZXJ2ZXJDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Q
cm94eVNlcnZlckN1cmwuY3BwCmluZGV4IGNkYTQ0OTkzZjYzNGIyNDQ0YTYxZGNhZjk3NDAxZTlm
MjYwMmYwYjAuLjE4ZjUwOGI2ZTQ4NjgyYThmYzcwMGQxZjY3ZDdhOTZlMDkzZWQ0YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNl
cnZlckN1cmwuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBVU0UoQ1VSTCkKIAotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCBjZmM0OGZmYTI1ZmQ4
MGZkYjhkNzFmYTdjMzg5M2QzZTg2YTQ1NzdhLi4wNzEwY2FlZTI1MDNjMWYzZjM4MDhlMjA0Mzcw
NTg4MjdlZDM2ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAg
LTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU29ja2V0U3Ry
ZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggMmVjZjQyOGMwYWI1
MTRhY2UwYzAxYzVmNGQxNjI5OGNlYTIxNjA3My4uZGNiZGUzNDhlYjQ3N2MyYTFiNWFiZTRhYjU5
MzU5Mzk4ZTJhYzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogCi0jaW1wb3J0ICJVUkwu
aCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9y
dCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIEBpbnRlcmZhY2UgTlNFcnJvciAoV2ViRXh0cmFz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlx
dWVQdHJTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1
ZVB0clNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZkYzYzNzQxMmUxOGJh
NzI1Zjc0ODNlYzMyNmUxMjQ5YTg4YTE2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1Vu
aXF1ZVB0clNvdXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBHVW5pcXVlUHRy
U291cF9oCi0jZGVmaW5lIEdVbmlxdWVQdHJTb3VwX2gKLQotI2luY2x1ZGUgPGxpYnNvdXAvc291
cC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7
Ci0KLVdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2ZyZWUpCi1XVEZf
REVGSU5FX0dQVFJfREVMRVRFUihTb3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVlKQotV1RGX0RF
RklORV9HUFRSX0RFTEVURVIoU291cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3NhZ2VfaGVhZGVy
c19mcmVlKQotV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cEJ1ZmZlciwgc291cF9idWZmZXJf
ZnJlZSkKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdl
U2Vzc2lvblNvdXAuY3BwCmluZGV4IGU0ODNhYTYzMTZjZTZjNWQ2YzhmM2U2NTVkNTVkZDFlZWIw
NDYzY2YuLjAzZDE1NmU1ZWQ2ZThjMWY1OTA5NTZhOGJkODQwZThhM2QxMGU0N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1
ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmgi
Ci0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291
cC5oPgpAQCAtNDEsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKICNpZiBVU0UoTElC
U0VDUkVUKQogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKaW5kZXggNGMy
NzdjM2QyMTY3YWNjNTQ0MTFmOTYwM2UzNTE5MDAxNzMzYjRhZC4uOWM5OWY4OTVkYjRkYjdjODEx
Y2E1MGY1MTFkM2Q0ZmIyNWM3MTZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKQEAgLTI4LDcgKzI4LDcg
QEAKIAogI2lmIFVTRShTT1VQKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXgg
NjM3MzRjNjc0YzUyZWU5NWRjNmM5ZTQyMWM0NjYwZjQxODQwMGJhYS4uZmI3MTgxM2EzNzU5MDlj
MGE3YTJmNTQ1NzRhODExYWVkZGIzZmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTMz
LDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiSFRU
UFBhcnNlcnMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgpAQCAtNTgsNiArNTcsNyBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVu
TG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0LmgKaW5kZXggMzhlM2E4ZWU2OTY4MTFmZDViYTc4YjRiMzBjMmMwMWEzOWZmNWI1Zi4u
NzQ3MmFkMjM4YjMzNGE5NTA5MDFlZGU5MDE1ODMyNjViM2Y5YmM0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApA
QCAtMjcsOSArMjcsOSBAQAogI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RfaAogI2RlZmluZSBSZXNv
dXJjZVJlcXVlc3RfaAogCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3RCYXNlLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggNThjZmE3NzYxNDRjODRhMDkwZDM2MjJkZjIyMjc0
MjE4Zjc5MWJiNi4uZWQyNjk0MDFlYmJmZjRkZDYzOGVmOGVmYzFlMGVkODY5MjJmNDZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVx
dWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtMjQsMTEgKzI0LDExIEBACiAKICNpbmNsdWRlICJC
bG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKLSNpbmNsdWRlICJHVW5p
cXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYktp
dFNvdXBSZXF1ZXN0R2VuZXJpYy5oIgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3Vw
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAppbmRleCA5
Y2RkZGI4N2UzNzU5NWEyYmJhZDY1MTAyMDQ1ZjZmYTc0MmI0ZTQyLi41YWY5NDczZjM3NzI4NjEx
MzFiYWU3MTc3YjM0MzE5YTVjMmRiMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
U291cC5jcHAKQEAgLTQxLDkgKzQxLDkgQEAKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5o
IgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlNvdXBO
ZXR3b3JrU2Vzc2lvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGdpby9naW8uaD4K
ICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4
IDEzZWNiNWIwZjc2M2MyMDFjZjE3YTQxNjEyYTczZjA5YThmNWEwNzguLjYwMDRkMTdmNzZhMDNh
OTBlMzM4YTkwZTNjNTQ1YjUyZjUxOWM3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0z
MSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MuaCIKICNp
bmNsdWRlIDxnbGliL2dzdGRpby5oPgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgPHBhbC9j
cnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291
cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGQxZTlkOWNlNWIyODlkMTRjYzZjMTY1
OTNiZjRhZDA2NzgyN2U1M2EuLjViNWZmNzk3NzM0NzE1MTk2MWE0NWMzNDk3ZWEyZjU1MTM0NGIx
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3Vw
TmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU291cE5ldHdvcmtTZXNzaW9uLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xh
c3MgVVJMOwogc3RydWN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczsKIAogY2xhc3MgU291cE5l
dHdvcmtTZXNzaW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAv
VVJMU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2RiYTMyODY5NWZmY2IyNmYzODdiNjcyYWE5
Mzg3MzcyYjJlOTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiVVJMLmgiCi0KLSNpbmNsdWRl
ICJVUkxQYXJzZXIuaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwoU291cFVS
SSogc291cFVSSSkKLXsKLSAgICBpZiAoIXNvdXBVUkkpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJsU3Ry
aW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwotICAgIFVSTFBhcnNlciBw
YXJzZXIoU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0KCkpKTsKLSAgICAqdGhpcyA9IHBh
cnNlci5yZXN1bHQoKTsKLQotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM4OTU2LiBsaWJzb3VwCi0gICAgLy8gZG9lcyBub3QgYWRkIHRoZSBwYXNzd29yZCB0byB0
aGUgVVJMIHdoZW4gY2FsbGluZwotICAgIC8vIHNvdXBfdXJpX3RvX3N0cmluZywgYW5kIHRodXMg
dGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkKLSAgICAvLyBidWlsdC4gRml4aW5nIHNvdXBf
dXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMKLSAgICAvLyBu
b3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRp
b25zCi0gICAgaWYgKHNvdXBVUkktPnBhc3N3b3JkKQotICAgICAgICBzZXRQYXNzKFN0cmluZzo6
ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsKLX0KLQotR1VuaXF1ZVB0cjxTb3VwVVJJPiBV
Ukw6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBHVW5pcXVlUHRyPFNvdXBVUkk+KHNvdXBf
dXJpX25ldyhzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci19Ci0KLWJvb2wgVVJMOjpob3N0SXNJ
UEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewotICAgIHJldHVybiAhaG9zdC5pc0VtcHR5KCkg
JiYgZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGhvc3QudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0RW5jb2RpbmcuaAppbmRleCA3N2M1Mjg4ZmQwY2UwNTk4NjRlZjgxMjNlMDA3MmJi
N2MzNTcyM2RiLi43ZDAzZjg2M2QwZGY0OWQyZjc5YzdjM2E2ZDEzODJjZjQxNjgxMGU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKQEAgLTI1LDEzICsy
NSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBh
bC90ZXh0L1VuZW5jb2RhYmxlSGFuZGxpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgVGV4dEVuY29kaW5nIDogcHVibGljIFVSTFRleHRFbmNvZGluZyB7CitjbGFzcyBUZXh0RW5j
b2RpbmcgOiBwdWJsaWMgV1RGOjpVUkxUZXh0RW5jb2RpbmcgewogcHVibGljOgogICAgIFRleHRF
bmNvZGluZygpID0gZGVmYXVsdDsKICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29u
c3QgY2hhciogbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
QlN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKaW5k
ZXggYmFlMWJlYWFhYTM3YWRlMzAzYjA4ZjM0ODk0OTI0OTAxODY0NzljYS4uMGY0NmM1ZGNhYjI5
YjdiNDYzYmI2ZWNkMzFiMGViM2I3NThjMjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9CU3RyaW5nLmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkJTdHJpbmcuaCIKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0JTdHJpbmcuaAppbmRleCAxZmJlMDJjMTU4N2MxMjliOGQ1MDUwMmU2NDYwNGU3ODZj
ZTgyYTJhLi4xODRiNTUxZDQ4ZTljMjMxZWEwMmE3ODc1NmZlOTZmZWQzZTU2NjY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKQEAgLTQwLDggKzQwLDYgQEAgdHlwZWRlZiBf
TnVsbF90ZXJtaW5hdGVkXyB3Y2hhcl90KiBCU1RSOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSAgICBjbGFzcyBVUkw7Ci0KICAgICBjbGFzcyBCU3RyaW5nIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIEJTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggNmZmODllYzE4MGQ1ODM1YzU5MTQwZmM2YTM4
N2Y0N2IxMjViMGEzMi4uNDg1NDU0MmYwZDQwMTI2ODIyNWI3ZDYwZGZjNDJlN2ZiZTI1MGYzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxp
dGllc1dpbi5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxp
dGllc1dpbi5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2lu
Y2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3aW5pbmV0
Lmg+IC8vIGZvciBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSAogI2luY2x1ZGUgPHd0Zi9TdHJpbmdF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkVXRpbGl0aWVzV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
VXRpbGl0aWVzV2luLmgKaW5kZXggNWNkOWUwZTc1NzMxM2ZmMDIyOWE2Y2ZiYThlZDY0OTBhODFh
ZmUyOC4uYzM3ZjNlMmRlMTk2MWU2YTEzMDQ1NDc3Y2NhODY5MjY0ZjAzMjViOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaApA
QCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKLWNsYXNzIFVSTDsKIAogSEdMT0JBTCBjcmVhdGVHbG9i
YWxEYXRhKGNvbnN0IFN0cmluZyYpOwogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZl
Y3RvcjxjaGFyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2lu
LmNwcAppbmRleCAxZGZhNTBiNTMyZGQ4YjVhZjY2Njc1Zjg0NDlmZTU0MTkxMTc0ZWZmLi5hNmI2
NzJmYzcyN2ZlODM3OWEyZDBmN2UwNDYwNzE2OTYwY2ZiYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAi
SW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIK
ICNpbmNsdWRlICJUZXh0SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1
ZGUgIldlYkNvcmVUZXh0UmVuZGVyZXIuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwNjk5Nzk5MDYzMWU1YzM0
MzY0NzE4YWU2YWIxNzY1OTRjZGYzNjlkLi5kNTk2N2E1ODIwYzk3YWUyOGM2MjVhNTBkODAzOGUw
MGVlMjVkZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAi
SGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUg
IlJlbmRlckltYWdlLmgiCkBAIC00OSw2ICs0OCw3IEBACiAjaW5jbHVkZSAiVGV4dEVuY29kaW5n
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAibWFya3Vw
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5kZXggMGI2YzQyZWUyZDA4
MTY4YmVkZWZjOGYzZDBmOWVhZTZlMWE2YmY1OC4uZjA0MGIwYWY5NmYzYjhiYmQ5ZjU0OTMyOTMx
MmI4ZjRmNzA2OWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKQEAgLTIwLDEw
ICsyMCwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5k
ZXggZDA3NzdiMzQ1MGMzYTAyMGFlZmQ0M2E3MjNjYzZjYjEzM2RlYWUwYi4uMzMyZjI4NTMxZDM4
OGNmZTJjM2Q1OGE5NGMzZjI2MTdkY2I5MTY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7
CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBVUkw7
CiAKIGVudW0gY2xhc3MgSGl0VGVzdFByb2dyZXNzIHsgU3RvcCwgQ29udGludWUgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCmluZGV4IGVkMzMz
NWUxMzc0ZDhmNzIyOTI1MmQ1NGNlMDY3Y2MzODQ3NjgxYmQuLjc0NjdmZjM4NjU2ODJiOGJlNjNi
YjY3ZGViZDcxOWE0YzhiN2UzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQXR0YWNobWVudC5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJGcmFtZVNlbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlJl
bmRlclRoZW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKaW5kZXggOTk5OTZlMDFlZDA3MWFmNTg3
MWExZGExNjZjNjMxNDlhMTNiNGU3NC4uNzIyMWRmY2I3ZGRkZTU5MDM5Mjc2YWRkYzlmMzliZGEy
ZDc4OTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIHZvaWQgU1ZHSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2ZW50KCkKIFN0cmluZyBT
VkdJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlKSBj
b25zdAogewogICAgIFVSTCBiYXNlID0gZWxlbWVudCgpLmJhc2VVUkkoKTsKLSAgICBpZiAoYmFz
ZSAhPSBibGFua1VSTCgpKQorICAgIGlmIChiYXNlICE9IFdURjo6YmxhbmtVUkwoKSkKICAgICAg
ICAgcmV0dXJuIFVSTChiYXNlLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0
cmlidXRlKSkuc3RyaW5nKCk7CiAgICAgcmV0dXJuIGVsZW1lbnQoKS5kb2N1bWVudCgpLmNvbXBs
ZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAKaW5kZXggNjg1MDRhYTg0ZjI2Y2Ix
OTNmZjM1ZmEwOGIwYTRmNmQxZTU1ZmMyYy4uZGExM2I3N2I2ZjNkMWI4MjgzZGNhOTk4OGQ4ODc2
ZGQzNmUxNWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAKQEAgLTI1
LDcgKzI1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVPd25lclByb3h5LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA4N2Uy
ODIzZjllNzFiNjdiZDQ4MWU4ZTg4NDExYmFkMDAxMjY0Yjk4Li5jZDNmZDBkMWUyNTlkYWI0ZTMz
YTY5YWI2YWQxODQ2ZDlhZTVlMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaApAQCAtMjcsNyArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbWFnZS5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaApp
bmRleCAzZjViYzNhNzU2ZTY4NzkxYmFjOGQzNjgzYjZjM2MxNjc0NmQ5ZTQyLi4zMmU3MjJiZmEy
NzM0NTRjNGI1YTExNGVmODA5NjQzNzUyMzRmODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKQEAgLTMzLDcgKzMzLDYgQEAgY2xhc3MgTGF5b3V0U2l6
ZTsKIGNsYXNzIFNWR0ltYWdlOwogY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CiBjbGFzcyBS
ZW5kZXJPYmplY3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFNWR0ltYWdlQ2FjaGUgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCA2OTgwNmJlNjc3MDNlMmU5NDlmMzQxZDVj
OTg2YTg1ZWEyZDdlMjRmLi40Y2ZjZThkNGIwMzc4NTc5MTQyMjY3YWE2YjgwODc2NzEyNmIwNDI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1
ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDY3ZTA2YTFiNzljNThlMDg0Yzc3YTU2YjJiZjc3OTc4
ZjQzNjBlMWYuLjkwYmNiYmI1ZDc1YTk1NTRkNzhkNzViZDA1ZmRlYmQxN2FhNzkzZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIElu
dGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgICAgICAgICAg
YmFja2luZy0+c2V0VGlsZVNpemVVcGRhdGVEZWxheURpc2FibGVkRm9yVGVzdGluZyhmYWxzZSk7
CiAgICAgfQogCi0gICAgV2ViQ29yZTo6Y2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9y
VGVzdGluZygpOworICAgIFdURjo6Y2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVz
dGluZygpOwogICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhWZWN0b3I8U3RyaW5n
PigpKTsKICAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFVzZXNPdmVy
bGF5U2Nyb2xsYmFycyhmYWxzZSk7CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRp
bmdzOjpzZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9yKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMubW0KaW5kZXggNmZjZGNiZWRkM2Y3ZGE0Y2M1NDIwYTkzNjczNDI5NDFhNWMxMTQ5
Ny4uN2M1YjdhZDg0MmQ5OThmZTYxYTAxNDIzMDUyYzBhMWU2MGI5MzNmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMubW0KQEAgLTMyLDggKzMyLDggQEAKICNpbXBvcnQgIkV2ZW50SGFu
ZGxlci5oIgogI2ltcG9ydCAiSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKLSNp
bXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+
CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogI2lmIFBMQVRGT1JNKElPUykK
IFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU3RyaW5nIEludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgRE9N
VVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybC5o
cmVmKCkpOworICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybC5ocmVmKCkpOwog
fQogCiBib29sIEludGVybmFsczo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggNjQ4ZmJk
MjZmYWMzNmE2NWM5OTU3YzUxMTU3ODg3NjQ2ZjJkYzI2Mi4uNTExODFkYWU3MmUxM2UyYmJkMTUz
ZTgxMWMxNDM2NGQxY2Q4YTE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2UK
IAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RVUkwgeyByZXF1ZXN0LnVybCgpLCBtb2RpZmllZFJl
cXVlc3RVUkxTdHJpbmcgfTsKICAgICBpZiAoIW1vZGlmaWVkUmVxdWVzdFVSTC5pc1ZhbGlkKCkp
IHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJNb2NrQ29udGVudEZpbHRlciBmYWls
ZWQgdG8gY29udmVydCAlcyB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVzdFVS
TC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5n
LCAiTW9ja0NvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgJXMgdG8gYSAgVVJMLlxuIiwg
bW9kaWZpZWRSZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5
bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRD
b29yZGluYXRvci5jcHAKaW5kZXggOWI2ZTk1ZTIxNTQ4MzBjMDAwM2Q2ZTIxODAwM2FjZWFhMjJm
ZWQ1MS4uNDkyOWU4YWUzZDE5ZGM4ZWIxMzUwYWQ1ZTE1YzA1MTNmMTY4MTMwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0z
Myw4ICszMyw4IEBACiAjaW5jbHVkZSAiTW9ja1BheW1lbnRNZXRob2QuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9X
ZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3Jl
VGVzdFN1cHBvcnQuY3BwCmluZGV4IGQyNDEyMDZhMjhkZDVmNjQ3MGRhOWZiODRlOWVkNGZjNzRj
Mjg3YjAuLjU4MDlmMGJlZGYwZTdhMDcxNzI4ZDA5ZWI5Mjk3NDdjNGI0ZWUwN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTM5
LDEyICszOSwxMiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAi
VVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nh
bGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9V
UkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiB1c2luZyBuYW1l
c3BhY2UgSlNDOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdv
cmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCmluZGV4IDkw
MGMyY2I0MDQ2MmEwZWJlMzcwMjhhMzc1YTYzM2ZlYWY5NTM0ZjEuLjAzMjFjMmM3ZmVkMjU2NjI4
ZmYyNmNlZDkxM2FlYjhhZmMzMGUwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmgKQEAgLTM1LDggKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBVUkw7Ci0KIGNsYXNzIEFic3RyYWN0V29ya2VyIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJh
Y3RXb3JrZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oCmluZGV4IDViOWEwYmUzNjljMjk5YzBmYjc1NDEwNzhmYzc2NTZkNmRlNzll
YzEuLjI4MmRkMDZiYzMzOGExZTA2OWE1YmQ0NmQ4NjNmYzMyOWQwYmE0MWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNp
bmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENv
bnRyb2xsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZVByb3h5LmgKaW5kZXggMzZiZDAwNzA3ZDBhNjhkYjMwNzYyNzJiYTY1ZjMwYTNhOTI3ZjFlNy4u
ODU4NWE1YmZmOTNiMDQ2NjVkZTUzMjFlZDMyYjkyZmZhOTc2YTE3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKQEAgLTQyLDcgKzQyLDYg
QEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXb3JrZXI7
CiAKIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2VyIGNvbnRleHQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKaW5kZXggZGY0MzcxYWUyM2Mz
MDMwNmVhN2JmNjQwZDI3ZjllMTRiOTc1ZTRiMi4uYTFkM2VhNzU3NmU3ZWEzNGE2NGNiOTE1NDdk
ZTc2YWNmNTE4YmRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJ
bnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVj
dG9yUHJveHkuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oCmluZGV4IDUzYzc3NjE1Njc1
NWI3MDZiOWQyNDkzNzE2YTgxMjUyN2ZjYTM1ZjguLjkyY2ZjYzc3MDZmMDM0ZTU3YjlmODJlOWJh
MjdiYTNhNTFhMDlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmgK
QEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggZTU3YzMyM2NkZTllNmY0
ZjgwYWY5YjI1YjJjZmUxZWUyZTczNzRkOS4uMDRhNDFjMjFjYjJmNzUzMWZkZTYxOWU0ZDY3ZGQ1
NjQ0OTA1Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5oCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNs
aWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCAxYzZhYTE2NWI1OTE4NzE0N2M4YmE4MDk1NjFiMzAz
MTVjODRiMGI3Li44NGYxMWUyNmVlYzZiZjkyMWJiMDY1M2EyYjk1OTIzNzZjNDNjM2MxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgog
I2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGQ3MTQxMjQ4NWE5NjkwNDlhZGI0OTY1OTc0
ZGJlOTFmNWVlMTkxODkuLjNkYzU0ZjZjNDczZGIzNzY3NTI1ZDFjYTQxMDNkNWQ2YTU2Yzk2OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtMzksNyArMzksNiBAQCBj
bGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vdGlmaWNhdGlv
bkNsaWVudDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaAppbmRleCA5
YjliY2M4YTIyZjlkNzY3MTI5ODk3ZWMwMWYzN2IyYTU1MjFiN2VkLi43YjIzOWYzMDdkYTcxZTE1
NmQ4N2JhMjM1M2I1MWIxYTMzMzVmZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyLmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU1ZhbHVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudERhdGEuaAppbmRleCAxNDNkN2Q5ZTA0NWQ1NGUxMWE4YzZlZDlhYzE0ZTM3YjE1NmEwNTI5
Li5mOTkxZjMyY2U2ZDNhOWIyNTdhNTYxMmI0NjM2NWE2NzlhZTJkMTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERh
dGEuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDQw
ZDQwZGFkYTBiMThmMjJhODgzN2NiOTc2OGE0YTk5NmUyZTZiZDIuLjhkYjljNDE2YmRmNzNjNjg2
YWVmMTU4ZDY0ZDYxMDA0MmZlOGVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTQ4LDkgKzQ4
LDkgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9T
Y29wZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBDT05UQUlORVJfUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBDT05UQUlORVJfUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmlu
ZGV4IDNiZTk1MDQyNWVhNzgwY2ZmZDViYmVlNzg1ZmE0NTMyYWY5NGEzZDcuLjRkNjIwODg5Zjkz
NGE3ZWZhMjYwYjMyMDliNGUxNzZiMDJhYjBkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTI5
LDExICsyOSwxMSBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJV
UkxIYXNoLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5o
CmluZGV4IDcyOGMzN2NmZTYyYTVmZTU2MGFiNmM0ZWIxODY0ZjA0NDRjZjkzNmUuLmNlMzYxZDNm
M2QwZjM4NzNhODZkYzhhOTM4YmFmMDNmMWQxNjRhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgK
aW5kZXggMDg3MGJiNmVmNjAyOTg0NWNkNGE5YjZkZTIzMDBhODgzY2FhMWMyMi4uOTNjMmRmNmZm
MGQyZjM5OGU4NDEyNjhiZTE5NjY0ZjdhOWNlNjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKQEAgLTM0LDcgKzM0
LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCmluZGV4
IDFjM2Q3NDZiMjNkYjkzZTM1NmYyMmU2MzEyMGIxY2Q0ZjRjZGIwYzkuLmJjZGQ4YzQ2OTI3ZGM0
MDA2MGIwZGVmOWRlYmVlNWVlYTVlZjE3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5j
cHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKKyNpbmNsdWRlIDx3
dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleS5oCmluZGV4IDcxMGY0MTJiNDcyZDhmMTc0MmUwYmVlNDhkNTAyYmU4OWE5YTAzOTkuLmU2
YWY3MzMxYzdiOTU0MzlkNTM5OGE5YThjMzdlMzQ3NmI4ZmRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
IAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDIsNyArMTAy
LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXlIYXNoIHsKIHRlbXBsYXRl
PD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5PiB7CiAgICAgc3RhdGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkg
ZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXk6OmVtcHR5S2V5KCk7IH0KIAotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1
ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHNsb3Quc2V0
U2NvcGUoV2ViQ29yZTo6VVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9CisgICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29wZShVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnNjb3BlKCkuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAppbmRleCA1MDUyMGI2YTE0MWIxODNmMDQ4ZGU2MDkzMjlmOWNjODFmMjU0ODcwLi42MjYx
N2NiODdhMTBjMTVjNTIzOGUwYzBjYWE3NjdmMmJlOGFjODJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJD
bGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmNwcAppbmRleCBhY2Q2NWU5YzgwYTA2N2YyNzJhNThlMWQ5NzM1YzExZmU2NTEyYTk0
Li4xZmI0MTVlMmQyZDA4NjUzZWZjYTI3MWJlOWM4ZjBlYWU0NTRmZjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIuaAppbmRleCBkZTIyYzc5ZjhlOGQwZTJiODE3MjRmNjUxMTFhOWYxMGE1ZDIwMzY5Li4z
MjEwZTMyOTllNmZjYjgzMmZjMzljOGVkNmNhOGU2Njc4YmM2YmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgK
QEAgLTQwLDcgKzQwLDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBV
Ukw7CiBzdHJ1Y3QgQ29va2llOwogfQogCkBAIC03OCw5ICs3Nyw5IEBAIGNsYXNzIFdlYkNvb2tp
ZU1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjCiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNl
c3Npb25JRCwgV2FsbFRpbWUsIENhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBzZXRDb29raWUoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENhbGxiYWNrSUQpOwotICAgIHZv
aWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVu
dFVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEFsbENvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29raWVz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxh
dGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwog
ICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZTNkZTlkOGNmYWI5ZmQ1ZjZmYjY4YTJjMDcx
MDI2MmE4NTVkYzQ0OC4uMGIxZmQ1NTllMGJlYjI2ZTAwMzc5NDM0YWRhZTRlNWM5ZTQ3ZGFhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI5LDkgKzI5LDkgQEAKICAg
ICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiAgICAg
dm9pZCBTZXRDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6
Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBT
ZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVS
TCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBTZXRDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywg
VVJMIHVybCwgVVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgdm9pZCBHZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
VVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVD
b29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNv
b2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRp
bWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3Vz
dG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCmlu
ZGV4IGMyYjE0N2M1ZjcyMWI5NTQwNzQ1YjY0OGQyMGJiY2I3Mjg0NzFhYmUuLjZlOTAyOGRiNWM5
OTdiZDJhMzFmZWUxOGEzM2MxMjRiN2ZmMTQyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9t
UHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCkBAIC0z
NCw4ICszNCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRFbmNv
ZGluZy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
TlNVUkxDb25uZWN0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBiNjc2NjE0OWVlZDEx
ZTljMjhiMGUxNDMzYWU2ZGVjMGFkNWQ2OTk3Li40ZTBmN2ZhN2RlNjgzYmNhMTI2NTg4ZDFjNDEy
M2NkNWJhZmE0MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Zp
bGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBAIC03MCw3ICs3MCw3IEBA
IHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwp
OwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1
cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rp
b25DaGVjaykKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogewogICAg
IC8vIFRoZSBjb25uZWN0aW9uIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBpZiBOZXR3b3JrUHJvY2Vz
cyBwcmV2b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJlYXNvbi4KICAgICBCbG9iRm9yQ29ubmVjdGlv
bk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNv
bm5lY3Rpb24pOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29ya0Nvbm5lY3Rpb25UCiAg
ICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6
VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQordm9pZCBOZXR3b3JrQmxv
YlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBp
bnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkg
bm90IGJlIHJlZ2lzdGVyZWQgaWYgTmV0d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9y
IGFueSByZWFzb24uCiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJh
dG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKQEAgLTExMyw3ICsx
MTMsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNl
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKgogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5h
ZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVS
TChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiB1cmwpCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJM
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVy
bCkKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgTmV0
d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9yIGFueSByZWFzb24uCiAgICAgQmxvYkZv
ckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rp
b24uZmluZChjb25uZWN0aW9uKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIE5ldHdvcmtCbG9i
UmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiBjb25uZQogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5yZW1vdmUodXJsKTsKIH0KIAotdWludDY0
X3QgTmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQordWludDY0X3QgTmV0
d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
IGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9ibG9ic0ZvckNvbm5l
Y3Rpb24uY29udGFpbnMoY29ubmVjdGlvbikgfHwgIW1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQo
Y29ubmVjdGlvbiktPnZhbHVlLmNvbnRhaW5zKHVybCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
MTY5LDcgKzE2OSw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6Y29ubmVjdGlvblRvV2Vi
UHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQCiAgICAgbV9ibG9ic0ZvckNv
bm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwogfQogCi1WZWN0b3I8UmVmUHRyPEJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVzSW5CbG9iKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCkKK1ZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JSZWdp
c3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9ibG9ic0ZvckNvbm5lY3Rpb24uY29u
dGFpbnMoJmNvbm5lY3Rpb24pIHx8ICFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKCZjb25uZWN0
aW9uKS0+dmFsdWUuY29udGFpbnModXJsKSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JS
ZWdpc3RyeS5oCmluZGV4IGMxOWE2NTllMGVmNDU1YmIxMDg4YmNmODVjMjlmZGVhYzkzNzI2Mzku
LjkwNmI5ZThhNTJmZTRjZmEwMjY2Y2Q5NzFkNzE4Y2UyYzkyNTU0NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVn
aXN0cnkuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8
V2ViQ29yZS9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTsKQEAgLTQ2LDI1ICs0NiwyNSBAQCBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrQmxv
YlJlZ2lzdHJ5KTsKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CiAgICAgc3RhdGljIE5ldHdv
cmtCbG9iUmVnaXN0cnkmIHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9i
VVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6
QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVj
dGlvbkNoZWNrKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xp
Y2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOwot
ICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB1aW50NjRfdCBibG9iU2l6ZShOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgcmVn
aXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQ
YXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayk7CisgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZp
bGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAg
ICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwg
Y29uc3QgVVJMJik7CisgICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCB3cml0ZUJs
b2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBw
YXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0
cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKTsKIAogICAgIHZvaWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKik7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBXZWJDb3JlOjpVUkwm
KTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZp
bGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJik7Cisg
ICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0lu
QmxvYihjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICB+TmV0d29ya0Jsb2JSZWdpc3RyeSgp
OwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwg
SGFzaFNldDxXZWJDb3JlOjpVUkw+PiBCbG9iRm9yQ29ubmVjdGlvbk1hcDsKKyAgICB0eXBlZGVm
IEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBIYXNoU2V0PFVSTD4+IEJs
b2JGb3JDb25uZWN0aW9uTWFwOwogICAgIEJsb2JGb3JDb25uZWN0aW9uTWFwIG1fYmxvYnNGb3JD
b25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGQwMzc4N2ZiNGEy
NWQ0OWFlYzNlZTY3NzViODc1YmY4YjIwMzAzOTMuLmY1ODRiYzQ2NjA4NTFjMDBhZmFhYmUxNWZi
YjA5OWFhMjlhNmRjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE1MCwzMiArMTUw
LDMyIEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDogcHVibGljIFJlZkNv
dW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByCiAgICAgdm9pZCByZW1vdmVMb2FkSWRlbnRp
ZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVk
KHVpbnQ2NF90IHdlYlBhZ2VJRCk7CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291cmNl
TG9hZElkZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2Vp
dmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RV
UkwpOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElk
ZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnREb3dubG9h
ZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lkIGNvbnZl
cnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFp
blJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIHZv
aWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBTdHJpbmcmIGNvb2tpZVN0
cmluZywgYm9vbCYgc2VjdXJlQ29va2llc0FjY2Vzc2VkKTsKLSAgICB2b2lkIHNldENvb2tpZXNG
cm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYgY29v
a2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQpOworICAgIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29sJiByZXN1bHQp
OwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcywgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wmIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCk7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2b2lk
IGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNz
ZWQpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWUoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKLSAg
ICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsK
LSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNr
KTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNv
cmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wg
c2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKICAgICB2b2lkIHByZXJlZ2lzdGVyU2FuZGJv
eEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVCYWNrZWRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKLSAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNr
ZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Jj
VVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7Ci0gICAgdm9pZCBibG9iU2l6ZShjb25z
dCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7Ci0gICAgdm9pZCB1bnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25z
dCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CisgICAgdm9pZCBibG9iU2l6ZShjb25z
dCBVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVS
TChjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIpOwog
CiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6RGF0YUtleSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBz
ZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpOwogCi0gICAgdm9p
ZCBjcmVhdGVTb2NrZXRTdHJlYW0oV2ViQ29yZTo6VVJMJiYsIFBBTDo6U2Vzc2lvbklELCBTdHJp
bmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90KTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldFN0cmVh
bShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3Qp
OwogICAgIHZvaWQgZGVzdHJveVNvY2tldFN0cmVhbSh1aW50NjRfdCk7CiAgICAgCiAgICAgdm9p
ZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA3NzNkOWQ4ZTEwMzNiNjJlNDgxMzNiOTYy
MGI2MjliZjc4ODZmZWFkLi45ZWZlYTU3NTRiNGRjY2Y2MzNiMWU0MzA0ZGJhMzc0NGQ3ZGEzZGFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDI4
ICszNCwyOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291
cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSkKIAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcs
IGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKLSAgICBTZXRDb29raWVzRnJvbURPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAgICBTZXRDb29raWVzRnJvbURPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5n
KQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wg
ZW5hYmxlZCkKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3Ry
aW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKQotICAgIEdldFJh
d0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0
eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6OlVS
TCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpCi0gICAg
RGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwg
U3RyaW5nIGNvb2tpZU5hbWUpCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAgICBHZXRSYXdDb29raWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIC0+IChWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAgIERlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogCi0gICAgUmVnaXN0ZXJG
aWxlQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCi0g
ICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFZlY3RvcjxXZWJDb3JlOjpCbG9i
UGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJM
RnJvbVVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMLCBib29sIHNob3Vs
ZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmws
IFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25I
YW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkK
KyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwsIGJvb2wgc2hv
dWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogICAgIFByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lv
bnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzLCBX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4dGVuc2lvbkhhbmRsZXMpCi0g
ICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoV2ViQ29yZTo6VVJMIHVybCwg
V2ViQ29yZTo6VVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVu
dFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoV2ViQ29yZTo6VVJMIHVybCwgV2Vi
Q29yZTo6VVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdp
c3RlckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCkKLSAgICBCbG9iU2l6ZShXZWJDb3JlOjpVUkwg
dXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkKKyAgICBSZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZChVUkwgdXJsLCBVUkwgc3JjVVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBhdGgs
IFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGb3JTbGljZShVUkwgdXJs
LCBVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKKyAgICBVbnJlZ2lzdGVy
QmxvYlVSTChVUkwgdXJsKQorICAgIEJsb2JTaXplKFVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1
bHRTaXplKQogICAgIFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFZlY3RvcjxTdHJpbmc+IGJs
b2JVUkxzLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcikKIAogICAgIFN0b3JlRGVyaXZlZERh
dGFUb0NhY2hlKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhS2V5IGtleSwgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCiAKICAgICBTZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAotICAgIENyZWF0ZVNvY2tldFN0cmVhbShX
ZWJDb3JlOjpVUkwgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBh
cnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICBDcmVhdGVTb2NrZXRTdHJlYW0oVVJM
IHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVp
bnQ2NF90IGlkZW50aWZpZXIpCiAKICAgICBFbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suY3BwCmluZGV4IGNmNGU2NGQ1MDNmMWE5ZWUwYmRjNWUwZDUyOGM0N2YyOTQyOWE2NDEuLjA1
OWExMzAxNDNiYTVmM2E3ZTBkMWViMWIxNDY2ZmE5MWZhMGI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTEwNiw3ICsxMDYs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDbwogICAgIGlmIChyZXNwb25zZS5pc0hUVFAwOSgp
KSB7CiAgICAgICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7CiAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwotICAgICAgICBpZiAocG9ydCAmJiAh
aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7
CisgICAgICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0
LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoeyBTdHJpbmcoKSwgMCwgdXJsLCAi
Q2FuY2VsbGVkIGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgoKSArICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIiB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4
IDY1ZWFiYjJiZjNiNTlkMmZkNDdhYTQxMjY1ZGZmNjk5NDhiMzgwZGIuLmQ3M2E2ZWE2ZmYxMmMz
MDRiZmE3NGJhYjk1YmU2YWVlZTY2Yjg5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNDgsOSArNDgsOSBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMTc5N2Q3ZTAyNWEwNGRkMjNj
ZTQ5N2M4MTFhZjI4MWEyNTk3MTI1ZC4uODQ2Y2I0ZDNhZDNiYzk1YTBhZWUxYmJlZTA2MDZkMjMx
NDVjMWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlcjsKIAogY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogcHVibGljOgotICAgIE5ldHdvcmtMb2FkQ2hlY2tl
cihXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBXZWJDb3JlOjpV
UkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVmbGln
aHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcyA9IGZhbHNlKTsKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoV2ViQ29yZTo6
RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiBy
ZWZlcnJlciwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxz
ZSk7CiAgICAgfk5ldHdvcmtMb2FkQ2hlY2tlcigpOwogCiAgICAgdXNpbmcgUmVxdWVzdE9yRXJy
b3IgPSBFeHBlY3RlZDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3I+OwpAQCAtNjksMTQgKzY5LDE0IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKIAogICAgIHZvaWQgc2V0
Q1NQUmVzcG9uc2VIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycyYmIGhlYWRlcnMpIHsgbV9jc3BSZXNwb25zZUhlYWRlcnMgPSBXVEZNb3ZlKGhlYWRl
cnMpOyB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICB2b2lkIHNldENvbnRl
bnRFeHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6OlVSTCYmIG1haW5Eb2N1bWVudFVSTCwgc3Rk
OjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQor
ICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3VtZW50
VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50
aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5Eb2N1bWVudFVSTCA9IFdURk1vdmUobWFpbkRv
Y3VtZW50VVJMKTsKICAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0g
aWRlbnRpZmllcjsKICAgICB9CiAjZW5kaWYKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
KCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3N0b3JlZENyZWRlbnRpYWxz
UG9saWN5OyB9CiAKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZEluZm9ybWF0aW9uIHRha2VOZXR3
b3JrTG9hZEluZm9ybWF0aW9uKCkgeyByZXR1cm4gV1RGTW92ZShtX2xvYWRJbmZvcm1hdGlvbik7
IH0KQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogCiAgICAgdm9pZCBjb250aW51ZUNo
ZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRs
ZXImJik7CiAKLSAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNrKGNvbnN0IFdlYkNvcmU6OlVS
TCYpIGNvbnN0OworICAgIGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2soY29uc3QgVVJMJikgY29u
c3Q7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlZGlyZWN0ZWRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAg
ICB2b2lkIGNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKQEAgLTExOCwxMSArMTE4LDExIEBAIGNsYXNz
IE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENo
ZWNrZXI+IHsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQ7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCBtX29yaWdpbmFsUmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBmb3IgQ09SUyBjaGVja3Mu
CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX2ZpcnN0UmVxdWVzdEhlYWRlcnM7IC8vIE5l
ZWRlZCBmb3IgQ09SUyBjaGVja3MuCi0gICAgV2ViQ29yZTo6VVJMIG1fdXJsOworICAgIFVSTCBt
X3VybDsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVyczsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQotICAgIFdlYkNvcmU6OlVSTCBtX21haW5Eb2N1bWVudFVSTDsKKyAgICBVUkwgbV9tYWluRG9j
dW1lbnRVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIApAQCAtMTMx
LDcgKzEzMSw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICBib29sIG1faXNTaW1wbGVSZXF1ZXN0IHsg
dHJ1ZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIHNpemVfdCBtX3JlZGlyZWN0Q291bnQg
eyAwIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fcHJldmlvdXNVUkw7CisgICAgVVJMIG1fcHJldmlv
dXNVUkw7CiAgICAgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5IG1fcHJlZmxpZ2h0UG9saWN5Owog
ICAgIFN0cmluZyBtX2RudEhlYWRlclZhbHVlOwogICAgIFN0cmluZyBtX3JlZmVycmVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBl
Yjg4NjY0ODEzOWNjN2I3NTllNzJjNjgxODI4MGI1ZDA0NzEwOWUwLi4wNmMxYjNhZDRlYWU0Y2Q3
ZDQyZDI5MDQ0NTUyOGE5OTRjY2E5MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNzYsMTMgKzc2LDEzIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxl
Z2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
ZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAjZW5kaWYKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBoYW5k
bGVGb3JXcml0aW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp3
cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZUZvcldyaXRpbmcsIHVpbnQ2NF90IHJlcXVl
c3RJRCkKIHsKICAgICBhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShX
VEZNb3ZlKGhhbmRsZUZvcldyaXRpbmcpKTsKICAgICBpZiAoIWV4dGVuc2lvbikgewpAQCAtMTAw
OCw3ICsxMDA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVTdG9yYWdlUGFyYW1l
dGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF8KICAgICAgICAgY2FsbGJhY2so
U3RyaW5nIHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0sIHF1b3RhKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCiB7CiAjaWYgRU5B
QkxFKFNFUlZFUl9QUkVDT05ORUNUKQogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IGZiMzc3M2QxZWZlMWQzNDIxNmQ2YWVmY2U0ODUzZWM3ODk5ZGE1NGMuLmFhYWRiMTMzYzc5
ZmZhMTFjMGNmNjgyMzAyZTdiZDBhMGU2MWQzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTY1LDcgKzY1LDYgQEAgY2xhc3MgUHJvdGVj
dGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiBlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxz
UG9saWN5Owogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogc3RydWN0IFNlY3VyaXR5
T3JpZ2luRGF0YTsKQEAgLTE3Miw3ICsxNzEsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1
YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQKICAgICB1
c2luZyBDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHF1b3RhKT47CiAgICAgdm9pZCBjYWNoZVN0b3Jh
Z2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJh
Y2smJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oY29u
c3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
Ym9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nQ29v
a2llSW5mb3JtYXRpb247IH0KQEAgLTI5Myw3ICsyOTIsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vz
cyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQK
ICAgICB2b2lkIHN5bmNBbGxDb29raWVzKCk7CiAgICAgdm9pZCBkaWRTeW5jQWxsQ29va2llcygp
OwogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIHVpbnQ2NF90IHJl
cXVlc3RJRCk7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIHVpbnQ2NF90IHJlcXVl
c3RJRCk7CiAKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldElnbm9yZVRMU0Vycm9ycyhib29s
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFjNzNiZWQ0MmUyZDQ1YTdjZThjMWZjNDRiM2M3NmYyYmIy
YTllYmUuLjc4ZjljYjI5ODZkMzA0YzViMDJlZjgzNWI3MTk3MjBjNDMwZTIzYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtNzcsOSArNzcsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgRGlkR2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXModWlu
dDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4
dGVuc2lvbnMpCiAjZW5kaWYKIAotICAgIFdyaXRlQmxvYlRvRmlsZVBhdGgoV2ViQ29yZTo6VVJM
IGJsb2JVUkwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBo
YW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgV3JpdGVCbG9iVG9GaWxlUGF0aChVUkwg
YmxvYlVSTCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhh
bmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIFByZWNvbm5lY3RUbyhXZWJDb3JlOjpV
UkwgdXJsLCBlbnVtIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5KTsKKyAgICBQcmVjb25uZWN0VG8oVVJMIHVybCwgZW51bSBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJp
bmc+IGRvbWFpbnNUb0Jsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QsIHVpbnQ2NF90IGNvbnRl
eHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkNjM3MzhhZWVjOGEzNTM1ZDA5NjEw
MzY5ZTc4NjQ5MWIxZTlkMmY5Li4yNzQzZTEyOWM4NzlmNmIwYzI1YzIxMWJhMDA4OTM5NzhhM2Ew
YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIDogcHVibGljIE5ldHdvcmtMb2FkUGFyYW1ldGVy
cyB7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IGZyYW1lQW5j
ZXN0b3JPcmlnaW5zOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBXZWJD
b3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMOworICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CiAgICAg
c3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGQxYzY4
ODllYTY0OGNjYWNmMDhhYzE0YmU3YjZjNTJjYTNiMDNkMzYuLjQzYWVkNTQ2ZGVmNjBlOGFkY2Nl
ZmMxMzlhNzJmODZhZmY3NWRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk3Niw3ICs5NzYsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAog
ICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKCJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3Jp
Z2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVh
dGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxS
ZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50aWZpZXIo
KSk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENv
b2tpZUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9i
amVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSk7CiAKQEAgLTEw
MDMsNyArMTAwMyw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPCiAjdW5kZWYgTE9DQUxfTE9H
X0lGX0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5h
bChjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGlj
IHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVu
dGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nv
b2tpZUluZm9ybWF0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhZmIwZTljNzk1NjYzZWFiMDVlYzRh
ZjRmMzgyNTRiNzdmYWVjMWRhLi5mODc0ZjhkYmE2ZTljNWU1NjEwZjczNGQzNGNkNDc2MDFiMDRh
ODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIgZmluYWwKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRpYyBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9y
bWF0aW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7
CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiBsYWJl
bCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTEz
NCw3ICsxMzQsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwKICAgICB2b2lk
IGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYpOwogICAgIHZv
aWQgY29udGludWVQcm9jZXNzaW5nQ2FjaGVkRW50cnlBZnRlckRpZFJlY2VpdmVSZXNwb25zZShz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogCi0gICAgYm9vbCBzaG91bGRJ
bnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKKyAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZv
ckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKIAogICAgIGVudW0gY2xhc3MgRmlyc3RMb2FkIHsgTm8sIFllcyB9OwpAQCAt
MTY5LDcgKzE2OSw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogCiAgICAg
Ly8gQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxv
bmcpIGZpbmFsOwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydChXZWJDb3JlOjpVUkwm
JiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRDU1BWaW9s
YXRpb25SZXBvcnQoVVJMJiYsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAg
dm9pZCBlbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXZWJDb3JlOjpTZWN1cml0
eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpIGZpbmFsOwogCiAgICAgdm9pZCBsb2dTbG93
Q2FjaGVSZXRyaWV2ZUlmTmVlZGVkKGNvbnN0IE5ldHdvcmtDYWNoZTo6Q2FjaGU6OlJldHJpZXZl
SW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldFN0cmVhbS5jcHAKaW5kZXggNDJkMzZiYzRjYzNmZTQzMmYzNTI0YzgzYjBjOWY4ODRlOGQ3
NDQzYy4uYzVhNjJjNjhmZTlkYTY1NmU0MjMzZmJkMTM2OWEyYzY2MWUyOWE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3Bw
CkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1SZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gTmV0d29ya1NvY2tldFN0cmVhbTo6
Y3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVk
aXREYXRhKQorUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtTb2NrZXRTdHJlYW06OmNy
ZWF0ZShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBj
cmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU29ja2V0U3RyZWFtKFdURk1vdmUodXJs
KSwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBpZGVudGlmaWVyLCBjb25uZWN0aW9u
LCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggOTA2ZTU4ZWJmNTc0MjVkNjgzNzcw
ODkxNjg1ZmRhYmQyYTgzN2JjOC4uMzI2ODcxNmY0NDY5YzA5OTNmMjU5N2QwOWNiZTE1ODhlNmYy
M2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmgKQEAgLTM5LDE0ICszOSwxMyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOwotY2xhc3Mg
VVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1NvY2tldFN0cmVh
bSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRTdHJlYW0+LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0
d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmLCBQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0
aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIHN0YXRp
YyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0
aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogICAgIH5OZXR3
b3JrU29ja2V0U3RyZWFtKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtNjcsNyArNjYsNyBAQCBjbGFzcyBOZXR3b3Jr
U29ja2V0U3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1NvY2tldFN0cmVhbT4sIHB1
YmxpYyBJUEM6OgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFs
OwogCi0gICAgTmV0d29ya1NvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwmJiwgUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29u
bmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAgICBO
ZXR3b3JrU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBj
cmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6
U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogCiAgICAgdWludDY0X3QgbV9pZGVudGlm
aWVyOwogICAgIElQQzo6Q29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDlmMGM2Yjg2YjQyMGY0NTViZmZjMmRlNmI5NGVi
ZTdjOGJlMTQzYTAuLmQ0NTQzZjIzNWI5MDQ3YzU3MDljODFmZmRhMzg2MWM1OWY3ODQyNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTM2LDcgKzM2LDYgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIGNsYXNz
IEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTEsNyArNTAsNyBAQCBjbGFzcyBQaW5nTG9hZCBmaW5hbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxQaW5nTG9hZD4sIHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQwogcHJpdmF0ZToKICAgICB+UGlu
Z0xvYWQoKTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgY3VycmVudFVSTCgpIGNvbnN0Owor
ICAgIGNvbnN0IFVSTCYgY3VycmVudFVSTCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3Q7CiAKICAgICB2b2lk
IHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMmNhNjYyNWQx
YzAwZTZkMjdkNTI1ODg2MTcyMWZjYzUwYjUzNGI1NS4uOWQxNzAzNzg5NGY1YjUxMTAzOGRlMDZi
YWQwOWRkN2Y2MzRjN2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApA
QCAtOTAsOCArOTAsOCBAQCBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24gOiBwdWJsaWMgV2Vi
Q29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6OgogICAgIHZvaWQgc3RhcnRG
ZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29y
ZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJy
ZXIpOwogICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIG1h
dGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7Ci0gICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKHVpbnQ2
NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVS
TCk7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdpc3RyYXRpb25NYXRj
aFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRv
cE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpOworICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9u
cyh1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwp
OwogCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyPiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDA2MTk1
YjhhZDE5NDYxOGNkZmY2ZmZlOWQ1NzVlOWYzYTQ0NGE3ZWQuLjI5NGJkNTk5ZDQwYmNjMjExODRk
OTdkN2FkNTBjYmM4YzMwMWEyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsOSArMzYsOSBAQCBtZXNzYWdlcyAtPiBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gewogCiAgICAgRGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2Uo
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBrZXkpCiAKLSAgICBNYXRjaFJl
Z2lzdHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRp
Zmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFdlYkNv
cmU6OlVSTCBjbGllbnRVUkwpCi0gICAgV2hlblJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNl
cnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKLSAg
ICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVl
c3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdp
biwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKKyAgICBNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRf
dCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGllbnRVUkwpCisgICAgV2hl
blJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVl
c3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdp
biwgVVJMIGNsaWVudFVSTCkKKyAgICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VS
ZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKICAgICBSZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmln
aW4sIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBjb250
cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogICAgIFVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciBpZGVudGlmaWVyKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBkODZhYjYwOTM5
Nzc2NWM1YmJmYTc5MzU0YTExNWI3Yzc0OTFkMjdlLi42MTE2OTJkMTk0OTk3MmZlYjFlM2NlODVi
ODhiODU4NTU5ZmU2NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAgbWVz
c2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKICAgICBGaW5kQ2xpZW50
QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpOwogICAgIE1h
dGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbSh1
aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgU2V0U2NyaXB0UmVzb3VyY2Uo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6VVJM
IHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgV2ViQ29yZTo6VVJMIHJlc3BvbnNlVVJMLCBTdHJp
bmcgbWltZVR5cGUpOworICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVS
TCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVUeXBlKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA1NWEwOGJjMDhjMDhkMWQ4YThh
Yzg2MjI4ZGY2NTAxYTkxNTlhODdhLi5iMTliZmQxMDA1NzI2NzY0MjE2NzAwZjViMzg0YzZiZWVm
MTQzMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBFbmdp
bmU6OnJldHJpZXZlQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYgb3IKIH0KIAogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpV
UkwmJiB1cmwsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGZyb20oc2Vzc2lv
bklELCBbY2FjaGVJZGVudGlmaWVyLCB1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAgICAgIGVuZ2luZS5y
ZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHVybCksIFdURk1vdmUoY2Fs
bGJhY2spKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZQogICAg
IH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBV
UkwmJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNoZShj
YWNoZUlkZW50aWZpZXIsIFt1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
cmVzdWx0Lmhhc192YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA4YzJlOGNjZTE0ZDgxMjkw
OTdmNzFhYzIxZTI2ZTM2MWZkNmQ2ODMzLi43ZTE0MjI1YmVlNTBhOTc3YjVmYzkyNTE0NjU0Njdi
YjM0ZDgzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgRW5naW5l
IDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEVuZ2lu
ZT4gewogICAgIHN0YXRpYyB2b2lkIHJlbW92ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2Fs
bGJhY2smJik7CiAgICAgc3RhdGljIHZvaWQgcmV0cmlldmVDYWNoZXMoUEFMOjpTZXNzaW9uSUQs
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwogCi0gICAgc3RhdGljIHZv
aWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxi
YWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBwdXRSZWNvcmRzKFBBTDo6U2Vz
c2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRp
ZmllcnNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMo
UEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogCkBAIC0xMDQsNyArMTA0
LDcgQEAgY2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiwgcHVibGljIENh
bk1ha2VXZWFrUHRyPEVuZ2luZT4gewogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNlbnRhdGlvbigpOwogCi0g
ICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKKyAg
ICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmLCBX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgcHV0
UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRp
ZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpD
YWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRp
ZmllcnNDYWxsYmFjayYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCmluZGV4IDdmYjZlMDgx
OGVjMjQxNTk1ZjgyYzY3NzJjODRiNWUzMjBjZjc2MTUuLjg5ODAxOGU0ZWEzN2ZiMTJmYjYzMmIx
OTJmZThhZWExYzcxNDY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgc3RydWN0IFJlY29yZEluZm9ybWF0aW9uIHsKIAogICAgIHVpbnQ2NF90IHNpemUgeyAw
IH07CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgYm9vbCBoYXNW
YXJ5U3RhciB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFyeUhlYWRl
cnM7CiB9OwpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBDYWNoZSB7CiAgICAgY29uc3QgU3RyaW5n
JiB1bmlxdWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVOYW1lOyB9CiAgICAgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OlVuaW5pdGlhbGl6ZWQ7
IH0KIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZXRyaWV2
ZVJlY29yZHMoY29uc3QgVVJMJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxs
YmFjayYmKTsKICAgICBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvIGluZm8oKSBj
b25zdCB7IHJldHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07IH0KIAogICAgIHZvaWQgcHV0
KFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKQEAgLTk0LDggKzk0LDgg
QEAgY2xhc3MgQ2FjaGUgewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERlY29kZWRSZWNvcmQ+
IGRlY29kZVJlY29yZEhlYWRlcihjb25zdCBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29yZCYp
OwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9t
VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1h
dGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIFZl
Y3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFVSTCYpOworICAg
IGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFVS
TCYpIGNvbnN0OwogICAgIFJlY29yZEluZm9ybWF0aW9uJiBhZGRSZWNvcmQoVmVjdG9yPFJlY29y
ZEluZm9ybWF0aW9uPiosIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQmKTsK
IAogICAgIHZvaWQgc3RvcmVSZWNvcmRzKFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxs
YmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCmluZGV4IDI5YjM4
YjFhMmUzZWJiNDExNzcyYTJhZWFhYmRjZWZiM2NkNGRlNzMuLmM2MmNiM2FiODU3NDhhNWIwYzg5
ZTU3YjE1Y2YxYzA1NmQ4NzEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
LmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcQogICAgIH0pOwog
fQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3JkcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCkKK3ZvaWQgQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgVVJMJiYgdXJsKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlUmVj
b3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hlICUiIFBSSXU2NCwgcmVxdWVzdElkZW50aWZpZXIs
IGNhY2hlSWRlbnRpZmllcik7CiAgICAgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoc2Vzc2lvbklE
LCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShS
ZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
aAppbmRleCBiYzg4MGY1ZWI1ODlhZWRjZmVlNDVhMjM0MTgzOGIyNTNkYmE2MTA0Li42YTNkZGM2
M2QyYTA4ODVjYTRjNTE0MjVlNTZjM2E1Y2M5NjgzYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24uaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdAog
ICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZW1vdmVSZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlcyhQQUw6
OlNlc3Npb25JRCwgdWludDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlmaWVyLCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJiwgdWludDY0X3QgdXBkYXRlQ291bnRlcik7CiAKLSAgICB2b2lkIHJldHJp
ZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYpOworICAgIHZvaWQgcmV0cmll
dmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1Jl
Y29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpD
YWNoZVF1ZXJ5T3B0aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZl
Y3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGUzMTA3ZTIwMTQ2
ZDU5MDAzYjIwNmIxZGVkZjZmODYzY2I4YzU1ZWUuLjYwZTM5YWEyYzQwNWRjYzk4YWFhOTIwMDk0
YWUxMGQ4ZWFiNTQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbiB7CiAgICAgQ2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbik7CiAgICAgRW5naW5lUmVwcmVzZW50YXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcik7CiAKLSAg
ICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwgdXJs
KTsKKyAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwgdXJsKTsK
ICAgICBEZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRp
b25zIG9wdGlvbnMpOwogICAgIFB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0
b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3JkKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGYx
NWFkNmJkMGFkYzhjNzM1OGMxYTk0OTk4MGQ4NDA5ZTYyODMzYTQuLjAxN2FkNjNlMmM5ZWI3MzM0
NWM1NzYxZDlhYTQ3YmRmZjY5ZTMzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCBhMTU1ZTlmMmUzYWUxMzgxNDQz
YTRhMGNlMGIyNDA3NTdlNGE2OWViLi5kMDY2YTg5NWI5NDA1ODFkZWE4Y2MxM2JhNDQyMzQ1Nzll
NTZkZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBz
dGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9zdGljS2V5KFVzZURl
Y2lzaW9uIGRlY2lzaW9uKQogCiB2b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hl
ZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVXNlRGVjaXNpb24gZGVjaXNpb24pCiB7Ci0gICAg
V2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTCByZXF1ZXN0
VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAoZGVjaXNpb24gPT0gVXNlRGVjaXNpb246OlVz
ZSkgewogICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdl
SUQgJSIgUFJJdTY0ICI6ICVzIGlzIGluIHRoZSBjYWNoZSBhbmQgaXMgdXNlZCIsIHdlYlBhZ2VJ
RCwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFn
ZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5ldHdvcmtDYWNoZUtleSgpLCBX
ZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJldHJpZXZhbEtleSgpLCBXZWJDb3JlOjpE
aWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MsIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6WWVzKTsK
QEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hl
ZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksCiAKIHZvaWQgU3RhdGlz
dGljczo6cmVjb3JkUmV2YWxpZGF0aW9uU3VjY2Vzcyh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0
IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0g
ICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTCByZXF1
ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQ
cm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIHdhcyBzdWNjZXNzZnVsbHkgcmV2YWxp
ZGF0ZWQiLCB3ZWJQYWdlSUQsIHJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwog
CiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFJlc3VsdCh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29y
a0NhY2hlS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6cmV2YWxpZGF0aW5n
S2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0UGFzcywgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlOjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCmluZGV4
IGVmMjUyYTFjN2I5YzZiZDU2ODA5NzMwYzJkMDQ5MzM1MzFmMDRjOWIuLjQzOTIxYTAwMjRlOTdk
ZDM2ZjBkMjIxODUxZWM0YWU5ODc2MWExNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmgKQEAgLTIzLDE1ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnlfaAot
I2RlZmluZSBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeV9oCisjcHJhZ21hIG9uY2UKIAog
I2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKIAogI2lu
Y2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNw
YWNlIE5ldHdvcmtDYWNoZSB7CkBAIC01MCw3ICs0OSw3IEBAIGNsYXNzIFN1YnJlc291cmNlSW5m
byB7CiAgICAgV2FsbFRpbWUgZmlyc3RTZWVuKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFNlZW47
IH0KIAogICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhbnNpZW50
OyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0
IHsgQVNTRVJUKCFtX2lzVHJhbnNpZW50KTsgcmV0dXJuIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7
IH0KKyAgICBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QgeyBBU1NFUlQo
IW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQogICAgIGNv
bnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyBBU1NF
UlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVyczsgfQogICAgIFdlYkNv
cmU6OlJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KCkgY29uc3QgeyBBU1NFUlQoIW1faXNU
cmFuc2llbnQpOyByZXR1cm4gbV9wcmlvcml0eTsgfQogCkBAIC02NSw3ICs2NCw3IEBAIGNsYXNz
IFN1YnJlc291cmNlSW5mbyB7CiAgICAgV2FsbFRpbWUgbV9maXJzdFNlZW47CiAgICAgYm9vbCBt
X2lzVHJhbnNpZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTYW1lU2l0ZSB7IGZhbHNlIH07
Ci0gICAgV2ViQ29yZTo6VVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CisgICAgVVJMIG1fZmly
c3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX3JlcXVlc3RI
ZWFkZXJzOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7CiB9
OwpAQCAtMTA3LDQgKzEwNiwzIEBAIGNsYXNzIFN1YnJlc291cmNlc0VudHJ5IHsKIH0gLy8gbmFt
ZXNwYWNlIE5ldHdvcmtDYWNoZQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQotI2VuZGlmIC8vIE5ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcAppbmRleCA5NjYxNjhiNGUwNzgxMjQ4ZTU1
NjgxZmY0Yjc3N2U2ZTE2MDMwOTQ1Li5iMWMwZmIxMTFiZDViZDYxMTQ4OTk4YjRiOTdhN2YwZjNl
M2NhMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL0JyaWdhbmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODEsOCAr
ODEsNyBAQCBSZXF1ZXN0OjpSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKIAogUmVxdWVzdDo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KCkg
Y29uc3QKIHsKLSAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKHVybCk7Ci0gICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocGFyc2VyLnJlc3VsdCgpLCByZWZlcnJlciwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k+KHBvbGljeSkpOwor
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFVSTCh7IH0sIHVybCksIHJlZmVy
cmVyLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4ocG9s
aWN5KSk7CiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKG1ldGhvZCk7CiAKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpCkBAIC0xMTgsOCArMTE3LDcgQEAgUmVzcG9uc2U6
OlJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiBS
ZXNwb25zZTo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0CiB7Ci0g
ICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcih1cmwpOwotICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UocGFyc2VyLnJlc3VsdCgpLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5n
dGgsIHRleHRFbmNvZGluZ05hbWUpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UoVVJMKHsgfSwgdXJsKSwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2Rp
bmdOYW1lKTsKICAgICByZXNwb25zZS5zZXRIVFRQVmVyc2lvbih2ZXJzaW9uKTsKICAgICByZXNw
b25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOwogICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0
dXNUZXh0KHJlYXNvbik7CkBAIC0xNTIsOCArMTUwLDcgQEAgRXJyb3I6OkVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiBFcnJvcjo6b3BlcmF0b3IgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcigpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcihm
YWlsaW5nVVJMKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKGRvbWFpbiwgZXJy
b3JDb2RlLCBwYXJzZXIucmVzdWx0KCksIGxvY2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlPih0eXBlKSk7CisgICAgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBlcnJvcihkb21haW4sIGVycm9yQ29kZSwgVVJMKHsgfSwgZmFpbGluZ1VSTCks
IGxvY2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZUVycm9y
OjpUeXBlPih0eXBlKSk7CiAKICAgICByZXR1cm4gZXJyb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1h
bmFnZXIuY3BwCmluZGV4IDI3Njg5ZWUzYjcyMzk4ZDg1MTIwZjczNjM1N2MwMDcyNDIyODllOGUu
LmQ1NjVhNGVhMzc3MWU0NjM3OTczZjcxOWNhMTk4YTI4YzU1N2UwZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2Fw
dHVyZU1hbmFnZXIuY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2Fw
dHVyZUxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDxs
aW1pdHM+CiAjaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE0Niw3ICsxNDYsNyBA
QCBSZXNvdXJjZSogTWFuYWdlcjo6ZmluZEJlc3RGdXp6eU1hdGNoKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogICAgIFJlc291cmNlKiBiZXN0TWF0Y2ggPSBudWxs
cHRyOwogICAgIGludCBiZXN0U2NvcmUgPSBrTWluTWF0Y2g7Ci0gICAgY29uc3QgYXV0byYgcmVx
dWVzdFBhcmFtZXRlcnMgPSBXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0o
dXJsLnF1ZXJ5KCkpOworICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RQYXJhbWV0ZXJzID0gV1RGOjpV
UkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkpOwogICAgIGZvciAoYXV0
byBpUmVzb3VyY2UgPSBsb3dlcjsgaVJlc291cmNlICE9IHVwcGVyOyArK2lSZXNvdXJjZSkgewog
ICAgICAgICBpbnQgdGhpc1Njb3JlID0gZnV6enlNYXRjaFVSTHModXJsLCByZXF1ZXN0UGFyYW1l
dGVycywgaVJlc291cmNlLT51cmwoKSwgaVJlc291cmNlLT5xdWVyeVBhcmFtZXRlcnMoKSk7CiAg
ICAgICAgIC8vIFRPRE86IENvbnNpZGVyIGlnbm9yaW5nIGFueSBtYXRjaGVzIDwgMCBhcyBiZWlu
ZyB0b28gZGlmZmVyZW50LgpAQCAtMTY1LDcgKzE2NSw3IEBAIFJlc291cmNlKiBNYW5hZ2VyOjpm
aW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogLy8gVE9ETzogQ29udmVydCB0byBhbiBpbnRlcmZhY2UgYmFzZWQgb24gUmVzb3VyY2VSZXF1
ZXN0IHNvIHRoYXQgd2UgY2FuIGRvCiAvLyBkZWVwZXIgbWF0Y2hpbmcuCiAKLWludCBNYW5hZ2Vy
OjpmdXp6eU1hdGNoVVJMcyhjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdl
YkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkxQYXJzZXI6OlVS
TEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpCitpbnQgTWFuYWdlcjo6ZnV6enlNYXRj
aFVSTHMoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5j
b2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBVUkwmIHJlc291cmNlVVJMLCBjb25z
dCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNlUGFyYW1ldGVycykKIHsK
ICAgICAvLyBUT0RPOiBjb25zaWRlciByZXF1aXJpbmcgdGhhdCBhbnkgdHJhaWxpbmcgc3VmZml4
ZXMgKGUuZy4sICIuanMiLAogICAgIC8vICIucG5nIiwgIi5jc3MiLCAiLmh0bWwiLCBldGMuKSBz
aG91bGQgYmUgYW4gZXhhY3QgbWF0Y2guCkBAIC00MTksNyArNDE5LDcgQEAgU3RyaW5nIE1hbmFn
ZXI6Omhhc2hUb1BhdGgoY29uc3QgU3RyaW5nJiBoYXNoKQogICAgIHJldHVybiBwYXRoOwogfQog
Ci1TdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgV2ViQ29y
ZTo6VVJMJiB1cmwpCitTdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4o
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHVybC5wcm90b2NvbEhvc3RBbmRQb3J0KCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0
d29ya0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1
cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKaW5kZXggM2M2YjUwMTBkYTIzNDFlNjgyY2IxY2Ey
NDAxYTA2NjBmMzljNzQxYS4uYzM2ODE2YzlhODlhMWM3ZWZhZDEwNGYxYjAzOTA4ODM2ZGNhN2Yz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04Miw3ICs4Miw3IEBAIGNsYXNz
IE1hbmFnZXIgewogICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgb3BlbkNhY2hlRmlsZShjb25zdCBT
dHJpbmcmLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUpOwogCiAgICAgU3RyaW5n
IHJlcXVlc3RUb1BhdGgoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgc3Rh
dGljIFN0cmluZyB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbihjb25zdCBXZWJDb3JlOjpVUkwm
KTsKKyAgICBzdGF0aWMgU3RyaW5nIHVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0IFVS
TCYpOwogCiBwcml2YXRlOgogICAgIE1hbmFnZXIoKSA9IGRlZmF1bHQ7CkBAIC05MCw3ICs5MCw3
IEBAIGNsYXNzIE1hbmFnZXIgewogCiAgICAgUmVzb3VyY2UqIGZpbmRFeGFjdE1hdGNoKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIFJlc291cmNlKiBmaW5kQmVzdEZ1enp5
TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgaW50IGZ1enp5TWF0
Y2hVUkxzKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJM
UGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVxdWVzdFBhcmFtZXRlcnMsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVzb3VyY2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZv
cm0mIHJlc291cmNlUGFyYW1ldGVycyk7CisgICAgaW50IGZ1enp5TWF0Y2hVUkxzKGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXF1
ZXN0UGFyYW1ldGVycywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCwgY29uc3QgV1RGOjpVUkxQYXJz
ZXI6OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpOwogCiAgICAgdm9pZCBsb2Fk
UmVzb3VyY2VzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcAppbmRleCA3MDRjMGQ2
YWQ0ZjY2YTBjM2NhYjNiYWYzZTk5NTYxZDg4ODRmMDQ1Li5mM2RjMjNjNTcwNjk0ZWYzYmJmMjVi
YmJhMzIzNTFjZDgwZjc0MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIFJlc291cmNlOjpSZXNvdXJjZShjb25zdCBTdHJpbmcmIGV2ZW50RmlsZVBh
dGgpCiB7CiB9CiAKLWNvbnN0IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6OnVybCgpCitjb25zdCBV
UkwmIFJlc291cmNlOjp1cmwoKQogewogICAgIGlmICghbV91cmwuaXNWYWxpZCgpKSB7CiAgICAg
ICAgIGF1dG8gZXZlbnRzID0gZXZlbnRTdHJlYW0oKTsKQEAgLTUyLDggKzUyLDcgQEAgY29uc3Qg
V2ViQ29yZTo6VVJMJiBSZXNvdXJjZTo6dXJsKCkKICAgICAgICAgICAgIERFQlVHX0xPR19FUlJP
UigiRXZlbnQgc3RyZWFtIGRvZXMgbm90IGhhdmUgYSByZXF1ZXN0U2VudCBldmVudDogZmlsZSA9
ICIgU1RSSU5HX1NQRUNJRklFUiwgREVCVUdfU1RSKG1fZXZlbnRGaWxlUGF0aCkpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gcmVxdWVzdFNlbnRFdmVudCA9IFdURjo6Z2V0PFJl
cXVlc3RTZW50RXZlbnQ+KCpldmVudCk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkxQYXJzZXIg
cGFyc2VyKHJlcXVlc3RTZW50RXZlbnQucmVxdWVzdC51cmwpOwotICAgICAgICAgICAgbV91cmwg
PSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgICAgICBtX3VybCA9IFVSTCh7IH0sIHJlcXVlc3RT
ZW50RXZlbnQucmVxdWVzdC51cmwpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02OCwxMCArNjcs
MTAgQEAgY29uc3QgU3RyaW5nJiBSZXNvdXJjZTo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4o
KQogICAgIHJldHVybiBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluOwogfQogCi1XZWJDb3Jl
OjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpxdWVyeVBhcmFtZXRlcnMoKQor
V1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpxdWVyeVBhcmFtZXRlcnMo
KQogewogICAgIGlmICghbV9xdWVyeVBhcmFtZXRlcnMpCi0gICAgICAgIG1fcXVlcnlQYXJhbWV0
ZXJzID0gV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHVybCgpLnF1ZXJ5
KCkpOworICAgICAgICBtX3F1ZXJ5UGFyYW1ldGVycyA9IFdURjo6VVJMUGFyc2VyOjpwYXJzZVVS
TEVuY29kZWRGb3JtKHVybCgpLnF1ZXJ5KCkpOwogCiAgICAgcmV0dXJuICptX3F1ZXJ5UGFyYW1l
dGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCmluZGV4IDc1NzZjMGQ1ZTAwODQ4OTE2
MmMxOGM5NjYwNGZlM2EzODdmMzllNWUuLmQ0OTNmNGE0YTM1YWQ4ZWE2Y2RiMmRkOGUwMjVkNjkw
YzU4OTI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaApAQCAtMjksOSArMjksOSBAQAog
CiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1cmVFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9V
UkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5h
bWVzcGFjZSBOZXR3b3JrQ2FwdHVyZSB7CkBAIC01NSwxNiArNTUsMTYgQEAgY2xhc3MgUmVzb3Vy
Y2UgewogcHVibGljOgogICAgIFJlc291cmNlKGNvbnN0IFN0cmluZyYgZXZlbnRGaWxlUGF0aCk7
CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsKCk7
CiAgICAgY29uc3QgU3RyaW5nJiB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbigpOwotICAgIFdl
YkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0gcXVlcnlQYXJhbWV0ZXJzKCk7CisgICAg
V1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIHF1ZXJ5UGFyYW1ldGVycygpOwogICAgIEV2
ZW50U3RyZWFtIGV2ZW50U3RyZWFtKCk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZXZlbnRG
aWxlUGF0aDsKLSAgICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFN0
cmluZyBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluOwotICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybT4gbV9xdWVyeVBhcmFtZXRlcnM7CisgICAg
c3RkOjpvcHRpb25hbDxXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0+IG1fcXVlcnlQYXJh
bWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhcHR1cmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCmluZGV4IGU1YWY0ZjgzZjFiNTAxYjhiM2Q4YTFiYzU3YzlkNzM5MDVmYzk5MTcuLjgw
YjE0MDM0NzdhNTM5YjZhMGQxY2JiOWE0ZWFiOGJlNWZlM2RkZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgfQog
ICAgIAogICAgIC8vIFNob3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBmcm9t
IGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1cmUgb25lLgotICAgIGlmIChtX3Nob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9j
b2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVy
KCksICJodHRwcyIpKQorICAgIGlmIChtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXVEY6OnBy
b3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikpCiAgICAgICAgIHJlcXVl
c3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAKICAgICBjb25zdCBhdXRvJiB1cmwgPSByZXF1
ZXN0LnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDdmMThjMDU2ZjFhMDVkMmY5MDEwZTRh
Yjg3NTFlMTM0N2M4MmE2ZWIuLjI3MDU5MjVkODczMDhiOGEyYTY0NzAyOWRmZDc4Yzc2OTVmMWRk
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTQ2LDEyICs0NiwxMiBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVVUkxSZXNwb25zZS5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmls
ZWdlLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
QEAgLTM0OCw3ICszNDgsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNl
c3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlkUmVjZQogICAgICAgICAgICAg
aWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lz
dGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpLmlzUGFzc3dvcmRCYXNlZCgpKSB7CiAKICAgICAgICAgICAgICAgICBXZWJDb3JlOjpDcmVk
ZW50aWFsIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVkZW50
aWFsLnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwotICAg
ICAgICAgICAgICAgIFdlYkNvcmU6OlVSTCB1cmxUb1N0b3JlOworICAgICAgICAgICAgICAgIFVS
TCB1cmxUb1N0b3JlOwogICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAgICAgICAgICAg
ICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNw
b25zZSgpLnVybCgpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9uID0g
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9j
ZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tCmluZGV4IDQwMmVjMWRlMDE5NjJmMGNjZjQyMDQyOTU3MjM3OTFmN2M2NTcyYTAuLmY1
Y2MxYzFlMGFjNmRhODQyOTJjNDhiNDcxYjA4Yzg3YmYyOThlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTIxNSwx
MSArMjE1LDExIEBAIHN0YXRpYyB2b2lkIGNhcmJvbldpbmRvd0hpZGRlbihXaW5kb3dSZWYgd2lu
ZG93KQogc3RhdGljIGJvb2wgb3BlbkNGVVJMUmVmKENGVVJMUmVmIHVybCwgaW50MzJfdCYgc3Rh
dHVzLCBDRlVSTFJlZiogbGF1bmNoZWRVUkwpCiB7CiAgICAgU3RyaW5nIGxhdW5jaGVkVVJMU3Ry
aW5nOwotICAgIGlmICghUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkub3BlblVSTChXZWJDb3Jl
OjpVUkwodXJsKS5zdHJpbmcoKSwgc3RhdHVzLCBsYXVuY2hlZFVSTFN0cmluZykpCisgICAgaWYg
KCFQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5vcGVuVVJMKFVSTCh1cmwpLnN0cmluZygpLCBz
dGF0dXMsIGxhdW5jaGVkVVJMU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKCFsYXVuY2hlZFVSTFN0cmluZy5pc051bGwoKSAmJiBsYXVuY2hlZFVSTCkKLSAgICAgICAg
KmxhdW5jaGVkVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBsYXVuY2hlZFVSTFN0
cmluZykuY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7CisgICAgICAgICpsYXVuY2hlZFVSTCA9IFVS
TChVUkwoKSwgbGF1bmNoZWRVUkxTdHJpbmcpLmNyZWF0ZUNGVVJMKCkubGVha1JlZigpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0zOTksNyArMzk5LDcgQEAgc3RhdGljIE5TUnVubmluZ0Fw
cGxpY2F0aW9uICpyZXBsYWNlZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0
aW9uc18KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0
b24oKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFdlYkNvcmU6OlVSTCh1cmwpLnN0cmluZygpLCBh
cmd1bWVudHMpKSB7CisgICAgaWYgKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmxhdW5jaEFw
cGxpY2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5nKCksIGFyZ3VtZW50cykpIHsKICAgICAgICAg
aWYgKGVycm9yKQogICAgICAgICAgICAgKmVycm9yID0gbmlsOwogICAgICAgICByZXR1cm4gbmls
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IDdiMDFkMGU5MjA1NjI4Y2QzYzAwMmVm
NTdlZjExZTgxNGRjY2NiOTEuLmJiZDQyM2JjZjU3MTVlNGFkNzBiZjUyZGVmOGMyYzMwYzQxYmYw
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTIzLDMyICsyMywzMSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJMX2gK
LSNkZWZpbmUgV2ViVVJMX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAg
IHN0YXRpYyBSZWY8QVBJOjpVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKHN0cmluZykpOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8VVJMPiBjcmVhdGUoY29uc3QgVVJMKiBiYXNlVVJMLCBjb25zdCBX
VEY6OlN0cmluZyYgcmVsYXRpdmVVUkwpCisgICAgc3RhdGljIFJlZjxBUEk6OlVSTD4gY3JlYXRl
KGNvbnN0IEFQSTo6VVJMKiBiYXNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgcmVsYXRpdmVVUkwp
CiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwtPnBhcnNl
VVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZl
VVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpV
Ukw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwpOwogICAgICAgICBj
b25zdCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxTdHJpbmcgPSBhYnNvbHV0ZVVSTC0+c3RyaW5n
KCk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKFdURk1vdmUoYWJzb2x1dGVV
UkwpLCBhYnNvbHV0ZVVSTFN0cmluZykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBB
UEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJzb2x1dGVVUkxTdHJpbmcpKTsKICAgICB9
CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9
CkBAIC01Niw3ICs1NSw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6
VHlwZTo6VVJMPiB7CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KIAotICAgIHN0YXRpYyBib29sIGVxdWFscyhjb25zdCBVUkwmIGEs
IGNvbnN0IFVSTCYgYikKKyAgICBzdGF0aWMgYm9vbCBlcXVhbHMoY29uc3QgQVBJOjpVUkwmIGEs
IGNvbnN0IEFQSTo6VVJMJiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGEudXJsKCkgPT0gYi51
cmwoKTsKICAgICB9CkBAIC0xMDYsMTMgKzEwNSwxMyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMgT2Jq
ZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICB9CiAKLSAgICBVUkwoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJMLCBjb25zdCBXVEY6OlN0cmluZyYg
c3RyaW5nKQorICAgIFVSTChzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpVUkw+IHBhcnNlZFVSTCwgY29u
c3QgV1RGOjpTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCiAgICAg
ICAgICwgbV9wYXJzZWRVUkwoV1RGTW92ZShwYXJzZWRVUkwpKQogICAgIHsKICAgICB9CiAKLSAg
ICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0CisgICAgY29uc3QgV1RGOjpVUkwmIHVy
bCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5KCk7CiAgICAgICAg
IHJldHVybiAqbV9wYXJzZWRVUkw7CkBAIC0xMjIsMTMgKzEyMSwxMSBAQCBjbGFzcyBVUkwgOiBw
dWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgaWYg
KG1fcGFyc2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3BhcnNlZFVSTCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPihXZWJDb3JlOjpVUkwoKSwgbV9zdHJpbmcp
OworICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KFdURjo6
VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBtX3N0cmluZzsKLSAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpVUkw+IG1fcGFyc2VkVVJMOworICAg
IG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdURjo6VVJMPiBtX3BhcnNlZFVSTDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVJMX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRleCA5YjVjN2Y2
NmI0OGI4YTk2YmRkMmRjYmU4OWNhOTBhMTIzZDMwNmFhLi42Njk5NWEwYTg4NTI2YmFjNTNhYjdk
MWNjNTk2MTVhMzIwMjE5ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBBUEkgewogCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0
dGVybiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250
CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4u
aG9zdCgpOyB9CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHNjaGVtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF0dGVybi5zY2hlbWUoKTsgfQogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF0dGVybi5pc1ZhbGlkKCk7IH07Ci0gICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0IFdURjo6
U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdlYkNvcmU6OlVS
TCh7IH0sIHVybCkpOyB9CisgICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0IFdURjo6U3RyaW5nJiB1
cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdURjo6VVJMKHsgfSwgdXJsKSk7
IH0KICAgICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJu
Lm1hdGNoU3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgcGF0dGVyblN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggNzM2ZTFmM2U2NjQ1Y2UwZWMyMTJm
NmRiOWY4Nzg0M2Q1Y2QxM2RhNS4uMTQ5OTU2M2UzOWFlN2I5ODZkZTE3MzQ3Njc4ODVmNmFhZDky
OGQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCkBA
IC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRGF0YS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS1VSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVz
cG9uc2UuY3BwCmluZGV4IGI4YThhOTBiY2QzYzM0NWNkNDc1NjUyNzczMTQzMmNmY2EwMTdjODcu
LjhmMWZhOWFkNmUzNmU5OGFjNDEzZWJhOWVmOTU1M2NhZDQwNjM4Y2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJBUElVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9j
Zi9XS1VSTENGLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQpp
bmRleCBkZjE5ODNhNjAxNTBkZDdlYWRiYWU4M2QzODgyOGFiYWE3ODBlMGFlLi5iZDkxYTQ1YjA5
YzMxNGVmZjM2MzA1MWNjYjg4MTViZGNiYjZkYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL2NmL1dLVVJMQ0YubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2ltcG9ydCAiV0tBUElDYXN0
LmgiCiAjaW1wb3J0ICJXS05TVVJMLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0NGVVJMRXh0cmFzLmg+
CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9jZi9DRlVSTEV4dHJhcy5o
PgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKQEAg
LTU2LDcgKzU2LDcgQEAgV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoQ0ZVUkxSZWYgY2ZV
UkwpCiAjZW5kaWYKIAogICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgV2ViQ29yZTo6Z2V0VVJM
Qnl0ZXMoY2ZVUkwsIHVybEJ5dGVzKTsKKyAgICBXVEY6OmdldFVSTEJ5dGVzKGNmVVJMLCB1cmxC
eXRlcyk7CiAKICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSSh1cmxCeXRlcy5kYXRh
KCkpOwogfQpAQCAtNjksNSArNjksNSBAQCBDRlVSTFJlZiBXS1VSTENvcHlDRlVSTChDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVSTFJlZikKICAgICAvLyBVVEYtOCB3aGlj
aCB1c2VzIGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0IFdlYktpdCBjbGllbnRzIG1pZ2h0IGV4cGVj
dC4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gV2ViS2l0Ojp0b0ltcGwoVVJMUmVmKS0+c3RyaW5n
KCkudXRmOCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpLCAwKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdU
Rjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5sZW5ndGgoKSwg
MCkubGVha1JlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCA5ZmU1OTU3MjA0Y2M3OTkzZWJjMDg4ODhiZDFmODkz
MWVhNGViMDAxLi4zMWY2MWNlN2VhZjhiOWE5OWNiYWFkN2RkMDUzNzVkYTgxYTI1YmM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNw
cApAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3QuaCIKIAogI2lu
Y2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5p
cXVlUHRyU291cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3Rm
L2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwCmluZGV4IGQyNDU1ODkzNmNmNDYw
NzU1NTcxMmExNmM5NGZkNDYxZWMwOThhMjMuLjI4N2VlZmQ0ZDljY2Y0MDAzNjczZGU5N2I4OGQz
YzJkNjNjMjM0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dl
YktpdFVSSVJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXNwb25zZS5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJXZWJLaXRV
UklSZXNwb25zZS5oIgogCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4t
bGliLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGRjMGY5
MGYwZjM4NTFhYmYxMDA0ODRiYTU3M2FlNGFmOGU4MGIyMzIuLmJjMmZlNDllMzBhYTM4MmI0MjNi
NTRkYjJiYWQ3MmJiN2Y5N2VlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJB
cmNoaXZlUmVzb3VyY2UubW0KQEAgLTMwLDggKzMwLDggQEAKIAogI2luY2x1ZGUgIkFQSURhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ2LDgg
KzQ2LDggQEAgUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBhcmMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJBcmNoaXZlUmVzb3VyY2UoV1RGTW92ZShhcmNoaXZlUmVzb3VyY2UpKSk7CiB9CiAKLVdl
YkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6RGF0YSogZGF0YSwgY29u
c3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nKQotICAgIDogbV9hcmNoaXZlUmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKSwgV2Vi
Q29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBVUkwpLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nLCBT
dHJpbmcoKSkpCitXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShBUEk6OkRh
dGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZykKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEt
PnNpemUoKSksIFdURjo6VVJMKFdURjo6VVJMKCksIHVybCksIE1JTUVUeXBlLCB0ZXh0RW5jb2Rp
bmcsIFN0cmluZygpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uLmgKaW5kZXggNDMzNjM4Yjk0OGRmMDk3OGFiM2MxYmQxYmExYTNiNzQx
ZGRmYTZhZi4uZDg2ZGM0YWI3NTBiZjgxY2Y5ZTM2NDNhZTY2OTRmY2IzMjQ3ZjI1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCkBAIC0zMSw3
ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVj
dCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIGJvb2wg
YWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIHsgZmFsc2UgfTsKICAgICBib29sIGlz
QXV0b2ZpbGxhYmxlVXNlcm5hbWVGaWVsZCB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6VVJMIHJl
cHJlc2VudGluZ1BhZ2VVUkw7CisgICAgVVJMIHJlcHJlc2VudGluZ1BhZ2VVUkw7CiAgICAgV2Vi
Q29yZTo6QXV0b2ZpbGxGaWVsZE5hbWUgYXV0b2ZpbGxGaWVsZE5hbWUgeyBXZWJDb3JlOjpBdXRv
ZmlsbEZpZWxkTmFtZTo6Tm9uZSB9OwogICAgIFN0cmluZyBwbGFjZWhvbGRlcjsKICAgICBTdHJp
bmcgbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJM
RXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbQpp
bmRleCAwMTg4Zjc0Nzk4MmE5NDBhNDhhYjg2ZjgyODhhYWIwMDZkZmQxMWQ3Li41MTliOWQ4M2Vk
NzY2MWRjNmQ4N2Q2MjllN2M4Yzg1NWIwZWYyYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1dLTlNVUkxFeHRyYXMubW0KQEAgLTI2LDEzICsyNiwxMSBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvQ0ZV
UkxFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CisjaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQogQGltcGxlbWVudGF0aW9uIE5TVVJMIChXS0V4dHJhcykKIAogKyAoaW5zdGFu
Y2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcKQEAgLTUw
LDcgKzQ4LDcgQEAgKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3Qg
U3RyaW5nJilzdHJpbmcgcmVsYXRpdmVUb1VSTDooTlNVUkwKIC0gKFN0cmluZylfd2ViX29yaWdp
bmFsRGF0YUFzV1RGU3RyaW5nCiB7CiAgICAgQ1N0cmluZyBvcmlnaW5hbERhdGE7Ci0gICAgZ2V0
VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXNlbGYsIG9yaWdpbmFsRGF0YSk7CisgICAgV1RG
OjpnZXRVUkxCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpc2VsZiwgb3JpZ2luYWxEYXRhKTsKICAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChvcmlnaW5hbERhdGEpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IDlkY2Y2ZjJlMWQ3MTUzM2FkNjQ1ZGY2M2RiZjI0MjI2
NTc4NGI4YWYuLjUzY2UyZDFhZjA2ZDI1MWM4MDU1YmQyYWQ1MjdmYWE0Njc2ZWU5YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGUg
ewogc3RydWN0IFNlc3Npb25TdGF0ZSB7CiAgICAgQmFja0ZvcndhcmRMaXN0U3RhdGUgYmFja0Zv
cndhcmRMaXN0U3RhdGU7CiAgICAgdWludDY0X3QgcmVuZGVyVHJlZVNpemU7Ci0gICAgV2ViQ29y
ZTo6VVJMIHByb3Zpc2lvbmFsVVJMOworICAgIFVSTCBwcm92aXNpb25hbFVSTDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcAppbmRleCBkZjk3MzUwZTAzMGM5ODIzNWJhM2JhZTRhZDVjYjA1NjVj
OTRlNjc1Li5hOTE5NjkyZjY5YzIzYjcxMzM1NjY1OWFkMzA0NWQwM2YwZmU5OWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMjcs
OCArMjcsOCBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKIAogI2luY2x1
ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTA0LDggKzEwNCw4IEBAIGJvb2wgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9jdW1lbnQoY29uc3QgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYKICAgICBpZiAobWFpbkZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhIHx8IG90aGVy
TWFpbkZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhKQogICAgICAgICByZXR1cm4gbWFpbkZyYW1l
U3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlciA9PSBvdGhlck1haW5GcmFtZVN0YXRlLmRvY3Vt
ZW50U2VxdWVuY2VOdW1iZXI7CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsID0gV2ViQ29yZTo6VVJM
KHsgfSwgbWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKLSAgICBXZWJDb3JlOjpVUkwgb3RoZXJV
UkwgPSBXZWJDb3JlOjpVUkwoeyB9LCBvdGhlck1haW5GcmFtZVN0YXRlLnVybFN0cmluZyk7Cisg
ICAgVVJMIHVybCA9IFVSTCh7IH0sIG1haW5GcmFtZVN0YXRlLnVybFN0cmluZyk7CisgICAgVVJM
IG90aGVyVVJMID0gVVJMKHsgfSwgb3RoZXJNYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcpOwogCiAg
ICAgaWYgKCh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgfHwgb3RoZXJVUkwuaGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBv
dGhlclVSTCkpCiAgICAgICAgIHJldHVybiBtYWluRnJhbWVTdGF0ZS5kb2N1bWVudFNlcXVlbmNl
TnVtYmVyID09IG90aGVyTWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGU1
MDdiZjg3NTliMTE3ODkwODZlNTBkN2YwNmM1N2RkODM4MGE0ZjYuLjM5NWVhNzU4ZDAzYzFhMDcx
NjBhNmIzNWZmZWRhZTI4MmY5YjgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzcsMTEgKzc3LDExIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5k
b3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAppbmRleCAzZWViNDQyZTMyN2RjNzkxMmI0M2M0OTYzNmE2NTc0Y2Y5YmM0NmNlLi45
NTQ1MGY0MTFjN2ZiYTAzYzFlZDc2MTA1OWZkYmEzM2JhMDJlNWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtOTMsNyArOTMsNiBAQCBjbGFz
cyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBjbGFzcyBUZXh0Q2hlY2tpbmdS
ZXF1ZXN0RGF0YTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgVXNlclN0eWxl
U2hlZXQ7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0aW9uczsKIHN0cnVjdCBD
b21wb3NpdGlvblVuZGVybGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkVycm9ycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKaW5kZXggMjdkMTRl
MzFiMzEwODY2YzZmMTM2ZTNhZDhhYWZmODhlMjNiMzg0Mi4uN2Q2MDBjNmQyM2I1NWRjYzM5NjMw
OTkwNDA3Y2U3NDQ0NDZjYjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
RXJyb3JzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKQEAgLTI4LDcg
KzI4LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTQ4LDE4ICs0NywxOCBAQCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlcwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFVSTCYpOwogCiAjaWYgVVNFKFNPVVApCi1XZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFdURjo6U3RyaW5nJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0
d29ya0Vycm9yKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdURjo6U3Ry
aW5nJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLVdlYkNvcmU6OlJlc291cmNlRXJy
b3IgcHJpbnRFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYpOwot
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJvcihjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQo
Y29uc3QgV2ViQ29yZTo6VVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHByaW50RXJyb3Io
Y29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3Ig
cHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgVVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGNvbnN0IFVSTCYpOwogI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVz
dFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERh
dGEuY3BwCmluZGV4IDE3OWNhNGJlMzdiZWQwZTNkY2NiNWQzMjYzZjNmMDY5YjA1MjU1NWIuLmMx
Y2ZjY2YwNWY4NDIwYWMzYjljMjRkYzU3Zjk4NWY3MjI2MzdjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL05vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9V
UkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCBlM2YzMDU2NjY4NjMwYTRiNWFmZWI5ODRjOWRl
NGRlZGU1MDE1YzBiLi4yZWQ3NzQ0YjA4ZGY4ZmJlOWFjNzJmZDQ3NDc2NGUxY2U2ZDcyNzhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcApAQCAtMzEs
OSArMzEsOSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ0ZVUkxFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKICNpZiBVU0UoRk9VTkRBVElPTikKQEAgLTU5OSw4ICs1
OTksOCBAQCB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDRlVSTFJlZiB1cmwpCiAgICAg
aWYgKGJhc2VVUkwpCiAgICAgICAgIGVuY29kZShlbmNvZGVyLCBiYXNlVVJMKTsKIAotICAgIFVS
TENoYXJCdWZmZXIgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7Cisg
ICAgV1RGOjpVUkxDaGFyQnVmZmVyIHVybEJ5dGVzOworICAgIFdURjo6Z2V0VVJMQnl0ZXModXJs
LCB1cmxCeXRlcyk7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXJsQnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6
ZSgpKTsKICAgICBlbmNvZGVyIDw8IGRhdGFSZWZlcmVuY2U7CiB9CkBAIC02MzEsNyArNjMxLDcg
QEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPENGVVJMUmVmPiYgcmVz
dWx0KQogICAgIH0KICNlbmRpZgogCi0gICAgcmVzdWx0ID0gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVy
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJ5dGVzLmRhdGEoKSksIHVybEJ5dGVz
LnNpemUoKSwgYmFzZVVSTC5nZXQoKSk7CisgICAgcmVzdWx0ID0gV1RGOjpjcmVhdGVDRlVSTEZy
b21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJsQnl0ZXMuZGF0YSgpKSwg
dXJsQnl0ZXMuc2l6ZSgpLCBiYXNlVVJMLmdldCgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwCmluZGV4IGU5ZDkyMzkz
YzdkNWM2YjNhYmYzZjlmNDRhMDdmNDFhMDA4NDYwZTguLjZhMGRmNTRjMzc0NDVkZjY0Y2M1ZDNi
NGJiNjEwZWMxZjNjMDY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9X
ZWJFcnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNH
dGsuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAKICNpbmNs
dWRlICJBUElFcnJvci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8Z2xp
Yi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4IDNk
MDg2ODlmZTE3NmRkN2E2MTcyYTEzN2MwNTgzZGNlYTczNzJmNjMuLmMxYWI4NWZkNDQxYmMxMjgw
NzU0NjYwOTQwOTY4ZjczNmE4ZjY2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VsZWN0aW9uUmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDggKzYw
LDggQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIHsKICAgICBib29s
IHByZXZlbnRUZXh0SW50ZXJhY3Rpb24geyBmYWxzZSB9OwogI2VuZGlmCiAgICAgV2ViQ29yZTo6
RmxvYXRQb2ludCBhZGp1c3RlZFBvaW50Rm9yTm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzOwot
ICAgIFdlYkNvcmU6OlVSTCB1cmw7Ci0gICAgV2ViQ29yZTo6VVJMIGltYWdlVVJMOworICAgIFVS
TCB1cmw7CisgICAgVVJMIGltYWdlVVJMOwogICAgIFN0cmluZyB0aXRsZTsKICAgICBTdHJpbmcg
aWRBdHRyaWJ1dGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKaW5kZXggYmIwZDFjYjYz
ZDQxZjJlN2JjMzZiYTlmNWQ1ZGFlNWU0MDgxMTU5Mi4uOTBmZGU3ZDA0YjI3MzA1YTQ2NDM2MTQx
YmRiNzdlMTAwNGJkZDA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmUuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKIHN0cnVjdCBDb29raWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcApp
bmRleCA2OGI4N2Q4ODdmZTYzNDJmMGY1MWM5NDMxMmVhMGY0YmNlMTJiZjZhLi45MzJiNjI2Nzc3
ZjBhZjBhYjU0ZjY0N2JkODFiZmY0Nzg0MzljN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTmF2aWdh
dGlvbjo6c2V0Q3VycmVudFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUHJvY2Vz
c0lkZW50aWZpZXIKICAgICBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIgPSBwcm9j
ZXNzSWRlbnRpZmllcjsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVS
TChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgTmF2aWdhdGlvbjo6YXBwZW5kUmVkaXJl
Y3Rpb25VUkwoY29uc3QgV1RGOjpVUkwmIHVybCkKIHsKICAgICBpZiAobV9yZWRpcmVjdENoYWlu
LmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHVybCkKICAgICAgICAgbV9y
ZWRpcmVjdENoYWluLmFwcGVuZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uLmgKaW5kZXggOTdlZTk2ZGRkNmU0N2ExOWFjZGMyZjI4NDhmN2E3NjI5N2Jk
ZDFmMi4uZWQwMjk0ZDgyODdlY2Q4NjZiYTZlOTNiODFjNTNmMGI0NGI4NDlkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCkBAIC03Nyw4ICs3Nyw4IEBA
IGNsYXNzIE5hdmlnYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmln
YXRpb24+IHsKICAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKCkg
Y29uc3QgeyByZXR1cm4gbV9mcm9tSXRlbS5nZXQoKTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVMb2FkVHlwZT4gYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7IH0KIAotICAgIHZvaWQgYXBwZW5kUmVk
aXJlY3Rpb25VUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlVS
TD4gdGFrZVJlZGlyZWN0Q2hhaW4oKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVkaXJlY3RDaGFpbik7
IH0KKyAgICB2b2lkIGFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0IFdURjo6VVJMJik7CisgICAg
VmVjdG9yPFdURjo6VVJMPiB0YWtlUmVkaXJlY3RDaGFpbigpIHsgcmV0dXJuIFdURk1vdmUobV9y
ZWRpcmVjdENoYWluKTsgfQogCiAgICAgdm9pZCBzZXRXYXNVc2VySW5pdGlhdGVkKGJvb2wgdmFs
dWUpIHsgbV93YXNVc2VySW5pdGlhdGVkID0gdmFsdWU7IH0KICAgICBib29sIHdhc1VzZXJJbml0
aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJJbml0aWF0ZWQ7IH0KQEAgLTExNCw3ICsx
MTQsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpOYXZpZ2F0aW9uPiB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxS
ZXF1ZXN0OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0Owog
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IG1fY3VycmVudFJl
cXVlc3RQcm9jZXNzSWRlbnRpZmllcjsKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBtX3JlZGly
ZWN0Q2hhaW47CisgICAgVmVjdG9yPFdURjo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9v
bCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3Nob3VsZEZvcmNlRG93
bmxvYWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1JlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4
IGVlY2JmZjRhMmEzZWQ5MGY0NDQwOGNjZDZjYWYyOWRlOThkOTUyZDcuLjMwODcxYzdhMDk1NTRk
NWNiOGE3ZWQ0YWI4MmNiYjE0OGNkZTc4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIkFQSVVzZXJJbml0aWF0ZWRBY3Rpb24uaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9u
RGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBBUEkgewog
CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24gZmluYWwgOiBwdWJsaWMg
T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+CiAgICAgc3RkOjpvcHRp
b25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YXJn
ZXRGcmFtZU5hbWU7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQotICAgIGNvbnN0IFdlYkNvcmU6OlVS
TCYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5hbFVSTC5pc051bGwoKSA/
IG1fb3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KKyAgICBjb25zdCBXVEY6OlVSTCYg
b3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5hbFVSTC5pc051bGwoKSA/IG1f
b3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KIAogICAgIFdlYkNvcmU6Ok5hdmlnYXRp
b25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9u
RGF0YS5uYXZpZ2F0aW9uVHlwZTsgfQogICAgIFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVycyBt
b2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVy
czsgfQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIGZpbmFsIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uPgogICAgIE5hdmln
YXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZU5h
dmlnYXRpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktp
dDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFt
ZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0
aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91
bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0
ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKKyAgICBOYXZp
Z2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFy
Z2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFs
VVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+
JiYgdXNlckluaXRpYXRlZEFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0
aW9uKQogICAgICAgICA6IG1fc291cmNlRnJhbWUoc291cmNlRnJhbWUpCiAgICAgICAgICwgbV90
YXJnZXRGcmFtZSh0YXJnZXRGcmFtZSkKICAgICAgICAgLCBtX3RhcmdldEZyYW1lTmFtZSh0YXJn
ZXRGcmFtZU5hbWUpCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24gZmlu
YWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+CiAg
ICAgewogICAgIH0KIAotICAgIE5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBBUEk6OkZyYW1lSW5mbyogc291cmNlRnJh
bWUsIEFQSTo6RnJhbWVJbmZvKiB0YXJnZXRGcmFtZSwgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmlu
Zz4gdGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywg
UmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKKyAgICBO
YXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyog
dGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdp
bmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rp
b24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKICAgICAgICAgOiBOYXZpZ2F0aW9uQWN0aW9uKFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZSwgdGFyZ2V0RnJhbWUsIHRh
cmdldEZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxVUkwsIHNob3VsZE9wZW5B
cHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aW9uKSwgbnVsbHB0cikKICAgICB7CiAg
ICAgfQpAQCAtODksNyArODksNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIGZpbmFsIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uPgogICAgIHN0ZDo6
b3B0aW9uYWw8V1RGOjpTdHJpbmc+IG1fdGFyZ2V0RnJhbWVOYW1lOwogCiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBXZWJDb3JlOjpVUkwgbV9vcmlnaW5hbFVS
TDsKKyAgICBXVEY6OlVSTCBtX29yaWdpbmFsVVJMOwogCiAgICAgYm9vbCBtX3Nob3VsZE9wZW5B
cHBMaW5rczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmgKaW5kZXggNmFkODMzYTYwOTk1Yjg5OWExYjExYzcxYWU5OWM0OTU3YWMyNzI5
MC4uOGU5NDRiN2RlYzRkOWU1ZGU3NGE3NDFjMmFhZWQ3OTk4MzIwMDM5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC05Nyw3
ICs5Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgewogCiAgICAgdmlydHVhbCBSZWZQdHI8
RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4g
bnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U3RyaW5nPiBzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXpl
SW5kZXgsIGNvbnN0IFJlZlB0cjxTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNv
cmU6OlVSTCYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxTdHJpbmc+
IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPFN0cmluZz4mIGNoYWxsZW5nZVN0
cmluZywgY29uc3QgV1RGOjpVUkwmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3Ry
aW5nJiB1dGkpIHsgfQpAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIE5hdmlnYXRpb25DbGllbnQg
ewogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgdm9p
ZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJD
b3JlOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiYp
IHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgV1RGOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiYpIHsgfTsKICAgICAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICAgICB2aXJ0dWFsIGJvb2wgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdJbihXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYpIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0x
MjYsOCArMTI2LDggQEAgY2xhc3MgTmF2aWdhdGlvbkNsaWVudCB7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShXRUJHTCkKLSAgICB2aXJ0dWFsIHZvaWQgd2ViR0xMb2FkUG9saWN5KFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNv
bXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0
aW9uKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7
IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0Ny
ZWF0aW9uKTsgfQorICAgIHZpcnR1YWwgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBjb25zdCBXVEY6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0
aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIGNvbnN0IFdURjo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsg
fQogI2VuZGlmCiAgICAgCiAgICAgdmlydHVhbCBib29sIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYsIGJvb2wgaW5QYWdlQ2FjaGUsIE9iamVjdCopIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGJhMjkwZTA4OTdiOWM3Mjdh
ZjY5NjgyZjI4ZmYzMzQ1MTk1ZDkxNjIuLjgzZGEyOWNjNTJmYzg3MzA5Y2ZjNjVmNDZkNzAxMTBm
MTI5NDY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBA
IC0xNDAsNyArMTQwLDcgQEAgY2xhc3MgVUlDbGllbnQgewogICAgIHZpcnR1YWwgYm9vbCBjYW5S
dW5Nb2RhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1v
ZGFsKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBEYXRh
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIo
V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgV1RGOjpVUkwmLCBEYXRhJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGlu
bmVkU3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCmluZGV4IDc1ODRlNjMxMjEw
MmI1YjBjNTAwN2VhOWI4OGNhYzc4M2I5ZTE0NmMuLjQwMjJlZmRjYjk3YTUwOWY2ZTBlZjg5NWRj
YjY3Mzg2NmFhOWY1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVc2VyU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNl
clNjcmlwdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAKLVdlYkNv
cmU6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCitXVEY6OlVSTCBVc2VyU2Ny
aXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZp
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2Ny
aXB0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCmluZGV4
IDE3YTQwOTA5ODk3Zjc0NGI1MDVhMDQ5MmFjNTA4YzQwNTBiMTMxYzUuLjAzMzMyODIwYjE2MDEx
NDkxNDAzNjE4YjYzN2YzM2RhODE0YjE4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJTY3JpcHQuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQVBJVXNlclNjcmlwdF9oCi0jZGVmaW5l
IEFQSVVzZXJTY3JpcHRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0zNSw3ICszNCw3IEBAIG5hbWVz
cGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8
T2JqZWN0OjpUeXBlOjpVc2VyU2NyaXB0PiwgcHVibGljIElkZW50aWZpZWQ8VXNlclNjcmlwdD4g
ewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsK
KyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKIAogICAgIHN0YXRpYyBS
ZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIGNsYXNz
IFVzZXJTY3JpcHQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVzZXJT
Y3JpcHQ+LCBwdWJsaWMgSWRlCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8v
IEFQSVVzZXJTY3JpcHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
c2VyU3R5bGVTaGVldC5jcHAKaW5kZXggMWQ1OTViYjE1ODhkOWY3ZDVkNDhmZDkyMWNkMWRkOTY2
YjNmODZhZi4uM2VhNDYxZmUxYTE1NmM2YTlkNTg5NTg0MDM3ZmUzODdjMjkwN2YwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1XZWJDb3JlOjpVUkwgVXNlclN0
eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKK1dURjo6VVJMIFVzZXJTdHlsZVNoZWV0Ojpn
ZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVl
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKaW5k
ZXggZDg1NmY3YTUyZjliNTA0ZTBmYTQyM2VhOWEzYjZlMTU3MTQ1MWVkZS4uNzViYjk1YWZlYWM4
ZjhmMWU4MjIzMzVmMjkzZTk4Mzg3YjVkNzYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSVVzZXJTdHlsZVNo
ZWV0X2gKLSNkZWZpbmUgQVBJVXNlclN0eWxlU2hlZXRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0z
NSw3ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5h
bCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclN0eWxlU2hlZXQ+LCBwdWJs
aWMgSWRlbnRpZmllZDxVc2VyU3R5bGVTaGVldD4gewogcHVibGljOgotICAgIHN0YXRpYyBXZWJD
b3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKKyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJh
dGVVbmlxdWVVUkwoKTsKIAogICAgIHN0YXRpYyBSZWY8VXNlclN0eWxlU2hlZXQ+IGNyZWF0ZShX
ZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpVc2VyQ29udGVudFdv
cmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIGNsYXNzIFVzZXJTdHlsZVNoZWV0
IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyU3R5bGVTaGVldD4s
IHB1CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8vIEFQSVVzZXJTdHlsZVNo
ZWV0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXggNmU3OTY2MjU1MmI5ZjY4MDUyMDI5NGVi
YjlkNzRlYmFiZDgzMjY1MC4uNGEwZmZjNDJlNTk0MWMzMDZiY2ZmYmY4OGNlMTVhY2M3MDk5YjVj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJB
UElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtNDgsNyArNDgs
NyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzRnJvbUZpbGVVUkxzKGNvbnN0IEFQ
STo6QXJyYXkmIGZpbGVVUkxzKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CiAgICAgICAgIEFQSTo6VVJMKiBhcGlVUkwgPSBmaWxlVVJMcy5hdDxBUEk6OlVSTD4oaSk7
CiAgICAgICAgIGlmIChhcGlVUkwpCi0gICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVja2VkQXBw
ZW5kKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5
c3RlbVBhdGgoKSk7CisgICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVja2VkQXBwZW5kKFVSTChV
UkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIGZpbGVQYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CmluZGV4IGNjMmRmOWI1NzFhMTE3OGVjZjU3ZjZkZTZmYWEzOGRhZTVhYzYxMTAuLjJjYjk2YTMy
NTBkZDNkMGM0YTdhMTM0YzliOWM4YTY4MjAyZTFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgV0tQYWdlTG9hZFBs
YWluVGV4dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3Ry
aW5nUmVmCiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YShXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmLCBXS1R5cGVSZWYg
dXNlckRhdGFSZWYpCiB7Ci0gICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdS
ZWYsICJ0ZXh0L3BsYWluIl9zLCBibGFua1VSTCgpLnN0cmluZygpLCB1c2VyRGF0YVJlZik7Cisg
ICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9z
LCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIHVzZXJEYXRhUmVmKTsKIH0KIAogdm9pZCBXS1Bh
Z2VMb2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJlZiB3ZWJBcmNo
aXZlRGF0YVJlZikKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50
CiAKICAgICAgICAgICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHBhZ2UucHJv
Y2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2Vz
dHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBw
TGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3VyY2VGcmFtZUluZm8tPnJlcXVlc3QoKS51cmwoKSwg
cmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGFwaU5hdmlnYXRp
b25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRp
b25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxv
cHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgV2ViQ29yZTo6VVJMKCksIHNob3VsZE9wZW5B
cHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0
ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBu
dWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgVVJMKCksIHNo
b3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKIAogICAg
ICAgICAgICAgICAgIGF1dG8gYXBpV2luZG93RmVhdHVyZXMgPSBBUEk6OldpbmRvd0ZlYXR1cmVz
OjpjcmVhdGUod2luZG93RmVhdHVyZXMpOwogCkBAIC0xOTQ1LDcgKzE5NDUsNyBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGll
bnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgbV9jbGllbnQucnVuTW9kYWwodG9BUEkoJnBh
Z2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKSBmaW5hbAor
ICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5
KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBBUEk6OkRhdGEmIGRhdGEpIGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuc2F2ZURhdGFUb0ZpbGVJbkRv
d25sb2Fkc0ZvbGRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTg1LDcgKzIxODUs
NyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAgcmV0dXJuIEFQSTo6RGF0
YTo6Y3JlYXRlKG1hc3RlcktleS5kYXRhKCksIG1hc3RlcktleS5zaXplKCkpOwogICAgICAgICB9
CiAKLSAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0
IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpIG92ZXJyaWRlCisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYgcGFnZSwgdW5zaWduZWQga2V5U2l6
ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0
IFVSTCYgdXJsKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQu
Y29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZykKICAgICAgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKaW5kZXggMzkw
ZTEyMDc0N2VhZTg5Y2ZkOWZlZTY5ZGFjZWNiNmRlMDc5NWVjNS4uMDM3NzQxMGVhN2U2N2U2YjA5
MTBjZmJjMDVhOWIzMmY1OGNiNDNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZUdyb3VwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdLUGFnZUdyb3VwQWRk
VXNlclN0eWxlU2hlZXQoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS1N0cmluZ1JlZiBz
b3VyYwogICAgIGF1dG8gd2hpdGVsaXN0ID0gdG9JbXBsKHdoaXRlbGlzdGVkVVJMUGF0dGVybnMp
OwogICAgIGF1dG8gYmxhY2tsaXN0ID0gdG9JbXBsKGJsYWNrbGlzdGVkVVJMUGF0dGVybnMpOwog
Ci0gICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0ID0gQVBJOjpVc2Vy
U3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgc291cmNlLCAoYmFz
ZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+
dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlz
dC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9
LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIFJlZjxBUEk6OlVz
ZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCA9IEFQSTo6VXNlclN0eWxlU2hlZXQ6OmNyZWF0
ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgKGJhc2VVUkxTdHJpbmcuaXNFbXB0
eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZykpLCB3aGl0
ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBi
bGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigp
LCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpLCBXZWJDb3JlOjpV
c2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgp
KTsKIAogICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5h
ZGRVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldC5nZXQoKSk7CiB9CkBAIC05OCw3ICs5OCw3
IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZiwgV0tTdHJpbmdSZWYgc291cmNlUmVmCiAgICAgYXV0byB3aGl0ZWxpc3QgPSB0b0ltcGwo
d2hpdGVsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgYXV0byBibGFja2xpc3QgPSB0b0ltcGwoYmxh
Y2tsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgCi0gICAgYXV0byB1cmwgPSBiYXNlVVJMU3RyaW5n
LmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIGF1dG8gdXJsID0gYmFzZVVSTFN0cmluZy5pc0Vt
cHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiAgVVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKTsKICAg
ICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2VyU2NyaXB0ID0gQVBJOjpVc2VyU2NyaXB0OjpjcmVh
dGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwgV1RGTW92ZSh1cmwpLCB3
aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigp
LCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5n
PigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCB0b1VzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIEFQSTo6VXNlckNvbnRlbnRXb3Js
ZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50
Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQodXNlclNjcmlwdC5nZXQoKSwgSW5qZWN0VXNlclNj
cmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCA2N2E1NDIzZWE1ZWQ1
N2ExZThiZjlkYWQ4MzIwZTA0ZGJhZjczMWI0Li4zODVkY2JjZDg2Mzc2ODYyNjcyZjZlODQ3MDRk
NTdkZWY3ODI1YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQxLDggKzQxLDggQEAKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQu
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURhdGFTdG9yZUdldFR5cGVJRCgpCiB7CkBAIC05NSw3
ICs5NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCi0gICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgc3RvcmUtPnNldFByZXZhbGVudFJl
c291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+c2V0
TGFzdFNlZW4oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY29tcGxldGlvbkhh
bmRsZXJdIHsKKyAgICBzdG9yZS0+c2V0TGFzdFNlZW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY29tcGxl
dGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAg
fSk7CiB9CkBAIC0xMjEsMTEgKzEyMSwxMSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YQogICAg
IH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNl
KFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIHN0b3JlLT5zZXRQ
cmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmUt
PmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJd
IHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJd
IHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgICAgICB9KTsK
IH0KQEAgLTEzOSwxMSArMTM5LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYKICAgICB9CiAK
ICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5zZXRWZXJ5UHJldmFsZW50UmVzb3VyY2Uo
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPnNldFZl
cnlQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UKLSAgICAgICAgc3Rv
cmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgICAgICB9
KTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhUwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPmlzUHJldmFsZW50UmVzb3VyY2UoV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgIHN0b3Jl
LT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUHJldmFsZW50UmVzb3VyY2UpIHsK
ICAgICAgICAgY2FsbGJhY2soaXNQcmV2YWxlbnRSZXNvdXJjZSwgY29udGV4dCk7CiAgICAgfSk7
CiB9CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3Rp
Y3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGQKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2Uo
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsK
KyAgICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXS1dl
YnNpdGVEYXRhU3RvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc3RvcmUtPmlz
UmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IFdlYktpdDo6dG9JbXBsKHN1YnJlc291cmNlSG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIp
IHsKKyAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewogICAgICAgICBjYWxsYmFj
ayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogfQpA
QCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVn
aXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihXS1dlYnNpdGVEYXRhU3RvcmVSCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3Ry
aW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZy
YW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJl
ZEFzU3ViRnJhbWVVbmRlcikgeworICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5k
ZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKSB7CiAgICAgICAg
IGNhbGxiYWNrKGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlciwgY29udGV4dCk7CiAgICAgfSk7
CiB9CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3Rp
Y3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8o
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZEZyb20pLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShi
b29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgeworICAgIHN0b3JlLT5pc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZEZyb20pLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0
ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFz
UmVkaXJlY3RpbmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0
aW5nVG8sIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjM1LDExICsyMzUsMTEgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZgogICAgIH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUt
PmxvZ1VzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewor
ICAgICAgICBzdG9yZS0+bG9nVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiAgICAgZWxz
ZQotICAgICAgICBzdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyVXNlckludGVyYWN0aW9uKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBs
ZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsK
ICAgICAgICAgfSk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5oYXNIYWRVc2VySW50ZXJh
Y3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+
c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9u
KSB7CisgICAgc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNIYWRV
c2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFkVXNlckludGVyYWN0aW9u
LCBjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3Jl
LT5zZXRHcmFuZGZhdGhlcmVkKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUpOworICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhl
cmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUpOwog
fQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZEZ1bmN0
aW9uIGNhbGxiYWNrKQpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
SXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aGFzSGFkVXNlckludGVyYWN0
aW9uKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJlZCkgeworICAg
IHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVk
KSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29udGV4dCk7CiAgICAgfSk7
CiB9CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG8KICAgICBpZiAo
IXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0U3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRv
SW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJmcmFtZVVu
ZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSk7
CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0
cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpCkBAIC0yOTQsNyArMjk0LDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGEKICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3Qp
LT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0
cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dl
YnNpdGVEYXRhU3RvCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3Rv
cmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7
CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhv
c3RSZWRpcmVjdGVkRnJvbSkKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVE
YXRhUwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBzdG9yZS0+
c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSk7
CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9z
dFJlZGlyZWN0ZWRUbykKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3Jl
UgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBzdG9yZS0+c2V0
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpKTsKKyAgICBzdG9y
ZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZFRvKS0+c3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9t
KQpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yCiAgICAgaWYgKCFz
dG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHN0b3JlLT5zZXRUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKKyAgICBzdG9yZS0+c2V0VG9w
RnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+
c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSkt
PnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Rp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggYTgwNmJkZWMyZTJkNDgyM2IyZjFl
OTJlZDEzM2U3MTM2NWRlZjY2NC4uYzg1ODAzM2FlNTkxYjNhMjIzOWIwMWYxYjliMGYzOWZkZmJi
NDBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRU
UENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMzAsMTAgKzMwLDEwIEBACiAKICNpbXBvcnQgIkhUVFBD
b29raWVBY2NlcHRQb2xpY3kuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29va2llLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNp
bXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogc3RhdGljIE5TQXJy
YXk8TlNIVFRQQ29va2llICo+ICpjb3JlQ29va2llc1RvTlNDb29raWVzKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiBjb3JlQ29va2llcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCmluZGV4IDljZjY2ODFhYWIzOTFjMzViNjM3
OTA3YjExMTA4NmY4Mjc5NzZkNWEuLjhlMGM3MjEyODY4MjgyMTE5ZjJmODlmMjk1MDY1YWY0ZDJm
ZWEwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Vz
ZXJTY3JpcHQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
clNjcmlwdC5tbQpAQCAtOTUsNyArOTUsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291
cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbgogICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
QVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdl
YkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBXZWJDb3JlOjpVUkwoYXNz
b2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0
b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCAqdXNl
ckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25z
dHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0
IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5n
VmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2ts
aXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1l
KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2Vi
Q29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVu
dFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRl
eCAzMWYyYTkzNmQ5YWY5MWY5ZTBiZmI5NjZlYTBiZmFkZmM5OTg5MDVmLi4wN2FlNzg0Yjc1MzNj
MjNmNmNkNjRhMDU2NTk0NGFjNTViNDM0NjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAt
NDQsOCArNDQsOCBAQAogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TZXR0aW5ncy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPHd0
Zi9XZWFrT2JqQ1B0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDc4LDcgKzQ3OCw3IEBA
IC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJs
U2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAgICAgaWYgKFtXS1dlYlZpZXcgaGFuZGxlc1VSTFNj
aGVtZTp1cmxTY2hlbWVdKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBhIFVSTCBzY2hlbWUgdGhhdCBXS1dlYlZp
ZXcgaGFuZGxlcyBuYXRpdmVseSIsIHVybFNjaGVtZV07CiAKLSAgICBhdXRvIGNhbm9uaWNhbFNj
aGVtZSA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJsU2No
ZW1lKTsKKyAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdURjo6VVJMUGFyc2VyOjptYXliZUNh
bm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOwogICAgIGlmICghY2Fub25pY2FsU2NoZW1lKQog
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiJyVAJyBpcyBub3QgYSB2YWxpZCBVUkwgc2NoZW1lIiwgdXJsU2NoZW1lXTsKIApAQCAt
NDkwLDcgKzQ5MCw3IEBAIC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2No
ZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAKIC0gKGlkIDxXS1VSTFNj
aGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJs
U2NoZW1lCiB7Ci0gICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJDb3JlOjpVUkxQYXJzZXI6
Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAgYXV0byBjYW5vbmljYWxT
Y2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJsU2NoZW1l
KTsKICAgICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0KaW5kZXggYzY0OWZmNmNiY2VhNWExZGE0NWYzNjBiZTUzOWM3ZGJjNDkyODMyNi4u
NTA2ZmI1YmY2NzRmYzNhZDk2ZWUzYTAyOWI3YWNkM2NmOGEzNDA4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CkBAIC0zOCw5ICszOCw5IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW1wb3J0ICJf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYktpdC9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Lmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogQGltcGxlbWVudGF0aW9u
IFdLV2Vic2l0ZURhdGFTdG9yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCmluZGV4IDNlZGQ4NTMx
YTA5OGIwNGYyNDM3ZDdkZTViODU0MGYzZjYwZWNmNzIuLmRmZWQwYTliZTE3NTM3MjJiNjU0MDc3
MWM4N2IzNjVhYjZkZjA5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC01NCw5ICs1NCw5
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIKICAg
ICAgICAgV1RGOjpTdHJpbmcobmFtZSksCiAgICAgICAgIFdURjo6U3RyaW5nKHNob3J0TmFtZSks
CiAgICAgICAgIFdURjo6U3RyaW5nKGRlc2NyaXB0aW9uKSwKLSAgICAgICAgV2ViQ29yZTo6VVJM
KHNjb3BlVVJMKSwKKyAgICAgICAgVVJMKHNjb3BlVVJMKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheT4oZGlzcGxheSksCi0gICAgICAg
IFdlYkNvcmU6OlVSTChzdGFydFVSTCkKKyAgICAgICAgVVJMKHN0YXJ0VVJMKQogICAgIH07CiAK
ICAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6QXBwbGljYXRpb25NYW5p
ZmVzdD4oc2VsZiwgV1RGTW92ZShjb3JlQXBwbGljYXRpb25NYW5pZmVzdCkpOwpAQCAtODMsNyAr
ODMsNyBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWFDb2RlcgogCiArIChf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOihOU1N0
cmluZyAqKWpzb24gbWFuaWZlc3RVUkw6KE5TVVJMICopbWFuaWZlc3RVUkwgZG9jdW1lbnRVUkw6
KE5TVVJMICopZG9jdW1lbnRVUkwKIHsKLSAgICBhdXRvIG1hbmlmZXN0ID0gV2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2UoV1RGOjpTdHJpbmcoanNvbiksIFdlYkNvcmU6
OlVSTChtYW5pZmVzdFVSTCksIFdlYkNvcmU6OlVSTChkb2N1bWVudFVSTCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZShXVEY6
OlN0cmluZyhqc29uKSwgVVJMKG1hbmlmZXN0VVJMKSwgVVJMKGRvY3VtZW50VVJMKSk7CiAgICAg
cmV0dXJuIHdyYXBwZXIoQVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0OjpjcmVhdGUobWFuaWZlc3Qp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IGU2ZjA5MGZmNWQ0MTM3YzY1ODljZWU4ZmNhODM1MDEz
YjhhNmRlM2QuLjYxNDUyMzJhMGQ4ZTdmMWE4ZDcyZGFkNzEzNzdiYTVjNzRiYjg0ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVl
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxl
U2hlZXQubW0KQEAgLTcwLDcgKzcwLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNl
OihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW4KICAgICAv
LyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJl
bG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3
aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0
MigpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHls
ZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJj
ZSksIHsgV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxE
YXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCks
IEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/
IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFt
ZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3Vz
ZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJ
OjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0
cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpTdHJpbmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5h
bERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0
KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5
ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZy
YW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5f
dXNlckNvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGE3MjlmYWI5
YTc5ZTFkY2QxNTRmNDMwOTFkMTdmNGVkYzgwZGYzYjQuLjY3NGE1ZGIwNDNjOGE2MGYzNjIwYWE3
YmEwMThjMWY5ODVlZGY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogLy8gRm9yIG1ldGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8gc3VwcG9ydCBB
UEkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgLSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbnRlcm5hbGx5
CiAjZGVmaW5lIEFTU0VSVF9OT1RfU1lOQ19USFJFQUQoKSBBU1NFUlQoIW1fc3luY1RocmVhZFJ1
bm5pbmcgfHwgIUlTX0lDT05fU1lOQ19USFJFQUQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKaW5kZXggZGU4
MmZkYWI1YzdmOTUzZmE1YmNhZjQwN2Q5YzY2Y2IxODUyMjdlMy4uN2E5NDI5MTlkZGY4YzRmMmEz
YjE2ZGE3NjcwMTRiMmMyYzE1NGZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKQEAgLTMyMSw3ICszMjEs
NyBAQCB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2llcyhXZWJLaXRDb29raWVN
YW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBnY2hhcgogCiAgICAgLy8gQ29va2llcyBhcmUgcmVhZC93
cml0dGVuIGZyb20vdG8gdGhlIHNhbWUgU1FMaXRlIGRhdGFiYXNlIG9uIGRpc2sgcmVnYXJkbGVz
cwogICAgIC8vIG9mIHRoZSBwcm9jZXNzIHdlIGFjY2VzcyB0aGVtIGZyb20sIHNvIGp1c3QgdXNl
IHRoZSBmaXJzdCBwcm9jZXNzIHBvb2wuCi0gICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50
PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0Q29va2llcyhzZXNzaW9uSUQsIFdlYkNvcmU6
OlVSTChXZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSwgW3Rhc2sgPSBXVEZN
b3ZlKHRhc2spXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIHByb2Nlc3NQb29sc1swXS0+c3VwcGxlbWVudDxX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZXMoc2Vzc2lvbklELCBVUkwoVVJMKCks
IFN0cmluZzo6ZnJvbVVURjgodXJpKSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKICAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKICAg
ICAgICAgICAgIC8vIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGluIGNhc2VzIHdoZXJlIHRoZSB3ZWIg
cHJvY2VzcyBpcyBub3QgYXZhaWxhYmxlLAogICAgICAgICAgICAgLy8gY29uc2lkZXIgdGhlIG9w
ZXJhdGlvbiAiY2FuY2VsbGVkIiBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHRoZSBjbGllbnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCBjZDAyNmU0ZjhlOTFhN2FiZmIxOWJjYzMw
YjBhMTIzNThmMjdkZTUwLi4zN2U2Y2NhMGNlYmNlOTE0NzMwZTNjNmQ0MjVjNWZlZjc3ZmI0ODVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRl
ICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3Jp
Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5
T3JpZ2luLmNwcAppbmRleCAzYmNjMjEyMzY3ODU5MzZhNzcxMjk3ZTZlMzk4ZDI4MGRmYjZiODAy
Li44ODMzNmIzZGM0Njg0OTg4YWM3N2QxNjlkYTZhNTk1ZTYxZTU5ZTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmln
aW4uY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlPcmlnaW4u
aCIKIAogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogLyoqCkBAIC0xMTAsNyArMTEwLDcgQEAgV2ViS2l0U2VjdXJpdHlPcmln
aW4qIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoY29uc3QgZ2NoYXIqIHVyaSkK
IHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCh1cmksIG51bGxwdHIpOwogCi0gICAgcmV0dXJu
IHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7
CisgICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CiB9CiAK
IC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwCmluZGV4IDAyNzU0MzEyN2FlZTFiMDg2ZDAzNjE1MWQxMThjZmM3OTY2NmE0MmUu
Ljk2ZjllZTExODJhMjQyM2I5MTYzZGMzYWYwODIxNmIzZTkxODliNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAgICAg
dm9pZCBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZv
PiYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0
LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgIHsK
ICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2Vy
SW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklk
ZW50aWZpZXIpOwotICAgICAgICBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uIG5hdmlnYXRpb25BY3Rp
b24oQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
RGF0YSksIGZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJl
c291cmNlUmVxdWVzdCksIFdlYkNvcmU6OlVSTCB7IH0sIGZhbHNlLCBXVEZNb3ZlKHVzZXJJbml0
aWF0ZWRBY3Rpdml0eSkpKTsKKyAgICAgICAgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiBuYXZpZ2F0
aW9uQWN0aW9uKEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbkRhdGEpLCBmcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RG
TW92ZShyZXNvdXJjZVJlcXVlc3QpLCBVUkwgeyB9LCBmYWxzZSwgV1RGTW92ZSh1c2VySW5pdGlh
dGVkQWN0aXZpdHkpKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYmtpdFdlYlZpZXdD
cmVhdGVOZXdQYWdlKG1fd2ViVmlldywgd2luZG93RmVhdHVyZXMsICZuYXZpZ2F0aW9uQWN0aW9u
KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4IDkxNjc0YWMyODhmN2U3OGY0
NTFlOTU5M2QzYTU1NDhmZjU5ODg4OWYuLjA3YjU4YWQzMjNkNTQ1OGM5MDM2NjNkYjgzMGU5NGJl
N2U1ZDg4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKICNp
bmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZp
ZXcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dVbmlx
dWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVk
ZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9v
cFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDBmYTRhMThmODljOGM1MWE0NTQwNzc4
ZjVhZTI3YmVhODdkN2I1ZjEuLjIzNDg1OTY2M2QxZjJjNzgwODk4ZjA2MGY0MDE0OTg4ZTc4NmI0
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwCkBAIC02NiwxMiArNjYsMTIgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJpdmF0ZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVl
UHRyU291cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
U291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTI2
NDcsNyArMjY0Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfcGxhaW5fdGV4dChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogcGxhaW5UCiAgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
cGxhaW5UZXh0KTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9hZERhdGEoeyByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwbGFpblRleHQpLCBwbGFpblRleHQgPyBzdHJsZW4ocGxh
aW5UZXh0KSA6IDAgfSwgInRleHQvcGxhaW4iX3MsICJVVEYtOCJfcywgYmxhbmtVUkwoKS5zdHJp
bmcoKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHBsYWluVGV4dCksIHBsYWluVGV4dCA/IHN0cmxlbihwbGFpblRleHQp
IDogMCB9LCAidGV4dC9wbGFpbiJfcywgIlVURi04Il9zLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5n
KCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcAppbmRleCBiYmQ1MTZlNzI5NjIzMzdiZGRmZWNkMGM1NmQzOTgxNDgzM2Q4YTc0Li5iN2U2
MzMwZWFlYjJlMjAyMmU2MjNmM2E2OGVjMWJjMTdhYTM3NzVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVk
ZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdl
YkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmNwcAppbmRleCA3ODBhMTVlOTZkM2MzNjI0NmJiNWQ1YTQxYzcxMjdiMmFiZGQxMzFj
Li4yZjA2NjA4NmQ5OTJmYzMwZmFmNmM3OTQwYWNlZjJmZGZjYzg1M2NlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDUsMTEgKzEwNSwxMSBAQCB2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdV
UkxTdHJpbgogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmF0aW5nOwogCi0gICAgV2ViQ29y
ZTo6VVJMIG9yaWdpbmF0aW5nVVJMKFdlYkNvcmU6OlVSTCgpLCBvcmlnaW5hdGluZ1VSTFN0cmlu
Zyk7CisgICAgVVJMIG9yaWdpbmF0aW5nVVJMKFVSTCgpLCBvcmlnaW5hdGluZ1VSTFN0cmluZyk7
CiAKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBsaW5rSWNvblVSTHM7CisgICAgVmVjdG9yPFVS
TD4gbGlua0ljb25VUkxzOwogICAgIGZvciAoY29uc3QgYXV0byYgbGlua0ljb25VUkxTdHJpbmcg
OiBsaW5rSWNvblVSTFN0cmluZ3MpCi0gICAgICAgIGxpbmtJY29uVVJMcy5hcHBlbmQoV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBsaW5rSWNvblVSTFN0cmluZykpOworICAgICAgICBsaW5r
SWNvblVSTHMuYXBwZW5kKFVSTChVUkwoKSwgbGlua0ljb25VUkxTdHJpbmcpKTsKIAogICAgIHBs
YXRmb3JtU2hvd1BheW1lbnRVSShvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxzLCBwYXltZW50
UmVxdWVzdCwgW3RoaXNdKGJvb2wgcmVzdWx0KSB7CiAgICAgICAgIEFTU0VSVChtX3N0YXRlID09
IFN0YXRlOjpBY3RpdmF0aW5nKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpCiAgICAgZGlkUmVhY2hG
aW5hbFN0YXRlKCk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlk
YXRlTWVyY2hhbnQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFT
U0VSVChtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlID09IE1lcmNoYW50VmFsaWRhdGlvblN0YXRl
OjpJZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggMDg1MDE5ZGEwNmUzMmZi
MGY0ZWM1ODk5MTUzNTQ4NmZlYmE3ZjhkYS4uZWRlN2E3MGNmMjEzNTk0ODgwYTY4ZjUwZGE3Y2Y5
Y2YxODU0NjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC00Myw3ICs0Myw2IEBA
IGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKIGNsYXNzIFBheW1lbnRNZXJj
aGFudFNlc3Npb247CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogfQogCiBPQkpD
X0NMQVNTIE5TT2JqZWN0OwpAQCAtNjEsNyArNjAsNyBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtl
VwogICAgIH5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwogCiAgICAgdm9pZCBkaWRDYW5j
ZWxQYXltZW50U2Vzc2lvbigpOwotICAgIHZvaWQgdmFsaWRhdGVNZXJjaGFudChjb25zdCBXZWJD
b3JlOjpVUkwmKTsKKyAgICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJik7CiAgICAg
dm9pZCBkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmKTsKICAgICB2
b2lkIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpOwogICAgIHZvaWQgZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0Jik7CkBAIC05OSw3ICs5
OCw3IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXCiAgICAgYm9vbCBwbGF0Zm9ybUNhbk1ha2VQ
YXltZW50cygpOwogICAgIHZvaWQgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2Fy
ZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5O
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAg
ICB2b2lkIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRV
SShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOworICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRp
bmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZh
bGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZv
aWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAgICAgdm9pZCBwbGF0Zm9y
bUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4IDE1OWFjMTkyNDYyYjQ5ZjdmOTQ2ZmM0NmE2ZTk4
ZjkyNmJiY2I5NmMuLjRlMGYyMmI3YWRmNTEwNDE5ZmU2MGFjOWJhNGVhNTQ4OWRiYWNhMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKQEAgLTMxLDE1
ICszMSwxMSBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OwogCi1SZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1Bh
eW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRp
bmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CitSZXRhaW5QdHI8UEtQYXlt
ZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYg
b3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2Nv
Y29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KaW5kZXggYTRlZWNjYjA5MWJm
MGI0MGNmYjBjMDUzMjgyMjU2OTMxYjA3MzRjNS4uZGY1YjlkYTdkZGRiZmI1NjVhNThhYmRlMjll
ZDMzMzc0MWI1M2ZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUNvY29hLm1tCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKIFNPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQpAQCAtNTExLDcgKzUxMSw3IEBAIHN0YXRp
YyBQS1BheW1lbnRSZXF1ZXN0QVBJVHlwZSB0b0FQSVR5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6CiB9CiAjZW5kaWYKIAotUmV0YWluUHRyPFBLUGF5bWVudFJlcXVl
c3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4m
IGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmIHBheW1lbnRSZXF1ZXN0KQorUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXlt
ZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29uc3QgVVJMJiBvcmlnaW5h
dGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQogewogICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBpbml0
XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCBiMTBk
OTJlMzhiMGMxNzUzMzAwMjgyZWI3ZDU4MGUyYzIzNmNmYTg5Li4xN2I3ZjJmODlhMThiNzgwNmEy
ZTk2YzY0ZTA4ZGIxZmYyODZjNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5SU9TLm1tCkBAIC00MSw3ICs0MSw3IEBAIFNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJ
KGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxV
Ukw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlDbGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFj
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4IDc0
MTU5MzgzZjE5NTQyN2RiOTc2MGE4YzAxZWM3MDY3YTY3YzZmOTUuLjI1MTQ5NTBlNWQwMjQ2MDNl
MDU3MWFiYjAzNmY3OTEyOTMwZDE2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlNYWMubW0KQEAgLTQxLDcgKzQxLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQs
IFBLRXh0ZW5zaW9uUGF5bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lvblBvaW50TmFtZSwKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJD
b3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RGOjpGdW5jdGlv
bjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5n
VVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghUGFzc0tpdExpYnJh
cnkoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCmluZGV4IGY2M2JiMmJhZmViOThkZTQzNWVmYjVmNWNkNTNkZTQwYzQ3NmNiZTEuLmEx
MjI4NzRjMWYwNTA1MjhmNjdiNDUxM2FhN2RiNDI0OWYxNmEwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCkBAIC00NCwxMCArNDQsMTAgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZS5oPgogCkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoY29uc3QgU3RyaW5nJiBoYW5kbGUs
IGNvbnN0IFMKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3BhZ2VMb2FkU3RyYXRlZ3kn
IGlzIGludmFsaWQuIik7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VM
b2FkVGltZW91dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRU
aW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKLSAgICBwYWdlLT5sb2FkUmVxdWVz
dChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHVybCkpOworICAgIHBhZ2UtPmxvYWRSZXF1
ZXN0KFVSTChVUkwoKSwgdXJsKSk7CiAgICAgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25Q
YWdlKCpwYWdlLCBwYWdlTG9hZFN0cmF0ZWd5LnZhbHVlKCksIHBhZ2VMb2FkVGltZW91dCwgV1RG
TW92ZShjYWxsYmFjaykpOwogfQogCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBzdGF0aWMgU3RyaW5n
IGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQoU3RyaW5nIGRvbWFpbikKICAgICBpZiAo
ZG9tYWluWzBdICE9ICcuJykgewogICAgICAgICAvLyBSRkMgMjk2NTogSWYgYW4gZXhwbGljaXRs
eSBzcGVjaWZpZWQgdmFsdWUgZG9lcyBub3Qgc3RhcnQgd2l0aCBhIGRvdCwgdGhlIHVzZXIgYWdl
bnQgc3VwcGxpZXMgYSBsZWFkaW5nIGRvdC4KICAgICAgICAgLy8gQXNzdW1lIHRoYXQgYW55IGhv
c3QgdGhhdCBlbmRzIHdpdGggYSBkaWdpdCBpcyB0cnlpbmcgdG8gYmUgYW4gSVAgYWRkcmVzcy4K
LSAgICAgICAgaWYgKCFXZWJDb3JlOjpVUkw6Omhvc3RJc0lQQWRkcmVzcyhkb21haW4pKQorICAg
ICAgICBpZiAoIVVSTDo6aG9zdElzSVBBZGRyZXNzKGRvbWFpbikpCiAgICAgICAgICAgICByZXR1
cm4gbWFrZVN0cmluZygnLicsIGRvbWFpbik7CiAgICAgfQogICAgIApAQCAtMTMwMCw3ICsxMzAw
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKGNvbnN0IFN0
cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLAogICAgIGlmICghcGFnZSkKICAgICAgICAgQVNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAgV2Vi
Q29yZTo6VVJMIGFjdGl2ZVVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgcGFnZS0+
cGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKTsKKyAgICBVUkwgYWN0aXZlVVJMID0gVVJMKFVS
TCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOwogICAgIEFTU0VSVChhY3Rp
dmVVUkwuaXNWYWxpZCgpKTsKIAogICAgIFdlYkNvcmU6OkNvb2tpZSBjb29raWU7CkBAIC0xMzU3
LDcgKzEzNTcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVBbGxDb29raWVz
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaQogICAgIGlmICghcGFnZSkKICAg
ICAgICAgU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAK
LSAgICBXZWJDb3JlOjpVUkwgYWN0aXZlVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOworICAgIFVSTCBhY3RpdmVVUkwg
PSBVUkwoVVJMKCksIHBhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVVUkwoKSk7CiAgICAgQVNT
RVJUKGFjdGl2ZVVSTC5pc1ZhbGlkKCkpOwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBj
b29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2Vy
UHJveHk+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3du
bG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xp
ZW50Lm1tCmluZGV4IDZmZjFiNDc4MzIzOTJiZDAzMjU2MjFlNTA1ZmIwNGE3NGY0NTY1ZmYuLjFk
NmU3MTg4NDViMTQ4NWUwYjI2NjZiOWFmMWVmOTMxNjAyMDQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC0yMTMsNyArMjEzLDcg
QEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSkKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVBy
ZXZpZXdEb3dubG9hZCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gZG93bmxvYWRQ
cm94eS5vcmlnaW5hdGluZ1BhZ2UoKSkgewogICAgICAgICAgICAgTlNVUkwgKmRlc3RpbmF0aW9u
VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDooTlNTdHJpbmcgKilkb3dubG9hZFByb3h5LmRl
c3RpbmF0aW9uRmlsZW5hbWUoKV07Ci0gICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcigpLT5maW5pc2goV2ViQ29yZTo6VVJMKGRlc3RpbmF0aW9uVVJMKSk7CisgICAg
ICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigpLT5maW5pc2goVVJMKGRl
c3RpbmF0aW9uVVJMKSk7CiAgICAgICAgIH0KICAgICAgICAgcmVsZWFzZUFjdGl2aXR5VG9rZW5J
Zk5lY2Vzc2FyeShkb3dubG9hZFByb3h5KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA0NTk4NWY1MGU0
YmZlNzAyNWFjZGE4ZjYyZTU1ZDk4Y2FkMzQ1YmJjLi4wNTU2ZWNjYTMyNDgwZTlkMjY3NDVhZTdi
MTk0ZDBlNWM5ZTZjYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUuaApAQCAtMTE2LDcgKzExNiw3IEBAIGNsYXNzIE5hdmlnYXRpb25TdGF0
ZSBmaW5hbCA6IHByaXZhdGUgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgewogCiAgICAgICAgIFJl
ZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmKSBvdmVycmlk
ZTsKIAotICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJl
ZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJikg
b3ZlcnJpZGU7CisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29u
c3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBvdmVy
cmlkZTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKQEAgLTEyNCw4ICsxMjQsOCBAQCBj
bGFzcyBOYXZpZ2F0aW9uU3RhdGUgZmluYWwgOiBwcml2YXRlIFBhZ2VMb2FkU3RhdGU6Ok9ic2Vy
dmVyIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICB2b2lkIHdlYkdMTG9h
ZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYpIGNvbnN0IGZpbmFsOwotICAg
ICAgICB2b2lkIHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViUGFn
ZVByb3h5JiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCByZXNvbHZlV2ViR0xM
b2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmluYWw7CiAgICAgICAgIGJv
b2wgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2VQcm94eSYsIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0mLCBib29sIGluUGFnZUNhY2hlLCBBUEk6Ok9iamVjdCopIGZpbmFsOwogICAg
ICAgICBib29sIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnSW4oV2ViUGFnZVByb3h5JiwgQVBJOjpE
aWN0aW9uYXJ5JikgZmluYWw7CiAgICAgICAgIGJvb2wgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZl
cnNpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7CkBAIC0xMzMsNyAr
MTMzLDcgQEAgY2xhc3MgTmF2aWdhdGlvblN0YXRlIGZpbmFsIDogcHJpdmF0ZSBQYWdlTG9hZFN0
YXRlOjpPYnNlcnZlciB7CiAgICAgICAgIGJvb2wgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdl
YlBhZ2VQcm94eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBjb25zdCBWZWN0b3I8UmVmPFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBj
b250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6VVJMJiYs
IFZlY3RvcjxTdHJpbmc+JiYsIFZlY3RvcjxTdHJpbmc+JiYpIGZpbmFsOworICAgICAgICB2b2lk
IGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkmLCBVUkwmJiwgVmVjdG9y
PFN0cmluZz4mJiwgVmVjdG9yPFN0cmluZz4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0
aW9uQWN0aW9uPiYmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25SZXNwb25zZShXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9u
c2U+JiYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBhNWIwODdjZmYzMDhiZjE0MGFmODViZGFkZDM5ZmJm
Njk5MTA3OWE3Li40MjA3NzM5YWIwZTBmMDRiNTI3Y2M5Zjc3ZDViODQwMTAxM2Y1OGU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBA
IC03MCw5ICs3MCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdlbmVyYXRvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Vy
aWFsaXplZENyeXB0b0tleVdyYXAuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjaWYgSEFWRShBUFBfTElOS1MpCiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CkBAIC0zOTIsNyArMzkyLDcgQEAgaW5saW5lIFdlYkNv
cmU6OldlYkdMTG9hZFBvbGljeSB0b1dlYkNvcmVXZWJHTExvYWRQb2xpY3koX1dLV2ViR0xMb2Fk
UG9saWN5IHBvbGkKICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQog
Ci12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNv
bnN0Cit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9s
aWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJHTEFsbG93Q3JlYXRpb24pOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5Jiwg
Y29uc3QgV2ViCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAordm9pZCBOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVBy
b3h5JiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBpZiAoIW1f
bmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVzb2x2
ZVdlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJH
TEFsbG93Q3JlYXRpb24pOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBh
Z2VQCiAgICAgfQogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OlVSTCYm
IHVybCwgVmVjdG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYg
bm90aWZpY2F0aW9ucykKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpj
b250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5JiwgVVJMJiYgdXJsLCBWZWN0
b3I8U3RyaW5nPiYmIGxpc3RJZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4mJiBub3RpZmljYXRp
b25zKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdVUkxDb250ZW50UnVsZUxpc3RJZGVudGlmaWVyc05vdGlmaWNhdGlvbnMp
CiAgICAgICAgIHJldHVybjsKQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJQYWdlUHJv
eHkmCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdlYkNvcmU6OlVSTCB1cmwoV2ViQ29yZTo6VVJMKCksIHVybFN0cmluZyk7CisgICAgVVJMIHVy
bChVUkwoKSwgdXJsU3RyaW5nKTsKIAogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlKSBfd2ViVmlldzptX25hdmlnYXRp
b25TdGF0ZS5tX3dlYlZpZXcgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOnVybCBkZWxh
eTpkZWxheV07CiB9CkBAIC05NzIsNyArOTcyLDcgQEAgUmVmUHRyPEFQSTo6RGF0YT4gTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVAK
ICAgICByZXR1cm4gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhkYXRhKTsKIH0KIAot
UmVmUHRyPEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmIHBhZ2UsIHVuc2ln
bmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3Ry
aW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1JlZlB0cjxBUEk6OlN0cmluZz4gTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJl
ZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgLy8gV2ViS2l0VGVzdFJ1bm5lciB1c2VzIEMgQVBJLiBIZW5jZSwgbm8gU1BJIGlzIHByb3Zp
ZGVkIHRvIG92ZXJyaWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24uCiAgICAgcmV0dXJuIEFQSTo6
U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwgdXJsKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdSZXN1bHRDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENv
Y29hLm1tCmluZGV4IDA4N2FjNjU0OTMzM2ExNDBhZjUzOWVhNDA0Yjk2ZmExZWVjZjM0OTQuLjA0
ZGZkNWQ0NGQ2ZTQ4MzExZGRjMmYyZmU3NDE2OWY0NDhjNWIzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1t
CkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIEhBVkUoU0FGRV9C
Uk9XU0lORykKLVNhZmVCcm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNvcmU6
OlVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorU2FmZUJyb3dzaW5n
UmVzdWx0OjpTYWZlQnJvd3NpbmdSZXN1bHQoVVJMJiYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVz
dWx0ICpyZXN1bHQpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX3Byb3ZpZGVy
KFtyZXN1bHQgcHJvdmlkZXJdKQogICAgICwgbV9pc1BoaXNoaW5nKFtyZXN1bHQgaXNQaGlzaGlu
Z10pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lz
dGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCBhN2RhZDQ4MTUyNjFhOThjNmMxMWQz
NDQ4ZjNkYjIxODEzMWE2MmRhLi45OGJkYzI3OTY0YTU2OWE3Nzk4YzE5YzdiNWFhYzJjNzRlNmQ1
OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTEwNSw3ICsxMDUsNyBAQCAtICh2
b2lkKXNldFByb2dyZXNzOihmbG9hdClwcm9ncmVzcwogICAgICAgICBbX2l0ZW0gc2V0UHJldmll
d0l0ZW1Qcm92aWRlclByb2dyZXNzOkAocHJvZ3Jlc3MpXTsKIH0KIAotLSAodm9pZClmaW5pc2g6
KFdlYkNvcmU6OlVSTCl1cmwKKy0gKHZvaWQpZmluaXNoOihVUkwpdXJsCiB7CiAgICAgaWYgKHNl
bGYuY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHNlbGYuY29tcGxldGlvbkhhbmRsZXIoKE5T
VVJMKil1cmwsIG5pbCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlcjo6dXBkYXRlUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCiAgICAgICAgIFttX3FsUHJl
dmlld0NvbnRyb2xsZXJEYXRhU291cmNlIHNldFByb2dyZXNzOnByb2dyZXNzXTsKIH0KIAotdm9p
ZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmluaXNoKFdlYkNvcmU6OlVSTCB1cmwpCit2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2goVVJMIHVybCkKIHsKICAgICBpZiAobV9x
bFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSkKICAgICAgICAgW21fcWxQcmV2aWV3Q29udHJv
bGxlckRhdGFTb3VyY2UgZmluaXNoOnVybF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLmgKaW5kZXggMzNmMGE5YzJjZDI2MTI1NzFlMjg2ZDU3NjczZWI3MDQwNGQw
MDFiMi4uNmNmYjQ0M2E5NTg4NjU1NmYwOTg2MDg3MDQ0ZTQyMDI2ZDNmYTlhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTE5LDcgKzExOSw3IEBA
IGNsYXNzIFVJRGVsZWdhdGUgewogICAgICAgICB2b2lkIHRvb2xiYXJzQXJlVmlzaWJsZShXZWJQ
YWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICAgICAgYm9vbCBy
dW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRFeGNlZWRC
YWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdlYlBhZ2VQcm94eSYsIFdL
UmVzb3VyY2VMaW1pdCkgZmluYWw7Ci0gICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25s
b2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CisgICAgICAg
IHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpEYXRh
JikgZmluYWw7CiAjZW5kaWYKICAgICAgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1
cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5JikgZmluYWw7CiAgICAgICAgIGJvb2wgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpp
bmRleCAzZWNlODIwZWQ0YjMxNjQzNjkzZjUyMjQ3ZWRhZDljNjhiODFmZjYwLi5mOTE3YWE1Zjdh
MTE4YjIyZDhlYjIyNTU4MzRjNmM5Y2NjZGNkYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTUxLDggKzUxLDggQEAKICNpbXBvcnQgIl9XS0Zy
YW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRlc3RSZXN1bHRJbnRlcm5hbC5o
IgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVEZXZp
Y2UuaD4KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVh
dGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZvPgogCiAgICAg
YXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlhdGVk
QWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIp
OwogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoc291cmNlRnJh
bWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpOwotICAgIGF1dG8gYXBpTmF2
aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0ZDo6
bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgV2ViQ29yZTo6VVJMKCksIHNob3VsZE9wZW5BcHBM
aW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAgICBhdXRvIGFwaU5hdmln
YXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51
bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1v
dmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICBhdXRvIGFwaVdpbmRvd0ZlYXR1cmVz
ID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzKTsKIApAQCAtNzg3
LDcgKzc4Nyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3dQYWdlKFdlYlBhZ2VQ
cm94eSopCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3Nob3dXZWJW
aWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogICAgIAotdm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBj
b25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBk
YXRhKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VS
TCwgQVBJOjpEYXRhJiBkYXRhKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmln
aW5hdGluZ1VSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtODY1LDggKzg2NSw4IEBAIHN0YXRpYyB2
b2lkIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcyhjb25zdCBXZWJGcmFt
ZVByb3h5JiBmcmFtZSwKICAgICB9KTsKIAogICAgIGNvbnN0IFdlYkZyYW1lUHJveHkqIG1haW5G
cmFtZSA9IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCk7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVl
c3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJhbWUudXJsKCkpOwotICAgIFdlYkNvcmU6OlVS
TCBtYWluRnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOworICAgIFVS
TCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIGZyYW1lLnVybCgpKTsKKyAgICBVUkwgbWFpbkZyYW1l
VVJMKFVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKIAogICAgIF9XS0NhcHR1cmVEZXZpY2VzIGRl
dmljZXMgPSAwOwogICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzQXVkaW9DYXB0dXJlKCkpCkBAIC05
NzMsOCArOTczLDggQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQ
ZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSwKIAogICAgIFdLV2ViVmlldyAq
d2ViVmlldyA9IG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXc7CiAgICAgY29uc3QgV2ViRnJhbWVQcm94
eSogbWFpbkZyYW1lID0gZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKTsKLSAgICBXZWJDb3JlOjpV
UkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBmcmFtZS51cmwoKSk7Ci0gICAgV2Vi
Q29yZTo6VVJMIG1haW5GcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgbWFpbkZyYW1lLT51cmwoKSk7
CisgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgZnJhbWUudXJsKCkpOworICAgIFVSTCBt
YWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogCiAgICAgYXV0byBkZWNpc2lv
bkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkKE5TU3RyaW5nICosIEJPT0wpPjo6ZnJvbUNhbGxhYmxl
KFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oTlNTdHJpbmcgKnNhbHQsIEJP
T0wgYXV0aG9yaXplZCkgewogICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5zZXRVc2VyTWVkaWFB
Y2Nlc3NJbmZvKFN0cmluZyhzYWx0KSwgYXV0aG9yaXplZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJl
Y292ZXJ5QXR0ZW1wdGVyLm1tCmluZGV4IDVmOTlhZWM4NWRhNzUyNGJhMDQxZTc1ZWIwODAxNzM5
OTA0OWIyMTIuLmFlNTc2NWU0OGU3MWI4N2ZmNjBkMTQwNWMzYzdhMzM3MjUxNWNhMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJl
Y292ZXJ5QXR0ZW1wdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
UmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCkBAIC02OSw3ICs2OSw3IEBAIC0g
KEJPT0wpYXR0ZW1wdFJlY292ZXJ5CiAgICAgaWYgKCF3ZWJGcmFtZVByb3h5KQogICAgICAgICBy
ZXR1cm4gTk87CiAKLSAgICB3ZWJGcmFtZVByb3h5LT5sb2FkVVJMKFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgX3VybFN0cmluZykpOworICAgIHdlYkZyYW1lUHJveHktPmxvYWRVUkwoVVJM
KFVSTCgpLCBfdXJsU3RyaW5nKSk7CiAgICAgcmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bQppbmRleCBhZTY0NzA3ZGExNTFjMjJiYzM4MzlkYWI0YWY3ZTc0MDE0ZTAyMjBlLi41ZmQ1Yjkw
Y2Q0OWRiNDdkOGU3YzMwNmZjNDg2YjNiZTMxMmQ4MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAt
MzMsNyArMzMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkSXRlbUluZm8uaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNWFhZGNmNjdk
MTVlMGZmNGE3NzQxYjg1ZTlkZTI3YTQ5NzIyMjlmMi4uYmNiZjUzNzZiMWEzZWJlYjQ3ZjgzYjMy
ODM4ZDIxNGRkNzBiNzFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KQEAgLTQwNjYsNyArNDA2Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OndyaXRl
VG9VUkxGb3JGaWxlUHJvbWlzZVByb3ZpZGVyKE5TRmlsZVByb21pc2VQcm92aWRlciAqcHJvdmlk
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpVUkwgYmxvYlVSTCB7IGlu
Zm8uYmxvYlVSTCB9OworICAgIFVSTCBibG9iVVJMIHsgaW5mby5ibG9iVVJMIH07CiAgICAgaWYg
KGJsb2JVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYktpdFVu
a25vd25FcnJvcigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggZTA3YWFjODk2MDM4MTU2MWE3
MmNhNTRiNzU1NzM5Mjc5ODVlMzQwYy4uNDc3MzZmMDZkZjgyODY4ZmUzYmNiZGNkMDgxMGNlZWNm
ZGQ2ZGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQcm90
ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NSw4ICs3NCw4IEBA
IGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpEb3dubG9hZD4sIHB1YmxpCiAgICAgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1Bh
Z2UoKSBjb25zdDsKICAgICB2b2lkIHNldE9yaWdpbmF0aW5nUGFnZShXZWJQYWdlUHJveHkqKTsK
IAotICAgIHZvaWQgc2V0UmVkaXJlY3RDaGFpbihWZWN0b3I8V2ViQ29yZTo6VVJMPiYmIHJlZGly
ZWN0Q2hhaW4pIHsgbV9yZWRpcmVjdENoYWluID0gV1RGTW92ZShyZWRpcmVjdENoYWluKTsgfQot
ICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiByZWRpcmVjdENoYWluKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWRpcmVjdENoYWluOyB9CisgICAgdm9pZCBzZXRSZWRpcmVjdENoYWluKFZlY3Rv
cjxVUkw+JiYgcmVkaXJlY3RDaGFpbikgeyBtX3JlZGlyZWN0Q2hhaW4gPSBXVEZNb3ZlKHJlZGly
ZWN0Q2hhaW4pOyB9CisgICAgY29uc3QgVmVjdG9yPFVSTD4mIHJlZGlyZWN0Q2hhaW4oKSBjb25z
dCB7IHJldHVybiBtX3JlZGlyZWN0Q2hhaW47IH0KIAogICAgIHZvaWQgc2V0V2FzVXNlckluaXRp
YXRlZChib29sIHZhbHVlKSB7IG1fd2FzVXNlckluaXRpYXRlZCA9IHZhbHVlOyB9CiAgICAgYm9v
bCB3YXNVc2VySW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNVc2VySW5pdGlhdGVkOyB9
CkBAIC0xMjYsNyArMTI1LDcgQEAgY2xhc3MgRG93bmxvYWRQcm94eSA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRvd25sb2FkPiwgcHVibGkKICAgICB1aW50NjRf
dCBtX2J5dGVzTG9hZGVkIHsgMCB9OwogCiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1fb3Jp
Z2luYXRpbmdQYWdlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IG1fcmVkaXJlY3RDaGFpbjsK
KyAgICBWZWN0b3I8VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9vbCBtX3dhc1VzZXJJbml0
aWF0ZWQgeyB0cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9GcmFtZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRT
dGF0ZS5jcHAKaW5kZXggOWZlM2M3NjU2MWIyNTU3MTZhNDViYmEzOGZlOTk1YTAwNTk3N2ZmYi4u
NzJmNGY3MjQ1NWE3ZWI4YTY1YjllNTI3ZTU1YTFmODIxYWNlMDhmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcApAQCAtMzIsNyArMzIsNyBAQCBGcmFtZUxv
YWRTdGF0ZTo6fkZyYW1lTG9hZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIEZy
YW1lTG9hZFN0YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBBU1NFUlQobV9wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwogCkBAIC00MCw3ICs0MCw3
IEBAIHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKQogICAgIG1fcHJvdmlzaW9uYWxVUkwgPSB1cmw7CiB9CiAKLXZvaWQg
RnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwpOwogCkBAIC04MSwxMiArODEs
MTIgQEAgdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkRmFpbExvYWQoKQogICAgIG1fc3RhdGUgPSBT
dGF0ZTo6RmluaXNoZWQ7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1bWVu
dE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkU3Rh
dGU6OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBt
X3VybCA9IHVybDsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6c2V0VW5yZWFjaGFibGVVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6
OnNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwpCiB7CiAgICAgbV9s
YXN0VW5yZWFjaGFibGVVUkwgPSBtX3VucmVhY2hhYmxlVVJMOwogICAgIG1fdW5yZWFjaGFibGVV
UkwgPSB1bnJlYWNoYWJsZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0ZyYW1lTG9hZFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0
ZS5oCmluZGV4IDk4YzMyNWU4NDQzNmVkYWU0ZGNmNjM5ZDE0MDc2ZGE5ODM1MzZjMTIuLmM2NTAw
MDNmZmI1ZjBiNjg4NWMxM2YzMjZiZDJmYjRmZDI2YzlkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRnJhbWVMb2FkU3RhdGUuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIApAQCAtMzksMjkgKzM5LDI5IEBAIGNsYXNzIEZyYW1lTG9hZFN0YXRl
IHsKICAgICAgICAgRmluaXNoZWQKICAgICB9OwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOworICAgIHZvaWQgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOwogICAgIHZvaWQg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWlsTG9hZCgpOwogCi0gICAg
dm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7Cisg
ICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgVVJMJik7CiAKICAgICBT
dGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICBjb25zdCBXZWJDb3Jl
OjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6
VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0K
KyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3Qg
VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0K
IAotICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAg
Y29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5y
ZWFjaGFibGVVUkw7IH0KKyAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYpOwor
ICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3VucmVhY2hh
YmxlVVJMOyB9CiAKIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpGaW5pc2hl
ZCB9OwotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKLSAgICBXZWJDb3JlOjpVUkwgbV9wcm92aXNp
b25hbFVSTDsKLSAgICBXZWJDb3JlOjpVUkwgbV91bnJlYWNoYWJsZVVSTDsKLSAgICBXZWJDb3Jl
OjpVUkwgbV9sYXN0VW5yZWFjaGFibGVVUkw7CisgICAgVVJMIG1fdXJsOworICAgIFVSTCBtX3By
b3Zpc2lvbmFsVVJMOworICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOworICAgIFVSTCBtX2xhc3RV
bnJlYWNoYWJsZVVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
aW5kZXggMGU5MjE4MzMyN2FiZjg3YWJiNjIwNjcwN2U2YWU1OGE2NTZhYjViNC4uMTgxYTllMjRh
ZTVlZjY3NmQ2OThhNmY0MjVkZTk5N2Q1ODM4OGVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01MzYs
NyArNTM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc0RpZFJlc3Vt
ZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzRGlkUmVz
dW1lKCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndyaXRlQmxvYlRvRmls
ZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
YXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlm
ICghY2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CmluZGV4IDI1NTg5N2U3ZTgyNWUxN2I4M2U4YjE0NjRiNDgwOTE3NTZlYTMwMDcuLjRkYmJiNmZl
ZTA2MmZmNWUwOGJmMTNjMDc3MzE1MjA4ZTk5NTM0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMyw4ICsy
Myw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKLSNkZWZpbmUgTmV0d29ya1Byb2Nlc3NQcm94eV9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
ICJDaGlsZFByb2Nlc3NQcm94eS5oIgpAQCAtNDksNyArNDgsNiBAQCBjbGFzcyBQcm90ZWN0aW9u
U3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZTsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVVJMOwogc3RydWN0IFNlY3VyaXR5T3JpZ2lu
RGF0YTsKIH0KIApAQCAtODcsNyArODUsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5IGZp
bmFsIDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJvdAogICAg
IHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCi0gICAgdm9pZCB3
cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0
aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCB3
cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CiAKICAgICB2b2lkIHByb2Nlc3NS
ZWFkeVRvU3VzcGVuZCgpOwogICAgIApAQCAtMjAzLDUgKzIwMSwzIEBAIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzUHJveHksIHByaXZhdGUgUHJv
Y2Vzc1Rocm90CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIE5ldHdv
cmtQcm9jZXNzUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNw
cAppbmRleCAxNzU5ZjhhNDkzNjdkMDUyZTVmY2FlNTE3M2RhMjY3MjUzOTdmNjYwLi4yZWQxMDc1
YzYwMGViZGRlYTVlNGZmNTRmYWE5MWRkZDVmNWJlMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlTG9hZFN0YXRlLmNwcApAQCAtMjA2LDkgKzIwNiw5IEBAIGJvb2wgUGFnZUxvYWRT
dGF0ZTo6aGFzT25seVNlY3VyZUNvbnRlbnQoY29uc3QgRGF0YSYgZGF0YSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKGRhdGEuc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKQot
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhkYXRhLnByb3Zpc2lvbmFsVVJMLCAi
aHR0cHMiKTsKKyAgICAgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJcyhkYXRhLnByb3Zpc2lvbmFs
VVJMLCAiaHR0cHMiKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzKGRhdGEudXJs
LCAiaHR0cHMiKTsKKyAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzKGRhdGEudXJsLCAiaHR0cHMi
KTsKIH0KIAogYm9vbCBQYWdlTG9hZFN0YXRlOjpoYXNPbmx5U2VjdXJlQ29udGVudCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9y
ZS5jcHAKaW5kZXggMjMxMDc1YWMzNTk5YmFkMWQxOWFkNGQ3YzQyZmM3MmZmOThjZGEwMy4uNTEz
MmI4M2JmYWFhYTEzZjQ3NmE2NjM2NTFjZDM2MjAwNjY0YWVmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMzEsMTAg
KzMxLDEwIEBACiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
SW5mb1N0b3JlLmgKaW5kZXggNmU5ZWVmYzhmNWY0MzhhZTg5YTJmMjVhYzg4MmI1NTA3ZmVlMWIz
NC4uNTU1OTdmMzQ0YmY1MTM5YjlmNTY3M2MzMGY4OGM3MjgxNTdhZjk5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oCkBAIC0zMSwx
MCArMzEsNiBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFBsdWdpbkluZm9TdG9yZTsKQEAgLTUzLDcgKzQ5LDcgQEAgY2xhc3MgUGx1Z2luSW5mb1N0b3Jl
IHsKICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZvciBhIHBsdWctaW4gdGhhdCBjYW4gaGFuZGxl
IHRoZSBnaXZlbiBNSU1FIHR5cGUuCiAgICAgLy8gSWYgdGhlIE1JTUUgdHlwZSBpcyBudWxsLCB0
aGUgZmlsZSBleHRlbnNpb24gb2YgdGhlIGdpdmVuIHVybCB3aWxsIGJlIHVzZWQgdG8gaW5mZXIg
dGhlCiAgICAgLy8gcGx1Zy1pbiB0eXBlLiBJbiB0aGF0IGNhc2UsIG1pbWVUeXBlIHdpbGwgYmUg
ZmlsbGVkIGluIHdpdGggdGhlIHJpZ2h0IE1JTUUgdHlwZS4KLSAgICBQbHVnaW5Nb2R1bGVJbmZv
IGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29y
ZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzID0gV2ViQ29yZTo6UGx1Z2luRGF0YTo6
QWxsUGx1Z2lucyk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luKFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBl
cyA9IFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpOwogCiAgICAgLy8gUmV0dXJucyB0
aGUgaW5mbyBmb3IgdGhlIHBsdWctaW4gd2l0aCB0aGUgZ2l2ZW4gYnVuZGxlIGlkZW50aWZpZXIu
CiAgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luV2l0aEJ1bmRsZUlkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKTsKQEAgLTYzLDcgKzU5LDcgQEAgY2xhc3MgUGx1
Z2luSW5mb1N0b3JlIHsKIAogICAgIHN0YXRpYyBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGRlZmF1
bHRMb2FkUG9saWN5Rm9yUGx1Z2luKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKIAotICAgIGJv
b2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBwbHVnaW5VUkwsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgcGFnZVVSTCk7CisgICAgYm9vbCBpc1N1cHBvcnRlZFBsdWdpbihjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHBsdWdpblVSTCwgY29uc3QgU3RyaW5nJiBmcmFt
ZVVSTFN0cmluZywgY29uc3QgVVJMJiBwYWdlVVJMKTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luSWRl
bnRpZmllcnMoKTsKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBsdWdpbihTdHJpbmcmJiBtYXRjaGlu
Z0RvbWFpbiwgU3RyaW5nJiYgaWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmc+JiYgbWltZVR5cGVz
LCBIYXNoU2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7CiAgICAgdm9pZCBjbGVhclN1cHBvcnRlZFBs
dWdpbnMoKSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9IHN0ZDo6bnVsbG9wdDsgfQpAQCAtMTA0LDcg
KzEwMCw3IEBAIGNsYXNzIFBsdWdpbkluZm9TdG9yZSB7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5n
PiBtaW1lVHlwZXM7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBleHRlbnNpb25zOwogICAgIH07
Ci0gICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3VwcG9ydGVkUGx1Z2lu
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBwbHVnaW5VUkwp
OworICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0IFN1cHBvcnRlZFBsdWdp
biYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1Z2luVVJMKTsKIAogICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbj4+IG1fc3VwcG9ydGVkUGx1Z2lu
czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9Q
bHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggZDkwZjBhOWVhMDc0ZjZmNWY5MWJk
YmFhNjY3YmUwMjIyZTU4MjczOS4uZmFlY2YzMWRmNzk1ZDMxNjM4NjQ5ZDIyNDM4MDdjZjk3NWIy
YzU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1
Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMzQsMTIgKzM0LDEyIEBACiAjaW1w
b3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBUmVtb3RlTGF5
ZXJTZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPGNydF9leHRlcm5zLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHls
ZC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHNwYXdu
Lmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBAaW50ZXJmYWNlIFdLUGxhY2Vob2xk
ZXJNb2RhbFdpbmRvdyA6IE5TV2luZG93IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU2FmZUJyb3dzaW5nUmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZl
QnJvd3NpbmdSZXN1bHQuaAppbmRleCA3OTNiZjRiYTRhZjczZGEyMGJkOTU3YTRiZmMwMzEyNWRm
M2M3Nzc2Li4zNDIyMDQ3YWIyMDgwYjY5YmNiYjhkMzM4MzhhNzJkOGNhZTk5NmE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaApAQCAtMjUsOCArMjUs
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgU1NCU2VydmljZUxvb2t1cFJlc3VsdDsK
QEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFNhZmVCcm93c2lu
Z1Jlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNhZmVCcm93c2luZ1Jlc3VsdD4gewogcHVibGlj
OgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLSAgICBzdGF0aWMgUmVmPFNhZmVCcm93c2luZ1Jl
c3VsdD4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAq
cmVzdWx0KQorICAgIHN0YXRpYyBSZWY8U2FmZUJyb3dzaW5nUmVzdWx0PiBjcmVhdGUoVVJMJiYg
dXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTYWZlQnJvd3NpbmdSZXN1bHQoV1RGTW92ZSh1cmwpLCByZXN1bHQp
KTsKICAgICB9CiAjZW5kaWYKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3Vy
bDsgfQogICAgIGNvbnN0IFN0cmluZyYgcHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zp
ZGVyOyB9CiAgICAgYm9vbCBpc1BoaXNoaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BoaXNoaW5n
OyB9CiAgICAgYm9vbCBpc01hbHdhcmUoKSBjb25zdCB7IHJldHVybiBtX2lzTWFsd2FyZTsgfQpA
QCAtNTAsOSArNTAsOSBAQCBjbGFzcyBTYWZlQnJvd3NpbmdSZXN1bHQgOiBwdWJsaWMgUmVmQ291
bnRlZDxTYWZlQnJvd3NpbmdSZXN1bHQ+IHsKIAogcHJpdmF0ZToKICNpZiBIQVZFKFNBRkVfQlJP
V1NJTkcpCi0gICAgU2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNvcmU6OlVSTCYmLCBTU0JTZXJ2aWNl
TG9va3VwUmVzdWx0ICopOworICAgIFNhZmVCcm93c2luZ1Jlc3VsdChVUkwmJiwgU1NCU2Vydmlj
ZUxvb2t1cFJlc3VsdCAqKTsKICNlbmRpZgotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKKyAgICBV
UkwgbV91cmw7CiAgICAgU3RyaW5nIG1fcHJvdmlkZXI7CiAgICAgYm9vbCBtX2lzUGhpc2hpbmcg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc01hbHdhcmUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggOGJjNGE3NTNmYTc2
NzNkNDExYjliNGNmNWI1NDQyOTc5ZDY5MzIwNC4uMmVhNzlmODJkMTM5ZTFkYjVlMjcxODFlNDI1
YzllZWUxNTE4ZTIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVu
ZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0
aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
eXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCmluZGV4IDk0OWM4ZGY3MjFlZDllZDM1YTdkYTY4ZWM3
Y2Y5MTI3OWVmOTBhMzEuLjI2OWQwYzMyZmIzMjA4NGI1N2U3ZDE2YjBjY2YyNWNlZjc0ZjljMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAj
aWYgVVNFKFFVSUNLX0xPT0spCiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnRyb2xsZXI7CkBAIC01
MCw3ICs1MCw3IEBAIGNsYXNzIFN5c3RlbVByZXZpZXdDb250cm9sbGVyIHsKIAogICAgIHZvaWQg
c3RhcnQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwog
ICAgIHZvaWQgdXBkYXRlUHJvZ3Jlc3MoZmxvYXQpOwotICAgIHZvaWQgZmluaXNoKFdlYkNvcmU6
OlVSTCk7CisgICAgdm9pZCBmaW5pc2goVVJMKTsKICAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZv
aWQgZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggZTMzMTY3YTg5NTBj
MTY4ZjAxYzAzMmNlYjllNWY4Zjk4MWU1MTM4MC4uOWYyNDBkMzAyMWVkZjg2YzdjYWVkN2U4MTQ1
OTUxZGVkMzI2MGUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5LmgKQEAgLTcxLDEwICs3MSwxMCBAQCBjbGFzcyBXZWJDb29raWVNYW5hZ2Vy
UHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb29raWVN
YQogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQs
IFdhbGxUaW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICAg
ICB2b2lkIHNldENvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwg
RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgc2V0Q29v
a2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVu
Y3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgc2V0Q29va2ll
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBV
UkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lkIGdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQs
IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZ2V0Q29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9pZCAoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgdm9pZCBzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5
LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChIVFRQ
Q29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggMjk3YWE4YWYzMjU1YjBkYWY0YzQ3M2Fl
NzczZTcwZGFjNjliNDVjOC4uNDk3YjIzMTdiN2RjZjE2NmY3MWRjNDAwZTVmZjc4ZmQwZWExZGMz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtODAsMTQgKzgw
LDE0IEBAIGNsYXNzIFdlYkZyYW1lUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpGcmFtZT4gewogCiAgICAgRnJhbWVMb2FkU3RhdGUmIGZyYW1lTG9hZFN0
YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZTsgfQogCi0gICAgdm9pZCBsb2FkVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgbG9hZFVSTChjb25zdCBVUkwmKTsKICAgICB2
b2lkIHN0b3BMb2FkaW5nKCkgY29uc3Q7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7IH0KLSAgICBjb25zdCBXZWJD
b3JlOjpVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0
ZS5wcm92aXNpb25hbFVSTCgpOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lTG9hZFN0YXRlLnVybCgpOyB9CisgICAgY29uc3QgVVJMJiBwcm92aXNpb25hbFVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUucHJvdmlzaW9uYWxVUkwoKTsgfQog
Ci0gICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBj
b25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CisgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVS
TChjb25zdCBVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CiAKICAgICBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9NSU1FVHlwZTsgfQogICAgIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNQbHVnaW5E
b2N1bWVudDsgfQpAQCAtMTA4LDEzICsxMDgsMTMgQEAgY2xhc3MgV2ViRnJhbWVQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkZyYW1lPiB7CiAgICAgdm9p
ZCBnZXRNYWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0YShBUEk6OlVSTCosIEZ1
bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAotICAg
IHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV2Vi
Q29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwm
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChj
b25zdCBVUkwmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKICAgICB2b2lk
IGRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgV2ViQ2VydGlmaWNhdGVJ
bmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50KTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWQoKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkKCk7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOyAvLyBlZy4gYW5jaG9yIG5hdmlnYXRpb24s
IHNlc3Npb24gc3RhdGUgY2hhbmdlLgorICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bihjb25zdCBVUkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRlIGNo
YW5nZS4KICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGlj
aWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgVmVjdG9yPFJlZjxTYWZlQnJvd3Np
bmdSZXN1bHQ+PiYmKT4mJiwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDg0NDIwYTEzNTc0
OWM0OWYyM2Q4ZTJjNDkwYzhkZDk0NzZjZDMzN2YuLjU1NGU3NDQ4ZWM0YWNmODY5NzNkMjZiOWRh
MDBhZDFjNjNiY2Q5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuaApAQCAtNTAsMTAgKzUwLDYgQEAgT0JKQ19DTEFTUyBXS0luc3BlY3RvclZpZXdDb250
cm9sbGVyOwogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFt
ZVByb3h5OwpAQCAtMTUxLDcgKzE0Nyw3IEBAIGNsYXNzIFdlYkluc3BlY3RvclByb3h5CiAgICAg
c3RhdGljIFN0cmluZyBpbnNwZWN0b3JQYWdlVVJMKCk7CiAgICAgc3RhdGljIFN0cmluZyBpbnNw
ZWN0b3JUZXN0UGFnZVVSTCgpOwogICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yQmFzZVVSTCgp
OwotICAgIHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdEluc3BlY3RvclBhZ2UoY29uc3QgV2ViQ29y
ZTo6VVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShjb25z
dCBVUkwmKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtV2luZG93V2lkdGg7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1XaW5kb3dIZWlnaHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwCmluZGV4IDNhNTk0YmI3YjRhMjYwYjk0YjA4ZmZjYmVkYzJhZWNhY2U5NDFh
ZDcuLjAyODEyY2Y3ZmJlN2I0ZTU2ZjI3NTc5MmVmMjk0MGQ5ZWVmZDg2YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNp
bmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggNDIyZjI2YWVhMTg0OGE0MDlhODI4N2MzMjY1NjViM2YzZWQxMzdj
MC4uODg2YmMyYmQxMzNjNjM5YTBkMGNlNGE3ZGZlOGUzYzZiNDA2Nzc0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTMsMTMgKzE1MywxMyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGlj
YXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQ
YXJzZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0u
aD4KIApAQCAtMTA3MSw3ICsxMDcxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKIAogICAg
IGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAotICAg
IG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJh
c2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IGJsYW5rVVJMKCkuc3RyaW5nKCkpOworICAgIG1f
cGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJhc2VV
UkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSk7CiAKICAg
ICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKQEAgLTEw
OTIsNyArMTA5Miw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9h
ZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgcmV0dXJuIFdURk1v
dmUobmF2aWdhdGlvbik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRN
TChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5y
ZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgYm9vbCBmb3JTYWZlQnJvd3Npbmcp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNl
VVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIGJv
b2wgZm9yU2FmZUJyb3dzaW5nKQogewogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0
aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90
IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQg
YXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCkBAIC0x
MTQxLDcgKzExNDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQ
STo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogICAgICAgICByZWF0dGFj
aFRvV2ViUHJvY2VzcygpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0
ZS50cmFuc2FjdGlvbigpOwotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVz
dFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgbV9wYWdlTG9hZFN0
YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBXVEY6OmJsYW5rVVJMKCku
c3RyaW5nKCkpOwogCiAgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9h
ZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsKQEAgLTExNjAsNyArMTE2MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBT
dHJpbmcmIHVybCwgSW50UG9pCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChX
VEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghaXNWYWxpZCgpKQpAQCAtMzUwNiw3ICszNTA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKICAgICBtX25hdmlnYXRp
b25TdGF0ZS0+ZGlkRGVzdHJveU5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJiB1cmwsIFdlYkNvcmU6
OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCwgVVJMJiYgdW5yZWFjaGFibGVV
UkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9y
IHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC0zNjA0LDcgKzM2MDQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlEKQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENhbmNlbENsaWVudFJlZGlyZWN0
KCp0aGlzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJM
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIFdlYkNvcmU6OlVSTCYmIHVybCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBVUkwmJiB1cmwpCiB7CiAgICAgUGFnZUNsaWVudFByb3Rl
Y3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtMzg3NCw3ICszODc0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBX
ZWJDb3JlOjpVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI0MSw3
ICs0MjQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKICAgICB9KTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJDb3JlOjpVUkwmJiB1
cmwsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZp
Y2F0aW9ucykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24o
VVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiYm
IG5vdGlmaWNhdGlvbnMpCiB7CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZW50UnVsZUxp
c3ROb3RpZmljYXRpb24oKnRoaXMsIFdURk1vdmUodXJsKSwgV1RGTW92ZShpZGVudGlmaWVycyks
IFdURk1vdmUobm90aWZpY2F0aW9ucykpOwogfQpAQCAtNTk1Miw3ICs1OTUyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
IHJlYXNvbikKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAobV9wcm9jZXNzLT5pc1VuZGVy
TWVtb3J5UHJlc3N1cmUoKSkgewotICAgICAgICBTdHJpbmcgZG9tYWluID0gV2ViQ29yZTo6dG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihXZWJDb3JlOjpVUkwoeyB9LCBjdXJyZW50VVJMKCkp
Lmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIGRvbWFpbiA9IFdlYkNvcmU6OnRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oVVJMKHsgfSwgY3VycmVudFVSTCgpKS5ob3N0KCku
dG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aEVuaGFuY2VkUHJpdmFjeShXZWJDb3JlOjpEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OmRvbWFpbkNhdXNpbmdKZXRzYW1LZXkoKSwgZG9tYWluLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB9CkBAIC03MDMxLDcgKzcwMzEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBl
ZEtleSwgYm9vbCYgc3VjYwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBT
dHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0cmluZyYg
cmVzdWx0KQordm9pZCBXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5n
LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgUGFnZUNsaWVudFByb3Rl
Y3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNzY3Niw5ICs3Njc2LDkgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+
JiYgaGFuZGxlciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgYXV0byBjYW5vbmljYWxp
emVkU2NoZW1lID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUpOwor
ICAgIGF1dG8gY2Fub25pY2FsaXplZFNjaGVtZSA9IFdURjo6VVJMUGFyc2VyOjptYXliZUNhbm9u
aWNhbGl6ZVNjaGVtZShzY2hlbWUpOwogICAgIEFTU0VSVChjYW5vbmljYWxpemVkU2NoZW1lKTsK
LSAgICBBU1NFUlQoIVVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKGNhbm9uaWNhbGl6ZWRTY2hl
bWUudmFsdWUoKSkpOworICAgIEFTU0VSVCghV1RGOjpVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVt
ZShjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKIAogICAgIGF1dG8gc2NoZW1lUmVzdWx0
ID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lLmFkZChjYW5vbmljYWxpemVkU2NoZW1lLnZh
bHVlKCksIGhhbmRsZXIuZ2V0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoc2NoZW1lUmVzdWx0LCBz
Y2hlbWVSZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGU2NmM1NGE4YTMyNTgzYmJmNzhiMGI3M2Y3YWQ5YTNjZWNjYzY1NTguLmVlZGE3
MTViNzAxYzE4YWE1ZjMyMzVhY2NmODdiZjc4ZTNjOTFiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04Myw3ICs4Myw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2luZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KICNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC05
NSw2ICs5NCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDY0LDcgKzQ2NCw3IEBAIGNsYXNzIFdlYlBhZ2VQ
cm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAg
ICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3Jl
OjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1l
cywgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gbG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHJl
c291cmNlRGlyZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAg
ICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwotICAg
IHZvaWQgbG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRy
LCBib29sIGZvclNhZmVCcm93c2luZyA9IGZhbHNlKTsKKyAgICB2b2lkIGxvYWRBbHRlcm5hdGVI
VE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhID0gbnVsbHB0ciwgYm9vbCBmb3JTYWZlQnJvd3NpbmcgPSBmYWxzZSk7CiAgICAg
dm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
ID0gbnVsbHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGlj
ayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2Vi
Q29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogCkBAIC0xMDY0LDggKzEwNjQsOCBAQCBjbGFz
cyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpQYWdlPgogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3Ry
aW5nJiByZXN1bHQpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBX
ZWJDb3JlOjpVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJik7Ci0gICAgdm9pZCBzYXZl
UERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFdl
YkNvcmU6OlVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsK
KyAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2Vz
dGVkRmlsZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJ
OjpEYXRhJik7CisgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5n
JiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNhdmVQREZUb1Rl
bXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25SYXcoY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywg
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBk
ZlVVSUQpOwogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRp
dmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25z
dCBTdHJpbmcmIHBkZlVVSUQpOwpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgY2xhc3MgV2ViUGFnZVBy
b3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAg
ICB2b2lkIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBib29sJiBzdWNj
ZWVkZWQsIFZlY3Rvcjx1aW50OF90PiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmlu
ZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7
CisgICAgdm9pZCBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5
U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiwgU3Ry
aW5nJiByZXN1bHQpOwogCiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCwg
V2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMsIFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CiAKQEAgLTEzNDYsNyArMTM0Niw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBn
ZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
ICNlbmRpZgogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVS
TCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vz
cyk+JiYpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JVUkws
IGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKIAog
ICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgcHJlZmVyZW5jZXNTdG9yZSgpIGNvbnN0OwogCkBAIC0x
NDExLDE3ICsxNDExLDE3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBkaWRDcmVhdGVTdWJmcmFt
ZSh1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBm
cmFtZUlELCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYpOwogCi0gICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6OlVSTCYmIHVucmVhY2hhYmxl
VVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBV
UkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSk7CiAg
ICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQp
OwotICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmKTsKKyAgICB2b2lkIGRp
ZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBV
c2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBm
cmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29u
c3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5z
ZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsK
LSAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlLCBXZWJDb3JlOjpVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBVUkwmJiwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZU1haW5Eb2N1bWVudCh1aW50NjRf
dCBmcmFtZUlEKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE0NDgsMTEgKzE0
NDgsMTEgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6
Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNl
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBj
YW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGJlZ2lu
U2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5Jik7CisgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYs
IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCiAgICAgdm9pZCB3aWxsU3VibWl0Rm9y
bSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICAgICAgCi0gICAgdm9pZCBjb250ZW50UnVs
ZUxpc3ROb3RpZmljYXRpb24oV2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRp
ZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7CisgICAgdm9pZCBjb250ZW50
UnVsZUxpc3ROb3RpZmljYXRpb24oVVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMs
IFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7CiAKICAgICAvLyBIaXN0b3J5IGNsaWVu
dAogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdh
dGlvbkRhdGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwpAQCAtMTQ3Myw4ICsxNDczLDggQEAg
Y2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6UGFnZT4KICAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50
MzJfdCBvcGFxdWVQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2lu
c1BhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcGFnZVVSTFN0cmluZyk7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6
VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVk
UmVwbHkmJik7Ci0gICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJM
JiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVs
YXllZFJlcGx5JiYpOworICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7CisgICAg
dm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOwogI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xiYXJzQXJlVmlzaWJsZShib29sIHRvb2xi
YXJzQXJlVmlzaWJsZSk7CiAgICAgdm9pZCBnZXRUb29sYmFyc0FyZVZpc2libGUoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHkmJik7CkBA
IC0xNjg3LDcgKzE2ODcsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQgc2V0UGx1Z2luQ29tcGxl
eFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVy
LCB1aW50NjRfdCBjb21wbGV4VGV4dElucHV0U3RhdGUpOwogI2VuZGlmCiAKLSAgICBib29sIG1h
eWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgYm9vbCBtYXliZUluaXRpYWxpemVTYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYp
OwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIHZvaWQgdG9nZ2xl
U21hcnRJbnNlcnREZWxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlZmJiNGIxZjg3YzQ3OGZiMDM4MzI2Yjk5NDAyN2Yy
MmE3ODBkNWE0Li5jMGQ3ZDgyMTI1NGMzZTdiYTlmYjAzZDllN2Y1YThmMWQ2ZjRlYWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0zNCw4ICszNCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgVW5hdmFpbGFi
bGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29u
LCBTdHJpbmcgbWltZVR5cGUsIFN0cmluZyBwbHVnaW5VUkxTdHJpbmcsIFN0cmluZyBwbHVnaW5z
cGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcgcGFn
ZVVSTFN0cmluZykKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBF
TkFCTEUoV0VCR0wpCi0gICAgV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMIHVybCkgLT4g
KHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKLSAgICBSZXNvbHZlV2ViR0xQb2xpY3lGb3JV
UkwoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKKyAg
ICBXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVs
YXllZAorICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3Qg
bG9hZFBvbGljeSkgRGVsYXllZAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICBEaWRDaGFu
Z2VWaWV3cG9ydFByb3BlcnRpZXMoc3RydWN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBh
dHRyaWJ1dGVzKQogICAgIERpZFJlY2VpdmVFdmVudCh1aW50MzJfdCB0eXBlLCBib29sIGhhbmRs
ZWQpCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
IERpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6R2xvYmFs
V2luZG93SWRlbnRpZmllciB3aW5kb3dJZGVudGlmaWVyKQogCiAgICAgIyBGcmFtZSBsb2FkIG1l
c3NhZ2VzCi0gICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVS
TCB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgVVJMIHVybCwgVVJMIHVucmVhY2hhYmxlVVJMLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAg
V2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyB1cmwsIGRvdWJsZSBkZWxheSkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwp
CisgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwpCiAgICAgRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcg
cHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRl
SW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29u
dGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGYWlsTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKQEAgLTE0NSw3ICsxNDUs
NyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogICAgIERpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCB1aW50MzJfdCB0eXBlLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQorICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5cGUsIFVSTCB1cmwsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ2hhbmdlTWFpbkRvY3VtZW50KHVpbnQ2
NF90IGZyYW1lSUQpOwogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCkKIApAQCAtNDI3LDcgKzQyNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50
U2VhcmNoPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUp
IC0+IChWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiByZXN1bHQpCiAKLSAgICBTYXZlUERG
VG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBXZWJDb3Jl
OjpVUkwgb3JpZ2luYXRpbmdVUkwsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFNhdmVQ
REZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUsIFVSTCBv
cmlnaW5hdGluZ1VSTCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBTYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxp
Y2F0aW9uKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3Ry
aW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIHBkZlVVSUQpCkBAIC00ODcsNyAr
NDg3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIERpZFJlc2lnbklucHV0
RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogCi0gICAgQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYkNvcmU6OlVSTCB1cmwsIFZl
Y3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiBub3RpZmljYXRpb25zKQor
ICAgIENvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihVUkwgdXJsLCBWZWN0b3I8U3RyaW5nPiBp
ZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9ucykKIAogI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCiAgICAgQWRkUGxheWJh
Y2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0X3QgY29udGV4dElkKQpAQCAtNTQ2LDYgKzU0Niw2
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RvcERpc3BsYXlMaW5rKHVuc2ln
bmVkIG9ic2VydmVySUQpCiAjZW5kaWYKIAotICAgIFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFsbGVuZ2VTdHJpbmcsIFdl
YkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQorICAgIFNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFsbGVuZ2VT
dHJpbmcsIFVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggODE3NWEzYzY4NWY3NDI3ZjE1NDE0OTVh
ZjIxNTA5YWM5OGMxZjE3ZS4uMGEwMmUzYmQ3MTg4ZGRlMDA1NzAyNjZkMDhiMjFiNWQzNzg3Nzkz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtODYs
NyArODYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25J
RC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CkBAIC05NCw2ICs5Myw3IEBACiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1
ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCmluZGV4IDE0NDQyOGI2ZjA5ZGM5YjVlZjcxNzU1N2Y2NDQ0Y2FlZGU1NGEw
YzEuLmIxZTRjNWQxY2M0OTIxMDEyMTYzNWU4N2FiYjc5NjdkMzQxZDVmMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNz
IFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6UHJvY2Vzc1BvCiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3Jr
ZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVB
c0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBw
cmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBwcmVjb25u
ZWN0VG9TZXJ2ZXIoY29uc3QgVVJMJik7CiAKICAgICBWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVk
TGlua1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdldCgpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDllODQ0Y2RiNWU2
ZjI5YmQ4YTRkMzE1Y2VmZmRiNmRjYzE4MTE5MzIuLmFkMjczYTIyODhlZTM4OWI2NmY0ODU4ZDJl
NDYxYTUxOWVkOTEzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGlj
TG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2goKQog
I2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAgICAgaWYgKHBhZ2VzLnNpemUoKSA9PSAx
KSB7CiAgICAgICAgIGF1dG8mIHBhZ2UgPSAqcGFnZXNbMF07Ci0gICAgICAgIFN0cmluZyBkb21h
aW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdlYkNvcmU6OlVSTCh7IH0sIHBhZ2Uu
Y3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIFN0cmluZyBkb21haW4g
PSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFVSTCh7IH0sIHBhZ2UuY3VycmVudFVSTCgp
KS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHBhZ2UubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5KFdl
YkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6ZG9tYWluQ2F1c2luZ0NyYXNoS2V5KCksIGRv
bWFpbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBlMGE2N2NiNzg5ZGZmNmQyMGFhNWI5NWRh
NjAxZmMzZjlmYzJlOGM2Li4xMjZhZDI2YjY2MDljMjIyNmRlYzk4NmI1NTJkNTI3ZGFlNDIwODZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNTcsNyAr
NTcsNiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogc3RydWN0IFBsdWdpbkluZm87CiBz
dHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQpAQCAtMTQ2LDEwICsxNDUsMTAgQEAgY2xhc3Mg
V2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9u
c2l2ZW5lc3NUaW1lcjo6Q2wKIAogICAgIHZvaWQgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVh
ZFNhbmRib3hFeHRlbnNpb24oKSB7IG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4
dGVuc2lvbiA9IHRydWU7IH0KICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29u
c3QgU3RyaW5nJik7Ci0gICAgYm9vbCBoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgaGFzQXNzdW1lZFJlYWRBY2Nlc3NUb1VSTChj
b25zdCBVUkwmKSBjb25zdDsKIAogICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9j
ZXNzKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9j
ZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21X
ZWJQcm9jZXNzKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgZnVsbEtleWJvYXJkQWNj
ZXNzRW5hYmxlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAzMTc4MzZiNDJmZjY3NGU1
N2I0Y2JlYWVlODcxZGYxMzQ3ZWU3NWY0Li5mOGQ5Mjg0NWE2M2ZhMmIzOWIxN2IxZWJlODliMTcx
NWZhN2JhNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZShib29sIHZhbAogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRS
ZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c3VibWl0VGVsZW1ldHJ5KCkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5
JiBmcmFtZSwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZy
YW1lUHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDZjNDEwZmE0YTk1
YTNjMDA4ZDU3YjIzZjZjODMxZDllY2QwNDA3ZDAuLjU4MWEyYWU5MThiZTc0OWY2YTNhMzRjMDYy
OGE1MDQ1NGE0N2JiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw3ICs0MSw2IEBAIGNsYXNz
IFdvcmtRdWV1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwotY2xhc3MgVVJMOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiB9CiAKQEAgLTg0
LDI4ICs4MywyOCBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUmVzbwogCiAgICAgdm9pZCBhcHBsaWNh
dGlvbldpbGxUZXJtaW5hdGUoKTsKIAotICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0
IFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpOwot
ICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25z
dCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgV2ViQ29yZTo6
VVJMJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNl
dFByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGxvZ0Zy
YW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiwgY29uc3QgVVJMJiBwYWdlVVJMLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKTsK
KyAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFj
dGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2
b2lkIHNldExhc3RTZWVuKGNvbnN0IFVSTCYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291
cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBk
dW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKTsKLSAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBpc1ZlcnlQ
cmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihj
b25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZy
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0
ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YkZyYW1lLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
LSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhjb25zdCBXZWJDb3JlOjpVUkwm
IGhvc3RSZWRpcmVjdGVkRnJvbSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0UmVkaXJlY3RlZFRv
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNsZWFyUHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9v
bCk7Ci0gICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJmcmFtZSwgY29uc3QgV2ViQ29yZTo6
VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0
b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3Qg
V2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJl
ZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShj
b25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3RO
YW1lUmVkaXJlY3RlZEZyb20pOwotICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRv
KGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29uc3QgV2ViQ29yZTo6VVJM
JiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBpc1ByZXZhbGVudFJl
c291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXIoY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiB0b3BGcmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1l
VW5kZXIoY29uc3QgVVJMJiBzdWJGcmFtZSwgY29uc3QgVVJMJiB0b3BGcmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0
aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0IFVSTCYgaG9zdFJlZGly
ZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjbGVh
clByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIGJvb2wpOworICAgIHZv
aWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVS
TCYgc3ViZnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYg
dG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0
IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAg
IHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiBzdWJyZXNv
dXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKKyAgICB2b2lkIHNldFRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0
IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdEZyb20oY29uc3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBVUkwmIGhvc3RO
YW1lUmVkaXJlY3RlZEZyb20pOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVC
bG9ja2luZ1VwZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Js
b2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgc2NoZWR1bGVDbGVhckJsb2NraW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTMyLDcg
KzEzMSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJSZXNvCiAgICAgdm9pZCByZXNldFBhcmFtZXRl
cnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZv
aWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGVz
dGluZ0NhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFj
aykgeyBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQog
ICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCmluZGV4
IDc5OTI2M2VhYzRhMmMyODgyNDY0ZDllZmFlYTQ2YTg0MzE0OWRhNWYuLjVmNGEzYTVkMTg0M2Vi
YTJiMTQwMjY3MjEwYTQwNDg5ZTdjOTk3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKQEAgLTMyLDEwICszMiwx
MCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRo
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaD4KICNp
bXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBEcmFnU291cmNlU3RhdGUgewogICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGE7CiAgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXRoPiB2aXNpYmxlUGF0aDsKICAgICBTdHJpbmcgbGlu
a1RpdGxlOwotICAgIFdlYkNvcmU6OlVSTCBsaW5rVVJMOworICAgIFVSTCBsaW5rVVJMOwogICAg
IGJvb2wgcG9zc2libHlOZWVkc0RyYWdQcmV2aWV3VXBkYXRlIHsgdHJ1ZSB9OwogCiAgICAgTlNJ
bnRlZ2VyIGl0ZW1JZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQppbmRleCBiYjY2MzQ3NTI1ZjE4
ODcxMDA3Y2U1MDRiZWI5MjI0NTljOTBlMWNhLi5lMzQ2MGY0MTVkMGI4NjhiZGYzYzI5MjVmYzQz
OGI1N2U3ZmY5MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tB
Y3Rpb25TaGVldEFzc2lzdGFudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpAQCAtNDEsMTAgKzQxLDEwIEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5n
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1w
b3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMu
aD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIApA
QCAtMzA0LDcgKzMwNCw3IEBAIC0gKHZvaWQpX2NyZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25z
OihOU0FycmF5ICopYWN0aW9ucyBzaG93TGlua1RpdGxlOihCT09MKXNoCiAgICAgICAgIGlmIChp
c0phdmFTY3JpcHRVUkwpCiAgICAgICAgICAgICB0aXRsZVN0cmluZyA9IFdFQl9VSV9TVFJJTkdf
S0VZKCJKYXZhU2NyaXB0IiwgIkphdmFTY3JpcHQgQWN0aW9uIFNoZWV0IFRpdGxlIiwgIlRpdGxl
IGZvciBhY3Rpb24gc2hlZXQgZm9yIEphdmFTY3JpcHQgbGluayIpOwogICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV2ViQ29yZTo6dXNlclZpc2libGVTdHJpbmcodGFy
Z2V0VVJMKTsKKyAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0cmlu
Zyh0YXJnZXRVUkwpOwogICAgICAgICAgICAgdGl0bGVJc1VSTCA9IFlFUzsKICAgICAgICAgfQog
ICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjAxYzRmNmEzYzU0ZTk5YzcxNjU1NzhiYWU3
MjJmMzhlY2I4ZTU4Yy4uNTMxNmJjM2QwNmM5MmE2ZTcyNzRkYjgxMmM0YjljZjIxMTk1MTdhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCkBAIC04Nyw3ICs4Nyw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJl
RGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0
cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
U2VsZWN0aW9uUmVjdC5oPiAvLyBGSVhNRTogV0syIHNob3VsZCBub3QgaW5jbHVkZSBXZWJLaXQg
aGVhZGVycyEKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC05OCw2
ICs5Nyw3IEBACiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvY29j
b2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC00ODk1LDkgKzQ4OTUsOSBAQCAtICh2b2lkKWFjdGlv
blNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5F
bGVtZW50QXRMbwogLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFz
c2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0
OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAgaWYgKF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50
KQotICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6dXNl
clZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOworICAgICAgICBbX3Rl
eHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6V1RGOjp1c2VyVmlzaWJsZVN0
cmluZyh1cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CiAgICAgZWxzZSBpZiAoX3dlYlNlbGVj
dGlvbkFzc2lzdGFudCkKLSAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJl
U2hlZXRGb3I6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOwor
ICAgICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpXVEY6OnVz
ZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKIH0KIAogI2lmIEhB
VkUoQVBQX0xJTktTKQpAQCAtNjE4Nyw3ICs2MTg3LDcgQEAgLSAoVUlWaWV3Q29udHJvbGxlciAq
KV9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2
aWUKIAogICAgIE5TVVJMICp0YXJnZXRVUkwgPSBjb250cm9sbGVyLnByZXZpZXdEYXRhW1VJUHJl
dmlld0RhdGFMaW5rXTsKICAgICBVUkwgY29yZVRhcmdldFVSTCA9IHRhcmdldFVSTDsKLSAgICBi
b29sIGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0VtcHR5KCkg
JiYgKFdlYkNvcmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29yZVRhcmdldFVSTCkgfHwgV2Vi
Q29yZTo6cHJvdG9jb2xJcyhjb3JlVGFyZ2V0VVJMLCAiZGF0YSIpKTsKKyAgICBib29sIGlzVmFs
aWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0VtcHR5KCkgJiYgKFdURjo6
cHJvdG9jb2xJc0luSFRUUEZhbWlseShjb3JlVGFyZ2V0VVJMKSB8fCBXVEY6OnByb3RvY29sSXMo
Y29yZVRhcmdldFVSTCwgImRhdGEiKSk7CiAKICAgICBpZiAoW19wcmV2aWV3SXRlbUNvbnRyb2xs
ZXIgdHlwZV0gPT0gVUlQcmV2aWV3SXRlbVR5cGVMaW5rKSB7CiAgICAgICAgIF9oaWdobGlnaHRM
b25nUHJlc3NDYW5DbGljayA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggYmRjYzU3MTBmYzdmNDk2
NWYzYzk4ZGUxNzE2MTM1OWZhNzM1NzU4Mi4uNWFhY2M1ZWU5MDQ1YWFmZGMxNmEzNjM1YTFlYmY0
MWE5MjRhNDQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC00MSwxMyArNDEsMTMgQEAKICNpbXBvcnQg
Il9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIl9XS0dlb2xv
Y2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvblBv
c2l0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogLy8g
RklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIKICNpbXBvcnQgPFdlYktp
dC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CkBAIC0xODQsNyArMTg0LDcg
QEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAKICAgICAgICAgaWQ8
V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPj4oW3JlcXVlc3QudmlldyBVSURlbGVnYXRlXSk7CiAgICAgICAgIGlmIChb
dWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RH
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOildKSB7
Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgp
LCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CisgICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJM
KFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tG
cmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqcmVx
dWVzdC5mcmFtZS5nZXQoKSwgKnJlcXVlc3Qub3JpZ2luLmdldCgpKSk7CiAgICAgICAgICAgICBS
ZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2Vi
S2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNl
bGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJh
bWU6ZGVjaXNpb25IYW5kbGVyOikpOwogICAgICAgICAgICAgV0tXZWJWaWV3ICp2aWV3RnJvbVJl
cXVlc3QgPSByZXF1ZXN0LnZpZXcuZ2V0KCk7CkBAIC0yMDAsOCArMjAwLDggQEAgLSAodm9pZCln
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZFJlcXVlc3RHZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6aXNNYWluRnJhbWU6bWFpbkZyYW1lVVJMOildKSB7CiAg
ICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9IHJlcXVl
c3QuZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgICAgICAgICBib29sIGlzTWFpbkZy
YW1lID0gcmVxdWVzdC5mcmFtZSA9PSBtYWluRnJhbWU7Ci0gICAgICAgICAgICBXZWJDb3JlOjpV
UkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7
Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBt
YWluRnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCks
IHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCBtYWluRnJhbWVVUkwoVVJM
KCksIG1haW5GcmFtZS0+dXJsKCkpOwogICAgICAgICAgICAgcmVxdWlyZXNVc2VyQXV0aG9yaXph
dGlvbiA9IFt1aURlbGVnYXRlIF93ZWJWaWV3OnJlcXVlc3Qudmlldy5nZXQoKQogICAgICAgICAg
ICAgICAgICBzaG91bGRSZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOnJlcXVl
c3RGcmFtZVVSTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlzTWFpbkZyYW1lOmlzTWFpbkZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLTGVnYWN5UERGVmlldy5tbQppbmRleCBkMzhmMzFjODE1ZjNjOWYzZTk4ZGE1MmU1NGZi
ODg4ODRlZDBhNDMwLi5hZWEwZDZkMzlmNjJkNzFkOTY3NDQ2ZTY4MjI3ZWJkN2YyODNhZDE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW0KQEAg
LTQzLDExICs0MywxMSBAQAogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2Nh
bGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0
ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIC8vIEFsbCBvZiBVSVBE
RlBhZ2UqIGFyZSBkZXByZWNhdGVkLCBzbyBqdXN0IGlnbm9yZSBkZXByZWNhdGVkIGRlY2xhcmF0
aW9ucwogLy8gaW4gdGhpcyBmaWxlIHVudGlsIHdlIHN3aXRjaCBvZmYgdGhlbS4KQEAgLTc3OSw3
ICs3NzksNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNz
aXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50QXRMbwogLSAodm9pZClhY3Rpb25TaGVldEFz
c2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRX
aXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAgX3dl
YlNlbGVjdGlvbkFzc2lzdGFudCA9IGFkb3B0TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFs
bG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwotICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IHNo
b3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6
Ym91bmRpbmdSZWN0XTsKKyAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVl
dEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsK
ICAgICBfd2ViU2VsZWN0aW9uQXNzaXN0YW50ID0gbmlsOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBkZmY0YzZjYmYwMDMyZTE1NWNiY2I5MWYxM2Fi
ZmIzZGMyMzQwMWVhLi5jZjRlOGE3MzMzNGZmNTdjMjZkY2YxNTJkMjM3NGNhZThkYmNjZjY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KQEAgLTM4LDExICszOCwx
MSBAQAogI2ltcG9ydCAiX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCIKICNpbXBv
cnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRGF0YURldGVjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRy
YXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5o
PgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIEBpbnRlcmZhY2UgV0tQREZW
aWV3ICgpIDxQREZIb3N0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSwgV0tBY3Rpb25TaGVldEFzc2lz
dGFudERlbGVnYXRlPgogQGVuZApAQCAtNDk3LDcgKzQ5Nyw3IEBAIC0gKHZvaWQpYWN0aW9uU2hl
ZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgb3BlbkVsZW1l
bnRBdExvCiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0
YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdGhVUkw6KE5TVVJMICopdXJsIHJlY3Q6KENH
UmVjdClib3VuZGluZ1JlY3QKIHsKICAgICBhdXRvIHNlbGVjdGlvbkFzc2lzdGFudCA9IGFkb3B0
TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6W19ob3N0Vmll
d0NvbnRyb2xsZXIgdmlld11dKTsKLSAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNo
ZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdS
ZWN0XTsKKyAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOldURjo6dXNl
clZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOwogfQogCiAjaWYgSEFW
RShBUFBfTElOS1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVs
bHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklP
Uy5tbQppbmRleCA0ZWRkOTRiZWJjZGRiNTA0MGIwMDk0ZmM0ODdhNTUyNmU2OTI1MGZlLi4yNjU4
YjM2M2I0MTFhM2JiZmI2ZDRkZDZkM2VkYTRkMWFhYjIxY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KQEAgLTQ1LDEyICs0NSwxMiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmlu
Z3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1N0cmluZ1NQSS5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1VS
TEZvcm1hdHRpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5
U1BJLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC05NDEsNyArOTQxLDcgQEAgLSAo
dm9pZClfdXBkYXRlTG9jYXRpb25JbmZvCiAgICAgaWYgKExpbmtQcmVzZW50YXRpb25MaWJyYXJ5
KCkpCiAgICAgICAgIGRvbWFpbiA9IFt1cmwgX2xwX3NpbXBsaWZpZWREaXNwbGF5U3RyaW5nXTsK
ICAgICBlbHNlCi0gICAgICAgIGRvbWFpbiA9IHVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CisgICAg
ICAgIGRvbWFpbiA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKICNlbmRpZgogCiAgICAg
TlNTdHJpbmcgKnRleHQgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IDE3ZjY2YjcxNzc5YzA1
NDljZjY4YWUyODE2NTgxOGE3MjlkNjYzZmUuLjlmNjc4NTg3NmU2OWM3YjY0ZGQyMTAyODUwZTBm
NTYwNGQ4ZTRiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdh
Y3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0xMTMzLDcgKzExMzMsNyBAQCBib29s
IGRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IHNp
emUsIFNlc3Npb25TdGF0ZSYgcwogICAgIH0KIAogICAgIGlmIChhdXRvIHByb3Zpc2lvbmFsVVJM
U3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1
ZShzZXNzaW9uU3RhdGVEaWN0aW9uYXJ5LCBwcm92aXNpb25hbFVSTEtleSkpKSB7Ci0gICAgICAg
IHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgcHJvdmlzaW9uYWxVUkxTdHJpbmcpOworICAgICAgICBzZXNzaW9uU3RhdGUucHJvdmlzaW9u
YWxVUkwgPSBVUkwoVVJMKCksIHByb3Zpc2lvbmFsVVJMU3RyaW5nKTsKICAgICAgICAgaWYgKCFz
ZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
S0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGY4NzIwNzA2NGM3YmU1MWVh
ZWJiMjdhMDMxZDQ5MDUxMTJiMzg4ZjQuLjRhYWZkZmYzZGVhOGNmOTQyZDAwYTQwYzdiNzRhN2Yx
M2M2YzZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzgsMTMgKzM4LDEzIEBACiAjaW1w
b3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvR2VvbWV0
cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0RhdGFEZXRlY3Rv
cnNTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0xvb2t1cFNQSS5oPgogI2ltcG9ydCA8cGFs
L3NwaS9tYWMvTlNNZW51U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1BvcG92ZXJTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL1F1aWNrTG9va01hY1NQSS5oPgogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIFNPRlRfTElOS19GUkFNRVdP
UktfSU5fVU1CUkVMTEEoUXVhcnR6LCBRdWlja0xvb2tVSSkKIFNPRlRfTElOS19DTEFTUyhRdWlj
a0xvb2tVSSwgUUxQcmV2aWV3TWVudUl0ZW0pCkBAIC0yNzYsMTcgKzI3NiwxNyBAQCAtIChpZCA8
TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilfZGVmYXVsdEFuaW1hdGlvbkNv
bnRyb2xsZXIKIAogICAgIFN0cmluZyBhYnNvbHV0ZUxpbmtVUkwgPSBoaXRUZXN0UmVzdWx0LT5h
YnNvbHV0ZUxpbmtVUkwoKTsKICAgICBpZiAoIWFic29sdXRlTGlua1VSTC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMoYWJzb2x1dGVMaW5rVVJMLCAibWFpbHRv
IikpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJtYWls
dG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5r
OwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURl
dGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJ
cyhhYnNvbHV0ZUxpbmtVUkwsICJ0ZWwiKSkgeworICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElz
KGFic29sdXRlTGlua1VSTCwgInRlbCIpKSB7CiAgICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVk
aWF0ZUFjdGlvblRlbExpbms7CiAgICAgICAgICAgICByZXR1cm4gW3NlbGYgX2FuaW1hdGlvbkNv
bnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rXTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChX
ZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGFic29sdXRlTGlua1VSTCkpIHsKKyAgICAg
ICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0ZUxpbmtVUkwpKSB7CiAg
ICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvbkxpbmtQcmV2aWV3OwogCiAgICAg
ICAgICAgICBRTFByZXZpZXdNZW51SXRlbSAqaXRlbSA9IFtOU01lbnVJdGVtIHN0YW5kYXJkUXVp
Y2tMb29rTWVudUl0ZW1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCAyMDlhODVkZWEzYjYz
MGQyN2MxYzIxMjUxNTU2ZGNjMGM1YTgyYjk3Li41NTY5ZGYyZWE4NTVkMTVjNWFlNDcxNDlhNTFh
YjRjMmI0NjM3YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtMzYsNyArMzYsNyBAQAog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYXltZW50Q29vcmRpbmF0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEz
MSw3ICsxMzEsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1
cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgYwogICAgIG1fd2ViUGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6T3BlblBheW1lbnRTZXR1cCht
ZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIHJlcGx5SUQpKTsKIH0KIAotYm9vbCBXZWJQ
YXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmln
aW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0
KQorYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkoY29uc3QgVVJMJiBv
cmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2Vi
Q29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQogewog
ICAgIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5nczsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGxpbmtJY29uVVJMIDogbGlua0ljb25VUkxzKQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yOjpwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQoKQogCiB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBTdHJpbmcm
IHZhbGlkYXRpb25VUkxTdHJpbmcpCiB7Ci0gICAgcGF5bWVudENvb3JkaW5hdG9yKCkudmFsaWRh
dGVNZXJjaGFudChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHZhbGlkYXRpb25VUkxTdHJp
bmcpKTsKKyAgICBwYXltZW50Q29vcmRpbmF0b3IoKS52YWxpZGF0ZU1lcmNoYW50KFVSTChVUkwo
KSwgdmFsaWRhdGlvblVSTFN0cmluZykpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
cjo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5oCmluZGV4IGU0ODg3Y2M4OGFiMWYxOWZiZGE5OWYzYzBiMmM4YWVkMWRi
M2EwNDQuLjAyMTJkNmFkYmJiOTA1MWZiMWJiNDY5NmQ1ZDlhODI5NTFhZjI0YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9y
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvckNsaWVudCwgcHIKICAg
ICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuTWFrZVBheW1l
bnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6
RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAg
IGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvd1Bh
eW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlu
a0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYp
IG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2Vi
Q29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxl
dGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5n
TWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250
YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRl
PiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNo
ZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCAzZjI3MTIzMmQ2M2U0
YTRmNzc0NWVmMjhjNjRlYWU1NTM4YzRiN2I5Li43ZmU5MzM0YmE0ZjM1OWM3MmIwZDkxZDU1NDJh
NzE2NDQ2MmU2ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUv
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC03MSw3ICs3MSw3IEBA
IHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgY29uCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OkNhY2hlcyhtX3Nlc3Npb25JRCwgcmVxdWVz
dElkZW50aWZpZXIsIG9yaWdpbiwgdXBkYXRlQ291bnRlciksIDApOwogfQogCi12b2lkIFdlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
dXJsKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6UmV0cmlldmVSZWNvcmRzKG1fc2Vzc2lvbklELCByZXF1ZXN0
SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1cmwpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5oCmluZGV4IDQ4MGVkZGQ5YjRlNTE1YzRiNGFhZTZkNGM2ZDk0MjU4ZmNiZTI1MmIuLmQyZTBk
ZjJkODYwOTIyYTNiMWUzNTZiZTkyMWU3ODAxOTg2ZGM3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
aApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24gewogICAgIHZvaWQgZG9S
ZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
cikgZmluYWw7CiAgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3Vu
dGVyKSBmaW5hbDsKIAotICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJM
JikgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBVUkwmKSBmaW5hbDsKICAg
ICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNo
UHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKSBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuY3BwCmluZGV4IDUwNzEzMTNlYzYyNTMwN2M0MGI1YjQwMTBmNzBjNjFjNzUw
NDE1ZDcuLjlkNjFlOTFjZWFmYzAwNjE0OWU3MDMyYjg5ZWZmZmJmNWRhMWM1ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYg
ZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6
OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAppbmRleCBiMDU0ODli
OGEyM2JjNzkwYjk1ZTZlYzlmMGQ1YzgyZWQwOWY4NzNjLi5hNGM1ZjY4NGFkNWYxNjM0N2IwNzA3
OTE4NWY3N2E5YWI3YjAwYTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTMxLDEzICszMSwxMyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJveHkgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0
PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VS
TCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgUmVmUHRy
PFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3Rh
cnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9i
U2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyRmls
ZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VS
TCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQp
IG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKSBv
dmVycmlkZTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5k
ZXggMDhkZGJiZWE3MmJkZTdhNjg2Y2U3NWM0ZjRmYzk4NjhjNmFmYjQ4OS4uODAxMmE4NGY0Yzgz
ODg4MDI2MzY3MTkwNjBkNDg1NGE2NGYwNDBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNyw3ICszNyw2IEBAIGNs
YXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTYsNyArNTUsNyBAQCBjbGFzcyBQYWdlTG9hZGVyQ2xpZW50IHsKICAg
ICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxs
TG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQ
STo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0oV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2Vi
UGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CkBAIC05
Niw3ICs5NSw3IEBAIGNsYXNzIFBhZ2VMb2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBm
ZWF0dXJlc1VzZWRJblBhZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJhbWUoV2ViS2l0OjpX
ZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYpIHsgfQotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
dXNlckFnZW50Rm9yVVJMKFdlYktpdDo6V2ViRnJhbWUmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBj
b25zdCB7IHJldHVybiBXVEY6OlN0cmluZygpOyB9CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1
c2VyQWdlbnRGb3JVUkwoV2ViS2l0OjpXZWJGcmFtZSYsIGNvbnN0IFdURjo6VVJMJikgY29uc3Qg
eyByZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpMYXlvdXRN
aWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7IHJldHVybiAwOyB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4IDRjMGM2YWVkMzg5OWQ4YjI4N2NjMTEwZWIw
Nzk3NmZmMTRjNzFhZTMuLjA0NjBlYzYzZjA3OGFkZjVkY2VhYmMzMGVlODI3NjNjZDNmNTg1MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBXS1N0
cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUxheWVyVHJlZUFzVGV4dChXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lUmVmKQogCiBib29sIFdLQnVuZGxlRnJhbWVBbGxvd3NGb2xsb3dpbmdMaW5rKFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9J
bXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVm
KS0+YWxsb3dzRm9sbG93aW5nTGluayhVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsK
IH0KIAogYm9vbCBXS0J1bmRsZUZyYW1lSGFuZGxlc1BhZ2VTY2FsZUdlc3R1cmUoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZVJlZikKQEAgLTIxNywxMiArMjE3LDEyIEBAIGJvb2wgV0tCdW5kbGVGcmFt
ZUdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIGRv
dWJsZSoKIAogV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZUZv
clJlc291cmNlV2l0aFVSTChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1VSTFJlZiB1cmxS
ZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPnN1Z2dlc3Rl
ZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
dG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZy
YW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoVVJMKFVSTCgpLCB0
b1dURlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29w
eU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdL
VVJMUmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVm
KS0+bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwo
ZnJhbWVSZWYpLT5taW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChVUkwoVVJMKCksIHRvV1RGU3Ry
aW5nKHVybFJlZikpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVGcmFtZUNvbnRhaW5zQW55Rm9ybUVs
ZW1lbnRzKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwCmluZGV4IDA3ZDAyNDI0MzZiZDQxNDU4MDJjYjE1OWUzYjBkOTcwMTRmM2EzMDguLjllOWEy
YjFkNTI4NmUxNGZjNDQ2OGJjMTAwMmQ1YWE3NjY2MjVmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwCkBAIC02Niw5ICs2Niw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBXS0J1bmRs
ZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFn
ZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xvY2FsRGF0YUZvclVSTChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0ltcGwo
cGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5oYXNM
b2NhbERhdGFGb3JVUkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CiB9CiAKIGJv
b2wgV0tCdW5kbGVQYWdlQ2FuSGFuZGxlUmVxdWVzdChXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJl
ZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcApp
bmRleCBiNWUxNjU3YTBkMjFmNmMxYzk3YmI5MDM4ZmQ0YTUwMTk5YmNmMWFkLi43MTU3NDlhNDky
MzljMzFhYWI3ZmMxYWVkZDAyNjIzZTE0ZThhYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgogCi0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNSw3
ICszNSw3IEBAIGdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdURjo6U3RyaW5nIGNvbnN0JiBz
KQogICAgIHJldHVybiBnX3N0cmR1cChzLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1nY2hhciogY29u
dmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpVUkwgY29uc3QmIHMpCitnY2hhciogY29udmVydFRv
VVRGOFN0cmluZyhVUkwgY29uc3QmIHMpCiB7CiAgICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJp
bmcocy5zdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VU
RjhTdHJpbmcuaAppbmRleCBlNDk0MTEzYTNmOGZmNmU5YzRkYmU2OGFmOWYxZDhhMmUyMjJmZWM5
Li5jMzcyNTM1OWI4OTM0N2MxZjg4OTZhZGM1YmNhYjRiNmE0NDk2YzQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVy
dFRvVVRGOFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKQEAgLTIzLDEzICsyMyw5IEBA
CiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBVUkw7Ci19Ci0KIHR5cGVkZWYgY2hhciBnY2hhcjsKIAogZ2NoYXIqIGNvbnZlcnRUb1VURjhT
dHJpbmcoV1RGOjpTdHJpbmcgY29uc3QmIHMpOwotZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmco
V2ViQ29yZTo6VVJMIGNvbnN0JiBzKTsKK2djaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFVSTCBj
b25zdCYgcyk7CiAKICNlbmRpZiAvKiBDb252ZXJ0VG9VVEY4U3RyaW5nX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggMWJiMGJhMTYwMzcyOGJj
MmZjOTI0OTdhY2IwMTM2YmI5OTkwNTcyYi4uMDgzMTc0ZTVlZDIxZjk4Mzk3M2IyNmM3ZDdjOGM0
ODhlMTAyYzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCA0OTM1
NjYxZWUyNDg4ZjYzODAxNGU4NjlkZDhmMTEyMDlhNDhiODEwLi4wMWRkOTkwNzljYjU0ZmI2MzM1
ZWNmYTNlMzczMzVlZTFiNjViZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oCkBAIC0zNCw3ICszNCw2IEBACiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNz
IE9iamVjdDsKIGNsYXNzIFN0cmluZzsKLWNsYXNzIFVSTDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2U+IHsKICAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjAsIFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMiwgV0tCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50VjMsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY0LCBXS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnRWNSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjYsIFdLQnVuZGxlUGFnZUxvYWRlckNs
aWVudFY3LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWOCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Vjk+IFZlcnNpb25zOwpAQCAtNDgsNyArNDcsNyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZQogICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChjb25zdCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKik7CiAKICAgICB2b2lkIHdpbGxMb2FkVVJMUmVxdWVz
dChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmplY3Qq
KSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0
IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBB
UEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQ
YWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYs
IEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtKFdlYlBhZ2UmLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBS
ZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4m
KSBvdmVycmlkZTsKQEAgLTg3LDcgKzg2LDcgQEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZUxvYWRlckNsaWUKIAog
ICAgIHZvaWQgZmVhdHVyZXNVc2VkSW5QYWdlKFdlYlBhZ2UmLCBjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+Jikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2Vi
RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBvdmVycmlkZTsKKyAgICBXVEY6OlN0
cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25zdCBVUkwmKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcygpIGNv
bnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXgg
ZTJhNjk3OGZlMjgzYWQ1M2MzNDhiZjA3MDdhYjY4ZGY3ZDk2MjM2Mi4uOTAzYzZkMDEyYzFkYjI4
OGZiYTIzOGI1NzhiZDA2NTYzNDQ4ZDgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAppbmRleCAxMjc4YzFiNDQzZmFkN2JmYTcxZjEwZjJiNGYyODY4NmI2ZTAz
NDRmLi42NWNmNDIzYWIxNjgyNzI1YWZkOTRhMzE0YmUxNDdiODNlYTlmMWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmluaXNo
UGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNvdXJjZUUKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlcnJvciksIFdURk1vdmUocmVzcG9uc2UpKTsKIH0K
IAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiBmcmFt
ZUxvYWRlciwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhG
cmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3QgcHJlY29ubmVjdGlvbklk
ZW50aWZpZXIgPSBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnMuYWRkKHByZWNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBlMDQwZDA3NTVj
Nzk0ZGJkNzFlYTljNTU4ODQyYTA2NWM1MmRmNWRlLi4xYzJmYjNmMTFlNDVlM2I3ZWE4ODI5NjNm
YTFjYTA5M2Q4ZTZlMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgV2ViTG9h
ZGVyU3RyYXRlZ3kgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kgewogCiAg
ICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lk
IHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sKSBmaW5hbDsK
LSAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpIGZpbmFsOworICAgIHZvaWQg
Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29u
c3QgVVJMJiByZWRpcmVjdFVSTCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdS
ZXF1ZXN0cyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpIGZp
bmFsOwogCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYkxvYWRlclN0cmF0ZWd5IGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKICAgICB2b2lkIHN0YXJ0UGluZ0xvYWQo
V2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBjb25zdCBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAKLSAgICB2
b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oV2ViQ29yZTo6RnJhbWVM
b2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJl
Y29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoUHJl
Y29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYmKTsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3Qg
U0hBMTo6RGlnZXN0JiBib2R5SGFzaCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaAppbmRleCAw
MjQ0ZTVmMmM4ODYyMDUzMTc2OTllY2ZkMWUxYTFiMjNjN2ZkOTk4Li42OWI3ZmEzYjQxNmY0ZWYz
OTZhZWFkZTRjMTIwODRiYjM1MmIxMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTb2NrZXRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpTb2NrZXRQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTb2Nr
ZXRQcm92aWRlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRQcm92
aWRlcik7IH0KLSAgICBSZWY8V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGVTb2Nr
ZXRTdHJlYW1IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBh
cnRpdGlvbikgZmluYWw7CisgICAgUmVmPFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZT4gY3Jl
YXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0
aXRpb24pIGZpbmFsOwogICAgIHZpcnR1YWwgfldlYlNvY2tldFByb3ZpZGVyKCkgeyB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmNwcAppbmRleCA3YTBiOWUzMTJlYjk5ZDQ3YWM1MmRlZTlkZTRhYTY4ZWFmNTRkNzQ3Li4x
ZDVlMjI5YWMyM2RhMzA4N2U0NmQ5MzU1NjVhYWE0ZDY3YjVhMDI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTcw
LDcgKzcwLDcgQEAgUmVmPFdlYlNvY2tldFN0cmVhbT4gV2ViU29ja2V0U3RyZWFtOjpjcmVhdGUo
Y29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUMKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJTb2NrZXRTdHJlYW0odXJsLCBjbGllbnQsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBh
cnRpdGlvbikpOwogfQogCi1XZWJTb2NrZXRTdHJlYW06OldlYlNvY2tldFN0cmVhbShjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGll
bnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlv
bikKK1dlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYgdXJsLCBXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKQogICAgIDogU29ja2V0U3RyZWFt
SGFuZGxlKHVybCwgY2xpZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAppbmRleCAz
ZmViNmE2MzVmZmU5ZTc5MjMxZDMyYjUxYzYzZmI3Mjg3N2Q5OWUzLi4zODlhMGI5OGI3NTk4Y2M2
NjhiZThkYjQ1ZjE3MTFiOGZlOGY3NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0U3RyZWFtIDogcHVibGljIElQQzo6TWVzc2Fn
ZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlLCBwdWJsaWMgSWRlbnRpZmllZDxXZWJTb2NrZXRTdHJlYW0+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNvY2tldFN0cmVhbT4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOworICAgIHN0YXRpYyBSZWY8
V2ViU29ja2V0U3RyZWFtPiBjcmVhdGUoY29uc3QgVVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBh
cnRpdGlvbik7CiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiAgICAg
c3RhdGljIFdlYlNvY2tldFN0cmVhbSogc3RyZWFtV2l0aElkZW50aWZpZXIodWludDY0X3QpOwog
ICAgIApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBXZWJTb2NrZXRTdHJlYW0gOiBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsCiAgICAgSVBDOjpD
b25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CiAKLSAgICBXZWJTb2NrZXRTdHJl
YW0oY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7Cisg
ICAgV2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRp
b24pOwogICAgIH5XZWJTb2NrZXRTdHJlYW0oKTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkQW1v
dW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDAwM2QyN2ExMDE4Nzk4ODlk
YWE2NmZhYTBjNmQ5OTNlOTE2MGUxMGYuLmM2YTUwNjkxNzQwYTVkYjNlNjVmMTk3NTcxYjdiZDQw
MDViYjcxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM4LDggKzM4LDggQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJl
Y3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShVTklY
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggYmNiM2Q3ZmI3NzdkMTMxYzdmMjQ3NmY2NWIxNTJm
MDQzOTAxNDZkNy4uNzRhODRlOTI3Y2Y1YTdkZjYyMjM2Y2Y0YTliZmZiOTU1MTIzOWE4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0xMzksNyArMTM5LDcgQEAgY2xhc3MgTmV0c2NhcGVQbHVn
aW4gOiBwdWJsaWMgUGx1Z2luIHsKIAogICAgIHZvaWQgc2V0SXNQbGF5aW5nQXVkaW8oYm9vbCk7
CiAKLSAgICB2b2lkIHJlZ2lzdGVyUmVkaXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2
b2lkKiBub3RpZmljYXRpb25EYXRhKTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVkaXJlY3QoTmV0c2Nh
cGVQbHVnaW5TdHJlYW0qLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGludCByZWRpcmVjdFJlc3Bv
bnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKICAgICB2b2lkIHVybFJlZGlyZWN0
UmVzcG9uc2Uodm9pZCogbm90aWZ5RGF0YSwgYm9vbCBhbGxvdyk7CiAKICAgICAvLyBNZW1iZXIg
ZnVuY3Rpb25zIGZvciBjYWxsaW5nIGludG8gdGhlIHBsdWctaW4uCkBAIC0yMDQsMTMgKzIwNCwx
MyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1YmxpYyBQbHVnaW4gewogICAgIHZvaWQgZnJh
bWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdHJlYW1XaWxsU2Vu
ZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVS
TCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBv
dmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLAorICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25z
ZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9h
ZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWls
KHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1M
ZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlk
ZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExv
YWRpbmcoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IDQw
NzQwNzhkN2E4ZmI1MzhjZmY0N2RjMWFkYTRmOWQyMGI3MGQyMmYuLmJiNmE1YjA4YzdjY2U1ZGRl
ZDg5OTM2MGY3YWI4MzQwZjAzOTVlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwot
fQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW47CkBAIC01NSw4
ICs1MSw4IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8
TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHsKICAgICB1aW50NjRfdCBzdHJlYW1JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyZWFtSUQ7IH0KICAgICBjb25zdCBOUFN0cmVhbSogbnBTdHJlYW0oKSBjb25z
dCB7IHJldHVybiAmbV9ucFN0cmVhbTsgfQogCi0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29u
c3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0
UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsCisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgVVJMJiByZXF1ZXN0
VVJMLCBjb25zdCBVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNl
U3RhdHVzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBoZWFkZXJzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBlNThk
ZTJjNzYwZGRiMTRjMTJjNGNiZmJmNzVjZTkyZjVhYjhlMDFhLi42ODYyZTMwNGZlZGI4NWI3ODYz
NDcwMGI5ZDZiMzVhNmMzYzIwY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xMzUsMTIgKzEzNSwxMiBAQCBjbGFzcyBQREZQ
bHVnaW4gZmluYWwgOiBwdWJsaWMgUGx1Z2luLCBwcml2YXRlIFdlYkNvcmU6OlNjcm9sbGFibGVB
cmVhIHsKICAgICB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQp
IGZpbmFsOwogICAgIHZvaWQgZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3
YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFsOwotICAgIHZvaWQgc3Ry
ZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25z
ZVN0YXR1cykgZmluYWwgeyB9Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90
IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBp
bnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQorICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJf
dCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQg
c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgZmluYWw7CiAgICAgdm9p
ZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgZmlu
YWw7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKKyAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwog
ICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQg
bWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7CkBAIC0zMDYsNyAr
MzA2LDcgQEAgY2xhc3MgUERGUGx1Z2luIGZpbmFsIDogcHVibGljIFBsdWdpbiwgcHJpdmF0ZSBX
ZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSB7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsK
IAotICAgIFdlYkNvcmU6OlVSTCBtX3NvdXJjZVVSTDsKKyAgICBVUkwgbV9zb3VyY2VVUkw7CiAK
ICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
RGF0YVJlZj4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KaW5kZXggNzFiOGNmODMzNDNjNmNmODUyYTBkMDk3MjgzOGRmZmFk
MjcwNmM4YS4uZTRjZDY1MzU2MTE2MjQ2YmZhNjhmNzRiMTZiNDMxNTY4ZDc5NzViNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBA
IC0xNzAyLDcgKzE3MDIsNyBAQCBib29sIFBERlBsdWdpbjo6aGFuZGxlc1BhZ2VTY2FsZUZhY3Rv
cigpIGNvbnN0CiB2b2lkIFBERlBsdWdpbjo6Y2xpY2tlZExpbmsoTlNVUkwgKnVybCkKIHsKICAg
ICBVUkwgY29yZVVSTCA9IHVybDsKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoY29yZVVS
TCkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29yZVVSTCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCA4NzZmNmNlNDhl
Y2NiNjA2MzM5NDc2YTY2NjFmMjZmNGY5MGFhNDcyLi5hYWJkNWU1MDUxYmVjMjlmNTUxMTU3Mzgw
NjFhNmE2MDhlZjIzMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaApAQCAtMjMsMTYgKzIzLDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBQbHVnaW5faAotI2RlZmluZSBQbHVnaW5faAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKQEAgLTUzLDE1ICs1MiwxNSBAQCBjbGFzcyBEZWNvZGVyOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotICAgIGNsYXNz
IEZsb2F0UG9pbnQ7Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotICAgIGNsYXNzIEludFBv
aW50OwotICAgIGNsYXNzIEludFJlY3Q7Ci0gICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBG
bG9hdFBvaW50OwotICAgIGNsYXNzIFNjcm9sbGJhcjsKLSAgICBjbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBGbG9hdFBvaW50OworY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgSW50U2l6
ZTsKK2NsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBTY3JvbGxiYXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODEsNyBAQCBlbnVtIFBsdWdp
blR5cGUgewogY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdp
bj4gewogcHVibGljOgogICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKLSAgICAgICAgV2ViQ29yZTo6
VVJMIHVybDsKKyAgICAgICAgVVJMIHVybDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7
CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlczsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBl
OwpAQCAtMTY3LDEwICsxNjYsMTAgQEAgY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFBsdWdpbj4gewogICAgIHZpcnR1YWwgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3Jp
cHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgPSAwOwogCiAgICAg
Ly8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBtYXkgc2VuZCBhbiBIVFRQIHJlcXVl
c3QuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXNDb2RlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXNDb2Rl
KSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyByZWNl
aXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkws
IHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5h
bWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJl
Y2VpdmUgZGF0YS4KQEAgLTE4Myw3ICsxODIsNyBAQCBjbGFzcyBQbHVnaW4gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZh
aWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSA9IDA7CiAKICAgICAvLyBU
ZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMg
SFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwgCisgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlm
aWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUg
cGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCkBAIC0zMjMs
NSArMzIyLDMgQEAgY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBs
dWdpbj4gewogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OlRvVmFsdWVUeXBl
TmFtZSkgXAogc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYktpdDo6UGx1Z2luJiBwbHVnaW4p
IHsgcmV0dXJuIHBsdWdpbi50eXBlKCkgPT0gV2ViS2l0OjpTcGVjaWZpY1BsdWdpblR5cGU7IH0g
XAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gUGx1Z2luX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIu
aAppbmRleCBhNWM2ZmEwNDNjMzYyMjY5NDFjOGQyMTQ3YjIxMjA4ZWMyZjI5NDc1Li5hMWY4MDdl
MWU1NTA3MjNlZmVlYTE3NzEzM2I4MWRmZjRkMTc2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC00Myw3ICs0Myw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBJbnRS
ZWN0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5oCmluZGV4IGRjNDIxMWQwMGVkODkxMGQzNDdkOGYwY2ExYjc1M2M2YjJlNmVhMWQuLmU2YWIz
ZWQ5YjAzMmZlMDRjMDJkZjVjNjg5MmU0N2Q0ZTY5ZDRhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtODcsMTIgKzg3LDEyIEBAIGNs
YXNzIFBsdWdpblByb3h5IDogcHVibGljIFBsdWdpbiB7CiAgICAgdm9pZCBmcmFtZURpZEZpbmlz
aExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKICAgICB2b2lkIGZyYW1lRGlk
RmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0
cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVz
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZp
bmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFt
RGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwot
ICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVS
TCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlm
aWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlk
ZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRl
eCBmMDc1MmJkOTgyYTE1M2JhZDRiMjkyNDVmMTAzMjE5NzBlYjNhYzkxLi4zY2FhYWM5YWMxY2Qz
ZGJkNmJmNDZmZWM1ZDcxZjE0MWRmNDViMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE2Myw3ICsxMTYzLDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIFJl
ZjxQbHVnaW5WaWV3PiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIC8vIEZpcnN0LCBjaGVjayBpZiB0
aGlzIGlzIGEgamF2YXNjcmlwdDogdXJsLgotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChy
ZXF1ZXN0LT5yZXF1ZXN0KCkudXJsKCkpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFT
Y3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICBwZXJmb3JtSmF2YVNj
cmlwdFVSTFJlcXVlc3QocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjI4
LDcgKzEyMjgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1GcmFtZUxvYWRVUkxSZXF1ZXN0
KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAKIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3Jp
cHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHByb3RvY29s
SXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwoKSkpOworICAgIEFTU0VSVChXVEY6
OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwoKSkpOwogCiAgICAg
UmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgp
OwogICAgIGlmICghZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCA1YzUxYzQ1ZjY0MDlk
ZWVkZDU1ZTkzYzBmZDk4OGI3Yzg3M2Q4MzFhLi4zZjcwYjFlODdiOWFmZThmM2YwNjVhNDE5Y2Nk
Yjk1MmNlZmZjZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBW
ZWN0b3I8UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5JbmZvKFBhZ2Um
IHBhZ2UsIHN0ZDo6b3B0aW9uYWw8VgogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogfQogCi1WZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQYWdlJiBwYWdlLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCkKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6
OndlYlZpc2libGVQbHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYgdXJsKQogewogICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+
PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKICAgICBhdXRvIHBsdWdpbnMgPSBwbHVnaW5J
bmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5k
ZXggMWJiYWQ1YTc5ZmIxMWVjNjgwNzQ5NDdkMDA3YzNjZDU2ZTU4MTlkZC4uODQ2NDJkN2ZjMDEx
ZjhjYWNmNjQxYmIxYWVlOGYyODIzOTNjMDdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiAgICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiAK
ICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdl
Jiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQ
bHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29y
ZTo6UGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBv
dmVycmlkZTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
aAppbmRleCAyYmZhZWU0NzZlMWY0YmNjY2RiMjY2MGZlNWQ4ZTY2YmQ2NzRhM2Q3Li5kY2Q2ZGE1
ODA2YmIzMzJjMjRmZmVjODUxOGVlNTA5NmNiYWU3ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAt
NzksMTMgKzc5LDEzIEBAIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24sIHB1YmxpYyBJCiAgICAgdm9pZCByZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9y
aWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYp
IGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6
RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24o
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpV
UkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBt
YXRjaFJlZ2lzdHJhdGlvbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4s
IGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IG1hdGNoUmVxdWVzdElkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+
JiYpOwogICAgIHZvaWQgZGlkR2V0UmVnaXN0cmF0aW9ucyh1aW50NjRfdCBtYXRjaFJlcXVlc3RJ
ZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+
JiYpOwotICAgIHZvaWQgd2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMLCBXaGVu
UmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHdoZW5SZWdpc3Ry
YXRpb25SZWFkeShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25z
dCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCByZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKTsKIAotICAgIHZvaWQgZ2V0UmVnaXN0
cmF0aW9ucyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFdl
YkNvcmU6OlVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFj
ayYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBlODczZmZmZDJhOGM3MDFhZTg2OTA1Y2U5
ZTU3MDRmMWE3YjljOWI0Li5kOTc5NDY5OWM5MWRjNWQ3NTZkYzMzYmRiMjU0NWM1ZjVkYzA0MTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTcyLDcgKzcyLDcgQEAgY2xh
c3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
U1dDb250ZXh0TWFuYWdlcjo6Q28KICAgICB2b2lkIG1hdGNoQWxsKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlP
cHRpb25zJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgY2xhaW0oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBza2lwV2FpdGlu
ZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgRnVuY3Rpb248dm9pZCgpPiYmKSBm
aW5hbDsKLSAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgZmluYWw7CisgICAgdm9pZCBzZXRTY3Jp
cHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYp
IGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0
YXJ0ZWRXaXRoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5oCmluZGV4IDAzNzAxMDZlOTJmMWZiMmE0YWJkODUxMTE2YzcyNjJmZTQ1NDAwZmIuLjYyNmY2
MWE1MGE2NDU5ZDQ5NTY3ZDY4YmZlY2JhODc3YmJhNmFiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmgKQEAgLTU3LDEwICs1NywxMCBAQCBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VXNlckNvbnRlbnRQcm92aWRlciwgcHJpdgog
ICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQmLCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNl
clNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYpOworICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCYsIGNvbnN0IFVSTCYpOwogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdHMoSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiYpOwotICAg
IHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRXaXRoVVJMKEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0
V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3QgVVJMJik7CiAgICAgdm9p
ZCByZW1vdmVVc2VyU3R5bGVTaGVldHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAg
IHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCBmOTM2NjdhZTQ4ZTlkNzgxZjMyZjI2YTEwYTNhNTJmN2NmYThjMzE2Li41YTQ2ZWY4MDdkNzAx
NzNlOWZjMTgzMzI3ZDc2MWJmYjI1Y2M4ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAt
MTE4Myw3ICsxMTgzLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVud3JhcENyeXB0b0tleShj
b25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwKIAogI2VuZGlmCiAKLVN0
cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1
bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0
IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBT
dHJpbmcgcmVzdWx0OwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5n
LCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS5wYWdlSUQoKSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKaW5kZXggMDk0OGY2N2FiZWMxNGQ4NGU2ZGY1NTY0MjcxZWQ2ZTEzZDk0MjRjZS4uM2ZlZTBj
YjAxYjM2ZGI4NmY2ZjNhZjAzOTNjYWEzYTE1ZjM1ZDAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApA
QCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVy
Rmx1c2goKSBmaW5hbDsKICAgICBib29sIGFkanVzdExheWVyRmx1c2hUaHJvdHRsaW5nKFdlYkNv
cmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFncykgZmluYWw7CiAKLSAgICB2b2lkIGNv
bnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBIYXNo
U2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgZmluYWw7CisgICAgdm9pZCBjb250ZW50
UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJMJiwgY29uc3QgSGFzaFNldDxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiYpIGZpbmFsOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQg
c2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpIGZpbmFsIHsgfQpAQCAtMzI1LDcgKzMy
NSw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJv
bWVDbGllbnQgewogICAgIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKLSAgICBTdHJpbmcg
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwg
Y29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0
IGZpbmFsOworICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
VVJMJikgY29uc3QgZmluYWw7CiAKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJ
T04pICYmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNr
KGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBjZWMzMTQyYjE2ZTM1ZDAwMmNmYzhjNDJm
NGU3ODFiODJlYmU4NThjLi41ZDhlN2Q2ZDBmYTUxYTEwNTFkODBjYTE3NjZlZTM3N2ZiY2YzY2Iz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBX
ZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7
CiBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICB2b2lkIHNlYXJjaFdp
dGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGxvb2tV
cEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogICAgIGJvb2wgaXNTcGVh
a2luZygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggOWY3ZDdmYzUwYjZlYzhhZWU1NmJi
MjU5YjczMzQwYzQwZDkzNjcyNy4uMWFkNGMzZGUyY2I3ZDM4ZTYyNjJjMTk3YWFiMjRjY2E2ZmVk
YTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFdlYkRyYWdDbGll
bnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAgICAgdm9pZCBkaWRDb25jbHVkZUVk
aXREcmFnKCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3Jl
OjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6
RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAg
dm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggYzIzNTM5NTM1MzJiMDc3NzAyMjA1NzNmMmRmMzZiOGNjMzY2
ZjdhYy4uY2E5ZTYzN2JjNTk3ZWE2MjlhMTZmMjA3MTBhNDRiNWYxNGUzNWFmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNzk2LDcgKzE3OTYsNyBAQCBib29sIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjphbGxvd1NjcmlwdChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykKICAg
ICByZXR1cm4gIXBsdWdpblZpZXcgfHwgIXBsdWdpblZpZXctPnNob3VsZEFsbG93U2NyaXB0aW5n
KCk7CiB9CiAKLWJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2Fs
QWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQorYm9vbCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
ICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGMxYjlj
ZDBmOTQzMzI3OWNkZDg0YzBjOTVmYTgxYjk4NGU1ZjU0ZTguLjNjNzE2Njg1MGIyNTE1NjZkNWU0
NDBlZTNmNTkzN2NiOWNjZjcwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05
NywxMyArOTcsMTMgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hE
YXRhRGV0ZWN0aW9uKE5TQXJyYXkgKmRldGVjdGlvblJlc3VsdHMpIGZpbmFsOwogI2VuZGlmCiAg
ICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZU1haW5Eb2N1bWVudCgpIGZpbmFsOwotICAgIHZvaWQg
ZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgV2ViQ29yZTo6VVJMJiBjdXJyZW50VXJs
LCBjb25zdCBXZWJDb3JlOjpVUkwmIG5ld1VybCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdp
bGxDaGFuZ2VEb2N1bWVudChjb25zdCBVUkwmIGN1cnJlbnRVcmwsIGNvbnN0IFVSTCYgbmV3VXJs
KSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWREaXNwYXRjaE9ubG9hZEV2ZW50cygpIGZp
bmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlUHJvdmlzaW9uYWxV
UkwoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBm
aW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBX
ZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZpcmVEYXRlKSBmaW5hbDsK
KyAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBk
b3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZpcmVEYXRlKSBmaW5hbDsKICAgICB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRj
aERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVw
bGFjZVN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOwpAQCAtMTU1LDggKzE1NSw4IEBAIGNsYXNzIFdl
YkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50IHsKICAgICBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRl
bSopIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKLSAgICB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBj
b25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29s
IGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOwog
ICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIGZpbmFsOwpAQCAtMTg5LDkgKzE4OSw5IEBAIGNsYXNzIFdlYkZyYW1l
TG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsK
ICAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVE
YXRhJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciYpIGZpbmFsOwogCi0gICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJD
b3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7Cisg
ICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29u
c3QgVVJMJikgZmluYWw7CiAgICAgCi0gICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3Jl
OjpVUkwmKSBmaW5hbDsKKyAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGZpbmFsOwog
CiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3QgZmluYWw7
CiAKQEAgLTIxMCwyMCArMjEwLDIwIEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBib29sIGNhbkNhY2hl
UGFnZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25l
ckVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywg
aW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
V2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
Ym9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkg
ZmluYWw7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5
KSBmaW5hbDsKICAgICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIGZpbmFs
OwogICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0JikgZmluYWw7
CiAgICAgCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3
ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKLSAgICBX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3
ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0
IGZpbmFsOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdl
YkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZh
QXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0
RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgZmluYWw7CiAgICAgCi0g
ICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CisgICAgV2ViQ29yZTo6
T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkgZmluYWw7CiAgICAgU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29u
c3QgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIGZpbmFsOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIGNs
YXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50IHsKIAogICAgIGJvb2wgYWxsb3dTY3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGlu
Z3MpIGZpbmFsOwogCi0gICAgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2Nh
bFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBib29sIHNob3VsZEZvcmNlVW5p
dmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgUmVmPFdl
YkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZTk3NzNlYTc4
MGEzMzJhZTU5ZjAyNzhhZTgzYTMwNzZkZDI3OTc2ZS4uMWQzZWVlNzk4M2NlZWMyMTEwYzJmODU3
YTMyYjRlZTVjNmUxZjI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAg
LTYwLDkgKzYwLDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3ViZnJh
bWVMb2FkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHBhbC9TZXNz
aW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTdHJpbmdVdGlsaXRpZXMuaCIKQEAgLTM2
NCw3ICszNjQsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbgogICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1
ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBw
YXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9t
UGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCmluZGV4IDZlZWMwOWIxZWQyMmI5YWQwNjhlM2Y2OTI0YjU5MjU3NDUxNWQx
NDYuLjc2YTgxMGFmZDNlMGZmNTA3OTNiNWRmMTVjZWVjODNhMjRhMTRhZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ3LDEzICs0NywxMyBAQCBjbGFzcyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRl
IFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkg
b3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlk
ZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsK
KyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKICNpZiBQTEFURk9STShJ
T1MpCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1Ymxp
YyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAgICAgaW50IGdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpVUkwgcmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2Fy
ZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUp
IG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAg
IHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CkBA
IC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJD
b3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAgICAgbG9uZyBjaGFuZ2VD
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcg
dW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlVSTCB1cmwoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVVJMIHVybChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAogICAgIGxvbmcgYWRkVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCAzYmQ3ZDFmYmIzOGNiMjA5YWZk
YjcxZGViMThiOWQ5MWVkZDkxMzBmLi5hZTU5NTJkMDhlNjQ5NzYxNjBjOGEzNDQ5NGI0YWQ2MGJh
YTk3MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC00OCw4ICs0OCw4IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVy
SW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3RyaW5nVHJ1bmNhdG9yLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1Mp
CiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViRHJhZ0Ns
aWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIEVsZW1lCiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkgewogICAgICAgICB0aXRsZSA9IHVy
bC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgdGl0bGUgPSB1c2VyVmlzaWJsZVN0cmluZygoTlNVUkwgKil1cmwpOworICAgICAg
ICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiAgICAgfQogCiAgICAg
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoZWxlbWVudCk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUK
ICAgICAgICAgICAgIGZpbGVuYW1lID0gZG93bmxvYWRGaWxlbmFtZTsKICAgICB9CiAKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UocGFzdGVib2FyZE5hbWUsIGltYWdlSGFuZGxlLCBpbWFnZVNpemUsIGZpbGVuYW1lLCBleHRl
bnNpb24sIHRpdGxlLCBTdHJpbmcoW1tyZXNwb25zZSBVUkxdIGFic29sdXRlU3RyaW5nXSksIHVz
ZXJWaXNpYmxlU3RyaW5nKChOU1VSTCAqKXVybCksIGFyY2hpdmVIYW5kbGUsIGFyY2hpdmVTaXpl
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldFByb21pc2Vk
RGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBpbWFnZUhhbmRsZSwgaW1hZ2VTaXplLCBmaWxl
bmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgU3RyaW5nKFtbcmVzcG9uc2UgVVJMXSBhYnNvbHV0ZVN0
cmluZ10pLCBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCksIGFyY2hpdmVIYW5kbGUsIGFyY2hp
dmVTaXplKSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRp
dG9yQ2xpZW50TWFjLm1tCmluZGV4IDFmOTBjNGE1NzQwZjQxNTA5ZDhlODViMTlkNGEwN2U4MDA0
M2EyNTQuLjNkMWZmODQ5MDMxMTExMTUxY2EyZTg3YzhjNGU3MDdjMmYxMzM5N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9y
Q2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC00MCw3ICs0MCw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5T
VVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJv
bGxlci5oCmluZGV4IDA5MjNlNDYwOTU5YjBmMzRhOTQyZWQ5MjRmMDQ0YzUzZjg0YzMzZTYuLjE3
ZmE4ZWNjYTc4YmE4YWMyNzY4MTY1M2E3ZDJlN2ZkZDcwZmUyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNv
bnRyb2xsZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBWaXNpdGVkTGlua1RhYmxlQ29udHJv
bGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0b3JlICwgcHJpdgogICAg
IGV4cGxpY2l0IFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIp
OwogCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZS4KLSAgICBib29sIGlzTGlua1Zp
c2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92
ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3Jl
OjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJpZGU7CiAKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAppbmRleCAyNTYwNzY5ZmJlNGI1YjM3YzEyZDJlN2UxODQyZDAxYzNlOTE0
NGVmLi5jMzI4OTdiM2I4ZTJiNWMxNjkyNGVlOWUzMDI0NDY2NDY5MGMyNzI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC01MDksNyArNTA5
LDcgQEAgdW5zaWduZWQgV2ViRnJhbWU6OnBlbmRpbmdVbmxvYWRDb3VudCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9h
ZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKLWJvb2wgV2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xp
bmsoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0Citib29sIFdlYkZyYW1lOjphbGxvd3NG
b2xsb3dpbmdMaW5rKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghbV9jb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmgKaW5kZXggMmUwM2YyYmQ1NTYyNTQ0ZDY3OGYxYTgzYTk1MzhjY2ZlNGEz
NDY4Yi4uZWI4MTM2YWI3NzEwYTRlZDEzMGU2Nzk4MDFiOTUwZDllY2E1OGI1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC01Myw3ICs1Myw2IEBA
IGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgSW50UG9p
bnQ7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTEwNiw3ICsxMDUsNyBAQCBjbGFzcyBXZWJGcmFtZSA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUZyYW1lPiB7CiAgICAgLy8gV0tCdW5kbGVGcmFt
ZSBBUEkgYW5kIFNQSSBmdW5jdGlvbnMKICAgICBib29sIGlzTWFpbkZyYW1lKCkgY29uc3Q7CiAg
ICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBXZWJDb3JlOjpVUkwgdXJsKCkgY29uc3Q7Cisg
ICAgVVJMIHVybCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZp
Y2F0ZUluZm8oKSBjb25zdDsKICAgICBTdHJpbmcgaW5uZXJUZXh0KCkgY29uc3Q7CiAgICAgYm9v
bCBpc0ZyYW1lU2V0KCkgY29uc3Q7CkBAIC0xNDEsMTEgKzE0MCwxMSBAQCBjbGFzcyBXZWJGcmFt
ZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUZyYW1l
PiB7CiAgICAgCiAgICAgdW5zaWduZWQgcGVuZGluZ1VubG9hZENvdW50KCkgY29uc3Q7CiAgICAg
Ci0gICAgYm9vbCBhbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0
OworICAgIGJvb2wgYWxsb3dzRm9sbG93aW5nTGluayhjb25zdCBVUkwmKSBjb25zdDsKIAogICAg
IFN0cmluZyBwcm92aXNpb25hbFVSTCgpIGNvbnN0OwotICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKLSAgICBT
dHJpbmcgbWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29u
c3Q7CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0
IFVSTCYpIGNvbnN0OworICAgIFN0cmluZyBtaW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChjb25z
dCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4dERpcmVjdGlvbihjb25zdCBTdHJpbmcm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCAyMmI4MDkwMTEyOTc2MjgwZGIzZmVmMjE4OGUyZTdiOGFiZWQ5NGQ5Li4wMjk1NjA1YTE0ZDgz
YjllOWY5ODZmZGI4ZDY0NGI1M2RlNzI5N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgdm9pZCBXZWJQYWdl
OjpzZW5kQ2xvc2UoKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2xvc2VQYWdl
KGZhbHNlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJM
JiYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJQYWdlOjpsb2FkVVJMSW5GcmFtZShV
UkwmJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkK
QEAgLTEzMjAsNyArMTMyMCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRl
cnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVy
cyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRh
dGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwotICAgIFVSTCBiYXNlVVJM
ID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDog
VVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBVUkwgYmFzZVVS
TCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VS
TCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKICAgICBsb2Fk
RGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBXVEZNb3ZlKHNoYXJlZEJ1ZmZl
ciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUs
IGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7CiB9CiAKQEAgLTEzMjgs
NyArMTMyOCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgTG9hZFBh
cmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewogICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQ
YXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFt
ZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBs
b2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJh
bWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogVVJMKFVS
TCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKICAgICBVUkwgdW5yZWFjaGFibGVV
UkwgPSBsb2FkUGFyYW1ldGVycy51bnJlYWNoYWJsZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwo
KSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVVUkxTdHJpbmcpOwogICAg
IFVSTCBwcm92aXNpb25hbExvYWRFcnJvclVSTCA9IGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFs
TG9hZEVycm9yVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFy
YW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZyk7CiAgICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
Pihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgp
KTsKQEAgLTMzNzMsNyArMzM3Myw3IEBAIHZvaWQgV2ViUGFnZTo6YWRkQ29uc29sZU1lc3NhZ2Uo
dWludDY0X3QgZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBNCiAgICAgICAg
IGZyYW1lLT5hZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1l
c3NhZ2UsIHJlcXVlc3RJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VuZENTUFZpb2xhdGlvblJl
cG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcG9ydFVSTCwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcG9ydERhdGEpCit2b2lkIFdlYlBhZ2U6OnNlbmRDU1BW
aW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJMJiByZXBvcnRVUkwsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXBvcnREYXRhKQogewogICAgIGF1dG8gcmVwb3J0ID0g
cmVwb3J0RGF0YS50YWtlRGF0YSgpOwogICAgIGlmICghcmVwb3J0KQpAQCAtNTg3NCwxNCArNTg3
NCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29u
c3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogdm9pZCBXZWJQYWdlOjphZGRVc2VyU2NyaXB0KFN0cmlu
ZyYmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsK
LSAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVS
TChXZWJDb3JlOjpibGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4o
KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKKyAgICBXZWJDb3JlOjpVc2VyU2Ny
aXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVSTChXVEY6OmJsYW5rVVJMKCkpLCBW
ZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3Rpb25UaW1lLCBpbmplY3Rl
ZEZyYW1lcyB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHQo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgV1RGTW92ZSh1c2VyU2Ny
aXB0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFt
ZXMpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0eWxlU2hlZXR7IHNvdXJj
ZSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4o
KSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9OworICAgIFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0IHtzb3VyY2UsIFdURjo6YmxhbmtVUkwoKSwgVmVj
dG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHls
ZVVzZXJMZXZlbCB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTdHls
ZVNoZWV0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIFdURk1vdmUo
dXNlclN0eWxlU2hlZXQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCAxNTBhYjRmZWQ5ZTRhNmNkNDMxMzQ1Mjc2NmI4OTgwZDg3NWNjZjg4Li40
YjVkOWQ4OGZlNWY5YmY5ZDQ4YzdlM2JiOTNkNjg4NTc0ZmRjMjYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTksNyArMTU5LDYgQEAgY2xhc3Mg
U2VsZWN0aW9uUmVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRh
OwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKLWNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQ
b3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4X3Q7CkBAIC0zMTYsNyAr
MzE1LDcgQEAgY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVAKICNlbmRpZgogCiAgICAgdm9pZCBhZGRD
b25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlELCBNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHJlcXVlc3RJRCA9IDApOwotICAgIHZvaWQgc2Vu
ZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmKTsKKyAgICB2b2lkIHNlbmRDU1BW
aW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJMJiByZXBvcnRVUkwsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJik7CiAgICAgdm9pZCBlbnF1ZXVlU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eVBvbGljeVZp
b2xhdGlvbkV2ZW50OjpJbml0JiYpOwogCiAgICAgLy8gLS0gQ2FsbGVkIGJ5IHRoZSBEcmF3aW5n
QXJlYS4KQEAgLTMzNCw5ICszMzMsOSBAQCBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2Jq
ZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUAogICAgIHZv
aWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoY29uc3QgV2ViRnJhbWUmKTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWQoV2ViRnJhbWUqKTsKICAgICB2b2lkIHNob3coKTsKLSAgICBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwotICAgIFN0cmluZyB1c2VyQWdl
bnQoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKLSAgICBTdHJpbmcgcGxh
dGZvcm1Vc2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHVz
ZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgdXNlckFnZW50KFdlYkZyYW1l
KiwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3JtVXNlckFnZW50KGNvbnN0
IFVSTCYpIGNvbnN0OwogICAgIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2Rl
KCk7CiAKICAgICB2b2lkIGRpZEluc2VydE1lbnVFbGVtZW50KFdlYkNvcmU6OkhUTUxNZW51RWxl
bWVudCYpOwpAQCAtNDE5LDggKzQxOCw4IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2Vi
R0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBXZWJD
b3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwg
Y29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdM
UG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYp
OwogI2VuZGlmCiAgICAgCiAgICAgZW51bSBjbGFzcyBJbmNsdWRlUG9zdExheW91dERhdGFIaW50
IHsgTm8sIFllcyB9OwpAQCAtNjg1LDcgKzY4NCw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQ
CiAgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRleHRNZW51QXRQb2ludEluV2luZG93KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYKIAotICAgIGJvb2wgaGFzTG9jYWxEYXRhRm9yVVJM
KGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgaGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0
IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtOTQzLDcgKzk0Miw3IEBAIGNsYXNzIFdlYlBhZ2Ug
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwg
cHVibGljIElQCiAgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9uQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0KCk7IH0KICNlbmRpZgogCi0gICAg
dm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKKyAgICB2b2lkIHNhdmVQREZUb0ZpbGVJ
bkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBV
UkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNp
emUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzYXZlUERGVG9UZW1wb3JhcnlG
b2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKQEAg
LTExNTksNyArMTE1OCw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAKICAgICBTdHJpbmcg
c291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2Vy
RGF0YSYpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5
Q2xvc2UoKTsKQEAgLTExOTcsNyArMTE5Niw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAg
ICAgc3RhdGljIGJvb2wgc2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxEaXJl
Y3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKICAgICBzdGF0aWMgYm9vbCBsb2dp
Y2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxMb2dpY2FsRGlyZWN0aW9u
LCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAKLSAgICB2b2lkIGxvYWRVUkxJbkZyYW1l
KFdlYkNvcmU6OlVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKKyAgICB2b2lkIGxvYWRVUkxJbkZy
YW1lKFVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIGVudW0gY2xhc3MgV2FzUmVzdG9y
ZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07CiAgICAgdm9pZCByZXN0b3JlU2Vzc2lvbkludGVy
bmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+JiwgV2FzUmVzdG9yZWRC
eUFQSVJlcXVlc3QsIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpPdmVyd3JpdGVFeGlzdGluZ0l0
ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KaW5kZXggZDc1YWNlZWEwZTAwMDIzYWIyMTliMjkxMzllMzYyMjZhZjljNmM3
Ni4uMjdjYWEyN2NlNTcxZTIyYWEwODE5NmEyMmM2NzJiNDU4YjAzZGE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBA
IC0yOCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKIAogICAgIEFkZENvbnNv
bGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGVudW0gTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291
cmNlLCBlbnVtIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIFN0cmluZyBtZXNzYWdlLCB1aW50
NjRfdCByZXF1ZXN0SUQpCi0gICAgU2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9y
dERhdGEpCisgICAgU2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBVUkwg
cmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCiAgICAgRW5xdWV1
ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6SW5pdCBldmVudEluaXQpCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBHb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJ
dGVtSUQsIGVudW0gV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBiYWNrRm9yd2FyZFR5cGUsIGVudW0g
V2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCkKICAgICBUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCi0gICAgTG9hZFVSTElu
RnJhbWUoV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3QgZnJhbWVJRCkKKyAgICBMb2FkVVJMSW5G
cmFtZShVUkwgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQogICAgIExvYWRSZXF1ZXN0KHN0cnVjdCBX
ZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogICAgIExvYWREYXRhKHN0cnVj
dCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogICAgIExvYWRBbHRlcm5h
dGVIVE1MKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggZTU4ZTlmMWRkN2IwNzdmNTYxY2E1MWM5MmZlZjcx
NWIwYWUxNDI5ZC4uNzM1NjZhMTMzODVkZTNhYWM2NDZmYjk0OTZiZGRhZmNiNWFmNDZiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCkBAIC00MCw5ICs0MCw5IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpbnRDb250
ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L2dsaWIvR1VuaXF1ZVB0ci5oPgogCkBAIC00NTQsMTMgKzQ1NCwxMyBAQCBib29sIFdlYlByaW50
T3BlcmF0aW9uR3RrOjpjdXJyZW50UGFnZUlzTGFzdFBhZ2VPZlNoZWV0KCkgY29uc3QKICAgICBy
ZXR1cm4gKG1fbnVtYmVyVXAgPCAyIHx8ICEoKG1fcGFnZVBvc2l0aW9uICsgMSkgJSBtX251bWJl
clVwKSB8fCBtX3BhZ2VQb3NpdGlvbiA9PSBtX251bWJlck9mUGFnZXNUb1ByaW50IC0gMSk7CiB9
CiAKLVdlYkNvcmU6OlVSTCBXZWJQcmludE9wZXJhdGlvbkd0azo6ZnJhbWVVUkwoKSBjb25zdAor
VVJMIFdlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFtZVVSTCgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3ByaW50Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVSTCgpOworICAgICAgICBy
ZXR1cm4gVVJMKCk7CiAKICAgICBXZWJDb3JlOjpEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIgPSBtX3ByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsK
LSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBXZWJD
b3JlOjpVUkwoKTsKKyAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+
dXJsKCkgOiBVUkwoKTsKIH0KIAogdm9pZCBXZWJQcmludE9wZXJhdGlvbkd0azo6cm90YXRlUGFn
ZUlmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKaW5kZXggYjI2MmRmMzRjODA1ZmFhY2Rm
MjAwNzgxZGI3YWFmZTA0MmU3ZjUyNC4uYjdlMTQ0NDI5NGIyNTEyN2Q0NTJmMTJhNDhiMmZhZTg5
NTgyMGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlByaW50T3BlcmF0aW9uR3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKQEAgLTQwLDcgKzQwLDYgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX0d0a1BhZ2VSYW5nZSBHdGtQYWdlUmFuZ2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBQcmludENvbnRleHQ7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgVVJMOwog
fTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05Nyw3ICs5Niw3IEBAIGNsYXNzIFdlYlByaW50
T3BlcmF0aW9uR3RrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUHJpbnRPcGVyYXRpb25HdGs+IHsK
ICAgICB2b2lkIHByaW50UGFnZXNEb25lKCk7CiAgICAgdm9pZCBwcmludERvbmUoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgc2VuZFByaW50RmluaXNoZWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIFdlYkNvcmU6OlVSTCBmcmFtZVVSTCgpIGNv
bnN0OworICAgIFVSTCBmcmFtZVVSTCgpIGNvbnN0OwogCiAgICAgV2ViUGFnZSogbV93ZWJQYWdl
OwogICAgIEdSZWZQdHI8R3RrUHJpbnRTZXR0aW5ncz4gbV9wcmludFNldHRpbmdzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGJlZDI4N2RmYWM5Yjk0NGU0MzQy
OGYyMjQ3MzMxNjBmMjc0MDYxZWQuLjQ0YWZlZWMyMGYxZWIxN2MyMjU4YjNjNjMyYTE5MzA2OWJm
YjQxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTExNCwx
MiArMTE0LDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5o
PgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQ
YXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiAhT1MoV0lO
RE9XUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCmluZGV4IGRiYzU3OWI5OTVmMTliYzMyOTUxY2M4MDJlNjVhN2ZmODdhMjgxNDIuLjYy
ZjM5MDU3ZTEyZGQzMjA1ZjkwMzUyNTdhZTE0OTBkZWE2YTM2MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNjAsNyArNjAs
NiBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Njcm9sbGVySW1wRGV0YWlscy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5o
PgogI2ltcG9ydCA8YWxnb3JpdGhtPgogI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNp
bXBvcnQgPG9iamMvcnVudGltZS5oPgpAQCAtNzEsNiArNzAsNyBAQAogI2ltcG9ydCA8cGFsL3Nw
aS9tYWMvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0FwcGxp
Y2F0aW9uU1BJLmg+CiAjaW1wb3J0IDxzdGRpby5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJM
RXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0SU9TLmgiCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1
cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAo
TlNVUkwgKm9yaWdpbkFzVVJMID0gb3JpZ2luKCpwYWdlKSkKLSAgICAgICAgICAgIFthY3RpdmVQ
YWdlVVJMcyBhZGRPYmplY3Q6dXNlclZpc2libGVTdHJpbmcob3JpZ2luQXNVUkwpXTsKKyAgICAg
ICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmplY3Q6V1RGOjp1c2VyVmlzaWJsZVN0cmluZyhv
cmlnaW5Bc1VSTCldOwogICAgIH0KIAogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9n
bG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFthY3RpdmVQ
YWdlVVJMc10gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDZiNGE2NmJmYTM4
ZjA1MzJhMGNiZWE1OTAxNDIzZGE1NWZmZDg4NjAuLjNiNWFiYTIzMzgwNDQxMTM4NzhjZTA4YWMy
MGJkMGYyZDU3NjA5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTM1LDkg
KzM1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNv
dXJjZUxvYWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggOGE1NmE5ZTc5OWZhMWZmODI0OWYwMTQw
Y2FkMzgxYTVlMmFjYTgzYi4uZWRmNjUxZmE2ZGZiY2EzMThhOGY2ZjIwN2Y0YjY0OWFkZTFiZjEw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSB7CiAKICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFs
OwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJv
b2wpIGZpbmFsOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFVSTCkgZmluYWw7
CisgICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHNl
cnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Q
cmlvcml0eSA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5OjpWZXJ5TG93KSBmaW5hbDsK
ICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKSBmaW5hbDsKQEAgLTYzLDcgKzYzLDcg
QEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkxvYWRlclN0cmF0ZWd5IHsKIAogICAgIHZvaWQgc3RhcnRQaW5nTG9hZChXZWJDb3JlOjpGcmFt
ZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJN
YXAmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2Fk
ZXImLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgcHJlY29u
bmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
IAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0Jiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmlu
YWwgeyB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kgewogICAgICAgICBGaW5k
T25seQogICAgIH07CiAgICAgCi0gICAgSG9zdEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CisgICAgSG9zdElu
Zm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0IFVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5k
T25seSk7CiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJpbmdIYXNoPiBIb3N0TWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUF0dHIubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQXR0ci5tbQppbmRleCBlOGY3NmYxNjRlMDY1ZjgwMjhlOWE2ZjY3ZWEz
NWQ1MmViN2VjODc1Li4yMTZiYTY1NDgwNzFjNjZkMWE1YTYwNGQ5Y2RhZGMzYWNiMjk5ZWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQpAQCAtMzUsOSArMzUsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVBy
b3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkF0dHIqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQmxvYi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1t
CmluZGV4IDRlNmVkYzU2YTYzZmY0Y2E3Y2Y0YjQ2Y2UxYzc3MjQ4MzkxMTNjNmUuLmRlNTkxM2Nh
MTg2MDBjOGVkM2M5NTJiMWE5NjlkN2VlZWRiNzUyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01CbG9iLm1tCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhh
bmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJu
YWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NDaGFy
c2V0UnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NDaGFyc2V0UnVs
ZS5tbQppbmRleCBkMWI1ZWFiZDc1ZDZmYWI2YzdjY2M3ZDY2YWZmMjNkNGMyMTIwMWQ0Li43YmZm
ZmRjMjFkYmEwODk3ZjY2ZmU1YWUxNDU1M2M1ZWM1MzdiZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTQ2hhcnNldFJ1bGUubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0NoYXJzZXRSdWxlLm1tCkBAIC0zMCw5ICszMCw5IEBA
CiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiBAaW1wbGVtZW50YXRp
b24gRE9NQ1NTQ2hhcnNldFJ1bGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTSW1wb3J0UnVsZS5tbQppbmRleCA4ODA0ZjI0NTAwYmQ2ZThlZjdjMmI2MGU0NzA2N2U2
YzkyZDNlMDAzLi5jNTE3OGFlMjAxODRjNjJmYjNkYTBhZGZlNjg3ZTQzZDRhZTUyYzNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQpAQCAt
MzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9NZWRpYUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFBy
aXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
I2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU0ltcG9ydFJ1bGUqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU01lZGlhUnVsZS5tbQppbmRleCAxNTlhOWE0OTQ5ODdi
ZDU0NTE5Y2JkNjJlNDMwOTAxYTdkMGM4YzllLi5lYjVkY2YyMmY3Y2ZiOGM2MTY3OTk3OWE1YTMy
NDgyNTNmOWY5ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTTWVkaWFSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NN
ZWRpYVJ1bGUubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NNZWRp
YVJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUGFnZVJ1bGUu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUGFnZVJ1bGUubW0KaW5kZXgg
ZjM2MjIzMWNlNWJjZmQ2ZGVhNjVmMTFkMzE0YzQxYmRjOWY5MzQyOS4uYjZiYzI3ODA5OWY4MjQ3
NzE3YjJmOWI3MjkxYmY5M2JmZTgxNTE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01DU1NQYWdlUnVsZS5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkNTU1BhZ2VSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmluZGV4IDM1YTg5MzQ5YzMyMTI4YmY5MzcyNWI2NmZhYzQ2
NjY0ODhkNmUwNTguLjA1NWVhOWVjNGFiNWE1MTIzOTc2OGMzZjc3YjllMDM2OTllNzk3NzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQcmltaXRpdmVWYWx1
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUHJpbWl0aXZlVmFs
dWUubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NT
T01QcmltaXRpdmVWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RGVwcmVjYXRlZENT
U09NVmFsdWUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQ1NTUnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
U1NSdWxlLm1tCmluZGV4IGQ0OGNiM2Y5MjI5ZGRiMmJkNjNkZDk5ZjA5MWZkNWJjNWM2NTJkMGYu
LmExMmIwZThjOGYwNzc3MDE2OGU5OGNiN2FhNzU1MWQ3YWZkNWIyNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbXBv
cnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OkNTU1J1bGUqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KaW5kZXggMmQ5ZmVmZmZjMTU0MDBkOTg3
MzMxMzNjOGEzNzRmMWQ2ZTkzOGVmOC4uYjNiMDdmMzM5ODY4NmRlZGJkMGRkMmM5MjQ2NDE5YTFl
Y2ZkNzY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0
eWxlRGVjbGFyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNT
U1N0eWxlRGVjbGFyYXRpb24ubW0KQEAgLTM2LDEwICszNiwxMCBAQAogI2ltcG9ydCAiRXhjZXB0
aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q1NTU3R5bGVE
ZWNsYXJhdGlvbio+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01DU1NTdHlsZVJ1bGUubW0KaW5kZXggOGE0Y2ZmMzBjZGQ1NTMxMmY3ZGQ0MjdlNTEyMWEw
NjYxZDEwYjkwOS4uMmFlMTkxM2IyZTQzZjgzMTJmZWI0MDg0MmFhOGY5N2UwZmI0ZjY5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVSdWxlLm1tCkBAIC0z
NCw5ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q1NTU3R5bGVSdWxlKj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQppbmRleCA4YzI0MDYw
MTZjMGVhNWNlYmFlZWFkZDZkZmQ5OTU5NzE1MTA4OGFkLi4yNjlmMDI0OGM3YzYwMTQwZTQ3NGI4
ODQwN2IwMGEzODAwNjVmZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQ1NTU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTU3R5bGVTaGVldC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9ydCAiRXhjZXB0aW9u
SGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkNTU1N0eWxlU2hlZXQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlN0eWxlU2hlZXQqPihf
aW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTVmFsdWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0K
aW5kZXggMGM2ZTA3NGQ4ZjNkMTUwNTAwMDkxYjExMWRkOTk4N2M4OGFhNzM4Zi4uYjc3ZDRiODcy
MDY1OTYzMDhjNzMyZjhhZjM0YzE2MTQ4OWY2MjFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NWYWx1ZS5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNl
cHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNh
dGVkQ1NTT01WYWx1ZSo+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRhdGEubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQppbmRleCA4YzNiNGQ0YTU4MmZlOTQ3YTBjMzhkMDY0
ZjlhMTI5MWI1OTljOWMzLi5iMzBlOTU3OTQwZWQ5NjY1NzViYzYzNDk0NGU3YTkxNjBlNTI5MmY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5t
bQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DaGFyYWN0ZXJEYXRhLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUNvdW50ZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q291bnRlci5tbQppbmRleCAyZDFlNTY1N2VhMmQ2NjhkMjAwNWI1M2M0ODU5ZWRkOWQ1MmY4YmY4
Li4zMDg3MDFlNWI0ODE4Njc0NzMyM2MxOGRlZWQ0ZTQzMGFkYWMyYjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1w
b3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpEZXByZWNhdGVkQ1NTT01Db3VudGVyKj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXggYWQ1NTg1MjlhYmI3ODNhODFkM2Y5ODMy
ZmM0M2Y5YWJjM2EyM2E1MC4uM2IwNGQzOTMzZDI0YWFlMzMzNWJkODdiODEwNjlmNGNjZTdiZDYx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtODIs
MTIgKzgyLDEyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVHJlZVdhbGtlci5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aEV4cHJlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUv
WFBhdGhOU1Jlc29sdmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRoUmVzdWx0Lmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTURvY3VtZW50RnJhZ21lbnQubW0KaW5kZXggOTZkMDMyOWI0OWFlNjE1YjcxZWZhYTRjMDVi
MjY5MTFkZTg1YzE3ZC4uMmVlMmNmODRjNjM5NDhjMDAwMmY4YTY1ZDhjZDY2OWE3Njc5ZDI0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21l
bnQubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudEZyYWdt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudFR5cGUubW0KaW5kZXggZTIw
MTE3NmE5MmRjNjY2NDBjZDUwMWVmN2VjMjBhY2Q4NDY0YWY5Mi4uN2IyZTAzZWM1MjFjZGYwNzQw
MzI2NTkwMGU2ZDNjYjA2MzQyYTNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NRG9jdW1lbnRUeXBlLm1tCkBAIC0zMiw5ICszMiw5IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVkTm9kZU1hcC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RG9jdW1lbnRUeXBlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2ZW50Lm1tCmluZGV4IDYw
Y2RiNmU1N2Y1YmUxNzYwZjRkOTE1ZDM4YWU0YTMzNTU3NTE3Y2QuLjJkNjE1NGIxZTA2NDZkOGEz
MWMwYzAzMGVjZTYzMzNmYjUxNmMwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01FdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
RXZlbnQubW0KQEAgLTMzLDEwICszMywxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
T2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2ludGVybmFsKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmlsZS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1tCmluZGV4IGVkYTg3ZmZmMWM0ZTRiNWE5YTg3
YzZkYjhiNDAyYWM0YjI0YjI4N2YuLmZkYzU0MTNiOWE1ZjQ2YjllZGE1ZmMwYTdiMzZhZTVmODVk
M2RiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1tCkBAIC0zMSw5ICsz
MSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkZpbGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkJs
b2IqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTEFuY2hvckVsZW1lbnQubW0KaW5kZXggNDQ2MGYyN2M2ZGZkZDMwNjU2MGMxMjRkOWQ3
OTk0MWM4ZDVjODUyZC4uYzZjMDFiZDdhNjk2MTc3MGNlOGZmMThlNTc2YzEwOTg1ZWZmNDk0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBbmNob3JFbGVt
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQW5jaG9yRWxl
bWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxBbmNob3JF
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBcHBsZXRFbGVt
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50
Lm1tCmluZGV4IGE4NDU0MmRhNDdkNjQ0ZGMzNjJlOGZkMWRmYjUyZDA2YjIxM2E2NGEuLjI2Yjhk
M2M1OGJlYmQyZDdkNWRiMmU4ZGNjY2UyNjlhMGY5NWJjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFwcGxldEVsZW1lbnQubW0KQEAgLTMxLDkgKzMx
LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEFyZWFFbGVtZW50Lm1tCmluZGV4IGM0YWIyMzIwMjc1N2Vm
YzIyNmQzNDdlNTBhMjEwZGQ0M2UxMjA1MmUuLmI5YWNhODk2YTRjMDkxNzY4Y2ZhMDMxOGI2YzZi
N2EwN2VkNTc1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQXJlYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxBcmVhRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
TmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhU
TUxBcmVhRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQlJF
bGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQu
bW0KaW5kZXggY2Y1YjNlMDg4NDEzOWM5OGU0Yjc4Y2IzNzhkZjFhNjdjNDM1OThiOC4uNDMyNDY0
YjhkZDJkNTYyNjMxMDE4OGM3MTgwNzI4NTkxNjMzOTM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNp
bXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MQlJFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MQmFzZUVsZW1lbnQubW0KaW5kZXggNTE0YjcwOTFiNDNkMTIyNzcyZDA3MGM3N2U2
YTExZGY0ODAwNmMxMy4uYWZlM2I2OTkzYjYzODZkNzM5ZTE0Y2ZjYTNiN2M5ZGY2OTQxZTY2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VFbGVtZW50
Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEJhc2VFbGVtZW50
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5t
bQppbmRleCBhOTljMGI2MjM4MWYyNTFjMjFlODA3Njg1ZmI5MzUwMzA2NzExYTRkLi4yNjMzYzgw
ZjcyNGQ4Nzk0NGRlYmY5MDhmMDM5MmZlN2JmY2RhNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5tbQpAQCAtMzEsOSAr
MzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVW5rbm93bkVsZW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxVbmtub3duRWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJvZHlFbGVtZW50Lm1tCmluZGV4IDY5
NTI5M2I0MjQ2M2ZiZTY2Mjg3YjA2NDc2NGVmNjlkZmU1OGY3MDQuLmRmNjEyMDg2NmM2YmM2MmM0
MTIyMzM5N2ZmMWNiMzBjNmE2ZjQ0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9k
ZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MQnV0dG9uRWxlbWVudC5tbQppbmRleCA5OGFhMjdjNTYyNzVjNTQzY2Q0ZDllMmZiYjI3
YzE4ZGI5ZDgyYWI1Li43Yzc1OTVkMzE0ODMwMzJjZmFlYmZlNDAxYzE3MzIxY2I5ZGJkNDJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJ1dHRvbkVsZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCdXR0b25FbGVt
ZW50Lm1tCkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL05hbWVOb2RlTGlzdC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEJ1dHRvbkVs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENhbnZhc0VsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENhbnZhc0VsZW1lbnQu
bW0KaW5kZXggMGZkNjBhNmRhOGFhYWFiZTc0ZDJiZDJiZDk0NzliODE0YmQ5NjM1MS4uMThiMzEz
ZWI0NGFjMDM2YjAzN2Y1OGE5NDIzNTc2OWJlZGQxMDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ2FudmFzRWxlbWVudC5tbQpAQCAtMzEsOSArMzEs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
dHJpbmdBZGFwdG9ycy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0KaW5kZXggZTM0NDA5OGNiNDhl
MmQzOTBmNTQwYmMxZDUwZTY5NzNjYzQzZDdmMS4uYWFjMTg1NDlkM2Q4YjQ3ODEzYmMxNTRiMWNh
NWM0MTE3M2I1MzZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxDb2xsZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQ29sbGVjdGlvbi5tbQpAQCAtMzUsMTAgKzM1LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL05v
ZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SFRNTENvbGxlY3Rpb24qPihfaW50
ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
RGl2RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRGl2RWxl
bWVudC5tbQppbmRleCAyOTM2YWZhYzAyNTMxODU4ZDFmYjhhOTRkMjcyZmZmOTVjZTk0OWRkLi45
Y2IwM2EwMTE5NmI3ZjQ0MTU0NTI3YTdjNWMyNTViN2QzYWU5Y2JlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERpdkVsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEaXZFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTERpdkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0
PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxEb2N1bWVudC5tbQppbmRleCAwMzc1YTNjZjRmZDY3MWY2MzM2ZmJiMzdj
OWJiN2M5YWVmMDE3NjNkLi44OGQxNDJlYWRhODQxMTM3MDUwMTQ4ZmNlNGVjODc1ZjAyMjdiN2Ri
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRG9jdW1lbnQubW0K
QEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTERvY3VtZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRG9jdW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1lbnQubW0KaW5kZXggYTVlMGNkMzE5MTNi
ZDM4NzMyNjYzNWU3OTM1ZjRhYTg5ODE5YzZmMC4uMmZlMjRjNzA3NDk3ODg3MjUwODRmMzY2Zjkw
YjlkODQ0OTc2ODA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
RWxlbWVudC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVz
dWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRW1iZWRFbGVt
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQu
bW0KaW5kZXggNmI4MmJlMDhlODIxNjZjMzE5NDBhMzQ4ZWNmOTcyNTgyNTljYzlkMC4uMGQ2ZDg4
MTQ3MWE4MTVlMjAzYTBjNDU0ZDBkNzY2YTYwOWQ3ZTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhl
Y1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQppbmRleCBlYTkyYTAxOWE1
MDY1Njk1YzY0NDZhZGE0OTM5NWY2ZmEzYWUyNjY2Li4xZmQ0ZDgwYmM3MThjOTU2YTM1ZDZjOGJj
MGEwN2ZiMDJhOTk2YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRpdHlTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRmllbGRT
ZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9udEVsZW1lbnQu
bW0KaW5kZXggODBkZTQ5MDU0OTI0ODAzM2EzMmJmY2EwMzhiM2FmNzcxOWM2ZmI3Ni4uOTEwZThm
N2Q0NjZmMWRlM2E3OGVjZDMyZmQ4NzcxYmI3ZTg0ODJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvbnRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZvbnRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRm9ybUVsZW1lbnQubW0KaW5kZXggYmZkZTFkYWQ4MTRlZGRjYmVhNzY1
N2FmYjc4Y2QzNGY3YmVkZDU2Zi4uZTg2MjZiYTM1YWEzMzdmNGI0YzdjZmExYmQ4MzNiOTVmZWVl
NzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3Jt
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvcm1F
bGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5t
bQppbmRleCA2MDBmNDRmODliYzQzOTk3ZGM0MGUwMDZkMjZjYzM1MmUzODFhYWYxLi5lYjVjNTVh
YzJiNjdhZjRkZWViZGY2MTVhMzc0ZTI1NzNlYjMzYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0
PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCmluZGV4IGYyZjIwN2YwNTI0
OTdjMjE5N2I3NDM0NzdjM2NiYjMxMjZmZmM5OGEuLjY5Yjk1YTA2Zjc4ZDg4Njg0MGUzNjYwNmI3
NzE1YzI5MDYxNjQxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxIUkVsZW1lbnQubW0KaW5kZXggYjI1NzhhYTJkZjNlZTg5MDA4NTYxMmZjMjE3NzM1ODM1
MjY1Yjc2ZC4uYTcyNmJkYzFlMDIyN2FiMjZjZjAwOWI3MzY3MzQxODdmZTQwMmFmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KQEAgLTMx
LDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSFJFbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZEVsZW1lbnQubW0KaW5kZXggYmVmMzlhZTU3MDZm
OTQ5YWNkMjdmNDFiNWQwYmIyN2VlZTJmZDJhNy4uOWNhNGI4ODBiMWFhYWJhZDhjMzBhOWViMWQ2
ZTQwZTMzMGJlZDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxIZWFkRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEhlYWRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTEhlYWRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxI
ZWFkaW5nRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVh
ZGluZ0VsZW1lbnQubW0KaW5kZXggODExYmIxODA0ODg2MWY4YjE3MTJjOTM1NmMxZDgyNzZkMDEx
MzE4OS4uYTJkZmI2YTNlYzFlYjA1YzhjYjMxMTEyMjIwNDZhMDAyYzc5ZGM5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhlYWRpbmdFbGVtZW50Lm1t
CkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEhlYWRpbmdFbGVtZW50
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSHRtbEVsZW1lbnQubW0KaW5kZXgg
Mjg3Y2U3Zjk0ZmYyZTljOTY1ZjM1ZmRlNDMzNTBjZDRhYjNjYmMxZi4uZWJjM2NmZTc0ODYxNDI2
MzNkMzM5MjZkNWRlMTNlNTlmZWMxOGNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SFRNTEh0bWxFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCmluZGV4IGYzODJjOWVmOGUwOTY5MjNhNjMwZTVkYmJk
NTk3MjY3ZjFlMTY5ZGYuLmUzMjFiNGY3NmQyMTZlMjNhM2Q5ZmEwNDNjY2VmNzg4YWMzN2E3ZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElGcmFtZUVs
ZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSUZyYW1l
RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW1hZ2VFbGVt
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQu
bW0KaW5kZXggZmM5MTk1M2NlY2MyY2FlZWU3NjJiMzQ1NDIwMjQxYmJmOWIzNzE1MS4uZWJhNGVj
OTIzMTZjMzljZTAxMzRjZGIwMDVkMTYwOTNiMDMyMmRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5wdXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KaW5kZXggODM2MzczNWQ5NDc0
YTg2YmE4YTgwNWUwZjFhM2ViYTZmODRkNGJjZC4uZDczN2E1NTdlOWEzZWMwMzUzNTNjNTEyNjkw
ZGJlNzhlYjBlODQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxJbnB1dEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxJbnB1dEVsZW1lbnQubW0KQEAgLTY0LDkgKzY0LDkgQEAgQGVuZAogI2ltcG9ydCA8V2Vi
Q29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxMSUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TExJRWxlbWVudC5tbQppbmRleCAyNjlkMWE1NGFkZDhjZTJiZDRmZWFmNmE0MmE2Mzk4MjA4NWZl
ZGEwLi5hM2NmM2ZhOGRiZmE4Y2VhZDdhMjlmYTk4YzI3N2E4NGQ5YmYwZGVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxlbWVudC5tbQpAQCAtMzEsOSAr
MzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxMSUVsZW1lbnQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCmluZGV4IDUxZjU2MGMwOTc5MTg5
M2FlNjZkYzU1MmQyZjk2OTdkMmZiZjAyODEuLjgxMzkwMDBlYWVhNGNhN2QwZWU5MmI1ODBmNGNm
MDgwMTdhMTE2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MTGFiZWxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MTGFiZWxFbGVtZW50Lm1tCkBAIC0zNSw5ICszNSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTExhYmVsRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRl
cm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
TGVnZW5kRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGVn
ZW5kRWxlbWVudC5tbQppbmRleCA5MzQzY2E2ZTlkZmFmNzM3ODA2NTdjZjU0MmFlMTIyNTQ1MmQ4
YjBjLi5kNGYxZjM2YzVmMjRiMTk0YTkyYzgyYjEwY2RiYTFkOGUxMGU2MzVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMZWdlbmRFbGVtZW50Lm1tCkBA
IC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExlZ2VuZEVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMaW5rRWxlbWVudC5tbQppbmRleCAyMGY0
YzAxNTE1ZGViNjBlZTRkYjM3OWEwMDVlNTI3NzliOWM1MjIwLi41Njg3YzQ1YmJhMGZhYzc0YjU0
Yzk0ODVkOThhZTQ5ZThmNzM1YjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MTGlua0VsZW1lbnQubW0KQEAgLTM2LDkgKzM2LDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVTaGVldC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxNYXBFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxNYXBFbGVtZW50Lm1tCmluZGV4IGI5MjFiM2E1MGVkMDUxNTAzZjNkNzdjNDUwYmQzOTcxNmFk
NGM5NjAuLjJjYzkwY2Y4NjM0ZTM5NmRkMDFmNGEwYzExZjA2MTBlY2Q2MGU4ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFwRWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcEVsZW1lbnQubW0KQEAgLTMz
LDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWFwRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcnF1ZWVFbGVtZW50Lm1tCmluZGV4IDYxYWI0
YzYyMzMzZjk1NmUwNzI0MzYyNzcyZmMxZmZmY2E0NmEyMzguLjk2MjNlZGIxNmFjMDk5YjQxZGM5
NjM4NzU5MDQ0YjQ3MWI5MGJjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KaW5kZXggNWJjNzQ1NmY2MGNmNzYxMmI1MDZlYmZk
M2RjODlmYTQ3YWVjYTQ2Ny4uNzgzYTVhMTVlOWRlMWM3NWU3NGRiODk1MmI0MTk5MjAxYTk0Mzdk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVs
ZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVs
ZW1lbnQubW0KQEAgLTM4LDkgKzM4LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFFcnJvci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaW1l
UmFuZ2VzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWV0YUVsZW1lbnQubW0K
aW5kZXggOTk4NzAwMmFmN2NiZTNkMTRkNjdjZjhjNGYzYjgxZGUzZDNiZjI2Yy4uNzhlZDZlOTNj
ZGZhYTViOGM5NWY3NzJmMjAzZjM4NDRkODBlOTllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tCmluZGV4IGQ4ODVmY2ZkMDgwMzZjNzM4MjkyZTAwNzA3
MjFlZTVmODJlMzcxOWEuLjYwZjllNDVjN2IxZTM0YmMwNjJlNmE0ZWIzMTI3NGFmNDY1YjI1NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTW9kRWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1vZEVsZW1lbnQu
bW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTW9kRWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT0xpc3RFbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KaW5kZXgg
YTMyYzJkOGJjOTcxMjE3MDdiNmUwZTM3OGU3NDUxNTIyYzU1ODczMC4uYjdmYTU5YjZlNjY5NWY2
NmM4OTY5YjFmYTQwNWU4ZTRhMWRlYWVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTE9MaXN0RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE9MaXN0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbQppbmRleCA3YWI3M2Y1NzI5NDMwZDNi
ZjIwMjdlZGJjNWU0NjEwMzE0YmRjYTE1Li5kYjIzNmQ4Yjk1ODZiOGI3MmFjOGU4OGNjZGYyYjQ5
MGFiZWRiNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE9iamVjdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxPYmplY3RFbGVtZW50Lm1tCkBAIC0zNyw5ICszNyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxPYmplY3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxPcHRHcm91cEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTE9wdEdyb3VwRWxlbWVudC5tbQppbmRleCA0ZTUxNWRhZjU1YmI3Y2M1Y2MwMzhiYjUyNDA0
YjZlZWYxYjU1Y2RiLi4xNzcxYzJlZmUzMTg2MmQ3YjE1NTllMGQxMjQ3NTNmMTNmMzcwMWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3VwRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3Vw
RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MT3B0R3Jv
dXBFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MT3B0R3JvdXBFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxPcHRpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxPcHRpb25FbGVtZW50Lm1tCmluZGV4IGZkZWM1NGVlMWQ2NDc4MWU2NmU4ODMzNGM1MmNmNTQx
OGJjNzkzZGYuLjE0NTM1MWQ5YjZmZWUzZTNiMTJhZjMxZjA0YmMzMDM3ZmRhNzc5YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uRWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbkVsZW1lbnQu
bW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE9wdGlvbkVsZW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPcHRp
b25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25z
Q29sbGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9u
c0NvbGxlY3Rpb24ubW0KaW5kZXggZjc3MGE4YTE0ZDVhODNkNzY5NWU0MzcxOWVlMWFmNGRjYjY2
NGNhMS4uMzkxMjEwMTU2MWY1ZmZkZjg5NDFlOWE3MWJmYmU0YjgyOGY4NGIxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLm1tCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9i
akNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3Rm
L1ZhcmlhbnQuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SFRN
TE9wdGlvbnNDb2xsZWN0aW9uKj4oX2ludGVybmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tCmluZGV4IDZjNTExZTkx
NjY0Y2U5MjNjYzkyODRhMjU1YTExZTZhNzkzYjNmZDQuLjFhNTQzYjNmZDNlNmZlNzI4MjQ2YjJi
YThjMTJmZjI2NDBmNjYwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTFBhcmFncmFwaEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxQYXJhZ3JhcGhFbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhbUVsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQppbmRleCA1ZmIwY2VjMjdm
YjcwOTdmMDkxNWVlNWNkZmM0MThhODFjNTk0ZmU4Li5lZGE2NTMyYzVkMmE3ZWZlZmMxNDliMGI3
NjZhZTlkYjhkYmM5MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFBhcmFtRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFBhcmFtRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MUGFyYW1FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFF1b3RlRWxlbWVudC5tbQppbmRleCAzNzQ5YzE4MDMzMGZiMGUzNWNkNTQ1OTExYzA5
ZTc3NDU4NzVhZmQwLi5iY2Q3ODY2Y2Q3NmM3M2VhYzY0NGUwNGY4NDM3ZTUwMzBmNWEyZjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MUXVvdGVFbGVtZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUXVv
dGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTY3JpcHRF
bGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTY3JpcHRFbGVt
ZW50Lm1tCmluZGV4IDMzNDRkNTQ4ODg0OWMxNGM5MWM1YTY5M2U3OWFkN2U2NzBlMDlmZjQuLmU0
YWMwMTc4MDJkYTI1MTRmNGNkZmU3ZGQ3YzkyMDQ5YmRhYjAxZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2NyaXB0RWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNjcmlwdEVsZW1lbnQubW0KQEAgLTMxLDkg
KzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFNjcmlwdEVsZW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxlY3RFbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxlY3RFbGVtZW50Lm1tCmluZGV4
IDc1ODE0MWRlM2ZiN2Y1YWJmNmUyYTI4ZmE2YWVhMTQ2NThjNjY5NjIuLmJjZmJlY2FjZDM4NDkx
ZmE3YmM5OTU0YjNkZTkwMzAyZjkxYTY2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MU2VsZWN0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW0KQEAgLTQ0LDkgKzQ0LDkgQEAKICNp
bXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MU3R5bGVFbGVtZW50Lm1tCmluZGV4IGE0NTI3ODIwODBiYjYzOWM0ZTY3ZjQ1NzlmOTM5
NDY1NjhjNWNmMTAuLjgwNzZhMzM4ZWUxZGMzMGFmMWMyOGE3NDg1ZWI2NDdkOGVlMzdhZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50
Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1N0eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQubW0KaW5kZXggYTc4MTFiZDY4YjM4OGI4ZDczMzFkNDUzYzk2Mjg2MDhhNWEzNmUz
Ny4uNDgzZjk0ZjEzZmJhZDE1OTdlNjczNmFmNzZjYTRjMGYxMDZlZTg5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDYXB0aW9uRWxl
bWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDYXB0
aW9uRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0KaW5kZXggZGQzMDE2YjNhYTYzYTRmOWIwMzE0
NDA3NWYwNWU1YTk4MDU1OGVlMC4uOWFkOTE0NmU4NGEyNzgwNjk5YmNhNzNkNTQ3Y2JjYTgyNTBj
M2U1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJs
ZUNlbGxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
VGFibGVDZWxsRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MVGFibGVDZWxsRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNv
cmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCmluZGV4IGFmMjY3MTRkODRmMzBhYWRj
YWUxNDJiZTg0NmQ2NmNlNmUzNWU0MGEuLmM5ZDk4Y2E1MTRlMWFiYTdiMGVmNDg5YzNkYWYyYmU3
OWM3MTJkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
VGFibGVDb2xFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MVGFibGVDb2xFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0hUTUxUYWJsZUNvbEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNvbEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNv
cmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCmluZGV4IDRjNjhjNGI2YjRjYTVkNmYxZjYxMGVj
NWFjMDdmYTZkMzQ3MzIwYzkuLmJlZGRhZjUwZmFhYWI0YzJkMzZmYTVkMTI4ZDAzMTY1ZjIwNGI3
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVF
bGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVF
bGVtZW50Lm1tCkBAIC0zOSw5ICszOSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxUYWJsZVJvd0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFRhYmxlUm93RWxlbWVudC5tbQppbmRleCAyNDA5NmE4ZDk5NDdmZDdiN2EyNGZkMTY1NzMx
M2E5ODQwOTkzOGNjLi4zZGZlZGMzM2VmY2MxNWFhZTE0ZDQ0MTFmZmVlNzA2NzczZDY4YTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93RWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93
RWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVS
b3dFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MVGFibGVSb3dFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tCmluZGV4IDk4YjE5ZmEzMTU0MDM0ZGFkOWY2
MzBiMzQzMjIyODgyODM0ZjMxODguLmMzMmMyZTcwMjczNDNkNDcwOTMwYTY3NzNiMjk4ODhlZDRm
NmZlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQppbmRleCAyNDg2Zjc3YzNh
NWU3NTA0MjcxMDJhZDI3ZTI4MmI2YjY1YjRlZmU5Li4yODM5MTcxNzg1NTk5ZjkyODU4NGFkNTIx
NThlMGYwNWQzNDEyMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFRpdGxlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFRpdGxlRWxlbWVudC5tbQpAQCAtMzAsOSArMzAsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MVGl0bGVFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFVMaXN0RWxlbWVudC5tbQppbmRleCBmOThmOGU4NTJiZDQ3YTE2MjkyYjk3MzQwOTAx
NTcyOGU0NWYzM2ExLi5mY2Y5MDU0YWIwZjEyMTY3YWVlMjA2Y2FkOGFkYTFkMTM5MDdhM2NjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVUxpc3RFbGVtZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVUxp
c3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxWaWRlb0Vs
ZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVu
dC5tbQppbmRleCAzMzU4MDY1MDM5Mjg3MTliOTViMGY3MTY3ZjI3MWE5MDFlODVjMTE5Li40NTdl
YWZiYTBkMGNlNTJkMDNmNTUwZjA0NzhiMzRiMDhlODczZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5tbQpAQCAtMzQsOSArMzQs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQppbmRleCAzZmQ4ZmNlMzY0NjZm
MzdhYjlhMTk0YzBhMzBjMWMzYzQwNTJmNjNjLi4yYzAxZjNlNjEwNTUyNjk3ZTQ1MTM3OTRkYjEz
OWEzNzlkMzJjNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
S2V5Ym9hcmRFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5
Ym9hcmRFdmVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpL
ZXlib2FyZEV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxp
c3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tCmluZGV4
IDllODE2N2ExNmE0NGIzMTM3YjIzZWRiMWE4ZWVkNDU5NDlkMjdkOTguLjg2NTFmYzk3YjQ4NzEx
NWUyZDRjZGQ3NzE0OTBkZjNmZDAwYTVkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU1lZGlhTGlzdC5tbQpAQCAtMzMsMTAgKzMzLDEwIEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhTGlzdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpNZWRpYUxpc3Qq
PihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZl
bnQubW0KaW5kZXggZjY1NmE4YWRlNTUzNWE5MGU4N2FiY2FhYjlkODA3OTk2M2E4MTIwNi4uOTVm
MjIzNWQ0NTcyZmIzOTZkNjI0YzM5ZmM1MDY5YjMwOTZkYzM5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KQEAgLTM2LDkgKzM2LDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpNb3VzZUV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01N
dXRhdGlvbkV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9u
RXZlbnQubW0KaW5kZXggMGY0ZWYxNjc1YTFjMDNhODdhMTBkNjFlM2ZiNzExYWFmMTFjNzZiZC4u
MmZiZjQyMmFlODVkOTljNjY4MGEwZWQ1OGNkYmEzMjdmN2VkOGZjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQubW0KQEAgLTMyLDkgKzMyLDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvTXV0YXRpb25FdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9O
b2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpNdXRhdGlvbkV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NTmFtZWROb2RlTWFwLm1tCmluZGV4IDU2ODE5MzMyYmI2NzQyZTFlZmVkZDAxZTJjNzUz
MzU3N2Q3MWUzZjguLjI5MTgxOTA5MGU1ZTI1MDM1M2IzMDc0YWY5NmJkMjM4ZmRiOGQ1NGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5hbWVkTm9kZU1hcC5tbQpAQCAt
MzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL05hbWVkTm9kZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNF
eHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOYW1lZE5vZGVNYXAqPihfaW50ZXJuYWwpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLm1tCmluZGV4IDlhZGM0MGIwOGFiYmM4NzcxYjNjOGI4YmRmZWUwMTlmYzgxY2UzMjUu
LjIwMGU4MmEzMTAzYTY3MWQwNjE1NzExMmM3ZGM5NzI0YTU1NmUyZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5t
bQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVTaGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdl
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tCmluZGV4IGYyODli
M2EyNmU4YTRmNTY2YjY3MjRmYjhkNjE1MTE1OGJkYjYyZTguLmVmMmMzNTgwOWIwYjY3NjNiNDc3
NDU2MThjM2IyOTU2MDZkOTk5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmFu
Z2UubW0KQEAgLTM0LDEwICszNCwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJh
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWlu
dGVycHJldF9jYXN0PFdlYkNvcmU6OlJhbmdlKj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCmluZGV4IDdhMWE0YTg3ZmM2ZWYyNDlh
Y2I5ZDA3ZGUyNTRiZGIyYjBhM2M5MzMuLjBlODc4NWM3ZDJjMDY3YzQ4NDcyMWVkNTM3ODc0ZDdj
NTVjYjBhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHls
ZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0
Lm1tCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4
dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlN0eWxlU2hlZXQqPihfaW50ZXJuYWwpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0KaW5kZXggMzBlN2RhM2MwYzk4OTczZDQxMjVh
NjdlZGRjZDI2ZDljZWU3NWNiNS4uZjczMGFkNmRlYmFmYTA1YmUzNzI0NDBmOTZlNjAxYWVmZjRk
ZjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0KQEAgLTMwLDkgKzMw
LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9k
ZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01UZXh0RXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2
ZW50Lm1tCmluZGV4IGM1MDI2ZWI0YjJmODYwMTMzMjg3YjlmMmUwNThhNzYxZmIyNDIwNGYuLmNh
MDZmZDdjMGZmMGUwMDFiOWU4ODQwNmQwYmE3ZWFjY2E0MTRhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0RXZlbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OlRleHRFdmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NVG9rZW5MaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRva2VuTGlz
dC5tbQppbmRleCBkYjhmNTVjZTA3YWE2NGZkOTI5YTVmNWY4M2ZmMGNiY2NkZDc3NDY4Li45YzRh
YTg5NjMwZDc4MTQ0NDJiMTNjNmJjMjVjOGU0YjdmOTZiYjYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0KQEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9y
dCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
RE9NVG9rZW5MaXN0Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUV2ZW50Lm1tCmluZGV4IDE3MzI0MzE5MGEzMmIxNWM0N2ZmZmUwMDJiM2JhNjE2N2IxNzc4
ZGIuLmY4MmNmNThhN2VkNGFiYjk0Zjg4NWYwZWU0YWZmYmMzZjlkZTAxZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCkBAIC0zNCw5ICszNCw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVUlFdmVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6VUlFdmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NWFBhdGhSZXN1bHQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhS
ZXN1bHQubW0KaW5kZXggYTFlZjU3M2Y4ZGQyYzEwYjY4NmMxMTk1MDlhNzAyNDJkN2NmNTJhZi4u
ZGFjZjFkODZkZjhlNzNjMWJiMDQ0Y2RkYThiNDkxNTFhNGJmZmZkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aFJlc3VsdC5tbQpAQCAtMzEsMTEgKzMxLDExIEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhSZXN1
bHQuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6WFBhdGhSZXN1bHQqPihfaW50ZXJu
YWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlz
dG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJ
dGVtLm1tCmluZGV4IDhmMTdjM2FmODlmMmIyNzRhYjQ3NTQ1ZWE5ZjllYWFhNmM5ZWNkZmMuLmIy
YjRhZThhMzFjODM1MTFkOTA3NTEwZDA4YWE4MGJhMDAxODE4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtNDcsMTMgKzQ3
LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VD
YWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQppbmRleCBmM2JhYWVhMmZhMTEzZDhlNDc3
Y2Y2MzA4MzVlMDc4YWQ0MGE3Y2E4Li5lZDI4NGI0NjdiODRiYjZmZDg1ZTA0YTQzNzg3NmNkZTRh
NmU5YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJM
RXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRy
YXMubW0KQEAgLTMzLDE0ICszMywxNSBAQAogI2ltcG9ydCAiV2ViTG9jYWxpemFibGVTdHJpbmdz
LmgiCiAjaW1wb3J0ICJXZWJOU0RhdGFFeHRyYXMuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNV
UkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9M
b2FkZXJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+Ci0jaW1wb3J0IDx3dGYvQXNzZXJ0
aW9ucy5oPgotI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx1bmlj
b2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KKyNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBAIC0xMDksNyArMTEwLDcg
QEAgLSAoTlNTdHJpbmcgKilfd2ViX29yaWdpbmFsRGF0YUFzU3RyaW5nCiAKIC0gKE5TU3RyaW5n
ICopX3dlYl91c2VyVmlzaWJsZVN0cmluZwogewotICAgIHJldHVybiB1c2VyVmlzaWJsZVN0cmlu
ZyhzZWxmKTsKKyAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhzZWxmKTsKIH0KIAog
LSAoQk9PTClfd2ViX2lzRW1wdHkKQEAgLTEzOSw3ICsxNDAsNyBAQCAtIChOU1VSTCAqKV93ZWJr
aXRfVVJMQnlSZW1vdmluZ0ZyYWdtZW50CiAKIC0gKE5TVVJMICopX3dlYl9VUkxCeVJlbW92aW5n
VXNlckluZm8KIHsKLSAgICByZXR1cm4gVVJMQnlSZW1vdmluZ1VzZXJJbmZvKHNlbGYpOworICAg
IHJldHVybiBXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhzZWxmKTsKIH0KIAogLSAoQk9PTClf
d2Via2l0X2lzSmF2YVNjcmlwdFVSTApAQCAtMTc1LDE3ICsxNzYsMTcgQEAgLShOU0RhdGEgKilf
d2ViX3NjaGVtZVNlcGFyYXRvcldpdGhvdXRDb2xvbgogCiAtKE5TRGF0YSAqKV93ZWJfZGF0YUZv
clVSTENvbXBvbmVudFR5cGU6KENGVVJMQ29tcG9uZW50VHlwZSljb21wb25lbnRUeXBlCiB7Ci0g
ICAgcmV0dXJuIGRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGNvbXBvbmVudFR5cGUpOwor
ICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGNvbXBvbmVudFR5
cGUpOwogfQogCiAtKE5TRGF0YSAqKV93ZWJfc2NoZW1lRGF0YQogewotICAgIHJldHVybiBkYXRh
Rm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRTY2hlbWUpOworICAgIHJl
dHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudFNj
aGVtZSk7CiB9CiAKIC0oTlNEYXRhICopX3dlYl9ob3N0RGF0YQogewotICAgIE5TRGF0YSAqcmVz
dWx0ID0gZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwga0NGVVJMQ29tcG9uZW50SG9zdCk7
CisgICAgTlNEYXRhICpyZXN1bHQgPSBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYs
IGtDRlVSTENvbXBvbmVudEhvc3QpOwogICAgIE5TRGF0YSAqc2NoZW1lID0gW3NlbGYgX3dlYl9z
Y2hlbWVEYXRhXTsKICAgICAvLyBUYWtlIG9mZiBsb2NhbGhvc3QgZm9yIGZpbGUKICAgICBpZiAo
W3NjaGVtZSBfd2ViX2lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb0NTdHJpbmc6ImZpbGUiXSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250ZW50
VVJMUGF0dGVybi5tbQppbmRleCBlOWVkNWNiZWIyOTVkMDZkYWFkOTY5NTcyMmEzNGYzZWVlNTU2
NjhkLi5iNzI2NTgzZjk3NGNkZGY3NjYxN2YyYWQxOGQzOThmNDAzYjkxM2JlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5tbQpAQCAtMjQsOCArMjQsOCBAQAogCiAjaW1wb3J0ICJXZWJVc2VyQ29udGVudFVSTFBh
dHRlcm4uaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0K
aW5kZXggYWM3YTRiYjMxOGM1NWY5MzU5Yzk4ZTBhOGJmOTZkMWU2ZTQ0MzYzNi4uODgzYjkyMDcy
MDdlMjQ4ZGQ0N2EzMGJjMGM3NjIxZTcwNjhiN2MzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNTgsNyArNTgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9Q
cm94eVNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9ucHJ1bnRpbWVfaW1wbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ydW50aW1lX29iamVjdC5oPgpA
QCAtNjYsNiArNjUsNyBAQAogI2ltcG9ydCA8dXRpbGl0eT4KICNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBleHRlcm4gIkMi
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAwZTE4OThmMDMwNTk5NzA0M2U2NGY2YTI5YWY2ZmNk
M2Y5OWM1ZmE3Li4yYmM5NzhkMzQwM2Y3M2YxYzA2M2RmMjUyMzQzYzViODNlYzEzMDZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFdlYk5ldHNjYXBlUGx1Z2lu
U3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0+CiAKICAg
ICB2b2lkIGNhbmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0aEVycm9yKE5TRXJyb3IgKik7CiAK
LSAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMKSB7
IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0KKyAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29u
c3QgVVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0KIAogICAg
IHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFz
cyBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtPgogICAgIGJvb2wgd2FudHNBbGxTdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gbV9kZWxpdmVyeURhdGE7Ci0gICAgV2Vi
Q29yZTo6VVJMIG1fcmVxdWVzdFVSTDsKKyAgICBVUkwgbV9yZXF1ZXN0VVJMOwogICAgIFJldGFp
blB0cjxOU1VSTD4gbV9yZXNwb25zZVVSTDsKICAgICBDU3RyaW5nIG1fbWltZVR5cGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKaW5kZXggMWE3MGJjZWI2NWRmNTcxMmY2NTA1NmEyNGY0ZTk5NTkyMjMxY2I2
Zi4uMDRkMjQ2ODE3ODUzNjFlYjgxNjBhMzc1MjM4YmE4ZTQ4ZTk0YzY5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKQEAgLTIyNyw3ICsyMjcsNyBAQCBjbGFzcyBXZWJDaHJvbWVDbGllbnQgOiBwdWJsaWMg
V2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKICAgICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKICNlbmRpZgogCi0gICAgU3RyaW5nIHNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmlu
ZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAg
ICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNp
emVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYpIGNvbnN0
IGZpbmFsOwogCiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpp
bmRleCA1ODc4NGI5OTc5NmViYTBiNzkzMWQ3ZTJhNzhmODVlNTdhMmZhMTE4Li45ZTUxMjUzMDUx
MjRlNGZhMmFlNjMyNWRlMDIzNmE4MTIyODExZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC0x
MTM5LDcgKzExMzksNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsCiAKICNlbmRpZgogCi1TdHJp
bmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CitTdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBT
dHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgU0VM
IHNlbGVjdG9yID0gQHNlbGVjdG9yKHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZ0Zv
cldlYlZpZXc6KTsKICAgICBpZiAoW1ttX3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1Nl
bGVjdG9yOnNlbGVjdG9yXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDhiMjAzNjRi
YjY3YTkxNzI3OGIyOTUzZmM1MTc5YTEyZGQzNjZkZGQuLjE4ODVmMDMxMzEzNWI4MTdiMzBmOTQ1
Nzc3ZDhlMjRiMTUzOWJmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNTAsNyAr
NTAsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250
ZXh0TWVudUNsaWVudAogCiAgICAgdm9pZCBjb250ZXh0TWVudURlc3Ryb3llZCgpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Vh
cmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogICAgIHZvaWQg
bG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c1NwZWFraW5nKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IGFm
NzgxNGI5Njk2N2U5ZDg1ZjU5NDFkNGFmYWIzMDI0NzU2Y2YzMjUuLjYxNjMwNDkwMTk5NmYxNTdm
YzdlOThhMGU3YWIwYTBlODdlYzk5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBA
IC01NCw5ICs1NCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViS2l0
TGVnYWN5L0RPTVByaXZhdGUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TU2hhcmluZ1NlcnZp
Y2VQaWNrZXJTUEkuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCA0ZTgxZDM3MDg0OGY5ZTQ0YTQwZjUwNDBiYzlhZDhh
MzdjY2FkOGUwLi44NDdhNzNiMTdhNDYxN2JkNTRhOGQyOGE5MjNjMWQ0YTYzYmRkMTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMg
V2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAKICAgICB2b2lkIGJlZ2luRHJhZyhXZWJDb3JlOjpEcmFn
SXRlbSwgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEb3du
UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtb3VzZURyYWdnZWRQb3NpdGlvbiwg
V2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpF
bGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDc3MTgyZDIwZWJiYjM5MDcyMWFmYjgy
ZTU5NGUyMTlhMGI0NDBkNGQuLmZmNmQxNDFmZTNkODljYTk1YjUwZDU4ZDc3ZGU0Njk2YTJjNTZk
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTA3LDcgKzEwNyw3IEBAIGNsYXNz
IFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
IHsKICAgICB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBmaW5hbDsKICAg
ICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgZmlu
YWw7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7Cisg
ICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91
YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hE
aWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxh
Y2VTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKQEAgLTE1OSw4ICsxNTksOCBAQCBjbGFzcyBXZWJG
cmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAg
ICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKSBmaW5hbDsKIAogICAgIHZv
aWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIGZpbmFsOwotICAgIHZvaWQgZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6VVJM
JikgZmluYWw7Ci0gICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9v
bCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFsOworICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250
ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9p
ZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFs
OwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKQEAg
LTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBib29sIHNob3VsZEZhbGxCYWNrKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIAotICAgIFdURjo6U3RyaW5nIHVzZXJB
Z2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBXVEY6OlN0cmluZyB1c2VyQWdl
bnQoY29uc3QgVVJMJikgZmluYWw7CiAgICAgCiAgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9D
YWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIGZpbmFsOwogICAgIHZvaWQgdHJhbnNp
dGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgZmlu
YWw7CkBAIC0yMDYsMzAgKzIwNiwzMCBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgUmVmPFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogICAgIHZvaWQg
dXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBmaW5h
bCB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIHZvaWQgc2V0VGl0bGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpIGZpbmFsOwogCi0g
ICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50
JiwKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNv
bnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLAog
ICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5n
LCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIGZpbmFsOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2Vi
Q29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLAorICAgIFJlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3Jl
OjpXaWRnZXQqKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6
OldpZGdldCYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkNvcmU6OldlYkdM
TG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBm
aW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OldlYkdM
TG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKKyAg
ICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0
IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3Jl
OjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFz
ZVVSTCwKICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIGZpbmFsOwogICAgIAotICAgIFdl
YkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CisgICAgV2ViQ29yZTo6
T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgV1RG
OjpTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbDsKICAgICBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlh
VHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRv
d09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgZmluYWw7CiAKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgYm9vbCBzaG91bGRMb2FkTWVkaWFFbGVtZW50VVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc2hvdWxkTG9hZE1lZGlhRWxlbWVu
dFVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAgICAgUmVtb3RlQVhPYmpl
Y3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAg
LTI0Miw3ICsyNDIsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBSZWY8V2ViQ29yZTo6RnJhbWVOZXR3b3Jr
aW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSBmaW5hbDsKIAotICAgIGJvb2wg
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgVVJMJikgY29uc3QgZmluYWw7
CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBSZWZQdHI8V2ViQ29yZTo6UHJldmlld0xvYWRl
ckNsaWVudD4gY3JlYXRlUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIHV0aSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmlu
ZGV4IDI4MjEyNDI3MjMyZDIzMTkzYjI4MWNjMTVhZjIwYzIxYmQ5OWFmNzUuLmVmZTlhMzRiYzVi
N2Y1OTUwZjcyY2JiZWYxYTlkMjUxZWZkYTk2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRh
dGVHbG9iYWxIaXN0b3J5KCkKICAgICBXZWJWaWV3KiB2aWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZy
YW1lLmdldCgpKTsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gY29yZShtX3dlYkZyYW1l
LmdldCgpKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IGJsYW5rVVJMKCkpCisgICAgaWYgKGxv
YWRlci0+dXJsRm9ySGlzdG9yeSgpID09IFdURjo6YmxhbmtVUkwoKSkKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXgg
ZmQ0Y2Q0YzRiMzZkOGJmZjRiY2U1N2JmMTVlZDZmODlmNGVjZDU4MC4uMDc3ZDAxNGQzZTUzNWM3
YThhYmIzNDY4ZTFkNjU0ZTlmZTliZTI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvckNsaWUKICAg
ICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuTWFrZVBheW1l
bnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5j
dGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25z
dCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOworICAg
IGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0lj
b25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29y
ZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVT
aGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0
aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0
U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbQppbmRl
eCAzMzQ5M2JkOWYxNjBiZGE4YWFjNWRhZmZmYTU5MmE1NjBmYTk5MjgyLi4zMGUwNmNhZjkzMWFl
MDY2YzM2OWI3MzUxMTNkOWM0OGE3YmRjMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50Lm1tCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQogCi0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JDbGllbnQoKQogewpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudDo6b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLAogICAgIH0pOwogfQogCi1ib29sIFdlYlBheW1lbnRDb29yZGluYXRvckNs
aWVudDo6c2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6VVJMPiYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
JikKK2Jvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpzaG93UGF5bWVudFVJKGNvbnN0
IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKaW5kZXggNzM5Yzk1MWY2YmQ3ZmY1NWYyOTkyYWRmZjNhNTA5YTZjZTEwMDU5
NC4uNGVhMWFkZDNlMTIzN2UwMmU1MDA5YzExZmQ1YWI3ZTJhMmMzOTM4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBjbGFzcyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdl
YkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsK
LSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAg
ICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKICNpZiBQTEFURk9STShJT1Mp
CkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBX
ZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAgICAgaW50IGdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpVUkwgcmVhZFVS
TEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92
ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAg
ICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZv
aWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBp
ZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CkBAIC04
MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3Jl
OjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAgICAgbG9uZyBjaGFuZ2VDb3Vu
dChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgdW5p
cXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlVSTCB1cmwoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVVJMIHVybChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAogICAgIGxvbmcgd3JpdGVDdXN0b21EYXRh
KGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBvcmlnaW4pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGJk
NzU4MWZhNTA0ODFjOTg5N2M5YTFmY2RkMzIxOTBmNjdmMDZiNDUuLmY1MGIwZWIzYmM0NzBlYjkx
Mjg1YTA1ZmRkMmQ0ZDM0NDZlMjUxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
QEAgLTIzOSw3ICsyMzksNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbgogICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUp
OwogfQogCi1XZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBh
c3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkK
IHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJM
KGluZGV4LCB0aXRsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCmluZGV4IGQxYWI1
NTExODRjMGE1ZjY0OTk0MGQ4ZTkyN2JkODRlNTI5YzdmZjAuLjUyNWVlMmZjZGVlYTE2YzVjNmY5
ZGZlODEzNWVkN2QxYzVlYmJkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCkBAIC0z
NSw3ICszNSw3IEBAIGNsYXNzIFdlYlBsdWdpbkluZm9Qcm92aWRlciBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpQbHVnaW5JbmZvUHJvdmlkZXIgewogcHJpdmF0ZToKICAgICB2b2lkIHJlZnJlc2hQ
bHVnaW5zKCkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdp
bkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBv
cnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2li
bGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBVUkwmKSBmaW5hbDsKIAogICAgIFdl
YlBsdWdpbkluZm9Qcm92aWRlcigpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5tbQpp
bmRleCBlMzRlYzczZTU0ZmJkOTU0MTY4ZmZjYTU1MmU0ZjM2YmM5NWY1NDRiLi5iMDZkYTZmMGYw
YzM1N2IwMGJhODc0OTFjYjE3YmZkMmZhOTRlMzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyLm1tCkBAIC03NCw3ICs3NCw3IEBAIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQ
bHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnCiAgICAgcmV0
dXJuIHBsdWdpbnM7CiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNv
bnN0IFdlYkNvcmU6OlVSTCYpCitWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBj
b25zdCBVUkwmKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklk
ZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKICAgICByZXR1cm4gcGx1Z2lu
SW5mbyhwYWdlLCBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tCmluZGV4IDRlNGMxM2RmYjczYWI2NGFlZTk3ZDdhMzczOTUxM2FlNDkyNDI5ZmMuLmQ5YTA3
ZWVjNTc4MzMyNjkwOTY4YjQ3OTRkMTVmMjViZDc5NTExYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0
b3JlLmgKaW5kZXggYWVmNGZjNTJhYWU0MTJmM2U2YzRlY2Y0MDM5NWI0M2U4N2NjOTQ2Yy4uMjBl
ZTUxODc5NDU1OTcyYWI0YjAzYzQ2MmFlMzFmMzk0OWVjOTEzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5r
U3RvcmUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBXZWJWaXNpdGVkTGlua1N0b3JlIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RvcmUgewogcHJpdmF0ZToKICAgICBXZWJW
aXNpdGVkTGlua1N0b3JlKCk7CiAKLSAgICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFn
ZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVS
TCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wg
aXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwg
Y29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBvcHVsYXRlVmlzaXRlZExp
bmtzSWZOZWVkZWQoV2ViQ29yZTo6UGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDYxMTc5ZmY4ODFlMzU1ODJjNTc5Njli
NzY1ZGUzNjhhNjZjMjRiYTMuLjFlMjI1OTFiMDI3MjcyM2VkMjI5NDNkY2JjMjNhMjZmZTk1ZTJh
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KQEAgLTU1LDcgKzU1LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3Ry
eS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVVJMUmVz
cG9uc2UuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01IVE1MLmg+CkBAIC02NSw2ICs2NCw3
IEBACiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAj
aW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjaWYgUExBVEZP
Uk0oSU9TKQogI2ltcG9ydCAiV2ViUERGVmlld0lPUy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMzdiMzNjODEwODQwMmJlY2Y3ZTU0NTcwNTZj
NGQ2MzcxYzIyMDQ2Yi4uNzhiZDNkNDliOTBlNzllOTdjMzg4ZDA4Njc4NTdjN2JlYWMwYTZkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yNTA4
LDcgKzI1MDgsNyBAQCAtICh2b2lkKV9sb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZToo
TlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOgogICAgIGlmIChiYXNlVVJMKQog
ICAgICAgICBiYXNlVVJMID0gW2Jhc2VVUkwgYWJzb2x1dGVVUkxdOwogICAgIGVsc2UgewotICAg
ICAgICBiYXNlVVJMID0gYmxhbmtVUkwoKTsKKyAgICAgICAgYmFzZVVSTCA9IFdURjo6YmxhbmtV
UkwoKTsKICAgICAgICAgcmVzcG9uc2VVUkwgPSBjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCk7CiAg
ICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IDc1NGNjY2MxYWYy
ODA2NTU4Y2VmOTZiODhjYzZlNjg3MzNjYTIyYTYuLmY1MTRiODQwNTRjMjFhOTM3M2JkZTdmNWI5
YTQwMWQ4ZGVmYjM0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTI1Niwx
NyArMjU2LDE3IEBAIC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+
KV9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcgogICAgIE5TVVJMICp1cmwgPSBfaGl0VGVzdFJl
c3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBOU1N0cmluZyAqYWJzb2x1dGVVUkxTdHJpbmcg
PSBbdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICBpZiAodXJsICYmIF9oaXRUZXN0UmVzdWx0LlVS
TEVsZW1lbnQoKSkgewotICAgICAgICBpZiAocHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywg
Im1haWx0byIpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJp
bmcsICJtYWlsdG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25N
YWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVy
Rm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAocHJvdG9jb2xJ
cyhhYnNvbHV0ZVVSTFN0cmluZywgInRlbCIpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29s
SXMoYWJzb2x1dGVVUkxTdHJpbmcsICJ0ZWwiKSkgewogICAgICAgICAgICAgX3R5cGUgPSBXZWJJ
bW1lZGlhdGVBY3Rpb25UZWxMaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRp
b25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0ZVVSTFN0cmluZykpIHsK
KyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0ZVVSTFN0cmlu
ZykpIHsKICAgICAgICAgICAgIF90eXBlID0gV2ViSW1tZWRpYXRlQWN0aW9uTGlua1ByZXZpZXc7
CiAKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0gcmFuZ2VPZkNvbnRlbnRz
KCpfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4IGEwOTljNDZkZTcyNjk3ZGNkZjk1M2YxYTQx
YjliNzQwYzIwMDUwNGMuLjkwMDM4MmNmOGI4MDBlYjFkNTE1OTE4NWRlMmYzODMzYjBjNjZlZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAg
LTYyLDkgKzYyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oPgogI2ltcG9ydCA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogZXh0ZXJuICJDIiB7CiAgICAgYm9v
bCBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3RoaW5nKENHQ29udGV4dFJlZiBjb250ZXh0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVn
Z2VyLm1tCmluZGV4IDg1YWZmYzFiY2EwZDg3ODMzYjQ0OTYyMmVhMWRhYTMyYWEwYzY0OWEuLjVm
Y2Y5ZjZhZmUwNTFiYjJmN2NjZjEzZTMyN2I0NWE1NTY3ODhiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtMzks
OCArMzksOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0lu
dGVybmFsLmgKaW5kZXggMGU3YzVkN2U5MmUyOGIyZWZlNjJmYTdjZTNhZDkxMmE0N2YwOTNkOC4u
YjYyZjJjMzUyYTNiMDFiZWUyNzgzMDhlOWI3ODllYTkwNWFlZjY0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC01OCw3ICs1
OCw2IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyQm94
OwogY2xhc3MgVGV4dEluZGljYXRvcjsKLWNsYXNzIFVSTDsKIHN0cnVjdCBEaWN0YXRpb25BbHRl
cm5hdGl2ZTsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXggNmFmMzE1MTMxNjUxOGEy
Y2Y1NjI4ODgxYjQ4NWMyMjMzMGNjODA5Ny4uNzQ3MWExMTZjNzMyZGJlZjhmZmYxMTBjM2QxMWJj
MzZjODllOGI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxp
bmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hl
bHBlcnMuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFy
c2hhbGxpbmdIZWxwZXJzLmgKaW5kZXggNjZkZWU4YTQwNDYwZjkyNWM0OGY1OWVmNzdkOGY5MzA0
NjA2OGQ0Ny4uODIwYjYyMTM2YmM4Y2QwZDMxM2ZjYzA3NGZlYTNjYzVhMmFlYzRlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKQEAgLTMwLDE1ICsz
MCwxNCBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBJbnRSZWN0OwotICAgIGNsYXNzIFVSTDsKK2Ns
YXNzIEludFJlY3Q7CiB9CiAKIGNsYXNzIE1hcnNoYWxsaW5nSGVscGVycwogewogcHVibGljOgot
ICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgQlNUUlRvS1VSTChCU1RSKTsKLSAgICBzdGF0aWMgQlNU
UiBVUkxUb0JTVFIoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgc3RhdGljIFVSTCBCU1RSVG9L
VVJMKEJTVFIpOworICAgIHN0YXRpYyBCU1RSIFVSTFRvQlNUUihjb25zdCBVUkwmKTsKICAgICBz
dGF0aWMgQ0ZVUkxSZWYgUGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNvbnN0IFdURjo6U3RyaW5n
Jik7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIEZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVS
TFJlZiBmaWxlVVJMKTsKICAgICBzdGF0aWMgQ0ZVUkxSZWYgQlNUUlRvQ0ZVUkxSZWYoQlNUUik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCmluZGV4IGYyNDM2MDNjZTY3MTVkOGYxZjA4OGRlYWYyOWFlMDA3MWQ4ZTk0NjguLjljZGNj
MTQ1YjcxOTk5Y2RhNjk4NDE0ZTUyZmUyMmMzN2E4OTdiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0yOCw4ICsyOCw4
IEBACiAKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXggMDEzNzA4ZWJkNzFmOTgz
NzA1NDlhNDQ2NDExYmZhNGM3ZmQ5MzBhZC4uYWNjMGUxZmJhNzQ2NDI5NDQxYmI5YWQ2NGZkYmNl
MjUwZDJkYjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBJbnRTaXplOwotICAg
IGNsYXNzIFVSTDsKICAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVudDsKICAgICBjbGFzcyBQ
bHVnaW5QYWNrYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4IGMzZTQ5ZjQ0MTk2NTQ2MTBlZmQ0ZGM1ZjVl
YmQ5YWIwOTFjMDZlMTUuLjgxNGUyYmI2ZGMzOTFmYzJmZmExYTk1YjY5ZTQ2ZDQ1ODBjMDM2NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0
YWJhc2VXaW4uY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCmluZGV4IGY2MjhjY2QzZDVh
NDU5MjZlNTM3MDM1MmQ4NmRjOWE3NTM1NThlNzEuLmMxYjlmODdhYzRlNjIyZmJiMmUyZTIwNWQx
NjQ1OWMwYzE5NGU3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5TdHJlYW0uaApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGI0ZTkxZjZlMTJiM2JiOWIyYTM5ZDhiYThmMDJh
OTQyMDQwNWJkMzAuLjdjZmM3YTlhODJlNzJjOTEyZjVkYjk5OWNmYjM3YmY5Y2YxYTlmNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC02MCw3
ICs2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBIVE1MUGx1Z0luRWxlbWVu
dDsKICAgICBjbGFzcyBLZXlib2FyZEV2ZW50OwogICAgIGNsYXNzIE1vdXNlRXZlbnQ7Ci0gICAg
Y2xhc3MgVVJMOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGNsYXNzIFBs
dWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW47CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CmluZGV4IDIwM2QxNTY1ZTI1ODYxNzNjYTI1NjFhNTQ1YTM4ZTYwZTc1YzhkODIuLmM5ZGU0OWIz
Y2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkxNThiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4
dE1lbnVEZXN0cm95ZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJik7
CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKik7
CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFdURjo6U3RyaW5nJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZp
Y2F0aW9uc0RlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCmluZGV4IDY0MzUwNzY3Zjkz
NDAyNmQwOWMwZmE4Yjg4ZGNjZGQzODk0MmVkMDcuLmNjMDM4Y2VmZDkxNWY0NTE2ZDU4N2JhZjEw
OWE1YWQ2NDdhMjAxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25z
RGVsZWdhdGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9u
c0RlbGVnYXRlLmgKaW5kZXggZjBmMWQ5MmYyZGIyNWI3NDQyODc3NTI0NjJhZmJhNGJjMWQxYzdm
MS4uODI5NmM4Y2NiNjg4N2QzNDU0OGQ1YTY0YzY4Njc3MjZhNzQ2MDc3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaApAQCAtMzgsNyArMzgsNiBAQCBp
bnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgVVJMOwogfQogCiBjbGFzcyBXZWJEZXNr
dG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlIDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNs
aWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzOWNkMWMxNjc5YWRkZDIwNWJi
MDdlODNmYTY5MjA5ODUzMjg1NzM2Li4zMmE5ZjBiYzMxNDAyOTkxYjg5MjQ5ODAyNzk1NjNkZGUy
Mjg4OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgY2xh
c3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnQsIHB1YmxpYyBXZWJDb3JlOjoKICAgICB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRF
dmVudHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZENh
bmNlbENsaWVudFJlZGlyZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBX
YWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJl
RGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdl
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2Uo
KSBvdmVycmlkZTsKQEAgLTE0MCw4ICsxNDAsOCBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6Ogog
ICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
ZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tF
bnRpcmVQYWdlKSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2Vs
bGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CkBAIC0xNTQsMTIgKzE1NCwxMiBAQCBjbGFzcyBXZWJGcmFt
ZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGlj
IFdlYkNvcmU6OgogCiAgICAgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3Qg
V2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0
IFVSTCYpIG92ZXJyaWRlOwogCiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVk
RG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBvdmVycmlkZSB7IH0KIAot
ICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSop
IG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1l
KFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgb3ZlcnJpZGU7CkBAIC0xODUsMTUgKzE4NSwxNSBAQCBj
bGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudCYsCisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3du
ZXJFbGVtZW50JiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVycmlk
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6
OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKICAgICB2b2lkIHJlY3JlYXRl
UGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVkaXJlY3RE
YXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Jikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFz
ZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiBwYXJhbVZhbHVlcykgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlw
ZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWltZVR5cGUpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9i
amVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkg
b3ZlcnJpZGU7CiAgICAgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2Vi
Q29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IDBjNGZiMDQyNGQwMWVhMTE1ZDI3ZWNlNzJlMTkwMzg3NmU1YzFlNTkuLmJlMjRj
YjhhNTY4NTljZDQzY2UxOWYwYTE3YmJmODFkYTdjOTlmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCkBAIC00NSwxMSArNDUsMTEgQEAgY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3IKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCk7CiAK
ICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0
dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJik7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBv
dmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBX
ZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7
CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCAxYTQ1YWI4ZGUyODIzN2NmZGViNmYzOWRlMGYxNzRl
ZWI1ZDgyM2VmLi5kMzEwZDI5MTAwODcwMDllODliYWZlZjVmMGUwMTI3NjE5NGRkZTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhXZWJD
b3JlOjpQYWdlJiBwYWcKICAgICByZXR1cm4gb3V0UGx1Z2luczsKIH0KIAotVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbklu
Zm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6VVJMJikKK1ZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5J
bmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYpCiB7CiAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IHN1cHBvcnRlZFBs
dWdpbk5hbWVzOwogICAgIHJldHVybiBwbHVnaW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbk5h
bWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5kZXggODAxYmNiN2I0NjJkY2NkZGZj
NzY1MmI2NGFmMDZmODYwZmZjNTVmYi4uMTBmNzY2ZTA2MDQ0ZDE1OWIwYTFjZDkzOTQ5MjFlNzYx
MmQ1NzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAg
Y2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBsdWdp
bkluZm9Qcm92aWRlciB7CiBwcml2YXRlOgogICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBmaW5h
bDsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2luSW5mbyhXZWJDb3JlOjpQ
YWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRp
Zmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2li
bGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7
CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdl
YkNvcmU6OlBhZ2UmaSwgY29uc3QgVVJMJikgZmluYWw7CiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyUGx1
Z2luQ2xpZW50UG9saWNpZXMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAppbmRleCA2
YTdiOTkyMmMzYTM5MTUyMmMzZGEwNDdlNGEwNjk3M2I0MDRkMTEwLi44YmVkZTllMjU4MTkxODMy
MDI3MGVhYjY1Mjc0YTdhOTA2ZGI1OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCkBAIC00
Miw3ICs0Miw3IEBAIGNsYXNzIFdlYlZpc2l0ZWRMaW5rU3RvcmUgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6VmlzaXRlZExpbmtTdG9yZSB7CiBwcml2YXRlOgogICAgIFdlYlZpc2l0ZWRMaW5rU3Rv
cmUoKTsKIAotICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0xpbmtWaXNpdGVk
KFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoLCBjb25zdCBVUkwmIGJh
c2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBvdmVycmlkZTsKICAgICB2
b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdI
YXNoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcG9wdWxhdGVWaXNpdGVkTGlua3NJZk5lZWRlZChX
ZWJDb3JlOjpQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
YXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3Bw
CmluZGV4IGE2ODJjNjI3NTBlMTFmNTIxNTY3MjFmM2Q4MjgyZDU3ZTBmODA2ZDIuLmI0MDczZTEw
OGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lTG9hZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRG93bmxvYWQuaAppbmRleCA4NDg4NWYyNGZiODM0YTJkZmNhODJlZWI3OWUxOWM3MTkx
MDRhNDcyLi40ZjYxMTFlMjNiMmMyZTA3ZTBhZTRhZmFkNThlYTUwZWQxYTMyYzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmgKQEAgLTM4LDcgKzM4LDYgQEAKICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFJlc291cmNl
SGFuZGxlOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwpAQCAtNTIsMTMgKzUxLDEzIEBAIGNsYXNzIFdlYkRvd25sb2FkCiAjZW5kaWYKIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAgc3RhdGljIFdlYkRvd25s
b2FkKiBjcmVhdGVJbnN0YW5jZShjb25zdCBVUkwmLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOwog
ICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsKICAgICBzdGF0aWMgV2Vi
RG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKCk7CiBwcml2YXRlOgogICAgIFdlYkRvd25sb2FkKCk7
CiAgICAgdm9pZCBpbml0KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIElXZWJE
b3dubG9hZERlbGVnYXRlKik7Ci0gICAgdm9pZCBpbml0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIElX
ZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAgdm9pZCBpbml0KGNvbnN0IFVSTCYsIElXZWJEb3du
bG9hZERlbGVnYXRlKik7CiAgICAgfldlYkRvd25sb2FkKCk7CiBwdWJsaWM6CiAgICAgLy8gSVVu
a25vd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9w
ZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlC
YWcuY3BwCmluZGV4IGNkZjhjYWQ2YTM2OTZlZWJhY2U2MmY0ZTU3ODRjZWU0YmVmMWQ5ZTkuLjI3
YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQwZTFhYzUwYWQ3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAtMzYsOCArMzYs
OCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5oCmluZGV4IGRiZWE2OThhNTc1MDIxMmE1MDY1MGU3ODM5MTY5ZDBhNWUx
YjM3NTQuLmM0ZDA4MzYyZGFkNWU4MzkzZThkZmY4MzFjMjU5ODFhMmM3N2ZmZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtMzQsOSArMzQsOSBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgogI2luY2x1ZGUgPHNhbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBjbGFzcyBERUNMU1BFQ19VVUlEKCJ7
QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQwRTYzNTFEfSIpIFdlYkZyYW1lIDogcHVibGlj
CiAgICAgSFJFU1VMVCBtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IEJTVFIqIGxhYmVs
cywgaW50IGNMYWJlbHMsIElET01FbGVtZW50KiBhZ2FpbnN0RWxlbWVudCwgQlNUUiogcmVzdWx0
KTsKICAgICBIUkVTVUxUIGNhblByb3ZpZGVEb2N1bWVudFNvdXJjZShib29sKiByZXN1bHQpOwog
Ci0gICAgV2ViQ29yZTo6VVJMIHVybCgpIGNvbnN0OworICAgIFVSTCB1cmwoKSBjb25zdDsKIAog
ICAgIFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsKICAgICB2b2lkIHNldFdlYlZpZXcoV2ViVmll
dyopOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIERFQ0xTUEVDX1VVSUQoIntBMzY3NjM5OC00
NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgOiBwdWJsaWMKICAgICBjbGFz
cyBXZWJGcmFtZVByaXZhdGU7CiAgICAgV2ViRnJhbWVQcml2YXRlKiBkOwogICAgIGJvb2wgbV9x
dWlja1JlZGlyZWN0Q29taW5nIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpVUkwgbV9vcmlnaW5h
bFJlcXVlc3RVUkw7CisgICAgVVJMIG1fb3JpZ2luYWxSZXF1ZXN0VVJMOwogICAgIGJvb2wgbV9p
blByaW50aW5nTW9kZSB7IGZhbHNlIH07CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4g
bV9wYWdlUmVjdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDIy
YjA4NDZhOTA2Yjc4Mjg2NTZiOGQ5NTdjMTBhMGRmYWZmOGIzMDEuLjAyMzM4NGNlOTZmMTA5NDlj
ZGQ1OWY3NzRhODE0NWViYmVhN2I3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAKICNpbmNsdWRlICJXZWJWaXNpdGVkTGlua1N0b3Jl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0
b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUg
PGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmgKaW5kZXgg
MTdhZmY5MjgyN2QxZDEwOWI1M2U5Y2RjYzZjZTQ5YzhiZTNlNzBlNS4uNjkzNzRkZjAyMDFkODk4
Zjc3ZDZiMTIxOThjNjc1ZGNlNDgxODA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuaApAQCAtMzMsOCArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBVUkw7Ci0gICAgY2xhc3MgUGFnZUdyb3VwOworY2xh
c3MgUGFnZUdyb3VwOwogfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03OCw3ICs3Nyw3
IEBAIGNsYXNzIFdlYkhpc3RvcnkgOiBwdWJsaWMgSVdlYkhpc3RvcnksIHB1YmxpYyBJV2ViSGlz
dG9yeVByaXZhdGUgewogCiAgICAgLy8gV2ViSGlzdG9yeQogICAgIHN0YXRpYyBXZWJIaXN0b3J5
KiBzaGFyZWRIaXN0b3J5KCk7Ci0gICAgdm9pZCB2aXNpdGVkVVJMKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV1RGOjpTdHJpbmcmIGh0dHBNZXRo
b2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9vbCBpbmNyZWFzZVZpc2l0Q291bnQpOworICAgIHZvaWQg
dmlzaXRlZFVSTChjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNp
dENvdW50KTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rc1RvVmlzaXRlZExpbmtTdG9yZShXZWJW
aXNpdGVkTGlua1N0b3JlJik7CiAKICAgICBDT01QdHI8SVdlYkhpc3RvcnlJdGVtPiBpdGVtRm9y
VVJMU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggODQzNzYyMDFkMDdlYjNmZWY1ZWIyZDlhNzIx
NzZkMzE3Zjk5MTIyZS4uYTg1NTlhNWZkMjI3Y2JkMmIxN2VhZjI4NWVhNjM5NWVhZmY4YTZjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMzIsOCAr
MzIsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IGIyOTJk
ZGU3ZGNjZWY2MmZjYTczYjBjNGNiNGJhYjJhZGM1YmZmYjAuLjgxODBkYmUwNGY2ZTIwNmU4NTM5
OGM2MjlhNzY5ZTgzNmU3YzY0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIFdl
YlJlc291cmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVh
bSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBmcmFtZU5hbWUpCitXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpCiAg
ICAgOiBtX2RhdGEoZGF0YSkKICAgICAsIG1fdXJsKHVybCkKICAgICAsIG1fbWltZVR5cGUobWlt
ZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCBiOGM3ZGNjYjAz
NzQ5YWI3ODczZTM3ZmZhMjlmMjUyYzY1M2JlYmE1Li4wMmQ2NzM1YWI3MzU4NDg4NzRlZmYxOTM0
ODgyZGY1OGM0ZWYzYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAg
LTI4LDE3ICsyOCwxNyBAQAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogY2xhc3MgV2ViUmVzb3VyY2UgOiBwdWJsaWMgSVdlYlJl
c291cmNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKIHByb3RlY3RlZDoKLSAgICBXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1l
TmFtZSk7CisgICAgV2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpOwogICAgIH5XZWJSZXNvdXJjZSgp
OwogCiBwdWJsaWM6CkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIFdlYlJlc291cmNlIDogcHVibGlj
IElXZWJSZXNvdXJjZSB7CiBwcml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAg
ICAgQ09NUHRyPElTdHJlYW0+IG1fZGF0YTsKLSAgICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAg
VVJMIG1fdXJsOwogICAgIFdURjo6U3RyaW5nIG1fbWltZVR5cGU7CiAgICAgV1RGOjpTdHJpbmcg
bV90ZXh0RW5jb2RpbmdOYW1lOwogICAgIFdURjo6U3RyaW5nIG1fZnJhbWVOYW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDgxYjI2OWZj
NDIwYzU5Y2M2ZWY1ZDk5MmZjNzZjYzQ5YjBlYTBmYjguLjk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3
N2YwY2QwNjAwMjQ2YTEwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1
cml0eU9yaWdpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJp
bmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggNDU3NmMyMjI1YzgzNTdm
MzA2NzA2NzNjMTg4MDVkMzM4ZjQ4MmJiNC4uN2RhMTU1OGJiNDU3ZDkyMWQyNGNhM2I1Y2M3NWU2
ZTEwYTdlNjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVz
cG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNw
cApAQCAtNDAsMTIgKzQwLDEyIEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmlu
Zy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6
ZWRTdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1
ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3Y2hhci5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTIy
Nyw3ICsyMjcsNyBAQCBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9uc2U6OmNyZWF0ZUluc3Rh
bmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9u
c2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBpdCBoYXMgdGhlIElXZWJI
VFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNv
dXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBT
dHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFVS
TCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CiAgICAgaW5zdGFuY2Ut
PkFkZFJlZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IGJkMTI2NzU4
YTUxY2MzNTM4ZjlhYzk1MzdjZmIxZmM3ZGZkYWUzODguLjQ4MTIzODQ3MTNjOGI5OWRhNWNiYTVi
NjNmMjU0NDQ5ZmU1MGM2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUg
IldlYktpdERMTC5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKaW5kZXggM2NmZDY2NzY4ZWIzMjdh
ZWFkYzdhMDllNGQyN2NlYTI0OTQ4ZmQ3ZS4uMWI3MmJiZTgyNzM0Y2U4MzM2MmE3MmM5MGVjMmI4
ZjA2ZTU4ZmY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNDYzLDcgKzQ2Myw3
IEBAIGNsYXNzIFdlYlZpZXcKIAogICAgIC8vIENvbnZlbmllbnQgdG8gYmUgYWJsZSB0byB2aW9s
YXRlIHRoZSBydWxlcyBvZiBDT00gaGVyZSBmb3IgZWFzeSBtb3ZlbWVudCB0byB0aGUgZnJhbWUu
CiAgICAgV2ViRnJhbWUqIHRvcExldmVsRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFt
ZTsgfQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiB1c2VyQWdlbnRGb3JLVVJMKGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsKTsKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdXNlckFnZW50Rm9yS1VSTChj
b25zdCBVUkwmIHVybCk7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBAIC01MDIsNyArNTAyLDcgQEAgY2xhc3Mg
V2ViVmlldwogICAgIGJvb2wgb25HZXRPYmplY3QoV1BBUkFNLCBMUEFSQU0sIExSRVNVTFQmKSBj
b25zdDsKICAgICBzdGF0aWMgU1RETUVUSE9ESU1QIEFjY2Vzc2libGVPYmplY3RGcm9tV2luZG93
KEhXTkQsIERXT1JEIG9iamVjdElELCBSRUZJSUQsIHZvaWQqKiBwcE9iamVjdCk7CiAKLSAgICB2
b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgZG93bmxvYWRV
UkwoY29uc3QgVVJMJik7CiAKICAgICB2b2lkIGZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFu
Z2VzU29vbigpOwogICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NM
YXllciopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGNjYzdkNzc1MGQzNzk4OTk1YjgwZjliZTFlNGExZTMwM2JkOTcwZmEuLmU0ZGNhOTMxNzQ0
NjEzNTk2MDFhMTMxMzk2MmU1MmE3YzdkYmJjMjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0xMC0wMyAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUg
VVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRl
bnNpb25zLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlVVJMKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VSTFBhcnNlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmNoZWNrVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hl
Y2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6b3JpZ2luYWxEYXRhQXNTdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bGl0ZXJhbFVS
TCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2Fk
SW52YWxpZFVSTFJlcXVlc3QubW06CisgICAgICAgIChsaXRlcmFsVVJMKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbToK
KyAgICAgICAgKC1bTG9hZEludmFsaWRVUkxXZWJGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRp
ZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6Zm9yRnJhbWU6XSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5R2VuZXJhdG9yLm1tOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcDoKKwogMjAxOC0xMC0wMiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0Ml0g
Rm9ybWF0ID4gQm9sZCBhbmQgRm9ybWF0ID4gSXRhbGljIGRvbid0IHRvZ2dsZSBiZXR3ZWVuIGJv
bGQgYW5kIGl0YWxpYyBzdHlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggNThlNjlkMGRmNjMwNTk3YTEw
ZGIyZTljOTZhMmQ4ZGRjZGFhN2M2OS4uMTg4YjhiZGUwYzVmMzQ5ZWRjOWY0MjVjZjkwODNjYzc3
NjhkMDcwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Nv
bnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC0zOCwxMCArMzgsMTAgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL05GQS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTkZBVG9ERkEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlTG9hZEluZm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMRmlsdGVyUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAppbmRleCBiOTI4MzI0ZjM1OThkZGI0NjE3YTFkZWViODgyNjM2MGM2
NWE0MjA1Li5hYWQxNmI4NjA0MTc5Y2E0M2E5NzczNzk1ODU0YjU3NTc3M2FmYzlhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5j
cHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKaW5kZXggNzM1MzRj
ODE3MzNlYmE0NTJmMzJmZDlmODIxNzFiYTliYTU0YjZiYi4uZGMzMWI0N2JkMDc4NjhhZWRjYWZm
OTdmNTY1NmQ4M2Y3ODlkODMyMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1VSTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VSTC5jcHAKQEAgLTI1LDExICsyNSw5IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC03
Myw4ICs3MSw3IEBAIFRFU1RfRihVUkxUZXN0LCBVUkxDb25zdHJ1Y3RvckNvbnN0Q2hhcikKIAog
c3RhdGljIFVSTCBjcmVhdGVVUkwoY29uc3QgY2hhciogdXJsQXNTdHJpbmcpCiB7Ci0gICAgVVJM
UGFyc2VyIHBhcnNlcih1cmxBc1N0cmluZyk7Ci0gICAgcmV0dXJuIHBhcnNlci5yZXN1bHQoKTsK
KyAgICByZXR1cm4gVVJMKHsgfSwgdXJsQXNTdHJpbmcpOwogfTsKIAogVEVTVF9GKFVSTFRlc3Qs
IFVSTFByb3RvY29sSG9zdEFuZFBvcnQpCkBAIC0zMTcsMjAgKzMxNCwyMCBAQCBURVNUX0YoVVJM
VGVzdCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpCiAKIFRFU1RfRihVUkxUZXN0LCBQ
cm90b2NvbElzSW5IVFRQRmFtaWx5KQogewotICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5I
VFRQRmFtaWx5KHt9KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHko
IiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYSIpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWIiKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiYyIpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZCIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9j
b2xJc0luSFRUUEZhbWlseSgiYWJjZGUiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoImFiY2RlZiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRU
UEZhbWlseSgiYWJjZGVmZyIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCJodHRwOiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgi
aHR0cCIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwczoi
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzIikpOwot
ICAgIEVYUEVDVF9UUlVFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzOi8vIUAjJCVeJioo
KSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KHsgfSkp
OworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoIiIpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhIikpOworICAgIEVY
UEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiIikpOworICAgIEVYUEVD
VF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiYyIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNkIikpOworICAgIEVYUEVDVF9G
QUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlIikpOworICAgIEVYUEVDVF9G
QUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlZiIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNkZWZnIikpOworICAgIEVYUEVD
VF9UUlVFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cDoiKSk7CisgICAgRVhQRUNU
X0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cCIpKTsKKyAgICBFWFBFQ1Rf
VFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzOiIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwcyIpKTsKKyAgICBFWFBFQ1Rf
VFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzOi8vIUAjJCVeJiooKSIpKTsK
IH0KIAogVEVTVF9GKFVSTFRlc3QsIEhvc3RJc0lQQWRkcmVzcykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKaW5kZXggM2UxMDU5MmEwM2QwYWIw
MWUyYzE2NmE0NTNlYWFlZWMxZmEwMzljMS4uMWM0ZGNkZDA1ZTIxZDdiNWZkN2FiN2RmZTg1ZDhm
MDVjMWFjOGE3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VSTFBhcnNlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VS
TFBhcnNlci5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGlu
Zy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTEwMiw3ICsx
MDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFy
c2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RG
OjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKIAogICAgIGlmICh0
ZXN0VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAgICAgIHJldHVybjsKQEAgLTEyOSw3ICsxMjks
NyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZy
YWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogICAgIAotICAgIEVYUEVDVF9UUlVFKFVSTFBh
cnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOworICAgIEVYUEVDVF9UUlVFKFdU
Rjo6VVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CiAgICAgCiAgICAg
aWYgKHRlc3RUYWJzID09IFRlc3RUYWJzOjpObykKICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDcg
KzE1OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzTmV3LnN0cmluZywgdXJsLnN0cmluZygpKSk7CiAgICAgCi0gICAgRVhQRUNU
X1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CisgICAgRVhQ
RUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsK
ICAgICAKICAgICBpZiAodGVzdFRhYnMgPT0gVGVzdFRhYnM6Ok5vKQogICAgICAgICByZXR1cm47
CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVu
Y2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGIKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuc3RyaW5nLCB1cmwuc3RyaW5nKCkpKTsKICAgICAK
LSAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwp
KTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OlVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0
ZW50KHVybCkpOwogICAgIAogICAgIGlmICh0ZXN0VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAg
ICAgIHJldHVybjsKQEAgLTIxMyw4ICsyMTMsNyBAQCBzdGF0aWMgdm9pZCBzaG91bGRGYWlsKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VTdHJpbmcpCiAKIHN0YXRp
YyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2Rp
bmcqIGVuY29kaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRhYnMgdGVzdFRh
YnMgPSBUZXN0VGFiczo6WWVzKQogewotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsU3RyaW5nLCB7
IH0sIGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBhdXRv
IHVybCA9IFVSTCh7IH0sIHVybFN0cmluZywgZW5jb2RpbmcpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29y
ZCwgdXJsLnBhc3MoKSkpOwpAQCAtMjM4LDkgKzIzNyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJM
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBj
b25zCiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNv
bnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGFicyB0ZXN0VGFicyA9IFRlc3RUYWJzOjpZ
ZXMpCiB7Ci0gICAgVVJMUGFyc2VyIGJhc2VQYXJzZXIoYmFzZVVSTFN0cmluZywgeyB9LCBlbmNv
ZGluZyk7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxTdHJpbmcsIGJhc2VQYXJzZXIucmVzdWx0
KCksIGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBhdXRv
IHVybCA9IFVSTChVUkwoeyB9LCBiYXNlVVJMU3RyaW5nKSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCmluZGV4IDRjODAz
MmI5MzZjZmUzYTU5MWYyMDJlZjBlMGVhMWRmMGVmN2Q3YjcuLjBjNWU2Mzc3OWJhN2UwMWZhNjg5
YjcwOWQzYWY3ZmU1MThmNzAwNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0yNSw4ICsyNSw4IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VyQWdlbnQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDc2YjEwMzU3
NWNhNDI1Y2UzZmU1OGRhMzEzNmIwZWVjMGQ2ZDNmMWUuLjMwMGIxM2NiY2ExMGMyMWIzMDdlZWUz
MTE0ZGUwMGZiZjBmZTAyZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC0yNCw5
ICsyNCw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tCmluZGV4IDZmZmQ3ZGFjYjNmYzAyMTJhNDA0ZDg1
NmIzMThjOTM2OWY4OWZlOTYuLmI2NDBiMTBiZmYyZjAxOWI3MjcyNDNhN2M2MDA4NTFhZGFmZDc1
ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9V
UkxFeHRyYXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1VSTEV4dHJhcy5tbQpAQCAtMjUsOCArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAot
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9WZWN0
b3IuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKQEAgLTUwLDE3ICs1
MCwxNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZGF0YUFzU3RyaW5nKE5TRGF0YSAqZGF0YSkKIAog
c3RhdGljIGNvbnN0IGNoYXIqIG9yaWdpbmFsRGF0YUFzU3RyaW5nKE5TVVJMICpVUkwpCiB7Ci0g
ICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXZWJDb3JlOjpvcmlnaW5hbFVSTERhdGEoVVJMKSk7Cisg
ICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXVEY6Om9yaWdpbmFsVVJMRGF0YShVUkwpKTsKIH0KIAog
c3RhdGljIGNvbnN0IGNoYXIqIHVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCiB7Ci0gICAg
cmV0dXJuIFtXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyhVUkwpIFVURjhTdHJpbmddOworICAg
IHJldHVybiBbV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhVUkwpIFVURjhTdHJpbmddOwogfQogCiBz
dGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29uc3QgY2hhciogbGl0ZXJhbCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEobGl0ZXJhbEFzRGF0YShsaXRlcmFsKSwgbmlsKTsKKyAg
ICByZXR1cm4gV1RGOjpVUkxXaXRoRGF0YShsaXRlcmFsQXNEYXRhKGxpdGVyYWwpLCBuaWwpOwog
fQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhcykKQEAgLTEyNyw4ICsxMjcsOCBAQCBURVNUKFdl
YkNvcmUsIFVSTEV4dHJhc19EaXZpc2lvblNpZ24pCiAgICAgLy8gU2VsZWN0ZWQgdGhlIGRpdmlz
aW9uIHNpZ24gYXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1BU0NJSSBjaGFyYWN0ZXIgdGhhdCBpcyBh
bGxvd2VkIGluIGhvc3QgbmFtZXMsIHNpbmNlIGl0J3MgYSBsb29rYWxpa2UgY2hhcmFjdGVyLgog
CiAgICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1c2VkIHdoZW4gdHlwaW5nIGlu
IGEgVVJMLgotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUueG4tLWNvbW90aGVyc2l0ZS1r
amIub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0
cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAg
ICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIHVz
ZXJWaXNpYmxlU3RyaW5nKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v
c2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVR
KCJodHRwOi8vc2l0ZS54bi0tY29tb3RoZXJzaXRlLWtqYi5vcmciLCBvcmlnaW5hbERhdGFBc1N0
cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhC
N290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5j
b21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTFdpdGhV
c2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBu
aWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3Ig
VVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RS
RVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFz
U3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIp
KSk7CkBAIC0xMzcsMTcgKzEzNywxNyBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19EaXZpc2lv
blNpZ24pCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0
ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb20lQzMl
QjdvdGhlcnNpdGUub3JnIikpKTsKIAogICAgIC8vIFNlcGFyYXRlIGZ1bmN0aW9ucyB0aGF0IGRl
YWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1lIG9uIGl0cyBvd24uCi0gICAgRVhQRUNUX1NUUkVRKCJz
aXRlLnhuLS1jb21vdGhlcnNpdGUta2piLm9yZyIsIFtXZWJDb3JlOjplbmNvZGVIb3N0TmFtZShA
InNpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwotICAgIEVYUEVD
VF9TVFJFUSgic2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZGVjb2Rl
SG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsK
KyAgICBFWFBFQ1RfU1RSRVEoInNpdGUueG4tLWNvbW90aGVyc2l0ZS1ramIub3JnIiwgW1dURjo6
ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJp
bmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwg
W1dURjo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVU
RjhTdHJpbmddKTsKIH0KIAotVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfU29saWR1cykKK1RFU1Qo
V1RGLCBVUkxFeHRyYXNfU29saWR1cykKIHsKICAgICAvLyBTZWxlY3RlZCBmdWxsIHdpZHRoIHNv
bGlkdXMsIHdoaWNoIGxvb2tzIGxpa2UgdGhlIHNvbGlkdXMsIHdoaWNoIGlzIHRoZSBjaGFyYWN0
ZXIgdGhhdCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgaG9zdCBuYW1lLgogCiAgICAgLy8gQ29k
ZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1c2VkIHdoZW4gdHlwaW5nIGluIGEgVVJMLgotICAg
IEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tL290aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERh
dGFBc1N0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUu
Y29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly9zaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmcoV2ViQ29y
ZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90
aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20v
b3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBl
ZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwp
KSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIHVz
ZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRl
LmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBh
dGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBv
ciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4RUZc
eEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJo
dHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikpKTsKQEAgLTE1Niw4ICsx
NTYsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19Tb2xpZHVzKQogICAgIEVYUEVDVF9TVFJF
USgiaHR0cDovL3NpdGUuY29tJUVGJUJDJThGb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3Ry
aW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVFRiVCQyU4Rm90aGVyc2l0ZS5vcmciKSkp
OwogCiAgICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGp1c3QgYSBob3N0
IG5hbWUgb24gaXRzIG93bi4KLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tL290aGVyc2l0ZS5v
cmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVy
c2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbS9vdGhl
cnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4
OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5j
b20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmVuY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhC
Q1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJFUSgic2l0
ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmRlY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVG
XHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwogfQogCiBURVNUKFdlYkNvcmUs
IFVSTEV4dHJhc19TcGFjZSkKQEAgLTE2NSw4ICsxNjUsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4
dHJhc19TcGFjZSkKICAgICAvLyBTZWxlY3RlZCBpZGVvZ3JhcGhpYyBzcGFjZSwgd2hpY2ggbG9v
a3MgbGlrZSB0aGUgQVNDSUkgc3BhY2UsIHdoaWNoIGlzIG5vdCBhbGxvd2VkIHVuZXNjYXBlZC4K
IAogICAgIC8vIENvZGUgcGF0aCBzaW1pbGFyIHRvIHRoZSBvbmUgdXNlZCB3aGVuIHR5cGluZyBp
biBhIFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5v
cmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5n
KEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAg
ICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCB1c2VyVmlz
aWJsZVN0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUu
Y29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhX
VEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEUzXHg4MFx4ODBv
dGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29t
JTIwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBl
ZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBuaWwp
KSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJM
cyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFB
c1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUu
b3JnIikpKTsKQEAgLTE3NSwzMSArMTc1LDMxIEBAIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX1Nw
YWNlKQogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJUUzJTgwJTgwb3RoZXJzaXRl
Lm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVFMyU4
MCU4MG90aGVyc2l0ZS5vcmciKSkpOwogCiAgICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25zIHRoYXQg
ZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5hbWUgb24gaXRzIG93bi4KLSAgICBFWFBFQ1RfU1RSRVEo
InNpdGUuY29tIG90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRl
LmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7Ci0gICAgRVhQRUNU
X1NUUkVRKCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZGVj
b2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3Ry
aW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbSBvdGhlcnNpdGUub3JnIiwgW1dURjo6
ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4
U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0
ZS5vcmciLCBbV1RGOjpkZWNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJz
aXRlLm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAogVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfRmls
ZSkKIHsKLSAgICBFWFBFQ1RfU1RSRVEoImZpbGU6Ly8vJUUyJTk4JTgzIiwgW1tXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTovLy/imIMiLCBuaWwpIGFic29sdXRlU3RyaW5n
XSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJmaWxlOi8vLyVFMiU5OCU4MyIsIFtb
V1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTovLy/imIMiLCBuaWwpIGFic29sdXRl
U3RyaW5nXSBVVEY4U3RyaW5nXSk7CiB9CiAKIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX1BhcnNp
bmdFcnJvcikKIHsKICAgICAvLyBFeHBlY3QgSUROIGZhaWx1cmUuCi0gICAgTlNVUkwgKnVybCA9
IFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v76O/LmNvbSIsIG5pbCk7
CisgICAgTlNVUkwgKnVybCA9IFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly/v
o78uY29tIiwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwgPT0gbmlsKTsKIAotICAgIE5TU3Ry
aW5nICplbmNvZGVkSG9zdE5hbWUgPSBXZWJDb3JlOjplbmNvZGVIb3N0TmFtZShAImh0dHA6Ly/v
o78uY29tIik7CisgICAgTlNTdHJpbmcgKmVuY29kZWRIb3N0TmFtZSA9IFdURjo6ZW5jb2RlSG9z
dE5hbWUoQCJodHRwOi8v76O/LmNvbSIpOwogICAgIEVYUEVDVF9UUlVFKGVuY29kZWRIb3N0TmFt
ZSA9PSBuaWwpOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19OaWwpCiB7Ci0gICAgTlNV
UkwgKnVybDEgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKG5pbCwgbmlsKTsKKyAg
ICBOU1VSTCAqdXJsMSA9IFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhuaWwsIG5pbCk7CiAg
ICAgRVhQRUNUX1RSVUUodXJsMSA9PSBuaWwpOwogCi0gICAgTlNVUkwgKnVybDIgPSBXZWJDb3Jl
OjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChuaWwsIG5pbCk7CisgICAgTlNVUkwg
KnVybDIgPSBXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKG5pbCwgbmlsKTsK
ICAgICBFWFBFQ1RfVFJVRSh1cmwyID09IG5pbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRBbHRlcm5hdGVIVE1M
U3RyaW5nLm1tCmluZGV4IDUwNWFmMzU3ZTVkMTAxZDE3NmI1MjNkMTU1YTYyOTRiYmU4ZjdmZGYu
LjkwZDQ2MTBjNzQxMDk5ZmFlNGE2MGJlOTc3NjVjYzNkN2IwZWNkNDQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJp
bmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkQWx0
ZXJuYXRlSFRNTFN0cmluZy5tbQpAQCAtMzAsOSArMzAsOSBAQAogCiAjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
TlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4K
IAogc3RhdGljIGJvb2wgaXNEb25lOwogc3RhdGljIGludCBwcm92aXNpb25hbExvYWRDb3VudDsK
QEAgLTExMCw3ICsxMTAsNyBAQCBURVNUKFdLV2ViVmlldywgTG9hZEFsdGVybmF0ZUhUTUxTdHJp
bmdGcm9tUHJvdmlzaW9uYWxMb2FkRXJyb3JCYWNrVG9CYWNrKQogICAgICAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgICAgIGNoYXIgbGl0
ZXJhbFtdID0gImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tPD4vIjsKLSAgICAgICAgTlNVUkwqIHRh
cmdldFVSTCA9IFdlYkNvcmU6OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRl
cmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBuaWwpOworICAgICAgICBOU1VSTCogdGFyZ2V0
VVJMID0gV1RGOjpVUkxXaXRoRGF0YShbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bGl0ZXJhbCBsZW5n
dGg6c3RybGVuKGxpdGVyYWwpXSwgbmlsKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0YXJnZXRVUkxdXTsKICAgICAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0YXJnZXRVUkxdXTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2Fk
SW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQppbmRleCBhYzk4YzE5NjQ0MGFiN2I1NTA4NGM5
NWQ3OGQwOWZlN2ZjNzk3ZTNjLi5lYWE1NWNhYzY3ZjhlODQ0MTQzMjdkNGRhZTMyNjA5NjQ1ZDk1
YmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xv
YWRJbnZhbGlkVVJMUmVxdWVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQpAQCAtMjgsMTAgKzI4LDEwIEBACiAj
aWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZp
Z2F0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIHN0
YXRpYyBib29sIGRpZEZpbmlzaFRlc3Q7CiBzdGF0aWMgYm9vbCBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkOwpAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgY29uc3QgY2hhciBsaXRlcmFsW10gPSAiaHR0
cHM6Ly93d3cuZXhhbXBsZS5jb208Pi8iOwogCiBzdGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29u
c3QgY2hhciogbGl0ZXJhbCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEoW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7
CisgICAgcmV0dXJuIFdURjo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVy
YWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CiB9CiAKIEBpbnRlcmZhY2UgTG9hZElu
dmFsaWRVUkxOYXZpZ2F0aW9uQWN0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGU+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAppbmRleCBiMDUxNDUyNGY3MjU5MWY2Y2I1MDI5
MTEwMzFiN2JmYThhM2FmYTA3Li4xYmFhZTk1YWMwNjIzMWZiZmIyOWE4YmExNDE4Nzc3MmI1YWYz
YWQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAKQEAgLTIyLDggKzIyLDggQEAKIAogI2luY2x1ZGUg
IldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKIHN0YXRpYyBXZWJLaXRUZXN0U2Vy
dmVyKiBrU2VydmVyOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0KaW5kZXggOGQ1NGNhNmUxOWUwZDY5OTYyYTVmMTUz
MjM1NDJhZWYyMDM1NzVkMS4uODZiN2IzYzRhOTk4NjMwZDI4NWU1MTc5NWZjOGFkNjk4MWNmYzky
NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRV
UkxSZXF1ZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRJbnZh
bGlkVVJMUmVxdWVzdC5tbQpAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvblByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBzdGF0aWMgYm9vbCBkaWRGaW5p
c2hUZXN0Owogc3RhdGljIGJvb2wgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZDsKQEAgLTUxLDcgKzUx
LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZhaWxQcm92aXNpb25h
bExvYWRXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwg
V2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMKTsKIAogICAgIHN0YXRpYyBjaGFyIGxpdGVyYWxbXSA9
ICJodHRwczovL3d3dy5leGFtcGxlLmNvbSQvIjsKLSAgICBOU1VSTCAqZmFpbGVkVVJMID0gV2Vi
Q29yZTo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0
cmxlbihsaXRlcmFsKV0sIG5pbCk7CisgICAgTlNVUkwgKmZhaWxlZFVSTCA9IFdURjo6VVJMV2l0
aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFs
KV0sIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUoW2Vycm9yLnVzZXJJbmZvW0AiTlNFcnJvckZhaWxp
bmdVUkxLZXkiXSBpc0VxdWFsOmZhaWxlZFVSTF0pOwogCiAgICAgZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9T
U0xLZXlHZW5lcmF0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xLZXlH
ZW5lcmF0b3IubW0KaW5kZXggZGRlOGM3ZDAxZGE2NzgwNDE5NWM3ZjQxZTI5MTFhNzg5YzcwMmM1
Mi4uYWMxYmY3ZGI2Yzk4YjAyZDI1NTI2NTk3MmJjMjk5ZGEwYzk4N2VkZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5R2VuZXJhdG9yLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NTTEtleUdlbmVyYXRvci5tbQpAQCAtMjksOSAr
MjksOSBAQAogI2ltcG9ydCA8U2VjdXJpdHkvU2VjQXNuMVRlbXBsYXRlcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdlbmVy
YXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQg
PHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5o
PgogCkBAIC02OSw3ICs2OSw3IEBAIGNvbnN0IFNlY0FzbjFUZW1wbGF0ZSBzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VUZW1wbGF0ZVtdIHsKICAgICB7IDAsIDAsIDAsIDAgfQogfTsKIAotY29u
c3QgV2ViQ29yZTo6VVJMIHVybCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgImh0dHA6
Ly93d3cud2Via2l0Lm9yZy8iKTsKK2NvbnN0IFVSTCB1cmwgPSBVUkwoVVJMKCksICJodHRwOi8v
d3d3LndlYmtpdC5vcmcvIik7CiAKIGNsYXNzIFNTTEtleUdlbmVyYXRvclRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9Q
bGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5kZXggOGY3NTVjMzJjOGMyZTJlMGQzNzlkM2U1ZjA3
Y2M2YjliZGNjMTg2NS4uOTE3Y2JlYmNlZTU2YzdjMTc2NDgyMGZjYmQxZDBiOGYzNDkwNjU0ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4u
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNw
cApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8U2hsd2FwaS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351489</attachid>
            <date>2018-10-03 01:08:18 -0700</date>
            <delta_ts>2018-10-03 01:52:15 -0700</delta_ts>
            <desc>Add Linux support</desc>
            <filename>bug-190234-20181003170816.patch</filename>
            <type>text/plain</type>
            <size>1274860</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2Y2I1MjQ5NmNlZGVkZGJhYjM0NDA0
Mjc5MzdlMWM4NmQ3YTg4ZjQuLjZhNmQyOTA5NjY3OTgwNGQzZDljNDY2MGFmZTNhMTVlMDZiYWFm
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTgtMTAtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUg
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAg
ICAgICAgKiB3dGYvVVJMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgICogd3Rm
L1VSTC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmguCisgICAg
ICAgICogd3RmL1VSTEhhc2guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTEhhc2guaC4KKyAgICAgICAgKFdURjo6VVJMSGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6
OlVSTEhhc2g6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvVVJMUGFyc2VyLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAuCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KToKKyAgICAgICAgKFdURjo6VVJMUGFy
c2VyOjpwYXJzZUF1dGhvcml0eSk6CisgICAgICAgICogd3RmL1VSTFBhcnNlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmguCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpyZXN1bHQp
OgorICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4dHJhcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAuCisgICAgICAgICogd3RmL2NmL0NG
VVJMRXh0cmFzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVS
TEV4dHJhcy5oLgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAuCisgICAgICAgICogd3RmL2NvY29hL05T
VVJMRXh0cmFzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRy
YXMubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0uCisgICAgICAgIChXVEY6OmlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIp
OgorICAgICAgICAoV1RGOjppc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdU
Rjo6aXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjppc0xv
b2thbGlrZUNoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OndoaXRlTGlzdElETlNjcmlwdCk6Cisg
ICAgICAgIChXVEY6OnJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKToKKyAgICAgICAgKFdURjo6
YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KToKKyAgICAgICAgKFdURjo6aXNTZWNv
bmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyk6CisgICAgICAgIChXVEY6OmlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjphbGxDaGFyYWN0ZXJzQWxs
b3dlZEJ5VExEUnVsZXMpOgorICAgICAgICAoV1RGOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6Cisg
ICAgICAgIChXVEY6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChX
VEY6Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChXVEY6OmRlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKToKKyAgICAgICAgKFdURjo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFu
Z2UpOgorICAgICAgICAoV1RGOjpkZWNvZGVIb3N0TmFtZSk6CisgICAgICAgIChXVEY6OmVuY29k
ZUhvc3ROYW1lKToKKyAgICAgICAgKFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyk6
CisgICAgICAgIChXVEY6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKToKKyAgICAgICAg
KFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcpOgorICAgICAgICAoV1RGOjphcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6CisgICAgICAgIChXVEY6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKToKKyAgICAgICAgKFdURjo6bWFwSG9zdE5hbWVz
KToKKyAgICAgICAgKFdURjo6c3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOgorICAgICAgICAo
V1RGOjpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOgorICAgICAg
ICAoV1RGOjpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIpOgorICAgICAgICAoV1RGOjpV
UkxXaXRoRGF0YSk6CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKToKKyAg
ICAgICAgKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyk6CisgICAgICAgIChXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKToKKyAgICAgICAgKFdURjo6aGFzUXVlc3Rpb25N
YXJrT25seVF1ZXJ5U3RyaW5nKToKKyAgICAgICAgKFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5
cGUpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENo
YXJhY3Rlcik6CisgICAgICAgIChXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6CisgICAgICAg
IChXVEY6Om9yaWdpbmFsVVJMRGF0YSk6CisgICAgICAgIChXVEY6OmNyZWF0ZVN0cmluZ1dpdGhF
c2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KToKKyAgICAgICAgKFdURjo6aXNVc2VyVmlzaWJsZVVSTCk6CisgICAgICAgIChXVEY6OnJhbmdl
T2ZVUkxTY2hlbWUpOgorICAgICAgICAoV1RGOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6CisgICAg
ICAgICogd3RmL2NvY29hL1VSTENvY29hLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VSTE1hYy5tbS4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOgorICAgICAg
ICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2xpYi9HVW5p
cXVlUHRyU291cC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0dVbmlxdWVQdHJTb3VwLmguCisgICAgICAgICogd3RmL2dsaWIvVVJMU291cC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwLgor
CiAyMDE4LTEwLTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBb
bWFjT1NdIFN3aXRjaGluZyB0byBkaXNjcmV0ZSBHUFUgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIFVJ
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOWQzMGE0OGM5Y2M2NzczN2Y2Y2ZlY2VkYjRmYWFmMGEx
YTE4MjEwLi42NmUxYzVjY2IxMjBmYjA0MTRjYmRjNDE0YjNmZDgyNmM3MTNlYTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTQwIEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRv
IFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkw
MjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBV
UkwgaXMgYSBsb3ctbGV2ZWwgY29uY2VwdCB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbiBvdGhlciBj
bGFzc2VzIGluIFdlYkNvcmUuCisgICAgICAgIFdlIGFyZSBzdGFydGluZyB0byB1c2UgVVJMcyBp
biBKYXZhU2NyaXB0Q29yZSBmb3IgbW9kdWxlcy4KKyAgICAgICAgSSBuZWVkIFVSTCBhbmQgVVJM
UGFyc2VyIGluIGEgcGxhY2Ugd2l0aCBmZXdlciBkZXBlbmRlbmNpZXMgZm9yIHJkYXI6Ly9wcm9i
bGVtLzQ0MTE5Njk2CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50
RXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5j
cHA6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVs
ZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5oOgor
ICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAgICAgICAg
KiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTTWFwTGlrZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVh
ZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0Nv
bnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNp
b25SdWxlc0ZvclBpbmdMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjphcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVS
ZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3NzL1N0
eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+Ojpjb25zdHJ1
Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg6
CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb21wbGV0ZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5z
dXJlVGVtcGxhdGVEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dXJsRm9yQmluZGluZ3MgY29uc3QpOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzSmF2YVNjcmlwdFVS
TEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJDb250ZXh0Rm9yRWxlbWVudCk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YmFzZVVSSSBjb25zdCk6
CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5oOgor
ICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZG9tL1Nl
Y3VyaXR5Q29udGV4dC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTCk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRRdW90ZWRVUkxBdHRyaWJ1
dGVWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgICogZWRp
dGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU3VicmVzb3VyY2VVUkxB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCk6
CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHA6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaDoKKyAgICAg
ICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JVUkwuY3BwOgorICAg
ICAgICAqIGZpbGVhcGkvQmxvYlVSTC5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAg
ICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuaDoK
KyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgICogaHRtbC9ET01VUkwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
RE9NVVJMLmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVuVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbik6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RG
OjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50
PFdlYkNvcmU6OlVSTD46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0
bWFwLmg6CisgICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmg6CisgICAgICAg
ICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1h
bmFnZXIuaDoKKyAgICAgICAgKiBodG1sL1VSTElucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRt
bC9VUkxSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6VVJMU2VhcmNoUGFyYW1zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9tQXNzb2NpYXRlZFVSTCk6CisgICAgICAgICogaHRt
bC9VUkxVdGlscy5oOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldEhvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldFBvcnQpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNlbWljb2xvblNlcGFyYXRlZFZhbHVlQ29udGFpbnNKYXZhU2NyaXB0
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpY
U1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZmlsdGVySW5wdXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0
ZXJCdXR0b25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmlzTGlrZWx5U2FmZVJlc291cmNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9y
Lmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24u
aDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnJlY2VpdmVkRmlyc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250
aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0pOgorICAgICAgICAq
IGxvYWRlci9MaW5rTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0xvYWRUaW1pbmcuaDoKKyAg
ICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvTWl4ZWRD
b250ZW50Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVja2Vy
OjpjaGVja0Zvcm1Gb3JNaXhlZENvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2hvdWxkU2NoZWR1
bGVOYXZpZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5oOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZEluZm8uaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
VGltaW5nLmg6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAqIGxvYWRl
ci9TdWJmcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L01hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQ
YXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9u
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW06CisgICAgICAgICogcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvQ29u
dGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFi
bGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNzKToKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0V2ZW50U291cmNlLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9IaXN0b3J5Lmg6CisgICAgICAg
ICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6dXJsIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAqIHBh
Z2UvTG9jYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5oOgorICAgICAgICAq
IHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHA6CisgICAgICAgICogcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5oOgor
ICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9Tb2NrZXRQcm92aWRl
ci5oOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oOgorICAgICAgICAqIHBh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5oOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5oOgorICAgICAgICAqIHBh
Z2UvVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBwYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaDoK
KyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Lmg6CisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9E
cmFnRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MaW5rSWNvbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6Y2FuRXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmg6CisgICAgICAgICogcGxh
dGZvcm0vU291cmNlc1NvdXAudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vVXNlckFnZW50UXVpcmtzLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2Vk
U2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKHdlYktpdE1lZGlhU3JjU2V0VXJpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnSW1h
Z2VHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzUGxhaW5U
ZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUHVibGljU3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5h
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjppc0FybWVu
aWFuTG9va2FsaWtlQ2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQXJt
ZW5pYW5TY3JpcHRDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBU0NJ
SURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
aXNMb29rYWxpa2VDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d2hpdGVM
aXN0SUROU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJRE5TY3JpcHRX
aGl0ZUxpc3RGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFsbENoYXJhY3RlcnNJ
bklETlNjcmlwdFdoaXRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1NlY29u
ZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6YWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Om1hcEhvc3ROYW1lV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW5j
b2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFJhbmdlc1Ro
YXROZWVkTWFwcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFuZ2Vz
VGhhdE5lZWRFbmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFu
Z2VzVGhhdE5lZWREZWNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseUhv
c3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjphcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjptYXBIb3N0TmFtZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c3Ry
aW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJM
QnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpVUkxXaXRoRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3Rlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpVUkxCeVJlbW92aW5nVXNlckluZm8pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6b3JpZ2luYWxVUkxEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc1VzZXJWaXNpYmxlVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJh
bmdlT2ZVUkxTY2hlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9va3NMaWtlQWJz
b2x1dGVVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JQYXJ0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVz
dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94
eVNlcnZlckN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Byb3h5U2VydmVyU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRF
bmNvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vQlN0cmluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICogcGx1Z2lu
cy9QbHVnaW5EYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHA6CisgICAgICAgICogc3ZnL1NW
R0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjpzb3Vy
Y2VVUkkgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNhY2hlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dXNlclZpc2libGVTdHJp
bmcpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUp
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCiAyMDE4LTEwLTAyICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWVzc2FnZUV2ZW50LnBvcnRzIHNo
b3VsZCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwNTk2NDRhMDViYTNmZjRh
NGJiNjc4YTE5ZjJkMDQxNjc2MTI0NWQuLjM5OTRiZjYxZTRkZmQ2NjFlM2FmY2QzYzBiZDQ5MzEw
MTVjOTZmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgyIEBACisyMDE4LTEwLTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwg
ZnJvbSBXZWJDb3JlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6OmJsb2JTaXplKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNr
ZXI6OnNldENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWRDaGVja2VyOjp1cmwgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndyaXRl
QmxvYlRvRmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlY29u
bmVjdFRvKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
bG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRTdHJlYW06
OmNyZWF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3RpY3M6
OnJlY29yZFJldHJpZXZlZENhY2hlZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTdGF0aXN0aWNzOjpyZWNvcmRSZXZhbGlkYXRpb25TdWNjZXNzKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5mbzo6Zmlyc3RQYXJ0eUZv
ckNvb2tpZXMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVFdmVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXF1
ZXN0OjpvcGVyYXRvciBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6UmVzcG9uc2U6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6RXJy
b3I6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY29uc3QpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6OmZpbmRCZXN0RnV6enlNYXRjaCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjp1cmxJZGVudGlmeWlu
Z0NvbW1vbkRvbWFpbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3Jr
Q2FwdHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6
UmVzb3VyY2U6OnVybCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXNvdXJj
ZTo6cXVlcnlQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05l
dHdvcmtDYXB0dXJlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtT
ZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6b3BlbkNGVVJMUmVmKToKKyAgICAgICAgKFdlYktp
dDo6cmVwbGFjZWROU1dvcmtzcGFjZV9sYXVuY2hBcHBsaWNhdGlvbkF0VVJMX29wdGlvbnNfY29u
ZmlndXJhdGlvbl9lcnJvcik6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwuaDoKKyAgICAg
ICAgKEFQSTo6VVJMOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpVUkw6OmVxdWFscyk6CisgICAg
ICAgIChBUEk6OlVSTDo6VVJMKToKKyAgICAgICAgKEFQSTo6VVJMOjp1cmwgY29uc3QpOgorICAg
ICAgICAoQVBJOjpVUkw6OnBhcnNlVVJMSWZOZWNlc3NhcnkgY29uc3QpOgorICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg6CisgICAgICAgIChBUEk6OlVzZXJD
b250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1VSTCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQ
SS9jL1dLVVJMUmVxdWVzdC5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9u
c2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAo
V0tVUkxDcmVhdGVXaXRoQ0ZVUkwpOgorICAgICAgICAoV0tVUkxDb3B5Q0ZVUkwpOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6
V2ViQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbToKKyAgICAg
ICAgKC1bTlNVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtOjppdGVtSXNJblNhbWVEb2N1bWVudCBjb25zdCk6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJFcnJvcnMuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9j
Zi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHA6Cisg
ICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlv
bjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbi5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjp0YWtlUmVkaXJlY3RDaGFpbik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5h
dmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyk6CisgICAg
ICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGljeSBjb25zdCk6
CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kg
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAg
KEFQSTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJT
Y3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTY3JpcHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKEFQSTo6VXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwOgorICAgICAgICAoZmls
ZVBhdGhzRnJvbUZpbGVVUkxzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cDoKKyAgICAgICAgKFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEpOgorICAg
ICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZp
Z2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3Bw
OgorICAgICAgICAoV0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXS1Bh
Z2VHcm91cEFkZFVzZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2Vlbik6CisgICAgICAgIChXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6Cisg
ICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVz
b3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJl
ZEFzU3VicmVzb3VyY2VVbmRlcik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZy
b20pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5p
cXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tIVFRQQ29va2llU3RvcmUubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJTY3JpcHQubW06CisgICAgICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6
aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFj
a2xpc3Q6YXNzb2NpYXRlZFVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmZvclVSTFNjaGVtZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiB1cmxTY2hlbWVIYW5kbGVyRm9yVVJM
U2NoZW1lOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5p
ZmVzdC5tbToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBpbml0V2l0aENvZGVy
Ol0pOgorICAgICAgICAoK1tfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZl
c3RGcm9tSlNPTjptYW5pZmVzdFVSTDpkb2N1bWVudFVSTDpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5
bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDps
ZWdhY3lCbGFja2xpc3Q6YmFzZVVSTDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9jb29raWVf
bWFuYWdlcl9nZXRfY29va2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEZpbGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5f
bmV3X2Zvcl91cmkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVu
dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQ
YXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
dmFsaWRhdGVNZXJjaGFudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29h
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBw
bGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjpuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OmRvbWFp
bkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9Eb3dubG9hZENsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRp
ZEZpbmlzaCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpyZXNvbHZlV2ViR0xMb2FkUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1bHQ6OlNhZmVCcm93c2luZ1Jlc3Vs
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW06CisgICAgICAgICgtW19XS1ByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBmaW5pc2g6
XSk6CisgICAgICAgIChXZWJLaXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2gpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJ
Q2xpZW50OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlD
bGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIpOgorICAgICAgICAoV2ViS2l0
OjpyZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMpOgorICAgICAgICAoV2Vi
S2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3Jp
Z2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3Zl
cnlBdHRlbXB0ZXIubW06CisgICAgICAgICgtW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0
ZW1wdGVyIGF0dGVtcHRSZWNvdmVyeV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVRvVVJMRm9yRmls
ZVByb21pc2VQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldFJlZGlyZWN0Q2hh
aW4pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpyZWRpcmVjdENoYWluIGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1
bWVudE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpzZXRV
bnJlYWNoYWJsZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjp1cmwgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRTdGF0ZTo6cHJvdmlzaW9uYWxVUkwgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRTdGF0ZTo6dW5yZWFjaGFibGVVUkwgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VMb2FkU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpo
YXNPbmx5U2VjdXJlQ29udGVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
SW5mb1N0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5
TWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaDoKKyAgICAg
ICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nUmVzdWx0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpTYWZlQnJvd3NpbmdSZXN1bHQ6OnVybCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdD
b250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lUHJveHk6OnVybCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJv
eHk6OnByb3Zpc2lvbmFsVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94
eTo6dW5yZWFjaGFibGVVUkwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGVudFJ1bGVM
aXN0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNz
RGlkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRl
cm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW06CisgICAgICAgICgtW1dLQWN0
aW9uU2hlZXRBc3Npc3RhbnQgX2NyZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25zOnNob3dMaW5r
VGl0bGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hh
cmVFbGVtZW50V2l0aFVSTDpyZWN0Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmVz
ZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxlcjpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1b
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbToKKyAgICAgICAg
KC1bV0tMZWdhY3lQREZWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhV
Ukw6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAg
ICAgKC1bV0tQREZWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6
cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlciBfdXBkYXRlTG9jYXRpb25JbmZvXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9M
ZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVMZWdh
Y3lTZXNzaW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIg
X2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlTWVyY2hhbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2Fk
RGF0YVJlcXVlc3QpOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNs
aWVudDo6dXNlckFnZW50Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwOgorICAgICAgICAoV0tCdW5kbGVGcmFt
ZUFsbG93c0ZvbGxvd2luZ0xpbmspOgorICAgICAgICAoV0tCdW5kbGVGcmFtZUNvcHlTdWdnZXN0
ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTCk6CisgICAgICAgIChXS0J1bmRsZUZyYW1lQ29w
eU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VI
YXNMb2NhbERhdGFGb3JVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5jcHA6CisgICAgICAgIChjb252ZXJ0VG9V
VEY4U3RyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNv
Y2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNsaWNrZWRMaW5rKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1VUkxSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1
Z2luSW5mbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92
aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9t
TG9jYWxVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRD
U1BWaW9sYXRpb25SZXBvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRVc2VyU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
aW50T3BlcmF0aW9uR3RrOjpmcmFtZVVSTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKToK
KwogMjAxOC0xMC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIERlcHJlY2F0ZSBXS0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5k
ZXggMTRjNjIwYWFhYjFiN2ExNTY4NTVkY2Q3YTYzOGE2MGQzOGVkMTM1OC4uM2Y5MjIzYmI3ZDE3
ZWIwZDIxNTczMDc1ZmEzNzBjNDczZmM0OTRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKwogMjAxOC0xMC0wMSAgRGVhbiBKYWNrc29u
ICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBTd2l0Y2hpbmcgdG8gZGlzY3Jl
dGUgR1BVIHNob3VsZCBiZSBkb25lIGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggY2UzMWU3MzgxYjg5ZDhkOGQ2NjhiZmIxNDRiMzIyYzg4ZTc2OWY2NS4u
ZTgwNmVlNjE4ZmIyYjcyOTkyOGEwYzBiOGFhOWViNzcwNTU1NTNmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20g
V2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTUF0dHIubW06CisgICAgICAgICogRE9NL0RPTUJsb2IubW06CisgICAg
ICAgICogRE9NL0RPTUNTU0NoYXJzZXRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NJbXBv
cnRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NNZWRpYVJ1bGUubW06CisgICAgICAgICog
RE9NL0RPTUNTU1BhZ2VSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NQcmltaXRpdmVWYWx1
ZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTUnVsZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbi5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVSdWxlLm1tOgor
ICAgICAgICAqIERPTS9ET01DU1NTdHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9ET01DU1NW
YWx1ZS5tbToKKyAgICAgICAgKiBET00vRE9NQ2hhcmFjdGVyRGF0YS5tbToKKyAgICAgICAgKiBE
T00vRE9NQ291bnRlci5tbToKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3VtZW50
VHlwZS5tbToKKyAgICAgICAgKiBET00vRE9NRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTUZp
bGUubW06CisgICAgICAgICogRE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEFyZWFF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQlJFbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MQmFzZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCYXNlRm9u
dEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxD
YW52YXNFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQ29sbGVjdGlvbi5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTERpdkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxE
b2N1bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGaWVsZFNl
dEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRnJh
bWVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tOgor
ICAgICAgICAqIERPTS9ET01IVE1MSFJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
SGVhZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MSUZyYW1lRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEltYWdlRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTElucHV0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00v
RE9NSFRNTExJRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTExhYmVsRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxMaW5rRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1hcEVsZW1lbnQu
bW06CisgICAgICAgICogRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTE1lZGlhRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1ldGFFbGVt
ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MTW9kRWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTE9MaXN0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9iamVjdEVs
ZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
T3B0aW9uc0NvbGxlY3Rpb24ubW06CisgICAgICAgICogRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVt
ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MUGFyYW1FbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MUXVvdGVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MU2NyaXB0
RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxTdHlsZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxU
YWJsZUNhcHRpb25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVDZWxsRWxl
bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRh
YmxlUm93RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxWaWRlb0Vs
ZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUtleWJvYXJkRXZlbnQubW06CisgICAgICAgICog
RE9NL0RPTU1lZGlhTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9NTW91c2VFdmVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NTXV0YXRpb25FdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTmFtZWRO
b2RlTWFwLm1tOgorICAgICAgICAqIERPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW06Cisg
ICAgICAgICogRE9NL0RPTVJhbmdlLm1tOgorICAgICAgICAqIERPTS9ET01TdHlsZVNoZWV0Lm1t
OgorICAgICAgICAqIERPTS9ET01UZXh0Lm1tOgorICAgICAgICAqIERPTS9ET01UZXh0RXZlbnQu
bW06CisgICAgICAgICogRE9NL0RPTVRva2VuTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9NVUlF
dmVudC5tbToKKyAgICAgICAgKiBET00vRE9NWFBhdGhSZXN1bHQubW06CisgICAgICAgICogSGlz
dG9yeS9XZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFzLm1t
OgorICAgICAgICAoLVtOU1VSTCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nXSk6CisgICAgICAgICgt
W05TVVJMIF93ZWJfVVJMQnlSZW1vdmluZ1VzZXJJbmZvXSk6CisgICAgICAgICgtW05TVVJMIF93
ZWJfZGF0YUZvclVSTENvbXBvbmVudFR5cGU6XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfc2No
ZW1lRGF0YV0pOgorICAgICAgICAoLVtOU1VSTCBfd2ViX2hvc3REYXRhXSk6CisgICAgICAgICog
TWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW06CisgICAgICAgICogUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAqIFBsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFt
OjpzZXRSZXF1ZXN0VVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyBj
b25zdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1
cGRhdGVHbG9iYWxIaXN0b3J5KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50
Q29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50
Q29vcmRpbmF0b3JDbGllbnQubW06CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JDbGll
bnQ6OnNob3dQYXltZW50VUkpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW06Cisg
ICAgICAgIChXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAg
ICgtW1dlYkZyYW1lIF9sb2FkRGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6
dW5yZWFjaGFibGVVUkw6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9k
ZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmll
dy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisKIDIwMTgtMTAtMDEgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gU3dpdGNoaW5nIHRvIGRpc2NyZXRl
IEdQVSBzaG91bGQgYmUgZG9uZSBpbiB0aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCmluZGV4IGVjODJkNDlhY2ZmYjc5MTQ1YWYzM2M0MjU5M2EzYzBhZWI0YWRlOGIuLmU2
ZmU2Y2Q3YmFjMGI1OWYwOTllNDA1MmZkODQyZTVhMGJjNmI0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2Vi
Q29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmNwcDoKKyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBl
cnMuaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpbkRhdGFiYXNlLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZVdpbi5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGUuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5jcHA6CisgICAgICAgIChXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5J
bmZvKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAg
ICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAg
KiBXZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAg
ICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgICogV2ViSGlzdG9yeS5oOgorICAgICAgICAq
IFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6Cisg
ICAgICAgICogV2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIFdlYlVSTFJlc3BvbnNl
LmNwcDoKKyAgICAgICAgKFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAg
ICogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisK
IDIwMTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgUGFyc2VkVVJMU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjY2YyOTQ2YTlkYTVmYzg2MGYzNThjZDMwZWM5YjM2OGY1
MGQ2ZjY5Li44ZTVmY2VkZmI1MWE1MjZjZTdlZTRkMTgxZGM4ZTA3OTA2NTE2MGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc2LDYgKzc2LDEyIEBACiAJ
CTUzMTFCRDUzMUVBNzFDQUQwMDUyNTI4MSAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTFCRDUxMUVBNzFDQUQwMDUyNTI4MSAv
KiBTaWduYWxzLmNwcCAqLzsgfTsKIAkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVh
ZE1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMUJENUIxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwICovOyB9Owog
CQk1MzUzNEYyQTFFQzBFMTBFMDAxNDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTM0RjI5MUVDMEUxMEUw
MDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKENsaWVudCwgU2VydmVyLCApOyB9OyB9OworCQk1QzFGMDU5MzIxNjQzNTZCMDAzOTMwMkMg
LyogQ0ZVUkxFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMxRjA1OTEyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLzsg
fTsKKwkJNUMxRjA1OTUyMTY0MzdCMzAwMzkzMDJDIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUYwNTk0MjE2NDM3QjMwMDM5MzAy
QyAvKiBVUkxDRi5jcHAgKi87IH07CisJCTVDQzBFRTc1MjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQ
YXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNDMEVFNzMyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5jcHAgKi87IH07CisJCTVDQzBF
RTc2MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFNzQyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAg
Ki87IH07CisJCTVDQzBFRTg5MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTg2MjE2MkJDMjIw
MEExQTg0MiAvKiBVUkxDb2NvYS5tbSAqLzsgfTsKKwkJNUNDMEVFOEEyMTYyQkMyMjAwQTFBODQy
IC8qIE5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNDMEVFODgyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tICovOyB9
OwogCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUx
MzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBFQ0E2MEQxQjAyNDI2
ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MEExQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21p
Y1N0cmluZ0ltcGwuY3BwICovOyB9OwogCQk3QTA1MDkzRjFGQjlEQ0M1MDBCMzNGQjggLyogSlNP
TlZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTA1MDkzRTFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVlcy5jcHAgKi87IH07CkBAIC0z
NzIsNyArMzc4LDE5IEBACiAJCTU1MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGlueUxSVUNhY2hlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1OTdGODJDMUQ5NEI5OTcwMDY2QkMyMSAvKiBT
eW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN5bmNocm9uaXplZEZpeGVkUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUI0MzM4M0E1RDBCNDYzQzk0MzNEOTMzIC8qIEluZGV4TWFwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluZGV4TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDMUYwNTkxMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRlVSTEV4dHJhcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDMUYwNTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRlVSTEV4dHJhcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QzFGMDU5NDIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0Yu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMQ0YuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzFGMDU5NzIxNjQzOTk0MDAzOTMwMkMgLyogVVJM
SGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlx
dWVSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlUmVmLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTcxMjE2MjlGMTgwMEExQTg0MiAvKiBV
UkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTcyMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMUGFyc2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTczMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJz
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzQyMTYyOUYxOTAwQTFBODQy
IC8qIFVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3NzIxNjJBMDEwMDBBMUE4NDIg
LyogVVJMSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAv
KiBVUkxDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVS
TENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU4NzIxNjJCQzIy
MDBBMUE4NDIgLyogTlNVUkxFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTlNVUkxFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFODgy
MTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTlNVUkxFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUlu
SW5kZXggPSAwOyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTVEMjQ3QjZFMTQ2ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVE
MjQ3QjcwMTQ2ODlDNDcwMEU3OEI3NiAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzIwLDkgKzczOCwxMiBAQAogCQkyQ0RFRDBGMDE4MTE1QzNGMDA0REJBNzAgLyogY2YgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDMUYwNTkxMjE2
NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8sCisJCQkJNUMxRjA1OTIyMTY0MzU2
QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmggKi8sCiAJCQkJQzJCQ0ZDNDExRjYxRDYxNjAwQzky
MjJDIC8qIExhbmd1YWdlQ0YuY3BwICovLAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAv
KiBSdW5Mb29wQ0YuY3BwICovLAogCQkJCTFBRkRFNjQ3MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBl
Q2FzdHNDRi5oICovLAorCQkJCTVDMUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTExMzEsNiArMTE1MiwxMiBAQAogCQkJCUUzMDBFNTIxMjAzRDY0NUYwMERBNzlCRSAvKiBVbmlx
dWVBcnJheS5oICovLAogCQkJCTVDN0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlxdWVSZWYu
aCAqLywKIAkJCQlDRDc2MDBGRjFGOTBBM0NBMDAwMjZFMjYgLyogVW5zYWZlUG9pbnRlci5oICov
LAorCQkJCTVDQzBFRTc0MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwICovLAorCQkJCTVDQzBF
RTcxMjE2MjlGMTgwMEExQTg0MiAvKiBVUkwuaCAqLywKKwkJCQk1QzFGMDU5NzIxNjQzOTk0MDAz
OTMwMkMgLyogVVJMSGFzaC5oICovLAorCQkJCTVDQzBFRTc3MjE2MkEwMTAwMEExQTg0MiAvKiBV
UkxIYXNoLmggKi8sCisJCQkJNUNDMEVFNzMyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5j
cHAgKi8sCisJCQkJNUNDMEVFNzIyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5oICovLAog
CQkJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAqLywKIAkJCQk3QUZFQzZB
RTFFQjIyQUM2MDBEQURFMzYgLyogVVVJRC5oICovLAogCQkJCUE4QTQ3MzZGMTUxQTgyNUIwMDQx
MjNGRiAvKiBWYWx1ZUNoZWNrLmggKi8sCkBAIC0xMzU0LDcgKzEzODEsMTAgQEAKIAkJCQlBOEE0
NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZENvY29hLm1tICovLAogCQkJCUFERjJD
RTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgKi8sCiAJCQkJ
QUQ4OUI2QjkxRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1t
ICovLAorCQkJCTVDQzBFRTg3MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5oICovLAor
CQkJCTVDQzBFRTg4MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSAqLywKIAkJCQlB
MzBENDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLywKKwkJCQk1Q0MwRUU4
NjIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0gKi8sCiAJCQkJRTRBMEFEM0MxQTk2MjUz
QzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29j
b2E7CkBAIC0xNDgxLDYgKzE1MTEsNyBAQAogCQkJCUE4QTQ3MzhCMTUxQTgyNUIwMDQxMjNGRiAv
KiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMy
Mzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNB
QzE1MUE4MjVCMDA0MTIzRkYgLyogY2FjaGVkLXBvd2Vycy5jYyBpbiBTb3VyY2VzICovLAorCQkJ
CTVDMUYwNTkzMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjY2QjI4QTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4QTQ3NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxh
dG9ySUNVLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTUzMiw2ICsxNTYzLDcgQEAKIAkJCQlBRDg5
QjZCQTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI4QzFEQzk3QkFCMDA0QTFEM0YgLyogTW9u
b3RvbmljVGltZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0MwRUU4QTIxNjJCQzIyMDBBMUE4
NDIgLyogTlNVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNDE1MUE4MjVC
MDA0MTIzRkYgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNG
NzE1MUE4MjVCMDA0MTIzRkYgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNGOTE1MUE4MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0xNTg1LDYgKzE2MTcsMTAgQEAKIAkJCQk1MzExQkQ1QzFFQTgyMkY5MDA1
MjUyODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MDFE
Qzk3QkFCMDA0QTFEM0YgLyogVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNzA3NUY1MUZCRjUzQ0QwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1Q0MwRUU3NjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTVDMUYwNTk1MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1Q0MwRUU4OTIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1Q0MwRUU3NTIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzhGMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4
dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzkxMUQzMDdBQjgwMEY1RkEx
NiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzkz
MUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDM5Y2MxOTk5NjkyNWExMmRjMzRkZTA3MzRiOWYyOTZl
ZGE0N2NmNDAuLjI4OTIxYmM4ZDI0ZjQ5ZTM1ZjFmMzc3NmI3YWM2ZTc0ODI5NGMxZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CkBAIC0yNDAsNiArMjQwLDkgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVS
UwogICAgIFRpbnlQdHJTZXQuaAogICAgIFRyaVN0YXRlLmgKICAgICBUeXBlQ2FzdHMuaAorICAg
IFVSTC5oCisgICAgVVJMSGFzaC5oCisgICAgVVJMUGFyc2VyLmgKICAgICBVVUlELmgKICAgICBV
bmFsaWduZWRBY2Nlc3MuaAogICAgIFVuZXhwZWN0ZWQuaApAQCAtMzkyLDYgKzM5NSw4IEBAIHNl
dChXVEZfU09VUkNFUwogICAgIFRocmVhZGluZy5jcHAKICAgICBUaW1lV2l0aER5bmFtaWNDbG9j
a1R5cGUuY3BwCiAgICAgVGltaW5nU2NvcGUuY3BwCisgICAgVVJMLmNwcAorICAgIFVSTFBhcnNl
ci5jcHAKICAgICBVVUlELmNwcAogICAgIFdURkFzc2VydGlvbnMuY3BwCiAgICAgV2FsbFRpbWUu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RGL3d0
Zi9Gb3J3YXJkLmgKaW5kZXggZWU1MWM3MzIxOGYxZmZiOWU1MjUwYjY1ZmQ1YmY1Mzg4MjdhZmVl
Mi4uNGJlZjgxMGNjMTA4NjcyZDk4Mjk2OGNiNTkzNWJhMjQwMjcwNjRmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApA
QCAtNDMsNiArNDMsNyBAQCBjbGFzcyBTdHJpbmdWaWV3OwogY2xhc3MgVGV4dFBvc2l0aW9uOwog
Y2xhc3MgVGV4dFN0cmVhbTsKIGNsYXNzIFVuaXF1ZWRTdHJpbmdJbXBsOworY2xhc3MgVVJMOwog
Y2xhc3MgV2FsbFRpbWU7CiAKIHN0cnVjdCBGYXN0TWFsbG9jOwpAQCAtMTA5LDYgKzExMCw3IEBA
IHVzaW5nIFdURjo6U3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6U3RyaW5nVmlldzsKIHVzaW5nIFdU
Rjo6VGV4dFBvc2l0aW9uOwogdXNpbmcgV1RGOjpUZXh0U3RyZWFtOwordXNpbmcgV1RGOjpVUkw7
CiB1c2luZyBXVEY6OlZhcmlhbnQ7CiB1c2luZyBXVEY6OlZlY3RvcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUdUSy5jbWFrZQppbmRleCA0NjkwM2MzNjQyOWNlYjcyNmExMTE5MzNhZTJmYjM1MDQ4OGRmMjI1
Li40MWM4OTU0OTE4ODI5YzdlMDdlZmVjOGRhOTU3MWE2NjZmNjgyNTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUdUSy5jbWFrZQpAQCAtNiw2ICs2LDcgQEAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFE
RVJTCiAgICAgZ2xpYi9HUmVmUHRyLmgKICAgICBnbGliL0dUeXBlZGVmcy5oCiAgICAgZ2xpYi9H
VW5pcXVlUHRyLmgKKyAgICBnbGliL0dVbmlxdWVQdHJTb3VwLmgKICAgICBnbGliL1J1bkxvb3BT
b3VyY2VQcmlvcml0eS5oCiAgICAgZ2xpYi9XVEZHVHlwZS5oCiAKQEAgLTIxLDYgKzIyLDcgQEAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAg
Z2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCisgICAgZ2xpYi9VUkxT
b3VwLmNwcAogCiAgICAgbGludXgvQ3VycmVudFByb2Nlc3NNZW1vcnlTdGF0dXMuY3BwCiAgICAg
bGludXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwCkBAIC0zNyw5ICszOSwxMSBAQCBsaXN0KEFQ
UEVORCBXVEZfTElCUkFSSUVTCiAgICAgJHtHTElCX0dJT19MSUJSQVJJRVN9CiAgICAgJHtHTElC
X0dPQkpFQ1RfTElCUkFSSUVTfQogICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAgJHtMSUJTT1VQ
X0xJQlJBUklFU30KICAgICAke1pMSUJfTElCUkFSSUVTfQogKQogCiBsaXN0KEFQUEVORCBXVEZf
U1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAg
ICR7TElCU09VUF9JTkNMVURFX0RJUlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4
IGY0ZDUyNmU1NzFiOTMyMjk0ZWFhMzQyOWEzNDA0OTEwZTcxOTE0MjEuLmEwMThmOTI5ZWY1NTJl
ZTI0MjExNTY1ZjFhNzllZjBiM2MzZTU2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBA
IC04LDEwICs4LDEyIEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICkKIAogbGlzdChBUFBF
TkQgV1RGX1BVQkxJQ19IRUFERVJTCisgICAgY2YvQ0ZVUkxFeHRyYXMuaAogICAgIGNmL1R5cGVD
YXN0c0NGLmgKIAogICAgIGNvY29hL0VudGl0bGVtZW50cy5oCiAgICAgY29jb2EvTWFjaFNlbmRS
aWdodC5oCisgICAgY29jb2EvTlNVUkxFeHRyYXMuaAogICAgIGNvY29hL1NvZnRMaW5raW5nLmgK
IAogICAgIGRhcndpbi9XZWFrTGlua2luZy5oCkBAIC0zOCw4ICs0MCwxMCBAQCBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUwogICAgIFNjaGVkdWxlUGFpckNGLmNwcAogICAgIFNjaGVkdWxlUGFpck1h
Yy5tbQogCisgICAgY2YvQ0ZVUkxFeHRyYXMuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAg
ICBjZi9SdW5Mb29wQ0YuY3BwCisgICAgY2YvVVJMQ0YuY3BwCiAKICAgICBjb2NvYS9BdXRvZHJh
aW5lZFBvb2wuY3BwCiAgICAgY29jb2EvQ1BVVGltZUNvY29hLmNwcApAQCAtNDgsNiArNTIsOCBA
QCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGNvY29hL01haW5UaHJlYWRDb2NvYS5tbQog
ICAgIGNvY29hL01lbW9yeUZvb3RwcmludENvY29hLmNwcAogICAgIGNvY29hL01lbW9yeVByZXNz
dXJlSGFuZGxlckNvY29hLm1tCisgICAgY29jb2EvTlNVUkxFeHRyYXMubW0KKyAgICBjb2NvYS9V
UkxDb2NvYS5tbQogICAgIGNvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAogCiAgICAgbWFjL0RlcHJl
Y2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4
IDc1MmI1OTkzMTQ4ZjExMTBhMjkzYzlkYTllMjhhZGVmMDhmZWU0MGMuLmEwMmRhNTI3OGVlZWFi
OGRiODAwYmM4Zjk2Zjg5ZmI5NzJmM2UxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCkBA
IC00LDYgKzQsNyBAQCBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICBnbGliL0dS
ZWZQdHIuaAogICAgIGdsaWIvR1R5cGVkZWZzLmgKICAgICBnbGliL0dVbmlxdWVQdHIuaAorICAg
IGdsaWIvR1VuaXF1ZVB0clNvdXAuaAogICAgIGdsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmgK
ICAgICBnbGliL1dURkdUeXBlLmgKIApAQCAtMTksNiArMjAsNyBAQCBsaXN0KEFQUEVORCBXVEZf
U09VUkNFUwogICAgIGdsaWIvR0xpYlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3Bw
CiAgICAgZ2xpYi9SdW5Mb29wR0xpYi5jcHAKKyAgICBnbGliL1VSTFNvdXAuY3BwCiAKICAgICBs
aW51eC9DdXJyZW50UHJvY2Vzc01lbW9yeVN0YXR1cy5jcHAKICAgICBsaW51eC9NZW1vcnlGb290
cHJpbnRMaW51eC5jcHAKQEAgLTM1LDkgKzM3LDExIEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJ
RVMKICAgICAke0dMSUJfR0lPX0xJQlJBUklFU30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJ
RVN9CiAgICAgJHtHTElCX0xJQlJBUklFU30KKyAgICAke0xJQlNPVVBfTElCUkFSSUVTfQogICAg
ICR7WkxJQl9MSUJSQVJJRVN9CiApCiAKIGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9E
SVJFQ1RPUklFUwogICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CisgICAgJHtMSUJTT1VQX0lOQ0xV
REVfRElSU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtl
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggNDY4NTE5NmNlYTYyZGMw
NmQ1YmE2MzAwMjEyYzI3ODkwOTFlOWFkNy4uNjgzNTk5YjEwNzMyZTJmODAzY2Q5MTA1OTZlZDQy
ODE4MTNjODdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTIwLDExICsyMCwxNSBA
QCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogCiBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5E
IFdURl9QVUJMSUNfSEVBREVSUworICAgICAgICBjZi9DRlVSTEV4dHJhcy5oCiAgICAgICAgIGNm
L1R5cGVDYXN0c0NGLmgKIAogICAgICAgICB0ZXh0L2NmL1RleHRCcmVha0l0ZXJhdG9yQ0YuaAog
ICAgICkKICAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICBjZi9DRlVSTEV4dHJh
cy5jcHAKKyAgICAgICAgY2YvVVJMQ0YuY3BwCisKICAgICAgICAgdGV4dC9jZi9BdG9taWNTdHJp
bmdJbXBsQ0YuY3BwCiAgICAgICAgIHRleHQvY2YvU3RyaW5nQ0YuY3BwCiAgICAgICAgIHRleHQv
Y2YvU3RyaW5nSW1wbENGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQzNDVhZWU3NTMzM2JjZjg3YzE2
YTM1Y2Q3YzAxZDUwYzAwNWU5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VS
TC5jcHAKQEAgLTAsMCArMSwxMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3
LTIwMDgsIDIwMTEtMjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKyNpbmNs
dWRlICJVUkxQYXJzZXIuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaWNvZGUv
dWlkbmEuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1i
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKKy8vIEZJ
WE1FOiBUaGlzIGZpbGUgbWFrZXMgdG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJhdG9yIG9uIFN0
cmluZy4KKy8vIFdlIGVpdGhlciBoYXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0b3Igc28gaXQg
ZG9lc24ndCBpbnZvbHZlCisvLyBzbyBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFuZ2UgdGhpcyB0
byB1c2UgU3RyaW5nQnVmZmVyIGluc3RlYWQuCisKKworbmFtZXNwYWNlIFdURiB7CisKK3R5cGVk
ZWYgVmVjdG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKK3R5cGVkZWYgVmVjdG9yPFVDaGFyLCA1
MTI+IFVDaGFyQnVmZmVyOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1i
ZXIgPSAweEZGRkY7CisKKy8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwg
YXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKKy8vIEFTQ0lJLiBUaGUgZGVz
dGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJl
IGFsbG93ZWQKKy8vIGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRl
IHRvIG51bGwtdGVybWluYXRlIHRoZSByZXN1bHQuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRlc3QpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAg
IG1lbWNweShkZXN0LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYo
KTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGRlc3RbaV0gPSBz
dGF0aWNfY2FzdDxjaGFyPihzcmNbaV0pOworICAgIH0KK30KKwordm9pZCBVUkw6OmludmFsaWRh
dGUoKQoreworICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgIG1fcHJvdG9jb2xJc0luSFRUUEZh
bWlseSA9IGZhbHNlOworICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOworICAgIG1fc2No
ZW1lRW5kID0gMDsKKyAgICBtX3VzZXJTdGFydCA9IDA7CisgICAgbV91c2VyRW5kID0gMDsKKyAg
ICBtX3Bhc3N3b3JkRW5kID0gMDsKKyAgICBtX2hvc3RFbmQgPSAwOworICAgIG1fcG9ydExlbmd0
aCA9IDA7CisgICAgbV9wYXRoRW5kID0gMDsKKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7
CisgICAgbV9xdWVyeUVuZCA9IDA7Cit9CisKK1VSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29u
c3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKK3sK
KyAgICBVUkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CisgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK3N0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJM
KFVDaGFyIGMpCit7CisgICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hp
dGVzcGFjZSBhbmQgY29udHJvbAorICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0
aGF0IGMgaXMgYW4gKnVuc2lnbmVkKiBjaGFyIGhlcmUKKyAgICAvLyBzbyB0aGlzIGNvbXBhcmlz
b24gc2hvdWxkIG9ubHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgorICAgIHJldHVybiBjIDw9
ICcgJzsKK30KKworVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBVUkwgcmVz
dWx0ID0gKnRoaXM7CisgICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xh
dGVkQ29weSgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N0cmluZyBVUkw6Omxhc3RQYXRo
Q29tcG9uZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc1BhdGgoKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKKyAgICBpZiAo
bV9zdHJpbmdbZW5kXSA9PSAnLycpCisgICAgICAgIC0tZW5kOworCisgICAgc2l6ZV90IHN0YXJ0
ID0gbV9zdHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOworICAgIGlmIChzdGFydCA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgKytzdGFydDsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJp
bmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpwcm90b2Nv
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygw
LCBtX3NjaGVtZUVuZCk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKK3sKKyAg
ICB1bnNpZ25lZCBzdGFydCA9IGhvc3RTdGFydCgpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKK30KKworc3RkOjpv
cHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcG9ydExl
bmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGJvb2wgb2sgPSBmYWxz
ZTsKKyAgICB1bnNpZ25lZCBudW1iZXI7CisgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQorICAg
ICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4
KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOworICAgIGVsc2UKKyAg
ICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJz
MTYoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7CisgICAgaWYgKCFv
ayB8fCBudW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG51bWJlcjsKK30KKworU3RyaW5n
IFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdAoreworICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5w
b3J0KCkpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocG9ydC52YWx1ZSgpKSk7CisgICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygp
OworfQorCitTdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKK3sKKyAgICBT
dHJpbmcgcmVzdWx0ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExl
bmd0aCk7CisKKyAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgeworICAg
ICAgICBjb25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7CisgICAgICAgIHJlc3Vs
dC5yZW1vdmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93
Rm9yVHJhaWxpbmdBdFNpZ24pOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0
YXRpYyBTdHJpbmcgZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3
IGlucHV0KQoreworICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBp
ZiAoIWlucHV0TGVuZ3RoKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBWZWN0
b3I8TENoYXI+IHBlcmNlbnREZWNvZGVkOworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoaW5wdXRMZW5ndGgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
bnB1dExlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKKyAgICAgICAg
ICAgICYmIGlucHV0TGVuZ3RoID4gMgorICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0g
MgorICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKKyAgICAgICAg
ICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICBwZXJj
ZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwg
aW5wdXRbaSArIDJdKSk7CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKKyAgICB9
CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJj
ZW50RGVjb2RlZC5zaXplKCkpOworfQorCitTdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7
Cit9CisKK1N0cmluZyBVUkw6OnBhc3MoKSBjb25zdAoreworICAgIGlmIChtX3Bhc3N3b3JkRW5k
ID09IG1fdXNlckVuZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRl
Y29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Cit9
CisKK1N0cmluZyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJp
bmcuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Cit9CisK
K1N0cmluZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKK3sKKyAgICBpZiAobV9wYXNzd29yZEVu
ZCA9PSBtX3VzZXJFbmQpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBt
X3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVu
ZCAtIDEpOworfQorCitTdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAorewor
ICAgIGlmICghaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOworfQor
Citib29sIFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Cit9CisKK1N0cmlu
ZyBVUkw6OmJhc2VBc1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQo
bV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworfQorCisjaWYgIVVTRShDRikKKworU3RyaW5nIFVSTDo6
ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAoreworICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2Fs
RmlsZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGVjb2RlRXNj
YXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOworfQorCisjZW5k
aWYKKworI2lmZGVmIE5ERUJVRworCitzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJ
c0dvb2QoU3RyaW5nVmlldykKK3sKK30KKworI2Vsc2UKKworc3RhdGljIHZvaWQgYXNzZXJ0UHJv
dG9jb2xJc0dvb2QoU3RyaW5nVmlldyBwcm90b2NvbCkKK3sKKyAgICAvLyBGSVhNRTogV2UgcHJv
YmFibHkgZG9uJ3QgbmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgorICAgIC8vIFRoZSBpc0FT
Q0lJQWxwaGFDYXNlbGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hh
cmFjdGVycworICAgIC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRp
ZCBub3QgYW5kIHJlbGllZCBvbiB0aGVzZSBjaGVja3MuCisgICAgZm9yIChhdXRvIGNoYXJhY3Rl
ciA6IHByb3RvY29sLmNvZGVVbml0cygpKSB7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJh
Y3RlcikpOworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsKKyAgICAgICAgQVNTRVJU
KCFpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyKSk7CisgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJV
bmNoZWNrZWQoY2hhcmFjdGVyKSA9PSBjaGFyYWN0ZXIpOworICAgIH0KK30KKworI2VuZGlmCisK
K3N0YXRpYyBMb2NrIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKKwor
dXNpbmcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmlu
ZywgdWludDE2X3Q+Oworc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5n
KiYgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIHN0YXRpYyBE
ZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcDsKKyAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKK30KKworc3RhdGlj
IERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZygpCit7CisgICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcoKTsKKyAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xN
YXApCisgICAgICAgIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3Rpbmc7CisgICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwOworfQorCit2b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3Rp
bmcodWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7
CisgICAgZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJv
dG9jb2wsIHBvcnQpOworfQorCit2b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmcoKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsKKyAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkKKyAgICAgICAgbWFwLT5jbGVhcigpOworfQor
CitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1Zp
ZXcgcHJvdG9jb2wpCit7CisgICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgICAgIEFT
U0VSVChvdmVycmlkZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNp
bmNlIG92ZXJyaWRlTWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4K
KyAgICAgICAgYXV0byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3Ry
aW5nV2l0aG91dENvcHlpbmcoKSk7CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1h
cC0+ZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKyAg
ICByZXR1cm4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKK30K
KworYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmll
dyBwcm90b2NvbCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2Nv
bCkgPT0gcG9ydDsKK30KKworYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9j
b2wpIGNvbnN0Cit7CisgICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7CisK
KyAgICAvLyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRl
ZCBldmVuIGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCisgICAgLy8gVGhlIGZyZWUg
ZnVuY3Rpb24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAK
KyAgICBBU1NFUlQoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJv
dG9jb2wpLCAiamF2YXNjcmlwdCIpKTsKKworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBh
IG5ldyBzdHJpbmcgb2JqZWN0LgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVt
ZUVuZDsgKytpKSB7CisgICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdl
IHNob3VsZCBoYXZlIGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KK30K
KworYm9vbCBVUkw6OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKK3sKKyAg
ICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7CisKKyAgICBpZiAoIW1faXNWYWxpZCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90
b2NvbC5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG8gdGhlIGNv
bXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoIWlzQVND
SUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBV
Ukw6OnF1ZXJ5KCkgY29uc3QKK3sKKyAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmco
bV9wYXRoRW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAorfQorCitTdHJp
bmcgVVJMOjpwYXRoKCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5k
ICsgbV9wb3J0TGVuZ3RoOworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwg
bV9wYXRoRW5kIC0gcG9ydEVuZCk7Cit9CisKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBT
dHJpbmcmIHMpCit7CisgICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0
ZXIgdGhlIGZpcnN0ICc6Jy4KKyAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQo
JzonKTsKKyAgICBTdHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQ
b3NpdGlvbik7CisgICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9u
aWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbCk7CisgICAgaWYgKCFjYW5vbmljYWxpemVkKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBVUkxQ
YXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsK
KyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJl
c3VsdCgpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0
cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJl
dHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5s
ZW5ndGgoKSk7CisgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFj
dGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Cit9CisgICAgCisvLyBBcHBlbmRzIHRoZSBwdW55
Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGgg
dG8KKy8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVy
bWluYXRlZC4KKy8vIFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGlu
Zy4KK3N0YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVy
LCBTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRv
IGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KKyAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIg
dGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0
YWlubHkgT0suCisgICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4
OworICAgIAorICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8
fCBpc0FsbEFTQ0lJKHN0cmluZykpIHsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIFVDaGFyIGhvc3RuYW1lQnVm
ZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJP
X0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5J
VElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFt
ZVRvQVNDSUkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCks
CisgICAgICAgIHN0cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgp
LCBob3N0bmFtZUJ1ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWls
cywgJmVycm9yKTsKKyAgICAKKyAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2lu
Z0RldGFpbHMuZXJyb3JzKSB7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIs
IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit1bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRF
bmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKK30KKwordm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3Ry
aW5nJiBzKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGNvbG9uSW5kZXggPSBzLmZpbmQoJzonKTsKKyAgICBpZiAoY29sb25JbmRleCAhPSBub3RG
b3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1l
OworICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJT
dGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKKyAgICAKKyAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVm
dChob3N0U3RhcnQoKSkpOworICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQorICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhl
bmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7CisgICAgYnVp
bGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOworCisgICAgVVJMUGFy
c2VyIHBhcnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3Vs
dCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCit7CisgICAgaWYgKCFtX3BvcnRMZW5n
dGgpCisgICAgICAgIHJldHVybjsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3Ry
aW5nVmlldyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5z
dWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOworICAgICp0aGlzID0gcGFyc2Vy
LnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQorewor
ICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGNvbG9uTmVl
ZGVkID0gIW1fcG9ydExlbmd0aDsKKyAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVk
ZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKKworICAgIFVSTFBhcnNlciBwYXJzZXIo
bWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5l
ZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7CisgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7Cit9CisKK3ZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcm
IGhvc3RBbmRQb3J0KQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisK
KyAgICBTdHJpbmdWaWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKKyAgICBTdHJpbmdWaWV3IHBv
cnQ7CisgICAgCisgICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOworICAg
IGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHBvcnQgPSBob3N0TmFtZS5z
dWJzdHJpbmcoY29sb25JbmRleCArIDEpOworICAgICAgICBib29sIG9rOworICAgICAgICBpbnQg
cG9ydEludCA9IHBvcnQudG9JbnRTdHJpY3Qob2spOworICAgICAgICBpZiAoIW9rIHx8IHBvcnRJ
bnQgPCAwKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1l
LnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsKKyAgICB9CisKKyAgICBpZiAoaG9zdE5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5h
bWU7CisgICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0
TmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1f
dXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOworCisg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxl
ZnQoaG9zdFN0YXJ0KCkpKTsKKyAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKKyAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXco
ZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOworICAgIGlm
ICghcG9ydC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBvcnQpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3Ro
KSk7CisKKyAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK3N0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNo
YXJhY3RlcnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikp
Cit7CisgICAgYXV0byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1
dCkgeworICAgICAgICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7CisgICAgICAgIGF1dG8q
IGRhdGEgPSB1dGY4LmRhdGEoKTsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
ICAgICBhdXRvIGxlbmd0aCA9IHV0ZjgubGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aiA9IDA7IGogPCBsZW5ndGg7IGorKykgeworICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsK
KyAgICAgICAgICAgIGlmIChzaG91bGRFbmNvZGUoYykpIHsKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnJScpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmli
YmxlVG9BU0NJSUhleERpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChs
b3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGlucHV0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29k
ZShpbnB1dFtpXSkpKQorICAgICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7CisgICAgfQor
ICAgIHJldHVybiBpbnB1dDsKK30KKwordm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1
c2VyKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBG
SVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRv
IG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAorICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2lu
ZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KKworICAgIHVuc2lnbmVkIGVuZCA9IG1f
dXNlckVuZDsKKyAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyB1ID0g
cGVyY2VudEVuY29kZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNv
ZGVTZXQpOworICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fc2NoZW1lRW5kICsgMSkpCisgICAgICAgICAgICB1ID0gIi8vIiArIHU7CisgICAgICAgIC8v
IEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KKyAgICAgICAgaWYgKGVuZCA9
PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0g
J0AnKSkKKyAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7CisgICAgICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3
ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2Vy
RW5kID09IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRd
ID09ICdAJykKKyAgICAgICAgICAgIGVuZCArPSAxOworICAgICAgICAvLyBXZSBkb24ndCB3YW50
IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBn
b2luZyB0byBtYWtlIGEgY2hhbmdlLgorICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7
CisgICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhl
bmQpKSk7CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sK
KyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgZW5k
ID0gbV9wYXNzd29yZEVuZDsKKyAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgeworICAgICAg
ICBTdHJpbmcgcCA9ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQ
YXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCkgKyAiQCI7CisgICAgICAgIGlmIChtX3VzZXJF
bmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisgICAgICAgICAg
ICBwID0gIi8vIiArIHA7CisgICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdl
IGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KKyAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQg
JiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAg
VVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91
c2VyRW5kKSwgcCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVt
b3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAg
ICBpZiAobV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9z
dHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgLy8gV2Ug
ZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdl
IGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KKyAgICAgICAgaWYgKG1fdXNlckVuZCAh
PSBlbmQpIHsKKyAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhlbmQpKSk7CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdW
aWV3IGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBh
bHJlYWR5IGhhcHBlbnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPworICAgIC8vIEZJ
WE1FOiBJcyBpdCBjb3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBp
bmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnM/CisgICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3Ry
aW5nKFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMn
LCBpZGVudGlmaWVyKSB9LnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJ
ZGVudGlmaWVyKCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBBU1NFUlQoIW1f
cXVlcnlFbmQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2lzVmFsaWQgJiYg
bV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kKQorICAgICAgICBtX3N0cmluZyA9IG1fc3Ry
aW5nLmxlZnQobV9xdWVyeUVuZCk7Cit9CisKK3ZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdt
ZW50SWRlbnRpZmllcigpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQpOworICAgIG1fcXVlcnlF
bmQgPSBtX3BhdGhFbmQ7Cit9CisKK3ZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1
ZXJ5KQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBG
SVhNRTogJyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVz
Y2FwZWQuCisgICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1l
bnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKKyAgICAvLyBhY2Nlc3Mg
dG8gdGhlIGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCisgICAgLy8gaHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTYxMTc2CisgICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8n
KSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3Ry
aW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7CisgICAgICAgICp0aGlz
ID0gcGFyc2VyLnJlc3VsdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5
LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKKyAgICAgICAg
KnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgfQorCit9CisKK3ZvaWQgVVJMOjpzZXRQYXRo
KGNvbnN0IFN0cmluZyYgcykKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgU3RyaW5nIHBhdGggPSBzOworICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRo
WzBdICE9ICcvJykKKyAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7CisKKyAgICBhdXRvIHF1ZXN0
aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKKyAgICAgICAgcmV0
dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKKyAgICB9OworICAgIFVS
TFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9z
dEVuZCArIG1fcG9ydExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0
aW9uTWFya09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3Bh
dGhFbmQpKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK2Jvb2wgZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sK
KyAgICBpZiAoYS5tX3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHVuc2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQorICAgICAgICBpZiAoYS5zdHJp
bmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNv
bnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBh
dGhFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBh
LnBhdGhFbmQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7
CisgICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIHByb3Rv
Y29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAg
ICBpZiAoYS5tX3NjaGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNp
Z25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25l
ZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9
IGIubV9ob3N0RW5kIC0gYi5ob3N0U3RhcnQoKTsKKyAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9z
dExlbmd0aEIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoZSBzY2hl
bWUKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7Cisg
ICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQW5kIHRoZSBob3N0CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKKyAgICAgICAgaWYgKGEuc3RyaW5n
KClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
aG9zdHNBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICB1bnNpZ25l
ZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9
IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5o
b3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9z
dFN0YXJ0QjsKKyAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsg
KytpKSB7CisgICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmlu
ZygpW2hvc3RTdGFydEIgKyBpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3Qg
U3RyaW5nJiBkb21haW4pIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBpZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOworICAgIGlmICghaG9zdC5l
bmRzV2l0aChkb21haW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaG9z
dC5sZW5ndGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9t
YWluLmxlbmd0aCgpIC0gMV0gPT0gJy4nOworfQorCitTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2Fw
ZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIGlucHV0KQoreworICAgIHJldHVybiBwZXJjZW50RW5j
b2RlQ2hhcmFjdGVycyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwor
fQorCitib29sIFVSTDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAoreworICAgIGlmICghbV9pc1Zh
bGlkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1l
RW5kXSA9PSAnOicpOworICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcv
JzsKK30KKwordm9pZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVy
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVz
IG9mIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQorICAgIC8vIFRoYXQncyBmaW5l
IGZvciBhIHZhbGlkIFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlk
IFVSTHMuCisgICAgYnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgY29weUFT
Q0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3Ry
aW5nQ2xhc3M+Citib29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJs
LCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK3sKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRo
b3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgorICAgIGFzc2VydFByb3RvY29sSXNHb29k
KFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3Ry
bGVuKHByb3RvY29sKSkpOworICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBqID0gMDsgdXJsW2ldOyArK2kpIHsKKyAgICAgICAgLy8gU2tpcCBsZWFk
aW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICAgICAgaWYgKGlzTGVh
ZGluZyAmJiBzaG91bGRUcmltRnJvbVVSTCh1cmxbaV0pKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOworCisgICAgICAgIC8vIFNraXAgYW55IHRhYnMg
YW5kIG5ld2xpbmVzLgorICAgICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdc
cicgfHwgdXJsW2ldID09ICdcbicpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBp
ZiAoIXByb3RvY29sW2pdKQorICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7CisgICAg
ICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICArK2o7CisgICAgfQorICAgIAor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFs
KHVybCwgcHJvdG9jb2wpOworfQorCitpbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQoreworICAgIHJldHVybiBXVEY6
OnByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsKK30KKworI2lmbmRlZiBOREVC
VUcKKwordm9pZCBVUkw6OnByaW50KCkgY29uc3QKK3sKKyAgICBwcmludGYoIiVzXG4iLCBtX3N0
cmluZy51dGY4KCkuZGF0YSgpKTsKK30KKworI2VuZGlmCisKK1N0cmluZyBVUkw6OnN0cmlwcGVk
Rm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0Cit7CisgICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKKyAg
ICByZWZlcnJlci5zZXRVc2VyKFN0cmluZygpKTsKKyAgICByZWZlcnJlci5zZXRQYXNzKFN0cmlu
ZygpKTsKKyAgICByZWZlcnJlci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1
cm4gcmVmZXJyZXIuc3RyaW5nKCk7Cit9CisKK2Jvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0
Cit7CisgICAgLy8gSW5jbHVkaW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVhIHNpbmNl
IGRyYWcgYW5kIGRyb3AgdXNlcyB0aGlzIGNoZWNrCisgICAgLy8gYW5kIGluY2x1ZGluZyBmZWVk
IHdvdWxkIGFsbG93IGZlZWRzIHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxvZworICAg
IC8vIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBldmVuIHdp
dGhvdXQgYSBkcm9wLgorICAgIC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1lTG9hZGVy
OjpzaG91bGRUcmVhdFVSTEFzTG9jYWwoKSBmdW5jdGlvbi4KKyAgICByZXR1cm4gcHJvdG9jb2xJ
cygiZmlsZSIpOworfQorCitib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYg
dXJsKQoreworICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIp
OworfQorCitib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKQoreworICAg
IHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29s
IHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgYXV0byBs
ZW5ndGggPSB1cmwubGVuZ3RoKCk7CisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBt
YWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICByZXR1cm4gbGVuZ3RoID49IDUKKyAgICAg
ICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMF0sICdoJykKKyAgICAgICAgJiYg
aXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMV0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJ
SUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMl0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhh
Q2FzZWxlc3NFcXVhbCh1cmxbM10sICdwJykKKyAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwg
KGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzRdLCAncycpICYmIGxlbmd0aCA+PSA2ICYm
IHVybFs1XSA9PSAnOicpKTsKK30KKworY29uc3QgVVJMJiBibGFua1VSTCgpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFu
ayIpOworICAgIHJldHVybiBzdGF0aWNCbGFua1VSTDsKK30KKworYm9vbCBVUkw6OmlzQmxhbmtV
UkwoKSBjb25zdAoreworICAgIHJldHVybiBwcm90b2NvbElzKCJhYm91dCIpOworfQorCitib29s
IHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQoreworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2
X3Q+IHBvcnQgPSB1cmwucG9ydCgpOworCisgICAgLy8gU2luY2UgbW9zdCBVUkxzIGRvbid0IGhh
dmUgYSBwb3J0LCByZXR1cm4gZWFybHkgZm9yIHRoZSAibm8gcG9ydCIgY2FzZS4KKyAgICBpZiAo
IXBvcnQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gVGhpcyBibG9ja2VkIHBvcnQg
bGlzdCBtYXRjaGVzIHRoZSBwb3J0IGJsb2NraW5nIHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgor
ICAgIC8vIFNlZSBodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFu
bmluZy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCBibG9ja2VkUG9ydExpc3RbXSA9IHsKKyAgICAgICAgMSwgICAgLy8gdGNwbXV4CisgICAgICAg
IDcsICAgIC8vIGVjaG8KKyAgICAgICAgOSwgICAgLy8gZGlzY2FyZAorICAgICAgICAxMSwgICAv
LyBzeXN0YXQKKyAgICAgICAgMTMsICAgLy8gZGF5dGltZQorICAgICAgICAxNSwgICAvLyBuZXRz
dGF0CisgICAgICAgIDE3LCAgIC8vIHFvdGQKKyAgICAgICAgMTksICAgLy8gY2hhcmdlbgorICAg
ICAgICAyMCwgICAvLyBGVFAtZGF0YQorICAgICAgICAyMSwgICAvLyBGVFAtY29udHJvbAorICAg
ICAgICAyMiwgICAvLyBTU0gKKyAgICAgICAgMjMsICAgLy8gdGVsbmV0CisgICAgICAgIDI1LCAg
IC8vIFNNVFAKKyAgICAgICAgMzcsICAgLy8gdGltZQorICAgICAgICA0MiwgICAvLyBuYW1lCisg
ICAgICAgIDQzLCAgIC8vIG5pY25hbWUKKyAgICAgICAgNTMsICAgLy8gZG9tYWluCisgICAgICAg
IDc3LCAgIC8vIHByaXYtcmpzCisgICAgICAgIDc5LCAgIC8vIGZpbmdlcgorICAgICAgICA4Nywg
ICAvLyB0dHlsaW5rCisgICAgICAgIDk1LCAgIC8vIHN1cGR1cAorICAgICAgICAxMDEsICAvLyBo
b3N0cmlhbWUKKyAgICAgICAgMTAyLCAgLy8gaXNvLXRzYXAKKyAgICAgICAgMTAzLCAgLy8gZ3Bw
aXRucAorICAgICAgICAxMDQsICAvLyBhY3ItbmVtYQorICAgICAgICAxMDksICAvLyBQT1AyCisg
ICAgICAgIDExMCwgIC8vIFBPUDMKKyAgICAgICAgMTExLCAgLy8gc3VucnBjCisgICAgICAgIDEx
MywgIC8vIGF1dGgKKyAgICAgICAgMTE1LCAgLy8gU0ZUUAorICAgICAgICAxMTcsICAvLyB1dWNw
LXBhdGgKKyAgICAgICAgMTE5LCAgLy8gbm50cAorICAgICAgICAxMjMsICAvLyBOVFAKKyAgICAg
ICAgMTM1LCAgLy8gbG9jLXNydiAvIGVwbWFwCisgICAgICAgIDEzOSwgIC8vIG5ldGJpb3MKKyAg
ICAgICAgMTQzLCAgLy8gSU1BUDIKKyAgICAgICAgMTc5LCAgLy8gQkdQCisgICAgICAgIDM4OSwg
IC8vIExEQVAKKyAgICAgICAgNDY1LCAgLy8gU01UUCtTU0wKKyAgICAgICAgNTEyLCAgLy8gcHJp
bnQgLyBleGVjCisgICAgICAgIDUxMywgIC8vIGxvZ2luCisgICAgICAgIDUxNCwgIC8vIHNoZWxs
CisgICAgICAgIDUxNSwgIC8vIHByaW50ZXIKKyAgICAgICAgNTI2LCAgLy8gdGVtcG8KKyAgICAg
ICAgNTMwLCAgLy8gY291cmllcgorICAgICAgICA1MzEsICAvLyBDaGF0CisgICAgICAgIDUzMiwg
IC8vIG5ldG5ld3MKKyAgICAgICAgNTQwLCAgLy8gVVVDUAorICAgICAgICA1NDgsICAvLyBhZnBv
dmVydGNwIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNTU2LCAgLy8gcmVtb3RlZnMKKyAgICAg
ICAgNTYzLCAgLy8gTk5UUCtTU0wKKyAgICAgICAgNTg3LCAgLy8gRVNNVFAKKyAgICAgICAgNjAx
LCAgLy8gc3lzbG9nLWNvbm4KKyAgICAgICAgNjM2LCAgLy8gTERBUCtTU0wKKyAgICAgICAgOTkz
LCAgLy8gSU1BUCtTU0wKKyAgICAgICAgOTk1LCAgLy8gUE9QMytTU0wKKyAgICAgICAgMjA0OSwg
Ly8gTkZTCisgICAgICAgIDM2NTksIC8vIGFwcGxlLXNhc2wgLyBQYXNzd29yZFNlcnZlciBbQXBw
bGUgYWRkaXRpb25dCisgICAgICAgIDQwNDUsIC8vIGxvY2tkCisgICAgICAgIDQxOTAsIC8vIE1h
bmFnZVNpZXZlIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjAwMCwgLy8gWDExCisgICAgICAg
IDY2NjUsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2NjY2LCAv
LyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2NywgLy8gU3RhbmRh
cmQgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2OCwgLy8gQWx0ZXJuYXRlIElSQyBb
QXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFk
ZGl0aW9uXQorICAgICAgICA2Njc5LCAvLyBBbHRlcm5hdGUgSVJDIFNTTCBbQXBwbGUgYWRkaXRp
b25dCisgICAgICAgIDY2OTcsIC8vIElSQytTU0wgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICBp
bnZhbGlkUG9ydE51bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJl
cnMKKyAgICB9OworCisgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBv
cnQgbGlzdCwgYWxsb3cgaXQuCisgICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4o
YmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRMaXN0KSkpOworICAgIGlmICgh
c3RkOjpiaW5hcnlfc2VhcmNoKHN0ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQo
YmxvY2tlZFBvcnRMaXN0KSwgcG9ydC52YWx1ZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAvLyBBbGxvdyBwb3J0cyAyMSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxhIGRv
ZXMuCisgICAgaWYgKChwb3J0LnZhbHVlKCkgPT0gMjEgfHwgcG9ydC52YWx1ZSgpID09IDIyKSAm
JiB1cmwucHJvdG9jb2xJcygiZnRwIikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8g
QWxsb3cgYW55IHBvcnQgbnVtYmVyIGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJl
ciBpcyBpZ25vcmVkLgorICAgIGlmICh1cmwucHJvdG9jb2xJcygiZmlsZSIpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIG1pbWVUeXBlRnJv
bURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgQVNTRVJUKHByb3RvY29sSXNJbnRl
cm5hbCh1cmwsICJkYXRhIikpOworCisgICAgLy8gRklYTUU6IFdoYXQncyB0aGUgcmlnaHQgYmVo
YXZpb3Igd2hlbiB0aGUgVVJMIGhhcyBhIGNvbW1hIGZpcnN0LCBidXQgYSBzZW1pY29sb24gbGF0
ZXI/CisgICAgLy8gQ3VycmVudGx5IHRoaXMgY29kZSB3aWxsIGJyZWFrIGF0IHRoZSBzZW1pY29s
b24gaW4gdGhhdCBjYXNlLiBOb3Qgc3VyZSB0aGF0J3MgY29ycmVjdC4KKyAgICBhdXRvIGluZGV4
ID0gdXJsLmZpbmQoJzsnLCA1KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAg
IGluZGV4ID0gdXJsLmZpbmQoJywnLCA1KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsK
KyAgICAgICAgLy8gRklYTUU6IFRoZXJlIHdhcyBhbiBvbGQgY29tbWVudCBoZXJlIHRoYXQgbWFk
ZSBpdCBzb3VuZCBsaWtlIHRoaXMgc2hvdWxkIGJlIHJldHVybmluZyB0ZXh0L3BsYWluLgorICAg
ICAgICAvLyBCdXQgd2UgaGF2ZSBiZWVuIHJldHVybmluZyBlbXB0eSBzdHJpbmcgaGVyZSBmb3Ig
c29tZSB0aW1lLCBzbyBub3QgY2hhbmdpbmcgaXRzIGJlaGF2aW9yIGF0IHRoaXMgdGltZS4KKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgfQorICAgIGlmIChpbmRleCA9PSA1KQor
ICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgQVNTRVJUKGluZGV4ID49IDUpOwor
ICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKTsKK30KKworU3RyaW5nIFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK3sKKyAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkgPD0g
bGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RyaW5nKCk7CisKKyAgICByZXR1cm4gc3RyaW5nKCku
bGVmdChsZW5ndGggLyAyIC0gMSkgKyAiLi4uIiArIHN0cmluZygpLnJpZ2h0KGxlbmd0aCAvIDIg
LSAyKTsKK30KKworVVJMIFVSTDo6ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5n
JiByZWxhdGl2ZVBhcnQpCit7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgIndlYmtpdC1mYWtlLXVy
bDovLyIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgKyAnLycgKyByZWxhdGl2ZVBhcnQp
OworfQorCitVUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCit7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgImZpbGU6Ly8vIiArIGZpbGVQYXRo
KTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVVJM
JiB1cmwpCit7CisgICAgdHMgPDwgdXJsLnN0cmluZygpOworICAgIHJldHVybiB0czsKK30KKwor
I2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShTT1VQKQorc3RhdGljIGJvb2wgaXNJUHY0QWRk
cmVzcyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBhdXRvIGNvdW50ID0gMDsKKworICAgIGZv
ciAoY29uc3QgYXV0byBvY3RldCA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCcu
JykpIHsKKyAgICAgICAgaWYgKGNvdW50ID49IDQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgY29uc3QgYXV0byBsZW5ndGggPSBvY3RldC5sZW5ndGgoKTsKKyAgICAgICAg
aWYgKCFsZW5ndGggfHwgbGVuZ3RoID4gMykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBhdXRvIHZhbHVlID0gMDsKKyAgICAgICAgZm9yIChhdXRvIGkgPSAwdTsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBhdXRvIGRpZ2l0ID0gb2N0ZXRbaV07CisK
KyAgICAgICAgICAgIC8vIFByb2hpYml0IGxlYWRpbmcgemVyb2VzLgorICAgICAgICAgICAgaWYg
KGRpZ2l0ID4gJzknIHx8IGRpZ2l0IDwgKCFpICYmIGxlbmd0aCA+IDEgPyAnMScgOiAnMCcpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgdmFsdWUgPSAxMCAq
IHZhbHVlICsgKGRpZ2l0IC0gJzAnKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2YWx1ZSA+
IDI1NSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb3VudCsrOworICAg
IH0KKworICAgIHJldHVybiAoY291bnQgPT0gNCk7Cit9CisKK3N0YXRpYyBib29sIGlzSVB2NkFk
ZHJlc3MoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgZW51bSBTa2lwU3RhdGUgeyBOb25lLCBX
aWxsU2tpcCwgU2tpcHBpbmcsIFNraXBwZWQsIEZpbmFsIH07CisgICAgYXV0byBza2lwU3RhdGUg
PSBOb25lOworICAgIGF1dG8gY291bnQgPSAwOworCisgICAgZm9yIChjb25zdCBhdXRvIGhleHRl
dCA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCc6JykpIHsKKyAgICAgICAgaWYg
KGNvdW50ID49IDggfHwgc2tpcFN0YXRlID09IEZpbmFsKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gaGV4dGV0Lmxlbmd0aCgpOworICAg
ICAgICBpZiAoIWxlbmd0aCkgeworICAgICAgICAgICAgLy8gOjogbWF5IGJlIHVzZWQgYW55d2hl
cmUgdG8gc2tpcCAxIHRvIDggaGV4dGV0cywgYnV0IG9ubHkgb25jZS4KKyAgICAgICAgICAgIGlm
IChza2lwU3RhdGUgPT0gU2tpcHBlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgICAgIGlmIChza2lwU3RhdGUgPT0gTm9uZSkKKyAgICAgICAgICAgICAgICBza2lw
U3RhdGUgPSAhY291bnQgPyBXaWxsU2tpcCA6IFNraXBwaW5nOworICAgICAgICAgICAgZWxzZSBp
ZiAoc2tpcFN0YXRlID09IFdpbGxTa2lwKQorICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IFNr
aXBwaW5nOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IEZp
bmFsOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2tp
cFN0YXRlID09IFdpbGxTa2lwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGlmIChza2lwU3RhdGUgPT0gU2tpcHBpbmcpCisgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lw
cGVkOworCisgICAgICAgIGlmIChsZW5ndGggPiA0KSB7CisgICAgICAgICAgICAvLyBBbiBJUHY0
IGFkZHJlc3MgbWF5IGJlIHVzZWQgaW4gcGxhY2Ugb2YgdGhlIGZpbmFsIHR3byBoZXh0ZXRzLgor
ICAgICAgICAgICAgaWYgKChza2lwU3RhdGUgPT0gTm9uZSAmJiBjb3VudCAhPSA2KSB8fCAoc2tp
cFN0YXRlID09IFNraXBwZWQgJiYgY291bnQgPj0gNikgfHwgIWlzSVB2NEFkZHJlc3MoaGV4dGV0
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHNraXBTdGF0
ZSA9IEZpbmFsOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8gY29kZVVuaXQgOiBoZXh0ZXQuY29kZVVuaXRzKCkpIHsKKyAgICAgICAg
ICAgIC8vIElQdjYgYWxsb3dzIGxlYWRpbmcgemVyb2VzLgorICAgICAgICAgICAgaWYgKCFpc0FT
Q0lJSGV4RGlnaXQoY29kZVVuaXQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvdW50Kys7CisgICAgfQorCisgICAgcmV0dXJuIChjb3VudCA9
PSA4ICYmIHNraXBTdGF0ZSA9PSBOb25lKSB8fCBza2lwU3RhdGUgPT0gU2tpcHBlZCB8fCBza2lw
U3RhdGUgPT0gRmluYWw7Cit9CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmll
dyBob3N0KQoreworICAgIGlmIChob3N0LmZpbmQoJzonKSA9PSBub3RGb3VuZCkKKyAgICAgICAg
cmV0dXJuIGlzSVB2NEFkZHJlc3MoaG9zdCk7CisKKyAgICByZXR1cm4gaXNJUHY2QWRkcmVzcyho
b3N0KTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ3M2Jj
NzA1NmZhMzQ1YmVkZTBhOGMyNTgxYTgwM2RhNzViMDk5NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1VSTC5oCkBAIC0wLDAgKzEsMzkyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKKyNpZiBVU0UoQ0YpCit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVS
TFJlZjsKKyNlbmRpZgorCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1
ZVB0clNvdXAuaD4KKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pCitPQkpDX0NMQVNTIE5T
VVJMOworI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKKworY2xh
c3MgVVJMVGV4dEVuY29kaW5nIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90
PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IH5VUkxUZXh0RW5jb2RpbmcoKSB7IH07Cit9OworCitzdHJ1Y3QgVVJMSGFzaDsKKworY2xhc3Mg
V1RGX0VYUE9SVF9QUklWQVRFIFVSTCB7CitwdWJsaWM6CisgICAgLy8gR2VuZXJhdGVzIGEgVVJM
IHdoaWNoIGNvbnRhaW5zIGEgbnVsbCBzdHJpbmcuCisgICAgVVJMKCkgeyBpbnZhbGlkYXRlKCk7
IH0KKworICAgIGV4cGxpY2l0IFVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDog
bV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQorICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKS5pc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpOyB9CisKKyAgICAvLyBSZXNvbHZlcyB0aGUgcmVsYXRpdmUgVVJMIHdpdGgg
dGhlIGdpdmVuIGJhc2UgVVJMLiBJZiBwcm92aWRlZCwgdGhlCisgICAgLy8gVVJMVGV4dEVuY29k
aW5nIGlzIHVzZWQgdG8gZW5jb2RlIG5vbi1BU0NJSSBjaGFyYWNlcnMuIFRoZSBiYXNlIFVSTCBj
YW4gYmUKKyAgICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2ZSBV
Ukwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcworICAgIC8vIGFic29sdXRlLgorICAgIC8vIEZJWE1F
OiBJZiB0aGUgYmFzZSBVUkwgaXMgaW52YWxpZCwgdGhpcyBhbHdheXMgY3JlYXRlcyBhbiBpbnZh
bGlkCisgICAgLy8gVVJMLiBJbnN0ZWFkIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVyIHRvIHRy
ZWF0IGFsbCBpbnZhbGlkIGJhc2UgVVJMcworICAgIC8vIHRoZSBzYW1lIHdheSB3ZSB0cmVhdGUg
bnVsbCBhbmQgZW1wdHkgYmFzZSBVUkxzLgorICAgIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0
IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKKwor
ICAgIHN0YXRpYyBVUkwgZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJik7Cisg
ICAgc3RhdGljIFVSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYpOwor
CisgICAgU3RyaW5nIHN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OworCisgICAgLy8g
RklYTUU6IFRoZSBhYm92ZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhcm1vbml6ZWQgc28gdGhhdCBw
YXNzaW5nIGEKKyAgICAvLyBiYXNlIG9mIG51bGwgb3IgdGhlIGVtcHR5IHN0cmluZyBnaXZlcyB0
aGUgc2FtZSByZXN1bHQgYXMgdGhlCisgICAgLy8gc3RhbmRhcmQgU3RyaW5nIGNvbnN0cnVjdG9y
LgorCisgICAgLy8gTWFrZXMgYSBkZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5b3UgbmVlZCB0
byB1c2UgYSBVUkwgb24gYW5vdGhlcgorICAgIC8vIHRocmVhZC4gU2luY2UgdGhlIHVuZGVybHlp
bmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFibGUsIHRoZXJlJ3MKKyAgICAvLyBubyBv
dGhlciByZWFzb24gdG8gZXZlciBwcmVmZXIgaXNvbGF0ZWRDb3B5KCkgb3ZlciBwbGFpbiBvbGQg
YXNzaWdubWVudC4KKyAgICBVUkwgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKKyAgICBib29sIGlz
TnVsbCgpIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0OworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHlvdSBjYW4gc2V0IHRoZSBob3N0
IGFuZCBwb3J0IGZvciB0aGUgVVJMLgorICAgIC8vIE5vbi1oaWVyYXJjaGljYWwgVVJMcyBkb24n
dCBoYXZlIGEgaG9zdCBhbmQgcG9ydC4KKyAgICBib29sIGNhblNldEhvc3RPclBvcnQoKSBjb25z
dCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9CisKKyAgICBib29sIGNhblNldFBhdGhuYW1l
KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQorICAgIGJvb2wgaXNIaWVyYXJj
aGljYWwoKSBjb25zdDsKKworICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmc7IH0KKworICAgIFN0cmluZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgodW5zaWduZWQgbGVuZ3RoID0gMTAyNCkgY29uc3Q7CisKKyAgICBTdHJpbmdWaWV3IHByb3Rv
Y29sKCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBob3N0KCkgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0OworICAgIFN0cmluZyBob3N0QW5kUG9ydCgpIGNv
bnN0OworICAgIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7CisgICAgU3RyaW5n
IHVzZXIoKSBjb25zdDsKKyAgICBTdHJpbmcgcGFzcygpIGNvbnN0OworICAgIFN0cmluZyBwYXRo
KCkgY29uc3Q7CisgICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7CisgICAgU3Ry
aW5nIHF1ZXJ5KCkgY29uc3Q7CisgICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0
OworICAgIGJvb2wgaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBib29sIGhh
c1VzZXJuYW1lKCkgY29uc3Q7CisgICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OworICAgIGJv
b2wgaGFzUXVlcnkoKSBjb25zdDsKKyAgICBib29sIGhhc0ZyYWdtZW50KCkgY29uc3Q7CisgICAg
Ym9vbCBoYXNQYXRoKCkgY29uc3Q7CisKKyAgICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzKCks
IHRoZXNlIGZ1bmN0aW9ucyBkb24ndCBkZWNvZGUgZXNjYXBlIHNlcXVlbmNlcy4KKyAgICAvLyBU
aGlzIGlzIG5lY2Vzc2FyeSBmb3IgYWNjdXJhdGUgcm91bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5j
b2RpbmcgZG9lc24ndCBlbmNvZGUgJyUnIGNoYXJhY3RlcnMuCisgICAgU3RyaW5nIGVuY29kZWRV
c2VyKCkgY29uc3Q7CisgICAgU3RyaW5nIGVuY29kZWRQYXNzKCkgY29uc3Q7CisKKyAgICBTdHJp
bmcgYmFzZUFzU3RyaW5nKCkgY29uc3Q7CisKKyAgICBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBj
b25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBVUkwncyBwcm90b2Nv
bCBpcyB0aGUgc2FtZSBhcyB0aGUgbnVsbC0KKyAgICAvLyB0ZXJtaW5hdGVkIEFTQ0lJIGFyZ3Vt
ZW50LiBUaGUgYXJndW1lbnQgbXVzdCBiZSBsb3dlci1jYXNlLgorICAgIGJvb2wgcHJvdG9jb2xJ
cyhjb25zdCBjaGFyKikgY29uc3Q7CisgICAgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNv
bnN0OworICAgIGJvb2wgcHJvdG9jb2xJc0Jsb2IoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElz
KCJibG9iIik7IH0KKyAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29uc3QgeyByZXR1cm4gcHJv
dG9jb2xJcygiZGF0YSIpOyB9CisgICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29u
c3Q7CisgICAgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OworICAgIGJvb2wgaXNCbGFua1VSTCgp
IGNvbnN0OworICAgIGJvb2wgY2Fubm90QmVBQmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fu
bm90QmVBQmFzZVVSTDsgfQorCisgICAgYm9vbCBpc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OworCisgICAgYm9vbCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIHJlbW92ZVBvcnQoKTsKKyAg
ICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOworCisgICAgLy8gSW5wdXQgaXMgbGlrZSAi
Zm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCisgICAgdm9pZCBzZXRIb3N0QW5kUG9ydChjb25z
dCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0VXNlcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHNldFBhc3MoY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBw
YXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aAorICAgIC8vIHdp
bGwgYmUgIi8iLgorICAgIHZvaWQgc2V0UGF0aChjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFRo
ZSBxdWVyeSBtYXkgYmVnaW4gd2l0aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3
aWxsIGJlIGFkZGVkCisgICAgLy8gZm9yIHlvdS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVt
cHR5IHN0cmluZyB3aWxsIGxlYXZlIGEgIj8iIGluIHRoZQorICAgIC8vIFVSTCAod2l0aCBub3Ro
aW5nIGFmdGVyIGl0KS4gVG8gY2xlYXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcuCisg
ICAgdm9pZCBzZXRRdWVyeShjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0RnJhZ21lbnRJ
ZGVudGlmaWVyKFN0cmluZ1ZpZXcpOworICAgIHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVy
KCk7CisKKyAgICB2b2lkIHJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7CisKKyAg
ICBzdGF0aWMgYm9vbCBob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyk7CisKKyAgICB1bnNpZ25l
ZCBwYXRoU3RhcnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7CisgICAg
dW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CisKKyAgICBvcGVyYXRvciBjb25z
dCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KKworI2lmIFVTRShDRikKKyAg
ICBVUkwoQ0ZVUkxSZWYpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBj
b25zdDsKKyNlbmRpZgorCisjaWYgVVNFKFNPVVApCisgICAgVVJMKFNvdXBVUkkqKTsKKyAgICBH
VW5pcXVlUHRyPFNvdXBVUkk+IGNyZWF0ZVNvdXBVUkkoKSBjb25zdDsKKyNlbmRpZgorCisjaWYg
VVNFKEZPVU5EQVRJT04pCisgICAgVVJMKE5TVVJMKik7CisgICAgb3BlcmF0b3IgTlNVUkwqKCkg
Y29uc3Q7CisjZW5kaWYKKyNpZmRlZiBfX09CSkNfXworICAgIG9wZXJhdG9yIE5TU3RyaW5nKigp
IGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CisjZW5kaWYKKworI2lmbmRlZiBOREVCVUcKKyAg
ICB2b2lkIHByaW50KCkgY29uc3Q7CisjZW5kaWYKKworICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGUgPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgVVJMJik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXIm
KTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgVVJMUGFyc2VyOworICAgIHZvaWQgaW52
YWxpZGF0ZSgpOworICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29u
c3QgY2hhciopOworICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZm
ZXIpIGNvbnN0OworICAgIHVuc2lnbmVkIGhvc3RTdGFydCgpIGNvbnN0OworCisgICAgZnJpZW5k
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsK
KyAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKKworICAgIFN0cmluZyBtX3N0cmluZzsKKworICAgIHVuc2lnbmVk
IG1faXNWYWxpZCA6IDE7CisgICAgdW5zaWduZWQgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDog
MTsKKyAgICB1bnNpZ25lZCBtX2Nhbm5vdEJlQUJhc2VVUkwgOiAxOworCisgICAgLy8gVGhpcyBp
cyBvdXQgb2Ygb3JkZXIgdG8gYWxpZ24gdGhlIGJpdHMgYmV0dGVyLiBUaGUgcG9ydCBpcyBhZnRl
ciB0aGUgaG9zdC4KKyAgICB1bnNpZ25lZCBtX3BvcnRMZW5ndGggOiAzOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbWF4UG9ydExlbmd0aCA9ICgxIDw8IDMpIC0gMTsKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4U2NoZW1lTGVuZ3RoID0gKDEgPDwgMjYpIC0gMTsK
KyAgICB1bnNpZ25lZCBtX3NjaGVtZUVuZCA6IDI2OworICAgIHVuc2lnbmVkIG1fdXNlclN0YXJ0
OworICAgIHVuc2lnbmVkIG1fdXNlckVuZDsKKyAgICB1bnNpZ25lZCBtX3Bhc3N3b3JkRW5kOwor
ICAgIHVuc2lnbmVkIG1faG9zdEVuZDsKKyAgICB1bnNpZ25lZCBtX3BhdGhBZnRlckxhc3RTbGFz
aDsKKyAgICB1bnNpZ25lZCBtX3BhdGhFbmQ7CisgICAgdW5zaWduZWQgbV9xdWVyeUVuZDsKK307
CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6
ZW9mKHVuc2lnbmVkKSwgIlVSTCBzaG91bGQgc3RheSBzbWFsbCIpOworCit0ZW1wbGF0ZSA8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4K
K2Jvb2wgVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCit7CisgICAgYXV0
byBvcHRpb25hbFVSTCA9IFVSTDo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghb3B0aW9uYWxV
UkwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVS
TCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgU3Ry
aW5nIHN0cmluZzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmluZykpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgc3RyaW5nKTsKK30KKwor
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdu
b3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBV
UkwmLCBjb25zdCBVUkwmKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYmxhbmtV
UkwoKTsKKworLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCisv
LyBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJM
LgorLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50IGZyb20gdGhlIFVSTCBmdW5jdGlvbnMgaW4g
dGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJz
YWJsZSBVUkwuCisvLyBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1c2UgdmFsaWQg
amF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxpZCBieSBV
UkwuCisKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3Rv
Y29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIHByb3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOworCitX
VEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29s
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYpOyAvLyBC
bGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQgbmV2ZXIgYmUgdXNlZCBmb3IgV2ViIHJlc291cmNl
cy4KKworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3Rv
Y29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcoKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZFByb3RvY29sKGNvbnN0
IFN0cmluZyYpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFV
UkwoY29uc3QgU3RyaW5nJiB1cmwpOworCisvLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNl
cHQgdG8gZXhwb3NlLCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNj
YXBpbmcgcGVyIHRoZSBVUkwgU3RhbmRhcmQuCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVu
Y29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7CisKKy8vIElubGluZXMu
CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7
CisgICAgcmV0dXJuIGEuc3RyaW5nKCkgPT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4g
YS5zdHJpbmcoKSA9PSBiOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIHJldHVybiBhID09IGIuc3RyaW5nKCk7Cit9CisK
K2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7Cisg
ICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5z
dHJpbmcoKSAhPSBiOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYg
YSwgY29uc3QgVVJMJiBiKQoreworICAgIHJldHVybiBhICE9IGIuc3RyaW5nKCk7Cit9CisKKy8v
IElubGluZSB2ZXJzaW9ucyBvZiBzb21lIG5vbi1Hb29nbGVVUkwgZnVuY3Rpb25zIHNvIHdlIGNh
biBnZXQgaW5saW5pbmcKKy8vIHdpdGhvdXQgaGF2aW5nIHRvIGhhdmUgYSBsb3Qgb2YgdWdseSBp
ZmRlZnMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uCisKK2lubGluZSBib29sIFVSTDo6aXNOdWxs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7Cit9CisKK2lubGluZSBi
b29sIFVSTDo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHko
KTsKK30KKworaW5saW5lIGJvb2wgVVJMOjppc1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pc1ZhbGlkOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc1BhdGgoKSBjb25zdAoreworICAg
IHJldHVybiBtX3BhdGhFbmQgIT0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworfQorCitpbmxp
bmUgYm9vbCBVUkw6Omhhc1VzZXJuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VyRW5k
ID4gbV91c2VyU3RhcnQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6aGFzUGFzc3dvcmQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3Bhc3N3b3JkRW5kID4gKG1fdXNlckVuZCArIDEpOworfQorCitp
bmxpbmUgYm9vbCBVUkw6Omhhc1F1ZXJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9xdWVyeUVu
ZCA+IG1fcGF0aEVuZDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpoYXNGcmFnbWVudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlF
bmQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsKK30KKworaW5saW5lIHVu
c2lnbmVkIFVSTDo6cGF0aFN0YXJ0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ob3N0RW5kICsg
bV9wb3J0TGVuZ3RoOworfQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoRW5kKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wYXRoRW5kOworfQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRo
QWZ0ZXJMYXN0U2xhc2goKSBjb25zdAoreworICAgIHJldHVybiBtX3BhdGhBZnRlckxhc3RTbGFz
aDsKK30KKworV1RGX0VYUE9SVF9QUklWQVRFIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBjb25zdCBVUkwmKTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8VVJMPjsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkxIYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAyZmEzZGNjZjY2MTAwZmM4NTA4NjZl
YzM1NDdhM2E4NmRmOWJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhh
c2guaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgVVJMSGFzaF9oCisjZGVmaW5lIFVSTEhhc2hfaAorCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBV
UkxIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkKKyAgICB7
CisgICAgICAgIHJldHVybiBrZXkuc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCk7CisgICAgfQorCisg
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCisgICAgewor
ICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7
CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSBmYWxzZTsKK307CisKKy8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3Ig
U3RyaW5nCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxVUkw+IHsKKyAgICB1c2luZyBI
YXNoID0gVVJMSGFzaDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPiA6
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxVUkw+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
KyNlbmRpZiAvLyBVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwOWQ0Yjgx
Zjk4MjMzYWQ0YTk5Njk1YjNlOWRhMzRjYjFjZTZjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBAIC0wLDAgKzEsMjkyNSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KKwor
I2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHVuaWNvZGUvdWlk
bmEuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3V0ZjguaD4KKyNpbmNsdWRlIDx1bmljb2RlL3V0eXBl
cy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworI2RlZmluZSBVUkxfUEFSU0VSX0RFQlVHR0lORyAw
CisKKyNpZiBVUkxfUEFSU0VSX0RFQlVHR0lORworI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4p
IFdURkxvZ0Fsd2F5cyhfX1ZBX0FSR1NfXykKKyNlbHNlCisjZGVmaW5lIFVSTF9QQVJTRVJfTE9H
KC4uLikKKyNlbmRpZgorICAgIAordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Ns
YXNzIENvZGVQb2ludEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQ
b2ludEl0ZXJhdG9yKCkgeyB9CisgICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcihj
b25zdCBDaGFyYWN0ZXJUeXBlKiBiZWdpbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQorICAg
ICAgICA6IG1fYmVnaW4oYmVnaW4pCisgICAgICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9
CisgICAgCisgICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcihjb25zdCBDb2RlUG9p
bnRJdGVyYXRvciYgYmVnaW4sIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yJiBlbmQpCisgICAgICAg
IDogQ29kZVBvaW50SXRlcmF0b3IoYmVnaW4ubV9iZWdpbiwgZW5kLm1fYmVnaW4pCisgICAgewor
ICAgICAgICBBU1NFUlQoZW5kLm1fYmVnaW4gPj0gYmVnaW4ubV9iZWdpbik7CisgICAgfQorICAg
IAorICAgIEFMV0FZU19JTkxJTkUgVUNoYXIzMiBvcGVyYXRvciooKSBjb25zdDsKKyAgICBBTFdB
WVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisKKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luCisgICAg
ICAgICAgICAmJiBtX2VuZCA9PSBvdGhlci5tX2VuZDsKKyAgICB9CisgICAgQUxXQVlTX0lOTElO
RSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgQ29k
ZVBvaW50SXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIp
CisgICAgeworICAgICAgICBtX2JlZ2luID0gb3RoZXIubV9iZWdpbjsKKyAgICAgICAgbV9lbmQg
PSBvdGhlci5tX2VuZDsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBhdEVuZCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9iZWdp
biA8PSBtX2VuZCk7CisgICAgICAgIHJldHVybiBtX2JlZ2luID49IG1fZW5kOworICAgIH0KKyAg
ICAKKyAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBjb2RlVW5pdHNTaW5jZShjb25zdCBDaGFyYWN0
ZXJUeXBlKiByZWZlcmVuY2UpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA+
PSByZWZlcmVuY2UpOworICAgICAgICByZXR1cm4gbV9iZWdpbiAtIHJlZmVyZW5jZTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBjb2RlVW5pdHNTaW5jZShjb25zdCBDb2RlUG9p
bnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29kZVVuaXRz
U2luY2Uob3RoZXIubV9iZWdpbik7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBtX2JlZ2luIHsgbnVsbHB0ciB9OworICAgIGNvbnN0IENoYXJhY3RlclR5
cGUqIG1fZW5kIHsgbnVsbHB0ciB9OworfTsKKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBV
Q2hhcjMyIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoIWF0RW5kKCkpOworICAgIHJldHVybiAqbV9iZWdpbjsKK30KKwordGVtcGxhdGU8
PgorQUxXQVlTX0lOTElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPjo6b3BlcmF0b3Ir
KygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgoreworICAgIG1fYmVnaW4rKzsKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJ
dGVyYXRvcjxVQ2hhcj46Om9wZXJhdG9yKigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFhdEVuZCgp
KTsKKyAgICBVQ2hhcjMyIGM7CisgICAgVTE2X0dFVChtX2JlZ2luLCAwLCAwLCBtX2VuZCAtIG1f
YmVnaW4sIGMpOworICAgIHJldHVybiBjOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5F
IGF1dG8gQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+OjpvcGVyYXRvcisrKCkgLT4gQ29kZVBvaW50
SXRlcmF0b3ImCit7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgc2l6ZV90IGxlbmd0aCA9IG1f
ZW5kIC0gbV9iZWdpbjsKKyAgICBVMTZfRldEXzEobV9iZWdpbiwgaSwgbGVuZ3RoKTsKKyAgICBt
X2JlZ2luICs9IGk7CisgICAgcmV0dXJuICp0aGlzOworfQorICAgIAorQUxXQVlTX0lOTElORSBz
dGF0aWMgdm9pZCBhcHBlbmRDb2RlUG9pbnQoVmVjdG9yPFVDaGFyPiYgZGVzdGluYXRpb24sIFVD
aGFyMzIgY29kZVBvaW50KQoreworICAgIGlmIChVX0lTX0JNUChjb2RlUG9pbnQpKSB7CisgICAg
ICAgIGRlc3RpbmF0aW9uLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oY29kZVBvaW50KSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZGVzdGluYXRpb24ucmVzZXJ2ZUNhcGFjaXR5KGRl
c3RpbmF0aW9uLnNpemUoKSArIDIpOworICAgIGRlc3RpbmF0aW9uLnVuY2hlY2tlZEFwcGVuZChV
MTZfTEVBRChjb2RlUG9pbnQpKTsKKyAgICBkZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2
X1RSQUlMKGNvZGVQb2ludCkpOworfQorCitlbnVtIFVSTENoYXJhY3RlckNsYXNzIHsKKyAgICBV
c2VySW5mbyA9IDB4MSwKKyAgICBEZWZhdWx0ID0gMHgyLAorICAgIEZvcmJpZGRlbkhvc3QgPSAw
eDQsCisgICAgUXVlcnlQZXJjZW50ID0gMHg4LAorICAgIFNsYXNoUXVlc3Rpb25Pckhhc2ggPSAw
eDEwLAorICAgIFZhbGlkU2NoZW1lID0gMHgyMCwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90
IGNoYXJhY3RlckNsYXNzVGFibGVbMjU2XSA9IHsKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweDAKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCwgLy8gMHgyCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDMKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NAorICAg
IFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg1CisgICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQsIC8vIDB4NworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVy
Y2VudCwgLy8gMHg4CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9y
YmlkZGVuSG9zdCwgLy8gMHg5CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHhBCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweEIKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4QworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhv
c3QsIC8vIDB4RAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhF
CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEYKKyAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTAKKyAgICBVc2VySW5mbyB8IERl
ZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTEKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQsIC8vIDB4MTIKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4MTMKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
MTQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTUKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTYKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTcKKyAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQsIC8vIDB4MTgKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQsIC8vIDB4MTkKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MUEKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUIKKyAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUMKKyAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUQKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUUKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQsIC8vIDB4MUYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQg
fCBGb3JiaWRkZW5Ib3N0LCAvLyAnICcKKyAgICAwLCAvLyAnIScKKyAgICBVc2VySW5mbyB8IERl
ZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vICciJworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1
ZXJ5UGVyY2VudCB8IFNsYXNoUXVlc3Rpb25Pckhhc2ggfCBGb3JiaWRkZW5Ib3N0LCAvLyAnIycK
KyAgICAwLCAvLyAnJCcKKyAgICBGb3JiaWRkZW5Ib3N0LCAvLyAnJScKKyAgICAwLCAvLyAnJicK
KyAgICAwLCAvLyAnXCcnCisgICAgMCwgLy8gJygnCisgICAgMCwgLy8gJyknCisgICAgMCwgLy8g
JyonCisgICAgVmFsaWRTY2hlbWUsIC8vICcrJworICAgIDAsIC8vICcsJworICAgIFZhbGlkU2No
ZW1lLCAvLyAnLScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJy4nCisgICAgVXNlckluZm8gfCBTbGFz
aFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJy8nCisgICAgVmFsaWRTY2hlbWUs
IC8vICcwJworICAgIFZhbGlkU2NoZW1lLCAvLyAnMScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzIn
CisgICAgVmFsaWRTY2hlbWUsIC8vICczJworICAgIFZhbGlkU2NoZW1lLCAvLyAnNCcKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJzUnCisgICAgVmFsaWRTY2hlbWUsIC8vICc2JworICAgIFZhbGlkU2No
ZW1lLCAvLyAnNycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzgnCisgICAgVmFsaWRTY2hlbWUsIC8v
ICc5JworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJzonCisgICAgVXNlckluZm8s
IC8vICc7JworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRl
bkhvc3QsIC8vICc8JworICAgIFVzZXJJbmZvLCAvLyAnPScKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnPicKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJz8nCisg
ICAgVXNlckluZm8gfCBGb3JiaWRkZW5Ib3N0LCAvLyAnQCcKKyAgICBWYWxpZFNjaGVtZSwgLy8g
J0EnCisgICAgVmFsaWRTY2hlbWUsIC8vICdCJworICAgIFZhbGlkU2NoZW1lLCAvLyAnQycKKyAg
ICBWYWxpZFNjaGVtZSwgLy8gJ0QnCisgICAgVmFsaWRTY2hlbWUsIC8vICdFJworICAgIFZhbGlk
U2NoZW1lLCAvLyAnRicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0cnCisgICAgVmFsaWRTY2hlbWUs
IC8vICdIJworICAgIFZhbGlkU2NoZW1lLCAvLyAnSScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0on
CisgICAgVmFsaWRTY2hlbWUsIC8vICdLJworICAgIFZhbGlkU2NoZW1lLCAvLyAnTCcKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJ00nCisgICAgVmFsaWRTY2hlbWUsIC8vICdOJworICAgIFZhbGlkU2No
ZW1lLCAvLyAnTycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1AnCisgICAgVmFsaWRTY2hlbWUsIC8v
ICdRJworICAgIFZhbGlkU2NoZW1lLCAvLyAnUicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1MnCisg
ICAgVmFsaWRTY2hlbWUsIC8vICdUJworICAgIFZhbGlkU2NoZW1lLCAvLyAnVScKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJ1YnCisgICAgVmFsaWRTY2hlbWUsIC8vICdXJworICAgIFZhbGlkU2NoZW1l
LCAvLyAnWCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1knCisgICAgVmFsaWRTY2hlbWUsIC8vICda
JworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ1snCisgICAgVXNlckluZm8gfCBT
bGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ1xcJworICAgIFVzZXJJbmZv
IHwgRm9yYmlkZGVuSG9zdCwgLy8gJ10nCisgICAgVXNlckluZm8sIC8vICdeJworICAgIDAsIC8v
ICdfJworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCwgLy8gJ2AnCisgICAgVmFsaWRTY2hlbWUsIC8v
ICdhJworICAgIFZhbGlkU2NoZW1lLCAvLyAnYicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2MnCisg
ICAgVmFsaWRTY2hlbWUsIC8vICdkJworICAgIFZhbGlkU2NoZW1lLCAvLyAnZScKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJ2YnCisgICAgVmFsaWRTY2hlbWUsIC8vICdnJworICAgIFZhbGlkU2NoZW1l
LCAvLyAnaCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2knCisgICAgVmFsaWRTY2hlbWUsIC8vICdq
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnaycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2wnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdtJworICAgIFZhbGlkU2NoZW1lLCAvLyAnbicKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ28nCisgICAgVmFsaWRTY2hlbWUsIC8vICdwJworICAgIFZhbGlkU2NoZW1lLCAv
LyAncScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3InCisgICAgVmFsaWRTY2hlbWUsIC8vICdzJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAndCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3UnCisgICAgVmFs
aWRTY2hlbWUsIC8vICd2JworICAgIFZhbGlkU2NoZW1lLCAvLyAndycKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJ3gnCisgICAgVmFsaWRTY2hlbWUsIC8vICd5JworICAgIFZhbGlkU2NoZW1lLCAvLyAn
eicKKyAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8vICd7JworICAgIFVzZXJJbmZvLCAvLyAnfCcK
KyAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8vICd9JworICAgIDAsIC8vICd+JworICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg3RgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg4MQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg4MworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NAorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg4NQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NgorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg4NworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4OAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4
OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4Qgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4QworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RAorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg4RQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RgorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg5MAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg5MgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MworICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg5NAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg5NgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NworICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg5OAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg5QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5
QworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RQor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMAorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhBMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMgorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhBMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNAorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhBNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNgorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhBNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBOAorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhBOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBQQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhBQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBQworICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhBRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhB
RgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMQor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMworICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhCNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNQorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhCNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNworICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhCOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCOQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhCQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhCQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCRAorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhCRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCRgorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhDMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhD
MgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNAor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNgorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhDNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDOAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhDOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhDQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQworICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhDRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhDRgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMAorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhEMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhEMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhE
NQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENwor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhEQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQgorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhEQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERAorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhERQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERgorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhFMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhFMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMworICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhFNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhFNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhF
OAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQQor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQworICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhFRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRQorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhFRgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMAorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhGMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMgorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhGMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNAorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhGNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhGNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhGOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhG
QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRAor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRgorfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMg
Ym9vbCBpc0MwQ29udHJvbChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFj
dGVyIDw9IDB4MUY7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRyb2xPclNwYWNlKENoYXJhY3RlclR5cGUgY2hhcmFj
dGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0gMHgyMDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1RhYk9yTmV3bGluZShDaGFy
YWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4RCAmJiBjaGFyYWN0
ZXIgPj0gMHg5ICYmIGNoYXJhY3RlciAhPSAweEIgJiYgY2hhcmFjdGVyICE9IDB4QzsgfQordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBp
c0luU2ltcGxlRW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFy
YWN0ZXIgPiAweDdFIHx8IGlzQzBDb250cm9sKGNoYXJhY3Rlcik7IH0KK3RlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJbkRlZmF1bHRF
bmNvZGVTZXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4
N0UgfHwgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgRGVmYXVsdDsgfQordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0lu
VXNlckluZm9FbmNvZGVTZXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJh
Y3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgVXNlckluZm87
IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGlj
IGJvb2wgaXNQZXJjZW50T3JOb25BU0NJSShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gIWlzQVNDSUkoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT0gJyUnOyB9Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzU2xhc2hR
dWVzdGlvbk9ySGFzaChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVy
IDw9ICdcXCcgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgU2xhc2hRdWVzdGlv
bk9ySGFzaDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElO
RSBzdGF0aWMgYm9vbCBpc1ZhbGlkU2NoZW1lQ2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhcmFj
dGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0gJ3onICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hh
cmFjdGVyXSAmIFZhbGlkU2NoZW1lOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludChDaGFy
YWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICddJyAmJiBjaGFyYWN0
ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBGb3JiaWRkZW5Ib3N0OyB9CitBTFdBWVNfSU5MSU5F
IHN0YXRpYyBib29sIHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUodWludDhfdCBieXRlLCBj
b25zdCBib29sJiB1cmxJc1NwZWNpYWwpCit7CisgICAgaWYgKGNoYXJhY3RlckNsYXNzVGFibGVb
Ynl0ZV0gJiBRdWVyeVBlcmNlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChieXRl
ID09ICdcJycgJiYgdXJsSXNTcGVjaWFsKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQoVUNo
YXIgYykKK3sKKyAgICByZXR1cm4gV1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQoYyk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFVSTFBhcnNlcjo6UmVwb3J0U3ludGF4
VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZpb2xhdGlvbj4KK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQ
YXJzZXI6OmFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9y
LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50
YXhWaW9sYXRpb25Qb3NpdGlvbikKK3sKKyAgICArK2l0ZXJhdG9yOworICAgIHdoaWxlIChVTkxJ
S0VMWSghaXRlcmF0b3IuYXRFbmQoKSAmJiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgewor
ICAgICAgICBpZiAocmVwb3J0U3ludGF4VmlvbGF0aW9uID09IFJlcG9ydFN5bnRheFZpb2xhdGlv
bjo6WWVzKQorICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4Vmlv
bGF0aW9uUG9zaXRpb24pOworICAgICAgICArK2l0ZXJhdG9yOworICAgIH0KK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wgVVJMUGFyc2VyOjp0YWtlc1R3b0FkdmFu
Y2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7
CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBh
ZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9y
KTsKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0
b3IpOworICAgIHJldHVybiBpdGVyYXRvci5hdEVuZCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNXaW5kb3dz
RHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7
CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkgfHwgIWlzQVNDSUlBbHBoYSgqaXRlcmF0b3IpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRT
eW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKFVOTElLRUxZKCppdGVyYXRvciA9PSAnfCcpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUg
dm9pZCBVUkxQYXJzZXI6OmFwcGVuZFRvQVNDSUlCdWZmZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7
CisgICAgQVNTRVJUKGlzQVNDSUkoY29kZVBvaW50KSk7CisgICAgaWYgKFVOTElLRUxZKG1fZGlk
U2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY29kZVBv
aW50KTsKK30KKworQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1
ZmZlcihjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmIChV
TkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCisgICAgICAgIG1fYXNjaWlCdWZmZXIu
YXBwZW5kKGNoYXJhY3RlcnMsIGxlbmd0aCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoaXNX
aW5kb3dzRHJpdmVMZXR0ZXIoaXRlcmF0b3IpKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCpp
dGVyYXRvcik7CisgICAgYWR2YW5jZShpdGVyYXRvcik7CisgICAgQVNTRVJUKCFpdGVyYXRvci5h
dEVuZCgpKTsKKyAgICBBU1NFUlQoKml0ZXJhdG9yID09ICc6JyB8fCAqaXRlcmF0b3IgPT0gJ3wn
KTsKKyAgICBpZiAoKml0ZXJhdG9yID09ICd8JykKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0
ZXJhdG9yKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgYWR2YW5jZShpdGVy
YXRvcik7Cit9CisKK2Jvb2wgVVJMUGFyc2VyOjpjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihj
b25zdCBVUkwmIGJhc2UpCit7CisgICAgaWYgKGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGgg
PCBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgaWYgKGJhc2UubV9zdHJpbmcuaXM4
Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0IExDaGFyKiBiZWdpbiA9IGJhc2UubV9zdHJpbmcu
Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgICAgIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjKGJl
Z2luICsgYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDEsIGJlZ2luICsgYmFz
ZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0
ZXIoYykpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJh
Y3RlcnMxNigpOworICAgICAgICAgICAgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+IGMoYmVnaW4g
KyBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1f
c3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihj
KSkgeworICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Citib29sIFVSTFBhcnNlcjo6c2hvdWxkQ29weUZpbGVVUkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKCFpc1dpbmRvd3NEcml2ZUxldHRlcihp
dGVyYXRvcikpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZShpdGVyYXRvcik7CisgICAgaWYg
KGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGFkdmFuY2UoaXRl
cmF0b3IpOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gIWlzU2xhc2hRdWVzdGlvbk9ySGFzaCgqaXRlcmF0b3IpOworfQorCitzdGF0
aWMgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90IGJ5dGUsIFZlY3RvcjxMQ2hhcj4mIGJ1
ZmZlcikKK3sKKyAgICBidWZmZXIuYXBwZW5kKCclJyk7CisgICAgYnVmZmVyLmFwcGVuZCh1cHBl
ck5pYmJsZVRvQVNDSUlIZXhEaWdpdChieXRlKSk7CisgICAgYnVmZmVyLmFwcGVuZChsb3dlck5p
YmJsZVRvQVNDSUlIZXhEaWdpdChieXRlKSk7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpwZXJjZW50
RW5jb2RlQnl0ZSh1aW50OF90IGJ5dGUpCit7CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4Vmlv
bGF0aW9uKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCclJyk7CisgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcih1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChieXRlKSk7CisgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChieXRlKSk7Cit9CisKK2NvbnN0
IGNoYXIgcmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRbMTBdID0gIiVFRiVC
RiVCRCI7Citjb25zdCBzaXplX3QgcmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29k
ZWRMZW5ndGggPSBzaXplb2YocmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQp
IC0gMTsKKwordGVtcGxhdGU8Ym9vbCgqaXNJbkNvZGVTZXQpKFVDaGFyMzIpLCB0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6dXRmOFBlcmNlbnRF
bmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQor
eworICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7CisgICAgVUNoYXIzMiBjb2RlUG9pbnQg
PSAqaXRlcmF0b3I7CisgICAgaWYgKExJS0VMWShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7CisgICAg
ICAgIGlmIChVTkxJS0VMWShpc0luQ29kZVNldChjb2RlUG9pbnQpKSkgeworICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRl
KGNvZGVQb2ludCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihjb2RlUG9pbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoaXNJbkNvZGVTZXQoY29kZVBvaW50KSwgImlzSW5Db2RlU2V0IHNob3VsZCBhbHdh
eXMgcmV0dXJuIHRydWUgZm9yIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIik7CisgICAgc3ludGF4Vmlv
bGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAKKyAgICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKGNvZGVQ
b2ludCkpIHsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihyZXBsYWNlbWVudENoYXJhY3Rl
clVURjhQZXJjZW50RW5jb2RlZCwgcmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29k
ZWRMZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHVpbnQ4X3QgYnVm
ZmVyW1U4X01BWF9MRU5HVEhdOworICAgIGludDMyX3Qgb2Zmc2V0ID0gMDsKKyAgICBVOF9BUFBF
TkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCBjb2RlUG9pbnQpOworICAgIGZvciAoaW50MzJfdCBp
ID0gMDsgaSA8IG9mZnNldDsgKytpKQorICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShidWZmZXJb
aV0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElO
RSB2b2lkIFVSTFBhcnNlcjo6dXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5k
KCkpOworICAgIFVDaGFyMzIgY29kZVBvaW50ID0gKml0ZXJhdG9yOworICAgIGlmIChMSUtFTFko
aXNBU0NJSShjb2RlUG9pbnQpKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2Vu
dEVuY29kZVF1ZXJ5Qnl0ZShjb2RlUG9pbnQsIG1fdXJsSXNTcGVjaWFsKSkpIHsKKyAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgICAgICAgICBwZXJjZW50RW5jb2Rl
Qnl0ZShjb2RlUG9pbnQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoY29kZVBvaW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOworICAgIAorICAgIGlmICghVV9JU19VTklDT0RFX0NI
QVIoY29kZVBvaW50KSkgeworICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50
Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkLCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJj
ZW50RW5jb2RlZExlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aW50OF90
IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKKyAgICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAgVThf
QVBQRU5EX1VOU0FGRShidWZmZXIsIG9mZnNldCwgY29kZVBvaW50KTsKKyAgICBmb3IgKGludDMy
X3QgaSA9IDA7IGkgPCBvZmZzZXQ7ICsraSkgeworICAgICAgICBhdXRvIGJ5dGUgPSBidWZmZXJb
aV07CisgICAgICAgIGlmIChzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGJ5dGUsIG1fdXJs
SXNTcGVjaWFsKSkKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ5dGUpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGJ5dGUpOworICAgIH0KK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjplbmNv
ZGVOb25VVEY4UXVlcnkoY29uc3QgVmVjdG9yPFVDaGFyPiYgc291cmNlLCBjb25zdCBVUkxUZXh0
RW5jb2RpbmcmIGVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVy
YXRvcikKK3sKKyAgICBhdXRvIGVuY29kZWQgPSBlbmNvZGluZy5lbmNvZGVGb3JVUkxQYXJzaW5n
KFN0cmluZ1ZpZXcoc291cmNlLmRhdGEoKSwgc291cmNlLnNpemUoKSkpOworICAgIGF1dG8qIGRh
dGEgPSBlbmNvZGVkLmRhdGEoKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gZW5jb2RlZC5zaXplKCk7
CisgICAgCisgICAgaWYgKCFsZW5ndGggPT0gIWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAg
ICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOworICAgICAgICB1aW50OF90IGJ5dGUgPSBkYXRh
W2ldOworICAgICAgICBpZiAoVU5MSUtFTFkoYnl0ZSAhPSAqaXRlcmF0b3IpKSB7CisgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUo
Ynl0ZSwgbV91cmxJc1NwZWNpYWwpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0
ZXJhdG9yKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoYnl0ZSk7CisgICAgICAgICsraXRlcmF0b3I7CisgICAgfQorICAgIHdoaWxl
ICghaXRlcmF0b3IuYXRFbmQoKSAmJiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKQorICAgICAg
ICArK2l0ZXJhdG9yOworICAgIEFTU0VSVCgoaSA9PSBsZW5ndGgpID09IGl0ZXJhdG9yLmF0RW5k
KCkpOworICAgIGZvciAoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKG1fZGlk
U2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICAgICAgdWludDhfdCBieXRlID0gZGF0YVtpXTsKKyAg
ICAgICAgaWYgKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNp
YWwpKQorICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnl0ZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYnl0ZSk7CisgICAgfQorfQorCitzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3Ry
aW5nVmlldyBzY2hlbWUpCit7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGZ0cFBvcnQgPSAy
MTsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgZ29waGVyUG9ydCA9IDcwOworICAgIHN0YXRp
YyBjb25zdCB1aW50MTZfdCBodHRwUG9ydCA9IDgwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCBodHRwc1BvcnQgPSA0NDM7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IHdzUG9ydCA9IDgw
OworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCB3c3NQb3J0ID0gNDQzOworICAgIAorICAgIGF1
dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7CisgICAgY2FzZSAn
dyc6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAg
ICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiB3c1BvcnQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBjYXNlIDM6CisgICAg
ICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsy
XSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0dXJuIHdzc1BvcnQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgY2FzZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3Ro
KSB7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisg
ICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNj
aGVtZVszXSA9PSAncCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIGh0dHBQb3J0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAg
aWYgKHNjaGVtZVsxXSA9PSAndCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3Qn
CisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJworICAgICAgICAgICAgICAgICYm
IHNjaGVtZVs0XSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0dXJuIGh0dHBzUG9ydDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgY2FzZSAnZyc6CisgICAg
ICAgIGlmIChsZW5ndGggPT0gNgorICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJworICAg
ICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJworICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09
ICdoJworICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdlJworICAgICAgICAgICAgJiYgc2No
ZW1lWzVdID09ICdyJykKKyAgICAgICAgICAgIHJldHVybiBnb3BoZXJQb3J0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGNhc2UgJ2YnOgorICAgICAgICBpZiAobGVuZ3RoID09
IDMKKyAgICAgICAgICAgICYmIHNjaGVtZVsxXSA9PSAndCcKKyAgICAgICAgICAgICYmIHNjaGVt
ZVsyXSA9PSAncCcpCisgICAgICAgICAgICByZXR1cm4gZnRwUG9ydDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIH0KK30KKworZW51bSBjbGFzcyBTY2hlbWUgeworICAgIFdTLAorICAgIFdTUywKKyAg
ICBGaWxlLAorICAgIEZUUCwKKyAgICBHb3BoZXIsCisgICAgSFRUUCwKKyAgICBIVFRQUywKKyAg
ICBOb25TcGVjaWFsCit9OworCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBTY2hlbWUgc2NoZW1lKFN0
cmluZ1ZpZXcgc2NoZW1lKQoreworICAgIGF1dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgpOwor
ICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAg
IHN3aXRjaCAoc2NoZW1lWzBdKSB7CisgICAgY2FzZSAnZic6CisgICAgICAgIHN3aXRjaCAobGVu
Z3RoKSB7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3Qn
CisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gU2NoZW1lOjpGVFA7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFs
OworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdpJworICAg
ICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAnbCcKKyAgICAgICAgICAgICAgICAmJiBzY2hl
bWVbM10gPT0gJ2UnKQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkZpbGU7CisgICAg
ICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgfQorICAgIGNhc2Ug
J2cnOgorICAgICAgICBpZiAobGVuZ3RoID09IDYKKyAgICAgICAgICAgICYmIHNjaGVtZVsxXSA9
PSAnbycKKyAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcKKyAgICAgICAgICAgICYmIHNj
aGVtZVszXSA9PSAnaCcKKyAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAnZScKKyAgICAgICAg
ICAgICYmIHNjaGVtZVs1XSA9PSAncicpCisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpHb3Bo
ZXI7CisgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgY2FzZSAnaCc6Cisg
ICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlm
IChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0Jwor
ICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6SFRUUDsKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7
CisgICAgICAgIGNhc2UgNToKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAg
ICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVt
ZVszXSA9PSAncCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQorICAgICAg
ICAgICAgICAgIHJldHVybiBTY2hlbWU6OkhUVFBTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVt
ZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hl
bWU6Ok5vblNwZWNpYWw7CisgICAgICAgIH0KKyAgICBjYXNlICd3JzoKKyAgICAgICAgc3dpdGNo
IChsZW5ndGgpIHsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9
PSAncycpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6V1M7CisgICAgICAgICAgICBy
ZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBp
ZiAoc2NoZW1lWzFdID09ICdzJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6V1NTOworICAgICAgICAgICAgcmV0dXJu
IFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgIH0KK30KKworc3RkOjpvcHRpb25hbDxTdHJp
bmc+IFVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hl
bWUpCit7CisgICAgaWYgKHNjaGVtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBpZiAoIWlzQVNDSUlBbHBoYShzY2hlbWVbMF0pKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzY2hlbWUubGVu
Z3RoKCk7ICsraSkgeworICAgICAgICBpZiAoaXNBU0NJSUFscGhhbnVtZXJpYyhzY2hlbWVbaV0p
IHx8IHNjaGVtZVtpXSA9PSAnKycgfHwgc2NoZW1lW2ldID09ICctJyB8fCBzY2hlbWVbaV0gPT0g
Jy4nKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgfQorCisgICAgcmV0dXJuIHNjaGVtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwor
fQorCitib29sIFVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1l
QXJnKQoreworICAgIHJldHVybiBzY2hlbWUoc2NoZW1lQXJnKSAhPSBTY2hlbWU6Ok5vblNwZWNp
YWw7Cit9CisKK2VudW0gY2xhc3MgVVJMUGFyc2VyOjpVUkxQYXJ0IHsKKyAgICBTY2hlbWVFbmQs
CisgICAgVXNlclN0YXJ0LAorICAgIFVzZXJFbmQsCisgICAgUGFzc3dvcmRFbmQsCisgICAgSG9z
dEVuZCwKKyAgICBQb3J0RW5kLAorICAgIFBhdGhBZnRlckxhc3RTbGFzaCwKKyAgICBQYXRoRW5k
LAorICAgIFF1ZXJ5RW5kLAorfTsKKworc2l6ZV90IFVSTFBhcnNlcjo6dXJsTGVuZ3RoVW50aWxQ
YXJ0KGNvbnN0IFVSTCYgdXJsLCBVUkxQYXJ0IHBhcnQpCit7CisgICAgc3dpdGNoIChwYXJ0KSB7
CisgICAgY2FzZSBVUkxQYXJ0OjpRdWVyeUVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3F1ZXJ5
RW5kOworICAgIGNhc2UgVVJMUGFydDo6UGF0aEVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3Bh
dGhFbmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6CisgICAgICAgIHJl
dHVybiB1cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5k
OgorICAgICAgICByZXR1cm4gdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGg7CisgICAg
Y2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgorICAgICAgICByZXR1cm4gdXJsLm1faG9zdEVuZDsKKyAg
ICBjYXNlIFVSTFBhcnQ6OlBhc3N3b3JkRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fcGFzc3dv
cmRFbmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpVc2VyRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1f
dXNlckVuZDsKKyAgICBjYXNlIFVSTFBhcnQ6OlVzZXJTdGFydDoKKyAgICAgICAgcmV0dXJuIHVy
bC5tX3VzZXJTdGFydDsKKyAgICBjYXNlIFVSTFBhcnQ6OlNjaGVtZUVuZDoKKyAgICAgICAgcmV0
dXJuIHVybC5tX3NjaGVtZUVuZDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpjb3B5QVNDSUlTdHJpbmdVbnRpbChj
b25zdCBTdHJpbmcmIHN0cmluZywgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBSRUxFQVNFX0FTU0VS
VChsZW5ndGggPD0gc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKKyAg
ICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHN0cmlu
Zy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOworICAgIGVsc2UgeworICAgICAgICBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgVUNoYXIgYyA9IGNoYXJh
Y3RlcnNbaV07CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihp
c0FTQ0lJKGMpKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYyk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVS
TFBhcnNlcjo6Y29weVVSTFBhcnRzVW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0IHBhcnQs
IGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgY29uc3Qg
VVJMVGV4dEVuY29kaW5nKiYgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpCit7CisgICAgc3ludGF4Vmlv
bGF0aW9uKGl0ZXJhdG9yKTsKKworICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICBjb3B5
QVNDSUlTdHJpbmdVbnRpbChiYXNlLm1fc3RyaW5nLCB1cmxMZW5ndGhVbnRpbFBhcnQoYmFzZSwg
cGFydCkpOworICAgIHN3aXRjaCAocGFydCkgeworICAgIGNhc2UgVVJMUGFydDo6UXVlcnlFbmQ6
CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBiYXNlLm1fcXVlcnlFbmQ7CisgICAgICAgIEZB
TExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6UGF0aEVuZDoKKyAgICAgICAgbV91cmwubV9w
YXRoRW5kID0gYmFzZS5tX3BhdGhFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2Ug
VVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoOgorICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IGJhc2UubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIEZBTExUSFJPVUdI
OworICAgIGNhc2UgVVJMUGFydDo6UG9ydEVuZDoKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gYmFzZS5tX3BvcnRMZW5ndGg7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJM
UGFydDo6SG9zdEVuZDoKKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gYmFzZS5tX2hvc3RFbmQ7
CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6Cisg
ICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBiYXNlLm1fcGFzc3dvcmRFbmQ7CisgICAgICAg
IEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6VXNlckVuZDoKKyAgICAgICAgbV91cmwu
bV91c2VyRW5kID0gYmFzZS5tX3VzZXJFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNh
c2UgVVJMUGFydDo6VXNlclN0YXJ0OgorICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGJhc2Uu
bV91c2VyU3RhcnQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6U2No
ZW1lRW5kOgorICAgICAgICBtX3VybC5tX2lzVmFsaWQgPSBiYXNlLm1faXNWYWxpZDsKKyAgICAg
ICAgbV91cmwubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID0gYmFzZS5tX3Byb3RvY29sSXNJbkhU
VFBGYW1pbHk7CisgICAgICAgIG1fdXJsLm1fc2NoZW1lRW5kID0gYmFzZS5tX3NjaGVtZUVuZDsK
KyAgICB9CisgICAgc3dpdGNoIChzY2hlbWUoU3RyaW5nVmlldyhtX2FzY2lpQnVmZmVyLmRhdGEo
KSwgbV91cmwubV9zY2hlbWVFbmQpKSkgeworICAgIGNhc2UgU2NoZW1lOjpXUzoKKyAgICBjYXNl
IFNjaGVtZTo6V1NTOgorICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7Cisg
ICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
U2NoZW1lOjpGaWxlOgorICAgICAgICBtX3VybElzRmlsZSA9IHRydWU7CisgICAgICAgIEZBTExU
SFJPVUdIOworICAgIGNhc2UgU2NoZW1lOjpGVFA6CisgICAgY2FzZSBTY2hlbWU6OkdvcGhlcjoK
KyAgICBjYXNlIFNjaGVtZTo6SFRUUDoKKyAgICBjYXNlIFNjaGVtZTo6SFRUUFM6CisgICAgICAg
IG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1l
OjpOb25TcGVjaWFsOgorICAgICAgICBtX3VybElzU3BlY2lhbCA9IGZhbHNlOworICAgICAgICBu
b25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyIGRvdEFTQ0lJ
Q29kZVsyXSA9IHsnMicsICdlJ307CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
CitBTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFyc2VyOjppc1NpbmdsZURvdFBhdGhTZWdtZW50KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCit7CisgICAgaWYgKGMuYXRFbmQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2
YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICAg
ICAgcmV0dXJuIGMuYXRFbmQoKSB8fCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpOworICAgIH0K
KyAgICBpZiAoKmMgIT0gJyUnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxD
aGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICBpZiAoYy5h
dEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29kZVswXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7
CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh0b0FT
Q0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkgeworICAgICAgICBhZHZhbmNlPENoYXJh
Y3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4g
Yy5hdEVuZCgpIHx8IGlzU2xhc2hRdWVzdGlvbk9ySGFzaCgqYyk7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19J
TkxJTkUgYm9vbCBVUkxQYXJzZXI6OmlzRG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sKKyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCpjID09ICcuJykgeworICAgICAgICBhZHZhbmNlPENoYXJh
Y3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4g
aXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKKyAgICB9CisgICAgaWYgKCpjICE9ICclJykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3lu
dGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgaWYgKGMuYXRFbmQoKSB8fCAqYyAhPSBkb3RBU0NJ
SUNvZGVbMF0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5
cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJ
SUNvZGVbMV0pIHsKKyAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhW
aW9sYXRpb246Ok5vPihjKTsKKyAgICAgICAgcmV0dXJuIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQo
Yyk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlzU2lu
Z2xlRG90UGF0aFNlZ21lbnQoYykpOworICAgIGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2
YW5jZShjKTsKKyAgICAgICAgaWYgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGlmICgqYyA9
PSAnLycgfHwgKmMgPT0gJ1xcJykKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVCgqYyA9PSAnPycgfHwgKmMgPT0gJyMn
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOwor
ICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBd
KTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykg
PT0gZG90QVNDSUlDb2RlWzFdKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYgKCFj
LmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykKKyAg
ICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIEFTU0VSVCgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0KK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpjb25z
dW1lRG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
IGMpCit7CisgICAgQVNTRVJUKGlzRG91YmxlRG90UGF0aFNlZ21lbnQoYykpOworICAgIGlmICgq
YyA9PSAnLicpCisgICAgICAgIGFkdmFuY2UoYyk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VS
VCgqYyA9PSAnJScpOworICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICBBU1NFUlQoKmMgPT0g
ZG90QVNDSUlDb2RlWzBdKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgQVNTRVJUKHRv
QVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKTsKKyAgICAgICAgYWR2YW5jZShjKTsK
KyAgICB9CisgICAgY29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KGMpOworfQorCitib29sIFVS
TFBhcnNlcjo6c2hvdWxkUG9wUGF0aCh1bnNpZ25lZCBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gpCit7
CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICBpZiAoIW1fdXJsSXNG
aWxlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEFTU0VSVChtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA8PSBtX2FzY2lpQnVmZmVyLnNpemUoKSk7CisgICAgQ29kZVBvaW50SXRlcmF0
b3I8TENoYXI+IGNvbXBvbmVudFRvUG9wKCZtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RT
bGFzaF0sICZtX2FzY2lpQnVmZmVyWzBdICsgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwor
ICAgIGlmIChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gbV91cmwubV9ob3N0RW5kICsgbV91cmwu
bV9wb3J0TGVuZ3RoICsgMSAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihjb21wb25lbnRUb1BvcCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBVUkxQ
YXJzZXI6OnBvcFBhdGgoKQoreworICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7
CisgICAgaWYgKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsg
bV91cmwubV9wb3J0TGVuZ3RoICsgMSkgeworICAgICAgICBhdXRvIG5ld1BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIC0gMTsKKyAgICAgICAgaWYgKG1fYXNj
aWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSA9PSAnLycpCisgICAgICAgICAgICBuZXdQ
YXRoQWZ0ZXJMYXN0U2xhc2gtLTsKKyAgICAgICAgd2hpbGUgKG5ld1BhdGhBZnRlckxhc3RTbGFz
aCA+IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCAmJiBtX2FzY2lpQnVmZmVy
W25ld1BhdGhBZnRlckxhc3RTbGFzaF0gIT0gJy8nKQorICAgICAgICAgICAgbmV3UGF0aEFmdGVy
TGFzdFNsYXNoLS07CisgICAgICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaCsrOworICAgICAgICBp
ZiAoc2hvdWxkUG9wUGF0aChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gpKQorICAgICAgICAgICAgbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgfQor
ICAgIG1fYXNjaWlCdWZmZXIucmVzaXplKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpzeW50
YXhWaW9sYXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJh
dG9yKQoreworICAgIGlmIChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikKKyAgICAgICAgcmV0dXJu
OworICAgIG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKKyAgICAKKyAgICBBU1NFUlQo
bV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOworICAgIHNpemVfdCBjb2RlVW5pdHNUb0NvcHkgPSBp
dGVyYXRvci5jb2RlVW5pdHNTaW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IENoYXJhY3RlclR5
cGUqPihtX2lucHV0QmVnaW4pKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2RlVW5pdHNUb0NvcHkg
PD0gbV9pbnB1dFN0cmluZy5sZW5ndGgoKSk7CisgICAgbV9hc2NpaUJ1ZmZlci5yZXNlcnZlQ2Fw
YWNpdHkobV9pbnB1dFN0cmluZy5sZW5ndGgoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjb2RlVW5pdHNUb0NvcHk7ICsraSkgeworICAgICAgICBBU1NFUlQoaXNBU0NJSShtX2lucHV0
U3RyaW5nW2ldKSk7CisgICAgICAgIG1fYXNjaWlCdWZmZXIudW5jaGVja2VkQXBwZW5kKG1faW5w
dXRTdHJpbmdbaV0pOworICAgIH0KK30KKwordm9pZCBVUkxQYXJzZXI6OmZhaWx1cmUoKQorewor
ICAgIG1fdXJsLmludmFsaWRhdGUoKTsKKyAgICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJp
bmc7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNl
cjo6Y2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mIGl0ZXJhdG9yLCBVQ2hhcjMyIGNvZGVQb2ludCkKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRF
bmQoKSB8fCB0b0FTQ0lJTG93ZXIoKml0ZXJhdG9yKSAhPSBjb2RlUG9pbnQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wgVVJMUGFyc2VyOjppc0F0TG9jYWxob3N0KENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIGlmICghY2hlY2tM
b2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdsJykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbycpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRv
ciwgJ2MnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RD
b2RlUG9pbnQoaXRlcmF0b3IsICdhJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbCcpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2gnKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQo
aXRlcmF0b3IsICdvJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9j
YWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAncycpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ3QnKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpdGVyYXRvci5hdEVuZCgpOworfQorCitib29sIFVS
TFBhcnNlcjo6aXNMb2NhbGhvc3QoU3RyaW5nVmlldyB2aWV3KQoreworICAgIGlmICh2aWV3Lmlz
OEJpdCgpKQorICAgICAgICByZXR1cm4gaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxM
Q2hhcj4odmlldy5jaGFyYWN0ZXJzOCgpLCB2aWV3LmNoYXJhY3RlcnM4KCkgKyB2aWV3Lmxlbmd0
aCgpKSk7CisgICAgcmV0dXJuIGlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+
KHZpZXcuY2hhcmFjdGVyczE2KCksIHZpZXcuY2hhcmFjdGVyczE2KCkgKyB2aWV3Lmxlbmd0aCgp
KSk7Cit9CisKK0FMV0FZU19JTkxJTkUgU3RyaW5nVmlldyBVUkxQYXJzZXI6OnBhcnNlZERhdGFW
aWV3KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9k
aWRTZWVTeW50YXhWaW9sYXRpb24pKSB7CisgICAgICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8
PSBtX2FzY2lpQnVmZmVyLnNpemUoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KG1fYXNj
aWlCdWZmZXIuZGF0YSgpICsgc3RhcnQsIGxlbmd0aCk7CisgICAgfQorICAgIEFTU0VSVChzdGFy
dCArIGxlbmd0aCA8PSBtX2lucHV0U3RyaW5nLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5n
VmlldyhtX2lucHV0U3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQsIGxlbmd0aCk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgVUNoYXIgVVJMUGFyc2VyOjpwYXJzZWREYXRhVmlldyhzaXplX3QgcG9zaXRpb24p
Cit7CisgICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAgICAg
cmV0dXJuIG1fYXNjaWlCdWZmZXJbcG9zaXRpb25dOworICAgIHJldHVybiBtX2lucHV0U3RyaW5n
W3Bvc2l0aW9uXTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZ
U19JTkxJTkUgc2l6ZV90IFVSTFBhcnNlcjo6Y3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFko
bV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQorICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlci5z
aXplKCk7CisgICAgCisgICAgcmV0dXJuIGl0ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlwZSo+KG1faW5wdXRCZWdpbikpOworfQorCitVUkxQ
YXJzZXI6OlVSTFBhcnNlcihjb25zdCBTdHJpbmcmIGlucHV0LCBjb25zdCBVUkwmIGJhc2UsIGNv
bnN0IFVSTFRleHRFbmNvZGluZyogbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpCisgICAgOiBtX2lucHV0
U3RyaW5nKGlucHV0KQoreworICAgIGlmIChpbnB1dC5pc051bGwoKSkgeworICAgICAgICBpZiAo
YmFzZS5pc1ZhbGlkKCkgJiYgIWJhc2UubV9jYW5ub3RCZUFCYXNlVVJMKSB7CisgICAgICAgICAg
ICBtX3VybCA9IGJhc2U7CisgICAgICAgICAgICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZp
ZXIoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGlucHV0
LmlzOEJpdCgpKSB7CisgICAgICAgIG1faW5wdXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnM4KCk7
CisgICAgICAgIHBhcnNlKGlucHV0LmNoYXJhY3RlcnM4KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNl
LCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9pbnB1dEJl
Z2luID0gaW5wdXQuY2hhcmFjdGVyczE2KCk7CisgICAgICAgIHBhcnNlKGlucHV0LmNoYXJhY3Rl
cnMxNigpLCBpbnB1dC5sZW5ndGgoKSwgYmFzZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAg
IH0KKworICAgIEFTU0VSVCghbV91cmwubV9pc1ZhbGlkCisgICAgICAgIHx8IG1fZGlkU2VlU3lu
dGF4VmlvbGF0aW9uID09IChtX3VybC5zdHJpbmcoKSAhPSBpbnB1dCkKKyAgICAgICAgfHwgKGlu
cHV0LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNDMENvbnRyb2xPclNwYWNlPigpCisgICAgICAg
ICAgICAmJiBtX3VybC5tX3N0cmluZyA9PSBiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5
RW5kKSkpOworICAgIEFTU0VSVChpbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQobV91cmwpKTsKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgaWYgKCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikgewor
ICAgICAgICAvLyBGb3JjZSBhIHN5bnRheCB2aW9sYXRpb24gYXQgdGhlIGJlZ2lubmluZyB0byBt
YWtlIHN1cmUgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdC4KKyAgICAgICAgVVJMUGFyc2VyIHBhcnNl
cihtYWtlU3RyaW5nKCIgIiwgaW5wdXQpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Cisg
ICAgICAgIFVSTCBwYXJzZWQgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgIGlmIChwYXJzZWQu
aXNWYWxpZCgpKQorICAgICAgICAgICAgQVNTRVJUKGFsbFZhbHVlc0VxdWFsKHBhcnNlci5yZXN1
bHQoKSwgbV91cmwpKTsKKyAgICB9CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBp
bnB1dCwgY29uc3QgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRl
eHRFbmNvZGluZyogbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpCit7CisgICAgVVJMX1BBUlNFUl9MT0co
IlBhcnNpbmcgVVJMIDwlcz4gYmFzZSA8JXM+IiwgU3RyaW5nKGlucHV0LCBsZW5ndGgpLnV0Zjgo
KS5kYXRhKCksIGJhc2Uuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV91cmwgPSB7IH07
CisgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKKworICAgIFZlY3RvcjxVQ2hh
cj4gcXVlcnlCdWZmZXI7CisKKyAgICB1bnNpZ25lZCBlbmRJbmRleCA9IGxlbmd0aDsKKyAgICB3
aGlsZSAoVU5MSUtFTFkoZW5kSW5kZXggJiYgaXNDMENvbnRyb2xPclNwYWNlKGlucHV0W2VuZElu
ZGV4IC0gMV0pKSkgeworICAgICAgICBzeW50YXhWaW9sYXRpb24oQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4oaW5wdXQsIGlucHV0KSk7CisgICAgICAgIGVuZEluZGV4LS07CisgICAg
fQorICAgIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMoaW5wdXQsIGlucHV0ICsg
ZW5kSW5kZXgpOworICAgIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGF1dGhvcml0
eU9ySG9zdEJlZ2luOworICAgIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IHF1ZXJ5
QmVnaW47CisgICAgd2hpbGUgKFVOTElLRUxZKCFjLmF0RW5kKCkgJiYgaXNDMENvbnRyb2xPclNw
YWNlKCpjKSkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICArK2M7Cisg
ICAgfQorICAgIGF1dG8gYmVnaW5BZnRlckNvbnRyb2xBbmRTcGFjZSA9IGM7CisKKyAgICBlbnVt
IGNsYXNzIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIFNjaGVtZVN0YXJ0LAorICAgICAgICBT
Y2hlbWUsCisgICAgICAgIE5vU2NoZW1lLAorICAgICAgICBTcGVjaWFsUmVsYXRpdmVPckF1dGhv
cml0eSwKKyAgICAgICAgUGF0aE9yQXV0aG9yaXR5LAorICAgICAgICBSZWxhdGl2ZSwKKyAgICAg
ICAgUmVsYXRpdmVTbGFzaCwKKyAgICAgICAgU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMsCisgICAg
ICAgIFNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzLAorICAgICAgICBBdXRob3JpdHlPckhv
c3QsCisgICAgICAgIEhvc3QsCisgICAgICAgIEZpbGUsCisgICAgICAgIEZpbGVTbGFzaCwKKyAg
ICAgICAgRmlsZUhvc3QsCisgICAgICAgIFBhdGhTdGFydCwKKyAgICAgICAgUGF0aCwKKyAgICAg
ICAgQ2Fubm90QmVBQmFzZVVSTFBhdGgsCisgICAgICAgIFVURjhRdWVyeSwKKyAgICAgICAgTm9u
VVRGOFF1ZXJ5LAorICAgICAgICBGcmFnbWVudCwKKyAgICB9OworCisjZGVmaW5lIExPR19TVEFU
RSh4KSBVUkxfUEFSU0VSX0xPRygiU3RhdGUgJXMsIGNvZGUgcG9pbnQgJWMsIHBhcnNlZCBkYXRh
IDwlcz4gc2l6ZSAlenUiLCB4LCAqYywgcGFyc2VkRGF0YVZpZXcoMCwgY3VycmVudFBvc2l0aW9u
KGMpKS51dGY4KCkuZGF0YSgpLCBjdXJyZW50UG9zaXRpb24oYykpCisjZGVmaW5lIExPR19GSU5B
TF9TVEFURSh4KSBVUkxfUEFSU0VSX0xPRygiRmluYWwgU3RhdGU6ICVzIiwgeCkKKworICAgIFN0
YXRlIHN0YXRlID0gU3RhdGU6OlNjaGVtZVN0YXJ0OworICAgIHdoaWxlICghYy5hdEVuZCgpKSB7
CisgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqYykpKSB7CisgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICArK2M7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2Fz
ZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlNjaGVtZVN0YXJ0
Iik7CisgICAgICAgICAgICBpZiAoaXNBU0NJSUFscGhhKCpjKSkgeworICAgICAgICAgICAgICAg
IGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoKmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9B
U0NJSUxvd2VyKCpjKSk7CisgICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAg
ICAgICBpZiAoYy5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIu
Y2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7Cisg
ICAgICAgICAgICAgICAgICAgIGMgPSBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6U2NoZW1lOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBTdGF0ZTo6U2NoZW1lOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJTY2hlbWUiKTsKKyAg
ICAgICAgICAgIGlmIChpc1ZhbGlkU2NoZW1lQ2hhcmFjdGVyKCpjKSkgeworICAgICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoKmMpKSkKKyAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
dG9BU0NJSUxvd2VyKCpjKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICc6Jykgewor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNjaGVtZUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsK
KyAgICAgICAgICAgICAgICBpZiAoc2NoZW1lRW5kID4gVVJMOjptYXhTY2hlbWVMZW5ndGgpIHsK
KyAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fdXJsLm1fc2NoZW1lRW5k
ID0gc2NoZW1lRW5kOworICAgICAgICAgICAgICAgIFN0cmluZ1ZpZXcgdXJsU2NoZW1lID0gcGFy
c2VkRGF0YVZpZXcoMCwgbV91cmwubV9zY2hlbWVFbmQpOworICAgICAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHNjaGVtZSh1cmxT
Y2hlbWUpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkZpbGU6CisgICAgICAgICAg
ICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV91
cmxJc0ZpbGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxl
OworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpXUzoKKyAgICAgICAgICAgICAgICBjYXNlIFNj
aGVtZTo6V1NTOgorICAgICAgICAgICAgICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51
bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGJhc2UucHJvdG9jb2xJcyh1cmxTY2hlbWUpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOworICAgICAgICAgICAgICAgICAgICAr
K2M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU2No
ZW1lOjpIVFRQOgorICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpIVFRQUzoKKyAgICAgICAg
ICAgICAgICAgICAgbV91cmwubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6
OkZUUDoKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6R29waGVyOgorICAgICAgICAgICAg
ICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChi
YXNlLnByb3RvY29sSXModXJsU2NoZW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OworICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0
aG9yaXR5U2xhc2hlczsKKyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6Tm9uU3BlY2lhbDoKKyAg
ICAgICAgICAgICAgICAgICAgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIG1heWJlU2xhc2ggPSBjOworICAgICAgICAgICAgICAgICAgICBh
ZHZhbmNlKG1heWJlU2xhc2gpOworICAgICAgICAgICAgICAgICAgICBpZiAoIW1heWJlU2xhc2gu
YXRFbmQoKSAmJiAqbWF5YmVTbGFzaCA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBt
YXliZVNsYXNoOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aE9y
QXV0aG9yaXR5OworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICcvJyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1f
dXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9jYW5ub3RC
ZUFCYXNlVVJMID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OkNhbm5vdEJlQUJhc2VVUkxQYXRoOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5j
bGVhcigpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAgICAg
ICAgICAgICAgIGMgPSBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAg
ICAgIGlmIChjLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFy
KCk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAg
ICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6Tm9TY2hlbWU6CisgICAgICAgICAg
ICBMT0dfU1RBVEUoIk5vU2NoZW1lIik7CisgICAgICAgICAgICBpZiAoIWJhc2UuaXNWYWxpZCgp
IHx8IChiYXNlLm1fY2Fubm90QmVBQmFzZVVSTCAmJiAqYyAhPSAnIycpKSB7CisgICAgICAgICAg
ICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChiYXNlLm1fY2Fubm90QmVBQmFzZVVSTCAmJiAqYyA9PSAnIycpIHsK
KyAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVu
ZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OkZyYWdtZW50OworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsK
KyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoIWJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQ
YXJ0OjpTY2hlbWVFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZl
T3JBdXRob3JpdHk6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0
aG9yaXR5Iik7CisgICAgICAgICAgICBpZiAoKmMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7Cisg
ICAgICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBmYWls
dXJlKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKCpjID09ICcvJykgeworICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OlJlbGF0aXZlU2xhc2g7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0YXRlOjpQYXRoT3JBdXRob3JpdHk6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhPckF1
dGhvcml0eSIpOworICAgICAgICAgICAgaWYgKCpjID09ICcvJykgeworICAgICAgICAgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpBdXRob3JpdHlPckhvc3Q7CisgICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAg
ICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAg
ICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykg
LSAxKSA9PSAnLycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVu
dFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0
YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgor
ICAgICAgICAgICAgTE9HX1NUQVRFKCJSZWxhdGl2ZSIpOworICAgICAgICAgICAgc3dpdGNoICgq
YykgeworICAgICAgICAgICAgY2FzZSAnLyc6CisgICAgICAgICAgICBjYXNlICdcXCc6CisgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDsKKyAgICAgICAgICAgICAg
ICArK2M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICc/JzoKKyAg
ICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBj
LCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignPycpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBpZiAobm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7
CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRG
OFF1ZXJ5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnIyc6Cisg
ICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQs
IGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCcjJyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Cisg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0
OjpQYXRoQWZ0ZXJMYXN0U2xhc2gsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAg
ICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQ
b3NpdGlvbihjKSAtIDEpICE9ICcvJykgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0
aXZlU2xhc2g6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKKyAgICAg
ICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAgICsr
YzsKKyAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hl
bWVFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCI6Ly8iLCAzKTsKKyAgICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNp
YWwpCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJ
Z25vcmVTbGFzaGVzOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OworICAgICAgICAgICAgICAgICAg
ICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQ
YXJ0OjpQb3J0RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDE7Cisg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hl
czoKKyAgICAgICAgICAgIExPR19TVEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKKyAg
ICAgICAgICAgIGlmIChMSUtFTFkoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICdcXCcpKQorICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOworICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKExJ
S0VMWSghYy5hdEVuZCgpICYmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnXFwnKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgKytjOworICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8iLCAyKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJ
Z25vcmVTbGFzaGVzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlNw
ZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVj
aWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcyIpOworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8
fCAqYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAg
ICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
bV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OworICAgICAgICAgICAgICAgIGF1dGhvcml0
eU9ySG9zdEJlZ2luID0gYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6CisgICAgICAgICAgICBkbyB7CisgICAg
ICAgICAgICAgICAgTE9HX1NUQVRFKCJBdXRob3JpdHlPckhvc3QiKTsKKyAgICAgICAgICAgICAg
ICBpZiAoKmMgPT0gJ0AnKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbGFzdEF0ID0gYzsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBmaW5kTGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKCFmaW5kTGFzdEF0LmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFVSTF9QQVJTRVJfTE9HKCJGaW5kaW5nIGxhc3QgQDogJWMiLCAqZmluZExhc3RBdCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmZpbmRMYXN0QXQgPT0gJ0AnKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhc3RBdCA9IGZpbmRMYXN0QXQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzU2xhc2ggPSAqZmluZExhc3RBdCA9PSAnLycgfHwgKG1fdXJsSXNTcGVj
aWFsICYmICpmaW5kTGFzdEF0ID09ICdcXCcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGlzU2xhc2ggfHwgKmZpbmRMYXN0QXQgPT0gJz8nIHx8ICpmaW5kTGFzdEF0ID09ICcjJykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICsrZmluZExhc3RBdDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBwYXJzZUF1dGhvcml0eShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3Jp
dHlPckhvc3RCZWdpbiwgbGFzdEF0KSk7CisgICAgICAgICAgICAgICAgICAgIGMgPSBsYXN0QXQ7
CisgICAgICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgICAgIGF1
dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6SG9zdDsKKyAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJvb2wgaXNTbGFzaCA9ICpjID09ICcvJyB8fCAobV91cmxJc1NwZWNp
YWwgJiYgKmMgPT0gJ1xcJyk7CisgICAgICAgICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmMgPT0g
Jz8nIHx8ICpjID09ICcjJykgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0g
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMp
OworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWlsdXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gY3VycmVudFBvc2l0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoaXRlcmF0b3IpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghaXNTbGFzaCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBh
dGg7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCisgICAgICAgICAgICAgICAg
ICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAr
K2M7CisgICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFN0YXRlOjpIb3N0OgorICAgICAgICAgICAgZG8geworICAgICAgICAg
ICAgICAgIExPR19TVEFURSgiSG9zdCIpOworICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycg
fHwgKmMgPT0gJz8nIHx8ICpjID09ICcjJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXBh
cnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5
T3JIb3N0QmVnaW4sIGMpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgaWYgKGlzUGVyY2VudE9yTm9uQVNDSUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBt
X2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IHRydWU7CisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTdGF0ZTo6RmlsZToKKyAgICAgICAgICAgIExPR19TVEFURSgiRmlsZSIpOwor
ICAgICAgICAgICAgc3dpdGNoICgqYykgeworICAgICAgICAgICAgY2FzZSAnXFwnOgorICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBGQUxMVEhST1VH
SDsKKyAgICAgICAgICAgIGNhc2UgJy8nOgorICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlU2xhc2g7Cisg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAnPyc6CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAg
ICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgewor
ICAgICAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRo
RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoJz8nKTsKKyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Ii8vLz8iLCA0KTsKKyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDI7CisgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsK
KyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChub25VVEY4
UXVlcnlFbmNvZGluZykgeworICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVl
cnk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAg
ICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2Uu
aXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4
UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
JyMnKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCIvLy8jIiwgNCk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
dXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMjsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsK
KyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2Nv
bElzKCJmaWxlIikgJiYgc2hvdWxkQ29weUZpbGVVUkwoYykpCisgICAgICAgICAgICAgICAgICAg
IGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywg
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8iLCAzKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owor
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
KyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCAr
IDE7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFN0YXRlOjpGaWxlU2xhc2g6CisgICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGVT
bGFzaCIpOworICAgICAgICAgICAgaWYgKExJS0VMWSgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykp
IHsKKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykpCisgICAgICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAg
ICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAg
ICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RC
ZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZUhvc3Q7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAg
ICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAg
ICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAg
ICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1f
cG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykp
IHsKKyAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCAr
IDE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGJh
c2UpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQg
KyA0OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZp
bGVIb3N0OgorICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiRmls
ZUhvc3QiKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKSkg
eworICAgICAgICAgICAgICAgICAgICBib29sIHdpbmRvd3NRdWlyayA9IHRha2VzVHdvQWR2YW5j
ZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhv
c3RCZWdpbiwgYykpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBpc1dpbmRvd3NEcml2ZUxl
dHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5k
b3dzUXVpcmspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihhdXRo
b3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVM
ZXR0ZXIoYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3dzUXVpcmsgfHwgYXV0aG9yaXR5T3JIb3N0QmVnaW4g
PT0gYykgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHdpbmRvd3NRdWlyayB8fCBw
YXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICc/JykpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLz8iLCAyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVy
eUVuY29kaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4g
PSBjOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25V
VEY4UXVlcnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQ
b3NpdGlvbihjKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJyMnKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCIvIyIsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZy
YWdtZW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0
aDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGlzTG9jYWxob3N0KHBhcnNlZERhdGFWaWV3KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJl
bnRQb3NpdGlvbihjKSAtIG1fdXJsLm1fcGFzc3dvcmRFbmQpKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
YXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6UGF0aFN0YXJ0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzUGVyY2VudE9yTm9uQVNDSUkoKmMpKQorICAg
ICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgKytjOworICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgorICAgICAgICAg
ICAgTE9HX1NUQVRFKCJQYXRoU3RhcnQiKTsKKyAgICAgICAgICAgIGlmICgqYyAhPSAnLycgJiYg
KmMgIT0gJ1xcJykgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAg
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsK
KyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTdGF0ZTo6UGF0aDoKKyAgICAgICAgICAgIExPR19TVEFURSgiUGF0aCIpOwor
ICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xc
JykpIHsKKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobV91cmxJc1NwZWNpYWwgJiYgKmMg
PT0gJ1xcJykpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAg
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgKytj
OworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBv
c2l0aW9uKGMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKGN1cnJlbnRQb3NpdGlvbihjKSAmJiBwYXJzZWREYXRhVmlldyhj
dXJyZW50UG9zaXRpb24oYykgLSAxKSA9PSAnLycpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKGlzRG91YmxlRG90UGF0aFNlZ21lbnQoYykpKSB7CisgICAgICAgICAgICAgICAgICAg
IHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3VtZURvdWJsZURv
dFBhdGhTZWdtZW50KGMpOworICAgICAgICAgICAgICAgICAgICBwb3BQYXRoKCk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICBjb25zdW1lU2lu
Z2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqYyA9PSAnPycpIHsK
KyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOworICAgICAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCpjID09ICcjJykgeworICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAg
ICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJbkRlZmF1bHRFbmNv
ZGVTZXQ+KGMpOworICAgICAgICAgICAgKytjOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRoOgorICAgICAgICAgICAgTE9HX1NUQVRF
KCJDYW5ub3RCZUFCYXNlVVJMUGF0aCIpOworICAgICAgICAgICAgaWYgKCpjID09ICc/Jykgewor
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7CisgICAgICAgICAgICAgICAg
KytjOworICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAg
ICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKCpjID09ICcjJykgeworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwu
bV9wYXRoRW5kOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAg
ICAgICAgICAgfSBlbHNlIGlmICgqYyA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luU2lt
cGxlRW5jb2RlU2V0PihjKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgorICAgICAg
ICAgICAgTE9HX1NUQVRFKCJVVEY4UXVlcnkiKTsKKyAgICAgICAgICAgIEFTU0VSVChxdWVyeUJl
Z2luID09IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOworICAgICAgICAgICAg
aWYgKCpjID09ICcjJykgeworICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJy
ZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NF
UlQoIW5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgIHV0ZjhRdWVyeUVuY29kZShj
KTsKKyAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0
YXRlOjpOb25VVEY4UXVlcnk6CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9H
X1NUQVRFKCJOb25VVEY4UXVlcnkiKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocXVlcnlCZWdp
biAhPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgIGVuY29kZU5vblVURjhRdWVy
eShxdWVyeUJ1ZmZlciwgKm5vblVURjhRdWVyeUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBjKSk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXBwZW5kQ29kZVBvaW50KHF1ZXJ5QnVmZmVy
LCAqYyk7CisgICAgICAgICAgICAgICAgYWR2YW5jZShjLCBxdWVyeUJlZ2luKTsKKyAgICAgICAg
ICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU3RhdGU6OkZyYWdtZW50OgorICAgICAgICAgICAgVVJMX1BBUlNFUl9MT0coIlN0YXRlIEZy
YWdtZW50Iik7CisgICAgICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2Rl
U2V0PihjKTsKKyAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgU3RhdGU6OlNjaGVtZVN0
YXJ0OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgIGlm
ICghY3VycmVudFBvc2l0aW9uKGMpICYmIGJhc2UuaXNWYWxpZCgpICYmICFiYXNlLm1fY2Fubm90
QmVBQmFzZVVSTCkgeworICAgICAgICAgICAgbV91cmwgPSBiYXNlOworICAgICAgICAgICAgbV91
cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgZmFpbHVyZSgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0
ZTo6U2NoZW1lOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlNjaGVtZSIpOworICAgICAgICBm
YWlsdXJlKCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0YXRlOjpOb1NjaGVtZToKKyAg
ICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJOb1NjaGVtZSIpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9y
aXR5OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5
Iik7CisgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBj
LCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6
OlBhdGhPckF1dGhvcml0eToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoT3JBdXRob3Jp
dHkiKTsKKyAgICAgICAgQVNTRVJUKG1fdXJsLm1fdXNlclN0YXJ0KTsKKyAgICAgICAgQVNTRVJU
KG1fdXJsLm1fdXNlclN0YXJ0ID09IGN1cnJlbnRQb3NpdGlvbihjKSk7CisgICAgICAgIEFTU0VS
VChwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAg
ICBtX3VybC5tX3VzZXJTdGFydC0tOworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Rh
dGU6OlJlbGF0aXZlOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlJlbGF0aXZlIik7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBTdGF0ZTo6UmVsYXRp
dmVTbGFzaDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJSZWxhdGl2ZVNsYXNoIik7CisgICAg
ICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhR
dWVyeUVuY29kaW5nKTsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1f
cG9ydExlbmd0aCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRo
b3JpdHlTbGFzaGVzOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlT
bGFzaGVzIik7CisgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMp
OworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJT
dGFydDsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6CisgICAgICAg
IExPR19GSU5BTF9TVEFURSgiU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMiKTsKKyAgICAg
ICAgZmFpbHVyZSgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXR5
T3JIb3N0OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkF1dGhvcml0eU9ySG9zdCIpOworICAg
ICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVn
aW4pOworICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAg
ICAgICBpZiAoYXV0aG9yaXR5T3JIb3N0QmVnaW4uYXRFbmQoKSkgeworICAgICAgICAgICAgbV91
cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bh
c3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9
IDA7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAg
ICAgICAgfSBlbHNlIGlmICghcGFyc2VIb3N0QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikp
IHsKKyAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkgeworICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0
RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9y
dExlbmd0aDsKKyAgICAgICAgfQorICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0
aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6SG9zdDoKKyAgICAgICAgTE9H
X0ZJTkFMX1NUQVRFKCJIb3N0Iik7CisgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChhdXRo
b3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpIHsKKyAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCAr
IG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV91
cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOworICAg
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBTdGF0ZTo6RmlsZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlIik7Cisg
ICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgewor
ICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMs
IG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigi
Ly8vIiwgMyk7CisgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMp
IC0gMTsKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAg
ICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91
cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExl
bmd0aCA9IDA7CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91
c2VyU3RhcnQgKyAxOworICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaDsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpGaWxlU2xhc2g6Cisg
ICAgICAgIExPR19GSU5BTF9TVEFURSgiRmlsZVNsYXNoIik7CisgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykg
KyAxOworICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAgICAgICBtX3Vy
bC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29y
ZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAg
aWYgKGNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGJhc2UpKSB7CisgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgNDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAg
ICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6CisgICAgICAgIExPR19GSU5BTF9T
VEFURSgiRmlsZUhvc3QiKTsKKyAgICAgICAgaWYgKHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykp
CisgICAgICAgICAgICAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdp
bikpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7
CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICBhcHBl
bmRXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAg
ICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAg
ICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXV0aG9y
aXR5T3JIb3N0QmVnaW4gPT0gYykgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwor
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgbV91cmwu
bV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgbV91cmwu
bV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
CisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0
YXJ0ICsgMTsKKyAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOworICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIXBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0
aG9yaXR5T3JIb3N0QmVnaW4sIGMpKSkgeworICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwor
ICAgICAgICBpZiAoaXNMb2NhbGhvc3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVu
ZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSB7CisgICAgICAg
ICAgICBtX2FzY2lpQnVmZmVyLnNocmluayhtX3VybC5tX3Bhc3N3b3JkRW5kKTsKKyAgICAgICAg
ICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignLycpOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1f
aG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVu
ZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5k
ID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U3RhdGU6OlBhdGhTdGFydDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoU3RhcnQiKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0YXRlOjpQ
YXRoOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlBhdGgiKTsKKyAgICAgICAgbV91cmwubV9w
YXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0g
bV91cmwubV9wYXRoRW5kOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpDYW5ub3RC
ZUFCYXNlVVJMUGF0aDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJM
UGF0aCIpOworICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Cisg
ICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3RhdGU6OlVURjhRdWVyeToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJV
VEY4UXVlcnkiKTsKKyAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50
UG9zaXRpb24oYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVy
eToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJOb25VVEY4UXVlcnkiKTsKKyAgICAgICAgQVNT
RVJUKHF1ZXJ5QmVnaW4gIT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7Cisg
ICAgICAgIGVuY29kZU5vblVURjhRdWVyeShxdWVyeUJ1ZmZlciwgKm5vblVURjhRdWVyeUVuY29k
aW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBjKSk7Cisg
ICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgU3RhdGU6OkZyYWdtZW50OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUo
IkZyYWdtZW50Iik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChMSUtFTFkoIW1f
ZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkgeworICAgICAgICBtX3VybC5tX3N0cmluZyA9IG1faW5w
dXRTdHJpbmc7CisgICAgICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7CisgICAg
fSBlbHNlCisgICAgICAgIG1fdXJsLm1fc3RyaW5nID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKG1f
YXNjaWlCdWZmZXIpKTsKKyAgICBtX3VybC5tX2lzVmFsaWQgPSB0cnVlOworICAgIFVSTF9QQVJT
RVJfTE9HKCJQYXJzZWQgVVJMIDwlcz4iLCBtX3VybC5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpw
YXJzZUF1dGhvcml0eShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikK
K3sKKyAgICBpZiAoVU5MSUtFTFkoaXRlcmF0b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBv
c2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1f
dXNlckVuZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0
RW5kKCk7IGFkdmFuY2UoaXRlcmF0b3IpKSB7CisgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzon
KSB7CisgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0
b3IpOworICAgICAgICAgICAgYXV0byBpdGVyYXRvckF0Q29sb24gPSBpdGVyYXRvcjsKKyAgICAg
ICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICBib29sIHRhYk9yTmV3bGluZUFmdGVyQ29s
b24gPSBmYWxzZTsKKyAgICAgICAgICAgIHdoaWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQo
KSAmJiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICAgICAgICAgIHRhYk9y
TmV3bGluZUFmdGVyQ29sb24gPSB0cnVlOworICAgICAgICAgICAgICAgICsraXRlcmF0b3I7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXRlcmF0b3IuYXRFbmQoKSkp
IHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JBdENvbG9uKTsKKyAg
ICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAg
ICAgICAgICAgICAgIGlmIChtX3VybC5tX3VzZXJFbmQgPiBtX3VybC5tX3VzZXJTdGFydCkKKyAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignQCcpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0YWJPck5ld2xpbmVB
ZnRlckNvbG9uKQorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckF0Q29s
b24pOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNl
ckluZm9FbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKKyAgICB9CisgICAgZm9yICg7ICFpdGVyYXRvci5h
dEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkKKyAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V1RG
Ojppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKKyAgICBtX3VybC5tX3Bhc3N3b3Jk
RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICBpZiAoIW1fdXJsLm1fdXNlckVu
ZCkKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV9wYXNzd29yZEVuZDsKKyAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCdAJyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVk
SW50ZWdlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihV
bnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikKK3sKKyAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2ln
bmVkSW50ZWdlclR5cGUpICogMyArIDFdOworICAgIExDaGFyKiBlbmQgPSBzdGQ6OmVuZChidWYp
OworICAgIExDaGFyKiBwID0gZW5kOworICAgIGRvIHsKKyAgICAgICAgKi0tcCA9IChudW1iZXIg
JSAxMCkgKyAnMCc7CisgICAgICAgIG51bWJlciAvPSAxMDsKKyAgICB9IHdoaWxlIChudW1iZXIp
OworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIocCwgZW5kIC0gcCk7Cit9CisKK3ZvaWQgVVJMUGFy
c2VyOjpzZXJpYWxpemVJUHY0KElQdjRBZGRyZXNzIGFkZHJlc3MpCit7CisgICAgYXBwZW5kTnVt
YmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzID4+IDI0KTsKKyAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90Pihh
ZGRyZXNzID4+IDE2KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5k
TnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzID4+IDgpOworICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoJy4nKTsKKyAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQ4X3Q+
KGFkZHJlc3MpOworfQorICAgIAorc3RhdGljIHNpemVfdCB6ZXJvU2VxdWVuY2VMZW5ndGgoY29u
c3Qgc3RkOjphcnJheTx1aW50MTZfdCwgOD4mIGFkZHJlc3MsIHNpemVfdCBiZWdpbikKK3sKKyAg
ICBzaXplX3QgZW5kID0gYmVnaW47CisgICAgZm9yICg7IGVuZCA8IDg7IGVuZCsrKSB7CisgICAg
ICAgIGlmIChhZGRyZXNzW2VuZF0pCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0
dXJuIGVuZCAtIGJlZ2luOworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbmRM
b25nZXN0WmVyb1NlcXVlbmNlKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNz
KQoreworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsb25nZXN0OworICAgIHNpemVfdCBsb25n
ZXN0TGVuZ3RoID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDg7IGkrKykgeworICAg
ICAgICBzaXplX3QgbGVuZ3RoID0gemVyb1NlcXVlbmNlTGVuZ3RoKGFkZHJlc3MsIGkpOworICAg
ICAgICBpZiAobGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAobGVuZ3RoID4gMSAmJiAoIWxvbmdl
c3QgfHwgbG9uZ2VzdExlbmd0aCA8IGxlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICBsb25nZXN0
ID0gaTsKKyAgICAgICAgICAgICAgICBsb25nZXN0TGVuZ3RoID0gbGVuZ3RoOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaSArPSBsZW5ndGg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIGxvbmdlc3Q7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2UGllY2UodWlu
dDE2X3QgcGllY2UpCit7CisgICAgYm9vbCBwcmludGVkID0gZmFsc2U7CisgICAgaWYgKGF1dG8g
bmliYmxlMCA9IHBpZWNlID4+IDEyKSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93
ZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJSGV4RGlnaXQobmliYmxlMCkpOworICAgICAgICBwcmlu
dGVkID0gdHJ1ZTsKKyAgICB9CisgICAgYXV0byBuaWJibGUxID0gcGllY2UgPj4gOCAmIDB4RjsK
KyAgICBpZiAocHJpbnRlZCB8fCBuaWJibGUxKSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJSGV4RGlnaXQobmliYmxlMSkpOworICAgICAg
ICBwcmludGVkID0gdHJ1ZTsKKyAgICB9CisgICAgYXV0byBuaWJibGUyID0gcGllY2UgPj4gNCAm
IDB4RjsKKyAgICBpZiAocHJpbnRlZCB8fCBuaWJibGUyKQorICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTIpKTsKKyAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0
KHBpZWNlICYgMHhGKSk7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2KFVSTFBh
cnNlcjo6SVB2NkFkZHJlc3MgYWRkcmVzcykKK3sKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdb
Jyk7CisgICAgYXV0byBjb21wcmVzc1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShh
ZGRyZXNzKTsKKyAgICBmb3IgKHNpemVfdCBwaWVjZSA9IDA7IHBpZWNlIDwgODsgcGllY2UrKykg
eworICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyICYmIGNvbXByZXNzUG9pbnRlci52YWx1ZSgp
ID09IHBpZWNlKSB7CisgICAgICAgICAgICBBU1NFUlQoIWFkZHJlc3NbcGllY2VdKTsKKyAgICAg
ICAgICAgIGlmIChwaWVjZSkKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6
Jyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cigiOjoiLCAyKTsKKyAgICAgICAgICAgIHdoaWxlIChwaWVjZSA8IDggJiYgIWFkZHJlc3NbcGll
Y2VdKQorICAgICAgICAgICAgICAgIHBpZWNlKys7CisgICAgICAgICAgICBpZiAocGllY2UgPT0g
OCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXJpYWxpemVJ
UHY2UGllY2UoYWRkcmVzc1twaWVjZV0pOworICAgICAgICBpZiAocGllY2UgPCA3KQorICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOworICAgIH0KKyAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCddJyk7Cit9CisKK2VudW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5n
RXJyb3IgeworICAgIEZhaWx1cmUsCisgICAgT3ZlcmZsb3csCit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorRXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBp
ZWNlUGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlKENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgYm9vbCYgZGlkU2VlU3ludGF4VmlvbGF0aW9u
KQoreworICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5rbm93bkJh
c2UsCisgICAgICAgIERlY2ltYWwsCisgICAgICAgIE9jdGFsT3JIZXgsCisgICAgICAgIE9jdGFs
LAorICAgICAgICBIZXgsCisgICAgfTsKKyAgICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpVbmtub3du
QmFzZTsKKyAgICBDaGVja2VkPHVpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gdmFsdWUgPSAwOwor
ICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAg
ICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKGlzVGFiT3JOZXdsaW5l
KCppdGVyYXRvcikpIHsKKyAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7
CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnLicpIHsKKyAgICAgICAgICAgIEFTU0VSVCgh
dmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS51bnNhZmVH
ZXQoKTsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2Ug
U3RhdGU6OlVua25vd25CYXNlOgorICAgICAgICAgICAgaWYgKFVOTElLRUxZKCppdGVyYXRvciA9
PSAnMCcpKSB7CisgICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpPY3RhbE9ySGV4OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RGVjaW1hbDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpPY3RhbE9ySGV4OgorICAgICAgICAgICAgZGlk
U2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0g
J3gnIHx8ICppdGVyYXRvciA9PSAnWCcpIHsKKyAgICAgICAgICAgICAgICArK2l0ZXJhdG9yOwor
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkhleDsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok9jdGFsOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkRlY2ltYWw6CisgICAgICAgICAg
ICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChJUHY0UGllY2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpOworICAgICAgICAg
ICAgdmFsdWUgKj0gMTA7CisgICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7Cisg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVy
Zmxvdyk7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU3RhdGU6Ok9jdGFsOgorICAgICAgICAgICAgQVNTRVJUKGRpZFNlZVN5bnRheFZp
b2xhdGlvbik7CisgICAgICAgICAgICBpZiAoKml0ZXJhdG9yIDwgJzAnIHx8ICppdGVyYXRvciA+
ICc3JykKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFy
c2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgICAgIHZhbHVlICo9IDg7CisgICAgICAgICAg
ICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFs
dWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICArK2l0ZXJh
dG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkhleDoKKyAgICAg
ICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhWaW9sYXRpb24pOworICAgICAgICAgICAgaWYgKCFp
c0FTQ0lJSGV4RGlnaXQoKml0ZXJhdG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgICAgIHZh
bHVlICo9IDE2OworICAgICAgICAgICAgdmFsdWUgKz0gdG9BU0NJSUhleFZhbHVlKCppdGVyYXRv
cik7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9y
OjpPdmVyZmxvdyk7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKCF2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpOwor
ICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMg
dWludDY0X3QgcG93MjU2KHNpemVfdCBleHBvbmVudCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChl
eHBvbmVudCA8PSA0KTsKKyAgICB1aW50NjRfdCB2YWx1ZXNbNV0gPSB7MSwgMjU2LCAyNTYgKiAy
NTYsIDI1NiAqIDI1NiAqIDI1NiwgMjU2dWxsICogMjU2ICogMjU2ICogMjU2IH07CisgICAgcmV0
dXJuIHZhbHVlc1tleHBvbmVudF07Cit9CisKK2VudW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGFy
c2luZ0Vycm9yIHsKKyAgICBGYWlsdXJlLAorICAgIE5vdElQdjQsCit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlRm9yU3ludGF4VmlvbGF0aW9uLCB0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgorRXhwZWN0ZWQ8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcywgVVJMUGFyc2VyOjpJUHY0
UGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6OnBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbj4mIGl0ZXJhdG9yRm9yU3ludGF4
VmlvbGF0aW9uUG9zaXRpb24sIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJh
dG9yKQoreworICAgIFZlY3RvcjxFeHBlY3RlZDx1aW50MzJfdCwgVVJMUGFyc2VyOjpJUHY0UGll
Y2VQYXJzaW5nRXJyb3I+LCA0PiBpdGVtczsKKyAgICBib29sIGRpZFNlZVN5bnRheFZpb2xhdGlv
biA9IGZhbHNlOworICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4n
KQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2
NCk7CisgICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgIGlmIChpc1RhYk9y
TmV3bGluZSgqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24g
PSB0cnVlOworICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisgICAgICAgIGlmIChpdGVtcy5zaXplKCkgPj0gNCkKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAg
aXRlbXMuYXBwZW5kKHBhcnNlSVB2NFBpZWNlKGl0ZXJhdG9yLCBkaWRTZWVTeW50YXhWaW9sYXRp
b24pKTsKKyAgICAgICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpICYmICppdGVyYXRvciA9PSAnLicp
IHsKKyAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRF
bmQoKSkKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhW
aW9sYXRpb25Qb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlIGlmICgqaXRlcmF0b3IgPT0gJy4n
KQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9y
OjpOb3RJUHY0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkg
fHwgIWl0ZW1zLnNpemUoKSB8fCBpdGVtcy5zaXplKCkgPiA0KQorICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgZm9yIChjb25zdCBh
dXRvJiBpdGVtIDogaXRlbXMpIHsKKyAgICAgICAgaWYgKCFpdGVtLmhhc192YWx1ZSgpICYmIGl0
ZW0uZXJyb3IoKSA9PSBJUHY0UGllY2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpCisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAg
fQorICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7CisgICAgICAgIGlmICghaXRl
bS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpP
dmVyZmxvdykKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKTsKKyAgICB9CisgICAgaWYgKGl0ZW1zLnNpemUoKSA+IDEpIHsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCkgLSAxOyBpKyspIHsKKyAgICAg
ICAgICAgIGlmIChpdGVtc1tpXS52YWx1ZSgpID4gMjU1KQorICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAoaXRlbXNbaXRlbXMuc2l6ZSgpIC0gMV0udmFsdWUoKSA+PSBwb3cyNTYo
NSAtIGl0ZW1zLnNpemUoKSkpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFy
c2luZ0Vycm9yOjpGYWlsdXJlKTsKKworICAgIGlmIChkaWRTZWVTeW50YXhWaW9sYXRpb24pCisg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9u
KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBpdGVtcykgeworICAgICAgICBpZiAoaXRl
bS52YWx1ZSgpID4gMjU1KQorICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9y
U3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgIH0KKworICAgIGlmIChVTkxJS0VMWShpdGVt
cy5zaXplKCkgIT0gNCkpCisgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uKTsKKworICAgIElQdjRBZGRyZXNzIGlwdjQgPSBpdGVtcy50YWtl
TGFzdCgpLnZhbHVlKCk7CisgICAgZm9yIChzaXplX3QgY291bnRlciA9IDA7IGNvdW50ZXIgPCBp
dGVtcy5zaXplKCk7ICsrY291bnRlcikKKyAgICAgICAgaXB2NCArPSBpdGVtc1tjb3VudGVyXS52
YWx1ZSgpICogcG93MjU2KDMgLSBjb3VudGVyKTsKKyAgICByZXR1cm4gaXB2NDsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVS
TFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB1aW50MzJfdCBwaWVjZSA9IDA7CisgICAgYm9v
bCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKKyAgICBzaXplX3QgZGlnaXRDb3VudCA9IDA7CisgICAg
d2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCpp
dGVyYXRvcikpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICArK2Rp
Z2l0Q291bnQ7CisgICAgICAgIGlmICghcGllY2UgJiYgKml0ZXJhdG9yID09ICcwJykgeworICAg
ICAgICAgICAgaWYgKGxlYWRpbmdaZXJvcykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoIXBpZWNlICYmICppdGVyYXRvciA9PSAnMCcpCisgICAgICAgICAgICBsZWFkaW5n
WmVyb3MgPSB0cnVlOworICAgICAgICBwaWVjZSA9IHBpZWNlICogMTAgKyAqaXRlcmF0b3IgLSAn
MCc7CisgICAgICAgIGlmIChwaWVjZSA+IDI1NSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uOjpObz4oaXRlcmF0b3IpOworICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBpZiAoKml0ZXJhdG9yID09ICcuJykKKyAgICAgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBpZiAocGllY2UgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBwaWVjZTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVz
cz4gVVJMUGFyc2VyOjpwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBJUHY0QWRkcmVzcyBhZGRyZXNzID0g
MDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDQ7ICsraSkgeworICAgICAgICBpZiAoc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gcGllY2UgPSBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoaXRl
cmF0b3IpKQorICAgICAgICAgICAgYWRkcmVzcyA9IChhZGRyZXNzIDw8IDgpICsgcGllY2UudmFs
dWUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgaWYgKGkgPCAzKSB7CisgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgaWYgKCppdGVy
YXRvciAhPSAnLicpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4o
aXRlcmF0b3IpOworICAgICAgICB9IGVsc2UgaWYgKCFpdGVyYXRvci5hdEVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisgICAgQVNTRVJUKGl0ZXJhdG9yLmF0
RW5kKCkpOworICAgIHJldHVybiBhZGRyZXNzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJz
ZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sK
KyAgICBBU1NFUlQoKmMgPT0gJ1snKTsKKyAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7Cisg
ICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBJUHY2QWRkcmVzcyBhZGRyZXNzID0ge3swLCAwLCAw
LCAwLCAwLCAwLCAwLCAwfX07CisgICAgc2l6ZV90IHBpZWNlUG9pbnRlciA9IDA7CisgICAgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGNvbXByZXNzUG9pbnRlcjsKKworICAgIGlmICgqYyA9PSAnOicp
IHsKKyAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOworICAgICAgICBpZiAoYy5hdEVuZCgp
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCpjICE9ICc6
JykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGFkdmFuY2UoYywg
aG9zdEJlZ2luKTsKKyAgICAgICAgKytwaWVjZVBvaW50ZXI7CisgICAgICAgIGNvbXByZXNzUG9p
bnRlciA9IHBpZWNlUG9pbnRlcjsKKyAgICB9CisgICAgCisgICAgd2hpbGUgKCFjLmF0RW5kKCkp
IHsKKyAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA4KQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCpjID09ICc6JykgeworICAgICAgICAgICAgaWYgKGNv
bXByZXNzUG9pbnRlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOworICAgICAgICAgICAgKytwaWVjZVBvaW50
ZXI7CisgICAgICAgICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDYg
fHwgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPCA2KSkgeworICAgICAgICAgICAg
aWYgKHN0ZDo6b3B0aW9uYWw8SVB2NEFkZHJlc3M+IGlwdjRBZGRyZXNzID0gcGFyc2VJUHY0QWRk
cmVzc0luc2lkZUlQdjYoYykpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVy
ICYmIHBpZWNlUG9pbnRlciA9PSA1KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOworICAg
ICAgICAgICAgICAgIGFkZHJlc3NbcGllY2VQb2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUo
KSA+PiAxNjsKKyAgICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRB
ZGRyZXNzLnZhbHVlKCkgJiAweEZGRkY7CisgICAgICAgICAgICAgICAgYyA9IHsgfTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB1aW50
MTZfdCB2YWx1ZSA9IDA7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSAwOworICAgICAgICBib29s
IGxlYWRpbmdaZXJvcyA9IGZhbHNlOworICAgICAgICBmb3IgKDsgbGVuZ3RoIDwgNDsgbGVuZ3Ro
KyspIHsKKyAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdCgqYykpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKCpjKSkKKyAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnMCcg
JiYgIWxlbmd0aCkKKyAgICAgICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAg
ICAgICAgdmFsdWUgPSB2YWx1ZSAqIDB4MTAgKyB0b0FTQ0lJSGV4VmFsdWUoKmMpOworICAgICAg
ICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAoVU5MSUtFTFkoKHZhbHVlICYmIGxlYWRpbmdaZXJvcykgfHwgKCF2YWx1ZSAmJiBsZW5n
dGggPiAxKSkpCisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKworICAg
ICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IHZhbHVlOworICAgICAgICBpZiAoYy5hdEVu
ZCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCB8
fCAqYyAhPSAnOicpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBh
ZHZhbmNlKGMsIGhvc3RCZWdpbik7CisgICAgfQorICAgIAorICAgIGlmICghYy5hdEVuZCgpKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIGlmIChjb21wcmVzc1BvaW50
ZXIpIHsKKyAgICAgICAgc2l6ZV90IHN3YXBzID0gcGllY2VQb2ludGVyIC0gY29tcHJlc3NQb2lu
dGVyLnZhbHVlKCk7CisgICAgICAgIHBpZWNlUG9pbnRlciA9IDc7CisgICAgICAgIHdoaWxlIChz
d2FwcykKKyAgICAgICAgICAgIHN0ZDo6c3dhcChhZGRyZXNzW3BpZWNlUG9pbnRlci0tXSwgYWRk
cmVzc1tjb21wcmVzc1BvaW50ZXIudmFsdWUoKSArIHN3YXBzLS0gLSAxXSk7CisgICAgfSBlbHNl
IGlmIChwaWVjZVBvaW50ZXIgIT0gOCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwb3NzaWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRM
b25nZXN0WmVyb1NlcXVlbmNlKGFkZHJlc3MpOworICAgIGlmIChwb3NzaWJsZUNvbXByZXNzUG9p
bnRlcikKKyAgICAgICAgcG9zc2libGVDb21wcmVzc1BvaW50ZXIudmFsdWUoKSsrOworICAgIGlm
IChVTkxJS0VMWShjb21wcmVzc1BvaW50ZXIgIT0gcG9zc2libGVDb21wcmVzc1BvaW50ZXIpKQor
ICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKyAgICAKKyAgICByZXR1cm4gYWRk
cmVzczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK1VSTFBhcnNlcjo6
TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwg
c2l6ZV90IGxlbmd0aCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0
ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pCit7CisgICAgTENoYXJCdWZmZXIgb3V0
cHV0OworICAgIG91dHB1dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICB1aW50OF90
IGJ5dGUgPSBpbnB1dFtpXTsKKyAgICAgICAgaWYgKGJ5dGUgIT0gJyUnKQorICAgICAgICAgICAg
b3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICAgICAgZWxzZSBpZiAobGVuZ3RoID4g
MiAmJiBpIDwgbGVuZ3RoIC0gMikgeworICAgICAgICAgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChp
bnB1dFtpICsgMV0pICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRp
b24pOworICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZh
bHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7CisgICAgICAgICAgICAgICAgaSArPSAy
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFw
cGVuZChieXRlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvdXRwdXQudW5jaGVja2Vk
QXBwZW5kKGJ5dGUpOworICAgIH0KKyAgICByZXR1cm4gb3V0cHV0OworfQorICAgIAorVVJMUGFy
c2VyOjpMQ2hhckJ1ZmZlciBVUkxQYXJzZXI6OnBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqIGlu
cHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIExDaGFyQnVmZmVyIG91dHB1dDsKKyAgICBvdXRw
dXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgIAorICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRb
aV07CisgICAgICAgIGlmIChieXRlICE9ICclJykKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNr
ZWRBcHBlbmQoYnl0ZSk7CisgICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0
aCAtIDIpIHsKKyAgICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAm
JiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgeworICAgICAgICAgICAgICAgIG91dHB1
dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSAr
IDJdKSk7CisgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgIH0KKyAgICBy
ZXR1cm4gb3V0cHV0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6
Om9wdGlvbmFsPFVSTFBhcnNlcjo6TENoYXJCdWZmZXI+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJ
SShTdHJpbmdJbXBsJiBkb21haW4sIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQoreworICAgIExDaGFyQnVm
ZmVyIGFzY2lpOworICAgIGlmIChkb21haW4uaXNBbGxBU0NJSSgpKSB7CisgICAgICAgIHNpemVf
dCBsZW5ndGggPSBkb21haW4ubGVuZ3RoKCk7CisgICAgICAgIGlmIChkb21haW4uaXM4Qml0KCkp
IHsKKyAgICAgICAgICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3Rl
cnM4KCk7CisgICAgICAgICAgICBhc2NpaS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcihjaGFyYWN0ZXJzW2ldKSkpCisg
ICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xh
dGlvblBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICBhc2NpaS51bmNoZWNrZWRBcHBlbmQodG9B
U0NJSUxvd2VyKGNoYXJhY3RlcnNbaV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3Rl
cnMxNigpOworICAgICAgICAgICAgYXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgp
OworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQor
ICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9s
YXRpb25Qb3NpdGlvbik7CisgICAgICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRv
QVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGFzY2lpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBzaXplX3QgbWF4RG9t
YWluTGVuZ3RoID0gNjQ7CisgICAgVUNoYXIgaG9zdG5hbWVCdWZmZXJbbWF4RG9tYWluTGVuZ3Ro
XTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBw
cm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBu
dW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJmludGVybmF0aW9uYWxE
b21haW5OYW1lVHJhbnNjb2RlcigpLCBTdHJpbmdWaWV3KGRvbWFpbikudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCksIGRvbWFpbi5sZW5ndGgoKSwgaG9zdG5hbWVCdWZmZXIsIG1heERvbWFpbkxlbmd0
aCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmZXJyb3IpOworICAgIEFTU0VSVChudW1DaGFyYWN0ZXJz
Q29udmVydGVkIDw9IHN0YXRpY19jYXN0PGludDMyX3Q+KG1heERvbWFpbkxlbmd0aCkpOworCisg
ICAgaWYgKFVfU1VDQ0VTUyhlcnJvcikgJiYgIXByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgewor
ICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzQ29udmVydGVkOyAr
K2kpIHsKKyAgICAgICAgICAgIEFTU0VSVChpc0FTQ0lJKGhvc3RuYW1lQnVmZmVyW2ldKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoIWlzQVNDSUlVcHBlcihob3N0bmFtZUJ1ZmZlcltpXSkpOworICAg
ICAgICB9CisgICAgICAgIGFzY2lpLmFwcGVuZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVy
c0NvbnZlcnRlZCk7CisgICAgICAgIGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhhc2NpaS5kYXRh
KCksIGFzY2lpLnNpemUoKSkpCisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JG
b3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgICAgIHJldHVybiBhc2NpaTsKKyAgICB9
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworYm9vbCBVUkxQYXJzZXI6Omhhc0ZvcmJp
ZGRlbkhvc3RDb2RlUG9pbnQoY29uc3QgVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciYgYXNjaWlEb21h
aW4pCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhc2NpaURvbWFpbi5zaXplKCk7ICsr
aSkgeworICAgICAgICBpZiAoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGFzY2lpRG9tYWluW2ld
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6cGFy
c2VQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAg
ICBBU1NFUlQoKml0ZXJhdG9yID09ICc6Jyk7CisgICAgYXV0byBjb2xvbkl0ZXJhdG9yID0gaXRl
cmF0b3I7CisgICAgYWR2YW5jZShpdGVyYXRvciwgY29sb25JdGVyYXRvcik7CisgICAgdWludDMy
X3QgcG9ydCA9IDA7CisgICAgaWYgKFVOTElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7CisgICAg
ICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oY29sb25JdGVyYXRvcikg
LSBtX3VybC5tX2hvc3RFbmQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0g
VVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExl
bmd0aDsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOworICAgIGJvb2wg
bGVhZGluZ1plcm9zID0gZmFsc2U7CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0
ZXJhdG9yKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3Ip
KSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdCgqaXRl
cmF0b3IpKSB7CisgICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09ICcwJyAmJiAhZGlnaXRDb3Vu
dCkKKyAgICAgICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICAgICAgKytk
aWdpdENvdW50OworICAgICAgICAgICAgcG9ydCA9IHBvcnQgKiAxMCArICppdGVyYXRvciAtICcw
JzsKKyAgICAgICAgICAgIGlmIChwb3J0ID4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46
Om1heCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHBvcnQgJiYgbGVhZGlu
Z1plcm9zKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisgICAgCisg
ICAgaWYgKCFwb3J0ICYmIGRpZ2l0Q291bnQgPiAxKQorICAgICAgICBzeW50YXhWaW9sYXRpb24o
Y29sb25JdGVyYXRvcik7CisKKyAgICBBU1NFUlQocG9ydCA9PSBzdGF0aWNfY2FzdDx1aW50MTZf
dD4ocG9ydCkpOworICAgIGlmIChVTkxJS0VMWShkZWZhdWx0UG9ydEZvclByb3RvY29sKHBhcnNl
ZERhdGFWaWV3KDAsIG1fdXJsLm1fc2NoZW1lRW5kKSkgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KHBvcnQpKSkKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgIGVs
c2UgeworICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgIEFTU0VSVChw
b3J0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSk7CisgICAgICAgIGFw
cGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDE2X3Q+KHN0YXRpY19jYXN0PHVpbnQxNl90Pihw
b3J0KSk7CisgICAgfQorCisgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlv
bihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydExl
bmd0aCA8PSBVUkw6Om1heFBvcnRMZW5ndGgpOworICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBv
cnRMZW5ndGg7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppdGVyYXRvciA9PSAnWycpIHsKKyAgICAgICAg
YXV0byBpcHY2RW5kID0gaXRlcmF0b3I7CisgICAgICAgIHdoaWxlICghaXB2NkVuZC5hdEVuZCgp
ICYmICppcHY2RW5kICE9ICddJykKKyAgICAgICAgICAgICsraXB2NkVuZDsKKyAgICAgICAgaWYg
KGlwdjZFbmQuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KGF1dG8gYWRkcmVzcyA9IHBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4oaXRlcmF0b3IsIGlwdjZFbmQpKSkgeworICAgICAgICAgICAgc2VyaWFsaXplSVB2Nihh
ZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAgICAgaWYgKCFpcHY2RW5kLmF0RW5kKCkpIHsKKyAg
ICAgICAgICAgICAgICBhZHZhbmNlKGlwdjZFbmQpOworICAgICAgICAgICAgICAgIGlmICghaXB2
NkVuZC5hdEVuZCgpICYmICppcHY2RW5kID09ICc6JykgeworICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXB2NkVuZCk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsK
KyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbV91cmxJ
c1NwZWNpYWwpIHsKKyAgICAgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9y
KSB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkp
IHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCppdGVyYXRv
ciA9PSAnOicpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KCppdGVyYXRvcikgJiYgKml0ZXJhdG9yICE9ICcl
JykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdXRmOFBlcmNl
bnRFbmNvZGU8aXNJblNpbXBsZUVuY29kZVNldD4oaXRlcmF0b3IpOworICAgICAgICB9CisgICAg
ICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAg
IGlmIChpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGgg
PSAwOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgfQorICAgIAorICAgIGlmIChMSUtFTFkoIW1faG9z
dEhhc1BlcmNlbnRPck5vbkFTQ0lJKSkgeworICAgICAgICBhdXRvIGhvc3RJdGVyYXRvciA9IGl0
ZXJhdG9yOworICAgICAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7ICsraXRlcmF0b3IpIHsK
KyAgICAgICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50
KCppdGVyYXRvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgICAgIGF1dG8gYWRkcmVzcyA9IHBhcnNlSVB2NEhvc3QoaG9zdEl0ZXJhdG9yLCBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihob3N0SXRlcmF0b3IsIGl0ZXJhdG9yKSk7CisgICAg
ICAgIGlmIChhZGRyZXNzKSB7CisgICAgICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFs
dWUoKSk7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRl
cmF0b3IpOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKDsg
aG9zdEl0ZXJhdG9yICE9IGl0ZXJhdG9yOyArK2hvc3RJdGVyYXRvcikgeworICAgICAgICAgICAg
aWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCpob3N0SXRlcmF0b3IpKSkgeworICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0SXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlV
cHBlcigqaG9zdEl0ZXJhdG9yKSkpCisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhv
c3RJdGVyYXRvcik7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dl
cigqaG9zdEl0ZXJhdG9yKSk7CisgICAgICAgIH0KKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
Y3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKCFob3N0SXRlcmF0b3IuYXRF
bmQoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaG9zdEl0ZXJhdG9yKTsKKyAgICAg
ICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3Vy
bC5tX2hvc3RFbmQ7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjpt
YXhQb3J0TGVuZ3RoKTsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGNvbnN0IGF1dG8gaG9zdEJl
Z2luID0gaXRlcmF0b3I7CisgICAgCisgICAgTENoYXJCdWZmZXIgdXRmOEVuY29kZWQ7CisgICAg
Zm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIGlmIChVTkxJ
S0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGhvc3RCZWdpbik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBp
ZiAoVU5MSUtFTFkoIWlzQVNDSUkoKml0ZXJhdG9yKSkpCisgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oaG9zdEJlZ2luKTsKKworICAgICAgICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKCppdGVy
YXRvcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHVpbnQ4X3QgYnVmZmVy
W1U4X01BWF9MRU5HVEhdOworICAgICAgICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAgICAgIFU4
X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQsICppdGVyYXRvcik7CisgICAgICAgIHV0ZjhF
bmNvZGVkLmFwcGVuZChidWZmZXIsIG9mZnNldCk7CisgICAgfQorICAgIExDaGFyQnVmZmVyIHBl
cmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZSh1dGY4RW5jb2RlZC5kYXRhKCksIHV0ZjhFbmNv
ZGVkLnNpemUoKSwgaG9zdEJlZ2luKTsKKyAgICBTdHJpbmcgZG9tYWluID0gU3RyaW5nOjpmcm9t
VVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CisgICAg
aWYgKGRvbWFpbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChkb21h
aW4gIT0gU3RyaW5nVmlldyhwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNp
emUoKSkpCisgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgIGF1dG8gYXNj
aWlEb21haW4gPSBkb21haW5Ub0FTQ0lJKCpkb21haW4uaW1wbCgpLCBob3N0QmVnaW4pOworICAg
IGlmICghYXNjaWlEb21haW4gfHwgaGFzRm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFp
bi52YWx1ZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIExDaGFyQnVmZmVyJiBhc2Np
aURvbWFpblZhbHVlID0gYXNjaWlEb21haW4udmFsdWUoKTsKKyAgICBjb25zdCBMQ2hhciogYXNj
aWlEb21haW5DaGFyYWN0ZXJzID0gYXNjaWlEb21haW5WYWx1ZS5kYXRhKCk7CisKKyAgICBhdXRv
IGFkZHJlc3MgPSBwYXJzZUlQdjRIb3N0KGhvc3RCZWdpbiwgQ29kZVBvaW50SXRlcmF0b3I8TENo
YXI+KGFzY2lpRG9tYWluVmFsdWUuYmVnaW4oKSwgYXNjaWlEb21haW5WYWx1ZS5lbmQoKSkpOwor
ICAgIGlmIChhZGRyZXNzKSB7CisgICAgICAgIHNlcmlhbGl6ZUlQdjQoYWRkcmVzcy52YWx1ZSgp
KTsKKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IDA7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsKKyAgICB9CisgICAgaWYgKGFkZHJlc3MuZXJy
b3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGFzY2lpRG9tYWluQ2hhcmFjdGVycywgYXNjaWlE
b21haW5WYWx1ZS5zaXplKCkpOworICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlv
bihpdGVyYXRvcik7CisgICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4g
cGFyc2VQb3J0KGl0ZXJhdG9yKTsKKyAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgIHJl
dHVybiB0cnVlOworfQorCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJM
RGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCit7CisgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChT
dHJpY3RDb252ZXJzaW9uKTsKKyAgICBpZiAodXRmOC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBhdXRvIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgp
KTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBl
cmNlbnREZWNvZGVkLnNpemUoKSk7Cit9CisKKy8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9y
Zy8jY29uY2VwdC11cmxlbmNvZGVkLXBhcnNlcgorYXV0byBVUkxQYXJzZXI6OnBhcnNlVVJMRW5j
b2RlZEZvcm0oU3RyaW5nVmlldyBpbnB1dCkgLT4gVVJMRW5jb2RlZEZvcm0KK3sKKyAgICBVUkxF
bmNvZGVkRm9ybSBvdXRwdXQ7CisgICAgZm9yIChTdHJpbmdWaWV3IGJ5dGVzIDogaW5wdXQuc3Bs
aXQoJyYnKSkgeworICAgICAgICBhdXRvIGVxdWFsSW5kZXggPSBieXRlcy5maW5kKCc9Jyk7Cisg
ICAgICAgIGlmIChlcXVhbEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBhdXRvIG5h
bWUgPSBmb3JtVVJMRGVjb2RlKGJ5dGVzLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsK
KyAgICAgICAgICAgIGlmIChuYW1lKQorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoeyBu
YW1lLnZhbHVlKCksIGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVjb2RlKGJ5dGVzLnN1YnN0cmluZygwLCBlcXVhbElu
ZGV4KS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7CisgICAgICAgICAgICBhdXRvIHZh
bHVlID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJzdHJpbmcoZXF1YWxJbmRleCArIDEpLnRvU3Ry
aW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKKyAgICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVl
KQorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIHZhbHVlLnZh
bHVlKCkgfSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworc3Rh
dGljIHZvaWQgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0oY29uc3QgU3RyaW5nJiBpbnB1dCwgVmVj
dG9yPExDaGFyPiYgb3V0cHV0KQoreworICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0
Q29udmVyc2lvbik7CisgICAgY29uc3QgY2hhciogZGF0YSA9IHV0ZjguZGF0YSgpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdXRmOC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGNvbnN0
IGNoYXIgYnl0ZSA9IGRhdGFbaV07CisgICAgICAgIGlmIChieXRlID09IDB4MjApCisgICAgICAg
ICAgICBvdXRwdXQuYXBwZW5kKDB4MkIpOworICAgICAgICBlbHNlIGlmIChieXRlID09IDB4MkEK
KyAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgyRAorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDJF
CisgICAgICAgICAgICB8fCAoYnl0ZSA+PSAweDMwICYmIGJ5dGUgPD0gMHgzOSkKKyAgICAgICAg
ICAgIHx8IChieXRlID49IDB4NDEgJiYgYnl0ZSA8PSAweDVBKQorICAgICAgICAgICAgfHwgYnl0
ZSA9PSAweDVGCisgICAgICAgICAgICB8fCAoYnl0ZSA+PSAweDYxICYmIGJ5dGUgPD0gMHg3QSkp
IC8vIEZJWE1FOiBQdXQgdGhlc2UgaW4gdGhlIGNoYXJhY3RlckNsYXNzVGFibGUgdG8gYXZvaWQg
YnJhbmNoZXMuCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKGJ5dGUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShieXRlLCBvdXRwdXQpOworICAgIH0KK30K
KyAgICAKK1N0cmluZyBVUkxQYXJzZXI6OnNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYg
dHVwbGVzKQoreworICAgIGlmICh0dXBsZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgVmVjdG9yPExDaGFyPiBvdXRwdXQ7CisgICAgZm9yIChhdXRvJiB0dXBsZSA6IHR1
cGxlcykgeworICAgICAgICBpZiAoIW91dHB1dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBvdXRw
dXQuYXBwZW5kKCcmJyk7CisgICAgICAgIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3JtKHR1cGxlLmtl
eSwgb3V0cHV0KTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgnPScpOworICAgICAgICBzZXJpYWxp
emVVUkxFbmNvZGVkRm9ybSh0dXBsZS52YWx1ZSwgb3V0cHV0KTsKKyAgICB9CisgICAgcmV0dXJu
IFN0cmluZzo6YWRvcHQoV1RGTW92ZShvdXRwdXQpKTsKK30KKworY29uc3QgVUlETkEmIFVSTFBh
cnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCkKK3sKKyAgICBzdGF0aWMg
VUlETkEqIGVuY29kZXI7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFVFcnJvckNvZGUgZXJyb3Ig
PSBVX1pFUk9fRVJST1I7CisgICAgICAgIC8vIFdhcm5pbmc6IFBsZWFzZSBjb250YWN0IGEgV2Vi
S2l0R1RLKyBkZXZlbG9wZXIgaWYgY2hhbmdpbmcgdGhlc2UgZmxhZ3MuCisgICAgICAgIC8vIFRo
ZXkgc2hvdWxkIGJlIHN5bmNlZCB3aXRoIGVwaHlfdXJpX2RlY29kZSgpIGluIGVwaHktdXJpLWhl
bHBlcnMuYy4KKyAgICAgICAgZW5jb2RlciA9IHVpZG5hX29wZW5VVFM0NihVSUROQV9DSEVDS19C
SURJIHwgVUlETkFfQ0hFQ0tfQ09OVEVYVEogfCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fVU5J
Q09ERSB8IFVJRE5BX05PTlRSQU5TSVRJT05BTF9UT19BU0NJSSwgJmVycm9yKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoVV9TVUNDRVNTKGVycm9yKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGVuY29kZXIpOworICAgIH0pOworICAgIHJldHVybiAqZW5jb2RlcjsKK30KKworYm9vbCBVUkxQ
YXJzZXI6OmFsbFZhbHVlc0VxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAg
IFVSTF9QQVJTRVJfTE9HKCIlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlc1xu
JWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXMiLAorICAgICAgICBhLm1faXNW
YWxpZCwKKyAgICAgICAgYS5tX2Nhbm5vdEJlQUJhc2VVUkwsCisgICAgICAgIGEubV9wcm90b2Nv
bElzSW5IVFRQRmFtaWx5LAorICAgICAgICBhLm1fc2NoZW1lRW5kLAorICAgICAgICBhLm1fdXNl
clN0YXJ0LAorICAgICAgICBhLm1fdXNlckVuZCwKKyAgICAgICAgYS5tX3Bhc3N3b3JkRW5kLAor
ICAgICAgICBhLm1faG9zdEVuZCwKKyAgICAgICAgYS5tX2hvc3RFbmQgKyBhLm1fcG9ydExlbmd0
aCwKKyAgICAgICAgYS5tX3BhdGhBZnRlckxhc3RTbGFzaCwKKyAgICAgICAgYS5tX3BhdGhFbmQs
CisgICAgICAgIGEubV9xdWVyeUVuZCwKKyAgICAgICAgYS5tX3N0cmluZy51dGY4KCkuZGF0YSgp
LAorICAgICAgICBiLm1faXNWYWxpZCwKKyAgICAgICAgYi5tX2Nhbm5vdEJlQUJhc2VVUkwsCisg
ICAgICAgIGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAorICAgICAgICBiLm1fc2NoZW1lRW5k
LAorICAgICAgICBiLm1fdXNlclN0YXJ0LAorICAgICAgICBiLm1fdXNlckVuZCwKKyAgICAgICAg
Yi5tX3Bhc3N3b3JkRW5kLAorICAgICAgICBiLm1faG9zdEVuZCwKKyAgICAgICAgYi5tX2hvc3RF
bmQgKyBiLm1fcG9ydExlbmd0aCwKKyAgICAgICAgYi5tX3BhdGhBZnRlckxhc3RTbGFzaCwKKyAg
ICAgICAgYi5tX3BhdGhFbmQsCisgICAgICAgIGIubV9xdWVyeUVuZCwKKyAgICAgICAgYi5tX3N0
cmluZy51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiBhLm1fc3RyaW5nID09IGIubV9zdHJp
bmcKKyAgICAgICAgJiYgYS5tX2lzVmFsaWQgPT0gYi5tX2lzVmFsaWQKKyAgICAgICAgJiYgYS5t
X2Nhbm5vdEJlQUJhc2VVUkwgPT0gYi5tX2Nhbm5vdEJlQUJhc2VVUkwKKyAgICAgICAgJiYgYS5t
X3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPT0gYi5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkKKyAg
ICAgICAgJiYgYS5tX3NjaGVtZUVuZCA9PSBiLm1fc2NoZW1lRW5kCisgICAgICAgICYmIGEubV91
c2VyU3RhcnQgPT0gYi5tX3VzZXJTdGFydAorICAgICAgICAmJiBhLm1fdXNlckVuZCA9PSBiLm1f
dXNlckVuZAorICAgICAgICAmJiBhLm1fcGFzc3dvcmRFbmQgPT0gYi5tX3Bhc3N3b3JkRW5kCisg
ICAgICAgICYmIGEubV9ob3N0RW5kID09IGIubV9ob3N0RW5kCisgICAgICAgICYmIGEubV9wb3J0
TGVuZ3RoID09IGIubV9wb3J0TGVuZ3RoCisgICAgICAgICYmIGEubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPT0gYi5tX3BhdGhBZnRlckxhc3RTbGFzaAorICAgICAgICAmJiBhLm1fcGF0aEVuZCA9PSBi
Lm1fcGF0aEVuZAorICAgICAgICAmJiBhLm1fcXVlcnlFbmQgPT0gYi5tX3F1ZXJ5RW5kOworfQor
Citib29sIFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KGNvbnN0IFVSTCYgdXJs
KQoreworICAgIHJldHVybiB1cmwubV9zY2hlbWVFbmQgPD0gdXJsLm1fdXNlclN0YXJ0CisgICAg
ICAgICYmIHVybC5tX3VzZXJTdGFydCA8PSB1cmwubV91c2VyRW5kCisgICAgICAgICYmIHVybC5t
X3VzZXJFbmQgPD0gdXJsLm1fcGFzc3dvcmRFbmQKKyAgICAgICAgJiYgdXJsLm1fcGFzc3dvcmRF
bmQgPD0gdXJsLm1faG9zdEVuZAorICAgICAgICAmJiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9y
dExlbmd0aCA8PSB1cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gKKyAgICAgICAgJiYgdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoIDw9IHVybC5tX3BhdGhFbmQKKyAgICAgICAgJiYgdXJsLm1fcGF0aEVu
ZCA8PSB1cmwubV9xdWVyeUVuZAorICAgICAgICAmJiB1cmwubV9xdWVyeUVuZCA8PSB1cmwubV9z
dHJpbmcubGVuZ3RoKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVVJMUGFyc2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45ZTI1YjU0MDIyMzQwYTllODhiZWQ4Y2NmMTcwMDM5Mjc3N2ZlNzJhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmgKQEAgLTAsMCArMSwxMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVk
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKK3N0
cnVjdCBVSUROQTsKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGNsYXNzIENvZGVQb2ludEl0ZXJhdG9yOworCitjbGFzcyBVUkxQYXJzZXIgewor
cHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVh
bChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgaW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KGNvbnN0IFVSTCYpOworICAgIAorICAgIHVz
aW5nIFVSTEVuY29kZWRGb3JtID0gVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3Ry
aW5nPj47CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVUkxFbmNvZGVkRm9ybSBwYXJz
ZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYpOworCisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNj
aGVtZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gbWF5YmVDYW5vbmljYWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworCisgICAg
c3RhdGljIGNvbnN0IFVJRE5BJiBpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsK
KyAgICBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIpOworCitwcml2YXRl
OgorICAgIFVSTFBhcnNlcihjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBV
UkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7CisgICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1f
dXJsOyB9CisKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRG
b3JQcm90b2NvbChTdHJpbmdWaWV3KTsKKyAgICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKKyAgICBmcmllbmQgY2xhc3Mg
VVJMOworCisgICAgVVJMIG1fdXJsOworICAgIFZlY3RvcjxMQ2hhcj4gbV9hc2NpaUJ1ZmZlcjsK
KyAgICBib29sIG1fdXJsSXNTcGVjaWFsIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdXJsSXNGaWxl
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJIHsgZmFsc2Ug
fTsKKyAgICBTdHJpbmcgbV9pbnB1dFN0cmluZzsKKyAgICBjb25zdCB2b2lkKiBtX2lucHV0QmVn
aW4geyBudWxscHRyIH07CisKKyAgICBib29sIG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uIHsgZmFs
c2UgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6
ZSA9IDIwNDg7CisgICAgdXNpbmcgTENoYXJCdWZmZXIgPSBWZWN0b3I8TENoYXIsIGRlZmF1bHRJ
bmxpbmVCdWZmZXJTaXplPjsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHZvaWQgcGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwZSosIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwg
Y29uc3QgVVJMJiwgY29uc3QgVVJMVGV4dEVuY29kaW5nKik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBwYXJzZUF1dGhvcml0eShDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9v
bCBwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIHBhcnNlUG9ydChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworCisgICAgdm9pZCBmYWlsdXJlKCk7CisgICAg
ZW51bSBjbGFzcyBSZXBvcnRTeW50YXhWaW9sYXRpb24geyBObywgWWVzIH07CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5
bnRheFZpb2xhdGlvbiA9IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6WWVzPgorICAgIHZvaWQgYWR2
YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpIHsgYWR2YW5j
ZTxDaGFyYWN0ZXJUeXBlLCByZXBvcnRTeW50YXhWaW9sYXRpb24+KGl0ZXJhdG9yLCBpdGVyYXRv
cik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhW
aW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9sYXRpb246Olllcz4KKyAgICB2b2lkIGFkdmFuY2Uo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCB0YWtlc1R3b0FkdmFuY2Vz
VW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgc3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gYm9vbCBpc1BlcmNlbnRFbmNvZGVkRG90KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29s
IGlzV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzU2luZ2xlRG90UGF0
aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gYm9vbCBzaG91bGRDb3B5RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBj
aGVja0xvY2FsaG9zdENvZGVQb2ludChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYs
IFVDaGFyMzIpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNB
dExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgYm9vbCBp
c0xvY2FsaG9zdChTdHJpbmdWaWV3KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiB2b2lkIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZv
aWQgY29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBl
bmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzaXplX3QgY3VycmVudFBvc2l0
aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZT4gdm9pZCBhcHBlbmROdW1iZXJUb0FTQ0lJ
QnVmZmVyKFVuc2lnbmVkSW50ZWdlclR5cGUpOworICAgIHRlbXBsYXRlPGJvb2woKmlzSW5Db2Rl
U2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB1dGY4UGVyY2VudEVu
Y29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxMQ2hhckJ1ZmZlcj4gZG9tYWluVG9BU0NJSShT
dHJpbmdJbXBsJiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJh
dG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXpl
X3QsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5
bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICBzdGF0aWMgTENoYXJCdWZmZXIgcGVyY2VudERl
Y29kZShjb25zdCBMQ2hhciosIHNpemVfdCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpOworICAgIHN0YXRpYyBib29sIGhh
c0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29uc3QgTENoYXJCdWZmZXImKTsKKyAgICB2b2lkIHBl
cmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QpOworICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihV
Q2hhcjMyKTsKKyAgICB2b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29uc3QgY2hhciosIHNpemVf
dCk7CisgICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGNoYXJhY3RlcnMpLCBzaXplKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHZvaWQgZW5jb2RlTm9uVVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4m
IHNvdXJjZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nJiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4pOworICAgIHZvaWQgY29weUFTQ0lJU3RyaW5nVW50aWwoY29uc3QgU3RyaW5nJiwg
c2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25z
dCBVUkwmKTsKKyAgICBTdHJpbmdWaWV3IHBhcnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6
ZV90IGxlbmd0aCk7CisgICAgVUNoYXIgcGFyc2VkRGF0YVZpZXcoc2l6ZV90IHBvc2l0aW9uKTsK
KworICAgIHVzaW5nIElQdjRBZGRyZXNzID0gdWludDMyX3Q7CisgICAgdm9pZCBzZXJpYWxpemVJ
UHY0KElQdjRBZGRyZXNzKTsKKyAgICBlbnVtIGNsYXNzIElQdjRQYXJzaW5nRXJyb3I7CisgICAg
ZW51bSBjbGFzcyBJUHY0UGllY2VQYXJzaW5nRXJyb3I7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
RXhwZWN0ZWQ8SVB2NEFkZHJlc3MsIElQdjRQYXJzaW5nRXJyb3I+IHBhcnNlSVB2NEhvc3QoY29u
c3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbj4mLCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFy
c2luZ0Vycm9yPiBwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiYsIGJvb2wmIHN5bnRheFZpb2xhdGlvbik7CisgICAgdXNpbmcgSVB2NkFkZHJlc3MgPSBzdGQ6
OmFycmF5PHVpbnQxNl90LCA4PjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBzdGQ6Om9wdGlvbmFsPElQdjZBZGRyZXNzPiBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5z
aWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdm9pZCBzZXJp
YWxpemVJUHY2UGllY2UodWludDE2X3QgcGllY2UpOworICAgIHZvaWQgc2VyaWFsaXplSVB2NihJ
UHY2QWRkcmVzcyk7CisKKyAgICBlbnVtIGNsYXNzIFVSTFBhcnQ7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJh
c2UsIFVSTFBhcnQsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29u
c3QgVVJMVGV4dEVuY29kaW5nKiYpOworICAgIHN0YXRpYyBzaXplX3QgdXJsTGVuZ3RoVW50aWxQ
YXJ0KGNvbnN0IFVSTCYsIFVSTFBhcnQpOworICAgIHZvaWQgcG9wUGF0aCgpOworICAgIGJvb2wg
c2hvdWxkUG9wUGF0aCh1bnNpZ25lZCk7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjY2NjVhOGQwZmZiOTYzNDkyMDY0NTMxNzA1YmMxY2I5MzNiYjc4ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApAQCAt
MCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNGVVJMRXh0cmFzLmgiCisKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworUmV0YWluUHRyPENGVVJMUmVmPiBj
cmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJM
UmVmIGJhc2VVUkwpCit7CisgICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhp
cyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcg
VVJMIGNvbXBvbmVudHMKKyAgICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZl
ciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5j
ZXMsIHdoaWNoCisgICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBi
eXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwg
YmFjaworICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCisgICAg
UmV0YWluUHRyPENGVVJMUmVmPiByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVV
UkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXpl
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGJhc2VVUkwsIHRydWUpKTsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3Ry
aW5nRW5jb2RpbmdJU09MYXRpbjEsIGJhc2VVUkwsIHRydWUpKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit2b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVz
dWx0KQoreworICAgIENGSW5kZXggYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwg
MCk7CisgICAgcmVzdWx0LnJlc2l6ZShieXRlc0xlbmd0aCk7CisgICAgQ0ZJbmRleCBmaW5hbExl
bmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0
LmRhdGEoKSksIGJ5dGVzTGVuZ3RoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBm
aW5hbExlbmd0aCA9PSBieXRlc0xlbmd0aCk7Cit9CisKK3ZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxS
ZWYgdXJsLCBDU3RyaW5nJiByZXN1bHQpCit7CisgICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENG
VVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKKyAgICBjaGFyKiBieXRlczsKKyAgICByZXN1bHQgPSBD
U3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGJ5dGVzTGVuZ3RoLCBieXRlcyk7CisgICAgQ0ZJbmRl
eCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4
Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwg
ZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5ndGgpOworfQorCitib29sIGlzQ0ZVUkxTYW1lT3JpZ2lu
KENGVVJMUmVmIGNmVVJMLCBjb25zdCBVUkwmIHVybCkKK3sKKyAgICBBU1NFUlQodXJsLnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSk7CisKKyAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJs
Lmhhc1Bhc3N3b3JkKCkpCisgICAgICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1
YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsKKworICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7CisgICAg
Z2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5dGVzKTsKKyAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihieXRlcy5zaXplKCkpIH07CisKKyAgICBpZiAoIXVybC5oYXNQYXRoKCkpCisg
ICAgICAgIHJldHVybiBTdHJpbmdWaWV3IHsgdXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7
CisKKyAgICBhdXRvIHVybFdpdGhvdXRQYXRoID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9
LnN1YnN0cmluZygwLCB1cmwucGF0aFN0YXJ0KCkgKyAxKTsKKyAgICByZXR1cm4gY2ZVUkxTdHJp
bmcuc3RhcnRzV2l0aCh1cmxXaXRob3V0UGF0aCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJh
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRhYzQ5YzNmMzdmNjUwMGU5NjNhZWQ1YjA0ZDA5OGYzODUxZjBlZmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCkBAIC0w
LDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENGVVJMRXh0cmFzX2gKKyNkZWZpbmUg
Q0ZVUkxFeHRyYXNfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsK
KworY2xhc3MgVVJMOwordHlwZWRlZiBWZWN0b3I8Y2hhciwgNTEyPiBVUkxDaGFyQnVmZmVyOwor
CitXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21C
dWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgQ0ZVUkxSZWYgYmFzZVVSTCA9IDApOworV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsK
K1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmLCBDU3RyaW5nJik7
CisKK2Jvb2wgaXNDRlVSTFNhbWVPcmlnaW4oQ0ZVUkxSZWYsIGNvbnN0IFVSTCYpOworCit9CisK
KyNlbmRpZiAvLyBDRlVSTEV4dHJhc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9V
UkxDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk1OTFl
MmIzODRlYmIyMDZkNTIyMjdlYzljYmY5ZTc1ZDk1ODI1MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKyNpbmNsdWRlICJDRlVSTEV4dHJhcy5o
IgorI2luY2x1ZGUgIlVSTFBhcnNlci5oIgorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
VVJMOjpVUkwoQ0ZVUkxSZWYgdXJsKQoreworICAgIGlmICghdXJsKSB7CisgICAgICAgIGludmFs
aWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXaHkgaXMg
aXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAg
ICBnZXRVUkxCeXRlcyh1cmwsIHVybEJ5dGVzKTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKHVybEJ5
dGVzLmRhdGEoKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKKyNpZiAhVVNF
KEZPVU5EQVRJT04pCitSZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25z
dAoreworICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJldHVybiBmb3IgaW52YWxpZCBV
UkxzPworICAgIC8vIEN1cnJlbnRseSBpdCB0aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiB0
aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGluIHRoYXQgY2FzZSwKKyAgICAvLyB3aGljaCBp
cyBjbGVhcmx5IHdyb25nLgorICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOworICAgIGNvcHlUb0J1
ZmZlcihidWZmZXIpOworICAgIGF1dG8gY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisKKyAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpICYmICFpc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjZlVSTDsKK30KKyNlbmRpZgorCitTdHJp
bmcgVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGVVJMUmVm
PiBjZlVSTCA9IGNyZWF0ZUNGVVJMKCk7CisgICAgaWYgKCFjZlVSTCkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisjaWYgUExBVEZPUk0oV0lOKQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhT
dHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGU7CisjZWxzZQorICAgIENGVVJMUGF0aFN0eWxl
IHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOworI2VuZGlmCisgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgoY2ZVUkwuZ2V0KCksIHBhdGhTdHlsZSkpLmdl
dCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJh
cy5oIGIvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQz
MmU0YjMzZDI0ODdkYjcwZmY0ZDM5YjBiZDQzZTlmODlhYTFhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMuaApAQCAtMCwwICsxLDQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDEyLCAyMDE0IEFwcGxlLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitAY2xhc3MgTlNTdHJpbmc7CitAY2xhc3MgTlNVUkw7CisKK25hbWVzcGFjZSBXVEYg
eworCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJM
ICopOworV1RGX0VYUE9SVF9QUklWQVRFIE5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5T
U3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBl
cnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5T
VVJMICopOworV1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0
cmluZyAqKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRf
UFJJVkFURSBOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2
YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTEJ5
VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChOU1VSTCAqLCBDRlVSTENvbXBv
bmVudFR5cGUpOworV1RGX0VYUE9SVF9QUklWQVRFIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEg
KiwgTlNVUkwgKmJhc2VVUkwpOworV1RGX0VYUE9SVF9QUklWQVRFIE5TRGF0YSAqb3JpZ2luYWxV
UkxEYXRhKE5TVVJMICopOworV1RGX0VYUE9SVF9QUklWQVRFIE5TRGF0YSAqZGF0YUZvclVSTENv
bXBvbmVudFR5cGUoTlNVUkwgKiwgQ0ZVUkxDb21wb25lbnRUeXBlKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKiwg
TlNVUkwgKmJhc2VVUkwpOworCitOU1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgQk9PTCBpc1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICopOwor
V1RGX0VYUE9SVF9QUklWQVRFIEJPT0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKik7
CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2Ev
TlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNmZjOGYxNjhkZTA1NmM1YjJhMjk3MjFmMGJkN2I5ZjZmMTIzNDQ0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTAsMCAr
MSwxMjM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CisjaW1wb3J0ICJOU1VSTEV4dHJhcy5oIgorCisjaW1wb3J0ICJDRlVSTEV4
dHJhcy5oIgorI2ltcG9ydCAiVVJMUGFyc2VyLmgiCisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4K
KyNpbXBvcnQgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJh
cy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgor
I2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgorI2ltcG9ydCA8dW5pY29kZS91aWRuYS5oPgorI2lt
cG9ydCA8dW5pY29kZS91c2NyaXB0Lmg+CisKKy8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8g
aG9sZCBhbiBJRE4tZW5jb2RlZCBuYW1lLgorLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4g
dGhpcywgd2Ugd29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5
IE9LLgorI2RlZmluZSBIT1NUX05BTUVfQlVGRkVSX0xFTkdUSCAyMDQ4CisjZGVmaW5lIFVSTF9C
WVRFU19CVUZGRVJfTEVOR1RIIDIwNDgKKwordHlwZWRlZiB2b2lkICgqIFN0cmluZ1JhbmdlQXBw
bGllckZ1bmN0aW9uKShOU1N0cmluZyAqLCBOU1JhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+Jik7CisKK3N0YXRpYyB1aW50MzJfdCBJRE5TY3JpcHRXaGl0ZUxpc3RbKFVTQ1JJUFRfQ09E
RV9MSU1JVCArIDMxKSAvIDMyXTsKKworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBib29sIGlz
QXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgcmV0
dXJuIGNvZGVQb2ludCA9PSAweDA1NDggfHwgY29kZVBvaW50ID09IDB4MDU0RCB8fCBjb2RlUG9p
bnQgPT0gMHgwNTc4IHx8IGNvZGVQb2ludCA9PSAweDA1N0Q7Cit9CisKK3N0YXRpYyBib29sIGlz
QXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgVUVycm9y
Q29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKKyAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1c2Ny
aXB0X2dldFNjcmlwdChjb2RlUG9pbnQsICZlcnJvcik7CisgICAgaWYgKGVycm9yICE9IFVfWkVS
T19FUlJPUikgeworICAgICAgICBMT0dfRVJST1IoImdvdCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5n
IHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gc2NyaXB0ID09IFVTQ1JJUFRfQVJNRU5JQU47Cit9CisKKwor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0
T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSBjaGFyQ29kZSkKK3sKKyAgICBpZiAo
IWlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24oY2hhckNvZGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBUaGluZ3MgdGhlIFVSTCBQYXJzZXIgcmVqZWN0czoKKyAgICBzd2l0Y2gg
KGNoYXJDb2RlKSB7CisgICAgY2FzZSAnIyc6CisgICAgY2FzZSAnJSc6CisgICAgY2FzZSAnLyc6
CisgICAgY2FzZSAnOic6CisgICAgY2FzZSAnPyc6CisgICAgY2FzZSAnQCc6CisgICAgY2FzZSAn
Wyc6CisgICAgY2FzZSAnXFwnOgorICAgIGNhc2UgJ10nOgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCisKKworc3Rh
dGljIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0ZXIoc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2
aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjaGFyQ29kZSkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9u
IHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVuc2FmZSwgbG9va2FsaWtlIGNoYXJhY3RlcnM6Cisg
ICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hhcmFjdGVyLCBhbnkgY2hhcmFjdGVyIGNvbnNpZGVy
ZWQgYXMgd2hpdGVzcGFjZSwKKyAgICAvLyBhbnkgaWdub3JhYmxlIGNoYXJhY3RlciwgYW5kIGVt
b2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBsb2Nrcy4KKyAgICAKKyAgICAvLyBXZSBhbHNvIGNv
bnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4gTW96aWxsYSdzIGJsYWNrbGlzdCA8aHR0cDovL2ti
Lm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklETi5ibGFja2xpc3RfY2hhcnM+LgorCisgICAgLy8g
U29tZSBvZiB0aGUgY2hhcmFjdGVycyBoZXJlIHdpbGwgbmV2ZXIgYXBwZWFyIG9uY2UgSUNVIGhh
cyBlbmNvZGVkLgorICAgIC8vIEZvciBleGFtcGxlLCBJQ1UgdHJhbnNmb3JtcyBtb3N0IHNwYWNl
cyBpbnRvIGFuIEFTQ0lJIHNwYWNlIGFuZCBtb3N0CisgICAgLy8gc2xhc2hlcyBpbnRvIGFuIEFT
Q0lJIHNvbGlkdXMuIEJ1dCBvbmUgb2YgdGhlIHR3byBjYWxsZXJzIHVzZXMgdGhpcworICAgIC8v
IG9uIGNoYXJhY3RlcnMgdGhhdCBoYXZlIG5vdCBiZWVuIHByb2Nlc3NlZCBieSBJQ1UsIHNvIHRo
ZXkgYXJlIG5lZWRlZCBoZXJlLgorICAgIAorICAgIGlmICghdV9pc3ByaW50KGNoYXJDb2RlKSB8
fCB1X2lzVVdoaXRlU3BhY2UoY2hhckNvZGUpIHx8IHVfaGFzQmluYXJ5UHJvcGVydHkoY2hhckNv
ZGUsIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQpKQorICAgICAgICByZXR1cm4g
WUVTOworICAgIAorICAgIHN3aXRjaCAoY2hhckNvZGUpIHsKKyAgICAgICAgY2FzZSAweDAwQkM6
IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUiAqLworICAgICAgICBjYXNlIDB4MDBCRDog
LyogVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGICovCisgICAgICAgIGNhc2UgMHgwMEJFOiAvKiBW
VUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMgKi8KKyAgICAgICAgY2FzZSAweDAwRUQ6IC8q
IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUgKi8KKyAgICAgICAgY2FzZSAweDAxQzM6
IC8qIExBVElOIExFVFRFUiBSRVRST0ZMRVggQ0xJQ0sgKi8KKyAgICAgICAgY2FzZSAweDAyNTE6
IC8qIExBVElOIFNNQUxMIExFVFRFUiBBTFBIQSAqLworICAgICAgICBjYXNlIDB4MDI2MTogLyog
TEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBHICovCisgICAgICAgIGNhc2UgMHgwMkQwOiAvKiBN
T0RJRklFUiBMRVRURVIgVFJJQU5HVUxBUiBDT0xPTiAqLworICAgICAgICBjYXNlIDB4MDMzNTog
LyogQ09NQklOSU5HIFNIT1JUIFNUUk9LRSBPVkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM3
OiAvKiBDT01CSU5JTkcgU0hPUlQgU09MSURVUyBPVkVSTEFZICovCisgICAgICAgIGNhc2UgMHgw
MzM4OiAvKiBDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9WRVJMQVkgKi8KKyAgICAgICAgY2FzZSAw
eDA1ODk6IC8qIEFSTUVOSUFOIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MDVCNDogLyog
SEVCUkVXIFBPSU5UIEhJUklRICovCisgICAgICAgIGNhc2UgMHgwNUJDOiAvKiBIRUJSRVcgUE9J
TlQgREFHRVNIIE9SIE1BUElRICovCisgICAgICAgIGNhc2UgMHgwNUMzOiAvKiBIRUJSRVcgUFVO
Q1RVQVRJT04gU09GIFBBU1VRICovCisgICAgICAgIGNhc2UgMHgwNUY0OiAvKiBIRUJSRVcgUFVO
Q1RVQVRJT04gR0VSU0hBWUlNICovCisgICAgICAgIGNhc2UgMHgwNjA5OiAvKiBBUkFCSUMtSU5E
SUMgUEVSIE1JTExFIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDA2MEE6IC8qIEFSQUJJQy1JTkRJ
QyBQRVIgVEVOIFRIT1VTQU5EIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDA2NTA6IC8qIEFSQUJJ
QyBLQVNSQSAqLworICAgICAgICBjYXNlIDB4MDY2MDogLyogQVJBQklDIElORElDIERJR0lUIFpF
Uk8gKi8KKyAgICAgICAgY2FzZSAweDA2NkE6IC8qIEFSQUJJQyBQRVJDRU5UIFNJR04gKi8KKyAg
ICAgICAgY2FzZSAweDA2RDQ6IC8qIEFSQUJJQyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAw
eDA2RjA6IC8qIEVYVEVOREVEIEFSQUJJQyBJTkRJQyBESUdJVCBaRVJPICovCisgICAgICAgIGNh
c2UgMHgwNzAxOiAvKiBTWVJJQUMgU1VQUkFMSU5FQVIgRlVMTCBTVE9QICovCisgICAgICAgIGNh
c2UgMHgwNzAyOiAvKiBTWVJJQUMgU1VCTElORUFSIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNl
IDB4MDcwMzogLyogU1lSSUFDIFNVUFJBTElORUFSIENPTE9OICovCisgICAgICAgIGNhc2UgMHgw
NzA0OiAvKiBTWVJJQUMgU1VCTElORUFSIENPTE9OICovCisgICAgICAgIGNhc2UgMHgxNzM1OiAv
KiBQSElMSVBQSU5FIFNJTkdMRSBQVU5DVFVBVElPTiAqLworICAgICAgICBjYXNlIDB4MUQwNDog
LyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgQyAqLworICAgICAgICBjYXNlIDB4MUQwRjog
LyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTyAqLworICAgICAgICBjYXNlIDB4MUQxQzog
LyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVSAqLworICAgICAgICBjYXNlIDB4MUQyMDog
LyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgViAqLworICAgICAgICBjYXNlIDB4MUQyMTog
LyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVyAqLworICAgICAgICBjYXNlIDB4MUQyMjog
LyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgWiAqLworICAgICAgICBjYXNlIDB4MUVDRDog
LyogTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1QgQkVMT1cgKi8KKyAgICAgICAgY2FzZSAw
eDIwMTA6IC8qIEhZUEhFTiAqLworICAgICAgICBjYXNlIDB4MjAxMTogLyogTk9OLUJSRUFLSU5H
IEhZUEhFTiAqLworICAgICAgICBjYXNlIDB4MjAyNDogLyogT05FIERPVCBMRUFERVIgKi8KKyAg
ICAgICAgY2FzZSAweDIwMjc6IC8qIEhZUEhFTkFUSU9OIFBPSU5UICovCisgICAgICAgIGNhc2Ug
MHgyMDM5OiAvKiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLwor
ICAgICAgICBjYXNlIDB4MjAzQTogLyogU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RB
VElPTiBNQVJLICovCisgICAgICAgIGNhc2UgMHgyMDQxOiAvKiBDQVJFVCBJTlNFUlRJT04gUE9J
TlQgKi8KKyAgICAgICAgY2FzZSAweDIwNDQ6IC8qIEZSQUNUSU9OIFNMQVNIICovCisgICAgICAg
IGNhc2UgMHgyMDUyOiAvKiBDT01NRVJDSUFMIE1JTlVTIFNJR04gKi8KKyAgICAgICAgY2FzZSAw
eDIxNTM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgVEhJUkQgKi8KKyAgICAgICAgY2FzZSAweDIx
NTQ6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08gVEhJUkRTICovCisgICAgICAgIGNhc2UgMHgyMTU1
OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEZJRlRIICovCisgICAgICAgIGNhc2UgMHgyMTU2OiAv
KiBWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRIUyAqLworICAgICAgICBjYXNlIDB4MjE1NzogLyog
VlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRIUyAqLworICAgICAgICBjYXNlIDB4MjE1ODogLyog
VlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhTICovCisgICAgICAgIGNhc2UgMHgyMTU5OiAvKiBW
VUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIICovCisgICAgICAgIGNhc2UgMHgyMTVBOiAvKiBWVUxH
QVIgRlJBQ1RJT04gRklWRSBTSVhUSFMgKi8KKyAgICAgICAgY2FzZSAweDIxNUI6IC8qIFZVTEdB
UiBGUkFDVElPTiBPTkUgRUlHSFQgKi8KKyAgICAgICAgY2FzZSAweDIxNUM6IC8qIFZVTEdBUiBG
UkFDVElPTiBUSFJFRSBFSUdIVEhTICovCisgICAgICAgIGNhc2UgMHgyMTVEOiAvKiBWVUxHQVIg
RlJBQ1RJT04gRklWRSBFSUdIVEhTICovCisgICAgICAgIGNhc2UgMHgyMTVFOiAvKiBWVUxHQVIg
RlJBQ1RJT04gU0VWRU4gRUlHSFRIUyAqLworICAgICAgICBjYXNlIDB4MjE1RjogLyogRlJBQ1RJ
T04gTlVNRVJBVE9SIE9ORSAqLworICAgICAgICBjYXNlIDB4MjIxMjogLyogTUlOVVMgU0lHTiAq
LworICAgICAgICBjYXNlIDB4MjIxNTogLyogRElWSVNJT04gU0xBU0ggKi8KKyAgICAgICAgY2Fz
ZSAweDIyMTY6IC8qIFNFVCBNSU5VUyAqLworICAgICAgICBjYXNlIDB4MjIzNjogLyogUkFUSU8g
Ki8KKyAgICAgICAgY2FzZSAweDIzM0Y6IC8qIEFQTCBGVU5DVElPTkFMIFNZTUJPTCBTTEFTSCBC
QVIgKi8KKyAgICAgICAgY2FzZSAweDIzQUU6IC8qIElOVEVHUkFMIEVYVEVOU0lPTiAqLworICAg
ICAgICBjYXNlIDB4MjQ0QTogLyogT0NSIERPVUJMRSBCQUNLU0xBU0ggKi8KKyAgICAgICAgY2Fz
ZSAweDI1NzE6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQ
RVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLworICAgICAgICBjYXNlIDB4MjU3MjogLyogRGlzcGxh
eVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJ
R0hUICovCisgICAgICAgIGNhc2UgMHgyOUY2OiAvKiBTT0xJRFVTIFdJVEggT1ZFUkJBUiAqLwor
ICAgICAgICBjYXNlIDB4MjlGODogLyogQklHIFNPTElEVVMgKi8KKyAgICAgICAgY2FzZSAweDJB
RkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFSWSBSRUxBVElPTiAqLworICAgICAgICBjYXNlIDB4
MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BFUkFUT1IgKi8KKyAgICAgICAgY2FzZSAweDJGRjA6
IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIFJJR0hUICovCisg
ICAgICAgIGNhc2UgMHgyRkYxOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIg
QUJPVkUgVE8gQkVMT1cgKi8KKyAgICAgICAgY2FzZSAweDJGRjI6IC8qIElERU9HUkFQSElDIERF
U0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIE1JRERMRSBBTkQgUklHSFQgKi8KKyAgICAgICAg
Y2FzZSAweDJGRjM6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBU
TyBNSURETEUgQU5EIEJFTE9XICovCisgICAgICAgIGNhc2UgMHgyRkY0OiAvKiBJREVPR1JBUEhJ
QyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVMTCBTVVJST1VORCAqLworICAgICAgICBjYXNlIDB4
MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00g
QUJPVkUgKi8KKyAgICAgICAgY2FzZSAweDJGRjY6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9O
IENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJFTE9XICovCisgICAgICAgIGNhc2UgMHgyRkY3OiAv
KiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMRUZUICov
CisgICAgICAgIGNhc2UgMHgyRkY4OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNU
RVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZUICovCisgICAgICAgIGNhc2UgMHgyRkY5OiAvKiBJ
REVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBSSUdI
VCAqLworICAgICAgICBjYXNlIDB4MkZGQTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hB
UkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIgTEVGVCAqLworICAgICAgICBjYXNlIDB4MkZGQjog
LyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIE9WRVJMQUlEICovCisgICAgICAg
IGNhc2UgMHgzMDAyOiAvKiBJREVPR1JBUEhJQyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAw
eDMwMDg6IC8qIExFRlQgQU5HTEUgQlJBQ0tFVCAqLworICAgICAgICBjYXNlIDB4MzAxNDogLyog
TEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCisgICAgICAgIGNhc2UgMHgzMDE1OiAvKiBS
SUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCisgICAgICAgIGNhc2UgMHgzMDMzOiAvKiBW
RVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQUEVSIEhBTEYgKi8KKyAgICAgICAgY2FzZSAweDMw
MzU6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgTE9XRVIgSEFMRiAqLworICAgICAgICBj
YXNlIDB4MzIxRDogLyogUEFSRU5USEVTSVpFRCBLT1JFQU4gQ0hBUkFDVEVSIE9KRU9OICovCisg
ICAgICAgIGNhc2UgMHgzMjFFOiAvKiBQQVJFTlRIRVNJWkVEIEtPUkVBTiBDSEFSQUNURVIgTyBI
VSAqLworICAgICAgICBjYXNlIDB4MzNBRTogLyogU1FVQVJFIFJBRCBPVkVSIFMgKi8KKyAgICAg
ICAgY2FzZSAweDMzQUY6IC8qIFNRVUFSRSBSQUQgT1ZFUiBTIFNRVUFSRUQgKi8KKyAgICAgICAg
Y2FzZSAweDMzQzY6IC8qIFNRVUFSRSBDIE9WRVIgS0cgKi8KKyAgICAgICAgY2FzZSAweDMzREY6
IC8qIFNRVUFSRSBBIE9WRVIgTSAqLworICAgICAgICBjYXNlIDB4MDVCOTogLyogSEVCUkVXIFBP
SU5UIEhPTEFNICovCisgICAgICAgIGNhc2UgMHgwNUJBOiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0g
SEFTRVIgRk9SIFZBViAqLworICAgICAgICBjYXNlIDB4MDVDMTogLyogSEVCUkVXIFBPSU5UIFNI
SU4gRE9UICovCisgICAgICAgIGNhc2UgMHgwNUMyOiAvKiBIRUJSRVcgUE9JTlQgU0lOIERPVCAq
LworICAgICAgICBjYXNlIDB4MDVDNDogLyogSEVCUkVXIE1BUksgVVBQRVIgRE9UICovCisgICAg
ICAgIGNhc2UgMHhBNzMxOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBTICovCisgICAg
ICAgIGNhc2UgMHhBNzcxOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgRFVNICovCisgICAgICAgIGNh
c2UgMHhBNzg5OiAvKiBNT0RJRklFUiBMRVRURVIgQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZF
MTQ6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBTRU1JQ09MT04gKi8KKyAgICAg
ICAgY2FzZSAweEZFMTU6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFWENMQU1B
VElPTiBNQVJLICovCisgICAgICAgIGNhc2UgMHhGRTNGOiAvKiBQUkVTRU5UQVRJT04gRk9STSBG
T1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFDS0VUICovCisgICAgICAgIGNhc2UgMHhGRTVEOiAv
KiBTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZF
NUU6IC8qIFNNQUxMIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2Fz
ZSAweEZGMEU6IC8qIEZVTExXSURUSCBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweEZGMEY6
IC8qIEZVTEwgV0lEVEggU09MSURVUyAqLworICAgICAgICBjYXNlIDB4RkY2MTogLyogSEFMRldJ
RFRIIElERU9HUkFQSElDIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4RkZGQzogLyogT0JK
RUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAqLworICAgICAgICBjYXNlIDB4RkZGRDogLyogUkVQ
TEFDRU1FTlQgQ0hBUkFDVEVSICovCisgICAgICAgIGNhc2UgMHgxRjUwRjogLyogTE9DSyBXSVRI
IElOSyBQRU4gKi8KKyAgICAgICAgY2FzZSAweDFGNTEwOiAvKiBDTE9TRUQgTE9DSyBXSVRIIEtF
WSAqLworICAgICAgICBjYXNlIDB4MUY1MTE6IC8qIEtFWSAqLworICAgICAgICBjYXNlIDB4MUY1
MTI6IC8qIExPQ0sgKi8KKyAgICAgICAgY2FzZSAweDFGNTEzOiAvKiBPUEVOIExPQ0sgKi8KKyAg
ICAgICAgICAgIHJldHVybiBZRVM7CisgICAgICAgIGNhc2UgMHgwMzA3OiAvKiBDT01CSU5JTkcg
RE9UIEFCT1ZFICovCisgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgw
MjM3IC8qIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogKi8KKyAgICAgICAgICAgICAgICB8
fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAxMzEgLyogTEFUSU4gU01BTEwgTEVUVEVSIERPVExF
U1MgSSAqLworICAgICAgICAgICAgICAgIHx8IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDVENTsg
LyogSEVCUkVXIExFVFRFUiBWQVYgKi8KKyAgICAgICAgY2FzZSAweDA1NDg6IC8qIEFSTUVOSUFO
IENBUElUQUwgTEVUVEVSIFZPICovCisgICAgICAgIGNhc2UgMHgwNTREOiAvKiBBUk1FTklBTiBD
QVBJVEFMIExFVFRFUiBTRUggKi8KKyAgICAgICAgY2FzZSAweDA1Nzg6IC8qIEFSTUVOSUFOIFNN
QUxMIExFVFRFUiBWTyAqLworICAgICAgICBjYXNlIDB4MDU3RDogLyogQVJNRU5JQU4gU01BTEwg
TEVUVEVSIFNFSCAqLworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50CisgICAg
ICAgICAgICAgICAgJiYgIWlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKHByZXZpb3Vz
Q29kZVBvaW50LnZhbHVlKCkpCisgICAgICAgICAgICAgICAgJiYgIWlzQXJtZW5pYW5TY3JpcHRD
aGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUoKSk7CisgICAgICAgIGNhc2UgJy4nOgor
ICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIHByZXZpb3VzQ29kZVBvaW50CisgICAgICAgICAgICAgICAgJiYgaXNBcm1lbmlhbkxvb2th
bGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgpKQorICAgICAgICAgICAgICAg
ICYmICEoaXNBcm1lbmlhblNjcmlwdENoYXJhY3RlcihjaGFyQ29kZSkgfHwgaXNBU0NJSURpZ2l0
T3JWYWxpZEhvc3RDaGFyYWN0ZXIoY2hhckNvZGUpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IHdoaXRlTGlzdElETlNjcmlwdChjb25zdCBjaGFyKiBzY3JpcHROYW1lKQoreworICAgIGludDMy
X3Qgc2NyaXB0ID0gdV9nZXRQcm9wZXJ0eVZhbHVlRW51bShVQ0hBUl9TQ1JJUFQsIHNjcmlwdE5h
bWUpOworICAgIGlmIChzY3JpcHQgPj0gMCAmJiBzY3JpcHQgPCBVU0NSSVBUX0NPREVfTElNSVQp
IHsKKyAgICAgICAgc2l6ZV90IGluZGV4ID0gc2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90
IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7CisgICAgICAgIElETlNjcmlwdFdoaXRlTGlzdFtp
bmRleF0gfD0gbWFzazsKKyAgICB9Cit9CisKK3N0YXRpYyBCT09MIHJlYWRJRE5TY3JpcHRXaGl0
ZUxpc3RGaWxlKE5TU3RyaW5nICpmaWxlbmFtZSkKK3sKKyAgICBpZiAoIWZpbGVuYW1lKQorICAg
ICAgICByZXR1cm4gTk87CisKKyAgICBGSUxFICpmaWxlID0gZm9wZW4oW2ZpbGVuYW1lIGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbl0sICJyIik7CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1
cm4gTk87CisgICAgCisgICAgLy8gUmVhZCBhIHdvcmQgYXQgYSB0aW1lLgorICAgIC8vIEFsbG93
IGNvbW1lbnRzLCBzdGFydGluZyB3aXRoICMgY2hhcmFjdGVyIHRvIHRoZSBlbmQgb2YgdGhlIGxp
bmUuCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgLy8gU2tpcCBhIGNvbW1lbnQgaWYgcHJlc2Vu
dC4KKyAgICAgICAgaWYgKGZzY2FuZihmaWxlLCAiICMlKlteXG5ccl0lKltcblxyXSIpID09IEVP
RikKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICAgICAgLy8gUmVhZCBhIHNjcmlw
dCBuYW1lIGlmIHByZXNlbnQuCisgICAgICAgIGNoYXIgd29yZFszM107CisgICAgICAgIGludCBy
ZXN1bHQgPSBmc2NhbmYoZmlsZSwgIiAlMzJbXiMgXHRcblxyXSUqW14jIFx0XG5ccl0gIiwgd29y
ZCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gRU9GKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIAorICAgICAgICBpZiAocmVzdWx0ID09IDEpIHsKKyAgICAgICAgICAgIC8vIEdvdCBhIHdv
cmQsIG1hcCB0byBzY3JpcHQgY29kZSBhbmQgcHV0IGl0IGludG8gdGhlIGFycmF5LgorICAgICAg
ICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHdvcmQpOworICAgICAgICB9CisgICAgfQorICAgIGZj
bG9zZShmaWxlKTsKKyAgICByZXR1cm4gWUVTOworfQorCitzdGF0aWMgQk9PTCBhbGxDaGFyYWN0
ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5n
dGgpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBmbGFnOworICAgIGRpc3BhdGNoX29u
Y2UoJmZsYWcsIF57CisgICAgICAgIC8vIFJlYWQgd2hpdGUgbGlzdCBmcm9tIGxpYnJhcnkuCisg
ICAgICAgIE5TQXJyYXkgKmRpcnMgPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlu
cyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxsRG9tYWluc01hc2ssIFlFUyk7CisgICAgICAgIGlu
dCBudW1EaXJzID0gW2RpcnMgY291bnRdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51
bURpcnM7IGkrKykgeworICAgICAgICAgICAgaWYgKHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxl
KFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGNvbnN0IGNoYXIqIGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3RbMjBd
ID0geworICAgICAgICAgICAgIkNvbW1vbiIsCisgICAgICAgICAgICAiSW5oZXJpdGVkIiwKKyAg
ICAgICAgICAgICJBcmFiaWMiLAorICAgICAgICAgICAgIkFybWVuaWFuIiwKKyAgICAgICAgICAg
ICJCb3BvbW9mbyIsCisgICAgICAgICAgICAiQ2FuYWRpYW5fQWJvcmlnaW5hbCIsCisgICAgICAg
ICAgICAiRGV2YW5hZ2FyaSIsCisgICAgICAgICAgICAiRGVzZXJldCIsCisgICAgICAgICAgICAi
R3VqYXJhdGkiLAorICAgICAgICAgICAgIkd1cm11a2hpIiwKKyAgICAgICAgICAgICJIYW5ndWwi
LAorICAgICAgICAgICAgIkhhbiIsCisgICAgICAgICAgICAiSGVicmV3IiwKKyAgICAgICAgICAg
ICJIaXJhZ2FuYSIsCisgICAgICAgICAgICAiS2F0YWthbmFfT3JfSGlyYWdhbmEiLAorICAgICAg
ICAgICAgIkthdGFrYW5hIiwKKyAgICAgICAgICAgICJMYXRpbiIsCisgICAgICAgICAgICAiVGFt
aWwiLAorICAgICAgICAgICAgIlRoYWkiLAorICAgICAgICAgICAgIllpIiwKKyAgICAgICAgfTsK
KyAgICAgICAgZm9yIChjb25zdCBjaGFyKiBzY3JpcHROYW1lIDogZGVmYXVsdElETlNjcmlwdFdo
aXRlTGlzdCkKKyAgICAgICAgICAgIHdoaXRlTGlzdElETlNjcmlwdChzY3JpcHROYW1lKTsKKyAg
ICB9KTsKKyAgICAKKyAgICBpbnQzMl90IGkgPSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIz
Mj4gcHJldmlvdXNDb2RlUG9pbnQ7CisgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAg
VUNoYXIzMiBjOworICAgICAgICBVMTZfTkVYVChidWZmZXIsIGksIGxlbmd0aCwgYykKKyAgICAg
ICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgVVNjcmlwdENvZGUg
c2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQoYywgJmVycm9yKTsKKyAgICAgICAgaWYgKGVycm9y
ICE9IFVfWkVST19FUlJPUikgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9y
IHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNjcmlwdHM6ICVkIiwgZXJyb3IpOworICAgICAgICAg
ICAgcmV0dXJuIE5POworICAgICAgICB9CisgICAgICAgIGlmIChzY3JpcHQgPCAwKSB7CisgICAg
ICAgICAgICBMT0dfRVJST1IoImdvdCBuZWdhdGl2ZSBudW1iZXIgZm9yIHNjcmlwdCBjb2RlIGZy
b20gSUNVOiAlZCIsIHNjcmlwdCk7CisgICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHNjcmlwdCA+PSBVU0NSSVBUX0NPREVfTElNSVQpCisgICAgICAgICAgICBy
ZXR1cm4gTk87CisKKyAgICAgICAgc2l6ZV90IGluZGV4ID0gc2NyaXB0IC8gMzI7CisgICAgICAg
IHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7CisgICAgICAgIGlmICghKElETlNj
cmlwdFdoaXRlTGlzdFtpbmRleF0gJiBtYXNrKSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAg
ICAgICAgCisgICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2lu
dCwgYykpCisgICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50
ID0gYzsKKyAgICB9CisgICAgcmV0dXJuIFlFUzsKK30KKworc3RhdGljIGJvb2wgaXNTZWNvbmRM
ZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQz
Ml90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKFVDaGFyKT4mIGNoYXJhY3Rlcklz
QWxsb3dlZCkKK3sKKyAgICBBU1NFUlQobGVuZ3RoID4gMCk7CisKKyAgICBmb3IgKGludDMyX3Qg
aSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIFVDaGFyIGNoID0gYnVmZmVy
W2ldOworICAgICAgICAKKyAgICAgICAgaWYgKGNoYXJhY3RlcklzQWxsb3dlZChjaCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIC8vIE9ubHkgY2hlY2sgdGhlIHNl
Y29uZCBsZXZlbCBkb21haW4uIExvd2VyIGxldmVsIHJlZ2lzdHJhcnMgbWF5IGhhdmUgZGlmZmVy
ZW50IHJ1bGVzLgorICAgICAgICBpZiAoY2ggPT0gJy4nKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCisjZGVmaW5lIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKHN1ZmZpeCwgZnVuY3Rp
b24pIFwKKyAgICB7IFwKKyAgICAgICAgc3RhdGljIGNvbnN0IGludDMyX3Qgc3VmZml4TGVuZ3Ro
ID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yoc3VmZml4WzBdKTsgXAorICAgICAgICBpZiAobGVu
Z3RoID4gc3VmZml4TGVuZ3RoICYmIDAgPT0gbWVtY21wKGJ1ZmZlciArIGxlbmd0aCAtIHN1ZmZp
eExlbmd0aCwgc3VmZml4LCBzaXplb2Yoc3VmZml4KSkpIFwKKyAgICAgICAgICAgIHJldHVybiBp
c1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0g
c3VmZml4TGVuZ3RoLCBmdW5jdGlvbik7IFwKKyAgICB9CisKK3N0YXRpYyBib29sIGlzUnVzc2lh
bkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNoYXIgY2gpCit7CisgICAgLy8gT25seSBtb2Rlcm4gUnVz
c2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICByZXR1cm4g
KGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBpc0FTQ0lJ
RGlnaXQoY2gpIHx8IGNoID09ICctJzsKK30KKworc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVyc0Fs
bG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGludDMyX3QgbGVuZ3RoKQorewor
ICAgIC8vIFNraXAgdHJhaWxpbmcgZG90IGZvciByb290IGRvbWFpbi4KKyAgICBpZiAoYnVmZmVy
W2xlbmd0aCAtIDFdID09ICcuJykKKyAgICAgICAgbGVuZ3RoLS07CisKKyAgICAvLyBodHRwOi8v
Y2N0bGQucnUvZmlsZXMvcGRmL2RvY3MvcnVsZXNfcnUtcmYucGRmCisgICAgc3RhdGljIGNvbnN0
IFVDaGFyIGN5cmlsbGljUkZbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0NDAsIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICAgICAweDA0NDQgIC8vIENZUklMTElDIFNN
QUxMIExFVFRFUiBFRgorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMo
Y3lyaWxsaWNSRiwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRw
Oi8vcnVzbmFtZXMucnUvcnVsZXMucGwKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNS
VVNbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBFUgorICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCisg
ICAgICAgIDB4MDQ0MSAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgfTsKKyAgICBD
SEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1JVUywgaXNSdXNzaWFuRG9tYWlu
TmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vcnUuZmFpdGlkLm9yZy9wcm9qZWN0cy9t
b3Njb3cvZG9jdW1lbnRzL21vc2t2YS9pZG4KKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxs
aWNNT1NLVkFbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0M0MsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBFTQorICAgICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBPCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgICAg
IDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCisgICAgICAgIDB4MDQzMiwgLy8g
Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCisgICAgICAgIDB4MDQzMCAgLy8gQ1lSSUxMSUMgU01B
TEwgTEVUVEVSIEEKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5
cmlsbGljTU9TS1ZBLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0
dHA6Ly93d3cuZG90ZGV0aS5ydS9mb3J1c2VyL2RvY3MvcmVncnVsZXMucGhwCisgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGN5cmlsbGljREVUSVtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4
MDQzNCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCisgICAgICAgIDB4MDQzNSwgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIElFCisgICAgICAgIDB4MDQ0MiwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIFRFCisgICAgICAgIDB4MDQzOCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKKyAg
ICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljREVUSSwgaXNS
dXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vY29yZW5pYy5vcmcg
LSBydWxlcyBub3QgcHVibGlzaGVkLiBUaGUgd29yZCBpcyBSdXNzaWFuLCBzbyBvbmx5IGFsbG93
aW5nIFJ1c3NpYW4gYXQgdGhpcyB0aW1lLAorICAgIC8vIGFsdGhvdWdoIHdlIG1heSBuZWVkIHRv
IHJldmlzZSB0aGUgY2hlY2tzIGlmIHRoaXMgZW5kcyB1cCBiZWluZyB1c2VkIHdpdGggb3RoZXIg
bGFuZ3VhZ2VzIHNwb2tlbiBpbiBSdXNzaWEuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljT05MQVlOW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgTworICAgICAgICAweDA0M0QsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBFTgorICAgICAgICAweDA0M0IsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAorICAgICAg
ICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzOSwgLy8g
Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKKyAgICAgICAgMHgwNDNEICAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRU4KKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRD
SEVTKGN5cmlsbGljT05MQVlOLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAg
IC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHNhbWUgYXMgYWJvdmUuCisgICAgc3RhdGljIGNvbnN0
IFVDaGFyIGN5cmlsbGljU0FZVFtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MSwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEEKKyAgICAgICAgMHgwNDM5LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
U0hPUlQgSQorICAgICAgICAweDA0NDIgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAg
IH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNTQVlULCBpc1J1
c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9waXIub3JnL3Byb2R1
Y3RzL29wci1kb21haW4vIC0gcnVsZXMgbm90IHB1Ymxpc2hlZC4gQWNjb3JkaW5nIHRvIHRoZSBy
ZWdpc3RyeSBzaXRlLAorICAgIC8vIHRoZSBpbnRlbmRlZCBhdWRpZW5jZSBpcyAiUnVzc2lhbiBh
bmQgb3RoZXIgU2xhdmljLXNwZWFraW5nIG1hcmtldHMiLgorICAgIC8vIENocm9tZSBhcHBlYXJz
IHRvIG9ubHkgYWxsb3cgUnVzc2lhbiwgc28gc3RpY2tpbmcgd2l0aCB0aGF0IGZvciBub3cuCisg
ICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT1JHW10gPSB7CisgICAgICAgICcuJywKKyAg
ICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAgICAgICAweDA0NDAs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICAgICAweDA0MzMgIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBHSEUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRD
SEVTKGN5cmlsbGljT1JHLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8v
IGh0dHA6Ly9jY3RsZC5ieS9ydWxlcy5odG1sCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljQkVMW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDMxLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgQkUKKyAgICAgICAgMHgwNDM1LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
SUUKKyAgICAgICAgMHgwNDNCICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICB9Owor
ICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljQkVMLCBbXShVQ2hhciBj
aCkgeworICAgICAgICAvLyBSdXNzaWFuIGFuZCBCeWVsb3J1c3NpYW4gbGV0dGVycywgZGlnaXRz
IGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisgICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYm
IGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAw
eDA0NUUgfHwgY2ggPT0gMHgyMDE5IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwor
ICAgIH0pOworCisgICAgLy8gaHR0cDovL3d3dy5uaWMua3ovZG9jcy9wb3J5YWRva192bmVkcmVu
aXlhX2thel9ydS5wZGYKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNLQVpbXSA9IHsK
KyAgICAgICAgJy4nLAorICAgICAgICAweDA0OUIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBL
QSBXSVRIIERFU0NFTkRFUgorICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBBCisgICAgICAgIDB4MDQzNyAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgfTsK
KyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0tBWiwgW10oVUNoYXIg
Y2gpIHsKKyAgICAgICAgLy8gS2F6YWtoIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBh
bGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8
IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0RDkgfHwgY2ggPT0gMHgwNDkzIHx8IGNoID09IDB4
MDQ5QiB8fCBjaCA9PSAweDA0QTMgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRCMSB8fCBj
aCA9PSAweDA0QUYgfHwgY2ggPT0gMHgwNEJCIHx8IGNoID09IDB4MDQ1NiB8fCBpc0FTQ0lJRGln
aXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly91YW5pYy5uZXQv
ZG9jcy9kb2N1bWVudHMtdWtyL1J1bGVzJTIwb2YlMjBVS1JfdjQuMC5wZGYKKyAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgY3lyaWxsaWNVS1JbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0
NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIEtBCisgICAgICAgIDB4MDQ0MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEVSCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxp
Y1VLUiwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gUnVzc2lhbiBhbmQgVWtyYWluaWFuIGxl
dHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNo
ID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0
OTEgfHwgY2ggPT0gMHgwNDA0IHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NTcgfHwgaXNB
U0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBodHRwOi8vd3d3
LnJuaWRzLnJzL2RhdGEvRE9LVU1FTlRJL2lkbi1zcmItcG9saWN5LXRlcm1zb2Z1c2UtdjEuNC1l
bmcucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU1JCW10gPSB7CisgICAgICAg
ICcuJywKKyAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAg
ICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDMxICAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NV
RkZJWF9NQVRDSEVTKGN5cmlsbGljU1JCLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBTZXJi
aWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1
cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2gg
PD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTIgfHwgY2ggPT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1
OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0gMHgwNDVCIHx8IGNoID09IDB4MDQ1RiB8fCBpc0FT
Q0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly9tYXJu
ZXQubWsvZG9jL3ByYXZpbG5pay1tay1ta2QucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5
cmlsbGljTUtEW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgS0EKKyAgICAgICAgMHgwNDM0ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICB9
OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTUtELCBbXShVQ2hh
ciBjaCkgeworICAgICAgICAvLyBNYWNlZG9uaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVz
IGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0
MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTMgfHwg
Y2ggPT0gMHgwNDU1IHx8IGNoID09IDB4MDQ1OCB8fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0gMHgw
NDVBIHx8IGNoID09IDB4MDQ1QyB8fCBjaCA9PSAweDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8
fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBodHRwczovL3d3dy5tb24ubW4vY3MvCisg
ICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTU9OW10gPSB7CisgICAgICAgICcuJywKKyAg
ICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNF
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAgICAgICAweDA0M0QgIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBFTgorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENI
RVMoY3lyaWxsaWNNT04sIFtdKFVDaGFyIGNoKSB7CisgICAgICAgIC8vIE1vbmdvbGlhbiBsZXR0
ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+
PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEU5
IHx8IGNoID09IDB4MDRBRiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9
KTsKKworICAgIC8vIE5vdCBhIGtub3duIHRvcCBsZXZlbCBkb21haW4gd2l0aCBzcGVjaWFsIHJ1
bGVzLgorICAgIHJldHVybiBOTzsKK30KKworLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBu
byBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KKy8vIElmIG1ha2VTdHJpbmcgaXMgTk8sIHRoZW4gcmV0
dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwgb3Igc2VsZiB0byBpbmRpY2F0ZSBtYXBwaW5nIGlzIG5l
Y2Vzc2FyeS4KKy8vIElmIG1ha2VTdHJpbmcgaXMgWUVTLCB0aGVuIHJldHVybiB2YWx1ZSBpcyBl
aXRoZXIgbmlsIG9yIHRoZSBtYXBwZWQgc3RyaW5nLgorc3RhdGljIE5TU3RyaW5nICptYXBIb3N0
TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MIGVuY29k
ZSwgQk9PTCBtYWtlU3RyaW5nLCBCT09MICplcnJvcikKK3sKKyAgICBpZiAocmFuZ2UubGVuZ3Ro
ID4gSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisg
ICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAg
VUNoYXIgc291cmNlQnVmZmVyW0hPU1RfTkFNRV9CVUZGRVJfTEVOR1RIXTsKKyAgICBVQ2hhciBk
ZXN0aW5hdGlvbkJ1ZmZlcltIT1NUX05BTUVfQlVGRkVSX0xFTkdUSF07CisgICAgCisgICAgaWYg
KGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNl
YXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkgeworICAgICAgICBOU1N0
cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VdOworICAg
ICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVw
bGFjaW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZT
VFIoIiIpKSk7CisgICAgICAgIGlmIChzdWJzdHJpbmcpIHsKKyAgICAgICAgICAgIHN0cmluZyA9
IHN1YnN0cmluZzsKKyAgICAgICAgICAgIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBs
ZW5ndGhdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpbnQgbGVuZ3RoID0gcmFuZ2Uu
bGVuZ3RoOworICAgIFtzdHJpbmcgZ2V0Q2hhcmFjdGVyczpzb3VyY2VCdWZmZXIgcmFuZ2U6cmFu
Z2VdOworICAgIAorICAgIFVFcnJvckNvZGUgdWVycm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJ
RE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CisgICAg
aW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gKGVuY29kZSA/IHVpZG5hX25hbWVUb0FT
Q0lJIDogdWlkbmFfbmFtZVRvVW5pY29kZSkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFp
bk5hbWVUcmFuc2NvZGVyKCksIHNvdXJjZUJ1ZmZlciwgbGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZl
ciwgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgsICZwcm9jZXNzaW5nRGV0YWlscywgJnVlcnJvcik7
CisgICAgaWYgKGxlbmd0aCAmJiAoVV9GQUlMVVJFKHVlcnJvcikgfHwgcHJvY2Vzc2luZ0RldGFp
bHMuZXJyb3JzKSkgeworICAgICAgICAqZXJyb3IgPSBZRVM7CisgICAgICAgIHJldHVybiBuaWw7
CisgICAgfQorICAgIAorICAgIGlmIChudW1DaGFyYWN0ZXJzQ29udmVydGVkID09IGxlbmd0aCAm
JiAhbWVtY21wKHNvdXJjZUJ1ZmZlciwgZGVzdGluYXRpb25CdWZmZXIsIGxlbmd0aCAqIHNpemVv
ZihVQ2hhcikpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIGlmICghZW5jb2RlICYm
ICFhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoZGVzdGluYXRpb25CdWZmZXIsIG51
bUNoYXJhY3RlcnNDb252ZXJ0ZWQpICYmICFhbGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMo
ZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpKQorICAgICAgICByZXR1
cm4gbmlsOworICAgIAorICAgIHJldHVybiBtYWtlU3RyaW5nID8gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOmRlc3RpbmF0aW9uQnVmZmVyIGxlbmd0aDpudW1DaGFyYWN0ZXJzQ29udmVy
dGVkXSA6IHN0cmluZzsKK30KKworc3RhdGljIEJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0
aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQorewor
ICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBOTywgTk8sIGVy
cm9yKSAhPSBuaWw7Cit9CisgCitzdGF0aWMgQk9PTCBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCAqZXJyb3IpCit7Cisg
ICAgcmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIFlFUywgIE5PLCBl
cnJvcikgIT0gbmlsOworfQorCitzdGF0aWMgTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJh
bmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCit7CisgICAgQk9PTCBlcnJvciA9
IE5POworICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBy
YW5nZSwgTk8sIFlFUywgJmVycm9yKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKK30KKworc3RhdGljIE5TU3Ry
aW5nICplbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJh
bmdlKQoreworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhv
c3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIFlFUywgWUVTLCAmZXJyb3IpOworICAgIGlm
IChlcnJvcikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcg
OiBob3N0OworfQorCitOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykK
K3sKKyAgICBCT09MIGVycm9yID0gTk87CisgICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFt
ZVdpdGhSYW5nZShzdHJpbmcsIE5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSksIE5PLCBZ
RVMsICZlcnJvcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJl
dHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9CisKK05TU3RyaW5nICplbmNvZGVIb3N0TmFt
ZShOU1N0cmluZyAqc3RyaW5nKQoreworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmlu
ZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0
cmluZyBsZW5ndGhdKSwgWUVTLCBZRVMsICZlcnJvcik7CisgICAgaWYgKGVycm9yKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9CisKK3N0
YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoTlNTdHJpbmcgKnN0cmluZywg
TlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXksIEJPT0wgZW5j
b2RlKQoreworICAgIC8vIEdlbmVyYWxseSwgd2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNh
c2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhvc3QgbmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGlu
Zy4KKyAgICAvLyBUaGVyZWZvcmUsIHdlIHVzZSBuaWwgdG8gaW5kaWNhdGUgbm8gbWFwcGluZyBo
ZXJlIGFuZCBhbiBlbXB0eSBhcnJheSB0byBpbmRpY2F0ZSBlcnJvci4KKworICAgIEJPT0wgZXJy
b3IgPSBOTzsKKyAgICBCT09MIG5lZWRzTWFwcGluZyA9IGVuY29kZSA/IGhvc3ROYW1lTmVlZHNF
bmNvZGluZ1dpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCAmZXJyb3IpIDogaG9zdE5hbWVOZWVkc0Rl
Y29kaW5nV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsICZlcnJvcik7CisgICAgaWYgKCFlcnJvciAm
JiAhbmVlZHNNYXBwaW5nKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFhcnJheSkK
KyAgICAgICAgYXJyYXkgPSBhZG9wdE5TKFtOU011dGFibGVBcnJheSBuZXddKTsKKworICAgIGlm
ICghZXJyb3IpCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmFu
Z2U6cmFuZ2VdXTsKK30KKworc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkRW5jb2Rp
bmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiYgYXJyYXkpCit7CisgICAgcmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmco
c3RyaW5nLCByYW5nZSwgYXJyYXksIFlFUyk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5n
ZXNUaGF0TmVlZERlY29kaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFp
blB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQoreworICAgIHJldHVybiBjb2xsZWN0UmFuZ2Vz
VGhhdE5lZWRNYXBwaW5nKHN0cmluZywgcmFuZ2UsIGFycmF5LCBOTyk7Cit9CisKK3N0YXRpYyB2
b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvTWFpbFRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJp
bmcsIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4mIGFycmF5KQoreworICAgIC8vIEluIGEgbWFpbHRvOiBVUkwsIGhvc3QgbmFtZXMgY29tZSBh
ZnRlciBhICdAJyBjaGFyYWN0ZXIgYW5kIGVuZCB3aXRoIGEgJz4nIG9yICcsJyBvciAnPycgY2hh
cmFjdGVyLgorICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZ3Mgc28gdGhhdCBjaGFyYWN0ZXJzIGlu
IHRoZW0gZG9uJ3QgY29uZnVzZSB1cy4KKyAgICAvLyBXaGVuIHdlIGZpbmQgYSAnPycgY2hhcmFj
dGVyLCB3ZSBhcmUgcGFzdCB0aGUgcGFydCBvZiB0aGUgVVJMIHRoYXQgY29udGFpbnMgaG9zdCBu
YW1lcy4KKyAgICAKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFj
dGVyU2V0Pj4gaG9zdE5hbWVPclN0cmluZ1N0YXJ0Q2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNl
dCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiXCJAPyJdOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBob3N0TmFtZUVuZENo
YXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0
cmluZzpAIj4sPyJdOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFy
YWN0ZXJTZXQ+PiBxdW90ZWRTdHJpbmdDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJh
Y3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJcIlxcIl07CisgICAgCisgICAgdW5zaWdu
ZWQgc3RyaW5nTGVuZ3RoID0gW3N0cmluZyBsZW5ndGhdOworICAgIE5TUmFuZ2UgcmVtYWluaW5n
ID0gTlNNYWtlUmFuZ2UoMCwgc3RyaW5nTGVuZ3RoKTsKKyAgICAKKyAgICB3aGlsZSAoMSkgewor
ICAgICAgICAvLyBGaW5kIHN0YXJ0IG9mIGhvc3QgbmFtZSBvciBvZiBxdW90ZWQgc3RyaW5nLgor
ICAgICAgICBOU1JhbmdlIGhvc3ROYW1lT3JTdHJpbmdTdGFydCA9IFtzdHJpbmcgcmFuZ2VPZkNo
YXJhY3RlckZyb21TZXQ6aG9zdE5hbWVPclN0cmluZ1N0YXJ0Q2hhcmFjdGVycy5nZXQoKS5nZXQo
KSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5nXTsKKyAgICAgICAgaWYgKGhvc3ROYW1lT3JTdHJp
bmdTdGFydC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHVuaWNoYXIgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRleDpob3N0TmFtZU9yU3Ry
aW5nU3RhcnQubG9jYXRpb25dOworICAgICAgICByZW1haW5pbmcubG9jYXRpb24gPSBOU01heFJh
bmdlKGhvc3ROYW1lT3JTdHJpbmdTdGFydCk7CisgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBz
dHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAgIAorICAgICAgICBpZiAo
YyA9PSAnPycpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBpZiAoYyA9
PSAnQCcpIHsKKyAgICAgICAgICAgIC8vIEZpbmQgZW5kIG9mIGhvc3QgbmFtZS4KKyAgICAgICAg
ICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQgPSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAg
ICAgICBOU1JhbmdlIGhvc3ROYW1lRW5kID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNl
dDpob3N0TmFtZUVuZENoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFp
bmluZ107CisgICAgICAgICAgICBCT09MIGRvbmU7CisgICAgICAgICAgICBpZiAoaG9zdE5hbWVF
bmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkgeworICAgICAgICAgICAgICAgIGhvc3ROYW1lRW5k
LmxvY2F0aW9uID0gc3RyaW5nTGVuZ3RoOworICAgICAgICAgICAgICAgIGRvbmUgPSBZRVM7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9
IGhvc3ROYW1lRW5kLmxvY2F0aW9uOworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGgg
PSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAgICAgICAgICAgZG9u
ZSA9IE5POworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBQcm9j
ZXNzIGhvc3QgbmFtZSByYW5nZS4KKyAgICAgICAgICAgIGYoc3RyaW5nLCBOU01ha2VSYW5nZSho
b3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZC5sb2NhdGlvbiAtIGhvc3ROYW1lU3RhcnQpLCBhcnJh
eSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChkb25lKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0
cmluZy4KKyAgICAgICAgICAgIEFTU0VSVChjID09ICciJyk7CisgICAgICAgICAgICB3aGlsZSAo
MSkgeworICAgICAgICAgICAgICAgIE5TUmFuZ2UgZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5k
ID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpxdW90ZWRTdHJpbmdDaGFyYWN0ZXJz
LmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpyZW1haW5pbmddOworICAgICAgICAgICAgICAg
IGlmIChlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgYyA9IFtzdHJp
bmcgY2hhcmFjdGVyQXRJbmRleDplc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb25d
OworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoZXNjYXBl
ZENoYXJhY3Rlck9yU3RyaW5nRW5kKTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3Ro
ID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWluaW5nLmxvY2F0aW9uOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHRoZW4g
YnJlYWsgZnJvbSB0aGUgc3RyaW5nIGxvb3AgYmFjayB0byB0aGUgaG9zdCBuYW1lIGxvb3AuCisg
ICAgICAgICAgICAgICAgaWYgKGMgPT0gJyInKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFj
dGVyLgorICAgICAgICAgICAgICAgIEFTU0VSVChjID09ICdcXCcpOworICAgICAgICAgICAgICAg
IGlmICghcmVtYWluaW5nLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uICs9IDE7CisgICAgICAgICAgICAgICAg
cmVtYWluaW5nLmxlbmd0aCAtPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCitzdGF0aWMgdm9pZCBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhOU1N0cmlu
ZyAqc3RyaW5nLCBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmLCBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+JiBhcnJheSkKK3sKKyAgICAvLyBGaW5kIGhvc3RuYW1lcy4gVG9vIGJhZCB3ZSBj
YW4ndCB1c2UgYW55IHJlYWwgVVJMLXBhcnNpbmcgY29kZSB0byBkbyB0aGlzLAorICAgIC8vIGJ1
dCB3ZSBoYXZlIHRvIGRvIGl0IGJlZm9yZSBkb2luZyBhbGwgdGhlICUtZXNjYXBpbmcsIGFuZCB0
aGlzIGlzIHRoZSBvbmx5CisgICAgLy8gY29kZSB3ZSBoYXZlIHRoYXQgcGFyc2VzIG1haWx0byBV
UkxzIGFueXdheS4KKyAgICAKKyAgICAvLyBNYXliZSB3ZSBzaG91bGQgaW1wbGVtZW50IHRoaXMg
dXNpbmcgYSBjaGFyYWN0ZXIgYnVmZmVyIGluc3RlYWQ/CisgICAgCisgICAgaWYgKHByb3RvY29s
SXMoc3RyaW5nLCAibWFpbHRvIikpIHsKKyAgICAgICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9N
YWlsVG9VUkxTdHJpbmcoc3RyaW5nLCBmLCBhcnJheSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgLy8gRmluZCB0aGUgaG9zdCBuYW1lIGluIGEgaGllcmFyY2hpY2FsIFVSTC4K
KyAgICAvLyBJdCBjb21lcyBhZnRlciBhICI6Ly8iIHNlcXVlbmNlLCB3aXRoIHNjaGVtZSBjaGFy
YWN0ZXJzIHByZWNlZGluZy4KKyAgICAvLyBJZiBlbmRzIHdpdGggdGhlIGVuZCBvZiB0aGUgc3Ry
aW5nIG9yIGEgIjoiLCAiLyIsIG9yIGEgIj8iLgorICAgIC8vIElmIHRoZXJlIGlzIGEgIkAiIGNo
YXJhY3RlciwgdGhlIGhvc3QgcGFydCBpcyBqdXN0IHRoZSBwYXJ0IGFmdGVyIHRoZSAiQCIuCisg
ICAgTlNSYW5nZSBzZXBhcmF0b3JSYW5nZSA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjovLyJd
OworICAgIGlmIChzZXBhcmF0b3JSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgLy8gQ2hlY2sgdGhhdCBhbGwgY2hhcmFjdGVycyBiZWZvcmUg
dGhlIDovLyBhcmUgdmFsaWQgc2NoZW1lIGNoYXJhY3RlcnMuCisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IG5vblNjaGVtZUNoYXJhY3RlcnMgPSBb
W05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJBQkNE
RUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4
OSstLiJdIGludmVydGVkU2V0XTsKKyAgICBpZiAoW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJv
bVNldDpub25TY2hlbWVDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01h
a2VSYW5nZSgwLCBzZXBhcmF0b3JSYW5nZS5sb2NhdGlvbildLmxvY2F0aW9uICE9IE5TTm90Rm91
bmQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBb
c3RyaW5nIGxlbmd0aF07CisgICAgCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxOU0NoYXJhY3RlclNldD4+IGhvc3RUZXJtaW5hdG9ycyA9IFtOU0NoYXJhY3RlclNldCBjaGFy
YWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiOi8/IyJdOworICAgIAorICAgIC8vIFN0
YXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuCisgICAgdW5zaWduZWQgYXV0aG9yaXR5U3RhcnQgPSBO
U01heFJhbmdlKHNlcGFyYXRvclJhbmdlKTsKKyAgICAKKyAgICAvLyBGaW5kIHRlcm1pbmF0aW5n
IGNoYXJhY3Rlci4KKyAgICBOU1JhbmdlIGhvc3ROYW1lVGVybWluYXRvciA9IFtzdHJpbmcgcmFu
Z2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdFRlcm1pbmF0b3JzLmdldCgpLmdldCgpIG9wdGlvbnM6
MCByYW5nZTpOU01ha2VSYW5nZShhdXRob3JpdHlTdGFydCwgc3RyaW5nTGVuZ3RoIC0gYXV0aG9y
aXR5U3RhcnQpXTsKKyAgICB1bnNpZ25lZCBob3N0TmFtZUVuZCA9IGhvc3ROYW1lVGVybWluYXRv
ci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8gc3RyaW5nTGVuZ3RoIDogaG9zdE5hbWVUZXJtaW5h
dG9yLmxvY2F0aW9uOworICAgIAorICAgIC8vIEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhl
IGhvc3QgbmFtZS4KKyAgICBOU1JhbmdlIHVzZXJJbmZvVGVybWluYXRvciA9IFtzdHJpbmcgcmFu
Z2VPZlN0cmluZzpAIkAiIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZShhdXRob3JpdHlTdGFy
dCwgaG9zdE5hbWVFbmQgLSBhdXRob3JpdHlTdGFydCldOworICAgIHVuc2lnbmVkIGhvc3ROYW1l
U3RhcnQgPSB1c2VySW5mb1Rlcm1pbmF0b3IubG9jYXRpb24gPT0gTlNOb3RGb3VuZCA/IGF1dGhv
cml0eVN0YXJ0IDogTlNNYXhSYW5nZSh1c2VySW5mb1Rlcm1pbmF0b3IpOworICAgIAorICAgIHJl
dHVybiBmKHN0cmluZywgTlNNYWtlUmFuZ2UoaG9zdE5hbWVTdGFydCwgaG9zdE5hbWVFbmQgLSBo
b3N0TmFtZVN0YXJ0KSwgYXJyYXkpOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBt
YXBIb3N0TmFtZXMoTlNTdHJpbmcgKnN0cmluZywgQk9PTCBlbmNvZGUpCit7CisgICAgLy8gR2Vu
ZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBv
bmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3QgbmVlZCBtYXBwaW5nLgorICAgIAorICAgIGlmIChl
bmNvZGUgJiYgW3N0cmluZyBjYW5CZUNvbnZlcnRlZFRvRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0Vu
Y29kaW5nXSkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICAKKyAgICAvLyBNYWtlIGEgbGlz
dCBvZiByYW5nZXMgdGhhdCBhY3R1YWxseSBuZWVkIG1hcHBpbmcuCisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiBob3N0TmFtZVJhbmdlczsKKyAgICBTdHJpbmdSYW5nZUFwcGxpZXJGdW5j
dGlvbiBmID0gZW5jb2RlID8gY29sbGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcgOiBjb2xsZWN0
UmFuZ2VzVGhhdE5lZWREZWNvZGluZzsKKyAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0
cmluZyhzdHJpbmcsIGYsIGhvc3ROYW1lUmFuZ2VzKTsKKyAgICBpZiAoIWhvc3ROYW1lUmFuZ2Vz
KQorICAgICAgICByZXR1cm4gc3RyaW5nOworCisgICAgaWYgKCFbaG9zdE5hbWVSYW5nZXMgY291
bnRdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIC8vIERvIHRoZSBtYXBwaW5nLgor
ICAgIGF1dG8gbXV0YWJsZUNvcHkgPSBhZG9wdE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsKKyAg
ICB1bnNpZ25lZCBpID0gW2hvc3ROYW1lUmFuZ2VzIGNvdW50XTsKKyAgICB3aGlsZSAoaS0tKSB7
CisgICAgICAgIE5TUmFuZ2UgaG9zdE5hbWVSYW5nZSA9IFtbaG9zdE5hbWVSYW5nZXMgb2JqZWN0
QXRJbmRleDppXSByYW5nZVZhbHVlXTsKKyAgICAgICAgTlNTdHJpbmcgKm1hcHBlZEhvc3ROYW1l
ID0gZW5jb2RlID8gZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdl
KSA6IGRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgaG9zdE5hbWVSYW5nZSk7CisgICAg
ICAgIFttdXRhYmxlQ29weSByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6aG9zdE5hbWVSYW5nZSB3
aXRoU3RyaW5nOm1hcHBlZEhvc3ROYW1lXTsKKyAgICB9CisgICAgcmV0dXJuIG11dGFibGVDb3B5
OworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmdCeVRyaW1taW5nV2hpdGVz
cGFjZShOU1N0cmluZyAqc3RyaW5nKQoreworICAgIGF1dG8gdHJpbW1lZCA9IGFkb3B0TlMoW3N0
cmluZyBtdXRhYmxlQ29weV0pOworICAgIENGU3RyaW5nVHJpbVdoaXRlc3BhY2UoKF9fYnJpZGdl
IENGTXV0YWJsZVN0cmluZ1JlZil0cmltbWVkLmdldCgpKTsKKyAgICByZXR1cm4gdHJpbW1lZDsK
K30KKworTlNVUkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChO
U1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50KQoreworICAgIGlmICghVVJM
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIENGUmFuZ2UgZnJhZ1JnID0gQ0ZVUkxH
ZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50
LCBudWxscHRyKTsKKyAgICBpZiAoZnJhZ1JnLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAg
ICAgICByZXR1cm4gVVJMOworCisgICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xF
TkdUSD4gdXJsQnl0ZXMoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOworICAgIENGSW5kZXggbnVt
Qnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRh
dGEoKSwgdXJsQnl0ZXMuc2l6ZSgpKTsKKyAgICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAg
ICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxw
dHIsIDApOworICAgICAgICB1cmxCeXRlcy5ncm93KG51bUJ5dGVzKTsKKyAgICAgICAgQ0ZVUkxH
ZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCB1cmxCeXRlcy5kYXRhKCksIG51bUJ5dGVz
KTsKKyAgICB9CisKKyAgICBDRlVSTFJlZiByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhu
dWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0Vu
Y29kaW5nVVRGOCwgbnVsbHB0cik7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9
IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxv
Y2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAg
ICAKKyAgICByZXR1cm4gcmVzdWx0ID8gQ0ZCcmlkZ2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsK
K30KKworc3RhdGljIE5TVVJMICpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwg
KlVSTCkKK3sKKyAgICByZXR1cm4gVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29t
cG9uZW50KFVSTCwga0NGVVJMQ29tcG9uZW50UmVzb3VyY2VTcGVjaWZpZXIpOworfQorCitOU1VS
TCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKK3sKKyAgICBpZiAo
IWRhdGEpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgTlNVUkwgKnJlc3VsdCA9IG5p
bDsKKyAgICBzaXplX3QgbGVuZ3RoID0gW2RhdGEgbGVuZ3RoXTsKKyAgICBpZiAobGVuZ3RoID4g
MCkgeworICAgICAgICAvLyB3b3JrIGFyb3VuZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0
ZUFic29sdXRlVVJMV2l0aEJ5dGVzKC4uLCBUUlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBj
b21wb25lbnRzLgorICAgICAgICBiYXNlVVJMID0gVVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lm
aWVyKGJhc2VVUkwpOworICAgICAgICAKKyAgICAgICAgY29uc3QgVUludDggKmJ5dGVzID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgVUludDgqPihbZGF0YSBieXRlc10pOworICAgICAgICAKKyAgICAgICAg
Ly8gQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyB3b3VsZCBjb21wbGFpbiB0byBjb25z
b2xlIGlmIHdlIHBhc3NlZCBhIHBhdGggdG8gaXQuCisgICAgICAgIGlmIChieXRlc1swXSA9PSAn
LycgJiYgIWJhc2VVUkwpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAKKyAgICAg
ICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2Vk
IHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAg
ICAgICAgLy8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rp
b24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAorICAg
ICAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEg
ZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIHNoaWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCisgICAg
ICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluIDEgaW4gdGhvc2UgY2FzZXMuCisgICAgICAgIHJl
c3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMo
bnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAoX19icmlkZ2Ug
Q0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAg
ICAgcmVzdWx0ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhC
eXRlcyhudWxscHRyLCBieXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwg
KF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlFUykpOworICAgIH0gZWxzZQorICAgICAgICBy
ZXN1bHQgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOworCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KK3N0YXRpYyBOU0RhdGEgKmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJp
bmcpCit7CisgICAgTlNEYXRhICp1c2VyVHlwZWREYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgQVNTRVJUKHVzZXJUeXBlZERhdGEpOwor
ICAgIAorICAgIGNvbnN0IFVJbnQ4KiBpbkJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDgg
Kj4oW3VzZXJUeXBlZERhdGEgYnl0ZXNdKTsKKyAgICBpbnQgaW5MZW5ndGggPSBbdXNlclR5cGVk
RGF0YSBsZW5ndGhdOworICAgIGlmICghaW5MZW5ndGgpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgCisgICAgY2hhciogb3V0Qnl0ZXMgPSBzdGF0aWNfY2FzdDxjaGFyICo+KG1hbGxvYyhpbkxl
bmd0aCAqIDMpKTsgLy8gbGFyZ2UgZW5vdWdoIHRvICUtZXNjYXBlIGV2ZXJ5IGNoYXJhY3Rlcgor
ICAgIGNoYXIqIHAgPSBvdXRCeXRlczsKKyAgICBpbnQgb3V0TGVuZ3RoID0gMDsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGluTGVuZ3RoOyBpKyspIHsKKyAgICAgICAgVUludDggYyA9IGluQnl0
ZXNbaV07CisgICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAg
ICAqcCsrID0gJyUnOworICAgICAgICAgICAgKnArKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERp
Z2l0KGMpOworICAgICAgICAgICAgKnArKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMp
OworICAgICAgICAgICAgb3V0TGVuZ3RoICs9IDM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAqcCsrID0gYzsKKyAgICAgICAgICAgIG91dExlbmd0aCsrOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHJldHVybiBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6b3V0Qnl0ZXMg
bGVuZ3RoOm91dExlbmd0aF07IC8vIGFkb3B0cyBvdXRCeXRlcworfQorCitOU1VSTCAqVVJMV2l0
aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1VSTCAqbnNVUkwpCit7CisgICAg
aWYgKCFzdHJpbmcpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvIG1hcHBlZFN0cmlu
ZyA9IG1hcEhvc3ROYW1lcyhzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShzdHJpbmcpLmdldCgp
LCBZRVMpOworICAgIGlmICghbWFwcGVkU3RyaW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgLy8gTGV0J3MgY2hlY2sgd2hldGhlciB0aGUgVVJMIGlzIGJvZ3VzLgorICAgIFVSTCB1cmwg
eyBVUkwgeyBuc1VSTCB9LCBtYXBwZWRTdHJpbmcuZ2V0KCkgfTsKKyAgICBpZiAoIXVybC5jcmVh
dGVDRlVSTCgpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYwNTcKKyAgICAvLyBXZSBzaG91bGQg
YmUgYWJsZSB0byB1c2UgdXJsLmNyZWF0ZUNGVVJMIGluc3RlYWQgb2YgdXNpbmcgZGlyZWN0bHkg
Q0ZVUkwgcGFyc2luZyByb3V0aW5lcy4KKyAgICBOU0RhdGEgKmRhdGEgPSBkYXRhV2l0aFVzZXJU
eXBlZFN0cmluZyhtYXBwZWRTdHJpbmcuZ2V0KCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAg
cmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07CisKKyAgICByZXR1cm4gVVJMV2l0aERh
dGEoZGF0YSwgbnNVUkwpOworfQorCitOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0RlcHJl
Y2F0ZWQoTlNTdHJpbmcgKnN0cmluZywgTlNVUkwgKlVSTCkKK3sKKyAgICBpZiAoIXN0cmluZykK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TVVJMICpyZXN1bHQgPSBVUkxXaXRoVXNlclR5
cGVkU3RyaW5nKHN0cmluZywgVVJMKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBOU0Rh
dGEgKnJlc3VsdERhdGEgPSBkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhzdHJpbmcpOworICAgICAg
ICBpZiAoIXJlc3VsdERhdGEpCisgICAgICAgICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJp
bmc6QCIiXTsKKyAgICAgICAgcmVzdWx0ID0gVVJMV2l0aERhdGEocmVzdWx0RGF0YSwgVVJMKTsK
KyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQk9PTCBoYXNRdWVzdGlv
bk1hcmtPbmx5UXVlcnlTdHJpbmcoTlNVUkwgKlVSTCkKK3sKKyAgICBDRlJhbmdlIHJhbmdlV2l0
aFNlcGFyYXRvcnM7CisgICAgQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdl
IENGVVJMUmVmKVVSTCwga0NGVVJMQ29tcG9uZW50UXVlcnksICZyYW5nZVdpdGhTZXBhcmF0b3Jz
KTsKKyAgICBpZiAocmFuZ2VXaXRoU2VwYXJhdG9ycy5sb2NhdGlvbiAhPSBrQ0ZOb3RGb3VuZCAm
JiByYW5nZVdpdGhTZXBhcmF0b3JzLmxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gWUVTOwor
CisgICAgcmV0dXJuIE5POworfQorCitOU0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5T
VVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZSBjb21wb25lbnRUeXBlKQoreworICAgIFZlY3Rv
cjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IGFsbEJ5dGVzQnVmZmVyKFVSTF9CWVRF
U19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRl
cygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGFsbEJ5dGVz
QnVmZmVyLnNpemUoKSk7CisgICAgaWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7CisgICAgICAgIENG
SW5kZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCBudWxscHRyLCAwKTsKKyAgICAgICAgYWxsQnl0ZXNCdWZmZXIuZ3JvdyhieXRlc1RvQWxs
b2NhdGUpOworICAgICAgICBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENG
VVJMUmVmKVVSTCwgYWxsQnl0ZXNCdWZmZXIuZGF0YSgpLCBieXRlc1RvQWxsb2NhdGUpOworICAg
IH0KKyAgICAKKyAgICBjb25zdCBDRlVSTENvbXBvbmVudFR5cGUgY29tcGxldGVVUkwgPSAoQ0ZV
UkxDb21wb25lbnRUeXBlKS0xOworICAgIENGUmFuZ2UgcmFuZ2U7CisgICAgaWYgKGNvbXBvbmVu
dFR5cGUgIT0gY29tcGxldGVVUkwpIHsKKyAgICAgICAgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5n
ZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnRUeXBlLCBudWxs
cHRyKTsKKyAgICAgICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICB9IGVsc2UgeworICAgICAgICByYW5nZS5sb2NhdGlvbiA9
IDA7CisgICAgICAgIHJhbmdlLmxlbmd0aCA9IGJ5dGVzRmlsbGVkOworICAgIH0KKyAgICAKKyAg
ICBOU0RhdGEgKmNvbXBvbmVudERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YWxsQnl0ZXNC
dWZmZXIuZGF0YSgpICsgcmFuZ2UubG9jYXRpb24gbGVuZ3RoOnJhbmdlLmxlbmd0aF07IAorICAg
IAorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhciAqPihbY29tcG9uZW50RGF0YSBieXRlc10pOworICAgIE5TTXV0YWJsZURhdGEg
KnJlc3VsdERhdGEgPSBbTlNNdXRhYmxlRGF0YSBkYXRhXTsKKyAgICAvLyBOT1RFOiBhZGQgbGVh
ZGluZyAnPycgdG8gcXVlcnkgc3RyaW5ncyBub24temVybyBsZW5ndGggcXVlcnkgc3RyaW5ncy4K
KyAgICAvLyBOT1RFOiByZXRhaW4gcXVlc3Rpb24tbWFyayBvbmx5IHF1ZXJ5IHN0cmluZ3MuCisg
ICAgaWYgKGNvbXBvbmVudFR5cGUgPT0ga0NGVVJMQ29tcG9uZW50UXVlcnkpIHsKKyAgICAgICAg
aWYgKHJhbmdlLmxlbmd0aCA+IDAgfHwgaGFzUXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKFVS
TCkpCisgICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczoiPyIgbGVuZ3RoOjFdOyAg
ICAKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZS5sZW5ndGg7IGkrKykgewor
ICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBieXRlc1tpXTsKKyAgICAgICAgaWYgKGMgPD0gMHgy
MCB8fCBjID49IDB4N2YpIHsKKyAgICAgICAgICAgIGNoYXIgZXNjYXBlZFszXTsKKyAgICAgICAg
ICAgIGVzY2FwZWRbMF0gPSAnJSc7CisgICAgICAgICAgICBlc2NhcGVkWzFdID0gdXBwZXJOaWJi
bGVUb0FTQ0lJSGV4RGlnaXQoYyk7CisgICAgICAgICAgICBlc2NhcGVkWzJdID0gbG93ZXJOaWJi
bGVUb0FTQ0lJSGV4RGlnaXQoYyk7CisgICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRl
czplc2NhcGVkIGxlbmd0aDozXTsgICAgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBj
aGFyIGJbMV07CisgICAgICAgICAgICBiWzBdID0gYzsKKyAgICAgICAgICAgIFtyZXN1bHREYXRh
IGFwcGVuZEJ5dGVzOmIgbGVuZ3RoOjFdOyAgICAKKyAgICAgICAgfSAgICAgICAgICAgICAgIAor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0RGF0YTsKK30KKworc3RhdGljIE5TVVJMICpV
UkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3RlcihOU1VSTCAqVVJMLCBD
RlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50KQoreworICAgIENGUmFuZ2UgcmFuZ2UgPSBDRlVS
TEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25l
bnQsIDApOworICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAg
cmV0dXJuIFVSTDsKKyAgICAKKyAgICAvLyBSZW1vdmUgb25lIHN1YnNlcXVlbnQgY2hhcmFjdGVy
LgorICAgIHJhbmdlLmxlbmd0aCsrOworCisgICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVG
RkVSX0xFTkdUSD4gYnVmZmVyKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4
IG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAg
ICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxw
dHIsIDApOworICAgICAgICBidWZmZXIuZ3JvdyhudW1CeXRlcyk7CisgICAgICAgIENGVVJMR2V0
Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLmRhdGEoKSwgbnVtQnl0ZXMpOwor
ICAgIH0KKyAgICBVSW50OCogdXJsQnl0ZXMgPSBidWZmZXIuZGF0YSgpOworICAgICAgICAKKyAg
ICBpZiAobnVtQnl0ZXMgPCByYW5nZS5sb2NhdGlvbikKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAg
ICBpZiAobnVtQnl0ZXMgPCByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCkKKyAgICAgICAg
cmFuZ2UubGVuZ3RoID0gbnVtQnl0ZXMgLSByYW5nZS5sb2NhdGlvbjsKKyAgICAgICAgCisgICAg
bWVtbW92ZSh1cmxCeXRlcyArIHJhbmdlLmxvY2F0aW9uLCB1cmxCeXRlcyArIHJhbmdlLmxvY2F0
aW9uICsgcmFuZ2UubGVuZ3RoLCBudW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVu
Z3RoKTsKKyAgICAKKyAgICBDRlVSTFJlZiByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhu
dWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29k
aW5nVVRGOCwgbnVsbHB0cik7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENG
VVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxl
bmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAgICAgICAg
ICAgIAorICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJM
OworfQorCitOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICpVUkwpCit7CisgICAg
cmV0dXJuIFVSTEJ5UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKFVSTCwg
a0NGVVJMQ29tcG9uZW50VXNlckluZm8pOworfQorCitOU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShO
U1VSTCAqVVJMKQoreworICAgIFVJbnQ4ICpidWZmZXIgPSAoVUludDggKiltYWxsb2MoVVJMX0JZ
VEVTX0JVRkZFUl9MRU5HVEgpOworICAgIENGSW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5
dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5H
VEgpOworICAgIGlmIChieXRlc0ZpbGxlZCA9PSAtMSkgeworICAgICAgICBDRkluZGV4IGJ5dGVz
VG9BbGxvY2F0ZSA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0
ciwgMCk7CisgICAgICAgIGJ1ZmZlciA9IChVSW50OCAqKXJlYWxsb2MoYnVmZmVyLCBieXRlc1Rv
QWxsb2NhdGUpOworICAgICAgICBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdl
IENGVVJMUmVmKVVSTCwgYnVmZmVyLCBieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBBU1NFUlQo
Ynl0ZXNGaWxsZWQgPT0gYnl0ZXNUb0FsbG9jYXRlKTsKKyAgICB9CisgICAgCisgICAgLy8gYnVm
ZmVyIGlzIGFkb3B0ZWQgYnkgdGhlIE5TRGF0YQorICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlc05vQ29weTpidWZmZXIgbGVuZ3RoOmJ5dGVzRmlsbGVkIGZyZWVXaGVuRG9u
ZTpZRVNdOworICAgIAorICAgIE5TVVJMICpiYXNlVVJMID0gKF9fYnJpZGdlIE5TVVJMICopQ0ZV
UkxHZXRCYXNlVVJMKChfX2JyaWRnZSBDRlVSTFJlZilVUkwpOworICAgIGlmIChiYXNlVVJMKQor
ICAgICAgICByZXR1cm4gb3JpZ2luYWxVUkxEYXRhKFVSTFdpdGhEYXRhKGRhdGEsIGJhc2VVUkwp
KTsKKyAgICByZXR1cm4gZGF0YTsKK30KKworc3RhdGljIENGU3RyaW5nUmVmIGNyZWF0ZVN0cmlu
Z1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycyhDRlN0cmluZ1JlZiBzdHJpbmcpCit7CisgICAg
Q0ZJbmRleCBsZW5ndGggPSBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcpOworICAgIFZlY3RvcjxV
Q2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IHNvdXJjZUJ1ZmZlcihsZW5ndGgpOworICAg
IENGU3RyaW5nR2V0Q2hhcmFjdGVycyhzdHJpbmcsIENGUmFuZ2VNYWtlKDAsIGxlbmd0aCksIHNv
dXJjZUJ1ZmZlci5kYXRhKCkpOworICAgIAorICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JV
RkZFUl9MRU5HVEg+IG91dEJ1ZmZlcjsKKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+
IHByZXZpb3VzQ29kZVBvaW50OworICAgIENGSW5kZXggaSA9IDA7CisgICAgd2hpbGUgKGkgPCBs
ZW5ndGgpIHsKKyAgICAgICAgVUNoYXIzMiBjOworICAgICAgICBVMTZfTkVYVChzb3VyY2VCdWZm
ZXIsIGksIGxlbmd0aCwgYykKKyAgICAgICAgCisgICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJh
Y3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykpIHsKKyAgICAgICAgICAgIHVpbnQ4X3QgdXRmOEJ1
ZmZlcls0XTsKKyAgICAgICAgICAgIENGSW5kZXggb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIFVC
b29sIGZhaWx1cmUgPSBmYWxzZTsKKyAgICAgICAgICAgIFU4X0FQUEVORCh1dGY4QnVmZmVyLCBv
ZmZzZXQsIDQsIGMsIGZhaWx1cmUpCisgICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBmb3IgKENGSW5kZXggaiA9IDA7IGogPCBvZmZzZXQ7ICsr
aikgeworICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQoJyUnKTsKKyAgICAgICAgICAg
ICAgICBvdXRCdWZmZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZm
ZXJbal0pKTsKKyAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9B
U0NJSUhleERpZ2l0KHV0ZjhCdWZmZXJbal0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIFVDaGFyIHV0ZjE2QnVmZmVyWzJdOworICAgICAgICAgICAgQ0ZJ
bmRleCBvZmZzZXQgPSAwOworICAgICAgICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOworICAg
ICAgICAgICAgVTE2X0FQUEVORCh1dGYxNkJ1ZmZlciwgb2Zmc2V0LCAyLCBjLCBmYWlsdXJlKQor
ICAgICAgICAgICAgQVNTRVJUKCFmYWlsdXJlKTsKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBq
ID0gMDsgaiA8IG9mZnNldDsgKytqKQorICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQo
dXRmMTZCdWZmZXJbal0pOworICAgICAgICB9CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0g
YzsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
bnVsbHB0ciwgb3V0QnVmZmVyLmRhdGEoKSwgb3V0QnVmZmVyLnNpemUoKSk7Cit9CisKK05TU3Ry
aW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqVVJMKQoreworICAgIE5TRGF0YSAqZGF0YSA9
IG9yaWdpbmFsVVJMRGF0YShVUkwpOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJlZm9yZSA9
IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihbZGF0YSBieXRlc10pOworICAgIGlu
dCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOworICAgIAorICAgIGJvb2wgbWF5TmVlZEhvc3ROYW1l
RGVjb2RpbmcgPSBmYWxzZTsKKyAgICAKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gYmVm
b3JlOworICAgIGludCBidWZmZXJMZW5ndGggPSAobGVuZ3RoICogMykgKyAxOworICAgIFZlY3Rv
cjxjaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYWZ0ZXIoYnVmZmVyTGVuZ3RoKTsgLy8g
bGFyZ2UgZW5vdWdoIHRvICUtZXNjYXBlIGV2ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIgKnEgPSBh
ZnRlci5kYXRhKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAg
ICAgICB1bnNpZ25lZCBjaGFyIGMgPSBwW2ldOworICAgICAgICAvLyB1bmVzY2FwZSBlc2NhcGUg
c2VxdWVuY2VzIHRoYXQgaW5kaWNhdGUgYnl0ZXMgZ3JlYXRlciB0aGFuIDB4N2YKKyAgICAgICAg
aWYgKGMgPT0gJyUnICYmIChpICsgMSA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsg
MV0pKSAmJiBpICsgMiA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7Cisg
ICAgICAgICAgICBhdXRvIHUgPSB0b0FTQ0lJSGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsK
KyAgICAgICAgICAgIGlmICh1ID4gMHg3ZikgeworICAgICAgICAgICAgICAgIC8vIHVuZXNjYXBl
CisgICAgICAgICAgICAgICAgKnErKyA9IHU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIC8vIGRvIG5vdCB1bmVzY2FwZQorICAgICAgICAgICAgICAgICpxKysgPSBwW2ld
OworICAgICAgICAgICAgICAgICpxKysgPSBwW2kgKyAxXTsKKyAgICAgICAgICAgICAgICAqcSsr
ID0gcFtpICsgMl07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAqcSsrID0gYzsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBhbiBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2
ZSwgd2F5LgorICAgICAgICAgICAgaWYgKGMgPT0gJy0nICYmIGkgPj0gMyAmJiAhbWF5TmVlZEhv
c3ROYW1lRGVjb2RpbmcgJiYgKHFbLTRdIHwgMHgyMCkgPT0gJ3gnICYmIChxWy0zXSB8IDB4MjAp
ID09ICduJyAmJiBxWy0yXSA9PSAnLScpCisgICAgICAgICAgICAgICAgbWF5TmVlZEhvc3ROYW1l
RGVjb2RpbmcgPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgICpxID0gJ1wwJzsKKyAgICAK
KyAgICAvLyBDaGVjayBzdHJpbmcgdG8gc2VlIGlmIGl0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gZGlz
cGxheSB1c2luZyBVVEYtOCAgCisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiByZXN1bHQgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YWZ0ZXIuZGF0YSgpXTsKKyAgICBpZiAoIXJlc3Vs
dCkgeworICAgICAgICAvLyBDb3VsZCBub3QgY29udmVydCB0byBVVEYtOC4KKyAgICAgICAgLy8g
Q29udmVydCBjaGFyYWN0ZXJzIGdyZWF0ZXIgdGhhbiAweDdmIHRvIGVzY2FwZSBzZXF1ZW5jZXMu
CisgICAgICAgIC8vIFNoaWZ0IGN1cnJlbnQgc3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZl
cgorICAgICAgICAvLyB0aGVuIHdlIHdpbGwgY29weSBiYWNrIGJ5dGVzIHRvIHRoZSBzdGFydCBv
ZiB0aGUgYnVmZmVyIAorICAgICAgICAvLyBhcyB3ZSBjb252ZXJ0LgorICAgICAgICBpbnQgYWZ0
ZXJsZW5ndGggPSBxIC0gYWZ0ZXIuZGF0YSgpOworICAgICAgICBjaGFyICpwID0gYWZ0ZXIuZGF0
YSgpICsgYnVmZmVyTGVuZ3RoIC0gYWZ0ZXJsZW5ndGggLSAxOworICAgICAgICBtZW1tb3ZlKHAs
IGFmdGVyLmRhdGEoKSwgYWZ0ZXJsZW5ndGggKyAxKTsgLy8gY29waWVzIHRyYWlsaW5nICdcMCcK
KyAgICAgICAgY2hhciAqcSA9IGFmdGVyLmRhdGEoKTsKKyAgICAgICAgd2hpbGUgKCpwKSB7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAqcDsKKyAgICAgICAgICAgIGlmIChjID4gMHg3
ZikgeworICAgICAgICAgICAgICAgICpxKysgPSAnJSc7CisgICAgICAgICAgICAgICAgKnErKyA9
IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgICAgICpxKysgPSBs
b3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgICpxKysgPSAqcDsKKyAgICAgICAgICAgIHArKzsKKyAgICAgICAgfQorICAgICAg
ICAqcSA9ICdcMCc7CisgICAgICAgIHJlc3VsdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0
cmluZzphZnRlci5kYXRhKCldOworICAgIH0KKyAgICAKKyAgICBpZiAobWF5TmVlZEhvc3ROYW1l
RGVjb2RpbmcpIHsKKyAgICAgICAgLy8gRklYTUU6IElzIGl0IGdvb2QgdG8gaWdub3JlIHRoZSBm
YWlsdXJlIG9mIG1hcEhvc3ROYW1lcyBhbmQga2VlcCByZXN1bHQgaW50YWN0PworICAgICAgICBh
dXRvIG1hcHBlZFJlc3VsdCA9IG1hcEhvc3ROYW1lcyhyZXN1bHQuZ2V0KCksIE5PKTsKKyAgICAg
ICAgaWYgKG1hcHBlZFJlc3VsdCkKKyAgICAgICAgICAgIHJlc3VsdCA9IG1hcHBlZFJlc3VsdDsK
KyAgICB9CisKKyAgICByZXN1bHQgPSBbcmVzdWx0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9u
aWNhbE1hcHBpbmddOworICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShjcmVhdGVTdHJpbmdX
aXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3VsdC5n
ZXQoKSkpOworfQorCitCT09MIGlzVXNlclZpc2libGVVUkwoTlNTdHJpbmcgKnN0cmluZykKK3sK
KyAgICBCT09MIHZhbGlkID0gWUVTOworICAgIC8vIGdldCBidWZmZXIKKyAgICAKKyAgICBjaGFy
IHN0YXRpY19idWZmZXJbMTAyNF07CisgICAgY29uc3QgY2hhciAqcDsKKyAgICBCT09MIHN1Y2Nl
c3MgPSBDRlN0cmluZ0dldENTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZywgc3Rh
dGljX2J1ZmZlciwgMTAyMywga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICBwID0gc3VjY2Vz
cyA/IHN0YXRpY19idWZmZXIgOiBbc3RyaW5nIFVURjhTdHJpbmddOworICAgIAorICAgIGludCBs
ZW5ndGggPSBzdHJsZW4ocCk7CisgICAgCisgICAgLy8gY2hlY2sgZm9yIGNoYXJhY3RlcnMgPD0g
MHgyMCBvciA+PTB4N2YsICUtZXNjYXBlIHNlcXVlbmNlcyBvZiAlN2YsIGFuZCB4bi0tLCB0aGVz
ZQorICAgIC8vIGFyZSB0aGUgdGhpbmdzIHRoYXQgd2lsbCBsZWFkIF93ZWJfdXNlclZpc2libGVT
dHJpbmcgdG8gYWN0dWFsbHkgY2hhbmdlIHRoaW5ncy4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07CisgICAgICAg
IC8vIGVzY2FwZSBjb250cm9sIGNoYXJhY3RlcnMsIHNwYWNlLCBhbmQgZGVsZXRlCisgICAgICAg
IGlmIChjIDw9IDB4MjAgfHwgYyA9PSAweDdmKSB7CisgICAgICAgICAgICB2YWxpZCA9IE5POwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnJScgJiYgKGkgKyAx
IDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3Ro
ICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAyXSkpIHsKKyAgICAgICAgICAgIGF1dG8gdSA9IHRv
QVNDSUlIZXhWYWx1ZShwW2kgKyAxXSwgcFtpICsgMl0pOworICAgICAgICAgICAgaWYgKHUgPiAw
eDdmKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBOTzsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgKz0gMjsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vIENoZWNrIGZvciAieG4tLSIgaW4gYW4gZWZmaWNpZW50LCBub24tY2Fz
ZS1zZW5zaXRpdmUsIHdheS4KKyAgICAgICAgICAgIGlmIChjID09ICctJyAmJiBpID49IDMgJiYg
KHBbaSAtIDNdIHwgMHgyMCkgPT0gJ3gnICYmIChwW2kgLSAyXSB8IDB4MjApID09ICduJyAmJiBw
W2kgLSAxXSA9PSAnLScpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAg
IHJldHVybiB2YWxpZDsKK30KKworTlNSYW5nZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICpz
dHJpbmcpCit7CisgICAgTlNSYW5nZSBjb2xvbiA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjoi
XTsKKyAgICBpZiAoY29sb24ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCAmJiBjb2xvbi5sb2NhdGlv
biA+IDApIHsKKyAgICAgICAgTlNSYW5nZSBzY2hlbWUgPSB7MCwgY29sb24ubG9jYXRpb259Owor
ICAgICAgICAvKgorICAgICAgICAgVGhpcyBzdHVmZiBpcyB2ZXJ5IGV4cGVuc2l2ZS4gIDEwLTE1
IG1zZWMgb24gYSAyeDEuMkdIei4gIElmIG5vdCBjYWNoZWQgaXQgc3dhbXBzCisgICAgICAgICBl
dmVyeXRoaW5nIGVsc2Ugd2hlbiBhZGRpbmcgaXRlbXMgdG8gdGhlIGF1dG9jb21wbGV0ZSBEQi4g
IE1ha2VzIG1lIHdvbmRlciBpZiB3ZQorICAgICAgICAgZXZlbiBuZWVkIHRvIGVuZm9yY2UgdGhl
IGNoYXJhY3RlciBzZXQgaGVyZS4KKyAgICAgICAgICovCisgICAgICAgIE5TU3RyaW5nICphY2Nl
cHRhYmxlQ2hhcmFjdGVycyA9IEAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLi0iOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gSW52ZXJzZVNjaGVtZUNoYXJhY3RlclNl
dChbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNj
ZXB0YWJsZUNoYXJhY3RlcnNdIGludmVydGVkU2V0XSk7CisgICAgICAgIE5TUmFuZ2UgaWxsZWdh
bHMgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OkludmVyc2VTY2hlbWVDaGFyYWN0
ZXJTZXQuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnNjaGVtZV07CisgICAgICAgIGlmIChp
bGxlZ2Fscy5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIHNjaGVt
ZTsKKyAgICB9CisgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOworfQorCitC
T09MIGxvb2tzTGlrZUFic29sdXRlVVJMKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgLy8gVHJp
bSB3aGl0ZXNwYWNlIGJlY2F1c2UgX3dlYl9VUkxXaXRoU3RyaW5nIGFsbG93cyB3aGl0ZXNwYWNl
LgorICAgIHJldHVybiByYW5nZU9mVVJMU2NoZW1lKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNl
KHN0cmluZykuZ2V0KCkpLmxvY2F0aW9uICE9IE5TTm90Rm91bmQ7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1t
IGIvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ1MWZhZGJi
NjhkNjQ3NmQwY2E0NjA2ODRhOTcyYjhjNTM1MGRhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0IDx3dGYvVVJMLmg+CisKKyNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCisjaW1w
b3J0ICJOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+Cisj
aW1wb3J0IDx3dGYvVVJMUGFyc2VyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisK
K0BpbnRlcmZhY2UgTlNTdHJpbmcgKFdURk5TVVJMRXh0cmFzKQorLSAoQk9PTClfd2ViX2xvb2tz
TGlrZUlQQWRkcmVzczsKK0BlbmQKKworbmFtZXNwYWNlIFdURiB7CisKK1VSTDo6VVJMKE5TVVJM
ICp1cmwpCit7CisgICAgaWYgKCF1cmwpIHsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUg
YmFzZSBVUkwgaGVyZT8KKyAgICBDU3RyaW5nIHVybEJ5dGVzOworICAgIFdURjo6Z2V0VVJMQnl0
ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXVybCwgdXJsQnl0ZXMpOworICAgIFVSTFBhcnNlciBwYXJz
ZXIodXJsQnl0ZXMuZGF0YSgpKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKwor
VVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29uc3QKK3sKKyAgICAvLyBDcmVhdGluZyBhIHRvbGwt
ZnJlZSBicmlkZ2VkIENGVVJMIGJlY2F1c2UgY3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdv
dWxkIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5nLgorICAgIC8vIFdlJ2xsIG5lZWQg
ZmlkZWxpdHkgd2hlbiByb3VuZC10cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgorICAgIHJl
dHVybiBjcmVhdGVDRlVSTCgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKK30KKworUmV0YWluUHRy
PENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAg
ICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwg
dG8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVl
cy4KKyAgICAgICAgcmV0dXJuIChfX2JyaWRnZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOkAiIl0pLmdldCgpOworICAgIH0KKworICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gY2ZVUkw7CisKKyAgICAvLyBGYXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMg
OC1iaXQgdG8gYXZvaWQgY29weWluZyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KKyAgICBpZiAo
TElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpKSkKKyAgICAgICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNG
VVJMRnJvbUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtX3N0cmluZy5jaGFy
YWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVuZ3RoKCkpOworICAgIGVsc2UgeworICAgICAgICAvLyBT
bG93ZXIgcGF0aC4KKyAgICAgICAgV1RGOjpVUkxDaGFyQnVmZmVyIGJ1ZmZlcjsKKyAgICAgICAg
Y29weVRvQnVmZmVyKGJ1ZmZlcik7CisgICAgICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZy
b21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgfQorCisgICAgaWYg
KHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhV1RGOjppc0NGVVJMU2FtZU9yaWdpbihjZlVS
TC5nZXQoKSwgKnRoaXMpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBj
ZlVSTDsKK30KKworYm9vbCBVUkw6Omhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCit7
CisgICAgcmV0dXJuIFtob3N0LmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSBf
d2ViX2xvb2tzTGlrZUlQQWRkcmVzc107Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0
clNvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYjRmYjM0Zjg2ZjI0YTQ2MjFlMGY5MDY3MDY3NzVmOTQ4MTg1
OTk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9HVW5pcXVlUHRyU291
cC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBT
LkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworI2lmIFVTRShTT1VQKQorCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9H
UFRSX0RFTEVURVIoU291cFVSSSwgc291cF91cmlfZnJlZSkKK1dURl9ERUZJTkVfR1BUUl9ERUxF
VEVSKFNvdXBDb29raWUsIHNvdXBfY29va2llX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRF
UihTb3VwTWVzc2FnZUhlYWRlcnMsIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2ZyZWUpCitXVEZfREVG
SU5FX0dQVFJfREVMRVRFUihTb3VwQnVmZmVyLCBzb3VwX2J1ZmZlcl9mcmVlKQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVTRShTT1VQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9VUkxTb3VwLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTVkYmM3ZTE3YjgzODkxOWM1MGNmZmZiZDZiNDVjZjhjYjNiODlhZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAKQEAgLTAsMCAr
MSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBVU0UoU09VUCkKKworI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworVVJMOjpVUkwoU291cFVSSSogc291cFVS
SSkKK3sKKyAgICBpZiAoIXNvdXBVUkkpIHsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBf
dXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOworICAgIFVSTFBhcnNlciBwYXJzZXIoU3Ry
aW5nOjpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0KCkpKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1
bHQoKTsKKworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBN
b3RpdmF0ZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTU2
LiBsaWJzb3VwCisgICAgLy8gZG9lcyBub3QgYWRkIHRoZSBwYXNzd29yZCB0byB0aGUgVVJMIHdo
ZW4gY2FsbGluZworICAgIC8vIHNvdXBfdXJpX3RvX3N0cmluZywgYW5kIHRodXMgdGhlIHJlcXVl
c3RzIGFyZSBub3QgcHJvcGVybHkKKyAgICAvLyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0
cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMKKyAgICAvLyBub3Qgd2FudCB0
byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRpb25zCisgICAg
aWYgKHNvdXBVUkktPnBhc3N3b3JkKQorICAgICAgICBzZXRQYXNzKFN0cmluZzo6ZnJvbVVURjgo
c291cFVSSS0+cGFzc3dvcmQpKTsKK30KKworR1VuaXF1ZVB0cjxTb3VwVVJJPiBVUkw6OmNyZWF0
ZVNvdXBVUkkoKSBjb25zdAoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHJldHVybiBHVW5pcXVlUHRyPFNvdXBVUkk+KHNvdXBfdXJpX25ldyhz
dHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Cit9CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3Mo
U3RyaW5nVmlldyBob3N0KQoreworICAgIHJldHVybiAhaG9zdC5pc0VtcHR5KCkgJiYgZ19ob3N0
bmFtZV9pc19pcF9hZGRyZXNzKGhvc3QudXRmOCgpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvbi5oCmluZGV4IGQwYjkwMzhmODI2NDdiZTBhMTVmNWNlYTRmODAxOTYx
ZjY3MmYyOWIuLjdlYzM5ODJlMTEwYjdhZjczMTQ5YWU5YWVjNTUxYjBkMDM2YjE0OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaApA
QCAtNDgsNyArNDgsNiBAQCBjbGFzcyBQYXltZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBj
bGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJM
OwogZW51bSBjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czsKIHN0cnVjdCBBcHBsZVBh
eUxpbmVJdGVtOwogc3RydWN0IEFwcGxlUGF5UGF5bWVudFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVN
ZXJjaGFudEV2ZW50LmgKaW5kZXggYjA3NTljZGExOGMwM2M3M2RiMGJkMWRjZjg0NTMxYjI0YjUy
ZDA5ZC4uM2FhMjJmNWI4MmQ2YzJjMTgwZWNlODE0NTg1ZDg1MTA4OTRiMWI0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hh
bnRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlW
YWxpZGF0ZU1lcmNoYW50RXZlbnQuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShBUFBM
RV9QQVkpCiAKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggYmQ1
NTM0YzJkZjkxMjU4N2RkMjc3ODkyMjk4YmQ3ZDQxZTdhOWFmYy4uZTM3MzM1N2NjMDdmZWE1OWRl
OTdlYzU1ZDVjODg5M2QwNjM4NjRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtMzEsNyArMzEsNyBAQAog
I2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmgiCiAjaW5jbHVkZSAiUGF5bWVu
dENvb3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKLSNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yLmgKaW5kZXggZDQ2NTJjZmVkNTBmZmMxZDJmNmI2MmI1ZTRiZGQwZjkyODYzZDQ1Ni4u
YTU0NzE1NDk3M2MwMWY4YmVhNWQxZGNhMTIxNWQ5ZDQ0OWUwMDE0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCkBAIC0z
OCw3ICszOCw2IEBAIGNsYXNzIFBheW1lbnRDb250YWN0OwogY2xhc3MgUGF5bWVudE1lcmNoYW50
U2Vzc2lvbjsKIGNsYXNzIFBheW1lbnRNZXRob2Q7CiBjbGFzcyBQYXltZW50U2Vzc2lvbjsKLWNs
YXNzIFVSTDsKIGVudW0gY2xhc3MgUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CiBzdHJ1Y3Qg
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ7CiBzdHJ1Y3QgUGF5bWVudE1ldGhvZFVwZGF0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRD
b29yZGluYXRvckNsaWVudC5oCmluZGV4IGU5MTVjYTE2ZGI0MDI0MzhkOGJkODAwMTlkYWRlOWIz
Njc3MDNkMTcuLmU3N2YyY2E5OGZhZmM1NTM0ZTRmNjBlOGNmOTA0MDYwZDI4YjEzZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3JDbGllbnQuaApAQCAtMzQsNyArMzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uOwotY2xhc3MgVVJMOwogc3RydWN0IFBheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0Owogc3RydWN0IFBheW1lbnRNZXRob2RVcGRhdGU7CiBzdHJ1
Y3QgU2hpcHBpbmdDb250YWN0VXBkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50U2Vzc2lvbi5oCmluZGV4IDBhMzUwN2UyNjBlNzQ2N2UwYWMwZDMxYzk0
OTM3NTRhMzNmZjJhNjQuLjhmN2E0YjY1MGYwYjkyZjgxNWY5YjVkNWNjZTE3OWE3ZDUyOTEwNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9u
LmgKQEAgLTM3LDcgKzM3LDYgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBQYXltZW50OwogY2xh
c3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogCiBj
bGFzcyBQYXltZW50U2Vzc2lvbiA6IHB1YmxpYyB2aXJ0dWFsIFBheW1lbnRTZXNzaW9uQmFzZSB7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCA5OThiNzg0NjBj
Yzg3ZWQzOGU5MTg2ZjA4ZmQyOTk3YzYzZjg5ZDcyLi5iMmYxYjQ5ZjNlYjNhM2VlODBhNGZiMzI5
ZjY5ZThiZjhlNTFhOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxp
Y2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTI3
LDkgKzI3LDkgQEAKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKIAotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3Bw
CmluZGV4IGU2ODk2ZTc4NzhiMmMyYjEwZjY2MTNjZGI5ODVkMGI2ZTI1OGQ5NGEuLjQ4OTc2ZDJh
MzUyZTIwZGU0MTRhNmJmOThlNTY2ZWU0NzA0NzVlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcApAQCAtMzIsNyArMzIsNyBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJO
YXZpZ2F0b3IuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcAppbmRleCAzOGQ1YTY2MDhiZDVmNGQ0ODg4ODEyNmY5YjU4ZjIwMmQ5NzAyMTNlLi45YTY0
ZWU4Y2IzZmM0MTRhNDYyNTUxZGJiYjEzODEyYzRjMGNiZjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkpT
RmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA2N2RlMmU1NDYyYmYzZGM2YWI4MGMyNGEz
MThjNDA1NGZjZjkyY2E1Li40MDExYjM3MzhjOTc5YmI5NzhhZGZkY2ZjYmE4NTRjYWU4YzVkZmZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0zMSw3
ICszMSw3IEBACiAjaW5jbHVkZSAiRmV0Y2hCb2R5Q29uc3VtZXIuaCIKICNpbmNsdWRlICJUaHJl
YWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YVNlc3Npb25NZXRhZGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uTWV0YWRhdGEuaAppbmRleCBlMzY0NGE4NzUxOTU5N2Y2NGU1M2YzY2NkYWM3
NDQwMzk3NjAwMjNkLi42ZjNkZmUzNmYwNTM4OTkxNDdjNGVhZGVmY2UwMmQ0MzJmOTk5M2Y0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Np
b25NZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbk1ldGFkYXRhLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCmluZGV4IDJlODJjMzI2MTg2
NWQ3YTk4ODhhNWMyYzZiODU3NTRiNDJjYmE0NTkuLjk4YzY2M2I2ZmM2ZGJkYTI5MzZhN2RhMjY4
OTZkZjAwMzIzM2JkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcApAQCAtMzUsOSArMzUsOSBAQAog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2VSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKaW5kZXggMmI4OTRlMGNhNDNiZTQxYjViMTBmNGQxOTg5
MTM0MzQ4NzkyODMwNi4uMDMzNjc0ZjI2ZDM0NTg1OWE0YWExY2RhMTIwZTZkODg0MTU0NmQ4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRp
YVNvdXJjZVJlZ2lzdHJ5LmgKQEAgLTM4LDcgKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBVUkw7CiBjbGFzcyBNZWRpYVNvdXJjZTsKIAogY2xhc3MgTWVkaWFTb3VyY2VS
ZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBVUkxSZWdpc3RyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDdlMjIxNTAyNDA4
ZmJjNDkxZTg3MDY2OTc2ODY3OWViZTAwNDM0NjIuLjhhYzE0NTc5NTBhNzkxODlkM2FjZDJkMDcw
NTY2YTIxODdiY2ZhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiTmV0d29y
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAppbmRleCBkNjlkY2NmODZlMzhh
YTNmNzNjY2E3MTlkZjFiOWViZmZiMmMyMDA4Li42NDE1ZmZhYmE1YzlhODQ4MTM0ZTUyMjMzNGRk
M2E2MDFlYzJiZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1SZWdpc3RyeS5oCmluZGV4IGEyNjdmMTEwMGJlMTdjMmEwYjI5YTIyMWUzYjE2
OWM5Nzc0YWEyMmQuLmY2ZDIzZDJkNzkwZjBkNGYyNzUxMDViYjQwNmIxOWUzY2UwZTQ5M2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1S
ZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1SZWdpc3RyeS5oCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTWVkaWFTdHJlYW07CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7Ci1jbGFzcyBVUkw7
CiAKIGNsYXNzIE1lZGlhU3RyZWFtUmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkg
ewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jj
b250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGll
bnQuaAppbmRleCBiNjJkOWFmYThlYWU1YjRmNmZlMzRiNGM1OGNkYjRmZGNjZDY1YTA2Li40NzA2
NzNhMDllOTVmMDMwZjVlZWFjNDIzOTg2OTZmYTEwNDNlMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRp
bHNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1
dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaApAQCAtMjcsNyArMjcsNyBAQAogCiAj
aWYgRU5BQkxFKE5BVklHQVRPUl9DT05URU5UX1VUSUxTKQogCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggZmYwZGM1NGRhZjFlNTAyMzhhZmEzNWYxMzI4
OWU1YjgzZTJiMmI5Yy4uZmVkYTFhMTNhZWQyMWM0NGJhZDMzODk2MjlhNzI1M2Y5MmIxYzllYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRpcmVjdGlv
bi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCIKICNpbmNsdWRlICJUaW1l
ci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJX
cml0aW5nTW9kZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlv
bkV2ZW50LmgKaW5kZXggYjA5M2QzYTVmZmM5NTY3MTJlYzkxMGQ0Y2ZhMTIyNzFlMjhhOWJhYS4u
MjA3NzljZWRkMjZmNmI5NDcxMTM4NDRmZDk2MWZiZjhiYjAwNjQ1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRW
YWxpZGF0aW9uRXZlbnQuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShQQVlNRU5UX1JF
UVVFU1QpCiAKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKaW5kZXggZTNi
ZDdlNTMyY2YyM2YyNTc2NjY1NGUxMGMzNDVkY2JjYzM0MDg3Mi4uM2QxODgxYzU1N2I3ZDM3Njhk
NDMzYjA4NmUyZjdmNGE3OTlkZDkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaApAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgIlBheW1lbnRNZXRob2RDaGFuZ2VFdmVudC5oIgogI2luY2x1ZGUgIlBheW1lbnRP
cHRpb25zLmgiCiAjaW5jbHVkZSAiUGF5bWVudFJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9QbHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1Bs
dWdpblJlcGxhY2VtZW50LmgKaW5kZXggNmI1NTQyZTA4OTAwN2Q5YTQ5NzA0ZjJmYjNjZjQzOThh
MGZiNGUwYy4uZWZlYWYwMGM5ZTM1OGVkNjgxNTViNThhMTFhZDQ3MjU1NjFlMDI0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgK
QEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJUcmVlUG9z
aXRpb247CiBjbGFzcyBTZXR0aW5nczsKIGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBVUkw7CiAK
IGNsYXNzIFBsdWdpblJlcGxhY2VtZW50IDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luUmVwbGFj
ZW1lbnQ+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCmluZGV4IDc2MGE0ZTcxMTRmNzQ3NTgyMjNhZGQxZmIwZjg1NmQ2ZTg1ZDMw
Y2UuLjRlZjBiNGRkZTAxNzU0ZmQ3YmQ2ODkyMmE0NTVkOTM2N2VjYjg2ZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNzEsNyArNzEs
NiBAQCBjbGFzcyBPc2NpbGxhdG9yTm9kZTsKIGNsYXNzIFBhbm5lck5vZGU7CiBjbGFzcyBQZXJp
b2RpY1dhdmU7CiBjbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlOwotY2xhc3MgVVJMOwogY2xhc3Mg
V2F2ZVNoYXBlck5vZGU7CiAKIC8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2Yg
dGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGNhNDA2YWY0YzZmNTIyNTFmOWY2Y2Nh
OGM0NWQ0NDNhYmI4ZDk4NTcuLmE4NWRmZDc3NDRjZDQ3OWFiMTIzZDMzMjcxMWVlOGYyM2QxMDFk
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNz
IEFycmF5QnVmZmVyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwotY2xhc3Mg
VVJMOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNvY2tldFByb3ZpZGVy
OwogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCA5MDEyMWY3MGQzMDg4MGMyYTAyZjk2NTgw
YWUwNTcyOGZiOGJkZGM4Li41MDQzYzQ5NDIzNWQwNzA4NTUwNmFhYmRjZTNiYzRkMGI4NGJiYzFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBA
IC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Pci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cAppbmRleCA3NDI3YmI1NTcwNzVlZGE4OGZiZDY2MTIxZTdkOTBhM2YxOWNkZDM0Li4xYjE5ZWRh
YjRjOWE2ZjM4MTJmNzEzMGI3NmE2Yjk1MzdjNWM3NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAt
NDQsNyArNDQsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXZWJTb2NrZXQu
aCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCmluZGV4IGNmMmJkN2FjMGFmMWIyNzRk
OTgzYmQ2YmZjZjI0ZTM4MWQxMjIzZTcuLmU5NmY4NjAyYTg3YTkzNTI2OTY5Njc2NWM4MGU3MzAy
Y2Y3MzdlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgogI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmgKaW5kZXggODEyZjhhMDJkMzBhMTY4M2NlOTQ2ODRmODcxMDIwZTZiYmI5OWQx
OC4uMzg5NWU0NDk2NzUwN2M1ZWU5OWNjMjJmNDNlNzIxZjI5MTM3NWZmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTM5LDcgKzM5LDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogY2xhc3MgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOwogY2xhc3Mg
V29ya2VyR2xvYmFsU2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDk0MzM5ODQ3
NTdlMWI0YzkxNDVlODBiN2QyMjcxZjllMjRhMjc0MGIuLjA2OGI1YzI2MjNjNDEwMGM5N2U2NzMy
Y2I1MjcxYzMxZDBlZGRjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xODcsNyAr
MTg3LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8v
bWFjL0ZGVEZyYW1lTWFjLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25N
YW5hZ2VyTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKICAgICBwbGF0
Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0Yu
Y3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xOTUsNyArMTk0LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nl
c3NpYmlsaXR5U29mdExpbmsuY3BwCiAgICAgcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNw
cAogICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1VS
TENGLmNwcAogCiAgICAgcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
Q29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKQEAgLTM5
OSw3ICszOTcsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9t
YWMvU3VkZGVuVGVybWluYXRpb24ubW0KICAgICBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KICAg
ICBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW0KLSAgICBwbGF0Zm9ybS9tYWMvVVJMTWFjLm1t
CiAgICAgcGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9W
YWxpZGF0aW9uQnViYmxlTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVu
UGxhY2Vob2xkZXJWaWV3Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdp
bi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGEyNGE5MTk1
MzYwYTNjNWI0NjBkNjI4ZTJmODQ0ZWQwMTkxOWZkNzIuLjY1ODZiMDI0NjFhNDcyMTdlZjA4ZDVl
YzBiM2NkYzMxNjY2MTEzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2lu
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNTAsMTIg
KzI1MCwxMCBAQCBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgICAgICBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAogCi0gICAgICAg
IHBsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lz
dGVtQ0YuY3BwCiAgICAgICAgIHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwCi0gICAgICAgIHBsYXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgICAg
IHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IGZjMjg4YjAxMzkxZDc1MmIyNGRjOWZhZTcxZWZmMGYwZWI4YmU1YWYuLjYyMTkxYzAyZTM1Mzcy
ZDc2YjMxN2YyNzRmNWE4MzVlNjczMDY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNTM1LDggKzE1
MzUsNiBAQCBwbGF0Zm9ybS9UaGVtZS5jcHAKIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3Bw
CiBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCiBwbGF0Zm9ybS9UaW1lci5jcHAKLXBsYXRmb3Jt
L1VSTC5jcHAKLXBsYXRmb3JtL1VSTFBhcnNlci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5j
cHAKIHBsYXRmb3JtL1dlYkNvcmVDcm9zc1RocmVhZENvcGllci5jcHAKIHBsYXRmb3JtL1dlYkdM
U3RhdGVUcmFja2VyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTgxMzZhOTM4YzRl
ODg5MDJhZDU0YWZmMWQxMTUyOGZmYWM2MTNhOC4uZmI5ZDkyMDE0NjJhMmYxZWI0NmNjMGJhYTUx
YjNhNTY4NjgwYjQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xNzgsNyArMTc4LDYg
QEAgcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlv
L21hYy9DQVJpbmdCdWZmZXIuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3Bw
CiAKLXBsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcAogcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNG
LmNwcAogcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAKQEAgLTE4Niw3ICsxODUsNiBAQCBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hh
cmVkVGltZXJDRi5jcHAKIHBsYXRmb3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNw
cAogcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogcGxhdGZvcm0vY2YvU2hhcmVkQnVm
ZmVyQ0YuY3BwCi1wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKIAogcGxhdGZvcm0vY29jb2EvQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9D
b3JlVmlkZW9Tb2Z0TGluay5jcHAKQEAgLTQ1OCw3ICs0NTYsNiBAQCBwbGF0Zm9ybS9tYWMvU3Ry
aW5nVXRpbGl0aWVzLm1tCiBwbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0KIHBsYXRm
b3JtL21hYy9UaGVtZU1hYy5tbQogcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tIEBuby11bmlm
eQotcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQogcGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5t
bQogcGxhdGZvcm0vbWFjL1VzZXJBZ2VudE1hYy5tbQogcGxhdGZvcm0vbWFjL1ZhbGlkYXRpb25C
dWJibGVNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkMzQ0NGVlZTY1NjM5ZjVlNjc5ZDk2ODczMGNiMzkzOTM4ZGRjMGEw
Li45YTg4MzJiNWJlNDI4NmVlNjZkZjRhZTkxNDBhNzJlMzQ0ZDY3OWNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQxLDcg
KzE4NDEsNiBAQAogCQk1QzQzMDRCMDE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVy
ZUxPRC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzQzMDRBRDE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgKi87IH07
CiAJCTVDNDMwNEIxMTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRTE5MUFD
OTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzQzMDRCNjE5
MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRCNDE5MUFFRjQ2MDAwRTJCQzAg
LyogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmggKi87IH07Ci0JCTVDNkU2NTQzMUQ1Q0VGQkYwMEY3
ODYyRSAvKiBVUkxQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDNkU2NTQwMUQ1Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYx
RjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQ
cm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTVDOEM2MDA5MjEyNzZCODcwMDgyRjg4RiAvKiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hl
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEM2
MDA3MjEyNzZCMEYwMDgyRjg4RiAvKiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0ExREVDNjFG
NzFGMUM3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRU
UEhlYWRlckZpZWxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE5MTcsNyArMTkxNiw2IEBACiAJCTY1NkQzNzQ4MEFEQkE1REUwMEE0NTU0RCAv
KiBTdWJyZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjU2RDM3MzAwQURCQTVERTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU3
QUZBRkMyMDA0N0EyOTAwNTA5NDY0IC8qIFNwZWN0cmVHYWRnZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1N0FGQUY4MjAwNDc4OTkwMDUwOTQ2NCAv
KiBTcGVjdHJlR2FkZ2V0LmggKi87IH07CiAJCTY1ODQzNjg2MEFFMDFCNzQwMEU1Mzc1MyAvKiBG
cmFtZUxvYWRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTg0MzY4NTBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1OTM5MjM4
MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTlBN0QxMzBCNkRC
NEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OUE3RDEyMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0
dXRlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTY1OUREQzgzMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTlEREM4MTA5RTE5OEJBMDAxQkYz
QzYgLyogSlNEb2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTY1QTIxNDY4MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUEyMTQ2NzA5N0EzMjkxMDBC
OTA1MEEgLyogUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0zODA1LDcgKzM4MDMsNiBAQAogCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAg
LyogUE9ESW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQkI4QUI1MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQkI4QUJBMTNGMUFG
QjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRl
cnZhbFRyZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQ0JCOEFCQjEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNzEzRjFBRkIw
MDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhh
c2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQy
MUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpT
V2luZG93UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNDMEU4NzYxQkZFNzBF
OTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDMEU4NzQxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQ
aWN0dXJlRWxlbWVudC5oICovOyB9OwogCQlCQ0M1QkUwMTBDMEU5MzExMDAxMUMyREIgLyogSlND
U1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0M1QkRGRjBDMEU5MzExMDAxMUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmggKi87IH07
CkBAIC00NjY5LDcgKzQ2NjYsNiBAQAogCQlFMUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxQTE0NzA3MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxn
b3JpdGhtcy5oICovOyB9OwogCQlFMUEzMTYyRDEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRy
aWJ1dGVkU3RyaW5nRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUEzMTYyQjEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3Ry
aW5nRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTFBNjQzRjIwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0Yx
MEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTFBOEU1NjcxNzU1MkIyQTAw
NzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUE4RTU2NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUFERUNC
RjBFNzZBQ0YxMDA0QTFBNUUgLyogTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQURFQ0JEMEU3NkFDRjEwMDRBMUE1RSAvKiBNZXNz
YWdlUG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUxQURFQ0NFMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBREVDQ0MwRTc2QUQ4QjAw
NEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmggKi87IH07CiAJCUUxQURFRERBMEU3NkJEOTMwMDRB
MUE1RSAvKiBKU01lc3NhZ2VQb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUFERUREODBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5o
ICovOyB9OwpAQCAtNjExNiw3ICs2MTEyLDYgQEAKIAkJMUE5MjdGQ0YxNDE2QTE1QjAwM0E4M0M4
IC8qIG5wYXBpLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wYXBpLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOTI3RkQwMTQxNkExNUIwMDNBODNDOCAvKiBu
cHJ1bnRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbnBydW50aW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOTI3RkQxMTQxNkExNUIwMDNBODNDOCAv
KiBucHR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wdHlwZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8q
IFVSTENGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxDRi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTg0RjAyMTQzQkE3QkQwMDUxRDE1
MyAvKiBTY3JvbGxDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU2Nyb2xsQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFBODRGMDMxNDNCQTdCRDAwNTFEMTUzIC8qIFNjcm9sbENvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQ29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUFBRERBMTE0REI0MDlGMDBBRjY0QjMgLyogU2Nyb2xsaW5n
VHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdU
cmVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg3NDAsOCArODczNSw2IEBA
CiAJCTVDNjY4RTY0MUU3QzZDMzUwMEQzMkIzQiAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRs
ZUltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzY4OEFBMDFEMzgwNTA5
MDAwQjU0RkEgLyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzY4OEFBMjFEMzgxMjZGMDAwQjU0RkEgLyog
U29ja2V0UHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U29ja2V0UHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzZFNjUz
RjFENUNFREM5MDBGNzg2MkUgLyogVVJMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFVSTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTVDNkU2NTQwMUQ1Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRQcm92aWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzhDNjAwNzIxMjc2QjBGMDA4MkY4OEYgLyogU2hvdWxkU2tp
cFNhZmVCcm93c2luZ0NoZWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNo
b3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1Qzk3QTMzNjFGNUY3QTY1MDAxMDUyMDcgLyogUmVjdEVkZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3RFZGdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODg5NSw4ICs4ODg4LDYgQEAKIAkJNjU3QUZBRkEyMDA0Nzg5QTAwNTA5NDY0IC8qIFNw
ZWN0cmVHYWRnZXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNwZWN0cmVHYWRnZXQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTdBRkFGQjIwMDQ3ODlBMDA1MDk0NjQg
LyogU3BlY3RyZUdhZGdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTcGVjdHJlR2FkZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NDM2
ODUwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBVUkxNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVJMTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTlBN0QxMjBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1YnN0aXR1dGVEYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUREQzgwMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0Rv
Y3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvY3Vt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTA3LDcgKzEyODk4LDYg
QEAKIAkJQkNCQjhBQjUxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPREludGVydmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDQkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9ESW50ZXJ2YWxUcmVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkI4QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQ
T0RSZWRCbGFja1RyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9EUmVk
QmxhY2tUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQkQyMUFBMEU0MTdB
RDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVSTEhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCRkI1M0EwRENEMjlD
RjAwMTlCM0U1IC8qIEpTV2luZG93UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNXaW5kb3dQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNDMEU4NzMxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MUGljdHVy
ZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyNTIsOCArMTQy
NDIsNiBAQAogCQlFMUE1Rjk5QTBFN0VBQTI1MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VD
aGFubmVsQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRjEw
RUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMUE2NDNGQzBFQzA5N0EwMDA3Nzk2NjggLyogV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RTFBOEU1NjQxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENGVVJMRXh0cmFzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRTFBOEU1NjUxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENGVVJMRXh0cmFzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUE4MTRFOUUyN0QwMDQ0OUUxMyAvKiBGaWxlTGlz
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUFCMUVCNzE0RTlFMzU4MDA0NDlFMTMgLyogRmlsZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRmlsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUJCMTRFOUUz
N0EwMDQ0OUUxMyAvKiBGaWxlRXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVFcnJvci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjIzNCw4ICsxNjIyMiw2IEBACiAJCTFBRTQyRjY3MEFB
NEI4Q0IwMEM4NjEyRCAvKiBjZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJRTFBOEU1NjQxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCAq
LywKLQkJCQlFMUE4RTU2NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLywKIAkJ
CQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQk1
MTdBNjNCRjFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWREZWNvZGVyQ0YuY3BwICovLAogCQkJCTUx
N0E2M0MwMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5oICovLApAQCAtMTYyNDcs
NyArMTYyMzMsNiBAQAogCQkJCTJENzZCQjgzMTk0NTZGODEwMENGRDI5QSAvKiBSdW5Mb29wT2Jz
ZXJ2ZXIuY3BwICovLAogCQkJCTJENzZCQjgwMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2Jz
ZXJ2ZXIuaCAqLywKIAkJCQk1MTJERDhFMjBEOTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVy
Q0YuY3BwICovLAotCQkJCTFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8s
CiAJCQkpOwogCQkJcGF0aCA9IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0
Njk5LDExICsyNDY4NCw2IEBACiAJCQkJMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVh
ZFRpbWVycy5oICovLAogCQkJCTkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAg
Ki8sCiAJCQkJOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8sCi0JCQkJNjU5
MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi8sCi0JCQkJNjU5MzkyMzYwOUFFNDM0
NjAwMkM1MzFGIC8qIFVSTC5oICovLAotCQkJCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBV
UkxIYXNoLmggKi8sCi0JCQkJNUM2RTY1M0YxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5j
cHAgKi8sCi0JCQkJNUM2RTY1NDAxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5oICovLAog
CQkJCTg2ODE2MEQxMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuY3BwICovLAogCQkJ
CTg2ODE2MEQyMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuaCAqLywKIAkJCQlBM0FG
OUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNlckFnZW50LmggKi8sCkBAIC0yNzQ3Niw3ICsyNzQ1
Niw2IEBACiAJCQkJQ0QzMTg2MjMxOTlGMUUyQTAwMzBBMEY3IC8qIENETVByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JF
OCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
RkE5MDRDQTE3OEU2MUY1MDA0QzhBMkQgLyogQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVhZGVycyAq
LywKLQkJCQlFMUE4RTU2NzE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZFMzZGRDE1MTZDNzgyNjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzY5REQxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5n
ZVZlcnNpb25XcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNUZGRjEyQjAyNjc2MDBD
MUEzNTkgLyogQ2hhbm5lbE1lcmdlck5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzA5MTYsMTEg
KzMwODk1LDggQEAKIAkJCQlFNEFGQ0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRDA4NkZFOTgwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0Nv
bW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMTc2MkUwMTc2Njg2RDkwMEQ4MzZBOCAvKiBV
cFNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAv
KiBVUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2NzcyNjA1MUE1REY2RjIwMDNDMjRERCAvKiBV
UkxGaWx0ZXJQYXJzZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDQkQyMUFCMEU0MTdBRDQwMEEw
NzBGMiAvKiBVUkxIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RERTEyNTFGMTJEMDAz
RUYyNjkgLyogVVJMSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1QzZFNjU0MzFENUNF
RkJGMDBGNzg2MkUgLyogVVJMUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0MyODlERjFB
QTBGRTVEMDA5QTlDRTMgLyogVVJMUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQz
N0EyMUQ1N0IzRkUwMEFCODVFQSAvKiBVUkxVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcy
NzYzQkYxNjY4OUJGQjAwMkZDQUNCIC8qIFVzZXJBY3Rpb25FbGVtZW50U2V0LmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyLmgKaW5kZXggZjNlMzQ2YmVhN2UxOGJlZDJiODk5MDY3NGI2ZTIyZmM0YTAy
NWNjMi4uNjJjZDU0YTg0YWI0YTVmMDJmYWM3YjcyNWY2MGQ3ZThhZDEyYzJjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVy
LmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVy
czsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyPiwgcHJpdmF0ZSBDYWNo
ZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmgKaW5kZXggNTIyYjJmZmMwNDMyYzE4OTRhNDVjMDJi
Njk1OWU5ZTYwYTg0MzU2ZS4uZDUzOTFjNjk3ZDdjZjRmNmY1ZDQwNzljYTI3MmVmNzdlYTljYWJh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0
Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNo
ZXIuaApAQCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hl
ZFNjcmlwdDsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRTY3Jp
cHRGZXRjaGVyIDogcHVibGljIEpTQzo6U2NyaXB0RmV0Y2hlciB7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDg4Njlk
YjFmOWEzMmRkYzNkMjA1YzhmZjg1ZDIyOTQwMTlkMjliMzEuLmQ2Yzc5Y2QyMGFkNTcxMjhhZDdl
Njc5NmI1ZTFmNjQxNjFkNDFjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01ODksNyArNTg5LDcgQEAgSlNWYWx1ZSBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIEV4Y2UKIAogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJM
KGNvbnN0IFVSTCYgdXJsLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hv
dWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKQogewotICAgIGlmICghcHJvdG9jb2xJ
c0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJs
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSB8fCAh
bV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2Ny
aXB0VVJMcyhtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLCBldmVudEhhbmRsZXJQb3NpdGlvbigp
Lm1fbGluZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmgKaW5kZXggZjdjMDgyNGUwNmNjNzE0NjljMDcwZDY4OGU0MjY4MjRjOWMzYzRmMC4uNmU5ZGRj
YTA4ZGUwZjY4MThhMDc2NzViYWE2ZjRhZTRkZWVlYmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNjAsNyArNjAsNiBAQCBjbGFzcyBM
b2FkYWJsZU1vZHVsZVNjcmlwdDsKIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNz
IFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIGNs
YXNzIFdpZGdldDsKIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCmluZGV4IDkxZmY5OWMxNTBjZmJj
OGZiNmVhNzBmNWY1MDQyYzdhYTFlNDM0NGIuLmE2MDY2ZjRjZTM5OTk5NmM2NTRkYjYwM2MwYTQ3
MjRkZDA4NDAzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1v
ZHVsZUxvYWRlci5oCkBAIC0yNywxMCArMjcsMTAgQEAKIAogI2luY2x1ZGUgIkNhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVu
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VD
b2RlLmgKaW5kZXggNTZlZTY5MGRlODQxNTlhNTdjNDI4YTkwNzM5YjIwNTZmZmRkYmZkNi4uYjdk
N2ViOTNjYmFjYjc0YTgxYzAwN2U1ZWYwOTgxMjI1YmM5YTk3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaApAQCAtMzQsMTAgKzM0LDEwIEBACiAj
aW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5o
IgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1NvdXJjZVByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBkMTFiNDJlNmU3ZTc1NDcwNDI3NDMzODEz
YzM1OThjNDAwMGU4OTRkLi41ZjNlYTczZjk3NjQxMjAwNWZjMzkyN2IwNmUxMWI2YjUxODIzZmM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtNDUzMiw3ICs0NTMyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICBpZiAoTmVlZHNJbXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpICYmICEkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21IZWFwU25hcHNob3R9KSB7CiAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCI8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5o
PiIpOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
Iik7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJVUkwuaCIpOworICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiPHd0Zi9VUkwuaD4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2
b2lkICR7Y2xhc3NOYW1lfTo6aGVhcFNuYXBzaG90KEpTQ2VsbCogY2VsbCwgSGVhcFNuYXBzaG90
QnVpbGRlciYgYnVpbGRlcilcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CkBAIC00NTQ0LDcgKzQ1NDQsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmICgkaW5kZXhlZEdldHRlck9w
ZXJhdGlvbikgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJVUkwuaCJ9ID0gMSBpZiAkaW5kZXhl
ZEdldHRlck9wZXJhdGlvbi0+dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKKyAgICAgICAgJGlt
cGxJbmNsdWRlc3siPHd0Zi9VUkwuaD4ifSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24t
PnR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyI7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9
fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8gb3IgJGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxp
c3QiKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7Ik5vZGUuaCJ9ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAK
aW5kZXggMTE3OTU4NzUzNTFiZjJlMzYzYzkxNGVkZDc0MTM1MWI3NDJhMjlhYy4uNmQ5YmQxN2I2
ZDE1NGUwYmYwYTZmZjhiMDFiMDAxZDMzNTZkZmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAK
QEAgLTI2LDEyICsyNiwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIK
ICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
dW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAK
aW5kZXggNmQ3ZmFhMmI3N2RhZDZhNDczZDA5Y2E2ZmYyOWIzODk2YzVjNGEyYi4uMDc5YzY2NjI5
NGFlZWNhODI3NGFlMmJjZTVlZmU0ZWE3N2IxNmI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKQEAgLTMxLDEzICsz
MSwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcAppbmRleCAwMDhkY2ViYTQyYzZk
NGM2ZmIyYzlhOTEzZmZiNmQzM2ZkMGYxYzgzLi45N2Q0ZjNhYjRmYTE2MDJhZTQ5MGFlODZjOTZl
MGMzODQ3OGJmOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwx
MyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDYyOTE2ZDM2
YmI1NWE2OTMyMjYyZmZhNTVkYzI0Y2U2ZWUzYmU4NjMuLjRkOWYxNDJjNTQ0MzI4MWU1OGZmY2Iw
NTU2NGU1Y2RjYmZjNGQ1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBA
IC0zMywxMiArMzMsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmlu
ZGV4IDY0MDZiZTk5OTAzZDE0YzFiMTcxMDhiOGZhM2QxMjkyZTFmYzkwNzAuLjRhMDI3OTM2Yjlk
Yjk5MzYwYmZkZDc4YTk3YjZiMzVkNjQ2ODZjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cApAQCAtMzQsMTIgKzM0LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCmluZGV4IGFkYWQw
NDliMTRjNGFhNWYyNWFlYWQ5NDYwYjFjMmJmYTYxOTIyNGUuLjM0MmEwZGY4ZDFlMjgzNTI4NGJj
MzZiZTYxZGJiYmYyN2JiMjhkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllci5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
U25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2FsbFRyYWNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2FsbFRyYWNlci5jcHAKaW5kZXggNDYxYzRkOTZhNWYzOTBkYzhmMTkwMDk1Y2I3NDU2
NGE3MTA3YTcyMi4uM2FkOGMyMzc5M2E3YTY5YjgzMzRkZjViZDc1NDMyM2ZkOWFhYjcxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxUcmFjZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsVHJhY2VyLmNwcApAQCAtMzcsMTIgKzM3LDEyIEBACiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
U25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3IuY3BwCmluZGV4IDFkYjBhMzJkNTVlNWNiN2MwZjk0Yzg1ZjJhZmM5Yzk4MmIyZWIwMGQuLjAw
OGI1ZTg5NzY4Njk1ZjI1YzgzM2JhMzQ2MDFkNGJlNTdkMGUyNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMjcsMTIg
KzI3LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQnVpbHRpbnMuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4IGUxZjlmMTcwYTZjZDcyM2RiZTk1NTg0ZGNmNWZh
ZDA0MjQyY2VlODguLmE5NDU0ZTliYTZiOTM4MDRhM2U5MDU5NGU5YTcwZTYwY2Q2YTFiNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiSlNE
T01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAppbmRleCA3NmM0MGZiMDQ1Nzk1MDNlYTViNTJj
NDdlMDQ5NjBkYjIxOTk5ZjNhLi45NWQ3NjcwNDczODhlMzhjMDEwMDQyOTVkOGNmMTM0NTZiZDQ0
YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RE9NSklULmNwcApAQCAtNDEsMTIgKzQxLDEyIEBACiAjaW5jbHVkZSAiSlNF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GcmFtZVRyYWNlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKaW5kZXggODdiMzUzYzViNTk4NTg5ZDU5MDJiNzBlNjRm
MzkwNzIxZmE5MmM5My4uMTI3ZmFhOTY3ZDJhYzUzNmU0NmFiOTNkYmY1NmZkNTI1NGZlMTkxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRCeVNldHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBA
CiAjaW5jbHVkZSAiSlNUZXN0U3ViT2JqLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogI2luY2x1ZGUg
IkpTRE9NQ29udmVydFN0cmluZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNw
cAppbmRleCA1NWRlYThlZWFiMDdmNzUwNWYxYTZiZGZjYzI0MWI2NzFjYmRlYTU2Li40NWRjMTky
NzA0OWJlMjcyMDU1MmE5OGI3ZGYyMzViMGY1YTE1YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggMzA4ZTM0ZjAw
MWFjMmQ4YjM1M2U4MDUxZDhlYzUxYmJhZGQ2ZWUwYS4uNzFlM2JmMzc1NDQyOWVjN2E3Y2NjYTgz
NTUxZDM5Mjg4YWMxZWVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9k
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggMjM4YTQ4Zjdj
NjVmMGQzY2I2ZjFlMDNmN2EyOWU5ZTgyOWViY2JjZi4uZDMyYzA0Y2M1MGVlZGYyNjllZDgwMWQ2
OTEyM2Y2YjUwNTQwNDcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwx
MiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmNwcAppbmRleCAzNDIzOGJjNWQyMTNlYzQ5OWZiZTVhMjU1YzU2MThmMzA2
ODViMmRjLi5hYzJiZWJiMmQ5MzI0YTFhMmMyYWRkNmExNjBkMzdjNzc1YzIzYjhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDcxYjhiZGRmNjhkYWVjYzczZTIyMWNlODNkNjYwNzNjNzM4YjRlYzguLmIyMGI4M2M3YmU5
ZTViMzdiOWNjNTc1ODY2M2UxNzg1NTg1ZTM5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogI2luY2x1ZGUgIlRlc3RHbG9iYWxPYmpl
Y3RCdWlsdGlucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIuY3BwCmluZGV4IDY2MDc4YmQ2Y2I1MTFlMWQyZjQ2ODg4MjU4MmE3ZjkxZmJjMDZiYzku
LjU3ODkyNTM3YmU4NzgzMjRhNWRkZThmNmQxYzU5MmMxYjk2MmI3MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTI3LDEzICsyNywx
MyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCA2MjAzY2MwYjk4NzM5MjQ3N2ExZDli
ZjdiNTcwY2JlMzdjMTBlMzRmLi4zNTVhZGNkOTBhZWZjZjU5NWQwN2VkNTQ2ZTRjYWFiMjBiM2Vl
MjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcApAQCAtMjcsMTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4
IDNmZGM1NjA0MDM1MGUxMzIxZGIyNDY5N2I3MjcyNTU3ZGQxYTkwOGQuLjc2OTY3M2FmYmI0ZTYy
MDFkOTRjMzJhODRjZjI0OWVlNjAzODhmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0yOSwxMyArMjksMTMgQEAKICNpbmNs
dWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVB
cnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDRjNjRjMTllYjg1ODI2MDI5ZjYwYjkyNWIz
MTllMTFhNzAzZDk0ZjcuLjY0YTM3ODk5YTlkOTA3ZmM4NTI5OTg2YjNkMDQ5MWJmNzA3ODY2Zjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlICJUZXN0U3VwcGxlbWVudGFsLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShD
b25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIpIHx8IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCmluZGV4IDU1ZmZkNjdh
MTUwZmUzMmM1ZWRhMzVlMzJkMjQ2ZjY5MzJlOGViYWEuLmNmZjMyZmYwZWIzYWRkYTc3ZmU5NDYz
YTJhNGY5OWNlNjU4YjQ5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bv
aW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKaW5kZXggOTc5YzBmOGNjNWJhZDg0NmYwOTYx
Y2JkYTI2NGUwY2I3NmMxODMwYy4uYWMxZThlN2Y5ZWY4MjkyNzhlMjQ1ODQ1YTY2MjMxYTVmY2Jj
YWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEl0ZXJhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRl
ICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNu
YXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDUwYWRhOGNh
ZjBlZTZkMDJiYWRhODAxYjBiNjk4YWVlOTU5ZDkzNjAuLjAwZmFmOWYwNTczZmQwMDc1ZGU4ZGU1
MTQ5ZThlYjUwODc0Yzk0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcAppbmRleCAzMTg3ZDJkYWYzZDZlNzIxZTdlMDA4NWYyN2NjYjIyZjJi
NDFkYWY5Li4zZmViZDFjZGVjNDBlY2VmYmEzMmJjZmM0MzYzMjQzNTE1Y2U2YmNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcApAQCAtMjgsMTMgKzI4LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcAppbmRleCBkMjcxOTRlODNlNmFjNzc2NTMxYTlkYjc3MzBmMDU3NGMyZGZhZTFk
Li5lMDVkNjU1NDZiZmExMTM2YTA4NjQyOTU4NDcyY2Y1MGNhMmQ1MzUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAKQEAgLTI4LDEzICsyOCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAKaW5kZXggYjFmMzZkNzNlMDM1YWZlNzhlZmU5MzJiMTRkZjkzY2VmZmJhNGRmMi4u
ZTAxNWIxNzhhNzY1MzhmODE5ZTUzYWZlN2M1ZmJiYTc0MTg0Y2EzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggOTI5OGExNzYwYzA4MzUyNjZjNDJlYjY2NDg2NGJmNjQ0ODJjN2Iz
MC4uZjFhODRhOGJhZDlhNWQ2MDVhMTBlNDlkOWM1YzQyNzNkOTkyODdlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAi
SlNET01OYW1lZENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIuY3BwCmluZGV4IDU3ZDY3YzIzNGUyNmI0ZGRkMDk0N2U0MDJlZjg5YjQ1MDJiNmRkNDMu
Ljg2MmI0NTlmYmIyMWQ3ZDEwMTI1Njk1ZjVhMGVhZWZlZDc1NGY2ZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIg
QEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBkMGZjZDJmMmI5MDMyNDk1
YjRiNjU4YmU5YjMxYjdmZTU1YTA4ODZhLi5jMTA1ZjE1ZGJhZjg1ZGJmM2ZlNDQzM2JhN2E4MDU1
YTg0MmZhYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXIuY3BwCmluZGV4IDI1MTQxMGI1ZmFlZjcwMDRjMDExNjY2NmZjZThlMWU5MGEzMzc5YTkuLjY0
MTM5YzhmNmIyMGJiMzRiNjIzNmQ2MjA0MWM3ZTZkMDI5ZDhhNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjksMTIgKzI5LDEy
IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDI3NThjYTEwYTE0MTJjNDEzOWIzMjU4
NGYzY2Y5MmI0MDNhYmIwMTQuLmQ2MTRiY2U0MjFmZTM0YzZmYmU2NzhiZDM3ZTUzMmQ1MmQyNzY0
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyLmNwcApAQCAtMjgsMTMgKzI4LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKaW5kZXggY2EyYmY2MTJhY2JjMmZkNGUw
NDRhMTU5YTc2NDY3ZTVhYWNhYjliMi4uZWE0YzVjZDI3Zjg4NzlkMTc5ZWJiYjkxNTNkZjk5Mzgx
MGJlNzY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcApAQCAt
MjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
Tm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggOTEyMGY0YmU3ZjIxYjc4
ZDJjOWJmZjJkYjE3MjVhOTQ5NzRiZmNkMS4uNmU0MGRlZjNkNDRiYTM3Zjc2NDAwOTkxMjg5YWZj
MTBlMjliN2I1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRs
aW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
U25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXgg
M2JiN2QzYjdlMTJmODI5Yzg4YzM0NGJhYmRiNDg2ODIyZjU3Y2JhMi4uZDM5MjRjYmE2MDg2Y2Y5
MDg0NmJmMTEwODUwOTM0MjAxOGU0MzM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAi
SlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
CmluZGV4IGNiZDVkMzFhNjI2N2VhMWVlMjVkZTA5MTRkNjE0NjhiZmNkOTI1YjUuLmM3YTNjNmE5
ZDU5NWRmZTY3MmNjNzJhYmRkZTAzZWZlNmM4MzI4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4IDlmY2JmNjk3YjYzOWFlMDNkZGMwZWJiMjA4M2Nl
Nzk5ZjczODgzNTMuLjk4ZWMxM2RjMmU3OWVmNWZkYTY0YmY3MmQ3NDNmMWJjZjM5ZTQxNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcu
aCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBiOGE5
ZmFkZTg1YjRlOTg3YzcwNTJhMDI5YTlkZDhmY2RhNmQzMjUwLi5kZGRmZjhjY2Q3MjU5YjM3NDVh
NjZjYzdkYmU2YWFmZmY4MDllNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RP
TU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCmluZGV4IDE3MTQ3NzU1MGIwYzM4NDU5NTYyZjZhNzVjMmU4M2Q4MzE1ZGI5MjQuLmI2
NjFmNTNjZDI4NzA4ODgzYTExYzhjMjA1ZTcwNDgwOTUzMTdmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTMwLDEzICsz
MCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAppbmRleCAxMDNmOTFjMWJhYTJh
YTM5ZjFlMzk5YWFmZWNlNTgxMTkxMTE2ZGVlLi5jMzVmZjg5NmM0OGQ4YmIyODc4MjNiZGYwYTQ2
MDdhMWIzZGE4NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucy5jcHAKaW5kZXggZmMxMjJhMmUyYmJmODdiYTE0YjE2ZjcwNzk5ZTZjMjgw
ZjFlNGM0ZC4uOWYxMGQ2NGVlNWEwZDEzMTliOGNjZjg5NGRhOTBjOGFjMThhMTg4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
LmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNu
YXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllcy5jcHAKaW5kZXggNDgwN2IzNjU1MzMxOGUwNDJhOWI2N2I0NDQwODExOWQ2ODRlZDFk
ZS4uYzYwZGNhYjYzNTk1OTdkYjRmODgwZWRmNDA0MGFjODM0MzVhODI5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90
QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCBkZDUxOTMw
NzMzYjZjZGFhNDllMWY2ODU2YjZiNzFmMWUxMTdjYWRlLi40MGI5ODFlMzQ0MTA1N2Q3Y2JiN2Zl
ZTE3MGVlNTNjYjkwMzAxNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01P
cGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmNwcAppbmRleCBkZTk2ZDNiOGNiZjIwMTI4YjM5NjM1ZGIzNmUwNjg0ZTlmODY2
N2M2Li4yYjJkZWQ0YzJjNjg4YWY0NDNmNGE5N2MwZmQ0OWIxMjYwMDA2NWFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUu
Y3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90
QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDBjYTVk
YmRlMGM5NzM0ZTM5ODFlYzExYzFlNzVlNzg4OWFiYjdiYmYuLjlmMjU0YjQ3ZWI5OWVlOTkwZDc1
N2NkMjcyODhlYzhhMGI4OTcxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC03Nyw3ICs3Nyw2IEBACiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQXJyYXlQcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9C
dWlsdGluTmFtZXMuaD4KQEAgLTkxLDYgKzkwLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IGVhZjA5MmFmM2YzYTcx
ZTlkM2M0Y2Y2MDExYmZkOTE5MmFiMjFiNWEuLjFhZGI3MDIxMmY0NTFjY2U4NWIwOGNkYTAzNmZl
NDc4MDg5YzM5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxp
bmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlLmNwcAppbmRleCAwNTgxNDNiYTE0YmI0ZWIyMjQwOWM4ZDI4NDczNzUzZDg0ZjAzZTdm
Li5iMDU1NjY4NTk2YmM2ZjI3YzgyYzcxNmZkMjM0ZTVkODBhYThhNGM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Uu
Y3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9u
cy5oPgpAQCAtMzcsNiArMzYsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IDBkYjc3NGFmMTI1ZjVk
MTg1MGY3OWE2MTcxNDc1ZTEzN2FiN2NkNjEuLmMxYTYzNDMwYWMwZDhhYzEzYmJhNGM0YTc0Mzk0
OTAxOGM3MTFkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTMy
LDEyICszMiwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
SlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNw
cAppbmRleCAyODM2MjQ3M2E3MDlmNTk2NDZiYmViNjA0YmUzZGExMTFhMGE4Y2VkLi5iZWM1N2Q1
NTE3ZDViMDljOGQyMGEwYWRlNDI5N2NmMGFlOGRmY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4
IDhiMGY1MWVkMzE5NDFjODRhZWIyNGEzNzNiZTliMTdjMDdmNzYzZDcuLjdhMjU4OTg2NzE0NjMw
YTMwNTNiYzc0ODFhNWRlMGZlZjFiZDc5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQuY3BwCkBAIC0zNCwxMSArMzQsMTEgQEAKICNpbmNsdWRlICJKU0RPTUds
b2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAppbmRleCBlM2MxY2My
NTlhMWQyNzg3OWEyNjdkOWY0NDU4ZDVkNDg5YTY4NzkyLi43OGQxYzQxYzQyOGMwMWUxZjc1ZjZl
OTFhNjRhZWIzMDVjMGE1MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCkBAIC0z
NiwxMyArMzYsMTMgQEAKICNpbmNsdWRlICJKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhl
cml0YW5jZS5oIgogI2luY2x1ZGUgIkpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0
cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0
SW5oZXJpdGFuY2UuY3BwCmluZGV4IDk2MzY4ZjNlNmY3YmZmYThlMWE3ZWZiZmU3ZjUwNjNmNjQ2
ZGJkYTcuLjEzM2VkYTAyZTY0MDE2M2ZjOWJlNjU0MzQ4MjBmYjkyNWYwNGMwYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNl
LmNwcApAQCAtMjYsMTEgKzI2LDExIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwCmluZGV4IDM3
ZjY1NGRkZmNkN2MxNWI3OGViNjcxYzRhYWM2Nzg1ZDU0MDBiYjcuLmFkNTMxYjIwYjc0YmM2ZDI1
OTU2OTE4MmVhZWZjNTMxMWNmOGUwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0LmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRp
b24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcAppbmRleCA1
ZTg2OTEwYWI1MjA4OGUzMTc3OTM2NDlkNGM2MDcyYWM0ZTcyYjk0Li5hMWFjMmQwMTBlNTFjNDgz
N2MwZjBiNTQ2MjI4MDM0YWQwZGI4NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0RmluYWwuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJK
U0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29u
c3RydWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcAppbmRleCAzNDJlZDFhYTUwYjQ2ODY4YmZiMzkxNjZhZTBmODNkMDhjNjgw
MmE4Li5kZjdkZmI4Zjk2MWQ5NGZlOGUyNGYwMWQyNDFmYjI0ZjZhOTRmYWVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApA
QCAtMzcsMTMgKzM3LDEzIEBACiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAppbmRleCBmZjJj
YWQyY2FmZmM5YWRmMWFmZmE1M2NkZjA5NzdjZmM4M2U4NzE1Li41MjQyYmI4YmFhYzZmYzhjYTE0
MDQwNjBmMTUwYmIxZGQ3YzAxNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKQEAgLTI4
LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNP
cGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAppbmRleCA4OWVkZmI0ZDU0ZmZj
ZTI5MzEyZTlkYzM3MGEyOTA0ZTg2Mzg5NDhmLi43Y2FlMjQzOWVmNjI3YjZjMjY2MTczOTRiOTFj
YzhiODA0ZmYwNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9N
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAK
aW5kZXggYjE2YjZmYjRiZDE0ZTI0ZDJkYWUwZjQ0YmFiZWE2NGQ4NDcwMGY0NC4uNTBhNDZmNjE0
Zjk4NDhiNzY5Mjg1ZTE2Mzg5MDczYzEyOTE1N2ZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5j
bHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKaW5kZXggNWE1NGFjMTQzY2IyNzkzNjRlNjQ2YzMz
MzRiMGNiYzE3YWU4MzQzNS4uMGEzM2FmMzc4YTJiMTIxOWYyOTI4NGRjODllMTZkMzhiNzI0Nzc5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcy5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3Bl
cmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmcuY3BwCmluZGV4IGYyNTE4YTcxZWQ2ODYxYzVhOGNhZjZiZWIzNGM1ZmNmNmJkMzBk
ZWYuLjQ5MDQ5MTc0ZTAzNmY1ZjE4MDYyNDRjM2YyZWJkMTllMTY5NjJlNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcu
Y3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCmluZGV4IDgxMjM3
MmI0ZDRlZTcwYzQyM2EyODQzMzQ2NTFkMTE1OGVhYWNlNTkuLmM5YzUyNjk4YjgyZDNmZmYyN2Qy
MzQ0ZmRkYjU1NDNkMDkyY2E0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUg
IkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRl
QXR0cmlidXRlLmNwcAppbmRleCAzOTE3YjRkOTI5NmJhNTIzZGMxMzA3MDYxOWNmNGNlZDM4YTgz
ZmIxLi43NWVjMzhhZGI4ZmU4ODkzMDQ2MDM1MzQ2YjU2NDQ2ZDdiMmI2MmY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAg
LTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApp
bmRleCAxZTYxM2FhYjA2NTI0YWY1NTYwNjMzZDg4MjI0OTdmZDFjMDFlMGEyLi4xODZhNDE2ZGE4
NzNhNjRlNWRmNWM2NmViYmZkMDkwMWFjZTVkZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAg
LTQ1LDEzICs0NSwxMyBAQAogI2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IDcy
NDA3MTU2ZWJkNjI2ODZhMTM0YjAxYTRlNDBjZDUxMTZiNzU5ZGYuLmQwZWFiYTA5ZmQxMmVlYWY1
YTEzN2EyYWI0ZGMyNDBiOTk3Yjc2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAt
NDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZEluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtMTk0LDcgKzE5NCw3IEBAIEJsb2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6TWFrZUhUVFBTOiB7CiAgICAgICAgICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikg
fHwgdXJsLnByb3RvY29sSXMoIndzIikpCi0gICAgICAgICAgICAgICAgJiYgKCF1cmwucG9ydCgp
IHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90
b2NvbCgpKSkpCisgICAgICAgICAgICAgICAgJiYgKCF1cmwucG9ydCgpIHx8IFdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHVybC5wb3J0KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkK
ICAgICAgICAgICAgICAgICB3aWxsTWFrZUhUVFBTID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC0yNDQsNyArMjQ0LDcgQEAgQmxvY2tlZFN0YXR1cyBDb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZCgK
ICAgICAgICAgICAgIHdpbGxCbG9ja0Nvb2tpZXMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6Ok1ha2VIVFRQUzoK
LSAgICAgICAgICAgIGlmICgodXJsLnByb3RvY29sSXMoImh0dHAiKSB8fCB1cmwucHJvdG9jb2xJ
cygid3MiKSkgJiYgKCF1cmwucG9ydCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwu
cG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCisgICAgICAgICAgICBpZiAoKHVybC5w
cm90b2NvbElzKCJodHRwIikgfHwgdXJsLnByb3RvY29sSXMoIndzIikpICYmICghdXJsLnBvcnQo
KSB8fCBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVy
bC5wcm90b2NvbCgpKSkpCiAgICAgICAgICAgICAgICAgd2lsbE1ha2VIVFRQUyA9IHRydWU7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
VHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvcjoKQEAgLTI3NSwxMiArMjc1LDEyIEBAIHZvaWQg
YXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KGNvbnN0IEJsb2NrZWRTdGF0dXMmIHN0YXR1cywg
UGFnZSogcGFnZSwgUmVzb3VyCiAgICAgaWYgKHN0YXR1cy5tYWRlSFRUUFMpIHsKICAgICAgICAg
Y29uc3QgVVJMJiBvcmlnaW5hbFVSTCA9IHJlcXVlc3QudXJsKCk7CiAgICAgICAgIEFTU0VSVChv
cmlnaW5hbFVSTC5wcm90b2NvbElzKCJodHRwIikpOwotICAgICAgICBBU1NFUlQoIW9yaWdpbmFs
VVJMLnBvcnQoKSB8fCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgp
LnZhbHVlKCksIG9yaWdpbmFsVVJMLnByb3RvY29sKCkpKTsKKyAgICAgICAgQVNTRVJUKCFvcmln
aW5hbFVSTC5wb3J0KCkgfHwgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wob3JpZ2luYWxV
UkwucG9ydCgpLnZhbHVlKCksIG9yaWdpbmFsVVJMLnByb3RvY29sKCkpKTsKIAogICAgICAgICBV
UkwgbmV3VVJMID0gb3JpZ2luYWxVUkw7CiAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0
cHMiKTsKICAgICAgICAgaWYgKG9yaWdpbmFsVVJMLnBvcnQoKSkKLSAgICAgICAgICAgIG5ld1VS
TC5zZXRQb3J0KGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woImh0dHBzIikudmFsdWUoKSk7CisgICAg
ICAgICAgICBuZXdVUkwuc2V0UG9ydChXVEY6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woImh0dHBz
IikudmFsdWUoKSk7CiAgICAgICAgIHJlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuaAppbmRleCBhMjk2ZmY5N2ZiY2ZlYzkwYjVhNjBjZmVjM2M4MGM0
MGU4ZTQxODMzLi4zNGNmYWNhNTAxZmQzYzcyYzk2NjdlOGY0YjcwZGUyNzdhYWM1YzY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuaApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3Mg
VVJMOwogCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRl
eCA1ZDM4NmFmZGZiMjk3M2Y2OTYwMjcxY2YzNjc5MTJhMWUzNzc0M2U0Li4zNmM3YzY0ZGNiODQy
NzAyNDYzMGYwZjc5MTYzMWI3NzhkZGE5ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMjAs
MTIgKzIwLDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgogI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGll
cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCmluZGV4IDNmNGI2NWFi
NzI4OGRkMGYzYjE2MWJhNDFiZDUwNWRmMmUzNzU1MGMuLjM0MjE2M2RiNTAzNjM2MjA0ODNlYmQw
MmIzYmNjOTJmZGM2YTI4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAg
LTM4LDcgKzM4LDYgQEAgY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENhY2hlZFJl
c291cmNlOwogY2xhc3MgQ29sb3I7CiBjbGFzcyBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM7Ci1j
bGFzcyBVUkw7CiBjbGFzcyBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgU3R5bGVkRWxlbWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oCmluZGV4IDRlNDhjMzA0YTU3NzExZTNmNzc0ODZmM2M5Njc2MmQ2NGZl
MWIxMDYuLjIwY2ZjZDcxMTUyNWIzZmRjMDM0MDhmY2UyNTYzYzQ2MTQzYmVlMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKLWNsYXNzIFVS
TDsKIGNsYXNzIEtleWZyYW1lTGlzdDsKIGNsYXNzIEtleWZyYW1lVmFsdWU7CiBjbGFzcyBNZWRp
YVF1ZXJ5RXZhbHVhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKaW5kZXggZThiNWJmYzU2Mjg3
YTRkOTgyOGU4OTNkODU3OWNiYThiOGVlYmNjMi4uYmFiNGU2Mjc5NDdiNmVlODVkODQ5OTVjM2Zk
MDIzNDIxOGQ0MzgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCkBAIC0zMCw3ICszMCw2IEBA
IGNsYXNzIENTU0ltcG9ydFJ1bGU7CiBjbGFzcyBNZWRpYUxpc3Q7CiBjbGFzcyBOb2RlOwogY2xh
c3MgU3R5bGVTaGVldDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgU3R5bGVTaGVldCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFN0eWxlU2hlZXQ+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNo
ZWV0Q29udGVudHMuaAppbmRleCAyYzJiZDExN2FlMGE1YjIzZGYyNTAxNGI5ZTViOTMxMDdkOTU4
YTQ1Li5kMTEyMDk4NGY1ZjQ0N2E3ZDJmYjQxN2VmYzgxY2Y5NTZkOWFhM2ViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCkBAIC0yMiwxMCArMjIsMTAgQEAKIAogI2lu
Y2x1ZGUgIkNTU1BhcnNlckNvbnRleHQuaCIKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAppbmRleCAxZWY3NzExZmQwY2JkYjUxNTIwZmZk
YWQ4NjIzNzc3NzY4OTJkMjY0Li5kYmQyMzc3NTM0YTRjOTg3NTk5YWUxYmNhNGY4YTM3MmM1ZDVk
YTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaApA
QCAtMjcsOSArMjcsOSBAQAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODMsNyArODMsNyBAQCBXRUJDT1JFX0VYUE9SVCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCk7CiBzdHJ1Y3Qg
Q1NTUGFyc2VyQ29udGV4dEhhc2ggewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGtleSkKICAgICB7Ci0gICAgICAgIGF1dG8gaGFzaCA9IFVSTEhhc2g6
Omhhc2goa2V5LmJhc2VVUkwpOworICAgICAgICBhdXRvIGhhc2ggPSBXVEY6OlVSTEhhc2g6Omhh
c2goa2V5LmJhc2VVUkwpOwogICAgICAgICBpZiAoIWtleS5jaGFyc2V0LmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIGhhc2ggXj0gU3RyaW5nSGFzaDo6aGFzaChrZXkuY2hhcnNldCk7CiAgICAgICAg
IHVuc2lnbmVkIGJpdHMgPSBrZXkuaXNIVE1MRG9jdW1lbnQgICAgICAgICAgICAgICAgICA8PCAw
CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHRIYXNoIHsKIAogbmFt
ZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1Bh
cnNlckNvbnRleHQ+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4
dD4gewotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDU1NQ
YXJzZXJDb250ZXh0JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QuYmFzZVVSTCkgV2ViQ29y
ZTo6VVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyB2b2lkIGNv
bnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7IG5l
dyAoTm90TnVsbCwgJnNsb3QuYmFzZVVSTCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
KTsgfQogICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkNTU1Bh
cnNlckNvbnRleHQmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5iYXNlVVJMLmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7IH0KICAgICBzdGF0aWMgV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCBlbXB0
eVZhbHVlKCkgeyByZXR1cm4gV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dChXZWJDb3JlOjpIVE1M
U3RhbmRhcmRNb2RlKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
cklkaW9tcy5oCmluZGV4IDg3MWQ1OTkxYjU3NmJiMzBmNDY1ODc4MTE4NzNkYWY2ZmE1OGJjYTQu
LjI1NzVjMGRmMmI4N2M1OTA1ZjdkYmMyY2U2ZmNjMzU0ZmI3YTk3YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaApAQCAtMzUsOCArMzUsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
VVJMOwogICAgIAogLy8gU3BhY2UgY2hhcmFjdGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBDU1Mgc3Bl
Y2lmaWNhdGlvbi4KIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyN3aGl0ZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDZkMzlkYTQ1NWQ0MmYzMzgy
ZGM3NDI1ZGFkODAwN2JmZDY3MDdiOWUuLjYwZTNiN2NlNjliZjk4MDg0NjUxMTdjOGE2NDM4NjM5
YjE3NDUxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MywxMCArNDMs
MTAgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTdGF0aWNQYXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVVJMUGFy
c2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGVudFJlYWRlci5oIgogI2luY2x1ZGUgIldlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBEYXRhVHJhbnNm
ZXI6OnNldERhdGFGcm9tSXRlbUxpc3QoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IGRhdGEpCiAgICAgaWYgKHR5cGUgPT0gInRleHQvaHRtbCIpCiAgICAgICAgIHNhbml0aXplZERh
dGEgPSBzYW5pdGl6ZU1hcmt1cChkYXRhKTsKICAgICBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L3Vy
aS1saXN0IikgewotICAgICAgICBhdXRvIHVybCA9IFVSTFBhcnNlcihkYXRhKS5yZXN1bHQoKTsK
KyAgICAgICAgYXV0byB1cmwgPSBVUkwoeyB9LCBkYXRhKTsKICAgICAgICAgaWYgKHVybC5pc1Zh
bGlkKCkpCiAgICAgICAgICAgICBzYW5pdGl6ZWREYXRhID0gdXJsLnN0cmluZygpOwogICAgIH0g
ZWxzZSBpZiAodHlwZSA9PSAidGV4dC9wbGFpbiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCBmNThlYjJlNTljYjBkOGIxMWNiNWE1NjQyYzAxZTQxZmJiZWM4ZGVmLi44NzI0ZTgxMTRiYjIx
NGI1MDJjZWNhOThhYzZmMGMyNzdkMjljZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTMxMzYsNyArMzEzNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzCiAKIHZvaWQgRG9jdW1l
bnQ6OnNldFVSTChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBjb25zdCBVUkwmIG5ld1VSTCA9IHVy
bC5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogdXJsOworICAgIGNvbnN0IFVSTCYgbmV3VVJMID0g
dXJsLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6IHVybDsKICAgICBpZiAobmV3VVJMID09
IG1fdXJsKQogICAgICAgICByZXR1cm47CiAKQEAgLTM0MjYsNyArMzQyNiw3IEBAIHZvaWQgRG9j
dW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5n
JiBjb250ZW50LCBib29sCiAgICAgICAgICAgICAgICAgY29tcGxldGVkVVJMID0gbV91cmw7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29tcGxldGVkVVJMID0gY29tcGxldGVV
UkwodXJsU3RyaW5nKTsKLSAgICAgICAgICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoY29t
cGxldGVkVVJMKSkKKyAgICAgICAgICAgIGlmICghV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChj
b21wbGV0ZWRVUkwpKQogICAgICAgICAgICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVy
KCkuc2NoZWR1bGVSZWRpcmVjdCgqdGhpcywgZGVsYXksIGNvbXBsZXRlZFVSTCk7CiAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRv
IHJlZnJlc2ggIiArIG1fdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0
byBhIGphdmFzY3JpcHQ6IFVSTCI7CkBAIC00ODg4LDcgKzQ4ODgsNyBAQCBVUkwgRG9jdW1lbnQ6
OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBVUkwmIGJhc2VVUkxPdmVycmlk
ZSkgY29uc3QKICAgICAvLyBTZWUgYWxzbyBbQ1NTXVN0eWxlU2hlZXQ6OmNvbXBsZXRlVVJMKGNv
bnN0IFN0cmluZyYpCiAgICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFVSTCgp
OwotICAgIGNvbnN0IFVSTCYgYmFzZVVSTCA9ICgoYmFzZVVSTE92ZXJyaWRlLmlzRW1wdHkoKSB8
fCBiYXNlVVJMT3ZlcnJpZGUgPT0gYmxhbmtVUkwoKSkgJiYgcGFyZW50RG9jdW1lbnQoKSkgPyBw
YXJlbnREb2N1bWVudCgpLT5iYXNlVVJMKCkgOiBiYXNlVVJMT3ZlcnJpZGU7CisgICAgY29uc3Qg
VVJMJiBiYXNlVVJMID0gKChiYXNlVVJMT3ZlcnJpZGUuaXNFbXB0eSgpIHx8IGJhc2VVUkxPdmVy
cmlkZSA9PSBXVEY6OmJsYW5rVVJMKCkpICYmIHBhcmVudERvY3VtZW50KCkpID8gcGFyZW50RG9j
dW1lbnQoKS0+YmFzZVVSTCgpIDogYmFzZVVSTE92ZXJyaWRlOwogICAgIGlmICghbV9kZWNvZGVy
KQogICAgICAgICByZXR1cm4gVVJMKGJhc2VVUkwsIHVybCk7CiAgICAgcmV0dXJuIFVSTChiYXNl
VVJMLCB1cmwsIG1fZGVjb2Rlci0+ZW5jb2RpbmdGb3JVUkxQYXJzaW5nKCkpOwpAQCAtNzE2Miw5
ICs3MTYyLDkgQEAgRG9jdW1lbnQmIERvY3VtZW50OjplbnN1cmVUZW1wbGF0ZURvY3VtZW50KCkK
ICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RG9jdW1lbnQmPigqZG9jdW1lbnQpOwogCiAgICAg
aWYgKGlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IEhUTUxE
b2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIGJsYW5rVVJMKCkpOworICAgICAgICBtX3RlbXBsYXRl
RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBXVEY6OmJsYW5rVVJMKCkp
OwogICAgIGVsc2UKLSAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0
ZShudWxscHRyLCBibGFua1VSTCgpKTsKKyAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gRG9j
dW1lbnQ6OmNyZWF0ZShudWxscHRyLCBXVEY6OmJsYW5rVVJMKCkpOwogCiAgICAgbV90ZW1wbGF0
ZURvY3VtZW50LT5zZXRDb250ZXh0RG9jdW1lbnQoY29udGV4dERvY3VtZW50KCkpOwogICAgIG1f
dGVtcGxhdGVEb2N1bWVudC0+c2V0VGVtcGxhdGVEb2N1bWVudEhvc3QodGhpcyk7IC8vIGJhbGFu
Y2VkIGluIGR0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGE3OTZiNDkwN2MxMjE1OGMwNmJm
YTYyNTMxZDhmMTdlY2UwYWFjNDIuLjFkOWNmODQ0ODNjNGUxYmIzOWFlMjk3MzQ2NDczYTFjZTYz
MzViYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC02NzEsNyArNjcxLDcgQEAgY2xhc3MgRG9j
dW1lbnQKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7
IH0KICAgICB2b2lkIHNldFVSTChjb25zdCBVUkwmKTsKLSAgICBjb25zdCBVUkwmIHVybEZvckJp
bmRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV91cmwuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IG1f
dXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmxGb3JCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6IG1fdXJsOyB9CiAKICAgICAvLyBUbyB1
bmRlcnN0YW5kIGhvdyB0aGVzZSBjb25jZXB0cyByZWxhdGUgdG8gb25lIGFub3RoZXIsIHBsZWFz
ZSBzZWUgdGhlCiAgICAgLy8gY29tbWVudHMgc3Vycm91bmRpbmcgdGhlaXIgZGVjbGFyYXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZDkxZmU0MzE1ZTYyNmYxNDBkYzY4YmU1OTU3ZjZh
MDRkNmY0NjAwNy4uOGIzN2I5ZmYzMmY2YzhhNTk4YWYyNmVlYWEwMjgwNTZhMzRjNDU4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTcxOSw3ICsxNzE5LDcgQEAgYm9vbCBFbGVtZW50Ojpp
c0V2ZW50SGFuZGxlckF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QK
IAogYm9vbCBFbGVtZW50Ojppc0phdmFTY3JpcHRVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0
ZSkgJiYgcHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKGF0dHJpYnV0ZS52YWx1ZSgpKSk7CisgICAgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJp
YnV0ZSkgJiYgV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoYXR0cmlidXRlLnZhbHVlKCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzdHJp
cFNjcmlwdGluZ0F0dHJpYnV0ZXMoVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3Rvcikg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3du
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5k
ZXggOGVlYzI2YTlkNTQ0ZTEzODQ2ZDhhNDA0Mzk2NWZjZDcwNWUyMDQ3MC4uYzI3ZmRlNDhkNjYw
YmQ1OWRjNjJmYTQzYmNhZDY1YjRiYWIwNTZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lu
bGluZVN0eWxlU2hlZXRPd25lci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIENTU1BhcnNl
ckNvbnRleHQgcGFyc2VyQ29udGV4dEZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICBhdXRvKiBzaGFkb3dSb290ID0gZWxlbWVudC5jb250YWluaW5nU2hhZG93Um9vdCgp
OwogICAgIC8vIFVzZXIgYWdlbnQgc2hhZG93IHRyZWVzIGNhbid0IGNvbnRhaW4gZG9jdW1lbnQt
cmVsYXRpdmUgVVJMcy4gVXNlIGJsYW5rIFVSTCBhcyBiYXNlIGFsbG93aW5nIGNyb3NzLWRvY3Vt
ZW50IHNoYXJpbmcuCi0gICAgYXV0byYgYmFzZVVSTCA9IHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9v
dC0+bW9kZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQgPyBibGFua1VSTCgpIDogZWxl
bWVudC5kb2N1bWVudCgpLmJhc2VVUkwoKTsKKyAgICBhdXRvJiBiYXNlVVJMID0gc2hhZG93Um9v
dCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCA/IFdU
Rjo6YmxhbmtVUkwoKSA6IGVsZW1lbnQuZG9jdW1lbnQoKS5iYXNlVVJMKCk7CiAKICAgICBDU1NQ
YXJzZXJDb250ZXh0IHJlc3VsdCA9IENTU1BhcnNlckNvbnRleHQgeyBlbGVtZW50LmRvY3VtZW50
KCksIGJhc2VVUkwsIGVsZW1lbnQuZG9jdW1lbnQoKS5jaGFyYWN0ZXJTZXRXaXRoVVRGOEZhbGxi
YWNrKCkgfTsKICAgICBpZiAoc2hhZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hh
ZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBhNTIwMmQ1YzVkYWNl
ZTgyODk2YzRlMDM3Mjc0NzE1N2Y5ODYxOTgzLi5mM2RlNzAxZDZkNGJhODQ1NjE3MmY2NjQzYzYx
Zjk1MTRhZTM0YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBEb2N1
bWVudCogTm9kZTo6b3duZXJEb2N1bWVudCgpIGNvbnN0CiBjb25zdCBVUkwmIE5vZGU6OmJhc2VV
UkkoKSBjb25zdAogewogICAgIGF1dG8mIHVybCA9IGRvY3VtZW50KCkuYmFzZVVSTCgpOwotICAg
IHJldHVybiB1cmwuaXNOdWxsKCkgPyBibGFua1VSTCgpIDogdXJsOworICAgIHJldHVybiB1cmwu
aXNOdWxsKCkgPyBXVEY6OmJsYW5rVVJMKCkgOiB1cmw7CiB9CiAKIGJvb2wgTm9kZTo6aXNFcXVh
bE5vZGUoTm9kZSogb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1MmRhNmQxMWEwMTBmZjQz
YTM2OTU1NWFmNzc5OTQ2MWJjYTJhNThiLi4xMjQzOWQ3OGQzNWM0YzI4MjFhNzI1NGQwMzIxNDUw
MzVmYjQ3ZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTMxLDExICszMSwxMSBAQAogI2luY2x1ZGUgIlJl
bmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVWYWxpZGl0eS5oIgogI2luY2x1
ZGUgIlRyZWVTY29wZS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxI
YXNoLmg+CiAKIC8vIFRoaXMgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIERvY3VtZW50LmggYWxz
byBkZXBlbmRzIG9uIGl0LgogI2RlZmluZSBEVU1QX05PREVfU1RBVElTVElDUyAwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuaAppbmRleCBhNjFkYWQ0NWU5ZTQ0NGZhMzIyZTU5ODIyYjRlOGU2
YjFlOGY2ZGI3Li42MjQ1NGU3OTNjYjEzMzRmNjRjY2YzYmUyMDk1ZDMzY2E5YTcyYzhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKQEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIExvYWRhYmxlTW9kdWxlU2NyaXB0OwogY2xhc3MgUGVuZGluZ1NjcmlwdDsKIGNs
YXNzIFNjcmlwdFNvdXJjZUNvZGU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFNjcmlwdEVsZW1lbnQg
ewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgK
aW5kZXggM2JkZmNjODBkYmU2ZTZhZGFkNTg3N2QxZmVlMzAxMTI3Mzc2ZDU2My4uNGIyM2Y0N2Y3
ZGUzZGJlMGRmY2NhNGJhYzI3ZjA0NTI2OWZmODAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC02OCw3ICs2OCw2IEBAIGNsYXNzIFJlamVjdGVk
UHJvbWlzZVRyYWNrZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwotY2xhc3MgVVJMOwogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogY2xhc3MgU2VydmljZVdvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0
eUNvbnRleHQuaAppbmRleCA5ZjIxNWZiYTFiNTNmMjU2MTVjYzBkYTNjYzczNDIwNTAxMjVhY2E1
Li5jMGNjOGUyMTEwOWQ2M2JmNGEzMmU5YjVhN2M0ZjE5NWE0ODA3MGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NlY3VyaXR5Q29udGV4dC5oCkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2VjdXJpdHlPcmlnaW5Qb2xpY3k7CiBj
bGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiAKIGVudW0gU2FuZGJveEZs
YWcgewogICAgIC8vIFNlZSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrLyNhdHRyLWlmcmFtZS1zYW5kYm94IGZvciBhIGxpc3Qgb2YgdGhlIHNhbmRib3gg
ZmxhZ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNjdlN2VlZWM0OWM4ODdiNjYx
ZTQ1NTUwN2ZhMGM4MjFmN2VjNjA5Zi4uMTY4NjI5MDVmYTYyZTI2YjcwMjJiMWYxMTNjZjNkOTky
MGE0YWJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTUxMCw5ICsxNTEwLDkg
QEAgdm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9h
cmRVUkwpOwogfQogCi1QYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMIEVkaXRvcjo6cGFzdGVib2Fy
ZFdyaXRlclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK1Bhc3RlYm9h
cmRXcml0ZXJEYXRhOjpVUkxEYXRhIEVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0
YTo6VVJMIHJlc3VsdDsKKyAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMRGF0YSByZXN1bHQ7
CiAKICAgICByZXN1bHQudXJsID0gdXJsOwogICAgIHJlc3VsdC50aXRsZSA9IHRpdGxlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNmZmMjg2NmIxNDhmZGY0ZmY5MjA1Y2QzZGZmOTRlZDAy
YmVjOTUzYi4uZmMyNTQwMzIyOTIxZGYyZmJlNzYxZWM2NjliNDM2MTI4Mjg2Mzc0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0xNzAsNyArMTcwLDcgQEAgY2xhc3MgRWRpdG9yIHsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHRpdGxlKTsKICAgICB2b2lkIGNvcHlVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgUGFzdGVib2FyZCYpOwotICAgIFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkwgcGFzdGVib2Fy
ZFdyaXRlclVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBQYXN0ZWJv
YXJkV3JpdGVyRGF0YTo6VVJMRGF0YSBwYXN0ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgdGl0bGUpOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb3B5SW1hZ2UoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDM1M2RiYTY5Mjc0
OWIxOGNiYTkxMzE1NDAxZmFmYWVjNGJmMDM4NTEuLmZkN2Y4YTgxODE4MjQzYzE2Mjg2ZmNhNzhj
MDNmNDAzNjJkODZkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3Vw
QWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11
bGF0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlByb2Nlc3Np
bmdJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxO
U05hbWVzLmgiCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBw
ZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb24KICAg
ICBjb25zdCBTdHJpbmcgcmVzb2x2ZWRVUkxTdHJpbmcgPSByZXNvbHZlVVJMSWZOZWVkZWQoZWxl
bWVudCwgYXR0cmlidXRlLnZhbHVlKCkpOwogICAgIFVDaGFyIHF1b3RlQ2hhciA9ICciJzsKICAg
ICBTdHJpbmcgc3RyaXBwZWRVUkxTdHJpbmcgPSByZXNvbHZlZFVSTFN0cmluZy5zdHJpcFdoaXRl
U3BhY2UoKTsKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcp
KSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcp
KSB7CiAgICAgICAgIC8vIG1pbmltYWwgZXNjYXBpbmcgZm9yIGphdmFzY3JpcHQgdXJscwogICAg
ICAgICBpZiAoc3RyaXBwZWRVUkxTdHJpbmcuY29udGFpbnMoJyInKSkgewogICAgICAgICAgICAg
aWYgKHN0cmlwcGVkVVJMU3RyaW5nLmNvbnRhaW5zKCdcJycpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAppbmRleCBmMjVmYWFlMzc1NzA2MTFlN2RmMjI5
ZWU4YWYxMzNmNDVkYWFmN2Y0Li4xNTA0ZjZmMzRmN2UxNWZjYTJjNzBiNDQzNzZhMTY4OGM0ZjU3
Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaApA
QCAtNDEsNyArNDEsNiBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3Mg
SGl0VGVzdFJlc3VsdDsKIGNsYXNzIFJhbmdlOwotY2xhc3MgVVJMOwogCiBlbnVtIERhdGFEZXRl
Y3RvclR5cGVzIHsKICAgICBEYXRhRGV0ZWN0b3JUeXBlTm9uZSA9IDAsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCBhZjYxZjM2YjhiNDhlZDhhMjdh
YjBmZDVlYjhiM2ViNjFkYWZlNGQ1Li5lYzM3OTVmZTY2ZTIwNTc1M2YzNmQ3NjZmZDI2NzEzN2Jm
NDEzZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0K
QEAgLTUxLDExICs1MSwxMSBAQAogI2ltcG9ydCAiUmVuZGVyU3R5bGUuaCIKICNpbXBvcnQgIlRl
eHQuaCIKICNpbXBvcnQgIldlYkNvbnRlbnRSZWFkZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VS
TEV4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05T
QXR0cmlidXRlZFN0cmluZ1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJj
aGl2ZXJTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0
IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
ODIsNyArMTgyLDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRl
ZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWQKIAogU3RyaW5nIEVkaXRvcjo6
dXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CisgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJp
bmcodXJsKTsKIH0KIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCBjNWE4OGYzYWQ1
YWY0YmRhY2UxMzY0MDg5MGQ3Y2EwOTlkNGJmMjM2Li5kNTdmMWFlNTYzMTRkMjljMjgzMGMxZDJj
NGI3MmUwNDdmMGQzOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtNTQsNyArNTQsNiBAQAogI2ltcG9ydCAi
U2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvY2tldFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJUeXBlZEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKLSNpbXBvcnQgIlVSTFBhcnNlci5oIgogI2ltcG9y
dCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRy
aWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJXZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhh
bmRsZXIuaCIKQEAgLTYyLDYgKzYxLDcgQEAKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VSTFBhcnNlci5oPgogCiAjaWYgUExBVEZPUk0oTUFD
KQogI2luY2x1ZGUgIkxvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCIKQEAgLTI4OCw3ICsy
ODgsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJh
bWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogCiAgICAgICAgIGF1dG8gbmFtZSA9IGlt
YWdlLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsK
ICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9IFVSTFBhcnNl
ciB7IHJlc291cmNlVVJMU3RyaW5nIH0ucmVzdWx0KCkubGFzdFBhdGhDb21wb25lbnQoKTsKKyAg
ICAgICAgICAgIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21w
b25lbnQoKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9
IEF0b21pY1N0cmluZygibWVkaWEiKTsKIApAQCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyB2b2lk
IHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50
RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVu
ZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBuYW1lID0gVVJMUGFy
c2VyIHsgcmVzb3VyY2VVUkxTdHJpbmcgfS5yZXN1bHQoKS5sYXN0UGF0aENvbXBvbmVudCgpOwor
ICAgICAgICBhdXRvIG5hbWUgPSBVUkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhD
b21wb25lbnQoKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFt
ZSA9IEF0b21pY1N0cmluZygiZmlsZSIpOwogCkBAIC01MTgsNyArNTE4LDcgQEAgYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBT
dHJpbmcgc2FuaXRpemVkTWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwg
KmZyYW1lLmRvY3VtZW50KCksICpyZXN1bHQsIG1zb0xpc3RRdWlya3NGb3JNYXJrdXAoKSwgWyZd
IChjb25zdCBTdHJpbmcmIHR5cGUpIHsKICAgICAgICAgcmV0dXJuIGZyYW1lLmxvYWRlcigpLmNs
aWVudCgpLmNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKTsKICAgICB9KTsKLSAgICBmcmFnbWVu
dCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgc2FuaXRpemVk
TWFya3VwLCBibGFua1VSTCgpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOwor
ICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgp
LCBzYW5pdGl6ZWRNYXJrdXAsIFdURjo6YmxhbmtVUkwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQ
bHVnaW5Db250ZW50KTsKIAogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCBmMWNkNTNjOWUz
MzhkMWFhYWY1MzBhOTA4MTE4ZmZlMDg4YjI4MjRmLi40NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVl
N2U3OWJlMWQ2OTJmMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
CkBAIC01MiwxMSArNTIsMTEgQEAKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
ICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5oIgogI2ltcG9ydCAiV2ViQ29udGVudFJlYWRlci5o
IgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0
ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8QXBwS2l0L0Fw
cEtpdC5oPgogI2ltcG9ydCA8cGFsL3N5c3RlbS9Tb3VuZC5oPgorI2ltcG9ydCA8d3RmL2NvY29h
L05TVVJMRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjUzLDcgKzI1Myw3
IEBAIFN0cmluZyBFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9h
cmRQbGFpblRleHQmIHRleHQpCiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMg
MTAwJSBjb3JyZWN0IHNpbmNlIHdlIGtub3cgLVtOU1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBu
b3QgaGFuZGxlCiAgICAgLy8gYWxsIHRoZSBzYW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRo
ZSBVUkwgY29kZSBmb3IgY3JlYXRpbmcgYW4gTlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0g
ICAgICAgIHN0cmluZyA9IHVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0
cmluZ10pOworICAgICAgICBzdHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBV
UkxXaXRoU3RyaW5nOnN0cmluZ10pOwogCiAgICAgLy8gRklYTUU6IFdURiBzaG91bGQgb2ZmZXIg
YSBub24tTWFjLXNwZWNpZmljIHdheSB0byBjb252ZXJ0IHN0cmluZyB0byBwcmVjb21wb3NlZCBm
b3JtIHNvIHdlIGNhbiBkbyBpdCBmb3IgYWxsIHBsYXRmb3Jtcy4KICAgICByZXR1cm4gWyhOU1N0
cmluZyAqKXN0cmluZyBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKQEAg
LTI3Miw3ICsyNzIsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0
ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbgogICAgIHBhc3RlYm9hcmRJ
bWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0ID0gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoaW1h
Z2VFbGVtZW50KTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0
ZWJvYXJkSW1hZ2UudXJsLnRpdGxlID0gdGl0bGU7Ci0gICAgcGFzdGVib2FyZEltYWdlLnVybC51
c2VyVmlzaWJsZUZvcm0gPSB1c2VyVmlzaWJsZVN0cmluZyhwYXN0ZWJvYXJkSW1hZ2UudXJsLnVy
bCk7CisgICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSBXVEY6OnVzZXJW
aXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsKTsKICAgICBwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgcGFz
dGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5t
aW1lVHlwZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZjBlMGQ4NjVjOGJj
N2RjZGIxMzU4MTRjMDdkMjQ0NWE5ZGE3Y2NmNC4uOTE0YjgwY2I1ODNjMzk4ZDZhOTU4ZDdhNzU3
NWNhZTI4MDVmNTI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzMsMTEgKzcz
LDExIEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNl
bGVjdGlvbi5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRy
aWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBXVEY6OkZ1bmN0CiAgICAg
ICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJ
dGVyYXRvcigpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGZvciBz
cmNzZXQuCiAgICAgICAgICAgICBpZiAoZWxlbWVudC5hdHRyaWJ1dGVDb250YWluc1VSTChhdHRy
aWJ1dGUpICYmICFhdHRyaWJ1dGUudmFsdWUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAg
ICBVUkwgdXJsID0gVVJMUGFyc2VyIHsgYXR0cmlidXRlLnZhbHVlKCkgfS5yZXN1bHQoKTsKKyAg
ICAgICAgICAgICAgICBVUkwgdXJsKHsgfSwgYXR0cmlidXRlLnZhbHVlKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChzaG91bGRSZW1vdmVVUkwodXJsKSkKICAgICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlc1RvUmVtb3ZlLmFwcGVuZCh7IGVsZW1lbnQsIGF0dHJpYnV0ZS5uYW1lKCkgfSk7CiAg
ICAgICAgICAgICB9CkBAIC05NTEsNyArOTUxLDcgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYK
IAogICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCBmYWtlQm9keS5wdHIoKSwgcGFyc2Vy
Q29udGVudFBvbGljeSk7CiAgICAgcmVzdG9yZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQo
ZnJhZ21lbnQpOwotICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBibGFu
a1VSTCgpICYmIGJhc2VVUkwgIT0gZG9jdW1lbnQuYmFzZVVSTCgpKQorICAgIGlmICghYmFzZVVS
TC5pc0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBXVEY6OmJsYW5rVVJMKCkgJiYgYmFzZVVSTCAhPSBk
b2N1bWVudC5iYXNlVVJMKCkpCiAgICAgICAgIGNvbXBsZXRlVVJMcyhmcmFnbWVudC5wdHIoKSwg
YmFzZVVSTCk7CiAKICAgICByZXR1cm4gZnJhZ21lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaApp
bmRleCBiNTUwYThmNjdmMzlkZmEzYWFlODkwNWQ4YTBkMmYyNWNmOTA0YTg3Li5iMDQ4Y2E4MjMz
Mjc1MGJmYWJlODRhY2YxOWQ0YjUxY2QwZDJiMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgK
QEAgLTQxLDcgKzQxLDYgQEAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxFbGVtZW50OwotY2xhc3MgVVJMOwogY2xhc3MgTm9k
ZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBRdWFsaWZpZWROYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IDYzYjFlMGU1NzQxMWQwNjMzYzQxOThmNGFl
MDkzNTNhMDM1NTEyN2UuLjczYTM2NTIyODc5OWMxNmI5YTk4OGQ5YTExODllMGNmOTM4MGZlOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTM0LDcg
KzM0LDYgQEAKIAogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJGaWxlU3RyZWFt
Q2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8
d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtNDIs
NiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5oCmluZGV4IDRmMGU3YjI3NzcxN2ExOWNjMjcwZGYyZTk2M2FiZWVm
OTNmM2YzNTMuLjYyY2FmZmUyZDk4YWQxZDVkMTBmNGVkNjg4MTdkYTkwNDk0ZWExNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaApAQCAtMzgsNyArMzgsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVTdHJlYW1DbGllbnQ7CiBjbGFzcyBGaWxl
U3RyZWFtOwotY2xhc3MgVVJMOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBc3luY0ZpbGVTdHJl
YW0gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCAyMDEzOWM0YzEyYTE0OTNlMDUz
OGRjOWFiOTUxNjNiMTQ5OGNmOTYyLi45MGQ0NjU2OTk3MzAxMjU4ZWU4NjgyOGU5YWI2MDc4YWMz
Zjg5YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVk
ZSAiQmxvYlByb3BlcnR5QmFnLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5j
cHAKaW5kZXggYzZkZmVlNjU1MDE1M2UyYmY0ODhhMjdjYzVhZThlMjBlOThlMDQ2MS4uMTQ2YzBk
YjA0OWQ3MTU0OGQwZmMyZDg4OWU0NmJiNmY1NTY0OWFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2JVUkwuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJCbG9iVVJMLmgiCiAKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAppbmRleCAzNTllYWFmN2YyYTI2NjdiOGIy
MmY3YTM1MDMyYTE1NzFkNjcyMGM0Li4zZDBhZTExYzEwMzllMzQ4NGUwZWRmNzAwOTc3N2JmMmVi
ZjliZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaApAQCAtMzAsNyArMzAsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDU3NWYwZTc2ZDA5
YTlkM2U1N2YyNThhZWNiZWYzMWYzNjBhNDhkZjAuLmRhMmU4YmNhMzUyY2EzZmM3ZWM3Y2I0NTYy
ZDc5YmJiNzI4YmYwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC0zMyw4ICszMyw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiBjbGFzcyBGaWxlIGZpbmFsIDog
cHVibGljIEJsb2IgewogcHVibGljOgogICAgIHN0cnVjdCBQcm9wZXJ0eUJhZyA6IEJsb2JQcm9w
ZXJ0eUJhZyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCmluZGV4
IGYzZGM2YzQ3OGM5ODAwNGE3YjEzNDBjMzI5ZWQ2ODgwOGI3MjE4ZjAuLjFmNzc3OGU4ODllMzkz
ZDdmYjk2OTQ0M2NlOGViZTIxMjc0ZDRhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJCbG9iUmVzb3Vy
Y2VIYW5kbGUuaCIKICNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAi
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IDQy
NDZkN2VlYTBiMGU3M2I1MDlmYmM4MGQyNDFlMWNmZjk2MjA5YzIuLmE5Yzc5ZmUyMjkyZjg5NWIz
MWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBAIC0zNiw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEJsb2JQYXJ0OwotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47CiAKIGNsYXNzIFRocmVhZGFibGVCbG9iUmVnaXN0cnkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9D
YWNoZWRGcmFtZS5oCmluZGV4IGUwYmU1NzFhMjkwNjgzMjViYTE3ZWNmM2ViZGZlYjg2YjZiZDgx
OTguLjI5OGY3ODI4MzFhNjk2OTg2MzhmYzU5MmQyZjYzMDU0NjNhMzA0NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgIlNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5
SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCmluZGV4IGU3MmI1
ODkzOTQ5ODFlY2VjNDEwN2Y2ZDYyYjc3YzlkNzQzODM1MWQuLjIwYTM5NzMzZjg1MzNhOTAzNGU2
NTZiYTdmN2FiMGEwNTQ4MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
SGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgK
QEAgLTU0LDcgKzU0LDYgQEAgY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNs
YXNzIEltYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogZW51bSBjbGFz
cyBQcnVuaW5nUmVhc29uOwogCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCAoKm5vdGlmeUhp
c3RvcnlJdGVtQ2hhbmdlZCkoSGlzdG9yeUl0ZW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAppbmRl
eCBhNzdiY2Q3MDcyM2YzY2Y5Y2ExMTY4MmU0NDZlZGZlODdkODEzOGY4Li4wYTA4YjU5NDY4NjU3
MzJmMjhkYTMwZmI3ZjYzY2E0ZDMxNGVhOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTVVSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCkBAIC02
Myw3ICs2Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxET01VUkw+PiBET01VUkw6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgRE9NVVJMJiBiYXNlKQogCiBFeGNlcHRpb25PcjxSZWY8RE9N
VVJMPj4gRE9NVVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgVVJMIGJhc2VV
UkwgeyBibGFua1VSTCgpIH07CisgICAgVVJMIGJhc2VVUkwgeyBXVEY6OmJsYW5rVVJMKCkgfTsK
ICAgICBVUkwgY29tcGxldGVVUkwgeyBiYXNlVVJMLCB1cmwgfTsKICAgICBpZiAoIWNvbXBsZXRl
VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVVJMLmgKaW5kZXggNTkwMjVjMmZiOTZmMDI5OWFkOTE3ZTYxN2IyOTExYzMxYWI5
MWQzNC4uZDMxM2Q3YTQ0NGQ4ZWE1NTM0ZjAwM2Y0NDUwZmRkYTBkNDYzNTIwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVVSTC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4
Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgIlVSTFV0aWxzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKaW5kZXggOWI5OWEzNDczMDk3MmQ0ZGQ3
OTljMDgxYTBmOThmNjM3N2FiNWFkMC4uMzA0OGI0OTBmYTUzZjNmZDQxNTFlMDIxMDQzNmM2NGZh
OTQ3MTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5j
cHAKQEAgLTM3LDggKzM3LDggQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBI
VE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYgY29tcGxldGVVUkwp
IGNvbnN0CiAgICAgaWYgKGNvbXBsZXRlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpKSB7CisgICAg
aWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpKSB7CiAgICAgICAgIFJl
ZlB0cjxEb2N1bWVudD4gY29udGVudERvYyA9IHRoaXMtPmNvbnRlbnREb2N1bWVudCgpOwogICAg
ICAgICBpZiAoY29udGVudERvYyAmJiAhU2NyaXB0Q29udHJvbGxlcjo6Y2FuQWNjZXNzRnJvbUN1
cnJlbnRPcmlnaW4oY29udGVudERvYy0+ZnJhbWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Om9wZW5VUkwo
TG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1fVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgbV9VUkwgPSBibGFua1VS
TCgpLnN0cmluZygpOworICAgICAgICBtX1VSTCA9IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKTsK
IAogICAgIFJlZlB0cjxGcmFtZT4gcGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAg
ICAgaWYgKCFwYXJlbnRGcmFtZSkKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxGcmFtZUVs
ZW1lbnRCYXNlOjpzZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmIHN0cikKIAogdm9pZCBIVE1MRnJh
bWVFbGVtZW50QmFzZTo6c2V0TG9jYXRpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBT
dHJpbmcmIG5ld0xvY2F0aW9uKQogewotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobmV3TG9jYXRpb24pKSkgeworICAgIGlmIChX
VEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyhuZXdMb2NhdGlvbikpKSB7CiAgICAgICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgY29udGVudERvY3VtZW50KCkpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXgg
MjMyYjNkY2IzMDMxODg5ZGM4MjZmOTg3ZDJiZDZmYjA4NzU4ZTliNS4uYjFjY2Q3NTU3NTAwZmEx
YWI3NjBlMTI0MDAyM2EzYTllZmE2ZDM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3MgSWNvbjsKIGNsYXNzIElucHV0VHlwZTsK
IGNsYXNzIExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKIGNsYXNzIFJhZGlvQnV0dG9uR3Jv
dXBzOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVyczsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggNTEwZjRjZmI2MzZkOWRhMTFl
MjU4ZjllZTNhNDJmZWQ2ZWZkMzZjZC4uNjgyOGY5MzQzYjU3MjQwOTVkYjYwMjE3NDI2ODc2NTQw
NzBjZGY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC0zNiw3ICsz
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NVG9rZW5MaXN0OwogY2xhc3Mg
SFRNTExpbmtFbGVtZW50OwotY2xhc3MgVVJMOwogc3RydWN0IE1lZGlhUXVlcnlQYXJzZXJDb250
ZXh0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBFdmVudFNlbmRlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDljMDliMDk0ODM5OTU1MTE1ODNk
YjUxMjVkM2VjN2M3MzRjZGM2MGIuLjc3ZDBjYmZiN2Q0ODA0YjcyMWIyM2Q0NDNlMDdiMDc2ZmM0
NjliNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTY4
LDggKzE2OCw4IEBACiAKIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGUgPD4KLXN0cnVjdCBMb2dB
cmd1bWVudDxXZWJDb3JlOjpVUkw+IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsKQorc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4geworICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgewogI2lmICFMT0dfRElTQUJM
RUQKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dn
aW5nID0gNTEyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1h
Z2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5jcHAKaW5kZXggMzIxM2M0NGFkYmYyOGYyNzBiNTI2MGRjYTEzMDU1ZGU4YWE0M2Q5Yi4uOWU1
YzI3Nzc3ZDY5M2U0ZjY0YmVmMWI3MzEyNTgzOTVjNGFkMjMwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAg
Ym9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojppc0ltYWdlVHlwZSgpCiBib29sIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OmFsbG93ZWRUb0xvYWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVybCkK
IHsKICAgICBVUkwgY29tcGxldGVVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7Ci0g
ICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJM
KSAmJiAhZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzcyhjb250ZW50RG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIFdURjo6
cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpICYmICFkb2N1bWVudCgpLnNlY3VyaXR5
T3JpZ2luKCkuY2FuQWNjZXNzKGNvbnRlbnREb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBkb2N1bWVudCgpLmZyYW1lKCktPmlz
VVJMQWxsb3dlZChjb21wbGV0ZVVSTCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlQml0bWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKaW5k
ZXggMjdhNDg5ZDRmNjU3YjZlNjlkYzRlOTlmOWQ0ZGM5YjY5ZDdiY2M3Ny4uMTIwMGI4NzgxNjQ2
ZjYxYTZmNzBjNDZiOTliY2M4ZWZjZjY1YWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAu
aApAQCAtNDQsNyArNDQsNiBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNz
IFBlbmRpbmdJbWFnZUJpdG1hcDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFz
cyBVUkw7CiBzdHJ1Y3QgSW1hZ2VCaXRtYXBPcHRpb25zOwogCiBjbGFzcyBJbWFnZUJpdG1hcCA6
IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEltYWdlQml0bWFwPiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCmluZGV4IDdj
NzczNmMzNGViY2Y2NGQ5NDU2MDNkY2Q4NjM5MzllOGRiMzdlNGMuLjEwYTJhMGQwZjUyMjRiMDUw
YWQ1YzdmNGQxZDY1NmFmZWU4M2M3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFG
cmFnbWVudFVSSVBhcnNlci5oCkBAIC0yNywxNCArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShWSURF
TykKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBmaW5h
bCB7CiBwdWJsaWM6CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1Ymxp
Y1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNw
cAppbmRleCBjZjE4NmMwYmE0MDBlMmEzYzIzMDRjYzc5ZmZhZGJhOGFmM2FhMzYxLi43M2I1NDcz
NTc4ZTNiMGIzMWVhZjk1ZGE0MGMyMGFjMDk5YzA3MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UHVibGljVVJMTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2Vy
LmgKaW5kZXggZTMyNjU0NWRjY2I0OWJmYTZjNWFmZjkyM2EyYzVlMGMwZmE3NzVhNC4uZTY5ZGU0
ZWQ4YzgzYmI4YThkYzRkMzY2ODYyMmNkM2ZkZDUzN2U3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Q
dWJsaWNVUkxNYW5hZ2VyLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdpc3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRU
eXBlLmNwcAppbmRleCA2Y2EwYWMxYTIwMTNjZjZkNWQ4ZGM1YzBlYTAzYjIxMTc5MmYxOTVlLi42
M2JiM2NjMjYwMWEwNDNkMTQ5YzQ1YTI5ZWMxOGRhMTQwYjVhZDg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9VUkxJbnB1dFR5cGUuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNl
cklkaW9tcy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxp
emVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VS
TFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKaW5kZXggYmQ3
NzJjZTVmMTdhNmI4N2RjMmY0NjI1YjcxYmUwMTEwM2MzNzc0My4uODIyM2JiZDA3NTkwZGRhY2Nl
OWZkMTYwNGUzYWMwYmMwMTVmNjRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9V
UkxSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaApAQCAt
MzQsNyArMzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVVJMUmVnaXN0cnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VVJMU2VhcmNoUGFyYW1zLmNwcAppbmRleCAzMGU4NTkyNGE3ODUyMGQ2NTkyMDkxYWQyZDMzYzA0
MjBjZmVkZDQzLi40ZTdmYmFlZmRmMGE0MTZjYzY1NGFhNzNkNTliN2JlODBiNDFkMGY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCkBAIC0yNiwxMyArMjYsMTMgQEAK
ICNpbmNsdWRlICJVUkxTZWFyY2hQYXJhbXMuaCIKIAogI2luY2x1ZGUgIkRPTVVSTC5oIgotI2lu
Y2x1ZGUgIlVSTFBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBVUkxTZWFyY2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhjb25zdCBT
dHJpbmcmIGluaXQsIERPTVVSTCogYXNzb2NpYXRlZFVSTCkKICAgICA6IG1fYXNzb2NpYXRlZFVS
TChhc3NvY2lhdGVkVVJMKQotICAgICwgbV9wYWlycyhpbml0LnN0YXJ0c1dpdGgoJz8nKSA/IFVS
TFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KGluaXQpLnN1YnN0cmluZygx
KSkgOiBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oaW5pdCkpCisgICAgLCBtX3BhaXJz
KGluaXQuc3RhcnRzV2l0aCgnPycpID8gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZv
cm0oU3RyaW5nVmlldyhpbml0KS5zdWJzdHJpbmcoMSkpIDogV1RGOjpVUkxQYXJzZXI6OnBhcnNl
VVJMRW5jb2RlZEZvcm0oaW5pdCkpCiB7CiB9CiAKQEAgLTEzMywyMCArMTMzLDIwIEBAIHZvaWQg
VVJMU2VhcmNoUGFyYW1zOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lKQogCiBTdHJpbmcgVVJM
U2VhcmNoUGFyYW1zOjp0b1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTFBhcnNlcjo6
c2VyaWFsaXplKG1fcGFpcnMpOworICAgIHJldHVybiBXVEY6OlVSTFBhcnNlcjo6c2VyaWFsaXpl
KG1fcGFpcnMpOwogfQogCiB2b2lkIFVSTFNlYXJjaFBhcmFtczo6dXBkYXRlVVJMKCkKIHsKICAg
ICBpZiAobV9hc3NvY2lhdGVkVVJMKQotICAgICAgICBtX2Fzc29jaWF0ZWRVUkwtPnNldFF1ZXJ5
KFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpKTsKKyAgICAgICAgbV9hc3NvY2lhdGVkVVJM
LT5zZXRRdWVyeShXVEY6OlVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpKTsKIH0KIAogdm9p
ZCBVUkxTZWFyY2hQYXJhbXM6OnVwZGF0ZUZyb21Bc3NvY2lhdGVkVVJMKCkKIHsKICAgICBBU1NF
UlQobV9hc3NvY2lhdGVkVVJMKTsKICAgICBTdHJpbmcgc2VhcmNoID0gbV9hc3NvY2lhdGVkVVJM
LT5zZWFyY2goKTsKLSAgICBtX3BhaXJzID0gc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBh
cnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KHNlYXJjaCkuc3Vic3RyaW5nKDEp
KSA6IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShzZWFyY2gpOworICAgIG1fcGFpcnMg
PSBzZWFyY2guc3RhcnRzV2l0aCgnPycpID8gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2Rl
ZEZvcm0oU3RyaW5nVmlldyhzZWFyY2gpLnN1YnN0cmluZygxKSkgOiBXVEY6OlVSTFBhcnNlcjo6
cGFyc2VVUkxFbmNvZGVkRm9ybShzZWFyY2gpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFdURjo6S2V5
VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gVVJMU2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKaW5kZXggYTA3YzA4MTRmMTFlMTcxMTg0NTAzZTZhYTZh
YWFkNmMwNDdkNDc1YS4uNjU2YWJmYmRhMGJkYmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVVJMVXRpbHMuaApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgVVJMVXRpbHM8
VD46OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgICAgIC8vIHJlcXVpcmVz
IHNldHRpbmcgdGhlIHBvcnQgdG8gIjAiIGlmIGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCiAg
ICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRv
ciArIDEpICsgJzAnKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICAgICAgaWYg
KFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKICAg
ICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFy
YXRvcikpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5k
UG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgcG9ydEVuZCkpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZv
aWQgVVJMVXRpbHM8VD46OnNldFBvcnQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAvLyByZXF1
aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBpdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5n
LgogICAgIC8vIEZJWE1FOiBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8gZG9lc24ndCBhcHBl
YXIgdG8gcmVxdWlyZSB0aGlzOyB0ZXN0IHdoYXQgYnJvd3NlcnMgZG8KICAgICB1bnNpZ25lZCBw
b3J0ID0gdmFsdWUudG9VSW50KCk7Ci0gICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChw
b3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKICAg
ICBlbHNlCiAgICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBjMzQ2MTAy
MTVlNTY5ZmU3YWExMTljYTUyMTZhN2Q4M2UxNTU2MjI5Li5kNzcyM2VkZGVkZmFjODVhZWQ5ODNj
NWE1NDFkNGMwMDIyZDM1Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1
ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXAuaCIKICNpbmNsdWRlICJPZmZzY3Jl
ZW5DYW52YXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IDgxY2I1NWQ3N2UzMTgwNTY0NDcwNzc3N2ExZTI5OTU2ZjQ0M2Y2NTguLjk4ZWM0NjJlZmViMzk1
YjlhN2U5YzM5OTcwMThlYWFkNWVmN2ZjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xh
c3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRN
TFZpZGVvRWxlbWVudDsKIGNsYXNzIEltYWdlQml0bWFwOwotY2xhc3MgVVJMOwogY2xhc3MgV2Vi
R0xPYmplY3Q7CiAKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5jcHAKaW5kZXggNjc0ZGViYzY5OGRiOWI3MDAyZWI0MDUyMzM1YjllNmRiODFiNjRhMy4u
NDIzMDkyNjhlOWJkZDA5NWFjOWJmMTZhZDlmNzMzMmEzNzFjZDViNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTI3LDkgKzI3LDkg
QEAKIAogI2luY2x1ZGUgIkRlY2ltYWwuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5j
cHAKaW5kZXggNzE5MjhjN2NlYThlMTRmMDQ0ZGU0OWY5ZDAxMzg0NzMwYWFhMmNlYi4uNjEwNGJl
MzkyYmNlMzFjNjNjYTFlZjI0YWUxMmVlYjEzMTk1NWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgYm9vbCBp
c1NlbWljb2xvblNlcGFyYXRlZEF0dHJpYnV0ZShjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYg
YXR0cmlidXRlKQogc3RhdGljIGJvb2wgc2VtaWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0ph
dmFTY3JpcHRVUkwoU3RyaW5nVmlldyBzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZSkKIHsKICAgICBm
b3IgKGF1dG8gdmFsdWUgOiBzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZS5zcGxpdCgnOycpKSB7Ci0g
ICAgICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh2YWx1ZSkpCisgICAgICAgIGlmIChXVEY6
OnByb3RvY29sSXNKYXZhU2NyaXB0KHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC00NDYsOSArNDQ2LDkgQEAgYm9vbCBYU1NBdWRp
dG9yOjpmaWx0ZXJTY3JpcHRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3Qp
CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKG1fd2FzU2NyaXB0
VGFnRm91bmRJblJlcXVlc3QpIHsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRy
aWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRy
dW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0
IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBTVkdOYW1lczo6aHJlZkF0dHIs
IGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7
Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1
ZXN0LCBYTGlua05hbWVzOjpocmVmQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlv
blN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNyY0F0dHIsIFdURjo6YmxhbmtVUkwoKS5z
dHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAgZGlk
QmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIFNWR05hbWVz
OjpocmVmQXR0ciwgV1RGOjpibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNy
Y0xpa2VBdHRyaWJ1dGUpOworICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0
ZUlmSW5qZWN0ZWQocmVxdWVzdCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIFdURjo6YmxhbmtVUkwo
KS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKICAgICB9CiAK
ICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHQ7CkBAIC00NjEsNyArNDYxLDcgQEAgYm9vbCBYU1NB
dWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVl
c3QpCiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29udGFp
bmVkSW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRTbmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsK
LSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVl
c3QsIGRhdGFBdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xp
a2VBdHRyaWJ1dGUpOworICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlm
SW5qZWN0ZWQocmVxdWVzdCwgZGF0YUF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1
bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQg
fD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHR5cGVBdHRyKTsKICAgICAgICAg
ZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGNsYXNz
aWRBdHRyKTsKICAgICB9CkBAIC00ODEsNyArNDgxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0
ZXJQYXJhbVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBpZiAo
IUhUTUxQYXJhbUVsZW1lbnQ6OmlzVVJMUGFyYW1ldGVyKFN0cmluZyhuYW1lQXR0cmlidXRlLnZh
bHVlKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJpYnV0
ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVBdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVu
Y2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0
ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCks
IFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRv
cjo6ZmlsdGVyRW1iZWRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBA
IC00OTIsNyArNDkyLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0
IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0g
ZmFsc2U7CiAgICAgaWYgKGlzQ29udGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRTbmlwcGV0
Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VB
dHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGNvZGVBdHRyLCBTdHJpbmcoKSwgVHJ1bmNhdGlv
blN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5n
KCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CisgICAgICAgIGRpZEJsb2Nr
U2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBzcmNBdHRyLCBXVEY6
OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7
CiAgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1
ZXN0LCB0eXBlQXR0cik7CiAgICAgfQogICAgIHJldHVybiBkaWRCbG9ja1NjcmlwdDsKQEAgLTU0
NCw3ICs1NDQsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbihjb25zdCBGaWx0
ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9r
ZW4sIGZvcm1UYWcpKTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVx
dWVzdCwgYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgcmV0dXJuIGVyYXNl
QXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBhY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCku
c3RyaW5nKCkpOwogfQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlcklucHV0VG9rZW4oY29uc3Qg
RmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNTUyLDcgKzU1Miw3IEBAIGJvb2wgWFNT
QXVkaXRvcjo6ZmlsdGVySW5wdXRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVl
c3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRU
YWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGlucHV0VGFnKSk7CiAKLSAg
ICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRy
LCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUp
OworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZm9ybWFjdGlv
bkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtl
QXR0cmlidXRlKTsKIH0KIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tlbihjb25z
dCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC01NjAsNyArNTYwLDcgQEAgYm9vbCBY
U1NBdWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJl
cXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3Rh
cnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGJ1dHRvblRhZykpOwog
Ci0gICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBmb3JtYWN0aW9u
QXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmli
dXRlKTsKKyAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGZvcm1h
Y3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3Jj
TGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZXJhc2VEYW5nZXJvdXNBdHRy
aWJ1dGVzSWZJbmplY3RlZChjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC01
NzMsNyArNTczLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJ
ZkluamVjdGVkKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmUKICAgICAgICAgYm9vbCBpc0lu
bGluZUV2ZW50SGFuZGxlciA9IGlzTmFtZU9mSW5saW5lRXZlbnRIYW5kbGVyKGF0dHJpYnV0ZS5u
YW1lKTsKICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBkaWRuJ3Qg
Y3JlYXRlIGEgbmV3IFN0cmluZyBmb3IgZXZlcnkgYXR0cmlidXRlIGluIHRoZSBkb2N1bWVudC4K
ICAgICAgICAgU3RyaW5nIHN0cmlwcGVkVmFsdWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoU3RyaW5nKGF0dHJpYnV0ZS52YWx1ZSkpOwotICAgICAgICBib29sIHZhbHVlQ29u
dGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lubGluZUV2ZW50SGFuZGxlciAmJiBwcm90b2NvbElz
SmF2YVNjcmlwdChzdHJpcHBlZFZhbHVlKSkgfHwgKGlzU2VtaWNvbG9uU2VwYXJhdGVkQXR0cmli
dXRlKGF0dHJpYnV0ZSkgJiYgc2VtaWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3Jp
cHRVUkwoc3RyaXBwZWRWYWx1ZSkpOworICAgICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2Ny
aXB0VVJMID0gKCFpc0lubGluZUV2ZW50SGFuZGxlciAmJiBXVEY6OnByb3RvY29sSXNKYXZhU2Ny
aXB0KHN0cmlwcGVkVmFsdWUpKSB8fCAoaXNTZW1pY29sb25TZXBhcmF0ZWRBdHRyaWJ1dGUoYXR0
cmlidXRlKSAmJiBzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTChz
dHJpcHBlZFZhbHVlKSk7CiAgICAgICAgIGlmICghaXNJbmxpbmVFdmVudEhhbmRsZXIgJiYgIXZh
bHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGlmICghaXNDb250YWluZWRJblJlcXVlc3QoY2Fub25pY2FsaXplKHNuaXBwZXRGcm9tQXR0cmli
dXRlKHJlcXVlc3QsIGF0dHJpYnV0ZSksIFRydW5jYXRpb25TdHlsZTo6U2NyaXB0TGlrZUF0dHJp
YnV0ZSkpKQpAQCAtNzI3LDcgKzcyNyw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZl
UmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgLy8gR2l2ZSBlbXB0eSBVUkxzIGFuZCBh
Ym91dDpibGFuayBhIHBhc3MuIE1ha2luZyBhIHJlc291cmNlVVJMIGZyb20gYW4KICAgICAvLyBl
bXB0eSBzdHJpbmcgYmVsb3cgd2lsbCBsaWtlbHkgbGF0ZXIgZmFpbCB0aGUgIm5vIHF1ZXJ5IGFy
Z3MgdGVzdCIgYXMKICAgICAvLyBpdCBpbmhlcml0cyB0aGUgZG9jdW1lbnQncyBxdWVyeSBhcmdz
LgotICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVybCA9PSBibGFua1VSTCgpLnN0cmluZygpKQor
ICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVybCA9PSBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgdGhlIHJlc291cmNlIGlzIGxvYWRl
ZCBmcm9tIHRoZSBzYW1lIGhvc3QgYXMgdGhlIGVuY2xvc2luZyBwYWdlLCBpdCdzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgKaW5kZXggZGM4MmFkZDdjN2Y1YmRkYTNjYWI1
MzRkZmFhMTA5YmZkMTkwYmMyNy4uMTJlYzk4YzA5MmZmNjUwNGNkZTUzZmZmOTM2ODFlMDI1MTEw
MDUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaApAQCAtMjcsNyAr
MjcsNyBAQAogCiAjaW5jbHVkZSAiSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMu
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU3Vm
Zml4VHJlZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCmluZGV4IDY3YTMyZWQ5MzBkN2Q5
ZGQ0ZGFjNDA4OTIyMGJkZjNmMmFkNzZlODcuLjYwNTE1OWIyZmFmYTRjZjg3MWFlNjU2ZjEwYWY0
M2YwMDFlOTNmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3JEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0
b3JEZWxlZ2F0ZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQ
b3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IGM3MzRkYTJiZWFlMTM4
NDUyN2Q3NzJhZTliZTE4YjM3ZjU0NDVjOGIuLjI2YWI2ZGY5NTI0YTRlNjk4MTQ4ODE1MjVlZGM4
N2Y2NjA4NmI4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZEhvc3Q6OmtpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzaG91bGRQcmVwZW5k
VG9LaWwKIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYihjb25zdCBT
dHJpbmcmIHVybCkKIHsKLSAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJs
KSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV9jbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZGRlMjEyMmNjZWQwMGE4ZTMyMGNm
NDQwOThmYWQwNjY1NzY0Nzk3MC4uOGMzNzJmYWFmN2VkOGVlZDM5OGI1YTZjZDdlNTRmYThmNmVl
YzQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaApAQCAtODgsNyArODgsNiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgVGlt
ZXJCYXNlOwotY2xhc3MgVVJMOwogI2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3Jh
bTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDMzMzEwNzgxY2FhYjViNTE1MmQ2MWZj
NTY2NjhhNDljYzM1MjQ0YzYuLjdjNjc0NDYxMjA1NzA3OThjYWZkNzgwMTVmYWQ5OWQ2MDg3MzE0
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAKICNpbmNsdWRlICJTdWJy
ZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgIldlYlNvY2tl
dENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5k
ZXggNjRkMGUwNDU4MDI1OTVmZjMwNWM5YTM2YzExMjJkMTY2NDM3OGM5NC4uYjY4NTkwZjFiODQw
ODgyODRhOGE1NWZjNzVkMGU1NTlkNDkwOWJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC01OCw3ICs1
OCw2IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7Ci1jbGFzcyBV
Ukw7CiBjbGFzcyBXZWJTb2NrZXQ7CiAKIHN0cnVjdCBXZWJTb2NrZXRGcmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmlu
ZGV4IDY3MDlmNTJiZTAzNDMyYjJjNTVlYjk0NzFiYzRjMGRiMjVkMDg2YzcuLjcyZjYzYmQ4OTYy
NWI2MjY5Y2JmN2E2M2YxMjUyMTVmNDE1NzViNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNDksNyArNDksNiBA
QCBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVj
dDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRleCA3Mjg4Y2ZmZTRjZjJlOGZlYmViMGM2MTBkNDZi
N2VjYWZiYzY1ZjRkLi41ZTA0MGM5NTRkNGI1MTRhMTQ5MDNjMDcyMDcwYmVjZGUwNjBjYmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvcldvcmtl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFBhZ2U7Ci1jbGFzcyBVUkw7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaApp
bmRleCA4YjY0MzFhYjQyMmYyY2I2Yzk0OGQ4Y2Y4ZWJiNTUxMTcxMTdkZGJhLi4xYjBmNzYwZDJl
Y2ViZDVjMjhlZjVjMmVjNDJlZGExMmYwM2YzYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKQEAgLTMwLDggKzMwLDggQEAKICNp
bmNsdWRlICJBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5k
ZXggNWZhNzA1ZDhhODVmZjE1ODY4OTA2NWZjOGJjZDg4YjNmYzk4YjRlNC4uYjliOWYzNzQ5NzQz
ZWQ0OGY3MzhhM2ZkOGU3MmE2OWE0ZDAwOWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIu
aApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVu
dDsKLWNsYXNzIFVSTDsKIHN0cnVjdCBDb29raWU7CiBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuaAppbmRleCBkMmIwOWJkNWRiNTY3NmMwMWFiZjgyM2QzZjA3MjJhNzcwZWE1
NDBiLi4yYWYzZDRhMWM1MjA5MTI5M2RlMWM0ODNhMmZjMTczYWM2NmVhMjc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCkBAIC00MCw3
ICs0MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7
CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oCmluZGV4IGRj
MDcxMzBhMWIxNDY1M2JkMWRmNWJlZWU5ODgwOWUzYjcyZWZiZTMuLjk2NWRlNmY4YTA3YmRjNzhj
MDhlMGYxYzJlNzIxOWUxZWRhNDA0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaApAQCAtMjcsOSArMjcsOSBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIgot
I2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDY2ZmQ2YTg2YTg0NWFkNGRmMWIwZTA1YmNh
ZDc1YzIwMzIzNDgxY2EuLmRhNmIyYWJlMTEzOGQ4ZjQxYTMwYWJjN2QxOTc2NGI4ODdmNmQwZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNjM1LDcgKzYz
NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAgICAgICAgIHN3aXRjaCAoc2hvdWxkQ29u
dGludWUpIHsKICAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbjoKICAg
ICAgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2FyZCB0
byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sgdG8g
cmVzdW1lLgotICAgICAgICAgICAgcmVxdWVzdCA9IHsgYmxhbmtVUkwoKSB9OworICAgICAgICAg
ICAgcmVxdWVzdCA9IHsgV1RGOjpibGFua1VSTCgpIH07CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Tm86CiAgICAgICAgICAgICBzdG9wTG9hZGluZ0Zv
clBvbGljeUNoYW5nZSgpOwpAQCAtMTY2Nyw3ICsxNjY3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRl
cjo6bWF5YmVMb2FkRW1wdHkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9y
ZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSAmJiAhZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCku
Y3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKSB7Ci0gICAgICAgIG1fcmVxdWVzdC5zZXRV
UkwoYmxhbmtVUkwoKSk7CisgICAgICAgIG1fcmVxdWVzdC5zZXRVUkwoV1RGOjpibGFua1VSTCgp
KTsKICAgICAgICAgaWYgKGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKQogICAgICAgICAgICAgZnJh
bWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYWM5NDhjY2Rh
ZGQwYWExYzVlMWJlN2EwMWVhMTYwOTAxYzFmYTM3NC4uZTlmNTAzY2M2ZjYzNGVlMTAzNjdhZGE3
ODdkMTY2MjEwNmMxMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
QEAgLTIzNCw3ICsyMzQsNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcgogICAgIFN0cmluZyBjbGll
bnRSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHVybEZvckhp
c3RvcnkoKTsgfQogICAgIHZvaWQgc2V0Q2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KGNv
bnN0IFN0cmluZyYgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KSB7IG1fY2xpZW50UmVk
aXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OyB9
CiAgICAgCi0gICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpIGNvbnN0
IHsgcmV0dXJuICh1cmxGb3JIaXN0b3J5KCkgPT0gdXJsKCkgfHwgdXJsKCkgPT0gYmxhbmtVUkwo
KSkgPyBTdHJpbmcoKSA6IHVybEZvckhpc3RvcnkoKS5zdHJpbmcoKTsgfSAvLyBudWxsIGlmIG5v
IHNlcnZlciByZWRpcmVjdCBvY2N1cnJlZC4KKyAgICBTdHJpbmcgc2VydmVyUmVkaXJlY3RTb3Vy
Y2VGb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gKHVybEZvckhpc3RvcnkoKSA9PSB1cmwoKSB8
fCB1cmwoKSA9PSBXVEY6OmJsYW5rVVJMKCkpID8gU3RyaW5nKCkgOiB1cmxGb3JIaXN0b3J5KCku
c3RyaW5nKCk7IH0gLy8gbnVsbCBpZiBubyBzZXJ2ZXIgcmVkaXJlY3Qgb2NjdXJyZWQuCiAgICAg
U3RyaW5nIHNlcnZlclJlZGlyZWN0RGVzdGluYXRpb25Gb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1
cm4gdXJsKCk7IH0KIAogICAgIGJvb2wgZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgY29u
c3QgeyByZXR1cm4gbV9kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggMzg1ZmI2NDA3YmE0MTliYmI4NjY3Y2JjNTA5
OTdjMWIwZDRiZjIxNC4uMzA0OGM1OWU1NzUxMzdkODVlMGE5OWNlOTJjNTBlM2RlN2JhZjY0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTI4LDcgKzI4LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKaW5kZXggNGNkZjQ4Yjc3YzZkMDVl
MmU2NTU3OWE0MzIxNDgzMDhkODQ4ZWJjOS4uZjlhY2NmMTcyMTViYjA2YTZmODk2NmNmMDIxNzk5
YmVkNThlM2QxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKQEAgLTMy
LDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5k
ZXggYjNhZTZhYjBlM2Q0OWEwZGI2MTM3NWEzYzdkY2ZkMjgyMDQ0NDhkMi4uOWQwMjk3YjFiNDc1
N2QyOGIzMDNhYzBiZDM4NmY5YzYzMjc1MDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9y
bShSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvbikKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkp
IHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24o
KSkpIHsKICAgICAgICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT5hbGxvd0Zvcm1BY3Rpb24oVVJMKHN1Ym1pc3Npb24tPmFjdGlvbigpKSkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlv
biA9IHRydWU7CkBAIC02OTksNyArNjk5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRG
aXJzdERhdGEoKQogICAgIGlmICghcGFyc2VIVFRQUmVmcmVzaChkb2N1bWVudExvYWRlci5yZXNw
b25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmVmcmVzaCksIGRlbGF5LCB1
cmxTdHJpbmcpKQogICAgICAgICByZXR1cm47CiAgICAgYXV0byBjb21wbGV0ZWRVUkwgPSB1cmxT
dHJpbmcuaXNFbXB0eSgpID8gZG9jdW1lbnQudXJsKCkgOiBkb2N1bWVudC5jb21wbGV0ZVVSTCh1
cmxTdHJpbmcpOwotICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkK
KyAgICBpZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKICAgICAg
ICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkb2N1bWVu
dCwgZGVsYXksIGNvbXBsZXRlZFVSTCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gbWVzc2Fn
ZSA9ICJSZWZ1c2VkIHRvIHJlZnJlc2ggIiArIGRvY3VtZW50LnVybCgpLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0byBhIGphdmFzY3JpcHQ6IFVSTCI7CkBAIC0zMzU1LDcg
KzMzNTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Q
b2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogCiAgICAgICAgIC8vIFdlIGhhbmRs
ZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2gg
bGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sgdG8gcmVzdW1lLgogICAgICAgICBpZiAo
c2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pCi0gICAgICAg
ICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPndpbGxDb250aW51ZU1haW5SZXNvdXJj
ZUxvYWRBZnRlclJlZGlyZWN0KHsgYmxhbmtVUkwoKSB9KTsKKyAgICAgICAgICAgIG1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlci0+d2lsbENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVk
aXJlY3QoeyBXVEY6OmJsYW5rVVJMKCkgfSk7CiAKICAgICAgICAgbV9wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2Uoc2hvdWxkQ29udGludWUpOwogICAg
IH07CkBAIC0zOTA2LDcgKzM5MDYsNyBAQCBSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFt
ZSYgb3BlbmVyRnJhbWUsIEZyYW1lJiBsb29rdXBGcmFtZSwgRnJhbWVMb2FkUmVxdQogICAgIGNy
ZWF0ZWQgPSBmYWxzZTsKIAogICAgIC8vIEZJWE1FOiBQcm92aWRlIGxpbmUgbnVtYmVyIGluZm9y
bWF0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgb3BlbmVyJ3MgZG9jdW1lbnQuCi0gICAgaWYgKHBy
b3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpICYmICFv
cGVuZXJGcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZh
U2NyaXB0VVJMcyhvcGVuZXJGcmFtZS5kb2N1bWVudCgpLT51cmwoKSwgeyB9KSkKKyAgICBpZiAo
V1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgp
KSAmJiAhb3BlbmVyRnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93SmF2YVNjcmlwdFVSTHMob3BlbmVyRnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIHsgfSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlz
RW1wdHkoKSAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0LmZyYW1lTmFtZSgpLCAi
X2JsYW5rIikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggMWI5MTFhMmI3ZDI5MjJiYTM2Njk1ZDRkOTI2MzA0MGY1MGYyZmYzZi4uOTA0ZWQ5NjJmNzk3
OTNjODNlY2I3ZDgxNWY0NTA2ZmZjODUwYTVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEwMCw3ICsxMDAsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
dWJzdGl0dXRlRGF0YTsKLWNsYXNzIFVSTDsKIGNsYXNzIFdpZGdldDsKIAogZW51bSBjbGFzcyBQ
b2xpY3lEZWNpc2lvbk1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcAppbmRleCA5ZmJhODM1YTQ1NTI5ZWVjOTE5MDBjMmYzYjJlYjUwYjcxODg4NGQ4Li41
MGJkMTM4ZjAyZTM0YjE0YTM5MTllMzY3ZWQ3ODFiZGJjNzliYjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBib29s
IEhpc3RvcnlDb250cm9sbGVyOjpjdXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdAog
ICAgIC8vICAiSWYgdGhlIGJyb3dzaW5nIGNvbnRleHQncyBzZXNzaW9uIGhpc3RvcnkgY29udGFp
bnMgb25seSBvbmUgRG9jdW1lbnQsCiAgICAgLy8gICBhbmQgdGhhdCB3YXMgdGhlIGFib3V0OmJs
YW5rIERvY3VtZW50IGNyZWF0ZWQgd2hlbiB0aGUgYnJvd3NpbmcgY29udGV4dAogICAgIC8vICAg
d2FzIGNyZWF0ZWQsIHRoZW4gdGhlIG5hdmlnYXRpb24gbXVzdCBiZSBkb25lIHdpdGggcmVwbGFj
ZW1lbnQgZW5hYmxlZC4iCi0gICAgcmV0dXJuIG1fY3VycmVudEl0ZW0gJiYgIW1fcHJldmlvdXNJ
dGVtICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9jdXJyZW50SXRlbS0+dXJsU3RyaW5nKCks
IGJsYW5rVVJMKCkpOworICAgIHJldHVybiBtX2N1cnJlbnRJdGVtICYmICFtX3ByZXZpb3VzSXRl
bSAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fY3VycmVudEl0ZW0tPnVybFN0cmluZygpLCBX
VEY6OmJsYW5rVVJMKCkpOwogfQogCiB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpjbGVhclByZXZp
b3VzSXRlbSgpCkBAIC02NTQsOSArNjU0LDkgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5p
dGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAgLy8gTGF0ZXIgd2UgbWF5IHdhbnQg
dG8gbGVhcm4gdG8gbGl2ZSB3aXRoIG5pbCBmb3IgVVJMLgogICAgIC8vIFNlZSBidWcgMzM2ODIz
NiBhbmQgcmVsYXRlZCBidWdzIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgIGlmICh1cmwuaXNF
bXB0eSgpKSAKLSAgICAgICAgdXJsID0gYmxhbmtVUkwoKTsKKyAgICAgICAgdXJsID0gV1RGOjpi
bGFua1VSTCgpOwogICAgIGlmIChvcmlnaW5hbFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIG9yaWdp
bmFsVVJMID0gYmxhbmtVUkwoKTsKKyAgICAgICAgb3JpZ2luYWxVUkwgPSBXVEY6OmJsYW5rVVJM
KCk7CiAgICAgCiAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9hZGVy
LT50aXRsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCAwMWQxZWZjMzE1
YTViMDJkMDY5OWU5YWM0NWRmZDEzNjg3OGY0YWIxLi41NGQ3MjIzMTBkOGRmZjkyMWYxZTlkZTA1
NDViZDllMWM2MjA5NDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTQxLDcg
KzQxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBV
Ukw7CiBjbGFzcyBMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50OwogCiBzdHJ1Y3QgTGlua1JlbEF0
dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZFRpbWluZy5oCmluZGV4IDczZjllZjk0YWZkNjI1
NWQ1YTNmNTc0NTgyZDMwYTY0ZjIxZDE0NjQuLmZlYTdjNDFmY2U2MDI1MjZlMzZhYThlZGI2ZWFi
NDY1Njk4NThjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRUaW1pbmcuaApAQCAtMjUsMTMgKzI1
LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgTG9hZFRpbWluZyB7CiBw
dWJsaWM6CiAgICAgU2Vjb25kcyBzZWNvbmRzU2luY2VTdGFydFRpbWUoTW9ub3RvbmljVGltZSkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IDU5Njc4MmM2
NTdjYWM1MDgyY2FmZTFjZTRiMWMxNmZmYjlhNjhkNGQuLjI4NWU2ODA5Y2U0NWUyMjEyNDQ0Njlm
Zjk1NWFlNTVlZmRlYjUxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5o
CkBAIC01MSw3ICs1MSw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwot
Y2xhc3MgVVJMOwogCiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKaW5kZXggMDUwY2I3OWVhNjU3N2Q1M2EwMzM1
MjA2YmQ0NjBlYTQ0NzNmMjM3Ny4uZmFkZTAxYjdjMWQwYmVjODQ2MzY3ZmY1YTYyN2Q5M2RmMWYw
OWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNw
cApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3Jt
Rm9yTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpCiB7CiAgICAgLy8g
VW5jb25kaXRpb25hbGx5IGFsbG93IGphdmFzY3JpcHQ6IFVSTHMgYXMgZm9ybSBhY3Rpb25zIGFz
IHNvbWUgcGFnZXMgZG8gdGhpcyBhbmQgaXQgZG9lcyBub3QgaW50cm9kdWNlCiAgICAgLy8gYSBt
aXhlZCBjb250ZW50IGlzc3VlLgotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQor
ICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmICghaXNNaXhlZENvbnRlbnQoc2VjdXJpdHlPcmlnaW4sIHVybCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaAppbmRleCBhMjZhODU3OTdkM2E4
Y2IwYzI5MzNkZjI0Nzc2YjY5NWI3MGQ0NDM0Li41ZmRmZmY4MGEzMTg3NDM3MTgzODg5MGI1ZTI0
MDRlYTAwOWYxMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250
ZW50Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVj
a2VyLmgKQEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50OwotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKIGNsYXNzIE1peGVkQ29udGVudENoZWNrZXIgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IGE4ZjgwYmUxMzgyMDdkYzdhYTZj
NmMxNDY5NzNkMGRiOWU0YjliMWMuLjg4ZTcwNTE2ZDZjZTkzZDM2ZWM4M2FiMmM4ZDQzYjdmYzQ1
ZGEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5j
cHAKQEAgLTM2Niw3ICszNjYsNyBAQCBpbmxpbmUgYm9vbCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
aG91bGRTY2hlZHVsZU5hdmlnYXRpb24oY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYg
KCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNK
YXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBOYXZpZ2F0
aW9uRGlzYWJsZXI6OmlzTmF2aWdhdGlvbkFsbG93ZWQobV9mcmFtZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAppbmRleCAwNDU5MzE4MTkxNzY0OWJi
Mjk4NzUzNTVlMzM4NzIwNzM1NDMyMTk0Li42ZmJlMmE1YjNkYmM5NmZjYmQ0NTA5MjU1OTc4NGU4
ZGQwY2Q2YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNj
aGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3MgRm9ybVN1Ym1pc3Npb247CiBjbGFzcyBGcmFtZTsK
IGNsYXNzIFNjaGVkdWxlZE5hdmlnYXRpb247CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNz
IFVSTDsKIAogY2xhc3MgTmF2aWdhdGlvblNjaGVkdWxlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1BpbmdMb2FkZXIuaAppbmRleCAxNTQ4OWRjZjA0YmYxZGVkNzg4NmVmOGMwODYxN2RkYmMx
M2Q5YTE4Li42ZGVlZjQ1MTY5YTllNWNhMzBhOWYyZjgzMzQyMzc5ZDM5OWIxZGIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7
Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKIGVudW0gY2xhc3MgVmlvbGF0
aW9uUmVwb3J0VHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkSW5mby5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaApp
bmRleCA5YjYzMzBlZDQ3YmFjNjZkZWEyMmI4NGUxOWNmMWQwMGIwNmEyM2MxLi4xYzEyM2QwNmY3
YWQ2NzUyMjlkNmM1ZTAxZjkyNTFhNjhiMTYyMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRJbmZvLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggN2JkZmM0OGY1ZDQwNTliZTZhYjhiYjlh
MjVlYjA4MzUwZTg5MDE5OS4uMTI3MjNiMzQyY2I1YzI2NTJmM2UxNGFkNGFjM2MyZDFjNDBmNmZi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3Bw
CkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgU3RyaW5nJiBkb21haW5JCiAgICAgYXV0byBv
cGVuZXJQcmltYXJ5RG9tYWluID0gcHJpbWFyeURvbWFpbihvcGVuZXJVcmwpOwogICAgIGlmIChk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgIT0gb3BlbmVyUHJpbWFyeURvbWFpbgogICAgICAg
ICAmJiAhb3BlbmVyRG9jdW1lbnQuaGFzUmVxdWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vz
c1dpdGhVc2VySW50ZXJhY3Rpb24oZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKQotICAgICAg
ICAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShvcGVuZXJVcmwuc3RyaW5nKCksIGJsYW5rVVJM
KCkpKSB7CisgICAgICAgICYmICFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG9wZW5lclVybC5zdHJp
bmcoKSwgV1RGOjpibGFua1VSTCgpKSkgewogICAgICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXJDYWxsYmFjayhkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBh
Z2VJRCwgb3BlbmVyUHJpbWFyeURvbWFpbik7CiAgICAgICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50
ZXJhY3Rpb24tYmFzZWQgcmVxdWVzdHMgc2luY2UgdGhleSBkb24ndCBuZWVkIHRvIGJlIHJlcGVh
dGVkLgogICAgICAgICBvcGVuZXJEb2N1bWVudC5zZXRIYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNT
dG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRl
eCBhZTJjYWUyNzgwOTE3NTU4M2YyZWJiNDMzNjVhMTAxOWExNDcxMDg3Li4yYWJmYzUwMzM0YzE3
ZDg5ZTJiNmZmYmRjMzhhMzgyYTFmMTA2ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtNDcsNyArNDcsNiBAQCBjbGFzcyBQYWdlOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaAppbmRleCBmOTRkNmZkMTllNzc0NmRmNWU2ODNhOTU3ZjBmZDk5YTc3MmQzMjFhLi4wODI0
NjlkYTEyYTA0MGIzMThjNDJhZjNjNjc0Y2Q4MGMwZmQ2ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgKQEAgLTI2LDEwICsyNiwxMCBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDZiYTU1MjZjMGFmNTZlOTYyMzU2MWRiNDdjZDFi
YWZmODEzMTk2Y2MuLmEwYjdkODQ5ODUwMmIwZTcyMzdhZjFhMDFhMjFiNmJkN2E5NTg5YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC01Miw3ICs1Miw2IEBAIGNs
YXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7
CiBjbGFzcyBQcmV2aWV3TG9hZGVyOwotY2xhc3MgVVJMOwogCiBjbGFzcyBSZXNvdXJjZUxvYWRl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNl
SGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZVRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5n
LmgKaW5kZXggNmM5YWNiMTkzYTY3MDIzYmI1ZGMzNmJhYzRkYTdlNzk4ODM0NDNiZS4uN2VmOGRi
Yzg1MTRkY2VjZmYxYjA3ZjQ1MDM3MDM3ZjhlODg0ODgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlVGltaW5nLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5n
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiU2VydmVyVGlt
aW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFt
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IDVkN2QzOGMzYjA3MjNiNzE4NjA5YWQ4N2IxMGU3NTIxNjRkZTg3MzYuLjU1YTE2ODQ4MzFi
ZDAxZjZlMGM0YTYxZmM3Yjc3YmI1NzdlZDg4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YmZyYW1lTG9hZGVyLmNwcApAQCAtNzcsMTQgKzc3LDE0IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6
OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmIG93bmVyRWxlbWVudCwgY29uc3Qg
U3RyCiAgICAgLy8gU3VwcG9ydCBmb3IgPGZyYW1lIHNyYz0iamF2YXNjcmlwdDpzdHJpbmciPgog
ICAgIFVSTCBzY3JpcHRVUkw7CiAgICAgVVJMIHVybDsKLSAgICBpZiAocHJvdG9jb2xJc0phdmFT
Y3JpcHQodXJsU3RyaW5nKSkgeworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVy
bFN0cmluZykpIHsKICAgICAgICAgc2NyaXB0VVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsg
Ly8gY29tcGxldGVVUkwoKSBlbmNvZGVzIHRoZSBVUkwuCi0gICAgICAgIHVybCA9IGJsYW5rVVJM
KCk7CisgICAgICAgIHVybCA9IFdURjo6YmxhbmtVUkwoKTsKICAgICB9IGVsc2UKICAgICAgICAg
dXJsID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsKIAogICAgIGlmIChzaG91bGRDb252ZXJ0SW52
YWxpZFVSTHNUb0JsYW5rKCkgJiYgIXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHVybCA9IGJsYW5r
VVJMKCk7CisgICAgICAgIHVybCA9IFdURjo6YmxhbmtVUkwoKTsKIAogICAgIGJvb2wgaGFzRXhp
c3RpbmdGcmFtZSA9IG93bmVyRWxlbWVudC5jb250ZW50RnJhbWUoKTsKICAgICBGcmFtZSogZnJh
bWUgPSBsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKG93bmVyRWxlbWVudCwgdXJsLCBmcmFtZU5hbWUs
IGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKQEAgLTk0LDcgKzk0LDcgQEAgYm9v
bCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3du
ZXJFbGVtZW50LCBjb25zdCBTdHIKICAgICAvLyBJZiB3ZSBjcmVhdGUgYSBuZXcgc3ViZnJhbWUg
dGhlbiBhbiBlbXB0eSBkb2N1bWVudCBpcyBsb2FkZWQgaW50byBpdCBzeW5jaHJvbm91c2x5IGFu
ZCBtYXkKICAgICAvLyBjYXVzZSBzY3JpcHQgZXhlY3V0aW9uIChzYXksIHZpYSBhIERPTSBsb2Fk
IGV2ZW50IGhhbmRsZXIpIHRoYXQgY2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcKICAgICAvLyBu
YXZpZ2F0aW5nIHRoZSBzdWJmcmFtZS4gV2Ugb25seSB3YW50IHRvIGV2YWx1YXRlIHNjcmlwdFVS
TCBpZiB0aGUgZnJhbWUgaGFzIG5vdCBiZWVuIG5hdmlnYXRlZC4KLSAgICBib29sIGNhbkV4ZWN1
dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxVUkwo
KSA9PSBibGFua1VSTCgpKTsKKyAgICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGlu
Z0ZyYW1lIHx8IChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxVUkwoKSA9PSBXVEY6OmJsYW5rVVJMKCkp
OwogICAgIGlmICghc2NyaXB0VVJMLmlzRW1wdHkoKSAmJiBjYW5FeGVjdXRlU2NyaXB0ICYmIG93
bmVyRWxlbWVudC5pc1VSTEFsbG93ZWQoc2NyaXB0VVJMKSkKICAgICAgICAgZnJhbWUtPnNjcmlw
dCgpLmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoc2NyaXB0VVJMKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3ViZnJhbWVMb2FkZXIuaAppbmRleCA0ODk2ZDYyZjQ1ZjFmODFkOTBkZTc0MDJlMjA5NzA0
MWE2ZWIwNjRjLi4yY2FhZTljYTYwOThhNzUzM2MzMDkzODk2ZGMyMDMxMjZlNjg5NDc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFz
cyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3Mg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBVUkw7CiBjbGFz
cyBXaWRnZXQ7CiAKIC8vIFRoaXMgaXMgYSBzbGlnaHQgbWlzbm9tZXIuIEl0IGhhbmRsZXMgdGhl
IGhpZ2hlciBsZXZlbCBsb2dpYyBvZiBsb2FkaW5nIGJvdGggc3ViZnJhbWVzIGFuZCBwbHVnaW5z
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAppbmRleCBmMTAxMzUxNTk3MTk4
MTgyOWM2MTAxOTE3NTJiOTFhZjllYzdmYjc1Li43MDU2MzIxMzNkZjhlZjg1NjU5ODUyODdlNDEw
NjBiMWRiMzc5NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAt
MjcsOCArMjcsOCBAQAogCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKaW5kZXgg
NWRmNWY2MDE3Y2U0YzAzYjc4OGJlOThiZWI3YjZlMTdiYjA0MGI2ZS4uNjEzMTdiNTMxY2NjMWIw
NjI5YjIxZGJmMGE2N2NjZmVlYTZjZjQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIAog
dXNpbmcgRmFsbGJhY2tVUkxWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFVSTCwgVVJMPj47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuaAppbmRleCBhYmFhNzNlMTRhYjRiOGM3YWJhYjEwODhkZDhjMjM4ZTY5ZTJiNDFl
Li40N2Q4OTM0YmE5OTE0YTVhNTZkMTE0NmE3OTdlZGViODRkZjJkYmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5o
CkBAIC0yNywxMCArMjcsMTAgQEAKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5oIgogI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oCmluZGV4IGYyZmIxZjc4MzJiY2Q4MDQ2MmJjYWIwOGNlYmE3ZDEyNWI4NWEyNDMuLjBkMTMw
YTQ1ZjhhZjNiNDk5MDQyMTA1Yjk2MTAzOWZmNWZiZjM0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC0zMSw4
ICszMSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggODFjMjMy
MWYzMzk5YzMwNDAzMzc3NmQ5MjZkOGUzMDAzYjZlNDFhNS4uMDQwZDhiN2FkNmEwOTFlYjFjOWU0
MzViNWUwYzM0MDFmOTNhZTI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zNiw4ICszNiw4
IEBACiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA0OGNi
Zjg4ZTVkODkwMzcxMTM2MTg5NWNhMWMxMzJhNjQwYzdkOTA0Li42OGMzNjFlNTJiNDJkOTFkMzYx
ZTljYzgyOTBlZjM1YzM1MDE1MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtMzgsNyArMzgsNiBA
QCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwog
Y2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U7Ci1jbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdG9yYWdlSURKb3VybmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggY2I0
ODE1ODVmNGEwZGMzNjg5YzhlODE1ZTcwNmNhMjRjNDI2MDAxNS4uODQ0NjlmOGFkNGE5NGE4NDYy
ZTc2ZjNkOTEwYzMyZThiMTQxMjE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAi
TWFuaWZlc3RQYXJzZXIuaCIKIAogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKaW5k
ZXggZTc4MTA4OTNhMjA2OTBhY2U2M2FlYzNlYzg4ZTYwZWFmNjJmYzc4MC4uOGZlNDBhNjRlNDQ5
MGFhYzgyN2E2MWRiMGY0MDQ3YzFlZTg2MGIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIHN0cnVjdCBNYW5pZmVzdCB7CiAgICAgVmVj
dG9yPFVSTD4gb25saW5lV2hpdGVsaXN0ZWRVUkxzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBs
aWNpdFVSTHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgKaW5kZXggMzdkZjY4YjM2NmNmZjg1MzliOTVjODIz
ZjJlOTEyNGQzNWVhOTkzOC4uZTQ2MGI2OWMyYWVkNWQyNzlkZDU0YTBkZjlhZjAxMGI5NGJjNzdm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb24uaApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEFyY2hpdmU7CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7
CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCA2NDEyMjYy
ZTE1YjkxZjFhOWFlNTRhYzA1MTk1MTZiNmNhNjViODFmLi5hMWQzN2M3MDI5ZjI5N2E0MWY2ODNm
MDllNzg2NGE5ZGM4YjdiMDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTEsNiArNTAs
NyBAQAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKQEAgLTU2NCw3ICs1NjQsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8g
V3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0
ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkg
b3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlm
cmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwi
MFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9p
ZnJhbWU+IjsKLSAgICBhdXRvIGlmcmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBibGFua1VSTCgpLCAidGV4dC9odG1sIiwgIlVU
Ri04IiwgU3RyaW5nKCkpOworICAgIGF1dG8gaWZyYW1lUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3Vy
Y2U6OmNyZWF0ZSh1dGY4QnVmZmVyKGlmcmFtZU1hcmt1cCksIFdURjo6YmxhbmtVUkwoKSwgInRl
eHQvaHRtbCIsICJVVEYtOCIsIFN0cmluZygpKTsKIAogICAgIFZlY3RvcjxSZWY8TGVnYWN5V2Vi
QXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7CiAgICAgc3ViZnJhbWVBcmNoaXZlcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKaW5kZXggNWUxZTNmMWQzY2QxNGE0NmEyNzQ5YTQ4YTE5MzljYTJkNjM4
OGI0Yy4uOGY1ZGQyMDYxNzRmZjQ4NmY0MTJjZWRmODEyYTk4MGRkNjNkYzUyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC00NywxMSAr
NDcsMTEgQEAKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXgg
MDc3N2IxNzcyNGU5YjA1Y2VmNWVkNTRhM2FlZmMxZDExNDY3ZjRkNy4uMTBmNjljNmExMDUyOWYx
ZmQ5MTFhMWQwNzRlZjAzMDljMGY1Y2JiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3Mg
RG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVyOwogY2xhc3Mg
U2V0dGluZ3M7Ci1jbGFzcyBVUkw7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdXNpbmcgUmVz
b3VyY2VFcnJvck9yID0gRXhwZWN0ZWQ8VCwgUmVzb3VyY2VFcnJvcj47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaAppbmRleCBk
ZjQ2YmUyZDM3N2U0YzFkZTE4MmFkYWYxNGQ3MzlhMWY5N2NkYzAyLi4zOGJiMTk5OTAwODdjOGQ2
NjYxZjM2YTM2NjlkNGM5YWUzMzQ4MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKLWNsYXNzIFVS
TDsKIAogY2xhc3MgQ2FjaGVkU3R5bGVTaGVldENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJj
ZUNsaWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5oCmluZGV4IGQ3MTY3OThhNGNlMWQ5N2Q2MWQzMTNlOTUxOGI3ZGMyMjY5ZjcwNWMuLjJmY2Jk
MzE5ODVhNDc1YTMwZmYxNzdmNjMyOTQ2MjJmMDEyNTI5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC00MSw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSAgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCmluZGV4IDZh
YTU1Mzc0Zjc4YjY2NzdmNTcwOWEyYmQ5ZGNiNzE0YzE4ZmZkZmEuLjM0YTBmMzJiNGY1ZThkZjlh
NmMwM2VmNTc0MThmYzZhYTg1MWQzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
TG9hZGVyLmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQppbmRleCBmOTEw
ZWQ1YmRlMjQ5YmEzMWI4YTU4M2ZjNTQxZWY3YWFjY2MzY2MwLi5jYmUwMDA0ODA2Y2M1ODc0MjNk
OGRlYjBlZTQ4NGEwMWY3ZTA2ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
bWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMv
TG9hZGVyTlNVUkxFeHRyYXMubW0KQEAgLTMwLDExICszMCwxMSBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJMb2FkZXJOU1VSTEV4dHJhcy5oIgogCi0jaW1wb3J0IDx3dGYvQXNzZXJ0
aW9ucy5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1w
b3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3Rm
L1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCBjMTM5MDc2OGVmODY1ZjI2NjQxZTlhOTM0OGU2
ZTY2MGRiMDcyZGVhLi45MTZkM2Y1MTFiOTY1M2Q4NGNlN2FiM2YxNTExZjBiYjczNWI2YTJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIK
LSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlclN0
eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgIlZUVEN1ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGI1MTdiNTJlNzlkODg0ZDBlNzY4
NjUwYTYxM2ZmNzQ5ODIyNDVmNGEuLmE1NTBkNWIwYjc5YTk0MTg3N2EzZmJmNTQ5Njc0Y2RiMzNl
ZWJjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzgyLDcgKzM4Miw3IEBA
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIENocm9tZUNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIGVu
YWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVTdWRk
ZW5UZXJtaW5hdGlvbigpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbnRlbnRSdWxlTGlzdE5v
dGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxT
dHJpbmcsIFN0cmluZz4+JikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBjb250ZW50UnVsZUxpc3RO
b3RpZmljYXRpb24oY29uc3QgVVJMJiwgY29uc3QgSGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYpIHsgfTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9y
aWdpbi5oCmluZGV4IGFmN2NhOTI2NGE0ZjJmODVlOTQwYzliZDFkNDAxNmRmYTA5OTJjYzAuLmI4
NzUwNWEwNTA1NzllM2JmMTM4NTAyYTVlZmY0YTQ1NTJlZDFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
bGllbnRPcmlnaW4uaApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNsaWVudC5oCmluZGV4IDVlN2MzNWM5NzcxOGQ4OGY4NDFiZjQxODA0NTI0OTRhZDhmNzUx
OTIuLjg4OWVlOTk3NjEyOGQxYTk2NjdlMGE1MGEzNDhlNTEyYmU2ODcwNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKQEAgLTMxLDI5ICszMSwyOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBGcmFtZTsKLSAgICBjbGFzcyBVUkw7Ci0KLSAg
ICBjbGFzcyBDb250ZXh0TWVudUNsaWVudCB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFs
IH5Db250ZXh0TWVudUNsaWVudCgpID0gZGVmYXVsdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNv
bnRleHRNZW51RGVzdHJveWVkKCkgPSAwOwotICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJsKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBz
ZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
bG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgPSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
cGVha2luZygpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYp
ID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0b3BTcGVha2luZygpID0gMDsKK2NsYXNzIEZy
YW1lOworCitjbGFzcyBDb250ZXh0TWVudUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
Q29udGV4dE1lbnVDbGllbnQoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRN
ZW51RGVzdHJveWVkKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChj
b25zdCBVUkwmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3Qg
RnJhbWUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSop
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc3BlYWsoY29uc3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtp
bmcoKSA9IDA7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgdmlydHVhbCB2b2lkIHNl
YXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90
bGlnaHQoKSA9IDA7CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVO
VVMpCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpID0gMDsKICNlbmRpZgotICAgIH07Cit9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcAppbmRleCA2ODEyNmJhOTZlOGJmMTdlNzY4OTNlMWViYWFjZjU0OTQw
ZjJmYmM3Li5hM2U1ZWFlODk0ZDY0Mjc2MzdkZDg0NWVkYWFkZTcxYzYxNTFjMWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xMzM2LDcg
KzEzMzYsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVl
ZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2s6CiAjaWYgUExB
VEZPUk0oTUFDKQotICAgICAgICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMobV9jb250ZXh0
LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksICJmaWxlIikpCisgICAgICAgICAg
ICBpZiAoV1RGOjpwcm90b2NvbElzKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJ
bWFnZVVSTCgpLCAiZmlsZSIpKQogICAgICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZhbHNl
OwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJ
dGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1l
bnVJdGVtVGFnRG93bmxvYWRWaWRlb1RvRGlzaygpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkQXVkaW9U
b0Rpc2soKSk7Ci0gICAgICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJcyhtX2NvbnRleHQu
aGl0VGVzdFJlc3VsdCgpLmFic29sdXRlSW1hZ2VVUkwoKSwgImZpbGUiKSkKKyAgICAgICAgICAg
IGlmIChXVEY6OnByb3RvY29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUlt
YWdlVVJMKCksICJmaWxlIikpCiAgICAgICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5
TWVkaWFMaW5rVG9DbGlwYm9hcmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggN2Jk
ZTFjYmI4YjYzNzFlN2E3YTA4YmE1NTFlODU2YjgxOTJmNjBmYy4uMWQ2ZGQ3Y2E3Yjg4ZjhmOTNh
OWMyNDlkNDlhZTE3NTdmOTAzMDRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAt
MTAxLDcgKzEwMSw3IEBACiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0
eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdWRkZW5UZXJtaW5hdGlvbi5oIgotI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRv
ci5oIgogI2luY2x1ZGUgIlZpc3VhbFZpZXdwb3J0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9pbnQu
aCIKQEAgLTIyMTUsNyArMjIxNSw3IEBAIFN0cmluZyBET01XaW5kb3c6OmNyb3NzRG9tYWluQWNj
ZXNzRXJyb3JNZXNzYWdlKGNvbnN0IERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBJCiAKIGJvb2wg
RE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBpZiAoIXByb3RvY29sSXNKYXZhU2Ny
aXB0KHVybFN0cmluZykpCisgICAgaWYgKCFXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0
cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIElmIHRoaXMgRE9NV2luZG93
IGlzbid0IGN1cnJlbnRseSBhY3RpdmUgaW4gdGhlIEZyYW1lLCB0aGVuIHRoZXJlJ3Mgbm8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYTEwZGFiMzNmYjcyMDBkZjFh
NDIwYzM0MjhlNWY3YjM5NmZjY2Q2Zi4uZTAxMDhhN2JlYjNhYWJjNGQxMmE3ZTgzYWE5NzkxZGQy
ZTEzMTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTEwNjks
NyArMTA2OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBj
b25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAgICAgICBpZiAobXVz
dFVzZUxlZ2FjeURyYWdDbGllbnQpCiAgICAgICAgICAgICAgICAgc3JjLmVkaXRvcigpLmNvcHlV
UkwobGlua1VSTCwgdGV4dENvbnRlbnRXaXRoU2ltcGxpZmllZFdoaXRlU3BhY2UsIGRhdGFUcmFu
c2Zlci5wYXN0ZWJvYXJkKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBh
c3RlYm9hcmRXcml0ZXJEYXRhLnNldFVSTChzcmMuZWRpdG9yKCkucGFzdGVib2FyZFdyaXRlclVS
TChsaW5rVVJMLCB0ZXh0Q29udGVudFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSkpOworICAgICAg
ICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFVSTERhdGEoc3JjLmVkaXRvcigpLnBh
c3RlYm9hcmRXcml0ZXJVUkwobGlua1VSTCwgdGV4dENvbnRlbnRXaXRoU2ltcGxpZmllZFdoaXRl
U3BhY2UpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUg
cGFzdGVib2FyZCBhbHNvIGNvbnRhaW5zIHRydXN0d29ydGh5IGxpbmsgZGF0YQogICAgICAgICAg
ICAgLy8gYnV0IGRvbid0IG92ZXJ3cml0ZSBtb3JlIGdlbmVyYWwgcGFzdGVib2FyZCB0eXBlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAppbmRleCBjMDJkNWM4MDE2YzY1YjNkNWVm
OTM1NmM4MmJlN2Q1NzJiOTc5YTk0Li44NDM1MjgzY2RmY2IxMWE4NjJkOWZjY2M2NmYzMDQzZjJj
NTdhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCAz
NzkyYTkxMjZmMWQzMGFmZmUzN2JlMWMyYTZkYWM3ODIxNmE3MjlhLi41OGE0YzM4NzQ5ZTk1MGI0
NzhjZjg3MDY4YTI2MzkzMTBhZGVmMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBA
IC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKaW5kZXggZTg4NmI5MGZjMDgxYmE3YjNmMzBlYzM0MTRiMmZjYmJlOWVmMTVhNS4uYTAy
MTVmYTc3NDIzODUyYWJiNTQxMTBhNzI5NzE2YjkzNGU5MzRkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApA
QCAtODksNyArODksNiBAQCBjbGFzcyBSZW5kZXJXaWRnZXQ7CiBjbGFzcyBTY3JpcHRDb250cm9s
bGVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTZXR0aW5nczsKLWNsYXNzIFVSTDsK
IGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNzIFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKaW5kZXggMjQwZTY0NTczN2E0Yzc4Y2Y1MmQ3MWQ4ZDI4NTcwYTAzYjg0ZjlhZi4uODRj
NjIwMTBmNjZlOTNjMmVhYWVlZDQzY2Q3ZjI0MDU1MmNkZGI1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFNpemU7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIFVSTDsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyQm94OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3Rv
cnkuaAppbmRleCAwNWZlMmIzZjY3MGRlMmZmYjViMGQ2YTkwZDhkNzRmOTJhODQ2NTcyLi43ZjM1
ZjRkNzAxMDU1N2ZjNTk5YTIxYWRkZTY2MmEzNTk0YjZiMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0hpc3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3Rvcnku
aApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRnJhbWU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEhpc3RvcnkgZmluYWwgOiBwdWJs
aWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxIaXN0b3J5PiwgcHVibGljIERP
TVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKaW5kZXgg
N2I5OGEwNjM2YzQ5MzZjZDZmZDYyOTQwMTIyY2FjYzlhODU4Njc2Ni4uODBhNmVkOTJiMDdhYjc5
ZTAwZjUxYTc1YTgyMDI3NGNlYzU5NjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKQEAg
LTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVkdWxlci5oIgotI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC01MCw3ICs1MCw3IEBAIGlubGluZSBjb25zdCBVUkwmIExvY2F0
aW9uOjp1cmwoKSBjb25zdAogCiAgICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBibGFu
a1VSTCgpOyAvLyBVc2UgImFib3V0OmJsYW5rIiB3aGlsZSB0aGUgcGFnZSBpcyBzdGlsbCBsb2Fk
aW5nIChiZWZvcmUgd2UgaGF2ZSBhIGZyYW1lKS4KKyAgICAgICAgcmV0dXJuIFdURjo6YmxhbmtV
UkwoKTsgLy8gVXNlICJhYm91dDpibGFuayIgd2hpbGUgdGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGlu
ZyAoYmVmb3JlIHdlIGhhdmUgYSBmcmFtZSkuCiAKICAgICByZXR1cm4gdXJsOwogfQpAQCAtMjcz
LDcgKzI3Myw3IEBAIHZvaWQgTG9jYXRpb246OnJlbG9hZChET01XaW5kb3cmIGFjdGl2ZVdpbmRv
dykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlw
dCh0YXJnZXREb2N1bWVudC51cmwoKSkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3Jp
cHQodGFyZ2V0RG9jdW1lbnQudXJsKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2ZyYW1l
LT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWZyZXNoKGFjdGl2ZURvY3VtZW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTG9jYXRpb24uaAppbmRleCBiYjdkMmQxZDMzZWVmZjZjOWQxNjY2YWIwMDEwMTc4
MzJhNGYyYWY4Li4wMzRjZThiNmVmY2Y3MmMwYTdlZDRiZWUwMGZlMGVlYzk0YjE0NWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2NhdGlvbi5oCkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRnJhbWU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIExv
Y2F0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8TG9jYXRp
b24+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRl
eCAyNGI0MWRlM2Q2MWZhMTY4MTg4MjFlZDMwY2Q3ZTdiOTRmNjgwZDcxLi5iMmI5YWU2ZTU5NTg3
MjdlYmU0M2ZjYzBkODJkMGEzYTdkMjA4MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTM1LDcgKzEz
NSw2IEBAIGNsYXNzIFNldHRpbmdzOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTdG9y
YWdlTmFtZXNwYWNlOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwotY2xhc3MgVVJM
OwogY2xhc3MgVXNlckNvbnRlbnRQcm92aWRlcjsKIGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlQ2xp
ZW50OwogY2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5oCmluZGV4IDNiNmUxODI5ZTI4YzM1YTM5ZTRhMTZiNWYwODhlNjFjM2M0
NmVkOGEuLmZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTMwLDExICszMCwxMSBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKaW5kZXggMjRhYjk0
YmNhMjk1Y2NhZmIwYTY1MWE2MjcwYjI4Nzk0NWViYTk5MS4uM2E4NjM0YWI2MzdhOTE0MmE3MjUw
M2Y5YTg4YTUyNmY3OWUwYTliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaApAQCAtNDks
NyArNDksNiBAQCBjbGFzcyBQZXJmb3JtYW5jZVRpbWluZzsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
Ci1jbGFzcyBVUkw7CiBjbGFzcyBVc2VyVGltaW5nOwogCiBjbGFzcyBQZXJmb3JtYW5jZSBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlcmZvcm1hbmNlPiwgcHVibGljIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAppbmRleCA1
NzUzMzU4MGMzMDIxZWFlNjZkZTMxOTA4OWQ4ZTRiMWJjMTAzZjlkLi43YjdkODdhNDU4ZmJhMGU3
MzlkMmM0MjA5Y2Y4MjQyYmJkODc0OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRl
ICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUg
IlJlc291cmNlVGltaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAKaW5kZXggMjI5ZWZmODQzODU0YjIwNjgwZDRhMzlkYzUxYzAwNzJhNzY0OWU5My4uMDIw
ZTA5MmI5OGY4YzgzZmQ4YTViM2Y0MzMyYzI0NmIzZWM1ODc4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJsb2JV
UkwuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKQEAgLTE0OCw3ICsxNDgs
NyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiAgICAg
Ly8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0cyBhcyBtX2RhdGEuaG9zdCwgYnV0IGNhbiBiZSBzZXQg
YnkgdGhlIERPTS4KICAgICBtX2RvbWFpbiA9IG1fZGF0YS5ob3N0OwogCi0gICAgaWYgKG1fZGF0
YS5wb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2RhdGEucG9ydC52YWx1ZSgpLCBt
X2RhdGEucHJvdG9jb2wpKQorICAgIGlmIChtX2RhdGEucG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbChtX2RhdGEucG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQogICAg
ICAgICBtX2RhdGEucG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG9u
bHkgbG9jYWwgU2VjdXJpdHlPcmlnaW5zIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4KQEAgLTUx
Niw3ICs1MTYsNyBAQCBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJgogewogICAgIFN0cmluZyBkZWNv
ZGVkSG9zdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKICAgICBhdXRvIG9yaWdp
biA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7Ci0g
ICAgaWYgKHBvcnQgJiYgIWlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wp
KQorICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwg
cHJvdG9jb2wpKQogICAgICAgICBvcmlnaW4tPm1fZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1
cm4gb3JpZ2luOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDVhZGY1
MDE3NDliMDljMjkzZTU5YmE0MDQ1NmY3NjdjYjU2ZTA4ZTEuLmI5M2QwZmFmMjM1YTdmZTM1NDc2
NTA5ZjZlNDM3ZDU0NDA1Y2MxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgK
QEAgLTM0LDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0K
IGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlY3Vy
aXR5T3JpZ2luPiB7CiBwdWJsaWM6CiAgICAgZW51bSBQb2xpY3kgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggY2VmZmVhMzJiMDg0YzU2MzEyNGYyMGI3YzVm
ZTI4ZjE0OTA0MDQ3NS4uMjc3NjJlYTIxZDZkMjA2NWU5ZGQwMTQ2ZGI5NzliMzMyZWM0NTZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0yNSw3ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luSGFzaC5oCmluZGV4IGVlMjU3MmM1YTlhNjQ0Mzk1N2E1ZjNmNzUzZjQ2ZTJmYmE5MjIz
NDAuLmUwMTQ4YTJkMDVkOTliMGRkZGYwNmEyM2QyNDZkNTM0NTJjYjJjMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaApAQCAtMjgsNyArMjgsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAppbmRleCAxNTNlZGQ4MTlkMTI1NTU1NTY4ODc2
NTY2ZGUzMWY5OGI2YzA1NTNiLi40MjM0MTgyODBlYTJlZTNjOWJmZGZjOTFjZDEyN2I5NjhlYjFl
MWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMzEsMTEgKzMx
LDExIEBACiAKICNpbmNsdWRlICJPcmlnaW5BY2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDIsNyAr
MTQyLDcgQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2lu
RnJvbU93bmVyKGNvbnN0IFVSTCYgdXJsKQogICAgIC8vCiAgICAgLy8gTm90ZTogV2UgZ2VuZXJh
bGl6ZSB0aGlzIHRvIGludmFsaWQgVVJMcyBiZWNhdXNlIHdlIHRyZWF0IHN1Y2ggVVJMcyBhcyBh
Ym91dDpibGFuay4KICAgICAvLwotICAgIHJldHVybiB1cmwuaXNFbXB0eSgpIHx8IGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UodXJsLnN0cmluZygpLCBibGFua1VSTCgpKSB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNkb2MiKTsKKyAgICByZXR1
cm4gdXJsLmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5zdHJpbmcoKSwg
V1RGOjpibGFua1VSTCgpKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3Ry
aW5nKCksICJhYm91dDpzcmNkb2MiKTsKIH0KIAogdm9pZCBTZWN1cml0eVBvbGljeTo6c2V0TG9j
YWxMb2FkUG9saWN5KExvY2FsTG9hZFBvbGljeSBwb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmgKaW5kZXggY2QzN2NhM2FkMmRmZGJkN2U2NzIzNTFmYTU0M2VlZjQ5ZTgyYjRm
NC4uNTMzYjFkNGZiZGFkNTJlMzhmMWZkMzVhMmY2YTA3ZDQ4MDA4YjE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlQb2xpY3kuaApAQCAtMzQsNyArMzQsNiBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgU2VjdXJp
dHlQb2xpY3kgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5nc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKaW5kZXggYWE4
MDRjZGIwODRlMGQ2YTNmZDNkZWViNmY2MWQ1NTQzYWYzNDFiMS4uOTg2Nzc2Y2EzZGI1ZGE4Zjhl
MWE2YmE4Nzc5ZmRlZWE3MjgzYjliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5nc0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCkBA
IC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZU1hcC5oIgogI2luY2x1ZGUgIlRleHRG
bGFncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91c2NyaXB0Lmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGEuaAppbmRleCAyNzlmMDMzYTI2NDgxM2MyMWFkZjkwY2ZhNmMzNjU4YWMz
ODQzZjIzLi5jOGIxMmEzOTcxYjY2MmY4MDc4ZjNjYTY4ZjUwZTYxZjlhN2Y4YzdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjcHJhZ21hIG9uY2UK
LSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuaAppbmRleCBkMTk3OTc3
YWZlYjgyMGFhNDEyZTJjMzRmYTU0NzIxNjM4NDkwZTcyLi45ZThjMDAzYmZmNTFlMWE1Y2M5NmQy
ZTQ3M2U3YWVlZWVkYmRhOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tl
dFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oCkBA
IC0zNCw3ICszNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CiBjbGFzcyBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQ7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvY2tldFBy
b3ZpZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvY2tldFByb3ZpZGVyPiB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCmluZGV4IDI4
ZGZiMzJhMDc2ZTY1MTJlY2Y5MjRmMDE0NTIyMGVlYWU0OWM0NzIuLmZhNjkyMDM0ZGJhZTVmZDc5
ZmU4MTk3ODlhNzMyMWViZTRiMGRlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRl
bnRQcm92aWRlci5oCkBAIC00Miw3ICs0Miw2IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNs
YXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
LWNsYXNzIFVSTDsKIGNsYXNzIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I7CiBjbGFzcyBV
c2VyU2NyaXB0OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggYjliODExNTgyN2I3OGY1MjczMDk1YzJj
M2UxNTE4YmY0M2Y0M2U5MC4uZjM3M2NmMzdiMjRjNTBmYzIxZGM2ZGM0NzFhYjA4ZWQ0ZWM1MDkx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApA
QCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlVzZXJDb250
ZW50VVJMUGF0dGVybi5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRleCA5MzNmNjlkNmM1YTYwZTZlZDcyOGJhMDgwZWVl
ODRmNTQ4MGRmMmQ2Li45M2Y2NTgxMmRhYzVkZThhZDVmY2RiNjcwZDhkMmY5ZTg2OTc4MWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKQEAgLTMwLDgg
KzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIFVz
ZXJDb250ZW50VVJMUGF0dGVybiB7CiBwdWJsaWM6CiAgICAgVXNlckNvbnRlbnRVUkxQYXR0ZXJu
KCkgOiBtX2ludmFsaWQodHJ1ZSksIG1fbWF0Y2hTdWJkb21haW5zKGZhbHNlKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyU2NyaXB0LmgKaW5kZXggODUxMGMxZjMzOTkwMWU5OTVmMzIwY2NjOWJmNzE5YjJl
NDlhZTQyNy4uNTJjMTJmM2M2OTY2MzAyYWFlZjQ1NWI4ZmVmYmM5OWViZGE1ODRjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyU2NyaXB0LmgKQEAgLTI1LDcgKzI1LDcgQEAKICAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVzZXJD
b250ZW50VHlwZXMuaCIKICNpbmNsdWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNo
ZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggNjhmMTBh
ODJhZGY4OThmMjUyYzQxNTU5Y2IxNjc4YWVjOGM1MDg0MS4uYzQ3NDc2N2U3Yzk4YmI0OGE4ODNj
YjczYjY5ODkwNWY2MDFkNzYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
U3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApA
QCAtMjUsNyArMjUsNyBAQAogIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRUeXBlcy5oIgogI2luY2x1
ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4IDQzYzM1MTM3MmQ2MThiNjgxMDli
MGZiOGNjZDY5ZmM4NWY4YmRkNzguLjI2ZDY1MGRiYTc0ZGM1MDJjZjkzMDlhM2YzZDFjMDVkYTZi
NjQ5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCkBAIC0zMyw3ICsz
Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJp
bmdIYXNoOwogY2xhc3MgUGFnZTsKLWNsYXNzIFVSTDsKIAogY2xhc3MgVmlzaXRlZExpbmtTdG9y
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpc2l0ZWRMaW5rU3RvcmU+IHsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKaW5kZXggNWI1
OTJmZDgyOGY5N2Y5NGMyM2FlMzM0OTY4YTVhYjQ3ZDk2YzE2My4uZTAyYTdhYjZjNTliZmNmNWI5
OWU2NDhmZmM2YzdlMjU0NGNmZmUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTU2LDcgKzU2LDYgQEAgY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgVGV4dEVuY29kaW5nOwotY2xhc3MgVVJMOwogc3RydWN0IENvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+PiBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lD
bGllbnQuaAppbmRleCBlYjRmZTg3YzI5ZjFjYWIxMThiZDFiMGRiZTY3NjNjYjEwNGYzMjMwLi44
ZTA1MTgyNjQxNDA2ZjJjYzhjYWEyZGM1NmFlMzM2MDYzNGU2YjFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaApAQCAt
MzIsNyArMzIsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3JtRGF0YTsKLWNs
YXNzIFVSTDsKIAogc3RydWN0IENTUEluZm8gewogICAgIFN0cmluZyBkb2N1bWVudFVSSTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3QuaAppbmRleCAyOTA3MjUwZjBlYjFkYzRmZDA4ZmIyMDcyYzY4MzM3
YjI4ZDdiMDI2Li5kZDUxMzAwZWMzYjAwMzMxZjMzYmQwMjczN2ExNThjMmFhYzYyMTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdC5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeU1l
ZGlhTGlzdERpcmVjdGl2ZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZUxpc3REaXJlY3RpdmUuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggOTRiNGNjMTNjMGY2
ZTQ1YmRhNGY1ZDgzYjRkMThlNzczMDNmNDM2Yy4uZWIyMTk1YTIwNGE0YzZiZWE0N2E0NzA4NDEz
YmMwYjdlNmYzNDlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNs
dWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRh
dGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMTAwLDE0ICsxMDAsMTQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2U6OnBvcnRNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIGlmIChw
b3J0ID09IG1fcG9ydCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoKG1fcG9ydCAm
JiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgo
IXBvcnQgJiYgdXJsLnByb3RvY29sSXMoImh0dHBzIikpIHx8IChwb3J0ICYmIGlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksICJodHRwcyIpKSkpCisgICAgaWYgKChtX3BvcnQg
JiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikp
ICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29sSXMoImh0dHBzIikpIHx8IChwb3J0ICYmIFdURjo6
aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgImh0dHBzIikpKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIXBvcnQpCi0gICAgICAgIHJldHVybiBpc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAg
ICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCB1
cmwucHJvdG9jb2woKSk7CiAKICAgICBpZiAoIW1fcG9ydCkKLSAgICAgICAgcmV0dXJuIGlzRGVm
YXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAg
ICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJs
LnByb3RvY29sKCkpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAppbmRleCA0ZWVh
YmIwMTM2NTI1MWI2ZDg5NjMzY2E5NjgwZDAxNWYyMzEwNmFhLi5hMmRiNTA0Mzg5OGYyZTY5NDdi
YzdiMGEyZGQ2NDQzYWI1MTQzOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaApAQCAtMzEsNyArMzEsNiBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBV
Ukw7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAppbmRleCAxYjQzMzEyNjYwMGE1MDFm
OTVmNWU2M2I0MmRkNGNkZGRkOTU3OWIyLi4yNmRhOTExNTM3NjRhZmY3MDQ4Njc4ZTYyN2Y3MmZj
NGM3OTgxZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgiCiAjaW5jbHVkZSAi
UGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jh
c2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgKaW5kZXggOWY2
M2MzMDA2YTBjYTdmMmUzMzk5NDgwMWI1NDJjMzY2NjhjMmU1NC4uNWZjZjNiMmVhZTRhOWU1Zjg0
ODEwYmQ1M2M0NTU1MjQ0MDc3MjZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaApAQCAtMzYsNyArMzYs
NiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7
Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Qgewog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcAppbmRleCBjMmJm
MWQ0NWE1NWY1NzdmYTJkM2ZiNjAwYjJhYzlmM2ZmMGNhMWU0Li4xYjA5MmI4NGZkMGJmN2Q2NmY4
ZTFhYWZlMGYxYmFjNTMzNmFlNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0
aXZlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgot
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlci5oCmluZGV4IGI5YTlkMDBkNWJkMmZkYTlmYTdmYTE0ZWI5MTcxYWM4NjEy
ODU3YjguLjRiOGUxYWFlNmI0NzcwZWVkOTY3ODFiNmRiZjY2YWJhMWUxMjU1OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ci5oCkBAIC0yMywxNCArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcl9oCi0jZGVmaW5l
IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JKQ19DTEFTUyBOU0NvZGVyOwpA
QCAtNzcsNSArNzYsMyBAQCBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgewogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQotCi0jZW5kaWYgLy8gQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKaW5kZXggNDc2YTNjMzZiOTViZGIxODdiYjU4
OTMyZTAwM2JkMTFlZjMyYjQwNi4uMWIwZjc0NTBiNDU3MmQ1NmE5MTNlNWMxZTdhYTU3Mzk4NDk0
OGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTMz
LDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZXh0TWVudTsKIGNs
YXNzIEltYWdlOwotY2xhc3MgVVJMOwogCiBlbnVtIENvbnRleHRNZW51QWN0aW9uIHsKICAgICBD
b250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0Nvb2tpZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKaW5kZXgg
YjIxMjI0ZjFjYjlhMGRhOWFmNTg2YWI5YjA0ZjM5MTI1NzZlY2Q5NC4uOGNiYTRkZjU5MzExNmMz
ZjIzZDJiNGJkYTRjZDNiM2RmNzkyNzk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29va2llLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKQEAg
LTI2LDggKzI2LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKaW5kZXggYjQzOTc4Njg3
ODEwOTVkMGMwOWE5OTZkMjQwNGEyZjRlOWQ5OTlkYi4uOWIwZDVhNjhkOTJjOGU1NWFkOWQwZjlh
YjMzOGY5NTE3NjI5ZDc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29v
a2llc1N0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0
ZWd5LmgKQEAgLTMzLDcgKzMzLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgQ29va2llOwogc3RydWN0
IFNhbWVTaXRlSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDFhNGE0NWY4
MDVjYzUwNmFiOWYxOTFmODA2MTU3ODcwNGZmNDkyMDYuLmU5MzA5NWZjN2IyYTBiMTM2ZDQ2NjE2
ZDAyMjBjY2ViYTM5OWEwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNTYs
OCArNTYsNiBAQCB0eXBlZGVmIHZvaWQqIERyYWdEYXRhUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFVSTDsKLQogZW51bSBEcmFnQXBwbGljYXRpb25GbGFncyB7CiAgICAgRHJh
Z0FwcGxpY2F0aW9uTm9uZSA9IDAsCiAgICAgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCA9IDEsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IGJlNWI0YzljMmE0NzA0YTFkYjkxMTJj
NGNlOTRlYWM0M2YxNWQ2ZjkuLmYzMmE2ODQ1YTY4NWM1YTBjMjFkYWY5MmMxZmMwZmVmNGE1MDAy
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC01Nyw3ICs1Nyw2IEBAIGNs
YXNzIEltYWdlOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKLWNs
YXNzIFVSTDsKIAogI2lmIFBMQVRGT1JNKElPUykKIHR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IERyYWdJbWFnZVJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAppbmRleCA5
NjdkZWRjN2JhNmVjZjQyOTJkZjE5Y2ZjMTg4NTFkMTY2YjNhYTVmLi5iMmFhMjg0NDc5ZjdiMTIy
NmViZjdhYWE5YjdmZGNhYzMwYzMzNzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVh
bS5oCkBAIC0zNSw4ICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJM
OwotCiAvLyBBbGwgbWV0aG9kcyBhcmUgc3luY2hyb25vdXMuCiBjbGFzcyBGaWxlU3RyZWFtIHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSWNvbi5oCmluZGV4IDI4MTc1NDYwMzU5YWRm
ZjdhMGNmMmZlMWViN2ZmNDEzNGM1NzdlNTkuLjg5ZTJmODk2OWJiNTI2YTM2NGRiNmI5MGUzMGE5
Yjc3MWNkZTU4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0ljb24uaApAQCAtMjYsOSArMjYs
OSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJMaW5rSWNvblR5cGUuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmNwcAppbmRleCA3MzdhMzkwNDI1N2RlNjQzYmMwZDlhYjk5YmMyNjRhMzE0ZmQ2ZmY3Li41NTVl
YzI4MmU0YmI2NmU1ZjlkMTExMjBiOTc2MWE3MjVlYmMzZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5o
PgogI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgUGFzdGVi
b2FyZDo6aXNTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgdHlwZSkK
IAogYm9vbCBQYXN0ZWJvYXJkOjpjYW5FeHBvc2VVUkxUb0RPTVdoZW5QYXN0ZWJvYXJkQ29udGFp
bnNGaWxlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBhdXRvIHVybCA9IFVSTFBh
cnNlciB7IHVybFN0cmluZyB9LnJlc3VsdCgpOworICAgIFVSTCB1cmwoeyB9LCB1cmxTdHJpbmcp
OwogICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2Nv
bElzQmxvYigpIHx8IHVybC5wcm90b2NvbElzRGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmgKaW5kZXggMjA2MzVhYjAyOTRmMjk5N2UyOGZiZmZkNTA5ODY5NDhhOTli
NjAzMC4uYTJiYTJiNzYwMGRkNGViYTI2OGY2MjljZGQxOTE0MTM4ODFiZDc5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRl
ICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5k
ZXggOTlkOGRkZmZhZTAwZWFjZTFhNjMyY2IwZDNmNTM4MWEyM2ZhMzY1Yy4uYTViMzY1MGEwYmJj
MGFmODhmOWFmNzQ0NDA4ZGVhZTk5NjBkYTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwotY2xhc3MgVVJMOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJv
YXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcAppbmRleCAzZDJkY2VlZDdjNTZlODcw
OTY3ODk4MDdhNjdiZWUyZWQwMzI5MjdmLi5lMjU2OTA3NGVlNWEyYjNlZjZjMjBlOGJlNDhkZmU3
NTdhODA2OWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgUGFzdGVib2FyZFdyaXRlckRhdGE6
OnNldFBsYWluVGV4dChQbGFpblRleHQgcGxhaW5UZXh0KQogICAgIG1fcGxhaW5UZXh0ID0gV1RG
TW92ZShwbGFpblRleHQpOwogfQogCi12b2lkIFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpzZXRVUkwo
VVJMIHVybCkKK3ZvaWQgUGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFVSTERhdGEoVVJMRGF0YSB1
cmwpCiB7CiAgICAgQVNTRVJUKCFtX3VybCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IGQ1M2ZkNzJmZjVlNmM0NGUwYTE2ZTc3ZjM5
MWRhZmNkODQ2NTAyMGEuLjVmNDc1OTJiMTAxOTUxMTkxMTc5NzY4OGU3ODU1MGY0OGJiZWQ1NmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApA
QCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjYsOCArNjYs
OCBAQCBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiAgICAgY29uc3Qgc3RkOjpv
cHRpb25hbDxQbGFpblRleHQ+JiBwbGFpblRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYWluVGV4
dDsgfQogICAgIHZvaWQgc2V0UGxhaW5UZXh0KFBsYWluVGV4dCk7CiAKLSAgICBzdHJ1Y3QgVVJM
IHsKLSAgICAgICAgV2ViQ29yZTo6VVJMIHVybDsKKyAgICBzdHJ1Y3QgVVJMRGF0YSB7CisgICAg
ICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyB0aXRsZTsKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgICAgIFN0cmluZyB1c2VyVmlzaWJsZUZvcm07CkBAIC03NiwxNSArNzYsMTUgQEAgY2xhc3Mg
UGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogI2VuZGlmCiAgICAgfTsKIAotICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8VVJMPiYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICB2
b2lkIHNldFVSTChVUkwpOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMRGF0YT4mIHVybERh
dGEoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIHZvaWQgc2V0VVJMRGF0YShVUkxEYXRh
KTsKIAogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29udGVudD4mIHdlYkNvbnRlbnQoKSBj
b25zdCB7IHJldHVybiBtX3dlYkNvbnRlbnQ7IH0KICAgICB2b2lkIHNldFdlYkNvbnRlbnQoV2Vi
Q29udGVudCk7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+IG1fcGxh
aW5UZXh0OwotICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBtX3VybDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFVSTERhdGE+IG1fdXJsOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29udGVudD4gbV93ZWJDb250
ZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAppbmRleCA4ZTEzYmY0ZDg0MTQxM2JmMWMxMTdkZWM5ZWZmODVjNDgyNGI4OGVmLi5lMGEyMTMz
Mzc0NmNkZjk0ZGQ3MGU5NWUzZjYyZWQwZDc4MjAwMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTaGFy
ZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1
Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCBkYmVj
ZmMxYjNiMTZkN2Y1ZTAzMDhlMTEwYWNkYTExMDJjYjQyMDdlLi5hOTU4YzJmMGFiMmQ5ZjFmMzc2
NjJhN2EwYjYwMmJlMzEzNDMwN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogc3RydWN0IFByb21p
c2VkQXR0YWNobWVudEluZm8gewogICAgIFVSTCBibG9iVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAppbmRleCAwNzY3MjM4NmY2OGVhYTk4MWZlN2M1OTdjMDVm
NjFlZjhlNjczY2U0Li5jMmJkOGQ2ZTlkM2FhOTNlMjQ2MDI0ODYyYzFmM2IyMmY0NWE0ODQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaApAQCAtMzEsOCArMzEs
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogLy8gUmV0dXJucyBz
dHJpbmdzIHJlcHJlc2VudGluZyBrZXkgc2l6ZXMgdGhhdCBtYXkgYmUgdXNlZAogLy8gZm9yIHRo
ZSA8a2V5Z2VuPiB0YWcuIFRoZSBmaXJzdCBzdHJpbmcgaXMgZGlzcGxheWVkIGFzIHRoZSBkZWZh
dWx0CiAvLyBrZXkgc2l6ZSBpbiB0aGUgPGtleWdlbj4gbWVudS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAppbmRleCA5NDlkZTYzYWVmMDZjZmNmYWYwYzAyZDI0
YzZhYzQ0ZTY2ZmUwYjk3Li43N2Y2YzM5MmE5MTdmMGM5MTcyNjY1YTc2MThlNjcwNDM4YzRlNGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCkBAIC0yNiwx
MSArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3Ry
eS5oIgogCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5o
IgpAQCAtNTUxLDcgKzU1MSw3IEBAIGJvb2wgU2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4dGVuc2lv
blNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIAogYm9vbCBTY2hlbWVSZWdpc3RyeTo6aXNC
dWlsdGluU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotICAgIHJldHVybiAhc2NoZW1l
LmlzTnVsbCgpICYmIChhbGxCdWlsdGluU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkgfHwgVVJM
UGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoc2NoZW1lKSk7CisgICAgcmV0dXJuICFzY2hlbWUuaXNO
dWxsKCkgJiYgKGFsbEJ1aWx0aW5TY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKSB8fCBXVEY6OlVS
TFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKHNjaGVtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGUyYWFlMmYz
MDQ1NzM1NWY0ODllZWM0YWI0ZWNmMWNlN2QzZTQ1MmYuLmY4NjhjMmMwMWQ2YjEwZWNmMzY0YjFh
NmZmZTNkZDQyZjVmNTIyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CkBAIC00MCw3ICs0MCw3IEBACiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIkdV
bmlxdWVQdHJTb3VwLmgiCisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNl
bmRpZgogCiAjaWYgVVNFKEdMSUIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRTdHJpbmdIYXNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0
cmluZ0hhc2guY3BwCmluZGV4IDBjYzVmNjg3ZDYyMWVmZTdlYWJhYzRkYmY5ZTU0NTQ3YTQ4ZGNl
MTguLmFmYjc1N2NiZTQwMjJmZWRmYzQ3OTNlYWJjMjU2OWU4NjBlOTU5NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCkBAIC0yNCw3ICsyNCw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkU3RyaW5nSGFzaC5oIgogCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRTdHJpbmdIYXNoLmgKaW5kZXggNzMyNDYxN2JhNDk2YTA2NjNiZmQ1M2RlYzRhNDQzZDk3Njkz
OWU4ZS4uMzYwM2NmMGYyZTdmOTIxNGIzZTI1M2Y1NDc5ZDljYjM0NmIyN2FmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guaApAQCAtMzAsOCArMzAsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogdHlwZWRlZiB1aW50NjRfdCBT
aGFyZWRTdHJpbmdIYXNoOwogCiAvLyBVc2UgdGhlIGxvdyAzMi1iaXRzIG9mIHRoZSA2NC1iaXQg
U2hhcmVkU3RyaW5nSGFzaCBhcyB0aGUga2V5IGZvciBIYXNoU2V0cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNTb3VwLnR4dAppbmRleCBjMDJlNDllNGU1MWVmNzQ5MzFmNzBkZDg2NTVk
MzRkZTJkNjNlNDhiLi4yZTg1NmE5ODAwYzMzN2E0MDUzMTY1MmM3MDRmM2UyZmI2ZmQzMDVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC00MSw0ICs0MSwzIEBA
IHBsYXRmb3JtL25ldHdvcmsvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwCiAKIHBs
YXRmb3JtL3NvdXAvUHVibGljU3VmZml4U291cC5jcHAKIHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVm
ZmVyU291cC5jcHAKLXBsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGI0Njg2OTU4ZjMwMDA5MzMzNDQz
MTg5NDc3YTlkNDVmNGY1ZDg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTA5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwg
MjAxMS0yMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVSTC5oIgotCi0jaW5jbHVkZSAiVVJMUGFy
c2VyLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotCi0vLyBGSVhNRTogVGhpcyBm
aWxlIG1ha2VzIHRvbyBtdWNoIHVzZSBvZiB0aGUgKyBvcGVyYXRvciBvbiBTdHJpbmcuCi0vLyBX
ZSBlaXRoZXIgaGF2ZSB0byBvcHRpbWl6ZSB0aGF0IG9wZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52
b2x2ZQotLy8gc28gbWFueSBhbGxvY2F0aW9ucywgb3IgY2hhbmdlIHRoaXMgdG8gdXNlIFN0cmlu
Z0J1ZmZlciBpbnN0ZWFkLgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFj
ZSBXVEY7Ci0KLXR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKLXR5cGVkZWYg
VmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQg
aW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7Ci0KLS8vIENvcGllcyB0aGUgc291cmNlIHRvIHRo
ZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKLS8v
IEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxs
IGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKLS8vIGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8g
YXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRoZSByZXN1bHQuCi1zdGF0aWMgdm9p
ZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRlc3QpCi17Ci0gICAgaWYg
KHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChzdHJpbmcuaXM4
Qml0KCkpCi0gICAgICAgIG1lbWNweShkZXN0LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5n
Lmxlbmd0aCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgo
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAg
ICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzcmNbaV0pOwotICAgIH0KLX0KLQotdm9p
ZCBVUkw6OmludmFsaWRhdGUoKQotewotICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgIG1fcHJv
dG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOwotICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZh
bHNlOwotICAgIG1fc2NoZW1lRW5kID0gMDsKLSAgICBtX3VzZXJTdGFydCA9IDA7Ci0gICAgbV91
c2VyRW5kID0gMDsKLSAgICBtX3Bhc3N3b3JkRW5kID0gMDsKLSAgICBtX2hvc3RFbmQgPSAwOwot
ICAgIG1fcG9ydExlbmd0aCA9IDA7Ci0gICAgbV9wYXRoRW5kID0gMDsKLSAgICBtX3BhdGhBZnRl
ckxhc3RTbGFzaCA9IDA7Ci0gICAgbV9xdWVyeUVuZCA9IDA7Ci19Ci0KLVVSTDo6VVJMKGNvbnN0
IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5n
KiBlbmNvZGluZykKLXsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNv
ZGluZyk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBib29sIHNo
b3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCi17Ci0gICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRp
bmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbAotICAgIC8vIGNoYXJhY3RlcnMgZnJv
bSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4gKnVuc2lnbmVkKiBjaGFyIGhlcmUKLSAgICAvLyBz
byB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9ubHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgot
ICAgIHJldHVybiBjIDw9ICcgJzsKLX0KLQotVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
LXsKLSAgICBVUkwgcmVzdWx0ID0gKnRoaXM7Ci0gICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0
Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cmlu
ZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKLXsKLSAgICBpZiAoIWhhc1BhdGgoKSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5k
IC0gMTsKLSAgICBpZiAobV9zdHJpbmdbZW5kXSA9PSAnLycpCi0gICAgICAgIC0tZW5kOwotCi0g
ICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlm
IChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgp
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgKytzdGFydDsKLQotICAgIHJldHVybiBt
X3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7Ci19Ci0KLVN0cmluZ1Zp
ZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpob3N0
KCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBzdGFydCA9IGhvc3RTdGFydCgpOwotICAgIHJldHVy
biBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0
KTsKLX0KLQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1fcG9ydExlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
IGJvb2wgb2sgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBudW1iZXI7Ci0gICAgaWYgKG1fc3RyaW5n
LmlzOEJpdCgpKQotICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3Ry
aW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2sp
OwotICAgIGVsc2UKLSAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0
cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZv
ayk7Ci0gICAgaWYgKCFvayB8fCBudW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90
Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJl
cjsKLX0KLQotU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdAotewotICAgIGlmIChhdXRv
IHBvcnQgPSB0aGlzLT5wb3J0KCkpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwg
JzonLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9ydC52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIGhv
c3QoKS50b1N0cmluZygpOwotfQotCi1TdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkg
Y29uc3QKLXsKLSAgICBTdHJpbmcgcmVzdWx0ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9z
dEVuZCArIG1fcG9ydExlbmd0aCk7Ci0KLSAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0
YXJ0ID4gMCkgewotICAgICAgICBjb25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7
Ci0gICAgICAgIHJlc3VsdC5yZW1vdmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3Vz
ZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdBdFNpZ24pOwotICAgIH0KLQotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNl
ZFVSTChTdHJpbmdWaWV3IGlucHV0KQotewotICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5s
ZW5ndGgoKTsKLSAgICBpZiAoIWlucHV0TGVuZ3RoKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKLSAgICBWZWN0b3I8TENoYXI+IHBlcmNlbnREZWNvZGVkOwotICAgIHBlcmNlbnREZWNv
ZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXRMZW5ndGgpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChpbnB1dFtpXSA9
PSAnJScKLSAgICAgICAgICAgICYmIGlucHV0TGVuZ3RoID4gMgotICAgICAgICAgICAgJiYgaSA8
IGlucHV0TGVuZ3RoIC0gMgotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kg
KyAxXSkKLSAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7Ci0g
ICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVl
KGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlu
cHV0W2ldKTsKLSAgICB9Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29k
ZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotfQotCi1TdHJpbmcgVVJMOjp1c2Vy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVS
TChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAt
IG1fdXNlclN0YXJ0KSk7Ci19Ci0KLVN0cmluZyBVUkw6OnBhc3MoKSBjb25zdAotewotICAgIGlm
IChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
Ci0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3Vz
ZXJFbmQgLSAxKSk7Ci19Ci0KLVN0cmluZyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3Vz
ZXJTdGFydCk7Ci19Ci0KLVN0cmluZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKLXsKLSAgICBp
ZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29y
ZEVuZCAtIG1fdXNlckVuZCAtIDEpOwotfQotCi1TdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZp
ZXIoKSBjb25zdAotewotICAgIGlmICghaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVy
eUVuZCArIDEpOwotfQotCi1ib29sIFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlF
bmQ7Ci19Ci0KLVN0cmluZyBVUkw6OmJhc2VBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi0jaWYgIVVTRShDRikK
LQotU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAotewotICAgIGlmICghaXNWYWxp
ZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBy
ZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgo
KSkpOwotfQotCi0jZW5kaWYKLQotI2lmZGVmIE5ERUJVRwotCi1zdGF0aWMgaW5saW5lIHZvaWQg
YXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldykKLXsKLX0KLQotI2Vsc2UKLQotc3RhdGlj
IHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAgICAv
LyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgot
ICAgIC8vIFRoZSBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhh
dCBwYXNzZWQtaW4gY2hhcmFjdGVycwotICAgIC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRo
ZSBvbGRlciBjb2RlIGRpZCBub3QgYW5kIHJlbGllZCBvbiB0aGVzZSBjaGVja3MuCi0gICAgZm9y
IChhdXRvIGNoYXJhY3RlciA6IHByb3RvY29sLmNvZGVVbml0cygpKSB7Ci0gICAgICAgIEFTU0VS
VChpc0FTQ0lJKGNoYXJhY3RlcikpOwotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsK
LSAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgIEFTU0VS
VCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSA9PSBjaGFyYWN0ZXIpOwotICAgIH0K
LX0KLQotI2VuZGlmCi0KLXN0YXRpYyBMb2NrIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JU
ZXN0aW5nTG9jazsKLQotdXNpbmcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmcg
PSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+Owotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQot
ewotICAgIHN0YXRpYyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcDsKLSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cDsKLX0KLQotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1
cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpCi17Ci0gICAgRGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0g
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKTsKLSAgICBpZiAoIWRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXApCi0gICAgICAgIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBu
ZXcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmc7Ci0gICAgcmV0dXJuICpkZWZh
dWx0UG9ydEZvclByb3RvY29sTWFwOwotfQotCi12b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkK
LXsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBG
b3JUZXN0aW5nTG9jayk7Ci0gICAgZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQpOwotfQotCi12b2lkIGNsZWFyRGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQotewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsKLSAgICBpZiAoYXV0byog
bWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkKLSAgICAgICAgbWFw
LT5jbGVhcigpOwotfQotCi1zdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclBy
b3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCi17Ci0gICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFw
ID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9j
ayk7Ci0gICAgICAgIEFTU0VSVChvdmVycmlkZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVj
ayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRlTWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBi
ZWluZyBub24tbnVsbC4KLSAgICAgICAgYXV0byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5k
KHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Ci0gICAgICAgIGlmIChpdGVyYXRv
ciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZh
bHVlOwotICAgIH0KLSAgICByZXR1cm4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29s
KHByb3RvY29sKTsKLX0KLQotYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3Qg
cG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsKLX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXMoY29u
c3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Ci17Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3Ry
aW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4o
cHJvdG9jb2wpKSk7Ci0KLSAgICAvLyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNo
b3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCi0g
ICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUg
dXNlZCBpbnN0ZWFkLiAKLSAgICBBU1NFUlQoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2YXNjcmlwdCIpKTsKLQotICAgIGlmICghbV9pc1Zh
bGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3
aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwg
IWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuICFwcm90b2NvbFttX3Nj
aGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZlIGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRo
ZSBhcmd1bWVudC4KLX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2Nv
bCkgY29uc3QKLXsKLSAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7Ci0KLSAgICBp
ZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGlmIChtX3Nj
aGVtZUVuZCAhPSBwcm90b2NvbC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVj
dC4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgewotICAg
ICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29s
W2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLVN0cmluZyBVUkw6OnF1ZXJ5KCkgY29uc3QKLXsKLSAgICBpZiAobV9xdWVyeUVuZCA9
PSBtX3BhdGhFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0
cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAx
KSk7IAotfQotCi1TdHJpbmcgVVJMOjpwYXRoKCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBwb3J0
RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOwotICAgIHJldHVybiBtX3N0cmluZy5zdWJz
dHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0gcG9ydEVuZCk7Ci19Ci0KLWJvb2wgVVJMOjpzZXRQ
cm90b2NvbChjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3Zl
IGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KLSAgICBzaXplX3Qgc2VwYXJhdG9yUG9z
aXRpb24gPSBzLmZpbmQoJzonKTsKLSAgICBTdHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmlu
ZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0gICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFy
c2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbCk7Ci0gICAgaWYgKCFjYW5v
bmljYWxpemVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkg
ewotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6
IiwgbV9zdHJpbmcpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygq
Y2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwotICAgICp0
aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9v
bCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3Rl
cnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Ci19Ci0gICAgCi0vLyBB
cHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3Ry
aW5nIGFuZCBsZW5ndGggdG8KLS8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwg
bm90IGJlIG51bGwgdGVybWluYXRlZC4KLS8vIFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBl
cnJvciBpbiBlbmNvZGluZy4KLXN0YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hh
ckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICAvLyBOZWVkcyB0byBi
ZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KLSAgICAvLyBGb3IgaG9z
dCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNo
IGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0gICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZm
ZXJMZW5ndGggPSAyMDQ4OwotICAgIAotICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFt
ZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJKHN0cmluZykpIHsKLSAgICAgICAgYXBwZW5kKGJ1
ZmZlciwgc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIFVD
aGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2Rl
IGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9
IFVJRE5BX0lORk9fSU5JVElBTElaRVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVy
dGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5h
bWVUcmFuc2NvZGVyKCksCi0gICAgICAgIHN0cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwg
c3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZw
cm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKLSAgICAKLSAgICBpZiAoVV9TVUNDRVNTKGVycm9y
KSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQo
aG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi11bnNpZ25lZCBVUkw6Omhvc3RT
dGFydCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0
KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKLX0KLQotdm9pZCBVUkw6OnNl
dEhvc3QoY29uc3QgU3RyaW5nJiBzKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBhdXRvIGNvbG9uSW5kZXggPSBzLmZpbmQoJzonKTsKLSAgICBpZiAoY29s
b25JbmRleCAhPSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVUNoYXJCdWZmZXIg
ZW5jb2RlZEhvc3ROYW1lOwotICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRI
b3N0TmFtZSwgcykpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBib29sIHNsYXNoU2xhc2hO
ZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQg
KyAxKTsKLSAgICAKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBl
bmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVk
KQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBl
bmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6
ZSgpKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkp
OwotCi0gICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlz
ID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCi17Ci0gICAg
aWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAgIHJldHVybjsKLSAgICBVUkxQYXJzZXIgcGFyc2Vy
KG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAg
ICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25l
ZCBzaG9ydCBpKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9ydExlbmd0aDsKLSAgICB1bnNpZ25lZCBwb3J0U3Rh
cnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIFVS
TFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRT
dGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0g
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXZvaWQgVVJMOjpzZXRIb3N0QW5kUG9y
dChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmdWaWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKLSAg
ICBTdHJpbmdWaWV3IHBvcnQ7Ci0gICAgCi0gICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUu
ZmluZCgnOicpOwotICAgIGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHBv
cnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEpOwotICAgICAgICBib29sIG9r
OwotICAgICAgICBpbnQgcG9ydEludCA9IHBvcnQudG9JbnRTdHJpY3Qob2spOwotICAgICAgICBp
ZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBob3N0
TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsKLSAgICB9Ci0KLSAgICBp
ZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBVQ2hhckJ1ZmZl
ciBlbmNvZGVkSG9zdE5hbWU7Ci0gICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2Rl
ZEhvc3ROYW1lLCBob3N0TmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgc2xhc2hT
bGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVt
ZUVuZCArIDEpOwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRl
ZCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNp
emUoKSkpOwotICAgIGlmICghcG9ydC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCI6Iik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBvcnQpOwotICAgIH0KLSAg
ICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5k
ICsgbV9wb3J0TGVuZ3RoKSk7Ci0KLSAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJp
bmcoKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcg
cGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxk
RW5jb2RlKShVQ2hhcikpCi17Ci0gICAgYXV0byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29u
c3QgU3RyaW5nJiBpbnB1dCkgewotICAgICAgICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7
Ci0gICAgICAgIGF1dG8qIGRhdGEgPSB1dGY4LmRhdGEoKTsKLSAgICAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwotICAgICAgICBhdXRvIGxlbmd0aCA9IHV0ZjgubGVuZ3RoKCk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7IGorKykgewotICAgICAgICAgICAgYXV0
byBjID0gZGF0YVtqXTsKLSAgICAgICAgICAgIGlmIChzaG91bGRFbmNvZGUoYykpIHsKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpKTsKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKSk7Ci0gICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotICAgIH07Ci0KLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKFVOTElL
RUxZKHNob3VsZEVuY29kZShpbnB1dFtpXSkpKQotICAgICAgICAgICAgcmV0dXJuIGVuY29kZShp
bnB1dCk7Ci0gICAgfQotICAgIHJldHVybiBpbnB1dDsKLX0KLQotdm9pZCBVUkw6OnNldFVzZXIo
Y29uc3QgU3RyaW5nJiB1c2VyKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVk
IGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0
byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KLQotICAgIHVu
c2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKLSAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29kZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjpp
c0luVXNlckluZm9FbmNvZGVTZXQpOwotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICB1ID0gIi8vIiAr
IHU7Ci0gICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAg
ICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1f
c3RyaW5nW2VuZF0gIT0gJ0AnKSkKLSAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1f
dXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAg
ICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8g
UmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAg
ICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAm
JiBtX3N0cmluZ1tlbmRdID09ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAv
LyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hl
cmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2Vy
U3RhcnQgIT0gZW5kKSB7Ci0gICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmco
U3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQo
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5n
JiBwYXNzd29yZCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKLSAgICBpZiAoIXBhc3N3b3JkLmlzRW1w
dHkoKSkgewotICAgICAgICBTdHJpbmcgcCA9ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJz
KHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCkgKyAiQCI7Ci0gICAg
ICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsg
MSkpCi0gICAgICAgICAgICBwID0gIi8vIiArIHA7Ci0gICAgICAgIC8vIEVhdCB0aGUgZXhpc3Rp
bmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KLSAgICAgICAgaWYgKGVu
ZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQg
Kz0gMTsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9z
dHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBh
c3N3b3JkLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBt
X2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsK
LSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1v
biBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAg
aWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKLSAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXco
bV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5y
ZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBVUkw6OnNldEZyYWdtZW50SWRl
bnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0
aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBlbnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFz
c2VkPwotICAgIC8vIEZJWE1FOiBJcyBpdCBjb3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNv
ZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnM/Ci0gICAgKnRoaXMgPSBVUkxQ
YXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBt
X3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVyKSB9LnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAg
ICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kKQotICAgICAgICBt
X3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7Ci19Ci0KLXZvaWQgVVJMOjpyZW1v
dmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQp
OwotICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhFbmQ7Ci19Ci0KLXZvaWQgVVJMOjpzZXRRdWVyeShj
b25zdCBTdHJpbmcmIHF1ZXJ5KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJl
IGVuY29kZWQgYW5kIGVzY2FwZWQuCi0gICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29k
ZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUK
LSAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCi0gICAgLy8g
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2Ci0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwg
cXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsKLSAgICAgICAgVVJMUGFyc2Vy
IHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwg
Ij8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7
Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1f
cGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVu
ZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfQotCi19Ci0KLXZv
aWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIHBhdGggPSBzOwotICAgIGlmIChwYXRoLmlz
RW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKLSAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0K
LSAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIp
IHsKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsK
LSAgICB9OwotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0
ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19
Ci0KLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNv
bnN0IFVSTCYgYikKLXsKLSAgICBpZiAoYS5tX3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5
RW5kOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQotICAg
ICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGVxdWFsSWdub3JpbmdRdWVy
eUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIGlmIChhLnBh
dGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2ln
bmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cGF0aEVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClb
aV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0
IFVSTCYgYikKLXsKLSAgICBpZiAoYS5tX3NjaGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3Rh
cnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0
QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25l
ZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gYi5ob3N0U3RhcnQoKTsKLSAgICBpZiAoaG9z
dExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8v
IENoZWNrIHRoZSBzY2hlbWUKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVt
ZUVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0p
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gQW5kIHRoZSBob3N0
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAg
ICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0
QiArIGldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChhLnBv
cnQoKSAhPSBiLnBvcnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikK
LXsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25l
ZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBo
b3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIu
bV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0
aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBob3N0TGVuZ3RoQTsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEg
KyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFydEIgKyBpXSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBVUkw6OmlzTWF0Y2hp
bmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOwot
ICAgIGlmICghaG9zdC5lbmRzV2l0aChkb21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0
Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgpIC0gMV0gPT0gJy4nOwotfQotCi1TdHJpbmcgZW5j
b2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIGlucHV0KQotewotICAgIHJl
dHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlcklu
Zm9FbmNvZGVTZXQpOwotfQotCi1ib29sIFVSTDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAotewot
ICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQVNTRVJUKG1f
c3RyaW5nW21fc2NoZW1lRW5kXSA9PSAnOicpOwotICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVt
ZUVuZCArIDFdID09ICcvJzsKLX0KLQotdm9pZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hh
ciwgNTEyPiYgYnVmZmVyKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5
IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQotICAg
IC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlkIFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQg
bm90IGZvciBpbnZhbGlkIFVSTHMuCi0gICAgYnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgo
KSk7Ci0gICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Ci1ib29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBT
dHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICAvLyBEbyB0aGUg
Y29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2Vy
dFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29sKSkpOwotICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1
ZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBqID0gMDsgdXJsW2ldOyArK2kpIHsKLSAgICAg
ICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAg
ICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91bGRUcmltRnJvbVVSTCh1cmxbaV0pKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOwotCi0gICAgICAgIC8v
IFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVzLgotICAgICAgICBpZiAodXJsW2ldID09ICdcdCcg
fHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ldID09ICdcbicpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICBpZiAoIXByb3RvY29sW2pdKQotICAgICAgICAgICAgcmV0dXJuIHVybFtp
XSA9PSAnOic7Ci0gICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0s
IHByb3RvY29sW2pdKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICArK2o7
Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBwcm90b2NvbElzKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gcHJv
dG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OnBy
b3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewot
ICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzSW50ZXJuYWwoc3RyaW5nLCBwcm90b2NvbCk7
Ci19Ci0KLSNpZm5kZWYgTkRFQlVHCi0KLXZvaWQgVVJMOjpwcmludCgpIGNvbnN0Ci17Ci0gICAg
cHJpbnRmKCIlc1xuIiwgbV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLSNlbmRpZgotCi1T
dHJpbmcgVVJMOjpzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdAotewotICAgIFVSTCBy
ZWZlcnJlcigqdGhpcyk7Ci0gICAgcmVmZXJyZXIuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgcmVm
ZXJyZXIuc2V0UGFzcyhTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7Ci0gICAgcmV0dXJuIHJlZmVycmVyLnN0cmluZygpOwotfQotCi1ib29sIFVSTDo6
aXNMb2NhbEZpbGUoKSBjb25zdAotewotICAgIC8vIEluY2x1ZGluZyBmZWVkIGhlcmUgbWlnaHQg
YmUgYSBiYWQgaWRlYSBzaW5jZSBkcmFnIGFuZCBkcm9wIHVzZXMgdGhpcyBjaGVjawotICAgIC8v
IGFuZCBpbmNsdWRpbmcgZmVlZCB3b3VsZCBhbGxvdyBmZWVkcyB0byBwb3RlbnRpYWxseSBsZXQg
c29tZW9uZSdzIGJsb2cKLSAgICAvLyByZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJk
IG9uIGEgZHJhZywgZXZlbiB3aXRob3V0IGEgZHJvcC4KLSAgICAvLyBMaWtld2lzZSB3aXRoIHVz
aW5nIHRoZSBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc0xvY2FsKCkgZnVuY3Rpb24uCi0g
ICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNj
cmlwdChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFs
KHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJp
bmdWaWV3IHVybCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFz
Y3JpcHQiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYg
dXJsKQotewotICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgpOwotICAgIC8vIERvIHRoZSBj
b21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCi0gICAgcmV0dXJu
IGxlbmd0aCA+PSA1Ci0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzBd
LCAnaCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzFdLCAndCcp
Ci0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzJdLCAndCcpCi0gICAg
ICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzNdLCAncCcpCi0gICAgICAgICYm
ICh1cmxbNF0gPT0gJzonIHx8IChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFs0XSwgJ3Mn
KSAmJiBsZW5ndGggPj0gNiAmJiB1cmxbNV0gPT0gJzonKSk7Ci19Ci0KLWNvbnN0IFVSTCYgYmxh
bmtVUkwoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJM
KFVSTCgpLCAiYWJvdXQ6YmxhbmsiKTsKLSAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7Ci19Ci0K
LWJvb2wgVVJMOjppc0JsYW5rVVJMKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJcygi
YWJvdXQiKTsKLX0KLQotYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKLXsKLSAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKLQotICAgIC8vIFNpbmNl
IG1vc3QgVVJMcyBkb24ndCBoYXZlIGEgcG9ydCwgcmV0dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBv
cnQiIGNhc2UuCi0gICAgaWYgKCFwb3J0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8v
IFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1v
emlsbGEgaW1wbGVtZW50cy4KLSAgICAvLyBTZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9q
ZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBz
dGF0aWMgY29uc3QgdWludDE2X3QgYmxvY2tlZFBvcnRMaXN0W10gPSB7Ci0gICAgICAgIDEsICAg
IC8vIHRjcG11eAotICAgICAgICA3LCAgICAvLyBlY2hvCi0gICAgICAgIDksICAgIC8vIGRpc2Nh
cmQKLSAgICAgICAgMTEsICAgLy8gc3lzdGF0Ci0gICAgICAgIDEzLCAgIC8vIGRheXRpbWUKLSAg
ICAgICAgMTUsICAgLy8gbmV0c3RhdAotICAgICAgICAxNywgICAvLyBxb3RkCi0gICAgICAgIDE5
LCAgIC8vIGNoYXJnZW4KLSAgICAgICAgMjAsICAgLy8gRlRQLWRhdGEKLSAgICAgICAgMjEsICAg
Ly8gRlRQLWNvbnRyb2wKLSAgICAgICAgMjIsICAgLy8gU1NICi0gICAgICAgIDIzLCAgIC8vIHRl
bG5ldAotICAgICAgICAyNSwgICAvLyBTTVRQCi0gICAgICAgIDM3LCAgIC8vIHRpbWUKLSAgICAg
ICAgNDIsICAgLy8gbmFtZQotICAgICAgICA0MywgICAvLyBuaWNuYW1lCi0gICAgICAgIDUzLCAg
IC8vIGRvbWFpbgotICAgICAgICA3NywgICAvLyBwcml2LXJqcwotICAgICAgICA3OSwgICAvLyBm
aW5nZXIKLSAgICAgICAgODcsICAgLy8gdHR5bGluawotICAgICAgICA5NSwgICAvLyBzdXBkdXAK
LSAgICAgICAgMTAxLCAgLy8gaG9zdHJpYW1lCi0gICAgICAgIDEwMiwgIC8vIGlzby10c2FwCi0g
ICAgICAgIDEwMywgIC8vIGdwcGl0bnAKLSAgICAgICAgMTA0LCAgLy8gYWNyLW5lbWEKLSAgICAg
ICAgMTA5LCAgLy8gUE9QMgotICAgICAgICAxMTAsICAvLyBQT1AzCi0gICAgICAgIDExMSwgIC8v
IHN1bnJwYwotICAgICAgICAxMTMsICAvLyBhdXRoCi0gICAgICAgIDExNSwgIC8vIFNGVFAKLSAg
ICAgICAgMTE3LCAgLy8gdXVjcC1wYXRoCi0gICAgICAgIDExOSwgIC8vIG5udHAKLSAgICAgICAg
MTIzLCAgLy8gTlRQCi0gICAgICAgIDEzNSwgIC8vIGxvYy1zcnYgLyBlcG1hcAotICAgICAgICAx
MzksICAvLyBuZXRiaW9zCi0gICAgICAgIDE0MywgIC8vIElNQVAyCi0gICAgICAgIDE3OSwgIC8v
IEJHUAotICAgICAgICAzODksICAvLyBMREFQCi0gICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCi0g
ICAgICAgIDUxMiwgIC8vIHByaW50IC8gZXhlYwotICAgICAgICA1MTMsICAvLyBsb2dpbgotICAg
ICAgICA1MTQsICAvLyBzaGVsbAotICAgICAgICA1MTUsICAvLyBwcmludGVyCi0gICAgICAgIDUy
NiwgIC8vIHRlbXBvCi0gICAgICAgIDUzMCwgIC8vIGNvdXJpZXIKLSAgICAgICAgNTMxLCAgLy8g
Q2hhdAotICAgICAgICA1MzIsICAvLyBuZXRuZXdzCi0gICAgICAgIDU0MCwgIC8vIFVVQ1AKLSAg
ICAgICAgNTQ4LCAgLy8gYWZwb3ZlcnRjcCBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDU1Niwg
IC8vIHJlbW90ZWZzCi0gICAgICAgIDU2MywgIC8vIE5OVFArU1NMCi0gICAgICAgIDU4NywgIC8v
IEVTTVRQCi0gICAgICAgIDYwMSwgIC8vIHN5c2xvZy1jb25uCi0gICAgICAgIDYzNiwgIC8vIExE
QVArU1NMCi0gICAgICAgIDk5MywgIC8vIElNQVArU1NMCi0gICAgICAgIDk5NSwgIC8vIFBPUDMr
U1NMCi0gICAgICAgIDIwNDksIC8vIE5GUwotICAgICAgICAzNjU5LCAvLyBhcHBsZS1zYXNsIC8g
UGFzc3dvcmRTZXJ2ZXIgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA0MDQ1LCAvLyBsb2NrZAot
ICAgICAgICA0MTkwLCAvLyBNYW5hZ2VTaWV2ZSBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDYw
MDAsIC8vIFgxMQotICAgICAgICA2NjY1LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlv
bl0KLSAgICAgICAgNjY2NiwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAg
ICAgIDY2NjcsIC8vIFN0YW5kYXJkIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2Njgs
IC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY5LCAvLyBBbHRl
cm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElS
QyBTU0wgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBh
ZGRpdGlvbl0KLSAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxs
IGludmFsaWQgcG9ydCBudW1iZXJzCi0gICAgfTsKLQotICAgIC8vIElmIHRoZSBwb3J0IGlzIG5v
dCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgotICAgIEFTU0VSVChzdGQ6Omlz
X3NvcnRlZChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0
TGlzdCkpKTsKLSAgICBpZiAoIXN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQ
b3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAg
VVJMcywgYXMgTW96aWxsYSBkb2VzLgotICAgIGlmICgocG9ydC52YWx1ZSgpID09IDIxIHx8IHBv
cnQudmFsdWUoKSA9PSAyMikgJiYgdXJsLnByb3RvY29sSXMoImZ0cCIpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIC8vIEFsbG93IGFueSBwb3J0IG51bWJlciBpbiBhIGZpbGUgVVJMLCBz
aW5jZSB0aGUgcG9ydCBudW1iZXIgaXMgaWdub3JlZC4KLSAgICBpZiAodXJsLnByb3RvY29sSXMo
ImZpbGUiKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LVN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFT
U0VSVChwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiZGF0YSIpKTsKLQotICAgIC8vIEZJWE1FOiBX
aGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9yIHdoZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwg
YnV0IGEgc2VtaWNvbG9uIGxhdGVyPwotICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBi
cmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRoYXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJl
Y3QuCi0gICAgYXV0byBpbmRleCA9IHVybC5maW5kKCc7JywgNSk7Ci0gICAgaWYgKGluZGV4ID09
IG5vdEZvdW5kKQotICAgICAgICBpbmRleCA9IHVybC5maW5kKCcsJywgNSk7Ci0gICAgaWYgKGlu
ZGV4ID09IG5vdEZvdW5kKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNv
bW1lbnQgaGVyZSB0aGF0IG1hZGUgaXQgc291bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5p
bmcgdGV4dC9wbGFpbi4KLSAgICAgICAgLy8gQnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1w
dHkgc3RyaW5nIGhlcmUgZm9yIHNvbWUgdGltZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlv
ciBhdCB0aGlzIHRpbWUuCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLSAg
ICBpZiAoaW5kZXggPT0gNSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOwotICAgIEFT
U0VSVChpbmRleCA+PSA1KTsKLSAgICByZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci19Ci0KLVN0cmluZyBVUkw6OnN0cmluZ0NlbnRl
ckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgaWYgKHN0
cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0cmluZygpOwotCi0g
ICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJpbmco
KS5yaWdodChsZW5ndGggLyAyIC0gMik7Ci19Ci0KLVVSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRp
dmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXJ0KQotewotICAgIHJldHVybiBVUkwoVVJM
KCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsg
Jy8nICsgcmVsYXRpdmVQYXJ0KTsKLX0KLQotVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVt
UGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJm
aWxlOi8vLyIgKyBmaWxlUGF0aCk7Ci19Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJsKQotewotICAgIHRzIDw8IHVybC5zdHJpbmcoKTsKLSAg
ICByZXR1cm4gdHM7Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoU09VUCkKLXN0
YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYXV0byBj
b3VudCA9IDA7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXRBbGxv
d2luZ0VtcHR5RW50cmllcygnLicpKSB7Ci0gICAgICAgIGlmIChjb3VudCA+PSA0KQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gb2N0ZXQu
bGVuZ3RoKCk7Ci0gICAgICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCA+IDMpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgYXV0byB2YWx1ZSA9IDA7Ci0gICAgICAgIGZvciAo
YXV0byBpID0gMHU7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgY29uc3QgYXV0byBk
aWdpdCA9IG9jdGV0W2ldOwotCi0gICAgICAgICAgICAvLyBQcm9oaWJpdCBsZWFkaW5nIHplcm9l
cy4KLSAgICAgICAgICAgIGlmIChkaWdpdCA+ICc5JyB8fCBkaWdpdCA8ICghaSAmJiBsZW5ndGgg
PiAxID8gJzEnIDogJzAnKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgICAgIHZhbHVlID0gMTAgKiB2YWx1ZSArIChkaWdpdCAtICcwJyk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAodmFsdWUgPiAyNTUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgY291bnQrKzsKLSAgICB9Ci0KLSAgICByZXR1cm4gKGNvdW50ID09IDQpOwotfQotCi1z
dGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGVudW0g
U2tpcFN0YXRlIHsgTm9uZSwgV2lsbFNraXAsIFNraXBwaW5nLCBTa2lwcGVkLCBGaW5hbCB9Owot
ICAgIGF1dG8gc2tpcFN0YXRlID0gTm9uZTsKLSAgICBhdXRvIGNvdW50ID0gMDsKLQotICAgIGZv
ciAoY29uc3QgYXV0byBoZXh0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygn
OicpKSB7Ci0gICAgICAgIGlmIChjb3VudCA+PSA4IHx8IHNraXBTdGF0ZSA9PSBGaW5hbCkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IGhl
eHRldC5sZW5ndGgoKTsKLSAgICAgICAgaWYgKCFsZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIDo6
IG1heSBiZSB1c2VkIGFueXdoZXJlIHRvIHNraXAgMSB0byA4IGhleHRldHMsIGJ1dCBvbmx5IG9u
Y2UuCi0gICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IFNraXBwZWQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IE5vbmUpCi0g
ICAgICAgICAgICAgICAgc2tpcFN0YXRlID0gIWNvdW50ID8gV2lsbFNraXAgOiBTa2lwcGluZzsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAg
ICAgICBza2lwU3RhdGUgPSBTa2lwcGluZzsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBza2lwU3RhdGUgPSBGaW5hbDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICBpZiAoc2tpcFN0YXRlID09IFNraXBwaW5nKQotICAgICAgICAg
ICAgc2tpcFN0YXRlID0gU2tpcHBlZDsKLQotICAgICAgICBpZiAobGVuZ3RoID4gNCkgewotICAg
ICAgICAgICAgLy8gQW4gSVB2NCBhZGRyZXNzIG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBm
aW5hbCB0d28gaGV4dGV0cy4KLSAgICAgICAgICAgIGlmICgoc2tpcFN0YXRlID09IE5vbmUgJiYg
Y291bnQgIT0gNikgfHwgKHNraXBTdGF0ZSA9PSBTa2lwcGVkICYmIGNvdW50ID49IDYpIHx8ICFp
c0lQdjRBZGRyZXNzKGhleHRldCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvIGNvZGVVbml0IDogaGV4dGV0LmNvZGVV
bml0cygpKSB7Ci0gICAgICAgICAgICAvLyBJUHY2IGFsbG93cyBsZWFkaW5nIHplcm9lcy4KLSAg
ICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGNvZGVVbml0KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBjb3VudCsrOwotICAgIH0KLQot
ICAgIHJldHVybiAoY291bnQgPT0gOCAmJiBza2lwU3RhdGUgPT0gTm9uZSkgfHwgc2tpcFN0YXRl
ID09IFNraXBwZWQgfHwgc2tpcFN0YXRlID09IEZpbmFsOwotfQotCi1ib29sIFVSTDo6aG9zdElz
SVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKLXsKLSAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0g
bm90Rm91bmQpCi0gICAgICAgIHJldHVybiBpc0lQdjRBZGRyZXNzKGhvc3QpOwotCi0gICAgcmV0
dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Yw
ZTM4YTcxYjYxYjRmZGE4MTZiNzRkNTMzOTM1ZGY0MzFiNjZkOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwu
aAorKysgL2Rldi9udWxsCkBAIC0xLDM5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLSNpZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJl
ZjsKLSNlbmRpZgotCi0jaWYgVVNFKFNPVVApCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIK
LSNlbmRpZgotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi1PQkpDX0NMQVNTIE5TVVJMOwotI2VuZGlm
Ci0KLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgVGV4dFN0cmVhbTsKLX0KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBVUkxUZXh0RW5jb2RpbmcgewotcHVibGljOgotICAgIHZpcnR1YWwg
VmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldykgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgflVSTFRleHRFbmNvZGluZygpIHsgfTsKLX07Ci0KLXN0cnVjdCBVUkxI
YXNoOwotCi1jbGFzcyBVUkwgewotcHVibGljOgotICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGlj
aCBjb250YWlucyBhIG51bGwgc3RyaW5nLgotICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9Ci0K
LSAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3Ry
aW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQotCi0gICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBn
aXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQotICAgIC8vIFVSTFRleHRFbmNvZGluZyBp
cyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJl
Ci0gICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdp
bGwgYmUgaW50ZXJwcmV0ZWQgYXMKLSAgICAvLyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYg
dGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAot
ICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBh
bGwgaW52YWxpZCBiYXNlIFVSTHMKLSAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwg
YW5kIGVtcHR5IGJhc2UgVVJMcy4KLSAgICBXRUJDT1JFX0VYUE9SVCBVUkwoY29uc3QgVVJMJiBi
YXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVs
bHB0cik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRp
dmVQYXJ0KGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBVUkwgZmls
ZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBzdHJp
cHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUg
ZnVuY3Rpb25zIHNob3VsZCBiZSBoYXJtb25pemVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8g
YmFzZSBvZiBudWxsIG9yIHRoZSBlbXB0eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFz
IHRoZQotICAgIC8vIHN0YW5kYXJkIFN0cmluZyBjb25zdHJ1Y3Rvci4KLQotICAgIC8vIE1ha2Vz
IGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFu
b3RoZXIKLSAgICAvLyB0aHJlYWQuIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2Jq
ZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzCi0gICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2
ZXIgcHJlZmVyIGlzb2xhdGVkQ29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAg
V0VCQ09SRV9FWFBPUlQgVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc051
bGwoKSBjb25zdDsKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKLSAgICBib29sIGlzVmFsaWQo
KSBjb25zdDsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBh
bmQgcG9ydCBmb3IgdGhlIFVSTC4KLSAgICAvLyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3Qg
aGF2ZSBhIGhvc3QgYW5kIHBvcnQuCi0gICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3Qg
eyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQotCi0gICAgYm9vbCBjYW5TZXRQYXRobmFtZSgp
IGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KLSAgICBib29sIGlzSGllcmFyY2hp
Y2FsKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwotCi0gICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0
aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
aG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvdG9jb2xI
b3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB1c2VyKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBhc3MoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgcGF0aCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBs
YXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBxdWVy
eSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIo
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigp
IGNvbnN0OwotCi0gICAgYm9vbCBoYXNVc2VybmFtZSgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGFz
c3dvcmQoKSBjb25zdDsKLSAgICBib29sIGhhc1F1ZXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNG
cmFnbWVudCgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0OwotCi0gICAgLy8gVW5s
aWtlIHVzZXIoKSBhbmQgcGFzcygpLCB0aGVzZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2Fw
ZSBzZXF1ZW5jZXMuCi0gICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5k
LXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJz
LgotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVkVXNlcigpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVkUGFzcygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCi0gICAg
Ly8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXIt
Y2FzZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNv
bnN0OwotICAgIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsKLSAgICBib29sIHBy
b3RvY29sSXNCbG9iKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9Ci0gICAg
Ym9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsg
fQotICAgIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGlzQmxhbmtVUkwoKSBjb25zdDsKLSAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7
IHJldHVybiBtX2Nhbm5vdEJlQUJhc2VVUkw7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNv
bnN0IFN0cmluZyYpOwotCi0gICAgdm9pZCByZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0
KHVuc2lnbmVkIHNob3J0KTsKLQotICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJm
b28uY29tOjgwMDAiLgotICAgIHZvaWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0K
LSAgICB2b2lkIHNldFVzZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0
IFN0cmluZyYpOwotCi0gICAgLy8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBv
ciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5nIHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBhdGgoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBU
aGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUg
d2lsbCBiZSBhZGRlZAotICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBl
bXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKLSAgICAvLyBVUkwgKHdpdGggbm90
aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOwot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1Zp
ZXcpOwotCi0gICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0
aEVuZCgpIGNvbnN0OwotICAgIHVuc2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0Owot
Ci0gICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9
Ci0KLSNpZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMKENGVVJMUmVmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0j
ZW5kaWYKLQotI2lmIFVTRShTT1VQKQotICAgIFVSTChTb3VwVVJJKik7Ci0gICAgR1VuaXF1ZVB0
cjxTb3VwVVJJPiBjcmVhdGVTb3VwVVJJKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShGT1VO
REFUSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIFVSTChOU1VSTCopOwotICAgIFdFQkNPUkVfRVhQ
T1JUIG9wZXJhdG9yIE5TVVJMKigpIGNvbnN0OwotI2VuZGlmCi0jaWZkZWYgX19PQkpDX18KLSAg
ICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQotI2VuZGlm
Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBwcmludCgpIGNvbnN0OwotI2VuZGlmCi0KLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYs
IFVSTCYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxVUkw+IGRlY29kZShEZWNvZGVyJik7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFVS
TFBhcnNlcjsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKLSAgICBzdGF0
aWMgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKLSAgICB2b2lk
IGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdDsKLSAgICB1bnNp
Z25lZCBob3N0U3RhcnQoKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29s
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVx
dWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBi
b29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0KLSAgICBTdHJpbmcg
bV9zdHJpbmc7Ci0KLSAgICB1bnNpZ25lZCBtX2lzVmFsaWQgOiAxOwotICAgIHVuc2lnbmVkIG1f
cHJvdG9jb2xJc0luSFRUUEZhbWlseSA6IDE7Ci0gICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNl
VVJMIDogMTsKLQotICAgIC8vIFRoaXMgaXMgb3V0IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRz
IGJldHRlci4gVGhlIHBvcnQgaXMgYWZ0ZXIgdGhlIGhvc3QuCi0gICAgdW5zaWduZWQgbV9wb3J0
TGVuZ3RoIDogMzsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGgg
PSAoMSA8PCAzKSAtIDE7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVt
ZUxlbmd0aCA9ICgxIDw8IDI2KSAtIDE7Ci0gICAgdW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsK
LSAgICB1bnNpZ25lZCBtX3VzZXJTdGFydDsKLSAgICB1bnNpZ25lZCBtX3VzZXJFbmQ7Ci0gICAg
dW5zaWduZWQgbV9wYXNzd29yZEVuZDsKLSAgICB1bnNpZ25lZCBtX2hvc3RFbmQ7Ci0gICAgdW5z
aWduZWQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgdW5zaWduZWQgbV9wYXRoRW5kOwotICAg
IHVuc2lnbmVkIG1fcXVlcnlFbmQ7Ci19OwotCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09
IHNpemVvZihTdHJpbmcpICsgOCAqIHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkg
c21hbGwiKTsKLQotdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Ci12b2lkIFVSTDo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX3N0cmluZzsKLX0KLQot
dGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1ib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFVSTCYgdXJsKQotewotICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNv
ZGVyKTsKLSAgICBpZiAoIW9wdGlvbmFsVVJMKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
dXJsID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1w
bGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLXN0ZDo6b3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQotewotICAgIFN0cmluZyBzdHJpbmc7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzdHJpbmcpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBV
UkwoVVJMKCksIHN0cmluZyk7Ci19Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQ
T1JUIGJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3Qg
VVJMJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaG9zdHNBcmVFcXVh
bChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLQotV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiBi
bGFua1VSTCgpOwotCi0vLyBGdW5jdGlvbnMgdG8gZG8gVVJMIG9wZXJhdGlvbnMgb24gc3RyaW5n
cy4KLS8vIFRoZXNlIGFyZSBvcGVyYXRpb25zIHRoYXQgYXJlbid0IGZhc3RlciBvbiBhIHBhcnNl
ZCBVUkwuCi0vLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9u
cyBpbiB0aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5k
IHBhcnNhYmxlIFVSTC4KLS8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2
YWxpZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlk
IGJ5IFVSTC4KLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29s
SXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3Jp
cHQoU3RyaW5nVmlldyB1cmwpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsKLQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVm
YXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcg
cHJvdG9jb2wpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsg
Ly8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNv
dXJjZXMuCi0KLVdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3Rv
Y29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKLVdF
QkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGlu
ZygpOwotCi1ib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKLQotU3RyaW5nIG1p
bWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwotCi0vLyBGSVhNRTogVGhpcyBp
cyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3NlLCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVl
ZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRoZSBVUkwgU3RhbmRhcmQuCi1XRUJDT1JFX0VYUE9S
VCBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKLQot
Ly8gSW5saW5lcy4KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0
IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOwotfQotCi1p
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewot
ICAgIHJldHVybiBhLnN0cmluZygpID09IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5zdHJp
bmcoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFVS
TCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiLnN0cmluZygpOwotfQotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAg
IHJldHVybiBhLnN0cmluZygpICE9IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgIT0gYi5zdHJpbmco
KTsKLX0KLQotLy8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlv
bnMgc28gd2UgY2FuIGdldCBpbmxpbmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxv
dCBvZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KLQotaW5saW5lIGJvb2wg
VVJMOjppc051bGwoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5pc051bGwoKTsKLX0K
LQotaW5saW5lIGJvb2wgVVJMOjppc0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJp
bmcuaXNFbXB0eSgpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2lzVmFsaWQ7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUGF0aCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7
Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzVXNlcm5hbWUoKSBjb25zdAotewotICAgIHJldHVy
biBtX3VzZXJFbmQgPiBtX3VzZXJTdGFydDsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpoYXNQYXNz
d29yZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFzc3dvcmRFbmQgPiAobV91c2VyRW5kICsg
MSk7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUXVlcnkoKSBjb25zdAotewotICAgIHJldHVy
biBtX3F1ZXJ5RW5kID4gbV9wYXRoRW5kOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdt
ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgp
ID4gbV9xdWVyeUVuZDsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwotfQot
Ci1pbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoU3RhcnQoKSBjb25zdAotewotICAgIHJldHVybiBt
X2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhF
bmQoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhdGhFbmQ7Ci19Ci0KLWlubGluZSB1bnNpZ25l
ZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEFm
dGVyTGFzdFNsYXNoOwotfQotCi1XVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgY29uc3QgVVJMJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNw
YWNlIFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+Owot
dGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+OwotfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQxZDBhYjk2ZGEzNWQzMWFjOGRiNGViNGRhYmQzZjRlMTU5MmI4MWIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMSGFzaC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVSTEhhc2hfaAot
I2RlZmluZSBVUkxIYXNoX2gKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0gICAgc3RydWN0IFVSTEhhc2ggewotICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGtleS5zdHJpbmcoKS5pbXBsKCktPmhhc2goKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3Ig
U3RyaW5nCi10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+IHsKLSAg
ICB1c2luZyBIYXNoID0gV2ViQ29yZTo6VVJMSGFzaDsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8V2ViQ29yZTo6VVJMPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJDb3Jl
OjpVUkw+IHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBVUkxIYXNoX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxN2JhYzQ5ZDliNjVkZThiMTA0ZDVhNmY3NWIyNTgwYjhiODkyYzZkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTFBhcnNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTI2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIu
aCIKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKLSNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1
bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi0jZGVmaW5lIFVSTF9QQVJTRVJfREVCVUdHSU5HIDAKLQotI2lmIFVSTF9Q
QVJTRVJfREVCVUdHSU5HCi0jZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4uLikgTE9HKFVSTFBhcnNl
ciwgX19WQV9BUkdTX18pCi0jZWxzZQotI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pCi0jZW5k
aWYKLSAgICAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1jbGFzcyBDb2RlUG9p
bnRJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRv
cigpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ2hhcmFj
dGVyVHlwZSogYmVnaW4sIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCkKLSAgICAgICAgOiBtX2Jl
Z2luKGJlZ2luKQotICAgICAgICAsIG1fZW5kKGVuZCkKLSAgICB7Ci0gICAgfQotICAgIAotICAg
IEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ29kZVBvaW50SXRlcmF0b3Im
IGJlZ2luLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgZW5kKQotICAgICAgICA6IENvZGVQb2lu
dEl0ZXJhdG9yKGJlZ2luLm1fYmVnaW4sIGVuZC5tX2JlZ2luKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGVuZC5tX2JlZ2luID49IGJlZ2luLm1fYmVnaW4pOwotICAgIH0KLSAgICAKLSAgICBBTFdB
WVNfSU5MSU5FIFVDaGFyMzIgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgQUxXQVlTX0lOTElORSBD
b2RlUG9pbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotCi0gICAgQUxXQVlTX0lOTElORSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9iZWdpbgotICAgICAgICAgICAgJiYg
bV9lbmQgPT0gb3RoZXIubV9lbmQ7Ci0gICAgfQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJh
dG9yJiBvcGVyYXRvcj0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKQotICAgIHsKLSAg
ICAgICAgbV9iZWdpbiA9IG90aGVyLm1fYmVnaW47Ci0gICAgICAgIG1fZW5kID0gb3RoZXIubV9l
bmQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgYXRFbmQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fYmVnaW4gPD0gbV9lbmQp
OwotICAgICAgICByZXR1cm4gbV9iZWdpbiA+PSBtX2VuZDsKLSAgICB9Ci0gICAgCi0gICAgQUxX
QVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2luY2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogcmVm
ZXJlbmNlKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fYmVnaW4gPj0gcmVmZXJlbmNl
KTsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4gLSByZWZlcmVuY2U7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2luY2UoY29uc3QgQ29kZVBvaW50SXRlcmF0b3Im
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvZGVVbml0c1NpbmNlKG90aGVy
Lm1fYmVnaW4pOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgY29uc3QgQ2hhcmFjdGVyVHlw
ZSogbV9iZWdpbiB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2VuZCB7
IG51bGxwdHIgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2Rl
UG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFh
dEVuZCgpKTsKLSAgICByZXR1cm4gKm1fYmVnaW47Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19J
TkxJTkUgYXV0byBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKysoKSAtPiBDb2Rl
UG9pbnRJdGVyYXRvciYKLXsKLSAgICBtX2JlZ2luKys7Ci0gICAgcmV0dXJuICp0aGlzOwotfQot
Ci10ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIFVDaGFyMzIgQ29kZVBvaW50SXRlcmF0b3I8VUNo
YXI+OjpvcGVyYXRvciooKSBjb25zdAotewotICAgIEFTU0VSVCghYXRFbmQoKSk7Ci0gICAgVUNo
YXIzMiBjOwotICAgIFUxNl9HRVQobV9iZWdpbiwgMCwgMCwgbV9lbmQgLSBtX2JlZ2luLCBjKTsK
LSAgICByZXR1cm4gYzsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBhdXRvIENvZGVQ
b2ludEl0ZXJhdG9yPFVDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgot
ewotICAgIHVuc2lnbmVkIGkgPSAwOwotICAgIHNpemVfdCBsZW5ndGggPSBtX2VuZCAtIG1fYmVn
aW47Ci0gICAgVTE2X0ZXRF8xKG1fYmVnaW4sIGksIGxlbmd0aCk7Ci0gICAgbV9iZWdpbiArPSBp
OwotICAgIHJldHVybiAqdGhpczsKLX0KLSAgICAKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQg
YXBwZW5kQ29kZVBvaW50KFZlY3RvcjxVQ2hhcj4mIGRlc3RpbmF0aW9uLCBVQ2hhcjMyIGNvZGVQ
b2ludCkKLXsKLSAgICBpZiAoVV9JU19CTVAoY29kZVBvaW50KSkgewotICAgICAgICBkZXN0aW5h
dGlvbi5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNvZGVQb2ludCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGRlc3RpbmF0aW9uLnJlc2VydmVDYXBhY2l0eShkZXN0aW5hdGlvbi5z
aXplKCkgKyAyKTsKLSAgICBkZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X0xFQUQoY29k
ZVBvaW50KSk7Ci0gICAgZGVzdGluYXRpb24udW5jaGVja2VkQXBwZW5kKFUxNl9UUkFJTChjb2Rl
UG9pbnQpKTsKLX0KLQotZW51bSBVUkxDaGFyYWN0ZXJDbGFzcyB7Ci0gICAgVXNlckluZm8gPSAw
eDEsCi0gICAgRGVmYXVsdCA9IDB4MiwKLSAgICBGb3JiaWRkZW5Ib3N0ID0gMHg0LAotICAgIFF1
ZXJ5UGVyY2VudCA9IDB4OCwKLSAgICBTbGFzaFF1ZXN0aW9uT3JIYXNoID0gMHgxMCwKLSAgICBW
YWxpZFNjaGVtZSA9IDB4MjAsCi19OwotCi1zdGF0aWMgY29uc3QgdWludDhfdCBjaGFyYWN0ZXJD
bGFzc1RhYmxlWzI1Nl0gPSB7Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHgwCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDEKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MgotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgzCi0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDQKLSAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFF1ZXJ5UGVyY2VudCwgLy8gMHg2Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDcKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
OAotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3Qs
IC8vIDB4OQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRl
bkhvc3QsIC8vIDB4QQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8g
MHhCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEMKLSAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweEQK
LSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4RQotICAgIFVzZXJJ
bmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhGCi0gICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEwCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweDExCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDEyCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEz
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE0Ci0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE1Ci0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE2Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDE3Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDE4Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAw
eDE5Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFBCi0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFCCi0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFDCi0gICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAweDFECi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDFFCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDFGCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVu
SG9zdCwgLy8gJyAnCi0gICAgMCwgLy8gJyEnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAnIicKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQg
fCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJyMnCi0gICAgMCwgLy8g
JyQnCi0gICAgRm9yYmlkZGVuSG9zdCwgLy8gJyUnCi0gICAgMCwgLy8gJyYnCi0gICAgMCwgLy8g
J1wnJwotICAgIDAsIC8vICcoJwotICAgIDAsIC8vICcpJwotICAgIDAsIC8vICcqJwotICAgIFZh
bGlkU2NoZW1lLCAvLyAnKycKLSAgICAwLCAvLyAnLCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJy0n
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICcuJwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9y
SGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICcvJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMCcKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJzEnCi0gICAgVmFsaWRTY2hlbWUsIC8vICcyJwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnMycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzQnCi0gICAgVmFsaWRTY2hlbWUs
IC8vICc1JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnNicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzcn
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICc4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnOScKLSAgICBV
c2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICc6JwotICAgIFVzZXJJbmZvLCAvLyAnOycKLSAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAn
PCcKLSAgICBVc2VySW5mbywgLy8gJz0nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJz4nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
U2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICc/JwotICAgIFVzZXJJbmZv
IHwgRm9yYmlkZGVuSG9zdCwgLy8gJ0AnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdBJwotICAgIFZh
bGlkU2NoZW1lLCAvLyAnQicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0MnCi0gICAgVmFsaWRTY2hl
bWUsIC8vICdEJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnRScKLSAgICBWYWxpZFNjaGVtZSwgLy8g
J0YnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdHJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSCcKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJ0knCi0gICAgVmFsaWRTY2hlbWUsIC8vICdKJwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnSycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0wnCi0gICAgVmFsaWRTY2hlbWUs
IC8vICdNJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnTicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ08n
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICdQJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnUScKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ1InCi0gICAgVmFsaWRTY2hlbWUsIC8vICdTJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnVCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1UnCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICdWJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnVycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1gnCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdZJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnWicKLSAgICBVc2Vy
SW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICdbJwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlv
bk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICdcXCcKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRl
bkhvc3QsIC8vICddJwotICAgIFVzZXJJbmZvLCAvLyAnXicKLSAgICAwLCAvLyAnXycKLSAgICBV
c2VySW5mbyB8IERlZmF1bHQsIC8vICdgJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnYScKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ2InCi0gICAgVmFsaWRTY2hlbWUsIC8vICdjJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnZCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2UnCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICdmJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnZycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2gnCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdpJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnaicKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ2snCi0gICAgVmFsaWRTY2hlbWUsIC8vICdsJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnbScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ24nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdv
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAncCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3EnCi0gICAg
VmFsaWRTY2hlbWUsIC8vICdyJwotICAgIFZhbGlkU2NoZW1lLCAvLyAncycKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJ3QnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd1JwotICAgIFZhbGlkU2NoZW1lLCAv
LyAndicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3cnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd4Jwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAneScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3onCi0gICAgVXNl
ckluZm8gfCBEZWZhdWx0LCAvLyAneycKLSAgICBVc2VySW5mbywgLy8gJ3wnCi0gICAgVXNlcklu
Zm8gfCBEZWZhdWx0LCAvLyAnfScKLSAgICAwLCAvLyAnficKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4N0YKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
ODEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODMK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODUKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4ODYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODcKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4ODgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODkKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OEEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEIKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OEMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEQKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OEUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEYKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTEKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTYK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTgKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUEKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUMKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUUKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTAKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTIKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTQKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTkK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUIKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUQKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUYKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QjAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjEKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QjIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjMKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QjQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjUKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QjYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjcKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QjgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QkEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkMK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkUKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QkYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzAKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QzEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzIKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QzMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzQKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QzUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzYKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QzcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzgKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QzkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0EKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4Q0IKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0MKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
Q0QKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0UKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0YK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDEKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RDIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDMKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RDQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDUKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RDYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDcKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RDgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDkKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4REEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REIKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4REMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REQKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4REUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTIK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTQKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTYKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTgKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUEKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUMKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUUKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjAKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RjEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjUK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjcKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RjgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjkKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RkEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkIKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RkMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkQKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RkUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkYKLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENv
bnRyb2woQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweDFG
OyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGlzQzBDb250cm9sT3JTcGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gY2hhcmFjdGVyIDw9IDB4MjA7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNUYWJPck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweEQgJiYgY2hhcmFjdGVyID49IDB4OSAm
JiBjaGFyYWN0ZXIgIT0gMHhCICYmIGNoYXJhY3RlciAhPSAweEM7IH0KLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblNpbXBsZUVu
Y29kZVNldChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3
RSB8fCBpc0MwQ29udHJvbChjaGFyYWN0ZXIpOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5EZWZhdWx0RW5jb2RlU2V0KENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJh
Y3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIERlZmF1bHQ7IH0KLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5j
b2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdF
IHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFVzZXJJbmZvOyB9Ci10ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzUGVy
Y2VudE9yTm9uQVNDSUkoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuICFpc0FTQ0lJ
KGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09ICclJzsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1NsYXNoUXVlc3Rpb25Pckhh
c2goQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXFwnICYm
IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFNsYXNoUXVlc3Rpb25Pckhhc2g7IH0K
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJv
b2wgaXNWYWxpZFNjaGVtZUNoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gY2hhcmFjdGVyIDw9ICd6JyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBW
YWxpZFNjaGVtZTsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXScgJiYgY2hhcmFjdGVyQ2xhc3NUYWJs
ZVtjaGFyYWN0ZXJdICYgRm9yYmlkZGVuSG9zdDsgfQotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9v
bCBzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKHVpbnQ4X3QgYnl0ZSwgY29uc3QgYm9vbCYg
dXJsSXNTcGVjaWFsKQotewotICAgIGlmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2J5dGVdICYgUXVl
cnlQZXJjZW50KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoYnl0ZSA9PSAnXCcnICYm
IHVybElzU3BlY2lhbCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KFVDaGFyIGMpCi17Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OmlzSW5Vc2VySW5mb0VuY29kZVNldChjKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgVVJMUGFyc2VyOjpSZXBvcnRTeW50YXhWaW9sYXRp
b24gcmVwb3J0U3ludGF4VmlvbGF0aW9uPgotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6
YWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xh
dGlvblBvc2l0aW9uKQotewotICAgICsraXRlcmF0b3I7Ci0gICAgd2hpbGUgKFVOTElLRUxZKCFp
dGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAg
IGlmIChyZXBvcnRTeW50YXhWaW9sYXRpb24gPT0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXMp
Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Q
b3NpdGlvbik7Ci0gICAgICAgICsraXRlcmF0b3I7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnRha2VzVHdvQWR2YW5jZXNVbnRp
bEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBp
ZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8
Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAg
IGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5j
ZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Ci0g
ICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFyc2VyOjppc1dpbmRvd3NEcml2ZUxl
dHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBp
ZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCAhaXNBU0NJSUFscGhhKCppdGVyYXRvcikpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZp
b2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICBpZiAoVU5MSUtFTFkoKml0ZXJhdG9yID09ICd8JykpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIFVS
TFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBB
U1NFUlQoaXNBU0NJSShjb2RlUG9pbnQpKTsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50
YXhWaW9sYXRpb24pKQotICAgICAgICBtX2FzY2lpQnVmZmVyLmFwcGVuZChjb2RlUG9pbnQpOwot
fQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKGNv
bnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKFVOTElLRUxZ
KG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKLSAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQo
Y2hhcmFjdGVycywgbGVuZ3RoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KLXZvaWQgVVJMUGFyc2VyOjphcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQotewotICAgIEFTU0VSVChpc1dpbmRvd3NE
cml2ZUxldHRlcihpdGVyYXRvcikpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoKml0ZXJhdG9y
KTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLSAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkp
OwotICAgIEFTU0VSVCgqaXRlcmF0b3IgPT0gJzonIHx8ICppdGVyYXRvciA9PSAnfCcpOwotICAg
IGlmICgqaXRlcmF0b3IgPT0gJ3wnKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3Ip
OwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsK
LX0KLQotYm9vbCBVUkxQYXJzZXI6OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVS
TCYgYmFzZSkKLXsKLSAgICBpZiAoYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCA8IGJhc2Uu
bV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICBpZiAoYmFzZS5tX3N0cmluZy5pczhCaXQoKSkg
ewotICAgICAgICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0
ZXJzOCgpOwotICAgICAgICAgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGMoYmVnaW4gKyBi
YXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3Ry
aW5nLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkg
ewotICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczE2
KCk7Ci0gICAgICAgICAgICBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4gYyhiZWdpbiArIGJhc2Uu
bV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcu
bGVuZ3RoKCkpOwotICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0g
ICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wg
VVJMUGFyc2VyOjpzaG91bGRDb3B5RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoIWlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9y
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0
b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgYWR2YW5jZShpdGVyYXRvcik7
Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiAhaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCppdGVyYXRvcik7Ci19Ci0KLXN0YXRpYyB2b2lk
IHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSwgVmVjdG9yPExDaGFyPiYgYnVmZmVyKQot
ewotICAgIGJ1ZmZlci5hcHBlbmQoJyUnKTsKLSAgICBidWZmZXIuYXBwZW5kKHVwcGVyTmliYmxl
VG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLSAgICBidWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9B
U0NJSUhleERpZ2l0KGJ5dGUpKTsKLX0KLQotdm9pZCBVUkxQYXJzZXI6OnBlcmNlbnRFbmNvZGVC
eXRlKHVpbnQ4X3QgYnl0ZSkKLXsKLSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24p
OwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyUnKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLX0KLQotY29uc3QgY2hhciBy
ZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZFsxMF0gPSAiJUVGJUJGJUJEIjsK
LWNvbnN0IHNpemVfdCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0
aCA9IHNpemVvZihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCkgLSAxOwot
Ci10ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UGVyY2VudEVuY29kZShj
b25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAg
QVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKLSAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVy
YXRvcjsKLSAgICBpZiAoTElLRUxZKGlzQVNDSUkoY29kZVBvaW50KSkpIHsKLSAgICAgICAgaWYg
KFVOTElLRUxZKGlzSW5Db2RlU2V0KGNvZGVQb2ludCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBv
aW50KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNv
ZGVQb2ludCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShpc0luQ29kZVNldChjb2RlUG9pbnQpLCAiaXNJbkNvZGVTZXQgc2hvdWxkIGFsd2F5cyByZXR1
cm4gdHJ1ZSBmb3Igbm9uLUFTQ0lJIGNoYXJhY3RlcnMiKTsKLSAgICBzeW50YXhWaW9sYXRpb24o
aXRlcmF0b3IpOwotICAgIAotICAgIGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkg
ewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBl
cmNlbnRFbmNvZGVkLCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0
aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgdWludDhfdCBidWZmZXJbVThf
TUFYX0xFTkdUSF07Ci0gICAgaW50MzJfdCBvZmZzZXQgPSAwOwotICAgIFU4X0FQUEVORF9VTlNB
RkUoYnVmZmVyLCBvZmZzZXQsIGNvZGVQb2ludCk7Ci0gICAgZm9yIChpbnQzMl90IGkgPSAwOyBp
IDwgb2Zmc2V0OyArK2kpCi0gICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ1ZmZlcltpXSk7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQg
VVJMUGFyc2VyOjp1dGY4UXVlcnlFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mIGl0ZXJhdG9yKQotewotICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0g
ICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRlcmF0b3I7Ci0gICAgaWYgKExJS0VMWShpc0FTQ0lJ
KGNvZGVQb2ludCkpKSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWShzaG91bGRQZXJjZW50RW5jb2Rl
UXVlcnlCeXRlKGNvZGVQb2ludCwgbV91cmxJc1NwZWNpYWwpKSkgewotICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNv
ZGVQb2ludCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihjb2RlUG9pbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHN5bnRheFZp
b2xhdGlvbihpdGVyYXRvcik7Ci0gICAgCi0gICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUihjb2Rl
UG9pbnQpKSB7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0
ZXJVVEY4UGVyY2VudEVuY29kZWQsIHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNv
ZGVkTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHVpbnQ4X3QgYnVmZmVy
W1U4X01BWF9MRU5HVEhdOwotICAgIGludDMyX3Qgb2Zmc2V0ID0gMDsKLSAgICBVOF9BUFBFTkRf
VU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCBjb2RlUG9pbnQpOwotICAgIGZvciAoaW50MzJfdCBpID0g
MDsgaSA8IG9mZnNldDsgKytpKSB7Ci0gICAgICAgIGF1dG8gYnl0ZSA9IGJ1ZmZlcltpXTsKLSAg
ICAgICAgaWYgKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNp
YWwpKQotICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnl0ZSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYnl0ZSk7Ci0gICAgfQotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVU
RjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGlu
ZyYgZW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQot
ewotICAgIGF1dG8gZW5jb2RlZCA9IGVuY29kaW5nLmVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5n
Vmlldyhzb3VyY2UuZGF0YSgpLCBzb3VyY2Uuc2l6ZSgpKSk7Ci0gICAgYXV0byogZGF0YSA9IGVu
Y29kZWQuZGF0YSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBlbmNvZGVkLnNpemUoKTsKLSAgICAK
LSAgICBpZiAoIWxlbmd0aCA9PSAhaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHNp
emVfdCBpID0gMDsKLSAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIEFTU0VS
VCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGRhdGFbaV07Ci0g
ICAgICAgIGlmIChVTkxJS0VMWShieXRlICE9ICppdGVyYXRvcikpIHsKLSAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBt
X3VybElzU3BlY2lhbCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3Ip
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihieXRlKTsKLSAgICAgICAgKytpdGVyYXRvcjsKLSAgICB9Ci0gICAgd2hpbGUgKCFpdGVy
YXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpCi0gICAgICAgICsraXRl
cmF0b3I7Ci0gICAgQVNTRVJUKChpID09IGxlbmd0aCkgPT0gaXRlcmF0b3IuYXRFbmQoKSk7Ci0g
ICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBBU1NFUlQobV9kaWRTZWVTeW50
YXhWaW9sYXRpb24pOwotICAgICAgICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOwotICAgICAgICBp
ZiAoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCi0g
ICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKLSAgICB9Ci19Ci0KLXN0ZDo6b3B0aW9u
YWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3
IHNjaGVtZSkKLXsKLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgZnRwUG9ydCA9IDIxOwotICAg
IHN0YXRpYyBjb25zdCB1aW50MTZfdCBnb3BoZXJQb3J0ID0gNzA7Ci0gICAgc3RhdGljIGNvbnN0
IHVpbnQxNl90IGh0dHBQb3J0ID0gODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBz
UG9ydCA9IDQ0MzsKLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qgd3NQb3J0ID0gODA7Ci0gICAg
c3RhdGljIGNvbnN0IHVpbnQxNl90IHdzc1BvcnQgPSA0NDM7Ci0gICAgCi0gICAgYXV0byBsZW5n
dGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKLSAgICBjYXNlICd3JzoKLSAg
ICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYg
KHNjaGVtZVsxXSA9PSAncycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHdzUG9ydDsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAg
IGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdz
JykKLSAgICAgICAgICAgICAgICByZXR1cm4gd3NzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICBjYXNlICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAg
ICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNd
ID09ICdwJykKLSAgICAgICAgICAgICAgICByZXR1cm4gaHR0cFBvcnQ7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAgICBpZiAoc2No
ZW1lWzFdID09ICd0JwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKLSAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzRdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gaHR0cHNQb3J0OwotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLSAgICBjYXNlICdnJzoKLSAgICAgICAgaWYg
KGxlbmd0aCA9PSA2Ci0gICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0gJ28nCi0gICAgICAgICAg
ICAmJiBzY2hlbWVbMl0gPT0gJ3AnCi0gICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCi0g
ICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ2UnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNV0g
PT0gJ3InKQotICAgICAgICAgICAgcmV0dXJuIGdvcGhlclBvcnQ7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgY2FzZSAnZic6Ci0gICAgICAgIGlmIChsZW5ndGggPT0gMwotICAg
ICAgICAgICAgJiYgc2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICdwJykKLSAgICAgICAgICAgIHJldHVybiBmdHBQb3J0OwotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
fQotfQotCi1lbnVtIGNsYXNzIFNjaGVtZSB7Ci0gICAgV1MsCi0gICAgV1NTLAotICAgIEZpbGUs
Ci0gICAgRlRQLAotICAgIEdvcGhlciwKLSAgICBIVFRQLAotICAgIEhUVFBTLAotICAgIE5vblNw
ZWNpYWwKLX07Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGljIFNjaGVtZSBzY2hlbWUoU3RyaW5nVmll
dyBzY2hlbWUpCi17Ci0gICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYg
KCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgc3dpdGNo
IChzY2hlbWVbMF0pIHsKLSAgICBjYXNlICdmJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsK
LSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnKQotICAgICAgICAgICAgICAgIHJldHVybiBT
Y2hlbWU6OkZUUDsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAg
ICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ2knCi0gICAgICAgICAg
ICAgICAgJiYgc2NoZW1lWzJdID09ICdsJwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9
PSAnZScpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6RmlsZTsKLSAgICAgICAgICAg
IHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICB9Ci0gICAgY2FzZSAnZyc6Ci0g
ICAgICAgIGlmIChsZW5ndGggPT0gNgotICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJwot
ICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJwotICAgICAgICAgICAgJiYgc2NoZW1lWzNd
ID09ICdoJwotICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdlJwotICAgICAgICAgICAgJiYg
c2NoZW1lWzVdID09ICdyJykKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkdvcGhlcjsKLSAg
ICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICBjYXNlICdoJzoKLSAgICAgICAg
c3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKHNjaGVt
ZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2No
ZW1lOjpIVFRQOwotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAg
ICAgY2FzZSA1OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAg
ICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09
ICdwJwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAncycpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6SFRUUFM7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25T
cGVjaWFsOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9u
U3BlY2lhbDsKLSAgICAgICAgfQotICAgIGNhc2UgJ3cnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0
aCkgewotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykK
LSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpXUzsKLSAgICAgICAgICAgIHJldHVybiBT
Y2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hl
bWVbMV0gPT0gJ3MnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpXU1M7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1l
OjpOb25TcGVjaWFsOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVt
ZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBT
Y2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgfQotfQotCi1zdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJM
UGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsK
LSAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LQotICAgIGlmICghaXNBU0NJSUFscGhhKHNjaGVtZVswXSkpCi0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsg
KytpKSB7Ci0gICAgICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKHNjaGVtZVtpXSkgfHwgc2No
ZW1lW2ldID09ICcrJyB8fCBzY2hlbWVbaV0gPT0gJy0nIHx8IHNjaGVtZVtpXSA9PSAnLicpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9
Ci0KLSAgICByZXR1cm4gc2NoZW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci19Ci0KLWJv
b2wgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWVBcmcpCi17
Ci0gICAgcmV0dXJuIHNjaGVtZShzY2hlbWVBcmcpICE9IFNjaGVtZTo6Tm9uU3BlY2lhbDsKLX0K
LQotZW51bSBjbGFzcyBVUkxQYXJzZXI6OlVSTFBhcnQgewotICAgIFNjaGVtZUVuZCwKLSAgICBV
c2VyU3RhcnQsCi0gICAgVXNlckVuZCwKLSAgICBQYXNzd29yZEVuZCwKLSAgICBIb3N0RW5kLAot
ICAgIFBvcnRFbmQsCi0gICAgUGF0aEFmdGVyTGFzdFNsYXNoLAotICAgIFBhdGhFbmQsCi0gICAg
UXVlcnlFbmQsCi19OwotCi1zaXplX3QgVVJMUGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQoY29u
c3QgVVJMJiB1cmwsIFVSTFBhcnQgcGFydCkKLXsKLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBj
YXNlIFVSTFBhcnQ6OlF1ZXJ5RW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fcXVlcnlFbmQ7Ci0g
ICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEVuZDsK
LSAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaDoKLSAgICAgICAgcmV0dXJuIHVy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAg
ICAgIHJldHVybiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aDsKLSAgICBjYXNlIFVS
TFBhcnQ6Okhvc3RFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9ob3N0RW5kOwotICAgIGNhc2Ug
VVJMUGFydDo6UGFzc3dvcmRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9wYXNzd29yZEVuZDsK
LSAgICBjYXNlIFVSTFBhcnQ6OlVzZXJFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV91c2VyRW5k
OwotICAgIGNhc2UgVVJMUGFydDo6VXNlclN0YXJ0OgotICAgICAgICByZXR1cm4gdXJsLm1fdXNl
clN0YXJ0OwotICAgIGNhc2UgVVJMUGFydDo6U2NoZW1lRW5kOgotICAgICAgICByZXR1cm4gdXJs
Lm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gMDsKLX0KLQotdm9pZCBVUkxQYXJzZXI6OmNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQotewotICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0
aCA8PSBzdHJpbmcubGVuZ3RoKCkpOwotICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwotICAgIGlmIChz
dHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIGxlbmd0aCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBVQ2hhciBjID0gY2hhcmFjdGVyc1tp
XTsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzQVNDSUko
YykpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjKTsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2Vy
Ojpjb3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQgcGFydCwgY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBVUkxUZXh0
RW5jb2RpbmcqJiBub25VVEY4UXVlcnlFbmNvZGluZykKLXsKLSAgICBzeW50YXhWaW9sYXRpb24o
aXRlcmF0b3IpOwotCi0gICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwotICAgIGNvcHlBU0NJSVN0
cmluZ1VudGlsKGJhc2UubV9zdHJpbmcsIHVybExlbmd0aFVudGlsUGFydChiYXNlLCBwYXJ0KSk7
Ci0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgY2FzZSBVUkxQYXJ0OjpRdWVyeUVuZDoKLSAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IGJhc2UubV9xdWVyeUVuZDsKLSAgICAgICAgRkFMTFRIUk9V
R0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgotICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBiYXNlLm1fcGF0aEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0
OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gYmFzZS5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAg
Y2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBiYXNl
Lm1fcG9ydExlbmd0aDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpI
b3N0RW5kOgotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKLSAgICAg
ICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKLSAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IGJhc2UubV9wYXNzd29yZEVuZDsKLSAgICAgICAgRkFMTFRI
Uk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyRW5kOgotICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBiYXNlLm1fdXNlckVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQ
YXJ0OjpVc2VyU3RhcnQ6Ci0gICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gYmFzZS5tX3VzZXJT
dGFydDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpTY2hlbWVFbmQ6
Ci0gICAgICAgIG1fdXJsLm1faXNWYWxpZCA9IGJhc2UubV9pc1ZhbGlkOwotICAgICAgICBtX3Vy
bC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBiYXNlLm1fcHJvdG9jb2xJc0luSFRUUEZhbWls
eTsKLSAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBiYXNlLm1fc2NoZW1lRW5kOwotICAgIH0K
LSAgICBzd2l0Y2ggKHNjaGVtZShTdHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpLCBtX3Vy
bC5tX3NjaGVtZUVuZCkpKSB7Ci0gICAgY2FzZSBTY2hlbWU6OldTOgotICAgIGNhc2UgU2NoZW1l
OjpXU1M6Ci0gICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAg
bV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6
OkZpbGU6Ci0gICAgICAgIG1fdXJsSXNGaWxlID0gdHJ1ZTsKLSAgICAgICAgRkFMTFRIUk9VR0g7
Ci0gICAgY2FzZSBTY2hlbWU6OkZUUDoKLSAgICBjYXNlIFNjaGVtZTo6R29waGVyOgotICAgIGNh
c2UgU2NoZW1lOjpIVFRQOgotICAgIGNhc2UgU2NoZW1lOjpIVFRQUzoKLSAgICAgICAgbV91cmxJ
c1NwZWNpYWwgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6Ok5vblNw
ZWNpYWw6Ci0gICAgICAgIG1fdXJsSXNTcGVjaWFsID0gZmFsc2U7Ci0gICAgICAgIG5vblVURjhR
dWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIgZG90QVNDSUlDb2RlWzJd
ID0geycyJywgJ2UnfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZ
U19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6OmlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKLXsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCpjID09ICcuJykgewotICAgICAgICBhZHZhbmNlPENo
YXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICByZXR1
cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hRdWVzdGlvbk9ySGFzaCgqYyk7Ci0gICAgfQotICAgIGlm
ICgqYyAhPSAnJScpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3Rl
clR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgIGlmIChjLmF0RW5kKCkg
fHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2
YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBp
ZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHRvQVNDSUlMb3dl
cigqYykgPT0gZG90QVNDSUlDb2RlWzFdKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBjLmF0RW5k
KCkgfHwgaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBi
b29sIFVSTFBhcnNlcjo6aXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiBjKQotewotICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoKmMgPT0gJy4nKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBpc1Npbmds
ZURvdFBhdGhTZWdtZW50KGMpOwotICAgIH0KLSAgICBpZiAoKmMgIT0gJyUnKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9s
YXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29kZVsw
XSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVw
b3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsx
XSkgewotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlv
bjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNTaW5nbGVEb3RQ
YXRoU2VnbWVudChjKSk7Ci0gICAgaWYgKCpjID09ICcuJykgewotICAgICAgICBhZHZhbmNlKGMp
OwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkgewotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8
fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOwotICAg
ICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAg
IGFkdmFuY2UoYyk7Ci0gICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAg
ICAgICBhZHZhbmNlKGMpOwotICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RB
U0NJSUNvZGVbMV0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRFbmQo
KSkgewotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAgICAg
ICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNT
RVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVEb3Vi
bGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsK
LSAgICBBU1NFUlQoaXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSk7Ci0gICAgaWYgKCpjID09ICcu
JykKLSAgICAgICAgYWR2YW5jZShjKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCpjID09
ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJ
SUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBBU1NFUlQodG9BU0NJSUxv
d2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgIH0K
LSAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7Ci19Ci0KLWJvb2wgVVJMUGFyc2Vy
OjpzaG91bGRQb3BQYXRoKHVuc2lnbmVkIG5ld1BhdGhBZnRlckxhc3RTbGFzaCkKLXsKLSAgICBB
U1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgIGlmICghbV91cmxJc0ZpbGUpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgQVNTRVJUKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKLSAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hh
cj4gY29tcG9uZW50VG9Qb3AoJm1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSwg
Jm1fYXNjaWlCdWZmZXJbMF0gKyBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCk7Ci0gICAgaWYg
KG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9PSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRM
ZW5ndGggKyAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGNvbXBvbmVudFRvUG9wKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFVSTFBhcnNlcjo6
cG9wUGF0aCgpCi17Ci0gICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICBp
ZiAobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5t
X3BvcnRMZW5ndGggKyAxKSB7Ci0gICAgICAgIGF1dG8gbmV3UGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggLSAxOwotICAgICAgICBpZiAobV9hc2NpaUJ1ZmZl
cltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdID09ICcvJykKLSAgICAgICAgICAgIG5ld1BhdGhBZnRl
ckxhc3RTbGFzaC0tOwotICAgICAgICB3aGlsZSAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID4gbV91
cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICYmIG1fYXNjaWlCdWZmZXJbbmV3UGF0
aEFmdGVyTGFzdFNsYXNoXSAhPSAnLycpCi0gICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xh
c2gtLTsKLSAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoKys7Ci0gICAgICAgIGlmIChzaG91
bGRQb3BQYXRoKG5ld1BhdGhBZnRlckxhc3RTbGFzaCkpCi0gICAgICAgICAgICBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA9IG5ld1BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICB9Ci0gICAgbV9h
c2NpaUJ1ZmZlci5yZXNpemUobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnN5bnRheFZpb2xh
dGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17
Ci0gICAgaWYgKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAg
bV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwotICAgIAotICAgIEFTU0VSVChtX2FzY2lp
QnVmZmVyLmlzRW1wdHkoKSk7Ci0gICAgc2l6ZV90IGNvZGVVbml0c1RvQ29weSA9IGl0ZXJhdG9y
LmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlwZSo+KG1f
aW5wdXRCZWdpbikpOwotICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVVbml0c1RvQ29weSA8PSBtX2lu
cHV0U3RyaW5nLmxlbmd0aCgpKTsKLSAgICBtX2FzY2lpQnVmZmVyLnJlc2VydmVDYXBhY2l0eSht
X2lucHV0U3RyaW5nLmxlbmd0aCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVV
bml0c1RvQ29weTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVChpc0FTQ0lJKG1faW5wdXRTdHJpbmdb
aV0pKTsKLSAgICAgICAgbV9hc2NpaUJ1ZmZlci51bmNoZWNrZWRBcHBlbmQobV9pbnB1dFN0cmlu
Z1tpXSk7Ci0gICAgfQotfQotCi12b2lkIFVSTFBhcnNlcjo6ZmFpbHVyZSgpCi17Ci0gICAgbV91
cmwuaW52YWxpZGF0ZSgpOwotICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpjaGVj
a0xvY2FsaG9zdENvZGVQb2ludChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRl
cmF0b3IsIFVDaGFyMzIgY29kZVBvaW50KQotewotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8
IHRvQVNDSUlMb3dlcigqaXRlcmF0b3IpICE9IGNvZGVQb2ludCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpO
bz4oaXRlcmF0b3IpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OmlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9z
dENvZGVQb2ludChpdGVyYXRvciwgJ2wnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdvJykpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYycp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2lu
dChpdGVyYXRvciwgJ2EnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tM
b2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdsJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnaCcpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRv
ciwgJ28nKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RD
b2RlUG9pbnQoaXRlcmF0b3IsICdzJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
IWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAndCcpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2Vy
Ojppc0xvY2FsaG9zdChTdHJpbmdWaWV3IHZpZXcpCi17Ci0gICAgaWYgKHZpZXcuaXM4Qml0KCkp
Ci0gICAgICAgIHJldHVybiBpc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPih2
aWV3LmNoYXJhY3RlcnM4KCksIHZpZXcuY2hhcmFjdGVyczgoKSArIHZpZXcubGVuZ3RoKCkpKTsK
LSAgICByZXR1cm4gaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4odmlldy5j
aGFyYWN0ZXJzMTYoKSwgdmlldy5jaGFyYWN0ZXJzMTYoKSArIHZpZXcubGVuZ3RoKCkpKTsKLX0K
LQotQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXcoc2l6
ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5
bnRheFZpb2xhdGlvbikpIHsKLSAgICAgICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1fYXNj
aWlCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZl
ci5kYXRhKCkgKyBzdGFydCwgbGVuZ3RoKTsKLSAgICB9Ci0gICAgQVNTRVJUKHN0YXJ0ICsgbGVu
Z3RoIDw9IG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1f
aW5wdXRTdHJpbmcpLnN1YnN0cmluZyhzdGFydCwgbGVuZ3RoKTsKLX0KLQotQUxXQVlTX0lOTElO
RSBVQ2hhciBVUkxQYXJzZXI6OnBhcnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlvbikKLXsKLSAg
ICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAgICByZXR1cm4g
bV9hc2NpaUJ1ZmZlcltwb3NpdGlvbl07Ci0gICAgcmV0dXJuIG1faW5wdXRTdHJpbmdbcG9zaXRp
b25dOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElO
RSBzaXplX3QgVVJMUGFyc2VyOjpjdXJyZW50UG9zaXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNl
ZVN5bnRheFZpb2xhdGlvbikpCi0gICAgICAgIHJldHVybiBtX2FzY2lpQnVmZmVyLnNpemUoKTsK
LSAgICAKLSAgICByZXR1cm4gaXRlcmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBDaGFyYWN0ZXJUeXBlKj4obV9pbnB1dEJlZ2luKSk7Ci19Ci0KLVVSTFBhcnNlcjo6
VVJMUGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJM
VGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNvZGluZykKLSAgICA6IG1faW5wdXRTdHJpbmco
aW5wdXQpCi17Ci0gICAgaWYgKGlucHV0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChiYXNlLmlz
VmFsaWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwpIHsKLSAgICAgICAgICAgIG1fdXJs
ID0gYmFzZTsKLSAgICAgICAgICAgIG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoaW5wdXQuaXM4Qml0
KCkpIHsKLSAgICAgICAgbV9pbnB1dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKLSAgICAg
ICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczgoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVU
RjhRdWVyeUVuY29kaW5nKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX2lucHV0QmVnaW4gPSBp
bnB1dC5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczE2KCks
IGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgfQotCi0g
ICAgQVNTRVJUKCFtX3VybC5tX2lzVmFsaWQKLSAgICAgICAgfHwgbV9kaWRTZWVTeW50YXhWaW9s
YXRpb24gPT0gKG1fdXJsLnN0cmluZygpICE9IGlucHV0KQotICAgICAgICB8fCAoaW5wdXQuaXNB
bGxTcGVjaWFsQ2hhcmFjdGVyczxpc0MwQ29udHJvbE9yU3BhY2U+KCkKLSAgICAgICAgICAgICYm
IG1fdXJsLm1fc3RyaW5nID09IGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpKSk7
Ci0gICAgQVNTRVJUKGludGVybmFsVmFsdWVzQ29uc2lzdGVudChtX3VybCkpOwotI2lmICFBU1NF
UlRfRElTQUJMRUQKLSAgICBpZiAoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSB7Ci0gICAgICAg
IC8vIEZvcmNlIGEgc3ludGF4IHZpb2xhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3Vy
ZSB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0LgotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VT
dHJpbmcoIiAiLCBpbnB1dCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAg
VVJMIHBhcnNlZCA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlk
KCkpCi0gICAgICAgICAgICBBU1NFUlQoYWxsVmFsdWVzRXF1YWwocGFyc2VyLnJlc3VsdCgpLCBt
X3VybCkpOwotICAgIH0KLSNlbmRpZgotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqIGlucHV0LCBj
b25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29k
aW5nKiBub25VVEY4UXVlcnlFbmNvZGluZykKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2lu
ZyBVUkwgPCVzPiBiYXNlIDwlcz4iLCBTdHJpbmcoaW5wdXQsIGxlbmd0aCkudXRmOCgpLmRhdGEo
KSwgYmFzZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX3VybCA9IHsgfTsKLSAgICBB
U1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBxdWVy
eUJ1ZmZlcjsKLQotICAgIHVuc2lnbmVkIGVuZEluZGV4ID0gbGVuZ3RoOwotICAgIHdoaWxlIChV
TkxJS0VMWShlbmRJbmRleCAmJiBpc0MwQ29udHJvbE9yU3BhY2UoaW5wdXRbZW5kSW5kZXggLSAx
XSkpKSB7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPihpbnB1dCwgaW5wdXQpKTsKLSAgICAgICAgZW5kSW5kZXgtLTsKLSAgICB9Ci0gICAg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYyhpbnB1dCwgaW5wdXQgKyBlbmRJbmRl
eCk7Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYXV0aG9yaXR5T3JIb3N0
QmVnaW47Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gcXVlcnlCZWdpbjsK
LSAgICB3aGlsZSAoVU5MSUtFTFkoIWMuYXRFbmQoKSAmJiBpc0MwQ29udHJvbE9yU3BhY2UoKmMp
KSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICsrYzsKLSAgICB9Ci0g
ICAgYXV0byBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlID0gYzsKLQotICAgIGVudW0gY2xhc3Mg
U3RhdGUgOiB1aW50OF90IHsKLSAgICAgICAgU2NoZW1lU3RhcnQsCi0gICAgICAgIFNjaGVtZSwK
LSAgICAgICAgTm9TY2hlbWUsCi0gICAgICAgIFNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5LAot
ICAgICAgICBQYXRoT3JBdXRob3JpdHksCi0gICAgICAgIFJlbGF0aXZlLAotICAgICAgICBSZWxh
dGl2ZVNsYXNoLAotICAgICAgICBTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcywKLSAgICAgICAgU3Bl
Y2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMsCi0gICAgICAgIEF1dGhvcml0eU9ySG9zdCwKLSAg
ICAgICAgSG9zdCwKLSAgICAgICAgRmlsZSwKLSAgICAgICAgRmlsZVNsYXNoLAotICAgICAgICBG
aWxlSG9zdCwKLSAgICAgICAgUGF0aFN0YXJ0LAotICAgICAgICBQYXRoLAotICAgICAgICBDYW5u
b3RCZUFCYXNlVVJMUGF0aCwKLSAgICAgICAgVVRGOFF1ZXJ5LAotICAgICAgICBOb25VVEY4UXVl
cnksCi0gICAgICAgIEZyYWdtZW50LAotICAgIH07Ci0KLSNkZWZpbmUgTE9HX1NUQVRFKHgpIFVS
TF9QQVJTRVJfTE9HKCJTdGF0ZSAlcywgY29kZSBwb2ludCAlYywgcGFyc2VkIGRhdGEgPCVzPiBz
aXplICV6dSIsIHgsICpjLCBwYXJzZWREYXRhVmlldygwLCBjdXJyZW50UG9zaXRpb24oYykpLnV0
ZjgoKS5kYXRhKCksIGN1cnJlbnRQb3NpdGlvbihjKSkKLSNkZWZpbmUgTE9HX0ZJTkFMX1NUQVRF
KHgpIFVSTF9QQVJTRVJfTE9HKCJGaW5hbCBTdGF0ZTogJXMiLCB4KQotCi0gICAgU3RhdGUgc3Rh
dGUgPSBTdGF0ZTo6U2NoZW1lU3RhcnQ7Ci0gICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKLSAgICAg
ICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCpjKSkpIHsKLSAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRl
OjpTY2hlbWVTdGFydDoKLSAgICAgICAgICAgIExPR19TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAg
ICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93
ZXIoKmMpKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIGlm
IChjLmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigp
OwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAg
ICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpTY2hlbWU7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0
YXRlOjpTY2hlbWU6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlNjaGVtZSIpOwotICAgICAgICAg
ICAgaWYgKGlzVmFsaWRTY2hlbWVDaGFyYWN0ZXIoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJ
TG93ZXIoKmMpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAg
ICAgICAgICAgdW5zaWduZWQgc2NoZW1lRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAg
ICAgICAgICAgIGlmIChzY2hlbWVFbmQgPiBVUkw6Om1heFNjaGVtZUxlbmd0aCkgewotICAgICAg
ICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBzY2hl
bWVFbmQ7Ci0gICAgICAgICAgICAgICAgU3RyaW5nVmlldyB1cmxTY2hlbWUgPSBwYXJzZWREYXRh
VmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignOicpOwotICAgICAgICAgICAgICAgIHN3aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkp
IHsKLSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RmlsZToKLSAgICAgICAgICAgICAgICAg
ICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBtX3VybElzRmls
ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7Ci0gICAg
ICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBTY2hlbWU6OldTOgotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpX
U1M6Ci0gICAgICAgICAgICAgICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsK
LSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoYmFzZS5wcm90b2NvbElzKHVybFNjaGVtZSkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eTsKLSAgICAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhU
VFA6Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFBTOgotICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RlRQOgot
ICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpHb3BoZXI6Ci0gICAgICAgICAgICAgICAgICAg
IG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJv
dG9jb2xJcyh1cmxTY2hlbWUpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlT
bGFzaGVzOwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgotICAgICAgICAg
ICAgICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7Ci0gICAgICAgICAgICAg
ICAgICAgIGF1dG8gbWF5YmVTbGFzaCA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIGFkdmFuY2Uo
bWF5YmVTbGFzaCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbWF5YmVTbGFzaC5hdEVuZCgp
ICYmICptYXliZVNsYXNoID09ICcvJykgewotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG1heWJlU2xh
c2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoT3JBdXRob3Jp
dHk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoKmMgPT0gJy8nKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNl
clN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91
c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2Nhbm5vdEJlQUJhc2VV
UkwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Q2Fubm90
QmVBQmFzZVVSTFBhdGg7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7
Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7Ci0gICAgICAgICAgICAg
ICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgaWYg
KGMuYXRFbmQoKSkgewotICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKLSAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICBj
ID0gYmVnaW5BZnRlckNvbnRyb2xBbmRTcGFjZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpOb1NjaGVtZToKLSAgICAgICAgICAgIExPR19T
VEFURSgiTm9TY2hlbWUiKTsKLSAgICAgICAgICAgIGlmICghYmFzZS5pc1ZhbGlkKCkgfHwgKGJh
c2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpjICE9ICcjJykpIHsKLSAgICAgICAgICAgICAgICBm
YWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpjID09ICcjJykgewotICAgICAg
ICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBu
b25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJh
Z21lbnQ7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAg
ICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmICghYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNj
aGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhv
cml0eToKLSAgICAgICAgICAgIExPR19TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHki
KTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAg
ICAgICAgICBpZiAoYy5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAoKmMgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lh
bEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVs
YXRpdmVTbGFzaDsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlJlbGF0aXZlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6
OlBhdGhPckF1dGhvcml0eToKLSAgICAgICAgICAgIExPR19TVEFURSgiUGF0aE9yQXV0aG9yaXR5
Iik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhv
cml0eU9ySG9zdDsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAg
IG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAg
IGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09
ICcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRp
b24oYykgLSAxOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAx
OwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAg
ICAgICBMT0dfU1RBVEUoIlJlbGF0aXZlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0g
ICAgICAgICAgICBjYXNlICcvJzoKLSAgICAgICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZVNsYXNoOwotICAgICAgICAgICAgICAgICsrYzsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJz8nOgotICAgICAgICAg
ICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVU
RjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/
Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVl
cnlFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICcjJzoKLSAgICAgICAg
ICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
JyMnKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhB
ZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAg
IGlmIChjdXJyZW50UG9zaXRpb24oYykgJiYgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9u
KGMpIC0gMSkgIT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFz
aDoKLSAgICAgICAgICAgIExPR19TVEFURSgiUmVsYXRpdmVTbGFzaCIpOwotICAgICAgICAgICAg
aWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSB7Ci0gICAgICAgICAgICAgICAgKytjOwotICAg
ICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwg
Yywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoIjovLyIsIDMpOwotICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNs
YXNoZXM7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Ci0gICAgICAgICAgICAgICAgICAgIGF1dGhv
cml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBv
cnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgotICAg
ICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcyIpOwotICAgICAgICAg
ICAgaWYgKExJS0VMWSgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykpCi0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoTElLRUxZKCFj
LmF0RW5kKCkgJiYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKCpjID09ICdcXCcpKQotICAgICAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
LSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNs
YXNoZXM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXM6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRo
b3JpdHlJZ25vcmVTbGFzaGVzIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09
ICdcXCcpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAg
ICAgICAgKytjOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Ci0gICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0
QmVnaW4gPSBjOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU3RhdGU6OkF1dGhvcml0eU9ySG9zdDoKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAg
ICAgICBMT0dfU1RBVEUoIkF1dGhvcml0eU9ySG9zdCIpOwotICAgICAgICAgICAgICAgIGlmICgq
YyA9PSAnQCcpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBsYXN0QXQgPSBjOwotICAgICAg
ICAgICAgICAgICAgICBhdXRvIGZpbmRMYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoIWZpbmRMYXN0QXQuYXRFbmQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgVVJM
X1BBUlNFUl9MT0coIkZpbmRpbmcgbGFzdCBAOiAlYyIsICpmaW5kTGFzdEF0KTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgqZmluZExhc3RBdCA9PSAnQCcpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGFzdEF0ID0gZmluZExhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNTbGFzaCA9ICpmaW5kTGFzdEF0ID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYg
KmZpbmRMYXN0QXQgPT0gJ1xcJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTbGFz
aCB8fCAqZmluZExhc3RBdCA9PSAnPycgfHwgKmZpbmRMYXN0QXQgPT0gJyMnKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgKytmaW5k
TGFzdEF0OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNl
QXV0aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9z
dEJlZ2luLCBsYXN0QXQpKTsKLSAgICAgICAgICAgICAgICAgICAgYyA9IGxhc3RBdDsKLSAgICAg
ICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5
T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIb3N0
OwotICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IGZhbHNl
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgYm9vbCBpc1NsYXNoID0gKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAq
YyA9PSAnXFwnKTsKLSAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8fCAqYyA9PSAnPycgfHwg
KmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYyk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBj
dXJyZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChpdGVyYXRvcikpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKCFpc1NsYXNoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChtX3VybElzU3BlY2lhbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJKCpjKSkKLSAgICAgICAgICAgICAgICAgICAgbV9o
b3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVlOwotICAgICAgICAgICAgICAgICsrYzsKLSAg
ICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgU3RhdGU6Okhvc3Q6Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAg
TE9HX1NUQVRFKCJIb3N0Iik7Ci0gICAgICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9
PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0
QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RC
ZWdpbiwgYykpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhh
c1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAg
ICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFN0YXRlOjpGaWxlOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlIik7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAgICAgICBjYXNlICdcXCc6Ci0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAg
ICAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGVTbGFzaDsKLSAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICc/
JzoKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAg
aWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMs
IG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignPycpOwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vPyIs
IDQpOwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMjsKLSAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVu
Y29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJyMnOgotICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlk
KCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29w
eVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVu
Y29kaW5nKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoIi8vLyMiLCA0KTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3Rh
cnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAyOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZy
YWdtZW50OwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZp
bGUiKSAmJiBzaG91bGRDb3B5RmlsZVVSTChjKSkKLSAgICAgICAgICAgICAgICAgICAgY29weVVS
TFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4
UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyIsIDMpOwotICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAgICAgICAgIExPR19TVEFURSgiRmlsZVNsYXNoIik7
Ci0gICAgICAgICAgICBpZiAoTElLRUxZKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkgewotICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1f
dXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3Vy
bC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0g
YzsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlSG9zdDsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7Ci0gICAgICAgICAg
ICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAg
ICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJs
Lm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKLSAgICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAg
ICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsK
LSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7Ci0g
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlBhdGg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6
Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlSG9zdCIp
OwotICAgICAgICAgICAgICAgIGlmIChpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGJvb2wgd2luZG93c1F1aXJrID0gdGFrZXNUd29BZHZhbmNlc1VudGls
RW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2lu
LCBjKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1
dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWly
aykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9y
SG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihh
dXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvd3NRdWlyayB8fCBhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQod2luZG93c1F1aXJrIHx8IHBhcnNlZERh
dGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJz8nKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCIvPyIsIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICsrYzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2Rp
bmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVy
eTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9u
KGMpIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChVTkxJS0VMWSgqYyA9PSAnIycpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoIi8jIiwgMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
Y3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNM
b2NhbGhvc3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0
aW9uKGMpIC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1
ZmZlci5zaHJpbmsobV91cmwubV9wYXNzd29yZEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQ
YXRoU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAg
ICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICArK2M7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpQYXRoU3RhcnQ6Ci0gICAgICAgICAgICBMT0df
U1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAgICAgICAgaWYgKCpjICE9ICcvJyAmJiAqYyAhPSAn
XFwnKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFN0YXRlOjpQYXRoOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoIik7Ci0gICAgICAg
ICAgICBpZiAoKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkgewot
ICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwn
KSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAg
ICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24o
Yyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoY3VycmVudFBvc2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQ
b3NpdGlvbihjKSAtIDEpID09ICcvJykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
aXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICBjb25zdW1lRG91YmxlRG90UGF0aFNl
Z21lbnQoYyk7Ci0gICAgICAgICAgICAgICAgICAgIHBvcFBhdGgoKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpKSkgewotICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1bWVTaW5nbGVEb3RQ
YXRoU2VnbWVudChjKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCpjID09ICc/JykgewotICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAg
ICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAg
IG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luRGVmYXVsdEVuY29kZVNldD4o
Yyk7Ci0gICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
dGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIkNhbm5v
dEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJz8nKSB7Ci0gICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0g
ICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMg
PT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhF
bmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKCpjID09ICcvJykgewotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNv
ZGVTZXQ+KGMpOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpVVEY4UXVlcnk6Ci0gICAgICAgICAgICBM
T0dfU1RBVEUoIlVURjhRdWVyeSIpOwotICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gPT0g
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7Ci0gICAgICAgICAgICBpZiAoKmMg
PT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3Np
dGlvbihjKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVCghbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgdXRmOFF1ZXJ5RW5jb2RlKGMpOwotICAg
ICAgICAgICAgKytjOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Ok5v
blVURjhRdWVyeToKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUo
Ik5vblVURjhRdWVyeSIpOwotICAgICAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOwotICAgICAgICAgICAgICAgIGlmICgq
YyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5
QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVy
eUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBhcHBlbmRDb2RlUG9pbnQocXVlcnlCdWZmZXIsICpjKTsK
LSAgICAgICAgICAgICAgICBhZHZhbmNlKGMsIHF1ZXJ5QmVnaW4pOwotICAgICAgICAgICAgfSB3
aGlsZSAoIWMuYXRFbmQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0
ZTo6RnJhZ21lbnQ6Ci0gICAgICAgICAgICBVUkxfUEFSU0VSX0xPRygiU3RhdGUgRnJhZ21lbnQi
KTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMp
OwotICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6Ci0g
ICAgICAgIExPR19GSU5BTF9TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgaWYgKCFjdXJy
ZW50UG9zaXRpb24oYykgJiYgYmFzZS5pc1ZhbGlkKCkgJiYgIWJhc2UubV9jYW5ub3RCZUFCYXNl
VVJMKSB7Ci0gICAgICAgICAgICBtX3VybCA9IGJhc2U7Ci0gICAgICAgICAgICBtX3VybC5yZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFN0YXRlOjpTY2hl
bWU6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU2NoZW1lIik7Ci0gICAgICAgIGZhaWx1cmUo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgU3RhdGU6Ok5vU2NoZW1lOgotICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIk5vU2NoZW1lIik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6Ci0g
ICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAg
ICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVU
RjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aE9y
QXV0aG9yaXR5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOwot
ICAgICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQpOwotICAgICAgICBBU1NFUlQobV91cmwu
bV91c2VyU3RhcnQgPT0gY3VycmVudFBvc2l0aW9uKGMpKTsKLSAgICAgICAgQVNTRVJUKHBhcnNl
ZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgIG1fdXJs
Lm1fdXNlclN0YXJ0LS07Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0g
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UmVs
YXRpdmU6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiUmVsYXRpdmUiKTsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNo
OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKLSAgICAgICAgY29w
eVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpOwotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVu
Z3RoICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNs
YXNoZXM6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMi
KTsKLSAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAg
ICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwot
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0Owot
ICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczoKLSAgICAgICAgTE9HX0ZJ
TkFMX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcyIpOwotICAgICAgICBmYWls
dXJlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6
Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiQXV0aG9yaXR5T3JIb3N0Iik7Ci0gICAgICAgIG1f
dXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0g
ICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgIGlm
IChhdXRob3JpdHlPckhvc3RCZWdpbi5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICB9
IGVsc2UgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAg
ICAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKSB7Ci0gICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBt
X3VybC5tX3BvcnRMZW5ndGggKyAxOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3Ro
OwotICAgICAgICB9Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwu
bV9wYXRoRW5kOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpIb3N0OgotICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIkhvc3QiKTsKLSAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9y
SG9zdEJlZ2luKSkgewotICAgICAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkgewotICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OwotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwu
bV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7Ci0gICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFN0YXRlOjpGaWxlOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGUiKTsKLSAgICAgICAg
aWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAg
ICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8iLCAz
KTsKLSAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwot
ICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91
cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX2hv
c3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKLSAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFy
dCArIDE7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAgICAg
TE9HX0ZJTkFMX1NUQVRFKCJGaWxlU2xhc2giKTsKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSArIDE7Ci0g
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7Ci0gICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBpZiAoY29w
eUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV91c2VyU3RhcnQgKyA0OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICBt
X3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFN0YXRlOjpGaWxlSG9zdDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJG
aWxlSG9zdCIpOwotICAgICAgICBpZiAodGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAg
ICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewot
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgIGFwcGVuZFdpbmRv
d3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChhdXRob3JpdHlPckhv
c3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJT
dGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAx
OwotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7Ci0gICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghcGFy
c2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlP
ckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
IGlmIChpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJy
ZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpIHsKLSAgICAgICAgICAgIG1f
YXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwotICAgICAgICAgICAgbV91
cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgbV91cmwubV9w
b3J0TGVuZ3RoID0gMDsKLSAgICAgICAgfQotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5k
ICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6
UGF0aFN0YXJ0OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIGNhc2UgU3RhdGU6OlBhdGg6Ci0g
ICAgICAgIExPR19GSU5BTF9TVEFURSgiUGF0aCIpOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5t
X3BhdGhFbmQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VV
UkxQYXRoOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7
Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlVURjhRdWVy
eSIpOwotICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPigpKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgotICAg
ICAgICBMT0dfRklOQUxfU1RBVEUoIk5vblVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQocXVl
cnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAgICAg
ZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiRnJhZ21l
bnQiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKExJS0VMWSghbV9kaWRTZWVT
eW50YXhWaW9sYXRpb24pKSB7Ci0gICAgICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmlu
ZzsKLSAgICAgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgbV91cmwubV9zdHJpbmcgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUobV9hc2NpaUJ1
ZmZlcikpOwotICAgIG1fdXJsLm1faXNWYWxpZCA9IHRydWU7Ci0gICAgVVJMX1BBUlNFUl9MT0co
IlBhcnNlZCBVUkwgPCVzPiIsIG1fdXJsLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNlQXV0
aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAg
IGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICBzeW50YXhWaW9sYXRp
b24oaXRlcmF0b3IpOwotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24o
aXRlcmF0b3IpOwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5k
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsg
YWR2YW5jZShpdGVyYXRvcikpIHsKLSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpIHsKLSAg
ICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0g
ICAgICAgICAgICBhdXRvIGl0ZXJhdG9yQXRDb2xvbiA9IGl0ZXJhdG9yOwotICAgICAgICAgICAg
KytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJvb2wgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IGZh
bHNlOwotICAgICAgICAgICAgd2hpbGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlz
VGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgICAgICAgICAgdGFiT3JOZXdsaW5l
QWZ0ZXJDb2xvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAg
ICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckF0Q29sb24pOwotICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fdXJsLm1fdXNlckVuZCA+IG1fdXJsLm1fdXNlclN0YXJ0KQotICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdAJyk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHRhYk9yTmV3bGluZUFmdGVyQ29s
b24pCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yQXRDb2xvbik7Ci0g
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxXZWJDb3JlOjppc0luVXNlcklu
Zm9FbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKLSAgICB9Ci0gICAgZm9yICg7ICFpdGVyYXRvci5hdEVu
ZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkKLSAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V2ViQ29y
ZTo6aXNJblVzZXJJbmZvRW5jb2RlU2V0PihpdGVyYXRvcik7Ci0gICAgbV91cmwubV9wYXNzd29y
ZEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgaWYgKCFtX3VybC5tX3VzZXJF
bmQpCi0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fcGFzc3dvcmRFbmQ7Ci0gICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignQCcpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25l
ZEludGVnZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIo
VW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpCi17Ci0gICAgTENoYXIgYnVmW3NpemVvZihVbnNp
Z25lZEludGVnZXJUeXBlKSAqIDMgKyAxXTsKLSAgICBMQ2hhciogZW5kID0gc3RkOjplbmQoYnVm
KTsKLSAgICBMQ2hhciogcCA9IGVuZDsKLSAgICBkbyB7Ci0gICAgICAgICotLXAgPSAobnVtYmVy
ICUgMTApICsgJzAnOwotICAgICAgICBudW1iZXIgLz0gMTA7Ci0gICAgfSB3aGlsZSAobnVtYmVy
KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHAsIGVuZCAtIHApOwotfQotCi12b2lkIFVSTFBh
cnNlcjo6c2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyBhZGRyZXNzKQotewotICAgIGFwcGVuZE51
bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAyNCk7Ci0gICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4o
YWRkcmVzcyA+PiAxNik7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVu
ZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiA4KTsKLSAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcuJyk7Ci0gICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90
PihhZGRyZXNzKTsKLX0KLSAgICAKLXN0YXRpYyBzaXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNv
bnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzLCBzaXplX3QgYmVnaW4pCi17Ci0g
ICAgc2l6ZV90IGVuZCA9IGJlZ2luOwotICAgIGZvciAoOyBlbmQgPCA4OyBlbmQrKykgewotICAg
ICAgICBpZiAoYWRkcmVzc1tlbmRdKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJl
dHVybiBlbmQgLSBiZWdpbjsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5k
TG9uZ2VzdFplcm9TZXF1ZW5jZShjb25zdCBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVz
cykKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbG9uZ2VzdDsKLSAgICBzaXplX3QgbG9u
Z2VzdExlbmd0aCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyBpKyspIHsKLSAg
ICAgICAgc2l6ZV90IGxlbmd0aCA9IHplcm9TZXF1ZW5jZUxlbmd0aChhZGRyZXNzLCBpKTsKLSAg
ICAgICAgaWYgKGxlbmd0aCkgewotICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgKCFsb25n
ZXN0IHx8IGxvbmdlc3RMZW5ndGggPCBsZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgbG9uZ2Vz
dCA9IGk7Ci0gICAgICAgICAgICAgICAgbG9uZ2VzdExlbmd0aCA9IGxlbmd0aDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGkgKz0gbGVuZ3RoOwotICAgICAgICB9Ci0gICAgfQotICAgIHJl
dHVybiBsb25nZXN0OwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NlBpZWNlKHVp
bnQxNl90IHBpZWNlKQotewotICAgIGJvb2wgcHJpbnRlZCA9IGZhbHNlOwotICAgIGlmIChhdXRv
IG5pYmJsZTAgPSBwaWVjZSA+PiAxMikgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxv
d2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTApKTsKLSAgICAgICAgcHJp
bnRlZCA9IHRydWU7Ci0gICAgfQotICAgIGF1dG8gbmliYmxlMSA9IHBpZWNlID4+IDggJiAweEY7
Ci0gICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMSkgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTEpKTsKLSAgICAg
ICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQotICAgIGF1dG8gbmliYmxlMiA9IHBpZWNlID4+IDQg
JiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMikKLSAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChuaWJibGUyKSk7Ci0g
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdp
dChwaWVjZSAmIDB4RikpOwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NihVUkxQ
YXJzZXI6OklQdjZBZGRyZXNzIGFkZHJlc3MpCi17Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
WycpOwotICAgIGF1dG8gY29tcHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2Uo
YWRkcmVzcyk7Ci0gICAgZm9yIChzaXplX3QgcGllY2UgPSAwOyBwaWVjZSA8IDg7IHBpZWNlKysp
IHsKLSAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBjb21wcmVzc1BvaW50ZXIudmFsdWUo
KSA9PSBwaWVjZSkgewotICAgICAgICAgICAgQVNTRVJUKCFhZGRyZXNzW3BpZWNlXSk7Ci0gICAg
ICAgICAgICBpZiAocGllY2UpCi0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
OicpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoIjo6IiwgMik7Ci0gICAgICAgICAgICB3aGlsZSAocGllY2UgPCA4ICYmICFhZGRyZXNzW3Bp
ZWNlXSkKLSAgICAgICAgICAgICAgICBwaWVjZSsrOwotICAgICAgICAgICAgaWYgKHBpZWNlID09
IDgpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc2VyaWFsaXpl
SVB2NlBpZWNlKGFkZHJlc3NbcGllY2VdKTsKLSAgICAgICAgaWYgKHBpZWNlIDwgNykKLSAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKLSAgICB9Ci0gICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignXScpOwotfQotCi1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2lu
Z0Vycm9yIHsKLSAgICBGYWlsdXJlLAotICAgIE92ZXJmbG93LAotfTsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQ
aWVjZVBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGJvb2wmIGRpZFNlZVN5bnRheFZpb2xhdGlv
bikKLXsKLSAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7Ci0gICAgICAgIFVua25vd25C
YXNlLAotICAgICAgICBEZWNpbWFsLAotICAgICAgICBPY3RhbE9ySGV4LAotICAgICAgICBPY3Rh
bCwKLSAgICAgICAgSGV4LAotICAgIH07Ci0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93
bkJhc2U7Ci0gICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsK
LSAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0g
ICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChpc1RhYk9yTmV3bGlu
ZSgqaXRlcmF0b3IpKSB7Ci0gICAgICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVl
OwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICBBU1NFUlQo
IXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUudW5zYWZl
R2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNl
IFN0YXRlOjpVbmtub3duQmFzZToKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0b3Ig
PT0gJzAnKSkgewotICAgICAgICAgICAgICAgICsraXRlcmF0b3I7Ci0gICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6T2N0YWxPckhleDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkRlY2ltYWw7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6T2N0YWxPckhleDoKLSAgICAgICAgICAgIGRp
ZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09
ICd4JyB8fCAqaXRlcmF0b3IgPT0gJ1gnKSB7Ci0gICAgICAgICAgICAgICAgKytpdGVyYXRvcjsK
LSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIZXg7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbDsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpEZWNpbWFsOgotICAgICAgICAg
ICAgaWYgKCFpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICAgICAg
ICAgIHZhbHVlICo9IDEwOwotICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwot
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3Zl
cmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFN0YXRlOjpPY3RhbDoKLSAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhW
aW9sYXRpb24pOwotICAgICAgICAgICAgaWYgKCppdGVyYXRvciA8ICcwJyB8fCAqaXRlcmF0b3Ig
PiAnNycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBh
cnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgICAgICB2YWx1ZSAqPSA4OwotICAgICAgICAg
ICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZh
bHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVy
YXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpIZXg6Ci0gICAg
ICAgICAgICBBU1NFUlQoZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICAgICAgICAgIGlmICgh
aXNBU0NJSUhleERpZ2l0KCppdGVyYXRvcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgICAgICB2
YWx1ZSAqPSAxNjsKLSAgICAgICAgICAgIHZhbHVlICs9IHRvQVNDSUlIZXhWYWx1ZSgqaXRlcmF0
b3IpOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJv
cjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfQotICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsK
LSAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGlj
IHVpbnQ2NF90IHBvdzI1NihzaXplX3QgZXhwb25lbnQpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQo
ZXhwb25lbnQgPD0gNCk7Ci0gICAgdWludDY0X3QgdmFsdWVzWzVdID0gezEsIDI1NiwgMjU2ICog
MjU2LCAyNTYgKiAyNTYgKiAyNTYsIDI1NnVsbCAqIDI1NiAqIDI1NiAqIDI1NiB9OwotICAgIHJl
dHVybiB2YWx1ZXNbZXhwb25lbnRdOwotfQotCi1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBh
cnNpbmdFcnJvciB7Ci0gICAgRmFpbHVyZSwKLSAgICBOb3RJUHY0LAotfTsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KLUV4cGVjdGVkPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2
NFBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24+JiBpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVy
YXRvcikKLXsKLSAgICBWZWN0b3I8RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBp
ZWNlUGFyc2luZ0Vycm9yPiwgND4gaXRlbXM7Ci0gICAgYm9vbCBkaWRTZWVTeW50YXhWaW9sYXRp
b24gPSBmYWxzZTsKLSAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcu
JykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQ
djQpOwotICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBpZiAoaXNUYWJP
ck5ld2xpbmUoKml0ZXJhdG9yKSkgewotICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9u
ID0gdHJ1ZTsKLSAgICAgICAgICAgICsraXRlcmF0b3I7Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoaXRlbXMuc2l6ZSgpID49IDQpCi0gICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAg
IGl0ZW1zLmFwcGVuZChwYXJzZUlQdjRQaWVjZShpdGVyYXRvciwgZGlkU2VlU3ludGF4VmlvbGF0
aW9uKSk7Ci0gICAgICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4n
KSB7Ci0gICAgICAgICAgICArK2l0ZXJhdG9yOwotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkpCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4
VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICAgICAgZWxzZSBpZiAoKml0ZXJhdG9yID09ICcu
JykKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJv
cjo6Tm90SVB2NCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCFpdGVyYXRvci5hdEVuZCgp
IHx8ICFpdGVtcy5zaXplKCkgfHwgaXRlbXMuc2l6ZSgpID4gNCkKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIGZvciAoY29uc3Qg
YXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBp
dGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKQotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAg
IH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICBpZiAoIWl0
ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6
T3ZlcmZsb3cpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdF
cnJvcjo6RmFpbHVyZSk7Ci0gICAgfQotICAgIGlmIChpdGVtcy5zaXplKCkgPiAxKSB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpIC0gMTsgaSsrKSB7Ci0gICAg
ICAgICAgICBpZiAoaXRlbXNbaV0udmFsdWUoKSA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgaWYgKGl0ZW1zW2l0ZW1zLnNpemUoKSAtIDFdLnZhbHVlKCkgPj0gcG93MjU2
KDUgLSBpdGVtcy5zaXplKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBh
cnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0KLSAgICBpZiAoZGlkU2VlU3ludGF4VmlvbGF0aW9uKQot
ICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlv
bik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgaWYgKGl0
ZW0udmFsdWUoKSA+IDI1NSkKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZv
clN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICB9Ci0KLSAgICBpZiAoVU5MSUtFTFkoaXRl
bXMuc2l6ZSgpICE9IDQpKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50
YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0KLSAgICBJUHY0QWRkcmVzcyBpcHY0ID0gaXRlbXMudGFr
ZUxhc3QoKS52YWx1ZSgpOwotICAgIGZvciAoc2l6ZV90IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwg
aXRlbXMuc2l6ZSgpOyArK2NvdW50ZXIpCi0gICAgICAgIGlwdjQgKz0gaXRlbXNbY291bnRlcl0u
dmFsdWUoKSAqIHBvdzI1NigzIC0gY291bnRlcik7Ci0gICAgcmV0dXJuIGlwdjQ7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBV
UkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgdWludDMyX3QgcGllY2UgPSAwOwotICAgIGJv
b2wgbGVhZGluZ1plcm9zID0gZmFsc2U7Ci0gICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOwotICAg
IHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgq
aXRlcmF0b3IpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgKytk
aWdpdENvdW50OwotICAgICAgICBpZiAoIXBpZWNlICYmICppdGVyYXRvciA9PSAnMCcpIHsKLSAg
ICAgICAgICAgIGlmIChsZWFkaW5nWmVyb3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0gJzAnKQotICAgICAgICAgICAgbGVhZGlu
Z1plcm9zID0gdHJ1ZTsKLSAgICAgICAgcGllY2UgPSBwaWVjZSAqIDEwICsgKml0ZXJhdG9yIC0g
JzAnOwotICAgICAgICBpZiAocGllY2UgPiAyNTUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnLicpCi0gICAgICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgaWYgKHBpZWNlICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gcGllY2U7Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJl
c3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9
IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBpZWNlID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0
ZXJhdG9yKSkKLSAgICAgICAgICAgIGFkZHJlc3MgPSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZh
bHVlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgICAgIGlmIChpIDwgMykgewotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGlmICgqaXRl
cmF0b3IgIT0gJy4nKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+
KGl0ZXJhdG9yKTsKLSAgICAgICAgfSBlbHNlIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIEFTU0VSVChpdGVyYXRvci5h
dEVuZCgpKTsKLSAgICByZXR1cm4gYWRkcmVzczsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KLXN0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFy
c2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCi17
Ci0gICAgQVNTRVJUKCpjID09ICdbJyk7Ci0gICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBjOwot
ICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgSVB2NkFkZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH19OwotICAgIHNpemVfdCBwaWVjZVBvaW50ZXIgPSAwOwotICAgIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb21wcmVzc1BvaW50ZXI7Ci0KLSAgICBpZiAoKmMgPT0gJzon
KSB7Ci0gICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICAgICAgaWYgKGMuYXRFbmQo
KSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICgqYyAhPSAn
OicpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlKGMs
IGhvc3RCZWdpbik7Ci0gICAgICAgICsrcGllY2VQb2ludGVyOwotICAgICAgICBjb21wcmVzc1Bv
aW50ZXIgPSBwaWVjZVBvaW50ZXI7Ci0gICAgfQotICAgIAotICAgIHdoaWxlICghYy5hdEVuZCgp
KSB7Ci0gICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCkKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICgqYyA9PSAnOicpIHsKLSAgICAgICAgICAgIGlmIChj
b21wcmVzc1BvaW50ZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICAgICAgICAgICsrcGllY2VQb2lu
dGVyOwotICAgICAgICAgICAgY29tcHJlc3NQb2ludGVyID0gcGllY2VQb2ludGVyOwotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2
IHx8IChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2ludGVyIDwgNikpIHsKLSAgICAgICAgICAg
IGlmIChzdGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFk
ZHJlc3NJbnNpZGVJUHY2KGMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRl
ciAmJiBwaWVjZVBvaW50ZXIgPT0gNSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAg
ICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVl
KCkgPj4gMTY7Ci0gICAgICAgICAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0
QWRkcmVzcy52YWx1ZSgpICYgMHhGRkZGOwotICAgICAgICAgICAgICAgIGMgPSB7IH07Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdWlu
dDE2X3QgdmFsdWUgPSAwOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0gMDsKLSAgICAgICAgYm9v
bCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKLSAgICAgICAgZm9yICg7IGxlbmd0aCA8IDQ7IGxlbmd0
aCsrKSB7Ci0gICAgICAgICAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKmMpKQotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcigqYykpCi0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJzAn
ICYmICFsZW5ndGgpCi0gICAgICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAg
ICAgICAgIHZhbHVlID0gdmFsdWUgKiAweDEwICsgdG9BU0NJSUhleFZhbHVlKCpjKTsKLSAgICAg
ICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgaWYgKFVOTElLRUxZKCh2YWx1ZSAmJiBsZWFkaW5nWmVyb3MpIHx8ICghdmFsdWUgJiYgbGVu
Z3RoID4gMSkpKQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAg
ICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSB2YWx1ZTsKLSAgICAgICAgaWYgKGMuYXRF
bmQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDgg
fHwgKmMgIT0gJzonKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
YWR2YW5jZShjLCBob3N0QmVnaW4pOwotICAgIH0KLSAgICAKLSAgICBpZiAoIWMuYXRFbmQoKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAKLSAgICBpZiAoY29tcHJlc3NQb2lu
dGVyKSB7Ci0gICAgICAgIHNpemVfdCBzd2FwcyA9IHBpZWNlUG9pbnRlciAtIGNvbXByZXNzUG9p
bnRlci52YWx1ZSgpOwotICAgICAgICBwaWVjZVBvaW50ZXIgPSA3OwotICAgICAgICB3aGlsZSAo
c3dhcHMpCi0gICAgICAgICAgICBzdGQ6OnN3YXAoYWRkcmVzc1twaWVjZVBvaW50ZXItLV0sIGFk
ZHJlc3NbY29tcHJlc3NQb2ludGVyLnZhbHVlKCkgKyBzd2Fwcy0tIC0gMV0pOwotICAgIH0gZWxz
ZSBpZiAocGllY2VQb2ludGVyICE9IDgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcG9zc2libGVDb21wcmVzc1BvaW50ZXIgPSBmaW5k
TG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKLSAgICBpZiAocG9zc2libGVDb21wcmVzc1Bv
aW50ZXIpCi0gICAgICAgIHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyLnZhbHVlKCkrKzsKLSAgICBp
ZiAoVU5MSUtFTFkoY29tcHJlc3NQb2ludGVyICE9IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKSkK
LSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0gICAgCi0gICAgcmV0dXJuIGFk
ZHJlc3M7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1VUkxQYXJzZXI6
OkxDaGFyQnVmZmVyIFVSTFBhcnNlcjo6cGVyY2VudERlY29kZShjb25zdCBMQ2hhciogaW5wdXQs
IHNpemVfdCBsZW5ndGgsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQotewotICAgIExDaGFyQnVmZmVyIG91
dHB1dDsKLSAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgIAot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdWludDhf
dCBieXRlID0gaW5wdXRbaV07Ci0gICAgICAgIGlmIChieXRlICE9ICclJykKLSAgICAgICAgICAg
IG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+
IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQo
aW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgewotICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0
aW9uKTsKLSAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhW
YWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgICAgIGkgKz0g
MjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRB
cHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tl
ZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLSAgICAKLVVSTFBh
cnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBp
bnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBMQ2hhckJ1ZmZlciBvdXRwdXQ7Ci0gICAgb3V0
cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGlucHV0
W2ldOwotICAgICAgICBpZiAoYnl0ZSAhPSAnJScpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVj
a2VkQXBwZW5kKGJ5dGUpOwotICAgICAgICBlbHNlIGlmIChsZW5ndGggPiAyICYmIGkgPCBsZW5n
dGggLSAyKSB7Ci0gICAgICAgICAgICBpZiAoaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkg
JiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAyXSkpIHsKLSAgICAgICAgICAgICAgICBvdXRw
dXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kg
KyAyXSkpOwotICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG91dHB1dDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rk
OjpvcHRpb25hbDxVUkxQYXJzZXI6OkxDaGFyQnVmZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVND
SUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikKLXsKLSAgICBMQ2hhckJ1
ZmZlciBhc2NpaTsKLSAgICBpZiAoZG9tYWluLmlzQWxsQVNDSUkoKSkgewotICAgICAgICBzaXpl
X3QgbGVuZ3RoID0gZG9tYWluLmxlbmd0aCgpOwotICAgICAgICBpZiAoZG9tYWluLmlzOEJpdCgp
KSB7Ci0gICAgICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0
ZXJzOCgpOwotICAgICAgICAgICAgYXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgp
OwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQot
ICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9s
YXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRv
QVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0
ZXJzMTYoKTsKLSAgICAgICAgICAgIGFzY2lpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3Ro
KTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkK
LSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4Vmlv
bGF0aW9uUG9zaXRpb24pOwotICAgICAgICAgICAgICAgIGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0
b0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBhc2NpaTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3Qgc2l6ZV90IG1heERv
bWFpbkxlbmd0aCA9IDY0OwotICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW21heERvbWFpbkxlbmd0
aF07Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBVSUROQUluZm8g
cHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOwotICAgIGludDMyX3Qg
bnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFs
RG9tYWluTmFtZVRyYW5zY29kZXIoKSwgU3RyaW5nVmlldyhkb21haW4pLnVwY29udmVydGVkQ2hh
cmFjdGVycygpLCBkb21haW4ubGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVyLCBtYXhEb21haW5MZW5n
dGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKLSAgICBBU1NFUlQobnVtQ2hhcmFjdGVy
c0NvbnZlcnRlZCA8PSBzdGF0aWNfY2FzdDxpbnQzMl90PihtYXhEb21haW5MZW5ndGgpKTsKLQot
ICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsK
LSAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsg
KytpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXNBU0NJSShob3N0bmFtZUJ1ZmZlcltpXSkpOwot
ICAgICAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoaG9zdG5hbWVCdWZmZXJbaV0pKTsKLSAg
ICAgICAgfQotICAgICAgICBhc2NpaS5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3Rl
cnNDb252ZXJ0ZWQpOwotICAgICAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcoYXNjaWkuZGF0
YSgpLCBhc2NpaS5zaXplKCkpKQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9y
Rm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICByZXR1cm4gYXNjaWk7Ci0gICAg
fQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpoYXNGb3Ji
aWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IFVSTFBhcnNlcjo6TENoYXJCdWZmZXImIGFzY2lpRG9t
YWluKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXNjaWlEb21haW4uc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbltp
XSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnBh
cnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0g
ICAgQVNTRVJUKCppdGVyYXRvciA9PSAnOicpOwotICAgIGF1dG8gY29sb25JdGVyYXRvciA9IGl0
ZXJhdG9yOwotICAgIGFkdmFuY2UoaXRlcmF0b3IsIGNvbG9uSXRlcmF0b3IpOwotICAgIHVpbnQz
Ml90IHBvcnQgPSAwOwotICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAg
ICAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0gY3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3Ip
IC0gbV91cmwubV9ob3N0RW5kOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9
IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRM
ZW5ndGg7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHNpemVfdCBkaWdpdENvdW50ID0gMDsKLSAgICBib29s
IGxlYWRpbmdaZXJvcyA9IGZhbHNlOwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytp
dGVyYXRvcikgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9y
KSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKml0
ZXJhdG9yKSkgewotICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnMCcgJiYgIWRpZ2l0Q291
bnQpCi0gICAgICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgICsr
ZGlnaXRDb3VudDsKLSAgICAgICAgICAgIHBvcnQgPSBwb3J0ICogMTAgKyAqaXRlcmF0b3IgLSAn
MCc7Ci0gICAgICAgICAgICBpZiAocG9ydCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+
OjptYXgoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChwb3J0ICYmIGxlYWRp
bmdaZXJvcykKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgIAot
ICAgIGlmICghcG9ydCAmJiBkaWdpdENvdW50ID4gMSkKLSAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGNvbG9uSXRlcmF0b3IpOwotCi0gICAgQVNTRVJUKHBvcnQgPT0gc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KHBvcnQpKTsKLSAgICBpZiAoVU5MSUtFTFkoZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwYXJz
ZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCkpID09IHN0YXRpY19jYXN0PHVpbnQxNl90
Pihwb3J0KSkpCi0gICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICBl
bHNlIHsKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICBBU1NFUlQo
cG9ydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOwotICAgICAgICBh
cHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQxNl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4o
cG9ydCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRp
b24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRM
ZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKLSAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBw
b3J0TGVuZ3RoOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5k
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJ1snKSB7Ci0gICAgICAg
IGF1dG8gaXB2NkVuZCA9IGl0ZXJhdG9yOwotICAgICAgICB3aGlsZSAoIWlwdjZFbmQuYXRFbmQo
KSAmJiAqaXB2NkVuZCAhPSAnXScpCi0gICAgICAgICAgICArK2lwdjZFbmQ7Ci0gICAgICAgIGlm
IChpcHY2RW5kLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlm
IChhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+KGl0ZXJhdG9yLCBpcHY2RW5kKSkpIHsKLSAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjYo
YWRkcmVzcy52YWx1ZSgpKTsKLSAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgYWR2YW5jZShpcHY2RW5kKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlw
djZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCA9PSAnOicpIHsKLSAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGlwdjZFbmQpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXB2NkVuZCk7
Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdXJs
SXNTcGVjaWFsKSB7Ci0gICAgICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRv
cikgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikp
KSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgqaXRlcmF0
b3IgPT0gJzonKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpICYmICppdGVyYXRvciAhPSAn
JScpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHV0ZjhQZXJj
ZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKLSAgICAgICAgfQotICAg
ICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgIH0KLSAgICAKLSAgICBpZiAoTElLRUxZKCFtX2hv
c3RIYXNQZXJjZW50T3JOb25BU0NJSSkpIHsKLSAgICAgICAgYXV0byBob3N0SXRlcmF0b3IgPSBp
dGVyYXRvcjsKLSAgICAgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7
Ci0gICAgICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2lu
dCgqaXRlcmF0b3IpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
ICAgICAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRIb3N0KGhvc3RJdGVyYXRvciwgQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaG9zdEl0ZXJhdG9yLCBpdGVyYXRvcikpOwotICAg
ICAgICBpZiAoYWRkcmVzcykgewotICAgICAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZh
bHVlKCkpOwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0
ZXJhdG9yKTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3Ip
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdF
cnJvcjo6RmFpbHVyZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZm9yICg7
IGhvc3RJdGVyYXRvciAhPSBpdGVyYXRvcjsgKytob3N0SXRlcmF0b3IpIHsKLSAgICAgICAgICAg
IGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaG9zdEl0ZXJhdG9yKSkpIHsKLSAgICAgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJ
VXBwZXIoKmhvc3RJdGVyYXRvcikpKQotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbiho
b3N0SXRlcmF0b3IpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93
ZXIoKmhvc3RJdGVyYXRvcikpOwotICAgICAgICB9Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0
RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGhvc3RJdGVyYXRvcik7Ci0gICAg
ICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91
cmwubV9ob3N0RW5kOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6
bWF4UG9ydExlbmd0aCk7Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBjb25zdCBhdXRvIGhvc3RC
ZWdpbiA9IGl0ZXJhdG9yOwotICAgIAotICAgIExDaGFyQnVmZmVyIHV0ZjhFbmNvZGVkOwotICAg
IGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBpZiAoVU5M
SUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihob3N0QmVnaW4pOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
aWYgKFVOTElLRUxZKCFpc0FTQ0lJKCppdGVyYXRvcikpKQotICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAgICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUigqaXRl
cmF0b3IpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1aW50OF90IGJ1ZmZl
cltVOF9NQVhfTEVOR1RIXTsKLSAgICAgICAgaW50MzJfdCBvZmZzZXQgPSAwOwotICAgICAgICBV
OF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCAqaXRlcmF0b3IpOwotICAgICAgICB1dGY4
RW5jb2RlZC5hcHBlbmQoYnVmZmVyLCBvZmZzZXQpOwotICAgIH0KLSAgICBMQ2hhckJ1ZmZlciBw
ZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUodXRmOEVuY29kZWQuZGF0YSgpLCB1dGY4RW5j
b2RlZC5zaXplKCksIGhvc3RCZWdpbik7Ci0gICAgU3RyaW5nIGRvbWFpbiA9IFN0cmluZzo6ZnJv
bVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotICAg
IGlmIChkb21haW4uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZG9t
YWluICE9IFN0cmluZ1ZpZXcocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5z
aXplKCkpKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICBhdXRvIGFz
Y2lpRG9tYWluID0gZG9tYWluVG9BU0NJSSgqZG9tYWluLmltcGwoKSwgaG9zdEJlZ2luKTsKLSAg
ICBpZiAoIWFzY2lpRG9tYWluIHx8IGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlEb21h
aW4udmFsdWUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBMQ2hhckJ1ZmZlciYgYXNj
aWlEb21haW5WYWx1ZSA9IGFzY2lpRG9tYWluLnZhbHVlKCk7Ci0gICAgY29uc3QgTENoYXIqIGFz
Y2lpRG9tYWluQ2hhcmFjdGVycyA9IGFzY2lpRG9tYWluVmFsdWUuZGF0YSgpOwotCi0gICAgYXV0
byBhZGRyZXNzID0gcGFyc2VJUHY0SG9zdChob3N0QmVnaW4sIENvZGVQb2ludEl0ZXJhdG9yPExD
aGFyPihhc2NpaURvbWFpblZhbHVlLmJlZ2luKCksIGFzY2lpRG9tYWluVmFsdWUuZW5kKCkpKTsK
LSAgICBpZiAoYWRkcmVzcykgewotICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUo
KSk7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7
Ci0gICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAgfQotICAgIGlmIChhZGRyZXNzLmVy
cm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihhc2NpaURvbWFpbkNoYXJhY3RlcnMsIGFzY2lp
RG9tYWluVmFsdWUuc2l6ZSgpKTsKLSAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRp
b24oaXRlcmF0b3IpOwotICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJu
IHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVS
TERlY29kZShTdHJpbmdWaWV3IGlucHV0KQotewotICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0Zjgo
U3RyaWN0Q29udmVyc2lvbik7Ci0gICAgaWYgKHV0ZjguaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgo
KSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBw
ZXJjZW50RGVjb2RlZC5zaXplKCkpOwotfQotCi0vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5v
cmcvI2NvbmNlcHQtdXJsZW5jb2RlZC1wYXJzZXIKLWF1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVu
Y29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+IFVSTEVuY29kZWRGb3JtCi17Ci0gICAgVVJM
RW5jb2RlZEZvcm0gb3V0cHV0OwotICAgIGZvciAoU3RyaW5nVmlldyBieXRlcyA6IGlucHV0LnNw
bGl0KCcmJykpIHsKLSAgICAgICAgYXV0byBlcXVhbEluZGV4ID0gYnl0ZXMuZmluZCgnPScpOwot
ICAgICAgICBpZiAoZXF1YWxJbmRleCA9PSBub3RGb3VuZCkgewotICAgICAgICAgICAgYXV0byBu
YW1lID0gZm9ybVVSTERlY29kZShieXRlcy50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7
Ci0gICAgICAgICAgICBpZiAobmFtZSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsg
bmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJ
bmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOwotICAgICAgICAgICAgYXV0byB2
YWx1ZSA9IGZvcm1VUkxEZWNvZGUoYnl0ZXMuc3Vic3RyaW5nKGVxdWFsSW5kZXggKyAxKS50b1N0
cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1
ZSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52
YWx1ZSgpIH0pOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBvdXRwdXQ7Ci19Ci0KLXN0
YXRpYyB2b2lkIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3JtKGNvbnN0IFN0cmluZyYgaW5wdXQsIFZl
Y3RvcjxMQ2hhcj4mIG91dHB1dCkKLXsKLSAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmlj
dENvbnZlcnNpb24pOwotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSB1dGY4LmRhdGEoKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHV0ZjgubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBjb25z
dCBjaGFyIGJ5dGUgPSBkYXRhW2ldOwotICAgICAgICBpZiAoYnl0ZSA9PSAweDIwKQotICAgICAg
ICAgICAgb3V0cHV0LmFwcGVuZCgweDJCKTsKLSAgICAgICAgZWxzZSBpZiAoYnl0ZSA9PSAweDJB
Ci0gICAgICAgICAgICB8fCBieXRlID09IDB4MkQKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgy
RQotICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHgzMCAmJiBieXRlIDw9IDB4MzkpCi0gICAgICAg
ICAgICB8fCAoYnl0ZSA+PSAweDQxICYmIGJ5dGUgPD0gMHg1QSkKLSAgICAgICAgICAgIHx8IGJ5
dGUgPT0gMHg1RgotICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHg2MSAmJiBieXRlIDw9IDB4N0Ep
KSAvLyBGSVhNRTogUHV0IHRoZXNlIGluIHRoZSBjaGFyYWN0ZXJDbGFzc1RhYmxlIHRvIGF2b2lk
IGJyYW5jaGVzLgotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChieXRlKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnl0ZSwgb3V0cHV0KTsKLSAgICB9Ci19
Ci0gICAgCi1TdHJpbmcgVVJMUGFyc2VyOjpzZXJpYWxpemUoY29uc3QgVVJMRW5jb2RlZEZvcm0m
IHR1cGxlcykKLXsKLSAgICBpZiAodHVwbGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHsg
fTsKLQotICAgIFZlY3RvcjxMQ2hhcj4gb3V0cHV0OwotICAgIGZvciAoYXV0byYgdHVwbGUgOiB0
dXBsZXMpIHsKLSAgICAgICAgaWYgKCFvdXRwdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgb3V0
cHV0LmFwcGVuZCgnJicpOwotICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS5r
ZXksIG91dHB1dCk7Ci0gICAgICAgIG91dHB1dC5hcHBlbmQoJz0nKTsKLSAgICAgICAgc2VyaWFs
aXplVVJMRW5jb2RlZEZvcm0odHVwbGUudmFsdWUsIG91dHB1dCk7Ci0gICAgfQotICAgIHJldHVy
biBTdHJpbmc6OmFkb3B0KFdURk1vdmUob3V0cHV0KSk7Ci19Ci0KLWNvbnN0IFVJRE5BJiBVUkxQ
YXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpCi17Ci0gICAgc3RhdGlj
IFVJRE5BKiBlbmNvZGVyOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBVRXJyb3JDb2RlIGVycm9y
ID0gVV9aRVJPX0VSUk9SOwotICAgICAgICAvLyBXYXJuaW5nOiBQbGVhc2UgY29udGFjdCBhIFdl
YktpdEdUSysgZGV2ZWxvcGVyIGlmIGNoYW5naW5nIHRoZXNlIGZsYWdzLgotICAgICAgICAvLyBU
aGV5IHNob3VsZCBiZSBzeW5jZWQgd2l0aCBlcGh5X3VyaV9kZWNvZGUoKSBpbiBlcGh5LXVyaS1o
ZWxwZXJzLmMuCi0gICAgICAgIGVuY29kZXIgPSB1aWRuYV9vcGVuVVRTNDYoVUlETkFfQ0hFQ0tf
QklESSB8IFVJRE5BX0NIRUNLX0NPTlRFWFRKIHwgVUlETkFfTk9OVFJBTlNJVElPTkFMX1RPX1VO
SUNPREUgfCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fQVNDSUksICZlcnJvcik7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikpOwotICAgICAgICBSRUxFQVNFX0FTU0VS
VChlbmNvZGVyKTsKLSAgICB9KTsKLSAgICByZXR1cm4gKmVuY29kZXI7Ci19Ci0KLWJvb2wgVVJM
UGFyc2VyOjphbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAg
ICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNc
biVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzIiwKLSAgICAgICAgYS5tX2lz
VmFsaWQsCi0gICAgICAgIGEubV9jYW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBhLm1fcHJvdG9j
b2xJc0luSFRUUEZhbWlseSwKLSAgICAgICAgYS5tX3NjaGVtZUVuZCwKLSAgICAgICAgYS5tX3Vz
ZXJTdGFydCwKLSAgICAgICAgYS5tX3VzZXJFbmQsCi0gICAgICAgIGEubV9wYXNzd29yZEVuZCwK
LSAgICAgICAgYS5tX2hvc3RFbmQsCi0gICAgICAgIGEubV9ob3N0RW5kICsgYS5tX3BvcnRMZW5n
dGgsCi0gICAgICAgIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGEubV9wYXRoRW5k
LAotICAgICAgICBhLm1fcXVlcnlFbmQsCi0gICAgICAgIGEubV9zdHJpbmcudXRmOCgpLmRhdGEo
KSwKLSAgICAgICAgYi5tX2lzVmFsaWQsCi0gICAgICAgIGIubV9jYW5ub3RCZUFCYXNlVVJMLAot
ICAgICAgICBiLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKLSAgICAgICAgYi5tX3NjaGVtZUVu
ZCwKLSAgICAgICAgYi5tX3VzZXJTdGFydCwKLSAgICAgICAgYi5tX3VzZXJFbmQsCi0gICAgICAg
IGIubV9wYXNzd29yZEVuZCwKLSAgICAgICAgYi5tX2hvc3RFbmQsCi0gICAgICAgIGIubV9ob3N0
RW5kICsgYi5tX3BvcnRMZW5ndGgsCi0gICAgICAgIGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCi0g
ICAgICAgIGIubV9wYXRoRW5kLAotICAgICAgICBiLm1fcXVlcnlFbmQsCi0gICAgICAgIGIubV9z
dHJpbmcudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICByZXR1cm4gYS5tX3N0cmluZyA9PSBiLm1fc3Ry
aW5nCi0gICAgICAgICYmIGEubV9pc1ZhbGlkID09IGIubV9pc1ZhbGlkCi0gICAgICAgICYmIGEu
bV9jYW5ub3RCZUFCYXNlVVJMID09IGIubV9jYW5ub3RCZUFCYXNlVVJMCi0gICAgICAgICYmIGEu
bV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID09IGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5Ci0g
ICAgICAgICYmIGEubV9zY2hlbWVFbmQgPT0gYi5tX3NjaGVtZUVuZAotICAgICAgICAmJiBhLm1f
dXNlclN0YXJ0ID09IGIubV91c2VyU3RhcnQKLSAgICAgICAgJiYgYS5tX3VzZXJFbmQgPT0gYi5t
X3VzZXJFbmQKLSAgICAgICAgJiYgYS5tX3Bhc3N3b3JkRW5kID09IGIubV9wYXNzd29yZEVuZAot
ICAgICAgICAmJiBhLm1faG9zdEVuZCA9PSBiLm1faG9zdEVuZAotICAgICAgICAmJiBhLm1fcG9y
dExlbmd0aCA9PSBiLm1fcG9ydExlbmd0aAotICAgICAgICAmJiBhLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID09IGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gKLSAgICAgICAgJiYgYS5tX3BhdGhFbmQgPT0g
Yi5tX3BhdGhFbmQKLSAgICAgICAgJiYgYS5tX3F1ZXJ5RW5kID09IGIubV9xdWVyeUVuZDsKLX0K
LQotYm9vbCBVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmIHVy
bCkKLXsKLSAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kIDw9IHVybC5tX3VzZXJTdGFydAotICAg
ICAgICAmJiB1cmwubV91c2VyU3RhcnQgPD0gdXJsLm1fdXNlckVuZAotICAgICAgICAmJiB1cmwu
bV91c2VyRW5kIDw9IHVybC5tX3Bhc3N3b3JkRW5kCi0gICAgICAgICYmIHVybC5tX3Bhc3N3b3Jk
RW5kIDw9IHVybC5tX2hvc3RFbmQKLSAgICAgICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5tX3Bv
cnRMZW5ndGggPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoCi0gICAgICAgICYmIHVybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA8PSB1cmwubV9wYXRoRW5kCi0gICAgICAgICYmIHVybC5tX3BhdGhF
bmQgPD0gdXJsLm1fcXVlcnlFbmQKLSAgICAgICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1f
c3RyaW5nLmxlbmd0aCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTFBhcnNlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjViZWIw
MjRjOTgwMzIyYTZlMDUzOWE1YmZlODQ3YWU5MTBjZmFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotc3RydWN0IFVJRE5BOwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQ
b2ludEl0ZXJhdG9yOwotCi1jbGFzcyBVUkxQYXJzZXIgewotcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIFVSTFBhcnNlcihjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBV
UkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7Ci0gICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1f
dXJsOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBp
bnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQoY29uc3QgVVJMJik7Ci0gICAgCi0gICAgdHlwZWRlZiBW
ZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBVUkxFbmNvZGVkRm9ybTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVVJMRW5jb2RlZEZvcm0gcGFyc2VVUkxFbmNvZGVk
Rm9ybShTdHJpbmdWaWV3KTsKLSAgICBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBVUkxF
bmNvZGVkRm9ybSYpOwotCi0gICAgc3RhdGljIGNvbnN0IFVJRE5BJiBpbnRlcm5hdGlvbmFsRG9t
YWluTmFtZVRyYW5zY29kZXIoKTsKLSAgICBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVT
ZXQoVUNoYXIpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTcGVjaWFsU2No
ZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG1heWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYg
c2NoZW1lKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4g
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKLSAgICBmcmllbmQgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKLQotICAg
IFVSTCBtX3VybDsKLSAgICBWZWN0b3I8TENoYXI+IG1fYXNjaWlCdWZmZXI7Ci0gICAgYm9vbCBt
X3VybElzU3BlY2lhbCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VybElzRmlsZSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSB7IGZhbHNlIH07Ci0gICAgU3Ry
aW5nIG1faW5wdXRTdHJpbmc7Ci0gICAgY29uc3Qgdm9pZCogbV9pbnB1dEJlZ2luIHsgbnVsbHB0
ciB9OwotCi0gICAgYm9vbCBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiB7IGZhbHNlIH07Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdElubGluZUJ1ZmZlclNpemUgPSAyMDQ4Owot
ICAgIHVzaW5nIExDaGFyQnVmZmVyID0gVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVy
U2l6ZT47Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNl
KGNvbnN0IENoYXJhY3RlclR5cGUqLCBjb25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTFRleHRFbmNvZGluZyopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgcGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgcGFyc2VIb3N0
QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZVBvcnQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4mKTsKLQotICAgIHZvaWQgZmFpbHVyZSgpOwotICAgIGVudW0gY2xhc3Mg
UmVwb3J0U3ludGF4VmlvbGF0aW9uIHsgTm8sIFllcyB9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRp
b24gPSBSZXBvcnRTeW50YXhWaW9sYXRpb246Olllcz4KLSAgICB2b2lkIGFkdmFuY2UoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKSB7IGFkdmFuY2U8Q2hhcmFjdGVy
VHlwZSwgcmVwb3J0U3ludGF4VmlvbGF0aW9uPihpdGVyYXRvciwgaXRlcmF0b3IpOyB9Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uID0g
UmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXM+Ci0gICAgdm9pZCBhZHZhbmNlKENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiB2b2lkIHN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGJvb2wgaXNQZXJjZW50RW5jb2RlZERvdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
Pik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1dpbmRvd3NE
cml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1NpbmdsZURvdFBhdGhTZWdtZW50KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBib29sIGlzRG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGJvb2wgc2hvdWxkQ29weUZpbGVVUkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4p
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgY2hlY2tMb2NhbGhv
c3RDb2RlUG9pbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBVQ2hhcjMyKTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQXRMb2NhbGhvc3Qo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIGJvb2wgaXNMb2NhbGhvc3Qo
U3RyaW5nVmlldyk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBj
b25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVE
b3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5kV2luZG93c0Ry
aXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IGN1cnJlbnRQb3NpdGlvbihjb25zdCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFVuc2lnbmVkSW50ZWdlclR5cGU+IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNp
Z25lZEludGVnZXJUeXBlKTsKLSAgICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIz
MiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0ZDo6b3B0aW9uYWw8TENoYXJCdWZmZXI+IGRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYs
IGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBjb25zdCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRp
b25Qb3NpdGlvbik7Ci0gICAgc3RhdGljIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3Qg
TENoYXIqLCBzaXplX3QpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVS
TERlY29kZShTdHJpbmdWaWV3IGlucHV0KTsKLSAgICBzdGF0aWMgYm9vbCBoYXNGb3JiaWRkZW5I
b3N0Q29kZVBvaW50KGNvbnN0IExDaGFyQnVmZmVyJik7Ci0gICAgdm9pZCBwZXJjZW50RW5jb2Rl
Qnl0ZSh1aW50OF90KTsKLSAgICB2b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoVUNoYXIzMik7Ci0g
ICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHZv
aWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IHNp
emUpIHsgYXBwZW5kVG9BU0NJSUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihj
aGFyYWN0ZXJzKSwgc2l6ZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiB2b2lkIGVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNv
bnN0IFVSTFRleHRFbmNvZGluZyYsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsK
LSAgICB2b2lkIGNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmluZyYsIHNpemVfdCBsZW5n
dGgpOwotICAgIGJvb2wgY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJik7Ci0g
ICAgU3RyaW5nVmlldyBwYXJzZWREYXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgp
OwotICAgIFVDaGFyIHBhcnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlvbik7Ci0KLSAgICB1c2lu
ZyBJUHY0QWRkcmVzcyA9IHVpbnQzMl90OwotICAgIHZvaWQgc2VyaWFsaXplSVB2NChJUHY0QWRk
cmVzcyk7Ci0gICAgZW51bSBjbGFzcyBJUHY0UGFyc2luZ0Vycm9yOwotICAgIGVudW0gY2xhc3Mg
SVB2NFBpZWNlUGFyc2luZ0Vycm9yOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGVGb3JTeW50YXhWaW9sYXRpb24sIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPElQ
djRBZGRyZXNzLCBJUHY0UGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24+JiwgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4g
cGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBib29sJiBz
eW50YXhWaW9sYXRpb24pOwotICAgIHVzaW5nIElQdjZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50
MTZfdCwgOD47Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRp
b25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHZvaWQgc2VyaWFsaXplSVB2NlBp
ZWNlKHVpbnQxNl90IHBpZWNlKTsKLSAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3Mp
OwotCi0gICAgZW51bSBjbGFzcyBVUkxQYXJ0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHZvaWQgY29weVVSTFBhcnRzVW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0
LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGNvbnN0IFVSTFRleHRF
bmNvZGluZyomKTsKLSAgICBzdGF0aWMgc2l6ZV90IHVybExlbmd0aFVudGlsUGFydChjb25zdCBV
UkwmLCBVUkxQYXJ0KTsKLSAgICB2b2lkIHBvcFBhdGgoKTsKLSAgICBib29sIHNob3VsZFBvcFBh
dGgodW5zaWduZWQpOwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVXNlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAppbmRl
eCA0MTgxZWMxM2JmZjhmNGUyYWE4Mjk1ZTFiZmI3ZWZlNTllZDA4MWUzLi5jMzQ0ODQ4NmVlN2My
YWVhY2FhZWJlYmY1YTBlYjcxODNkYzZlZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Vc2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnQuaApAQCAtMzYsNyArMzYsNiBAQCBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2Vy
QWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYQogU3RyaW5nIHN5
c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKIFN0cmluZyB1c2VyQWdl
bnRCdW5kbGVWZXJzaW9uKCk7CiAjZWxzZQotY2xhc3MgVVJMOwogCiBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBl
bXB0eVN0cmluZygpLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVmVyc2lvbiA9IGVtcHR5U3Ry
aW5nKCkpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNv
bnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50
UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAK
aW5kZXggMjMyZTVjZTU3ZGIwNWRiMzhiNDlkZDljMDIxYTFiYzk5YzAzODVjYi4uNDliNTg5MjBh
N2FlYjc3MzJkNjU3MzI3NTU5MzQ3N2ExODZiMGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiVXNl
ckFnZW50UXVpcmtzLmgiCiAKICNpbmNsdWRlICJQdWJsaWNTdWZmaXguaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaAppbmRleCBiZjEwY2UyMzJkOTFk
NDMxYmNiNmQ0YTcxYTUxZGQ0ZGRlOGZiODhhLi5kYzc3ZDRlODUwZWY5MDlkNGIwMDU2ZDdjOWE3
ZTFhZDQ1ZmRkOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnRRdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3Mu
aApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsK
LQogY2xhc3MgVXNlckFnZW50UXVpcmtzIHsKIHB1YmxpYzoKICAgICBlbnVtIFVzZXJBZ2VudFF1
aXJrIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNiNDNiYzdhMDdiODBhZTRiYWEzNWZkYjczMzVhYzNi
YTc2NDQxNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkNGVVJMRXh0cmFzLmgiCi0KLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmV0YWluUHRyPENGVVJMUmVm
PiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENG
VVJMUmVmIGJhc2VVUkwpCi17Ci0gICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2Ug
dGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5p
bmcgVVJMIGNvbXBvbmVudHMKLSAgICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93
ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1
ZW5jZXMsIHdoaWNoCi0gICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBv
ciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZh
bGwgYmFjawotICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCi0g
ICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1
dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBz
aXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGJhc2VVUkwsIHRydWUpKTsKLSAgICBpZiAoIXJl
c3VsdCkKLSAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0
aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NG
U3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGJhc2VVUkwsIHRydWUpKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi12b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYg
cmVzdWx0KQotewotICAgIENGSW5kZXggYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwg
MCwgMCk7Ci0gICAgcmVzdWx0LnJlc2l6ZShieXRlc0xlbmd0aCk7Ci0gICAgQ0ZJbmRleCBmaW5h
bExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVz
dWx0LmRhdGEoKSksIGJ5dGVzTGVuZ3RoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3Ro
LCBmaW5hbExlbmd0aCA9PSBieXRlc0xlbmd0aCk7Ci19Ci0KLXZvaWQgZ2V0VVJMQnl0ZXMoQ0ZV
UkxSZWYgdXJsLCBDU3RyaW5nJiByZXN1bHQpCi17Ci0gICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9
IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKLSAgICBjaGFyKiBieXRlczsKLSAgICByZXN1bHQg
PSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGJ5dGVzTGVuZ3RoLCBieXRlcyk7Ci0gICAgQ0ZJ
bmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJ
bnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0
aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5ndGgpOwotfQotCi1ib29sIGlzQ0ZVUkxTYW1lT3Jp
Z2luKENGVVJMUmVmIGNmVVJMLCBjb25zdCBVUkwmIHVybCkKLXsKLSAgICBBU1NFUlQodXJsLnBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7Ci0KLSAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwg
dXJsLmhhc1Bhc3N3b3JkKCkpCi0gICAgICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsKLQotICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7Ci0g
ICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5dGVzKTsKLSAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5n
IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihieXRlcy5zaXplKCkpIH07Ci0KLSAgICBpZiAoIXVybC5oYXNQYXRoKCkp
Ci0gICAgICAgIHJldHVybiBTdHJpbmdWaWV3IHsgdXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJp
bmc7Ci0KLSAgICBhdXRvIHVybFdpdGhvdXRQYXRoID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmco
KSB9LnN1YnN0cmluZygwLCB1cmwucGF0aFN0YXJ0KCkgKyAxKTsKLSAgICByZXR1cm4gY2ZVUkxT
dHJpbmcuc3RhcnRzV2l0aCh1cmxXaXRob3V0UGF0aCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
ZmQ1NzA2NjBkYTZhYTk4ZDEyMjg2NDA3OGZlZDdkZDZlNzc5ZWY1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0NGVVJMRXh0cmFzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBDRlVSTEV4dHJhc19oCi0jZGVmaW5lIENGVVJMRXh0cmFzX2gKLQotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkw7Ci10eXBl
ZGVmIFZlY3RvcjxjaGFyLCA1MTI+IFVSTENoYXJCdWZmZXI7Ci0KLVdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXpl
X3QsIENGVVJMUmVmIGJhc2VVUkwgPSAwKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0
ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJM
Qnl0ZXMoQ0ZVUkxSZWYsIENTdHJpbmcmKTsKLQotYm9vbCBpc0NGVVJMU2FtZU9yaWdpbihDRlVS
TFJlZiwgY29uc3QgVVJMJik7Ci0KLX0KLQotI2VuZGlmIC8vIENGVVJMRXh0cmFzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YWI2NDFlZDJkOWJlYzEzZDZhMTc3OGY2MzY2MmY5YjY2N2E5NzFjOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9VUkxDRi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJVUkwuaCIKLQotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0j
aW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5j
bHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1VUkw6OlVSTChDRlVSTFJlZiB1cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAg
ICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklY
TUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVy
bEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHVybCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBw
YXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0K
LQotI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVD
RlVSTCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZv
ciBpbnZhbGlkIFVSTHM/Ci0gICAgLy8gQ3VycmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdo
IGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAotICAg
IC8vIHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCi0gICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0g
ICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7Ci0gICAgYXV0byBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJv
bUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLQotICAgIGlmIChwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkgJiYgIWlzQ0ZVUkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhp
cykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGNmVVJMOwotfQotI2Vu
ZGlmCi0KLVN0cmluZyBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKLXsKLSAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IGNmVVJMID0gY3JlYXRlQ0ZVUkwoKTsKLSAgICBpZiAoIWNmVVJMKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSNpZiBQTEFURk9STShXSU4pCi0gICAgQ0ZVUkxQYXRo
U3R5bGUgcGF0aFN0eWxlID0ga0NGVVJMV2luZG93c1BhdGhTdHlsZTsKLSNlbHNlCi0gICAgQ0ZV
UkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7Ci0jZW5kaWYKLSAg
ICByZXR1cm4gYWRvcHRDRihDRlVSTENvcHlGaWxlU3lzdGVtUGF0aChjZlVSTC5nZXQoKSwgcGF0
aFN0eWxlKSkuZ2V0KCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IDIx
MDZjMmJhOWI4NmFjMDIwYjQwNzAxMGU5MTMyMzliZDQyNTkwZWYuLmE0ZTc2MmU3ODYzOWRkNmM2
M2NjMjZlODY5NzA5YTU5N2NhNDEwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaApAQCAt
MjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXJfaAotI2RlZmluZSBOZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsYXRm
b3JtQ29udGVudEZpbHRlci5oIgogI2luY2x1ZGUgPG9iamMvTlNPYmpDUnVudGltZS5oPgpAQCAt
MzksOCArMzgsNiBAQCBPQkpDX0NMQVNTIE5TRGF0YTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBVUkw7Ci0KIGNsYXNzIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZpbmFs
IDogcHVibGljIFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiAgICAgZnJpZW5kIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKTsKIApAQCAtNjksNSArNjYsMyBAQCBjbGFzcyBO
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNvbnRl
bnRGaWx0ZXIgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpp
bmRleCBlOTQ0MWZmY2RlYjg2ZTYyOGJiZTU0ZjdjOTY1ZDg2NjgwNjExNDU1Li5kZTFkYWRiYjkz
YmRlMmFmZmIwMmQzYjY2OWJiYmIwYTdkYWFiYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAj
aW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZl
ci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvTkVGaWx0ZXJTb3VyY2VTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5
U2VtYXBob3JlLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoTmV0d29ya0V4dGVu
c2lvbik7CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY28KIAogICAg
IFVSTCBtb2RpZmllZFJlcXVlc3RVUkwgeyBVUkwoKSwgbW9kaWZpZWRSZXF1ZXN0VVJMU3RyaW5n
LmdldCgpIH07CiAgICAgaWYgKCFtb2RpZmllZFJlcXVlc3RVUkwuaXNWYWxpZCgpKSB7Ci0gICAg
ICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIg
ZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQgVVJMIHN0cmluZyAlQCB0byBhIFdlYkNvcmU6OlVS
TC5cbiIsIG1vZGlmaWVkUmVxdWVzdFVSTFN0cmluZy5nZXQoKSk7CisgICAgICAgIExPRyhDb250
ZW50RmlsdGVyaW5nLCAiTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNv
bnZlcnQgbW9kaWZpZWQgVVJMIHN0cmluZyAlQCB0byBhICBVUkwuXG4iLCBtb2RpZmllZFJlcXVl
c3RVUkxTdHJpbmcuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NTTEtleUdlbmVyYXRvckdMaWIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TU0xLZXlHZW5lcmF0b3JHTGliLmNwcAppbmRl
eCA5NDUwNmY1N2E0NzVlMWVjNTY3ZmI2OGZkY2FkYjRkMjBjMjJmMmJmLi40MWY0OGQ3MTYxZTdm
Mjk2NWMxNTU4NWZmMDA4ZmMyOTMwOTJjMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL1NTTEtleUdlbmVyYXRvckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xpYi5jcHAKQEAgLTI4LDggKzI4LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggMTYyMWE4ODVlODcwNGNhODQ4MzIwZjYyNTFj
MDZmOTIxYjE4OWQ4OC4uYTNiYTRlNDZkYzI4Mzk1ZDg1MmNlOGZiNjhjNzBiNTc5OWUyNzcyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBA
IC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50
LmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVc2VyQWdlbnRRdWlya3MuaCIKICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgT1MoVU5JWCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3Mu
Y3BwCmluZGV4IGIwY2E0M2Q1NWM0NWNiNTBkNzMwZjg5MmUxN2Q4MDg2OWNjZDQ5NjEuLmQzNWVi
MTZiYTUyYWQwM2YwN2E0ZWZlZDA0MWJmYmU4ODQwMzM2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRUYWdnZWRT
ZXR0aW5ncy5oIgogCisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggNDk3ZDJjNzlmZDJjYjA4ZmMzZDBjY2JmOGY4ZWEyMjczYzQzMTAxYy4uYWU4YTkz
ZjRmMWE0ODhjZWFiOGIzMWI0ODVjYmFhOGIyYjg1YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTY1LDYgKzY1LDEy
IEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciBVSW50ODsKICNlbmRpZgogI2VuZGlmCiAKKy8vIFgx
MSBoZWFkZXIgZGVmaW5lcyAiTm9uZSIgYXMgY29uc3RhbnQgaW4gbWFjcm8gYW5kIGJyZWFrZXMg
dGhlIFBhaW50SW52YWxpZGF0aW9uUmVhc29ucyBlbnVtJ3MgIk5vbmUiLgorLy8gQXMgYSB3b3Jr
YXJvdW5kLCB3ZSBleHBsaWNpdGx5IHVuZGVmIFgxMSdzIE5vbmUgaGVyZS4KKyNpZiBkZWZpbmVk
KE5vbmUpCisjdW5kZWYgTm9uZQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lm
IFVTRShXSU5HREkpCkBAIC04NSw3ICs5MSw2IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFJv
dW5kZWRSZWN0OwotY2xhc3MgVVJMOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBQ
YXRoOwogY2xhc3MgVGV4dFJ1bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcAppbmRleCBkNmIwYzY1ZmJmNTdkOWM3ZGVhMTk2MDgwMjliYzJhNjAxNDU3OGIxLi5i
YzM4OTE0NDg5ZTMyZDMyOGE1NGQ0MjFlNTdkYjdmMzE1OGYzM2IxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbmNs
dWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4K
IAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmlu
ZGV4IDVmMjIwYmU0ZWYwNmYzZmMxZTc5MzQ5ZmRlYjMzMGVkOTFlNzRhYzkuLjFlMzBmMzQ2OWU0
YWI3OTg0NDE0YzJiZmQ4ZmFlNjRlMThhMDBhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaApAQCAtNjgsNyArNjgsNiBAQCBjbGFzcyBGbG9hdFNpemU7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwogY2xhc3MgU2hh
cmVkQnVmZmVyOwotY2xhc3MgVVJMOwogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBn
ZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZy
YW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJhbWVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCmluZGV4IDgyNjljYzRl
ZGMzN2NlNWY0ZGMxNjVmYmQ0ZDYxYzM2OThhNDI3ZmUuLmYyODMyM2MyNTViMWQwYTAxNDM1MWM5
MzQyNzNkYTAxYzVhZjg1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpZm5kZWYgSW1hZ2VPYnNlcnZlcl9oCi0jZGVmaW5lIEltYWdlT2JzZXJ2ZXJfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbWFnZVR5cGVzLmgiCiAKQEAgLTMyLDcgKzMxLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZTsKIGNsYXNzIEludFJlY3Q7Ci1j
bGFzcyBVUkw7CiAKIC8vIEludGVyZmFjZSBmb3Igbm90aWZpY2F0aW9uIGFib3V0IGNoYW5nZXMg
dG8gYW4gaW1hZ2UsIGluY2x1ZGluZyBkZWNvZGluZywKIC8vIGRyYXdpbmcsIGFuZCBhbmltYXRp
bmcuCkBAIC01NCw1ICs1MiwzIEBAIGNsYXNzIEltYWdlT2JzZXJ2ZXIgewogfTsKIAogfQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcAppbmRleCA0ODhmOTQ1ZmRjM2QwMDBkYmZhYTMzN2Q0NjVlNWZiMmVmYWFiNDM4Li5mZDRh
MWZlMmRkODdiZjljMDhlY2FiYjEwZjNlZjM3NDI5NGIxODM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0zMCwxMSArMzAsMTEg
QEAKICNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCAwOTAxMDEyMjk5ZWJjNDFj
MmNhODRlMTllOTUxZTAyNDc4ODY5NThlLi45ODBkNjBlZTUwZDUwYmMyNmEwMDMwNWUwM2U1MWI0
ZDQ0Y2M5ZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0
bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1j
bGFzcyBVUkw7CiAKIGNsYXNzIEltYWdlU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPEltYWdlU291cmNlPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggNDYyYTcy
NjYwNTg0NzEyM2U4N2I3NDk1NWY0ZjE2OGZmODJmYTZmMC4uMDYwMTQ2ZDNhYzcxMGZlMWM0ZDc4
YTMwODEwNjkzYmJmYThiMTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1N
ZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRl
ICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggNTkxNWE3NzMx
NmVkOGEwMzBhNGU2ZDNhZDc0MTA0YzE3OGNhZDlkMi4uM2UxZDI3MGU2NGU3ODVkYWE3MTk1NWRk
NGFhZmU0MDMyZjllYjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29y
ZU1lZGlhLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGF0YVZpZXcuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpAQCAtNDksNiArNDgsNyBAQAogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgog
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YuY3BwCmluZGV4IGU4MjQ0OWE1MGZjYzhlOWI4MTdmYzc3ZTJhYTNhMDE5NWY2YTEy
MjYuLjFkYmM1Y2Q4OGE3YTA4YTUwYzM5OTlhMDAyZWU0N2I3NWYyMWY3NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmNwcApAQCAtNDUsOSArNDUsOSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVu
dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllcldpbi5oIgogI2luY2x1ZGUgIlRpbWVSYW5n
ZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24u
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkNG
UGxheWVySXRlbS5oPgogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBP
UlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA3ZDQ5ZDRlMTBjOWU1MTY1YmNlYWUyNTE2
M2Q5NmFkYWFmYmQ3YzFiLi42ZTQxMTdlNWVhMzlhOGUwOWVmYzVkOTE0NDhmNzY2ZjVhYWUzYTg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU5LDcgKzU5LDYgQEAKICNpbXBvcnQgIlRl
eHRFbmNvZGluZy5oIgogI2ltcG9ydCAiVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCIKICNpbXBv
cnQgIlRleHR1cmVDYWNoZUNWLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlck9iakMuaCIKICNpbXBvcnQgIlZpZGVvVGV4dHVyZUNvcGllckNW
LmgiCiAjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCIKQEAgLTgxLDYgKzgwLDcg
QEAKICNpbXBvcnQgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggNWY4NTcwYjEyMTcwNWE2YmE5MTUw
NmUzMWJlZDk3ZjY0Nzg4Y2Y2Zi4uNzZiZWYwNzNkOTcyZWMxNzA3MjBkNmRlZTJhZTkwMDFmM2Ey
NmU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMzYsNiArMzYsNyBAQAog
I2lmIFVTRShDQUlSTykKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUg
IkNhaXJvT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZs
b2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKaW5kZXggYmQyYTczYTM0ZmFhMWRiZTE1OTIyZWMzYjFjMTFhZDExYjU2ZjY1
Ny4uNjhlYzMxZWRkYTBkYTkwZWY4MTYxYjg5NjdjNDc0OGE4MDMwMjhiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBACiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogI2lu
Y2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAog
I2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKaW5kZXggNjk3MDNlMjFlYjIxNTcwZjEwM2U1NDJiNWU1NDQzYWIzODY4OWU3
NC4uYzUzM2EyZGU0M2IwY2IyMTg2NzMwMmVmODYwODhiYzRmNjM2YThiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM3LDcgKzM3LDYg
QEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IldlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRl
IDxnc3QvZ3N0Lmg+CkBAIC00Nyw2ICs0Niw3IEBACiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQ
cmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggNGYxZjhhYjAzOGI3ODMz
YmVhZTI4OTBhMmNhZTQ1NTk4ZGZiMmE3Ni4uZDE1YzJhNTBkNzJjNTNlM2EwOTVlMDYyYjFjMzQw
OWZlZWYyNmQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlBsYXli
YWNrUGlwZWxpbmUuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgi
CiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlZp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRlIDxmbm1hdGNoLmg+CkBAIC01
Miw2ICs1MSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGY3YmQ0NzczYmZkNWM1
NjdlODAxZmIwNzE3OGViOGZkODYxYjdkNDAuLjk2OWE0MjI0NDJlNTgzZDNlZDFhZjdjZmU0M2Qy
OWU0MmFhOWViNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuY3BwCkBAIC02MzUsNyArNjM1LDcgQEAgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFT
cmNTZXRVcmkoR3N0VVJJSGFuZGxlciogaGFuZGxlciwgY29uc3QgZ2NoYXIqIHVyaSwgR0Vycm9y
KioKICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6VVJMIHVybChX
ZWJDb3JlOjpVUkwoKSwgdXJpKTsKKyAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogCiAgICAgcHJp
di0+bG9jYXRpb24gPSBHVW5pcXVlUHRyPGdjaGFyPihnX3N0cmR1cCh1cmwuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSkpOwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNvdXJjZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCmluZGV4IGQw
M2Y1ZjdmY2VhM2M4ZjE3Mzc3MTZhNDM1ZjllNjY2MDEyYTVmMTguLjllYzQwODk0ZjFlMjhhMDVh
MjE0Y2IzMjM1MTRmN2IxMzk1NWQyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVk
ZSAiSVNPVlRUQ3VlLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSlNP
TlZhbHVlcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgSlNDOjpEYXRhVmlldzsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggNWVhY2UxMDg4NjY3YzIyOWI1
YWZjMzllYzkzNjg3ZTBkNDVhNTJmYi4uNDQ4MTczMTU3NWFlNDA5NDk1NGM3Njk1ZmRkNzVlN2Ew
NTVjOGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC0zMywxMCArMzMs
MTAgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGQy
ZDEuaD4KICNpbmNsdWRlIDxkMmQxZWZmZWN0cy5oPgogI2luY2x1ZGUgPGR3cml0ZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDc1NikKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAppbmRleCAzM2Y0
ZmUzYTQyZjA1ZjJkNmI5M2RiMGZhZGE4Nzg0M2U5YjcwMjY4Li5mN2QxODRmNjdlOGFjMzU2NTUz
MzUxNTNlMWNlNTU4YWUxOGU5N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RHJhZ0ltYWdlR3RrLmNwcApAQCAtMjMsOSArMjMsOSBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSAiVGV4dEluZGljYXRvci5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggYTRhYjYxMGE3M2ZmMWFj
OTE0OTBkZGMyMDA4YzQ4OGQ0MmM5MDBmMC4uNzFhMDBhMzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4
NjM4ZjI1Yjg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
R3RrLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkRh
dGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcApp
bmRleCBmMzA4YzJiYjdlNTM2OTFkYTM0YzZlYmQwYjM0ZWQxMWJlYjJmYjY0Li44MTQzZmFmYzM3
YzFiYzQ4YTRjMGRlOGRmMTA5NmQ3MjM4ZTY1MDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjMsOCArMjMs
OCBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25E
YXRhLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9u
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRl
eCBkYTUxZGEwOWFkMTI3NDhjZjc5YTUwZjZjMzM0OTllNTBhYTM1Yzg3Li4xYjg1OGVmOWRlZTU3
YzIwNmJhM2UwYzczYWFkOGE4NjY5NmI4MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTE5LDkgKzE5LDkgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA5ZjY5
MTRlYzQ4MWYxZGNhYWRhNzVkZjk2ZDFkNTcwMjU1ZmY3MTUyLi40ZDY2OWYwMWExMzU5ZGE4YTQ3
MzQ1ZWMzYzMyN2FkYjIzOWE5OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQpAQCAtMzUsMTAgKzM1LDEwIEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQg
IlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMu
aCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCA8TW9i
aWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBAaW50ZXJmYWNlIE5TQXR0cmli
dXRlZFN0cmluZyAoTlNBdHRyaWJ1dGVkU3RyaW5nS2l0QWRkaXRpb25zKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXgg
ZGE3ZjYyMTc3YWM4NTk2MDUzMTAxYjViODkxODJlMDIxYTliMjZkYy4uZDdhZDQyNWRhYWI0NmY4
MWI2OTk5Mzk4NzgzY2MyNTFmZTgyYmRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zMiw5ICszMiw3IEBACiAj
aW1wb3J0ICJJbWFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiU2hhcmVk
QnVmZmVyLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgotI2lt
cG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2Vz
Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSUNvbG9yLmg+CkBAIC00NCw2ICs0Miw4IEBACiAjaW1wb3J0
IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAj
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQg
PHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCiAjZGVmaW5lIFBBU1RFQk9BUkRfU1VQUE9SVFNfSVRFTV9QUk9WSURFUlMgKFBMQVRGT1JN
KElPUykgJiYgIShQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKSkpCkBAIC00
MDIsNyArNDAyLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3Rl
Ym9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIHBhc3RlYm9hcmRVUkwgPSBw
YXN0ZWJvYXJkSW1hZ2UudXJsOwogICAgIGlmIChOU1VSTCAqbnNVUkwgPSBwYXN0ZWJvYXJkVVJM
LnVybCkgewogI2lmIE5TVVJMX1NVUFBPUlRTX1RJVExFCi0gICAgICAgIG5zVVJMLl90aXRsZSA9
IHBhc3RlYm9hcmRVUkwudGl0bGUuaXNFbXB0eSgpID8gdXNlclZpc2libGVTdHJpbmcocGFzdGVi
b2FyZFVSTC51cmwpIDogKE5TU3RyaW5nICopcGFzdGVib2FyZFVSTC50aXRsZTsKKyAgICAgICAg
bnNVUkwuX3RpdGxlID0gcGFzdGVib2FyZFVSTC50aXRsZS5pc0VtcHR5KCkgPyBXVEY6OnVzZXJW
aXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRVUkwudXJsKSA6IChOU1N0cmluZyAqKXBhc3RlYm9hcmRV
UkwudGl0bGU7CiAjZW5kaWYKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
UmVwcmVzZW50aW5nT2JqZWN0Om5zVVJMXTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUXVpY2tMb29rLmgKaW5kZXggNDlkODExZDUxNDBjOGZkMGFmMDE2MjlkOGQwYzFjOWU5ZTk5
NGYxNy4uMGE2ZWZhZWYzZTg2MWVmNTlmZDQyODljZWY5MTFjNzc4ZGE3MGNhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2suaApAQCAtMzUsOCArMzUsNiBAQCBPQkpDX0NM
QVNTIE5TVVJMUmVxdWVzdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0K
IFdFQkNPUkVfRVhQT1JUIE5TU2V0ICpRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQo
KTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5T
VVJMICopOwogV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJR
TFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqLCBOU1N0cmluZyAqbWltZVR5cGUsIE5T
RGF0YSAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0
YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRl
eCBkY2U3MzMzMWU3N2E4NzQ2OGI2NzExN2M0MzRiNGIwYjgyMzJhOWViLi43MTZjMzY2NmI5YzRi
Y2U3MTM2MWY0YzA1MzgxZGMzYTlhM2JkMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQg
IldlYkNvcmVOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxl
Q29yZVNlcnZpY2VzLmg+CkBAIC0yMTAsNyArMjExLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1Bs
YWluVGV4dCgpIGNvbnN0CiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAw
JSBjb3JyZWN0IHNpbmNlIHdlIGtub3cgLVtOU1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3Qg
aGFuZGxlCiAgICAgLy8gYWxsIHRoZSBzYW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBV
UkwgY29kZSBmb3IgY3JlYXRpbmcgYW4gTlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0gICAg
ICAgIHJldHVybiB1c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmdd
KTsKKyAgICAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhT
dHJpbmc6c3RyaW5nXSk7CiAKICAgICAvLyBGSVhNRTogV1RGIHNob3VsZCBvZmZlciBhIG5vbi1N
YWMtc3BlY2lmaWMgd2F5IHRvIGNvbnZlcnQgc3RyaW5nIHRvIHByZWNvbXBvc2VkIGZvcm0gc28g
d2UgY2FuIGRvIGl0IGZvciBhbGwgcGxhdGZvcm1zLgogICAgIHJldHVybiBbKE5TU3RyaW5nICop
c3RyaW5nIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXggMjAxY2IzMzhiYmQ3ZGM3
NTNiMzM1YTMwMDYyYzJiOTEyNmIxMTk0OS4uOWQ4YmI4N2Y5YmUxN2JhMzU3MjQ3ZTA1NjljZTQ2
NWZhNjY2YzFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJ
bWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFj
Lm1tCkBAIC00MSwxMiArNDEsMTIgQEAKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlN0cmlu
Z1RydW5jYXRvci5oIgogI2ltcG9ydCAiVGV4dEluZGljYXRvci5oIgotI2ltcG9ydCAiVVJMLmgi
CiAjaW1wb3J0ICJXZWJLaXROU0ltYWdlRXh0cmFzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9VUkxGb3JtYXR0aW5nU1BJLmg+CiAjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmICFIQVZFKFVSTF9GT1JN
QVRUSU5HKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogU09G
VF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09QVElPTkFMKExpbmtQcmVzZW50YXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCmluZGV4IDA3MWQwYzkx
MTc3OTRlNjAzOGQ5OGFhZDU2ZmU5NmZmOGY0ODE1MzMuLjhlZDc1MWE3ZWMwZTVkMGJhZjc3NGY5
ODYxMGFjYjA0NWNkMmIwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxl
U3lzdGVtTWFjLm1tCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNp
bXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTWV0YWRh
dGFTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDcgKzUyLDcg
QEAgdm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHIKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwogICAg
IGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmlu
ZywgbmlsKSkKLSAgICAgICAgdXJsU3RyaW5nID0gdXNlclZpc2libGVTdHJpbmcoVVJMQnlSZW1v
dmluZ1VzZXJJbmZvKHVybCkpOworICAgICAgICB1cmxTdHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxl
U3RyaW5nKFdURjo6VVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOwogICAgIGVsc2UKICAgICAg
ICAgdXJsU3RyaW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggM2MzNjdkYTQ4NDBjMGU0MmQzYTRhOTVj
NzA2MTE1NTk2MTEzNDc2Mi4uOGE1YzI3NGNhNjRjMzkwMjAwN2U4NzQ2YTQzZjViZmMzNjBkZGQ0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAg
LTM3LDcgKzM3LDYgQEAKICNpbXBvcnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgogI2ltcG9ydCAi
UGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKLSNpbXBvcnQg
IlVSTC5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0
ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+
CkBAIC00NSw2ICs0NCw3IEBACiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2lt
cG9ydCA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCA2YTI4ZmU2MmFjZWNkNTcy
NjU4ZDAzM2QwY2Q5YzFhYzMxZWUwZTNkLi4wZmU1MDVkZTU1YzY2MTY0OGYwNTlkYTliN2ZhZTJh
MDc3ZmM2MjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZFdyaXRlci5tbQpAQCAtNjMsMTAgKzYzLDEwIEBAIFJldGFpblB0cjxpZCA8TlNQYXN0ZWJvYXJk
V3JpdGluZz4+IGNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIoY29uc3QgUGFzdGVib2FyZFdyaXRlCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoYXV0byYgdXJsID0gZGF0YS51cmwoKSkgewotICAg
ICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmwtPnVybDsKLSAgICAgICAgTlNTdHJpbmcgKnVzZXJW
aXNpYmxlU3RyaW5nID0gdXJsLT51c2VyVmlzaWJsZUZvcm07Ci0gICAgICAgIE5TU3RyaW5nICp0
aXRsZSA9IChOU1N0cmluZyAqKXVybC0+dGl0bGU7CisgICAgaWYgKGF1dG8mIHVybERhdGEgPSBk
YXRhLnVybERhdGEoKSkgeworICAgICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmxEYXRhLT51cmw7
CisgICAgICAgIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyA9IHVybERhdGEtPnVzZXJWaXNp
YmxlRm9ybTsKKyAgICAgICAgTlNTdHJpbmcgKnRpdGxlID0gKE5TU3RyaW5nICopdXJsRGF0YS0+
dGl0bGU7CiAgICAgICAgIGlmICghdGl0bGUubGVuZ3RoKSB7CiAgICAgICAgICAgICB0aXRsZSA9
IGNvY29hVVJMLnBhdGgubGFzdFBhdGhDb21wb25lbnQ7CiAgICAgICAgICAgICBpZiAoIXRpdGxl
Lmxlbmd0aCkKQEAgLTc0LDcgKzc0LDcgQEAgUmV0YWluUHRyPGlkIDxOU1Bhc3RlYm9hcmRXcml0
aW5nPj4gY3JlYXRlUGFzdGVib2FyZFdyaXRlcihjb25zdCBQYXN0ZWJvYXJkV3JpdGUKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZS4KLSAgICAgICAg
YXV0byBwYXRocyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6QFsg
QFsgY29jb2FVUkwuYWJzb2x1dGVTdHJpbmcgXSBdLCBAWyB1cmwtPnRpdGxlLnN0cmlwV2hpdGVT
cGFjZSgpIF0sIG5pbF0pOworICAgICAgICBhdXRvIHBhdGhzID0gYWRvcHROUyhbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czpAWyBAWyBjb2NvYVVSTC5hYnNvbHV0ZVN0cmluZyBdIF0s
IEBbIHVybERhdGEtPnRpdGxlLnN0cmlwV2hpdGVTcGFjZSgpIF0sIG5pbF0pOwogICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0UHJvcGVydHlMaXN0OnBhdGhzLmdldCgpIGZvclR5cGU6dG9VVEko
QCJXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUiKS5nZXQoKV07CiAKICAgICAgICAgLy8gTlNV
UkxQYm9hcmRUeXBlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggYjFkZmZiNmNiN2U2NDI1NzQxYmQwYzZjMGU1M2I0
ZWZkY2ZkYjE3MS4uMGNiMWRkOGI5MzBhMDY1YjdjMDgwMTVjYTJlMGNlNWRiZDViMmI0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJk
TWFjLm1tCkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbXBvcnQgIkNvbG9yTWFjLmgiCiAjaW1wb3J0
ICJMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgotI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgPHd0Zi9IYXNo
Q291bnRlZFNldC5oPgogI2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZm
aXhNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1t
CmluZGV4IDIzMDM4MTdmM2IyMTRmYWM1NGZlMGY0ZTI2ZDA0OTMzM2I1MTA0MzUuLjAxOTZiNDE2
ZWQ0MjViMTcwMGViY2U5YzBiYzFkYzhiNjYzMTM4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQpAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYg
RU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKIAotI2ltcG9ydCAiVVJMLmgiCi0jaW1wb3J0ICJX
ZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Myw3ICs2Myw3IEBAIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluKQogCiBTdHJpbmcgZGVj
b2RlSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBkb21haW4pCiB7Ci0gICAgcmV0dXJuIGRlY29kZUhv
c3ROYW1lKChOU1N0cmluZyAqKShkb21haW4pKTsKKyAgICByZXR1cm4gV1RGOjpkZWNvZGVIb3N0
TmFtZShkb21haW4pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1NTTEtleUdlbmVyYXRvck1hYy5tbQppbmRleCBmYzQwYWExOWIwNGMzYWUzNDcxODAyNzYzZjdk
ZjM4OWE3MjI4YzlkLi5iZDlkYTBkZDg2YWNjZDFkODRhNmMzZmVkYTBiNDEyYTI2YWRmNjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMu
bW0KQEAgLTI5LDEzICsyOSwxMyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiTG9j
YWxpemVkU3RyaW5ncy5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxTZWN1cml0eS9TZWNB
c24xQ29kZXIuaD4KICNpbXBvcnQgPFNlY3VyaXR5L1NlY0FzbjFUZW1wbGF0ZXMuaD4KICNpbXBv
cnQgPFNlY3VyaXR5L1NlY0VuY29kZVRyYW5zZm9ybS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQ
cml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TY29w
ZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+
CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9CYXNlNjQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMjVjMWRlN2IwMjgzY2QwZGJkYmE1NmNhMTZmYWZjNWYzOWM1
OGI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw5NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiVVJMLmgiCi0KLSNpbXBvcnQgIkNGVVJM
RXh0cmFzLmgiCi0jaW1wb3J0ICJVUkxQYXJzZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4
dHJhcy5oIgotI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+Ci0jaW1wb3J0IDx3dGYv
dGV4dC9DU3RyaW5nLmg+Ci0KLUBpbnRlcmZhY2UgTlNTdHJpbmcgKFdlYkNvcmVOU1VSTEV4dHJh
cykKLS0gKEJPT0wpX3dlYl9sb29rc0xpa2VJUEFkZHJlc3M7Ci1AZW5kCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotVVJMOjpVUkwoTlNVUkwgKnVybCkKLXsKLSAgICBpZiAoIXVybCkgewotICAg
ICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhN
RTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPwotICAgIENTdHJpbmcgdXJs
Qnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXVybCwgdXJsQnl0ZXMp
OwotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsKLSAgICAqdGhpcyA9IHBh
cnNlci5yZXN1bHQoKTsKLX0KLQotVVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29uc3QKLXsKLSAg
ICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlkZ2VkIENGVVJMIGJlY2F1c2UgY3JlYXRpb24g
d2l0aCBOU1VSTCBtZXRob2RzIHdvdWxkIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5n
LgotICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxpdHkgd2hlbiByb3VuZC10cmlwcGluZyB2aWEgQ0ZV
UkxHZXRCeXRlcygpLgotICAgIHJldHVybiBjcmVhdGVDRlVSTCgpLmJyaWRnaW5nQXV0b3JlbGVh
c2UoKTsKLX0KLQotUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QK
LXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYg
KGlzRW1wdHkoKSkgewotICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0
d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3Ro
IGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KLSAgICAgICAgcmV0dXJuIChfX2JyaWRnZSBDRlVSTFJl
ZilhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl0pLmdldCgpOwotICAg
IH0KLQotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7Ci0KLSAgICAvLyBGYXN0IHBhdGgg
aWYgdGhlIGlucHV0IGRhdGEgaXMgOC1iaXQgdG8gYXZvaWQgY29weWluZyBpbnRvIGEgdGVtcG9y
YXJ5IGJ1ZmZlci4KLSAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpKSkKLSAgICAgICAg
Y2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSksIG1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNl
IHsKLSAgICAgICAgLy8gU2xvd2VyIHBhdGguCi0gICAgICAgIFVSTENoYXJCdWZmZXIgYnVmZmVy
OwotICAgICAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVD
RlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgfQotCi0g
ICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZV
UkwuZ2V0KCksICp0aGlzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4g
Y2ZVUkw7Ci19Ci0KLWJvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQot
ewotICAgIHJldHVybiBbaG9zdC5jcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkg
X3dlYl9sb29rc0xpa2VJUEFkZHJlc3NdOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmgKaW5kZXggZmUxMDY4MTM0NWY1N2YzZjQx
ZjRkMGRhNzJjZTYxNjFkYmIwNjk0OC4uMWMwNzMyOWJlOWViYjZmYjBhMjNjNWQyN2NkYTgwMmM0
ZTgwMWUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVO
U1VSTEV4dHJhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMuaApAQCAtMjYsMjkgKzI2LDEwIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLUBjbGFz
cyBOU1N0cmluZzsKIEBjbGFzcyBOU1VSTDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XRUJD
T1JFX0VYUE9SVCBOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcoTlNVUkwgKik7CiBXRUJDT1JF
X0VYUE9SVCBOU1VSTCAqVVJMQnlDYW5vbmljYWxpemluZ1VSTChOU1VSTCAqKTsKLVdFQkNPUkVf
RVhQT1JUIE5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpi
YXNlVVJMKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KLVdFQkNPUkVfRVhQ
T1JUIE5TVVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNVUkwgKik7Ci1XRUJDT1JFX0VYUE9S
VCBCT09MIGhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqLCBOU1Jhbmdl
LCBCT09MKiBlcnJvcik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGhvc3ROYW1lTmVlZHNFbmNvZGlu
Z1dpdGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlLCBCT09MKiBlcnJvcik7Ci1XRUJDT1JFX0VY
UE9SVCBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5n
ZSk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBO
U1N0cmluZyAqZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8v
IFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmlu
ZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVh
bnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWUoTlNTdHJp
bmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9S
VCBOU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJM
ICosIENGVVJMQ29tcG9uZW50VHlwZSk7Ci1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMV2l0aERh
dGEoTlNEYXRhICosIE5TVVJMICpiYXNlVVJMKTsKLVdFQkNPUkVfRVhQT1JUIE5TRGF0YSAqb3Jp
Z2luYWxVUkxEYXRhKE5TVVJMICopOwotV0VCQ09SRV9FWFBPUlQgTlNEYXRhICpkYXRhRm9yVVJM
Q29tcG9uZW50VHlwZShOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOwotV0VCQ09SRV9FWFBP
UlQgTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKE5TU3RyaW5nICosIE5T
VVJMICpiYXNlVVJMKTsKLQotTlNSYW5nZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICopOwot
V0VCQ09SRV9FWFBPUlQgQk9PTCBpc1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICopOwotV0VCQ09S
RV9FWFBPUlQgQk9PTCBsb29rc0xpa2VBYnNvbHV0ZVVSTChOU1N0cmluZyAqKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlTlNVUkxFeHRyYXMubW0KaW5kZXggY2UxYzk1NjNiMGI1OWNhOTY0NTkzYWM2ZGM5OTdkNGM0
NDYwYWEwYi4uMDQ0YzQyOTBkZGZlNWY1MDk4Mzg5MTgzYThiYjQ5YWU0NzRhODBmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBA
IC0yNyw3ICsyNyw2IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJVUkxQ
YXJzZXIuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8cGFsL3Nw
aS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtMzksOTk5
ICszOCw4IEBACiAjaW1wb3J0IDx1bmljb2RlL3VpZG5hLmg+CiAjaW1wb3J0IDx1bmljb2RlL3Vz
Y3JpcHQuaD4KIAotLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElETi1lbmNv
ZGVkIG5hbWUuCi0vLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBk
byBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0jZGVmaW5lIEhP
U1RfTkFNRV9CVUZGRVJfTEVOR1RIIDIwNDgKLSNkZWZpbmUgVVJMX0JZVEVTX0JVRkZFUl9MRU5H
VEggMjA0OAotCi10eXBlZGVmIHZvaWQgKCogU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24pKE5T
U3RyaW5nICosIE5TUmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mKTsKLQotc3RhdGlj
IHVpbnQzMl90IElETlNjcmlwdFdoaXRlTGlzdFsoVVNDUklQVF9DT0RFX0xJTUlUICsgMzEpIC8g
MzJdOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGlzQXJtZW5pYW5Mb29r
YWxpa2VDaGFyYWN0ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCi17Ci0gICAgcmV0dXJuIGNvZGVQb2lu
dCA9PSAweDA1NDggfHwgY29kZVBvaW50ID09IDB4MDU0RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4
IHx8IGNvZGVQb2ludCA9PSAweDA1N0Q7Ci19Ci0KLXN0YXRpYyBib29sIGlzQXJtZW5pYW5TY3Jp
cHRDaGFyYWN0ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCi17Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9
IFVfWkVST19FUlJPUjsKLSAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlw
dChjb2RlUG9pbnQsICZlcnJvcik7Ci0gICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewot
ICAgICAgICBMT0dfRVJST1IoImdvdCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQg
c2NyaXB0czogJWQiLCBlcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gc2NyaXB0ID09IFVTQ1JJUFRfQVJNRU5JQU47Ci19Ci0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RD
aGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSBjaGFyQ29kZSkKLXsKLSAgICBpZiAoIWlzQVNDSUlEaWdp
dE9yUHVuY3R1YXRpb24oY2hhckNvZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAv
LyBUaGluZ3MgdGhlIFVSTCBQYXJzZXIgcmVqZWN0czoKLSAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7
Ci0gICAgY2FzZSAnIyc6Ci0gICAgY2FzZSAnJSc6Ci0gICAgY2FzZSAnLyc6Ci0gICAgY2FzZSAn
Oic6Ci0gICAgY2FzZSAnPyc6Ci0gICAgY2FzZSAnQCc6Ci0gICAgY2FzZSAnWyc6Ci0gICAgY2Fz
ZSAnXFwnOgotICAgIGNhc2UgJ10nOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfQotCi0KLQotc3RhdGljIEJPT0wgaXNM
b29rYWxpa2VDaGFyYWN0ZXIoc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2lu
dCwgVUNoYXIzMiBjaGFyQ29kZSkKLXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUg
Zm9sbG93aW5nIGFzIHVuc2FmZSwgbG9va2FsaWtlIGNoYXJhY3RlcnM6Ci0gICAgLy8gYW55IG5v
bi1wcmludGFibGUgY2hhcmFjdGVyLCBhbnkgY2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVz
cGFjZSwKLSAgICAvLyBhbnkgaWdub3JhYmxlIGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3Rl
cnMgcmVsYXRlZCB0byBsb2Nrcy4KLSAgICAKLSAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhl
IGNoYXJhY3RlcnMgaW4gTW96aWxsYSdzIGJsYWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5l
Lm9yZy9OZXR3b3JrLklETi5ibGFja2xpc3RfY2hhcnM+LgotCi0gICAgLy8gU29tZSBvZiB0aGUg
Y2hhcmFjdGVycyBoZXJlIHdpbGwgbmV2ZXIgYXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgot
ICAgIC8vIEZvciBleGFtcGxlLCBJQ1UgdHJhbnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFT
Q0lJIHNwYWNlIGFuZCBtb3N0Ci0gICAgLy8gc2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMu
IEJ1dCBvbmUgb2YgdGhlIHR3byBjYWxsZXJzIHVzZXMgdGhpcwotICAgIC8vIG9uIGNoYXJhY3Rl
cnMgdGhhdCBoYXZlIG5vdCBiZWVuIHByb2Nlc3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRl
ZCBoZXJlLgotICAgIAotICAgIGlmICghdV9pc3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRl
U3BhY2UoY2hhckNvZGUpIHx8IHVfaGFzQmluYXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RF
RkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQpKQotICAgICAgICByZXR1cm4gWUVTOwotICAgIAot
ICAgIHN3aXRjaCAoY2hhckNvZGUpIHsKLSAgICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBG
UkFDVElPTiBPTkUgUVVBUlRFUiAqLwotICAgICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZS
QUNUSU9OIE9ORSBIQUxGICovCi0gICAgICAgIGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJ
T04gVEhSRUUgUVVBUlRFUlMgKi8KLSAgICAgICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxM
IExFVFRFUiBJIFdJVEggQUNVVEUgKi8KLSAgICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExF
VFRFUiBSRVRST0ZMRVggQ0xJQ0sgKi8KLSAgICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNN
QUxMIExFVFRFUiBBTFBIQSAqLwotICAgICAgICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwg
TEVUVEVSIFNDUklQVCBHICovCi0gICAgICAgIGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRU
RVIgVFJJQU5HVUxBUiBDT0xPTiAqLwotICAgICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5H
IFNIT1JUIFNUUk9LRSBPVkVSTEFZICovCi0gICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5J
TkcgU0hPUlQgU09MSURVUyBPVkVSTEFZICovCi0gICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01C
SU5JTkcgTE9ORyBTT0xJRFVTIE9WRVJMQVkgKi8KLSAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFS
TUVOSUFOIEZVTEwgU1RPUCAqLwotICAgICAgICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5U
IEhJUklRICovCi0gICAgICAgIGNhc2UgMHgwNUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9S
IE1BUElRICovCi0gICAgICAgIGNhc2UgMHgwNUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09G
IFBBU1VRICovCi0gICAgICAgIGNhc2UgMHgwNUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VS
U0hBWUlNICovCi0gICAgICAgIGNhc2UgMHgwNjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExF
IFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRI
T1VTQU5EIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2NTA6IC8qIEFSQUJJQyBLQVNSQSAqLwot
ICAgICAgICBjYXNlIDB4MDY2MDogLyogQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KLSAgICAg
ICAgY2FzZSAweDA2NkE6IC8qIEFSQUJJQyBQRVJDRU5UIFNJR04gKi8KLSAgICAgICAgY2FzZSAw
eDA2RDQ6IC8qIEFSQUJJQyBGVUxMIFNUT1AgKi8KLSAgICAgICAgY2FzZSAweDA2RjA6IC8qIEVY
VEVOREVEIEFSQUJJQyBJTkRJQyBESUdJVCBaRVJPICovCi0gICAgICAgIGNhc2UgMHgwNzAxOiAv
KiBTWVJJQUMgU1VQUkFMSU5FQVIgRlVMTCBTVE9QICovCi0gICAgICAgIGNhc2UgMHgwNzAyOiAv
KiBTWVJJQUMgU1VCTElORUFSIEZVTEwgU1RPUCAqLwotICAgICAgICBjYXNlIDB4MDcwMzogLyog
U1lSSUFDIFNVUFJBTElORUFSIENPTE9OICovCi0gICAgICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJ
QUMgU1VCTElORUFSIENPTE9OICovCi0gICAgICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5F
IFNJTkdMRSBQVU5DVFVBVElPTiAqLwotICAgICAgICBjYXNlIDB4MUQwNDogLyogTEFUSU4gTEVU
VEVSIFNNQUxMIENBUElUQUwgQyAqLwotICAgICAgICBjYXNlIDB4MUQwRjogLyogTEFUSU4gTEVU
VEVSIFNNQUxMIENBUElUQUwgTyAqLwotICAgICAgICBjYXNlIDB4MUQxQzogLyogTEFUSU4gTEVU
VEVSIFNNQUxMIENBUElUQUwgVSAqLwotICAgICAgICBjYXNlIDB4MUQyMDogLyogTEFUSU4gTEVU
VEVSIFNNQUxMIENBUElUQUwgViAqLwotICAgICAgICBjYXNlIDB4MUQyMTogLyogTEFUSU4gTEVU
VEVSIFNNQUxMIENBUElUQUwgVyAqLwotICAgICAgICBjYXNlIDB4MUQyMjogLyogTEFUSU4gTEVU
VEVSIFNNQUxMIENBUElUQUwgWiAqLwotICAgICAgICBjYXNlIDB4MUVDRDogLyogTEFUSU4gU01B
TEwgTEVUVEVSIE8gV0lUSCBET1QgQkVMT1cgKi8KLSAgICAgICAgY2FzZSAweDIwMTA6IC8qIEhZ
UEhFTiAqLwotICAgICAgICBjYXNlIDB4MjAxMTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLwot
ICAgICAgICBjYXNlIDB4MjAyNDogLyogT05FIERPVCBMRUFERVIgKi8KLSAgICAgICAgY2FzZSAw
eDIwMjc6IC8qIEhZUEhFTkFUSU9OIFBPSU5UICovCi0gICAgICAgIGNhc2UgMHgyMDM5OiAvKiBT
SU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLwotICAgICAgICBjYXNl
IDB4MjAzQTogLyogU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICov
Ci0gICAgICAgIGNhc2UgMHgyMDQxOiAvKiBDQVJFVCBJTlNFUlRJT04gUE9JTlQgKi8KLSAgICAg
ICAgY2FzZSAweDIwNDQ6IC8qIEZSQUNUSU9OIFNMQVNIICovCi0gICAgICAgIGNhc2UgMHgyMDUy
OiAvKiBDT01NRVJDSUFMIE1JTlVTIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDIxNTM6IC8qIFZV
TEdBUiBGUkFDVElPTiBPTkUgVEhJUkQgKi8KLSAgICAgICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdB
UiBGUkFDVElPTiBUV08gVEhJUkRTICovCi0gICAgICAgIGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIg
RlJBQ1RJT04gT05FIEZJRlRIICovCi0gICAgICAgIGNhc2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJB
Q1RJT04gVFdPIEZJRlRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1NzogLyogVlVMR0FSIEZSQUNU
SU9OIFRIUkVFIEZJRlRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1ODogLyogVlVMR0FSIEZSQUNU
SU9OIEZPVVIgRklGVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJ
T04gT05FIFNJWFRIICovCi0gICAgICAgIGNhc2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04g
RklWRSBTSVhUSFMgKi8KLSAgICAgICAgY2FzZSAweDIxNUI6IC8qIFZVTEdBUiBGUkFDVElPTiBP
TkUgRUlHSFQgKi8KLSAgICAgICAgY2FzZSAweDIxNUM6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJF
RSBFSUdIVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklW
RSBFSUdIVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTVFOiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VW
RU4gRUlHSFRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1RjogLyogRlJBQ1RJT04gTlVNRVJBVE9S
IE9ORSAqLwotICAgICAgICBjYXNlIDB4MjIxMjogLyogTUlOVVMgU0lHTiAqLwotICAgICAgICBj
YXNlIDB4MjIxNTogLyogRElWSVNJT04gU0xBU0ggKi8KLSAgICAgICAgY2FzZSAweDIyMTY6IC8q
IFNFVCBNSU5VUyAqLwotICAgICAgICBjYXNlIDB4MjIzNjogLyogUkFUSU8gKi8KLSAgICAgICAg
Y2FzZSAweDIzM0Y6IC8qIEFQTCBGVU5DVElPTkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KLSAgICAg
ICAgY2FzZSAweDIzQUU6IC8qIElOVEVHUkFMIEVYVEVOU0lPTiAqLwotICAgICAgICBjYXNlIDB4
MjQ0QTogLyogT0NSIERPVUJMRSBCQUNLU0xBU0ggKi8KLSAgICAgICAgY2FzZSAweDI1NzE6IC8q
IERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8g
TE9XRVIgTEVGVCAqLwotICAgICAgICBjYXNlIDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBE
UkFXSU5HUyBMSUdIVCBESUFHT05BTCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUICovCi0gICAg
ICAgIGNhc2UgMHgyOUY2OiAvKiBTT0xJRFVTIFdJVEggT1ZFUkJBUiAqLwotICAgICAgICBjYXNl
IDB4MjlGODogLyogQklHIFNPTElEVVMgKi8KLSAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBM
RSBTT0xJRFVTIEJJTkFSWSBSRUxBVElPTiAqLwotICAgICAgICBjYXNlIDB4MkFGRDogLyogRE9V
QkxFIFNPTElEVVMgT1BFUkFUT1IgKi8KLSAgICAgICAgY2FzZSAweDJGRjA6IC8qIElERU9HUkFQ
SElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIFJJR0hUICovCi0gICAgICAgIGNhc2Ug
MHgyRkYxOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVM
T1cgKi8KLSAgICAgICAgY2FzZSAweDJGRjI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENI
QVJBQ1RFUiBMRUZUIFRPIE1JRERMRSBBTkQgUklHSFQgKi8KLSAgICAgICAgY2FzZSAweDJGRjM6
IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5E
IEJFTE9XICovCi0gICAgICAgIGNhc2UgMHgyRkY0OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElP
TiBDSEFSQUNURVIgRlVMTCBTVVJST1VORCAqLwotICAgICAgICBjYXNlIDB4MkZGNTogLyogSURF
T0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQUJPVkUgKi8KLSAg
ICAgICAgY2FzZSAweDJGRjY6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBT
VVJST1VORCBGUk9NIEJFTE9XICovCi0gICAgICAgIGNhc2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJ
QyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMRUZUICovCi0gICAgICAgIGNh
c2UgMHgyRkY4OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQg
RlJPTSBVUFBFUiBMRUZUICovCi0gICAgICAgIGNhc2UgMHgyRkY5OiAvKiBJREVPR1JBUEhJQyBE
RVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBSSUdIVCAqLwotICAgICAg
ICBjYXNlIDB4MkZGQTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJP
VU5EIEZST00gTE9XRVIgTEVGVCAqLwotICAgICAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBI
SUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIE9WRVJMQUlEICovCi0gICAgICAgIGNhc2UgMHgzMDAy
OiAvKiBJREVPR1JBUEhJQyBGVUxMIFNUT1AgKi8KLSAgICAgICAgY2FzZSAweDMwMDg6IC8qIExF
RlQgQU5HTEUgQlJBQ0tFVCAqLwotICAgICAgICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lT
RSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAgIGNhc2UgMHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lT
RSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAgIGNhc2UgMHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5B
IFJFUEVBVCBNQVJLIFVQUEVSIEhBTEYgKi8KLSAgICAgICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJ
Q0FMIEtBTkEgUkVQRUFUIE1BUksgTE9XRVIgSEFMRiAqLwotICAgICAgICBjYXNlIDB4MzIxRDog
LyogUEFSRU5USEVTSVpFRCBLT1JFQU4gQ0hBUkFDVEVSIE9KRU9OICovCi0gICAgICAgIGNhc2Ug
MHgzMjFFOiAvKiBQQVJFTlRIRVNJWkVEIEtPUkVBTiBDSEFSQUNURVIgTyBIVSAqLwotICAgICAg
ICBjYXNlIDB4MzNBRTogLyogU1FVQVJFIFJBRCBPVkVSIFMgKi8KLSAgICAgICAgY2FzZSAweDMz
QUY6IC8qIFNRVUFSRSBSQUQgT1ZFUiBTIFNRVUFSRUQgKi8KLSAgICAgICAgY2FzZSAweDMzQzY6
IC8qIFNRVUFSRSBDIE9WRVIgS0cgKi8KLSAgICAgICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBB
IE9WRVIgTSAqLwotICAgICAgICBjYXNlIDB4MDVCOTogLyogSEVCUkVXIFBPSU5UIEhPTEFNICov
Ci0gICAgICAgIGNhc2UgMHgwNUJBOiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZB
ViAqLwotICAgICAgICBjYXNlIDB4MDVDMTogLyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCi0g
ICAgICAgIGNhc2UgMHgwNUMyOiAvKiBIRUJSRVcgUE9JTlQgU0lOIERPVCAqLwotICAgICAgICBj
YXNlIDB4MDVDNDogLyogSEVCUkVXIE1BUksgVVBQRVIgRE9UICovCi0gICAgICAgIGNhc2UgMHhB
NzMxOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBTICovCi0gICAgICAgIGNhc2UgMHhB
NzcxOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgRFVNICovCi0gICAgICAgIGNhc2UgMHhBNzg5OiAv
KiBNT0RJRklFUiBMRVRURVIgQ09MT04gKi8KLSAgICAgICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNF
TlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBTRU1JQ09MT04gKi8KLSAgICAgICAgY2FzZSAweEZF
MTU6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFWENMQU1BVElPTiBNQVJLICov
Ci0gICAgICAgIGNhc2UgMHhGRTNGOiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwg
TEVGVCBBTkdMRSBCUkFDS0VUICovCi0gICAgICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZU
IFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KLSAgICAgICAgY2FzZSAweEZFNUU6IC8qIFNNQUxM
IFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KLSAgICAgICAgY2FzZSAweEZGMEU6IC8q
IEZVTExXSURUSCBGVUxMIFNUT1AgKi8KLSAgICAgICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lE
VEggU09MSURVUyAqLwotICAgICAgICBjYXNlIDB4RkY2MTogLyogSEFMRldJRFRIIElERU9HUkFQ
SElDIEZVTEwgU1RPUCAqLwotICAgICAgICBjYXNlIDB4RkZGQzogLyogT0JKRUNUIFJFUExBQ0VN
RU5UIENIQVJBQ1RFUiAqLwotICAgICAgICBjYXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hB
UkFDVEVSICovCi0gICAgICAgIGNhc2UgMHgxRjUwRjogLyogTE9DSyBXSVRIIElOSyBQRU4gKi8K
LSAgICAgICAgY2FzZSAweDFGNTEwOiAvKiBDTE9TRUQgTE9DSyBXSVRIIEtFWSAqLwotICAgICAg
ICBjYXNlIDB4MUY1MTE6IC8qIEtFWSAqLwotICAgICAgICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sg
Ki8KLSAgICAgICAgY2FzZSAweDFGNTEzOiAvKiBPUEVOIExPQ0sgKi8KLSAgICAgICAgICAgIHJl
dHVybiBZRVM7Ci0gICAgICAgIGNhc2UgMHgwMzA3OiAvKiBDT01CSU5JTkcgRE9UIEFCT1ZFICov
Ci0gICAgICAgICAgICByZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMjM3IC8qIExBVElO
IFNNQUxMIExFVFRFUiBET1RMRVNTIEogKi8KLSAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0Nv
ZGVQb2ludCA9PSAweDAxMzEgLyogTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSSAqLwotICAg
ICAgICAgICAgICAgIHx8IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExF
VFRFUiBWQVYgKi8KLSAgICAgICAgY2FzZSAweDA1NDg6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVU
VEVSIFZPICovCi0gICAgICAgIGNhc2UgMHgwNTREOiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRF
UiBTRUggKi8KLSAgICAgICAgY2FzZSAweDA1Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBW
TyAqLwotICAgICAgICBjYXNlIDB4MDU3RDogLyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNFSCAq
LwotICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50Ci0gICAgICAgICAgICAgICAg
JiYgIWlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgJiYgIWlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJl
dmlvdXNDb2RlUG9pbnQudmFsdWUoKSk7Ci0gICAgICAgIGNhc2UgJy4nOgotICAgICAgICAgICAg
cmV0dXJuIE5POwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHByZXZpb3Vz
Q29kZVBvaW50Ci0gICAgICAgICAgICAgICAgJiYgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3Rl
cihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgpKQotICAgICAgICAgICAgICAgICYmICEoaXNBcm1l
bmlhblNjcmlwdENoYXJhY3RlcihjaGFyQ29kZSkgfHwgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RD
aGFyYWN0ZXIoY2hhckNvZGUpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHdoaXRlTGlzdElE
TlNjcmlwdChjb25zdCBjaGFyKiBzY3JpcHROYW1lKQotewotICAgIGludDMyX3Qgc2NyaXB0ID0g
dV9nZXRQcm9wZXJ0eVZhbHVlRW51bShVQ0hBUl9TQ1JJUFQsIHNjcmlwdE5hbWUpOwotICAgIGlm
IChzY3JpcHQgPj0gMCAmJiBzY3JpcHQgPCBVU0NSSVBUX0NPREVfTElNSVQpIHsKLSAgICAgICAg
c2l6ZV90IGluZGV4ID0gc2NyaXB0IC8gMzI7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8
IChzY3JpcHQgJSAzMik7Ci0gICAgICAgIElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gfD0gbWFz
azsKLSAgICB9Ci19Ci0KLXN0YXRpYyBCT09MIHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5T
U3RyaW5nICpmaWxlbmFtZSkKLXsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4g
Tk87Ci0KLSAgICBGSUxFICpmaWxlID0gZm9wZW4oW2ZpbGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbl0sICJyIik7Ci0gICAgaWYgKCFmaWxlKQotICAgICAgICByZXR1cm4gTk87Ci0gICAg
Ci0gICAgLy8gUmVhZCBhIHdvcmQgYXQgYSB0aW1lLgotICAgIC8vIEFsbG93IGNvbW1lbnRzLCBz
dGFydGluZyB3aXRoICMgY2hhcmFjdGVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0gICAgd2hp
bGUgKDEpIHsKLSAgICAgICAgLy8gU2tpcCBhIGNvbW1lbnQgaWYgcHJlc2VudC4KLSAgICAgICAg
aWYgKGZzY2FuZihmaWxlLCAiICMlKlteXG5ccl0lKltcblxyXSIpID09IEVPRikKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgLy8gUmVhZCBhIHNjcmlwdCBuYW1lIGlmIHBy
ZXNlbnQuCi0gICAgICAgIGNoYXIgd29yZFszM107Ci0gICAgICAgIGludCByZXN1bHQgPSBmc2Nh
bmYoZmlsZSwgIiAlMzJbXiMgXHRcblxyXSUqW14jIFx0XG5ccl0gIiwgd29yZCk7Ci0gICAgICAg
IGlmIChyZXN1bHQgPT0gRU9GKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAg
ICBpZiAocmVzdWx0ID09IDEpIHsKLSAgICAgICAgICAgIC8vIEdvdCBhIHdvcmQsIG1hcCB0byBz
Y3JpcHQgY29kZSBhbmQgcHV0IGl0IGludG8gdGhlIGFycmF5LgotICAgICAgICAgICAgd2hpdGVM
aXN0SUROU2NyaXB0KHdvcmQpOwotICAgICAgICB9Ci0gICAgfQotICAgIGZjbG9zZShmaWxlKTsK
LSAgICByZXR1cm4gWUVTOwotfQotCi1zdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3Jp
cHRXaGl0ZUxpc3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCi17Ci0gICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBmbGFnOwotICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57
Ci0gICAgICAgIC8vIFJlYWQgd2hpdGUgbGlzdCBmcm9tIGxpYnJhcnkuCi0gICAgICAgIE5TQXJy
YXkgKmRpcnMgPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlE
aXJlY3RvcnksIE5TQWxsRG9tYWluc01hc2ssIFlFUyk7Ci0gICAgICAgIGludCBudW1EaXJzID0g
W2RpcnMgY291bnRdOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykg
ewotICAgICAgICAgICAgaWYgKHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKFtbZGlycyBvYmpl
Y3RBdEluZGV4OmldIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklETlNjcmlwdFdo
aXRlTGlzdC50eHQiXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIGNvbnN0IGNoYXIqIGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3RbMjBdID0gewotICAgICAg
ICAgICAgIkNvbW1vbiIsCi0gICAgICAgICAgICAiSW5oZXJpdGVkIiwKLSAgICAgICAgICAgICJB
cmFiaWMiLAotICAgICAgICAgICAgIkFybWVuaWFuIiwKLSAgICAgICAgICAgICJCb3BvbW9mbyIs
Ci0gICAgICAgICAgICAiQ2FuYWRpYW5fQWJvcmlnaW5hbCIsCi0gICAgICAgICAgICAiRGV2YW5h
Z2FyaSIsCi0gICAgICAgICAgICAiRGVzZXJldCIsCi0gICAgICAgICAgICAiR3VqYXJhdGkiLAot
ICAgICAgICAgICAgIkd1cm11a2hpIiwKLSAgICAgICAgICAgICJIYW5ndWwiLAotICAgICAgICAg
ICAgIkhhbiIsCi0gICAgICAgICAgICAiSGVicmV3IiwKLSAgICAgICAgICAgICJIaXJhZ2FuYSIs
Ci0gICAgICAgICAgICAiS2F0YWthbmFfT3JfSGlyYWdhbmEiLAotICAgICAgICAgICAgIkthdGFr
YW5hIiwKLSAgICAgICAgICAgICJMYXRpbiIsCi0gICAgICAgICAgICAiVGFtaWwiLAotICAgICAg
ICAgICAgIlRoYWkiLAotICAgICAgICAgICAgIllpIiwKLSAgICAgICAgfTsKLSAgICAgICAgZm9y
IChjb25zdCBjaGFyKiBzY3JpcHROYW1lIDogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKLSAg
ICAgICAgICAgIHdoaXRlTGlzdElETlNjcmlwdChzY3JpcHROYW1lKTsKLSAgICB9KTsKLSAgICAK
LSAgICBpbnQzMl90IGkgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXND
b2RlUG9pbnQ7Ci0gICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKLSAgICAgICAgVUNoYXIzMiBjOwot
ICAgICAgICBVMTZfTkVYVChidWZmZXIsIGksIGxlbmd0aCwgYykKLSAgICAgICAgVUVycm9yQ29k
ZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNj
cmlwdF9nZXRTY3JpcHQoYywgJmVycm9yKTsKLSAgICAgICAgaWYgKGVycm9yICE9IFVfWkVST19F
UlJPUikgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWlu
ZyB0byBsb29rIGF0IHNjcmlwdHM6ICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIE5P
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChzY3JpcHQgPCAwKSB7Ci0gICAgICAgICAgICBMT0df
RVJST1IoImdvdCBuZWdhdGl2ZSBudW1iZXIgZm9yIHNjcmlwdCBjb2RlIGZyb20gSUNVOiAlZCIs
IHNjcmlwdCk7Ci0gICAgICAgICAgICByZXR1cm4gTk87Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KHNjcmlwdCA+PSBVU0NSSVBUX0NPREVfTElNSVQpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0K
LSAgICAgICAgc2l6ZV90IGluZGV4ID0gc2NyaXB0IC8gMzI7Ci0gICAgICAgIHVpbnQzMl90IG1h
c2sgPSAxIDw8IChzY3JpcHQgJSAzMik7Ci0gICAgICAgIGlmICghKElETlNjcmlwdFdoaXRlTGlz
dFtpbmRleF0gJiBtYXNrKSkKLSAgICAgICAgICAgIHJldHVybiBOTzsKLSAgICAgICAgCi0gICAg
ICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykpCi0gICAg
ICAgICAgICByZXR1cm4gTk87Ci0gICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKLSAgICB9
Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5h
bWVBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwg
Y29uc3QgV1RGOjpGdW5jdGlvbjxib29sKFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKLXsK
LSAgICBBU1NFUlQobGVuZ3RoID4gMCk7Ci0KLSAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAt
IDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIFVDaGFyIGNoID0gYnVmZmVyW2ldOwotICAgICAg
ICAKLSAgICAgICAgaWYgKGNoYXJhY3RlcklzQWxsb3dlZChjaCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBk
b21haW4uIExvd2VyIGxldmVsIHJlZ2lzdHJhcnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgot
ICAgICAgICBpZiAoY2ggPT0gJy4nKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi0jZGVmaW5l
IENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKLSAgICB7
IFwKLSAgICAgICAgc3RhdGljIGNvbnN0IGludDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1
ZmZpeCkgLyBzaXplb2Yoc3VmZml4WzBdKTsgXAotICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4
TGVuZ3RoICYmIDAgPT0gbWVtY21wKGJ1ZmZlciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3Vm
Zml4LCBzaXplb2Yoc3VmZml4KSkpIFwKLSAgICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVs
RG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3Ro
LCBmdW5jdGlvbik7IFwKLSAgICB9Ci0KLXN0YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVD
aGFyYWN0ZXIoVUNoYXIgY2gpCi17Ci0gICAgLy8gT25seSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJz
LCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICByZXR1cm4gKGNoID49IDB4MDQz
MCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8
IGNoID09ICctJzsKLX0KLQotc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1
bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGludDMyX3QgbGVuZ3RoKQotewotICAgIC8vIFNraXAg
dHJhaWxpbmcgZG90IGZvciByb290IGRvbWFpbi4KLSAgICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFd
ID09ICcuJykKLSAgICAgICAgbGVuZ3RoLS07Ci0KLSAgICAvLyBodHRwOi8vY2N0bGQucnUvZmls
ZXMvcGRmL2RvY3MvcnVsZXNfcnUtcmYucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljUkZbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNN
QUxMIExFVFRFUiBFUgotICAgICAgICAweDA0NDQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBF
RgotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSRiwg
aXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vcnVzbmFtZXMu
cnUvcnVsZXMucGwKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNSVVNbXSA9IHsKLSAg
ICAgICAgJy4nLAotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgot
ICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCi0gICAgICAgIDB4MDQ0
MSAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19J
Rl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1JVUywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rl
cik7Ci0KLSAgICAvLyBodHRwOi8vcnUuZmFpdGlkLm9yZy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1l
bnRzL21vc2t2YS9pZG4KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9
IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBFTQotICAgICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAg
IDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4MDQzQSwgLy8g
Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAgIDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01B
TEwgTEVUVEVSIFZFCi0gICAgICAgIDB4MDQzMCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEK
LSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZB
LCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly93d3cuZG90
ZGV0aS5ydS9mb3J1c2VyL2RvY3MvcmVncnVsZXMucGhwCi0gICAgc3RhdGljIGNvbnN0IFVDaGFy
IGN5cmlsbGljREVUSVtdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQzNCwgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIERFCi0gICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIElFCi0gICAgICAgIDB4MDQ0MiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCi0g
ICAgICAgIDB4MDQzOCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKLSAgICB9OwotICAgIENI
RUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljREVUSSwgaXNSdXNzaWFuRG9tYWlu
TmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBydWxlcyBub3Qg
cHVibGlzaGVkLiBUaGUgd29yZCBpcyBSdXNzaWFuLCBzbyBvbmx5IGFsbG93aW5nIFJ1c3NpYW4g
YXQgdGhpcyB0aW1lLAotICAgIC8vIGFsdGhvdWdoIHdlIG1heSBuZWVkIHRvIHJldmlzZSB0aGUg
Y2hlY2tzIGlmIHRoaXMgZW5kcyB1cCBiZWluZyB1c2VkIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNw
b2tlbiBpbiBSdXNzaWEuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT05MQVlOW10g
PSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgTwotICAgICAgICAweDA0M0QsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgICAg
ICAweDA0M0IsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAotICAgICAgICAweDA0MzAsIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01B
TEwgTEVUVEVSIFNIT1JUIEkKLSAgICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgRU4KLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGlj
T05MQVlOLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9j
b3JlbmljLm9yZyAtIHNhbWUgYXMgYWJvdmUuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljU0FZVFtdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IEEKLSAgICAgICAgMHgwNDM5LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQotICAg
ICAgICAweDA0NDIgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBURQotICAgIH07Ci0gICAgQ0hF
Q0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNTQVlULCBpc1J1c3NpYW5Eb21haW5O
YW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9waXIub3JnL3Byb2R1Y3RzL29wci1kb21h
aW4vIC0gcnVsZXMgbm90IHB1Ymxpc2hlZC4gQWNjb3JkaW5nIHRvIHRoZSByZWdpc3RyeSBzaXRl
LAotICAgIC8vIHRoZSBpbnRlbmRlZCBhdWRpZW5jZSBpcyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xh
dmljLXNwZWFraW5nIG1hcmtldHMiLgotICAgIC8vIENocm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxs
b3cgUnVzc2lhbiwgc28gc3RpY2tpbmcgd2l0aCB0aGF0IGZvciBub3cuCi0gICAgc3RhdGljIGNv
bnN0IFVDaGFyIGN5cmlsbGljT1JHW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNF
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0NDAsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0MzMgIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBHSEUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGlj
T1JHLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jY3Rs
ZC5ieS9ydWxlcy5odG1sCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7
Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDMxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
QkUKLSAgICAgICAgMHgwNDM1LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKLSAgICAgICAg
MHgwNDNCICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKLSAgICB9OwotICAgIENIRUNLX1JV
TEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljQkVMLCBbXShVQ2hhciBjaCkgewotICAgICAg
ICAvLyBSdXNzaWFuIGFuZCBCeWVsb3J1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMg
YXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0
ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NUUgfHwgY2gg
PT0gMHgyMDE5IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0g
ICAgLy8gaHR0cDovL3d3dy5uaWMua3ovZG9jcy9wb3J5YWRva192bmVkcmVuaXlhX2thel9ydS5w
ZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNLQVpbXSA9IHsKLSAgICAgICAgJy4n
LAotICAgICAgICAweDA0OUIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NF
TkRFUgotICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAgICAg
IDB4MDQzNyAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCi0gICAgfTsKLSAgICBDSEVDS19S
VUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0tBWiwgW10oVUNoYXIgY2gpIHsKLSAgICAg
ICAgLy8gS2F6YWtoIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAg
ICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1
MSB8fCBjaCA9PSAweDA0RDkgfHwgY2ggPT0gMHgwNDkzIHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9
PSAweDA0QTMgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYg
fHwgY2ggPT0gMHgwNEJCIHx8IGNoID09IDB4MDQ1NiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNo
ID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIGh0dHA6Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVu
dHMtdWtyL1J1bGVzJTIwb2YlMjBVS1JfdjQuMC5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIg
Y3lyaWxsaWNVS1JbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0NDMsIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBVCi0gICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEtBCi0gICAgICAgIDB4MDQ0MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAg
fTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1VLUiwgW10oVUNo
YXIgY2gpIHsKLSAgICAgICAgLy8gUnVzc2lhbiBhbmQgVWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0
cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAm
JiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0g
MHgwNDA0IHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNo
KSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwOi8vd3d3LnJuaWRzLnJzL2Rh
dGEvRE9LVU1FTlRJL2lkbi1zcmItcG9saWN5LXRlcm1zb2Z1c2UtdjEuNC1lbmcucGRmCi0gICAg
c3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU1JCW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAg
ICAgMHgwNDQxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKLSAgICAgICAgMHgwNDQwLCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKLSAgICAgICAgMHgwNDMxICAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgQkUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVT
KGN5cmlsbGljU1JCLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBTZXJiaWFuIGxldHRlcnMs
IGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4
MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8
fCBjaCA9PSAweDA0NTIgfHwgY2ggPT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAw
eDA0NUEgfHwgY2ggPT0gMHgwNDVCIHx8IGNoID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gp
IHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIGh0dHA6Ly9tYXJuZXQubWsvZG9jL3By
YXZpbG5pay1tay1ta2QucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTUtEW10g
PSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgRU0KLSAgICAgICAgMHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAg
ICAgMHgwNDM0ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKLSAgICB9OwotICAgIENIRUNL
X1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTUtELCBbXShVQ2hhciBjaCkgewotICAg
ICAgICAvLyBNYWNlZG9uaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2Vk
LgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+
PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1
IHx8IGNoID09IDB4MDQ1OCB8fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09
IDB4MDQ1QyB8fCBjaCA9PSAweDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7
Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwczovL3d3dy5tb24ubW4vY3MvCi0gICAgc3RhdGljIGNv
bnN0IFVDaGFyIGN5cmlsbGljTU9OW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDND
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBFTgotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNN
T04sIFtdKFVDaGFyIGNoKSB7Ci0gICAgICAgIC8vIE1vbmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMg
YW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYg
Y2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4
MDRBRiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8v
IE5vdCBhIGtub3duIHRvcCBsZXZlbCBkb21haW4gd2l0aCBzcGVjaWFsIHJ1bGVzLgotICAgIHJl
dHVybiBOTzsKLX0KLQotLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBubyBtYXBwaW5nIGlz
IG5lY2Vzc2FyeS4KLS8vIElmIG1ha2VTdHJpbmcgaXMgTk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlz
IGVpdGhlciBuaWwgb3Igc2VsZiB0byBpbmRpY2F0ZSBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8v
IElmIG1ha2VTdHJpbmcgaXMgWUVTLCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9y
IHRoZSBtYXBwZWQgc3RyaW5nLgotc3RhdGljIE5TU3RyaW5nICptYXBIb3N0TmFtZVdpdGhSYW5n
ZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MIGVuY29kZSwgQk9PTCBtYWtl
U3RyaW5nLCBCT09MICplcnJvcikKLXsKLSAgICBpZiAocmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1F
X0JVRkZFUl9MRU5HVEgpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKCFbc3Ry
aW5nIGxlbmd0aF0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVUNoYXIgc291cmNl
QnVmZmVyW0hPU1RfTkFNRV9CVUZGRVJfTEVOR1RIXTsKLSAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1
ZmZlcltIT1NUX05BTUVfQlVGRkVSX0xFTkdUSF07Ci0gICAgCi0gICAgaWYgKGVuY29kZSAmJiBb
c3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpy
YW5nZV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkgewotICAgICAgICBOU1N0cmluZyAqc3Vic3Ry
aW5nID0gW3N0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VdOwotICAgICAgICBzdWJzdHJp
bmcgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2Vu
dEVzY2FwZXMobnVsbHB0ciwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7Ci0g
ICAgICAgIGlmIChzdWJzdHJpbmcpIHsKLSAgICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsK
LSAgICAgICAgICAgIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpbnQgbGVuZ3RoID0gcmFuZ2UubGVuZ3RoOwotICAg
IFtzdHJpbmcgZ2V0Q2hhcmFjdGVyczpzb3VyY2VCdWZmZXIgcmFuZ2U6cmFuZ2VdOwotICAgIAot
ICAgIFVFcnJvckNvZGUgdWVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgIFVJRE5BSW5mbyBwcm9j
ZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7Ci0gICAgaW50MzJfdCBudW1D
aGFyYWN0ZXJzQ29udmVydGVkID0gKGVuY29kZSA/IHVpZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFf
bmFtZVRvVW5pY29kZSkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2Nv
ZGVyKCksIHNvdXJjZUJ1ZmZlciwgbGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1F
X0JVRkZFUl9MRU5HVEgsICZwcm9jZXNzaW5nRGV0YWlscywgJnVlcnJvcik7Ci0gICAgaWYgKGxl
bmd0aCAmJiAoVV9GQUlMVVJFKHVlcnJvcikgfHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkg
ewotICAgICAgICAqZXJyb3IgPSBZRVM7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAg
IAotICAgIGlmIChudW1DaGFyYWN0ZXJzQ29udmVydGVkID09IGxlbmd0aCAmJiAhbWVtY21wKHNv
dXJjZUJ1ZmZlciwgZGVzdGluYXRpb25CdWZmZXIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmICghZW5jb2RlICYmICFhbGxDaGFyYWN0
ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnND
b252ZXJ0ZWQpICYmICFhbGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoZGVzdGluYXRpb25C
dWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpKQotICAgICAgICByZXR1cm4gbmlsOwotICAg
IAotICAgIHJldHVybiBtYWtlU3RyaW5nID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OmRlc3RpbmF0aW9uQnVmZmVyIGxlbmd0aDpudW1DaGFyYWN0ZXJzQ29udmVydGVkXSA6IHN0cmlu
ZzsKLX0KLQotQk9PTCBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0
cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCAqZXJyb3IpCi17Ci0gICAgcmV0dXJuIG1hcEhvc3RO
YW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIE5PLCBOTywgZXJyb3IpICE9IG5pbDsKLX0KLSAK
LUJPT0wgaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5T
UmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQotewotICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhS
YW5nZShzdHJpbmcsIHJhbmdlLCBZRVMsICBOTywgZXJyb3IpICE9IG5pbDsKLX0KLQotTlNTdHJp
bmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFu
Z2UpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9z
dE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgTk8sIFlFUywgJmVycm9yKTsKLSAgICBpZiAo
ZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDog
aG9zdDsKLX0KLQotTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpz
dHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3Ry
aW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgWUVTLCBZRVMs
ICZlcnJvcik7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVy
biAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Ci19Ci0KLU5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShO
U1N0cmluZyAqc3RyaW5nKQotewotICAgIEJPT0wgZXJyb3IgPSBOTzsKLSAgICBOU1N0cmluZyAq
aG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmlu
ZyBsZW5ndGhdKSwgTk8sIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJp
bmcgKmVuY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCi17Ci0gICAgQk9PTCBlcnJvciA9
IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBO
U01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pLCBZRVMsIFlFUywgJmVycm9yKTsKLSAgICBp
ZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5n
IDogaG9zdDsKLX0KLQotc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhO
U1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
JiBhcnJheSwgQk9PTCBlbmNvZGUpCi17Ci0gICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9w
dGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9l
cyBub3QgbmVlZCBtYXBwaW5nLgotICAgIC8vIFRoZXJlZm9yZSwgd2UgdXNlIG5pbCB0byBpbmRp
Y2F0ZSBubyBtYXBwaW5nIGhlcmUgYW5kIGFuIGVtcHR5IGFycmF5IHRvIGluZGljYXRlIGVycm9y
LgotCi0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIEJPT0wgbmVlZHNNYXBwaW5nID0gZW5jb2Rl
ID8gaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsICZlcnJvcikg
OiBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgJmVycm9yKTsK
LSAgICBpZiAoIWVycm9yICYmICFuZWVkc01hcHBpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBpZiAoIWFycmF5KQotICAgICAgICBhcnJheSA9IGFkb3B0TlMoW05TTXV0YWJsZUFycmF5
IG5ld10pOwotCi0gICAgaWYgKCFlcnJvcikKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNW
YWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1dOwotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0UmFu
Z2VzVGhhdE5lZWRFbmNvZGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKLXsKLSAgICByZXR1cm4gY29sbGVjdFJhbmdl
c1RoYXROZWVkTWFwcGluZyhzdHJpbmcsIHJhbmdlLCBhcnJheSwgWUVTKTsKLX0KLQotc3RhdGlj
IHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNS
YW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCi17Ci0gICAgcmV0
dXJuIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIE5P
KTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJp
bmcoTlNTdHJpbmcgKnN0cmluZywgU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiwgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCi17Ci0gICAgLy8gSW4gYSBtYWlsdG86IFVSTCwg
aG9zdCBuYW1lcyBjb21lIGFmdGVyIGEgJ0AnIGNoYXJhY3RlciBhbmQgZW5kIHdpdGggYSAnPicg
b3IgJywnIG9yICc/JyBjaGFyYWN0ZXIuCi0gICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5ncyBzbyB0
aGF0IGNoYXJhY3RlcnMgaW4gdGhlbSBkb24ndCBjb25mdXNlIHVzLgotICAgIC8vIFdoZW4gd2Ug
ZmluZCBhICc/JyBjaGFyYWN0ZXIsIHdlIGFyZSBwYXN0IHRoZSBwYXJ0IG9mIHRoZSBVUkwgdGhh
dCBjb250YWlucyBob3N0IG5hbWVzLgotICAgIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBob3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJz
ID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJc
IkA/Il07Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNl
dD4+IGhvc3ROYW1lRW5kQ2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRX
aXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiPiw/Il07Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IHF1b3RlZFN0cmluZ0NoYXJhY3RlcnMgPSBbTlND
aGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIlwiXFwiXTsK
LSAgICAKLSAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07Ci0gICAg
TlNSYW5nZSByZW1haW5pbmcgPSBOU01ha2VSYW5nZSgwLCBzdHJpbmdMZW5ndGgpOwotICAgIAot
ICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIC8vIEZpbmQgc3RhcnQgb2YgaG9zdCBuYW1lIG9yIG9m
IHF1b3RlZCBzdHJpbmcuCi0gICAgICAgIE5TUmFuZ2UgaG9zdE5hbWVPclN0cmluZ1N0YXJ0ID0g
W3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpob3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFy
YWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpyZW1haW5pbmddOwotICAgICAgICBp
ZiAoaG9zdE5hbWVPclN0cmluZ1N0YXJ0LmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgdW5pY2hhciBjID0gW3N0cmluZyBjaGFyYWN0ZXJBdElu
ZGV4Omhvc3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlvbl07Ci0gICAgICAgIHJlbWFpbmluZy5s
b2NhdGlvbiA9IE5TTWF4UmFuZ2UoaG9zdE5hbWVPclN0cmluZ1N0YXJ0KTsKLSAgICAgICAgcmVt
YWluaW5nLmxlbmd0aCA9IHN0cmluZ0xlbmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAg
ICAgCi0gICAgICAgIGlmIChjID09ICc/JykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Ci0gICAgICAgIGlmIChjID09ICdAJykgewotICAgICAgICAgICAgLy8gRmluZCBlbmQgb2YgaG9z
dCBuYW1lLgotICAgICAgICAgICAgdW5zaWduZWQgaG9zdE5hbWVTdGFydCA9IHJlbWFpbmluZy5s
b2NhdGlvbjsKLSAgICAgICAgICAgIE5TUmFuZ2UgaG9zdE5hbWVFbmQgPSBbc3RyaW5nIHJhbmdl
T2ZDaGFyYWN0ZXJGcm9tU2V0Omhvc3ROYW1lRW5kQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRp
b25zOjAgcmFuZ2U6cmVtYWluaW5nXTsKLSAgICAgICAgICAgIEJPT0wgZG9uZTsKLSAgICAgICAg
ICAgIGlmIChob3N0TmFtZUVuZC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKSB7Ci0gICAgICAgICAg
ICAgICAgaG9zdE5hbWVFbmQubG9jYXRpb24gPSBzdHJpbmdMZW5ndGg7Ci0gICAgICAgICAgICAg
ICAgZG9uZSA9IFlFUzsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVt
YWluaW5nLmxvY2F0aW9uID0gaG9zdE5hbWVFbmQubG9jYXRpb247Ci0gICAgICAgICAgICAgICAg
cmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xlbmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAg
ICAgICAgICAgICAgICBkb25lID0gTk87Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIC8vIFByb2Nlc3MgaG9zdCBuYW1lIHJhbmdlLgotICAgICAgICAgICAgZihzdHJp
bmcsIE5TTWFrZVJhbmdlKGhvc3ROYW1lU3RhcnQsIGhvc3ROYW1lRW5kLmxvY2F0aW9uIC0gaG9z
dE5hbWVTdGFydCksIGFycmF5KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGRvbmUp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Ly8gU2tpcCBxdW90ZWQgc3RyaW5nLgotICAgICAgICAgICAgQVNTRVJUKGMgPT0gJyInKTsKLSAg
ICAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICAgICAgTlNSYW5nZSBlc2NhcGVkQ2hh
cmFjdGVyT3JTdHJpbmdFbmQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OnF1b3Rl
ZFN0cmluZ0NoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107
Ci0gICAgICAgICAgICAgICAgaWYgKGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlv
biA9PSBOU05vdEZvdW5kKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
ICAgICAgICBjID0gW3N0cmluZyBjaGFyYWN0ZXJBdEluZGV4OmVzY2FwZWRDaGFyYWN0ZXJPclN0
cmluZ0VuZC5sb2NhdGlvbl07Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0g
TlNNYXhSYW5nZShlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQpOwotICAgICAgICAgICAgICAg
IHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gSWYgd2UgYXJlIHRoZSBlbmQgb2Yg
dGhlIHN0cmluZywgdGhlbiBicmVhayBmcm9tIHRoZSBzdHJpbmcgbG9vcCBiYWNrIHRvIHRoZSBo
b3N0IG5hbWUgbG9vcC4KLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnIicpCi0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIFNr
aXAgZXNjYXBlZCBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgQVNTRVJUKGMgPT0gJ1xcJyk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFyZW1haW5pbmcubGVuZ3RoKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICByZW1haW5pbmcubG9jYXRpb24gKz0gMTsK
LSAgICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoIC09IDE7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRv
VVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYs
IFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQotewotICAgIC8vIEZpbmQgaG9zdG5h
bWVzLiBUb28gYmFkIHdlIGNhbid0IHVzZSBhbnkgcmVhbCBVUkwtcGFyc2luZyBjb2RlIHRvIGRv
IHRoaXMsCi0gICAgLy8gYnV0IHdlIGhhdmUgdG8gZG8gaXQgYmVmb3JlIGRvaW5nIGFsbCB0aGUg
JS1lc2NhcGluZywgYW5kIHRoaXMgaXMgdGhlIG9ubHkKLSAgICAvLyBjb2RlIHdlIGhhdmUgdGhh
dCBwYXJzZXMgbWFpbHRvIFVSTHMgYW55d2F5LgotICAgIAotICAgIC8vIE1heWJlIHdlIHNob3Vs
ZCBpbXBsZW1lbnQgdGhpcyB1c2luZyBhIGNoYXJhY3RlciBidWZmZXIgaW5zdGVhZD8KLSAgICAK
LSAgICBpZiAocHJvdG9jb2xJcyhzdHJpbmcsICJtYWlsdG8iKSkgewotICAgICAgICBhcHBseUhv
c3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyhzdHJpbmcsIGYsIGFycmF5KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICAvLyBGaW5kIHRoZSBob3N0IG5hbWUgaW4gYSBo
aWVyYXJjaGljYWwgVVJMLgotICAgIC8vIEl0IGNvbWVzIGFmdGVyIGEgIjovLyIgc2VxdWVuY2Us
IHdpdGggc2NoZW1lIGNoYXJhY3RlcnMgcHJlY2VkaW5nLgotICAgIC8vIElmIGVuZHMgd2l0aCB0
aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgYSAiOiIsICIvIiwgb3IgYSAiPyIuCi0gICAgLy8gSWYg
dGhlcmUgaXMgYSAiQCIgY2hhcmFjdGVyLCB0aGUgaG9zdCBwYXJ0IGlzIGp1c3QgdGhlIHBhcnQg
YWZ0ZXIgdGhlICJAIi4KLSAgICBOU1JhbmdlIHNlcGFyYXRvclJhbmdlID0gW3N0cmluZyByYW5n
ZU9mU3RyaW5nOkAiOi8vIl07Ci0gICAgaWYgKHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uID09IE5T
Tm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBDaGVjayB0aGF0IGFsbCBj
aGFyYWN0ZXJzIGJlZm9yZSB0aGUgOi8vIGFyZSB2YWxpZCBzY2hlbWUgY2hhcmFjdGVycy4KLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gbm9uU2No
ZW1lQ2hhcmFjdGVycyA9IFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3Rl
cnNJblN0cmluZzpAIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFy
c3R1dnd4eXowMTIzNDU2Nzg5Ky0uIl0gaW52ZXJ0ZWRTZXRdOwotICAgIGlmIChbc3RyaW5nIHJh
bmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Om5vblNjaGVtZUNoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0
aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAsIHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uKV0ubG9j
YXRpb24gIT0gTlNOb3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHVuc2lnbmVk
IHN0cmluZ0xlbmd0aCA9IFtzdHJpbmcgbGVuZ3RoXTsKLSAgICAKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdFRlcm1pbmF0b3JzID0gW05T
Q2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCI6Lz8jIl07
Ci0gICAgCi0gICAgLy8gU3RhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4KLSAgICB1bnNpZ25lZCBh
dXRob3JpdHlTdGFydCA9IE5TTWF4UmFuZ2Uoc2VwYXJhdG9yUmFuZ2UpOwotICAgIAotICAgIC8v
IEZpbmQgdGVybWluYXRpbmcgY2hhcmFjdGVyLgotICAgIE5TUmFuZ2UgaG9zdE5hbWVUZXJtaW5h
dG9yID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpob3N0VGVybWluYXRvcnMuZ2V0
KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBzdHJp
bmdMZW5ndGggLSBhdXRob3JpdHlTdGFydCldOwotICAgIHVuc2lnbmVkIGhvc3ROYW1lRW5kID0g
aG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uID09IE5TTm90Rm91bmQgPyBzdHJpbmdMZW5ndGgg
OiBob3N0TmFtZVRlcm1pbmF0b3IubG9jYXRpb247Ci0gICAgCi0gICAgLy8gRmluZCAiQCIgZm9y
IHRoZSBzdGFydCBvZiB0aGUgaG9zdCBuYW1lLgotICAgIE5TUmFuZ2UgdXNlckluZm9UZXJtaW5h
dG9yID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiQCIgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJh
bmdlKGF1dGhvcml0eVN0YXJ0LCBob3N0TmFtZUVuZCAtIGF1dGhvcml0eVN0YXJ0KV07Ci0gICAg
dW5zaWduZWQgaG9zdE5hbWVTdGFydCA9IHVzZXJJbmZvVGVybWluYXRvci5sb2NhdGlvbiA9PSBO
U05vdEZvdW5kID8gYXV0aG9yaXR5U3RhcnQgOiBOU01heFJhbmdlKHVzZXJJbmZvVGVybWluYXRv
cik7Ci0gICAgCi0gICAgcmV0dXJuIGYoc3RyaW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0
LCBob3N0TmFtZUVuZCAtIGhvc3ROYW1lU3RhcnQpLCBhcnJheSk7Ci19Ci0KLXN0YXRpYyBSZXRh
aW5QdHI8TlNTdHJpbmc+IG1hcEhvc3ROYW1lcyhOU1N0cmluZyAqc3RyaW5nLCBCT09MIGVuY29k
ZSkKLXsKLSAgICAvLyBHZW5lcmFsbHksIHdlIHdhbnQgdG8gb3B0aW1pemUgZm9yIHRoZSBjYXNl
IHdoZXJlIHRoZXJlIGlzIG9uZSBob3N0IG5hbWUgdGhhdCBkb2VzIG5vdCBuZWVkIG1hcHBpbmcu
Ci0gICAgCi0gICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIGNhbkJlQ29udmVydGVkVG9FbmNvZGlu
ZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddKQotICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgIAot
ICAgIC8vIE1ha2UgYSBsaXN0IG9mIHJhbmdlcyB0aGF0IGFjdHVhbGx5IG5lZWQgbWFwcGluZy4K
LSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGhvc3ROYW1lUmFuZ2VzOwotICAgIFN0cmlu
Z1JhbmdlQXBwbGllckZ1bmN0aW9uIGYgPSBlbmNvZGUgPyBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRF
bmNvZGluZyA6IGNvbGxlY3RSYW5nZXNUaGF0TmVlZERlY29kaW5nOwotICAgIGFwcGx5SG9zdE5h
bWVGdW5jdGlvblRvVVJMU3RyaW5nKHN0cmluZywgZiwgaG9zdE5hbWVSYW5nZXMpOwotICAgIGlm
ICghaG9zdE5hbWVSYW5nZXMpCi0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICBpZiAoIVto
b3N0TmFtZVJhbmdlcyBjb3VudF0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgLy8g
RG8gdGhlIG1hcHBpbmcuCi0gICAgYXV0byBtdXRhYmxlQ29weSA9IGFkb3B0TlMoW3N0cmluZyBt
dXRhYmxlQ29weV0pOwotICAgIHVuc2lnbmVkIGkgPSBbaG9zdE5hbWVSYW5nZXMgY291bnRdOwot
ICAgIHdoaWxlIChpLS0pIHsKLSAgICAgICAgTlNSYW5nZSBob3N0TmFtZVJhbmdlID0gW1tob3N0
TmFtZVJhbmdlcyBvYmplY3RBdEluZGV4OmldIHJhbmdlVmFsdWVdOwotICAgICAgICBOU1N0cmlu
ZyAqbWFwcGVkSG9zdE5hbWUgPSBlbmNvZGUgPyBlbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShzdHJp
bmcsIGhvc3ROYW1lUmFuZ2UpIDogZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0
TmFtZVJhbmdlKTsKLSAgICAgICAgW211dGFibGVDb3B5IHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5n
ZTpob3N0TmFtZVJhbmdlIHdpdGhTdHJpbmc6bWFwcGVkSG9zdE5hbWVdOwotICAgIH0KLSAgICBy
ZXR1cm4gbXV0YWJsZUNvcHk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmlu
Z0J5VHJpbW1pbmdXaGl0ZXNwYWNlKE5TU3RyaW5nICpzdHJpbmcpCi17Ci0gICAgYXV0byB0cmlt
bWVkID0gYWRvcHROUyhbc3RyaW5nIG11dGFibGVDb3B5XSk7Ci0gICAgQ0ZTdHJpbmdUcmltV2hp
dGVzcGFjZSgoX19icmlkZ2UgQ0ZNdXRhYmxlU3RyaW5nUmVmKXRyaW1tZWQuZ2V0KCkpOwotICAg
IHJldHVybiB0cmltbWVkOwotfQotCi1OU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVy
QmVmb3JlQ29tcG9uZW50KE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZSBjb21wb25lbnQp
Ci17Ci0gICAgaWYgKCFVUkwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgQ0ZSYW5n
ZSBmcmFnUmcgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxS
ZWYpVVJMLCBjb21wb25lbnQsIG51bGxwdHIpOwotICAgIGlmIChmcmFnUmcubG9jYXRpb24gPT0g
a0NGTm90Rm91bmQpCi0gICAgICAgIHJldHVybiBVUkw7Ci0KLSAgICBWZWN0b3I8VUludDgsIFVS
TF9CWVRFU19CVUZGRVJfTEVOR1RIPiB1cmxCeXRlcyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7
Ci0gICAgQ0ZJbmRleCBudW1CeXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVm
KVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCB1cmxCeXRlcy5zaXplKCkpOwotICAgIGlmIChudW1CeXRl
cyA9PSAtMSkgewotICAgICAgICBudW1CeXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENG
VVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Ci0gICAgICAgIHVybEJ5dGVzLmdyb3cobnVtQnl0ZXMp
OwotICAgICAgICBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVz
LmRhdGEoKSwgbnVtQnl0ZXMpOwotICAgIH0KLQotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJM
Q3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9u
IC0gMSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyKTsKLSAgICBpZiAoIXJlc3VsdCkK
LSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMu
ZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwg
bnVsbHB0cik7Ci0gICAgICAgIAotICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFz
ZShyZXN1bHQpIDogVVJMOwotfQotCi1zdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdSZXNvdXJj
ZVNwZWNpZmllcihOU1VSTCAqVVJMKQotewotICAgIHJldHVybiBVUkxCeVRydW5jYXRpbmdPbmVD
aGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoVVJMLCBrQ0ZVUkxDb21wb25lbnRSZXNvdXJjZVNwZWNp
Zmllcik7Ci19Ci0KLU5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKmRhdGEsIE5TVVJMICpiYXNl
VVJMKQotewotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBO
U1VSTCAqcmVzdWx0ID0gbmlsOwotICAgIHNpemVfdCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOwot
ICAgIGlmIChsZW5ndGggPiAwKSB7Ci0gICAgICAgIC8vIHdvcmsgYXJvdW5kIDxyZGFyOi8vNDQ3
MDc3MT46IENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoLi4sIFRSVUUpIGRvZXNuJ3Qg
cmVtb3ZlIG5vbi1wYXRoIGNvbXBvbmVudHMuCi0gICAgICAgIGJhc2VVUkwgPSBVUkxCeVJlbW92
aW5nUmVzb3VyY2VTcGVjaWZpZXIoYmFzZVVSTCk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBV
SW50OCAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBVSW50OCo+KFtkYXRhIGJ5dGVzXSk7Ci0g
ICAgICAgIAotICAgICAgICAvLyBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzIHdvdWxk
IGNvbXBsYWluIHRvIGNvbnNvbGUgaWYgd2UgcGFzc2VkIGEgcGF0aCB0byBpdC4KLSAgICAgICAg
aWYgKGJ5dGVzWzBdID09ICcvJyAmJiAhYmFzZVVSTCkKLSAgICAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgICAgIAotICAgICAgICAvLyBOT1RFOiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlz
IGVuY29kaW5nIGlzIHVzZWQgd2hlbiBjb21wdXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBV
UkwgY29tcG9uZW50cwotICAgICAgICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93
ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1
ZW5jZXMsIHdoaWNoCi0gICAgICAgIC8vIGNvdWxkIGVpdGhlciBiZSBhIG1hbGZvcm1lZCBzdHJp
bmcgb3IgYnl0ZXMgaW4gYSBkaWZmZXJlbnQgZW5jb2RpbmcsIGxpa2Ugc2hpZnQtamlzLCBzbyB3
ZSBmYWxsIGJhY2sKLSAgICAgICAgLy8gb250byB1c2luZyBJU08gTGF0aW4gMSBpbiB0aG9zZSBj
YXNlcy4KLSAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNv
bHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBieXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgsIChfX2JyaWRnZSBDRlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKLSAgICAgICAgaWYgKCFy
ZXN1bHQpCi0gICAgICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0
ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0Vu
Y29kaW5nSVNPTGF0aW4xLCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotc3RhdGljIE5TRGF0YSAqZGF0YVdpdGhVc2VyVHlwZWRTdHJp
bmcoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICBOU0RhdGEgKnVzZXJUeXBlZERhdGEgPSBbc3Ry
aW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBBU1NFUlQo
dXNlclR5cGVkRGF0YSk7Ci0gICAgCi0gICAgY29uc3QgVUludDgqIGluQnl0ZXMgPSBzdGF0aWNf
Y2FzdDxjb25zdCBVSW50OCAqPihbdXNlclR5cGVkRGF0YSBieXRlc10pOwotICAgIGludCBpbkxl
bmd0aCA9IFt1c2VyVHlwZWREYXRhIGxlbmd0aF07Ci0gICAgaWYgKCFpbkxlbmd0aCkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBjaGFyKiBvdXRCeXRlcyA9IHN0YXRpY19jYXN0PGNo
YXIgKj4obWFsbG9jKGluTGVuZ3RoICogMykpOyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUg
ZXZlcnkgY2hhcmFjdGVyCi0gICAgY2hhciogcCA9IG91dEJ5dGVzOwotICAgIGludCBvdXRMZW5n
dGggPSAwOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5MZW5ndGg7IGkrKykgewotICAgICAg
ICBVSW50OCBjID0gaW5CeXRlc1tpXTsKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4
N2YpIHsKLSAgICAgICAgICAgICpwKysgPSAnJSc7Ci0gICAgICAgICAgICAqcCsrID0gdXBwZXJO
aWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICAqcCsrID0gbG93ZXJOaWJibGVU
b0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICBvdXRMZW5ndGggKz0gMzsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICpwKysgPSBjOwotICAgICAgICAgICAgb3V0TGVuZ3RoKys7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhCeXRl
c05vQ29weTpvdXRCeXRlcyBsZW5ndGg6b3V0TGVuZ3RoXTsgLy8gYWRvcHRzIG91dEJ5dGVzCi19
Ci0KLU5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TVVJM
ICpuc1VSTCkKLXsKLSAgICBpZiAoIXN0cmluZykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IGF1dG8gbWFwcGVkU3RyaW5nID0gbWFwSG9zdE5hbWVzKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNw
YWNlKHN0cmluZykuZ2V0KCksIFlFUyk7Ci0gICAgaWYgKCFtYXBwZWRTdHJpbmcpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0KLSAgICAvLyBMZXQncyBjaGVjayB3aGV0aGVyIHRoZSBVUkwgaXMgYm9n
dXMuCi0gICAgVVJMIHVybCB7IFVSTCB7IG5zVVJMIH0sIG1hcHBlZFN0cmluZy5nZXQoKSB9Owot
ICAgIGlmICghdXJsLmNyZWF0ZUNGVVJMKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjA1Nwot
ICAgIC8vIFdlIHNob3VsZCBiZSBhYmxlIHRvIHVzZSB1cmwuY3JlYXRlQ0ZVUkwgaW5zdGVhZCBv
ZiB1c2luZyBkaXJlY3RseSBDRlVSTCBwYXJzaW5nIHJvdXRpbmVzLgotICAgIE5TRGF0YSAqZGF0
YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKG1hcHBlZFN0cmluZy5nZXQoKSk7Ci0gICAgaWYg
KCFkYXRhKQotICAgICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKLQotICAg
IHJldHVybiBVUkxXaXRoRGF0YShkYXRhLCBuc1VSTCk7Ci19Ci0KLU5TVVJMICpVUkxXaXRoVXNl
clR5cGVkU3RyaW5nRGVwcmVjYXRlZChOU1N0cmluZyAqc3RyaW5nLCBOU1VSTCAqVVJMKQotewot
ICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgTlNVUkwgKnJlc3Vs
dCA9IFVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoc3RyaW5nLCBVUkwpOwotICAgIGlmICghcmVzdWx0
KSB7Ci0gICAgICAgIE5TRGF0YSAqcmVzdWx0RGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5n
KHN0cmluZyk7Ci0gICAgICAgIGlmICghcmVzdWx0RGF0YSkKLSAgICAgICAgICAgIHJldHVybiBb
TlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwotICAgICAgICByZXN1bHQgPSBVUkxXaXRoRGF0YShy
ZXN1bHREYXRhLCBVUkwpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRp
YyBCT09MIGhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyhOU1VSTCAqVVJMKQotewotICAg
IENGUmFuZ2UgcmFuZ2VXaXRoU2VwYXJhdG9yczsKLSAgICBDRlVSTEdldEJ5dGVSYW5nZUZvckNv
bXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBrQ0ZVUkxDb21wb25lbnRRdWVyeSwgJnJh
bmdlV2l0aFNlcGFyYXRvcnMpOwotICAgIGlmIChyYW5nZVdpdGhTZXBhcmF0b3JzLmxvY2F0aW9u
ICE9IGtDRk5vdEZvdW5kICYmIHJhbmdlV2l0aFNlcGFyYXRvcnMubGVuZ3RoID09IDEpCi0gICAg
ICAgIHJldHVybiBZRVM7Ci0KLSAgICByZXR1cm4gTk87Ci19Ci0KLU5TRGF0YSAqZGF0YUZvclVS
TENvbXBvbmVudFR5cGUoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudFR5
cGUpCi17Ci0gICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYWxsQnl0
ZXNCdWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwotICAgIENGSW5kZXggYnl0ZXNGaWxs
ZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGFsbEJ5dGVzQnVmZmVy
LmRhdGEoKSwgYWxsQnl0ZXNCdWZmZXIuc2l6ZSgpKTsKLSAgICBpZiAoYnl0ZXNGaWxsZWQgPT0g
LTEpIHsKLSAgICAgICAgQ0ZJbmRleCBieXRlc1RvQWxsb2NhdGUgPSBDRlVSTEdldEJ5dGVzKChf
X2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOwotICAgICAgICBhbGxCeXRlc0J1ZmZl
ci5ncm93KGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRC
eXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGJ5dGVz
VG9BbGxvY2F0ZSk7Ci0gICAgfQotICAgIAotICAgIGNvbnN0IENGVVJMQ29tcG9uZW50VHlwZSBj
b21wbGV0ZVVSTCA9IChDRlVSTENvbXBvbmVudFR5cGUpLTE7Ci0gICAgQ0ZSYW5nZSByYW5nZTsK
LSAgICBpZiAoY29tcG9uZW50VHlwZSAhPSBjb21wbGV0ZVVSTCkgewotICAgICAgICByYW5nZSA9
IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNv
bXBvbmVudFR5cGUsIG51bGxwdHIpOwotICAgICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0ga0NG
Tm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IHJhbmdlLmxvY2F0aW9uID0gMDsKLSAgICAgICAgcmFuZ2UubGVuZ3RoID0gYnl0ZXNGaWxsZWQ7
Ci0gICAgfQotICAgIAotICAgIE5TRGF0YSAqY29tcG9uZW50RGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczphbGxCeXRlc0J1ZmZlci5kYXRhKCkgKyByYW5nZS5sb2NhdGlvbiBsZW5ndGg6cmFu
Z2UubGVuZ3RoXTsgCi0gICAgCi0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSBzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtjb21wb25lbnREYXRhIGJ5dGVzXSk7Ci0g
ICAgTlNNdXRhYmxlRGF0YSAqcmVzdWx0RGF0YSA9IFtOU011dGFibGVEYXRhIGRhdGFdOwotICAg
IC8vIE5PVEU6IGFkZCBsZWFkaW5nICc/JyB0byBxdWVyeSBzdHJpbmdzIG5vbi16ZXJvIGxlbmd0
aCBxdWVyeSBzdHJpbmdzLgotICAgIC8vIE5PVEU6IHJldGFpbiBxdWVzdGlvbi1tYXJrIG9ubHkg
cXVlcnkgc3RyaW5ncy4KLSAgICBpZiAoY29tcG9uZW50VHlwZSA9PSBrQ0ZVUkxDb21wb25lbnRR
dWVyeSkgewotICAgICAgICBpZiAocmFuZ2UubGVuZ3RoID4gMCB8fCBoYXNRdWVzdGlvbk1hcmtP
bmx5UXVlcnlTdHJpbmcoVVJMKSkKLSAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVz
OiI/IiBsZW5ndGg6MV07ICAgIAotICAgIH0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdl
Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IGJ5dGVzW2ldOwotICAg
ICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPj0gMHg3ZikgewotICAgICAgICAgICAgY2hhciBlc2Nh
cGVkWzNdOwotICAgICAgICAgICAgZXNjYXBlZFswXSA9ICclJzsKLSAgICAgICAgICAgIGVzY2Fw
ZWRbMV0gPSB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAgIGVzY2Fw
ZWRbMl0gPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAgIFtyZXN1
bHREYXRhIGFwcGVuZEJ5dGVzOmVzY2FwZWQgbGVuZ3RoOjNdOyAgICAKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGNoYXIgYlsxXTsKLSAgICAgICAgICAgIGJbMF0gPSBjOwotICAgICAg
ICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0ZXM6YiBsZW5ndGg6MV07ICAgIAotICAgICAgICB9
ICAgICAgICAgICAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHREYXRhOwotfQot
Ci1zdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFj
dGVyKE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZSBjb21wb25lbnQpCi17Ci0gICAgQ0ZS
YW5nZSByYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVS
TFJlZilVUkwsIGNvbXBvbmVudCwgMCk7Ci0gICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IGtDRk5v
dEZvdW5kKQotICAgICAgICByZXR1cm4gVVJMOwotICAgIAotICAgIC8vIFJlbW92ZSBvbmUgc3Vi
c2VxdWVudCBjaGFyYWN0ZXIuCi0gICAgcmFuZ2UubGVuZ3RoKys7Ci0KLSAgICBWZWN0b3I8VUlu
dDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBidWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9MRU5H
VEgpOwotICAgIENGSW5kZXggbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVS
TFJlZilVUkwsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwotICAgIGlmIChudW1CeXRl
cyA9PSAtMSkgewotICAgICAgICBudW1CeXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENG
VVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Ci0gICAgICAgIGJ1ZmZlci5ncm93KG51bUJ5dGVzKTsK
LSAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0
YSgpLCBudW1CeXRlcyk7Ci0gICAgfQotICAgIFVJbnQ4KiB1cmxCeXRlcyA9IGJ1ZmZlci5kYXRh
KCk7Ci0gICAgICAgIAotICAgIGlmIChudW1CeXRlcyA8IHJhbmdlLmxvY2F0aW9uKQotICAgICAg
ICByZXR1cm4gVVJMOwotICAgIGlmIChudW1CeXRlcyA8IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2Uu
bGVuZ3RoKQotICAgICAgICByYW5nZS5sZW5ndGggPSBudW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9u
OwotICAgICAgICAKLSAgICBtZW1tb3ZlKHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24sIHVybEJ5
dGVzICsgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgsIG51bUJ5dGVzIC0gcmFuZ2UubG9j
YXRpb24gKyByYW5nZS5sZW5ndGgpOwotICAgIAotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJM
Q3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0
aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAg
ICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51
bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0
cik7Ci0gICAgICAgICAgICAgICAgCi0gICAgcmV0dXJuIHJlc3VsdCA/IENGQnJpZGdpbmdSZWxl
YXNlKHJlc3VsdCkgOiBVUkw7Ci19Ci0KLU5TVVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNV
UkwgKlVSTCkKLXsKLSAgICByZXR1cm4gVVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVl
bnRDaGFyYWN0ZXIoVVJMLCBrQ0ZVUkxDb21wb25lbnRVc2VySW5mbyk7Ci19Ci0KIE5TVVJMICpV
UkxCeUNhbm9uaWNhbGl6aW5nVVJMKE5TVVJMICpVUkwpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJM
UmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRo
VVJMOlVSTF0pOwpAQCAtMTA0OSwyMDMgKzU3LDQgQEAgTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXpp
bmdVUkwoTlNVUkwgKlVSTCkKICAgICByZXR1cm4gW1tuZXdVUkwgcmV0YWluXSBhdXRvcmVsZWFz
ZV07CiB9CiAKLU5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICpVUkwpCi17Ci0gICAgVUlu
dDggKmJ1ZmZlciA9IChVSW50OCAqKW1hbGxvYyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0g
ICAgQ0ZJbmRleCBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVm
KVVSTCwgYnVmZmVyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgaWYgKGJ5dGVzRmls
bGVkID09IC0xKSB7Ci0gICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZVUkxHZXRC
eXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKLSAgICAgICAgYnVmZmVy
ID0gKFVJbnQ4ICopcmVhbGxvYyhidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAgIGJ5
dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIs
IGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAgIEFTU0VSVChieXRlc0ZpbGxlZCA9PSBieXRlc1Rv
QWxsb2NhdGUpOwotICAgIH0KLSAgICAKLSAgICAvLyBidWZmZXIgaXMgYWRvcHRlZCBieSB0aGUg
TlNEYXRhCi0gICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5OmJ1
ZmZlciBsZW5ndGg6Ynl0ZXNGaWxsZWQgZnJlZVdoZW5Eb25lOllFU107Ci0gICAgCi0gICAgTlNV
UkwgKmJhc2VVUkwgPSAoX19icmlkZ2UgTlNVUkwgKilDRlVSTEdldEJhc2VVUkwoKF9fYnJpZGdl
IENGVVJMUmVmKVVSTCk7Ci0gICAgaWYgKGJhc2VVUkwpCi0gICAgICAgIHJldHVybiBvcmlnaW5h
bFVSTERhdGEoVVJMV2l0aERhdGEoZGF0YSwgYmFzZVVSTCkpOwotICAgIHJldHVybiBkYXRhOwot
fQotCi1zdGF0aWMgQ0ZTdHJpbmdSZWYgY3JlYXRlU3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFy
YWN0ZXJzKENGU3RyaW5nUmVmIHN0cmluZykKLXsKLSAgICBDRkluZGV4IGxlbmd0aCA9IENGU3Ry
aW5nR2V0TGVuZ3RoKHN0cmluZyk7Ci0gICAgVmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVS
X0xFTkdUSD4gc291cmNlQnVmZmVyKGxlbmd0aCk7Ci0gICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJz
KHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgc291cmNlQnVmZmVyLmRhdGEoKSk7Ci0g
ICAgCi0gICAgVmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gb3V0QnVmZmVy
OwotICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0g
ICAgQ0ZJbmRleCBpID0gMDsKLSAgICB3aGlsZSAoaSA8IGxlbmd0aCkgewotICAgICAgICBVQ2hh
cjMyIGM7Ci0gICAgICAgIFUxNl9ORVhUKHNvdXJjZUJ1ZmZlciwgaSwgbGVuZ3RoLCBjKQotICAg
ICAgICAKLSAgICAgICAgaWYgKGlzTG9va2FsaWtlQ2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50
LCBjKSkgewotICAgICAgICAgICAgdWludDhfdCB1dGY4QnVmZmVyWzRdOwotICAgICAgICAgICAg
Q0ZJbmRleCBvZmZzZXQgPSAwOwotICAgICAgICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOwot
ICAgICAgICAgICAgVThfQVBQRU5EKHV0ZjhCdWZmZXIsIG9mZnNldCwgNCwgYywgZmFpbHVyZSkK
LSAgICAgICAgICAgIEFTU0VSVCghZmFpbHVyZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8IG9mZnNldDsgKytqKSB7Ci0gICAgICAgICAgICAgICAg
b3V0QnVmZmVyLmFwcGVuZCgnJScpOwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQo
dXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAg
ICAgIG91dEJ1ZmZlci5hcHBlbmQobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZl
cltqXSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgVUNo
YXIgdXRmMTZCdWZmZXJbMl07Ci0gICAgICAgICAgICBDRkluZGV4IG9mZnNldCA9IDA7Ci0gICAg
ICAgICAgICBVQm9vbCBmYWlsdXJlID0gZmFsc2U7Ci0gICAgICAgICAgICBVMTZfQVBQRU5EKHV0
ZjE2QnVmZmVyLCBvZmZzZXQsIDIsIGMsIGZhaWx1cmUpCi0gICAgICAgICAgICBBU1NFUlQoIWZh
aWx1cmUpOwotICAgICAgICAgICAgZm9yIChDRkluZGV4IGogPSAwOyBqIDwgb2Zmc2V0OyArK2op
Ci0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCh1dGYxNkJ1ZmZlcltqXSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcHJldmlvdXNDb2RlUG9pbnQgPSBjOwotICAgIH0KLSAgICAKLSAgICBy
ZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCBvdXRCdWZmZXIuZGF0
YSgpLCBvdXRCdWZmZXIuc2l6ZSgpKTsKLX0KLQotTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5n
KE5TVVJMICpVUkwpCi17Ci0gICAgTlNEYXRhICpkYXRhID0gb3JpZ2luYWxVUkxEYXRhKFVSTCk7
Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmVmb3JlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KFtkYXRhIGJ5dGVzXSk7Ci0gICAgaW50IGxlbmd0aCA9IFtkYXRhIGxlbmd0
aF07Ci0gICAgCi0gICAgYm9vbCBtYXlOZWVkSG9zdE5hbWVEZWNvZGluZyA9IGZhbHNlOwotICAg
IAotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSBiZWZvcmU7Ci0gICAgaW50IGJ1ZmZlckxl
bmd0aCA9IChsZW5ndGggKiAzKSArIDE7Ci0gICAgVmVjdG9yPGNoYXIsIFVSTF9CWVRFU19CVUZG
RVJfTEVOR1RIPiBhZnRlcihidWZmZXJMZW5ndGgpOyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2Nh
cGUgZXZlcnkgY2hhcmFjdGVyCi0gICAgY2hhciAqcSA9IGFmdGVyLmRhdGEoKTsKLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9
IHBbaV07Ci0gICAgICAgIC8vIHVuZXNjYXBlIGVzY2FwZSBzZXF1ZW5jZXMgdGhhdCBpbmRpY2F0
ZSBieXRlcyBncmVhdGVyIHRoYW4gMHg3ZgotICAgICAgICBpZiAoYyA9PSAnJScgJiYgKGkgKyAx
IDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3Ro
ICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAyXSkpIHsKLSAgICAgICAgICAgIGF1dG8gdSA9IHRv
QVNDSUlIZXhWYWx1ZShwW2kgKyAxXSwgcFtpICsgMl0pOwotICAgICAgICAgICAgaWYgKHUgPiAw
eDdmKSB7Ci0gICAgICAgICAgICAgICAgLy8gdW5lc2NhcGUKLSAgICAgICAgICAgICAgICAqcSsr
ID0gdTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90IHVu
ZXNjYXBlCi0gICAgICAgICAgICAgICAgKnErKyA9IHBbaV07Ci0gICAgICAgICAgICAgICAgKnEr
KyA9IHBbaSArIDFdOwotICAgICAgICAgICAgICAgICpxKysgPSBwW2kgKyAyXTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICpxKysgPSBjOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBDaGVjayBmb3IgInhuLS0i
IGluIGFuIGVmZmljaWVudCwgbm9uLWNhc2Utc2Vuc2l0aXZlLCB3YXkuCi0gICAgICAgICAgICBp
ZiAoYyA9PSAnLScgJiYgaSA+PSAzICYmICFtYXlOZWVkSG9zdE5hbWVEZWNvZGluZyAmJiAocVst
NF0gfCAweDIwKSA9PSAneCcgJiYgKHFbLTNdIHwgMHgyMCkgPT0gJ24nICYmIHFbLTJdID09ICct
JykKLSAgICAgICAgICAgICAgICBtYXlOZWVkSG9zdE5hbWVEZWNvZGluZyA9IHRydWU7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgKnEgPSAnXDAnOwotICAgIAotICAgIC8vIENoZWNrIHN0cmluZyB0
byBzZWUgaWYgaXQgY2FuIGJlIGNvbnZlcnRlZCB0byBkaXNwbGF5IHVzaW5nIFVURi04ICAKLSAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IHJlc3VsdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0
cmluZzphZnRlci5kYXRhKCldOwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIC8vIENvdWxk
IG5vdCBjb252ZXJ0IHRvIFVURi04LgotICAgICAgICAvLyBDb252ZXJ0IGNoYXJhY3RlcnMgZ3Jl
YXRlciB0aGFuIDB4N2YgdG8gZXNjYXBlIHNlcXVlbmNlcy4KLSAgICAgICAgLy8gU2hpZnQgY3Vy
cmVudCBzdHJpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYnVmZmVyCi0gICAgICAgIC8vIHRoZW4gd2Ug
d2lsbCBjb3B5IGJhY2sgYnl0ZXMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgCi0gICAgICAg
IC8vIGFzIHdlIGNvbnZlcnQuCi0gICAgICAgIGludCBhZnRlcmxlbmd0aCA9IHEgLSBhZnRlci5k
YXRhKCk7Ci0gICAgICAgIGNoYXIgKnAgPSBhZnRlci5kYXRhKCkgKyBidWZmZXJMZW5ndGggLSBh
ZnRlcmxlbmd0aCAtIDE7Ci0gICAgICAgIG1lbW1vdmUocCwgYWZ0ZXIuZGF0YSgpLCBhZnRlcmxl
bmd0aCArIDEpOyAvLyBjb3BpZXMgdHJhaWxpbmcgJ1wwJwotICAgICAgICBjaGFyICpxID0gYWZ0
ZXIuZGF0YSgpOwotICAgICAgICB3aGlsZSAoKnApIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgYyA9ICpwOwotICAgICAgICAgICAgaWYgKGMgPiAweDdmKSB7Ci0gICAgICAgICAgICAgICAg
KnErKyA9ICclJzsKLSAgICAgICAgICAgICAgICAqcSsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4
RGlnaXQoYyk7Ci0gICAgICAgICAgICAgICAgKnErKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERp
Z2l0KGMpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgKnErKyA9ICpwOwot
ICAgICAgICAgICAgcCsrOwotICAgICAgICB9Ci0gICAgICAgICpxID0gJ1wwJzsKLSAgICAgICAg
cmVzdWx0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFmdGVyLmRhdGEoKV07Ci0g
ICAgfQotICAgIAotICAgIGlmIChtYXlOZWVkSG9zdE5hbWVEZWNvZGluZykgewotICAgICAgICAv
LyBGSVhNRTogSXMgaXQgZ29vZCB0byBpZ25vcmUgdGhlIGZhaWx1cmUgb2YgbWFwSG9zdE5hbWVz
IGFuZCBrZWVwIHJlc3VsdCBpbnRhY3Q/Ci0gICAgICAgIGF1dG8gbWFwcGVkUmVzdWx0ID0gbWFw
SG9zdE5hbWVzKHJlc3VsdC5nZXQoKSwgTk8pOwotICAgICAgICBpZiAobWFwcGVkUmVzdWx0KQot
ICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVkUmVzdWx0OwotICAgIH0KLQotICAgIHJlc3VsdCA9
IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107Ci0gICAgcmV0
dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFj
dGVycygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzdWx0LmdldCgpKSk7Ci19Ci0KLUJPT0wgaXNV
c2VyVmlzaWJsZVVSTChOU1N0cmluZyAqc3RyaW5nKQotewotICAgIEJPT0wgdmFsaWQgPSBZRVM7
Ci0gICAgLy8gZ2V0IGJ1ZmZlcgotICAgIAotICAgIGNoYXIgc3RhdGljX2J1ZmZlclsxMDI0XTsK
LSAgICBjb25zdCBjaGFyICpwOwotICAgIEJPT0wgc3VjY2VzcyA9IENGU3RyaW5nR2V0Q1N0cmlu
ZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc3RyaW5nLCBzdGF0aWNfYnVmZmVyLCAxMDIzLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgpOwotICAgIHAgPSBzdWNjZXNzID8gc3RhdGljX2J1ZmZlciA6IFtz
dHJpbmcgVVRGOFN0cmluZ107Ci0gICAgCi0gICAgaW50IGxlbmd0aCA9IHN0cmxlbihwKTsKLSAg
ICAKLSAgICAvLyBjaGVjayBmb3IgY2hhcmFjdGVycyA8PSAweDIwIG9yID49MHg3ZiwgJS1lc2Nh
cGUgc2VxdWVuY2VzIG9mICU3ZiwgYW5kIHhuLS0sIHRoZXNlCi0gICAgLy8gYXJlIHRoZSB0aGlu
Z3MgdGhhdCB3aWxsIGxlYWQgX3dlYl91c2VyVmlzaWJsZVN0cmluZyB0byBhY3R1YWxseSBjaGFu
Z2UgdGhpbmdzLgotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAg
ICAgdW5zaWduZWQgY2hhciBjID0gcFtpXTsKLSAgICAgICAgLy8gZXNjYXBlIGNvbnRyb2wgY2hh
cmFjdGVycywgc3BhY2UsIGFuZCBkZWxldGUKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID09
IDB4N2YpIHsKLSAgICAgICAgICAgIHZhbGlkID0gTk87Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfSBlbHNlIGlmIChjID09ICclJyAmJiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJSUhl
eERpZ2l0KHBbaSArIDFdKSkgJiYgaSArIDIgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBb
aSArIDJdKSkgewotICAgICAgICAgICAgYXV0byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSArIDFd
LCBwW2kgKyAyXSk7Ci0gICAgICAgICAgICBpZiAodSA+IDB4N2YpIHsKLSAgICAgICAgICAgICAg
ICB2YWxpZCA9IE5POwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaSArPSAyOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hlY2sg
Zm9yICJ4bi0tIiBpbiBhbiBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgotICAg
ICAgICAgICAgaWYgKGMgPT0gJy0nICYmIGkgPj0gMyAmJiAocFtpIC0gM10gfCAweDIwKSA9PSAn
eCcgJiYgKHBbaSAtIDJdIHwgMHgyMCkgPT0gJ24nICYmIHBbaSAtIDFdID09ICctJykgewotICAg
ICAgICAgICAgICAgIHZhbGlkID0gTk87Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHZhbGlkOwotfQotCi1O
U1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICBOU1Jhbmdl
IGNvbG9uID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiOiJdOwotICAgIGlmIChjb2xvbi5sb2Nh
dGlvbiAhPSBOU05vdEZvdW5kICYmIGNvbG9uLmxvY2F0aW9uID4gMCkgewotICAgICAgICBOU1Jh
bmdlIHNjaGVtZSA9IHswLCBjb2xvbi5sb2NhdGlvbn07Ci0gICAgICAgIC8qCi0gICAgICAgICBU
aGlzIHN0dWZmIGlzIHZlcnkgZXhwZW5zaXZlLiAgMTAtMTUgbXNlYyBvbiBhIDJ4MS4yR0h6LiAg
SWYgbm90IGNhY2hlZCBpdCBzd2FtcHMKLSAgICAgICAgIGV2ZXJ5dGhpbmcgZWxzZSB3aGVuIGFk
ZGluZyBpdGVtcyB0byB0aGUgYXV0b2NvbXBsZXRlIERCLiAgTWFrZXMgbWUgd29uZGVyIGlmIHdl
Ci0gICAgICAgICBldmVuIG5lZWQgdG8gZW5mb3JjZSB0aGUgY2hhcmFjdGVyIHNldCBoZXJlLgot
ICAgICAgICAgKi8KLSAgICAgICAgTlNTdHJpbmcgKmFjY2VwdGFibGVDaGFyYWN0ZXJzID0gQCJB
QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
Njc4OSsuLSI7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFy
YWN0ZXJTZXQ+PiBJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0KFtbTlNDaGFyYWN0ZXJTZXQgY2hh
cmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzphY2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52
ZXJ0ZWRTZXRdKTsKLSAgICAgICAgTlNSYW5nZSBpbGxlZ2FscyA9IFtzdHJpbmcgcmFuZ2VPZkNo
YXJhY3RlckZyb21TZXQ6SW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRp
b25zOjAgcmFuZ2U6c2NoZW1lXTsKLSAgICAgICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5T
Tm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4gc2NoZW1lOwotICAgIH0KLSAgICByZXR1cm4g
TlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7Ci19Ci0KLUJPT0wgbG9va3NMaWtlQWJzb2x1dGVV
UkwoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICAvLyBUcmltIHdoaXRlc3BhY2UgYmVjYXVzZSBf
d2ViX1VSTFdpdGhTdHJpbmcgYWxsb3dzIHdoaXRlc3BhY2UuCi0gICAgcmV0dXJuIHJhbmdlT2ZV
UkxTY2hlbWUoc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2Uoc3RyaW5nKS5nZXQoKSkubG9jYXRp
b24gIT0gTlNOb3RGb3VuZDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5k
cG9pbnRDb25maWd1cmF0aW9uLmgKaW5kZXggYzk5Y2IzODM3OGMxOWFiODJjZTkxZThiZjAyMzdh
Yjc3Mjg3OTExYS4uNjMzMTc4ZTRlZWFiNWVhMzE5MzYyMTAxMGU3NThjYjM0MjBjODE1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2lu
dENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5oCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNs
dWRlICJSVENCdW5kbGVQb2xpY3kuaCIKICNpbmNsdWRlICJSVENJY2VUcmFuc3BvcnRQb2xpY3ku
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0
aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lVmlkZW9VdGlsaXRpZXMuaAppbmRleCBiNzAyNjc0ODI0NjlkNTg3NWVmYjVmNzQ5NGQxYmY3
YWM0MmM4OWUxLi4zODBkMzczMWIwYTE1M2FiYjljMjI3MGJmZWU3NjgwZjAzYjNiOGVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVW
aWRlb1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgKQEAgLTIzLDYgKzIzLDggQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAorI3ByYWdtYSBvbmNlCisKICNpbmNsdWRlIDxDb3JlVmlkZW8vQ29yZVZp
ZGVvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlBhcnQuaAppbmRleCA2MjhmOTM5YTMwNWNjZjc0NjY5ZTZiY2JhYmMwZjU5MTc5
NTYzNzg2Li4wNDFjMjlhMzEyZjA5ODE3ZjhlY2YxNzM2MTYxM2NhZDJmZDZmNGRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUGFydC5oCkBAIC0yNSw3ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCmluZGV4IDlmZjYwMGNhYzU5M2QzNTk0NWMxMGVhMTE0NTM3
NGRiYzk3MjgwMTMuLjQ3NGEwZjJmOGJiYTFjYjFmOTYzY2NjOTk0NGYyZTc5ZGFiYzFkZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAt
NDAsNyArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZl
cmVuY2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIEJsb2JSZWdpc3RyeTsKLWNsYXNzIFVSTDsK
IAogV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lzdHJ5JiBibG9iUmVnaXN0cnkoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRl
eCAyNGZlY2M5NWE0MTk2MGIxM2RkODc0ODE1MTBlYzI3OGE4YjFlZjI0Li5jNjkxZTViNjcwMDdl
ZGEyZTJmZjhiYjYyMjZhMDBhMzAwNTE0ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAtMzMsMTQgKzMzLDEzIEBACiAK
ICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeS5oIgotI2luY2x1
ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsK
IGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggNjE4MmJlNTZjNDI2MDVkNTBlYTI5
ZDJkN2JlMTAyMTdkYmY2MjEwOS4uYzk0ZTM5NDk0YjhlMzI2ZGI0YTEyYTI3MjAxYTQ2MjM4ZGUx
OGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVz
b3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlc291cmNlSGFuZGxlLmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIkhUVFBIZWFk
ZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29u
dGVudFJhbmdlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eS5oCmluZGV4IDI0OWEwMDM2MWJlZmFjM2M4YWIzMzlhZDg3N2U4NzFmNGJmZTU5MzIuLjMyYTZm
NTdjMGEyMTk2MDQ3Yzc0MzliMDkzOWRmZTJjZDBjMzY5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5LmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVn
eS5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
cmVkZW50aWFsU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxTdG9yYWdlLmNwcAppbmRleCBlNWYzMDRiYmNlNWQwMTk2OTkxZjVjZDljZTJlMGYy
MjEyY2FlNmEwLi4yYzU0MzQzODVmMTg1ZTgyZTI5MTYxYjhmYzQ3ZmU5OTAxMzk0N2IxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9y
YWdlLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgi
CiAKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiV2Vi
Q29yZVRocmVhZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
cmVkZW50aWFsU3RvcmFnZS5oCmluZGV4IDVjYWNjMDU2MzFjMTY4MGQxZDk0MjdkNzc4OTUyOWYz
YjE4ZDMwN2QuLjdkZGM0ZmU1NWJiMWJlMmY2OTIwMDA4MGMzNGYzNGJhYmQ1MGVkYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdl
LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQ3Jl
ZGVudGlhbFN0b3JhZ2VfaAotI2RlZmluZSBDcmVkZW50aWFsU3RvcmFnZV9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VI
YXNoLmgiCkBAIC0zNSw3ICszNCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
VVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogCiBjbGFzcyBDcmVkZW50aWFsU3RvcmFnZSB7
CkBAIC03MCw1ICs2OCwzIEBAIGNsYXNzIENyZWRlbnRpYWxTdG9yYWdlIHsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENyZWRlbnRpYWxTdG9yYWdlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5k
ZXggM2Y0ZmIxYWQ4ODRhNzgyYmRjNjE0ZmQzOTRmZTc3NzFhYmE1NGE0Zi4uNDYwNWJlYTBhN2Ex
NmQxM2E1ZDJjMGU5MDZmYmFlOTBjZGQ0NjIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKICNp
bmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxE
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmgKaW5kZXggNzI1ODI0NzEyOWNiYmFhMmM4NWZjM2I0OWNmZGI2NjgwZDJiZDc1ZC4uOTc0ZDlj
ZWJlYjE5NTE4OGI1Yzg0NjkyYWEwZjViMjZiYTk5MGNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtMjMsOSArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRGF0YVVS
TERlY29kZXJfaAotI2RlZmluZSBEYXRhVVJMRGVjb2Rlcl9oCi0KKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0z
OCw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
LWNsYXNzIFVSTDsKIAogbmFtZXNwYWNlIERhdGFVUkxEZWNvZGVyIHsKIApAQCAtNjEsNSArNTgs
MyBAQCB2b2lkIGRlY29kZShjb25zdCBVUkwmLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmLCBEZWNv
ZGVDb21wbGV0aW9uSGFuZGxlciYmKTsKIH0KIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCBlOGM3ZDk4YTA3NWI2NmRkMDU0Mjg3
OWI1OTE2NGMwZDQ2ZjZhNzI2Li5iYmFhZGUxODViNzlmNTRmOGMwNzA3NTM5NjMyMTY2MzQ2ZWMy
ZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0y
MCw5ICsyMCw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaAppbmRl
eCAxMDNkOWE5NmJiZGM2MTUyYTYxYjdkMTYxZmU0MDkwYmE1YmMzYTA1Li41Mjc4OWI1YmRkOGRh
YjM5N2IzNjlhYWMxNThjMjY3NzIxODc3ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Qcm94eVNlcnZlci5oCkBAIC0yMywxNSArMjMsMTMgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFByb3h5U2VydmVyX2gKLSNk
ZWZpbmUgUHJveHlTZXJ2ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiAKIC8vIFJlcHJlc2Vu
dHMgYSBzaW5nbGUgcHJveHkgc2VydmVyLgpAQCAtNzUsNSArNzMsMyBAQCBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmKTsKIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyB0b1N0cmluZyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+Jik7
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQcm94eVNlcnZlcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJy
b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmgKaW5kZXggNzYzMzE4YzJlMTE0NzM2MjM2ZWMzZDEzNmM3YzRhODc4ZGRjYjJmMy4uZTBi
ZjA0YjhhYzhmMDBiMzkzOTc5MWViZmQwMDg3ZWNiOTBkYjc5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaApAQCAtMjYsNyAr
MjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcAppbmRleCA0OTE0MzRkOGZhNTNmMTkwZTU0NTNlYjlmMzk0ZTQwN2RkNmMxM2Jm
Li40NmFmNTY3MTNkODk4YzNhN2ZiZDc5OGFhNTBmZWFhNjU0Nzg0OTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtMTU2
LDcgKzE1Niw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIENvbXBsZXRpb25ICiAgICAgaWYgKHJlc3BvbnNlLmlz
SFRUUDA5KCkpIHsKICAgICAgICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKICAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7Ci0gICAgICAgIGlmIChw
b3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9j
b2woKSkpIHsKKyAgICAgICAgaWYgKHBvcnQgJiYgIVdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7CiAgICAgICAgICAgICBjYW5jZWwo
KTsKICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gIkNhbmNlbGxlZCBsb2FkIGZyb20gJyIg
KyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIGl0IGlz
IHVzaW5nIEhUVFAvMC45LiI7CiAgICAgICAgICAgICBkLT5tX2NsaWVudC0+ZGlkRmFpbCh0aGlz
LCB7IFN0cmluZygpLCAwLCB1cmwsIG1lc3NhZ2UgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggMDFhODZlMzU5YjFmZDBmMmVh
ZjQ1NjhhYTcyODY0MGMzMmI3NmY3OC4uNjVmMzBmOTVkYjYwNTRhNWQwMWIyOWYyNDY4YjU5ZTk3
MzcyNGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaApAQCAtNzcsNyArNzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBGcmFtZTsK
LWNsYXNzIFVSTDsKIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBkNmVkYjZkNjE4YWRj
M2JjY2UyM2YwMWZiOTdmZjEzOTk3YTZmYWMyLi4zZTEwYmVmNDkxMDdkMTM3ODE3Y2I5OTMyOTg1
MjE3NWJiOGQ0MGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC00NCw3ICs0NCw2IEBAIE9CSkNfQ0xBU1Mg
TlNDYWNoZWRVUkxSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlhbDsKLWNsYXNzIFVSTDsKIGNsYXNzIFBy
b3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuY3BwCmluZGV4IGZmNTgzNjE3NGVhYjk1OTUyOGEyMDdiZmJhYWI2MDAzOWQ5
YjUwMzMuLmZiNDYzNjM1MjJhN2ZlYzI1MjdkY2M0ZDEyNzVlZGEzZjc2MzMwOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFJlc291cmNlUmVxdWVzdCBSZXNvdXJjZVJlcXVl
c3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByCiAgICAg
ICAgIHJlcXVlc3QubV9odHRwSGVhZGVyRmllbGRzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6Q29u
dGVudExlbmd0aCk7CiAgICAgfQogCi0gICAgaWYgKHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBX
ZWJDb3JlOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQorICAg
IGlmIChzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ICYmICFyZXF1ZXN0
LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgJiYgV1RGOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0
cFJlZmVycmVyKCksICJodHRwcyIpKQogICAgICAgICByZXF1ZXN0LmNsZWFySFRUUFJlZmVycmVy
KCk7CiAKICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChyZXF1ZXN0LnVybCgp
LCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggM2FmNDM1MjY5ZmUxZmNl
MDM3Nzg1ZmQyNWExZTBjYmJmZDc5MGYzNS4uZTdjMWM0MDljM2I5YjY0ZWE3YjRlMzc4NzgzNDM5
NTQyYTRhZDBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJGb3Jt
RGF0YS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291
cmNlTG9hZFByaW9yaXR5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAppbmRl
eCBkOGZjYzE0MzFiNTBiYzdhYjY3ZjFkMTk2OGI5MWNlNzBlYTE2MWVmLi4wZTU1YzFjZWZmMmFl
N2MzNzFmNjBlNmVjMzRhODE1Yjc4YTgyMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBAIC0zMSw4ICszMSw4
IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0
cmljcy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXgg
YjU5YmRiYTBiNDEyOTVjZWUzODUzZjZmZWEyMmFiYzI0ZWNkYmYyNS4uNmQxZmQxYTgzMDk5Mzk4
OTRiNDllYTg0Yjc3YTU5ZjExN2Q4YTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC0zMSw4ICszMSw4IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKaW5kZXggYmEzNDBmZjg4ZDYyMDNiNzEyNTIwOWE4
NTAyM2QzNDlkZjM1ZjJkZi4uNGY4ZTQzMjJhYzU3MWQ3NzcxM2QxMDE0Mzc0MDQ1ZmY2ZGNjZmNm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTMwLDExICszMCwxMSBAQAogCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmlu
ZGV4IGZhMDRjOGI3MDk5Y2JhZWI2ZTVmNGMxNWIxNzQ1MjY3NDA5YjNhZDcuLmY4ZWJiMDZjY2Qw
NTZlMzUwZWQwMGYwYjkyNWZkYWFjZmZkZTRkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q0ZOZXQuY3BwCkBAIC00MiwxMiArNDIsMTIgQEAKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eS5oIgogI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5k
YXRpb24uaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2luY2x1ZGUg
PHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmluZGV4IGI1YzZhOGQ2YzMyZmZkYmQ5MGIy
MTAwNDJiOTQ3MTQ3NDNhMGM1NGIuLjJhYjM0OTcyMTZhYzVhYTg3NmUwMDRlN2E3ZDU2YThlNDhk
ZWM0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJv
eHlTZXJ2ZXJDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Qcm94eVNlcnZlckNGTmV0LmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVyLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXgg
YmEzNjA1YmJkMWQ0NmY5N2RlMjgzOGYzOTgzNzg5MmY5OTUyMmI2OC4uZDQxNmY2MTUxNGVmMWZm
MDIzMTFkNWMyZDEwMzVlZmQ1NDFlOTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMjgsMTEgKzI4LDEx
IEBACiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZFcnJvci5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5l
dHdvcmtFcnJvcnMuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Db2NvYS5tbQppbmRleCA4OTQ4NWEzMWY1NDQ1YTVjODllOTNiODEzYzkxMDgxYTc0YTQ5
MTljLi4wZWFkZTE1OTljZTU4YmI2NDBmMmQxMjEzYWM0MzYwMjE0NzNhODljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTMxLDExICszMSwxMSBAQAogI2ltcG9y
dCAiQ29va2llU3RvcmFnZU9ic2VydmVyLmgiCiAjaW1wb3J0ICJDb29raWVzU3RyYXRlZ3kuaCIK
ICNpbXBvcnQgIlNhbWVTaXRlSW5mby5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxwYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxl
Z2UuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogQGludGVyZmFjZSBOU1VSTCAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmgKaW5kZXggZTBiMjFjYzEzNzc0OGE4
ZTE2Mjc0ODMyNjA3YzE4ZDdhNDgxNjBmZS4uYjk2MTRiZmYwMDc5ODRjYTVmMjIxOGUwYjY1OWFh
ZjJmNGEyZDYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyQ3VybC5oCkBAIC0yNSw3ICsyNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogCiBzdHJ1
Y3QgQ29va2llOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmxEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNlLmNwcAppbmRleCA1ZTg0NTRhYTU0YWY2
ZjcxYWNmYWU3ZTkzNjI0MDdjMjE0MTc1MTg1Li5jMmQwNTFlMzc5M2Y1YThlODY4YTRlNzlkZmUx
NjQ2NTY3NTE3YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNlLmNwcApAQCAtMzEsOSArMzEs
OSBAQAogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IDY1MDAzOGQzOTQxMmM3Y2Ew
Mzg0M2Q4YWM5M2YxNDY2YTRlODdjODIuLjM5ZTc3YmY3ZDQ2MGZmNzZhYTc3ZmNhNjFjYjI2MTNi
MWE3NTU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5o
IgotI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmgKaW5kZXggYTg5Yzlh
YjdiOTYyNjI0NDgzMjYyNTI1NDcwZjFhNGRjYzlmZjM3Mi4uNjE4ZGY3Yjg4ZTQyOWVmNzY0ZTEy
YjI2N2M3NGFkZmExYWU5ZWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oCkBAIC0yNCw4ICsyNCw4IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDb250ZXh0LmgKaW5kZXggMzczMjYwMTc5Yjg4NmYxZWVkYTA2ODEzOWYwMDY4NGExNGFm
MDc3NS4uZjhkNjgxMDgwMWVmYmFkZDlkNDEwMDIyOTRhZGEzOTlhMDk2NTg0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAg
LTI4LDEzICsyOCwxMyBAQAogCiAjaW5jbHVkZSAiQ3VybFByb3h5U2V0dGluZ3MuaCIKICNpbmNs
dWRlICJDdXJsU1NMSGFuZGxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYv
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5j
bHVkZSA8d2luZG93cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAppbmRleCBhNjFjNmVjMjI2MmQyZTM4Nzk5
MjcyNGI2ZGNjNWY2OTRkMTE2NjQ5Li5mMzVmNDFiNTFmNTg5NmY2ZjczMzY2MDU1MjQ5YzMwYmEz
OTViM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFByb3h5U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2RlZmluZSBrQ1VSTEFVVEhfRElHRVNUX0lFICAgICgo
KHVuc2lnbmVkIGxvbmcpIDEpIDw8IDQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc3BvbnNlLmgKaW5kZXggMzczNjYxYmQzNWFmY2U2NjdhZTFi
YjM1NzdhNmMwOWRjMTQ0ZmE0ZC4uZTYxMWZmYzRmYjE1NDFmNGNmZDEzMjg3MmNiYzFkNWRjM2Q5
M2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzcG9uc2UuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5kZXggZTExMGFkMTY0OTEwNWVj
NmIwMDNiMTk5MDM2YWQ4YThlNzA0NzcxNC4uMWJkMjFlY2VhYmZmN2U3OTIwMGFmODJjY2QwOWMy
YTg4NzE4OWUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtMzYs
MTAgKzM2LDEwIEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwu
aCIKIAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3BwCmluZGV4IGNkYTQ0
OTkzZjYzNGIyNDQ0YTYxZGNhZjk3NDAxZTlmMjYwMmYwYjAuLjE4ZjUwOGI2ZTQ4NjgyYThmYzcw
MGQxZjY3ZDdhOTZlMDkzZWQ0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3BwCkBAIC0yOCw3ICsyOCw3IEBA
CiAKICNpZiBVU0UoQ1VSTCkKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxD
dXJsLmNwcAppbmRleCBjZmM0OGZmYTI1ZmQ4MGZkYjhkNzFmYTdjMzg5M2QzZTg2YTQ1NzdhLi4w
NzEwY2FlZTI1MDNjMWYzZjM4MDhlMjA0MzcwNTg4MjdlZDM2ZGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJv
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJy
b3JNYWMubW0KaW5kZXggMmVjZjQyOGMwYWI1MTRhY2UwYzAxYzVmNGQxNjI5OGNlYTIxNjA3My4u
ZGNiZGUzNDhlYjQ3N2MyYTFiNWFiZTRhYjU5MzU5Mzk4ZTJhYzlhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1t
CkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVzb3Vy
Y2VFcnJvci5oIgogCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NG
RXJyb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3Rm
L0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIEBp
bnRlcmZhY2UgTlNFcnJvciAoV2ViRXh0cmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODZkYzYzNzQxMmUxOGJhNzI1Zjc0ODNlYzMyNmUxMjQ5YTg4YTE2ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNvdXAuaAorKysgL2Rldi9udWxsCkBA
IC0xLDM1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI2lmbmRlZiBHVW5pcXVlUHRyU291cF9oCi0jZGVmaW5lIEdVbmlxdWVQdHJTb3Vw
X2gKLQotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlx
dWVQdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLVdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNv
dXBVUkksIHNvdXBfdXJpX2ZyZWUpCi1XVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQ29va2ll
LCBzb3VwX2Nvb2tpZV9mcmVlKQotV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cE1lc3NhZ2VI
ZWFkZXJzLCBzb3VwX21lc3NhZ2VfaGVhZGVyc19mcmVlKQotV1RGX0RFRklORV9HUFRSX0RFTEVU
RVIoU291cEJ1ZmZlciwgc291cF9idWZmZXJfZnJlZSkKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IGU0ODNhYTYz
MTZjZTZjNWQ2YzhmM2U2NTVkNTVkZDFlZWIwNDYzY2YuLjAzZDE1NmU1ZWQ2ZThjMWY1OTA5NTZh
OGJkODQwZThhM2QxMGU0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAK
QEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgiCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lv
bi5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgpAQCAtNDEsNiArNDAsNyBAQAogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlx
dWVQdHJTb3VwLmg+CiAKICNpZiBVU0UoTElCU0VDUkVUKQogI2luY2x1ZGUgIkdSZWZQdHJHdGsu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94
eVNlcnZlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1By
b3h5U2VydmVyU291cC5jcHAKaW5kZXggNGMyNzdjM2QyMTY3YWNjNTQ0MTFmOTYwM2UzNTE5MDAx
NzMzYjRhZC4uOWM5OWY4OTVkYjRkYjdjODExY2E1MGY1MTFkM2Q0ZmIyNWM3MTZhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2Vy
dmVyU291cC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFVTRShTT1VQKQogCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggNjM3MzRjNjc0YzUyZWU5NWRjNmM5ZTQyMWM0NjYw
ZjQxODQwMGJhYS4uZmI3MTgxM2EzNzU5MDljMGE3YTJmNTQ1NzRhODExYWVkZGIzZmQ2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkdVbmlx
dWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJMb2NhbGl6
ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtNTgsNiArNTcs
NyBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3Vw
Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggMzhlM2E4ZWU2OTY4MTFm
ZDViYTc4YjRiMzBjMmMwMWEzOWZmNWI1Zi4uNzQ3MmFkMjM4YjMzNGE5NTA5MDFlZGU5MDE1ODMy
NjViM2Y5YmM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApAQCAtMjcsOSArMjcsOSBAQAogI2lmbmRlZiBSZXNv
dXJjZVJlcXVlc3RfaAogI2RlZmluZSBSZXNvdXJjZVJlcXVlc3RfaAogCi0jaW5jbHVkZSAiR1Vu
aXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3RCYXNlLmgiCiAjaW5jbHVk
ZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggNThj
ZmE3NzYxNDRjODRhMDkwZDM2MjJkZjIyMjc0MjE4Zjc5MWJiNi4uZWQyNjk0MDFlYmJmZjRkZDYz
OGVmOGVmYzFlMGVkODY5MjJmNDZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtMjQs
MTEgKzI0LDExIEBACiAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JSZWdp
c3RyeUltcGwuaCIKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkhUVFBQ
YXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIgorI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxTb3VwLmNwcAppbmRleCA5Y2RkZGI4N2UzNzU5NWEyYmJhZDY1MTAyMDQ1ZjZm
YTc0MmI0ZTQyLi41YWY5NDczZjM3NzI4NjExMzFiYWU3MTc3YjM0MzE5YTVjMmRiMDQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKQEAgLTQxLDkgKzQxLDkgQEAKICNp
bmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9H
VW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5l
dHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDEzZWNiNWIwZjc2M2MyMDFjZjE3YTQxNjEyYTcz
ZjA5YThmNWEwNzguLjYwMDRkMTdmNzZhMDNhOTBlMzM4YTkwZTNjNTQ1YjUyZjUxOWM3NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29y
a1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRl
ICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTb3Vw
TmV0d29ya1Byb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgpAQCAtMzks
NiArMzgsNyBAQAogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2
NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmlu
ZGV4IGQxZTlkOWNlNWIyODlkMTRjYzZjMTY1OTNiZjRhZDA2NzgyN2U1M2EuLjViNWZmNzk3NzM0
NzE1MTk2MWE0NWMzNDk3ZWEyZjU1MTM0NGIxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKQEAgLTQ0
LDcgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgVVJMOwogc3RydWN0IFNvdXBOZXR3b3JrUHJv
eHlTZXR0aW5nczsKIAogY2xhc3MgU291cE5ldHdvcmtTZXNzaW9uIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
N2RiYTMyODY5NWZmY2IyNmYzODdiNjcyYWE5Mzg3MzcyYjJlOTFjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nv
dXAvVVJMU291cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShTT1VQKQotCi0j
aW5jbHVkZSAiVVJMLmgiCi0KLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLSNpbmNsdWRlIDxsaWJz
b3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotVVJMOjpVUkwoU291cFVSSSogc291cFVSSSkKLXsKLSAgICBpZiAoIXNvdXBV
UkkpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJ
LCBGQUxTRSkpOwotICAgIFVSTFBhcnNlciBwYXJzZXIoU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJp
bmcuZ2V0KCkpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLQotICAgIGlmICghaXNW
YWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTU2LiBsaWJzb3VwCi0gICAgLy8gZG9l
cyBub3QgYWRkIHRoZSBwYXNzd29yZCB0byB0aGUgVVJMIHdoZW4gY2FsbGluZwotICAgIC8vIHNv
dXBfdXJpX3RvX3N0cmluZywgYW5kIHRodXMgdGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkK
LSAgICAvLyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRo
ZSBtYWludGFpbmVyIGRvZXMKLSAgICAvLyBub3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5
IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRpb25zCi0gICAgaWYgKHNvdXBVUkktPnBhc3N3b3Jk
KQotICAgICAgICBzZXRQYXNzKFN0cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsK
LX0KLQotR1VuaXF1ZVB0cjxTb3VwVVJJPiBVUkw6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAotewot
ICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVy
biBHVW5pcXVlUHRyPFNvdXBVUkk+KHNvdXBfdXJpX25ldyhzdHJpbmcoKS51dGY4KCkuZGF0YSgp
KSk7Ci19Ci0KLWJvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewot
ICAgIHJldHVybiAhaG9zdC5pc0VtcHR5KCkgJiYgZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGhv
c3QudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaAppbmRleCA3N2M1
Mjg4ZmQwY2UwNTk4NjRlZjgxMjNlMDA3MmJiN2MzNTcyM2RiLi43ZDAzZjg2M2QwZGY0OWQyZjc5
YzdjM2E2ZDEzODJjZjQxNjgxMGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRFbmNvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dEVuY29kaW5nLmgKQEAgLTI1LDEzICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC90ZXh0L1VuZW5jb2RhYmxlSGFuZGxpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4dEVuY29kaW5nIDogcHVibGljIFVSTFRl
eHRFbmNvZGluZyB7CitjbGFzcyBUZXh0RW5jb2RpbmcgOiBwdWJsaWMgV1RGOjpVUkxUZXh0RW5j
b2RpbmcgewogcHVibGljOgogICAgIFRleHRFbmNvZGluZygpID0gZGVmYXVsdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29uc3QgY2hhciogbmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKaW5kZXggYmFlMWJlYWFhYTM3YWRlMzAzYjA4ZjM0ODk0
OTI0OTAxODY0NzljYS4uMGY0NmM1ZGNhYjI5YjdiNDYzYmI2ZWNkMzFiMGViM2I3NThjMjIzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcApAQCAtMjYsOCArMjYsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJTdHJpbmcuaCIKIAotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuaAppbmRleCAxZmJlMDJj
MTU4N2MxMjliOGQ1MDUwMmU2NDYwNGU3ODZjZTgyYTJhLi4xODRiNTUxZDQ4ZTljMjMxZWEwMmE3
ODc1NmZlOTZmZWQzZTU2NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQlN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgK
QEAgLTQwLDggKzQwLDYgQEAgdHlwZWRlZiBfTnVsbF90ZXJtaW5hdGVkXyB3Y2hhcl90KiBCU1RS
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBVUkw7Ci0KICAgICBjbGFzcyBC
U3RyaW5nIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEJTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXgg
NmZmODllYzE4MGQ1ODM1YzU5MTQwZmM2YTM4N2Y0N2IxMjViMGEzMi4uNDg1NDU0MmYwZDQwMTI2
ODIyNWI3ZDYwZGZjNDJlN2ZiZTI1MGYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTI3LDEzICsyNywxMyBA
QAogI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGllc1dpbi5oIgogCiAjaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5o
IgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNo
bHdhcGkuaD4KICNpbmNsdWRlIDx3aW5pbmV0Lmg+IC8vIGZvciBJTlRFUk5FVF9NQVhfVVJMX0xF
TkdUSAogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5kZXggNWNkOWUwZTc1
NzMxM2ZmMDIyOWE2Y2ZiYThlZDY0OTBhODFhZmUyOC4uYzM3ZjNlMmRlMTk2MWU2YTEzMDQ1NDc3
Y2NhODY5MjY0ZjAzMjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaApAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKLWNsYXNz
IFVSTDsKIAogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFN0cmluZyYpOwogSEdMT0JB
TCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRleCAxZGZhNTBiNTMyZGQ4YjVhZjY2
Njc1Zjg0NDlmZTU0MTkxMTc0ZWZmLi5hNmI2NzJmYzcyN2ZlODM3OWEyZDBmN2UwNDYwNzE2OTYw
Y2ZiYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNw
cApAQCAtMzQsMTIgKzM0LDEyIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0SW5kaWNhdG9yLmgiCiAj
aW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXh0UmVuZGVyZXIuaCIKICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJ
T2JqZWN0Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcAppbmRleCAwNjk5Nzk5MDYzMWU1YzM0MzY0NzE4YWU2YWIxNzY1OTRjZGYzNjlkLi5kNTk2
N2E1ODIwYzk3YWUyOGM2MjVhNTBkODAzOGUwMGVlMjVkZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5j
bHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNp
bmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC00OSw2ICs0OCw3
IEBACiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhLmgKaW5kZXggMGI2YzQyZWUyZDA4MTY4YmVkZWZjOGYzZDBmOWVhZTZlMWE2YmY1OC4u
ZjA0MGIwYWY5NmYzYjhiYmQ5ZjU0OTMyOTMxMmI4ZjRmNzA2OWVkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5EYXRhLmgKQEAgLTIwLDEwICsyMCwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggZDA3NzdiMzQ1MGMzYTAyMGFlZmQ0M2E3MjNj
YzZjYjEzM2RlYWUwYi4uMzMyZjI4NTMxZDM4OGNmZTJjM2Q1OGE5NGMzZjI2MTdkY2I5MTY2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0zOCw3ICszOCw2
IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE5vZGU7CiBj
bGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBVUkw7CiAKIGVudW0gY2xhc3MgSGl0VGVzdFByb2dyZXNz
IHsgU3RvcCwgQ29udGludWUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckF0dGFjaG1lbnQuY3BwCmluZGV4IGVkMzMzNWUxMzc0ZDhmNzIyOTI1MmQ1NGNlMDY3Y2MzODQ3
NjgxYmQuLjc0NjdmZjM4NjU2ODJiOGJlNjNiYjY3ZGViZDcxOWE0YzhiN2UzY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAKQEAgLTMzLDggKzMz
LDggQEAKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBdHRhY2ht
ZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5j
cHAKaW5kZXggOTk5OTZlMDFlZDA3MWFmNTg3MWExZGExNjZjNjMxNDlhMTNiNGU3NC4uNzIyMWRm
Y2I3ZGRkZTU5MDM5Mjc2YWRkYzlmMzliZGEyZDc4OTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VMb2FkZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgU1ZHSW1hZ2VMb2FkZXI6OmRp
c3BhdGNoTG9hZEV2ZW50KCkKIFN0cmluZyBTVkdJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0
IEF0b21pY1N0cmluZyYgYXR0cmlidXRlKSBjb25zdAogewogICAgIFVSTCBiYXNlID0gZWxlbWVu
dCgpLmJhc2VVUkkoKTsKLSAgICBpZiAoYmFzZSAhPSBibGFua1VSTCgpKQorICAgIGlmIChiYXNl
ICE9IFdURjo6YmxhbmtVUkwoKSkKICAgICAgICAgcmV0dXJuIFVSTChiYXNlLCBzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlKSkuc3RyaW5nKCk7CiAgICAgcmV0dXJu
IGVsZW1lbnQoKS5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhhdHRyaWJ1dGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVUklSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5j
ZS5jcHAKaW5kZXggNjg1MDRhYTg0ZjI2Y2IxOTNmZjM1ZmEwOGIwYTRmNmQxZTU1ZmMyYy4uZGEx
M2I3N2I2ZjNkMWI4MjgzZGNhOTk4OGQ4ODc2ZGQzNmUxNWM3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VSSVJlZmVyZW5jZS5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVPd25lclBy
b3h5LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
IlhMaW5rTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA4N2UyODIzZjllNzFiNjdiZDQ4MWU4ZTg4NDExYmFkMDAx
MjY0Yjk4Li5jZDNmZDBkMWUyNTlkYWI0ZTMzYTY5YWI2YWQxODQ2ZDlhZTVlMTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtMjcsNyArMjcsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAppbmRleCAzZjViYzNhNzU2ZTY4NzkxYmFjOGQzNjgz
YjZjM2MxNjc0NmQ5ZTQyLi4zMmU3MjJiZmEyNzM0NTRjNGI1YTExNGVmODA5NjQzNzUyMzRmODZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKQEAgLTMz
LDcgKzMzLDYgQEAgY2xhc3MgTGF5b3V0U2l6ZTsKIGNsYXNzIFNWR0ltYWdlOwogY2xhc3MgU1ZH
SW1hZ2VGb3JDb250YWluZXI7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBVUkw7CiAKIGNs
YXNzIFNWR0ltYWdlQ2FjaGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRl
eCA2OTgwNmJlNjc3MDNlMmU5NDlmMzQxZDVjOTg2YTg1ZWEyZDdlMjRmLi40Y2ZjZThkNGIwMzc4
NTc5MTQyMjY3YWE2YjgwODc2NzEyNmIwNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHSW1h
Z2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDY3ZTA2
YTFiNzljNThlMDg0Yzc3YTU2YjJiZjc3OTc4ZjQzNjBlMWYuLjkwYmNiYmI1ZDc1YTk1NTRkNzhk
NzViZDA1ZmRlYmQxN2FhNzkzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZShQYWdlJiBwYWdlKQogICAgICAgICAgICAgYmFja2luZy0+c2V0VGlsZVNpemVVcGRhdGVEZWxh
eURpc2FibGVkRm9yVGVzdGluZyhmYWxzZSk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6Y2xlYXJE
ZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOworICAgIFdURjo6Y2xlYXJEZWZh
dWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwogICAgIG92ZXJyaWRlVXNlclByZWZl
cnJlZExhbmd1YWdlcyhWZWN0b3I8U3RyaW5nPigpKTsKICAgICBXZWJDb3JlOjpEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3M6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhmYWxzZSk7CiAgICAgV2Vi
Q29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9y
KGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1t
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KaW5kZXggNmZjZGNiZWRkM2Y3
ZGE0Y2M1NDIwYTkzNjczNDI5NDFhNWMxMTQ5Ny4uN2M1YjdhZDg0MmQ5OThmZTYxYTAxNDIzMDUy
YzBhMWU2MGI5MzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KQEAgLTMyLDgg
KzMyLDggQEAKICNpbXBvcnQgIkV2ZW50SGFuZGxlci5oIgogI2ltcG9ydCAiSGl0VGVzdFJlc3Vs
dC5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgog
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCkBA
IC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIEludGVybmFsczo6
dXNlclZpc2libGVTdHJpbmcoY29uc3QgRE9NVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybC5ocmVmKCkpOworICAgIHJldHVybiBXVEY6OnVzZXJW
aXNpYmxlU3RyaW5nKHVybC5ocmVmKCkpOwogfQogCiBib29sIEludGVybmFsczo6dXNlclByZWZl
cnNSZWR1Y2VkTW90aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5jcHAKaW5kZXggNjQ4ZmJkMjZmYWMzNmE2NWM5OTU3YzUxMTU3ODg3NjQ2ZjJk
YzI2Mi4uNTExODFkYWU3MmUxM2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4YTE4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcg
QEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2UKIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RVUkwg
eyByZXF1ZXN0LnVybCgpLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcgfTsKICAgICBpZiAoIW1v
ZGlmaWVkUmVxdWVzdFVSTC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJp
bmcsICJNb2NrQ29udGVudEZpbHRlciBmYWlsZWQgdG8gY29udmVydCAlcyB0byBhIFdlYkNvcmU6
OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Cisg
ICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTW9ja0NvbnRlbnRGaWx0ZXIgZmFpbGVkIHRv
IGNvbnZlcnQgJXMgdG8gYSAgVVJMLlxuIiwgbW9kaWZpZWRSZXF1ZXN0VVJMLnN0cmluZygpLmFz
Y2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggOWI2ZTk1ZTIx
NTQ4MzBjMDAwM2Q2ZTIxODAwM2FjZWFhMjJmZWQ1MS4uNDkyOWU4YWUzZDE5ZGM4ZWIxMzUwYWQ1
ZTE1YzA1MTNmMTY4MTMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQ
YXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiTW9ja1Bh
eW1lbnRNZXRob2QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3Jk
aW5hdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IGQyNDEyMDZh
MjhkZDVmNjQ3MGRhOWZiODRlOWVkNGZjNzRjMjg3YjAuLjU4MDlmMGJlZGYwZTdhMDcxNzI4ZDA5
ZWI5Mjk3NDdjNGI0ZWUwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMv
V2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTM5LDEyICszOSwxMiBAQAogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2hlZWxF
dmVudFRlc3RUcmlnZ2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0lkZW50aWZpZXJJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNW
YWx1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmVUZXN0U3VwcG9ydCB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5oCmluZGV4IDkwMGMyY2I0MDQ2MmEwZWJlMzcwMjhhMzc1YTYzM2Zl
YWY5NTM0ZjEuLjAzMjFjMmM3ZmVkMjU2NjI4ZmYyNmNlZDkxM2FlYjhhZmMzMGUwMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKQEAgLTM1LDggKzM1LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIEFic3RyYWN0V29ya2Vy
IDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJhY3RXb3JrZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDViOWEwYmUzNjlj
Mjk5YzBmYjc1NDEwNzhmYzc2NTZkNmRlNzllYzEuLjI4MmRkMDZiYzMzOGExZTA2OWE1YmQ0NmQ4
NjNmYzMyOWQwYmE0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5o
IgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKaW5kZXggMzZiZDAwNzA3ZDBhNjhk
YjMwNzYyNzJiYTY1ZjMwYTNhOTI3ZjFlNy4uODU4NWE1YmZmOTNiMDQ2NjVkZTUzMjFlZDMyYjky
ZmZhOTc2YTE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZVByb3h5LmgKQEAgLTQyLDcgKzQyLDYgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7
Ci1jbGFzcyBVUkw7CiBjbGFzcyBXb3JrZXI7CiAKIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUg
d29ya2VyIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3Rv
clByb3h5LmgKaW5kZXggZGY0MzcxYWUyM2MzMDMwNmVhN2JmNjQwZDI3ZjllMTRiOTc1ZTRiMi4u
YTFkM2VhNzU3NmU3ZWEzNGE2NGNiOTE1NDdkZTc2YWNmNTE4YmRlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaApAQCAtMjUsNyArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJM
b2NhdGlvbi5oCmluZGV4IDUzYzc3NjE1Njc1NWI3MDZiOWQyNDkzNzE2YTgxMjUyN2ZjYTM1Zjgu
LjkyY2ZjYzc3MDZmMDM0ZTU3YjlmODJlOWJhMjdiYTNhNTFhMDlmMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmgKaW5kZXggZTU3YzMyM2NkZTllNmY0ZjgwYWY5YjI1YjJjZmUxZWUyZTczNzRkOS4uMDRh
NDFjMjFjYjJmNzUzMWZkZTYxOWU0ZDY3ZGQ1NjQ0OTA1Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCAxYzZh
YTE2NWI1OTE4NzE0N2M4YmE4MDk1NjFiMzAzMTVjODRiMGI3Li44NGYxMWUyNmVlYzZiZjkyMWJi
MDY1M2EyYjk1OTIzNzZjNDNjM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIK
LSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV29ya2Vy
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSA8dXRpbGl0eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4
IGQ3MTQxMjQ4NWE5NjkwNDlhZGI0OTY1OTc0ZGJlOTFmNWVlMTkxODkuLjNkYzU0ZjZjNDczZGIz
NzY3NTI1ZDFjYTQxMDNkNWQ2YTU2Yzk2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaApAQCAtMzksNyArMzksNiBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKLWNs
YXNzIFVSTDsKIGNsYXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXIuaAppbmRleCA5YjliY2M4YTIyZjlkNzY3MTI5ODk3ZWMwMWYzN2Iy
YTU1MjFiN2VkLi43YjIzOWYzMDdkYTcxZTE1NmQ4N2JhMjM1M2I1MWIxYTMzMzVmZmYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmgKQEAgLTMx
LDkgKzMxLDkgQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckRhdGEuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiBjbGFzcyBKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAppbmRleCAxNDNkN2Q5ZTA0NWQ1
NGUxMWE4YzZlZDlhYzE0ZTM3YjE1NmEwNTI5Li5mOTkxZjMyY2U2ZDNhOWIyNTdhNTYxMmI0NjM2
NWE2NzlhZTJkMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlckNsaWVudFR5cGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuY3BwCmluZGV4IDQwZDQwZGFkYTBiMThmMjJhODgzN2NiOTc2OGE0YTk5
NmUyZTZiZDIuLjhkYjljNDE2YmRmNzNjNjg2YWVmMTU4ZDY0ZDYxMDA0MmZlOGVjNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Sm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVM
RUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIl
cCAtIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQog
I2RlZmluZSBDT05UQUlORVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VX
b3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OiIgZm10LCB0aGlzLCAjI19fVkFf
QVJHU19fKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDNiZTk1MDQyNWVhNzgwY2ZmZDViYmVlNzg1
ZmE0NTMyYWY5NGEzZDcuLjRkNjIwODg5ZjkzNGE3ZWZhMjYwYjMyMDliNGUxNzZiMDJhYjBkMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTI5LDExICsyOSwxMSBAQAogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKLSNp
bmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlw
ZS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCmluZGV4IDcyOGMzN2NmZTYyYTVmZTU2MGFiNmM0
ZWIxODY0ZjA0NDRjZjkzNmUuLmNlMzYxZDNmM2QwZjM4NzNhODZkYzhhOTM4YmFmMDNmMWQxNjRh
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKaW5kZXggMDg3MGJiNmVmNjAyOTg0NWNkNGE5YjZk
ZTIzMDBhODgzY2FhMWMyMi4uOTNjMmRmNmZmMGQyZjM5OGU4NDEyNjhiZTE5NjY0ZjdhOWNlNjRm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2JEYXRhLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9w
dGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkuY3BwCmluZGV4IDFjM2Q3NDZiMjNkYjkzZTM1NmYyMmU2MzEyMGIx
Y2Q0ZjRjZGIwYzkuLmJjZGQ4YzQ2OTI3ZGM0MDA2MGIwZGVmOWRlYmVlNWVlYTVlZjE3NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1
ZGUgIlVSTEhhc2guaCIKKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCmluZGV4IDcxMGY0MTJiNDcyZDhmMTc0
MmUwYmVlNDhkNTAyYmU4OWE5YTAzOTkuLmU2YWY3MzMxYzdiOTU0MzlkNTM5OGE5YThjMzdlMzQ3
NmI4ZmRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaApAQCAtMjgsNyArMjgsNyBAQAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0
YS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXlIYXNoIHsKIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiB7CiAgICAgc3RhdGljIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmVtcHR5S2V5KCk7IH0KIAotICAgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiBzbG90KSB7IHNsb3Quc2V0U2NvcGUoV2ViQ29yZTo6VVJMKEhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSkpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29w
ZShVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0
ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90
KSB7IHJldHVybiBzbG90LnNjb3BlKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA1MDUyMGI2YTE0MWIxODNmMDQ4
ZGU2MDkzMjlmOWNjODFmMjU0ODcwLi42MjYxN2NiODdhMTBjMTVjNTIzOGUwYzBjYWE3NjdmMmJl
OGFjODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgog
I2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5o
IgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5j
bHVkZSA8d3RmL1ZhcmlhbnQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCBhY2Q2NWU5YzgwYTA2
N2YyNzJhNThlMWQ5NzM1YzExZmU2NTEyYTk0Li4xZmI0MTVlMmQyZDA4NjUzZWZjYTI3MWJlOWM4
ZjBlYWU0NTRmZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nv
b2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAppbmRleCBkZTIyYzc5ZjhlOGQwZTJi
ODE3MjRmNjUxMTFhOWYxMGE1ZDIwMzY5Li4zMjEwZTMyOTllNmZjYjgzMmZjMzljOGVkNmNhOGU2
Njc4YmM2YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKQEAgLTQwLDcgKzQwLDYgQEAKICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgQ29va2llOwogfQogCkBAIC03
OCw5ICs3Nyw5IEBAIGNsYXNzIFdlYkNvb2tpZU1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nl
c3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjCiAgICAgdm9pZCBkZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIENhbGxiYWNrSUQp
OwogCiAgICAgdm9pZCBzZXRDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNv
b2tpZSYsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25z
dCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBz
ZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYs
IGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIENhbGxiYWNrSUQpOwotICAgIHZv
aWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBD
YWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXgg
ZTNkZTlkOGNmYWI5ZmQ1ZjZmYjY4YTJjMDcxMDI2MmE4NTVkYzQ0OC4uMGIxZmQ1NTllMGJlYjI2
ZTAwMzc5NDM0YWRhZTRlNWM5ZTQ3ZGFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2Fn
ZXMuaW4KQEAgLTI5LDkgKzI5LDkgQEAKICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogCiAgICAgdm9pZCBTZXRDb29raWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBTZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwg
V2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCisgICAgdm9pZCBTZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgVVJMIHVybCwgVVJMIG1haW5Eb2N1bWVudFVSTCwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBHZXRBbGxDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0g
ICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJM
IHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRDb29raWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgdm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVBy
b3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlckNvY29hLm1tCmluZGV4IGMyYjE0N2M1ZjcyMWI5NTQwNzQ1YjY0OGQy
MGJiY2I3Mjg0NzFhYmUuLjZlOTAyOGRiNWM5OTdiZDJhMzFmZWUxOGEzM2MxMjRiN2ZmMTQyOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlckNvY29hLm1tCkBAIC0zNCw4ICszNCw4IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNVUkxDb25uZWN0aW9uU1BJLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lz
dHJ5LmNwcAppbmRleCBiNjc2NjE0OWVlZDExZTljMjhiMGUxNDMzYWU2ZGVjMGFkNWQ2OTk3Li40
ZTBmN2ZhN2RlNjgzYmNhMTI2NTg4ZDFjNDEyM2NkNWJhZmE0MmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVn
aXN0cnkuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAg
bWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVj
dGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJM
LCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykKK3ZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25u
ZWN0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlw
YXNzQ29ubmVjdGlvbkNoZWNrKQogewogICAgIC8vIFRoZSBjb25uZWN0aW9uIG1heSBub3QgYmUg
cmVnaXN0ZXJlZCBpZiBOZXR3b3JrUHJvY2VzcyBwcmV2b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJl
YXNvbi4KICAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBt
X2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pOwpAQCAtMTAwLDcgKzEwMCw3IEBA
IHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVC
YWNrZWQoTmV0d29ya0Nvbm5lY3Rpb25UCiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwp
OwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNl
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGlu
dDY0X3QgZW5kKQordm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JT
bGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKIHsK
ICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgTmV0d29ya1By
b2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9yIGFueSByZWFzb24uCiAgICAgQmxvYkZvckNvbm5l
Y3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmlu
ZChjb25uZWN0aW9uKTsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KgogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5hZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxv
YlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIE5ldHdvcmtCbG9i
UmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBt
YXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgTmV0d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQg
Zm9yIGFueSByZWFzb24uCiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0
ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKQEAgLTEyNSw3
ICsxMjUsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZQogICAgIG1hcEl0ZXJhdG9yLT52YWx1
ZS5yZW1vdmUodXJsKTsKIH0KIAotdWludDY0X3QgTmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNp
emUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsKQordWludDY0X3QgTmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIGlmICghbV9ibG9ic0ZvckNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbikgfHwg
IW1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlLmNvbnRhaW5zKHVy
bCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgTmV0d29ya0Js
b2JSZWdpc3RyeTo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQCiAgICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwog
fQogCi1WZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVn
aXN0cnk6OmZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1ZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxl
UmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlm
ICghbV9ibG9ic0ZvckNvbm5lY3Rpb24uY29udGFpbnMoJmNvbm5lY3Rpb24pIHx8ICFtX2Jsb2Jz
Rm9yQ29ubmVjdGlvbi5maW5kKCZjb25uZWN0aW9uKS0+dmFsdWUuY29udGFpbnModXJsKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCmluZGV4IGMxOWE2NTllMGVmNDU1
YmIxMDg4YmNmODVjMjlmZGVhYzkzNzI2MzkuLjkwNmI5ZThhNTJmZTRjZmEwMjY2Y2Q5NzFkNzE4
Y2UyYzkyNTU0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmls
ZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKQEAgLTQ2LDI1ICs0NiwyNSBAQCBXVEZf
TUFLRV9OT05DT1BZQUJMRShOZXR3b3JrQmxvYlJlZ2lzdHJ5KTsKICAgICBOZXR3b3JrQmxvYlJl
Z2lzdHJ5KCk7CiAgICAgc3RhdGljIE5ldHdvcmtCbG9iUmVnaXN0cnkmIHNpbmdsZXRvbigpOwog
Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2Fu
ZGJveEV4dGVuc2lvbj4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNV
UkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKLSAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGNvbnN0
IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50
NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB1
aW50NjRfdCBibG9iU2l6ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdl
YkNvcmU6OlVSTCYpOworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRy
PFNhbmRib3hFeHRlbnNpb24+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3Qg
VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nv
bm5lY3Rpb25DaGVjayk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJh
Y2tlZChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0
X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJik7CisgICAgdWludDY0X3QgYmxv
YlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBVUkwmKTsKICAgICB2
b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7Ci0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVS
TCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vz
cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChj
b25zdCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29s
IHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHZvaWQgY29ubmVjdGlvblRv
V2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7CiAKLSAg
ICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5C
bG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7
Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxl
c0luQmxvYihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiwgY29uc3QgVVJMJik7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToK
ICAgICB+TmV0d29ya0Jsb2JSZWdpc3RyeSgpOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgSGFzaFNldDxXZWJDb3JlOjpVUkw+PiBCbG9iRm9y
Q29ubmVjdGlvbk1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqLCBIYXNoU2V0PFVSTD4+IEJsb2JGb3JDb25uZWN0aW9uTWFwOwogICAgIEJsb2JG
b3JDb25uZWN0aW9uTWFwIG1fYmxvYnNGb3JDb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCmluZGV4IGQwMzc4N2ZiNGEyNWQ0OWFlYzNlZTY3NzViODc1YmY4YjIwMzAzOTMu
LmY1ODRiYzQ2NjA4NTFjMDBhZmFhYmUxNWZiYjA5OWFhMjlhNmRjMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTE1MCwzMiArMTUwLDMyIEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
CiAgICAgdm9pZCByZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCk7CiAgICAgdm9p
ZCBzZXREZWZlcnNMb2FkaW5nKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGJvb2wpOwotICAgIHZv
aWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRp
cmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RV
UkwpOwogICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRO
YW1lID0geyB9KTsKICAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25s
b2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKIAotICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzLCBTdHJpbmcmIGNvb2tpZVN0cmluZywgYm9vbCYgc2VjdXJlQ29va2llc0FjY2Vz
c2VkKTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29r
aWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVz
QWNjZXNzZWQpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKFBB
TDo6U2Vzc2lvbklELCBib29sJiByZXN1bHQpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgU3RyaW5nJiBjb29raWVTdHJpbmcs
IGJvb2wmIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKKyAgICB2b2lk
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYgY29va2llU3RyaW5n
LCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7
CisgICAgdm9pZCBkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21V
UkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wg
c2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsK
ICAgICB2b2lkIHByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJh
Y2tlZEJsb2IoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVCYWNrZWRQYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFs
bHlGaWxlQmFja2VkKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3Jj
VVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVu
ZCk7Ci0gICAgdm9pZCBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCYgcmVz
dWx0U2l6ZSk7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwm
KTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNl
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVu
ZCk7CisgICAgdm9pZCBibG9iU2l6ZShjb25zdCBVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7
CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRl
QmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9D
YWNoZShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YUtleSYsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3NFbmFibGVkKGJvb2wpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oV2ViQ29yZTo6
VVJMJiYsIFBBTDo6U2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90KTsK
KyAgICB2b2lkIGNyZWF0ZVNvY2tldFN0cmVhbShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIFN0cmlu
ZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QpOwogICAgIHZvaWQgZGVzdHJveVNvY2tldFN0cmVh
bSh1aW50NjRfdCk7CiAgICAgCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA3NzNkOWQ4ZTEwMzNiNjJlNDgxMzNiOTYyMGI2MjliZjc4ODZmZWFkLi45ZWZlYTU3NTRiNGRj
Y2Y2MzNiMWU0MzA0ZGJhMzc0NGQ3ZGEzZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDI4ICszNCwyOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3dubG9h
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElE
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUp
CiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93
bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCwgZW51bSBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykK
LSAgICBTZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5m
bywgV2ViQ29yZTo6VVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENv
b2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
ZW51bSBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykg
LT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAg
ICBTZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBh
cnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkKLSAgICBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJz
dFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29y
ZTo6VVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlELCBlbnVtIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nl
c3NTZWN1cmVDb29raWVzKQotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMpCi0gICAgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAgQ29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJl
Q29va2llcykKKyAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJM
IGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBV
UkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAg
IERlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBj
b29raWVOYW1lKQogCi0gICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsLCBT
dHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFu
ZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVS
TCB1cmwsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29udGVu
dFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJD
b3JlOjpVUkwgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykKKyAgICBS
ZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAg
ICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9i
UGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVS
TCB1cmwsIFVSTCBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogICAg
IFByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2Io
VmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5IGV4dGVuc2lvbkhhbmRsZXMpCi0gICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VSTCwgU3RyaW5nIGZp
bGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UoV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VSTCwgaW50NjRfdCBzdGFy
dCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCkK
LSAgICBCbG9iU2l6ZShXZWJDb3JlOjpVUkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkK
KyAgICBSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChVUkwgdXJsLCBVUkwgc3Jj
VVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBhdGgsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdp
c3RlckJsb2JVUkxGb3JTbGljZShVUkwgdXJsLCBVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBp
bnQ2NF90IGVuZCkKKyAgICBVbnJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsKQorICAgIEJsb2JTaXpl
KFVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1bHRTaXplKQogICAgIFdyaXRlQmxvYnNUb1RlbXBv
cmFyeUZpbGVzKFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllcikKIAogICAgIFN0b3JlRGVyaXZlZERhdGFUb0NhY2hlKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpEYXRhS2V5IGtleSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCiAKICAg
ICBTZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkK
IAotICAgIENyZWF0ZVNvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwgdXJsLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikK
KyAgICBDcmVhdGVTb2NrZXRTdHJlYW0oVVJMIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCiAKICAgICBFbnN1
cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCmluZGV4IGNmNGU2NGQ1MDNmMWE5ZWUw
YmRjNWUwZDUyOGM0N2YyOTQyOWE2NDEuLjA1OWExMzAxNDNiYTVmM2E3ZTBkMWViMWIxNDY2ZmE5
MWZhMGI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDbwog
ICAgIGlmIChyZXNwb25zZS5pc0hUVFAwOSgpKSB7CiAgICAgICAgIGF1dG8gdXJsID0gcmVzcG9u
c2UudXJsKCk7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9y
dCgpOwotICAgICAgICBpZiAocG9ydCAmJiAhaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQu
dmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7CisgICAgICAgIGlmIChwb3J0ICYmICFXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkgewog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAg
ICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRo
RXJyb3IoeyBTdHJpbmcoKSwgMCwgdXJsLCAiQ2FuY2VsbGVkIGxvYWQgZnJvbSAnIiArIHVybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQgaXMgdXNpbmcg
SFRUUC8wLjkuIiB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDY1ZWFiYjJiZjNiNTlkMmZkNDdhYTQxMjY1ZGZm
Njk5NDhiMzgwZGIuLmQ3M2E2ZWE2ZmYxMmMzMDRiZmE3NGJhYjk1YmU2YWVlZTY2Yjg5OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tC
bG9iLmNwcApAQCAtNDgsOSArNDgsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJv
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENo
ZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmgKaW5kZXggMTc5N2Q3ZTAyNWEwNGRkMjNjZTQ5N2M4MTFhZjI4MWEyNTk3MTI1ZC4uODQ2Y2I0
ZDNhZDNiYzk1YTBhZWUxYmJlZTA2MDZkMjMxNDVjMWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC00Nyw3ICs0Nyw3IEBA
IGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjsKIAogY2xhc3MgTmV0d29ya0xvYWRD
aGVja2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogcHVi
bGljOgotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
SFRUUEhlYWRlck1hcCYmLCBXZWJDb3JlOjpVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBi
b29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlKTsKKyAgICBO
ZXR3b3JrTG9hZENoZWNrZXIoV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJN
YXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6
UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBzaG91bGRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSk7CiAgICAgfk5ldHdvcmtMb2FkQ2hlY2tlcigp
OwogCiAgICAgdXNpbmcgUmVxdWVzdE9yRXJyb3IgPSBFeHBlY3RlZDxXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+OwpAQCAtNjksMTQgKzY5LDE0IEBAIGNs
YXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9h
ZENoZWNrZXI+IHsKIAogICAgIHZvaWQgc2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYmIGhlYWRlcnMpIHsgbV9jc3BSZXNw
b25zZUhlYWRlcnMgPSBXVEZNb3ZlKGhlYWRlcnMpOyB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKLSAgICB2b2lkIHNldENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6
OlVSTCYmIG1haW5Eb2N1bWVudFVSTCwgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQorICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNv
bnRyb2xsZXIoVVJMJiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5E
b2N1bWVudFVSTCA9IFdURk1vdmUobWFpbkRvY3VtZW50VVJMKTsKICAgICAgICAgbV91c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICB9CiAjZW5kaWYKIAot
ICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3koKSBjb25zdCB7
IHJldHVybiBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5OyB9CiAKICAgICBXZWJDb3JlOjpOZXR3
b3JrTG9hZEluZm9ybWF0aW9uIHRha2VOZXR3b3JrTG9hZEluZm9ybWF0aW9uKCkgeyByZXR1cm4g
V1RGTW92ZShtX2xvYWRJbmZvcm1hdGlvbik7IH0KQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tl
cj4gewogCiAgICAgdm9pZCBjb250aW51ZUNoZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CiAKLSAgICBib29sIGRvZXNOb3ROZWVk
Q09SU0NoZWNrKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgZG9lc05vdE5l
ZWRDT1JTQ2hlY2soY29uc3QgVVJMJikgY29uc3Q7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2
b2lkIGNoZWNrQ09SU1JlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlcXVlc3RXaXRoUHJl
ZmxpZ2h0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsK
QEAgLTExOCwxMSArMTE4LDExIEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICB1aW50NjRfdCBtX2ZyYW1l
SUQ7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX29yaWdpbmFsUmVxdWVzdEhlYWRlcnM7
IC8vIE5lZWRlZCBmb3IgQ09SUyBjaGVja3MuCiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBt
X2ZpcnN0UmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBmb3IgQ09SUyBjaGVja3MuCi0gICAgV2Vi
Q29yZTo6VVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+IG1fb3JpZ2luOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVyczsKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIFdlYkNvcmU6OlVSTCBtX21haW5Eb2N1
bWVudFVSTDsKKyAgICBVUkwgbV9tYWluRG9jdW1lbnRVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXI7CiAjZW5kaWYKIApAQCAtMTMxLDcgKzEzMSw3IEBAIGNsYXNzIE5ldHdvcmtMb2Fk
Q2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAg
ICBib29sIG1faXNTaW1wbGVSZXF1ZXN0IHsgdHJ1ZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5Owog
ICAgIHNpemVfdCBtX3JlZGlyZWN0Q291bnQgeyAwIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fcHJl
dmlvdXNVUkw7CisgICAgVVJMIG1fcHJldmlvdXNVUkw7CiAgICAgV2ViQ29yZTo6UHJlZmxpZ2h0
UG9saWN5IG1fcHJlZmxpZ2h0UG9saWN5OwogICAgIFN0cmluZyBtX2RudEhlYWRlclZhbHVlOwog
ICAgIFN0cmluZyBtX3JlZmVycmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBlYjg4NjY0ODEzOWNjN2I3NTllNzJjNjgxODI4MGI1
ZDA0NzEwOWUwLi4wNmMxYjNhZDRlYWU0Y2Q3ZDQyZDI5MDQ0NTUyOGE5OTRjY2E5MWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAt
NzYsMTMgKzc2LDEzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUg
PHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUg
PHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ2NSw3ICs0NjUs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9G
aWxlUGF0aChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiBoYW5kbGVGb3JXcml0aW5nLCB1aW50NjRfdCByZXF1ZXN0
SUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRs
ZUZvcldyaXRpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCkKIHsKICAgICBhdXRvIGV4dGVuc2lvbiA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKGhhbmRsZUZvcldyaXRpbmcpKTsKICAg
ICBpZiAoIWV4dGVuc2lvbikgewpAQCAtMTAwOCw3ICsxMDA4LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF8KICAgICAgICAgY2FsbGJhY2soU3RyaW5nIHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5
IH0sIHF1b3RhKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhj
b25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQogICAgIE5l
dHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGZiMzc3M2QxZWZlMWQzNDIxNmQ2YWVmY2U0
ODUzZWM3ODk5ZGE1NGMuLmFhYWRiMTMzYzc5ZmZhMTFjMGNmNjgyMzAyZTdiZDBhMGU2MWQzY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAg
LTY1LDcgKzY1LDYgQEAgY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiBl
bnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5Owogc3RydWN0IE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKQEAgLTE3Miw3ICsxNzEsNyBA
QCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93
bmxvYWRNYW5hZ2VyOjpDbGllbnQKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHF1
b3RhKT47CiAgICAgdm9pZCBjYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklELCBD
YWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2smJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RU
byhjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7
CisgICAgdm9pZCBwcmVjb25uZWN0VG8oY29uc3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nQ29va2llSW5mb3JtYXRpb247IH0KQEAgLTI5Myw3ICsy
OTIsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZh
dGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQKICAgICB2b2lkIHN5bmNBbGxDb29raWVzKCk7CiAg
ICAgdm9pZCBkaWRTeW5jQWxsQ29va2llcygpOwogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQ
YXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CisgICAgdm9pZCB3cml0ZUJsb2JU
b0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKICNpZiBVU0UoU09VUCkKICAgICB2
b2lkIHNldElnbm9yZVRMU0Vycm9ycyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFjNzNiZWQ0
MmUyZDQ1YTdjZThjMWZjNDRiM2M3NmYyYmIyYTllYmUuLjc4ZjljYjI5ODZkMzA0YzViMDJlZjgz
NWI3MTk3MjBjNDMwZTIzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNzcsOSArNzcsOSBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkR2V0U2FuZGJv
eEV4dGVuc2lvbnNGb3JCbG9iRmlsZXModWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4dGVuc2lvbnMpCiAjZW5kaWYKIAotICAgIFdyaXRl
QmxvYlRvRmlsZVBhdGgoV2ViQ29yZTo6VVJMIGJsb2JVUkwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisg
ICAgV3JpdGVCbG9iVG9GaWxlUGF0aChVUkwgYmxvYlVSTCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAot
ICAgIFByZWNvbm5lY3RUbyhXZWJDb3JlOjpVUkwgdXJsLCBlbnVtIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBQcmVjb25uZWN0
VG8oVVJMIHVybCwgZW51bSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0Jsb2NrLCBib29sIHNob3Vs
ZENsZWFyRmlyc3QsIHVpbnQ2NF90IGNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaApp
bmRleCBkNjM3MzhhZWVjOGEzNTM1ZDA5NjEwMzY5ZTc4NjQ5MWIxZTlkMmY5Li4yNzQzZTEyOWM4
NzlmNmIwYzI1YzIxMWJhMDA4OTM5NzhhM2EwYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5o
CkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIDog
cHVibGljIE5ldHdvcmtMb2FkUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4+IGZyYW1lQW5jZXN0b3JPcmlnaW5zOwogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKLSAgICBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMOworICAg
IFVSTCBtYWluRG9jdW1lbnRVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlm
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IGQxYzY4ODllYTY0OGNjYWNmMDhhYzE0YmU3YjZjNTJjYTNi
MDNkMzYuLjQzYWVkNTQ2ZGVmNjBlOGFkY2NlZmMxMzlhNzJmODZhZmY3NWRmNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTk3Niw3ICs5NzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9n
Q29va2llSW5mb3JtYXRpb24oKSBjb25zdAogICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKCJOZXR3
b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwg
Km5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5h
bFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1l
SUQoKSwgcGFnZUlEKCksIGlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2Nr
ZWRDb29raWVJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dn
ZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVy
KQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50
aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb24oKSk7CiAKQEAgLTEwMDMsNyArMTAwMyw3IEBAIHN0YXRpYyB2b2lkIGxv
Z0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lk
KiBsb2dnZWRPCiAjdW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQg
bG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2
b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRl
cm5hbChjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApp
bmRleCBhZmIwZTljNzk1NjYzZWFiMDVlYzRhZjRmMzgyNTRiNzdmYWVjMWRhLi5mODc0ZjhkYmE2
ZTljNWU1NjEwZjczNGQzNGNkNDc2MDFiMDRhODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTExMyw3ICsxMTMs
NyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwKIAogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRp
YyBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgbG9n
Q29va2llSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2Vk
T2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5m
b3JtYXRpb24oY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7
CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTEzNCw3ICsxMzQsNyBAQCBjbGFzcyBOZXR3b3JrUmVz
b3VyY2VMb2FkZXIgZmluYWwKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2Fj
aGVFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtDYWNoZTo6RW50cnk+JiYpOwogICAgIHZvaWQgY29udGludWVQcm9jZXNzaW5nQ2FjaGVkRW50
cnlBZnRlckRpZFJlY2VpdmVSZXNwb25zZShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpF
bnRyeT4pOwogCi0gICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhj
b25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBib29sIHNob3VsZEludGVy
cnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAg
IGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRp
b25zKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIGVudW0gY2xhc3Mg
Rmlyc3RMb2FkIHsgTm8sIFllcyB9OwpAQCAtMTY5LDcgKzE2OSw3IEBAIGNsYXNzIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlciBmaW5hbAogCiAgICAgLy8gQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50
CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2VuZENTUFZp
b2xhdGlvblJlcG9ydChXZWJDb3JlOjpVUkwmJiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQoVVJMJiYsIFJlZjxXZWJDb3Jl
OjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBlbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9s
YXRpb25FdmVudChXZWJDb3JlOjpTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYp
IGZpbmFsOwogCiAgICAgdm9pZCBsb2dTbG93Q2FjaGVSZXRyaWV2ZUlmTmVlZGVkKGNvbnN0IE5l
dHdvcmtDYWNoZTo6Q2FjaGU6OlJldHJpZXZlSW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggNDJkMzZiYzRj
YzNmZTQzMmYzNTI0YzgzYjBjOWY4ODRlOGQ3NDQzYy4uYzVhNjJjNjhmZTlkYTY1NmU0MjMzZmJk
MTM2OWEyYzY2MWUyOWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TmV0d29ya1NvY2tldFN0
cmVhbT4gTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24s
IHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNl
QXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKQorUmVmPE5ldHdvcmtTb2NrZXRTdHJl
YW0+IE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBp
ZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9u
QXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3
b3JrU29ja2V0U3RyZWFtKFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0
aW9uLCBpZGVudGlmaWVyLCBjb25uZWN0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVh
bS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgK
aW5kZXggOTA2ZTU4ZWJmNTc0MjVkNjgzNzcwODkxNjg1ZmRhYmQyYTgzN2JjOC4uMzI2ODcxNmY0
NDY5YzA5OTNmMjU5N2QwOWNiZTE1ODhlNmYyM2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKQEAgLTM5LDE0ICszOSwxMyBA
QCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsOwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtT
b2NrZXRTdHJlYW0+LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFdlYkNv
cmU6OlVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0
aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRp
b25BdWRpdFRva2VuJiYpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3Jl
YXRlKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0
aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRp
b25BdWRpdFRva2VuJiYpOwogICAgIH5OZXR3b3JrU29ja2V0U3RyZWFtKCk7CiAKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAt
NjcsNyArNjYsNyBAQCBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtIDogcHVibGljIFJlZkNvdW50
ZWQ8TmV0d29ya1NvY2tldFN0cmVhbT4sIHB1YmxpYyBJUEM6OgogICAgIElQQzo6Q29ubmVjdGlv
biogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsOwogCi0gICAgTmV0d29ya1NvY2tldFN0cmVhbShX
ZWJDb3JlOjpVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBh
cnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAgICBOZXR3b3JrU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwg
SVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYp
OwogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIElQQzo6Q29ubmVjdGlvbiYgbV9j
b25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDlm
MGM2Yjg2YjQyMGY0NTViZmZjMmRlNmI5NGViZTdjOGJlMTQzYTAuLmQ0NTQzZjIzNWI5MDQ3YzU3
MDljODFmZmRhMzg2MWM1OWY3ODQyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmgKQEAgLTM2LDcgKzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENv
bnRlbnRTZWN1cml0eVBvbGljeTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTEsNyArNTAsNyBAQCBjbGFzcyBQaW5nTG9hZCBm
aW5hbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQaW5nTG9hZD4sIHByaXZhdGUgTmV0d29ya0Rh
dGFUYXNrQwogcHJpdmF0ZToKICAgICB+UGluZ0xvYWQoKTsKIAotICAgIGNvbnN0IFdlYkNvcmU6
OlVSTCYgY3VycmVudFVSTCgpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgY3VycmVudFVSTCgpIGNv
bnN0OwogICAgIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5
UG9saWN5KCkgY29uc3Q7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgKaW5kZXggMmNhNjYyNWQxYzAwZTZkMjdkNTI1ODg2MTcyMWZjYzUwYjUzNGI1
NS4uOWQxNzAzNzg5NGY1YjUxMTAzOGRlMDZiYWQwOWRkN2Y2MzRjN2YxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtOTAsOCArOTAsOCBAQCBjbGFzcyBXZWJTV1Nl
cnZlckNvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1
YmxpYyBJUEM6OgogICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJyZXIpOwogICAgIHZvaWQgY2FuY2VsRmV0Y2goV2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllcik7CiAKLSAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lz
dHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7Ci0gICAg
dm9pZCBnZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlv
bih1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwp
OworICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyh1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9y
aWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpOwogCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYpOwogICAgIHZvaWQgdW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCmluZGV4IDA2MTk1YjhhZDE5NDYxOGNkZmY2ZmZlOWQ1NzVlOWYzYTQ0
NGE3ZWQuLjI5NGJkNTk5ZDQwYmNjMjExODRkOTdkN2FkNTBjYmM4YzMwMWEyODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYs
OSArMzYsOSBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlckNvbm5lY3Rpb24gewogCiAgICAgRGlk
UmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSBrZXkpCiAKLSAgICBNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVn
aXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFdlYkNvcmU6OlVSTCBjbGllbnRVUkwpCi0gICAgV2hlblJl
Z2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJ
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwg
V2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKLSAgICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNl
cnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKKyAg
ICBNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1
ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmln
aW4sIFVSTCBjbGllbnRVUkwpCisgICAgV2hlblJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNl
cnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKKyAgICBHZXRSZWdp
c3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlm
aWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNs
aWVudFVSTCkKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSBkYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyPiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyKQogICAgIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgppbmRleCBkODZhYjYwOTM5Nzc2NWM1YmJmYTc5MzU0YTExNWI3Yzc0OTFkMjdl
Li42MTE2OTJkMTk0OTk3MmZlYjFlM2NlODViODhiODU4NTU5ZmU2NGIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uIHsKICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
IGNsaWVudElkZW50aWZpZXIpOwogICAgIE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVz
dElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0
aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbSh1aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7Ci0gICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6VVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgV2Vi
Q29yZTo6VVJMIHJlc3BvbnNlVVJMLCBTdHJpbmcgbWltZVR5cGUpOworICAgIFNldFNjcmlwdFJl
c291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBz
Y3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVSTCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVUeXBl
KTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNw
cAppbmRleCA1NWEwOGJjMDhjMDhkMWQ4YThhYzg2MjI4ZGY2NTAxYTkxNTlhODdhLi5iMTliZmQx
MDA1NzI2NzY0MjE2NzAwZjViMzg0YzZiZWVmMTQzMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBA
IC0xMzQsNyArMTM0LDcgQEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3IKIH0KIAogCi12b2lkIEVu
Z2luZTo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJiB1cmwsIFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJl
Y29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFVSTCYmIHVybCwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIGZyb20oc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyLCB1cmwgPSBX
VEZNb3ZlKHVybCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkg
bXV0YWJsZSB7CiAgICAgICAgIGVuZ2luZS5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVy
LCBXVEZNb3ZlKHVybCksIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2
b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4sIHVpbnQ2NF90IHVwZGF0ZQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmll
dmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsLCBS
ZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMo
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIHJlYWRDYWNoZShjYWNoZUlkZW50aWZpZXIsIFt1cmwgPSBXVEZNb3Zl
KHVybCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuaAppbmRleCA4YzJlOGNjZTE0ZDgxMjkwOTdmNzFhYzIxZTI2ZTM2MWZkNmQ2ODMzLi43ZTE0
MjI1YmVlNTBhOTc3YjVmYzkyNTE0NjU0NjdiYjM0ZDgzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAg
LTY1LDcgKzY1LDcgQEAgY2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPEVuZ2luZT4gewogICAgIHN0YXRpYyB2b2lkIHJlbW92ZShQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CiAgICAgc3RhdGljIHZvaWQgcmV0
cmlldmVDYWNoZXMoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCB1aW50
NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0Nh
bGxiYWNrJiYpOwogCi0gICAgc3RhdGljIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lv
bklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHJldHJp
ZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwm
JiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICBzdGF0
aWMgdm9pZCBwdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMg
dm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVl
cnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrJiYpOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgY2xhc3MgRW5naW5lIDogcHVibGljIFJl
ZkNvdW50ZWQ8RW5naW5lPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEVuZ2luZT4gewogICAgIHZv
aWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
LCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIFN0
cmluZyByZXByZXNlbnRhdGlvbigpOwogCi0gICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
c0NhbGxiYWNrJiYpOwogICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGRl
bGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5oCmluZGV4IDdmYjZlMDgxOGVjMjQxNTk1ZjgyYzY3NzJjODRiNWUzMjBjZjc2
MTUuLjg5ODAxOGU0ZWEzN2ZiMTJmYjYzMmIxOTJmZThhZWExYzcxNDY1NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RydWN0IFJlY29yZEluZm9ybWF0aW9u
IHsKIAogICAgIHVpbnQ2NF90IHNpemUgeyAwIH07CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsOwor
ICAgIFVSTCB1cmw7CiAgICAgYm9vbCBoYXNWYXJ5U3RhciB7IGZhbHNlIH07CiAgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gdmFyeUhlYWRlcnM7CiB9OwpAQCAtNjYsNyArNjYsNyBAQCBjbGFz
cyBDYWNoZSB7CiAgICAgY29uc3QgU3RyaW5nJiB1bmlxdWVOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV91bmlxdWVOYW1lOyB9CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUgIT0gU3RhdGU6OlVuaW5pdGlhbGl6ZWQ7IH0KIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRz
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2Fs
bGJhY2smJik7CisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiwgV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICBXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6Q2FjaGVJbmZvIGluZm8oKSBjb25zdCB7IHJldHVybiB7IG1faWRlbnRpZmllciwg
bV9uYW1lIH07IH0KIAogICAgIHZvaWQgcHV0KFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnND
YWxsYmFjayYmKTsKQEAgLTk0LDggKzk0LDggQEAgY2xhc3MgQ2FjaGUgewogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPERlY29kZWRSZWNvcmQ+IGRlY29kZVJlY29yZEhlYWRlcihjb25zdCBOZXR3
b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29yZCYpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxSZWNv
cmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAg
IGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGNvbnN0OworICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29y
ZHNGcm9tVVJMKGNvbnN0IFVSTCYpOworICAgIGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlv
bj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIFJlY29yZEluZm9ybWF0
aW9uJiBhZGRSZWNvcmQoVmVjdG9yPFJlY29yZEluZm9ybWF0aW9uPiosIGNvbnN0IFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQmKTsKIAogICAgIHZvaWQgc3RvcmVSZWNvcmRzKFZlY3Rv
cjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24uY3BwCmluZGV4IDI5YjM4YjFhMmUzZWJiNDExNzcyYTJhZWFhYmRjZWZiM2Nk
NGRlNzMuLmM2MmNiM2FiODU3NDhhNWIwYzg5ZTU3YjE1Y2YxYzA1NmQ4NzEyM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IHJlcQogICAgIH0pOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb246OnJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlVSTCYmIHVybCkKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVS
ZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMJiYgdXJsKQogewogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInJldHJpZXZlUmVjb3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hlICUi
IFBSSXU2NCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7CiAgICAgRW5naW5l
OjpyZXRyaWV2ZVJlY29yZHMoc2Vzc2lvbklELCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJs
KSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNz
aW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAppbmRleCBiYzg4MGY1ZWI1ODlhZWRjZmVlNDVh
MjM0MTgzOGIyNTNkYmE2MTA0Li42YTNkZGM2M2QyYTA4ODVjYTRjNTE0MjVlNTZjM2E1Y2M5Njgz
YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApAQCAtNTQsNyArNTQsNyBA
QCBjbGFzcyBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdAogICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCByZW1vdmVSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyKTsKICAgICB2b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmV0cmlldmVD
YWNoZXNJZGVudGlmaWVyLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgdWludDY0X3QgdXBkYXRl
Q291bnRlcik7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29y
ZTo6VVJMJiYpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJik7
CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKTsKICAgICB2b2lk
IHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3JkPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCmluZGV4IGUzMTA3ZTIwMTQ2ZDU5MDAzYjIwNmIxZGVkZjZmODYzY2I4YzU1ZWUu
LjYwZTM5YWEyYzQwNWRjYzk4YWFhOTIwMDk0YWUxMGQ4ZWFiNTQzYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDcgKzMxLDcg
QEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiB7CiAgICAgQ2xlYXJN
ZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbik7CiAg
ICAgRW5naW5lUmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllcik7CiAKLSAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwgdXJsKTsKKyAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBVUkwgdXJsKTsKICAgICBEZWxldGVNYXRjaGluZ1JlY29yZHMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3Ry
dWN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIFB1dFJlY29yZHMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZD4gcmVjb3JkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGYxNWFkNmJkMGFkYzhjNzM1OGMxYTk0OTk4MGQ4NDA5
ZTYyODMzYTQuLjAxN2FkNjNlMmM5ZWI3MzM0NWM1NzYxZDlhYTQ3YmRmZjY5ZTMzYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApA
QCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVO
b3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNs
YXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNw
cAppbmRleCBhMTU1ZTlmMmUzYWUxMzgxNDQzYTRhMGNlMGIyNDA3NTdlNGE2OWViLi5kMDY2YTg5
NWI5NDA1ODFkZWE4Y2MxM2JhNDQyMzQ1NzllNTZkZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGlj
cy5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VG
YWlsdXJlVG9EaWFnbm9zdGljS2V5KFVzZURlY2lzaW9uIGRlY2lzaW9uKQogCiB2b2lkIFN0YXRp
c3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hlZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29u
c3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVXNl
RGVjaXNpb24gZGVjaXNpb24pCiB7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1
ZXN0LnVybCgpOworICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAo
ZGVjaXNpb24gPT0gVXNlRGVjaXNpb246OlVzZSkgewogICAgICAgICBMT0coTmV0d29ya0NhY2hl
LCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIGlzIGluIHRoZSBj
YWNoZSBhbmQgaXMgdXNlZCIsIHdlYlBhZ2VJRCwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSk7CiAgICAgICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5sb2dEaWFnbm9z
dGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6Om5ldHdvcmtDYWNoZUtleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6
OnJldHJpZXZhbEtleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZTo6WWVzKTsKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFN0YXRp
c3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hlZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29u
c3QgS2V5JiBrZXksCiAKIHZvaWQgU3RhdGlzdGljczo6cmVjb3JkUmV2YWxpZGF0aW9uU3VjY2Vz
cyh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSBy
ZXF1ZXN0LnVybCgpOworICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBM
T0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6
ICVzIHdhcyBzdWNjZXNzZnVsbHkgcmV2YWxpZGF0ZWQiLCB3ZWJQYWdlSUQsIHJlcXVlc3RVUkwu
c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRv
bigpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRp
YWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29ya0NhY2hlS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0
aWNMb2dnaW5nS2V5czo6cmV2YWxpZGF0aW5nS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dn
aW5nUmVzdWx0UGFzcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZZXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdWJyZXNvdXJjZXNFbnRyeS5oCmluZGV4IGVmMjUyYTFjN2I5YzZiZDU2ODA5NzMwYzJkMDQ5
MzM1MzFmMDRjOWIuLjQzOTIxYTAwMjRlOTdkZDM2ZjBkMjIxODUxZWM0YWU5ODc2MWExNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3VicmVzb3VyY2VzRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKQEAgLTIzLDE1ICsyMywxNCBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29y
a0NhY2hlU3VicmVzb3VyY2VzRW50cnlfaAotI2RlZmluZSBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNV
TEFUSVZFX1JFVkFMSURBVElPTikKIAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CkBAIC01MCw3ICs0
OSw3IEBAIGNsYXNzIFN1YnJlc291cmNlSW5mbyB7CiAgICAgV2FsbFRpbWUgZmlyc3RTZWVuKCkg
Y29uc3QgeyByZXR1cm4gbV9maXJzdFNlZW47IH0KIAogICAgIGJvb2wgaXNUcmFuc2llbnQoKSBj
b25zdCB7IHJldHVybiBtX2lzVHJhbnNpZW50OyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0IHsgQVNTRVJUKCFtX2lzVHJhbnNpZW50KTsgcmV0
dXJuIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7IH0KKyAgICBjb25zdCBVUkwmIGZpcnN0UGFydHlG
b3JDb29raWVzKCkgY29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9maXJz
dFBhcnR5Rm9yQ29va2llczsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIHJl
cXVlc3RIZWFkZXJzKCkgY29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9y
ZXF1ZXN0SGVhZGVyczsgfQogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IHByaW9y
aXR5KCkgY29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9wcmlvcml0eTsg
fQogCkBAIC02NSw3ICs2NCw3IEBAIGNsYXNzIFN1YnJlc291cmNlSW5mbyB7CiAgICAgV2FsbFRp
bWUgbV9maXJzdFNlZW47CiAgICAgYm9vbCBtX2lzVHJhbnNpZW50IHsgZmFsc2UgfTsKICAgICBi
b29sIG1faXNTYW1lU2l0ZSB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fZmlyc3RQYXJ0
eUZvckNvb2tpZXM7CisgICAgVVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgV2ViQ29y
ZTo6SFRUUEhlYWRlck1hcCBtX3JlcXVlc3RIZWFkZXJzOwogICAgIFdlYkNvcmU6OlJlc291cmNl
TG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7CiB9OwpAQCAtMTA3LDQgKzEwNiwzIEBAIGNsYXNzIFN1
YnJlc291cmNlc0VudHJ5IHsKIH0gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNoZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQotI2VuZGlm
IC8vIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNw
cAppbmRleCA5NjYxNjhiNGUwNzgxMjQ4ZTU1NjgxZmY0Yjc3N2U2ZTE2MDMwOTQ1Li5iMWMwZmIx
MTFiZDViZDYxMTQ4OTk4YjRiOTdhN2YwZjNlM2NhMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQu
Y3BwCkBAIC0zNiw5ICszNiw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0JyaWdhbmQuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtODEsOCArODEsNyBAQCBSZXF1ZXN0OjpSZXF1ZXN0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogUmVxdWVzdDo6b3BlcmF0b3Ig
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QKIHsKLSAgICBXZWJDb3JlOjpVUkxQYXJz
ZXIgcGFyc2VyKHVybCk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocGFy
c2VyLnJlc3VsdCgpLCByZWZlcnJlciwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3k+KHBvbGljeSkpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KFVSTCh7IH0sIHVybCksIHJlZmVycmVyLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3RDYWNoZVBvbGljeT4ocG9saWN5KSk7CiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0
aG9kKG1ldGhvZCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpCkBA
IC0xMTgsOCArMTE3LDcgQEAgUmVzcG9uc2U6OlJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiBSZXNwb25zZTo6b3BlcmF0b3IgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSgpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcih1
cmwpOwotICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UocGFyc2VyLnJlc3Vs
dCgpLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUpOworICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKHsgfSwgdXJsKSwgbWltZVR5cGUs
IGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICByZXNwb25zZS5zZXRIVFRQ
VmVyc2lvbih2ZXJzaW9uKTsKICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMp
OwogICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KHJlYXNvbik7CkBAIC0xNTIsOCArMTUw
LDcgQEAgRXJyb3I6OkVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQog
CiBFcnJvcjo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpIGNvbnN0CiB7Ci0gICAg
V2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcihmYWlsaW5nVVJMKTsKLSAgICBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBwYXJzZXIucmVzdWx0KCksIGxvY2Fs
aXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBl
Pih0eXBlKSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcihkb21haW4sIGVycm9y
Q29kZSwgVVJMKHsgfSwgZmFpbGluZ1VSTCksIGxvY2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlPih0eXBlKSk7CiAKICAgICByZXR1cm4g
ZXJyb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1
cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDI3Njg5ZWUzYjcyMzk4
ZDg1MTIwZjczNjM1N2MwMDcyNDIyODllOGUuLmQ1NjVhNGVhMzc3MWU0NjM3OTczZjcxOWNhMTk4
YTI4YzU1N2UwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0zMSwxMiArMzEs
MTIgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZUxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3
b3JrQ2FwdHVyZVJlc291cmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL01ENS5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBSZXNvdXJjZSogTWFuYWdlcjo6ZmluZEJlc3RG
dXp6eU1hdGNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogICAg
IFJlc291cmNlKiBiZXN0TWF0Y2ggPSBudWxscHRyOwogICAgIGludCBiZXN0U2NvcmUgPSBrTWlu
TWF0Y2g7Ci0gICAgY29uc3QgYXV0byYgcmVxdWVzdFBhcmFtZXRlcnMgPSBXZWJDb3JlOjpVUkxQ
YXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkpOworICAgIGNvbnN0IGF1dG8m
IHJlcXVlc3RQYXJhbWV0ZXJzID0gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0o
dXJsLnF1ZXJ5KCkpOwogICAgIGZvciAoYXV0byBpUmVzb3VyY2UgPSBsb3dlcjsgaVJlc291cmNl
ICE9IHVwcGVyOyArK2lSZXNvdXJjZSkgewogICAgICAgICBpbnQgdGhpc1Njb3JlID0gZnV6enlN
YXRjaFVSTHModXJsLCByZXF1ZXN0UGFyYW1ldGVycywgaVJlc291cmNlLT51cmwoKSwgaVJlc291
cmNlLT5xdWVyeVBhcmFtZXRlcnMoKSk7CiAgICAgICAgIC8vIFRPRE86IENvbnNpZGVyIGlnbm9y
aW5nIGFueSBtYXRjaGVzIDwgMCBhcyBiZWluZyB0b28gZGlmZmVyZW50LgpAQCAtMTY1LDcgKzE2
NSw3IEBAIFJlc291cmNlKiBNYW5hZ2VyOjpmaW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogLy8gVE9ETzogQ29udmVydCB0byBhbiBpbnRl
cmZhY2UgYmFzZWQgb24gUmVzb3VyY2VSZXF1ZXN0IHNvIHRoYXQgd2UgY2FuIGRvCiAvLyBkZWVw
ZXIgbWF0Y2hpbmcuCiAKLWludCBNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyhjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZv
cm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc291cmNlVVJMLCBj
b25zdCBXZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRl
cnMpCitpbnQgTWFuYWdlcjo6ZnV6enlNYXRjaFVSTHMoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBj
b25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBj
b25zdCBVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZv
cm0mIHJlc291cmNlUGFyYW1ldGVycykKIHsKICAgICAvLyBUT0RPOiBjb25zaWRlciByZXF1aXJp
bmcgdGhhdCBhbnkgdHJhaWxpbmcgc3VmZml4ZXMgKGUuZy4sICIuanMiLAogICAgIC8vICIucG5n
IiwgIi5jc3MiLCAiLmh0bWwiLCBldGMuKSBzaG91bGQgYmUgYW4gZXhhY3QgbWF0Y2guCkBAIC00
MTksNyArNDE5LDcgQEAgU3RyaW5nIE1hbmFnZXI6Omhhc2hUb1BhdGgoY29uc3QgU3RyaW5nJiBo
YXNoKQogICAgIHJldHVybiBwYXRoOwogfQogCi1TdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlp
bmdDb21tb25Eb21haW4oY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCitTdHJpbmcgTWFuYWdlcjo6
dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJu
IHVybC5wcm90b2NvbEhvc3RBbmRQb3J0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKaW5k
ZXggM2M2YjUwMTBkYTIzNDFlNjgyY2IxY2EyNDAxYTA2NjBmMzljNzQxYS4uYzM2ODE2YzlhODlh
MWM3ZWZhZDEwNGYxYjAzOTA4ODM2ZGNhN2YzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApA
QCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlSGFuZGxlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIu
aD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCkBAIC04Miw3ICs4Miw3IEBAIGNsYXNzIE1hbmFnZXIgewogICAgIFdlYkNvcmU6OkZpbGVI
YW5kbGUgb3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGUpOwogCiAgICAgU3RyaW5nIHJlcXVlc3RUb1BhdGgoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgc3RhdGljIFN0cmluZyB1cmxJZGVudGlmeWluZ0NvbW1v
bkRvbWFpbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBzdGF0aWMgU3RyaW5nIHVybElkZW50
aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgogICAgIE1hbmFnZXIo
KSA9IGRlZmF1bHQ7CkBAIC05MCw3ICs5MCw3IEBAIGNsYXNzIE1hbmFnZXIgewogCiAgICAgUmVz
b3VyY2UqIGZpbmRFeGFjdE1hdGNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwog
ICAgIFJlc291cmNlKiBmaW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7Ci0gICAgaW50IGZ1enp5TWF0Y2hVUkxzKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVx
dWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVxdWVz
dFBhcmFtZXRlcnMsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzb3VyY2VVUkwsIGNvbnN0IFdlYkNv
cmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNlUGFyYW1ldGVycyk7CisgICAg
aW50IGZ1enp5TWF0Y2hVUkxzKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpVUkxQ
YXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXF1ZXN0UGFyYW1ldGVycywgY29uc3QgVVJMJiByZXNv
dXJjZVVSTCwgY29uc3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBh
cmFtZXRlcnMpOwogCiAgICAgdm9pZCBsb2FkUmVzb3VyY2VzKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVy
ZVJlc291cmNlLmNwcAppbmRleCA3MDRjMGQ2YWQ0ZjY2YTBjM2NhYjNiYWYzZTk5NTYxZDg4ODRm
MDQ1Li5mM2RjMjNjNTcwNjk0ZWYzYmJmMjViYmJhMzIzNTFjZDgwZjc0MDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVzb3VyY2UuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlc291cmNlOjpSZXNvdXJj
ZShjb25zdCBTdHJpbmcmIGV2ZW50RmlsZVBhdGgpCiB7CiB9CiAKLWNvbnN0IFdlYkNvcmU6OlVS
TCYgUmVzb3VyY2U6OnVybCgpCitjb25zdCBVUkwmIFJlc291cmNlOjp1cmwoKQogewogICAgIGlm
ICghbV91cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIGF1dG8gZXZlbnRzID0gZXZlbnRTdHJlYW0o
KTsKQEAgLTUyLDggKzUyLDcgQEAgY29uc3QgV2ViQ29yZTo6VVJMJiBSZXNvdXJjZTo6dXJsKCkK
ICAgICAgICAgICAgIERFQlVHX0xPR19FUlJPUigiRXZlbnQgc3RyZWFtIGRvZXMgbm90IGhhdmUg
YSByZXF1ZXN0U2VudCBldmVudDogZmlsZSA9ICIgU1RSSU5HX1NQRUNJRklFUiwgREVCVUdfU1RS
KG1fZXZlbnRGaWxlUGF0aCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gcmVx
dWVzdFNlbnRFdmVudCA9IFdURjo6Z2V0PFJlcXVlc3RTZW50RXZlbnQ+KCpldmVudCk7Ci0gICAg
ICAgICAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKHJlcXVlc3RTZW50RXZlbnQucmVxdWVz
dC51cmwpOwotICAgICAgICAgICAgbV91cmwgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgICAg
ICBtX3VybCA9IFVSTCh7IH0sIHJlcXVlc3RTZW50RXZlbnQucmVxdWVzdC51cmwpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC02OCwxMCArNjcsMTAgQEAgY29uc3QgU3RyaW5nJiBSZXNvdXJjZTo6
dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oKQogICAgIHJldHVybiBtX3VybElkZW50aWZ5aW5n
Q29tbW9uRG9tYWluOwogfQogCi1XZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJl
c291cmNlOjpxdWVyeVBhcmFtZXRlcnMoKQorV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3Jt
IFJlc291cmNlOjpxdWVyeVBhcmFtZXRlcnMoKQogewogICAgIGlmICghbV9xdWVyeVBhcmFtZXRl
cnMpCi0gICAgICAgIG1fcXVlcnlQYXJhbWV0ZXJzID0gV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJz
ZVVSTEVuY29kZWRGb3JtKHVybCgpLnF1ZXJ5KCkpOworICAgICAgICBtX3F1ZXJ5UGFyYW1ldGVy
cyA9IFdURjo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHVybCgpLnF1ZXJ5KCkpOwog
CiAgICAgcmV0dXJuICptX3F1ZXJ5UGFyYW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJj
ZS5oCmluZGV4IDc1NzZjMGQ1ZTAwODQ4OTE2MmMxOGM5NjYwNGZlM2EzODdmMzllNWUuLmQ0OTNm
NGE0YTM1YWQ4ZWE2Y2RiMmRkOGUwMjVkNjkwYzU4OTI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVz
b3VyY2UuaApAQCAtMjksOSArMjksOSBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1cmVFdmVu
dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FwdHVyZSB7CkBAIC01
NSwxNiArNTUsMTYgQEAgY2xhc3MgUmVzb3VyY2UgewogcHVibGljOgogICAgIFJlc291cmNlKGNv
bnN0IFN0cmluZyYgZXZlbnRGaWxlUGF0aCk7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCgpOworICAgIGNvbnN0IFVSTCYgdXJsKCk7CiAgICAgY29uc3QgU3RyaW5nJiB1cmxJZGVudGlm
eWluZ0NvbW1vbkRvbWFpbigpOwotICAgIFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZv
cm0gcXVlcnlQYXJhbWV0ZXJzKCk7CisgICAgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3Jt
IHF1ZXJ5UGFyYW1ldGVycygpOwogICAgIEV2ZW50U3RyZWFtIGV2ZW50U3RyZWFtKCk7CiAKIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fZXZlbnRGaWxlUGF0aDsKLSAgICBXZWJDb3JlOjpVUkwgbV91
cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9t
YWluOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9y
bT4gbV9xdWVyeVBhcmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlVSTFBhcnNlcjo6
VVJMRW5jb2RlZEZvcm0+IG1fcXVlcnlQYXJhbWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
TmV0d29ya0NhcHR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGU1YWY0ZjgzZjFiNTAxYjhi
M2Q4YTFiYzU3YzlkNzM5MDVmYzk5MTcuLjgwYjE0MDM0NzdhNTM5YjZhMGQxY2JiOWE0ZWFiOGJl
NWZlM2RkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmCiAgICAgfQogICAgIAogICAgIC8vIFNob3VsZCBub3Qgc2V0IFJl
ZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBmcm9tIGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1
cmUgb25lLgotICAgIGlmIChtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90
b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChtX3Nob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJv
dG9jb2xJcygiaHR0cHMiKSAmJiBXVEY6OnByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIo
KSwgImh0dHBzIikpCiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAK
ICAgICBjb25zdCBhdXRvJiB1cmwgPSByZXF1ZXN0LnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmlu
ZGV4IDdmMThjMDU2ZjFhMDVkMmY5MDEwZTRhYjg3NTFlMTM0N2M4MmE2ZWIuLjI3MDU5MjVkODcz
MDhiOGEyYTY0NzAyOWRmZDc4Yzc2OTVmMWRkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTQ2
LDEyICs0NiwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVVUkxSZXNwb25zZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTM0OCw3ICszNDgsNyBAQCAtICh2b2lkKVVS
TFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAq
KXRhc2sgZGlkUmVjZQogICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9
PSBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgpKSB7CiAKICAg
ICAgICAgICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsIG5vblBlcnNpc3RlbnRDcmVkZW50aWFs
KGNyZWRlbnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRl
bnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwotICAgICAgICAgICAgICAgIFdlYkNvcmU6OlVSTCB1cmxU
b1N0b3JlOworICAgICAgICAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICAgICAgICAg
IGlmIChhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVz
Q29kZSgpID09IDQwMSkKICAgICAgICAgICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICAgICAgICAg
IGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IDQwMmVjMWRlMDE5NjJmMGNj
ZjQyMDQyOTU3MjM3OTFmN2M2NTcyYTAuLmY1Y2MxYzFlMGFjNmRhODQyOTJjNDhiNDcxYjA4Yzg3
YmYyOThlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWMubW0KQEAgLTIxNSwxMSArMjE1LDExIEBAIHN0YXRpYyB2b2lkIGNhcmJv
bldpbmRvd0hpZGRlbihXaW5kb3dSZWYgd2luZG93KQogc3RhdGljIGJvb2wgb3BlbkNGVVJMUmVm
KENGVVJMUmVmIHVybCwgaW50MzJfdCYgc3RhdHVzLCBDRlVSTFJlZiogbGF1bmNoZWRVUkwpCiB7
CiAgICAgU3RyaW5nIGxhdW5jaGVkVVJMU3RyaW5nOwotICAgIGlmICghUGx1Z2luUHJvY2Vzczo6
c2luZ2xldG9uKCkub3BlblVSTChXZWJDb3JlOjpVUkwodXJsKS5zdHJpbmcoKSwgc3RhdHVzLCBs
YXVuY2hlZFVSTFN0cmluZykpCisgICAgaWYgKCFQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5v
cGVuVVJMKFVSTCh1cmwpLnN0cmluZygpLCBzdGF0dXMsIGxhdW5jaGVkVVJMU3RyaW5nKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFsYXVuY2hlZFVSTFN0cmluZy5pc051bGwo
KSAmJiBsYXVuY2hlZFVSTCkKLSAgICAgICAgKmxhdW5jaGVkVVJMID0gV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCBsYXVuY2hlZFVSTFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7
CisgICAgICAgICpsYXVuY2hlZFVSTCA9IFVSTChVUkwoKSwgbGF1bmNoZWRVUkxTdHJpbmcpLmNy
ZWF0ZUNGVVJMKCkubGVha1JlZigpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zOTksNyAr
Mzk5LDcgQEAgc3RhdGljIE5TUnVubmluZ0FwcGxpY2F0aW9uICpyZXBsYWNlZE5TV29ya3NwYWNl
X2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0aW9uc18KICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmIChQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFdl
YkNvcmU6OlVSTCh1cmwpLnN0cmluZygpLCBhcmd1bWVudHMpKSB7CisgICAgaWYgKFBsdWdpblBy
b2Nlc3M6OnNpbmdsZXRvbigpLmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5n
KCksIGFyZ3VtZW50cykpIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgKmVycm9y
ID0gbmlsOwogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSVVSTC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCmlu
ZGV4IDdiMDFkMGU5MjA1NjI4Y2QzYzAwMmVmNTdlZjExZTgxNGRjY2NiOTEuLmJiZDQyM2JjZjU3
MTVlNGFkNzBiZjUyZGVmOGMyYzMwYzQxYmYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElVUkwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJM
LmgKQEAgLTIzLDMyICsyMywzMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViVVJMX2gKLSNkZWZpbmUgV2ViVVJMX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVj
dDo6VHlwZTo6VVJMPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxVUkw+IGNyZWF0ZShjb25z
dCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAgIHN0YXRpYyBSZWY8QVBJOjpVUkw+IGNyZWF0ZShj
b25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVVJMKHN0cmluZykpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8VVJMPiBjcmVhdGUo
Y29uc3QgVVJMKiBiYXNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgcmVsYXRpdmVVUkwpCisgICAg
c3RhdGljIFJlZjxBUEk6OlVSTD4gY3JlYXRlKGNvbnN0IEFQSTo6VVJMKiBiYXNlVVJMLCBjb25z
dCBXVEY6OlN0cmluZyYgcmVsYXRpdmVVUkwpCiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZVVS
TCk7CiAgICAgICAgIGJhc2VVUkwtPnBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0
byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPigqYmFzZVVSTC0+
bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0ZVVS
TCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQo
KSwgcmVsYXRpdmVVUkwpOwogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxT
dHJpbmcgPSBhYnNvbHV0ZVVSTC0+c3RyaW5nKCk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVVJMKFdURk1vdmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwg
YWJzb2x1dGVVUkxTdHJpbmcpKTsKICAgICB9CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CkBAIC01Niw3ICs1NSw3IEBAIGNsYXNzIFVSTCA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAKICAgICBjb25zdCBXVEY6
OlN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KIAotICAgIHN0YXRp
YyBib29sIGVxdWFscyhjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKKyAgICBzdGF0aWMgYm9v
bCBlcXVhbHMoY29uc3QgQVBJOjpVUkwmIGEsIGNvbnN0IEFQSTo6VVJMJiBiKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGEudXJsKCkgPT0gYi51cmwoKTsKICAgICB9CkBAIC0xMDYsMTMgKzEwNSwx
MyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewog
ICAgIHsKICAgICB9CiAKLSAgICBVUkwoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlVSTD4gcGFy
c2VkVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAgIFVSTChzdGQ6OnVuaXF1ZV9w
dHI8V1RGOjpVUkw+IHBhcnNlZFVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKICAgICAg
ICAgOiBtX3N0cmluZyhzdHJpbmcpCiAgICAgICAgICwgbV9wYXJzZWRVUkwoV1RGTW92ZShwYXJz
ZWRVUkwpKQogICAgIHsKICAgICB9CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNv
bnN0CisgICAgY29uc3QgV1RGOjpVUkwmIHVybCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJz
ZVVSTElmTmVjZXNzYXJ5KCk7CiAgICAgICAgIHJldHVybiAqbV9wYXJzZWRVUkw7CkBAIC0xMjIs
MTMgKzEyMSwxMSBAQCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OlVSTD4gewogICAgIHsKICAgICAgICAgaWYgKG1fcGFyc2VkVVJMKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJM
PihXZWJDb3JlOjpVUkwoKSwgbV9zdHJpbmcpOworICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6
bWFrZV91bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAg
ICBXVEY6OlN0cmluZyBtX3N0cmluZzsKLSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpVUkw+IG1fcGFyc2VkVVJMOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdURjo6
VVJMPiBtX3BhcnNlZFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gVVJMX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29u
dGVudFVSTFBhdHRlcm4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVu
dFVSTFBhdHRlcm4uaAppbmRleCA5YjVjN2Y2NmI0OGI4YTk2YmRkMmRjYmU4OWNhOTBhMTIzZDMw
NmFhLi42Njk5NWEwYTg4NTI2YmFjNTNhYjdkMWNjNTk2MTVhMzIwMjE5ZTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oCkBA
IC0yNyw4ICsyNyw4IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKIAotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC00Miw3ICs0Miw3
IEBAIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3Qo
KSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uaG9zdCgpOyB9CiAgICAgY29uc3QgV1RGOjpTdHJp
bmcmIHNjaGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5zY2hlbWUoKTsgfQogICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5pc1ZhbGlkKCk7IH07Ci0gICAg
Ym9vbCBtYXRjaGVzVVJMKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0dGVybi5tYXRjaGVzKFdlYkNvcmU6OlVSTCh7IH0sIHVybCkpOyB9CisgICAgYm9vbCBtYXRj
aGVzVVJMKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5t
YXRjaGVzKFdURjo6VVJMKHsgfSwgdXJsKSk7IH0KICAgICBib29sIG1hdGNoZXNTdWJkb21haW5z
KCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1hdGNoU3ViZG9tYWlucygpOyB9CiAKICAgICBj
b25zdCBXVEY6OlN0cmluZyYgcGF0dGVyblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVy
blN0cmluZzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAK
aW5kZXggNzM2ZTFmM2U2NjQ1Y2UwZWMyMTJmNmRiOWY4Nzg0M2Q1Y2QxM2RhNS4uMTQ5OTU2M2Uz
OWFlN2I5ODZkZTE3MzQ3Njc4ODVmNmFhZDkyOGQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJ
VVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRGF0YS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCmluZGV4IGI4YThhOTBiY2QzYzM0
NWNkNDc1NjUyNzczMTQzMmNmY2EwMTdjODcuLjhmMWZhOWFkNmUzNmU5OGFjNDEzZWJhOWVmOTU1
M2NhZDQwNjM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJM
UmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9u
c2UuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElVUkxSZXNwb25zZS5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQppbmRleCBkZjE5ODNhNjAxNTBkZDdlYWRiYWU4M2Qz
ODgyOGFiYWE3ODBlMGFlLi5iZDkxYTQ1YjA5YzMxNGVmZjM2MzA1MWNjYjg4MTViZGNiYjZkYjg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0KQEAgLTI4LDggKzI4
LDggQEAKIAogI2ltcG9ydCAiV0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS05TVVJMLmgiCi0jaW1w
b3J0IDxXZWJDb3JlL0NGVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNp
bXBvcnQgPHd0Zi9jZi9DRlVSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKQEAgLTU2LDcgKzU2LDcgQEAgV0tVUkxSZWYgV0tVUkxD
cmVhdGVXaXRoQ0ZVUkwoQ0ZVUkxSZWYgY2ZVUkwpCiAjZW5kaWYKIAogICAgIENTdHJpbmcgdXJs
Qnl0ZXM7Ci0gICAgV2ViQ29yZTo6Z2V0VVJMQnl0ZXMoY2ZVUkwsIHVybEJ5dGVzKTsKKyAgICBX
VEY6OmdldFVSTEJ5dGVzKGNmVVJMLCB1cmxCeXRlcyk7CiAKICAgICByZXR1cm4gV2ViS2l0Ojp0
b0NvcGllZFVSTEFQSSh1cmxCeXRlcy5kYXRhKCkpOwogfQpAQCAtNjksNSArNjksNSBAQCBDRlVS
TFJlZiBXS1VSTENvcHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVm
IFVSTFJlZikKICAgICAvLyBVVEYtOCB3aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0
IFdlYktpdCBjbGllbnRzIG1pZ2h0IGV4cGVjdC4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gV2Vi
S2l0Ojp0b0ltcGwoVVJMUmVmKS0+c3RyaW5nKCkudXRmOCgpOwotICAgIHJldHVybiBXZWJDb3Jl
OjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpLCAw
KS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5sZW5ndGgoKSwgMCkubGVha1JlZigpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCA5ZmU1
OTU3MjA0Y2M3OTkzZWJjMDg4ODhiZDFmODkzMWVhNGViMDAxLi4zMWY2MWNlN2VhZjhiOWE5OWNi
YWFkN2RkMDUzNzVkYTgxYTI1YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUg
IldlYktpdFVSSVJlcXVlc3QuaCIKIAogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRl
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPGdsaWIv
Z2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVz
cG9uc2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9u
c2UuY3BwCmluZGV4IGQyNDU1ODkzNmNmNDYwNzU1NTcxMmExNmM5NGZkNDYxZWMwOThhMjMuLjI4
N2VlZmQ0ZDljY2Y0MDAzNjczZGU5N2I4OGQzYzJkNjNjMjM0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAKQEAgLTIxLDgg
KzIxLDggQEAKICNpbmNsdWRlICJXZWJLaXRVUklSZXNwb25zZS5oIgogCiAjaW5jbHVkZSAiV2Vi
S2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291
cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tCmluZGV4IGRjMGY5MGYwZjM4NTFhYmYxMDA0ODRiYTU3M2FlNGFmOGU4
MGIyMzIuLmJjMmZlNDllMzBhYTM4MmI0MjNiNTRkYjJiYWQ3MmJiN2Y5N2VlNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTMwLDggKzMw
LDggQEAKIAogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVS
ZXNvdXJjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ2LDggKzQ2LDggQEAgUmVmPFdlYkFyY2hpdmVSZXNvdXJj
ZT4gV2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBh
cmMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJBcmNoaXZlUmVzb3VyY2UoV1RGTW92ZShh
cmNoaXZlUmVzb3VyY2UpKSk7CiB9CiAKLVdlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJl
c291cmNlKEFQSTo6RGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKQotICAgIDogbV9hcmNoaXZlUmVz
b3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS0+
Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBVUkwp
LCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nLCBTdHJpbmcoKSkpCitXZWJBcmNoaXZlUmVzb3VyY2U6
OldlYkFyY2hpdmVSZXNvdXJjZShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZykKKyAgICA6
IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNpemUoKSksIFdURjo6VVJMKFdURjo6VVJMKCks
IHVybCksIE1JTUVUeXBlLCB0ZXh0RW5jb2RpbmcsIFN0cmluZygpKSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKaW5kZXggNDMzNjM4
Yjk0OGRmMDk3OGFiM2MxYmQxYmExYTNiNzQxZGRmYTZhZi4uZDg2ZGM0YWI3NTBiZjgxY2Y5ZTM2
NDNhZTY2OTRmY2IzMjQ3ZjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbi5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9D
b2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiB7CiAg
ICAgU3RyaW5nIHRpdGxlOwogICAgIGJvb2wgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRp
YWxzIHsgZmFsc2UgfTsKICAgICBib29sIGlzQXV0b2ZpbGxhYmxlVXNlcm5hbWVGaWVsZCB7IGZh
bHNlIH07Ci0gICAgV2ViQ29yZTo6VVJMIHJlcHJlc2VudGluZ1BhZ2VVUkw7CisgICAgVVJMIHJl
cHJlc2VudGluZ1BhZ2VVUkw7CiAgICAgV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWUgYXV0b2Zp
bGxGaWVsZE5hbWUgeyBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Tm9uZSB9OwogICAgIFN0
cmluZyBwbGFjZWhvbGRlcjsKICAgICBTdHJpbmcgbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbQppbmRleCAwMTg4Zjc0Nzk4MmE5NDBhNDhhYjg2Zjgy
ODhhYWIwMDZkZmQxMWQ3Li41MTliOWQ4M2VkNzY2MWRjNmQ4N2Q2MjllN2M4Yzg1NWIwZWYyYmJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW0KQEAgLTI2
LDEzICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFz
LmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvQ0ZVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogQGltcGxlbWVudGF0aW9uIE5T
VVJMIChXS0V4dHJhcykKIAogKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzoo
Y29uc3QgU3RyaW5nJilzdHJpbmcKQEAgLTUwLDcgKzQ4LDcgQEAgKyAoaW5zdGFuY2V0eXBlKV93
ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcgcmVsYXRpdmVUb1VSTDoo
TlNVUkwKIC0gKFN0cmluZylfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nCiB7CiAgICAgQ1N0
cmluZyBvcmlnaW5hbERhdGE7Ci0gICAgZ2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXNl
bGYsIG9yaWdpbmFsRGF0YSk7CisgICAgV1RGOjpnZXRVUkxCeXRlcygoX19icmlkZ2UgQ0ZVUkxS
ZWYpc2VsZiwgb3JpZ2luYWxEYXRhKTsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChvcmln
aW5hbERhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9u
U3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IDlkY2Y2
ZjJlMWQ3MTUzM2FkNjQ1ZGY2M2RiZjI0MjI2NTc4NGI4YWYuLjUzY2UyZDFhZjA2ZDI1MWM4MDU1
YmQyYWQ1MjdmYWE0Njc2ZWU5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
c3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBA
IC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBz
dHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGUgewogc3RydWN0IFNlc3Npb25TdGF0ZSB7CiAgICAg
QmFja0ZvcndhcmRMaXN0U3RhdGUgYmFja0ZvcndhcmRMaXN0U3RhdGU7CiAgICAgdWludDY0X3Qg
cmVuZGVyVHJlZVNpemU7Ci0gICAgV2ViQ29yZTo6VVJMIHByb3Zpc2lvbmFsVVJMOworICAgIFVS
TCBwcm92aXNpb25hbFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBkZjk3MzUw
ZTAzMGM5ODIzNWJhM2JhZTRhZDVjYjA1NjVjOTRlNjc1Li5hOTE5NjkyZjY5YzIzYjcxMzM1NjY1
OWFkMzA0NWQwM2YwZmU5OWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uaCIKIAogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTA0
LDggKzEwNCw4IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9j
dW1lbnQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYKICAgICBpZiAobWFpbkZyYW1lU3Rh
dGUuc3RhdGVPYmplY3REYXRhIHx8IG90aGVyTWFpbkZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRh
KQogICAgICAgICByZXR1cm4gbWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlciA9
PSBvdGhlck1haW5GcmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXI7CiAKLSAgICBXZWJD
b3JlOjpVUkwgdXJsID0gV2ViQ29yZTo6VVJMKHsgfSwgbWFpbkZyYW1lU3RhdGUudXJsU3RyaW5n
KTsKLSAgICBXZWJDb3JlOjpVUkwgb3RoZXJVUkwgPSBXZWJDb3JlOjpVUkwoeyB9LCBvdGhlck1h
aW5GcmFtZVN0YXRlLnVybFN0cmluZyk7CisgICAgVVJMIHVybCA9IFVSTCh7IH0sIG1haW5GcmFt
ZVN0YXRlLnVybFN0cmluZyk7CisgICAgVVJMIG90aGVyVVJMID0gVVJMKHsgfSwgb3RoZXJNYWlu
RnJhbWVTdGF0ZS51cmxTdHJpbmcpOwogCiAgICAgaWYgKCh1cmwuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkgfHwgb3RoZXJVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpICYmIGVxdWFsSWdub3Jp
bmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBvdGhlclVSTCkpCiAgICAgICAgIHJldHVybiBtYWlu
RnJhbWVTdGF0ZS5kb2N1bWVudFNlcXVlbmNlTnVtYmVyID09IG90aGVyTWFpbkZyYW1lU3RhdGUu
ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGU1MDdiZjg3NTliMTE3ODkwODZlNTBkN2YwNmM1N2Rk
ODM4MGE0ZjYuLjM5NWVhNzU4ZDAzYzFhMDcxNjBhNmIzNWZmZWRhZTI4MmY5YjgwYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzcs
MTEgKzc3LDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3Jt
YXRpb25NYXRyaXguaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVXNlclN0eWxlU2hlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAzZWViNDQyZTMyN2RjNzkx
MmI0M2M0OTYzNmE2NTc0Y2Y5YmM0NmNlLi45NTQ1MGY0MTFjN2ZiYTAzYzFlZDc2MTA1OWZkYmEz
M2JhMDJlNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaApAQCAtOTMsNyArOTMsNiBAQCBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3Ry
YWludHM7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YTsKIGNsYXNzIFRyYW5zZm9ybWF0
aW9uTWF0cml4OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBD
YWNoZVF1ZXJ5T3B0aW9uczsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViRXJyb3JzLmgKaW5kZXggMjdkMTRlMzFiMzEwODY2YzZmMTM2ZTNhZDhhYWZmODhlMjNi
Mzg0Mi4uN2Q2MDBjNmQyM2I1NWRjYzM5NjMwOTkwNDA3Y2U3NDQ0NDZjYjQ4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViRXJyb3JzLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAg
LTQ4LDE4ICs0NywxOCBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRG
aWx0ZXJFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlcwogV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6
OlVSTCYpOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFVSTCYp
OwogCiAjaWYgVVNFKFNPVVApCi1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29y
a0Vycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7CitXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFVSTCYsIGNvbnN0IFdU
Rjo6U3RyaW5nJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlV
c2VyRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KEdUSykKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBXVEY6OlN0cmluZyYpOwotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwcmludGVy
Tm90Rm91bmRFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwmKTsKLVdlYkNvcmU6OlJlc291cmNlRXJy
b3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgV2ViQ29yZTo6VVJMJik7CitXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcm
KTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgcHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgVVJM
Jik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGNvbnN0
IFVSTCYpOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IDE3OWNhNGJlMzdiZWQwZTNk
Y2NiNWQzMjYzZjNmMDY5YjA1MjU1NWIuLmMxY2ZjY2YwNWY4NDIwYWMzYjljMjRkYzU3Zjk4NWY3
MjI2MzdjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vZGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVm
ZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCBl
M2YzMDU2NjY4NjMwYTRiNWFmZWI5ODRjOWRlNGRlZGU1MDE1YzBiLi4yZWQ3NzQ0YjA4ZGY4ZmJl
OWFjNzJmZDQ3NDc2NGUxY2U2ZDcyNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9B
cmd1bWVudENvZGVyc0NGLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvQ0ZVUkxFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZp
bGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvY2YvQ0ZVUkxF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKICNpZiBV
U0UoRk9VTkRBVElPTikKQEAgLTU5OSw4ICs1OTksOCBAQCB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBDRlVSTFJlZiB1cmwpCiAgICAgaWYgKGJhc2VVUkwpCiAgICAgICAgIGVuY29kZShl
bmNvZGVyLCBiYXNlVVJMKTsKIAotICAgIFVSTENoYXJCdWZmZXIgdXJsQnl0ZXM7Ci0gICAgZ2V0
VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7CisgICAgV1RGOjpVUkxDaGFyQnVmZmVyIHVybEJ5dGVz
OworICAgIFdURjo6Z2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7CiAgICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXJs
Qnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IGRhdGFSZWZl
cmVuY2U7CiB9CkBAIC02MzEsNyArNjMxLDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgUmV0YWluUHRyPENGVVJMUmVmPiYgcmVzdWx0KQogICAgIH0KICNlbmRpZgogCi0gICAgcmVz
dWx0ID0gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KHVybEJ5dGVzLmRhdGEoKSksIHVybEJ5dGVzLnNpemUoKSwgYmFzZVVSTC5nZXQoKSk7CisgICAg
cmVzdWx0ID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4odXJsQnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6ZSgpLCBiYXNlVVJMLmdldCgp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJF
cnJvcnNHdGsuY3BwCmluZGV4IGU5ZDkyMzkzYzdkNWM2YjNhYmYzZjlmNDRhMDdmNDFhMDA4NDYw
ZTguLjZhMGRmNTRjMzc0NDVkZjY0Y2M1ZDNiNGJiNjEwZWMxZjNjMDY1ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5j
bHVkZSAiV2ViRXJyb3JzLmgiCiAKICNpbmNsdWRlICJBUElFcnJvci5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4IDNkMDg2ODlmZTE3NmRkN2E2MTcyYTEzN2MwNTgzZGNl
YTczNzJmNjMuLmMxYWI4NWZkNDQxYmMxMjgwNzU0NjYwOTQwOTY4ZjczNmE4ZjY2YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uUmVjdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTYwLDggKzYwLDggQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uIHsKICAgICBib29sIHByZXZlbnRUZXh0SW50ZXJhY3Rpb24geyBmYWxz
ZSB9OwogI2VuZGlmCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBhZGp1c3RlZFBvaW50Rm9yTm9k
ZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzOwotICAgIFdlYkNvcmU6OlVSTCB1cmw7Ci0gICAgV2Vi
Q29yZTo6VVJMIGltYWdlVVJMOworICAgIFVSTCB1cmw7CisgICAgVVJMIGltYWdlVVJMOwogICAg
IFN0cmluZyB0aXRsZTsKICAgICBTdHJpbmcgaWRBdHRyaWJ1dGU7CiAgICAgV2ViQ29yZTo6SW50
UmVjdCBib3VuZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SFRUUENvb2tpZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENv
b2tpZVN0b3JlLmgKaW5kZXggYmIwZDFjYjYzZDQxZjJlN2JjMzZiYTlmNWQ1ZGFlNWU0MDgxMTU5
Mi4uOTBmZGU3ZDA0YjI3MzA1YTQ2NDM2MTQxYmRiNzdlMTAwNGJkZDA1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LWNsYXNzIFVSTDsKIHN0cnVjdCBDb29raWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcAppbmRleCA2OGI4N2Q4ODdmZTYzNDJmMGY1MWM5NDMx
MmVhMGY0YmNlMTJiZjZhLi45MzJiNjI2Nzc3ZjBhZjBhYjU0ZjY0N2JkODFiZmY0Nzg0MzljN2I4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBA
IC02OSw3ICs2OSw3IEBAIHZvaWQgTmF2aWdhdGlvbjo6c2V0Q3VycmVudFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgUHJvY2Vzc0lkZW50aWZpZXIKICAgICBtX2N1cnJlbnRSZXF1
ZXN0UHJvY2Vzc0lkZW50aWZpZXIgPSBwcm9jZXNzSWRlbnRpZmllcjsKIH0KIAotdm9pZCBOYXZp
Z2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3Zv
aWQgTmF2aWdhdGlvbjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV1RGOjpVUkwmIHVybCkK
IHsKICAgICBpZiAobV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4u
bGFzdCgpICE9IHVybCkKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZCh1cmwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKaW5kZXggOTdlZTk2ZGRk
NmU0N2ExOWFjZGMyZjI4NDhmN2E3NjI5N2JkZDFmMi4uZWQwMjk0ZDgyODdlY2Q4NjZiYTZlOTNi
ODFjNTNmMGI0NGI4NDlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbi5oCkBAIC03Nyw4ICs3Nyw4IEBAIGNsYXNzIE5hdmlnYXRpb24gOiBwdWJsaWMgT2Jq
ZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb24+IHsKICAgICBXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tSXRlbS5nZXQo
KTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVMb2FkVHlwZT4gYmFja0Zvcndh
cmRGcmFtZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5
cGU7IH0KIAotICAgIHZvaWQgYXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV2ViQ29yZTo6VVJM
Jik7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlVSTD4gdGFrZVJlZGlyZWN0Q2hhaW4oKSB7IHJldHVy
biBXVEZNb3ZlKG1fcmVkaXJlY3RDaGFpbik7IH0KKyAgICB2b2lkIGFwcGVuZFJlZGlyZWN0aW9u
VVJMKGNvbnN0IFdURjo6VVJMJik7CisgICAgVmVjdG9yPFdURjo6VVJMPiB0YWtlUmVkaXJlY3RD
aGFpbigpIHsgcmV0dXJuIFdURk1vdmUobV9yZWRpcmVjdENoYWluKTsgfQogCiAgICAgdm9pZCBz
ZXRXYXNVc2VySW5pdGlhdGVkKGJvb2wgdmFsdWUpIHsgbV93YXNVc2VySW5pdGlhdGVkID0gdmFs
dWU7IH0KICAgICBib29sIHdhc1VzZXJJbml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1Vz
ZXJJbml0aWF0ZWQ7IH0KQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uPiB7CiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OwogICAgIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXI+IG1fY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllcjsKLSAgICBW
ZWN0b3I8V2ViQ29yZTo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CisgICAgVmVjdG9yPFdURjo6VVJM
PiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9vbCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07
CiAgICAgYm9vbCBtX3Nob3VsZEZvcmNlRG93bmxvYWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9p
c1JlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGVlY2JmZjRhMmEzZWQ5MGY0NDQwOGNjZDZjYWYy
OWRlOThkOTUyZDcuLjMwODcxYzdhMDk1NTRkNWNiOGE3ZWQ0YWI4MmNiYjE0OGNkZTc4NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24u
aApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkFQSVVzZXJJbml0aWF0ZWRBY3Rpb24uaCIK
ICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5hdmln
YXRpb25BY3Rpb24gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmln
YXRpb25BY3Rpb24+CiAgICAgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRGcmFtZU5hbWU7IH0KIAogICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVz
dDsgfQotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVy
biAhbV9vcmlnaW5hbFVSTC5pc051bGwoKSA/IG1fb3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJs
KCk7IH0KKyAgICBjb25zdCBXVEY6OlVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAh
bV9vcmlnaW5hbFVSTC5pc051bGwoKSA/IG1fb3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7
IH0KIAogICAgIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZTsgfQogICAgIFdl
YktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX25h
dmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVyczsgfQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBO
YXZpZ2F0aW9uQWN0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpO
YXZpZ2F0aW9uQWN0aW9uPgogICAgIE5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX21haW5GcmFtZU5hdmlnYXRpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToK
LSAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1l
SW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1l
TmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5p
dGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFp
bkZyYW1lTmF2aWdhdGlvbikKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJj
ZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpT
dHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywg
UmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbiwgQVBJOjpO
YXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICAgICA6IG1fc291cmNlRnJhbWUo
c291cmNlRnJhbWUpCiAgICAgICAgICwgbV90YXJnZXRGcmFtZSh0YXJnZXRGcmFtZSkKICAgICAg
ICAgLCBtX3RhcmdldEZyYW1lTmFtZSh0YXJnZXRGcmFtZU5hbWUpCkBAIC03OSw3ICs3OSw3IEBA
IGNsYXNzIE5hdmlnYXRpb25BY3Rpb24gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6
OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+CiAgICAgewogICAgIH0KIAotICAgIE5hdmlnYXRpb25B
Y3Rpb24oV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBBUEk6OkZyYW1lSW5mbyogc291cmNlRnJhbWUsIEFQSTo6RnJhbWVJbmZvKiB0YXJnZXRGcmFt
ZSwgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmFsVVJM
LCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYg
dXNlckluaXRpYXRlZEFjdGlvbikKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNv
dXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RG
OjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5r
cywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKICAg
ICAgICAgOiBOYXZpZ2F0aW9uQWN0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBz
b3VyY2VGcmFtZSwgdGFyZ2V0RnJhbWUsIHRhcmdldEZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0
KSwgb3JpZ2luYWxVUkwsIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVk
QWN0aW9uKSwgbnVsbHB0cikKICAgICB7CiAgICAgfQpAQCAtODksNyArODksNyBAQCBjbGFzcyBO
YXZpZ2F0aW9uQWN0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpO
YXZpZ2F0aW9uQWN0aW9uPgogICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IG1fdGFyZ2V0
RnJhbWVOYW1lOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAg
ICBXZWJDb3JlOjpVUkwgbV9vcmlnaW5hbFVSTDsKKyAgICBXVEY6OlVSTCBtX29yaWdpbmFsVVJM
OwogCiAgICAgYm9vbCBtX3Nob3VsZE9wZW5BcHBMaW5rczsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggNmFkODMzYTYwOTk1
Yjg5OWExYjExYzcxYWU5OWM0OTU3YWMyNzI5MC4uOGU5NDRiN2RlYzRkOWU1ZGU3NGE3NDFjMmFh
ZWQ3OTk4MzIwMDM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbkNsaWVudC5oCkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25DbGll
bnQgewogCiAgICAgdmlydHVhbCBSZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktp
dDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gbnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQ
dHI8U3RyaW5nPiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxTdHJpbmc+JiBj
aGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIHsgcmV0dXJuIG51bGxwdHI7IH0K
KyAgICB2aXJ0dWFsIFJlZlB0cjxTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3Qg
UmVmUHRyPFN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV1RGOjpVUkwmKSB7IHJldHVy
biBudWxscHRyOyB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmlu
ZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQpAQCAtMTE0LDcgKzExNCw3
IEBAIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgewogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAg
ICAgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24o
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5n
PiYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVu
dFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV1RGOjpVUkwmJiwg
VmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiYpIHsgfTsKICAgICAK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2aXJ0dWFsIGJvb2wgZGlkRmFp
bFRvSW5pdGlhbGl6ZVBsdWdJbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFy
eSYpIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgTmF2aWdhdGlv
bkNsaWVudCB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2aXJ0dWFsIHZvaWQg
d2ViR0xMb2FkUG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdM
TG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZXNv
bHZlV2ViR0xMb2FkUG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQorICAgIHZpcnR1YWwgdm9pZCB3
ZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVdl
YkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6VVJMJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQogI2VuZGlmCiAgICAgCiAgICAgdmlydHVhbCBi
b29sIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIGJvb2wgaW5QYWdlQ2FjaGUsIE9iamVjdCop
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCmluZGV4IGJhMjkwZTA4OTdiOWM3MjdhZjY5NjgyZjI4ZmYzMzQ1MTk1ZDkxNjIuLjgzZGEy
OWNjNTJmYzg3MzA5Y2ZjNjVmNDZkNzAxMTBmMTI5NDY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC0xNDAsNyArMTQwLDcgQEAgY2xhc3MgVUlDbGll
bnQgewogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBEYXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmVE
YXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBX
VEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBEYXRhJikg
eyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGlubmVkU3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTY3JpcHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
Y3JpcHQuY3BwCmluZGV4IDc1ODRlNjMxMjEwMmI1YjBjNTAwN2VhOWI4OGNhYzc4M2I5ZTE0NmMu
LjQwMjJlZmRjYjk3YTUwOWY2ZTBlZjg5NWRjYjY3Mzg2NmFhOWY1NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
IAogbmFtZXNwYWNlIEFQSSB7CiAKLVdlYkNvcmU6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVu
aXF1ZVVSTCgpCitXVEY6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAg
ICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJVXNlclNjcmlwdC5oCmluZGV4IDE3YTQwOTA5ODk3Zjc0NGI1MDVhMDQ5MmFjNTA4
YzQwNTBiMTMxYzUuLjAzMzMyODIwYjE2MDExNDkxNDAzNjE4YjYzN2YzM2RhODE0YjE4YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaApAQCAtMjMsOCAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgQVBJVXNlclNjcmlwdF9oCi0jZGVmaW5lIEFQSVVzZXJTY3JpcHRfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxk
LmgiCkBAIC0zNSw3ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU2NyaXB0
IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyU2NyaXB0PiwgcHVi
bGljIElkZW50aWZpZWQ8VXNlclNjcmlwdD4gewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3Jl
OjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKKyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVV
bmlxdWVVUkwoKTsKIAogICAgIHN0YXRpYyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6
OlVzZXJTY3JpcHQgdXNlclNjcmlwdCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAg
ICB7CkBAIC01NSw1ICs1NCwzIEBAIGNsYXNzIFVzZXJTY3JpcHQgZmluYWwgOiBwdWJsaWMgT2Jq
ZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVzZXJTY3JpcHQ+LCBwdWJsaWMgSWRlCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8vIEFQSVVzZXJTY3JpcHRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKaW5kZXggMWQ1OTVi
YjE1ODhkOWY3ZDVkNDhmZDkyMWNkMWRkOTY2YjNmODZhZi4uM2VhNDYxZmUxYTE1NmM2YTlkNTg5
NTg0MDM3ZmUzODdjMjkwN2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBB
UEkgewogCi1XZWJDb3JlOjpVUkwgVXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkK
K1dURjo6VVJMIFVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3Rh
dGljIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKaW5kZXggZDg1NmY3YTUyZjliNTA0ZTBmYTQyM2VhOWEz
YjZlMTU3MTQ1MWVkZS4uNzViYjk1YWZlYWM4ZjhmMWU4MjIzMzVmMjkzZTk4Mzg3YjVkNzYzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgK
QEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIEFQSVVzZXJTdHlsZVNoZWV0X2gKLSNkZWZpbmUgQVBJVXNlclN0eWxlU2hl
ZXRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJB
UElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0zNSw3ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewog
CiBjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6
VHlwZTo6VXNlclN0eWxlU2hlZXQ+LCBwdWJsaWMgSWRlbnRpZmllZDxVc2VyU3R5bGVTaGVldD4g
ewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsK
KyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKIAogICAgIHN0YXRpYyBS
ZWY8VXNlclN0eWxlU2hlZXQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5
bGVTaGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1ICs1
NCwzIEBAIGNsYXNzIFVzZXJTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2Jq
ZWN0OjpUeXBlOjpVc2VyU3R5bGVTaGVldD4sIHB1CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkK
LQotI2VuZGlmIC8vIEFQSVVzZXJTdHlsZVNoZWV0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5k
ZXggNmU3OTY2MjU1MmI5ZjY4MDUyMDI5NGViYjlkNzRlYmFiZDgzMjY1MC4uNGEwZmZjNDJlNTk0
MWMzMDZiY2ZmYmY4OGNlMTVhY2M3MDk5YjVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKQEAg
LTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZmls
ZVBhdGhzRnJvbUZpbGVVUkxzKGNvbnN0IEFQSTo6QXJyYXkmIGZpbGVVUkxzKQogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEFQSTo6VVJMKiBhcGlVUkwg
PSBmaWxlVVJMcy5hdDxBUEk6OlVSTD4oaSk7CiAgICAgICAgIGlmIChhcGlVUkwpCi0gICAgICAg
ICAgICBmaWxlUGF0aHMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7CisgICAgICAgICAgICBmaWxl
UGF0aHMudW5jaGVja2VkQXBwZW5kKFVSTChVUkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5
c3RlbVBhdGgoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZpbGVQYXRoczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGNjMmRmOWI1NzFhMTE3OGVjZjU3ZjZk
ZTZmYWEzOGRhZTVhYzYxMTAuLjJjYjk2YTMyNTBkZDNkMGM0YTdhMTM0YzliOWM4YTY4MjAyZTFh
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ5LDcg
KzI0OSw3IEBAIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmCiAKIHZvaWQgV0tQYWdlTG9hZFBsYWlu
VGV4dFN0cmluZ1dpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxh
aW5UZXh0U3RyaW5nUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7Ci0gICAgbG9hZFN0cmlu
ZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBibGFua1VSTCgp
LnN0cmluZygpLCB1c2VyRGF0YVJlZik7CisgICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRl
eHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIHVz
ZXJEYXRhUmVmKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVm
IHBhZ2VSZWYsIFdLRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YVJlZikKQEAgLTE0NzMsNyArMTQ3Myw3
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAKICAgICAgICAgICAgICAgICBhdXRvIHVzZXJJ
bml0aWF0ZWRBY3Rpdml0eSA9IHBhZ2UucHJvY2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShu
YXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAg
ICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3VyY2VG
cmFtZUluZm8tPnJlcXVlc3QoKS51cmwoKSwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKLSAgICAg
ICAgICAgICAgICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rp
b246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZv
LnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwg
V2ViQ29yZTo6VVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVk
QWN0aXZpdHkpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBB
UEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRh
KSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUo
cmVzb3VyY2VSZXF1ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2Vy
SW5pdGlhdGVkQWN0aXZpdHkpKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXBpV2luZG93RmVh
dHVyZXMgPSBBUEk6OldpbmRvd0ZlYXR1cmVzOjpjcmVhdGUod2luZG93RmVhdHVyZXMpOwogCkBA
IC0xOTQ1LDcgKzE5NDUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAg
bV9jbGllbnQucnVuTW9kYWwodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9s
ZGVyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VS
TCwgQVBJOjpEYXRhJiBkYXRhKSBmaW5hbAorICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5E
b3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5n
VVJMLCBBUEk6OkRhdGEmIGRhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcikKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yMTg1LDcgKzIxODUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0
aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQog
ICAgICAgICAgICAgcmV0dXJuIEFQSTo6RGF0YTo6Y3JlYXRlKG1hc3RlcktleS5kYXRhKCksIG1h
c3RlcktleS5zaXplKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5n
PiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1
bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5n
ZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIG92ZXJyaWRlCisgICAgICAgIFJlZlB0
cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgdW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJp
bmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYgdXJsKSBvdmVycmlkZQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAobV9jbGllbnQuY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZykKICAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50
LmNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodG9BUEkoJnBhZ2UpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VHcm91cC5jcHAKaW5kZXggMzkwZTEyMDc0N2VhZTg5Y2ZkOWZlZTY5ZGFjZWNiNmRl
MDc5NWVjNS4uMDM3NzQxMGVhN2U2N2U2YjA5MTBjZmJjMDVhOWIzMmY1OGNiNDNlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcApAQCAtNzcsNyAr
NzcsNyBAQCB2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQoV0tQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwUmVmLCBXS1N0cmluZ1JlZiBzb3VyYwogICAgIGF1dG8gd2hpdGVsaXN0ID0gdG9J
bXBsKHdoaXRlbGlzdGVkVVJMUGF0dGVybnMpOwogICAgIGF1dG8gYmxhY2tsaXN0ID0gdG9JbXBs
KGJsYWNrbGlzdGVkVVJMUGF0dGVybnMpOwogCi0gICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+
IHVzZXJTdHlsZVNoZWV0ID0gQVBJOjpVc2VyU3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0IHsgc291cmNlLCAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXZWJDb3Jl
OjpibGFua1VSTCgpIDogV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5n
KSksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJp
bmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxT
dHJpbmc+KCksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdl
YkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1h
bFdvcmxkKCkpOworICAgIFJlZjxBUEk6OlVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCA9
IEFQSTo6VXNlclN0eWxlU2hlZXQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IHNv
dXJjZSwgKGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChV
UkwoKSwgYmFzZVVSTFN0cmluZykpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVj
dG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5n
VmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMo
aW5qZWN0ZWRGcmFtZXMpLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJOjpVc2Vy
Q29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKIAogICAgIHRvSW1wbChwYWdlR3JvdXBSZWYp
LT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVl
dC5nZXQoKSk7CiB9CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRVc2VyU2Ny
aXB0KFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tTdHJpbmdSZWYgc291cmNlUmVmCiAg
ICAgYXV0byB3aGl0ZWxpc3QgPSB0b0ltcGwod2hpdGVsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAg
YXV0byBibGFja2xpc3QgPSB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgCi0g
ICAgYXV0byB1cmwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJM
KCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIGF1
dG8gdXJsID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiAgVVJM
KFVSTCgpLCBiYXNlVVJMU3RyaW5nKTsKICAgICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2VyU2Ny
aXB0ID0gQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURk1v
dmUoc291cmNlKSwgV1RGTW92ZSh1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5n
VmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3Ry
aW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1l
KGluamVjdGlvblRpbWUpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFt
ZXMpIH0sIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgdG9JbXBs
KHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQodXNl
clNjcmlwdC5nZXQoKSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcAppbmRleCA2N2E1NDIzZWE1ZWQ1N2ExZThiZjlkYWQ4MzIwZTA0ZGJhZjczMWI0Li4z
ODVkY2JjZDg2Mzc2ODYyNjcyZjZlODQ3MDRkNTdkZWY3ODI1YmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAK
QEAgLTQxLDggKzQxLDggQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAj
aW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3Jl
Z2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURhdGFT
dG9yZUdldFR5cGVJRCgpCiB7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2Rl
KFdLCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc3RvcmUtPnNldFByZXZhbGVu
dFJlc291cmNlRm9yRGVidWdNb2RlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7
CisgICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5k
bGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogfQpA
QCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xh
c3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBzdG9yZS0+c2V0TGFzdFNlZW4oV2ViQ29yZTo6VVJMKFdlYkNvcmU6
OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25k
cyB9LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBzdG9yZS0+c2V0TGFzdFNl
ZW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsg
c2Vjb25kcyB9LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0xMjEsMTEgKzEyMSwxMSBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YQogICAgIH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAg
c3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5k
bGVyXSB7CisgICAgICAgIHN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0p
OwogICAgIGVsc2UKLSAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFs
ZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGNvbnRleHQpOwogICAgICAgICB9KTsKIH0KQEAgLTEzOSwxMSArMTM5LDExIEBAIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dl
YnNpdGVEYXRhU3RvcmVSZWYKICAgICB9CiAKICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3Jl
LT5zZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKKyAgICAgICAgc3RvcmUtPnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlcl0gewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAg
IH0pOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2Vi
Q29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJl
dmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRleHQpOwogICAgICAgICB9KTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUt
PmlzUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2
YWxlbnRSZXNvdXJjZSkgeworICAgIHN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShi
b29sIGlzUHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNQcmV2YWxlbnRS
ZXNvdXJjZSwgY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzdG9y
ZS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKKyAgICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVz
b3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2Fs
bGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAt
MTk1LDcgKzE5NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0
ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXS1dlYnNpdGVEYXRhU3RvCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgc3RvcmUtPmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihX
ZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YnJlc291cmNlSG9z
dCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIpIHsKKyAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNT
dWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0
KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3Vy
Y2VVbmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXIsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihXS1dlYnNp
dGVEYXRhU3RvcmVSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aXNSZWdp
c3RlcmVkQXNTdWJGcmFtZVVuZGVyKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQs
IGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgeworICAgIHN0b3Jl
LT5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChz
dWJGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJh
bWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVk
QXNTdWJGcmFtZVVuZGVyKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzUmVnaXN0ZXJlZEFzU3ViRnJh
bWVVbmRlciwgY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdL
V2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5p
c1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdU
bykgeworICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNh
bGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgewogICAgICAgICBjYWxs
YmFjayhpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNvbnRleHQpOwogICAgIH0pOwogfQpA
QCAtMjM1LDExICsyMzUsMTEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
SGFzSGFkVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZgogICAgIH0KIAogICAg
IGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPmxvZ1VzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpV
UkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICBzdG9yZS0+bG9nVXNlckludGVyYWN0
aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250
ZXh0KTsKICAgICAgICAgfSk7CiAgICAgZWxzZQotICAgICAgICBzdG9yZS0+Y2xlYXJVc2VySW50
ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3Rv
cmUtPmNsZWFyVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiB9CkBAIC0yNTIsNyArMjUy
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJh
Y3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2td
KGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKSB7CisgICAgc3RvcmUtPmhhc0hhZFVzZXJJbnRl
cmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2Fs
bGJhY2soaGFzSGFkVXNlckludGVyYWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTI2
Myw3ICsyNjMsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZh
dGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcgogICAgIGlmICghc3RvcmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhlcmVkKFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUp
OworICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgdmFsdWUpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlz
U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNT
dGF0aXN0aWNzR3JhbmRmYXRoZXJlZEZ1bmN0aW9uIGNhbGxiYWNrKQpAQCAtMjc0LDcgKzI3NCw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBzdG9yZS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShi
b29sIGlzR3JhbmRmYXRoZXJlZCkgeworICAgIHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24o
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2Fs
bGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRm
YXRoZXJlZCwgY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
KFdLV2Vic2l0ZURhdGFTdG8KICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzdG9yZS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkp
OworICAgIHN0b3JlLT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BG
cmFtZUhvc3QpCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGEKICAg
ICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCkt
PnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQpAQCAt
MzAzLDcgKzMwMyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvCiAgICAgaWYgKCFzdG9yZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5z
dHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7
CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKQEAgLTMxMiw3ICsz
MTIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhUwogICAgIGlmICghc3RvcmUpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZy
b20oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RS
ZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmco
KSkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKQEAgLTMyMSw3ICszMjEs
NyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZFRvKS0+c3RyaW5nKCkpKTsKKyAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRv
KFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpKTsKIH0KIAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20o
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tT
dHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdL
V2Vic2l0ZURhdGFTdG9yCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIHN0b3JlLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3Ry
aW5nKCkpKTsKKyAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0K
aW5kZXggYTgwNmJkZWMyZTJkNDgyM2IyZjFlOTJlZDEzM2U3MTM2NWRlZjY2NC4uYzg1ODAzM2Fl
NTkxYjNhMjIzOWIwMWYxYjliMGYzOWZkZmJiNDBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMzAsMTAg
KzMwLDEwIEBACiAKICNpbXBvcnQgIkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKICNpbXBvcnQg
PFdlYkNvcmUvQ29va2llLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vh
a09iakNQdHIuaD4KIAogc3RhdGljIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb3JlQ29va2ll
c1RvTlNDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb3JlQ29va2llcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3Jp
cHQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1t
CmluZGV4IDljZjY2ODFhYWIzOTFjMzViNjM3OTA3YjExMTA4NmY4Mjc5NzZkNWEuLjhlMGM3MjEy
ODY4MjgyMTE5ZjJmODlmMjk1MDY1YWY0ZDJmZWEwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQpAQCAtOTUsNyArOTUsNyBAQCAt
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rp
b25UaW1lOihXS1VzZXJTY3JpcHRJbgogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBl
cjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmlu
Zyhzb3VyY2UpLCBXZWJDb3JlOjpVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0
b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3Qp
LCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBm
b3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3Jl
OjpJbmplY3RJbkFsbEZyYW1lcyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29y
bGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0
PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFz
c29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6
dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6
OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVz
ZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCAzMWYyYTkzNmQ5YWY5MWY5ZTBiZmI5NjZlYTBi
ZmFkZmM5OTg5MDVmLi4wN2FlNzg0Yjc1MzNjMjNmNmNkNjRhMDU2NTk0NGFjNTViNDM0NjBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtNDQsOCArNDQsOCBAQAogI2ltcG9ydCAiX1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCiAjaWYgUExBVEZP
Uk0oSU9TKQpAQCAtNDc4LDcgKzQ3OCw3IEBAIC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjoo
aWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAgICAg
aWYgKFtXS1dlYlZpZXcgaGFuZGxlc1VSTFNjaGVtZTp1cmxTY2hlbWVdKQogICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBp
cyBhIFVSTCBzY2hlbWUgdGhhdCBXS1dlYlZpZXcgaGFuZGxlcyBuYXRpdmVseSIsIHVybFNjaGVt
ZV07CiAKLSAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5
YmVDYW5vbmljYWxpemVTY2hlbWUodXJsU2NoZW1lKTsKKyAgICBhdXRvIGNhbm9uaWNhbFNjaGVt
ZSA9IFdURjo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOwog
ICAgIGlmICghY2Fub25pY2FsU2NoZW1lKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBub3QgYSB2YWxpZCBVUkwg
c2NoZW1lIiwgdXJsU2NoZW1lXTsKIApAQCAtNDkwLDcgKzQ5MCw3IEBAIC0gKHZvaWQpc2V0VVJM
U2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBm
b3JVUkxTY2hlCiAKIC0gKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJG
b3JVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCiB7Ci0gICAgYXV0byBjYW5vbmljYWxT
Y2hlbWUgPSBXZWJDb3JlOjpVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNj
aGVtZSk7CisgICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVD
YW5vbmljYWxpemVTY2hlbWUodXJsU2NoZW1lKTsKICAgICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggYzY0OWZmNmNiY2VhNWEx
ZGE0NWYzNjBiZTUzOWM3ZGJjNDkyODMyNi4uNTA2ZmI1YmY2NzRmYzNhZDk2ZWUzYTAyOWI3YWNk
M2NmOGEzNDA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0zOCw5ICszOCw5IEBACiAjaW1wb3J0ICJX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0
YUZldGNoT3B0aW9uLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oIgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYktpdC9TZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5p
ZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlv
bk1hbmlmZXN0Lm1tCmluZGV4IDNlZGQ4NTMxYTA5OGIwNGYyNDM3ZDdkZTViODU0MGYzZjYwZWNm
NzIuLmRmZWQwYTliZTE3NTM3MjJiNjU0MDc3MWM4N2IzNjVhYjZkZjA5MWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlv
bk1hbmlmZXN0Lm1tCkBAIC01NCw5ICs1NCw5IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENv
ZGVyOihOU0NvZGVyICopYURlY29kZXIKICAgICAgICAgV1RGOjpTdHJpbmcobmFtZSksCiAgICAg
ICAgIFdURjo6U3RyaW5nKHNob3J0TmFtZSksCiAgICAgICAgIFdURjo6U3RyaW5nKGRlc2NyaXB0
aW9uKSwKLSAgICAgICAgV2ViQ29yZTo6VVJMKHNjb3BlVVJMKSwKKyAgICAgICAgVVJMKHNjb3Bl
VVJMKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6
RGlzcGxheT4oZGlzcGxheSksCi0gICAgICAgIFdlYkNvcmU6OlVSTChzdGFydFVSTCkKKyAgICAg
ICAgVVJMKHN0YXJ0VVJMKQogICAgIH07CiAKICAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6QXBwbGljYXRpb25NYW5pZmVzdD4oc2VsZiwgV1RGTW92ZShjb3JlQXBwbGlj
YXRpb25NYW5pZmVzdCkpOwpAQCAtODMsNyArODMsNyBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2Rl
cjooTlNDb2RlciAqKWFDb2RlcgogCiArIChfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopYXBwbGlj
YXRpb25NYW5pZmVzdEZyb21KU09OOihOU1N0cmluZyAqKWpzb24gbWFuaWZlc3RVUkw6KE5TVVJM
ICopbWFuaWZlc3RVUkwgZG9jdW1lbnRVUkw6KE5TVVJMICopZG9jdW1lbnRVUkwKIHsKLSAgICBh
dXRvIG1hbmlmZXN0ID0gV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2Uo
V1RGOjpTdHJpbmcoanNvbiksIFdlYkNvcmU6OlVSTChtYW5pZmVzdFVSTCksIFdlYkNvcmU6OlVS
TChkb2N1bWVudFVSTCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBXZWJDb3JlOjpBcHBsaWNhdGlv
bk1hbmlmZXN0UGFyc2VyOjpwYXJzZShXVEY6OlN0cmluZyhqc29uKSwgVVJMKG1hbmlmZXN0VVJM
KSwgVVJMKGRvY3VtZW50VVJMKSk7CiAgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpBcHBsaWNhdGlv
bk1hbmlmZXN0OjpjcmVhdGUobWFuaWZlc3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IGU2ZjA5
MGZmNWQ0MTM3YzY1ODljZWU4ZmNhODM1MDEzYjhhNmRlM2QuLjYxNDUyMzJhMGQ4ZTdmMWE4ZDcy
ZGFkNzEzNzdiYTVjNzRiYjg0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTcwLDcgKzcwLDcgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJh
bWVPbmx5OihCT09MKWZvck1haW4KICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBj
YW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3QgY29u
c3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/CiAg
ICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5
bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIHsgV2ViQ29yZTo6VVJMKCksIFdURjo6U3Ry
aW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3Ry
aW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5Qmxh
Y2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5
IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZl
bCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2Jq
ZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpT
dHJpbmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9T
dHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lC
bGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxl
dmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1
cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwCmluZGV4IGE3MjlmYWI5YTc5ZTFkY2QxNTRmNDMwOTFkMTdmNGVkYzgwZGYz
YjQuLjY3NGE1ZGIwNDNjOGE2MGYzNjIwYWE3YmEwMThjMWY5ODVlZGY4YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMzQs
MTAgKzM0LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogLy8gRm9yIG1ldGhvZHMg
dGhhdCBhcmUgbWVhbnQgdG8gc3VwcG9ydCBBUEkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgLSBzaG91
bGQgbm90IGJlIGNhbGxlZCBpbnRlcm5hbGx5CiAjZGVmaW5lIEFTU0VSVF9OT1RfU1lOQ19USFJF
QUQoKSBBU1NFUlQoIW1fc3luY1RocmVhZFJ1bm5pbmcgfHwgIUlTX0lDT05fU1lOQ19USFJFQUQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENv
b2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Q29va2llTWFuYWdlci5jcHAKaW5kZXggZGU4MmZkYWI1YzdmOTUzZmE1YmNhZjQwN2Q5YzY2Y2Ix
ODUyMjdlMy4uN2E5NDI5MTlkZGY4YzRmMmEzYjE2ZGE3NjcwMTRiMmMyYzE1NGZhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2ll
TWFuYWdlci5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdl
cl9nZXRfY29va2llcyhXZWJLaXRDb29raWVNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBnY2hhcgog
CiAgICAgLy8gQ29va2llcyBhcmUgcmVhZC93cml0dGVuIGZyb20vdG8gdGhlIHNhbWUgU1FMaXRl
IGRhdGFiYXNlIG9uIGRpc2sgcmVnYXJkbGVzcwogICAgIC8vIG9mIHRoZSBwcm9jZXNzIHdlIGFj
Y2VzcyB0aGVtIGZyb20sIHNvIGp1c3QgdXNlIHRoZSBmaXJzdCBwcm9jZXNzIHBvb2wuCi0gICAg
cHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0
Q29va2llcyhzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpm
cm9tVVRGOCh1cmkpKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYgY29va2llcywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIHBy
b2Nlc3NQb29sc1swXS0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENv
b2tpZXMoc2Vzc2lvbklELCBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSksIFt0YXNr
ID0gV1RGTW92ZSh0YXNrKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMs
IENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yICE9IENhbGxi
YWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKICAgICAgICAgICAgIC8vIFRoaXMgY2FuIG9ubHkgaGFw
cGVuIGluIGNhc2VzIHdoZXJlIHRoZSB3ZWIgcHJvY2VzcyBpcyBub3QgYXZhaWxhYmxlLAogICAg
ICAgICAgICAgLy8gY29uc2lkZXIgdGhlIG9wZXJhdGlvbiAiY2FuY2VsbGVkIiBmcm9tIHRoZSBw
b2ludCBvZiB2aWV3IG9mIHRoZSBjbGllbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRl
eCBjZDAyNmU0ZjhlOTFhN2FiZmIxOWJjYzMwYjBhMTIzNThmMjdkZTUwLi4zN2U2Y2NhMGNlYmNl
OTE0NzMwZTNjNmQ0MjVjNWZlZjc3ZmI0ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAK
QEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0RW5jb2RpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGds
aWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGli
L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvV1RGR1R5cGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAzYmNjMjEyMzY3ODU5
MzZhNzcxMjk3ZTZlMzk4ZDI4MGRmYjZiODAyLi44ODMzNmIzZGM0Njg0OTg4YWM3N2QxNjlkYTZh
NTk1ZTYxZTU5ZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5j
bHVkZSAiV2ViS2l0U2VjdXJpdHlPcmlnaW4uaCIKIAogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5
T3JpZ2luUHJpdmF0ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogLyoqCkBAIC0xMTAsNyAr
MTEwLDcgQEAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3
X2Zvcl91cmkoY29uc3QgZ2NoYXIqIHVyaSkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCh1
cmksIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CisgICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3Jp
Z2luQ3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBTdHJp
bmc6OmZyb21VVEY4KHVyaSkpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDAyNzU0MzEyN2FlZTFi
MDg2ZDAzNjE1MWQxMThjZmM3OTY2NmE0MmUuLjk2ZjllZTExODJhMjQyM2I5MTYzZGMzYWYwODIx
NmIzZTkxODliNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgVUlDbGllbnQgOiBw
dWJsaWMgQVBJOjpVSUNsaWVudCB7CiAgICAgdm9pZCBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94
eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZvPiYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmIHdp
bmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbAogICAgIHsKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0
aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFj
dGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICBXZWJLaXROYXZp
Z2F0aW9uQWN0aW9uIG5hdmlnYXRpb25BY3Rpb24oQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVh
dGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIGZyYW1lSW5mby5wdHIoKSwgbnVsbHB0
ciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFdlYkNvcmU6OlVSTCB7
IH0sIGZhbHNlLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpKTsKKyAgICAgICAgV2Vi
S2l0TmF2aWdhdGlvbkFjdGlvbiBuYXZpZ2F0aW9uQWN0aW9uKEFQSTo6TmF2aWdhdGlvbkFjdGlv
bjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm8ucHRyKCks
IG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBVUkwgeyB9
LCBmYWxzZSwgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKSk7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKG1fd2ViVmlldywgd2luZG93
RmVhdHVyZXMsICZuYXZpZ2F0aW9uQWN0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3Qu
Y3BwCmluZGV4IDkxNjc0YWMyODhmN2U3OGY0NTFlOTU5M2QzYTU1NDhmZjU5ODg4OWYuLjA3YjU4
YWQzMjNkNTQ1OGM5MDM2NjNkYjgzMGU5NGJlN2U1ZDg4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3Qu
Y3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvV1RGR1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmlu
ZGV4IDBmYTRhMThmODljOGM1MWE0NTQwNzc4ZjVhZTI3YmVhODdkN2I1ZjEuLjIzNDg1OTY2M2Qx
ZjJjNzgwODk4ZjA2MGY0MDE0OTg4ZTc4NmI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC02NiwxMiArNjYsMTIgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGpzYy9K
U0NDb250ZXh0UHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SlNET01FeGNlcHRpb25IYW5kbGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8u
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dU
RkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTI2NDcsNyArMjY0Nyw3IEBAIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcGxhaW5fdGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hh
ciogcGxhaW5UCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwocGxhaW5UZXh0KTsKIAotICAgIGdldFBhZ2Uod2Vi
VmlldykubG9hZERhdGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwbGFpblRl
eHQpLCBwbGFpblRleHQgPyBzdHJsZW4ocGxhaW5UZXh0KSA6IDAgfSwgInRleHQvcGxhaW4iX3Ms
ICJVVEYtOCJfcywgYmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5s
b2FkRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBsYWluVGV4dCksIHBs
YWluVGV4dCA/IHN0cmxlbihwbGFpblRleHQpIDogMCB9LCAidGV4dC9wbGFpbiJfcywgIlVURi04
Il9zLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBiYmQ1MTZlNzI5NjIzMzdiZGRm
ZWNkMGM1NmQzOTgxNDgzM2Q4YTc0Li5iN2U2MzMwZWFlYjJlMjAyMmU2MjNmM2E2OGVjMWJjMTdh
YTM3NzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
CkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA3ODBhMTVlOTZkM2Mz
NjI0NmJiNWQ1YTQxYzcxMjdiMmFiZGQxMzFjLi4yZjA2NjA4NmQ5OTJmYzMwZmFmNmM3OTQwYWNl
ZjJmZGZjYzg1M2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDUsMTEg
KzEwNSwxMSBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJ
KGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbgogCiAgICAgbV9zdGF0ZSA9IFN0YXRl
OjpBY3RpdmF0aW5nOwogCi0gICAgV2ViQ29yZTo6VVJMIG9yaWdpbmF0aW5nVVJMKFdlYkNvcmU6
OlVSTCgpLCBvcmlnaW5hdGluZ1VSTFN0cmluZyk7CisgICAgVVJMIG9yaWdpbmF0aW5nVVJMKFVS
TCgpLCBvcmlnaW5hdGluZ1VSTFN0cmluZyk7CiAKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBs
aW5rSWNvblVSTHM7CisgICAgVmVjdG9yPFVSTD4gbGlua0ljb25VUkxzOwogICAgIGZvciAoY29u
c3QgYXV0byYgbGlua0ljb25VUkxTdHJpbmcgOiBsaW5rSWNvblVSTFN0cmluZ3MpCi0gICAgICAg
IGxpbmtJY29uVVJMcy5hcHBlbmQoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBsaW5rSWNv
blVSTFN0cmluZykpOworICAgICAgICBsaW5rSWNvblVSTHMuYXBwZW5kKFVSTChVUkwoKSwgbGlu
a0ljb25VUkxTdHJpbmcpKTsKIAogICAgIHBsYXRmb3JtU2hvd1BheW1lbnRVSShvcmlnaW5hdGlu
Z1VSTCwgbGlua0ljb25VUkxzLCBwYXltZW50UmVxdWVzdCwgW3RoaXNdKGJvb2wgcmVzdWx0KSB7
CiAgICAgICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmF0aW5nKTsKQEAgLTIyNCw3
ICsyMjQsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5jZWxQYXlt
ZW50U2Vzc2lvbigpCiAgICAgZGlkUmVhY2hGaW5hbFN0YXRlKCk7CiB9CiAKLXZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50
KGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVChtX21lcmNoYW50VmFsaWRhdGlvblN0YXRl
ID09IE1lcmNoYW50VmFsaWRhdGlvblN0YXRlOjpJZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5LmgKaW5kZXggMDg1MDE5ZGEwNmUzMmZiMGY0ZWM1ODk5MTUzNTQ4NmZlYmE3ZjhkYS4uZWRl
N2E3MGNmMjEzNTk0ODgwYTY4ZjUwZGE3Y2Y5Y2YxODU0NjZkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5oCkBAIC00Myw3ICs0Myw2IEBAIGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50
Q29udGFjdDsKIGNsYXNzIFBheW1lbnRNZXJjaGFudFNlc3Npb247CiBjbGFzcyBQYXltZW50TWV0
aG9kOwotY2xhc3MgVVJMOwogfQogCiBPQkpDX0NMQVNTIE5TT2JqZWN0OwpAQCAtNjEsNyArNjAs
NyBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlVwogICAgIH5XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSgpOwogCiAgICAgdm9pZCBkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwotICAgIHZvaWQg
dmFsaWRhdGVNZXJjaGFudChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHZhbGlkYXRl
TWVyY2hhbnQoY29uc3QgVVJMJik7CiAgICAgdm9pZCBkaWRBdXRob3JpemVQYXltZW50KGNvbnN0
IFdlYkNvcmU6OlBheW1lbnQmKTsKICAgICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNv
bnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhv
ZCYpOwogICAgIHZvaWQgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBh
eW1lbnRDb250YWN0Jik7CkBAIC05OSw3ICs5OCw3IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VX
CiAgICAgYm9vbCBwbGF0Zm9ybUNhbk1ha2VQYXltZW50cygpOwogICAgIHZvaWQgcGxhdGZvcm1D
YW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1
cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5O
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAg
ICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0
aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBX
ZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIFdURjo6RnVuY3Rpb248dm9p
ZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5
bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5r
SWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jiwg
V1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lk
IHBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0
aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RV
cGRhdGU+Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4IDE1
OWFjMTkyNDYyYjQ5ZjdmOTQ2ZmM0NmE2ZTk4ZjkyNmJiY2I5NmMuLjRlMGYyMmI3YWRmNTEwNDE5
ZmU2MGFjOWJhNGVhNTQ4OWRiYWNhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUNvY29hLmgKQEAgLTMxLDE1ICszMSwxMSBAQAogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9QYXNzS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAotbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YlBhZ2VQcm94eTsKIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OwogCi1SZXRhaW5Q
dHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpV
Ukw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0Jik7CitSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxV
Ukw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EubW0KaW5kZXggYTRlZWNjYjA5MWJmMGI0MGNmYjBjMDUzMjgyMjU2OTMxYjA3MzRjNS4u
ZGY1YjlkYTdkZGRiZmI1NjVhNThhYmRlMjllZDMzMzc0MWI1M2ZhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0zMiwxMSArMzIsMTEgQEAK
ICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAj
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBM
QVRGT1JNKE1BQykKIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0
KQpAQCAtNTExLDcgKzUxMSw3IEBAIHN0YXRpYyBQS1BheW1lbnRSZXF1ZXN0QVBJVHlwZSB0b0FQ
SVR5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6CiB9CiAjZW5kaWYK
IAotUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdl
UHJveHkmIHdlYlBhZ2VQcm94eSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQorUmV0YWluUHRy
PFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBh
Z2VQcm94eSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxp
bmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qm
IHBheW1lbnRSZXF1ZXN0KQogewogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS1Bh
eW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUlPUy5tbQppbmRleCBiMTBkOTJlMzhiMGMxNzUzMzAwMjgyZWI3ZDU4MGUyYzIz
NmNmYTg5Li4xN2I3ZjJmODlhMThiNzgwNmEyZTk2YzY0ZTA4ZGIxZmYyODZjNzVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
aW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCkBAIC00MSw3ICs0MSw3IEBAIFNP
RlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIpOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRp
bmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNv
bnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3Jp
Z2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1
bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVUlWaWV3Q29u
dHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlDbGll
bnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5TWFjLm1tCmluZGV4IDc0MTU5MzgzZjE5NTQyN2RiOTc2MGE4YzAxZWM3MDY3
YTY3YzZmOTUuLjI1MTQ5NTBlNWQwMjQ2MDNlMDU3MWFiYjAzNmY3OTEyOTMwZDE2M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBh
eS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTQxLDcgKzQxLDcgQEAg
U09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLRXh0ZW5zaW9uUGF5bWVudEF1dGhvcml6YXRp
b25VSUV4dGVuc2lvblBvaW50TmFtZSwKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJD
b3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlu
a0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdCYgcmVxdWVzdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1l
bnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0lj
b25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dCYgcmVxdWVzdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGY2M2JiMmJhZmViOThkZTQz
NWVmYjVmNWNkNTNkZTQwYzQ3NmNiZTEuLmExMjI4NzRjMWYwNTA1MjhmNjdiNDUxM2FhN2RiNDI0
OWYxNmEwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC00NCwxMCArNDQsMTAgQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VV
SUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCkBAIC02NTks
NyArNjU5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0Nv
bnRleHQoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFMKICAgICAgICAgQVNZTkNfRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBw
YXJhbWV0ZXIgJ3BhZ2VMb2FkU3RyYXRlZ3knIGlzIGludmFsaWQuIik7CiAgICAgYXV0byBwYWdl
TG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCA/IFNlY29uZHM6OmZyb21NaWxs
aXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVv
dXQ7CiAKLSAgICBwYWdlLT5sb2FkUmVxdWVzdChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IHVybCkpOworICAgIHBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdXJsKSk7CiAgICAgd2Fp
dEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25QYWdlKCpwYWdlLCBwYWdlTG9hZFN0cmF0ZWd5LnZh
bHVlKCksIHBhZ2VMb2FkVGltZW91dCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCkBAIC0xMjg3
LDcgKzEyODcsNyBAQCBzdGF0aWMgU3RyaW5nIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVk
ZWQoU3RyaW5nIGRvbWFpbikKICAgICBpZiAoZG9tYWluWzBdICE9ICcuJykgewogICAgICAgICAv
LyBSRkMgMjk2NTogSWYgYW4gZXhwbGljaXRseSBzcGVjaWZpZWQgdmFsdWUgZG9lcyBub3Qgc3Rh
cnQgd2l0aCBhIGRvdCwgdGhlIHVzZXIgYWdlbnQgc3VwcGxpZXMgYSBsZWFkaW5nIGRvdC4KICAg
ICAgICAgLy8gQXNzdW1lIHRoYXQgYW55IGhvc3QgdGhhdCBlbmRzIHdpdGggYSBkaWdpdCBpcyB0
cnlpbmcgdG8gYmUgYW4gSVAgYWRkcmVzcy4KLSAgICAgICAgaWYgKCFXZWJDb3JlOjpVUkw6Omhv
c3RJc0lQQWRkcmVzcyhkb21haW4pKQorICAgICAgICBpZiAoIVVSTDo6aG9zdElzSVBBZGRyZXNz
KGRvbWFpbikpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygnLicsIGRvbWFpbik7CiAg
ICAgfQogICAgIApAQCAtMTMwMCw3ICsxMzAwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6YWRkU2luZ2xlQ29va2llKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLAog
ICAgIGlmICghcGFnZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Io
V2luZG93Tm90Rm91bmQpOwogCi0gICAgV2ViQ29yZTo6VVJMIGFjdGl2ZVVSTCA9IFdlYkNvcmU6
OlVSTChXZWJDb3JlOjpVUkwoKSwgcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKTsK
KyAgICBVUkwgYWN0aXZlVVJMID0gVVJMKFVSTCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0
aXZlVVJMKCkpOwogICAgIEFTU0VSVChhY3RpdmVVUkwuaXNWYWxpZCgpKTsKIAogICAgIFdlYkNv
cmU6OkNvb2tpZSBjb29raWU7CkBAIC0xMzU3LDcgKzEzNTcsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaQogICAgIGlmICghcGFnZSkKICAgICAgICAgU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBXZWJDb3JlOjpVUkwgYWN0aXZlVVJMID0g
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZl
VVJMKCkpOworICAgIFVSTCBhY3RpdmVVUkwgPSBVUkwoVVJMKCksIHBhZ2UtPnBhZ2VMb2FkU3Rh
dGUoKS5hY3RpdmVVUkwoKSk7CiAgICAgQVNTRVJUKGFjdGl2ZVVSTC5pc1ZhbGlkKCkpOwogCiAg
ICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+
c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDZmZjFiNDc4MzIzOTJiZDAz
MjU2MjFlNTA1ZmIwNGE3NGY0NTY1ZmYuLjFkNmU3MTg4NDViMTQ4NWUwYjI2NjZiOWFmMWVmOTMx
NjAyMDQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25s
b2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmlu
aXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICAgICBp
ZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CiAgICAgICAgIGlm
IChhdXRvKiB3ZWJQYWdlID0gZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKSkgewogICAg
ICAgICAgICAgTlNVUkwgKmRlc3RpbmF0aW9uVVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDoo
TlNTdHJpbmcgKilkb3dubG9hZFByb3h5LmRlc3RpbmF0aW9uRmlsZW5hbWUoKV07Ci0gICAgICAg
ICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigpLT5maW5pc2goV2ViQ29yZTo6
VVJMKGRlc3RpbmF0aW9uVVJMKSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcigpLT5maW5pc2goVVJMKGRlc3RpbmF0aW9uVVJMKSk7CiAgICAgICAgIH0KICAg
ICAgICAgcmVsZWFzZUFjdGl2aXR5VG9rZW5JZk5lY2Vzc2FyeShkb3dubG9hZFByb3h5KTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUuaAppbmRleCA0NTk4NWY1MGU0YmZlNzAyNWFjZGE4ZjYyZTU1ZDk4Y2FkMzQ1YmJj
Li4wNTU2ZWNjYTMyNDgwZTlkMjY3NDVhZTdiMTk0ZDBlNWM5ZTZjYjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTE2LDcgKzEx
Niw3IEBAIGNsYXNzIE5hdmlnYXRpb25TdGF0ZSBmaW5hbCA6IHByaXZhdGUgUGFnZUxvYWRTdGF0
ZTo6T2JzZXJ2ZXIgewogCiAgICAgICAgIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3Rl
cktleShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKIAotICAgICAgICBSZWZQdHI8QVBJOjpTdHJp
bmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmLCB1bnNp
Z25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0
cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgICAgIFJlZlB0cjxBUEk6
OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYs
IHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxl
bmdlU3RyaW5nLCBjb25zdCBVUkwmKSBvdmVycmlkZTsKIAogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
Y29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVy
cmlkZTsKQEAgLTEyNCw4ICsxMjQsOCBAQCBjbGFzcyBOYXZpZ2F0aW9uU3RhdGUgZmluYWwgOiBw
cml2YXRlIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
TUFDKQotICAgICAgICB2b2lkIHdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeSk+JiYpIGNvbnN0IGZpbmFsOwotICAgICAgICB2b2lkIHJlc29sdmVXZWJHTExvYWRQb2xp
Y3koV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAg
dm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgVVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsK
KyAgICAgICAgdm9pZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0
IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4m
JikgY29uc3QgZmluYWw7CiAgICAgICAgIGJvb2wgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
KFdlYlBhZ2VQcm94eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBib29sIGluUGFnZUNhY2hl
LCBBUEk6Ok9iamVjdCopIGZpbmFsOwogICAgICAgICBib29sIGRpZEZhaWxUb0luaXRpYWxpemVQ
bHVnSW4oV2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7CiAgICAgICAgIGJv
b2wgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0
aW9uYXJ5JikgZmluYWw7CkBAIC0xMzMsNyArMTMzLDcgQEAgY2xhc3MgTmF2aWdhdGlvblN0YXRl
IGZpbmFsIDogcHJpdmF0ZSBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CiAgICAgICAgIGJvb2wg
ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYlBhZ2VQcm94eSYsIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qLCBjb25zdCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYpIGZpbmFs
OwogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2Vi
UGFnZVByb3h5JiwgV2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYsIFZlY3RvcjxTdHJp
bmc+JiYpIGZpbmFsOworICAgICAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihX
ZWJQYWdlUHJveHkmLCBVUkwmJiwgVmVjdG9yPFN0cmluZz4mJiwgVmVjdG9yPFN0cmluZz4mJikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQ
YWdlUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBSZWY8V2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogICAg
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJQYWdlUHJveHkm
LCBSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+JiYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHk+JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBhNWIw
ODdjZmYzMDhiZjE0MGFmODViZGFkZDM5ZmJmNjk5MTA3OWE3Li40MjA3NzM5YWIwZTBmMDRiNTI3
Y2M5Zjc3ZDViODQwMTAxM2Y1OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC03MCw5ICs3MCw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1NTTEtleUdlbmVyYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRh
dGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjaWYgSEFWRShBUFBf
TElOS1MpCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CkBAIC0z
OTIsNyArMzkyLDcgQEAgaW5saW5lIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB0b1dlYkNvcmVX
ZWJHTExvYWRQb2xpY3koX1dLV2ViR0xMb2FkUG9saWN5IHBvbGkKICAgICByZXR1cm4gV2ViQ29y
ZTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGlj
eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYg
dXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5t
X25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCkg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOwpAQCAtNDA5
LDcgKzQwOSw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJH
TExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViCiAgICAgfSkuZ2V0KCldOwogfQog
Ci12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9h
ZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBjb25zdAordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29s
dmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgY29uc3QKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOwpAQCAtNTg4LDcgKzU4
OCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQCiAgICAgfQogfQogCi12b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdl
YlBhZ2VQcm94eSYsIFdlYkNvcmU6OlVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBsaXN0SWRl
bnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucykKK3ZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2Vi
UGFnZVByb3h5JiwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGxpc3RJZGVudGlmaWVycywg
VmVjdG9yPFN0cmluZz4mJiBub3RpZmljYXRpb25zKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdVUkxDb250ZW50UnVsZUxp
c3RJZGVudGlmaWVyc05vdGlmaWNhdGlvbnMpCiAgICAgICAgIHJldHVybjsKQEAgLTY5OSw3ICs2
OTksNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdh
dGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OlVSTCB1cmwoV2ViQ29yZTo6VVJM
KCksIHVybFN0cmluZyk7CisgICAgVVJMIHVybChVUkwoKSwgdXJsU3RyaW5nKTsKIAogICAgIFtz
dGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRl
bGVnYXRlKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOnVybCBkZWxheTpkZWxheV07CiB9CkBAIC05NzIsNyArOTcyLDcg
QEAgUmVmUHRyPEFQSTo6RGF0YT4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3
ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVAKICAgICByZXR1cm4gQVBJOjpEYXRhOjpjcmVhdGVX
aXRob3V0Q29weWluZyhkYXRhKTsKIH0KIAotUmVmUHRyPEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
ZyhXZWJQYWdlUHJveHkmIHBhZ2UsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRy
PEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkK
K1JlZlB0cjxBUEk6OlN0cmluZz4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpz
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNp
Z25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0
cmluZywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gV2ViS2l0VGVzdFJ1bm5lciB1c2VzIEMg
QVBJLiBIZW5jZSwgbm8gU1BJIGlzIHByb3ZpZGVkIHRvIG92ZXJyaWRlIHRoZSBmb2xsb3dpbmcg
ZnVuY3Rpb24uCiAgICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5n
LT5zdHJpbmcoKSwgdXJsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TYWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tCmluZGV4IDA4N2FjNjU0OTMzM2ExNDBh
ZjUzOWVhNDA0Yjk2ZmExZWVjZjM0OTQuLjA0ZGZkNWQ0NGQ2ZTQ4MzExZGRjMmYyZmU3NDE2OWY0
NDhjNWIzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVC
cm93c2luZ1Jlc3VsdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLVNhZmVCcm93c2luZ1Jlc3VsdDo6
U2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNvcmU6OlVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJl
c3VsdCAqcmVzdWx0KQorU2FmZUJyb3dzaW5nUmVzdWx0OjpTYWZlQnJvd3NpbmdSZXN1bHQoVVJM
JiYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgOiBtX3VybChXVEZN
b3ZlKHVybCkpCiAgICAgLCBtX3Byb3ZpZGVyKFtyZXN1bHQgcHJvdmlkZXJdKQogICAgICwgbV9p
c1BoaXNoaW5nKFtyZXN1bHQgaXNQaGlzaGluZ10pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQpp
bmRleCBhN2RhZDQ4MTUyNjFhOThjNmMxMWQzNDQ4ZjNkYjIxODEzMWE2MmRhLi45OGJkYzI3OTY0
YTU2OWE3Nzk4YzE5YzdiNWFhYzJjNzRlNmQ1OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2Eu
bW0KQEAgLTEwNSw3ICsxMDUsNyBAQCAtICh2b2lkKXNldFByb2dyZXNzOihmbG9hdClwcm9ncmVz
cwogICAgICAgICBbX2l0ZW0gc2V0UHJldmlld0l0ZW1Qcm92aWRlclByb2dyZXNzOkAocHJvZ3Jl
c3MpXTsKIH0KIAotLSAodm9pZClmaW5pc2g6KFdlYkNvcmU6OlVSTCl1cmwKKy0gKHZvaWQpZmlu
aXNoOihVUkwpdXJsCiB7CiAgICAgaWYgKHNlbGYuY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAg
IHNlbGYuY29tcGxldGlvbkhhbmRsZXIoKE5TVVJMKil1cmwsIG5pbCk7CkBAIC0yMjEsNyArMjIx
LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dXBkYXRlUHJvZ3Jlc3MoZmxvYXQg
cHJvZ3Jlc3MpCiAgICAgICAgIFttX3FsUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlIHNldFBy
b2dyZXNzOnByb2dyZXNzXTsKIH0KIAotdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6Zmlu
aXNoKFdlYkNvcmU6OlVSTCB1cmwpCit2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5p
c2goVVJMIHVybCkKIHsKICAgICBpZiAobV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSkK
ICAgICAgICAgW21fcWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgZmluaXNoOnVybF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggMzNmMGE5YzJj
ZDI2MTI1NzFlMjg2ZDU3NjczZWI3MDQwNGQwMDFiMi4uNmNmYjQ0M2E5NTg4NjU1NmYwOTg2MDg3
MDQ0ZTQyMDI2ZDNmYTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaApAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIFVJRGVsZWdhdGUgewogICAgICAgICB2
b2lkIHRvb2xiYXJzQXJlVmlzaWJsZShXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wp
PiYmKSBmaW5hbDsKICAgICAgICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2Vi
RnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6T3Bl
blBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBmaW5h
bDsKICAgICAgICAgdm9pZCBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5G
b3JlZ3JvdW5kKFdlYlBhZ2VQcm94eSYsIFdLUmVzb3VyY2VMaW1pdCkgZmluYWw7Ci0gICAgICAg
IHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
QVBJOjpEYXRhJikgZmluYWw7CisgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgVVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CiAjZW5kaWYKICAgICAgICAgYm9v
bCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkm
LCBXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmln
aW4mLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JikgZmluYWw7CiAgICAgICAgIGJv
b2wgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYsIFdlYkZy
YW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIFVz
ZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCAzZWNlODIwZWQ0YjMxNjQzNjkzZjUyMjQ3
ZWRhZDljNjhiODFmZjYwLi5mOTE3YWE1ZjdhMTE4YjIyZDhlYjIyNTU4MzRjNmM5Y2NjZGNkYmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTUx
LDggKzUxLDggQEAKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQg
Il9XS0hpdFRlc3RSZXN1bHRJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbkRhdGEuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVkNhcHR1cmVEZXZpY2UuaD4KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwg
UmVmPEFQSTo6RnJhbWVJbmZvPgogCiAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBw
YWdlLnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEu
dXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtz
ID0gIWhvc3RzQXJlRXF1YWwoc291cmNlRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVl
c3QudXJsKCkpOwotICAgIGF1dG8gYXBpTmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlv
bkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFt
ZUluZm8ucHRyKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgV2Vi
Q29yZTo6VVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0
aXZpdHkpKTsKKyAgICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25B
Y3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJ
bmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgp
LCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAK
ICAgICBhdXRvIGFwaVdpbmRvd0ZlYXR1cmVzID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3JlYXRl
KHdpbmRvd0ZlYXR1cmVzKTsKIApAQCAtNzg3LDcgKzc4Nyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OnNob3dQYWdlKFdlYlBhZ2VQcm94eSopCiAgICAgWyhpZCA8V0tVSURlbGVnYXRl
UHJpdmF0ZT4pZGVsZWdhdGUgX3Nob3dXZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwog
fQogICAgIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25s
b2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBv
cmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBX
VEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKQogewogICAgIGlm
ICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1
Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCkKICAgICAgICAgcmV0dXJuOwpA
QCAtODY1LDggKzg2NSw4IEBAIHN0YXRpYyB2b2lkIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0
aW9uRm9yRGV2aWNlcyhjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwKICAgICB9KTsKIAogICAg
IGNvbnN0IFdlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1l
KCk7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJh
bWUudXJsKCkpOwotICAgIFdlYkNvcmU6OlVSTCBtYWluRnJhbWVVUkwoV2ViQ29yZTo6VVJMKCks
IG1haW5GcmFtZS0+dXJsKCkpOworICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIGZyYW1l
LnVybCgpKTsKKyAgICBVUkwgbWFpbkZyYW1lVVJMKFVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsK
IAogICAgIF9XS0NhcHR1cmVEZXZpY2VzIGRldmljZXMgPSAwOwogICAgIGlmIChyZXF1ZXN0LnJl
cXVpcmVzQXVkaW9DYXB0dXJlKCkpCkBAIC05NzMsOCArOTczLDggQEAgYm9vbCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94
eSYgcGFnZSwKIAogICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IG1fdWlEZWxlZ2F0ZS5tX3dlYlZp
ZXc7CiAgICAgY29uc3QgV2ViRnJhbWVQcm94eSogbWFpbkZyYW1lID0gZnJhbWUucGFnZSgpLT5t
YWluRnJhbWUoKTsKLSAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVS
TCgpLCBmcmFtZS51cmwoKSk7Ci0gICAgV2ViQ29yZTo6VVJMIG1haW5GcmFtZVVSTChXZWJDb3Jl
OjpVUkwoKSwgbWFpbkZyYW1lLT51cmwoKSk7CisgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwo
KSwgZnJhbWUudXJsKCkpOworICAgIFVSTCBtYWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+
dXJsKCkpOwogCiAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkKE5TU3Ry
aW5nICosIEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihy
ZXF1ZXN0KV0oTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkgewogICAgICAgICBwcm90
ZWN0ZWRSZXF1ZXN0LT5zZXRVc2VyTWVkaWFBY2Nlc3NJbmZvKFN0cmluZyhzYWx0KSwgYXV0aG9y
aXplZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9h
ZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCmluZGV4IDVmOTlh
ZWM4NWRhNzUyNGJhMDQxZTc1ZWIwODAxNzM5OTA0OWIyMTIuLmFlNTc2NWU0OGU3MWI4N2ZmNjBk
MTQwNWMzYzdhMzM3MjUxNWNhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1w
dGVyLm1tCkBAIC02OSw3ICs2OSw3IEBAIC0gKEJPT0wpYXR0ZW1wdFJlY292ZXJ5CiAgICAgaWYg
KCF3ZWJGcmFtZVByb3h5KQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICB3ZWJGcmFtZVByb3h5
LT5sb2FkVVJMKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgX3VybFN0cmluZykpOworICAg
IHdlYkZyYW1lUHJveHktPmxvYWRVUkwoVVJMKFVSTCgpLCBfdXJsU3RyaW5nKSk7CiAgICAgcmV0
dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCBhZTY0NzA3ZGExNTFjMjJiYzM4Mzlk
YWI0YWY3ZTc0MDE0ZTAyMjBlLi41ZmQ1YjkwY2Q0OWRiNDdkOGU3YzMwNmZjNDg2YjNiZTMxMmQ4
MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9QYXN0ZWJvYXJkSXRlbUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJv
YXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KaW5kZXggNWFhZGNmNjdkMTVlMGZmNGE3NzQxYjg1ZTlkZTI3YTQ5NzIyMjlm
Mi4uYmNiZjUzNzZiMWEzZWJlYjQ3ZjgzYjMyODM4ZDIxNGRkNzBiNzFjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQwNjYsNyArNDA2Niw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OndyaXRlVG9VUkxGb3JGaWxlUHJvbWlzZVByb3ZpZGVyKE5T
RmlsZVByb21pc2VQcm92aWRlciAqcHJvdmlkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBXZWJDb3JlOjpVUkwgYmxvYlVSTCB7IGluZm8uYmxvYlVSTCB9OworICAgIFVSTCBibG9iVVJM
IHsgaW5mby5ibG9iVVJMIH07CiAgICAgaWYgKGJsb2JVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHdlYktpdFVua25vd25FcnJvcigpKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmgKaW5kZXggZTA3YWFjODk2MDM4MTU2MWE3MmNhNTRiNzU1NzM5Mjc5ODVlMzQwYy4uNDc3MzZm
MDZkZjgyODY4ZmUzYmNiZGNkMDgxMGNlZWNmZGQ2ZGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC00NSw3ICs0NSw2IEBA
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC03NSw4ICs3NCw4IEBAIGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpEb3dubG9hZD4sIHB1YmxpCiAgICAg
V2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2UoKSBjb25zdDsKICAgICB2b2lkIHNldE9yaWdp
bmF0aW5nUGFnZShXZWJQYWdlUHJveHkqKTsKIAotICAgIHZvaWQgc2V0UmVkaXJlY3RDaGFpbihW
ZWN0b3I8V2ViQ29yZTo6VVJMPiYmIHJlZGlyZWN0Q2hhaW4pIHsgbV9yZWRpcmVjdENoYWluID0g
V1RGTW92ZShyZWRpcmVjdENoYWluKTsgfQotICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+
JiByZWRpcmVjdENoYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdENoYWluOyB9CisgICAg
dm9pZCBzZXRSZWRpcmVjdENoYWluKFZlY3RvcjxVUkw+JiYgcmVkaXJlY3RDaGFpbikgeyBtX3Jl
ZGlyZWN0Q2hhaW4gPSBXVEZNb3ZlKHJlZGlyZWN0Q2hhaW4pOyB9CisgICAgY29uc3QgVmVjdG9y
PFVSTD4mIHJlZGlyZWN0Q2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0Q2hhaW47IH0K
IAogICAgIHZvaWQgc2V0V2FzVXNlckluaXRpYXRlZChib29sIHZhbHVlKSB7IG1fd2FzVXNlcklu
aXRpYXRlZCA9IHZhbHVlOyB9CiAgICAgYm9vbCB3YXNVc2VySW5pdGlhdGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV93YXNVc2VySW5pdGlhdGVkOyB9CkBAIC0xMjYsNyArMTI1LDcgQEAgY2xhc3MgRG93
bmxvYWRQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRv
d25sb2FkPiwgcHVibGkKICAgICB1aW50NjRfdCBtX2J5dGVzTG9hZGVkIHsgMCB9OwogCiAgICAg
V2Vha1B0cjxXZWJQYWdlUHJveHk+IG1fb3JpZ2luYXRpbmdQYWdlOwotICAgIFZlY3RvcjxXZWJD
b3JlOjpVUkw+IG1fcmVkaXJlY3RDaGFpbjsKKyAgICBWZWN0b3I8VVJMPiBtX3JlZGlyZWN0Q2hh
aW47CiAgICAgYm9vbCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAKaW5kZXggOWZlM2M3NjU2MWIyNTU3
MTZhNDViYmEzOGZlOTk1YTAwNTk3N2ZmYi4uNzJmNGY3MjQ1NWE3ZWI4YTY1YjllNTI3ZTU1YTFm
ODIxYWNlMDhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2Fk
U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNw
cApAQCAtMzIsNyArMzIsNyBAQCBGcmFtZUxvYWRTdGF0ZTo6fkZyYW1lTG9hZFN0YXRlKCkKIHsK
IH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQobV9wcm92aXNpb25hbFVSTC5p
c0VtcHR5KCkpOwogCkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogICAgIG1fcHJvdmlz
aW9uYWxVUkwgPSB1cmw7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3Zv
aWQgRnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UHJv
dmlzaW9uYWwpOwogCkBAIC04MSwxMiArODEsMTIgQEAgdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlk
RmFpbExvYWQoKQogICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmluaXNoZWQ7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpV
UkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlv
bihjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX3VybCA9IHVybDsKIH0KIAotdm9pZCBGcmFtZUxv
YWRTdGF0ZTo6c2V0VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJs
ZVVSTCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6OnNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYg
dW5yZWFjaGFibGVVUkwpCiB7CiAgICAgbV9sYXN0VW5yZWFjaGFibGVVUkwgPSBtX3VucmVhY2hh
YmxlVVJMOwogICAgIG1fdW5yZWFjaGFibGVVUkwgPSB1bnJlYWNoYWJsZVVSTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5oCmluZGV4IDk4YzMyNWU4NDQzNmVkYWU0ZGNm
NjM5ZDE0MDc2ZGE5ODM1MzZjMTIuLmM2NTAwMDNmZmI1ZjBiNjg4NWMxM2YzMjZiZDJmYjRmZDI2
YzlkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuaApAQCAtMjUs
NyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzksMjkgKzM5
LDI5IEBAIGNsYXNzIEZyYW1lTG9hZFN0YXRlIHsKICAgICAgICAgRmluaXNoZWQKICAgICB9Owog
Ci0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25z
dCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0
IFVSTCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwogCiAg
ICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAg
dm9pZCBkaWRGYWlsTG9hZCgpOwogCi0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRp
b24oY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmlj
YXRpb24oY29uc3QgVVJMJik7CiAKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGU7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0KIAotICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJs
ZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KKyAgICB2b2lkIHNldFVu
cmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYpOworICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwo
KSBjb25zdCB7IHJldHVybiBtX3VucmVhY2hhYmxlVVJMOyB9CiAKIHByaXZhdGU6CiAgICAgU3Rh
dGUgbV9zdGF0ZSB7IFN0YXRlOjpGaW5pc2hlZCB9OwotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsK
LSAgICBXZWJDb3JlOjpVUkwgbV9wcm92aXNpb25hbFVSTDsKLSAgICBXZWJDb3JlOjpVUkwgbV91
bnJlYWNoYWJsZVVSTDsKLSAgICBXZWJDb3JlOjpVUkwgbV9sYXN0VW5yZWFjaGFibGVVUkw7Cisg
ICAgVVJMIG1fdXJsOworICAgIFVSTCBtX3Byb3Zpc2lvbmFsVVJMOworICAgIFVSTCBtX3VucmVh
Y2hhYmxlVVJMOworICAgIFVSTCBtX2xhc3RVbnJlYWNoYWJsZVVSTDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMGU5MjE4MzMyN2FiZjg3YWJiNjIwNjcw
N2U2YWU1OGE2NTZhYjViNC4uMTgxYTllMjRhZTVlZjY3NmQ2OThhNmY0MjVkZTk5N2Q1ODM4OGVh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZW5kUHJvY2Vzc0RpZFJlc3VtZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpQcm9jZXNzRGlkUmVzdW1lKCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxs
YmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAg
ICBjYWxsYmFjayhmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDI1NTg5N2U3ZTgyNWUxN2I4M2U4YjE0
NjRiNDgwOTE3NTZlYTMwMDcuLjRkYmJiNmZlZTA2MmZmNWUwOGJmMTNjMDc3MzE1MjA4ZTk5NTM0
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKLSNkZWZp
bmUgTmV0d29ya1Byb2Nlc3NQcm94eV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94eS5oIgpAQCAtNDks
NyArNDgsNiBAQCBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3Mg
VVJMOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAtODcsNyArODUsNyBAQCBj
bGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5
LCBwcml2YXRlIFByb2Nlc3NUaHJvdAogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICNlbmRpZgogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxs
YmFjayk7CiAKICAgICB2b2lkIHByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpOwogICAgIApAQCAtMjAz
LDUgKzIwMSwzIEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQ2hp
bGRQcm9jZXNzUHJveHksIHByaXZhdGUgUHJvY2Vzc1Rocm90CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzUHJveHlfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAppbmRleCAxNzU5ZjhhNDkzNjdkMDUyZTVmY2Fl
NTE3M2RhMjY3MjUzOTdmNjYwLi4yZWQxMDc1YzYwMGViZGRlYTVlNGZmNTRmYWE5MWRkZDVmNWJl
MmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcApAQCAtMjA2
LDkgKzIwNiw5IEBAIGJvb2wgUGFnZUxvYWRTdGF0ZTo6aGFzT25seVNlY3VyZUNvbnRlbnQoY29u
c3QgRGF0YSYgZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGRhdGEuc3Rh
dGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9j
b2xJcyhkYXRhLnByb3Zpc2lvbmFsVVJMLCAiaHR0cHMiKTsKKyAgICAgICAgcmV0dXJuIFdURjo6
cHJvdG9jb2xJcyhkYXRhLnByb3Zpc2lvbmFsVVJMLCAiaHR0cHMiKTsKIAotICAgIHJldHVybiBX
ZWJDb3JlOjpwcm90b2NvbElzKGRhdGEudXJsLCAiaHR0cHMiKTsKKyAgICByZXR1cm4gV1RGOjpw
cm90b2NvbElzKGRhdGEudXJsLCAiaHR0cHMiKTsKIH0KIAogYm9vbCBQYWdlTG9hZFN0YXRlOjpo
YXNPbmx5U2VjdXJlQ29udGVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKaW5kZXggMjMxMDc1YWMzNTk5YmFkMWQx
OWFkNGQ3YzQyZmM3MmZmOThjZGEwMy4uNTEzMmI4M2JmYWFhYTEzZjQ3NmE2NjM2NTFjZDM2MjAw
NjY0YWVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5JbmZvU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luSW5mb1N0b3JlLmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiUGx1Z2luTW9k
dWxlSW5mby5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKaW5kZXggNmU5ZWVmYzhmNWY0
MzhhZTg5YTJmMjVhYzg4MmI1NTA3ZmVlMWIzNC4uNTU1OTdmMzQ0YmY1MTM5YjlmNTY3M2MzMGY4
OGM3MjgxNTdhZjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5JbmZvU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5oCkBAIC0zMSwxMCArMzEsNiBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbHVnaW5EYXRhLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBsdWdpbkluZm9TdG9yZTsKQEAgLTUzLDcgKzQ5
LDcgQEAgY2xhc3MgUGx1Z2luSW5mb1N0b3JlIHsKICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZv
ciBhIHBsdWctaW4gdGhhdCBjYW4gaGFuZGxlIHRoZSBnaXZlbiBNSU1FIHR5cGUuCiAgICAgLy8g
SWYgdGhlIE1JTUUgdHlwZSBpcyBudWxsLCB0aGUgZmlsZSBleHRlbnNpb24gb2YgdGhlIGdpdmVu
IHVybCB3aWxsIGJlIHVzZWQgdG8gaW5mZXIgdGhlCiAgICAgLy8gcGx1Zy1pbiB0eXBlLiBJbiB0
aGF0IGNhc2UsIG1pbWVUeXBlIHdpbGwgYmUgZmlsbGVkIGluIHdpdGggdGhlIHJpZ2h0IE1JTUUg
dHlwZS4KLSAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5
cGVzID0gV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsUGx1Z2lucyk7CisgICAgUGx1Z2luTW9kdWxl
SW5mbyBmaW5kUGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlBs
dWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBlcyA9IFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbFBs
dWdpbnMpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgaW5mbyBmb3IgdGhlIHBsdWctaW4gd2l0aCB0
aGUgZ2l2ZW4gYnVuZGxlIGlkZW50aWZpZXIuCiAgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1
Z2luV2l0aEJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKTsK
QEAgLTYzLDcgKzU5LDcgQEAgY2xhc3MgUGx1Z2luSW5mb1N0b3JlIHsKIAogICAgIHN0YXRpYyBQ
bHVnaW5Nb2R1bGVMb2FkUG9saWN5IGRlZmF1bHRMb2FkUG9saWN5Rm9yUGx1Z2luKGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mKTsKIAotICAgIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBwbHVnaW5VUkwsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcGFnZVVSTCk7CisgICAgYm9v
bCBpc1N1cHBvcnRlZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHBs
dWdpblVSTCwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgVVJMJiBwYWdlVVJM
KTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVu
dGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKTsKICAgICB2b2lkIGFkZFN1cHBv
cnRlZFBsdWdpbihTdHJpbmcmJiBtYXRjaGluZ0RvbWFpbiwgU3RyaW5nJiYgaWRlbnRpZmllciwg
SGFzaFNldDxTdHJpbmc+JiYgbWltZVR5cGVzLCBIYXNoU2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7
CiAgICAgdm9pZCBjbGVhclN1cHBvcnRlZFBsdWdpbnMoKSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9
IHN0ZDo6bnVsbG9wdDsgfQpAQCAtMTA0LDcgKzEwMCw3IEBAIGNsYXNzIFBsdWdpbkluZm9TdG9y
ZSB7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtaW1lVHlwZXM7CiAgICAgICAgIEhhc2hTZXQ8
U3RyaW5nPiBleHRlbnNpb25zOwogICAgIH07Ci0gICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRQ
bHVnaW4oY29uc3QgU3VwcG9ydGVkUGx1Z2luJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBwbHVnaW5VUkwpOworICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVk
UGx1Z2luKGNvbnN0IFN1cHBvcnRlZFBsdWdpbiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFVSTCYgcGx1Z2luVVJMKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRl
ZFBsdWdpbj4+IG1fc3VwcG9ydGVkUGx1Z2luczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0K
aW5kZXggZDkwZjBhOWVhMDc0ZjZmNWY5MWJkYmFhNjY3YmUwMjIyZTU4MjczOS4uZmFlY2YzMWRm
Nzk1ZDMxNjM4NjQ5ZDIyNDM4MDdjZjk3NWIyYzU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5t
bQpAQCAtMzQsMTIgKzM0LDEyIEBACiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1w
b3J0IDxRdWFydHpDb3JlL0NBUmVtb3RlTGF5ZXJTZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPGNydF9leHRl
cm5zLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaD4KICNpbXBvcnQgPHNwYXduLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZp
bGVnZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBAaW50ZXJmYWNlIFdLUGxhY2Vob2xkZXJNb2RhbFdpbmRvdyA6IE5TV2luZG93IApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5nUmVzdWx0LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaAppbmRleCA3OTNiZjRi
YTRhZjczZGEyMGJkOTU3YTRiZmMwMzEyNWRmM2M3Nzc2Li4zNDIyMDQ3YWIyMDgwYjY5YmNiYjhk
MzM4MzhhNzJkOGNhZTk5NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
YWZlQnJvd3NpbmdSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJv
d3NpbmdSZXN1bHQuaApAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9CSkNfQ0xB
U1MgU1NCU2VydmljZUxvb2t1cFJlc3VsdDsKQEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIFNhZmVCcm93c2luZ1Jlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNh
ZmVCcm93c2luZ1Jlc3VsdD4gewogcHVibGljOgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLSAg
ICBzdGF0aWMgUmVmPFNhZmVCcm93c2luZ1Jlc3VsdD4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVy
bCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorICAgIHN0YXRpYyBSZWY8U2FmZUJy
b3dzaW5nUmVzdWx0PiBjcmVhdGUoVVJMJiYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpy
ZXN1bHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTYWZlQnJvd3NpbmdS
ZXN1bHQoV1RGTW92ZSh1cmwpLCByZXN1bHQpKTsKICAgICB9CiAjZW5kaWYKLSAgICBjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJM
JiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFN0cmluZyYgcHJvdmlk
ZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyOyB9CiAgICAgYm9vbCBpc1BoaXNoaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1BoaXNoaW5nOyB9CiAgICAgYm9vbCBpc01hbHdhcmUoKSBjb25z
dCB7IHJldHVybiBtX2lzTWFsd2FyZTsgfQpAQCAtNTAsOSArNTAsOSBAQCBjbGFzcyBTYWZlQnJv
d3NpbmdSZXN1bHQgOiBwdWJsaWMgUmVmQ291bnRlZDxTYWZlQnJvd3NpbmdSZXN1bHQ+IHsKIAog
cHJpdmF0ZToKICNpZiBIQVZFKFNBRkVfQlJPV1NJTkcpCi0gICAgU2FmZUJyb3dzaW5nUmVzdWx0
KFdlYkNvcmU6OlVSTCYmLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICopOworICAgIFNhZmVCcm93
c2luZ1Jlc3VsdChVUkwmJiwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqKTsKICNlbmRpZgotICAg
IFdlYkNvcmU6OlVSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fcHJvdmlk
ZXI7CiAgICAgYm9vbCBtX2lzUGhpc2hpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc01hbHdh
cmUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVu
ZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5jcHAKaW5kZXggOGJjNGE3NTNmYTc2NzNkNDExYjliNGNmNWI1NDQyOTc5ZDY5MzIwNC4u
MmVhNzlmODJkMTM5ZTFkYjVlMjcxODFlNDI1YzllZWUxNTE4ZTIzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0zMyw4ICszMyw4IEBA
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCmluZGV4
IDk0OWM4ZGY3MjFlZDllZDM1YTdkYTY4ZWM3Y2Y5MTI3OWVmOTBhMzEuLjI2OWQwYzMyZmIzMjA4
NGI1N2U3ZDE2YjBjY2YyNWNlZjc0ZjljMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9y
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiBPQkpDX0NMQVNT
IFFMUHJldmlld0NvbnRyb2xsZXI7CkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFN5c3RlbVByZXZp
ZXdDb250cm9sbGVyIHsKIAogICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgdXBkYXRlUHJvZ3Jlc3MoZmxvYXQp
OwotICAgIHZvaWQgZmluaXNoKFdlYkNvcmU6OlVSTCk7CisgICAgdm9pZCBmaW5pc2goVVJMKTsK
ICAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZvaWQgZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmgKaW5kZXggZTMzMTY3YTg5NTBjMTY4ZjAxYzAzMmNlYjllNWY4Zjk4MWU1MTM4MC4u
OWYyNDBkMzAyMWVkZjg2YzdjYWVkN2U4MTQ1OTUxZGVkMzI2MGUxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTcxLDEwICs3MSwx
MCBAQCBjbGFzcyBXZWJDb29raWVNYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpDb29raWVNYQogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01v
ZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lLCBGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lkIHNldENvb2tpZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwotICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVS
TCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lkIGdl
dEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOwotICAgIHZvaWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRDb29r
aWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhh
bmRsZXIpOwogCiAgICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lv
bklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vz
c2lvbklELCBGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5k
ZXggMjk3YWE4YWYzMjU1YjBkYWY0YzQ3M2FlNzczZTcwZGFjNjliNDVjOC4uNDk3YjIzMTdiN2Rj
ZjE2NmY3MWRjNDAwZTVmZjc4ZmQwZWExZGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuaApAQCAtODAsMTQgKzgwLDE0IEBAIGNsYXNzIFdlYkZyYW1lUHJveHkgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpGcmFtZT4gewogCiAgICAg
RnJhbWVMb2FkU3RhdGUmIGZyYW1lTG9hZFN0YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0
ZTsgfQogCi0gICAgdm9pZCBsb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQg
bG9hZFVSTChjb25zdCBVUkwmKTsKICAgICB2b2lkIHN0b3BMb2FkaW5nKCkgY29uc3Q7CiAKLSAg
ICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3Rh
dGUudXJsKCk7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9CisgICAgY29u
c3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVybCgpOyB9Cisg
ICAgY29uc3QgVVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2Fk
U3RhdGUucHJvdmlzaW9uYWxVUkwoKTsgfQogCi0gICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChj
b25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxl
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9
CisgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmKTsKKyAgICBjb25zdCBVUkwm
IHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNo
YWJsZVVSTCgpOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9NSU1FVHlwZTsgfQogICAgIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGFpbnNQbHVnaW5Eb2N1bWVudDsgfQpAQCAtMTA4LDEzICsxMDgsMTMg
QEAgY2xhc3MgV2ViRnJhbWVQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6OkZyYW1lPiB7CiAgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9u
PHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdl
dFJlc291cmNlRGF0YShBUEk6OlVSTCosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQo
Y29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZEZhaWxQ
cm92aXNpb25hbExvYWQoKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgV2ViQ2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50KTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkKCk7
Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYp
OyAvLyBlZy4gYW5jaG9yIG5hdmlnYXRpb24sIHNlc3Npb24gc3RhdGUgY2hhbmdlLgorICAgIHZv
aWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBVUkwmKTsgLy8gZWcuIGFuY2hvciBu
YXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRlIGNoYW5nZS4KICAgICB2b2lkIGRpZENoYW5nZVRpdGxl
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBzZXRV
cFBvbGljeUxpc3RlbmVyUHJveHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgVmVjdG9yPFJlZjxTYWZlQnJvd3NpbmdSZXN1bHQ+PiYmKT4mJiwgU2hvdWxkRXhwZWN0
U2FmZUJyb3dzaW5nUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5oCmluZGV4IDg0NDIwYTEzNTc0OWM0OWYyM2Q4ZTJjNDkwYzhkZDk0NzZjZDMzN2Yu
LjU1NGU3NDQ4ZWM0YWNmODY5NzNkMjZiOWRhMDBhZDFjNjNiY2Q5ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtNTAsMTAgKzUwLDYgQEAgT0JK
Q19DTEFTUyBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyOwogI2luY2x1ZGUgIldlYlZpZXcuaCIK
ICNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtMTUxLDcgKzE0Nyw3IEBAIGNs
YXNzIFdlYkluc3BlY3RvclByb3h5CiAgICAgc3RhdGljIFN0cmluZyBpbnNwZWN0b3JQYWdlVVJM
KCk7CiAgICAgc3RhdGljIFN0cmluZyBpbnNwZWN0b3JUZXN0UGFnZVVSTCgpOwogICAgIHN0YXRp
YyBTdHJpbmcgaW5zcGVjdG9yQmFzZVVSTCgpOwotICAgIHN0YXRpYyBib29sIGlzTWFpbk9yVGVz
dEluc3BlY3RvclBhZ2UoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNN
YWluT3JUZXN0SW5zcGVjdG9yUGFnZShjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBtaW5pbXVtV2luZG93V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1p
bmltdW1XaW5kb3dIZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCmluZGV4IDNhNTk0YmI3YjRh
MjYwYjk0YjA4ZmZjYmVkYzJhZWNhY2U5NDFhZDcuLjAyODEyY2Y3ZmJlN2I0ZTU2ZjI3NTc5MmVm
Mjk0MGQ5ZWVmZDg2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBA
CiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDIyZjI2YWVhMTg0
OGE0MDlhODI4N2MzMjY1NjViM2YzZWQxMzdjMC4uODg2YmMyYmQxMzNjNjM5YTBkMGNlNGE3ZGZl
OGUzYzZiNDA2Nzc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0xNTMsMTMgKzE1MywxMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zh
bGlkYXRpb25CdWJibGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAj
aW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtMTA3MSw3ICsxMDcxLDcgQEAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGMKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2Fk
U3RhdGUudHJhbnNhY3Rpb24oKTsKIAotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJ
UmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IGJs
YW5rVVJMKCkuc3RyaW5nKCkpOworICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVx
dWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IFdURjo6
YmxhbmtVUkwoKS5zdHJpbmcoKSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVh
dHRhY2hUb1dlYlByb2Nlc3MoKTsKQEAgLTEwOTIsNyArMTA5Miw3IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBjCiAgICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0
bWxEYXRhLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VV
UkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSwgYm9vbCBmb3JTYWZlQnJvd3NpbmcpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVy
bmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIGJvb2wgZm9yU2FmZUJyb3dzaW5nKQogewogICAgIC8v
IFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxp
bmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNl
Y29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2Ug
bG9hZCBzdGF0ZSBmcm9tIGJlaW5nCkBAIC0xMTQxLDcgKzExNDEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6
T2JqZWN0KiB1cwogICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogCiAgICAgYXV0byB0
cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotICAgIG1fcGFnZUxv
YWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwoKS5z
dHJpbmcoKSk7CisgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRy
YW5zYWN0aW9uLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogCiAgICAgTG9hZFBhcmFtZXRl
cnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsK
QEAgLTExNjAsNyArMTE2MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgSW50UG9pCiAgICAgaWYgKG1f
aXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElz
SmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaXNWYWxpZCgpKQpAQCAtMzUwNiw3ICszNTA2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCkKICAgICBtX25hdmlnYXRpb25TdGF0ZS0+ZGlkRGVzdHJveU5hdmlnYXRpb24o
bmF2aWdhdGlvbklEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBX
ZWJDb3JlOjpVUkwmJiB1cmwsIFdlYkNvcmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVS
TCYmIHVybCwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkK
IHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBA
IC0zNjA0LDcgKzM2MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVk
aXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogICAgICAgICBtX25hdmlnYXRpb25DbGll
bnQtPmRpZENhbmNlbENsaWVudFJlZGlyZWN0KCp0aGlzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QsIFdlYkNvcmU6OlVSTCYmIHVybCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQ
cm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBVUkwmJiB1
cmwpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IApAQCAtMzg3NCw3ICszODc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELAogICAgIH0KIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNh
bWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBXZWJDb3JlOjpVUkwmJiB1cmwsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50
MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3Io
cGFnZUNsaWVudCgpKTsKIApAQCAtNDI0MSw3ICs0MjQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OndpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQs
IGNvbnMKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlzdE5v
dGlmaWNhdGlvbihXZWJDb3JlOjpVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmll
cnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpj
b250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGlk
ZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiYmIG5vdGlmaWNhdGlvbnMpCiB7CiAgICAgbV9uYXZp
Z2F0aW9uQ2xpZW50LT5jb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oKnRoaXMsIFdURk1vdmUo
dXJsKSwgV1RGTW92ZShpZGVudGlmaWVycyksIFdURk1vdmUobm90aWZpY2F0aW9ucykpOwogfQpA
QCAtNTk1Miw3ICs1OTUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5h
dGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBpZiAobV9wcm9jZXNzLT5pc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkgewotICAgICAgICBT
dHJpbmcgZG9tYWluID0gV2ViQ29yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihXZWJD
b3JlOjpVUkwoeyB9LCBjdXJyZW50VVJMKCkpLmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAg
U3RyaW5nIGRvbWFpbiA9IFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oVVJM
KHsgfSwgY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9t
YWluLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aEVuaGFu
Y2VkUHJpdmFjeShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmRvbWFpbkNhdXNpbmdK
ZXRzYW1LZXkoKSwgZG9tYWluLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB9CkBA
IC03MDMxLDcgKzcwMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgYm9vbCYgc3VjYwogfQogI2VuZGlmCiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQordm9pZCBXZWJQYWdlUHJveHk6OnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNv
bnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1
bHQpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IApAQCAtNzY3Niw5ICs3Njc2LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVy
VW5sb2NrKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hl
bWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYgaGFuZGxlciwgY29uc3QgU3RyaW5nJiBzY2hl
bWUpCiB7Ci0gICAgYXV0byBjYW5vbmljYWxpemVkU2NoZW1lID0gVVJMUGFyc2VyOjptYXliZUNh
bm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUpOworICAgIGF1dG8gY2Fub25pY2FsaXplZFNjaGVtZSA9
IFdURjo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUpOwogICAgIEFT
U0VSVChjYW5vbmljYWxpemVkU2NoZW1lKTsKLSAgICBBU1NFUlQoIVVSTFBhcnNlcjo6aXNTcGVj
aWFsU2NoZW1lKGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOworICAgIEFTU0VSVCghV1RG
OjpVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZShjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkp
KTsKIAogICAgIGF1dG8gc2NoZW1lUmVzdWx0ID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1l
LmFkZChjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCksIGhhbmRsZXIuZ2V0KCkpOwogICAgIEFT
U0VSVF9VTlVTRUQoc2NoZW1lUmVzdWx0LCBzY2hlbWVSZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGU2NmM1NGE4YTMyNTgzYmJmNzhi
MGI3M2Y3YWQ5YTNjZWNjYzY1NTguLmVlZGE3MTViNzAxYzE4YWE1ZjMyMzVhY2NmODdiZjc4ZTNj
OTFiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04Myw3ICs4
Myw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RleHRDaGVja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC05NSw2ICs5NCw3IEBACiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDY0
LDcgKzQ2NCw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9h
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVs
bHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZEZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2Fk
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSA9IG51bGxwdHIpOwotICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUwoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgV2ViQ29y
ZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyLCBib29sIGZvclNhZmVCcm93c2luZyA9IGZhbHNl
KTsKKyAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1
bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0ciwgYm9vbCBmb3JT
YWZlQnJvd3NpbmcgPSBmYWxzZSk7CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpE
YXRhKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0
ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6
SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwog
CkBAIC0xMDY0LDggKzEwNjQsOCBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQgaGFuZGxlQWx0ZXJu
YXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpOwogI2VuZGlmCiAKLSAgICB2
b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmls
ZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBXZWJDb3JlOjpVUkwmJiBvcmlnaW5hdGluZ1VSTCwg
QVBJOjpEYXRhJik7Ci0gICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3Ry
aW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFdlYkNvcmU6OlVSTCYmIG9yaWdpbmF0aW5nVVJMLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBl
LCBVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJik7CisgICAgdm9pZCBzYXZlUERGVG9G
aWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFVSTCYmIG9y
aWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2b2lkIHNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZl
QXBwbGljYXRpb25SYXcoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpOwogICAgIHZvaWQgc2F2ZVBERlRvVGVt
cG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpOwpAQCAtMTE3OCw3
ICsxMTc4LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIHVud3JhcENyeXB0b0tleShjb25zdCBW
ZWN0b3I8dWludDhfdD4mLCBib29sJiBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiYpOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25l
ZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzaWduZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxs
ZW5nZVN0cmluZywgY29uc3QgVVJMJiwgU3RyaW5nJiByZXN1bHQpOwogCiAgICAgdm9pZCB0YWtl
U25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBT
bmFwc2hvdE9wdGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKQEAgLTEzNDYsNyArMTM0Niw3
IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9u
PHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICNlbmRpZgogCi0gICAgdm9pZCB3cml0ZUJsb2JU
b0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRo
LCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOworICAgIHZvaWQgd3JpdGVCbG9iVG9G
aWxlUGF0aChjb25zdCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248
dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgcHJlZmVy
ZW5jZXNTdG9yZSgpIGNvbnN0OwogCkBAIC0xNDExLDE3ICsxNDExLDE3IEBAIGNsYXNzIFdlYlBh
Z2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+
CiAgICAgdm9pZCBkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lk
IGRpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJ
ZGVudGlmaWVyJiYpOwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYs
IFdlYkNvcmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZv
aWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNl
ckRhdGEmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB3aWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiB1cmwsIGRvdWJsZSBkZWxheSk7CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpOwotICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9u
YWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdl
YkNvcmU6OlVSTCYmKTsKKyAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9p
ZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwg
dWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwg
Ym9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVp
bnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBXZWJDb3JlOjpVUkwmJiwgY29uc3Qg
VXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlLCBVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRp
ZENoYW5nZU1haW5Eb2N1bWVudCh1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
VXNlckRhdGEmKTsKQEAgLTE0NDgsMTEgKzE0NDgsMTEgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGlj
eSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3Qg
VXNlckRhdGEmKTsKLSAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgV2ViQ29y
ZTo6VVJMJiwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CisgICAgdm9pZCBiZWdpblNh
ZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYp
OwogCiAgICAgdm9pZCB3aWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBz
b3VyY2VGcmFtZUlELCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHRl
eHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAg
ICAgICAgCi0gICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViQ29yZTo6VVJM
JiYsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZp
Y2F0aW9ucyk7CisgICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oVVJMJiYsIFZl
Y3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9u
cyk7CiAKICAgICAvLyBIaXN0b3J5IGNsaWVudAogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1l
SUQpOwpAQCAtMTQ3Myw4ICsxNDczLDggQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIHVuYXZhaWxh
YmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFxdWVQbHVnaW5VbmF2YWlsYWJpbGl0
eVJlYXNvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc1BhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CiAjZW5kaWYgLy8g
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQg
d2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7Ci0gICAgdm9pZCByZXNvbHZlV2Vi
R0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJl
c29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgd2ViR0xQ
b2xpY3lGb3JVUkwoVVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9y
VVJMOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwo
VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6
RGVsYXllZFJlcGx5JiYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRv
b2xiYXJzQXJlVmlzaWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSk7CiAgICAgdm9pZCBnZXRU
b29sYmFyc0FyZVZpc2libGUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVW
aXNpYmxlOjpEZWxheWVkUmVwbHkmJik7CkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBjbGFzcyBXZWJQ
YWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdl
PgogICAgIHZvaWQgc2V0UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdp
bkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB1aW50NjRfdCBjb21wbGV4VGV4dElucHV0U3Rh
dGUpOwogI2VuZGlmCiAKLSAgICBib29sIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25I
YW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7Cisg
ICAgYm9vbCBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFVSTCYs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JF
UExBQ0VNRU5UKQogICAgIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlZmJi
NGIxZjg3YzQ3OGZiMDM4MzI2Yjk5NDAyN2YyMmE3ODBkNWE0Li5jMGQ3ZDgyMTI1NGMzZTdiYTlm
YjAzZDllN2Y1YThmMWQ2ZjRlYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNCw4ICszNCw4IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90
IHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBTdHJpbmcgbWltZVR5cGUsIFN0cmluZyBwbHVn
aW5VUkxTdHJpbmcsIFN0cmluZyBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgU3RyaW5n
IGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcgcGFnZVVSTFN0cmluZykKICNlbmRpZiAvLyBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgV2ViR0xQb2xpY3lG
b3JVUkwoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQK
LSAgICBSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQz
Ml90IGxvYWRQb2xpY3kpIERlbGF5ZWQKKyAgICBXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAt
PiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVsYXllZAorICAgIFJlc29sdmVXZWJHTFBvbGljeUZv
clVSTChVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVsYXllZAogI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkKICAgICBEaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoc3RydWN0IFdl
YkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIERpZFJlY2VpdmVFdmVu
dCh1aW50MzJfdCB0eXBlLCBib29sIGhhbmRsZWQpCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFt
ZUlELCBzdHJ1Y3QgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllciB3aW5kb3dJZGVudGlm
aWVyKQogCiAgICAgIyBGcmFtZSBsb2FkIG1lc3NhZ2VzCi0gICAgRGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdl
YkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKKyAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMIHVybCwgVVJMIHVucmVhY2hh
YmxlVVJMLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyB1cmwsIGRvdWJsZSBkZWxheSkKICAgICBEaWRD
YW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgRGlkQ2hh
bmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwpCisgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwp
CiAgICAgRGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ29tbWl0
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3Ry
aW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9h
ZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29u
dGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNv
bnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKICAgICBEaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkg
ewogICAgIERpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJ1bkluc2VjdXJlQ29udGVudEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAg
RGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1
c2VyRGF0YSkKLSAgICBEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCB0eXBlLCBXZWJDb3JlOjpV
UkwgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IHVpbnQzMl90IHR5cGUsIFVSTCB1cmwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAg
RGlkQ2hhbmdlTWFpbkRvY3VtZW50KHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIERpZERlc3Ryb3lO
YXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKIApAQCAtNDI3LDcgKzQyNyw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBu
YW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiBzZWFyY2hJdGVtcykKICAgICBMb2Fk
UmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2Vh
cmNoPiByZXN1bHQpCiAKLSAgICBTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5n
IHN1Z2dlc3RlZEZpbGVuYW1lLCBXZWJDb3JlOjpVUkwgb3JpZ2luYXRpbmdVUkwsIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhKQorICAgIFNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJp
bmcgc3VnZ2VzdGVkRmlsZW5hbWUsIFVSTCBvcmlnaW5hdGluZ1VSTCwgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGEpCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTYXZlUERGVG9UZW1wb3JhcnlG
b2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwg
U3RyaW5nIHBkZlVVSUQpCkBAIC00ODcsNyArNDg3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKIAogICAgIERpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5j
ZShXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCi0gICAgQ29udGVudFJ1bGVMaXN0Tm90aWZp
Y2F0aW9uKFdlYkNvcmU6OlVSTCB1cmwsIFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBWZWN0
b3I8U3RyaW5nPiBub3RpZmljYXRpb25zKQorICAgIENvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlv
bihVUkwgdXJsLCBWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4gbm90
aWZpY2F0aW9ucykKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQ
TEFURk9STShJT1MpCiAgICAgQWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0X3Qg
Y29udGV4dElkKQpAQCAtNTQ2LDYgKzU0Niw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAgICAgU3RvcERpc3BsYXlMaW5rKHVuc2lnbmVkIG9ic2VydmVySUQpCiAjZW5kaWYKIAotICAg
IFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgs
IFN0cmluZyBjaGFsbGVuZ2VTdHJpbmcsIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVz
dWx0KQorICAgIFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIFN0cmluZyBjaGFsbGVuZ2VTdHJpbmcsIFVSTCB1cmwpIC0+IChTdHJpbmcgcmVz
dWx0KQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5k
ZXggODE3NWEzYzY4NWY3NDI3ZjE1NDE0OTVhZjIxNTA5YWM5OGMxZjE3ZS4uMGEwMmUzYmQ3MTg4
ZGRlMDA1NzAyNjZkMDhiMjFiNWQzNzg3NzkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcApAQCAtODYsNyArODYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2Vy
Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC05NCw2ICs5Myw3IEBACiAjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRl
IDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDE0NDQyOGI2ZjA5
ZGM5YjVlZjcxNzU1N2Y2NDQ0Y2FlZGU1NGEwYzEuLmIxZTRjNWQxY2M0OTIxMDEyMTYzNWU4N2Fi
Yjc5NjdkMzQxZDVmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aApAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1BvCiAgICAgdm9pZCBy
ZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNv
bnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgV2ViQ29y
ZTo6VVJMJik7CisgICAgdm9pZCBwcmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgVVJMJik7CiAKICAg
ICBWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVk
TGlua1N0b3JlLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCmluZGV4IDllODQ0Y2RiNWU2ZjI5YmQ4YTRkMzE1Y2VmZmRiNmRjYzE4MTE5MzIu
LmFkMjczYTIyODhlZTM4OWI2NmY0ODU4ZDJlNDYxYTUxOWVkOTEzNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1B1YmxpY1N1ZmZpeC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24u
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRl
cm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2goKQogI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1Qp
CiAgICAgaWYgKHBhZ2VzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIGF1dG8mIHBhZ2UgPSAqcGFn
ZXNbMF07Ci0gICAgICAgIFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluKFdlYkNvcmU6OlVSTCh7IH0sIHBhZ2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmco
KSk7CisgICAgICAgIFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
KFVSTCh7IH0sIHBhZ2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAg
IGlmICghZG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHBhZ2UubG9nRGlhZ25vc3RpY01l
c3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6
ZG9tYWluQ2F1c2luZ0NyYXNoS2V5KCksIGRvbWFpbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpO
byk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRl
eCBlMGE2N2NiNzg5ZGZmNmQyMGFhNWI5NWRhNjAxZmMzZjlmYzJlOGM2Li4xMjZhZDI2YjY2MDlj
MjIyNmRlYzk4NmI1NTJkNTI3ZGFlNDIwODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaApAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlv
bjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3Mg
VVJMOwogc3RydWN0IFBsdWdpbkluZm87CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQpA
QCAtMTQ2LDEwICsxNDUsMTAgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIENoaWxk
UHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2wKIAogICAgIHZvaWQg
d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKSB7IG1fbWF5SGF2
ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbiA9IHRydWU7IH0KICAgICB2b2lkIGFz
c3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBoYXNBc3N1
bWVkUmVhZEFjY2Vzc1RvVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wg
aGFzQXNzdW1lZFJlYWRBY2Nlc3NUb1VSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIGJvb2wg
Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wg
Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAg
IGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFVSTCYpOwogCiAgICAg
c3RhdGljIGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAppbmRleCAzMTc4MzZiNDJmZjY3NGU1N2I0Y2JlYWVlODcxZGYxMzQ3ZWU3NWY0Li5mOGQ5
Mjg0NWE2M2ZhMmIzOWIxN2IxZWJlODliMTcxNWZhN2JhNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sIHZhbAogICAgIH0pOwog
fQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VibWl0VGVsZW1ldHJ5KCkKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2
aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgVVJMJiBwYWdlVVJMLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgcmVkaXJlY3RVUkwpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9n
RnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBh
Z2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJM
JiByZWRpcmVjdFVSTCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCmluZGV4IDZjNDEwZmE0YTk1YTNjMDA4ZDU3YjIzZjZjODMxZDllY2QwNDA3ZDAu
LjU4MWEyYWU5MThiZTc0OWY2YTNhMzRjMDYyOGE1MDQ1NGE0N2JiODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCkBAIC00MSw3ICs0MSw2IEBAIGNsYXNzIFdvcmtRdWV1ZTsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogc3RydWN0IFJlc291cmNl
TG9hZFN0YXRpc3RpY3M7CiB9CiAKQEAgLTg0LDI4ICs4MywyOCBAQCBjbGFzcyBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
V2ViUmVzbwogCiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKTsKIAotICAgIHZv
aWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQg
c2V0TGFzdFNlZW4oY29uc3QgV2ViQ29yZTo6VVJMJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRWZXJ5
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVBy
b3h5JiwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKTsKKyAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihj
b25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJV
c2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFVSTCYsIFNl
Y29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRQcmV2YWxl
bnRSZXNvdXJjZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGlzUHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7Ci0gICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3Jl
OjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVn
aXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNl
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBXZWJD
b3JlOjpVUkwmIHN1YkZyYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJl
Y3RpbmdUbyhjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3RSZWRpcmVjdGVkRnJvbSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBob3N0UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKLSAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJM
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVy
ZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCk7Ci0gICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0g
ICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJM
JiBzdWJmcmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNv
dXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNl
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOwotICAgIHZvaWQg
c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVI
b3N0TmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAg
dm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHRv
cEZyYW1lSG9zdE5hbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJv
bSk7CisgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2Uo
Y29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBp
c1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29u
c3QgVVJMJiB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAg
dm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoY29uc3QgVVJMJiBzdWJGcmFtZSwgY29u
c3QgVVJMJiB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAg
dm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3Rl
ZEZyb20sIGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVk
KGNvbnN0IFVSTCYsIGJvb2wpOworICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJh
bWUpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVS
TCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYg
aG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdEZyb20oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGly
ZWN0ZWRGcm9tKTsKKyAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBV
UkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwor
ICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiB0b3BGcmFt
ZUhvc3ROYW1lLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOwogICAgIHZvaWQg
c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZUZvckRvbWFpbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckJsb2NraW5nU3Rh
dGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTMyLDcgKzEzMSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJS
ZXNvCiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rl
YnVnTW9kZShib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9y
RGVidWdNb2RlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykgeyBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0
IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZS5oCmluZGV4IDc5OTI2M2VhYzRhMmMyODgyNDY0ZDllZmFlYTQ2
YTg0MzE0OWRhNWYuLjVmNGEzYTVkMTg0M2ViYTJiMTQwMjY3MjEwYTQwNDg5ZTdjOTk3N2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlLmgKQEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0
YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRp
Y2F0b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBE
cmFnU291cmNlU3RhdGUgewogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRv
ckRhdGE+IGluZGljYXRvckRhdGE7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXRoPiB2
aXNpYmxlUGF0aDsKICAgICBTdHJpbmcgbGlua1RpdGxlOwotICAgIFdlYkNvcmU6OlVSTCBsaW5r
VVJMOworICAgIFVSTCBsaW5rVVJMOwogICAgIGJvb2wgcG9zc2libHlOZWVkc0RyYWdQcmV2aWV3
VXBkYXRlIHsgdHJ1ZSB9OwogCiAgICAgTlNJbnRlZ2VyIGl0ZW1JZGVudGlmaWVyIHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Np
c3RhbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lz
dGFudC5tbQppbmRleCBiYjY2MzQ3NTI1ZjE4ODcxMDA3Y2U1MDRiZWI5MjI0NTljOTBlMWNhLi5l
MzQ2MGY0MTVkMGI4NjhiZGYzYzI5MjVmYzQzOGI1N2U3ZmY5MmJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpAQCAt
NDEsMTAgKzQxLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRp
bGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9y
dCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBv
cnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4
dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGhy
ZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIApAQCAtMzA0LDcgKzMwNCw3IEBAIC0gKHZvaWQpX2Ny
ZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25zOihOU0FycmF5ICopYWN0aW9ucyBzaG93TGlua1Rp
dGxlOihCT09MKXNoCiAgICAgICAgIGlmIChpc0phdmFTY3JpcHRVUkwpCiAgICAgICAgICAgICB0
aXRsZVN0cmluZyA9IFdFQl9VSV9TVFJJTkdfS0VZKCJKYXZhU2NyaXB0IiwgIkphdmFTY3JpcHQg
QWN0aW9uIFNoZWV0IFRpdGxlIiwgIlRpdGxlIGZvciBhY3Rpb24gc2hlZXQgZm9yIEphdmFTY3Jp
cHQgbGluayIpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV2Vi
Q29yZTo6dXNlclZpc2libGVTdHJpbmcodGFyZ2V0VVJMKTsKKyAgICAgICAgICAgIHRpdGxlU3Ry
aW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh0YXJnZXRVUkwpOwogICAgICAgICAgICAgdGl0
bGVJc1VSTCA9IFlFUzsKICAgICAgICAgfQogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXgg
YjAxYzRmNmEzYzU0ZTk5YzcxNjU1NzhiYWU3MjJmMzhlY2I4ZTU4Yy4uNTMxNmJjM2QwNmM5MmE2
ZTcyNzRkYjgxMmM0YjljZjIxMTk1MTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04Nyw3ICs4Nyw2
IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0
SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KLSNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2
ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2VsZWN0aW9uUmVjdC5oPiAvLyBGSVhNRTogV0sy
IHNob3VsZCBub3QgaW5jbHVkZSBXZWJLaXQgaGVhZGVycyEKICNpbXBvcnQgPHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg+CkBAIC05OCw2ICs5Nyw3IEBACiAjaW1wb3J0IDx3dGYvU2V0Rm9y
U2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1dlYWtP
YmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC00ODk1
LDkgKzQ4OTUsOSBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0
QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50QXRMbwogLSAodm9pZClhY3Rpb25TaGVl
dEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1l
bnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAg
aWYgKF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50KQotICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Np
c3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpi
b3VuZGluZ1JlY3RdOworICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJl
U2hlZXRGb3I6V1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVj
dF07CiAgICAgZWxzZSBpZiAoX3dlYlNlbGVjdGlvbkFzc2lzdGFudCkKLSAgICAgICAgW193ZWJT
ZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6dXNlclZpc2libGVTdHJpbmcodXJs
KSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOworICAgICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFu
dCBzaG93U2hhcmVTaGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6
Ym91bmRpbmdSZWN0XTsKIH0KIAogI2lmIEhBVkUoQVBQX0xJTktTKQpAQCAtNjE4Nyw3ICs2MTg3
LDcgQEAgLSAoVUlWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclBy
ZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWUKIAogICAgIE5TVVJMICp0YXJnZXRVUkwgPSBj
b250cm9sbGVyLnByZXZpZXdEYXRhW1VJUHJldmlld0RhdGFMaW5rXTsKICAgICBVUkwgY29yZVRh
cmdldFVSTCA9IHRhcmdldFVSTDsKLSAgICBib29sIGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcg
PSAhY29yZVRhcmdldFVSTC5pc0VtcHR5KCkgJiYgKFdlYkNvcmU6OnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoY29yZVRhcmdldFVSTCkgfHwgV2ViQ29yZTo6cHJvdG9jb2xJcyhjb3JlVGFyZ2V0VVJM
LCAiZGF0YSIpKTsKKyAgICBib29sIGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRh
cmdldFVSTC5pc0VtcHR5KCkgJiYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShjb3JlVGFy
Z2V0VVJMKSB8fCBXVEY6OnByb3RvY29sSXMoY29yZVRhcmdldFVSTCwgImRhdGEiKSk7CiAKICAg
ICBpZiAoW19wcmV2aWV3SXRlbUNvbnRyb2xsZXIgdHlwZV0gPT0gVUlQcmV2aWV3SXRlbVR5cGVM
aW5rKSB7CiAgICAgICAgIF9oaWdobGlnaHRMb25nUHJlc3NDYW5DbGljayA9IE5POwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MubW0KaW5kZXggYmRjYzU3MTBmYzdmNDk2NWYzYzk4ZGUxNzE2MTM1OWZhNzM1NzU4Mi4uNWFh
Y2M1ZWU5MDQ1YWFmZGMxNmEzNjM1YTFlYmY0MWE5MjRhNDQwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBA
IC00MSwxMyArNDEsMTMgQEAKICNpbXBvcnQgIl9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJv
dmlkZXIuaCIKICNpbXBvcnQgIl9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIgogI2lt
cG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hT
ZXQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBm
cm9tIFdlYktpdDIKICNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblBy
b3ZpZGVyLmg+CkBAIC0xODQsNyArMTg0LDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6
YXRpb25HcmFudGVkCiAKICAgICAgICAgaWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0
ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oW3JlcXVlc3QudmlldyBV
SURlbGVnYXRlXSk7CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6
ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOildKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgcmVx
dWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CisgICAg
ICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7
CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIo
QVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQoKSwgKnJlcXVlc3Qub3Jp
Z2luLmdldCgpKSk7CiAgICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwogICAgICAg
ICAgICAgV0tXZWJWaWV3ICp2aWV3RnJvbVJlcXVlc3QgPSByZXF1ZXN0LnZpZXcuZ2V0KCk7CkBA
IC0yMDAsOCArMjAwLDggQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVk
CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OnNob3VsZFJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6aXNNYWlu
RnJhbWU6bWFpbkZyYW1lVVJMOildKSB7CiAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkqIG1haW5GcmFtZSA9IHJlcXVlc3QuZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCk7
CiAgICAgICAgICAgICBib29sIGlzTWFpbkZyYW1lID0gcmVxdWVzdC5mcmFtZSA9PSBtYWluRnJh
bWU7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVS
TCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgbWFp
bkZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAg
IFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKKyAgICAg
ICAgICAgIFVSTCBtYWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogICAgICAg
ICAgICAgcmVxdWlyZXNVc2VyQXV0aG9yaXphdGlvbiA9IFt1aURlbGVnYXRlIF93ZWJWaWV3OnJl
cXVlc3Qudmlldy5nZXQoKQogICAgICAgICAgICAgICAgICBzaG91bGRSZXF1ZXN0R2VvbG9jYXRp
b25BdXRob3JpemF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTWFpbkZyYW1lOmlzTWFpbkZyYW1lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbQppbmRleCBk
MzhmMzFjODE1ZjNjOWYzZTk4ZGE1MmU1NGZiODg4ODRlZDBhNDMwLi5hZWEwZDZkMzlmNjJkNzFk
OTY3NDQ2ZTY4MjI3ZWJkN2YyODNhZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0xlZ2FjeVBERlZpZXcubW0KQEAgLTQzLDExICs0MywxMSBAQAogI2ltcG9ydCA8TW9i
aWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVj
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJM
RXh0cmFzLmg+CiAKIC8vIEFsbCBvZiBVSVBERlBhZ2UqIGFyZSBkZXByZWNhdGVkLCBzbyBqdXN0
IGlnbm9yZSBkZXByZWNhdGVkIGRlY2xhcmF0aW9ucwogLy8gaW4gdGhpcyBmaWxlIHVudGlsIHdl
IHN3aXRjaCBvZmYgdGhlbS4KQEAgLTc3OSw3ICs3NzksNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0
QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50
QXRMbwogLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFu
dCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihDR1Jl
Y3QpYm91bmRpbmdSZWN0CiB7CiAgICAgX3dlYlNlbGVjdGlvbkFzc2lzdGFudCA9IGFkb3B0TlMo
W1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwotICAg
IFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJW
aXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKKyAgICBbX3dlYlNlbGVj
dGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVy
bCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKICAgICBfd2ViU2VsZWN0aW9uQXNzaXN0YW50ID0g
bmlsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBk
ZmY0YzZjYmYwMDMyZTE1NWNiY2I5MWYxM2FiZmIzZGMyMzQwMWVhLi5jZjRlOGE3MzMzNGZmNTdj
MjZkY2YxNTJkMjM3NGNhZThkYmNjZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S1BERlZpZXcubW0KQEAgLTM4LDExICszOCwxMSBAQAogI2ltcG9ydCAiX1dLV2ViVmlld1ByaW50
Rm9ybWF0dGVySW50ZXJuYWwuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVD
b3JlU2VydmljZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgotI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0
cmFzLmg+CiAKIEBpbnRlcmZhY2UgV0tQREZWaWV3ICgpIDxQREZIb3N0Vmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSwgV0tBY3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlPgogQGVuZApAQCAtNDk3LDcg
KzQ5Nyw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Np
c3RhbnQgKilhc3Npc3RhbnQgb3BlbkVsZW1lbnRBdExvCiAtICh2b2lkKWFjdGlvblNoZWV0QXNz
aXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdp
dGhVUkw6KE5TVVJMICopdXJsIHJlY3Q6KENHUmVjdClib3VuZGluZ1JlY3QKIHsKICAgICBhdXRv
IHNlbGVjdGlvbkFzc2lzdGFudCA9IGFkb3B0TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFs
bG9jXSBpbml0V2l0aFZpZXc6W19ob3N0Vmlld0NvbnRyb2xsZXIgdmlld11dKTsKLSAgICBbc2Vs
ZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3Ry
aW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKKyAgICBbc2VsZWN0aW9uQXNzaXN0YW50
IHNob3dTaGFyZVNoZWV0Rm9yOldURjo6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpi
b3VuZGluZ1JlY3RdOwogfQogCiAjaWYgSEFWRShBUFBfTElOS1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQppbmRleCA0ZWRkOTRiZWJjZGRiNTA0MGIw
MDk0ZmM0ODdhNTUyNmU2OTI1MGZlLi4yNjU4YjM2M2I0MTFhM2JiZmI2ZDRkZDZkM2VkYTRkMWFh
YjIxY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVl
bi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1Mu
bW0KQEAgLTQ1LDEyICs0NSwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlld3Bv
cnRBcmd1bWVudHMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9OU1N0cmluZ1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1VSTEZvcm1hdHRpbmdTUEkuaD4KICNpbXBvcnQgPHd0
Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1w
b3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CkBAIC05NDEsNyArOTQxLDcgQEAgLSAodm9pZClfdXBkYXRlTG9jYXRpb25JbmZvCiAgICAg
aWYgKExpbmtQcmVzZW50YXRpb25MaWJyYXJ5KCkpCiAgICAgICAgIGRvbWFpbiA9IFt1cmwgX2xw
X3NpbXBsaWZpZWREaXNwbGF5U3RyaW5nXTsKICAgICBlbHNlCi0gICAgICAgIGRvbWFpbiA9IHVz
ZXJWaXNpYmxlU3RyaW5nKHVybCk7CisgICAgICAgIGRvbWFpbiA9IFdURjo6dXNlclZpc2libGVT
dHJpbmcodXJsKTsKICNlbmRpZgogCiAgICAgTlNTdHJpbmcgKnRleHQgPSBuaWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5n
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2Rp
bmcuY3BwCmluZGV4IDE3ZjY2YjcxNzc5YzA1NDljZjY4YWUyODE2NTgxOGE3MjlkNjYzZmUuLjlm
Njc4NTg3NmU2OWM3YjY0ZGQyMTAyODUwZTBmNTYwNGQ4ZTRiODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3Bw
CkBAIC0xMTMzLDcgKzExMzMsNyBAQCBib29sIGRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25z
dCB1aW50OF90KiBieXRlcywgc2l6ZV90IHNpemUsIFNlc3Npb25TdGF0ZSYgcwogICAgIH0KIAog
ICAgIGlmIChhdXRvIHByb3Zpc2lvbmFsVVJMU3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3Ry
aW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzZXNzaW9uU3RhdGVEaWN0aW9uYXJ5LCBwcm92
aXNpb25hbFVSTEtleSkpKSB7Ci0gICAgICAgIHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTCA9
IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgcHJvdmlzaW9uYWxVUkxTdHJpbmcpOworICAg
ICAgICBzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwgPSBVUkwoVVJMKCksIHByb3Zpc2lvbmFs
VVJMU3RyaW5nKTsKICAgICAgICAgaWYgKCFzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwuaXNW
YWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
Lm1tCmluZGV4IGY4NzIwNzA2NGM3YmU1MWVhZWJiMjdhMDMxZDQ5MDUxMTJiMzg4ZjQuLjRhYWZk
ZmYzZGVhOGNmOTQyZDAwYTQwYzdiNzRhN2YxM2M2YzZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5t
bQpAQCAtMzgsMTMgKzM4LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAu
aD4KICNpbXBvcnQgPFdlYkNvcmUvR2VvbWV0cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPHBhbC9zcGkvbWFjL0RhdGFEZXRlY3RvcnNTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFj
L0xvb2t1cFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNNZW51U1BJLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL21hYy9OU1BvcG92ZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL1F1aWNr
TG9va01hY1NQSS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6LCBRdWlja0xv
b2tVSSkKIFNPRlRfTElOS19DTEFTUyhRdWlja0xvb2tVSSwgUUxQcmV2aWV3TWVudUl0ZW0pCkBA
IC0yNzYsMTcgKzI3NiwxNyBAQCAtIChpZCA8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250
cm9sbGVyPilfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXIKIAogICAgIFN0cmluZyBhYnNvbHV0
ZUxpbmtVUkwgPSBoaXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBpZiAoIWFi
c29sdXRlTGlua1VSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29s
SXMoYWJzb2x1dGVMaW5rVVJMLCAibWFpbHRvIikpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9j
b2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJtYWlsdG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBr
V0tJbW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9h
bmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJ0ZWwiKSkgewor
ICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKGFic29sdXRlTGlua1VSTCwgInRlbCIpKSB7CiAg
ICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvblRlbExpbms7CiAgICAgICAgICAg
ICByZXR1cm4gW3NlbGYgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rXTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5
KGFic29sdXRlTGlua1VSTCkpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZh
bWlseShhYnNvbHV0ZUxpbmtVUkwpKSB7CiAgICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0
ZUFjdGlvbkxpbmtQcmV2aWV3OwogCiAgICAgICAgICAgICBRTFByZXZpZXdNZW51SXRlbSAqaXRl
bSA9IFtOU01lbnVJdGVtIHN0YW5kYXJkUXVpY2tMb29rTWVudUl0ZW1dOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmNwcAppbmRleCAyMDlhODVkZWEzYjYzMGQyN2MxYzIxMjUxNTU2ZGNjMGM1YTgyYjk3Li41
NTY5ZGYyZWE4NTVkMTVjNWFlNDcxNDlhNTFhYjRjMmI0NjM3YWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXltZW50Q29vcmRpbmF0
b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRp
ZmllciwgYwogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6T3BlblBheW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUs
IHJlcGx5SUQpKTsKIH0KIAotYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50
VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQorYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6
OnNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVS
TD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3QmIHBheW1lbnRSZXF1ZXN0KQogewogICAgIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJM
U3RyaW5nczsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxpbmtJY29uVVJMIDogbGlua0ljb25VUkxz
KQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpwYXltZW50
Q29vcmRpbmF0b3JEZXN0cm95ZWQoKQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFs
aWRhdGVNZXJjaGFudChjb25zdCBTdHJpbmcmIHZhbGlkYXRpb25VUkxTdHJpbmcpCiB7Ci0gICAg
cGF5bWVudENvb3JkaW5hdG9yKCkudmFsaWRhdGVNZXJjaGFudChXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIHZhbGlkYXRpb25VUkxTdHJpbmcpKTsKKyAgICBwYXltZW50Q29vcmRpbmF0b3Io
KS52YWxpZGF0ZU1lcmNoYW50KFVSTChVUkwoKSwgdmFsaWRhdGlvblVSTFN0cmluZykpOwogfQog
CiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25zdCBX
ZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IGU0ODg3Y2M4
OGFiMWYxOWZiZGE5OWYzYzBiMmM4YWVkMWRiM2EwNDQuLjAyMTJkNmFkYmJiOTA1MWZiMWJiNDY5
NmQ1ZDlhODI5NTFhZjI0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTYwLDcgKzYwLDcgQEAg
Y2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1l
bnRDb29yZGluYXRvckNsaWVudCwgcHIKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5n
JiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJD
b3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlu
a0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYp
IG92ZXJyaWRlOworICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5n
VVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVN
ZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcAppbmRleCAzZjI3MTIzMmQ2M2U0YTRmNzc0NWVmMjhjNjRlYWU1NTM4YzRiN2I5Li43
ZmU5MzM0YmE0ZjM1OWM3MmIwZDkxZDU1NDJhNzE2NDQ2MmU2ZGU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uCiAgICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OkNhY2hlcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwgdXBkYXRlQ291
bnRlciksIDApOwogfQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmll
dmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBjb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmV0cmlldmVS
ZWNvcmRzKG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1
cmwpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9X
ZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2Fj
aGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDQ4MGVkZGQ5YjRlNTE1YzRiNGFh
ZTZkNGM2ZDk0MjU4ZmNiZTI1MmIuLmQyZTBkZjJkODYwOTIyYTNiMWUzNTZiZTkyMWU3ODAxOTg2
ZGM3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hl
L1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBXZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gewogICAgIHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkb1JldHJpZXZl
Q2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKSBmaW5hbDsKIAotICAgIHZvaWQgZG9SZXRy
aWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZl
UmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBjb25zdCBVUkwmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24o
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMm
JikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6UmVjb3JkPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDUwNzEzMTNl
YzYyNTMwN2M0MGI1YjQwMTBmNzBjNjFjNzUwNDE1ZDcuLjlkNjFlOTFjZWFmYzAwNjE0OWU3MDMy
Yjg5ZWZmZmJmNWRhMWM1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lz
dHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFJl
ZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJM
JiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFu
ZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuaAppbmRleCBiMDU0ODliOGEyM2JjNzkwYjk1ZTZlYzlmMGQ1YzgyZWQwOWY4
NzNjLi5hNGM1ZjY4NGFkNWYxNjM0N2IwNzA3OTE4NWY3N2E5YWI3YjAwYTk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgK
QEAgLTMxLDEzICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lz
dHJ5UHJveHkgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoK
LSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgUmVmPFdl
YkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJM
JiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOwot
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNv
cmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdl
YkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkg
b3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChj
b25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25n
IGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248
dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMDhkZGJiZWE3MmJkZTdhNjg2Y2U3NWM0ZjRm
Yzk4NjhjNmFmYjQ4OS4uODAxMmE4NGY0YzgzODg4MDI2MzY3MTkwNjBkNDg1NGE2NGYwNDBjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oCkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7
Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTUsNyBAQCBj
bGFzcyBQYWdlTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkg
PSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6
OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCop
IHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFS
ZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViS2l0OjpXZWJQYWdlJiwgV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQ
dHI8QVBJOjpPYmplY3Q+JikgeyB9CkBAIC05Niw3ICs5NSw3IEBAIGNsYXNzIFBhZ2VMb2FkZXJD
bGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBmZWF0dXJlc1VzZWRJblBhZ2UoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYpIHsg
fQotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50Rm9yVVJMKFdlYktpdDo6V2ViRnJh
bWUmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCB7IHJldHVybiBXVEY6OlN0cmluZygpOyB9
CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViS2l0OjpXZWJGcmFt
ZSYsIGNvbnN0IFdURjo6VVJMJikgY29uc3QgeyByZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQogCiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMoKSBj
b25zdCB7IHJldHVybiAwOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4
IDRjMGM2YWVkMzg5OWQ4YjI4N2NjMTEwZWIwNzk3NmZmMTRjNzFhZTMuLjA0NjBlYzYzZjA3OGFk
ZjVkY2VhYmMzMGVlODI3NjNjZDNmNTg1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5j
cHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUxheWVy
VHJlZUFzVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmKQogCiBib29sIFdLQnVuZGxlRnJh
bWVBbGxvd3NGb2xsb3dpbmdMaW5rKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVm
IHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5n
TGluayhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsK
KyAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhVUkwoVVJM
KCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1lSGFuZGxl
c1BhZ2VTY2FsZUdlc3R1cmUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKQEAgLTIxNywxMiAr
MjE3LDEyIEBAIGJvb2wgV0tCdW5kbGVGcmFtZUdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIGRvdWJsZSoKIAogV0tTdHJpbmdSZWYgV0tCdW5kbGVG
cmFtZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lUmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJ
KHRvSW1wbChmcmFtZVJlZiktPnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKKyAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5hbWVGb3JS
ZXNvdXJjZVdpdGhVUkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBX
S1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4g
dG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwo
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOworICAg
IHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5taW1lVHlwZUZvclJlc291cmNl
V2l0aFVSTChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKSk7CiB9CiAKIGJvb2wgV0tC
dW5kbGVGcmFtZUNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVS
ZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDA3ZDAyNDI0MzZiZDQxNDU4MDJj
YjE1OWUzYjBkOTcwMTRmM2EzMDguLjllOWEyYjFkNTI4NmUxNGZjNDQ2OGJjMTAwMmQ1YWE3NjY2
MjVmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02Niw5ICs2Niw5IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJMYXllckNvbXBvc2l0b3IuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luRGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00
MjUsNyArNDI1LDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxlUGFn
ZUhhc0xvY2FsRGF0YUZvclVSTChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJs
UmVmKQogewotICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChX
ZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICBy
ZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5oYXNMb2NhbERhdGFGb3JVUkwoVVJMKFVSTCgpLCB0b1dU
RlN0cmluZyh1cmxSZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVQYWdlQ2FuSGFuZGxlUmVxdWVz
dChXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5n
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcAppbmRleCBiNWUxNjU3YTBkMjFmNmMxYzk3YmI5MDM4
ZmQ0YTUwMTk5YmNmMWFkLi43MTU3NDlhNDkyMzljMzFhYWI3ZmMxYWVkZDAyNjIzZTE0ZThhYWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3Bw
CkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udmVy
dFRvVVRGOFN0cmluZy5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNSw3ICszNSw3IEBAIGdjaGFyKiBjb252ZXJ0VG9VVEY4
U3RyaW5nKFdURjo6U3RyaW5nIGNvbnN0JiBzKQogICAgIHJldHVybiBnX3N0cmR1cChzLnV0Zjgo
KS5kYXRhKCkpOwogfQogCi1nY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpVUkwg
Y29uc3QmIHMpCitnY2hhciogY29udmVydFRvVVRGOFN0cmluZyhVUkwgY29uc3QmIHMpCiB7CiAg
ICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcocy5zdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29u
dmVydFRvVVRGOFN0cmluZy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuaAppbmRleCBlNDk0MTEzYTNmOGZm
NmU5YzRkYmU2OGFmOWYxZDhhMmUyMjJmZWM5Li5jMzcyNTM1OWI4OTM0N2MxZjg4OTZhZGM1YmNh
YjRiNmE0NDk2YzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4
U3RyaW5nLmgKQEAgLTIzLDEzICsyMyw5IEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIHR5cGVkZWYgY2hhciBnY2hh
cjsKIAogZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV1RGOjpTdHJpbmcgY29uc3QmIHMpOwot
Z2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6VVJMIGNvbnN0JiBzKTsKK2djaGFy
KiBjb252ZXJ0VG9VVEY4U3RyaW5nKFVSTCBjb25zdCYgcyk7CiAKICNlbmRpZiAvKiBDb252ZXJ0
VG9VVEY4U3RyaW5nX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dC5jcHAKaW5kZXggMWJiMGJhMTYwMzcyOGJjMmZjOTI0OTdhY2IwMTM2YmI5OTkwNTcyYi4uMDgz
MTc0ZTVlZDIxZjk4Mzk3M2IyNmM3ZDdjOGM0ODhlMTAyYzIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaAppbmRleCA0OTM1NjYxZWUyNDg4ZjYzODAxNGU4NjlkZDhmMTEyMDlh
NDhiODEwLi4wMWRkOTkwNzljYjU0ZmI2MzM1ZWNmYTNlMzczMzVlZTFiNjViZjczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNCw3ICszNCw2
IEBACiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIGNsYXNzIFN0cmluZzsKLWNsYXNz
IFVSTDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudEJhc2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50VjAsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnRWMiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjMsIFdLQnVuZGxlUGFnZUxvYWRlckNs
aWVudFY0LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50VjYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY3LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnRWOCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Vjk+IFZlcnNpb25zOwpAQCAtNDgsNyArNDcs
NyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpD
bGllbnQ8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZQogICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudChjb25zdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKik7CiAK
ICAgICB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxMb2Fk
RGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgIHZv
aWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAg
ICBib29sIHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2UmLCBJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBXZWJG
cmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKQEAgLTg3LDcgKzg2LDcgQEAg
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50
PFdLQnVuZGxlUGFnZUxvYWRlckNsaWUKIAogICAgIHZvaWQgZmVhdHVyZXNVc2VkSW5QYWdlKFdl
YlBhZ2UmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+Jikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6
OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViRnJhbWUm
LCBjb25zdCBVUkwmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkxheW91dE1pbGVz
dG9uZXMgbGF5b3V0TWlsZXN0b25lcygpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZTJhNjk3OGZlMjgzYWQ1M2MzNDhiZjA3MDdhYjY4
ZGY3ZDk2MjM2Mi4uOTAzYzZkMDEyYzFkYjI4OGZiYTIzOGI1NzhiZDA2NTYzNDQ4ZDgxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2Fj
aGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAxMjc4YzFiNDQz
ZmFkN2JmYTcxZjEwZjJiNGYyODY4NmI2ZTAzNDRmLi42NWNmNDIzYWIxNjgyNzI1YWZkOTRhMzE0
YmUxNDdiODNlYTlmMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBX
ZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVu
dGlmaWVyLCBSZXNvdXJjZUUKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlcnJv
ciksIFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJl
Y29ubmVjdFRvKEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgY29uc3QgV2ViQ29yZTo6VVJMJiB1
cmwsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVj
b25uZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0
IFVSTCYgdXJsLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgdWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBnZW5lcmF0ZUxvYWRJZGVudGlm
aWVyKCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxl
cnMuYWRkKHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaAppbmRleCBlMDQwZDA3NTVjNzk0ZGJkNzFlYTljNTU4ODQyYTA2NWM1MmRmNWRl
Li4xYzJmYjNmMTFlNDVlM2I3ZWE4ODI5NjNmYTFjYTA5M2Q4ZTZlMTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAg
LTU1LDcgKzU1LDcgQEAgY2xhc3MgV2ViTG9hZGVyU3RyYXRlZ3kgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6TG9hZGVyU3RyYXRlZ3kgewogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXImLCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RS
ZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVk
aXJlY3RVUkwpIGZpbmFsOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCkgZmluYWw7CiAg
ICAgCiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRQ
cmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpIGZpbmFsOwogCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNz
IFdlYkxvYWRlclN0cmF0ZWd5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5
IHsKICAgICB2b2lkIHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVl
c3RIZWFkZXJzLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3Qg
cGluZ0xvYWRJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFt
ZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBw
cmVjb25uZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAogICAgIHZvaWQgc3Rv
cmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiBib2R5SGFzaCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0UHJvdmlkZXIuaAppbmRleCAwMjQ0ZTVmMmM4ODYyMDUzMTc2OTllY2ZkMWUxYTFi
MjNjN2ZkOTk4Li42OWI3ZmEzYjQxNmY0ZWYzOTZhZWFkZTRjMTIwODRiYjM1MmIxMTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3Zp
ZGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTb2Nr
ZXRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRQcm92aWRlciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxXZWJTb2NrZXRQcm92aWRlcj4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRQcm92aWRlcik7IH0KLSAgICBSZWY8V2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlPiBjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgV2ViQ29yZTo6
VVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbikgZmluYWw7CisgICAgUmVmPFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVS
TCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pIGZpbmFsOwogICAgIHZpcnR1YWwgfldl
YlNvY2tldFByb3ZpZGVyKCkgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCA3YTBiOWUzMTJlYjk5ZDQ3
YWM1MmRlZTlkZTRhYTY4ZWFmNTRkNzQ3Li4xZDVlMjI5YWMyM2RhMzA4N2U0NmQ5MzU1NjVhYWE0
ZDY3YjVhMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmPFdlYlNvY2tldFN0cmVh
bT4gV2ViU29ja2V0U3RyZWFtOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhh
bmRsZUMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRTdHJlYW0odXJsLCBjbGll
bnQsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbikpOwogfQogCi1XZWJTb2NrZXRTdHJl
YW06OldlYlNvY2tldFN0cmVhbShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbikKK1dlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0
U3RyZWFtKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQm
IGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFy
dGl0aW9uKQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQogICAgICwgbV9j
bGllbnQoY2xpZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRTdHJlYW0uaAppbmRleCAzZmViNmE2MzVmZmU5ZTc5MjMxZDMyYjUxYzYzZmI3
Mjg3N2Q5OWUzLi4zODlhMGI5OGI3NTk4Y2M2NjhiZThkYjQ1ZjE3MTFiOGZlOGY3NzBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
aApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0
U3RyZWFtIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlLCBwdWJsaWMgSWRlbnRp
ZmllZDxXZWJTb2NrZXRTdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNvY2tl
dFN0cmVhbT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQ
YXJ0aXRpb24pOworICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0U3RyZWFtPiBjcmVhdGUoY29uc3Qg
VVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CiAgICAgc3RhdGljIHZvaWQgbmV0
d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiAgICAgc3RhdGljIFdlYlNvY2tldFN0cmVhbSogc3RyZWFt
V2l0aElkZW50aWZpZXIodWludDY0X3QpOwogICAgIApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBX
ZWJTb2NrZXRTdHJlYW0gOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
ZmluYWw7CiAKLSAgICBXZWJTb2NrZXRTdHJlYW0oY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CisgICAgV2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYs
IFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOwogICAgIH5XZWJTb2NrZXRTdHJlYW0oKTsK
IAogICAgIHNpemVfdCBtX2J1ZmZlcmVkQW1vdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCmluZGV4IDAwM2QyN2ExMDE4Nzk4ODlkYWE2NmZhYTBjNmQ5OTNlOTE2MGUxMGYuLmM2YTUw
NjkxNzQwYTVkYjNlNjVmMTk3NTcxYjdiZDQwMDViYjcxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHAKQEAgLTM4LDggKzM4LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJNYXAu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAj
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShVTklYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggYmNi
M2Q3ZmI3NzdkMTMxYzdmMjQ3NmY2NWIxNTJmMDQzOTAxNDZkNy4uNzRhODRlOTI3Y2Y1YTdkZjYy
MjM2Y2Y0YTliZmZiOTU1MTIzOWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0xMzksNyAr
MTM5LDcgQEAgY2xhc3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJsaWMgUGx1Z2luIHsKIAogICAgIHZv
aWQgc2V0SXNQbGF5aW5nQXVkaW8oYm9vbCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyUmVkaXJlY3Qo
TmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGlu
dCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKKyAgICB2
b2lkIHJlZ2lzdGVyUmVkaXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25E
YXRhKTsKICAgICB2b2lkIHVybFJlZGlyZWN0UmVzcG9uc2Uodm9pZCogbm90aWZ5RGF0YSwgYm9v
bCBhbGxvdyk7CiAKICAgICAvLyBNZW1iZXIgZnVuY3Rpb25zIGZvciBjYWxsaW5nIGludG8gdGhl
IHBsdWctaW4uCkBAIC0yMDQsMTMgKzIwNCwxMyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1
YmxpYyBQbHVnaW4gewogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJl
cXVlc3RJRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVz
dElELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUph
dmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25z
ZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAorICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRS
ZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVS
TCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVz
cG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0Nh
bmNlbGxlZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCAKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJl
c3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2
b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IDQwNzQwNzhkN2E4ZmI1MzhjZmY0N2RjMWFkYTRmOWQy
MGI3MGQyMmYuLmJiNmE1YjA4YzdjY2U1ZGRlZDg5OTM2MGY3YWI4MzQwZjAzOTVlNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgTmV0c2NhcGVQbHVnaW47CkBAIC01NSw4ICs1MSw4IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2lu
U3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHsKICAgICB1
aW50NjRfdCBzdHJlYW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtSUQ7IH0KICAgICBjb25z
dCBOUFN0cmVhbSogbnBTdHJlYW0oKSBjb25zdCB7IHJldHVybiAmbV9ucFN0cmVhbTsgfQogCi0g
ICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3Bv
bnNlU3RhdHVzKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpV
UkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCisgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlZGlyZWN0UmVzcG9u
c2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaAppbmRleCBlNThkZTJjNzYwZGRiMTRjMTJjNGNiZmJmNzVjZTkyZjVh
YjhlMDFhLi42ODYyZTMwNGZlZGI4NWI3ODYzNDcwMGI5ZDZiMzVhNmMzYzIwY2VjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0x
MzUsMTIgKzEzNSwxMiBAQCBjbGFzcyBQREZQbHVnaW4gZmluYWwgOiBwdWJsaWMgUGx1Z2luLCBw
cml2YXRlIFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhIHsKICAgICB2b2lkIGZyYW1lRGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVEaWRGYWls
KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiBy
ZXN1bHQpIGZpbmFsOwotICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0
cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9Ci0gICAgdm9pZCBz
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1v
ZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJz
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHN0cmVh
bVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJM
LCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQor
ICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVy
cywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBzdHJl
YW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRf
dCBzdHJlYW1JRCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVh
bUlELCBib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qg
c3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVp
bnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUp
IGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNo
TG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0Nh
bmNlbGxlZCkgZmluYWw7CkBAIC0zMDYsNyArMzA2LDcgQEAgY2xhc3MgUERGUGx1Z2luIGZpbmFs
IDogcHVibGljIFBsdWdpbiwgcHJpdmF0ZSBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSB7CiAKICAg
ICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNvcmU6OlVSTCBtX3NvdXJjZVVS
TDsKKyAgICBVUkwgbV9zb3VyY2VVUkw7CiAKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFt
ZTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNzFiOGNm
ODMzNDNjNmNmODUyYTBkMDk3MjgzOGRmZmFkMjcwNmM4YS4uZTRjZDY1MzU2MTE2MjQ2YmZhNjhm
NzRiMTZiNDMxNTY4ZDc5NzViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xNzAyLDcgKzE3MDIsNyBAQCBib29sIFBERlBs
dWdpbjo6aGFuZGxlc1BhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiB2b2lkIFBERlBsdWdpbjo6Y2xp
Y2tlZExpbmsoTlNVUkwgKnVybCkKIHsKICAgICBVUkwgY29yZVVSTCA9IHVybDsKLSAgICBpZiAo
cHJvdG9jb2xJc0phdmFTY3JpcHQoY29yZVVSTCkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29yZVVSTCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFtZSA9
IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uaAppbmRleCA4NzZmNmNlNDhlY2NiNjA2MzM5NDc2YTY2NjFmMjZmNGY5MGFhNDcy
Li5hYWJkNWU1MDUxYmVjMjlmNTUxMTU3MzgwNjFhNmE2MDhlZjIzMTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjMsMTYgKzIzLDE1IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbHVnaW5faAot
I2RlZmluZSBQbHVnaW5faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRP
cHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTUzLDE1ICs1Miwx
NSBAQCBjbGFzcyBEZWNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOwotICAgIGNsYXNzIEZsb2F0UG9pbnQ7Ci0gICAgY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwotICAgIGNsYXNzIEludFBvaW50OwotICAgIGNsYXNzIEludFJlY3Q7Ci0gICAg
Y2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBGbG9hdFBvaW50OwotICAgIGNsYXNzIFNjcm9sbGJh
cjsKLSAgICBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFz
cyBGbG9hdFBvaW50OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW50UG9pbnQ7Citj
bGFzcyBJbnRSZWN0OworY2xhc3MgSW50U2l6ZTsKK2NsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBT
Y3JvbGxiYXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtODIsNyArODEsNyBAQCBlbnVtIFBsdWdpblR5cGUgewogY2xhc3MgUGx1Z2luIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogcHVibGljOgogICAgIHN0cnVjdCBQYXJh
bWV0ZXJzIHsKLSAgICAgICAgV2ViQ29yZTo6VVJMIHVybDsKKyAgICAgICAgVVJMIHVybDsKICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVl
czsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwpAQCAtMTY3LDEwICsxNjYsMTAgQEAgY2xhc3Mg
UGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogICAgIHZpcnR1
YWwgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBT
dHJpbmcmIHJlc3VsdCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0
cmVhbSBtYXkgc2VuZCBhbiBIVFRQIHJlcXVlc3QuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVdp
bGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1
ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0
dXNDb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNl
VVJMLCBpbnQgcmVzcG9uc2VTdGF0dXNDb2RlKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1
Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAor
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZp
ZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBw
bHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE4Myw3ICsxODIsNyBA
QCBjbGFzcyBQbHVnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7CiAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2Fz
Q2FuY2VsbGVkKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51
YWwgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZv
aWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVz
cG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCisgICAgdmlydHVhbCB2b2lkIG1hbnVh
bFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJf
dCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFt
IGRpZCByZWNlaXZlIGRhdGEuCkBAIC0zMjMsNSArMzIyLDMgQEAgY2xhc3MgUGx1Z2luIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJLaXQ6OlRvVmFsdWVUeXBlTmFtZSkgXAogc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYktpdDo6UGx1Z2luJiBwbHVnaW4pIHsgcmV0dXJuIHBsdWdpbi50eXBlKCkgPT0gV2Vi
S2l0OjpTcGVjaWZpY1BsdWdpblR5cGU7IH0gXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQotCi0jZW5kaWYgLy8gUGx1Z2luX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAppbmRleCBhNWM2ZmEwNDNjMzYyMjY5NDFjOGQy
MTQ3YjIxMjA4ZWMyZjI5NDc1Li5hMWY4MDdlMWU1NTA3MjNlZmVlYTE3NzEzM2I4MWRmZjRkMTc2
YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5D
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Q29udHJvbGxlci5oCkBAIC00Myw3ICs0Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwot
Y2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGRjNDIxMWQwMGVkODkxMGQzNDdk
OGYwY2ExYjc1M2M2YjJlNmVhMWQuLmU2YWIzZWQ5YjAzMmZlMDRjMDJkZjVjNjg5MmU0N2Q0ZTY5
ZDRhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaApAQCAtODcsMTIgKzg3LDEyIEBAIGNsYXNzIFBsdWdpblByb3h5IDogcHVibGljIFBsdWdp
biB7CiAgICAgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKSBv
dmVycmlkZTsKICAgICB2b2lkIGZyYW1lRGlkRmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wg
d2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2
b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQg
cmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3Qo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNw
b25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURp
ZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURh
dGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9v
bCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50
MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBv
dmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZp
bmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9v
bCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBmMDc1MmJkOTgyYTE1M2JhZDRiMjkyNDVmMTAz
MjE5NzBlYjNhYzkxLi4zY2FhYWM5YWMxY2QzZGJkNmJmNDZmZWM1ZDcxZjE0MWRmNDViMzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtMTE2Myw3ICsxMTYzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdChV
UkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIFJlZjxQbHVnaW5WaWV3PiBwcm90ZWN0KCp0aGlzKTsK
IAogICAgIC8vIEZpcnN0LCBjaGVjayBpZiB0aGlzIGlzIGEgamF2YXNjcmlwdDogdXJsLgotICAg
IGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChyZXF1ZXN0LT5yZXF1ZXN0KCkudXJsKCkpKSB7Cisg
ICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVybCgp
KSkgewogICAgICAgICBwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QocmVxdWVzdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIFBsdWdpblZpZXc6
OnBlcmZvcm1GcmFtZUxvYWRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAKIHZvaWQg
UGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVl
c3QpCiB7Ci0gICAgQVNTRVJUKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3Qo
KS51cmwoKSkpOworICAgIEFTU0VSVChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3Qt
PnJlcXVlc3QoKS51cmwoKSkpOwogCiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fcGx1Z2lu
RWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyLmNwcAppbmRleCA1YzUxYzQ1ZjY0MDlkZWVkZDU1ZTkzYzBmZDk4OGI3Yzg3M2Q4MzFhLi4z
ZjcwYjFlODdiOWFmZThmM2YwNjVhNDE5Y2NkYjk1MmNlZmZjZTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBWZWN0b3I8UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyOjpwbHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIHN0ZDo6b3B0aW9uYWw8VgogI2VuZGlm
IC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogfQogCi1WZWN0b3I8V2ViQ29yZTo6UGx1
Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQYWdl
JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFBhZ2UmIHBh
Z2UsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6
OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsK
ICAgICBhdXRvIHBsdWdpbnMgPSBwbHVnaW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklkZW50
aWZpZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5kZXggMWJiYWQ1YTc5ZmIxMWVjNjgwNzQ5NDdkMDA3
YzNjZDU2ZTU4MTlkZC4uODQ2NDJkN2ZjMDExZjhjYWNmNjQxYmIxYWVlOGYyODIzOTNjMDdlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1By
b3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiAgICAg
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4gcGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29y
ZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25z
dCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4g
d2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsOwog
ICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAyYmZhZWU0NzZlMWY0YmNjY2RiMjY2
MGZlNWQ4ZTY2YmQ2NzRhM2Q3Li5kY2Q2ZGE1ODA2YmIzMzJjMjRmZmVjODUxOGVlNTA5NmNiYWU3
ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtNzksMTMgKzc5LDEzIEBAIGNsYXNzIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24s
IHB1YmxpYyBJCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudERhdGEmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYpIGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKIAot
ICAgIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
dG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbihXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3Ry
YXRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1hdGNoUmVnaXN0cmF0aW9uKHVp
bnQ2NF90IG1hdGNoUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpOwogICAgIHZvaWQgZGlkR2V0UmVnaXN0cmF0
aW9ucyh1aW50NjRfdCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpOwotICAgIHZvaWQgd2hlblJlZ2lzdHJhdGlv
blJlYWR5KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdl
YkNvcmU6OlVSTCYgY2xpZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSBm
aW5hbDsKKyAgICB2b2lkIHdoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJh
dGlvblJlYWR5Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RyYXRpb25SZWFkeSh1
aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YSYmKTsKIAotICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyhXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMLCBHZXRSZWdp
c3RyYXRpb25zQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRV
UkwsIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVz
b2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRl
eCBlODczZmZmZDJhOGM3MDFhZTg2OTA1Y2U5ZTU3MDRmMWE3YjljOWI0Li5kOTc5NDY5OWM5MWRj
NWQ3NTZkYzMzYmRiMjU0NWM1ZjVkYzA0MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q28KICAgICB2b2lk
IG1hdGNoQWxsKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xhaW0oV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
ZmluYWw7CiAgICAgdm9pZCBza2lwV2FpdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgRnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNjcmlwdFJlc291
cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0
JikgZmluYWw7CisgICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYpIGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3NhZ2Vz
LgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IDAzNzAxMDZlOTJmMWZiMmE0YWJk
ODUxMTE2YzcyNjJmZTQ1NDAwZmIuLjYyNmY2MWE1MGE2NDU5ZDQ5NTY3ZDY4YmZlY2JhODc3YmJh
NmFiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTU3LDEwICs1NywxMCBA
QCBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
VXNlckNvbnRlbnRQcm92aWRlciwgcHJpdgogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIgaWRlbnRpZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBh
ZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBXZWJDb3JlOjpVc2VyU2Ny
aXB0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgcmVtb3ZlVXNlclNj
cmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IFVSTCYpOwogICAg
IHZvaWQgcmVtb3ZlVXNlclNjcmlwdHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAg
IHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdlYkNv
cmU6OlVzZXJTdHlsZVNoZWV0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRXaXRo
VVJMKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAg
ICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkJiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldHMoSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBmOTM2NjdhZTQ4ZTlkNzgxZjMyZjI2YTEwYTNh
NTJmN2NmYThjMzE2Li41YTQ2ZWY4MDdkNzAxNzNlOWZjMTgzMzI3ZDc2MWJmYjI1Y2M4ZDU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgYm9vbCBXZWJDaHJv
bWVDbGllbnQ6OnVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRL
ZXksIFZlY3RvcjwKIAogI2VuZGlmCiAKLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0
cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QKK1N0
cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1
bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25z
dCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtl
eVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFn
ZS5wYWdlSUQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMDk0OGY2N2FiZWMxNGQ4NGU2ZGY1
NTY0MjcxZWQ2ZTEzZDk0MjRjZS4uM2ZlZTBjYjAxYjM2ZGI4NmY2ZjNhZjAzOTNjYWEzYTE1ZjM1
ZDAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIFdlYkNo
cm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIHZv
aWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSBmaW5hbDsKICAgICBib29sIGFkanVz
dExheWVyRmx1c2hUaHJvdHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpG
bGFncykgZmluYWw7CiAKLSAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+
JikgZmluYWw7CisgICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJM
JiwgY29uc3QgSGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIGZpbmFsOwogCiAj
aWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNv
cigpIGZpbmFsIHsgfQpAQCAtMzI1LDcgKzMyNSw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVudCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIGJvb2wgdW53cmFwQ3J5
cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IGZp
bmFsOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcs
IGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJp
bmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAKICNpZiBFTkFC
TEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKICAgICB2b2lk
IGhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRl
eCBjZWMzMTQyYjE2ZTM1ZDAwMmNmYzhjNDJmNGU3ODFiODJlYmU4NThjLi41ZDhlN2Q2ZDBmYTUx
YTEwNTFkODBjYTE3NjZlZTM3N2ZiY2YzY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7CiBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1l
bnVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSBv
dmVycmlkZTsKICAgICB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUq
KSBvdmVycmlkZTsKICAgICB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSop
IG92ZXJyaWRlOwogICAgIGJvb2wgaXNTcGVha2luZygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgK
aW5kZXggOWY3ZDdmYzUwYjZlYzhhZWU1NmJiMjU5YjczMzQwYzQwZDkzNjcyNy4uMWFkNGMzZGUy
Y2I3ZDM4ZTYyNjJjMTk3YWFiMjRjY2E2ZmVkYTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC01MCw3
ICs1MCw3IEBAIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVu
dCB7CiAgICAgdm9pZCBkaWRDb25jbHVkZUVkaXREcmFnKCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJD
b3JlOjpFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUq
KSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYzIzNTM5NTM1
MzJiMDc3NzAyMjA1NzNmMmRmMzZiOGNjMzY2ZjdhYy4uY2E5ZTYzN2JjNTk3ZWE2MjlhMTZmMjA3
MTBhNDRiNWYxNGUzNWFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0x
Nzk2LDcgKzE3OTYsNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd1NjcmlwdChi
b29sIGVuYWJsZWRQZXJTZXR0aW5ncykKICAgICByZXR1cm4gIXBsdWdpblZpZXcgfHwgIXBsdWdp
blZpZXctPnNob3VsZEFsbG93U2NyaXB0aW5nKCk7CiB9CiAKLWJvb2wgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsKQorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2
ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFnZSog
d2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IGMxYjljZDBmOTQzMzI3OWNkZDg0YzBjOTVmYTgxYjk4NGU1
ZjU0ZTguLjNjNzE2Njg1MGIyNTE1NjZkNWU0NDBlZTNmNTkzN2NiOWNjZjcwMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05NywxMyArOTcsMTMgQEAgY2xhc3MgV2ViRnJhbWVM
b2FkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKmRldGVjdGlv
blJlc3VsdHMpIGZpbmFsOwogI2VuZGlmCiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZU1haW5E
b2N1bWVudCgpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29u
c3QgV2ViQ29yZTo6VVJMJiBjdXJyZW50VXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG5ld1VybCkg
ZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxDaGFuZ2VEb2N1bWVudChjb25zdCBVUkwmIGN1
cnJlbnRVcmwsIGNvbnN0IFVSTCYgbmV3VXJsKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hE
aWREaXNwYXRjaE9ubG9hZEV2ZW50cygpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBmaW5hbDsKICAgICB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkwoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNo
RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBmaW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoV2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2YWws
IFdhbGxUaW1lIGZpcmVEYXRlKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZpcmVE
YXRlKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdl
KCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBmaW5h
bDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOwpA
QCAtMTU1LDggKzE1NSw4IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBib29sIHNob3VsZEdvVG9IaXN0
b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBk
aWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRp
ZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7CisgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7CiAK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxv
Y2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOwpAQCAtMTg5
LDkgKzE4OSw5IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVD
YWNoZWREb2N1bWVudExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIGZpbmFsOwogCi0g
ICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3Jl
OjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikgZmluYWw7CiAgICAgCi0gICAgU3Ry
aW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBTdHJpbmcgdXNl
ckFnZW50KGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5KCkgY29uc3QgZmluYWw7CiAKQEAgLTIxMCwyMCArMjEwLDIwIEBAIGNsYXNz
IFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50IHsKICAgICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
KiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVp
Z2h0KSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50
JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJn
aW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgZmluYWw7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6
V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhU
TUxQbHVnSW5FbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVh
bGx5KSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3Qg
VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBmaW5hbDsKICAgICB2b2lkIHJlY3JlYXRlUGx1
Z2luKFdlYkNvcmU6OldpZGdldCopIGZpbmFsOwogICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVn
aW4oV2ViQ29yZTo6V2lkZ2V0JikgZmluYWw7CiAgICAgCiAjaWYgRU5BQkxFKFdFQkdMKQotICAg
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAg
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBj
b25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9s
aWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmIC8vIEVOQUJMRShXRUJH
TCkKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBmaW5hbDsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcykgZmluYWw7CiAgICAgCi0gICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUg
b2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgZmluYWw7CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVu
dFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CiAgICAgU3Ry
aW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNo
RGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIGZp
bmFsOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKIAogICAgIGJvb2wgYWxsb3dT
Y3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIGZpbmFsOwogCi0gICAgYm9vbCBzaG91bGRG
b3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5h
bDsKKyAgICBib29sIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0
IFVSTCYpIGZpbmFsOwogCiAgICAgUmVmPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+
IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKaW5kZXggZTk3NzNlYTc4MGEzMzJhZTU5ZjAyNzhhZTgzYTMwNzZkZDI3OTc2
ZS4uMWQzZWVlNzk4M2NlZWMyMTEwYzJmODU3YTMyYjRlZTVjNmUxZjI5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTYwLDkgKzYwLDkgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1NhbWVTaXRlSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFjZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU3ViZnJhbWVMb2FkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWlj
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRl
ICJTdHJpbmdVdGlsaXRpZXMuaCIKQEAgLTM2NCw3ICszNjQsNyBAQCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChpbgogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CiB9CiAKLVdl
YkNvcmU6OlVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitV
UkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0
cmluZyB1cmxTdHJpbmc7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0
aXRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDZlZWMwOWIxZWQy
MmI5YWQwNjhlM2Y2OTI0YjU5MjU3NDUxNWQxNDYuLjc2YTgxMGFmZDNlMGZmNTA3OTNiNWRmMTVj
ZWVjODNhMjRhMTRhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ3LDEz
ICs0NywxMyBAQCBjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6
UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdp
c3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpD
b29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9N
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2ll
c0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6
OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1
ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJv
YXJkU3RyYXRlZ3kKICNpZiBQTEFURk9STShJT1MpCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFdl
YlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMs
IHByaXZhdGUgV2ViQ29yCiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKLSAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Cisg
ICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3Jl
OjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRm
b3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZh
dGUgV2ViQ29yCiAgICAgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdl
YkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwotICAgIFdlYkNvcmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CisgICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKIAogICAgIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBz
ZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bQppbmRleCAzYmQ3ZDFmYmIzOGNiMjA5YWZkYjcxZGViMThiOWQ5MWVkZDkxMzBmLi5hZTU5NTJk
MDhlNjQ5NzYxNjBjOGEzNDQ5NGI0YWQ2MGJhYTk3MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tCkBAIC00OCw4ICs0OCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVySW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3Ry
aW5nVHJ1bmNhdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0
cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtMTI5
LDcgKzEyOSw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgaWYgKHRpdGxlLmlzRW1w
dHkoKSkgewogICAgICAgICB0aXRsZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAg
ICBpZiAodGl0bGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgdGl0bGUgPSB1c2VyVmlzaWJsZVN0
cmluZygoTlNVUkwgKil1cmwpOworICAgICAgICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxl
U3RyaW5nKHVybCk7CiAgICAgfQogCiAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZWxlbWVudCk7CkBAIC0xNjYsNyArMTY2LDcg
QEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICAgICAgICAgIGZpbGVuYW1lID0gZG93bmxv
YWRGaWxlbmFtZTsKICAgICB9CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIGltYWdlSGFuZGxl
LCBpbWFnZVNpemUsIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCBTdHJpbmcoW1tyZXNwb25z
ZSBVUkxdIGFic29sdXRlU3RyaW5nXSksIHVzZXJWaXNpYmxlU3RyaW5nKChOU1VSTCAqKXVybCks
IGFyY2hpdmVIYW5kbGUsIGFyY2hpdmVTaXplKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBp
bWFnZUhhbmRsZSwgaW1hZ2VTaXplLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgU3RyaW5n
KFtbcmVzcG9uc2UgVVJMXSBhYnNvbHV0ZVN0cmluZ10pLCBXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KHVybCksIGFyY2hpdmVIYW5kbGUsIGFyY2hpdmVTaXplKSk7CiB9CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDFmOTBjNGE1
NzQwZjQxNTA5ZDhlODViMTlkNGEwN2U4MDA0M2EyNTQuLjNkMWZmODQ5MDMxMTExMTUxY2EyZTg3
YzhjNGU3MDdjMmYxMzM5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBA
IC00MCw3ICs0MCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29j
b2EvTlNVUkxFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
c2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oCmluZGV4IDA5MjNlNDYwOTU5YjBmMzRh
OTQyZWQ5MjRmMDQ0YzUzZjg0YzMzZTYuLjE3ZmE4ZWNjYTc4YmE4YWMyNzY4MTY1M2E3ZDJlN2Zk
ZDcwZmUyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
c2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaApAQCAtNDEsNyArNDEsNyBAQCBj
bGFzcyBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpW
aXNpdGVkTGlua1N0b3JlICwgcHJpdgogICAgIGV4cGxpY2l0IFZpc2l0ZWRMaW5rVGFibGVDb250
cm9sbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExp
bmtTdG9yZS4KLSAgICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6
OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRl
ZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5n
SGFzaCkgb3ZlcnJpZGU7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAyNTYwNzY5ZmJl
NGI1YjM3YzEyZDJlN2UxODQyZDAxYzNlOTE0NGVmLi5jMzI4OTdiM2I4ZTJiNWMxNjkyNGVlOWUz
MDI0NDY2NDY5MGMyNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCkBAIC01MDksNyArNTA5LDcgQEAgdW5zaWduZWQgV2ViRnJhbWU6OnBlbmRp
bmdVbmxvYWRDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKLWJvb2wg
V2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNv
bnN0Citib29sIFdlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFVSTCYgdXJsKSBj
b25zdAogewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggMmUwM2YyYmQ1
NTYyNTQ0ZDY3OGYxYTgzYTk1MzhjY2ZlNGEzNDY4Yi4uZWI4MTM2YWI3NzEwYTRlZDEzMGU2Nzk4
MDFiOTUwZDllY2E1OGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5oCkBAIC01Myw3ICs1Myw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1l
T3duZXJFbGVtZW50OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgVVJM
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwNiw3ICsxMDUsNyBAQCBjbGFzcyBXZWJG
cmFtZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUZy
YW1lPiB7CiAgICAgLy8gV0tCdW5kbGVGcmFtZSBBUEkgYW5kIFNQSSBmdW5jdGlvbnMKICAgICBi
b29sIGlzTWFpbkZyYW1lKCkgY29uc3Q7CiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBX
ZWJDb3JlOjpVUkwgdXJsKCkgY29uc3Q7CisgICAgVVJMIHVybCgpIGNvbnN0OwogICAgIFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKICAgICBTdHJpbmcg
aW5uZXJUZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3Q7CkBAIC0xNDEs
MTEgKzE0MCwxMSBAQCBjbGFzcyBXZWJGcmFtZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJ
OjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUZyYW1lPiB7CiAgICAgCiAgICAgdW5zaWduZWQgcGVuZGlu
Z1VubG9hZENvdW50KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBhbGxvd3NGb2xsb3dpbmdMaW5r
KGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgYWxsb3dzRm9sbG93aW5nTGlu
ayhjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIFN0cmluZyBwcm92aXNpb25hbFVSTCgpIGNvbnN0
OwotICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmKSBjb25zdDsKLSAgICBTdHJpbmcgbWltZVR5cGVGb3JSZXNvdXJjZVdpdGhV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVu
YW1lRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIFN0cmluZyBtaW1l
VHlwZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgc2V0
VGV4dERpcmVjdGlvbihjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyMmI4MDkwMTEyOTc2MjgwZGIzZmVmMjE4OGUy
ZTdiOGFiZWQ5NGQ5Li4wMjk1NjA1YTE0ZDgzYjllOWY5ODZmZGI4ZDY0NGI1M2RlNzI5N2QyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTI1
Nyw3ICsxMjU3LDcgQEAgdm9pZCBXZWJQYWdlOjpzZW5kQ2xvc2UoKQogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Q2xvc2VQYWdlKGZhbHNlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
bG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMJiYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQordm9p
ZCBXZWJQYWdlOjpsb2FkVVJMSW5GcmFtZShVUkwmJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiB7
CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUo
ZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTEzMjAsNyArMTMyMCw3IEBAIHZvaWQgV2Vi
UGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBwbGF0
Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0
YS5zaXplKCkpOwotICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmlu
Zy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNl
VVJMU3RyaW5nKTsKKyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJp
bmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVy
cy5iYXNlVVJMU3RyaW5nKTsKICAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdh
dGlvbklELCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBs
b2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVy
cy51c2VyRGF0YSk7CiB9CiAKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9h
ZEFsdGVybmF0ZUhUTUwoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewog
ICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAot
ICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkg
PyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsK
KyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgp
ID8gV1RGOjpibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3Ry
aW5nKTsKICAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBsb2FkUGFyYW1ldGVycy51bnJlYWNoYWJs
ZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMu
dW5yZWFjaGFibGVVUkxTdHJpbmcpOwogICAgIFVSTCBwcm92aXNpb25hbExvYWRFcnJvclVSTCA9
IGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nLmlzRW1wdHkoKSA/
IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVS
TFN0cmluZyk7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSks
IGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKQEAgLTMzNzMsNyArMzM3Myw3IEBAIHZvaWQg
V2ViUGFnZTo6YWRkQ29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJRCwgTWVzc2FnZVNvdXJj
ZSBtZXNzYWdlU291cmNlLCBNCiAgICAgICAgIGZyYW1lLT5hZGRDb25zb2xlTWVzc2FnZShtZXNz
YWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJRCk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6c2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcG9ydERh
dGEpCit2b2lkIFdlYlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgVVJMJiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXBvcnRE
YXRhKQogewogICAgIGF1dG8gcmVwb3J0ID0gcmVwb3J0RGF0YS50YWtlRGF0YSgpOwogICAgIGlm
ICghcmVwb3J0KQpAQCAtNTg3NCwxNCArNTg3NCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmltYWdlT3JN
ZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogdm9pZCBX
ZWJQYWdlOjphZGRVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVj
dGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKLSAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJT
Y3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVSTChXZWJDb3JlOjpibGFua1VSTCgpKSwgVmVjdG9y
PFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFt
ZXMgfTsKKyAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJj
ZSksIFVSTChXVEY6OmJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5n
PigpLCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCiAgICAgbV91c2VyQ29udGVu
dENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9y
bWFsV29ybGQoKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6YWRk
VXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclN0eWxl
U2hlZXQgdXNlclN0eWxlU2hlZXR7IHNvdXJjZSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVjdG9y
PFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVz
ZXJMZXZlbCB9OworICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0IHtz
b3VyY2UsIFdURjo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4o
KSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9OwogCiAgICAgbV91c2VyQ29u
dGVudENvbnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0KEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQ6Om5vcm1hbFdvcmxkKCksIFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNTBhYjRmZWQ5ZTRhNmNk
NDMxMzQ1Mjc2NmI4OTgwZDg3NWNjZjg4Li40YjVkOWQ4OGZlNWY5YmY5ZDQ4YzdlM2JiOTNkNjg4
NTc0ZmRjMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC0xNTksNyArMTU5LDYgQEAgY2xhc3MgU2VsZWN0aW9uUmVjdDsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsK
LWNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWNDbGlj
a1R5cGUgOiBpbnQ4X3Q7CkBAIC0zMTYsNyArMzE1LDcgQEAgY2xhc3MgV2ViUGFnZSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMg
SVAKICNlbmRpZgogCiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlE
LCBNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHJl
cXVlc3RJRCA9IDApOwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmKTsKKyAgICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgVVJMJiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJik7CiAgICAg
dm9pZCBlbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudCh1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpOwogCiAgICAg
Ly8gLS0gQ2FsbGVkIGJ5IHRoZSBEcmF3aW5nQXJlYS4KQEAgLTMzNCw5ICszMzMsOSBAQCBjbGFz
cyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVu
ZGxlUGFnZT4sIHB1YmxpYyBJUAogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQo
Y29uc3QgV2ViRnJhbWUmKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoV2ViRnJhbWUqKTsKICAg
ICB2b2lkIHNob3coKTsKLSAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYp
IGNvbnN0OwotICAgIFN0cmluZyB1c2VyQWdlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpV
UkwmKSBjb25zdDsKLSAgICBTdHJpbmcgcGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6
VVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKKyAg
ICBTdHJpbmcgdXNlckFnZW50KFdlYkZyYW1lKiwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgU3Ry
aW5nIHBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIFdlYkNvcmU6Oktl
eWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCk7CiAKICAgICB2b2lkIGRpZEluc2VydE1lbnVF
bGVtZW50KFdlYkNvcmU6OkhUTUxNZW51RWxlbWVudCYpOwpAQCAtNDE5LDggKzQxOCw4IEBAIGNs
YXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpC
dW5kbGVQYWdlPiwgcHVibGljIElQCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25z
dCBXZWJDb3JlOjpVUkwmKTsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdl
YkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3Qg
VVJMJik7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZv
clVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgCiAgICAgZW51bSBjbGFz
cyBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHsgTm8sIFllcyB9OwpAQCAtNjg1LDcgKzY4NCw3
IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRleHRN
ZW51QXRQb2ludEluV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYKIAot
ICAgIGJvb2wgaGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJv
b2wgaGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgY2Fu
SGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtOTQz
LDcgKzk0Miw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgTlNEaWN0aW9uYXJ5ICpk
YXRhRGV0ZWN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YURldGVjdGlvbkNvbnRl
eHQuZ2V0KCk7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNG
b2xkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgV2ViQ29yZTo6VVJM
JiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXpl
KTsKKyAgICB2b2lkIHNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0
aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwg
Y29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKQEAgLTExNTksNyArMTE1OCw3IEBAIGNsYXNzIFdlYlBh
Z2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdl
PiwgcHVibGljIElQCiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAot
ICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZ05hbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6
VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgbG9hZERhdGFJbXBs
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVS
TCYgYmFzZVVSTCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogCiAg
ICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKQEAgLTExOTcsNyArMTE5Niw3IEBA
IGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgc3RhdGljIGJvb2wgc2Nyb2xsKFdlYkNvcmU6
OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFy
aXR5KTsKICAgICBzdGF0aWMgYm9vbCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJD
b3JlOjpTY3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7
CiAKLSAgICB2b2lkIGxvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCYmLCB1aW50NjRfdCBmcmFt
ZUlEKTsKKyAgICB2b2lkIGxvYWRVUkxJbkZyYW1lKFVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsK
IAogICAgIGVudW0gY2xhc3MgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07CiAg
ICAgdm9pZCByZXN0b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGU+JiwgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QsIFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5OjpPdmVyd3JpdGVFeGlzdGluZ0l0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZDc1YWNlZWEwZTAw
MDIzYWIyMTliMjkxMzllMzYyMjZhZjljNmM3Ni4uMjdjYWEyN2NlNTcxZTIyYWEwODE5NmEyMmM2
NzJiNDU4YjAzZGE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yOCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdz
QmFja2dyb3VuZCkKIAogICAgIEFkZENvbnNvbGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGVu
dW0gTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBlbnVtIE1lc3NhZ2VMZXZlbCBtZXNzYWdl
TGV2ZWwsIFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgU2VuZENTUFZp
b2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpVUkwgcmVwb3J0VVJMLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCisgICAgU2VuZENTUFZpb2xhdGlvblJl
cG9ydCh1aW50NjRfdCBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlIHJlcG9ydERhdGEpCiAgICAgRW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQo
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6
SW5pdCBldmVudEluaXQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE0Myw3ICsxNDMsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHb1RvQmFja0Zvcndh
cmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQsIGVudW0gV2ViQ29yZTo6RnJhbWVMb2Fk
VHlwZSBiYWNrRm9yd2FyZFR5cGUsIGVudW0gV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCkKICAgICBUcnlSZXN0b3JlU2Nyb2xs
UG9zaXRpb24oKQogCi0gICAgTG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMIHVybCwgdWludDY0
X3QgZnJhbWVJRCkKKyAgICBMb2FkVVJMSW5GcmFtZShVUkwgdXJsLCB1aW50NjRfdCBmcmFtZUlE
KQogICAgIExvYWRSZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJh
bWV0ZXJzKQogICAgIExvYWREYXRhKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzKQogICAgIExvYWRBbHRlcm5hdGVIVE1MKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJh
bWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggZTU4
ZTlmMWRkN2IwNzdmNTYxY2E1MWM5MmZlZjcxNWIwYWUxNDI5ZC4uNzM1NjZhMTMzODVkZTNhYWM2
NDZmYjk0OTZiZGRhZmNiNWFmNDZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCkBAIC00
MCw5ICs0MCw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUHJpbnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxndGsvZ3Rr
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCkBAIC00NTQs
MTMgKzQ1NCwxMyBAQCBib29sIFdlYlByaW50T3BlcmF0aW9uR3RrOjpjdXJyZW50UGFnZUlzTGFz
dFBhZ2VPZlNoZWV0KCkgY29uc3QKICAgICByZXR1cm4gKG1fbnVtYmVyVXAgPCAyIHx8ICEoKG1f
cGFnZVBvc2l0aW9uICsgMSkgJSBtX251bWJlclVwKSB8fCBtX3BhZ2VQb3NpdGlvbiA9PSBtX251
bWJlck9mUGFnZXNUb1ByaW50IC0gMSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBXZWJQcmludE9wZXJh
dGlvbkd0azo6ZnJhbWVVUkwoKSBjb25zdAorVVJMIFdlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFt
ZVVSTCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3ByaW50Q29udGV4dCkKLSAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OlVSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBXZWJDb3JlOjpE
b2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX3ByaW50Q29udGV4dC0+ZnJhbWUoKS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKLSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIgPyBk
b2N1bWVudExvYWRlci0+dXJsKCkgOiBXZWJDb3JlOjpVUkwoKTsKKyAgICByZXR1cm4gZG9jdW1l
bnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKTsKIH0KIAogdm9pZCBXZWJQ
cmludE9wZXJhdGlvbkd0azo6cm90YXRlUGFnZUlmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmgKaW5kZXggYjI2MmRmMzRjODA1ZmFhY2RmMjAwNzgxZGI3YWFmZTA0MmU3ZjUyNC4uYjdlMTQ0
NDI5NGIyNTEyN2Q0NTJmMTJhNDhiMmZhZTg5NTgyMGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmgKQEAgLTQwLDcgKzQwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a1BhZ2VSYW5nZSBHdGtQYWdl
UmFuZ2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQcmludENvbnRleHQ7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwotY2xhc3MgVVJMOwogfTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05
Nyw3ICs5Niw3IEBAIGNsYXNzIFdlYlByaW50T3BlcmF0aW9uR3RrIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViUHJpbnRPcGVyYXRpb25HdGs+IHsKICAgICB2b2lkIHByaW50UGFnZXNEb25lKCk7CiAg
ICAgdm9pZCBwcmludERvbmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZv
aWQgc2VuZFByaW50RmluaXNoZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAg
IFdlYkNvcmU6OlVSTCBmcmFtZVVSTCgpIGNvbnN0OworICAgIFVSTCBmcmFtZVVSTCgpIGNvbnN0
OwogCiAgICAgV2ViUGFnZSogbV93ZWJQYWdlOwogICAgIEdSZWZQdHI8R3RrUHJpbnRTZXR0aW5n
cz4gbV9wcmludFNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IGJlZDI4N2RmYWM5Yjk0NGU0MzQyOGYyMjQ3MzMxNjBmMjc0MDYxZWQuLjQ0YWZlZWMy
MGYxZWIxN2MyMjU4YjNjNjMyYTE5MzA2OWJmYjQxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTExNCwxMiArMTE0LDEyIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5o
PgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmls
ZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJh
Y2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKICNpZiAhT1MoV0lORE9XUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGRiYzU3OWI5OTVmMTliYzMy
OTUxY2M4MDJlNjVhN2ZmODdhMjgxNDIuLjYyZjM5MDU3ZTEyZGQzMjA1ZjkwMzUyNTdhZTE0OTBk
ZWE2YTM2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQpAQCAtNjAsNyArNjAsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Njcm9s
bGVySW1wRGV0YWlscy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8YWxnb3JpdGhtPgogI2ltcG9y
dCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpAQCAtNzEs
NiArNzAsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJLmg+CiAjaW1wb3J0IDxzdGRpby5o
PgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1Mp
CiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLmgiCkBAIC00MzYsNyAr
NDM2LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBpZiAoTlNVUkwgKm9yaWdpbkFzVVJMID0gb3JpZ2luKCpw
YWdlKSkKLSAgICAgICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmplY3Q6dXNlclZpc2libGVT
dHJpbmcob3JpZ2luQXNVUkwpXTsKKyAgICAgICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmpl
Y3Q6V1RGOjp1c2VyVmlzaWJsZVN0cmluZyhvcmlnaW5Bc1VSTCldOwogICAgIH0KIAogICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJ
T1JJVFlfREVGQVVMVCwgMCksIFthY3RpdmVQYWdlVVJMc10gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuY3BwCmluZGV4IDZiNGE2NmJmYTM4ZjA1MzJhMGNiZWE1OTAxNDIzZGE1NWZmZDg4NjAu
LjNiNWFiYTIzMzgwNDQxMTM4NzhjZTA4YWMyMGJkMGYyZDU3NjA5N2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAKQEAgLTM1LDkgKzM1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtU3RyYXRlZ2llcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU2V0
Rm9yU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5k
ZXggOGE1NmE5ZTc5OWZhMWZmODI0OWYwMTQwY2FkMzgxYTVlMmFjYTgzYi4uZWRmNjUxZmE2ZGZi
Y2EzMThhOGY2ZjIwN2Y0YjY0OWFkZTFiZjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5o
CkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSB7CiAKICAgICB2b2lkIHJlbW92ZShXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwotICAgIHZvaWQgY3Jvc3NPcmln
aW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiByZWRpcmVjdFVSTCkgZmluYWw7CisgICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0
UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJM
KSBmaW5hbDsKICAgICAKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNvcmU6OlJl
c291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFdlYkNvcmU6OlJlc291cmNlTG9h
ZFByaW9yaXR5OjpWZXJ5TG93KSBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVz
dHMoKSBmaW5hbDsKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKIAogICAgIHZvaWQg
c3RhcnRQaW5nTG9hZChXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlv
bnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogCi0gICAgdm9pZCBwcmVj
b25uZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOworICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwg
Y29uc3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRv
Q2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWwgeyB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBj
bGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9h
ZGVyU3RyYXRlZ3kgewogICAgICAgICBGaW5kT25seQogICAgIH07CiAgICAgCi0gICAgSG9zdElu
Zm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENyZWF0ZUhvc3RQb2xp
Y3kgPSBGaW5kT25seSk7CisgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0IFVS
TCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdS
ZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSk7
CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJpbmdI
YXNoPiBIb3N0TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUF0dHIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQppbmRleCBl
OGY3NmYxNjRlMDY1ZjgwMjhlOWE2ZjY3ZWEzNWQ1MmViN2VjODc1Li4yMTZiYTY1NDgwNzFjNjZk
MWE1YTYwNGQ5Y2RhZGMzYWNiMjk5ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQXR0ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
QXR0ci5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkF0dHIq
PihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCmluZGV4IDRlNmVkYzU2YTYzZmY0Y2E3Y2Y0YjQ2
Y2UxYzc3MjQ4MzkxMTNjNmUuLmRlNTkxM2NhMTg2MDBjOGVkM2M5NTJiMWE5NjlkN2VlZWRiNzUy
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCkBAIC0zMSwxMCArMzEs
MTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9j
YXN0PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbQppbmRleCBkMWI1ZWFiZDc1ZDZmYWI2Yzdj
Y2M3ZDY2YWZmMjNkNGMyMTIwMWQ0Li43YmZmZmRjMjFkYmEwODk3ZjY2ZmU1YWUxNDU1M2M1ZWM1
MzdiZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTQ2hh
cnNldFJ1bGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0NoYXJz
ZXRSdWxlLm1tCkBAIC0zMCw5ICszMCw5IEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5o
IgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiBAaW1wbGVtZW50YXRpb24gRE9NQ1NTQ2hhcnNldFJ1bGUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQppbmRleCA4ODA0
ZjI0NTAwYmQ2ZThlZjdjMmI2MGU0NzA2N2U2YzkyZDNlMDAzLi5jNTE3OGFlMjAxODRjNjJmYjNk
YTBhZGZlNjg3ZTQzZDRhZTUyYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQ1NTSW1wb3J0UnVsZS5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYUxpc3QuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkNTU0ltcG9ydFJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihf
aW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTTWVkaWFSdWxlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU01lZGlh
UnVsZS5tbQppbmRleCAxNTlhOWE0OTQ5ODdiZDU0NTE5Y2JkNjJlNDMwOTAxYTdkMGM4YzllLi5l
YjVkY2YyMmY3Y2ZiOGM2MTY3OTk3OWE1YTMyNDgyNTNmOWY5ZTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0KQEAgLTM1LDkgKzM1LDkgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFM
aXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NNZWRpYVJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNv
cmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTUGFnZVJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQ1NTUGFnZVJ1bGUubW0KaW5kZXggZjM2MjIzMWNlNWJjZmQ2ZGVhNjVmMTFkMzE0YzQx
YmRjOWY5MzQyOS4uYjZiYzI3ODA5OWY4MjQ3NzE3YjJmOWI3MjkxYmY5M2JmZTgxNTE0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQYWdlUnVsZS5tbQpAQCAtMzQs
OSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1BhZ2VSdWxlKj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmluZGV4IDM1
YTg5MzQ5YzMyMTI4YmY5MzcyNWI2NmZhYzQ2NjY0ODhkNmUwNTguLjA1NWVhOWVjNGFiNWE1MTIz
OTc2OGMzZjc3YjllMDM2OTllNzk3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBv
cnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6RGVwcmVjYXRlZENTU09NVmFsdWUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCmluZGV4IGQ0OGNiM2Y5MjI5ZGRi
MmJkNjNkZDk5ZjA5MWZkNWJjNWM2NTJkMGYuLmExMmIwZThjOGYwNzc3MDE2OGU5OGNiN2FhNzU1
MWQ3YWZkNWIyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
U1NSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1t
CkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2Jq
Q0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24u
bW0KaW5kZXggMmQ5ZmVmZmZjMTU0MDBkOTg3MzMxMzNjOGEzNzRmMWQ2ZTkzOGVmOC4uYjNiMDdm
MzM5ODY4NmRlZGJkMGRkMmM5MjQ2NDE5YTFlY2ZkNzY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KQEAgLTM2LDEw
ICszNiwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNv
cmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbio+KF9pbnRlcm5hbCkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZVJ1bGUubW0KaW5kZXggOGE0
Y2ZmMzBjZGQ1NTMxMmY3ZGQ0MjdlNTEyMWEwNjYxZDEwYjkwOS4uMmFlMTkxM2IyZTQzZjgzMTJm
ZWI0MDg0MmFhOGY5N2UwZmI0ZjY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQ1NTU3R5bGVSdWxlLm1tCkBAIC0zNCw5ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6Q1NTU3R5bGVSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUNTU1N0eWxlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NT
U3R5bGVTaGVldC5tbQppbmRleCA4YzI0MDYwMTZjMGVhNWNlYmFlZWFkZDZkZmQ5OTU5NzE1MTA4
OGFkLi4yNjlmMDI0OGM3YzYwMTQwZTQ3NGI4ODQwN2IwMGEzODAwNjVmZmI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQpAQCAtMzYsOSAr
MzYsOSBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6OlN0eWxlU2hlZXQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0KaW5kZXggMGM2ZTA3NGQ4ZjNkMTUwNTAwMDkxYjEx
MWRkOTk4N2M4OGFhNzM4Zi4uYjc3ZDRiODcyMDY1OTYzMDhjNzMyZjhhZjM0YzE2MTQ4OWY2MjFk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbQpAQCAtMzEs
MTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01WYWx1ZSo+KF9pbnRlcm5hbCkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRhdGEu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQppbmRl
eCA4YzNiNGQ0YTU4MmZlOTQ3YTBjMzhkMDY0ZjlhMTI5MWI1OTljOWMzLi5iMzBlOTU3OTQwZWQ5
NjY1NzViYzYzNDk0NGU3YTkxNjBlNTI5MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0
ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9DaGFyYWN0ZXJEYXRhLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDaGFyYWN0ZXJE
YXRhKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQppbmRleCAyZDFlNTY1N2VhMmQ2
NjhkMjAwNWI1M2M0ODU5ZWRkOWQ1MmY4YmY4Li4zMDg3MDFlNWI0ODE4Njc0NzMyM2MxOGRlZWQ0
ZTQzMGFkYWMyYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q291bnRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5t
bQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9i
akNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Db3VudGVyKj4oX2lu
dGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9j
dW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5k
ZXggYWQ1NTg1MjlhYmI3ODNhODFkM2Y5ODMyZmM0M2Y5YWJjM2EyM2E1MC4uM2IwNGQzOTMzZDI0
YWFlMzMzNWJkODdiODEwNjlmNGNjZTdiZDYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtODIsMTIgKzgyLDEyIEBACiAjaW1wb3J0IDxXZWJDb3Jl
L1RleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNv
cmUvVHJlZVdhbGtlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aEV4cHJl
c3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhOU1Jlc29sdmVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1hQYXRoUmVzdWx0Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KaW5kZXgg
OTZkMDMyOWI0OWFlNjE1YjcxZWZhYTRjMDViMjY5MTFkZTg1YzE3ZC4uMmVlMmNmODRjNjM5NDhj
MDAwMmY4YTY1ZDhjZDY2OWE3Njc5ZDI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01Eb2N1bWVudFR5cGUubW0KaW5kZXggZTIwMTE3NmE5MmRjNjY2NDBjZDUwMWVmN2VjMjBhY2Q4
NDY0YWY5Mi4uN2IyZTAzZWM1MjFjZGYwNzQwMzI2NTkwMGU2ZDNjYjA2MzQyYTNkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRUeXBlLm1tCkBAIC0zMiw5
ICszMiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL05hbWVkTm9kZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
ZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRUeXBlKj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUV2ZW50Lm1tCmluZGV4IDYwY2RiNmU1N2Y1YmUxNzYwZjRkOTE1ZDM4YWU0YTMz
NTU3NTE3Y2QuLjJkNjE1NGIxZTA2NDZkOGEzMWMwYzAzMGVjZTYzMzNmYjUxNmMwODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FdmVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRXZlbnQubW0KQEAgLTMzLDEwICszMywxMCBAQAog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OkV2ZW50Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NRmlsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1t
CmluZGV4IGVkYTg3ZmZmMWM0ZTRiNWE5YTg3YzZkYjhiNDAyYWM0YjI0YjI4N2YuLmZkYzU0MTNi
OWE1ZjQ2YjllZGE1ZmMwYTdiMzZhZTVmODVkM2RiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01GaWxlLm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZpbGUqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0KaW5kZXgg
NDQ2MGYyN2M2ZGZkZDMwNjU2MGMxMjRkOWQ3OTk0MWM4ZDVjODUyZC4uYzZjMDFiZDdhNjk2MTc3
MGNlOGZmMThlNTc2YzEwOTg1ZWZmNDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MQW5jaG9yRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tCmluZGV4IGE4NDU0MmRhNDdkNjQ0ZGMzNjJl
OGZkMWRmYjUyZDA2YjIxM2E2NGEuLjI2YjhkM2M1OGJlYmQyZDdkNWRiMmU4ZGNjY2UyNjlhMGY5
NWJjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXBw
bGV0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFw
cGxldEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5h
bWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
QXBwbGV0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJl
YUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFyZWFFbGVt
ZW50Lm1tCmluZGV4IGM0YWIyMzIwMjc1N2VmYzIyNmQzNDdlNTBhMjEwZGQ0M2UxMjA1MmUuLmI5
YWNhODk2YTRjMDkxNzY4Y2ZhMDMxOGI2YzZiN2EwN2VkNTc1NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBcmVhRWxlbWVudC5tbQpAQCAtMzQsOSArMzQs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQlJFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KaW5kZXggY2Y1YjNlMDg4NDEzOWM5OGU0Yjc4
Y2IzNzhkZjFhNjdjNDM1OThiOC4uNDMyNDY0YjhkZDJkNTYyNjMxMDE4OGM3MTgwNzI4NTkxNjMz
OTM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVs
ZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1l
bnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQlJFbGVtZW50
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQubW0KaW5kZXgg
NTE0YjcwOTFiNDNkMTIyNzcyZDA3MGM3N2U2YTExZGY0ODAwNmMxMy4uYWZlM2I2OTkzYjYzODZk
NzM5ZTE0Y2ZjYTNiN2M5ZGY2OTQxZTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTEJhc2VFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SFRNTEJhc2VFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5tbQppbmRleCBhOTljMGI2MjM4MWYyNTFjMjFlODA3
Njg1ZmI5MzUwMzA2NzExYTRkLi4yNjMzYzgwZjcyNGQ4Nzk0NGRlYmY5MDhmMDM5MmZlN2JmY2Rh
NGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VG
b250RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJh
c2VGb250RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
VW5rbm93bkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxVbmtub3duRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9k
ZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MQm9keUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEJvZHlFbGVtZW50Lm1tCmluZGV4IDY5NTI5M2I0MjQ2M2ZiZTY2Mjg3YjA2NDc2NGVmNjlk
ZmU1OGY3MDQuLmRmNjEyMDg2NmM2YmM2MmM0MTIyMzM5N2ZmMWNiMzBjNmE2ZjQ0NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbQpA
QCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbQppbmRleCA5
OGFhMjdjNTYyNzVjNTQzY2Q0ZDllMmZiYjI3YzE4ZGI5ZDgyYWI1Li43Yzc1OTVkMzE0ODMwMzJj
ZmFlYmZlNDAxYzE3MzIxY2I5ZGJkNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxCdXR0b25FbGVtZW50Lm1tCkBAIC0zNiw5ICszNiw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL05hbWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNv
cmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTENhbnZhc0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTENhbnZhc0VsZW1lbnQubW0KaW5kZXggMGZkNjBhNmRhOGFhYWFiZTc0ZDJi
ZDJiZDk0NzliODE0YmQ5NjM1MS4uMThiMzEzZWI0NGFjMDM2YjAzN2Y1OGE5NDIzNTc2OWJlZGQx
MDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDYW52
YXNFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ2Fu
dmFzRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHJpbmdBZGFwdG9ycy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTENhbnZhc0VsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TENvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxl
Y3Rpb24ubW0KaW5kZXggZTM0NDA5OGNiNDhlMmQzOTBmNTQwYmMxZDUwZTY5NzNjYzQzZDdmMS4u
YWFjMTg1NDlkM2Q4YjQ3ODEzYmMxNTRiMWNhNWM0MTE3M2I1MzZkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ29sbGVjdGlvbi5tbQpAQCAtMzUsMTAgKzM1
LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxp
c3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6SFRNTENvbGxlY3Rpb24qPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRGl2RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRGl2RWxlbWVudC5tbQppbmRleCAyOTM2YWZhYzAyNTMxODU4
ZDFmYjhhOTRkMjcyZmZmOTVjZTk0OWRkLi45Y2IwM2EwMTE5NmI3ZjQ0MTU0NTI3YTdjNWMyNTVi
N2QzYWU5Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TERpdkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxE
aXZFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1l
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTERp
dkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEb2N1bWVudC5tbQppbmRl
eCAwMzc1YTNjZjRmZDY3MWY2MzM2ZmJiMzdjOWJiN2M5YWVmMDE3NjNkLi44OGQxNDJlYWRhODQx
MTM3MDUwMTQ4ZmNlNGVjODc1ZjAyMjdiN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRG9jdW1lbnQubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvSFRNTERvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MRG9jdW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVs
ZW1lbnQubW0KaW5kZXggYTVlMGNkMzE5MTNiZDM4NzMyNjYzNWU3OTM1ZjRhYTg5ODE5YzZmMC4u
MmZlMjRjNzA3NDk3ODg3MjUwODRmMzY2ZjkwYjlkODQ0OTc2ODA1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRWxlbWVudC5tbQpAQCAtMzYsOSArMzYsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhl
Y1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MRW1iZWRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0KaW5kZXggNmI4MmJlMDhlODIxNjZjMzE5NDBh
MzQ4ZWNmOTcyNTgyNTljYzlkMC4uMGQ2ZDg4MTQ3MWE4MTVlMjAzYTBjNDU0ZDBkNzY2YTYwOWQ3
ZTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJl
ZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJl
ZEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRW1i
ZWRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNl
dEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0
RWxlbWVudC5tbQppbmRleCBlYTkyYTAxOWE1MDY1Njk1YzY0NDZhZGE0OTM5NWY2ZmEzYWUyNjY2
Li4xZmQ0ZDgwYmM3MThjOTU2YTM1ZDZjOGJjMGEwN2ZiMDJhOTk2YzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpA
QCAtMzYsMTAgKzM2LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRpdHlTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRm9udEVsZW1lbnQubW0KaW5kZXggODBkZTQ5MDU0OTI0ODAzM2EzMmJm
Y2EwMzhiM2FmNzcxOWM2ZmI3Ni4uOTEwZThmN2Q0NjZmMWRlM2E3OGVjZDMyZmQ4NzcxYmI3ZTg0
ODJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvbnRF
bGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZvbnRF
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9ybUVsZW1lbnQubW0K
aW5kZXggYmZkZTFkYWQ4MTRlZGRjYmVhNzY1N2FmYjc4Y2QzNGY3YmVkZDU2Zi4uZTg2MjZiYTM1
YWEzMzdmNGI0YzdjZmExYmQ4MzNiOTVmZWVlNzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQppbmRleCA2MDBmNDRmODliYzQzOTk3ZGM0MGUw
MDZkMjZjYzM1MmUzODFhYWYxLi5lYjVjNTVhYzJiNjdhZjRkZWViZGY2MTVhMzc0ZTI1NzNlYjMz
YjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1l
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1l
RWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGcmFt
ZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lU2V0
RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRF
bGVtZW50Lm1tCmluZGV4IGYyZjIwN2YwNTI0OTdjMjE5N2I3NDM0NzdjM2NiYjMxMjZmZmM5OGEu
LjY5Yjk1YTA2Zjc4ZDg4Njg0MGUzNjYwNmI3NzE1YzI5MDYxNjQxNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCkBA
IC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KaW5kZXggYjI1Nzhh
YTJkZjNlZTg5MDA4NTYxMmZjMjE3NzM1ODM1MjY1Yjc2ZC4uYTcyNmJkYzFlMDIyN2FiMjZjZjAw
OWI3MzY3MzQxODdmZTQwMmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxIUkVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
SFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MSFJFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxI
ZWFkRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZEVs
ZW1lbnQubW0KaW5kZXggYmVmMzlhZTU3MDZmOTQ5YWNkMjdmNDFiNWQwYmIyN2VlZTJmZDJhNy4u
OWNhNGI4ODBiMWFhYWJhZDhjMzBhOWViMWQ2ZTQwZTMzMGJlZDgyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhlYWRFbGVtZW50Lm1tCkBAIC0zMSw5ICsz
MSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEhlYWRFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZGluZ0VsZW1lbnQubW0KaW5kZXggODExYmIxODA0
ODg2MWY4YjE3MTJjOTM1NmMxZDgyNzZkMDExMzE4OS4uYTJkZmI2YTNlYzFlYjA1YzhjYjMxMTEy
MjIwNDZhMDAyYzc5ZGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEhlYWRpbmdFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6SFRNTEhlYWRpbmdFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MSHRtbEVsZW1lbnQubW0KaW5kZXggMjg3Y2U3Zjk0ZmYyZTljOTY1ZjM1ZmRlNDMzNTBj
ZDRhYjNjYmMxZi4uZWJjM2NmZTc0ODYxNDI2MzNkMzM5MjZkNWRlMTNlNTlmZWMxOGNhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1t
CkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEh0bWxFbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCmluZGV4
IGYzODJjOWVmOGUwOTY5MjNhNjMwZTVkYmJkNTk3MjY3ZjFlMTY5ZGYuLmUzMjFiNGY3NmQyMTZl
MjNhM2Q5ZmEwNDNjY2VmNzg4YWMzN2E3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTElGcmFtZUVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNp
bXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MSW1hZ2VFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0KaW5kZXggZmM5MTk1M2NlY2MyY2FlZWU3NjJi
MzQ1NDIwMjQxYmJmOWIzNzE1MS4uZWJhNGVjOTIzMTZjMzljZTAxMzRjZGIwMDVkMTYwOTNiMDMy
MmRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFn
ZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFn
ZUVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJl
c3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5w
dXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVs
ZW1lbnQubW0KaW5kZXggODM2MzczNWQ5NDc0YTg2YmE4YTgwNWUwZjFhM2ViYTZmODRkNGJjZC4u
ZDczN2E1NTdlOWEzZWMwMzUzNTNjNTEyNjkwZGJlNzhlYjBlODQ3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KQEAgLTY0LDkg
KzY0LDkgQEAgQGVuZAogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMSUVsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxlbWVudC5tbQppbmRleCAyNjlkMWE1NGFk
ZDhjZTJiZDRmZWFmNmE0MmE2Mzk4MjA4NWZlZGEwLi5hM2NmM2ZhOGRiZmE4Y2VhZDdhMjlmYTk4
YzI3N2E4NGQ5YmYwZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTExJRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTExJRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
TmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhU
TUxMSUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVs
RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVt
ZW50Lm1tCmluZGV4IDUxZjU2MGMwOTc5MTg5M2FlNjZkYzU1MmQyZjk2OTdkMmZiZjAyODEuLjgx
MzkwMDBlYWVhNGNhN2QwZWU5MmI1ODBmNGNmMDgwMTdhMTE2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCkBAIC0zNSw5ICsz
NSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExhYmVsRWxlbWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbQppbmRleCA5MzQzY2E2ZTlk
ZmFmNzM3ODA2NTdjZjU0MmFlMTIyNTQ1MmQ4YjBjLi5kNGYxZjM2YzVmMjRiMTk0YTkyYzgyYjEw
Y2RiYTFkOGUxMGU2MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTExlZ2VuZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxMZWdlbmRFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTExlZ2VuZEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTExpbmtFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxMaW5rRWxlbWVudC5tbQppbmRleCAyMGY0YzAxNTE1ZGViNjBlZTRkYjM3OWEwMDVlNTI3Nzli
OWM1MjIwLi41Njg3YzQ1YmJhMGZhYzc0YjU0Yzk0ODVkOThhZTQ5ZThmNzM1YjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGlua0VsZW1lbnQubW0KQEAg
LTM2LDkgKzM2LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU3R5bGVTaGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Kj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tCmluZGV4IGI5MjFiM2E1
MGVkMDUxNTAzZjNkNzdjNDUwYmQzOTcxNmFkNGM5NjAuLjJjYzkwY2Y4NjM0ZTM5NmRkMDFmNGEw
YzExZjA2MTBlY2Q2MGU4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MTWFwRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTE1hcEVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
SFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MTWFwRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRl
cm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
TWFycXVlZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1h
cnF1ZWVFbGVtZW50Lm1tCmluZGV4IDYxYWI0YzYyMzMzZjk1NmUwNzI0MzYyNzcyZmMxZmZmY2E0
NmEyMzguLjk2MjNlZGIxNmFjMDk5YjQxZGM5NjM4NzU5MDQ0YjQ3MWI5MGJjZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5t
bQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KaW5k
ZXggNWJjNzQ1NmY2MGNmNzYxMmI1MDZlYmZkM2RjODlmYTQ3YWVjYTQ2Ny4uNzgzYTVhMTVlOWRl
MWM3NWU3NGRiODk1MmI0MTk5MjAxYTk0MzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KQEAgLTM4LDkgKzM4LDkgQEAKICNp
bXBvcnQgPFdlYkNvcmUvTWVkaWFFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaW1lUmFuZ2VzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MTWV0YUVsZW1lbnQubW0KaW5kZXggOTk4NzAwMmFmN2NiZTNkMTRkNjdjZjhj
NGYzYjgxZGUzZDNiZjI2Yy4uNzhlZDZlOTNjZGZhYTViOGM5NWY3NzJmMjAzZjM4NDRkODBlOTll
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1ldGFFbGVt
ZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE1ldGFFbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tCmluZGV4
IGQ4ODVmY2ZkMDgwMzZjNzM4MjkyZTAwNzA3MjFlZTVmODJlMzcxOWEuLjYwZjllNDVjN2IxZTM0
YmMwNjJlNmE0ZWIzMTI3NGFmNDY1YjI1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MTW9kRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTE1vZEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQg
PFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MTW9kRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9k
ZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MT0xpc3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxPTGlzdEVsZW1lbnQubW0KaW5kZXggYTMyYzJkOGJjOTcxMjE3MDdiNmUwZTM3OGU3NDUx
NTIyYzU1ODczMC4uYjdmYTU5YjZlNjY5NWY2NmM4OTY5YjFmYTQwNWU4ZTRhMWRlYWVlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQu
bW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE9MaXN0RWxlbWVudC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE9MaXN0
RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVu
dC5tbQppbmRleCA3YWI3M2Y1NzI5NDMwZDNiZjIwMjdlZGJjNWU0NjEwMzE0YmRjYTE1Li5kYjIz
NmQ4Yjk1ODZiOGI3MmFjOGU4OGNjZGYyYjQ5MGFiZWRiNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9iamVjdEVsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tCkBAIC0zNyw5ICsz
Nyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1JlbmRlckVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQppbmRleCA0
ZTUxNWRhZjU1YmI3Y2M1Y2MwMzhiYjUyNDA0YjZlZWYxYjU1Y2RiLi4xNzcxYzJlZmUzMTg2MmQ3
YjE1NTllMGQxMjQ3NTNmMTNmMzcwMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MT3B0R3JvdXBFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZp
bmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tCmluZGV4IGZkZWM1
NGVlMWQ2NDc4MWU2NmU4ODMzNGM1MmNmNTQxOGJjNzkzZGYuLjE0NTM1MWQ5YjZmZWUzZTNiMTJh
ZjMxZjA0YmMzMDM3ZmRhNzc5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MT3B0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTE9wdGlvbkVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQg
PFdlYkNvcmUvSFRNTE9wdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KaW5kZXggZjc3MGE4YTE0
ZDVhODNkNzY5NWU0MzcxOWVlMWFmNGRjYjY2NGNhMS4uMzkxMjEwMTU2MWY1ZmZkZjg5NDFlOWE3
MWJmYmU0YjgyOGY4NGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCkBAIC0zNSwxMCArMzUsMTAgQEAKICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZhcmlhbnQuaD4KIAogI2RlZmluZSBJTVBMIHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uKj4oX2ludGVybmFs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3Jh
cGhFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3Jh
cGhFbGVtZW50Lm1tCmluZGV4IDZjNTExZTkxNjY0Y2U5MjNjYzkyODRhMjU1YTExZTZhNzkzYjNm
ZDQuLjFhNTQzYjNmZDNlNmZlNzI4MjQ2YjJiYThjMTJmZjI2NDBmNjYwNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQu
bW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBhcmFncmFwaEVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxQ
YXJhZ3JhcGhFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQ
YXJhbUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFt
RWxlbWVudC5tbQppbmRleCA1ZmIwY2VjMjdmYjcwOTdmMDkxNWVlNWNkZmM0MThhODFjNTk0ZmU4
Li5lZGE2NTMyYzVkMmE3ZWZlZmMxNDliMGI3NjZhZTlkYjhkYmM5MTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQpAQCAtMzEs
OSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MUGFyYW1FbGVtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbQppbmRleCAz
NzQ5YzE4MDMzMGZiMGUzNWNkNTQ1OTExYzA5ZTc3NDU4NzVhZmQwLi5iY2Q3ODY2Y2Q3NmM3M2Vh
YzY0NGUwNGY4NDM3ZTUwMzBmNWEyZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MUXVvdGVFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUXVvdGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxTY3JpcHRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxTY3JpcHRFbGVtZW50Lm1tCmluZGV4IDMzNDRkNTQ4ODg0OWMxNGM5
MWM1YTY5M2U3OWFkN2U2NzBlMDlmZjQuLmU0YWMwMTc4MDJkYTI1MTRmNGNkZmU3ZGQ3YzkyMDQ5
YmRhYjAxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
U2NyaXB0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TFNjcmlwdEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TFNjcmlwdEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxTZWxlY3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxTZWxlY3RFbGVtZW50Lm1tCmluZGV4IDc1ODE0MWRlM2ZiN2Y1YWJmNmUyYTI4ZmE2YWVh
MTQ2NThjNjY5NjIuLmJjZmJlY2FjZDM4NDkxZmE3YmM5OTU0YjNkZTkwMzAyZjkxYTY2YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2VsZWN0RWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNlbGVjdEVsZW1l
bnQubW0KQEAgLTQ0LDkgKzQ0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50Lm1tCmluZGV4IGE0
NTI3ODIwODBiYjYzOWM0ZTY3ZjQ1NzlmOTM5NDY1NjhjNWNmMTAuLjgwNzZhMzM4ZWUxZGMzMGFm
MWMyOGE3NDg1ZWI2NDdkOGVlMzdhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlU2hlZXQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0KaW5kZXggYTc4MTFiZDY4YjM4
OGI4ZDczMzFkNDUzYzk2Mjg2MDhhNWEzNmUzNy4uNDgzZjk0ZjEzZmJhZDE1OTdlNjczNmFmNzZj
YTRjMGYxMDZlZTg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0K
aW5kZXggZGQzMDE2YjNhYTYzYTRmOWIwMzE0NDA3NWYwNWU1YTk4MDU1OGVlMC4uOWFkOTE0NmU4
NGEyNzgwNjk5YmNhNzNkNTQ3Y2JjYTgyNTBjM2U1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbQpAQCAtMzEsOSAr
MzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDZWxsRWxlbWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50
Lm1tCmluZGV4IGFmMjY3MTRkODRmMzBhYWRjYWUxNDJiZTg0NmQ2NmNlNmUzNWU0MGEuLmM5ZDk4
Y2E1MTRlMWFiYTdiMGVmNDg5YzNkYWYyYmU3OWM3MTJkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCkBAIC0zMSw5
ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZUNvbEVsZW1lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNvbEVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCmlu
ZGV4IDRjNjhjNGI2YjRjYTVkNmYxZjYxMGVjNWFjMDdmYTZkMzQ3MzIwYzkuLmJlZGRhZjUwZmFh
YWI0YzJkMzZmYTVkMTI4ZDAzMTY1ZjIwNGI3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCkBAIC0zOSw5ICszOSw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQppbmRleCAy
NDA5NmE4ZDk5NDdmZDdiN2EyNGZkMTY1NzMxM2E5ODQwOTkzOGNjLi4zZGZlZGMzM2VmY2MxNWFh
ZTE0ZDQ0MTFmZmVlNzA2NzczZDY4YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVSb3dFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZp
bmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1t
CmluZGV4IDk4YjE5ZmEzMTU0MDM0ZGFkOWY2MzBiMzQzMjIyODgyODM0ZjMxODguLmMzMmMyZTcw
MjczNDNkNDcwOTMwYTY3NzNiMjk4ODhlZDRmNmZlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0KQEAg
LTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJs
ZVNlY3Rpb25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxU
aXRsZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxl
RWxlbWVudC5tbQppbmRleCAyNDg2Zjc3YzNhNWU3NTA0MjcxMDJhZDI3ZTI4MmI2YjY1YjRlZmU5
Li4yODM5MTcxNzg1NTk5ZjkyODU4NGFkNTIxNThlMGYwNWQzNDEyMGJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQpAQCAtMzAs
OSArMzAsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGl0bGVFbGVtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbQppbmRleCBm
OThmOGU4NTJiZDQ3YTE2MjkyYjk3MzQwOTAxNTcyOGU0NWYzM2ExLi5mY2Y5MDU0YWIwZjEyMTY3
YWVlMjA2Y2FkOGFkYTFkMTM5MDdhM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MVUxpc3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVUxpc3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5tbQppbmRleCAzMzU4MDY1MDM5Mjg3MTliOTVi
MGY3MTY3ZjI3MWE5MDFlODVjMTE5Li40NTdlYWZiYTBkMGNlNTJkMDNmNTUwZjA0NzhiMzRiMDhl
ODczZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZp
ZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZp
ZGVvRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlk
ZW9FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MVmlkZW9FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtl
eWJvYXJkRXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRF
dmVudC5tbQppbmRleCAzZmQ4ZmNlMzY0NjZmMzdhYjlhMTk0YzBhMzBjMWMzYzQwNTJmNjNjLi4y
YzAxZjNlNjEwNTUyNjk3ZTQ1MTM3OTRkYjEzOWEzNzlkMzJjNzU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQpAQCAtMzMsOSArMzMsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXli
b2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NTWVkaWFMaXN0Lm1tCmluZGV4IDllODE2N2ExNmE0NGIzMTM3YjIzZWRiMWE4ZWVk
NDU5NDlkMjdkOTguLjg2NTFmYzk3YjQ4NzExNWUyZDRjZGQ3NzE0OTBkZjNmZDAwYTVkYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbQpAQCAtMzMsMTAg
KzMzLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL01lZGlhTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpNZWRpYUxpc3QqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KaW5kZXggZjY1NmE4YWRlNTUzNWE5MGU4
N2FiY2FhYjlkODA3OTk2M2E4MTIwNi4uOTVmMjIzNWQ0NTcyZmIzOTZkNjI0YzM5ZmM1MDY5YjMw
OTZkYzM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNl
RXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQu
bW0KQEAgLTM2LDkgKzM2LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3VzZUV2ZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NdXRhdGlvbkV2ZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQubW0KaW5kZXggMGY0ZWYxNjc1YTFjMDNh
ODdhMTBkNjFlM2ZiNzExYWFmMTFjNzZiZC4uMmZiZjQyMmFlODVkOTljNjY4MGEwZWQ1OGNkYmEz
MjdmN2VkOGZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11
dGF0aW9uRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0
aW9uRXZlbnQubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTXV0YXRpb25F
dmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNdXRhdGlvbkV2
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCmluZGV4IDU2
ODE5MzMyYmI2NzQyZTFlZmVkZDAxZTJjNzUzMzU3N2Q3MWUzZjguLjI5MTgxOTA5MGU1ZTI1MDM1
M2IzMDc0YWY5NmJkMjM4ZmRiOGQ1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU5hbWVkTm9kZU1hcC5tbQpAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVkTm9kZU1hcC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOYW1l
ZE5vZGVNYXAqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tCmluZGV4IDlhZGM0MGIwOGFiYmM4
NzcxYjNjOGI4YmRmZWUwMTlmYzgxY2UzMjUuLjIwMGU4MmEzMTAzYTY3MWQwNjE1NzExMmM3ZGM5
NzI0YTU1NmUyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVT
aGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVJhbmdlLm1tCmluZGV4IGYyODliM2EyNmU4YTRmNTY2YjY3MjRmYjhkNjE1MTE1OGJk
YjYyZTguLmVmMmMzNTgwOWIwYjY3NjNiNDc3NDU2MThjM2IyOTU2MDZkOTk5OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmFuZ2UubW0KQEAgLTM0LDEwICszNCwxMCBAQAogI2lt
cG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlJhbmdlKj4o
X2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
U3R5bGVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0
Lm1tCmluZGV4IDdhMWE0YTg3ZmM2ZWYyNDlhY2I5ZDA3ZGUyNTRiZGIyYjBhM2M5MzMuLjBlODc4
NWM3ZDJjMDY3YzQ4NDcyMWVkNTM3ODc0ZDdjNTVjYjBhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbXBv
cnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlN0eWxl
U2hlZXQqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01UZXh0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0K
aW5kZXggMzBlN2RhM2MwYzk4OTczZDQxMjVhNjdlZGRjZDI2ZDljZWU3NWNiNS4uZjczMGFkNmRl
YmFmYTA1YmUzNzI0NDBmOTZlNjAxYWVmZjRkZjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVRleHQubW0KQEAgLTMwLDkgKzMwLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCmluZGV4IGM1MDI2ZWI0YjJmODYwMTMz
Mjg3YjlmMmUwNThhNzYxZmIyNDIwNGYuLmNhMDZmZDdjMGZmMGUwMDFiOWU4ODQwNmQwYmE3ZWFj
Y2E0MTRhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0
RXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5t
bQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UZXh0RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRFdmVudCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVRva2VuTGlzdC5tbQppbmRleCBkYjhmNTVjZTA3YWE2NGZkOTI5
YTVmNWY4M2ZmMGNiY2NkZDc3NDY4Li45YzRhYTg5NjMwZDc4MTQ0NDJiMTNjNmJjMjVjOGU0Yjdm
OTZiYjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5M
aXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0K
QEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpD
RXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RE9NVG9rZW5MaXN0Kj4oX2ludGVybmFsKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCmluZGV4IDE3MzI0MzE5MGEz
MmIxNWM0N2ZmZmUwMDJiM2JhNjE2N2IxNzc4ZGIuLmY4MmNmNThhN2VkNGFiYjk0Zjg4NWYwZWU0
YWZmYmMzZjlkZTAxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50
Lm1tCkBAIC0zNCw5ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVUlFdmVu
dC5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VUlFdmVudCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0KaW5kZXggYTFlZjU3M2Y4ZGQyYzEw
YjY4NmMxMTk1MDlhNzAyNDJkN2NmNTJhZi4uZGFjZjFkODZkZjhlNzNjMWJiMDQ0Y2RkYThiNDkx
NTFhNGJmZmZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQ
YXRoUmVzdWx0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aFJl
c3VsdC5tbQpAQCAtMzEsMTEgKzMxLDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVP
YmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhSZXN1bHQuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6WFBhdGhSZXN1bHQqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmluZGV4IDhmMTdjM2FmODlmMmIyNzRh
YjQ3NTQ1ZWE5ZjllYWFhNmM5ZWNkZmMuLmIyYjRhZThhMzFjODM1MTFkOTA3NTEwZDA4YWE4MGJh
MDAxODE4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJI
aXN0b3J5SXRlbS5tbQpAQCAtNDcsMTMgKzQ3LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0
IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9S
TShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJM
RXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5t
bQppbmRleCBmM2JhYWVhMmZhMTEzZDhlNDc3Y2Y2MzA4MzVlMDc4YWQ0MGE3Y2E4Li5lZDI4NGI0
NjdiODRiYjZmZDg1ZTA0YTQzNzg3NmNkZTRhNmU5YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KQEAgLTMzLDE0ICszMywxNSBAQAogI2lt
cG9ydCAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCiAjaW1wb3J0ICJXZWJOU0RhdGFFeHRyYXMu
aCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2FkZXJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0
cmFzLmg+Ci0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09iamNSdW50
aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmljb2Rl
L3VzY3JpcHQuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvT2Jq
Y1J1bnRpbWVFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2Nv
YS9OU1VSTEV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVz
cGFjZSBXVEY7CkBAIC0xMDksNyArMTEwLDcgQEAgLSAoTlNTdHJpbmcgKilfd2ViX29yaWdpbmFs
RGF0YUFzU3RyaW5nCiAKIC0gKE5TU3RyaW5nICopX3dlYl91c2VyVmlzaWJsZVN0cmluZwogewot
ICAgIHJldHVybiB1c2VyVmlzaWJsZVN0cmluZyhzZWxmKTsKKyAgICByZXR1cm4gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyhzZWxmKTsKIH0KIAogLSAoQk9PTClfd2ViX2lzRW1wdHkKQEAgLTEzOSw3
ICsxNDAsNyBAQCAtIChOU1VSTCAqKV93ZWJraXRfVVJMQnlSZW1vdmluZ0ZyYWdtZW50CiAKIC0g
KE5TVVJMICopX3dlYl9VUkxCeVJlbW92aW5nVXNlckluZm8KIHsKLSAgICByZXR1cm4gVVJMQnlS
ZW1vdmluZ1VzZXJJbmZvKHNlbGYpOworICAgIHJldHVybiBXVEY6OlVSTEJ5UmVtb3ZpbmdVc2Vy
SW5mbyhzZWxmKTsKIH0KIAogLSAoQk9PTClfd2Via2l0X2lzSmF2YVNjcmlwdFVSTApAQCAtMTc1
LDE3ICsxNzYsMTcgQEAgLShOU0RhdGEgKilfd2ViX3NjaGVtZVNlcGFyYXRvcldpdGhvdXRDb2xv
bgogCiAtKE5TRGF0YSAqKV93ZWJfZGF0YUZvclVSTENvbXBvbmVudFR5cGU6KENGVVJMQ29tcG9u
ZW50VHlwZSljb21wb25lbnRUeXBlCiB7Ci0gICAgcmV0dXJuIGRhdGFGb3JVUkxDb21wb25lbnRU
eXBlKHNlbGYsIGNvbXBvbmVudFR5cGUpOworICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21w
b25lbnRUeXBlKHNlbGYsIGNvbXBvbmVudFR5cGUpOwogfQogCiAtKE5TRGF0YSAqKV93ZWJfc2No
ZW1lRGF0YQogewotICAgIHJldHVybiBkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZV
UkxDb21wb25lbnRTY2hlbWUpOworICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRU
eXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudFNjaGVtZSk7CiB9CiAKIC0oTlNEYXRhICopX3dlYl9o
b3N0RGF0YQogewotICAgIE5TRGF0YSAqcmVzdWx0ID0gZGF0YUZvclVSTENvbXBvbmVudFR5cGUo
c2VsZiwga0NGVVJMQ29tcG9uZW50SG9zdCk7CisgICAgTlNEYXRhICpyZXN1bHQgPSBXVEY6OmRh
dGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudEhvc3QpOwogICAgIE5T
RGF0YSAqc2NoZW1lID0gW3NlbGYgX3dlYl9zY2hlbWVEYXRhXTsKICAgICAvLyBUYWtlIG9mZiBs
b2NhbGhvc3QgZm9yIGZpbGUKICAgICBpZiAoW3NjaGVtZSBfd2ViX2lzQ2FzZUluc2Vuc2l0aXZl
RXF1YWxUb0NTdHJpbmc6ImZpbGUiXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbQppbmRleCBlOWVkNWNiZWIy
OTVkMDZkYWFkOTY5NTcyMmEzNGYzZWVlNTU2NjhkLi5iNzI2NTgzZjk3NGNkZGY3NjYxN2YyYWQx
OGQzOThmNDAzYjkxM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbQpAQCAtMjQsOCArMjQsOCBAQAogCiAj
aW1wb3J0ICJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggYWM3YTRiYjMxOGM1NWY5MzU5Yzk4ZTBh
OGJmOTZkMWU2ZTQ0MzYzNi4uODgzYjkyMDcyMDdlMjQ4ZGQ0N2EzMGJjMGM3NjIxZTcwNjhiN2Mz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNTgsNyAr
NTgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9Qcm94eVNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyR2VzdHVyZUlu
ZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ucHJ1bnRpbWVfaW1wbC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9ydW50aW1lX29iamVjdC5oPgpAQCAtNjYsNiArNjUsNyBAQAogI2ltcG9ydCA8dXRp
bGl0eT4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JlZkNv
dW50ZWRMZWFrQ291bnRlci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiBleHRlcm4gIkMiIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAwZTE4
OThmMDMwNTk5NzA0M2U2NGY2YTI5YWY2ZmNkM2Y5OWM1ZmE3Li4yYmM5NzhkMzQwM2Y3M2YxYzA2
M2RmMjUyMzQzYzViODNlYzEzMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC03Miw3ICs3Miw3
IEBAIGNsYXNzIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW0+CiAKICAgICB2b2lkIGNhbmNlbExvYWRBbmREZXN0cm95U3Ry
ZWFtV2l0aEVycm9yKE5TRXJyb3IgKik7CiAKLSAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0K
KyAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29uc3QgVVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVz
dFVSTCA9IHJlcXVlc3RVUkw7IH0KIAogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0b3Ao
KTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbSA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPgogICAgIGJvb2wgd2FudHNB
bGxTdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0
YT4gbV9kZWxpdmVyeURhdGE7Ci0gICAgV2ViQ29yZTo6VVJMIG1fcmVxdWVzdFVSTDsKKyAgICBV
UkwgbV9yZXF1ZXN0VVJMOwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9yZXNwb25zZVVSTDsKICAg
ICBDU3RyaW5nIG1fbWltZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMWE3MGJjZWI2NWRm
NTcxMmY2NTA1NmEyNGY0ZTk5NTkyMjMxY2I2Zi4uMDRkMjQ2ODE3ODUzNjFlYjgxNjBhMzc1MjM4
YmE4ZTQ4ZTk0YzY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIyNyw3ICsyMjcsNyBAQCBjbGFz
cyBXZWJDaHJvbWVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKICAgICB2
b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKICNlbmRp
ZgogCi0gICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25l
ZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJD
b3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVu
Z2VTdHJpbmcsIGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViVmlldyAqbV93ZWJW
aWV3OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCA1ODc4NGI5OTc5NmViYTBiNzkzMWQ3ZTJh
NzhmODVlNTdhMmZhMTE4Li45ZTUxMjUzMDUxMjRlNGZhMmFlNjMyNWRlMDIzNmE4MTIyODExZGY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJp
bmcmIG5hbWUsCiAKICNlbmRpZgogCi1TdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJp
bmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CitTdHJp
bmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZ0ZvcldlYlZpZXc6KTsKICAgICBpZiAoW1ttX3dlYlZp
ZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oCmluZGV4IDhiMjAzNjRiYjY3YTkxNzI3OGIyOTUzZmM1MTc5YTEyZGQzNjZk
ZGQuLjE4ODVmMDMxMzEzNWI4MTdiMzBmOTQ1Nzc3ZDhlMjRiMTUzOWJmOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudAogCiAgICAgdm9pZCBjb250
ZXh0TWVudURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb3dubG9hZFVSTChjb25z
dCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVS
TCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpG
cmFtZSopIG92ZXJyaWRlOwogICAgIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZy
YW1lKikgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1NwZWFraW5nKCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IGFmNzgxNGI5Njk2N2U5ZDg1ZjU5NDFkNGFmYWIzMDI0
NzU2Y2YzMjUuLjYxNjMwNDkwMTk5NmYxNTdmYzdlOThhMGU3YWIwYTBlODdlYzk5ZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC01NCw5ICs1NCw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1JlbmRlck9iamVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTVByaXZhdGUuaD4KICNpbXBvcnQg
PHBhbC9zcGkvbWFjL05TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEkuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCA0ZTgx
ZDM3MDg0OGY5ZTQ0YTQwZjUwNDBiYzlhZDhhMzdjY2FkOGUwLi44NDdhNzNiMTdhNDYxN2JkNTRh
OGQyOGE5MjNjMWQ0YTYzYmRkMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIGNs
YXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAKICAgICB2
b2lkIGJlZ2luRHJhZyhXZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEb3duUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBtb3VzZURyYWdnZWRQb3NpdGlvbiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbmNsdWRlRWRp
dERyYWcoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IDc3MTgyZDIwZWJiYjM5MDcyMWFmYjgyZTU5NGUyMTlhMGI0NDBkNGQuLmZmNmQxNDFmZTNk
ODljYTk1YjUwZDU4ZDc3ZGU0Njk2YTJjNTZkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aApAQCAtMTA3LDcgKzEwNyw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGlj
IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0
Y2hPbmxvYWRFdmVudHMoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERp
ZENhbmNlbENsaWVudFJlZGlyZWN0KCkgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBX
YWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0
ZSkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgp
IGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7
CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKQEAg
LTE1OSw4ICsxNTksOCBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRl
bUZvclBhZ2UoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgp
IGZpbmFsOwotICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7Ci0gICAgdm9pZCBkaWREZXRlY3RY
U1MoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwg
Y29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9v
bCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBXZWJGcmFt
ZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAg
ICBib29sIHNob3VsZEZhbGxCYWNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5h
bDsKIAotICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5h
bDsKKyAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgZmluYWw7CiAgICAgCiAg
ICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFt
ZSopIGZpbmFsOwogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1l
KFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgZmluYWw7CkBAIC0yMDYsMzAgKzIwNiwzMCBAQCBjbGFz
cyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dCB7CiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXImKSBmaW5hbCB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZp
bmFsOworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlv
biYsIGNvbnN0IFVSTCYpIGZpbmFsOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVh
dGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+
IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3Jl
OjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLAogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5I
ZWlnaHQpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25z
dCBXZWJDb3JlOjpVUkwmLAorICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdp
bihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBj
b25zdCBVUkwmLAogICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCkgZmluYWw7CiAgICAg
dm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBmaW5hbDsKICAgICB2b2lkIHJl
ZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZpbmFsOwogCiAjaWYgRU5BQkxF
KFdFQkdMKQotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChj
b25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0
IGZpbmFsOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChj
b25zdCBVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgYmFzZVVSTCwKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBw
bGV0RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwKICAgICAgICAgY29uc3QgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1W
YWx1ZXMpIGZpbmFsOwogICAgIAotICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVj
dENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1l
VHlwZSkgZmluYWw7CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVu
dFR5cGUoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbDsKICAg
ICBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIAogICAg
IHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3Jh
cHBlcldvcmxkJikgZmluYWw7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBzaG91bGRM
b2FkTWVkaWFFbGVtZW50VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgc2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsK
ICNlbmRpZgogCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVj
dCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTI0Miw3ICsyNDIsNyBAQCBjbGFzcyBXZWJGcmFt
ZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAg
ICBSZWY8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0Nv
bnRleHQoKSBmaW5hbDsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBX
ZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNob3VsZFBhaW50QnJva2VuSW1h
Z2UoY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBS
ZWZQdHI8V2ViQ29yZTo6UHJldmlld0xvYWRlckNsaWVudD4gY3JlYXRlUHJldmlld0xvYWRlckNs
aWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDI4MjEyNDI3MjMyZDIzMTkzYjI4MWNjMTVh
ZjIwYzIxYmQ5OWFmNzUuLmVmZTlhMzRiYzViN2Y1OTUwZjcyY2JiZWYxYTlkMjUxZWZkYTk2Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKICAgICBXZWJWaWV3
KiB2aWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBEb2N1bWVudExvYWRl
ciogbG9hZGVyID0gY29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgp
ID09IGJsYW5rVVJMKCkpCisgICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IFdURjo6
YmxhbmtVUkwoKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVu
dENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggZmQ0Y2Q0YzRiMzZkOGJmZjRiY2U1N2JmMTVlZDZm
ODlmNGVjZDU4MC4uMDc3ZDAxNGQzZTUzNWM3YThhYmIzNDY4ZTFkNjU0ZTlmZTliZTI3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVu
dENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAg
Y2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OlBheW1lbnRDb29yZGluYXRvckNsaWUKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmlu
ZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVu
Y3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIGJv
b2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwm
LCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJj
aGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2
b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudC5tbQppbmRleCAzMzQ5M2JkOWYxNjBiZGE4YWFjNWRhZmZmYTU5
MmE1NjBmYTk5MjgyLi4zMGUwNmNhZjkzMWFlMDY2YzM2OWI3MzUxMTNkOWM0OGE3YmRjMGQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC0yNyw4ICsyNyw4
IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCi0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50OjpXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKQogewpA
QCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6b3BlblBh
eW1lbnRTZXR1cChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLAogICAgIH0pOwogfQogCi1i
b29sIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6c2hvd1BheW1lbnRVSShjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYsIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikKK2Jvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50OjpzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiwgY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKQogewogICAgIHJldHVy
biBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggNzM5Yzk1MWY2YmQ3
ZmY1NWYyOTkyYWRmZjNhNTA5YTZjZTEwMDU5NC4uNGVhMWFkZDNlMTIzN2UwMmU1MDA5YzExZmQ1
YWI3ZTJhMmMzOTM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ4LDEzICs0
OCwxMyBAQCBjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxh
dGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29r
aWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1
ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJk
U3RyYXRlZ3kKICNpZiBQTEFURk9STShJT1MpCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYlBs
YXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHBy
aXZhdGUgV2ViQ29yCiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKLSAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAg
VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8g
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZp
ZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUg
V2ViQ29yCiAgICAgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNv
cmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwot
ICAgIFdlYkNvcmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CisgICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
IAogICAgIGxvbmcgd3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0
b21EYXRhJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVj
dG9yPFN0cmluZz4gdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGJkNzU4MWZhNTA0ODFjOTg5N2M5YTFmY2RkMzIxOTBm
NjdmMDZiNDUuLmY1MGIwZWIzYmM0NzBlYjkxMjg1YTA1ZmRkMmQ0ZDM0NDZlMjUxNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTIzOSw3ICsyMzksNyBAQCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpbgogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQogCi1XZWJDb3JlOjpVUkwgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4LCB0aXRsZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdp
bkluZm9Qcm92aWRlci5oCmluZGV4IGQxYWI1NTExODRjMGE1ZjY0OTk0MGQ4ZTkyN2JkODRlNTI5
YzdmZjAuLjUyNWVlMmZjZGVlYTE2YzVjNmY5ZGZlODEzNWVkN2QxYzVlYmJkMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Q
cm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsdWdpbkluZm9Qcm92aWRlci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFdlYlBsdWdpbklu
Zm9Qcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5JbmZvUHJvdmlkZXIgewog
cHJpdmF0ZToKICAgICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7CiAgICAgVmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFs
OwotICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhX
ZWJDb3JlOjpQYWdlJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBj
b25zdCBVUkwmKSBmaW5hbDsKIAogICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcigpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdp
bkluZm9Qcm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsdWdpbkluZm9Qcm92aWRlci5tbQppbmRleCBlMzRlYzczZTU0ZmJkOTU0MTY4ZmZjYTU1
MmU0ZjM2YmM5NWY1NDRiLi5iMDZkYTZmMGYwYzM1N2IwMGJhODc0OTFjYjE3YmZkMmZhOTRlMzYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnaW5JbmZvUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLm1tCkBAIC03NCw3ICs3NCw3IEBAIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8o
V2ViQ29yZTo6UGFnZSYgcGFnCiAgICAgcmV0dXJuIHBsdWdpbnM7CiB9CiAKLVZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5J
bmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYpCitWZWN0b3I8V2Vi
Q29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2lu
SW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBjb25zdCBVUkwmKQogewogICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVu
dGlmaWVyczsKICAgICByZXR1cm4gcGx1Z2luSW5mbyhwYWdlLCBzdXBwb3J0ZWRQbHVnaW5JZGVu
dGlmaWVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDRlNGMxM2RmYjczYWI2NGFlZTk3
ZDdhMzczOTUxM2FlNDkyNDI5ZmMuLmQ5YTA3ZWVjNTc4MzMyNjkwOTY4YjQ3OTRkMTVmMjViZDc5
NTExYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKaW5kZXggYWVmNGZjNTJhYWU0MTJmM2U2
YzRlY2Y0MDM5NWI0M2U4N2NjOTQ2Yy4uMjBlZTUxODc5NDU1OTcyYWI0YjAzYzQ2MmFlMzFmMzk0
OWVjOTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFz
cyBXZWJWaXNpdGVkTGlua1N0b3JlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlZpc2l0ZWRMaW5r
U3RvcmUgewogcHJpdmF0ZToKICAgICBXZWJWaXNpdGVkTGlua1N0b3JlKCk7CiAKLSAgICBib29s
IGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwg
V2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGlu
ayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzSWZOZWVkZWQoV2ViQ29yZTo6UGFnZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmlu
ZGV4IDYxMTc5ZmY4ODFlMzU1ODJjNTc5NjliNzY1ZGUzNjhhNjZjMjRiYTMuLjFlMjI1OTFiMDI3
MjcyM2VkMjI5NDNkY2JjMjNhMjZmZTk1ZTJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTU1LDcgKzU1LDYgQEAKICNpbXBv
cnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlVVJMUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYktpdExlZ2Fj
eS9ET01IVE1MLmg+CkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV2ViUERGVmlld0lP
Uy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXgg
MzdiMzNjODEwODQwMmJlY2Y3ZTU0NTcwNTZjNGQ2MzcxYzIyMDQ2Yi4uNzhiZDNkNDliOTBlNzll
OTdjMzg4ZDA4Njc4NTdjN2JlYWMwYTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yNTA4LDcgKzI1MDgsNyBAQCAtICh2b2lkKV9sb2FkRGF0
YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2Rp
bmdOYW1lOgogICAgIGlmIChiYXNlVVJMKQogICAgICAgICBiYXNlVVJMID0gW2Jhc2VVUkwgYWJz
b2x1dGVVUkxdOwogICAgIGVsc2UgewotICAgICAgICBiYXNlVVJMID0gYmxhbmtVUkwoKTsKKyAg
ICAgICAgYmFzZVVSTCA9IFdURjo6YmxhbmtVUkwoKTsKICAgICAgICAgcmVzcG9uc2VVUkwgPSBj
cmVhdGVVbmlxdWVXZWJEYXRhVVJMKCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250
cm9sbGVyLm1tCmluZGV4IDc1NGNjY2MxYWYyODA2NTU4Y2VmOTZiODhjYzZlNjg3MzNjYTIyYTYu
LmY1MTRiODQwNTRjMjFhOTM3M2JkZTdmNWI5YTQwMWQ4ZGVmYjM0MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIubW0KQEAgLTI1NiwxNyArMjU2LDE3IEBAIC0gKGlkIDxOU0ltbWVkaWF0
ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KV9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcgog
ICAgIE5TVVJMICp1cmwgPSBfaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBO
U1N0cmluZyAqYWJzb2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICBp
ZiAodXJsICYmIF9oaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSkgewotICAgICAgICBpZiAocHJv
dG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgIm1haWx0byIpKSB7CisgICAgICAgIGlmIChXVEY6
OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJtYWlsdG8iKSkgewogICAgICAgICAgICAg
X3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0dXJu
IFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAocHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgInRlbCIpKSB7
CisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJ0ZWwiKSkg
ewogICAgICAgICAgICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25UZWxMaW5rOwogICAgICAg
ICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlu
a107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZh
bWlseShhYnNvbHV0ZVVSTFN0cmluZykpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0lu
SFRUUEZhbWlseShhYnNvbHV0ZVVSTFN0cmluZykpIHsKICAgICAgICAgICAgIF90eXBlID0gV2Vi
SW1tZWRpYXRlQWN0aW9uTGlua1ByZXZpZXc7CiAKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
bGlua1JhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4
IGEwOTljNDZkZTcyNjk3ZGNkZjk1M2YxYTQxYjliNzQwYzIwMDUwNGMuLjkwMDM4MmNmOGI4MDBl
YjFkNTE1OTE4NWRlMmYzODMzYjBjNjZlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAgLTYyLDkgKzYyLDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1h
Yy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0cmlu
Z0V4dHJhcy5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogZXh0ZXJuICJDIiB7CiAgICAgYm9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3Ro
aW5nKENHQ29udGV4dFJlZiBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IDg1YWZmYzFiY2EwZDg3ODMz
YjQ0OTYyMmVhMWRhYTMyYWEwYzY0OWEuLjVmY2Y5ZjZhZmUwNTFiYjJmN2NjZjEzZTMyN2I0NWE1
NTY3ODhiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
U2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtMzksOCArMzksOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9E
T01XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SlNET01XaW5kb3cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggMGU3YzVkN2U5MmUyOGIy
ZWZlNjJmYTdjZTNhZDkxMmE0N2YwOTNkOC4uYjYyZjJjMzUyYTNiMDFiZWUyNzgzMDhlOWI3ODll
YTkwNWFlZjY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXdJbnRlcm5hbC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBj
bGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgVGV4dEluZGljYXRvcjsKLWNsYXNz
IFVSTDsKIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9w
dXBJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxp
bmdIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVy
cy5jcHAKaW5kZXggNmFmMzE1MTMxNjUxOGEyY2Y1NjI4ODgxYjQ4NWMyMjMzMGNjODA5Ny4uNzQ3
MWExMTZjNzMyZGJlZjhmZmYxMTBjM2QxMWJjMzZjODllOGI4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3Qu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKaW5kZXggNjZkZWU4
YTQwNDYwZjkyNWM0OGY1OWVmNzdkOGY5MzA0NjA2OGQ0Ny4uODIwYjYyMTM2YmM4Y2QwZDMxM2Zj
YzA3NGZlYTNjYzVhMmFlYzRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
TWFyc2hhbGxpbmdIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hh
bGxpbmdIZWxwZXJzLmgKQEAgLTMwLDE1ICszMCwxNCBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0
aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBJ
bnRSZWN0OwotICAgIGNsYXNzIFVSTDsKK2NsYXNzIEludFJlY3Q7CiB9CiAKIGNsYXNzIE1hcnNo
YWxsaW5nSGVscGVycwogewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgQlNUUlRv
S1VSTChCU1RSKTsKLSAgICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29uc3QgV2ViQ29yZTo6VVJM
Jik7CisgICAgc3RhdGljIFVSTCBCU1RSVG9LVVJMKEJTVFIpOworICAgIHN0YXRpYyBCU1RSIFVS
TFRvQlNUUihjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgQ0ZVUkxSZWYgUGF0aFN0cmluZ1RvRmls
ZUNGVVJMUmVmKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIEZp
bGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKTsKICAgICBzdGF0aWMgQ0ZV
UkxSZWYgQlNUUlRvQ0ZVUkxSZWYoQlNUUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGYyNDM2MDNjZTY3MTVkOGYxZjA4
OGRlYWYyOWFlMDA3MWQ4ZTk0NjguLjljZGNjMTQ1YjcxOTk5Y2RhNjk4NDE0ZTUyZmUyMmMzN2E4
OTdiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFf
Q0FDSEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFi
YXNlLmgKaW5kZXggMDEzNzA4ZWJkNzFmOTgzNzA1NDlhNDQ2NDExYmZhNGM3ZmQ5MzBhZC4uYWNj
MGUxZmJhNzQ2NDI5NDQxYmI5YWQ2NGZkYmNlMjUwZDJkYjcxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtMzgsNyArMzgsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBGcmFt
ZTsKICAgICBjbGFzcyBJbnRTaXplOwotICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBQbHVnaW5E
YXRhYmFzZUNsaWVudDsKICAgICBjbGFzcyBQbHVnaW5QYWNrYWdlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4
IGMzZTQ5ZjQ0MTk2NTQ2MTBlZmQ0ZGM1ZjVlYmQ5YWIwOTFjMDZlMTUuLjgxNGUyYmI2ZGMzOTFm
YzJmZmExYTk1YjY5ZTQ2ZDQ1ODBjMDM2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0yOSw3ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3Ry
aW5nRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blN0cmVhbS5oCmluZGV4IGY2MjhjY2QzZDVhNDU5MjZlNTM3MDM1MmQ4NmRjOWE3NTM1NThlNzEu
LmMxYjlmODdhYzRlNjIyZmJiMmUyZTIwNWQxNjQ1OWMwYzE5NGU3YjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMzIsMTAgKzMyLDEw
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5h
bC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGI0
ZTkxZjZlMTJiM2JiOWIyYTM5ZDhiYThmMDJhOTQyMDQwNWJkMzAuLjdjZmM3YTlhODJlNzJjOTEy
ZjVkYjk5OWNmYjM3YmY5Y2YxYTlmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCkBAIC02MCw3ICs2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKICAgICBjbGFzcyBLZXlib2FyZEV2ZW50Owog
ICAgIGNsYXNzIE1vdXNlRXZlbnQ7Ci0gICAgY2xhc3MgVVJMOwogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQogICAgIGNsYXNzIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW47CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDIwM2QxNTY1ZTI1ODYxNzNjYTI1NjFh
NTQ1YTM4ZTYwZTc1YzhkODIuLmM5ZGU0OWIzY2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkxNThi
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBX
ZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7
CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhH
b29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5E
aWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0
IFdURjo6U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVs
ZWdhdGUuY3BwCmluZGV4IDY0MzUwNzY3ZjkzNDAyNmQwOWMwZmE4Yjg4ZGNjZGQzODk0MmVkMDcu
LmNjMDM4Y2VmZDkxNWY0NTE2ZDU4N2JhZjEwOWE1YWQ2NDdhMjAxMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRp
b25zRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90
aWZpY2F0aW9uc0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKaW5kZXggZjBmMWQ5MmYyZGIy
NWI3NDQyODc3NTI0NjJhZmJhNGJjMWQxYzdmMS4uODI5NmM4Y2NiNjg4N2QzNDU0OGQ1YTY0YzY4
Njc3MjZhNzQ2MDc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVs
ZWdhdGUuaApAQCAtMzgsNyArMzgsNiBAQCBpbnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRp
b25QcmVzZW50ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwotY2xh
c3MgVVJMOwogfQogCiBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlIDogcHVi
bGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCAzOWNkMWMxNjc5YWRkZDIwNWJiMDdlODNmYTY5MjA5ODUzMjg1NzM2Li4zMmE5ZjBi
YzMxNDAyOTkxYjg5MjQ5ODAyNzk1NjNkZGUyMjg4OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJs
aWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjoKICAgICB2b2lk
IGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91
YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNw
YXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlz
cGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRj
aERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBvdmVycmlkZTsKQEAgLTE0MCw4ICsxNDAsOCBA
QCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUl0
ZW1Gb3JQYWdlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdl
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsKIAogICAgIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2Vk
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CkBAIC0xNTQs
MTIgKzE1NCwxMiBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAgYm9vbCBzaG91bGRG
YWxsQmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICBX
VEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAg
V1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAgICAgUmVmPFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXImKSBvdmVycmlkZSB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29y
ZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFVSTCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRG
cmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNpdGlv
blRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgb3ZlcnJp
ZGU7CkBAIC0xODUsMTUgKzE4NSwxNSBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAg
Ym9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJp
bmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCYsCisgICAgUmVmUHRyPFdl
YkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKICAgICAgICAgY29uc3QgV1RG
OjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRo
LCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVn
SW5FbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wg
bG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVh
dGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50JiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBv
dmVycmlkZTsKICAgICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJy
aWRlIHsgfQogICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Jikg
b3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0
V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVu
dCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRn
ZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50Jiwg
Y29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVz
LCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcykgb3ZlcnJpZGU7CiAKLSAg
ICBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOworICAgIFdl
YkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7CiAgICAgV1RGOjpTdHJpbmcgb3Zl
cnJpZGVNZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRD
bGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDBjNGZiMDQyNGQwMWVhMTE1ZDI3
ZWNlNzJlMTkwMzg3NmU1YzFlNTkuLmJlMjRjYjhhNTY4NTljZDQzY2UxOWYwYTE3YmJmODFkYTdj
OTlmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00NSwxMSArNDUsMTEgQEAg
Y2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3Ry
YXRlZ2llcywgcHJpdmF0ZSBXZWJDb3IKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRl
Z3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsK
KyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNv
cmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykg
b3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCAxYTQ1
YWI4ZGUyODIzN2NmZGViNmYzOWRlMGYxNzRlZWI1ZDgyM2VmLi5kMzEwZDI5MTAwODcwMDllODli
YWZlZjVmMGUwMTI3NjE5NGRkZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAK
QEAgLTg0LDcgKzg0LDcgQEAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbklu
Zm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWcKICAgICByZXR1cm4gb3V0
UGx1Z2luczsKIH0KIAotVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Q
cm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgY29uc3Qg
V2ViQ29yZTo6VVJMJikKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZv
UHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0
IFVSTCYpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1
Z2luSWRlbnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbk5hbWVzOwogICAgIHJldHVybiBwbHVnaW5J
bmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbk5hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
LmgKaW5kZXggODAxYmNiN2I0NjJkY2NkZGZjNzY1MmI2NGFmMDZmODYwZmZjNTVmYi4uMTBmNzY2
ZTA2MDQ0ZDE1OWIwYTFjZDkzOTQ5MjFlNzYxMmQ1NzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1By
b3ZpZGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiBwcml2YXRlOgogICAg
IHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBmaW5hbDsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4gcGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwg
Y29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbklu
Zm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwgY29uc3QgVVJMJikgZmlu
YWw7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGlj
eShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNv
bnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5n
KSBmaW5hbDsKICAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0
ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YlZpc2l0ZWRMaW5rU3RvcmUuaAppbmRleCA2YTdiOTkyMmMzYTM5MTUyMmMzZGEwNDdlNGEwNjk3
M2I0MDRkMTEwLi44YmVkZTllMjU4MTkxODMyMDI3MGVhYjY1Mjc0YTdhOTA2ZGI1OGEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVk
TGlua1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViVmlzaXRlZExpbmtTdG9yZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdlYlZpc2l0ZWRM
aW5rU3RvcmUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZSB7CiBwcml2
YXRlOgogICAgIFdlYlZpc2l0ZWRMaW5rU3RvcmUoKTsKIAotICAgIGJvb2wgaXNMaW5rVmlzaXRl
ZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFy
ZWRTdHJpbmdIYXNoLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0
cmlidXRlVVJMKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBh
Z2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcG9w
dWxhdGVWaXNpdGVkTGlua3NJZk5lZWRlZChXZWJDb3JlOjpQYWdlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGE2ODJjNjI3NTBlMTFmNTIxNTY3MjFm
M2Q4MjgyZDU3ZTBmODA2ZDIuLmI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAz
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC00Myw3
ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9h
ZC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuaAppbmRleCA4NDg4NWYy
NGZiODM0YTJkZmNhODJlZWI3OWUxOWM3MTkxMDRhNDcyLi40ZjYxMTFlMjNiMmMyZTA3ZTBhZTRh
ZmFkNThlYTUwZWQxYTMyYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmgK
QEAgLTM4LDcgKzM4LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xh
c3MgVVJMOwogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNTIsMTMgKzUxLDEzIEBAIGNs
YXNzIFdlYkRvd25sb2FkCiAjZW5kaWYKIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViRG93bmxv
YWQqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVn
YXRlKik7CisgICAgc3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJbnN0YW5jZShjb25zdCBVUkwm
LCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOwogICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRl
SW5zdGFuY2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgSVdlYkRvd25sb2Fk
RGVsZWdhdGUqKTsKICAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKCk7CiBw
cml2YXRlOgogICAgIFdlYkRvd25sb2FkKCk7CiAgICAgdm9pZCBpbml0KFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7Ci0gICAgdm9pZCBp
bml0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAgdm9p
ZCBpbml0KGNvbnN0IFVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CiAgICAgfldlYkRvd25s
b2FkKCk7CiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IGNkZjhjYWQ2YTM2OTZlZWJh
Y2U2MmY0ZTU3ODRjZWU0YmVmMWQ5ZTkuLjI3YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQwZTFh
YzUwYWQ3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQ
cm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFBy
b3BlcnR5QmFnLmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVz
dFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ltYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlck9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IGRiZWE2OThh
NTc1MDIxMmE1MDY1MGU3ODM5MTY5ZDBhNWUxYjM3NTQuLmM0ZDA4MzYyZGFkNWU4MzkzZThkZmY4
MzFjMjU5ODFhMmM3N2ZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtMzQs
OSArMzQsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVXaW4uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVD
bGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHNhbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5MCw3ICsxOTAs
NyBAQCBjbGFzcyBERUNMU1BFQ19VVUlEKCJ7QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQw
RTYzNTFEfSIpIFdlYkZyYW1lIDogcHVibGljCiAgICAgSFJFU1VMVCBtYXRjaExhYmVsc0FnYWlu
c3RFbGVtZW50KGNvbnN0IEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElET01FbGVtZW50KiBh
Z2FpbnN0RWxlbWVudCwgQlNUUiogcmVzdWx0KTsKICAgICBIUkVTVUxUIGNhblByb3ZpZGVEb2N1
bWVudFNvdXJjZShib29sKiByZXN1bHQpOwogCi0gICAgV2ViQ29yZTo6VVJMIHVybCgpIGNvbnN0
OworICAgIFVSTCB1cmwoKSBjb25zdDsKIAogICAgIFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsK
ICAgICB2b2lkIHNldFdlYlZpZXcoV2ViVmlldyopOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNz
IERFQ0xTUEVDX1VVSUQoIntBMzY3NjM5OC00NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9Iikg
V2ViRnJhbWUgOiBwdWJsaWMKICAgICBjbGFzcyBXZWJGcmFtZVByaXZhdGU7CiAgICAgV2ViRnJh
bWVQcml2YXRlKiBkOwogICAgIGJvb2wgbV9xdWlja1JlZGlyZWN0Q29taW5nIHsgZmFsc2UgfTsK
LSAgICBXZWJDb3JlOjpVUkwgbV9vcmlnaW5hbFJlcXVlc3RVUkw7CisgICAgVVJMIG1fb3JpZ2lu
YWxSZXF1ZXN0VVJMOwogICAgIGJvb2wgbV9pblByaW50aW5nTW9kZSB7IGZhbHNlIH07CiAKICAg
ICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gbV9wYWdlUmVjdHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDIyYjA4NDZhOTA2Yjc4Mjg2NTZiOGQ5NTdjMTBhMGRm
YWZmOGIzMDEuLjAyMzM4NGNlOTZmMTA5NDljZGQ1OWY3NzRhODE0NWViYmVhN2I3YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAKICNp
bmNsdWRlICJXZWJWaXNpdGVkTGlua1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Rh
dGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5LmgKaW5kZXggMTdhZmY5MjgyN2QxZDEwOWI1M2U5Y2RjYzZjZTQ5
YzhiZTNlNzBlNS4uNjkzNzRkZjAyMDFkODk4Zjc3ZDZiMTIxOThjNjc1ZGNlNDgxODA4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuaApAQCAtMzMsOCArMzMsNyBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBVUkw7
Ci0gICAgY2xhc3MgUGFnZUdyb3VwOworY2xhc3MgUGFnZUdyb3VwOwogfQogCiAvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCkBAIC03OCw3ICs3Nyw3IEBAIGNsYXNzIFdlYkhpc3RvcnkgOiBwdWJsaWMg
SVdlYkhpc3RvcnksIHB1YmxpYyBJV2ViSGlzdG9yeVByaXZhdGUgewogCiAgICAgLy8gV2ViSGlz
dG9yeQogICAgIHN0YXRpYyBXZWJIaXN0b3J5KiBzaGFyZWRIaXN0b3J5KCk7Ci0gICAgdm9pZCB2
aXNpdGVkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwg
Y29uc3QgV1RGOjpTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9vbCBpbmNy
ZWFzZVZpc2l0Q291bnQpOworICAgIHZvaWQgdmlzaXRlZFVSTChjb25zdCBVUkwmLCBjb25zdCBX
VEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdh
c0ZhaWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENvdW50KTsKICAgICB2b2lkIGFkZFZpc2l0ZWRM
aW5rc1RvVmlzaXRlZExpbmtTdG9yZShXZWJWaXNpdGVkTGlua1N0b3JlJik7CiAKICAgICBDT01Q
dHI8SVdlYkhpc3RvcnlJdGVtPiBpdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJikg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRl
bS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXgg
ODQzNzYyMDFkMDdlYjNmZWY1ZWIyZDlhNzIxNzZkMzE3Zjk5MTIyZS4uYTg1NTlhNWZkMjI3Y2Jk
MmIxN2VhZjI4NWVhNjM5NWVhZmY4YTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykhpc3RvcnlJdGVtLmNwcApAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0
cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9I
aXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUmVzb3VyY2UuY3BwCmluZGV4IGIyOTJkZGU3ZGNjZWY2MmZjYTczYjBjNGNiNGJhYjJhZGM1
YmZmYjAuLjgxODBkYmUwNGY2ZTIwNmU4NTM5OGM2MjlhNzY5ZTgzNmU3YzY0ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIFdlYlJlc291cmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZWJS
ZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1
cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpCitXZWJSZXNvdXJjZTo6
V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFdURjo6U3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0
IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpCiAgICAgOiBtX2RhdGEoZGF0YSkKICAgICAsIG1fdXJs
KHVybCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuaAppbmRleCBiOGM3ZGNjYjAzNzQ5YWI3ODczZTM3ZmZhMjlmMjUyYzY1M2JlYmE1
Li4wMmQ2NzM1YWI3MzU4NDg4NzRlZmYxOTM0ODgyZGY1OGM0ZWYzYzNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTI4LDE3ICsyOCwxNyBAQAogCiAjaW5jbHVkZSAi
V2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogY2xhc3Mg
V2ViUmVzb3VyY2UgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
V2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIHByb3RlY3RlZDoKLSAgICBX
ZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3Qg
V1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSk7CisgICAgV2ViUmVzb3VyY2UoSVN0cmVh
bSogZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFt
ZU5hbWUpOwogICAgIH5XZWJSZXNvdXJjZSgpOwogCiBwdWJsaWM6CkBAIC01OCw3ICs1OCw3IEBA
IGNsYXNzIFdlYlJlc291cmNlIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwcml2YXRlOgogICAg
IFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiAgICAgQ09NUHRyPElTdHJlYW0+IG1fZGF0YTsKLSAg
ICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFdURjo6U3RyaW5nIG1f
bWltZVR5cGU7CiAgICAgV1RGOjpTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgIFdURjo6
U3RyaW5nIG1fZnJhbWVOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJp
dHlPcmlnaW4uY3BwCmluZGV4IDgxYjI2OWZjNDIwYzU5Y2M2ZWY1ZDk5MmZjNzZjYzQ5YjBlYTBm
YjguLjk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3N2YwY2QwNjAwMjQ2YTEwMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFi
YXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25z
ZS5jcHAKaW5kZXggNDU3NmMyMjI1YzgzNTdmMzA2NzA2NzNjMTg4MDVkMzM4ZjQ4MmJiNC4uN2Rh
MTU1OGJiNDU3ZDkyMWQyNGNhM2I1Y2M3NWU2ZTEwYTdlNjI0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiAjZW5kaWYK
IAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNobHdh
cGkuaD4KICNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBXZWJVUkxSZXNwb25zZSog
V2ViVVJMUmVzcG9uc2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSog
aW5zdGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVz
cG9uc2UgLSBzbyBpdCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAg
aW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVSTCh7IH0s
ICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAw
LCBTdHJpbmcoKSk7CiAgICAgaW5zdGFuY2UtPkFkZFJlZigpOwogICAgIHJldHVybiBpbnN0YW5j
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwCmluZGV4IGJkMTI2NzU4YTUxY2MzNTM4ZjlhYzk1MzdjZmIxZmM3ZGZkYWUz
ODguLjQ4MTIzODQ3MTNjOGI5OWRhNWNiYTViNjNmMjU0NDQ5ZmU1MGM2NDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApA
QCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogCiAjaW5jbHVkZSA8V2Vi
Q29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmgKaW5kZXggM2NmZDY2NzY4ZWIzMjdhZWFkYzdhMDllNGQyN2NlYTI0OTQ4ZmQ3ZS4uMWI3
MmJiZTgyNzM0Y2U4MzM2MmE3MmM5MGVjMmI4ZjA2ZTU4ZmY0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuaApAQCAtNDYzLDcgKzQ2Myw3IEBAIGNsYXNzIFdlYlZpZXcKIAogICAgIC8vIENv
bnZlbmllbnQgdG8gYmUgYWJsZSB0byB2aW9sYXRlIHRoZSBydWxlcyBvZiBDT00gaGVyZSBmb3Ig
ZWFzeSBtb3ZlbWVudCB0byB0aGUgZnJhbWUuCiAgICAgV2ViRnJhbWUqIHRvcExldmVsRnJhbWUo
KSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZTsgfQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiB1
c2VyQWdlbnRGb3JLVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKTsKKyAgICBjb25zdCBXVEY6
OlN0cmluZyYgdXNlckFnZW50Rm9yS1VSTChjb25zdCBVUkwmIHVybCk7CiAKICAgICBzdGF0aWMg
Ym9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwog
CkBAIC01MDIsNyArNTAyLDcgQEAgY2xhc3MgV2ViVmlldwogICAgIGJvb2wgb25HZXRPYmplY3Qo
V1BBUkFNLCBMUEFSQU0sIExSRVNVTFQmKSBjb25zdDsKICAgICBzdGF0aWMgU1RETUVUSE9ESU1Q
IEFjY2Vzc2libGVPYmplY3RGcm9tV2luZG93KEhXTkQsIERXT1JEIG9iamVjdElELCBSRUZJSUQs
IHZvaWQqKiBwcE9iamVjdCk7CiAKLSAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYpOworICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJik7CiAKICAgICB2b2lkIGZs
dXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpOwogICAgIHZvaWQgc2V0Um9vdENo
aWxkTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNjYzdkNzc1MGQzNzk4OTk1YjgwZjliZTFl
NGExZTMwM2JkOTcwZmEuLmU0ZGNhOTMxNzQ0NjEzNTk2MDFhMTMxMzk2MmU1MmE3YzdkYmJjMjIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y3JlYXRlVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpjaGVja1VSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0
aXZlVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMRGlmZmVyZW5jZXMpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
VVJMRXh0cmFzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6b3JpZ2luYWxEYXRhQXNTdHJp
bmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6bGl0ZXJhbFVSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRBbHRl
cm5hdGVIVE1MU3RyaW5nLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW06CisgICAgICAg
IChsaXRlcmFsVVJMKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbToKKyAgICAgICAgKC1bTG9hZEludmFsaWRVUkxXZWJG
cmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6
Zm9yRnJhbWU6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5R2Vu
ZXJhdG9yLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVz
V2luLmNwcDoKKwogMjAxOC0xMC0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbV2ViS2l0Ml0gRm9ybWF0ID4gQm9sZCBhbmQgRm9ybWF0ID4gSXRh
bGljIGRvbid0IHRvZ2dsZSBiZXR3ZWVuIGJvbGQgYW5kIGl0YWxpYyBzdHlsZQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5j
cHAKaW5kZXggNThlNjlkMGRmNjMwNTk3YTEwZGIyZTljOTZhMmQ4ZGRjZGFhN2M2OS4uMTg4Yjhi
ZGUwYzVmMzQ5ZWRjOWY0MjVjZjkwODNjYzc3NjhkMDcwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC0z
OCwxMCArMzgsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05GQS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTkZBVG9ERkEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZEluZm8uaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMRmlsdGVyUGFyc2Vy
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBiOTI4MzI0
ZjM1OThkZGI0NjE3YTFkZWViODgyNjM2MGM2NWE0MjA1Li5hYWQxNmI4NjA0MTc5Y2E0M2E5Nzcz
Nzk1ODU0YjU3NTc3M2FmYzlhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRl
ICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VSTC5jcHAKaW5kZXggNzM1MzRjODE3MzNlYmE0NTJmMzJmZDlmODIxNzFiYTliYTU0
YjZiYi4uZGMzMWI0N2JkMDc4NjhhZWRjYWZmOTdmNTY1NmQ4M2Y3ODlkODMyMSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKQEAgLTI1LDExICsyNSw5IEBACiAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC03Myw4ICs3MSw3IEBAIFRFU1RfRihVUkxUZXN0LCBV
UkxDb25zdHJ1Y3RvckNvbnN0Q2hhcikKIAogc3RhdGljIFVSTCBjcmVhdGVVUkwoY29uc3QgY2hh
ciogdXJsQXNTdHJpbmcpCiB7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxBc1N0cmluZyk7Ci0g
ICAgcmV0dXJuIHBhcnNlci5yZXN1bHQoKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgdXJsQXNTdHJp
bmcpOwogfTsKIAogVEVTVF9GKFVSTFRlc3QsIFVSTFByb3RvY29sSG9zdEFuZFBvcnQpCkBAIC0z
MTcsMjAgKzMxNCwyMCBAQCBURVNUX0YoVVJMVGVzdCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJh
Z21lbnQpCiAKIFRFU1RfRihVUkxUZXN0LCBQcm90b2NvbElzSW5IVFRQRmFtaWx5KQogewotICAg
IEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KHt9KSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoIiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9j
b2xJc0luSFRUUEZhbWlseSgiYSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRU
UEZhbWlseSgiYWIiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHko
ImFiYyIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZCIp
KTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZGUiKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlZiIpKTsKLSAgICBF
WFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZGVmZyIpKTsKLSAgICBFWFBF
Q1RfVFJVRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwOiIpKTsKLSAgICBFWFBFQ1RfRkFM
U0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cCIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90
b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwczoiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29s
SXNJbkhUVFBGYW1pbHkoImh0dHBzIikpOwotICAgIEVYUEVDVF9UUlVFKHByb3RvY29sSXNJbkhU
VFBGYW1pbHkoImh0dHBzOi8vIUAjJCVeJiooKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpw
cm90b2NvbElzSW5IVFRQRmFtaWx5KHsgfSkpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoIiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElz
SW5IVFRQRmFtaWx5KCJhIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoImFiIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoImFiYyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCJhYmNkIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoImFiY2RlIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoImFiY2RlZiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCJhYmNkZWZnIikpOworICAgIEVYUEVDVF9UUlVFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZh
bWlseSgiaHR0cDoiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZh
bWlseSgiaHR0cCIpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoImh0dHBzOiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCJodHRwcyIpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoImh0dHBzOi8vIUAjJCVeJiooKSIpKTsKIH0KIAogVEVTVF9GKFVSTFRlc3QsIEhvc3RJc0lQ
QWRkcmVzcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9V
UkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNl
ci5jcHAKaW5kZXggM2UxMDU5MmEwM2QwYWIwMWUyYzE2NmE0NTNlYWFlZWMxZmEwMzljMS4uMWM0
ZGNkZDA1ZTIxZDdiNWZkN2FiN2RmZTg1ZDhmMDVjMWFjOGE3YSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKQEAgLTI2LDggKzI2LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFy
c2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFy
c2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RU
YQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlm
aWVyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkp
OwogCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQo
dXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29u
c2lzdGVudCh1cmwpKTsKIAogICAgIGlmICh0ZXN0VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAg
ICAgIHJldHVybjsKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZl
VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwog
ICAgIAotICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50
KHVybCkpOworICAgIEVYUEVDVF9UUlVFKFdURjo6VVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0Nv
bnNpc3RlbnQodXJsKSk7CiAgICAgCiAgICAgaWYgKHRlc3RUYWJzID09IFRlc3RUYWJzOjpObykK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJM
RGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMm
IHBhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnN0cmluZywgdXJsLnN0
cmluZygpKSk7CiAgICAgCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVl
c0NvbnNpc3RlbnQodXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVy
bmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKICAgICAKICAgICBpZiAodGVzdFRhYnMgPT0gVGVz
dFRhYnM6Ok5vKQogICAgICAgICByZXR1cm47CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZv
aWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGIKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuc3Ry
aW5nLCB1cmwuc3RyaW5nKCkpKTsKICAgICAKLSAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6Omlu
dGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OlVSTFBh
cnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwogICAgIAogICAgIGlmICh0ZXN0
VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAgICAgIHJldHVybjsKQEAgLTIxMyw4ICsyMTMsNyBA
QCBzdGF0aWMgdm9pZCBzaG91bGRGYWlsKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VTdHJpbmcpCiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zdCBFeHBlY3RlZFBh
cnRzJiBwYXJ0cywgVGVzdFRhYnMgdGVzdFRhYnMgPSBUZXN0VGFiczo6WWVzKQogewotICAgIFVS
TFBhcnNlciBwYXJzZXIodXJsU3RyaW5nLCB7IH0sIGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9
IHBhcnNlci5yZXN1bHQoKTsKKyAgICBhdXRvIHVybCA9IFVSTCh7IH0sIHVybFN0cmluZywgZW5j
b2RpbmcpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2wo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwpAQCAtMjM4LDkgKzIz
Nyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zCiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0
IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0
VGFicyB0ZXN0VGFicyA9IFRlc3RUYWJzOjpZZXMpCiB7Ci0gICAgVVJMUGFyc2VyIGJhc2VQYXJz
ZXIoYmFzZVVSTFN0cmluZywgeyB9LCBlbmNvZGluZyk7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1
cmxTdHJpbmcsIGJhc2VQYXJzZXIucmVzdWx0KCksIGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9
IHBhcnNlci5yZXN1bHQoKTsKKyAgICBhdXRvIHVybCA9IFVSTChVUkwoeyB9LCBiYXNlVVJMU3Ry
aW5nKSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJv
dG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwg
dXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFz
cygpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNl
ckFnZW50UXVpcmtzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2Vy
QWdlbnRRdWlya3MuY3BwCmluZGV4IDRjODAzMmI5MzZjZmUzYTU5MWYyMDJlZjBlMGVhMWRmMGVm
N2Q3YjcuLjBjNWU2Mzc3OWJhN2UwMWZhNjg5YjcwOWQzYWY3ZmU1MThmNzAwNDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3Mu
Y3BwCkBAIC0yNSw4ICsyNSw4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQuY3BwCmluZGV4IDc2YjEwMzU3NWNhNDI1Y2UzZmU1OGRhMzEzNmIwZWVjMGQ2ZDNm
MWUuLjMwMGIxM2NiY2ExMGMyMWIzMDdlZWUzMTE0ZGUwMGZiZjBmZTAyZDEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC0yNCw5ICsyNCw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tCmlu
ZGV4IDZmZmQ3ZGFjYjNmYzAyMTJhNDA0ZDg1NmIzMThjOTM2OWY4OWZlOTYuLmI2NDBiMTBiZmYy
ZjAxOWI3MjcyNDNhN2M2MDA4NTFhZGFmZDc1ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1VSTEV4dHJhcy5tbQpAQCAtMjUsOCArMjUsOCBA
QAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxF
eHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKQEAgLTUwLDE3ICs1MCwxNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZGF0
YUFzU3RyaW5nKE5TRGF0YSAqZGF0YSkKIAogc3RhdGljIGNvbnN0IGNoYXIqIG9yaWdpbmFsRGF0
YUFzU3RyaW5nKE5TVVJMICpVUkwpCiB7Ci0gICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXZWJDb3Jl
OjpvcmlnaW5hbFVSTERhdGEoVVJMKSk7CisgICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXVEY6Om9y
aWdpbmFsVVJMRGF0YShVUkwpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJWaXNpYmxl
U3RyaW5nKE5TVVJMICpVUkwpCiB7Ci0gICAgcmV0dXJuIFtXZWJDb3JlOjp1c2VyVmlzaWJsZVN0
cmluZyhVUkwpIFVURjhTdHJpbmddOworICAgIHJldHVybiBbV1RGOjp1c2VyVmlzaWJsZVN0cmlu
ZyhVUkwpIFVURjhTdHJpbmddOwogfQogCiBzdGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29uc3Qg
Y2hhciogbGl0ZXJhbCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEobGl0ZXJh
bEFzRGF0YShsaXRlcmFsKSwgbmlsKTsKKyAgICByZXR1cm4gV1RGOjpVUkxXaXRoRGF0YShsaXRl
cmFsQXNEYXRhKGxpdGVyYWwpLCBuaWwpOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhcykK
QEAgLTEyNyw4ICsxMjcsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19EaXZpc2lvblNpZ24p
CiAgICAgLy8gU2VsZWN0ZWQgdGhlIGRpdmlzaW9uIHNpZ24gYXMgYW4gZXhhbXBsZSBvZiBhIG5v
bi1BU0NJSSBjaGFyYWN0ZXIgdGhhdCBpcyBhbGxvd2VkIGluIGhvc3QgbmFtZXMsIHNpbmNlIGl0
J3MgYSBsb29rYWxpa2UgY2hhcmFjdGVyLgogCiAgICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIgdG8g
dGhlIG9uZSB1c2VkIHdoZW4gdHlwaW5nIGluIGEgVVJMLgotICAgIEVYUEVDVF9TVFJFUSgiaHR0
cDovL3NpdGUueG4tLWNvbW90aGVyc2l0ZS1ramIub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmco
V2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3
b3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNv
bVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdlYkNvcmU6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmci
LCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS54bi0tY29tb3RoZXJzaXRl
LWtqYi5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJp
bmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAg
RVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2Vy
VmlzaWJsZVN0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5j
b21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNp
bWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQ
IHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3Ro
ZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRl
LmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpKSk7CkBAIC0xMzcsMTcgKzEzNywxNyBAQCBURVNU
KFdlYkNvcmUsIFVSTEV4dHJhc19EaXZpc2lvblNpZ24pCiAgICAgRVhQRUNUX1NUUkVRKCJodHRw
Oi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRl
cmFsVVJMKCJodHRwOi8vc2l0ZS5jb20lQzMlQjdvdGhlcnNpdGUub3JnIikpKTsKIAogICAgIC8v
IFNlcGFyYXRlIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1lIG9uIGl0
cyBvd24uCi0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLnhuLS1jb21vdGhlcnNpdGUta2piLm9yZyIs
IFtXZWJDb3JlOjplbmNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3Jn
IikgVVRGOFN0cmluZ10pOwotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb21ceEMzXHhCN290aGVy
c2l0ZS5vcmciLCBbV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3Ro
ZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUueG4tLWNv
bW90aGVyc2l0ZS1ramIub3JnIiwgW1dURjo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNc
eEI3b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUu
Y29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgW1dURjo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNv
bVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAotVEVTVChXZWJDb3Jl
LCBVUkxFeHRyYXNfU29saWR1cykKK1RFU1QoV1RGLCBVUkxFeHRyYXNfU29saWR1cykKIHsKICAg
ICAvLyBTZWxlY3RlZCBmdWxsIHdpZHRoIHNvbGlkdXMsIHdoaWNoIGxvb2tzIGxpa2UgdGhlIHNv
bGlkdXMsIHdoaWNoIGlzIHRoZSBjaGFyYWN0ZXIgdGhhdCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0
aGUgaG9zdCBuYW1lLgogCiAgICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1c2Vk
IHdoZW4gdHlwaW5nIGluIGEgVVJMLgotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29t
L290aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNl
clR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIs
IG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbS9vdGhlcnNpdGUub3Jn
IiwgdXNlclZpc2libGVTdHJpbmcoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0
dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFz
U3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZc
eEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8v
c2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMV2l0aFVz
ZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmci
LCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBm
b3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1Rf
U1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBvcmlnaW5h
bERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhl
cnNpdGUub3JnIikpKTsKQEAgLTE1Niw4ICsxNTYsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJh
c19Tb2xpZHVzKQogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJUVGJUJDJThGb3Ro
ZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNv
bSVFRiVCQyU4Rm90aGVyc2l0ZS5vcmciKSkpOwogCiAgICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25z
IHRoYXQgZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5hbWUgb24gaXRzIG93bi4KLSAgICBFWFBFQ1Rf
U1RSRVEoInNpdGUuY29tL290aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUo
QCJzaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7Ci0gICAg
RVhQRUNUX1NUUkVRKCJzaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhv
c3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10p
OworICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmVuY29k
ZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmlu
Z10pOworICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmRl
Y29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0
cmluZ10pOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKQEAgLTE2NSw4ICsx
NjUsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKICAgICAvLyBTZWxlY3RlZCBp
ZGVvZ3JhcGhpYyBzcGFjZSwgd2hpY2ggbG9va3MgbGlrZSB0aGUgQVNDSUkgc3BhY2UsIHdoaWNo
IGlzIG5vdCBhbGxvd2VkIHVuZXNjYXBlZC4KIAogICAgIC8vIENvZGUgcGF0aCBzaW1pbGFyIHRv
IHRoZSBvbmUgdXNlZCB3aGVuIHR5cGluZyBpbiBhIFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEoImh0
dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXZWJD
b3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgw
b3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNv
bSUyMG90aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNl
clR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIs
IG5pbCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5v
cmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJo
dHRwOi8vc2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAgIEVY
UEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJTIwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxl
U3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNc
eDgwXHg4MG90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWls
YXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJl
c3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90
aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0
ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIikpKTsKQEAgLTE3NSwzMSArMTc1LDMxIEBA
IFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX1NwYWNlKQogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDov
L3NpdGUuY29tJUUzJTgwJTgwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVy
YWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVFMyU4MCU4MG90aGVyc2l0ZS5vcmciKSkpOwogCiAgICAg
Ly8gU2VwYXJhdGUgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5hbWUgb24g
aXRzIG93bi4KLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tIG90aGVyc2l0ZS5vcmciLCBbV2Vi
Q29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmci
KSBVVEY4U3RyaW5nXSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbVx4RTNceDgwXHg4MG90
aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgw
XHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRl
LmNvbSBvdGhlcnNpdGUub3JnIiwgW1dURjo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNc
eDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJz
aXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBbV1RGOjpkZWNvZGVIb3N0TmFtZShA
InNpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAog
VEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfRmlsZSkKIHsKLSAgICBFWFBFQ1RfU1RSRVEoImZpbGU6
Ly8vJUUyJTk4JTgzIiwgW1tXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTov
Ly/imIMiLCBuaWwpIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NU
UkVRKCJmaWxlOi8vLyVFMiU5OCU4MyIsIFtbV1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAi
ZmlsZTovLy/imIMiLCBuaWwpIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSk7CiB9CiAKIFRF
U1QoV2ViQ29yZSwgVVJMRXh0cmFzX1BhcnNpbmdFcnJvcikKIHsKICAgICAvLyBFeHBlY3QgSURO
IGZhaWx1cmUuCi0gICAgTlNVUkwgKnVybCA9IFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJp
bmcoQCJodHRwOi8v76O/LmNvbSIsIG5pbCk7CisgICAgTlNVUkwgKnVybCA9IFdURjo6VVJMV2l0
aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly/vo78uY29tIiwgbmlsKTsKICAgICBFWFBFQ1RfVFJV
RSh1cmwgPT0gbmlsKTsKIAotICAgIE5TU3RyaW5nICplbmNvZGVkSG9zdE5hbWUgPSBXZWJDb3Jl
OjplbmNvZGVIb3N0TmFtZShAImh0dHA6Ly/vo78uY29tIik7CisgICAgTlNTdHJpbmcgKmVuY29k
ZWRIb3N0TmFtZSA9IFdURjo6ZW5jb2RlSG9zdE5hbWUoQCJodHRwOi8v76O/LmNvbSIpOwogICAg
IEVYUEVDVF9UUlVFKGVuY29kZWRIb3N0TmFtZSA9PSBuaWwpOwogfQogCiBURVNUKFdlYkNvcmUs
IFVSTEV4dHJhc19OaWwpCiB7Ci0gICAgTlNVUkwgKnVybDEgPSBXZWJDb3JlOjpVUkxXaXRoVXNl
clR5cGVkU3RyaW5nKG5pbCwgbmlsKTsKKyAgICBOU1VSTCAqdXJsMSA9IFdURjo6VVJMV2l0aFVz
ZXJUeXBlZFN0cmluZyhuaWwsIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUodXJsMSA9PSBuaWwpOwog
Ci0gICAgTlNVUkwgKnVybDIgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVj
YXRlZChuaWwsIG5pbCk7CisgICAgTlNVUkwgKnVybDIgPSBXVEY6OlVSTFdpdGhVc2VyVHlwZWRT
dHJpbmdEZXByZWNhdGVkKG5pbCwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwyID09IG5pbCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tCmluZGV4IDUwNWFmMzU3ZTVkMTAx
ZDE3NmI1MjNkMTU1YTYyOTRiYmU4ZjdmZGYuLjkwZDQ2MTBjNzQxMDk5ZmFlNGE2MGJlOTc3NjVj
YzNkN2IwZWNkNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbQpAQCAtMzAsOSAr
MzAsOSBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5o
IgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0
IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogc3RhdGljIGJvb2wgaXNEb25lOwogc3RhdGlj
IGludCBwcm92aXNpb25hbExvYWRDb3VudDsKQEAgLTExMCw3ICsxMTAsNyBAQCBURVNUKFdLV2Vi
VmlldywgTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdGcm9tUHJvdmlzaW9uYWxMb2FkRXJyb3JCYWNr
VG9CYWNrKQogICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOwogCiAgICAgICAgIGNoYXIgbGl0ZXJhbFtdID0gImh0dHBzOi8vd3d3LmV4YW1wbGUu
Y29tPD4vIjsKLSAgICAgICAgTlNVUkwqIHRhcmdldFVSTCA9IFdlYkNvcmU6OlVSTFdpdGhEYXRh
KFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBu
aWwpOworICAgICAgICBOU1VSTCogdGFyZ2V0VVJMID0gV1RGOjpVUkxXaXRoRGF0YShbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6bGl0ZXJhbCBsZW5ndGg6c3RybGVuKGxpdGVyYWwpXSwgbmlsKTsKICAg
ICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0
YXJnZXRVUkxdXTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDp0YXJnZXRVUkxdXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQpp
bmRleCBhYzk4YzE5NjQ0MGFiN2I1NTA4NGM5NWQ3OGQwOWZlN2ZjNzk3ZTNjLi5lYWE1NWNhYzY3
ZjhlODQ0MTQzMjdkNGRhZTMyNjA5NjQ1ZDk1YmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVz
dC5tbQpAQCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFz
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIHN0YXRpYyBib29sIGRpZEZpbmlzaFRlc3Q7CiBzdGF0
aWMgYm9vbCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkOwpAQCAtMzksNyArMzksNyBAQCBzdGF0aWMg
Y29uc3QgY2hhciBsaXRlcmFsW10gPSAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb208Pi8iOwogCiBz
dGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29uc3QgY2hhciogbGl0ZXJhbCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVu
Z3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CisgICAgcmV0dXJuIFdURjo6VVJMV2l0aERhdGEo
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5p
bCk7CiB9CiAKIEBpbnRlcmZhY2UgTG9hZEludmFsaWRVUkxOYXZpZ2F0aW9uQWN0aW9uRGVsZWdh
dGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcApp
bmRleCBiMDUxNDUyNGY3MjU5MWY2Y2I1MDI5MTEwMzFiN2JmYThhM2FmYTA3Li4xYmFhZTk1YWMw
NjIzMWZiZmIyOWE4YmExNDE4Nzc3MmI1YWYzYWQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAKQEAg
LTIyLDggKzIyLDggQEAKIAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRl
ICJXZWJWaWV3VGVzdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNp
bmNsdWRlIDxnbGliL2dzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3Vw
Lmg+CiAKIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0KaW5k
ZXggOGQ1NGNhNmUxOWUwZDY5OTYyYTVmMTUzMjM1NDJhZWYyMDM1NzVkMS4uODZiN2IzYzRhOTk4
NjMwZDI4NWU1MTc5NWZjOGFkNjk4MWNmYzkyNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQpAQCAtMjYsMTAgKzI2
LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLTmF2aWdhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJh
cy5oPgogCiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hUZXN0Owogc3RhdGljIGJvb2wgZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZDsKQEAgLTUxLDcgKzUxLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIK
ICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMKTsKIAog
ICAgIHN0YXRpYyBjaGFyIGxpdGVyYWxbXSA9ICJodHRwczovL3d3dy5leGFtcGxlLmNvbSQvIjsK
LSAgICBOU1VSTCAqZmFpbGVkVVJMID0gV2ViQ29yZTo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CisgICAgTlNV
UkwgKmZhaWxlZFVSTCA9IFdURjo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxp
dGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUoW2Vy
cm9yLnVzZXJJbmZvW0AiTlNFcnJvckZhaWxpbmdVUkxLZXkiXSBpc0VxdWFsOmZhaWxlZFVSTF0p
OwogCiAgICAgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW0KaW5kZXggZGRlOGM3ZDAxZGE2
NzgwNDE5NWM3ZjQxZTI5MTFhNzg5YzcwMmM1Mi4uYWMxYmY3ZGI2Yzk4YjAyZDI1NTI2NTk3MmJj
Mjk5ZGEwYzk4N2VkZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
U1NMS2V5R2VuZXJhdG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NT
TEtleUdlbmVyYXRvci5tbQpAQCAtMjksOSArMjksOSBAQAogI2ltcG9ydCA8U2VjdXJpdHkvU2Vj
QXNuMVRlbXBsYXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1NTTEtleUdlbmVyYXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC02OSw3ICs2OSw3IEBAIGNvbnN0IFNl
Y0FzbjFUZW1wbGF0ZSBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VUZW1wbGF0ZVtdIHsKICAg
ICB7IDAsIDAsIDAsIDAgfQogfTsKIAotY29uc3QgV2ViQ29yZTo6VVJMIHVybCA9IFdlYkNvcmU6
OlVSTChXZWJDb3JlOjpVUkwoKSwgImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iKTsKK2NvbnN0IFVS
TCB1cmwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIik7CiAKIGNsYXNzIFNT
TEtleUdlbmVyYXRvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5kZXgg
OGY3NTVjMzJjOGMyZTJlMGQzNzlkM2U1ZjA3Y2M2YjliZGNjMTg2NS4uOTE3Y2JlYmNlZTU2Yzdj
MTc2NDgyMGZjYmQxZDBiOGYzNDkwNjU0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
d2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVk
ZSA8U2hsd2FwaS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351494</attachid>
            <date>2018-10-03 01:52:18 -0700</date>
            <delta_ts>2018-10-03 02:55:18 -0700</delta_ts>
            <desc>Add Linux support</desc>
            <filename>bug-190234-20181003175216.patch</filename>
            <type>text/plain</type>
            <size>1275361</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2Y2I1MjQ5NmNlZGVkZGJhYjM0NDA0
Mjc5MzdlMWM4NmQ3YTg4ZjQuLjZhNmQyOTA5NjY3OTgwNGQzZDljNDY2MGFmZTNhMTVlMDZiYWFm
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTgtMTAtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUg
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAg
ICAgICAgKiB3dGYvVVJMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgICogd3Rm
L1VSTC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmguCisgICAg
ICAgICogd3RmL1VSTEhhc2guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTEhhc2guaC4KKyAgICAgICAgKFdURjo6VVJMSGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6
OlVSTEhhc2g6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvVVJMUGFyc2VyLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAuCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KToKKyAgICAgICAgKFdURjo6VVJMUGFy
c2VyOjpwYXJzZUF1dGhvcml0eSk6CisgICAgICAgICogd3RmL1VSTFBhcnNlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmguCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpyZXN1bHQp
OgorICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4dHJhcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAuCisgICAgICAgICogd3RmL2NmL0NG
VVJMRXh0cmFzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVS
TEV4dHJhcy5oLgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAuCisgICAgICAgICogd3RmL2NvY29hL05T
VVJMRXh0cmFzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRy
YXMubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0uCisgICAgICAgIChXVEY6OmlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIp
OgorICAgICAgICAoV1RGOjppc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdU
Rjo6aXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjppc0xv
b2thbGlrZUNoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OndoaXRlTGlzdElETlNjcmlwdCk6Cisg
ICAgICAgIChXVEY6OnJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKToKKyAgICAgICAgKFdURjo6
YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KToKKyAgICAgICAgKFdURjo6aXNTZWNv
bmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyk6CisgICAgICAgIChXVEY6OmlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjphbGxDaGFyYWN0ZXJzQWxs
b3dlZEJ5VExEUnVsZXMpOgorICAgICAgICAoV1RGOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6Cisg
ICAgICAgIChXVEY6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChX
VEY6Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChXVEY6OmRlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKToKKyAgICAgICAgKFdURjo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFu
Z2UpOgorICAgICAgICAoV1RGOjpkZWNvZGVIb3N0TmFtZSk6CisgICAgICAgIChXVEY6OmVuY29k
ZUhvc3ROYW1lKToKKyAgICAgICAgKFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyk6
CisgICAgICAgIChXVEY6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKToKKyAgICAgICAg
KFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcpOgorICAgICAgICAoV1RGOjphcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6CisgICAgICAgIChXVEY6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKToKKyAgICAgICAgKFdURjo6bWFwSG9zdE5hbWVz
KToKKyAgICAgICAgKFdURjo6c3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOgorICAgICAgICAo
V1RGOjpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOgorICAgICAg
ICAoV1RGOjpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIpOgorICAgICAgICAoV1RGOjpV
UkxXaXRoRGF0YSk6CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKToKKyAg
ICAgICAgKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyk6CisgICAgICAgIChXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKToKKyAgICAgICAgKFdURjo6aGFzUXVlc3Rpb25N
YXJrT25seVF1ZXJ5U3RyaW5nKToKKyAgICAgICAgKFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5
cGUpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENo
YXJhY3Rlcik6CisgICAgICAgIChXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6CisgICAgICAg
IChXVEY6Om9yaWdpbmFsVVJMRGF0YSk6CisgICAgICAgIChXVEY6OmNyZWF0ZVN0cmluZ1dpdGhF
c2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KToKKyAgICAgICAgKFdURjo6aXNVc2VyVmlzaWJsZVVSTCk6CisgICAgICAgIChXVEY6OnJhbmdl
T2ZVUkxTY2hlbWUpOgorICAgICAgICAoV1RGOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6CisgICAg
ICAgICogd3RmL2NvY29hL1VSTENvY29hLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VSTE1hYy5tbS4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOgorICAgICAg
ICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2xpYi9HVW5p
cXVlUHRyU291cC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0dVbmlxdWVQdHJTb3VwLmguCisgICAgICAgICogd3RmL2dsaWIvVVJMU291cC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwLgor
CiAyMDE4LTEwLTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBb
bWFjT1NdIFN3aXRjaGluZyB0byBkaXNjcmV0ZSBHUFUgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIFVJ
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOWQzMGE0OGM5Y2M2NzczN2Y2Y2ZlY2VkYjRmYWFmMGEx
YTE4MjEwLi43YWZlNjY1YjFjMzExNDdhYjE0MDNkNDYzMWNiZjI1MDVhZDgzZWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTQxIEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRv
IFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkw
MjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBV
UkwgaXMgYSBsb3ctbGV2ZWwgY29uY2VwdCB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbiBvdGhlciBj
bGFzc2VzIGluIFdlYkNvcmUuCisgICAgICAgIFdlIGFyZSBzdGFydGluZyB0byB1c2UgVVJMcyBp
biBKYXZhU2NyaXB0Q29yZSBmb3IgbW9kdWxlcy4KKyAgICAgICAgSSBuZWVkIFVSTCBhbmQgVVJM
UGFyc2VyIGluIGEgcGxhY2Ugd2l0aCBmZXdlciBkZXBlbmRlbmNpZXMgZm9yIHJkYXI6Ly9wcm9i
bGVtLzQ0MTE5Njk2CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50
RXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5j
cHA6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVs
ZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5oOgor
ICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAgICAgICAg
KiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTTWFwTGlrZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVh
ZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0Nv
bnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNp
b25SdWxlc0ZvclBpbmdMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjphcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVS
ZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3NzL1N0
eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+Ojpjb25zdHJ1
Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg6
CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb21wbGV0ZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5z
dXJlVGVtcGxhdGVEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dXJsRm9yQmluZGluZ3MgY29uc3QpOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzSmF2YVNjcmlwdFVS
TEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJDb250ZXh0Rm9yRWxlbWVudCk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YmFzZVVSSSBjb25zdCk6
CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5oOgor
ICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZG9tL1Nl
Y3VyaXR5Q29udGV4dC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTCk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRRdW90ZWRVUkxBdHRyaWJ1
dGVWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgICogZWRp
dGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU3VicmVzb3VyY2VVUkxB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCk6
CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHA6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaDoKKyAgICAg
ICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JVUkwuY3BwOgorICAg
ICAgICAqIGZpbGVhcGkvQmxvYlVSTC5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAg
ICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuaDoK
KyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgICogaHRtbC9ET01VUkwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
RE9NVVJMLmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVuVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbik6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RG
OjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50
PFdlYkNvcmU6OlVSTD46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0
bWFwLmg6CisgICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmg6CisgICAgICAg
ICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1h
bmFnZXIuaDoKKyAgICAgICAgKiBodG1sL1VSTElucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRt
bC9VUkxSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6VVJMU2VhcmNoUGFyYW1zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9tQXNzb2NpYXRlZFVSTCk6CisgICAgICAgICogaHRt
bC9VUkxVdGlscy5oOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldEhvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldFBvcnQpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNlbWljb2xvblNlcGFyYXRlZFZhbHVlQ29udGFpbnNKYXZhU2NyaXB0
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpY
U1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZmlsdGVySW5wdXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0
ZXJCdXR0b25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmlzTGlrZWx5U2FmZVJlc291cmNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9y
Lmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24u
aDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnJlY2VpdmVkRmlyc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250
aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0pOgorICAgICAgICAq
IGxvYWRlci9MaW5rTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0xvYWRUaW1pbmcuaDoKKyAg
ICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvTWl4ZWRD
b250ZW50Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVja2Vy
OjpjaGVja0Zvcm1Gb3JNaXhlZENvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2hvdWxkU2NoZWR1
bGVOYXZpZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5oOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZEluZm8uaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
VGltaW5nLmg6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAqIGxvYWRl
ci9TdWJmcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L01hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQ
YXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9u
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW06CisgICAgICAgICogcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvQ29u
dGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFi
bGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNzKToKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0V2ZW50U291cmNlLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9IaXN0b3J5Lmg6CisgICAgICAg
ICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6dXJsIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAqIHBh
Z2UvTG9jYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5oOgorICAgICAgICAq
IHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHA6CisgICAgICAgICogcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5oOgor
ICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9Tb2NrZXRQcm92aWRl
ci5oOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oOgorICAgICAgICAqIHBh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5oOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5oOgorICAgICAgICAqIHBh
Z2UvVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBwYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaDoK
KyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Lmg6CisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9E
cmFnRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MaW5rSWNvbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6Y2FuRXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmg6CisgICAgICAgICogcGxh
dGZvcm0vU291cmNlc1NvdXAudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vVXNlckFnZW50UXVpcmtzLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2Vk
U2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKHdlYktpdE1lZGlhU3JjU2V0VXJpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnSW1h
Z2VHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzUGxhaW5U
ZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUHVibGljU3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5h
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjppc0FybWVu
aWFuTG9va2FsaWtlQ2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQXJt
ZW5pYW5TY3JpcHRDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBU0NJ
SURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
aXNMb29rYWxpa2VDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d2hpdGVM
aXN0SUROU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJRE5TY3JpcHRX
aGl0ZUxpc3RGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFsbENoYXJhY3RlcnNJ
bklETlNjcmlwdFdoaXRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1NlY29u
ZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6YWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Om1hcEhvc3ROYW1lV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW5j
b2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFJhbmdlc1Ro
YXROZWVkTWFwcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFuZ2Vz
VGhhdE5lZWRFbmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFu
Z2VzVGhhdE5lZWREZWNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseUhv
c3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjphcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjptYXBIb3N0TmFtZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c3Ry
aW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJM
QnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpVUkxXaXRoRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3Rlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpVUkxCeVJlbW92aW5nVXNlckluZm8pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6b3JpZ2luYWxVUkxEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc1VzZXJWaXNpYmxlVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJh
bmdlT2ZVUkxTY2hlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9va3NMaWtlQWJz
b2x1dGVVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JQYXJ0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVz
dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94
eVNlcnZlckN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Byb3h5U2VydmVyU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRF
bmNvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vQlN0cmluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya3VwVG9DRkhUTUwpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQXR0YWNobWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjpzb3VyY2VVUkkgY29uc3QpOgorICAgICAg
ICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29u
c2lzdGVudFN0YXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVudENv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5j
cHA6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5Lmg6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudERhdGEuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0
YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNw
cDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5oOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXk+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5oOgorCiAyMDE4LTEwLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgTWVzc2FnZUV2ZW50LnBvcnRzIHNob3VsZCByZXR1cm4gdGhlIHNhbWUg
b2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDMwNTk2NDRhMDViYTNmZjRhNGJiNjc4YTE5ZjJkMDQxNjc2MTI0
NWQuLjM5OTRiZjYxZTRkZmQ2NjFlM2FmY2QzYzBiZDQ5MzEwMTVjOTZmYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzgyIEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRvIFdURgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxv
YlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lz
dHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVn
aXN0cnk6OmJsb2JTaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6
ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Js
b2JSZWdpc3RyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OnNldENvbnRlbnRFeHRlbnNp
b25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjp1cmwg
Y29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndyaXRlQmxvYlRvRmlsZVBhdGgpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bG9nQmxvY2tlZENv
b2tpZUluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bG9nQ29va2llSW5mb3JtYXRpb25J
bnRlcm5hbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmV0
cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hl
ZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdGF0aXN0aWNzOjpyZWNv
cmRSZXZhbGlkYXRpb25TdWNjZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlN1YnJlc291cmNlSW5mbzo6Zmlyc3RQYXJ0eUZvckNvb2tpZXMgY29uc3QpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXF1ZXN0OjpvcGVyYXRvciBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVy
ZTo6UmVzcG9uc2U6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6RXJyb3I6Om9wZXJhdG9yIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1
cmU6Ok1hbmFnZXI6OmZpbmRCZXN0RnV6enlNYXRjaCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYXB0dXJlOjpNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjp1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6UmVzb3VyY2U6OnVybCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXNvdXJjZTo6cXVlcnlQYXJhbWV0ZXJzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2Uu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vz
c2lvbjp0YXNrOmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6b3BlbkNGVVJMUmVmKToKKyAgICAgICAgKFdlYktpdDo6cmVwbGFjZWROU1dvcmtzcGFj
ZV9sYXVuY2hBcHBsaWNhdGlvbkF0VVJMX29wdGlvbnNfY29uZmlndXJhdGlvbl9lcnJvcik6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwuaDoKKyAgICAgICAgKEFQSTo6VVJMOjpjcmVhdGUp
OgorICAgICAgICAoQVBJOjpVUkw6OmVxdWFscyk6CisgICAgICAgIChBUEk6OlVSTDo6VVJMKToK
KyAgICAgICAgKEFQSTo6VVJMOjp1cmwgY29uc3QpOgorICAgICAgICAoQVBJOjpVUkw6OnBhcnNl
VVJMSWZOZWNlc3NhcnkgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmg6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0
Y2hlc1VSTCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHA6
CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAoV0tVUkxDcmVhdGVXaXRoQ0ZVUkwp
OgorICAgICAgICAoV0tVUkxDb3B5Q0ZVUkwpOgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJ
UmVzcG9uc2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06
CisgICAgICAgIChBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKToK
KyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNVUkwgX3dlYl9vcmln
aW5hbERhdGFBc1dURlN0cmluZ10pOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBT
aGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVt
SXNJblNhbWVEb2N1bWVudCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJFcnJvcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVz
dFJlc3VsdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNw
cDoKKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHA6CisgICAgICAgICogU2hhcmVkL2lvcy9J
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6YXBwZW5kUmVkaXJlY3Rpb25V
UkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uOjp0YWtlUmVkaXJlY3RDaGFpbik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25D
bGllbnQ6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnNhdmVE
YXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
VXNlclNjcmlwdC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVl
VVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKEFQSTo6VXNl
clN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuY3BwOgorICAgICAgICAoZmlsZVBhdGhzRnJvbUZpbGVVUkxzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxv
YWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQYWdlR3Jv
dXBBZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVzZXJTY3JpcHQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlRm9yRGVidWdNb2RlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NMYXN0U2Vlbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcik6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJG
cmFtZVVuZGVyKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQpOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVj
dEZyb20pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW06CisgICAg
ICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWlu
RnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDp1
c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOmZvclVSTFNjaGVtZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiB1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbToKKyAgICAgICAgKC1b
X1dLQXBwbGljYXRpb25NYW5pZmVzdCBpbml0V2l0aENvZGVyOl0pOgorICAgICAgICAoK1tfV0tB
cHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjptYW5pZmVzdFVS
TDpkb2N1bWVudFVSTDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJT
dHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJj
ZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YmFzZVVS
TDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2llcyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNw
cDoKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19sb2FkX3BsYWluX3RleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQYXltZW50VUkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5Q29jb2EuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1l
bnRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJ
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpuYXZpZ2F0ZUJyb3dz
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OmRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xl
Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZUFs
bENvb2tpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpyZXNvbHZlV2ViR0xMb2Fk
UG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpT
YWZlQnJvd3NpbmdSZXN1bHQ6OlNhZmVCcm93c2luZ1Jlc3VsdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgICgtW19X
S1ByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBmaW5pc2g6XSk6CisgICAgICAgIChXZWJLaXQ6
OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxl
SW5Eb3dubG9hZHNGb2xkZXIpOgorICAgICAgICAoV2ViS2l0OjpyZXF1ZXN0VXNlck1lZGlhQXV0
aG9yaXphdGlvbkZvckRldmljZXMpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW06CisgICAg
ICAgICgtW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyIGF0dGVtcHRSZWNvdmVy
eV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVRvVVJMRm9yRmlsZVByb21pc2VQcm92aWRlcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldFJlZGlyZWN0Q2hhaW4pOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpyZWRpcmVjdENoYWluIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvRnJhbWVMb2FkU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0
ZTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpzZXRVbnJlYWNoYWJsZVVSTCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmg6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZFN0YXRlOjp1cmwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6
cHJvdmlzaW9uYWxVUkwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6
dW5yZWFjaGFibGVVUkwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpoYXNPbmx5U2VjdXJlQ29udGVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaDoKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dz
aW5nUmVzdWx0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1bHQ6
OnVybCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OnVybCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OnByb3Zpc2lvbmFsVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6dW5yZWFjaGFibGVVUkwgY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEFsdGVy
bmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtX
aXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJG
b3JTY2hlbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVu
Y2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJj
ZUZvckRlYnVnTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFn
RHJvcEludGVyYWN0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9u
U2hlZXRBc3Npc3RhbnQubW06CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgX2Ny
ZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25zOnNob3dMaW5rVGl0bGU6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVFbGVtZW50V2l0aFVSTDpyZWN0
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZv
clByZXZpZXdJdGVtQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbToKKyAgICAgICAgKC1bV0tMZWdhY3lQREZWaWV3IGFj
dGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6cmVjdDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAgICAgKC1bV0tQREZWaWV3IGFjdGlv
blNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6cmVjdDpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBfdXBkYXRlTG9jYXRp
b25JbmZvXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2Rp
bmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAg
ICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250
cm9sbGVyXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQ
YXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlk
YXRlTWVyY2hhbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAg
ICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudDo6dXNlckFnZW50Rm9yVVJM
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWUuY3BwOgorICAgICAgICAoV0tCdW5kbGVGcmFtZUFsbG93c0ZvbGxvd2luZ0xpbmsp
OgorICAgICAgICAoV0tCdW5kbGVGcmFtZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNl
V2l0aFVSTCk6CisgICAgICAgIChXS0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVzb3VyY2VX
aXRoVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VIYXNMb2NhbERhdGFGb3JVUkwpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRv
VVRGOFN0cmluZy5jcHA6CisgICAgICAgIChjb252ZXJ0VG9VVEY4U3RyaW5nKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJp
bmcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01l
ZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldFByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0
U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46OmNsaWNrZWRMaW5rKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1VUkxSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjphbGxvd3NGb2xs
b3dpbmdMaW5rIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRN
TCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJh
dGlvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFt
ZVVSTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKToKKwogMjAxOC0xMC0wMiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIERlcHJlY2F0
ZSBXS0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMTRjNjIwYWFhYjFiN2ExNTY4
NTVkY2Q3YTYzOGE2MGQzOGVkMTM1OC4uM2Y5MjIzYmI3ZDE3ZWIwZDIxNTczMDc1ZmEzNzBjNDcz
ZmM0OTRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMC0w
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaDoKKwogMjAxOC0xMC0wMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW21hY09TXSBTd2l0Y2hpbmcgdG8gZGlzY3JldGUgR1BVIHNob3VsZCBiZSBkb25l
IGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggY2UzMWU3
MzgxYjg5ZDhkOGQ2NjhiZmIxNDRiMzIyYzg4ZTc2OWY2NS4uZTgwNmVlNjE4ZmIyYjcyOTkyOGEw
YzBiOGFhOWViNzcwNTU1NTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzNyBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTUF0dHIu
bW06CisgICAgICAgICogRE9NL0RPTUJsb2IubW06CisgICAgICAgICogRE9NL0RPTUNTU0NoYXJz
ZXRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NJbXBvcnRSdWxlLm1tOgorICAgICAgICAq
IERPTS9ET01DU1NNZWRpYVJ1bGUubW06CisgICAgICAgICogRE9NL0RPTUNTU1BhZ2VSdWxlLm1t
OgorICAgICAgICAqIERPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbToKKyAgICAgICAgKiBET00v
RE9NQ1NTUnVsZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbToK
KyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NT
dHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9ET01DU1NWYWx1ZS5tbToKKyAgICAgICAgKiBE
T00vRE9NQ2hhcmFjdGVyRGF0YS5tbToKKyAgICAgICAgKiBET00vRE9NQ291bnRlci5tbToKKyAg
ICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3VtZW50RnJh
Z21lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3VtZW50VHlwZS5tbToKKyAgICAgICAgKiBE
T00vRE9NRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTUZpbGUubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQXBwbGV0RWxl
bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEFyZWFFbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MQlJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQmFzZUVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEJ1dHRv
bkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50Lm1tOgorICAg
ICAgICAqIERPTS9ET01IVE1MQ29sbGVjdGlvbi5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTERp
dkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxEb2N1bWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxFbWJlZEVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEZvcm1F
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
SFJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSGVhZEVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRN
TEh0bWxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTEltYWdlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9N
SFRNTElucHV0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTExJRWxlbWVudC5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9N
SFRNTExlZ2VuZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxMaW5rRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTE1hcEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RP
TUhUTUxNYXJxdWVlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1lZGlhRWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tOgorICAgICAgICAqIERP
TS9ET01IVE1MTW9kRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9MaXN0RWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9iamVjdEVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxPcHRp
b25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW06
CisgICAgICAgICogRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tOgorICAgICAgICAqIERP
TS9ET01IVE1MUGFyYW1FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MUXVvdGVFbGVt
ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MU2NyaXB0RWxlbWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxTdHls
ZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1t
OgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxl
RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxUaXRsZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxVTGlzdEVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxWaWRlb0VsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUtleWJvYXJkRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTU1lZGlhTGlzdC5tbToK
KyAgICAgICAgKiBET00vRE9NTW91c2VFdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTXV0YXRp
b25FdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTmFtZWROb2RlTWFwLm1tOgorICAgICAgICAq
IERPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW06CisgICAgICAgICogRE9NL0RPTVJhbmdl
Lm1tOgorICAgICAgICAqIERPTS9ET01TdHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9ET01U
ZXh0Lm1tOgorICAgICAgICAqIERPTS9ET01UZXh0RXZlbnQubW06CisgICAgICAgICogRE9NL0RP
TVRva2VuTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9NVUlFdmVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NWFBhdGhSZXN1bHQubW06CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bToKKyAgICAgICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1VSTCBf
d2ViX3VzZXJWaXNpYmxlU3RyaW5nXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfVVJMQnlSZW1v
dmluZ1VzZXJJbmZvXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfZGF0YUZvclVSTENvbXBvbmVu
dFR5cGU6XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfc2NoZW1lRGF0YV0pOgorICAgICAgICAo
LVtOU1VSTCBfd2ViX2hvc3REYXRhXSk6CisgICAgICAgICogTWlzYy9XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4ubW06CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aDoKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZXRSZXF1ZXN0VVJMKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6
OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyBjb25zdCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW06
CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OnNob3dQYXltZW50VUkpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW06CisgICAgICAgIChXZWJQbHVnaW5JbmZv
UHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNp
dGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9sb2FkRGF0
YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dW5yZWFjaGFibGVVUkw6XSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAg
ICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0aW9uQ29udHJv
bGxlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVy
bmFsLmg6CisKIDIwMTgtMTAtMDEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFttYWNPU10gU3dpdGNoaW5nIHRvIGRpc2NyZXRlIEdQVSBzaG91bGQgYmUgZG9uZSBp
biB0aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGVjODJkNDlh
Y2ZmYjc5MTQ1YWYzM2M0MjU5M2EzYzBhZWI0YWRlOGIuLmU2ZmU2Y2Q3YmFjMGI1OWYwOTllNDA1
MmZkODQyZTVhMGJjNmI0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0MiBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWFyc2hhbGxpbmdIZWxw
ZXJzLmNwcDoKKyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBlcnMuaDoKKyAgICAgICAgKiBQbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNl
Lmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgICog
UGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJQ
bHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6
CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAgKiBXZWJFbGVtZW50UHJvcGVydHlC
YWcuY3BwOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6
CisgICAgICAgICogV2ViSGlzdG9yeS5oOgorICAgICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoK
KyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6V2ViUmVz
b3VyY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisgICAgICAgICogV2ViU2VjdXJpdHlP
cmlnaW4uY3BwOgorICAgICAgICAqIFdlYlVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYlVS
TFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTgtMTAtMDIgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgUGFy
c2VkVVJMU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjY2YyOTQ2YTlkYTVmYzg2MGYzNThjZDMwZWM5YjM2OGY1MGQ2ZjY5Li44ZTVmY2VkZmI1MWE1
MjZjZTdlZTRkMTgxZGM4ZTA3OTA2NTE2MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTc2LDYgKzc2LDEyIEBACiAJCTUzMTFCRDUzMUVBNzFDQUQwMDUy
NTI4MSAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzMTFCRDUxMUVBNzFDQUQwMDUyNTI4MSAvKiBTaWduYWxzLmNwcCAqLzsgfTsK
IAkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENUIxRUE4MjJGOTAw
NTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwICovOyB9OwogCQk1MzUzNEYyQTFFQzBFMTBFMDAx
NDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTM0RjI5MUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0
aW9ucy5kZWZzICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKENsaWVudCwgU2VydmVyLCAp
OyB9OyB9OworCQk1QzFGMDU5MzIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxRjA1OTEyMTY0
MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLzsgfTsKKwkJNUMxRjA1OTUyMTY0MzdC
MzAwMzkzMDJDIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgKi87IH07
CisJCTVDQzBFRTc1MjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFNzMyMTYyOUYxOTAwQTFB
ODQyIC8qIFVSTFBhcnNlci5jcHAgKi87IH07CisJCTVDQzBFRTc2MjE2MjlGMTkwMEExQTg0MiAv
KiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNDMEVFNzQyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgKi87IH07CisJCTVDQzBFRTg5MjE2
MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5t
bSAqLzsgfTsKKwkJNUNDMEVFOEEyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFODgyMTYy
QkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tICovOyB9OwogCQk3MEE5OTNGRTFBRDcxNTEz
MDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJl
Z2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBFQ0E2MEQxQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0
cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBFQ0E2MEExQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwICovOyB9
OwogCQk3QTA1MDkzRjFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTA1MDkzRTFGQjlEQ0M1MDBC
MzNGQjggLyogSlNPTlZhbHVlcy5jcHAgKi87IH07CkBAIC0zNzIsNyArMzc4LDE5IEBACiAJCTU1
MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGlueUxSVUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1OTdGODJDMUQ5NEI5OTcwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bmNocm9uaXplZEZpeGVkUXVl
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUI0MzM4M0E1RDBCNDYzQzk0MzNE
OTMzIC8qIEluZGV4TWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGV4
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMUYwNTkxMjE2NDM1NkIwMDM5
MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDRlVSTEV4dHJhcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMUYw
NTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDRlVSTEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QzFGMDU5NDIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVVJMQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzFGMDU5NzIxNjQzOTk0MDAzOTMwMkMgLyogVVJMSGFzaC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDN0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlxdWVSZWYuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDQzBFRTcxMjE2MjlGMTgwMEExQTg0MiAvKiBVUkwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QzBFRTcyMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVJMUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQzBFRTczMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUNDMEVFNzQyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0MwRUU3NzIxNjJBMDEwMDBBMUE4NDIgLyogVVJMSGFzaC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVSTENvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU4NzIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRy
YXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNVUkxFeHRyYXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFODgyMTYyQkMyMjAwQTFBODQyIC8qIE5T
VVJMRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTlNV
UkxFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjYyMTQ2ODlC
ODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGli
V1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVEMjQ3QjZFMTQ2
ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjcwMTQ2ODlDNDcwMEU3OEI3
NiAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzIwLDkgKzczOCwxMiBAQAog
CQkyQ0RFRDBGMDE4MTE1QzNGMDA0REJBNzAgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDMUYwNTkxMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVS
TEV4dHJhcy5jcHAgKi8sCisJCQkJNUMxRjA1OTIyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0
cmFzLmggKi8sCiAJCQkJQzJCQ0ZDNDExRjYxRDYxNjAwQzkyMjJDIC8qIExhbmd1YWdlQ0YuY3Bw
ICovLAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAog
CQkJCTFBRkRFNjQ3MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2FzdHNDRi5oICovLAorCQkJCTVD
MUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTExMzEsNiArMTE1MiwxMiBAQAog
CQkJCUUzMDBFNTIxMjAzRDY0NUYwMERBNzlCRSAvKiBVbmlxdWVBcnJheS5oICovLAogCQkJCTVD
N0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlxdWVSZWYuaCAqLywKIAkJCQlDRDc2MDBGRjFG
OTBBM0NBMDAwMjZFMjYgLyogVW5zYWZlUG9pbnRlci5oICovLAorCQkJCTVDQzBFRTc0MjE2MjlG
MTkwMEExQTg0MiAvKiBVUkwuY3BwICovLAorCQkJCTVDQzBFRTcxMjE2MjlGMTgwMEExQTg0MiAv
KiBVUkwuaCAqLywKKwkJCQk1QzFGMDU5NzIxNjQzOTk0MDAzOTMwMkMgLyogVVJMSGFzaC5oICov
LAorCQkJCTVDQzBFRTc3MjE2MkEwMTAwMEExQTg0MiAvKiBVUkxIYXNoLmggKi8sCisJCQkJNUND
MEVFNzMyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5jcHAgKi8sCisJCQkJNUNDMEVFNzIy
MTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5oICovLAogCQkJCTdBRkVDNkIwMUVCMjJCNTkw
MERBREUzNiAvKiBVVUlELmNwcCAqLywKIAkJCQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYgLyog
VVVJRC5oICovLAogCQkJCUE4QTQ3MzZGMTUxQTgyNUIwMDQxMjNGRiAvKiBWYWx1ZUNoZWNrLmgg
Ki8sCkBAIC0xMzU0LDcgKzEzODEsMTAgQEAKIAkJCQlBOEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYg
LyogTWFpblRocmVhZENvY29hLm1tICovLAogCQkJCUFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAv
KiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgKi8sCiAJCQkJQUQ4OUI2QjkxRTY0MTUwRjAwOTA3
MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tICovLAorCQkJCTVDQzBFRTg3MjE2
MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5oICovLAorCQkJCTVDQzBFRTg4MjE2MkJDMjIw
MEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSAqLywKIAkJCQlBMzBENDEyQzFGMERFMEJBMDBCNzE5
NTQgLyogU29mdExpbmtpbmcuaCAqLywKKwkJCQk1Q0MwRUU4NjIxNjJCQzIyMDBBMUE4NDIgLyog
VVJMQ29jb2EubW0gKi8sCiAJCQkJRTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1
ZUNvY29hLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CkBAIC0xNDgxLDYgKzE1MTEs
NyBAQAogCQkJCUE4QTQ3MzhCMTUxQTgyNUIwMDQxMjNGRiAvKiBCaXRWZWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2Vw
dGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNBQzE1MUE4MjVCMDA0MTIzRkYgLyog
Y2FjaGVkLXBvd2Vycy5jYyBpbiBTb3VyY2VzICovLAorCQkJCTVDMUYwNTkzMjE2NDM1NkIwMDM5
MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI4QTFEQzk3
QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDYw
MTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTUzMiw2ICsxNTYzLDcgQEAKIAkJCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcwN0Yg
LyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjY2QjI4QzFEQzk3QkFCMDA0QTFEM0YgLyogTW9ub3RvbmljVGltZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1Q0MwRUU4QTIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRyYXMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNDE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVyT2ZD
b3Jlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNzE1MUE4MjVCMDA0MTIzRkYgLyog
T1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGOTE1MUE4MjVC
MDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTg1LDYg
KzE2MTcsMTAgQEAKIAkJCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2Fn
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MDFEQzk3QkFCMDA0QTFEM0YgLyogVGlt
ZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzA3NUY1MUZC
RjUzQ0QwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0Mw
RUU3NjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDMUYw
NTk1MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0Mw
RUU4OTIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJCQk1
Q0MwRUU3NTIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFDMTgxQzhGMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFDMTgxQzkxMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0
aW4xLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzkzMUQzMDdBQjgwMEY1RkExNiAvKiBV
VGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDM5Y2MxOTk5NjkyNWExMmRjMzRkZTA3MzRiOWYyOTZlZGE0N2NmNDAuLjI4OTIxYmM4ZDI0
ZjQ5ZTM1ZjFmMzc3NmI3YWM2ZTc0ODI5NGMxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0y
NDAsNiArMjQwLDkgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFRpbnlQdHJTZXQuaAog
ICAgIFRyaVN0YXRlLmgKICAgICBUeXBlQ2FzdHMuaAorICAgIFVSTC5oCisgICAgVVJMSGFzaC5o
CisgICAgVVJMUGFyc2VyLmgKICAgICBVVUlELmgKICAgICBVbmFsaWduZWRBY2Nlc3MuaAogICAg
IFVuZXhwZWN0ZWQuaApAQCAtMzkyLDYgKzM5NSw4IEBAIHNldChXVEZfU09VUkNFUwogICAgIFRo
cmVhZGluZy5jcHAKICAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwCiAgICAgVGltaW5n
U2NvcGUuY3BwCisgICAgVVJMLmNwcAorICAgIFVSTFBhcnNlci5jcHAKICAgICBVVUlELmNwcAog
ICAgIFdURkFzc2VydGlvbnMuY3BwCiAgICAgV2FsbFRpbWUuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggZWU1
MWM3MzIxOGYxZmZiOWU1MjUwYjY1ZmQ1YmY1Mzg4MjdhZmVlMi4uNGJlZjgxMGNjMTA4NjcyZDk4
Mjk2OGNiNTkzNWJhMjQwMjcwNjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFz
cyBTdHJpbmdWaWV3OwogY2xhc3MgVGV4dFBvc2l0aW9uOwogY2xhc3MgVGV4dFN0cmVhbTsKIGNs
YXNzIFVuaXF1ZWRTdHJpbmdJbXBsOworY2xhc3MgVVJMOwogY2xhc3MgV2FsbFRpbWU7CiAKIHN0
cnVjdCBGYXN0TWFsbG9jOwpAQCAtMTA5LDYgKzExMCw3IEBAIHVzaW5nIFdURjo6U3RyaW5nSW1w
bDsKIHVzaW5nIFdURjo6U3RyaW5nVmlldzsKIHVzaW5nIFdURjo6VGV4dFBvc2l0aW9uOwogdXNp
bmcgV1RGOjpUZXh0U3RyZWFtOwordXNpbmcgV1RGOjpVUkw7CiB1c2luZyBXVEY6OlZhcmlhbnQ7
CiB1c2luZyBXVEY6OlZlY3RvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA0Njkw
M2MzNjQyOWNlYjcyNmExMTE5MzNhZTJmYjM1MDQ4OGRmMjI1Li40MWM4OTU0OTE4ODI5YzdlMDdl
ZmVjOGRhOTU3MWE2NjZmNjgyNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNiw2
ICs2LDcgQEAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgZ2xpYi9HUmVmUHRy
LmgKICAgICBnbGliL0dUeXBlZGVmcy5oCiAgICAgZ2xpYi9HVW5pcXVlUHRyLmgKKyAgICBnbGli
L0dVbmlxdWVQdHJTb3VwLmgKICAgICBnbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oCiAgICAg
Z2xpYi9XVEZHVHlwZS5oCiAKQEAgLTIxLDYgKzIyLDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKICAgICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAg
IGdsaWIvUnVuTG9vcEdMaWIuY3BwCisgICAgZ2xpYi9VUkxTb3VwLmNwcAogCiAgICAgbGludXgv
Q3VycmVudFByb2Nlc3NNZW1vcnlTdGF0dXMuY3BwCiAgICAgbGludXgvTWVtb3J5Rm9vdHByaW50
TGludXguY3BwCkBAIC0zNyw5ICszOSwxMSBAQCBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCiAg
ICAgJHtHTElCX0dJT19MSUJSQVJJRVN9CiAgICAgJHtHTElCX0dPQkpFQ1RfTElCUkFSSUVTfQog
ICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAgJHtMSUJTT1VQX0xJQlJBUklFU30KICAgICAke1pM
SUJfTElCUkFSSUVTfQogKQogCiBsaXN0KEFQUEVORCBXVEZfU1lTVEVNX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICR7TElCU09VUF9JTkNMVURFX0RJ
UlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGY0ZDUyNmU1NzFiOTMyMjk0ZWFh
MzQyOWEzNDA0OTEwZTcxOTE0MjEuLmEwMThmOTI5ZWY1NTJlZTI0MjExNTY1ZjFhNzllZjBiM2Mz
ZTU2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC04LDEwICs4LDEyIEBAIGxpc3Qo
QVBQRU5EIFdURl9MSUJSQVJJRVMKICkKIAogbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJT
CisgICAgY2YvQ0ZVUkxFeHRyYXMuaAogICAgIGNmL1R5cGVDYXN0c0NGLmgKIAogICAgIGNvY29h
L0VudGl0bGVtZW50cy5oCiAgICAgY29jb2EvTWFjaFNlbmRSaWdodC5oCisgICAgY29jb2EvTlNV
UkxFeHRyYXMuaAogICAgIGNvY29hL1NvZnRMaW5raW5nLmgKIAogICAgIGRhcndpbi9XZWFrTGlu
a2luZy5oCkBAIC0zOCw4ICs0MCwxMCBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIFNj
aGVkdWxlUGFpckNGLmNwcAogICAgIFNjaGVkdWxlUGFpck1hYy5tbQogCisgICAgY2YvQ0ZVUkxF
eHRyYXMuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAgICBjZi9SdW5Mb29wQ0YuY3BwCisg
ICAgY2YvVVJMQ0YuY3BwCiAKICAgICBjb2NvYS9BdXRvZHJhaW5lZFBvb2wuY3BwCiAgICAgY29j
b2EvQ1BVVGltZUNvY29hLmNwcApAQCAtNDgsNiArNTIsOCBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogICAgIGNvY29hL01haW5UaHJlYWRDb2NvYS5tbQogICAgIGNvY29hL01lbW9yeUZvb3Rw
cmludENvY29hLmNwcAogICAgIGNvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisg
ICAgY29jb2EvTlNVUkxFeHRyYXMubW0KKyAgICBjb2NvYS9VUkxDb2NvYS5tbQogICAgIGNvY29h
L1dvcmtRdWV1ZUNvY29hLmNwcAogCiAgICAgbWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2Fm
YXJpLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZSBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDc1MmI1OTkzMTQ4ZjExMTBhMjkz
YzlkYTllMjhhZGVmMDhmZWU0MGMuLmEwMmRhNTI3OGVlZWFiOGRiODAwYmM4Zjk2Zjg5ZmI5NzJm
M2UxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC00LDYgKzQsNyBAQCBsaXN0KEFQ
UEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICBnbGliL0dSZWZQdHIuaAogICAgIGdsaWIvR1R5
cGVkZWZzLmgKICAgICBnbGliL0dVbmlxdWVQdHIuaAorICAgIGdsaWIvR1VuaXF1ZVB0clNvdXAu
aAogICAgIGdsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmgKICAgICBnbGliL1dURkdUeXBlLmgK
IApAQCAtMTksNiArMjAsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGdsaWIvR0xp
YlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3BwCiAgICAgZ2xpYi9SdW5Mb29wR0xp
Yi5jcHAKKyAgICBnbGliL1VSTFNvdXAuY3BwCiAKICAgICBsaW51eC9DdXJyZW50UHJvY2Vzc01l
bW9yeVN0YXR1cy5jcHAKICAgICBsaW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKQEAgLTM1
LDkgKzM3LDExIEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICAgICAke0dMSUJfR0lPX0xJ
QlJBUklFU30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJRVN9CiAgICAgJHtHTElCX0xJQlJB
UklFU30KKyAgICAke0xJQlNPVVBfTElCUkFSSUVTfQogICAgICR7WkxJQl9MSUJSQVJJRVN9CiAp
CiAKIGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7R0xJ
Ql9JTkNMVURFX0RJUlN9CisgICAgJHtMSUJTT1VQX0lOQ0xVREVfRElSU30KICkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1XaW4uY21ha2UKaW5kZXggNDY4NTE5NmNlYTYyZGMwNmQ1YmE2MzAwMjEyYzI3ODkwOTFl
OWFkNy4uNjgzNTk5YjEwNzMyZTJmODAzY2Q5MTA1OTZlZDQyODE4MTNjODdlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1XaW4uY21ha2UKQEAgLTIwLDExICsyMCwxNSBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogCiBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwor
ICAgICAgICBjZi9DRlVSTEV4dHJhcy5oCiAgICAgICAgIGNmL1R5cGVDYXN0c0NGLmgKIAogICAg
ICAgICB0ZXh0L2NmL1RleHRCcmVha0l0ZXJhdG9yQ0YuaAogICAgICkKICAgICBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUworICAgICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKKyAgICAgICAgY2YvVVJM
Q0YuY3BwCisKICAgICAgICAgdGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCiAgICAgICAg
IHRleHQvY2YvU3RyaW5nQ0YuY3BwCiAgICAgICAgIHRleHQvY2YvU3RyaW5nSW1wbENGLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTQzNDVhZWU3NTMzM2JjZjg3YzE2YTM1Y2Q3YzAxZDUwYzAwNWU5Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTAsMCArMSwxMTA4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LTIwMDgsIDIwMTEtMjAxMywgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKyNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNp
bmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKKy8vIEZJWE1FOiBUaGlzIGZpbGUgbWFrZXMg
dG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJhdG9yIG9uIFN0cmluZy4KKy8vIFdlIGVpdGhlciBo
YXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0b3Igc28gaXQgZG9lc24ndCBpbnZvbHZlCisvLyBz
byBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFuZ2UgdGhpcyB0byB1c2UgU3RyaW5nQnVmZmVyIGlu
c3RlYWQuCisKKworbmFtZXNwYWNlIFdURiB7CisKK3R5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4g
Q2hhckJ1ZmZlcjsKK3R5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOworCitz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7CisKKy8vIENv
cGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3Vy
Y2UgY2hhcmFjdGVycyBhcmUKKy8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3Qg
YmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKKy8vIGluIHRoZSBz
b3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRo
ZSByZXN1bHQuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNo
YXIqIGRlc3QpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIG1lbWNweShkZXN0LCBzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgY29u
c3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgc2l6ZV90IGxl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzcmNb
aV0pOworICAgIH0KK30KKwordm9pZCBVUkw6OmludmFsaWRhdGUoKQoreworICAgIG1faXNWYWxp
ZCA9IGZhbHNlOworICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOworICAgIG1f
Y2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOworICAgIG1fc2NoZW1lRW5kID0gMDsKKyAgICBtX3Vz
ZXJTdGFydCA9IDA7CisgICAgbV91c2VyRW5kID0gMDsKKyAgICBtX3Bhc3N3b3JkRW5kID0gMDsK
KyAgICBtX2hvc3RFbmQgPSAwOworICAgIG1fcG9ydExlbmd0aCA9IDA7CisgICAgbV9wYXRoRW5k
ID0gMDsKKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7CisgICAgbV9xdWVyeUVuZCA9IDA7
Cit9CisKK1VSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwg
Y29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKK3sKKyAgICBVUkxQYXJzZXIgcGFyc2Vy
KHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Cit9CisKK3N0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCit7CisgICAgLy8g
QnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbAor
ICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4gKnVuc2lnbmVk
KiBjaGFyIGhlcmUKKyAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9ubHkgY2F0Y2gg
Y29udHJvbCBjaGFyYWN0ZXJzLgorICAgIHJldHVybiBjIDw9ICcgJzsKK30KKworVVJMIFVSTDo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBVUkwgcmVzdWx0ID0gKnRoaXM7CisgICAgcmVz
dWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK1N0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKK3sK
KyAgICBpZiAoIWhhc1BhdGgoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgdW5z
aWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKKyAgICBpZiAobV9zdHJpbmdbZW5kXSA9PSAnLycp
CisgICAgICAgIC0tZW5kOworCisgICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcucmV2ZXJzZUZp
bmQoJy8nLCBlbmQpOworICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2hv
c3RFbmQgKyBtX3BvcnRMZW5ndGgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgKytz
dGFydDsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0
ICsgMSk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7Cit9CisK
K1N0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBzdGFydCA9IGhv
c3RTdGFydCgpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3Rh
cnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKK30KKworc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJM
Ojpwb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcG9ydExlbmd0aCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCBudW1i
ZXI7CisgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBudW1iZXIgPSBjaGFyYWN0
ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBt
X3BvcnRMZW5ndGggLSAxLCAmb2spOworICAgIGVsc2UKKyAgICAgICAgbnVtYmVyID0gY2hhcmFj
dGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9zdEVuZCArIDEs
IG1fcG9ydExlbmd0aCAtIDEsICZvayk7CisgICAgaWYgKCFvayB8fCBudW1iZXIgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgcmV0dXJuIG51bWJlcjsKK30KKworU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBj
b25zdAoreworICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkpCisgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9ydC52YWx1
ZSgpKSk7CisgICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOworfQorCitTdHJpbmcgVVJMOjpw
cm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKK3sKKyAgICBTdHJpbmcgcmVzdWx0ID0gbV9zdHJp
bmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7CisKKyAgICBpZiAobV9w
YXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgeworICAgICAgICBjb25zdCBpbnQgYWxsb3dG
b3JUcmFpbGluZ0F0U2lnbiA9IDE7CisgICAgICAgIHJlc3VsdC5yZW1vdmUobV91c2VyU3RhcnQs
IG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdBdFNpZ24pOwor
ICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBTdHJpbmcgZGVjb2RlRXNj
YXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0KQoreworICAgIGF1dG8g
aW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBpZiAoIWlucHV0TGVuZ3RoKQorICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBWZWN0b3I8TENoYXI+IHBlcmNlbnREZWNv
ZGVkOworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXRMZW5n
dGgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKKyAgICAgICAgICAgICYmIGlucHV0TGVuZ3RoID4g
MgorICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgorICAgICAgICAgICAgJiYgaXNB
U0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKKyAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdp
dChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRB
cHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7CisgICAg
ICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGVyY2VudERlY29k
ZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKKyAgICB9CisgICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwor
fQorCitTdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBl
U2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91
c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Cit9CisKK1N0cmluZyBVUkw6OnBh
c3MoKSBjb25zdAoreworICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zy
b21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlckVuZCArIDEs
IG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Cit9CisKK1N0cmluZyBVUkw6OmVuY29k
ZWRVc2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlclN0
YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Cit9CisKK1N0cmluZyBVUkw6OmVuY29kZWRQ
YXNzKCkgY29uc3QKK3sKKyAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91
c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOworfQorCitTdHJpbmcg
VVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICghaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0
cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOworfQorCitib29sIFVSTDo6aGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5n
Lmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Cit9CisKK1N0cmluZyBVUkw6OmJhc2VBc1N0cmluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gp
OworfQorCisjaWYgIVVTRShDRikKKworU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25z
dAoreworICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNl
ZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOworfQorCisjZW5kaWYKKworI2lmZGVmIE5ERUJVRwor
CitzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldykKK3sK
K30KKworI2Vsc2UKKworc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmll
dyBwcm90b2NvbCkKK3sKKyAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0aGlz
IGZ1bmN0aW9uIGFueSBtb3JlLgorICAgIC8vIFRoZSBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFs
IGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVycworICAgIC8vIGFyZSBv
bmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3QgYW5kIHJlbGllZCBvbiB0
aGVzZSBjaGVja3MuCisgICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHByb3RvY29sLmNvZGVVbml0
cygpKSB7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOworICAgICAgICBBU1NF
UlQoY2hhcmFjdGVyID4gJyAnKTsKKyAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoY2hhcmFj
dGVyKSk7CisgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSA9
PSBjaGFyYWN0ZXIpOworICAgIH0KK30KKworI2VuZGlmCisKK3N0YXRpYyBMb2NrIGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKKwordXNpbmcgRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+Oworc3RhdGlj
IERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIHN0YXRpYyBEZWZhdWx0UG9ydEZvclByb3RvY29s
TWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKKyAgICByZXR1cm4gZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKK30KKworc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGlu
ZygpCit7CisgICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0
UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmco
KTsKKyAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCisgICAgICAgIGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmc7CisgICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOworfQorCit2b2lkIHJl
Z2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgZW5zdXJlRGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQpOworfQorCit2
b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdM
b2NrKTsKKyAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcoKSkKKyAgICAgICAgbWFwLT5jbGVhcigpOworfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQx
Nl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCit7CisgICAg
aWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcoKSkgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJv
dG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgICAgIEFTU0VSVChvdmVycmlkZU1hcCk7IC8v
IE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRlTWFwIGNhbm5v
dCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KKyAgICAgICAgYXV0byBpdGVyYXRv
ciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7
CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCisgICAgICAgICAg
ICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gVVJMUGFyc2VyOjpk
ZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKK30KKworYm9vbCBpc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkKK3sKKyAgICBy
ZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsKK30KKworYm9v
bCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Cit7CisgICAgYXNz
ZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7CisKKyAgICAvLyBKYXZhU2NyaXB0IFVS
THMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVSTCBkZWNpZGVz
IHRoZXkgYXJlIGludmFsaWQuCisgICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJvdG9jb2xJc0ph
dmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKKyAgICBBU1NFUlQoIWVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2YXNjcmlwdCIp
KTsKKworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0Lgor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7CisgICAgICAg
IGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdb
aV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
cmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZlIGNvbnN1bWVk
IGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KK30KKworYm9vbCBVUkw6OnByb3RvY29s
SXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKK3sKKyAgICBhc3NlcnRQcm90b2NvbElzR29v
ZChwcm90b2NvbCk7CisKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5sZW5ndGgoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtp
bmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9z
Y2hlbWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
bV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBVUkw6OnF1ZXJ5KCkgY29uc3QKK3sK
KyAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9xdWVy
eUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAorfQorCitTdHJpbmcgVVJMOjpwYXRoKCkgY29uc3QK
K3sKKyAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworICAg
IHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0gcG9ydEVuZCk7
Cit9CisKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCit7CisgICAgLy8g
RmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KKyAg
ICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKKyAgICBTdHJpbmcgbmV3
UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7CisgICAgYXV0byBj
YW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90
b2NvbCk7CisgICAgaWYgKCFjYW5vbmljYWxpemVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJp
bmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vic3RyaW5nKG1f
c2NoZW1lRW5kKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQorewor
ICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJu
IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5n
dGgoKSk7Cit9CisgICAgCisvLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRp
ZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KKy8vIHRoZSBvdXRwdXQgYnVm
ZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KKy8vIFJldHVybiB2
YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KK3N0YXRpYyBib29sIGFwcGVu
ZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykK
K3sKKyAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQg
bmFtZS4KKyAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBk
byBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCisgICAgY29uc3Qg
dW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OworICAgIAorICAgIGlmIChzdHJp
bmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJKHN0cmluZykp
IHsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIAorICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVu
Z3RoXTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5m
byBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJf
dCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVSTFBhcnNlcjo6
aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCisgICAgICAgIHN0cmluZy51cGNv
bnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1ZmZlciwgaG9z
dG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKKyAgICAKKyAg
ICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7Cisg
ICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0
ZWQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit1bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3Bhc3N3
b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsg
MTsKK30KKwordm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQoreworICAgIGlmICgh
bV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbG9uSW5kZXggPSBzLmZp
bmQoJzonKTsKKyAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOworICAgIGlmICghYXBwZW5kRW5j
b2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOworICAg
IGlmIChzbGFzaFNsYXNoTmVlZGVkKQorICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8v
Iik7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgp
LCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcu
c3Vic3RyaW5nKG1faG9zdEVuZCkpOworCisgICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVyLnRv
U3RyaW5nKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6
cmVtb3ZlUG9ydCgpCit7CisgICAgaWYgKCFtX3BvcnRMZW5ndGgpCisgICAgICAgIHJldHVybjsK
KyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVm
dChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsg
bV9wb3J0TGVuZ3RoKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCit2b2lk
IFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQoreworICAgIGlmICghbV9pc1ZhbGlkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9ydExlbmd0aDsK
KyAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hv
c3RFbmQgKyAxKTsKKworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3
KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3Ry
aW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQg
KyBtX3BvcnRMZW5ndGgpKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK3Zv
aWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQoreworICAg
IGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmdWaWV3IGhvc3RO
YW1lKGhvc3RBbmRQb3J0KTsKKyAgICBTdHJpbmdWaWV3IHBvcnQ7CisgICAgCisgICAgYXV0byBj
b2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOworICAgIGlmIChjb2xvbkluZGV4ICE9IG5v
dEZvdW5kKSB7CisgICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCAr
IDEpOworICAgICAgICBib29sIG9rOworICAgICAgICBpbnQgcG9ydEludCA9IHBvcnQudG9JbnRT
dHJpY3Qob2spOworICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbklu
ZGV4KTsKKyAgICB9CisKKyAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7CisgICAgaWYgKCFhcHBlbmRF
bmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOworCisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsKKyAg
ICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIv
LyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEo
KSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOworICAgIGlmICghcG9ydC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHBvcnQpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7CisKKyAgICBVUkxQYXJzZXIg
cGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Cit9CisKK3N0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5n
JiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCit7CisgICAgYXV0byBlbmNvZGUg
PSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgeworICAgICAgICBDU3RyaW5n
IHV0ZjggPSBpbnB1dC51dGY4KCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSB1dGY4LmRhdGEoKTsK
KyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBhdXRvIGxlbmd0aCA9IHV0
ZjgubGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7IGor
KykgeworICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKKyAgICAgICAgICAgIGlmIChzaG91
bGRFbmNvZGUoYykpIHsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMp
KTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhE
aWdpdChjKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwor
ICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aCgpOyArK2kp
IHsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1dFtpXSkpKQorICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7CisgICAgfQorICAgIHJldHVybiBpbnB1dDsKK30K
Kwordm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJh
Y3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0
YXRpb25zLAorICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUg
dXNlciBsb2dpbi4KKworICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKKyAgICBpZiAoIXVz
ZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29kZUNoYXJhY3Rl
cnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOworICAgICAgICBpZiAo
bV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisg
ICAgICAgICAgICB1ID0gIi8vIiArIHU7CisgICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0
IGhhdmUgb25lIGJlZm9yZS4KKyAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9
PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKKyAgICAgICAgICAgIHUu
YXBwZW5kKCdAJyk7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVz
ZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRFbmQg
JiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKKyAgICAgICAgICAg
IGVuZCArPSAxOworICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRy
ZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdl
LgorICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7CisgICAgICAgICAgICBVUkxQYXJz
ZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJTdGFy
dCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAgICAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBVUkw6
OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKKyAg
ICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmcgcCA9ICI6IiArIHBl
cmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0Vu
Y29kZVNldCkgKyAiQCI7CisgICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisgICAgICAgICAgICBwID0gIi8vIiArIHA7CisgICAg
ICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQgb3Vy
IG93bi4KKyAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAn
QCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVz
dWx0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2
ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0g
bV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisg
ICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBp
biB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFr
ZSBhIGNoYW5nZS4KKyAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKKyAgICAgICAgICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1f
dXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAg
ICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBPcHRp
bWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBlbnMgdG8gYmUg
ZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPworICAgIC8vIEZJWE1FOiBJcyBpdCBjb3JyZWN0IHRv
IGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJIGNoYXJhY3Rl
cnM/CisgICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgeyBtX3N0
cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVyKSB9LnJlc3Vs
dCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKK3sKKyAgICBp
ZiAoIW1faXNWYWxpZCkgeworICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBt
X3F1ZXJ5RW5kKQorICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7
Cit9CisKK3ZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpCit7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RyaW5nID0gbV9z
dHJpbmcubGVmdChtX3BhdGhFbmQpOworICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhFbmQ7Cit9CisK
K3ZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVND
SUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCisgICAgLy8gVXN1YWxs
eSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYt
OCwgYnV0IHdlIGRvbid0IGhhdmUKKyAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRo
aXMgZnVuY3Rpb24uCisgICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2CisgICAgaWYg
KChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkp
IHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJp
bmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKG1fcXVlcnlFbmQpKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7CisgICAgfQorCit9CisKK3ZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKK3sK
KyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIHBhdGgg
PSBzOworICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKKyAgICAgICAg
cGF0aCA9ICIvIiArIHBhdGg7CisKKyAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9
IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnPycg
fHwgY2hhcmFjdGVyID09ICcjJzsKKyAgICB9OworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0
cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCks
IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiks
IFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7CisgICAgKnRoaXMg
PSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK2Jvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRp
Zmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5tX3F1ZXJ5RW5k
ICE9IGIubV9xdWVyeUVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHF1
ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBx
dWVyeUxlbmd0aDsgKytpKQorICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygp
W2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJM
JiBiKQoreworICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7CisgICAgICAgIGlmIChhLnN0cmlu
ZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVh
bChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5tX3NjaGVtZUVuZCAh
PSBiLm1fc2NoZW1lRW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBo
b3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEu
bV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0
U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gYi5ob3N0
U3RhcnQoKTsKKyAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7CisgICAgICAgIGlmIChhLnN0cmluZygp
W2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgLy8gQW5kIHRoZSBob3N0CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RM
ZW5ndGhBOyArK2kpIHsKKyAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldICE9
IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBV
UkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0
U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0
YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKKyAgICB1bnNp
Z25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKKyAgICBpZiAoaG9z
dExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7CisgICAgICAgIGlmIChh
LnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFydEIgKyBpXSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0
Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
ZG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIXByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBo
b3N0ID0gdGhpcy0+aG9zdCgpOworICAgIGlmICghaG9zdC5lbmRzV2l0aChkb21haW4pKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9PSBkb21haW4u
bGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgpIC0gMV0gPT0g
Jy4nOworfQorCitTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJp
bmcmIGlucHV0KQoreworICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhpbnB1dCwg
VVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOworfQorCitib29sIFVSTDo6aXNIaWVy
YXJjaGljYWwoKSBjb25zdAoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9PSAnOicpOworICAgIHJl
dHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKK30KKwordm9pZCBVUkw6OmNv
cHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAoreworICAgIC8vIEZJ
WE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUgY2hhcmFjdGVy
cyBpbiB0aGUgc3RyaW5nIQorICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlkIFVSTCwgd2hp
Y2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCisgICAgYnVmZmVyLnJl
c2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIu
ZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Citib29sIHByb3Rv
Y29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2Nv
bCkKK3sKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJp
bmcgb2JqZWN0LgorICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29sKSkpOworICAg
IGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBqID0gMDsg
dXJsW2ldOyArK2kpIHsKKyAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNv
bnRyb2wgY2hhcmFjdGVycy4KKyAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91bGRUcmltRnJv
bVVSTCh1cmxbaV0pKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlzTGVhZGluZyA9
IGZhbHNlOworCisgICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVzLgorICAgICAg
ICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ldID09ICdcbicp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIXByb3RvY29sW2pdKQorICAg
ICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7CisgICAgICAgIGlmICghaXNBU0NJSUFscGhh
Q2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICArK2o7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2Nv
bCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wpOworfQor
CitpbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0
IGNoYXIqIHByb3RvY29sKQoreworICAgIHJldHVybiBXVEY6OnByb3RvY29sSXNJbnRlcm5hbChz
dHJpbmcsIHByb3RvY29sKTsKK30KKworI2lmbmRlZiBOREVCVUcKKwordm9pZCBVUkw6OnByaW50
KCkgY29uc3QKK3sKKyAgICBwcmludGYoIiVzXG4iLCBtX3N0cmluZy51dGY4KCkuZGF0YSgpKTsK
K30KKworI2VuZGlmCisKK1N0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNv
bnN0Cit7CisgICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKKyAgICByZWZlcnJlci5zZXRVc2VyKFN0
cmluZygpKTsKKyAgICByZWZlcnJlci5zZXRQYXNzKFN0cmluZygpKTsKKyAgICByZWZlcnJlci5y
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gcmVmZXJyZXIuc3RyaW5nKCk7
Cit9CisKK2Jvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0Cit7CisgICAgLy8gSW5jbHVkaW5n
IGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVhIHNpbmNlIGRyYWcgYW5kIGRyb3AgdXNlcyB0
aGlzIGNoZWNrCisgICAgLy8gYW5kIGluY2x1ZGluZyBmZWVkIHdvdWxkIGFsbG93IGZlZWRzIHRv
IHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxvZworICAgIC8vIHJlYWQgdGhlIGNvbnRlbnRz
IG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBldmVuIHdpdGhvdXQgYSBkcm9wLgorICAgIC8v
IExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzTG9j
YWwoKSBmdW5jdGlvbi4KKyAgICByZXR1cm4gcHJvdG9jb2xJcygiZmlsZSIpOworfQorCitib29s
IHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIHJldHVybiBw
cm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29sIHByb3RvY29s
SXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKQoreworICAgIHJldHVybiBwcm90b2NvbElzSW50
ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29sIHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgYXV0byBsZW5ndGggPSB1cmwubGVuZ3RoKCk7
CisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9i
amVjdC4KKyAgICByZXR1cm4gbGVuZ3RoID49IDUKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2Fz
ZWxlc3NFcXVhbCh1cmxbMF0sICdoJykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbCh1cmxbMV0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1
cmxbMl0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbM10s
ICdwJykKKyAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwgKGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwodXJsWzRdLCAncycpICYmIGxlbmd0aCA+PSA2ICYmIHVybFs1XSA9PSAnOicpKTsKK30K
KworY29uc3QgVVJMJiBibGFua1VSTCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVS
TD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayIpOworICAgIHJldHVybiBzdGF0
aWNCbGFua1VSTDsKK30KKworYm9vbCBVUkw6OmlzQmxhbmtVUkwoKSBjb25zdAoreworICAgIHJl
dHVybiBwcm90b2NvbElzKCJhYm91dCIpOworfQorCitib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVS
TCYgdXJsKQoreworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgp
OworCisgICAgLy8gU2luY2UgbW9zdCBVUkxzIGRvbid0IGhhdmUgYSBwb3J0LCByZXR1cm4gZWFy
bHkgZm9yIHRoZSAibm8gcG9ydCIgY2FzZS4KKyAgICBpZiAoIXBvcnQpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gVGhpcyBibG9ja2VkIHBvcnQgbGlzdCBtYXRjaGVzIHRoZSBwb3J0
IGJsb2NraW5nIHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgorICAgIC8vIFNlZSBodHRwOi8vd3d3
Lm1vemlsbGEub3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFubmluZy5odG1sIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgorICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBibG9ja2VkUG9ydExpc3RbXSA9
IHsKKyAgICAgICAgMSwgICAgLy8gdGNwbXV4CisgICAgICAgIDcsICAgIC8vIGVjaG8KKyAgICAg
ICAgOSwgICAgLy8gZGlzY2FyZAorICAgICAgICAxMSwgICAvLyBzeXN0YXQKKyAgICAgICAgMTMs
ICAgLy8gZGF5dGltZQorICAgICAgICAxNSwgICAvLyBuZXRzdGF0CisgICAgICAgIDE3LCAgIC8v
IHFvdGQKKyAgICAgICAgMTksICAgLy8gY2hhcmdlbgorICAgICAgICAyMCwgICAvLyBGVFAtZGF0
YQorICAgICAgICAyMSwgICAvLyBGVFAtY29udHJvbAorICAgICAgICAyMiwgICAvLyBTU0gKKyAg
ICAgICAgMjMsICAgLy8gdGVsbmV0CisgICAgICAgIDI1LCAgIC8vIFNNVFAKKyAgICAgICAgMzcs
ICAgLy8gdGltZQorICAgICAgICA0MiwgICAvLyBuYW1lCisgICAgICAgIDQzLCAgIC8vIG5pY25h
bWUKKyAgICAgICAgNTMsICAgLy8gZG9tYWluCisgICAgICAgIDc3LCAgIC8vIHByaXYtcmpzCisg
ICAgICAgIDc5LCAgIC8vIGZpbmdlcgorICAgICAgICA4NywgICAvLyB0dHlsaW5rCisgICAgICAg
IDk1LCAgIC8vIHN1cGR1cAorICAgICAgICAxMDEsICAvLyBob3N0cmlhbWUKKyAgICAgICAgMTAy
LCAgLy8gaXNvLXRzYXAKKyAgICAgICAgMTAzLCAgLy8gZ3BwaXRucAorICAgICAgICAxMDQsICAv
LyBhY3ItbmVtYQorICAgICAgICAxMDksICAvLyBQT1AyCisgICAgICAgIDExMCwgIC8vIFBPUDMK
KyAgICAgICAgMTExLCAgLy8gc3VucnBjCisgICAgICAgIDExMywgIC8vIGF1dGgKKyAgICAgICAg
MTE1LCAgLy8gU0ZUUAorICAgICAgICAxMTcsICAvLyB1dWNwLXBhdGgKKyAgICAgICAgMTE5LCAg
Ly8gbm50cAorICAgICAgICAxMjMsICAvLyBOVFAKKyAgICAgICAgMTM1LCAgLy8gbG9jLXNydiAv
IGVwbWFwCisgICAgICAgIDEzOSwgIC8vIG5ldGJpb3MKKyAgICAgICAgMTQzLCAgLy8gSU1BUDIK
KyAgICAgICAgMTc5LCAgLy8gQkdQCisgICAgICAgIDM4OSwgIC8vIExEQVAKKyAgICAgICAgNDY1
LCAgLy8gU01UUCtTU0wKKyAgICAgICAgNTEyLCAgLy8gcHJpbnQgLyBleGVjCisgICAgICAgIDUx
MywgIC8vIGxvZ2luCisgICAgICAgIDUxNCwgIC8vIHNoZWxsCisgICAgICAgIDUxNSwgIC8vIHBy
aW50ZXIKKyAgICAgICAgNTI2LCAgLy8gdGVtcG8KKyAgICAgICAgNTMwLCAgLy8gY291cmllcgor
ICAgICAgICA1MzEsICAvLyBDaGF0CisgICAgICAgIDUzMiwgIC8vIG5ldG5ld3MKKyAgICAgICAg
NTQwLCAgLy8gVVVDUAorICAgICAgICA1NDgsICAvLyBhZnBvdmVydGNwIFtBcHBsZSBhZGRpdGlv
bl0KKyAgICAgICAgNTU2LCAgLy8gcmVtb3RlZnMKKyAgICAgICAgNTYzLCAgLy8gTk5UUCtTU0wK
KyAgICAgICAgNTg3LCAgLy8gRVNNVFAKKyAgICAgICAgNjAxLCAgLy8gc3lzbG9nLWNvbm4KKyAg
ICAgICAgNjM2LCAgLy8gTERBUCtTU0wKKyAgICAgICAgOTkzLCAgLy8gSU1BUCtTU0wKKyAgICAg
ICAgOTk1LCAgLy8gUE9QMytTU0wKKyAgICAgICAgMjA0OSwgLy8gTkZTCisgICAgICAgIDM2NTks
IC8vIGFwcGxlLXNhc2wgLyBQYXNzd29yZFNlcnZlciBbQXBwbGUgYWRkaXRpb25dCisgICAgICAg
IDQwNDUsIC8vIGxvY2tkCisgICAgICAgIDQxOTAsIC8vIE1hbmFnZVNpZXZlIFtBcHBsZSBhZGRp
dGlvbl0KKyAgICAgICAgNjAwMCwgLy8gWDExCisgICAgICAgIDY2NjUsIC8vIEFsdGVybmF0ZSBJ
UkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2NjY2LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBs
ZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2NywgLy8gU3RhbmRhcmQgSVJDIFtBcHBsZSBhZGRpdGlv
bl0KKyAgICAgICAgNjY2OCwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAg
ICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2Njc5
LCAvLyBBbHRlcm5hdGUgSVJDIFNTTCBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2OTcsIC8v
IElSQytTU0wgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICBpbnZhbGlkUG9ydE51bWJlciwgLy8g
VXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJlcnMKKyAgICB9OworCisgICAgLy8g
SWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBvcnQgbGlzdCwgYWxsb3cgaXQuCisg
ICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3Rk
OjplbmQoYmxvY2tlZFBvcnRMaXN0KSkpOworICAgIGlmICghc3RkOjpiaW5hcnlfc2VhcmNoKHN0
ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRMaXN0KSwgcG9y
dC52YWx1ZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBBbGxvdyBwb3J0cyAy
MSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxhIGRvZXMuCisgICAgaWYgKChwb3J0LnZh
bHVlKCkgPT0gMjEgfHwgcG9ydC52YWx1ZSgpID09IDIyKSAmJiB1cmwucHJvdG9jb2xJcygiZnRw
IikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gQWxsb3cgYW55IHBvcnQgbnVtYmVy
IGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJlciBpcyBpZ25vcmVkLgorICAgIGlm
ICh1cmwucHJvdG9jb2xJcygiZmlsZSIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5n
JiB1cmwpCit7CisgICAgQVNTRVJUKHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJkYXRhIikpOwor
CisgICAgLy8gRklYTUU6IFdoYXQncyB0aGUgcmlnaHQgYmVoYXZpb3Igd2hlbiB0aGUgVVJMIGhh
cyBhIGNvbW1hIGZpcnN0LCBidXQgYSBzZW1pY29sb24gbGF0ZXI/CisgICAgLy8gQ3VycmVudGx5
IHRoaXMgY29kZSB3aWxsIGJyZWFrIGF0IHRoZSBzZW1pY29sb24gaW4gdGhhdCBjYXNlLiBOb3Qg
c3VyZSB0aGF0J3MgY29ycmVjdC4KKyAgICBhdXRvIGluZGV4ID0gdXJsLmZpbmQoJzsnLCA1KTsK
KyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIGluZGV4ID0gdXJsLmZpbmQoJywn
LCA1KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRo
ZXJlIHdhcyBhbiBvbGQgY29tbWVudCBoZXJlIHRoYXQgbWFkZSBpdCBzb3VuZCBsaWtlIHRoaXMg
c2hvdWxkIGJlIHJldHVybmluZyB0ZXh0L3BsYWluLgorICAgICAgICAvLyBCdXQgd2UgaGF2ZSBi
ZWVuIHJldHVybmluZyBlbXB0eSBzdHJpbmcgaGVyZSBmb3Igc29tZSB0aW1lLCBzbyBub3QgY2hh
bmdpbmcgaXRzIGJlaGF2aW9yIGF0IHRoaXMgdGltZS4KKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CisgICAgfQorICAgIGlmIChpbmRleCA9PSA1KQorICAgICAgICByZXR1cm4gInRleHQv
cGxhaW4iX3M7CisgICAgQVNTRVJUKGluZGV4ID49IDUpOworICAgIHJldHVybiB1cmwuc3Vic3Ry
aW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKK30KKworU3RyaW5n
IFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkgY29u
c3QKK3sKKyAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkgPD0gbGVuZ3RoKQorICAgICAgICByZXR1
cm4gc3RyaW5nKCk7CisKKyAgICByZXR1cm4gc3RyaW5nKCkubGVmdChsZW5ndGggLyAyIC0gMSkg
KyAiLi4uIiArIHN0cmluZygpLnJpZ2h0KGxlbmd0aCAvIDIgLSAyKTsKK30KKworVVJMIFVSTDo6
ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhcnQpCit7Cisg
ICAgcmV0dXJuIFVSTChVUkwoKSwgIndlYmtpdC1mYWtlLXVybDovLyIgKyBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkgKyAnLycgKyByZWxhdGl2ZVBhcnQpOworfQorCitVUkwgVVJMOjpmaWxl
VVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgcmV0
dXJuIFVSTChVUkwoKSwgImZpbGU6Ly8vIiArIGZpbGVQYXRoKTsKK30KKworVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVVJMJiB1cmwpCit7CisgICAgdHMgPDwg
dXJsLnN0cmluZygpOworICAgIHJldHVybiB0czsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkg
JiYgIVVTRShTT1VQKQorc3RhdGljIGJvb2wgaXNJUHY0QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmlu
ZykKK3sKKyAgICBhdXRvIGNvdW50ID0gMDsKKworICAgIGZvciAoY29uc3QgYXV0byBvY3RldCA6
IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCcuJykpIHsKKyAgICAgICAgaWYgKGNv
dW50ID49IDQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgYXV0
byBsZW5ndGggPSBvY3RldC5sZW5ndGgoKTsKKyAgICAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3Ro
ID4gMykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBhdXRvIHZhbHVlID0g
MDsKKyAgICAgICAgZm9yIChhdXRvIGkgPSAwdTsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICBjb25zdCBhdXRvIGRpZ2l0ID0gb2N0ZXRbaV07CisKKyAgICAgICAgICAgIC8vIFByb2hp
Yml0IGxlYWRpbmcgemVyb2VzLgorICAgICAgICAgICAgaWYgKGRpZ2l0ID4gJzknIHx8IGRpZ2l0
IDwgKCFpICYmIGxlbmd0aCA+IDEgPyAnMScgOiAnMCcpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAgICAgdmFsdWUgPSAxMCAqIHZhbHVlICsgKGRpZ2l0IC0gJzAn
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2YWx1ZSA+IDI1NSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBjb3VudCsrOworICAgIH0KKworICAgIHJldHVybiAoY291
bnQgPT0gNCk7Cit9CisKK3N0YXRpYyBib29sIGlzSVB2NkFkZHJlc3MoU3RyaW5nVmlldyBzdHJp
bmcpCit7CisgICAgZW51bSBTa2lwU3RhdGUgeyBOb25lLCBXaWxsU2tpcCwgU2tpcHBpbmcsIFNr
aXBwZWQsIEZpbmFsIH07CisgICAgYXV0byBza2lwU3RhdGUgPSBOb25lOworICAgIGF1dG8gY291
bnQgPSAwOworCisgICAgZm9yIChjb25zdCBhdXRvIGhleHRldCA6IHN0cmluZy5zcGxpdEFsbG93
aW5nRW1wdHlFbnRyaWVzKCc6JykpIHsKKyAgICAgICAgaWYgKGNvdW50ID49IDggfHwgc2tpcFN0
YXRlID09IEZpbmFsKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0
IGF1dG8gbGVuZ3RoID0gaGV4dGV0Lmxlbmd0aCgpOworICAgICAgICBpZiAoIWxlbmd0aCkgewor
ICAgICAgICAgICAgLy8gOjogbWF5IGJlIHVzZWQgYW55d2hlcmUgdG8gc2tpcCAxIHRvIDggaGV4
dGV0cywgYnV0IG9ubHkgb25jZS4KKyAgICAgICAgICAgIGlmIChza2lwU3RhdGUgPT0gU2tpcHBl
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChza2lw
U3RhdGUgPT0gTm9uZSkKKyAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSAhY291bnQgPyBXaWxs
U2tpcCA6IFNraXBwaW5nOworICAgICAgICAgICAgZWxzZSBpZiAoc2tpcFN0YXRlID09IFdpbGxT
a2lwKQorICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IFNraXBwaW5nOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IEZpbmFsOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2tpcFN0YXRlID09IFdpbGxTa2lwKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChza2lwU3RhdGUgPT0gU2tp
cHBpbmcpCisgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGVkOworCisgICAgICAgIGlmIChs
ZW5ndGggPiA0KSB7CisgICAgICAgICAgICAvLyBBbiBJUHY0IGFkZHJlc3MgbWF5IGJlIHVzZWQg
aW4gcGxhY2Ugb2YgdGhlIGZpbmFsIHR3byBoZXh0ZXRzLgorICAgICAgICAgICAgaWYgKChza2lw
U3RhdGUgPT0gTm9uZSAmJiBjb3VudCAhPSA2KSB8fCAoc2tpcFN0YXRlID09IFNraXBwZWQgJiYg
Y291bnQgPj0gNikgfHwgIWlzSVB2NEFkZHJlc3MoaGV4dGV0KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHNraXBTdGF0ZSA9IEZpbmFsOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gY29kZVVu
aXQgOiBoZXh0ZXQuY29kZVVuaXRzKCkpIHsKKyAgICAgICAgICAgIC8vIElQdjYgYWxsb3dzIGxl
YWRpbmcgemVyb2VzLgorICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoY29kZVVuaXQp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGNv
dW50Kys7CisgICAgfQorCisgICAgcmV0dXJuIChjb3VudCA9PSA4ICYmIHNraXBTdGF0ZSA9PSBO
b25lKSB8fCBza2lwU3RhdGUgPT0gU2tpcHBlZCB8fCBza2lwU3RhdGUgPT0gRmluYWw7Cit9CisK
K2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQoreworICAgIGlmICho
b3N0LmZpbmQoJzonKSA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIGlzSVB2NEFkZHJlc3Mo
aG9zdCk7CisKKyAgICByZXR1cm4gaXNJUHY2QWRkcmVzcyhob3N0KTsKK30KKyNlbmRpZgorCit9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291
cmNlL1dURi93dGYvVVJMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ3M2JjNzA1NmZhMzQ1YmVkZTBhOGMyNTgx
YTgwM2RhNzViMDk5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCkBA
IC0wLDAgKzEsMzkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBVU0UoQ0Yp
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKKyNlbmRpZgorCisjaWYg
VVNFKFNPVVApCisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KKyNlbmRpZgor
CisjaWYgVVNFKEZPVU5EQVRJT04pCitPQkpDX0NMQVNTIE5TVVJMOworI2VuZGlmCisKK25hbWVz
cGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKKworY2xhc3MgVVJMVGV4dEVuY29kaW5nIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5n
KFN0cmluZ1ZpZXcpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIH5VUkxUZXh0RW5jb2RpbmcoKSB7
IH07Cit9OworCitzdHJ1Y3QgVVJMSGFzaDsKKworY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIFVS
TCB7CitwdWJsaWM6CisgICAgLy8gR2VuZXJhdGVzIGEgVVJMIHdoaWNoIGNvbnRhaW5zIGEgbnVs
bCBzdHJpbmcuCisgICAgVVJMKCkgeyBpbnZhbGlkYXRlKCk7IH0KKworICAgIGV4cGxpY2l0IFVS
TChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWUpIHsgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBzdHJpbmcoKS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisKKyAg
ICAvLyBSZXNvbHZlcyB0aGUgcmVsYXRpdmUgVVJMIHdpdGggdGhlIGdpdmVuIGJhc2UgVVJMLiBJ
ZiBwcm92aWRlZCwgdGhlCisgICAgLy8gVVJMVGV4dEVuY29kaW5nIGlzIHVzZWQgdG8gZW5jb2Rl
IG5vbi1BU0NJSSBjaGFyYWNlcnMuIFRoZSBiYXNlIFVSTCBjYW4gYmUKKyAgICAvLyBudWxsIG9y
IGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRl
ZCBhcworICAgIC8vIGFic29sdXRlLgorICAgIC8vIEZJWE1FOiBJZiB0aGUgYmFzZSBVUkwgaXMg
aW52YWxpZCwgdGhpcyBhbHdheXMgY3JlYXRlcyBhbiBpbnZhbGlkCisgICAgLy8gVVJMLiBJbnN0
ZWFkIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVyIHRvIHRyZWF0IGFsbCBpbnZhbGlkIGJhc2Ug
VVJMcworICAgIC8vIHRoZSBzYW1lIHdheSB3ZSB0cmVhdGUgbnVsbCBhbmQgZW1wdHkgYmFzZSBV
UkxzLgorICAgIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNv
bnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKKworICAgIHN0YXRpYyBVUkwgZmFrZVVS
TFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFVSTCBmaWxlVVJM
V2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHN0cmlwcGVk
Rm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OworCisgICAgLy8gRklYTUU6IFRoZSBhYm92ZSBmdW5j
dGlvbnMgc2hvdWxkIGJlIGhhcm1vbml6ZWQgc28gdGhhdCBwYXNzaW5nIGEKKyAgICAvLyBiYXNl
IG9mIG51bGwgb3IgdGhlIGVtcHR5IHN0cmluZyBnaXZlcyB0aGUgc2FtZSByZXN1bHQgYXMgdGhl
CisgICAgLy8gc3RhbmRhcmQgU3RyaW5nIGNvbnN0cnVjdG9yLgorCisgICAgLy8gTWFrZXMgYSBk
ZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5b3UgbmVlZCB0byB1c2UgYSBVUkwgb24gYW5vdGhl
cgorICAgIC8vIHRocmVhZC4gU2luY2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3Rz
IGFyZSBpbW11dGFibGUsIHRoZXJlJ3MKKyAgICAvLyBubyBvdGhlciByZWFzb24gdG8gZXZlciBw
cmVmZXIgaXNvbGF0ZWRDb3B5KCkgb3ZlciBwbGFpbiBvbGQgYXNzaWdubWVudC4KKyAgICBVUkwg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0OworICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworCisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHlvdSBjYW4gc2V0IHRoZSBob3N0IGFuZCBwb3J0IGZvciB0aGUgVVJM
LgorICAgIC8vIE5vbi1oaWVyYXJjaGljYWwgVVJMcyBkb24ndCBoYXZlIGEgaG9zdCBhbmQgcG9y
dC4KKyAgICBib29sIGNhblNldEhvc3RPclBvcnQoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNo
aWNhbCgpOyB9CisKKyAgICBib29sIGNhblNldFBhdGhuYW1lKCkgY29uc3QgeyByZXR1cm4gaXNI
aWVyYXJjaGljYWwoKTsgfQorICAgIGJvb2wgaXNIaWVyYXJjaGljYWwoKSBjb25zdDsKKworICAg
IGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKworICAg
IFN0cmluZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoID0g
MTAyNCkgY29uc3Q7CisKKyAgICBTdHJpbmdWaWV3IHByb3RvY29sKCkgY29uc3Q7CisgICAgU3Ry
aW5nVmlldyBob3N0KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgp
IGNvbnN0OworICAgIFN0cmluZyBob3N0QW5kUG9ydCgpIGNvbnN0OworICAgIFN0cmluZyBwcm90
b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7CisgICAgU3RyaW5nIHVzZXIoKSBjb25zdDsKKyAgICBT
dHJpbmcgcGFzcygpIGNvbnN0OworICAgIFN0cmluZyBwYXRoKCkgY29uc3Q7CisgICAgU3RyaW5n
IGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7CisgICAgU3RyaW5nIHF1ZXJ5KCkgY29uc3Q7Cisg
ICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworICAgIGJvb2wgaGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBib29sIGhhc1VzZXJuYW1lKCkgY29uc3Q7Cisg
ICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OworICAgIGJvb2wgaGFzUXVlcnkoKSBjb25zdDsK
KyAgICBib29sIGhhc0ZyYWdtZW50KCkgY29uc3Q7CisgICAgYm9vbCBoYXNQYXRoKCkgY29uc3Q7
CisKKyAgICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzKCksIHRoZXNlIGZ1bmN0aW9ucyBkb24n
dCBkZWNvZGUgZXNjYXBlIHNlcXVlbmNlcy4KKyAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3Ig
YWNjdXJhdGUgcm91bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5jb2RpbmcgZG9lc24ndCBlbmNvZGUg
JyUnIGNoYXJhY3RlcnMuCisgICAgU3RyaW5nIGVuY29kZWRVc2VyKCkgY29uc3Q7CisgICAgU3Ry
aW5nIGVuY29kZWRQYXNzKCkgY29uc3Q7CisKKyAgICBTdHJpbmcgYmFzZUFzU3RyaW5nKCkgY29u
c3Q7CisKKyAgICBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsKKworICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBVUkwncyBwcm90b2NvbCBpcyB0aGUgc2FtZSBhcyB0aGUg
bnVsbC0KKyAgICAvLyB0ZXJtaW5hdGVkIEFTQ0lJIGFyZ3VtZW50LiBUaGUgYXJndW1lbnQgbXVz
dCBiZSBsb3dlci1jYXNlLgorICAgIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7
CisgICAgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgcHJvdG9j
b2xJc0Jsb2IoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJibG9iIik7IH0KKyAgICBib29s
IHByb3RvY29sSXNEYXRhKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9Cisg
ICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3Q7CisgICAgYm9vbCBpc0xvY2Fs
RmlsZSgpIGNvbnN0OworICAgIGJvb2wgaXNCbGFua1VSTCgpIGNvbnN0OworICAgIGJvb2wgY2Fu
bm90QmVBQmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fubm90QmVBQmFzZVVSTDsgfQorCisg
ICAgYm9vbCBpc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYpIGNvbnN0OworCisgICAgYm9v
bCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEhvc3QoY29uc3QgU3Ry
aW5nJik7CisKKyAgICB2b2lkIHJlbW92ZVBvcnQoKTsKKyAgICB2b2lkIHNldFBvcnQodW5zaWdu
ZWQgc2hvcnQpOworCisgICAgLy8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206
ODAwMCIuCisgICAgdm9pZCBzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKKworICAgIHZv
aWQgc2V0VXNlcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5n
Jik7CisKKyAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBT
IFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aAorICAgIC8vIHdpbGwgYmUgIi8iLgorICAgIHZvaWQg
c2V0UGF0aChjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0
aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVkCisgICAgLy8g
Zm9yIHlvdS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZl
IGEgIj8iIGluIHRoZQorICAgIC8vIFVSTCAod2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xl
YXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcuCisgICAgdm9pZCBzZXRRdWVyeShjb25z
dCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcp
OworICAgIHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisKKyAgICB2b2lkIHJlbW92
ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7CisKKyAgICBzdGF0aWMgYm9vbCBob3N0SXNJ
UEFkZHJlc3MoU3RyaW5nVmlldyk7CisKKyAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25zdDsK
KyAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7CisgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFz
dFNsYXNoKCkgY29uc3Q7CisKKyAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyBy
ZXR1cm4gc3RyaW5nKCk7IH0KKworI2lmIFVTRShDRikKKyAgICBVUkwoQ0ZVUkxSZWYpOworICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBjb25zdDsKKyNlbmRpZgorCisjaWYg
VVNFKFNPVVApCisgICAgVVJMKFNvdXBVUkkqKTsKKyAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IGNy
ZWF0ZVNvdXBVUkkoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAg
VVJMKE5TVVJMKik7CisgICAgb3BlcmF0b3IgTlNVUkwqKCkgY29uc3Q7CisjZW5kaWYKKyNpZmRl
ZiBfX09CSkNfXworICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIHN0cmlu
ZygpOyB9CisjZW5kaWYKKworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIHByaW50KCkgY29uc3Q7
CisjZW5kaWYKKworICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiwgVVJMJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgVVJMUGFyc2VyOworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIHN0YXRp
YyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOworICAgIHZvaWQg
Y29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0OworICAgIHVuc2ln
bmVkIGhvc3RTdGFydCgpIGNvbnN0OworCisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJM
Jik7CisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKyAgICBmcmllbmQgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKwor
ICAgIFN0cmluZyBtX3N0cmluZzsKKworICAgIHVuc2lnbmVkIG1faXNWYWxpZCA6IDE7CisgICAg
dW5zaWduZWQgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKKyAgICB1bnNpZ25lZCBtX2Nh
bm5vdEJlQUJhc2VVUkwgOiAxOworCisgICAgLy8gVGhpcyBpcyBvdXQgb2Ygb3JkZXIgdG8gYWxp
Z24gdGhlIGJpdHMgYmV0dGVyLiBUaGUgcG9ydCBpcyBhZnRlciB0aGUgaG9zdC4KKyAgICB1bnNp
Z25lZCBtX3BvcnRMZW5ndGggOiAzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4
UG9ydExlbmd0aCA9ICgxIDw8IDMpIC0gMTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbWF4U2NoZW1lTGVuZ3RoID0gKDEgPDwgMjYpIC0gMTsKKyAgICB1bnNpZ25lZCBtX3NjaGVt
ZUVuZCA6IDI2OworICAgIHVuc2lnbmVkIG1fdXNlclN0YXJ0OworICAgIHVuc2lnbmVkIG1fdXNl
ckVuZDsKKyAgICB1bnNpZ25lZCBtX3Bhc3N3b3JkRW5kOworICAgIHVuc2lnbmVkIG1faG9zdEVu
ZDsKKyAgICB1bnNpZ25lZCBtX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICB1bnNpZ25lZCBtX3Bh
dGhFbmQ7CisgICAgdW5zaWduZWQgbV9xdWVyeUVuZDsKK307CisKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6ZW9mKHVuc2lnbmVkKSwgIlVSTCBz
aG91bGQgc3RheSBzbWFsbCIpOworCit0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgVVJM
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc3Ry
aW5nOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgVVJMOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCit7CisgICAgYXV0byBvcHRpb25hbFVSTCA9IFVSTDo6
ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghb3B0aW9uYWxVUkwpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVSTCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgU3RyaW5nIHN0cmluZzsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHN0cmluZykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIFVSTChVUkwoKSwgc3RyaW5nKTsKK30KKworV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwm
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9j
b2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKwor
V1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYmxhbmtVUkwoKTsKKworLy8gRnVuY3Rpb25z
IHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCisvLyBUaGVzZSBhcmUgb3BlcmF0aW9u
cyB0aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJMLgorLy8gVGhlc2UgYXJlIGFsc28g
ZGlmZmVyZW50IGZyb20gdGhlIFVSTCBmdW5jdGlvbnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVp
cmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJzYWJsZSBVUkwuCisvLyBUaGlzIGlz
IGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1c2UgdmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBu
b3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxpZCBieSBVUkwuCisKK1dURl9FWFBPUlRfUFJJ
VkFURSBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3Rv
Y29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0
IFN0cmluZyYgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2Ny
aXB0KFN0cmluZ1ZpZXcgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHBy
b3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYpOyAvLyBCbGFja2xpc3QgcG9ydHMgdGhhdCBz
aG91bGQgbmV2ZXIgYmUgdXNlZCBmb3IgV2ViIHJlc291cmNlcy4KKworV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZf
dCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKTsKKworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNWYWxpZFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworCitXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwp
OworCisvLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3NlLCBkaWZmZXJl
bnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRoZSBVUkwgU3Rh
bmRhcmQuCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1
ZW5jZXMoY29uc3QgU3RyaW5nJik7CisKKy8vIElubGluZXMuCisKK2lubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5n
KCkgPT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwm
IGEsIGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQor
eworICAgIHJldHVybiBhID09IGIuc3RyaW5nKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5nKCkg
IT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEs
IGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiOworfQorCitp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQorewor
ICAgIHJldHVybiBhICE9IGIuc3RyaW5nKCk7Cit9CisKKy8vIElubGluZSB2ZXJzaW9ucyBvZiBz
b21lIG5vbi1Hb29nbGVVUkwgZnVuY3Rpb25zIHNvIHdlIGNhbiBnZXQgaW5saW5pbmcKKy8vIHdp
dGhvdXQgaGF2aW5nIHRvIGhhdmUgYSBsb3Qgb2YgdWdseSBpZmRlZnMgaW4gdGhlIGNsYXNzIGRl
ZmluaXRpb24uCisKK2lubGluZSBib29sIFVSTDo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zdHJpbmcuaXNOdWxsKCk7Cit9CisKK2lubGluZSBib29sIFVSTDo6aXNFbXB0eSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5saW5lIGJvb2wg
VVJMOjppc1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkOworfQorCitpbmxp
bmUgYm9vbCBVUkw6Omhhc1BhdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhdGhFbmQgIT0g
bV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc1VzZXJu
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VyRW5kID4gbV91c2VyU3RhcnQ7Cit9CisK
K2lubGluZSBib29sIFVSTDo6aGFzUGFzc3dvcmQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Bh
c3N3b3JkRW5kID4gKG1fdXNlckVuZCArIDEpOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc1F1
ZXJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9xdWVyeUVuZCA+IG1fcGF0aEVuZDsKK30KKwor
aW5saW5lIGJvb2wgVVJMOjpoYXNGcmFnbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNW
YWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlFbmQ7Cit9CisKK2lubGluZSBib29s
IFVSTDo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJv
dG9jb2xJc0luSFRUUEZhbWlseTsKK30KKworaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aFN0YXJ0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworfQorCitp
bmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoRW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXRo
RW5kOworfQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25z
dAoreworICAgIHJldHVybiBtX3BhdGhBZnRlckxhc3RTbGFzaDsKK30KKworV1RGX0VYUE9SVF9Q
UklWQVRFIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25z
dCBVUkwmKTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJMPjsKK3RlbXBsYXRl
PD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDAyZmEzZGNjZjY2MTAwZmM4NTA4NjZlYzM1NDdhM2E4NmRmOWJlMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhhc2guaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
VVJMSGFzaF9oCisjZGVmaW5lIFVSTEhhc2hfaAorCisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBVUkxIYXNoIHsKKyAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBrZXku
c3RyaW5nKCkuaW1wbCgpLT5oYXNoKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5n
SGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7CisgICAgfQorCisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisK
Ky8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nCit0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxVUkw+IHsKKyAgICB1c2luZyBIYXNoID0gVVJMSGFzaDsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxVUkw+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVUkxIYXNoX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9VUkxQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwOWQ0YjgxZjk4MjMzYWQ0YTk5Njk1YjNlOWRh
MzRjYjFjZTZjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIu
Y3BwCkBAIC0wLDAgKzEsMjkyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KKworI2luY2x1ZGUgPGFycmF5PgorI2lu
Y2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KKyNpbmNsdWRlIDx1bmlj
b2RlL3V0ZjguaD4KKyNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworI2RlZmluZSBVUkxfUEFSU0VSX0RFQlVHR0lORyAwCisKKyNpZiBVUkxfUEFSU0VSX0RF
QlVHR0lORworI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pIFdURkxvZ0Fsd2F5cyhfX1ZBX0FS
R1NfXykKKyNlbHNlCisjZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4uLikKKyNlbmRpZgorICAgIAor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2NsYXNzIENvZGVQb2ludEl0ZXJhdG9y
IHsKK3B1YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yKCkgeyB9Cisg
ICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBi
ZWdpbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQorICAgICAgICA6IG1fYmVnaW4oYmVnaW4p
CisgICAgICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lO
TElORSBDb2RlUG9pbnRJdGVyYXRvcihjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgYmVnaW4sIGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yJiBlbmQpCisgICAgICAgIDogQ29kZVBvaW50SXRlcmF0b3Io
YmVnaW4ubV9iZWdpbiwgZW5kLm1fYmVnaW4pCisgICAgeworICAgICAgICBBU1NFUlQoZW5kLm1f
YmVnaW4gPj0gYmVnaW4ubV9iZWdpbik7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUg
VUNoYXIzMiBvcGVyYXRvciooKSBjb25zdDsKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0
ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luCisgICAgICAgICAgICAmJiBtX2VuZCA9PSBv
dGhlci5tX2VuZDsKKyAgICB9CisgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yIT0oY29u
c3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3ImIG9wZXJh
dG9yPShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpCisgICAgeworICAgICAgICBtX2Jl
Z2luID0gb3RoZXIubV9iZWdpbjsKKyAgICAgICAgbV9lbmQgPSBvdGhlci5tX2VuZDsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBhdEVuZCgp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA8PSBtX2VuZCk7CisgICAgICAg
IHJldHVybiBtX2JlZ2luID49IG1fZW5kOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5F
IHNpemVfdCBjb2RlVW5pdHNTaW5jZShjb25zdCBDaGFyYWN0ZXJUeXBlKiByZWZlcmVuY2UpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA+PSByZWZlcmVuY2UpOworICAgICAg
ICByZXR1cm4gbV9iZWdpbiAtIHJlZmVyZW5jZTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHNpemVfdCBjb2RlVW5pdHNTaW5jZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gY29kZVVuaXRzU2luY2Uob3RoZXIubV9iZWdpbik7
CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2JlZ2lu
IHsgbnVsbHB0ciB9OworICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIG1fZW5kIHsgbnVsbHB0ciB9
OworfTsKKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBVQ2hhcjMyIENvZGVQb2ludEl0ZXJh
dG9yPExDaGFyPjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWF0RW5kKCkpOwor
ICAgIHJldHVybiAqbV9iZWdpbjsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBhdXRv
IENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJh
dG9yJgoreworICAgIG1fYmVnaW4rKzsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRl
PD4KK0FMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj46Om9wZXJh
dG9yKigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBVQ2hhcjMyIGM7Cisg
ICAgVTE2X0dFVChtX2JlZ2luLCAwLCAwLCBtX2VuZCAtIG1fYmVnaW4sIGMpOworICAgIHJldHVy
biBjOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIGF1dG8gQ29kZVBvaW50SXRlcmF0
b3I8VUNoYXI+OjpvcGVyYXRvcisrKCkgLT4gQ29kZVBvaW50SXRlcmF0b3ImCit7CisgICAgdW5z
aWduZWQgaSA9IDA7CisgICAgc2l6ZV90IGxlbmd0aCA9IG1fZW5kIC0gbV9iZWdpbjsKKyAgICBV
MTZfRldEXzEobV9iZWdpbiwgaSwgbGVuZ3RoKTsKKyAgICBtX2JlZ2luICs9IGk7CisgICAgcmV0
dXJuICp0aGlzOworfQorICAgIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBhcHBlbmRDb2Rl
UG9pbnQoVmVjdG9yPFVDaGFyPiYgZGVzdGluYXRpb24sIFVDaGFyMzIgY29kZVBvaW50KQorewor
ICAgIGlmIChVX0lTX0JNUChjb2RlUG9pbnQpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLmFwcGVu
ZChzdGF0aWNfY2FzdDxVQ2hhcj4oY29kZVBvaW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgZGVzdGluYXRpb24ucmVzZXJ2ZUNhcGFjaXR5KGRlc3RpbmF0aW9uLnNpemUoKSArIDIp
OworICAgIGRlc3RpbmF0aW9uLnVuY2hlY2tlZEFwcGVuZChVMTZfTEVBRChjb2RlUG9pbnQpKTsK
KyAgICBkZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X1RSQUlMKGNvZGVQb2ludCkpOwor
fQorCitlbnVtIFVSTENoYXJhY3RlckNsYXNzIHsKKyAgICBVc2VySW5mbyA9IDB4MSwKKyAgICBE
ZWZhdWx0ID0gMHgyLAorICAgIEZvcmJpZGRlbkhvc3QgPSAweDQsCisgICAgUXVlcnlQZXJjZW50
ID0gMHg4LAorICAgIFNsYXNoUXVlc3Rpb25Pckhhc2ggPSAweDEwLAorICAgIFZhbGlkU2NoZW1l
ID0gMHgyMCwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGNoYXJhY3RlckNsYXNzVGFibGVb
MjU2XSA9IHsKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAweDAKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgyCisgICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDMKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFF1ZXJ5UGVyY2VudCwgLy8gMHg1CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
NworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg4CisgICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHg5Cisg
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8g
MHhBCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEIKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4QworICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4RAorICAgIFVzZXJJ
bmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhFCisgICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQsIC8vIDB4MTAKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQs
IC8vIDB4MTEKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTIK
KyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTMKKyAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTQKKyAgICBVc2VySW5mbyB8IERl
ZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTUKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQsIC8vIDB4MTYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4MTcKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
MTgKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTkKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUEKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUIKKyAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQsIC8vIDB4MUMKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQsIC8vIDB4MUQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MUUKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUYKKyAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAn
ICcKKyAgICAwLCAvLyAnIScKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQs
IC8vICciJworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IFNsYXNoUXVl
c3Rpb25Pckhhc2ggfCBGb3JiaWRkZW5Ib3N0LCAvLyAnIycKKyAgICAwLCAvLyAnJCcKKyAgICBG
b3JiaWRkZW5Ib3N0LCAvLyAnJScKKyAgICAwLCAvLyAnJicKKyAgICAwLCAvLyAnXCcnCisgICAg
MCwgLy8gJygnCisgICAgMCwgLy8gJyknCisgICAgMCwgLy8gJyonCisgICAgVmFsaWRTY2hlbWUs
IC8vICcrJworICAgIDAsIC8vICcsJworICAgIFZhbGlkU2NoZW1lLCAvLyAnLScKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJy4nCisgICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9y
YmlkZGVuSG9zdCwgLy8gJy8nCisgICAgVmFsaWRTY2hlbWUsIC8vICcwJworICAgIFZhbGlkU2No
ZW1lLCAvLyAnMScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzInCisgICAgVmFsaWRTY2hlbWUsIC8v
ICczJworICAgIFZhbGlkU2NoZW1lLCAvLyAnNCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzUnCisg
ICAgVmFsaWRTY2hlbWUsIC8vICc2JworICAgIFZhbGlkU2NoZW1lLCAvLyAnNycKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJzgnCisgICAgVmFsaWRTY2hlbWUsIC8vICc5JworICAgIFVzZXJJbmZvIHwg
Rm9yYmlkZGVuSG9zdCwgLy8gJzonCisgICAgVXNlckluZm8sIC8vICc7JworICAgIFVzZXJJbmZv
IHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vICc8JworICAgIFVz
ZXJJbmZvLCAvLyAnPScKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBG
b3JiaWRkZW5Ib3N0LCAvLyAnPicKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBTbGFzaFF1ZXN0
aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJz8nCisgICAgVXNlckluZm8gfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAnQCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0EnCisgICAgVmFsaWRTY2hlbWUs
IC8vICdCJworICAgIFZhbGlkU2NoZW1lLCAvLyAnQycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0Qn
CisgICAgVmFsaWRTY2hlbWUsIC8vICdFJworICAgIFZhbGlkU2NoZW1lLCAvLyAnRicKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJ0cnCisgICAgVmFsaWRTY2hlbWUsIC8vICdIJworICAgIFZhbGlkU2No
ZW1lLCAvLyAnSScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0onCisgICAgVmFsaWRTY2hlbWUsIC8v
ICdLJworICAgIFZhbGlkU2NoZW1lLCAvLyAnTCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ00nCisg
ICAgVmFsaWRTY2hlbWUsIC8vICdOJworICAgIFZhbGlkU2NoZW1lLCAvLyAnTycKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJ1AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdRJworICAgIFZhbGlkU2NoZW1l
LCAvLyAnUicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdU
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnVScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1YnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdXJworICAgIFZhbGlkU2NoZW1lLCAvLyAnWCcKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ1knCisgICAgVmFsaWRTY2hlbWUsIC8vICdaJworICAgIFVzZXJJbmZvIHwgRm9y
YmlkZGVuSG9zdCwgLy8gJ1snCisgICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwg
Rm9yYmlkZGVuSG9zdCwgLy8gJ1xcJworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8g
J10nCisgICAgVXNlckluZm8sIC8vICdeJworICAgIDAsIC8vICdfJworICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCwgLy8gJ2AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdhJworICAgIFZhbGlkU2NoZW1l
LCAvLyAnYicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdk
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnZScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2YnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdnJworICAgIFZhbGlkU2NoZW1lLCAvLyAnaCcKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ2knCisgICAgVmFsaWRTY2hlbWUsIC8vICdqJworICAgIFZhbGlkU2NoZW1lLCAv
LyAnaycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2wnCisgICAgVmFsaWRTY2hlbWUsIC8vICdtJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnbicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ28nCisgICAgVmFs
aWRTY2hlbWUsIC8vICdwJworICAgIFZhbGlkU2NoZW1lLCAvLyAncScKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJ3InCisgICAgVmFsaWRTY2hlbWUsIC8vICdzJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
dCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3UnCisgICAgVmFsaWRTY2hlbWUsIC8vICd2JworICAg
IFZhbGlkU2NoZW1lLCAvLyAndycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3gnCisgICAgVmFsaWRT
Y2hlbWUsIC8vICd5JworICAgIFZhbGlkU2NoZW1lLCAvLyAneicKKyAgICBVc2VySW5mbyB8IERl
ZmF1bHQsIC8vICd7JworICAgIFVzZXJJbmZvLCAvLyAnfCcKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQsIC8vICd9JworICAgIDAsIC8vICd+JworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg3RgorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg4MAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MQorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg4MgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MworICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg4NAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg4NgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NworICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg4OAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4OQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg4QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg4QworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4
RQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MAor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MgorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg5MworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg5NQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg5NworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5OAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg5OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg5QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QworICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg5RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg5RgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhB
MQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMwor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhBNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNworICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhBOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBOQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhBQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBQgorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhBQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRAorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhBRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhCMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhCMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhC
NAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCOAorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhCOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQQorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhCQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQworICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhCRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCRQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhCRgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMAorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhDMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhDMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhDNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhD
NworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDOQor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQgorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhDQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhDRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhEMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhEMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMworICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhENAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhENgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENworICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhEOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhE
QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQwor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhERgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhFMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhFMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhFNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhFNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFOAorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhFOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhFQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhF
RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhGMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMworICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhGNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhGNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNworICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhGOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGOQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhGQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhGQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhGRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRgorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0MwQ29udHJvbChDaGFy
YWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MUY7IH0KK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXND
MENvbnRyb2xPclNwYWNlKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0
ZXIgPD0gMHgyMDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc1RhYk9yTmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rlcikg
eyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4RCAmJiBjaGFyYWN0ZXIgPj0gMHg5ICYmIGNoYXJhY3Rl
ciAhPSAweEIgJiYgY2hhcmFjdGVyICE9IDB4QzsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luU2ltcGxlRW5jb2RlU2V0KENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGlzQzBD
b250cm9sKGNoYXJhY3Rlcik7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJbkRlZmF1bHRFbmNvZGVTZXQoQ2hhcmFjdGVyVHlw
ZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xhc3NU
YWJsZVtjaGFyYWN0ZXJdICYgRGVmYXVsdDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoQ2hh
cmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFj
dGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgVXNlckluZm87IH0KK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNQZXJjZW50T3JOb25B
U0NJSShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gIWlzQVNDSUkoY2hhcmFjdGVy
KSB8fCBjaGFyYWN0ZXIgPT0gJyUnOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzU2xhc2hRdWVzdGlvbk9ySGFzaChDaGFyYWN0
ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICdcXCcgJiYgY2hhcmFjdGVy
Q2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgU2xhc2hRdWVzdGlvbk9ySGFzaDsgfQordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1ZhbGlk
U2NoZW1lQ2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0
ZXIgPD0gJ3onICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFZhbGlkU2NoZW1l
OyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludChDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rlcikg
eyByZXR1cm4gY2hhcmFjdGVyIDw9ICddJyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rl
cl0gJiBGb3JiaWRkZW5Ib3N0OyB9CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIHNob3VsZFBl
cmNlbnRFbmNvZGVRdWVyeUJ5dGUodWludDhfdCBieXRlLCBjb25zdCBib29sJiB1cmxJc1NwZWNp
YWwpCit7CisgICAgaWYgKGNoYXJhY3RlckNsYXNzVGFibGVbYnl0ZV0gJiBRdWVyeVBlcmNlbnQp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChieXRlID09ICdcJycgJiYgdXJsSXNTcGVj
aWFsKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
VVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIgYykKK3sKKyAgICByZXR1cm4g
V1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQoYyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGUsIFVSTFBhcnNlcjo6UmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRh
eFZpb2xhdGlvbj4KK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFkdmFuY2UoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikK
K3sKKyAgICArK2l0ZXJhdG9yOworICAgIHdoaWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQo
KSAmJiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICBpZiAocmVwb3J0U3lu
dGF4VmlvbGF0aW9uID09IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6WWVzKQorICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAg
ICAgICArK2l0ZXJhdG9yOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KK2Jvb2wgVVJMUGFyc2VyOjp0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUs
IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICBpZiAoaXRlcmF0b3Iu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgIHJldHVybiBpdGVy
YXRvci5hdEVuZCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxX
QVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkgfHwgIWlzQVNDSUlBbHBoYSgqaXRlcmF0b3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihp
dGVyYXRvcik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKFVOTElLRUxZKCppdGVyYXRvciA9PSAnfCcpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFwcGVu
ZFRvQVNDSUlCdWZmZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgQVNTRVJUKGlzQVNDSUko
Y29kZVBvaW50KSk7CisgICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkK
KyAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY29kZVBvaW50KTsKK30KKworQUxXQVlTX0lO
TElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBjaGFyKiBjaGFy
YWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRh
eFZpb2xhdGlvbikpCisgICAgICAgIG1fYXNjaWlCdWZmZXIuYXBwZW5kKGNoYXJhY3RlcnMsIGxl
bmd0aCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBh
cnNlcjo6YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoaXRl
cmF0b3IpKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCppdGVyYXRvcik7CisgICAgYWR2YW5j
ZShpdGVyYXRvcik7CisgICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKKyAgICBBU1NFUlQo
Kml0ZXJhdG9yID09ICc6JyB8fCAqaXRlcmF0b3IgPT0gJ3wnKTsKKyAgICBpZiAoKml0ZXJhdG9y
ID09ICd8JykKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgYWR2YW5jZShpdGVyYXRvcik7Cit9CisKK2Jvb2wgVVJM
UGFyc2VyOjpjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmIGJhc2UpCit7Cisg
ICAgaWYgKGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggPCBiYXNlLm1fc3RyaW5nLmxlbmd0
aCgpKTsKKyAgICAgICAgaWYgKGJhc2UubV9zdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgICAg
IGNvbnN0IExDaGFyKiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczgoKTsKKyAgICAg
ICAgICAgIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQg
KyBiYXNlLm1fcG9ydExlbmd0aCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7
CisgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAg
ICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25z
dCBVQ2hhciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICAg
ICAgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJh
c2UubV9wb3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgeworICAgICAgICAgICAgICAg
IGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6c2hv
dWxkQ29weUZpbGVVUkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3Ip
Cit7CisgICAgaWYgKCFpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgYWR2YW5jZShpdGVyYXRvcik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGFkdmFuY2UoaXRlcmF0b3IpOworICAgIGlmIChpdGVy
YXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gIWlzU2xhc2hR
dWVzdGlvbk9ySGFzaCgqaXRlcmF0b3IpOworfQorCitzdGF0aWMgdm9pZCBwZXJjZW50RW5jb2Rl
Qnl0ZSh1aW50OF90IGJ5dGUsIFZlY3RvcjxMQ2hhcj4mIGJ1ZmZlcikKK3sKKyAgICBidWZmZXIu
YXBwZW5kKCclJyk7CisgICAgYnVmZmVyLmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdp
dChieXRlKSk7CisgICAgYnVmZmVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChi
eXRlKSk7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90IGJ5
dGUpCit7CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCclJyk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih1cHBlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChieXRlKSk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJs
ZVRvQVNDSUlIZXhEaWdpdChieXRlKSk7Cit9CisKK2NvbnN0IGNoYXIgcmVwbGFjZW1lbnRDaGFy
YWN0ZXJVVEY4UGVyY2VudEVuY29kZWRbMTBdID0gIiVFRiVCRiVCRCI7Citjb25zdCBzaXplX3Qg
cmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGggPSBzaXplb2YocmVw
bGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQpIC0gMTsKKwordGVtcGxhdGU8Ym9v
bCgqaXNJbkNvZGVTZXQpKFVDaGFyMzIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlT
X0lOTElORSB2b2lkIFVSTFBhcnNlcjo6dXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIEFTU0VSVCghaXRlcmF0
b3IuYXRFbmQoKSk7CisgICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRlcmF0b3I7CisgICAgaWYg
KExJS0VMWShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc0lu
Q29kZVNldChjb2RlUG9pbnQpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yKTsKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNJbkNvZGVTZXQo
Y29kZVBvaW50KSwgImlzSW5Db2RlU2V0IHNob3VsZCBhbHdheXMgcmV0dXJuIHRydWUgZm9yIG5v
bi1BU0NJSSBjaGFyYWN0ZXJzIik7CisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAg
ICAKKyAgICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKGNvZGVQb2ludCkpIHsKKyAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCwg
cmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwor
ICAgIGludDMyX3Qgb2Zmc2V0ID0gMDsKKyAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zm
c2V0LCBjb2RlUG9pbnQpOworICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytp
KQorICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShidWZmZXJbaV0pOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6dXRm
OFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVy
YXRvcikKK3sKKyAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOworICAgIFVDaGFyMzIgY29k
ZVBvaW50ID0gKml0ZXJhdG9yOworICAgIGlmIChMSUtFTFkoaXNBU0NJSShjb2RlUG9pbnQpKSkg
eworICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShjb2Rl
UG9pbnQsIG1fdXJsSXNTcGVjaWFsKSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihp
dGVyYXRvcik7CisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShjb2RlUG9pbnQpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29kZVBvaW50KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0
b3IpOworICAgIAorICAgIGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgeworICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRF
bmNvZGVkLCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RI
XTsKKyAgICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAgVThfQVBQRU5EX1VOU0FGRShidWZmZXIs
IG9mZnNldCwgY29kZVBvaW50KTsKKyAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBvZmZzZXQ7
ICsraSkgeworICAgICAgICBhdXRvIGJ5dGUgPSBidWZmZXJbaV07CisgICAgICAgIGlmIChzaG91
bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkKKyAgICAgICAg
ICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKGJ5dGUpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjplbmNvZGVOb25VVEY4UXVlcnkoY29uc3Qg
VmVjdG9yPFVDaGFyPiYgc291cmNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBhdXRvIGVu
Y29kZWQgPSBlbmNvZGluZy5lbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcoc291cmNlLmRh
dGEoKSwgc291cmNlLnNpemUoKSkpOworICAgIGF1dG8qIGRhdGEgPSBlbmNvZGVkLmRhdGEoKTsK
KyAgICBzaXplX3QgbGVuZ3RoID0gZW5jb2RlZC5zaXplKCk7CisgICAgCisgICAgaWYgKCFsZW5n
dGggPT0gIWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzaXplX3QgaSA9IDA7Cisg
ICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0
RW5kKCkpOworICAgICAgICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOworICAgICAgICBpZiAoVU5M
SUtFTFkoYnl0ZSAhPSAqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
aXRlcmF0b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVO
TElLRUxZKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwp
KSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYnl0ZSk7Cisg
ICAgICAgICsraXRlcmF0b3I7CisgICAgfQorICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSAm
JiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKQorICAgICAgICArK2l0ZXJhdG9yOworICAgIEFT
U0VSVCgoaSA9PSBsZW5ndGgpID09IGl0ZXJhdG9yLmF0RW5kKCkpOworICAgIGZvciAoOyBpIDwg
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsK
KyAgICAgICAgdWludDhfdCBieXRlID0gZGF0YVtpXTsKKyAgICAgICAgaWYgKHNob3VsZFBlcmNl
bnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQorICAgICAgICAgICAgcGVy
Y2VudEVuY29kZUJ5dGUoYnl0ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoYnl0ZSk7CisgICAgfQorfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBV
UkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCit7Cisg
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGZ0cFBvcnQgPSAyMTsKKyAgICBzdGF0aWMgY29uc3Qg
dWludDE2X3QgZ29waGVyUG9ydCA9IDcwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBodHRw
UG9ydCA9IDgwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBodHRwc1BvcnQgPSA0NDM7Cisg
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IHdzUG9ydCA9IDgwOworICAgIHN0YXRpYyBjb25zdCB1
aW50MTZfdCB3c3NQb3J0ID0gNDQzOworICAgIAorICAgIGF1dG8gbGVuZ3RoID0gc2NoZW1lLmxl
bmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7CisgICAgY2FzZSAndyc6CisgICAgICAgIHN3aXRjaCAo
bGVuZ3RoKSB7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0g
J3MnKQorICAgICAgICAgICAgICAgIHJldHVybiB3c1BvcnQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFd
ID09ICdzJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHdzc1BvcnQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgY2FzZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgNDoK
KyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2No
ZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGh0dHBQb3J0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcK
KyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYg
c2NoZW1lWzNdID09ICdwJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAncycpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGh0dHBzUG9ydDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICB9CisgICAgY2FzZSAnZyc6CisgICAgICAgIGlmIChsZW5ndGggPT0gNgor
ICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJworICAgICAgICAgICAgJiYgc2NoZW1lWzJd
ID09ICdwJworICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJworICAgICAgICAgICAgJiYg
c2NoZW1lWzRdID09ICdlJworICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKKyAgICAg
ICAgICAgIHJldHVybiBnb3BoZXJQb3J0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIGNhc2UgJ2YnOgorICAgICAgICBpZiAobGVuZ3RoID09IDMKKyAgICAgICAgICAgICYmIHNj
aGVtZVsxXSA9PSAndCcKKyAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcpCisgICAgICAg
ICAgICByZXR1cm4gZnRwUG9ydDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KK30KKworZW51bSBj
bGFzcyBTY2hlbWUgeworICAgIFdTLAorICAgIFdTUywKKyAgICBGaWxlLAorICAgIEZUUCwKKyAg
ICBHb3BoZXIsCisgICAgSFRUUCwKKyAgICBIVFRQUywKKyAgICBOb25TcGVjaWFsCit9OworCitB
TFdBWVNfSU5MSU5FIHN0YXRpYyBTY2hlbWUgc2NoZW1lKFN0cmluZ1ZpZXcgc2NoZW1lKQorewor
ICAgIGF1dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAg
ICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7
CisgICAgY2FzZSAnZic6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2Ug
MzoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYg
c2NoZW1lWzJdID09ICdwJykKKyAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpGVFA7Cisg
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICBjYXNlIDQ6Cisg
ICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdpJworICAgICAgICAgICAgICAgICYmIHNjaGVt
ZVsyXSA9PSAnbCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2UnKQorICAgICAg
ICAgICAgICAgIHJldHVybiBTY2hlbWU6OkZpbGU7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1l
OjpOb25TcGVjaWFsOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFNjaGVt
ZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgfQorICAgIGNhc2UgJ2cnOgorICAgICAgICBpZiAobGVu
Z3RoID09IDYKKyAgICAgICAgICAgICYmIHNjaGVtZVsxXSA9PSAnbycKKyAgICAgICAgICAgICYm
IHNjaGVtZVsyXSA9PSAncCcKKyAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnaCcKKyAgICAg
ICAgICAgICYmIHNjaGVtZVs0XSA9PSAnZScKKyAgICAgICAgICAgICYmIHNjaGVtZVs1XSA9PSAn
cicpCisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpHb3BoZXI7CisgICAgICAgIHJldHVybiBT
Y2hlbWU6Ok5vblNwZWNpYWw7CisgICAgY2FzZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3Ro
KSB7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisg
ICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNj
aGVtZVszXSA9PSAncCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRUUDsKKyAg
ICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGNhc2UgNToKKyAg
ICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcKKyAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hl
bWU6OkhUVFBTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAg
ICAgIH0KKyAgICBjYXNlICd3JzoKKyAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAgICAgICAg
Y2FzZSAyOgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6V1M7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVj
aWFsOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJwor
ICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6V1NTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7
CisgICAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVj
aWFsOworICAgIH0KK30KKworc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6bWF5YmVD
YW5vbmljYWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVt
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWlz
QVNDSUlBbHBoYShzY2hlbWVbMF0pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzY2hlbWUubGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICBpZiAoaXNBU0NJSUFscGhhbnVtZXJpYyhzY2hlbWVbaV0pIHx8IHNjaGVtZVtpXSA9PSAnKycg
fHwgc2NoZW1lW2ldID09ICctJyB8fCBzY2hlbWVbaV0gPT0gJy4nKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJu
IHNjaGVtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworfQorCitib29sIFVSTFBhcnNlcjo6
aXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lQXJnKQoreworICAgIHJldHVybiBz
Y2hlbWUoc2NoZW1lQXJnKSAhPSBTY2hlbWU6Ok5vblNwZWNpYWw7Cit9CisKK2VudW0gY2xhc3Mg
VVJMUGFyc2VyOjpVUkxQYXJ0IHsKKyAgICBTY2hlbWVFbmQsCisgICAgVXNlclN0YXJ0LAorICAg
IFVzZXJFbmQsCisgICAgUGFzc3dvcmRFbmQsCisgICAgSG9zdEVuZCwKKyAgICBQb3J0RW5kLAor
ICAgIFBhdGhBZnRlckxhc3RTbGFzaCwKKyAgICBQYXRoRW5kLAorICAgIFF1ZXJ5RW5kLAorfTsK
Kworc2l6ZV90IFVSTFBhcnNlcjo6dXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYgdXJsLCBV
UkxQYXJ0IHBhcnQpCit7CisgICAgc3dpdGNoIChwYXJ0KSB7CisgICAgY2FzZSBVUkxQYXJ0OjpR
dWVyeUVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3F1ZXJ5RW5kOworICAgIGNhc2UgVVJMUGFy
dDo6UGF0aEVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhFbmQ7CisgICAgY2FzZSBVUkxQ
YXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6CisgICAgICAgIHJldHVybiB1cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgorICAgICAgICByZXR1cm4gdXJs
Lm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGg7CisgICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5k
OgorICAgICAgICByZXR1cm4gdXJsLm1faG9zdEVuZDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhc3N3
b3JkRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fcGFzc3dvcmRFbmQ7CisgICAgY2FzZSBVUkxQ
YXJ0OjpVc2VyRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fdXNlckVuZDsKKyAgICBjYXNlIFVS
TFBhcnQ6OlVzZXJTdGFydDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3VzZXJTdGFydDsKKyAgICBj
YXNlIFVSTFBhcnQ6OlNjaGVtZUVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3NjaGVtZUVuZDsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgVVJMUGFyc2VyOjpjb3B5QVNDSUlTdHJpbmdVbnRpbChjb25zdCBTdHJpbmcmIHN0cmluZywg
c2l6ZV90IGxlbmd0aCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGggPD0gc3RyaW5nLmxl
bmd0aCgpKTsKKyAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5n
dGgpOworICAgIGVsc2UgeworICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgVUNoYXIgYyA9IGNoYXJhY3RlcnNbaV07CisgICAgICAgICAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpc0FTQ0lJKGMpKTsKKyAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6Y29weVVSTFBhcnRz
VW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0IHBhcnQsIGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpCit7CisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKwor
ICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICBjb3B5QVNDSUlTdHJpbmdVbnRpbChiYXNl
Lm1fc3RyaW5nLCB1cmxMZW5ndGhVbnRpbFBhcnQoYmFzZSwgcGFydCkpOworICAgIHN3aXRjaCAo
cGFydCkgeworICAgIGNhc2UgVVJMUGFydDo6UXVlcnlFbmQ6CisgICAgICAgIG1fdXJsLm1fcXVl
cnlFbmQgPSBiYXNlLm1fcXVlcnlFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2Ug
VVJMUGFydDo6UGF0aEVuZDoKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gYmFzZS5tX3BhdGhF
bmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6UGF0aEFmdGVyTGFz
dFNsYXNoOgorICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJhc2UubV9wYXRo
QWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6
UG9ydEVuZDoKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gYmFzZS5tX3BvcnRMZW5ndGg7
CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6SG9zdEVuZDoKKyAgICAg
ICAgbV91cmwubV9ob3N0RW5kID0gYmFzZS5tX2hvc3RFbmQ7CisgICAgICAgIEZBTExUSFJPVUdI
OworICAgIGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6CisgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBiYXNlLm1fcGFzc3dvcmRFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNh
c2UgVVJMUGFydDo6VXNlckVuZDoKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gYmFzZS5tX3Vz
ZXJFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6VXNlclN0YXJ0
OgorICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGJhc2UubV91c2VyU3RhcnQ7CisgICAgICAg
IEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6U2NoZW1lRW5kOgorICAgICAgICBtX3Vy
bC5tX2lzVmFsaWQgPSBiYXNlLm1faXNWYWxpZDsKKyAgICAgICAgbV91cmwubV9wcm90b2NvbElz
SW5IVFRQRmFtaWx5ID0gYmFzZS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7CisgICAgICAgIG1f
dXJsLm1fc2NoZW1lRW5kID0gYmFzZS5tX3NjaGVtZUVuZDsKKyAgICB9CisgICAgc3dpdGNoIChz
Y2hlbWUoU3RyaW5nVmlldyhtX2FzY2lpQnVmZmVyLmRhdGEoKSwgbV91cmwubV9zY2hlbWVFbmQp
KSkgeworICAgIGNhc2UgU2NoZW1lOjpXUzoKKyAgICBjYXNlIFNjaGVtZTo6V1NTOgorICAgICAg
ICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgIG1fdXJsSXNTcGVjaWFs
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1lOjpGaWxlOgorICAgICAg
ICBtX3VybElzRmlsZSA9IHRydWU7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgU2No
ZW1lOjpGVFA6CisgICAgY2FzZSBTY2hlbWU6OkdvcGhlcjoKKyAgICBjYXNlIFNjaGVtZTo6SFRU
UDoKKyAgICBjYXNlIFNjaGVtZTo6SFRUUFM6CisgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgorICAgICAg
ICBtX3VybElzU3BlY2lhbCA9IGZhbHNlOworICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9
IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyIGRvdEFTQ0lJQ29kZVsyXSA9IHsnMicsICdlJ307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wg
VVJMUGFyc2VyOjppc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+IGMpCit7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBS
ZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICAgICAgcmV0dXJuIGMuYXRFbmQoKSB8
fCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpOworICAgIH0KKyAgICBpZiAoKmMgIT0gJyUnKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRT
eW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICBpZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFT
Q0lJQ29kZVswXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgaWYgKGMuYXRFbmQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFT
Q0lJQ29kZVsxXSkgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hR
dWVzdGlvbk9ySGFzaCgqYyk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6
OmlzRG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
YykKK3sKKyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCpjID09ICcuJykgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVu
dChjKTsKKyAgICB9CisgICAgaWYgKCpjICE9ICclJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7
CisgICAgaWYgKGMuYXRFbmQoKSB8fCAqYyAhPSBkb3RBU0NJSUNvZGVbMF0pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pIHsKKyAgICAgICAg
YWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAg
ICAgICAgcmV0dXJuIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJM
UGFyc2VyOjpjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYykp
OworICAgIGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYg
KCFjLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykK
KyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIEFTU0VSVCgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOworICAgICAgICBhZHZhbmNlKGMpOwor
ICAgICAgICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKKyAgICAgICAgYWR2YW5jZShj
KTsKKyAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKTsK
KyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAg
ICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykKKyAgICAgICAgICAgICAgICBhZHZhbmNl
KGMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVCgqYyA9PSAnPycg
fHwgKmMgPT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpjb25zdW1lRG91YmxlRG90UGF0aFNlZ21l
bnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlz
RG91YmxlRG90UGF0aFNlZ21lbnQoYykpOworICAgIGlmICgqYyA9PSAnLicpCisgICAgICAgIGFk
dmFuY2UoYyk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOworICAgICAg
ICBhZHZhbmNlKGMpOworICAgICAgICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKKyAg
ICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90
QVNDSUlDb2RlWzFdKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICB9CisgICAgY29uc3VtZVNp
bmdsZURvdFBhdGhTZWdtZW50KGMpOworfQorCitib29sIFVSTFBhcnNlcjo6c2hvdWxkUG9wUGF0
aCh1bnNpZ25lZCBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gpCit7CisgICAgQVNTRVJUKG1fZGlkU2Vl
U3ludGF4VmlvbGF0aW9uKTsKKyAgICBpZiAoIW1fdXJsSXNGaWxlKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIEFTU0VSVChtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSBtX2FzY2lp
QnVmZmVyLnNpemUoKSk7CisgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGNvbXBvbmVudFRv
UG9wKCZtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0sICZtX2FzY2lpQnVmZmVy
WzBdICsgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworICAgIGlmIChuZXdQYXRoQWZ0ZXJM
YXN0U2xhc2ggPT0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSAmJiBp
c1dpbmRvd3NEcml2ZUxldHRlcihjb21wb25lbnRUb1BvcCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBVUkxQYXJzZXI6OnBvcFBhdGgoKQorewor
ICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgaWYgKG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsg
MSkgeworICAgICAgICBhdXRvIG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoIC0gMTsKKyAgICAgICAgaWYgKG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVy
TGFzdFNsYXNoXSA9PSAnLycpCisgICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsK
KyAgICAgICAgd2hpbGUgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA+IG1fdXJsLm1faG9zdEVuZCAr
IG1fdXJsLm1fcG9ydExlbmd0aCAmJiBtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFz
aF0gIT0gJy8nKQorICAgICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07CisgICAgICAg
IG5ld1BhdGhBZnRlckxhc3RTbGFzaCsrOworICAgICAgICBpZiAoc2hvdWxkUG9wUGF0aChuZXdQ
YXRoQWZ0ZXJMYXN0U2xhc2gpKQorICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgfQorICAgIG1fYXNjaWlCdWZmZXIucmVz
aXplKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpzeW50YXhWaW9sYXRpb24oY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIGlmIChtX2Rp
ZFNlZVN5bnRheFZpb2xhdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGlkU2VlU3ludGF4
VmlvbGF0aW9uID0gdHJ1ZTsKKyAgICAKKyAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5
KCkpOworICAgIHNpemVfdCBjb2RlVW5pdHNUb0NvcHkgPSBpdGVyYXRvci5jb2RlVW5pdHNTaW5j
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IENoYXJhY3RlclR5cGUqPihtX2lucHV0QmVnaW4pKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChjb2RlVW5pdHNUb0NvcHkgPD0gbV9pbnB1dFN0cmluZy5sZW5n
dGgoKSk7CisgICAgbV9hc2NpaUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobV9pbnB1dFN0cmluZy5s
ZW5ndGgoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlVW5pdHNUb0NvcHk7ICsr
aSkgeworICAgICAgICBBU1NFUlQoaXNBU0NJSShtX2lucHV0U3RyaW5nW2ldKSk7CisgICAgICAg
IG1fYXNjaWlCdWZmZXIudW5jaGVja2VkQXBwZW5kKG1faW5wdXRTdHJpbmdbaV0pOworICAgIH0K
K30KKwordm9pZCBVUkxQYXJzZXI6OmZhaWx1cmUoKQoreworICAgIG1fdXJsLmludmFsaWRhdGUo
KTsKKyAgICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJpbmc7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6Y2hlY2tMb2NhbGhvc3RDb2Rl
UG9pbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBVQ2hhcjMy
IGNvZGVQb2ludCkKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCB0b0FTQ0lJTG93ZXIo
Kml0ZXJhdG9yKSAhPSBjb2RlUG9pbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZh
bmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K2Jvb2wgVVJMUGFyc2VyOjppc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+IGl0ZXJhdG9yKQoreworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRl
cmF0b3IsICdsJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxo
b3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2MnKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdh
JykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBv
aW50KGl0ZXJhdG9yLCAnbCcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVj
a0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2gnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdvJykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJh
dG9yLCAncycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9z
dENvZGVQb2ludChpdGVyYXRvciwgJ3QnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBpdGVyYXRvci5hdEVuZCgpOworfQorCitib29sIFVSTFBhcnNlcjo6aXNMb2NhbGhvc3Qo
U3RyaW5nVmlldyB2aWV3KQoreworICAgIGlmICh2aWV3LmlzOEJpdCgpKQorICAgICAgICByZXR1
cm4gaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4odmlldy5jaGFyYWN0ZXJz
OCgpLCB2aWV3LmNoYXJhY3RlcnM4KCkgKyB2aWV3Lmxlbmd0aCgpKSk7CisgICAgcmV0dXJuIGlz
QXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+KHZpZXcuY2hhcmFjdGVyczE2KCks
IHZpZXcuY2hhcmFjdGVyczE2KCkgKyB2aWV3Lmxlbmd0aCgpKSk7Cit9CisKK0FMV0FZU19JTkxJ
TkUgU3RyaW5nVmlldyBVUkxQYXJzZXI6OnBhcnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6
ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24p
KSB7CisgICAgICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSBtX2FzY2lpQnVmZmVyLnNpemUo
KSk7CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpICsgc3Rh
cnQsIGxlbmd0aCk7CisgICAgfQorICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSBtX2lucHV0
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX2lucHV0U3RyaW5nKS5z
dWJzdHJpbmcoc3RhcnQsIGxlbmd0aCk7Cit9CisKK0FMV0FZU19JTkxJTkUgVUNoYXIgVVJMUGFy
c2VyOjpwYXJzZWREYXRhVmlldyhzaXplX3QgcG9zaXRpb24pCit7CisgICAgaWYgKFVOTElLRUxZ
KG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAgICAgcmV0dXJuIG1fYXNjaWlCdWZmZXJb
cG9zaXRpb25dOworICAgIHJldHVybiBtX2lucHV0U3RyaW5nW3Bvc2l0aW9uXTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgc2l6ZV90IFVSTFBh
cnNlcjo6Y3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+JiBpdGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRp
b24pKQorICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlci5zaXplKCk7CisgICAgCisgICAgcmV0
dXJuIGl0ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFj
dGVyVHlwZSo+KG1faW5wdXRCZWdpbikpOworfQorCitVUkxQYXJzZXI6OlVSTFBhcnNlcihjb25z
dCBTdHJpbmcmIGlucHV0LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyog
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcpCisgICAgOiBtX2lucHV0U3RyaW5nKGlucHV0KQoreworICAg
IGlmIChpbnB1dC5pc051bGwoKSkgeworICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgIWJh
c2UubV9jYW5ub3RCZUFCYXNlVVJMKSB7CisgICAgICAgICAgICBtX3VybCA9IGJhc2U7CisgICAg
ICAgICAgICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGlucHV0LmlzOEJpdCgpKSB7CisgICAgICAg
IG1faW5wdXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnM4KCk7CisgICAgICAgIHBhcnNlKGlucHV0
LmNoYXJhY3RlcnM4KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9pbnB1dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVy
czE2KCk7CisgICAgICAgIHBhcnNlKGlucHV0LmNoYXJhY3RlcnMxNigpLCBpbnB1dC5sZW5ndGgo
KSwgYmFzZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgIH0KKworICAgIEFTU0VSVCghbV91
cmwubV9pc1ZhbGlkCisgICAgICAgIHx8IG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uID09IChtX3Vy
bC5zdHJpbmcoKSAhPSBpbnB1dCkKKyAgICAgICAgfHwgKGlucHV0LmlzQWxsU3BlY2lhbENoYXJh
Y3RlcnM8aXNDMENvbnRyb2xPclNwYWNlPigpCisgICAgICAgICAgICAmJiBtX3VybC5tX3N0cmlu
ZyA9PSBiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5kKSkpOworICAgIEFTU0VSVChp
bnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQobV91cmwpKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgaWYgKCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikgeworICAgICAgICAvLyBGb3JjZSBhIHN5
bnRheCB2aW9sYXRpb24gYXQgdGhlIGJlZ2lubmluZyB0byBtYWtlIHN1cmUgd2UgZ2V0IHRoZSBz
YW1lIHJlc3VsdC4KKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCIgIiwgaW5w
dXQpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgIFVSTCBwYXJzZWQgPSBw
YXJzZXIucmVzdWx0KCk7CisgICAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKQorICAgICAgICAg
ICAgQVNTRVJUKGFsbFZhbHVlc0VxdWFsKHBhcnNlci5yZXN1bHQoKSwgbV91cmwpKTsKKyAgICB9
CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJM
UGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBpbnB1dCwgY29uc3QgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpCit7CisgICAgVVJMX1BBUlNFUl9MT0coIlBhcnNpbmcgVVJMIDwlcz4gYmFz
ZSA8JXM+IiwgU3RyaW5nKGlucHV0LCBsZW5ndGgpLnV0ZjgoKS5kYXRhKCksIGJhc2Uuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV91cmwgPSB7IH07CisgICAgQVNTRVJUKG1fYXNjaWlC
dWZmZXIuaXNFbXB0eSgpKTsKKworICAgIFZlY3RvcjxVQ2hhcj4gcXVlcnlCdWZmZXI7CisKKyAg
ICB1bnNpZ25lZCBlbmRJbmRleCA9IGxlbmd0aDsKKyAgICB3aGlsZSAoVU5MSUtFTFkoZW5kSW5k
ZXggJiYgaXNDMENvbnRyb2xPclNwYWNlKGlucHV0W2VuZEluZGV4IC0gMV0pKSkgeworICAgICAg
ICBzeW50YXhWaW9sYXRpb24oQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaW5wdXQs
IGlucHV0KSk7CisgICAgICAgIGVuZEluZGV4LS07CisgICAgfQorICAgIENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+IGMoaW5wdXQsIGlucHV0ICsgZW5kSW5kZXgpOworICAgIENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGF1dGhvcml0eU9ySG9zdEJlZ2luOworICAgIENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IHF1ZXJ5QmVnaW47CisgICAgd2hpbGUgKFVO
TElLRUxZKCFjLmF0RW5kKCkgJiYgaXNDMENvbnRyb2xPclNwYWNlKCpjKSkpIHsKKyAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICArK2M7CisgICAgfQorICAgIGF1dG8gYmVnaW5B
ZnRlckNvbnRyb2xBbmRTcGFjZSA9IGM7CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhf
dCB7CisgICAgICAgIFNjaGVtZVN0YXJ0LAorICAgICAgICBTY2hlbWUsCisgICAgICAgIE5vU2No
ZW1lLAorICAgICAgICBTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSwKKyAgICAgICAgUGF0aE9y
QXV0aG9yaXR5LAorICAgICAgICBSZWxhdGl2ZSwKKyAgICAgICAgUmVsYXRpdmVTbGFzaCwKKyAg
ICAgICAgU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMsCisgICAgICAgIFNwZWNpYWxBdXRob3JpdHlJ
Z25vcmVTbGFzaGVzLAorICAgICAgICBBdXRob3JpdHlPckhvc3QsCisgICAgICAgIEhvc3QsCisg
ICAgICAgIEZpbGUsCisgICAgICAgIEZpbGVTbGFzaCwKKyAgICAgICAgRmlsZUhvc3QsCisgICAg
ICAgIFBhdGhTdGFydCwKKyAgICAgICAgUGF0aCwKKyAgICAgICAgQ2Fubm90QmVBQmFzZVVSTFBh
dGgsCisgICAgICAgIFVURjhRdWVyeSwKKyAgICAgICAgTm9uVVRGOFF1ZXJ5LAorICAgICAgICBG
cmFnbWVudCwKKyAgICB9OworCisjZGVmaW5lIExPR19TVEFURSh4KSBVUkxfUEFSU0VSX0xPRygi
U3RhdGUgJXMsIGNvZGUgcG9pbnQgJWMsIHBhcnNlZCBkYXRhIDwlcz4gc2l6ZSAlenUiLCB4LCAq
YywgcGFyc2VkRGF0YVZpZXcoMCwgY3VycmVudFBvc2l0aW9uKGMpKS51dGY4KCkuZGF0YSgpLCBj
dXJyZW50UG9zaXRpb24oYykpCisjZGVmaW5lIExPR19GSU5BTF9TVEFURSh4KSBVUkxfUEFSU0VS
X0xPRygiRmluYWwgU3RhdGU6ICVzIiwgeCkKKworICAgIFN0YXRlIHN0YXRlID0gU3RhdGU6OlNj
aGVtZVN0YXJ0OworICAgIHdoaWxlICghYy5hdEVuZCgpKSB7CisgICAgICAgIGlmIChVTkxJS0VM
WShpc1RhYk9yTmV3bGluZSgqYykpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7
CisgICAgICAgICAgICArK2M7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6
CisgICAgICAgICAgICBMT0dfU1RBVEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgICAgICBpZiAo
aXNBU0NJSUFscGhhKCpjKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJ
VXBwZXIoKmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7CisgICAg
ICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAgICAgIGMg
PSBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U2NoZW1l
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9T
Y2hlbWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgor
ICAgICAgICAgICAgTE9HX1NUQVRFKCJTY2hlbWUiKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlk
U2NoZW1lQ2hhcmFjdGVyKCpjKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FT
Q0lJVXBwZXIoKmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwor
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICc6JykgeworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHNjaGVtZUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAo
c2NoZW1lRW5kID4gVVJMOjptYXhTY2hlbWVMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIG1fdXJsLm1fc2NoZW1lRW5kID0gc2NoZW1lRW5kOworICAgICAg
ICAgICAgICAgIFN0cmluZ1ZpZXcgdXJsU2NoZW1lID0gcGFyc2VkRGF0YVZpZXcoMCwgbV91cmwu
bV9zY2hlbWVFbmQpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHNjaGVtZSh1cmxTY2hlbWUpKSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBTY2hlbWU6OkZpbGU6CisgICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVj
aWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmxJc0ZpbGUgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlOworICAgICAgICAgICAgICAgICAg
ICArK2M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
U2NoZW1lOjpXUzoKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6V1NTOgorICAgICAgICAg
ICAgICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgICAgICAg
ICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJh
c2UucHJvdG9jb2xJcyh1cmxTY2hlbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRo
b3JpdHlTbGFzaGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpIVFRQOgorICAgICAgICAg
ICAgICAgIGNhc2UgU2NoZW1lOjpIVFRQUzoKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9w
cm90b2NvbElzSW5IVFRQRmFtaWx5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkZUUDoKKyAgICAgICAgICAgICAg
ICBjYXNlIFNjaGVtZTo6R29waGVyOgorICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lh
bCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLnByb3RvY29sSXModXJsU2No
ZW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxSZWxh
dGl2ZU9yQXV0aG9yaXR5OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczsKKyAgICAg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIFNjaGVtZTo6Tm9uU3BlY2lhbDoKKyAgICAgICAgICAgICAgICAgICAgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBhdXRvIG1h
eWJlU2xhc2ggPSBjOworICAgICAgICAgICAgICAgICAgICBhZHZhbmNlKG1heWJlU2xhc2gpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIW1heWJlU2xhc2guYXRFbmQoKSAmJiAqbWF5YmVTbGFz
aCA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBtYXliZVNsYXNoOworICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OworICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICcvJyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICArK2M7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0
YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAg
ICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9jYW5ub3RCZUFCYXNlVVJMID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRo
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAgICAgICAgICAgICAgIGMgPSBiZWdpbkFm
dGVyQ29udHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsK
KyAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJD
b250cm9sQW5kU3BhY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTdGF0ZTo6Tm9TY2hlbWU6CisgICAgICAgICAgICBMT0dfU1RBVEUoIk5vU2NoZW1l
Iik7CisgICAgICAgICAgICBpZiAoIWJhc2UuaXNWYWxpZCgpIHx8IChiYXNlLm1fY2Fubm90QmVB
QmFzZVVSTCAmJiAqYyAhPSAnIycpKSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChiYXNl
Lm1fY2Fubm90QmVBQmFzZVVSTCAmJiAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICBjb3B5
VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKKyAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
IWJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6UmVsYXRpdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5v
blVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzon
KTsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6CisgICAgICAg
ICAgICBMT0dfU1RBVEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgICAg
ICBpZiAoKmMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOworICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKGMu
YXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCpj
ID09ICcvJykgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7
CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25v
cmVTbGFzaGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlU2xhc2g7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpQYXRoT3JBdXRob3Jp
dHk6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOworICAgICAgICAg
ICAgaWYgKCpjID09ICcvJykgeworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Cisg
ICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJT
dGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhv
c3RCZWdpbiA9IGM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VS
VChwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAg
ICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAg
ICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAg
ICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAg
ICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgorICAgICAgICAgICAgTE9HX1NUQVRF
KCJSZWxhdGl2ZSIpOworICAgICAgICAgICAgc3dpdGNoICgqYykgeworICAgICAgICAgICAgY2Fz
ZSAnLyc6CisgICAgICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6UmVsYXRpdmVTbGFzaDsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICc/JzoKKyAgICAgICAgICAgICAgICBjb3B5VVJM
UGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOworICAgICAgICAg
ICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsK
KyAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnIyc6CisgICAgICAgICAgICAgICAgY29weVVS
TFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29k
aW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7CisgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2gs
IGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBv
c2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpICE9ICcv
JykgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0
aW9uKGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpQYXRoOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlU2xhc2g6CisgICAgICAgICAg
ICBMT0dfU1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycg
fHwgKmMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5vblVURjhRdWVy
eUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCI6Ly8iLCAz
KTsKKyAgICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpCisgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
QXV0aG9yaXR5T3JIb3N0OworICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdp
biA9IGM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQb3J0RW5kLCBjLCBub25V
VEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5t
X2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczoKKyAgICAgICAgICAgIExPR19T
VEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFko
KmMgPT0gJy8nIHx8ICpjID09ICdcXCcpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCpjID09ICdcXCcpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAg
IGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKExJS0VMWSghYy5hdEVuZCgpICYmICgq
YyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSgqYyA9PSAnXFwnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8iLCAyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVT
bGFzaGVzOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xh
c2hlcyIpOworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSB7CisgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICsrYzsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBj
dXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9y
aXR5T3JIb3N0OworICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpBdXRo
b3JpdHlPckhvc3Q6CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRF
KCJBdXRob3JpdHlPckhvc3QiKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJ0AnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gbGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBmaW5kTGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFmaW5kTGFz
dEF0LmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFVSTF9QQVJTRVJfTE9HKCJG
aW5kaW5nIGxhc3QgQDogJWMiLCAqZmluZExhc3RBdCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoKmZpbmRMYXN0QXQgPT0gJ0AnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh
c3RBdCA9IGZpbmRMYXN0QXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU2xhc2gg
PSAqZmluZExhc3RBdCA9PSAnLycgfHwgKG1fdXJsSXNTcGVjaWFsICYmICpmaW5kTGFzdEF0ID09
ICdcXCcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmZpbmRMYXN0
QXQgPT0gJz8nIHx8ICpmaW5kTGFzdEF0ID09ICcjJykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrZmluZExhc3RBdDsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJzZUF1dGhvcml0eShDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgbGFzdEF0
KSk7CisgICAgICAgICAgICAgICAgICAgIGMgPSBsYXN0QXQ7CisgICAgICAgICAgICAgICAgICAg
IGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0g
YzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6SG9zdDsKKyAgICAgICAgICAg
ICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJvb2wg
aXNTbGFzaCA9ICpjID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJyk7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmMgPT0gJz8nIHx8ICpjID09ICcjJykgewor
ICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1f
dXJsSXNTcGVjaWFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJl
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9z
aXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
bV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9u
KGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIXBhcnNlSG9zdEFuZFBvcnQoaXRlcmF0b3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghaXNTbGFzaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJ
c1NwZWNpYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9u
KGMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaXNQZXJj
ZW50T3JOb25BU0NJSSgqYykpCisgICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRP
ck5vbkFTQ0lJID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9IHdo
aWxlICghYy5hdEVuZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRl
OjpIb3N0OgorICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiSG9z
dCIpOworICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJz8nIHx8ICpjID09
ICcjJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlm
ICgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzUGVyY2VudE9y
Tm9uQVNDSUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25B
U0NJSSA9IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgfSB3aGlsZSAo
IWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6Rmls
ZToKKyAgICAgICAgICAgIExPR19TVEFURSgiRmlsZSIpOworICAgICAgICAgICAgc3dpdGNoICgq
YykgeworICAgICAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgIGNhc2Ug
Jy8nOgorICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlU2xhc2g7CisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnPyc6CisgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFs
aWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlF
bmNvZGluZyk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsK
KyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLz8iLCA0KTsKKyAgICAgICAg
ICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKSAtIDI7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
c3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAg
ICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJv
dG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGls
KGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8j
IiwgNCk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBv
c2l0aW9uKGMpIC0gMjsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExl
bmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAg
ICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAg
ICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikgJiYgc2hvdWxk
Q29weUZpbGVVUkwoYykpCisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJh
c2UsIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rpbmcp
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCIvLy8iLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3Rh
cnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpGaWxl
U2xhc2g6CisgICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGVTbGFzaCIpOworICAgICAgICAgICAg
aWYgKExJS0VMWSgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFy
dCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKKyAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZUhvc3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAgICAgICAgICAgbV91cmwubV91c2Vy
U3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAg
ICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAgICAgICBh
cHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGJhc2UpKSB7CisgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0OworICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5t
X3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZpbGVIb3N0OgorICAgICAgICAgICAg
ZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiRmlsZUhvc3QiKTsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKSkgeworICAgICAgICAgICAgICAgICAg
ICBib29sIHdpbmRvd3NRdWlyayA9IHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAg
ICAgICAgICAgICAgICAgICAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RC
ZWdpbik7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3dzUXVpcmspIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0
QmVnaW4pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh3
aW5kb3dzUXVpcmsgfHwgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHdpbmRvd3NRdWlyayB8fCBwYXJzZWREYXRhVmlldyhjdXJyZW50
UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKCpjID09ICc/JykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcigiLz8iLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
KmMgPT0gJyMnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIv
IyIsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlv
bihjKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihh
dXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWls
dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzTG9jYWxob3N0KHBhcnNl
ZERhdGFWaWV3KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJlbnRQb3NpdGlvbihjKSAtIG1fdXJs
Lm1fcGFzc3dvcmRFbmQpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1f
dXJsLm1fcGFzc3dvcmRFbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aFN0YXJ0OworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKGlzUGVyY2VudE9yTm9uQVNDSUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hv
c3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAg
ICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoU3Rh
cnQiKTsKKyAgICAgICAgICAgIGlmICgqYyAhPSAnLycgJiYgKmMgIT0gJ1xcJykgeworICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlBhdGg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UGF0
aDoKKyAgICAgICAgICAgIExPR19TVEFURSgiUGF0aCIpOworICAgICAgICAgICAgaWYgKCpjID09
ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJykpCisgICAgICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGN1
cnJlbnRQb3NpdGlvbihjKSAmJiBwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAx
KSA9PSAnLycpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRG91YmxlRG90UGF0
aFNlZ21lbnQoYykpKSB7CisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgICAgICAgICAgY29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KGMpOworICAg
ICAgICAgICAgICAgICAgICBwb3BQYXRoKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNTaW5nbGVE
b3RQYXRoU2VnbWVudChjKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGMpOworICAgICAgICAgICAgICAgICAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICgqYyA9PSAnPycpIHsKKyAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignPycpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAg
ICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlC
ZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVy
eTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKCpjID09ICcjJykgeworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5
RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZy
YWdtZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJbkRlZmF1bHRFbmNvZGVTZXQ+KGMpOworICAgICAgICAg
ICAgKytjOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJl
QUJhc2VVUkxQYXRoOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0
aCIpOworICAgICAgICAgICAgaWYgKCpjID09ICc/JykgeworICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc/Jyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAg
IGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAgICAgICAgICAgICBxdWVyeUJl
Z2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5
OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcjJykgeworICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAg
ICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgfSBlbHNlIGlmICgq
YyA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Cisg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2RlU2V0PihjKTsKKyAg
ICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJVVEY4
UXVlcnkiKTsKKyAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luID09IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+KCkpOworICAgICAgICAgICAgaWYgKCpjID09ICcjJykgeworICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoIW5vblVURjhRdWVyeUVuY29k
aW5nKTsKKyAgICAgICAgICAgIHV0ZjhRdWVyeUVuY29kZShjKTsKKyAgICAgICAgICAgICsrYzsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpOb25VVEY4UXVlcnk6Cisg
ICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJOb25VVEY4UXVlcnki
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPigpKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGVuY29kZU5vblVURjhRdWVyeShxdWVyeUJ1ZmZlciwgKm5vblVU
RjhRdWVyeUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJl
Z2luLCBjKSk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50
UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYXBwZW5kQ29kZVBvaW50KHF1ZXJ5QnVmZmVyLCAqYyk7CisgICAgICAgICAgICAg
ICAgYWR2YW5jZShjLCBxdWVyeUJlZ2luKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5k
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZyYWdtZW50Ogor
ICAgICAgICAgICAgVVJMX1BBUlNFUl9MT0coIlN0YXRlIEZyYWdtZW50Iik7CisgICAgICAgICAg
ICB1dGY4UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2RlU2V0PihjKTsKKyAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgc3dpdGNo
IChzdGF0ZSkgeworICAgIGNhc2UgU3RhdGU6OlNjaGVtZVN0YXJ0OgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgIGlmICghY3VycmVudFBvc2l0aW9uKGMp
ICYmIGJhc2UuaXNWYWxpZCgpICYmICFiYXNlLm1fY2Fubm90QmVBQmFzZVVSTCkgeworICAgICAg
ICAgICAgbV91cmwgPSBiYXNlOworICAgICAgICAgICAgbV91cmwucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZmFpbHVy
ZSgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgorICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIlNjaGVtZSIpOworICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIFN0YXRlOjpOb1NjaGVtZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJOb1NjaGVtZSIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IGNhc2UgU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKKyAg
ICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoT3JBdXRob3JpdHkiKTsKKyAgICAgICAgQVNTRVJU
KG1fdXJsLm1fdXNlclN0YXJ0KTsKKyAgICAgICAgQVNTRVJUKG1fdXJsLm1fdXNlclN0YXJ0ID09
IGN1cnJlbnRQb3NpdGlvbihjKSk7CisgICAgICAgIEFTU0VSVChwYXJzZWREYXRhVmlldyhjdXJy
ZW50UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICBtX3VybC5tX3VzZXJTdGFydC0t
OworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJT
dGFydCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgorICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIlJlbGF0aXZlIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKKyAgICAgICAgTE9H
X0ZJTkFMX1NUQVRFKCJSZWxhdGl2ZVNsYXNoIik7CisgICAgICAgIGNvcHlVUkxQYXJ0c1VudGls
KGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CisgICAg
ICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAg
ICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgorICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzIik7CisgICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6U3Bl
Y2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiU3Bl
Y2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMiKTsKKyAgICAgICAgZmFpbHVyZSgpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIkF1dGhvcml0eU9ySG9zdCIpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBjdXJyZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICBpZiAoYXV0aG9yaXR5T3JI
b3N0QmVnaW4uYXRFbmQoKSkgeworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgfSBlbHNlIGlmICghcGFy
c2VIb3N0QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIGZhaWx1
cmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGlmIChtX3VybElzU3BlY2lhbCkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVu
Z3RoICsgMTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aDsKKyAgICAgICAgfQor
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAg
ICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTdGF0ZTo6SG9zdDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJIb3N0Iik7
CisgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikpIHsK
KyAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCAr
IDE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOworICAgICAgICBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9
IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6RmlsZToK
KyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlIik7CisgICAgICAgIGlmIChiYXNlLmlzVmFs
aWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgY29weVVSTFBh
cnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5n
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIiwgMyk7CisgICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgbV91cmwu
bV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAg
ICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFN0YXRlOjpGaWxlU2xhc2g6CisgICAgICAgIExPR19GSU5BTF9TVEFU
RSgiRmlsZVNsYXNoIik7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgbV91
cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgKyAxOworICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKGNvcHlCYXNlV2luZG93c0Ry
aXZlTGV0dGVyKGJhc2UpKSB7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7
CisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0
YXJ0ICsgNDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
dGF0ZTo6RmlsZUhvc3Q6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRmlsZUhvc3QiKTsKKyAg
ICAgICAgaWYgKHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAgICAgICAmJiBpc1dp
bmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIo
YXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykg
eworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50
UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
KyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMp
KSkgeworICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICBpZiAoaXNMb2NhbGhv
c3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMp
IC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSB7CisgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLnNo
cmluayhtX3VybC5tX3Bhc3N3b3JkRW5kKTsKKyAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9y
dExlbmd0aCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlBhdGhTdGFydDoKKyAg
ICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoU3RhcnQiKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0YXRlOjpQYXRoOgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlBhdGgiKTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDoKKyAgICAg
ICAgTE9HX0ZJTkFMX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0aCIpOworICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlVU
RjhRdWVyeToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJVVEY4UXVlcnkiKTsKKyAgICAgICAg
QVNTRVJUKHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7
CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKKyAgICAgICAgTE9HX0ZJTkFM
X1NUQVRFKCJOb25VVEY4UXVlcnkiKTsKKyAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gIT0gQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAgICAgIGVuY29kZU5vblVURjhR
dWVyeShxdWVyeUJ1ZmZlciwgKm5vblVURjhRdWVyeUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBjKSk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6
OkZyYWdtZW50OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZyYWdtZW50Iik7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGlmIChMSUtFTFkoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9u
KSkgeworICAgICAgICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJpbmc7CisgICAgICAgIEFT
U0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fdXJs
Lm1fc3RyaW5nID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKG1fYXNjaWlCdWZmZXIpKTsKKyAgICBt
X3VybC5tX2lzVmFsaWQgPSB0cnVlOworICAgIFVSTF9QQVJTRVJfTE9HKCJQYXJzZWQgVVJMIDwl
cz4iLCBtX3VybC5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpwYXJzZUF1dGhvcml0eShDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFko
aXRlcmF0b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAg
ICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7IGFkdmFuY2UoaXRlcmF0
b3IpKSB7CisgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKSB7CisgICAgICAgICAgICBtX3Vy
bC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgYXV0
byBpdGVyYXRvckF0Q29sb24gPSBpdGVyYXRvcjsKKyAgICAgICAgICAgICsraXRlcmF0b3I7Cisg
ICAgICAgICAgICBib29sIHRhYk9yTmV3bGluZUFmdGVyQ29sb24gPSBmYWxzZTsKKyAgICAgICAg
ICAgIHdoaWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQoKSAmJiBpc1RhYk9yTmV3bGluZSgq
aXRlcmF0b3IpKSkgeworICAgICAgICAgICAgICAgIHRhYk9yTmV3bGluZUFmdGVyQ29sb24gPSB0
cnVlOworICAgICAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoaXRlcmF0b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JBdENvbG9uKTsKKyAgICAgICAgICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgIGlmIChtX3Vy
bC5tX3VzZXJFbmQgPiBtX3VybC5tX3VzZXJTdGFydCkKKyAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignQCcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICh0YWJPck5ld2xpbmVBZnRlckNvbG9uKQorICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckF0Q29sb24pOworICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignOicpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJh
dG9yKTsKKyAgICB9CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJh
dG9yKSkKKyAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNlckluZm9FbmNvZGVT
ZXQ+KGl0ZXJhdG9yKTsKKyAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gY3VycmVudFBvc2l0aW9u
KGl0ZXJhdG9yKTsKKyAgICBpZiAoIW1fdXJsLm1fdXNlckVuZCkKKyAgICAgICAgbV91cmwubV91
c2VyRW5kID0gbV91cmwubV9wYXNzd29yZEVuZDsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdA
Jyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+Cit2b2lkIFVS
TFBhcnNlcjo6YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlIG51
bWJlcikKK3sKKyAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2lnbmVkSW50ZWdlclR5cGUpICogMyAr
IDFdOworICAgIExDaGFyKiBlbmQgPSBzdGQ6OmVuZChidWYpOworICAgIExDaGFyKiBwID0gZW5k
OworICAgIGRvIHsKKyAgICAgICAgKi0tcCA9IChudW1iZXIgJSAxMCkgKyAnMCc7CisgICAgICAg
IG51bWJlciAvPSAxMDsKKyAgICB9IHdoaWxlIChudW1iZXIpOworICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIocCwgZW5kIC0gcCk7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY0KElQ
djRBZGRyZXNzIGFkZHJlc3MpCit7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50
OF90PihhZGRyZXNzID4+IDI0KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7CisgICAg
YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzID4+IDE2KTsKKyAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1
aW50OF90PihhZGRyZXNzID4+IDgpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy4nKTsKKyAg
ICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQ4X3Q+KGFkZHJlc3MpOworfQorICAgIAor
c3RhdGljIHNpemVfdCB6ZXJvU2VxdWVuY2VMZW5ndGgoY29uc3Qgc3RkOjphcnJheTx1aW50MTZf
dCwgOD4mIGFkZHJlc3MsIHNpemVfdCBiZWdpbikKK3sKKyAgICBzaXplX3QgZW5kID0gYmVnaW47
CisgICAgZm9yICg7IGVuZCA8IDg7IGVuZCsrKSB7CisgICAgICAgIGlmIChhZGRyZXNzW2VuZF0p
CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGVuZCAtIGJlZ2luOworfQor
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNv
bnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzKQoreworICAgIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBsb25nZXN0OworICAgIHNpemVfdCBsb25nZXN0TGVuZ3RoID0gMDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0g
emVyb1NlcXVlbmNlTGVuZ3RoKGFkZHJlc3MsIGkpOworICAgICAgICBpZiAobGVuZ3RoKSB7Cisg
ICAgICAgICAgICBpZiAobGVuZ3RoID4gMSAmJiAoIWxvbmdlc3QgfHwgbG9uZ2VzdExlbmd0aCA8
IGxlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICBsb25nZXN0ID0gaTsKKyAgICAgICAgICAgICAg
ICBsb25nZXN0TGVuZ3RoID0gbGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSAr
PSBsZW5ndGg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxvbmdlc3Q7Cit9CisKK3Zv
aWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGllY2UpCit7CisgICAg
Ym9vbCBwcmludGVkID0gZmFsc2U7CisgICAgaWYgKGF1dG8gbmliYmxlMCA9IHBpZWNlID4+IDEy
KSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFT
Q0lJSGV4RGlnaXQobmliYmxlMCkpOworICAgICAgICBwcmludGVkID0gdHJ1ZTsKKyAgICB9Cisg
ICAgYXV0byBuaWJibGUxID0gcGllY2UgPj4gOCAmIDB4RjsKKyAgICBpZiAocHJpbnRlZCB8fCBu
aWJibGUxKSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2Vy
Y2FzZUFTQ0lJSGV4RGlnaXQobmliYmxlMSkpOworICAgICAgICBwcmludGVkID0gdHJ1ZTsKKyAg
ICB9CisgICAgYXV0byBuaWJibGUyID0gcGllY2UgPj4gNCAmIDB4RjsKKyAgICBpZiAocHJpbnRl
ZCB8fCBuaWJibGUyKQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9M
b3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTIpKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHBpZWNlICYgMHhGKSk7Cit9CisK
K3ZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2KFVSTFBhcnNlcjo6SVB2NkFkZHJlc3MgYWRk
cmVzcykKK3sKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdbJyk7CisgICAgYXV0byBjb21wcmVz
c1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKKyAgICBmb3IgKHNp
emVfdCBwaWVjZSA9IDA7IHBpZWNlIDwgODsgcGllY2UrKykgeworICAgICAgICBpZiAoY29tcHJl
c3NQb2ludGVyICYmIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpID09IHBpZWNlKSB7CisgICAgICAg
ICAgICBBU1NFUlQoIWFkZHJlc3NbcGllY2VdKTsKKyAgICAgICAgICAgIGlmIChwaWVjZSkKKyAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOjoiLCAyKTsKKyAgICAgICAg
ICAgIHdoaWxlIChwaWVjZSA8IDggJiYgIWFkZHJlc3NbcGllY2VdKQorICAgICAgICAgICAgICAg
IHBpZWNlKys7CisgICAgICAgICAgICBpZiAocGllY2UgPT0gOCkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXJpYWxpemVJUHY2UGllY2UoYWRkcmVzc1twaWVj
ZV0pOworICAgICAgICBpZiAocGllY2UgPCA3KQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignOicpOworICAgIH0KKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCddJyk7Cit9CisKK2Vu
dW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3IgeworICAgIEZhaWx1cmUs
CisgICAgT3ZlcmZsb3csCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgor
RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBVUkxQ
YXJzZXI6OnBhcnNlSVB2NFBpZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvciwgYm9vbCYgZGlkU2VlU3ludGF4VmlvbGF0aW9uKQoreworICAgIGVudW0gY2xhc3Mg
U3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5rbm93bkJhc2UsCisgICAgICAgIERlY2ltYWws
CisgICAgICAgIE9jdGFsT3JIZXgsCisgICAgICAgIE9jdGFsLAorICAgICAgICBIZXgsCisgICAg
fTsKKyAgICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpVbmtub3duQmFzZTsKKyAgICBDaGVja2VkPHVp
bnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gdmFsdWUgPSAwOworICAgIGlmICghaXRlcmF0b3IuYXRF
bmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
SVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0
RW5kKCkpIHsKKyAgICAgICAgaWYgKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpIHsKKyAgICAg
ICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7CisgICAgICAgICAgICArK2l0ZXJh
dG9yOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCppdGVy
YXRvciA9PSAnLicpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgp
KTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKKyAgICAgICAgfQorICAg
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgU3RhdGU6OlVua25vd25CYXNlOgor
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKCppdGVyYXRvciA9PSAnMCcpKSB7CisgICAgICAgICAg
ICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbE9y
SGV4OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RGVjaW1hbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0YXRlOjpPY3RhbE9ySGV4OgorICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJ3gnIHx8ICppdGVyYXRvciA9PSAn
WCcpIHsKKyAgICAgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkhleDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok9jdGFsOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU3RhdGU6OkRlY2ltYWw6CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgq
aXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGll
Y2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpOworICAgICAgICAgICAgdmFsdWUgKj0gMTA7CisgICAg
ICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICAr
K2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6Ok9jdGFs
OgorICAgICAgICAgICAgQVNTRVJUKGRpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgICAgICAg
ICBpZiAoKml0ZXJhdG9yIDwgJzAnIHx8ICppdGVyYXRvciA+ICc3JykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsK
KyAgICAgICAgICAgIHZhbHVlICo9IDg7CisgICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3Ig
LSAnMCc7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vy
cm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkhleDoKKyAgICAgICAgICAgIEFTU0VSVChkaWRTZWVT
eW50YXhWaW9sYXRpb24pOworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKml0ZXJh
dG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFy
c2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgICAgIHZhbHVlICo9IDE2OworICAgICAgICAg
ICAgdmFsdWUgKz0gdG9BU0NJSUhleFZhbHVlKCppdGVyYXRvcik7CisgICAgICAgICAgICBpZiAo
VU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAg
ICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgQVNTRVJUKCF2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpOworICAgIHJldHVybiB2YWx1ZS51bnNh
ZmVHZXQoKTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDY0X3QgcG93MjU2KHNpemVf
dCBleHBvbmVudCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChleHBvbmVudCA8PSA0KTsKKyAgICB1
aW50NjRfdCB2YWx1ZXNbNV0gPSB7MSwgMjU2LCAyNTYgKiAyNTYsIDI1NiAqIDI1NiAqIDI1Niwg
MjU2dWxsICogMjU2ICogMjU2ICogMjU2IH07CisgICAgcmV0dXJuIHZhbHVlc1tleHBvbmVudF07
Cit9CisKK2VudW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yIHsKKyAgICBGYWls
dXJlLAorICAgIE5vdElQdjQsCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Rm9yU3ludGF4VmlvbGF0aW9uLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorRXhwZWN0ZWQ8VVJM
UGFyc2VyOjpJUHY0QWRkcmVzcywgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yPiBVUkxQYXJz
ZXI6OnBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZv
clN5bnRheFZpb2xhdGlvbj4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24sIENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIFZlY3RvcjxF
eHBlY3RlZDx1aW50MzJfdCwgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3I+LCA0PiBp
dGVtczsKKyAgICBib29sIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IGZhbHNlOworICAgIGlmICgh
aXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgd2hpbGUgKCFpdGVy
YXRvci5hdEVuZCgpKSB7CisgICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7
CisgICAgICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOworICAgICAgICAgICAg
KytpdGVyYXRvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlm
IChpdGVtcy5zaXplKCkgPj0gNCkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJ
UHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAgaXRlbXMuYXBwZW5kKHBhcnNlSVB2
NFBpZWNlKGl0ZXJhdG9yLCBkaWRTZWVTeW50YXhWaW9sYXRpb24pKTsKKyAgICAgICAgaWYgKCFp
dGVyYXRvci5hdEVuZCgpICYmICppdGVyYXRvciA9PSAnLicpIHsKKyAgICAgICAgICAgICsraXRl
cmF0b3I7CisgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlIGlmICgqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgfHwgIWl0ZW1zLnNpemUoKSB8fCBp
dGVtcy5zaXplKCkgPiA0KQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNp
bmdFcnJvcjo6Tm90SVB2NCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsK
KyAgICAgICAgaWYgKCFpdGVtLmhhc192YWx1ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0UGll
Y2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgfQorICAgIGZvciAoY29uc3QgYXV0
byYgaXRlbSA6IGl0ZW1zKSB7CisgICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVt
LmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdykKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICB9
CisgICAgaWYgKGl0ZW1zLnNpemUoKSA+IDEpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpdGVtcy5zaXplKCkgLSAxOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpdGVtc1tpXS52
YWx1ZSgpID4gMjU1KQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0
UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaXRlbXNb
aXRlbXMuc2l6ZSgpIC0gMV0udmFsdWUoKSA+PSBwb3cyNTYoNSAtIGl0ZW1zLnNpemUoKSkpCisg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsK
KworICAgIGlmIChkaWRTZWVTeW50YXhWaW9sYXRpb24pCisgICAgICAgIHN5bnRheFZpb2xhdGlv
bihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0ZW0gOiBpdGVtcykgeworICAgICAgICBpZiAoaXRlbS52YWx1ZSgpID4gMjU1KQorICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRp
b24pOworICAgIH0KKworICAgIGlmIChVTkxJS0VMWShpdGVtcy5zaXplKCkgIT0gNCkpCisgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsK
KworICAgIElQdjRBZGRyZXNzIGlwdjQgPSBpdGVtcy50YWtlTGFzdCgpLnZhbHVlKCk7CisgICAg
Zm9yIChzaXplX3QgY291bnRlciA9IDA7IGNvdW50ZXIgPCBpdGVtcy5zaXplKCk7ICsrY291bnRl
cikKKyAgICAgICAgaXB2NCArPSBpdGVtc1tjb3VudGVyXS52YWx1ZSgpICogcG93MjU2KDMgLSBj
b3VudGVyKTsKKyAgICByZXR1cm4gaXB2NDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGll
Y2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikK
K3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICB1aW50MzJfdCBwaWVjZSA9IDA7CisgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxz
ZTsKKyAgICBzaXplX3QgZGlnaXRDb3VudCA9IDA7CisgICAgd2hpbGUgKCFpdGVyYXRvci5hdEVu
ZCgpKSB7CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCppdGVyYXRvcikpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICArK2RpZ2l0Q291bnQ7CisgICAgICAgIGlm
ICghcGllY2UgJiYgKml0ZXJhdG9yID09ICcwJykgeworICAgICAgICAgICAgaWYgKGxlYWRpbmda
ZXJvcykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAg
bGVhZGluZ1plcm9zID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXBpZWNlICYmICpp
dGVyYXRvciA9PSAnMCcpCisgICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAg
ICBwaWVjZSA9IHBpZWNlICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgIGlmIChwaWVj
ZSA+IDI1NSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGFkdmFu
Y2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwor
ICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAoKml0ZXJhdG9yID09ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBp
ZiAocGllY2UgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHJldHVybiBwaWVjZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K3N0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQ
djRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVy
YXRvcikKK3sKKyAgICBJUHY0QWRkcmVzcyBhZGRyZXNzID0gMDsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDQ7ICsraSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
cGllY2UgPSBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoaXRlcmF0b3IpKQorICAgICAgICAgICAg
YWRkcmVzcyA9IChhZGRyZXNzIDw8IDgpICsgcGllY2UudmFsdWUoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKGkgPCAzKSB7Cisg
ICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICAgICAgaWYgKCppdGVyYXRvciAhPSAnLicpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGFkdmFuY2U8Q2hhcmFj
dGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgICAgICB9
IGVsc2UgaWYgKCFpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICB9CisgICAgQVNTRVJUKGl0ZXJhdG9yLmF0RW5kKCkpOworICAgIHJldHVybiBh
ZGRyZXNzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRp
b25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sKKyAgICBBU1NFUlQoKmMgPT0gJ1sn
KTsKKyAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7CisgICAgYWR2YW5jZShjLCBob3N0QmVn
aW4pOworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBJUHY2QWRkcmVzcyBhZGRyZXNzID0ge3swLCAwLCAwLCAwLCAwLCAwLCAwLCAwfX07Cisg
ICAgc2l6ZV90IHBpZWNlUG9pbnRlciA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNv
bXByZXNzUG9pbnRlcjsKKworICAgIGlmICgqYyA9PSAnOicpIHsKKyAgICAgICAgYWR2YW5jZShj
LCBob3N0QmVnaW4pOworICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCpjICE9ICc6JykKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAg
KytwaWVjZVBvaW50ZXI7CisgICAgICAgIGNvbXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRlcjsK
KyAgICB9CisgICAgCisgICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKHBpZWNl
UG9pbnRlciA9PSA4KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
aWYgKCpjID09ICc6JykgeworICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgYWR2YW5jZShjLCBo
b3N0QmVnaW4pOworICAgICAgICAgICAgKytwaWVjZVBvaW50ZXI7CisgICAgICAgICAgICBjb21w
cmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDYgfHwgKGNvbXByZXNzUG9pbnRlciAm
JiBwaWVjZVBvaW50ZXIgPCA2KSkgeworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8SVB2
NEFkZHJlc3M+IGlwdjRBZGRyZXNzID0gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoYykpIHsK
KyAgICAgICAgICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA9PSA1
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgICAgICAgICAgICAgIGFkZHJlc3Nb
cGllY2VQb2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSA+PiAxNjsKKyAgICAgICAgICAg
ICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgJiAweEZG
RkY7CisgICAgICAgICAgICAgICAgYyA9IHsgfTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB1aW50MTZfdCB2YWx1ZSA9IDA7CisgICAg
ICAgIHNpemVfdCBsZW5ndGggPSAwOworICAgICAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNl
OworICAgICAgICBmb3IgKDsgbGVuZ3RoIDwgNDsgbGVuZ3RoKyspIHsKKyAgICAgICAgICAgIGlm
IChjLmF0RW5kKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIWlz
QVNDSUlIZXhEaWdpdCgqYykpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAoaXNBU0NJSVVwcGVyKCpjKSkKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9z
dEJlZ2luKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnMCcgJiYgIWxlbmd0aCkKKyAgICAgICAg
ICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAq
IDB4MTAgKyB0b0FTQ0lJSGV4VmFsdWUoKmMpOworICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0
QmVnaW4pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkoKHZhbHVl
ICYmIGxlYWRpbmdaZXJvcykgfHwgKCF2YWx1ZSAmJiBsZW5ndGggPiAxKSkpCisgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKworICAgICAgICBhZGRyZXNzW3BpZWNlUG9p
bnRlcisrXSA9IHZhbHVlOworICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCB8fCAqYyAhPSAnOicpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7
CisgICAgfQorICAgIAorICAgIGlmICghYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIAorICAgIGlmIChjb21wcmVzc1BvaW50ZXIpIHsKKyAgICAgICAgc2l6ZV90
IHN3YXBzID0gcGllY2VQb2ludGVyIC0gY29tcHJlc3NQb2ludGVyLnZhbHVlKCk7CisgICAgICAg
IHBpZWNlUG9pbnRlciA9IDc7CisgICAgICAgIHdoaWxlIChzd2FwcykKKyAgICAgICAgICAgIHN0
ZDo6c3dhcChhZGRyZXNzW3BpZWNlUG9pbnRlci0tXSwgYWRkcmVzc1tjb21wcmVzc1BvaW50ZXIu
dmFsdWUoKSArIHN3YXBzLS0gLSAxXSk7CisgICAgfSBlbHNlIGlmIChwaWVjZVBvaW50ZXIgIT0g
OCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBwb3NzaWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFk
ZHJlc3MpOworICAgIGlmIChwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikKKyAgICAgICAgcG9zc2li
bGVDb21wcmVzc1BvaW50ZXIudmFsdWUoKSsrOworICAgIGlmIChVTkxJS0VMWShjb21wcmVzc1Bv
aW50ZXIgIT0gcG9zc2libGVDb21wcmVzc1BvaW50ZXIpKQorICAgICAgICBzeW50YXhWaW9sYXRp
b24oaG9zdEJlZ2luKTsKKyAgICAKKyAgICByZXR1cm4gYWRkcmVzczsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK1VSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2Vy
OjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCwgY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0
aW9uUG9zaXRpb24pCit7CisgICAgTENoYXJCdWZmZXIgb3V0cHV0OworICAgIG91dHB1dC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICB1aW50OF90IGJ5dGUgPSBpbnB1dFtpXTsKKyAg
ICAgICAgaWYgKGJ5dGUgIT0gJyUnKQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVu
ZChieXRlKTsKKyAgICAgICAgZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpIDwgbGVuZ3RoIC0gMikg
eworICAgICAgICAgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pICYmIGlzQVND
SUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAgICAgICAg
IG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5w
dXRbaSArIDJdKSk7CisgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgIH0K
KyAgICByZXR1cm4gb3V0cHV0OworfQorICAgIAorVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciBVUkxQ
YXJzZXI6OnBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQor
eworICAgIExDaGFyQnVmZmVyIG91dHB1dDsKKyAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShsZW5ndGgpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07CisgICAgICAgIGlmIChieXRl
ICE9ICclJykKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKKyAgICAgICAgICAg
IGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5w
dXRbaSArIDJdKSkgeworICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9B
U0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7CisgICAgICAgICAgICAg
ICAgaSArPSAyOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0LnVu
Y2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvdXRwdXQu
dW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgIH0KKyAgICByZXR1cm4gb3V0cHV0OworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6
TENoYXJCdWZmZXI+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiBkb21haW4s
IGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uKQoreworICAgIExDaGFyQnVmZmVyIGFzY2lpOworICAgIGlmIChk
b21haW4uaXNBbGxBU0NJSSgpKSB7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBkb21haW4ubGVu
Z3RoKCk7CisgICAgICAgIGlmIChkb21haW4uaXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnM4KCk7CisgICAgICAgICAgICBh
c2NpaS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGlzQVNDSUlVcHBlcihjaGFyYWN0ZXJzW2ldKSkpCisgICAgICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICAg
ICAgICAgICAgICBhc2NpaS51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUxvd2VyKGNoYXJhY3RlcnNb
aV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAg
YXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQorICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAg
ICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJz
W2ldKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFzY2lpOwor
ICAgIH0KKyAgICAKKyAgICBjb25zdCBzaXplX3QgbWF4RG9tYWluTGVuZ3RoID0gNjQ7CisgICAg
VUNoYXIgaG9zdG5hbWVCdWZmZXJbbWF4RG9tYWluTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVy
cm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJ
RE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVk
ID0gdWlkbmFfbmFtZVRvQVNDSUkoJmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2Rlcigp
LCBTdHJpbmdWaWV3KGRvbWFpbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGRvbWFpbi5sZW5n
dGgoKSwgaG9zdG5hbWVCdWZmZXIsIG1heERvbWFpbkxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxz
LCAmZXJyb3IpOworICAgIEFTU0VSVChudW1DaGFyYWN0ZXJzQ29udmVydGVkIDw9IHN0YXRpY19j
YXN0PGludDMyX3Q+KG1heERvbWFpbkxlbmd0aCkpOworCisgICAgaWYgKFVfU1VDQ0VTUyhlcnJv
cikgJiYgIXByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgeworICAgICAgICBmb3IgKGludDMyX3Qg
aSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzQ29udmVydGVkOyArK2kpIHsKKyAgICAgICAgICAgIEFT
U0VSVChpc0FTQ0lJKGhvc3RuYW1lQnVmZmVyW2ldKSk7CisgICAgICAgICAgICBBU1NFUlQoIWlz
QVNDSUlVcHBlcihob3N0bmFtZUJ1ZmZlcltpXSkpOworICAgICAgICB9CisgICAgICAgIGFzY2lp
LmFwcGVuZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CisgICAgICAg
IGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhhc2NpaS5kYXRhKCksIGFzY2lpLnNpemUoKSkpCisg
ICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3Np
dGlvbik7CisgICAgICAgIHJldHVybiBhc2NpaTsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKK30KKworYm9vbCBVUkxQYXJzZXI6Omhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29u
c3QgVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW4pCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhc2NpaURvbWFpbi5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoaXNG
b3JiaWRkZW5Ib3N0Q29kZVBvaW50KGFzY2lpRG9tYWluW2ldKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6cGFyc2VQb3J0KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoKml0ZXJhdG9yID09
ICc6Jyk7CisgICAgYXV0byBjb2xvbkl0ZXJhdG9yID0gaXRlcmF0b3I7CisgICAgYWR2YW5jZShp
dGVyYXRvciwgY29sb25JdGVyYXRvcik7CisgICAgdWludDMyX3QgcG9ydCA9IDA7CisgICAgaWYg
KFVOTElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5n
dGggPSBjdXJyZW50UG9zaXRpb24oY29sb25JdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsK
KyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKKyAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOworICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7
CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIGlm
IChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKSB7CisgICAgICAgICAg
ICBpZiAoKml0ZXJhdG9yID09ICcwJyAmJiAhZGlnaXRDb3VudCkKKyAgICAgICAgICAgICAgICBs
ZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICAgICAgKytkaWdpdENvdW50OworICAgICAgICAg
ICAgcG9ydCA9IHBvcnQgKiAxMCArICppdGVyYXRvciAtICcwJzsKKyAgICAgICAgICAgIGlmIChw
b3J0ID4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKHBvcnQgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICBzeW50
YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisgICAgCisgICAgaWYgKCFwb3J0ICYmIGRpZ2l0
Q291bnQgPiAxKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisKKyAg
ICBBU1NFUlQocG9ydCA9PSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOworICAgIGlmIChV
TkxJS0VMWShkZWZhdWx0UG9ydEZvclByb3RvY29sKHBhcnNlZERhdGFWaWV3KDAsIG1fdXJsLm1f
c2NoZW1lRW5kKSkgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKSkKKyAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgIGVsc2UgeworICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgIEFTU0VSVChwb3J0IDw9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDE2X3Q+OjptYXgoKSk7CisgICAgICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZm
ZXI8dWludDE2X3Q+KHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSk7CisgICAgfQorCisgICAg
dW5zaWduZWQgcG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5t
X2hvc3RFbmQ7CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRM
ZW5ndGgpOworICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBh
cnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBp
dGVyYXRvcikKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCppdGVyYXRvciA9PSAnWycpIHsKKyAgICAgICAgYXV0byBpcHY2RW5kID0gaXRlcmF0
b3I7CisgICAgICAgIHdoaWxlICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2RW5kICE9ICddJykK
KyAgICAgICAgICAgICsraXB2NkVuZDsKKyAgICAgICAgaWYgKGlwdjZFbmQuYXRFbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IHBhcnNl
SVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaXRlcmF0b3IsIGlwdjZF
bmQpKSkgeworICAgICAgICAgICAgc2VyaWFsaXplSVB2NihhZGRyZXNzLnZhbHVlKCkpOworICAg
ICAgICAgICAgaWYgKCFpcHY2RW5kLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNl
KGlwdjZFbmQpOworICAgICAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2
RW5kID09ICc6JykgeworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJy
ZW50UG9zaXRpb24oaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVBv
cnQoaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKKyAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlw
djZFbmQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAg
Zm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNGb3JiaWRkZW5Ib3N0Q29k
ZVBvaW50KCppdGVyYXRvcikgJiYgKml0ZXJhdG9yICE9ICclJykpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJblNpbXBsZUVu
Y29kZVNldD4oaXRlcmF0b3IpOworICAgICAgICB9CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgp
KSB7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7
CisgICAgfQorICAgIAorICAgIGlmIChMSUtFTFkoIW1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJ
KSkgeworICAgICAgICBhdXRvIGhvc3RJdGVyYXRvciA9IGl0ZXJhdG9yOworICAgICAgICBmb3Ig
KDsgIWl0ZXJhdG9yLmF0RW5kKCk7ICsraXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGlmIChpc1Rh
Yk9yTmV3bGluZSgqaXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBpZiAoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KCppdGVyYXRvcikpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGF1dG8gYWRkcmVzcyA9
IHBhcnNlSVB2NEhvc3QoaG9zdEl0ZXJhdG9yLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPihob3N0SXRlcmF0b3IsIGl0ZXJhdG9yKSk7CisgICAgICAgIGlmIChhZGRyZXNzKSB7Cisg
ICAgICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAg
aWYgKGl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5n
dGggPSAwOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKDsgaG9zdEl0ZXJhdG9yICE9IGl0ZXJh
dG9yOyArK2hvc3RJdGVyYXRvcikgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JO
ZXdsaW5lKCpob3N0SXRlcmF0b3IpKSkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihob3N0SXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqaG9zdEl0ZXJhdG9yKSkp
CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RJdGVyYXRvcik7CisgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqaG9zdEl0ZXJhdG9yKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJh
dG9yKTsKKyAgICAgICAgaWYgKCFob3N0SXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBwYXJzZVBvcnQoaG9zdEl0ZXJhdG9yKTsKKyAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0
aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIAorICAgIGNvbnN0IGF1dG8gaG9zdEJlZ2luID0gaXRlcmF0b3I7CisgICAg
CisgICAgTENoYXJCdWZmZXIgdXRmOEVuY29kZWQ7CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVu
ZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgq
aXRlcmF0b3IpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKml0ZXJhdG9yID09
ICc6JykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUko
Kml0ZXJhdG9yKSkpCisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKwor
ICAgICAgICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKCppdGVyYXRvcikpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOworICAg
ICAgICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAgICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVy
LCBvZmZzZXQsICppdGVyYXRvcik7CisgICAgICAgIHV0ZjhFbmNvZGVkLmFwcGVuZChidWZmZXIs
IG9mZnNldCk7CisgICAgfQorICAgIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGVkID0gcGVyY2Vu
dERlY29kZSh1dGY4RW5jb2RlZC5kYXRhKCksIHV0ZjhFbmNvZGVkLnNpemUoKSwgaG9zdEJlZ2lu
KTsKKyAgICBTdHJpbmcgZG9tYWluID0gU3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5k
YXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CisgICAgaWYgKGRvbWFpbi5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhwZXJj
ZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSkpCisgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgIGF1dG8gYXNjaWlEb21haW4gPSBkb21haW5Ub0FT
Q0lJKCpkb21haW4uaW1wbCgpLCBob3N0QmVnaW4pOworICAgIGlmICghYXNjaWlEb21haW4gfHwg
aGFzRm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbi52YWx1ZSgpKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIExDaGFyQnVmZmVyJiBhc2NpaURvbWFpblZhbHVlID0gYXNjaWlE
b21haW4udmFsdWUoKTsKKyAgICBjb25zdCBMQ2hhciogYXNjaWlEb21haW5DaGFyYWN0ZXJzID0g
YXNjaWlEb21haW5WYWx1ZS5kYXRhKCk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRI
b3N0KGhvc3RCZWdpbiwgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+KGFzY2lpRG9tYWluVmFsdWUu
YmVnaW4oKSwgYXNjaWlEb21haW5WYWx1ZS5lbmQoKSkpOworICAgIGlmIChhZGRyZXNzKSB7Cisg
ICAgICAgIHNlcmlhbGl6ZUlQdjQoYWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgbV91cmwubV9o
b3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9y
LmF0RW5kKCkpIHsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0
ZXJhdG9yKTsKKyAgICB9CisgICAgaWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGFzY2lpRG9tYWluQ2hhcmFjdGVycywgYXNjaWlEb21haW5WYWx1ZS5zaXplKCkpOwor
ICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgaWYg
KCFpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsK
KyAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgIHJldHVybiB0cnVlOworfQorCitzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5w
dXQpCit7CisgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJzaW9uKTsKKyAg
ICBpZiAodXRmOC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBh
dXRvIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7
Cit9CisKKy8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmxlbmNvZGVk
LXBhcnNlcgorYXV0byBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyBp
bnB1dCkgLT4gVVJMRW5jb2RlZEZvcm0KK3sKKyAgICBVUkxFbmNvZGVkRm9ybSBvdXRwdXQ7Cisg
ICAgZm9yIChTdHJpbmdWaWV3IGJ5dGVzIDogaW5wdXQuc3BsaXQoJyYnKSkgeworICAgICAgICBh
dXRvIGVxdWFsSW5kZXggPSBieXRlcy5maW5kKCc9Jyk7CisgICAgICAgIGlmIChlcXVhbEluZGV4
ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVjb2RlKGJ5
dGVzLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKKyAgICAgICAgICAgIGlmIChuYW1l
KQorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIGVtcHR5U3Ry
aW5nKCkgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3Jt
VVJMRGVjb2RlKGJ5dGVzLnN1YnN0cmluZygwLCBlcXVhbEluZGV4KS50b1N0cmluZygpLnJlcGxh
Y2UoJysnLCAweDIwKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gZm9ybVVSTERlY29kZShi
eXRlcy5zdWJzdHJpbmcoZXF1YWxJbmRleCArIDEpLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4
MjApKTsKKyAgICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVlKQorICAgICAgICAgICAgICAgIG91
dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIHZhbHVlLnZhbHVlKCkgfSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworc3RhdGljIHZvaWQgc2VyaWFsaXplVVJM
RW5jb2RlZEZvcm0oY29uc3QgU3RyaW5nJiBpbnB1dCwgVmVjdG9yPExDaGFyPiYgb3V0cHV0KQor
eworICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CisgICAgY29u
c3QgY2hhciogZGF0YSA9IHV0ZjguZGF0YSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dXRmOC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IGNoYXIgYnl0ZSA9IGRhdGFbaV07
CisgICAgICAgIGlmIChieXRlID09IDB4MjApCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDB4
MkIpOworICAgICAgICBlbHNlIGlmIChieXRlID09IDB4MkEKKyAgICAgICAgICAgIHx8IGJ5dGUg
PT0gMHgyRAorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDJFCisgICAgICAgICAgICB8fCAoYnl0
ZSA+PSAweDMwICYmIGJ5dGUgPD0gMHgzOSkKKyAgICAgICAgICAgIHx8IChieXRlID49IDB4NDEg
JiYgYnl0ZSA8PSAweDVBKQorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDVGCisgICAgICAgICAg
ICB8fCAoYnl0ZSA+PSAweDYxICYmIGJ5dGUgPD0gMHg3QSkpIC8vIEZJWE1FOiBQdXQgdGhlc2Ug
aW4gdGhlIGNoYXJhY3RlckNsYXNzVGFibGUgdG8gYXZvaWQgYnJhbmNoZXMuCisgICAgICAgICAg
ICBvdXRwdXQuYXBwZW5kKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwZXJjZW50
RW5jb2RlQnl0ZShieXRlLCBvdXRwdXQpOworICAgIH0KK30KKyAgICAKK1N0cmluZyBVUkxQYXJz
ZXI6OnNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYgdHVwbGVzKQoreworICAgIGlmICh0
dXBsZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPExDaGFy
PiBvdXRwdXQ7CisgICAgZm9yIChhdXRvJiB0dXBsZSA6IHR1cGxlcykgeworICAgICAgICBpZiAo
IW91dHB1dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCcmJyk7CisgICAg
ICAgIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3JtKHR1cGxlLmtleSwgb3V0cHV0KTsKKyAgICAgICAg
b3V0cHV0LmFwcGVuZCgnPScpOworICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBs
ZS52YWx1ZSwgb3V0cHV0KTsKKyAgICB9CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92
ZShvdXRwdXQpKTsKK30KKworY29uc3QgVUlETkEmIFVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERv
bWFpbk5hbWVUcmFuc2NvZGVyKCkKK3sKKyAgICBzdGF0aWMgVUlETkEqIGVuY29kZXI7CisgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7CisgICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAg
ICAgIC8vIFdhcm5pbmc6IFBsZWFzZSBjb250YWN0IGEgV2ViS2l0R1RLKyBkZXZlbG9wZXIgaWYg
Y2hhbmdpbmcgdGhlc2UgZmxhZ3MuCisgICAgICAgIC8vIFRoZXkgc2hvdWxkIGJlIHN5bmNlZCB3
aXRoIGVwaHlfdXJpX2RlY29kZSgpIGluIGVwaHktdXJpLWhlbHBlcnMuYy4KKyAgICAgICAgZW5j
b2RlciA9IHVpZG5hX29wZW5VVFM0NihVSUROQV9DSEVDS19CSURJIHwgVUlETkFfQ0hFQ0tfQ09O
VEVYVEogfCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fVU5JQ09ERSB8IFVJRE5BX05PTlRSQU5T
SVRJT05BTF9UT19BU0NJSSwgJmVycm9yKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoVV9TVUND
RVNTKGVycm9yKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuY29kZXIpOworICAgIH0pOwor
ICAgIHJldHVybiAqZW5jb2RlcjsKK30KKworYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFs
KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIFVSTF9QQVJTRVJfTE9HKCIlZCAl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlc1xuJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJWQgJXMiLAorICAgICAgICBhLm1faXNWYWxpZCwKKyAgICAgICAgYS5tX2Nh
bm5vdEJlQUJhc2VVUkwsCisgICAgICAgIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAorICAg
ICAgICBhLm1fc2NoZW1lRW5kLAorICAgICAgICBhLm1fdXNlclN0YXJ0LAorICAgICAgICBhLm1f
dXNlckVuZCwKKyAgICAgICAgYS5tX3Bhc3N3b3JkRW5kLAorICAgICAgICBhLm1faG9zdEVuZCwK
KyAgICAgICAgYS5tX2hvc3RFbmQgKyBhLm1fcG9ydExlbmd0aCwKKyAgICAgICAgYS5tX3BhdGhB
ZnRlckxhc3RTbGFzaCwKKyAgICAgICAgYS5tX3BhdGhFbmQsCisgICAgICAgIGEubV9xdWVyeUVu
ZCwKKyAgICAgICAgYS5tX3N0cmluZy51dGY4KCkuZGF0YSgpLAorICAgICAgICBiLm1faXNWYWxp
ZCwKKyAgICAgICAgYi5tX2Nhbm5vdEJlQUJhc2VVUkwsCisgICAgICAgIGIubV9wcm90b2NvbElz
SW5IVFRQRmFtaWx5LAorICAgICAgICBiLm1fc2NoZW1lRW5kLAorICAgICAgICBiLm1fdXNlclN0
YXJ0LAorICAgICAgICBiLm1fdXNlckVuZCwKKyAgICAgICAgYi5tX3Bhc3N3b3JkRW5kLAorICAg
ICAgICBiLm1faG9zdEVuZCwKKyAgICAgICAgYi5tX2hvc3RFbmQgKyBiLm1fcG9ydExlbmd0aCwK
KyAgICAgICAgYi5tX3BhdGhBZnRlckxhc3RTbGFzaCwKKyAgICAgICAgYi5tX3BhdGhFbmQsCisg
ICAgICAgIGIubV9xdWVyeUVuZCwKKyAgICAgICAgYi5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsK
KworICAgIHJldHVybiBhLm1fc3RyaW5nID09IGIubV9zdHJpbmcKKyAgICAgICAgJiYgYS5tX2lz
VmFsaWQgPT0gYi5tX2lzVmFsaWQKKyAgICAgICAgJiYgYS5tX2Nhbm5vdEJlQUJhc2VVUkwgPT0g
Yi5tX2Nhbm5vdEJlQUJhc2VVUkwKKyAgICAgICAgJiYgYS5tX3Byb3RvY29sSXNJbkhUVFBGYW1p
bHkgPT0gYi5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkKKyAgICAgICAgJiYgYS5tX3NjaGVtZUVu
ZCA9PSBiLm1fc2NoZW1lRW5kCisgICAgICAgICYmIGEubV91c2VyU3RhcnQgPT0gYi5tX3VzZXJT
dGFydAorICAgICAgICAmJiBhLm1fdXNlckVuZCA9PSBiLm1fdXNlckVuZAorICAgICAgICAmJiBh
Lm1fcGFzc3dvcmRFbmQgPT0gYi5tX3Bhc3N3b3JkRW5kCisgICAgICAgICYmIGEubV9ob3N0RW5k
ID09IGIubV9ob3N0RW5kCisgICAgICAgICYmIGEubV9wb3J0TGVuZ3RoID09IGIubV9wb3J0TGVu
Z3RoCisgICAgICAgICYmIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gYi5tX3BhdGhBZnRlckxh
c3RTbGFzaAorICAgICAgICAmJiBhLm1fcGF0aEVuZCA9PSBiLm1fcGF0aEVuZAorICAgICAgICAm
JiBhLm1fcXVlcnlFbmQgPT0gYi5tX3F1ZXJ5RW5kOworfQorCitib29sIFVSTFBhcnNlcjo6aW50
ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVybiB1cmwu
bV9zY2hlbWVFbmQgPD0gdXJsLm1fdXNlclN0YXJ0CisgICAgICAgICYmIHVybC5tX3VzZXJTdGFy
dCA8PSB1cmwubV91c2VyRW5kCisgICAgICAgICYmIHVybC5tX3VzZXJFbmQgPD0gdXJsLm1fcGFz
c3dvcmRFbmQKKyAgICAgICAgJiYgdXJsLm1fcGFzc3dvcmRFbmQgPD0gdXJsLm1faG9zdEVuZAor
ICAgICAgICAmJiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aCA8PSB1cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2gKKyAgICAgICAgJiYgdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IHVy
bC5tX3BhdGhFbmQKKyAgICAgICAgJiYgdXJsLm1fcGF0aEVuZCA8PSB1cmwubV9xdWVyeUVuZAor
ICAgICAgICAmJiB1cmwubV9xdWVyeUVuZCA8PSB1cmwubV9zdHJpbmcubGVuZ3RoKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2Vy
LmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTI1YjU0MDIyMzQw
YTllODhiZWQ4Y2NmMTcwMDM5Mjc3N2ZlNzJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvVVJMUGFyc2VyLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKK3N0cnVjdCBVSUROQTsKKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQ
b2ludEl0ZXJhdG9yOworCitjbGFzcyBVUkxQYXJzZXIgeworcHVibGljOgorICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBV
UkwmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaW50ZXJuYWxWYWx1ZXND
b25zaXN0ZW50KGNvbnN0IFVSTCYpOworICAgIAorICAgIHVzaW5nIFVSTEVuY29kZWRGb3JtID0g
VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj47CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBVUkxFbmNvZGVkRm9ybSBwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmlu
Z1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShj
b25zdCBVUkxFbmNvZGVkRm9ybSYpOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF5YmVDYW5vbmljYWxpemVT
Y2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworCisgICAgc3RhdGljIGNvbnN0IFVJRE5BJiBp
bnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBpc0lu
VXNlckluZm9FbmNvZGVTZXQoVUNoYXIpOworCitwcml2YXRlOgorICAgIFVSTFBhcnNlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVs
bHB0cik7CisgICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9CisKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3
KTsKKyAgICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90
b2NvbChTdHJpbmdWaWV3KTsKKyAgICBmcmllbmQgY2xhc3MgVVJMOworCisgICAgVVJMIG1fdXJs
OworICAgIFZlY3RvcjxMQ2hhcj4gbV9hc2NpaUJ1ZmZlcjsKKyAgICBib29sIG1fdXJsSXNTcGVj
aWFsIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdXJsSXNGaWxlIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJIHsgZmFsc2UgfTsKKyAgICBTdHJpbmcgbV9pbnB1
dFN0cmluZzsKKyAgICBjb25zdCB2b2lkKiBtX2lucHV0QmVnaW4geyBudWxscHRyIH07CisKKyAg
ICBib29sIG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZSA9IDIwNDg7CisgICAgdXNpbmcg
TENoYXJCdWZmZXIgPSBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPjsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2UoY29uc3QgQ2hh
cmFjdGVyVHlwZSosIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVVJMJiwgY29uc3QgVVJM
VGV4dEVuY29kaW5nKik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9p
ZCBwYXJzZUF1dGhvcml0eShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZUhvc3RBbmRQb3J0KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBib29sIHBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYpOworCisgICAgdm9pZCBmYWlsdXJlKCk7CisgICAgZW51bSBjbGFzcyBSZXBvcnRTeW50
YXhWaW9sYXRpb24geyBObywgWWVzIH07CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZpb2xhdGlvbiA9IFJlcG9y
dFN5bnRheFZpb2xhdGlvbjo6WWVzPgorICAgIHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpIHsgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCByZXBv
cnRTeW50YXhWaW9sYXRpb24+KGl0ZXJhdG9yLCBpdGVyYXRvcik7IH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50
YXhWaW9sYXRpb246Olllcz4KKyAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRl
cmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gYm9vbCB0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHZvaWQgc3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1Bl
cmNlbnRFbmNvZGVkRG90KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzV2luZG93c0RyaXZlTGV0dGVy
KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGJvb2wgaXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBzaG91
bGRDb3B5RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBjaGVja0xvY2FsaG9zdENvZGVQb2lu
dChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIFVDaGFyMzIpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgYm9vbCBpc0xvY2FsaG9zdChTdHJpbmdWaWV3
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVTaW5n
bGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29uc3VtZURvdWJsZURvdFBh
dGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBzaXplX3QgY3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJ
bnRlZ2VyVHlwZT4gdm9pZCBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdl
clR5cGUpOworICAgIHRlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgdXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpv
cHRpb25hbDxMQ2hhckJ1ZmZlcj4gZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9u
UG9zaXRpb24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExDaGFyQnVm
ZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9u
KTsKKyAgICBzdGF0aWMgTENoYXJCdWZmZXIgcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNp
emVfdCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBmb3JtVVJMRGVjb2RlKFN0
cmluZ1ZpZXcgaW5wdXQpOworICAgIHN0YXRpYyBib29sIGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9p
bnQoY29uc3QgTENoYXJCdWZmZXImKTsKKyAgICB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4
X3QpOworICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyKTsKKyAgICB2b2lkIGFw
cGVuZFRvQVNDSUlCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmRU
b0FTQ0lJQnVmZmVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qgc2l6ZSkgeyBhcHBl
bmRUb0FTQ0lJQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNoYXJhY3RlcnMp
LCBzaXplKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgZW5j
b2RlTm9uVVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIHNvdXJjZSwgY29uc3QgVVJMVGV4
dEVuY29kaW5nJiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHZvaWQg
Y29weUFTQ0lJU3RyaW5nVW50aWwoY29uc3QgU3RyaW5nJiwgc2l6ZV90IGxlbmd0aCk7CisgICAg
Ym9vbCBjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmKTsKKyAgICBTdHJpbmdW
aWV3IHBhcnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCk7CisgICAgVUNo
YXIgcGFyc2VkRGF0YVZpZXcoc2l6ZV90IHBvc2l0aW9uKTsKKworICAgIHVzaW5nIElQdjRBZGRy
ZXNzID0gdWludDMyX3Q7CisgICAgdm9pZCBzZXJpYWxpemVJUHY0KElQdjRBZGRyZXNzKTsKKyAg
ICBlbnVtIGNsYXNzIElQdjRQYXJzaW5nRXJyb3I7CisgICAgZW51bSBjbGFzcyBJUHY0UGllY2VQ
YXJzaW5nRXJyb3I7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRh
eFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8SVB2NEFkZHJlc3Ms
IElQdjRQYXJzaW5nRXJyb3I+IHBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbj4mLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0
ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRQ
aWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xh
dGlvbik7CisgICAgdXNpbmcgSVB2NkFkZHJlc3MgPSBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PjsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQdjZB
ZGRyZXNzPiBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlv
bmFsPElQdjRBZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdm9pZCBzZXJpYWxpemVJUHY2UGllY2UodWludDE2
X3QgcGllY2UpOworICAgIHZvaWQgc2VyaWFsaXplSVB2NihJUHY2QWRkcmVzcyk7CisKKyAgICBl
bnVtIGNsYXNzIFVSTFBhcnQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
dm9pZCBjb3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQsIGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYp
OworICAgIHN0YXRpYyBzaXplX3QgdXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYsIFVSTFBh
cnQpOworICAgIHZvaWQgcG9wUGF0aCgpOworICAgIGJvb2wgc2hvdWxkUG9wUGF0aCh1bnNpZ25l
ZCk7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY2NjVh
OGQwZmZiOTYzNDkyMDY0NTMxNzA1YmMxY2I5MzNiYjc4ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCisKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1l
c3BhY2UgV1RGIHsKKworUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCit7CisgICAg
Ly8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdo
ZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAv
LyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBu
b3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCisgICAgLy8gY291
bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBl
bmNvZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjaworICAgIC8vIG9udG8gdXNp
bmcgSVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBy
ZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIGJhc2VVUkwsIHRydWUpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0g
YWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEs
IGJhc2VVUkwsIHRydWUpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIGdldFVSTEJ5
dGVzKENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQoreworICAgIENGSW5kZXgg
Ynl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7CisgICAgcmVzdWx0LnJlc2l6
ZShieXRlc0xlbmd0aCk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXMo
dXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVuZ3Ro
KTsKKyAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRlc0xl
bmd0aCk7Cit9CisKK3ZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiByZXN1
bHQpCit7CisgICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAw
KTsKKyAgICBjaGFyKiBieXRlczsKKyAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxp
emVkKGJ5dGVzTGVuZ3RoLCBieXRlcyk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJM
R2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0
aCk7CisgICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNM
ZW5ndGgpOworfQorCitib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25z
dCBVUkwmIHVybCkKK3sKKyAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7
CisKKyAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCisgICAg
ICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9
KTsKKworICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5
dGVzKTsKKyAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5zaXpl
KCkpIH07CisKKyAgICBpZiAoIXVybC5oYXNQYXRoKCkpCisgICAgICAgIHJldHVybiBTdHJpbmdW
aWV3IHsgdXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7CisKKyAgICBhdXRvIHVybFdpdGhv
dXRQYXRoID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwucGF0
aFN0YXJ0KCkgKyAxKTsKKyAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxXaXRo
b3V0UGF0aCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0
cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhYzQ5
YzNmMzdmNjUwMGU5NjNhZWQ1YjA0ZDA5OGYzODUxZjBlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIENGVVJMRXh0cmFzX2gKKyNkZWZpbmUgQ0ZVUkxFeHRyYXNfaAorCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVVJMOwordHlwZWRl
ZiBWZWN0b3I8Y2hhciwgNTEyPiBVUkxDaGFyQnVmZmVyOworCitXVEZfRVhQT1JUX1BSSVZBVEUg
UmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciosIHNp
emVfdCwgQ0ZVUkxSZWYgYmFzZVVSTCA9IDApOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0
VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmLCBDU3RyaW5nJik7CisKK2Jvb2wgaXNDRlVSTFNhbWVP
cmlnaW4oQ0ZVUkxSZWYsIGNvbnN0IFVSTCYpOworCit9CisKKyNlbmRpZiAvLyBDRlVSTEV4dHJh
c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9jZi9VUkxDRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk1OTFlMmIzODRlYmIyMDZkNTIyMjdlYzlj
YmY5ZTc1ZDk1ODI1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1VSTENG
LmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CisKKyNpbmNsdWRlICJDRlVSTEV4dHJhcy5oIgorI2luY2x1ZGUgIlVSTFBhcnNl
ci5oIgorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGVVJMLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworVVJMOjpVUkwoQ0ZVUkxSZWYgdXJs
KQoreworICAgIGlmICghdXJsKSB7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2Ug
VVJMIGhlcmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAgICBnZXRVUkxCeXRlcyh1cmwsIHVy
bEJ5dGVzKTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKHVybEJ5dGVzLmRhdGEoKSk7CisgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKKyNpZiAhVVNFKEZPVU5EQVRJT04pCitSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBX
aGF0IHNob3VsZCB0aGlzIHJldHVybiBmb3IgaW52YWxpZCBVUkxzPworICAgIC8vIEN1cnJlbnRs
eSBpdCB0aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUg
c3RyaW5nIGluIHRoYXQgY2FzZSwKKyAgICAvLyB3aGljaCBpcyBjbGVhcmx5IHdyb25nLgorICAg
IFVSTENoYXJCdWZmZXIgYnVmZmVyOworICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOworICAgIGF1
dG8gY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisKKyAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NGVVJMU2Ft
ZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBjZlVSTDsKK30KKyNlbmRpZgorCitTdHJpbmcgVVJMOjpmaWxlU3lzdGVtUGF0
aCgpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTCA9IGNyZWF0ZUNGVVJM
KCk7CisgICAgaWYgKCFjZlVSTCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisjaWYgUExB
VEZPUk0oV0lOKQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQ
YXRoU3R5bGU7CisjZWxzZQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFBP
U0lYUGF0aFN0eWxlOworI2VuZGlmCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5
c3RlbVBhdGgoY2ZVUkwuZ2V0KCksIHBhdGhTdHlsZSkpLmdldCgpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQzMmU0YjMzZDI0ODdkYjcwZmY0ZDM5
YjBiZDQzZTlmODlhYTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TlNVUkxFeHRyYXMuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA3LCAyMDEyLCAyMDE0IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAK
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAY2xhc3MgTlNTdHJp
bmc7CitAY2xhc3MgTlNVUkw7CisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQT1JUX1BSSVZB
VEUgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopOworV1RGX0VYUE9SVF9QUklW
QVRFIE5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNl
VVJMKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJ
VkFURSBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICopOworV1RGX0VYUE9SVF9Q
UklWQVRFIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsgLy8gUmV0dXJuIHZh
bHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAqZW5j
b2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJy
b3IuCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3Rl
ckJlZm9yZUNvbXBvbmVudChOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOworV1RGX0VYUE9S
VF9QUklWQVRFIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKiwgTlNVUkwgKmJhc2VVUkwpOwor
V1RGX0VYUE9SVF9QUklWQVRFIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOworV1RG
X0VYUE9SVF9QUklWQVRFIE5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKiwg
Q0ZVUkxDb21wb25lbnRUeXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJMV2l0aFVz
ZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOworCitO
U1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
Qk9PTCBpc1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICopOworV1RGX0VYUE9SVF9QUklWQVRFIEJP
T0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKik7CisKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmZjOGYxNjhkZTA1
NmM1YjJhMjk3MjFmMGJkN2I5ZjZmMTIzNDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTAsMCArMSwxMjM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0
ICJOU1VSTEV4dHJhcy5oIgorCisjaW1wb3J0ICJDRlVSTEV4dHJhcy5oIgorI2ltcG9ydCAiVVJM
UGFyc2VyLmgiCisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi9IZXhOdW1i
ZXIuaD4KKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8dW5pY29kZS91Y2hh
ci5oPgorI2ltcG9ydCA8dW5pY29kZS91aWRuYS5oPgorI2ltcG9ydCA8dW5pY29kZS91c2NyaXB0
Lmg+CisKKy8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBu
YW1lLgorLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSURO
IGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgorI2RlZmluZSBIT1NUX05B
TUVfQlVGRkVSX0xFTkdUSCAyMDQ4CisjZGVmaW5lIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIIDIw
NDgKKwordHlwZWRlZiB2b2lkICgqIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uKShOU1N0cmlu
ZyAqLCBOU1JhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+Jik7CisKK3N0YXRpYyB1aW50
MzJfdCBJRE5TY3JpcHRXaGl0ZUxpc3RbKFVTQ1JJUFRfQ09ERV9MSU1JVCArIDMxKSAvIDMyXTsK
KworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBib29sIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFy
YWN0ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgcmV0dXJuIGNvZGVQb2ludCA9PSAweDA1
NDggfHwgY29kZVBvaW50ID09IDB4MDU0RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQ
b2ludCA9PSAweDA1N0Q7Cit9CisKK3N0YXRpYyBib29sIGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0
ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19F
UlJPUjsKKyAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjb2RlUG9p
bnQsICZlcnJvcik7CisgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgeworICAgICAgICBM
T0dfRVJST1IoImdvdCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czog
JWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
c2NyaXB0ID09IFVTQ1JJUFRfQVJNRU5JQU47Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIo
Q2hhcmFjdGVyVHlwZSBjaGFyQ29kZSkKK3sKKyAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1
YXRpb24oY2hhckNvZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGluZ3Mg
dGhlIFVSTCBQYXJzZXIgcmVqZWN0czoKKyAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7CisgICAgY2Fz
ZSAnIyc6CisgICAgY2FzZSAnJSc6CisgICAgY2FzZSAnLyc6CisgICAgY2FzZSAnOic6CisgICAg
Y2FzZSAnPyc6CisgICAgY2FzZSAnQCc6CisgICAgY2FzZSAnWyc6CisgICAgY2FzZSAnXFwnOgor
ICAgIGNhc2UgJ10nOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCisKKworc3RhdGljIEJPT0wgaXNMb29rYWxpa2VD
aGFyYWN0ZXIoc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIz
MiBjaGFyQ29kZSkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5n
IGFzIHVuc2FmZSwgbG9va2FsaWtlIGNoYXJhY3RlcnM6CisgICAgLy8gYW55IG5vbi1wcmludGFi
bGUgY2hhcmFjdGVyLCBhbnkgY2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKKyAg
ICAvLyBhbnkgaWdub3JhYmxlIGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRl
ZCB0byBsb2Nrcy4KKyAgICAKKyAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3Rl
cnMgaW4gTW96aWxsYSdzIGJsYWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3
b3JrLklETi5ibGFja2xpc3RfY2hhcnM+LgorCisgICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVy
cyBoZXJlIHdpbGwgbmV2ZXIgYXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgorICAgIC8vIEZv
ciBleGFtcGxlLCBJQ1UgdHJhbnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNl
IGFuZCBtb3N0CisgICAgLy8gc2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUg
b2YgdGhlIHR3byBjYWxsZXJzIHVzZXMgdGhpcworICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBo
YXZlIG5vdCBiZWVuIHByb2Nlc3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgor
ICAgIAorICAgIGlmICghdV9pc3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hh
ckNvZGUpIHx8IHVfaGFzQmluYXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdO
T1JBQkxFX0NPREVfUE9JTlQpKQorICAgICAgICByZXR1cm4gWUVTOworICAgIAorICAgIHN3aXRj
aCAoY2hhckNvZGUpIHsKKyAgICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBP
TkUgUVVBUlRFUiAqLworICAgICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9OIE9O
RSBIQUxGICovCisgICAgICAgIGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUg
UVVBUlRFUlMgKi8KKyAgICAgICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRFUiBJ
IFdJVEggQUNVVEUgKi8KKyAgICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBSRVRS
T0ZMRVggQ0xJQ0sgKi8KKyAgICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExFVFRF
UiBBTFBIQSAqLworICAgICAgICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIFND
UklQVCBHICovCisgICAgICAgIGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJQU5H
VUxBUiBDT0xPTiAqLworICAgICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JUIFNU
Uk9LRSBPVkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQg
U09MSURVUyBPVkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcgTE9O
RyBTT0xJRFVTIE9WRVJMQVkgKi8KKyAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZV
TEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICov
CisgICAgICAgIGNhc2UgMHgwNUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRICov
CisgICAgICAgIGNhc2UgMHgwNUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRICov
CisgICAgICAgIGNhc2UgMHgwNUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICov
CisgICAgICAgIGNhc2UgMHgwNjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04gKi8K
KyAgICAgICAgY2FzZSAweDA2MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJ
R04gKi8KKyAgICAgICAgY2FzZSAweDA2NTA6IC8qIEFSQUJJQyBLQVNSQSAqLworICAgICAgICBj
YXNlIDB4MDY2MDogLyogQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KKyAgICAgICAgY2FzZSAw
eDA2NkE6IC8qIEFSQUJJQyBQRVJDRU5UIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDA2RDQ6IC8q
IEFSQUJJQyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDA2RjA6IC8qIEVYVEVOREVEIEFS
QUJJQyBJTkRJQyBESUdJVCBaRVJPICovCisgICAgICAgIGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMg
U1VQUkFMSU5FQVIgRlVMTCBTVE9QICovCisgICAgICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMg
U1VCTElORUFSIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MDcwMzogLyogU1lSSUFDIFNV
UFJBTElORUFSIENPTE9OICovCisgICAgICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJQUMgU1VCTElO
RUFSIENPTE9OICovCisgICAgICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQ
VU5DVFVBVElPTiAqLworICAgICAgICBjYXNlIDB4MUQwNDogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgQyAqLworICAgICAgICBjYXNlIDB4MUQwRjogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgTyAqLworICAgICAgICBjYXNlIDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgVSAqLworICAgICAgICBjYXNlIDB4MUQyMDogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgViAqLworICAgICAgICBjYXNlIDB4MUQyMTogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgVyAqLworICAgICAgICBjYXNlIDB4MUQyMjogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgWiAqLworICAgICAgICBjYXNlIDB4MUVDRDogLyogTEFUSU4gU01BTEwgTEVUVEVS
IE8gV0lUSCBET1QgQkVMT1cgKi8KKyAgICAgICAgY2FzZSAweDIwMTA6IC8qIEhZUEhFTiAqLwor
ICAgICAgICBjYXNlIDB4MjAxMTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLworICAgICAgICBj
YXNlIDB4MjAyNDogLyogT05FIERPVCBMRUFERVIgKi8KKyAgICAgICAgY2FzZSAweDIwMjc6IC8q
IEhZUEhFTkFUSU9OIFBPSU5UICovCisgICAgICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVG
VC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4MjAzQTog
LyogU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICovCisgICAgICAg
IGNhc2UgMHgyMDQxOiAvKiBDQVJFVCBJTlNFUlRJT04gUE9JTlQgKi8KKyAgICAgICAgY2FzZSAw
eDIwNDQ6IC8qIEZSQUNUSU9OIFNMQVNIICovCisgICAgICAgIGNhc2UgMHgyMDUyOiAvKiBDT01N
RVJDSUFMIE1JTlVTIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFD
VElPTiBPTkUgVEhJUkQgKi8KKyAgICAgICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElP
TiBUV08gVEhJUkRTICovCisgICAgICAgIGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04g
T05FIEZJRlRIICovCisgICAgICAgIGNhc2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdP
IEZJRlRIUyAqLworICAgICAgICBjYXNlIDB4MjE1NzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVF
IEZJRlRIUyAqLworICAgICAgICBjYXNlIDB4MjE1ODogLyogVlVMR0FSIEZSQUNUSU9OIEZPVVIg
RklGVEhTICovCisgICAgICAgIGNhc2UgMHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJ
WFRIICovCisgICAgICAgIGNhc2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhU
SFMgKi8KKyAgICAgICAgY2FzZSAweDIxNUI6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFQg
Ki8KKyAgICAgICAgY2FzZSAweDIxNUM6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhT
ICovCisgICAgICAgIGNhc2UgMHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhT
ICovCisgICAgICAgIGNhc2UgMHgyMTVFOiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRI
UyAqLworICAgICAgICBjYXNlIDB4MjE1RjogLyogRlJBQ1RJT04gTlVNRVJBVE9SIE9ORSAqLwor
ICAgICAgICBjYXNlIDB4MjIxMjogLyogTUlOVVMgU0lHTiAqLworICAgICAgICBjYXNlIDB4MjIx
NTogLyogRElWSVNJT04gU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDIyMTY6IC8qIFNFVCBNSU5V
UyAqLworICAgICAgICBjYXNlIDB4MjIzNjogLyogUkFUSU8gKi8KKyAgICAgICAgY2FzZSAweDIz
M0Y6IC8qIEFQTCBGVU5DVElPTkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KKyAgICAgICAgY2FzZSAw
eDIzQUU6IC8qIElOVEVHUkFMIEVYVEVOU0lPTiAqLworICAgICAgICBjYXNlIDB4MjQ0QTogLyog
T0NSIERPVUJMRSBCQUNLU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlU
eXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVG
VCAqLworICAgICAgICBjYXNlIDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBM
SUdIVCBESUFHT05BTCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUICovCisgICAgICAgIGNhc2Ug
MHgyOUY2OiAvKiBTT0xJRFVTIFdJVEggT1ZFUkJBUiAqLworICAgICAgICBjYXNlIDB4MjlGODog
LyogQklHIFNPTElEVVMgKi8KKyAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVT
IEJJTkFSWSBSRUxBVElPTiAqLworICAgICAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElE
VVMgT1BFUkFUT1IgKi8KKyAgICAgICAgY2FzZSAweDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NS
SVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIFJJR0hUICovCisgICAgICAgIGNhc2UgMHgyRkYxOiAv
KiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KKyAg
ICAgICAgY2FzZSAweDJGRjI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBM
RUZUIFRPIE1JRERMRSBBTkQgUklHSFQgKi8KKyAgICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9H
UkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICov
CisgICAgICAgIGNhc2UgMHgyRkY0OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNU
RVIgRlVMTCBTVVJST1VORCAqLworICAgICAgICBjYXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMg
REVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQUJPVkUgKi8KKyAgICAgICAgY2Fz
ZSAweDJGRjY6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBG
Uk9NIEJFTE9XICovCisgICAgICAgIGNhc2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQ
VElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMRUZUICovCisgICAgICAgIGNhc2UgMHgyRkY4
OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBF
UiBMRUZUICovCisgICAgICAgIGNhc2UgMHgyRkY5OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElP
TiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBSSUdIVCAqLworICAgICAgICBjYXNlIDB4
MkZGQTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00g
TE9XRVIgTEVGVCAqLworICAgICAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJ
UFRJT04gQ0hBUkFDVEVSIE9WRVJMQUlEICovCisgICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVP
R1JBUEhJQyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUg
QlJBQ0tFVCAqLworICAgICAgICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBC
UkFDS0VUICovCisgICAgICAgIGNhc2UgMHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBC
UkFDS0VUICovCisgICAgICAgIGNhc2UgMHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBN
QVJLIFVQUEVSIEhBTEYgKi8KKyAgICAgICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEg
UkVQRUFUIE1BUksgTE9XRVIgSEFMRiAqLworICAgICAgICBjYXNlIDB4MzIxRDogLyogUEFSRU5U
SEVTSVpFRCBLT1JFQU4gQ0hBUkFDVEVSIE9KRU9OICovCisgICAgICAgIGNhc2UgMHgzMjFFOiAv
KiBQQVJFTlRIRVNJWkVEIEtPUkVBTiBDSEFSQUNURVIgTyBIVSAqLworICAgICAgICBjYXNlIDB4
MzNBRTogLyogU1FVQVJFIFJBRCBPVkVSIFMgKi8KKyAgICAgICAgY2FzZSAweDMzQUY6IC8qIFNR
VUFSRSBSQUQgT1ZFUiBTIFNRVUFSRUQgKi8KKyAgICAgICAgY2FzZSAweDMzQzY6IC8qIFNRVUFS
RSBDIE9WRVIgS0cgKi8KKyAgICAgICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9WRVIgTSAq
LworICAgICAgICBjYXNlIDB4MDVCOTogLyogSEVCUkVXIFBPSU5UIEhPTEFNICovCisgICAgICAg
IGNhc2UgMHgwNUJBOiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZBViAqLworICAg
ICAgICBjYXNlIDB4MDVDMTogLyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCisgICAgICAgIGNh
c2UgMHgwNUMyOiAvKiBIRUJSRVcgUE9JTlQgU0lOIERPVCAqLworICAgICAgICBjYXNlIDB4MDVD
NDogLyogSEVCUkVXIE1BUksgVVBQRVIgRE9UICovCisgICAgICAgIGNhc2UgMHhBNzMxOiAvKiBM
QVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBTICovCisgICAgICAgIGNhc2UgMHhBNzcxOiAvKiBM
QVRJTiBTTUFMTCBMRVRURVIgRFVNICovCisgICAgICAgIGNhc2UgMHhBNzg5OiAvKiBNT0RJRklF
UiBMRVRURVIgQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBG
T1JNIEZPUiBWRVJUSUNBTCBTRU1JQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZFMTU6IC8qIFBS
RVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFWENMQU1BVElPTiBNQVJLICovCisgICAgICAg
IGNhc2UgMHhGRTNGOiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdM
RSBCUkFDS0VUICovCisgICAgICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNF
IFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRP
UlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZGMEU6IC8qIEZVTExXSURU
SCBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09MSURV
UyAqLworICAgICAgICBjYXNlIDB4RkY2MTogLyogSEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwg
U1RPUCAqLworICAgICAgICBjYXNlIDB4RkZGQzogLyogT0JKRUNUIFJFUExBQ0VNRU5UIENIQVJB
Q1RFUiAqLworICAgICAgICBjYXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICov
CisgICAgICAgIGNhc2UgMHgxRjUwRjogLyogTE9DSyBXSVRIIElOSyBQRU4gKi8KKyAgICAgICAg
Y2FzZSAweDFGNTEwOiAvKiBDTE9TRUQgTE9DSyBXSVRIIEtFWSAqLworICAgICAgICBjYXNlIDB4
MUY1MTE6IC8qIEtFWSAqLworICAgICAgICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sgKi8KKyAgICAg
ICAgY2FzZSAweDFGNTEzOiAvKiBPUEVOIExPQ0sgKi8KKyAgICAgICAgICAgIHJldHVybiBZRVM7
CisgICAgICAgIGNhc2UgMHgwMzA3OiAvKiBDT01CSU5JTkcgRE9UIEFCT1ZFICovCisgICAgICAg
ICAgICByZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMjM3IC8qIExBVElOIFNNQUxMIExF
VFRFUiBET1RMRVNTIEogKi8KKyAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9
PSAweDAxMzEgLyogTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSSAqLworICAgICAgICAgICAg
ICAgIHx8IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExFVFRFUiBWQVYg
Ki8KKyAgICAgICAgY2FzZSAweDA1NDg6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPICov
CisgICAgICAgIGNhc2UgMHgwNTREOiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUggKi8K
KyAgICAgICAgY2FzZSAweDA1Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLworICAg
ICAgICBjYXNlIDB4MDU3RDogLyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNFSCAqLworICAgICAg
ICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50CisgICAgICAgICAgICAgICAgJiYgIWlzQVND
SUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCisg
ICAgICAgICAgICAgICAgJiYgIWlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJldmlvdXNDb2Rl
UG9pbnQudmFsdWUoKSk7CisgICAgICAgIGNhc2UgJy4nOgorICAgICAgICAgICAgcmV0dXJuIE5P
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50
CisgICAgICAgICAgICAgICAgJiYgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91
c0NvZGVQb2ludC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICYmICEoaXNBcm1lbmlhblNjcmlw
dENoYXJhY3RlcihjaGFyQ29kZSkgfHwgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIo
Y2hhckNvZGUpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdoaXRlTGlzdElETlNjcmlwdChj
b25zdCBjaGFyKiBzY3JpcHROYW1lKQoreworICAgIGludDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9w
ZXJ0eVZhbHVlRW51bShVQ0hBUl9TQ1JJUFQsIHNjcmlwdE5hbWUpOworICAgIGlmIChzY3JpcHQg
Pj0gMCAmJiBzY3JpcHQgPCBVU0NSSVBUX0NPREVfTElNSVQpIHsKKyAgICAgICAgc2l6ZV90IGlu
ZGV4ID0gc2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQg
JSAzMik7CisgICAgICAgIElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gfD0gbWFzazsKKyAgICB9
Cit9CisKK3N0YXRpYyBCT09MIHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpm
aWxlbmFtZSkKK3sKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gTk87CisKKyAg
ICBGSUxFICpmaWxlID0gZm9wZW4oW2ZpbGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0s
ICJyIik7CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gTk87CisgICAgCisgICAgLy8g
UmVhZCBhIHdvcmQgYXQgYSB0aW1lLgorICAgIC8vIEFsbG93IGNvbW1lbnRzLCBzdGFydGluZyB3
aXRoICMgY2hhcmFjdGVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgICAgd2hpbGUgKDEpIHsK
KyAgICAgICAgLy8gU2tpcCBhIGNvbW1lbnQgaWYgcHJlc2VudC4KKyAgICAgICAgaWYgKGZzY2Fu
ZihmaWxlLCAiICMlKlteXG5ccl0lKltcblxyXSIpID09IEVPRikKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAKKyAgICAgICAgLy8gUmVhZCBhIHNjcmlwdCBuYW1lIGlmIHByZXNlbnQuCisg
ICAgICAgIGNoYXIgd29yZFszM107CisgICAgICAgIGludCByZXN1bHQgPSBmc2NhbmYoZmlsZSwg
IiAlMzJbXiMgXHRcblxyXSUqW14jIFx0XG5ccl0gIiwgd29yZCk7CisgICAgICAgIGlmIChyZXN1
bHQgPT0gRU9GKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBpZiAocmVz
dWx0ID09IDEpIHsKKyAgICAgICAgICAgIC8vIEdvdCBhIHdvcmQsIG1hcCB0byBzY3JpcHQgY29k
ZSBhbmQgcHV0IGl0IGludG8gdGhlIGFycmF5LgorICAgICAgICAgICAgd2hpdGVMaXN0SUROU2Ny
aXB0KHdvcmQpOworICAgICAgICB9CisgICAgfQorICAgIGZjbG9zZShmaWxlKTsKKyAgICByZXR1
cm4gWUVTOworfQorCitzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxp
c3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCit7CisgICAgc3RhdGljIGRp
c3BhdGNoX29uY2VfdCBmbGFnOworICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57CisgICAgICAg
IC8vIFJlYWQgd2hpdGUgbGlzdCBmcm9tIGxpYnJhcnkuCisgICAgICAgIE5TQXJyYXkgKmRpcnMg
PSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3Rvcnks
IE5TQWxsRG9tYWluc01hc2ssIFlFUyk7CisgICAgICAgIGludCBudW1EaXJzID0gW2RpcnMgY291
bnRdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykgeworICAgICAg
ICAgICAgaWYgKHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4
OmldIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50
eHQiXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0
IGNoYXIqIGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3RbMjBdID0geworICAgICAgICAgICAgIkNv
bW1vbiIsCisgICAgICAgICAgICAiSW5oZXJpdGVkIiwKKyAgICAgICAgICAgICJBcmFiaWMiLAor
ICAgICAgICAgICAgIkFybWVuaWFuIiwKKyAgICAgICAgICAgICJCb3BvbW9mbyIsCisgICAgICAg
ICAgICAiQ2FuYWRpYW5fQWJvcmlnaW5hbCIsCisgICAgICAgICAgICAiRGV2YW5hZ2FyaSIsCisg
ICAgICAgICAgICAiRGVzZXJldCIsCisgICAgICAgICAgICAiR3VqYXJhdGkiLAorICAgICAgICAg
ICAgIkd1cm11a2hpIiwKKyAgICAgICAgICAgICJIYW5ndWwiLAorICAgICAgICAgICAgIkhhbiIs
CisgICAgICAgICAgICAiSGVicmV3IiwKKyAgICAgICAgICAgICJIaXJhZ2FuYSIsCisgICAgICAg
ICAgICAiS2F0YWthbmFfT3JfSGlyYWdhbmEiLAorICAgICAgICAgICAgIkthdGFrYW5hIiwKKyAg
ICAgICAgICAgICJMYXRpbiIsCisgICAgICAgICAgICAiVGFtaWwiLAorICAgICAgICAgICAgIlRo
YWkiLAorICAgICAgICAgICAgIllpIiwKKyAgICAgICAgfTsKKyAgICAgICAgZm9yIChjb25zdCBj
aGFyKiBzY3JpcHROYW1lIDogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKKyAgICAgICAgICAg
IHdoaXRlTGlzdElETlNjcmlwdChzY3JpcHROYW1lKTsKKyAgICB9KTsKKyAgICAKKyAgICBpbnQz
Ml90IGkgPSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7
CisgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgVUNoYXIzMiBjOworICAgICAgICBV
MTZfTkVYVChidWZmZXIsIGksIGxlbmd0aCwgYykKKyAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9
IFVfWkVST19FUlJPUjsKKyAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRT
Y3JpcHQoYywgJmVycm9yKTsKKyAgICAgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29r
IGF0IHNjcmlwdHM6ICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAg
ICB9CisgICAgICAgIGlmIChzY3JpcHQgPCAwKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoImdv
dCBuZWdhdGl2ZSBudW1iZXIgZm9yIHNjcmlwdCBjb2RlIGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7
CisgICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNjcmlwdCA+
PSBVU0NSSVBUX0NPREVfTElNSVQpCisgICAgICAgICAgICByZXR1cm4gTk87CisKKyAgICAgICAg
c2l6ZV90IGluZGV4ID0gc2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8
IChzY3JpcHQgJSAzMik7CisgICAgICAgIGlmICghKElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0g
JiBtYXNrKSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgCisgICAgICAgIGlmIChp
c0xvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykpCisgICAgICAgICAgICBy
ZXR1cm4gTk87CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKKyAgICB9CisgICAgcmV0
dXJuIFlFUzsKK30KKworc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2Vk
QnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RG
OjpGdW5jdGlvbjxib29sKFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKK3sKKyAgICBBU1NF
UlQobGVuZ3RoID4gMCk7CisKKyAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0g
MDsgLS1pKSB7CisgICAgICAgIFVDaGFyIGNoID0gYnVmZmVyW2ldOworICAgICAgICAKKyAgICAg
ICAgaWYgKGNoYXJhY3RlcklzQWxsb3dlZChjaCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgCisgICAgICAgIC8vIE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExv
d2VyIGxldmVsIHJlZ2lzdHJhcnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgorICAgICAgICBp
ZiAoY2ggPT0gJy4nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisjZGVmaW5lIENIRUNLX1JV
TEVTX0lGX1NVRkZJWF9NQVRDSEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKKyAgICB7IFwKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBz
aXplb2Yoc3VmZml4WzBdKTsgXAorICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYm
IDAgPT0gbWVtY21wKGJ1ZmZlciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXpl
b2Yoc3VmZml4KSkpIFwKKyAgICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFt
ZUFsbG93ZWRCeVRMRFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlv
bik7IFwKKyAgICB9CisKK3N0YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIo
VUNoYXIgY2gpCit7CisgICAgLy8gT25seSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMg
YW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8
PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICct
JzsKK30KKworc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0
IFVDaGFyKiBidWZmZXIsIGludDMyX3QgbGVuZ3RoKQoreworICAgIC8vIFNraXAgdHJhaWxpbmcg
ZG90IGZvciByb290IGRvbWFpbi4KKyAgICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFdID09ICcuJykK
KyAgICAgICAgbGVuZ3RoLS07CisKKyAgICAvLyBodHRwOi8vY2N0bGQucnUvZmlsZXMvcGRmL2Rv
Y3MvcnVsZXNfcnUtcmYucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9
IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBFUgorICAgICAgICAweDA0NDQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgorICAgIH07
CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFu
RG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vcnVzbmFtZXMucnUvcnVsZXMu
cGwKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNSVVNbXSA9IHsKKyAgICAgICAgJy4n
LAorICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICAgICAw
eDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCisgICAgICAgIDB4MDQ0MSAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhf
TUFUQ0hFUyhjeXJpbGxpY1JVUywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAg
ICAvLyBodHRwOi8vcnUuZmFpdGlkLm9yZy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2
YS9pZG4KKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9IHsKKyAgICAg
ICAgJy4nLAorICAgICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQorICAg
ICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCisgICAgICAgIDB4MDQ0MSwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEtBCisgICAgICAgIDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IFZFCisgICAgICAgIDB4MDQzMCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICB9Owor
ICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZBLCBpc1J1c3Np
YW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9m
b3J1c2VyL2RvY3MvcmVncnVsZXMucGhwCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGlj
REVUSVtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01B
TEwgTEVUVEVSIERFCisgICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElF
CisgICAgICAgIDB4MDQ0MiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCisgICAgICAgIDB4
MDQzOCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKKyAgICB9OworICAgIENIRUNLX1JVTEVT
X0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljREVUSSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJh
Y3Rlcik7CisKKyAgICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBydWxlcyBub3QgcHVibGlzaGVk
LiBUaGUgd29yZCBpcyBSdXNzaWFuLCBzbyBvbmx5IGFsbG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0
aW1lLAorICAgIC8vIGFsdGhvdWdoIHdlIG1heSBuZWVkIHRvIHJldmlzZSB0aGUgY2hlY2tzIGlm
IHRoaXMgZW5kcyB1cCBiZWluZyB1c2VkIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBS
dXNzaWEuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT05MQVlOW10gPSB7CisgICAg
ICAgICcuJywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAg
ICAgICAweDA0M0QsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICAgICAweDA0M0Is
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAorICAgICAgICAweDA0MzAsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IFNIT1JUIEkKKyAgICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAg
ICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT05MQVlOLCBp
c1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9y
ZyAtIHNhbWUgYXMgYWJvdmUuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU0FZVFtd
ID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEVTCisgICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICAg
ICAgMHgwNDM5LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQorICAgICAgICAweDA0
NDIgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNf
SUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNTQVlULCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFj
dGVyKTsKKworICAgIC8vIGh0dHA6Ly9waXIub3JnL3Byb2R1Y3RzL29wci1kb21haW4vIC0gcnVs
ZXMgbm90IHB1Ymxpc2hlZC4gQWNjb3JkaW5nIHRvIHRoZSByZWdpc3RyeSBzaXRlLAorICAgIC8v
IHRoZSBpbnRlbmRlZCBhdWRpZW5jZSBpcyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xhdmljLXNwZWFr
aW5nIG1hcmtldHMiLgorICAgIC8vIENocm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lh
biwgc28gc3RpY2tpbmcgd2l0aCB0aGF0IGZvciBub3cuCisgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGN5cmlsbGljT1JHW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgTworICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBFUgorICAgICAgICAweDA0MzMgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKKyAg
ICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1
c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxl
cy5odG1sCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7CisgICAgICAg
ICcuJywKKyAgICAgICAgMHgwNDMxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKyAgICAg
ICAgMHgwNDM1LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKyAgICAgICAgMHgwNDNCICAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NV
RkZJWF9NQVRDSEVTKGN5cmlsbGljQkVMLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBSdXNz
aWFuIGFuZCBCeWVsb3J1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93
ZWQuCisgICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2gg
PT0gMHgwNDUxIHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5
IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0
cDovL3d3dy5uaWMua3ovZG9jcy9wb3J5YWRva192bmVkcmVuaXlhX2thel9ydS5wZGYKKyAgICBz
dGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNLQVpbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAg
ICAweDA0OUIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAg
ICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzNyAg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9T
VUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0tBWiwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gS2F6
YWtoIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1
cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9
PSAweDA0RDkgfHwgY2ggPT0gMHgwNDkzIHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMg
fHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0g
MHgwNEJCIHx8IGNoID09IDB4MDQ1NiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsK
KyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1
bGVzJTIwb2YlMjBVS1JfdjQuMC5wZGYKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNV
S1JbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBVCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCisg
ICAgICAgIDB4MDQ0MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgfTsKKyAgICBD
SEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1VLUiwgW10oVUNoYXIgY2gpIHsK
KyAgICAgICAgLy8gUnVzc2lhbiBhbmQgVWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFz
aGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAw
eDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8
IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9
PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBodHRwOi8vd3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1F
TlRJL2lkbi1zcmItcG9saWN5LXRlcm1zb2Z1c2UtdjEuNC1lbmcucGRmCisgICAgc3RhdGljIGNv
bnN0IFVDaGFyIGN5cmlsbGljU1JCW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQx
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDMxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgQkUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGlj
U1JCLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBTZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBh
bmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBj
aCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAw
eDA0NTIgfHwgY2ggPT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwg
Y2ggPT0gMHgwNDVCIHx8IGNoID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09
ICctJzsKKyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly9tYXJuZXQubWsvZG9jL3ByYXZpbG5pay1t
ay1ta2QucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTUtEW10gPSB7CisgICAg
ICAgICcuJywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAg
ICAgICAgMHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyAgICAgICAgMHgwNDM0
ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTUtELCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBN
YWNlZG9uaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAg
ICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0Eg
JiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1IHx8IGNoID09
IDB4MDQ1OCB8fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8
fCBjaCA9PSAweDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7
CisKKyAgICAvLyBodHRwczovL3d3dy5tb24ubW4vY3MvCisgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGN5cmlsbGljTU9OW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgTworICAgICAgICAweDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAg
IH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT04sIFtdKFVD
aGFyIGNoKSB7CisgICAgICAgIC8vIE1vbmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hl
cyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgw
NDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRBRiB8fCBp
c0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9KTsKKworICAgIC8vIE5vdCBhIGtu
b3duIHRvcCBsZXZlbCBkb21haW4gd2l0aCBzcGVjaWFsIHJ1bGVzLgorICAgIHJldHVybiBOTzsK
K30KKworLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2Fy
eS4KKy8vIElmIG1ha2VTdHJpbmcgaXMgTk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBu
aWwgb3Igc2VsZiB0byBpbmRpY2F0ZSBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KKy8vIElmIG1ha2VT
dHJpbmcgaXMgWUVTLCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBw
ZWQgc3RyaW5nLgorc3RhdGljIE5TU3RyaW5nICptYXBIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmlu
ZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MIGVuY29kZSwgQk9PTCBtYWtlU3RyaW5nLCBC
T09MICplcnJvcikKK3sKKyAgICBpZiAocmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1FX0JVRkZFUl9M
RU5HVEgpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKCFbc3RyaW5nIGxlbmd0
aF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgVUNoYXIgc291cmNlQnVmZmVyW0hP
U1RfTkFNRV9CVUZGRVJfTEVOR1RIXTsKKyAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NU
X05BTUVfQlVGRkVSX0xFTkdUSF07CisgICAgCisgICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJh
bmdlT2ZTdHJpbmc6QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9j
YXRpb24gIT0gTlNOb3RGb3VuZCkgeworICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0
cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VdOworICAgICAgICBzdWJzdHJpbmcgPSBDRkJy
aWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMo
bnVsbHB0ciwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7CisgICAgICAgIGlm
IChzdWJzdHJpbmcpIHsKKyAgICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKKyAgICAgICAg
ICAgIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBpbnQgbGVuZ3RoID0gcmFuZ2UubGVuZ3RoOworICAgIFtzdHJpbmcg
Z2V0Q2hhcmFjdGVyczpzb3VyY2VCdWZmZXIgcmFuZ2U6cmFuZ2VdOworICAgIAorICAgIFVFcnJv
ckNvZGUgdWVycm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0
YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJz
Q29udmVydGVkID0gKGVuY29kZSA/IHVpZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5p
Y29kZSkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksIHNv
dXJjZUJ1ZmZlciwgbGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9M
RU5HVEgsICZwcm9jZXNzaW5nRGV0YWlscywgJnVlcnJvcik7CisgICAgaWYgKGxlbmd0aCAmJiAo
VV9GQUlMVVJFKHVlcnJvcikgfHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkgeworICAgICAg
ICAqZXJyb3IgPSBZRVM7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIAorICAgIGlm
IChudW1DaGFyYWN0ZXJzQ29udmVydGVkID09IGxlbmd0aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZl
ciwgZGVzdGluYXRpb25CdWZmZXIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIAorICAgIGlmICghZW5jb2RlICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5T
Y3JpcHRXaGl0ZUxpc3QoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQp
ICYmICFhbGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoZGVzdGluYXRpb25CdWZmZXIsIG51
bUNoYXJhY3RlcnNDb252ZXJ0ZWQpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJl
dHVybiBtYWtlU3RyaW5nID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0
aW9uQnVmZmVyIGxlbmd0aDpudW1DaGFyYWN0ZXJzQ29udmVydGVkXSA6IHN0cmluZzsKK30KKwor
c3RhdGljIEJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJp
bmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQoreworICAgIHJldHVybiBtYXBIb3N0TmFt
ZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBOTywgTk8sIGVycm9yKSAhPSBuaWw7Cit9CisgCitz
dGF0aWMgQk9PTCBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmlu
ZywgTlNSYW5nZSByYW5nZSwgQk9PTCAqZXJyb3IpCit7CisgICAgcmV0dXJuIG1hcEhvc3ROYW1l
V2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIFlFUywgIE5PLCBlcnJvcikgIT0gbmlsOworfQorCitz
dGF0aWMgTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcs
IE5TUmFuZ2UgcmFuZ2UpCit7CisgICAgQk9PTCBlcnJvciA9IE5POworICAgIE5TU3RyaW5nICpo
b3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgTk8sIFlFUywgJmVycm9y
KTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICFob3N0
ID8gc3RyaW5nIDogaG9zdDsKK30KKworc3RhdGljIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdp
dGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQoreworICAgIEJPT0wgZXJy
b3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmlu
ZywgcmFuZ2UsIFlFUywgWUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQorCitOU1N0cmlu
ZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIGVycm9yID0g
Tk87CisgICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIE5T
TWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSksIE5PLCBZRVMsICZlcnJvcik7CisgICAgaWYg
KGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6
IGhvc3Q7Cit9CisKK05TU3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQor
eworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1l
V2l0aFJhbmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgWUVTLCBZ
RVMsICZlcnJvcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJl
dHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5n
ZXNUaGF0TmVlZE1hcHBpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXksIEJPT0wgZW5jb2RlKQoreworICAgIC8vIEdlbmVy
YWxseSwgd2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25l
IGhvc3QgbmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGluZy4KKyAgICAvLyBUaGVyZWZvcmUs
IHdlIHVzZSBuaWwgdG8gaW5kaWNhdGUgbm8gbWFwcGluZyBoZXJlIGFuZCBhbiBlbXB0eSBhcnJh
eSB0byBpbmRpY2F0ZSBlcnJvci4KKworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBCT09MIG5l
ZWRzTWFwcGluZyA9IGVuY29kZSA/IGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShzdHJp
bmcsIHJhbmdlLCAmZXJyb3IpIDogaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKHN0cmlu
ZywgcmFuZ2UsICZlcnJvcik7CisgICAgaWYgKCFlcnJvciAmJiAhbmVlZHNNYXBwaW5nKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgYXJyYXkgPSBhZG9w
dE5TKFtOU011dGFibGVBcnJheSBuZXddKTsKKworICAgIGlmICghZXJyb3IpCisgICAgICAgIFth
cnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKK30KKworc3Rh
dGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcoTlNTdHJpbmcgKnN0cmluZywg
TlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCit7CisgICAg
cmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXks
IFlFUyk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZERlY29kaW5nKE5T
U3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4m
IGFycmF5KQoreworICAgIHJldHVybiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmlu
ZywgcmFuZ2UsIGFycmF5LCBOTyk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5j
dGlvblRvTWFpbFRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIFN0cmluZ1JhbmdlQXBwbGll
ckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQoreworICAgIC8v
IEluIGEgbWFpbHRvOiBVUkwsIGhvc3QgbmFtZXMgY29tZSBhZnRlciBhICdAJyBjaGFyYWN0ZXIg
YW5kIGVuZCB3aXRoIGEgJz4nIG9yICcsJyBvciAnPycgY2hhcmFjdGVyLgorICAgIC8vIFNraXAg
cXVvdGVkIHN0cmluZ3Mgc28gdGhhdCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29uZnVzZSB1
cy4KKyAgICAvLyBXaGVuIHdlIGZpbmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFzdCB0aGUg
cGFydCBvZiB0aGUgVVJMIHRoYXQgY29udGFpbnMgaG9zdCBuYW1lcy4KKyAgICAKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5hbWVPclN0
cmluZ1N0YXJ0Q2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hh
cmFjdGVyc0luU3RyaW5nOkAiXCJAPyJdOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBob3N0TmFtZUVuZENoYXJhY3RlcnMgPSBbTlNDaGFyYWN0
ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIj4sPyJdOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBxdW90ZWRTdHJp
bmdDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJz
SW5TdHJpbmc6QCJcIlxcIl07CisgICAgCisgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0
cmluZyBsZW5ndGhdOworICAgIE5TUmFuZ2UgcmVtYWluaW5nID0gTlNNYWtlUmFuZ2UoMCwgc3Ry
aW5nTGVuZ3RoKTsKKyAgICAKKyAgICB3aGlsZSAoMSkgeworICAgICAgICAvLyBGaW5kIHN0YXJ0
IG9mIGhvc3QgbmFtZSBvciBvZiBxdW90ZWQgc3RyaW5nLgorICAgICAgICBOU1JhbmdlIGhvc3RO
YW1lT3JTdHJpbmdTdGFydCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdE5h
bWVPclN0cmluZ1N0YXJ0Q2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVt
YWluaW5nXTsKKyAgICAgICAgaWYgKGhvc3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlvbiA9PSBO
U05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuaWNoYXIgYyA9IFtz
dHJpbmcgY2hhcmFjdGVyQXRJbmRleDpob3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRpb25dOwor
ICAgICAgICByZW1haW5pbmcubG9jYXRpb24gPSBOU01heFJhbmdlKGhvc3ROYW1lT3JTdHJpbmdT
dGFydCk7CisgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5p
bmcubG9jYXRpb247CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnPycpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnQCcpIHsKKyAgICAgICAgICAg
IC8vIEZpbmQgZW5kIG9mIGhvc3QgbmFtZS4KKyAgICAgICAgICAgIHVuc2lnbmVkIGhvc3ROYW1l
U3RhcnQgPSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAgICAgICBOU1JhbmdlIGhvc3ROYW1l
RW5kID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpob3N0TmFtZUVuZENoYXJhY3Rl
cnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107CisgICAgICAgICAgICBC
T09MIGRvbmU7CisgICAgICAgICAgICBpZiAoaG9zdE5hbWVFbmQubG9jYXRpb24gPT0gTlNOb3RG
b3VuZCkgeworICAgICAgICAgICAgICAgIGhvc3ROYW1lRW5kLmxvY2F0aW9uID0gc3RyaW5nTGVu
Z3RoOworICAgICAgICAgICAgICAgIGRvbmUgPSBZRVM7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IGhvc3ROYW1lRW5kLmxvY2F0aW9u
OworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1h
aW5pbmcubG9jYXRpb247CisgICAgICAgICAgICAgICAgZG9uZSA9IE5POworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBQcm9jZXNzIGhvc3QgbmFtZSByYW5nZS4K
KyAgICAgICAgICAgIGYoc3RyaW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFt
ZUVuZC5sb2NhdGlvbiAtIGhvc3ROYW1lU3RhcnQpLCBhcnJheSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChkb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KKyAgICAgICAgICAgIEFT
U0VSVChjID09ICciJyk7CisgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAg
IE5TUmFuZ2UgZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kID0gW3N0cmluZyByYW5nZU9mQ2hh
cmFjdGVyRnJvbVNldDpxdW90ZWRTdHJpbmdDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6
MCByYW5nZTpyZW1haW5pbmddOworICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hhcmFjdGVy
T3JTdHJpbmdFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICAgICAgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRleDpl
c2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb25dOworICAgICAgICAgICAgICAgIHJl
bWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5k
KTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVt
YWluaW5nLmxvY2F0aW9uOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIElm
IHdlIGFyZSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUgc3RyaW5n
IGxvb3AgYmFjayB0byB0aGUgaG9zdCBuYW1lIGxvb3AuCisgICAgICAgICAgICAgICAgaWYgKGMg
PT0gJyInKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAg
IEFTU0VSVChjID09ICdcXCcpOworICAgICAgICAgICAgICAgIGlmICghcmVtYWluaW5nLmxlbmd0
aCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgcmVtYWlu
aW5nLmxvY2F0aW9uICs9IDE7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCAtPSAx
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJpbmdSYW5n
ZUFwcGxpZXJGdW5jdGlvbiBmLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKK3sK
KyAgICAvLyBGaW5kIGhvc3RuYW1lcy4gVG9vIGJhZCB3ZSBjYW4ndCB1c2UgYW55IHJlYWwgVVJM
LXBhcnNpbmcgY29kZSB0byBkbyB0aGlzLAorICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGRvIGl0IGJl
Zm9yZSBkb2luZyBhbGwgdGhlICUtZXNjYXBpbmcsIGFuZCB0aGlzIGlzIHRoZSBvbmx5CisgICAg
Ly8gY29kZSB3ZSBoYXZlIHRoYXQgcGFyc2VzIG1haWx0byBVUkxzIGFueXdheS4KKyAgICAKKyAg
ICAvLyBNYXliZSB3ZSBzaG91bGQgaW1wbGVtZW50IHRoaXMgdXNpbmcgYSBjaGFyYWN0ZXIgYnVm
ZmVyIGluc3RlYWQ/CisgICAgCisgICAgaWYgKHByb3RvY29sSXMoc3RyaW5nLCAibWFpbHRvIikp
IHsKKyAgICAgICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoc3RyaW5n
LCBmLCBhcnJheSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gRmluZCB0
aGUgaG9zdCBuYW1lIGluIGEgaGllcmFyY2hpY2FsIFVSTC4KKyAgICAvLyBJdCBjb21lcyBhZnRl
ciBhICI6Ly8iIHNlcXVlbmNlLCB3aXRoIHNjaGVtZSBjaGFyYWN0ZXJzIHByZWNlZGluZy4KKyAg
ICAvLyBJZiBlbmRzIHdpdGggdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiLCAiLyIsIG9y
IGEgIj8iLgorICAgIC8vIElmIHRoZXJlIGlzIGEgIkAiIGNoYXJhY3RlciwgdGhlIGhvc3QgcGFy
dCBpcyBqdXN0IHRoZSBwYXJ0IGFmdGVyIHRoZSAiQCIuCisgICAgTlNSYW5nZSBzZXBhcmF0b3JS
YW5nZSA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjovLyJdOworICAgIGlmIChzZXBhcmF0b3JS
YW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
Ly8gQ2hlY2sgdGhhdCBhbGwgY2hhcmFjdGVycyBiZWZvcmUgdGhlIDovLyBhcmUgdmFsaWQgc2No
ZW1lIGNoYXJhY3RlcnMuCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0No
YXJhY3RlclNldD4+IG5vblNjaGVtZUNoYXJhY3RlcnMgPSBbW05TQ2hhcmFjdGVyU2V0IGNoYXJh
Y3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSstLiJdIGludmVydGVkU2V0XTsK
KyAgICBpZiAoW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpub25TY2hlbWVDaGFyYWN0
ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBzZXBhcmF0b3JS
YW5nZS5sb2NhdGlvbildLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07CisgICAg
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhv
c3RUZXJtaW5hdG9ycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVy
c0luU3RyaW5nOkAiOi8/IyJdOworICAgIAorICAgIC8vIFN0YXJ0IGFmdGVyIHRoZSBzZXBhcmF0
b3IuCisgICAgdW5zaWduZWQgYXV0aG9yaXR5U3RhcnQgPSBOU01heFJhbmdlKHNlcGFyYXRvclJh
bmdlKTsKKyAgICAKKyAgICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICBOU1Jh
bmdlIGhvc3ROYW1lVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6
aG9zdFRlcm1pbmF0b3JzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZShh
dXRob3JpdHlTdGFydCwgc3RyaW5nTGVuZ3RoIC0gYXV0aG9yaXR5U3RhcnQpXTsKKyAgICB1bnNp
Z25lZCBob3N0TmFtZUVuZCA9IGhvc3ROYW1lVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZv
dW5kID8gc3RyaW5nTGVuZ3RoIDogaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uOworICAgIAor
ICAgIC8vIEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KKyAgICBOU1Jh
bmdlIHVzZXJJbmZvVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIkAiIG9wdGlv
bnM6MCByYW5nZTpOU01ha2VSYW5nZShhdXRob3JpdHlTdGFydCwgaG9zdE5hbWVFbmQgLSBhdXRo
b3JpdHlTdGFydCldOworICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQgPSB1c2VySW5mb1Rlcm1p
bmF0b3IubG9jYXRpb24gPT0gTlNOb3RGb3VuZCA/IGF1dGhvcml0eVN0YXJ0IDogTlNNYXhSYW5n
ZSh1c2VySW5mb1Rlcm1pbmF0b3IpOworICAgIAorICAgIHJldHVybiBmKHN0cmluZywgTlNNYWtl
UmFuZ2UoaG9zdE5hbWVTdGFydCwgaG9zdE5hbWVFbmQgLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkp
OworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBtYXBIb3N0TmFtZXMoTlNTdHJpbmcg
KnN0cmluZywgQk9PTCBlbmNvZGUpCit7CisgICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9w
dGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9l
cyBub3QgbmVlZCBtYXBwaW5nLgorICAgIAorICAgIGlmIChlbmNvZGUgJiYgW3N0cmluZyBjYW5C
ZUNvbnZlcnRlZFRvRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXSkKKyAgICAgICAgcmV0
dXJuIHN0cmluZzsKKyAgICAKKyAgICAvLyBNYWtlIGEgbGlzdCBvZiByYW5nZXMgdGhhdCBhY3R1
YWxseSBuZWVkIG1hcHBpbmcuCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBob3N0TmFt
ZVJhbmdlczsKKyAgICBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmID0gZW5jb2RlID8gY29s
bGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcgOiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWREZWNvZGlu
ZzsKKyAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhzdHJpbmcsIGYsIGhvc3RO
YW1lUmFuZ2VzKTsKKyAgICBpZiAoIWhvc3ROYW1lUmFuZ2VzKQorICAgICAgICByZXR1cm4gc3Ry
aW5nOworCisgICAgaWYgKCFbaG9zdE5hbWVSYW5nZXMgY291bnRdKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIAorICAgIC8vIERvIHRoZSBtYXBwaW5nLgorICAgIGF1dG8gbXV0YWJsZUNvcHkg
PSBhZG9wdE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsKKyAgICB1bnNpZ25lZCBpID0gW2hvc3RO
YW1lUmFuZ2VzIGNvdW50XTsKKyAgICB3aGlsZSAoaS0tKSB7CisgICAgICAgIE5TUmFuZ2UgaG9z
dE5hbWVSYW5nZSA9IFtbaG9zdE5hbWVSYW5nZXMgb2JqZWN0QXRJbmRleDppXSByYW5nZVZhbHVl
XTsKKyAgICAgICAgTlNTdHJpbmcgKm1hcHBlZEhvc3ROYW1lID0gZW5jb2RlID8gZW5jb2RlSG9z
dE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKSA6IGRlY29kZUhvc3ROYW1lV2l0
aFJhbmdlKHN0cmluZywgaG9zdE5hbWVSYW5nZSk7CisgICAgICAgIFttdXRhYmxlQ29weSByZXBs
YWNlQ2hhcmFjdGVyc0luUmFuZ2U6aG9zdE5hbWVSYW5nZSB3aXRoU3RyaW5nOm1hcHBlZEhvc3RO
YW1lXTsKKyAgICB9CisgICAgcmV0dXJuIG11dGFibGVDb3B5OworfQorCitzdGF0aWMgUmV0YWlu
UHRyPE5TU3RyaW5nPiBzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShOU1N0cmluZyAqc3RyaW5n
KQoreworICAgIGF1dG8gdHJpbW1lZCA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwor
ICAgIENGU3RyaW5nVHJpbVdoaXRlc3BhY2UoKF9fYnJpZGdlIENGTXV0YWJsZVN0cmluZ1JlZil0
cmltbWVkLmdldCgpKTsKKyAgICByZXR1cm4gdHJpbW1lZDsKK30KKworTlNVUkwgKlVSTEJ5VHJ1
bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChOU1VSTCAqVVJMLCBDRlVSTENvbXBv
bmVudFR5cGUgY29tcG9uZW50KQoreworICAgIGlmICghVVJMKQorICAgICAgICByZXR1cm4gbmls
OworICAgIAorICAgIENGUmFuZ2UgZnJhZ1JnID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25l
bnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50LCBudWxscHRyKTsKKyAgICBpZiAo
ZnJhZ1JnLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICByZXR1cm4gVVJMOworCisg
ICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gdXJsQnl0ZXMoVVJMX0JZ
VEVTX0JVRkZFUl9MRU5HVEgpOworICAgIENGSW5kZXggbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgdXJsQnl0ZXMuc2l6ZSgp
KTsKKyAgICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdl
dEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICB1cmxC
eXRlcy5ncm93KG51bUJ5dGVzKTsKKyAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCB1cmxCeXRlcy5kYXRhKCksIG51bUJ5dGVzKTsKKyAgICB9CisKKyAgICBDRlVS
TFJlZiByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRh
KCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7
CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVz
KG51bGxwdHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5n
RW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAgICAKKyAgICByZXR1cm4gcmVzdWx0
ID8gQ0ZCcmlkZ2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKK30KKworc3RhdGljIE5TVVJMICpV
UkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKK3sKKyAgICByZXR1cm4g
VVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KFVSTCwga0NGVVJMQ29t
cG9uZW50UmVzb3VyY2VTcGVjaWZpZXIpOworfQorCitOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRh
ICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKK3sKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgCisgICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsKKyAgICBzaXplX3QgbGVuZ3Ro
ID0gW2RhdGEgbGVuZ3RoXTsKKyAgICBpZiAobGVuZ3RoID4gMCkgeworICAgICAgICAvLyB3b3Jr
IGFyb3VuZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVz
KC4uLCBUUlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21wb25lbnRzLgorICAgICAgICBi
YXNlVVJMID0gVVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKGJhc2VVUkwpOworICAgICAg
ICAKKyAgICAgICAgY29uc3QgVUludDggKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDgq
PihbZGF0YSBieXRlc10pOworICAgICAgICAKKyAgICAgICAgLy8gQ0ZVUkxDcmVhdGVBYnNvbHV0
ZVVSTFdpdGhCeXRlcyB3b3VsZCBjb21wbGFpbiB0byBjb25zb2xlIGlmIHdlIHBhc3NlZCBhIHBh
dGggdG8gaXQuCisgICAgICAgIGlmIChieXRlc1swXSA9PSAnLycgJiYgIWJhc2VVUkwpCisgICAg
ICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAKKyAgICAgICAgLy8gTk9URTogV2UgdXNlIFVU
Ri04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmlu
Z3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAgICAgLy8gKGUuZyBjYWxscyB0
byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9m
IGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAorICAgICAgICAvLyBjb3VsZCBlaXRoZXIg
YmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBs
aWtlIHNoaWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCisgICAgICAgIC8vIG9udG8gdXNpbmcgSVNP
IExhdGluIDEgaW4gdGhvc2UgY2FzZXMuCisgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxl
YXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0
aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVT
KSk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2lu
Z1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBieXRlcywg
bGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgKF9fYnJpZGdlIENGVVJMUmVmKWJh
c2VVUkwsIFlFUykpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0
aFN0cmluZzpAIiJdOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KK3N0YXRpYyBOU0RhdGEgKmRh
dGFXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNEYXRhICp1
c2VyVHlwZWREYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ107CisgICAgQVNTRVJUKHVzZXJUeXBlZERhdGEpOworICAgIAorICAgIGNvbnN0IFVJbnQ4
KiBpbkJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDggKj4oW3VzZXJUeXBlZERhdGEgYnl0
ZXNdKTsKKyAgICBpbnQgaW5MZW5ndGggPSBbdXNlclR5cGVkRGF0YSBsZW5ndGhdOworICAgIGlm
ICghaW5MZW5ndGgpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgY2hhciogb3V0Qnl0
ZXMgPSBzdGF0aWNfY2FzdDxjaGFyICo+KG1hbGxvYyhpbkxlbmd0aCAqIDMpKTsgLy8gbGFyZ2Ug
ZW5vdWdoIHRvICUtZXNjYXBlIGV2ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIqIHAgPSBvdXRCeXRl
czsKKyAgICBpbnQgb3V0TGVuZ3RoID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGluTGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgVUludDggYyA9IGluQnl0ZXNbaV07CisgICAgICAgIGlmIChj
IDw9IDB4MjAgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICAqcCsrID0gJyUnOworICAgICAg
ICAgICAgKnArKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAg
KnArKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgb3V0TGVu
Z3RoICs9IDM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAg
ICAgICAgIG91dExlbmd0aCsrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6b3V0Qnl0ZXMgbGVuZ3RoOm91dExlbmd0aF07IC8v
IGFkb3B0cyBvdXRCeXRlcworfQorCitOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0
cmluZyAqc3RyaW5nLCBOU1VSTCAqbnNVUkwpCit7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBhdXRvIG1hcHBlZFN0cmluZyA9IG1hcEhvc3ROYW1lcyhzdHJp
bmdCeVRyaW1taW5nV2hpdGVzcGFjZShzdHJpbmcpLmdldCgpLCBZRVMpOworICAgIGlmICghbWFw
cGVkU3RyaW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gTGV0J3MgY2hlY2sgd2hl
dGhlciB0aGUgVVJMIGlzIGJvZ3VzLgorICAgIFVSTCB1cmwgeyBVUkwgeyBuc1VSTCB9LCBtYXBw
ZWRTdHJpbmcuZ2V0KCkgfTsKKyAgICBpZiAoIXVybC5jcmVhdGVDRlVSTCgpKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODYwNTcKKyAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgdXJsLmNy
ZWF0ZUNGVVJMIGluc3RlYWQgb2YgdXNpbmcgZGlyZWN0bHkgQ0ZVUkwgcGFyc2luZyByb3V0aW5l
cy4KKyAgICBOU0RhdGEgKmRhdGEgPSBkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhtYXBwZWRTdHJp
bmcuZ2V0KCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiIl07CisKKyAgICByZXR1cm4gVVJMV2l0aERhdGEoZGF0YSwgbnNVUkwpOworfQor
CitOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKnN0cmlu
ZywgTlNVUkwgKlVSTCkKK3sKKyAgICBpZiAoIXN0cmluZykKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIE5TVVJMICpyZXN1bHQgPSBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZywgVVJM
KTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBOU0RhdGEgKnJlc3VsdERhdGEgPSBkYXRh
V2l0aFVzZXJUeXBlZFN0cmluZyhzdHJpbmcpOworICAgICAgICBpZiAoIXJlc3VsdERhdGEpCisg
ICAgICAgICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKKyAgICAgICAgcmVz
dWx0ID0gVVJMV2l0aERhdGEocmVzdWx0RGF0YSwgVVJMKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgQk9PTCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmco
TlNVUkwgKlVSTCkKK3sKKyAgICBDRlJhbmdlIHJhbmdlV2l0aFNlcGFyYXRvcnM7CisgICAgQ0ZV
UkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwga0NGVVJM
Q29tcG9uZW50UXVlcnksICZyYW5nZVdpdGhTZXBhcmF0b3JzKTsKKyAgICBpZiAocmFuZ2VXaXRo
U2VwYXJhdG9ycy5sb2NhdGlvbiAhPSBrQ0ZOb3RGb3VuZCAmJiByYW5nZVdpdGhTZXBhcmF0b3Jz
Lmxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgcmV0dXJuIE5POworfQor
CitOU0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICpVUkwsIENGVVJMQ29tcG9u
ZW50VHlwZSBjb21wb25lbnRUeXBlKQoreworICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JV
RkZFUl9MRU5HVEg+IGFsbEJ5dGVzQnVmZmVyKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAg
ICBDRkluZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGFsbEJ5dGVzQnVmZmVyLnNpemUoKSk7CisgICAg
aWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7CisgICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9jYXRl
ID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAg
ICAgICAgYWxsQnl0ZXNCdWZmZXIuZ3JvdyhieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBieXRl
c0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYWxsQnl0ZXNC
dWZmZXIuZGF0YSgpLCBieXRlc1RvQWxsb2NhdGUpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBD
RlVSTENvbXBvbmVudFR5cGUgY29tcGxldGVVUkwgPSAoQ0ZVUkxDb21wb25lbnRUeXBlKS0xOwor
ICAgIENGUmFuZ2UgcmFuZ2U7CisgICAgaWYgKGNvbXBvbmVudFR5cGUgIT0gY29tcGxldGVVUkwp
IHsKKyAgICAgICAgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlk
Z2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnRUeXBlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJh
bmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICB9IGVsc2UgeworICAgICAgICByYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgICAgIHJhbmdlLmxl
bmd0aCA9IGJ5dGVzRmlsbGVkOworICAgIH0KKyAgICAKKyAgICBOU0RhdGEgKmNvbXBvbmVudERh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YWxsQnl0ZXNCdWZmZXIuZGF0YSgpICsgcmFuZ2Uu
bG9jYXRpb24gbGVuZ3RoOnJhbmdlLmxlbmd0aF07IAorICAgIAorICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbY29tcG9u
ZW50RGF0YSBieXRlc10pOworICAgIE5TTXV0YWJsZURhdGEgKnJlc3VsdERhdGEgPSBbTlNNdXRh
YmxlRGF0YSBkYXRhXTsKKyAgICAvLyBOT1RFOiBhZGQgbGVhZGluZyAnPycgdG8gcXVlcnkgc3Ry
aW5ncyBub24temVybyBsZW5ndGggcXVlcnkgc3RyaW5ncy4KKyAgICAvLyBOT1RFOiByZXRhaW4g
cXVlc3Rpb24tbWFyayBvbmx5IHF1ZXJ5IHN0cmluZ3MuCisgICAgaWYgKGNvbXBvbmVudFR5cGUg
PT0ga0NGVVJMQ29tcG9uZW50UXVlcnkpIHsKKyAgICAgICAgaWYgKHJhbmdlLmxlbmd0aCA+IDAg
fHwgaGFzUXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKFVSTCkpCisgICAgICAgICAgICBbcmVz
dWx0RGF0YSBhcHBlbmRCeXRlczoiPyIgbGVuZ3RoOjFdOyAgICAKKyAgICB9CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCByYW5nZS5sZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFy
IGMgPSBieXRlc1tpXTsKKyAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKKyAg
ICAgICAgICAgIGNoYXIgZXNjYXBlZFszXTsKKyAgICAgICAgICAgIGVzY2FwZWRbMF0gPSAnJSc7
CisgICAgICAgICAgICBlc2NhcGVkWzFdID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7
CisgICAgICAgICAgICBlc2NhcGVkWzJdID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7
CisgICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczplc2NhcGVkIGxlbmd0aDozXTsg
ICAgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGFyIGJbMV07CisgICAgICAgICAg
ICBiWzBdID0gYzsKKyAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmIgbGVuZ3Ro
OjFdOyAgICAKKyAgICAgICAgfSAgICAgICAgICAgICAgIAorICAgIH0KKyAgICAKKyAgICByZXR1
cm4gcmVzdWx0RGF0YTsKK30KKworc3RhdGljIE5TVVJMICpVUkxCeVJlbW92aW5nQ29tcG9uZW50
QW5kU3Vic2VxdWVudENoYXJhY3RlcihOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29t
cG9uZW50KQoreworICAgIENGUmFuZ2UgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBv
bmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIDApOworICAgIGlmIChyYW5n
ZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICAKKyAg
ICAvLyBSZW1vdmUgb25lIHN1YnNlcXVlbnQgY2hhcmFjdGVyLgorICAgIHJhbmdlLmxlbmd0aCsr
OworCisgICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYnVmZmVyKFVS
TF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZVUkxHZXRC
eXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKKyAgICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdl
dEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICBidWZm
ZXIuZ3JvdyhudW1CeXRlcyk7CisgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJM
UmVmKVVSTCwgYnVmZmVyLmRhdGEoKSwgbnVtQnl0ZXMpOworICAgIH0KKyAgICBVSW50OCogdXJs
Qnl0ZXMgPSBidWZmZXIuZGF0YSgpOworICAgICAgICAKKyAgICBpZiAobnVtQnl0ZXMgPCByYW5n
ZS5sb2NhdGlvbikKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICBpZiAobnVtQnl0ZXMgPCByYW5n
ZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCkKKyAgICAgICAgcmFuZ2UubGVuZ3RoID0gbnVtQnl0
ZXMgLSByYW5nZS5sb2NhdGlvbjsKKyAgICAgICAgCisgICAgbWVtbW92ZSh1cmxCeXRlcyArIHJh
bmdlLmxvY2F0aW9uLCB1cmxCeXRlcyArIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoLCBu
dW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKTsKKyAgICAKKyAgICBDRlVS
TFJlZiByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVt
Qnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51
bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2Rp
bmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIAorICAgIHJldHVybiByZXN1
bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworfQorCitOU1VSTCAqVVJMQnlS
ZW1vdmluZ1VzZXJJbmZvKE5TVVJMICpVUkwpCit7CisgICAgcmV0dXJuIFVSTEJ5UmVtb3ZpbmdD
b21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKFVSTCwga0NGVVJMQ29tcG9uZW50VXNlcklu
Zm8pOworfQorCitOU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqVVJMKQoreworICAgIFVJ
bnQ4ICpidWZmZXIgPSAoVUludDggKiltYWxsb2MoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwor
ICAgIENGSW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJl
ZilVUkwsIGJ1ZmZlciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOworICAgIGlmIChieXRlc0Zp
bGxlZCA9PSAtMSkgeworICAgICAgICBDRkluZGV4IGJ5dGVzVG9BbGxvY2F0ZSA9IENGVVJMR2V0
Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7CisgICAgICAgIGJ1ZmZl
ciA9IChVSW50OCAqKXJlYWxsb2MoYnVmZmVyLCBieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBi
eXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVy
LCBieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBBU1NFUlQoYnl0ZXNGaWxsZWQgPT0gYnl0ZXNU
b0FsbG9jYXRlKTsKKyAgICB9CisgICAgCisgICAgLy8gYnVmZmVyIGlzIGFkb3B0ZWQgYnkgdGhl
IE5TRGF0YQorICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpi
dWZmZXIgbGVuZ3RoOmJ5dGVzRmlsbGVkIGZyZWVXaGVuRG9uZTpZRVNdOworICAgIAorICAgIE5T
VVJMICpiYXNlVVJMID0gKF9fYnJpZGdlIE5TVVJMICopQ0ZVUkxHZXRCYXNlVVJMKChfX2JyaWRn
ZSBDRlVSTFJlZilVUkwpOworICAgIGlmIChiYXNlVVJMKQorICAgICAgICByZXR1cm4gb3JpZ2lu
YWxVUkxEYXRhKFVSTFdpdGhEYXRhKGRhdGEsIGJhc2VVUkwpKTsKKyAgICByZXR1cm4gZGF0YTsK
K30KKworc3RhdGljIENGU3RyaW5nUmVmIGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hh
cmFjdGVycyhDRlN0cmluZ1JlZiBzdHJpbmcpCit7CisgICAgQ0ZJbmRleCBsZW5ndGggPSBDRlN0
cmluZ0dldExlbmd0aChzdHJpbmcpOworICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZF
Ul9MRU5HVEg+IHNvdXJjZUJ1ZmZlcihsZW5ndGgpOworICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVy
cyhzdHJpbmcsIENGUmFuZ2VNYWtlKDAsIGxlbmd0aCksIHNvdXJjZUJ1ZmZlci5kYXRhKCkpOwor
ICAgIAorICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IG91dEJ1ZmZl
cjsKKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50Owor
ICAgIENGSW5kZXggaSA9IDA7CisgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgVUNo
YXIzMiBjOworICAgICAgICBVMTZfTkVYVChzb3VyY2VCdWZmZXIsIGksIGxlbmd0aCwgYykKKyAg
ICAgICAgCisgICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2lu
dCwgYykpIHsKKyAgICAgICAgICAgIHVpbnQ4X3QgdXRmOEJ1ZmZlcls0XTsKKyAgICAgICAgICAg
IENGSW5kZXggb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIFVCb29sIGZhaWx1cmUgPSBmYWxzZTsK
KyAgICAgICAgICAgIFU4X0FQUEVORCh1dGY4QnVmZmVyLCBvZmZzZXQsIDQsIGMsIGZhaWx1cmUp
CisgICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBmb3IgKENGSW5kZXggaiA9IDA7IGogPCBvZmZzZXQ7ICsraikgeworICAgICAgICAgICAgICAg
IG91dEJ1ZmZlci5hcHBlbmQoJyUnKTsKKyAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5k
KHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZmZXJbal0pKTsKKyAgICAgICAgICAg
ICAgICBvdXRCdWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZm
ZXJbal0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFVD
aGFyIHV0ZjE2QnVmZmVyWzJdOworICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOworICAg
ICAgICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOworICAgICAgICAgICAgVTE2X0FQUEVORCh1
dGYxNkJ1ZmZlciwgb2Zmc2V0LCAyLCBjLCBmYWlsdXJlKQorICAgICAgICAgICAgQVNTRVJUKCFm
YWlsdXJlKTsKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8IG9mZnNldDsgKytq
KQorICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXRmMTZCdWZmZXJbal0pOworICAg
ICAgICB9CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgb3V0QnVmZmVyLmRh
dGEoKSwgb3V0QnVmZmVyLnNpemUoKSk7Cit9CisKK05TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmlu
ZyhOU1VSTCAqVVJMKQoreworICAgIE5TRGF0YSAqZGF0YSA9IG9yaWdpbmFsVVJMRGF0YShVUkwp
OworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJlZm9yZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihbZGF0YSBieXRlc10pOworICAgIGludCBsZW5ndGggPSBbZGF0YSBsZW5n
dGhdOworICAgIAorICAgIGJvb2wgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSBmYWxzZTsKKyAg
ICAKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gYmVmb3JlOworICAgIGludCBidWZmZXJM
ZW5ndGggPSAobGVuZ3RoICogMykgKyAxOworICAgIFZlY3RvcjxjaGFyLCBVUkxfQllURVNfQlVG
RkVSX0xFTkdUSD4gYWZ0ZXIoYnVmZmVyTGVuZ3RoKTsgLy8gbGFyZ2UgZW5vdWdoIHRvICUtZXNj
YXBlIGV2ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIgKnEgPSBhZnRlci5kYXRhKCk7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMg
PSBwW2ldOworICAgICAgICAvLyB1bmVzY2FwZSBlc2NhcGUgc2VxdWVuY2VzIHRoYXQgaW5kaWNh
dGUgYnl0ZXMgZ3JlYXRlciB0aGFuIDB4N2YKKyAgICAgICAgaWYgKGMgPT0gJyUnICYmIChpICsg
MSA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAmJiBpICsgMiA8IGxlbmd0
aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7CisgICAgICAgICAgICBhdXRvIHUgPSB0
b0FTQ0lJSGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKKyAgICAgICAgICAgIGlmICh1ID4g
MHg3ZikgeworICAgICAgICAgICAgICAgIC8vIHVuZXNjYXBlCisgICAgICAgICAgICAgICAgKnEr
KyA9IHU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGRvIG5vdCB1
bmVzY2FwZQorICAgICAgICAgICAgICAgICpxKysgPSBwW2ldOworICAgICAgICAgICAgICAgICpx
KysgPSBwW2kgKyAxXTsKKyAgICAgICAgICAgICAgICAqcSsrID0gcFtpICsgMl07CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAqcSsrID0gYzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0t
IiBpbiBhbiBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgorICAgICAgICAgICAg
aWYgKGMgPT0gJy0nICYmIGkgPj0gMyAmJiAhbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgJiYgKHFb
LTRdIHwgMHgyMCkgPT0gJ3gnICYmIChxWy0zXSB8IDB4MjApID09ICduJyAmJiBxWy0yXSA9PSAn
LScpCisgICAgICAgICAgICAgICAgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSB0cnVlOworICAg
ICAgICB9CisgICAgfQorICAgICpxID0gJ1wwJzsKKyAgICAKKyAgICAvLyBDaGVjayBzdHJpbmcg
dG8gc2VlIGlmIGl0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gZGlzcGxheSB1c2luZyBVVEYtOCAgCisg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiByZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhT
dHJpbmc6YWZ0ZXIuZGF0YSgpXTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAvLyBDb3Vs
ZCBub3QgY29udmVydCB0byBVVEYtOC4KKyAgICAgICAgLy8gQ29udmVydCBjaGFyYWN0ZXJzIGdy
ZWF0ZXIgdGhhbiAweDdmIHRvIGVzY2FwZSBzZXF1ZW5jZXMuCisgICAgICAgIC8vIFNoaWZ0IGN1
cnJlbnQgc3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgorICAgICAgICAvLyB0aGVuIHdl
IHdpbGwgY29weSBiYWNrIGJ5dGVzIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIAorICAgICAg
ICAvLyBhcyB3ZSBjb252ZXJ0LgorICAgICAgICBpbnQgYWZ0ZXJsZW5ndGggPSBxIC0gYWZ0ZXIu
ZGF0YSgpOworICAgICAgICBjaGFyICpwID0gYWZ0ZXIuZGF0YSgpICsgYnVmZmVyTGVuZ3RoIC0g
YWZ0ZXJsZW5ndGggLSAxOworICAgICAgICBtZW1tb3ZlKHAsIGFmdGVyLmRhdGEoKSwgYWZ0ZXJs
ZW5ndGggKyAxKTsgLy8gY29waWVzIHRyYWlsaW5nICdcMCcKKyAgICAgICAgY2hhciAqcSA9IGFm
dGVyLmRhdGEoKTsKKyAgICAgICAgd2hpbGUgKCpwKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIGMgPSAqcDsKKyAgICAgICAgICAgIGlmIChjID4gMHg3ZikgeworICAgICAgICAgICAgICAg
ICpxKysgPSAnJSc7CisgICAgICAgICAgICAgICAgKnErKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGMpOworICAgICAgICAgICAgICAgICpxKysgPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhE
aWdpdChjKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICpxKysgPSAqcDsK
KyAgICAgICAgICAgIHArKzsKKyAgICAgICAgfQorICAgICAgICAqcSA9ICdcMCc7CisgICAgICAg
IHJlc3VsdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOwor
ICAgIH0KKyAgICAKKyAgICBpZiAobWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcpIHsKKyAgICAgICAg
Ly8gRklYTUU6IElzIGl0IGdvb2QgdG8gaWdub3JlIHRoZSBmYWlsdXJlIG9mIG1hcEhvc3ROYW1l
cyBhbmQga2VlcCByZXN1bHQgaW50YWN0PworICAgICAgICBhdXRvIG1hcHBlZFJlc3VsdCA9IG1h
cEhvc3ROYW1lcyhyZXN1bHQuZ2V0KCksIE5PKTsKKyAgICAgICAgaWYgKG1hcHBlZFJlc3VsdCkK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1hcHBlZFJlc3VsdDsKKyAgICB9CisKKyAgICByZXN1bHQg
PSBbcmVzdWx0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOworICAgIHJl
dHVybiBDRkJyaWRnaW5nUmVsZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJh
Y3RlcnMoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSkpOworfQorCitCT09MIGlz
VXNlclZpc2libGVVUkwoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIHZhbGlkID0gWUVT
OworICAgIC8vIGdldCBidWZmZXIKKyAgICAKKyAgICBjaGFyIHN0YXRpY19idWZmZXJbMTAyNF07
CisgICAgY29uc3QgY2hhciAqcDsKKyAgICBCT09MIHN1Y2Nlc3MgPSBDRlN0cmluZ0dldENTdHJp
bmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZywgc3RhdGljX2J1ZmZlciwgMTAyMywga0NG
U3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICBwID0gc3VjY2VzcyA/IHN0YXRpY19idWZmZXIgOiBb
c3RyaW5nIFVURjhTdHJpbmddOworICAgIAorICAgIGludCBsZW5ndGggPSBzdHJsZW4ocCk7Cisg
ICAgCisgICAgLy8gY2hlY2sgZm9yIGNoYXJhY3RlcnMgPD0gMHgyMCBvciA+PTB4N2YsICUtZXNj
YXBlIHNlcXVlbmNlcyBvZiAlN2YsIGFuZCB4bi0tLCB0aGVzZQorICAgIC8vIGFyZSB0aGUgdGhp
bmdzIHRoYXQgd2lsbCBsZWFkIF93ZWJfdXNlclZpc2libGVTdHJpbmcgdG8gYWN0dWFsbHkgY2hh
bmdlIHRoaW5ncy4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07CisgICAgICAgIC8vIGVzY2FwZSBjb250cm9sIGNo
YXJhY3RlcnMsIHNwYWNlLCBhbmQgZGVsZXRlCisgICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA9
PSAweDdmKSB7CisgICAgICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlI
ZXhEaWdpdChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChw
W2kgKyAyXSkpIHsKKyAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAx
XSwgcFtpICsgMl0pOworICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7CisgICAgICAgICAgICAg
ICAgdmFsaWQgPSBOTzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGkgKz0gMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNr
IGZvciAieG4tLSIgaW4gYW4gZWZmaWNpZW50LCBub24tY2FzZS1zZW5zaXRpdmUsIHdheS4KKyAg
ICAgICAgICAgIGlmIChjID09ICctJyAmJiBpID49IDMgJiYgKHBbaSAtIDNdIHwgMHgyMCkgPT0g
J3gnICYmIChwW2kgLSAyXSB8IDB4MjApID09ICduJyAmJiBwW2kgLSAxXSA9PSAnLScpIHsKKyAg
ICAgICAgICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB2YWxpZDsKK30KKwor
TlNSYW5nZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNSYW5n
ZSBjb2xvbiA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjoiXTsKKyAgICBpZiAoY29sb24ubG9j
YXRpb24gIT0gTlNOb3RGb3VuZCAmJiBjb2xvbi5sb2NhdGlvbiA+IDApIHsKKyAgICAgICAgTlNS
YW5nZSBzY2hlbWUgPSB7MCwgY29sb24ubG9jYXRpb259OworICAgICAgICAvKgorICAgICAgICAg
VGhpcyBzdHVmZiBpcyB2ZXJ5IGV4cGVuc2l2ZS4gIDEwLTE1IG1zZWMgb24gYSAyeDEuMkdIei4g
IElmIG5vdCBjYWNoZWQgaXQgc3dhbXBzCisgICAgICAgICBldmVyeXRoaW5nIGVsc2Ugd2hlbiBh
ZGRpbmcgaXRlbXMgdG8gdGhlIGF1dG9jb21wbGV0ZSBEQi4gIE1ha2VzIG1lIHdvbmRlciBpZiB3
ZQorICAgICAgICAgZXZlbiBuZWVkIHRvIGVuZm9yY2UgdGhlIGNoYXJhY3RlciBzZXQgaGVyZS4K
KyAgICAgICAgICovCisgICAgICAgIE5TU3RyaW5nICphY2NlcHRhYmxlQ2hhcmFjdGVycyA9IEAi
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0
NTY3ODkrLi0iOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hh
cmFjdGVyU2V0Pj4gSW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldChbW05TQ2hhcmFjdGVyU2V0IGNo
YXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGlu
dmVydGVkU2V0XSk7CisgICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBbc3RyaW5nIHJhbmdlT2ZD
aGFyYWN0ZXJGcm9tU2V0OkludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQuZ2V0KCkuZ2V0KCkgb3B0
aW9uczowIHJhbmdlOnNjaGVtZV07CisgICAgICAgIGlmIChpbGxlZ2Fscy5sb2NhdGlvbiA9PSBO
U05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIHNjaGVtZTsKKyAgICB9CisgICAgcmV0dXJu
IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOworfQorCitCT09MIGxvb2tzTGlrZUFic29sdXRl
VVJMKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgLy8gVHJpbSB3aGl0ZXNwYWNlIGJlY2F1c2Ug
X3dlYl9VUkxXaXRoU3RyaW5nIGFsbG93cyB3aGl0ZXNwYWNlLgorICAgIHJldHVybiByYW5nZU9m
VVJMU2NoZW1lKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCkpLmxvY2F0
aW9uICE9IE5TTm90Rm91bmQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29j
b2EvVVJMQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ1MWZhZGJiNjhkNjQ3NmQwY2E0NjA2ODRhOTcy
YjhjNTM1MGRhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENv
Y29hLm1tCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDx3dGYvVVJM
Lmg+CisKKyNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCisjaW1wb3J0ICJOU1VSTEV4dHJhcy5oIgor
I2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMUGFyc2Vy
Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK0BpbnRlcmZhY2UgTlNTdHJpbmcg
KFdURk5TVVJMRXh0cmFzKQorLSAoQk9PTClfd2ViX2xvb2tzTGlrZUlQQWRkcmVzczsKK0BlbmQK
KworbmFtZXNwYWNlIFdURiB7CisKK1VSTDo6VVJMKE5TVVJMICp1cmwpCit7CisgICAgaWYgKCF1
cmwpIHsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KKyAgICBD
U3RyaW5nIHVybEJ5dGVzOworICAgIFdURjo6Z2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVm
KXVybCwgdXJsQnl0ZXMpOworICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsK
KyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKworVVJMOjpvcGVyYXRvciBOU1VSTCAq
KCkgY29uc3QKK3sKKyAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlkZ2VkIENGVVJMIGJl
Y2F1c2UgY3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdvdWxkIG5vdCBwcmVzZXJ2ZSB0aGUg
b3JpZ2luYWwgc3RyaW5nLgorICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxpdHkgd2hlbiByb3VuZC10
cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgorICAgIHJldHVybiBjcmVhdGVDRlVSTCgpLmJy
aWRnaW5nQXV0b3JlbGVhc2UoKTsKK30KKworUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0
ZUNGVVJMKCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwt
ZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYg
c3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KKyAgICAgICAgcmV0dXJuIChf
X2JyaWRnZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAi
Il0pLmdldCgpOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7CisKKyAg
ICAvLyBGYXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMgOC1iaXQgdG8gYXZvaWQgY29weWlu
ZyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KKyAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJp
dCgpKSkKKyAgICAgICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcu
bGVuZ3RoKCkpOworICAgIGVsc2UgeworICAgICAgICAvLyBTbG93ZXIgcGF0aC4KKyAgICAgICAg
V1RGOjpVUkxDaGFyQnVmZmVyIGJ1ZmZlcjsKKyAgICAgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7
CisgICAgICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CisgICAgfQorCisgICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSAmJiAhV1RGOjppc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjZlVSTDsKK30KKworYm9vbCBVUkw6
Omhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCit7CisgICAgcmV0dXJuIFtob3N0LmNy
ZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSBfd2ViX2xvb2tzTGlrZUlQQWRkcmVz
c107Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNv
dXAuaCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjRmYjM0Zjg2ZjI0YTQ2MjFlMGY5MDY3MDY3NzVmOTQ4MTg1OTk2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dURi93dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oCkBAIC0wLDAgKzEsMzggQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIFVTRShTT1VQKQorCisj
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cFVSSSwg
c291cF91cmlfZnJlZSkKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBDb29raWUsIHNvdXBf
Y29va2llX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwTWVzc2FnZUhlYWRlcnMs
IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3Vw
QnVmZmVyLCBzb3VwX2J1ZmZlcl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlm
IC8vIFVTRShTT1VQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9VUkxTb3VwLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkYmM3ZTE3
YjgzODkxOWM1MGNmZmZiZDZiNDVjZjhjYjNiODlhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoU09VUCkKKworI2lu
Y2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMUGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKworVVJMOjpVUkwoU291cFVSSSogc291cFVSSSkKK3sKKyAgICBpZiAoIXNvdXBV
UkkpIHsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJ
LCBGQUxTRSkpOworICAgIFVSTFBhcnNlciBwYXJzZXIoU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJp
bmcuZ2V0KCkpKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKworICAgIGlmICghaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTU2LiBsaWJzb3VwCisgICAgLy8gZG9l
cyBub3QgYWRkIHRoZSBwYXNzd29yZCB0byB0aGUgVVJMIHdoZW4gY2FsbGluZworICAgIC8vIHNv
dXBfdXJpX3RvX3N0cmluZywgYW5kIHRodXMgdGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkK
KyAgICAvLyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRo
ZSBtYWludGFpbmVyIGRvZXMKKyAgICAvLyBub3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5
IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRpb25zCisgICAgaWYgKHNvdXBVUkktPnBhc3N3b3Jk
KQorICAgICAgICBzZXRQYXNzKFN0cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsK
K30KKworR1VuaXF1ZVB0cjxTb3VwVVJJPiBVUkw6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAorewor
ICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBHVW5pcXVlUHRyPFNvdXBVUkk+KHNvdXBfdXJpX25ldyhzdHJpbmcoKS51dGY4KCkuZGF0YSgp
KSk7Cit9CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQorewor
ICAgIHJldHVybiAhaG9zdC5pc0VtcHR5KCkgJiYgZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGhv
c3QudXRmOCgpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCmlu
ZGV4IGQwYjkwMzhmODI2NDdiZTBhMTVmNWNlYTRmODAxOTYxZjY3MmYyOWIuLjdlYzM5ODJlMTEw
YjdhZjczMTQ5YWU5YWVjNTUxYjBkMDM2YjE0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaApAQCAtNDgsNyArNDgsNiBAQCBjbGFz
cyBQYXltZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0
b3I7CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czsKIHN0cnVjdCBBcHBsZVBheUxpbmVJdGVtOwogc3RydWN0IEFw
cGxlUGF5UGF5bWVudFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmgKaW5kZXgg
YjA3NTljZGExOGMwM2M3M2RiMGJkMWRjZjg0NTMxYjI0YjUyZDA5ZC4uM2FhMjJmNWI4MmQ2YzJj
MTgwZWNlODE0NTg1ZDg1MTA4OTRiMWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQu
aApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJF
dmVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggYmQ1NTM0YzJkZjkxMjU4N2RkMjc3ODky
Mjk4YmQ3ZDQxZTdhOWFmYy4uZTM3MzM1N2NjMDdmZWE1OWRlOTdlYzU1ZDVjODg5M2QwNjM4NjRk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dENvb3JkaW5hdG9yLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZDQ2NTJj
ZmVkNTBmZmMxZDJmNmI2MmI1ZTRiZGQwZjkyODYzZDQ1Ni4uYTU0NzE1NDk3M2MwMWY4YmVhNWQx
ZGNhMTIxNWQ5ZDQ0OWUwMDE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIFBh
eW1lbnRDb250YWN0OwogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKIGNsYXNzIFBheW1l
bnRNZXRob2Q7CiBjbGFzcyBQYXltZW50U2Vzc2lvbjsKLWNsYXNzIFVSTDsKIGVudW0gY2xhc3Mg
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CiBzdHJ1Y3QgUGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHQ7CiBzdHJ1Y3QgUGF5bWVudE1ldGhvZFVwZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmlu
ZGV4IGU5MTVjYTE2ZGI0MDI0MzhkOGJkODAwMTlkYWRlOWIzNjc3MDNkMTcuLmU3N2YyY2E5OGZh
ZmM1NTM0ZTRmNjBlOGNmOTA0MDYwZDI4YjEzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaApAQCAt
MzQsNyArMzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYXltZW50TWVyY2hh
bnRTZXNzaW9uOwotY2xhc3MgVVJMOwogc3RydWN0IFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0
Owogc3RydWN0IFBheW1lbnRNZXRob2RVcGRhdGU7CiBzdHJ1Y3QgU2hpcHBpbmdDb250YWN0VXBk
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lv
bi5oCmluZGV4IDBhMzUwN2UyNjBlNzQ2N2UwYWMwZDMxYzk0OTM3NTRhMzNmZjJhNjQuLjhmN2E0
YjY1MGYwYjkyZjgxNWY5YjVkNWNjZTE3OWE3ZDUyOTEwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmgKQEAgLTM3LDcgKzM3LDYgQEAg
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBQYXltZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBj
bGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogCiBjbGFzcyBQYXltZW50U2Vzc2lvbiA6
IHB1YmxpYyB2aXJ0dWFsIFBheW1lbnRTZXNzaW9uQmFzZSB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25N
YW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0Fw
cGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCA5OThiNzg0NjBjYzg3ZWQzOGU5MTg2ZjA4ZmQyOTk3
YzYzZjg5ZDcyLi5iMmYxYjQ5ZjNlYjNhM2VlODBhNGZiMzI5ZjY5ZThiZjhlNTFhOThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGlj
YXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCmluZGV4IGU2ODk2ZTc4NzhiMmMy
YjEwZjY2MTNjZGI5ODVkMGI2ZTI1OGQ5NGEuLjQ4OTc2ZDJhMzUyZTIwZGU0MTRhNmJmOThlNTY2
ZWU0NzA0NzVlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05h
dmlnYXRvckJlYWNvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2
aWdhdG9yQmVhY29uLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAzOGQ1YTY2MDhi
ZDVmNGQ0ODg4ODEyNmY5YjU4ZjIwMmQ5NzAyMTNlLi45YTY0ZWU4Y2IzZmM0MTRhNDYyNTUxZGJi
YjEzODEyYzRjMGNiZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2lu
Y2x1ZGUgIlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaAppbmRleCA2N2RlMmU1NDYyYmYzZGM2YWI4MGMyNGEzMThjNDA1NGZjZjkyY2E1Li40MDEx
YjM3MzhjOTc5YmI5NzhhZGZkY2ZjYmE4NTRjYWU4YzVkZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAi
RmV0Y2hCb2R5Q29uc3VtZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5j
bHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aAppbmRleCBlMzY0NGE4NzUxOTU5N2Y2NGU1M2YzY2NkYWM3NDQwMzk3NjAwMjNkLi42ZjNkZmUz
NmYwNTM4OTkxNDdjNGVhZGVmY2UwMmQ0MzJmOTk5M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgK
QEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlUmVnaXN0cnkuY3BwCmluZGV4IDJlODJjMzI2MTg2NWQ3YTk4ODhhNWMyYzZiODU3NTRi
NDJjYmE0NTkuLjk4YzY2M2I2ZmM2ZGJkYTI5MzZhN2RhMjY4OTZkZjAwMzIzM2JkYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZVJlZ2lzdHJ5LmNwcApAQCAtMzUsOSArMzUsOSBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAKICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5
LmgKaW5kZXggMmI4OTRlMGNhNDNiZTQxYjViMTBmNGQxOTg5MTM0MzQ4NzkyODMwNi4uMDMzNjc0
ZjI2ZDM0NTg1OWE0YWExY2RhMTIwZTZkODg0MTU0NmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKQEAg
LTM4LDcgKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFz
cyBNZWRpYVNvdXJjZTsKIAogY2xhc3MgTWVkaWFTb3VyY2VSZWdpc3RyeSBmaW5hbCA6IHB1Ymxp
YyBVUkxSZWdpc3RyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDdlMjIxNTAyNDA4ZmJjNDkxZTg3MDY2OTc2ODY3OWVi
ZTAwNDM0NjIuLjhhYzE0NTc5NTBhNzkxODlkM2FjZDJkMDcwNTY2YTIxODdiY2ZhZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3Bw
CkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVJlZ2lzdHJ5LmNwcAppbmRleCBkNjlkY2NmODZlMzhhYTNmNzNjY2E3MTlkZjFiOWViZmZi
MmMyMDA4Li42NDE1ZmZhYmE1YzlhODQ4MTM0ZTUyMjMzNGRkM2E2MDFlYzJiZjJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1SZWdpc3RyeS5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5o
CmluZGV4IGEyNjdmMTEwMGJlMTdjMmEwYjI5YTIyMWUzYjE2OWM5Nzc0YWEyMmQuLmY2ZDIzZDJk
NzkwZjBkNGYyNzUxMDViYjQwNmIxOWUzY2UwZTQ5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCkBAIC0z
Niw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW07CiBj
bGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIE1lZGlhU3RyZWFt
UmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9y
Q29udGVudFV0aWxzQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNv
bnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAppbmRleCBiNjJkOWFmYThl
YWU1YjRmNmZlMzRiNGM1OGNkYjRmZGNjZDY1YTA2Li40NzA2NzNhMDllOTVmMDMwZjVlZWFjNDIz
OTg2OTZmYTEwNDNlMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmln
YXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50
VXRpbHNDbGllbnQuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE5BVklHQVRPUl9D
T05URU5UX1VUSUxTKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmgKaW5kZXggZmYwZGM1NGRhZjFlNTAyMzhhZmEzNWYxMzI4OWU1YjgzZTJiMmI5Yy4uZmVkYTFh
MTNhZWQyMWM0NGJhZDMzODk2MjlhNzI1M2Y5MmIxYzllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMzgsNyArMzgs
NyBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvblBlcm1pc3Npb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmgKaW5kZXggYjA5M2Qz
YTVmZmM5NTY3MTJlYzkxMGQ0Y2ZhMTIyNzFlMjhhOWJhYS4uMjA3NzljZWRkMjZmNmI5NDcxMTM4
NDRmZDk2MWZiZjhiYjAwNjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaApAQCAt
MjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJF
dmVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKaW5kZXggZTNiZDdlNTMyY2YyM2YyNTc2NjY1NGUx
MGMzNDVkY2JjYzM0MDg3Mi4uM2QxODgxYzU1N2I3ZDM3NjhkNDMzYjA4NmUyZjdmNGE3OTlkZDkz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudFJlcXVlc3QuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRNZXRo
b2RDaGFuZ2VFdmVudC5oIgogI2luY2x1ZGUgIlBheW1lbnRPcHRpb25zLmgiCiAjaW5jbHVkZSAi
UGF5bWVudFJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKaW5k
ZXggNmI1NTQyZTA4OTAwN2Q5YTQ5NzA0ZjJmYjNjZjQzOThhMGZiNGUwYy4uZWZlYWYwMGM5ZTM1
OGVkNjgxNTViNThhMTFhZDQ3MjU1NjFlMDI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xh
c3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJUcmVlUG9zaXRpb247CiBjbGFzcyBTZXR0aW5n
czsKIGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFBsdWdpblJlcGxhY2Vt
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luUmVwbGFjZW1lbnQ+IHsKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDc2
MGE0ZTcxMTRmNzQ3NTgyMjNhZGQxZmIwZjg1NmQ2ZTg1ZDMwY2UuLjRlZjBiNGRkZTAxNzU0ZmQ3
YmQ2ODkyMmE0NTVkOTM2N2VjYjg2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNzEsNyArNzEsNiBAQCBjbGFzcyBPc2NpbGxhdG9y
Tm9kZTsKIGNsYXNzIFBhbm5lck5vZGU7CiBjbGFzcyBQZXJpb2RpY1dhdmU7CiBjbGFzcyBTY3Jp
cHRQcm9jZXNzb3JOb2RlOwotY2xhc3MgVVJMOwogY2xhc3MgV2F2ZVNoYXBlck5vZGU7CiAKIC8v
IEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5k
IGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCmluZGV4IGNhNDA2YWY0YzZmNTIyNTFmOWY2Y2NhOGM0NWQ0NDNhYmI4ZDk4NTcuLmE4
NWRmZDc3NDRjZDQ3OWFiMTIzZDMzMjcxMWVlOGYyM2QxMDFkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIEFycmF5QnVmZmVyOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwotY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xhc3MgV2ViU29ja2V0Q2hh
bm5lbENsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaAppbmRleCA5MDEyMWY3MGQzMDg4MGMyYTAyZjk2NTgwYWUwNTcyOGZiOGJkZGM4Li41MDQz
YzQ5NDIzNWQwNzA4NTUwNmFhYmRjZTNiYzRkMGI4NGJiYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5j
bHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA3NDI3YmI1NTcwNzVl
ZGE4OGZiZDY2MTIxZTdkOTBhM2YxOWNkZDM0Li4xYjE5ZWRhYjRjOWE2ZjM4MTJmNzEzMGI3NmE2
Yjk1MzdjNWM3NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNDQsNyArNDQsNyBAQAogI2luY2x1
ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKICNpbmNsdWRlIDx3dGYvQVND
SUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oCmluZGV4IGNmMmJkN2FjMGFmMWIyNzRkOTgzYmQ2YmZjZjI0ZTM4MWQxMjIz
ZTcuLmU5NmY4NjAyYTg3YTkzNTI2OTY5Njc2NWM4MGU3MzAyY2Y3MzdlYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggODEy
ZjhhMDJkMzBhMTY4M2NlOTQ2ODRmODcxMDIwZTZiYmI5OWQxOC4uMzg5NWU0NDk2NzUwN2M1ZWU5
OWNjMjJmNDNlNzIxZjI5MTM3NWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmgKQEAgLTM5LDcgKzM5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDk0MzM5ODQ3NTdlMWI0YzkxNDVlODBiN2QyMjcx
ZjllMjRhMjc0MGIuLjA2OGI1YzI2MjNjNDEwMGM5N2U2NzMyY2I1MjcxYzMxZDBlZGRjN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xODcsNyArMTg3LDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAog
ICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLm1tCiAKLSAgICBw
bGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0Yu
Y3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xOTUsNyArMTk0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3Bw
CiAgICAgcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogICAgIHBsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgcGxhdGZv
cm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KICAgICBwbGF0Zm9y
bS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKQEAgLTM5OSw3ICszOTcsNiBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24u
bW0KICAgICBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvVGhyZWFk
Q2hlY2subW0KLSAgICBwbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL1Vz
ZXJBY3Rpdml0eU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9WYWxpZGF0aW9uQnViYmxlTWFjLm1t
CiAgICAgcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGEyNGE5MTk1MzYwYTNjNWI0NjBkNjI4ZTJmODQ0
ZWQwMTkxOWZkNzIuLjY1ODZiMDI0NjFhNDcyMTdlZjA4ZDVlYzBiM2NkYzMxNjY2MTEzZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNTAsMTIgKzI1MCwxMCBAQCBpZiAoVVNFX0NG
KQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBsb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAogCi0gICAgICAgIHBsYXRmb3JtL2NmL0NGVVJMRXh0
cmFzLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgICAgIHBs
YXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCi0gICAg
ICAgIHBsYXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgICAgIHBsYXRmb3JtL2NmL3dpbi9DZXJ0
aWZpY2F0ZUNGV2luLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGZjMjg4YjAxMzkxZDc1MmIyNGRj
OWZhZTcxZWZmMGYwZWI4YmU1YWYuLjYyMTkxYzAyZTM1MzcyZDc2YjMxN2YyNzRmNWE4MzVlNjcz
MDY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNTM1LDggKzE1MzUsNiBAQCBwbGF0Zm9ybS9UaGVt
ZS5jcHAKIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9ybS9UaHJlYWRUaW1l
cnMuY3BwCiBwbGF0Zm9ybS9UaW1lci5jcHAKLXBsYXRmb3JtL1VSTC5jcHAKLXBsYXRmb3JtL1VS
TFBhcnNlci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAKIHBsYXRmb3JtL1dlYkNvcmVD
cm9zc1RocmVhZENvcGllci5jcHAKIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTgxMzZhOTM4YzRlODg5MDJhZDU0YWZmMWQxMTUyOGZm
YWM2MTNhOC4uZmI5ZDkyMDE0NjJhMmYxZWI0NmNjMGJhYTUxYjNhNTY4NjgwYjQwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xNzgsNyArMTc4LDYgQEAgcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3Bw
CiBwbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCiAKLXBsYXRmb3JtL2NmL0NGVVJM
RXh0cmFzLmNwcAogcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE4Niw3
ICsxODUsNiBAQCBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKIHBsYXRm
b3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcAogcGxhdGZvcm0vY2YvUnVuTG9v
cE9ic2VydmVyLmNwcAogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCi1wbGF0Zm9ybS9j
Zi9VUkxDRi5jcHAKIAogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
Q29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAK
QEAgLTQ1OCw3ICs0NTYsNiBAQCBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCiBwbGF0
Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0KIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQog
cGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tIEBuby11bmlmeQotcGxhdGZvcm0vbWFjL1VSTE1h
Yy5tbQogcGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQogcGxhdGZvcm0vbWFjL1VzZXJB
Z2VudE1hYy5tbQogcGxhdGZvcm0vbWFjL1ZhbGlkYXRpb25CdWJibGVNYWMubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMzQ0
NGVlZTY1NjM5ZjVlNjc5ZDk2ODczMGNiMzkzOTM4ZGRjMGEwLi45YTg4MzJiNWJlNDI4NmVlNjZk
ZjRhZTkxNDBhNzJlMzQ0ZDY3OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQxLDcgKzE4NDEsNiBAQAogCQk1QzQzMDRC
MDE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRDE5MUFDOTA4MDAwRTJC
QzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgKi87IH07CiAJCTVDNDMwNEIxMTkxQUM5MDgw
MDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hh
ZGVyVGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzQzMDRCNjE5MUFFRjQ2MDAwRTJCQzAgLyogSlNF
WFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzQzMDRCNDE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJl
TE9ELmggKi87IH07Ci0JCTVDNkU2NTQzMUQ1Q0VGQkYwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNkU2NTQwMUQ1
Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOEM2MDA5MjEyNzZCODcw
MDgyRjg4RiAvKiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEM2MDA3MjEyNzZCMEYwMDgyRjg4RiAv
KiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0ExREVDNjFGNzFGMUM3MDBFNzFCRDMgLyogSFRU
UEhlYWRlckZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5MTcsNyArMTkx
Niw2IEBACiAJCTY1NkQzNzQ4MEFEQkE1REUwMEE0NTU0RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2RDM3MzAw
QURCQTVERTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU3QUZBRkMyMDA0N0EyOTAwNTA5NDY0
IC8qIFNwZWN0cmVHYWRnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1N0FGQUY4MjAwNDc4OTkwMDUwOTQ2NCAvKiBTcGVjdHJlR2FkZ2V0LmggKi87
IH07CiAJCTY1ODQzNjg2MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg0MzY4NTBBRTAx
Qjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBV
UkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5
MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTlBN0QxMzBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3Rp
dHV0ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1OUE3RDEyMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1OUREQzgzMDlFMTk4QkEw
MDFCRjNDNiAvKiBKU0RvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTlEREM4MTA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1QTIxNDY4
MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODA1LDcgKzM4
MDMsNiBAQAogCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4QUI1MTNGMUFG
QjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUJDQkI4QUJBMTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRl
cnZhbFRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JCOEFCQjEzRjFBRkIw
MDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNzEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxh
Y2tUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJQkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAv
KiBVUkxIYXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkZCNTNCMERDRDI5Q0Yw
MDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNDMEU4NzYxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0
dXJlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNDMEU4NzQxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5oICovOyB9
OwogCQlCQ0M1QkUwMTBDMEU5MzExMDAxMUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1QkRGRjBDMEU5MzEx
MDAxMUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmggKi87IH07CkBAIC00NjY5LDcgKzQ2NjYsNiBA
QAogCQlFMUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTE0NzA3
MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oICovOyB9OwogCQlF
MUEzMTYyRDEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUEzMTYyQjEz
NEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBNjQzRjIwRUMwOTcy
NTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBX
b3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJRTFBOEU1NjcxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUE4RTU2
NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUFERUNCRjBFNzZBQ0YxMDA0QTFBNUUgLyog
TWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxQURFQ0JEMEU3NkFDRjEwMDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQURFQ0NFMEU3NkFEOEIw
MDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFBREVDQ0MwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFu
bmVsLmggKi87IH07CiAJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFERURE
ODBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oICovOyB9OwpAQCAtNjExNiw3ICs2
MTEyLDYgQEAKIAkJMUE5MjdGQ0YxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wYXBpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBOTI3RkQwMTQxNkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbnBydW50aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBOTI3RkQxMTQxNkExNUIwMDNBODNDOCAvKiBucHR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wdHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBQTg0RjAyMTQzQkE3QkQwMDUxRDE1MyAvKiBTY3JvbGxDb250cm9sbGVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsQ29udHJv
bGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBODRGMDMxNDNCQTdCRDAw
NTFEMTUzIC8qIFNjcm9sbENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2Nyb2xsQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUFBRERBMTE0REI0MDlGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTg3NDAsOCArODczNSw2IEBACiAJCTVDNjY4RTY0MUU3QzZDMzUw
MEQzMkIzQiAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzY4OEFBMDFEMzgwNTA5MDAwQjU0RkEgLyogVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzY4OEFBMjFEMzgxMjZGMDAwQjU0RkEgLyogU29ja2V0UHJvdmlkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0UHJvdmlkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzZFNjUzRjFENUNFREM5MDBGNzg2MkUgLyog
VVJMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTFBh
cnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNkU2NTQwMUQ1Q0VEQzkw
MEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VVJMUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OEQ3MUQwRjFG
MkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTb2NrZXRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzhDNjAwNzIxMjc2QjBGMDA4MkY4OEYgLyogU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNob3VsZFNraXBTYWZlQnJvd3NpbmdD
aGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzk3QTMzNjFGNUY3QTY1MDAx
MDUyMDcgLyogUmVjdEVkZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
Y3RFZGdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg5NSw4ICs4ODg4LDYg
QEAKIAkJNjU3QUZBRkEyMDA0Nzg5QTAwNTA5NDY0IC8qIFNwZWN0cmVHYWRnZXQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFNwZWN0cmVHYWRnZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTdBRkFGQjIwMDQ3ODlBMDA1MDk0NjQgLyogU3BlY3RyZUdhZGdldC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjdHJlR2FkZ2V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8q
IEZyYW1lTG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZy
YW1lTG9hZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzUw
OUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzYw
OUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OTM5MjM5MDlBRTQzNUMw
MDJDNTMxRiAvKiBVUkxNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVVJMTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTlBN0QxMjBC
NkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN1YnN0aXR1dGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1OUREQzgwMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTA3LDcgKzEyODk4LDYgQEAKIAkJQkNCQjhBQjUxM0YxQUZC
MDAwNzM0REYwIC8qIFBPREludGVydmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBPREludGVydmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkI4QUI2
MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUE9ESW50ZXJ2YWxUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDQkI4QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9EUmVkQmxhY2tUcmVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNo
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTEhhc2guaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCRkI1M0EwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXaW5kb3dQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkZCNTNCMERDRDI5Q0Yw
MDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDMEU4
NzMxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MUGljdHVyZUVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyNTIsOCArMTQyNDIsNiBAQAogCQlFMUE1Rjk5QTBF
N0VBQTI1MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdv
cmtlclNjcmlwdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V29ya2VyU2NyaXB0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MUE2NDNGQzBFQzA5N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBOEU1NjQxNzU1MkIyQTAwNzQ4
OEU3IC8qIENGVVJMRXh0cmFzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENGVVJMRXh0cmFzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBOEU1
NjUxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENGVVJMRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxQUIxRUE4MTRFOUUyN0QwMDQ0OUUxMyAvKiBGaWxlTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRmlsZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFC
MUVCNzE0RTlFMzU4MDA0NDlFMTMgLyogRmlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUJCMTRFOUUzN0EwMDQ0OUUxMyAvKiBGaWxlRXJy
b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEZpbGVFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNjIzNCw4ICsxNjIyMiw2IEBACiAJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTFBOEU1NjQx
NzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCAqLywKLQkJCQlFMUE4RTU2NTE3NTUy
QjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLywKIAkJCQk1MTYwMzA2QjBDQzQzNjIzMDBD
OEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQk1MTdBNjNCRjFCNzQzMTdFMDBFN0RD
REMgLyogS2V5ZWREZWNvZGVyQ0YuY3BwICovLAogCQkJCTUxN0E2M0MwMUI3NDMxN0UwMEU3RENE
QyAvKiBLZXllZERlY29kZXJDRi5oICovLApAQCAtMTYyNDcsNyArMTYyMzMsNiBAQAogCQkJCTJE
NzZCQjgzMTk0NTZGODEwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuY3BwICovLAogCQkJCTJE
NzZCQjgwMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCAqLywKIAkJCQk1MTJE
RDhFMjBEOTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICovLAotCQkJCTFBOTg5
NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNm
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0Njk5LDExICsyNDY4NCw2IEBACiAJ
CQkJMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oICovLAogCQkJCTkz
MzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi8sCiAJCQkJOTMwNUIyNEMwOThG
MUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8sCi0JCQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFG
IC8qIFVSTC5jcHAgKi8sCi0JCQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oICov
LAotCQkJCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi8sCi0JCQkJNUM2
RTY1M0YxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgKi8sCi0JCQkJNUM2RTY1NDAx
RDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5oICovLAogCQkJCTg2ODE2MEQxMTg3NjY5QzQw
MDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuY3BwICovLAogCQkJCTg2ODE2MEQyMTg3NjY5QzQwMDIx
RTc5RCAvKiBVc2VyQWN0aXZpdHkuaCAqLywKIAkJCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYg
LyogVXNlckFnZW50LmggKi8sCkBAIC0yNzQ3Niw3ICsyNzQ1Niw2IEBACiAJCQkJQ0QzMTg2MjMx
OTlGMUUyQTAwMzBBMEY3IC8qIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RkE5MDRDQTE3OEU2MUY1MDA0QzhB
MkQgLyogQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMUE4RTU2NzE3NTUy
QjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzZGRDE1
MTZDNzgyNjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTdCQzY5REQxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNUZGRjEyQjAyNjc2MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdl
ck5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzA5MTYsMTEgKzMwODk1LDggQEAKIAkJCQlFNEFG
Q0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RDA4NkZFOTgwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEMTc2MkUwMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI2NzcyNjA1MUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUJDQkQyMUFCMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNTVCM0RERTEyNTFGMTJEMDAzRUYyNjkgLyogVVJMSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1QzZFNjU0MzFENUNFRkJGMDBGNzg2MkUgLyogVVJMUGFy
c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0MyODlERjFBQTBGRTVEMDA5QTlDRTMgLyogVVJM
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzN0EyMUQ1N0IzRkUwMEFCODVFQSAv
KiBVUkxVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyNzYzQkYxNjY4OUJGQjAwMkZDQUNC
IC8qIFVzZXJBY3Rpb25FbGVtZW50U2V0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKaW5kZXgg
ZjNlMzQ2YmVhN2UxOGJlZDJiODk5MDY3NGI2ZTIyZmM0YTAyNWNjMi4uNjJjZDU0YTg0YWI0YTVm
MDJmYWM3YjcyNWY2MGQ3ZThhZDEyYzJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKQEAgLTQwLDcgKzQwLDYgQEAg
Y2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBKU0RPTUdsb2Jh
bE9iamVjdDsKIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKLWNsYXNzIFVSTDsKIAogY2xh
c3MgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2Fj
aGVkTW9kdWxlU2NyaXB0TG9hZGVyPiwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3Jp
cHRGZXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRj
aGVyLmgKaW5kZXggNTIyYjJmZmMwNDMyYzE4OTRhNDVjMDJiNjk1OWU5ZTYwYTg0MzU2ZS4uZDUz
OTFjNjk3ZDdjZjRmNmY1ZDQwNzljYTI3MmVmNzdlYTljYWJhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaApAQCAtMzMsNyArMzMsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERvY3Vt
ZW50OwotY2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRTY3JpcHRGZXRjaGVyIDogcHVibGljIEpT
Qzo6U2NyaXB0RmV0Y2hlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDg4NjlkYjFmOWEzMmRkYzNkMjA1YzhmZjg1
ZDIyOTQwMTlkMjliMzEuLmQ2Yzc5Y2QyMGFkNTcxMjhhZDdlNjc5NmI1ZTFmNjQxNjFkNDFjMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CkBAIC01ODksNyArNTg5LDcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2UKIAogYm9vbCBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91
bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZK
YXZhU2NyaXB0VVJMKQogewotICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAg
ICBpZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSB8fCAhbV9mcmFtZS5kb2N1bWVudCgpLT5j
b250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhtX2ZyYW1lLmRvY3Vt
ZW50KCktPnVybCgpLCBldmVudEhhbmRsZXJQb3NpdGlvbigpLm1fbGluZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZjdjMDgyNGUwNmNj
NzE0NjljMDcwZDY4OGU0MjY4MjRjOWMzYzRmMC4uNmU5ZGRjYTA4ZGUwZjY4MThhMDc2NzViYWE2
ZjRhZTRkZWVlYmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaApAQCAtNjAsNyArNjAsNiBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdDsK
IGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIGNsYXNzIFdpZGdldDsKIHN0cnVjdCBF
eGNlcHRpb25EZXRhaWxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5oCmluZGV4IDkxZmY5OWMxNTBjZmJjOGZiNmVhNzBmNWY1MDQyYzdhYTFl
NDM0NGIuLmE2MDY2ZjRjZTM5OTk5NmM2NTRkYjYwM2MwYTQ3MjRkZDA4NDAzNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCkBAIC0yNywx
MCArMjcsMTAgQEAKIAogI2luY2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIgogI2lu
Y2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5o
IgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1Zh
bHVlLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggNTZlZTY5MGRl
ODQxNTlhNTdjNDI4YTkwNzM5YjIwNTZmZmRkYmZkNi4uYjdkN2ViOTNjYmFjYjc0YTgxYzAwN2U1
ZWYwOTgxMjI1YmM5YTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFNvdXJjZUNvZGUuaApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNj
cmlwdFNvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NvdXJjZVBy
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQppbmRleCBkMTFiNDJlNmU3ZTc1NDcwNDI3NDMzODEzYzM1OThjNDAwMGU4OTRkLi41ZjNl
YTczZjk3NjQxMjAwNWZjMzkyN2IwNmUxMWI2YjUxODIzZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDUzMiw3ICs0
NTMyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAoTmVlZHNJbXBsZW1l
bnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDdXN0b21IZWFwU25hcHNob3R9KSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPiIpOwogICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7Ci0gICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJVUkwuaCIpOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHd0Zi9VUkwu
aD4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6aGVh
cFNuYXBzaG90KEpTQ2VsbCogY2VsbCwgSGVhcFNuYXBzaG90QnVpbGRlciYgYnVpbGRlcilcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNl
bGwpO1xuIik7CkBAIC00NTQ0LDcgKzQ1NDQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgIH0KIAogICAgIGlmICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbikgewotICAgICAgICAk
aW1wbEluY2x1ZGVzeyJVUkwuaCJ9ID0gMSBpZiAkaW5kZXhlZEdldHRlck9wZXJhdGlvbi0+dHlw
ZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siPHd0Zi9VUkwu
aD4ifSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0
cmluZyI7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9u
JC8gb3IgJGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxpc3QiKSB7CiAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
Ik5vZGUuaCJ9ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKaW5kZXggMTE3OTU4NzUzNTFiZjJl
MzYzYzkxNGVkZDc0MTM1MWI3NDJhMjlhYy4uNmQ5YmQxN2I2ZDE1NGUwYmYwYTZmZjhiMDFiMDAx
ZDMzNTZkZmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKaW5kZXggNmQ3ZmFhMmI3N2RhZDZh
NDczZDA5Y2E2ZmYyOWIzODk2YzVjNGEyYi4uMDc5YzY2NjI5NGFlZWNhODI3NGFlMmJjZTVlZmU0
ZWE3N2IxNmI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTTWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNo
b3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1h
cExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVh
ZE9ubHlNYXBMaWtlLmNwcAppbmRleCAwMDhkY2ViYTQyYzZkNGM2ZmIyYzlhOTEzZmZiNmQzM2Zk
MGYxYzgzLi45N2Q0ZjNhYjRmYTE2MDJhZTQ5MGFlODZjOTZlMGMzODQ3OGJmOTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1h
cExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1JlYWRPbmx5TWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpTRE9N
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDYyOTE2ZDM2YmI1NWE2OTMyMjYyZmZhNTVkYzI0
Y2U2ZWUzYmU4NjMuLjRkOWYxNDJjNTQ0MzI4MWU1OGZmY2IwNTU2NGU1Y2RjYmZjNGQ1NGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RB
Y3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmluZGV4IDY0MDZiZTk5OTAzZDE0YzFi
MTcxMDhiOGZhM2QxMjkyZTFmYzkwNzAuLjRhMDI3OTM2YjlkYjk5MzYwYmZkZDc4YTk3YjZiMzVk
NjQ2ODZjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBA
CiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCmluZGV4IGFkYWQwNDliMTRjNGFhNWYyNWFlYWQ5NDYw
YjFjMmJmYTYxOTIyNGUuLjM0MmEwZGY4ZDFlMjgzNTI4NGJjMzZiZTYxZGJiYmYyN2JiMjhkMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKQEAgLTMw
LDEyICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAK
aW5kZXggNDYxYzRkOTZhNWYzOTBkYzhmMTkwMDk1Y2I3NDU2NGE3MTA3YTcyMi4uM2FkOGMyMzc5
M2E3YTY5YjgzMzRkZjViZDc1NDMyM2ZkOWFhYjcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNw
cApAQCAtMzcsMTIgKzM3LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDFkYjBhMzJk
NTVlNWNiN2MwZjk0Yzg1ZjJhZmM5Yzk4MmIyZWIwMGQuLjAwOGI1ZTg5NzY4Njk1ZjI1YzgzM2Jh
MzQ2MDFkNGJlNTdkMGUyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
CmluZGV4IGUxZjlmMTcwYTZjZDcyM2RiZTk1NTg0ZGNmNWZhZDA0MjQyY2VlODguLmE5NDU0ZTli
YTZiOTM4MDRhM2U5MDU5NGU5YTcwZTYwY2Q2YTFiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNw
cApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJ
VC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9N
SklULmNwcAppbmRleCA3NmM0MGZiMDQ1Nzk1MDNlYTViNTJjNDdlMDQ5NjBkYjIxOTk5ZjNhLi45
NWQ3NjcwNDczODhlMzhjMDEwMDQyOTVkOGNmMTM0NTZiZDQ0YmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNw
cApAQCAtNDEsMTIgKzQxLDEyIEBACiAjaW5jbHVkZSAiSlNFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SlNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRyYWNlcnMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5j
cHAKaW5kZXggODdiMzUzYzViNTk4NTg5ZDU5MDJiNzBlNjRmMzkwNzIxZmE5MmM5My4uMTI3ZmFh
OTY3ZDJhYzUzNmU0NmFiOTNkYmY1NmZkNTI1NGZlMTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiSlNUZXN0U3Vi
T2JqLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
ICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3Mu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCA1NWRlYThlZWFiMDdm
NzUwNWYxYTZiZGZjYzI0MWI2NzFjYmRlYTU2Li40NWRjMTkyNzA0OWJlMjcyMDU1MmE5OGI3ZGYy
MzViMGY1YTE1YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0z
MCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNu
YXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggMzA4ZTM0ZjAwMWFjMmQ4YjM1M2U4MDUxZDhlYzUx
YmJhZGQ2ZWUwYS4uNzFlM2JmMzc1NDQyOWVjN2E3Y2NjYTgzNTUxZDM5Mjg4YWMxZWVmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggMjM4YTQ4ZjdjNjVmMGQzY2I2ZjFlMDNmN2EyOWU5
ZTgyOWViY2JjZi4uZDMyYzA0Y2M1MGVlZGYyNjllZDgwMWQ2OTEyM2Y2YjUwNTQwNDcyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4
Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRl
eCAzNDIzOGJjNWQyMTNlYzQ5OWZiZTVhMjU1YzU2MThmMzA2ODViMmRjLi5hYzJiZWJiMmQ5MzI0
YTFhMmMyYWRkNmExNjBkMzdjNzc1YzIzYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IDcxYjhiZGRmNjhkYWVjYzcz
ZTIyMWNlODNkNjYwNzNjNzM4YjRlYzguLmIyMGI4M2M3YmU5ZTViMzdiOWNjNTc1ODY2M2UxNzg1
NTg1ZTM5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMg
QEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQogI2luY2x1ZGUgIlRlc3RHbG9iYWxPYmplY3RCdWlsdGlucy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDY2MDc4
YmQ2Y2I1MTFlMWQyZjQ2ODg4MjU4MmE3ZjkxZmJjMDZiYzkuLjU3ODkyNTM3YmU4NzgzMjRhNWRk
ZThmNmQxYzU5MmMxYjk2MmI3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAppbmRleCA2MjAzY2MwYjk4NzM5MjQ3N2ExZDliZjdiNTcwY2JlMzdjMTBlMzRmLi4z
NTVhZGNkOTBhZWZjZjU5NWQwN2VkNTQ2ZTRjYWFiMjBiM2VlMjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjcs
MTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDNmZGM1NjA0MDM1MGUxMzIxZGIy
NDY5N2I3MjcyNTU3ZGQxYTkwOGQuLjc2OTY3M2FmYmI0ZTYyMDFkOTRjMzJhODRjZjI0OWVlNjAz
ODhmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCkBAIC0yOSwxMyArMjksMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCmluZGV4IDRjNjRjMTllYjg1ODI2MDI5ZjYwYjkyNWIzMTllMTFhNzAzZDk0ZjcuLjY0YTM3
ODk5YTlkOTA3ZmM4NTI5OTg2YjNkMDQ5MWJmNzA3ODY2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXN0U3VwcGxl
bWVudGFsLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgfHwgRU5BQkxFKENvbmRpdGlvbjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogI2luY2x1ZGUg
IkpTRE9NQ29udmVydFN0cmluZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmUuY3BwCmluZGV4IDU1ZmZkNjdhMTUwZmUzMmM1ZWRhMzVlMzJkMjQ2
ZjY5MzJlOGViYWEuLmNmZjMyZmYwZWIzYWRkYTc3ZmU5NDYzYTJhNGY5OWNlNjU4YjQ5NzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcApA
QCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90
QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVy
YWJsZS5jcHAKaW5kZXggOTc5YzBmOGNjNWJhZDg0NmYwOTYxY2JkYTI2NGUwY2I3NmMxODMwYy4u
YWMxZThlN2Y5ZWY4MjkyNzhlMjQ1ODQ1YTY2MjMxYTVmY2JjYWIwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFi
bGUuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1
aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDUwYWRhOGNhZjBlZTZkMDJiYWRhODAxYjBiNjk4
YWVlOTU5ZDkzNjAuLjAwZmFmOWYwNTczZmQwMDc1ZGU4ZGU1MTQ5ZThlYjUwODc0Yzk0ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTMwLDEy
ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRl
eCAzMTg3ZDJkYWYzZDZlNzIxZTdlMDA4NWYyN2NjYjIyZjJiNDFkYWY5Li4zZmViZDFjZGVjNDBl
Y2VmYmEzMmJjZmM0MzYzMjQzNTE1Y2U2YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMjgsMTMgKzI4
LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBkMjcx
OTRlODNlNmFjNzc2NTMxYTlkYjc3MzBmMDU3NGMyZGZhZTFkLi5lMDVkNjU1NDZiZmExMTM2YTA4
NjQyOTU4NDcyY2Y1MGNhMmQ1MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEz
ICsyOCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggYjFmMzZk
NzNlMDM1YWZlNzhlZmU5MzJiMTRkZjkzY2VmZmJhNGRmMi4uZTAxNWIxNzhhNzY1MzhmODE5ZTUz
YWZlN2M1ZmJiYTc0MTg0Y2EzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMg
QEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTI5
OGExNzYwYzA4MzUyNjZjNDJlYjY2NDg2NGJmNjQ0ODJjN2IzMC4uZjFhODRhOGJhZDlhNWQ2MDVh
MTBlNDlkOWM1YzQyNzNkOTkyODdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01OYW1lZENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25h
cHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDU3ZDY3
YzIzNGUyNmI0ZGRkMDk0N2U0MDJlZjg5YjQ1MDJiNmRkNDMuLjg2MmI0NTlmYmIyMWQ3ZDEwMTI1
Njk1ZjVhMGVhZWZlZDc1NGY2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAppbmRleCBkMGZjZDJmMmI5MDMyNDk1YjRiNjU4YmU5YjMxYjdmZTU1YTA4
ODZhLi5jMTA1ZjE1ZGJhZjg1ZGJmM2ZlNDQzM2JhN2E4MDU1YTg0MmZhYTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAg
LTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDI1MTQxMGI1
ZmFlZjcwMDRjMDExNjY2NmZjZThlMWU5MGEzMzc5YTkuLjY0MTM5YzhmNmIyMGJiMzRiNjIzNmQ2
MjA0MWM3ZTZkMDI5ZDhhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01P
cGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCmluZGV4IDI3NThjYTEwYTE0MTJjNDEzOWIzMjU4NGYzY2Y5MmI0MDNhYmIwMTQuLmQ2
MTRiY2U0MjFmZTM0YzZmYmU2NzhiZDM3ZTUzMmQ1MmQyNzY0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtMjgsMTMg
KzI4LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aC5jcHAKaW5kZXggY2EyYmY2MTJhY2JjMmZkNGUwNDRhMTU5YTc2NDY3ZTVhYWNhYjli
Mi4uZWE0YzVjZDI3Zjg4NzlkMTc5ZWJiYjkxNTNkZjk5MzgxMGJlNzY0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllci5jcHAKaW5kZXggOTEyMGY0YmU3ZjIxYjc4ZDJjOWJmZjJkYjE3MjVhOTQ5NzRi
ZmNkMS4uNmU0MGRlZjNkNDRiYTM3Zjc2NDAwOTkxMjg5YWZjMTBlMjliN2I1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgs
MTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggM2JiN2QzYjdlMTJmODI5Yzg4YzM0
NGJhYmRiNDg2ODIyZjU3Y2JhMi4uZDM5MjRjYmE2MDg2Y2Y5MDg0NmJmMTEwODUwOTM0MjAxOGU0
MzM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
LmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGNiZDVkMzFhNjI2N2Vh
MWVlMjVkZTA5MTRkNjE0NjhiZmNkOTI1YjUuLmM3YTNjNmE5ZDU5NWRmZTY3MmNjNzJhYmRkZTAz
ZWZlNmM4MzI4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
CmluZGV4IDlmY2JmNjk3YjYzOWFlMDNkZGMwZWJiMjA4M2NlNzk5ZjczODgzNTMuLjk4ZWMxM2Rj
MmU3OWVmNWZkYTY0YmY3MmQ3NDNmMWJjZjM5ZTQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBA
QAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBiOGE5ZmFkZTg1YjRlOTg3YzcwNTJhMDI5
YTlkZDhmY2RhNmQzMjUwLi5kZGRmZjhjY2Q3MjU5YjM3NDVhNjZjYzdkYmU2YWFmZmY4MDllNmE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDE3MTQ3NzU1
MGIwYzM4NDU5NTYyZjZhNzVjMmU4M2Q4MzE1ZGI5MjQuLmI2NjFmNTNjZDI4NzA4ODgzYTExYzhj
MjA1ZTcwNDgwOTUzMTdmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyLmNwcAppbmRleCAxMDNmOTFjMWJhYTJhYTM5ZjFlMzk5YWFmZWNlNTgxMTkx
MTE2ZGVlLi5jMzVmZjg5NmM0OGQ4YmIyODc4MjNiZGYwYTQ2MDdhMWIzZGE4NzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJh
dGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5k
ZXggZmMxMjJhMmUyYmJmODdiYTE0YjE2ZjcwNzk5ZTZjMjgwZjFlNGM0ZC4uOWYxMGQ2NGVlNWEw
ZDEzMTliOGNjZjg5NGRhOTBjOGFjMThhMTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMjgsMTIgKzI4LDEy
IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKaW5kZXggNDgw
N2IzNjU1MzMxOGUwNDJhOWI2N2I0NDQwODExOWQ2ODRlZDFkZS4uYzYwZGNhYjYzNTk1OTdkYjRm
ODgwZWRmNDA0MGFjODM0MzVhODI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCkBAIC0zMCwxMiArMzAs
MTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCBkZDUxOTMwNzMzYjZjZGFhNDllMWY2ODU2YjZi
NzFmMWUxMTdjYWRlLi40MGI5ODFlMzQ0MTA1N2Q3Y2JiN2ZlZTE3MGVlNTNjYjkwMzAxNzdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcApA
QCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCBk
ZTk2ZDNiOGNiZjIwMTI4YjM5NjM1ZGIzNmUwNjg0ZTlmODY2N2M2Li4yYjJkZWQ0YzJjNjg4YWY0
NDNmNGE5N2MwZmQ0OWIxMjYwMDA2NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0zNCwxMyArMzQsMTMg
QEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9P
YmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDBjYTVkYmRlMGM5NzM0ZTM5ODFlYzExYzFl
NzVlNzg4OWFiYjdiYmYuLjlmMjU0YjQ3ZWI5OWVlOTkwZDc1N2NkMjcyODhlYzhhMGI4OTcxNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCkBAIC03Nyw3ICs3Nyw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlQcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KQEAgLTkx
LDYgKzkwLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwCmluZGV4IGVhZjA5MmFmM2YzYTcxZTlkM2M0Y2Y2MDExYmZkOTE5MmFi
MjFiNWEuLjFhZGI3MDIxMmY0NTFjY2U4NWIwOGNkYTAzNmZlNDc4MDg5YzM5NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTMyLDEyICszMiwx
MiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAppbmRleCAwNTgx
NDNiYTE0YmI0ZWIyMjQwOWM4ZDI4NDczNzUzZDg0ZjAzZTdmLi5iMDU1NjY4NTk2YmM2ZjI3Yzgy
YzcxNmZkMjM0ZTVkODBhYThhNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgpAQCAtMzcsNiArMzYsNyBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJy
aWRlQnVpbHRpbnMuY3BwCmluZGV4IDBkYjc3NGFmMTI1ZjVkMTg1MGY3OWE2MTcxNDc1ZTEzN2Fi
N2NkNjEuLmMxYTYzNDMwYWMwZDhhYzEzYmJhNGM0YTc0Mzk0OTAxOGM3MTFkMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAppbmRleCAyODM2MjQ3M2E3MDlm
NTk2NDZiYmViNjA0YmUzZGExMTFhMGE4Y2VkLi5iZWM1N2Q1NTE3ZDViMDljOGQyMGEwYWRlNDI5
N2NmMGFlOGRmY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcApAQCAtMjcs
MTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJK
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4IDhiMGY1MWVkMzE5NDFjODRhZWIy
NGEzNzNiZTliMTdjMDdmNzYzZDcuLjdhMjU4OTg2NzE0NjMwYTMwNTNiYzc0ODFhNWRlMGZlZjFi
ZDc5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCkBA
IC0zNCwxMSArMzQsMTEgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uLmNwcAppbmRleCBlM2MxY2MyNTlhMWQyNzg3OWEyNjdkOWY0NDU4
ZDVkNDg5YTY4NzkyLi43OGQxYzQxYzQyOGMwMWUxZjc1ZjZlOTFhNjRhZWIzMDVjMGE1MjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAKICNpbmNs
dWRlICJKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oIgogI2luY2x1ZGUg
IkpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25h
cHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5kaXJlY3RJbmhlcml0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCmluZGV4
IDk2MzY4ZjNlNmY3YmZmYThlMWE3ZWZiZmU3ZjUwNjNmNjQ2ZGJkYTcuLjEzM2VkYTAyZTY0MDE2
M2ZjOWJlNjU0MzQ4MjBmYjkyNWYwNGMwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0
YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcApAQCAtMjYsMTEgKzI2LDEx
IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwCmluZGV4IDM3ZjY1NGRkZmNkN2MxNWI3OGViNjcx
YzRhYWM2Nzg1ZDU0MDBiYjcuLmFkNTMxYjIwYjc0YmM2ZDI1OTU2OTE4MmVhZWZjNTMxMWNmOGUw
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcApAQCAtMjks
MTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZp
bmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcAppbmRleCA1ZTg2OTEwYWI1MjA4OGUzMTc3OTM2
NDlkNGM2MDcyYWM0ZTcyYjk0Li5hMWFjMmQwMTBlNTFjNDgzN2MwZjBiNTQ2MjI4MDM0YWQwZGI4
NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwu
Y3BwCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAz
NDJlZDFhYTUwYjQ2ODY4YmZiMzkxNjZhZTBmODNkMDhjNjgwMmE4Li5kZjdkZmI4Zjk2MWQ5NGZl
OGUyNGYwMWQyNDFmYjI0ZjZhOTRmYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBACiAj
aW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAppbmRleCBmZjJjYWQyY2FmZmM5YWRmMWFmZmE1M2Nk
ZjA5NzdjZmM4M2U4NzE1Li41MjQyYmI4YmFhYzZmYzhjYTE0MDQwNjBmMTUwYmIxZGQ3YzAxNWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uLmNwcAppbmRleCA4OWVkZmI0ZDU0ZmZjZTI5MzEyZTlkYzM3MGEyOTA0ZTg2
Mzg5NDhmLi43Y2FlMjQzOWVmNjI3YjZjMjY2MTczOTRiOTFjYzhiODA0ZmYwNTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAK
QEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKaW5kZXggYjE2YjZmYjRiZDE0ZTI0
ZDJkYWUwZjQ0YmFiZWE2NGQ4NDcwMGY0NC4uNTBhNDZmNjE0Zjk4NDhiNzY5Mjg1ZTE2Mzg5MDcz
YzEyOTE1N2ZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24u
aCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
cy5jcHAKaW5kZXggNWE1NGFjMTQzY2IyNzkzNjRlNjQ2YzMzMzRiMGNiYzE3YWU4MzQzNS4uMGEz
M2FmMzc4YTJiMTIxOWYyOTI4NGRjODllMTZkMzhiNzI0Nzc5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKQEAg
LTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCmluZGV4IGYy
NTE4YTcxZWQ2ODYxYzVhOGNhZjZiZWIzNGM1ZmNmNmJkMzBkZWYuLjQ5MDQ5MTc0ZTAzNmY1ZjE4
MDYyNDRjM2YyZWJkMTllMTY5NjJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC0yOCwxMiArMjgsMTIg
QEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCmluZGV4IDgxMjM3MmI0ZDRlZTcwYzQyM2EyODQzMzQ2
NTFkMTE1OGVhYWNlNTkuLmM5YzUyNjk4YjgyZDNmZmYyN2QyMzQ0ZmRkYjU1NDNkMDkyY2E0MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZS5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAppbmRleCAz
OTE3YjRkOTI5NmJhNTIzZGMxMzA3MDYxOWNmNGNlZDM4YTgzZmIxLi43NWVjMzhhZGI4ZmU4ODkz
MDQ2MDM1MzQ2YjU2NDQ2ZDdiMmI2MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2lu
Y2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCAxZTYxM2FhYjA2NTI0YWY1
NTYwNjMzZDg4MjI0OTdmZDFjMDFlMGEyLi4xODZhNDE2ZGE4NzNhNjRlNWRmNWM2NmViYmZkMDkw
MWFjZTVkZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQAogI2lu
Y2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IDcyNDA3MTU2ZWJkNjI2ODZhMTM0YjAx
YTRlNDBjZDUxMTZiNzU5ZGYuLmQwZWFiYTA5ZmQxMmVlYWY1YTEzN2EyYWI0ZGMyNDBiOTk3Yjc2
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZEluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTk0LDcgKzE5
NCw3IEBAIEJsb2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29u
dGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6TWFrZUhUVFBTOiB7CiAgICAg
ICAgICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwgdXJsLnByb3RvY29sSXMoIndz
IikpCi0gICAgICAgICAgICAgICAgJiYgKCF1cmwucG9ydCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCisgICAgICAgICAg
ICAgICAgJiYgKCF1cmwucG9ydCgpIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVy
bC5wb3J0KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKICAgICAgICAgICAgICAgICB3aWxs
TWFrZUhUVFBTID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNDQs
NyArMjQ0LDcgQEAgQmxvY2tlZFN0YXR1cyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nl
c3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZCgKICAgICAgICAgICAgIHdpbGxCbG9j
a0Nvb2tpZXMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6Ok1ha2VIVFRQUzoKLSAgICAgICAgICAgIGlmICgodXJs
LnByb3RvY29sSXMoImh0dHAiKSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSkgJiYgKCF1cmwucG9y
dCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5w
cm90b2NvbCgpKSkpCisgICAgICAgICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwg
dXJsLnByb3RvY29sSXMoIndzIikpICYmICghdXJsLnBvcnQoKSB8fCBXVEY6OmlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCiAgICAg
ICAgICAgICAgICAgd2lsbE1ha2VIVFRQUyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVT
ZWxlY3RvcjoKQEAgLTI3NSwxMiArMjc1LDEyIEBAIHZvaWQgYXBwbHlCbG9ja2VkU3RhdHVzVG9S
ZXF1ZXN0KGNvbnN0IEJsb2NrZWRTdGF0dXMmIHN0YXR1cywgUGFnZSogcGFnZSwgUmVzb3VyCiAg
ICAgaWYgKHN0YXR1cy5tYWRlSFRUUFMpIHsKICAgICAgICAgY29uc3QgVVJMJiBvcmlnaW5hbFVS
TCA9IHJlcXVlc3QudXJsKCk7CiAgICAgICAgIEFTU0VSVChvcmlnaW5hbFVSTC5wcm90b2NvbElz
KCJodHRwIikpOwotICAgICAgICBBU1NFUlQoIW9yaWdpbmFsVVJMLnBvcnQoKSB8fCBpc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgpLnZhbHVlKCksIG9yaWdpbmFsVVJM
LnByb3RvY29sKCkpKTsKKyAgICAgICAgQVNTRVJUKCFvcmlnaW5hbFVSTC5wb3J0KCkgfHwgV1RG
Ojppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgpLnZhbHVlKCksIG9y
aWdpbmFsVVJMLnByb3RvY29sKCkpKTsKIAogICAgICAgICBVUkwgbmV3VVJMID0gb3JpZ2luYWxV
Ukw7CiAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAgICAgICAgaWYgKG9y
aWdpbmFsVVJMLnBvcnQoKSkKLSAgICAgICAgICAgIG5ld1VSTC5zZXRQb3J0KGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2woImh0dHBzIikudmFsdWUoKSk7CisgICAgICAgICAgICBuZXdVUkwuc2V0UG9y
dChXVEY6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woImh0dHBzIikudmFsdWUoKSk7CiAgICAgICAg
IHJlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApp
bmRleCBhMjk2ZmY5N2ZiY2ZlYzkwYjVhNjBjZmVjM2M4MGM0MGU4ZTQxODMzLi4zNGNmYWNhNTAx
ZmQzYzcyYzk2NjdlOGY0YjcwZGUyNzdhYWM1YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApA
QCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50TG9h
ZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgUmVzb3Vy
Y2VMb2FkSW5mbzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCA1ZDM4NmFmZGZiMjk3M2Y2OTYw
MjcxY2YzNjc5MTJhMWUzNzc0M2U0Li4zNmM3YzY0ZGNiODQyNzAyNDYzMGYwZjc5MTYzMWI3Nzhk
ZGE5ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMjAsMTIgKzIwLDEyIEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydGllcy5oCmluZGV4IDNmNGI2NWFiNzI4OGRkMGYzYjE2MWJhNDFiZDUw
NWRmMmUzNzU1MGMuLjM0MjE2M2RiNTAzNjM2MjA0ODNlYmQwMmIzYmNjOTJmZGM2YTI4MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3Mg
Q1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ29sb3I7
CiBjbGFzcyBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM7Ci1jbGFzcyBVUkw7CiBjbGFzcyBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
OwogY2xhc3MgU3R5bGVkRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4
IDRlNDhjMzA0YTU3NzExZTNmNzc0ODZmM2M5Njc2MmQ2NGZlMWIxMDYuLjIwY2ZjZDcxMTUyNWIz
ZmRjMDM0MDhmY2UyNTYzYzQ2MTQzYmVlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
aApAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKLWNsYXNzIFVSTDsKIGNsYXNzIEtleWZyYW1lTGlz
dDsKIGNsYXNzIEtleWZyYW1lVmFsdWU7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVNoZWV0LmgKaW5kZXggZThiNWJmYzU2Mjg3YTRkOTgyOGU4OTNkODU3OWNiYThi
OGVlYmNjMi4uYmFiNGU2Mjc5NDdiNmVlODVkODQ5OTVjM2ZkMDIzNDIxOGQ0MzgxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldC5oCkBAIC0zMCw3ICszMCw2IEBAIGNsYXNzIENTU0ltcG9ydFJ1bGU7
CiBjbGFzcyBNZWRpYUxpc3Q7CiBjbGFzcyBOb2RlOwogY2xhc3MgU3R5bGVTaGVldDsKLWNsYXNz
IFVSTDsKIAogY2xhc3MgU3R5bGVTaGVldCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU2hlZXQ+
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29u
dGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAppbmRleCAy
YzJiZDExN2FlMGE1YjIzZGYyNTAxNGI5ZTViOTMxMDdkOTU4YTQ1Li5kMTEyMDk4NGY1ZjQ0N2E3
ZDJmYjQxN2VmYzgxY2Y5NTZkOWFhM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5oCkBAIC0yMiwxMCArMjIsMTAgQEAKIAogI2luY2x1ZGUgIkNTU1BhcnNlckNvbnRl
eHQuaCIKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNv
bnRleHQuaAppbmRleCAxZWY3NzExZmQwY2JkYjUxNTIwZmZkYWQ4NjIzNzc3NzY4OTJkMjY0Li5k
YmQyMzc3NTM0YTRjOTg3NTk5YWUxYmNhNGY4YTM3MmM1ZDVkYTBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaApAQCAtMjcsOSArMjcsOSBAQAogCiAj
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaEZ1
bmN0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtODMsNyArODMsNyBAQCBXRUJDT1JFX0VYUE9SVCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCk7CiBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dEhhc2gg
ewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGtleSkK
ICAgICB7Ci0gICAgICAgIGF1dG8gaGFzaCA9IFVSTEhhc2g6Omhhc2goa2V5LmJhc2VVUkwpOwor
ICAgICAgICBhdXRvIGhhc2ggPSBXVEY6OlVSTEhhc2g6Omhhc2goa2V5LmJhc2VVUkwpOwogICAg
ICAgICBpZiAoIWtleS5jaGFyc2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGhhc2ggXj0gU3Ry
aW5nSGFzaDo6aGFzaChrZXkuY2hhcnNldCk7CiAgICAgICAgIHVuc2lnbmVkIGJpdHMgPSBrZXku
aXNIVE1MRG9jdW1lbnQgICAgICAgICAgICAgICAgICA8PCAwCkBAIC0xMTUsNyArMTE1LDcgQEAg
c3RydWN0IENTU1BhcnNlckNvbnRleHRIYXNoIHsKIAogbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0
ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+IDogR2VuZXJp
Y0hhc2hUcmFpdHM8V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dD4gewotICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7
IG5ldyAoTm90TnVsbCwgJnNsb3QuYmFzZVVSTCkgV2ViQ29yZTo6VVJMKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShX
ZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QuYmFz
ZVVSTCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQogICAgIHN0YXRpYyBib29s
IGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQmIHZhbHVlKSB7
IHJldHVybiB2YWx1ZS5iYXNlVVJMLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgICBz
dGF0aWMgV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gV2Vi
Q29yZTo6Q1NTUGFyc2VyQ29udGV4dChXZWJDb3JlOjpIVE1MU3RhbmRhcmRNb2RlKTsgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCmluZGV4IDg3MWQ1
OTkxYjU3NmJiMzBmNDY1ODc4MTE4NzNkYWY2ZmE1OGJjYTQuLjI1NzVjMGRmMmI4N2M1OTA1Zjdk
YmMyY2U2ZmNjMzU0ZmI3YTk3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJJZGlvbXMuaApAQCAtMzUsOCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVVJMOwogICAgIAogLy8gU3BhY2Ug
Y2hhcmFjdGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBDU1Mgc3BlY2lmaWNhdGlvbi4KIC8vIGh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyN3aGl0ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXIuY3BwCmluZGV4IDZkMzlkYTQ1NWQ0MmYzMzgyZGM3NDI1ZGFkODAwN2JmZDY3MDdi
OWUuLjYwZTNiN2NlNjliZjk4MDg0NjUxMTdjOGE2NDM4NjM5YjE3NDUxMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MywxMCArNDMsMTAgQEAKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJT
dGF0aWNQYXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2Vi
Q29udGVudFJlYWRlci5oIgogI2luY2x1ZGUgIldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5o
IgogI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNs
dWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxp
c3QoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgaWYgKHR5cGUg
PT0gInRleHQvaHRtbCIpCiAgICAgICAgIHNhbml0aXplZERhdGEgPSBzYW5pdGl6ZU1hcmt1cChk
YXRhKTsKICAgICBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L3VyaS1saXN0IikgewotICAgICAgICBh
dXRvIHVybCA9IFVSTFBhcnNlcihkYXRhKS5yZXN1bHQoKTsKKyAgICAgICAgYXV0byB1cmwgPSBV
UkwoeyB9LCBkYXRhKTsKICAgICAgICAgaWYgKHVybC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBz
YW5pdGl6ZWREYXRhID0gdXJsLnN0cmluZygpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAidGV4
dC9wbGFpbiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmNThlYjJlNTljYjBkOGIxMWNi
NWE1NjQyYzAxZTQxZmJiZWM4ZGVmLi44NzI0ZTgxMTRiYjIxNGI1MDJjZWNhOThhYzZmMGMyNzdk
MjljZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMxMzYsNyArMzEzNiw3IEBAIHZv
aWQgRG9jdW1lbnQ6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzCiAKIHZvaWQgRG9jdW1lbnQ6OnNldFVSTChjb25zdCBVUkwm
IHVybCkKIHsKLSAgICBjb25zdCBVUkwmIG5ld1VSTCA9IHVybC5pc0VtcHR5KCkgPyBibGFua1VS
TCgpIDogdXJsOworICAgIGNvbnN0IFVSTCYgbmV3VVJMID0gdXJsLmlzRW1wdHkoKSA/IFdURjo6
YmxhbmtVUkwoKSA6IHVybDsKICAgICBpZiAobmV3VVJMID09IG1fdXJsKQogICAgICAgICByZXR1
cm47CiAKQEAgLTM0MjYsNyArMzQyNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1
aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sCiAgICAg
ICAgICAgICAgICAgY29tcGxldGVkVVJMID0gbV91cmw7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsKLSAgICAg
ICAgICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICAgICAg
ICAgIGlmICghV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZWRVUkwpKQogICAgICAg
ICAgICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdCgq
dGhpcywgZGVsYXksIGNvbXBsZXRlZFVSTCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJlc2ggIiArIG1fdXJsLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0byBhIGphdmFzY3JpcHQ6IFVSTCI7
CkBAIC00ODg4LDcgKzQ4ODgsNyBAQCBVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3QKICAgICAvLyBTZWUg
YWxzbyBbQ1NTXVN0eWxlU2hlZXQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpCiAgICAgaWYg
KHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFVSTCgpOwotICAgIGNvbnN0IFVSTCYgYmFz
ZVVSTCA9ICgoYmFzZVVSTE92ZXJyaWRlLmlzRW1wdHkoKSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0g
YmxhbmtVUkwoKSkgJiYgcGFyZW50RG9jdW1lbnQoKSkgPyBwYXJlbnREb2N1bWVudCgpLT5iYXNl
VVJMKCkgOiBiYXNlVVJMT3ZlcnJpZGU7CisgICAgY29uc3QgVVJMJiBiYXNlVVJMID0gKChiYXNl
VVJMT3ZlcnJpZGUuaXNFbXB0eSgpIHx8IGJhc2VVUkxPdmVycmlkZSA9PSBXVEY6OmJsYW5rVVJM
KCkpICYmIHBhcmVudERvY3VtZW50KCkpID8gcGFyZW50RG9jdW1lbnQoKS0+YmFzZVVSTCgpIDog
YmFzZVVSTE92ZXJyaWRlOwogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gVVJM
KGJhc2VVUkwsIHVybCk7CiAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwsIG1fZGVjb2Rlci0+
ZW5jb2RpbmdGb3JVUkxQYXJzaW5nKCkpOwpAQCAtNzE2Miw5ICs3MTYyLDkgQEAgRG9jdW1lbnQm
IERvY3VtZW50OjplbnN1cmVUZW1wbGF0ZURvY3VtZW50KCkKICAgICAgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8RG9jdW1lbnQmPigqZG9jdW1lbnQpOwogCiAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkp
Ci0gICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxw
dHIsIGJsYW5rVVJMKCkpOworICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBIVE1MRG9jdW1l
bnQ6OmNyZWF0ZShudWxscHRyLCBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGVsc2UKLSAgICAgICAg
bV90ZW1wbGF0ZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBibGFua1VSTCgp
KTsKKyAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRy
LCBXVEY6OmJsYW5rVVJMKCkpOwogCiAgICAgbV90ZW1wbGF0ZURvY3VtZW50LT5zZXRDb250ZXh0
RG9jdW1lbnQoY29udGV4dERvY3VtZW50KCkpOwogICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0
VGVtcGxhdGVEb2N1bWVudEhvc3QodGhpcyk7IC8vIGJhbGFuY2VkIGluIGR0b3IuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCmluZGV4IGE3OTZiNDkwN2MxMjE1OGMwNmJmYTYyNTMxZDhmMTdlY2UwYWFjNDIu
LjFkOWNmODQ0ODNjNGUxYmIzOWFlMjk3MzQ2NDczYTFjZTYzMzViYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCkBAIC02NzEsNyArNjcxLDcgQEAgY2xhc3MgRG9jdW1lbnQKIAogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KICAgICB2b2lkIHNldFVSTChj
b25zdCBVUkwmKTsKLSAgICBjb25zdCBVUkwmIHVybEZvckJpbmRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV91cmwuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IG1fdXJsOyB9CisgICAgY29uc3QgVVJM
JiB1cmxGb3JCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKSA/IFdURjo6
YmxhbmtVUkwoKSA6IG1fdXJsOyB9CiAKICAgICAvLyBUbyB1bmRlcnN0YW5kIGhvdyB0aGVzZSBj
b25jZXB0cyByZWxhdGUgdG8gb25lIGFub3RoZXIsIHBsZWFzZSBzZWUgdGhlCiAgICAgLy8gY29t
bWVudHMgc3Vycm91bmRpbmcgdGhlaXIgZGVjbGFyYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggZDkxZmU0MzE1ZTYyNmYxNDBkYzY4YmU1OTU3ZjZhMDRkNmY0NjAwNy4uOGIzN2I5ZmYz
MmY2YzhhNTk4YWYyNmVlYWEwMjgwNTZhMzRjNDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtMTcxOSw3ICsxNzE5LDcgQEAgYm9vbCBFbGVtZW50Ojppc0V2ZW50SGFuZGxlckF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKIAogYm9vbCBFbGVtZW50Ojppc0ph
dmFTY3JpcHRVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgcHJvdG9jb2xJc0phdmFT
Y3JpcHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZS52YWx1ZSgp
KSk7CisgICAgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgV1RGOjpwcm90b2Nv
bElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRl
LnZhbHVlKCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzdHJpcFNjcmlwdGluZ0F0dHJpYnV0ZXMo
VmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXggOGVlYzI2YTlkNTQ0ZTEzODQ2
ZDhhNDA0Mzk2NWZjZDcwNWUyMDQ3MC4uYzI3ZmRlNDhkNjYwYmQ1OWRjNjJmYTQzYmNhZDY1YjRi
YWIwNTZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRP
d25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4
dEZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBzaGFkb3dS
b290ID0gZWxlbWVudC5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIC8vIFVzZXIgYWdlbnQg
c2hhZG93IHRyZWVzIGNhbid0IGNvbnRhaW4gZG9jdW1lbnQtcmVsYXRpdmUgVVJMcy4gVXNlIGJs
YW5rIFVSTCBhcyBiYXNlIGFsbG93aW5nIGNyb3NzLWRvY3VtZW50IHNoYXJpbmcuCi0gICAgYXV0
byYgYmFzZVVSTCA9IHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jv
b3RNb2RlOjpVc2VyQWdlbnQgPyBibGFua1VSTCgpIDogZWxlbWVudC5kb2N1bWVudCgpLmJhc2VV
UkwoKTsKKyAgICBhdXRvJiBiYXNlVVJMID0gc2hhZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2Rl
KCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCA/IFdURjo6YmxhbmtVUkwoKSA6IGVsZW1l
bnQuZG9jdW1lbnQoKS5iYXNlVVJMKCk7CiAKICAgICBDU1NQYXJzZXJDb250ZXh0IHJlc3VsdCA9
IENTU1BhcnNlckNvbnRleHQgeyBlbGVtZW50LmRvY3VtZW50KCksIGJhc2VVUkwsIGVsZW1lbnQu
ZG9jdW1lbnQoKS5jaGFyYWN0ZXJTZXRXaXRoVVRGOEZhbGxiYWNrKCkgfTsKICAgICBpZiAoc2hh
ZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2Vu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAppbmRleCBhNTIwMmQ1YzVkYWNlZTgyODk2YzRlMDM3Mjc0NzE1N2Y5
ODYxOTgzLi5mM2RlNzAxZDZkNGJhODQ1NjE3MmY2NjQzYzYxZjk1MTRhZTM0YTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBEb2N1bWVudCogTm9kZTo6b3duZXJEb2N1
bWVudCgpIGNvbnN0CiBjb25zdCBVUkwmIE5vZGU6OmJhc2VVUkkoKSBjb25zdAogewogICAgIGF1
dG8mIHVybCA9IGRvY3VtZW50KCkuYmFzZVVSTCgpOwotICAgIHJldHVybiB1cmwuaXNOdWxsKCkg
PyBibGFua1VSTCgpIDogdXJsOworICAgIHJldHVybiB1cmwuaXNOdWxsKCkgPyBXVEY6OmJsYW5r
VVJMKCkgOiB1cmw7CiB9CiAKIGJvb2wgTm9kZTo6aXNFcXVhbE5vZGUoTm9kZSogb3RoZXIpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAppbmRleCA1MmRhNmQxMWEwMTBmZjQzYTM2OTU1NWFmNzc5OTQ2MWJjYTJh
NThiLi4xMjQzOWQ3OGQzNWM0YzI4MjFhNzI1NGQwMzIxNDUwMzVmYjQ3ZjlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKQEAgLTMxLDExICszMSwxMSBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgi
CiAjaW5jbHVkZSAiU3R5bGVWYWxpZGl0eS5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgotI2lu
Y2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIC8vIFRoaXMgbmVl
ZHMgdG8gYmUgaGVyZSBiZWNhdXNlIERvY3VtZW50LmggYWxzbyBkZXBlbmRzIG9uIGl0LgogI2Rl
ZmluZSBEVU1QX05PREVfU1RBVElTVElDUyAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaApp
bmRleCBhNjFkYWQ0NWU5ZTQ0NGZhMzIyZTU5ODIyYjRlOGU2YjFlOGY2ZGI3Li42MjQ1NGU3OTNj
YjEzMzRmNjRjY2YzYmUyMDk1ZDMzY2E5YTcyYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmgKQEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIExvYWRhYmxlTW9k
dWxlU2NyaXB0OwogY2xhc3MgUGVuZGluZ1NjcmlwdDsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7
Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFNjcmlwdEVsZW1lbnQgewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggM2JkZmNjODBkYmU2ZTZh
ZGFkNTg3N2QxZmVlMzAxMTI3Mzc2ZDU2My4uNGIyM2Y0N2Y3ZGUzZGJlMGRmY2NhNGJhYzI3ZjA0
NTI2OWZmODAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC02OCw3ICs2OCw2IEBAIGNsYXNzIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNvY2tldFBy
b3ZpZGVyOwotY2xhc3MgVVJMOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogY2xhc3Mg
U2VydmljZVdvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAppbmRleCA5ZjIx
NWZiYTFiNTNmMjU2MTVjYzBkYTNjYzczNDIwNTAxMjVhY2E1Li5jMGNjOGUyMTEwOWQ2M2JmNGEz
MmU5YjVhN2M0ZjE5NWE0ODA3MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Vj
dXJpdHlDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5o
CkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgU2VjdXJpdHlPcmlnaW5Qb2xpY3k7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQ
b2xpY3k7Ci1jbGFzcyBVUkw7CiAKIGVudW0gU2FuZGJveEZsYWcgewogICAgIC8vIFNlZSBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNhdHRyLWlmcmFt
ZS1zYW5kYm94IGZvciBhIGxpc3Qgb2YgdGhlIHNhbmRib3ggZmxhZ3MuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKaW5kZXggNjdlN2VlZWM0OWM4ODdiNjYxZTQ1NTUwN2ZhMGM4MjFmN2VjNjA5
Zi4uMTY4NjI5MDVmYTYyZTI2YjcwMjJiMWYxMTNjZjNkOTkyMGE0YWJmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcApAQCAtMTUxMCw5ICsxNTEwLDkgQEAgdm9pZCBFZGl0b3I6OmNvcHlV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3Rl
Ym9hcmQKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRVUkwpOwogfQogCi1QYXN0ZWJv
YXJkV3JpdGVyRGF0YTo6VVJMIEVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK1Bhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkxEYXRh
IEVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB0aXRsZSkKIHsKLSAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMIHJlc3VsdDsKKyAgICBQ
YXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMRGF0YSByZXN1bHQ7CiAKICAgICByZXN1bHQudXJsID0g
dXJsOwogICAgIHJlc3VsdC50aXRsZSA9IHRpdGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5k
ZXggNmZmMjg2NmIxNDhmZGY0ZmY5MjA1Y2QzZGZmOTRlZDAyYmVjOTUzYi4uZmMyNTQwMzIyOTIx
ZGYyZmJlNzYxZWM2NjliNDM2MTI4Mjg2Mzc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBA
IC0xNzAsNyArMTcwLDcgQEAgY2xhc3MgRWRpdG9yIHsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29weVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICB2b2lkIGNv
cHlVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYpOwotICAg
IFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkwgcGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMRGF0
YSBwYXN0ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwog
I2lmICFQTEFURk9STShJT1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5SW1hZ2UoY29u
c3QgSGl0VGVzdFJlc3VsdCYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFy
a3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDM1M2RiYTY5Mjc0OWIxOGNiYTkxMzE1NDAxZmFmYWVj
NGJmMDM4NTEuLmZkN2Y4YTgxODE4MjQzYzE2Mjg2ZmNhNzhjMDNmNDAzNjJkODZkOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0zNSw3ICsz
NSw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCkBAIC0yMzIsNyAr
MjMyLDcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRl
VmFsdWUoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb24KICAgICBjb25zdCBTdHJpbmcgcmVzb2x2
ZWRVUkxTdHJpbmcgPSByZXNvbHZlVVJMSWZOZWVkZWQoZWxlbWVudCwgYXR0cmlidXRlLnZhbHVl
KCkpOwogICAgIFVDaGFyIHF1b3RlQ2hhciA9ICciJzsKICAgICBTdHJpbmcgc3RyaXBwZWRVUkxT
dHJpbmcgPSByZXNvbHZlZFVSTFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBpZiAocHJv
dG9jb2xJc0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcpKSB7CisgICAgaWYgKFdURjo6cHJv
dG9jb2xJc0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcpKSB7CiAgICAgICAgIC8vIG1pbmlt
YWwgZXNjYXBpbmcgZm9yIGphdmFzY3JpcHQgdXJscwogICAgICAgICBpZiAoc3RyaXBwZWRVUkxT
dHJpbmcuY29udGFpbnMoJyInKSkgewogICAgICAgICAgICAgaWYgKHN0cmlwcGVkVVJMU3RyaW5n
LmNvbnRhaW5zKCdcJycpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9EYXRhRGV0ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24uaAppbmRleCBmMjVmYWFlMzc1NzA2MTFlN2RmMjI5ZWU4YWYxMzNmNDVkYWFmN2Y0Li4x
NTA0ZjZmMzRmN2UxNWZjYTJjNzBiNDQzNzZhMTY4OGM0ZjU3Zjc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaApAQCAtNDEsNyArNDEsNiBAQCBjbGFz
cyBFbGVtZW50OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNz
IFJhbmdlOwotY2xhc3MgVVJMOwogCiBlbnVtIERhdGFEZXRlY3RvclR5cGVzIHsKICAgICBEYXRh
RGV0ZWN0b3JUeXBlTm9uZSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbQppbmRleCBhZjYxZjM2YjhiNDhlZDhhMjdhYjBmZDVlYjhiM2ViNjFkYWZlNGQ1
Li5lYzM3OTVmZTY2ZTIwNTc1M2YzNmQ3NjZmZDI2NzEzN2JmNDEzZmU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTUxLDExICs1MSwxMSBAQAog
I2ltcG9ydCAiUmVuZGVyU3R5bGUuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIldlYkNv
bnRlbnRSZWFkZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAi
bWFya3VwLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBF
ZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRT
dHJpbmcgKmF0dHJpYnV0ZWQKIAogU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29u
c3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVy
bCk7CisgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAogUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCBjNWE4OGYzYWQ1YWY0YmRhY2UxMzY0MDg5MGQ3Y2Ew
OTlkNGJmMjM2Li5kNTdmMWFlNTYzMTRkMjljMjgzMGMxZDJjNGI3MmUwNDdmMGQzOTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbQpAQCAtNTQsNyArNTQsNiBAQAogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQg
IlNvY2tldFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IuaCIKLSNpbXBvcnQgIlVSTFBhcnNlci5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1w
b3J0ICJXZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIuaCIKQEAgLTYyLDYgKzYx
LDcgQEAKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJp
YnV0ZWRTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8
d3RmL1VSTFBhcnNlci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkxvY2FsRGVm
YXVsdFN5c3RlbUFwcGVhcmFuY2UuaCIKQEAgLTI4OCw3ICsyODgsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogCiAgICAgICAgIGF1dG8gbmFtZSA9IGltYWdlLmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9IFVSTFBhcnNlciB7IHJlc291cmNlVVJMU3RyaW5n
IH0ucmVzdWx0KCkubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgICAgIG5hbWUgPSBVUkwo
eyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygibWVkaWEi
KTsKIApAQCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAg
IGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgYXV0byBuYW1lID0gVVJMUGFyc2VyIHsgcmVzb3VyY2VVUkxTdHJp
bmcgfS5yZXN1bHQoKS5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBhdXRvIG5hbWUgPSBV
UkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygiZmls
ZSIpOwogCkBAIC01MTgsNyArNTE4LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2Vi
QXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBTdHJpbmcgc2FuaXRpemVkTWFya3Vw
ID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgKmZyYW1lLmRvY3VtZW50KCksICpy
ZXN1bHQsIG1zb0xpc3RRdWlya3NGb3JNYXJrdXAoKSwgWyZdIChjb25zdCBTdHJpbmcmIHR5cGUp
IHsKICAgICAgICAgcmV0dXJuIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhblNob3dNSU1FVHlw
ZUFzSFRNTCh0eXBlKTsKICAgICB9KTsKLSAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgc2FuaXRpemVkTWFya3VwLCBibGFua1VSTCgpLCBE
aXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOworICAgIGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBzYW5pdGl6ZWRNYXJrdXAsIFdU
Rjo6YmxhbmtVUkwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KTsKIAogICAg
IGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCBmMWNkNTNjOWUzMzhkMWFhYWY1MzBhOTA4MTE4ZmZl
MDg4YjI4MjRmLi40NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJmMjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC01MiwxMSArNTIsMTEgQEAK
ICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVy
dGllcy5oIgogI2ltcG9ydCAiV2ViQ29udGVudFJlYWRlci5oIgotI2ltcG9ydCAiV2ViQ29yZU5T
VVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNp
bXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8cGFs
L3N5c3RlbS9Tb3VuZC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjUzLDcgKzI1Myw3IEBAIFN0cmluZyBFZGl0b3I6OnBs
YWluVGV4dEZyb21QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAg
ICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdl
IGtub3cgLVtOU1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxs
IHRoZSBzYW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRp
bmcgYW4gTlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0gICAgICAgIHN0cmluZyA9IHVzZXJW
aXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworICAgICAgICBzdHJp
bmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10p
OwogCiAgICAgLy8gRklYTUU6IFdURiBzaG91bGQgb2ZmZXIgYSBub24tTWFjLXNwZWNpZmljIHdh
eSB0byBjb252ZXJ0IHN0cmluZyB0byBwcmVjb21wb3NlZCBmb3JtIHNvIHdlIGNhbiBkbyBpdCBm
b3IgYWxsIHBsYXRmb3Jtcy4KICAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21w
b3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lk
IEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBF
bGVtZW50JiBpbWFnZUVsZW1lbgogICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0ID0gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoaW1hZ2VFbGVtZW50KTsKICAgICBwYXN0
ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxl
ID0gdGl0bGU7Ci0gICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSB1c2Vy
VmlzaWJsZVN0cmluZyhwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCk7CisgICAgcGFzdGVib2FyZElt
YWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9h
cmRJbWFnZS51cmwudXJsKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2Fj
aGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNl
TUlNRVR5cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZjBlMGQ4NjVjOGJjN2RjZGIxMzU4MTRjMDdkMjQ0NWE5
ZGE3Y2NmNC4uOTE0YjgwY2I1ODNjMzk4ZDZhOTU4ZDdhNzU3NWNhZTI4MDVmNTI3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzMsMTEgKzczLDExIEBACiAjaW5jbHVkZSAiU3R5
bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVk
ZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUg
IlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTYxLDcgKzE2
MSw3IEBAIHZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZy
YWdtZW50PiYmIGZyYWdtZW50LCBXVEY6OkZ1bmN0CiAgICAgICAgIGZvciAoY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGZvciBzcmNzZXQuCiAgICAgICAgICAgICBp
ZiAoZWxlbWVudC5hdHRyaWJ1dGVDb250YWluc1VSTChhdHRyaWJ1dGUpICYmICFhdHRyaWJ1dGUu
dmFsdWUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBVUkwgdXJsID0gVVJMUGFyc2Vy
IHsgYXR0cmlidXRlLnZhbHVlKCkgfS5yZXN1bHQoKTsKKyAgICAgICAgICAgICAgICBVUkwgdXJs
KHsgfSwgYXR0cmlidXRlLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZW1v
dmVVUkwodXJsKSkKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlc1RvUmVtb3ZlLmFwcGVu
ZCh7IGVsZW1lbnQsIGF0dHJpYnV0ZS5uYW1lKCkgfSk7CiAgICAgICAgICAgICB9CkBAIC05NTEs
NyArOTUxLDcgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1
cChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYKIAogICAgIGZyYWdtZW50LT5wYXJz
ZUhUTUwobWFya3VwLCBmYWtlQm9keS5wdHIoKSwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAg
cmVzdG9yZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQoZnJhZ21lbnQpOwotICAgIGlmICgh
YmFzZVVSTC5pc0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBibGFua1VSTCgpICYmIGJhc2VVUkwgIT0g
ZG9jdW1lbnQuYmFzZVVSTCgpKQorICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkgJiYgYmFzZVVS
TCAhPSBXVEY6OmJsYW5rVVJMKCkgJiYgYmFzZVVSTCAhPSBkb2N1bWVudC5iYXNlVVJMKCkpCiAg
ICAgICAgIGNvbXBsZXRlVVJMcyhmcmFnbWVudC5wdHIoKSwgYmFzZVVSTCk7CiAKICAgICByZXR1
cm4gZnJhZ21lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCBiNTUwYThmNjdmMzlkZmEz
YWFlODkwNWQ4YTBkMmYyNWNmOTA0YTg3Li5iMDQ4Y2E4MjMzMjc1MGJmYWJlODRhY2YxOWQ0YjUx
Y2QwZDJiMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xh
c3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEhUTUxFbGVtZW50OwotY2xhc3MgVVJMOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFz
cyBRdWFsaWZpZWROYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3lu
Y0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
Y3BwCmluZGV4IDYzYjFlMGU1NzQxMWQwNjMzYzQxOThmNGFlMDkzNTNhMDM1NTEyN2UuLjczYTM2
NTIyODc5OWMxNmI5YTk4OGQ5YTExODllMGNmOTM4MGZlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKIAogI2luY2x1ZGUg
IkZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5o
PgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUg
PHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNG
aWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCmlu
ZGV4IDRmMGU3YjI3NzcxN2ExOWNjMjcwZGYyZTk2M2FiZWVmOTNmM2YzNTMuLjYyY2FmZmUyZDk4
YWQxZDVkMTBmNGVkNjg4MTdkYTkwNDk0ZWExNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZpbGVTdHJlYW1DbGllbnQ7CiBjbGFzcyBGaWxlU3RyZWFtOwotY2xhc3MgVVJMOwog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBc3luY0ZpbGVTdHJlYW0gewogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaAppbmRleCAyMDEzOWM0YzEyYTE0OTNlMDUzOGRjOWFiOTUxNjNiMTQ5OGNmOTYy
Li45MGQ0NjU2OTk3MzAxMjU4ZWU4NjgyOGU5YWI2MDc4YWMzZjg5YTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlByb3BlcnR5QmFnLmgi
CiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKaW5kZXggYzZkZmVlNjU1MDE1
M2UyYmY0ODhhMjdjYzVhZThlMjBlOThlMDQ2MS4uMTQ2YzBkYjA0OWQ3MTU0OGQwZmMyZDg4OWU0
NmJiNmY1NTY0OWFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCkBAIC0zMiw3ICsz
Miw3IEBACiAKICNpbmNsdWRlICJCbG9iVVJMLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3
dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2JVUkwuaAppbmRleCAzNTllYWFmN2YyYTI2NjdiOGIyMmY3YTM1MDMyYTE1NzFkNjcyMGM0
Li4zZDBhZTExYzEwMzllMzQ4NGUwZWRmNzAwOTc3N2JmMmViZjliZGE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2JVUkwuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDU3NWYwZTc2ZDA5YTlkM2U1N2YyNThhZWNiZWYzMWYz
NjBhNDhkZjAuLmRhMmU4YmNhMzUyY2EzZmM3ZWM3Y2I0NTYyZDc5YmJiNzI4YmYwNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5oCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgVVJMOwotCiBjbGFzcyBGaWxlIGZpbmFsIDogcHVibGljIEJsb2IgewogcHVibGlj
OgogICAgIHN0cnVjdCBQcm9wZXJ0eUJhZyA6IEJsb2JQcm9wZXJ0eUJhZyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCmluZGV4IGYzZGM2YzQ3OGM5ODAwNGE3YjEz
NDBjMzI5ZWQ2ODgwOGI3MjE4ZjAuLjFmNzc3OGU4ODllMzkzZDdmYjk2OTQ0M2NlOGViZTIxMjc0
ZDRhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCkBAIC0z
Miw3ICszMiw3IEBACiAKICNpbmNsdWRlICJCbG9iUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRl
ICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IDQyNDZkN2VlYTBiMGU3M2I1MDlmYmM4
MGQyNDFlMWNmZjk2MjA5YzIuLmE5Yzc5ZmUyMjkyZjg5NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5oCkBAIC0zNiw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2JQ
YXJ0OwotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCmluZGV4IGUw
YmU1NzFhMjkwNjgzMjViYTE3ZWNmM2ViZGZlYjg2YjZiZDgxOTguLjI5OGY3ODI4MzFhNjk2OTg2
MzhmYzU5MmQyZjYzMDU0NjNhMzA0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRE9NV2luZG93
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNj
cmlwdENhY2hlZEZyYW1lRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCmluZGV4IGU3MmI1ODkzOTQ5ODFlY2VjNDEwN2Y2ZDYy
Yjc3YzlkNzQzODM1MWQuLjIwYTM5NzMzZjg1MzNhOTAzNGU2NTZiYTdmN2FiMGEwNTQ4MmY0YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTU0LDcgKzU0LDYgQEAgY2xh
c3MgRm9ybURhdGE7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEltYWdlOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQcnVuaW5nUmVhc29uOwogCiBX
RUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCAoKm5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCkoSGlz
dG9yeUl0ZW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAppbmRleCBhNzdiY2Q3MDcyM2YzY2Y5Y2Ex
MTY4MmU0NDZlZGZlODdkODEzOGY4Li4wYTA4YjU5NDY4NjU3MzJmMjhkYTMwZmI3ZjYzY2E0ZDMx
NGVhOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxET01VUkw+PiBET01VUkw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
RE9NVVJMJiBiYXNlKQogCiBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9NVVJMOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgVVJMIGJhc2VVUkwgeyBibGFua1VSTCgpIH07Cisg
ICAgVVJMIGJhc2VVUkwgeyBXVEY6OmJsYW5rVVJMKCkgfTsKICAgICBVUkwgY29tcGxldGVVUkwg
eyBiYXNlVVJMLCB1cmwgfTsKICAgICBpZiAoIWNvbXBsZXRlVVJMLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKaW5kZXgg
NTkwMjVjMmZiOTZmMDI5OWFkOTE3ZTYxN2IyOTExYzMxYWI5MWQzNC4uZDMxM2Q3YTQ0NGQ4ZWE1
NTM0ZjAwM2Y0NDUwZmRkYTBkNDYzNTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCkBAIC0yNyw3ICsy
Nyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFV0aWxzLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAKaW5kZXggOWI5OWEzNDczMDk3MmQ0ZGQ3OTljMDgxYTBmOThmNjM3N2FiNWFk
MC4uMzA0OGI0OTBmYTUzZjNmZDQxNTFlMDIxMDQzNmM2NGZhOTQ3MTQ3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKQEAgLTM3LDggKzM3LDggQEAK
ICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6
aXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYgY29tcGxldGVVUkwpIGNvbnN0CiAgICAgaWYgKGNvbXBs
ZXRlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocHJvdG9j
b2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29tcGxldGVVUkwpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gY29udGVu
dERvYyA9IHRoaXMtPmNvbnRlbnREb2N1bWVudCgpOwogICAgICAgICBpZiAoY29udGVudERvYyAm
JiAhU2NyaXB0Q29udHJvbGxlcjo6Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4oY29udGVudERv
Yy0+ZnJhbWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Om9wZW5VUkwoTG9ja0hpc3RvcnkgbG9ja0hpc3Rv
cnksIExvY2tCYWNrRm9yd2FyZExpc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fVVJM
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9VUkwgPSBibGFua1VSTCgpLnN0cmluZygpOworICAgICAg
ICBtX1VSTCA9IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKTsKIAogICAgIFJlZlB0cjxGcmFtZT4g
cGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFwYXJlbnRGcmFtZSkK
QEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlv
bihjb25zdCBTdHJpbmcmIHN0cikKIAogdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TG9j
YXRpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG5ld0xvY2F0aW9uKQog
ewotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMobmV3TG9jYXRpb24pKSkgeworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2Ny
aXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhuZXdMb2NhdGlvbikpKSB7CiAg
ICAgICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0
ZSwgY29udGVudERvY3VtZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMjMyYjNkY2IzMDMxODg5ZGM4MjZm
OTg3ZDJiZDZmYjA4NzU4ZTliNS4uYjFjY2Q3NTU3NTAwZmExYWI3NjBlMTI0MDAyM2EzYTllZmE2
ZDM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0
LDYgQEAgY2xhc3MgSWNvbjsKIGNsYXNzIElucHV0VHlwZTsKIGNsYXNzIExpc3RBdHRyaWJ1dGVU
YXJnZXRPYnNlcnZlcjsKIGNsYXNzIFJhZGlvQnV0dG9uR3JvdXBzOwotY2xhc3MgVVJMOwogCiBz
dHJ1Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmgKaW5kZXggNTEwZjRjZmI2MzZkOWRhMTFlMjU4ZjllZTNhNDJmZWQ2ZWZkMzZj
ZC4uNjgyOGY5MzQzYjU3MjQwOTVkYjYwMjE3NDI2ODc2NTQwNzBjZGY4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRE9NVG9rZW5MaXN0OwogY2xhc3MgSFRNTExpbmtFbGVtZW50OwotY2xh
c3MgVVJMOwogc3RydWN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjbGFzcyBFdmVudFNlbmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IDljMDliMDk0ODM5OTU1MTE1ODNkYjUxMjVkM2VjN2M3MzRjZGM2MGIu
Ljc3ZDBjYmZiN2Q0ODA0YjcyMWIyM2Q0NDNlMDdiMDc2ZmM0NjliNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTY4LDggKzE2OCw4IEBACiAKIG5hbWVz
cGFjZSBXVEYgewogdGVtcGxhdGUgPD4KLXN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpVUkw+
IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQor
c3RydWN0IExvZ0FyZ3VtZW50PFVSTD4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29u
c3QgVVJMJiB1cmwpCiAgICAgewogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gNTEyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggMzIxM2M0NGFk
YmYyOGYyNzBiNTI2MGRjYTEzMDU1ZGU4YWE0M2Q5Yi4uOWU1YzI3Nzc3ZDY5M2U0ZjY0YmVmMWI3
MzEyNTgzOTVjNGFkMjMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojppc0ltYWdlVHlwZSgpCiBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFsbG93
ZWRUb0xvYWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVUkwgY29tcGxldGVV
UkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7Ci0gICAgaWYgKGNvbnRlbnRGcmFtZSgp
ICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKSAmJiAhZG9jdW1lbnQoKS5zZWN1
cml0eU9yaWdpbigpLmNhbkFjY2Vzcyhjb250ZW50RG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSkpCisgICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQo
Y29tcGxldGVVUkwpICYmICFkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzKGNv
bnRlbnREb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJldHVybiBkb2N1bWVudCgpLmZyYW1lKCktPmlzVVJMQWxsb3dlZChjb21wbGV0ZVVS
TCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKaW5kZXggMjdhNDg5ZDRmNjU3YjZlNjlk
YzRlOTlmOWQ0ZGM5YjY5ZDdiY2M3Ny4uMTIwMGI4NzgxNjQ2ZjYxYTZmNzBjNDZiOTliY2M4ZWZj
ZjY1YWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaApAQCAtNDQsNyArNDQsNiBAQCBj
bGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFBlbmRpbmdJbWFnZUJpdG1hcDsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgSW1hZ2VC
aXRtYXBPcHRpb25zOwogCiBjbGFzcyBJbWFnZUJpdG1hcCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUsIHB1YmxpYyBSZWZDb3VudGVkPEltYWdlQml0bWFwPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCmluZGV4IDdjNzczNmMzNGViY2Y2NGQ5NDU2MDNk
Y2Q4NjM5MzllOGRiMzdlNGMuLjEwYTJhMGQwZjUyMjRiMDUwYWQ1YzdmNGQxZDY1NmFmZWU4M2M3
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCkBA
IC0yNywxNCArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsK
LQogY2xhc3MgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBmaW5hbCB7CiBwdWJsaWM6CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAppbmRleCBjZjE4NmMwYmE0MDBl
MmEzYzIzMDRjYzc5ZmZhZGJhOGFmM2FhMzYxLi43M2I1NDczNTc4ZTNiMGIzMWVhZjk1ZGE0MGMy
MGFjMDk5YzA3MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlB1Ymxp
Y1VSTE1hbmFnZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKaW5kZXggZTMyNjU0NWRjY2I0
OWJmYTZjNWFmZjkyM2EyYzVlMGMwZmE3NzVhNC4uZTY5ZGU0ZWQ4YzgzYmI4YThkYzRkMzY2ODYy
MmNkM2ZkZDUzN2U3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKQEAg
LTMzLDcgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBV
UkxSZWdpc3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcAppbmRleCA2Y2EwYWMx
YTIwMTNjZjZkNWQ4ZGM1YzBlYTAzYjIxMTc5MmYxOTVlLi42M2JiM2NjMjYwMWEwNDNkMTQ5YzQ1
YTI5ZWMxOGRhMTQwYjVhZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUg
IklucHV0VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKaW5kZXggYmQ3NzJjZTVmMTdhNmI4N2RjMmY0NjI1
YjcxYmUwMTEwM2MzNzc0My4uODIyM2JiZDA3NTkwZGRhY2NlOWZkMTYwNGUzYWMwYmMwMTVmNjRh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaApAQCAtMzQsNyArMzQsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xh
c3MgVVJMUmVnaXN0cnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2Vh
cmNoUGFyYW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcApp
bmRleCAzMGU4NTkyNGE3ODUyMGQ2NTkyMDkxYWQyZDMzYzA0MjBjZmVkZDQzLi40ZTdmYmFlZmRm
MGE0MTZjYzY1NGFhNzNkNTliN2JlODBiNDFkMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxT
ZWFyY2hQYXJhbXMuY3BwCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpbmNsdWRlICJVUkxTZWFyY2hQ
YXJhbXMuaCIKIAogI2luY2x1ZGUgIkRPTVVSTC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgor
I2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBVUkxT
ZWFyY2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhjb25zdCBTdHJpbmcmIGluaXQsIERPTVVSTCog
YXNzb2NpYXRlZFVSTCkKICAgICA6IG1fYXNzb2NpYXRlZFVSTChhc3NvY2lhdGVkVVJMKQotICAg
ICwgbV9wYWlycyhpbml0LnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNv
ZGVkRm9ybShTdHJpbmdWaWV3KGluaXQpLnN1YnN0cmluZygxKSkgOiBVUkxQYXJzZXI6OnBhcnNl
VVJMRW5jb2RlZEZvcm0oaW5pdCkpCisgICAgLCBtX3BhaXJzKGluaXQuc3RhcnRzV2l0aCgnPycp
ID8gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhpbml0KS5z
dWJzdHJpbmcoMSkpIDogV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oaW5pdCkp
CiB7CiB9CiAKQEAgLTEzMywyMCArMTMzLDIwIEBAIHZvaWQgVVJMU2VhcmNoUGFyYW1zOjpyZW1v
dmUoY29uc3QgU3RyaW5nJiBuYW1lKQogCiBTdHJpbmcgVVJMU2VhcmNoUGFyYW1zOjp0b1N0cmlu
ZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOwor
ICAgIHJldHVybiBXVEY6OlVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOwogfQogCiB2b2lk
IFVSTFNlYXJjaFBhcmFtczo6dXBkYXRlVVJMKCkKIHsKICAgICBpZiAobV9hc3NvY2lhdGVkVVJM
KQotICAgICAgICBtX2Fzc29jaWF0ZWRVUkwtPnNldFF1ZXJ5KFVSTFBhcnNlcjo6c2VyaWFsaXpl
KG1fcGFpcnMpKTsKKyAgICAgICAgbV9hc3NvY2lhdGVkVVJMLT5zZXRRdWVyeShXVEY6OlVSTFBh
cnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpKTsKIH0KIAogdm9pZCBVUkxTZWFyY2hQYXJhbXM6OnVw
ZGF0ZUZyb21Bc3NvY2lhdGVkVVJMKCkKIHsKICAgICBBU1NFUlQobV9hc3NvY2lhdGVkVVJMKTsK
ICAgICBTdHJpbmcgc2VhcmNoID0gbV9hc3NvY2lhdGVkVVJMLT5zZWFyY2goKTsKLSAgICBtX3Bh
aXJzID0gc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVk
Rm9ybShTdHJpbmdWaWV3KHNlYXJjaCkuc3Vic3RyaW5nKDEpKSA6IFVSTFBhcnNlcjo6cGFyc2VV
UkxFbmNvZGVkRm9ybShzZWFyY2gpOworICAgIG1fcGFpcnMgPSBzZWFyY2guc3RhcnRzV2l0aCgn
PycpID8gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhzZWFy
Y2gpLnN1YnN0cmluZygxKSkgOiBXVEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShz
ZWFyY2gpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3Ry
aW5nPj4gVVJMU2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4dCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxz
LmgKaW5kZXggYTA3YzA4MTRmMTFlMTcxMTg0NTAzZTZhYTZhYWFkNmMwNDdkNDc1YS4uNjU2YWJm
YmRhMGJkYmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMu
aApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICAgICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8g
IjAiIGlmIGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCiAgICAgICAgICAgICB1cmwuc2V0SG9z
dEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgJzAnKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9y
dCwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgICAgICAgICB1cmwuc2V0
SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmco
MCwgcG9ydEVuZCkpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBv
cnQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0
IHRvICIwIiBpZiBpdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nLgogICAgIC8vIEZJWE1FOiBodHRw
Oi8vdXJsLnNwZWMud2hhdHdnLm9yZy8gZG9lc24ndCBhcHBlYXIgdG8gcmVxdWlyZSB0aGlzOyB0
ZXN0IHdoYXQgYnJvd3NlcnMgZG8KICAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50KCk7
Ci0gICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkp
CisgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2Nv
bCgpKSkKICAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKICAgICBlbHNlCiAgICAgICAgIHVybC5z
ZXRQb3J0KHBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBjMzQ2MTAyMTVlNTY5ZmU3YWExMTljYTUyMTZh
N2Q4M2UxNTU2MjI5Li5kNzcyM2VkZGVkZmFjODVhZWQ5ODNjNWE1NDFkNGMwMDIyZDM1Zjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCaXRtYXAuaCIKICNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDgxY2I1NWQ3N2UzMTgwNTY0NDcw
Nzc3N2ExZTI5OTU2ZjQ0M2Y2NTguLjk4ZWM0NjJlZmViMzk1YjlhN2U5YzM5OTcwMThlYWFkNWVm
N2ZjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7
CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNz
IEltYWdlQml0bWFwOwotY2xhc3MgVVJMOwogY2xhc3MgV2ViR0xPYmplY3Q7CiAKIGNsYXNzIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggNjc0ZGVi
YzY5OGRiOWI3MDAyZWI0MDUyMzM1YjllNmRiODFiNjRhMy4uNDIzMDkyNjhlOWJkZDA5NWFjOWJm
MTZhZDlmNzMzMmEzNzFjZDViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkRlY2lt
YWwuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggNzE5MjhjN2NlYThl
MTRmMDQ0ZGU0OWY5ZDAxMzg0NzMwYWFhMmNlYi4uNjEwNGJlMzkyYmNlMzFjNjNjYTFlZjI0YWUx
MmVlYjEzMTk1NWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNT
QXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5j
cHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgYm9vbCBpc1NlbWljb2xvblNlcGFyYXRlZEF0
dHJpYnV0ZShjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlKQogc3RhdGljIGJv
b2wgc2VtaWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoU3RyaW5nVmll
dyBzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZSkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBzZW1p
Y29sb25TZXBhcmF0ZWRWYWx1ZS5zcGxpdCgnOycpKSB7Ci0gICAgICAgIGlmIChwcm90b2NvbElz
SmF2YVNjcmlwdCh2YWx1ZSkpCisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0
KHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CkBAIC00NDYsOSArNDQ2LDkgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tl
bihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJsb2Nr
U2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKG1fd2FzU2NyaXB0VGFnRm91bmRJblJlcXVlc3QpIHsK
LSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVl
c3QsIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlr
ZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJ
bmplY3RlZChyZXF1ZXN0LCBTVkdOYW1lczo6aHJlZkF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCks
IFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2Ny
aXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBYTGlua05hbWVzOjpocmVm
QXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmli
dXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHJlcXVlc3QsIHNyY0F0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0
eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VB
dHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIFNWR05hbWVzOjpocmVmQXR0ciwgV1RGOjpibGFu
a1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAg
ICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwg
WExpbmtOYW1lczo6aHJlZkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlv
blN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKICAgICB9CiAKICAgICByZXR1cm4gZGlkQmxvY2tT
Y3JpcHQ7CkBAIC00NjEsNyArNDYxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RU
b2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJs
b2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29udGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNh
bGl6ZWRTbmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsKLSAgICAgICAgZGlkQmxvY2tTY3Jp
cHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGRhdGFBdHRyLCBibGFua1VS
TCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAg
ICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZGF0
YUF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtl
QXR0cmlidXRlKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZklu
amVjdGVkKHJlcXVlc3QsIHR5cGVBdHRyKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGNsYXNzaWRBdHRyKTsKICAgICB9CkBAIC00
ODEsNyArNDgxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKGNvbnN0IEZp
bHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBpZiAoIUhUTUxQYXJhbUVsZW1lbnQ6Omlz
VVJMUGFyYW1ldGVyKFN0cmluZyhuYW1lQXR0cmlidXRlLnZhbHVlKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwg
dmFsdWVBdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VB
dHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwg
dmFsdWVBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3Jj
TGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihj
b25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC00OTIsNyArNDkyLDcgQEAgYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYg
cmVxdWVzdCkKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29u
dGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRTbmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkp
IHsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJl
cXVlc3QsIGNvZGVBdHRyLCBTdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmli
dXRlKTsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHJlcXVlc3QsIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6
U3JjTGlrZUF0dHJpYnV0ZSk7CisgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmli
dXRlSWZJbmplY3RlZChyZXF1ZXN0LCBzcmNBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCks
IFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiAgICAgICAgIGRpZEJsb2NrU2Ny
aXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCB0eXBlQXR0cik7CiAgICAg
fQogICAgIHJldHVybiBkaWRCbG9ja1NjcmlwdDsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIFhT
U0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVl
c3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRU
YWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGZvcm1UYWcpKTsKIAotICAg
IHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgYWN0aW9uQXR0ciwgYmxh
bmtVUkwoKS5zdHJpbmcoKSk7CisgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChy
ZXF1ZXN0LCBhY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiBib29s
IFhTU0F1ZGl0b3I6OmZpbHRlcklucHV0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiBy
ZXF1ZXN0KQpAQCAtNTUyLDcgKzU1Miw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVySW5wdXRU
b2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVl
c3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNO
YW1lKHJlcXVlc3QudG9rZW4sIGlucHV0VGFnKSk7CiAKLSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1
dGVJZkluamVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBibGFua1VSTCgpLnN0cmluZygp
LCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0
dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZm9ybWFjdGlvbkF0dHIsIFdURjo6YmxhbmtVUkwo
KS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKIH0KIAogYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3Qm
IHJlcXVlc3QpCkBAIC01NjAsNyArNTYwLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0
b25Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJl
cXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVCho
YXNOYW1lKHJlcXVlc3QudG9rZW4sIGJ1dHRvblRhZykpOwogCi0gICAgcmV0dXJuIGVyYXNlQXR0
cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBmb3JtYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJp
bmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICByZXR1cm4gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBXVEY6OmJsYW5r
VVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAK
IGJvb2wgWFNTQXVkaXRvcjo6ZXJhc2VEYW5nZXJvdXNBdHRyaWJ1dGVzSWZJbmplY3RlZChjb25z
dCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC01NzMsNyArNTczLDcgQEAgYm9vbCBY
U1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRl
clRva2VuUmVxdWVzdCYgcmUKICAgICAgICAgYm9vbCBpc0lubGluZUV2ZW50SGFuZGxlciA9IGlz
TmFtZU9mSW5saW5lRXZlbnRIYW5kbGVyKGF0dHJpYnV0ZS5uYW1lKTsKICAgICAgICAgLy8gRklY
TUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBkaWRuJ3QgY3JlYXRlIGEgbmV3IFN0cmluZyBm
b3IgZXZlcnkgYXR0cmlidXRlIGluIHRoZSBkb2N1bWVudC4KICAgICAgICAgU3RyaW5nIHN0cmlw
cGVkVmFsdWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5nKGF0dHJp
YnV0ZS52YWx1ZSkpOwotICAgICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0g
KCFpc0lubGluZUV2ZW50SGFuZGxlciAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcHBlZFZh
bHVlKSkgfHwgKGlzU2VtaWNvbG9uU2VwYXJhdGVkQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgc2Vt
aWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoc3RyaXBwZWRWYWx1ZSkp
OworICAgICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lubGluZUV2
ZW50SGFuZGxlciAmJiBXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwcGVkVmFsdWUpKSB8
fCAoaXNTZW1pY29sb25TZXBhcmF0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlKSAmJiBzZW1pY29sb25T
ZXBhcmF0ZWRWYWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTChzdHJpcHBlZFZhbHVlKSk7CiAgICAg
ICAgIGlmICghaXNJbmxpbmVFdmVudEhhbmRsZXIgJiYgIXZhbHVlQ29udGFpbnNKYXZhU2NyaXB0
VVJMKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghaXNDb250YWluZWRJblJl
cXVlc3QoY2Fub25pY2FsaXplKHNuaXBwZXRGcm9tQXR0cmlidXRlKHJlcXVlc3QsIGF0dHJpYnV0
ZSksIFRydW5jYXRpb25TdHlsZTo6U2NyaXB0TGlrZUF0dHJpYnV0ZSkpKQpAQCAtNzI3LDcgKzcy
Nyw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5n
JiB1cmwpCiAgICAgLy8gR2l2ZSBlbXB0eSBVUkxzIGFuZCBhYm91dDpibGFuayBhIHBhc3MuIE1h
a2luZyBhIHJlc291cmNlVVJMIGZyb20gYW4KICAgICAvLyBlbXB0eSBzdHJpbmcgYmVsb3cgd2ls
bCBsaWtlbHkgbGF0ZXIgZmFpbCB0aGUgIm5vIHF1ZXJ5IGFyZ3MgdGVzdCIgYXMKICAgICAvLyBp
dCBpbmhlcml0cyB0aGUgZG9jdW1lbnQncyBxdWVyeSBhcmdzLgotICAgIGlmICh1cmwuaXNFbXB0
eSgpIHx8IHVybCA9PSBibGFua1VSTCgpLnN0cmluZygpKQorICAgIGlmICh1cmwuaXNFbXB0eSgp
IHx8IHVybCA9PSBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgLy8gSWYgdGhlIHJlc291cmNlIGlzIGxvYWRlZCBmcm9tIHRoZSBzYW1lIGhvc3Qg
YXMgdGhlIGVuY2xvc2luZyBwYWdlLCBpdCdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmgKaW5kZXggZGM4MmFkZDdjN2Y1YmRkYTNjYWI1MzRkZmFhMTA5YmZkMTkwYmMyNy4u
MTJlYzk4YzA5MmZmNjUwNGNkZTUzZmZmOTM2ODFlMDI1MTEwMDUxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAi
SFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU3VmZml4VHJlZS5oIgogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3JEZWxlZ2F0ZS5oCmluZGV4IDY3YTMyZWQ5MzBkN2Q5ZGQ0ZGFjNDA4OTIyMGJkZjNmMmFk
NzZlODcuLjYwNTE1OWIyZmFmYTRjZjg3MWFlNjU2ZjEwYWY0M2YwMDFlOTNmYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCkBAIC0yNiw3
ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCmluZGV4IGM3MzRkYTJiZWFlMTM4NDUyN2Q3NzJhZTliZTE4YjM3ZjU0
NDVjOGIuLjI2YWI2ZGY5NTI0YTRlNjk4MTQ4ODE1MjVlZGM4N2Y2NjA4NmI4NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBA
IC0zMTEsNyArMzExLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmtpbGxUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzaG91bGRQcmVwZW5kVG9LaWwKIAogdm9pZCBJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBp
ZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAoV1RGOjpwcm90
b2NvbElzSmF2YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9jbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKaW5kZXggZGRlMjEyMmNjZWQwMGE4ZTMyMGNmNDQwOThmYWQwNjY1NzY0Nzk3MC4u
OGMzNzJmYWFmN2VkOGVlZDM5OGI1YTZjZDdlNTRmYThmNmVlYzQ4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtODgs
NyArODgsNiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgVGltZXJCYXNlOwotY2xhc3MgVVJMOwog
I2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwCmluZGV4IDMzMzEwNzgxY2FhYjViNTE1MmQ2MWZjNTY2NjhhNDljYzM1MjQ0YzYuLjdj
Njc0NDYxMjA1NzA3OThjYWZkNzgwMTVmYWQ5OWQ2MDg3MzE0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKQEAgLTY2LDcgKzY2LDcgQEAKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRl
ICJXZWJTb2NrZXRGcmFtZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggNjRkMGUwNDU4MDI1OTVmZjMw
NWM5YTM2YzExMjJkMTY2NDM3OGM5NC4uYjY4NTkwZjFiODQwODgyODRhOGE1NWZjNzVkMGU1NTlk
NDkwOWJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXZWJTb2NrZXQ7
CiAKIHN0cnVjdCBXZWJTb2NrZXRGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDY3MDlmNTJiZTAzNDMyYjJj
NTVlYjk0NzFiYzRjMGRiMjVkMDg2YzcuLjcyZjYzYmQ4OTYyNWI2MjY5Y2JmN2E2M2YxMjUyMTVm
NDE1NzViNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBJbnNwZWN0b3JPdmVy
bGF5OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKLWNsYXNzIFVSTDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aAppbmRleCA3Mjg4Y2ZmZTRjZjJlOGZlYmViMGM2MTBkNDZiN2VjYWZiYzY1ZjRkLi41ZTA0MGM5
NTRkNGI1MTRhMTQ5MDNjMDcyMDcwYmVjZGUwNjBjYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC0zNCw3
ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBVUkw7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaAppbmRleCA4YjY0MzFhYjQyMmYyY2I2
Yzk0OGQ4Y2Y4ZWJiNTUxMTcxMTdkZGJhLi4xYjBmNzYwZDJlY2ViZDVjMjhlZjVjMmVjNDJlZGEx
MmYwM2YzYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25N
YW5pZmVzdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1h
bmlmZXN0TG9hZGVyLmgKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbk1h
bmlmZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5kZXggNWZhNzA1ZDhhODVmZjE1ODY4
OTA2NWZjOGJjZDg4YjNmYzk4YjRlNC4uYjliOWYzNzQ5NzQzZWQ0OGY3MzhhM2ZkOGU3MmE2OWE0
ZDAwOWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtMzEsNyArMzEsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFVSTDsKIHN0cnVj
dCBDb29raWU7CiBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAppbmRleCBk
MmIwOWJkNWRiNTY3NmMwMWFiZjgyM2QzZjA3MjJhNzcwZWE1NDBiLi4yYWYzZDRhMWM1MjA5MTI5
M2RlMWM0ODNhMmZjMTczYWM2NmVhMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oCmluZGV4IGRjMDcxMzBhMWIxNDY1M2JkMWRmNWJl
ZWU5ODgwOWUzYjcyZWZiZTMuLjk2NWRlNmY4YTA3YmRjNzhjMDhlMGYxYzJlNzIxOWUxZWRhNDA0
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuaApAQCAtMjcsOSArMjcsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IDY2ZmQ2YTg2YTg0NWFkNGRmMWIwZTA1YmNhZDc1YzIwMzIzNDgxY2EuLmRhNmIy
YWJlMTEzOGQ4ZjQxYTMwYWJjN2QxOTc2NGI4ODdmNmQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjCiAgICAgICAgIHN3aXRjaCAoc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY2Fz
ZSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbjoKICAgICAgICAgICAgIC8vIFdlIGhhbmRs
ZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2gg
bGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sgdG8gcmVzdW1lLgotICAgICAgICAgICAg
cmVxdWVzdCA9IHsgYmxhbmtVUkwoKSB9OworICAgICAgICAgICAgcmVxdWVzdCA9IHsgV1RGOjpi
bGFua1VSTCgpIH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTaG91bGRDb250
aW51ZTo6Tm86CiAgICAgICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwpAQCAt
MTY2Nyw3ICsxNjY3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9yZXF1ZXN0LnVybCgpLmlzRW1wdHko
KSAmJiAhZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlE
b2N1bWVudCgpKSB7Ci0gICAgICAgIG1fcmVxdWVzdC5zZXRVUkwoYmxhbmtVUkwoKSk7CisgICAg
ICAgIG1fcmVxdWVzdC5zZXRVUkwoV1RGOjpibGFua1VSTCgpKTsKICAgICAgICAgaWYgKGlzTG9h
ZGluZ01haW5SZXNvdXJjZSgpKQogICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCku
ZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYWM5NDhjY2RhZGQwYWExYzVlMWJlN2EwMWVhMTYw
OTAxYzFmYTM3NC4uZTlmNTAzY2M2ZjYzNGVlMTAzNjdhZGE3ODdkMTY2MjEwNmMxMmI0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTIzNCw3ICsyMzQsNyBAQCBj
bGFzcyBEb2N1bWVudExvYWRlcgogICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdERlc3RpbmF0aW9u
Rm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHVybEZvckhpc3RvcnkoKTsgfQogICAgIHZvaWQg
c2V0Q2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KGNvbnN0IFN0cmluZyYgY2xpZW50UmVk
aXJlY3RTb3VyY2VGb3JIaXN0b3J5KSB7IG1fY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
ID0gY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OyB9CiAgICAgCi0gICAgU3RyaW5nIHNl
cnZlclJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuICh1cmxGb3JIaXN0
b3J5KCkgPT0gdXJsKCkgfHwgdXJsKCkgPT0gYmxhbmtVUkwoKSkgPyBTdHJpbmcoKSA6IHVybEZv
ckhpc3RvcnkoKS5zdHJpbmcoKTsgfSAvLyBudWxsIGlmIG5vIHNlcnZlciByZWRpcmVjdCBvY2N1
cnJlZC4KKyAgICBTdHJpbmcgc2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gKHVybEZvckhpc3RvcnkoKSA9PSB1cmwoKSB8fCB1cmwoKSA9PSBXVEY6OmJsYW5r
VVJMKCkpID8gU3RyaW5nKCkgOiB1cmxGb3JIaXN0b3J5KCkuc3RyaW5nKCk7IH0gLy8gbnVsbCBp
ZiBubyBzZXJ2ZXIgcmVkaXJlY3Qgb2NjdXJyZWQuCiAgICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0
RGVzdGluYXRpb25Gb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gdXJsKCk7IH0KIAogICAgIGJv
b2wgZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWRDcmVh
dGVHbG9iYWxIaXN0b3J5RW50cnk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmgKaW5kZXggMzg1ZmI2NDA3YmE0MTliYmI4NjY3Y2JjNTA5OTdjMWIwZDRiZjIxNC4uMzA0OGM1
OWU1NzUxMzdkODVlMGE5OWNlOTJjNTBlM2RlN2JhZjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zv
cm1TdWJtaXNzaW9uLmgKaW5kZXggNGNkZjQ4Yjc3YzZkMDVlMmU2NTU3OWE0MzIxNDgzMDhkODQ4
ZWJjOS4uZjlhY2NmMTcyMTViYjA2YTZmODk2NmNmMDIxNzk5YmVkNThlM2QxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1
ZGUgIkZvcm1TdGF0ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYjNhZTZhYjBlM2Q0OWEwZGI2
MTM3NWEzYzdkY2ZkMjgyMDQ0NDhkMi4uOWQwMjk3YjFiNDc1N2QyOGIzMDNhYzBiZDM4NmY5YzYz
Mjc1MDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00MjEsNyAr
NDIxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShSZWY8Rm9ybVN1Ym1pc3Npb24+
JiYgc3VibWlzc2lvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwcm90b2Nv
bElzSmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKKyAgICBpZiAoV1RGOjpwcm90
b2NvbElzSmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKICAgICAgICAgaWYgKCFt
X2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Zvcm1BY3Rp
b24oVVJMKHN1Ym1pc3Npb24tPmFjdGlvbigpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7CkBAIC02OTksNyAr
Njk5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIGlmICgh
cGFyc2VIVFRQUmVmcmVzaChkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6UmVmcmVzaCksIGRlbGF5LCB1cmxTdHJpbmcpKQogICAgICAgICBy
ZXR1cm47CiAgICAgYXV0byBjb21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gZG9j
dW1lbnQudXJsKCkgOiBkb2N1bWVudC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwotICAgIGlmICgh
cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICBpZiAoIVdURjo6cHJvdG9j
b2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKICAgICAgICAgbV9mcmFtZS5uYXZpZ2F0aW9u
U2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkb2N1bWVudCwgZGVsYXksIGNvbXBsZXRlZFVS
TCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJl
c2ggIiArIGRvY3VtZW50LnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsg
IiB0byBhIGphdmFzY3JpcHQ6IFVSTCI7CkBAIC0zMzU1LDcgKzMzNTUsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZQogCiAgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9uIGJ5IG5hdmln
YXRpbmcgZm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNldHVwIHRvIG5h
dmlnYXRlIGJhY2sgdG8gcmVzdW1lLgogICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hv
dWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXItPndpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KHsg
YmxhbmtVUkwoKSB9KTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+
d2lsbENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBXVEY6OmJsYW5rVVJM
KCkgfSk7CiAKICAgICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRp
bmdNYWluUmVzb3VyY2Uoc2hvdWxkQ29udGludWUpOwogICAgIH07CkBAIC0zOTA2LDcgKzM5MDYs
NyBAQCBSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyRnJhbWUsIEZyYW1l
JiBsb29rdXBGcmFtZSwgRnJhbWVMb2FkUmVxdQogICAgIGNyZWF0ZWQgPSBmYWxzZTsKIAogICAg
IC8vIEZJWE1FOiBQcm92aWRlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIHdpdGggcmVzcGVjdCB0
byB0aGUgb3BlbmVyJ3MgZG9jdW1lbnQuCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpICYmICFvcGVuZXJGcmFtZS5kb2N1bWVudCgp
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhvcGVuZXJGcmFt
ZS5kb2N1bWVudCgpLT51cmwoKSwgeyB9KSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNj
cmlwdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKSAmJiAhb3BlbmVyRnJhbWUuZG9j
dW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SmF2YVNjcmlwdFVSTHMob3Bl
bmVyRnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIHsgfSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSAmJiAhZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShyZXF1ZXN0LmZyYW1lTmFtZSgpLCAiX2JsYW5rIikpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMWI5MTFhMmI3ZDI5MjJiYTM2
Njk1ZDRkOTI2MzA0MGY1MGYyZmYzZi4uOTA0ZWQ5NjJmNzk3OTNjODNlY2I3ZDgxNWY0NTA2ZmZj
ODUwYTVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTEwMCw3ICsxMDAsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKLWNsYXNz
IFVSTDsKIGNsYXNzIFdpZGdldDsKIAogZW51bSBjbGFzcyBQb2xpY3lEZWNpc2lvbk1vZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA5ZmJhODM1
YTQ1NTI5ZWVjOTE5MDBjMmYzYjJlYjUwYjcxODg4NGQ4Li41MGJkMTM4ZjAyZTM0YjE0YTM5MTll
MzY3ZWQ3ODFiZGJjNzliYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29u
dHJvbGxlci5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpj
dXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdAogICAgIC8vICAiSWYgdGhlIGJyb3dz
aW5nIGNvbnRleHQncyBzZXNzaW9uIGhpc3RvcnkgY29udGFpbnMgb25seSBvbmUgRG9jdW1lbnQs
CiAgICAgLy8gICBhbmQgdGhhdCB3YXMgdGhlIGFib3V0OmJsYW5rIERvY3VtZW50IGNyZWF0ZWQg
d2hlbiB0aGUgYnJvd3NpbmcgY29udGV4dAogICAgIC8vICAgd2FzIGNyZWF0ZWQsIHRoZW4gdGhl
IG5hdmlnYXRpb24gbXVzdCBiZSBkb25lIHdpdGggcmVwbGFjZW1lbnQgZW5hYmxlZC4iCi0gICAg
cmV0dXJuIG1fY3VycmVudEl0ZW0gJiYgIW1fcHJldmlvdXNJdGVtICYmIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UobV9jdXJyZW50SXRlbS0+dXJsU3RyaW5nKCksIGJsYW5rVVJMKCkpOworICAgIHJl
dHVybiBtX2N1cnJlbnRJdGVtICYmICFtX3ByZXZpb3VzSXRlbSAmJiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG1fY3VycmVudEl0ZW0tPnVybFN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpOwogfQog
CiB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpjbGVhclByZXZpb3VzSXRlbSgpCkBAIC02NTQsOSAr
NjU0LDkgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0
ZW0mIGl0ZW0pCiAgICAgLy8gTGF0ZXIgd2UgbWF5IHdhbnQgdG8gbGVhcm4gdG8gbGl2ZSB3aXRo
IG5pbCBmb3IgVVJMLgogICAgIC8vIFNlZSBidWcgMzM2ODIzNiBhbmQgcmVsYXRlZCBidWdzIGZv
ciBtb3JlIGluZm9ybWF0aW9uLgogICAgIGlmICh1cmwuaXNFbXB0eSgpKSAKLSAgICAgICAgdXJs
ID0gYmxhbmtVUkwoKTsKKyAgICAgICAgdXJsID0gV1RGOjpibGFua1VSTCgpOwogICAgIGlmIChv
cmlnaW5hbFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIG9yaWdpbmFsVVJMID0gYmxhbmtVUkwoKTsK
KyAgICAgICAgb3JpZ2luYWxVUkwgPSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgCiAgICAgU3RyaW5n
V2l0aERpcmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCAwMWQxZWZjMzE1YTViMDJkMDY5OWU5YWM0NWRmZDEz
Njg3OGY0YWIxLi41NGQ3MjIzMTBkOGRmZjkyMWYxZTlkZTA1NDViZDllMWM2MjA5NDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBMaW5rUHJlbG9h
ZFJlc291cmNlQ2xpZW50OwogCiBzdHJ1Y3QgTGlua1JlbEF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZFRpbWluZy5oCmluZGV4IDczZjllZjk0YWZkNjI1NWQ1YTNmNTc0NTgyZDMwYTY0ZjIx
ZDE0NjQuLmZlYTdjNDFmY2U2MDI1MjZlMzZhYThlZGI2ZWFiNDY1Njk4NThjODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xvYWRUaW1pbmcuaApAQCAtMjUsMTMgKzI1LDEyIEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFVSTDsKLQogY2xhc3MgTG9hZFRpbWluZyB7CiBwdWJsaWM6CiAgICAgU2Vjb25kcyBz
ZWNvbmRzU2luY2VTdGFydFRpbWUoTW9ub3RvbmljVGltZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IDU5Njc4MmM2NTdjYWM1MDgyY2FmZTFjZTRiMWMx
NmZmYjlhNjhkNGQuLjI4NWU2ODA5Y2U0NWUyMjEyNDQ0NjlmZjk1NWFlNTVlZmRlYjUxNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC01MSw3ICs1MSw2IEBAIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3Qg
RmV0Y2hPcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRD
b250ZW50Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hl
Y2tlci5jcHAKaW5kZXggMDUwY2I3OWVhNjU3N2Q1M2EwMzM1MjA2YmQ0NjBlYTQ0NzNmMjM3Ny4u
ZmFkZTAxYjdjMWQwYmVjODQ2MzY3ZmY1YTYyN2Q5M2RmMWYwOWExNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBA
IHZvaWQgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JtRm9yTWl4ZWRDb250ZW50KFNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpCiB7CiAgICAgLy8gVW5jb25kaXRpb25hbGx5IGFsbG93
IGphdmFzY3JpcHQ6IFVSTHMgYXMgZm9ybSBhY3Rpb25zIGFzIHNvbWUgcGFnZXMgZG8gdGhpcyBh
bmQgaXQgZG9lcyBub3QgaW50cm9kdWNlCiAgICAgLy8gYSBtaXhlZCBjb250ZW50IGlzc3VlLgot
ICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29s
SXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaXNNaXhlZENv
bnRlbnQoc2VjdXJpdHlPcmlnaW4sIHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVk
Q29udGVudENoZWNrZXIuaAppbmRleCBhMjZhODU3OTdkM2E4Y2IwYzI5MzNkZjI0Nzc2YjY5NWI3
MGQ0NDM0Li41ZmRmZmY4MGEzMTg3NDM3MTgzODg5MGI1ZTI0MDRlYTAwOWYxMTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgKQEAgLTM3LDcgKzM3LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVy
Q2xpZW50OwotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIE1peGVk
Q29udGVudENoZWNrZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hl
ZHVsZXIuY3BwCmluZGV4IGE4ZjgwYmUxMzgyMDdkYzdhYTZjNmMxNDY5NzNkMGRiOWU0YjliMWMu
Ljg4ZTcwNTE2ZDZjZTkzZDM2ZWM4M2FiMmM4ZDQzYjdmYzQ1ZGEyMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTM2Niw3ICszNjYsNyBA
QCBpbmxpbmUgYm9vbCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzaG91bGRTY2hlZHVsZU5hdmlnYXRp
b24oY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmln
YXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChwcm90b2NvbElzSmF2YVNj
cmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBOYXZpZ2F0aW9uRGlzYWJsZXI6OmlzTmF2aWdh
dGlvbkFsbG93ZWQobV9mcmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuaAppbmRleCAwNDU5MzE4MTkxNzY0OWJiMjk4NzUzNTVlMzM4NzIwNzM1NDMy
MTk0Li42ZmJlMmE1YjNkYmM5NmZjYmQ0NTA5MjU1OTc4NGU4ZGQwY2Q2YjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAg
Y2xhc3MgRm9ybVN1Ym1pc3Npb247CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFNjaGVkdWxlZE5hdmln
YXRpb247CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgTmF2aWdh
dGlvblNjaGVkdWxlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUGluZ0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRl
eCAxNTQ4OWRjZjA0YmYxZGVkNzg4NmVmOGMwODYxN2RkYmMxM2Q5YTE4Li42ZGVlZjQ1MTY5YTll
NWNhMzBhOWYyZjgzMzQyMzc5ZDM5OWIxZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUGluZ0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVy
LmgKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9ybURhdGE7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiAKIGVudW0gY2xhc3MgVmlvbGF0aW9uUmVwb3J0VHlwZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaAppbmRleCA5YjYzMzBlZDQ3YmFjNjZk
ZWEyMmI4NGUxOWNmMWQwMGIwNmEyM2MxLi4xYzEyM2QwNmY3YWQ2NzUyMjlkNmM1ZTAxZjkyNTFh
NjhiMTYyMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKQEAg
LTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2Uu
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHAKaW5kZXggN2JkZmM0OGY1ZDQwNTliZTZhYjhiYjlhMjVlYjA4MzUwZTg5MDE5OS4uMTI3
MjNiMzQyY2I1YzI2NTJmM2UxNGFkNGFjM2MyZDFjNDBmNmZiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjIzLDcgKzIyMyw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoY29uc3QgU3RyaW5nJiBkb21haW5JCiAgICAgYXV0byBvcGVuZXJQcmltYXJ5RG9tYWluID0g
cHJpbWFyeURvbWFpbihvcGVuZXJVcmwpOwogICAgIGlmIChkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MgIT0gb3BlbmVyUHJpbWFyeURvbWFpbgogICAgICAgICAmJiAhb3BlbmVyRG9jdW1lbnQu
aGFzUmVxdWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24o
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKQotICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShvcGVuZXJVcmwuc3RyaW5nKCksIGJsYW5rVVJMKCkpKSB7CisgICAgICAgICYmICFl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG9wZW5lclVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgp
KSkgewogICAgICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyUHJpbWFyeURv
bWFpbik7CiAgICAgICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVz
dHMgc2luY2UgdGhleSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJE
b2N1bWVudC5zZXRIYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJ
bnRlcmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCBhZTJjYWUyNzgwOTE3NTU4M2Yy
ZWJiNDMzNjVhMTAxOWExNDcxMDg3Li4yYWJmYzUwMzM0YzE3ZDg5ZTJiNmZmYmRjMzhhMzgyYTFm
MTA2ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aApAQCAtNDcsNyArNDcsNiBAQCBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1j
bGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAppbmRleCBmOTRkNmZkMTll
Nzc0NmRmNWU2ODNhOTU3ZjBmZDk5YTc3MmQzMjFhLi4wODI0NjlkYTEyYTA0MGIzMThjNDJhZjNj
Njc0Y2Q4MGMwZmQ2ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmgKQEAgLTI2LDEwICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
V2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
CmluZGV4IDZiYTU1MjZjMGFmNTZlOTYyMzU2MWRiNDdjZDFiYWZmODEzMTk2Y2MuLmEwYjdkODQ5
ODUwMmIwZTcyMzdhZjFhMDFhMjFiNmJkN2E5NTg5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJh
bWVMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcmV2aWV3TG9hZGVy
OwotY2xhc3MgVVJMOwogCiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKaW5kZXggNmM5YWNiMTkzYTY3
MDIzYmI1ZGMzNmJhYzRkYTdlNzk4ODM0NDNiZS4uN2VmOGRiYzg1MTRkY2VjZmYxYjA3ZjQ1MDM3
MDM3ZjhlODg0ODgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
VGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKQEAg
LTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0xvYWRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiU2VydmVyVGltaW5nLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IDVkN2QzOGMzYjA3MjNiNzE4
NjA5YWQ4N2IxMGU3NTIxNjRkZTg3MzYuLjU1YTE2ODQ4MzFiZDAxZjZlMGM0YTYxZmM3Yjc3YmI1
NzdlZDg4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAt
NzcsMTQgKzc3LDE0IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJh
bWVPd25lckVsZW1lbnQmIG93bmVyRWxlbWVudCwgY29uc3QgU3RyCiAgICAgLy8gU3VwcG9ydCBm
b3IgPGZyYW1lIHNyYz0iamF2YXNjcmlwdDpzdHJpbmciPgogICAgIFVSTCBzY3JpcHRVUkw7CiAg
ICAgVVJMIHVybDsKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkgewor
ICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpIHsKICAgICAgICAg
c2NyaXB0VVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsgLy8gY29tcGxldGVVUkwoKSBlbmNv
ZGVzIHRoZSBVUkwuCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdU
Rjo6YmxhbmtVUkwoKTsKICAgICB9IGVsc2UKICAgICAgICAgdXJsID0gY29tcGxldGVVUkwodXJs
U3RyaW5nKTsKIAogICAgIGlmIChzaG91bGRDb252ZXJ0SW52YWxpZFVSTHNUb0JsYW5rKCkgJiYg
IXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9
IFdURjo6YmxhbmtVUkwoKTsKIAogICAgIGJvb2wgaGFzRXhpc3RpbmdGcmFtZSA9IG93bmVyRWxl
bWVudC5jb250ZW50RnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWUgPSBsb2FkT3JSZWRpcmVjdFN1
YmZyYW1lKG93bmVyRWxlbWVudCwgdXJsLCBmcmFtZU5hbWUsIGxvY2tIaXN0b3J5LCBsb2NrQmFj
a0ZvcndhcmRMaXN0KTsKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVx
dWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBTdHIK
ICAgICAvLyBJZiB3ZSBjcmVhdGUgYSBuZXcgc3ViZnJhbWUgdGhlbiBhbiBlbXB0eSBkb2N1bWVu
dCBpcyBsb2FkZWQgaW50byBpdCBzeW5jaHJvbm91c2x5IGFuZCBtYXkKICAgICAvLyBjYXVzZSBz
Y3JpcHQgZXhlY3V0aW9uIChzYXksIHZpYSBhIERPTSBsb2FkIGV2ZW50IGhhbmRsZXIpIHRoYXQg
Y2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcKICAgICAvLyBuYXZpZ2F0aW5nIHRoZSBzdWJmcmFt
ZS4gV2Ugb25seSB3YW50IHRvIGV2YWx1YXRlIHNjcmlwdFVSTCBpZiB0aGUgZnJhbWUgaGFzIG5v
dCBiZWVuIG5hdmlnYXRlZC4KLSAgICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGlu
Z0ZyYW1lIHx8IChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxVUkwoKSA9PSBibGFua1VSTCgpKTsKKyAg
ICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+b3JpZ2luYWxVUkwoKSA9PSBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGlmICghc2NyaXB0VVJM
LmlzRW1wdHkoKSAmJiBjYW5FeGVjdXRlU2NyaXB0ICYmIG93bmVyRWxlbWVudC5pc1VSTEFsbG93
ZWQoc2NyaXB0VVJMKSkKICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVJZkphdmFTY3Jp
cHRVUkwoc2NyaXB0VVJMKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YmZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaApp
bmRleCA0ODk2ZDYyZjQ1ZjFmODFkOTBkZTc0MDJlMjA5NzA0MWE2ZWIwNjRjLi4yY2FhZTljYTYw
OThhNzUzM2MzMDkzODk2ZGMyMDMxMjZlNjg5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
ZnJhbWVMb2FkZXIuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1l
bnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXaWRnZXQ7CiAKIC8vIFRoaXMg
aXMgYSBzbGlnaHQgbWlzbm9tZXIuIEl0IGhhbmRsZXMgdGhlIGhpZ2hlciBsZXZlbCBsb2dpYyBv
ZiBsb2FkaW5nIGJvdGggc3ViZnJhbWVzIGFuZCBwbHVnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3Vic3RpdHV0ZURhdGEuaAppbmRleCBmMTAxMzUxNTk3MTk4MTgyOWM2MTAxOTE3NTJiOTFhZjll
YzdmYjc1Li43MDU2MzIxMzNkZjhlZjg1NjU5ODUyODdlNDEwNjBiMWRiMzc5NDg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKaW5kZXggNWRmNWY2MDE3Y2U0YzAzYjc4OGJl
OThiZWI3YjZlMTdiYjA0MGI2ZS4uNjEzMTdiNTMxY2NjMWIwNjI5YjIxZGJmMGE2N2NjZmVlYTZj
ZjQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIAogdXNpbmcgRmFsbGJhY2tVUkxWZWN0
b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFVSTCwgVVJMPj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCBhYmFh
NzNlMTRhYjRiOGM3YWJhYjEwODhkZDhjMjM4ZTY5ZTJiNDFlLi40N2Q4OTM0YmE5OTE0YTVhNTZk
MTE0NmE3OTdlZGViODRkZjJkYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0yNywxMCArMjcsMTAgQEAK
IAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IGYyZmIxZjc4MzJi
Y2Q4MDQ2MmJjYWIwOGNlYmE3ZDEyNWI4NWEyNDMuLjBkMTMwYTQ1ZjhhZjNiNDk5MDQyMTA1Yjk2
MTAzOWZmNWZiZjM0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggODFjMjMyMWYzMzk5YzMwNDAzMzc3NmQ5MjZk
OGUzMDAzYjZlNDFhNS4uMDQwZDhiN2FkNmEwOTFlYjFjOWU0MzViNWUwYzM0MDFmOTNhZTI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiU1FMaXRl
VHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA0OGNiZjg4ZTVkODkwMzcxMTM2MTg5NWNh
MWMxMzJhNjQwYzdkOTA0Li42OGMzNjFlNTJiNDJkOTFkMzYxZTljYzgyOTBlZjM1YzM1MDE1MmI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZUhvc3Q7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBTdG9yYWdlSURKb3VybmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggY2I0ODE1ODVmNGEwZGMzNjg5YzhlODE1
ZTcwNmNhMjRjNDI2MDAxNS4uODQ0NjlmOGFkNGE5NGE4NDYyZTc2ZjNkOTEwYzMyZThiMTQxMjE5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJz
ZXIuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKIAog
I2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1
ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKaW5kZXggZTc4MTA4OTNhMjA2OTBhY2U2
M2FlYzNlYzg4ZTYwZWFmNjJmYzc4MC4uOGZlNDBhNjRlNDQ5MGFhYzgyN2E2MWRiMGY0MDQ3YzFl
ZTg2MGIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlm
ZXN0UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0
UGFyc2VyLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBVUkw7Ci0KIHN0cnVjdCBNYW5pZmVzdCB7CiAgICAgVmVjdG9yPFVSTD4gb25saW5lV2hpdGVs
aXN0ZWRVUkxzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBsaWNpdFVSTHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmgKaW5kZXggMzdkZjY4YjM2NmNmZjg1MzliOTVjODIzZjJlOTEyNGQzNWVhOTkzOC4uZTQ2
MGI2OWMyYWVkNWQyNzlkZDU0YTBkZjlhZjAxMGI5NGJjNzdmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24u
aApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmU7
CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCA2NDEyMjYyZTE1YjkxZjFhOWFlNTRhYzA1MTk1
MTZiNmNhNjViODFmLi5hMWQzN2M3MDI5ZjI5N2E0MWY2ODNmMDllNzg2NGE5ZGM4YjdiMDA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRl
ICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hl
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTEsNiArNTAsNyBAQAogI2luY2x1ZGUgIm1hcmt1
cC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTU2NCw3ICs1
NjQsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
RnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9j
dW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3Ro
ZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93
bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5v
XCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhl
aWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkt
PnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKLSAgICBhdXRvIGlm
cmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVN
YXJrdXApLCBibGFua1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOworICAg
IGF1dG8gaWZyYW1lUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVy
KGlmcmFtZU1hcmt1cCksIFdURjo6YmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFN0
cmluZygpKTsKIAogICAgIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJj
aGl2ZXM7CiAgICAgc3ViZnJhbWVBcmNoaXZlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXgg
NWUxZTNmMWQzY2QxNGE0NmEyNzQ5YTQ4YTE5MzljYTJkNjM4OGI0Yy4uOGY1ZGQyMDYxNzRmZjQ4
NmY0MTJjZWRmODEyYTk4MGRkNjNkYzUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC00NywxMSArNDcsMTEgQEAKICNpbmNsdWRlICJT
Y2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
U3VicmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggMDc3N2IxNzcyNGU5YjA1Y2VmNWVk
NTRhM2FlZmMxZDExNDY3ZjRkNy4uMTBmNjljNmExMDUyOWYxZmQ5MTFhMWQwNzRlZjAzMDljMGY1
Y2JiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVyOwogY2xhc3MgU2V0dGluZ3M7Ci1jbGFzcyBVUkw7
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdXNpbmcgUmVzb3VyY2VFcnJvck9yID0gRXhwZWN0
ZWQ8VCwgUmVzb3VyY2VFcnJvcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaAppbmRleCBkZjQ2YmUyZDM3N2U0YzFkZTE4MmFk
YWYxNGQ3MzlhMWY5N2NkYzAyLi4zOGJiMTk5OTAwODdjOGQ2NjYxZjM2YTM2NjlkNGM5YWUzMzQ4
MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVT
aGVldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHls
ZVNoZWV0Q2xpZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkU3R5
bGVTaGVldENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGQ3MTY3OThhNGNl
MWQ5N2Q2MWQzMTNlOTUxOGI3ZGMyMjY5ZjcwNWMuLjJmY2JkMzE5ODVhNDc1YTMwZmYxNzdmNjMy
OTQ2MjJmMDEyNTI5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5oCkBAIC00MSw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSAgewogCiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCmluZGV4IDZhYTU1Mzc0Zjc4YjY2NzdmNTcwOWEy
YmQ5ZGNiNzE0YzE4ZmZkZmEuLjM0YTBmMzJiNGY1ZThkZjlhNmMwM2VmNTc0MThmYzZhYTg1MWQz
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAgLTI3LDkgKzI3
LDkgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQppbmRleCBmOTEwZWQ1YmRlMjQ5YmEzMWI4YTU4M2Zj
NTQxZWY3YWFjY2MzY2MwLi5jYmUwMDA0ODA2Y2M1ODc0MjNkOGRlYjBlZTQ4NGEwMWY3ZTA2ZjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFz
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0K
QEAgLTMwLDExICszMCwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMb2FkZXJO
U1VSTEV4dHJhcy5oIgogCi0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3Rm
L1ZlY3Rvci5oPgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgi
CiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNw
cAppbmRleCBjMTM5MDc2OGVmODY1ZjI2NjQxZTlhOTM0OGU2ZTY2MGRiMDcyZGVhLi45MTZkM2Y1
MTFiOTY1M2Q4NGNlN2FiM2YxNTExZjBiYjczNWI2YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNDEsNyAr
NDEsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2lu
Y2x1ZGUgIlZUVEN1ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCmluZGV4IGI1MTdiNTJlNzlkODg0ZDBlNzY4NjUwYTYxM2ZmNzQ5ODIyNDVmNGEu
LmE1NTBkNWIwYjc5YTk0MTg3N2EzZmJmNTQ5Njc0Y2RiMzNlZWJjZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaApAQCAtMzgyLDcgKzM4Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JU
IENocm9tZUNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9u
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIHsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgeyB9
OworICAgIHZpcnR1YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJM
JiwgY29uc3QgSGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIHsgfTsKIAogI2lm
IFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVu
dEN1cnNvcigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3Jp
Z2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IGFmN2NhOTI2
NGE0ZjJmODVlOTQwYzliZDFkNDAxNmRmYTA5OTJjYzAuLmI4NzUwNWEwNTA1NzllM2JmMTM4NTAy
YTVlZmY0YTQ1NTJlZDFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50
T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtMjYs
NyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEu
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDVl
N2MzNWM5NzcxOGQ4OGY4NDFiZjQxODA0NTI0OTRhZDhmNzUxOTIuLjg4OWVlOTk3NjEyOGQxYTk2
NjdlMGE1MGEzNDhlNTEyYmU2ODcwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q2xpZW50LmgKQEAgLTMxLDI5ICszMSwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAg
ICBjbGFzcyBGcmFtZTsKLSAgICBjbGFzcyBVUkw7Ci0KLSAgICBjbGFzcyBDb250ZXh0TWVudUNs
aWVudCB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgp
ID0gZGVmYXVsdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkg
PSAwOwotICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVS
TCYgdXJsKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0
IEZyYW1lKikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZy
YW1lKikgPSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpID0gMDsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHN0b3BTcGVha2luZygpID0gMDsKK2NsYXNzIEZyYW1lOworCitjbGFzcyBDb250ZXh0
TWVudUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29udGV4dE1lbnVDbGllbnQoKSA9
IGRlZmF1bHQ7CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOwor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTcGVha2luZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5n
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSA9IDA7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7CiAjZW5kaWYK
IAogI2lmIFVTRShBQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBzaG93Q29udGV4dE1lbnUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0
TWVudSgpID0gMDsKICNlbmRpZgotICAgIH07Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRl
eCA2ODEyNmJhOTZlOGJmMTdlNzY4OTNlMWViYWFjZjU0OTQwZjJmYmM3Li5hM2U1ZWFlODk0ZDY0
Mjc2MzdkZDg0NWVkYWFkZTcxYzYxNTFjMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYg
aXRlbSkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2s6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAg
ICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNv
bHV0ZUltYWdlVVJMKCksICJmaWxlIikpCisgICAgICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElz
KG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVSTCgpLCAiZmlsZSIpKQog
ICAgICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgICAg
ICBicmVhazsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
OjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAg
ICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRWaWRl
b1RvRGlzaygpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpdGVtLnNldFRp
dGxlKGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkQXVkaW9Ub0Rpc2soKSk7Ci0gICAgICAgICAg
ICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJcyhtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29s
dXRlSW1hZ2VVUkwoKSwgImZpbGUiKSkKKyAgICAgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMo
bV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksICJmaWxlIikpCiAg
ICAgICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlwYm9hcmQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggN2JkZTFjYmI4YjYzNzFlN2E3YTA4YmE1
NTFlODU2YjgxOTJmNjBmYy4uMWQ2ZGQ3Y2E3Yjg4ZjhmOTNhOWMyNDlkNDlhZTE3NTdmOTAzMDRi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAjaW5j
bHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRl
ICJTdWRkZW5UZXJtaW5hdGlvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc3Vh
bFZpZXdwb3J0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9pbnQuaCIKQEAgLTIyMTUsNyArMjIxNSw3
IEBAIFN0cmluZyBET01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0
IERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBJCiAKIGJvb2wgRE9NV2luZG93Ojppc0luc2VjdXJl
U2NyaXB0QWNjZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZykKIHsKLSAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCisgICAg
aWYgKCFXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIElmIHRoaXMgRE9NV2luZG93IGlzbid0IGN1cnJlbnRseSBhY3Rp
dmUgaW4gdGhlIEZyYW1lLCB0aGVuIHRoZXJlJ3Mgbm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKaW5kZXggYTEwZGFiMzNmYjcyMDBkZjFhNDIwYzM0MjhlNWY3YjM5NmZjY2Q2
Zi4uZTAxMDhhN2JlYjNhYWJjNGQxMmE3ZTgzYWE5NzkxZGQyZTEzMTA1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTEwNjksNyArMTA2OSw3IEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRl
LCBEcmFnT3BlcmF0aW9uCiAgICAgICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQp
CiAgICAgICAgICAgICAgICAgc3JjLmVkaXRvcigpLmNvcHlVUkwobGlua1VSTCwgdGV4dENvbnRl
bnRXaXRoU2ltcGxpZmllZFdoaXRlU3BhY2UsIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNl
dFVSTChzcmMuZWRpdG9yKCkucGFzdGVib2FyZFdyaXRlclVSTChsaW5rVVJMLCB0ZXh0Q29udGVu
dFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRX
cml0ZXJEYXRhLnNldFVSTERhdGEoc3JjLmVkaXRvcigpLnBhc3RlYm9hcmRXcml0ZXJVUkwobGlu
a1VSTCwgdGV4dENvbnRlbnRXaXRoU2ltcGxpZmllZFdoaXRlU3BhY2UpKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFzdGVib2FyZCBhbHNvIGNvbnRh
aW5zIHRydXN0d29ydGh5IGxpbmsgZGF0YQogICAgICAgICAgICAgLy8gYnV0IGRvbid0IG92ZXJ3
cml0ZSBtb3JlIGdlbmVyYWwgcGFzdGVib2FyZCB0eXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaAppbmRleCBjMDJkNWM4MDE2YzY1YjNkNWVmOTM1NmM4MmJlN2Q1NzJiOTc5YTk0
Li44NDM1MjgzY2RmY2IxMWE4NjJkOWZjY2M2NmYzMDQzZjJjNTdhOTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhZ0lt
YWdlLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCAzNzkyYTkxMjZmMWQzMGFmZmUzN2Jl
MWMyYTZkYWM3ODIxNmE3MjlhLi41OGE0YzM4NzQ5ZTk1MGI0NzhjZjg3MDY4YTI2MzkzMTBhZGVm
MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggZTg4NmI5MGZj
MDgxYmE3YjNmMzBlYzM0MTRiMmZjYmJlOWVmMTVhNS4uYTAyMTVmYTc3NDIzODUyYWJiNTQxMTBh
NzI5NzE2YjkzNGU5MzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtODksNyArODksNiBAQCBjbGFz
cyBSZW5kZXJXaWRnZXQ7CiBjbGFzcyBTY3JpcHRDb250cm9sbGVyOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTZXR0aW5nczsKLWNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQb3NpdGlv
bjsKIGNsYXNzIFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMjQwZTY0NTcz
N2E0Yzc4Y2Y1MmQ3MWQ4ZDI4NTcwYTAzYjg0ZjlhZi4uODRjNjIwMTBmNjZlOTNjMmVhYWVlZDQz
Y2Q3ZjI0MDU1MmNkZGI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01Miw3ICs1Miw2
IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEhUTUxGcmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQ
YWdlOwogY2xhc3MgUmVuZGVyQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9I
aXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAppbmRleCAwNWZlMmIzZjY3
MGRlMmZmYjViMGQ2YTkwZDhkNzRmOTJhODQ2NTcyLi43ZjM1ZjRkNzAxMDU1N2ZjNTk5YTIxYWRk
ZTY2MmEzNTk0YjZiMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3Rvcnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaApAQCAtMzYsNyArMzYsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7Ci1jbGFz
cyBVUkw7CiAKIGNsYXNzIEhpc3RvcnkgZmluYWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBw
dWJsaWMgUmVmQ291bnRlZDxIaXN0b3J5PiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKaW5kZXggN2I5OGEwNjM2YzQ5MzZjZDZmZDYy
OTQwMTIyY2FjYzlhODU4Njc2Ni4uODBhNmVkOTJiMDdhYjc5ZTAwZjUxYTc1YTgyMDI3NGNlYzU5
NjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdh
dGlvblNjaGVkdWxlci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
MCw3ICs1MCw3IEBAIGlubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogCiAg
ICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAo
IXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBibGFua1VSTCgpOyAvLyBVc2UgImFib3V0
OmJsYW5rIiB3aGlsZSB0aGUgcGFnZSBpcyBzdGlsbCBsb2FkaW5nIChiZWZvcmUgd2UgaGF2ZSBh
IGZyYW1lKS4KKyAgICAgICAgcmV0dXJuIFdURjo6YmxhbmtVUkwoKTsgLy8gVXNlICJhYm91dDpi
bGFuayIgd2hpbGUgdGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdlIGhhdmUgYSBm
cmFtZSkuCiAKICAgICByZXR1cm4gdXJsOwogfQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgTG9j
YXRpb246OnJlbG9hZChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdykKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh0YXJnZXREb2N1bWVudC51cmwo
KSkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodGFyZ2V0RG9jdW1lbnQudXJs
KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVy
KCkuc2NoZWR1bGVSZWZyZXNoKGFjdGl2ZURvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaApp
bmRleCBiYjdkMmQxZDMzZWVmZjZjOWQxNjY2YWIwMDEwMTc4MzJhNGYyYWY4Li4wMzRjZThiNmVm
Y2Y3MmMwYTdlZDRiZWUwMGZlMGVlYzk0YjE0NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCkBA
IC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93Owog
Y2xhc3MgRnJhbWU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIExvY2F0aW9uIDogcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8TG9jYXRpb24+LCBwdWJsaWMgRE9NV2luZG93
UHJvcGVydHkgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAyNGI0MWRlM2Q2MWZhMTY4MTg4
MjFlZDMwY2Q3ZTdiOTRmNjgwZDcxLi5iMmI5YWU2ZTU5NTg3MjdlYmU0M2ZjYzBkODJkMGEzYTdk
MjA4MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTM1LDcgKzEzNSw2IEBAIGNsYXNzIFNldHRpbmdz
OwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3Mg
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwotY2xhc3MgVVJMOwogY2xhc3MgVXNlckNvbnRlbnRQ
cm92aWRlcjsKIGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4
IDNiNmUxODI5ZTI4YzM1YTM5ZTRhMTZiNWYwODhlNjFjM2M0NmVkOGEuLmZmM2UyZTFmY2IwNjFh
NGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmgKQEAgLTMwLDExICszMCwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVS
TEhhc2guaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKaW5kZXggMjRhYjk0YmNhMjk1Y2NhZmIwYTY1MWE2Mjcw
YjI4Nzk0NWViYTk5MS4uM2E4NjM0YWI2MzdhOTE0MmE3MjUwM2Y5YTg4YTUyNmY3OWUwYTliZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBQZXJm
b3JtYW5jZVRpbWluZzsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRp
bWluZzsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBV
c2VyVGltaW5nOwogCiBjbGFzcyBQZXJmb3JtYW5jZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PFBlcmZvcm1hbmNlPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAppbmRleCA1NzUzMzU4MGMzMDIxZWFlNjZkZTMx
OTA4OWQ4ZTRiMWJjMTAzZjlkLi43YjdkODdhNDU4ZmJhMGU3MzlkMmM0MjA5Y2Y4MjQyYmJkODc0
OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRp
bWluZy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlJlc291cmNlVGltaW5nLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggMjI5ZWZmODQz
ODU0YjIwNjgwZDRhMzlkYzUxYzAwNzJhNzY0OWU5My4uMDIwZTA5MmI5OGY4YzgzZmQ4YTViM2Y0
MzMyYzI0NmIzZWM1ODc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAK
QEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNs
dWRlICJUZXh0RW5jb2RpbmcuaCIKQEAgLTE0OCw3ICsxNDgsNyBAQCBTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiAgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0
YXJ0cyBhcyBtX2RhdGEuaG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KICAgICBtX2Rv
bWFpbiA9IG1fZGF0YS5ob3N0OwogCi0gICAgaWYgKG1fZGF0YS5wb3J0ICYmIGlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbChtX2RhdGEucG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQorICAg
IGlmIChtX2RhdGEucG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2RhdGEu
cG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICBtX2RhdGEucG9ydCA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmln
aW5zIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4KQEAgLTUxNiw3ICs1MTYsNyBAQCBSZWY8U2Vj
dXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCwgY29uc3QgU3RyaW5nJgogewogICAgIFN0cmluZyBkZWNvZGVkSG9zdCA9IGRlY29kZVVSTEVz
Y2FwZVNlcXVlbmNlcyhob3N0KTsKICAgICBhdXRvIG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCks
IHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7Ci0gICAgaWYgKHBvcnQgJiYgIWlzRGVm
YXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQorICAgIGlmIChwb3J0ICYmICFX
VEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQogICAgICAgICBv
cmlnaW4tPm1fZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDVhZGY1MDE3NDliMDljMjkzZTU5YmE0MDQ1
NmY3NjdjYjU2ZTA4ZTEuLmI5M2QwZmFmMjM1YTdmZTM1NDc2NTA5ZjZlNDM3ZDU0NDA1Y2MxMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTM0LDggKzM0LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6
CiAgICAgZW51bSBQb2xpY3kgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmgKaW5kZXggY2VmZmVhMzJiMDg0YzU2MzEyNGYyMGI3YzVmZTI4ZjE0OTA0MDQ3NS4uMjc3NjJl
YTIxZDZkMjA2NWU5ZGQwMTQ2ZGI5NzliMzMyZWM0NTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5I
YXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCmluZGV4IGVl
MjU3MmM1YTlhNjQ0Mzk1N2E1ZjNmNzUzZjQ2ZTJmYmE5MjIzNDAuLmUwMTQ4YTJkMDVkOTliMGRk
ZGYwNmEyM2QyNDZkNTM0NTJjYjJjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5IYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkhhc2guaApAQCAtMjgsNyArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9s
aWN5LmNwcAppbmRleCAxNTNlZGQ4MTlkMTI1NTU1NTY4ODc2NTY2ZGUzMWY5OGI2YzA1NTNiLi40
MjM0MTgyODBlYTJlZTNjOWJmZGZjOTFjZDEyN2I5NjhlYjFlMWJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMzEsMTEgKzMxLDExIEBACiAKICNpbmNsdWRlICJP
cmlnaW5BY2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBTZWN1cml0
eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKGNvbnN0IFVSTCYg
dXJsKQogICAgIC8vCiAgICAgLy8gTm90ZTogV2UgZ2VuZXJhbGl6ZSB0aGlzIHRvIGludmFsaWQg
VVJMcyBiZWNhdXNlIHdlIHRyZWF0IHN1Y2ggVVJMcyBhcyBhYm91dDpibGFuay4KICAgICAvLwot
ICAgIHJldHVybiB1cmwuaXNFbXB0eSgpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnN0
cmluZygpLCBibGFua1VSTCgpKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwu
c3RyaW5nKCksICJhYm91dDpzcmNkb2MiKTsKKyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNkb2Mi
KTsKIH0KIAogdm9pZCBTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KExvY2FsTG9h
ZFBvbGljeSBwb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggY2Qz
N2NhM2FkMmRmZGJkN2U2NzIzNTFmYTU0M2VlZjQ5ZTgyYjRmNC4uNTMzYjFkNGZiZGFkNTJlMzhm
MWZkMzVhMmY2YTA3ZDQ4MDA4YjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3ku
aApAQCAtMzQsNyArMzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgU2VjdXJpdHlQb2xpY3kgewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKaW5kZXggYWE4MDRjZGIwODRlMGQ2YTNmZDNkZWVi
NmY2MWQ1NTQzYWYzNDFiMS4uOTg2Nzc2Y2EzZGI1ZGE4ZjhlMWE2YmE4Nzc5ZmRlZWE3MjgzYjli
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5j
bHVkZSAiU3RvcmFnZU1hcC5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
IldyaXRpbmdNb2RlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+
CiAjaW5jbHVkZSA8dW5pY29kZS91c2NyaXB0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRl
eCAyNzlmMDMzYTI2NDgxM2MyMWFkZjkwY2ZhNmMzNjU4YWMzODQzZjIzLi5jOGIxMmEzOTcxYjY2
MmY4MDc4ZjNjYTY4ZjUwZTYxZjlhN2Y4YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAg
LTI0LDcgKzI0LDcgQEAKICAqLwogCiAjcHJhZ21hIG9uY2UKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU29ja2V0UHJvdmlkZXIuaAppbmRleCBkMTk3OTc3YWZlYjgyMGFhNDEyZTJjMzRmYTU0
NzIxNjM4NDkwZTcyLi45ZThjMDAzYmZmNTFlMWE1Y2M5NmQyZTQ3M2U3YWVlZWVkYmRhOGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oCkBAIC0zNCw3ICszNCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTb2Nr
ZXRTdHJlYW1IYW5kbGU7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7Ci1jbGFzcyBV
Ukw7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvY2tldFByb3ZpZGVyIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFNvY2tldFByb3ZpZGVyPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCmluZGV4IDI4ZGZiMzJhMDc2ZTY1MTJlY2Y5MjRm
MDE0NTIyMGVlYWU0OWM0NzIuLmZhNjkyMDM0ZGJhZTVmZDc5ZmU4MTk3ODlhNzMyMWViZTRiMGRl
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCkBAIC00Miw3
ICs0Miw2IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwog
Y2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIGNsYXNzIFVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I7CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNl
clN0eWxlU2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAKaW5kZXggYjliODExNTgyN2I3OGY1MjczMDk1YzJjM2UxNTE4YmY0M2Y0M2U5MC4uZjM3
M2NmMzdiMjRjNTBmYzIxZGM2ZGM0NzFhYjA4ZWQ0ZWM1MDkxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
aAppbmRleCA5MzNmNjlkNmM1YTYwZTZlZDcyOGJhMDgwZWVlODRmNTQ4MGRmMmQ2Li45M2Y2NTgx
MmRhYzVkZThhZDVmY2RiNjcwZDhkMmY5ZTg2OTc4MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybiB7
CiBwdWJsaWM6CiAgICAgVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkgOiBtX2ludmFsaWQodHJ1ZSks
IG1fbWF0Y2hTdWJkb21haW5zKGZhbHNlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlclNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKaW5k
ZXggODUxMGMxZjMzOTkwMWU5OTVmMzIwY2NjOWJmNzE5YjJlNDlhZTQyNy4uNTJjMTJmM2M2OTY2
MzAyYWFlZjQ1NWI4ZmVmYmM5OWViZGE1ODRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgK
QEAgLTI1LDcgKzI1LDcgQEAKICAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVzZXJDb250ZW50VHlwZXMuaCIKICNpbmNs
dWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggNjhmMTBhODJhZGY4OThmMjUyYzQxNTU5Y2Ix
Njc4YWVjOGM1MDg0MS4uYzQ3NDc2N2U3Yzk4YmI0OGE4ODNjYjczYjY5ODkwNWY2MDFkNzYwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAtMjUsNyArMjUsNyBAQAogIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiVXNlckNvbnRlbnRUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlw
ZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExp
bmtTdG9yZS5oCmluZGV4IDQzYzM1MTM3MmQ2MThiNjgxMDliMGZiOGNjZDY5ZmM4NWY4YmRkNzgu
LjI2ZDY1MGRiYTc0ZGM1MDJjZjkzMDlhM2YzZDFjMDVkYTZiNjQ5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogY2xhc3MgUGFnZTsK
LWNsYXNzIFVSTDsKIAogY2xhc3MgVmlzaXRlZExpbmtTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFZpc2l0ZWRMaW5rU3RvcmU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKaW5kZXggNWI1OTJmZDgyOGY5N2Y5NGMyM2FlMzM0
OTY4YTVhYjQ3ZDk2YzE2My4uZTAyYTdhYjZjNTliZmNmNWI5OWU2NDhmZmM2YzdlMjU0NGNmZmUz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmgKQEAgLTU2LDcgKzU2LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVGV4dEVuY29k
aW5nOwotY2xhc3MgVVJMOwogc3RydWN0IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKIAog
dHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q+PiBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaAppbmRleCBlYjRmZTg3
YzI5ZjFjYWIxMThiZDFiMGRiZTY3NjNjYjEwNGYzMjMwLi44ZTA1MTgyNjQxNDA2ZjJjYzhjYWEy
ZGM1NmFlMzM2MDYzNGU2YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaApAQCAtMzIsNyArMzIsNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3JtRGF0YTsKLWNsYXNzIFVSTDsKIAogc3RydWN0IENT
UEluZm8gewogICAgIFN0cmluZyBkb2N1bWVudFVSSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaApp
bmRleCAyOTA3MjUwZjBlYjFkYzRmZDA4ZmIyMDcyYzY4MzM3YjI4ZDdiMDI2Li5kZDUxMzAwZWMz
YjAwMzMxZjMzYmQwMjczN2ExNThjMmFhYzYyMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5o
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5o
IgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oIgog
I2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggOTRiNGNjMTNjMGY2ZTQ1YmRhNGY1ZDgzYjRkMThlNzcz
MDNmNDM2Yy4uZWIyMTk1YTIwNGE0YzZiZWE0N2E0NzA4NDEzYmMwYjdlNmYzNDlkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3kuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAw
LDE0ICsxMDAsMTQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnBvcnRNYXRj
aGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoKG1fcG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29s
SXMoImh0dHBzIikpIHx8IChwb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZh
bHVlKCksICJodHRwcyIpKSkpCisgICAgaWYgKChtX3BvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnBy
b3RvY29sSXMoImh0dHBzIikpIHx8IChwb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQudmFsdWUoKSwgImh0dHBzIikpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBpZiAoIXBvcnQpCi0gICAgICAgIHJldHVybiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9w
b3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSk7CiAKICAg
ICBpZiAoIW1fcG9ydCkKLSAgICAgICAgcmV0dXJuIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChw
b3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpOwogCiAgICAg
cmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAppbmRleCA0ZWVhYmIwMTM2NTI1MWI2ZDg5NjMzY2E5
NjgwZDAxNWYyMzEwNmFhLi5hMmRiNTA0Mzg5OGYyZTY5NDdiYzdiMGEyZGQ2NDQzYWI1MTQzOGQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2UuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgU2VjdXJpdHlP
cmlnaW5EYXRhOwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmNwcAppbmRleCAxYjQzMzEyNjYwMGE1MDFmOTVmNWU2M2I0MmRkNGNkZGRkOTU3
OWIyLi4yNmRhOTExNTM3NjRhZmY3MDQ4Njc4ZTYyN2Y3MmZjNGM3OTgxZDVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgog
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgKaW5kZXggOWY2M2MzMDA2YTBjYTdmMmUzMzk5NDgw
MWI1NDJjMzY2NjhjMmU1NC4uNWZjZjNiMmVhZTRhOWU1Zjg0ODEwYmQ1M2M0NTU1MjQ0MDc3MjZm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3QuaApAQCAtMzYsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiAKIGNsYXNz
IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERp
cmVjdGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcAppbmRleCBjMmJmMWQ0NWE1NWY1NzdmYTJkM2ZiNjAw
YjJhYzlmM2ZmMGNhMWU0Li4xYjA5MmI4NGZkMGJmN2Q2NmY4ZTFhYWZlMGYxYmFjNTMzNmFlNjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcApAQCAtMjksNyArMjks
NyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCmluZGV4
IGI5YTlkMDBkNWJkMmZkYTlmYTdmYTE0ZWI5MTcxYWM4NjEyODU3YjguLjRiOGUxYWFlNmI0Nzcw
ZWVkOTY3ODFiNmRiZjY2YWJhMWUxMjU1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCkBAIC0yMywxNCArMjMsMTMg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcl9oCi0jZGVmaW5lIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
IAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogT0JKQ19DTEFTUyBOU0NvZGVyOwpAQCAtNzcsNSArNzYsMyBAQCBjbGFz
cyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgewogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotCi0jZW5kaWYgLy8gQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NvbnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1l
bnVJdGVtLmgKaW5kZXggNDc2YTNjMzZiOTViZGIxODdiYjU4OTMyZTAwM2JkMTFlZjMyYjQwNi4u
MWIwZjc0NTBiNDU3MmQ1NmE5MTNlNWMxZTdhYTU3Mzk4NDk0OGQxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb250ZXh0TWVudTsKIGNsYXNzIEltYWdlOwotY2xhc3MgVVJM
OwogCiBlbnVtIENvbnRleHRNZW51QWN0aW9uIHsKICAgICBDb250ZXh0TWVudUl0ZW1UYWdOb0Fj
dGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKaW5kZXggYjIxMjI0ZjFjYjlhMGRhOWFmNTg2
YWI5YjA0ZjM5MTI1NzZlY2Q5NC4uOGNiYTRkZjU5MzExNmMzZjIzZDJiNGJkYTRjZDNiM2RmNzky
Nzk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKQEAgLTI2LDggKzI2LDggQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29va2llc1N0cmF0ZWd5LmgKaW5kZXggYjQzOTc4Njg3ODEwOTVkMGMwOWE5OTZkMjQwNGEy
ZjRlOWQ5OTlkYi4uOWIwZDVhNjhkOTJjOGU1NWFkOWQwZjlhYjMzOGY5NTE3NjI5ZDc3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKQEAgLTMzLDcgKzMzLDYg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwot
Y2xhc3MgVVJMOwogCiBzdHJ1Y3QgQ29va2llOwogc3RydWN0IFNhbWVTaXRlSW5mbzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDFhNGE0NWY4MDVjYzUwNmFiOWYxOTFmODA2MTU3
ODcwNGZmNDkyMDYuLmU5MzA5NWZjN2IyYTBiMTM2ZDQ2NjE2ZDAyMjBjY2ViYTM5OWEwMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNTYsOCArNTYsNiBAQCB0eXBlZGVmIHZv
aWQqIERyYWdEYXRhUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQog
ZW51bSBEcmFnQXBwbGljYXRpb25GbGFncyB7CiAgICAgRHJhZ0FwcGxpY2F0aW9uTm9uZSA9IDAs
CiAgICAgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJ
bWFnZS5oCmluZGV4IGJlNWI0YzljMmE0NzA0YTFkYjkxMTJjNGNlOTRlYWM0M2YxNWQ2ZjkuLmYz
MmE2ODQ1YTY4NWM1YTBjMjFkYWY5MmMxZmMwZmVmNGE1MDAyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdJbWFnZS5oCkBAIC01Nyw3ICs1Nyw2IEBAIGNsYXNzIEltYWdlOwogY2xhc3MgSW50
UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKLWNsYXNzIFVSTDsKIAogI2lmIFBMQVRG
T1JNKElPUykKIHR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IERyYWdJbWFnZVJlZjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAppbmRleCA5NjdkZWRjN2JhNmVjZjQyOTJkZjE5
Y2ZjMTg4NTFkMTY2YjNhYTVmLi5iMmFhMjg0NDc5ZjdiMTIyNmViZjdhYWE5YjdmZGNhYzMwYzMz
NzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCkBAIC0zNSw4ICszNSw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiAvLyBBbGwgbWV0aG9kcyBh
cmUgc3luY2hyb25vdXMuCiBjbGFzcyBGaWxlU3RyZWFtIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MaW5rSWNvbi5oCmluZGV4IDI4MTc1NDYwMzU5YWRmZjdhMGNmMmZlMWViN2ZmNDEzNGM1
NzdlNTkuLjg5ZTJmODk2OWJiNTI2YTM2NGRiNmI5MGUzMGE5Yjc3MWNkZTU4NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGlua0ljb24uaApAQCAtMjYsOSArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJMaW5rSWNvblR5cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCA3MzdhMzkwNDI1
N2RlNjQzYmMwZDlhYjk5YmMyNjRhMzE0ZmQ2ZmY3Li41NTVlYzI4MmU0YmI2NmU1ZjlkMTExMjBi
OTc2MWE3MjVlYmMzZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJM
UGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgUGFzdGVib2FyZDo6aXNTYWZlVHlwZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogYm9vbCBQYXN0ZWJvYXJkOjpj
YW5FeHBvc2VVUkxUb0RPTVdoZW5QYXN0ZWJvYXJkQ29udGFpbnNGaWxlcyhjb25zdCBTdHJpbmcm
IHVybFN0cmluZykKIHsKLSAgICBhdXRvIHVybCA9IFVSTFBhcnNlciB7IHVybFN0cmluZyB9LnJl
c3VsdCgpOworICAgIFVSTCB1cmwoeyB9LCB1cmxTdHJpbmcpOwogICAgIHJldHVybiB1cmwucHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzQmxvYigpIHx8IHVybC5wcm90
b2NvbElzRGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
MjA2MzVhYjAyOTRmMjk5N2UyOGZiZmZkNTA5ODY5NDhhOTliNjAzMC4uYTJiYTJiNzYwMGRkNGVi
YTI2OGY2MjljZGQxOTE0MTM4ODFiZDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNs
dWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggOTlkOGRkZmZhZTAwZWFjZTFh
NjMyY2IwZDNmNTM4MWEyM2ZhMzY1Yy4uYTViMzY1MGEwYmJjMGFmODhmOWFmNzQ0NDA4ZGVhZTk5
NjBkYTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBj
bGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogc3Ry
dWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3Qg
UGFzdGVib2FyZFVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRXcml0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmNwcAppbmRleCAzZDJkY2VlZDdjNTZlODcwOTY3ODk4MDdhNjdiZWUyZWQwMzI5
MjdmLi5lMjU2OTA3NGVlNWEyYjNlZjZjMjBlOGJlNDhkZmU3NTdhODA2OWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIHZvaWQgUGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFBsYWluVGV4dChQbGFpblRl
eHQgcGxhaW5UZXh0KQogICAgIG1fcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpOwogfQog
Ci12b2lkIFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpzZXRVUkwoVVJMIHVybCkKK3ZvaWQgUGFzdGVi
b2FyZFdyaXRlckRhdGE6OnNldFVSTERhdGEoVVJMRGF0YSB1cmwpCiB7CiAgICAgQVNTRVJUKCFt
X3VybCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0
YS5oCmluZGV4IGQ1M2ZkNzJmZjVlNmM0NGUwYTE2ZTc3ZjM5MWRhZmNkODQ2NTAyMGEuLjVmNDc1
OTJiMTAxOTUxMTkxMTc5NzY4OGU3ODU1MGY0OGJiZWQ1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMjUsOCArMjUsOCBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjYsOCArNjYsOCBAQCBjbGFzcyBQYXN0ZWJvYXJk
V3JpdGVyRGF0YSBmaW5hbCB7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+JiBw
bGFpblRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYWluVGV4dDsgfQogICAgIHZvaWQgc2V0UGxh
aW5UZXh0KFBsYWluVGV4dCk7CiAKLSAgICBzdHJ1Y3QgVVJMIHsKLSAgICAgICAgV2ViQ29yZTo6
VVJMIHVybDsKKyAgICBzdHJ1Y3QgVVJMRGF0YSB7CisgICAgICAgIFVSTCB1cmw7CiAgICAgICAg
IFN0cmluZyB0aXRsZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFN0cmluZyB1c2VyVmlz
aWJsZUZvcm07CkBAIC03NiwxNSArNzYsMTUgQEAgY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEg
ZmluYWwgewogI2VuZGlmCiAgICAgfTsKIAotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMPiYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICB2b2lkIHNldFVSTChVUkwpOworICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMRGF0YT4mIHVybERhdGEoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQorICAgIHZvaWQgc2V0VVJMRGF0YShVUkxEYXRhKTsKIAogICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29udGVudD4mIHdlYkNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3dlYkNv
bnRlbnQ7IH0KICAgICB2b2lkIHNldFdlYkNvbnRlbnQoV2ViQ29udGVudCk7CiAKIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+IG1fcGxhaW5UZXh0OwotICAgIHN0ZDo6b3B0
aW9uYWw8VVJMPiBtX3VybDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTERhdGE+IG1fdXJsOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29udGVudD4gbV93ZWJDb250ZW50OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA4ZTEzYmY0ZDg0MTQx
M2JmMWMxMTdkZWM5ZWZmODVjNDgyNGI4OGVmLi5lMGEyMTMzMzc0NmNkZjk0ZGQ3MGU5NWUzZjYy
ZWQwZDc4MjAwMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaApAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xv
cjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7
CiBzdHJ1Y3QgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwog
c3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCBkYmVjZmMxYjNiMTZkN2Y1ZTAzMDhlMTEw
YWNkYTExMDJjYjQyMDdlLi5hOTU4YzJmMGFiMmQ5ZjFmMzc2NjJhN2EwYjYwMmJlMzEzNDMwN2I1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewog
ICAgIFVSTCBibG9iVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU1NM
S2V5R2VuZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3Iu
aAppbmRleCAwNzY3MjM4NmY2OGVhYTk4MWZlN2M1OTdjMDVmNjFlZjhlNjczY2U0Li5jMmJkOGQ2
ZTlkM2FhOTNlMjQ2MDI0ODYyYzFmM2IyMmY0NWE0ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaApAQCAtMzEsOCArMzEsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFVSTDsKLQogLy8gUmV0dXJucyBzdHJpbmdzIHJlcHJlc2VudGluZyBr
ZXkgc2l6ZXMgdGhhdCBtYXkgYmUgdXNlZAogLy8gZm9yIHRoZSA8a2V5Z2VuPiB0YWcuIFRoZSBm
aXJzdCBzdHJpbmcgaXMgZGlzcGxheWVkIGFzIHRoZSBkZWZhdWx0CiAvLyBrZXkgc2l6ZSBpbiB0
aGUgPGtleWdlbj4gbWVudS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
aGVtZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5
LmNwcAppbmRleCA5NDlkZTYzYWVmMDZjZmNmYWYwYzAyZDI0YzZhYzQ0ZTY2ZmUwYjk3Li43N2Y2
YzM5MmE5MTdmMGM5MTcyNjY1YTc2MThlNjcwNDM4YzRlNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogCi0jaW5jbHVkZSAiVVJM
UGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgpAQCAtNTUxLDcgKzU1MSw3IEBA
IGJvb2wgU2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcm
IHNjaGVtZSkKIAogYm9vbCBTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQogewotICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIChhbGxCdWls
dGluU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkgfHwgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hl
bWUoc2NoZW1lKSk7CisgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgKGFsbEJ1aWx0aW5T
Y2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKSB8fCBXVEY6OlVSTFBhcnNlcjo6aXNTcGVjaWFsU2No
ZW1lKHNjaGVtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGUyYWFlMmYzMDQ1NzM1NWY0ODllZWM0YWI0ZWNm
MWNlN2QzZTQ1MmYuLmY4NjhjMmMwMWQ2YjEwZWNmMzY0YjFhNmZmZTNkZDQyZjVmNTIyODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC00MCw3ICs0MCw3IEBACiAj
ZW5kaWYKIAogI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCisjaW5j
bHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNlbmRpZgogCiAjaWYgVVNFKEdMSUIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCmluZGV4IDBj
YzVmNjg3ZDYyMWVmZTdlYWJhYzRkYmY5ZTU0NTQ3YTQ4ZGNlMTguLmFmYjc1N2NiZTQwMjJmZWRm
YzQ3OTNlYWJjMjU2OWU4NjBlOTU5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZFN0cmluZ0hhc2guY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU2hhcmVkU3RyaW5nSGFzaC5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdI
YXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmgKaW5kZXgg
NzMyNDYxN2JhNDk2YTA2NjNiZmQ1M2RlYzRhNDQzZDk3NjkzOWU4ZS4uMzYwM2NmMGYyZTdmOTIx
NGIzZTI1M2Y1NDc5ZDljYjM0NmIyN2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZFN0cmluZ0hhc2guaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFVSTDsKLQogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogCiAv
LyBVc2UgdGhlIGxvdyAzMi1iaXRzIG9mIHRoZSA2NC1iaXQgU2hhcmVkU3RyaW5nSGFzaCBhcyB0
aGUga2V5IGZvciBIYXNoU2V0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4
dAppbmRleCBjMDJlNDllNGU1MWVmNzQ5MzFmNzBkZDg2NTVkMzRkZTJkNjNlNDhiLi4yZTg1NmE5
ODAwYzMzN2E0MDUzMTY1MmM3MDRmM2UyZmI2ZmQzMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU291cmNlc1NvdXAudHh0CkBAIC00MSw0ICs0MSwzIEBAIHBsYXRmb3JtL25ldHdvcmsvc291
cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwCiAKIHBsYXRmb3JtL3NvdXAvUHVibGljU3Vm
Zml4U291cC5jcHAKIHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKLXBsYXRmb3Jt
L3NvdXAvVVJMU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiZGI0Njg2OTU4ZjMwMDA5MzMzNDQzMTg5NDc3YTlkNDVmNGY1ZDg4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTA5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxMS0yMDEzLCAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlVSTC5oIgotCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8c3Rk
aW8uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VVUlE
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJl
cnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgotCi0vLyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVz
ZSBvZiB0aGUgKyBvcGVyYXRvciBvbiBTdHJpbmcuCi0vLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRp
bWl6ZSB0aGF0IG9wZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQotLy8gc28gbWFueSBhbGxv
Y2F0aW9ucywgb3IgY2hhbmdlIHRoaXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgotCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLXR5cGVkZWYgVmVj
dG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVD
aGFyQnVmZmVyOwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAw
eEZGRkY7Ci0KLS8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1p
bmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKLS8vIEFTQ0lJLiBUaGUgZGVzdGluYXRp
b24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93
ZWQKLS8vIGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51
bGwtdGVybWluYXRlIHRoZSByZXN1bHQuCi1zdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGNoYXIqIGRlc3QpCi17Ci0gICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG1lbWNw
eShkZXN0LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNl
IHsKLSAgICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAg
ICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNf
Y2FzdDxjaGFyPihzcmNbaV0pOwotICAgIH0KLX0KLQotdm9pZCBVUkw6OmludmFsaWRhdGUoKQot
ewotICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9
IGZhbHNlOwotICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOwotICAgIG1fc2NoZW1lRW5k
ID0gMDsKLSAgICBtX3VzZXJTdGFydCA9IDA7Ci0gICAgbV91c2VyRW5kID0gMDsKLSAgICBtX3Bh
c3N3b3JkRW5kID0gMDsKLSAgICBtX2hvc3RFbmQgPSAwOwotICAgIG1fcG9ydExlbmd0aCA9IDA7
Ci0gICAgbV9wYXRoRW5kID0gMDsKLSAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7Ci0gICAg
bV9xdWVyeUVuZCA9IDA7Ci19Ci0KLVVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3Ry
aW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKLXsKLSAgICBV
UkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7Ci0gICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFy
IGMpCi17Ci0gICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFj
ZSBhbmQgY29udHJvbAotICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMg
aXMgYW4gKnVuc2lnbmVkKiBjaGFyIGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hv
dWxkIG9ubHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBjIDw9ICcgJzsK
LX0KLQotVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICBVUkwgcmVzdWx0ID0g
KnRoaXM7Ci0gICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29w
eSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9u
ZW50KCkgY29uc3QKLXsKLSAgICBpZiAoIWhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKLSAgICBpZiAobV9zdHJp
bmdbZW5kXSA9PSAnLycpCi0gICAgICAgIC0tZW5kOwotCi0gICAgc2l6ZV90IHN0YXJ0ID0gbV9z
dHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgKytzdGFydDsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3Rh
cnQsIGVuZCAtIHN0YXJ0ICsgMSk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3Nj
aGVtZUVuZCk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKLXsKLSAgICB1bnNp
Z25lZCBzdGFydCA9IGhvc3RTdGFydCgpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKLX0KLQotc3RkOjpvcHRpb25h
bDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcG9ydExlbmd0aCkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAg
ICB1bnNpZ25lZCBudW1iZXI7Ci0gICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBu
dW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBt
X2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwotICAgIGVsc2UKLSAgICAgICAg
bnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSAr
IG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBu
dW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQotU3RyaW5nIFVSTDo6
aG9zdEFuZFBvcnQoKSBjb25zdAotewotICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkp
Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocG9ydC52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOwotfQot
Ci1TdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKLXsKLSAgICBTdHJpbmcg
cmVzdWx0ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7
Ci0KLSAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgewotICAgICAgICBj
b25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7Ci0gICAgICAgIHJlc3VsdC5yZW1v
dmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJh
aWxpbmdBdFNpZ24pOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBT
dHJpbmcgZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0
KQotewotICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAoIWlu
cHV0TGVuZ3RoKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBWZWN0b3I8TENo
YXI+IHBlcmNlbnREZWNvZGVkOwotICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoaW5wdXRMZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExl
bmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKLSAgICAgICAgICAgICYm
IGlucHV0TGVuZ3RoID4gMgotICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgotICAg
ICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKLSAgICAgICAgICAgICYm
IGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7Ci0gICAgICAgICAgICBwZXJjZW50RGVj
b2RlZC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRb
aSArIDJdKSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKLSAgICB9Ci0gICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVj
b2RlZC5zaXplKCkpOwotfQotCi1TdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Ci19Ci0K
LVN0cmluZyBVUkw6OnBhc3MoKSBjb25zdAotewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1f
dXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZUVz
Y2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Ci19Ci0KLVN0
cmluZyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Ci19Ci0KLVN0cmlu
ZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKLXsKLSAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBt
X3VzZXJFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmlu
Zy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEp
OwotfQotCi1TdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAotewotICAgIGlm
ICghaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQot
ICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwotfQotCi1ib29s
IFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1Zh
bGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Ci19Ci0KLVN0cmluZyBVUkw6
OmJhc2VBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRo
QWZ0ZXJMYXN0U2xhc2gpOwotfQotCi0jaWYgIVVTRShDRikKLQotU3RyaW5nIFVSTDo6ZmlsZVN5
c3RlbVBhdGgoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgp
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2Vx
dWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOwotfQotCi0jZW5kaWYKLQot
I2lmZGVmIE5ERUJVRwotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2Qo
U3RyaW5nVmlldykKLXsKLX0KLQotI2Vsc2UKLQotc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJ
c0dvb2QoU3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkg
ZG9uJ3QgbmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgotICAgIC8vIFRoZSBpc0FTQ0lJQWxw
aGFDYXNlbGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVy
cwotICAgIC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3Qg
YW5kIHJlbGllZCBvbiB0aGVzZSBjaGVja3MuCi0gICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHBy
b3RvY29sLmNvZGVVbml0cygpKSB7Ci0gICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3Rlcikp
OwotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsKLSAgICAgICAgQVNTRVJUKCFpc0FT
Q0lJVXBwZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNr
ZWQoY2hhcmFjdGVyKSA9PSBjaGFyYWN0ZXIpOwotICAgIH0KLX0KLQotI2VuZGlmCi0KLXN0YXRp
YyBMb2NrIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKLQotdXNpbmcg
RGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWlu
dDE2X3Q+Owotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQotewotICAgIHN0YXRpYyBEZWZhdWx0
UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsK
LSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKLX0KLQotc3RhdGljIERlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZygpCi17Ci0gICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKTsKLSAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCi0g
ICAgICAgIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3Rpbmc7Ci0gICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
OwotfQotCi12b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWlu
dDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKLXsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAg
ZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2ws
IHBvcnQpOwotfQotCi12b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcoKQotewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmdMb2NrKTsKLSAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcoKSkKLSAgICAgICAgbWFwLT5jbGVhcigpOwotfQotCi1zdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJv
dG9jb2wpCi17Ci0gICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcoKSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgICAgIEFTU0VSVChv
dmVycmlkZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92
ZXJyaWRlTWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KLSAgICAg
ICAgYXV0byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5k
KCkpCi0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotICAgIH0KLSAgICByZXR1
cm4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKLX0KLQotYm9v
bCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90
b2NvbCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0g
cG9ydDsKLX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNv
bnN0Ci17Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7Ci0KLSAgICAv
LyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVu
IGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCi0gICAgLy8gVGhlIGZyZWUgZnVuY3Rp
b24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKLSAgICBB
U1NFUlQoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wp
LCAiamF2YXNjcmlwdCIpKTsKLQotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBz
dHJpbmcgb2JqZWN0LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsg
KytpKSB7Ci0gICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3Vs
ZCBoYXZlIGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KLX0KLQotYm9v
bCBVUkw6OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKLXsKLSAgICBhc3Nl
cnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5s
ZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG8gdGhlIGNvbXBhcmlz
b24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgewotICAgICAgICBpZiAoIWlzQVNDSUlBbHBo
YUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBVUkw6OnF1
ZXJ5KCkgY29uc3QKLXsKLSAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRo
RW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAotfQotCi1TdHJpbmcgVVJM
OjpwYXRoKCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9w
b3J0TGVuZ3RoOwotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRo
RW5kIC0gcG9ydEVuZCk7Ci19Ci0KLWJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcm
IHMpCi17Ci0gICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhl
IGZpcnN0ICc6Jy4KLSAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsK
LSAgICBTdHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlv
bik7Ci0gICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6
ZVNjaGVtZShuZXdQcm90b2NvbCk7Ci0gICAgaWYgKCFjYW5vbmljYWxpemVkKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBVUkxQYXJzZXIg
cGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKLSAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJp
bmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1Zp
ZXcgc3RyaW5nKQotewotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgo
KSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2
KCksIHN0cmluZy5sZW5ndGgoKSk7Ci19Ci0gICAgCi0vLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQg
aG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KLS8v
IHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRl
ZC4KLS8vIFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KLXN0
YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJp
bmdWaWV3IHN0cmluZykKLXsKLSAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQg
YW4gSUROLWVuY29kZWQgbmFtZS4KLSAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0
aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkg
T0suCi0gICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OwotICAg
IAotICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0Fs
bEFTQ0lJKHN0cmluZykpIHsKLSAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hv
c3RuYW1lQnVmZmVyTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9S
OwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTEla
RVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVND
SUkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCi0gICAg
ICAgIHN0cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0
bmFtZUJ1ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVy
cm9yKTsKLSAgICAKLSAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFp
bHMuZXJyb3JzKSB7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNo
YXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi11bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBt
X3Bhc3N3b3JkRW5kICsgMTsKLX0KLQotdm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBz
KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGNv
bG9uSW5kZXggPSBzLmZpbmQoJzonKTsKLSAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOwotICAg
IGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAKLSAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0
U3RhcnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVk
SG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwotCi0gICAgVVJMUGFyc2VyIHBh
cnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwot
fQotCi12b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCi17Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0g
ICAgICAgIHJldHVybjsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmll
dyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJp
bmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3Vs
dCgpOwotfQotCi12b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQotewotICAgIGlm
ICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIGNvbG9uTmVlZGVkID0g
IW1fcG9ydExlbmd0aDsKLSAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBt
X2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0
cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/
ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVz
dWx0KCk7Ci19Ci0KLXZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RB
bmRQb3J0KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBT
dHJpbmdWaWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKLSAgICBTdHJpbmdWaWV3IHBvcnQ7Ci0g
ICAgCi0gICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOwotICAgIGlmIChj
b2xvbkluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJp
bmcoY29sb25JbmRleCArIDEpOwotICAgICAgICBib29sIG9rOwotICAgICAgICBpbnQgcG9ydElu
dCA9IHBvcnQudG9JbnRTdHJpY3Qob2spOwotICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAw
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0
cmluZygwLCBjb2xvbkluZGV4KTsKLSAgICB9Ci0KLSAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7Ci0g
ICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0
YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwotCi0gICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9z
dFN0YXJ0KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2Rl
ZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAgIGlmICghcG9y
dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKHBvcnQpOwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7Ci0K
LSAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3Rl
cnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCi17Ci0g
ICAgYXV0byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgewot
ICAgICAgICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7Ci0gICAgICAgIGF1dG8qIGRhdGEg
PSB1dGY4LmRhdGEoKTsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBh
dXRvIGxlbmd0aCA9IHV0ZjgubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7
IGogPCBsZW5ndGg7IGorKykgewotICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKLSAgICAg
ICAgICAgIGlmIChzaG91bGRFbmNvZGUoYykpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnJScpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9B
U0NJSUhleERpZ2l0KGMpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5p
YmJsZVRvQVNDSUlIZXhEaWdpdChjKSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChjKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOwotICAgIH07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0
Lmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1
dFtpXSkpKQotICAgICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7Ci0gICAgfQotICAgIHJl
dHVybiBpbnB1dDsKLX0KLQotdm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQot
ewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTog
Tm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNo
IHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3Jl
IHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KLQotICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVu
ZDsKLSAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyB1ID0gcGVyY2Vu
dEVuY29kZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQp
OwotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2No
ZW1lRW5kICsgMSkpCi0gICAgICAgICAgICB1ID0gIi8vIiArIHU7Ci0gICAgICAgIC8vIEFkZCAn
QCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAgICAgICAgaWYgKGVuZCA9PSBtX2hv
c3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkK
LSAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5n
VmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cg
aGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyRW5kID09
IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdA
JykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBh
cnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0
byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7Ci0gICAg
ICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZyku
bGVmdChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7
Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotdm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKLXsKLSAgICBp
ZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9w
YXNzd29yZEVuZDsKLSAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJp
bmcgcCA9ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6
OmlzSW5Vc2VySW5mb0VuY29kZVNldCkgKyAiQCI7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICBwID0g
Ii8vIiArIHA7Ci0gICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBn
b2luZyB0byBhZGQgb3VyIG93bi4KLSAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9z
dHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgVVJMUGFy
c2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5k
KSwgcCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdA
JyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAo
bV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdb
ZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBu
b3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQp
IHsKLSAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhl
bmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotdm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlk
ZW50aWZpZXIpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5
IGhhcHBlbnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPwotICAgIC8vIEZJWE1FOiBJ
cyBpdCBjb3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9u
LUFTQ0lJIGNoYXJhY3RlcnM/Ci0gICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVu
dGlmaWVyKSB9LnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBBU1NFUlQoIW1fcXVlcnlF
bmQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJp
bmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kKQotICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxl
ZnQobV9xdWVyeUVuZCk7Ci19Ci0KLXZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRl
bnRpZmllcigpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQpOwotICAgIG1fcXVlcnlFbmQgPSBt
X3BhdGhFbmQ7Ci19Ci0KLXZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQot
ewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTog
JyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQu
Ci0gICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5j
b2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBhY2Nlc3MgdG8gdGhl
IGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTYxMTc2Ci0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAh
cXVlcnkuaXNOdWxsKCkpIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFy
c2VyLnJlc3VsdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMg
PSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfQotCi19Ci0KLXZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0
IFN0cmluZyYgcykKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgU3RyaW5nIHBhdGggPSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9
ICcvJykKLSAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0KLSAgICBhdXRvIHF1ZXN0aW9uTWFy
a09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNo
YXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKLSAgICB9OwotICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCAr
IG1fcG9ydExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFy
a09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQp
KSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLWJvb2wgZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBp
ZiAoYS5tX3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHVuc2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtp
XSAhPSBiLnN0cmluZygpW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVS
TCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhF
bmQoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7Ci0gICAg
ICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIHByb3RvY29sSG9z
dEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBpZiAo
YS5tX3NjaGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBo
b3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0
U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9o
b3N0RW5kIC0gYi5ob3N0U3RhcnQoKTsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0
aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAg
IGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gQW5kIHRoZSBob3N0Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9z
dFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgaG9zdHNB
cmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICB1bnNpZ25lZCBob3N0
U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9o
b3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3Rh
cnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0
QjsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7
Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hv
c3RTdGFydEIgKyBpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5n
JiBkb21haW4pIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBpZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOwotICAgIGlmICghaG9zdC5lbmRzV2l0
aChkb21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaG9zdC5sZW5n
dGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxl
bmd0aCgpIC0gMV0gPT0gJy4nOwotfQotCi1TdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVl
bmNlcyhjb25zdCBTdHJpbmcmIGlucHV0KQotewotICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hh
cmFjdGVycyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwotfQotCi1i
b29sIFVSTDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAotewotICAgIGlmICghbV9pc1ZhbGlkKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9
PSAnOicpOwotICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKLX0K
LQotdm9pZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25z
dAotewotICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFs
bCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQotICAgIC8vIFRoYXQncyBmaW5lIGZvciBh
IHZhbGlkIFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMu
Ci0gICAgYnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgY29weUFTQ0lJKG1f
c3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xh
c3M+Ci1ib29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25z
dCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1h
a2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmlu
Z1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHBy
b3RvY29sKSkpOwotICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwLCBqID0gMDsgdXJsW2ldOyArK2kpIHsKLSAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdo
aXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICAgICAgaWYgKGlzTGVhZGluZyAm
JiBzaG91bGRUcmltRnJvbVVSTCh1cmxbaV0pKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlzTGVhZGluZyA9IGZhbHNlOwotCi0gICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5l
d2xpbmVzLgotICAgICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwg
dXJsW2ldID09ICdcbicpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIXBy
b3RvY29sW2pdKQotICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7Ci0gICAgICAgIGlm
ICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICArK2o7Ci0gICAgfQotICAgIAotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwg
cHJvdG9jb2wpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIHJldHVybiBXZWJDb3JlOjpw
cm90b2NvbElzSW50ZXJuYWwoc3RyaW5nLCBwcm90b2NvbCk7Ci19Ci0KLSNpZm5kZWYgTkRFQlVH
Ci0KLXZvaWQgVVJMOjpwcmludCgpIGNvbnN0Ci17Ci0gICAgcHJpbnRmKCIlc1xuIiwgbV9zdHJp
bmcudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLSNlbmRpZgotCi1TdHJpbmcgVVJMOjpzdHJpcHBlZEZv
clVzZUFzUmVmZXJyZXIoKSBjb25zdAotewotICAgIFVSTCByZWZlcnJlcigqdGhpcyk7Ci0gICAg
cmVmZXJyZXIuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmco
KSk7Ci0gICAgcmVmZXJyZXIucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJu
IHJlZmVycmVyLnN0cmluZygpOwotfQotCi1ib29sIFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdAot
ewotICAgIC8vIEluY2x1ZGluZyBmZWVkIGhlcmUgbWlnaHQgYmUgYSBiYWQgaWRlYSBzaW5jZSBk
cmFnIGFuZCBkcm9wIHVzZXMgdGhpcyBjaGVjawotICAgIC8vIGFuZCBpbmNsdWRpbmcgZmVlZCB3
b3VsZCBhbGxvdyBmZWVkcyB0byBwb3RlbnRpYWxseSBsZXQgc29tZW9uZSdzIGJsb2cKLSAgICAv
LyByZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJkIG9uIGEgZHJhZywgZXZlbiB3aXRo
b3V0IGEgZHJvcC4KLSAgICAvLyBMaWtld2lzZSB3aXRoIHVzaW5nIHRoZSBGcmFtZUxvYWRlcjo6
c2hvdWxkVHJlYXRVUkxBc0xvY2FsKCkgZnVuY3Rpb24uCi0gICAgcmV0dXJuIHByb3RvY29sSXMo
ImZpbGUiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVy
bCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsK
LX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCkKLXsKLSAgICBy
ZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotYm9vbCBw
cm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIGF1dG8gbGVu
Z3RoID0gdXJsLmxlbmd0aCgpOwotICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFr
aW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCi0gICAgcmV0dXJuIGxlbmd0aCA+PSA1Ci0gICAgICAg
ICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzBdLCAnaCcpCi0gICAgICAgICYmIGlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzFdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlB
bHBoYUNhc2VsZXNzRXF1YWwodXJsWzJdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwodXJsWzNdLCAncCcpCi0gICAgICAgICYmICh1cmxbNF0gPT0gJzonIHx8IChp
c0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFs0XSwgJ3MnKSAmJiBsZW5ndGggPj0gNiAmJiB1
cmxbNV0gPT0gJzonKSk7Ci19Ci0KLWNvbnN0IFVSTCYgYmxhbmtVUkwoKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJvdXQ6Ymxhbmsi
KTsKLSAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7Ci19Ci0KLWJvb2wgVVJMOjppc0JsYW5rVVJM
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJcygiYWJvdXQiKTsKLX0KLQotYm9vbCBw
b3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBwb3J0ID0gdXJsLnBvcnQoKTsKLQotICAgIC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZl
IGEgcG9ydCwgcmV0dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBvcnQiIGNhc2UuCi0gICAgaWYgKCFw
b3J0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxp
c3QgbWF0Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KLSAg
ICAvLyBTZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5p
bmcuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qg
YmxvY2tlZFBvcnRMaXN0W10gPSB7Ci0gICAgICAgIDEsICAgIC8vIHRjcG11eAotICAgICAgICA3
LCAgICAvLyBlY2hvCi0gICAgICAgIDksICAgIC8vIGRpc2NhcmQKLSAgICAgICAgMTEsICAgLy8g
c3lzdGF0Ci0gICAgICAgIDEzLCAgIC8vIGRheXRpbWUKLSAgICAgICAgMTUsICAgLy8gbmV0c3Rh
dAotICAgICAgICAxNywgICAvLyBxb3RkCi0gICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KLSAgICAg
ICAgMjAsICAgLy8gRlRQLWRhdGEKLSAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKLSAgICAg
ICAgMjIsICAgLy8gU1NICi0gICAgICAgIDIzLCAgIC8vIHRlbG5ldAotICAgICAgICAyNSwgICAv
LyBTTVRQCi0gICAgICAgIDM3LCAgIC8vIHRpbWUKLSAgICAgICAgNDIsICAgLy8gbmFtZQotICAg
ICAgICA0MywgICAvLyBuaWNuYW1lCi0gICAgICAgIDUzLCAgIC8vIGRvbWFpbgotICAgICAgICA3
NywgICAvLyBwcml2LXJqcwotICAgICAgICA3OSwgICAvLyBmaW5nZXIKLSAgICAgICAgODcsICAg
Ly8gdHR5bGluawotICAgICAgICA5NSwgICAvLyBzdXBkdXAKLSAgICAgICAgMTAxLCAgLy8gaG9z
dHJpYW1lCi0gICAgICAgIDEwMiwgIC8vIGlzby10c2FwCi0gICAgICAgIDEwMywgIC8vIGdwcGl0
bnAKLSAgICAgICAgMTA0LCAgLy8gYWNyLW5lbWEKLSAgICAgICAgMTA5LCAgLy8gUE9QMgotICAg
ICAgICAxMTAsICAvLyBQT1AzCi0gICAgICAgIDExMSwgIC8vIHN1bnJwYwotICAgICAgICAxMTMs
ICAvLyBhdXRoCi0gICAgICAgIDExNSwgIC8vIFNGVFAKLSAgICAgICAgMTE3LCAgLy8gdXVjcC1w
YXRoCi0gICAgICAgIDExOSwgIC8vIG5udHAKLSAgICAgICAgMTIzLCAgLy8gTlRQCi0gICAgICAg
IDEzNSwgIC8vIGxvYy1zcnYgLyBlcG1hcAotICAgICAgICAxMzksICAvLyBuZXRiaW9zCi0gICAg
ICAgIDE0MywgIC8vIElNQVAyCi0gICAgICAgIDE3OSwgIC8vIEJHUAotICAgICAgICAzODksICAv
LyBMREFQCi0gICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCi0gICAgICAgIDUxMiwgIC8vIHByaW50
IC8gZXhlYwotICAgICAgICA1MTMsICAvLyBsb2dpbgotICAgICAgICA1MTQsICAvLyBzaGVsbAot
ICAgICAgICA1MTUsICAvLyBwcmludGVyCi0gICAgICAgIDUyNiwgIC8vIHRlbXBvCi0gICAgICAg
IDUzMCwgIC8vIGNvdXJpZXIKLSAgICAgICAgNTMxLCAgLy8gQ2hhdAotICAgICAgICA1MzIsICAv
LyBuZXRuZXdzCi0gICAgICAgIDU0MCwgIC8vIFVVQ1AKLSAgICAgICAgNTQ4LCAgLy8gYWZwb3Zl
cnRjcCBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDU1NiwgIC8vIHJlbW90ZWZzCi0gICAgICAg
IDU2MywgIC8vIE5OVFArU1NMCi0gICAgICAgIDU4NywgIC8vIEVTTVRQCi0gICAgICAgIDYwMSwg
IC8vIHN5c2xvZy1jb25uCi0gICAgICAgIDYzNiwgIC8vIExEQVArU1NMCi0gICAgICAgIDk5Mywg
IC8vIElNQVArU1NMCi0gICAgICAgIDk5NSwgIC8vIFBPUDMrU1NMCi0gICAgICAgIDIwNDksIC8v
IE5GUwotICAgICAgICAzNjU5LCAvLyBhcHBsZS1zYXNsIC8gUGFzc3dvcmRTZXJ2ZXIgW0FwcGxl
IGFkZGl0aW9uXQotICAgICAgICA0MDQ1LCAvLyBsb2NrZAotICAgICAgICA0MTkwLCAvLyBNYW5h
Z2VTaWV2ZSBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDYwMDAsIC8vIFgxMQotICAgICAgICA2
NjY1LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2NiwgLy8g
QWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjcsIC8vIFN0YW5kYXJk
IElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0Fw
cGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRp
dGlvbl0KLSAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9u
XQotICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgaW52
YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJz
Ci0gICAgfTsKLQotICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0
IGxpc3QsIGFsbG93IGl0LgotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJs
b2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKLSAgICBpZiAoIXN0
ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJs
b2NrZWRQb3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgLy8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2Vz
LgotICAgIGlmICgocG9ydC52YWx1ZSgpID09IDIxIHx8IHBvcnQudmFsdWUoKSA9PSAyMikgJiYg
dXJsLnByb3RvY29sSXMoImZ0cCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEFs
bG93IGFueSBwb3J0IG51bWJlciBpbiBhIGZpbGUgVVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIg
aXMgaWdub3JlZC4KLSAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGUiKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21E
YXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJu
YWwodXJsLCAiZGF0YSIpKTsKLQotICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2
aW9yIHdoZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVy
PwotICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9u
IGluIHRoYXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJlY3QuCi0gICAgYXV0byBpbmRleCA9
IHVybC5maW5kKCc7JywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBp
bmRleCA9IHVybC5maW5kKCcsJywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUg
aXQgc291bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcgdGV4dC9wbGFpbi4KLSAgICAg
ICAgLy8gQnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNv
bWUgdGltZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBhdCB0aGlzIHRpbWUuCi0gICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLSAgICBpZiAoaW5kZXggPT0gNSkKLSAg
ICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOwotICAgIEFTU0VSVChpbmRleCA+PSA1KTsKLSAg
ICByZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCk7Ci19Ci0KLVN0cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1
bnNpZ25lZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHN0cmluZygpOwotCi0gICAgcmV0dXJuIHN0cmluZygpLmxl
ZnQobGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0g
Mik7Ci19Ci0KLVVSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYg
cmVsYXRpdmVQYXJ0KQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6
Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsK
LX0KLQotVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7
Ci19Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYg
dXJsKQotewotICAgIHRzIDw8IHVybC5zdHJpbmcoKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLSNp
ZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoU09VUCkKLXN0YXRpYyBib29sIGlzSVB2NEFkZHJl
c3MoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYXV0byBjb3VudCA9IDA7Ci0KLSAgICBmb3Ig
KGNvbnN0IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicp
KSB7Ci0gICAgICAgIGlmIChjb3VudCA+PSA0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gb2N0ZXQubGVuZ3RoKCk7Ci0gICAgICAgIGlm
ICghbGVuZ3RoIHx8IGxlbmd0aCA+IDMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgYXV0byB2YWx1ZSA9IDA7Ci0gICAgICAgIGZvciAoYXV0byBpID0gMHU7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgY29uc3QgYXV0byBkaWdpdCA9IG9jdGV0W2ldOwotCi0g
ICAgICAgICAgICAvLyBQcm9oaWJpdCBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmIChk
aWdpdCA+ICc5JyB8fCBkaWdpdCA8ICghaSAmJiBsZW5ndGggPiAxID8gJzEnIDogJzAnKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHZhbHVlID0gMTAgKiB2
YWx1ZSArIChkaWdpdCAtICcwJyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodmFsdWUgPiAy
NTUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgY291bnQrKzsKLSAgICB9
Ci0KLSAgICByZXR1cm4gKGNvdW50ID09IDQpOwotfQotCi1zdGF0aWMgYm9vbCBpc0lQdjZBZGRy
ZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGVudW0gU2tpcFN0YXRlIHsgTm9uZSwgV2ls
bFNraXAsIFNraXBwaW5nLCBTa2lwcGVkLCBGaW5hbCB9OwotICAgIGF1dG8gc2tpcFN0YXRlID0g
Tm9uZTsKLSAgICBhdXRvIGNvdW50ID0gMDsKLQotICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQg
OiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnOicpKSB7Ci0gICAgICAgIGlmIChj
b3VudCA+PSA4IHx8IHNraXBTdGF0ZSA9PSBGaW5hbCkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IGhleHRldC5sZW5ndGgoKTsKLSAgICAg
ICAgaWYgKCFsZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIDo6IG1heSBiZSB1c2VkIGFueXdoZXJl
IHRvIHNraXAgMSB0byA4IGhleHRldHMsIGJ1dCBvbmx5IG9uY2UuCi0gICAgICAgICAgICBpZiAo
c2tpcFN0YXRlID09IFNraXBwZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IE5vbmUpCi0gICAgICAgICAgICAgICAgc2tpcFN0
YXRlID0gIWNvdW50ID8gV2lsbFNraXAgOiBTa2lwcGluZzsKLSAgICAgICAgICAgIGVsc2UgaWYg
KHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lw
cGluZzsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5h
bDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNraXBT
dGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBp
ZiAoc2tpcFN0YXRlID09IFNraXBwaW5nKQotICAgICAgICAgICAgc2tpcFN0YXRlID0gU2tpcHBl
ZDsKLQotICAgICAgICBpZiAobGVuZ3RoID4gNCkgewotICAgICAgICAgICAgLy8gQW4gSVB2NCBh
ZGRyZXNzIG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBmaW5hbCB0d28gaGV4dGV0cy4KLSAg
ICAgICAgICAgIGlmICgoc2tpcFN0YXRlID09IE5vbmUgJiYgY291bnQgIT0gNikgfHwgKHNraXBT
dGF0ZSA9PSBTa2lwcGVkICYmIGNvdW50ID49IDYpIHx8ICFpc0lQdjRBZGRyZXNzKGhleHRldCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBza2lwU3RhdGUg
PSBGaW5hbDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9y
IChjb25zdCBhdXRvIGNvZGVVbml0IDogaGV4dGV0LmNvZGVVbml0cygpKSB7Ci0gICAgICAgICAg
ICAvLyBJUHY2IGFsbG93cyBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmICghaXNBU0NJ
SUhleERpZ2l0KGNvZGVVbml0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb3VudCsrOwotICAgIH0KLQotICAgIHJldHVybiAoY291bnQgPT0g
OCAmJiBza2lwU3RhdGUgPT0gTm9uZSkgfHwgc2tpcFN0YXRlID09IFNraXBwZWQgfHwgc2tpcFN0
YXRlID09IEZpbmFsOwotfQotCi1ib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcg
aG9zdCkKLXsKLSAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0gbm90Rm91bmQpCi0gICAgICAgIHJl
dHVybiBpc0lQdjRBZGRyZXNzKGhvc3QpOwotCi0gICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9z
dCk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YwZTM4YTcxYjYxYjRmZGE4MTZiNzRk
NTMzOTM1ZGY0MzFiNjZkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAorKysgL2Rldi9udWxsCkBAIC0x
LDM5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBVU0UoQ0YpCi10
eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKLSNlbmRpZgotCi0jaWYgVVNF
KFNPVVApCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKLSNlbmRpZgotCi0jaWYgVVNFKEZP
VU5EQVRJT04pCi1PQkpDX0NMQVNTIE5TVVJMOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewot
Y2xhc3MgVGV4dFN0cmVhbTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkxU
ZXh0RW5jb2RpbmcgewotcHVibGljOgotICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29k
ZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgflVSTFRl
eHRFbmNvZGluZygpIHsgfTsKLX07Ci0KLXN0cnVjdCBVUkxIYXNoOwotCi1jbGFzcyBVUkwgewot
cHVibGljOgotICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3Ry
aW5nLgotICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9Ci0KLSAgICBleHBsaWNpdCBVUkwoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAgLy8g
UmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJv
dmlkZWQsIHRoZQotICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24t
QVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0
eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMK
LSAgICAvLyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFs
aWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJ
IHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMK
LSAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4K
LSAgICBXRUJDT1JFX0VYUE9SVCBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJl
bGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0
aChjb25zdCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIo
KSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBo
YXJtb25pemVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBl
bXB0eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8vIHN0YW5kYXJk
IFN0cmluZyBjb25zdHJ1Y3Rvci4KLQotICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVs
IG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIKLSAgICAvLyB0aHJlYWQu
IFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0
aGVyZSdzCi0gICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29w
eSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIGlz
b2xhdGVkQ29weSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4K
LSAgICAvLyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQu
Ci0gICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGlj
YWwoKTsgfQotCi0gICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGll
cmFyY2hpY2FsKCk7IH0KLSAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7Ci0KLSAgICBj
b25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0KLSAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2ln
bmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmll
dyBwcm90b2NvbCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaG9zdCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQo
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHBhc3MoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotCi0gICAgYm9vbCBo
YXNVc2VybmFtZSgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKLSAgICBi
b29sIGhhc1F1ZXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OwotICAg
IGJvb2wgaGFzUGF0aCgpIGNvbnN0OwotCi0gICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygp
LCB0aGVzZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAgLy8g
VGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVu
Y29kaW5nIGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgotICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBlbmNvZGVkVXNlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBl
bmNvZGVkUGFzcygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGJhc2VBc1N0
cmluZygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZpbGVTeXN0ZW1QYXRo
KCkgY29uc3Q7Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJv
dG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCi0gICAgLy8gdGVybWluYXRlZCBBU0NJSSBh
cmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KLSAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OwotICAgIGJvb2wgcHJvdG9j
b2xJcyhTdHJpbmdWaWV3KSBjb25zdDsKLSAgICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3Qg
eyByZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNMb2NhbEZp
bGUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQmxhbmtVUkwoKSBjb25zdDsK
LSAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJlQUJh
c2VVUkw7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihjb25z
dCBTdHJpbmcmKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0UHJvdG9jb2wo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwotCi0gICAg
dm9pZCByZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKLQot
ICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgotICAgIHZv
aWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHNldFVzZXIoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOwotCi0gICAgLy8g
SWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVz
dWx0aW5nIHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFBhdGgoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdp
dGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAotICAgIC8v
IGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2
ZSBhICI/IiBpbiB0aGUKLSAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNs
ZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOwotCi0gICAgdW5zaWduZWQg
cGF0aFN0YXJ0KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCgpIGNvbnN0OwotICAgIHVu
c2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0OwotCi0gICAgb3BlcmF0b3IgY29uc3Qg
U3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0KLSNpZiBVU0UoQ0YpCi0gICAg
V0VCQ09SRV9FWFBPUlQgVVJMKENGVVJMUmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShTT1VQ
KQotICAgIFVSTChTb3VwVVJJKik7Ci0gICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBjcmVhdGVTb3Vw
VVJJKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFdFQkNPUkVf
RVhQT1JUIFVSTChOU1VSTCopOwotICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TVVJMKigp
IGNvbnN0OwotI2VuZGlmCi0jaWZkZWYgX19PQkpDX18KLSAgICBvcGVyYXRvciBOU1N0cmluZyoo
KSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQotI2VuZGlmCi0KLSNpZm5kZWYgTkRFQlVHCi0g
ICAgdm9pZCBwcmludCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOwotICAgIHRlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVy
Jik7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNlcjsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKLSAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNv
bnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKLSAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8
Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdDsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25z
dDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
ZnJpZW5kIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGhvc3RzQXJlRXF1YWwoY29u
c3QgVVJMJiwgY29uc3QgVVJMJik7Ci0KLSAgICBTdHJpbmcgbV9zdHJpbmc7Ci0KLSAgICB1bnNp
Z25lZCBtX2lzVmFsaWQgOiAxOwotICAgIHVuc2lnbmVkIG1fcHJvdG9jb2xJc0luSFRUUEZhbWls
eSA6IDE7Ci0gICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDogMTsKLQotICAgIC8vIFRo
aXMgaXMgb3V0IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRzIGJldHRlci4gVGhlIHBvcnQgaXMg
YWZ0ZXIgdGhlIGhvc3QuCi0gICAgdW5zaWduZWQgbV9wb3J0TGVuZ3RoIDogMzsKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGggPSAoMSA8PCAzKSAtIDE7Ci0KLSAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVtZUxlbmd0aCA9ICgxIDw8IDI2KSAt
IDE7Ci0gICAgdW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsKLSAgICB1bnNpZ25lZCBtX3VzZXJT
dGFydDsKLSAgICB1bnNpZ25lZCBtX3VzZXJFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXNzd29yZEVu
ZDsKLSAgICB1bnNpZ25lZCBtX2hvc3RFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7Ci0gICAgdW5zaWduZWQgbV9wYXRoRW5kOwotICAgIHVuc2lnbmVkIG1fcXVlcnlFbmQ7
Ci19OwotCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVvZihTdHJpbmcpICsgOCAq
IHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwiKTsKLQotdGVtcGxhdGUg
PGNsYXNzIEVuY29kZXI+Ci12b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Ci17Ci0gICAgZW5jb2RlciA8PCBtX3N0cmluZzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+Ci1ib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYgdXJsKQotewotICAg
IGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsKLSAgICBpZiAoIW9wdGlv
bmFsVVJMKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdXJsID0gV1RGTW92ZSgqb3B0aW9u
YWxVUkwpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4K
LXN0ZDo6b3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAg
IFN0cmluZyBzdHJpbmc7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBVUkwoVVJMKCksIHN0cmluZyk7Ci19
Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmlu
Z1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci1XRUJDT1JFX0VYUE9S
VCBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwm
KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBV
UkwmKTsKLQotV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiBibGFua1VSTCgpOwotCi0vLyBGdW5j
dGlvbnMgdG8gZG8gVVJMIG9wZXJhdGlvbnMgb24gc3RyaW5ncy4KLS8vIFRoZXNlIGFyZSBvcGVy
YXRpb25zIHRoYXQgYXJlbid0IGZhc3RlciBvbiBhIHBhcnNlZCBVUkwuCi0vLyBUaGVzZSBhcmUg
YWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3Qg
cmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KLS8vIFRo
aXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMg
YXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFVSTC4KLQotV0VCQ09SRV9F
WFBPUlQgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90
b2NvbCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0
cmluZyYgdXJsKTsKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpOwot
V0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYg
dXJsKTsKLQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChT
dHJpbmdWaWV3IHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwotV0VCQ09SRV9F
WFBPUlQgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRo
YXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCi0KLVdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZf
dCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwotCi1ib29sIGlzVmFsaWRQ
cm90b2NvbChjb25zdCBTdHJpbmcmKTsKLQotU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29u
c3QgU3RyaW5nJiB1cmwpOwotCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8g
ZXhwb3NlLCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcg
cGVyIHRoZSBVUkwgU3RhbmRhcmQuCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZW5jb2RlV2l0aFVS
TEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKLQotLy8gSW5saW5lcy4KLQotaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1
cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygp
ID09IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25z
dCBVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5zdHJpbmcoKTsKLX0KLQotaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4g
YS5zdHJpbmcoKSAhPSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpICE9
IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBV
UkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKLX0KLQotLy8gSW5saW5lIHZl
cnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxp
bmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0
aGUgY2xhc3MgZGVmaW5pdGlvbi4KLQotaW5saW5lIGJvb2wgVVJMOjppc051bGwoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3N0cmluZy5pc051bGwoKTsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpp
c0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOwotfQotCi1p
bmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQ7
Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUGF0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cGF0aEVuZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19Ci0KLWlubGluZSBib29sIFVS
TDo6aGFzVXNlcm5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZXJFbmQgPiBtX3VzZXJT
dGFydDsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpoYXNQYXNzd29yZCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fcGFzc3dvcmRFbmQgPiAobV91c2VyRW5kICsgMSk7Ci19Ci0KLWlubGluZSBib29s
IFVSTDo6aGFzUXVlcnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3F1ZXJ5RW5kID4gbV9wYXRo
RW5kOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZDsKLX0KLQot
aW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwotfQotCi1pbmxpbmUgdW5zaWduZWQgVVJM
OjpwYXRoU3RhcnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2hvc3RFbmQgKyBtX3BvcnRMZW5n
dGg7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhFbmQoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3BhdGhFbmQ7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RT
bGFzaCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFzdFNsYXNoOwotfQotCi1X
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+OwotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxXZWJDb3JlOjpVUkw+OwotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkxIYXNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZDBhYjk2ZGEzNWQz
MWFjOGRiNGViNGRhYmQzZjRlMTU5MmI4MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMSGFzaC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVSTEhhc2hfaAotI2RlZmluZSBVUkxIYXNoX2gKLQot
I2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAg
c3RydWN0IFVSTEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwm
IGtleSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCkt
Pmhhc2goKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVS
TCYgYSwgY29uc3QgVVJMJiBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5n
SGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNl
OwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LS8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nCi10ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+IHsKLSAgICB1c2luZyBIYXNoID0gV2ViQ29y
ZTo6VVJMSGFzaDsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6
VVJMPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+IHsgfTsKLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkxQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2JhYzQ5ZDliNjVk
ZThiMTA0ZDVhNmY3NWIyNTgwYjhiODkyYzZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyOTI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLQotI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlIDxh
cnJheT4KLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5j
bHVkZSA8dW5pY29kZS91dHlwZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jZGVmaW5l
IFVSTF9QQVJTRVJfREVCVUdHSU5HIDAKLQotI2lmIFVSTF9QQVJTRVJfREVCVUdHSU5HCi0jZGVm
aW5lIFVSTF9QQVJTRVJfTE9HKC4uLikgTE9HKFVSTFBhcnNlciwgX19WQV9BUkdTX18pCi0jZWxz
ZQotI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pCi0jZW5kaWYKLSAgICAKLXRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1jbGFzcyBDb2RlUG9pbnRJdGVyYXRvciB7Ci1wdWJsaWM6
Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcigpIHsgfQotICAgIEFMV0FZU19J
TkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogYmVnaW4sIGNvbnN0
IENoYXJhY3RlclR5cGUqIGVuZCkKLSAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQotICAgICAgICAs
IG1fZW5kKGVuZCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgQ29kZVBv
aW50SXRlcmF0b3IoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIGJlZ2luLCBjb25zdCBDb2RlUG9p
bnRJdGVyYXRvciYgZW5kKQotICAgICAgICA6IENvZGVQb2ludEl0ZXJhdG9yKGJlZ2luLm1fYmVn
aW4sIGVuZC5tX2JlZ2luKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGVuZC5tX2JlZ2luID49IGJl
Z2luLm1fYmVnaW4pOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIgb3Bl
cmF0b3IqKCkgY29uc3Q7Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvciYgb3Bl
cmF0b3IrKygpOwotCi0gICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmVn
aW4gPT0gb3RoZXIubV9iZWdpbgotICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7
Ci0gICAgfQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAg
ICAKLSAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3ImIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9iZWdpbiA9IG90aGVy
Lm1fYmVnaW47Ci0gICAgICAgIG1fZW5kID0gb3RoZXIubV9lbmQ7Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgYXRFbmQoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fYmVnaW4gPD0gbV9lbmQpOwotICAgICAgICByZXR1cm4gbV9i
ZWdpbiA+PSBtX2VuZDsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29k
ZVVuaXRzU2luY2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogcmVmZXJlbmNlKSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fYmVnaW4gPj0gcmVmZXJlbmNlKTsKLSAgICAgICAgcmV0dXJuIG1f
YmVnaW4gLSByZWZlcmVuY2U7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29k
ZVVuaXRzU2luY2UoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGNvZGVVbml0c1NpbmNlKG90aGVyLm1fYmVnaW4pOwotICAgIH0KLSAg
ICAKLXByaXZhdGU6Ci0gICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogbV9iZWdpbiB7IG51bGxwdHIg
fTsKLSAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2VuZCB7IG51bGxwdHIgfTsKLX07Ci0KLXRl
bXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46
Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFhdEVuZCgpKTsKLSAgICByZXR1cm4g
Km1fYmVnaW47Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgYXV0byBDb2RlUG9pbnRJ
dGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKysoKSAtPiBDb2RlUG9pbnRJdGVyYXRvciYKLXsKLSAg
ICBtX2JlZ2luKys7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNf
SU5MSU5FIFVDaGFyMzIgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+OjpvcGVyYXRvciooKSBjb25z
dAotewotICAgIEFTU0VSVCghYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjOwotICAgIFUxNl9HRVQo
bV9iZWdpbiwgMCwgMCwgbV9lbmQgLSBtX2JlZ2luLCBjKTsKLSAgICByZXR1cm4gYzsKLX0KLQot
dGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPjo6
b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgotewotICAgIHVuc2lnbmVkIGkgPSAw
OwotICAgIHNpemVfdCBsZW5ndGggPSBtX2VuZCAtIG1fYmVnaW47Ci0gICAgVTE2X0ZXRF8xKG1f
YmVnaW4sIGksIGxlbmd0aCk7Ci0gICAgbV9iZWdpbiArPSBpOwotICAgIHJldHVybiAqdGhpczsK
LX0KLSAgICAKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgYXBwZW5kQ29kZVBvaW50KFZlY3Rv
cjxVQ2hhcj4mIGRlc3RpbmF0aW9uLCBVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBpZiAoVV9J
U19CTVAoY29kZVBvaW50KSkgewotICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoc3RhdGljX2Nh
c3Q8VUNoYXI+KGNvZGVQb2ludCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGRlc3Rp
bmF0aW9uLnJlc2VydmVDYXBhY2l0eShkZXN0aW5hdGlvbi5zaXplKCkgKyAyKTsKLSAgICBkZXN0
aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X0xFQUQoY29kZVBvaW50KSk7Ci0gICAgZGVzdGlu
YXRpb24udW5jaGVja2VkQXBwZW5kKFUxNl9UUkFJTChjb2RlUG9pbnQpKTsKLX0KLQotZW51bSBV
UkxDaGFyYWN0ZXJDbGFzcyB7Ci0gICAgVXNlckluZm8gPSAweDEsCi0gICAgRGVmYXVsdCA9IDB4
MiwKLSAgICBGb3JiaWRkZW5Ib3N0ID0gMHg0LAotICAgIFF1ZXJ5UGVyY2VudCA9IDB4OCwKLSAg
ICBTbGFzaFF1ZXN0aW9uT3JIYXNoID0gMHgxMCwKLSAgICBWYWxpZFNjaGVtZSA9IDB4MjAsCi19
OwotCi1zdGF0aWMgY29uc3QgdWludDhfdCBjaGFyYWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7Ci0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8g
MHgwCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEKLSAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MgotICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgzCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4NQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg2
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDcKLSAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4OAotICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4OQotICAgIFVzZXJJbmZv
IHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4QQotICAgIFVz
ZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhCCi0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweEQKLSAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4RQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCwgLy8gMHhGCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDEwCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDExCi0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEyCi0gICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEzCi0gICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE0Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweDE1Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDE2Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE3
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE4Ci0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE5Ci0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFBCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDFCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDFDCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAw
eDFECi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFFCi0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFGCi0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyAnCi0gICAgMCwg
Ly8gJyEnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAnIicKLSAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNo
IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyMnCi0gICAgMCwgLy8gJyQnCi0gICAgRm9yYmlkZGVuSG9z
dCwgLy8gJyUnCi0gICAgMCwgLy8gJyYnCi0gICAgMCwgLy8gJ1wnJwotICAgIDAsIC8vICcoJwot
ICAgIDAsIC8vICcpJwotICAgIDAsIC8vICcqJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnKycKLSAg
ICAwLCAvLyAnLCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJy0nCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICcuJwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3Qs
IC8vICcvJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzEn
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICcyJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMycKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJzQnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc1JwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnNicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzcnCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICc4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnOScKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhv
c3QsIC8vICc6JwotICAgIFVzZXJJbmZvLCAvLyAnOycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnPCcKLSAgICBVc2VySW5mbywgLy8g
Jz0nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9z
dCwgLy8gJz4nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8
IEZvcmJpZGRlbkhvc3QsIC8vICc/JwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8g
J0AnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdBJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnQicKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJ0MnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdEJwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnRScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0YnCi0gICAgVmFsaWRTY2hlbWUs
IC8vICdHJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0kn
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICdKJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSycKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ0wnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdNJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnTicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ08nCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICdQJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnUScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1InCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdTJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnVCcKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ1UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdWJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnVycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdZ
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnWicKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3Qs
IC8vICdbJwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhv
c3QsIC8vICdcXCcKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICddJwotICAgIFVz
ZXJJbmZvLCAvLyAnXicKLSAgICAwLCAvLyAnXycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8v
ICdgJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnYScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2InCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdjJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnZCcKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ2UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdmJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnZycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdp
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnaicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2snCi0gICAg
VmFsaWRTY2hlbWUsIC8vICdsJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnbScKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJ24nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdvJwotICAgIFZhbGlkU2NoZW1lLCAv
LyAncCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3EnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdyJwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAncycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3QnCi0gICAgVmFs
aWRTY2hlbWUsIC8vICd1JwotICAgIFZhbGlkU2NoZW1lLCAvLyAndicKLSAgICBWYWxpZFNjaGVt
ZSwgLy8gJ3cnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAn
eScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3onCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAn
eycKLSAgICBVc2VySW5mbywgLy8gJ3wnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAnfScK
LSAgICAwLCAvLyAnficKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4N0YKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4ODAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODEKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4ODIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODMKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4ODQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
ODYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODgK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEEKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OEIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEMKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OEQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEUKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OEYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTAKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTIKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTQKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTYKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUIK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUQKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUYKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTEKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTMKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTUKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTcKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTkKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUUK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjAKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QjEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjIKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjQKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QjUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjYKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjgKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkEKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkMKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QkYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzEK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzMKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QzQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzUKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QzYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzcKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QzgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzkKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4Q0EKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0IKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4Q0MKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0QKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4Q0UKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0YKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RDAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RDIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDQK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDYKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RDcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDgKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RDkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REEKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4REIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REMKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4REQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REUKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4REYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTAKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTIKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTcK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTkKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUIKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUQKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUYKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RjAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjEKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RjIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjMKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RjQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjUKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RjYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RjgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkEK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkMKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkUKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RkYKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRyb2woQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweDFGOyB9Ci10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzQzBDb250cm9sT3JT
cGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MjA7
IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGlj
IGJvb2wgaXNUYWJPck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNo
YXJhY3RlciA8PSAweEQgJiYgY2hhcmFjdGVyID49IDB4OSAmJiBjaGFyYWN0ZXIgIT0gMHhCICYm
IGNoYXJhY3RlciAhPSAweEM7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblNpbXBsZUVuY29kZVNldChDaGFyYWN0ZXJUeXBl
IGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3RSB8fCBpc0MwQ29udHJvbChjaGFy
YWN0ZXIpOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBib29sIGlzSW5EZWZhdWx0RW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVy
KSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFj
dGVyXSAmIERlZmF1bHQ7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZ
U19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5jb2RlU2V0KENoYXJhY3RlclR5cGUg
Y2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFi
bGVbY2hhcmFjdGVyXSAmIFVzZXJJbmZvOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzUGVyY2VudE9yTm9uQVNDSUkoQ2hhcmFj
dGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuICFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgY2hhcmFj
dGVyID09ICclJzsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goQ2hhcmFjdGVyVHlwZSBjaGFy
YWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXFwnICYmIGNoYXJhY3RlckNsYXNzVGFibGVb
Y2hhcmFjdGVyXSAmIFNsYXNoUXVlc3Rpb25Pckhhc2g7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNWYWxpZFNjaGVtZUNoYXJh
Y3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICd6JyAm
JiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBWYWxpZFNjaGVtZTsgfQotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0Zv
cmJpZGRlbkhvc3RDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNo
YXJhY3RlciA8PSAnXScgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgRm9yYmlk
ZGVuSG9zdDsgfQotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBzaG91bGRQZXJjZW50RW5jb2Rl
UXVlcnlCeXRlKHVpbnQ4X3QgYnl0ZSwgY29uc3QgYm9vbCYgdXJsSXNTcGVjaWFsKQotewotICAg
IGlmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2J5dGVdICYgUXVlcnlQZXJjZW50KQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBpZiAoYnl0ZSA9PSAnXCcnICYmIHVybElzU3BlY2lhbCkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFVSTFBhcnNlcjo6
aXNJblVzZXJJbmZvRW5jb2RlU2V0KFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6Omlz
SW5Vc2VySW5mb0VuY29kZVNldChjKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZSwgVVJMUGFyc2VyOjpSZXBvcnRTeW50YXhWaW9sYXRpb24gcmVwb3J0U3ludGF4VmlvbGF0
aW9uPgotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YWR2YW5jZShDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQotewotICAg
ICsraXRlcmF0b3I7Ci0gICAgd2hpbGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlz
VGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgIGlmIChyZXBvcnRTeW50YXhWaW9s
YXRpb24gPT0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXMpCi0gICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICsr
aXRlcmF0b3I7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgot
Ym9vbCBVUkxQYXJzZXI6OnRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0
U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIGlmIChpdGVyYXRvci5hdEVuZCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBv
cnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmF0
RW5kKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5M
SU5FIGJvb2wgVVJMUGFyc2VyOjppc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8
fCAhaXNBU0NJSUFscGhhKCppdGVyYXRvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
ZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9y
KTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoVU5M
SUtFTFkoKml0ZXJhdG9yID09ICd8JykpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJ
SUJ1ZmZlcihVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBBU1NFUlQoaXNBU0NJSShjb2RlUG9p
bnQpKTsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAg
ICBtX2FzY2lpQnVmZmVyLmFwcGVuZChjb2RlUG9pbnQpOwotfQotCi1BTFdBWVNfSU5MSU5FIHZv
aWQgVVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMs
IHNpemVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0
aW9uKSkKLSAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjph
cHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
IGl0ZXJhdG9yKQotewotICAgIEFTU0VSVChpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikp
OwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoKml0ZXJhdG9yKTsKLSAgICBhZHZhbmNlKGl0ZXJh
dG9yKTsKLSAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwotICAgIEFTU0VSVCgqaXRlcmF0
b3IgPT0gJzonIHx8ICppdGVyYXRvciA9PSAnfCcpOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJ3wn
KQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJzonKTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6
OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVSTCYgYmFzZSkKLXsKLSAgICBpZiAo
YmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5t
X2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCA8IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwot
ICAgICAgICBpZiAoYmFzZS5tX3N0cmluZy5pczhCaXQoKSkgewotICAgICAgICAgICAgY29uc3Qg
TENoYXIqIGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAg
Q29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJhc2Uu
bV9wb3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICAg
ICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFw
cGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczE2KCk7Ci0gICAgICAgICAgICBDb2Rl
UG9pbnRJdGVyYXRvcjxVQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3Bv
cnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAg
ICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5k
V2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRDb3B5
RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAg
ICBpZiAoIWlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhZHZhbmNlKGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgYWR2YW5jZShpdGVyYXRvcik7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiAhaXNTbGFzaFF1ZXN0aW9u
T3JIYXNoKCppdGVyYXRvcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVp
bnQ4X3QgYnl0ZSwgVmVjdG9yPExDaGFyPiYgYnVmZmVyKQotewotICAgIGJ1ZmZlci5hcHBlbmQo
JyUnKTsKLSAgICBidWZmZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUp
KTsKLSAgICBidWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsK
LX0KLQotdm9pZCBVUkxQYXJzZXI6OnBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSkKLXsK
LSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJyUnKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHVwcGVyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGJ5dGUpKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9BU0NJ
SUhleERpZ2l0KGJ5dGUpKTsKLX0KLQotY29uc3QgY2hhciByZXBsYWNlbWVudENoYXJhY3RlclVU
RjhQZXJjZW50RW5jb2RlZFsxMF0gPSAiJUVGJUJGJUJEIjsKLWNvbnN0IHNpemVfdCByZXBsYWNl
bWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCA9IHNpemVvZihyZXBsYWNlbWVu
dENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCkgLSAxOwotCi10ZW1wbGF0ZTxib29sKCppc0lu
Q29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5F
IHZvaWQgVVJMUGFyc2VyOjp1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCFpdGVyYXRvci5hdEVu
ZCgpKTsKLSAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVyYXRvcjsKLSAgICBpZiAoTElLRUxZ
KGlzQVNDSUkoY29kZVBvaW50KSkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzSW5Db2RlU2V0
KGNvZGVQb2ludCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwot
ICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBvaW50KTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvZGVQb2ludCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0luQ29kZVNldChjb2RlUG9p
bnQpLCAiaXNJbkNvZGVTZXQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBmb3Igbm9uLUFTQ0lJ
IGNoYXJhY3RlcnMiKTsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIAotICAg
IGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgewotICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkLCByZXBsYWNl
bWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgdWludDhfdCBidWZmZXJbVThfTUFYX0xFTkdUSF07Ci0gICAgaW50
MzJfdCBvZmZzZXQgPSAwOwotICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQsIGNv
ZGVQb2ludCk7Ci0gICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgb2Zmc2V0OyArK2kpCi0gICAg
ICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ1ZmZlcltpXSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UXVlcnlF
bmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQot
ewotICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjb2RlUG9pbnQg
PSAqaXRlcmF0b3I7Ci0gICAgaWYgKExJS0VMWShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7Ci0gICAg
ICAgIGlmIChVTkxJS0VMWShzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGNvZGVQb2ludCwg
bV91cmxJc1NwZWNpYWwpKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9y
KTsKLSAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0g
ICAgCi0gICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUihjb2RlUG9pbnQpKSB7Ci0gICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQs
IHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwotICAg
IGludDMyX3Qgb2Zmc2V0ID0gMDsKLSAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0
LCBjb2RlUG9pbnQpOwotICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytpKSB7
Ci0gICAgICAgIGF1dG8gYnl0ZSA9IGJ1ZmZlcltpXTsKLSAgICAgICAgaWYgKHNob3VsZFBlcmNl
bnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQotICAgICAgICAgICAgcGVy
Y2VudEVuY29kZUJ5dGUoYnl0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoYnl0ZSk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8
VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGF1dG8gZW5jb2RlZCA9
IGVuY29kaW5nLmVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldyhzb3VyY2UuZGF0YSgpLCBz
b3VyY2Uuc2l6ZSgpKSk7Ci0gICAgYXV0byogZGF0YSA9IGVuY29kZWQuZGF0YSgpOwotICAgIHNp
emVfdCBsZW5ndGggPSBlbmNvZGVkLnNpemUoKTsKLSAgICAKLSAgICBpZiAoIWxlbmd0aCA9PSAh
aXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHNpemVfdCBpID0gMDsKLSAgICBmb3Ig
KDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7
Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGRhdGFbaV07Ci0gICAgICAgIGlmIChVTkxJS0VMWShi
eXRlICE9ICppdGVyYXRvcikpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRv
cik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoVU5MSUtFTFko
c2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpKSB7Ci0g
ICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKLSAgICAgICAg
KytpdGVyYXRvcjsKLSAgICB9Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFi
T3JOZXdsaW5lKCppdGVyYXRvcikpCi0gICAgICAgICsraXRlcmF0b3I7Ci0gICAgQVNTRVJUKChp
ID09IGxlbmd0aCkgPT0gaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgZm9yICg7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAg
ICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOwotICAgICAgICBpZiAoc2hvdWxkUGVyY2VudEVuY29k
ZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCi0gICAgICAgICAgICBwZXJjZW50RW5j
b2RlQnl0ZShieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihieXRlKTsKLSAgICB9Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNl
cjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKLXsKLSAgICBzdGF0
aWMgY29uc3QgdWludDE2X3QgZnRwUG9ydCA9IDIxOwotICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCBnb3BoZXJQb3J0ID0gNzA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBQb3J0ID0g
ODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBzUG9ydCA9IDQ0MzsKLSAgICBzdGF0
aWMgY29uc3QgdWludDE2X3Qgd3NQb3J0ID0gODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90
IHdzc1BvcnQgPSA0NDM7Ci0gICAgCi0gICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7
Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgc3dp
dGNoIChzY2hlbWVbMF0pIHsKLSAgICBjYXNlICd3JzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgp
IHsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHdzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3Mn
Ci0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gd3NzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBjYXNl
ICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSA0OgotICAgICAg
ICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0g
PT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gaHR0cFBvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAg
ICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVb
M10gPT0gJ3AnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdzJykKLSAgICAgICAg
ICAgICAgICByZXR1cm4gaHR0cHNQb3J0OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgICAgIH0KLSAgICBjYXNlICdnJzoKLSAgICAgICAgaWYgKGxlbmd0aCA9PSA2Ci0gICAgICAg
ICAgICAmJiBzY2hlbWVbMV0gPT0gJ28nCi0gICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3An
Ci0gICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCi0gICAgICAgICAgICAmJiBzY2hlbWVb
NF0gPT0gJ2UnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNV0gPT0gJ3InKQotICAgICAgICAgICAg
cmV0dXJuIGdvcGhlclBvcnQ7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgY2Fz
ZSAnZic6Ci0gICAgICAgIGlmIChsZW5ndGggPT0gMwotICAgICAgICAgICAgJiYgc2NoZW1lWzFd
ID09ICd0JwotICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJykKLSAgICAgICAgICAgIHJl
dHVybiBmdHBQb3J0OwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotfQotCi1lbnVtIGNsYXNzIFNj
aGVtZSB7Ci0gICAgV1MsCi0gICAgV1NTLAotICAgIEZpbGUsCi0gICAgRlRQLAotICAgIEdvcGhl
ciwKLSAgICBIVFRQLAotICAgIEhUVFBTLAotICAgIE5vblNwZWNpYWwKLX07Ci0KLUFMV0FZU19J
TkxJTkUgc3RhdGljIFNjaGVtZSBzY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpCi17Ci0gICAgYXV0
byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJl
dHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKLSAgICBj
YXNlICdmJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSAzOgotICAg
ICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVb
Ml0gPT0gJ3AnKQotICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkZUUDsKLSAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAgICAg
ICAgIGlmIChzY2hlbWVbMV0gPT0gJ2knCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICdsJwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnZScpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6RmlsZTsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNw
ZWNpYWw7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25T
cGVjaWFsOwotICAgICAgICB9Ci0gICAgY2FzZSAnZyc6Ci0gICAgICAgIGlmIChsZW5ndGggPT0g
NgotICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJwotICAgICAgICAgICAgJiYgc2NoZW1l
WzJdID09ICdwJwotICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJwotICAgICAgICAgICAg
JiYgc2NoZW1lWzRdID09ICdlJwotICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKLSAg
ICAgICAgICAgIHJldHVybiBTY2hlbWU6OkdvcGhlcjsKLSAgICAgICAgcmV0dXJuIFNjaGVtZTo6
Tm9uU3BlY2lhbDsKLSAgICBjYXNlICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAg
ICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNd
ID09ICdwJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpIVFRQOwotICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAg
ICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0g
J3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJwotICAgICAgICAgICAgICAg
ICYmIHNjaGVtZVs0XSA9PSAncycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRU
UFM7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQot
ICAgIGNhc2UgJ3cnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNlIDI6
Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1
cm4gU2NoZW1lOjpXUzsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0g
ICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2No
ZW1lOjpXU1M7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAg
ICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0g
ICAgfQotfQotCi1zdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNh
bGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoc2NoZW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICghaXNBU0NJSUFs
cGhhKHNjaGVtZVswXSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmIChp
c0FTQ0lJQWxwaGFudW1lcmljKHNjaGVtZVtpXSkgfHwgc2NoZW1lW2ldID09ICcrJyB8fCBzY2hl
bWVbaV0gPT0gJy0nIHx8IHNjaGVtZVtpXSA9PSAnLicpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NoZW1l
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc1NwZWNp
YWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWVBcmcpCi17Ci0gICAgcmV0dXJuIHNjaGVtZShz
Y2hlbWVBcmcpICE9IFNjaGVtZTo6Tm9uU3BlY2lhbDsKLX0KLQotZW51bSBjbGFzcyBVUkxQYXJz
ZXI6OlVSTFBhcnQgewotICAgIFNjaGVtZUVuZCwKLSAgICBVc2VyU3RhcnQsCi0gICAgVXNlckVu
ZCwKLSAgICBQYXNzd29yZEVuZCwKLSAgICBIb3N0RW5kLAotICAgIFBvcnRFbmQsCi0gICAgUGF0
aEFmdGVyTGFzdFNsYXNoLAotICAgIFBhdGhFbmQsCi0gICAgUXVlcnlFbmQsCi19OwotCi1zaXpl
X3QgVVJMUGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQoY29uc3QgVVJMJiB1cmwsIFVSTFBhcnQg
cGFydCkKLXsKLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBjYXNlIFVSTFBhcnQ6OlF1ZXJ5RW5k
OgotICAgICAgICByZXR1cm4gdXJsLm1fcXVlcnlFbmQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRo
RW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBh
dGhBZnRlckxhc3RTbGFzaDoKLSAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9ob3N0
RW5kICsgdXJsLm1fcG9ydExlbmd0aDsKLSAgICBjYXNlIFVSTFBhcnQ6Okhvc3RFbmQ6Ci0gICAg
ICAgIHJldHVybiB1cmwubV9ob3N0RW5kOwotICAgIGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6
Ci0gICAgICAgIHJldHVybiB1cmwubV9wYXNzd29yZEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlVz
ZXJFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV91c2VyRW5kOwotICAgIGNhc2UgVVJMUGFydDo6
VXNlclN0YXJ0OgotICAgICAgICByZXR1cm4gdXJsLm1fdXNlclN0YXJ0OwotICAgIGNhc2UgVVJM
UGFydDo6U2NoZW1lRW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kOwotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBVUkxQ
YXJzZXI6OmNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBzaXplX3Qg
bGVuZ3RoKQotewotICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSBzdHJpbmcubGVuZ3RoKCkp
OwotICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQo
bV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nLmNoYXJh
Y3RlcnMxNigpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICBVQ2hhciBjID0gY2hhcmFjdGVyc1tpXTsKLSAgICAgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzQVNDSUkoYykpOwotICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcihjKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbChj
b25zdCBVUkwmIGJhc2UsIFVSTFBhcnQgcGFydCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqJiBub25VVEY4UXVl
cnlFbmNvZGluZykKLXsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotCi0gICAgbV9h
c2NpaUJ1ZmZlci5jbGVhcigpOwotICAgIGNvcHlBU0NJSVN0cmluZ1VudGlsKGJhc2UubV9zdHJp
bmcsIHVybExlbmd0aFVudGlsUGFydChiYXNlLCBwYXJ0KSk7Ci0gICAgc3dpdGNoIChwYXJ0KSB7
Ci0gICAgY2FzZSBVUkxQYXJ0OjpRdWVyeUVuZDoKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9
IGJhc2UubV9xdWVyeUVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0
OjpQYXRoRW5kOgotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBiYXNlLm1fcGF0aEVuZDsKLSAg
ICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6
Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BhdGhBZnRlckxh
c3RTbGFzaDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5k
OgotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBiYXNlLm1fcG9ydExlbmd0aDsKLSAgICAg
ICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgotICAgICAgICBtX3Vy
bC5tX2hvc3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAg
Y2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IGJhc2UubV9wYXNzd29yZEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQ
YXJ0OjpVc2VyRW5kOgotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBiYXNlLm1fdXNlckVuZDsK
LSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyU3RhcnQ6Ci0gICAg
ICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gYmFzZS5tX3VzZXJTdGFydDsKLSAgICAgICAgRkFMTFRI
Uk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpTY2hlbWVFbmQ6Ci0gICAgICAgIG1fdXJsLm1faXNW
YWxpZCA9IGJhc2UubV9pc1ZhbGlkOwotICAgICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBG
YW1pbHkgPSBiYXNlLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsKLSAgICAgICAgbV91cmwubV9z
Y2hlbWVFbmQgPSBiYXNlLm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBzd2l0Y2ggKHNjaGVtZShT
dHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpLCBtX3VybC5tX3NjaGVtZUVuZCkpKSB7Ci0g
ICAgY2FzZSBTY2hlbWU6OldTOgotICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgIG5vblVU
RjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVl
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6OkZpbGU6Ci0gICAgICAgIG1fdXJs
SXNGaWxlID0gdHJ1ZTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBTY2hlbWU6OkZU
UDoKLSAgICBjYXNlIFNjaGVtZTo6R29waGVyOgotICAgIGNhc2UgU2NoZW1lOjpIVFRQOgotICAg
IGNhc2UgU2NoZW1lOjpIVFRQUzoKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6Ok5vblNwZWNpYWw6Ci0gICAgICAgIG1fdXJs
SXNTcGVjaWFsID0gZmFsc2U7Ci0gICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotc3RhdGljIGNvbnN0IGNoYXIgZG90QVNDSUlDb2RlWzJdID0geycyJywgJ2UnfTsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJz
ZXI6OmlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4gYykKLXsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCpjID09ICcuJykgewotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5
bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xh
c2hRdWVzdGlvbk9ySGFzaCgqYyk7Ci0gICAgfQotICAgIGlmICgqYyAhPSAnJScpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZp
b2xhdGlvbjo6Tm8+KGMpOwotICAgIGlmIChjLmF0RW5kKCkgfHwgKmMgIT0gZG90QVNDSUlDb2Rl
WzBdKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBS
ZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2Rl
WzFdKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9u
T3JIYXNoKCpjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNEb3Vi
bGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQotewot
ICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKmMgPT0g
Jy4nKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpOwot
ICAgIH0KLSAgICBpZiAoKmMgIT0gJyUnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2
YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBp
ZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29kZVswXSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpO
bz4oYyk7Ci0gICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkgewotICAgICAgICBhZHZhbmNl
PENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICBy
ZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6
OmNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKSk7Ci0gICAg
aWYgKCpjID09ICcuJykgewotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRF
bmQoKSkgewotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAg
ICAgICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
QVNTRVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAg
IEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAg
ICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAgICAg
ICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkgewotICAgICAgICAgICAgaWYg
KCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAqYyA9
PSAnIycpOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNEb3VibGVE
b3RQYXRoU2VnbWVudChjKSk7Ci0gICAgaWYgKCpjID09ICcuJykKLSAgICAgICAgYWR2YW5jZShj
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFu
Y2UoYyk7Ci0gICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBh
ZHZhbmNlKGMpOwotICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNv
ZGVbMV0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgIH0KLSAgICBjb25zdW1lU2luZ2xlRG90
UGF0aFNlZ21lbnQoYyk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKHVuc2ln
bmVkIG5ld1BhdGhBZnRlckxhc3RTbGFzaCkKLXsKLSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhW
aW9sYXRpb24pOwotICAgIGlmICghbV91cmxJc0ZpbGUpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgQVNTRVJUKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IG1fYXNjaWlCdWZmZXIu
c2l6ZSgpKTsKLSAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gY29tcG9uZW50VG9Qb3AoJm1f
YXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSwgJm1fYXNjaWlCdWZmZXJbMF0gKyBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCk7Ci0gICAgaWYgKG5ld1BhdGhBZnRlckxhc3RTbGFz
aCA9PSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxICYmIGlzV2luZG93
c0RyaXZlTGV0dGVyKGNvbXBvbmVudFRvUG9wKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiB0cnVlOwotfQotCi12b2lkIFVSTFBhcnNlcjo6cG9wUGF0aCgpCi17Ci0gICAgQVNT
RVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICBpZiAobV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxKSB7Ci0g
ICAgICAgIGF1dG8gbmV3UGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggLSAxOwotICAgICAgICBpZiAobV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xh
c2hdID09ICcvJykKLSAgICAgICAgICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaC0tOwotICAgICAg
ICB3aGlsZSAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwu
bV9wb3J0TGVuZ3RoICYmIG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSAhPSAn
LycpCi0gICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKLSAgICAgICAgbmV3UGF0
aEFmdGVyTGFzdFNsYXNoKys7Ci0gICAgICAgIGlmIChzaG91bGRQb3BQYXRoKG5ld1BhdGhBZnRl
ckxhc3RTbGFzaCkpCi0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG5l
d1BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICB9Ci0gICAgbV9hc2NpaUJ1ZmZlci5yZXNpemUobV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgaWYgKG1fZGlkU2VlU3lu
dGF4VmlvbGF0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kaWRTZWVTeW50YXhWaW9sYXRp
b24gPSB0cnVlOwotICAgIAotICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7Ci0g
ICAgc2l6ZV90IGNvZGVVbml0c1RvQ29weSA9IGl0ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlwZSo+KG1faW5wdXRCZWdpbikpOwotICAgIFJF
TEVBU0VfQVNTRVJUKGNvZGVVbml0c1RvQ29weSA8PSBtX2lucHV0U3RyaW5nLmxlbmd0aCgpKTsK
LSAgICBtX2FzY2lpQnVmZmVyLnJlc2VydmVDYXBhY2l0eShtX2lucHV0U3RyaW5nLmxlbmd0aCgp
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVVbml0c1RvQ29weTsgKytpKSB7Ci0g
ICAgICAgIEFTU0VSVChpc0FTQ0lJKG1faW5wdXRTdHJpbmdbaV0pKTsKLSAgICAgICAgbV9hc2Np
aUJ1ZmZlci51bmNoZWNrZWRBcHBlbmQobV9pbnB1dFN0cmluZ1tpXSk7Ci0gICAgfQotfQotCi12
b2lkIFVSTFBhcnNlcjo6ZmFpbHVyZSgpCi17Ci0gICAgbV91cmwuaW52YWxpZGF0ZSgpOwotICAg
IG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpjaGVja0xvY2FsaG9zdENvZGVQb2ludChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIFVDaGFyMzIgY29kZVBv
aW50KQotewotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8IHRvQVNDSUlMb3dlcigqaXRlcmF0
b3IpICE9IGNvZGVQb2ludCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBV
UkxQYXJzZXI6OmlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
aXRlcmF0b3IpCi17Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwg
J2wnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2Rl
UG9pbnQoaXRlcmF0b3IsICdvJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNo
ZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYycpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2EnKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRl
cmF0b3IsICdsJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxo
b3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnaCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ28nKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdz
JykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBv
aW50KGl0ZXJhdG9yLCAndCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGl0
ZXJhdG9yLmF0RW5kKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc0xvY2FsaG9zdChTdHJpbmdW
aWV3IHZpZXcpCi17Ci0gICAgaWYgKHZpZXcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBpc0F0
TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPih2aWV3LmNoYXJhY3RlcnM4KCksIHZp
ZXcuY2hhcmFjdGVyczgoKSArIHZpZXcubGVuZ3RoKCkpKTsKLSAgICByZXR1cm4gaXNBdExvY2Fs
aG9zdChDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4odmlldy5jaGFyYWN0ZXJzMTYoKSwgdmlldy5j
aGFyYWN0ZXJzMTYoKSArIHZpZXcubGVuZ3RoKCkpKTsKLX0KLQotQUxXQVlTX0lOTElORSBTdHJp
bmdWaWV3IFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXcoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVu
Z3RoKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpIHsKLSAg
ICAgICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKLSAg
ICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZlci5kYXRhKCkgKyBzdGFydCwgbGVu
Z3RoKTsKLSAgICB9Ci0gICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1faW5wdXRTdHJpbmcu
bGVuZ3RoKCkpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1faW5wdXRTdHJpbmcpLnN1YnN0cmlu
ZyhzdGFydCwgbGVuZ3RoKTsKLX0KLQotQUxXQVlTX0lOTElORSBVQ2hhciBVUkxQYXJzZXI6OnBh
cnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlvbikKLXsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRT
ZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlcltwb3NpdGlv
bl07Ci0gICAgcmV0dXJuIG1faW5wdXRTdHJpbmdbcG9zaXRpb25dOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzaXplX3QgVVJMUGFyc2VyOjpj
dXJyZW50UG9zaXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0
ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCi0g
ICAgICAgIHJldHVybiBtX2FzY2lpQnVmZmVyLnNpemUoKTsKLSAgICAKLSAgICByZXR1cm4gaXRl
cmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBDaGFyYWN0ZXJUeXBl
Kj4obV9pbnB1dEJlZ2luKSk7Ci19Ci0KLVVSTFBhcnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0cmlu
ZyYgaW5wdXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4
UXVlcnlFbmNvZGluZykKLSAgICA6IG1faW5wdXRTdHJpbmcoaW5wdXQpCi17Ci0gICAgaWYgKGlu
cHV0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiAhYmFzZS5tX2Nh
bm5vdEJlQUJhc2VVUkwpIHsKLSAgICAgICAgICAgIG1fdXJsID0gYmFzZTsKLSAgICAgICAgICAg
IG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoaW5wdXQuaXM4Qml0KCkpIHsKLSAgICAgICAgbV9pbnB1
dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFj
dGVyczgoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1dC5jaGFyYWN0ZXJzMTYoKTsK
LSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczE2KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNl
LCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX3VybC5tX2lz
VmFsaWQKLSAgICAgICAgfHwgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPT0gKG1fdXJsLnN0cmlu
ZygpICE9IGlucHV0KQotICAgICAgICB8fCAoaW5wdXQuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxp
c0MwQ29udHJvbE9yU3BhY2U+KCkKLSAgICAgICAgICAgICYmIG1fdXJsLm1fc3RyaW5nID09IGJh
c2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpKSk7Ci0gICAgQVNTRVJUKGludGVybmFs
VmFsdWVzQ29uc2lzdGVudChtX3VybCkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpZiAo
IW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSB7Ci0gICAgICAgIC8vIEZvcmNlIGEgc3ludGF4IHZp
b2xhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlIHNhbWUgcmVz
dWx0LgotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoIiAiLCBpbnB1dCksIGJh
c2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgVVJMIHBhcnNlZCA9IHBhcnNlci5y
ZXN1bHQoKTsKLSAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBBU1NF
UlQoYWxsVmFsdWVzRXF1YWwocGFyc2VyLnJlc3VsdCgpLCBtX3VybCkpOwotICAgIH0KLSNlbmRp
ZgotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6
OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqIGlucHV0LCBjb25zdCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNv
ZGluZykKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2luZyBVUkwgPCVzPiBiYXNlIDwlcz4i
LCBTdHJpbmcoaW5wdXQsIGxlbmd0aCkudXRmOCgpLmRhdGEoKSwgYmFzZS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICBtX3VybCA9IHsgfTsKLSAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5p
c0VtcHR5KCkpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBxdWVyeUJ1ZmZlcjsKLQotICAgIHVuc2ln
bmVkIGVuZEluZGV4ID0gbGVuZ3RoOwotICAgIHdoaWxlIChVTkxJS0VMWShlbmRJbmRleCAmJiBp
c0MwQ29udHJvbE9yU3BhY2UoaW5wdXRbZW5kSW5kZXggLSAxXSkpKSB7Ci0gICAgICAgIHN5bnRh
eFZpb2xhdGlvbihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihpbnB1dCwgaW5wdXQp
KTsKLSAgICAgICAgZW5kSW5kZXgtLTsKLSAgICB9Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4gYyhpbnB1dCwgaW5wdXQgKyBlbmRJbmRleCk7Ci0gICAgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gYXV0aG9yaXR5T3JIb3N0QmVnaW47Ci0gICAgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gcXVlcnlCZWdpbjsKLSAgICB3aGlsZSAoVU5MSUtFTFko
IWMuYXRFbmQoKSAmJiBpc0MwQ29udHJvbE9yU3BhY2UoKmMpKSkgewotICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7Ci0gICAgICAgICsrYzsKLSAgICB9Ci0gICAgYXV0byBiZWdpbkFmdGVyQ29u
dHJvbEFuZFNwYWNlID0gYzsKLQotICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKLSAg
ICAgICAgU2NoZW1lU3RhcnQsCi0gICAgICAgIFNjaGVtZSwKLSAgICAgICAgTm9TY2hlbWUsCi0g
ICAgICAgIFNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5LAotICAgICAgICBQYXRoT3JBdXRob3Jp
dHksCi0gICAgICAgIFJlbGF0aXZlLAotICAgICAgICBSZWxhdGl2ZVNsYXNoLAotICAgICAgICBT
cGVjaWFsQXV0aG9yaXR5U2xhc2hlcywKLSAgICAgICAgU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNs
YXNoZXMsCi0gICAgICAgIEF1dGhvcml0eU9ySG9zdCwKLSAgICAgICAgSG9zdCwKLSAgICAgICAg
RmlsZSwKLSAgICAgICAgRmlsZVNsYXNoLAotICAgICAgICBGaWxlSG9zdCwKLSAgICAgICAgUGF0
aFN0YXJ0LAotICAgICAgICBQYXRoLAotICAgICAgICBDYW5ub3RCZUFCYXNlVVJMUGF0aCwKLSAg
ICAgICAgVVRGOFF1ZXJ5LAotICAgICAgICBOb25VVEY4UXVlcnksCi0gICAgICAgIEZyYWdtZW50
LAotICAgIH07Ci0KLSNkZWZpbmUgTE9HX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJTdGF0ZSAl
cywgY29kZSBwb2ludCAlYywgcGFyc2VkIGRhdGEgPCVzPiBzaXplICV6dSIsIHgsICpjLCBwYXJz
ZWREYXRhVmlldygwLCBjdXJyZW50UG9zaXRpb24oYykpLnV0ZjgoKS5kYXRhKCksIGN1cnJlbnRQ
b3NpdGlvbihjKSkKLSNkZWZpbmUgTE9HX0ZJTkFMX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJG
aW5hbCBTdGF0ZTogJXMiLCB4KQotCi0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6U2NoZW1lU3Rh
cnQ7Ci0gICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFi
T3JOZXdsaW5lKCpjKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAg
ICAgICAgICsrYzsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAg
c3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKLSAgICAg
ICAgICAgIExPR19TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJ
QWxwaGEoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigq
YykpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAgICAg
ICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICAgICAgYyA9IGJlZ2lu
QWZ0ZXJDb250cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTY2hlbWU7Ci0gICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAg
ICAgICBMT0dfU1RBVEUoIlNjaGVtZSIpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWRTY2hlbWVD
aGFyYWN0ZXIoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBl
cigqYykpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgc2No
ZW1lRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChzY2hlbWVF
bmQgPiBVUkw6Om1heFNjaGVtZUxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBmYWlsdXJl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBzY2hlbWVFbmQ7Ci0gICAgICAgICAgICAg
ICAgU3RyaW5nVmlldyB1cmxTY2hlbWUgPSBwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVt
ZUVuZCk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAg
ICAgICAgICAgIHN3aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIFNjaGVtZTo6RmlsZToKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICBtX3VybElzRmlsZSA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6
OldTOgotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgICAgICAgICAg
ICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAg
bV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5wcm90
b2NvbElzKHVybFNjaGVtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNs
YXNoZXM7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFA6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBTY2hlbWU6OkhUVFBTOgotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Byb3RvY29s
SXNJbkhUVFBGYW1pbHkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsK
LSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RlRQOgotICAgICAgICAgICAgICAgIGNhc2Ug
U2NoZW1lOjpHb3BoZXI6Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJvdG9jb2xJcyh1cmxTY2hlbWUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JB
dXRob3JpdHk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOwotICAgICAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgotICAgICAgICAgICAgICAgICAgICBub25VVEY4UXVl
cnlFbmNvZGluZyA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbWF5YmVTbGFz
aCA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIGFkdmFuY2UobWF5YmVTbGFzaCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghbWF5YmVTbGFzaC5hdEVuZCgpICYmICptYXliZVNsYXNoID09ICcv
JykgewotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG1heWJlU2xhc2g7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoT3JBdXRob3JpdHk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoKmMgPT0gJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrYzsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX2Nhbm5vdEJlQUJhc2VVUkwgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6Tm9TY2hlbWU7Ci0gICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250
cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgewotICAgICAg
ICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xB
bmRTcGFjZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFN0YXRlOjpOb1NjaGVtZToKLSAgICAgICAgICAgIExPR19TVEFURSgiTm9TY2hlbWUiKTsKLSAg
ICAgICAgICAgIGlmICghYmFzZS5pc1ZhbGlkKCkgfHwgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJM
ICYmICpjICE9ICcjJykpIHsKLSAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGJhc2UubV9jYW5u
b3RCZUFCYXNlVVJMICYmICpjID09ICcjJykgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0
c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7
Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghYmFzZS5w
cm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxh
dGl2ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eToKLSAgICAgICAgICAgIExP
R19TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgICAgIGlmICgq
YyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJy8n
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNo
ZXM7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKLSAg
ICAgICAgICAgIExPR19TVEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7Ci0gICAgICAgICAgICBpZiAo
KmMgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwot
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKLSAgICAgICAg
ICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2lu
ID0gYzsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNl
ZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAg
ICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICAg
ICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAg
ICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlJlbGF0
aXZlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAgICAgICBjYXNlICcvJzoK
LSAgICAgICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpS
ZWxhdGl2ZVNsYXNoOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgJz8nOgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1Vu
dGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAg
KytjOwotICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAg
ICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlICcjJzoKLSAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNV
bnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwot
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKLSAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNv
cHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24o
YykgJiYgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgIT0gJy8nKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKLSAgICAgICAgICAgIExPR19T
VEFURSgiUmVsYXRpdmVTbGFzaCIpOwotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9
PSAnXFwnKSB7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rp
bmcpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjovLyIsIDMpOwotICAg
ICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3Jp
dHlPckhvc3Q7Ci0gICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVy
eUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1faG9zdEVu
ZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpQYXRoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJT
cGVjaWFsQXV0aG9yaXR5U2xhc2hlcyIpOwotICAgICAgICAgICAgaWYgKExJS0VMWSgqYyA9PSAn
LycgfHwgKmMgPT0gJ1xcJykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0g
J1xcJykpCi0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgYWR2YW5j
ZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoTElLRUxZKCFjLmF0RW5kKCkgJiYgKCpjID09ICcv
JyB8fCAqYyA9PSAnXFwnKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpj
ID09ICdcXCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6
Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzIik7
Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpIHsKLSAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQ
b3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhv
c3Q7Ci0gICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0eU9y
SG9zdDoKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkF1dGhv
cml0eU9ySG9zdCIpOwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnQCcpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYXV0byBsYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICBhdXRvIGZp
bmRMYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWZpbmRMYXN0QXQuYXRF
bmQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgVVJMX1BBUlNFUl9MT0coIkZpbmRpbmcg
bGFzdCBAOiAlYyIsICpmaW5kTGFzdEF0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgq
ZmluZExhc3RBdCA9PSAnQCcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEF0ID0g
ZmluZExhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTbGFzaCA9ICpmaW5k
TGFzdEF0ID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmZpbmRMYXN0QXQgPT0gJ1xcJyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8fCAqZmluZExhc3RBdCA9PSAn
PycgfHwgKmZpbmRMYXN0QXQgPT0gJyMnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgKytmaW5kTGFzdEF0OwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBsYXN0QXQpKTsKLSAg
ICAgICAgICAgICAgICAgICAgYyA9IGxhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgYWR2YW5j
ZShjKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIb3N0OwotICAgICAgICAgICAgICAgICAg
ICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1NsYXNo
ID0gKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKTsKLSAgICAgICAg
ICAgICAgICBpZiAoaXNTbGFzaCB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChp
dGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJc1Nw
ZWNpYWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihj
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5t
X3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGgg
PSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYXV0aG9y
aXR5T3JIb3N0QmVnaW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29y
ZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFy
c2VIb3N0QW5kUG9ydChpdGVyYXRvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
YWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFp
c1NsYXNoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lh
bCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5v
bkFTQ0lJKCpjKSkKLSAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVND
SUkgPSB0cnVlOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0gd2hpbGUgKCFj
LmF0RW5kKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Okhvc3Q6
Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJIb3N0Iik7Ci0g
ICAgICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCpjID09
ICc/JyB8fCAqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJ
SSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5hdEVu
ZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAg
ICAgICAgICAgTE9HX1NUQVRFKCJGaWxlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0g
ICAgICAgICAgICBjYXNlICdcXCc6Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSAnLyc6Ci0g
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkZpbGVTbGFzaDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICc/JzoKLSAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYm
IGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5n
KTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOwotICAgICAg
ICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vPyIsIDQpOwotICAgICAgICAgICAgICAg
ICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVu
dFBvc2l0aW9uKGMpIC0gMjsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgJyMnOgotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKLSAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElz
KCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwg
VVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyMiLCA0KTsK
LSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24o
YykgLSAyOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3Vy
bC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OwotICAgICAgICAgICAg
ICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChi
YXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSAmJiBzaG91bGRDb3B5Rmls
ZVVSTChjKSkKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJM
UGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoIi8vLyIsIDMpOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1
cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
V2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoK
LSAgICAgICAgICAgIExPR19TVEFURSgiRmlsZVNsYXNoIik7Ci0gICAgICAgICAgICBpZiAoTElL
RUxZKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSgqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3Vy
cmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAg
ICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpGaWxlSG9zdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAg
IGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFdp
bmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7Ci0gICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0
YXJ0ICsgMTsKLSAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6Ci0gICAgICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICAgICAgICAgIGlm
IChpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wg
d2luZG93c1F1aXJrID0gdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyaykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NR
dWlyayB8fCBhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQod2luZG93c1F1aXJrIHx8IHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlv
bihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
KmMgPT0gJz8nKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIv
PyIsIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6VVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAn
IycpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8jIiwgMik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0g
MTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFw
YXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0
eU9ySG9zdEJlZ2luLCBjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNMb2NhbGhvc3QocGFyc2VkRGF0YVZp
ZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91cmwubV9wYXNz
d29yZEVuZCkpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91cmwubV9w
YXNzd29yZEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRM
ZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoU3RhcnQ7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo
aXNQZXJjZW50T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1Bl
cmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAg
ICB9IHdoaWxlICghYy5hdEVuZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFN0YXRlOjpQYXRoU3RhcnQ6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhTdGFydCIpOwot
ICAgICAgICAgICAgaWYgKCpjICE9ICcvJyAmJiAqYyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
UGF0aDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpQYXRoOgotICAg
ICAgICAgICAgTE9HX1NUQVRFKCJQYXRoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8
IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChV
TkxJS0VMWShtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoY3VycmVudFBv
c2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcv
JykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNEb3VibGVEb3RQYXRoU2VnbWVu
dChjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICAgICAgICAgICAgICBjb25zdW1lRG91YmxlRG90UGF0aFNlZ21lbnQoYyk7Ci0gICAgICAgICAg
ICAgICAgICAgIHBvcFBhdGgoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1NpbmdsZURvdFBhdGhT
ZWdtZW50KGMpKSkgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKCpjID09ICc/JykgewotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGlmIChu
b25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0g
YzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAg
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpV
VEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1dGY4
UGVyY2VudEVuY29kZTxpc0luRGVmYXVsdEVuY29kZVNldD4oYyk7Ci0gICAgICAgICAgICArK2M7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVS
TFBhdGg6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0g
ICAgICAgICAgICBpZiAoKmMgPT0gJz8nKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJz8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgaWYgKG5v
blVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBj
OwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVU
RjhRdWVyeTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAg
ICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcv
JykgewotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAg
ICAgICAgICsrYzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFN0YXRlOjpVVEY4UXVlcnk6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlVURjhRdWVyeSIp
OwotICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4oKSk7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAg
ICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVCghbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwot
ICAgICAgICAgICAgdXRmOFF1ZXJ5RW5jb2RlKGMpOwotICAgICAgICAgICAgKytjOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKLSAgICAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIk5vblVURjhRdWVyeSIpOwotICAg
ICAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KCkpOwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5
RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMp
KTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBhcHBlbmRDb2RlUG9pbnQocXVlcnlCdWZmZXIsICpjKTsKLSAgICAgICAgICAgICAgICBhZHZh
bmNlKGMsIHF1ZXJ5QmVnaW4pOwotICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAgICAg
ICAgICBVUkxfUEFSU0VSX0xPRygiU3RhdGUgRnJhZ21lbnQiKTsKLSAgICAgICAgICAgIHV0ZjhQ
ZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHN0YXRl
KSB7Ci0gICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFU
RSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgaWYgKCFjdXJyZW50UG9zaXRpb24oYykgJiYgYmFz
ZS5pc1ZhbGlkKCkgJiYgIWJhc2UubV9jYW5ub3RCZUFCYXNlVVJMKSB7Ci0gICAgICAgICAgICBt
X3VybCA9IGJhc2U7Ci0gICAgICAgICAgICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmYWlsdXJlKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAgIExPR19GSU5B
TF9TVEFURSgiU2NoZW1lIik7Ci0gICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgU3RhdGU6Ok5vU2NoZW1lOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5vU2No
ZW1lIik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2FzZSBT
dGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6Ci0gICAgICAgIExPR19GSU5BTF9TVEFU
RSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50
aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgotICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOwotICAgICAgICBBU1NFUlQobV91cmwu
bV91c2VyU3RhcnQpOwotICAgICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQgPT0gY3VycmVu
dFBvc2l0aW9uKGMpKTsKLSAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3Np
dGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0LS07Ci0gICAg
ICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwot
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsg
MTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7
Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgIExPR19G
SU5BTF9TVEFURSgiUmVsYXRpdmUiKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgotICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwg
VVJMUGFydDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgbV91
cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJs
Lm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM6Ci0gICAgICAgIExPR19G
SU5BTF9TVEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKLSAgICAgICAgbV91cmwubV91
c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BhdGhF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0
aG9yaXR5SWdub3JlU2xhc2hlczoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTcGVjaWFsQXV0
aG9yaXR5SWdub3JlU2xhc2hlcyIpOwotICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiQXV0aG9yaXR5T3JIb3N0Iik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJl
bnRQb3NpdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdp
bi5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAg
ICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICB9IGVsc2UgaWYgKCFwYXJzZUhvc3RB
bmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgZmFpbHVyZSgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1f
dXJsSXNTcGVjaWFsKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAx
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOwotICAgICAgICB9Ci0gICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBt
X3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFN0YXRlOjpIb3N0OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkhvc3QiKTsKLSAgICAg
ICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAg
ICAgICAgZmFpbHVyZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChtX3VybElzU3BlY2lhbCkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RF
bmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwu
bV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIkZpbGUiKTsKLSAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYm
IGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRp
bChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8iLCAzKTsKLSAgICAgICAgbV91cmwubV91
c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxl
U2xhc2giKTsKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICBtX3VybC5tX3Vz
ZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSArIDE7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoIi8vIiwgMik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0g
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0
ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0
OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpG
aWxlSG9zdDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICBp
ZiAodGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICYmIGlzV2luZG93c0Ry
aXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKLSAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3Jp
dHlPckhvc3RCZWdpbik7Ci0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlv
bihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
LSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0g
ICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgIGlmIChpc0xvY2FsaG9zdChwYXJz
ZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3Vy
bC5tX3Bhc3N3b3JkRW5kKSkpIHsKLSAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1f
dXJsLm1fcGFzc3dvcmRFbmQpOwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAg
ICAgfQotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3Ro
ICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgotICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIGNhc2UgU3RhdGU6OlBhdGg6Ci0gICAgICAgIExPR19GSU5BTF9TVEFU
RSgiUGF0aCIpOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7
Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRoOgotICAgICAgICBMT0df
RklOQUxfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fcGF0aEVuZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5
OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQo
cXVlcnlCZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUo
Ik5vblVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1
ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1
cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6RnJhZ21l
bnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiRnJhZ21lbnQiKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgaWYgKExJS0VMWSghbV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKSB7Ci0g
ICAgICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLSAgICAgICAgQVNTRVJUKG1f
YXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV91cmwubV9zdHJp
bmcgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUobV9hc2NpaUJ1ZmZlcikpOwotICAgIG1fdXJsLm1f
aXNWYWxpZCA9IHRydWU7Ci0gICAgVVJMX1BBUlNFUl9MT0coIlBhcnNlZCBVUkwgPCVzPiIsIG1f
dXJsLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShpdGVyYXRv
ci5hdEVuZCgpKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAg
ICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBt
X3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgYWR2YW5jZShpdGVyYXRvcikpIHsK
LSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpIHsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAgICBhdXRvIGl0ZXJh
dG9yQXRDb2xvbiA9IGl0ZXJhdG9yOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAg
ICAgIGJvb2wgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IGZhbHNlOwotICAgICAgICAgICAgd2hp
bGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRv
cikpKSB7Ci0gICAgICAgICAgICAgICAgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
IChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihpdGVyYXRvckF0Q29sb24pOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdXJsLm1fdXNl
ckVuZCA+IG1fdXJsLm1fdXNlclN0YXJ0KQotICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCdAJyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKHRhYk9yTmV3bGluZUFmdGVyQ29sb24pCi0gICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yQXRDb2xvbik7Ci0gICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCc6Jyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB1
dGY4UGVyY2VudEVuY29kZTxXZWJDb3JlOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJhdG9y
KTsKLSAgICB9Ci0gICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9y
KSkKLSAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V2ViQ29yZTo6aXNJblVzZXJJbmZvRW5jb2Rl
U2V0PihpdGVyYXRvcik7Ci0gICAgbV91cmwubV9wYXNzd29yZEVuZCA9IGN1cnJlbnRQb3NpdGlv
bihpdGVyYXRvcik7Ci0gICAgaWYgKCFtX3VybC5tX3VzZXJFbmQpCi0gICAgICAgIG1fdXJsLm1f
dXNlckVuZCA9IG1fdXJsLm1fcGFzc3dvcmRFbmQ7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
QCcpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPgotdm9pZCBV
UkxQYXJzZXI6OmFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIoVW5zaWduZWRJbnRlZ2VyVHlwZSBu
dW1iZXIpCi17Ci0gICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMg
KyAxXTsKLSAgICBMQ2hhciogZW5kID0gc3RkOjplbmQoYnVmKTsKLSAgICBMQ2hhciogcCA9IGVu
ZDsKLSAgICBkbyB7Ci0gICAgICAgICotLXAgPSAobnVtYmVyICUgMTApICsgJzAnOwotICAgICAg
ICBudW1iZXIgLz0gMTA7Ci0gICAgfSB3aGlsZSAobnVtYmVyKTsKLSAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKHAsIGVuZCAtIHApOwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NChJ
UHY0QWRkcmVzcyBhZGRyZXNzKQotewotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWlu
dDhfdD4oYWRkcmVzcyA+PiAyNCk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAg
IGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAxNik7Ci0gICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8
dWludDhfdD4oYWRkcmVzcyA+PiA4KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7Ci0g
ICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzKTsKLX0KLSAgICAK
LXN0YXRpYyBzaXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2
X3QsIDg+JiBhZGRyZXNzLCBzaXplX3QgYmVnaW4pCi17Ci0gICAgc2l6ZV90IGVuZCA9IGJlZ2lu
OwotICAgIGZvciAoOyBlbmQgPCA4OyBlbmQrKykgewotICAgICAgICBpZiAoYWRkcmVzc1tlbmRd
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBlbmQgLSBiZWdpbjsKLX0K
LQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShj
b25zdCBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKLXsKLSAgICBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbG9uZ2VzdDsKLSAgICBzaXplX3QgbG9uZ2VzdExlbmd0aCA9IDA7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyBpKyspIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IHplcm9TZXF1ZW5jZUxlbmd0aChhZGRyZXNzLCBpKTsKLSAgICAgICAgaWYgKGxlbmd0aCkgewot
ICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgKCFsb25nZXN0IHx8IGxvbmdlc3RMZW5ndGgg
PCBsZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgbG9uZ2VzdCA9IGk7Ci0gICAgICAgICAgICAg
ICAgbG9uZ2VzdExlbmd0aCA9IGxlbmd0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkg
Kz0gbGVuZ3RoOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsb25nZXN0OwotfQotCi12
b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKQotewotICAg
IGJvb2wgcHJpbnRlZCA9IGZhbHNlOwotICAgIGlmIChhdXRvIG5pYmJsZTAgPSBwaWVjZSA+PiAx
MikgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VB
U0NJSUhleERpZ2l0KG5pYmJsZTApKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQot
ICAgIGF1dG8gbmliYmxlMSA9IHBpZWNlID4+IDggJiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwg
bmliYmxlMSkgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dl
cmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTEpKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0g
ICAgfQotICAgIGF1dG8gbmliYmxlMiA9IHBpZWNlID4+IDQgJiAweEY7Ci0gICAgaWYgKHByaW50
ZWQgfHwgbmliYmxlMikKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRv
TG93ZXJjYXNlQVNDSUlIZXhEaWdpdChuaWJibGUyKSk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChwaWVjZSAmIDB4RikpOwotfQot
Ci12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NihVUkxQYXJzZXI6OklQdjZBZGRyZXNzIGFk
ZHJlc3MpCi17Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignWycpOwotICAgIGF1dG8gY29tcHJl
c3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7Ci0gICAgZm9yIChz
aXplX3QgcGllY2UgPSAwOyBwaWVjZSA8IDg7IHBpZWNlKyspIHsKLSAgICAgICAgaWYgKGNvbXBy
ZXNzUG9pbnRlciAmJiBjb21wcmVzc1BvaW50ZXIudmFsdWUoKSA9PSBwaWVjZSkgewotICAgICAg
ICAgICAgQVNTRVJUKCFhZGRyZXNzW3BpZWNlXSk7Ci0gICAgICAgICAgICBpZiAocGllY2UpCi0g
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjo6IiwgMik7Ci0gICAgICAg
ICAgICB3aGlsZSAocGllY2UgPCA4ICYmICFhZGRyZXNzW3BpZWNlXSkKLSAgICAgICAgICAgICAg
ICBwaWVjZSsrOwotICAgICAgICAgICAgaWYgKHBpZWNlID09IDgpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc2VyaWFsaXplSVB2NlBpZWNlKGFkZHJlc3NbcGll
Y2VdKTsKLSAgICAgICAgaWYgKHBpZWNlIDwgNykKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJzonKTsKLSAgICB9Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignXScpOwotfQotCi1l
bnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yIHsKLSAgICBGYWlsdXJl
LAotICAgIE92ZXJmbG93LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
LUV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gVVJM
UGFyc2VyOjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
aXRlcmF0b3IsIGJvb2wmIGRpZFNlZVN5bnRheFZpb2xhdGlvbikKLXsKLSAgICBlbnVtIGNsYXNz
IFN0YXRlIDogdWludDhfdCB7Ci0gICAgICAgIFVua25vd25CYXNlLAotICAgICAgICBEZWNpbWFs
LAotICAgICAgICBPY3RhbE9ySGV4LAotICAgICAgICBPY3RhbCwKLSAgICAgICAgSGV4LAotICAg
IH07Ci0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93bkJhc2U7Ci0gICAgQ2hlY2tlZDx1
aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsKLSAgICBpZiAoIWl0ZXJhdG9yLmF0
RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5h
dEVuZCgpKSB7Ci0gICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7Ci0gICAg
ICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgKytpdGVy
YXRvcjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICgqaXRl
cmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93ZWQo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpVbmtub3duQmFzZToK
LSAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0b3IgPT0gJzAnKSkgewotICAgICAgICAg
ICAgICAgICsraXRlcmF0b3I7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6T2N0YWxP
ckhleDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkRlY2ltYWw7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBTdGF0ZTo6T2N0YWxPckhleDoKLSAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9
IHRydWU7Ci0gICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09ICd4JyB8fCAqaXRlcmF0b3IgPT0g
J1gnKSB7Ci0gICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpIZXg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFN0YXRlOjpEZWNpbWFsOgotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQo
Kml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBp
ZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICAgICAgICAgIHZhbHVlICo9IDEwOwotICAg
ICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElL
RUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAg
KytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpPY3Rh
bDoKLSAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAgICAg
ICAgaWYgKCppdGVyYXRvciA8ICcwJyB8fCAqaXRlcmF0b3IgPiAnNycpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7
Ci0gICAgICAgICAgICB2YWx1ZSAqPSA4OwotICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9y
IC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdF
cnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpIZXg6Ci0gICAgICAgICAgICBBU1NFUlQoZGlkU2Vl
U3ludGF4VmlvbGF0aW9uKTsKLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KCppdGVy
YXRvcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBh
cnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgICAgICB2YWx1ZSAqPSAxNjsKLSAgICAgICAg
ICAgIHZhbHVlICs9IHRvQVNDSUlIZXhWYWx1ZSgqaXRlcmF0b3IpOwotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAg
ICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQot
ICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gdmFsdWUudW5z
YWZlR2V0KCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQ2NF90IHBvdzI1NihzaXpl
X3QgZXhwb25lbnQpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhwb25lbnQgPD0gNCk7Ci0gICAg
dWludDY0X3QgdmFsdWVzWzVdID0gezEsIDI1NiwgMjU2ICogMjU2LCAyNTYgKiAyNTYgKiAyNTYs
IDI1NnVsbCAqIDI1NiAqIDI1NiAqIDI1NiB9OwotICAgIHJldHVybiB2YWx1ZXNbZXhwb25lbnRd
OwotfQotCi1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvciB7Ci0gICAgRmFp
bHVyZSwKLSAgICBOb3RJUHY0LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVjdGVkPFVS
TFBhcnNlcjo6SVB2NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvcj4gVVJMUGFy
c2VyOjpwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVG
b3JTeW50YXhWaW9sYXRpb24+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uLCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBWZWN0b3I8
RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiwgND4g
aXRlbXM7Ci0gICAgYm9vbCBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSBmYWxzZTsKLSAgICBpZiAo
IWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIHdoaWxlICghaXRl
cmF0b3IuYXRFbmQoKSkgewotICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkg
ewotICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAg
ICsraXRlcmF0b3I7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoaXRlbXMuc2l6ZSgpID49IDQpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
SVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAgIGl0ZW1zLmFwcGVuZChwYXJzZUlQ
djRQaWVjZShpdGVyYXRvciwgZGlkU2VlU3ludGF4VmlvbGF0aW9uKSk7Ci0gICAgICAgIGlmICgh
aXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICArK2l0
ZXJhdG9yOwotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwot
ICAgICAgICAgICAgZWxzZSBpZiAoKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpIHx8ICFpdGVtcy5zaXplKCkgfHwg
aXRlbXMuc2l6ZSgpID4gNCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJz
aW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7
Ci0gICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBp
ZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRl
bS5lcnJvcigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCi0gICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAg
fQotICAgIGlmIChpdGVtcy5zaXplKCkgPiAxKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaXRlbXMuc2l6ZSgpIC0gMTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoaXRlbXNbaV0u
dmFsdWUoKSA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2
NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGl0ZW1z
W2l0ZW1zLnNpemUoKSAtIDFdLnZhbHVlKCkgPj0gcG93MjU2KDUgLSBpdGVtcy5zaXplKCkpKQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7
Ci0KLSAgICBpZiAoZGlkU2VlU3ludGF4VmlvbGF0aW9uKQotICAgICAgICBzeW50YXhWaW9sYXRp
b24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgZm9yIChjb25zdCBh
dXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgaWYgKGl0ZW0udmFsdWUoKSA+IDI1NSkKLSAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0
aW9uKTsKLSAgICB9Ci0KLSAgICBpZiAoVU5MSUtFTFkoaXRlbXMuc2l6ZSgpICE9IDQpKQotICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7
Ci0KLSAgICBJUHY0QWRkcmVzcyBpcHY0ID0gaXRlbXMudGFrZUxhc3QoKS52YWx1ZSgpOwotICAg
IGZvciAoc2l6ZV90IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgaXRlbXMuc2l6ZSgpOyArK2NvdW50
ZXIpCi0gICAgICAgIGlwdjQgKz0gaXRlbXNbY291bnRlcl0udmFsdWUoKSAqIHBvdzI1NigzIC0g
Y291bnRlcik7Ci0gICAgcmV0dXJuIGlwdjQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1zdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBp
ZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3Ip
Ci17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgdWludDMyX3QgcGllY2UgPSAwOwotICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFs
c2U7Ci0gICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOwotICAgIHdoaWxlICghaXRlcmF0b3IuYXRF
bmQoKSkgewotICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgKytkaWdpdENvdW50OwotICAgICAgICBp
ZiAoIXBpZWNlICYmICppdGVyYXRvciA9PSAnMCcpIHsKLSAgICAgICAgICAgIGlmIChsZWFkaW5n
WmVyb3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAg
IGxlYWRpbmdaZXJvcyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwaWVjZSAmJiAq
aXRlcmF0b3IgPT0gJzAnKQotICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAg
ICAgcGllY2UgPSBwaWVjZSAqIDEwICsgKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICBpZiAocGll
Y2UgPiAyNTUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZh
bmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsK
LSAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgaWYgKCppdGVyYXRvciA9PSAnLicpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
aWYgKHBpZWNlICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICByZXR1cm4gcGllY2U7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Ci1zdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJ
UHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRl
cmF0b3IpCi17Ci0gICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9IDA7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IHBpZWNlID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKLSAgICAgICAgICAg
IGFkZHJlc3MgPSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZhbHVlKCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmIChpIDwgMykgewot
ICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4nKQotICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICBhZHZhbmNlPENoYXJh
Y3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAgICAg
fSBlbHNlIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgfQotICAgIEFTU0VSVChpdGVyYXRvci5hdEVuZCgpKTsKLSAgICByZXR1cm4g
YWRkcmVzczsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0ZDo6b3B0
aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCi17Ci0gICAgQVNTRVJUKCpjID09ICdb
Jyk7Ci0gICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBjOwotICAgIGFkdmFuY2UoYywgaG9zdEJl
Z2luKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
Ci0gICAgSVB2NkFkZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19Owot
ICAgIHNpemVfdCBwaWVjZVBvaW50ZXIgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBj
b21wcmVzc1BvaW50ZXI7Ci0KLSAgICBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgIGFkdmFuY2Uo
YywgaG9zdEJlZ2luKTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICgqYyAhPSAnOicpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7Ci0gICAgICAg
ICsrcGllY2VQb2ludGVyOwotICAgICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7
Ci0gICAgfQotICAgIAotICAgIHdoaWxlICghYy5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChwaWVj
ZVBvaW50ZXIgPT0gOCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IGlmICgqYyA9PSAnOicpIHsKLSAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGFkdmFuY2UoYywg
aG9zdEJlZ2luKTsKLSAgICAgICAgICAgICsrcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29t
cHJlc3NQb2ludGVyID0gcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50ZXIg
JiYgcGllY2VQb2ludGVyIDwgNikpIHsKLSAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPElQ
djRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPT0g
NSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICBhZGRyZXNz
W3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgPj4gMTY7Ci0gICAgICAgICAg
ICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpICYgMHhG
RkZGOwotICAgICAgICAgICAgICAgIGMgPSB7IH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdWludDE2X3QgdmFsdWUgPSAwOwotICAg
ICAgICBzaXplX3QgbGVuZ3RoID0gMDsKLSAgICAgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxz
ZTsKLSAgICAgICAgZm9yICg7IGxlbmd0aCA8IDQ7IGxlbmd0aCsrKSB7Ci0gICAgICAgICAgICBp
ZiAoYy5hdEVuZCgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKCFp
c0FTQ0lJSGV4RGlnaXQoKmMpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
aWYgKGlzQVNDSUlVcHBlcigqYykpCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhv
c3RCZWdpbik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJzAnICYmICFsZW5ndGgpCi0gICAgICAg
ICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUg
KiAweDEwICsgdG9BU0NJSUhleFZhbHVlKCpjKTsKLSAgICAgICAgICAgIGFkdmFuY2UoYywgaG9z
dEJlZ2luKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKFVOTElLRUxZKCh2YWx1
ZSAmJiBsZWFkaW5nWmVyb3MpIHx8ICghdmFsdWUgJiYgbGVuZ3RoID4gMSkpKQotICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAgICAgYWRkcmVzc1twaWVjZVBv
aW50ZXIrK10gPSB2YWx1ZTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDggfHwgKmMgIT0gJzonKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4p
OwotICAgIH0KLSAgICAKLSAgICBpZiAoIWMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAKLSAgICBpZiAoY29tcHJlc3NQb2ludGVyKSB7Ci0gICAgICAgIHNpemVf
dCBzd2FwcyA9IHBpZWNlUG9pbnRlciAtIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpOwotICAgICAg
ICBwaWVjZVBvaW50ZXIgPSA3OwotICAgICAgICB3aGlsZSAoc3dhcHMpCi0gICAgICAgICAgICBz
dGQ6OnN3YXAoYWRkcmVzc1twaWVjZVBvaW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2ludGVy
LnZhbHVlKCkgKyBzd2Fwcy0tIC0gMV0pOwotICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9
IDgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gcG9zc2libGVDb21wcmVzc1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShh
ZGRyZXNzKTsKLSAgICBpZiAocG9zc2libGVDb21wcmVzc1BvaW50ZXIpCi0gICAgICAgIHBvc3Np
YmxlQ29tcHJlc3NQb2ludGVyLnZhbHVlKCkrKzsKLSAgICBpZiAoVU5MSUtFTFkoY29tcHJlc3NQ
b2ludGVyICE9IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKSkKLSAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGhvc3RCZWdpbik7Ci0gICAgCi0gICAgcmV0dXJuIGFkZHJlc3M7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1VUkxQYXJzZXI6OkxDaGFyQnVmZmVyIFVSTFBhcnNl
cjo6cGVyY2VudERlY29kZShjb25zdCBMQ2hhciogaW5wdXQsIHNpemVfdCBsZW5ndGgsIGNvbnN0
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xh
dGlvblBvc2l0aW9uKQotewotICAgIExDaGFyQnVmZmVyIG91dHB1dDsKLSAgICBvdXRwdXQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07Ci0g
ICAgICAgIGlmIChieXRlICE9ICclJykKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBl
bmQoYnl0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIp
IHsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FT
Q0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICAgICAgICAgICAg
ICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlu
cHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9
Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLSAgICAKLVVSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJM
UGFyc2VyOjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkK
LXsKLSAgICBMQ2hhckJ1ZmZlciBvdXRwdXQ7Ci0gICAgb3V0cHV0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobGVuZ3RoKTsKLSAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGlucHV0W2ldOwotICAgICAgICBpZiAoYnl0
ZSAhPSAnJScpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOwotICAg
ICAgICBlbHNlIGlmIChsZW5ndGggPiAyICYmIGkgPCBsZW5ndGggLSAyKSB7Ci0gICAgICAgICAg
ICBpZiAoaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkgJiYgaXNBU0NJSUhleERpZ2l0KGlu
cHV0W2kgKyAyXSkpIHsKLSAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRv
QVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAgICAgICAgICAg
ICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG91dHB1dC51
bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0
LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6
OkxDaGFyQnVmZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWlu
LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50
YXhWaW9sYXRpb25Qb3NpdGlvbikKLXsKLSAgICBMQ2hhckJ1ZmZlciBhc2NpaTsKLSAgICBpZiAo
ZG9tYWluLmlzQWxsQVNDSUkoKSkgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gZG9tYWluLmxl
bmd0aCgpOwotICAgICAgICBpZiAoZG9tYWluLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25z
dCBMQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAg
YXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQotICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAg
ICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJz
W2ldKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25z
dCBVQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAg
IGFzY2lpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkKLSAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAg
ICAgICAgICAgICAgIGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJTG93ZXIoY2hhcmFjdGVy
c1tpXSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhc2NpaTsK
LSAgICB9Ci0gICAgCi0gICAgY29uc3Qgc2l6ZV90IG1heERvbWFpbkxlbmd0aCA9IDY0OwotICAg
IFVDaGFyIGhvc3RuYW1lQnVmZmVyW21heERvbWFpbkxlbmd0aF07Ci0gICAgVUVycm9yQ29kZSBl
cnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBV
SUROQV9JTkZPX0lOSVRJQUxJWkVSOwotICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRl
ZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIo
KSwgU3RyaW5nVmlldyhkb21haW4pLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBkb21haW4ubGVu
Z3RoKCksIGhvc3RuYW1lQnVmZmVyLCBtYXhEb21haW5MZW5ndGgsICZwcm9jZXNzaW5nRGV0YWls
cywgJmVycm9yKTsKLSAgICBBU1NFUlQobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA8PSBzdGF0aWNf
Y2FzdDxpbnQzMl90PihtYXhEb21haW5MZW5ndGgpKTsKLQotICAgIGlmIChVX1NVQ0NFU1MoZXJy
b3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKLSAgICAgICAgZm9yIChpbnQzMl90
IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsgKytpKSB7Ci0gICAgICAgICAgICBB
U1NFUlQoaXNBU0NJSShob3N0bmFtZUJ1ZmZlcltpXSkpOwotICAgICAgICAgICAgQVNTRVJUKCFp
c0FTQ0lJVXBwZXIoaG9zdG5hbWVCdWZmZXJbaV0pKTsKLSAgICAgICAgfQotICAgICAgICBhc2Np
aS5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAg
ICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcoYXNjaWkuZGF0YSgpLCBhc2NpaS5zaXplKCkpKQot
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9z
aXRpb24pOwotICAgICAgICByZXR1cm4gYXNjaWk7Ci0gICAgfQotICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNv
bnN0IFVSTFBhcnNlcjo6TENoYXJCdWZmZXImIGFzY2lpRG9tYWluKQotewotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXNjaWlEb21haW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGlz
Rm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbltpXSkpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCppdGVyYXRvciA9
PSAnOicpOwotICAgIGF1dG8gY29sb25JdGVyYXRvciA9IGl0ZXJhdG9yOwotICAgIGFkdmFuY2Uo
aXRlcmF0b3IsIGNvbG9uSXRlcmF0b3IpOwotICAgIHVpbnQzMl90IHBvcnQgPSAwOwotICAgIGlm
IChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICB1bnNpZ25lZCBwb3J0TGVu
Z3RoID0gY3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7
Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIHNpemVfdCBkaWdpdENvdW50ID0gMDsKLSAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNl
OwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBp
ZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkgewotICAgICAgICAg
ICAgaWYgKCppdGVyYXRvciA9PSAnMCcgJiYgIWRpZ2l0Q291bnQpCi0gICAgICAgICAgICAgICAg
bGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgICsrZGlnaXRDb3VudDsKLSAgICAgICAg
ICAgIHBvcnQgPSBwb3J0ICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7Ci0gICAgICAgICAgICBpZiAo
cG9ydCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIGlmIChwb3J0ICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgIAotICAgIGlmICghcG9ydCAmJiBkaWdp
dENvdW50ID4gMSkKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotCi0g
ICAgQVNTRVJUKHBvcnQgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKLSAgICBpZiAo
VU5MSUtFTFkoZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwYXJzZWREYXRhVmlldygwLCBtX3VybC5t
X3NjaGVtZUVuZCkpID09IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSkpCi0gICAgICAgIHN5
bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICBlbHNlIHsKLSAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICBBU1NFUlQocG9ydCA8PSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOwotICAgICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVm
ZmVyPHVpbnQxNl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOwotICAgIH0KLQotICAg
IHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwu
bV9ob3N0RW5kOwotICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0
TGVuZ3RoKTsKLSAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwotICAgIHJldHVy
biB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQ
YXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
aXRlcmF0b3IpCi17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICgqaXRlcmF0b3IgPT0gJ1snKSB7Ci0gICAgICAgIGF1dG8gaXB2NkVuZCA9IGl0ZXJh
dG9yOwotICAgICAgICB3aGlsZSAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCAhPSAnXScp
Ci0gICAgICAgICAgICArK2lwdjZFbmQ7Ci0gICAgICAgIGlmIChpcHY2RW5kLmF0RW5kKCkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBwYXJz
ZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGl0ZXJhdG9yLCBpcHY2
RW5kKSkpIHsKLSAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjYoYWRkcmVzcy52YWx1ZSgpKTsKLSAg
ICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgYWR2YW5j
ZShpcHY2RW5kKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2
NkVuZCA9PSAnOicpIHsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3Vy
cmVudFBvc2l0aW9uKGlwdjZFbmQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VQ
b3J0KGlwdjZFbmQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXB2NkVuZCk7Ci0gICAgICAgICAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihp
cHY2RW5kKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdXJsSXNTcGVjaWFsKSB7Ci0gICAgICAg
IGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRm9yYmlkZGVuSG9zdENv
ZGVQb2ludCgqaXRlcmF0b3IpICYmICppdGVyYXRvciAhPSAnJScpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVF
bmNvZGVTZXQ+KGl0ZXJhdG9yKTsKLSAgICAgICAgfQotICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQo
KSkgewotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3Ip
OwotICAgIH0KLSAgICAKLSAgICBpZiAoTElLRUxZKCFtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJ
SSkpIHsKLSAgICAgICAgYXV0byBob3N0SXRlcmF0b3IgPSBpdGVyYXRvcjsKLSAgICAgICAgZm9y
ICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBpZiAoaXNU
YWJPck5ld2xpbmUoKml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGFkZHJlc3Mg
PSBwYXJzZUlQdjRIb3N0KGhvc3RJdGVyYXRvciwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4oaG9zdEl0ZXJhdG9yLCBpdGVyYXRvcikpOwotICAgICAgICBpZiAoYWRkcmVzcykgewot
ICAgICAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOwotICAgICAgICAgICAg
bV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAg
IGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZm9yICg7IGhvc3RJdGVyYXRvciAhPSBpdGVy
YXRvcjsgKytob3N0SXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9y
TmV3bGluZSgqaG9zdEl0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oaG9zdEl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoKmhvc3RJdGVyYXRvcikp
KQotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0SXRlcmF0b3IpOwotICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmhvc3RJdGVyYXRvcikpOwot
ICAgICAgICB9Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVy
YXRvcik7Ci0gICAgICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gcGFyc2VQb3J0KGhvc3RJdGVyYXRvcik7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRMZW5n
dGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAg
ICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICAKLSAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGl0ZXJhdG9yOwotICAg
IAotICAgIExDaGFyQnVmZmVyIHV0ZjhFbmNvZGVkOwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRF
bmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUo
Kml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCppdGVyYXRvciA9
PSAnOicpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJ
KCppdGVyYXRvcikpKQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0K
LSAgICAgICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUigqaXRlcmF0b3IpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKLSAg
ICAgICAgaW50MzJfdCBvZmZzZXQgPSAwOwotICAgICAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZl
ciwgb2Zmc2V0LCAqaXRlcmF0b3IpOwotICAgICAgICB1dGY4RW5jb2RlZC5hcHBlbmQoYnVmZmVy
LCBvZmZzZXQpOwotICAgIH0KLSAgICBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlZCA9IHBlcmNl
bnREZWNvZGUodXRmOEVuY29kZWQuZGF0YSgpLCB1dGY4RW5jb2RlZC5zaXplKCksIGhvc3RCZWdp
bik7Ci0gICAgU3RyaW5nIGRvbWFpbiA9IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQu
ZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotICAgIGlmIChkb21haW4uaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcocGVy
Y2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpKQotICAgICAgICBzeW50
YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICBhdXRvIGFzY2lpRG9tYWluID0gZG9tYWluVG9B
U0NJSSgqZG9tYWluLmltcGwoKSwgaG9zdEJlZ2luKTsKLSAgICBpZiAoIWFzY2lpRG9tYWluIHx8
IGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlEb21haW4udmFsdWUoKSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW5WYWx1ZSA9IGFzY2lp
RG9tYWluLnZhbHVlKCk7Ci0gICAgY29uc3QgTENoYXIqIGFzY2lpRG9tYWluQ2hhcmFjdGVycyA9
IGFzY2lpRG9tYWluVmFsdWUuZGF0YSgpOwotCi0gICAgYXV0byBhZGRyZXNzID0gcGFyc2VJUHY0
SG9zdChob3N0QmVnaW4sIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPihhc2NpaURvbWFpblZhbHVl
LmJlZ2luKCksIGFzY2lpRG9tYWluVmFsdWUuZW5kKCkpKTsKLSAgICBpZiAoYWRkcmVzcykgewot
ICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7Ci0gICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmIChpdGVyYXRv
ci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChp
dGVyYXRvcik7Ci0gICAgfQotICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdF
cnJvcjo6RmFpbHVyZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcihhc2NpaURvbWFpbkNoYXJhY3RlcnMsIGFzY2lpRG9tYWluVmFsdWUuc2l6ZSgpKTsK
LSAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgIGlm
ICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7
Ci0gICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlu
cHV0KQotewotICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7Ci0g
ICAgaWYgKHV0ZjguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
YXV0byBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkp
OwotfQotCi0vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsZW5jb2Rl
ZC1wYXJzZXIKLWF1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcg
aW5wdXQpIC0+IFVSTEVuY29kZWRGb3JtCi17Ci0gICAgVVJMRW5jb2RlZEZvcm0gb3V0cHV0Owot
ICAgIGZvciAoU3RyaW5nVmlldyBieXRlcyA6IGlucHV0LnNwbGl0KCcmJykpIHsKLSAgICAgICAg
YXV0byBlcXVhbEluZGV4ID0gYnl0ZXMuZmluZCgnPScpOwotICAgICAgICBpZiAoZXF1YWxJbmRl
eCA9PSBub3RGb3VuZCkgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShi
eXRlcy50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFt
ZSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0eVN0
cmluZygpIH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9y
bVVSTERlY29kZShieXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBs
YWNlKCcrJywgMHgyMCkpOwotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGZvcm1VUkxEZWNvZGUo
Ynl0ZXMuc3Vic3RyaW5nKGVxdWFsSW5kZXggKyAxKS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAw
eDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSkKLSAgICAgICAgICAgICAgICBv
dXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52YWx1ZSgpIH0pOwotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiBvdXRwdXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHNlcmlhbGl6ZVVS
TEVuY29kZWRGb3JtKGNvbnN0IFN0cmluZyYgaW5wdXQsIFZlY3RvcjxMQ2hhcj4mIG91dHB1dCkK
LXsKLSAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOwotICAgIGNv
bnN0IGNoYXIqIGRhdGEgPSB1dGY4LmRhdGEoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHV0ZjgubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBjb25zdCBjaGFyIGJ5dGUgPSBkYXRhW2ld
OwotICAgICAgICBpZiAoYnl0ZSA9PSAweDIwKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgw
eDJCKTsKLSAgICAgICAgZWxzZSBpZiAoYnl0ZSA9PSAweDJBCi0gICAgICAgICAgICB8fCBieXRl
ID09IDB4MkQKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgyRQotICAgICAgICAgICAgfHwgKGJ5
dGUgPj0gMHgzMCAmJiBieXRlIDw9IDB4MzkpCi0gICAgICAgICAgICB8fCAoYnl0ZSA+PSAweDQx
ICYmIGJ5dGUgPD0gMHg1QSkKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHg1RgotICAgICAgICAg
ICAgfHwgKGJ5dGUgPj0gMHg2MSAmJiBieXRlIDw9IDB4N0EpKSAvLyBGSVhNRTogUHV0IHRoZXNl
IGluIHRoZSBjaGFyYWN0ZXJDbGFzc1RhYmxlIHRvIGF2b2lkIGJyYW5jaGVzLgotICAgICAgICAg
ICAgb3V0cHV0LmFwcGVuZChieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcGVyY2Vu
dEVuY29kZUJ5dGUoYnl0ZSwgb3V0cHV0KTsKLSAgICB9Ci19Ci0gICAgCi1TdHJpbmcgVVJMUGFy
c2VyOjpzZXJpYWxpemUoY29uc3QgVVJMRW5jb2RlZEZvcm0mIHR1cGxlcykKLXsKLSAgICBpZiAo
dHVwbGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3RvcjxMQ2hh
cj4gb3V0cHV0OwotICAgIGZvciAoYXV0byYgdHVwbGUgOiB0dXBsZXMpIHsKLSAgICAgICAgaWYg
KCFvdXRwdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgnJicpOwotICAg
ICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS5rZXksIG91dHB1dCk7Ci0gICAgICAg
IG91dHB1dC5hcHBlbmQoJz0nKTsKLSAgICAgICAgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0odHVw
bGUudmFsdWUsIG91dHB1dCk7Ci0gICAgfQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1v
dmUob3V0cHV0KSk7Ci19Ci0KLWNvbnN0IFVJRE5BJiBVUkxQYXJzZXI6OmludGVybmF0aW9uYWxE
b21haW5OYW1lVHJhbnNjb2RlcigpCi17Ci0gICAgc3RhdGljIFVJRE5BKiBlbmNvZGVyOwotICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10gewotICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAg
ICAgICAvLyBXYXJuaW5nOiBQbGVhc2UgY29udGFjdCBhIFdlYktpdEdUSysgZGV2ZWxvcGVyIGlm
IGNoYW5naW5nIHRoZXNlIGZsYWdzLgotICAgICAgICAvLyBUaGV5IHNob3VsZCBiZSBzeW5jZWQg
d2l0aCBlcGh5X3VyaV9kZWNvZGUoKSBpbiBlcGh5LXVyaS1oZWxwZXJzLmMuCi0gICAgICAgIGVu
Y29kZXIgPSB1aWRuYV9vcGVuVVRTNDYoVUlETkFfQ0hFQ0tfQklESSB8IFVJRE5BX0NIRUNLX0NP
TlRFWFRKIHwgVUlETkFfTk9OVFJBTlNJVElPTkFMX1RPX1VOSUNPREUgfCBVSUROQV9OT05UUkFO
U0lUSU9OQUxfVE9fQVNDSUksICZlcnJvcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFVfU1VD
Q0VTUyhlcnJvcikpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmNvZGVyKTsKLSAgICB9KTsK
LSAgICByZXR1cm4gKmVuY29kZXI7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVh
bChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiJWQg
JWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVk
ICVkICVkICVkICVkICVkICVzIiwKLSAgICAgICAgYS5tX2lzVmFsaWQsCi0gICAgICAgIGEubV9j
YW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKLSAg
ICAgICAgYS5tX3NjaGVtZUVuZCwKLSAgICAgICAgYS5tX3VzZXJTdGFydCwKLSAgICAgICAgYS5t
X3VzZXJFbmQsCi0gICAgICAgIGEubV9wYXNzd29yZEVuZCwKLSAgICAgICAgYS5tX2hvc3RFbmQs
Ci0gICAgICAgIGEubV9ob3N0RW5kICsgYS5tX3BvcnRMZW5ndGgsCi0gICAgICAgIGEubV9wYXRo
QWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGEubV9wYXRoRW5kLAotICAgICAgICBhLm1fcXVlcnlF
bmQsCi0gICAgICAgIGEubV9zdHJpbmcudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgYi5tX2lzVmFs
aWQsCi0gICAgICAgIGIubV9jYW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBiLm1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSwKLSAgICAgICAgYi5tX3NjaGVtZUVuZCwKLSAgICAgICAgYi5tX3VzZXJT
dGFydCwKLSAgICAgICAgYi5tX3VzZXJFbmQsCi0gICAgICAgIGIubV9wYXNzd29yZEVuZCwKLSAg
ICAgICAgYi5tX2hvc3RFbmQsCi0gICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5ndGgs
Ci0gICAgICAgIGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGIubV9wYXRoRW5kLAot
ICAgICAgICBiLm1fcXVlcnlFbmQsCi0gICAgICAgIGIubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7
Ci0KLSAgICByZXR1cm4gYS5tX3N0cmluZyA9PSBiLm1fc3RyaW5nCi0gICAgICAgICYmIGEubV9p
c1ZhbGlkID09IGIubV9pc1ZhbGlkCi0gICAgICAgICYmIGEubV9jYW5ub3RCZUFCYXNlVVJMID09
IGIubV9jYW5ub3RCZUFCYXNlVVJMCi0gICAgICAgICYmIGEubV9wcm90b2NvbElzSW5IVFRQRmFt
aWx5ID09IGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5Ci0gICAgICAgICYmIGEubV9zY2hlbWVF
bmQgPT0gYi5tX3NjaGVtZUVuZAotICAgICAgICAmJiBhLm1fdXNlclN0YXJ0ID09IGIubV91c2Vy
U3RhcnQKLSAgICAgICAgJiYgYS5tX3VzZXJFbmQgPT0gYi5tX3VzZXJFbmQKLSAgICAgICAgJiYg
YS5tX3Bhc3N3b3JkRW5kID09IGIubV9wYXNzd29yZEVuZAotICAgICAgICAmJiBhLm1faG9zdEVu
ZCA9PSBiLm1faG9zdEVuZAotICAgICAgICAmJiBhLm1fcG9ydExlbmd0aCA9PSBiLm1fcG9ydExl
bmd0aAotICAgICAgICAmJiBhLm1fcGF0aEFmdGVyTGFzdFNsYXNoID09IGIubV9wYXRoQWZ0ZXJM
YXN0U2xhc2gKLSAgICAgICAgJiYgYS5tX3BhdGhFbmQgPT0gYi5tX3BhdGhFbmQKLSAgICAgICAg
JiYgYS5tX3F1ZXJ5RW5kID09IGIubV9xdWVyeUVuZDsKLX0KLQotYm9vbCBVUkxQYXJzZXI6Omlu
dGVybmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gdXJs
Lm1fc2NoZW1lRW5kIDw9IHVybC5tX3VzZXJTdGFydAotICAgICAgICAmJiB1cmwubV91c2VyU3Rh
cnQgPD0gdXJsLm1fdXNlckVuZAotICAgICAgICAmJiB1cmwubV91c2VyRW5kIDw9IHVybC5tX3Bh
c3N3b3JkRW5kCi0gICAgICAgICYmIHVybC5tX3Bhc3N3b3JkRW5kIDw9IHVybC5tX2hvc3RFbmQK
LSAgICAgICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGggPD0gdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoCi0gICAgICAgICYmIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSB1
cmwubV9wYXRoRW5kCi0gICAgICAgICYmIHVybC5tX3BhdGhFbmQgPD0gdXJsLm1fcXVlcnlFbmQK
LSAgICAgICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1fc3RyaW5nLmxlbmd0aCgpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjViZWIwMjRjOTgwMzIyYTZlMDUzOWE1YmZl
ODQ3YWU5MTBjZmFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KLQotc3RydWN0IFVJRE5BOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQb2ludEl0ZXJhdG9yOwotCi1jbGFz
cyBVUkxQYXJzZXIgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFVSTFBhcnNlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVs
bHB0cik7Ci0gICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpbnRlcm5hbFZhbHVlc0NvbnNpc3Rl
bnQoY29uc3QgVVJMJik7Ci0gICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBTdHJpbmc+PiBVUkxFbmNvZGVkRm9ybTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgVVJMRW5jb2RlZEZvcm0gcGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KTsKLSAg
ICBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYpOwotCi0gICAg
c3RhdGljIGNvbnN0IFVJRE5BJiBpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsK
LSAgICBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIpOwotCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2No
ZW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1h
eWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLQotcHJpdmF0ZToK
LSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bChTdHJpbmdWaWV3KTsKLSAgICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVs
dFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKLQotICAgIFVSTCBtX3VybDsKLSAgICBWZWN0
b3I8TENoYXI+IG1fYXNjaWlCdWZmZXI7Ci0gICAgYm9vbCBtX3VybElzU3BlY2lhbCB7IGZhbHNl
IH07Ci0gICAgYm9vbCBtX3VybElzRmlsZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hvc3RIYXNQ
ZXJjZW50T3JOb25BU0NJSSB7IGZhbHNlIH07Ci0gICAgU3RyaW5nIG1faW5wdXRTdHJpbmc7Ci0g
ICAgY29uc3Qgdm9pZCogbV9pbnB1dEJlZ2luIHsgbnVsbHB0ciB9OwotCi0gICAgYm9vbCBtX2Rp
ZFNlZVN5bnRheFZpb2xhdGlvbiB7IGZhbHNlIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgZGVmYXVsdElubGluZUJ1ZmZlclNpemUgPSAyMDQ4OwotICAgIHVzaW5nIExDaGFyQnVmZmVy
ID0gVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT47Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUq
LCBjb25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTFRleHRFbmNvZGlu
ZyopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2VBdXRo
b3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gYm9vbCBwYXJzZVBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLQot
ICAgIHZvaWQgZmFpbHVyZSgpOwotICAgIGVudW0gY2xhc3MgUmVwb3J0U3ludGF4VmlvbGF0aW9u
IHsgTm8sIFllcyB9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9y
dFN5bnRheFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9s
YXRpb246Olllcz4KLSAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGl0ZXJhdG9yKSB7IGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgcmVwb3J0U3ludGF4Vmlv
bGF0aW9uPihpdGVyYXRvciwgaXRlcmF0b3IpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uID0gUmVwb3J0U3ludGF4VmlvbGF0aW9u
OjpZZXM+Ci0gICAgdm9pZCBhZHZhbmNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
JiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3lu
dGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGJvb2wgdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHN5
bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNQZXJjZW50RW5jb2Rl
ZERvdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gYm9vbCBpc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlz
RG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgc2hvdWxkQ29weUZpbGVV
UkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGJvb2wgY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBVQ2hhcjMyKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4pOwotICAgIGJvb2wgaXNMb2NhbGhvc3QoU3RyaW5nVmlldyk7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb25zdW1lU2luZ2xlRG90UGF0aFNl
Z21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc2l6ZV90IGN1cnJlbnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+
IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlKTsKLSAg
ICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lk
IHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYp
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8TENo
YXJCdWZmZXI+IGRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYsIGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBMQ2hhckJ1ZmZlciBwZXJjZW50
RGVjb2RlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgc3Rh
dGljIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QpOwotICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlu
cHV0KTsKLSAgICBzdGF0aWMgYm9vbCBoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IExD
aGFyQnVmZmVyJik7Ci0gICAgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90KTsKLSAgICB2
b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoVUNoYXIzMik7Ci0gICAgdm9pZCBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IHNpemUpIHsgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFyYWN0ZXJzKSwgc2l6ZSk7IH0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGVuY29kZU5vblVURjhR
dWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYs
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB2b2lkIGNvcHlBU0NJSVN0
cmluZ1VudGlsKGNvbnN0IFN0cmluZyYsIHNpemVfdCBsZW5ndGgpOwotICAgIGJvb2wgY29weUJh
c2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJik7Ci0gICAgU3RyaW5nVmlldyBwYXJzZWRE
YXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpOwotICAgIFVDaGFyIHBhcnNlZERh
dGFWaWV3KHNpemVfdCBwb3NpdGlvbik7Ci0KLSAgICB1c2luZyBJUHY0QWRkcmVzcyA9IHVpbnQz
Ml90OwotICAgIHZvaWQgc2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyk7Ci0gICAgZW51bSBjbGFz
cyBJUHY0UGFyc2luZ0Vycm9yOwotICAgIGVudW0gY2xhc3MgSVB2NFBpZWNlUGFyc2luZ0Vycm9y
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24s
IHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPElQdjRBZGRyZXNzLCBJUHY0UGFyc2lu
Z0Vycm9yPiBwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGVGb3JTeW50YXhWaW9sYXRpb24+JiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4p
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPHVpbnQzMl90
LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gcGFyc2VJUHY0UGllY2UoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBib29sJiBzeW50YXhWaW9sYXRpb24pOwotICAg
IHVzaW5nIElQdjZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFy
c2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJ
UHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRk
cmVzcz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4pOwotICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsK
LSAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOwotCi0gICAgZW51bSBjbGFzcyBV
UkxQYXJ0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29weVVS
TFBhcnRzVW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyomKTsKLSAgICBzdGF0
aWMgc2l6ZV90IHVybExlbmd0aFVudGlsUGFydChjb25zdCBVUkwmLCBVUkxQYXJ0KTsKLSAgICB2
b2lkIHBvcFBhdGgoKTsKLSAgICBib29sIHNob3VsZFBvcFBhdGgodW5zaWduZWQpOwotfTsKLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAppbmRleCA0MTgxZWMxM2JmZjhmNGUyYWE4
Mjk1ZTFiZmI3ZWZlNTllZDA4MWUzLi5jMzQ0ODQ4NmVlN2MyYWVhY2FhZWJlYmY1YTBlYjcxODNk
YzZlZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzYsNyArMzYsNiBA
QCBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25O
YW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYQogU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25G
b3JVc2VyQWdlbnRTdHJpbmcoKTsKIFN0cmluZyB1c2VyQWdlbnRCdW5kbGVWZXJzaW9uKCk7CiAj
ZWxzZQotY2xhc3MgVVJMOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdl
bnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBlbXB0eVN0cmluZygpLCBjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCkpOwogV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKaW5kZXggMjMyZTVjZTU3ZGIwNWRi
MzhiNDlkZDljMDIxYTFiYzk5YzAzODVjYi4uNDliNTg5MjBhN2FlYjc3MzJkNjU3MzI3NTU5MzQ3
N2ExODZiMGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50
UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3Mu
Y3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiVXNlckFnZW50UXVpcmtzLmgiCiAKICNp
bmNsdWRlICJQdWJsaWNTdWZmaXguaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnRRdWlya3MuaAppbmRleCBiZjEwY2UyMzJkOTFkNDMxYmNiNmQ0YTcxYTUxZGQ0ZGRl
OGZiODhhLi5kYzc3ZDRlODUwZWY5MDlkNGIwMDU2ZDdjOWE3ZTFhZDQ1ZmRkOGVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaApAQCAtMzAsOCArMzAsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgVXNlckFnZW50UXVp
cmtzIHsKIHB1YmxpYzoKICAgICBlbnVtIFVzZXJBZ2VudFF1aXJrIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzNiNDNiYzdhMDdiODBhZTRiYWEzNWZkYjczMzVhYzNiYTc2NDQxNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9DRlVSTEV4dHJhcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0K
LSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCi17Ci0g
ICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2Vk
IHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKLSAg
ICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBp
cyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgLy8g
Y291bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVu
dCBlbmNvZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjawotICAgIC8vIG9udG8g
dXNpbmcgSVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCi0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgsIGJhc2VVUkwsIHRydWUpKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0
ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRp
bjEsIGJhc2VVUkwsIHRydWUpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIGdldFVS
TEJ5dGVzKENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQotewotICAgIENGSW5k
ZXggYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7Ci0gICAgcmVzdWx0LnJl
c2l6ZShieXRlc0xlbmd0aCk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0
ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVu
Z3RoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRl
c0xlbmd0aCk7Ci19Ci0KLXZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiBy
ZXN1bHQpCi17Ci0gICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAw
LCAwKTsKLSAgICBjaGFyKiBieXRlczsKLSAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRp
YWxpemVkKGJ5dGVzTGVuZ3RoLCBieXRlcyk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENG
VVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xl
bmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0
ZXNMZW5ndGgpOwotfQotCi1ib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBj
b25zdCBVUkwmIHVybCkKLXsKLSAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSk7Ci0KLSAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCi0g
ICAgICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVS
TCB9KTsKLQotICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXMoY2ZVUkws
IGJ5dGVzKTsKLSAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5z
aXplKCkpIH07Ci0KLSAgICBpZiAoIXVybC5oYXNQYXRoKCkpCi0gICAgICAgIHJldHVybiBTdHJp
bmdWaWV3IHsgdXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7Ci0KLSAgICBhdXRvIHVybFdp
dGhvdXRQYXRoID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwu
cGF0aFN0YXJ0KCkgKyAxKTsKLSAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxX
aXRob3V0UGF0aCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0NGVVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJh
cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmQ1NzA2NjBkYTZhYTk4ZDEyMjg2
NDA3OGZlZDdkZDZlNzc5ZWY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDRlVSTEV4dHJh
c19oCi0jZGVmaW5lIENGVVJMRXh0cmFzX2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkw7Ci10eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+
IFVSTENoYXJCdWZmZXI7Ci0KLVdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFJlZj4gY3Jl
YXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VVUkwg
PSAwKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJC
dWZmZXImKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIENTdHJp
bmcmKTsKLQotYm9vbCBpc0NGVVJMU2FtZU9yaWdpbihDRlVSTFJlZiwgY29uc3QgVVJMJik7Ci0K
LX0KLQotI2VuZGlmIC8vIENGVVJMRXh0cmFzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1VSTENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENG
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI2NDFlZDJkOWJlYzEzZDZhMTc3
OGY2MzY2MmY5YjY2N2E5NzFjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJV
UkwuaCIKLQotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgi
Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+Ci0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6OlVSTChD
RlVSTFJlZiB1cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBp
Z25vcmUgYmFzZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5
dGVzKHVybCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgp
KTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotI2lmICFVU0UoRk9VTkRBVElP
TikKLVJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17Ci0gICAg
Ly8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/Ci0gICAg
Ly8gQ3VycmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0
ZXJzIGluIHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAotICAgIC8vIHdoaWNoIGlzIGNsZWFybHkg
d3JvbmcuCi0gICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0gICAgY29weVRvQnVmZmVyKGJ1ZmZl
cik7Ci0gICAgYXV0byBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKLQotICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYg
IWlzQ0ZVUkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgcmV0dXJuIGNmVVJMOwotfQotI2VuZGlmCi0KLVN0cmluZyBVUkw6OmZp
bGVTeXN0ZW1QYXRoKCkgY29uc3QKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0g
Y3JlYXRlQ0ZVUkwoKTsKLSAgICBpZiAoIWNmVVJMKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0KLSNpZiBQTEFURk9STShXSU4pCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NG
VVJMV2luZG93c1BhdGhTdHlsZTsKLSNlbHNlCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxl
ID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7Ci0jZW5kaWYKLSAgICByZXR1cm4gYWRvcHRDRihDRlVS
TENvcHlGaWxlU3lzdGVtUGF0aChjZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7Ci19Ci0K
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IDIxMDZjMmJhOWI4NmFjMDIwYjQwNzAx
MGU5MTMyMzliZDQyNTkwZWYuLmE0ZTc2MmU3ODYzOWRkNmM2M2NjMjZlODY5NzA5YTU5N2NhNDEw
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXJfaAotI2RlZmluZSBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGVudEZpbHRlci5oIgog
I2luY2x1ZGUgPG9iamMvTlNPYmpDUnVudGltZS5oPgpAQCAtMzksOCArMzgsNiBAQCBPQkpDX0NM
QVNTIE5TRGF0YTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNz
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ29u
dGVudEZpbHRlciB7CiAgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcj4oKTsKIApAQCAtNjksNSArNjYsMyBAQCBjbGFzcyBOZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCBlOTQ0MWZmY2RlYjg2ZTYy
OGJiZTU0ZjdjOTY1ZDg2NjgwNjExNDU1Li5kZTFkYWRiYjkzYmRlMmFmZmIwMmQzYjY2OWJiYmIw
YTdkYWFiYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMzQsMTAgKzM0LDEw
IEBACiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgi
CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTkVGaWx0
ZXJTb3VyY2VTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogI2ltcG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIFNPRlRf
TElOS19GUkFNRVdPUktfT1BUSU9OQUwoTmV0d29ya0V4dGVuc2lvbik7CkBAIC0xMTgsNyArMTE4
LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY28KIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RV
UkwgeyBVUkwoKSwgbW9kaWZpZWRSZXF1ZXN0VVJMU3RyaW5nLmdldCgpIH07CiAgICAgaWYgKCFt
b2RpZmllZFJlcXVlc3RVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVy
aW5nLCAiTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9k
aWZpZWQgVVJMIHN0cmluZyAlQCB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVz
dFVSTFN0cmluZy5nZXQoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQgVVJMIHN0
cmluZyAlQCB0byBhICBVUkwuXG4iLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcuZ2V0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1NTTEtleUdlbmVyYXRvckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9TU0xLZXlHZW5lcmF0b3JHTGliLmNwcAppbmRleCA5NDUwNmY1N2E0NzVlMWVjNTY3
ZmI2OGZkY2FkYjRkMjBjMjJmMmJmLi40MWY0OGQ3MTYxZTdmMjk2NWMxNTU4NWZmMDA4ZmMyOTMw
OTJjMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NTTEtleUdl
bmVyYXRvckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU1NMS2V5
R2VuZXJhdG9yR0xpYi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
IAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdl
bnRHTGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5j
cHAKaW5kZXggMTYyMWE4ODVlODcwNGNhODQ4MzIwZjYyNTFjMDZmOTIxYjE4OWQ4OC4uYTNiYTRl
NDZkYzI4Mzk1ZDg1MmNlOGZiNjhjNzBiNTc5OWUyNzcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50LmgiCiAKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJVc2VyQWdlbnRRdWlya3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCiAjaWYgT1MoVU5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuY3BwCmluZGV4IGIwY2E0M2Q1NWM0
NWNiNTBkNzMwZjg5MmUxN2Q4MDg2OWNjZDQ5NjEuLmQzNWViMTZiYTUyYWQwM2YwN2E0ZWZlZDA0
MWJmYmU4ODQwMzM2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5ncy5oIgogCisjaW5jbHVk
ZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNDk3ZDJjNzlmZDJj
YjA4ZmMzZDBjY2JmOGY4ZWEyMjczYzQzMTAxYy4uYWU4YTkzZjRmMWE0ODhjZWFiOGIzMWI0ODVj
YmFhOGIyYjg1YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTY1LDYgKzY1LDEyIEBAIHR5cGVkZWYgdW5zaWduZWQg
Y2hhciBVSW50ODsKICNlbmRpZgogI2VuZGlmCiAKKy8vIFgxMSBoZWFkZXIgZGVmaW5lcyAiTm9u
ZSIgYXMgY29uc3RhbnQgaW4gbWFjcm8gYW5kIGJyZWFrZXMgdGhlIFBhaW50SW52YWxpZGF0aW9u
UmVhc29ucyBlbnVtJ3MgIk5vbmUiLgorLy8gQXMgYSB3b3JrYXJvdW5kLCB3ZSBleHBsaWNpdGx5
IHVuZGVmIFgxMSdzIE5vbmUgaGVyZS4KKyNpZiBkZWZpbmVkKE5vbmUpCisjdW5kZWYgTm9uZQor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShXSU5HREkpCkBAIC04NSw3
ICs5MSw2IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIGNsYXNzIElt
YWdlQnVmZmVyOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFJvdW5kZWRSZWN0OwotY2xhc3MgVVJM
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBQYXRoOwogY2xhc3MgVGV4dFJ1bjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBkNmIwYzY1
ZmJmNTdkOWM3ZGVhMTk2MDgwMjliYzJhNjAxNDU3OGIxLi5iYzM4OTE0NDg5ZTMyZDMyOGE1NGQ0
MjFlNTdkYjdmMzE1OGYzM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFVTRShDRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDVmMjIwYmU0ZWYwNmYzZmMx
ZTc5MzQ5ZmRlYjMzMGVkOTFlNzRhYzkuLjFlMzBmMzQ2OWU0YWI3OTg0NDE0YzJiZmQ4ZmFlNjRl
MThhMDBhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAt
NjgsNyArNjgsNiBAQCBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJM
Owogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4g
aW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZh
bmNlcyBhbmltYXRpb24gZnJhbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VPYnNlcnZlci5oCmluZGV4IDgyNjljYzRlZGMzN2NlNWY0ZGMxNjVmYmQ0ZDYx
YzM2OThhNDI3ZmUuLmYyODMyM2MyNTViMWQwYTAxNDM1MWM5MzQyNzNkYTAxYzVhZjg1YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgK
QEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgSW1hZ2VP
YnNlcnZlcl9oCi0jZGVmaW5lIEltYWdlT2JzZXJ2ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJJbWFnZVR5cGVzLmgiCiAKQEAgLTMyLDcgKzMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbWFnZTsKIGNsYXNzIEludFJlY3Q7Ci1jbGFzcyBVUkw7CiAKIC8vIEludGVy
ZmFjZSBmb3Igbm90aWZpY2F0aW9uIGFib3V0IGNoYW5nZXMgdG8gYW4gaW1hZ2UsIGluY2x1ZGlu
ZyBkZWNvZGluZywKIC8vIGRyYXdpbmcsIGFuZCBhbmltYXRpbmcuCkBAIC01NCw1ICs1MiwzIEBA
IGNsYXNzIEltYWdlT2JzZXJ2ZXIgewogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA0ODhmOTQ1ZmRj
M2QwMDBkYmZhYTMzN2Q0NjVlNWZiMmVmYWFiNDM4Li5mZDRhMWZlMmRkODdiZjljMDhlY2FiYjEw
ZjNlZjM3NDI5NGIxODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJJbWFnZURl
Y29kZXIuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNp
bmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAppbmRleCAwOTAxMDEyMjk5ZWJjNDFjMmNhODRlMTllOTUxZTAyNDc4ODY5
NThlLi45ODBkNjBlZTUwZDUwYmMyNmEwMDMwNWUwM2U1MWI0ZDQ0Y2M5ZTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM4LDcgKzM4
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIElt
YWdlU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiB7CiAg
ICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggNDYyYTcyNjYwNTg0NzEyM2U4N2I3NDk1NWY0
ZjE2OGZmODJmYTZmMC4uMDYwMTQ2ZDNhYzcxMGZlMWM0ZDc4YTMwODEwNjkzYmJmYThiMTFjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBA
IC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0
ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggNTkxNWE3NzMxNmVkOGEwMzBhNGU2ZDNhZDc0MTA0
YzE3OGNhZDlkMi4uM2UxZDI3MGU2NGU3ODVkYWE3MTk1NWRkNGFhZmU0MDMyZjllYjY1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
SW5saW5lcy5oPgpAQCAtNDksNiArNDgsNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQ
cmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGU4
MjQ0OWE1MGZjYzhlOWI4MTdmYzc3ZTJhYTNhMDE5NWY2YTEyMjYuLjFkYmM1Y2Q4OGE3YTA4YTUw
YzM5OTlhMDAyZWU0N2I3NWYyMWY3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtNDUsOSArNDUs
OSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtQ0FMYXllcldpbi5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8cGFs
L2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKICNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkNGUGxheWVySXRlbS5oPgogI2lmIEhB
VkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA3ZDQ5ZDRlMTBjOWU1MTY1YmNlYWUyNTE2M2Q5NmFkYWFmYmQ3YzFiLi42ZTQx
MTdlNWVhMzlhOGUwOWVmYzVkOTE0NDhmNzY2ZjVhYWUzYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTU5LDcgKzU5LDYgQEAKICNpbXBvcnQgIlRleHRFbmNvZGluZy5oIgogI2ltcG9y
dCAiVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCIKICNpbXBvcnQgIlRleHR1cmVDYWNoZUNWLmgi
Ci0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9i
akMuaCIKICNpbXBvcnQgIlZpZGVvVGV4dHVyZUNvcGllckNWLmgiCiAjaW1wb3J0ICJWaWRlb1Ry
YWNrUHJpdmF0ZUFWRk9iakMuaCIKQEAgLTgxLDYgKzgwLDcgQEAKICNpbXBvcnQgPHd0Zi9MaXN0
SGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYv
T1NPYmplY3RQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAKaW5kZXggNWY4NTcwYjEyMTcwNWE2YmE5MTUwNmUzMWJlZDk3ZjY0Nzg4Y2Y2Zi4u
NzZiZWYwNzNkOTcyZWMxNzA3MjBkNmRlZTJhZTkwMDFmM2EyNmU0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lmIFVTRShDQUlSTykKIAogI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYmQy
YTczYTM0ZmFhMWRiZTE1OTIyZWMzYjFjMTFhZDExYjU2ZjY1Ny4uNjhlYzMxZWRkYTBkYTkwZWY4
MTYxYjg5NjdjNDc0OGE4MDMwMjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNDEsMTAgKzQx
LDEwIEBACiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVX
aXRoVGltZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFBMQVRGT1JNKFdJTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjk3
MDNlMjFlYjIxNTcwZjEwM2U1NDJiNWU1NDQzYWIzODY4OWU3NC4uYzUzM2EyZGU0M2IwY2IyMTg2
NzMwMmVmODYwODhiYzRmNjM2YThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGltZVJh
bmdlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5oIgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC00Nyw2
ICs0Niw3IEBACiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9y
aXR5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRS5jcHAKaW5kZXggNGYxZjhhYjAzOGI3ODMzYmVhZTI4OTBhMmNhZTQ1NTk4ZGZi
MmE3Ni4uZDE1YzJhNTBkNzJjNTNlM2EwOTVlMDYyYjFjMzQwOWZlZWYyNmQ1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNw
cApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlBsYXliYWNrUGlwZWxpbmUuaCIKICNpbmNs
dWRlICJTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdl
cy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmgiCiAKICNpbmNsdWRlIDxmbm1hdGNoLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nSGFzaC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuY3BwCmluZGV4IGY3YmQ0NzczYmZkNWM1NjdlODAxZmIwNzE3OGViOGZkODYx
YjdkNDAuLjk2OWE0MjI0NDJlNTgzZDNlZDFhZjdjZmU0M2QyOWU0MmFhOWViNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0
TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02
MzUsNyArNjM1LDcgQEAgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFTcmNTZXRVcmkoR3N0VVJJSGFuZGxl
ciogaGFuZGxlciwgY29uc3QgZ2NoYXIqIHVyaSwgR0Vycm9yKioKICAgICAgICAgcmV0dXJuIFRS
VUU7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6VVJMIHVybChXZWJDb3JlOjpVUkwoKSwgdXJpKTsK
KyAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogCiAgICAgcHJpdi0+bG9jYXRpb24gPSBHVW5pcXVl
UHRyPGdjaGFyPihnX3N0cmR1cCh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdT
VF9PQkpFQ1RfVU5MT0NLKHNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCmluZGV4IGQwM2Y1ZjdmY2VhM2M4ZjE3Mzc3MTZh
NDM1ZjllNjY2MDEyYTVmMTguLjllYzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQy
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09W
VFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09W
VFRDdWUuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiSVNPVlRUQ3VlLmgiCiAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogdXNpbmcgSlNDOjpEYXRhVmlldzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRE
aXJlY3QyRC5jcHAKaW5kZXggNWVhY2UxMDg4NjY3YzIyOWI1YWZjMzllYzkzNjg3ZTBkNDVhNTJm
Yi4uNDQ4MTczMTU3NWFlNDA5NDk1NGM3Njk1ZmRkNzVlN2EwNTVjOGFiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVj
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDxkMmQx
ZWZmZWN0cy5oPgogI2luY2x1ZGUgPGR3cml0ZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
I3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDc1NikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAppbmRleCAzM2Y0ZmUzYTQyZjA1ZjJkNmI5M2RiMGZh
ZGE4Nzg0M2U5YjcwMjY4Li5mN2QxODRmNjdlOGFjMzU2NTUzMzUxNTNlMWNlNTU4YWUxOGU5N2Ux
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAt
MjMsOSArMjMsOSBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgi
CiAjaW5jbHVkZSAiVGV4dEluZGljYXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PGNhaXJvLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHAKaW5kZXggYTRhYjYxMGE3M2ZmMWFjOTE0OTBkZGMyMDA4YzQ4OGQ0MmM5
MDBmMC4uNzFhMDBhMzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjcsOCArMjcs
OCBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBmMzA4YzJiYjdlNTM2OTFk
YTM0YzZlYmQwYjM0ZWQxMWJlYjJmYjY0Li44MTQzZmFmYzM3YzFiYzQ4YTRjMGRlOGRmMTA5NmQ3
MjM4ZTY1MDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZv
cm1QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxh
dGZvcm1QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgIlBhc3Rl
Ym9hcmRIZWxwZXIuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBkYTUxZGEwOWFkMTI3NDhjZjc5
YTUwZjZjMzM0OTllNTBhYTM1Yzg3Li4xYjg1OGVmOWRlZTU3YzIwNmJhM2UwYzczYWFkOGE4NjY5
NmI4MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9u
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgK
QEAgLTE5LDkgKzE5LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA5ZjY5MTRlYzQ4MWYxZGNhYWRhNzVkZjk2
ZDFkNTcwMjU1ZmY3MTUyLi40ZDY2OWYwMWExMzU5ZGE4YTQ3MzQ1ZWMzYzMyN2FkYjIzOWE5OTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAt
MzUsMTAgKzM1LDEwIEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYk5TQXR0
cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmls
ZUNvcmVTZXJ2aWNlcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogCiBAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoTlNBdHRyaWJ1
dGVkU3RyaW5nS2l0QWRkaXRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZGE3ZjYyMTc3YWM4NTk2MDUzMTAx
YjViODkxODJlMDIxYTliMjZkYy4uZDdhZDQyNWRhYWI0NmY4MWI2OTk5Mzk4NzgzY2MyNTFmZTgy
YmRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC0zMiw5ICszMiw3IEBACiAjaW1wb3J0ICJJbWFnZS5oIgogI2lt
cG9ydCAiUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJV
UkwuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0
cmFzLmgiCiAjaW1wb3J0ICJXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0IDxN
b2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxVSUtpdC9V
SUNvbG9yLmg+CkBAIC00NCw2ICs0Miw4IEBACiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQ
SS5oPgogI2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJh
cy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjZGVmaW5lIFBBU1RFQk9B
UkRfU1VQUE9SVFNfSVRFTV9QUk9WSURFUlMgKFBMQVRGT1JNKElPUykgJiYgIShQTEFURk9STShX
QVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKSkpCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2Fy
ZEltYWdlKQogICAgIGF1dG8mIHBhc3RlYm9hcmRVUkwgPSBwYXN0ZWJvYXJkSW1hZ2UudXJsOwog
ICAgIGlmIChOU1VSTCAqbnNVUkwgPSBwYXN0ZWJvYXJkVVJMLnVybCkgewogI2lmIE5TVVJMX1NV
UFBPUlRTX1RJVExFCi0gICAgICAgIG5zVVJMLl90aXRsZSA9IHBhc3RlYm9hcmRVUkwudGl0bGUu
aXNFbXB0eSgpID8gdXNlclZpc2libGVTdHJpbmcocGFzdGVib2FyZFVSTC51cmwpIDogKE5TU3Ry
aW5nICopcGFzdGVib2FyZFVSTC50aXRsZTsKKyAgICAgICAgbnNVUkwuX3RpdGxlID0gcGFzdGVi
b2FyZFVSTC50aXRsZS5pc0VtcHR5KCkgPyBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9h
cmRVUkwudXJsKSA6IChOU1N0cmluZyAqKXBhc3RlYm9hcmRVUkwudGl0bGU7CiAjZW5kaWYKICAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0Om5z
VVJMXTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVp
Y2tMb29rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgKaW5kZXgg
NDlkODExZDUxNDBjOGZkMGFmMDE2MjlkOGQwYzFjOWU5ZTk5NGYxNy4uMGE2ZWZhZWYzZTg2MWVm
NTlmZDQyODljZWY5MTFjNzc4ZGE3MGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9R
dWlja0xvb2suaApAQCAtMzUsOCArMzUsNiBAQCBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIFdFQkNPUkVfRVhQT1JUIE5TU2V0
ICpRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKTsKIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9FWFBP
UlQgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5l
ZWRlZChOU1VSTCAqLCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0YSAqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBkY2U3MzMzMWU3N2E4NzQ2OGI2
NzExN2M0MzRiNGIwYjgyMzJhOWViLi43MTZjMzY2NmI5YzRiY2U3MTM2MWY0YzA1MzgxZGMzYTlh
M2JkMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBA
IC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5o
IgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1Mp
CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CkBAIC0y
MTAsNyArMjExLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiAgICAg
Ly8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdlIGtu
b3cgLVtOU1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxsIHRo
ZSBzYW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRpbmcg
YW4gTlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0gICAgICAgIHJldHVybiB1c2VyVmlzaWJs
ZVN0cmluZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsKKyAgICAgICAgcmV0dXJuIFdU
Rjo6dXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CiAKICAg
ICAvLyBGSVhNRTogV1RGIHNob3VsZCBvZmZlciBhIG5vbi1NYWMtc3BlY2lmaWMgd2F5IHRvIGNv
bnZlcnQgc3RyaW5nIHRvIHByZWNvbXBvc2VkIGZvcm0gc28gd2UgY2FuIGRvIGl0IGZvciBhbGwg
cGxhdGZvcm1zLgogICAgIHJldHVybiBbKE5TU3RyaW5nICopc3RyaW5nIHByZWNvbXBvc2VkU3Ry
aW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnSW1hZ2VNYWMubW0KaW5kZXggMjAxY2IzMzhiYmQ3ZGM3NTNiMzM1YTMwMDYyYzJiOTEyNmIx
MTk0OS4uOWQ4YmI4N2Y5YmUxN2JhMzU3MjQ3ZTA1NjljZTQ2NWZhNjY2YzFkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC00MSwxMiArNDEsMTIg
QEAKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlN0cmluZ1RydW5jYXRvci5oIgogI2ltcG9y
dCAiVGV4dEluZGljYXRvci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJLaXROU0lt
YWdlRXh0cmFzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9VUkxGb3JtYXR0aW5nU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2lmICFIQVZFKFVSTF9GT1JNQVRUSU5HKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVX
T1JLX09QVElPTkFMKExpbmtQcmVzZW50YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9GaWxlU3lzdGVtTWFjLm1tCmluZGV4IDA3MWQwYzkxMTc3OTRlNjAzOGQ5OGFhZDU2ZmU5
NmZmOGY0ODE1MzMuLjhlZDc1MWE3ZWMwZTVkMGJhZjc3NGY5ODYxMGFjYjA0NWNkMmIwMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCkBAIC0yOCw4
ICsyOCw4IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4
dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaD4KKyNpbXBvcnQgPHd0
Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBGaWxlU3lzdGVtOjpz
ZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFV
UkxTdHIKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChOU1VSTCAqdXJsID0gVVJM
V2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJs
U3RyaW5nID0gdXNlclZpc2libGVTdHJpbmcoVVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOwor
ICAgICAgICB1cmxTdHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1v
dmluZ1VzZXJJbmZvKHVybCkpOwogICAgIGVsc2UKICAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRh
dGFVUkxTdHJpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KaW5kZXggM2MzNjdkYTQ4NDBjMGU0MmQzYTRhOTVjNzA2MTE1NTk2MTEzNDc2Mi4uOGE1
YzI3NGNhNjRjMzkwMjAwN2U4NzQ2YTQzZjViZmMzNjBkZGQ0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTM3LDcgKzM3LDYgQEAKICNpbXBv
cnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgi
CiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVVRJ
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNp
bXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC00NSw2ICs0NCw3IEBACiAj
aW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2lt
cG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2ltcG9ydCA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZFdyaXRlci5tbQppbmRleCA2YTI4ZmU2MmFjZWNkNTcyNjU4ZDAzM2QwY2Q5YzFhYzMxZWUw
ZTNkLi4wZmU1MDVkZTU1YzY2MTY0OGYwNTlkYTliN2ZhZTJhMDc3ZmM2MjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtNjMsMTAg
KzYzLDEwIEBAIFJldGFpblB0cjxpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4+IGNyZWF0ZVBhc3Rl
Ym9hcmRXcml0ZXIoY29uc3QgUGFzdGVib2FyZFdyaXRlCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoYXV0byYgdXJsID0gZGF0YS51cmwoKSkgewotICAgICAgICBOU1VSTCAqY29jb2FVUkwg
PSB1cmwtPnVybDsKLSAgICAgICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nID0gdXJsLT51
c2VyVmlzaWJsZUZvcm07Ci0gICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IChOU1N0cmluZyAqKXVy
bC0+dGl0bGU7CisgICAgaWYgKGF1dG8mIHVybERhdGEgPSBkYXRhLnVybERhdGEoKSkgeworICAg
ICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmxEYXRhLT51cmw7CisgICAgICAgIE5TU3RyaW5nICp1
c2VyVmlzaWJsZVN0cmluZyA9IHVybERhdGEtPnVzZXJWaXNpYmxlRm9ybTsKKyAgICAgICAgTlNT
dHJpbmcgKnRpdGxlID0gKE5TU3RyaW5nICopdXJsRGF0YS0+dGl0bGU7CiAgICAgICAgIGlmICgh
dGl0bGUubGVuZ3RoKSB7CiAgICAgICAgICAgICB0aXRsZSA9IGNvY29hVVJMLnBhdGgubGFzdFBh
dGhDb21wb25lbnQ7CiAgICAgICAgICAgICBpZiAoIXRpdGxlLmxlbmd0aCkKQEAgLTc0LDcgKzc0
LDcgQEAgUmV0YWluUHRyPGlkIDxOU1Bhc3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2Fy
ZFdyaXRlcihjb25zdCBQYXN0ZWJvYXJkV3JpdGUKICAgICAgICAgfQogCiAgICAgICAgIC8vIFdl
YlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZS4KLSAgICAgICAgYXV0byBwYXRocyA9IGFkb3B0TlMo
W1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6QFsgQFsgY29jb2FVUkwuYWJzb2x1dGVT
dHJpbmcgXSBdLCBAWyB1cmwtPnRpdGxlLnN0cmlwV2hpdGVTcGFjZSgpIF0sIG5pbF0pOworICAg
ICAgICBhdXRvIHBhdGhzID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0
czpAWyBAWyBjb2NvYVVSTC5hYnNvbHV0ZVN0cmluZyBdIF0sIEBbIHVybERhdGEtPnRpdGxlLnN0
cmlwV2hpdGVTcGFjZSgpIF0sIG5pbF0pOwogICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0UHJv
cGVydHlMaXN0OnBhdGhzLmdldCgpIGZvclR5cGU6dG9VVEkoQCJXZWJVUkxzV2l0aFRpdGxlc1Bi
b2FyZFR5cGUiKS5nZXQoKV07CiAKICAgICAgICAgLy8gTlNVUkxQYm9hcmRUeXBlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
aW5kZXggYjFkZmZiNmNiN2U2NDI1NzQxYmQwYzZjMGU1M2I0ZWZkY2ZkYjE3MS4uMGNiMWRkOGI5
MzBhMDY1YjdjMDgwMTVjYTJlMGNlNWRiZDViMmI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0zMiwxMCArMzIs
MTAgQEAKICNpbXBvcnQgIkNvbG9yTWFjLmgiCiAjaW1wb3J0ICJMZWdhY3lOU1Bhc3RlYm9hcmRU
eXBlcy5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0
ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2ltcG9y
dCA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCmluZGV4IDIzMDM4MTdmM2IyMTRm
YWM1NGZlMGY0ZTI2ZDA0OTMzM2I1MTA0MzUuLjAxOTZiNDE2ZWQ0MjViMTcwMGViY2U5YzBiYzFk
YzhiNjYzMTM4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJs
aWNTdWZmaXhNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1
ZmZpeE1hYy5tbQpAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhf
TElTVCkKIAotI2ltcG9ydCAiVVJMLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIK
ICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC02Myw3ICs2Myw3IEBAIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
KGNvbnN0IFN0cmluZyYgZG9tYWluKQogCiBTdHJpbmcgZGVjb2RlSG9zdE5hbWUoY29uc3QgU3Ry
aW5nJiBkb21haW4pCiB7Ci0gICAgcmV0dXJuIGRlY29kZUhvc3ROYW1lKChOU1N0cmluZyAqKShk
b21haW4pKTsKKyAgICByZXR1cm4gV1RGOjpkZWNvZGVIb3N0TmFtZShkb21haW4pOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9y
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5t
bQppbmRleCBmYzQwYWExOWIwNGMzYWUzNDcxODAyNzYzZjdkZjM4OWE3MjI4YzlkLi5iZDlkYTBk
ZDg2YWNjZDFkODRhNmMzZmVkYTBiNDEyYTI2YWRmNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KQEAgLTI5LDEzICsyOSwxMyBA
QAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxTZWN1cml0eS9TZWNBc24xQ29kZXIuaD4KICNpbXBvcnQg
PFNlY3VyaXR5L1NlY0FzbjFUZW1wbGF0ZXMuaD4KICNpbXBvcnQgPFNlY3VyaXR5L1NlY0VuY29k
ZVRyYW5zZm9ybS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Nv
Y29hL1NlY3VyaXR5U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MjVjMWRlN2IwMjgzY2QwZGJkYmE1NmNhMTZmYWZjNWYzOWM1OGI2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9VUkxNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiVVJMLmgiCi0KLSNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJV
UkxQYXJzZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgotI2ltcG9ydCA8d3Rm
L09iamNSdW50aW1lRXh0cmFzLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLUBp
bnRlcmZhY2UgTlNTdHJpbmcgKFdlYkNvcmVOU1VSTEV4dHJhcykKLS0gKEJPT0wpX3dlYl9sb29r
c0xpa2VJUEFkZHJlc3M7Ci1AZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwo
TlNVUkwgKnVybCkKLXsKLSAgICBpZiAoIXVybCkgewotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGln
bm9yZSBiYXNlIFVSTCBoZXJlPwotICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0
ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXVybCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJz
ZXIodXJsQnl0ZXMuZGF0YSgpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQot
VVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29uc3QKLXsKLSAgICAvLyBDcmVhdGluZyBhIHRvbGwt
ZnJlZSBicmlkZ2VkIENGVVJMIGJlY2F1c2UgY3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdv
dWxkIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5nLgotICAgIC8vIFdlJ2xsIG5lZWQg
ZmlkZWxpdHkgd2hlbiByb3VuZC10cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgotICAgIHJl
dHVybiBjcmVhdGVDRlVSTCgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKLX0KLQotUmV0YWluUHRy
PENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAg
ICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwg
dG8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVl
cy4KLSAgICAgICAgcmV0dXJuIChfX2JyaWRnZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOkAiIl0pLmdldCgpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gY2ZVUkw7Ci0KLSAgICAvLyBGYXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMg
OC1iaXQgdG8gYXZvaWQgY29weWluZyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KLSAgICBpZiAo
TElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpKSkKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZy
b21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9zdHJpbmcuY2hhcmFjdGVy
czgoKSksIG1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gU2xvd2Vy
IHBhdGguCi0gICAgICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOwotICAgICAgICBjb3B5VG9CdWZm
ZXIoYnVmZmVyKTsKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgfQotCi0gICAgaWYgKHByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSAmJiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gY2ZVUkw7Ci19Ci0KLWJvb2wgVVJM
Ojpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewotICAgIHJldHVybiBbaG9zdC5j
cmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkgX3dlYl9sb29rc0xpa2VJUEFkZHJl
c3NdOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZU5TVVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5T
VVJMRXh0cmFzLmgKaW5kZXggZmUxMDY4MTM0NWY1N2YzZjQxZjRkMGRhNzJjZTYxNjFkYmIwNjk0
OC4uMWMwNzMyOWJlOWViYjZmYjBhMjNjNWQyN2NkYTgwMmM0ZTgwMWUxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaApAQCAtMjYsMjkg
KzI2LDEwIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLUBjbGFzcyBOU1N0cmluZzsKIEBjbGFzcyBO
U1VSTDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAq
dXNlclZpc2libGVTdHJpbmcoTlNVUkwgKik7CiBXRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlD
YW5vbmljYWxpemluZ1VSTChOU1VSTCAqKTsKLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxXaXRo
VXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsgLy8gUmV0dXJuIHZh
bHVlIG9mIG5pbCBtZWFucyBlcnJvci4KLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeVJlbW92
aW5nVXNlckluZm8oTlNVUkwgKik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGhvc3ROYW1lTmVlZHNE
ZWNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlLCBCT09MKiBlcnJvcik7Ci1XRUJD
T1JFX0VYUE9SVCBCT09MIGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAq
LCBOU1JhbmdlLCBCT09MKiBlcnJvcik7Ci1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2Rl
SG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBv
ZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZW5jb2RlSG9zdE5h
bWVXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwg
bWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNT
dHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VY
UE9SVCBOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1
ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlUcnVuY2F0
aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICosIENGVVJMQ29tcG9uZW50VHlw
ZSk7Ci1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICosIE5TVVJMICpi
YXNlVVJMKTsKLVdFQkNPUkVfRVhQT1JUIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICop
OwotV0VCQ09SRV9FWFBPUlQgTlNEYXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAq
LCBDRlVSTENvbXBvbmVudFR5cGUpOwotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmdEZXByZWNhdGVkKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsKLQotTlNS
YW5nZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBp
c1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBsb29rc0xp
a2VBYnNvbHV0ZVVSTChOU1N0cmluZyAqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KaW5k
ZXggY2UxYzk1NjNiMGI1OWNhOTY0NTkzYWM2ZGM5OTdkNGM0NDYwYWEwYi4uMDQ0YzQyOTBkZGZl
NWY1MDk4Mzg5MTgzYThiYjQ5YWU0NzRhODBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBAIC0yNyw3ICsyNyw2IEBACiAgKi8K
IAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJVUkxQYXJzZXIuaCIKICNpbXBvcnQgIldl
YkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4K
ICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtMzksOTk5ICszOCw4IEBACiAjaW1wb3J0IDx1
bmljb2RlL3VpZG5hLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KIAotLy8gTmVlZHMg
dG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCi0vLyBGb3IgaG9z
dCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNo
IGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0jZGVmaW5lIEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RI
IDIwNDgKLSNkZWZpbmUgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEggMjA0OAotCi10eXBlZGVmIHZv
aWQgKCogU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24pKE5TU3RyaW5nICosIE5TUmFuZ2UsIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4mKTsKLQotc3RhdGljIHVpbnQzMl90IElETlNjcmlwdFdo
aXRlTGlzdFsoVVNDUklQVF9DT0RFX0xJTUlUICsgMzEpIC8gMzJdOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBib29sIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIoVUNoYXIz
MiBjb2RlUG9pbnQpCi17Ci0gICAgcmV0dXJuIGNvZGVQb2ludCA9PSAweDA1NDggfHwgY29kZVBv
aW50ID09IDB4MDU0RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQb2ludCA9PSAweDA1
N0Q7Ci19Ci0KLXN0YXRpYyBib29sIGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoVUNoYXIzMiBj
b2RlUG9pbnQpCi17Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBV
U2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjb2RlUG9pbnQsICZlcnJvcik7
Ci0gICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICBMT0dfRVJST1IoImdv
dCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBlcnJvcik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NyaXB0ID09IFVT
Q1JJUFRfQVJNRU5JQU47Ci19Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
aW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlw
ZSBjaGFyQ29kZSkKLXsKLSAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24oY2hhckNv
ZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGluZ3MgdGhlIFVSTCBQYXJz
ZXIgcmVqZWN0czoKLSAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7Ci0gICAgY2FzZSAnIyc6Ci0gICAg
Y2FzZSAnJSc6Ci0gICAgY2FzZSAnLyc6Ci0gICAgY2FzZSAnOic6Ci0gICAgY2FzZSAnPyc6Ci0g
ICAgY2FzZSAnQCc6Ci0gICAgY2FzZSAnWyc6Ci0gICAgY2FzZSAnXFwnOgotICAgIGNhc2UgJ10n
OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotfQotCi0KLQotc3RhdGljIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0ZXIoc3Rk
OjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjaGFyQ29kZSkK
LXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVuc2FmZSwg
bG9va2FsaWtlIGNoYXJhY3RlcnM6Ci0gICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hhcmFjdGVy
LCBhbnkgY2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKLSAgICAvLyBhbnkgaWdu
b3JhYmxlIGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBsb2Nrcy4K
LSAgICAKLSAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4gTW96aWxs
YSdzIGJsYWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklETi5ibGFj
a2xpc3RfY2hhcnM+LgotCi0gICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVycyBoZXJlIHdpbGwg
bmV2ZXIgYXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgotICAgIC8vIEZvciBleGFtcGxlLCBJ
Q1UgdHJhbnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNlIGFuZCBtb3N0Ci0g
ICAgLy8gc2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUgb2YgdGhlIHR3byBj
YWxsZXJzIHVzZXMgdGhpcwotICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBoYXZlIG5vdCBiZWVu
IHByb2Nlc3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgotICAgIAotICAgIGlm
ICghdV9pc3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hhckNvZGUpIHx8IHVf
aGFzQmluYXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxFX0NPREVf
UE9JTlQpKQotICAgICAgICByZXR1cm4gWUVTOwotICAgIAotICAgIHN3aXRjaCAoY2hhckNvZGUp
IHsKLSAgICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUiAq
LwotICAgICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGICovCi0g
ICAgICAgIGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMgKi8K
LSAgICAgICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUg
Ki8KLSAgICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBSRVRST0ZMRVggQ0xJQ0sg
Ki8KLSAgICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBBTFBIQSAqLwot
ICAgICAgICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBHICovCi0g
ICAgICAgIGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJQU5HVUxBUiBDT0xPTiAq
LwotICAgICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JUIFNUUk9LRSBPVkVSTEFZ
ICovCi0gICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQgU09MSURVUyBPVkVS
TEFZICovCi0gICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9W
RVJMQVkgKi8KLSAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZVTEwgU1RPUCAqLwot
ICAgICAgICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICovCi0gICAgICAgIGNh
c2UgMHgwNUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRICovCi0gICAgICAgIGNh
c2UgMHgwNUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRICovCi0gICAgICAgIGNh
c2UgMHgwNUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICovCi0gICAgICAgIGNh
c2UgMHgwNjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04gKi8KLSAgICAgICAgY2Fz
ZSAweDA2MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJR04gKi8KLSAgICAg
ICAgY2FzZSAweDA2NTA6IC8qIEFSQUJJQyBLQVNSQSAqLwotICAgICAgICBjYXNlIDB4MDY2MDog
LyogQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KLSAgICAgICAgY2FzZSAweDA2NkE6IC8qIEFS
QUJJQyBQRVJDRU5UIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2RDQ6IC8qIEFSQUJJQyBGVUxM
IFNUT1AgKi8KLSAgICAgICAgY2FzZSAweDA2RjA6IC8qIEVYVEVOREVEIEFSQUJJQyBJTkRJQyBE
SUdJVCBaRVJPICovCi0gICAgICAgIGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMgU1VQUkFMSU5FQVIg
RlVMTCBTVE9QICovCi0gICAgICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMgU1VCTElORUFSIEZV
TEwgU1RPUCAqLwotICAgICAgICBjYXNlIDB4MDcwMzogLyogU1lSSUFDIFNVUFJBTElORUFSIENP
TE9OICovCi0gICAgICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJQUMgU1VCTElORUFSIENPTE9OICov
Ci0gICAgICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQVU5DVFVBVElPTiAq
LwotICAgICAgICBjYXNlIDB4MUQwNDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgQyAq
LwotICAgICAgICBjYXNlIDB4MUQwRjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTyAq
LwotICAgICAgICBjYXNlIDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVSAq
LwotICAgICAgICBjYXNlIDB4MUQyMDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgViAq
LwotICAgICAgICBjYXNlIDB4MUQyMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVyAq
LwotICAgICAgICBjYXNlIDB4MUQyMjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgWiAq
LwotICAgICAgICBjYXNlIDB4MUVDRDogLyogTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1Qg
QkVMT1cgKi8KLSAgICAgICAgY2FzZSAweDIwMTA6IC8qIEhZUEhFTiAqLwotICAgICAgICBjYXNl
IDB4MjAxMTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLwotICAgICAgICBjYXNlIDB4MjAyNDog
LyogT05FIERPVCBMRUFERVIgKi8KLSAgICAgICAgY2FzZSAweDIwMjc6IC8qIEhZUEhFTkFUSU9O
IFBPSU5UICovCi0gICAgICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVGVC1QT0lOVElORyBB
TkdMRSBRVU9UQVRJT04gTUFSSyAqLwotICAgICAgICBjYXNlIDB4MjAzQTogLyogU0lOR0xFIFJJ
R0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHgyMDQx
OiAvKiBDQVJFVCBJTlNFUlRJT04gUE9JTlQgKi8KLSAgICAgICAgY2FzZSAweDIwNDQ6IC8qIEZS
QUNUSU9OIFNMQVNIICovCi0gICAgICAgIGNhc2UgMHgyMDUyOiAvKiBDT01NRVJDSUFMIE1JTlVT
IFNJR04gKi8KLSAgICAgICAgY2FzZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgVEhJ
UkQgKi8KLSAgICAgICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08gVEhJUkRT
ICovCi0gICAgICAgIGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEZJRlRIICov
Ci0gICAgICAgIGNhc2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRIUyAqLwot
ICAgICAgICBjYXNlIDB4MjE1NzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRIUyAqLwot
ICAgICAgICBjYXNlIDB4MjE1ODogLyogVlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhTICovCi0g
ICAgICAgIGNhc2UgMHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIICovCi0gICAg
ICAgIGNhc2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhUSFMgKi8KLSAgICAg
ICAgY2FzZSAweDIxNUI6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFQgKi8KLSAgICAgICAg
Y2FzZSAweDIxNUM6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhTICovCi0gICAgICAg
IGNhc2UgMHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTICovCi0gICAgICAg
IGNhc2UgMHgyMTVFOiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRIUyAqLwotICAgICAg
ICBjYXNlIDB4MjE1RjogLyogRlJBQ1RJT04gTlVNRVJBVE9SIE9ORSAqLwotICAgICAgICBjYXNl
IDB4MjIxMjogLyogTUlOVVMgU0lHTiAqLwotICAgICAgICBjYXNlIDB4MjIxNTogLyogRElWSVNJ
T04gU0xBU0ggKi8KLSAgICAgICAgY2FzZSAweDIyMTY6IC8qIFNFVCBNSU5VUyAqLwotICAgICAg
ICBjYXNlIDB4MjIzNjogLyogUkFUSU8gKi8KLSAgICAgICAgY2FzZSAweDIzM0Y6IC8qIEFQTCBG
VU5DVElPTkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KLSAgICAgICAgY2FzZSAweDIzQUU6IC8qIElO
VEVHUkFMIEVYVEVOU0lPTiAqLwotICAgICAgICBjYXNlIDB4MjQ0QTogLyogT0NSIERPVUJMRSBC
QUNLU0xBU0ggKi8KLSAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJB
V0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLwotICAgICAg
ICBjYXNlIDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBESUFHT05B
TCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyOUY2OiAvKiBT
T0xJRFVTIFdJVEggT1ZFUkJBUiAqLwotICAgICAgICBjYXNlIDB4MjlGODogLyogQklHIFNPTElE
VVMgKi8KLSAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFSWSBSRUxB
VElPTiAqLwotICAgICAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BFUkFUT1Ig
Ki8KLSAgICAgICAgY2FzZSAweDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJB
Q1RFUiBMRUZUIFRPIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyRkYxOiAvKiBJREVPR1JBUEhJ
QyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KLSAgICAgICAgY2FzZSAw
eDJGRjI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIE1JRERM
RSBBTkQgUklHSFQgKi8KLSAgICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9HUkFQSElDIERFU0NS
SVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICovCi0gICAgICAgIGNh
c2UgMHgyRkY0OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVMTCBTVVJS
T1VORCAqLwotICAgICAgICBjYXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04g
Q0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQUJPVkUgKi8KLSAgICAgICAgY2FzZSAweDJGRjY6IC8q
IElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJFTE9XICov
Ci0gICAgICAgIGNhc2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNU
RVIgU1VSUk9VTkQgRlJPTSBMRUZUICovCi0gICAgICAgIGNhc2UgMHgyRkY4OiAvKiBJREVPR1JB
UEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZUICovCi0g
ICAgICAgIGNhc2UgMHgyRkY5OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIg
U1VSUk9VTkQgRlJPTSBVUFBFUiBSSUdIVCAqLwotICAgICAgICBjYXNlIDB4MkZGQTogLyogSURF
T0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIgTEVGVCAq
LwotICAgICAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFD
VEVSIE9WRVJMQUlEICovCi0gICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVPR1JBUEhJQyBGVUxM
IFNUT1AgKi8KLSAgICAgICAgY2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUgQlJBQ0tFVCAqLwot
ICAgICAgICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0g
ICAgICAgIGNhc2UgMHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0g
ICAgICAgIGNhc2UgMHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQUEVSIEhB
TEYgKi8KLSAgICAgICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksg
TE9XRVIgSEFMRiAqLwotICAgICAgICBjYXNlIDB4MzIxRDogLyogUEFSRU5USEVTSVpFRCBLT1JF
QU4gQ0hBUkFDVEVSIE9KRU9OICovCi0gICAgICAgIGNhc2UgMHgzMjFFOiAvKiBQQVJFTlRIRVNJ
WkVEIEtPUkVBTiBDSEFSQUNURVIgTyBIVSAqLwotICAgICAgICBjYXNlIDB4MzNBRTogLyogU1FV
QVJFIFJBRCBPVkVSIFMgKi8KLSAgICAgICAgY2FzZSAweDMzQUY6IC8qIFNRVUFSRSBSQUQgT1ZF
UiBTIFNRVUFSRUQgKi8KLSAgICAgICAgY2FzZSAweDMzQzY6IC8qIFNRVUFSRSBDIE9WRVIgS0cg
Ki8KLSAgICAgICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9WRVIgTSAqLwotICAgICAgICBj
YXNlIDB4MDVCOTogLyogSEVCUkVXIFBPSU5UIEhPTEFNICovCi0gICAgICAgIGNhc2UgMHgwNUJB
OiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZBViAqLwotICAgICAgICBjYXNlIDB4
MDVDMTogLyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCi0gICAgICAgIGNhc2UgMHgwNUMyOiAv
KiBIRUJSRVcgUE9JTlQgU0lOIERPVCAqLwotICAgICAgICBjYXNlIDB4MDVDNDogLyogSEVCUkVX
IE1BUksgVVBQRVIgRE9UICovCi0gICAgICAgIGNhc2UgMHhBNzMxOiAvKiBMQVRJTiBMRVRURVIg
U01BTEwgQ0FQSVRBTCBTICovCi0gICAgICAgIGNhc2UgMHhBNzcxOiAvKiBMQVRJTiBTTUFMTCBM
RVRURVIgRFVNICovCi0gICAgICAgIGNhc2UgMHhBNzg5OiAvKiBNT0RJRklFUiBMRVRURVIgQ09M
T04gKi8KLSAgICAgICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJU
SUNBTCBTRU1JQ09MT04gKi8KLSAgICAgICAgY2FzZSAweEZFMTU6IC8qIFBSRVNFTlRBVElPTiBG
T1JNIEZPUiBWRVJUSUNBTCBFWENMQU1BVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHhGRTNG
OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFDS0VUICov
Ci0gICAgICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNL
RVQgKi8KLSAgICAgICAgY2FzZSAweEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRPUlRPSVNFIFNIRUxM
IEJSQUNLRVQgKi8KLSAgICAgICAgY2FzZSAweEZGMEU6IC8qIEZVTExXSURUSCBGVUxMIFNUT1Ag
Ki8KLSAgICAgICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09MSURVUyAqLwotICAgICAg
ICBjYXNlIDB4RkY2MTogLyogSEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwgU1RPUCAqLwotICAg
ICAgICBjYXNlIDB4RkZGQzogLyogT0JKRUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAqLwotICAg
ICAgICBjYXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCi0gICAgICAgIGNh
c2UgMHgxRjUwRjogLyogTE9DSyBXSVRIIElOSyBQRU4gKi8KLSAgICAgICAgY2FzZSAweDFGNTEw
OiAvKiBDTE9TRUQgTE9DSyBXSVRIIEtFWSAqLwotICAgICAgICBjYXNlIDB4MUY1MTE6IC8qIEtF
WSAqLwotICAgICAgICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sgKi8KLSAgICAgICAgY2FzZSAweDFG
NTEzOiAvKiBPUEVOIExPQ0sgKi8KLSAgICAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgICAgIGNh
c2UgMHgwMzA3OiAvKiBDT01CSU5JTkcgRE9UIEFCT1ZFICovCi0gICAgICAgICAgICByZXR1cm4g
cHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMjM3IC8qIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNT
IEogKi8KLSAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAxMzEgLyog
TEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSSAqLwotICAgICAgICAgICAgICAgIHx8IHByZXZp
b3VzQ29kZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExFVFRFUiBWQVYgKi8KLSAgICAgICAg
Y2FzZSAweDA1NDg6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPICovCi0gICAgICAgIGNh
c2UgMHgwNTREOiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUggKi8KLSAgICAgICAgY2Fz
ZSAweDA1Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLwotICAgICAgICBjYXNlIDB4
MDU3RDogLyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNFSCAqLwotICAgICAgICAgICAgcmV0dXJu
IHByZXZpb3VzQ29kZVBvaW50Ci0gICAgICAgICAgICAgICAgJiYgIWlzQVNDSUlEaWdpdE9yVmFs
aWRIb3N0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCi0gICAgICAgICAgICAg
ICAgJiYgIWlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUo
KSk7Ci0gICAgICAgIGNhc2UgJy4nOgotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50Ci0gICAgICAgICAg
ICAgICAgJiYgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52
YWx1ZSgpKQotICAgICAgICAgICAgICAgICYmICEoaXNBcm1lbmlhblNjcmlwdENoYXJhY3Rlcihj
aGFyQ29kZSkgfHwgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoY2hhckNvZGUpKTsK
LSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHdoaXRlTGlzdElETlNjcmlwdChjb25zdCBjaGFyKiBz
Y3JpcHROYW1lKQotewotICAgIGludDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9wZXJ0eVZhbHVlRW51
bShVQ0hBUl9TQ1JJUFQsIHNjcmlwdE5hbWUpOwotICAgIGlmIChzY3JpcHQgPj0gMCAmJiBzY3Jp
cHQgPCBVU0NSSVBUX0NPREVfTElNSVQpIHsKLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc2NyaXB0
IC8gMzI7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7Ci0gICAg
ICAgIElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gfD0gbWFzazsKLSAgICB9Ci19Ci0KLXN0YXRp
YyBCT09MIHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpmaWxlbmFtZSkKLXsK
LSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBGSUxFICpmaWxl
ID0gZm9wZW4oW2ZpbGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICJyIik7Ci0gICAg
aWYgKCFmaWxlKQotICAgICAgICByZXR1cm4gTk87Ci0gICAgCi0gICAgLy8gUmVhZCBhIHdvcmQg
YXQgYSB0aW1lLgotICAgIC8vIEFsbG93IGNvbW1lbnRzLCBzdGFydGluZyB3aXRoICMgY2hhcmFj
dGVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgLy8g
U2tpcCBhIGNvbW1lbnQgaWYgcHJlc2VudC4KLSAgICAgICAgaWYgKGZzY2FuZihmaWxlLCAiICMl
KlteXG5ccl0lKltcblxyXSIpID09IEVPRikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAK
LSAgICAgICAgLy8gUmVhZCBhIHNjcmlwdCBuYW1lIGlmIHByZXNlbnQuCi0gICAgICAgIGNoYXIg
d29yZFszM107Ci0gICAgICAgIGludCByZXN1bHQgPSBmc2NhbmYoZmlsZSwgIiAlMzJbXiMgXHRc
blxyXSUqW14jIFx0XG5ccl0gIiwgd29yZCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gRU9GKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVzdWx0ID09IDEpIHsK
LSAgICAgICAgICAgIC8vIEdvdCBhIHdvcmQsIG1hcCB0byBzY3JpcHQgY29kZSBhbmQgcHV0IGl0
IGludG8gdGhlIGFycmF5LgotICAgICAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHdvcmQpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIGZjbG9zZShmaWxlKTsKLSAgICByZXR1cm4gWUVTOwotfQot
Ci1zdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29uc3QgVUNo
YXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2Vf
dCBmbGFnOwotICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57Ci0gICAgICAgIC8vIFJlYWQgd2hp
dGUgbGlzdCBmcm9tIGxpYnJhcnkuCi0gICAgICAgIE5TQXJyYXkgKmRpcnMgPSBOU1NlYXJjaFBh
dGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxsRG9tYWlu
c01hc2ssIFlFUyk7Ci0gICAgICAgIGludCBudW1EaXJzID0gW2RpcnMgY291bnRdOwotICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykgewotICAgICAgICAgICAgaWYgKHJl
YWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGNoYXIqIGRlZmF1
bHRJRE5TY3JpcHRXaGl0ZUxpc3RbMjBdID0gewotICAgICAgICAgICAgIkNvbW1vbiIsCi0gICAg
ICAgICAgICAiSW5oZXJpdGVkIiwKLSAgICAgICAgICAgICJBcmFiaWMiLAotICAgICAgICAgICAg
IkFybWVuaWFuIiwKLSAgICAgICAgICAgICJCb3BvbW9mbyIsCi0gICAgICAgICAgICAiQ2FuYWRp
YW5fQWJvcmlnaW5hbCIsCi0gICAgICAgICAgICAiRGV2YW5hZ2FyaSIsCi0gICAgICAgICAgICAi
RGVzZXJldCIsCi0gICAgICAgICAgICAiR3VqYXJhdGkiLAotICAgICAgICAgICAgIkd1cm11a2hp
IiwKLSAgICAgICAgICAgICJIYW5ndWwiLAotICAgICAgICAgICAgIkhhbiIsCi0gICAgICAgICAg
ICAiSGVicmV3IiwKLSAgICAgICAgICAgICJIaXJhZ2FuYSIsCi0gICAgICAgICAgICAiS2F0YWth
bmFfT3JfSGlyYWdhbmEiLAotICAgICAgICAgICAgIkthdGFrYW5hIiwKLSAgICAgICAgICAgICJM
YXRpbiIsCi0gICAgICAgICAgICAiVGFtaWwiLAotICAgICAgICAgICAgIlRoYWkiLAotICAgICAg
ICAgICAgIllpIiwKLSAgICAgICAgfTsKLSAgICAgICAgZm9yIChjb25zdCBjaGFyKiBzY3JpcHRO
YW1lIDogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKLSAgICAgICAgICAgIHdoaXRlTGlzdElE
TlNjcmlwdChzY3JpcHROYW1lKTsKLSAgICB9KTsKLSAgICAKLSAgICBpbnQzMl90IGkgPSAwOwot
ICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgd2hpbGUg
KGkgPCBsZW5ndGgpIHsKLSAgICAgICAgVUNoYXIzMiBjOwotICAgICAgICBVMTZfTkVYVChidWZm
ZXIsIGksIGxlbmd0aCwgYykKLSAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJP
UjsKLSAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQoYywgJmVy
cm9yKTsKLSAgICAgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICAgICAg
TE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNjcmlwdHM6
ICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICB9Ci0gICAgICAg
IGlmIChzY3JpcHQgPCAwKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoImdvdCBuZWdhdGl2ZSBu
dW1iZXIgZm9yIHNjcmlwdCBjb2RlIGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7Ci0gICAgICAgICAg
ICByZXR1cm4gTk87Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNjcmlwdCA+PSBVU0NSSVBUX0NP
REVfTElNSVQpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0KLSAgICAgICAgc2l6ZV90IGluZGV4
ID0gc2NyaXB0IC8gMzI7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAz
Mik7Ci0gICAgICAgIGlmICghKElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gJiBtYXNrKSkKLSAg
ICAgICAgICAgIHJldHVybiBOTzsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0xvb2thbGlrZUNo
YXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0g
ICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKLSAgICB9Ci0gICAgcmV0dXJuIFlFUzsKLX0K
LQotc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhj
b25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5jdGlvbjxi
b29sKFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKLXsKLSAgICBBU1NFUlQobGVuZ3RoID4g
MCk7Ci0KLSAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0g
ICAgICAgIFVDaGFyIGNoID0gYnVmZmVyW2ldOwotICAgICAgICAKLSAgICAgICAgaWYgKGNoYXJh
Y3RlcklzQWxsb3dlZChjaCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAg
ICAgIC8vIE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExvd2VyIGxldmVsIHJl
Z2lzdHJhcnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgotICAgICAgICBpZiAoY2ggPT0gJy4n
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi0jZGVmaW5lIENIRUNLX1JVTEVTX0lGX1NVRkZJ
WF9NQVRDSEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKLSAgICB7IFwKLSAgICAgICAgc3RhdGljIGNv
bnN0IGludDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yoc3VmZml4
WzBdKTsgXAotICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYmIDAgPT0gbWVtY21w
KGJ1ZmZlciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXplb2Yoc3VmZml4KSkp
IFwKLSAgICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRM
RFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlvbik7IFwKLSAgICB9
Ci0KLXN0YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNoYXIgY2gpCi17
Ci0gICAgLy8gT25seSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBh
cmUgYWxsb3dlZC4KLSAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8
IGNoID09IDB4MDQ1MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLX0KLQotc3Rh
dGljIEJPT0wgYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZm
ZXIsIGludDMyX3QgbGVuZ3RoKQotewotICAgIC8vIFNraXAgdHJhaWxpbmcgZG90IGZvciByb290
IGRvbWFpbi4KLSAgICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFdID09ICcuJykKLSAgICAgICAgbGVu
Z3RoLS07Ci0KLSAgICAvLyBodHRwOi8vY2N0bGQucnUvZmlsZXMvcGRmL2RvY3MvcnVsZXNfcnUt
cmYucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9IHsKLSAgICAgICAg
Jy4nLAotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAg
ICAweDA0NDQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgotICAgIH07Ci0gICAgQ0hFQ0tf
UlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFuRG9tYWluTmFtZUNo
YXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vcnVzbmFtZXMucnUvcnVsZXMucGwKLSAgICBzdGF0
aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNSVVNbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAw
eDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0NDMsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBVCi0gICAgICAgIDB4MDQ0MSAgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEVTCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJp
bGxpY1JVUywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8v
cnUuZmFpdGlkLm9yZy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2YS9pZG4KLSAgICBz
dGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9IHsKLSAgICAgICAgJy4nLAotICAg
ICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAweDA0M0Us
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IEtBCi0gICAgICAgIDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCi0gICAgICAg
IDB4MDQzMCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICB9OwotICAgIENIRUNLX1JV
TEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZBLCBpc1J1c3NpYW5Eb21haW5OYW1l
Q2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9mb3J1c2VyL2RvY3Mv
cmVncnVsZXMucGhwCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljREVUSVtdID0gewot
ICAgICAgICAnLicsCi0gICAgICAgIDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERF
Ci0gICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCi0gICAgICAgIDB4
MDQ0MiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCi0gICAgICAgIDB4MDQzOCAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEkKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9N
QVRDSEVTKGN5cmlsbGljREVUSSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAg
ICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBydWxlcyBub3QgcHVibGlzaGVkLiBUaGUgd29yZCBp
cyBSdXNzaWFuLCBzbyBvbmx5IGFsbG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0aW1lLAotICAgIC8v
IGFsdGhvdWdoIHdlIG1heSBuZWVkIHRvIHJldmlzZSB0aGUgY2hlY2tzIGlmIHRoaXMgZW5kcyB1
cCBiZWluZyB1c2VkIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBSdXNzaWEuCi0gICAg
c3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT05MQVlOW10gPSB7Ci0gICAgICAgICcuJywKLSAg
ICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0M0Qs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgICAgICAweDA0M0IsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBFTAotICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBBCi0gICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKLSAg
ICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KLSAgICB9OwotICAgIENI
RUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT05MQVlOLCBpc1J1c3NpYW5Eb21h
aW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHNhbWUgYXMg
YWJvdmUuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU0FZVFtdID0gewotICAgICAg
ICAnLicsCi0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAg
ICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICAgICAgMHgwNDM5LCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQotICAgICAgICAweDA0NDIgIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBURQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01B
VENIRVMoY3lyaWxsaWNTQVlULCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAg
IC8vIGh0dHA6Ly9waXIub3JnL3Byb2R1Y3RzL29wci1kb21haW4vIC0gcnVsZXMgbm90IHB1Ymxp
c2hlZC4gQWNjb3JkaW5nIHRvIHRoZSByZWdpc3RyeSBzaXRlLAotICAgIC8vIHRoZSBpbnRlbmRl
ZCBhdWRpZW5jZSBpcyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xhdmljLXNwZWFraW5nIG1hcmtldHMi
LgotICAgIC8vIENocm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lhbiwgc28gc3RpY2tp
bmcgd2l0aCB0aGF0IGZvciBub3cuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT1JH
W10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgTwotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAg
ICAgICAweDA0MzMgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKLSAgICB9OwotICAgIENI
RUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1c3NpYW5Eb21haW5O
YW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxlcy5odG1sCi0gICAg
c3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAg
ICAgMHgwNDMxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICAgICAgMHgwNDM1LCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKLSAgICAgICAgMHgwNDNCICAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgRUwKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVT
KGN5cmlsbGljQkVMLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBSdXNzaWFuIGFuZCBCeWVs
b3J1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAg
IHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8
IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5IHx8IGlzQVNDSUlE
aWdpdChjaCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gaHR0cDovL3d3dy5uaWMu
a3ovZG9jcy9wb3J5YWRva192bmVkcmVuaXlhX2thel9ydS5wZGYKLSAgICBzdGF0aWMgY29uc3Qg
VUNoYXIgY3lyaWxsaWNLQVpbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0OUIsIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDA0MzAs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAgICAgIDB4MDQzNyAgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIFpFCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hF
UyhjeXJpbGxpY0tBWiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gS2F6YWtoIGxldHRlcnMs
IGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4
MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0RDkgfHwg
Y2ggPT0gMHgwNDkzIHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMgfHwgY2ggPT0gMHgw
NEU5IHx8IGNoID09IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0gMHgwNEJCIHx8IGNo
ID09IDB4MDQ1NiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQot
ICAgIC8vIGh0dHA6Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1bGVzJTIwb2YlMjBV
S1JfdjQuMC5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNVS1JbXSA9IHsKLSAg
ICAgICAgJy4nLAotICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCi0g
ICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAgIDB4MDQ0
MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19J
Rl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1VLUiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8g
UnVzc2lhbiBhbmQgVWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxv
d2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNo
ID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8IGNoID09IDB4MDQ1
NiB8fCBjaCA9PSAweDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAg
fSk7Ci0KLSAgICAvLyBodHRwOi8vd3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1FTlRJL2lkbi1zcmIt
cG9saWN5LXRlcm1zb2Z1c2UtdjEuNC1lbmcucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5
cmlsbGljU1JCW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRVMKLSAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgRVIKLSAgICAgICAgMHgwNDMxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICB9
OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU1JCLCBbXShVQ2hh
ciBjaCkgewotICAgICAgICAvLyBTZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFy
ZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0Mzgp
IHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTIgfHwgY2gg
PT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0gMHgwNDVC
IHx8IGNoID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9
KTsKLQotICAgIC8vIGh0dHA6Ly9tYXJuZXQubWsvZG9jL3ByYXZpbG5pay1tay1ta2QucGRmCi0g
ICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTUtEW10gPSB7Ci0gICAgICAgICcuJywKLSAg
ICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KLSAgICAgICAgMHgwNDNB
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwNDM0ICAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgREUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRD
SEVTKGN5cmlsbGljTUtELCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBNYWNlZG9uaWFuIGxl
dHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNo
ID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgw
NDQ4KSB8fCBjaCA9PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1IHx8IGNoID09IDB4MDQ1OCB8fCBj
aCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8fCBjaCA9PSAweDA0
NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBo
dHRwczovL3d3dy5tb24ubW4vY3MvCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTU9O
W10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgRU0KLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAg
ICAgICAweDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgIH07Ci0gICAgQ0hF
Q0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT04sIFtdKFVDaGFyIGNoKSB7Ci0g
ICAgICAgIC8vIE1vbmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dl
ZC4KLSAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9
PSAweDA0NTEgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRBRiB8fCBpc0FTQ0lJRGlnaXQo
Y2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIE5vdCBhIGtub3duIHRvcCBsZXZl
bCBkb21haW4gd2l0aCBzcGVjaWFsIHJ1bGVzLgotICAgIHJldHVybiBOTzsKLX0KLQotLy8gUmV0
dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1h
a2VTdHJpbmcgaXMgTk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwgb3Igc2VsZiB0
byBpbmRpY2F0ZSBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1ha2VTdHJpbmcgaXMgWUVT
LCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBwZWQgc3RyaW5nLgot
c3RhdGljIE5TU3RyaW5nICptYXBIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBO
U1JhbmdlIHJhbmdlLCBCT09MIGVuY29kZSwgQk9PTCBtYWtlU3RyaW5nLCBCT09MICplcnJvcikK
LXsKLSAgICBpZiAocmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCi0gICAgVUNoYXIgc291cmNlQnVmZmVyW0hPU1RfTkFNRV9CVUZG
RVJfTEVOR1RIXTsKLSAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NUX05BTUVfQlVGRkVS
X0xFTkdUSF07Ci0gICAgCi0gICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6
QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24gIT0gTlNO
b3RGb3VuZCkgewotICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBzdWJzdHJp
bmdXaXRoUmFuZ2U6cmFuZ2VdOwotICAgICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFz
ZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgKENG
U3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7Ci0gICAgICAgIGlmIChzdWJzdHJpbmcp
IHsKLSAgICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKLSAgICAgICAgICAgIHJhbmdlID0g
TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAK
LSAgICBpbnQgbGVuZ3RoID0gcmFuZ2UubGVuZ3RoOwotICAgIFtzdHJpbmcgZ2V0Q2hhcmFjdGVy
czpzb3VyY2VCdWZmZXIgcmFuZ2U6cmFuZ2VdOwotICAgIAotICAgIFVFcnJvckNvZGUgdWVycm9y
ID0gVV9aRVJPX0VSUk9SOwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5B
X0lORk9fSU5JVElBTElaRVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0g
KGVuY29kZSA/IHVpZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5pY29kZSkoJlVSTFBh
cnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksIHNvdXJjZUJ1ZmZlciwg
bGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgsICZwcm9j
ZXNzaW5nRGV0YWlscywgJnVlcnJvcik7Ci0gICAgaWYgKGxlbmd0aCAmJiAoVV9GQUlMVVJFKHVl
cnJvcikgfHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkgewotICAgICAgICAqZXJyb3IgPSBZ
RVM7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIAotICAgIGlmIChudW1DaGFyYWN0
ZXJzQ29udmVydGVkID09IGxlbmd0aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZlciwgZGVzdGluYXRp
b25CdWZmZXIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpKQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIAotICAgIGlmICghZW5jb2RlICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxp
c3QoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpICYmICFhbGxDaGFy
YWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnND
b252ZXJ0ZWQpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBtYWtlU3Ry
aW5nID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0aW9uQnVmZmVyIGxl
bmd0aDpudW1DaGFyYWN0ZXJzQ29udmVydGVkXSA6IHN0cmluZzsKLX0KLQotQk9PTCBob3N0TmFt
ZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwg
Qk9PTCAqZXJyb3IpCi17Ci0gICAgcmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywg
cmFuZ2UsIE5PLCBOTywgZXJyb3IpICE9IG5pbDsKLX0KLSAKLUJPT0wgaG9zdE5hbWVOZWVkc0Vu
Y29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVy
cm9yKQotewotICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBZ
RVMsICBOTywgZXJyb3IpICE9IG5pbDsKLX0KLQotTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0
aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgQk9PTCBlcnJv
ciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5n
LCByYW5nZSwgTk8sIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcg
KmVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2Up
Ci17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5h
bWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgWUVTLCBZRVMsICZlcnJvcik7Ci0gICAgaWYgKGVy
cm9yKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhv
c3Q7Ci19Ci0KLU5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQotewot
ICAgIEJPT0wgZXJyb3IgPSBOTzsKLSAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0
aFJhbmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgTk8sIFlFUywg
JmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJu
ICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5T
U3RyaW5nICpzdHJpbmcpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpo
b3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5n
IGxlbmd0aF0pLCBZRVMsIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotc3RhdGlj
IHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1Jh
bmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSwgQk9PTCBlbmNvZGUp
Ci17Ci0gICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3
aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3QgbmVlZCBtYXBwaW5nLgot
ICAgIC8vIFRoZXJlZm9yZSwgd2UgdXNlIG5pbCB0byBpbmRpY2F0ZSBubyBtYXBwaW5nIGhlcmUg
YW5kIGFuIGVtcHR5IGFycmF5IHRvIGluZGljYXRlIGVycm9yLgotCi0gICAgQk9PTCBlcnJvciA9
IE5POwotICAgIEJPT0wgbmVlZHNNYXBwaW5nID0gZW5jb2RlID8gaG9zdE5hbWVOZWVkc0VuY29k
aW5nV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsICZlcnJvcikgOiBob3N0TmFtZU5lZWRzRGVjb2Rp
bmdXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgJmVycm9yKTsKLSAgICBpZiAoIWVycm9yICYmICFu
ZWVkc01hcHBpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIWFycmF5KQotICAg
ICAgICBhcnJheSA9IGFkb3B0TlMoW05TTXV0YWJsZUFycmF5IG5ld10pOwotCi0gICAgaWYgKCFl
cnJvcikKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpy
YW5nZV1dOwotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyhO
U1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
JiBhcnJheSkKLXsKLSAgICByZXR1cm4gY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhzdHJp
bmcsIHJhbmdlLCBhcnJheSwgWUVTKTsKLX0KLQotc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1Ro
YXROZWVkRGVjb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCi17Ci0gICAgcmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0
TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIE5PKTsKLX0KLQotc3RhdGljIHZvaWQg
YXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywg
U3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYg
YXJyYXkpCi17Ci0gICAgLy8gSW4gYSBtYWlsdG86IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVy
IGEgJ0AnIGNoYXJhY3RlciBhbmQgZW5kIHdpdGggYSAnPicgb3IgJywnIG9yICc/JyBjaGFyYWN0
ZXIuCi0gICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5ncyBzbyB0aGF0IGNoYXJhY3RlcnMgaW4gdGhl
bSBkb24ndCBjb25mdXNlIHVzLgotICAgIC8vIFdoZW4gd2UgZmluZCBhICc/JyBjaGFyYWN0ZXIs
IHdlIGFyZSBwYXN0IHRoZSBwYXJ0IG9mIHRoZSBVUkwgdGhhdCBjb250YWlucyBob3N0IG5hbWVz
LgotICAgIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJT
ZXQ+PiBob3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNo
YXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJcIkA/Il07Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3ROYW1lRW5kQ2hhcmFj
dGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5n
OkAiPiw/Il07Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3Rl
clNldD4+IHF1b3RlZFN0cmluZ0NoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVy
U2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIlwiXFwiXTsKLSAgICAKLSAgICB1bnNpZ25lZCBz
dHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07Ci0gICAgTlNSYW5nZSByZW1haW5pbmcgPSBO
U01ha2VSYW5nZSgwLCBzdHJpbmdMZW5ndGgpOwotICAgIAotICAgIHdoaWxlICgxKSB7Ci0gICAg
ICAgIC8vIEZpbmQgc3RhcnQgb2YgaG9zdCBuYW1lIG9yIG9mIHF1b3RlZCBzdHJpbmcuCi0gICAg
ICAgIE5TUmFuZ2UgaG9zdE5hbWVPclN0cmluZ1N0YXJ0ID0gW3N0cmluZyByYW5nZU9mQ2hhcmFj
dGVyRnJvbVNldDpob3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9w
dGlvbnM6MCByYW5nZTpyZW1haW5pbmddOwotICAgICAgICBpZiAoaG9zdE5hbWVPclN0cmluZ1N0
YXJ0LmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdW5pY2hhciBjID0gW3N0cmluZyBjaGFyYWN0ZXJBdEluZGV4Omhvc3ROYW1lT3JTdHJpbmdT
dGFydC5sb2NhdGlvbl07Ci0gICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2Uo
aG9zdE5hbWVPclN0cmluZ1N0YXJ0KTsKLSAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmlu
Z0xlbmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09
ICc/JykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09ICdA
JykgewotICAgICAgICAgICAgLy8gRmluZCBlbmQgb2YgaG9zdCBuYW1lLgotICAgICAgICAgICAg
dW5zaWduZWQgaG9zdE5hbWVTdGFydCA9IHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAg
IE5TUmFuZ2UgaG9zdE5hbWVFbmQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhv
c3ROYW1lRW5kQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5n
XTsKLSAgICAgICAgICAgIEJPT0wgZG9uZTsKLSAgICAgICAgICAgIGlmIChob3N0TmFtZUVuZC5s
b2NhdGlvbiA9PSBOU05vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgaG9zdE5hbWVFbmQubG9j
YXRpb24gPSBzdHJpbmdMZW5ndGg7Ci0gICAgICAgICAgICAgICAgZG9uZSA9IFlFUzsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gaG9z
dE5hbWVFbmQubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0
cmluZ0xlbmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICBkb25lID0g
Tk87Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFByb2Nlc3Mg
aG9zdCBuYW1lIHJhbmdlLgotICAgICAgICAgICAgZihzdHJpbmcsIE5TTWFrZVJhbmdlKGhvc3RO
YW1lU3RhcnQsIGhvc3ROYW1lRW5kLmxvY2F0aW9uIC0gaG9zdE5hbWVTdGFydCksIGFycmF5KTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGRvbmUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5n
LgotICAgICAgICAgICAgQVNTRVJUKGMgPT0gJyInKTsKLSAgICAgICAgICAgIHdoaWxlICgxKSB7
Ci0gICAgICAgICAgICAgICAgTlNSYW5nZSBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBb
c3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OnF1b3RlZFN0cmluZ0NoYXJhY3RlcnMuZ2V0
KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107Ci0gICAgICAgICAgICAgICAgaWYg
KGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBjID0gW3N0cmluZyBj
aGFyYWN0ZXJBdEluZGV4OmVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbl07Ci0g
ICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gTlNNYXhSYW5nZShlc2NhcGVkQ2hh
cmFjdGVyT3JTdHJpbmdFbmQpOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBz
dHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgLy8gSWYgd2UgYXJlIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgdGhlbiBicmVh
ayBmcm9tIHRoZSBzdHJpbmcgbG9vcCBiYWNrIHRvIHRoZSBob3N0IG5hbWUgbG9vcC4KLSAgICAg
ICAgICAgICAgICBpZiAoYyA9PSAnIicpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIFNraXAgZXNjYXBlZCBjaGFyYWN0ZXIu
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGMgPT0gJ1xcJyk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFyZW1haW5pbmcubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgICAgICByZW1haW5pbmcubG9jYXRpb24gKz0gMTsKLSAgICAgICAgICAgICAgICByZW1h
aW5pbmcubGVuZ3RoIC09IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LXN0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKE5TU3RyaW5nICpz
dHJpbmcsIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4mIGFycmF5KQotewotICAgIC8vIEZpbmQgaG9zdG5hbWVzLiBUb28gYmFkIHdlIGNhbid0
IHVzZSBhbnkgcmVhbCBVUkwtcGFyc2luZyBjb2RlIHRvIGRvIHRoaXMsCi0gICAgLy8gYnV0IHdl
IGhhdmUgdG8gZG8gaXQgYmVmb3JlIGRvaW5nIGFsbCB0aGUgJS1lc2NhcGluZywgYW5kIHRoaXMg
aXMgdGhlIG9ubHkKLSAgICAvLyBjb2RlIHdlIGhhdmUgdGhhdCBwYXJzZXMgbWFpbHRvIFVSTHMg
YW55d2F5LgotICAgIAotICAgIC8vIE1heWJlIHdlIHNob3VsZCBpbXBsZW1lbnQgdGhpcyB1c2lu
ZyBhIGNoYXJhY3RlciBidWZmZXIgaW5zdGVhZD8KLSAgICAKLSAgICBpZiAocHJvdG9jb2xJcyhz
dHJpbmcsICJtYWlsdG8iKSkgewotICAgICAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub01haWxU
b1VSTFN0cmluZyhzdHJpbmcsIGYsIGFycmF5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAKLSAgICAvLyBGaW5kIHRoZSBob3N0IG5hbWUgaW4gYSBoaWVyYXJjaGljYWwgVVJMLgotICAg
IC8vIEl0IGNvbWVzIGFmdGVyIGEgIjovLyIgc2VxdWVuY2UsIHdpdGggc2NoZW1lIGNoYXJhY3Rl
cnMgcHJlY2VkaW5nLgotICAgIC8vIElmIGVuZHMgd2l0aCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcg
b3IgYSAiOiIsICIvIiwgb3IgYSAiPyIuCi0gICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFj
dGVyLCB0aGUgaG9zdCBwYXJ0IGlzIGp1c3QgdGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KLSAgICBO
U1JhbmdlIHNlcGFyYXRvclJhbmdlID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiOi8vIl07Ci0g
ICAgaWYgKHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICAvLyBDaGVjayB0aGF0IGFsbCBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUg
Oi8vIGFyZSB2YWxpZCBzY2hlbWUgY2hhcmFjdGVycy4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gbm9uU2NoZW1lQ2hhcmFjdGVycyA9IFtbTlND
aGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIkFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky0u
Il0gaW52ZXJ0ZWRTZXRdOwotICAgIGlmIChbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0
Om5vblNjaGVtZUNoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJh
bmdlKDAsIHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uKV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IFtzdHJp
bmcgbGVuZ3RoXTsKLSAgICAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5T
Q2hhcmFjdGVyU2V0Pj4gaG9zdFRlcm1pbmF0b3JzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3Rl
clNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCI6Lz8jIl07Ci0gICAgCi0gICAgLy8gU3RhcnQg
YWZ0ZXIgdGhlIHNlcGFyYXRvci4KLSAgICB1bnNpZ25lZCBhdXRob3JpdHlTdGFydCA9IE5TTWF4
UmFuZ2Uoc2VwYXJhdG9yUmFuZ2UpOwotICAgIAotICAgIC8vIEZpbmQgdGVybWluYXRpbmcgY2hh
cmFjdGVyLgotICAgIE5TUmFuZ2UgaG9zdE5hbWVUZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9m
Q2hhcmFjdGVyRnJvbVNldDpob3N0VGVybWluYXRvcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJh
bmdlOk5TTWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBzdHJpbmdMZW5ndGggLSBhdXRob3JpdHlT
dGFydCldOwotICAgIHVuc2lnbmVkIGhvc3ROYW1lRW5kID0gaG9zdE5hbWVUZXJtaW5hdG9yLmxv
Y2F0aW9uID09IE5TTm90Rm91bmQgPyBzdHJpbmdMZW5ndGggOiBob3N0TmFtZVRlcm1pbmF0b3Iu
bG9jYXRpb247Ci0gICAgCi0gICAgLy8gRmluZCAiQCIgZm9yIHRoZSBzdGFydCBvZiB0aGUgaG9z
dCBuYW1lLgotICAgIE5TUmFuZ2UgdXNlckluZm9UZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9m
U3RyaW5nOkAiQCIgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBo
b3N0TmFtZUVuZCAtIGF1dGhvcml0eVN0YXJ0KV07Ci0gICAgdW5zaWduZWQgaG9zdE5hbWVTdGFy
dCA9IHVzZXJJbmZvVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8gYXV0aG9yaXR5
U3RhcnQgOiBOU01heFJhbmdlKHVzZXJJbmZvVGVybWluYXRvcik7Ci0gICAgCi0gICAgcmV0dXJu
IGYoc3RyaW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZCAtIGhvc3RO
YW1lU3RhcnQpLCBhcnJheSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IG1hcEhv
c3ROYW1lcyhOU1N0cmluZyAqc3RyaW5nLCBCT09MIGVuY29kZSkKLXsKLSAgICAvLyBHZW5lcmFs
bHksIHdlIHdhbnQgdG8gb3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIG9uZSBo
b3N0IG5hbWUgdGhhdCBkb2VzIG5vdCBuZWVkIG1hcHBpbmcuCi0gICAgCi0gICAgaWYgKGVuY29k
ZSAmJiBbc3RyaW5nIGNhbkJlQ29udmVydGVkVG9FbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2Rp
bmddKQotICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgIAotICAgIC8vIE1ha2UgYSBsaXN0IG9m
IHJhbmdlcyB0aGF0IGFjdHVhbGx5IG5lZWQgbWFwcGluZy4KLSAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGhvc3ROYW1lUmFuZ2VzOwotICAgIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9u
IGYgPSBlbmNvZGUgPyBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyA6IGNvbGxlY3RSYW5n
ZXNUaGF0TmVlZERlY29kaW5nOwotICAgIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5n
KHN0cmluZywgZiwgaG9zdE5hbWVSYW5nZXMpOwotICAgIGlmICghaG9zdE5hbWVSYW5nZXMpCi0g
ICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICBpZiAoIVtob3N0TmFtZVJhbmdlcyBjb3VudF0p
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgLy8gRG8gdGhlIG1hcHBpbmcuCi0gICAg
YXV0byBtdXRhYmxlQ29weSA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwotICAgIHVu
c2lnbmVkIGkgPSBbaG9zdE5hbWVSYW5nZXMgY291bnRdOwotICAgIHdoaWxlIChpLS0pIHsKLSAg
ICAgICAgTlNSYW5nZSBob3N0TmFtZVJhbmdlID0gW1tob3N0TmFtZVJhbmdlcyBvYmplY3RBdElu
ZGV4OmldIHJhbmdlVmFsdWVdOwotICAgICAgICBOU1N0cmluZyAqbWFwcGVkSG9zdE5hbWUgPSBl
bmNvZGUgPyBlbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIGhvc3ROYW1lUmFuZ2UpIDog
ZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKTsKLSAgICAgICAg
W211dGFibGVDb3B5IHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpob3N0TmFtZVJhbmdlIHdpdGhT
dHJpbmc6bWFwcGVkSG9zdE5hbWVdOwotICAgIH0KLSAgICByZXR1cm4gbXV0YWJsZUNvcHk7Ci19
Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNl
KE5TU3RyaW5nICpzdHJpbmcpCi17Ci0gICAgYXV0byB0cmltbWVkID0gYWRvcHROUyhbc3RyaW5n
IG11dGFibGVDb3B5XSk7Ci0gICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoX19icmlkZ2UgQ0ZN
dXRhYmxlU3RyaW5nUmVmKXRyaW1tZWQuZ2V0KCkpOwotICAgIHJldHVybiB0cmltbWVkOwotfQot
Ci1OU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJM
ICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZSBjb21wb25lbnQpCi17Ci0gICAgaWYgKCFVUkwpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgQ0ZSYW5nZSBmcmFnUmcgPSBDRlVSTEdldEJ5
dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIG51
bGxwdHIpOwotICAgIGlmIChmcmFnUmcubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAg
IHJldHVybiBVUkw7Ci0KLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RI
PiB1cmxCeXRlcyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBudW1CeXRl
cyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgdXJsQnl0ZXMuZGF0YSgp
LCB1cmxCeXRlcy5zaXplKCkpOwotICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBu
dW1CeXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwg
MCk7Ci0gICAgICAgIHVybEJ5dGVzLmdyb3cobnVtQnl0ZXMpOwotICAgICAgICBDRlVSTEdldEJ5
dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOwot
ICAgIH0KLQotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxw
dHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2Rp
bmdVVEY4LCBudWxscHRyKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZV
UkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRp
b24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgIAot
ICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOwotfQot
Ci1zdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihOU1VSTCAqVVJM
KQotewotICAgIHJldHVybiBVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25l
bnQoVVJMLCBrQ0ZVUkxDb21wb25lbnRSZXNvdXJjZVNwZWNpZmllcik7Ci19Ci0KLU5TVVJMICpV
UkxXaXRoRGF0YShOU0RhdGEgKmRhdGEsIE5TVVJMICpiYXNlVVJMKQotewotICAgIGlmICghZGF0
YSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBOU1VSTCAqcmVzdWx0ID0gbmlsOwot
ICAgIHNpemVfdCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOwotICAgIGlmIChsZW5ndGggPiAwKSB7
Ci0gICAgICAgIC8vIHdvcmsgYXJvdW5kIDxyZGFyOi8vNDQ3MDc3MT46IENGVVJMQ3JlYXRlQWJz
b2x1dGVVUkxXaXRoQnl0ZXMoLi4sIFRSVUUpIGRvZXNuJ3QgcmVtb3ZlIG5vbi1wYXRoIGNvbXBv
bmVudHMuCi0gICAgICAgIGJhc2VVUkwgPSBVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIo
YmFzZVVSTCk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBVSW50OCAqYnl0ZXMgPSBzdGF0aWNf
Y2FzdDxjb25zdCBVSW50OCo+KFtkYXRhIGJ5dGVzXSk7Ci0gICAgICAgIAotICAgICAgICAvLyBD
RlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzIHdvdWxkIGNvbXBsYWluIHRvIGNvbnNvbGUg
aWYgd2UgcGFzc2VkIGEgcGF0aCB0byBpdC4KLSAgICAgICAgaWYgKGJ5dGVzWzBdID09ICcvJyAm
JiAhYmFzZVVSTCkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICAv
LyBOT1RFOiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hl
biBjb21wdXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAgICAg
ICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBp
cyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgICAg
IC8vIGNvdWxkIGVpdGhlciBiZSBhIG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZm
ZXJlbnQgZW5jb2RpbmcsIGxpa2Ugc2hpZnQtamlzLCBzbyB3ZSBmYWxsIGJhY2sKLSAgICAgICAg
Ly8gb250byB1c2luZyBJU08gTGF0aW4gMSBpbiB0aG9zZSBjYXNlcy4KLSAgICAgICAgcmVzdWx0
ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxs
cHRyLCBieXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBDRlVS
TFJlZiliYXNlVVJMLCBZRVMpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICBy
ZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVz
KG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoX19i
cmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc3Vs
dCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
c3RhdGljIE5TRGF0YSAqZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykK
LXsKLSAgICBOU0RhdGEgKnVzZXJUeXBlZERhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBBU1NFUlQodXNlclR5cGVkRGF0YSk7Ci0gICAg
Ci0gICAgY29uc3QgVUludDgqIGluQnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBVSW50OCAqPihb
dXNlclR5cGVkRGF0YSBieXRlc10pOwotICAgIGludCBpbkxlbmd0aCA9IFt1c2VyVHlwZWREYXRh
IGxlbmd0aF07Ci0gICAgaWYgKCFpbkxlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAK
LSAgICBjaGFyKiBvdXRCeXRlcyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obWFsbG9jKGluTGVuZ3Ro
ICogMykpOyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0gICAg
Y2hhciogcCA9IG91dEJ5dGVzOwotICAgIGludCBvdXRMZW5ndGggPSAwOwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgaW5MZW5ndGg7IGkrKykgewotICAgICAgICBVSW50OCBjID0gaW5CeXRlc1tp
XTsKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKLSAgICAgICAgICAgICpw
KysgPSAnJSc7Ci0gICAgICAgICAgICAqcCsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQo
Yyk7Ci0gICAgICAgICAgICAqcCsrID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0g
ICAgICAgICAgICBvdXRMZW5ndGggKz0gMzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICpwKysgPSBjOwotICAgICAgICAgICAgb3V0TGVuZ3RoKys7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpvdXRCeXRlcyBsZW5n
dGg6b3V0TGVuZ3RoXTsgLy8gYWRvcHRzIG91dEJ5dGVzCi19Ci0KLU5TVVJMICpVUkxXaXRoVXNl
clR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TVVJMICpuc1VSTCkKLXsKLSAgICBpZiAo
IXN0cmluZykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGF1dG8gbWFwcGVkU3RyaW5nID0g
bWFwSG9zdE5hbWVzKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCksIFlF
Uyk7Ci0gICAgaWYgKCFtYXBwZWRTdHJpbmcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAv
LyBMZXQncyBjaGVjayB3aGV0aGVyIHRoZSBVUkwgaXMgYm9ndXMuCi0gICAgVVJMIHVybCB7IFVS
TCB7IG5zVVJMIH0sIG1hcHBlZFN0cmluZy5nZXQoKSB9OwotICAgIGlmICghdXJsLmNyZWF0ZUNG
VVJMKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjA1NwotICAgIC8vIFdlIHNob3VsZCBiZSBh
YmxlIHRvIHVzZSB1cmwuY3JlYXRlQ0ZVUkwgaW5zdGVhZCBvZiB1c2luZyBkaXJlY3RseSBDRlVS
TCBwYXJzaW5nIHJvdXRpbmVzLgotICAgIE5TRGF0YSAqZGF0YSA9IGRhdGFXaXRoVXNlclR5cGVk
U3RyaW5nKG1hcHBlZFN0cmluZy5nZXQoKSk7Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1
cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKLQotICAgIHJldHVybiBVUkxXaXRoRGF0YShk
YXRhLCBuc1VSTCk7Ci19Ci0KLU5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRl
ZChOU1N0cmluZyAqc3RyaW5nLCBOU1VSTCAqVVJMKQotewotICAgIGlmICghc3RyaW5nKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgTlNVUkwgKnJlc3VsdCA9IFVSTFdpdGhVc2VyVHlwZWRT
dHJpbmcoc3RyaW5nLCBVUkwpOwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIE5TRGF0YSAq
cmVzdWx0RGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZyk7Ci0gICAgICAgIGlm
ICghcmVzdWx0RGF0YSkKLSAgICAgICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpA
IiJdOwotICAgICAgICByZXN1bHQgPSBVUkxXaXRoRGF0YShyZXN1bHREYXRhLCBVUkwpOwotICAg
IH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBCT09MIGhhc1F1ZXN0aW9uTWFy
a09ubHlRdWVyeVN0cmluZyhOU1VSTCAqVVJMKQotewotICAgIENGUmFuZ2UgcmFuZ2VXaXRoU2Vw
YXJhdG9yczsKLSAgICBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCBrQ0ZVUkxDb21wb25lbnRRdWVyeSwgJnJhbmdlV2l0aFNlcGFyYXRvcnMpOwot
ICAgIGlmIChyYW5nZVdpdGhTZXBhcmF0b3JzLmxvY2F0aW9uICE9IGtDRk5vdEZvdW5kICYmIHJh
bmdlV2l0aFNlcGFyYXRvcnMubGVuZ3RoID09IDEpCi0gICAgICAgIHJldHVybiBZRVM7Ci0KLSAg
ICByZXR1cm4gTk87Ci19Ci0KLU5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwg
KlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudFR5cGUpCi17Ci0gICAgVmVjdG9yPFVJ
bnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYWxsQnl0ZXNCdWZmZXIoVVJMX0JZVEVTX0JV
RkZFUl9MRU5HVEgpOwotICAgIENGSW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChf
X2JyaWRnZSBDRlVSTFJlZilVUkwsIGFsbEJ5dGVzQnVmZmVyLmRhdGEoKSwgYWxsQnl0ZXNCdWZm
ZXIuc2l6ZSgpKTsKLSAgICBpZiAoYnl0ZXNGaWxsZWQgPT0gLTEpIHsKLSAgICAgICAgQ0ZJbmRl
eCBieXRlc1RvQWxsb2NhdGUgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkws
IG51bGxwdHIsIDApOwotICAgICAgICBhbGxCeXRlc0J1ZmZlci5ncm93KGJ5dGVzVG9BbGxvY2F0
ZSk7Ci0gICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxS
ZWYpVVJMLCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgfQot
ICAgIAotICAgIGNvbnN0IENGVVJMQ29tcG9uZW50VHlwZSBjb21wbGV0ZVVSTCA9IChDRlVSTENv
bXBvbmVudFR5cGUpLTE7Ci0gICAgQ0ZSYW5nZSByYW5nZTsKLSAgICBpZiAoY29tcG9uZW50VHlw
ZSAhPSBjb21wbGV0ZVVSTCkgewotICAgICAgICByYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9y
Q29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudFR5cGUsIG51bGxwdHIp
OwotICAgICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgICAg
ICByZXR1cm4gbmlsOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJhbmdlLmxvY2F0aW9uID0gMDsK
LSAgICAgICAgcmFuZ2UubGVuZ3RoID0gYnl0ZXNGaWxsZWQ7Ci0gICAgfQotICAgIAotICAgIE5T
RGF0YSAqY29tcG9uZW50RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczphbGxCeXRlc0J1ZmZl
ci5kYXRhKCkgKyByYW5nZS5sb2NhdGlvbiBsZW5ndGg6cmFuZ2UubGVuZ3RoXTsgCi0gICAgCi0g
ICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyICo+KFtjb21wb25lbnREYXRhIGJ5dGVzXSk7Ci0gICAgTlNNdXRhYmxlRGF0YSAqcmVz
dWx0RGF0YSA9IFtOU011dGFibGVEYXRhIGRhdGFdOwotICAgIC8vIE5PVEU6IGFkZCBsZWFkaW5n
ICc/JyB0byBxdWVyeSBzdHJpbmdzIG5vbi16ZXJvIGxlbmd0aCBxdWVyeSBzdHJpbmdzLgotICAg
IC8vIE5PVEU6IHJldGFpbiBxdWVzdGlvbi1tYXJrIG9ubHkgcXVlcnkgc3RyaW5ncy4KLSAgICBp
ZiAoY29tcG9uZW50VHlwZSA9PSBrQ0ZVUkxDb21wb25lbnRRdWVyeSkgewotICAgICAgICBpZiAo
cmFuZ2UubGVuZ3RoID4gMCB8fCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoVVJMKSkK
LSAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOiI/IiBsZW5ndGg6MV07ICAgIAot
ICAgIH0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlLmxlbmd0aDsgaSsrKSB7Ci0gICAg
ICAgIHVuc2lnbmVkIGNoYXIgYyA9IGJ5dGVzW2ldOwotICAgICAgICBpZiAoYyA8PSAweDIwIHx8
IGMgPj0gMHg3ZikgewotICAgICAgICAgICAgY2hhciBlc2NhcGVkWzNdOwotICAgICAgICAgICAg
ZXNjYXBlZFswXSA9ICclJzsKLSAgICAgICAgICAgIGVzY2FwZWRbMV0gPSB1cHBlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAgIGVzY2FwZWRbMl0gPSBsb3dlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmVz
Y2FwZWQgbGVuZ3RoOjNdOyAgICAKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNoYXIg
YlsxXTsKLSAgICAgICAgICAgIGJbMF0gPSBjOwotICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBw
ZW5kQnl0ZXM6YiBsZW5ndGg6MV07ICAgIAotICAgICAgICB9ICAgICAgICAgICAgICAgCi0gICAg
fQotICAgIAotICAgIHJldHVybiByZXN1bHREYXRhOwotfQotCi1zdGF0aWMgTlNVUkwgKlVSTEJ5
UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENGVVJM
Q29tcG9uZW50VHlwZSBjb21wb25lbnQpCi17Ci0gICAgQ0ZSYW5nZSByYW5nZSA9IENGVVJMR2V0
Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwg
MCk7Ci0gICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQotICAgICAgICByZXR1
cm4gVVJMOwotICAgIAotICAgIC8vIFJlbW92ZSBvbmUgc3Vic2VxdWVudCBjaGFyYWN0ZXIuCi0g
ICAgcmFuZ2UubGVuZ3RoKys7Ci0KLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJf
TEVOR1RIPiBidWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwotICAgIENGSW5kZXggbnVt
Qnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOwotICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBu
dW1CeXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwg
MCk7Ci0gICAgICAgIGJ1ZmZlci5ncm93KG51bUJ5dGVzKTsKLSAgICAgICAgQ0ZVUkxHZXRCeXRl
cygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBudW1CeXRlcyk7Ci0gICAg
fQotICAgIFVJbnQ4KiB1cmxCeXRlcyA9IGJ1ZmZlci5kYXRhKCk7Ci0gICAgICAgIAotICAgIGlm
IChudW1CeXRlcyA8IHJhbmdlLmxvY2F0aW9uKQotICAgICAgICByZXR1cm4gVVJMOwotICAgIGlm
IChudW1CeXRlcyA8IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKQotICAgICAgICByYW5n
ZS5sZW5ndGggPSBudW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uOwotICAgICAgICAKLSAgICBtZW1t
b3ZlKHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24sIHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24g
KyByYW5nZS5sZW5ndGgsIG51bUJ5dGVzIC0gcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgp
OwotICAgIAotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxw
dHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdV
VEY4LCBudWxscHRyKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxD
cmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3Ro
LCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgcmV0dXJuIHJlc3VsdCA/IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7Ci19
Ci0KLU5TVVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNVUkwgKlVSTCkKLXsKLSAgICByZXR1
cm4gVVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoVVJMLCBrQ0ZV
UkxDb21wb25lbnRVc2VySW5mbyk7Ci19Ci0KIE5TVVJMICpVUkxCeUNhbm9uaWNhbGl6aW5nVVJM
KE5TVVJMICpVUkwpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdCA9IGFk
b3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOlVSTF0pOwpAQCAtMTA0OSwy
MDMgKzU3LDQgQEAgTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoTlNVUkwgKlVSTCkKICAg
ICByZXR1cm4gW1tuZXdVUkwgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLU5TRGF0YSAqb3Jp
Z2luYWxVUkxEYXRhKE5TVVJMICpVUkwpCi17Ci0gICAgVUludDggKmJ1ZmZlciA9IChVSW50OCAq
KW1hbGxvYyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBieXRlc0ZpbGxl
ZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLCBVUkxfQllU
RVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgaWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7Ci0gICAgICAg
IENGSW5kZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxS
ZWYpVVJMLCBudWxscHRyLCAwKTsKLSAgICAgICAgYnVmZmVyID0gKFVJbnQ4ICopcmVhbGxvYyhi
dWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRC
eXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0g
ICAgICAgIEFTU0VSVChieXRlc0ZpbGxlZCA9PSBieXRlc1RvQWxsb2NhdGUpOwotICAgIH0KLSAg
ICAKLSAgICAvLyBidWZmZXIgaXMgYWRvcHRlZCBieSB0aGUgTlNEYXRhCi0gICAgTlNEYXRhICpk
YXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5OmJ1ZmZlciBsZW5ndGg6Ynl0ZXNGaWxs
ZWQgZnJlZVdoZW5Eb25lOllFU107Ci0gICAgCi0gICAgTlNVUkwgKmJhc2VVUkwgPSAoX19icmlk
Z2UgTlNVUkwgKilDRlVSTEdldEJhc2VVUkwoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCk7Ci0gICAg
aWYgKGJhc2VVUkwpCi0gICAgICAgIHJldHVybiBvcmlnaW5hbFVSTERhdGEoVVJMV2l0aERhdGEo
ZGF0YSwgYmFzZVVSTCkpOwotICAgIHJldHVybiBkYXRhOwotfQotCi1zdGF0aWMgQ0ZTdHJpbmdS
ZWYgY3JlYXRlU3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKENGU3RyaW5nUmVmIHN0
cmluZykKLXsKLSAgICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7
Ci0gICAgVmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gc291cmNlQnVmZmVy
KGxlbmd0aCk7Ci0gICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2Uo
MCwgbGVuZ3RoKSwgc291cmNlQnVmZmVyLmRhdGEoKSk7Ci0gICAgCi0gICAgVmVjdG9yPFVDaGFy
LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gb3V0QnVmZmVyOwotICAgIAotICAgIHN0ZDo6b3B0
aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgQ0ZJbmRleCBpID0gMDsKLSAg
ICB3aGlsZSAoaSA8IGxlbmd0aCkgewotICAgICAgICBVQ2hhcjMyIGM7Ci0gICAgICAgIFUxNl9O
RVhUKHNvdXJjZUJ1ZmZlciwgaSwgbGVuZ3RoLCBjKQotICAgICAgICAKLSAgICAgICAgaWYgKGlz
TG9va2FsaWtlQ2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LCBjKSkgewotICAgICAgICAgICAg
dWludDhfdCB1dGY4QnVmZmVyWzRdOwotICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOwot
ICAgICAgICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOwotICAgICAgICAgICAgVThfQVBQRU5E
KHV0ZjhCdWZmZXIsIG9mZnNldCwgNCwgYywgZmFpbHVyZSkKLSAgICAgICAgICAgIEFTU0VSVCgh
ZmFpbHVyZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsg
aiA8IG9mZnNldDsgKytqKSB7Ci0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCgnJScp
OwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4
RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQo
bG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgVUNoYXIgdXRmMTZCdWZmZXJbMl07Ci0g
ICAgICAgICAgICBDRkluZGV4IG9mZnNldCA9IDA7Ci0gICAgICAgICAgICBVQm9vbCBmYWlsdXJl
ID0gZmFsc2U7Ci0gICAgICAgICAgICBVMTZfQVBQRU5EKHV0ZjE2QnVmZmVyLCBvZmZzZXQsIDIs
IGMsIGZhaWx1cmUpCi0gICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOwotICAgICAgICAgICAg
Zm9yIChDRkluZGV4IGogPSAwOyBqIDwgb2Zmc2V0OyArK2opCi0gICAgICAgICAgICAgICAgb3V0
QnVmZmVyLmFwcGVuZCh1dGYxNkJ1ZmZlcltqXSk7Ci0gICAgICAgIH0KLSAgICAgICAgcHJldmlv
dXNDb2RlUG9pbnQgPSBjOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycyhudWxscHRyLCBvdXRCdWZmZXIuZGF0YSgpLCBvdXRCdWZmZXIuc2l6ZSgp
KTsKLX0KLQotTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCi17Ci0gICAg
TlNEYXRhICpkYXRhID0gb3JpZ2luYWxVUkxEYXRhKFVSTCk7Ci0gICAgY29uc3QgdW5zaWduZWQg
Y2hhciAqYmVmb3JlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KFtkYXRhIGJ5
dGVzXSk7Ci0gICAgaW50IGxlbmd0aCA9IFtkYXRhIGxlbmd0aF07Ci0gICAgCi0gICAgYm9vbCBt
YXlOZWVkSG9zdE5hbWVEZWNvZGluZyA9IGZhbHNlOwotICAgIAotICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKnAgPSBiZWZvcmU7Ci0gICAgaW50IGJ1ZmZlckxlbmd0aCA9IChsZW5ndGggKiAzKSAr
IDE7Ci0gICAgVmVjdG9yPGNoYXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBhZnRlcihidWZm
ZXJMZW5ndGgpOyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0g
ICAgY2hhciAqcSA9IGFmdGVyLmRhdGEoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07Ci0gICAgICAgIC8vIHVu
ZXNjYXBlIGVzY2FwZSBzZXF1ZW5jZXMgdGhhdCBpbmRpY2F0ZSBieXRlcyBncmVhdGVyIHRoYW4g
MHg3ZgotICAgICAgICBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlI
ZXhEaWdpdChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChw
W2kgKyAyXSkpIHsKLSAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAx
XSwgcFtpICsgMl0pOwotICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gdW5lc2NhcGUKLSAgICAgICAgICAgICAgICAqcSsrID0gdTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90IHVuZXNjYXBlCi0gICAgICAgICAgICAg
ICAgKnErKyA9IHBbaV07Ci0gICAgICAgICAgICAgICAgKnErKyA9IHBbaSArIDFdOwotICAgICAg
ICAgICAgICAgICpxKysgPSBwW2kgKyAyXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkg
Kz0gMjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpxKysgPSBjOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICAvLyBDaGVjayBmb3IgInhuLS0iIGluIGFuIGVmZmljaWVudCwgbm9u
LWNhc2Utc2Vuc2l0aXZlLCB3YXkuCi0gICAgICAgICAgICBpZiAoYyA9PSAnLScgJiYgaSA+PSAz
ICYmICFtYXlOZWVkSG9zdE5hbWVEZWNvZGluZyAmJiAocVstNF0gfCAweDIwKSA9PSAneCcgJiYg
KHFbLTNdIHwgMHgyMCkgPT0gJ24nICYmIHFbLTJdID09ICctJykKLSAgICAgICAgICAgICAgICBt
YXlOZWVkSG9zdE5hbWVEZWNvZGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgKnEg
PSAnXDAnOwotICAgIAotICAgIC8vIENoZWNrIHN0cmluZyB0byBzZWUgaWYgaXQgY2FuIGJlIGNv
bnZlcnRlZCB0byBkaXNwbGF5IHVzaW5nIFVURi04ICAKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IHJlc3VsdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOwot
ICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIC8vIENvdWxkIG5vdCBjb252ZXJ0IHRvIFVURi04
LgotICAgICAgICAvLyBDb252ZXJ0IGNoYXJhY3RlcnMgZ3JlYXRlciB0aGFuIDB4N2YgdG8gZXNj
YXBlIHNlcXVlbmNlcy4KLSAgICAgICAgLy8gU2hpZnQgY3VycmVudCBzdHJpbmcgdG8gdGhlIGVu
ZCBvZiB0aGUgYnVmZmVyCi0gICAgICAgIC8vIHRoZW4gd2Ugd2lsbCBjb3B5IGJhY2sgYnl0ZXMg
dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgCi0gICAgICAgIC8vIGFzIHdlIGNvbnZlcnQuCi0g
ICAgICAgIGludCBhZnRlcmxlbmd0aCA9IHEgLSBhZnRlci5kYXRhKCk7Ci0gICAgICAgIGNoYXIg
KnAgPSBhZnRlci5kYXRhKCkgKyBidWZmZXJMZW5ndGggLSBhZnRlcmxlbmd0aCAtIDE7Ci0gICAg
ICAgIG1lbW1vdmUocCwgYWZ0ZXIuZGF0YSgpLCBhZnRlcmxlbmd0aCArIDEpOyAvLyBjb3BpZXMg
dHJhaWxpbmcgJ1wwJwotICAgICAgICBjaGFyICpxID0gYWZ0ZXIuZGF0YSgpOwotICAgICAgICB3
aGlsZSAoKnApIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpwOwotICAgICAgICAg
ICAgaWYgKGMgPiAweDdmKSB7Ci0gICAgICAgICAgICAgICAgKnErKyA9ICclJzsKLSAgICAgICAg
ICAgICAgICAqcSsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAg
ICAgICAgKnErKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgKnErKyA9ICpwOwotICAgICAgICAgICAgcCsrOwotICAg
ICAgICB9Ci0gICAgICAgICpxID0gJ1wwJzsKLSAgICAgICAgcmVzdWx0ID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhVVEY4U3RyaW5nOmFmdGVyLmRhdGEoKV07Ci0gICAgfQotICAgIAotICAgIGlmICht
YXlOZWVkSG9zdE5hbWVEZWNvZGluZykgewotICAgICAgICAvLyBGSVhNRTogSXMgaXQgZ29vZCB0
byBpZ25vcmUgdGhlIGZhaWx1cmUgb2YgbWFwSG9zdE5hbWVzIGFuZCBrZWVwIHJlc3VsdCBpbnRh
Y3Q/Ci0gICAgICAgIGF1dG8gbWFwcGVkUmVzdWx0ID0gbWFwSG9zdE5hbWVzKHJlc3VsdC5nZXQo
KSwgTk8pOwotICAgICAgICBpZiAobWFwcGVkUmVzdWx0KQotICAgICAgICAgICAgcmVzdWx0ID0g
bWFwcGVkUmVzdWx0OwotICAgIH0KLQotICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRT
dHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNl
KGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpcmVzdWx0LmdldCgpKSk7Ci19Ci0KLUJPT0wgaXNVc2VyVmlzaWJsZVVSTChOU1N0cmlu
ZyAqc3RyaW5nKQotewotICAgIEJPT0wgdmFsaWQgPSBZRVM7Ci0gICAgLy8gZ2V0IGJ1ZmZlcgot
ICAgIAotICAgIGNoYXIgc3RhdGljX2J1ZmZlclsxMDI0XTsKLSAgICBjb25zdCBjaGFyICpwOwot
ICAgIEJPT0wgc3VjY2VzcyA9IENGU3RyaW5nR2V0Q1N0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpc3RyaW5nLCBzdGF0aWNfYnVmZmVyLCAxMDIzLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpOwot
ICAgIHAgPSBzdWNjZXNzID8gc3RhdGljX2J1ZmZlciA6IFtzdHJpbmcgVVRGOFN0cmluZ107Ci0g
ICAgCi0gICAgaW50IGxlbmd0aCA9IHN0cmxlbihwKTsKLSAgICAKLSAgICAvLyBjaGVjayBmb3Ig
Y2hhcmFjdGVycyA8PSAweDIwIG9yID49MHg3ZiwgJS1lc2NhcGUgc2VxdWVuY2VzIG9mICU3Ziwg
YW5kIHhuLS0sIHRoZXNlCi0gICAgLy8gYXJlIHRoZSB0aGluZ3MgdGhhdCB3aWxsIGxlYWQgX3dl
Yl91c2VyVmlzaWJsZVN0cmluZyB0byBhY3R1YWxseSBjaGFuZ2UgdGhpbmdzLgotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0g
cFtpXTsKLSAgICAgICAgLy8gZXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVycywgc3BhY2UsIGFuZCBk
ZWxldGUKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID09IDB4N2YpIHsKLSAgICAgICAgICAg
IHZhbGlkID0gTk87Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChjID09
ICclJyAmJiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDFdKSkgJiYg
aSArIDIgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDJdKSkgewotICAgICAgICAg
ICAgYXV0byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7Ci0gICAgICAg
ICAgICBpZiAodSA+IDB4N2YpIHsKLSAgICAgICAgICAgICAgICB2YWxpZCA9IE5POwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaSArPSAyOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBhbiBlZmZp
Y2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgotICAgICAgICAgICAgaWYgKGMgPT0gJy0n
ICYmIGkgPj0gMyAmJiAocFtpIC0gM10gfCAweDIwKSA9PSAneCcgJiYgKHBbaSAtIDJdIHwgMHgy
MCkgPT0gJ24nICYmIHBbaSAtIDFdID09ICctJykgewotICAgICAgICAgICAgICAgIHZhbGlkID0g
Tk87Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgCi0gICAgcmV0dXJuIHZhbGlkOwotfQotCi1OU1JhbmdlIHJhbmdlT2ZVUkxTY2hl
bWUoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICBOU1JhbmdlIGNvbG9uID0gW3N0cmluZyByYW5n
ZU9mU3RyaW5nOkAiOiJdOwotICAgIGlmIChjb2xvbi5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYm
IGNvbG9uLmxvY2F0aW9uID4gMCkgewotICAgICAgICBOU1JhbmdlIHNjaGVtZSA9IHswLCBjb2xv
bi5sb2NhdGlvbn07Ci0gICAgICAgIC8qCi0gICAgICAgICBUaGlzIHN0dWZmIGlzIHZlcnkgZXhw
ZW5zaXZlLiAgMTAtMTUgbXNlYyBvbiBhIDJ4MS4yR0h6LiAgSWYgbm90IGNhY2hlZCBpdCBzd2Ft
cHMKLSAgICAgICAgIGV2ZXJ5dGhpbmcgZWxzZSB3aGVuIGFkZGluZyBpdGVtcyB0byB0aGUgYXV0
b2NvbXBsZXRlIERCLiAgTWFrZXMgbWUgd29uZGVyIGlmIHdlCi0gICAgICAgICBldmVuIG5lZWQg
dG8gZW5mb3JjZSB0aGUgY2hhcmFjdGVyIHNldCBoZXJlLgotICAgICAgICAgKi8KLSAgICAgICAg
TlNTdHJpbmcgKmFjY2VwdGFibGVDaGFyYWN0ZXJzID0gQCJBQkNERUZHSElKS0xNTk9QUVJTVFVW
V1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsuLSI7Ci0gICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBJbnZlcnNlU2No
ZW1lQ2hhcmFjdGVyU2V0KFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3Rl
cnNJblN0cmluZzphY2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52ZXJ0ZWRTZXRdKTsKLSAgICAgICAg
TlNSYW5nZSBpbGxlZ2FscyA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6SW52ZXJz
ZVNjaGVtZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsK
LSAgICAgICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAg
ICByZXR1cm4gc2NoZW1lOwotICAgIH0KLSAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3Vu
ZCwgMCk7Ci19Ci0KLUJPT0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKnN0cmluZykK
LXsKLSAgICAvLyBUcmltIHdoaXRlc3BhY2UgYmVjYXVzZSBfd2ViX1VSTFdpdGhTdHJpbmcgYWxs
b3dzIHdoaXRlc3BhY2UuCi0gICAgcmV0dXJuIHJhbmdlT2ZVUkxTY2hlbWUoc3RyaW5nQnlUcmlt
bWluZ1doaXRlc3BhY2Uoc3RyaW5nKS5nZXQoKSkubG9jYXRpb24gIT0gTlNOb3RGb3VuZDsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgK
aW5kZXggYzk5Y2IzODM3OGMxOWFiODJjZTkxZThiZjAyMzdhYjc3Mjg3OTExYS4uNjMzMTc4ZTRl
ZWFiNWVhMzE5MzYyMTAxMGU3NThjYjM0MjBjODE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmln
dXJhdGlvbi5oCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlICJSVENCdW5kbGVQb2xpY3ku
aCIKICNpbmNsdWRlICJSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaApp
bmRleCBiNzAyNjc0ODI0NjlkNTg3NWVmYjVmNzQ5NGQxYmY3YWM0MmM4OWUxLi4zODBkMzczMWIw
YTE1M2FiYjljMjI3MGJmZWU3NjgwZjAzYjNiOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRp
bGl0aWVzLmgKQEAgLTIzLDYgKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI3ByYWdt
YSBvbmNlCisKICNpbmNsdWRlIDxDb3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlBhcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaAppbmRl
eCA2MjhmOTM5YTMwNWNjZjc0NjY5ZTZiY2JhYmMwZjU5MTc5NTYzNzg2Li4wNDFjMjlhMzEyZjA5
ODE3ZjhlY2YxNzM2MTYxM2NhZDJmZDZmNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUGFydC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5o
CmluZGV4IDlmZjYwMGNhYzU5M2QzNTk0NWMxMGVhMTE0NTM3NGRiYzk3MjgwMTMuLjQ3NGEwZjJm
OGJiYTFjYjFmOTYzY2NjOTk0NGYyZTc5ZGFiYzFkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFy
dDsKIGNsYXNzIEJsb2JSZWdpc3RyeTsKLWNsYXNzIFVSTDsKIAogV0VCQ09SRV9FWFBPUlQgQmxv
YlJlZ2lzdHJ5JiBibG9iUmVnaXN0cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCAyNGZlY2M5NWE0MTk2MGIxM2Rk
ODc0ODE1MTBlYzI3OGE4YjFlZjI0Li5jNjkxZTViNjcwMDdlZGEyZTJmZjhiYjYyMjZhMDBhMzAw
NTE0ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuaApAQCAtMzMsMTQgKzMzLDEzIEBACiAKICNpbmNsdWRlICJCbG9iRGF0YS5o
IgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlSGFuZGxl
OwogY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAKaW5kZXggNjE4MmJlNTZjNDI2MDVkNTBlYTI5ZDJkN2JlMTAyMTdkYmY2MjEwOS4u
Yzk0ZTM5NDk0YjhlMzI2ZGI0YTEyYTI3MjAxYTQ2MjM4ZGUxOGM0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApA
QCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFJhbmdlLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDI0OWEwMDM2MWJl
ZmFjM2M4YWIzMzlhZDg3N2U4NzFmNGJmZTU5MzIuLjMyYTZmNTdjMGEyMTk2MDQ3Yzc0MzliMDkz
OWRmZTJjZDBjMzY5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAgLTI3LDgg
KzI3LDggQEAKIAogI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIlNhbWVT
aXRlSW5mby5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcApp
bmRleCBlNWYzMDRiYmNlNWQwMTk2OTkxZjVjZDljZTJlMGYyMjEyY2FlNmEwLi4yYzU0MzQzODVm
MTg1ZTgyZTI5MTYxYjhmYzQ3ZmU5OTAxMzk0N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcApAQCAtMjcsNyArMjcs
NyBAQAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCmlu
ZGV4IDVjYWNjMDU2MzFjMTY4MGQxZDk0MjdkNzc4OTUyOWYzYjE4ZDMwN2QuLjdkZGM0ZmU1NWJi
MWJlMmY2OTIwMDA4MGMzNGYzNGJhYmQ1MGVkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKQEAgLTIzLDggKzIzLDcgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQ3JlZGVudGlhbFN0b3JhZ2VfaAotI2Rl
ZmluZSBDcmVkZW50aWFsU3RvcmFnZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRl
bnRpYWwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VIYXNoLmgiCkBAIC0zNSw3ICszNCw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlv
blNwYWNlOwogCiBjbGFzcyBDcmVkZW50aWFsU3RvcmFnZSB7CkBAIC03MCw1ICs2OCwzIEBAIGNs
YXNzIENyZWRlbnRpYWxTdG9yYWdlIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIENyZWRlbnRpYWxTdG9yYWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggM2Y0ZmIxYWQ4ODRhNzgyYmRj
NjE0ZmQzOTRmZTc3NzFhYmE1NGE0Zi4uNDYwNWJlYTBhN2ExNmQxM2E1ZDJjMGU5MDZmYmFlOTBj
ZGQ0NjIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtR
dWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggNzI1ODI0NzEyOWNi
YmFhMmM4NWZjM2I0OWNmZGI2NjgwZDJiZDc1ZC4uOTc0ZDljZWJlYjE5NTE4OGI1Yzg0NjkyYWEw
ZjViMjZiYTk5MGNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RGF0YVVSTERlY29kZXIuaApAQCAtMjMsOSArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRGF0YVVSTERlY29kZXJfaAotI2RlZmluZSBE
YXRhVVJMRGVjb2Rlcl9oCi0KKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0zOCw3ICszNiw2IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogbmFtZXNw
YWNlIERhdGFVUkxEZWNvZGVyIHsKIApAQCAtNjEsNSArNTgsMyBAQCB2b2lkIGRlY29kZShjb25z
dCBVUkwmLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmLCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYm
KTsKIH0KIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaAppbmRleCBlOGM3ZDk4YTA3NWI2NmRkMDU0Mjg3OWI1OTE2NGMwZDQ2ZjZhNzI2Li5i
YmFhZGUxODViNzlmNTRmOGMwNzA3NTM5NjMyMTY2MzQ2ZWMyZGVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0yMCw5ICsyMCw5IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaAppbmRleCAxMDNkOWE5NmJiZGM2MTUyYTYx
YjdkMTYxZmU0MDkwYmE1YmMzYTA1Li41Mjc4OWI1YmRkOGRhYjM5N2IzNjlhYWMxNThjMjY3NzIx
ODc3ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZl
ci5oCkBAIC0yMywxNSArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIFByb3h5U2VydmVyX2gKLSNkZWZpbmUgUHJveHlTZXJ2ZXJfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xh
c3MgTmV0d29ya2luZ0NvbnRleHQ7CiAKIC8vIFJlcHJlc2VudHMgYSBzaW5nbGUgcHJveHkgc2Vy
dmVyLgpAQCAtNzUsNSArNzMsMyBAQCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UHJveHlTZXJ2ZXI+
IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0
b1N0cmluZyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+Jik7CiAgICAgCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQcm94eVNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggNzYzMzE4YzJl
MTE0NzM2MjM2ZWMzZDEzNmM3YzRhODc4ZGRjYjJmMy4uZTBiZjA0YjhhYzhmMDBiMzkzOTc5MWVi
ZmQwMDg3ZWNiOTBkYjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaApAQCAtMjYsNyArMjYsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCA0OTE0
MzRkOGZhNTNmMTkwZTU0NTNlYjlmMzk0ZTQwN2RkNmMxM2JmLi40NmFmNTY3MTNkODk4YzNhN2Zi
ZDc5OGFhNTBmZWFhNjU0Nzg0OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIENvbXBsZXRpb25ICiAgICAgaWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAg
YXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4gcG9ydCA9IHVybC5wb3J0KCk7Ci0gICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKKyAgICAgICAgaWYg
KHBvcnQgJiYgIVdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJs
LnByb3RvY29sKCkpKSB7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlID0gIkNhbmNlbGxlZCBsb2FkIGZyb20gJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIGl0IGlzIHVzaW5nIEhUVFAvMC45LiI7CiAg
ICAgICAgICAgICBkLT5tX2NsaWVudC0+ZGlkRmFpbCh0aGlzLCB7IFN0cmluZygpLCAwLCB1cmws
IG1lc3NhZ2UgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmgKaW5kZXggMDFhODZlMzU5YjFmZDBmMmVhZjQ1NjhhYTcyODY0MGMzMmI3NmY3
OC4uNjVmMzBmOTVkYjYwNTRhNWQwMWIyOWYyNDY4YjU5ZTk3MzcyNGY3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtNzcsNyAr
NzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIFVSTDsKIGNsYXNzIE5l
dHdvcmtpbmdDb250ZXh0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaAppbmRleCBkNmVkYjZkNjE4YWRjM2JjY2UyM2YwMWZiOTdmZjEzOTk3
YTZmYWMyLi4zZTEwYmVmNDkxMDdkMTM3ODE3Y2I5OTMyOTg1MjE3NWJiOGQ0MGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5oCkBAIC00NCw3ICs0NCw2IEBAIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xh
c3MgQ3JlZGVudGlhbDsKLWNsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNz
IFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4
IGZmNTgzNjE3NGVhYjk1OTUyOGEyMDdiZmJhYWI2MDAzOWQ5YjUwMzMuLmZiNDYzNjM1MjJhN2Zl
YzI1MjdkY2M0ZDEyNzVlZGEzZjc2MzMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIFJlc291cmNlUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByCiAgICAgICAgIHJlcXVlc3QubV9odHRwSGVh
ZGVyRmllbGRzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAgICAgfQog
Ci0gICAgaWYgKHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJl
cXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ICYmICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0
dHBzIikgJiYgV1RGOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIp
KQogICAgICAgICByZXF1ZXN0LmNsZWFySFRUUFJlZmVycmVyKCk7CiAKICAgICBpZiAoIXByb3Rv
Y29sSG9zdEFuZFBvcnRBcmVFcXVhbChyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVy
bCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmgKaW5kZXggM2FmNDM1MjY5ZmUxZmNlMDM3Nzg1ZmQyNWExZTBjYmJmZDc5
MGYzNS4uZTdjMWM0MDljM2I5YjY0ZWE3YjRlMzc4NzgzNDM5NTQyYTRhZDBjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkhU
VFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAppbmRleCBkOGZjYzE0MzFiNTBiYzdhYjY3
ZjFkMTk2OGI5MWNlNzBlYTE2MWVmLi4wZTU1YzFjZWZmMmFlN2MzNzFmNjBlNmVjMzRhODE1Yjc4
YTgyMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiSFRUUEhl
YWRlck1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlBh
cnNlZENvbnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYXJr
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggYjU5YmRiYTBiNDEyOTVjZWUzODUz
ZjZmZWEyMmFiYzI0ZWNkYmYyNS4uNmQxZmQxYTgzMDk5Mzk4OTRiNDllYTg0Yjc3YTU5ZjExN2Q4
YTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRT
dHJlYW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZS5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHAKaW5kZXggYmEzNDBmZjg4ZDYyMDNiNzEyNTIwOWE4NTAyM2QzNDlkZjM1ZjJkZi4uNGY4
ZTQzMjJhYzU3MWQ3NzcxM2QxMDE0Mzc0MDQ1ZmY2ZGNjZmNmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHAKQEAgLTMwLDExICszMCwxMSBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShXSU4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGZhMDRjOGI3MDk5Y2JhZWI2
ZTVmNGMxNWIxNzQ1MjY3NDA5YjNhZDcuLmY4ZWJiMDZjY2QwNTZlMzUwZWQwMGYwYjkyNWZkYWFj
ZmZkZTRkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC00MiwxMiAr
NDIsMTIgQEAKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgogI2lu
Y2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+
CiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxw
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRl
IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVy
Q0ZOZXQuY3BwCmluZGV4IGI1YzZhOGQ2YzMyZmZkYmQ5MGIyMTAwNDJiOTQ3MTQ3NDNhMGM1NGIu
LjJhYjM0OTcyMTZhYzVhYTg3NmUwMDRlN2E3ZDU2YThlNDhkZWM0Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNw
cApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5
U2VydmVyLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggYmEzNjA1YmJkMWQ0NmY5N2RlMjgz
OGYzOTgzNzg5MmY5OTUyMmI2OC4uZDQxNmY2MTUxNGVmMWZmMDIzMTFkNWMyZDEwMzVlZmQ1NDFl
OTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24v
Q0ZFcnJvci5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KICNpbmNs
dWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA4
OTQ4NWEzMWY1NDQ1YTVjODllOTNiODEzYzkxMDgxYTc0YTQ5MTljLi4wZWFkZTE1OTljZTU4YmI2
NDBmMmQxMjEzYWM0MzYwMjE0NzNhODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0KQEAgLTMxLDExICszMSwxMSBAQAogI2ltcG9ydCAiQ29va2llU3RvcmFnZU9ic2Vy
dmVyLmgiCiAjaW1wb3J0ICJDb29raWVzU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlNhbWVTaXRlSW5m
by5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5o
PgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9PcHRp
b25hbC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogQGludGVyZmFjZSBO
U1VSTCAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmgKaW5kZXggZTBiMjFjYzEzNzc0OGE4ZTE2Mjc0ODMyNjA3YzE4ZDdhNDgx
NjBmZS4uYjk2MTRiZmYwMDc5ODRjYTVmMjIxOGUwYjY1OWFhZjJmNGEyZDYwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5o
CkBAIC0yNSw3ICsyNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwog
Y2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogCiBzdHJ1Y3QgQ29va2llOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmxEYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
Q3VybERhdGFiYXNlLmNwcAppbmRleCA1ZTg0NTRhYTU0YWY2ZjcxYWNmYWU3ZTkzNjI0MDdjMjE0
MTc1MTg1Li5jMmQwNTFlMzc5M2Y1YThlODY4YTRlNzlkZmUxNjQ2NTY3NTE3YWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyQ3VybERhdGFiYXNlLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuY3BwCmluZGV4IDY1MDAzOGQzOTQxMmM3Y2EwMzg0M2Q4YWM5M2YxNDY2YTRlODdj
ODIuLjM5ZTc3YmY3ZDQ2MGZmNzZhYTc3ZmNhNjFjYjI2MTNiMWE3NTU5MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApA
QCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlVSTC5oIgog
CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmgKaW5kZXggYTg5YzlhYjdiOTYyNjI0NDgzMjYyNTI1NDcw
ZjFhNGRjYzlmZjM3Mi4uNjE4ZGY3Yjg4ZTQyOWVmNzY0ZTEyYjI2N2M3NGFkZmExYWU5ZWM4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0
aWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRp
bC5oCkBAIC0yNCw4ICsyNCw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXgg
MzczMjYwMTc5Yjg4NmYxZWVkYTA2ODEzOWYwMDY4NGExNGFmMDc3NS4uZjhkNjgxMDgwMWVmYmFk
ZDlkNDEwMDIyOTRhZGEzOTlhMDk2NTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAj
aW5jbHVkZSAiQ3VybFByb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlICJDdXJsU1NMSGFuZGxlLmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNl
dHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5
U2V0dGluZ3MuaAppbmRleCBhNjFjNmVjMjI2MmQyZTM4Nzk5MjcyNGI2ZGNjNWY2OTRkMTE2NjQ5
Li5mMzVmNDFiNTFmNTg5NmY2ZjczMzY2MDU1MjQ5YzMwYmEzOTViM2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGlu
Z3MuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogI2RlZmluZSBrQ1VSTEFVVEhfRElHRVNUX0lFICAgICgoKHVuc2lnbmVkIGxvbmcpIDEpIDw8
IDQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c3BvbnNlLmgKaW5kZXggMzczNjYxYmQzNWFmY2U2NjdhZTFiYjM1NzdhNmMwOWRjMTQ0ZmE0ZC4u
ZTYxMWZmYzRmYjE1NDFmNGNmZDEzMjg3MmNiYzFkNWRjM2Q5M2ZhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2UuaApAQCAtMjUs
NyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKaW5kZXggZTExMGFkMTY0OTEwNWVjNmIwMDNiMTk5MDM2YWQ4YThlNzA0
NzcxNC4uMWJkMjFlY2VhYmZmN2U3OTIwMGFmODJjY2QwOWMyYTg4NzE4OWUwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Qcm94eVNlcnZlckN1cmwuY3BwCmluZGV4IGNkYTQ0OTkzZjYzNGIyNDQ0YTYxZGNhZjk3
NDAxZTlmMjYwMmYwYjAuLjE4ZjUwOGI2ZTQ4NjgyYThmYzcwMGQxZjY3ZDdhOTZlMDkzZWQ0YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNl
cnZlckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Q
cm94eVNlcnZlckN1cmwuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBVU0UoQ1VSTCkKIAot
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCBjZmM0OGZm
YTI1ZmQ4MGZkYjhkNzFmYTdjMzg5M2QzZTg2YTQ1NzdhLi4wNzEwY2FlZTI1MDNjMWYzZjM4MDhl
MjA0MzcwNTg4MjdlZDM2ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5j
cHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU29j
a2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggMmVjZjQy
OGMwYWI1MTRhY2UwYzAxYzVmNGQxNjI5OGNlYTIxNjA3My4uZGNiZGUzNDhlYjQ3N2MyYTFiNWFi
ZTRhYjU5MzU5Mzk4ZTJhYzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCkBAIC0yNiwxMSArMjYsMTEgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogCi0jaW1wb3J0
ICJVUkwuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIEBpbnRlcmZhY2UgTlNFcnJvciAoV2Vi
RXh0cmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0dVbmlxdWVQdHJTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
R1VuaXF1ZVB0clNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZkYzYzNzQx
MmUxOGJhNzI1Zjc0ODNlYzMyNmUxMjQ5YTg4YTE2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvR1VuaXF1ZVB0clNvdXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBHVW5p
cXVlUHRyU291cF9oCi0jZGVmaW5lIEdVbmlxdWVQdHJTb3VwX2gKLQotI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLQotbmFtZXNwYWNl
IFdURiB7Ci0KLVdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2ZyZWUp
Ci1XVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVlKQot
V1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3NhZ2Vf
aGVhZGVyc19mcmVlKQotV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cEJ1ZmZlciwgc291cF9i
dWZmZXJfZnJlZSkKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IGU0ODNhYTYzMTZjZTZjNWQ2YzhmM2U2NTVkNTVk
ZDFlZWIwNDYzY2YuLjAzZDE1NmU1ZWQ2ZThjMWY1OTA5NTZhOGJkODQwZThhM2QxMGU0N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAog
I2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5LmgiCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgpAQCAtNDEsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKICNpZiBV
U0UoTElCU0VDUkVUKQogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKaW5k
ZXggNGMyNzdjM2QyMTY3YWNjNTQ0MTFmOTYwM2UzNTE5MDAxNzMzYjRhZC4uOWM5OWY4OTVkYjRk
YjdjODExY2E1MGY1MTFkM2Q0ZmIyNWM3MTZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKQEAgLTI4LDcg
KzI4LDcgQEAKIAogI2lmIFVTRShTT1VQKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
aW5kZXggNjM3MzRjNjc0YzUyZWU5NWRjNmM5ZTQyMWM0NjYwZjQxODQwMGJhYS4uZmI3MTgxM2Ez
NzU5MDljMGE3YTJmNTQ1NzRhODExYWVkZGIzZmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
QEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVk
ZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtNTgsNiArNTcsNyBAQAogI2VuZGlmCiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0LmgKaW5kZXggMzhlM2E4ZWU2OTY4MTFmZDViYTc4YjRiMzBjMmMwMWEzOWZm
NWI1Zi4uNzQ3MmFkMjM4YjMzNGE5NTA5MDFlZGU5MDE1ODMyNjViM2Y5YmM0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3QuaApAQCAtMjcsOSArMjcsOSBAQAogI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RfaAogI2RlZmlu
ZSBSZXNvdXJjZVJlcXVlc3RfaAogCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3RCYXNlLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Cisj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggNThjZmE3NzYxNDRjODRhMDkwZDM2MjJk
ZjIyMjc0MjE4Zjc5MWJiNi4uZWQyNjk0MDFlYmJmZjRkZDYzOGVmOGVmYzFlMGVkODY5MjJmNDZm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtMjQsMTEgKzI0LDExIEBACiAKICNpbmNs
dWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKLSNpbmNsdWRl
ICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAi
TUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
IldlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQ
dHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcApp
bmRleCA5Y2RkZGI4N2UzNzU5NWEyYmJhZDY1MTAyMDQ1ZjZmYTc0MmI0ZTQyLi41YWY5NDczZjM3
NzI4NjExMzFiYWU3MTc3YjM0MzE5YTVjMmRiMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsU291cC5jcHAKQEAgLTQxLDkgKzQxLDkgQEAKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1F
cnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUg
IlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGdpby9n
aW8uaD4KICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CmluZGV4IDEzZWNiNWIwZjc2M2MyMDFjZjE3YTQxNjEyYTczZjA5YThmNWEwNzguLjYwMDRkMTdm
NzZhMDNhOTBlMzM4YTkwZTNjNTQ1YjUyZjUxOWM3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3Mu
aCIKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUg
PHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGQxZTlkOWNlNWIyODlkMTRj
YzZjMTY1OTNiZjRhZDA2NzgyN2U1M2EuLjViNWZmNzk3NzM0NzE1MTk2MWE0NWMzNDk3ZWEyZjU1
MTM0NGIxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwotY2xhc3MgVVJMOwogc3RydWN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczsKIAogY2xhc3Mg
U291cE5ldHdvcmtTZXNzaW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NvdXAvVVJMU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2RiYTMyODY5NWZmY2IyNmYzODdi
NjcyYWE5Mzg3MzcyYjJlOTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiVVJMLmgiCi0KLSNp
bmNsdWRlICJVUkxQYXJzZXIuaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwo
U291cFVSSSogc291cFVSSSkKLXsKLSAgICBpZiAoIXNvdXBVUkkpIHsKLSAgICAgICAgaW52YWxp
ZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4g
dXJsU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwotICAgIFVSTFBh
cnNlciBwYXJzZXIoU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0KCkpKTsKLSAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKLQotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4OTU2LiBsaWJzb3VwCi0gICAgLy8gZG9lcyBub3QgYWRkIHRoZSBwYXNzd29y
ZCB0byB0aGUgVVJMIHdoZW4gY2FsbGluZwotICAgIC8vIHNvdXBfdXJpX3RvX3N0cmluZywgYW5k
IHRodXMgdGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkKLSAgICAvLyBidWlsdC4gRml4aW5n
IHNvdXBfdXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMKLSAg
ICAvLyBub3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVt
ZW50YXRpb25zCi0gICAgaWYgKHNvdXBVUkktPnBhc3N3b3JkKQotICAgICAgICBzZXRQYXNzKFN0
cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsKLX0KLQotR1VuaXF1ZVB0cjxTb3Vw
VVJJPiBVUkw6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBHVW5pcXVlUHRyPFNvdXBVUkk+
KHNvdXBfdXJpX25ldyhzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci19Ci0KLWJvb2wgVVJMOjpo
b3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewotICAgIHJldHVybiAhaG9zdC5pc0Vt
cHR5KCkgJiYgZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGhvc3QudXRmOCgpLmRhdGEoKSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaAppbmRleCA3N2M1Mjg4ZmQwY2UwNTk4NjRlZjgxMjNl
MDA3MmJiN2MzNTcyM2RiLi43ZDAzZjg2M2QwZGY0OWQyZjc5YzdjM2E2ZDEzODJjZjQxNjgxMGU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKQEAgLTI1
LDEzICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHBhbC90ZXh0L1VuZW5jb2RhYmxlSGFuZGxpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgVGV4dEVuY29kaW5nIDogcHVibGljIFVSTFRleHRFbmNvZGluZyB7CitjbGFzcyBU
ZXh0RW5jb2RpbmcgOiBwdWJsaWMgV1RGOjpVUkxUZXh0RW5jb2RpbmcgewogcHVibGljOgogICAg
IFRleHRFbmNvZGluZygpID0gZGVmYXVsdDsKICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0RW5jb2Rp
bmcoY29uc3QgY2hhciogbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQlN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5j
cHAKaW5kZXggYmFlMWJlYWFhYTM3YWRlMzAzYjA4ZjM0ODk0OTI0OTAxODY0NzljYS4uMGY0NmM1
ZGNhYjI5YjdiNDYzYmI2ZWNkMzFiMGViM2I3NThjMjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9CU3RyaW5nLmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkJTdHJpbmcuaCIKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0JTdHJpbmcuaAppbmRleCAxZmJlMDJjMTU4N2MxMjliOGQ1MDUwMmU2NDYw
NGU3ODZjZTgyYTJhLi4xODRiNTUxZDQ4ZTljMjMxZWEwMmE3ODc1NmZlOTZmZWQzZTU2NjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKQEAgLTQwLDggKzQwLDYgQEAgdHlw
ZWRlZiBfTnVsbF90ZXJtaW5hdGVkXyB3Y2hhcl90KiBCU1RSOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLSAgICBjbGFzcyBVUkw7Ci0KICAgICBjbGFzcyBCU3RyaW5nIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIEJTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggNmZmODllYzE4MGQ1ODM1YzU5MTQw
ZmM2YTM4N2Y0N2IxMjViMGEzMi4uNzkwYTgyZjhiNjcxMTAwYTE2MmU1M2VkODk3OTdjZDkwNzhl
ZmZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFV0aWxpdGllc1dpbi5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkNsaXBib2Fy
ZFV0aWxpdGllc1dpbi5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5o
IgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3
aW5pbmV0Lmg+IC8vIGZvciBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSAogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBtYXJrdXBUb0NGSFRNTChj
b25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5nJiBzcmNVUkwsIFZlY3RvcjxjaGFyPiYg
cmUKICAgICBjb25zdCBjaGFyKiBzdGFydE1hcmt1cCA9ICI8SFRNTD5cbjxCT0RZPlxuPCEtLVN0
YXJ0RnJhZ21lbnQtLT5cbiI7CiAgICAgY29uc3QgY2hhciogZW5kTWFya3VwID0gIlxuPCEtLUVu
ZEZyYWdtZW50LS0+XG48L0JPRFk+XG48L0hUTUw+IjsKIAotICAgIENTdHJpbmcgc291cmNlVVJM
VVRGOCA9IHNyY1VSTCA9PSBibGFua1VSTCgpID8gIiIgOiBzcmNVUkwudXRmOCgpOworICAgIENT
dHJpbmcgc291cmNlVVJMVVRGOCA9IHNyY1VSTCA9PSBXVEY6OmJsYW5rVVJMKCkgPyAiIiA6IHNy
Y1VSTC51dGY4KCk7CiAgICAgQ1N0cmluZyBtYXJrdXBVVEY4ID0gbWFya3VwLnV0ZjgoKTsKIAog
ICAgIC8vIGNhbGN1bGF0ZSBvZmZzZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5kZXggNWNkOWUwZTc1NzMxM2ZmMDIyOWE2
Y2ZiYThlZDY0OTBhODFhZmUyOC4uYzM3ZjNlMmRlMTk2MWU2YTEzMDQ1NDc3Y2NhODY5MjY0ZjAz
MjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uaApAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKLWNsYXNzIFVSTDsKIAogSEdM
T0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFN0cmluZyYpOwogSEdMT0JBTCBjcmVhdGVHbG9i
YWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRleCAxZGZhNTBiNTMyZGQ4YjVhZjY2Njc1Zjg0NDlmZTU0
MTkxMTc0ZWZmLi5hNmI2NzJmYzcyN2ZlODM3OWEyZDBmN2UwNDYwNzE2OTYwY2ZiYjg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAtMzQsMTIg
KzM0LDEyIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFduZERD
LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdHJp
bmdUcnVuY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4
dFJ1bi5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXh0UmVuZGVyZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dp
bi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAw
Njk5Nzk5MDYzMWU1YzM0MzY0NzE4YWU2YWIxNzY1OTRjZGYzNjlkLi5kNTk2N2E1ODIwYzk3YWUy
OGM2MjVhNTBkODAzOGUwMGVlMjVkZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiSFduZERD
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSYW5n
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC00OSw2ICs0OCw3IEBACiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9X
aW5kb3dzRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5k
ZXggMGI2YzQyZWUyZDA4MTY4YmVkZWZjOGYzZDBmOWVhZTZlMWE2YmY1OC4uZjA0MGIwYWY5NmYz
YjhiYmQ5ZjU0OTMyOTMxMmI4ZjRmNzA2OWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5E
YXRhLmgKQEAgLTIwLDEwICsyMCwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmgKaW5kZXggZDA3NzdiMzQ1MGMzYTAyMGFlZmQ0M2E3MjNjYzZjYjEzM2RlYWUw
Yi4uMzMyZjI4NTMxZDM4OGNmZTJjM2Q1OGE5NGMzZjI2MTdkY2I5MTY2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIEhU
TUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JvbGxi
YXI7Ci1jbGFzcyBVUkw7CiAKIGVudW0gY2xhc3MgSGl0VGVzdFByb2dyZXNzIHsgU3RvcCwgQ29u
dGludWUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0
dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQu
Y3BwCmluZGV4IGVkMzMzNWUxMzc0ZDhmNzIyOTI1MmQ1NGNlMDY3Y2MzODQ3NjgxYmQuLjc0Njdm
ZjM4NjU2ODJiOGJlNjNiYjY3ZGViZDcxOWE0YzhiN2UzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNs
dWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5o
IgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKaW5kZXggOTk5
OTZlMDFlZDA3MWFmNTg3MWExZGExNjZjNjMxNDlhMTNiNGU3NC4uNzIyMWRmY2I3ZGRkZTU5MDM5
Mjc2YWRkYzlmMzliZGEyZDc4OTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgU1ZHSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2
ZW50KCkKIFN0cmluZyBTVkdJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlKSBjb25zdAogewogICAgIFVSTCBiYXNlID0gZWxlbWVudCgpLmJhc2VVUkko
KTsKLSAgICBpZiAoYmFzZSAhPSBibGFua1VSTCgpKQorICAgIGlmIChiYXNlICE9IFdURjo6Ymxh
bmtVUkwoKSkKICAgICAgICAgcmV0dXJuIFVSTChiYXNlLCBzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoYXR0cmlidXRlKSkuc3RyaW5nKCk7CiAgICAgcmV0dXJuIGVsZW1lbnQoKS5k
b2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhh
dHRyaWJ1dGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZl
cmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAKaW5kZXgg
Njg1MDRhYTg0ZjI2Y2IxOTNmZjM1ZmEwOGIwYTRmNmQxZTU1ZmMyYy4uZGExM2I3N2I2ZjNkMWI4
MjgzZGNhOTk4OGQ4ODc2ZGQzNmUxNWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VSSVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVy
ZW5jZS5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVPd25lclByb3h5LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlhMaW5rTmFtZXMu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaAppbmRleCA4N2UyODIzZjllNzFiNjdiZDQ4MWU4ZTg4NDExYmFkMDAxMjY0Yjk4Li5jZDNm
ZDBkMWUyNTlkYWI0ZTMzYTY5YWI2YWQxODQ2ZDlhZTVlMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtMjcsNyArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuaAppbmRleCAzZjViYzNhNzU2ZTY4NzkxYmFjOGQzNjgzYjZjM2MxNjc0NmQ5
ZTQyLi4zMmU3MjJiZmEyNzM0NTRjNGI1YTExNGVmODA5NjQzNzUyMzRmODZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKQEAgLTMzLDcgKzMzLDYgQEAg
Y2xhc3MgTGF5b3V0U2l6ZTsKIGNsYXNzIFNWR0ltYWdlOwogY2xhc3MgU1ZHSW1hZ2VGb3JDb250
YWluZXI7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFNWR0ltYWdl
Q2FjaGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCA2OTgwNmJlNjc3
MDNlMmU5NDlmMzQxZDVjOTg2YTg1ZWEyZDdlMjRmLi40Y2ZjZThkNGIwMzc4NTc5MTQyMjY3YWE2
YjgwODc2NzEyNmIwNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKLSNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDY3ZTA2YTFiNzljNThlMDg0
Yzc3YTU2YjJiZjc3OTc4ZjQzNjBlMWYuLjkwYmNiYmI1ZDc1YTk1NTRkNzhkNzViZDA1ZmRlYmQx
N2FhNzkzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ1NCw3ICs0
NTQsNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdl
KQogICAgICAgICAgICAgYmFja2luZy0+c2V0VGlsZVNpemVVcGRhdGVEZWxheURpc2FibGVkRm9y
VGVzdGluZyhmYWxzZSk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6Y2xlYXJEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZygpOworICAgIFdURjo6Y2xlYXJEZWZhdWx0UG9ydEZvclBy
b3RvY29sTWFwRm9yVGVzdGluZygpOwogICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdl
cyhWZWN0b3I8U3RyaW5nPigpKTsKICAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGlu
Z3M6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhmYWxzZSk7CiAgICAgV2ViQ29yZTo6RGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzOjpzZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9yKGZhbHNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KaW5kZXggNmZjZGNiZWRkM2Y3ZGE0Y2M1NDIwYTkz
NjczNDI5NDFhNWMxMTQ5Ny4uN2M1YjdhZDg0MmQ5OThmZTYxYTAxNDIzMDUyYzBhMWU2MGI5MzNm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KQEAgLTMyLDggKzMyLDggQEAKICNp
bXBvcnQgIkV2ZW50SGFuZGxlci5oIgogI2ltcG9ydCAiSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9y
dCAiUmFuZ2UuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogI2lm
IFBMQVRGT1JNKElPUykKIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCkBAIC00NCw3ICs0NCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIEludGVybmFsczo6dXNlclZpc2libGVT
dHJpbmcoY29uc3QgRE9NVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNp
YmxlU3RyaW5nKHVybC5ocmVmKCkpOworICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KHVybC5ocmVmKCkpOwogfQogCiBib29sIEludGVybmFsczo6dXNlclByZWZlcnNSZWR1Y2VkTW90
aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5j
cHAKaW5kZXggNjQ4ZmJkMjZmYWMzNmE2NWM5OTU3YzUxMTU3ODg3NjQ2ZjJkYzI2Mi4uNTExODFk
YWU3MmUxM2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4YTE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBNb2Nr
Q29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2UKIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RVUkwgeyByZXF1ZXN0LnVy
bCgpLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcgfTsKICAgICBpZiAoIW1vZGlmaWVkUmVxdWVz
dFVSTC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJNb2NrQ29u
dGVudEZpbHRlciBmYWlsZWQgdG8gY29udmVydCAlcyB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1v
ZGlmaWVkUmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhD
b250ZW50RmlsdGVyaW5nLCAiTW9ja0NvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgJXMg
dG8gYSAgVVJMLlxuIiwgbW9kaWZpZWRSZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggOWI2ZTk1ZTIxNTQ4MzBjMDAwM2Q2
ZTIxODAwM2FjZWFhMjJmZWQ1MS4uNDkyOWU4YWUzZDE5ZGM4ZWIxMzUwYWQ1ZTE1YzA1MTNmMTY4
MTMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRp
bmF0b3IuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiTW9ja1BheW1lbnRNZXRob2Qu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IGQyNDEyMDZhMjhkZDVmNjQ3MGRh
OWZiODRlOWVkNGZjNzRjMjg3YjAuLjU4MDlmMGJlZGYwZTdhMDcxNzI4ZDA5ZWI5Mjk3NDdjNGI0
ZWUwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHAKQEAgLTM5LDEyICszOSwxMiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmln
Z2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50
aWZpZXJJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgor
I2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9y
dCB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdv
cmtlci5oCmluZGV4IDkwMGMyY2I0MDQ2MmEwZWJlMzcwMjhhMzc1YTYzM2ZlYWY5NTM0ZjEuLjAz
MjFjMmM3ZmVkMjU2NjI4ZmYyNmNlZDkxM2FlYjhhZmMzMGUwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKQEAgLTM1LDggKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIEFic3RyYWN0V29ya2VyIDogcHVibGljIFJl
ZkNvdW50ZWQ8QWJzdHJhY3RXb3JrZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDViOWEwYmUzNjljMjk5YzBmYjc1NDEw
NzhmYzc2NTZkNmRlNzllYzEuLjI4MmRkMDZiYzMzOGExZTA2OWE1YmQ0NmQ4NjNmYzMyOWQwYmE0
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTMy
LDcgKzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUg
IldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZVByb3h5LmgKaW5kZXggMzZiZDAwNzA3ZDBhNjhkYjMwNzYyNzJiYTY1
ZjMwYTNhOTI3ZjFlNy4uODU4NWE1YmZmOTNiMDQ2NjVkZTUzMjFlZDMyYjkyZmZhOTc2YTE3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgK
QEAgLTQyLDcgKzQyLDYgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7Ci1jbGFzcyBVUkw7
CiBjbGFzcyBXb3JrZXI7CiAKIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2VyIGNvbnRl
eHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclBy
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKaW5k
ZXggZGY0MzcxYWUyM2MzMDMwNmVhN2JmNjQwZDI3ZjllMTRiOTc1ZTRiMi4uYTFkM2VhNzU3NmU3
ZWEzNGE2NGNiOTE1NDdkZTc2YWNmNTE4YmRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VySW5zcGVjdG9yUHJveHkuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJX
b3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJMb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oCmlu
ZGV4IDUzYzc3NjE1Njc1NWI3MDZiOWQyNDkzNzE2YTgxMjUyN2ZjYTM1ZjguLjkyY2ZjYzc3MDZm
MDM0ZTU3YjlmODJlOWJhMjdiYTNhNTFhMDlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckxvY2F0aW9uLmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXgg
ZTU3YzMyM2NkZTllNmY0ZjgwYWY5YjI1YjJjZmUxZWUyZTczNzRkOS4uMDRhNDFjMjFjYjJmNzUz
MWZkZTYxOWU0ZDY3ZGQ1NjQ0OTA1Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5oCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCAxYzZhYTE2NWI1OTE4NzE0
N2M4YmE4MDk1NjFiMzAzMTVjODRiMGI3Li44NGYxMWUyNmVlYzZiZjkyMWJiMDY1M2EyYjk1OTIz
NzZjNDNjM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0z
Myw3ICszMyw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTb2Nr
ZXRQcm92aWRlci5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8dXRp
bGl0eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGQ3MTQxMjQ4NWE5
NjkwNDlhZGI0OTY1OTc0ZGJlOTFmNWVlMTkxODkuLjNkYzU0ZjZjNDczZGIzNzY3NTI1ZDFjYTQx
MDNkNWQ2YTU2Yzk2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAt
MzksNyArMzksNiBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKLWNsYXNzIFVSTDsKIGNs
YXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29j
a2V0UHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXIuaAppbmRleCA5YjliY2M4YTIyZjlkNzY3MTI5ODk3ZWMwMWYzN2IyYTU1MjFiN2VkLi43
YjIzOWYzMDdkYTcxZTE1NmQ4N2JhMjM1M2I1MWIxYTMzMzVmZmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmgKQEAgLTMxLDkgKzMxLDkgQEAK
ICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckRhdGEuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaAppbmRleCAxNDNkN2Q5ZTA0NWQ1NGUxMWE4YzZlZDlh
YzE0ZTM3YjE1NmEwNTI5Li5mOTkxZjMyY2U2ZDNhOWIyNTdhNTYxMmI0NjM2NWE2NzlhZTJkMTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5
cGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuY3BwCmluZGV4IDQwZDQwZGFkYTBiMThmMjJhODgzN2NiOTc2OGE0YTk5NmUyZTZiZDIuLjhk
YjljNDE2YmRmNzNjNjg2YWVmMTU4ZDY0ZDYxMDA0MmZlOGVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKQEAgLTQ4LDkgKzQ4LDkgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgog
I2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBD
T05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYo
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBDT05U
QUlORVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0df
RVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAt
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oCmluZGV4IDNiZTk1MDQyNWVhNzgwY2ZmZDViYmVlNzg1ZmE0NTMyYWY5NGEz
ZDcuLjRkNjIwODg5ZjkzNGE3ZWZhMjYwYjMyMDliNGUxNzZiMDJhYjBkMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmgKQEAgLTI5LDExICsyOSwxMSBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwu
aCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyRGF0YS5oCmluZGV4IDcyOGMzN2NmZTYyYTVmZTU2MGFiNmM0ZWIxODY0ZjA0NDRj
ZjkzNmUuLmNlMzYxZDNmM2QwZjM4NzNhODZkYzhhOTM4YmFmMDNmMWQxNjRhNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCkBA
IC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2JEYXRhLmgKaW5kZXggMDg3MGJiNmVmNjAyOTg0NWNkNGE5YjZkZTIzMDBhODgzY2Fh
MWMyMi4uOTNjMmRmNmZmMGQyZjM5OGU4NDEyNjhiZTE5NjY0ZjdhOWNlNjRmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkuY3BwCmluZGV4IDFjM2Q3NDZiMjNkYjkzZTM1NmYyMmU2MzEyMGIxY2Q0ZjRjZGIwYzku
LmJjZGQ4YzQ2OTI3ZGM0MDA2MGIwZGVmOWRlYmVlNWVlYTVlZjE3NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTEhhc2gu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleS5oCmluZGV4IDcxMGY0MTJiNDcyZDhmMTc0MmUwYmVlNDhkNTAy
YmU4OWE5YTAzOTkuLmU2YWY3MzMxYzdiOTU0MzlkNTM5OGE5YThjMzdlMzQ3NmI4ZmRmNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xMDIsNyArMTAyLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXlI
YXNoIHsKIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5PiB7CiAgICAgc3RhdGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXk6OmVtcHR5S2V5KCk7IH0KIAotICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBz
bG90KSB7IHNsb3Quc2V0U2NvcGUoV2ViQ29yZTo6VVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkp
OyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29wZShVUkwoSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHJldHVybiBz
bG90LnNjb3BlKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA1MDUyMGI2YTE0MWIxODNmMDQ4ZGU2MDkzMjlmOWNj
ODFmMjU0ODcwLi42MjYxN2NiODdhMTBjMTVjNTIzOGUwYzBjYWE3NjdmMmJlOGFjODJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUg
IkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUg
IlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCBhY2Q2NWU5YzgwYTA2N2YyNzJhNThlMWQ5
NzM1YzExZmU2NTEyYTk0Li4xZmI0MTVlMmQyZDA4NjUzZWZjYTI3MWJlOWM4ZjBlYWU0NTRmZjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaAppbmRleCBkZTIyYzc5ZjhlOGQwZTJiODE3MjRmNjUxMTFh
OWYxMGE1ZDIwMzY5Li4zMjEwZTMyOTllNmZjYjgzMmZjMzljOGVkNmNhOGU2Njc4YmM2YmMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJD
b29raWVNYW5hZ2VyLmgKQEAgLTQwLDcgKzQwLDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgQ29va2llOwogfQogCkBAIC03OCw5ICs3Nyw5IEBA
IGNsYXNzIFdlYkNvb2tpZU1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjCiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZp
ZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIENhbGxiYWNrSUQpOwogCiAgICAgdm9p
ZCBzZXRDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENhbGxi
YWNrSUQpOwotICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIG1haW5Eb2N1bWVudFVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWVzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEFs
bENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2ll
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDYWxsYmFja0lEKTsK
IAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kpOwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFj
a0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9X
ZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZTNkZTlkOGNmYWI5
ZmQ1ZjZmYjY4YTJjMDcxMDI2MmE4NTVkYzQ0OC4uMGIxZmQ1NTllMGJlYjI2ZTAwMzc5NDM0YWRh
ZTRlNWM5ZTQ3ZGFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI5
LDkgKzI5LDkgQEAKICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogCiAgICAgdm9pZCBTZXRDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCi0gICAgdm9pZCBTZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJM
IG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9p
ZCBTZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gY29va2llcywgVVJMIHVybCwgVVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBHZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRD
b29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgVVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgdm9pZCBEZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2Vi
Q29yZTo6Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
dm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdhbGxUaW1lIHRpbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2Nv
YS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlckNvY29hLm1tCmluZGV4IGMyYjE0N2M1ZjcyMWI5NTQwNzQ1YjY0OGQyMGJiY2I3Mjg0NzFh
YmUuLjZlOTAyOGRiNWM5OTdiZDJhMzFmZWUxOGEzM2MxMjRiN2ZmMTQyOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNvY29hLm1tCkBAIC0zNCw4ICszNCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RleHRFbmNvZGluZy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvTlNVUkxDb25uZWN0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRl
eCBiNjc2NjE0OWVlZDExZTljMjhiMGUxNDMzYWU2ZGVjMGFkNWQ2OTk3Li40ZTBmN2ZhN2RlNjgz
YmNhMTI2NTg4ZDFjNDEyM2NkNWJhZmE0MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBA
IC03MCw3ICs3MCw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgbWFwSXRlcmF0b3It
PnZhbHVlLmFkZCh1cmwpOwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBib29sIHNob3Vs
ZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlv
bkNoZWNrKQogewogICAgIC8vIFRoZSBjb25uZWN0aW9uIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBp
ZiBOZXR3b3JrUHJvY2VzcyBwcmV2b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJlYXNvbi4KICAgICBC
bG9iRm9yQ29ubmVjdGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29u
bmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTmV0d29y
a0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29y
a0Nvbm5lY3Rpb25UCiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQogCi12b2lk
IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQor
dm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKIHsKICAgICAvLyBUaGUg
Y29ubmVjdGlvbiBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgTmV0d29ya1Byb2Nlc3MgcHJldm91
c2x5IGNyYXNoZWQgZm9yIGFueSByZWFzb24uCiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0
ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9u
KTsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKgogICAgIG1hcEl0
ZXJhdG9yLT52YWx1ZS5hZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1
bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVu
cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9u
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkgbm90IGJlIHJl
Z2lzdGVyZWQgaWYgTmV0d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9yIGFueSByZWFz
b24uCiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9i
bG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2
b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiBjb25uZQogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5yZW1vdmUodXJs
KTsKIH0KIAotdWludDY0X3QgTmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
KQordWludDY0X3QgTmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICgh
bV9ibG9ic0ZvckNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbikgfHwgIW1fYmxvYnNGb3JD
b25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlLmNvbnRhaW5zKHVybCkpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6
Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQCiAg
ICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwogfQogCi1WZWN0b3I8
UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVz
SW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCkKK1ZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4g
TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9ibG9ic0Zv
ckNvbm5lY3Rpb24uY29udGFpbnMoJmNvbm5lY3Rpb24pIHx8ICFtX2Jsb2JzRm9yQ29ubmVjdGlv
bi5maW5kKCZjb25uZWN0aW9uKS0+dmFsdWUuY29udGFpbnModXJsKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9O
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCmluZGV4IGMxOWE2NTllMGVmNDU1YmIxMDg4YmNmODVj
MjlmZGVhYzkzNzI2MzkuLjkwNmI5ZThhNTJmZTRjZmEwMjY2Y2Q5NzFkNzE4Y2UyYzkyNTU0NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJ
L05ldHdvcmtCbG9iUmVnaXN0cnkuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTsKQEAgLTQ2LDI1ICs0NiwyNSBAQCBXVEZfTUFLRV9OT05DT1BZ
QUJMRShOZXR3b3JrQmxvYlJlZ2lzdHJ5KTsKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CiAg
ICAgc3RhdGljIE5ldHdvcmtCbG9iUmVnaXN0cnkmIHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCBy
ZWdpc3RlckZpbGVCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBW
ZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwot
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hv
dWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlv
bmFsbHlGaWxlQmFja2VkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmls
ZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwg
aW50NjRfdCBlbmQpOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB1aW50NjRfdCBibG9i
U2l6ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYp
OworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRl
bnNpb24+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgVmVjdG9y
PFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVj
ayk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBj
b25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsK
KyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGlu
dDY0X3QgZW5kKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJik7CisgICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0g
ICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgYmxvYlVSTCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJs
b2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHZvaWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0Rp
ZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7CiAKLSAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25z
dCBXZWJDb3JlOjpVUkwmKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
Y29uc3QgVVJMJik7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICB+TmV0d29y
a0Jsb2JSZWdpc3RyeSgpOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgSGFzaFNldDxXZWJDb3JlOjpVUkw+PiBCbG9iRm9yQ29ubmVjdGlvbk1h
cDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBI
YXNoU2V0PFVSTD4+IEJsb2JGb3JDb25uZWN0aW9uTWFwOwogICAgIEJsb2JGb3JDb25uZWN0aW9u
TWFwIG1fYmxvYnNGb3JDb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmlu
ZGV4IGQwMzc4N2ZiNGEyNWQ0OWFlYzNlZTY3NzViODc1YmY4YjIwMzAzOTMuLmY1ODRiYzQ2NjA4
NTFjMDBhZmFhYmUxNWZiYjA5OWFhMjlhNmRjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTE1MCwzMiArMTUwLDMyIEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByCiAgICAgdm9pZCBy
ZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICB2b2lkIHBh
Z2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCk7CiAgICAgdm9pZCBzZXREZWZlcnNM
b2FkaW5nKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQgY3Jvc3NPcmln
aW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVkaXJlY3RVUkwpOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVk
KFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZv
aWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsK
ICAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKIAotICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBT
dHJpbmcmIGNvb2tpZVN0cmluZywgYm9vbCYgc2VjdXJlQ29va2llc0FjY2Vzc2VkKTsKLSAgICB2
b2lkIHNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQpOwor
ICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklE
LCBib29sJiByZXN1bHQpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcywgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wmIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCk7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1
cmVDb29raWVzQWNjZXNzZWQpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBk
ZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNz
Q29ubmVjdGlvbkNoZWNrKTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKICAgICB2b2lkIHBy
ZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVCYWNrZWRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSYmKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7Ci0gICAgdm9p
ZCBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7Ci0g
ICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CisgICAgdm9p
ZCBibG9iU2l6ZShjb25zdCBVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7CisgICAgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBv
cmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YUtleSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OwogCiAgICAgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJv
b2wpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oV2ViQ29yZTo6VVJMJiYsIFBBTDo6
U2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90KTsKKyAgICB2b2lkIGNy
ZWF0ZVNvY2tldFN0cmVhbShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRp
dGlvbiwgdWludDY0X3QpOwogICAgIHZvaWQgZGVzdHJveVNvY2tldFN0cmVhbSh1aW50NjRfdCk7
CiAgICAgCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA3NzNkOWQ4ZTEw
MzNiNjJlNDgxMzNiOTYyMGI2MjliZjc4ODZmZWFkLi45ZWZlYTU3NTRiNGRjY2Y2MzNiMWU0MzA0
ZGJhMzc0NGQ3ZGEzZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTM0LDI4ICszNCwyOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJD
b3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmlu
ZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKLSAgICBTZXRDb29r
aWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBh
cnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6
VVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBj
b29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAgICBTZXRDb29raWVz
RnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBTdHJp
bmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKGJvb2wgZW5hYmxlZCkKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1
Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBlbnVtIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKQotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUlu
Zm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
IGNvb2tpZXMpCi0gICAgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAgQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
ZW51bSBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykg
LT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAg
ICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHks
IHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAgIERlbGV0ZUNvb2tp
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQog
Ci0gICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgcGF0aCwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcg
Y29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFZlY3Rv
cjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAg
UmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgc3Jj
VVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykKKyAgICBSZWdpc3RlckZpbGVC
bG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJs
b2JVUkwoVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmlu
ZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBz
cmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogICAgIFByZXJlZ2lzdGVy
U2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoVmVjdG9yPFN0cmlu
Zz4gZmlsZVBhdGhzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4dGVu
c2lvbkhhbmRsZXMpCi0gICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoV2Vi
Q29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRo
LCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoV2ViQ29y
ZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBl
bmQpCi0gICAgVW5yZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCkKLSAgICBCbG9iU2l6
ZShXZWJDb3JlOjpVUkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkKKyAgICBSZWdpc3Rl
ckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChVUkwgdXJsLCBVUkwgc3JjVVJMLCBTdHJpbmcg
ZmlsZUJhY2tlZFBhdGgsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxG
b3JTbGljZShVUkwgdXJsLCBVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkK
KyAgICBVbnJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsKQorICAgIEJsb2JTaXplKFVSTCB1cmwpIC0+
ICh1aW50NjRfdCByZXN1bHRTaXplKQogICAgIFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFZl
Y3RvcjxTdHJpbmc+IGJsb2JVUkxzLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcikKIAogICAg
IFN0b3JlRGVyaXZlZERhdGFUb0NhY2hlKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhS2V5IGtl
eSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCiAKICAgICBTZXRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAotICAgIENyZWF0
ZVNvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICBDcmVhdGVT
b2NrZXRTdHJlYW0oVVJMIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2Fj
aGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCiAKICAgICBFbnN1cmVMZWdhY3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suY3BwCmluZGV4IGNmNGU2NGQ1MDNmMWE5ZWUwYmRjNWUwZDUyOGM0
N2YyOTQyOWE2NDEuLjA1OWExMzAxNDNiYTVmM2E3ZTBkMWViMWIxNDY2ZmE5MWZhMGI5OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAK
QEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDbwogICAgIGlmIChyZXNw
b25zZS5pc0hUVFAwOSgpKSB7CiAgICAgICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwotICAgICAg
ICBpZiAocG9ydCAmJiAhaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJs
LnByb3RvY29sKCkpKSB7CisgICAgICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRG
b3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICAgICAgY2Fu
Y2VsKCk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoeyBTdHJp
bmcoKSwgMCwgdXJsLCAiQ2FuY2VsbGVkIGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIiB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwCmluZGV4IDY1ZWFiYjJiZjNiNTlkMmZkNDdhYTQxMjY1ZGZmNjk5NDhiMzgwZGIu
LmQ3M2E2ZWE2ZmYxMmMzMDRiZmE3NGJhYjk1YmU2YWVlZTY2Yjg5OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAt
NDgsOSArNDgsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMTc5
N2Q3ZTAyNWEwNGRkMjNjZTQ5N2M4MTFhZjI4MWEyNTk3MTI1ZC4uODQ2Y2I0ZDNhZDNiYzk1YTBh
ZWUxYmJlZTA2MDZkMjMxNDVjMWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjsKIAogY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogcHVibGljOgotICAgIE5l
dHdvcmtMb2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1h
cCYmLCBXZWJDb3JlOjpVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBX
ZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIHNob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlKTsKKyAgICBOZXR3b3JrTG9hZENo
ZWNrZXIoV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYs
IFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9s
aWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MgPSBmYWxzZSk7CiAgICAgfk5ldHdvcmtMb2FkQ2hlY2tlcigpOwogCiAgICAgdXNp
bmcgUmVxdWVzdE9yRXJyb3IgPSBFeHBlY3RlZDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3I+OwpAQCAtNjksMTQgKzY5LDE0IEBAIGNsYXNzIE5ldHdvcmtM
b2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsK
IAogICAgIHZvaWQgc2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYmIGhlYWRlcnMpIHsgbV9jc3BSZXNwb25zZUhlYWRlcnMg
PSBXVEZNb3ZlKGhlYWRlcnMpOyB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAg
ICB2b2lkIHNldENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6OlVSTCYmIG1haW5E
b2N1bWVudFVSTCwgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
PiBpZGVudGlmaWVyKQorICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoVVJM
JiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXI+IGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5Eb2N1bWVudFVSTCA9
IFdURk1vdmUobWFpbkRvY3VtZW50VVJMKTsKICAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICB9CiAjZW5kaWYKIAotICAgIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3N0
b3JlZENyZWRlbnRpYWxzUG9saWN5OyB9CiAKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZEluZm9y
bWF0aW9uIHRha2VOZXR3b3JrTG9hZEluZm9ybWF0aW9uKCkgeyByZXR1cm4gV1RGTW92ZShtX2xv
YWRJbmZvcm1hdGlvbik7IH0KQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRDaGVj
a2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogCiAgICAg
dm9pZCBjb250aW51ZUNoZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
VmFsaWRhdGlvbkhhbmRsZXImJik7CiAKLSAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNrKGNv
bnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2so
Y29uc3QgVVJMJikgY29uc3Q7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09S
U1JlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9u
SGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKQEAgLTExOCwxMSAr
MTE4LDExIEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQ7CiAgICAgV2Vi
Q29yZTo6SFRUUEhlYWRlck1hcCBtX29yaWdpbmFsUmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBm
b3IgQ09SUyBjaGVja3MuCiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX2ZpcnN0UmVxdWVz
dEhlYWRlcnM7IC8vIE5lZWRlZCBmb3IgQ09SUyBjaGVja3MuCi0gICAgV2ViQ29yZTo6VVJMIG1f
dXJsOworICAgIFVSTCBtX3VybDsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
IG1fb3JpZ2luOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVyczsKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQotICAgIFdlYkNvcmU6OlVSTCBtX21haW5Eb2N1bWVudFVSTDsKKyAg
ICBVUkwgbV9tYWluRG9jdW1lbnRVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAj
ZW5kaWYKIApAQCAtMTMxLDcgKzEzMSw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICBib29sIG1faXNT
aW1wbGVSZXF1ZXN0IHsgdHJ1ZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIHNpemVfdCBt
X3JlZGlyZWN0Q291bnQgeyAwIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fcHJldmlvdXNVUkw7Cisg
ICAgVVJMIG1fcHJldmlvdXNVUkw7CiAgICAgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5IG1fcHJl
ZmxpZ2h0UG9saWN5OwogICAgIFN0cmluZyBtX2RudEhlYWRlclZhbHVlOwogICAgIFN0cmluZyBt
X3JlZmVycmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAppbmRleCBlYjg4NjY0ODEzOWNjN2I3NTllNzJjNjgxODI4MGI1ZDA0NzEwOWUwLi4w
NmMxYjNhZDRlYWU0Y2Q3ZDQyZDI5MDQ0NTUyOGE5OTRjY2E5MWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNzYsMTMgKzc2LDEz
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFj
a0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAj
ZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiBoYW5kbGVGb3JXcml0aW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZUZvcldyaXRpbmcs
IHVpbnQ2NF90IHJlcXVlc3RJRCkKIHsKICAgICBhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZShXVEZNb3ZlKGhhbmRsZUZvcldyaXRpbmcpKTsKICAgICBpZiAoIWV4dGVu
c2lvbikgewpAQCAtMTAwOCw3ICsxMDA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2Fj
aGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF8KICAg
ICAgICAgY2FsbGJhY2soU3RyaW5nIHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0sIHF1b3RhKTsK
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVy
bCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kpCiB7CiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQogICAgIE5ldHdvcmtMb2FkUGFy
YW1ldGVycyBwYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCmluZGV4IGZiMzc3M2QxZWZlMWQzNDIxNmQ2YWVmY2U0ODUzZWM3ODk5ZGE1
NGMuLmFhYWRiMTMzYzc5ZmZhMTFjMGNmNjgyMzAyZTdiZDBhMGU2MWQzY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTY1LDcgKzY1LDYg
QEAgY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFNX
U2VydmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiBlbnVtIGNsYXNzIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5Owogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwog
c3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKQEAgLTE3Miw3ICsxNzEsNyBAQCBjbGFzcyBOZXR3
b3JrUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2Vy
OjpDbGllbnQKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHF1b3RhKT47CiAgICAg
dm9pZCBjYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VQ
YXJhbWV0ZXJzQ2FsbGJhY2smJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBXZWJD
b3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgdm9pZCBw
cmVjb25uZWN0VG8oY29uc3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kp
OwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9nQ29va2llSW5mb3JtYXRpb247IH0KQEAgLTI5Myw3ICsyOTIsNyBAQCBjbGFz
cyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRN
YW5hZ2VyOjpDbGllbnQKICAgICB2b2lkIHN5bmNBbGxDb29raWVzKCk7CiAgICAgdm9pZCBkaWRT
eW5jQWxsQ29va2llcygpOwogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYs
IHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldElnbm9y
ZVRMU0Vycm9ycyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFjNzNiZWQ0MmUyZDQ1YTdjZThj
MWZjNDRiM2M3NmYyYmIyYTllYmUuLjc4ZjljYjI5ODZkMzA0YzViMDJlZjgzNWI3MTk3MjBjNDMw
ZTIzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNzcsOSArNzcsOSBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkR2V0U2FuZGJveEV4dGVuc2lvbnNG
b3JCbG9iRmlsZXModWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5IGV4dGVuc2lvbnMpCiAjZW5kaWYKIAotICAgIFdyaXRlQmxvYlRvRmlsZVBh
dGgoV2ViQ29yZTo6VVJMIGJsb2JVUkwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgV3JpdGVCbG9i
VG9GaWxlUGF0aChVUkwgYmxvYlVSTCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIFByZWNvbm5l
Y3RUbyhXZWJDb3JlOjpVUkwgdXJsLCBlbnVtIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBQcmVjb25uZWN0VG8oVVJMIHVybCwg
ZW51bSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0Jsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3Qs
IHVpbnQ2NF90IGNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkNjM3Mzhh
ZWVjOGEzNTM1ZDA5NjEwMzY5ZTc4NjQ5MWIxZTlkMmY5Li4yNzQzZTEyOWM4NzlmNmIwYzI1YzIx
MWJhMDA4OTM5NzhhM2EwYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC02NSw3ICs2
NSw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIDogcHVibGljIE5ldHdv
cmtMb2FkUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4+IGZyYW1lQW5jZXN0b3JPcmlnaW5zOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKLSAgICBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMOworICAgIFVSTCBtYWluRG9j
dW1lbnRVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IGQxYzY4ODllYTY0OGNjYWNmMDhhYzE0YmU3YjZjNTJjYTNiMDNkMzYuLjQzYWVk
NTQ2ZGVmNjBlOGFkY2NlZmMxMzlhNzJmODZhZmY3NWRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk3
Niw3ICs5NzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3Jt
YXRpb24oKSBjb25zdAogICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKCJOZXR3b3JrUmVzb3VyY2VM
b2FkZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2Ft
ZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51
cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlE
KCksIGlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZv
cm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZv
aWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRp
b24oKSk7CiAKQEAgLTEwMDMsNyArMTAwMyw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29r
aWVJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPCiAj
dW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5m
b3JtYXRpb25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRP
YmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVu
dGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhZmIwZTlj
Nzk1NjYzZWFiMDVlYzRhZjRmMzgyNTRiNzdmYWVjMWRhLi5mODc0ZjhkYmE2ZTljNWU1NjEwZjcz
NGQzNGNkNDc2MDFiMDRhODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRpYyBib29sIHNob3Vs
ZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3Jt
YXRpb24oY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAog
cHJpdmF0ZToKQEAgLTEzNCw3ICsxMzQsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIg
ZmluYWwKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50
cnk+JiYpOwogICAgIHZvaWQgY29udGludWVQcm9jZXNzaW5nQ2FjaGVkRW50cnlBZnRlckRpZFJl
Y2VpdmVSZXNwb25zZShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogCi0g
ICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JY
RnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIGJvb2wgc2hvdWxk
SW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIGVudW0gY2xhc3MgRmlyc3RMb2FkIHsg
Tm8sIFllcyB9OwpAQCAtMTY5LDcgKzE2OSw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRl
ciBmaW5hbAogCiAgICAgLy8gQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAgdm9pZCBh
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYsIHVuc2lnbmVkIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9y
dChXZWJDb3JlOjpVUkwmJiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQoVVJMJiYsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4m
JikgZmluYWw7CiAgICAgdm9pZCBlbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChX
ZWJDb3JlOjpTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBsb2dTbG93Q2FjaGVSZXRyaWV2ZUlmTmVlZGVkKGNvbnN0IE5ldHdvcmtDYWNoZTo6
Q2FjaGU6OlJldHJpZXZlSW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggNDJkMzZiYzRjYzNmZTQzMmYzNTI0
YzgzYjBjOWY4ODRlOGQ3NDQzYy4uYzVhNjJjNjhmZTlkYTY1NmU0MjMzZmJkMTM2OWEyYzY2MWUy
OWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRTdHJlYW0uY3BwCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gTmV0d29y
a1NvY2tldFN0cmVhbTo6Y3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25B
dWRpdFRva2VuJiYgYXVkaXREYXRhKQorUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtT
b2NrZXRTdHJlYW06OmNyZWF0ZShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYm
IGF1ZGl0RGF0YSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU29ja2V0U3Ry
ZWFtKFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBpZGVudGlm
aWVyLCBjb25uZWN0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggOTA2ZTU4
ZWJmNTc0MjVkNjgzNzcwODkxNjg1ZmRhYmQyYTgzN2JjOC4uMzI2ODcxNmY0NDY5YzA5OTNmMjU5
N2QwOWNiZTE1ODhlNmYyM2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKQEAgLTM5LDE0ICszOSwxMyBAQCBjbGFzcyBEYXRh
UmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0
d29ya1NvY2tldFN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRTdHJlYW0+
LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmLCBQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRf
dCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2Vu
JiYpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFVSTCYmLCBQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRf
dCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2Vu
JiYpOwogICAgIH5OZXR3b3JrU29ja2V0U3RyZWFtKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtNjcsNyArNjYsNyBA
QCBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Nv
Y2tldFN0cmVhbT4sIHB1YmxpYyBJUEM6OgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGZpbmFsOwogCi0gICAgTmV0d29ya1NvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwm
JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWlu
dDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRU
b2tlbiYmKTsKKyAgICBOZXR3b3JrU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0
aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogCiAgICAgdWlu
dDY0X3QgbV9pZGVudGlmaWVyOwogICAgIElQQzo6Q29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDlmMGM2Yjg2YjQyMGY0
NTViZmZjMmRlNmI5NGViZTdjOGJlMTQzYTAuLmQ0NTQzZjIzNWI5MDQ3YzU3MDljODFmZmRhMzg2
MWM1OWY3ODQyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAg
LTM2LDcgKzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1cml0
eVBvbGljeTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTEsNyArNTAsNyBAQCBjbGFzcyBQaW5nTG9hZCBmaW5hbCA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxQaW5nTG9hZD4sIHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQwogcHJp
dmF0ZToKICAgICB+UGluZ0xvYWQoKTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgY3VycmVu
dFVSTCgpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgY3VycmVudFVSTCgpIGNvbnN0OwogICAgIFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5KCkgY29u
c3Q7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgK
aW5kZXggMmNhNjYyNWQxYzAwZTZkMjdkNTI1ODg2MTcyMWZjYzUwYjUzNGI1NS4uOWQxNzAzNzg5
NGY1YjUxMTAzOGRlMDZiYWQwOWRkN2Y2MzRjN2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaApAQCAtOTAsOCArOTAsOCBAQCBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rp
b24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ogog
ICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwg
U3RyaW5nJiYgcmVmZXJyZXIpOwogICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7
CiAKLSAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNo
UmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9w
T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7Ci0gICAgdm9pZCBnZXRSZWdp
c3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGNsaWVudFVSTCk7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBy
ZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpOworICAgIHZvaWQg
Z2V0UmVnaXN0cmF0aW9ucyh1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3Qg
VVJMJiBjbGllbnRVUkwpOwogCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCmluZGV4IDA2MTk1YjhhZDE5NDYxOGNkZmY2ZmZlOWQ1NzVlOWYzYTQ0NGE3ZWQuLjI5NGJk
NTk5ZDQwYmNjMjExODRkOTdkN2FkNTBjYmM4YzMwMWEyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsOSArMzYsOSBAQCBt
ZXNzYWdlcyAtPiBXZWJTV1NlcnZlckNvbm5lY3Rpb24gewogCiAgICAgRGlkUmVzb2x2ZVJlZ2lz
dHJhdGlvblByb21pc2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBrZXkp
CiAKLSAgICBNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0
Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0
b3BPcmlnaW4sIFdlYkNvcmU6OlVSTCBjbGllbnRVUkwpCi0gICAgV2hlblJlZ2lzdHJhdGlvblJl
YWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJM
IGNsaWVudFVSTCkKLSAgICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3Ry
YXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKKyAgICBNYXRjaFJlZ2lz
dHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmll
ciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGll
bnRVUkwpCisgICAgV2hlblJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3Ry
YXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKKyAgICBHZXRSZWdpc3RyYXRpb25zKHVp
bnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKICAg
ICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSB0b3BPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSBkYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyPiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KQogICAgIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpp
bmRleCBkODZhYjYwOTM5Nzc2NWM1YmJmYTc5MzU0YTExNWI3Yzc0OTFkMjdlLi42MTE2OTJkMTk0
OTk3MmZlYjFlM2NlODViODhiODU4NTU5ZmU2NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1
LDcgKzM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsK
ICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
c3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIpOwogICAgIE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25z
KTsKICAgICBDbGFpbSh1aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgU2V0
U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgV2ViQ29yZTo6VVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgV2ViQ29yZTo6VVJMIHJl
c3BvbnNlVVJMLCBTdHJpbmcgbWltZVR5cGUpOworICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0
cmluZyBzY3JpcHQsIFVSTCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVUeXBlKTsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA1NWEw
OGJjMDhjMDhkMWQ4YThhYzg2MjI4ZGY2NTAxYTkxNTlhODdhLi5iMTliZmQxMDA1NzI2NzY0MjE2
NzAwZjViMzg0YzZiZWVmMTQzMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMzQsNyArMTM0
LDcgQEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3IKIH0KIAogCi12b2lkIEVuZ2luZTo6cmV0cmll
dmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpVUkwmJiB1cmwsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRz
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCwg
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGZyb20oc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyLCB1cmwgPSBXVEZNb3ZlKHVybCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAg
ICAgICAgIGVuZ2luZS5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHVy
bCksIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEVuZ2luZTo6
cmV0cmlldmVDYWNoZXMoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2
NF90IHVwZGF0ZQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsLCBSZWNvcmRzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIHJlYWRDYWNoZShjYWNoZUlkZW50aWZpZXIsIFt1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA4
YzJlOGNjZTE0ZDgxMjkwOTdmNzFhYzIxZTI2ZTM2MWZkNmQ2ODMzLi43ZTE0MjI1YmVlNTBhOTc3
YjVmYzkyNTE0NjU0NjdiYjM0ZDgzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTY1LDcgKzY1LDcg
QEAgY2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiwgcHVibGljIENhbk1h
a2VXZWFrUHRyPEVuZ2luZT4gewogICAgIHN0YXRpYyB2b2lkIHJlbW92ZShQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CiAgICAgc3RhdGljIHZvaWQgcmV0cmlldmVDYWNoZXMo
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCB1aW50NjRfdCB1cGRhdGVD
b3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwog
Ci0gICAgc3RhdGljIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlUmVjb3JkcyhQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBwdXRS
ZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVN
YXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYs
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwog
CkBAIC0xMDQsNyArMTA0LDcgQEAgY2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5n
aW5lPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEVuZ2luZT4gewogICAgIHZvaWQgY2xlYXJNZW1v
cnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNl
bnRhdGlvbigpOwogCi0gICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHND
YWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYp
OwogICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5n
UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5o
CmluZGV4IDdmYjZlMDgxOGVjMjQxNTk1ZjgyYzY3NzJjODRiNWUzMjBjZjc2MTUuLjg5ODAxOGU0
ZWEzN2ZiMTJmYjYzMmIxOTJmZThhZWExYzcxNDY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RydWN0IFJlY29yZEluZm9ybWF0aW9uIHsKIAogICAgIHVp
bnQ2NF90IHNpemUgeyAwIH07CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsOworICAgIFVSTCB1cmw7
CiAgICAgYm9vbCBoYXNWYXJ5U3RhciB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4gdmFyeUhlYWRlcnM7CiB9OwpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBDYWNoZSB7CiAg
ICAgY29uc3QgU3RyaW5nJiB1bmlxdWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVOYW1l
OyB9CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6
OlVuaW5pdGlhbGl6ZWQ7IH0KIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCByZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJbmZvIGluZm8oKSBjb25zdCB7IHJldHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07IH0K
IAogICAgIHZvaWQgcHV0KFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYm
LCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsK
QEAgLTk0LDggKzk0LDggQEAgY2xhc3MgQ2FjaGUgewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PERlY29kZWRSZWNvcmQ+IGRlY29kZVJlY29yZEhlYWRlcihjb25zdCBOZXR3b3JrQ2FjaGU6OlN0
b3JhZ2U6OlJlY29yZCYpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlv
bj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIGNvbnN0IFZlY3Rv
cjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYp
IGNvbnN0OworICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNv
bnN0IFVSTCYpOworICAgIGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNG
cm9tVVJMKGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIFJlY29yZEluZm9ybWF0aW9uJiBhZGRSZWNv
cmQoVmVjdG9yPFJlY29yZEluZm9ybWF0aW9uPiosIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpSZWNvcmQmKTsKIAogICAgIHZvaWQgc3RvcmVSZWNvcmRzKFZlY3RvcjxXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
SWRlbnRpZmllcnNDYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
Y3BwCmluZGV4IDI5YjM4YjFhMmUzZWJiNDExNzcyYTJhZWFhYmRjZWZiM2NkNGRlNzMuLmM2MmNi
M2FiODU3NDhhNWIwYzg5ZTU3YjE1Y2YxYzA1NmQ4NzEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHJlcQogICAgIH0pOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJl
dHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCkK
K3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgVVJMJiYgdXJsKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInJldHJpZXZlUmVjb3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hlICUiIFBSSXU2NCwgcmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7CiAgICAgRW5naW5lOjpyZXRyaWV2ZVJl
Y29yZHMoc2Vzc2lvbklELCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW2Nvbm5lY3Rp
b24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVl
c3RJZGVudGlmaWVyXShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uaAppbmRleCBiYzg4MGY1ZWI1ODlhZWRjZmVlNDVhMjM0MTgzOGIyNTNk
YmE2MTA0Li42YTNkZGM2M2QyYTA4ODVjYTRjNTE0MjVlNTZjM2E1Y2M5NjgzYTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdAogICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBy
ZW1vdmVSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2
b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlm
aWVyLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgdWludDY0X3QgdXBkYXRlQ291bnRlcik7CiAK
LSAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYpOwor
ICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJik7CiAgICAgdm9pZCBk
ZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMo
UEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IGUzMTA3ZTIwMTQ2ZDU5MDAzYjIwNmIxZGVkZjZmODYzY2I4YzU1ZWUuLjYwZTM5YWEyYzQw
NWRjYzk4YWFhOTIwMDk0YWUxMGQ4ZWFiNTQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2FnZXMg
LT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiB7CiAgICAgQ2xlYXJNZW1vcnlSZXByZXNl
bnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbik7CiAgICAgRW5naW5lUmVw
cmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllcik7CiAKLSAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpVUkwgdXJsKTsKKyAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBVUkwgdXJsKTsKICAgICBEZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6
OkNhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIFB1dFJlY29yZHMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3Jk
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5oCmluZGV4IGYxNWFkNmJkMGFkYzhjNzM1OGMxYTk0OTk4MGQ4NDA5ZTYyODMzYTQuLjAx
N2FkNjNlMmM5ZWI3MzM0NWM1NzYxZDlhYTQ3YmRmZjY5ZTMzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMzcsNyArMzcs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCBhMTU1
ZTlmMmUzYWUxMzgxNDQzYTRhMGNlMGIyNDA3NTdlNGE2OWViLi5kMDY2YTg5NWI5NDA1ODFkZWE4
Y2MxM2JhNDQyMzQ1NzllNTZkZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI5
NCw3ICsyOTQsNyBAQCBzdGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFn
bm9zdGljS2V5KFVzZURlY2lzaW9uIGRlY2lzaW9uKQogCiB2b2lkIFN0YXRpc3RpY3M6OnJlY29y
ZFJldHJpZXZlZENhY2hlZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXks
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVXNlRGVjaXNpb24gZGVj
aXNpb24pCiB7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOwor
ICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAoZGVjaXNpb24gPT0g
VXNlRGVjaXNpb246OlVzZSkgewogICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQ
cm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIGlzIGluIHRoZSBjYWNoZSBhbmQgaXMg
dXNlZCIsIHdlYlBhZ2VJRCwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAg
ICAgICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhSZXN1bHQod2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5ldHdv
cmtDYWNoZUtleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJldHJpZXZhbEtl
eSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MsIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZTo6WWVzKTsKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnJlY29y
ZFJldHJpZXZlZENhY2hlZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXks
CiAKIHZvaWQgU3RhdGlzdGljczo6cmVjb3JkUmV2YWxpZGF0aW9uU3VjY2Vzcyh1aW50NjRfdCB3
ZWJQYWdlSUQsIGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgp
OworICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBMT0coTmV0d29ya0Nh
Y2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIHdhcyBzdWNj
ZXNzZnVsbHkgcmV2YWxpZGF0ZWQiLCB3ZWJQYWdlSUQsIHJlcXVlc3RVUkwuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOwogCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dn
aW5nS2V5czo6bmV0d29ya0NhY2hlS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5
czo6cmV2YWxpZGF0aW5nS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0UGFz
cywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5oCmluZGV4IGVmMjUyYTFjN2I5YzZiZDU2ODA5NzMwYzJkMDQ5MzM1MzFmMDRjOWIu
LjQzOTIxYTAwMjRlOTdkZDM2ZjBkMjIxODUxZWM0YWU5ODc2MWExNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2Vz
RW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmgKQEAgLTIzLDE1ICsyMywxNCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnlfaAotI2RlZmluZSBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeV9oCisj
cHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFM
SURBVElPTikKIAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CkBAIC01MCw3ICs0OSw3IEBAIGNsYXNz
IFN1YnJlc291cmNlSW5mbyB7CiAgICAgV2FsbFRpbWUgZmlyc3RTZWVuKCkgY29uc3QgeyByZXR1
cm4gbV9maXJzdFNlZW47IH0KIAogICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVy
biBtX2lzVHJhbnNpZW50OyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5Rm9y
Q29va2llcygpIGNvbnN0IHsgQVNTRVJUKCFtX2lzVHJhbnNpZW50KTsgcmV0dXJuIG1fZmlyc3RQ
YXJ0eUZvckNvb2tpZXM7IH0KKyAgICBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkg
Y29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29v
a2llczsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJz
KCkgY29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVy
czsgfQogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KCkgY29uc3Qg
eyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9wcmlvcml0eTsgfQogCkBAIC02NSw3
ICs2NCw3IEBAIGNsYXNzIFN1YnJlc291cmNlSW5mbyB7CiAgICAgV2FsbFRpbWUgbV9maXJzdFNl
ZW47CiAgICAgYm9vbCBtX2lzVHJhbnNpZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTYW1l
U2l0ZSB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7
CisgICAgVVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCBtX3JlcXVlc3RIZWFkZXJzOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5
IG1fcHJpb3JpdHk7CiB9OwpAQCAtMTA3LDQgKzEwNiwzIEBAIGNsYXNzIFN1YnJlc291cmNlc0Vu
dHJ5IHsKIH0gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNoZQogCiAjZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQotI2VuZGlmIC8vIE5ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcAppbmRleCA5NjYx
NjhiNGUwNzgxMjQ4ZTU1NjgxZmY0Yjc3N2U2ZTE2MDMwOTQ1Li5iMWMwZmIxMTFiZDViZDYxMTQ4
OTk4YjRiOTdhN2YwZjNlM2NhMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwCkBAIC0zNiw5
ICszNiw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVz
cG9uc2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0JyaWdhbmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
UGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtODEsOCArODEsNyBAQCBSZXF1ZXN0OjpSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogUmVxdWVzdDo6b3BlcmF0b3IgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0KCkgY29uc3QKIHsKLSAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKHVy
bCk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocGFyc2VyLnJlc3VsdCgp
LCByZWZlcnJlciwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xp
Y3k+KHBvbGljeSkpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFVSTCh7
IH0sIHVybCksIHJlZmVycmVyLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeT4ocG9saWN5KSk7CiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKG1ldGhvZCk7
CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpCkBAIC0xMTgsOCArMTE3
LDcgQEAgUmVzcG9uc2U6OlJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogCiBSZXNwb25zZTo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSgpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcih1cmwpOwotICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UocGFyc2VyLnJlc3VsdCgpLCBtaW1lVHlw
ZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUpOworICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKHsgfSwgdXJsKSwgbWltZVR5cGUsIGV4cGVjdGVkTGVu
Z3RoLCB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICByZXNwb25zZS5zZXRIVFRQVmVyc2lvbih2ZXJz
aW9uKTsKICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOwogICAgIHJlc3Bv
bnNlLnNldEhUVFBTdGF0dXNUZXh0KHJlYXNvbik7CkBAIC0xNTIsOCArMTUwLDcgQEAgRXJyb3I6
OkVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiBFcnJvcjo6b3Bl
cmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJM
UGFyc2VyIHBhcnNlcihmYWlsaW5nVVJMKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBwYXJzZXIucmVzdWx0KCksIGxvY2FsaXplZERlc2NyaXB0
aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlPih0eXBlKSk7Cisg
ICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcihkb21haW4sIGVycm9yQ29kZSwgVVJMKHsg
fSwgZmFpbGluZ1VSTCksIGxvY2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yOjpUeXBlPih0eXBlKSk7CiAKICAgICByZXR1cm4gZXJyb3I7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0Nh
cHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDI3Njg5ZWUzYjcyMzk4ZDg1MTIwZjczNjM1
N2MwMDcyNDIyODllOGUuLmQ1NjVhNGVhMzc3MWU0NjM3OTczZjcxOWNhMTk4YTI4YzU1N2UwZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3Jr
Q2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpbmNs
dWRlICJOZXR3b3JrQ2FwdHVyZUxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZVJl
c291cmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxpdGVyYXRv
cj4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAg
LTE0Niw3ICsxNDYsNyBAQCBSZXNvdXJjZSogTWFuYWdlcjo6ZmluZEJlc3RGdXp6eU1hdGNoKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogICAgIFJlc291cmNlKiBi
ZXN0TWF0Y2ggPSBudWxscHRyOwogICAgIGludCBiZXN0U2NvcmUgPSBrTWluTWF0Y2g7Ci0gICAg
Y29uc3QgYXV0byYgcmVxdWVzdFBhcmFtZXRlcnMgPSBXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNl
VVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkpOworICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RQYXJh
bWV0ZXJzID0gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkp
OwogICAgIGZvciAoYXV0byBpUmVzb3VyY2UgPSBsb3dlcjsgaVJlc291cmNlICE9IHVwcGVyOyAr
K2lSZXNvdXJjZSkgewogICAgICAgICBpbnQgdGhpc1Njb3JlID0gZnV6enlNYXRjaFVSTHModXJs
LCByZXF1ZXN0UGFyYW1ldGVycywgaVJlc291cmNlLT51cmwoKSwgaVJlc291cmNlLT5xdWVyeVBh
cmFtZXRlcnMoKSk7CiAgICAgICAgIC8vIFRPRE86IENvbnNpZGVyIGlnbm9yaW5nIGFueSBtYXRj
aGVzIDwgMCBhcyBiZWluZyB0b28gZGlmZmVyZW50LgpAQCAtMTY1LDcgKzE2NSw3IEBAIFJlc291
cmNlKiBNYW5hZ2VyOjpmaW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogLy8gVE9ETzogQ29udmVydCB0byBhbiBpbnRlcmZhY2UgYmFzZWQg
b24gUmVzb3VyY2VSZXF1ZXN0IHNvIHRoYXQgd2UgY2FuIGRvCiAvLyBkZWVwZXIgbWF0Y2hpbmcu
CiAKLWludCBNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyhjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQ
YXJhbWV0ZXJzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXZWJDb3Jl
OjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpCitpbnQgTWFu
YWdlcjo6ZnV6enlNYXRjaFVSTHMoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXVEY6OlVS
TFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBVUkwmIHJl
c291cmNlVVJMLCBjb25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNl
UGFyYW1ldGVycykKIHsKICAgICAvLyBUT0RPOiBjb25zaWRlciByZXF1aXJpbmcgdGhhdCBhbnkg
dHJhaWxpbmcgc3VmZml4ZXMgKGUuZy4sICIuanMiLAogICAgIC8vICIucG5nIiwgIi5jc3MiLCAi
Lmh0bWwiLCBldGMuKSBzaG91bGQgYmUgYW4gZXhhY3QgbWF0Y2guCkBAIC00MTksNyArNDE5LDcg
QEAgU3RyaW5nIE1hbmFnZXI6Omhhc2hUb1BhdGgoY29uc3QgU3RyaW5nJiBoYXNoKQogICAgIHJl
dHVybiBwYXRoOwogfQogCi1TdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21h
aW4oY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCitTdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlp
bmdDb21tb25Eb21haW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHVybC5wcm90b2Nv
bEhvc3RBbmRQb3J0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKaW5kZXggM2M2YjUwMTBk
YTIzNDFlNjgyY2IxY2EyNDAxYTA2NjBmMzljNzQxYS4uYzM2ODE2YzlhODlhMWM3ZWZhZDEwNGYx
YjAzOTA4ODM2ZGNhN2YzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtMjksOCArMjks
OCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04Miw3
ICs4Miw3IEBAIGNsYXNzIE1hbmFnZXIgewogICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgb3BlbkNh
Y2hlRmlsZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUp
OwogCiAgICAgU3RyaW5nIHJlcXVlc3RUb1BhdGgoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7Ci0gICAgc3RhdGljIFN0cmluZyB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbihjb25z
dCBXZWJDb3JlOjpVUkwmKTsKKyAgICBzdGF0aWMgU3RyaW5nIHVybElkZW50aWZ5aW5nQ29tbW9u
RG9tYWluKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgogICAgIE1hbmFnZXIoKSA9IGRlZmF1bHQ7
CkBAIC05MCw3ICs5MCw3IEBAIGNsYXNzIE1hbmFnZXIgewogCiAgICAgUmVzb3VyY2UqIGZpbmRF
eGFjdE1hdGNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIFJlc291cmNl
KiBmaW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0g
ICAgaW50IGZ1enp5TWF0Y2hVUkxzKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29u
c3QgV2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVxdWVzdFBhcmFtZXRlcnMs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzb3VyY2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNl
cjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNlUGFyYW1ldGVycyk7CisgICAgaW50IGZ1enp5TWF0
Y2hVUkxzKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVu
Y29kZWRGb3JtJiByZXF1ZXN0UGFyYW1ldGVycywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCwgY29u
c3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpOwog
CiAgICAgdm9pZCBsb2FkUmVzb3VyY2VzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNw
cAppbmRleCA3MDRjMGQ2YWQ0ZjY2YTBjM2NhYjNiYWYzZTk5NTYxZDg4ODRmMDQ1Li5mM2RjMjNj
NTcwNjk0ZWYzYmJmMjViYmJhMzIzNTFjZDgwZjc0MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVz
b3VyY2UuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlc291cmNlOjpSZXNvdXJjZShjb25zdCBTdHJp
bmcmIGV2ZW50RmlsZVBhdGgpCiB7CiB9CiAKLWNvbnN0IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6
OnVybCgpCitjb25zdCBVUkwmIFJlc291cmNlOjp1cmwoKQogewogICAgIGlmICghbV91cmwuaXNW
YWxpZCgpKSB7CiAgICAgICAgIGF1dG8gZXZlbnRzID0gZXZlbnRTdHJlYW0oKTsKQEAgLTUyLDgg
KzUyLDcgQEAgY29uc3QgV2ViQ29yZTo6VVJMJiBSZXNvdXJjZTo6dXJsKCkKICAgICAgICAgICAg
IERFQlVHX0xPR19FUlJPUigiRXZlbnQgc3RyZWFtIGRvZXMgbm90IGhhdmUgYSByZXF1ZXN0U2Vu
dCBldmVudDogZmlsZSA9ICIgU1RSSU5HX1NQRUNJRklFUiwgREVCVUdfU1RSKG1fZXZlbnRGaWxl
UGF0aCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gcmVxdWVzdFNlbnRFdmVu
dCA9IFdURjo6Z2V0PFJlcXVlc3RTZW50RXZlbnQ+KCpldmVudCk7Ci0gICAgICAgICAgICBXZWJD
b3JlOjpVUkxQYXJzZXIgcGFyc2VyKHJlcXVlc3RTZW50RXZlbnQucmVxdWVzdC51cmwpOwotICAg
ICAgICAgICAgbV91cmwgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgICAgICBtX3VybCA9IFVS
TCh7IH0sIHJlcXVlc3RTZW50RXZlbnQucmVxdWVzdC51cmwpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC02OCwxMCArNjcsMTAgQEAgY29uc3QgU3RyaW5nJiBSZXNvdXJjZTo6dXJsSWRlbnRpZnlp
bmdDb21tb25Eb21haW4oKQogICAgIHJldHVybiBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWlu
OwogfQogCi1XZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpxdWVy
eVBhcmFtZXRlcnMoKQorV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpx
dWVyeVBhcmFtZXRlcnMoKQogewogICAgIGlmICghbV9xdWVyeVBhcmFtZXRlcnMpCi0gICAgICAg
IG1fcXVlcnlQYXJhbWV0ZXJzID0gV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRG
b3JtKHVybCgpLnF1ZXJ5KCkpOworICAgICAgICBtX3F1ZXJ5UGFyYW1ldGVycyA9IFdURjo6VVJM
UGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHVybCgpLnF1ZXJ5KCkpOwogCiAgICAgcmV0dXJu
ICptX3F1ZXJ5UGFyYW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCmluZGV4IDc1
NzZjMGQ1ZTAwODQ4OTE2MmMxOGM5NjYwNGZlM2EzODdmMzllNWUuLmQ0OTNmNGE0YTM1YWQ4ZWE2
Y2RiMmRkOGUwMjVkNjkwYzU4OTI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaApAQCAt
MjksOSArMjksOSBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1cmVFdmVudC5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FwdHVyZSB7CkBAIC01NSwxNiArNTUsMTYg
QEAgY2xhc3MgUmVzb3VyY2UgewogcHVibGljOgogICAgIFJlc291cmNlKGNvbnN0IFN0cmluZyYg
ZXZlbnRGaWxlUGF0aCk7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpOworICAgIGNv
bnN0IFVSTCYgdXJsKCk7CiAgICAgY29uc3QgU3RyaW5nJiB1cmxJZGVudGlmeWluZ0NvbW1vbkRv
bWFpbigpOwotICAgIFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0gcXVlcnlQYXJh
bWV0ZXJzKCk7CisgICAgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIHF1ZXJ5UGFyYW1l
dGVycygpOwogICAgIEV2ZW50U3RyZWFtIGV2ZW50U3RyZWFtKCk7CiAKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fZXZlbnRGaWxlUGF0aDsKLSAgICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAgVVJM
IG1fdXJsOwogICAgIFN0cmluZyBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluOwotICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybT4gbV9xdWVyeVBh
cmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZv
cm0+IG1fcXVlcnlQYXJhbWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhcHR1
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGU1YWY0ZjgzZjFiNTAxYjhiM2Q4YTFiYzU3Yzlk
NzM5MDVmYzk5MTcuLjgwYjE0MDM0NzdhNTM5YjZhMGQxY2JiOWE0ZWFiOGJlNWZlM2RkZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmCiAgICAgfQogICAgIAogICAgIC8vIFNob3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIg
YSByZWRpcmVjdCBmcm9tIGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1cmUgb25lLgotICAg
IGlmIChtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVl
c3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJlcXVl
c3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChtX3Nob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0
cHMiKSAmJiBXVEY6OnByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikp
CiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAKICAgICBjb25zdCBh
dXRvJiB1cmwgPSByZXF1ZXN0LnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDdmMThjMDU2
ZjFhMDVkMmY5MDEwZTRhYjg3NTFlMTM0N2M4MmE2ZWIuLjI3MDU5MjVkODczMDhiOGEyYTY0NzAy
OWRmZDc4Yzc2OTVmMWRkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTQ2LDEyICs0NiwxMiBA
QAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVVUkxSZXNwb25z
ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0
Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKQEAgLTM0OCw3ICszNDgsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5T
VVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlkUmVj
ZQogICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpD
cmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgpKSB7CiAKICAgICAgICAgICAgICAg
ICBXZWJDb3JlOjpDcmVkZW50aWFsIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwu
dXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUpOwotICAgICAgICAgICAgICAgIFdlYkNvcmU6OlVSTCB1cmxUb1N0b3JlOworICAg
ICAgICAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICAgICAgICAgIGlmIChhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQw
MSkKICAgICAgICAgICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIHN0
b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IDQwMmVjMWRlMDE5NjJmMGNjZjQyMDQyOTU3MjM3
OTFmN2M2NTcyYTAuLmY1Y2MxYzFlMGFjNmRhODQyOTJjNDhiNDcxYjA4Yzg3YmYyOThlZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NN
YWMubW0KQEAgLTIxNSwxMSArMjE1LDExIEBAIHN0YXRpYyB2b2lkIGNhcmJvbldpbmRvd0hpZGRl
bihXaW5kb3dSZWYgd2luZG93KQogc3RhdGljIGJvb2wgb3BlbkNGVVJMUmVmKENGVVJMUmVmIHVy
bCwgaW50MzJfdCYgc3RhdHVzLCBDRlVSTFJlZiogbGF1bmNoZWRVUkwpCiB7CiAgICAgU3RyaW5n
IGxhdW5jaGVkVVJMU3RyaW5nOwotICAgIGlmICghUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCku
b3BlblVSTChXZWJDb3JlOjpVUkwodXJsKS5zdHJpbmcoKSwgc3RhdHVzLCBsYXVuY2hlZFVSTFN0
cmluZykpCisgICAgaWYgKCFQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5vcGVuVVJMKFVSTCh1
cmwpLnN0cmluZygpLCBzdGF0dXMsIGxhdW5jaGVkVVJMU3RyaW5nKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKCFsYXVuY2hlZFVSTFN0cmluZy5pc051bGwoKSAmJiBsYXVuY2hl
ZFVSTCkKLSAgICAgICAgKmxhdW5jaGVkVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCBsYXVuY2hlZFVSTFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7CisgICAgICAgICps
YXVuY2hlZFVSTCA9IFVSTChVUkwoKSwgbGF1bmNoZWRVUkxTdHJpbmcpLmNyZWF0ZUNGVVJMKCku
bGVha1JlZigpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zOTksNyArMzk5LDcgQEAgc3Rh
dGljIE5TUnVubmluZ0FwcGxpY2F0aW9uICpyZXBsYWNlZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxp
Y2F0aW9uQXRVUkxfb3B0aW9uc18KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChQbHVnaW5Q
cm9jZXNzOjpzaW5nbGV0b24oKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFdlYkNvcmU6OlVSTCh1
cmwpLnN0cmluZygpLCBhcmd1bWVudHMpKSB7CisgICAgaWYgKFBsdWdpblByb2Nlc3M6OnNpbmds
ZXRvbigpLmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5nKCksIGFyZ3VtZW50
cykpIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgKmVycm9yID0gbmlsOwogICAg
ICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVVSTC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IDdiMDFkMGU5
MjA1NjI4Y2QzYzAwMmVmNTdlZjExZTgxNGRjY2NiOTEuLmJiZDQyM2JjZjU3MTVlNGFkNzBiZjUy
ZGVmOGMyYzMwYzQxYmYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElVUkwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTIzLDMy
ICsyMywzMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgV2ViVVJMX2gKLSNkZWZpbmUgV2ViVVJMX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJM
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmlu
ZyYgc3RyaW5nKQorICAgIHN0YXRpYyBSZWY8QVBJOjpVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0
cmluZyYgc3RyaW5nKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKHN0
cmluZykpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8VVJMPiBjcmVhdGUoY29uc3QgVVJMKiBi
YXNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgcmVsYXRpdmVVUkwpCisgICAgc3RhdGljIFJlZjxB
UEk6OlVSTD4gY3JlYXRlKGNvbnN0IEFQSTo6VVJMKiBiYXNlVVJMLCBjb25zdCBXVEY6OlN0cmlu
ZyYgcmVsYXRpdmVVUkwpCiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAg
IGJhc2VVUkwtPnBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVS
TCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwu
Z2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVV
UkwpOwogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxTdHJpbmcgPSBhYnNv
bHV0ZVVSTC0+c3RyaW5nKCk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKFdU
Rk1vdmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJzb2x1dGVVUkxT
dHJpbmcpKTsKICAgICB9CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmlzTnVsbCgpOyB9CkBAIC01Niw3ICs1NSw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmpl
Y3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgc3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KIAotICAgIHN0YXRpYyBib29sIGVxdWFs
cyhjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKKyAgICBzdGF0aWMgYm9vbCBlcXVhbHMoY29u
c3QgQVBJOjpVUkwmIGEsIGNvbnN0IEFQSTo6VVJMJiBiKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGEudXJsKCkgPT0gYi51cmwoKTsKICAgICB9CkBAIC0xMDYsMTMgKzEwNSwxMyBAQCBjbGFzcyBV
UkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICB9
CiAKLSAgICBVUkwoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJMLCBjb25z
dCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAgIFVSTChzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpVUkw+
IHBhcnNlZFVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3N0cmlu
ZyhzdHJpbmcpCiAgICAgICAgICwgbV9wYXJzZWRVUkwoV1RGTW92ZShwYXJzZWRVUkwpKQogICAg
IHsKICAgICB9CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0CisgICAgY29u
c3QgV1RGOjpVUkwmIHVybCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNz
YXJ5KCk7CiAgICAgICAgIHJldHVybiAqbV9wYXJzZWRVUkw7CkBAIC0xMjIsMTMgKzEyMSwxMSBA
QCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAg
IHsKICAgICAgICAgaWYgKG1fcGFyc2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPihXZWJDb3JlOjpV
UkwoKSwgbV9zdHJpbmcpOworICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8
V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmlu
ZyBtX3N0cmluZzsKLSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpVUkw+IG1f
cGFyc2VkVVJMOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdURjo6VVJMPiBtX3BhcnNl
ZFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVJMX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRl
cm4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4u
aAppbmRleCA5YjVjN2Y2NmI0OGI4YTk2YmRkMmRjYmU4OWNhOTBhMTIzZDMwNmFhLi42Njk5NWEw
YTg4NTI2YmFjNTNhYjdkMWNjNTk2MTVhMzIwMjE5ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oCkBAIC0yNyw4ICsyNyw4
IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFVz
ZXJDb250ZW50VVJMUGF0dGVybiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6OlVzZXJDb250CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJl
dHVybiBtX3BhdHRlcm4uaG9zdCgpOyB9CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHNjaGVtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5zY2hlbWUoKTsgfQogICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5pc1ZhbGlkKCk7IH07Ci0gICAgYm9vbCBtYXRjaGVz
VVJMKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRj
aGVzKFdlYkNvcmU6OlVSTCh7IH0sIHVybCkpOyB9CisgICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0
IFdURjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdURjo6
VVJMKHsgfSwgdXJsKSk7IH0KICAgICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXR0ZXJuLm1hdGNoU3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBXVEY6OlN0
cmluZyYgcGF0dGVyblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggNzM2ZTFm
M2U2NjQ1Y2UwZWMyMTJmNmRiOWY4Nzg0M2Q1Y2QxM2RhNS4uMTQ5OTU2M2UzOWFlN2I5ODZkZTE3
MzQ3Njc4ODVmNmFhZDkyOGQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VS
TFJlcXVlc3QuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5o
IgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRGF0YS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCmluZGV4IGI4YThhOTBiY2QzYzM0NWNkNDc1NjUyNzcz
MTQzMmNmY2EwMTdjODcuLjhmMWZhOWFkNmUzNmU5OGFjNDEzZWJhOWVmOTU1M2NhZDQwNjM4Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
Y2YvV0tVUkxDRi5tbQppbmRleCBkZjE5ODNhNjAxNTBkZDdlYWRiYWU4M2QzODgyOGFiYWE3ODBl
MGFlLi5iZDkxYTQ1YjA5YzMxNGVmZjM2MzA1MWNjYjg4MTViZGNiYjZkYjg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2lt
cG9ydCAiV0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS05TVVJMLmgiCi0jaW1wb3J0IDxXZWJDb3Jl
L0NGVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9j
Zi9DRlVSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgV0tf
QVBJX0VOQUJMRUQKQEAgLTU2LDcgKzU2LDcgQEAgV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoQ0ZV
UkwoQ0ZVUkxSZWYgY2ZVUkwpCiAjZW5kaWYKIAogICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAg
V2ViQ29yZTo6Z2V0VVJMQnl0ZXMoY2ZVUkwsIHVybEJ5dGVzKTsKKyAgICBXVEY6OmdldFVSTEJ5
dGVzKGNmVVJMLCB1cmxCeXRlcyk7CiAKICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQ
SSh1cmxCeXRlcy5kYXRhKCkpOwogfQpAQCAtNjksNSArNjksNSBAQCBDRlVSTFJlZiBXS1VSTENv
cHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVSTFJlZikKICAg
ICAvLyBVVEYtOCB3aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0IFdlYktpdCBjbGll
bnRzIG1pZ2h0IGV4cGVjdC4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gV2ViS2l0Ojp0b0ltcGwo
VVJMUmVmKS0+c3RyaW5nKCkudXRmOCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVDRlVS
TEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpLCAwKS5sZWFrUmVmKCk7
CisgICAgcmV0dXJuIFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5sZW5ndGgoKSwgMCkubGVha1JlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCA5ZmU1OTU3MjA0Y2M3OTkz
ZWJjMDg4ODhiZDFmODkzMWVhNGViMDAxLi4zMWY2MWNlN2VhZjhiOWE5OWNiYWFkN2RkMDUzNzVk
YTgxYTI1YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRVUklSZXF1ZXN0LmNwcApAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUgIldlYktpdFVSSVJl
cXVlc3QuaCIKIAogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwCmluZGV4
IGQyNDU1ODkzNmNmNDYwNzU1NTcxMmExNmM5NGZkNDYxZWMwOThhMjMuLjI4N2VlZmQ0ZDljY2Y0
MDAzNjczZGU5N2I4OGQzYzJkNjNjMjM0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNp
bmNsdWRlICJXZWJLaXRVUklSZXNwb25zZS5oIgogCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9u
c2VQcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1
ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAu
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2
ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNl
Lm1tCmluZGV4IGRjMGY5MGYwZjM4NTFhYmYxMDA0ODRiYTU3M2FlNGFmOGU4MGIyMzIuLmJjMmZl
NDllMzBhYTM4MmI0MjNiNTRkYjJiYWQ3MmJiN2Y5N2VlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTMwLDggKzMwLDggQEAKIAogI2lu
Y2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTQ2LDggKzQ2LDggQEAgUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBhcmMKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJBcmNoaXZlUmVzb3VyY2UoV1RGTW92ZShhcmNoaXZlUmVzb3Vy
Y2UpKSk7CiB9CiAKLVdlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6
RGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKQotICAgIDogbV9hcmNoaXZlUmVzb3VyY2UoQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS0+Ynl0ZXMoKSwgZGF0
YS0+c2l6ZSgpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBVUkwpLCBNSU1FVHlwZSwg
dGV4dEVuY29kaW5nLCBTdHJpbmcoKSkpCitXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVS
ZXNvdXJjZShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZykKKyAgICA6IG1fYXJjaGl2ZVJl
c291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEt
PmJ5dGVzKCksIGRhdGEtPnNpemUoKSksIFdURjo6VVJMKFdURjo6VVJMKCksIHVybCksIE1JTUVU
eXBlLCB0ZXh0RW5jb2RpbmcsIFN0cmluZygpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKaW5kZXggNDMzNjM4Yjk0OGRmMDk3OGFi
M2MxYmQxYmExYTNiNzQxZGRmYTZhZi4uZDg2ZGM0YWI3NTBiZjgxY2Y5ZTM2NDNhZTY2OTRmY2Iz
MjQ3ZjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTIwLDcg
KzEyMCw3IEBAIHN0cnVjdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiB7CiAgICAgU3RyaW5nIHRp
dGxlOwogICAgIGJvb2wgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIHsgZmFsc2Ug
fTsKICAgICBib29sIGlzQXV0b2ZpbGxhYmxlVXNlcm5hbWVGaWVsZCB7IGZhbHNlIH07Ci0gICAg
V2ViQ29yZTo6VVJMIHJlcHJlc2VudGluZ1BhZ2VVUkw7CisgICAgVVJMIHJlcHJlc2VudGluZ1Bh
Z2VVUkw7CiAgICAgV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWUgYXV0b2ZpbGxGaWVsZE5hbWUg
eyBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Tm9uZSB9OwogICAgIFN0cmluZyBwbGFjZWhv
bGRlcjsKICAgICBTdHJpbmcgbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tO
U1VSTEV4dHJhcy5tbQppbmRleCAwMTg4Zjc0Nzk4MmE5NDBhNDhhYjg2ZjgyODhhYWIwMDZkZmQx
MWQ3Li41MTliOWQ4M2VkNzY2MWRjNmQ4N2Q2MjllN2M4Yzg1NWIwZWYyYmJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW0KQEAgLTI2LDEzICsyNiwxMSBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAKLSNpbXBv
cnQgPFdlYkNvcmUvQ0ZVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogQGltcGxlbWVudGF0aW9uIE5TVVJMIChXS0V4dHJh
cykKIAogKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5n
JilzdHJpbmcKQEAgLTUwLDcgKzQ4LDcgQEAgKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdU
RlN0cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcgcmVsYXRpdmVUb1VSTDooTlNVUkwKIC0gKFN0
cmluZylfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nCiB7CiAgICAgQ1N0cmluZyBvcmlnaW5h
bERhdGE7Ci0gICAgZ2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXNlbGYsIG9yaWdpbmFs
RGF0YSk7CisgICAgV1RGOjpnZXRVUkxCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpc2VsZiwgb3Jp
Z2luYWxEYXRhKTsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChvcmlnaW5hbERhdGEpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IDlkY2Y2ZjJlMWQ3MTUzM2Fk
NjQ1ZGY2M2RiZjI0MjI2NTc4NGI4YWYuLjUzY2UyZDFhZjA2ZDI1MWM4MDU1YmQyYWQ1MjdmYWE0
Njc2ZWU5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBAIC0zNCw4ICszNCw4
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdHJ1Y3QgQmFja0Zv
cndhcmRMaXN0U3RhdGUgewogc3RydWN0IFNlc3Npb25TdGF0ZSB7CiAgICAgQmFja0ZvcndhcmRM
aXN0U3RhdGUgYmFja0ZvcndhcmRMaXN0U3RhdGU7CiAgICAgdWludDY0X3QgcmVuZGVyVHJlZVNp
emU7Ci0gICAgV2ViQ29yZTo6VVJMIHByb3Zpc2lvbmFsVVJMOworICAgIFVSTCBwcm92aXNpb25h
bFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBkZjk3MzUwZTAzMGM5ODIzNWJh
M2JhZTRhZDVjYjA1NjVjOTRlNjc1Li5hOTE5NjkyZjY5YzIzYjcxMzM1NjY1OWFkMzA0NWQwM2Yw
ZmU5OWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uaCIKIAogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTA0LDggKzEwNCw4IEBA
IGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9jdW1lbnQoY29uc3Qg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYKICAgICBpZiAobWFpbkZyYW1lU3RhdGUuc3RhdGVPYmpl
Y3REYXRhIHx8IG90aGVyTWFpbkZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhKQogICAgICAgICBy
ZXR1cm4gbWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlciA9PSBvdGhlck1haW5G
cmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXI7CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJs
ID0gV2ViQ29yZTo6VVJMKHsgfSwgbWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKLSAgICBXZWJD
b3JlOjpVUkwgb3RoZXJVUkwgPSBXZWJDb3JlOjpVUkwoeyB9LCBvdGhlck1haW5GcmFtZVN0YXRl
LnVybFN0cmluZyk7CisgICAgVVJMIHVybCA9IFVSTCh7IH0sIG1haW5GcmFtZVN0YXRlLnVybFN0
cmluZyk7CisgICAgVVJMIG90aGVyVVJMID0gVVJMKHsgfSwgb3RoZXJNYWluRnJhbWVTdGF0ZS51
cmxTdHJpbmcpOwogCiAgICAgaWYgKCh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgfHwgb3Ro
ZXJVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIodXJsLCBvdGhlclVSTCkpCiAgICAgICAgIHJldHVybiBtYWluRnJhbWVTdGF0ZS5k
b2N1bWVudFNlcXVlbmNlTnVtYmVyID09IG90aGVyTWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1
ZW5jZU51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IGU1MDdiZjg3NTliMTE3ODkwODZlNTBkN2YwNmM1N2RkODM4MGE0ZjYuLjM5
NWVhNzU4ZDAzYzFhMDcxNjBhNmIzNWZmZWRhZTI4MmY5YjgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzcsMTEgKzc3LDExIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9U
aW1pbmdGdW5jdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXgu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxl
U2hlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAzZWViNDQyZTMyN2RjNzkxMmI0M2M0OTYzNmE2
NTc0Y2Y5YmM0NmNlLi45NTQ1MGY0MTFjN2ZiYTAzYzFlZDc2MTA1OWZkYmEzM2JhMDJlNWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtOTMs
NyArOTMsNiBAQCBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBjbGFz
cyBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4Owog
Y2xhc3MgVXNlclN0eWxlU2hlZXQ7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0
aW9uczsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3Jz
LmgKaW5kZXggMjdkMTRlMzFiMzEwODY2YzZmMTM2ZTNhZDhhYWZmODhlMjNiMzg0Mi4uN2Q2MDBj
NmQyM2I1NWRjYzM5NjMwOTkwNDA3Y2U3NDQ0NDZjYjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJy
b3JzLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTQ4LDE4ICs0Nywx
OCBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlcwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxI
YW5kbGVMb2FkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFVSTCYpOwogCiAjaWYgVVNF
KFNPVVApCi1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7CitXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7
CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdURjo6U3RyaW5nJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLVdlYkNv
cmU6OlJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
VEY6OlN0cmluZyYpOwotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJv
cihjb25zdCBXZWJDb3JlOjpVUkwmKTsKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW52YWxpZFBh
Z2VSYW5nZVRvUHJpbnQoY29uc3QgV2ViQ29yZTo6VVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKK1dlYkNvcmU6
OlJlc291cmNlRXJyb3IgcHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgVVJMJik7CitXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGNvbnN0IFVSTCYpOwogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IDE3OWNhNGJlMzdiZWQwZTNkY2NiNWQzMjYzZjNm
MDY5YjA1MjU1NWIuLmMxY2ZjY2YwNWY4NDIwYWMzYjljMjRkYzU3Zjk4NWY3MjI2MzdjNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlbmRlck9iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCBlM2YzMDU2NjY4NjMw
YTRiNWFmZWI5ODRjOWRlNGRlZGU1MDE1YzBiLi4yZWQ3NzQ0YjA4ZGY4ZmJlOWFjNzJmZDQ3NDc2
NGUxY2U2ZDcyNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVu
dENvZGVyc0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVy
c0NGLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvQ0ZVUkxFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKICNpZiBVU0UoRk9VTkRBVElP
TikKQEAgLTU5OSw4ICs1OTksOCBAQCB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDRlVS
TFJlZiB1cmwpCiAgICAgaWYgKGJhc2VVUkwpCiAgICAgICAgIGVuY29kZShlbmNvZGVyLCBiYXNl
VVJMKTsKIAotICAgIFVSTENoYXJCdWZmZXIgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXModXJs
LCB1cmxCeXRlcyk7CisgICAgV1RGOjpVUkxDaGFyQnVmZmVyIHVybEJ5dGVzOworICAgIFdURjo6
Z2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXJsQnl0ZXMuZGF0YSgp
KSwgdXJsQnl0ZXMuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IGRhdGFSZWZlcmVuY2U7CiB9CkBA
IC02MzEsNyArNjMxLDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRy
PENGVVJMUmVmPiYgcmVzdWx0KQogICAgIH0KICNlbmRpZgogCi0gICAgcmVzdWx0ID0gY3JlYXRl
Q0ZVUkxGcm9tQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJ5dGVzLmRh
dGEoKSksIHVybEJ5dGVzLnNpemUoKSwgYmFzZVVSTC5nZXQoKSk7CisgICAgcmVzdWx0ID0gV1RG
OjpjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJs
Qnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6ZSgpLCBiYXNlVVJMLmdldCgpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2Vi
RXJyb3JzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3Bw
CmluZGV4IGU5ZDkyMzkzYzdkNWM2YjNhYmYzZjlmNDRhMDdmNDFhMDA4NDYwZTguLjZhMGRmNTRj
Mzc0NDVkZjY0Y2M1ZDNiNGJiNjEwZWMxZjNjMDY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9XZWJFcnJvcnNHdGsuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViRXJy
b3JzLmgiCiAKICNpbmNsdWRlICJBUElFcnJvci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbi5oCmluZGV4IDNkMDg2ODlmZTE3NmRkN2E2MTcyYTEzN2MwNTgzZGNlYTczNzJmNjMuLmMx
YWI4NWZkNDQxYmMxMjgwNzU0NjYwOTQwOTY4ZjczNmE4ZjY2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbi5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uUmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dEluZGljYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTYwLDggKzYwLDggQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uIHsKICAgICBib29sIHByZXZlbnRUZXh0SW50ZXJhY3Rpb24geyBmYWxzZSB9OwogI2VuZGlm
CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBhZGp1c3RlZFBvaW50Rm9yTm9kZVJlc3BvbmRpbmdU
b0NsaWNrRXZlbnRzOwotICAgIFdlYkNvcmU6OlVSTCB1cmw7Ci0gICAgV2ViQ29yZTo6VVJMIGlt
YWdlVVJMOworICAgIFVSTCB1cmw7CisgICAgVVJMIGltYWdlVVJMOwogICAgIFN0cmluZyB0aXRs
ZTsKICAgICBTdHJpbmcgaWRBdHRyaWJ1dGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
aW5kZXggYmIwZDFjYjYzZDQxZjJlN2JjMzZiYTlmNWQ1ZGFlNWU0MDgxMTU5Mi4uOTBmZGU3ZDA0
YjI3MzA1YTQ2NDM2MTQxYmRiNzdlMTAwNGJkZDA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaApAQCAtMzMsNyArMzMsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsK
IHN0cnVjdCBDb29raWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uLmNwcAppbmRleCA2OGI4N2Q4ODdmZTYzNDJmMGY1MWM5NDMxMmVhMGY0YmNlMTJi
ZjZhLi45MzJiNjI2Nzc3ZjBhZjBhYjU0ZjY0N2JkODFiZmY0Nzg0MzljN2I4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC02OSw3ICs2OSw3
IEBAIHZvaWQgTmF2aWdhdGlvbjo6c2V0Q3VycmVudFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUHJvY2Vzc0lkZW50aWZpZXIKICAgICBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lk
ZW50aWZpZXIgPSBwcm9jZXNzSWRlbnRpZmllcjsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uOjphcHBl
bmRSZWRpcmVjdGlvblVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgTmF2aWdhdGlv
bjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV1RGOjpVUkwmIHVybCkKIHsKICAgICBpZiAo
bV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHVy
bCkKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKaW5kZXggOTdlZTk2ZGRkNmU0N2ExOWFjZGMy
ZjI4NDhmN2E3NjI5N2JkZDFmMi4uZWQwMjk0ZDgyODdlY2Q4NjZiYTZlOTNiODFjNTNmMGI0NGI4
NDlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCkBA
IC03Nyw4ICs3Nyw4IEBAIGNsYXNzIE5hdmlnYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmpl
Y3Q6OlR5cGU6Ok5hdmlnYXRpb24+IHsKICAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIGZyb21JdGVtKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tSXRlbS5nZXQoKTsgfQogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVMb2FkVHlwZT4gYmFja0ZvcndhcmRGcmFtZUxvYWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7IH0KIAotICAg
IHZvaWQgYXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVj
dG9yPFdlYkNvcmU6OlVSTD4gdGFrZVJlZGlyZWN0Q2hhaW4oKSB7IHJldHVybiBXVEZNb3ZlKG1f
cmVkaXJlY3RDaGFpbik7IH0KKyAgICB2b2lkIGFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0IFdU
Rjo6VVJMJik7CisgICAgVmVjdG9yPFdURjo6VVJMPiB0YWtlUmVkaXJlY3RDaGFpbigpIHsgcmV0
dXJuIFdURk1vdmUobV9yZWRpcmVjdENoYWluKTsgfQogCiAgICAgdm9pZCBzZXRXYXNVc2VySW5p
dGlhdGVkKGJvb2wgdmFsdWUpIHsgbV93YXNVc2VySW5pdGlhdGVkID0gdmFsdWU7IH0KICAgICBi
b29sIHdhc1VzZXJJbml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJJbml0aWF0ZWQ7
IH0KQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uPiB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1
cnJlbnRSZXF1ZXN0OwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXI+IG1fY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllcjsKLSAgICBWZWN0b3I8V2ViQ29y
ZTo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CisgICAgVmVjdG9yPFdURjo6VVJMPiBtX3JlZGlyZWN0
Q2hhaW47CiAgICAgYm9vbCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBt
X3Nob3VsZEZvcmNlRG93bmxvYWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1JlZGlyZWN0IHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkFjdGlvbi5oCmluZGV4IGVlY2JmZjRhMmEzZWQ5MGY0NDQwOGNjZDZjYWYyOWRlOThkOTUyZDcu
LjMwODcxYzdhMDk1NTRkNWNiOGE3ZWQ0YWI4MmNiYjE0OGNkZTc4NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaApAQCAtMzEsNyAr
MzEsNyBAQAogI2luY2x1ZGUgIkFQSVVzZXJJbml0aWF0ZWRBY3Rpb24uaCIKICNpbmNsdWRlICJO
YXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBBUEkgewogCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24g
ZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+
CiAgICAgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV90YXJnZXRGcmFtZU5hbWU7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQotICAgIGNv
bnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5h
bFVSTC5pc051bGwoKSA/IG1fb3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KKyAgICBj
b25zdCBXVEY6OlVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5hbFVS
TC5pc051bGwoKSA/IG1fb3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KIAogICAgIFdl
YkNvcmU6Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9u
YXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZTsgfQogICAgIFdlYktpdDo6V2ViRXZl
bnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rp
b25EYXRhLm1vZGlmaWVyczsgfQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0
aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0
aW9uPgogICAgIE5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX21haW5GcmFtZU5hdmlnYXRpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBOYXZpZ2F0
aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0
RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5h
bFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9u
PiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdh
dGlvbikKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6
OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdl
dEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RG
OjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJ
bml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBt
YWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICAgICA6IG1fc291cmNlRnJhbWUoc291cmNlRnJhbWUp
CiAgICAgICAgICwgbV90YXJnZXRGcmFtZSh0YXJnZXRGcmFtZSkKICAgICAgICAgLCBtX3Rhcmdl
dEZyYW1lTmFtZSh0YXJnZXRGcmFtZU5hbWUpCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIE5hdmln
YXRpb25BY3Rpb24gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmln
YXRpb25BY3Rpb24+CiAgICAgewogICAgIH0KIAotICAgIE5hdmlnYXRpb25BY3Rpb24oV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBBUEk6OkZyYW1l
SW5mbyogc291cmNlRnJhbWUsIEFQSTo6RnJhbWVJbmZvKiB0YXJnZXRGcmFtZSwgc3RkOjpvcHRp
b25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3Vs
ZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRl
ZEFjdGlvbikKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBB
UEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRh
cmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
V1RGOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVz
ZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKICAgICAgICAgOiBOYXZp
Z2F0aW9uQWN0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZSwg
dGFyZ2V0RnJhbWUsIHRhcmdldEZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxV
UkwsIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aW9uKSwgbnVs
bHB0cikKICAgICB7CiAgICAgfQpAQCAtODksNyArODksNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0
aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0
aW9uPgogICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IG1fdGFyZ2V0RnJhbWVOYW1lOwog
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBXZWJDb3JlOjpV
UkwgbV9vcmlnaW5hbFVSTDsKKyAgICBXVEY6OlVSTCBtX29yaWdpbmFsVVJMOwogCiAgICAgYm9v
bCBtX3Nob3VsZE9wZW5BcHBMaW5rczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggNmFkODMzYTYwOTk1Yjg5OWExYjExYzcx
YWU5OWM0OTU3YWMyNzI5MC4uOGU5NDRiN2RlYzRkOWU1ZGU3NGE3NDFjMmFhZWQ3OTk4MzIwMDM5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25D
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oCkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgewogCiAgICAg
dmlydHVhbCBSZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVBy
b3h5JikgeyByZXR1cm4gbnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U3RyaW5nPiBz
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCB1
bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxTdHJpbmc+JiBjaGFsbGVuZ2VTdHJp
bmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFs
IFJlZlB0cjxTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPFN0cmlu
Zz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV1RGOjpVUkwmKSB7IHJldHVybiBudWxscHRyOyB9
CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQpAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIE5h
dmlnYXRpb25DbGllbnQgewogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQogICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJDb3JlOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90
aWZpY2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV1RGOjpVUkwmJiwgVmVjdG9yPFdURjo6
U3RyaW5nPiYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiYpIHsgfTsKICAgICAKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2aXJ0dWFsIGJvb2wgZGlkRmFpbFRvSW5pdGlhbGl6
ZVBsdWdJbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYpIHsgcmV0dXJu
IGZhbHNlOyB9CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgTmF2aWdhdGlvbkNsaWVudCB7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2aXJ0dWFsIHZvaWQgd2ViR0xMb2FkUG9s
aWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6
V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlV2ViR0xMb2Fk
UG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGlj
eTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQorICAgIHZpcnR1YWwgdm9pZCB3ZWJHTExvYWRQb2xp
Y3koV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
Y29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdM
QWxsb3dDcmVhdGlvbik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGlj
eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6VVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBj
b25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xB
bGxvd0NyZWF0aW9uKTsgfQogI2VuZGlmCiAgICAgCiAgICAgdmlydHVhbCBib29sIHdpbGxHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSYsIGJvb2wgaW5QYWdlQ2FjaGUsIE9iamVjdCopIHsgcmV0dXJuIGZh
bHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGJh
MjkwZTA4OTdiOWM3MjdhZjY5NjgyZjI4ZmYzMzQ1MTk1ZDkxNjIuLjgzZGEyOWNjNTJmYzg3MzA5
Y2ZjNjVmNDZkNzAxMTBmMTI5NDY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oCkBAIC0xNDAsNyArMTQwLDcgQEAgY2xhc3MgVUlDbGllbnQgewogICAgIHZp
cnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHJ1bk1vZGFsKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBEYXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmVEYXRhVG9GaWxlSW5E
b3dubG9hZHNGb2xkZXIoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBEYXRhJikgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgcGlubmVkU3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3Jp
cHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCmlu
ZGV4IDc1ODRlNjMxMjEwMmI1YjBjNTAwN2VhOWI4OGNhYzc4M2I5ZTE0NmMuLjQwMjJlZmRjYjk3
YTUwOWY2ZTBlZjg5NWRjYjY3Mzg2NmFhOWY1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNl
IEFQSSB7CiAKLVdlYkNvcmU6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCitX
VEY6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVp
bnQ2NF90IGlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU2NyaXB0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNl
clNjcmlwdC5oCmluZGV4IDE3YTQwOTA5ODk3Zjc0NGI1MDVhMDQ5MmFjNTA4YzQwNTBiMTMxYzUu
LjAzMzMyODIwYjE2MDExNDkxNDAzNjE4YjYzN2YzM2RhODE0YjE4YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaApAQCAtMjMsOCArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQVBJVXNlclNj
cmlwdF9oCi0jZGVmaW5lIEFQSVVzZXJTY3JpcHRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0zNSw3
ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyU2NyaXB0PiwgcHVibGljIElkZW50aWZp
ZWQ8VXNlclNjcmlwdD4gewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJh
dGVVbmlxdWVVUkwoKTsKKyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsK
IAogICAgIHN0YXRpYyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQg
dXNlclNjcmlwdCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1
ICs1NCwzIEBAIGNsYXNzIFVzZXJTY3JpcHQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmpl
Y3Q6OlR5cGU6OlVzZXJTY3JpcHQ+LCBwdWJsaWMgSWRlCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBB
UEkKLQotI2VuZGlmIC8vIEFQSVVzZXJTY3JpcHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKaW5kZXggMWQ1OTViYjE1ODhkOWY3ZDVk
NDhmZDkyMWNkMWRkOTY2YjNmODZhZi4uM2VhNDYxZmUxYTE1NmM2YTlkNTg5NTg0MDM3ZmUzODdj
MjkwN2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0
eWxlU2hlZXQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1XZWJD
b3JlOjpVUkwgVXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKK1dURjo6VVJMIFVz
ZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90
IGlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmgKaW5kZXggZDg1NmY3YTUyZjliNTA0ZTBmYTQyM2VhOWEzYjZlMTU3MTQ1MWVk
ZS4uNzViYjk1YWZlYWM4ZjhmMWU4MjIzMzVmMjkzZTk4Mzg3YjVkNzYzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKQEAgLTIzLDggKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IEFQSVVzZXJTdHlsZVNoZWV0X2gKLSNkZWZpbmUgQVBJVXNlclN0eWxlU2hlZXRfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVu
dFdvcmxkLmgiCkBAIC0zNSw3ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2Vy
U3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclN0
eWxlU2hlZXQ+LCBwdWJsaWMgSWRlbnRpZmllZDxVc2VyU3R5bGVTaGVldD4gewogcHVibGljOgot
ICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKKyAgICBzdGF0aWMg
V1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKIAogICAgIHN0YXRpYyBSZWY8VXNlclN0eWxl
U2hlZXQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIGNsYXNz
IFVzZXJTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpV
c2VyU3R5bGVTaGVldD4sIHB1CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8v
IEFQSVVzZXJTdHlsZVNoZWV0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXggNmU3OTY2MjU1
MmI5ZjY4MDUyMDI5NGViYjlkNzRlYmFiZDgzMjY1MC4uNGEwZmZjNDJlNTk0MWMzMDZiY2ZmYmY4
OGNlMTVhY2M3MDk5YjVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1
ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzRnJvbUZp
bGVVUkxzKGNvbnN0IEFQSTo6QXJyYXkmIGZpbGVVUkxzKQogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEFQSTo6VVJMKiBhcGlVUkwgPSBmaWxlVVJMcy5h
dDxBUEk6OlVSTD4oaSk7CiAgICAgICAgIGlmIChhcGlVUkwpCi0gICAgICAgICAgICBmaWxlUGF0
aHMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYXBpVVJMLT5z
dHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7CisgICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVj
a2VkQXBwZW5kKFVSTChVUkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGZpbGVQYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCmluZGV4IGNjMmRmOWI1NzFhMTE3OGVjZjU3ZjZkZTZmYWEzOGRhZTVh
YzYxMTAuLjJjYjk2YTMyNTBkZDNkMGM0YTdhMTM0YzliOWM4YTY4MjAyZTFhYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZv
aWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdS
ZWYgcGxhaW5UZXh0U3RyaW5nUmVmCiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dp
dGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5n
UmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7Ci0gICAgbG9hZFN0cmluZyhwYWdlUmVmLCBw
bGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBibGFua1VSTCgpLnN0cmluZygpLCB1
c2VyRGF0YVJlZik7CisgICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYs
ICJ0ZXh0L3BsYWluIl9zLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIHVzZXJEYXRhUmVmKTsK
IH0KIAogdm9pZCBXS1BhZ2VMb2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
RGF0YVJlZiB3ZWJBcmNoaXZlRGF0YVJlZikKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVu
dEJhc2UqIHdrQ2xpZW50CiAKICAgICAgICAgICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rp
dml0eSA9IHBhZ2UucHJvY2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0
aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgYm9v
bCBzaG91bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3VyY2VGcmFtZUluZm8tPnJl
cXVlc3QoKS51cmwoKSwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgICAgICAgICBh
dXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShX
VEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxs
cHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgV2ViQ29yZTo6VVJM
KCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRp
b25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJh
bWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1
ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0
aXZpdHkpKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXBpV2luZG93RmVhdHVyZXMgPSBBUEk6
OldpbmRvd0ZlYXR1cmVzOjpjcmVhdGUod2luZG93RmVhdHVyZXMpOwogCkBAIC0xOTQ1LDcgKzE5
NDUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgbV9jbGllbnQucnVu
TW9kYWwodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQ
cm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRh
JiBkYXRhKSBmaW5hbAorICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBBUEk6OkRh
dGEmIGRhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuc2F2
ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yMTg1LDcgKzIxODUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAg
cmV0dXJuIEFQSTo6RGF0YTo6Y3JlYXRlKG1hc3RlcktleS5kYXRhKCksIG1hc3RlcktleS5zaXpl
KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwpIG92ZXJyaWRlCisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmlu
Zz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYgcGFnZSwg
dW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVu
Z2VTdHJpbmcsIGNvbnN0IFVSTCYgdXJsKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAobV9jbGllbnQuY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZykKICAg
ICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNvcHlTaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91
cC5jcHAKaW5kZXggMzkwZTEyMDc0N2VhZTg5Y2ZkOWZlZTY5ZGFjZWNiNmRlMDc5NWVjNS4uMDM3
NzQxMGVhN2U2N2U2YjA5MTBjZmJjMDVhOWIzMmY1OGNiNDNlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lk
IFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
LCBXS1N0cmluZ1JlZiBzb3VyYwogICAgIGF1dG8gd2hpdGVsaXN0ID0gdG9JbXBsKHdoaXRlbGlz
dGVkVVJMUGF0dGVybnMpOwogICAgIGF1dG8gYmxhY2tsaXN0ID0gdG9JbXBsKGJsYWNrbGlzdGVk
VVJMUGF0dGVybnMpOwogCi0gICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNo
ZWV0ID0gQVBJOjpVc2VyU3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0
IHsgc291cmNlLCAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFua1VSTCgp
IDogV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlz
dCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNr
bGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRv
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OlVzZXJT
dHlsZVVzZXJMZXZlbCB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwor
ICAgIFJlZjxBUEk6OlVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCA9IEFQSTo6VXNlclN0
eWxlU2hlZXQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgKGJhc2VV
UkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVS
TFN0cmluZykpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0
b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBW
ZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFt
ZXMpLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxk
Ojpub3JtYWxXb3JsZCgpKTsKIAogICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVu
dENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldC5nZXQoKSk7CiB9
CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tTdHJpbmdSZWYgc291cmNlUmVmCiAgICAgYXV0byB3aGl0
ZWxpc3QgPSB0b0ltcGwod2hpdGVsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgYXV0byBibGFja2xp
c3QgPSB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgCi0gICAgYXV0byB1cmwg
PSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIGF1dG8gdXJsID0gYmFz
ZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiAgVVJMKFVSTCgpLCBiYXNl
VVJMU3RyaW5nKTsKICAgICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2VyU2NyaXB0ID0gQVBJOjpV
c2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwg
V1RGTW92ZSh1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBW
ZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkg
OiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRp
bWUpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIEFQSTo6
VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgdG9JbXBsKHBhZ2VHcm91cFJl
ZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQodXNlclNjcmlwdC5nZXQo
KSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRl
eCA2N2E1NDIzZWE1ZWQ1N2ExZThiZjlkYWQ4MzIwZTA0ZGJhZjczMWI0Li4zODVkY2JjZDg2Mzc2
ODYyNjcyZjZlODQ3MDRkNTdkZWY3ODI1YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQxLDggKzQx
LDggQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURhdGFTdG9yZUdldFR5cGVJ
RCgpCiB7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlRm9y
RGVidWdNb2RlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgc3RvcmUt
PnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTA3LDcgKzEw
Nyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzdG9yZS0+c2V0TGFzdFNlZW4oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4
dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBzdG9yZS0+c2V0TGFzdFNlZW4oVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0xMjEsMTEgKzEyMSwxMSBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YQogICAgIH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPnNldFBy
ZXZhbGVudFJlc291cmNlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAg
ICAgIHN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UK
LSAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2Uo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQp
OwogICAgICAgICB9KTsKIH0KQEAgLTEzOSwxMSArMTM5LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYKICAgICB9CiAKICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5zZXRWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAg
ICAgc3RvcmUtPnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVs
c2UKLSAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRl
eHQpOwogICAgICAgICB9KTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZUlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPmlzUHJldmFsZW50
UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJj
ZSkgeworICAgIHN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUHJldmFs
ZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNQcmV2YWxlbnRSZXNvdXJjZSwgY29u
dGV4dCk7CiAgICAgfSk7CiB9CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzdG9yZS0+aXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UpIHsKKyAgICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2td
KGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNWZXJ5
UHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTk1LDcgKzE5NSw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVz
b3VyY2VVbmRlcihXS1dlYnNpdGVEYXRhU3RvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ci0gICAgc3RvcmUtPmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YnJlc291cmNlSG9zdCktPnN0cmluZygp
KSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1
YnJlc291cmNlVW5kZXIpIHsKKyAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVu
ZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkp
LCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewog
ICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQp
OwogICAgIH0pOwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
SXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihXS1dlYnNpdGVEYXRhU3RvcmVS
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJG
cmFtZVVuZGVyKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3Vi
RnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktp
dDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShi
b29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgeworICAgIHN0b3JlLT5pc1JlZ2lzdGVy
ZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJGcmFtZUhvc3Qp
LT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3Ry
aW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVu
ZGVyKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlciwgY29u
dGV4dCk7CiAgICAgfSk7CiB9CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vic2l0ZURhdGFT
dG9yZVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRB
c1JlZGlyZWN0aW5nVG8oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgeworICAgIHN0
b3JlLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29s
IGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjM1LDExICsy
MzUsMTEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNlcklu
dGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZgogICAgIH0KIAogICAgIGlmICh2YWx1ZSkK
LSAgICAgICAgc3RvcmUtPmxvZ1VzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0
aW9uSGFuZGxlcl0geworICAgICAgICBzdG9yZS0+bG9nVXNlckludGVyYWN0aW9uKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25I
YW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAg
ICAgfSk7CiAgICAgZWxzZQotICAgICAgICBzdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24oV2Vi
Q29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyVXNl
ckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5o
YXNIYWRVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFk
VXNlckludGVyYWN0aW9uKSB7CisgICAgc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFj
a10oYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFk
VXNlckludGVyYWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTI2Myw3ICsyNjMsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhlcmVkKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUpOworICAgIHN0b3Jl
LT5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgdmFsdWUpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dy
YW5kZmF0aGVyZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3Jh
bmRmYXRoZXJlZEZ1bmN0aW9uIGNhbGxiYWNrKQpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aGFz
SGFkVXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRm
YXRoZXJlZCkgeworICAgIHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aXNHcmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29u
dGV4dCk7CiAgICAgfSk7CiB9CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURh
dGFTdG8KICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3Jl
LT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9z
dCktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpCkBA
IC0yOTQsNyArMjk0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGEKICAgICBpZiAoIXN0b3Jl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSk7
CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmlu
Z1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQpAQCAtMzAzLDcgKzMwMyw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRU
byktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RU
byhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RG
cm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
RnJvbShXS1dlYnNpdGVEYXRhUwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV2ViQ29yZTo6
VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJD
b3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJv
bSktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RG
cm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkpOwogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwg
V0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tX
ZWJzaXRlRGF0YVN0b3JlUgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5n
KCkpKTsKKyAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9z
dFJlZGlyZWN0ZWRGcm9tKQpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFT
dG9yCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHN0b3JlLT5z
ZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKKyAg
ICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RS
ZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggYTgwNmJk
ZWMyZTJkNDgyM2IyZjFlOTJlZDEzM2U3MTM2NWRlZjY2NC4uYzg1ODAzM2FlNTkxYjNhMjIzOWIw
MWYxYjliMGYzOWZkZmJiNDBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMzAsMTAgKzMwLDEwIEBACiAK
ICNpbXBvcnQgIkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29v
a2llLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4K
IAogc3RhdGljIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb3JlQ29va2llc1RvTlNDb29raWVz
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb3JlQ29va2llcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCmluZGV4IDljZjY2
ODFhYWIzOTFjMzViNjM3OTA3YjExMTA4NmY4Mjc5NzZkNWEuLjhlMGM3MjEyODY4MjgyMTE5ZjJm
ODlmMjk1MDY1YWY0ZDJmZWEwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQpAQCAtOTUsNyArOTUsNyBAQCAtIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1Vz
ZXJTY3JpcHRJbgogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBX
ZWJDb3JlOjpVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hp
dGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFs
bEZyYW1lcyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQ
STo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJD
b3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwp
LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0
b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9w
RnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29y
bGQtPl91c2VyQ29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQppbmRleCAzMWYyYTkzNmQ5YWY5MWY5ZTBiZmI5NjZlYTBiZmFkZmM5OTg5MDVm
Li4wN2FlNzg0Yjc1MzNjMjNmNmNkNjRhMDU2NTk0NGFjNTViNDM0NjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQpAQCAtNDQsOCArNDQsOCBAQAogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9y
ZUludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkxQYXJz
ZXIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIu
aD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
NDc4LDcgKzQ3OCw3IEBAIC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2No
ZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAgICAgaWYgKFtXS1dlYlZp
ZXcgaGFuZGxlc1VSTFNjaGVtZTp1cmxTY2hlbWVdKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBhIFVSTCBzY2hl
bWUgdGhhdCBXS1dlYlZpZXcgaGFuZGxlcyBuYXRpdmVseSIsIHVybFNjaGVtZV07CiAKLSAgICBh
dXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxp
emVTY2hlbWUodXJsU2NoZW1lKTsKKyAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdURjo6VVJM
UGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOwogICAgIGlmICghY2Fu
b25pY2FsU2NoZW1lKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1l
bnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBub3QgYSB2YWxpZCBVUkwgc2NoZW1lIiwgdXJs
U2NoZW1lXTsKIApAQCAtNDkwLDcgKzQ5MCw3IEBAIC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxl
cjooaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAK
IC0gKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6
KE5TU3RyaW5nICopdXJsU2NoZW1lCiB7Ci0gICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJD
b3JlOjpVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAg
YXV0byBjYW5vbmljYWxTY2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVT
Y2hlbWUodXJsU2NoZW1lKTsKICAgICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggYzY0OWZmNmNiY2VhNWExZGE0NWYzNjBiZTUz
OWM3ZGJjNDkyODMyNi4uNTA2ZmI1YmY2NzRmYzNhZDk2ZWUzYTAyOWI3YWNkM2NmOGEzNDA4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCkBAIC0zOCw5ICszOCw5IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9u
LmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYktpdC9TZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
QGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
CmluZGV4IDNlZGQ4NTMxYTA5OGIwNGYyNDM3ZDdkZTViODU0MGYzZjYwZWNmNzIuLmRmZWQwYTli
ZTE3NTM3MjJiNjU0MDc3MWM4N2IzNjVhYjZkZjA5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
CkBAIC01NCw5ICs1NCw5IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVy
ICopYURlY29kZXIKICAgICAgICAgV1RGOjpTdHJpbmcobmFtZSksCiAgICAgICAgIFdURjo6U3Ry
aW5nKHNob3J0TmFtZSksCiAgICAgICAgIFdURjo6U3RyaW5nKGRlc2NyaXB0aW9uKSwKLSAgICAg
ICAgV2ViQ29yZTo6VVJMKHNjb3BlVVJMKSwKKyAgICAgICAgVVJMKHNjb3BlVVJMKSwKICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheT4oZGlz
cGxheSksCi0gICAgICAgIFdlYkNvcmU6OlVSTChzdGFydFVSTCkKKyAgICAgICAgVVJMKHN0YXJ0
VVJMKQogICAgIH07CiAKICAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6
QXBwbGljYXRpb25NYW5pZmVzdD4oc2VsZiwgV1RGTW92ZShjb3JlQXBwbGljYXRpb25NYW5pZmVz
dCkpOwpAQCAtODMsNyArODMsNyBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAq
KWFDb2RlcgogCiArIChfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopYXBwbGljYXRpb25NYW5pZmVz
dEZyb21KU09OOihOU1N0cmluZyAqKWpzb24gbWFuaWZlc3RVUkw6KE5TVVJMICopbWFuaWZlc3RV
UkwgZG9jdW1lbnRVUkw6KE5TVVJMICopZG9jdW1lbnRVUkwKIHsKLSAgICBhdXRvIG1hbmlmZXN0
ID0gV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2UoV1RGOjpTdHJpbmco
anNvbiksIFdlYkNvcmU6OlVSTChtYW5pZmVzdFVSTCksIFdlYkNvcmU6OlVSTChkb2N1bWVudFVS
TCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFy
c2VyOjpwYXJzZShXVEY6OlN0cmluZyhqc29uKSwgVVJMKG1hbmlmZXN0VVJMKSwgVVJMKGRvY3Vt
ZW50VVJMKSk7CiAgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0Ojpj
cmVhdGUobWFuaWZlc3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IGU2ZjA5MGZmNWQ0MTM3YzY1
ODljZWU4ZmNhODM1MDEzYjhhNmRlM2QuLjYxNDUyMzJhMGQ4ZTdmMWE4ZDcyZGFkNzEzNzdiYTVj
NzRiYjg0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTcwLDcgKzcwLDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09M
KWZvck1haW4KICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVy
YXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFz
IGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJ
bml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBl
cjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdU
Rjo6U3RyaW5nKHNvdXJjZSksIHsgV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJM
IF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxl
Z2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNv
bnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1
Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxl
U2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpTdHJpbmcoW2Jhc2VV
UkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9TdHJpbmdWZWN0b3Io
bGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBm
b3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3Jl
OjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2Vy
Q29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3Bw
CmluZGV4IGE3MjlmYWI5YTc5ZTFkY2QxNTRmNDMwOTFkMTdmNGVkYzgwZGYzYjQuLjY3NGE1ZGIw
NDNjOGE2MGYzNjIwYWE3YmEwMThjMWY5ODVlZGY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogLy8gRm9yIG1ldGhvZHMgdGhhdCBhcmUgbWVh
bnQgdG8gc3VwcG9ydCBBUEkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgLSBzaG91bGQgbm90IGJlIGNh
bGxlZCBpbnRlcm5hbGx5CiAjZGVmaW5lIEFTU0VSVF9OT1RfU1lOQ19USFJFQUQoKSBBU1NFUlQo
IW1fc3luY1RocmVhZFJ1bm5pbmcgfHwgIUlTX0lDT05fU1lOQ19USFJFQUQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdl
ci5jcHAKaW5kZXggZGU4MmZkYWI1YzdmOTUzZmE1YmNhZjQwN2Q5YzY2Y2IxODUyMjdlMy4uN2E5
NDI5MTlkZGY4YzRmMmEzYjE2ZGE3NjcwMTRiMmMyYzE1NGZhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAK
QEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2ll
cyhXZWJLaXRDb29raWVNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBnY2hhcgogCiAgICAgLy8gQ29v
a2llcyBhcmUgcmVhZC93cml0dGVuIGZyb20vdG8gdGhlIHNhbWUgU1FMaXRlIGRhdGFiYXNlIG9u
IGRpc2sgcmVnYXJkbGVzcwogICAgIC8vIG9mIHRoZSBwcm9jZXNzIHdlIGFjY2VzcyB0aGVtIGZy
b20sIHNvIGp1c3QgdXNlIHRoZSBmaXJzdCBwcm9jZXNzIHBvb2wuCi0gICAgcHJvY2Vzc1Bvb2xz
WzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0Q29va2llcyhzZXNz
aW9uSUQsIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkp
KSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYg
Y29va2llcywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIHByb2Nlc3NQb29sc1sw
XS0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZXMoc2Vzc2lv
bklELCBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSksIFt0YXNrID0gV1RGTW92ZSh0
YXNrKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJy
b3I6Ok5vbmUpIHsKICAgICAgICAgICAgIC8vIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGluIGNhc2Vz
IHdoZXJlIHRoZSB3ZWIgcHJvY2VzcyBpcyBub3QgYXZhaWxhYmxlLAogICAgICAgICAgICAgLy8g
Y29uc2lkZXIgdGhlIG9wZXJhdGlvbiAiY2FuY2VsbGVkIiBmcm9tIHRoZSBwb2ludCBvZiB2aWV3
IG9mIHRoZSBjbGllbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCBjZDAyNmU0Zjhl
OTFhN2FiZmIxOWJjYzMwYjBhMTIzNThmMjdkZTUwLi4zN2U2Y2NhMGNlYmNlOTE0NzMwZTNjNmQ0
MjVjNWZlZjc3ZmI0ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTI3LDggKzI3
LDggQEAKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2Rp
bmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RG
R1R5cGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAzYmNjMjEyMzY3ODU5MzZhNzcxMjk3ZTZl
Mzk4ZDI4MGRmYjZiODAyLi44ODMzNmIzZGM0Njg0OTg4YWM3N2QxNjlkYTZhNTk1ZTYxZTU5ZTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1
cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0
U2VjdXJpdHlPcmlnaW4uaCIKIAogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0
ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogLyoqCkBAIC0xMTAsNyArMTEwLDcgQEAgV2Vi
S2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoY29u
c3QgZ2NoYXIqIHVyaSkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCh1cmksIG51bGxwdHIp
OwogCi0gICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZy
b21VVEY4KHVyaSkpKSk7CisgICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4
KHVyaSkpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDAyNzU0MzEyN2FlZTFiMDg2ZDAzNjE1MWQx
MThjZmM3OTY2NmE0MmUuLjk2ZjllZTExODJhMjQyM2I5MTYzZGMzYWYwODIxNmIzZTkxODliNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNs
aWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpV
SUNsaWVudCB7CiAgICAgdm9pZCBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVm
PEFQSTo6RnJhbWVJbmZvPiYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVzb3VyY2VSZXF1ZXN0LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVz
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbAogICAgIHsKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdl
LnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNl
ckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICBXZWJLaXROYXZpZ2F0aW9uQWN0aW9u
IG5hdmlnYXRpb25BY3Rpb24oQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uRGF0YSksIGZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxs
b3B0LCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFdlYkNvcmU6OlVSTCB7IH0sIGZhbHNlLCBX
VEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpKTsKKyAgICAgICAgV2ViS2l0TmF2aWdhdGlv
bkFjdGlvbiBuYXZpZ2F0aW9uQWN0aW9uKEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0
ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBVUkwgeyB9LCBmYWxzZSwgV1RG
TW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKG1fd2ViVmlldywgd2luZG93RmVhdHVyZXMsICZu
YXZpZ2F0aW9uQWN0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4IDkx
Njc0YWMyODhmN2U3OGY0NTFlOTU5M2QzYTU1NDhmZjU5ODg4OWYuLjA3YjU4YWQzMjNkNTQ1OGM5
MDM2NjNkYjgzMGU5NGJlN2U1ZDg4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0yNiwx
MCArMjYsMTAgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RG
R1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDBmYTRhMThm
ODljOGM1MWE0NTQwNzc4ZjVhZTI3YmVhODdkN2I1ZjEuLjIzNDg1OTY2M2QxZjJjNzgwODk4ZjA2
MGY0MDE0OTg4ZTc4NmI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC02NiwxMiArNjYsMTIgQEAKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJp
dmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01FeGNlcHRp
b25IYW5kbGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KQEAgLTI2NDcsNyArMjY0Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRf
cGxhaW5fdGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogcGxhaW5UCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdf
cmV0dXJuX2lmX2ZhaWwocGxhaW5UZXh0KTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9hZERh
dGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwbGFpblRleHQpLCBwbGFpblRl
eHQgPyBzdHJsZW4ocGxhaW5UZXh0KSA6IDAgfSwgInRleHQvcGxhaW4iX3MsICJVVEYtOCJfcywg
YmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YSh7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBsYWluVGV4dCksIHBsYWluVGV4dCA/IHN0
cmxlbihwbGFpblRleHQpIDogMCB9LCAidGV4dC9wbGFpbiJfcywgIlVURi04Il9zLCBXVEY6OmJs
YW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBiYmQ1MTZlNzI5NjIzMzdiZGRmZWNkMGM1NmQzOTgx
NDgzM2Q4YTc0Li5iN2U2MzMwZWFlYjJlMjAyMmU2MjNmM2E2OGVjMWJjMTdhYTM3NzVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0yOCw3ICsy
OCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA3ODBhMTVlOTZkM2MzNjI0NmJiNWQ1YTQx
YzcxMjdiMmFiZGQxMzFjLi4yZjA2NjA4NmQ5OTJmYzMwZmFmNmM3OTQwYWNlZjJmZGZjYzg1M2Nl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDUsMTEgKzEwNSwxMSBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYXRpbmdVUkxTdHJpbgogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmF0aW5n
OwogCi0gICAgV2ViQ29yZTo6VVJMIG9yaWdpbmF0aW5nVVJMKFdlYkNvcmU6OlVSTCgpLCBvcmln
aW5hdGluZ1VSTFN0cmluZyk7CisgICAgVVJMIG9yaWdpbmF0aW5nVVJMKFVSTCgpLCBvcmlnaW5h
dGluZ1VSTFN0cmluZyk7CiAKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBsaW5rSWNvblVSTHM7
CisgICAgVmVjdG9yPFVSTD4gbGlua0ljb25VUkxzOwogICAgIGZvciAoY29uc3QgYXV0byYgbGlu
a0ljb25VUkxTdHJpbmcgOiBsaW5rSWNvblVSTFN0cmluZ3MpCi0gICAgICAgIGxpbmtJY29uVVJM
cy5hcHBlbmQoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBsaW5rSWNvblVSTFN0cmluZykp
OworICAgICAgICBsaW5rSWNvblVSTHMuYXBwZW5kKFVSTChVUkwoKSwgbGlua0ljb25VUkxTdHJp
bmcpKTsKIAogICAgIHBsYXRmb3JtU2hvd1BheW1lbnRVSShvcmlnaW5hdGluZ1VSTCwgbGlua0lj
b25VUkxzLCBwYXltZW50UmVxdWVzdCwgW3RoaXNdKGJvb2wgcmVzdWx0KSB7CiAgICAgICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmF0aW5nKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigp
CiAgICAgZGlkUmVhY2hGaW5hbFN0YXRlKCk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYg
dXJsKQogewogICAgIEFTU0VSVChtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlID09IE1lcmNoYW50
VmFsaWRhdGlvblN0YXRlOjpJZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXgg
MDg1MDE5ZGEwNmUzMmZiMGY0ZWM1ODk5MTUzNTQ4NmZlYmE3ZjhkYS4uZWRlN2E3MGNmMjEzNTk0
ODgwYTY4ZjUwZGE3Y2Y5Y2YxODU0NjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBA
IC00Myw3ICs0Myw2IEBAIGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKIGNs
YXNzIFBheW1lbnRNZXJjaGFudFNlc3Npb247CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3Mg
VVJMOwogfQogCiBPQkpDX0NMQVNTIE5TT2JqZWN0OwpAQCAtNjEsNyArNjAsNyBAQCBjbGFzcyBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBDYW5NYWtlVwogICAgIH5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwogCiAg
ICAgdm9pZCBkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwotICAgIHZvaWQgdmFsaWRhdGVNZXJj
aGFudChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29u
c3QgVVJMJik7CiAgICAgdm9pZCBkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFdlYkNvcmU6OlBh
eW1lbnQmKTsKICAgICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpOwogICAgIHZv
aWQgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0
Jik7CkBAIC05OSw3ICs5OCw3IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXCiAgICAgYm9vbCBw
bGF0Zm9ybUNhbk1ha2VQYXltZW50cygpOwogICAgIHZvaWQgcGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJp
bmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIHBsYXRm
b3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0
IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNv
bnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgV1RGOjpGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9u
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAg
ICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4IDE1OWFjMTkyNDYyYjQ5
ZjdmOTQ2ZmM0NmE2ZTk4ZjkyNmJiY2I5NmMuLjRlMGYyMmI3YWRmNTEwNDE5ZmU2MGFjOWJhNGVh
NTQ4OWRiYWNhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNv
Y29hLmgKQEAgLTMxLDE1ICszMSwxMSBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0
U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgVVJMOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OwogCi1SZXRhaW5QdHI8UEtQYXltZW50
UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNv
blVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CitS
ZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94
eSYsIGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNv
blVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2Ev
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KaW5k
ZXggYTRlZWNjYjA5MWJmMGI0MGNmYjBjMDUzMjgyMjU2OTMxYjA3MzRjNS4uZGY1YjlkYTdkZGRi
ZmI1NjVhNThhYmRlMjllZDMzMzc0MWI1M2ZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbXBvcnQgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykK
IFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQpAQCAtNTExLDcg
KzUxMSw3IEBAIHN0YXRpYyBQS1BheW1lbnRSZXF1ZXN0QVBJVHlwZSB0b0FQSVR5cGUoV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6CiB9CiAjZW5kaWYKIAotUmV0YWluUHRy
PFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBh
Z2VQcm94eSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQorUmV0YWluUHRyPFBLUGF5bWVudFJl
cXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29u
c3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywg
Y29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1
ZXN0KQogewogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0
SW5zdGFuY2UoKSBpbml0XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlP
Uy5tbQppbmRleCBiMTBkOTJlMzhiMGMxNzUzMzAwMjgyZWI3ZDU4MGUyYzIzNmNmYTg5Li4xN2I3
ZjJmODlhMThiNzgwNmEyZTk2YzY0ZTA4ZGIxZmYyODZjNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5SU9TLm1tCkBAIC00MSw3ICs0MSw3IEBAIFNPRlRfTElOS19DTEFT
UyhQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJl
c2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlDbGllbnQoKS5wcmVzZW50
aW5nVmlld0NvbnRyb2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWFjLm1tCmluZGV4IDc0MTU5MzgzZjE5NTQyN2RiOTc2MGE4YzAxZWM3MDY3YTY3YzZmOTUuLjI1
MTQ5NTBlNWQwMjQ2MDNlMDU3MWFiYjAzNmY3OTEyOTMwZDE2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTQxLDcgKzQxLDcgQEAgU09GVF9MSU5LX0NP
TlNUQU5UKFBhc3NLaXQsIFBLRXh0ZW5zaW9uUGF5bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lv
blBvaW50TmFtZSwKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9y
aWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxTdHJp
bmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVz
dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBV
UkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdz
LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwg
V1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghUGFzc0tpdExpYnJhcnkoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGY2M2JiMmJhZmViOThkZTQzNWVmYjVmNWNkNTNk
ZTQwYzQ3NmNiZTEuLmExMjI4NzRjMWYwNTA1MjhmNjdiNDUxM2FhN2RiNDI0OWYxNmEwMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC00NCwxMCArNDQsMTAgQEAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
SU1FVHlwZVJlZ2lzdHJ5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCkBAIC02NTksNyArNjU5LDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoY29uc3Qg
U3RyaW5nJiBoYW5kbGUsIGNvbnN0IFMKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3Bh
Z2VMb2FkU3RyYXRlZ3knIGlzIGludmFsaWQuIik7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQg
PSBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9w
dGlvbmFsUGFnZUxvYWRUaW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKLSAgICBw
YWdlLT5sb2FkUmVxdWVzdChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHVybCkpOworICAg
IHBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdXJsKSk7CiAgICAgd2FpdEZvck5hdmlnYXRp
b25Ub0NvbXBsZXRlT25QYWdlKCpwYWdlLCBwYWdlTG9hZFN0cmF0ZWd5LnZhbHVlKCksIHBhZ2VM
b2FkVGltZW91dCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCkBAIC0xMjg3LDcgKzEyODcsNyBA
QCBzdGF0aWMgU3RyaW5nIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQoU3RyaW5nIGRv
bWFpbikKICAgICBpZiAoZG9tYWluWzBdICE9ICcuJykgewogICAgICAgICAvLyBSRkMgMjk2NTog
SWYgYW4gZXhwbGljaXRseSBzcGVjaWZpZWQgdmFsdWUgZG9lcyBub3Qgc3RhcnQgd2l0aCBhIGRv
dCwgdGhlIHVzZXIgYWdlbnQgc3VwcGxpZXMgYSBsZWFkaW5nIGRvdC4KICAgICAgICAgLy8gQXNz
dW1lIHRoYXQgYW55IGhvc3QgdGhhdCBlbmRzIHdpdGggYSBkaWdpdCBpcyB0cnlpbmcgdG8gYmUg
YW4gSVAgYWRkcmVzcy4KLSAgICAgICAgaWYgKCFXZWJDb3JlOjpVUkw6Omhvc3RJc0lQQWRkcmVz
cyhkb21haW4pKQorICAgICAgICBpZiAoIVVSTDo6aG9zdElzSVBBZGRyZXNzKGRvbWFpbikpCiAg
ICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygnLicsIGRvbWFpbik7CiAgICAgfQogICAgIApA
QCAtMTMwMCw3ICsxMzAwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xl
Q29va2llKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLAogICAgIGlmICghcGFn
ZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91
bmQpOwogCi0gICAgV2ViQ29yZTo6VVJMIGFjdGl2ZVVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3Jl
OjpVUkwoKSwgcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKTsKKyAgICBVUkwgYWN0
aXZlVVJMID0gVVJMKFVSTCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOwog
ICAgIEFTU0VSVChhY3RpdmVVUkwuaXNWYWxpZCgpKTsKIAogICAgIFdlYkNvcmU6OkNvb2tpZSBj
b29raWU7CkBAIC0xMzU3LDcgKzEzNTcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpk
ZWxldGVBbGxDb29raWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaQogICAg
IGlmICghcGFnZSkKICAgICAgICAgU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5k
b3dOb3RGb3VuZCk7CiAKLSAgICBXZWJDb3JlOjpVUkwgYWN0aXZlVVJMID0gV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOworICAg
IFVSTCBhY3RpdmVVUkwgPSBVUkwoVVJMKCksIHBhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVV
UkwoKSk7CiAgICAgQVNTRVJUKGFjdGl2ZVVSTC5pc1ZhbGlkKCkpOwogCiAgICAgV2ViQ29va2ll
TWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDZmZjFiNDc4MzIzOTJiZDAzMjU2MjFlNTA1ZmIw
NGE3NGY0NTY1ZmYuLjFkNmU3MTg4NDViMTQ4NWUwYjI2NjZiOWFmMWVmOTMxNjAyMDQwMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBA
IC0yMTMsNyArMjEzLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKFdlYlByb2Nl
c3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICAgICBpZiAoZG93bmxvYWRQ
cm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiB3ZWJQ
YWdlID0gZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKSkgewogICAgICAgICAgICAgTlNV
UkwgKmRlc3RpbmF0aW9uVVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDooTlNTdHJpbmcgKilk
b3dubG9hZFByb3h5LmRlc3RpbmF0aW9uRmlsZW5hbWUoKV07Ci0gICAgICAgICAgICB3ZWJQYWdl
LT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigpLT5maW5pc2goV2ViQ29yZTo6VVJMKGRlc3RpbmF0
aW9uVVJMKSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigp
LT5maW5pc2goVVJMKGRlc3RpbmF0aW9uVVJMKSk7CiAgICAgICAgIH0KICAgICAgICAgcmVsZWFz
ZUFjdGl2aXR5VG9rZW5JZk5lY2Vzc2FyeShkb3dubG9hZFByb3h5KTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApp
bmRleCA0NTk4NWY1MGU0YmZlNzAyNWFjZGE4ZjYyZTU1ZDk4Y2FkMzQ1YmJjLi4wNTU2ZWNjYTMy
NDgwZTlkMjY3NDVhZTdiMTk0ZDBlNWM5ZTZjYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTE2LDcgKzExNiw3IEBAIGNsYXNz
IE5hdmlnYXRpb25TdGF0ZSBmaW5hbCA6IHByaXZhdGUgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIg
ewogCiAgICAgICAgIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdl
UHJveHkmKSBvdmVycmlkZTsKIAotICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXpl
SW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
V2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2ln
bmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtl
eVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBj
b25zdCBVUkwmKSBvdmVycmlkZTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lk
IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKQEAgLTEy
NCw4ICsxMjQsOCBAQCBjbGFzcyBOYXZpZ2F0aW9uU3RhdGUgZmluYWwgOiBwcml2YXRlIFBhZ2VM
b2FkU3RhdGU6Ok9ic2VydmVyIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAg
ICB2b2lkIHdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYpIGNv
bnN0IGZpbmFsOwotICAgICAgICB2b2lkIHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCB3ZWJHTExv
YWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9p
ZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmlu
YWw7CiAgICAgICAgIGJvb2wgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2VQcm94
eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBib29sIGluUGFnZUNhY2hlLCBBUEk6Ok9iamVj
dCopIGZpbmFsOwogICAgICAgICBib29sIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnSW4oV2ViUGFn
ZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7CiAgICAgICAgIGJvb2wgZGlkQmxvY2tJ
bnNlY3VyZVBsdWdpblZlcnNpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmlu
YWw7CkBAIC0xMzMsNyArMTMzLDcgQEAgY2xhc3MgTmF2aWdhdGlvblN0YXRlIGZpbmFsIDogcHJp
dmF0ZSBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CiAgICAgICAgIGJvb2wgZGlkQ2hhbmdlQmFj
a0ZvcndhcmRMaXN0KFdlYlBhZ2VQcm94eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBjb25z
dCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYpIGZpbmFsOwogI2VuZGlmCiAK
LSAgICAgICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5Jiwg
V2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYsIFZlY3RvcjxTdHJpbmc+JiYpIGZpbmFs
OworICAgICAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkm
LCBVUkwmJiwgVmVjdG9yPFN0cmluZz4mJiwgVmVjdG9yPFN0cmluZz4mJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBS
ZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5PiYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpO
YXZpZ2F0aW9uUmVzcG9uc2U+JiYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBhNWIwODdjZmYzMDhiZjE0
MGFmODViZGFkZDM5ZmJmNjk5MTA3OWE3Li40MjA3NzM5YWIwZTBmMDRiNTI3Y2M5Zjc3ZDViODQw
MTAxM2Y1OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCkBAIC03MCw5ICs3MCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdl
bmVyYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjaWYgSEFWRShBUFBfTElOS1MpCiAjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CkBAIC0zOTIsNyArMzkyLDcg
QEAgaW5saW5lIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB0b1dlYkNvcmVXZWJHTExvYWRQb2xp
Y3koX1dLV2ViR0xMb2FkUG9saWN5IHBvbGkKICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxv
d0NyZWF0aW9uOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0Cit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOwpAQCAtNDA5LDcgKzQwOSw3IEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3ko
V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQ
YWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAor
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQ
b2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QK
IHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3UmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdlYlBhZ2VQCiAgICAgfQogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSYs
IFdlYkNvcmU6OlVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmllcnMsIFZl
Y3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucykKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5Jiwg
VVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGxpc3RJZGVudGlmaWVycywgVmVjdG9yPFN0cmlu
Zz4mJiBub3RpZmljYXRpb25zKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdVUkxDb250ZW50UnVsZUxpc3RJZGVudGlmaWVy
c05vdGlmaWNhdGlvbnMpCiAgICAgICAgIHJldHVybjsKQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdChXZWJQYWdlUHJveHkmCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYkNvcmU6OlVSTCB1cmwoV2ViQ29yZTo6VVJMKCksIHVybFN0cmlu
Zyk7CisgICAgVVJMIHVybChVUkwoKSwgdXJsU3RyaW5nKTsKIAogICAgIFtzdGF0aWNfY2FzdDxp
ZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlKSBfd2Vi
VmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dFRvVVJMOnVybCBkZWxheTpkZWxheV07CiB9CkBAIC05NzIsNyArOTcyLDcgQEAgUmVmUHRyPEFQ
STo6RGF0YT4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0
ZXJLZXkoV2ViUGFnZVAKICAgICByZXR1cm4gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhkYXRhKTsKIH0KIAotUmVmUHRyPEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJv
eHkmIHBhZ2UsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5n
PiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1JlZlB0cjxBUEk6
OlN0cmluZz4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXpl
SW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgLy8gV2ViS2l0VGVzdFJ1bm5lciB1c2VzIEMgQVBJLiBIZW5jZSwg
bm8gU1BJIGlzIHByb3ZpZGVkIHRvIG92ZXJyaWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24uCiAg
ICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwg
dXJsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJv
d3NpbmdSZXN1bHRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVC
cm93c2luZ1Jlc3VsdENvY29hLm1tCmluZGV4IDA4N2FjNjU0OTMzM2ExNDBhZjUzOWVhNDA0Yjk2
ZmExZWVjZjM0OTQuLjA0ZGZkNWQ0NGQ2ZTQ4MzExZGRjMmYyZmU3NDE2OWY0NDhjNWIzMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3Vs
dENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2lu
Z1Jlc3VsdENvY29hLm1tCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
I2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLVNhZmVCcm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5n
UmVzdWx0KFdlYkNvcmU6OlVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0
KQorU2FmZUJyb3dzaW5nUmVzdWx0OjpTYWZlQnJvd3NpbmdSZXN1bHQoVVJMJiYgdXJsLCBTU0JT
ZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAg
ICAgLCBtX3Byb3ZpZGVyKFtyZXN1bHQgcHJvdmlkZXJdKQogICAgICwgbV9pc1BoaXNoaW5nKFty
ZXN1bHQgaXNQaGlzaGluZ10pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCBhN2RhZDQ4
MTUyNjFhOThjNmMxMWQzNDQ4ZjNkYjIxODEzMWE2MmRhLi45OGJkYzI3OTY0YTU2OWE3Nzk4YzE5
YzdiNWFhYzJjNzRlNmQ1OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTEwNSw3
ICsxMDUsNyBAQCAtICh2b2lkKXNldFByb2dyZXNzOihmbG9hdClwcm9ncmVzcwogICAgICAgICBb
X2l0ZW0gc2V0UHJldmlld0l0ZW1Qcm92aWRlclByb2dyZXNzOkAocHJvZ3Jlc3MpXTsKIH0KIAot
LSAodm9pZClmaW5pc2g6KFdlYkNvcmU6OlVSTCl1cmwKKy0gKHZvaWQpZmluaXNoOihVUkwpdXJs
CiB7CiAgICAgaWYgKHNlbGYuY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHNlbGYuY29tcGxl
dGlvbkhhbmRsZXIoKE5TVVJMKil1cmwsIG5pbCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBT
eXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dXBkYXRlUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCiAg
ICAgICAgIFttX3FsUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlIHNldFByb2dyZXNzOnByb2dy
ZXNzXTsKIH0KIAotdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmluaXNoKFdlYkNvcmU6
OlVSTCB1cmwpCit2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2goVVJMIHVybCkK
IHsKICAgICBpZiAobV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSkKICAgICAgICAgW21f
cWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgZmluaXNoOnVybF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggMzNmMGE5YzJjZDI2MTI1NzFlMjg2
ZDU3NjczZWI3MDQwNGQwMDFiMi4uNmNmYjQ0M2E5NTg4NjU1NmYwOTg2MDg3MDQ0ZTQyMDI2ZDNm
YTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAt
MTE5LDcgKzExOSw3IEBAIGNsYXNzIFVJRGVsZWdhdGUgewogICAgICAgICB2b2lkIHRvb2xiYXJz
QXJlVmlzaWJsZShXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsK
ICAgICAgICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1l
dGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAg
dm9pZCBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdl
YlBhZ2VQcm94eSYsIFdLUmVzb3VyY2VMaW1pdCkgZmluYWw7Ci0gICAgICAgIHZvaWQgc2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpEYXRhJikg
ZmluYWw7CisgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQ
YWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
VVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CiAjZW5kaWYKICAgICAgICAgYm9vbCBkZWNpZGVQb2xp
Y3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVBy
b3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JikgZmluYWw7CiAgICAgICAgIGJvb2wgY2hlY2tVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBB
UEk6OlNlY3VyaXR5T3JpZ2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbQppbmRleCAzZWNlODIwZWQ0YjMxNjQzNjkzZjUyMjQ3ZWRhZDljNjhiODFm
ZjYwLi5mOTE3YWE1ZjdhMTE4YjIyZDhlYjIyNTU4MzRjNmM5Y2NjZGNkYmZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTUxLDggKzUxLDggQEAK
ICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRlc3RS
ZXN1bHRJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVkNhcHR1cmVEZXZpY2UuaD4KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJh
bWVJbmZvPgogCiAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3Mo
KS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVU
b2tlbklkZW50aWZpZXIpOwogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJl
RXF1YWwoc291cmNlRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpOwot
ICAgIGF1dG8gYXBpTmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8ucHRyKCks
IG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgV2ViQ29yZTo6VVJMKCks
IHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAg
ICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0
ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBu
dWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91bGRPcGVu
QXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICBhdXRvIGFw
aVdpbmRvd0ZlYXR1cmVzID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3JlYXRlKHdpbmRvd0ZlYXR1
cmVzKTsKIApAQCAtNzg3LDcgKzc4Nyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNo
b3dQYWdlKFdlYlBhZ2VQcm94eSopCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVs
ZWdhdGUgX3Nob3dXZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogICAgIAotdm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihX
ZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0
IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VS
TCwgQVBJOjpEYXRhJiBkYXRhKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFU
b0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJM
JiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKQogewogICAgIGlmICghbV91aURlbGVn
YXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVu
YW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtODY1LDggKzg2
NSw4IEBAIHN0YXRpYyB2b2lkIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNl
cyhjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwKICAgICB9KTsKIAogICAgIGNvbnN0IFdlYkZy
YW1lUHJveHkqIG1haW5GcmFtZSA9IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCk7Ci0gICAgV2Vi
Q29yZTo6VVJMIHJlcXVlc3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJhbWUudXJsKCkpOwot
ICAgIFdlYkNvcmU6OlVSTCBtYWluRnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIG1haW5GcmFtZS0+
dXJsKCkpOworICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIGZyYW1lLnVybCgpKTsKKyAg
ICBVUkwgbWFpbkZyYW1lVVJMKFVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKIAogICAgIF9XS0Nh
cHR1cmVEZXZpY2VzIGRldmljZXMgPSAwOwogICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzQXVkaW9D
YXB0dXJlKCkpCkBAIC05NzMsOCArOTczLDggQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSwKIAog
ICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXc7CiAgICAgY29u
c3QgV2ViRnJhbWVQcm94eSogbWFpbkZyYW1lID0gZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKTsK
LSAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBmcmFtZS51
cmwoKSk7Ci0gICAgV2ViQ29yZTo6VVJMIG1haW5GcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgbWFp
bkZyYW1lLT51cmwoKSk7CisgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgZnJhbWUudXJs
KCkpOworICAgIFVSTCBtYWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogCiAg
ICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkKE5TU3RyaW5nICosIEJPT0wp
Pjo6ZnJvbUNhbGxhYmxlKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oTlNT
dHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkgewogICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0
LT5zZXRVc2VyTWVkaWFBY2Nlc3NJbmZvKFN0cmluZyhzYWx0KSwgYXV0aG9yaXplZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JS
ZWNvdmVyeUF0dGVtcHRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVs
b2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCmluZGV4IDVmOTlhZWM4NWRhNzUyNGJh
MDQxZTc1ZWIwODAxNzM5OTA0OWIyMTIuLmFlNTc2NWU0OGU3MWI4N2ZmNjBkMTQwNWMzYzdhMzM3
MjUxNWNhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVs
b2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCkBAIC02
OSw3ICs2OSw3IEBAIC0gKEJPT0wpYXR0ZW1wdFJlY292ZXJ5CiAgICAgaWYgKCF3ZWJGcmFtZVBy
b3h5KQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICB3ZWJGcmFtZVByb3h5LT5sb2FkVVJMKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgX3VybFN0cmluZykpOworICAgIHdlYkZyYW1lUHJv
eHktPmxvYWRVUkwoVVJMKFVSTCgpLCBfdXJsU3RyaW5nKSk7CiAgICAgcmV0dXJuIFlFUzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbQppbmRleCBhZTY0NzA3ZGExNTFjMjJiYzM4MzlkYWI0YWY3ZTc0MDE0
ZTAyMjBlLi41ZmQ1YjkwY2Q0OWRiNDdkOGU3YzMwNmZjNDg2YjNiZTMxMmQ4MTQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJk
SXRlbUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggNWFhZGNmNjdkMTVlMGZmNGE3NzQxYjg1ZTlkZTI3YTQ5NzIyMjlmMi4uYmNiZjUzNzZi
MWEzZWJlYjQ3ZjgzYjMyODM4ZDIxNGRkNzBiNzFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQwNjYsNyArNDA2Niw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OndyaXRlVG9VUkxGb3JGaWxlUHJvbWlzZVByb3ZpZGVyKE5TRmlsZVByb21pc2VQ
cm92aWRlciAqcHJvdmlkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpV
UkwgYmxvYlVSTCB7IGluZm8uYmxvYlVSTCB9OworICAgIFVSTCBibG9iVVJMIHsgaW5mby5ibG9i
VVJMIH07CiAgICAgaWYgKGJsb2JVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHdlYktpdFVua25vd25FcnJvcigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggZTA3
YWFjODk2MDM4MTU2MWE3MmNhNTRiNzU1NzM5Mjc5ODVlMzQwYy4uNDc3MzZmMDZkZjgyODY4ZmUz
YmNiZGNkMDgxMGNlZWNmZGQ2ZGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEludFJl
Y3Q7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC03NSw4ICs3NCw4IEBAIGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpEb3dubG9hZD4sIHB1YmxpCiAgICAgV2ViUGFnZVByb3h5
KiBvcmlnaW5hdGluZ1BhZ2UoKSBjb25zdDsKICAgICB2b2lkIHNldE9yaWdpbmF0aW5nUGFnZShX
ZWJQYWdlUHJveHkqKTsKIAotICAgIHZvaWQgc2V0UmVkaXJlY3RDaGFpbihWZWN0b3I8V2ViQ29y
ZTo6VVJMPiYmIHJlZGlyZWN0Q2hhaW4pIHsgbV9yZWRpcmVjdENoYWluID0gV1RGTW92ZShyZWRp
cmVjdENoYWluKTsgfQotICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiByZWRpcmVjdENo
YWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdENoYWluOyB9CisgICAgdm9pZCBzZXRSZWRp
cmVjdENoYWluKFZlY3RvcjxVUkw+JiYgcmVkaXJlY3RDaGFpbikgeyBtX3JlZGlyZWN0Q2hhaW4g
PSBXVEZNb3ZlKHJlZGlyZWN0Q2hhaW4pOyB9CisgICAgY29uc3QgVmVjdG9yPFVSTD4mIHJlZGly
ZWN0Q2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0Q2hhaW47IH0KIAogICAgIHZvaWQg
c2V0V2FzVXNlckluaXRpYXRlZChib29sIHZhbHVlKSB7IG1fd2FzVXNlckluaXRpYXRlZCA9IHZh
bHVlOyB9CiAgICAgYm9vbCB3YXNVc2VySW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNV
c2VySW5pdGlhdGVkOyB9CkBAIC0xMjYsNyArMTI1LDcgQEAgY2xhc3MgRG93bmxvYWRQcm94eSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRvd25sb2FkPiwgcHVi
bGkKICAgICB1aW50NjRfdCBtX2J5dGVzTG9hZGVkIHsgMCB9OwogCiAgICAgV2Vha1B0cjxXZWJQ
YWdlUHJveHk+IG1fb3JpZ2luYXRpbmdQYWdlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IG1f
cmVkaXJlY3RDaGFpbjsKKyAgICBWZWN0b3I8VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9v
bCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAKaW5kZXggOWZlM2M3NjU2MWIyNTU3MTZhNDViYmEzOGZl
OTk1YTAwNTk3N2ZmYi4uNzJmNGY3MjQ1NWE3ZWI4YTY1YjllNTI3ZTU1YTFmODIxYWNlMDhmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcApAQCAtMzIsNyAr
MzIsNyBAQCBGcmFtZUxvYWRTdGF0ZTo6fkZyYW1lTG9hZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBG
cmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpCit2b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25z
dCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQobV9wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwog
CkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogICAgIG1fcHJvdmlzaW9uYWxVUkwgPSB1
cmw7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2Fk
U3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBV
UkwmIHVybCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwpOwog
CkBAIC04MSwxMiArODEsMTIgQEAgdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkRmFpbExvYWQoKQog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmluaXNoZWQ7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6
OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3Zv
aWQgRnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBVUkwm
IHVybCkKIHsKICAgICBtX3VybCA9IHVybDsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6c2V0
VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCkKK3ZvaWQg
RnJhbWVMb2FkU3RhdGU6OnNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdW5yZWFjaGFibGVV
UkwpCiB7CiAgICAgbV9sYXN0VW5yZWFjaGFibGVVUkwgPSBtX3VucmVhY2hhYmxlVVJMOwogICAg
IG1fdW5yZWFjaGFibGVVUkwgPSB1bnJlYWNoYWJsZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9GcmFtZUxvYWRTdGF0ZS5oCmluZGV4IDk4YzMyNWU4NDQzNmVkYWU0ZGNmNjM5ZDE0MDc2ZGE5
ODM1MzZjMTIuLmM2NTAwMDNmZmI1ZjBiNjg4NWMxM2YzMjZiZDJmYjRmZDI2YzlkZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuaApAQCAtMjUsNyArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzksMjkgKzM5LDI5IEBAIGNsYXNz
IEZyYW1lTG9hZFN0YXRlIHsKICAgICAgICAgRmluaXNoZWQKICAgICB9OwogCi0gICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpV
UkwmKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOworICAg
IHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVS
TCYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwogCiAgICAgdm9pZCBkaWRD
b21taXRMb2FkKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWls
TG9hZCgpOwogCi0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2Vi
Q29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3Qg
VVJMJik7CiAKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAg
ICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAg
Y29uc3QgV2ViQ29yZTo6VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
dmlzaW9uYWxVUkw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CisgICAgY29uc3QgVVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
dmlzaW9uYWxVUkw7IH0KIAotICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJik7Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KKyAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJM
KGNvbnN0IFVSTCYpOworICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJl
dHVybiBtX3VucmVhY2hhYmxlVVJMOyB9CiAKIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpGaW5pc2hlZCB9OwotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKLSAgICBXZWJDb3Jl
OjpVUkwgbV9wcm92aXNpb25hbFVSTDsKLSAgICBXZWJDb3JlOjpVUkwgbV91bnJlYWNoYWJsZVVS
TDsKLSAgICBXZWJDb3JlOjpVUkwgbV9sYXN0VW5yZWFjaGFibGVVUkw7CisgICAgVVJMIG1fdXJs
OworICAgIFVSTCBtX3Byb3Zpc2lvbmFsVVJMOworICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOwor
ICAgIFVSTCBtX2xhc3RVbnJlYWNoYWJsZVVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKaW5kZXggMGU5MjE4MzMyN2FiZjg3YWJiNjIwNjcwN2U2YWU1OGE2NTZh
YjViNC4uMTgxYTllMjRhZTVlZjY3NmQ2OThhNmY0MjVkZTk5N2Q1ODM4OGVhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5k
UHJvY2Vzc0RpZFJlc3VtZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpQcm9jZXNzRGlkUmVzdW1lKCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxi
YWNrKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjYWxsYmFjayhm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCmluZGV4IDI1NTg5N2U3ZTgyNWUxN2I4M2U4YjE0NjRiNDgwOTE3NTZl
YTMwMDcuLjRkYmJiNmZlZTA2MmZmNWUwOGJmMTNjMDc3MzE1MjA4ZTk5NTM0NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKLSNkZWZpbmUgTmV0d29ya1By
b2Nlc3NQcm94eV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94eS5oIgpAQCAtNDksNyArNDgsNiBAQCBj
bGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNz
IFNob3VsZFNhbXBsZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVVJMOwogc3RydWN0
IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAtODcsNyArODUsNyBAQCBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwcml2YXRlIFBy
b2Nlc3NUaHJvdAogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRp
ZgogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFj
ayk7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CiAKICAg
ICB2b2lkIHByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpOwogICAgIApAQCAtMjAzLDUgKzIwMSwzIEBA
IGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzUHJv
eHksIHByaXZhdGUgUHJvY2Vzc1Rocm90CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlTG9hZFN0YXRlLmNwcAppbmRleCAxNzU5ZjhhNDkzNjdkMDUyZTVmY2FlNTE3M2RhMjY3MjUz
OTdmNjYwLi4yZWQxMDc1YzYwMGViZGRlYTVlNGZmNTRmYWE5MWRkZDVmNWJlMmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcApAQCAtMjA2LDkgKzIwNiw5IEBA
IGJvb2wgUGFnZUxvYWRTdGF0ZTo6aGFzT25seVNlY3VyZUNvbnRlbnQoY29uc3QgRGF0YSYgZGF0
YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGRhdGEuc3RhdGUgPT0gU3RhdGU6
OlByb3Zpc2lvbmFsKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhkYXRhLnBy
b3Zpc2lvbmFsVVJMLCAiaHR0cHMiKTsKKyAgICAgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJcyhk
YXRhLnByb3Zpc2lvbmFsVVJMLCAiaHR0cHMiKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpwcm90
b2NvbElzKGRhdGEudXJsLCAiaHR0cHMiKTsKKyAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzKGRh
dGEudXJsLCAiaHR0cHMiKTsKIH0KIAogYm9vbCBQYWdlTG9hZFN0YXRlOjpoYXNPbmx5U2VjdXJl
Q29udGVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHAKaW5kZXggMjMxMDc1YWMzNTk5YmFkMWQxOWFkNGQ3YzQyZmM3
MmZmOThjZGEwMy4uNTEzMmI4M2JmYWFhYTEzZjQ3NmE2NjM2NTFjZDM2MjAwNjY0YWVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3Jl
LmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKaW5kZXggNmU5ZWVmYzhmNWY0MzhhZTg5YTJmMjVh
Yzg4MmI1NTA3ZmVlMWIzNC4uNTU1OTdmMzQ0YmY1MTM5YjlmNTY3M2MzMGY4OGM3MjgxNTdhZjk5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5oCkBAIC0zMSwxMCArMzEsNiBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRh
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFBsdWdpbkluZm9TdG9yZTsKQEAgLTUzLDcgKzQ5LDcgQEAgY2xhc3Mg
UGx1Z2luSW5mb1N0b3JlIHsKICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZvciBhIHBsdWctaW4g
dGhhdCBjYW4gaGFuZGxlIHRoZSBnaXZlbiBNSU1FIHR5cGUuCiAgICAgLy8gSWYgdGhlIE1JTUUg
dHlwZSBpcyBudWxsLCB0aGUgZmlsZSBleHRlbnNpb24gb2YgdGhlIGdpdmVuIHVybCB3aWxsIGJl
IHVzZWQgdG8gaW5mZXIgdGhlCiAgICAgLy8gcGx1Zy1pbiB0eXBlLiBJbiB0aGF0IGNhc2UsIG1p
bWVUeXBlIHdpbGwgYmUgZmlsbGVkIGluIHdpdGggdGhlIHJpZ2h0IE1JTUUgdHlwZS4KLSAgICBQ
bHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzID0gV2ViQ29y
ZTo6UGx1Z2luRGF0YTo6QWxsUGx1Z2lucyk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1
Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFs
bG93ZWRQbHVnaW5UeXBlcyA9IFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpOwogCiAg
ICAgLy8gUmV0dXJucyB0aGUgaW5mbyBmb3IgdGhlIHBsdWctaW4gd2l0aCB0aGUgZ2l2ZW4gYnVu
ZGxlIGlkZW50aWZpZXIuCiAgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luV2l0aEJ1bmRs
ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKTsKQEAgLTYzLDcgKzU5
LDcgQEAgY2xhc3MgUGx1Z2luSW5mb1N0b3JlIHsKIAogICAgIHN0YXRpYyBQbHVnaW5Nb2R1bGVM
b2FkUG9saWN5IGRlZmF1bHRMb2FkUG9saWN5Rm9yUGx1Z2luKGNvbnN0IFBsdWdpbk1vZHVsZUlu
Zm8mKTsKIAotICAgIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBwbHVnaW5VUkwsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxT
dHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcGFnZVVSTCk7CisgICAgYm9vbCBpc1N1cHBvcnRl
ZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHBsdWdpblVSTCwgY29u
c3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgVVJMJiBwYWdlVVJMKTsKICAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKTsKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBsdWdpbihT
dHJpbmcmJiBtYXRjaGluZ0RvbWFpbiwgU3RyaW5nJiYgaWRlbnRpZmllciwgSGFzaFNldDxTdHJp
bmc+JiYgbWltZVR5cGVzLCBIYXNoU2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7CiAgICAgdm9pZCBj
bGVhclN1cHBvcnRlZFBsdWdpbnMoKSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9IHN0ZDo6bnVsbG9w
dDsgfQpAQCAtMTA0LDcgKzEwMCw3IEBAIGNsYXNzIFBsdWdpbkluZm9TdG9yZSB7CiAgICAgICAg
IEhhc2hTZXQ8U3RyaW5nPiBtaW1lVHlwZXM7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBleHRl
bnNpb25zOwogICAgIH07Ci0gICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3Qg
U3VwcG9ydGVkUGx1Z2luJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6
VVJMJiBwbHVnaW5VUkwpOworICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0
IFN1cHBvcnRlZFBsdWdpbiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1
Z2luVVJMKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbj4+IG1f
c3VwcG9ydGVkUGx1Z2luczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggZDkwZjBh
OWVhMDc0ZjZmNWY5MWJkYmFhNjY3YmUwMjIyZTU4MjczOS4uZmFlY2YzMWRmNzk1ZDMxNjM4NjQ5
ZDIyNDM4MDdjZjk3NWIyYzU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMzQsMTIg
KzM0LDEyIEBACiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxRdWFydHpD
b3JlL0NBUmVtb3RlTGF5ZXJTZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPGNydF9leHRlcm5zLmg+CiAjaW1w
b3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4K
ICNpbXBvcnQgPHNwYXduLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBAaW50ZXJm
YWNlIFdLUGxhY2Vob2xkZXJNb2RhbFdpbmRvdyA6IE5TV2luZG93IApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5nUmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaAppbmRleCA3OTNiZjRiYTRhZjczZGEyMGJk
OTU3YTRiZmMwMzEyNWRmM2M3Nzc2Li4zNDIyMDQ3YWIyMDgwYjY5YmNiYjhkMzM4MzhhNzJkOGNh
ZTk5NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdS
ZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQu
aApAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgU1NCU2Vydmlj
ZUxvb2t1cFJlc3VsdDsKQEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFNhZmVCcm93c2luZ1Jlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNhZmVCcm93c2luZ1Jl
c3VsdD4gewogcHVibGljOgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLSAgICBzdGF0aWMgUmVm
PFNhZmVCcm93c2luZ1Jlc3VsdD4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgU1NCU2Vydmlj
ZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorICAgIHN0YXRpYyBSZWY8U2FmZUJyb3dzaW5nUmVzdWx0
PiBjcmVhdGUoVVJMJiYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTYWZlQnJvd3NpbmdSZXN1bHQoV1RGTW92
ZSh1cmwpLCByZXN1bHQpKTsKICAgICB9CiAjZW5kaWYKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFN0cmluZyYgcHJvdmlkZXIoKSBjb25zdCB7
IHJldHVybiBtX3Byb3ZpZGVyOyB9CiAgICAgYm9vbCBpc1BoaXNoaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9pc1BoaXNoaW5nOyB9CiAgICAgYm9vbCBpc01hbHdhcmUoKSBjb25zdCB7IHJldHVybiBt
X2lzTWFsd2FyZTsgfQpAQCAtNTAsOSArNTAsOSBAQCBjbGFzcyBTYWZlQnJvd3NpbmdSZXN1bHQg
OiBwdWJsaWMgUmVmQ291bnRlZDxTYWZlQnJvd3NpbmdSZXN1bHQ+IHsKIAogcHJpdmF0ZToKICNp
ZiBIQVZFKFNBRkVfQlJPV1NJTkcpCi0gICAgU2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNvcmU6OlVS
TCYmLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICopOworICAgIFNhZmVCcm93c2luZ1Jlc3VsdChV
UkwmJiwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqKTsKICNlbmRpZgotICAgIFdlYkNvcmU6OlVS
TCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fcHJvdmlkZXI7CiAgICAgYm9v
bCBtX2lzUGhpc2hpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc01hbHdhcmUgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5k
ZXggOGJjNGE3NTNmYTc2NzNkNDExYjliNGNmNWI1NDQyOTc5ZDY5MzIwNC4uMmVhNzlmODJkMTM5
ZTFkYjVlMjcxODFlNDI1YzllZWUxNTE4ZTIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCmluZGV4IDk0OWM4ZGY3MjFl
ZDllZDM1YTdkYTY4ZWM3Y2Y5MTI3OWVmOTBhMzEuLjI2OWQwYzMyZmIzMjA4NGI1N2U3ZDE2YjBj
Y2YyNWNlZjc0ZjljMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3Rl
bVByZXZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVt
UHJldmlld0NvbnRyb2xsZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiBPQkpDX0NMQVNTIFFMUHJldmlld0Nv
bnRyb2xsZXI7CkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
IHsKIAogICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpOwogICAgIHZvaWQgdXBkYXRlUHJvZ3Jlc3MoZmxvYXQpOwotICAgIHZvaWQg
ZmluaXNoKFdlYkNvcmU6OlVSTCk7CisgICAgdm9pZCBmaW5pc2goVVJMKTsKICAgICB2b2lkIGNh
bmNlbCgpOwogICAgIHZvaWQgZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5k
ZXggZTMzMTY3YTg5NTBjMTY4ZjAxYzAzMmNlYjllNWY4Zjk4MWU1MTM4MC4uOWYyNDBkMzAyMWVk
Zjg2YzdjYWVkN2U4MTQ1OTUxZGVkMzI2MGUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTcxLDEwICs3MSwxMCBAQCBjbGFzcyBX
ZWJDb29raWVNYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpDb29raWVNYQogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uo
UEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CiAKICAgICB2b2lkIHNldENvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwot
ICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAg
IHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248
dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lkIGdldEFsbENvb2tpZXMo
UEFMOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZv
aWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAg
ICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBIVFRQQ29v
a2llQWNjZXB0UG9saWN5LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBGdW5j
dGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggMjk3YWE4YWYz
MjU1YjBkYWY0YzQ3M2FlNzczZTcwZGFjNjliNDVjOC4uNDk3YjIzMTdiN2RjZjE2NmY3MWRjNDAw
ZTVmZjc4ZmQwZWExZGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
aApAQCAtODAsMTQgKzgwLDE0IEBAIGNsYXNzIFdlYkZyYW1lUHJveHkgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpGcmFtZT4gewogCiAgICAgRnJhbWVMb2FkU3Rh
dGUmIGZyYW1lTG9hZFN0YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZTsgfQogCi0gICAg
dm9pZCBsb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgbG9hZFVSTChjb25z
dCBVUkwmKTsKICAgICB2b2lkIHN0b3BMb2FkaW5nKCkgY29uc3Q7CiAKLSAgICBjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7IH0K
LSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9CisgICAgY29uc3QgVVJMJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVybCgpOyB9CisgICAgY29uc3QgVVJM
JiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUucHJvdmlz
aW9uYWxVUkwoKTsgfQogCi0gICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CisgICAgdm9pZCBz
ZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9
CiAKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9NSU1FVHlw
ZTsgfQogICAgIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGFpbnNQbHVnaW5Eb2N1bWVudDsgfQpAQCAtMTA4LDEzICsxMDgsMTMgQEAgY2xhc3MgV2Vi
RnJhbWVQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkZy
YW1lPiB7CiAgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6
RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0
YShBUEk6OlVSTCosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29y
ZTo6VVJMJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZChjb25zdCBVUkwmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWQoKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
V2ViQ2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50KTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkKCk7Ci0gICAgdm9pZCBk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOyAvLyBlZy4gYW5j
aG9yIG5hdmlnYXRpb24sIHNlc3Npb24gc3RhdGUgY2hhbmdlLgorICAgIHZvaWQgZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbihjb25zdCBVUkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBz
ZXNzaW9uIHN0YXRlIGNoYW5nZS4KICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGljeUxpc3Rl
bmVyUHJveHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQ
STo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgVmVjdG9y
PFJlZjxTYWZlQnJvd3NpbmdSZXN1bHQ+PiYmKT4mJiwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5n
UmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmlu
ZGV4IDg0NDIwYTEzNTc0OWM0OWYyM2Q4ZTJjNDkwYzhkZDk0NzZjZDMzN2YuLjU1NGU3NDQ4ZWM0
YWNmODY5NzNkMjZiOWRhMDBhZDFjNjNiY2Q5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtNTAsMTAgKzUwLDYgQEAgT0JKQ19DTEFTUyBXS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyOwogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNlbmRpZgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtMTUxLDcgKzE0Nyw3IEBAIGNsYXNzIFdlYkluc3Bl
Y3RvclByb3h5CiAgICAgc3RhdGljIFN0cmluZyBpbnNwZWN0b3JQYWdlVVJMKCk7CiAgICAgc3Rh
dGljIFN0cmluZyBpbnNwZWN0b3JUZXN0UGFnZVVSTCgpOwogICAgIHN0YXRpYyBTdHJpbmcgaW5z
cGVjdG9yQmFzZVVSTCgpOwotICAgIHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdEluc3BlY3RvclBh
Z2UoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5z
cGVjdG9yUGFnZShjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5p
bXVtV2luZG93V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1XaW5kb3dI
ZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCmluZGV4IDNhNTk0YmI3YjRhMjYwYjk0YjA4ZmZj
YmVkYzJhZWNhY2U5NDFhZDcuLjAyODEyY2Y3ZmJlN2I0ZTU2ZjI3NTc5MmVmMjk0MGQ5ZWVmZDg2
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAi
QVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDIyZjI2YWVhMTg0OGE0MDlhODI4N2Mz
MjY1NjViM2YzZWQxMzdjMC4uODg2YmMyYmQxMzNjNjM5YTBkMGNlNGE3ZGZlOGUzYzZiNDA2Nzc0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTMsMTMg
KzE1MywxMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dEluZGljYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJi
bGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3Rk
aW8uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3lz
dGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFy
c2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtMTA3MSw3ICsxMDcxLDcgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIGMKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNh
Y3Rpb24oKTsKIAotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0
cmFuc2FjdGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IGJsYW5rVVJMKCkuc3Ry
aW5nKCkpOworICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFu
c2FjdGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IFdURjo6YmxhbmtVUkwoKS5z
dHJpbmcoKSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlBy
b2Nlc3MoKTsKQEAgLTEwOTIsNyArMTA5Miw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAg
ICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojps
b2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgYm9vbCBm
b3JTYWZlQnJvd3NpbmcpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywg
Y29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIGJvb2wgZm9yU2FmZUJyb3dzaW5nKQogewogICAgIC8vIFdoZW4gdGhlIFVJ
UHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9u
YWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5h
dGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBm
cm9tIGJlaW5nCkBAIC0xMTQxLDcgKzExNDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdl
YkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwog
ICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQ
ZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7Cisg
ICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBX
VEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogCiAgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFt
ZXRlcnM7CiAgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsKQEAgLTExNjAsNyAr
MTE2MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgSW50UG9pCiAgICAgaWYgKG1faXNDbG9zZWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1
cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghaXNWYWxpZCgpKQpAQCAtMzUwNiw3ICszNTA2LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkK
ICAgICBtX25hdmlnYXRpb25TdGF0ZS0+ZGlkRGVzdHJveU5hdmlnYXRpb24obmF2aWdhdGlvbklE
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwm
JiB1cmwsIFdlYkNvcmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCwgVVJM
JiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC0zNjA0LDcgKzM2
MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlEKQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENhbmNl
bENsaWVudFJlZGlyZWN0KCp0aGlzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5n
ZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIFdlYkNv
cmU6OlVSTCYmIHVybCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVS
TEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBVUkwmJiB1cmwpCiB7CiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtMzg3NCw3
ICszODc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELAogICAgIH0KIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5h
dmlnYXRpb25UeXBlLCBXZWJDb3JlOjpVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgp
KTsKIApAQCAtNDI0MSw3ICs0MjQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRG
b3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihX
ZWJDb3JlOjpVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxT
dHJpbmc+JiYgbm90aWZpY2F0aW9ucykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50UnVsZUxp
c3ROb3RpZmljYXRpb24oVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBW
ZWN0b3I8U3RyaW5nPiYmIG5vdGlmaWNhdGlvbnMpCiB7CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5jb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oKnRoaXMsIFdURk1vdmUodXJsKSwgV1RGTW92
ZShpZGVudGlmaWVycyksIFdURk1vdmUobm90aWZpY2F0aW9ucykpOwogfQpAQCAtNTk1Miw3ICs1
OTUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAobV9w
cm9jZXNzLT5pc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkgewotICAgICAgICBTdHJpbmcgZG9tYWlu
ID0gV2ViQ29yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihXZWJDb3JlOjpVUkwoeyB9
LCBjdXJyZW50VVJMKCkpLmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIGRvbWFp
biA9IFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oVVJMKHsgfSwgY3VycmVu
dFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1wdHko
KSkKICAgICAgICAgICAgIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aEVuaGFuY2VkUHJpdmFjeShX
ZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmRvbWFpbkNhdXNpbmdKZXRzYW1LZXkoKSwg
ZG9tYWluLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB9CkBAIC03MDMxLDcgKzcw
MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgd3JhcHBlZEtleSwgYm9vbCYgc3VjYwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6
ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIFN0cmluZyYgcmVzdWx0KQordm9pZCBXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYg
Y2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNzY3Niw5
ICs3Njc2LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVS
TFNjaGVtZUhhbmRsZXI+JiYgaGFuZGxlciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAg
YXV0byBjYW5vbmljYWxpemVkU2NoZW1lID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNj
aGVtZShzY2hlbWUpOworICAgIGF1dG8gY2Fub25pY2FsaXplZFNjaGVtZSA9IFdURjo6VVJMUGFy
c2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUpOwogICAgIEFTU0VSVChjYW5vbmlj
YWxpemVkU2NoZW1lKTsKLSAgICBBU1NFUlQoIVVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKGNh
bm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOworICAgIEFTU0VSVCghV1RGOjpVUkxQYXJzZXI6
OmlzU3BlY2lhbFNjaGVtZShjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKIAogICAgIGF1
dG8gc2NoZW1lUmVzdWx0ID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lLmFkZChjYW5vbmlj
YWxpemVkU2NoZW1lLnZhbHVlKCksIGhhbmRsZXIuZ2V0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQo
c2NoZW1lUmVzdWx0LCBzY2hlbWVSZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGU2NmM1NGE4YTMyNTgzYmJmNzhiMGI3M2Y3YWQ5YTNj
ZWNjYzY1NTguLmVlZGE3MTViNzAxYzE4YWE1ZjMyMzVhY2NmODdiZjc4ZTNjOTFiMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04Myw3ICs4Myw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRD
aGVja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24uaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CkBAIC05NSw2ICs5NCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDY0LDcgKzQ2NCw3IEBA
IGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6OlBhZ2U+CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxv
d0V4dGVybmFsU2NoZW1lcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMLCBj
b25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEg
PSBudWxscHRyKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9
IG51bGxwdHIpOwotICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNl
VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEgPSBudWxscHRyLCBib29sIGZvclNhZmVCcm93c2luZyA9IGZhbHNlKTsKKyAgICB2b2lk
IGxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0ciwgYm9vbCBmb3JTYWZlQnJvd3Npbmcg
PSBmYWxzZSk7CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9j
dW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogCkBAIC0xMDY0LDgg
KzEwNjQsOCBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlS
ZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNhdmVEYXRh
VG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmlu
ZyYmIG1pbWVUeXBlLCBXZWJDb3JlOjpVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJik7
Ci0gICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2Vz
dGVkRmlsZW5hbWUsIFdlYkNvcmU6OlVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIo
U3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBVUkwmJiBvcmln
aW5hdGluZ1VSTCwgQVBJOjpEYXRhJik7CisgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFVSTCYmIG9yaWdpbmF0aW5nVVJM
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
b2lkIHNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25S
YXcoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
dGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBj
b25zdCBTdHJpbmcmIHBkZlVVSUQpOwogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVy
QW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpOwpAQCAtMTE3OCw3ICsxMTc4LDcgQEAg
Y2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6UGFnZT4KICAgICB2b2lkIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhf
dD4mLCBib29sJiBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiYpOwogI2VuZGlmCiAKLSAgICB2
b2lkIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5k
ZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBT
dHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywg
Y29uc3QgVVJMJiwgU3RyaW5nJiByZXN1bHQpOwogCiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2Vi
Q29yZTo6SW50UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlv
bnMsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKQEAgLTEzNDYsNyArMTM0Niw3IEBAIGNsYXNzIFdl
YlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBh
Z2U+CiAgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICNlbmRpZgogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNv
bnN0IFdlYkNvcmU6OlVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2
b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25z
dCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1
Y2Nlc3MpPiYmKTsKIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgcHJlZmVyZW5jZXNTdG9yZSgp
IGNvbnN0OwogCkBAIC0xNDExLDE3ICsxNDExLDE3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBk
aWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENyZWF0ZVdp
bmRvdyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYp
OwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6OlVS
TCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRv
dWJsZSBkZWxheSk7CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpOwotICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYm
KTsKKyAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJh
bWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWlu
c1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVu
dD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQg
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNl
ckRhdGEmKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVE
b2N1bWVudE5hdmlnYXRpb25UeXBlLCBXZWJDb3JlOjpVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsK
KyAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlLCBVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZU1haW5E
b2N1bWVudCh1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsK
QEAgLTE0NDgsMTEgKzE0NDgsMTEgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBv
bGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsK
LSAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJiwgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CisgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0No
ZWNrKGNvbnN0IFVSTCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCiAgICAgdm9p
ZCB3aWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlE
LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVl
cywgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICAgICAgCi0gICAg
dm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxT
dHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7Cisg
ICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oVVJMJiYsIFZlY3RvcjxTdHJpbmc+
JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7CiAKICAgICAv
LyBIaXN0b3J5IGNsaWVudAogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEo
Y29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwpAQCAtMTQ3
Myw4ICsxNDczLDggQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0
dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFxdWVQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcGx1Z2luc1BhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgd2ViR0xQb2xpY3lG
b3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5
Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7Ci0gICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JV
UkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBv
bGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwo
VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVk
UmVwbHkmJik7CisgICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5
JiYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xiYXJzQXJlVmlz
aWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSk7CiAgICAgdm9pZCBnZXRUb29sYmFyc0FyZVZp
c2libGUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxh
eWVkUmVwbHkmJik7CkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQg
c2V0UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0
SW5wdXRJZGVudGlmaWVyLCB1aW50NjRfdCBjb21wbGV4VGV4dElucHV0U3RhdGUpOwogI2VuZGlm
CiAKLSAgICBib29sIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgYm9vbCBtYXli
ZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFVSTCYsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYpOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQog
ICAgIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlZmJiNGIxZjg3YzQ3OGZi
MDM4MzI2Yjk5NDAyN2YyMmE3ODBkNWE0Li5jMGQ3ZDgyMTI1NGMzZTdiYTlmYjAzZDllN2Y1YThm
MWQ2ZjRlYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0zNCw4ICszNCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAgICAgVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IHBsdWdpblVuYXZh
aWxhYmlsaXR5UmVhc29uLCBTdHJpbmcgbWltZVR5cGUsIFN0cmluZyBwbHVnaW5VUkxTdHJpbmcs
IFN0cmluZyBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3Ry
aW5nLCBTdHJpbmcgcGFnZVVSTFN0cmluZykKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29y
ZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKLSAgICBSZXNvbHZl
V2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xp
Y3kpIERlbGF5ZWQKKyAgICBXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3Qg
bG9hZFBvbGljeSkgRGVsYXllZAorICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwgdXJs
KSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVsYXllZAogI2VuZGlmIC8vIEVOQUJMRShXRUJH
TCkKICAgICBEaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoc3RydWN0IFdlYkNvcmU6OlZpZXdw
b3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIERpZFJlY2VpdmVFdmVudCh1aW50MzJfdCB0
eXBlLCBib29sIGhhbmRsZWQpCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIERpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3Qg
V2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllciB3aW5kb3dJZGVudGlmaWVyKQogCiAgICAg
IyBGcmFtZSBsb2FkIG1lc3NhZ2VzCi0gICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1
cmwsIFdlYkNvcmU6OlVSTCB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKKyAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMIHVybCwgVVJMIHVucmVhY2hhYmxlVVJMLCBXZWJL
aXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCiAgICAgV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyB1cmwsIGRvdWJsZSBkZWxheSkKICAgICBEaWRDYW5jZWxDbGllbnRS
ZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgRGlkQ2hhbmdlUHJvdmlzaW9u
YWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdl
YkNvcmU6OlVSTCB1cmwpCisgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwpCiAgICAgRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJy
b3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBl
LCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5E
b2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNl
ZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRG
YWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
QEAgLTE0NSw3ICsxNDUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRGV0ZWN0WFNT
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAg
ICBEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCB0eXBlLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJL
aXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5
cGUsIFVSTCB1cmwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ2hhbmdlTWFp
bkRvY3VtZW50KHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCkKIApAQCAtNDI3LDcgKzQyNyw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8
V2ViQ29yZTo6UmVjZW50U2VhcmNoPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNo
ZXMoU3RyaW5nIG5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiByZXN1bHQp
CiAKLSAgICBTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3RlZEZp
bGVuYW1lLCBXZWJDb3JlOjpVUkwgb3JpZ2luYXRpbmdVUkwsIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhKQorICAgIFNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVk
RmlsZW5hbWUsIFVSTCBvcmlnaW5hdGluZ1VSTCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVu
V2l0aE5hdGl2ZUFwcGxpY2F0aW9uKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIHBkZlVV
SUQpCkBAIC00ODcsNyArNDg3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAg
IERpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogCi0gICAgQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYkNv
cmU6OlVSTCB1cmwsIFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiBu
b3RpZmljYXRpb25zKQorICAgIENvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihVUkwgdXJsLCBW
ZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9ucykK
IAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1Mp
CiAgICAgQWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0X3QgY29udGV4dElkKQpA
QCAtNTQ2LDYgKzU0Niw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RvcERp
c3BsYXlMaW5rKHVuc2lnbmVkIG9ic2VydmVySUQpCiAjZW5kaWYKIAotICAgIFNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFs
bGVuZ2VTdHJpbmcsIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQorICAgIFNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0
cmluZyBjaGFsbGVuZ2VTdHJpbmcsIFVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggODE3NWEzYzY4
NWY3NDI3ZjE1NDE0OTVhZjIxNTA5YWM5OGMxZjE3ZS4uMGEwMmUzYmQ3MTg4ZGRlMDA1NzAyNjZk
MDhiMjFiNWQzNzg3NzkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtODYsNyArODYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3Jl
ZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CkBAIC05NCw2ICs5Myw3IEBACiAjaW5jbHVkZSA8d3RmL1Byb2Nl
c3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9T
Y29wZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDE0NDQyOGI2ZjA5ZGM5YjVlZjcxNzU1
N2Y2NDQ0Y2FlZGU1NGEwYzEuLmIxZTRjNWQxY2M0OTIxMDEyMTYzNWU4N2FiYjc5NjdkMzQxZDVm
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjM0LDcg
KzIzNCw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1BvCiAgICAgdm9pZCByZWdpc3RlclVSTFNj
aGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVn
aXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYp
OwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6VVJMJik7Cisg
ICAgdm9pZCBwcmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgVVJMJik7CiAKICAgICBWaXNpdGVkTGlu
a1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdl
dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDllODQ0Y2RiNWU2ZjI5YmQ4YTRkMzE1Y2VmZmRiNmRjYzE4MTE5MzIuLmFkMjczYTIyODhl
ZTM4OWI2NmY0ODU4ZDJlNDYxYTUxOWVkOTEzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1
ZmZpeC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcxNiw3
ICs3MTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFp
bGVkVG9MYXVuY2goKQogI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAgICAgaWYgKHBh
Z2VzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIGF1dG8mIHBhZ2UgPSAqcGFnZXNbMF07Ci0gICAg
ICAgIFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdlYkNvcmU6
OlVSTCh7IH0sIHBhZ2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgICAg
IFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFVSTCh7IH0sIHBh
Z2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWlu
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHBhZ2UubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoRW5o
YW5jZWRQcml2YWN5KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6ZG9tYWluQ2F1c2lu
Z0NyYXNoS2V5KCksIGRvbWFpbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBlMGE2N2NiNzg5
ZGZmNmQyMGFhNWI5NWRhNjAxZmMzZjlmYzJlOGM2Li4xMjZhZDI2YjY2MDljMjIyNmRlYzk4NmI1
NTJkNTI3ZGFlNDIwODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaApAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogc3RydWN0
IFBsdWdpbkluZm87CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQpAQCAtMTQ2LDEwICsx
NDUsMTAgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5
LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2wKIAogICAgIHZvaWQgd2lsbEFjcXVpcmVV
bml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKSB7IG1fbWF5SGF2ZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbiA9IHRydWU7IH0KICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nl
c3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBoYXNBc3N1bWVkUmVhZEFjY2Vz
c1RvVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgaGFzQXNzdW1lZFJl
YWRBY2Nlc3NUb1VSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIGJvb2wgY2hlY2tVUkxSZWNl
aXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgY2hlY2tVUkxSZWNl
aXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgY2hlY2tV
UkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wg
ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAz
MTc4MzZiNDJmZjY3NGU1N2I0Y2JlYWVlODcxZGYxMzQ3ZWU3NWY0Li5mOGQ5Mjg0NWE2M2ZhMmIz
OWIxN2IxZWJlODliMTcxNWZhN2JhNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE3Miw3
ICsxNzIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sIHZhbAogICAgIH0pOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBVUkwmIHVybCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VibWl0VGVsZW1ldHJ5KCkKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25z
dCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RV
UkwpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0
aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZ2VVUkwsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiByZWRpcmVjdFVS
TCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmlu
ZGV4IDZjNDEwZmE0YTk1YTNjMDA4ZDU3YjIzZjZjODMxZDllY2QwNDA3ZDAuLjU4MWEyYWU5MThi
ZTc0OWY2YTNhMzRjMDYyOGE1MDQ1NGE0N2JiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw3
ICs0MSw2IEBAIGNsYXNzIFdvcmtRdWV1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M7CiB9CiAKQEAgLTg0LDI4ICs4MywyOCBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUmVzbwogCiAg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKTsKIAotICAgIHZvaWQgbG9nRnJhbWVO
YXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHBhZ2VV
UkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
cmVkaXJlY3RVUkwpOwotICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJ
bnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0TGFzdFNlZW4o
Y29uc3QgV2ViQ29yZTo6VVJMJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVz
b3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiwgY29uc3Qg
VVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBVUkwm
IHJlZGlyZWN0VVJMKTsKKyAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rp
b24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhh
c0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFVSTCYsIFNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShj
b25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VmVy
eVByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2Uo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0g
ICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3Vi
cmVzb3VyY2VVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwmIHN1
YkZyYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhjb25z
dCBXZWJDb3JlOjpVUkwmIGhvc3RSZWRpcmVjdGVkRnJvbSwgY29uc3QgV2ViQ29yZTo6VVJMJiBo
b3N0UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2
b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgYm9vbCk7Ci0gICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRT
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJmcmFtZSwg
Y29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3Qg
V2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6
VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOwotICAgIHZvaWQgc2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lSG9zdE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9p
ZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworICAgIHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXIoY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiB0b3BG
cmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lz
dGVyZWRBc1N1YkZyYW1lVW5kZXIoY29uc3QgVVJMJiBzdWJGcmFtZSwgY29uc3QgVVJMJiB0b3BG
cmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0
IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYs
IGJvb2wpOworICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luKGNvbnN0IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZv
aWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3Vy
Y2UsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRp
cmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oY29u
c3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsK
KyAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHRvcEZyYW1l
SG9zdE5hbWUsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBj
b25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOwogICAgIHZvaWQgc2NoZWR1bGVDb29r
aWVCbG9ja2luZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0Jsb2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckJsb2NraW5nU3RhdGVGb3JEb21haW5z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpAQCAtMTMyLDcgKzEzMSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJSZXNvCiAgICAgdm9p
ZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29s
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiAgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmKT4mJiBjYWxsYmFjaykgeyBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKTsgfQogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5oCmluZGV4IDc5OTI2M2VhYzRhMmMyODgyNDY0ZDllZmFlYTQ2YTg0MzE0OWRhNWYu
LjVmNGEzYTVkMTg0M2ViYTJiMTQwMjY3MjEwYTQwNDg5ZTdjOTk3N2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgK
QEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QYXRoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBEcmFnU291cmNlU3Rh
dGUgewogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGlj
YXRvckRhdGE7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXRoPiB2aXNpYmxlUGF0aDsK
ICAgICBTdHJpbmcgbGlua1RpdGxlOwotICAgIFdlYkNvcmU6OlVSTCBsaW5rVVJMOworICAgIFVS
TCBsaW5rVVJMOwogICAgIGJvb2wgcG9zc2libHlOZWVkc0RyYWdQcmV2aWV3VXBkYXRlIHsgdHJ1
ZSB9OwogCiAgICAgTlNJbnRlZ2VyIGl0ZW1JZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQppbmRl
eCBiYjY2MzQ3NTI1ZjE4ODcxMDA3Y2U1MDRiZWI5MjI0NTljOTBlMWNhLi5lMzQ2MGY0MTVkMGI4
NjhiZGYzYzI5MjVmYzQzOGI1N2U3ZmY5MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpAQCAtNDEsMTAgKzQxLDEw
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2Nv
YS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2lt
cG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlT
ZW1hcGhvcmUuaD4KIApAQCAtMzA0LDcgKzMwNCw3IEBAIC0gKHZvaWQpX2NyZWF0ZVNoZWV0V2l0
aEVsZW1lbnRBY3Rpb25zOihOU0FycmF5ICopYWN0aW9ucyBzaG93TGlua1RpdGxlOihCT09MKXNo
CiAgICAgICAgIGlmIChpc0phdmFTY3JpcHRVUkwpCiAgICAgICAgICAgICB0aXRsZVN0cmluZyA9
IFdFQl9VSV9TVFJJTkdfS0VZKCJKYXZhU2NyaXB0IiwgIkphdmFTY3JpcHQgQWN0aW9uIFNoZWV0
IFRpdGxlIiwgIlRpdGxlIGZvciBhY3Rpb24gc2hlZXQgZm9yIEphdmFTY3JpcHQgbGluayIpOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV2ViQ29yZTo6dXNlclZp
c2libGVTdHJpbmcodGFyZ2V0VVJMKTsKKyAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV1RGOjp1
c2VyVmlzaWJsZVN0cmluZyh0YXJnZXRVUkwpOwogICAgICAgICAgICAgdGl0bGVJc1VSTCA9IFlF
UzsKICAgICAgICAgfQogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjAxYzRmNmEzYzU0
ZTk5YzcxNjU1NzhiYWU3MjJmMzhlY2I4ZTU4Yy4uNTMxNmJjM2QwNmM5MmE2ZTcyNzRkYjgxMmM0
YjljZjIxMTk1MTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04Nyw3ICs4Nyw2IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1w
b3J0IDxXZWJLaXQvV2ViU2VsZWN0aW9uUmVjdC5oPiAvLyBGSVhNRTogV0syIHNob3VsZCBub3Qg
aW5jbHVkZSBXZWJLaXQgaGVhZGVycyEKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmg+CkBAIC05OCw2ICs5Nyw3IEBACiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNp
bXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+Cisj
aW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC00ODk1LDkgKzQ4OTUsOSBA
QCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICop
YXNzaXN0YW50IG9wZW5FbGVtZW50QXRMbwogLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDoo
V0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXRoVVJMOihO
U1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAgaWYgKF90ZXh0U2Vs
ZWN0aW9uQXNzaXN0YW50KQotICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1No
YXJlU2hlZXRGb3I6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3Rd
OworICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6V1RG
Ojp1c2VyVmlzaWJsZVN0cmluZyh1cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CiAgICAgZWxz
ZSBpZiAoX3dlYlNlbGVjdGlvbkFzc2lzdGFudCkKLSAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Np
c3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpi
b3VuZGluZ1JlY3RdOworICAgICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVT
aGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0
XTsKIH0KIAogI2lmIEhBVkUoQVBQX0xJTktTKQpAQCAtNjE4Nyw3ICs2MTg3LDcgQEAgLSAoVUlW
aWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29u
dHJvbGxlcjooVUlQcmV2aWUKIAogICAgIE5TVVJMICp0YXJnZXRVUkwgPSBjb250cm9sbGVyLnBy
ZXZpZXdEYXRhW1VJUHJldmlld0RhdGFMaW5rXTsKICAgICBVUkwgY29yZVRhcmdldFVSTCA9IHRh
cmdldFVSTDsKLSAgICBib29sIGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdl
dFVSTC5pc0VtcHR5KCkgJiYgKFdlYkNvcmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29yZVRh
cmdldFVSTCkgfHwgV2ViQ29yZTo6cHJvdG9jb2xJcyhjb3JlVGFyZ2V0VVJMLCAiZGF0YSIpKTsK
KyAgICBib29sIGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0Vt
cHR5KCkgJiYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShjb3JlVGFyZ2V0VVJMKSB8fCBX
VEY6OnByb3RvY29sSXMoY29yZVRhcmdldFVSTCwgImRhdGEiKSk7CiAKICAgICBpZiAoW19wcmV2
aWV3SXRlbUNvbnRyb2xsZXIgdHlwZV0gPT0gVUlQcmV2aWV3SXRlbVR5cGVMaW5rKSB7CiAgICAg
ICAgIF9oaWdobGlnaHRMb25nUHJlc3NDYW5DbGljayA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXgg
YmRjYzU3MTBmYzdmNDk2NWYzYzk4ZGUxNzE2MTM1OWZhNzM1NzU4Mi4uNWFhY2M1ZWU5MDQ1YWFm
ZGMxNmEzNjM1YTFlYmY0MWE5MjRhNDQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC00MSwxMyArNDEs
MTMgQEAKICNpbXBvcnQgIl9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCIKICNp
bXBvcnQgIl9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBv
cnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIK
ICNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CkBA
IC0xODQsNyArMTg0LDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVk
CiAKICAgICAgICAgaWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19j
YXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oW3JlcXVlc3QudmlldyBVSURlbGVnYXRlXSk7
CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNp
b25IYW5kbGVyOildKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJM
KFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CisgICAgICAgICAgICBVUkwg
cmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CiAgICAgICAgICAg
ICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQoKSwgKnJlcXVlc3Qub3JpZ2luLmdldCgpKSk7
CiAgICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
PiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUo
dWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6
YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwogICAgICAgICAgICAgV0tXZWJW
aWV3ICp2aWV3RnJvbVJlcXVlc3QgPSByZXF1ZXN0LnZpZXcuZ2V0KCk7CkBAIC0yMDAsOCArMjAw
LDggQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAgIGlm
IChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3Vs
ZFJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6aXNNYWluRnJhbWU6bWFpbkZy
YW1lVVJMOildKSB7CiAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1h
aW5GcmFtZSA9IHJlcXVlc3QuZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgICAgICAg
ICBib29sIGlzTWFpbkZyYW1lID0gcmVxdWVzdC5mcmFtZSA9PSBtYWluRnJhbWU7Ci0gICAgICAg
ICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0
LmZyYW1lLT51cmwoKSk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdl
YkNvcmU6OlVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCByZXF1ZXN0
RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCBt
YWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogICAgICAgICAgICAgcmVxdWly
ZXNVc2VyQXV0aG9yaXphdGlvbiA9IFt1aURlbGVnYXRlIF93ZWJWaWV3OnJlcXVlc3Qudmlldy5n
ZXQoKQogICAgICAgICAgICAgICAgICBzaG91bGRSZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0
aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzTWFpbkZyYW1lOmlzTWFpbkZyYW1lCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbQppbmRleCBkMzhmMzFjODE1ZjNj
OWYzZTk4ZGE1MmU1NGZiODg4ODRlZDBhNDMwLi5hZWEwZDZkMzlmNjJkNzFkOTY3NDQ2ZTY4MjI3
ZWJkN2YyODNhZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tM
ZWdhY3lQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2Fj
eVBERlZpZXcubW0KQEAgLTQzLDExICs0MywxMSBAQAogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZp
Y2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVO
U1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAK
IC8vIEFsbCBvZiBVSVBERlBhZ2UqIGFyZSBkZXByZWNhdGVkLCBzbyBqdXN0IGlnbm9yZSBkZXBy
ZWNhdGVkIGRlY2xhcmF0aW9ucwogLy8gaW4gdGhpcyBmaWxlIHVudGlsIHdlIHN3aXRjaCBvZmYg
dGhlbS4KQEAgLTc3OSw3ICs3NzksNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihX
S0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50QXRMbwogLSAodm9p
ZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFu
dCBzaGFyZUVsZW1lbnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdS
ZWN0CiB7CiAgICAgX3dlYlNlbGVjdGlvbkFzc2lzdGFudCA9IGFkb3B0TlMoW1tVSVdLU2VsZWN0
aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwotICAgIFtfd2ViU2VsZWN0
aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5n
KHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKKyAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFu
dCBzaG93U2hhcmVTaGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6
Ym91bmRpbmdSZWN0XTsKICAgICBfd2ViU2VsZWN0aW9uQXNzaXN0YW50ID0gbmlsOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBkZmY0YzZjYmYwMDMy
ZTE1NWNiY2I5MWYxM2FiZmIzZGMyMzQwMWVhLi5jZjRlOGE3MzMzNGZmNTdjMjZkY2YxNTJkMjM3
NGNhZThkYmNjZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQ
REZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0K
QEAgLTM4LDExICszOCwxMSBAQAogI2ltcG9ydCAiX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50
ZXJuYWwuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0
Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIEBp
bnRlcmZhY2UgV0tQREZWaWV3ICgpIDxQREZIb3N0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSwgV0tB
Y3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlPgogQGVuZApAQCAtNDk3LDcgKzQ5Nyw3IEBAIC0g
KHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Np
c3RhbnQgb3BlbkVsZW1lbnRBdExvCiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0Fj
dGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdGhVUkw6KE5TVVJM
ICopdXJsIHJlY3Q6KENHUmVjdClib3VuZGluZ1JlY3QKIHsKICAgICBhdXRvIHNlbGVjdGlvbkFz
c2lzdGFudCA9IGFkb3B0TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0
aFZpZXc6W19ob3N0Vmlld0NvbnRyb2xsZXIgdmlld11dKTsKLSAgICBbc2VsZWN0aW9uQXNzaXN0
YW50IHNob3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJv
bVJlY3Q6Ym91bmRpbmdSZWN0XTsKKyAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNo
ZWV0Rm9yOldURjo6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3Rd
OwogfQogCiAjaWYgSEFWRShBUFBfTElOS1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlcklPUy5tbQppbmRleCA0ZWRkOTRiZWJjZGRiNTA0MGIwMDk0ZmM0ODdhNTUy
NmU2OTI1MGZlLi4yNjU4YjM2M2I0MTFhM2JiZmI2ZDRkZDZkM2VkYTRkMWFhYjIxY2VlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KQEAgLTQ1LDEy
ICs0NSwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1N0cmluZ1NQ
SS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1VSTEZvcm1hdHRpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC05NDEs
NyArOTQxLDcgQEAgLSAodm9pZClfdXBkYXRlTG9jYXRpb25JbmZvCiAgICAgaWYgKExpbmtQcmVz
ZW50YXRpb25MaWJyYXJ5KCkpCiAgICAgICAgIGRvbWFpbiA9IFt1cmwgX2xwX3NpbXBsaWZpZWRE
aXNwbGF5U3RyaW5nXTsKICAgICBlbHNlCi0gICAgICAgIGRvbWFpbiA9IHVzZXJWaXNpYmxlU3Ry
aW5nKHVybCk7CisgICAgICAgIGRvbWFpbiA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsK
ICNlbmRpZgogCiAgICAgTlNTdHJpbmcgKnRleHQgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4
IDE3ZjY2YjcxNzc5YzA1NDljZjY4YWUyODE2NTgxOGE3MjlkNjYzZmUuLjlmNjc4NTg3NmU2OWM3
YjY0ZGQyMTAyODUwZTBmNTYwNGQ4ZTRiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0xMTMzLDcg
KzExMzMsNyBAQCBib29sIGRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IHNpemUsIFNlc3Npb25TdGF0ZSYgcwogICAgIH0KIAogICAgIGlmIChhdXRv
IHByb3Zpc2lvbmFsVVJMU3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzZXNzaW9uU3RhdGVEaWN0aW9uYXJ5LCBwcm92aXNpb25hbFVSTEtl
eSkpKSB7Ci0gICAgICAgIHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTCA9IFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgcHJvdmlzaW9uYWxVUkxTdHJpbmcpOworICAgICAgICBzZXNzaW9u
U3RhdGUucHJvdmlzaW9uYWxVUkwgPSBVUkwoVVJMKCksIHByb3Zpc2lvbmFsVVJMU3RyaW5nKTsK
ICAgICAgICAgaWYgKCFzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwuaXNWYWxpZCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGY4
NzIwNzA2NGM3YmU1MWVhZWJiMjdhMDMxZDQ5MDUxMTJiMzg4ZjQuLjRhYWZkZmYzZGVhOGNmOTQy
ZDAwYTQwYzdiNzRhN2YxM2M2YzZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzgsMTMg
KzM4LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQg
PFdlYkNvcmUvR2VvbWV0cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGlj
YXRvcldpbmRvdy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkv
bWFjL0RhdGFEZXRlY3RvcnNTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0xvb2t1cFNQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNNZW51U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21h
Yy9OU1BvcG92ZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL1F1aWNrTG9va01hY1NQSS5o
PgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIFNP
RlRfTElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6LCBRdWlja0xvb2tVSSkKIFNPRlRf
TElOS19DTEFTUyhRdWlja0xvb2tVSSwgUUxQcmV2aWV3TWVudUl0ZW0pCkBAIC0yNzYsMTcgKzI3
NiwxNyBAQCAtIChpZCA8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilfZGVm
YXVsdEFuaW1hdGlvbkNvbnRyb2xsZXIKIAogICAgIFN0cmluZyBhYnNvbHV0ZUxpbmtVUkwgPSBo
aXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBpZiAoIWFic29sdXRlTGlua1VS
TC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMoYWJzb2x1dGVM
aW5rVVJMLCAibWFpbHRvIikpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0
ZUxpbmtVUkwsICJtYWlsdG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVB
Y3Rpb25NYWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250
cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoV2Vi
Q29yZTo6cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJ0ZWwiKSkgeworICAgICAgICBpZiAo
V1RGOjpwcm90b2NvbElzKGFic29sdXRlTGlua1VSTCwgInRlbCIpKSB7CiAgICAgICAgICAgICBf
dHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvblRlbExpbms7CiAgICAgICAgICAgICByZXR1cm4gW3Nl
bGYgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rXTsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGFic29sdXRlTGlu
a1VSTCkpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0
ZUxpbmtVUkwpKSB7CiAgICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvbkxpbmtQ
cmV2aWV3OwogCiAgICAgICAgICAgICBRTFByZXZpZXdNZW51SXRlbSAqaXRlbSA9IFtOU01lbnVJ
dGVtIHN0YW5kYXJkUXVpY2tMb29rTWVudUl0ZW1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRl
eCAyMDlhODVkZWEzYjYzMGQyN2MxYzIxMjUxNTU2ZGNjMGM1YTgyYjk3Li41NTY5ZGYyZWE4NTVk
MTVjNWFlNDcxNDlhNTFhYjRjMmI0NjM3YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAt
MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXltZW50Q29vcmRpbmF0b3IuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6
b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgYwogICAg
IG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6T3Bl
blBheW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIHJlcGx5SUQpKTsK
IH0KIAotYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkoY29uc3QgV2Vi
Q29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxp
bmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qm
IHBheW1lbnRSZXF1ZXN0KQorYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50
VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29u
VVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1l
bnRSZXF1ZXN0KQogewogICAgIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5nczsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGxpbmtJY29uVVJMIDogbGlua0ljb25VUkxzKQpAQCAtMTg2LDcg
KzE4Niw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpwYXltZW50Q29vcmRpbmF0b3JE
ZXN0cm95ZWQoKQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVNZXJjaGFu
dChjb25zdCBTdHJpbmcmIHZhbGlkYXRpb25VUkxTdHJpbmcpCiB7Ci0gICAgcGF5bWVudENvb3Jk
aW5hdG9yKCkudmFsaWRhdGVNZXJjaGFudChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHZh
bGlkYXRpb25VUkxTdHJpbmcpKTsKKyAgICBwYXltZW50Q29vcmRpbmF0b3IoKS52YWxpZGF0ZU1l
cmNoYW50KFVSTChVUkwoKSwgdmFsaWRhdGlvblVSTFN0cmluZykpOwogfQogCiB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvcjo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25zdCBXZWJDb3JlOjpQYXlt
ZW50JiBwYXltZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IGU0ODg3Y2M4OGFiMWYxOWZiZGE5
OWYzYzBiMmM4YWVkMWRiM2EwNDQuLjAyMTJkNmFkYmJiOTA1MWZiMWJiNDY5NmQ1ZDlhODI5NTFh
ZjI0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgV2ViUGF5
bWVudENvb3JkaW5hdG9yIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRv
ckNsaWVudCwgcHIKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5bWVu
dFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRv
bWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9y
aWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBW
ZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlk
YXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBp
bmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRl
eCAzZjI3MTIzMmQ2M2U0YTRmNzc0NWVmMjhjNjRlYWU1NTM4YzRiN2I5Li43ZmU5MzM0YmE0ZjM1
OWM3MmIwZDkxZDU1NDJhNzE2NDQ2MmU2ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBA
IC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2
ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uCiAgICAgY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OkNhY2hlcyhtX3Nl
c3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwgdXBkYXRlQ291bnRlciksIDApOwog
fQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1Jl
dHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmV0cmlldmVSZWNvcmRzKG1fc2Vz
c2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1cmwpLCAwKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDQ4MGVkZGQ5YjRlNTE1YzRiNGFhZTZkNGM2ZDk0MjU4
ZmNiZTI1MmIuLmQyZTBkZjJkODYwOTIyYTNiMWUzNTZiZTkyMWU3ODAxOTg2ZGM3NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24g
ewogICAgIHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50
NjRfdCB1cGRhdGVDb3VudGVyKSBmaW5hbDsKIAotICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHMo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBV
UkwmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikgZmluYWw7CiAg
ICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3JkPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDUwNzEzMTNlYzYyNTMwN2M0MGI1
YjQwMTBmNzBjNjFjNzUwNDE1ZDcuLjlkNjFlOTFjZWFmYzAwNjE0OWU3MDMyYjg5ZWZmZmJmNWRh
MWM1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JS
ZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJl
Z2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxv
YlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
IHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
aAppbmRleCBiMDU0ODliOGEyM2JjNzkwYjk1ZTZlYzlmMGQ1YzgyZWQwOWY4NzNjLi5hNGM1ZjY4
NGFkNWYxNjM0N2IwNzA3OTE4NWY3N2E5YWI3YjAwYTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTMxLDEzICsz
MSwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJveHkgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lkIHJl
Z2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdl
YkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVS
TChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJM
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOwotICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQ
YXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQs
IGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6
ZShjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmgKaW5kZXggMDhkZGJiZWE3MmJkZTdhNjg2Y2U3NWM0ZjRmYzk4NjhjNmFmYjQ4
OS4uODAxMmE4NGY0YzgzODg4MDI2MzY3MTkwNjBkNDg1NGE2NGYwNDBjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0z
Nyw3ICszNyw2IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTUsNyBAQCBjbGFzcyBQYWdlTG9h
ZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZp
cnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBBUEk6
Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktp
dDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JikgeyB9CkBAIC05Niw3ICs5NSw3IEBAIGNsYXNzIFBhZ2VMb2FkZXJDbGllbnQgewogICAg
IHZpcnR1YWwgdm9pZCBmZWF0dXJlc1VzZWRJblBhZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYpIHsgfQotICAgIHZpcnR1
YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50Rm9yVVJMKFdlYktpdDo6V2ViRnJhbWUmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmKSBjb25zdCB7IHJldHVybiBXVEY6OlN0cmluZygpOyB9CisgICAgdmlydHVh
bCBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViS2l0OjpXZWJGcmFtZSYsIGNvbnN0IFdU
Rjo6VVJMJikgY29uc3QgeyByZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQogCiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7IHJldHVy
biAwOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4IDRjMGM2YWVkMzg5
OWQ4YjI4N2NjMTEwZWIwNzk3NmZmMTRjNzFhZTMuLjA0NjBlYzYzZjA3OGFkZjVkY2VhYmMzMGVl
ODI3NjNjZDNmNTg1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTE3Miw3
ICsxNzIsNyBAQCBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUxheWVyVHJlZUFzVGV4dChX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmKQogCiBib29sIFdLQnVuZGxlRnJhbWVBbGxvd3NGb2xs
b3dpbmdMaW5rKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsK
LSAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICByZXR1cm4g
dG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhVUkwoVVJMKCksIHRvV1RGU3Ry
aW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1lSGFuZGxlc1BhZ2VTY2FsZUdl
c3R1cmUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKQEAgLTIxNywxMiArMjE3LDEyIEBAIGJv
b2wgV0tCdW5kbGVGcmFtZUdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWVSZWYsIGRvdWJsZSoKIAogV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlTdWdn
ZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVm
LCBXS1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFt
ZVJlZiktPnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKFdlYkNvcmU6OlVSTChX
ZWJDb3JlOjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKKyAgICByZXR1cm4gdG9Db3Bp
ZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhV
UkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBXS1N0cmluZ1JlZiBX
S0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEko
dG9JbXBsKGZyYW1lUmVmKS0+bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOworICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5taW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChVUkwo
VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVGcmFtZUNv
bnRhaW5zQW55Rm9ybUVsZW1lbnRzKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDA3ZDAyNDI0MzZiZDQxNDU4MDJjYjE1OWUzYjBkOTcw
MTRmM2EzMDguLjllOWEyYjFkNTI4NmUxNGZjNDQ2OGJjMTAwMmQ1YWE3NjY2MjVmNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02Niw5ICs2Niw5IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZW5kZXJMYXllckNvbXBvc2l0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaGVlbEV2ZW50
VGVzdFRyaWdnZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00MjUsNyArNDI1LDcg
QEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYsIFdLQnVuZGxlUGFnZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xvY2FsRGF0
YUZvclVSTChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAg
IHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICByZXR1cm4gdG9JbXBs
KHBhZ2VSZWYpLT5oYXNMb2NhbERhdGFGb3JVUkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxS
ZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVQYWdlQ2FuSGFuZGxlUmVxdWVzdChXS1VSTFJlcXVl
c3RSZWYgcmVxdWVzdFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9V
VEY4U3RyaW5nLmNwcAppbmRleCBiNWUxNjU3YTBkMjFmNmMxYzk3YmI5MDM4ZmQ0YTUwMTk5YmNm
MWFkLi43MTU3NDlhNDkyMzljMzFhYWI3ZmMxYWVkZDAyNjIzZTE0ZThhYWVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29u
dmVydFRvVVRGOFN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCkBAIC0yMSw3ICsy
MSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmlu
Zy5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCkBAIC0zNSw3ICszNSw3IEBAIGdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdURjo6
U3RyaW5nIGNvbnN0JiBzKQogICAgIHJldHVybiBnX3N0cmR1cChzLnV0ZjgoKS5kYXRhKCkpOwog
fQogCi1nY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpVUkwgY29uc3QmIHMpCitn
Y2hhciogY29udmVydFRvVVRGOFN0cmluZyhVUkwgY29uc3QmIHMpCiB7CiAgICAgcmV0dXJuIGNv
bnZlcnRUb1VURjhTdHJpbmcocy5zdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0
cmluZy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuaAppbmRleCBlNDk0MTEzYTNmOGZmNmU5YzRkYmU2OGFm
OWYxZDhhMmUyMjJmZWM5Li5jMzcyNTM1OWI4OTM0N2MxZjg4OTZhZGM1YmNhYjRiNmE0NDk2YzQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKQEAg
LTIzLDEzICsyMyw5IEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIHR5cGVkZWYgY2hhciBnY2hhcjsKIAogZ2NoYXIq
IGNvbnZlcnRUb1VURjhTdHJpbmcoV1RGOjpTdHJpbmcgY29uc3QmIHMpOwotZ2NoYXIqIGNvbnZl
cnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6VVJMIGNvbnN0JiBzKTsKK2djaGFyKiBjb252ZXJ0VG9V
VEY4U3RyaW5nKFVSTCBjb25zdCYgcyk7CiAKICNlbmRpZiAvKiBDb252ZXJ0VG9VVEY4U3RyaW5n
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXgg
MWJiMGJhMTYwMzcyOGJjMmZjOTI0OTdhY2IwMTM2YmI5OTkwNTcyYi4uMDgzMTc0ZTVlZDIxZjk4
Mzk3M2IyNmM3ZDdjOGM0ODhlMTAyYzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaAppbmRleCA0OTM1NjYxZWUyNDg4ZjYzODAxNGU4NjlkZDhmMTEyMDlhNDhiODEwLi4wMWRk
OTkwNzljYjU0ZmI2MzM1ZWNmYTNlMzczMzVlZTFiNjViZjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNCw3ICszNCw2IEBACiBuYW1lc3Bh
Y2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIGNsYXNzIFN0cmluZzsKLWNsYXNzIFVSTDsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2U+
IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjAsIFdL
QnVuZGxlUGFnZUxvYWRlckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMiwgV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50VjMsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY0LCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnRWNSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjYsIFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudFY3LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWOCwgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Vjk+IFZlcnNpb25zOwpAQCAtNDgsNyArNDcsNyBAQCBjbGFzcyBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZQogICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudChjb25zdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKik7CiAKICAgICB2b2lkIHdp
bGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3Qo
V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbExvYWRE
YXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3Vs
ZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2UmLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0
cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKQEAgLTg3LDcgKzg2LDcgQEAgY2xhc3MgSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFn
ZUxvYWRlckNsaWUKIAogICAgIHZvaWQgZmVhdHVyZXNVc2VkSW5QYWdlKFdlYlBhZ2UmLCBjb25z
dCBWZWN0b3I8V1RGOjpTdHJpbmc+Jikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0cmluZyB1c2Vy
QWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25zdCBVUkwm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0
TWlsZXN0b25lcygpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggZTJhNjk3OGZlMjgzYWQ1M2MzNDhiZjA3MDdhYjY4ZGY3ZDk2MjM2Mi4u
OTAzYzZkMDEyYzFkYjI4OGZiYTIzOGI1NzhiZDA2NTYzNDQ4ZDgxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAxMjc4YzFiNDQzZmFkN2JmYTcxZjEw
ZjJiNGYyODY4NmI2ZTAzNDRmLi42NWNmNDIzYWIxNjgyNzI1YWZkOTRhMzE0YmUxNDdiODNlYTlm
MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNv
dXJjZUUKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlcnJvciksIFdURk1vdmUo
cmVzcG9uc2UpKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKEZy
YW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVj
dENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3Qg
cHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnMuYWRkKHByZWNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApp
bmRleCBlMDQwZDA3NTVjNzk0ZGJkNzFlYTljNTU4ODQyYTA2NWM1MmRmNWRlLi4xYzJmYjNmMTFl
NDVlM2I3ZWE4ODI5NjNmYTFjYTA5M2Q4ZTZlMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTU1LDcgKzU1LDcg
QEAgY2xhc3MgV2ViTG9hZGVyU3RyYXRlZ3kgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVy
U3RyYXRlZ3kgewogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBm
aW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIm
LCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpIGZp
bmFsOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyKiwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCkgZmluYWw7CiAgICAgCiAgICAgdm9p
ZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5p
bXVtUHJpb3JpdHkpIGZpbmFsOwogCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYkxvYWRlclN0
cmF0ZWd5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKICAgICB2b2lk
IHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBj
b25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVj
b25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBwcmVjb25uZWN0VG8o
V2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0
YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiBib2R5SGFzaCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQ
cm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJv
dmlkZXIuaAppbmRleCAwMjQ0ZTVmMmM4ODYyMDUzMTc2OTllY2ZkMWUxYTFiMjNjN2ZkOTk4Li42
OWI3ZmEzYjQxNmY0ZWYzOTZhZWFkZTRjMTIwODRiYjM1MmIxMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgKQEAgLTMy
LDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTb2NrZXRQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxXZWJTb2NrZXRQcm92aWRlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJTb2NrZXRQcm92aWRlcik7IH0KLSAgICBSZWY8V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlPiBjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbikgZmluYWw7CisgICAgUmVmPFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGNyZWRlbnRpYWxQYXJ0aXRpb24pIGZpbmFsOwogICAgIHZpcnR1YWwgfldlYlNvY2tldFByb3Zp
ZGVyKCkgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCA3YTBiOWUzMTJlYjk5ZDQ3YWM1MmRlZTlkZTRh
YTY4ZWFmNTRkNzQ3Li4xZDVlMjI5YWMyM2RhMzA4N2U0NmQ5MzU1NjVhYWE0ZDY3YjVhMDI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmPFdlYlNvY2tldFN0cmVhbT4gV2ViU29ja2V0
U3RyZWFtOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUMKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRTdHJlYW0odXJsLCBjbGllbnQsIHNlc3Npb25J
RCwgY3JlZGVudGlhbFBhcnRpdGlvbikpOwogfQogCi1XZWJTb2NrZXRTdHJlYW06OldlYlNvY2tl
dFN0cmVhbShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBjYWNoZVBhcnRpdGlvbikKK1dlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0
IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKQogICAg
IDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uaAppbmRleCAzZmViNmE2MzVmZmU5ZTc5MjMxZDMyYjUxYzYzZmI3Mjg3N2Q5OWUzLi4z
ODlhMGI5OGI3NTk4Y2M2NjhiZThkYjQ1ZjE3MTFiOGZlOGY3NzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtNDUsNyAr
NDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0U3RyZWFtIDogcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJs
aWMgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlLCBwdWJsaWMgSWRlbnRpZmllZDxXZWJTb2Nr
ZXRTdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNvY2tldFN0cmVhbT4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOwor
ICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0U3RyZWFtPiBjcmVhdGUoY29uc3QgVVJMJiwgV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1Byb2Nlc3ND
cmFzaGVkKCk7CiAgICAgc3RhdGljIFdlYlNvY2tldFN0cmVhbSogc3RyZWFtV2l0aElkZW50aWZp
ZXIodWludDY0X3QpOwogICAgIApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBXZWJTb2NrZXRTdHJl
YW0gOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIsCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFs
OwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CiAKLSAg
ICBXZWJTb2NrZXRTdHJlYW0oY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlh
bFBhcnRpdGlvbik7CisgICAgV2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNy
ZWRlbnRpYWxQYXJ0aXRpb24pOwogICAgIH5XZWJTb2NrZXRTdHJlYW0oKTsKIAogICAgIHNpemVf
dCBtX2J1ZmZlcmVkQW1vdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDAw
M2QyN2ExMDE4Nzk4ODlkYWE2NmZhYTBjNmQ5OTNlOTE2MGUxMGYuLmM2YTUwNjkxNzQwYTVkYjNl
NjVmMTk3NTcxYjdiZDQwMDViYjcxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM4
LDggKzM4LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJNYXAuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgUExVR0lOX0FS
Q0hJVEVDVFVSRShVTklYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggYmNiM2Q3ZmI3NzdkMTMx
YzdmMjQ3NmY2NWIxNTJmMDQzOTAxNDZkNy4uNzRhODRlOTI3Y2Y1YTdkZjYyMjM2Y2Y0YTliZmZi
OTU1MTIzOWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0xMzksNyArMTM5LDcgQEAgY2xh
c3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJsaWMgUGx1Z2luIHsKIAogICAgIHZvaWQgc2V0SXNQbGF5
aW5nQXVkaW8oYm9vbCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyUmVkaXJlY3QoTmV0c2NhcGVQbHVn
aW5TdHJlYW0qLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGludCByZWRpcmVjdFJl
c3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKKyAgICB2b2lkIHJlZ2lzdGVy
UmVkaXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGlu
dCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKICAgICB2
b2lkIHVybFJlZGlyZWN0UmVzcG9uc2Uodm9pZCogbm90aWZ5RGF0YSwgYm9vbCBhbGxvdyk7CiAK
ICAgICAvLyBNZW1iZXIgZnVuY3Rpb25zIGZvciBjYWxsaW5nIGludG8gdGhlIHBsdWctaW4uCkBA
IC0yMDQsMTMgKzIwNCwxMyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1YmxpYyBQbHVnaW4g
ewogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdh
c0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgaW50IHJl
c3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLAorICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VV
UkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Ry
ZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKKyAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0
cmVhbS5oCmluZGV4IDQwNzQwNzhkN2E4ZmI1MzhjZmY0N2RjMWFkYTRmOWQyMGI3MGQyMmYuLmJi
NmE1YjA4YzdjY2U1ZGRlZDg5OTM2MGY3YWI4MzQwZjAzOTVlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgVVJMOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQ
bHVnaW47CkBAIC01NSw4ICs1MSw4IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luU3RyZWFtIDogcHVi
bGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHsKICAgICB1aW50NjRfdCBzdHJl
YW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtSUQ7IH0KICAgICBjb25zdCBOUFN0cmVhbSog
bnBTdHJlYW0oKSBjb25zdCB7IHJldHVybiAmbV9ucFN0cmVhbTsgfQogCi0gICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29u
c3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCBy
ZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaAppbmRleCBlNThkZTJjNzYwZGRiMTRjMTJjNGNiZmJmNzVjZTkyZjVhYjhlMDFhLi42ODYy
ZTMwNGZlZGI4NWI3ODYzNDcwMGI5ZDZiMzVhNmMzYzIwY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xMzUsMTIgKzEzNSwx
MiBAQCBjbGFzcyBQREZQbHVnaW4gZmluYWwgOiBwdWJsaWMgUGx1Z2luLCBwcml2YXRlIFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhIHsKICAgICB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCByZXF1ZXN0SUQpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIHZvaWQgZGlkRXZhbHVhdGVK
YXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFs
OwotICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VV
UkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9u
c2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVx
dWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQorICAgIHZvaWQgc3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIGZp
bmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkg
ZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdh
c0NhbmNlbGxlZCkgZmluYWw7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJp
bmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwogICAg
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZp
bmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmlu
YWw7CkBAIC0zMDYsNyArMzA2LDcgQEAgY2xhc3MgUERGUGx1Z2luIGZpbmFsIDogcHVibGljIFBs
dWdpbiwgcHJpdmF0ZSBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSB7CiAKICAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNvcmU6OlVSTCBtX3NvdXJjZVVSTDsKKyAgICBVUkwg
bV9zb3VyY2VVUkw7CiAKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKICAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNzFiOGNmODMzNDNjNmNmODUy
YTBkMDk3MjgzOGRmZmFkMjcwNmM4YS4uZTRjZDY1MzU2MTE2MjQ2YmZhNjhmNzRiMTZiNDMxNTY4
ZDc5NzViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCkBAIC0xNzAyLDcgKzE3MDIsNyBAQCBib29sIFBERlBsdWdpbjo6aGFuZGxl
c1BhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiB2b2lkIFBERlBsdWdpbjo6Y2xpY2tlZExpbmsoTlNV
UkwgKnVybCkKIHsKICAgICBVUkwgY29yZVVSTCA9IHVybDsKLSAgICBpZiAocHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29yZVVSTCkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29y
ZVVSTCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHdlYkZyYW1lKCkt
PmNvcmVGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApp
bmRleCA4NzZmNmNlNDhlY2NiNjA2MzM5NDc2YTY2NjFmMjZmNGY5MGFhNDcyLi5hYWJkNWU1MDUx
YmVjMjlmNTUxMTU3MzgwNjFhNmE2MDhlZjIzMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjMsMTYgKzIzLDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbHVnaW5faAotI2RlZmluZSBQbHVn
aW5faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTUzLDE1ICs1MiwxNSBAQCBjbGFzcyBE
ZWNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgQWZmaW5lVHJhbnNm
b3JtOwotICAgIGNsYXNzIEZsb2F0UG9pbnQ7Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0Owot
ICAgIGNsYXNzIEludFBvaW50OwotICAgIGNsYXNzIEludFJlY3Q7Ci0gICAgY2xhc3MgSW50U2l6
ZTsKLSAgICBjbGFzcyBGbG9hdFBvaW50OwotICAgIGNsYXNzIFNjcm9sbGJhcjsKLSAgICBjbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBGbG9hdFBvaW50
OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRSZWN0
OworY2xhc3MgSW50U2l6ZTsKK2NsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBTY3JvbGxiYXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODEs
NyBAQCBlbnVtIFBsdWdpblR5cGUgewogY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFBsdWdpbj4gewogcHVibGljOgogICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKLSAg
ICAgICAgV2ViQ29yZTo6VVJMIHVybDsKKyAgICAgICAgVVJMIHVybDsKICAgICAgICAgVmVjdG9y
PFN0cmluZz4gbmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlczsKICAgICAgICAg
U3RyaW5nIG1pbWVUeXBlOwpAQCAtMTY3LDEwICsxNjYsMTAgQEAgY2xhc3MgUGx1Z2luIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogICAgIHZpcnR1YWwgdm9pZCBkaWRF
dmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3Vs
dCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBtYXkgc2Vu
ZCBhbiBIVFRQIHJlcXVlc3QuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVz
dCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXNDb2RlKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVz
cG9uc2VTdGF0dXNDb2RlKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEg
c3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVS
TCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQg
YSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE4Myw3ICsxODIsNyBAQCBjbGFzcyBQbHVn
aW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7CiAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSA9
IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGhh
cyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwgCisgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5n
dGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAg
ICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGRpZCByZWNlaXZl
IGRhdGEuCkBAIC0zMjMsNSArMzIyLDMgQEAgY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFBsdWdpbj4gewogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJL
aXQ6OlRvVmFsdWVUeXBlTmFtZSkgXAogc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYktpdDo6
UGx1Z2luJiBwbHVnaW4pIHsgcmV0dXJuIHBsdWdpbi50eXBlKCkgPT0gV2ViS2l0OjpTcGVjaWZp
Y1BsdWdpblR5cGU7IH0gXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYg
Ly8gUGx1Z2luX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbkNvbnRyb2xsZXIuaAppbmRleCBhNWM2ZmEwNDNjMzYyMjY5NDFjOGQyMTQ3YjIxMjA4ZWMy
ZjI5NDc1Li5hMWY4MDdlMWU1NTA3MjNlZmVlYTE3NzEzM2I4MWRmZjRkMTc2YjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5o
CkBAIC00Myw3ICs0Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEhUVFBIZWFkZXJN
YXA7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwotY2xhc3MgVVJMOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGRjNDIxMWQwMGVkODkxMGQzNDdkOGYwY2ExYjc1M2M2
YjJlNmVhMWQuLmU2YWIzZWQ5YjAzMmZlMDRjMDJkZjVjNjg5MmU0N2Q0ZTY5ZDRhYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtODcs
MTIgKzg3LDEyIEBAIGNsYXNzIFBsdWdpblByb3h5IDogcHVibGljIFBsdWdpbiB7CiAgICAgdm9p
ZCBmcmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKICAg
ICB2b2lkIGZyYW1lRGlkRmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVk
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbVdp
bGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1
ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0
dXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJl
YW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50
IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qg
c3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZU5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2
b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxs
ZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKICAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmco
KSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxs
ZWQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCBmMDc1MmJkOTgyYTE1M2JhZDRiMjkyNDVmMTAzMjE5NzBlYjNhYzkx
Li4zY2FhYWM5YWMxY2QzZGJkNmJmNDZmZWM1ZDcxZjE0MWRmNDViMzk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE2Myw3ICsx
MTYzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiBy
ZXF1ZXN0KQogICAgIFJlZjxQbHVnaW5WaWV3PiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIC8vIEZp
cnN0LCBjaGVjayBpZiB0aGlzIGlzIGEgamF2YXNjcmlwdDogdXJsLgotICAgIGlmIChwcm90b2Nv
bElzSmF2YVNjcmlwdChyZXF1ZXN0LT5yZXF1ZXN0KCkudXJsKCkpKSB7CisgICAgaWYgKFdURjo6
cHJvdG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVybCgpKSkgewogICAgICAg
ICBwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1GcmFt
ZUxvYWRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAKIHZvaWQgUGx1Z2luVmlldzo6
cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAg
QVNTRVJUKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwoKSkpOwor
ICAgIEFTU0VSVChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51
cmwoKSkpOwogCiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fcGx1Z2luRWxlbWVudC0+ZG9j
dW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRl
eCA1YzUxYzQ1ZjY0MDlkZWVkZDU1ZTkzYzBmZDk4OGI3Yzg3M2Q4MzFhLi4zZjcwYjFlODdiOWFm
ZThmM2YwNjVhNDE5Y2NkYjk1MmNlZmZjZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTEx
NSw3ICsxMTUsNyBAQCBWZWN0b3I8UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpw
bHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIHN0ZDo6b3B0aW9uYWw8VgogI2VuZGlmIC8vIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogfQogCi1WZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQYWdlJiBwYWdlLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCkKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVn
aW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIGNvbnN0IFVS
TCYgdXJsKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBs
dWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKICAgICBhdXRvIHBs
dWdpbnMgPSBwbHVnaW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Q
cm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmgKaW5kZXggMWJiYWQ1YTc5ZmIxMWVjNjgwNzQ5NDdkMDA3YzNjZDU2ZTU4MTlk
ZC4uODQ2NDJkN2ZjMDExZjhjYWNmNjQxYmIxYWVlOGYyODIzOTNjMDdlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiAgICAgV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyKCk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2luSW5m
byhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbklu
Zm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpV
UkwmKSBmaW5hbDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBs
dWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQgcmVm
cmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uaAppbmRleCAyYmZhZWU0NzZlMWY0YmNjY2RiMjY2MGZlNWQ4ZTY2YmQ2
NzRhM2Q3Li5kY2Q2ZGE1ODA2YmIzMzJjMjRmZmVjODUxOGVlNTA5NmNiYWU3ZjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaApAQCAtNzksMTMgKzc5LDEzIEBAIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlv
biBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24sIHB1YmxpYyBJCiAg
ICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGEmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyPiYpIGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIHZvaWQgbWF0
Y2hSZWdpc3RyYXRpb24oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRpb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IG1hdGNo
UmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGE+JiYpOwogICAgIHZvaWQgZGlkR2V0UmVnaXN0cmF0aW9ucyh1aW50NjRf
dCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGE+JiYpOwotICAgIHZvaWQgd2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Y2xpZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIHdoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCBjYWxs
YmFja0lELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKTsKIAotICAg
IHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BP
cmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRpb25zQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdldFJlZ2lz
dHJhdGlvbnNDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJh
dGlvblByb21pc2UoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYp
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBlODczZmZmZDJh
OGM3MDFhZTg2OTA1Y2U5ZTU3MDRmMWE3YjljOWI0Li5kOTc5NDY5OWM5MWRjNWQ3NTZkYzMzYmRi
MjU0NWM1ZjVkYzA0MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTcy
LDcgKzcyLDcgQEAgY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q28KICAgICB2b2lkIG1hdGNoQWxsKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHNNYXRj
aEFsbENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xhaW0oV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAg
dm9pZCBza2lwV2FpdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgRnVuY3Rp
b248dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgZmluYWw7Cisg
ICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJ
bXBvcnRlZFNjcmlwdCYpIGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQg
c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5oCmluZGV4IDAzNzAxMDZlOTJmMWZiMmE0YWJkODUxMTE2YzcyNjJm
ZTQ1NDAwZmIuLjYyNmY2MWE1MGE2NDU5ZDQ5NTY3ZDY4YmZlY2JhODc3YmJhNmFiOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTU3LDEwICs1NywxMCBAQCBjbGFzcyBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VXNlckNvbnRlbnRQ
cm92aWRlciwgcHJpdgogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRp
ZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0
KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYpOwotICAg
IHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IFVSTCYpOwogICAgIHZvaWQgcmVtb3Zl
VXNlclNjcmlwdHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAgIHZvaWQgYWRkVXNl
clN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdlYkNvcmU6OlVzZXJTdHls
ZVNoZWV0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRXaXRoVVJMKEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlbW92
ZVVzZXJTdHlsZVNoZWV0V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3Qg
VVJMJik7CiAgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldHMoSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAppbmRleCBmOTM2NjdhZTQ4ZTlkNzgxZjMyZjI2YTEwYTNhNTJmN2NmYThjMzE2
Li41YTQ2ZWY4MDdkNzAxNzNlOWZjMTgzMzI3ZDc2MWJmYjI1Y2M4ZDU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVu
d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwK
IAogI2VuZGlmCiAKLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxl
bmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJDaHJv
bWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkg
Y29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwg
Y2hhbGxlbmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS5wYWdlSUQoKSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMDk0OGY2N2FiZWMxNGQ4NGU2ZGY1NTY0MjcxZWQ2ZTEz
ZDk0MjRjZS4uM2ZlZTBjYjAxYjM2ZGI4NmY2ZjNhZjAzOTNjYWEzYTE1ZjM1ZDAyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaApAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVudCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIHZvaWQgc2NoZWR1bGVD
b21wb3NpdGluZ0xheWVyRmx1c2goKSBmaW5hbDsKICAgICBib29sIGFkanVzdExheWVyRmx1c2hU
aHJvdHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFncykgZmluYWw7
CiAKLSAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgZmluYWw7Cisg
ICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJMJiwgY29uc3QgSGFz
aFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIGZpbmFsOwogCiAjaWYgUExBVEZPUk0o
V0lOKQogICAgIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpIGZpbmFsIHsg
fQpAQCAtMzI1LDcgKzMyNSw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IGZpbmFsOwogI2VuZGlm
CiAKLSAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVk
IGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5n
ZVN0cmluZywgY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAKICNpZiBFTkFCTEUoVEVMRVBIT05F
X05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGhhbmRsZVRlbGVw
aG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBjZWMzMTQyYjE2
ZTM1ZDAwMmNmYzhjNDJmNGU3ODFiODJlYmU4NThjLi41ZDhlN2Q2ZDBmYTUxYTEwNTFkODBjYTE3
NjZlZTM3N2ZiY2YzY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNDQsNyAr
NDQsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250
ZXh0TWVudUNsaWVudCB7CiBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQo
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwog
ICAgIGJvb2wgaXNTcGVha2luZygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggOWY3ZDdm
YzUwYjZlYzhhZWU1NmJiMjU5YjczMzQwYzQwZDkzNjcyNy4uMWFkNGMzZGUyY2I3ZDM4ZTYyNjJj
MTk3YWFiMjRjY2E2ZmVkYTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNs
YXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAgICAgdm9p
ZCBkaWRDb25jbHVkZUVkaXREcmFnKCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3Ry
aW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsK
ICNlbmRpZgogCiAgICAgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYzIzNTM5NTM1MzJiMDc3NzAyMjA1
NzNmMmRmMzZiOGNjMzY2ZjdhYy4uY2E5ZTYzN2JjNTk3ZWE2MjlhMTZmMjA3MTBhNDRiNWYxNGUz
NWFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNzk2LDcgKzE3OTYs
NyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd1NjcmlwdChib29sIGVuYWJsZWRQ
ZXJTZXR0aW5ncykKICAgICByZXR1cm4gIXBsdWdpblZpZXcgfHwgIXBsdWdpblZpZXctPnNob3Vs
ZEFsbG93U2NyaXB0aW5nKCk7CiB9CiAKLWJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3Vs
ZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
KQorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NG
cm9tTG9jYWxVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IGMxYjljZDBmOTQzMzI3OWNkZDg0YzBjOTVmYTgxYjk4NGU1ZjU0ZTguLjNjNzE2
Njg1MGIyNTE1NjZkNWU0NDBlZTNmNTkzN2NiOWNjZjcwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC05NywxMyArOTcsMTMgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKmRldGVjdGlvblJlc3VsdHMpIGZp
bmFsOwogI2VuZGlmCiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZU1haW5Eb2N1bWVudCgpIGZp
bmFsOwotICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgV2ViQ29yZTo6
VVJMJiBjdXJyZW50VXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG5ld1VybCkgZmluYWw7CisgICAg
dm9pZCBkaXNwYXRjaFdpbGxDaGFuZ2VEb2N1bWVudChjb25zdCBVUkwmIGN1cnJlbnRVcmwsIGNv
bnN0IFVSTCYgbmV3VXJsKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWREaXNwYXRjaE9u
bG9hZEV2ZW50cygpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlUHJvdmlzaW9uYWxVUkwoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3QoKSBmaW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZp
cmVEYXRlKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dChjb25zdCBVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZpcmVEYXRlKSBmaW5hbDsK
ICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgZmluYWw7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKICAgICB2b2lk
IGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOwpAQCAtMTU1LDggKzE1
NSw4IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJD
b3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50KCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJl
UGFnZSkgZmluYWw7CisgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERldGVjdFhTUyhj
b25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7CiAKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIGZpbmFsOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOwpAQCAtMTg5LDkgKzE4OSw5IEBA
IGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50IHsKICAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVu
dExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIGZpbmFsOwogCi0gICAgdm9pZCBzZXRU
aXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
VVJMJikgZmluYWw7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRo
RGlyZWN0aW9uJiwgY29uc3QgVVJMJikgZmluYWw7CiAgICAgCi0gICAgU3RyaW5nIHVzZXJBZ2Vu
dChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0
IFVSTCYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
KCkgY29uc3QgZmluYWw7CiAKQEAgLTIxMCwyMCArMjEwLDIwIEBAIGNsYXNzIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAg
ICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3Jl
YXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3Jl
OjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50
IG1hcmdpbkhlaWdodCkgZmluYWw7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVh
dGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJv
b2wgbG9hZE1hbnVhbGx5KSBmaW5hbDsKICAgICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6
OldpZGdldCopIGZpbmFsOwogICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6
V2lkZ2V0JikgZmluYWw7CiAgICAgCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25z
dCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5
Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsK
KyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNv
bnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6
VVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJD
b3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykg
ZmluYWw7CiAgICAgCi0gICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVu
dFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7
CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CiAgICAgU3RyaW5nIG92ZXJyaWRl
TWVkaWFUeXBlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIGZpbmFsOwpAQCAtMjQ5
LDcgKzI0OSw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKIAogICAgIGJvb2wgYWxsb3dTY3JpcHQoYm9vbCBl
bmFibGVkUGVyU2V0dGluZ3MpIGZpbmFsOwogCi0gICAgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNh
bEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBib29s
IHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFVSTCYpIGZpbmFs
OwogCiAgICAgUmVmPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdv
cmtpbmdDb250ZXh0KCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
aW5kZXggZTk3NzNlYTc4MGEzMzJhZTU5ZjAyNzhhZTgzYTMwNzZkZDI3OTc2ZS4uMWQzZWVlNzk4
M2NlZWMyMTEwYzJmODU3YTMyYjRlZTVjNmUxZjI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKQEAgLTYwLDkgKzYwLDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRl
SW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFjZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3ViZnJhbWVMb2FkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTdHJpbmdVdGls
aXRpZXMuaCIKQEAgLTM2NCw3ICszNjQsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbgogICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+
KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitVUkwgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyB1cmxTdHJp
bmc7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0
ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDZlZWMwOWIxZWQyMmI5YWQwNjhlM2Y2
OTI0YjU5MjU3NDUxNWQxNDYuLjc2YTgxMGFmZDNlMGZmNTA3OTNiNWRmMTVjZWVjODNhMjRhMTRh
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ3LDEzICs0NywxMyBAQCBj
bGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJh
dGVnaWVzLCBwcml2YXRlIFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRl
QmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRl
Z3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
ZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVDb29r
aWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6
OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kK
ICNpZiBQTEFURk9STShJT1MpCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2Vi
Q29yCiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBX
ZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRV
UkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
cyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAg
ICAgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9y
IGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNv
cmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAg
VVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAogICAgIGxv
bmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCAzYmQ3
ZDFmYmIzOGNiMjA5YWZkYjcxZGViMThiOWQ5MWVkZDkxMzBmLi5hZTU5NTJkMDhlNjQ5NzYxNjBj
OGEzNDQ5NGI0YWQ2MGJhYTk3MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBA
IC00OCw4ICs0OCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUmVuZGVySW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3RyaW5nVHJ1bmNhdG9y
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNp
ZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtMTI5LDcgKzEyOSw3IEBA
IHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkgewogICAg
ICAgICB0aXRsZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAodGl0bGUu
aXNFbXB0eSgpKQotICAgICAgICAgICAgdGl0bGUgPSB1c2VyVmlzaWJsZVN0cmluZygoTlNVUkwg
Kil1cmwpOworICAgICAgICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7
CiAgICAgfQogCiAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoZWxlbWVudCk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJE
cmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgRWxlbWUKICAgICAgICAgICAgIGZpbGVuYW1lID0gZG93bmxvYWRGaWxlbmFtZTsK
ICAgICB9CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIGltYWdlSGFuZGxlLCBpbWFnZVNpemUs
IGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCBTdHJpbmcoW1tyZXNwb25zZSBVUkxdIGFic29s
dXRlU3RyaW5nXSksIHVzZXJWaXNpYmxlU3RyaW5nKChOU1VSTCAqKXVybCksIGFyY2hpdmVIYW5k
bGUsIGFyY2hpdmVTaXplKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBpbWFnZUhhbmRsZSwg
aW1hZ2VTaXplLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgU3RyaW5nKFtbcmVzcG9uc2Ug
VVJMXSBhYnNvbHV0ZVN0cmluZ10pLCBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCksIGFyY2hp
dmVIYW5kbGUsIGFyY2hpdmVTaXplKSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDFmOTBjNGE1NzQwZjQxNTA5ZDhl
ODViMTlkNGEwN2U4MDA0M2EyNTQuLjNkMWZmODQ5MDMxMTExMTUxY2EyZTg3YzhjNGU3MDdjMmYx
MzM5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC00MCw3ICs0MCw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJk
RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlci5oCmluZGV4IDA5MjNlNDYwOTU5YjBmMzRhOTQyZWQ5MjRmMDQ0
YzUzZjg0YzMzZTYuLjE3ZmE4ZWNjYTc4YmE4YWMyNzY4MTY1M2E3ZDJlN2ZkZDcwZmUyNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBWaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
b3JlICwgcHJpdgogICAgIGV4cGxpY2l0IFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKHVpbnQ2
NF90IGlkZW50aWZpZXIpOwogCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZS4KLSAg
ICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmlu
Z0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBh
dHRyaWJ1dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQ
YWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25z
dCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNp
dGVkTGluayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAyNTYwNzY5ZmJlNGI1YjM3YzEyZDJl
N2UxODQyZDAxYzNlOTE0NGVmLi5jMzI4OTdiM2I4ZTJiNWMxNjkyNGVlOWUzMDI0NDY2NDY5MGMy
NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CkBAIC01MDksNyArNTA5LDcgQEAgdW5zaWduZWQgV2ViRnJhbWU6OnBlbmRpbmdVbmxvYWRDb3Vu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKLWJvb2wgV2ViRnJhbWU6OmFs
bG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0Citib29sIFdl
YkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAg
IGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggMmUwM2YyYmQ1NTYyNTQ0ZDY3OGYx
YTgzYTk1MzhjY2ZlNGEzNDY4Yi4uZWI4MTM2YWI3NzEwYTRlZDEzMGU2Nzk4MDFiOTUwZDllY2E1
OGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBA
IC01Myw3ICs1Myw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50
OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgVVJMOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTEwNiw3ICsxMDUsNyBAQCBjbGFzcyBXZWJGcmFtZSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUZyYW1lPiB7CiAgICAg
Ly8gV0tCdW5kbGVGcmFtZSBBUEkgYW5kIFNQSSBmdW5jdGlvbnMKICAgICBib29sIGlzTWFpbkZy
YW1lKCkgY29uc3Q7CiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBXZWJDb3JlOjpVUkwg
dXJsKCkgY29uc3Q7CisgICAgVVJMIHVybCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKICAgICBTdHJpbmcgaW5uZXJUZXh0KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3Q7CkBAIC0xNDEsMTEgKzE0MCwxMSBA
QCBjbGFzcyBXZWJGcmFtZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OkJ1bmRsZUZyYW1lPiB7CiAgICAgCiAgICAgdW5zaWduZWQgcGVuZGluZ1VubG9hZENvdW50
KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBhbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgYWxsb3dzRm9sbG93aW5nTGluayhjb25zdCBVUkwm
KSBjb25zdDsKIAogICAgIFN0cmluZyBwcm92aXNpb25hbFVSTCgpIGNvbnN0OwotICAgIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJDb3JlOjpVUkwm
KSBjb25zdDsKLSAgICBTdHJpbmcgbWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3Vy
Y2VXaXRoVVJMKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIFN0cmluZyBtaW1lVHlwZUZvclJlc291
cmNlV2l0aFVSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4dERpcmVjdGlv
bihjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCAyMmI4MDkwMTEyOTc2MjgwZGIzZmVmMjE4OGUyZTdiOGFiZWQ5NGQ5
Li4wMjk1NjA1YTE0ZDgzYjllOWY5ODZmZGI4ZDY0NGI1M2RlNzI5N2QyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTI1Nyw3ICsxMjU3LDcg
QEAgdm9pZCBXZWJQYWdlOjpzZW5kQ2xvc2UoKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q2xvc2VQYWdlKGZhbHNlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFVSTEluRnJh
bWUoV2ViQ29yZTo6VVJMJiYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJQYWdlOjps
b2FkVVJMSW5GcmFtZShVUkwmJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViRnJh
bWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAg
ICAgaWYgKCFmcmFtZSkKQEAgLTEzMjAsNyArMTMyMCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERh
dGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBwbGF0Zm9ybURpZFJlY2Vp
dmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxv
YWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwot
ICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkg
PyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsK
KyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgp
ID8gV1RGOjpibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3Ry
aW5nKTsKICAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBXVEZN
b3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVy
cy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7
CiB9CiAKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhU
TUwoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewogICAgIHBsYXRmb3Jt
RGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFVSTCBiYXNl
VVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgp
IDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBVUkwgYmFz
ZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFu
a1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKICAgICBV
UkwgdW5yZWFjaGFibGVVUkwgPSBsb2FkUGFyYW1ldGVycy51bnJlYWNoYWJsZVVSTFN0cmluZy5p
c0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVV
UkxTdHJpbmcpOwogICAgIFVSTCBwcm92aXNpb25hbExvYWRFcnJvclVSTCA9IGxvYWRQYXJhbWV0
ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJM
KFVSTCgpLCBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZyk7CiAg
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0
ZXJzLmRhdGEuc2l6ZSgpKTsKQEAgLTMzNzMsNyArMzM3Myw3IEBAIHZvaWQgV2ViUGFnZTo6YWRk
Q29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291
cmNlLCBNCiAgICAgICAgIGZyYW1lLT5hZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlU291cmNlLCBt
ZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2Vu
ZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcG9ydERhdGEpCit2b2lkIFdl
YlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJM
JiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXBvcnREYXRhKQogewogICAg
IGF1dG8gcmVwb3J0ID0gcmVwb3J0RGF0YS50YWtlRGF0YSgpOwogICAgIGlmICghcmVwb3J0KQpA
QCAtNTg3NCwxNCArNTg3NCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmltYWdlT3JNZWRpYURvY3VtZW50
U2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogdm9pZCBXZWJQYWdlOjphZGRV
c2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyBpbmplY3RlZEZyYW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZSkKIHsKLSAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZN
b3ZlKHNvdXJjZSksIFVSTChXZWJDb3JlOjpibGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKKyAgICBX
ZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVSTChXVEY6
OmJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3Rp
b25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXIt
PmFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwg
V1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6YWRkVXNlclN0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRGcmFtZXMpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0
eWxlU2hlZXR7IHNvdXJjZSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9Owor
ICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0IHtzb3VyY2UsIFdURjo6
YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRG
cmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xs
ZXItPmFkZFVzZXJTdHlsZVNoZWV0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdv
cmxkKCksIFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNTBhYjRmZWQ5ZTRhNmNkNDMxMzQ1Mjc2NmI4
OTgwZDg3NWNjZjg4Li40YjVkOWQ4OGZlNWY5YmY5ZDQ4YzdlM2JiOTNkNjg4NTc0ZmRjMjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTksNyAr
MTU5LDYgQEAgY2xhc3MgU2VsZWN0aW9uUmVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKLWNsYXNzIFVSTDsK
IGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4
X3Q7CkBAIC0zMTYsNyArMzE1LDcgQEAgY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVAKICNlbmRpZgog
CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlELCBNZXNzYWdlU291
cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHJlcXVlc3RJRCA9IDAp
OwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmKTsKKyAg
ICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJM
JiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJik7CiAgICAgdm9pZCBlbnF1ZXVl
U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpT
ZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpOwogCiAgICAgLy8gLS0gQ2FsbGVk
IGJ5IHRoZSBEcmF3aW5nQXJlYS4KQEAgLTMzNCw5ICszMzMsOSBAQCBjbGFzcyBXZWJQYWdlIDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1
YmxpYyBJUAogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoY29uc3QgV2ViRnJh
bWUmKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoV2ViRnJhbWUqKTsKICAgICB2b2lkIHNob3co
KTsKLSAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwotICAg
IFN0cmluZyB1c2VyQWdlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsK
LSAgICBTdHJpbmcgcGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7
CisgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgdXNl
ckFnZW50KFdlYkZyYW1lKiwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3Jt
VXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIFdlYkNvcmU6OktleWJvYXJkVUlNb2Rl
IGtleWJvYXJkVUlNb2RlKCk7CiAKICAgICB2b2lkIGRpZEluc2VydE1lbnVFbGVtZW50KFdlYkNv
cmU6OkhUTUxNZW51RWxlbWVudCYpOwpAQCAtNDE5LDggKzQxOCw4IEBAIGNsYXNzIFdlYlBhZ2Ug
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwg
cHVibGljIElQCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpV
UkwmKTsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJik7CisgICAg
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFt
ZSosIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgCiAgICAgZW51bSBjbGFzcyBJbmNsdWRlUG9z
dExheW91dERhdGFIaW50IHsgTm8sIFllcyB9OwpAQCAtNjg1LDcgKzY4NCw3IEBAIGNsYXNzIFdl
YlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQ
YWdlPiwgcHVibGljIElQCiAgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRleHRNZW51QXRQb2ludElu
V2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYKIAotICAgIGJvb2wgaGFz
TG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgaGFzTG9jYWxE
YXRhRm9yVVJMKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlUmVxdWVz
dChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtOTQzLDcgKzk0Miw3IEBA
IGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9u
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0KCk7IH0K
ICNlbmRpZgogCi0gICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGlu
Z1VSTCwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKKyAgICB2b2lk
IHNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVuYW1lLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsb25nIHNpemUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzYXZl
UERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJp
bmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5n
JiBwZGZVVUlEKTsKQEAgLTExNTksNyArMTE1OCw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQ
CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9h
ZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwg
Y29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgLy8gQWN0aW9u
cwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKQEAgLTExOTcsNyArMTE5Niw3IEBAIGNsYXNzIFdlYlBh
Z2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdl
PiwgcHVibGljIElQCiAgICAgc3RhdGljIGJvb2wgc2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJD
b3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKICAgICBz
dGF0aWMgYm9vbCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxM
b2dpY2FsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAKLSAgICB2b2lk
IGxvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKKyAgICB2
b2lkIGxvYWRVUkxJbkZyYW1lKFVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIGVudW0g
Y2xhc3MgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07CiAgICAgdm9pZCByZXN0
b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+
JiwgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QsIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpPdmVy
d3JpdGVFeGlzdGluZ0l0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZDc1YWNlZWEwZTAwMDIzYWIyMTliMjkx
MzllMzYyMjZhZjljNmM3Ni4uMjdjYWEyN2NlNTcxZTIyYWEwODE5NmEyMmM2NzJiNDU4YjAzZGE3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC0yOCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkK
IAogICAgIEFkZENvbnNvbGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGVudW0gTWVzc2FnZVNv
dXJjZSBtZXNzYWdlU291cmNlLCBlbnVtIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIFN0cmlu
ZyBtZXNzYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgU2VuZENTUFZpb2xhdGlvblJlcG9y
dCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHJlcG9ydERhdGEpCisgICAgU2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRf
dCBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERh
dGEpCiAgICAgRW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQodWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6SW5pdCBldmVudElu
aXQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXIgYmFja0ZvcndhcmRJdGVtSUQsIGVudW0gV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBiYWNrRm9y
d2FyZFR5cGUsIGVudW0gV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCkKICAgICBUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQog
Ci0gICAgTG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3QgZnJhbWVJRCkK
KyAgICBMb2FkVVJMSW5GcmFtZShVUkwgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQogICAgIExvYWRS
ZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogICAg
IExvYWREYXRhKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQog
ICAgIExvYWRBbHRlcm5hdGVIVE1MKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggZTU4ZTlmMWRkN2IwNzdm
NTYxY2E1MWM5MmZlZjcxNWIwYWUxNDI5ZC4uNzM1NjZhMTMzODVkZTNhYWM2NDZmYjk0OTZiZGRh
ZmNiNWFmNDZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCkBAIC00MCw5ICs0MCw5IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJpbnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVk
ZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCkBAIC00NTQsMTMgKzQ1NCwxMyBA
QCBib29sIFdlYlByaW50T3BlcmF0aW9uR3RrOjpjdXJyZW50UGFnZUlzTGFzdFBhZ2VPZlNoZWV0
KCkgY29uc3QKICAgICByZXR1cm4gKG1fbnVtYmVyVXAgPCAyIHx8ICEoKG1fcGFnZVBvc2l0aW9u
ICsgMSkgJSBtX251bWJlclVwKSB8fCBtX3BhZ2VQb3NpdGlvbiA9PSBtX251bWJlck9mUGFnZXNU
b1ByaW50IC0gMSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBXZWJQcmludE9wZXJhdGlvbkd0azo6ZnJh
bWVVUkwoKSBjb25zdAorVVJMIFdlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFtZVVSTCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3ByaW50Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVS
TCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSBtX3ByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKTsKLSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRl
ci0+dXJsKCkgOiBXZWJDb3JlOjpVUkwoKTsKKyAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIgPyBk
b2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKTsKIH0KIAogdm9pZCBXZWJQcmludE9wZXJhdGlv
bkd0azo6cm90YXRlUGFnZUlmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKaW5kZXggYjI2
MmRmMzRjODA1ZmFhY2RmMjAwNzgxZGI3YWFmZTA0MmU3ZjUyNC4uYjdlMTQ0NDI5NGIyNTEyN2Q0
NTJmMTJhNDhiMmZhZTg5NTgyMGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKQEAgLTQwLDcg
KzQwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a1BhZ2VSYW5nZSBHdGtQYWdlUmFuZ2U7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQcmludENvbnRleHQ7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwotY2xhc3MgVVJMOwogfTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05Nyw3ICs5Niw3IEBA
IGNsYXNzIFdlYlByaW50T3BlcmF0aW9uR3RrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUHJpbnRP
cGVyYXRpb25HdGs+IHsKICAgICB2b2lkIHByaW50UGFnZXNEb25lKCk7CiAgICAgdm9pZCBwcmlu
dERvbmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgc2VuZFByaW50
RmluaXNoZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIFdlYkNvcmU6OlVS
TCBmcmFtZVVSTCgpIGNvbnN0OworICAgIFVSTCBmcmFtZVVSTCgpIGNvbnN0OwogCiAgICAgV2Vi
UGFnZSogbV93ZWJQYWdlOwogICAgIEdSZWZQdHI8R3RrUHJpbnRTZXR0aW5ncz4gbV9wcmludFNl
dHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGJlZDI4
N2RmYWM5Yjk0NGU0MzQyOGYyMjQ3MzMxNjBmMjc0MDYxZWQuLjQ0YWZlZWMyMGYxZWIxN2MyMjU4
YjNjNjMyYTE5MzA2OWJmYjQxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKQEAgLTExNCwxMiArMTE0LDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2Vy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUg
PHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKICNpZiAhT1MoV0lORE9XUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGRiYzU3OWI5OTVmMTliYzMyOTUxY2M4MDJlNjVh
N2ZmODdhMjgxNDIuLjYyZjM5MDU3ZTEyZGQzMjA1ZjkwMzUyNTdhZTE0OTBkZWE2YTM2MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQpAQCAtNjAsNyArNjAsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Njcm9sbGVySW1wRGV0YWls
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8YWxnb3JpdGhtPgogI2ltcG9ydCA8ZGlzcGF0Y2gv
ZGlzcGF0Y2guaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpAQCAtNzEsNiArNzAsNyBAQAog
I2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJLmg+CiAjaW1wb3J0IDxzdGRpby5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLmgiCkBAIC00MzYsNyArNDM2LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBpZiAoTlNVUkwgKm9yaWdpbkFzVVJMID0gb3JpZ2luKCpwYWdlKSkKLSAgICAg
ICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmplY3Q6dXNlclZpc2libGVTdHJpbmcob3JpZ2lu
QXNVUkwpXTsKKyAgICAgICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmplY3Q6V1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyhvcmlnaW5Bc1VSTCldOwogICAgIH0KIAogICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVM
VCwgMCksIFthY3RpdmVQYWdlVVJMc10gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmlu
ZGV4IDZiNGE2NmJmYTM4ZjA1MzJhMGNiZWE1OTAxNDIzZGE1NWZmZDg4NjAuLjNiNWFiYTIzMzgw
NDQxMTM4NzhjZTA4YWMyMGJkMGYyZDU3NjA5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKQEAgLTM1LDkgKzM1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRl
Z2llcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAj
aWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggOGE1NmE5ZTc5
OWZhMWZmODI0OWYwMTQwY2FkMzgxYTVlMmFjYTgzYi4uZWRmNjUxZmE2ZGZiY2EzMThhOGY2ZjIw
N2Y0YjY0OWFkZTFiZjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC01NSw3ICs1
NSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpMb2FkZXJTdHJhdGVneSB7CiAKICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJl
Y2VpdmVkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRp
cmVjdFVSTCkgZmluYWw7CisgICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKSBmaW5hbDsKICAg
ICAKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNvcmU6OlJlc291cmNlTG9hZFBy
aW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5OjpW
ZXJ5TG93KSBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKSBmaW5hbDsK
QEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKIAogICAgIHZvaWQgc3RhcnRQaW5nTG9h
ZChXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXAmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9h
ZENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oV2Vi
Q29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwor
ICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3Qg
U0hBMTo6RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgZmluYWwgeyB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kg
ewogICAgICAgICBGaW5kT25seQogICAgIH07CiAgICAgCi0gICAgSG9zdEluZm9ybWF0aW9uKiBo
b3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25s
eSk7CisgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0IFVSTCYsIENyZWF0ZUhv
c3RQb2xpY3kgPSBGaW5kT25seSk7CiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0
SW5mb3JtYXRpb24qLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAKICAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJpbmdIYXNoPiBIb3N0TWFw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUF0dHIubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQppbmRleCBlOGY3NmYxNjRlMDY1
ZjgwMjhlOWE2ZjY3ZWEzNWQ1MmViN2VjODc1Li4yMTZiYTY1NDgwNzFjNjZkMWE1YTYwNGQ5Y2Rh
ZGMzYWNiMjk5ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
QXR0ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQpAQCAt
MzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkF0dHIqPihyZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01CbG9iLm1tCmluZGV4IDRlNmVkYzU2YTYzZmY0Y2E3Y2Y0YjQ2Y2UxYzc3MjQ4Mzkx
MTNjNmUuLmRlNTkxM2NhMTg2MDBjOGVkM2M5NTJiMWE5NjlkN2VlZWRiNzUyZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbXBv
cnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OkJsb2IqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01DU1NDaGFyc2V0UnVsZS5tbQppbmRleCBkMWI1ZWFiZDc1ZDZmYWI2YzdjY2M3ZDY2YWZmMjNk
NGMyMTIwMWQ0Li43YmZmZmRjMjFkYmEwODk3ZjY2ZmU1YWUxNDU1M2M1ZWM1MzdiZjQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTQ2hhcnNldFJ1bGUubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0NoYXJzZXRSdWxlLm1tCkBA
IC0zMCw5ICszMCw5IEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiBAaW1wbGVtZW50YXRpb24gRE9NQ1NTQ2hhcnNldFJ1bGUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQppbmRleCA4ODA0ZjI0NTAwYmQ2ZThl
ZjdjMmI2MGU0NzA2N2U2YzkyZDNlMDAzLi5jNTE3OGFlMjAxODRjNjJmYjNkYTBhZGZlNjg3ZTQz
ZDRhZTUyYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NT
SW1wb3J0UnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1w
b3J0UnVsZS5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU0ltcG9y
dFJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxl
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU01lZGlhUnVsZS5tbQppbmRl
eCAxNTlhOWE0OTQ5ODdiZDU0NTE5Y2JkNjJlNDMwOTAxYTdkMGM4YzllLi5lYjVkY2YyMmY3Y2Zi
OGM2MTY3OTk3OWE1YTMyNDgyNTNmOWY5ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFMaXN0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpDU1NNZWRpYVJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTUGFnZVJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUGFn
ZVJ1bGUubW0KaW5kZXggZjM2MjIzMWNlNWJjZmQ2ZGVhNjVmMTFkMzE0YzQxYmRjOWY5MzQyOS4u
YjZiYzI3ODA5OWY4MjQ3NzE3YjJmOWI3MjkxYmY5M2JmZTgxNTE0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQYWdlUnVsZS5tbQpAQCAtMzQsOSArMzQsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVBy
b3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1BhZ2VSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmluZGV4IDM1YTg5MzQ5YzMyMTI4
YmY5MzcyNWI2NmZhYzQ2NjY0ODhkNmUwNTguLjA1NWVhOWVjNGFiNWE1MTIzOTc2OGMzZjc3Yjll
MDM2OTllNzk3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
U1NQcmltaXRpdmVWYWx1ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTUHJpbWl0aXZlVmFsdWUubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgIkV4Y2VwdGlv
bkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6RGVwcmVjYXRlZENTU09NVmFsdWUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCmluZGV4IGQ0OGNiM2Y5MjI5ZGRiMmJkNjNkZDk5ZjA5
MWZkNWJjNWM2NTJkMGYuLmExMmIwZThjOGYwNzc3MDE2OGU5OGNiN2FhNzU1MWQ3YWZkNWIyNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCkBAIC0zNCwxMCAr
MzQsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KaW5kZXggMmQ5
ZmVmZmZjMTU0MDBkOTg3MzMxMzNjOGEzNzRmMWQ2ZTkzOGVmOC4uYjNiMDdmMzM5ODY4NmRlZGJk
MGRkMmM5MjQ2NDE5YTFlY2ZkNzY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KQEAgLTM2LDEwICszNiwxMCBAQAog
I2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbio+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZVJ1bGUubW0KaW5kZXggOGE0Y2ZmMzBjZGQ1NTMx
MmY3ZGQ0MjdlNTEyMWEwNjYxZDEwYjkwOS4uMmFlMTkxM2IyZTQzZjgzMTJmZWI0MDg0MmFhOGY5
N2UwZmI0ZjY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNT
U1N0eWxlUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5
bGVSdWxlLm1tCkBAIC0zNCw5ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q1NT
U3R5bGVSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxl
U2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5t
bQppbmRleCA4YzI0MDYwMTZjMGVhNWNlYmFlZWFkZDZkZmQ5OTU5NzE1MTA4OGFkLi4yNjlmMDI0
OGM3YzYwMTQwZTQ3NGI4ODQwN2IwMGEzODAwNjVmZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2lt
cG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OlN0eWxlU2hlZXQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTVmFsdWUubW0KaW5kZXggMGM2ZTA3NGQ4ZjNkMTUwNTAwMDkxYjExMWRkOTk4N2M4OGFh
NzM4Zi4uYjc3ZDRiODcyMDY1OTYzMDhjNzMyZjhhZjM0YzE2MTQ4OWY2MjFkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbQpAQCAtMzEsMTAgKzMxLDEwIEBA
CiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01WYWx1ZSo+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRhdGEubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQppbmRleCA4YzNiNGQ0YTU4
MmZlOTQ3YTBjMzhkMDY0ZjlhMTI5MWI1OTljOWMzLi5iMzBlOTU3OTQwZWQ5NjY1NzViYzYzNDk0
NGU3YTkxNjBlNTI5MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ2hhcmFjdGVyRGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q2hhcmFjdGVyRGF0YS5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25I
YW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DaGFyYWN0
ZXJEYXRhLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhKj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ291bnRlci5tbQppbmRleCAyZDFlNTY1N2VhMmQ2NjhkMjAwNWI1M2M0
ODU5ZWRkOWQ1MmY4YmY4Li4zMDg3MDFlNWI0ODE4Njc0NzMyM2MxOGRlZWQ0ZTQzMGFkYWMyYjQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQpAQCAtMzEsMTAg
KzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Db3VudGVyKj4oX2ludGVybmFsKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXggYWQ1NTg1Mjlh
YmI3ODNhODFkM2Y5ODMyZmM0M2Y5YWJjM2EyM2E1MC4uM2IwNGQzOTMzZDI0YWFlMzMzNWJkODdi
ODEwNjlmNGNjZTdiZDYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1
bWVudC5tbQpAQCAtODIsMTIgKzgyLDEyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVHJlZVdhbGtl
ci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aEV4cHJlc3Npb24uaD4KICNp
bXBvcnQgPFdlYkNvcmUvWFBhdGhOU1Jlc29sdmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRo
UmVzdWx0Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KaW5kZXggOTZkMDMyOWI0OWFl
NjE1YjcxZWZhYTRjMDViMjY5MTFkZTg1YzE3ZC4uMmVlMmNmODRjNjM5NDhjMDAwMmY4YTY1ZDhj
ZDY2OWE3Njc5ZDI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TURvY3VtZW50RnJhZ21lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TURvY3VtZW50RnJhZ21lbnQubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
TmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEb2N1bWVudEZyYWdtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURv
Y3VtZW50VHlwZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudFR5
cGUubW0KaW5kZXggZTIwMTE3NmE5MmRjNjY2NDBjZDUwMWVmN2VjMjBhY2Q4NDY0YWY5Mi4uN2Iy
ZTAzZWM1MjFjZGYwNzQwMzI2NTkwMGU2ZDNjYjA2MzQyYTNkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRUeXBlLm1tCkBAIC0zMiw5ICszMiw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVkTm9k
ZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRUeXBlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2
ZW50Lm1tCmluZGV4IDYwY2RiNmU1N2Y1YmUxNzYwZjRkOTE1ZDM4YWU0YTMzNTU3NTE3Y2QuLjJk
NjE1NGIxZTA2NDZkOGEzMWMwYzAzMGVjZTYzMzNmYjUxNmMwODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NRXZlbnQubW0KQEAgLTMzLDEwICszMywxMCBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2lu
dGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmls
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1tCmluZGV4IGVkYTg3
ZmZmMWM0ZTRiNWE5YTg3YzZkYjhiNDAyYWM0YjI0YjI4N2YuLmZkYzU0MTNiOWE1ZjQ2YjllZGE1
ZmMwYTdiMzZhZTVmODVkM2RiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01GaWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxl
Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZpbGUqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0KaW5kZXggNDQ2MGYyN2M2ZGZk
ZDMwNjU2MGMxMjRkOWQ3OTk0MWM4ZDVjODUyZC4uYzZjMDFiZDdhNjk2MTc3MGNlOGZmMThlNTc2
YzEwOTg1ZWZmNDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxBbmNob3JFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MQW5jaG9yRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxBbmNob3JFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxBcHBsZXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxBcHBsZXRFbGVtZW50Lm1tCmluZGV4IGE4NDU0MmRhNDdkNjQ0ZGMzNjJlOGZkMWRmYjUyZDA2
YjIxM2E2NGEuLjI2YjhkM2M1OGJlYmQyZDdkNWRiMmU4ZGNjY2UyNjlhMGY5NWJjZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFwcGxldEVsZW1lbnQu
bW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFyZWFFbGVtZW50Lm1tCmluZGV4
IGM0YWIyMzIwMjc1N2VmYzIyNmQzNDdlNTBhMjEwZGQ0M2UxMjA1MmUuLmI5YWNhODk2YTRjMDkx
NzY4Y2ZhMDMxOGI2YzZiN2EwN2VkNTc1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxBcmVhRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MQlJFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxCUkVsZW1lbnQubW0KaW5kZXggY2Y1YjNlMDg4NDEzOWM5OGU0Yjc4Y2IzNzhkZjFhNjdj
NDM1OThiOC4uNDMyNDY0YjhkZDJkNTYyNjMxMDE4OGM3MTgwNzI4NTkxNjMzOTM3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KQEAgLTMx
LDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQlJFbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQubW0KaW5kZXggNTE0YjcwOTFiNDNk
MTIyNzcyZDA3MGM3N2U2YTExZGY0ODAwNmMxMy4uYWZlM2I2OTkzYjYzODZkNzM5ZTE0Y2ZjYTNi
N2M5ZGY2OTQxZTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxCYXNlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEJhc2VFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTEJhc2VFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxC
YXNlRm9udEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJh
c2VGb250RWxlbWVudC5tbQppbmRleCBhOTljMGI2MjM4MWYyNTFjMjFlODA3Njg1ZmI5MzUwMzA2
NzExYTRkLi4yNjMzYzgwZjcyNGQ4Nzk0NGRlYmY5MDhmMDM5MmZlN2JmY2RhNGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVW5rbm93bkVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxV
bmtub3duRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9k
eUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJvZHlFbGVt
ZW50Lm1tCmluZGV4IDY5NTI5M2I0MjQ2M2ZiZTY2Mjg3YjA2NDc2NGVmNjlkZmU1OGY3MDQuLmRm
NjEyMDg2NmM2YmM2MmM0MTIyMzM5N2ZmMWNiMzBjNmE2ZjQ0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbQpAQCAtMzEsOSArMzEs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbQppbmRleCA5OGFhMjdjNTYyNzVj
NTQzY2Q0ZDllMmZiYjI3YzE4ZGI5ZDgyYWI1Li43Yzc1OTVkMzE0ODMwMzJjZmFlYmZlNDAxYzE3
MzIxY2I5ZGJkNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEJ1dHRvbkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxCdXR0b25FbGVtZW50Lm1tCkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L05hbWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTEJ1dHRvbkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihf
aW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTENhbnZhc0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TENhbnZhc0VsZW1lbnQubW0KaW5kZXggMGZkNjBhNmRhOGFhYWFiZTc0ZDJiZDJiZDk0NzliODE0
YmQ5NjM1MS4uMThiMzEzZWI0NGFjMDM2YjAzN2Y1OGE5NDIzNTc2OWJlZGQxMDQzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ2FudmFzRWxlbWVudC5t
bQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TdHJpbmdBZGFwdG9ycy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTENhbnZhc0Vs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0KaW5k
ZXggZTM0NDA5OGNiNDhlMmQzOTBmNTQwYmMxZDUwZTY5NzNjYzQzZDdmMS4uYWFjMTg1NDlkM2Q4
YjQ3ODEzYmMxNTRiMWNhNWM0MTE3M2I1MzZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MQ29sbGVjdGlvbi5tbQpAQCAtMzUsMTAgKzM1LDEwIEBACiAjaW1w
b3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SFRNTENv
bGxlY3Rpb24qPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRGl2RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MRGl2RWxlbWVudC5tbQppbmRleCAyOTM2YWZhYzAyNTMxODU4ZDFmYjhhOTRkMjcy
ZmZmOTVjZTk0OWRkLi45Y2IwM2EwMTE5NmI3ZjQ0MTU0NTI3YTdjNWMyNTViN2QzYWU5Y2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERpdkVsZW1lbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEaXZFbGVtZW50Lm1t
CkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTERpdkVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEb2N1bWVudC5tbQppbmRleCAwMzc1YTNjZjRm
ZDY3MWY2MzM2ZmJiMzdjOWJiN2M5YWVmMDE3NjNkLi44OGQxNDJlYWRhODQxMTM3MDUwMTQ4ZmNl
NGVjODc1ZjAyMjdiN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTERvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MRG9jdW1lbnQubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTERv
Y3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpI
VE1MRG9jdW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1lbnQubW0KaW5k
ZXggYTVlMGNkMzE5MTNiZDM4NzMyNjYzNWU3OTM1ZjRhYTg5ODE5YzZmMC4uMmZlMjRjNzA3NDk3
ODg3MjUwODRmMzY2ZjkwYjlkODQ0OTc2ODA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRWxlbWVudC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+
KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MRW1iZWRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxFbWJlZEVsZW1lbnQubW0KaW5kZXggNmI4MmJlMDhlODIxNjZjMzE5NDBhMzQ4ZWNmOTcyNTgy
NTljYzlkMC4uMGQ2ZDg4MTQ3MWE4MTVlMjAzYTBjNDU0ZDBkNzY2YTYwOWQ3ZTczYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0K
QEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpp
bmRleCBlYTkyYTAxOWE1MDY1Njk1YzY0NDZhZGE0OTM5NWY2ZmEzYWUyNjY2Li4xZmQ0ZDgwYmM3
MThjOTU2YTM1ZDZjOGJjMGEwN2ZiMDJhOTk2YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpAQCAtMzYsMTAgKzM2
LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRpdHlTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxGb250RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MRm9udEVsZW1lbnQubW0KaW5kZXggODBkZTQ5MDU0OTI0ODAzM2EzMmJmY2EwMzhiM2FmNzcx
OWM2ZmI3Ni4uOTEwZThmN2Q0NjZmMWRlM2E3OGVjZDMyZmQ4NzcxYmI3ZTg0ODJkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvbnRFbGVtZW50Lm1tCkBA
IC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZvbnRFbGVtZW50Kj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9ybUVsZW1lbnQubW0KaW5kZXggYmZkZTFk
YWQ4MTRlZGRjYmVhNzY1N2FmYjc4Y2QzNGY3YmVkZDU2Zi4uZTg2MjZiYTM1YWEzMzdmNGI0Yzdj
ZmExYmQ4MzNiOTVmZWVlNzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxGcmFtZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEZyYW1lRWxlbWVudC5tbQppbmRleCA2MDBmNDRmODliYzQzOTk3ZGM0MGUwMDZkMjZjYzM1MmUz
ODFhYWYxLi5lYjVjNTVhYzJiNjdhZjRkZWViZGY2MTVhMzc0ZTI1NzNlYjMzYjgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQpA
QCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCmlu
ZGV4IGYyZjIwN2YwNTI0OTdjMjE5N2I3NDM0NzdjM2NiYjMxMjZmZmM5OGEuLjY5Yjk1YTA2Zjc4
ZDg4Njg0MGUzNjYwNmI3NzE1YzI5MDYxNjQxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KaW5kZXggYjI1NzhhYTJkZjNlZTg5MDA4
NTYxMmZjMjE3NzM1ODM1MjY1Yjc2ZC4uYTcyNmJkYzFlMDIyN2FiMjZjZjAwOWI3MzY3MzQxODdm
ZTQwMmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxI
UkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVs
ZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSFJFbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZEVsZW1lbnQubW0KaW5k
ZXggYmVmMzlhZTU3MDZmOTQ5YWNkMjdmNDFiNWQwYmIyN2VlZTJmZDJhNy4uOWNhNGI4ODBiMWFh
YWJhZDhjMzBhOWViMWQ2ZTQwZTMzMGJlZDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTEhlYWRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTEhlYWRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MSGVhZGluZ0VsZW1lbnQubW0KaW5kZXggODExYmIxODA0ODg2MWY4YjE3MTJj
OTM1NmMxZDgyNzZkMDExMzE4OS4uYTJkZmI2YTNlYzFlYjA1YzhjYjMxMTEyMjIwNDZhMDAyYzc5
ZGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFk
aW5nRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhl
YWRpbmdFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxO
YW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TEhlYWRpbmdFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxI
dG1sRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSHRtbEVs
ZW1lbnQubW0KaW5kZXggMjg3Y2U3Zjk0ZmYyZTljOTY1ZjM1ZmRlNDMzNTBjZDRhYjNjYmMxZi4u
ZWJjM2NmZTc0ODYxNDI2MzNkMzM5MjZkNWRlMTNlNTlmZWMxOGNhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tCkBAIC0zMSw5ICsz
MSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEh0bWxFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCmluZGV4IGYzODJjOWVmOGUw
OTY5MjNhNjMwZTVkYmJkNTk3MjY3ZjFlMTY5ZGYuLmUzMjFiNGY3NmQyMTZlMjNhM2Q5ZmEwNDNj
Y2VmNzg4YWMzN2E3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MSUZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTElGcmFtZUVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MSUZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+
KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MSW1hZ2VFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxJbWFnZUVsZW1lbnQubW0KaW5kZXggZmM5MTk1M2NlY2MyY2FlZWU3NjJiMzQ1NDIwMjQxYmJm
OWIzNzE1MS4uZWJhNGVjOTIzMTZjMzljZTAxMzRjZGIwMDVkMTYwOTNiMDMyMmRiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0K
QEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5wdXRFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KaW5k
ZXggODM2MzczNWQ5NDc0YTg2YmE4YTgwNWUwZjFhM2ViYTZmODRkNGJjZC4uZDczN2E1NTdlOWEz
ZWMwMzUzNTNjNTEyNjkwZGJlNzhlYjBlODQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KQEAgLTY0LDkgKzY0LDkgQEAgQGVu
ZAogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJF
bGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMSUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTExJRWxlbWVudC5tbQppbmRleCAyNjlkMWE1NGFkZDhjZTJiZDRmZWFm
NmE0MmE2Mzk4MjA4NWZlZGEwLi5hM2NmM2ZhOGRiZmE4Y2VhZDdhMjlmYTk4YzI3N2E4NGQ5YmYw
ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxMSUVsZW1lbnQq
PihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCmluZGV4
IDUxZjU2MGMwOTc5MTg5M2FlNjZkYzU1MmQyZjk2OTdkMmZiZjAyODEuLjgxMzkwMDBlYWVhNGNh
N2QwZWU5MmI1ODBmNGNmMDgwMTdhMTE2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCkBAIC0zNSw5ICszNSw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTExhYmVsRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbQppbmRleCA5MzQzY2E2ZTlkZmFmNzM3ODA2NTdj
ZjU0MmFlMTIyNTQ1MmQ4YjBjLi5kNGYxZjM2YzVmMjRiMTk0YTkyYzgyYjEwY2RiYTFkOGUxMGU2
MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExlZ2Vu
ZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMZWdl
bmRFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1l
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExl
Z2VuZEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtF
bGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMaW5rRWxlbWVu
dC5tbQppbmRleCAyMGY0YzAxNTE1ZGViNjBlZTRkYjM3OWEwMDVlNTI3NzliOWM1MjIwLi41Njg3
YzQ1YmJhMGZhYzc0YjU0Yzk0ODVkOThhZTQ5ZThmNzM1YjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGlua0VsZW1lbnQubW0KQEAgLTM2LDkgKzM2LDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5
bGVTaGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tCmluZGV4IGI5MjFiM2E1MGVkMDUxNTAzZjNk
NzdjNDUwYmQzOTcxNmFkNGM5NjAuLjJjYzkwY2Y4NjM0ZTM5NmRkMDFmNGEwYzExZjA2MTBlY2Q2
MGU4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFw
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcEVs
ZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWFwRWxl
bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcnF1ZWVFbGVtZW50
Lm1tCmluZGV4IDYxYWI0YzYyMzMzZjk1NmUwNzI0MzYyNzcyZmMxZmZmY2E0NmEyMzguLjk2MjNl
ZGIxNmFjMDk5YjQxZGM5NjM4NzU5MDQ0YjQ3MWI5MGJjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbQpAQCAtMzEsOSAr
MzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KaW5kZXggNWJjNzQ1NmY2
MGNmNzYxMmI1MDZlYmZkM2RjODlmYTQ3YWVjYTQ2Ny4uNzgzYTVhMTVlOWRlMWM3NWU3NGRiODk1
MmI0MTk5MjAxYTk0MzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KQEAgLTM4LDkgKzM4LDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvTWVkaWFFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaW1lUmFuZ2VzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxNZXRhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
TWV0YUVsZW1lbnQubW0KaW5kZXggOTk4NzAwMmFmN2NiZTNkMTRkNjdjZjhjNGYzYjgxZGUzZDNi
ZjI2Yy4uNzhlZDZlOTNjZGZhYTViOGM5NWY3NzJmMjAzZjM4NDRkODBlOTllNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tCkBAIC0z
MSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
ZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tCmluZGV4IGQ4ODVmY2ZkMDgw
MzZjNzM4MjkyZTAwNzA3MjFlZTVmODJlMzcxOWEuLjYwZjllNDVjN2IxZTM0YmMwNjJlNmE0ZWIz
MTI3NGFmNDY1YjI1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MTW9kRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTE1vZEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpI
VE1MTW9kRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT0xp
c3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVs
ZW1lbnQubW0KaW5kZXggYTMyYzJkOGJjOTcxMjE3MDdiNmUwZTM3OGU3NDUxNTIyYzU1ODczMC4u
YjdmYTU5YjZlNjY5NWY2NmM4OTY5YjFmYTQwNWU4ZTRhMWRlYWVlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KQEAgLTMxLDkg
KzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE9MaXN0RWxlbWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE9MaXN0RWxlbWVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbQppbmRleCA3
YWI3M2Y1NzI5NDMwZDNiZjIwMjdlZGJjNWU0NjEwMzE0YmRjYTE1Li5kYjIzNmQ4Yjk1ODZiOGI3
MmFjOGU4OGNjZGYyYjQ5MGFiZWRiNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTE9iamVjdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tCkBAIC0zNyw5ICszNyw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQppbmRleCA0ZTUxNWRhZjU1YmI3
Y2M1Y2MwMzhiYjUyNDA0YjZlZWYxYjU1Y2RiLi4xNzcxYzJlZmUzMTg2MmQ3YjE1NTllMGQxMjQ3
NTNmMTNmMzcwMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTE9wdEdyb3VwRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MT3B0R3JvdXBFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tCmluZGV4IGZkZWM1NGVlMWQ2NDc4MWU2
NmU4ODMzNGM1MmNmNTQxOGJjNzkzZGYuLjE0NTM1MWQ5YjZmZWUzZTNiMTJhZjMxZjA0YmMzMDM3
ZmRhNzc5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
T3B0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE9wdGlvbkVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE9wdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KaW5kZXggZjc3MGE4YTE0ZDVhODNkNzY5NWU0
MzcxOWVlMWFmNGRjYjY2NGNhMS4uMzkxMjEwMTU2MWY1ZmZkZjg5NDFlOWE3MWJmYmU0YjgyOGY4
NGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRp
b25zQ29sbGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLm1tCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogI2ltcG9ydCA8d3RmL1ZhcmlhbnQuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uKj4oX2ludGVybmFsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1t
CmluZGV4IDZjNTExZTkxNjY0Y2U5MjNjYzkyODRhMjU1YTExZTZhNzkzYjNmZDQuLjFhNTQzYjNm
ZDNlNmZlNzI4MjQ2YjJiYThjMTJmZjI2NDBmNjYwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQubW0KQEAgLTMxLDkg
KzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBhcmFncmFwaEVsZW1lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxQYXJhZ3JhcGhFbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhbUVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQpp
bmRleCA1ZmIwY2VjMjdmYjcwOTdmMDkxNWVlNWNkZmM0MThhODFjNTk0ZmU4Li5lZGE2NTMyYzVk
MmE3ZWZlZmMxNDliMGI3NjZhZTlkYjhkYmM5MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MUGFyYW1FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbQppbmRleCAzNzQ5YzE4MDMzMGZi
MGUzNWNkNTQ1OTExYzA5ZTc3NDU4NzVhZmQwLi5iY2Q3ODY2Y2Q3NmM3M2VhYzY0NGUwNGY4NDM3
ZTUwMzBmNWEyZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFF1b3RlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFF1b3RlRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MUXVvdGVFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MUXVvdGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxTY3JpcHRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxTY3JpcHRFbGVtZW50Lm1tCmluZGV4IDMzNDRkNTQ4ODg0OWMxNGM5MWM1YTY5M2U3OWFk
N2U2NzBlMDlmZjQuLmU0YWMwMTc4MDJkYTI1MTRmNGNkZmU3ZGQ3YzkyMDQ5YmRhYjAxZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2NyaXB0RWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNjcmlwdEVsZW1l
bnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFNjcmlwdEVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxT
Y3JpcHRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxl
Y3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxlY3RF
bGVtZW50Lm1tCmluZGV4IDc1ODE0MWRlM2ZiN2Y1YWJmNmUyYTI4ZmE2YWVhMTQ2NThjNjY5NjIu
LmJjZmJlY2FjZDM4NDkxZmE3YmM5OTU0YjNkZTkwMzAyZjkxYTY2YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2VsZWN0RWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW0KQEAgLTQ0
LDkgKzQ0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9O
b2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50Lm1tCmluZGV4IGE0NTI3ODIwODBiYjYz
OWM0ZTY3ZjQ1NzlmOTM5NDY1NjhjNWNmMTAuLjgwNzZhMzM4ZWUxZGMzMGFmMWMyOGE3NDg1ZWI2
NDdkOGVlMzdhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MU3R5bGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MU3R5bGVFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkhUTUxTdHlsZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0KaW5kZXggYTc4MTFiZDY4YjM4OGI4ZDczMzFkNDUz
Yzk2Mjg2MDhhNWEzNmUzNy4uNDgzZjk0ZjEzZmJhZDE1OTdlNjczNmFmNzZjYTRjMGYxMDZlZTg5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNh
cHRpb25FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
VGFibGVDYXB0aW9uRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0KaW5kZXggZGQzMDE2
YjNhYTYzYTRmOWIwMzE0NDA3NWYwNWU1YTk4MDU1OGVlMC4uOWFkOTE0NmU4NGEyNzgwNjk5YmNh
NzNkNTQ3Y2JjYTgyNTBjM2U1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDZWxsRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCmluZGV4IGFm
MjY3MTRkODRmMzBhYWRjYWUxNDJiZTg0NmQ2NmNlNmUzNWU0MGEuLmM5ZDk4Y2E1MTRlMWFiYTdi
MGVmNDg5YzNkYWYyYmU3OWM3MTJkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZUNvbEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNvbEVsZW1lbnQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCmluZGV4IDRjNjhjNGI2
YjRjYTVkNmYxZjYxMGVjNWFjMDdmYTZkMzQ3MzIwYzkuLmJlZGRhZjUwZmFhYWI0YzJkMzZmYTVk
MTI4ZDAzMTY1ZjIwNGI3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCkBAIC0zOSw5ICszOSw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQppbmRleCAyNDA5NmE4ZDk5NDdm
ZDdiN2EyNGZkMTY1NzMxM2E5ODQwOTkzOGNjLi4zZGZlZGMzM2VmY2MxNWFhZTE0ZDQ0MTFmZmVl
NzA2NzczZDY4YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFRhYmxlUm93RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MVGFibGVSb3dFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tCmluZGV4IDk4YjE5
ZmEzMTU0MDM0ZGFkOWY2MzBiMzQzMjIyODgyODM0ZjMxODguLmMzMmMyZTcwMjczNDNkNDcwOTMw
YTY3NzNiMjk4ODhlZDRmNmZlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQpp
bmRleCAyNDg2Zjc3YzNhNWU3NTA0MjcxMDJhZDI3ZTI4MmI2YjY1YjRlZmU5Li4yODM5MTcxNzg1
NTk5ZjkyODU4NGFkNTIxNThlMGYwNWQzNDEyMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQpAQCAtMzAsOSArMzAsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MVGl0bGVFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbQppbmRleCBmOThmOGU4NTJiZDQ3
YTE2MjkyYjk3MzQwOTAxNTcyOGU0NWYzM2ExLi5mY2Y5MDU0YWIwZjEyMTY3YWVlMjA2Y2FkOGFk
YTFkMTM5MDdhM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFVMaXN0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFVMaXN0RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MVUxpc3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MVUxpc3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFZpZGVvRWxlbWVudC5tbQppbmRleCAzMzU4MDY1MDM5Mjg3MTliOTViMGY3MTY3ZjI3MWE5
MDFlODVjMTE5Li40NTdlYWZiYTBkMGNlNTJkMDNmNTUwZjA0NzhiMzRiMDhlODczZDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5t
bQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQppbmRl
eCAzZmQ4ZmNlMzY0NjZmMzdhYjlhMTk0YzBhMzBjMWMzYzQwNTJmNjNjLi4yYzAxZjNlNjEwNTUy
Njk3ZTQ1MTM3OTRkYjEzOWEzNzlkMzJjNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpF
dmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01NZWRpYUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVk
aWFMaXN0Lm1tCmluZGV4IDllODE2N2ExNmE0NGIzMTM3YjIzZWRiMWE4ZWVkNDU5NDlkMjdkOTgu
Ljg2NTFmYzk3YjQ4NzExNWUyZDRjZGQ3NzE0OTBkZjNmZDAwYTVkYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbQpAQCAtMzMsMTAgKzMzLDEwIEBACiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhTGlz
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpNZWRpYUxpc3QqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU1vdXNlRXZlbnQubW0KaW5kZXggZjY1NmE4YWRlNTUzNWE5MGU4N2FiY2FhYjlkODA3
OTk2M2E4MTIwNi4uOTVmMjIzNWQ0NTcyZmIzOTZkNjI0YzM5ZmM1MDY5YjMwOTZkYzM5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KQEAgLTM2LDkg
KzM2LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3VzZUV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01NdXRhdGlvbkV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU11dGF0aW9uRXZlbnQubW0KaW5kZXggMGY0ZWYxNjc1YTFjMDNhODdhMTBkNjFlM2Zi
NzExYWFmMTFjNzZiZC4uMmZiZjQyMmFlODVkOTljNjY4MGEwZWQ1OGNkYmEzMjdmN2VkOGZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQubW0K
QEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTXV0YXRpb25FdmVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNdXRhdGlvbkV2ZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCmluZGV4IDU2ODE5MzMyYmI2NzQy
ZTFlZmVkZDAxZTJjNzUzMzU3N2Q3MWUzZjguLjI5MTgxOTA5MGU1ZTI1MDM1M2IzMDc0YWY5NmJk
MjM4ZmRiOGQ1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01O
YW1lZE5vZGVNYXAubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5hbWVk
Tm9kZU1hcC5tbQpAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVkTm9kZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOYW1lZE5vZGVNYXAqPihf
aW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tCmluZGV4IDlhZGM0MGIwOGFiYmM4NzcxYjNjOGI4YmRm
ZWUwMTlmYzgxY2UzMjUuLjIwMGU4MmEzMTAzYTY3MWQwNjE1NzExMmM3ZGM5NzI0YTU1NmUyZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVByb2Nlc3Np
bmdJbnN0cnVjdGlvbi5tbQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVTaGVldC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdl
Lm1tCmluZGV4IGYyODliM2EyNmU4YTRmNTY2YjY3MjRmYjhkNjE1MTE1OGJkYjYyZTguLmVmMmMz
NTgwOWIwYjY3NjNiNDc3NDU2MThjM2IyOTU2MDZkOTk5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NUmFuZ2UubW0KQEAgLTM0LDEwICszNCwxMCBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlJhbmdlKj4oX2ludGVybmFsKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCmluZGV4IDdh
MWE0YTg3ZmM2ZWYyNDlhY2I5ZDA3ZGUyNTRiZGIyYjBhM2M5MzMuLjBlODc4NWM3ZDJjMDY3YzQ4
NDcyMWVkNTM3ODc0ZDdjNTVjYjBhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01TdHlsZVNoZWV0Lm1tCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUv
Tm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlN0eWxlU2hlZXQqPihfaW50
ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0KaW5kZXggMzBlN2Rh
M2MwYzk4OTczZDQxMjVhNjdlZGRjZDI2ZDljZWU3NWNiNS4uZjczMGFkNmRlYmFmYTA1YmUzNzI0
NDBmOTZlNjAxYWVmZjRkZjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVRleHQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQu
bW0KQEAgLTMwLDkgKzMwLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVGV4dEV2ZW50Lm1tCmluZGV4IGM1MDI2ZWI0YjJmODYwMTMzMjg3YjlmMmUwNThh
NzYxZmIyNDIwNGYuLmNhMDZmZDdjMGZmMGUwMDFiOWU4ODQwNmQwYmE3ZWFjY2E0MTRhOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQpAQCAtMzMsOSAr
MzMsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UZXh0RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRFdmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVRva2VuTGlzdC5tbQppbmRleCBkYjhmNTVjZTA3YWE2NGZkOTI5YTVmNWY4M2ZmMGNi
Y2NkZDc3NDY4Li45YzRhYTg5NjMwZDc4MTQ0NDJiMTNjNmJjMjVjOGU0YjdmOTZiYjYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0KQEAgLTMyLDEwICsz
MiwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6RE9NVG9rZW5MaXN0Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCmluZGV4IDE3MzI0MzE5MGEzMmIxNWM0N2ZmZmUw
MDJiM2JhNjE2N2IxNzc4ZGIuLmY4MmNmNThhN2VkNGFiYjk0Zjg4NWYwZWU0YWZmYmMzZjlkZTAx
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCkBAIC0zNCw5
ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVUlFdmVudC5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VUlFdmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NWFBhdGhSZXN1bHQubW0KaW5kZXggYTFlZjU3M2Y4ZGQyYzEwYjY4NmMxMTk1MDlh
NzAyNDJkN2NmNTJhZi4uZGFjZjFkODZkZjhlNzNjMWJiMDQ0Y2RkYThiNDkxNTFhNGJmZmZkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aFJlc3VsdC5tbQpAQCAt
MzEsMTEgKzMxLDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvWFBhdGhSZXN1bHQuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6WFBhdGhS
ZXN1bHQqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmluZGV4IDhmMTdjM2FmODlmMmIyNzRhYjQ3NTQ1ZWE5Zjll
YWFhNmM5ZWNkZmMuLmIyYjRhZThhMzFjODM1MTFkOTA3NTEwZDA4YWE4MGJhMDAxODE4OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0u
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bQpAQCAtNDcsMTMgKzQ3LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRy
YXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVh
ZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9v
cC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQppbmRleCBmM2Jh
YWVhMmZhMTEzZDhlNDc3Y2Y2MzA4MzVlMDc4YWQ0MGE3Y2E4Li5lZDI4NGI0NjdiODRiYjZmZDg1
ZTA0YTQzNzg3NmNkZTRhNmU5YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViTlNVUkxFeHRyYXMubW0KQEAgLTMzLDE0ICszMywxNSBAQAogI2ltcG9ydCAiV2ViTG9j
YWxpemFibGVTdHJpbmdzLmgiCiAjaW1wb3J0ICJXZWJOU0RhdGFFeHRyYXMuaCIKICNpbXBvcnQg
PEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Mb2FkZXJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0
RW5jb2RpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+Ci0jaW1w
b3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+
CiAjaW1wb3J0IDx1bmljb2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4K
KyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRy
YXMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJh
cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBA
IC0xMDksNyArMTEwLDcgQEAgLSAoTlNTdHJpbmcgKilfd2ViX29yaWdpbmFsRGF0YUFzU3RyaW5n
CiAKIC0gKE5TU3RyaW5nICopX3dlYl91c2VyVmlzaWJsZVN0cmluZwogewotICAgIHJldHVybiB1
c2VyVmlzaWJsZVN0cmluZyhzZWxmKTsKKyAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmlu
ZyhzZWxmKTsKIH0KIAogLSAoQk9PTClfd2ViX2lzRW1wdHkKQEAgLTEzOSw3ICsxNDAsNyBAQCAt
IChOU1VSTCAqKV93ZWJraXRfVVJMQnlSZW1vdmluZ0ZyYWdtZW50CiAKIC0gKE5TVVJMICopX3dl
Yl9VUkxCeVJlbW92aW5nVXNlckluZm8KIHsKLSAgICByZXR1cm4gVVJMQnlSZW1vdmluZ1VzZXJJ
bmZvKHNlbGYpOworICAgIHJldHVybiBXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhzZWxmKTsK
IH0KIAogLSAoQk9PTClfd2Via2l0X2lzSmF2YVNjcmlwdFVSTApAQCAtMTc1LDE3ICsxNzYsMTcg
QEAgLShOU0RhdGEgKilfd2ViX3NjaGVtZVNlcGFyYXRvcldpdGhvdXRDb2xvbgogCiAtKE5TRGF0
YSAqKV93ZWJfZGF0YUZvclVSTENvbXBvbmVudFR5cGU6KENGVVJMQ29tcG9uZW50VHlwZSljb21w
b25lbnRUeXBlCiB7Ci0gICAgcmV0dXJuIGRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGNv
bXBvbmVudFR5cGUpOworICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNl
bGYsIGNvbXBvbmVudFR5cGUpOwogfQogCiAtKE5TRGF0YSAqKV93ZWJfc2NoZW1lRGF0YQogewot
ICAgIHJldHVybiBkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRT
Y2hlbWUpOworICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGtD
RlVSTENvbXBvbmVudFNjaGVtZSk7CiB9CiAKIC0oTlNEYXRhICopX3dlYl9ob3N0RGF0YQogewot
ICAgIE5TRGF0YSAqcmVzdWx0ID0gZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwga0NGVVJM
Q29tcG9uZW50SG9zdCk7CisgICAgTlNEYXRhICpyZXN1bHQgPSBXVEY6OmRhdGFGb3JVUkxDb21w
b25lbnRUeXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudEhvc3QpOwogICAgIE5TRGF0YSAqc2NoZW1l
ID0gW3NlbGYgX3dlYl9zY2hlbWVEYXRhXTsKICAgICAvLyBUYWtlIG9mZiBsb2NhbGhvc3QgZm9y
IGZpbGUKICAgICBpZiAoW3NjaGVtZSBfd2ViX2lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb0NTdHJp
bmc6ImZpbGUiXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbQppbmRleCBlOWVkNWNiZWIyOTVkMDZkYWFkOTY5
NTcyMmEzNGYzZWVlNTU2NjhkLi5iNzI2NTgzZjk3NGNkZGY3NjYxN2YyYWQxOGQzOThmNDAzYjkx
M2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250
ZW50VVJMUGF0dGVybi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVz
ZXJDb250ZW50VVJMUGF0dGVybi5tbQpAQCAtMjQsOCArMjQsOCBAQAogCiAjaW1wb3J0ICJXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4uaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW0KaW5kZXggYWM3YTRiYjMxOGM1NWY5MzU5Yzk4ZTBhOGJmOTZkMWU2ZTQ0
MzYzNi4uODgzYjkyMDcyMDdlMjQ4ZGQ0N2EzMGJjMGM3NjIxZTcwNjhiN2MzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNTgsNyArNTgsNiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9Qcm94eVNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250
cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9ucHJ1bnRpbWVfaW1wbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ydW50
aW1lX29iamVjdC5oPgpAQCAtNjYsNiArNjUsNyBAQAogI2ltcG9ydCA8dXRpbGl0eT4KICNpbXBv
cnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWRMZWFrQ291
bnRlci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBleHRlcm4gIkMiIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAwZTE4OThmMDMwNTk5NzA0
M2U2NGY2YTI5YWY2ZmNkM2Y5OWM1ZmE3Li4yYmM5NzhkMzQwM2Y3M2YxYzA2M2RmMjUyMzQzYzVi
ODNlYzEzMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFdl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0+CiAKICAgICB2b2lkIGNhbmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0aEVycm9y
KE5TRXJyb3IgKik7CiAKLSAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29uc3QgV2ViQ29yZTo6VVJM
JiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0KKyAgICB2b2lkIHNl
dFJlcXVlc3RVUkwoY29uc3QgVVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVl
c3RVUkw7IH0KIAogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKQEAgLTEwMyw3
ICsxMDMsNyBAQCBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPgogICAgIGJvb2wgd2FudHNBbGxTdHJlYW1zKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gbV9kZWxpdmVy
eURhdGE7Ci0gICAgV2ViQ29yZTo6VVJMIG1fcmVxdWVzdFVSTDsKKyAgICBVUkwgbV9yZXF1ZXN0
VVJMOwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9yZXNwb25zZVVSTDsKICAgICBDU3RyaW5nIG1f
bWltZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMWE3MGJjZWI2NWRmNTcxMmY2NTA1NmEy
NGY0ZTk5NTkyMjMxY2I2Zi4uMDRkMjQ2ODE3ODUzNjFlYjgxNjBhMzc1MjM4YmE4ZTQ4ZTk0YzY5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIyNyw3ICsyMjcsNyBAQCBjbGFzcyBXZWJDaHJvbWVD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKICAgICB2b2lkIHNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKICNlbmRpZgogCi0gICAgU3Ry
aW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5k
ZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBj
b25zdCBmaW5hbDsKKyAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNv
bnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQppbmRleCA1ODc4NGI5OTc5NmViYTBiNzkzMWQ3ZTJhNzhmODVlNTdhMmZh
MTE4Li45ZTUxMjUzMDUxMjRlNGZhMmFlNjMyNWRlMDIzNmE4MTIyODExZGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsCiAK
ICNlbmRpZgogCi1TdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5n
ZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CitTdHJpbmcgV2ViQ2hyb21l
Q2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6
ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZ0ZvcldlYlZpZXc6KTsKICAgICBpZiAoW1ttX3dlYlZpZXcgVUlEZWxlZ2F0
ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CmluZGV4IDhiMjAzNjRiYjY3YTkxNzI3OGIyOTUzZmM1MTc5YTEyZGQzNjZkZGQuLjE4ODVmMDMx
MzEzNWI4MTdiMzBmOTQ1Nzc3ZDhlMjRiMTUzOWJmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudAogCiAgICAgdm9pZCBjb250ZXh0TWVudURlc3Ry
b3llZCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpV
UkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc1NwZWFraW5nKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50Lm1tCmluZGV4IGFmNzgxNGI5Njk2N2U5ZDg1ZjU5NDFkNGFmYWIzMDI0NzU2Y2YzMjUuLjYx
NjMwNDkwMTk5NmYxNTdmYzdlOThhMGU3YWIwYTBlODdlYzk5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tCkBAIC01NCw5ICs1NCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlck9i
amVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTVByaXZhdGUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFj
L05TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEkuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCA0ZTgxZDM3MDg0OGY5ZTQ0
YTQwZjUwNDBiYzlhZDhhMzdjY2FkOGUwLi44NDdhNzNiMTdhNDYxN2JkNTRhOGQyOGE5MjNjMWQ0
YTYzYmRkMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFdlYkRyYWdD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAKICAgICB2b2lkIGJlZ2luRHJh
ZyhXZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgbW91c2VEb3duUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtb3VzZURy
YWdnZWRQb3NpdGlvbiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RHJhZ1NvdXJj
ZUFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDc3MTgyZDIw
ZWJiYjM5MDcyMWFmYjgyZTU5NGUyMTlhMGI0NDBkNGQuLmZmNmQxNDFmZTNkODljYTk1YjUwZDU4
ZDc3ZGU0Njk2YTJjNTZkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTA3LDcg
KzEwNyw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50IHsKICAgICB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVu
dHMoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVu
dFJlZGlyZWN0KCkgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJl
RGF0ZSkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
Y29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIGZpbmFsOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CiAgICAgdm9pZCBk
aXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKQEAgLTE1OSw4ICsxNTks
OCBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudCB7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKSBm
aW5hbDsKIAogICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIGZpbmFsOwotICAg
IHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgV2ViQ29yZTo6VVJMJikgZmluYWw7Ci0gICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFsOworICAgIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikg
ZmluYWw7CisgICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0Vu
dGlyZVBhZ2UpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKSBmaW5hbDsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBib29sIHNob3Vs
ZEZhbGxCYWNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIAotICAgIFdU
Rjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBXVEY6
OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgZmluYWw7CiAgICAgCiAgICAgdm9pZCBzYXZl
UGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIGZpbmFsOwog
ICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNh
Y2hlZEZyYW1lKikgZmluYWw7CkBAIC0yMDYsMzAgKzIwNiwzMCBAQCBjbGFzcyBXZWJGcmFtZUxv
YWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgUmVm
PFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIGZp
bmFsOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXImKSBmaW5hbCB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIHZv
aWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVS
TCYpIGZpbmFsOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZy
YW1lT3duZXJFbGVtZW50JiwKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1l
KGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVP
d25lckVsZW1lbnQmLAogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wg
YWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIGZpbmFs
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpV
UkwmLAorICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBVUkwmLAog
ICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCByZWNyZWF0
ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0RGF0YVRv
UGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAg
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAg
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBj
b25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9s
aWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
YmFzZVVSTCwKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYs
IGNvbnN0IFVSTCYgYmFzZVVSTCwKICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYg
cGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIGZpbmFs
OwogICAgIAotICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBl
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7
CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3Qg
VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbDsKICAgICBXVEY6OlN0cmlu
ZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIAogICAgIHZvaWQgZGlzcGF0
Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikg
ZmluYWw7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBzaG91bGRMb2FkTWVkaWFFbGVt
ZW50VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc2hvdWxk
TG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAg
ICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsg
cmV0dXJuIDA7IH0KQEAgLTI0Miw3ICsyNDIsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBSZWY8V2ViQ29y
ZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSBmaW5h
bDsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBXZWJDb3JlOjpVUkwm
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgVVJM
JikgY29uc3QgZmluYWw7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBSZWZQdHI8V2ViQ29y
ZTo6UHJldmlld0xvYWRlckNsaWVudD4gY3JlYXRlUHJldmlld0xvYWRlckNsaWVudChjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCmluZGV4IDI4MjEyNDI3MjMyZDIzMTkzYjI4MWNjMTVhZjIwYzIxYmQ5OWFm
NzUuLmVmZTlhMzRiYzViN2Y1OTUwZjcyY2JiZWYxYTlkMjUxZWZkYTk2MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKICAgICBXZWJWaWV3KiB2aWV3ID0gZ2V0
V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0g
Y29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IGJsYW5rVVJM
KCkpCisgICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IFdURjo6YmxhbmtVUkwoKSkK
ICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50LmgKaW5kZXggZmQ0Y2Q0YzRiMzZkOGJmZjRiY2U1N2JmMTVlZDZmODlmNGVjZDU4MC4u
MDc3ZDAxNGQzZTUzNWM3YThhYmIzNDY4ZTFkNjU0ZTlmZTliZTI3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29y
ZGluYXRvckNsaWUKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1l
bnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlu
a0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYp
IG92ZXJyaWRlOworICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0
b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRp
b24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdD
b250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRv
ckNsaWVudC5tbQppbmRleCAzMzQ5M2JkOWYxNjBiZGE4YWFjNWRhZmZmYTU5MmE1NjBmYTk5Mjgy
Li4zMGUwNmNhZjkzMWFlMDY2YzM2OWI3MzUxMTNkOWM0OGE3YmRjMGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZKQogCi0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogV2ViUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50OjpXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKQogewpAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6b3BlblBheW1lbnRTZXR1cChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLAogICAgIH0pOwogfQogCi1ib29sIFdlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudDo6c2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JikKK2Jvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpzaG93
UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiwgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggNzM5Yzk1MWY2YmQ3ZmY1NWYyOTkyYWRm
ZjNhNTA5YTZjZTEwMDU5NC4uNGVhMWFkZDNlMTIzN2UwMmU1MDA5YzExZmQ1YWI3ZTJhMmMzOTM4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBjbGFz
cyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVn
aWVzLCBwcml2YXRlIFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxv
YlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kK
LSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNv
cmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
KSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVDb29raWUoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKICNp
ZiBQTEFURk9STShJT1MpCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRl
Z2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29y
CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJD
b3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0
cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6
IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAgICAg
bG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9yIGNv
bG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6
OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVVJM
IHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAogICAgIGxvbmcg
d3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4g
dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCmluZGV4IGJkNzU4MWZhNTA0ODFjOTg5N2M5YTFmY2RkMzIxOTBmNjdmMDZiNDUuLmY1
MGIwZWIzYmM0NzBlYjkxMjg1YTA1ZmRkMmQ0ZDM0NDZlMjUxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0KQEAgLTIzOSw3ICsyMzksNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
bgogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZm
ZXIoaW5kZXgsIHR5cGUpOwogfQogCi1XZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcmIHRpdGxlKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVS
TEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5yZWFkVVJMKGluZGV4LCB0aXRsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5oCmluZGV4IGQxYWI1NTExODRjMGE1ZjY0OTk0MGQ4ZTkyN2JkODRlNTI5YzdmZjAuLjUyNWVl
MmZjZGVlYTE2YzVjNmY5ZGZlODEzNWVkN2QxYzVlYmJkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Q
cm92aWRlci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFdlYlBsdWdpbkluZm9Qcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5JbmZvUHJvdmlkZXIgewogcHJpdmF0ZToKICAg
ICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOwotICAgIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdl
JiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBVUkwmKSBm
aW5hbDsKIAogICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcigpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbklu
Zm9Qcm92aWRlci5tbQppbmRleCBlMzRlYzczZTU0ZmJkOTU0MTY4ZmZjYTU1MmU0ZjM2YmM5NWY1
NDRiLi5iMDZkYTZmMGYwYzM1N2IwMGJhODc0OTFjYjE3YmZkMmZhOTRlMzYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJv
dmlkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLm1tCkBAIC03NCw3ICs3NCw3IEBAIFZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oV2ViQ29yZTo6UGFn
ZSYgcGFnCiAgICAgcmV0dXJuIHBsdWdpbnM7CiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6
OlBhZ2UmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYpCitWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3Jl
OjpQYWdlJiBwYWdlLCBjb25zdCBVUkwmKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1
cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKICAg
ICByZXR1cm4gcGx1Z2luSW5mbyhwYWdlLCBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1
cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDRlNGMxM2RmYjczYWI2NGFlZTk3ZDdhMzczOTUxM2Fl
NDkyNDI5ZmMuLmQ5YTA3ZWVjNTc4MzMyNjkwOTY4YjQ3OTRkMTVmMjViZDc5NTExYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5
T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Rh
dGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNp
dGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaXNpdGVkTGlua1N0b3JlLmgKaW5kZXggYWVmNGZjNTJhYWU0MTJmM2U2YzRlY2Y0MDM5NWI0
M2U4N2NjOTQ2Yy4uMjBlZTUxODc5NDU1OTcyYWI0YjAzYzQ2MmFlMzFmMzk0OWVjOTEzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRl
ZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBXZWJWaXNpdGVk
TGlua1N0b3JlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RvcmUgewogcHJp
dmF0ZToKICAgICBXZWJWaXNpdGVkTGlua1N0b3JlKCk7CiAKLSAgICBib29sIGlzTGlua1Zpc2l0
ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJy
aWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hh
cmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQ
YWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBv
cHVsYXRlVmlzaXRlZExpbmtzSWZOZWVkZWQoV2ViQ29yZTo6UGFnZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDYxMTc5ZmY4
ODFlMzU1ODJjNTc5NjliNzY1ZGUzNjhhNjZjMjRiYTMuLjFlMjI1OTFiMDI3MjcyM2VkMjI5NDNk
Y2JjMjNhMjZmZTk1ZTJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTU1LDcgKzU1LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUv
TUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlVVJMUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01IVE1MLmg+
CkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV2ViUERGVmlld0lPUy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMzdiMzNjODEwODQw
MmJlY2Y3ZTU0NTcwNTZjNGQ2MzcxYzIyMDQ2Yi4uNzhiZDNkNDliOTBlNzllOTdjMzg4ZDA4Njc4
NTdjN2JlYWMwYTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCkBAIC0yNTA4LDcgKzI1MDgsNyBAQCAtICh2b2lkKV9sb2FkRGF0YTooTlNEYXRhICop
ZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOgogICAg
IGlmIChiYXNlVVJMKQogICAgICAgICBiYXNlVVJMID0gW2Jhc2VVUkwgYWJzb2x1dGVVUkxdOwog
ICAgIGVsc2UgewotICAgICAgICBiYXNlVVJMID0gYmxhbmtVUkwoKTsKKyAgICAgICAgYmFzZVVS
TCA9IFdURjo6YmxhbmtVUkwoKTsKICAgICAgICAgcmVzcG9uc2VVUkwgPSBjcmVhdGVVbmlxdWVX
ZWJEYXRhVVJMKCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmlu
ZGV4IDc1NGNjY2MxYWYyODA2NTU4Y2VmOTZiODhjYzZlNjg3MzNjYTIyYTYuLmY1MTRiODQwNTRj
MjFhOTM3M2JkZTdmNWI5YTQwMWQ4ZGVmYjM0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW0KQEAgLTI1NiwxNyArMjU2LDE3IEBAIC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1h
dGlvbkNvbnRyb2xsZXI+KV9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcgogICAgIE5TVVJMICp1
cmwgPSBfaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBOU1N0cmluZyAqYWJz
b2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICBpZiAodXJsICYmIF9o
aXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSkgewotICAgICAgICBpZiAocHJvdG9jb2xJcyhhYnNv
bHV0ZVVSTFN0cmluZywgIm1haWx0byIpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMo
YWJzb2x1dGVVUkxTdHJpbmcsICJtYWlsdG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBXZWJJ
bW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmlt
YXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAocHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgInRlbCIpKSB7CisgICAgICAgIGlm
IChXVEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJ0ZWwiKSkgewogICAgICAgICAg
ICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25UZWxMaW5rOwogICAgICAgICAgICAgcmV0dXJu
IFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0
ZVVSTFN0cmluZykpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShh
YnNvbHV0ZVVSTFN0cmluZykpIHsKICAgICAgICAgICAgIF90eXBlID0gV2ViSW1tZWRpYXRlQWN0
aW9uTGlua1ByZXZpZXc7CiAKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0g
cmFuZ2VPZkNvbnRlbnRzKCpfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4IGEwOTljNDZkZTcy
Njk3ZGNkZjk1M2YxYTQxYjliNzQwYzIwMDUwNGMuLjkwMDM4MmNmOGI4MDBlYjFkNTE1OTE4NWRl
MmYzODMzYjBjNjZlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlBERlZpZXcubW0KQEAgLTYyLDkgKzYyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogZXh0ZXJu
ICJDIiB7CiAgICAgYm9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3RoaW5nKENHQ29udGV4
dFJlZiBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IDg1YWZmYzFiY2EwZDg3ODMzYjQ0OTYyMmVhMWRh
YTMyYWEwYzY0OWEuLjVmY2Y5ZjZhZmUwNTFiYjJmN2NjZjEzZTMyN2I0NWE1NTY3ODhiZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdn
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1
Z2dlci5tbQpAQCAtMzksOCArMzksOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01XaW5kb3cu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRy
b2xsZXIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggMGU3YzVkN2U5MmUyOGIyZWZlNjJmYTdjZTNh
ZDkxMmE0N2YwOTNkOC4uYjYyZjJjMzUyYTNiMDFiZWUyNzgzMDhlOWI3ODllYTkwNWFlZjY0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlOwog
Y2xhc3MgUmVuZGVyQm94OwogY2xhc3MgVGV4dEluZGljYXRvcjsKLWNsYXNzIFVSTDsKIHN0cnVj
dCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXgg
NmFmMzE1MTMxNjUxOGEyY2Y1NjI4ODgxYjQ4NWMyMjMzMGNjODA5Ny4uNzQ3MWExMTZjNzMyZGJl
ZjhmZmYxMTBjM2QxMWJjMzZjODllOGI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKaW5kZXggNjZkZWU4YTQwNDYwZjkyNWM0
OGY1OWVmNzdkOGY5MzA0NjA2OGQ0Ny4uODIwYjYyMTM2YmM4Y2QwZDMxM2ZjYzA3NGZlYTNjYzVh
MmFlYzRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdI
ZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJz
LmgKQEAgLTMwLDE1ICszMCwxNCBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBJbnRSZWN0OwotICAg
IGNsYXNzIFVSTDsKK2NsYXNzIEludFJlY3Q7CiB9CiAKIGNsYXNzIE1hcnNoYWxsaW5nSGVscGVy
cwogewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgQlNUUlRvS1VSTChCU1RSKTsK
LSAgICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgc3Rh
dGljIFVSTCBCU1RSVG9LVVJMKEJTVFIpOworICAgIHN0YXRpYyBCU1RSIFVSTFRvQlNUUihjb25z
dCBVUkwmKTsKICAgICBzdGF0aWMgQ0ZVUkxSZWYgUGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNv
bnN0IFdURjo6U3RyaW5nJik7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIEZpbGVDRlVSTFJlZlRv
UGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKTsKICAgICBzdGF0aWMgQ0ZVUkxSZWYgQlNUUlRv
Q0ZVUkxSZWYoQlNUUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGYyNDM2MDNjZTY3MTVkOGYxZjA4OGRlYWYyOWFlMDA3
MWQ4ZTk0NjguLjljZGNjMTQ1YjcxOTk5Y2RhNjk4NDE0ZTUyZmUyMmMzN2E4OTdiODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3Bw
CkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXgg
MDEzNzA4ZWJkNzFmOTgzNzA1NDlhNDQ2NDExYmZhNGM3ZmQ5MzBhZC4uYWNjMGUxZmJhNzQ2NDI5
NDQxYmI5YWQ2NGZkYmNlMjUwZDJkYjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFz
cyBJbnRTaXplOwotICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVu
dDsKICAgICBjbGFzcyBQbHVnaW5QYWNrYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4IGMzZTQ5ZjQ0MTk2
NTQ2MTBlZmQ0ZGM1ZjVlYmQ5YWIwOTFjMDZlMTUuLjgxNGUyYmI2ZGMzOTFmYzJmZmExYTk1YjY5
ZTQ2ZDQ1ODBjMDM2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRl
ICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XaW5k
b3dzRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCmlu
ZGV4IGY2MjhjY2QzZDVhNDU5MjZlNTM3MDM1MmQ4NmRjOWE3NTM1NThlNzEuLmMxYjlmODdhYzRl
NjIyZmJiMmUyZTIwNWQxNjQ1OWMwYzE5NGU3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGI0ZTkxZjZlMTJiM2Ji
OWIyYTM5ZDhiYThmMDJhOTQyMDQwNWJkMzAuLjdjZmM3YTlhODJlNzJjOTEyZjVkYjk5OWNmYjM3
YmY5Y2YxYTlmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCkBAIC02MCw3ICs2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBI
VE1MUGx1Z0luRWxlbWVudDsKICAgICBjbGFzcyBLZXlib2FyZEV2ZW50OwogICAgIGNsYXNzIE1v
dXNlRXZlbnQ7Ci0gICAgY2xhc3MgVVJMOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgIGNsYXNzIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW47CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oCmluZGV4IDIwM2QxNTY1ZTI1ODYxNzNjYTI1NjFhNTQ1YTM4ZTYwZTc1
YzhkODIuLmM5ZGU0OWIzY2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkxNThiZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVu
dUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7CiAKICAgICB2aXJ0
dWFsIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb3du
bG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRV
UkwoY29uc3QgVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3Qg
V2ViQ29yZTo6RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdl
YkNvcmU6OkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFdURjo6U3RyaW5n
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCmlu
ZGV4IDY0MzUwNzY3ZjkzNDAyNmQwOWMwZmE4Yjg4ZGNjZGQzODk0MmVkMDcuLmNjMDM4Y2VmZDkx
NWY0NTE2ZDU4N2JhZjEwOWE1YWQ2NDdhMjAxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0
b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAi
V2ViVmlldy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0Rl
bGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNr
dG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKaW5kZXggZjBmMWQ5MmYyZGIyNWI3NDQyODc3NTI0
NjJhZmJhNGJjMWQxYzdmMS4uODI5NmM4Y2NiNjg4N2QzNDU0OGQ1YTY0YzY4Njc3MjZhNzQ2MDc3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaApAQCAt
MzgsNyArMzgsNiBAQCBpbnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgVVJMOwogfQog
CiBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlIDogcHVibGljIFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzOWNk
MWMxNjc5YWRkZDIwNWJiMDdlODNmYTY5MjA5ODUzMjg1NzM2Li4zMmE5ZjBiYzMxNDAyOTkxYjg5
MjQ5ODAyNzk1NjNkZGUyMjg4OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTg1
LDcgKzg1LDcgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjoKICAgICB2b2lkIGRpc3BhdGNoRGlk
RGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91
YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNw
YXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFs
LCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZUxvY2F0aW9uV2l0aGluUGFnZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQdXNo
U3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VT
dGF0ZVdpdGhpblBhZ2UoKSBvdmVycmlkZTsKQEAgLTE0MCw4ICsxNDAsOCBAQCBjbGFzcyBXZWJG
cmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVi
bGljIFdlYkNvcmU6OgogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYs
IGNvbnN0IFVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYs
IGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikg
b3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CkBAIC0xNTQsMTIgKzE1NCwxMiBA
QCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAgYm9vbCBzaG91bGRGYWxsQmFjayhjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0cmluZyB1
c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgV1RGOjpTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAgICAgUmVmPFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBv
dmVycmlkZSB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0
aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3Jl
OjpDYWNoZWRGcmFtZSopIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVk
RnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgb3ZlcnJpZGU7CkBAIC0xODUs
MTUgKzE4NSwxNSBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAgYm9vbCBjYW5DYWNo
ZVBhZ2UoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3Jl
YXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCYsCisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1l
PiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29y
ZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJl
ZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2lu
SGVpZ2h0KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Jiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5
KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3Qg
VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlIHsgfQogICAg
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Jikgb3ZlcnJpZGU7CiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIG92ZXJyaWRlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcykgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpP
YmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6Ok9iamVj
dENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3Ry
aW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7CiAgICAgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5
cGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDBjNGZiMDQyNGQwMWVhMTE1ZDI3ZWNlNzJlMTkwMzg3
NmU1YzFlNTkuLmJlMjRjYjhhNTY4NTljZDQzY2UxOWYwYTE3YmJmODFkYTdjOTlmMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00NSwxMSArNDUsMTEgQEAgY2xhc3MgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJp
dmF0ZSBXZWJDb3IKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxv
YlJlZ2lzdHJ5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2ll
cykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJik7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFN0cmluZyYpOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCAxYTQ1YWI4ZGUyODIzN2Nm
ZGViNmYzOWRlMGYxNzRlZWI1ZDgyM2VmLi5kMzEwZDI5MTAwODcwMDllODliYWZlZjVmMGUwMTI3
NjE5NGRkZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6
cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWcKICAgICByZXR1cm4gb3V0UGx1Z2luczsKIH0K
IAotVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2Vi
VmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6VVJM
JikKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6Ondl
YlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYpCiB7CiAg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cj4+IHN1cHBvcnRlZFBsdWdpbk5hbWVzOwogICAgIHJldHVybiBwbHVnaW5JbmZvKHBhZ2UsIHN1
cHBvcnRlZFBsdWdpbk5hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5kZXggODAx
YmNiN2I0NjJkY2NkZGZjNzY1MmI2NGFmMDZmODYwZmZjNTVmYi4uMTBmNzY2ZTA2MDQ0ZDE1OWIw
YTFjZDkzOTQ5MjFlNzYxMmQ1NzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAg
LTM3LDcgKzM3LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiBwcml2YXRlOgogICAgIHZvaWQgcmVmcmVz
aFBsdWdpbnMoKSBmaW5hbDsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lu
SW5mbyhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9y
dGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwgY29uc3QgV2ViQ29y
ZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2li
bGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwgY29uc3QgVVJMJikgZmluYWw7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYg
YnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKSBmaW5hbDsKICAg
ICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5r
U3RvcmUuaAppbmRleCA2YTdiOTkyMmMzYTM5MTUyMmMzZGEwNDdlNGEwNjk3M2I0MDRkMTEwLi44
YmVkZTllMjU4MTkxODMyMDI3MGVhYjY1Mjc0YTdhOTA2ZGI1OGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExp
bmtTdG9yZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdlYlZpc2l0ZWRMaW5rU3RvcmUgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZSB7CiBwcml2YXRlOgogICAgIFdl
YlZpc2l0ZWRMaW5rU3RvcmUoKTsKIAotICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQ
YWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNl
VVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNo
LCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBv
dmVycmlkZTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3Jl
OjpTaGFyZWRTdHJpbmdIYXNoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcG9wdWxhdGVWaXNpdGVk
TGlua3NJZk5lZWRlZChXZWJDb3JlOjpQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFTb3VyY2UuY3BwCmluZGV4IGE2ODJjNjI3NTBlMTFmNTIxNTY3MjFmM2Q4MjgyZDU3ZTBm
ODA2ZDIuLmI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuaAppbmRleCA4NDg4NWYyNGZiODM0YTJkZmNh
ODJlZWI3OWUxOWM3MTkxMDRhNDcyLi40ZjYxMTFlMjNiMmMyZTA3ZTBhZTRhZmFkNThlYTUwZWQx
YTMyYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmgKQEAgLTM4LDcgKzM4
LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgVVJMOwogICAg
IGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNTIsMTMgKzUxLDEzIEBAIGNsYXNzIFdlYkRvd25s
b2FkCiAjZW5kaWYKIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUlu
c3RhbmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAg
c3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJbnN0YW5jZShjb25zdCBVUkwmLCBJV2ViRG93bmxv
YWREZWxlZ2F0ZSopOwogICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRlSW5zdGFuY2UoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsK
ICAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKCk7CiBwcml2YXRlOgogICAg
IFdlYkRvd25sb2FkKCk7CiAgICAgdm9pZCBpbml0KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7Ci0gICAgdm9pZCBpbml0KGNvbnN0IFdl
YkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAgdm9pZCBpbml0KGNvbnN0
IFVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CiAgICAgfldlYkRvd25sb2FkKCk7CiBwdWJs
aWM6CiAgICAgLy8gSVVua25vd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJF
bGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IGNkZjhjYWQ2YTM2OTZlZWJhY2U2MmY0ZTU3ODRj
ZWU0YmVmMWQ5ZTkuLjI3YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQwZTFhYzUwYWQ3MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNw
cApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9i
amVjdC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IGRiZWE2OThhNTc1MDIxMmE1MDY1
MGU3ODM5MTY5ZDBhNWUxYjM3NTQuLmM0ZDA4MzYyZGFkNWU4MzkzZThkZmY4MzFjMjU5ODFhMmM3
N2ZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtMzQsOSArMzQsOSBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHNhbC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBjbGFzcyBE
RUNMU1BFQ19VVUlEKCJ7QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQwRTYzNTFEfSIpIFdl
YkZyYW1lIDogcHVibGljCiAgICAgSFJFU1VMVCBtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGNv
bnN0IEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElET01FbGVtZW50KiBhZ2FpbnN0RWxlbWVu
dCwgQlNUUiogcmVzdWx0KTsKICAgICBIUkVTVUxUIGNhblByb3ZpZGVEb2N1bWVudFNvdXJjZShi
b29sKiByZXN1bHQpOwogCi0gICAgV2ViQ29yZTo6VVJMIHVybCgpIGNvbnN0OworICAgIFVSTCB1
cmwoKSBjb25zdDsKIAogICAgIFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsKICAgICB2b2lkIHNl
dFdlYlZpZXcoV2ViVmlldyopOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIERFQ0xTUEVDX1VV
SUQoIntBMzY3NjM5OC00NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgOiBw
dWJsaWMKICAgICBjbGFzcyBXZWJGcmFtZVByaXZhdGU7CiAgICAgV2ViRnJhbWVQcml2YXRlKiBk
OwogICAgIGJvb2wgbV9xdWlja1JlZGlyZWN0Q29taW5nIHsgZmFsc2UgfTsKLSAgICBXZWJDb3Jl
OjpVUkwgbV9vcmlnaW5hbFJlcXVlc3RVUkw7CisgICAgVVJMIG1fb3JpZ2luYWxSZXF1ZXN0VVJM
OwogICAgIGJvb2wgbV9pblByaW50aW5nTW9kZSB7IGZhbHNlIH07CiAKICAgICBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4gbV9wYWdlUmVjdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwCmluZGV4IDIyYjA4NDZhOTA2Yjc4Mjg2NTZiOGQ5NTdjMTBhMGRmYWZmOGIzMDEuLjAy
MzM4NGNlOTZmMTA5NDljZGQ1OWY3NzRhODE0NWViYmVhN2I3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAKICNpbmNsdWRlICJXZWJW
aXNpdGVkTGlua1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
aXN0b3J5LmgKaW5kZXggMTdhZmY5MjgyN2QxZDEwOWI1M2U5Y2RjYzZjZTQ5YzhiZTNlNzBlNS4u
NjkzNzRkZjAyMDFkODk4Zjc3ZDZiMTIxOThjNjc1ZGNlNDgxODA4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuaApAQCAtMzMsOCArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBVUkw7Ci0gICAgY2xhc3Mg
UGFnZUdyb3VwOworY2xhc3MgUGFnZUdyb3VwOwogfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC03OCw3ICs3Nyw3IEBAIGNsYXNzIFdlYkhpc3RvcnkgOiBwdWJsaWMgSVdlYkhpc3Rvcnks
IHB1YmxpYyBJV2ViSGlzdG9yeVByaXZhdGUgewogCiAgICAgLy8gV2ViSGlzdG9yeQogICAgIHN0
YXRpYyBXZWJIaXN0b3J5KiBzaGFyZWRIaXN0b3J5KCk7Ci0gICAgdm9pZCB2aXNpdGVkVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV1RGOjpT
dHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9vbCBpbmNyZWFzZVZpc2l0Q291
bnQpOworICAgIHZvaWQgdmlzaXRlZFVSTChjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYg
dGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1cmUsIGJv
b2wgaW5jcmVhc2VWaXNpdENvdW50KTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rc1RvVmlzaXRl
ZExpbmtTdG9yZShXZWJWaXNpdGVkTGlua1N0b3JlJik7CiAKICAgICBDT01QdHI8SVdlYkhpc3Rv
cnlJdGVtPiBpdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggODQzNzYyMDFkMDdl
YjNmZWY1ZWIyZDlhNzIxNzZkMzE3Zjk5MTIyZS4uYTg1NTlhNWZkMjI3Y2JkMmIxN2VhZjI4NWVh
NjM5NWVhZmY4YTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlz
dG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVt
LmNwcApAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
Y3BwCmluZGV4IGIyOTJkZGU3ZGNjZWY2MmZjYTczYjBjNGNiNGJhYjJhZGM1YmZmYjAuLjgxODBk
YmUwNGY2ZTIwNmU4NTM5OGM2MjlhNzY5ZTgzNmU3YzY0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIC8vIFdlYlJlc291cmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZWJSZXNvdXJjZTo6V2Vi
UmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpCitXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2Uo
SVN0cmVhbSogZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5n
JiBmcmFtZU5hbWUpCiAgICAgOiBtX2RhdGEoZGF0YSkKICAgICAsIG1fdXJsKHVybCkKICAgICAs
IG1fbWltZVR5cGUobWltZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApp
bmRleCBiOGM3ZGNjYjAzNzQ5YWI3ODczZTM3ZmZhMjlmMjUyYzY1M2JlYmE1Li4wMmQ2NzM1YWI3
MzU4NDg4NzRlZmYxOTM0ODgyZGY1OGM0ZWYzYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlJlc291cmNlLmgKQEAgLTI4LDE3ICsyOCwxNyBAQAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogY2xhc3MgV2ViUmVzb3VyY2Ug
OiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUmVzb3VyY2Uq
IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIHByb3RlY3RlZDoKLSAgICBXZWJSZXNvdXJjZShJ
U3RyZWFtKiBkYXRhLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RG
OjpTdHJpbmcmIGZyYW1lTmFtZSk7CisgICAgV2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpOwogICAg
IH5XZWJSZXNvdXJjZSgpOwogCiBwdWJsaWM6CkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIFdlYlJl
c291cmNlIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwcml2YXRlOgogICAgIFVMT05HIG1fcmVm
Q291bnQgeyAwIH07CiAgICAgQ09NUHRyPElTdHJlYW0+IG1fZGF0YTsKLSAgICBXZWJDb3JlOjpV
UkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFdURjo6U3RyaW5nIG1fbWltZVR5cGU7CiAg
ICAgV1RGOjpTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgIFdURjo6U3RyaW5nIG1fZnJh
bWVOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlP
cmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3Bw
CmluZGV4IDgxYjI2OWZjNDIwYzU5Y2M2ZWY1ZDk5MmZjNzZjYzQ5YjBlYTBmYjguLjk0NWI4Njky
M2Y2YjFmY2E3ZDBiNDc3N2YwY2QwNjAwMjQ2YTEwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXgg
NDU3NmMyMjI1YzgzNTdmMzA2NzA2NzNjMTg4MDVkMzM4ZjQ4MmJiNC4uN2RhMTU1OGJiNDU3ZDky
MWQyNGNhM2I1Y2M3NWU2ZTEwYTdlNjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTFJlc3BvbnNlLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiAjZW5kaWYKIAogI2luY2x1ZGUg
PFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhh
bmRsZS5oPgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNs
dWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9u
c2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBu
ZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBp
dCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1f
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVSTCh7IH0sICJodHRwOi8vIiks
IFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNv
dXJjZVJlc3BvbnNlKFVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7
CiAgICAgaW5zdGFuY2UtPkFkZFJlZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
CmluZGV4IGJkMTI2NzU4YTUxY2MzNTM4ZjlhYzk1MzdjZmIxZmM3ZGZkYWUzODguLjQ4MTIzODQ3
MTNjOGI5OWRhNWNiYTViNjNmMjU0NDQ5ZmU1MGM2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjgsNyArMjgs
NyBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKaW5kZXgg
M2NmZDY2NzY4ZWIzMjdhZWFkYzdhMDllNGQyN2NlYTI0OTQ4ZmQ3ZS4uMWI3MmJiZTgyNzM0Y2U4
MzM2MmE3MmM5MGVjMmI4ZjA2ZTU4ZmY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApA
QCAtNDYzLDcgKzQ2Myw3IEBAIGNsYXNzIFdlYlZpZXcKIAogICAgIC8vIENvbnZlbmllbnQgdG8g
YmUgYWJsZSB0byB2aW9sYXRlIHRoZSBydWxlcyBvZiBDT00gaGVyZSBmb3IgZWFzeSBtb3ZlbWVu
dCB0byB0aGUgZnJhbWUuCiAgICAgV2ViRnJhbWUqIHRvcExldmVsRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX21haW5GcmFtZTsgfQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiB1c2VyQWdlbnRGb3JL
VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKTsKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdXNl
ckFnZW50Rm9yS1VSTChjb25zdCBVUkwmIHVybCk7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5IYW5k
bGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBAIC01MDIsNyAr
NTAyLDcgQEAgY2xhc3MgV2ViVmlldwogICAgIGJvb2wgb25HZXRPYmplY3QoV1BBUkFNLCBMUEFS
QU0sIExSRVNVTFQmKSBjb25zdDsKICAgICBzdGF0aWMgU1RETUVUSE9ESU1QIEFjY2Vzc2libGVP
YmplY3RGcm9tV2luZG93KEhXTkQsIERXT1JEIG9iamVjdElELCBSRUZJSUQsIHZvaWQqKiBwcE9i
amVjdCk7CiAKLSAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAg
IHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJik7CiAKICAgICB2b2lkIGZsdXNoUGVuZGluZ0dy
YXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpOwogICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllciopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGNjYzdkNzc1MGQzNzk4OTk1YjgwZjliZTFlNGExZTMwM2JkOTcw
ZmEuLmU0ZGNhOTMxNzQ0NjEzNTk2MDFhMTMxMzk2MmU1MmE3YzdkYmJjMjIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAor
MjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9VUkwuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlVVJMKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpj
aGVja1VSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1t
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6b3JpZ2luYWxEYXRhQXNTdHJpbmcpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6bGl0ZXJhbFVSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRBbHRlcm5hdGVIVE1MU3Ry
aW5nLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW06CisgICAgICAgIChsaXRlcmFsVVJM
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1h
bmFnZXIuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlk
VVJMUmVxdWVzdC5tbToKKyAgICAgICAgKC1bTG9hZEludmFsaWRVUkxXZWJGcmFtZUxvYWREZWxl
Z2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6Zm9yRnJhbWU6XSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5R2VuZXJhdG9yLm1tOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcDoKKwog
MjAxOC0xMC0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV2ViS2l0Ml0gRm9ybWF0ID4gQm9sZCBhbmQgRm9ybWF0ID4gSXRhbGljIGRvbid0IHRv
Z2dsZSBiZXR3ZWVuIGJvbGQgYW5kIGl0YWxpYyBzdHlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggNThl
NjlkMGRmNjMwNTk3YTEwZGIyZTljOTZhMmQ4ZGRjZGFhN2M2OS4uMTg4YjhiZGUwYzVmMzQ5ZWRj
OWY0MjVjZjkwODNjYzc3NjhkMDcwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC0zOCwxMCArMzgsMTAg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL05GQS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTkZBVG9ERkEu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZEluZm8uaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMRmlsdGVyUGFyc2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBiOTI4MzI0ZjM1OThkZGI0NjE3
YTFkZWViODgyNjM2MGM2NWE0MjA1Li5hYWQxNmI4NjA0MTc5Y2E0M2E5NzczNzk1ODU0YjU3NTc3
M2FmYzlhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJXVEZTdHJpbmdV
dGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9VUkwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5j
cHAKaW5kZXggNzM1MzRjODE3MzNlYmE0NTJmMzJmZDlmODIxNzFiYTliYTU0YjZiYi4uZGMzMWI0
N2JkMDc4NjhhZWRjYWZmOTdmNTY1NmQ4M2Y3ODlkODMyMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKQEAgLTI1LDExICsyNSw5IEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCkBAIC03Myw4ICs3MSw3IEBAIFRFU1RfRihVUkxUZXN0LCBVUkxDb25zdHJ1Y3Rv
ckNvbnN0Q2hhcikKIAogc3RhdGljIFVSTCBjcmVhdGVVUkwoY29uc3QgY2hhciogdXJsQXNTdHJp
bmcpCiB7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxBc1N0cmluZyk7Ci0gICAgcmV0dXJuIHBh
cnNlci5yZXN1bHQoKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgdXJsQXNTdHJpbmcpOwogfTsKIAog
VEVTVF9GKFVSTFRlc3QsIFVSTFByb3RvY29sSG9zdEFuZFBvcnQpCkBAIC0zMTcsMjAgKzMxNCwy
MCBAQCBURVNUX0YoVVJMVGVzdCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpCiAKIFRF
U1RfRihVUkxUZXN0LCBQcm90b2NvbElzSW5IVFRQRmFtaWx5KQogewotICAgIEVYUEVDVF9GQUxT
RShwcm90b2NvbElzSW5IVFRQRmFtaWx5KHt9KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29s
SXNJbkhUVFBGYW1pbHkoIiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZh
bWlseSgiYSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWIi
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiYyIpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZCIpKTsKLSAgICBFWFBF
Q1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZGUiKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlZiIpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZGVmZyIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90
b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwOiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgiaHR0cCIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCJodHRwczoiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoImh0dHBzIikpOwotICAgIEVYUEVDVF9UUlVFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0
dHBzOi8vIUAjJCVeJiooKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5I
VFRQRmFtaWx5KHsgfSkpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoIiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5
KCJhIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFi
IikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiYyIp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNkIikp
OworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlIikp
OworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlZiIp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNkZWZn
IikpOworICAgIEVYUEVDVF9UUlVFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cDoi
KSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cCIp
KTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzOiIp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwcyIp
KTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzOi8v
IUAjJCVeJiooKSIpKTsKIH0KIAogVEVTVF9GKFVSTFRlc3QsIEhvc3RJc0lQQWRkcmVzcykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKaW5kZXgg
M2UxMDU5MmEwM2QwYWIwMWUyYzE2NmE0NTNlYWFlZWMxZmEwMzljMS4uMWM0ZGNkZDA1ZTIxZDdi
NWZkN2FiN2RmZTg1ZDhmMDVjMWFjOGE3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1RleHRFbmNvZGluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYQogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogCi0gICAgRVhQ
RUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CisgICAg
RVhQRUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwp
KTsKIAogICAgIGlmICh0ZXN0VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAgICAgIHJldHVybjsK
QEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogICAgIAotICAgIEVY
UEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOworICAg
IEVYUEVDVF9UUlVFKFdURjo6VVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJs
KSk7CiAgICAgCiAgICAgaWYgKHRlc3RUYWJzID09IFRlc3RUYWJzOjpObykKICAgICAgICAgcmV0
dXJuOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVyZW5jZXMo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnN0cmluZywgdXJsLnN0cmluZygpKSk7CiAg
ICAgCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQo
dXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29u
c2lzdGVudCh1cmwpKTsKICAgICAKICAgICBpZiAodGVzdFRhYnMgPT0gVGVzdFRhYnM6Ok5vKQog
ICAgICAgICByZXR1cm47CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxh
dGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGIKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRl
bnRpZmllcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuc3RyaW5nLCB1cmwuc3Ry
aW5nKCkpKTsKICAgICAKLSAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6OmludGVybmFsVmFsdWVz
Q29uc2lzdGVudCh1cmwpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OlVSTFBhcnNlcjo6aW50ZXJu
YWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwogICAgIAogICAgIGlmICh0ZXN0VGFicyA9PSBUZXN0
VGFiczo6Tm8pCiAgICAgICAgIHJldHVybjsKQEAgLTIxMyw4ICsyMTMsNyBAQCBzdGF0aWMgdm9p
ZCBzaG91bGRGYWlsKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VT
dHJpbmcpCiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywg
VGVzdFRhYnMgdGVzdFRhYnMgPSBUZXN0VGFiczo6WWVzKQogewotICAgIFVSTFBhcnNlciBwYXJz
ZXIodXJsU3RyaW5nLCB7IH0sIGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9IHBhcnNlci5yZXN1
bHQoKTsKKyAgICBhdXRvIHVybCA9IFVSTCh7IH0sIHVybFN0cmluZywgZW5jb2RpbmcpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwpAQCAtMjM4LDkgKzIzNyw3IEBAIHN0YXRp
YyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2Rp
bmcqIGVuY29kaW5nLCBjb25zCiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IFRleHRFbmNvZGlu
ZyogZW5jb2RpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGFicyB0ZXN0VGFi
cyA9IFRlc3RUYWJzOjpZZXMpCiB7Ci0gICAgVVJMUGFyc2VyIGJhc2VQYXJzZXIoYmFzZVVSTFN0
cmluZywgeyB9LCBlbmNvZGluZyk7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxTdHJpbmcsIGJh
c2VQYXJzZXIucmVzdWx0KCksIGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9IHBhcnNlci5yZXN1
bHQoKTsKKyAgICBhdXRvIHVybCA9IFVSTChVUkwoeyB9LCBiYXNlVVJMU3RyaW5nKSwgdXJsU3Ry
aW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5w
cm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtz
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3Mu
Y3BwCmluZGV4IDRjODAzMmI5MzZjZmUzYTU5MWYyMDJlZjBlMGVhMWRmMGVmN2Q3YjcuLjBjNWU2
Mzc3OWJhN2UwMWZhNjg5YjcwOWQzYWY3ZmU1MThmNzAwNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0yNSw4
ICsyNSw4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
CmluZGV4IDc2YjEwMzU3NWNhNDI1Y2UzZmU1OGRhMzEzNmIwZWVjMGQ2ZDNmMWUuLjMwMGIxM2Ni
Y2ExMGMyMWIzMDdlZWUzMTE0ZGUwMGZiZjBmZTAyZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuY3BwCkBAIC0yNCw5ICsyNCw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tCmluZGV4IDZmZmQ3ZGFj
YjNmYzAyMTJhNDA0ZDg1NmIzMThjOTM2OWY4OWZlOTYuLmI2NDBiMTBiZmYyZjAxOWI3MjcyNDNh
N2M2MDA4NTFhZGFmZDc1ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1VSTEV4dHJhcy5tbQpAQCAtMjUsOCArMjUsOCBAQAogCiAjaW1wb3J0
ICJjb25maWcuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNp
bXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKQEAgLTUwLDE3ICs1MCwxNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZGF0YUFzU3RyaW5nKE5T
RGF0YSAqZGF0YSkKIAogc3RhdGljIGNvbnN0IGNoYXIqIG9yaWdpbmFsRGF0YUFzU3RyaW5nKE5T
VVJMICpVUkwpCiB7Ci0gICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXZWJDb3JlOjpvcmlnaW5hbFVS
TERhdGEoVVJMKSk7CisgICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXVEY6Om9yaWdpbmFsVVJMRGF0
YShVUkwpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJWaXNpYmxlU3RyaW5nKE5TVVJM
ICpVUkwpCiB7Ci0gICAgcmV0dXJuIFtXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyhVUkwpIFVU
RjhTdHJpbmddOworICAgIHJldHVybiBbV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhVUkwpIFVURjhT
dHJpbmddOwogfQogCiBzdGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29uc3QgY2hhciogbGl0ZXJh
bCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEobGl0ZXJhbEFzRGF0YShsaXRl
cmFsKSwgbmlsKTsKKyAgICByZXR1cm4gV1RGOjpVUkxXaXRoRGF0YShsaXRlcmFsQXNEYXRhKGxp
dGVyYWwpLCBuaWwpOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhcykKQEAgLTEyNyw4ICsx
MjcsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19EaXZpc2lvblNpZ24pCiAgICAgLy8gU2Vs
ZWN0ZWQgdGhlIGRpdmlzaW9uIHNpZ24gYXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1BU0NJSSBjaGFy
YWN0ZXIgdGhhdCBpcyBhbGxvd2VkIGluIGhvc3QgbmFtZXMsIHNpbmNlIGl0J3MgYSBsb29rYWxp
a2UgY2hhcmFjdGVyLgogCiAgICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1c2Vk
IHdoZW4gdHlwaW5nIGluIGEgVVJMLgotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUueG4t
LWNvbW90aGVyc2l0ZS1ramIub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV2ViQ29yZTo6VVJM
V2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9y
ZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3Ro
ZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRT
dHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS54bi0tY29tb3RoZXJzaXRlLWtqYi5vcmciLCBv
cmlnaW5hbERhdGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v
c2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVR
KCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmlu
ZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290
aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhl
IG9uZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4K
ICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIs
IG9yaWdpbmFsRGF0YUFzU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3
b3RoZXJzaXRlLm9yZyIpKSk7CkBAIC0xMzcsMTcgKzEzNywxNyBAQCBURVNUKFdlYkNvcmUsIFVS
TEV4dHJhc19EaXZpc2lvblNpZ24pCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21c
eEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRlcmFsVVJMKCJodHRw
Oi8vc2l0ZS5jb20lQzMlQjdvdGhlcnNpdGUub3JnIikpKTsKIAogICAgIC8vIFNlcGFyYXRlIGZ1
bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1lIG9uIGl0cyBvd24uCi0gICAg
RVhQRUNUX1NUUkVRKCJzaXRlLnhuLS1jb21vdGhlcnNpdGUta2piLm9yZyIsIFtXZWJDb3JlOjpl
bmNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIikgVVRGOFN0cmlu
Z10pOwotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBb
V2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIp
IFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUueG4tLWNvbW90aGVyc2l0ZS1r
amIub3JnIiwgW1dURjo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRl
Lm9yZyIpIFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tXHhDM1x4Qjdv
dGhlcnNpdGUub3JnIiwgW1dURjo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3Ro
ZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAotVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNf
U29saWR1cykKK1RFU1QoV1RGLCBVUkxFeHRyYXNfU29saWR1cykKIHsKICAgICAvLyBTZWxlY3Rl
ZCBmdWxsIHdpZHRoIHNvbGlkdXMsIHdoaWNoIGxvb2tzIGxpa2UgdGhlIHNvbGlkdXMsIHdoaWNo
IGlzIHRoZSBjaGFyYWN0ZXIgdGhhdCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgaG9zdCBuYW1l
LgogCiAgICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1c2VkIHdoZW4gdHlwaW5n
IGluIGEgVVJMLgotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tL290aGVyc2l0ZS5v
cmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5n
KEAiaHR0cDovL3NpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAg
ICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgdXNlclZpc2li
bGVTdHJpbmcoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNv
bVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJo
dHRwOi8vc2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKFdURjo6
VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVy
c2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20vb3Ro
ZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmlu
ZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAK
ICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBmb3Vu
ZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6
Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmlu
ZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikp
KTsKQEAgLTE1Niw4ICsxNTYsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19Tb2xpZHVzKQog
ICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJUVGJUJDJThGb3RoZXJzaXRlLm9yZyIs
IHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVFRiVCQyU4Rm90
aGVyc2l0ZS5vcmciKSkpOwogCiAgICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25zIHRoYXQgZGVhbCB3
aXRoIGp1c3QgYSBob3N0IG5hbWUgb24gaXRzIG93bi4KLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUu
Y29tL290aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4
RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7Ci0gICAgRVhQRUNUX1NUUkVR
KCJzaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhvc3ROYW1lKEAic2l0
ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVD
VF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmVuY29kZUhvc3ROYW1lKEAi
c2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVY
UEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmRlY29kZUhvc3ROYW1l
KEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwogfQog
CiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKQEAgLTE2NSw4ICsxNjUsOCBAQCBURVNU
KFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKICAgICAvLyBTZWxlY3RlZCBpZGVvZ3JhcGhpYyBz
cGFjZSwgd2hpY2ggbG9va3MgbGlrZSB0aGUgQVNDSUkgc3BhY2UsIHdoaWNoIGlzIG5vdCBhbGxv
d2VkIHVuZXNjYXBlZC4KIAogICAgIC8vIENvZGUgcGF0aCBzaW1pbGFyIHRvIHRoZSBvbmUgdXNl
ZCB3aGVuIHR5cGluZyBpbiBhIFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNv
bSUyMG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXZWJDb3JlOjpVUkxXaXRo
VXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9y
ZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0
ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5n
KEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCBvcmlnaW5h
bERhdGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5j
b21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9TVFJFUSgi
aHR0cDovL3NpdGUuY29tJTIwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdURjo6
VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVy
c2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9u
ZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KICAg
ICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmci
LCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb21ceEUzXHg4
MFx4ODBvdGhlcnNpdGUub3JnIikpKTsKQEAgLTE3NSwzMSArMTc1LDMxIEBAIFRFU1QoV2ViQ29y
ZSwgVVJMRXh0cmFzX1NwYWNlKQogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJUUz
JTgwJTgwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6
Ly9zaXRlLmNvbSVFMyU4MCU4MG90aGVyc2l0ZS5vcmciKSkpOwogCiAgICAgLy8gU2VwYXJhdGUg
ZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5hbWUgb24gaXRzIG93bi4KLSAg
ICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tIG90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZW5jb2Rl
SG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5n
XSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmci
LCBbV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0
ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbSBvdGhlcnNp
dGUub3JnIiwgW1dURjo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVy
c2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbVx4RTNc
eDgwXHg4MG90aGVyc2l0ZS5vcmciLCBbV1RGOjpkZWNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhF
M1x4ODBceDgwb3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAogVEVTVChXZWJDb3Jl
LCBVUkxFeHRyYXNfRmlsZSkKIHsKLSAgICBFWFBFQ1RfU1RSRVEoImZpbGU6Ly8vJUUyJTk4JTgz
IiwgW1tXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTovLy/imIMiLCBuaWwp
IGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJmaWxlOi8v
LyVFMiU5OCU4MyIsIFtbV1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTovLy/imIMi
LCBuaWwpIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSk7CiB9CiAKIFRFU1QoV2ViQ29yZSwg
VVJMRXh0cmFzX1BhcnNpbmdFcnJvcikKIHsKICAgICAvLyBFeHBlY3QgSUROIGZhaWx1cmUuCi0g
ICAgTlNVUkwgKnVybCA9IFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v
76O/LmNvbSIsIG5pbCk7CisgICAgTlNVUkwgKnVybCA9IFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0
cmluZyhAImh0dHA6Ly/vo78uY29tIiwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwgPT0gbmls
KTsKIAotICAgIE5TU3RyaW5nICplbmNvZGVkSG9zdE5hbWUgPSBXZWJDb3JlOjplbmNvZGVIb3N0
TmFtZShAImh0dHA6Ly/vo78uY29tIik7CisgICAgTlNTdHJpbmcgKmVuY29kZWRIb3N0TmFtZSA9
IFdURjo6ZW5jb2RlSG9zdE5hbWUoQCJodHRwOi8v76O/LmNvbSIpOwogICAgIEVYUEVDVF9UUlVF
KGVuY29kZWRIb3N0TmFtZSA9PSBuaWwpOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19O
aWwpCiB7Ci0gICAgTlNVUkwgKnVybDEgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5n
KG5pbCwgbmlsKTsKKyAgICBOU1VSTCAqdXJsMSA9IFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmlu
ZyhuaWwsIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUodXJsMSA9PSBuaWwpOwogCi0gICAgTlNVUkwg
KnVybDIgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChuaWwsIG5p
bCk7CisgICAgTlNVUkwgKnVybDIgPSBXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNh
dGVkKG5pbCwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwyID09IG5pbCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0
ZUhUTUxTdHJpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tCmluZGV4IDUwNWFmMzU3ZTVkMTAxZDE3NmI1MjNkMTU1
YTYyOTRiYmU4ZjdmZGYuLjkwZDQ2MTBjNzQxMDk5ZmFlNGE2MGJlOTc3NjVjYzNkN2IwZWNkNDQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Mb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbQpAQCAtMzAsOSArMzAsOSBAQAogCiAj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgotI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2Ev
TlNVUkxFeHRyYXMuaD4KIAogc3RhdGljIGJvb2wgaXNEb25lOwogc3RhdGljIGludCBwcm92aXNp
b25hbExvYWRDb3VudDsKQEAgLTExMCw3ICsxMTAsNyBAQCBURVNUKFdLV2ViVmlldywgTG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmdGcm9tUHJvdmlzaW9uYWxMb2FkRXJyb3JCYWNrVG9CYWNrKQogICAg
ICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAg
ICAgICAgIGNoYXIgbGl0ZXJhbFtdID0gImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tPD4vIjsKLSAg
ICAgICAgTlNVUkwqIHRhcmdldFVSTCA9IFdlYkNvcmU6OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0
YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBuaWwpOworICAgICAg
ICBOU1VSTCogdGFyZ2V0VVJMID0gV1RGOjpVUkxXaXRoRGF0YShbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6bGl0ZXJhbCBsZW5ndGg6c3RybGVuKGxpdGVyYWwpXSwgbmlsKTsKICAgICAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0YXJnZXRVUkxdXTsK
ICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDp0YXJnZXRVUkxdXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQppbmRleCBhYzk4YzE5
NjQ0MGFiN2I1NTA4NGM5NWQ3OGQwOWZlN2ZjNzk3ZTNjLi5lYWE1NWNhYzY3ZjhlODQ0MTQzMjdk
NGRhZTMyNjA5NjQ1ZDk1YmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQpAQCAtMjgs
MTAgKzI4LDEwIEBACiAjaWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
dy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJM
RXh0cmFzLmg+CiAKIHN0YXRpYyBib29sIGRpZEZpbmlzaFRlc3Q7CiBzdGF0aWMgYm9vbCBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkOwpAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgY29uc3QgY2hhciBs
aXRlcmFsW10gPSAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb208Pi8iOwogCiBzdGF0aWMgTlNVUkwg
KmxpdGVyYWxVUkwoY29uc3QgY2hhciogbGl0ZXJhbCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihs
aXRlcmFsKV0sIG5pbCk7CisgICAgcmV0dXJuIFdURjo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRh
V2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CiB9CiAKIEBp
bnRlcmZhY2UgTG9hZEludmFsaWRVUkxOYXZpZ2F0aW9uQWN0aW9uRGVsZWdhdGUgOiBOU09iamVj
dCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAppbmRleCBiMDUxNDUy
NGY3MjU5MWY2Y2I1MDI5MTEwMzFiN2JmYThhM2FmYTA3Li4xYmFhZTk1YWMwNjIzMWZiZmIyOWE4
YmExNDE4Nzc3MmI1YWYzYWQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAKQEAgLTIyLDggKzIyLDgg
QEAKIAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVz
dC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxnbGli
L2dzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKIHN0YXRp
YyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0KaW5kZXggOGQ1NGNhNmUx
OWUwZDY5OTYyYTVmMTUzMjM1NDJhZWYyMDM1NzVkMS4uODZiN2IzYzRhOTk4NjMwZDI4NWU1MTc5
NWZjOGFkNjk4MWNmYzkyNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQpAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdh
dGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBzdGF0
aWMgYm9vbCBkaWRGaW5pc2hUZXN0Owogc3RhdGljIGJvb2wgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZDsKQEAgLTUxLDcgKzUxLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRp
ZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKICAgICBFWFBFQ1Rf
RVEoZXJyb3IuY29kZSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMKTsKIAogICAgIHN0YXRpYyBj
aGFyIGxpdGVyYWxbXSA9ICJodHRwczovL3d3dy5leGFtcGxlLmNvbSQvIjsKLSAgICBOU1VSTCAq
ZmFpbGVkVVJMID0gV2ViQ29yZTo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxp
dGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CisgICAgTlNVUkwgKmZhaWxlZFVS
TCA9IFdURjo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3Ro
OnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUoW2Vycm9yLnVzZXJJbmZv
W0AiTlNFcnJvckZhaWxpbmdVUkxLZXkiXSBpc0VxdWFsOmZhaWxlZFVSTF0pOwogCiAgICAgZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW0KaW5kZXggZGRlOGM3ZDAxZGE2NzgwNDE5NWM3ZjQx
ZTI5MTFhNzg5YzcwMmM1Mi4uYWMxYmY3ZGI2Yzk4YjAyZDI1NTI2NTk3MmJjMjk5ZGEwYzk4N2Vk
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5R2VuZXJh
dG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NTTEtleUdlbmVyYXRv
ci5tbQpAQCAtMjksOSArMjksOSBAQAogI2ltcG9ydCA8U2VjdXJpdHkvU2VjQXNuMVRlbXBsYXRl
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NTTEtleUdlbmVyYXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC02OSw3ICs2OSw3IEBAIGNvbnN0IFNlY0FzbjFUZW1wbGF0
ZSBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VUZW1wbGF0ZVtdIHsKICAgICB7IDAsIDAsIDAs
IDAgfQogfTsKIAotY29uc3QgV2ViQ29yZTo6VVJMIHVybCA9IFdlYkNvcmU6OlVSTChXZWJDb3Jl
OjpVUkwoKSwgImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iKTsKK2NvbnN0IFVSTCB1cmwgPSBVUkwo
VVJMKCksICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIik7CiAKIGNsYXNzIFNTTEtleUdlbmVyYXRv
clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5kZXggOGY3NTVjMzJjOGMy
ZTJlMGQzNzlkM2U1ZjA3Y2M2YjliZGNjMTg2NS4uOTE3Y2JlYmNlZTU2YzdjMTc2NDgyMGZjYmQx
ZDBiOGYzNDkwNjU0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZv
cm1VdGlsaXRpZXNXaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3Jt
VXRpbGl0aWVzV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8U2hsd2FwaS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0
cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351500</attachid>
            <date>2018-10-03 02:55:21 -0700</date>
            <delta_ts>2018-10-03 04:03:12 -0700</delta_ts>
            <desc>Add Linux support</desc>
            <filename>bug-190234-20181003185519.patch</filename>
            <type>text/plain</type>
            <size>1275376</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2Y2I1MjQ5NmNlZGVkZGJhYjM0NDA0
Mjc5MzdlMWM4NmQ3YTg4ZjQuLjZhNmQyOTA5NjY3OTgwNGQzZDljNDY2MGFmZTNhMTVlMDZiYWFm
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTgtMTAtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUg
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAg
ICAgICAgKiB3dGYvVVJMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgICogd3Rm
L1VSTC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmguCisgICAg
ICAgICogd3RmL1VSTEhhc2guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTEhhc2guaC4KKyAgICAgICAgKFdURjo6VVJMSGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6
OlVSTEhhc2g6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvVVJMUGFyc2VyLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAuCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KToKKyAgICAgICAgKFdURjo6VVJMUGFy
c2VyOjpwYXJzZUF1dGhvcml0eSk6CisgICAgICAgICogd3RmL1VSTFBhcnNlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmguCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpyZXN1bHQp
OgorICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4dHJhcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAuCisgICAgICAgICogd3RmL2NmL0NG
VVJMRXh0cmFzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVS
TEV4dHJhcy5oLgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAuCisgICAgICAgICogd3RmL2NvY29hL05T
VVJMRXh0cmFzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRy
YXMubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0uCisgICAgICAgIChXVEY6OmlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIp
OgorICAgICAgICAoV1RGOjppc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdU
Rjo6aXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjppc0xv
b2thbGlrZUNoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OndoaXRlTGlzdElETlNjcmlwdCk6Cisg
ICAgICAgIChXVEY6OnJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKToKKyAgICAgICAgKFdURjo6
YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KToKKyAgICAgICAgKFdURjo6aXNTZWNv
bmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyk6CisgICAgICAgIChXVEY6OmlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjphbGxDaGFyYWN0ZXJzQWxs
b3dlZEJ5VExEUnVsZXMpOgorICAgICAgICAoV1RGOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6Cisg
ICAgICAgIChXVEY6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChX
VEY6Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChXVEY6OmRlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKToKKyAgICAgICAgKFdURjo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFu
Z2UpOgorICAgICAgICAoV1RGOjpkZWNvZGVIb3N0TmFtZSk6CisgICAgICAgIChXVEY6OmVuY29k
ZUhvc3ROYW1lKToKKyAgICAgICAgKFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyk6
CisgICAgICAgIChXVEY6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKToKKyAgICAgICAg
KFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcpOgorICAgICAgICAoV1RGOjphcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6CisgICAgICAgIChXVEY6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKToKKyAgICAgICAgKFdURjo6bWFwSG9zdE5hbWVz
KToKKyAgICAgICAgKFdURjo6c3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOgorICAgICAgICAo
V1RGOjpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOgorICAgICAg
ICAoV1RGOjpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIpOgorICAgICAgICAoV1RGOjpV
UkxXaXRoRGF0YSk6CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKToKKyAg
ICAgICAgKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyk6CisgICAgICAgIChXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKToKKyAgICAgICAgKFdURjo6aGFzUXVlc3Rpb25N
YXJrT25seVF1ZXJ5U3RyaW5nKToKKyAgICAgICAgKFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5
cGUpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENo
YXJhY3Rlcik6CisgICAgICAgIChXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6CisgICAgICAg
IChXVEY6Om9yaWdpbmFsVVJMRGF0YSk6CisgICAgICAgIChXVEY6OmNyZWF0ZVN0cmluZ1dpdGhF
c2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KToKKyAgICAgICAgKFdURjo6aXNVc2VyVmlzaWJsZVVSTCk6CisgICAgICAgIChXVEY6OnJhbmdl
T2ZVUkxTY2hlbWUpOgorICAgICAgICAoV1RGOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6CisgICAg
ICAgICogd3RmL2NvY29hL1VSTENvY29hLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VSTE1hYy5tbS4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOgorICAgICAg
ICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2xpYi9HVW5p
cXVlUHRyU291cC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0dVbmlxdWVQdHJTb3VwLmguCisgICAgICAgICogd3RmL2dsaWIvVVJMU291cC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwLgor
CiAyMDE4LTEwLTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBb
bWFjT1NdIFN3aXRjaGluZyB0byBkaXNjcmV0ZSBHUFUgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIFVJ
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOWQzMGE0OGM5Y2M2NzczN2Y2Y2ZlY2VkYjRmYWFmMGEx
YTE4MjEwLi43YWZlNjY1YjFjMzExNDdhYjE0MDNkNDYzMWNiZjI1MDVhZDgzZWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTQxIEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRv
IFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkw
MjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBV
UkwgaXMgYSBsb3ctbGV2ZWwgY29uY2VwdCB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbiBvdGhlciBj
bGFzc2VzIGluIFdlYkNvcmUuCisgICAgICAgIFdlIGFyZSBzdGFydGluZyB0byB1c2UgVVJMcyBp
biBKYXZhU2NyaXB0Q29yZSBmb3IgbW9kdWxlcy4KKyAgICAgICAgSSBuZWVkIFVSTCBhbmQgVVJM
UGFyc2VyIGluIGEgcGxhY2Ugd2l0aCBmZXdlciBkZXBlbmRlbmNpZXMgZm9yIHJkYXI6Ly9wcm9i
bGVtLzQ0MTE5Njk2CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50
RXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5j
cHA6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVs
ZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5oOgor
ICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAgICAgICAg
KiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTTWFwTGlrZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVh
ZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0Nv
bnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNp
b25SdWxlc0ZvclBpbmdMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjphcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVS
ZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3NzL1N0
eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+Ojpjb25zdHJ1
Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg6
CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb21wbGV0ZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5z
dXJlVGVtcGxhdGVEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dXJsRm9yQmluZGluZ3MgY29uc3QpOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzSmF2YVNjcmlwdFVS
TEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJDb250ZXh0Rm9yRWxlbWVudCk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YmFzZVVSSSBjb25zdCk6
CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5oOgor
ICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZG9tL1Nl
Y3VyaXR5Q29udGV4dC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTCk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRRdW90ZWRVUkxBdHRyaWJ1
dGVWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgICogZWRp
dGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU3VicmVzb3VyY2VVUkxB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCk6
CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHA6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaDoKKyAgICAg
ICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JVUkwuY3BwOgorICAg
ICAgICAqIGZpbGVhcGkvQmxvYlVSTC5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAg
ICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuaDoK
KyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgICogaHRtbC9ET01VUkwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
RE9NVVJMLmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVuVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbik6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RG
OjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50
PFdlYkNvcmU6OlVSTD46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0
bWFwLmg6CisgICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmg6CisgICAgICAg
ICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1h
bmFnZXIuaDoKKyAgICAgICAgKiBodG1sL1VSTElucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRt
bC9VUkxSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6VVJMU2VhcmNoUGFyYW1zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9tQXNzb2NpYXRlZFVSTCk6CisgICAgICAgICogaHRt
bC9VUkxVdGlscy5oOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldEhvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldFBvcnQpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNlbWljb2xvblNlcGFyYXRlZFZhbHVlQ29udGFpbnNKYXZhU2NyaXB0
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpY
U1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZmlsdGVySW5wdXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0
ZXJCdXR0b25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmlzTGlrZWx5U2FmZVJlc291cmNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9y
Lmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24u
aDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnJlY2VpdmVkRmlyc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250
aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0pOgorICAgICAgICAq
IGxvYWRlci9MaW5rTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0xvYWRUaW1pbmcuaDoKKyAg
ICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvTWl4ZWRD
b250ZW50Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVja2Vy
OjpjaGVja0Zvcm1Gb3JNaXhlZENvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2hvdWxkU2NoZWR1
bGVOYXZpZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5oOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZEluZm8uaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
VGltaW5nLmg6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAqIGxvYWRl
ci9TdWJmcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L01hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQ
YXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9u
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW06CisgICAgICAgICogcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvQ29u
dGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFi
bGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNzKToKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0V2ZW50U291cmNlLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9IaXN0b3J5Lmg6CisgICAgICAg
ICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6dXJsIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAqIHBh
Z2UvTG9jYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5oOgorICAgICAgICAq
IHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHA6CisgICAgICAgICogcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5oOgor
ICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9Tb2NrZXRQcm92aWRl
ci5oOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oOgorICAgICAgICAqIHBh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5oOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5oOgorICAgICAgICAqIHBh
Z2UvVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBwYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaDoK
KyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Lmg6CisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9E
cmFnRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MaW5rSWNvbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6Y2FuRXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmg6CisgICAgICAgICogcGxh
dGZvcm0vU291cmNlc1NvdXAudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vVXNlckFnZW50UXVpcmtzLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2Vk
U2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKHdlYktpdE1lZGlhU3JjU2V0VXJpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnSW1h
Z2VHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzUGxhaW5U
ZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUHVibGljU3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5h
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjppc0FybWVu
aWFuTG9va2FsaWtlQ2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQXJt
ZW5pYW5TY3JpcHRDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBU0NJ
SURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
aXNMb29rYWxpa2VDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d2hpdGVM
aXN0SUROU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJRE5TY3JpcHRX
aGl0ZUxpc3RGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFsbENoYXJhY3RlcnNJ
bklETlNjcmlwdFdoaXRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1NlY29u
ZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6YWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Om1hcEhvc3ROYW1lV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW5j
b2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFJhbmdlc1Ro
YXROZWVkTWFwcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFuZ2Vz
VGhhdE5lZWRFbmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFu
Z2VzVGhhdE5lZWREZWNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseUhv
c3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjphcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjptYXBIb3N0TmFtZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c3Ry
aW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJM
QnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpVUkxXaXRoRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3Rlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpVUkxCeVJlbW92aW5nVXNlckluZm8pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6b3JpZ2luYWxVUkxEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc1VzZXJWaXNpYmxlVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJh
bmdlT2ZVUkxTY2hlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9va3NMaWtlQWJz
b2x1dGVVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JQYXJ0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVz
dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94
eVNlcnZlckN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Byb3h5U2VydmVyU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRF
bmNvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vQlN0cmluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya3VwVG9DRkhUTUwpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQXR0YWNobWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjpzb3VyY2VVUkkgY29uc3QpOgorICAgICAg
ICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29u
c2lzdGVudFN0YXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVudENv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5j
cHA6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5Lmg6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudERhdGEuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0
YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNw
cDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5oOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXk+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5oOgorCiAyMDE4LTEwLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgTWVzc2FnZUV2ZW50LnBvcnRzIHNob3VsZCByZXR1cm4gdGhlIHNhbWUg
b2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDMwNTk2NDRhMDViYTNmZjRhNGJiNjc4YTE5ZjJkMDQxNjc2MTI0
NWQuLjM5OTRiZjYxZTRkZmQ2NjFlM2FmY2QzYzBiZDQ5MzEwMTVjOTZmYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzgyIEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRvIFdURgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxv
YlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lz
dHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVn
aXN0cnk6OmJsb2JTaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6
ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Js
b2JSZWdpc3RyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OnNldENvbnRlbnRFeHRlbnNp
b25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjp1cmwg
Y29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndyaXRlQmxvYlRvRmlsZVBhdGgpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bG9nQmxvY2tlZENv
b2tpZUluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bG9nQ29va2llSW5mb3JtYXRpb25J
bnRlcm5hbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmV0
cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hl
ZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdGF0aXN0aWNzOjpyZWNv
cmRSZXZhbGlkYXRpb25TdWNjZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlN1YnJlc291cmNlSW5mbzo6Zmlyc3RQYXJ0eUZvckNvb2tpZXMgY29uc3QpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXF1ZXN0OjpvcGVyYXRvciBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVy
ZTo6UmVzcG9uc2U6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6RXJyb3I6Om9wZXJhdG9yIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1
cmU6Ok1hbmFnZXI6OmZpbmRCZXN0RnV6enlNYXRjaCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYXB0dXJlOjpNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjp1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6UmVzb3VyY2U6OnVybCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXNvdXJjZTo6cXVlcnlQYXJhbWV0ZXJzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2Uu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vz
c2lvbjp0YXNrOmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6b3BlbkNGVVJMUmVmKToKKyAgICAgICAgKFdlYktpdDo6cmVwbGFjZWROU1dvcmtzcGFj
ZV9sYXVuY2hBcHBsaWNhdGlvbkF0VVJMX29wdGlvbnNfY29uZmlndXJhdGlvbl9lcnJvcik6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwuaDoKKyAgICAgICAgKEFQSTo6VVJMOjpjcmVhdGUp
OgorICAgICAgICAoQVBJOjpVUkw6OmVxdWFscyk6CisgICAgICAgIChBUEk6OlVSTDo6VVJMKToK
KyAgICAgICAgKEFQSTo6VVJMOjp1cmwgY29uc3QpOgorICAgICAgICAoQVBJOjpVUkw6OnBhcnNl
VVJMSWZOZWNlc3NhcnkgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmg6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0
Y2hlc1VSTCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHA6
CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAoV0tVUkxDcmVhdGVXaXRoQ0ZVUkwp
OgorICAgICAgICAoV0tVUkxDb3B5Q0ZVUkwpOgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJ
UmVzcG9uc2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06
CisgICAgICAgIChBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKToK
KyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNVUkwgX3dlYl9vcmln
aW5hbERhdGFBc1dURlN0cmluZ10pOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBT
aGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVt
SXNJblNhbWVEb2N1bWVudCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJFcnJvcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVz
dFJlc3VsdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNw
cDoKKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHA6CisgICAgICAgICogU2hhcmVkL2lvcy9J
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6YXBwZW5kUmVkaXJlY3Rpb25V
UkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uOjp0YWtlUmVkaXJlY3RDaGFpbik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25D
bGllbnQ6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnNhdmVE
YXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
VXNlclNjcmlwdC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVl
VVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKEFQSTo6VXNl
clN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuY3BwOgorICAgICAgICAoZmlsZVBhdGhzRnJvbUZpbGVVUkxzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxv
YWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQYWdlR3Jv
dXBBZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVzZXJTY3JpcHQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlRm9yRGVidWdNb2RlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NMYXN0U2Vlbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcik6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJG
cmFtZVVuZGVyKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQpOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVj
dEZyb20pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW06CisgICAg
ICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWlu
RnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDp1
c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOmZvclVSTFNjaGVtZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiB1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbToKKyAgICAgICAgKC1b
X1dLQXBwbGljYXRpb25NYW5pZmVzdCBpbml0V2l0aENvZGVyOl0pOgorICAgICAgICAoK1tfV0tB
cHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjptYW5pZmVzdFVS
TDpkb2N1bWVudFVSTDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJT
dHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJj
ZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YmFzZVVS
TDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2llcyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNw
cDoKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19sb2FkX3BsYWluX3RleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQYXltZW50VUkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5Q29jb2EuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1l
bnRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJ
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpuYXZpZ2F0ZUJyb3dz
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OmRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xl
Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZUFs
bENvb2tpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpyZXNvbHZlV2ViR0xMb2Fk
UG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpT
YWZlQnJvd3NpbmdSZXN1bHQ6OlNhZmVCcm93c2luZ1Jlc3VsdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgICgtW19X
S1ByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBmaW5pc2g6XSk6CisgICAgICAgIChXZWJLaXQ6
OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxl
SW5Eb3dubG9hZHNGb2xkZXIpOgorICAgICAgICAoV2ViS2l0OjpyZXF1ZXN0VXNlck1lZGlhQXV0
aG9yaXphdGlvbkZvckRldmljZXMpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW06CisgICAg
ICAgICgtW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyIGF0dGVtcHRSZWNvdmVy
eV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVRvVVJMRm9yRmlsZVByb21pc2VQcm92aWRlcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldFJlZGlyZWN0Q2hhaW4pOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpyZWRpcmVjdENoYWluIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvRnJhbWVMb2FkU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0
ZTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpzZXRVbnJlYWNoYWJsZVVSTCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmg6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZFN0YXRlOjp1cmwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6
cHJvdmlzaW9uYWxVUkwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6
dW5yZWFjaGFibGVVUkwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpoYXNPbmx5U2VjdXJlQ29udGVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaDoKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dz
aW5nUmVzdWx0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1bHQ6
OnVybCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OnVybCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OnByb3Zpc2lvbmFsVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6dW5yZWFjaGFibGVVUkwgY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEFsdGVy
bmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtX
aXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJG
b3JTY2hlbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVu
Y2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJj
ZUZvckRlYnVnTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFn
RHJvcEludGVyYWN0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9u
U2hlZXRBc3Npc3RhbnQubW06CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgX2Ny
ZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25zOnNob3dMaW5rVGl0bGU6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVFbGVtZW50V2l0aFVSTDpyZWN0
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZv
clByZXZpZXdJdGVtQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbToKKyAgICAgICAgKC1bV0tMZWdhY3lQREZWaWV3IGFj
dGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6cmVjdDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAgICAgKC1bV0tQREZWaWV3IGFjdGlv
blNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6cmVjdDpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBfdXBkYXRlTG9jYXRp
b25JbmZvXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2Rp
bmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAg
ICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250
cm9sbGVyXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQ
YXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlk
YXRlTWVyY2hhbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAg
ICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudDo6dXNlckFnZW50Rm9yVVJM
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWUuY3BwOgorICAgICAgICAoV0tCdW5kbGVGcmFtZUFsbG93c0ZvbGxvd2luZ0xpbmsp
OgorICAgICAgICAoV0tCdW5kbGVGcmFtZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNl
V2l0aFVSTCk6CisgICAgICAgIChXS0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVzb3VyY2VX
aXRoVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VIYXNMb2NhbERhdGFGb3JVUkwpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRv
VVRGOFN0cmluZy5jcHA6CisgICAgICAgIChjb252ZXJ0VG9VVEY4U3RyaW5nKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJp
bmcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01l
ZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldFByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0
U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46OmNsaWNrZWRMaW5rKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1VUkxSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjphbGxvd3NGb2xs
b3dpbmdMaW5rIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRN
TCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJh
dGlvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFt
ZVVSTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKToKKwogMjAxOC0xMC0wMiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIERlcHJlY2F0
ZSBXS0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMTRjNjIwYWFhYjFiN2ExNTY4
NTVkY2Q3YTYzOGE2MGQzOGVkMTM1OC4uM2Y5MjIzYmI3ZDE3ZWIwZDIxNTczMDc1ZmEzNzBjNDcz
ZmM0OTRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMC0w
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaDoKKwogMjAxOC0xMC0wMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW21hY09TXSBTd2l0Y2hpbmcgdG8gZGlzY3JldGUgR1BVIHNob3VsZCBiZSBkb25l
IGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggY2UzMWU3
MzgxYjg5ZDhkOGQ2NjhiZmIxNDRiMzIyYzg4ZTc2OWY2NS4uZTgwNmVlNjE4ZmIyYjcyOTkyOGEw
YzBiOGFhOWViNzcwNTU1NTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzNyBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTUF0dHIu
bW06CisgICAgICAgICogRE9NL0RPTUJsb2IubW06CisgICAgICAgICogRE9NL0RPTUNTU0NoYXJz
ZXRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NJbXBvcnRSdWxlLm1tOgorICAgICAgICAq
IERPTS9ET01DU1NNZWRpYVJ1bGUubW06CisgICAgICAgICogRE9NL0RPTUNTU1BhZ2VSdWxlLm1t
OgorICAgICAgICAqIERPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbToKKyAgICAgICAgKiBET00v
RE9NQ1NTUnVsZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbToK
KyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NT
dHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9ET01DU1NWYWx1ZS5tbToKKyAgICAgICAgKiBE
T00vRE9NQ2hhcmFjdGVyRGF0YS5tbToKKyAgICAgICAgKiBET00vRE9NQ291bnRlci5tbToKKyAg
ICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3VtZW50RnJh
Z21lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3VtZW50VHlwZS5tbToKKyAgICAgICAgKiBE
T00vRE9NRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTUZpbGUubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQXBwbGV0RWxl
bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEFyZWFFbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MQlJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQmFzZUVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEJ1dHRv
bkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50Lm1tOgorICAg
ICAgICAqIERPTS9ET01IVE1MQ29sbGVjdGlvbi5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTERp
dkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxEb2N1bWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxFbWJlZEVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEZvcm1F
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
SFJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSGVhZEVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRN
TEh0bWxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTEltYWdlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9N
SFRNTElucHV0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTExJRWxlbWVudC5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9N
SFRNTExlZ2VuZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxMaW5rRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTE1hcEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RP
TUhUTUxNYXJxdWVlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1lZGlhRWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tOgorICAgICAgICAqIERP
TS9ET01IVE1MTW9kRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9MaXN0RWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9iamVjdEVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxPcHRp
b25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW06
CisgICAgICAgICogRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tOgorICAgICAgICAqIERP
TS9ET01IVE1MUGFyYW1FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MUXVvdGVFbGVt
ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MU2NyaXB0RWxlbWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxTdHls
ZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1t
OgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxl
RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxUaXRsZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxVTGlzdEVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxWaWRlb0VsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUtleWJvYXJkRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTU1lZGlhTGlzdC5tbToK
KyAgICAgICAgKiBET00vRE9NTW91c2VFdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTXV0YXRp
b25FdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTmFtZWROb2RlTWFwLm1tOgorICAgICAgICAq
IERPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW06CisgICAgICAgICogRE9NL0RPTVJhbmdl
Lm1tOgorICAgICAgICAqIERPTS9ET01TdHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9ET01U
ZXh0Lm1tOgorICAgICAgICAqIERPTS9ET01UZXh0RXZlbnQubW06CisgICAgICAgICogRE9NL0RP
TVRva2VuTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9NVUlFdmVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NWFBhdGhSZXN1bHQubW06CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bToKKyAgICAgICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1VSTCBf
d2ViX3VzZXJWaXNpYmxlU3RyaW5nXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfVVJMQnlSZW1v
dmluZ1VzZXJJbmZvXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfZGF0YUZvclVSTENvbXBvbmVu
dFR5cGU6XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfc2NoZW1lRGF0YV0pOgorICAgICAgICAo
LVtOU1VSTCBfd2ViX2hvc3REYXRhXSk6CisgICAgICAgICogTWlzYy9XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4ubW06CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aDoKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZXRSZXF1ZXN0VVJMKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6
OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyBjb25zdCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW06
CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OnNob3dQYXltZW50VUkpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW06CisgICAgICAgIChXZWJQbHVnaW5JbmZv
UHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNp
dGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9sb2FkRGF0
YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dW5yZWFjaGFibGVVUkw6XSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAg
ICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0aW9uQ29udHJv
bGxlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVy
bmFsLmg6CisKIDIwMTgtMTAtMDEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFttYWNPU10gU3dpdGNoaW5nIHRvIGRpc2NyZXRlIEdQVSBzaG91bGQgYmUgZG9uZSBp
biB0aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGVjODJkNDlh
Y2ZmYjc5MTQ1YWYzM2M0MjU5M2EzYzBhZWI0YWRlOGIuLmU2ZmU2Y2Q3YmFjMGI1OWYwOTllNDA1
MmZkODQyZTVhMGJjNmI0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0MiBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWFyc2hhbGxpbmdIZWxw
ZXJzLmNwcDoKKyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBlcnMuaDoKKyAgICAgICAgKiBQbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNl
Lmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgICog
UGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJQ
bHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6
CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAgKiBXZWJFbGVtZW50UHJvcGVydHlC
YWcuY3BwOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6
CisgICAgICAgICogV2ViSGlzdG9yeS5oOgorICAgICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoK
KyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6V2ViUmVz
b3VyY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisgICAgICAgICogV2ViU2VjdXJpdHlP
cmlnaW4uY3BwOgorICAgICAgICAqIFdlYlVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYlVS
TFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTgtMTAtMDIgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgUGFy
c2VkVVJMU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjY2YyOTQ2YTlkYTVmYzg2MGYzNThjZDMwZWM5YjM2OGY1MGQ2ZjY5Li44ZTVmY2VkZmI1MWE1
MjZjZTdlZTRkMTgxZGM4ZTA3OTA2NTE2MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTc2LDYgKzc2LDEyIEBACiAJCTUzMTFCRDUzMUVBNzFDQUQwMDUy
NTI4MSAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzMTFCRDUxMUVBNzFDQUQwMDUyNTI4MSAvKiBTaWduYWxzLmNwcCAqLzsgfTsK
IAkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENUIxRUE4MjJGOTAw
NTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwICovOyB9OwogCQk1MzUzNEYyQTFFQzBFMTBFMDAx
NDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTM0RjI5MUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0
aW9ucy5kZWZzICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKENsaWVudCwgU2VydmVyLCAp
OyB9OyB9OworCQk1QzFGMDU5MzIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxRjA1OTEyMTY0
MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLzsgfTsKKwkJNUMxRjA1OTUyMTY0MzdC
MzAwMzkzMDJDIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgKi87IH07
CisJCTVDQzBFRTc1MjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFNzMyMTYyOUYxOTAwQTFB
ODQyIC8qIFVSTFBhcnNlci5jcHAgKi87IH07CisJCTVDQzBFRTc2MjE2MjlGMTkwMEExQTg0MiAv
KiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNDMEVFNzQyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgKi87IH07CisJCTVDQzBFRTg5MjE2
MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5t
bSAqLzsgfTsKKwkJNUNDMEVFOEEyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFODgyMTYy
QkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tICovOyB9OwogCQk3MEE5OTNGRTFBRDcxNTEz
MDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJl
Z2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBFQ0E2MEQxQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0
cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBFQ0E2MEExQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwICovOyB9
OwogCQk3QTA1MDkzRjFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTA1MDkzRTFGQjlEQ0M1MDBC
MzNGQjggLyogSlNPTlZhbHVlcy5jcHAgKi87IH07CkBAIC0zNzIsNyArMzc4LDE5IEBACiAJCTU1
MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGlueUxSVUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1OTdGODJDMUQ5NEI5OTcwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bmNocm9uaXplZEZpeGVkUXVl
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUI0MzM4M0E1RDBCNDYzQzk0MzNE
OTMzIC8qIEluZGV4TWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGV4
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMUYwNTkxMjE2NDM1NkIwMDM5
MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDRlVSTEV4dHJhcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMUYw
NTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDRlVSTEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QzFGMDU5NDIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVVJMQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzFGMDU5NzIxNjQzOTk0MDAzOTMwMkMgLyogVVJMSGFzaC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDN0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlxdWVSZWYuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDQzBFRTcxMjE2MjlGMTgwMEExQTg0MiAvKiBVUkwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QzBFRTcyMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVJMUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQzBFRTczMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUNDMEVFNzQyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0MwRUU3NzIxNjJBMDEwMDBBMUE4NDIgLyogVVJMSGFzaC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVSTENvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU4NzIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRy
YXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNVUkxFeHRyYXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFODgyMTYyQkMyMjAwQTFBODQyIC8qIE5T
VVJMRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTlNV
UkxFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjYyMTQ2ODlC
ODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGli
V1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVEMjQ3QjZFMTQ2
ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjcwMTQ2ODlDNDcwMEU3OEI3
NiAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzIwLDkgKzczOCwxMiBAQAog
CQkyQ0RFRDBGMDE4MTE1QzNGMDA0REJBNzAgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDMUYwNTkxMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVS
TEV4dHJhcy5jcHAgKi8sCisJCQkJNUMxRjA1OTIyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0
cmFzLmggKi8sCiAJCQkJQzJCQ0ZDNDExRjYxRDYxNjAwQzkyMjJDIC8qIExhbmd1YWdlQ0YuY3Bw
ICovLAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAog
CQkJCTFBRkRFNjQ3MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2FzdHNDRi5oICovLAorCQkJCTVD
MUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTExMzEsNiArMTE1MiwxMiBAQAog
CQkJCUUzMDBFNTIxMjAzRDY0NUYwMERBNzlCRSAvKiBVbmlxdWVBcnJheS5oICovLAogCQkJCTVD
N0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlxdWVSZWYuaCAqLywKIAkJCQlDRDc2MDBGRjFG
OTBBM0NBMDAwMjZFMjYgLyogVW5zYWZlUG9pbnRlci5oICovLAorCQkJCTVDQzBFRTc0MjE2MjlG
MTkwMEExQTg0MiAvKiBVUkwuY3BwICovLAorCQkJCTVDQzBFRTcxMjE2MjlGMTgwMEExQTg0MiAv
KiBVUkwuaCAqLywKKwkJCQk1QzFGMDU5NzIxNjQzOTk0MDAzOTMwMkMgLyogVVJMSGFzaC5oICov
LAorCQkJCTVDQzBFRTc3MjE2MkEwMTAwMEExQTg0MiAvKiBVUkxIYXNoLmggKi8sCisJCQkJNUND
MEVFNzMyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5jcHAgKi8sCisJCQkJNUNDMEVFNzIy
MTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5oICovLAogCQkJCTdBRkVDNkIwMUVCMjJCNTkw
MERBREUzNiAvKiBVVUlELmNwcCAqLywKIAkJCQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYgLyog
VVVJRC5oICovLAogCQkJCUE4QTQ3MzZGMTUxQTgyNUIwMDQxMjNGRiAvKiBWYWx1ZUNoZWNrLmgg
Ki8sCkBAIC0xMzU0LDcgKzEzODEsMTAgQEAKIAkJCQlBOEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYg
LyogTWFpblRocmVhZENvY29hLm1tICovLAogCQkJCUFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAv
KiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgKi8sCiAJCQkJQUQ4OUI2QjkxRTY0MTUwRjAwOTA3
MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tICovLAorCQkJCTVDQzBFRTg3MjE2
MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5oICovLAorCQkJCTVDQzBFRTg4MjE2MkJDMjIw
MEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSAqLywKIAkJCQlBMzBENDEyQzFGMERFMEJBMDBCNzE5
NTQgLyogU29mdExpbmtpbmcuaCAqLywKKwkJCQk1Q0MwRUU4NjIxNjJCQzIyMDBBMUE4NDIgLyog
VVJMQ29jb2EubW0gKi8sCiAJCQkJRTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1
ZUNvY29hLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CkBAIC0xNDgxLDYgKzE1MTEs
NyBAQAogCQkJCUE4QTQ3MzhCMTUxQTgyNUIwMDQxMjNGRiAvKiBCaXRWZWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2Vw
dGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNBQzE1MUE4MjVCMDA0MTIzRkYgLyog
Y2FjaGVkLXBvd2Vycy5jYyBpbiBTb3VyY2VzICovLAorCQkJCTVDMUYwNTkzMjE2NDM1NkIwMDM5
MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI4QTFEQzk3
QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDYw
MTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTUzMiw2ICsxNTYzLDcgQEAKIAkJCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcwN0Yg
LyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjY2QjI4QzFEQzk3QkFCMDA0QTFEM0YgLyogTW9ub3RvbmljVGltZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1Q0MwRUU4QTIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRyYXMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNDE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVyT2ZD
b3Jlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNzE1MUE4MjVCMDA0MTIzRkYgLyog
T1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGOTE1MUE4MjVC
MDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTg1LDYg
KzE2MTcsMTAgQEAKIAkJCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2Fn
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MDFEQzk3QkFCMDA0QTFEM0YgLyogVGlt
ZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzA3NUY1MUZC
RjUzQ0QwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0Mw
RUU3NjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDMUYw
NTk1MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0Mw
RUU4OTIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJCQk1
Q0MwRUU3NTIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFDMTgxQzhGMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFDMTgxQzkxMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0
aW4xLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzkzMUQzMDdBQjgwMEY1RkExNiAvKiBV
VGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDM5Y2MxOTk5NjkyNWExMmRjMzRkZTA3MzRiOWYyOTZlZGE0N2NmNDAuLjI4OTIxYmM4ZDI0
ZjQ5ZTM1ZjFmMzc3NmI3YWM2ZTc0ODI5NGMxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0y
NDAsNiArMjQwLDkgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFRpbnlQdHJTZXQuaAog
ICAgIFRyaVN0YXRlLmgKICAgICBUeXBlQ2FzdHMuaAorICAgIFVSTC5oCisgICAgVVJMSGFzaC5o
CisgICAgVVJMUGFyc2VyLmgKICAgICBVVUlELmgKICAgICBVbmFsaWduZWRBY2Nlc3MuaAogICAg
IFVuZXhwZWN0ZWQuaApAQCAtMzkyLDYgKzM5NSw4IEBAIHNldChXVEZfU09VUkNFUwogICAgIFRo
cmVhZGluZy5jcHAKICAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwCiAgICAgVGltaW5n
U2NvcGUuY3BwCisgICAgVVJMLmNwcAorICAgIFVSTFBhcnNlci5jcHAKICAgICBVVUlELmNwcAog
ICAgIFdURkFzc2VydGlvbnMuY3BwCiAgICAgV2FsbFRpbWUuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggZWU1
MWM3MzIxOGYxZmZiOWU1MjUwYjY1ZmQ1YmY1Mzg4MjdhZmVlMi4uNGJlZjgxMGNjMTA4NjcyZDk4
Mjk2OGNiNTkzNWJhMjQwMjcwNjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFz
cyBTdHJpbmdWaWV3OwogY2xhc3MgVGV4dFBvc2l0aW9uOwogY2xhc3MgVGV4dFN0cmVhbTsKIGNs
YXNzIFVuaXF1ZWRTdHJpbmdJbXBsOworY2xhc3MgVVJMOwogY2xhc3MgV2FsbFRpbWU7CiAKIHN0
cnVjdCBGYXN0TWFsbG9jOwpAQCAtMTA5LDYgKzExMCw3IEBAIHVzaW5nIFdURjo6U3RyaW5nSW1w
bDsKIHVzaW5nIFdURjo6U3RyaW5nVmlldzsKIHVzaW5nIFdURjo6VGV4dFBvc2l0aW9uOwogdXNp
bmcgV1RGOjpUZXh0U3RyZWFtOwordXNpbmcgV1RGOjpVUkw7CiB1c2luZyBXVEY6OlZhcmlhbnQ7
CiB1c2luZyBXVEY6OlZlY3RvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA0Njkw
M2MzNjQyOWNlYjcyNmExMTE5MzNhZTJmYjM1MDQ4OGRmMjI1Li40MWM4OTU0OTE4ODI5YzdlMDdl
ZmVjOGRhOTU3MWE2NjZmNjgyNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNiw2
ICs2LDcgQEAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgZ2xpYi9HUmVmUHRy
LmgKICAgICBnbGliL0dUeXBlZGVmcy5oCiAgICAgZ2xpYi9HVW5pcXVlUHRyLmgKKyAgICBnbGli
L0dVbmlxdWVQdHJTb3VwLmgKICAgICBnbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oCiAgICAg
Z2xpYi9XVEZHVHlwZS5oCiAKQEAgLTIxLDYgKzIyLDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKICAgICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAg
IGdsaWIvUnVuTG9vcEdMaWIuY3BwCisgICAgZ2xpYi9VUkxTb3VwLmNwcAogCiAgICAgbGludXgv
Q3VycmVudFByb2Nlc3NNZW1vcnlTdGF0dXMuY3BwCiAgICAgbGludXgvTWVtb3J5Rm9vdHByaW50
TGludXguY3BwCkBAIC0zNyw5ICszOSwxMSBAQCBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCiAg
ICAgJHtHTElCX0dJT19MSUJSQVJJRVN9CiAgICAgJHtHTElCX0dPQkpFQ1RfTElCUkFSSUVTfQog
ICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAgJHtMSUJTT1VQX0xJQlJBUklFU30KICAgICAke1pM
SUJfTElCUkFSSUVTfQogKQogCiBsaXN0KEFQUEVORCBXVEZfU1lTVEVNX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICR7TElCU09VUF9JTkNMVURFX0RJ
UlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGY0ZDUyNmU1NzFiOTMyMjk0ZWFh
MzQyOWEzNDA0OTEwZTcxOTE0MjEuLmEwMThmOTI5ZWY1NTJlZTI0MjExNTY1ZjFhNzllZjBiM2Mz
ZTU2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC04LDEwICs4LDEyIEBAIGxpc3Qo
QVBQRU5EIFdURl9MSUJSQVJJRVMKICkKIAogbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJT
CisgICAgY2YvQ0ZVUkxFeHRyYXMuaAogICAgIGNmL1R5cGVDYXN0c0NGLmgKIAogICAgIGNvY29h
L0VudGl0bGVtZW50cy5oCiAgICAgY29jb2EvTWFjaFNlbmRSaWdodC5oCisgICAgY29jb2EvTlNV
UkxFeHRyYXMuaAogICAgIGNvY29hL1NvZnRMaW5raW5nLmgKIAogICAgIGRhcndpbi9XZWFrTGlu
a2luZy5oCkBAIC0zOCw4ICs0MCwxMCBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIFNj
aGVkdWxlUGFpckNGLmNwcAogICAgIFNjaGVkdWxlUGFpck1hYy5tbQogCisgICAgY2YvQ0ZVUkxF
eHRyYXMuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAgICBjZi9SdW5Mb29wQ0YuY3BwCisg
ICAgY2YvVVJMQ0YuY3BwCiAKICAgICBjb2NvYS9BdXRvZHJhaW5lZFBvb2wuY3BwCiAgICAgY29j
b2EvQ1BVVGltZUNvY29hLmNwcApAQCAtNDgsNiArNTIsOCBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogICAgIGNvY29hL01haW5UaHJlYWRDb2NvYS5tbQogICAgIGNvY29hL01lbW9yeUZvb3Rw
cmludENvY29hLmNwcAogICAgIGNvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisg
ICAgY29jb2EvTlNVUkxFeHRyYXMubW0KKyAgICBjb2NvYS9VUkxDb2NvYS5tbQogICAgIGNvY29h
L1dvcmtRdWV1ZUNvY29hLmNwcAogCiAgICAgbWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2Fm
YXJpLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZSBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDc1MmI1OTkzMTQ4ZjExMTBhMjkz
YzlkYTllMjhhZGVmMDhmZWU0MGMuLmEwMmRhNTI3OGVlZWFiOGRiODAwYmM4Zjk2Zjg5ZmI5NzJm
M2UxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC00LDYgKzQsNyBAQCBsaXN0KEFQ
UEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICBnbGliL0dSZWZQdHIuaAogICAgIGdsaWIvR1R5
cGVkZWZzLmgKICAgICBnbGliL0dVbmlxdWVQdHIuaAorICAgIGdsaWIvR1VuaXF1ZVB0clNvdXAu
aAogICAgIGdsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmgKICAgICBnbGliL1dURkdUeXBlLmgK
IApAQCAtMTksNiArMjAsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGdsaWIvR0xp
YlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3BwCiAgICAgZ2xpYi9SdW5Mb29wR0xp
Yi5jcHAKKyAgICBnbGliL1VSTFNvdXAuY3BwCiAKICAgICBsaW51eC9DdXJyZW50UHJvY2Vzc01l
bW9yeVN0YXR1cy5jcHAKICAgICBsaW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKQEAgLTM1
LDkgKzM3LDExIEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICAgICAke0dMSUJfR0lPX0xJ
QlJBUklFU30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJRVN9CiAgICAgJHtHTElCX0xJQlJB
UklFU30KKyAgICAke0xJQlNPVVBfTElCUkFSSUVTfQogICAgICR7WkxJQl9MSUJSQVJJRVN9CiAp
CiAKIGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7R0xJ
Ql9JTkNMVURFX0RJUlN9CisgICAgJHtMSUJTT1VQX0lOQ0xVREVfRElSU30KICkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1XaW4uY21ha2UKaW5kZXggNDY4NTE5NmNlYTYyZGMwNmQ1YmE2MzAwMjEyYzI3ODkwOTFl
OWFkNy4uNjgzNTk5YjEwNzMyZTJmODAzY2Q5MTA1OTZlZDQyODE4MTNjODdlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1XaW4uY21ha2UKQEAgLTIwLDExICsyMCwxNSBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogCiBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwor
ICAgICAgICBjZi9DRlVSTEV4dHJhcy5oCiAgICAgICAgIGNmL1R5cGVDYXN0c0NGLmgKIAogICAg
ICAgICB0ZXh0L2NmL1RleHRCcmVha0l0ZXJhdG9yQ0YuaAogICAgICkKICAgICBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUworICAgICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKKyAgICAgICAgY2YvVVJM
Q0YuY3BwCisKICAgICAgICAgdGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCiAgICAgICAg
IHRleHQvY2YvU3RyaW5nQ0YuY3BwCiAgICAgICAgIHRleHQvY2YvU3RyaW5nSW1wbENGLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTQzNDVhZWU3NTMzM2JjZjg3YzE2YTM1Y2Q3YzAxZDUwYzAwNWU5Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTAsMCArMSwxMTA4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LTIwMDgsIDIwMTEtMjAxMywgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKyNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNp
bmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKKy8vIEZJWE1FOiBUaGlzIGZpbGUgbWFrZXMg
dG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJhdG9yIG9uIFN0cmluZy4KKy8vIFdlIGVpdGhlciBo
YXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0b3Igc28gaXQgZG9lc24ndCBpbnZvbHZlCisvLyBz
byBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFuZ2UgdGhpcyB0byB1c2UgU3RyaW5nQnVmZmVyIGlu
c3RlYWQuCisKKworbmFtZXNwYWNlIFdURiB7CisKK3R5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4g
Q2hhckJ1ZmZlcjsKK3R5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOworCitz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7CisKKy8vIENv
cGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3Vy
Y2UgY2hhcmFjdGVycyBhcmUKKy8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3Qg
YmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKKy8vIGluIHRoZSBz
b3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRo
ZSByZXN1bHQuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNo
YXIqIGRlc3QpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIG1lbWNweShkZXN0LCBzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgY29u
c3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgc2l6ZV90IGxl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzcmNb
aV0pOworICAgIH0KK30KKwordm9pZCBVUkw6OmludmFsaWRhdGUoKQoreworICAgIG1faXNWYWxp
ZCA9IGZhbHNlOworICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOworICAgIG1f
Y2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOworICAgIG1fc2NoZW1lRW5kID0gMDsKKyAgICBtX3Vz
ZXJTdGFydCA9IDA7CisgICAgbV91c2VyRW5kID0gMDsKKyAgICBtX3Bhc3N3b3JkRW5kID0gMDsK
KyAgICBtX2hvc3RFbmQgPSAwOworICAgIG1fcG9ydExlbmd0aCA9IDA7CisgICAgbV9wYXRoRW5k
ID0gMDsKKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7CisgICAgbV9xdWVyeUVuZCA9IDA7
Cit9CisKK1VSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwg
Y29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKK3sKKyAgICBVUkxQYXJzZXIgcGFyc2Vy
KHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Cit9CisKK3N0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCit7CisgICAgLy8g
QnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbAor
ICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4gKnVuc2lnbmVk
KiBjaGFyIGhlcmUKKyAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9ubHkgY2F0Y2gg
Y29udHJvbCBjaGFyYWN0ZXJzLgorICAgIHJldHVybiBjIDw9ICcgJzsKK30KKworVVJMIFVSTDo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBVUkwgcmVzdWx0ID0gKnRoaXM7CisgICAgcmVz
dWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK1N0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKK3sK
KyAgICBpZiAoIWhhc1BhdGgoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgdW5z
aWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKKyAgICBpZiAobV9zdHJpbmdbZW5kXSA9PSAnLycp
CisgICAgICAgIC0tZW5kOworCisgICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcucmV2ZXJzZUZp
bmQoJy8nLCBlbmQpOworICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2hv
c3RFbmQgKyBtX3BvcnRMZW5ndGgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgKytz
dGFydDsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0
ICsgMSk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7Cit9CisK
K1N0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBzdGFydCA9IGhv
c3RTdGFydCgpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3Rh
cnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKK30KKworc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJM
Ojpwb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcG9ydExlbmd0aCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCBudW1i
ZXI7CisgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBudW1iZXIgPSBjaGFyYWN0
ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBt
X3BvcnRMZW5ndGggLSAxLCAmb2spOworICAgIGVsc2UKKyAgICAgICAgbnVtYmVyID0gY2hhcmFj
dGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9zdEVuZCArIDEs
IG1fcG9ydExlbmd0aCAtIDEsICZvayk7CisgICAgaWYgKCFvayB8fCBudW1iZXIgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgcmV0dXJuIG51bWJlcjsKK30KKworU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBj
b25zdAoreworICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkpCisgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9ydC52YWx1
ZSgpKSk7CisgICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOworfQorCitTdHJpbmcgVVJMOjpw
cm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKK3sKKyAgICBTdHJpbmcgcmVzdWx0ID0gbV9zdHJp
bmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7CisKKyAgICBpZiAobV9w
YXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgeworICAgICAgICBjb25zdCBpbnQgYWxsb3dG
b3JUcmFpbGluZ0F0U2lnbiA9IDE7CisgICAgICAgIHJlc3VsdC5yZW1vdmUobV91c2VyU3RhcnQs
IG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdBdFNpZ24pOwor
ICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBTdHJpbmcgZGVjb2RlRXNj
YXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0KQoreworICAgIGF1dG8g
aW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBpZiAoIWlucHV0TGVuZ3RoKQorICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBWZWN0b3I8TENoYXI+IHBlcmNlbnREZWNv
ZGVkOworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXRMZW5n
dGgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKKyAgICAgICAgICAgICYmIGlucHV0TGVuZ3RoID4g
MgorICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgorICAgICAgICAgICAgJiYgaXNB
U0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKKyAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdp
dChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRB
cHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7CisgICAg
ICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGVyY2VudERlY29k
ZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKKyAgICB9CisgICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwor
fQorCitTdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBl
U2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91
c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Cit9CisKK1N0cmluZyBVUkw6OnBh
c3MoKSBjb25zdAoreworICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zy
b21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlckVuZCArIDEs
IG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Cit9CisKK1N0cmluZyBVUkw6OmVuY29k
ZWRVc2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlclN0
YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Cit9CisKK1N0cmluZyBVUkw6OmVuY29kZWRQ
YXNzKCkgY29uc3QKK3sKKyAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91
c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOworfQorCitTdHJpbmcg
VVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICghaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0
cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOworfQorCitib29sIFVSTDo6aGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5n
Lmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Cit9CisKK1N0cmluZyBVUkw6OmJhc2VBc1N0cmluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gp
OworfQorCisjaWYgIVVTRShDRikKKworU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25z
dAoreworICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNl
ZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOworfQorCisjZW5kaWYKKworI2lmZGVmIE5ERUJVRwor
CitzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldykKK3sK
K30KKworI2Vsc2UKKworc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmll
dyBwcm90b2NvbCkKK3sKKyAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0aGlz
IGZ1bmN0aW9uIGFueSBtb3JlLgorICAgIC8vIFRoZSBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFs
IGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVycworICAgIC8vIGFyZSBv
bmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3QgYW5kIHJlbGllZCBvbiB0
aGVzZSBjaGVja3MuCisgICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHByb3RvY29sLmNvZGVVbml0
cygpKSB7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOworICAgICAgICBBU1NF
UlQoY2hhcmFjdGVyID4gJyAnKTsKKyAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoY2hhcmFj
dGVyKSk7CisgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSA9
PSBjaGFyYWN0ZXIpOworICAgIH0KK30KKworI2VuZGlmCisKK3N0YXRpYyBMb2NrIGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKKwordXNpbmcgRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+Oworc3RhdGlj
IERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIHN0YXRpYyBEZWZhdWx0UG9ydEZvclByb3RvY29s
TWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKKyAgICByZXR1cm4gZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKK30KKworc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGlu
ZygpCit7CisgICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0
UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmco
KTsKKyAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCisgICAgICAgIGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmc7CisgICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOworfQorCit2b2lkIHJl
Z2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgZW5zdXJlRGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQpOworfQorCit2
b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdM
b2NrKTsKKyAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcoKSkKKyAgICAgICAgbWFwLT5jbGVhcigpOworfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQx
Nl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCit7CisgICAg
aWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcoKSkgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJv
dG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgICAgIEFTU0VSVChvdmVycmlkZU1hcCk7IC8v
IE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRlTWFwIGNhbm5v
dCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KKyAgICAgICAgYXV0byBpdGVyYXRv
ciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7
CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCisgICAgICAgICAg
ICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gVVJMUGFyc2VyOjpk
ZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKK30KKworYm9vbCBpc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkKK3sKKyAgICBy
ZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsKK30KKworYm9v
bCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Cit7CisgICAgYXNz
ZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7CisKKyAgICAvLyBKYXZhU2NyaXB0IFVS
THMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVSTCBkZWNpZGVz
IHRoZXkgYXJlIGludmFsaWQuCisgICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJvdG9jb2xJc0ph
dmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKKyAgICBBU1NFUlQoIWVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2YXNjcmlwdCIp
KTsKKworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0Lgor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7CisgICAgICAg
IGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdb
aV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
cmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZlIGNvbnN1bWVk
IGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KK30KKworYm9vbCBVUkw6OnByb3RvY29s
SXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKK3sKKyAgICBhc3NlcnRQcm90b2NvbElzR29v
ZChwcm90b2NvbCk7CisKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5sZW5ndGgoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtp
bmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9z
Y2hlbWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
bV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBVUkw6OnF1ZXJ5KCkgY29uc3QKK3sK
KyAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9xdWVy
eUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAorfQorCitTdHJpbmcgVVJMOjpwYXRoKCkgY29uc3QK
K3sKKyAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworICAg
IHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0gcG9ydEVuZCk7
Cit9CisKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCit7CisgICAgLy8g
RmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KKyAg
ICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKKyAgICBTdHJpbmcgbmV3
UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7CisgICAgYXV0byBj
YW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90
b2NvbCk7CisgICAgaWYgKCFjYW5vbmljYWxpemVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJp
bmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vic3RyaW5nKG1f
c2NoZW1lRW5kKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQorewor
ICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJu
IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5n
dGgoKSk7Cit9CisgICAgCisvLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRp
ZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KKy8vIHRoZSBvdXRwdXQgYnVm
ZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KKy8vIFJldHVybiB2
YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KK3N0YXRpYyBib29sIGFwcGVu
ZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykK
K3sKKyAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQg
bmFtZS4KKyAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBk
byBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCisgICAgY29uc3Qg
dW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OworICAgIAorICAgIGlmIChzdHJp
bmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJKHN0cmluZykp
IHsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIAorICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVu
Z3RoXTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5m
byBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJf
dCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVSTFBhcnNlcjo6
aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCisgICAgICAgIHN0cmluZy51cGNv
bnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1ZmZlciwgaG9z
dG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKKyAgICAKKyAg
ICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7Cisg
ICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0
ZWQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit1bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3Bhc3N3
b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsg
MTsKK30KKwordm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQoreworICAgIGlmICgh
bV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbG9uSW5kZXggPSBzLmZp
bmQoJzonKTsKKyAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOworICAgIGlmICghYXBwZW5kRW5j
b2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOworICAg
IGlmIChzbGFzaFNsYXNoTmVlZGVkKQorICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8v
Iik7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgp
LCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcu
c3Vic3RyaW5nKG1faG9zdEVuZCkpOworCisgICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVyLnRv
U3RyaW5nKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6
cmVtb3ZlUG9ydCgpCit7CisgICAgaWYgKCFtX3BvcnRMZW5ndGgpCisgICAgICAgIHJldHVybjsK
KyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVm
dChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsg
bV9wb3J0TGVuZ3RoKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCit2b2lk
IFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQoreworICAgIGlmICghbV9pc1ZhbGlkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9ydExlbmd0aDsK
KyAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hv
c3RFbmQgKyAxKTsKKworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3
KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3Ry
aW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQg
KyBtX3BvcnRMZW5ndGgpKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK3Zv
aWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQoreworICAg
IGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmdWaWV3IGhvc3RO
YW1lKGhvc3RBbmRQb3J0KTsKKyAgICBTdHJpbmdWaWV3IHBvcnQ7CisgICAgCisgICAgYXV0byBj
b2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOworICAgIGlmIChjb2xvbkluZGV4ICE9IG5v
dEZvdW5kKSB7CisgICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCAr
IDEpOworICAgICAgICBib29sIG9rOworICAgICAgICBpbnQgcG9ydEludCA9IHBvcnQudG9JbnRT
dHJpY3Qob2spOworICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbklu
ZGV4KTsKKyAgICB9CisKKyAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7CisgICAgaWYgKCFhcHBlbmRF
bmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOworCisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsKKyAg
ICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIv
LyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEo
KSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOworICAgIGlmICghcG9ydC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHBvcnQpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7CisKKyAgICBVUkxQYXJzZXIg
cGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Cit9CisKK3N0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5n
JiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCit7CisgICAgYXV0byBlbmNvZGUg
PSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgeworICAgICAgICBDU3RyaW5n
IHV0ZjggPSBpbnB1dC51dGY4KCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSB1dGY4LmRhdGEoKTsK
KyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBhdXRvIGxlbmd0aCA9IHV0
ZjgubGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7IGor
KykgeworICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKKyAgICAgICAgICAgIGlmIChzaG91
bGRFbmNvZGUoYykpIHsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMp
KTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhE
aWdpdChjKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwor
ICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aCgpOyArK2kp
IHsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1dFtpXSkpKQorICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7CisgICAgfQorICAgIHJldHVybiBpbnB1dDsKK30K
Kwordm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJh
Y3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0
YXRpb25zLAorICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUg
dXNlciBsb2dpbi4KKworICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKKyAgICBpZiAoIXVz
ZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29kZUNoYXJhY3Rl
cnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOworICAgICAgICBpZiAo
bV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisg
ICAgICAgICAgICB1ID0gIi8vIiArIHU7CisgICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0
IGhhdmUgb25lIGJlZm9yZS4KKyAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9
PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKKyAgICAgICAgICAgIHUu
YXBwZW5kKCdAJyk7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVz
ZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRFbmQg
JiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKKyAgICAgICAgICAg
IGVuZCArPSAxOworICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRy
ZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdl
LgorICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7CisgICAgICAgICAgICBVUkxQYXJz
ZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJTdGFy
dCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAgICAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBVUkw6
OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKKyAg
ICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmcgcCA9ICI6IiArIHBl
cmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0Vu
Y29kZVNldCkgKyAiQCI7CisgICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisgICAgICAgICAgICBwID0gIi8vIiArIHA7CisgICAg
ICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQgb3Vy
IG93bi4KKyAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAn
QCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVz
dWx0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2
ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0g
bV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisg
ICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBp
biB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFr
ZSBhIGNoYW5nZS4KKyAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKKyAgICAgICAgICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1f
dXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAg
ICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBPcHRp
bWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBlbnMgdG8gYmUg
ZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPworICAgIC8vIEZJWE1FOiBJcyBpdCBjb3JyZWN0IHRv
IGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJIGNoYXJhY3Rl
cnM/CisgICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgeyBtX3N0
cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVyKSB9LnJlc3Vs
dCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKK3sKKyAgICBp
ZiAoIW1faXNWYWxpZCkgeworICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBt
X3F1ZXJ5RW5kKQorICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7
Cit9CisKK3ZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpCit7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RyaW5nID0gbV9z
dHJpbmcubGVmdChtX3BhdGhFbmQpOworICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhFbmQ7Cit9CisK
K3ZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVND
SUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCisgICAgLy8gVXN1YWxs
eSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYt
OCwgYnV0IHdlIGRvbid0IGhhdmUKKyAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRo
aXMgZnVuY3Rpb24uCisgICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2CisgICAgaWYg
KChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkp
IHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJp
bmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKG1fcXVlcnlFbmQpKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7CisgICAgfQorCit9CisKK3ZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKK3sK
KyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIHBhdGgg
PSBzOworICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKKyAgICAgICAg
cGF0aCA9ICIvIiArIHBhdGg7CisKKyAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9
IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnPycg
fHwgY2hhcmFjdGVyID09ICcjJzsKKyAgICB9OworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0
cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCks
IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiks
IFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7CisgICAgKnRoaXMg
PSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK2Jvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRp
Zmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5tX3F1ZXJ5RW5k
ICE9IGIubV9xdWVyeUVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHF1
ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBx
dWVyeUxlbmd0aDsgKytpKQorICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygp
W2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJM
JiBiKQoreworICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7CisgICAgICAgIGlmIChhLnN0cmlu
ZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVh
bChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5tX3NjaGVtZUVuZCAh
PSBiLm1fc2NoZW1lRW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBo
b3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEu
bV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0
U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gYi5ob3N0
U3RhcnQoKTsKKyAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7CisgICAgICAgIGlmIChhLnN0cmluZygp
W2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgLy8gQW5kIHRoZSBob3N0CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RM
ZW5ndGhBOyArK2kpIHsKKyAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldICE9
IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBV
UkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0
U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0
YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKKyAgICB1bnNp
Z25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKKyAgICBpZiAoaG9z
dExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7CisgICAgICAgIGlmIChh
LnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFydEIgKyBpXSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0
Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
ZG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIXByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBo
b3N0ID0gdGhpcy0+aG9zdCgpOworICAgIGlmICghaG9zdC5lbmRzV2l0aChkb21haW4pKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9PSBkb21haW4u
bGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgpIC0gMV0gPT0g
Jy4nOworfQorCitTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJp
bmcmIGlucHV0KQoreworICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhpbnB1dCwg
VVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOworfQorCitib29sIFVSTDo6aXNIaWVy
YXJjaGljYWwoKSBjb25zdAoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9PSAnOicpOworICAgIHJl
dHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKK30KKwordm9pZCBVUkw6OmNv
cHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAoreworICAgIC8vIEZJ
WE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUgY2hhcmFjdGVy
cyBpbiB0aGUgc3RyaW5nIQorICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlkIFVSTCwgd2hp
Y2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCisgICAgYnVmZmVyLnJl
c2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIu
ZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Citib29sIHByb3Rv
Y29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2Nv
bCkKK3sKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJp
bmcgb2JqZWN0LgorICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29sKSkpOworICAg
IGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBqID0gMDsg
dXJsW2ldOyArK2kpIHsKKyAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNv
bnRyb2wgY2hhcmFjdGVycy4KKyAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91bGRUcmltRnJv
bVVSTCh1cmxbaV0pKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlzTGVhZGluZyA9
IGZhbHNlOworCisgICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVzLgorICAgICAg
ICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ldID09ICdcbicp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIXByb3RvY29sW2pdKQorICAg
ICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7CisgICAgICAgIGlmICghaXNBU0NJSUFscGhh
Q2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICArK2o7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2Nv
bCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wpOworfQor
CitpbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0
IGNoYXIqIHByb3RvY29sKQoreworICAgIHJldHVybiBXVEY6OnByb3RvY29sSXNJbnRlcm5hbChz
dHJpbmcsIHByb3RvY29sKTsKK30KKworI2lmbmRlZiBOREVCVUcKKwordm9pZCBVUkw6OnByaW50
KCkgY29uc3QKK3sKKyAgICBwcmludGYoIiVzXG4iLCBtX3N0cmluZy51dGY4KCkuZGF0YSgpKTsK
K30KKworI2VuZGlmCisKK1N0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNv
bnN0Cit7CisgICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKKyAgICByZWZlcnJlci5zZXRVc2VyKFN0
cmluZygpKTsKKyAgICByZWZlcnJlci5zZXRQYXNzKFN0cmluZygpKTsKKyAgICByZWZlcnJlci5y
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gcmVmZXJyZXIuc3RyaW5nKCk7
Cit9CisKK2Jvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0Cit7CisgICAgLy8gSW5jbHVkaW5n
IGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVhIHNpbmNlIGRyYWcgYW5kIGRyb3AgdXNlcyB0
aGlzIGNoZWNrCisgICAgLy8gYW5kIGluY2x1ZGluZyBmZWVkIHdvdWxkIGFsbG93IGZlZWRzIHRv
IHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxvZworICAgIC8vIHJlYWQgdGhlIGNvbnRlbnRz
IG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBldmVuIHdpdGhvdXQgYSBkcm9wLgorICAgIC8v
IExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzTG9j
YWwoKSBmdW5jdGlvbi4KKyAgICByZXR1cm4gcHJvdG9jb2xJcygiZmlsZSIpOworfQorCitib29s
IHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIHJldHVybiBw
cm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29sIHByb3RvY29s
SXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKQoreworICAgIHJldHVybiBwcm90b2NvbElzSW50
ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29sIHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgYXV0byBsZW5ndGggPSB1cmwubGVuZ3RoKCk7
CisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9i
amVjdC4KKyAgICByZXR1cm4gbGVuZ3RoID49IDUKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2Fz
ZWxlc3NFcXVhbCh1cmxbMF0sICdoJykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbCh1cmxbMV0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1
cmxbMl0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbM10s
ICdwJykKKyAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwgKGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwodXJsWzRdLCAncycpICYmIGxlbmd0aCA+PSA2ICYmIHVybFs1XSA9PSAnOicpKTsKK30K
KworY29uc3QgVVJMJiBibGFua1VSTCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVS
TD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayIpOworICAgIHJldHVybiBzdGF0
aWNCbGFua1VSTDsKK30KKworYm9vbCBVUkw6OmlzQmxhbmtVUkwoKSBjb25zdAoreworICAgIHJl
dHVybiBwcm90b2NvbElzKCJhYm91dCIpOworfQorCitib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVS
TCYgdXJsKQoreworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgp
OworCisgICAgLy8gU2luY2UgbW9zdCBVUkxzIGRvbid0IGhhdmUgYSBwb3J0LCByZXR1cm4gZWFy
bHkgZm9yIHRoZSAibm8gcG9ydCIgY2FzZS4KKyAgICBpZiAoIXBvcnQpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gVGhpcyBibG9ja2VkIHBvcnQgbGlzdCBtYXRjaGVzIHRoZSBwb3J0
IGJsb2NraW5nIHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgorICAgIC8vIFNlZSBodHRwOi8vd3d3
Lm1vemlsbGEub3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFubmluZy5odG1sIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgorICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBibG9ja2VkUG9ydExpc3RbXSA9
IHsKKyAgICAgICAgMSwgICAgLy8gdGNwbXV4CisgICAgICAgIDcsICAgIC8vIGVjaG8KKyAgICAg
ICAgOSwgICAgLy8gZGlzY2FyZAorICAgICAgICAxMSwgICAvLyBzeXN0YXQKKyAgICAgICAgMTMs
ICAgLy8gZGF5dGltZQorICAgICAgICAxNSwgICAvLyBuZXRzdGF0CisgICAgICAgIDE3LCAgIC8v
IHFvdGQKKyAgICAgICAgMTksICAgLy8gY2hhcmdlbgorICAgICAgICAyMCwgICAvLyBGVFAtZGF0
YQorICAgICAgICAyMSwgICAvLyBGVFAtY29udHJvbAorICAgICAgICAyMiwgICAvLyBTU0gKKyAg
ICAgICAgMjMsICAgLy8gdGVsbmV0CisgICAgICAgIDI1LCAgIC8vIFNNVFAKKyAgICAgICAgMzcs
ICAgLy8gdGltZQorICAgICAgICA0MiwgICAvLyBuYW1lCisgICAgICAgIDQzLCAgIC8vIG5pY25h
bWUKKyAgICAgICAgNTMsICAgLy8gZG9tYWluCisgICAgICAgIDc3LCAgIC8vIHByaXYtcmpzCisg
ICAgICAgIDc5LCAgIC8vIGZpbmdlcgorICAgICAgICA4NywgICAvLyB0dHlsaW5rCisgICAgICAg
IDk1LCAgIC8vIHN1cGR1cAorICAgICAgICAxMDEsICAvLyBob3N0cmlhbWUKKyAgICAgICAgMTAy
LCAgLy8gaXNvLXRzYXAKKyAgICAgICAgMTAzLCAgLy8gZ3BwaXRucAorICAgICAgICAxMDQsICAv
LyBhY3ItbmVtYQorICAgICAgICAxMDksICAvLyBQT1AyCisgICAgICAgIDExMCwgIC8vIFBPUDMK
KyAgICAgICAgMTExLCAgLy8gc3VucnBjCisgICAgICAgIDExMywgIC8vIGF1dGgKKyAgICAgICAg
MTE1LCAgLy8gU0ZUUAorICAgICAgICAxMTcsICAvLyB1dWNwLXBhdGgKKyAgICAgICAgMTE5LCAg
Ly8gbm50cAorICAgICAgICAxMjMsICAvLyBOVFAKKyAgICAgICAgMTM1LCAgLy8gbG9jLXNydiAv
IGVwbWFwCisgICAgICAgIDEzOSwgIC8vIG5ldGJpb3MKKyAgICAgICAgMTQzLCAgLy8gSU1BUDIK
KyAgICAgICAgMTc5LCAgLy8gQkdQCisgICAgICAgIDM4OSwgIC8vIExEQVAKKyAgICAgICAgNDY1
LCAgLy8gU01UUCtTU0wKKyAgICAgICAgNTEyLCAgLy8gcHJpbnQgLyBleGVjCisgICAgICAgIDUx
MywgIC8vIGxvZ2luCisgICAgICAgIDUxNCwgIC8vIHNoZWxsCisgICAgICAgIDUxNSwgIC8vIHBy
aW50ZXIKKyAgICAgICAgNTI2LCAgLy8gdGVtcG8KKyAgICAgICAgNTMwLCAgLy8gY291cmllcgor
ICAgICAgICA1MzEsICAvLyBDaGF0CisgICAgICAgIDUzMiwgIC8vIG5ldG5ld3MKKyAgICAgICAg
NTQwLCAgLy8gVVVDUAorICAgICAgICA1NDgsICAvLyBhZnBvdmVydGNwIFtBcHBsZSBhZGRpdGlv
bl0KKyAgICAgICAgNTU2LCAgLy8gcmVtb3RlZnMKKyAgICAgICAgNTYzLCAgLy8gTk5UUCtTU0wK
KyAgICAgICAgNTg3LCAgLy8gRVNNVFAKKyAgICAgICAgNjAxLCAgLy8gc3lzbG9nLWNvbm4KKyAg
ICAgICAgNjM2LCAgLy8gTERBUCtTU0wKKyAgICAgICAgOTkzLCAgLy8gSU1BUCtTU0wKKyAgICAg
ICAgOTk1LCAgLy8gUE9QMytTU0wKKyAgICAgICAgMjA0OSwgLy8gTkZTCisgICAgICAgIDM2NTks
IC8vIGFwcGxlLXNhc2wgLyBQYXNzd29yZFNlcnZlciBbQXBwbGUgYWRkaXRpb25dCisgICAgICAg
IDQwNDUsIC8vIGxvY2tkCisgICAgICAgIDQxOTAsIC8vIE1hbmFnZVNpZXZlIFtBcHBsZSBhZGRp
dGlvbl0KKyAgICAgICAgNjAwMCwgLy8gWDExCisgICAgICAgIDY2NjUsIC8vIEFsdGVybmF0ZSBJ
UkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2NjY2LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBs
ZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2NywgLy8gU3RhbmRhcmQgSVJDIFtBcHBsZSBhZGRpdGlv
bl0KKyAgICAgICAgNjY2OCwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAg
ICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2Njc5
LCAvLyBBbHRlcm5hdGUgSVJDIFNTTCBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2OTcsIC8v
IElSQytTU0wgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICBpbnZhbGlkUG9ydE51bWJlciwgLy8g
VXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJlcnMKKyAgICB9OworCisgICAgLy8g
SWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBvcnQgbGlzdCwgYWxsb3cgaXQuCisg
ICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3Rk
OjplbmQoYmxvY2tlZFBvcnRMaXN0KSkpOworICAgIGlmICghc3RkOjpiaW5hcnlfc2VhcmNoKHN0
ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRMaXN0KSwgcG9y
dC52YWx1ZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBBbGxvdyBwb3J0cyAy
MSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxhIGRvZXMuCisgICAgaWYgKChwb3J0LnZh
bHVlKCkgPT0gMjEgfHwgcG9ydC52YWx1ZSgpID09IDIyKSAmJiB1cmwucHJvdG9jb2xJcygiZnRw
IikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gQWxsb3cgYW55IHBvcnQgbnVtYmVy
IGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJlciBpcyBpZ25vcmVkLgorICAgIGlm
ICh1cmwucHJvdG9jb2xJcygiZmlsZSIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5n
JiB1cmwpCit7CisgICAgQVNTRVJUKHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJkYXRhIikpOwor
CisgICAgLy8gRklYTUU6IFdoYXQncyB0aGUgcmlnaHQgYmVoYXZpb3Igd2hlbiB0aGUgVVJMIGhh
cyBhIGNvbW1hIGZpcnN0LCBidXQgYSBzZW1pY29sb24gbGF0ZXI/CisgICAgLy8gQ3VycmVudGx5
IHRoaXMgY29kZSB3aWxsIGJyZWFrIGF0IHRoZSBzZW1pY29sb24gaW4gdGhhdCBjYXNlLiBOb3Qg
c3VyZSB0aGF0J3MgY29ycmVjdC4KKyAgICBhdXRvIGluZGV4ID0gdXJsLmZpbmQoJzsnLCA1KTsK
KyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIGluZGV4ID0gdXJsLmZpbmQoJywn
LCA1KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRo
ZXJlIHdhcyBhbiBvbGQgY29tbWVudCBoZXJlIHRoYXQgbWFkZSBpdCBzb3VuZCBsaWtlIHRoaXMg
c2hvdWxkIGJlIHJldHVybmluZyB0ZXh0L3BsYWluLgorICAgICAgICAvLyBCdXQgd2UgaGF2ZSBi
ZWVuIHJldHVybmluZyBlbXB0eSBzdHJpbmcgaGVyZSBmb3Igc29tZSB0aW1lLCBzbyBub3QgY2hh
bmdpbmcgaXRzIGJlaGF2aW9yIGF0IHRoaXMgdGltZS4KKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CisgICAgfQorICAgIGlmIChpbmRleCA9PSA1KQorICAgICAgICByZXR1cm4gInRleHQv
cGxhaW4iX3M7CisgICAgQVNTRVJUKGluZGV4ID49IDUpOworICAgIHJldHVybiB1cmwuc3Vic3Ry
aW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKK30KKworU3RyaW5n
IFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkgY29u
c3QKK3sKKyAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkgPD0gbGVuZ3RoKQorICAgICAgICByZXR1
cm4gc3RyaW5nKCk7CisKKyAgICByZXR1cm4gc3RyaW5nKCkubGVmdChsZW5ndGggLyAyIC0gMSkg
KyAiLi4uIiArIHN0cmluZygpLnJpZ2h0KGxlbmd0aCAvIDIgLSAyKTsKK30KKworVVJMIFVSTDo6
ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhcnQpCit7Cisg
ICAgcmV0dXJuIFVSTChVUkwoKSwgIndlYmtpdC1mYWtlLXVybDovLyIgKyBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkgKyAnLycgKyByZWxhdGl2ZVBhcnQpOworfQorCitVUkwgVVJMOjpmaWxl
VVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgcmV0
dXJuIFVSTChVUkwoKSwgImZpbGU6Ly8vIiArIGZpbGVQYXRoKTsKK30KKworVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVVJMJiB1cmwpCit7CisgICAgdHMgPDwg
dXJsLnN0cmluZygpOworICAgIHJldHVybiB0czsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkg
JiYgIVVTRShTT1VQKQorc3RhdGljIGJvb2wgaXNJUHY0QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmlu
ZykKK3sKKyAgICBhdXRvIGNvdW50ID0gMDsKKworICAgIGZvciAoY29uc3QgYXV0byBvY3RldCA6
IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCcuJykpIHsKKyAgICAgICAgaWYgKGNv
dW50ID49IDQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgYXV0
byBsZW5ndGggPSBvY3RldC5sZW5ndGgoKTsKKyAgICAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3Ro
ID4gMykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBhdXRvIHZhbHVlID0g
MDsKKyAgICAgICAgZm9yIChhdXRvIGkgPSAwdTsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICBjb25zdCBhdXRvIGRpZ2l0ID0gb2N0ZXRbaV07CisKKyAgICAgICAgICAgIC8vIFByb2hp
Yml0IGxlYWRpbmcgemVyb2VzLgorICAgICAgICAgICAgaWYgKGRpZ2l0ID4gJzknIHx8IGRpZ2l0
IDwgKCFpICYmIGxlbmd0aCA+IDEgPyAnMScgOiAnMCcpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAgICAgdmFsdWUgPSAxMCAqIHZhbHVlICsgKGRpZ2l0IC0gJzAn
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2YWx1ZSA+IDI1NSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBjb3VudCsrOworICAgIH0KKworICAgIHJldHVybiAoY291
bnQgPT0gNCk7Cit9CisKK3N0YXRpYyBib29sIGlzSVB2NkFkZHJlc3MoU3RyaW5nVmlldyBzdHJp
bmcpCit7CisgICAgZW51bSBTa2lwU3RhdGUgeyBOb25lLCBXaWxsU2tpcCwgU2tpcHBpbmcsIFNr
aXBwZWQsIEZpbmFsIH07CisgICAgYXV0byBza2lwU3RhdGUgPSBOb25lOworICAgIGF1dG8gY291
bnQgPSAwOworCisgICAgZm9yIChjb25zdCBhdXRvIGhleHRldCA6IHN0cmluZy5zcGxpdEFsbG93
aW5nRW1wdHlFbnRyaWVzKCc6JykpIHsKKyAgICAgICAgaWYgKGNvdW50ID49IDggfHwgc2tpcFN0
YXRlID09IEZpbmFsKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0
IGF1dG8gbGVuZ3RoID0gaGV4dGV0Lmxlbmd0aCgpOworICAgICAgICBpZiAoIWxlbmd0aCkgewor
ICAgICAgICAgICAgLy8gOjogbWF5IGJlIHVzZWQgYW55d2hlcmUgdG8gc2tpcCAxIHRvIDggaGV4
dGV0cywgYnV0IG9ubHkgb25jZS4KKyAgICAgICAgICAgIGlmIChza2lwU3RhdGUgPT0gU2tpcHBl
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChza2lw
U3RhdGUgPT0gTm9uZSkKKyAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSAhY291bnQgPyBXaWxs
U2tpcCA6IFNraXBwaW5nOworICAgICAgICAgICAgZWxzZSBpZiAoc2tpcFN0YXRlID09IFdpbGxT
a2lwKQorICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IFNraXBwaW5nOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IEZpbmFsOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2tpcFN0YXRlID09IFdpbGxTa2lwKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChza2lwU3RhdGUgPT0gU2tp
cHBpbmcpCisgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGVkOworCisgICAgICAgIGlmIChs
ZW5ndGggPiA0KSB7CisgICAgICAgICAgICAvLyBBbiBJUHY0IGFkZHJlc3MgbWF5IGJlIHVzZWQg
aW4gcGxhY2Ugb2YgdGhlIGZpbmFsIHR3byBoZXh0ZXRzLgorICAgICAgICAgICAgaWYgKChza2lw
U3RhdGUgPT0gTm9uZSAmJiBjb3VudCAhPSA2KSB8fCAoc2tpcFN0YXRlID09IFNraXBwZWQgJiYg
Y291bnQgPj0gNikgfHwgIWlzSVB2NEFkZHJlc3MoaGV4dGV0KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHNraXBTdGF0ZSA9IEZpbmFsOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gY29kZVVu
aXQgOiBoZXh0ZXQuY29kZVVuaXRzKCkpIHsKKyAgICAgICAgICAgIC8vIElQdjYgYWxsb3dzIGxl
YWRpbmcgemVyb2VzLgorICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoY29kZVVuaXQp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGNv
dW50Kys7CisgICAgfQorCisgICAgcmV0dXJuIChjb3VudCA9PSA4ICYmIHNraXBTdGF0ZSA9PSBO
b25lKSB8fCBza2lwU3RhdGUgPT0gU2tpcHBlZCB8fCBza2lwU3RhdGUgPT0gRmluYWw7Cit9CisK
K2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQoreworICAgIGlmICho
b3N0LmZpbmQoJzonKSA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIGlzSVB2NEFkZHJlc3Mo
aG9zdCk7CisKKyAgICByZXR1cm4gaXNJUHY2QWRkcmVzcyhob3N0KTsKK30KKyNlbmRpZgorCit9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291
cmNlL1dURi93dGYvVVJMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ3M2JjNzA1NmZhMzQ1YmVkZTBhOGMyNTgx
YTgwM2RhNzViMDk5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCkBA
IC0wLDAgKzEsMzkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBVU0UoQ0Yp
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKKyNlbmRpZgorCisjaWYg
VVNFKFNPVVApCisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KKyNlbmRpZgor
CisjaWYgVVNFKEZPVU5EQVRJT04pCitPQkpDX0NMQVNTIE5TVVJMOworI2VuZGlmCisKK25hbWVz
cGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKKworY2xhc3MgVVJMVGV4dEVuY29kaW5nIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5n
KFN0cmluZ1ZpZXcpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIH5VUkxUZXh0RW5jb2RpbmcoKSB7
IH07Cit9OworCitzdHJ1Y3QgVVJMSGFzaDsKKworY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIFVS
TCB7CitwdWJsaWM6CisgICAgLy8gR2VuZXJhdGVzIGEgVVJMIHdoaWNoIGNvbnRhaW5zIGEgbnVs
bCBzdHJpbmcuCisgICAgVVJMKCkgeyBpbnZhbGlkYXRlKCk7IH0KKworICAgIGV4cGxpY2l0IFVS
TChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWUpIHsgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBzdHJpbmcoKS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisKKyAg
ICAvLyBSZXNvbHZlcyB0aGUgcmVsYXRpdmUgVVJMIHdpdGggdGhlIGdpdmVuIGJhc2UgVVJMLiBJ
ZiBwcm92aWRlZCwgdGhlCisgICAgLy8gVVJMVGV4dEVuY29kaW5nIGlzIHVzZWQgdG8gZW5jb2Rl
IG5vbi1BU0NJSSBjaGFyYWNlcnMuIFRoZSBiYXNlIFVSTCBjYW4gYmUKKyAgICAvLyBudWxsIG9y
IGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRl
ZCBhcworICAgIC8vIGFic29sdXRlLgorICAgIC8vIEZJWE1FOiBJZiB0aGUgYmFzZSBVUkwgaXMg
aW52YWxpZCwgdGhpcyBhbHdheXMgY3JlYXRlcyBhbiBpbnZhbGlkCisgICAgLy8gVVJMLiBJbnN0
ZWFkIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVyIHRvIHRyZWF0IGFsbCBpbnZhbGlkIGJhc2Ug
VVJMcworICAgIC8vIHRoZSBzYW1lIHdheSB3ZSB0cmVhdGUgbnVsbCBhbmQgZW1wdHkgYmFzZSBV
UkxzLgorICAgIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNv
bnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKKworICAgIHN0YXRpYyBVUkwgZmFrZVVS
TFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFVSTCBmaWxlVVJM
V2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHN0cmlwcGVk
Rm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OworCisgICAgLy8gRklYTUU6IFRoZSBhYm92ZSBmdW5j
dGlvbnMgc2hvdWxkIGJlIGhhcm1vbml6ZWQgc28gdGhhdCBwYXNzaW5nIGEKKyAgICAvLyBiYXNl
IG9mIG51bGwgb3IgdGhlIGVtcHR5IHN0cmluZyBnaXZlcyB0aGUgc2FtZSByZXN1bHQgYXMgdGhl
CisgICAgLy8gc3RhbmRhcmQgU3RyaW5nIGNvbnN0cnVjdG9yLgorCisgICAgLy8gTWFrZXMgYSBk
ZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5b3UgbmVlZCB0byB1c2UgYSBVUkwgb24gYW5vdGhl
cgorICAgIC8vIHRocmVhZC4gU2luY2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3Rz
IGFyZSBpbW11dGFibGUsIHRoZXJlJ3MKKyAgICAvLyBubyBvdGhlciByZWFzb24gdG8gZXZlciBw
cmVmZXIgaXNvbGF0ZWRDb3B5KCkgb3ZlciBwbGFpbiBvbGQgYXNzaWdubWVudC4KKyAgICBVUkwg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0OworICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworCisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHlvdSBjYW4gc2V0IHRoZSBob3N0IGFuZCBwb3J0IGZvciB0aGUgVVJM
LgorICAgIC8vIE5vbi1oaWVyYXJjaGljYWwgVVJMcyBkb24ndCBoYXZlIGEgaG9zdCBhbmQgcG9y
dC4KKyAgICBib29sIGNhblNldEhvc3RPclBvcnQoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNo
aWNhbCgpOyB9CisKKyAgICBib29sIGNhblNldFBhdGhuYW1lKCkgY29uc3QgeyByZXR1cm4gaXNI
aWVyYXJjaGljYWwoKTsgfQorICAgIGJvb2wgaXNIaWVyYXJjaGljYWwoKSBjb25zdDsKKworICAg
IGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKworICAg
IFN0cmluZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoID0g
MTAyNCkgY29uc3Q7CisKKyAgICBTdHJpbmdWaWV3IHByb3RvY29sKCkgY29uc3Q7CisgICAgU3Ry
aW5nVmlldyBob3N0KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgp
IGNvbnN0OworICAgIFN0cmluZyBob3N0QW5kUG9ydCgpIGNvbnN0OworICAgIFN0cmluZyBwcm90
b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7CisgICAgU3RyaW5nIHVzZXIoKSBjb25zdDsKKyAgICBT
dHJpbmcgcGFzcygpIGNvbnN0OworICAgIFN0cmluZyBwYXRoKCkgY29uc3Q7CisgICAgU3RyaW5n
IGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7CisgICAgU3RyaW5nIHF1ZXJ5KCkgY29uc3Q7Cisg
ICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworICAgIGJvb2wgaGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBib29sIGhhc1VzZXJuYW1lKCkgY29uc3Q7Cisg
ICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OworICAgIGJvb2wgaGFzUXVlcnkoKSBjb25zdDsK
KyAgICBib29sIGhhc0ZyYWdtZW50KCkgY29uc3Q7CisgICAgYm9vbCBoYXNQYXRoKCkgY29uc3Q7
CisKKyAgICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzKCksIHRoZXNlIGZ1bmN0aW9ucyBkb24n
dCBkZWNvZGUgZXNjYXBlIHNlcXVlbmNlcy4KKyAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3Ig
YWNjdXJhdGUgcm91bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5jb2RpbmcgZG9lc24ndCBlbmNvZGUg
JyUnIGNoYXJhY3RlcnMuCisgICAgU3RyaW5nIGVuY29kZWRVc2VyKCkgY29uc3Q7CisgICAgU3Ry
aW5nIGVuY29kZWRQYXNzKCkgY29uc3Q7CisKKyAgICBTdHJpbmcgYmFzZUFzU3RyaW5nKCkgY29u
c3Q7CisKKyAgICBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsKKworICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBVUkwncyBwcm90b2NvbCBpcyB0aGUgc2FtZSBhcyB0aGUg
bnVsbC0KKyAgICAvLyB0ZXJtaW5hdGVkIEFTQ0lJIGFyZ3VtZW50LiBUaGUgYXJndW1lbnQgbXVz
dCBiZSBsb3dlci1jYXNlLgorICAgIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7
CisgICAgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgcHJvdG9j
b2xJc0Jsb2IoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJibG9iIik7IH0KKyAgICBib29s
IHByb3RvY29sSXNEYXRhKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9Cisg
ICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3Q7CisgICAgYm9vbCBpc0xvY2Fs
RmlsZSgpIGNvbnN0OworICAgIGJvb2wgaXNCbGFua1VSTCgpIGNvbnN0OworICAgIGJvb2wgY2Fu
bm90QmVBQmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fubm90QmVBQmFzZVVSTDsgfQorCisg
ICAgYm9vbCBpc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYpIGNvbnN0OworCisgICAgYm9v
bCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEhvc3QoY29uc3QgU3Ry
aW5nJik7CisKKyAgICB2b2lkIHJlbW92ZVBvcnQoKTsKKyAgICB2b2lkIHNldFBvcnQodW5zaWdu
ZWQgc2hvcnQpOworCisgICAgLy8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206
ODAwMCIuCisgICAgdm9pZCBzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKKworICAgIHZv
aWQgc2V0VXNlcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5n
Jik7CisKKyAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBT
IFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aAorICAgIC8vIHdpbGwgYmUgIi8iLgorICAgIHZvaWQg
c2V0UGF0aChjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0
aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVkCisgICAgLy8g
Zm9yIHlvdS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZl
IGEgIj8iIGluIHRoZQorICAgIC8vIFVSTCAod2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xl
YXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcuCisgICAgdm9pZCBzZXRRdWVyeShjb25z
dCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcp
OworICAgIHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisKKyAgICB2b2lkIHJlbW92
ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7CisKKyAgICBzdGF0aWMgYm9vbCBob3N0SXNJ
UEFkZHJlc3MoU3RyaW5nVmlldyk7CisKKyAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25zdDsK
KyAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7CisgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFz
dFNsYXNoKCkgY29uc3Q7CisKKyAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyBy
ZXR1cm4gc3RyaW5nKCk7IH0KKworI2lmIFVTRShDRikKKyAgICBVUkwoQ0ZVUkxSZWYpOworICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBjb25zdDsKKyNlbmRpZgorCisjaWYg
VVNFKFNPVVApCisgICAgVVJMKFNvdXBVUkkqKTsKKyAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IGNy
ZWF0ZVNvdXBVUkkoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAg
VVJMKE5TVVJMKik7CisgICAgb3BlcmF0b3IgTlNVUkwqKCkgY29uc3Q7CisjZW5kaWYKKyNpZmRl
ZiBfX09CSkNfXworICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIHN0cmlu
ZygpOyB9CisjZW5kaWYKKworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIHByaW50KCkgY29uc3Q7
CisjZW5kaWYKKworICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiwgVVJMJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgVVJMUGFyc2VyOworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIHN0YXRp
YyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOworICAgIHZvaWQg
Y29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0OworICAgIHVuc2ln
bmVkIGhvc3RTdGFydCgpIGNvbnN0OworCisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJM
Jik7CisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKyAgICBmcmllbmQgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKwor
ICAgIFN0cmluZyBtX3N0cmluZzsKKworICAgIHVuc2lnbmVkIG1faXNWYWxpZCA6IDE7CisgICAg
dW5zaWduZWQgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKKyAgICB1bnNpZ25lZCBtX2Nh
bm5vdEJlQUJhc2VVUkwgOiAxOworCisgICAgLy8gVGhpcyBpcyBvdXQgb2Ygb3JkZXIgdG8gYWxp
Z24gdGhlIGJpdHMgYmV0dGVyLiBUaGUgcG9ydCBpcyBhZnRlciB0aGUgaG9zdC4KKyAgICB1bnNp
Z25lZCBtX3BvcnRMZW5ndGggOiAzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4
UG9ydExlbmd0aCA9ICgxIDw8IDMpIC0gMTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbWF4U2NoZW1lTGVuZ3RoID0gKDEgPDwgMjYpIC0gMTsKKyAgICB1bnNpZ25lZCBtX3NjaGVt
ZUVuZCA6IDI2OworICAgIHVuc2lnbmVkIG1fdXNlclN0YXJ0OworICAgIHVuc2lnbmVkIG1fdXNl
ckVuZDsKKyAgICB1bnNpZ25lZCBtX3Bhc3N3b3JkRW5kOworICAgIHVuc2lnbmVkIG1faG9zdEVu
ZDsKKyAgICB1bnNpZ25lZCBtX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICB1bnNpZ25lZCBtX3Bh
dGhFbmQ7CisgICAgdW5zaWduZWQgbV9xdWVyeUVuZDsKK307CisKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6ZW9mKHVuc2lnbmVkKSwgIlVSTCBz
aG91bGQgc3RheSBzbWFsbCIpOworCit0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgVVJM
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc3Ry
aW5nOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgVVJMOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCit7CisgICAgYXV0byBvcHRpb25hbFVSTCA9IFVSTDo6
ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghb3B0aW9uYWxVUkwpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVSTCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgU3RyaW5nIHN0cmluZzsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHN0cmluZykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIFVSTChVUkwoKSwgc3RyaW5nKTsKK30KKworV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwm
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9j
b2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKwor
V1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYmxhbmtVUkwoKTsKKworLy8gRnVuY3Rpb25z
IHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCisvLyBUaGVzZSBhcmUgb3BlcmF0aW9u
cyB0aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJMLgorLy8gVGhlc2UgYXJlIGFsc28g
ZGlmZmVyZW50IGZyb20gdGhlIFVSTCBmdW5jdGlvbnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVp
cmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJzYWJsZSBVUkwuCisvLyBUaGlzIGlz
IGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1c2UgdmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBu
b3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxpZCBieSBVUkwuCisKK1dURl9FWFBPUlRfUFJJ
VkFURSBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3Rv
Y29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0
IFN0cmluZyYgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2Ny
aXB0KFN0cmluZ1ZpZXcgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHBy
b3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYpOyAvLyBCbGFja2xpc3QgcG9ydHMgdGhhdCBz
aG91bGQgbmV2ZXIgYmUgdXNlZCBmb3IgV2ViIHJlc291cmNlcy4KKworV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZf
dCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKTsKKworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNWYWxpZFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworCitXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwp
OworCisvLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3NlLCBkaWZmZXJl
bnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRoZSBVUkwgU3Rh
bmRhcmQuCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1
ZW5jZXMoY29uc3QgU3RyaW5nJik7CisKKy8vIElubGluZXMuCisKK2lubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5n
KCkgPT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwm
IGEsIGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQor
eworICAgIHJldHVybiBhID09IGIuc3RyaW5nKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5nKCkg
IT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEs
IGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiOworfQorCitp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQorewor
ICAgIHJldHVybiBhICE9IGIuc3RyaW5nKCk7Cit9CisKKy8vIElubGluZSB2ZXJzaW9ucyBvZiBz
b21lIG5vbi1Hb29nbGVVUkwgZnVuY3Rpb25zIHNvIHdlIGNhbiBnZXQgaW5saW5pbmcKKy8vIHdp
dGhvdXQgaGF2aW5nIHRvIGhhdmUgYSBsb3Qgb2YgdWdseSBpZmRlZnMgaW4gdGhlIGNsYXNzIGRl
ZmluaXRpb24uCisKK2lubGluZSBib29sIFVSTDo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zdHJpbmcuaXNOdWxsKCk7Cit9CisKK2lubGluZSBib29sIFVSTDo6aXNFbXB0eSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5saW5lIGJvb2wg
VVJMOjppc1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkOworfQorCitpbmxp
bmUgYm9vbCBVUkw6Omhhc1BhdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhdGhFbmQgIT0g
bV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc1VzZXJu
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VyRW5kID4gbV91c2VyU3RhcnQ7Cit9CisK
K2lubGluZSBib29sIFVSTDo6aGFzUGFzc3dvcmQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Bh
c3N3b3JkRW5kID4gKG1fdXNlckVuZCArIDEpOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc1F1
ZXJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9xdWVyeUVuZCA+IG1fcGF0aEVuZDsKK30KKwor
aW5saW5lIGJvb2wgVVJMOjpoYXNGcmFnbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNW
YWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlFbmQ7Cit9CisKK2lubGluZSBib29s
IFVSTDo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJv
dG9jb2xJc0luSFRUUEZhbWlseTsKK30KKworaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aFN0YXJ0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworfQorCitp
bmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoRW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXRo
RW5kOworfQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25z
dAoreworICAgIHJldHVybiBtX3BhdGhBZnRlckxhc3RTbGFzaDsKK30KKworV1RGX0VYUE9SVF9Q
UklWQVRFIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25z
dCBVUkwmKTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJMPjsKK3RlbXBsYXRl
PD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDAyZmEzZGNjZjY2MTAwZmM4NTA4NjZlYzM1NDdhM2E4NmRmOWJlMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhhc2guaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
VVJMSGFzaF9oCisjZGVmaW5lIFVSTEhhc2hfaAorCisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBVUkxIYXNoIHsKKyAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBrZXku
c3RyaW5nKCkuaW1wbCgpLT5oYXNoKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5n
SGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7CisgICAgfQorCisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisK
Ky8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nCit0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxVUkw+IHsKKyAgICB1c2luZyBIYXNoID0gVVJMSGFzaDsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxVUkw+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVUkxIYXNoX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9VUkxQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwOWQ0YjgxZjk4MjMzYWQ0YTk5Njk1YjNlOWRh
MzRjYjFjZTZjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIu
Y3BwCkBAIC0wLDAgKzEsMjkyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KKworI2luY2x1ZGUgPGFycmF5PgorI2lu
Y2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KKyNpbmNsdWRlIDx1bmlj
b2RlL3V0ZjguaD4KKyNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworI2RlZmluZSBVUkxfUEFSU0VSX0RFQlVHR0lORyAwCisKKyNpZiBVUkxfUEFSU0VSX0RF
QlVHR0lORworI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pIFdURkxvZ0Fsd2F5cyhfX1ZBX0FS
R1NfXykKKyNlbHNlCisjZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4uLikKKyNlbmRpZgorICAgIAor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2NsYXNzIENvZGVQb2ludEl0ZXJhdG9y
IHsKK3B1YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yKCkgeyB9Cisg
ICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBi
ZWdpbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQorICAgICAgICA6IG1fYmVnaW4oYmVnaW4p
CisgICAgICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lO
TElORSBDb2RlUG9pbnRJdGVyYXRvcihjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgYmVnaW4sIGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yJiBlbmQpCisgICAgICAgIDogQ29kZVBvaW50SXRlcmF0b3Io
YmVnaW4ubV9iZWdpbiwgZW5kLm1fYmVnaW4pCisgICAgeworICAgICAgICBBU1NFUlQoZW5kLm1f
YmVnaW4gPj0gYmVnaW4ubV9iZWdpbik7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUg
VUNoYXIzMiBvcGVyYXRvciooKSBjb25zdDsKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0
ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luCisgICAgICAgICAgICAmJiBtX2VuZCA9PSBv
dGhlci5tX2VuZDsKKyAgICB9CisgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yIT0oY29u
c3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3ImIG9wZXJh
dG9yPShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpCisgICAgeworICAgICAgICBtX2Jl
Z2luID0gb3RoZXIubV9iZWdpbjsKKyAgICAgICAgbV9lbmQgPSBvdGhlci5tX2VuZDsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBhdEVuZCgp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA8PSBtX2VuZCk7CisgICAgICAg
IHJldHVybiBtX2JlZ2luID49IG1fZW5kOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5F
IHNpemVfdCBjb2RlVW5pdHNTaW5jZShjb25zdCBDaGFyYWN0ZXJUeXBlKiByZWZlcmVuY2UpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA+PSByZWZlcmVuY2UpOworICAgICAg
ICByZXR1cm4gbV9iZWdpbiAtIHJlZmVyZW5jZTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHNpemVfdCBjb2RlVW5pdHNTaW5jZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gY29kZVVuaXRzU2luY2Uob3RoZXIubV9iZWdpbik7
CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2JlZ2lu
IHsgbnVsbHB0ciB9OworICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIG1fZW5kIHsgbnVsbHB0ciB9
OworfTsKKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBVQ2hhcjMyIENvZGVQb2ludEl0ZXJh
dG9yPExDaGFyPjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWF0RW5kKCkpOwor
ICAgIHJldHVybiAqbV9iZWdpbjsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBhdXRv
IENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJh
dG9yJgoreworICAgIG1fYmVnaW4rKzsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRl
PD4KK0FMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj46Om9wZXJh
dG9yKigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBVQ2hhcjMyIGM7Cisg
ICAgVTE2X0dFVChtX2JlZ2luLCAwLCAwLCBtX2VuZCAtIG1fYmVnaW4sIGMpOworICAgIHJldHVy
biBjOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIGF1dG8gQ29kZVBvaW50SXRlcmF0
b3I8VUNoYXI+OjpvcGVyYXRvcisrKCkgLT4gQ29kZVBvaW50SXRlcmF0b3ImCit7CisgICAgdW5z
aWduZWQgaSA9IDA7CisgICAgc2l6ZV90IGxlbmd0aCA9IG1fZW5kIC0gbV9iZWdpbjsKKyAgICBV
MTZfRldEXzEobV9iZWdpbiwgaSwgbGVuZ3RoKTsKKyAgICBtX2JlZ2luICs9IGk7CisgICAgcmV0
dXJuICp0aGlzOworfQorICAgIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBhcHBlbmRDb2Rl
UG9pbnQoVmVjdG9yPFVDaGFyPiYgZGVzdGluYXRpb24sIFVDaGFyMzIgY29kZVBvaW50KQorewor
ICAgIGlmIChVX0lTX0JNUChjb2RlUG9pbnQpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLmFwcGVu
ZChzdGF0aWNfY2FzdDxVQ2hhcj4oY29kZVBvaW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgZGVzdGluYXRpb24ucmVzZXJ2ZUNhcGFjaXR5KGRlc3RpbmF0aW9uLnNpemUoKSArIDIp
OworICAgIGRlc3RpbmF0aW9uLnVuY2hlY2tlZEFwcGVuZChVMTZfTEVBRChjb2RlUG9pbnQpKTsK
KyAgICBkZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X1RSQUlMKGNvZGVQb2ludCkpOwor
fQorCitlbnVtIFVSTENoYXJhY3RlckNsYXNzIHsKKyAgICBVc2VySW5mbyA9IDB4MSwKKyAgICBE
ZWZhdWx0ID0gMHgyLAorICAgIEZvcmJpZGRlbkhvc3QgPSAweDQsCisgICAgUXVlcnlQZXJjZW50
ID0gMHg4LAorICAgIFNsYXNoUXVlc3Rpb25Pckhhc2ggPSAweDEwLAorICAgIFZhbGlkU2NoZW1l
ID0gMHgyMCwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGNoYXJhY3RlckNsYXNzVGFibGVb
MjU2XSA9IHsKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAweDAKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgyCisgICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDMKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFF1ZXJ5UGVyY2VudCwgLy8gMHg1CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
NworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg4CisgICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHg5Cisg
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8g
MHhBCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEIKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4QworICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4RAorICAgIFVzZXJJ
bmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhFCisgICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQsIC8vIDB4MTAKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQs
IC8vIDB4MTEKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTIK
KyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTMKKyAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTQKKyAgICBVc2VySW5mbyB8IERl
ZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTUKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQsIC8vIDB4MTYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4MTcKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
MTgKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTkKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUEKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUIKKyAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQsIC8vIDB4MUMKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQsIC8vIDB4MUQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MUUKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUYKKyAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAn
ICcKKyAgICAwLCAvLyAnIScKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQs
IC8vICciJworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IFNsYXNoUXVl
c3Rpb25Pckhhc2ggfCBGb3JiaWRkZW5Ib3N0LCAvLyAnIycKKyAgICAwLCAvLyAnJCcKKyAgICBG
b3JiaWRkZW5Ib3N0LCAvLyAnJScKKyAgICAwLCAvLyAnJicKKyAgICAwLCAvLyAnXCcnCisgICAg
MCwgLy8gJygnCisgICAgMCwgLy8gJyknCisgICAgMCwgLy8gJyonCisgICAgVmFsaWRTY2hlbWUs
IC8vICcrJworICAgIDAsIC8vICcsJworICAgIFZhbGlkU2NoZW1lLCAvLyAnLScKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJy4nCisgICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9y
YmlkZGVuSG9zdCwgLy8gJy8nCisgICAgVmFsaWRTY2hlbWUsIC8vICcwJworICAgIFZhbGlkU2No
ZW1lLCAvLyAnMScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzInCisgICAgVmFsaWRTY2hlbWUsIC8v
ICczJworICAgIFZhbGlkU2NoZW1lLCAvLyAnNCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzUnCisg
ICAgVmFsaWRTY2hlbWUsIC8vICc2JworICAgIFZhbGlkU2NoZW1lLCAvLyAnNycKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJzgnCisgICAgVmFsaWRTY2hlbWUsIC8vICc5JworICAgIFVzZXJJbmZvIHwg
Rm9yYmlkZGVuSG9zdCwgLy8gJzonCisgICAgVXNlckluZm8sIC8vICc7JworICAgIFVzZXJJbmZv
IHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vICc8JworICAgIFVz
ZXJJbmZvLCAvLyAnPScKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBG
b3JiaWRkZW5Ib3N0LCAvLyAnPicKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBTbGFzaFF1ZXN0
aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJz8nCisgICAgVXNlckluZm8gfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAnQCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0EnCisgICAgVmFsaWRTY2hlbWUs
IC8vICdCJworICAgIFZhbGlkU2NoZW1lLCAvLyAnQycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0Qn
CisgICAgVmFsaWRTY2hlbWUsIC8vICdFJworICAgIFZhbGlkU2NoZW1lLCAvLyAnRicKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJ0cnCisgICAgVmFsaWRTY2hlbWUsIC8vICdIJworICAgIFZhbGlkU2No
ZW1lLCAvLyAnSScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0onCisgICAgVmFsaWRTY2hlbWUsIC8v
ICdLJworICAgIFZhbGlkU2NoZW1lLCAvLyAnTCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ00nCisg
ICAgVmFsaWRTY2hlbWUsIC8vICdOJworICAgIFZhbGlkU2NoZW1lLCAvLyAnTycKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJ1AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdRJworICAgIFZhbGlkU2NoZW1l
LCAvLyAnUicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdU
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnVScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1YnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdXJworICAgIFZhbGlkU2NoZW1lLCAvLyAnWCcKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ1knCisgICAgVmFsaWRTY2hlbWUsIC8vICdaJworICAgIFVzZXJJbmZvIHwgRm9y
YmlkZGVuSG9zdCwgLy8gJ1snCisgICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwg
Rm9yYmlkZGVuSG9zdCwgLy8gJ1xcJworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8g
J10nCisgICAgVXNlckluZm8sIC8vICdeJworICAgIDAsIC8vICdfJworICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCwgLy8gJ2AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdhJworICAgIFZhbGlkU2NoZW1l
LCAvLyAnYicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdk
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnZScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2YnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdnJworICAgIFZhbGlkU2NoZW1lLCAvLyAnaCcKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ2knCisgICAgVmFsaWRTY2hlbWUsIC8vICdqJworICAgIFZhbGlkU2NoZW1lLCAv
LyAnaycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2wnCisgICAgVmFsaWRTY2hlbWUsIC8vICdtJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnbicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ28nCisgICAgVmFs
aWRTY2hlbWUsIC8vICdwJworICAgIFZhbGlkU2NoZW1lLCAvLyAncScKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJ3InCisgICAgVmFsaWRTY2hlbWUsIC8vICdzJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
dCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3UnCisgICAgVmFsaWRTY2hlbWUsIC8vICd2JworICAg
IFZhbGlkU2NoZW1lLCAvLyAndycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3gnCisgICAgVmFsaWRT
Y2hlbWUsIC8vICd5JworICAgIFZhbGlkU2NoZW1lLCAvLyAneicKKyAgICBVc2VySW5mbyB8IERl
ZmF1bHQsIC8vICd7JworICAgIFVzZXJJbmZvLCAvLyAnfCcKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQsIC8vICd9JworICAgIDAsIC8vICd+JworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg3RgorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg4MAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MQorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg4MgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MworICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg4NAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg4NgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NworICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg4OAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4OQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg4QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg4QworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4
RQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MAor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MgorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg5MworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg5NQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg5NworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5OAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg5OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg5QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QworICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg5RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg5RgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhB
MQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMwor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhBNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNworICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhBOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBOQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhBQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBQgorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhBQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRAorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhBRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhCMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhCMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhC
NAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCOAorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhCOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQQorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhCQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQworICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhCRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCRQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhCRgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMAorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhDMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhDMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhDNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhD
NworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDOQor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQgorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhDQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhDRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhEMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhEMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMworICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhENAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhENgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENworICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhEOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhE
QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQwor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhERgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhFMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhFMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhFNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhFNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFOAorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhFOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhFQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhF
RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhGMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMworICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhGNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhGNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNworICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhGOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGOQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhGQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhGQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhGRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRgorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0MwQ29udHJvbChDaGFy
YWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MUY7IH0KK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXND
MENvbnRyb2xPclNwYWNlKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0
ZXIgPD0gMHgyMDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc1RhYk9yTmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rlcikg
eyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4RCAmJiBjaGFyYWN0ZXIgPj0gMHg5ICYmIGNoYXJhY3Rl
ciAhPSAweEIgJiYgY2hhcmFjdGVyICE9IDB4QzsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luU2ltcGxlRW5jb2RlU2V0KENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGlzQzBD
b250cm9sKGNoYXJhY3Rlcik7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJbkRlZmF1bHRFbmNvZGVTZXQoQ2hhcmFjdGVyVHlw
ZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xhc3NU
YWJsZVtjaGFyYWN0ZXJdICYgRGVmYXVsdDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoQ2hh
cmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFj
dGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgVXNlckluZm87IH0KK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNQZXJjZW50T3JOb25B
U0NJSShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gIWlzQVNDSUkoY2hhcmFjdGVy
KSB8fCBjaGFyYWN0ZXIgPT0gJyUnOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzU2xhc2hRdWVzdGlvbk9ySGFzaChDaGFyYWN0
ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICdcXCcgJiYgY2hhcmFjdGVy
Q2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgU2xhc2hRdWVzdGlvbk9ySGFzaDsgfQordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1ZhbGlk
U2NoZW1lQ2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0
ZXIgPD0gJ3onICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFZhbGlkU2NoZW1l
OyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludChDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rlcikg
eyByZXR1cm4gY2hhcmFjdGVyIDw9ICddJyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rl
cl0gJiBGb3JiaWRkZW5Ib3N0OyB9CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIHNob3VsZFBl
cmNlbnRFbmNvZGVRdWVyeUJ5dGUodWludDhfdCBieXRlLCBjb25zdCBib29sJiB1cmxJc1NwZWNp
YWwpCit7CisgICAgaWYgKGNoYXJhY3RlckNsYXNzVGFibGVbYnl0ZV0gJiBRdWVyeVBlcmNlbnQp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChieXRlID09ICdcJycgJiYgdXJsSXNTcGVj
aWFsKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
VVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIgYykKK3sKKyAgICByZXR1cm4g
V1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQoYyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGUsIFVSTFBhcnNlcjo6UmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRh
eFZpb2xhdGlvbj4KK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFkdmFuY2UoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikK
K3sKKyAgICArK2l0ZXJhdG9yOworICAgIHdoaWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQo
KSAmJiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICBpZiAocmVwb3J0U3lu
dGF4VmlvbGF0aW9uID09IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6WWVzKQorICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAg
ICAgICArK2l0ZXJhdG9yOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KK2Jvb2wgVVJMUGFyc2VyOjp0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUs
IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICBpZiAoaXRlcmF0b3Iu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgIHJldHVybiBpdGVy
YXRvci5hdEVuZCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxX
QVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkgfHwgIWlzQVNDSUlBbHBoYSgqaXRlcmF0b3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihp
dGVyYXRvcik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKFVOTElLRUxZKCppdGVyYXRvciA9PSAnfCcpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFwcGVu
ZFRvQVNDSUlCdWZmZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgQVNTRVJUKGlzQVNDSUko
Y29kZVBvaW50KSk7CisgICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkK
KyAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY29kZVBvaW50KTsKK30KKworQUxXQVlTX0lO
TElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBjaGFyKiBjaGFy
YWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRh
eFZpb2xhdGlvbikpCisgICAgICAgIG1fYXNjaWlCdWZmZXIuYXBwZW5kKGNoYXJhY3RlcnMsIGxl
bmd0aCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBh
cnNlcjo6YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoaXRl
cmF0b3IpKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCppdGVyYXRvcik7CisgICAgYWR2YW5j
ZShpdGVyYXRvcik7CisgICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKKyAgICBBU1NFUlQo
Kml0ZXJhdG9yID09ICc6JyB8fCAqaXRlcmF0b3IgPT0gJ3wnKTsKKyAgICBpZiAoKml0ZXJhdG9y
ID09ICd8JykKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgYWR2YW5jZShpdGVyYXRvcik7Cit9CisKK2Jvb2wgVVJM
UGFyc2VyOjpjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmIGJhc2UpCit7Cisg
ICAgaWYgKGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggPCBiYXNlLm1fc3RyaW5nLmxlbmd0
aCgpKTsKKyAgICAgICAgaWYgKGJhc2UubV9zdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgICAg
IGNvbnN0IExDaGFyKiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczgoKTsKKyAgICAg
ICAgICAgIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQg
KyBiYXNlLm1fcG9ydExlbmd0aCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7
CisgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAg
ICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25z
dCBVQ2hhciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICAg
ICAgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJh
c2UubV9wb3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgeworICAgICAgICAgICAgICAg
IGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6c2hv
dWxkQ29weUZpbGVVUkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3Ip
Cit7CisgICAgaWYgKCFpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgYWR2YW5jZShpdGVyYXRvcik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGFkdmFuY2UoaXRlcmF0b3IpOworICAgIGlmIChpdGVy
YXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gIWlzU2xhc2hR
dWVzdGlvbk9ySGFzaCgqaXRlcmF0b3IpOworfQorCitzdGF0aWMgdm9pZCBwZXJjZW50RW5jb2Rl
Qnl0ZSh1aW50OF90IGJ5dGUsIFZlY3RvcjxMQ2hhcj4mIGJ1ZmZlcikKK3sKKyAgICBidWZmZXIu
YXBwZW5kKCclJyk7CisgICAgYnVmZmVyLmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdp
dChieXRlKSk7CisgICAgYnVmZmVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChi
eXRlKSk7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90IGJ5
dGUpCit7CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCclJyk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih1cHBlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChieXRlKSk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJs
ZVRvQVNDSUlIZXhEaWdpdChieXRlKSk7Cit9CisKK2NvbnN0IGNoYXIgcmVwbGFjZW1lbnRDaGFy
YWN0ZXJVVEY4UGVyY2VudEVuY29kZWRbMTBdID0gIiVFRiVCRiVCRCI7Citjb25zdCBzaXplX3Qg
cmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGggPSBzaXplb2YocmVw
bGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQpIC0gMTsKKwordGVtcGxhdGU8Ym9v
bCgqaXNJbkNvZGVTZXQpKFVDaGFyMzIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlT
X0lOTElORSB2b2lkIFVSTFBhcnNlcjo6dXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIEFTU0VSVCghaXRlcmF0
b3IuYXRFbmQoKSk7CisgICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRlcmF0b3I7CisgICAgaWYg
KExJS0VMWShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc0lu
Q29kZVNldChjb2RlUG9pbnQpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yKTsKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNJbkNvZGVTZXQo
Y29kZVBvaW50KSwgImlzSW5Db2RlU2V0IHNob3VsZCBhbHdheXMgcmV0dXJuIHRydWUgZm9yIG5v
bi1BU0NJSSBjaGFyYWN0ZXJzIik7CisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAg
ICAKKyAgICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKGNvZGVQb2ludCkpIHsKKyAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCwg
cmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwor
ICAgIGludDMyX3Qgb2Zmc2V0ID0gMDsKKyAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zm
c2V0LCBjb2RlUG9pbnQpOworICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytp
KQorICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShidWZmZXJbaV0pOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6dXRm
OFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVy
YXRvcikKK3sKKyAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOworICAgIFVDaGFyMzIgY29k
ZVBvaW50ID0gKml0ZXJhdG9yOworICAgIGlmIChMSUtFTFkoaXNBU0NJSShjb2RlUG9pbnQpKSkg
eworICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShjb2Rl
UG9pbnQsIG1fdXJsSXNTcGVjaWFsKSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihp
dGVyYXRvcik7CisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShjb2RlUG9pbnQpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29kZVBvaW50KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0
b3IpOworICAgIAorICAgIGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgeworICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRF
bmNvZGVkLCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RI
XTsKKyAgICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAgVThfQVBQRU5EX1VOU0FGRShidWZmZXIs
IG9mZnNldCwgY29kZVBvaW50KTsKKyAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBvZmZzZXQ7
ICsraSkgeworICAgICAgICBhdXRvIGJ5dGUgPSBidWZmZXJbaV07CisgICAgICAgIGlmIChzaG91
bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkKKyAgICAgICAg
ICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKGJ5dGUpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjplbmNvZGVOb25VVEY4UXVlcnkoY29uc3Qg
VmVjdG9yPFVDaGFyPiYgc291cmNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBhdXRvIGVu
Y29kZWQgPSBlbmNvZGluZy5lbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcoc291cmNlLmRh
dGEoKSwgc291cmNlLnNpemUoKSkpOworICAgIGF1dG8qIGRhdGEgPSBlbmNvZGVkLmRhdGEoKTsK
KyAgICBzaXplX3QgbGVuZ3RoID0gZW5jb2RlZC5zaXplKCk7CisgICAgCisgICAgaWYgKCFsZW5n
dGggPT0gIWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzaXplX3QgaSA9IDA7Cisg
ICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0
RW5kKCkpOworICAgICAgICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOworICAgICAgICBpZiAoVU5M
SUtFTFkoYnl0ZSAhPSAqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
aXRlcmF0b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVO
TElLRUxZKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwp
KSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYnl0ZSk7Cisg
ICAgICAgICsraXRlcmF0b3I7CisgICAgfQorICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSAm
JiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKQorICAgICAgICArK2l0ZXJhdG9yOworICAgIEFT
U0VSVCgoaSA9PSBsZW5ndGgpID09IGl0ZXJhdG9yLmF0RW5kKCkpOworICAgIGZvciAoOyBpIDwg
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsK
KyAgICAgICAgdWludDhfdCBieXRlID0gZGF0YVtpXTsKKyAgICAgICAgaWYgKHNob3VsZFBlcmNl
bnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQorICAgICAgICAgICAgcGVy
Y2VudEVuY29kZUJ5dGUoYnl0ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoYnl0ZSk7CisgICAgfQorfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBV
UkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCit7Cisg
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGZ0cFBvcnQgPSAyMTsKKyAgICBzdGF0aWMgY29uc3Qg
dWludDE2X3QgZ29waGVyUG9ydCA9IDcwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBodHRw
UG9ydCA9IDgwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBodHRwc1BvcnQgPSA0NDM7Cisg
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IHdzUG9ydCA9IDgwOworICAgIHN0YXRpYyBjb25zdCB1
aW50MTZfdCB3c3NQb3J0ID0gNDQzOworICAgIAorICAgIGF1dG8gbGVuZ3RoID0gc2NoZW1lLmxl
bmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7CisgICAgY2FzZSAndyc6CisgICAgICAgIHN3aXRjaCAo
bGVuZ3RoKSB7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0g
J3MnKQorICAgICAgICAgICAgICAgIHJldHVybiB3c1BvcnQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFd
ID09ICdzJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHdzc1BvcnQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgY2FzZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgNDoK
KyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2No
ZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGh0dHBQb3J0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcK
KyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYg
c2NoZW1lWzNdID09ICdwJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAncycpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGh0dHBzUG9ydDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICB9CisgICAgY2FzZSAnZyc6CisgICAgICAgIGlmIChsZW5ndGggPT0gNgor
ICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJworICAgICAgICAgICAgJiYgc2NoZW1lWzJd
ID09ICdwJworICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJworICAgICAgICAgICAgJiYg
c2NoZW1lWzRdID09ICdlJworICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKKyAgICAg
ICAgICAgIHJldHVybiBnb3BoZXJQb3J0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIGNhc2UgJ2YnOgorICAgICAgICBpZiAobGVuZ3RoID09IDMKKyAgICAgICAgICAgICYmIHNj
aGVtZVsxXSA9PSAndCcKKyAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcpCisgICAgICAg
ICAgICByZXR1cm4gZnRwUG9ydDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KK30KKworZW51bSBj
bGFzcyBTY2hlbWUgeworICAgIFdTLAorICAgIFdTUywKKyAgICBGaWxlLAorICAgIEZUUCwKKyAg
ICBHb3BoZXIsCisgICAgSFRUUCwKKyAgICBIVFRQUywKKyAgICBOb25TcGVjaWFsCit9OworCitB
TFdBWVNfSU5MSU5FIHN0YXRpYyBTY2hlbWUgc2NoZW1lKFN0cmluZ1ZpZXcgc2NoZW1lKQorewor
ICAgIGF1dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAg
ICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7
CisgICAgY2FzZSAnZic6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2Ug
MzoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYg
c2NoZW1lWzJdID09ICdwJykKKyAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpGVFA7Cisg
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICBjYXNlIDQ6Cisg
ICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdpJworICAgICAgICAgICAgICAgICYmIHNjaGVt
ZVsyXSA9PSAnbCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2UnKQorICAgICAg
ICAgICAgICAgIHJldHVybiBTY2hlbWU6OkZpbGU7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1l
OjpOb25TcGVjaWFsOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFNjaGVt
ZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgfQorICAgIGNhc2UgJ2cnOgorICAgICAgICBpZiAobGVu
Z3RoID09IDYKKyAgICAgICAgICAgICYmIHNjaGVtZVsxXSA9PSAnbycKKyAgICAgICAgICAgICYm
IHNjaGVtZVsyXSA9PSAncCcKKyAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnaCcKKyAgICAg
ICAgICAgICYmIHNjaGVtZVs0XSA9PSAnZScKKyAgICAgICAgICAgICYmIHNjaGVtZVs1XSA9PSAn
cicpCisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpHb3BoZXI7CisgICAgICAgIHJldHVybiBT
Y2hlbWU6Ok5vblNwZWNpYWw7CisgICAgY2FzZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3Ro
KSB7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisg
ICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNj
aGVtZVszXSA9PSAncCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRUUDsKKyAg
ICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGNhc2UgNToKKyAg
ICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcKKyAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hl
bWU6OkhUVFBTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAg
ICAgIH0KKyAgICBjYXNlICd3JzoKKyAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAgICAgICAg
Y2FzZSAyOgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6V1M7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVj
aWFsOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJwor
ICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6V1NTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7
CisgICAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVj
aWFsOworICAgIH0KK30KKworc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6bWF5YmVD
YW5vbmljYWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVt
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWlz
QVNDSUlBbHBoYShzY2hlbWVbMF0pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzY2hlbWUubGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICBpZiAoaXNBU0NJSUFscGhhbnVtZXJpYyhzY2hlbWVbaV0pIHx8IHNjaGVtZVtpXSA9PSAnKycg
fHwgc2NoZW1lW2ldID09ICctJyB8fCBzY2hlbWVbaV0gPT0gJy4nKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJu
IHNjaGVtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworfQorCitib29sIFVSTFBhcnNlcjo6
aXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lQXJnKQoreworICAgIHJldHVybiBz
Y2hlbWUoc2NoZW1lQXJnKSAhPSBTY2hlbWU6Ok5vblNwZWNpYWw7Cit9CisKK2VudW0gY2xhc3Mg
VVJMUGFyc2VyOjpVUkxQYXJ0IHsKKyAgICBTY2hlbWVFbmQsCisgICAgVXNlclN0YXJ0LAorICAg
IFVzZXJFbmQsCisgICAgUGFzc3dvcmRFbmQsCisgICAgSG9zdEVuZCwKKyAgICBQb3J0RW5kLAor
ICAgIFBhdGhBZnRlckxhc3RTbGFzaCwKKyAgICBQYXRoRW5kLAorICAgIFF1ZXJ5RW5kLAorfTsK
Kworc2l6ZV90IFVSTFBhcnNlcjo6dXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYgdXJsLCBV
UkxQYXJ0IHBhcnQpCit7CisgICAgc3dpdGNoIChwYXJ0KSB7CisgICAgY2FzZSBVUkxQYXJ0OjpR
dWVyeUVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3F1ZXJ5RW5kOworICAgIGNhc2UgVVJMUGFy
dDo6UGF0aEVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhFbmQ7CisgICAgY2FzZSBVUkxQ
YXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6CisgICAgICAgIHJldHVybiB1cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgorICAgICAgICByZXR1cm4gdXJs
Lm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGg7CisgICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5k
OgorICAgICAgICByZXR1cm4gdXJsLm1faG9zdEVuZDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhc3N3
b3JkRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fcGFzc3dvcmRFbmQ7CisgICAgY2FzZSBVUkxQ
YXJ0OjpVc2VyRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fdXNlckVuZDsKKyAgICBjYXNlIFVS
TFBhcnQ6OlVzZXJTdGFydDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3VzZXJTdGFydDsKKyAgICBj
YXNlIFVSTFBhcnQ6OlNjaGVtZUVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3NjaGVtZUVuZDsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgVVJMUGFyc2VyOjpjb3B5QVNDSUlTdHJpbmdVbnRpbChjb25zdCBTdHJpbmcmIHN0cmluZywg
c2l6ZV90IGxlbmd0aCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGggPD0gc3RyaW5nLmxl
bmd0aCgpKTsKKyAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5n
dGgpOworICAgIGVsc2UgeworICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgVUNoYXIgYyA9IGNoYXJhY3RlcnNbaV07CisgICAgICAgICAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpc0FTQ0lJKGMpKTsKKyAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6Y29weVVSTFBhcnRz
VW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0IHBhcnQsIGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpCit7CisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKwor
ICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICBjb3B5QVNDSUlTdHJpbmdVbnRpbChiYXNl
Lm1fc3RyaW5nLCB1cmxMZW5ndGhVbnRpbFBhcnQoYmFzZSwgcGFydCkpOworICAgIHN3aXRjaCAo
cGFydCkgeworICAgIGNhc2UgVVJMUGFydDo6UXVlcnlFbmQ6CisgICAgICAgIG1fdXJsLm1fcXVl
cnlFbmQgPSBiYXNlLm1fcXVlcnlFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2Ug
VVJMUGFydDo6UGF0aEVuZDoKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gYmFzZS5tX3BhdGhF
bmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6UGF0aEFmdGVyTGFz
dFNsYXNoOgorICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJhc2UubV9wYXRo
QWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6
UG9ydEVuZDoKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gYmFzZS5tX3BvcnRMZW5ndGg7
CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6SG9zdEVuZDoKKyAgICAg
ICAgbV91cmwubV9ob3N0RW5kID0gYmFzZS5tX2hvc3RFbmQ7CisgICAgICAgIEZBTExUSFJPVUdI
OworICAgIGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6CisgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBiYXNlLm1fcGFzc3dvcmRFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNh
c2UgVVJMUGFydDo6VXNlckVuZDoKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gYmFzZS5tX3Vz
ZXJFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6VXNlclN0YXJ0
OgorICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGJhc2UubV91c2VyU3RhcnQ7CisgICAgICAg
IEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6U2NoZW1lRW5kOgorICAgICAgICBtX3Vy
bC5tX2lzVmFsaWQgPSBiYXNlLm1faXNWYWxpZDsKKyAgICAgICAgbV91cmwubV9wcm90b2NvbElz
SW5IVFRQRmFtaWx5ID0gYmFzZS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7CisgICAgICAgIG1f
dXJsLm1fc2NoZW1lRW5kID0gYmFzZS5tX3NjaGVtZUVuZDsKKyAgICB9CisgICAgc3dpdGNoIChz
Y2hlbWUoU3RyaW5nVmlldyhtX2FzY2lpQnVmZmVyLmRhdGEoKSwgbV91cmwubV9zY2hlbWVFbmQp
KSkgeworICAgIGNhc2UgU2NoZW1lOjpXUzoKKyAgICBjYXNlIFNjaGVtZTo6V1NTOgorICAgICAg
ICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgIG1fdXJsSXNTcGVjaWFs
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1lOjpGaWxlOgorICAgICAg
ICBtX3VybElzRmlsZSA9IHRydWU7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgU2No
ZW1lOjpGVFA6CisgICAgY2FzZSBTY2hlbWU6OkdvcGhlcjoKKyAgICBjYXNlIFNjaGVtZTo6SFRU
UDoKKyAgICBjYXNlIFNjaGVtZTo6SFRUUFM6CisgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgorICAgICAg
ICBtX3VybElzU3BlY2lhbCA9IGZhbHNlOworICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9
IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyIGRvdEFTQ0lJQ29kZVsyXSA9IHsnMicsICdlJ307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wg
VVJMUGFyc2VyOjppc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+IGMpCit7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBS
ZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICAgICAgcmV0dXJuIGMuYXRFbmQoKSB8
fCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpOworICAgIH0KKyAgICBpZiAoKmMgIT0gJyUnKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRT
eW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICBpZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFT
Q0lJQ29kZVswXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgaWYgKGMuYXRFbmQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFT
Q0lJQ29kZVsxXSkgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hR
dWVzdGlvbk9ySGFzaCgqYyk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6
OmlzRG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
YykKK3sKKyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCpjID09ICcuJykgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVu
dChjKTsKKyAgICB9CisgICAgaWYgKCpjICE9ICclJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7
CisgICAgaWYgKGMuYXRFbmQoKSB8fCAqYyAhPSBkb3RBU0NJSUNvZGVbMF0pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pIHsKKyAgICAgICAg
YWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAg
ICAgICAgcmV0dXJuIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJM
UGFyc2VyOjpjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYykp
OworICAgIGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYg
KCFjLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykK
KyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIEFTU0VSVCgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOworICAgICAgICBhZHZhbmNlKGMpOwor
ICAgICAgICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKKyAgICAgICAgYWR2YW5jZShj
KTsKKyAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKTsK
KyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAg
ICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykKKyAgICAgICAgICAgICAgICBhZHZhbmNl
KGMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVCgqYyA9PSAnPycg
fHwgKmMgPT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpjb25zdW1lRG91YmxlRG90UGF0aFNlZ21l
bnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlz
RG91YmxlRG90UGF0aFNlZ21lbnQoYykpOworICAgIGlmICgqYyA9PSAnLicpCisgICAgICAgIGFk
dmFuY2UoYyk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOworICAgICAg
ICBhZHZhbmNlKGMpOworICAgICAgICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKKyAg
ICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90
QVNDSUlDb2RlWzFdKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICB9CisgICAgY29uc3VtZVNp
bmdsZURvdFBhdGhTZWdtZW50KGMpOworfQorCitib29sIFVSTFBhcnNlcjo6c2hvdWxkUG9wUGF0
aCh1bnNpZ25lZCBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gpCit7CisgICAgQVNTRVJUKG1fZGlkU2Vl
U3ludGF4VmlvbGF0aW9uKTsKKyAgICBpZiAoIW1fdXJsSXNGaWxlKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIEFTU0VSVChtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSBtX2FzY2lp
QnVmZmVyLnNpemUoKSk7CisgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGNvbXBvbmVudFRv
UG9wKCZtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0sICZtX2FzY2lpQnVmZmVy
WzBdICsgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworICAgIGlmIChuZXdQYXRoQWZ0ZXJM
YXN0U2xhc2ggPT0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSAmJiBp
c1dpbmRvd3NEcml2ZUxldHRlcihjb21wb25lbnRUb1BvcCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBVUkxQYXJzZXI6OnBvcFBhdGgoKQorewor
ICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgaWYgKG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsg
MSkgeworICAgICAgICBhdXRvIG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoIC0gMTsKKyAgICAgICAgaWYgKG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVy
TGFzdFNsYXNoXSA9PSAnLycpCisgICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsK
KyAgICAgICAgd2hpbGUgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA+IG1fdXJsLm1faG9zdEVuZCAr
IG1fdXJsLm1fcG9ydExlbmd0aCAmJiBtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFz
aF0gIT0gJy8nKQorICAgICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07CisgICAgICAg
IG5ld1BhdGhBZnRlckxhc3RTbGFzaCsrOworICAgICAgICBpZiAoc2hvdWxkUG9wUGF0aChuZXdQ
YXRoQWZ0ZXJMYXN0U2xhc2gpKQorICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgfQorICAgIG1fYXNjaWlCdWZmZXIucmVz
aXplKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpzeW50YXhWaW9sYXRpb24oY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIGlmIChtX2Rp
ZFNlZVN5bnRheFZpb2xhdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGlkU2VlU3ludGF4
VmlvbGF0aW9uID0gdHJ1ZTsKKyAgICAKKyAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5
KCkpOworICAgIHNpemVfdCBjb2RlVW5pdHNUb0NvcHkgPSBpdGVyYXRvci5jb2RlVW5pdHNTaW5j
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IENoYXJhY3RlclR5cGUqPihtX2lucHV0QmVnaW4pKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChjb2RlVW5pdHNUb0NvcHkgPD0gbV9pbnB1dFN0cmluZy5sZW5n
dGgoKSk7CisgICAgbV9hc2NpaUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobV9pbnB1dFN0cmluZy5s
ZW5ndGgoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlVW5pdHNUb0NvcHk7ICsr
aSkgeworICAgICAgICBBU1NFUlQoaXNBU0NJSShtX2lucHV0U3RyaW5nW2ldKSk7CisgICAgICAg
IG1fYXNjaWlCdWZmZXIudW5jaGVja2VkQXBwZW5kKG1faW5wdXRTdHJpbmdbaV0pOworICAgIH0K
K30KKwordm9pZCBVUkxQYXJzZXI6OmZhaWx1cmUoKQoreworICAgIG1fdXJsLmludmFsaWRhdGUo
KTsKKyAgICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJpbmc7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6Y2hlY2tMb2NhbGhvc3RDb2Rl
UG9pbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBVQ2hhcjMy
IGNvZGVQb2ludCkKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCB0b0FTQ0lJTG93ZXIo
Kml0ZXJhdG9yKSAhPSBjb2RlUG9pbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZh
bmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K2Jvb2wgVVJMUGFyc2VyOjppc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+IGl0ZXJhdG9yKQoreworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRl
cmF0b3IsICdsJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxo
b3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2MnKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdh
JykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBv
aW50KGl0ZXJhdG9yLCAnbCcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVj
a0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2gnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdvJykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJh
dG9yLCAncycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9z
dENvZGVQb2ludChpdGVyYXRvciwgJ3QnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBpdGVyYXRvci5hdEVuZCgpOworfQorCitib29sIFVSTFBhcnNlcjo6aXNMb2NhbGhvc3Qo
U3RyaW5nVmlldyB2aWV3KQoreworICAgIGlmICh2aWV3LmlzOEJpdCgpKQorICAgICAgICByZXR1
cm4gaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4odmlldy5jaGFyYWN0ZXJz
OCgpLCB2aWV3LmNoYXJhY3RlcnM4KCkgKyB2aWV3Lmxlbmd0aCgpKSk7CisgICAgcmV0dXJuIGlz
QXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+KHZpZXcuY2hhcmFjdGVyczE2KCks
IHZpZXcuY2hhcmFjdGVyczE2KCkgKyB2aWV3Lmxlbmd0aCgpKSk7Cit9CisKK0FMV0FZU19JTkxJ
TkUgU3RyaW5nVmlldyBVUkxQYXJzZXI6OnBhcnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6
ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24p
KSB7CisgICAgICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSBtX2FzY2lpQnVmZmVyLnNpemUo
KSk7CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpICsgc3Rh
cnQsIGxlbmd0aCk7CisgICAgfQorICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSBtX2lucHV0
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX2lucHV0U3RyaW5nKS5z
dWJzdHJpbmcoc3RhcnQsIGxlbmd0aCk7Cit9CisKK0FMV0FZU19JTkxJTkUgVUNoYXIgVVJMUGFy
c2VyOjpwYXJzZWREYXRhVmlldyhzaXplX3QgcG9zaXRpb24pCit7CisgICAgaWYgKFVOTElLRUxZ
KG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAgICAgcmV0dXJuIG1fYXNjaWlCdWZmZXJb
cG9zaXRpb25dOworICAgIHJldHVybiBtX2lucHV0U3RyaW5nW3Bvc2l0aW9uXTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgc2l6ZV90IFVSTFBh
cnNlcjo6Y3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+JiBpdGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRp
b24pKQorICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlci5zaXplKCk7CisgICAgCisgICAgcmV0
dXJuIGl0ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFj
dGVyVHlwZSo+KG1faW5wdXRCZWdpbikpOworfQorCitVUkxQYXJzZXI6OlVSTFBhcnNlcihjb25z
dCBTdHJpbmcmIGlucHV0LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyog
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcpCisgICAgOiBtX2lucHV0U3RyaW5nKGlucHV0KQoreworICAg
IGlmIChpbnB1dC5pc051bGwoKSkgeworICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgIWJh
c2UubV9jYW5ub3RCZUFCYXNlVVJMKSB7CisgICAgICAgICAgICBtX3VybCA9IGJhc2U7CisgICAg
ICAgICAgICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGlucHV0LmlzOEJpdCgpKSB7CisgICAgICAg
IG1faW5wdXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnM4KCk7CisgICAgICAgIHBhcnNlKGlucHV0
LmNoYXJhY3RlcnM4KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9pbnB1dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVy
czE2KCk7CisgICAgICAgIHBhcnNlKGlucHV0LmNoYXJhY3RlcnMxNigpLCBpbnB1dC5sZW5ndGgo
KSwgYmFzZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgIH0KKworICAgIEFTU0VSVCghbV91
cmwubV9pc1ZhbGlkCisgICAgICAgIHx8IG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uID09IChtX3Vy
bC5zdHJpbmcoKSAhPSBpbnB1dCkKKyAgICAgICAgfHwgKGlucHV0LmlzQWxsU3BlY2lhbENoYXJh
Y3RlcnM8aXNDMENvbnRyb2xPclNwYWNlPigpCisgICAgICAgICAgICAmJiBtX3VybC5tX3N0cmlu
ZyA9PSBiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5kKSkpOworICAgIEFTU0VSVChp
bnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQobV91cmwpKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgaWYgKCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikgeworICAgICAgICAvLyBGb3JjZSBhIHN5
bnRheCB2aW9sYXRpb24gYXQgdGhlIGJlZ2lubmluZyB0byBtYWtlIHN1cmUgd2UgZ2V0IHRoZSBz
YW1lIHJlc3VsdC4KKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCIgIiwgaW5w
dXQpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgIFVSTCBwYXJzZWQgPSBw
YXJzZXIucmVzdWx0KCk7CisgICAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKQorICAgICAgICAg
ICAgQVNTRVJUKGFsbFZhbHVlc0VxdWFsKHBhcnNlci5yZXN1bHQoKSwgbV91cmwpKTsKKyAgICB9
CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJM
UGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBpbnB1dCwgY29uc3QgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpCit7CisgICAgVVJMX1BBUlNFUl9MT0coIlBhcnNpbmcgVVJMIDwlcz4gYmFz
ZSA8JXM+IiwgU3RyaW5nKGlucHV0LCBsZW5ndGgpLnV0ZjgoKS5kYXRhKCksIGJhc2Uuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV91cmwgPSB7IH07CisgICAgQVNTRVJUKG1fYXNjaWlC
dWZmZXIuaXNFbXB0eSgpKTsKKworICAgIFZlY3RvcjxVQ2hhcj4gcXVlcnlCdWZmZXI7CisKKyAg
ICB1bnNpZ25lZCBlbmRJbmRleCA9IGxlbmd0aDsKKyAgICB3aGlsZSAoVU5MSUtFTFkoZW5kSW5k
ZXggJiYgaXNDMENvbnRyb2xPclNwYWNlKGlucHV0W2VuZEluZGV4IC0gMV0pKSkgeworICAgICAg
ICBzeW50YXhWaW9sYXRpb24oQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaW5wdXQs
IGlucHV0KSk7CisgICAgICAgIGVuZEluZGV4LS07CisgICAgfQorICAgIENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+IGMoaW5wdXQsIGlucHV0ICsgZW5kSW5kZXgpOworICAgIENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGF1dGhvcml0eU9ySG9zdEJlZ2luOworICAgIENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IHF1ZXJ5QmVnaW47CisgICAgd2hpbGUgKFVO
TElLRUxZKCFjLmF0RW5kKCkgJiYgaXNDMENvbnRyb2xPclNwYWNlKCpjKSkpIHsKKyAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICArK2M7CisgICAgfQorICAgIGF1dG8gYmVnaW5B
ZnRlckNvbnRyb2xBbmRTcGFjZSA9IGM7CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhf
dCB7CisgICAgICAgIFNjaGVtZVN0YXJ0LAorICAgICAgICBTY2hlbWUsCisgICAgICAgIE5vU2No
ZW1lLAorICAgICAgICBTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSwKKyAgICAgICAgUGF0aE9y
QXV0aG9yaXR5LAorICAgICAgICBSZWxhdGl2ZSwKKyAgICAgICAgUmVsYXRpdmVTbGFzaCwKKyAg
ICAgICAgU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMsCisgICAgICAgIFNwZWNpYWxBdXRob3JpdHlJ
Z25vcmVTbGFzaGVzLAorICAgICAgICBBdXRob3JpdHlPckhvc3QsCisgICAgICAgIEhvc3QsCisg
ICAgICAgIEZpbGUsCisgICAgICAgIEZpbGVTbGFzaCwKKyAgICAgICAgRmlsZUhvc3QsCisgICAg
ICAgIFBhdGhTdGFydCwKKyAgICAgICAgUGF0aCwKKyAgICAgICAgQ2Fubm90QmVBQmFzZVVSTFBh
dGgsCisgICAgICAgIFVURjhRdWVyeSwKKyAgICAgICAgTm9uVVRGOFF1ZXJ5LAorICAgICAgICBG
cmFnbWVudCwKKyAgICB9OworCisjZGVmaW5lIExPR19TVEFURSh4KSBVUkxfUEFSU0VSX0xPRygi
U3RhdGUgJXMsIGNvZGUgcG9pbnQgJWMsIHBhcnNlZCBkYXRhIDwlcz4gc2l6ZSAlenUiLCB4LCAq
YywgcGFyc2VkRGF0YVZpZXcoMCwgY3VycmVudFBvc2l0aW9uKGMpKS51dGY4KCkuZGF0YSgpLCBj
dXJyZW50UG9zaXRpb24oYykpCisjZGVmaW5lIExPR19GSU5BTF9TVEFURSh4KSBVUkxfUEFSU0VS
X0xPRygiRmluYWwgU3RhdGU6ICVzIiwgeCkKKworICAgIFN0YXRlIHN0YXRlID0gU3RhdGU6OlNj
aGVtZVN0YXJ0OworICAgIHdoaWxlICghYy5hdEVuZCgpKSB7CisgICAgICAgIGlmIChVTkxJS0VM
WShpc1RhYk9yTmV3bGluZSgqYykpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7
CisgICAgICAgICAgICArK2M7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6
CisgICAgICAgICAgICBMT0dfU1RBVEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgICAgICBpZiAo
aXNBU0NJSUFscGhhKCpjKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJ
VXBwZXIoKmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7CisgICAg
ICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAgICAgIGMg
PSBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U2NoZW1l
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9T
Y2hlbWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgor
ICAgICAgICAgICAgTE9HX1NUQVRFKCJTY2hlbWUiKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlk
U2NoZW1lQ2hhcmFjdGVyKCpjKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FT
Q0lJVXBwZXIoKmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwor
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICc6JykgeworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHNjaGVtZUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAo
c2NoZW1lRW5kID4gVVJMOjptYXhTY2hlbWVMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIG1fdXJsLm1fc2NoZW1lRW5kID0gc2NoZW1lRW5kOworICAgICAg
ICAgICAgICAgIFN0cmluZ1ZpZXcgdXJsU2NoZW1lID0gcGFyc2VkRGF0YVZpZXcoMCwgbV91cmwu
bV9zY2hlbWVFbmQpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHNjaGVtZSh1cmxTY2hlbWUpKSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBTY2hlbWU6OkZpbGU6CisgICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVj
aWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmxJc0ZpbGUgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlOworICAgICAgICAgICAgICAgICAg
ICArK2M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
U2NoZW1lOjpXUzoKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6V1NTOgorICAgICAgICAg
ICAgICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgICAgICAg
ICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJh
c2UucHJvdG9jb2xJcyh1cmxTY2hlbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRo
b3JpdHlTbGFzaGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpIVFRQOgorICAgICAgICAg
ICAgICAgIGNhc2UgU2NoZW1lOjpIVFRQUzoKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9w
cm90b2NvbElzSW5IVFRQRmFtaWx5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkZUUDoKKyAgICAgICAgICAgICAg
ICBjYXNlIFNjaGVtZTo6R29waGVyOgorICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lh
bCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLnByb3RvY29sSXModXJsU2No
ZW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxSZWxh
dGl2ZU9yQXV0aG9yaXR5OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczsKKyAgICAg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIFNjaGVtZTo6Tm9uU3BlY2lhbDoKKyAgICAgICAgICAgICAgICAgICAgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBhdXRvIG1h
eWJlU2xhc2ggPSBjOworICAgICAgICAgICAgICAgICAgICBhZHZhbmNlKG1heWJlU2xhc2gpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIW1heWJlU2xhc2guYXRFbmQoKSAmJiAqbWF5YmVTbGFz
aCA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBtYXliZVNsYXNoOworICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OworICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICcvJyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICArK2M7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0
YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAg
ICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9jYW5ub3RCZUFCYXNlVVJMID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRo
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAgICAgICAgICAgICAgIGMgPSBiZWdpbkFm
dGVyQ29udHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsK
KyAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJD
b250cm9sQW5kU3BhY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTdGF0ZTo6Tm9TY2hlbWU6CisgICAgICAgICAgICBMT0dfU1RBVEUoIk5vU2NoZW1l
Iik7CisgICAgICAgICAgICBpZiAoIWJhc2UuaXNWYWxpZCgpIHx8IChiYXNlLm1fY2Fubm90QmVB
QmFzZVVSTCAmJiAqYyAhPSAnIycpKSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChiYXNl
Lm1fY2Fubm90QmVBQmFzZVVSTCAmJiAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICBjb3B5
VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKKyAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
IWJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6UmVsYXRpdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5v
blVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzon
KTsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6CisgICAgICAg
ICAgICBMT0dfU1RBVEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgICAg
ICBpZiAoKmMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOworICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKGMu
YXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCpj
ID09ICcvJykgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7
CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25v
cmVTbGFzaGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlU2xhc2g7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpQYXRoT3JBdXRob3Jp
dHk6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOworICAgICAgICAg
ICAgaWYgKCpjID09ICcvJykgeworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Cisg
ICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJT
dGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhv
c3RCZWdpbiA9IGM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VS
VChwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAg
ICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAg
ICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAg
ICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAg
ICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgorICAgICAgICAgICAgTE9HX1NUQVRF
KCJSZWxhdGl2ZSIpOworICAgICAgICAgICAgc3dpdGNoICgqYykgeworICAgICAgICAgICAgY2Fz
ZSAnLyc6CisgICAgICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6UmVsYXRpdmVTbGFzaDsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICc/JzoKKyAgICAgICAgICAgICAgICBjb3B5VVJM
UGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOworICAgICAgICAg
ICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsK
KyAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnIyc6CisgICAgICAgICAgICAgICAgY29weVVS
TFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29k
aW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7CisgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2gs
IGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBv
c2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpICE9ICcv
JykgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0
aW9uKGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpQYXRoOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlU2xhc2g6CisgICAgICAgICAg
ICBMT0dfU1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycg
fHwgKmMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5vblVURjhRdWVy
eUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCI6Ly8iLCAz
KTsKKyAgICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpCisgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
QXV0aG9yaXR5T3JIb3N0OworICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdp
biA9IGM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQb3J0RW5kLCBjLCBub25V
VEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5t
X2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczoKKyAgICAgICAgICAgIExPR19T
VEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFko
KmMgPT0gJy8nIHx8ICpjID09ICdcXCcpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCpjID09ICdcXCcpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAg
IGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKExJS0VMWSghYy5hdEVuZCgpICYmICgq
YyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSgqYyA9PSAnXFwnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8iLCAyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVT
bGFzaGVzOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xh
c2hlcyIpOworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSB7CisgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICsrYzsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBj
dXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9y
aXR5T3JIb3N0OworICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpBdXRo
b3JpdHlPckhvc3Q6CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRF
KCJBdXRob3JpdHlPckhvc3QiKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJ0AnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gbGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBmaW5kTGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFmaW5kTGFz
dEF0LmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFVSTF9QQVJTRVJfTE9HKCJG
aW5kaW5nIGxhc3QgQDogJWMiLCAqZmluZExhc3RBdCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoKmZpbmRMYXN0QXQgPT0gJ0AnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh
c3RBdCA9IGZpbmRMYXN0QXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU2xhc2gg
PSAqZmluZExhc3RBdCA9PSAnLycgfHwgKG1fdXJsSXNTcGVjaWFsICYmICpmaW5kTGFzdEF0ID09
ICdcXCcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmZpbmRMYXN0
QXQgPT0gJz8nIHx8ICpmaW5kTGFzdEF0ID09ICcjJykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrZmluZExhc3RBdDsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJzZUF1dGhvcml0eShDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgbGFzdEF0
KSk7CisgICAgICAgICAgICAgICAgICAgIGMgPSBsYXN0QXQ7CisgICAgICAgICAgICAgICAgICAg
IGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0g
YzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6SG9zdDsKKyAgICAgICAgICAg
ICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJvb2wg
aXNTbGFzaCA9ICpjID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJyk7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmMgPT0gJz8nIHx8ICpjID09ICcjJykgewor
ICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1f
dXJsSXNTcGVjaWFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJl
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9z
aXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
bV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9u
KGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIXBhcnNlSG9zdEFuZFBvcnQoaXRlcmF0b3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghaXNTbGFzaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJ
c1NwZWNpYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9u
KGMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaXNQZXJj
ZW50T3JOb25BU0NJSSgqYykpCisgICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRP
ck5vbkFTQ0lJID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9IHdo
aWxlICghYy5hdEVuZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRl
OjpIb3N0OgorICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiSG9z
dCIpOworICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJz8nIHx8ICpjID09
ICcjJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlm
ICgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzUGVyY2VudE9y
Tm9uQVNDSUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25B
U0NJSSA9IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgfSB3aGlsZSAo
IWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6Rmls
ZToKKyAgICAgICAgICAgIExPR19TVEFURSgiRmlsZSIpOworICAgICAgICAgICAgc3dpdGNoICgq
YykgeworICAgICAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgIGNhc2Ug
Jy8nOgorICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlU2xhc2g7CisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnPyc6CisgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFs
aWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlF
bmNvZGluZyk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsK
KyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLz8iLCA0KTsKKyAgICAgICAg
ICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKSAtIDI7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
c3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAg
ICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJv
dG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGls
KGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8j
IiwgNCk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBv
c2l0aW9uKGMpIC0gMjsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExl
bmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAg
ICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAg
ICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikgJiYgc2hvdWxk
Q29weUZpbGVVUkwoYykpCisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJh
c2UsIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rpbmcp
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCIvLy8iLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3Rh
cnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpGaWxl
U2xhc2g6CisgICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGVTbGFzaCIpOworICAgICAgICAgICAg
aWYgKExJS0VMWSgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFy
dCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKKyAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZUhvc3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAgICAgICAgICAgbV91cmwubV91c2Vy
U3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAg
ICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAgICAgICBh
cHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGJhc2UpKSB7CisgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0OworICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5t
X3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZpbGVIb3N0OgorICAgICAgICAgICAg
ZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiRmlsZUhvc3QiKTsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKSkgeworICAgICAgICAgICAgICAgICAg
ICBib29sIHdpbmRvd3NRdWlyayA9IHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAg
ICAgICAgICAgICAgICAgICAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RC
ZWdpbik7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3dzUXVpcmspIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0
QmVnaW4pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh3
aW5kb3dzUXVpcmsgfHwgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHdpbmRvd3NRdWlyayB8fCBwYXJzZWREYXRhVmlldyhjdXJyZW50
UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKCpjID09ICc/JykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcigiLz8iLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
KmMgPT0gJyMnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIv
IyIsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlv
bihjKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihh
dXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWls
dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzTG9jYWxob3N0KHBhcnNl
ZERhdGFWaWV3KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJlbnRQb3NpdGlvbihjKSAtIG1fdXJs
Lm1fcGFzc3dvcmRFbmQpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1f
dXJsLm1fcGFzc3dvcmRFbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aFN0YXJ0OworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKGlzUGVyY2VudE9yTm9uQVNDSUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hv
c3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAg
ICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoU3Rh
cnQiKTsKKyAgICAgICAgICAgIGlmICgqYyAhPSAnLycgJiYgKmMgIT0gJ1xcJykgeworICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlBhdGg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UGF0
aDoKKyAgICAgICAgICAgIExPR19TVEFURSgiUGF0aCIpOworICAgICAgICAgICAgaWYgKCpjID09
ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJykpCisgICAgICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGN1
cnJlbnRQb3NpdGlvbihjKSAmJiBwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAx
KSA9PSAnLycpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRG91YmxlRG90UGF0
aFNlZ21lbnQoYykpKSB7CisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgICAgICAgICAgY29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KGMpOworICAg
ICAgICAgICAgICAgICAgICBwb3BQYXRoKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNTaW5nbGVE
b3RQYXRoU2VnbWVudChjKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGMpOworICAgICAgICAgICAgICAgICAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICgqYyA9PSAnPycpIHsKKyAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignPycpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAg
ICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlC
ZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVy
eTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKCpjID09ICcjJykgeworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5
RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZy
YWdtZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJbkRlZmF1bHRFbmNvZGVTZXQ+KGMpOworICAgICAgICAg
ICAgKytjOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJl
QUJhc2VVUkxQYXRoOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0
aCIpOworICAgICAgICAgICAgaWYgKCpjID09ICc/JykgeworICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc/Jyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAg
IGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAgICAgICAgICAgICBxdWVyeUJl
Z2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5
OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcjJykgeworICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAg
ICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgfSBlbHNlIGlmICgq
YyA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Cisg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2RlU2V0PihjKTsKKyAg
ICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJVVEY4
UXVlcnkiKTsKKyAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luID09IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+KCkpOworICAgICAgICAgICAgaWYgKCpjID09ICcjJykgeworICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoIW5vblVURjhRdWVyeUVuY29k
aW5nKTsKKyAgICAgICAgICAgIHV0ZjhRdWVyeUVuY29kZShjKTsKKyAgICAgICAgICAgICsrYzsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpOb25VVEY4UXVlcnk6Cisg
ICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJOb25VVEY4UXVlcnki
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPigpKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGVuY29kZU5vblVURjhRdWVyeShxdWVyeUJ1ZmZlciwgKm5vblVU
RjhRdWVyeUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJl
Z2luLCBjKSk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50
UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYXBwZW5kQ29kZVBvaW50KHF1ZXJ5QnVmZmVyLCAqYyk7CisgICAgICAgICAgICAg
ICAgYWR2YW5jZShjLCBxdWVyeUJlZ2luKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5k
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZyYWdtZW50Ogor
ICAgICAgICAgICAgVVJMX1BBUlNFUl9MT0coIlN0YXRlIEZyYWdtZW50Iik7CisgICAgICAgICAg
ICB1dGY4UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2RlU2V0PihjKTsKKyAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgc3dpdGNo
IChzdGF0ZSkgeworICAgIGNhc2UgU3RhdGU6OlNjaGVtZVN0YXJ0OgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgIGlmICghY3VycmVudFBvc2l0aW9uKGMp
ICYmIGJhc2UuaXNWYWxpZCgpICYmICFiYXNlLm1fY2Fubm90QmVBQmFzZVVSTCkgeworICAgICAg
ICAgICAgbV91cmwgPSBiYXNlOworICAgICAgICAgICAgbV91cmwucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZmFpbHVy
ZSgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgorICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIlNjaGVtZSIpOworICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIFN0YXRlOjpOb1NjaGVtZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJOb1NjaGVtZSIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IGNhc2UgU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKKyAg
ICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoT3JBdXRob3JpdHkiKTsKKyAgICAgICAgQVNTRVJU
KG1fdXJsLm1fdXNlclN0YXJ0KTsKKyAgICAgICAgQVNTRVJUKG1fdXJsLm1fdXNlclN0YXJ0ID09
IGN1cnJlbnRQb3NpdGlvbihjKSk7CisgICAgICAgIEFTU0VSVChwYXJzZWREYXRhVmlldyhjdXJy
ZW50UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICBtX3VybC5tX3VzZXJTdGFydC0t
OworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJT
dGFydCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgorICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIlJlbGF0aXZlIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKKyAgICAgICAgTE9H
X0ZJTkFMX1NUQVRFKCJSZWxhdGl2ZVNsYXNoIik7CisgICAgICAgIGNvcHlVUkxQYXJ0c1VudGls
KGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CisgICAg
ICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAg
ICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgorICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzIik7CisgICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6U3Bl
Y2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiU3Bl
Y2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMiKTsKKyAgICAgICAgZmFpbHVyZSgpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIkF1dGhvcml0eU9ySG9zdCIpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBjdXJyZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICBpZiAoYXV0aG9yaXR5T3JI
b3N0QmVnaW4uYXRFbmQoKSkgeworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgfSBlbHNlIGlmICghcGFy
c2VIb3N0QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIGZhaWx1
cmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGlmIChtX3VybElzU3BlY2lhbCkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVu
Z3RoICsgMTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aDsKKyAgICAgICAgfQor
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAg
ICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTdGF0ZTo6SG9zdDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJIb3N0Iik7
CisgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikpIHsK
KyAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCAr
IDE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOworICAgICAgICBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9
IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6RmlsZToK
KyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlIik7CisgICAgICAgIGlmIChiYXNlLmlzVmFs
aWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgY29weVVSTFBh
cnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5n
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIiwgMyk7CisgICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgbV91cmwu
bV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAg
ICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFN0YXRlOjpGaWxlU2xhc2g6CisgICAgICAgIExPR19GSU5BTF9TVEFU
RSgiRmlsZVNsYXNoIik7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgbV91
cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgKyAxOworICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKGNvcHlCYXNlV2luZG93c0Ry
aXZlTGV0dGVyKGJhc2UpKSB7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7
CisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0
YXJ0ICsgNDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
dGF0ZTo6RmlsZUhvc3Q6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRmlsZUhvc3QiKTsKKyAg
ICAgICAgaWYgKHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAgICAgICAmJiBpc1dp
bmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIo
YXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykg
eworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50
UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
KyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMp
KSkgeworICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICBpZiAoaXNMb2NhbGhv
c3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMp
IC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSB7CisgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLnNo
cmluayhtX3VybC5tX3Bhc3N3b3JkRW5kKTsKKyAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9y
dExlbmd0aCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlBhdGhTdGFydDoKKyAg
ICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoU3RhcnQiKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0YXRlOjpQYXRoOgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlBhdGgiKTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDoKKyAgICAg
ICAgTE9HX0ZJTkFMX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0aCIpOworICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlVU
RjhRdWVyeToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJVVEY4UXVlcnkiKTsKKyAgICAgICAg
QVNTRVJUKHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7
CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKKyAgICAgICAgTE9HX0ZJTkFM
X1NUQVRFKCJOb25VVEY4UXVlcnkiKTsKKyAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gIT0gQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAgICAgIGVuY29kZU5vblVURjhR
dWVyeShxdWVyeUJ1ZmZlciwgKm5vblVURjhRdWVyeUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBjKSk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6
OkZyYWdtZW50OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZyYWdtZW50Iik7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGlmIChMSUtFTFkoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9u
KSkgeworICAgICAgICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJpbmc7CisgICAgICAgIEFT
U0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fdXJs
Lm1fc3RyaW5nID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKG1fYXNjaWlCdWZmZXIpKTsKKyAgICBt
X3VybC5tX2lzVmFsaWQgPSB0cnVlOworICAgIFVSTF9QQVJTRVJfTE9HKCJQYXJzZWQgVVJMIDwl
cz4iLCBtX3VybC5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpwYXJzZUF1dGhvcml0eShDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFko
aXRlcmF0b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAg
ICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7IGFkdmFuY2UoaXRlcmF0
b3IpKSB7CisgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKSB7CisgICAgICAgICAgICBtX3Vy
bC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgYXV0
byBpdGVyYXRvckF0Q29sb24gPSBpdGVyYXRvcjsKKyAgICAgICAgICAgICsraXRlcmF0b3I7Cisg
ICAgICAgICAgICBib29sIHRhYk9yTmV3bGluZUFmdGVyQ29sb24gPSBmYWxzZTsKKyAgICAgICAg
ICAgIHdoaWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQoKSAmJiBpc1RhYk9yTmV3bGluZSgq
aXRlcmF0b3IpKSkgeworICAgICAgICAgICAgICAgIHRhYk9yTmV3bGluZUFmdGVyQ29sb24gPSB0
cnVlOworICAgICAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoaXRlcmF0b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JBdENvbG9uKTsKKyAgICAgICAgICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgIGlmIChtX3Vy
bC5tX3VzZXJFbmQgPiBtX3VybC5tX3VzZXJTdGFydCkKKyAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignQCcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICh0YWJPck5ld2xpbmVBZnRlckNvbG9uKQorICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckF0Q29sb24pOworICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignOicpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJh
dG9yKTsKKyAgICB9CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJh
dG9yKSkKKyAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNlckluZm9FbmNvZGVT
ZXQ+KGl0ZXJhdG9yKTsKKyAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gY3VycmVudFBvc2l0aW9u
KGl0ZXJhdG9yKTsKKyAgICBpZiAoIW1fdXJsLm1fdXNlckVuZCkKKyAgICAgICAgbV91cmwubV91
c2VyRW5kID0gbV91cmwubV9wYXNzd29yZEVuZDsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdA
Jyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+Cit2b2lkIFVS
TFBhcnNlcjo6YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlIG51
bWJlcikKK3sKKyAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2lnbmVkSW50ZWdlclR5cGUpICogMyAr
IDFdOworICAgIExDaGFyKiBlbmQgPSBzdGQ6OmVuZChidWYpOworICAgIExDaGFyKiBwID0gZW5k
OworICAgIGRvIHsKKyAgICAgICAgKi0tcCA9IChudW1iZXIgJSAxMCkgKyAnMCc7CisgICAgICAg
IG51bWJlciAvPSAxMDsKKyAgICB9IHdoaWxlIChudW1iZXIpOworICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIocCwgZW5kIC0gcCk7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY0KElQ
djRBZGRyZXNzIGFkZHJlc3MpCit7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50
OF90PihhZGRyZXNzID4+IDI0KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7CisgICAg
YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzID4+IDE2KTsKKyAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1
aW50OF90PihhZGRyZXNzID4+IDgpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy4nKTsKKyAg
ICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQ4X3Q+KGFkZHJlc3MpOworfQorICAgIAor
c3RhdGljIHNpemVfdCB6ZXJvU2VxdWVuY2VMZW5ndGgoY29uc3Qgc3RkOjphcnJheTx1aW50MTZf
dCwgOD4mIGFkZHJlc3MsIHNpemVfdCBiZWdpbikKK3sKKyAgICBzaXplX3QgZW5kID0gYmVnaW47
CisgICAgZm9yICg7IGVuZCA8IDg7IGVuZCsrKSB7CisgICAgICAgIGlmIChhZGRyZXNzW2VuZF0p
CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGVuZCAtIGJlZ2luOworfQor
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNv
bnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzKQoreworICAgIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBsb25nZXN0OworICAgIHNpemVfdCBsb25nZXN0TGVuZ3RoID0gMDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0g
emVyb1NlcXVlbmNlTGVuZ3RoKGFkZHJlc3MsIGkpOworICAgICAgICBpZiAobGVuZ3RoKSB7Cisg
ICAgICAgICAgICBpZiAobGVuZ3RoID4gMSAmJiAoIWxvbmdlc3QgfHwgbG9uZ2VzdExlbmd0aCA8
IGxlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICBsb25nZXN0ID0gaTsKKyAgICAgICAgICAgICAg
ICBsb25nZXN0TGVuZ3RoID0gbGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSAr
PSBsZW5ndGg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxvbmdlc3Q7Cit9CisKK3Zv
aWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGllY2UpCit7CisgICAg
Ym9vbCBwcmludGVkID0gZmFsc2U7CisgICAgaWYgKGF1dG8gbmliYmxlMCA9IHBpZWNlID4+IDEy
KSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFT
Q0lJSGV4RGlnaXQobmliYmxlMCkpOworICAgICAgICBwcmludGVkID0gdHJ1ZTsKKyAgICB9Cisg
ICAgYXV0byBuaWJibGUxID0gcGllY2UgPj4gOCAmIDB4RjsKKyAgICBpZiAocHJpbnRlZCB8fCBu
aWJibGUxKSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2Vy
Y2FzZUFTQ0lJSGV4RGlnaXQobmliYmxlMSkpOworICAgICAgICBwcmludGVkID0gdHJ1ZTsKKyAg
ICB9CisgICAgYXV0byBuaWJibGUyID0gcGllY2UgPj4gNCAmIDB4RjsKKyAgICBpZiAocHJpbnRl
ZCB8fCBuaWJibGUyKQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9M
b3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTIpKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHBpZWNlICYgMHhGKSk7Cit9CisK
K3ZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2KFVSTFBhcnNlcjo6SVB2NkFkZHJlc3MgYWRk
cmVzcykKK3sKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdbJyk7CisgICAgYXV0byBjb21wcmVz
c1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKKyAgICBmb3IgKHNp
emVfdCBwaWVjZSA9IDA7IHBpZWNlIDwgODsgcGllY2UrKykgeworICAgICAgICBpZiAoY29tcHJl
c3NQb2ludGVyICYmIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpID09IHBpZWNlKSB7CisgICAgICAg
ICAgICBBU1NFUlQoIWFkZHJlc3NbcGllY2VdKTsKKyAgICAgICAgICAgIGlmIChwaWVjZSkKKyAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOjoiLCAyKTsKKyAgICAgICAg
ICAgIHdoaWxlIChwaWVjZSA8IDggJiYgIWFkZHJlc3NbcGllY2VdKQorICAgICAgICAgICAgICAg
IHBpZWNlKys7CisgICAgICAgICAgICBpZiAocGllY2UgPT0gOCkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXJpYWxpemVJUHY2UGllY2UoYWRkcmVzc1twaWVj
ZV0pOworICAgICAgICBpZiAocGllY2UgPCA3KQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignOicpOworICAgIH0KKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCddJyk7Cit9CisKK2Vu
dW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3IgeworICAgIEZhaWx1cmUs
CisgICAgT3ZlcmZsb3csCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgor
RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBVUkxQ
YXJzZXI6OnBhcnNlSVB2NFBpZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvciwgYm9vbCYgZGlkU2VlU3ludGF4VmlvbGF0aW9uKQoreworICAgIGVudW0gY2xhc3Mg
U3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5rbm93bkJhc2UsCisgICAgICAgIERlY2ltYWws
CisgICAgICAgIE9jdGFsT3JIZXgsCisgICAgICAgIE9jdGFsLAorICAgICAgICBIZXgsCisgICAg
fTsKKyAgICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpVbmtub3duQmFzZTsKKyAgICBDaGVja2VkPHVp
bnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gdmFsdWUgPSAwOworICAgIGlmICghaXRlcmF0b3IuYXRF
bmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
SVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0
RW5kKCkpIHsKKyAgICAgICAgaWYgKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpIHsKKyAgICAg
ICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7CisgICAgICAgICAgICArK2l0ZXJh
dG9yOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCppdGVy
YXRvciA9PSAnLicpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgp
KTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKKyAgICAgICAgfQorICAg
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgU3RhdGU6OlVua25vd25CYXNlOgor
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKCppdGVyYXRvciA9PSAnMCcpKSB7CisgICAgICAgICAg
ICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbE9y
SGV4OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RGVjaW1hbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0YXRlOjpPY3RhbE9ySGV4OgorICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJ3gnIHx8ICppdGVyYXRvciA9PSAn
WCcpIHsKKyAgICAgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkhleDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok9jdGFsOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU3RhdGU6OkRlY2ltYWw6CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgq
aXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGll
Y2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpOworICAgICAgICAgICAgdmFsdWUgKj0gMTA7CisgICAg
ICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICAr
K2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6Ok9jdGFs
OgorICAgICAgICAgICAgQVNTRVJUKGRpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgICAgICAg
ICBpZiAoKml0ZXJhdG9yIDwgJzAnIHx8ICppdGVyYXRvciA+ICc3JykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsK
KyAgICAgICAgICAgIHZhbHVlICo9IDg7CisgICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3Ig
LSAnMCc7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vy
cm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkhleDoKKyAgICAgICAgICAgIEFTU0VSVChkaWRTZWVT
eW50YXhWaW9sYXRpb24pOworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKml0ZXJh
dG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFy
c2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgICAgIHZhbHVlICo9IDE2OworICAgICAgICAg
ICAgdmFsdWUgKz0gdG9BU0NJSUhleFZhbHVlKCppdGVyYXRvcik7CisgICAgICAgICAgICBpZiAo
VU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAg
ICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgQVNTRVJUKCF2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpOworICAgIHJldHVybiB2YWx1ZS51bnNh
ZmVHZXQoKTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDY0X3QgcG93MjU2KHNpemVf
dCBleHBvbmVudCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChleHBvbmVudCA8PSA0KTsKKyAgICB1
aW50NjRfdCB2YWx1ZXNbNV0gPSB7MSwgMjU2LCAyNTYgKiAyNTYsIDI1NiAqIDI1NiAqIDI1Niwg
MjU2dWxsICogMjU2ICogMjU2ICogMjU2IH07CisgICAgcmV0dXJuIHZhbHVlc1tleHBvbmVudF07
Cit9CisKK2VudW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yIHsKKyAgICBGYWls
dXJlLAorICAgIE5vdElQdjQsCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Rm9yU3ludGF4VmlvbGF0aW9uLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorRXhwZWN0ZWQ8VVJM
UGFyc2VyOjpJUHY0QWRkcmVzcywgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yPiBVUkxQYXJz
ZXI6OnBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZv
clN5bnRheFZpb2xhdGlvbj4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24sIENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIFZlY3RvcjxF
eHBlY3RlZDx1aW50MzJfdCwgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3I+LCA0PiBp
dGVtczsKKyAgICBib29sIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IGZhbHNlOworICAgIGlmICgh
aXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgd2hpbGUgKCFpdGVy
YXRvci5hdEVuZCgpKSB7CisgICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7
CisgICAgICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOworICAgICAgICAgICAg
KytpdGVyYXRvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlm
IChpdGVtcy5zaXplKCkgPj0gNCkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJ
UHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAgaXRlbXMuYXBwZW5kKHBhcnNlSVB2
NFBpZWNlKGl0ZXJhdG9yLCBkaWRTZWVTeW50YXhWaW9sYXRpb24pKTsKKyAgICAgICAgaWYgKCFp
dGVyYXRvci5hdEVuZCgpICYmICppdGVyYXRvciA9PSAnLicpIHsKKyAgICAgICAgICAgICsraXRl
cmF0b3I7CisgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlIGlmICgqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgfHwgIWl0ZW1zLnNpemUoKSB8fCBp
dGVtcy5zaXplKCkgPiA0KQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNp
bmdFcnJvcjo6Tm90SVB2NCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsK
KyAgICAgICAgaWYgKCFpdGVtLmhhc192YWx1ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0UGll
Y2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgfQorICAgIGZvciAoY29uc3QgYXV0
byYgaXRlbSA6IGl0ZW1zKSB7CisgICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVt
LmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdykKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICB9
CisgICAgaWYgKGl0ZW1zLnNpemUoKSA+IDEpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpdGVtcy5zaXplKCkgLSAxOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpdGVtc1tpXS52
YWx1ZSgpID4gMjU1KQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0
UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaXRlbXNb
aXRlbXMuc2l6ZSgpIC0gMV0udmFsdWUoKSA+PSBwb3cyNTYoNSAtIGl0ZW1zLnNpemUoKSkpCisg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsK
KworICAgIGlmIChkaWRTZWVTeW50YXhWaW9sYXRpb24pCisgICAgICAgIHN5bnRheFZpb2xhdGlv
bihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0ZW0gOiBpdGVtcykgeworICAgICAgICBpZiAoaXRlbS52YWx1ZSgpID4gMjU1KQorICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRp
b24pOworICAgIH0KKworICAgIGlmIChVTkxJS0VMWShpdGVtcy5zaXplKCkgIT0gNCkpCisgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsK
KworICAgIElQdjRBZGRyZXNzIGlwdjQgPSBpdGVtcy50YWtlTGFzdCgpLnZhbHVlKCk7CisgICAg
Zm9yIChzaXplX3QgY291bnRlciA9IDA7IGNvdW50ZXIgPCBpdGVtcy5zaXplKCk7ICsrY291bnRl
cikKKyAgICAgICAgaXB2NCArPSBpdGVtc1tjb3VudGVyXS52YWx1ZSgpICogcG93MjU2KDMgLSBj
b3VudGVyKTsKKyAgICByZXR1cm4gaXB2NDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGll
Y2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikK
K3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICB1aW50MzJfdCBwaWVjZSA9IDA7CisgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxz
ZTsKKyAgICBzaXplX3QgZGlnaXRDb3VudCA9IDA7CisgICAgd2hpbGUgKCFpdGVyYXRvci5hdEVu
ZCgpKSB7CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCppdGVyYXRvcikpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICArK2RpZ2l0Q291bnQ7CisgICAgICAgIGlm
ICghcGllY2UgJiYgKml0ZXJhdG9yID09ICcwJykgeworICAgICAgICAgICAgaWYgKGxlYWRpbmda
ZXJvcykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAg
bGVhZGluZ1plcm9zID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXBpZWNlICYmICpp
dGVyYXRvciA9PSAnMCcpCisgICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAg
ICBwaWVjZSA9IHBpZWNlICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgIGlmIChwaWVj
ZSA+IDI1NSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGFkdmFu
Y2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwor
ICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAoKml0ZXJhdG9yID09ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBp
ZiAocGllY2UgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHJldHVybiBwaWVjZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K3N0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQ
djRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVy
YXRvcikKK3sKKyAgICBJUHY0QWRkcmVzcyBhZGRyZXNzID0gMDsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDQ7ICsraSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
cGllY2UgPSBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoaXRlcmF0b3IpKQorICAgICAgICAgICAg
YWRkcmVzcyA9IChhZGRyZXNzIDw8IDgpICsgcGllY2UudmFsdWUoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKGkgPCAzKSB7Cisg
ICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICAgICAgaWYgKCppdGVyYXRvciAhPSAnLicpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGFkdmFuY2U8Q2hhcmFj
dGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgICAgICB9
IGVsc2UgaWYgKCFpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICB9CisgICAgQVNTRVJUKGl0ZXJhdG9yLmF0RW5kKCkpOworICAgIHJldHVybiBh
ZGRyZXNzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRp
b25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sKKyAgICBBU1NFUlQoKmMgPT0gJ1sn
KTsKKyAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7CisgICAgYWR2YW5jZShjLCBob3N0QmVn
aW4pOworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBJUHY2QWRkcmVzcyBhZGRyZXNzID0ge3swLCAwLCAwLCAwLCAwLCAwLCAwLCAwfX07Cisg
ICAgc2l6ZV90IHBpZWNlUG9pbnRlciA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNv
bXByZXNzUG9pbnRlcjsKKworICAgIGlmICgqYyA9PSAnOicpIHsKKyAgICAgICAgYWR2YW5jZShj
LCBob3N0QmVnaW4pOworICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCpjICE9ICc6JykKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAg
KytwaWVjZVBvaW50ZXI7CisgICAgICAgIGNvbXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRlcjsK
KyAgICB9CisgICAgCisgICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKHBpZWNl
UG9pbnRlciA9PSA4KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
aWYgKCpjID09ICc6JykgeworICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgYWR2YW5jZShjLCBo
b3N0QmVnaW4pOworICAgICAgICAgICAgKytwaWVjZVBvaW50ZXI7CisgICAgICAgICAgICBjb21w
cmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDYgfHwgKGNvbXByZXNzUG9pbnRlciAm
JiBwaWVjZVBvaW50ZXIgPCA2KSkgeworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8SVB2
NEFkZHJlc3M+IGlwdjRBZGRyZXNzID0gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoYykpIHsK
KyAgICAgICAgICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA9PSA1
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgICAgICAgICAgICAgIGFkZHJlc3Nb
cGllY2VQb2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSA+PiAxNjsKKyAgICAgICAgICAg
ICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgJiAweEZG
RkY7CisgICAgICAgICAgICAgICAgYyA9IHsgfTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB1aW50MTZfdCB2YWx1ZSA9IDA7CisgICAg
ICAgIHNpemVfdCBsZW5ndGggPSAwOworICAgICAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNl
OworICAgICAgICBmb3IgKDsgbGVuZ3RoIDwgNDsgbGVuZ3RoKyspIHsKKyAgICAgICAgICAgIGlm
IChjLmF0RW5kKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIWlz
QVNDSUlIZXhEaWdpdCgqYykpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAoaXNBU0NJSVVwcGVyKCpjKSkKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9z
dEJlZ2luKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnMCcgJiYgIWxlbmd0aCkKKyAgICAgICAg
ICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAq
IDB4MTAgKyB0b0FTQ0lJSGV4VmFsdWUoKmMpOworICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0
QmVnaW4pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkoKHZhbHVl
ICYmIGxlYWRpbmdaZXJvcykgfHwgKCF2YWx1ZSAmJiBsZW5ndGggPiAxKSkpCisgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKworICAgICAgICBhZGRyZXNzW3BpZWNlUG9p
bnRlcisrXSA9IHZhbHVlOworICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCB8fCAqYyAhPSAnOicpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7
CisgICAgfQorICAgIAorICAgIGlmICghYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIAorICAgIGlmIChjb21wcmVzc1BvaW50ZXIpIHsKKyAgICAgICAgc2l6ZV90
IHN3YXBzID0gcGllY2VQb2ludGVyIC0gY29tcHJlc3NQb2ludGVyLnZhbHVlKCk7CisgICAgICAg
IHBpZWNlUG9pbnRlciA9IDc7CisgICAgICAgIHdoaWxlIChzd2FwcykKKyAgICAgICAgICAgIHN0
ZDo6c3dhcChhZGRyZXNzW3BpZWNlUG9pbnRlci0tXSwgYWRkcmVzc1tjb21wcmVzc1BvaW50ZXIu
dmFsdWUoKSArIHN3YXBzLS0gLSAxXSk7CisgICAgfSBlbHNlIGlmIChwaWVjZVBvaW50ZXIgIT0g
OCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBwb3NzaWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFk
ZHJlc3MpOworICAgIGlmIChwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikKKyAgICAgICAgcG9zc2li
bGVDb21wcmVzc1BvaW50ZXIudmFsdWUoKSsrOworICAgIGlmIChVTkxJS0VMWShjb21wcmVzc1Bv
aW50ZXIgIT0gcG9zc2libGVDb21wcmVzc1BvaW50ZXIpKQorICAgICAgICBzeW50YXhWaW9sYXRp
b24oaG9zdEJlZ2luKTsKKyAgICAKKyAgICByZXR1cm4gYWRkcmVzczsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK1VSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2Vy
OjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCwgY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0
aW9uUG9zaXRpb24pCit7CisgICAgTENoYXJCdWZmZXIgb3V0cHV0OworICAgIG91dHB1dC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICB1aW50OF90IGJ5dGUgPSBpbnB1dFtpXTsKKyAg
ICAgICAgaWYgKGJ5dGUgIT0gJyUnKQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVu
ZChieXRlKTsKKyAgICAgICAgZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpIDwgbGVuZ3RoIC0gMikg
eworICAgICAgICAgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pICYmIGlzQVND
SUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAgICAgICAg
IG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5w
dXRbaSArIDJdKSk7CisgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgIH0K
KyAgICByZXR1cm4gb3V0cHV0OworfQorICAgIAorVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciBVUkxQ
YXJzZXI6OnBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQor
eworICAgIExDaGFyQnVmZmVyIG91dHB1dDsKKyAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShsZW5ndGgpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07CisgICAgICAgIGlmIChieXRl
ICE9ICclJykKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKKyAgICAgICAgICAg
IGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5w
dXRbaSArIDJdKSkgeworICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9B
U0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7CisgICAgICAgICAgICAg
ICAgaSArPSAyOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0LnVu
Y2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvdXRwdXQu
dW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgIH0KKyAgICByZXR1cm4gb3V0cHV0OworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6
TENoYXJCdWZmZXI+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiBkb21haW4s
IGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uKQoreworICAgIExDaGFyQnVmZmVyIGFzY2lpOworICAgIGlmIChk
b21haW4uaXNBbGxBU0NJSSgpKSB7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBkb21haW4ubGVu
Z3RoKCk7CisgICAgICAgIGlmIChkb21haW4uaXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnM4KCk7CisgICAgICAgICAgICBh
c2NpaS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGlzQVNDSUlVcHBlcihjaGFyYWN0ZXJzW2ldKSkpCisgICAgICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICAg
ICAgICAgICAgICBhc2NpaS51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUxvd2VyKGNoYXJhY3RlcnNb
aV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAg
YXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQorICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAg
ICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJz
W2ldKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFzY2lpOwor
ICAgIH0KKyAgICAKKyAgICBjb25zdCBzaXplX3QgbWF4RG9tYWluTGVuZ3RoID0gNjQ7CisgICAg
VUNoYXIgaG9zdG5hbWVCdWZmZXJbbWF4RG9tYWluTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVy
cm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJ
RE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVk
ID0gdWlkbmFfbmFtZVRvQVNDSUkoJmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2Rlcigp
LCBTdHJpbmdWaWV3KGRvbWFpbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGRvbWFpbi5sZW5n
dGgoKSwgaG9zdG5hbWVCdWZmZXIsIG1heERvbWFpbkxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxz
LCAmZXJyb3IpOworICAgIEFTU0VSVChudW1DaGFyYWN0ZXJzQ29udmVydGVkIDw9IHN0YXRpY19j
YXN0PGludDMyX3Q+KG1heERvbWFpbkxlbmd0aCkpOworCisgICAgaWYgKFVfU1VDQ0VTUyhlcnJv
cikgJiYgIXByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgeworICAgICAgICBmb3IgKGludDMyX3Qg
aSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzQ29udmVydGVkOyArK2kpIHsKKyAgICAgICAgICAgIEFT
U0VSVChpc0FTQ0lJKGhvc3RuYW1lQnVmZmVyW2ldKSk7CisgICAgICAgICAgICBBU1NFUlQoIWlz
QVNDSUlVcHBlcihob3N0bmFtZUJ1ZmZlcltpXSkpOworICAgICAgICB9CisgICAgICAgIGFzY2lp
LmFwcGVuZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CisgICAgICAg
IGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhhc2NpaS5kYXRhKCksIGFzY2lpLnNpemUoKSkpCisg
ICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3Np
dGlvbik7CisgICAgICAgIHJldHVybiBhc2NpaTsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKK30KKworYm9vbCBVUkxQYXJzZXI6Omhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29u
c3QgVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW4pCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhc2NpaURvbWFpbi5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoaXNG
b3JiaWRkZW5Ib3N0Q29kZVBvaW50KGFzY2lpRG9tYWluW2ldKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6cGFyc2VQb3J0KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoKml0ZXJhdG9yID09
ICc6Jyk7CisgICAgYXV0byBjb2xvbkl0ZXJhdG9yID0gaXRlcmF0b3I7CisgICAgYWR2YW5jZShp
dGVyYXRvciwgY29sb25JdGVyYXRvcik7CisgICAgdWludDMyX3QgcG9ydCA9IDA7CisgICAgaWYg
KFVOTElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5n
dGggPSBjdXJyZW50UG9zaXRpb24oY29sb25JdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsK
KyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKKyAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOworICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7
CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIGlm
IChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKSB7CisgICAgICAgICAg
ICBpZiAoKml0ZXJhdG9yID09ICcwJyAmJiAhZGlnaXRDb3VudCkKKyAgICAgICAgICAgICAgICBs
ZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICAgICAgKytkaWdpdENvdW50OworICAgICAgICAg
ICAgcG9ydCA9IHBvcnQgKiAxMCArICppdGVyYXRvciAtICcwJzsKKyAgICAgICAgICAgIGlmIChw
b3J0ID4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKHBvcnQgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICBzeW50
YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisgICAgCisgICAgaWYgKCFwb3J0ICYmIGRpZ2l0
Q291bnQgPiAxKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisKKyAg
ICBBU1NFUlQocG9ydCA9PSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOworICAgIGlmIChV
TkxJS0VMWShkZWZhdWx0UG9ydEZvclByb3RvY29sKHBhcnNlZERhdGFWaWV3KDAsIG1fdXJsLm1f
c2NoZW1lRW5kKSkgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKSkKKyAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgIGVsc2UgeworICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgIEFTU0VSVChwb3J0IDw9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDE2X3Q+OjptYXgoKSk7CisgICAgICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZm
ZXI8dWludDE2X3Q+KHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSk7CisgICAgfQorCisgICAg
dW5zaWduZWQgcG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5t
X2hvc3RFbmQ7CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRM
ZW5ndGgpOworICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBh
cnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBp
dGVyYXRvcikKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCppdGVyYXRvciA9PSAnWycpIHsKKyAgICAgICAgYXV0byBpcHY2RW5kID0gaXRlcmF0
b3I7CisgICAgICAgIHdoaWxlICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2RW5kICE9ICddJykK
KyAgICAgICAgICAgICsraXB2NkVuZDsKKyAgICAgICAgaWYgKGlwdjZFbmQuYXRFbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IHBhcnNl
SVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaXRlcmF0b3IsIGlwdjZF
bmQpKSkgeworICAgICAgICAgICAgc2VyaWFsaXplSVB2NihhZGRyZXNzLnZhbHVlKCkpOworICAg
ICAgICAgICAgaWYgKCFpcHY2RW5kLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNl
KGlwdjZFbmQpOworICAgICAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2
RW5kID09ICc6JykgeworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJy
ZW50UG9zaXRpb24oaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVBv
cnQoaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKKyAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlw
djZFbmQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAg
Zm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNGb3JiaWRkZW5Ib3N0Q29k
ZVBvaW50KCppdGVyYXRvcikgJiYgKml0ZXJhdG9yICE9ICclJykpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJblNpbXBsZUVu
Y29kZVNldD4oaXRlcmF0b3IpOworICAgICAgICB9CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgp
KSB7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7
CisgICAgfQorICAgIAorICAgIGlmIChMSUtFTFkoIW1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJ
KSkgeworICAgICAgICBhdXRvIGhvc3RJdGVyYXRvciA9IGl0ZXJhdG9yOworICAgICAgICBmb3Ig
KDsgIWl0ZXJhdG9yLmF0RW5kKCk7ICsraXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGlmIChpc1Rh
Yk9yTmV3bGluZSgqaXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBpZiAoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KCppdGVyYXRvcikpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGF1dG8gYWRkcmVzcyA9
IHBhcnNlSVB2NEhvc3QoaG9zdEl0ZXJhdG9yLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPihob3N0SXRlcmF0b3IsIGl0ZXJhdG9yKSk7CisgICAgICAgIGlmIChhZGRyZXNzKSB7Cisg
ICAgICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAg
aWYgKGl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5n
dGggPSAwOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKDsgaG9zdEl0ZXJhdG9yICE9IGl0ZXJh
dG9yOyArK2hvc3RJdGVyYXRvcikgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JO
ZXdsaW5lKCpob3N0SXRlcmF0b3IpKSkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihob3N0SXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqaG9zdEl0ZXJhdG9yKSkp
CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RJdGVyYXRvcik7CisgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqaG9zdEl0ZXJhdG9yKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJh
dG9yKTsKKyAgICAgICAgaWYgKCFob3N0SXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBwYXJzZVBvcnQoaG9zdEl0ZXJhdG9yKTsKKyAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0
aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIAorICAgIGNvbnN0IGF1dG8gaG9zdEJlZ2luID0gaXRlcmF0b3I7CisgICAg
CisgICAgTENoYXJCdWZmZXIgdXRmOEVuY29kZWQ7CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVu
ZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgq
aXRlcmF0b3IpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKml0ZXJhdG9yID09
ICc6JykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUko
Kml0ZXJhdG9yKSkpCisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKwor
ICAgICAgICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKCppdGVyYXRvcikpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOworICAg
ICAgICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAgICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVy
LCBvZmZzZXQsICppdGVyYXRvcik7CisgICAgICAgIHV0ZjhFbmNvZGVkLmFwcGVuZChidWZmZXIs
IG9mZnNldCk7CisgICAgfQorICAgIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGVkID0gcGVyY2Vu
dERlY29kZSh1dGY4RW5jb2RlZC5kYXRhKCksIHV0ZjhFbmNvZGVkLnNpemUoKSwgaG9zdEJlZ2lu
KTsKKyAgICBTdHJpbmcgZG9tYWluID0gU3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5k
YXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CisgICAgaWYgKGRvbWFpbi5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhwZXJj
ZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSkpCisgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgIGF1dG8gYXNjaWlEb21haW4gPSBkb21haW5Ub0FT
Q0lJKCpkb21haW4uaW1wbCgpLCBob3N0QmVnaW4pOworICAgIGlmICghYXNjaWlEb21haW4gfHwg
aGFzRm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbi52YWx1ZSgpKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIExDaGFyQnVmZmVyJiBhc2NpaURvbWFpblZhbHVlID0gYXNjaWlE
b21haW4udmFsdWUoKTsKKyAgICBjb25zdCBMQ2hhciogYXNjaWlEb21haW5DaGFyYWN0ZXJzID0g
YXNjaWlEb21haW5WYWx1ZS5kYXRhKCk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRI
b3N0KGhvc3RCZWdpbiwgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+KGFzY2lpRG9tYWluVmFsdWUu
YmVnaW4oKSwgYXNjaWlEb21haW5WYWx1ZS5lbmQoKSkpOworICAgIGlmIChhZGRyZXNzKSB7Cisg
ICAgICAgIHNlcmlhbGl6ZUlQdjQoYWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgbV91cmwubV9o
b3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9y
LmF0RW5kKCkpIHsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0
ZXJhdG9yKTsKKyAgICB9CisgICAgaWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGFzY2lpRG9tYWluQ2hhcmFjdGVycywgYXNjaWlEb21haW5WYWx1ZS5zaXplKCkpOwor
ICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgaWYg
KCFpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsK
KyAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgIHJldHVybiB0cnVlOworfQorCitzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5w
dXQpCit7CisgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJzaW9uKTsKKyAg
ICBpZiAodXRmOC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBh
dXRvIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7
Cit9CisKKy8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmxlbmNvZGVk
LXBhcnNlcgorYXV0byBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyBp
bnB1dCkgLT4gVVJMRW5jb2RlZEZvcm0KK3sKKyAgICBVUkxFbmNvZGVkRm9ybSBvdXRwdXQ7Cisg
ICAgZm9yIChTdHJpbmdWaWV3IGJ5dGVzIDogaW5wdXQuc3BsaXQoJyYnKSkgeworICAgICAgICBh
dXRvIGVxdWFsSW5kZXggPSBieXRlcy5maW5kKCc9Jyk7CisgICAgICAgIGlmIChlcXVhbEluZGV4
ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVjb2RlKGJ5
dGVzLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKKyAgICAgICAgICAgIGlmIChuYW1l
KQorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIGVtcHR5U3Ry
aW5nKCkgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3Jt
VVJMRGVjb2RlKGJ5dGVzLnN1YnN0cmluZygwLCBlcXVhbEluZGV4KS50b1N0cmluZygpLnJlcGxh
Y2UoJysnLCAweDIwKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gZm9ybVVSTERlY29kZShi
eXRlcy5zdWJzdHJpbmcoZXF1YWxJbmRleCArIDEpLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4
MjApKTsKKyAgICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVlKQorICAgICAgICAgICAgICAgIG91
dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIHZhbHVlLnZhbHVlKCkgfSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworc3RhdGljIHZvaWQgc2VyaWFsaXplVVJM
RW5jb2RlZEZvcm0oY29uc3QgU3RyaW5nJiBpbnB1dCwgVmVjdG9yPExDaGFyPiYgb3V0cHV0KQor
eworICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CisgICAgY29u
c3QgY2hhciogZGF0YSA9IHV0ZjguZGF0YSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dXRmOC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IGNoYXIgYnl0ZSA9IGRhdGFbaV07
CisgICAgICAgIGlmIChieXRlID09IDB4MjApCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDB4
MkIpOworICAgICAgICBlbHNlIGlmIChieXRlID09IDB4MkEKKyAgICAgICAgICAgIHx8IGJ5dGUg
PT0gMHgyRAorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDJFCisgICAgICAgICAgICB8fCAoYnl0
ZSA+PSAweDMwICYmIGJ5dGUgPD0gMHgzOSkKKyAgICAgICAgICAgIHx8IChieXRlID49IDB4NDEg
JiYgYnl0ZSA8PSAweDVBKQorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDVGCisgICAgICAgICAg
ICB8fCAoYnl0ZSA+PSAweDYxICYmIGJ5dGUgPD0gMHg3QSkpIC8vIEZJWE1FOiBQdXQgdGhlc2Ug
aW4gdGhlIGNoYXJhY3RlckNsYXNzVGFibGUgdG8gYXZvaWQgYnJhbmNoZXMuCisgICAgICAgICAg
ICBvdXRwdXQuYXBwZW5kKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwZXJjZW50
RW5jb2RlQnl0ZShieXRlLCBvdXRwdXQpOworICAgIH0KK30KKyAgICAKK1N0cmluZyBVUkxQYXJz
ZXI6OnNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYgdHVwbGVzKQoreworICAgIGlmICh0
dXBsZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPExDaGFy
PiBvdXRwdXQ7CisgICAgZm9yIChhdXRvJiB0dXBsZSA6IHR1cGxlcykgeworICAgICAgICBpZiAo
IW91dHB1dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCcmJyk7CisgICAg
ICAgIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3JtKHR1cGxlLmtleSwgb3V0cHV0KTsKKyAgICAgICAg
b3V0cHV0LmFwcGVuZCgnPScpOworICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBs
ZS52YWx1ZSwgb3V0cHV0KTsKKyAgICB9CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92
ZShvdXRwdXQpKTsKK30KKworY29uc3QgVUlETkEmIFVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERv
bWFpbk5hbWVUcmFuc2NvZGVyKCkKK3sKKyAgICBzdGF0aWMgVUlETkEqIGVuY29kZXI7CisgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7CisgICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAg
ICAgIC8vIFdhcm5pbmc6IFBsZWFzZSBjb250YWN0IGEgV2ViS2l0R1RLKyBkZXZlbG9wZXIgaWYg
Y2hhbmdpbmcgdGhlc2UgZmxhZ3MuCisgICAgICAgIC8vIFRoZXkgc2hvdWxkIGJlIHN5bmNlZCB3
aXRoIGVwaHlfdXJpX2RlY29kZSgpIGluIGVwaHktdXJpLWhlbHBlcnMuYy4KKyAgICAgICAgZW5j
b2RlciA9IHVpZG5hX29wZW5VVFM0NihVSUROQV9DSEVDS19CSURJIHwgVUlETkFfQ0hFQ0tfQ09O
VEVYVEogfCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fVU5JQ09ERSB8IFVJRE5BX05PTlRSQU5T
SVRJT05BTF9UT19BU0NJSSwgJmVycm9yKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoVV9TVUND
RVNTKGVycm9yKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuY29kZXIpOworICAgIH0pOwor
ICAgIHJldHVybiAqZW5jb2RlcjsKK30KKworYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFs
KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIFVSTF9QQVJTRVJfTE9HKCIlZCAl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlc1xuJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJWQgJXMiLAorICAgICAgICBhLm1faXNWYWxpZCwKKyAgICAgICAgYS5tX2Nh
bm5vdEJlQUJhc2VVUkwsCisgICAgICAgIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAorICAg
ICAgICBhLm1fc2NoZW1lRW5kLAorICAgICAgICBhLm1fdXNlclN0YXJ0LAorICAgICAgICBhLm1f
dXNlckVuZCwKKyAgICAgICAgYS5tX3Bhc3N3b3JkRW5kLAorICAgICAgICBhLm1faG9zdEVuZCwK
KyAgICAgICAgYS5tX2hvc3RFbmQgKyBhLm1fcG9ydExlbmd0aCwKKyAgICAgICAgYS5tX3BhdGhB
ZnRlckxhc3RTbGFzaCwKKyAgICAgICAgYS5tX3BhdGhFbmQsCisgICAgICAgIGEubV9xdWVyeUVu
ZCwKKyAgICAgICAgYS5tX3N0cmluZy51dGY4KCkuZGF0YSgpLAorICAgICAgICBiLm1faXNWYWxp
ZCwKKyAgICAgICAgYi5tX2Nhbm5vdEJlQUJhc2VVUkwsCisgICAgICAgIGIubV9wcm90b2NvbElz
SW5IVFRQRmFtaWx5LAorICAgICAgICBiLm1fc2NoZW1lRW5kLAorICAgICAgICBiLm1fdXNlclN0
YXJ0LAorICAgICAgICBiLm1fdXNlckVuZCwKKyAgICAgICAgYi5tX3Bhc3N3b3JkRW5kLAorICAg
ICAgICBiLm1faG9zdEVuZCwKKyAgICAgICAgYi5tX2hvc3RFbmQgKyBiLm1fcG9ydExlbmd0aCwK
KyAgICAgICAgYi5tX3BhdGhBZnRlckxhc3RTbGFzaCwKKyAgICAgICAgYi5tX3BhdGhFbmQsCisg
ICAgICAgIGIubV9xdWVyeUVuZCwKKyAgICAgICAgYi5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsK
KworICAgIHJldHVybiBhLm1fc3RyaW5nID09IGIubV9zdHJpbmcKKyAgICAgICAgJiYgYS5tX2lz
VmFsaWQgPT0gYi5tX2lzVmFsaWQKKyAgICAgICAgJiYgYS5tX2Nhbm5vdEJlQUJhc2VVUkwgPT0g
Yi5tX2Nhbm5vdEJlQUJhc2VVUkwKKyAgICAgICAgJiYgYS5tX3Byb3RvY29sSXNJbkhUVFBGYW1p
bHkgPT0gYi5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkKKyAgICAgICAgJiYgYS5tX3NjaGVtZUVu
ZCA9PSBiLm1fc2NoZW1lRW5kCisgICAgICAgICYmIGEubV91c2VyU3RhcnQgPT0gYi5tX3VzZXJT
dGFydAorICAgICAgICAmJiBhLm1fdXNlckVuZCA9PSBiLm1fdXNlckVuZAorICAgICAgICAmJiBh
Lm1fcGFzc3dvcmRFbmQgPT0gYi5tX3Bhc3N3b3JkRW5kCisgICAgICAgICYmIGEubV9ob3N0RW5k
ID09IGIubV9ob3N0RW5kCisgICAgICAgICYmIGEubV9wb3J0TGVuZ3RoID09IGIubV9wb3J0TGVu
Z3RoCisgICAgICAgICYmIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gYi5tX3BhdGhBZnRlckxh
c3RTbGFzaAorICAgICAgICAmJiBhLm1fcGF0aEVuZCA9PSBiLm1fcGF0aEVuZAorICAgICAgICAm
JiBhLm1fcXVlcnlFbmQgPT0gYi5tX3F1ZXJ5RW5kOworfQorCitib29sIFVSTFBhcnNlcjo6aW50
ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVybiB1cmwu
bV9zY2hlbWVFbmQgPD0gdXJsLm1fdXNlclN0YXJ0CisgICAgICAgICYmIHVybC5tX3VzZXJTdGFy
dCA8PSB1cmwubV91c2VyRW5kCisgICAgICAgICYmIHVybC5tX3VzZXJFbmQgPD0gdXJsLm1fcGFz
c3dvcmRFbmQKKyAgICAgICAgJiYgdXJsLm1fcGFzc3dvcmRFbmQgPD0gdXJsLm1faG9zdEVuZAor
ICAgICAgICAmJiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aCA8PSB1cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2gKKyAgICAgICAgJiYgdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IHVy
bC5tX3BhdGhFbmQKKyAgICAgICAgJiYgdXJsLm1fcGF0aEVuZCA8PSB1cmwubV9xdWVyeUVuZAor
ICAgICAgICAmJiB1cmwubV9xdWVyeUVuZCA8PSB1cmwubV9zdHJpbmcubGVuZ3RoKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2Vy
LmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTI1YjU0MDIyMzQw
YTllODhiZWQ4Y2NmMTcwMDM5Mjc3N2ZlNzJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvVVJMUGFyc2VyLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKK3N0cnVjdCBVSUROQTsKKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQ
b2ludEl0ZXJhdG9yOworCitjbGFzcyBVUkxQYXJzZXIgeworcHVibGljOgorICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBV
UkwmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaW50ZXJuYWxWYWx1ZXND
b25zaXN0ZW50KGNvbnN0IFVSTCYpOworICAgIAorICAgIHVzaW5nIFVSTEVuY29kZWRGb3JtID0g
VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj47CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBVUkxFbmNvZGVkRm9ybSBwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmlu
Z1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShj
b25zdCBVUkxFbmNvZGVkRm9ybSYpOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF5YmVDYW5vbmljYWxpemVT
Y2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworCisgICAgc3RhdGljIGNvbnN0IFVJRE5BJiBp
bnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBpc0lu
VXNlckluZm9FbmNvZGVTZXQoVUNoYXIpOworCitwcml2YXRlOgorICAgIFVSTFBhcnNlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVs
bHB0cik7CisgICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9CisKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3
KTsKKyAgICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90
b2NvbChTdHJpbmdWaWV3KTsKKyAgICBmcmllbmQgY2xhc3MgVVJMOworCisgICAgVVJMIG1fdXJs
OworICAgIFZlY3RvcjxMQ2hhcj4gbV9hc2NpaUJ1ZmZlcjsKKyAgICBib29sIG1fdXJsSXNTcGVj
aWFsIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdXJsSXNGaWxlIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJIHsgZmFsc2UgfTsKKyAgICBTdHJpbmcgbV9pbnB1
dFN0cmluZzsKKyAgICBjb25zdCB2b2lkKiBtX2lucHV0QmVnaW4geyBudWxscHRyIH07CisKKyAg
ICBib29sIG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZSA9IDIwNDg7CisgICAgdXNpbmcg
TENoYXJCdWZmZXIgPSBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPjsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2UoY29uc3QgQ2hh
cmFjdGVyVHlwZSosIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVVJMJiwgY29uc3QgVVJM
VGV4dEVuY29kaW5nKik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9p
ZCBwYXJzZUF1dGhvcml0eShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZUhvc3RBbmRQb3J0KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBib29sIHBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYpOworCisgICAgdm9pZCBmYWlsdXJlKCk7CisgICAgZW51bSBjbGFzcyBSZXBvcnRTeW50
YXhWaW9sYXRpb24geyBObywgWWVzIH07CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZpb2xhdGlvbiA9IFJlcG9y
dFN5bnRheFZpb2xhdGlvbjo6WWVzPgorICAgIHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpIHsgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCByZXBv
cnRTeW50YXhWaW9sYXRpb24+KGl0ZXJhdG9yLCBpdGVyYXRvcik7IH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50
YXhWaW9sYXRpb246Olllcz4KKyAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRl
cmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gYm9vbCB0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHZvaWQgc3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1Bl
cmNlbnRFbmNvZGVkRG90KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzV2luZG93c0RyaXZlTGV0dGVy
KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGJvb2wgaXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBzaG91
bGRDb3B5RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBjaGVja0xvY2FsaG9zdENvZGVQb2lu
dChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIFVDaGFyMzIpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgYm9vbCBpc0xvY2FsaG9zdChTdHJpbmdWaWV3
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVTaW5n
bGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29uc3VtZURvdWJsZURvdFBh
dGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBzaXplX3QgY3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJ
bnRlZ2VyVHlwZT4gdm9pZCBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdl
clR5cGUpOworICAgIHRlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgdXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpv
cHRpb25hbDxMQ2hhckJ1ZmZlcj4gZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9u
UG9zaXRpb24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExDaGFyQnVm
ZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9u
KTsKKyAgICBzdGF0aWMgTENoYXJCdWZmZXIgcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNp
emVfdCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBmb3JtVVJMRGVjb2RlKFN0
cmluZ1ZpZXcgaW5wdXQpOworICAgIHN0YXRpYyBib29sIGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9p
bnQoY29uc3QgTENoYXJCdWZmZXImKTsKKyAgICB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4
X3QpOworICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyKTsKKyAgICB2b2lkIGFw
cGVuZFRvQVNDSUlCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmRU
b0FTQ0lJQnVmZmVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qgc2l6ZSkgeyBhcHBl
bmRUb0FTQ0lJQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNoYXJhY3RlcnMp
LCBzaXplKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgZW5j
b2RlTm9uVVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIHNvdXJjZSwgY29uc3QgVVJMVGV4
dEVuY29kaW5nJiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHZvaWQg
Y29weUFTQ0lJU3RyaW5nVW50aWwoY29uc3QgU3RyaW5nJiwgc2l6ZV90IGxlbmd0aCk7CisgICAg
Ym9vbCBjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmKTsKKyAgICBTdHJpbmdW
aWV3IHBhcnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCk7CisgICAgVUNo
YXIgcGFyc2VkRGF0YVZpZXcoc2l6ZV90IHBvc2l0aW9uKTsKKworICAgIHVzaW5nIElQdjRBZGRy
ZXNzID0gdWludDMyX3Q7CisgICAgdm9pZCBzZXJpYWxpemVJUHY0KElQdjRBZGRyZXNzKTsKKyAg
ICBlbnVtIGNsYXNzIElQdjRQYXJzaW5nRXJyb3I7CisgICAgZW51bSBjbGFzcyBJUHY0UGllY2VQ
YXJzaW5nRXJyb3I7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRh
eFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8SVB2NEFkZHJlc3Ms
IElQdjRQYXJzaW5nRXJyb3I+IHBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbj4mLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0
ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRQ
aWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xh
dGlvbik7CisgICAgdXNpbmcgSVB2NkFkZHJlc3MgPSBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PjsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQdjZB
ZGRyZXNzPiBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlv
bmFsPElQdjRBZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdm9pZCBzZXJpYWxpemVJUHY2UGllY2UodWludDE2
X3QgcGllY2UpOworICAgIHZvaWQgc2VyaWFsaXplSVB2NihJUHY2QWRkcmVzcyk7CisKKyAgICBl
bnVtIGNsYXNzIFVSTFBhcnQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
dm9pZCBjb3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQsIGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYp
OworICAgIHN0YXRpYyBzaXplX3QgdXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYsIFVSTFBh
cnQpOworICAgIHZvaWQgcG9wUGF0aCgpOworICAgIGJvb2wgc2hvdWxkUG9wUGF0aCh1bnNpZ25l
ZCk7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY2NjVh
OGQwZmZiOTYzNDkyMDY0NTMxNzA1YmMxY2I5MzNiYjc4ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCisKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1l
c3BhY2UgV1RGIHsKKworUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCit7CisgICAg
Ly8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdo
ZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAv
LyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBu
b3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCisgICAgLy8gY291
bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBl
bmNvZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjaworICAgIC8vIG9udG8gdXNp
bmcgSVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBy
ZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIGJhc2VVUkwsIHRydWUpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0g
YWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEs
IGJhc2VVUkwsIHRydWUpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIGdldFVSTEJ5
dGVzKENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQoreworICAgIENGSW5kZXgg
Ynl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7CisgICAgcmVzdWx0LnJlc2l6
ZShieXRlc0xlbmd0aCk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXMo
dXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVuZ3Ro
KTsKKyAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRlc0xl
bmd0aCk7Cit9CisKK3ZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiByZXN1
bHQpCit7CisgICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAw
KTsKKyAgICBjaGFyKiBieXRlczsKKyAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxp
emVkKGJ5dGVzTGVuZ3RoLCBieXRlcyk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJM
R2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0
aCk7CisgICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNM
ZW5ndGgpOworfQorCitib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25z
dCBVUkwmIHVybCkKK3sKKyAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7
CisKKyAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCisgICAg
ICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9
KTsKKworICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5
dGVzKTsKKyAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5zaXpl
KCkpIH07CisKKyAgICBpZiAoIXVybC5oYXNQYXRoKCkpCisgICAgICAgIHJldHVybiBTdHJpbmdW
aWV3IHsgdXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7CisKKyAgICBhdXRvIHVybFdpdGhv
dXRQYXRoID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwucGF0
aFN0YXJ0KCkgKyAxKTsKKyAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxXaXRo
b3V0UGF0aCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0
cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhYzQ5
YzNmMzdmNjUwMGU5NjNhZWQ1YjA0ZDA5OGYzODUxZjBlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIENGVVJMRXh0cmFzX2gKKyNkZWZpbmUgQ0ZVUkxFeHRyYXNfaAorCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVVJMOwordHlwZWRl
ZiBWZWN0b3I8Y2hhciwgNTEyPiBVUkxDaGFyQnVmZmVyOworCitXVEZfRVhQT1JUX1BSSVZBVEUg
UmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciosIHNp
emVfdCwgQ0ZVUkxSZWYgYmFzZVVSTCA9IDApOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0
VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmLCBDU3RyaW5nJik7CisKK2Jvb2wgaXNDRlVSTFNhbWVP
cmlnaW4oQ0ZVUkxSZWYsIGNvbnN0IFVSTCYpOworCit9CisKKyNlbmRpZiAvLyBDRlVSTEV4dHJh
c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9jZi9VUkxDRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk1OTFlMmIzODRlYmIyMDZkNTIyMjdlYzlj
YmY5ZTc1ZDk1ODI1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1VSTENG
LmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CisKKyNpbmNsdWRlICJDRlVSTEV4dHJhcy5oIgorI2luY2x1ZGUgIlVSTFBhcnNl
ci5oIgorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGVVJMLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworVVJMOjpVUkwoQ0ZVUkxSZWYgdXJs
KQoreworICAgIGlmICghdXJsKSB7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2Ug
VVJMIGhlcmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAgICBnZXRVUkxCeXRlcyh1cmwsIHVy
bEJ5dGVzKTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKHVybEJ5dGVzLmRhdGEoKSk7CisgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKKyNpZiAhVVNFKEZPVU5EQVRJT04pCitSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBX
aGF0IHNob3VsZCB0aGlzIHJldHVybiBmb3IgaW52YWxpZCBVUkxzPworICAgIC8vIEN1cnJlbnRs
eSBpdCB0aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUg
c3RyaW5nIGluIHRoYXQgY2FzZSwKKyAgICAvLyB3aGljaCBpcyBjbGVhcmx5IHdyb25nLgorICAg
IFVSTENoYXJCdWZmZXIgYnVmZmVyOworICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOworICAgIGF1
dG8gY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisKKyAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NGVVJMU2Ft
ZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBjZlVSTDsKK30KKyNlbmRpZgorCitTdHJpbmcgVVJMOjpmaWxlU3lzdGVtUGF0
aCgpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTCA9IGNyZWF0ZUNGVVJM
KCk7CisgICAgaWYgKCFjZlVSTCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisjaWYgUExB
VEZPUk0oV0lOKQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQ
YXRoU3R5bGU7CisjZWxzZQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFBP
U0lYUGF0aFN0eWxlOworI2VuZGlmCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5
c3RlbVBhdGgoY2ZVUkwuZ2V0KCksIHBhdGhTdHlsZSkpLmdldCgpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQzMmU0YjMzZDI0ODdkYjcwZmY0ZDM5
YjBiZDQzZTlmODlhYTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TlNVUkxFeHRyYXMuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA3LCAyMDEyLCAyMDE0IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAK
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAY2xhc3MgTlNTdHJp
bmc7CitAY2xhc3MgTlNVUkw7CisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQT1JUX1BSSVZB
VEUgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopOworV1RGX0VYUE9SVF9QUklW
QVRFIE5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNl
VVJMKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJ
VkFURSBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICopOworV1RGX0VYUE9SVF9Q
UklWQVRFIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsgLy8gUmV0dXJuIHZh
bHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAqZW5j
b2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJy
b3IuCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3Rl
ckJlZm9yZUNvbXBvbmVudChOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOworV1RGX0VYUE9S
VF9QUklWQVRFIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKiwgTlNVUkwgKmJhc2VVUkwpOwor
V1RGX0VYUE9SVF9QUklWQVRFIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOworV1RG
X0VYUE9SVF9QUklWQVRFIE5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKiwg
Q0ZVUkxDb21wb25lbnRUeXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJMV2l0aFVz
ZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOworCitO
U1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
Qk9PTCBpc1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICopOworV1RGX0VYUE9SVF9QUklWQVRFIEJP
T0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKik7CisKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmZjOGYxNjhkZTA1
NmM1YjJhMjk3MjFmMGJkN2I5ZjZmMTIzNDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTAsMCArMSwxMjM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0
ICJOU1VSTEV4dHJhcy5oIgorCisjaW1wb3J0ICJDRlVSTEV4dHJhcy5oIgorI2ltcG9ydCAiVVJM
UGFyc2VyLmgiCisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi9IZXhOdW1i
ZXIuaD4KKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8dW5pY29kZS91Y2hh
ci5oPgorI2ltcG9ydCA8dW5pY29kZS91aWRuYS5oPgorI2ltcG9ydCA8dW5pY29kZS91c2NyaXB0
Lmg+CisKKy8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBu
YW1lLgorLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSURO
IGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgorI2RlZmluZSBIT1NUX05B
TUVfQlVGRkVSX0xFTkdUSCAyMDQ4CisjZGVmaW5lIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIIDIw
NDgKKwordHlwZWRlZiB2b2lkICgqIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uKShOU1N0cmlu
ZyAqLCBOU1JhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+Jik7CisKK3N0YXRpYyB1aW50
MzJfdCBJRE5TY3JpcHRXaGl0ZUxpc3RbKFVTQ1JJUFRfQ09ERV9MSU1JVCArIDMxKSAvIDMyXTsK
KworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBib29sIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFy
YWN0ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgcmV0dXJuIGNvZGVQb2ludCA9PSAweDA1
NDggfHwgY29kZVBvaW50ID09IDB4MDU0RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQ
b2ludCA9PSAweDA1N0Q7Cit9CisKK3N0YXRpYyBib29sIGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0
ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19F
UlJPUjsKKyAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjb2RlUG9p
bnQsICZlcnJvcik7CisgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgeworICAgICAgICBM
T0dfRVJST1IoImdvdCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czog
JWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
c2NyaXB0ID09IFVTQ1JJUFRfQVJNRU5JQU47Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIo
Q2hhcmFjdGVyVHlwZSBjaGFyQ29kZSkKK3sKKyAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1
YXRpb24oY2hhckNvZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGluZ3Mg
dGhlIFVSTCBQYXJzZXIgcmVqZWN0czoKKyAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7CisgICAgY2Fz
ZSAnIyc6CisgICAgY2FzZSAnJSc6CisgICAgY2FzZSAnLyc6CisgICAgY2FzZSAnOic6CisgICAg
Y2FzZSAnPyc6CisgICAgY2FzZSAnQCc6CisgICAgY2FzZSAnWyc6CisgICAgY2FzZSAnXFwnOgor
ICAgIGNhc2UgJ10nOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCisKKworc3RhdGljIEJPT0wgaXNMb29rYWxpa2VD
aGFyYWN0ZXIoc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIz
MiBjaGFyQ29kZSkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5n
IGFzIHVuc2FmZSwgbG9va2FsaWtlIGNoYXJhY3RlcnM6CisgICAgLy8gYW55IG5vbi1wcmludGFi
bGUgY2hhcmFjdGVyLCBhbnkgY2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKKyAg
ICAvLyBhbnkgaWdub3JhYmxlIGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRl
ZCB0byBsb2Nrcy4KKyAgICAKKyAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3Rl
cnMgaW4gTW96aWxsYSdzIGJsYWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3
b3JrLklETi5ibGFja2xpc3RfY2hhcnM+LgorCisgICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVy
cyBoZXJlIHdpbGwgbmV2ZXIgYXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgorICAgIC8vIEZv
ciBleGFtcGxlLCBJQ1UgdHJhbnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNl
IGFuZCBtb3N0CisgICAgLy8gc2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUg
b2YgdGhlIHR3byBjYWxsZXJzIHVzZXMgdGhpcworICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBo
YXZlIG5vdCBiZWVuIHByb2Nlc3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgor
ICAgIAorICAgIGlmICghdV9pc3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hh
ckNvZGUpIHx8IHVfaGFzQmluYXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdO
T1JBQkxFX0NPREVfUE9JTlQpKQorICAgICAgICByZXR1cm4gWUVTOworICAgIAorICAgIHN3aXRj
aCAoY2hhckNvZGUpIHsKKyAgICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBP
TkUgUVVBUlRFUiAqLworICAgICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9OIE9O
RSBIQUxGICovCisgICAgICAgIGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUg
UVVBUlRFUlMgKi8KKyAgICAgICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRFUiBJ
IFdJVEggQUNVVEUgKi8KKyAgICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBSRVRS
T0ZMRVggQ0xJQ0sgKi8KKyAgICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExFVFRF
UiBBTFBIQSAqLworICAgICAgICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIFND
UklQVCBHICovCisgICAgICAgIGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJQU5H
VUxBUiBDT0xPTiAqLworICAgICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JUIFNU
Uk9LRSBPVkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQg
U09MSURVUyBPVkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcgTE9O
RyBTT0xJRFVTIE9WRVJMQVkgKi8KKyAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZV
TEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICov
CisgICAgICAgIGNhc2UgMHgwNUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRICov
CisgICAgICAgIGNhc2UgMHgwNUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRICov
CisgICAgICAgIGNhc2UgMHgwNUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICov
CisgICAgICAgIGNhc2UgMHgwNjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04gKi8K
KyAgICAgICAgY2FzZSAweDA2MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJ
R04gKi8KKyAgICAgICAgY2FzZSAweDA2NTA6IC8qIEFSQUJJQyBLQVNSQSAqLworICAgICAgICBj
YXNlIDB4MDY2MDogLyogQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KKyAgICAgICAgY2FzZSAw
eDA2NkE6IC8qIEFSQUJJQyBQRVJDRU5UIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDA2RDQ6IC8q
IEFSQUJJQyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDA2RjA6IC8qIEVYVEVOREVEIEFS
QUJJQyBJTkRJQyBESUdJVCBaRVJPICovCisgICAgICAgIGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMg
U1VQUkFMSU5FQVIgRlVMTCBTVE9QICovCisgICAgICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMg
U1VCTElORUFSIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MDcwMzogLyogU1lSSUFDIFNV
UFJBTElORUFSIENPTE9OICovCisgICAgICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJQUMgU1VCTElO
RUFSIENPTE9OICovCisgICAgICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQ
VU5DVFVBVElPTiAqLworICAgICAgICBjYXNlIDB4MUQwNDogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgQyAqLworICAgICAgICBjYXNlIDB4MUQwRjogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgTyAqLworICAgICAgICBjYXNlIDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgVSAqLworICAgICAgICBjYXNlIDB4MUQyMDogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgViAqLworICAgICAgICBjYXNlIDB4MUQyMTogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgVyAqLworICAgICAgICBjYXNlIDB4MUQyMjogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgWiAqLworICAgICAgICBjYXNlIDB4MUVDRDogLyogTEFUSU4gU01BTEwgTEVUVEVS
IE8gV0lUSCBET1QgQkVMT1cgKi8KKyAgICAgICAgY2FzZSAweDIwMTA6IC8qIEhZUEhFTiAqLwor
ICAgICAgICBjYXNlIDB4MjAxMTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLworICAgICAgICBj
YXNlIDB4MjAyNDogLyogT05FIERPVCBMRUFERVIgKi8KKyAgICAgICAgY2FzZSAweDIwMjc6IC8q
IEhZUEhFTkFUSU9OIFBPSU5UICovCisgICAgICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVG
VC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4MjAzQTog
LyogU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICovCisgICAgICAg
IGNhc2UgMHgyMDQxOiAvKiBDQVJFVCBJTlNFUlRJT04gUE9JTlQgKi8KKyAgICAgICAgY2FzZSAw
eDIwNDQ6IC8qIEZSQUNUSU9OIFNMQVNIICovCisgICAgICAgIGNhc2UgMHgyMDUyOiAvKiBDT01N
RVJDSUFMIE1JTlVTIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFD
VElPTiBPTkUgVEhJUkQgKi8KKyAgICAgICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElP
TiBUV08gVEhJUkRTICovCisgICAgICAgIGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04g
T05FIEZJRlRIICovCisgICAgICAgIGNhc2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdP
IEZJRlRIUyAqLworICAgICAgICBjYXNlIDB4MjE1NzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVF
IEZJRlRIUyAqLworICAgICAgICBjYXNlIDB4MjE1ODogLyogVlVMR0FSIEZSQUNUSU9OIEZPVVIg
RklGVEhTICovCisgICAgICAgIGNhc2UgMHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJ
WFRIICovCisgICAgICAgIGNhc2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhU
SFMgKi8KKyAgICAgICAgY2FzZSAweDIxNUI6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFQg
Ki8KKyAgICAgICAgY2FzZSAweDIxNUM6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhT
ICovCisgICAgICAgIGNhc2UgMHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhT
ICovCisgICAgICAgIGNhc2UgMHgyMTVFOiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRI
UyAqLworICAgICAgICBjYXNlIDB4MjE1RjogLyogRlJBQ1RJT04gTlVNRVJBVE9SIE9ORSAqLwor
ICAgICAgICBjYXNlIDB4MjIxMjogLyogTUlOVVMgU0lHTiAqLworICAgICAgICBjYXNlIDB4MjIx
NTogLyogRElWSVNJT04gU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDIyMTY6IC8qIFNFVCBNSU5V
UyAqLworICAgICAgICBjYXNlIDB4MjIzNjogLyogUkFUSU8gKi8KKyAgICAgICAgY2FzZSAweDIz
M0Y6IC8qIEFQTCBGVU5DVElPTkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KKyAgICAgICAgY2FzZSAw
eDIzQUU6IC8qIElOVEVHUkFMIEVYVEVOU0lPTiAqLworICAgICAgICBjYXNlIDB4MjQ0QTogLyog
T0NSIERPVUJMRSBCQUNLU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlU
eXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVG
VCAqLworICAgICAgICBjYXNlIDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBM
SUdIVCBESUFHT05BTCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUICovCisgICAgICAgIGNhc2Ug
MHgyOUY2OiAvKiBTT0xJRFVTIFdJVEggT1ZFUkJBUiAqLworICAgICAgICBjYXNlIDB4MjlGODog
LyogQklHIFNPTElEVVMgKi8KKyAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVT
IEJJTkFSWSBSRUxBVElPTiAqLworICAgICAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElE
VVMgT1BFUkFUT1IgKi8KKyAgICAgICAgY2FzZSAweDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NS
SVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIFJJR0hUICovCisgICAgICAgIGNhc2UgMHgyRkYxOiAv
KiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KKyAg
ICAgICAgY2FzZSAweDJGRjI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBM
RUZUIFRPIE1JRERMRSBBTkQgUklHSFQgKi8KKyAgICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9H
UkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICov
CisgICAgICAgIGNhc2UgMHgyRkY0OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNU
RVIgRlVMTCBTVVJST1VORCAqLworICAgICAgICBjYXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMg
REVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQUJPVkUgKi8KKyAgICAgICAgY2Fz
ZSAweDJGRjY6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBG
Uk9NIEJFTE9XICovCisgICAgICAgIGNhc2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQ
VElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMRUZUICovCisgICAgICAgIGNhc2UgMHgyRkY4
OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBF
UiBMRUZUICovCisgICAgICAgIGNhc2UgMHgyRkY5OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElP
TiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBSSUdIVCAqLworICAgICAgICBjYXNlIDB4
MkZGQTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00g
TE9XRVIgTEVGVCAqLworICAgICAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJ
UFRJT04gQ0hBUkFDVEVSIE9WRVJMQUlEICovCisgICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVP
R1JBUEhJQyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUg
QlJBQ0tFVCAqLworICAgICAgICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBC
UkFDS0VUICovCisgICAgICAgIGNhc2UgMHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBC
UkFDS0VUICovCisgICAgICAgIGNhc2UgMHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBN
QVJLIFVQUEVSIEhBTEYgKi8KKyAgICAgICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEg
UkVQRUFUIE1BUksgTE9XRVIgSEFMRiAqLworICAgICAgICBjYXNlIDB4MzIxRDogLyogUEFSRU5U
SEVTSVpFRCBLT1JFQU4gQ0hBUkFDVEVSIE9KRU9OICovCisgICAgICAgIGNhc2UgMHgzMjFFOiAv
KiBQQVJFTlRIRVNJWkVEIEtPUkVBTiBDSEFSQUNURVIgTyBIVSAqLworICAgICAgICBjYXNlIDB4
MzNBRTogLyogU1FVQVJFIFJBRCBPVkVSIFMgKi8KKyAgICAgICAgY2FzZSAweDMzQUY6IC8qIFNR
VUFSRSBSQUQgT1ZFUiBTIFNRVUFSRUQgKi8KKyAgICAgICAgY2FzZSAweDMzQzY6IC8qIFNRVUFS
RSBDIE9WRVIgS0cgKi8KKyAgICAgICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9WRVIgTSAq
LworICAgICAgICBjYXNlIDB4MDVCOTogLyogSEVCUkVXIFBPSU5UIEhPTEFNICovCisgICAgICAg
IGNhc2UgMHgwNUJBOiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZBViAqLworICAg
ICAgICBjYXNlIDB4MDVDMTogLyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCisgICAgICAgIGNh
c2UgMHgwNUMyOiAvKiBIRUJSRVcgUE9JTlQgU0lOIERPVCAqLworICAgICAgICBjYXNlIDB4MDVD
NDogLyogSEVCUkVXIE1BUksgVVBQRVIgRE9UICovCisgICAgICAgIGNhc2UgMHhBNzMxOiAvKiBM
QVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBTICovCisgICAgICAgIGNhc2UgMHhBNzcxOiAvKiBM
QVRJTiBTTUFMTCBMRVRURVIgRFVNICovCisgICAgICAgIGNhc2UgMHhBNzg5OiAvKiBNT0RJRklF
UiBMRVRURVIgQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBG
T1JNIEZPUiBWRVJUSUNBTCBTRU1JQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZFMTU6IC8qIFBS
RVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFWENMQU1BVElPTiBNQVJLICovCisgICAgICAg
IGNhc2UgMHhGRTNGOiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdM
RSBCUkFDS0VUICovCisgICAgICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNF
IFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRP
UlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZGMEU6IC8qIEZVTExXSURU
SCBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09MSURV
UyAqLworICAgICAgICBjYXNlIDB4RkY2MTogLyogSEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwg
U1RPUCAqLworICAgICAgICBjYXNlIDB4RkZGQzogLyogT0JKRUNUIFJFUExBQ0VNRU5UIENIQVJB
Q1RFUiAqLworICAgICAgICBjYXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICov
CisgICAgICAgIGNhc2UgMHgxRjUwRjogLyogTE9DSyBXSVRIIElOSyBQRU4gKi8KKyAgICAgICAg
Y2FzZSAweDFGNTEwOiAvKiBDTE9TRUQgTE9DSyBXSVRIIEtFWSAqLworICAgICAgICBjYXNlIDB4
MUY1MTE6IC8qIEtFWSAqLworICAgICAgICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sgKi8KKyAgICAg
ICAgY2FzZSAweDFGNTEzOiAvKiBPUEVOIExPQ0sgKi8KKyAgICAgICAgICAgIHJldHVybiBZRVM7
CisgICAgICAgIGNhc2UgMHgwMzA3OiAvKiBDT01CSU5JTkcgRE9UIEFCT1ZFICovCisgICAgICAg
ICAgICByZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMjM3IC8qIExBVElOIFNNQUxMIExF
VFRFUiBET1RMRVNTIEogKi8KKyAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9
PSAweDAxMzEgLyogTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSSAqLworICAgICAgICAgICAg
ICAgIHx8IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExFVFRFUiBWQVYg
Ki8KKyAgICAgICAgY2FzZSAweDA1NDg6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPICov
CisgICAgICAgIGNhc2UgMHgwNTREOiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUggKi8K
KyAgICAgICAgY2FzZSAweDA1Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLworICAg
ICAgICBjYXNlIDB4MDU3RDogLyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNFSCAqLworICAgICAg
ICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50CisgICAgICAgICAgICAgICAgJiYgIWlzQVND
SUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCisg
ICAgICAgICAgICAgICAgJiYgIWlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJldmlvdXNDb2Rl
UG9pbnQudmFsdWUoKSk7CisgICAgICAgIGNhc2UgJy4nOgorICAgICAgICAgICAgcmV0dXJuIE5P
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50
CisgICAgICAgICAgICAgICAgJiYgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91
c0NvZGVQb2ludC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICYmICEoaXNBcm1lbmlhblNjcmlw
dENoYXJhY3RlcihjaGFyQ29kZSkgfHwgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIo
Y2hhckNvZGUpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdoaXRlTGlzdElETlNjcmlwdChj
b25zdCBjaGFyKiBzY3JpcHROYW1lKQoreworICAgIGludDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9w
ZXJ0eVZhbHVlRW51bShVQ0hBUl9TQ1JJUFQsIHNjcmlwdE5hbWUpOworICAgIGlmIChzY3JpcHQg
Pj0gMCAmJiBzY3JpcHQgPCBVU0NSSVBUX0NPREVfTElNSVQpIHsKKyAgICAgICAgc2l6ZV90IGlu
ZGV4ID0gc2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQg
JSAzMik7CisgICAgICAgIElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gfD0gbWFzazsKKyAgICB9
Cit9CisKK3N0YXRpYyBCT09MIHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpm
aWxlbmFtZSkKK3sKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gTk87CisKKyAg
ICBGSUxFICpmaWxlID0gZm9wZW4oW2ZpbGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0s
ICJyIik7CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gTk87CisgICAgCisgICAgLy8g
UmVhZCBhIHdvcmQgYXQgYSB0aW1lLgorICAgIC8vIEFsbG93IGNvbW1lbnRzLCBzdGFydGluZyB3
aXRoICMgY2hhcmFjdGVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgICAgd2hpbGUgKDEpIHsK
KyAgICAgICAgLy8gU2tpcCBhIGNvbW1lbnQgaWYgcHJlc2VudC4KKyAgICAgICAgaWYgKGZzY2Fu
ZihmaWxlLCAiICMlKlteXG5ccl0lKltcblxyXSIpID09IEVPRikKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAKKyAgICAgICAgLy8gUmVhZCBhIHNjcmlwdCBuYW1lIGlmIHByZXNlbnQuCisg
ICAgICAgIGNoYXIgd29yZFszM107CisgICAgICAgIGludCByZXN1bHQgPSBmc2NhbmYoZmlsZSwg
IiAlMzJbXiMgXHRcblxyXSUqW14jIFx0XG5ccl0gIiwgd29yZCk7CisgICAgICAgIGlmIChyZXN1
bHQgPT0gRU9GKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBpZiAocmVz
dWx0ID09IDEpIHsKKyAgICAgICAgICAgIC8vIEdvdCBhIHdvcmQsIG1hcCB0byBzY3JpcHQgY29k
ZSBhbmQgcHV0IGl0IGludG8gdGhlIGFycmF5LgorICAgICAgICAgICAgd2hpdGVMaXN0SUROU2Ny
aXB0KHdvcmQpOworICAgICAgICB9CisgICAgfQorICAgIGZjbG9zZShmaWxlKTsKKyAgICByZXR1
cm4gWUVTOworfQorCitzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxp
c3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCit7CisgICAgc3RhdGljIGRp
c3BhdGNoX29uY2VfdCBmbGFnOworICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57CisgICAgICAg
IC8vIFJlYWQgd2hpdGUgbGlzdCBmcm9tIGxpYnJhcnkuCisgICAgICAgIE5TQXJyYXkgKmRpcnMg
PSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3Rvcnks
IE5TQWxsRG9tYWluc01hc2ssIFlFUyk7CisgICAgICAgIGludCBudW1EaXJzID0gW2RpcnMgY291
bnRdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykgeworICAgICAg
ICAgICAgaWYgKHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4
OmldIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50
eHQiXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0
IGNoYXIqIGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3RbMjBdID0geworICAgICAgICAgICAgIkNv
bW1vbiIsCisgICAgICAgICAgICAiSW5oZXJpdGVkIiwKKyAgICAgICAgICAgICJBcmFiaWMiLAor
ICAgICAgICAgICAgIkFybWVuaWFuIiwKKyAgICAgICAgICAgICJCb3BvbW9mbyIsCisgICAgICAg
ICAgICAiQ2FuYWRpYW5fQWJvcmlnaW5hbCIsCisgICAgICAgICAgICAiRGV2YW5hZ2FyaSIsCisg
ICAgICAgICAgICAiRGVzZXJldCIsCisgICAgICAgICAgICAiR3VqYXJhdGkiLAorICAgICAgICAg
ICAgIkd1cm11a2hpIiwKKyAgICAgICAgICAgICJIYW5ndWwiLAorICAgICAgICAgICAgIkhhbiIs
CisgICAgICAgICAgICAiSGVicmV3IiwKKyAgICAgICAgICAgICJIaXJhZ2FuYSIsCisgICAgICAg
ICAgICAiS2F0YWthbmFfT3JfSGlyYWdhbmEiLAorICAgICAgICAgICAgIkthdGFrYW5hIiwKKyAg
ICAgICAgICAgICJMYXRpbiIsCisgICAgICAgICAgICAiVGFtaWwiLAorICAgICAgICAgICAgIlRo
YWkiLAorICAgICAgICAgICAgIllpIiwKKyAgICAgICAgfTsKKyAgICAgICAgZm9yIChjb25zdCBj
aGFyKiBzY3JpcHROYW1lIDogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKKyAgICAgICAgICAg
IHdoaXRlTGlzdElETlNjcmlwdChzY3JpcHROYW1lKTsKKyAgICB9KTsKKyAgICAKKyAgICBpbnQz
Ml90IGkgPSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7
CisgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgVUNoYXIzMiBjOworICAgICAgICBV
MTZfTkVYVChidWZmZXIsIGksIGxlbmd0aCwgYykKKyAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9
IFVfWkVST19FUlJPUjsKKyAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRT
Y3JpcHQoYywgJmVycm9yKTsKKyAgICAgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29r
IGF0IHNjcmlwdHM6ICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAg
ICB9CisgICAgICAgIGlmIChzY3JpcHQgPCAwKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoImdv
dCBuZWdhdGl2ZSBudW1iZXIgZm9yIHNjcmlwdCBjb2RlIGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7
CisgICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNjcmlwdCA+
PSBVU0NSSVBUX0NPREVfTElNSVQpCisgICAgICAgICAgICByZXR1cm4gTk87CisKKyAgICAgICAg
c2l6ZV90IGluZGV4ID0gc2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8
IChzY3JpcHQgJSAzMik7CisgICAgICAgIGlmICghKElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0g
JiBtYXNrKSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgCisgICAgICAgIGlmIChp
c0xvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykpCisgICAgICAgICAgICBy
ZXR1cm4gTk87CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKKyAgICB9CisgICAgcmV0
dXJuIFlFUzsKK30KKworc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2Vk
QnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RG
OjpGdW5jdGlvbjxib29sKFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKK3sKKyAgICBBU1NF
UlQobGVuZ3RoID4gMCk7CisKKyAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0g
MDsgLS1pKSB7CisgICAgICAgIFVDaGFyIGNoID0gYnVmZmVyW2ldOworICAgICAgICAKKyAgICAg
ICAgaWYgKGNoYXJhY3RlcklzQWxsb3dlZChjaCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgCisgICAgICAgIC8vIE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExv
d2VyIGxldmVsIHJlZ2lzdHJhcnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgorICAgICAgICBp
ZiAoY2ggPT0gJy4nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisjZGVmaW5lIENIRUNLX1JV
TEVTX0lGX1NVRkZJWF9NQVRDSEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKKyAgICB7IFwKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBz
aXplb2Yoc3VmZml4WzBdKTsgXAorICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYm
IDAgPT0gbWVtY21wKGJ1ZmZlciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXpl
b2Yoc3VmZml4KSkpIFwKKyAgICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFt
ZUFsbG93ZWRCeVRMRFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlv
bik7IFwKKyAgICB9CisKK3N0YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIo
VUNoYXIgY2gpCit7CisgICAgLy8gT25seSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMg
YW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8
PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICct
JzsKK30KKworc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0
IFVDaGFyKiBidWZmZXIsIGludDMyX3QgbGVuZ3RoKQoreworICAgIC8vIFNraXAgdHJhaWxpbmcg
ZG90IGZvciByb290IGRvbWFpbi4KKyAgICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFdID09ICcuJykK
KyAgICAgICAgbGVuZ3RoLS07CisKKyAgICAvLyBodHRwOi8vY2N0bGQucnUvZmlsZXMvcGRmL2Rv
Y3MvcnVsZXNfcnUtcmYucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9
IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBFUgorICAgICAgICAweDA0NDQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgorICAgIH07
CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFu
RG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vcnVzbmFtZXMucnUvcnVsZXMu
cGwKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNSVVNbXSA9IHsKKyAgICAgICAgJy4n
LAorICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICAgICAw
eDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCisgICAgICAgIDB4MDQ0MSAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhf
TUFUQ0hFUyhjeXJpbGxpY1JVUywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAg
ICAvLyBodHRwOi8vcnUuZmFpdGlkLm9yZy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2
YS9pZG4KKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9IHsKKyAgICAg
ICAgJy4nLAorICAgICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQorICAg
ICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCisgICAgICAgIDB4MDQ0MSwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEtBCisgICAgICAgIDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IFZFCisgICAgICAgIDB4MDQzMCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICB9Owor
ICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZBLCBpc1J1c3Np
YW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9m
b3J1c2VyL2RvY3MvcmVncnVsZXMucGhwCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGlj
REVUSVtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01B
TEwgTEVUVEVSIERFCisgICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElF
CisgICAgICAgIDB4MDQ0MiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCisgICAgICAgIDB4
MDQzOCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKKyAgICB9OworICAgIENIRUNLX1JVTEVT
X0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljREVUSSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJh
Y3Rlcik7CisKKyAgICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBydWxlcyBub3QgcHVibGlzaGVk
LiBUaGUgd29yZCBpcyBSdXNzaWFuLCBzbyBvbmx5IGFsbG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0
aW1lLAorICAgIC8vIGFsdGhvdWdoIHdlIG1heSBuZWVkIHRvIHJldmlzZSB0aGUgY2hlY2tzIGlm
IHRoaXMgZW5kcyB1cCBiZWluZyB1c2VkIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBS
dXNzaWEuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT05MQVlOW10gPSB7CisgICAg
ICAgICcuJywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAg
ICAgICAweDA0M0QsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICAgICAweDA0M0Is
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAorICAgICAgICAweDA0MzAsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IFNIT1JUIEkKKyAgICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAg
ICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT05MQVlOLCBp
c1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9y
ZyAtIHNhbWUgYXMgYWJvdmUuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU0FZVFtd
ID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEVTCisgICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICAg
ICAgMHgwNDM5LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQorICAgICAgICAweDA0
NDIgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNf
SUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNTQVlULCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFj
dGVyKTsKKworICAgIC8vIGh0dHA6Ly9waXIub3JnL3Byb2R1Y3RzL29wci1kb21haW4vIC0gcnVs
ZXMgbm90IHB1Ymxpc2hlZC4gQWNjb3JkaW5nIHRvIHRoZSByZWdpc3RyeSBzaXRlLAorICAgIC8v
IHRoZSBpbnRlbmRlZCBhdWRpZW5jZSBpcyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xhdmljLXNwZWFr
aW5nIG1hcmtldHMiLgorICAgIC8vIENocm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lh
biwgc28gc3RpY2tpbmcgd2l0aCB0aGF0IGZvciBub3cuCisgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGN5cmlsbGljT1JHW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgTworICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBFUgorICAgICAgICAweDA0MzMgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKKyAg
ICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1
c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxl
cy5odG1sCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7CisgICAgICAg
ICcuJywKKyAgICAgICAgMHgwNDMxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKyAgICAg
ICAgMHgwNDM1LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKyAgICAgICAgMHgwNDNCICAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NV
RkZJWF9NQVRDSEVTKGN5cmlsbGljQkVMLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBSdXNz
aWFuIGFuZCBCeWVsb3J1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93
ZWQuCisgICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2gg
PT0gMHgwNDUxIHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5
IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0
cDovL3d3dy5uaWMua3ovZG9jcy9wb3J5YWRva192bmVkcmVuaXlhX2thel9ydS5wZGYKKyAgICBz
dGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNLQVpbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAg
ICAweDA0OUIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAg
ICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzNyAg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9T
VUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0tBWiwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gS2F6
YWtoIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1
cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9
PSAweDA0RDkgfHwgY2ggPT0gMHgwNDkzIHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMg
fHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0g
MHgwNEJCIHx8IGNoID09IDB4MDQ1NiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsK
KyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1
bGVzJTIwb2YlMjBVS1JfdjQuMC5wZGYKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNV
S1JbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBVCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCisg
ICAgICAgIDB4MDQ0MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgfTsKKyAgICBD
SEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1VLUiwgW10oVUNoYXIgY2gpIHsK
KyAgICAgICAgLy8gUnVzc2lhbiBhbmQgVWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFz
aGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAw
eDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8
IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9
PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBodHRwOi8vd3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1F
TlRJL2lkbi1zcmItcG9saWN5LXRlcm1zb2Z1c2UtdjEuNC1lbmcucGRmCisgICAgc3RhdGljIGNv
bnN0IFVDaGFyIGN5cmlsbGljU1JCW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQx
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDMxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgQkUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGlj
U1JCLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBTZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBh
bmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBj
aCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAw
eDA0NTIgfHwgY2ggPT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwg
Y2ggPT0gMHgwNDVCIHx8IGNoID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09
ICctJzsKKyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly9tYXJuZXQubWsvZG9jL3ByYXZpbG5pay1t
ay1ta2QucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTUtEW10gPSB7CisgICAg
ICAgICcuJywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAg
ICAgICAgMHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyAgICAgICAgMHgwNDM0
ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTUtELCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBN
YWNlZG9uaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAg
ICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0Eg
JiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1IHx8IGNoID09
IDB4MDQ1OCB8fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8
fCBjaCA9PSAweDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7
CisKKyAgICAvLyBodHRwczovL3d3dy5tb24ubW4vY3MvCisgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGN5cmlsbGljTU9OW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgTworICAgICAgICAweDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAg
IH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT04sIFtdKFVD
aGFyIGNoKSB7CisgICAgICAgIC8vIE1vbmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hl
cyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgw
NDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRBRiB8fCBp
c0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9KTsKKworICAgIC8vIE5vdCBhIGtu
b3duIHRvcCBsZXZlbCBkb21haW4gd2l0aCBzcGVjaWFsIHJ1bGVzLgorICAgIHJldHVybiBOTzsK
K30KKworLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2Fy
eS4KKy8vIElmIG1ha2VTdHJpbmcgaXMgTk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBu
aWwgb3Igc2VsZiB0byBpbmRpY2F0ZSBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KKy8vIElmIG1ha2VT
dHJpbmcgaXMgWUVTLCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBw
ZWQgc3RyaW5nLgorc3RhdGljIE5TU3RyaW5nICptYXBIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmlu
ZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MIGVuY29kZSwgQk9PTCBtYWtlU3RyaW5nLCBC
T09MICplcnJvcikKK3sKKyAgICBpZiAocmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1FX0JVRkZFUl9M
RU5HVEgpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKCFbc3RyaW5nIGxlbmd0
aF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgVUNoYXIgc291cmNlQnVmZmVyW0hP
U1RfTkFNRV9CVUZGRVJfTEVOR1RIXTsKKyAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NU
X05BTUVfQlVGRkVSX0xFTkdUSF07CisgICAgCisgICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJh
bmdlT2ZTdHJpbmc6QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9j
YXRpb24gIT0gTlNOb3RGb3VuZCkgeworICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0
cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VdOworICAgICAgICBzdWJzdHJpbmcgPSBDRkJy
aWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMo
bnVsbHB0ciwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7CisgICAgICAgIGlm
IChzdWJzdHJpbmcpIHsKKyAgICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKKyAgICAgICAg
ICAgIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBpbnQgbGVuZ3RoID0gcmFuZ2UubGVuZ3RoOworICAgIFtzdHJpbmcg
Z2V0Q2hhcmFjdGVyczpzb3VyY2VCdWZmZXIgcmFuZ2U6cmFuZ2VdOworICAgIAorICAgIFVFcnJv
ckNvZGUgdWVycm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0
YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJz
Q29udmVydGVkID0gKGVuY29kZSA/IHVpZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5p
Y29kZSkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksIHNv
dXJjZUJ1ZmZlciwgbGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9M
RU5HVEgsICZwcm9jZXNzaW5nRGV0YWlscywgJnVlcnJvcik7CisgICAgaWYgKGxlbmd0aCAmJiAo
VV9GQUlMVVJFKHVlcnJvcikgfHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkgeworICAgICAg
ICAqZXJyb3IgPSBZRVM7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIAorICAgIGlm
IChudW1DaGFyYWN0ZXJzQ29udmVydGVkID09IGxlbmd0aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZl
ciwgZGVzdGluYXRpb25CdWZmZXIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIAorICAgIGlmICghZW5jb2RlICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5T
Y3JpcHRXaGl0ZUxpc3QoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQp
ICYmICFhbGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoZGVzdGluYXRpb25CdWZmZXIsIG51
bUNoYXJhY3RlcnNDb252ZXJ0ZWQpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJl
dHVybiBtYWtlU3RyaW5nID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0
aW9uQnVmZmVyIGxlbmd0aDpudW1DaGFyYWN0ZXJzQ29udmVydGVkXSA6IHN0cmluZzsKK30KKwor
c3RhdGljIEJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJp
bmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQoreworICAgIHJldHVybiBtYXBIb3N0TmFt
ZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBOTywgTk8sIGVycm9yKSAhPSBuaWw7Cit9CisgCitz
dGF0aWMgQk9PTCBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmlu
ZywgTlNSYW5nZSByYW5nZSwgQk9PTCAqZXJyb3IpCit7CisgICAgcmV0dXJuIG1hcEhvc3ROYW1l
V2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIFlFUywgIE5PLCBlcnJvcikgIT0gbmlsOworfQorCitz
dGF0aWMgTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcs
IE5TUmFuZ2UgcmFuZ2UpCit7CisgICAgQk9PTCBlcnJvciA9IE5POworICAgIE5TU3RyaW5nICpo
b3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgTk8sIFlFUywgJmVycm9y
KTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICFob3N0
ID8gc3RyaW5nIDogaG9zdDsKK30KKworc3RhdGljIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdp
dGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQoreworICAgIEJPT0wgZXJy
b3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmlu
ZywgcmFuZ2UsIFlFUywgWUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQorCitOU1N0cmlu
ZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIGVycm9yID0g
Tk87CisgICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIE5T
TWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSksIE5PLCBZRVMsICZlcnJvcik7CisgICAgaWYg
KGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6
IGhvc3Q7Cit9CisKK05TU3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQor
eworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1l
V2l0aFJhbmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgWUVTLCBZ
RVMsICZlcnJvcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJl
dHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5n
ZXNUaGF0TmVlZE1hcHBpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXksIEJPT0wgZW5jb2RlKQoreworICAgIC8vIEdlbmVy
YWxseSwgd2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25l
IGhvc3QgbmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGluZy4KKyAgICAvLyBUaGVyZWZvcmUs
IHdlIHVzZSBuaWwgdG8gaW5kaWNhdGUgbm8gbWFwcGluZyBoZXJlIGFuZCBhbiBlbXB0eSBhcnJh
eSB0byBpbmRpY2F0ZSBlcnJvci4KKworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBCT09MIG5l
ZWRzTWFwcGluZyA9IGVuY29kZSA/IGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShzdHJp
bmcsIHJhbmdlLCAmZXJyb3IpIDogaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKHN0cmlu
ZywgcmFuZ2UsICZlcnJvcik7CisgICAgaWYgKCFlcnJvciAmJiAhbmVlZHNNYXBwaW5nKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgYXJyYXkgPSBhZG9w
dE5TKFtOU011dGFibGVBcnJheSBuZXddKTsKKworICAgIGlmICghZXJyb3IpCisgICAgICAgIFth
cnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKK30KKworc3Rh
dGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcoTlNTdHJpbmcgKnN0cmluZywg
TlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCit7CisgICAg
cmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXks
IFlFUyk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZERlY29kaW5nKE5T
U3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4m
IGFycmF5KQoreworICAgIHJldHVybiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmlu
ZywgcmFuZ2UsIGFycmF5LCBOTyk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5j
dGlvblRvTWFpbFRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIFN0cmluZ1JhbmdlQXBwbGll
ckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQoreworICAgIC8v
IEluIGEgbWFpbHRvOiBVUkwsIGhvc3QgbmFtZXMgY29tZSBhZnRlciBhICdAJyBjaGFyYWN0ZXIg
YW5kIGVuZCB3aXRoIGEgJz4nIG9yICcsJyBvciAnPycgY2hhcmFjdGVyLgorICAgIC8vIFNraXAg
cXVvdGVkIHN0cmluZ3Mgc28gdGhhdCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29uZnVzZSB1
cy4KKyAgICAvLyBXaGVuIHdlIGZpbmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFzdCB0aGUg
cGFydCBvZiB0aGUgVVJMIHRoYXQgY29udGFpbnMgaG9zdCBuYW1lcy4KKyAgICAKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5hbWVPclN0
cmluZ1N0YXJ0Q2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hh
cmFjdGVyc0luU3RyaW5nOkAiXCJAPyJdOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBob3N0TmFtZUVuZENoYXJhY3RlcnMgPSBbTlNDaGFyYWN0
ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIj4sPyJdOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBxdW90ZWRTdHJp
bmdDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJz
SW5TdHJpbmc6QCJcIlxcIl07CisgICAgCisgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0
cmluZyBsZW5ndGhdOworICAgIE5TUmFuZ2UgcmVtYWluaW5nID0gTlNNYWtlUmFuZ2UoMCwgc3Ry
aW5nTGVuZ3RoKTsKKyAgICAKKyAgICB3aGlsZSAoMSkgeworICAgICAgICAvLyBGaW5kIHN0YXJ0
IG9mIGhvc3QgbmFtZSBvciBvZiBxdW90ZWQgc3RyaW5nLgorICAgICAgICBOU1JhbmdlIGhvc3RO
YW1lT3JTdHJpbmdTdGFydCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdE5h
bWVPclN0cmluZ1N0YXJ0Q2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVt
YWluaW5nXTsKKyAgICAgICAgaWYgKGhvc3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlvbiA9PSBO
U05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuaWNoYXIgYyA9IFtz
dHJpbmcgY2hhcmFjdGVyQXRJbmRleDpob3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRpb25dOwor
ICAgICAgICByZW1haW5pbmcubG9jYXRpb24gPSBOU01heFJhbmdlKGhvc3ROYW1lT3JTdHJpbmdT
dGFydCk7CisgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5p
bmcubG9jYXRpb247CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnPycpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnQCcpIHsKKyAgICAgICAgICAg
IC8vIEZpbmQgZW5kIG9mIGhvc3QgbmFtZS4KKyAgICAgICAgICAgIHVuc2lnbmVkIGhvc3ROYW1l
U3RhcnQgPSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAgICAgICBOU1JhbmdlIGhvc3ROYW1l
RW5kID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpob3N0TmFtZUVuZENoYXJhY3Rl
cnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107CisgICAgICAgICAgICBC
T09MIGRvbmU7CisgICAgICAgICAgICBpZiAoaG9zdE5hbWVFbmQubG9jYXRpb24gPT0gTlNOb3RG
b3VuZCkgeworICAgICAgICAgICAgICAgIGhvc3ROYW1lRW5kLmxvY2F0aW9uID0gc3RyaW5nTGVu
Z3RoOworICAgICAgICAgICAgICAgIGRvbmUgPSBZRVM7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IGhvc3ROYW1lRW5kLmxvY2F0aW9u
OworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1h
aW5pbmcubG9jYXRpb247CisgICAgICAgICAgICAgICAgZG9uZSA9IE5POworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBQcm9jZXNzIGhvc3QgbmFtZSByYW5nZS4K
KyAgICAgICAgICAgIGYoc3RyaW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFt
ZUVuZC5sb2NhdGlvbiAtIGhvc3ROYW1lU3RhcnQpLCBhcnJheSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChkb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KKyAgICAgICAgICAgIEFT
U0VSVChjID09ICciJyk7CisgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAg
IE5TUmFuZ2UgZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kID0gW3N0cmluZyByYW5nZU9mQ2hh
cmFjdGVyRnJvbVNldDpxdW90ZWRTdHJpbmdDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6
MCByYW5nZTpyZW1haW5pbmddOworICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hhcmFjdGVy
T3JTdHJpbmdFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICAgICAgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRleDpl
c2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb25dOworICAgICAgICAgICAgICAgIHJl
bWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5k
KTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVt
YWluaW5nLmxvY2F0aW9uOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIElm
IHdlIGFyZSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUgc3RyaW5n
IGxvb3AgYmFjayB0byB0aGUgaG9zdCBuYW1lIGxvb3AuCisgICAgICAgICAgICAgICAgaWYgKGMg
PT0gJyInKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAg
IEFTU0VSVChjID09ICdcXCcpOworICAgICAgICAgICAgICAgIGlmICghcmVtYWluaW5nLmxlbmd0
aCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgcmVtYWlu
aW5nLmxvY2F0aW9uICs9IDE7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCAtPSAx
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJpbmdSYW5n
ZUFwcGxpZXJGdW5jdGlvbiBmLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKK3sK
KyAgICAvLyBGaW5kIGhvc3RuYW1lcy4gVG9vIGJhZCB3ZSBjYW4ndCB1c2UgYW55IHJlYWwgVVJM
LXBhcnNpbmcgY29kZSB0byBkbyB0aGlzLAorICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGRvIGl0IGJl
Zm9yZSBkb2luZyBhbGwgdGhlICUtZXNjYXBpbmcsIGFuZCB0aGlzIGlzIHRoZSBvbmx5CisgICAg
Ly8gY29kZSB3ZSBoYXZlIHRoYXQgcGFyc2VzIG1haWx0byBVUkxzIGFueXdheS4KKyAgICAKKyAg
ICAvLyBNYXliZSB3ZSBzaG91bGQgaW1wbGVtZW50IHRoaXMgdXNpbmcgYSBjaGFyYWN0ZXIgYnVm
ZmVyIGluc3RlYWQ/CisgICAgCisgICAgaWYgKHByb3RvY29sSXMoc3RyaW5nLCAibWFpbHRvIikp
IHsKKyAgICAgICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoc3RyaW5n
LCBmLCBhcnJheSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gRmluZCB0
aGUgaG9zdCBuYW1lIGluIGEgaGllcmFyY2hpY2FsIFVSTC4KKyAgICAvLyBJdCBjb21lcyBhZnRl
ciBhICI6Ly8iIHNlcXVlbmNlLCB3aXRoIHNjaGVtZSBjaGFyYWN0ZXJzIHByZWNlZGluZy4KKyAg
ICAvLyBJZiBlbmRzIHdpdGggdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiLCAiLyIsIG9y
IGEgIj8iLgorICAgIC8vIElmIHRoZXJlIGlzIGEgIkAiIGNoYXJhY3RlciwgdGhlIGhvc3QgcGFy
dCBpcyBqdXN0IHRoZSBwYXJ0IGFmdGVyIHRoZSAiQCIuCisgICAgTlNSYW5nZSBzZXBhcmF0b3JS
YW5nZSA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjovLyJdOworICAgIGlmIChzZXBhcmF0b3JS
YW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
Ly8gQ2hlY2sgdGhhdCBhbGwgY2hhcmFjdGVycyBiZWZvcmUgdGhlIDovLyBhcmUgdmFsaWQgc2No
ZW1lIGNoYXJhY3RlcnMuCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0No
YXJhY3RlclNldD4+IG5vblNjaGVtZUNoYXJhY3RlcnMgPSBbW05TQ2hhcmFjdGVyU2V0IGNoYXJh
Y3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSstLiJdIGludmVydGVkU2V0XTsK
KyAgICBpZiAoW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpub25TY2hlbWVDaGFyYWN0
ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBzZXBhcmF0b3JS
YW5nZS5sb2NhdGlvbildLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07CisgICAg
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhv
c3RUZXJtaW5hdG9ycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVy
c0luU3RyaW5nOkAiOi8/IyJdOworICAgIAorICAgIC8vIFN0YXJ0IGFmdGVyIHRoZSBzZXBhcmF0
b3IuCisgICAgdW5zaWduZWQgYXV0aG9yaXR5U3RhcnQgPSBOU01heFJhbmdlKHNlcGFyYXRvclJh
bmdlKTsKKyAgICAKKyAgICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICBOU1Jh
bmdlIGhvc3ROYW1lVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6
aG9zdFRlcm1pbmF0b3JzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZShh
dXRob3JpdHlTdGFydCwgc3RyaW5nTGVuZ3RoIC0gYXV0aG9yaXR5U3RhcnQpXTsKKyAgICB1bnNp
Z25lZCBob3N0TmFtZUVuZCA9IGhvc3ROYW1lVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZv
dW5kID8gc3RyaW5nTGVuZ3RoIDogaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uOworICAgIAor
ICAgIC8vIEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KKyAgICBOU1Jh
bmdlIHVzZXJJbmZvVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIkAiIG9wdGlv
bnM6MCByYW5nZTpOU01ha2VSYW5nZShhdXRob3JpdHlTdGFydCwgaG9zdE5hbWVFbmQgLSBhdXRo
b3JpdHlTdGFydCldOworICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQgPSB1c2VySW5mb1Rlcm1p
bmF0b3IubG9jYXRpb24gPT0gTlNOb3RGb3VuZCA/IGF1dGhvcml0eVN0YXJ0IDogTlNNYXhSYW5n
ZSh1c2VySW5mb1Rlcm1pbmF0b3IpOworICAgIAorICAgIHJldHVybiBmKHN0cmluZywgTlNNYWtl
UmFuZ2UoaG9zdE5hbWVTdGFydCwgaG9zdE5hbWVFbmQgLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkp
OworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBtYXBIb3N0TmFtZXMoTlNTdHJpbmcg
KnN0cmluZywgQk9PTCBlbmNvZGUpCit7CisgICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9w
dGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9l
cyBub3QgbmVlZCBtYXBwaW5nLgorICAgIAorICAgIGlmIChlbmNvZGUgJiYgW3N0cmluZyBjYW5C
ZUNvbnZlcnRlZFRvRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXSkKKyAgICAgICAgcmV0
dXJuIHN0cmluZzsKKyAgICAKKyAgICAvLyBNYWtlIGEgbGlzdCBvZiByYW5nZXMgdGhhdCBhY3R1
YWxseSBuZWVkIG1hcHBpbmcuCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBob3N0TmFt
ZVJhbmdlczsKKyAgICBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmID0gZW5jb2RlID8gY29s
bGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcgOiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWREZWNvZGlu
ZzsKKyAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhzdHJpbmcsIGYsIGhvc3RO
YW1lUmFuZ2VzKTsKKyAgICBpZiAoIWhvc3ROYW1lUmFuZ2VzKQorICAgICAgICByZXR1cm4gc3Ry
aW5nOworCisgICAgaWYgKCFbaG9zdE5hbWVSYW5nZXMgY291bnRdKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIAorICAgIC8vIERvIHRoZSBtYXBwaW5nLgorICAgIGF1dG8gbXV0YWJsZUNvcHkg
PSBhZG9wdE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsKKyAgICB1bnNpZ25lZCBpID0gW2hvc3RO
YW1lUmFuZ2VzIGNvdW50XTsKKyAgICB3aGlsZSAoaS0tKSB7CisgICAgICAgIE5TUmFuZ2UgaG9z
dE5hbWVSYW5nZSA9IFtbaG9zdE5hbWVSYW5nZXMgb2JqZWN0QXRJbmRleDppXSByYW5nZVZhbHVl
XTsKKyAgICAgICAgTlNTdHJpbmcgKm1hcHBlZEhvc3ROYW1lID0gZW5jb2RlID8gZW5jb2RlSG9z
dE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKSA6IGRlY29kZUhvc3ROYW1lV2l0
aFJhbmdlKHN0cmluZywgaG9zdE5hbWVSYW5nZSk7CisgICAgICAgIFttdXRhYmxlQ29weSByZXBs
YWNlQ2hhcmFjdGVyc0luUmFuZ2U6aG9zdE5hbWVSYW5nZSB3aXRoU3RyaW5nOm1hcHBlZEhvc3RO
YW1lXTsKKyAgICB9CisgICAgcmV0dXJuIG11dGFibGVDb3B5OworfQorCitzdGF0aWMgUmV0YWlu
UHRyPE5TU3RyaW5nPiBzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShOU1N0cmluZyAqc3RyaW5n
KQoreworICAgIGF1dG8gdHJpbW1lZCA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwor
ICAgIENGU3RyaW5nVHJpbVdoaXRlc3BhY2UoKF9fYnJpZGdlIENGTXV0YWJsZVN0cmluZ1JlZil0
cmltbWVkLmdldCgpKTsKKyAgICByZXR1cm4gdHJpbW1lZDsKK30KKworTlNVUkwgKlVSTEJ5VHJ1
bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChOU1VSTCAqVVJMLCBDRlVSTENvbXBv
bmVudFR5cGUgY29tcG9uZW50KQoreworICAgIGlmICghVVJMKQorICAgICAgICByZXR1cm4gbmls
OworICAgIAorICAgIENGUmFuZ2UgZnJhZ1JnID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25l
bnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50LCBudWxscHRyKTsKKyAgICBpZiAo
ZnJhZ1JnLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICByZXR1cm4gVVJMOworCisg
ICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gdXJsQnl0ZXMoVVJMX0JZ
VEVTX0JVRkZFUl9MRU5HVEgpOworICAgIENGSW5kZXggbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgdXJsQnl0ZXMuc2l6ZSgp
KTsKKyAgICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdl
dEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICB1cmxC
eXRlcy5ncm93KG51bUJ5dGVzKTsKKyAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCB1cmxCeXRlcy5kYXRhKCksIG51bUJ5dGVzKTsKKyAgICB9CisKKyAgICBDRlVS
TFJlZiByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRh
KCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7
CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVz
KG51bGxwdHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5n
RW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAgICAKKyAgICByZXR1cm4gcmVzdWx0
ID8gQ0ZCcmlkZ2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKK30KKworc3RhdGljIE5TVVJMICpV
UkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKK3sKKyAgICByZXR1cm4g
VVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KFVSTCwga0NGVVJMQ29t
cG9uZW50UmVzb3VyY2VTcGVjaWZpZXIpOworfQorCitOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRh
ICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKK3sKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgCisgICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsKKyAgICBzaXplX3QgbGVuZ3Ro
ID0gW2RhdGEgbGVuZ3RoXTsKKyAgICBpZiAobGVuZ3RoID4gMCkgeworICAgICAgICAvLyB3b3Jr
IGFyb3VuZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVz
KC4uLCBUUlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21wb25lbnRzLgorICAgICAgICBi
YXNlVVJMID0gVVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKGJhc2VVUkwpOworICAgICAg
ICAKKyAgICAgICAgY29uc3QgVUludDggKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDgq
PihbZGF0YSBieXRlc10pOworICAgICAgICAKKyAgICAgICAgLy8gQ0ZVUkxDcmVhdGVBYnNvbHV0
ZVVSTFdpdGhCeXRlcyB3b3VsZCBjb21wbGFpbiB0byBjb25zb2xlIGlmIHdlIHBhc3NlZCBhIHBh
dGggdG8gaXQuCisgICAgICAgIGlmIChieXRlc1swXSA9PSAnLycgJiYgIWJhc2VVUkwpCisgICAg
ICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAKKyAgICAgICAgLy8gTk9URTogV2UgdXNlIFVU
Ri04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmlu
Z3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAgICAgLy8gKGUuZyBjYWxscyB0
byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9m
IGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAorICAgICAgICAvLyBjb3VsZCBlaXRoZXIg
YmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBs
aWtlIHNoaWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCisgICAgICAgIC8vIG9udG8gdXNpbmcgSVNP
IExhdGluIDEgaW4gdGhvc2UgY2FzZXMuCisgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxl
YXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0
aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVT
KSk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2lu
Z1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBieXRlcywg
bGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgKF9fYnJpZGdlIENGVVJMUmVmKWJh
c2VVUkwsIFlFUykpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0
aFN0cmluZzpAIiJdOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KK3N0YXRpYyBOU0RhdGEgKmRh
dGFXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNEYXRhICp1
c2VyVHlwZWREYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ107CisgICAgQVNTRVJUKHVzZXJUeXBlZERhdGEpOworICAgIAorICAgIGNvbnN0IFVJbnQ4
KiBpbkJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDggKj4oW3VzZXJUeXBlZERhdGEgYnl0
ZXNdKTsKKyAgICBpbnQgaW5MZW5ndGggPSBbdXNlclR5cGVkRGF0YSBsZW5ndGhdOworICAgIGlm
ICghaW5MZW5ndGgpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgY2hhciogb3V0Qnl0
ZXMgPSBzdGF0aWNfY2FzdDxjaGFyICo+KG1hbGxvYyhpbkxlbmd0aCAqIDMpKTsgLy8gbGFyZ2Ug
ZW5vdWdoIHRvICUtZXNjYXBlIGV2ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIqIHAgPSBvdXRCeXRl
czsKKyAgICBpbnQgb3V0TGVuZ3RoID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGluTGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgVUludDggYyA9IGluQnl0ZXNbaV07CisgICAgICAgIGlmIChj
IDw9IDB4MjAgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICAqcCsrID0gJyUnOworICAgICAg
ICAgICAgKnArKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAg
KnArKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgb3V0TGVu
Z3RoICs9IDM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAg
ICAgICAgIG91dExlbmd0aCsrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6b3V0Qnl0ZXMgbGVuZ3RoOm91dExlbmd0aF07IC8v
IGFkb3B0cyBvdXRCeXRlcworfQorCitOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0
cmluZyAqc3RyaW5nLCBOU1VSTCAqbnNVUkwpCit7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBhdXRvIG1hcHBlZFN0cmluZyA9IG1hcEhvc3ROYW1lcyhzdHJp
bmdCeVRyaW1taW5nV2hpdGVzcGFjZShzdHJpbmcpLmdldCgpLCBZRVMpOworICAgIGlmICghbWFw
cGVkU3RyaW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gTGV0J3MgY2hlY2sgd2hl
dGhlciB0aGUgVVJMIGlzIGJvZ3VzLgorICAgIFVSTCB1cmwgeyBVUkwgeyBuc1VSTCB9LCBtYXBw
ZWRTdHJpbmcuZ2V0KCkgfTsKKyAgICBpZiAoIXVybC5jcmVhdGVDRlVSTCgpKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODYwNTcKKyAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgdXJsLmNy
ZWF0ZUNGVVJMIGluc3RlYWQgb2YgdXNpbmcgZGlyZWN0bHkgQ0ZVUkwgcGFyc2luZyByb3V0aW5l
cy4KKyAgICBOU0RhdGEgKmRhdGEgPSBkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhtYXBwZWRTdHJp
bmcuZ2V0KCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiIl07CisKKyAgICByZXR1cm4gVVJMV2l0aERhdGEoZGF0YSwgbnNVUkwpOworfQor
CitOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKnN0cmlu
ZywgTlNVUkwgKlVSTCkKK3sKKyAgICBpZiAoIXN0cmluZykKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIE5TVVJMICpyZXN1bHQgPSBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZywgVVJM
KTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBOU0RhdGEgKnJlc3VsdERhdGEgPSBkYXRh
V2l0aFVzZXJUeXBlZFN0cmluZyhzdHJpbmcpOworICAgICAgICBpZiAoIXJlc3VsdERhdGEpCisg
ICAgICAgICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKKyAgICAgICAgcmVz
dWx0ID0gVVJMV2l0aERhdGEocmVzdWx0RGF0YSwgVVJMKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgQk9PTCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmco
TlNVUkwgKlVSTCkKK3sKKyAgICBDRlJhbmdlIHJhbmdlV2l0aFNlcGFyYXRvcnM7CisgICAgQ0ZV
UkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwga0NGVVJM
Q29tcG9uZW50UXVlcnksICZyYW5nZVdpdGhTZXBhcmF0b3JzKTsKKyAgICBpZiAocmFuZ2VXaXRo
U2VwYXJhdG9ycy5sb2NhdGlvbiAhPSBrQ0ZOb3RGb3VuZCAmJiByYW5nZVdpdGhTZXBhcmF0b3Jz
Lmxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgcmV0dXJuIE5POworfQor
CitOU0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICpVUkwsIENGVVJMQ29tcG9u
ZW50VHlwZSBjb21wb25lbnRUeXBlKQoreworICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JV
RkZFUl9MRU5HVEg+IGFsbEJ5dGVzQnVmZmVyKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAg
ICBDRkluZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGFsbEJ5dGVzQnVmZmVyLnNpemUoKSk7CisgICAg
aWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7CisgICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9jYXRl
ID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAg
ICAgICAgYWxsQnl0ZXNCdWZmZXIuZ3JvdyhieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBieXRl
c0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYWxsQnl0ZXNC
dWZmZXIuZGF0YSgpLCBieXRlc1RvQWxsb2NhdGUpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBD
RlVSTENvbXBvbmVudFR5cGUgY29tcGxldGVVUkwgPSAoQ0ZVUkxDb21wb25lbnRUeXBlKS0xOwor
ICAgIENGUmFuZ2UgcmFuZ2U7CisgICAgaWYgKGNvbXBvbmVudFR5cGUgIT0gY29tcGxldGVVUkwp
IHsKKyAgICAgICAgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlk
Z2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnRUeXBlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJh
bmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICB9IGVsc2UgeworICAgICAgICByYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgICAgIHJhbmdlLmxl
bmd0aCA9IGJ5dGVzRmlsbGVkOworICAgIH0KKyAgICAKKyAgICBOU0RhdGEgKmNvbXBvbmVudERh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YWxsQnl0ZXNCdWZmZXIuZGF0YSgpICsgcmFuZ2Uu
bG9jYXRpb24gbGVuZ3RoOnJhbmdlLmxlbmd0aF07IAorICAgIAorICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbY29tcG9u
ZW50RGF0YSBieXRlc10pOworICAgIE5TTXV0YWJsZURhdGEgKnJlc3VsdERhdGEgPSBbTlNNdXRh
YmxlRGF0YSBkYXRhXTsKKyAgICAvLyBOT1RFOiBhZGQgbGVhZGluZyAnPycgdG8gcXVlcnkgc3Ry
aW5ncyBub24temVybyBsZW5ndGggcXVlcnkgc3RyaW5ncy4KKyAgICAvLyBOT1RFOiByZXRhaW4g
cXVlc3Rpb24tbWFyayBvbmx5IHF1ZXJ5IHN0cmluZ3MuCisgICAgaWYgKGNvbXBvbmVudFR5cGUg
PT0ga0NGVVJMQ29tcG9uZW50UXVlcnkpIHsKKyAgICAgICAgaWYgKHJhbmdlLmxlbmd0aCA+IDAg
fHwgaGFzUXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKFVSTCkpCisgICAgICAgICAgICBbcmVz
dWx0RGF0YSBhcHBlbmRCeXRlczoiPyIgbGVuZ3RoOjFdOyAgICAKKyAgICB9CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCByYW5nZS5sZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFy
IGMgPSBieXRlc1tpXTsKKyAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKKyAg
ICAgICAgICAgIGNoYXIgZXNjYXBlZFszXTsKKyAgICAgICAgICAgIGVzY2FwZWRbMF0gPSAnJSc7
CisgICAgICAgICAgICBlc2NhcGVkWzFdID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7
CisgICAgICAgICAgICBlc2NhcGVkWzJdID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7
CisgICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczplc2NhcGVkIGxlbmd0aDozXTsg
ICAgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGFyIGJbMV07CisgICAgICAgICAg
ICBiWzBdID0gYzsKKyAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmIgbGVuZ3Ro
OjFdOyAgICAKKyAgICAgICAgfSAgICAgICAgICAgICAgIAorICAgIH0KKyAgICAKKyAgICByZXR1
cm4gcmVzdWx0RGF0YTsKK30KKworc3RhdGljIE5TVVJMICpVUkxCeVJlbW92aW5nQ29tcG9uZW50
QW5kU3Vic2VxdWVudENoYXJhY3RlcihOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29t
cG9uZW50KQoreworICAgIENGUmFuZ2UgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBv
bmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIDApOworICAgIGlmIChyYW5n
ZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICAKKyAg
ICAvLyBSZW1vdmUgb25lIHN1YnNlcXVlbnQgY2hhcmFjdGVyLgorICAgIHJhbmdlLmxlbmd0aCsr
OworCisgICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYnVmZmVyKFVS
TF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZVUkxHZXRC
eXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKKyAgICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdl
dEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICBidWZm
ZXIuZ3JvdyhudW1CeXRlcyk7CisgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJM
UmVmKVVSTCwgYnVmZmVyLmRhdGEoKSwgbnVtQnl0ZXMpOworICAgIH0KKyAgICBVSW50OCogdXJs
Qnl0ZXMgPSBidWZmZXIuZGF0YSgpOworICAgICAgICAKKyAgICBpZiAobnVtQnl0ZXMgPCByYW5n
ZS5sb2NhdGlvbikKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICBpZiAobnVtQnl0ZXMgPCByYW5n
ZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCkKKyAgICAgICAgcmFuZ2UubGVuZ3RoID0gbnVtQnl0
ZXMgLSByYW5nZS5sb2NhdGlvbjsKKyAgICAgICAgCisgICAgbWVtbW92ZSh1cmxCeXRlcyArIHJh
bmdlLmxvY2F0aW9uLCB1cmxCeXRlcyArIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoLCBu
dW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKTsKKyAgICAKKyAgICBDRlVS
TFJlZiByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVt
Qnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51
bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2Rp
bmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIAorICAgIHJldHVybiByZXN1
bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworfQorCitOU1VSTCAqVVJMQnlS
ZW1vdmluZ1VzZXJJbmZvKE5TVVJMICpVUkwpCit7CisgICAgcmV0dXJuIFVSTEJ5UmVtb3ZpbmdD
b21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKFVSTCwga0NGVVJMQ29tcG9uZW50VXNlcklu
Zm8pOworfQorCitOU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqVVJMKQoreworICAgIFVJ
bnQ4ICpidWZmZXIgPSAoVUludDggKiltYWxsb2MoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwor
ICAgIENGSW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJl
ZilVUkwsIGJ1ZmZlciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOworICAgIGlmIChieXRlc0Zp
bGxlZCA9PSAtMSkgeworICAgICAgICBDRkluZGV4IGJ5dGVzVG9BbGxvY2F0ZSA9IENGVVJMR2V0
Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7CisgICAgICAgIGJ1ZmZl
ciA9IChVSW50OCAqKXJlYWxsb2MoYnVmZmVyLCBieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBi
eXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVy
LCBieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBBU1NFUlQoYnl0ZXNGaWxsZWQgPT0gYnl0ZXNU
b0FsbG9jYXRlKTsKKyAgICB9CisgICAgCisgICAgLy8gYnVmZmVyIGlzIGFkb3B0ZWQgYnkgdGhl
IE5TRGF0YQorICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpi
dWZmZXIgbGVuZ3RoOmJ5dGVzRmlsbGVkIGZyZWVXaGVuRG9uZTpZRVNdOworICAgIAorICAgIE5T
VVJMICpiYXNlVVJMID0gKF9fYnJpZGdlIE5TVVJMICopQ0ZVUkxHZXRCYXNlVVJMKChfX2JyaWRn
ZSBDRlVSTFJlZilVUkwpOworICAgIGlmIChiYXNlVVJMKQorICAgICAgICByZXR1cm4gb3JpZ2lu
YWxVUkxEYXRhKFVSTFdpdGhEYXRhKGRhdGEsIGJhc2VVUkwpKTsKKyAgICByZXR1cm4gZGF0YTsK
K30KKworc3RhdGljIENGU3RyaW5nUmVmIGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hh
cmFjdGVycyhDRlN0cmluZ1JlZiBzdHJpbmcpCit7CisgICAgQ0ZJbmRleCBsZW5ndGggPSBDRlN0
cmluZ0dldExlbmd0aChzdHJpbmcpOworICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZF
Ul9MRU5HVEg+IHNvdXJjZUJ1ZmZlcihsZW5ndGgpOworICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVy
cyhzdHJpbmcsIENGUmFuZ2VNYWtlKDAsIGxlbmd0aCksIHNvdXJjZUJ1ZmZlci5kYXRhKCkpOwor
ICAgIAorICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IG91dEJ1ZmZl
cjsKKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50Owor
ICAgIENGSW5kZXggaSA9IDA7CisgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgVUNo
YXIzMiBjOworICAgICAgICBVMTZfTkVYVChzb3VyY2VCdWZmZXIsIGksIGxlbmd0aCwgYykKKyAg
ICAgICAgCisgICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2lu
dCwgYykpIHsKKyAgICAgICAgICAgIHVpbnQ4X3QgdXRmOEJ1ZmZlcls0XTsKKyAgICAgICAgICAg
IENGSW5kZXggb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIFVCb29sIGZhaWx1cmUgPSBmYWxzZTsK
KyAgICAgICAgICAgIFU4X0FQUEVORCh1dGY4QnVmZmVyLCBvZmZzZXQsIDQsIGMsIGZhaWx1cmUp
CisgICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBmb3IgKENGSW5kZXggaiA9IDA7IGogPCBvZmZzZXQ7ICsraikgeworICAgICAgICAgICAgICAg
IG91dEJ1ZmZlci5hcHBlbmQoJyUnKTsKKyAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5k
KHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZmZXJbal0pKTsKKyAgICAgICAgICAg
ICAgICBvdXRCdWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZm
ZXJbal0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFVD
aGFyIHV0ZjE2QnVmZmVyWzJdOworICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOworICAg
ICAgICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOworICAgICAgICAgICAgVTE2X0FQUEVORCh1
dGYxNkJ1ZmZlciwgb2Zmc2V0LCAyLCBjLCBmYWlsdXJlKQorICAgICAgICAgICAgQVNTRVJUKCFm
YWlsdXJlKTsKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8IG9mZnNldDsgKytq
KQorICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXRmMTZCdWZmZXJbal0pOworICAg
ICAgICB9CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgb3V0QnVmZmVyLmRh
dGEoKSwgb3V0QnVmZmVyLnNpemUoKSk7Cit9CisKK05TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmlu
ZyhOU1VSTCAqVVJMKQoreworICAgIE5TRGF0YSAqZGF0YSA9IG9yaWdpbmFsVVJMRGF0YShVUkwp
OworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJlZm9yZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihbZGF0YSBieXRlc10pOworICAgIGludCBsZW5ndGggPSBbZGF0YSBsZW5n
dGhdOworICAgIAorICAgIGJvb2wgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSBmYWxzZTsKKyAg
ICAKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gYmVmb3JlOworICAgIGludCBidWZmZXJM
ZW5ndGggPSAobGVuZ3RoICogMykgKyAxOworICAgIFZlY3RvcjxjaGFyLCBVUkxfQllURVNfQlVG
RkVSX0xFTkdUSD4gYWZ0ZXIoYnVmZmVyTGVuZ3RoKTsgLy8gbGFyZ2UgZW5vdWdoIHRvICUtZXNj
YXBlIGV2ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIgKnEgPSBhZnRlci5kYXRhKCk7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMg
PSBwW2ldOworICAgICAgICAvLyB1bmVzY2FwZSBlc2NhcGUgc2VxdWVuY2VzIHRoYXQgaW5kaWNh
dGUgYnl0ZXMgZ3JlYXRlciB0aGFuIDB4N2YKKyAgICAgICAgaWYgKGMgPT0gJyUnICYmIChpICsg
MSA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAmJiBpICsgMiA8IGxlbmd0
aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7CisgICAgICAgICAgICBhdXRvIHUgPSB0
b0FTQ0lJSGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKKyAgICAgICAgICAgIGlmICh1ID4g
MHg3ZikgeworICAgICAgICAgICAgICAgIC8vIHVuZXNjYXBlCisgICAgICAgICAgICAgICAgKnEr
KyA9IHU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGRvIG5vdCB1
bmVzY2FwZQorICAgICAgICAgICAgICAgICpxKysgPSBwW2ldOworICAgICAgICAgICAgICAgICpx
KysgPSBwW2kgKyAxXTsKKyAgICAgICAgICAgICAgICAqcSsrID0gcFtpICsgMl07CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAqcSsrID0gYzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0t
IiBpbiBhbiBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgorICAgICAgICAgICAg
aWYgKGMgPT0gJy0nICYmIGkgPj0gMyAmJiAhbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgJiYgKHFb
LTRdIHwgMHgyMCkgPT0gJ3gnICYmIChxWy0zXSB8IDB4MjApID09ICduJyAmJiBxWy0yXSA9PSAn
LScpCisgICAgICAgICAgICAgICAgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSB0cnVlOworICAg
ICAgICB9CisgICAgfQorICAgICpxID0gJ1wwJzsKKyAgICAKKyAgICAvLyBDaGVjayBzdHJpbmcg
dG8gc2VlIGlmIGl0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gZGlzcGxheSB1c2luZyBVVEYtOCAgCisg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiByZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhT
dHJpbmc6YWZ0ZXIuZGF0YSgpXTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAvLyBDb3Vs
ZCBub3QgY29udmVydCB0byBVVEYtOC4KKyAgICAgICAgLy8gQ29udmVydCBjaGFyYWN0ZXJzIGdy
ZWF0ZXIgdGhhbiAweDdmIHRvIGVzY2FwZSBzZXF1ZW5jZXMuCisgICAgICAgIC8vIFNoaWZ0IGN1
cnJlbnQgc3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgorICAgICAgICAvLyB0aGVuIHdl
IHdpbGwgY29weSBiYWNrIGJ5dGVzIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIAorICAgICAg
ICAvLyBhcyB3ZSBjb252ZXJ0LgorICAgICAgICBpbnQgYWZ0ZXJsZW5ndGggPSBxIC0gYWZ0ZXIu
ZGF0YSgpOworICAgICAgICBjaGFyICpwID0gYWZ0ZXIuZGF0YSgpICsgYnVmZmVyTGVuZ3RoIC0g
YWZ0ZXJsZW5ndGggLSAxOworICAgICAgICBtZW1tb3ZlKHAsIGFmdGVyLmRhdGEoKSwgYWZ0ZXJs
ZW5ndGggKyAxKTsgLy8gY29waWVzIHRyYWlsaW5nICdcMCcKKyAgICAgICAgY2hhciAqcSA9IGFm
dGVyLmRhdGEoKTsKKyAgICAgICAgd2hpbGUgKCpwKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIGMgPSAqcDsKKyAgICAgICAgICAgIGlmIChjID4gMHg3ZikgeworICAgICAgICAgICAgICAg
ICpxKysgPSAnJSc7CisgICAgICAgICAgICAgICAgKnErKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGMpOworICAgICAgICAgICAgICAgICpxKysgPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhE
aWdpdChjKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICpxKysgPSAqcDsK
KyAgICAgICAgICAgIHArKzsKKyAgICAgICAgfQorICAgICAgICAqcSA9ICdcMCc7CisgICAgICAg
IHJlc3VsdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOwor
ICAgIH0KKyAgICAKKyAgICBpZiAobWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcpIHsKKyAgICAgICAg
Ly8gRklYTUU6IElzIGl0IGdvb2QgdG8gaWdub3JlIHRoZSBmYWlsdXJlIG9mIG1hcEhvc3ROYW1l
cyBhbmQga2VlcCByZXN1bHQgaW50YWN0PworICAgICAgICBhdXRvIG1hcHBlZFJlc3VsdCA9IG1h
cEhvc3ROYW1lcyhyZXN1bHQuZ2V0KCksIE5PKTsKKyAgICAgICAgaWYgKG1hcHBlZFJlc3VsdCkK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1hcHBlZFJlc3VsdDsKKyAgICB9CisKKyAgICByZXN1bHQg
PSBbcmVzdWx0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOworICAgIHJl
dHVybiBDRkJyaWRnaW5nUmVsZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJh
Y3RlcnMoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSkpOworfQorCitCT09MIGlz
VXNlclZpc2libGVVUkwoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIHZhbGlkID0gWUVT
OworICAgIC8vIGdldCBidWZmZXIKKyAgICAKKyAgICBjaGFyIHN0YXRpY19idWZmZXJbMTAyNF07
CisgICAgY29uc3QgY2hhciAqcDsKKyAgICBCT09MIHN1Y2Nlc3MgPSBDRlN0cmluZ0dldENTdHJp
bmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZywgc3RhdGljX2J1ZmZlciwgMTAyMywga0NG
U3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICBwID0gc3VjY2VzcyA/IHN0YXRpY19idWZmZXIgOiBb
c3RyaW5nIFVURjhTdHJpbmddOworICAgIAorICAgIGludCBsZW5ndGggPSBzdHJsZW4ocCk7Cisg
ICAgCisgICAgLy8gY2hlY2sgZm9yIGNoYXJhY3RlcnMgPD0gMHgyMCBvciA+PTB4N2YsICUtZXNj
YXBlIHNlcXVlbmNlcyBvZiAlN2YsIGFuZCB4bi0tLCB0aGVzZQorICAgIC8vIGFyZSB0aGUgdGhp
bmdzIHRoYXQgd2lsbCBsZWFkIF93ZWJfdXNlclZpc2libGVTdHJpbmcgdG8gYWN0dWFsbHkgY2hh
bmdlIHRoaW5ncy4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07CisgICAgICAgIC8vIGVzY2FwZSBjb250cm9sIGNo
YXJhY3RlcnMsIHNwYWNlLCBhbmQgZGVsZXRlCisgICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA9
PSAweDdmKSB7CisgICAgICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlI
ZXhEaWdpdChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChw
W2kgKyAyXSkpIHsKKyAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAx
XSwgcFtpICsgMl0pOworICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7CisgICAgICAgICAgICAg
ICAgdmFsaWQgPSBOTzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGkgKz0gMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNr
IGZvciAieG4tLSIgaW4gYW4gZWZmaWNpZW50LCBub24tY2FzZS1zZW5zaXRpdmUsIHdheS4KKyAg
ICAgICAgICAgIGlmIChjID09ICctJyAmJiBpID49IDMgJiYgKHBbaSAtIDNdIHwgMHgyMCkgPT0g
J3gnICYmIChwW2kgLSAyXSB8IDB4MjApID09ICduJyAmJiBwW2kgLSAxXSA9PSAnLScpIHsKKyAg
ICAgICAgICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB2YWxpZDsKK30KKwor
TlNSYW5nZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNSYW5n
ZSBjb2xvbiA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjoiXTsKKyAgICBpZiAoY29sb24ubG9j
YXRpb24gIT0gTlNOb3RGb3VuZCAmJiBjb2xvbi5sb2NhdGlvbiA+IDApIHsKKyAgICAgICAgTlNS
YW5nZSBzY2hlbWUgPSB7MCwgY29sb24ubG9jYXRpb259OworICAgICAgICAvKgorICAgICAgICAg
VGhpcyBzdHVmZiBpcyB2ZXJ5IGV4cGVuc2l2ZS4gIDEwLTE1IG1zZWMgb24gYSAyeDEuMkdIei4g
IElmIG5vdCBjYWNoZWQgaXQgc3dhbXBzCisgICAgICAgICBldmVyeXRoaW5nIGVsc2Ugd2hlbiBh
ZGRpbmcgaXRlbXMgdG8gdGhlIGF1dG9jb21wbGV0ZSBEQi4gIE1ha2VzIG1lIHdvbmRlciBpZiB3
ZQorICAgICAgICAgZXZlbiBuZWVkIHRvIGVuZm9yY2UgdGhlIGNoYXJhY3RlciBzZXQgaGVyZS4K
KyAgICAgICAgICovCisgICAgICAgIE5TU3RyaW5nICphY2NlcHRhYmxlQ2hhcmFjdGVycyA9IEAi
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0
NTY3ODkrLi0iOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hh
cmFjdGVyU2V0Pj4gSW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldChbW05TQ2hhcmFjdGVyU2V0IGNo
YXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGlu
dmVydGVkU2V0XSk7CisgICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBbc3RyaW5nIHJhbmdlT2ZD
aGFyYWN0ZXJGcm9tU2V0OkludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQuZ2V0KCkuZ2V0KCkgb3B0
aW9uczowIHJhbmdlOnNjaGVtZV07CisgICAgICAgIGlmIChpbGxlZ2Fscy5sb2NhdGlvbiA9PSBO
U05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIHNjaGVtZTsKKyAgICB9CisgICAgcmV0dXJu
IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOworfQorCitCT09MIGxvb2tzTGlrZUFic29sdXRl
VVJMKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgLy8gVHJpbSB3aGl0ZXNwYWNlIGJlY2F1c2Ug
X3dlYl9VUkxXaXRoU3RyaW5nIGFsbG93cyB3aGl0ZXNwYWNlLgorICAgIHJldHVybiByYW5nZU9m
VVJMU2NoZW1lKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCkpLmxvY2F0
aW9uICE9IE5TTm90Rm91bmQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29j
b2EvVVJMQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ1MWZhZGJiNjhkNjQ3NmQwY2E0NjA2ODRhOTcy
YjhjNTM1MGRhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENv
Y29hLm1tCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDx3dGYvVVJM
Lmg+CisKKyNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCisjaW1wb3J0ICJOU1VSTEV4dHJhcy5oIgor
I2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMUGFyc2Vy
Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK0BpbnRlcmZhY2UgTlNTdHJpbmcg
KFdURk5TVVJMRXh0cmFzKQorLSAoQk9PTClfd2ViX2xvb2tzTGlrZUlQQWRkcmVzczsKK0BlbmQK
KworbmFtZXNwYWNlIFdURiB7CisKK1VSTDo6VVJMKE5TVVJMICp1cmwpCit7CisgICAgaWYgKCF1
cmwpIHsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KKyAgICBD
U3RyaW5nIHVybEJ5dGVzOworICAgIFdURjo6Z2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVm
KXVybCwgdXJsQnl0ZXMpOworICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsK
KyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKworVVJMOjpvcGVyYXRvciBOU1VSTCAq
KCkgY29uc3QKK3sKKyAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlkZ2VkIENGVVJMIGJl
Y2F1c2UgY3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdvdWxkIG5vdCBwcmVzZXJ2ZSB0aGUg
b3JpZ2luYWwgc3RyaW5nLgorICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxpdHkgd2hlbiByb3VuZC10
cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgorICAgIHJldHVybiBjcmVhdGVDRlVSTCgpLmJy
aWRnaW5nQXV0b3JlbGVhc2UoKTsKK30KKworUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0
ZUNGVVJMKCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwt
ZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYg
c3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KKyAgICAgICAgcmV0dXJuIChf
X2JyaWRnZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAi
Il0pLmdldCgpOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7CisKKyAg
ICAvLyBGYXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMgOC1iaXQgdG8gYXZvaWQgY29weWlu
ZyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KKyAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJp
dCgpKSkKKyAgICAgICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcu
bGVuZ3RoKCkpOworICAgIGVsc2UgeworICAgICAgICAvLyBTbG93ZXIgcGF0aC4KKyAgICAgICAg
V1RGOjpVUkxDaGFyQnVmZmVyIGJ1ZmZlcjsKKyAgICAgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7
CisgICAgICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CisgICAgfQorCisgICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSAmJiAhV1RGOjppc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjZlVSTDsKK30KKworYm9vbCBVUkw6
Omhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCit7CisgICAgcmV0dXJuIFtob3N0LmNy
ZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSBfd2ViX2xvb2tzTGlrZUlQQWRkcmVz
c107Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNv
dXAuaCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjRmYjM0Zjg2ZjI0YTQ2MjFlMGY5MDY3MDY3NzVmOTQ4MTg1OTk2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dURi93dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oCkBAIC0wLDAgKzEsMzggQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIFVTRShTT1VQKQorCisj
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cFVSSSwg
c291cF91cmlfZnJlZSkKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBDb29raWUsIHNvdXBf
Y29va2llX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwTWVzc2FnZUhlYWRlcnMs
IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3Vw
QnVmZmVyLCBzb3VwX2J1ZmZlcl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlm
IC8vIFVTRShTT1VQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9VUkxTb3VwLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkYmM3ZTE3
YjgzODkxOWM1MGNmZmZiZDZiNDVjZjhjYjNiODlhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoU09VUCkKKworI2lu
Y2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMUGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKworVVJMOjpVUkwoU291cFVSSSogc291cFVSSSkKK3sKKyAgICBpZiAoIXNvdXBV
UkkpIHsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJ
LCBGQUxTRSkpOworICAgIFVSTFBhcnNlciBwYXJzZXIoU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJp
bmcuZ2V0KCkpKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKworICAgIGlmICghaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTU2LiBsaWJzb3VwCisgICAgLy8gZG9l
cyBub3QgYWRkIHRoZSBwYXNzd29yZCB0byB0aGUgVVJMIHdoZW4gY2FsbGluZworICAgIC8vIHNv
dXBfdXJpX3RvX3N0cmluZywgYW5kIHRodXMgdGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkK
KyAgICAvLyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRo
ZSBtYWludGFpbmVyIGRvZXMKKyAgICAvLyBub3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5
IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRpb25zCisgICAgaWYgKHNvdXBVUkktPnBhc3N3b3Jk
KQorICAgICAgICBzZXRQYXNzKFN0cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsK
K30KKworR1VuaXF1ZVB0cjxTb3VwVVJJPiBVUkw6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAorewor
ICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBHVW5pcXVlUHRyPFNvdXBVUkk+KHNvdXBfdXJpX25ldyhzdHJpbmcoKS51dGY4KCkuZGF0YSgp
KSk7Cit9CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQorewor
ICAgIHJldHVybiAhaG9zdC5pc0VtcHR5KCkgJiYgZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGhv
c3QudXRmOCgpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCmlu
ZGV4IGQwYjkwMzhmODI2NDdiZTBhMTVmNWNlYTRmODAxOTYxZjY3MmYyOWIuLjdlYzM5ODJlMTEw
YjdhZjczMTQ5YWU5YWVjNTUxYjBkMDM2YjE0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaApAQCAtNDgsNyArNDgsNiBAQCBjbGFz
cyBQYXltZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0
b3I7CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czsKIHN0cnVjdCBBcHBsZVBheUxpbmVJdGVtOwogc3RydWN0IEFw
cGxlUGF5UGF5bWVudFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmgKaW5kZXgg
YjA3NTljZGExOGMwM2M3M2RiMGJkMWRjZjg0NTMxYjI0YjUyZDA5ZC4uM2FhMjJmNWI4MmQ2YzJj
MTgwZWNlODE0NTg1ZDg1MTA4OTRiMWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQu
aApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJF
dmVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggYmQ1NTM0YzJkZjkxMjU4N2RkMjc3ODky
Mjk4YmQ3ZDQxZTdhOWFmYy4uZTM3MzM1N2NjMDdmZWE1OWRlOTdlYzU1ZDVjODg5M2QwNjM4NjRk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dENvb3JkaW5hdG9yLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZDQ2NTJj
ZmVkNTBmZmMxZDJmNmI2MmI1ZTRiZGQwZjkyODYzZDQ1Ni4uYTU0NzE1NDk3M2MwMWY4YmVhNWQx
ZGNhMTIxNWQ5ZDQ0OWUwMDE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIFBh
eW1lbnRDb250YWN0OwogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKIGNsYXNzIFBheW1l
bnRNZXRob2Q7CiBjbGFzcyBQYXltZW50U2Vzc2lvbjsKLWNsYXNzIFVSTDsKIGVudW0gY2xhc3Mg
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CiBzdHJ1Y3QgUGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHQ7CiBzdHJ1Y3QgUGF5bWVudE1ldGhvZFVwZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmlu
ZGV4IGU5MTVjYTE2ZGI0MDI0MzhkOGJkODAwMTlkYWRlOWIzNjc3MDNkMTcuLmU3N2YyY2E5OGZh
ZmM1NTM0ZTRmNjBlOGNmOTA0MDYwZDI4YjEzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaApAQCAt
MzQsNyArMzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYXltZW50TWVyY2hh
bnRTZXNzaW9uOwotY2xhc3MgVVJMOwogc3RydWN0IFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0
Owogc3RydWN0IFBheW1lbnRNZXRob2RVcGRhdGU7CiBzdHJ1Y3QgU2hpcHBpbmdDb250YWN0VXBk
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lv
bi5oCmluZGV4IDBhMzUwN2UyNjBlNzQ2N2UwYWMwZDMxYzk0OTM3NTRhMzNmZjJhNjQuLjhmN2E0
YjY1MGYwYjkyZjgxNWY5YjVkNWNjZTE3OWE3ZDUyOTEwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmgKQEAgLTM3LDcgKzM3LDYgQEAg
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBQYXltZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBj
bGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogCiBjbGFzcyBQYXltZW50U2Vzc2lvbiA6
IHB1YmxpYyB2aXJ0dWFsIFBheW1lbnRTZXNzaW9uQmFzZSB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25N
YW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0Fw
cGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCA5OThiNzg0NjBjYzg3ZWQzOGU5MTg2ZjA4ZmQyOTk3
YzYzZjg5ZDcyLi5iMmYxYjQ5ZjNlYjNhM2VlODBhNGZiMzI5ZjY5ZThiZjhlNTFhOThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGlj
YXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCmluZGV4IGU2ODk2ZTc4NzhiMmMy
YjEwZjY2MTNjZGI5ODVkMGI2ZTI1OGQ5NGEuLjQ4OTc2ZDJhMzUyZTIwZGU0MTRhNmJmOThlNTY2
ZWU0NzA0NzVlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05h
dmlnYXRvckJlYWNvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2
aWdhdG9yQmVhY29uLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAzOGQ1YTY2MDhi
ZDVmNGQ0ODg4ODEyNmY5YjU4ZjIwMmQ5NzAyMTNlLi45YTY0ZWU4Y2IzZmM0MTRhNDYyNTUxZGJi
YjEzODEyYzRjMGNiZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2lu
Y2x1ZGUgIlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaAppbmRleCA2N2RlMmU1NDYyYmYzZGM2YWI4MGMyNGEzMThjNDA1NGZjZjkyY2E1Li40MDEx
YjM3MzhjOTc5YmI5NzhhZGZkY2ZjYmE4NTRjYWU4YzVkZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAi
RmV0Y2hCb2R5Q29uc3VtZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5j
bHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aAppbmRleCBlMzY0NGE4NzUxOTU5N2Y2NGU1M2YzY2NkYWM3NDQwMzk3NjAwMjNkLi42ZjNkZmUz
NmYwNTM4OTkxNDdjNGVhZGVmY2UwMmQ0MzJmOTk5M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgK
QEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlUmVnaXN0cnkuY3BwCmluZGV4IDJlODJjMzI2MTg2NWQ3YTk4ODhhNWMyYzZiODU3NTRi
NDJjYmE0NTkuLjk4YzY2M2I2ZmM2ZGJkYTI5MzZhN2RhMjY4OTZkZjAwMzIzM2JkYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZVJlZ2lzdHJ5LmNwcApAQCAtMzUsOSArMzUsOSBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAKICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5
LmgKaW5kZXggMmI4OTRlMGNhNDNiZTQxYjViMTBmNGQxOTg5MTM0MzQ4NzkyODMwNi4uMDMzNjc0
ZjI2ZDM0NTg1OWE0YWExY2RhMTIwZTZkODg0MTU0NmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKQEAg
LTM4LDcgKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFz
cyBNZWRpYVNvdXJjZTsKIAogY2xhc3MgTWVkaWFTb3VyY2VSZWdpc3RyeSBmaW5hbCA6IHB1Ymxp
YyBVUkxSZWdpc3RyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDdlMjIxNTAyNDA4ZmJjNDkxZTg3MDY2OTc2ODY3OWVi
ZTAwNDM0NjIuLjhhYzE0NTc5NTBhNzkxODlkM2FjZDJkMDcwNTY2YTIxODdiY2ZhZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3Bw
CkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVJlZ2lzdHJ5LmNwcAppbmRleCBkNjlkY2NmODZlMzhhYTNmNzNjY2E3MTlkZjFiOWViZmZi
MmMyMDA4Li42NDE1ZmZhYmE1YzlhODQ4MTM0ZTUyMjMzNGRkM2E2MDFlYzJiZjJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1SZWdpc3RyeS5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5o
CmluZGV4IGEyNjdmMTEwMGJlMTdjMmEwYjI5YTIyMWUzYjE2OWM5Nzc0YWEyMmQuLmY2ZDIzZDJk
NzkwZjBkNGYyNzUxMDViYjQwNmIxOWUzY2UwZTQ5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCkBAIC0z
Niw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW07CiBj
bGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIE1lZGlhU3RyZWFt
UmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9y
Q29udGVudFV0aWxzQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNv
bnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAppbmRleCBiNjJkOWFmYThl
YWU1YjRmNmZlMzRiNGM1OGNkYjRmZGNjZDY1YTA2Li40NzA2NzNhMDllOTVmMDMwZjVlZWFjNDIz
OTg2OTZmYTEwNDNlMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmln
YXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50
VXRpbHNDbGllbnQuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE5BVklHQVRPUl9D
T05URU5UX1VUSUxTKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmgKaW5kZXggZmYwZGM1NGRhZjFlNTAyMzhhZmEzNWYxMzI4OWU1YjgzZTJiMmI5Yy4uZmVkYTFh
MTNhZWQyMWM0NGJhZDMzODk2MjlhNzI1M2Y5MmIxYzllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMzgsNyArMzgs
NyBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvblBlcm1pc3Npb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmgKaW5kZXggYjA5M2Qz
YTVmZmM5NTY3MTJlYzkxMGQ0Y2ZhMTIyNzFlMjhhOWJhYS4uMjA3NzljZWRkMjZmNmI5NDcxMTM4
NDRmZDk2MWZiZjhiYjAwNjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaApAQCAt
MjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJF
dmVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKaW5kZXggZTNiZDdlNTMyY2YyM2YyNTc2NjY1NGUx
MGMzNDVkY2JjYzM0MDg3Mi4uM2QxODgxYzU1N2I3ZDM3NjhkNDMzYjA4NmUyZjdmNGE3OTlkZDkz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudFJlcXVlc3QuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRNZXRo
b2RDaGFuZ2VFdmVudC5oIgogI2luY2x1ZGUgIlBheW1lbnRPcHRpb25zLmgiCiAjaW5jbHVkZSAi
UGF5bWVudFJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKaW5k
ZXggNmI1NTQyZTA4OTAwN2Q5YTQ5NzA0ZjJmYjNjZjQzOThhMGZiNGUwYy4uZWZlYWYwMGM5ZTM1
OGVkNjgxNTViNThhMTFhZDQ3MjU1NjFlMDI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xh
c3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJUcmVlUG9zaXRpb247CiBjbGFzcyBTZXR0aW5n
czsKIGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFBsdWdpblJlcGxhY2Vt
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luUmVwbGFjZW1lbnQ+IHsKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDc2
MGE0ZTcxMTRmNzQ3NTgyMjNhZGQxZmIwZjg1NmQ2ZTg1ZDMwY2UuLjRlZjBiNGRkZTAxNzU0ZmQ3
YmQ2ODkyMmE0NTVkOTM2N2VjYjg2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNzEsNyArNzEsNiBAQCBjbGFzcyBPc2NpbGxhdG9y
Tm9kZTsKIGNsYXNzIFBhbm5lck5vZGU7CiBjbGFzcyBQZXJpb2RpY1dhdmU7CiBjbGFzcyBTY3Jp
cHRQcm9jZXNzb3JOb2RlOwotY2xhc3MgVVJMOwogY2xhc3MgV2F2ZVNoYXBlck5vZGU7CiAKIC8v
IEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5k
IGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCmluZGV4IGNhNDA2YWY0YzZmNTIyNTFmOWY2Y2NhOGM0NWQ0NDNhYmI4ZDk4NTcuLmE4
NWRmZDc3NDRjZDQ3OWFiMTIzZDMzMjcxMWVlOGYyM2QxMDFkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIEFycmF5QnVmZmVyOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwotY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xhc3MgV2ViU29ja2V0Q2hh
bm5lbENsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaAppbmRleCA5MDEyMWY3MGQzMDg4MGMyYTAyZjk2NTgwYWUwNTcyOGZiOGJkZGM4Li41MDQz
YzQ5NDIzNWQwNzA4NTUwNmFhYmRjZTNiYzRkMGI4NGJiYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5j
bHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA3NDI3YmI1NTcwNzVl
ZGE4OGZiZDY2MTIxZTdkOTBhM2YxOWNkZDM0Li4xYjE5ZWRhYjRjOWE2ZjM4MTJmNzEzMGI3NmE2
Yjk1MzdjNWM3NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNDQsNyArNDQsNyBAQAogI2luY2x1
ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKICNpbmNsdWRlIDx3dGYvQVND
SUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oCmluZGV4IGNmMmJkN2FjMGFmMWIyNzRkOTgzYmQ2YmZjZjI0ZTM4MWQxMjIz
ZTcuLmU5NmY4NjAyYTg3YTkzNTI2OTY5Njc2NWM4MGU3MzAyY2Y3MzdlYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggODEy
ZjhhMDJkMzBhMTY4M2NlOTQ2ODRmODcxMDIwZTZiYmI5OWQxOC4uMzg5NWU0NDk2NzUwN2M1ZWU5
OWNjMjJmNDNlNzIxZjI5MTM3NWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmgKQEAgLTM5LDcgKzM5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDk0MzM5ODQ3NTdlMWI0YzkxNDVlODBiN2QyMjcx
ZjllMjRhMjc0MGIuLjA2OGI1YzI2MjNjNDEwMGM5N2U2NzMyY2I1MjcxYzMxZDBlZGRjN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xODcsNyArMTg3LDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAog
ICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLm1tCiAKLSAgICBw
bGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0Yu
Y3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xOTUsNyArMTk0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3Bw
CiAgICAgcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogICAgIHBsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgcGxhdGZv
cm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KICAgICBwbGF0Zm9y
bS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKQEAgLTM5OSw3ICszOTcsNiBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24u
bW0KICAgICBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvVGhyZWFk
Q2hlY2subW0KLSAgICBwbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL1Vz
ZXJBY3Rpdml0eU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9WYWxpZGF0aW9uQnViYmxlTWFjLm1t
CiAgICAgcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGEyNGE5MTk1MzYwYTNjNWI0NjBkNjI4ZTJmODQ0
ZWQwMTkxOWZkNzIuLjY1ODZiMDI0NjFhNDcyMTdlZjA4ZDVlYzBiM2NkYzMxNjY2MTEzZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNTAsMTIgKzI1MCwxMCBAQCBpZiAoVVNFX0NG
KQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBsb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAogCi0gICAgICAgIHBsYXRmb3JtL2NmL0NGVVJMRXh0
cmFzLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgICAgIHBs
YXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCi0gICAg
ICAgIHBsYXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgICAgIHBsYXRmb3JtL2NmL3dpbi9DZXJ0
aWZpY2F0ZUNGV2luLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGZjMjg4YjAxMzkxZDc1MmIyNGRj
OWZhZTcxZWZmMGYwZWI4YmU1YWYuLjYyMTkxYzAyZTM1MzcyZDc2YjMxN2YyNzRmNWE4MzVlNjcz
MDY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNTM1LDggKzE1MzUsNiBAQCBwbGF0Zm9ybS9UaGVt
ZS5jcHAKIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9ybS9UaHJlYWRUaW1l
cnMuY3BwCiBwbGF0Zm9ybS9UaW1lci5jcHAKLXBsYXRmb3JtL1VSTC5jcHAKLXBsYXRmb3JtL1VS
TFBhcnNlci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAKIHBsYXRmb3JtL1dlYkNvcmVD
cm9zc1RocmVhZENvcGllci5jcHAKIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTgxMzZhOTM4YzRlODg5MDJhZDU0YWZmMWQxMTUyOGZm
YWM2MTNhOC4uZmI5ZDkyMDE0NjJhMmYxZWI0NmNjMGJhYTUxYjNhNTY4NjgwYjQwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xNzgsNyArMTc4LDYgQEAgcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3Bw
CiBwbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCiAKLXBsYXRmb3JtL2NmL0NGVVJM
RXh0cmFzLmNwcAogcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE4Niw3
ICsxODUsNiBAQCBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKIHBsYXRm
b3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcAogcGxhdGZvcm0vY2YvUnVuTG9v
cE9ic2VydmVyLmNwcAogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCi1wbGF0Zm9ybS9j
Zi9VUkxDRi5jcHAKIAogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
Q29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAK
QEAgLTQ1OCw3ICs0NTYsNiBAQCBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCiBwbGF0
Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0KIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQog
cGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tIEBuby11bmlmeQotcGxhdGZvcm0vbWFjL1VSTE1h
Yy5tbQogcGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQogcGxhdGZvcm0vbWFjL1VzZXJB
Z2VudE1hYy5tbQogcGxhdGZvcm0vbWFjL1ZhbGlkYXRpb25CdWJibGVNYWMubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMzQ0
NGVlZTY1NjM5ZjVlNjc5ZDk2ODczMGNiMzkzOTM4ZGRjMGEwLi45YTg4MzJiNWJlNDI4NmVlNjZk
ZjRhZTkxNDBhNzJlMzQ0ZDY3OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQxLDcgKzE4NDEsNiBAQAogCQk1QzQzMDRC
MDE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRDE5MUFDOTA4MDAwRTJC
QzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgKi87IH07CiAJCTVDNDMwNEIxMTkxQUM5MDgw
MDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hh
ZGVyVGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzQzMDRCNjE5MUFFRjQ2MDAwRTJCQzAgLyogSlNF
WFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzQzMDRCNDE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJl
TE9ELmggKi87IH07Ci0JCTVDNkU2NTQzMUQ1Q0VGQkYwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNkU2NTQwMUQ1
Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOEM2MDA5MjEyNzZCODcw
MDgyRjg4RiAvKiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEM2MDA3MjEyNzZCMEYwMDgyRjg4RiAv
KiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0ExREVDNjFGNzFGMUM3MDBFNzFCRDMgLyogSFRU
UEhlYWRlckZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5MTcsNyArMTkx
Niw2IEBACiAJCTY1NkQzNzQ4MEFEQkE1REUwMEE0NTU0RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2RDM3MzAw
QURCQTVERTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU3QUZBRkMyMDA0N0EyOTAwNTA5NDY0
IC8qIFNwZWN0cmVHYWRnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1N0FGQUY4MjAwNDc4OTkwMDUwOTQ2NCAvKiBTcGVjdHJlR2FkZ2V0LmggKi87
IH07CiAJCTY1ODQzNjg2MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg0MzY4NTBBRTAx
Qjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBV
UkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5
MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTlBN0QxMzBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3Rp
dHV0ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1OUE3RDEyMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1OUREQzgzMDlFMTk4QkEw
MDFCRjNDNiAvKiBKU0RvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTlEREM4MTA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1QTIxNDY4
MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODA1LDcgKzM4
MDMsNiBAQAogCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4QUI1MTNGMUFG
QjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUJDQkI4QUJBMTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRl
cnZhbFRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JCOEFCQjEzRjFBRkIw
MDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNzEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxh
Y2tUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJQkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAv
KiBVUkxIYXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkZCNTNCMERDRDI5Q0Yw
MDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNDMEU4NzYxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0
dXJlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNDMEU4NzQxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5oICovOyB9
OwogCQlCQ0M1QkUwMTBDMEU5MzExMDAxMUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1QkRGRjBDMEU5MzEx
MDAxMUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmggKi87IH07CkBAIC00NjY5LDcgKzQ2NjYsNiBA
QAogCQlFMUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTE0NzA3
MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oICovOyB9OwogCQlF
MUEzMTYyRDEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUEzMTYyQjEz
NEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBNjQzRjIwRUMwOTcy
NTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBX
b3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJRTFBOEU1NjcxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUE4RTU2
NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUFERUNCRjBFNzZBQ0YxMDA0QTFBNUUgLyog
TWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxQURFQ0JEMEU3NkFDRjEwMDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQURFQ0NFMEU3NkFEOEIw
MDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFBREVDQ0MwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFu
bmVsLmggKi87IH07CiAJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFERURE
ODBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oICovOyB9OwpAQCAtNjExNiw3ICs2
MTEyLDYgQEAKIAkJMUE5MjdGQ0YxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wYXBpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBOTI3RkQwMTQxNkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbnBydW50aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBOTI3RkQxMTQxNkExNUIwMDNBODNDOCAvKiBucHR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wdHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBQTg0RjAyMTQzQkE3QkQwMDUxRDE1MyAvKiBTY3JvbGxDb250cm9sbGVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsQ29udHJv
bGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBODRGMDMxNDNCQTdCRDAw
NTFEMTUzIC8qIFNjcm9sbENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2Nyb2xsQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUFBRERBMTE0REI0MDlGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTg3NDAsOCArODczNSw2IEBACiAJCTVDNjY4RTY0MUU3QzZDMzUw
MEQzMkIzQiAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzY4OEFBMDFEMzgwNTA5MDAwQjU0RkEgLyogVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzY4OEFBMjFEMzgxMjZGMDAwQjU0RkEgLyogU29ja2V0UHJvdmlkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0UHJvdmlkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzZFNjUzRjFENUNFREM5MDBGNzg2MkUgLyog
VVJMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTFBh
cnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNkU2NTQwMUQ1Q0VEQzkw
MEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VVJMUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OEQ3MUQwRjFG
MkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTb2NrZXRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzhDNjAwNzIxMjc2QjBGMDA4MkY4OEYgLyogU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNob3VsZFNraXBTYWZlQnJvd3NpbmdD
aGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzk3QTMzNjFGNUY3QTY1MDAx
MDUyMDcgLyogUmVjdEVkZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
Y3RFZGdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg5NSw4ICs4ODg4LDYg
QEAKIAkJNjU3QUZBRkEyMDA0Nzg5QTAwNTA5NDY0IC8qIFNwZWN0cmVHYWRnZXQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFNwZWN0cmVHYWRnZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTdBRkFGQjIwMDQ3ODlBMDA1MDk0NjQgLyogU3BlY3RyZUdhZGdldC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjdHJlR2FkZ2V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8q
IEZyYW1lTG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZy
YW1lTG9hZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzUw
OUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzYw
OUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OTM5MjM5MDlBRTQzNUMw
MDJDNTMxRiAvKiBVUkxNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVVJMTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTlBN0QxMjBC
NkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN1YnN0aXR1dGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1OUREQzgwMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTA3LDcgKzEyODk4LDYgQEAKIAkJQkNCQjhBQjUxM0YxQUZC
MDAwNzM0REYwIC8qIFBPREludGVydmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBPREludGVydmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkI4QUI2
MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUE9ESW50ZXJ2YWxUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDQkI4QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9EUmVkQmxhY2tUcmVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNo
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTEhhc2guaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCRkI1M0EwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXaW5kb3dQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkZCNTNCMERDRDI5Q0Yw
MDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDMEU4
NzMxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MUGljdHVyZUVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyNTIsOCArMTQyNDIsNiBAQAogCQlFMUE1Rjk5QTBF
N0VBQTI1MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdv
cmtlclNjcmlwdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V29ya2VyU2NyaXB0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MUE2NDNGQzBFQzA5N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBOEU1NjQxNzU1MkIyQTAwNzQ4
OEU3IC8qIENGVVJMRXh0cmFzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENGVVJMRXh0cmFzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBOEU1
NjUxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENGVVJMRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxQUIxRUE4MTRFOUUyN0QwMDQ0OUUxMyAvKiBGaWxlTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRmlsZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFC
MUVCNzE0RTlFMzU4MDA0NDlFMTMgLyogRmlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUJCMTRFOUUzN0EwMDQ0OUUxMyAvKiBGaWxlRXJy
b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEZpbGVFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNjIzNCw4ICsxNjIyMiw2IEBACiAJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTFBOEU1NjQx
NzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCAqLywKLQkJCQlFMUE4RTU2NTE3NTUy
QjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLywKIAkJCQk1MTYwMzA2QjBDQzQzNjIzMDBD
OEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQk1MTdBNjNCRjFCNzQzMTdFMDBFN0RD
REMgLyogS2V5ZWREZWNvZGVyQ0YuY3BwICovLAogCQkJCTUxN0E2M0MwMUI3NDMxN0UwMEU3RENE
QyAvKiBLZXllZERlY29kZXJDRi5oICovLApAQCAtMTYyNDcsNyArMTYyMzMsNiBAQAogCQkJCTJE
NzZCQjgzMTk0NTZGODEwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuY3BwICovLAogCQkJCTJE
NzZCQjgwMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCAqLywKIAkJCQk1MTJE
RDhFMjBEOTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICovLAotCQkJCTFBOTg5
NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNm
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0Njk5LDExICsyNDY4NCw2IEBACiAJ
CQkJMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oICovLAogCQkJCTkz
MzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi8sCiAJCQkJOTMwNUIyNEMwOThG
MUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8sCi0JCQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFG
IC8qIFVSTC5jcHAgKi8sCi0JCQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oICov
LAotCQkJCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi8sCi0JCQkJNUM2
RTY1M0YxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgKi8sCi0JCQkJNUM2RTY1NDAx
RDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5oICovLAogCQkJCTg2ODE2MEQxMTg3NjY5QzQw
MDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuY3BwICovLAogCQkJCTg2ODE2MEQyMTg3NjY5QzQwMDIx
RTc5RCAvKiBVc2VyQWN0aXZpdHkuaCAqLywKIAkJCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYg
LyogVXNlckFnZW50LmggKi8sCkBAIC0yNzQ3Niw3ICsyNzQ1Niw2IEBACiAJCQkJQ0QzMTg2MjMx
OTlGMUUyQTAwMzBBMEY3IC8qIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RkE5MDRDQTE3OEU2MUY1MDA0QzhB
MkQgLyogQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMUE4RTU2NzE3NTUy
QjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzZGRDE1
MTZDNzgyNjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTdCQzY5REQxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNUZGRjEyQjAyNjc2MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdl
ck5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzA5MTYsMTEgKzMwODk1LDggQEAKIAkJCQlFNEFG
Q0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RDA4NkZFOTgwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEMTc2MkUwMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI2NzcyNjA1MUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUJDQkQyMUFCMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNTVCM0RERTEyNTFGMTJEMDAzRUYyNjkgLyogVVJMSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1QzZFNjU0MzFENUNFRkJGMDBGNzg2MkUgLyogVVJMUGFy
c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0MyODlERjFBQTBGRTVEMDA5QTlDRTMgLyogVVJM
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzN0EyMUQ1N0IzRkUwMEFCODVFQSAv
KiBVUkxVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyNzYzQkYxNjY4OUJGQjAwMkZDQUNC
IC8qIFVzZXJBY3Rpb25FbGVtZW50U2V0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKaW5kZXgg
ZjNlMzQ2YmVhN2UxOGJlZDJiODk5MDY3NGI2ZTIyZmM0YTAyNWNjMi4uNjJjZDU0YTg0YWI0YTVm
MDJmYWM3YjcyNWY2MGQ3ZThhZDEyYzJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKQEAgLTQwLDcgKzQwLDYgQEAg
Y2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBKU0RPTUdsb2Jh
bE9iamVjdDsKIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKLWNsYXNzIFVSTDsKIAogY2xh
c3MgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2Fj
aGVkTW9kdWxlU2NyaXB0TG9hZGVyPiwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3Jp
cHRGZXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRj
aGVyLmgKaW5kZXggNTIyYjJmZmMwNDMyYzE4OTRhNDVjMDJiNjk1OWU5ZTYwYTg0MzU2ZS4uZDUz
OTFjNjk3ZDdjZjRmNmY1ZDQwNzljYTI3MmVmNzdlYTljYWJhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaApAQCAtMzMsNyArMzMsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERvY3Vt
ZW50OwotY2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRTY3JpcHRGZXRjaGVyIDogcHVibGljIEpT
Qzo6U2NyaXB0RmV0Y2hlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDg4NjlkYjFmOWEzMmRkYzNkMjA1YzhmZjg1
ZDIyOTQwMTlkMjliMzEuLmQ2Yzc5Y2QyMGFkNTcxMjhhZDdlNjc5NmI1ZTFmNjQxNjFkNDFjMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CkBAIC01ODksNyArNTg5LDcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2UKIAogYm9vbCBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91
bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZK
YXZhU2NyaXB0VVJMKQogewotICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAg
ICBpZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSB8fCAhbV9mcmFtZS5kb2N1bWVudCgpLT5j
b250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhtX2ZyYW1lLmRvY3Vt
ZW50KCktPnVybCgpLCBldmVudEhhbmRsZXJQb3NpdGlvbigpLm1fbGluZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZjdjMDgyNGUwNmNj
NzE0NjljMDcwZDY4OGU0MjY4MjRjOWMzYzRmMC4uNmU5ZGRjYTA4ZGUwZjY4MThhMDc2NzViYWE2
ZjRhZTRkZWVlYmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaApAQCAtNjAsNyArNjAsNiBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdDsK
IGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIGNsYXNzIFdpZGdldDsKIHN0cnVjdCBF
eGNlcHRpb25EZXRhaWxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5oCmluZGV4IDkxZmY5OWMxNTBjZmJjOGZiNmVhNzBmNWY1MDQyYzdhYTFl
NDM0NGIuLmE2MDY2ZjRjZTM5OTk5NmM2NTRkYjYwM2MwYTQ3MjRkZDA4NDAzNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCkBAIC0yNywx
MCArMjcsMTAgQEAKIAogI2luY2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIgogI2lu
Y2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5o
IgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1Zh
bHVlLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggNTZlZTY5MGRl
ODQxNTlhNTdjNDI4YTkwNzM5YjIwNTZmZmRkYmZkNi4uYjdkN2ViOTNjYmFjYjc0YTgxYzAwN2U1
ZWYwOTgxMjI1YmM5YTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFNvdXJjZUNvZGUuaApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNj
cmlwdFNvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NvdXJjZVBy
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQppbmRleCBkMTFiNDJlNmU3ZTc1NDcwNDI3NDMzODEzYzM1OThjNDAwMGU4OTRkLi41ZjNl
YTczZjk3NjQxMjAwNWZjMzkyN2IwNmUxMWI2YjUxODIzZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDUzMiw3ICs0
NTMyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAoTmVlZHNJbXBsZW1l
bnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDdXN0b21IZWFwU25hcHNob3R9KSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPiIpOwogICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7Ci0gICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJVUkwuaCIpOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHd0Zi9VUkwu
aD4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6aGVh
cFNuYXBzaG90KEpTQ2VsbCogY2VsbCwgSGVhcFNuYXBzaG90QnVpbGRlciYgYnVpbGRlcilcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNl
bGwpO1xuIik7CkBAIC00NTQ0LDcgKzQ1NDQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgIH0KIAogICAgIGlmICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbikgewotICAgICAgICAk
aW1wbEluY2x1ZGVzeyJVUkwuaCJ9ID0gMSBpZiAkaW5kZXhlZEdldHRlck9wZXJhdGlvbi0+dHlw
ZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siPHd0Zi9VUkwu
aD4ifSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0
cmluZyI7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9u
JC8gb3IgJGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxpc3QiKSB7CiAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
Ik5vZGUuaCJ9ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKaW5kZXggMTE3OTU4NzUzNTFiZjJl
MzYzYzkxNGVkZDc0MTM1MWI3NDJhMjlhYy4uNmQ5YmQxN2I2ZDE1NGUwYmYwYTZmZjhiMDFiMDAx
ZDMzNTZkZmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKaW5kZXggNmQ3ZmFhMmI3N2RhZDZh
NDczZDA5Y2E2ZmYyOWIzODk2YzVjNGEyYi4uMDc5YzY2NjI5NGFlZWNhODI3NGFlMmJjZTVlZmU0
ZWE3N2IxNmI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTTWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNo
b3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1h
cExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVh
ZE9ubHlNYXBMaWtlLmNwcAppbmRleCAwMDhkY2ViYTQyYzZkNGM2ZmIyYzlhOTEzZmZiNmQzM2Zk
MGYxYzgzLi45N2Q0ZjNhYjRmYTE2MDJhZTQ5MGFlODZjOTZlMGMzODQ3OGJmOTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1h
cExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1JlYWRPbmx5TWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpTRE9N
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDYyOTE2ZDM2YmI1NWE2OTMyMjYyZmZhNTVkYzI0
Y2U2ZWUzYmU4NjMuLjRkOWYxNDJjNTQ0MzI4MWU1OGZmY2IwNTU2NGU1Y2RjYmZjNGQ1NGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RB
Y3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmluZGV4IDY0MDZiZTk5OTAzZDE0YzFi
MTcxMDhiOGZhM2QxMjkyZTFmYzkwNzAuLjRhMDI3OTM2YjlkYjk5MzYwYmZkZDc4YTk3YjZiMzVk
NjQ2ODZjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBA
CiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCmluZGV4IGFkYWQwNDliMTRjNGFhNWYyNWFlYWQ5NDYw
YjFjMmJmYTYxOTIyNGUuLjM0MmEwZGY4ZDFlMjgzNTI4NGJjMzZiZTYxZGJiYmYyN2JiMjhkMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKQEAgLTMw
LDEyICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAK
aW5kZXggNDYxYzRkOTZhNWYzOTBkYzhmMTkwMDk1Y2I3NDU2NGE3MTA3YTcyMi4uM2FkOGMyMzc5
M2E3YTY5YjgzMzRkZjViZDc1NDMyM2ZkOWFhYjcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNw
cApAQCAtMzcsMTIgKzM3LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDFkYjBhMzJk
NTVlNWNiN2MwZjk0Yzg1ZjJhZmM5Yzk4MmIyZWIwMGQuLjAwOGI1ZTg5NzY4Njk1ZjI1YzgzM2Jh
MzQ2MDFkNGJlNTdkMGUyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
CmluZGV4IGUxZjlmMTcwYTZjZDcyM2RiZTk1NTg0ZGNmNWZhZDA0MjQyY2VlODguLmE5NDU0ZTli
YTZiOTM4MDRhM2U5MDU5NGU5YTcwZTYwY2Q2YTFiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNw
cApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJ
VC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9N
SklULmNwcAppbmRleCA3NmM0MGZiMDQ1Nzk1MDNlYTViNTJjNDdlMDQ5NjBkYjIxOTk5ZjNhLi45
NWQ3NjcwNDczODhlMzhjMDEwMDQyOTVkOGNmMTM0NTZiZDQ0YmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNw
cApAQCAtNDEsMTIgKzQxLDEyIEBACiAjaW5jbHVkZSAiSlNFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SlNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRyYWNlcnMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5j
cHAKaW5kZXggODdiMzUzYzViNTk4NTg5ZDU5MDJiNzBlNjRmMzkwNzIxZmE5MmM5My4uMTI3ZmFh
OTY3ZDJhYzUzNmU0NmFiOTNkYmY1NmZkNTI1NGZlMTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiSlNUZXN0U3Vi
T2JqLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
ICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3Mu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCA1NWRlYThlZWFiMDdm
NzUwNWYxYTZiZGZjYzI0MWI2NzFjYmRlYTU2Li40NWRjMTkyNzA0OWJlMjcyMDU1MmE5OGI3ZGYy
MzViMGY1YTE1YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0z
MCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNu
YXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggMzA4ZTM0ZjAwMWFjMmQ4YjM1M2U4MDUxZDhlYzUx
YmJhZGQ2ZWUwYS4uNzFlM2JmMzc1NDQyOWVjN2E3Y2NjYTgzNTUxZDM5Mjg4YWMxZWVmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggMjM4YTQ4ZjdjNjVmMGQzY2I2ZjFlMDNmN2EyOWU5
ZTgyOWViY2JjZi4uZDMyYzA0Y2M1MGVlZGYyNjllZDgwMWQ2OTEyM2Y2YjUwNTQwNDcyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4
Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRl
eCAzNDIzOGJjNWQyMTNlYzQ5OWZiZTVhMjU1YzU2MThmMzA2ODViMmRjLi5hYzJiZWJiMmQ5MzI0
YTFhMmMyYWRkNmExNjBkMzdjNzc1YzIzYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IDcxYjhiZGRmNjhkYWVjYzcz
ZTIyMWNlODNkNjYwNzNjNzM4YjRlYzguLmIyMGI4M2M3YmU5ZTViMzdiOWNjNTc1ODY2M2UxNzg1
NTg1ZTM5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMg
QEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQogI2luY2x1ZGUgIlRlc3RHbG9iYWxPYmplY3RCdWlsdGlucy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDY2MDc4
YmQ2Y2I1MTFlMWQyZjQ2ODg4MjU4MmE3ZjkxZmJjMDZiYzkuLjU3ODkyNTM3YmU4NzgzMjRhNWRk
ZThmNmQxYzU5MmMxYjk2MmI3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAppbmRleCA2MjAzY2MwYjk4NzM5MjQ3N2ExZDliZjdiNTcwY2JlMzdjMTBlMzRmLi4z
NTVhZGNkOTBhZWZjZjU5NWQwN2VkNTQ2ZTRjYWFiMjBiM2VlMjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjcs
MTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDNmZGM1NjA0MDM1MGUxMzIxZGIy
NDY5N2I3MjcyNTU3ZGQxYTkwOGQuLjc2OTY3M2FmYmI0ZTYyMDFkOTRjMzJhODRjZjI0OWVlNjAz
ODhmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCkBAIC0yOSwxMyArMjksMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCmluZGV4IDRjNjRjMTllYjg1ODI2MDI5ZjYwYjkyNWIzMTllMTFhNzAzZDk0ZjcuLjY0YTM3
ODk5YTlkOTA3ZmM4NTI5OTg2YjNkMDQ5MWJmNzA3ODY2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXN0U3VwcGxl
bWVudGFsLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgfHwgRU5BQkxFKENvbmRpdGlvbjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogI2luY2x1ZGUg
IkpTRE9NQ29udmVydFN0cmluZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmUuY3BwCmluZGV4IDU1ZmZkNjdhMTUwZmUzMmM1ZWRhMzVlMzJkMjQ2
ZjY5MzJlOGViYWEuLmNmZjMyZmYwZWIzYWRkYTc3ZmU5NDYzYTJhNGY5OWNlNjU4YjQ5NzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcApA
QCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90
QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVy
YWJsZS5jcHAKaW5kZXggOTc5YzBmOGNjNWJhZDg0NmYwOTYxY2JkYTI2NGUwY2I3NmMxODMwYy4u
YWMxZThlN2Y5ZWY4MjkyNzhlMjQ1ODQ1YTY2MjMxYTVmY2JjYWIwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFi
bGUuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1
aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDUwYWRhOGNhZjBlZTZkMDJiYWRhODAxYjBiNjk4
YWVlOTU5ZDkzNjAuLjAwZmFmOWYwNTczZmQwMDc1ZGU4ZGU1MTQ5ZThlYjUwODc0Yzk0ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTMwLDEy
ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRl
eCAzMTg3ZDJkYWYzZDZlNzIxZTdlMDA4NWYyN2NjYjIyZjJiNDFkYWY5Li4zZmViZDFjZGVjNDBl
Y2VmYmEzMmJjZmM0MzYzMjQzNTE1Y2U2YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMjgsMTMgKzI4
LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBkMjcx
OTRlODNlNmFjNzc2NTMxYTlkYjc3MzBmMDU3NGMyZGZhZTFkLi5lMDVkNjU1NDZiZmExMTM2YTA4
NjQyOTU4NDcyY2Y1MGNhMmQ1MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEz
ICsyOCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggYjFmMzZk
NzNlMDM1YWZlNzhlZmU5MzJiMTRkZjkzY2VmZmJhNGRmMi4uZTAxNWIxNzhhNzY1MzhmODE5ZTUz
YWZlN2M1ZmJiYTc0MTg0Y2EzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMg
QEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTI5
OGExNzYwYzA4MzUyNjZjNDJlYjY2NDg2NGJmNjQ0ODJjN2IzMC4uZjFhODRhOGJhZDlhNWQ2MDVh
MTBlNDlkOWM1YzQyNzNkOTkyODdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01OYW1lZENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25h
cHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDU3ZDY3
YzIzNGUyNmI0ZGRkMDk0N2U0MDJlZjg5YjQ1MDJiNmRkNDMuLjg2MmI0NTlmYmIyMWQ3ZDEwMTI1
Njk1ZjVhMGVhZWZlZDc1NGY2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAppbmRleCBkMGZjZDJmMmI5MDMyNDk1YjRiNjU4YmU5YjMxYjdmZTU1YTA4
ODZhLi5jMTA1ZjE1ZGJhZjg1ZGJmM2ZlNDQzM2JhN2E4MDU1YTg0MmZhYTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAg
LTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDI1MTQxMGI1
ZmFlZjcwMDRjMDExNjY2NmZjZThlMWU5MGEzMzc5YTkuLjY0MTM5YzhmNmIyMGJiMzRiNjIzNmQ2
MjA0MWM3ZTZkMDI5ZDhhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01P
cGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCmluZGV4IDI3NThjYTEwYTE0MTJjNDEzOWIzMjU4NGYzY2Y5MmI0MDNhYmIwMTQuLmQ2
MTRiY2U0MjFmZTM0YzZmYmU2NzhiZDM3ZTUzMmQ1MmQyNzY0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtMjgsMTMg
KzI4LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aC5jcHAKaW5kZXggY2EyYmY2MTJhY2JjMmZkNGUwNDRhMTU5YTc2NDY3ZTVhYWNhYjli
Mi4uZWE0YzVjZDI3Zjg4NzlkMTc5ZWJiYjkxNTNkZjk5MzgxMGJlNzY0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllci5jcHAKaW5kZXggOTEyMGY0YmU3ZjIxYjc4ZDJjOWJmZjJkYjE3MjVhOTQ5NzRi
ZmNkMS4uNmU0MGRlZjNkNDRiYTM3Zjc2NDAwOTkxMjg5YWZjMTBlMjliN2I1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgs
MTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggM2JiN2QzYjdlMTJmODI5Yzg4YzM0
NGJhYmRiNDg2ODIyZjU3Y2JhMi4uZDM5MjRjYmE2MDg2Y2Y5MDg0NmJmMTEwODUwOTM0MjAxOGU0
MzM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
LmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGNiZDVkMzFhNjI2N2Vh
MWVlMjVkZTA5MTRkNjE0NjhiZmNkOTI1YjUuLmM3YTNjNmE5ZDU5NWRmZTY3MmNjNzJhYmRkZTAz
ZWZlNmM4MzI4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
CmluZGV4IDlmY2JmNjk3YjYzOWFlMDNkZGMwZWJiMjA4M2NlNzk5ZjczODgzNTMuLjk4ZWMxM2Rj
MmU3OWVmNWZkYTY0YmY3MmQ3NDNmMWJjZjM5ZTQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBA
QAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBiOGE5ZmFkZTg1YjRlOTg3YzcwNTJhMDI5
YTlkZDhmY2RhNmQzMjUwLi5kZGRmZjhjY2Q3MjU5YjM3NDVhNjZjYzdkYmU2YWFmZmY4MDllNmE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDE3MTQ3NzU1
MGIwYzM4NDU5NTYyZjZhNzVjMmU4M2Q4MzE1ZGI5MjQuLmI2NjFmNTNjZDI4NzA4ODgzYTExYzhj
MjA1ZTcwNDgwOTUzMTdmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyLmNwcAppbmRleCAxMDNmOTFjMWJhYTJhYTM5ZjFlMzk5YWFmZWNlNTgxMTkx
MTE2ZGVlLi5jMzVmZjg5NmM0OGQ4YmIyODc4MjNiZGYwYTQ2MDdhMWIzZGE4NzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJh
dGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5k
ZXggZmMxMjJhMmUyYmJmODdiYTE0YjE2ZjcwNzk5ZTZjMjgwZjFlNGM0ZC4uOWYxMGQ2NGVlNWEw
ZDEzMTliOGNjZjg5NGRhOTBjOGFjMThhMTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMjgsMTIgKzI4LDEy
IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKaW5kZXggNDgw
N2IzNjU1MzMxOGUwNDJhOWI2N2I0NDQwODExOWQ2ODRlZDFkZS4uYzYwZGNhYjYzNTk1OTdkYjRm
ODgwZWRmNDA0MGFjODM0MzVhODI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCkBAIC0zMCwxMiArMzAs
MTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCBkZDUxOTMwNzMzYjZjZGFhNDllMWY2ODU2YjZi
NzFmMWUxMTdjYWRlLi40MGI5ODFlMzQ0MTA1N2Q3Y2JiN2ZlZTE3MGVlNTNjYjkwMzAxNzdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcApA
QCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCBk
ZTk2ZDNiOGNiZjIwMTI4YjM5NjM1ZGIzNmUwNjg0ZTlmODY2N2M2Li4yYjJkZWQ0YzJjNjg4YWY0
NDNmNGE5N2MwZmQ0OWIxMjYwMDA2NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0zNCwxMyArMzQsMTMg
QEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9P
YmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDBjYTVkYmRlMGM5NzM0ZTM5ODFlYzExYzFl
NzVlNzg4OWFiYjdiYmYuLjlmMjU0YjQ3ZWI5OWVlOTkwZDc1N2NkMjcyODhlYzhhMGI4OTcxNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCkBAIC03Nyw3ICs3Nyw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlQcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KQEAgLTkx
LDYgKzkwLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwCmluZGV4IGVhZjA5MmFmM2YzYTcxZTlkM2M0Y2Y2MDExYmZkOTE5MmFi
MjFiNWEuLjFhZGI3MDIxMmY0NTFjY2U4NWIwOGNkYTAzNmZlNDc4MDg5YzM5NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTMyLDEyICszMiwx
MiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAppbmRleCAwNTgx
NDNiYTE0YmI0ZWIyMjQwOWM4ZDI4NDczNzUzZDg0ZjAzZTdmLi5iMDU1NjY4NTk2YmM2ZjI3Yzgy
YzcxNmZkMjM0ZTVkODBhYThhNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgpAQCAtMzcsNiArMzYsNyBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJy
aWRlQnVpbHRpbnMuY3BwCmluZGV4IDBkYjc3NGFmMTI1ZjVkMTg1MGY3OWE2MTcxNDc1ZTEzN2Fi
N2NkNjEuLmMxYTYzNDMwYWMwZDhhYzEzYmJhNGM0YTc0Mzk0OTAxOGM3MTFkMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAppbmRleCAyODM2MjQ3M2E3MDlm
NTk2NDZiYmViNjA0YmUzZGExMTFhMGE4Y2VkLi5iZWM1N2Q1NTE3ZDViMDljOGQyMGEwYWRlNDI5
N2NmMGFlOGRmY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcApAQCAtMjcs
MTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJK
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4IDhiMGY1MWVkMzE5NDFjODRhZWIy
NGEzNzNiZTliMTdjMDdmNzYzZDcuLjdhMjU4OTg2NzE0NjMwYTMwNTNiYzc0ODFhNWRlMGZlZjFi
ZDc5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCkBA
IC0zNCwxMSArMzQsMTEgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uLmNwcAppbmRleCBlM2MxY2MyNTlhMWQyNzg3OWEyNjdkOWY0NDU4
ZDVkNDg5YTY4NzkyLi43OGQxYzQxYzQyOGMwMWUxZjc1ZjZlOTFhNjRhZWIzMDVjMGE1MjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAKICNpbmNs
dWRlICJKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oIgogI2luY2x1ZGUg
IkpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25h
cHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5kaXJlY3RJbmhlcml0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCmluZGV4
IDk2MzY4ZjNlNmY3YmZmYThlMWE3ZWZiZmU3ZjUwNjNmNjQ2ZGJkYTcuLjEzM2VkYTAyZTY0MDE2
M2ZjOWJlNjU0MzQ4MjBmYjkyNWYwNGMwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0
YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcApAQCAtMjYsMTEgKzI2LDEx
IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwCmluZGV4IDM3ZjY1NGRkZmNkN2MxNWI3OGViNjcx
YzRhYWM2Nzg1ZDU0MDBiYjcuLmFkNTMxYjIwYjc0YmM2ZDI1OTU2OTE4MmVhZWZjNTMxMWNmOGUw
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcApAQCAtMjks
MTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZp
bmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcAppbmRleCA1ZTg2OTEwYWI1MjA4OGUzMTc3OTM2
NDlkNGM2MDcyYWM0ZTcyYjk0Li5hMWFjMmQwMTBlNTFjNDgzN2MwZjBiNTQ2MjI4MDM0YWQwZGI4
NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwu
Y3BwCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAz
NDJlZDFhYTUwYjQ2ODY4YmZiMzkxNjZhZTBmODNkMDhjNjgwMmE4Li5kZjdkZmI4Zjk2MWQ5NGZl
OGUyNGYwMWQyNDFmYjI0ZjZhOTRmYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBACiAj
aW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAppbmRleCBmZjJjYWQyY2FmZmM5YWRmMWFmZmE1M2Nk
ZjA5NzdjZmM4M2U4NzE1Li41MjQyYmI4YmFhYzZmYzhjYTE0MDQwNjBmMTUwYmIxZGQ3YzAxNWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uLmNwcAppbmRleCA4OWVkZmI0ZDU0ZmZjZTI5MzEyZTlkYzM3MGEyOTA0ZTg2
Mzg5NDhmLi43Y2FlMjQzOWVmNjI3YjZjMjY2MTczOTRiOTFjYzhiODA0ZmYwNTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAK
QEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKaW5kZXggYjE2YjZmYjRiZDE0ZTI0
ZDJkYWUwZjQ0YmFiZWE2NGQ4NDcwMGY0NC4uNTBhNDZmNjE0Zjk4NDhiNzY5Mjg1ZTE2Mzg5MDcz
YzEyOTE1N2ZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24u
aCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
cy5jcHAKaW5kZXggNWE1NGFjMTQzY2IyNzkzNjRlNjQ2YzMzMzRiMGNiYzE3YWU4MzQzNS4uMGEz
M2FmMzc4YTJiMTIxOWYyOTI4NGRjODllMTZkMzhiNzI0Nzc5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKQEAg
LTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCmluZGV4IGYy
NTE4YTcxZWQ2ODYxYzVhOGNhZjZiZWIzNGM1ZmNmNmJkMzBkZWYuLjQ5MDQ5MTc0ZTAzNmY1ZjE4
MDYyNDRjM2YyZWJkMTllMTY5NjJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC0yOCwxMiArMjgsMTIg
QEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCmluZGV4IDgxMjM3MmI0ZDRlZTcwYzQyM2EyODQzMzQ2
NTFkMTE1OGVhYWNlNTkuLmM5YzUyNjk4YjgyZDNmZmYyN2QyMzQ0ZmRkYjU1NDNkMDkyY2E0MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZS5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAppbmRleCAz
OTE3YjRkOTI5NmJhNTIzZGMxMzA3MDYxOWNmNGNlZDM4YTgzZmIxLi43NWVjMzhhZGI4ZmU4ODkz
MDQ2MDM1MzQ2YjU2NDQ2ZDdiMmI2MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2lu
Y2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCAxZTYxM2FhYjA2NTI0YWY1
NTYwNjMzZDg4MjI0OTdmZDFjMDFlMGEyLi4xODZhNDE2ZGE4NzNhNjRlNWRmNWM2NmViYmZkMDkw
MWFjZTVkZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQAogI2lu
Y2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IDcyNDA3MTU2ZWJkNjI2ODZhMTM0YjAx
YTRlNDBjZDUxMTZiNzU5ZGYuLmQwZWFiYTA5ZmQxMmVlYWY1YTEzN2EyYWI0ZGMyNDBiOTk3Yjc2
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZEluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTk0LDcgKzE5
NCw3IEBAIEJsb2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29u
dGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6TWFrZUhUVFBTOiB7CiAgICAg
ICAgICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwgdXJsLnByb3RvY29sSXMoIndz
IikpCi0gICAgICAgICAgICAgICAgJiYgKCF1cmwucG9ydCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCisgICAgICAgICAg
ICAgICAgJiYgKCF1cmwucG9ydCgpIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVy
bC5wb3J0KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKICAgICAgICAgICAgICAgICB3aWxs
TWFrZUhUVFBTID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNDQs
NyArMjQ0LDcgQEAgQmxvY2tlZFN0YXR1cyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nl
c3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZCgKICAgICAgICAgICAgIHdpbGxCbG9j
a0Nvb2tpZXMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6Ok1ha2VIVFRQUzoKLSAgICAgICAgICAgIGlmICgodXJs
LnByb3RvY29sSXMoImh0dHAiKSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSkgJiYgKCF1cmwucG9y
dCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5w
cm90b2NvbCgpKSkpCisgICAgICAgICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwg
dXJsLnByb3RvY29sSXMoIndzIikpICYmICghdXJsLnBvcnQoKSB8fCBXVEY6OmlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCiAgICAg
ICAgICAgICAgICAgd2lsbE1ha2VIVFRQUyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVT
ZWxlY3RvcjoKQEAgLTI3NSwxMiArMjc1LDEyIEBAIHZvaWQgYXBwbHlCbG9ja2VkU3RhdHVzVG9S
ZXF1ZXN0KGNvbnN0IEJsb2NrZWRTdGF0dXMmIHN0YXR1cywgUGFnZSogcGFnZSwgUmVzb3VyCiAg
ICAgaWYgKHN0YXR1cy5tYWRlSFRUUFMpIHsKICAgICAgICAgY29uc3QgVVJMJiBvcmlnaW5hbFVS
TCA9IHJlcXVlc3QudXJsKCk7CiAgICAgICAgIEFTU0VSVChvcmlnaW5hbFVSTC5wcm90b2NvbElz
KCJodHRwIikpOwotICAgICAgICBBU1NFUlQoIW9yaWdpbmFsVVJMLnBvcnQoKSB8fCBpc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgpLnZhbHVlKCksIG9yaWdpbmFsVVJM
LnByb3RvY29sKCkpKTsKKyAgICAgICAgQVNTRVJUKCFvcmlnaW5hbFVSTC5wb3J0KCkgfHwgV1RG
Ojppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgpLnZhbHVlKCksIG9y
aWdpbmFsVVJMLnByb3RvY29sKCkpKTsKIAogICAgICAgICBVUkwgbmV3VVJMID0gb3JpZ2luYWxV
Ukw7CiAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAgICAgICAgaWYgKG9y
aWdpbmFsVVJMLnBvcnQoKSkKLSAgICAgICAgICAgIG5ld1VSTC5zZXRQb3J0KGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2woImh0dHBzIikudmFsdWUoKSk7CisgICAgICAgICAgICBuZXdVUkwuc2V0UG9y
dChXVEY6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woImh0dHBzIikudmFsdWUoKSk7CiAgICAgICAg
IHJlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApp
bmRleCBhMjk2ZmY5N2ZiY2ZlYzkwYjVhNjBjZmVjM2M4MGM0MGU4ZTQxODMzLi4zNGNmYWNhNTAx
ZmQzYzcyYzk2NjdlOGY0YjcwZGUyNzdhYWM1YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApA
QCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50TG9h
ZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgUmVzb3Vy
Y2VMb2FkSW5mbzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCA1ZDM4NmFmZGZiMjk3M2Y2OTYw
MjcxY2YzNjc5MTJhMWUzNzc0M2U0Li4zNmM3YzY0ZGNiODQyNzAyNDYzMGYwZjc5MTYzMWI3Nzhk
ZGE5ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMjAsMTIgKzIwLDEyIEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydGllcy5oCmluZGV4IDNmNGI2NWFiNzI4OGRkMGYzYjE2MWJhNDFiZDUw
NWRmMmUzNzU1MGMuLjM0MjE2M2RiNTAzNjM2MjA0ODNlYmQwMmIzYmNjOTJmZGM2YTI4MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3Mg
Q1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ29sb3I7
CiBjbGFzcyBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM7Ci1jbGFzcyBVUkw7CiBjbGFzcyBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
OwogY2xhc3MgU3R5bGVkRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4
IDRlNDhjMzA0YTU3NzExZTNmNzc0ODZmM2M5Njc2MmQ2NGZlMWIxMDYuLjIwY2ZjZDcxMTUyNWIz
ZmRjMDM0MDhmY2UyNTYzYzQ2MTQzYmVlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
aApAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKLWNsYXNzIFVSTDsKIGNsYXNzIEtleWZyYW1lTGlz
dDsKIGNsYXNzIEtleWZyYW1lVmFsdWU7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVNoZWV0LmgKaW5kZXggZThiNWJmYzU2Mjg3YTRkOTgyOGU4OTNkODU3OWNiYThi
OGVlYmNjMi4uYmFiNGU2Mjc5NDdiNmVlODVkODQ5OTVjM2ZkMDIzNDIxOGQ0MzgxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldC5oCkBAIC0zMCw3ICszMCw2IEBAIGNsYXNzIENTU0ltcG9ydFJ1bGU7
CiBjbGFzcyBNZWRpYUxpc3Q7CiBjbGFzcyBOb2RlOwogY2xhc3MgU3R5bGVTaGVldDsKLWNsYXNz
IFVSTDsKIAogY2xhc3MgU3R5bGVTaGVldCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU2hlZXQ+
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29u
dGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAppbmRleCAy
YzJiZDExN2FlMGE1YjIzZGYyNTAxNGI5ZTViOTMxMDdkOTU4YTQ1Li5kMTEyMDk4NGY1ZjQ0N2E3
ZDJmYjQxN2VmYzgxY2Y5NTZkOWFhM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5oCkBAIC0yMiwxMCArMjIsMTAgQEAKIAogI2luY2x1ZGUgIkNTU1BhcnNlckNvbnRl
eHQuaCIKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNv
bnRleHQuaAppbmRleCAxZWY3NzExZmQwY2JkYjUxNTIwZmZkYWQ4NjIzNzc3NzY4OTJkMjY0Li5k
YmQyMzc3NTM0YTRjOTg3NTk5YWUxYmNhNGY4YTM3MmM1ZDVkYTBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaApAQCAtMjcsOSArMjcsOSBAQAogCiAj
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaEZ1
bmN0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtODMsNyArODMsNyBAQCBXRUJDT1JFX0VYUE9SVCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCk7CiBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dEhhc2gg
ewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGtleSkK
ICAgICB7Ci0gICAgICAgIGF1dG8gaGFzaCA9IFVSTEhhc2g6Omhhc2goa2V5LmJhc2VVUkwpOwor
ICAgICAgICBhdXRvIGhhc2ggPSBXVEY6OlVSTEhhc2g6Omhhc2goa2V5LmJhc2VVUkwpOwogICAg
ICAgICBpZiAoIWtleS5jaGFyc2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGhhc2ggXj0gU3Ry
aW5nSGFzaDo6aGFzaChrZXkuY2hhcnNldCk7CiAgICAgICAgIHVuc2lnbmVkIGJpdHMgPSBrZXku
aXNIVE1MRG9jdW1lbnQgICAgICAgICAgICAgICAgICA8PCAwCkBAIC0xMTUsNyArMTE1LDcgQEAg
c3RydWN0IENTU1BhcnNlckNvbnRleHRIYXNoIHsKIAogbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0
ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+IDogR2VuZXJp
Y0hhc2hUcmFpdHM8V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dD4gewotICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7
IG5ldyAoTm90TnVsbCwgJnNsb3QuYmFzZVVSTCkgV2ViQ29yZTo6VVJMKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShX
ZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QuYmFz
ZVVSTCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQogICAgIHN0YXRpYyBib29s
IGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQmIHZhbHVlKSB7
IHJldHVybiB2YWx1ZS5iYXNlVVJMLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgICBz
dGF0aWMgV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gV2Vi
Q29yZTo6Q1NTUGFyc2VyQ29udGV4dChXZWJDb3JlOjpIVE1MU3RhbmRhcmRNb2RlKTsgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCmluZGV4IDg3MWQ1
OTkxYjU3NmJiMzBmNDY1ODc4MTE4NzNkYWY2ZmE1OGJjYTQuLjI1NzVjMGRmMmI4N2M1OTA1Zjdk
YmMyY2U2ZmNjMzU0ZmI3YTk3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJJZGlvbXMuaApAQCAtMzUsOCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVVJMOwogICAgIAogLy8gU3BhY2Ug
Y2hhcmFjdGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBDU1Mgc3BlY2lmaWNhdGlvbi4KIC8vIGh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyN3aGl0ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXIuY3BwCmluZGV4IDZkMzlkYTQ1NWQ0MmYzMzgyZGM3NDI1ZGFkODAwN2JmZDY3MDdi
OWUuLjYwZTNiN2NlNjliZjk4MDg0NjUxMTdjOGE2NDM4NjM5YjE3NDUxMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MywxMCArNDMsMTAgQEAKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJT
dGF0aWNQYXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2Vi
Q29udGVudFJlYWRlci5oIgogI2luY2x1ZGUgIldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5o
IgogI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNs
dWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxp
c3QoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgaWYgKHR5cGUg
PT0gInRleHQvaHRtbCIpCiAgICAgICAgIHNhbml0aXplZERhdGEgPSBzYW5pdGl6ZU1hcmt1cChk
YXRhKTsKICAgICBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L3VyaS1saXN0IikgewotICAgICAgICBh
dXRvIHVybCA9IFVSTFBhcnNlcihkYXRhKS5yZXN1bHQoKTsKKyAgICAgICAgYXV0byB1cmwgPSBV
UkwoeyB9LCBkYXRhKTsKICAgICAgICAgaWYgKHVybC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBz
YW5pdGl6ZWREYXRhID0gdXJsLnN0cmluZygpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAidGV4
dC9wbGFpbiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmNThlYjJlNTljYjBkOGIxMWNi
NWE1NjQyYzAxZTQxZmJiZWM4ZGVmLi44NzI0ZTgxMTRiYjIxNGI1MDJjZWNhOThhYzZmMGMyNzdk
MjljZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMxMzYsNyArMzEzNiw3IEBAIHZv
aWQgRG9jdW1lbnQ6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzCiAKIHZvaWQgRG9jdW1lbnQ6OnNldFVSTChjb25zdCBVUkwm
IHVybCkKIHsKLSAgICBjb25zdCBVUkwmIG5ld1VSTCA9IHVybC5pc0VtcHR5KCkgPyBibGFua1VS
TCgpIDogdXJsOworICAgIGNvbnN0IFVSTCYgbmV3VVJMID0gdXJsLmlzRW1wdHkoKSA/IFdURjo6
YmxhbmtVUkwoKSA6IHVybDsKICAgICBpZiAobmV3VVJMID09IG1fdXJsKQogICAgICAgICByZXR1
cm47CiAKQEAgLTM0MjYsNyArMzQyNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1
aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sCiAgICAg
ICAgICAgICAgICAgY29tcGxldGVkVVJMID0gbV91cmw7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsKLSAgICAg
ICAgICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICAgICAg
ICAgIGlmICghV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZWRVUkwpKQogICAgICAg
ICAgICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdCgq
dGhpcywgZGVsYXksIGNvbXBsZXRlZFVSTCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJlc2ggIiArIG1fdXJsLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0byBhIGphdmFzY3JpcHQ6IFVSTCI7
CkBAIC00ODg4LDcgKzQ4ODgsNyBAQCBVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3QKICAgICAvLyBTZWUg
YWxzbyBbQ1NTXVN0eWxlU2hlZXQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpCiAgICAgaWYg
KHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFVSTCgpOwotICAgIGNvbnN0IFVSTCYgYmFz
ZVVSTCA9ICgoYmFzZVVSTE92ZXJyaWRlLmlzRW1wdHkoKSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0g
YmxhbmtVUkwoKSkgJiYgcGFyZW50RG9jdW1lbnQoKSkgPyBwYXJlbnREb2N1bWVudCgpLT5iYXNl
VVJMKCkgOiBiYXNlVVJMT3ZlcnJpZGU7CisgICAgY29uc3QgVVJMJiBiYXNlVVJMID0gKChiYXNl
VVJMT3ZlcnJpZGUuaXNFbXB0eSgpIHx8IGJhc2VVUkxPdmVycmlkZSA9PSBXVEY6OmJsYW5rVVJM
KCkpICYmIHBhcmVudERvY3VtZW50KCkpID8gcGFyZW50RG9jdW1lbnQoKS0+YmFzZVVSTCgpIDog
YmFzZVVSTE92ZXJyaWRlOwogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gVVJM
KGJhc2VVUkwsIHVybCk7CiAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwsIG1fZGVjb2Rlci0+
ZW5jb2RpbmdGb3JVUkxQYXJzaW5nKCkpOwpAQCAtNzE2Miw5ICs3MTYyLDkgQEAgRG9jdW1lbnQm
IERvY3VtZW50OjplbnN1cmVUZW1wbGF0ZURvY3VtZW50KCkKICAgICAgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8RG9jdW1lbnQmPigqZG9jdW1lbnQpOwogCiAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkp
Ci0gICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxw
dHIsIGJsYW5rVVJMKCkpOworICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBIVE1MRG9jdW1l
bnQ6OmNyZWF0ZShudWxscHRyLCBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGVsc2UKLSAgICAgICAg
bV90ZW1wbGF0ZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBibGFua1VSTCgp
KTsKKyAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRy
LCBXVEY6OmJsYW5rVVJMKCkpOwogCiAgICAgbV90ZW1wbGF0ZURvY3VtZW50LT5zZXRDb250ZXh0
RG9jdW1lbnQoY29udGV4dERvY3VtZW50KCkpOwogICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0
VGVtcGxhdGVEb2N1bWVudEhvc3QodGhpcyk7IC8vIGJhbGFuY2VkIGluIGR0b3IuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCmluZGV4IGE3OTZiNDkwN2MxMjE1OGMwNmJmYTYyNTMxZDhmMTdlY2UwYWFjNDIu
LjFkOWNmODQ0ODNjNGUxYmIzOWFlMjk3MzQ2NDczYTFjZTYzMzViYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCkBAIC02NzEsNyArNjcxLDcgQEAgY2xhc3MgRG9jdW1lbnQKIAogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KICAgICB2b2lkIHNldFVSTChj
b25zdCBVUkwmKTsKLSAgICBjb25zdCBVUkwmIHVybEZvckJpbmRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV91cmwuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IG1fdXJsOyB9CisgICAgY29uc3QgVVJM
JiB1cmxGb3JCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKSA/IFdURjo6
YmxhbmtVUkwoKSA6IG1fdXJsOyB9CiAKICAgICAvLyBUbyB1bmRlcnN0YW5kIGhvdyB0aGVzZSBj
b25jZXB0cyByZWxhdGUgdG8gb25lIGFub3RoZXIsIHBsZWFzZSBzZWUgdGhlCiAgICAgLy8gY29t
bWVudHMgc3Vycm91bmRpbmcgdGhlaXIgZGVjbGFyYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggZDkxZmU0MzE1ZTYyNmYxNDBkYzY4YmU1OTU3ZjZhMDRkNmY0NjAwNy4uOGIzN2I5ZmYz
MmY2YzhhNTk4YWYyNmVlYWEwMjgwNTZhMzRjNDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtMTcxOSw3ICsxNzE5LDcgQEAgYm9vbCBFbGVtZW50Ojppc0V2ZW50SGFuZGxlckF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKIAogYm9vbCBFbGVtZW50Ojppc0ph
dmFTY3JpcHRVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgcHJvdG9jb2xJc0phdmFT
Y3JpcHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZS52YWx1ZSgp
KSk7CisgICAgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgV1RGOjpwcm90b2Nv
bElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRl
LnZhbHVlKCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzdHJpcFNjcmlwdGluZ0F0dHJpYnV0ZXMo
VmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXggOGVlYzI2YTlkNTQ0ZTEzODQ2
ZDhhNDA0Mzk2NWZjZDcwNWUyMDQ3MC4uYzI3ZmRlNDhkNjYwYmQ1OWRjNjJmYTQzYmNhZDY1YjRi
YWIwNTZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRP
d25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4
dEZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBzaGFkb3dS
b290ID0gZWxlbWVudC5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIC8vIFVzZXIgYWdlbnQg
c2hhZG93IHRyZWVzIGNhbid0IGNvbnRhaW4gZG9jdW1lbnQtcmVsYXRpdmUgVVJMcy4gVXNlIGJs
YW5rIFVSTCBhcyBiYXNlIGFsbG93aW5nIGNyb3NzLWRvY3VtZW50IHNoYXJpbmcuCi0gICAgYXV0
byYgYmFzZVVSTCA9IHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jv
b3RNb2RlOjpVc2VyQWdlbnQgPyBibGFua1VSTCgpIDogZWxlbWVudC5kb2N1bWVudCgpLmJhc2VV
UkwoKTsKKyAgICBhdXRvJiBiYXNlVVJMID0gc2hhZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2Rl
KCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCA/IFdURjo6YmxhbmtVUkwoKSA6IGVsZW1l
bnQuZG9jdW1lbnQoKS5iYXNlVVJMKCk7CiAKICAgICBDU1NQYXJzZXJDb250ZXh0IHJlc3VsdCA9
IENTU1BhcnNlckNvbnRleHQgeyBlbGVtZW50LmRvY3VtZW50KCksIGJhc2VVUkwsIGVsZW1lbnQu
ZG9jdW1lbnQoKS5jaGFyYWN0ZXJTZXRXaXRoVVRGOEZhbGxiYWNrKCkgfTsKICAgICBpZiAoc2hh
ZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2Vu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAppbmRleCBhNTIwMmQ1YzVkYWNlZTgyODk2YzRlMDM3Mjc0NzE1N2Y5
ODYxOTgzLi5mM2RlNzAxZDZkNGJhODQ1NjE3MmY2NjQzYzYxZjk1MTRhZTM0YTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBEb2N1bWVudCogTm9kZTo6b3duZXJEb2N1
bWVudCgpIGNvbnN0CiBjb25zdCBVUkwmIE5vZGU6OmJhc2VVUkkoKSBjb25zdAogewogICAgIGF1
dG8mIHVybCA9IGRvY3VtZW50KCkuYmFzZVVSTCgpOwotICAgIHJldHVybiB1cmwuaXNOdWxsKCkg
PyBibGFua1VSTCgpIDogdXJsOworICAgIHJldHVybiB1cmwuaXNOdWxsKCkgPyBXVEY6OmJsYW5r
VVJMKCkgOiB1cmw7CiB9CiAKIGJvb2wgTm9kZTo6aXNFcXVhbE5vZGUoTm9kZSogb3RoZXIpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAppbmRleCA1MmRhNmQxMWEwMTBmZjQzYTM2OTU1NWFmNzc5OTQ2MWJjYTJh
NThiLi4xMjQzOWQ3OGQzNWM0YzI4MjFhNzI1NGQwMzIxNDUwMzVmYjQ3ZjlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKQEAgLTMxLDExICszMSwxMSBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgi
CiAjaW5jbHVkZSAiU3R5bGVWYWxpZGl0eS5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgotI2lu
Y2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIC8vIFRoaXMgbmVl
ZHMgdG8gYmUgaGVyZSBiZWNhdXNlIERvY3VtZW50LmggYWxzbyBkZXBlbmRzIG9uIGl0LgogI2Rl
ZmluZSBEVU1QX05PREVfU1RBVElTVElDUyAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaApp
bmRleCBhNjFkYWQ0NWU5ZTQ0NGZhMzIyZTU5ODIyYjRlOGU2YjFlOGY2ZGI3Li42MjQ1NGU3OTNj
YjEzMzRmNjRjY2YzYmUyMDk1ZDMzY2E5YTcyYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmgKQEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIExvYWRhYmxlTW9k
dWxlU2NyaXB0OwogY2xhc3MgUGVuZGluZ1NjcmlwdDsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7
Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFNjcmlwdEVsZW1lbnQgewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggM2JkZmNjODBkYmU2ZTZh
ZGFkNTg3N2QxZmVlMzAxMTI3Mzc2ZDU2My4uNGIyM2Y0N2Y3ZGUzZGJlMGRmY2NhNGJhYzI3ZjA0
NTI2OWZmODAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC02OCw3ICs2OCw2IEBAIGNsYXNzIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNvY2tldFBy
b3ZpZGVyOwotY2xhc3MgVVJMOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogY2xhc3Mg
U2VydmljZVdvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAppbmRleCA5ZjIx
NWZiYTFiNTNmMjU2MTVjYzBkYTNjYzczNDIwNTAxMjVhY2E1Li5jMGNjOGUyMTEwOWQ2M2JmNGEz
MmU5YjVhN2M0ZjE5NWE0ODA3MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Vj
dXJpdHlDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5o
CkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgU2VjdXJpdHlPcmlnaW5Qb2xpY3k7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQ
b2xpY3k7Ci1jbGFzcyBVUkw7CiAKIGVudW0gU2FuZGJveEZsYWcgewogICAgIC8vIFNlZSBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNhdHRyLWlmcmFt
ZS1zYW5kYm94IGZvciBhIGxpc3Qgb2YgdGhlIHNhbmRib3ggZmxhZ3MuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKaW5kZXggNjdlN2VlZWM0OWM4ODdiNjYxZTQ1NTUwN2ZhMGM4MjFmN2VjNjA5
Zi4uMTY4NjI5MDVmYTYyZTI2YjcwMjJiMWYxMTNjZjNkOTkyMGE0YWJmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcApAQCAtMTUxMCw5ICsxNTEwLDkgQEAgdm9pZCBFZGl0b3I6OmNvcHlV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3Rl
Ym9hcmQKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRVUkwpOwogfQogCi1QYXN0ZWJv
YXJkV3JpdGVyRGF0YTo6VVJMIEVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK1Bhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkxEYXRh
IEVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB0aXRsZSkKIHsKLSAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMIHJlc3VsdDsKKyAgICBQ
YXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMRGF0YSByZXN1bHQ7CiAKICAgICByZXN1bHQudXJsID0g
dXJsOwogICAgIHJlc3VsdC50aXRsZSA9IHRpdGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5k
ZXggNmZmMjg2NmIxNDhmZGY0ZmY5MjA1Y2QzZGZmOTRlZDAyYmVjOTUzYi4uZmMyNTQwMzIyOTIx
ZGYyZmJlNzYxZWM2NjliNDM2MTI4Mjg2Mzc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBA
IC0xNzAsNyArMTcwLDcgQEAgY2xhc3MgRWRpdG9yIHsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29weVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICB2b2lkIGNv
cHlVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYpOwotICAg
IFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkwgcGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMRGF0
YSBwYXN0ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwog
I2lmICFQTEFURk9STShJT1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5SW1hZ2UoY29u
c3QgSGl0VGVzdFJlc3VsdCYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFy
a3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDM1M2RiYTY5Mjc0OWIxOGNiYTkxMzE1NDAxZmFmYWVj
NGJmMDM4NTEuLmZkN2Y4YTgxODE4MjQzYzE2Mjg2ZmNhNzhjMDNmNDAzNjJkODZkOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0zNSw3ICsz
NSw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCkBAIC0yMzIsNyAr
MjMyLDcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRl
VmFsdWUoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb24KICAgICBjb25zdCBTdHJpbmcgcmVzb2x2
ZWRVUkxTdHJpbmcgPSByZXNvbHZlVVJMSWZOZWVkZWQoZWxlbWVudCwgYXR0cmlidXRlLnZhbHVl
KCkpOwogICAgIFVDaGFyIHF1b3RlQ2hhciA9ICciJzsKICAgICBTdHJpbmcgc3RyaXBwZWRVUkxT
dHJpbmcgPSByZXNvbHZlZFVSTFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBpZiAocHJv
dG9jb2xJc0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcpKSB7CisgICAgaWYgKFdURjo6cHJv
dG9jb2xJc0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcpKSB7CiAgICAgICAgIC8vIG1pbmlt
YWwgZXNjYXBpbmcgZm9yIGphdmFzY3JpcHQgdXJscwogICAgICAgICBpZiAoc3RyaXBwZWRVUkxT
dHJpbmcuY29udGFpbnMoJyInKSkgewogICAgICAgICAgICAgaWYgKHN0cmlwcGVkVVJMU3RyaW5n
LmNvbnRhaW5zKCdcJycpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9EYXRhRGV0ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24uaAppbmRleCBmMjVmYWFlMzc1NzA2MTFlN2RmMjI5ZWU4YWYxMzNmNDVkYWFmN2Y0Li4x
NTA0ZjZmMzRmN2UxNWZjYTJjNzBiNDQzNzZhMTY4OGM0ZjU3Zjc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaApAQCAtNDEsNyArNDEsNiBAQCBjbGFz
cyBFbGVtZW50OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNz
IFJhbmdlOwotY2xhc3MgVVJMOwogCiBlbnVtIERhdGFEZXRlY3RvclR5cGVzIHsKICAgICBEYXRh
RGV0ZWN0b3JUeXBlTm9uZSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbQppbmRleCBhZjYxZjM2YjhiNDhlZDhhMjdhYjBmZDVlYjhiM2ViNjFkYWZlNGQ1
Li5lYzM3OTVmZTY2ZTIwNTc1M2YzNmQ3NjZmZDI2NzEzN2JmNDEzZmU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTUxLDExICs1MSwxMSBAQAog
I2ltcG9ydCAiUmVuZGVyU3R5bGUuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIldlYkNv
bnRlbnRSZWFkZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAi
bWFya3VwLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBF
ZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRT
dHJpbmcgKmF0dHJpYnV0ZWQKIAogU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29u
c3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVy
bCk7CisgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAogUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCBjNWE4OGYzYWQ1YWY0YmRhY2UxMzY0MDg5MGQ3Y2Ew
OTlkNGJmMjM2Li5kNTdmMWFlNTYzMTRkMjljMjgzMGMxZDJjNGI3MmUwNDdmMGQzOTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbQpAQCAtNTQsNyArNTQsNiBAQAogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQg
IlNvY2tldFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IuaCIKLSNpbXBvcnQgIlVSTFBhcnNlci5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1w
b3J0ICJXZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIuaCIKQEAgLTYyLDYgKzYx
LDcgQEAKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJp
YnV0ZWRTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8
d3RmL1VSTFBhcnNlci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkxvY2FsRGVm
YXVsdFN5c3RlbUFwcGVhcmFuY2UuaCIKQEAgLTI4OCw3ICsyODgsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogCiAgICAgICAgIGF1dG8gbmFtZSA9IGltYWdlLmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9IFVSTFBhcnNlciB7IHJlc291cmNlVVJMU3RyaW5n
IH0ucmVzdWx0KCkubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgICAgIG5hbWUgPSBVUkwo
eyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygibWVkaWEi
KTsKIApAQCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAg
IGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgYXV0byBuYW1lID0gVVJMUGFyc2VyIHsgcmVzb3VyY2VVUkxTdHJp
bmcgfS5yZXN1bHQoKS5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBhdXRvIG5hbWUgPSBV
UkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygiZmls
ZSIpOwogCkBAIC01MTgsNyArNTE4LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2Vi
QXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBTdHJpbmcgc2FuaXRpemVkTWFya3Vw
ID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgKmZyYW1lLmRvY3VtZW50KCksICpy
ZXN1bHQsIG1zb0xpc3RRdWlya3NGb3JNYXJrdXAoKSwgWyZdIChjb25zdCBTdHJpbmcmIHR5cGUp
IHsKICAgICAgICAgcmV0dXJuIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhblNob3dNSU1FVHlw
ZUFzSFRNTCh0eXBlKTsKICAgICB9KTsKLSAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgc2FuaXRpemVkTWFya3VwLCBibGFua1VSTCgpLCBE
aXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOworICAgIGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBzYW5pdGl6ZWRNYXJrdXAsIFdU
Rjo6YmxhbmtVUkwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KTsKIAogICAg
IGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCBmMWNkNTNjOWUzMzhkMWFhYWY1MzBhOTA4MTE4ZmZl
MDg4YjI4MjRmLi40NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJmMjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC01MiwxMSArNTIsMTEgQEAK
ICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVy
dGllcy5oIgogI2ltcG9ydCAiV2ViQ29udGVudFJlYWRlci5oIgotI2ltcG9ydCAiV2ViQ29yZU5T
VVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNp
bXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8cGFs
L3N5c3RlbS9Tb3VuZC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjUzLDcgKzI1Myw3IEBAIFN0cmluZyBFZGl0b3I6OnBs
YWluVGV4dEZyb21QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAg
ICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdl
IGtub3cgLVtOU1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxs
IHRoZSBzYW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRp
bmcgYW4gTlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0gICAgICAgIHN0cmluZyA9IHVzZXJW
aXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworICAgICAgICBzdHJp
bmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10p
OwogCiAgICAgLy8gRklYTUU6IFdURiBzaG91bGQgb2ZmZXIgYSBub24tTWFjLXNwZWNpZmljIHdh
eSB0byBjb252ZXJ0IHN0cmluZyB0byBwcmVjb21wb3NlZCBmb3JtIHNvIHdlIGNhbiBkbyBpdCBm
b3IgYWxsIHBsYXRmb3Jtcy4KICAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21w
b3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lk
IEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBF
bGVtZW50JiBpbWFnZUVsZW1lbgogICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0ID0gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoaW1hZ2VFbGVtZW50KTsKICAgICBwYXN0
ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxl
ID0gdGl0bGU7Ci0gICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSB1c2Vy
VmlzaWJsZVN0cmluZyhwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCk7CisgICAgcGFzdGVib2FyZElt
YWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9h
cmRJbWFnZS51cmwudXJsKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2Fj
aGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNl
TUlNRVR5cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZjBlMGQ4NjVjOGJjN2RjZGIxMzU4MTRjMDdkMjQ0NWE5
ZGE3Y2NmNC4uOTE0YjgwY2I1ODNjMzk4ZDZhOTU4ZDdhNzU3NWNhZTI4MDVmNTI3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzMsMTEgKzczLDExIEBACiAjaW5jbHVkZSAiU3R5
bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVk
ZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUg
IlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTYxLDcgKzE2
MSw3IEBAIHZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZy
YWdtZW50PiYmIGZyYWdtZW50LCBXVEY6OkZ1bmN0CiAgICAgICAgIGZvciAoY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGZvciBzcmNzZXQuCiAgICAgICAgICAgICBp
ZiAoZWxlbWVudC5hdHRyaWJ1dGVDb250YWluc1VSTChhdHRyaWJ1dGUpICYmICFhdHRyaWJ1dGUu
dmFsdWUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBVUkwgdXJsID0gVVJMUGFyc2Vy
IHsgYXR0cmlidXRlLnZhbHVlKCkgfS5yZXN1bHQoKTsKKyAgICAgICAgICAgICAgICBVUkwgdXJs
KHsgfSwgYXR0cmlidXRlLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZW1v
dmVVUkwodXJsKSkKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlc1RvUmVtb3ZlLmFwcGVu
ZCh7IGVsZW1lbnQsIGF0dHJpYnV0ZS5uYW1lKCkgfSk7CiAgICAgICAgICAgICB9CkBAIC05NTEs
NyArOTUxLDcgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1
cChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYKIAogICAgIGZyYWdtZW50LT5wYXJz
ZUhUTUwobWFya3VwLCBmYWtlQm9keS5wdHIoKSwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAg
cmVzdG9yZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQoZnJhZ21lbnQpOwotICAgIGlmICgh
YmFzZVVSTC5pc0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBibGFua1VSTCgpICYmIGJhc2VVUkwgIT0g
ZG9jdW1lbnQuYmFzZVVSTCgpKQorICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkgJiYgYmFzZVVS
TCAhPSBXVEY6OmJsYW5rVVJMKCkgJiYgYmFzZVVSTCAhPSBkb2N1bWVudC5iYXNlVVJMKCkpCiAg
ICAgICAgIGNvbXBsZXRlVVJMcyhmcmFnbWVudC5wdHIoKSwgYmFzZVVSTCk7CiAKICAgICByZXR1
cm4gZnJhZ21lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCBiNTUwYThmNjdmMzlkZmEz
YWFlODkwNWQ4YTBkMmYyNWNmOTA0YTg3Li5iMDQ4Y2E4MjMzMjc1MGJmYWJlODRhY2YxOWQ0YjUx
Y2QwZDJiMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xh
c3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEhUTUxFbGVtZW50OwotY2xhc3MgVVJMOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFz
cyBRdWFsaWZpZWROYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3lu
Y0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
Y3BwCmluZGV4IDYzYjFlMGU1NzQxMWQwNjMzYzQxOThmNGFlMDkzNTNhMDM1NTEyN2UuLjczYTM2
NTIyODc5OWMxNmI5YTk4OGQ5YTExODllMGNmOTM4MGZlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKIAogI2luY2x1ZGUg
IkZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5o
PgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUg
PHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNG
aWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCmlu
ZGV4IDRmMGU3YjI3NzcxN2ExOWNjMjcwZGYyZTk2M2FiZWVmOTNmM2YzNTMuLjYyY2FmZmUyZDk4
YWQxZDVkMTBmNGVkNjg4MTdkYTkwNDk0ZWExNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZpbGVTdHJlYW1DbGllbnQ7CiBjbGFzcyBGaWxlU3RyZWFtOwotY2xhc3MgVVJMOwog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBc3luY0ZpbGVTdHJlYW0gewogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaAppbmRleCAyMDEzOWM0YzEyYTE0OTNlMDUzOGRjOWFiOTUxNjNiMTQ5OGNmOTYy
Li45MGQ0NjU2OTk3MzAxMjU4ZWU4NjgyOGU5YWI2MDc4YWMzZjg5YTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlByb3BlcnR5QmFnLmgi
CiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKaW5kZXggYzZkZmVlNjU1MDE1
M2UyYmY0ODhhMjdjYzVhZThlMjBlOThlMDQ2MS4uMTQ2YzBkYjA0OWQ3MTU0OGQwZmMyZDg4OWU0
NmJiNmY1NTY0OWFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCkBAIC0zMiw3ICsz
Miw3IEBACiAKICNpbmNsdWRlICJCbG9iVVJMLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3
dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2JVUkwuaAppbmRleCAzNTllYWFmN2YyYTI2NjdiOGIyMmY3YTM1MDMyYTE1NzFkNjcyMGM0
Li4zZDBhZTExYzEwMzllMzQ4NGUwZWRmNzAwOTc3N2JmMmViZjliZGE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2JVUkwuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDU3NWYwZTc2ZDA5YTlkM2U1N2YyNThhZWNiZWYzMWYz
NjBhNDhkZjAuLmRhMmU4YmNhMzUyY2EzZmM3ZWM3Y2I0NTYyZDc5YmJiNzI4YmYwNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5oCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgVVJMOwotCiBjbGFzcyBGaWxlIGZpbmFsIDogcHVibGljIEJsb2IgewogcHVibGlj
OgogICAgIHN0cnVjdCBQcm9wZXJ0eUJhZyA6IEJsb2JQcm9wZXJ0eUJhZyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCmluZGV4IGYzZGM2YzQ3OGM5ODAwNGE3YjEz
NDBjMzI5ZWQ2ODgwOGI3MjE4ZjAuLjFmNzc3OGU4ODllMzkzZDdmYjk2OTQ0M2NlOGViZTIxMjc0
ZDRhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCkBAIC0z
Miw3ICszMiw3IEBACiAKICNpbmNsdWRlICJCbG9iUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRl
ICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IDQyNDZkN2VlYTBiMGU3M2I1MDlmYmM4
MGQyNDFlMWNmZjk2MjA5YzIuLmE5Yzc5ZmUyMjkyZjg5NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5oCkBAIC0zNiw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2JQ
YXJ0OwotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCmluZGV4IGUw
YmU1NzFhMjkwNjgzMjViYTE3ZWNmM2ViZGZlYjg2YjZiZDgxOTguLjI5OGY3ODI4MzFhNjk2OTg2
MzhmYzU5MmQyZjYzMDU0NjNhMzA0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRE9NV2luZG93
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNj
cmlwdENhY2hlZEZyYW1lRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCmluZGV4IGU3MmI1ODkzOTQ5ODFlY2VjNDEwN2Y2ZDYy
Yjc3YzlkNzQzODM1MWQuLjIwYTM5NzMzZjg1MzNhOTAzNGU2NTZiYTdmN2FiMGEwNTQ4MmY0YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTU0LDcgKzU0LDYgQEAgY2xh
c3MgRm9ybURhdGE7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEltYWdlOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQcnVuaW5nUmVhc29uOwogCiBX
RUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCAoKm5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCkoSGlz
dG9yeUl0ZW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAppbmRleCBhNzdiY2Q3MDcyM2YzY2Y5Y2Ex
MTY4MmU0NDZlZGZlODdkODEzOGY4Li4wYTA4YjU5NDY4NjU3MzJmMjhkYTMwZmI3ZjYzY2E0ZDMx
NGVhOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxET01VUkw+PiBET01VUkw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
RE9NVVJMJiBiYXNlKQogCiBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9NVVJMOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgVVJMIGJhc2VVUkwgeyBibGFua1VSTCgpIH07Cisg
ICAgVVJMIGJhc2VVUkwgeyBXVEY6OmJsYW5rVVJMKCkgfTsKICAgICBVUkwgY29tcGxldGVVUkwg
eyBiYXNlVVJMLCB1cmwgfTsKICAgICBpZiAoIWNvbXBsZXRlVVJMLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKaW5kZXgg
NTkwMjVjMmZiOTZmMDI5OWFkOTE3ZTYxN2IyOTExYzMxYWI5MWQzNC4uZDMxM2Q3YTQ0NGQ4ZWE1
NTM0ZjAwM2Y0NDUwZmRkYTBkNDYzNTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCkBAIC0yNyw3ICsy
Nyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFV0aWxzLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAKaW5kZXggOWI5OWEzNDczMDk3MmQ0ZGQ3OTljMDgxYTBmOThmNjM3N2FiNWFk
MC4uMzA0OGI0OTBmYTUzZjNmZDQxNTFlMDIxMDQzNmM2NGZhOTQ3MTQ3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKQEAgLTM3LDggKzM3LDggQEAK
ICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6
aXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYgY29tcGxldGVVUkwpIGNvbnN0CiAgICAgaWYgKGNvbXBs
ZXRlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocHJvdG9j
b2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29tcGxldGVVUkwpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gY29udGVu
dERvYyA9IHRoaXMtPmNvbnRlbnREb2N1bWVudCgpOwogICAgICAgICBpZiAoY29udGVudERvYyAm
JiAhU2NyaXB0Q29udHJvbGxlcjo6Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4oY29udGVudERv
Yy0+ZnJhbWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Om9wZW5VUkwoTG9ja0hpc3RvcnkgbG9ja0hpc3Rv
cnksIExvY2tCYWNrRm9yd2FyZExpc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fVVJM
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9VUkwgPSBibGFua1VSTCgpLnN0cmluZygpOworICAgICAg
ICBtX1VSTCA9IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKTsKIAogICAgIFJlZlB0cjxGcmFtZT4g
cGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFwYXJlbnRGcmFtZSkK
QEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlv
bihjb25zdCBTdHJpbmcmIHN0cikKIAogdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TG9j
YXRpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG5ld0xvY2F0aW9uKQog
ewotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMobmV3TG9jYXRpb24pKSkgeworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2Ny
aXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhuZXdMb2NhdGlvbikpKSB7CiAg
ICAgICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0
ZSwgY29udGVudERvY3VtZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMjMyYjNkY2IzMDMxODg5ZGM4MjZm
OTg3ZDJiZDZmYjA4NzU4ZTliNS4uYjFjY2Q3NTU3NTAwZmExYWI3NjBlMTI0MDAyM2EzYTllZmE2
ZDM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0
LDYgQEAgY2xhc3MgSWNvbjsKIGNsYXNzIElucHV0VHlwZTsKIGNsYXNzIExpc3RBdHRyaWJ1dGVU
YXJnZXRPYnNlcnZlcjsKIGNsYXNzIFJhZGlvQnV0dG9uR3JvdXBzOwotY2xhc3MgVVJMOwogCiBz
dHJ1Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmgKaW5kZXggNTEwZjRjZmI2MzZkOWRhMTFlMjU4ZjllZTNhNDJmZWQ2ZWZkMzZj
ZC4uNjgyOGY5MzQzYjU3MjQwOTVkYjYwMjE3NDI2ODc2NTQwNzBjZGY4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRE9NVG9rZW5MaXN0OwogY2xhc3MgSFRNTExpbmtFbGVtZW50OwotY2xh
c3MgVVJMOwogc3RydWN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjbGFzcyBFdmVudFNlbmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IDljMDliMDk0ODM5OTU1MTE1ODNkYjUxMjVkM2VjN2M3MzRjZGM2MGIu
Ljc3ZDBjYmZiN2Q0ODA0YjcyMWIyM2Q0NDNlMDdiMDc2ZmM0NjliNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTY4LDggKzE2OCw4IEBACiAKIG5hbWVz
cGFjZSBXVEYgewogdGVtcGxhdGUgPD4KLXN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpVUkw+
IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQor
c3RydWN0IExvZ0FyZ3VtZW50PFVSTD4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29u
c3QgVVJMJiB1cmwpCiAgICAgewogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gNTEyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggMzIxM2M0NGFk
YmYyOGYyNzBiNTI2MGRjYTEzMDU1ZGU4YWE0M2Q5Yi4uOWU1YzI3Nzc3ZDY5M2U0ZjY0YmVmMWI3
MzEyNTgzOTVjNGFkMjMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojppc0ltYWdlVHlwZSgpCiBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFsbG93
ZWRUb0xvYWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVUkwgY29tcGxldGVV
UkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7Ci0gICAgaWYgKGNvbnRlbnRGcmFtZSgp
ICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKSAmJiAhZG9jdW1lbnQoKS5zZWN1
cml0eU9yaWdpbigpLmNhbkFjY2Vzcyhjb250ZW50RG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSkpCisgICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQo
Y29tcGxldGVVUkwpICYmICFkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzKGNv
bnRlbnREb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJldHVybiBkb2N1bWVudCgpLmZyYW1lKCktPmlzVVJMQWxsb3dlZChjb21wbGV0ZVVS
TCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKaW5kZXggMjdhNDg5ZDRmNjU3YjZlNjlk
YzRlOTlmOWQ0ZGM5YjY5ZDdiY2M3Ny4uMTIwMGI4NzgxNjQ2ZjYxYTZmNzBjNDZiOTliY2M4ZWZj
ZjY1YWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaApAQCAtNDQsNyArNDQsNiBAQCBj
bGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFBlbmRpbmdJbWFnZUJpdG1hcDsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgSW1hZ2VC
aXRtYXBPcHRpb25zOwogCiBjbGFzcyBJbWFnZUJpdG1hcCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUsIHB1YmxpYyBSZWZDb3VudGVkPEltYWdlQml0bWFwPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCmluZGV4IDdjNzczNmMzNGViY2Y2NGQ5NDU2MDNk
Y2Q4NjM5MzllOGRiMzdlNGMuLjEwYTJhMGQwZjUyMjRiMDUwYWQ1YzdmNGQxZDY1NmFmZWU4M2M3
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCkBA
IC0yNywxNCArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsK
LQogY2xhc3MgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBmaW5hbCB7CiBwdWJsaWM6CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAppbmRleCBjZjE4NmMwYmE0MDBl
MmEzYzIzMDRjYzc5ZmZhZGJhOGFmM2FhMzYxLi43M2I1NDczNTc4ZTNiMGIzMWVhZjk1ZGE0MGMy
MGFjMDk5YzA3MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlB1Ymxp
Y1VSTE1hbmFnZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKaW5kZXggZTMyNjU0NWRjY2I0
OWJmYTZjNWFmZjkyM2EyYzVlMGMwZmE3NzVhNC4uZTY5ZGU0ZWQ4YzgzYmI4YThkYzRkMzY2ODYy
MmNkM2ZkZDUzN2U3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKQEAg
LTMzLDcgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBV
UkxSZWdpc3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcAppbmRleCA2Y2EwYWMx
YTIwMTNjZjZkNWQ4ZGM1YzBlYTAzYjIxMTc5MmYxOTVlLi42M2JiM2NjMjYwMWEwNDNkMTQ5YzQ1
YTI5ZWMxOGRhMTQwYjVhZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUg
IklucHV0VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKaW5kZXggYmQ3NzJjZTVmMTdhNmI4N2RjMmY0NjI1
YjcxYmUwMTEwM2MzNzc0My4uODIyM2JiZDA3NTkwZGRhY2NlOWZkMTYwNGUzYWMwYmMwMTVmNjRh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaApAQCAtMzQsNyArMzQsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xh
c3MgVVJMUmVnaXN0cnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2Vh
cmNoUGFyYW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcApp
bmRleCAzMGU4NTkyNGE3ODUyMGQ2NTkyMDkxYWQyZDMzYzA0MjBjZmVkZDQzLi40ZTdmYmFlZmRm
MGE0MTZjYzY1NGFhNzNkNTliN2JlODBiNDFkMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxT
ZWFyY2hQYXJhbXMuY3BwCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpbmNsdWRlICJVUkxTZWFyY2hQ
YXJhbXMuaCIKIAogI2luY2x1ZGUgIkRPTVVSTC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgor
I2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBVUkxT
ZWFyY2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhjb25zdCBTdHJpbmcmIGluaXQsIERPTVVSTCog
YXNzb2NpYXRlZFVSTCkKICAgICA6IG1fYXNzb2NpYXRlZFVSTChhc3NvY2lhdGVkVVJMKQotICAg
ICwgbV9wYWlycyhpbml0LnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNv
ZGVkRm9ybShTdHJpbmdWaWV3KGluaXQpLnN1YnN0cmluZygxKSkgOiBVUkxQYXJzZXI6OnBhcnNl
VVJMRW5jb2RlZEZvcm0oaW5pdCkpCisgICAgLCBtX3BhaXJzKGluaXQuc3RhcnRzV2l0aCgnPycp
ID8gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhpbml0KS5z
dWJzdHJpbmcoMSkpIDogV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oaW5pdCkp
CiB7CiB9CiAKQEAgLTEzMywyMCArMTMzLDIwIEBAIHZvaWQgVVJMU2VhcmNoUGFyYW1zOjpyZW1v
dmUoY29uc3QgU3RyaW5nJiBuYW1lKQogCiBTdHJpbmcgVVJMU2VhcmNoUGFyYW1zOjp0b1N0cmlu
ZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOwor
ICAgIHJldHVybiBXVEY6OlVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOwogfQogCiB2b2lk
IFVSTFNlYXJjaFBhcmFtczo6dXBkYXRlVVJMKCkKIHsKICAgICBpZiAobV9hc3NvY2lhdGVkVVJM
KQotICAgICAgICBtX2Fzc29jaWF0ZWRVUkwtPnNldFF1ZXJ5KFVSTFBhcnNlcjo6c2VyaWFsaXpl
KG1fcGFpcnMpKTsKKyAgICAgICAgbV9hc3NvY2lhdGVkVVJMLT5zZXRRdWVyeShXVEY6OlVSTFBh
cnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpKTsKIH0KIAogdm9pZCBVUkxTZWFyY2hQYXJhbXM6OnVw
ZGF0ZUZyb21Bc3NvY2lhdGVkVVJMKCkKIHsKICAgICBBU1NFUlQobV9hc3NvY2lhdGVkVVJMKTsK
ICAgICBTdHJpbmcgc2VhcmNoID0gbV9hc3NvY2lhdGVkVVJMLT5zZWFyY2goKTsKLSAgICBtX3Bh
aXJzID0gc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVk
Rm9ybShTdHJpbmdWaWV3KHNlYXJjaCkuc3Vic3RyaW5nKDEpKSA6IFVSTFBhcnNlcjo6cGFyc2VV
UkxFbmNvZGVkRm9ybShzZWFyY2gpOworICAgIG1fcGFpcnMgPSBzZWFyY2guc3RhcnRzV2l0aCgn
PycpID8gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhzZWFy
Y2gpLnN1YnN0cmluZygxKSkgOiBXVEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShz
ZWFyY2gpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3Ry
aW5nPj4gVVJMU2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4dCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxz
LmgKaW5kZXggYTA3YzA4MTRmMTFlMTcxMTg0NTAzZTZhYTZhYWFkNmMwNDdkNDc1YS4uNjU2YWJm
YmRhMGJkYmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMu
aApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICAgICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8g
IjAiIGlmIGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCiAgICAgICAgICAgICB1cmwuc2V0SG9z
dEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgJzAnKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9y
dCwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgICAgICAgICB1cmwuc2V0
SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmco
MCwgcG9ydEVuZCkpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBv
cnQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0
IHRvICIwIiBpZiBpdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nLgogICAgIC8vIEZJWE1FOiBodHRw
Oi8vdXJsLnNwZWMud2hhdHdnLm9yZy8gZG9lc24ndCBhcHBlYXIgdG8gcmVxdWlyZSB0aGlzOyB0
ZXN0IHdoYXQgYnJvd3NlcnMgZG8KICAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50KCk7
Ci0gICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkp
CisgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2Nv
bCgpKSkKICAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKICAgICBlbHNlCiAgICAgICAgIHVybC5z
ZXRQb3J0KHBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBjMzQ2MTAyMTVlNTY5ZmU3YWExMTljYTUyMTZh
N2Q4M2UxNTU2MjI5Li5kNzcyM2VkZGVkZmFjODVhZWQ5ODNjNWE1NDFkNGMwMDIyZDM1Zjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCaXRtYXAuaCIKICNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDgxY2I1NWQ3N2UzMTgwNTY0NDcw
Nzc3N2ExZTI5OTU2ZjQ0M2Y2NTguLjk4ZWM0NjJlZmViMzk1YjlhN2U5YzM5OTcwMThlYWFkNWVm
N2ZjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7
CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNz
IEltYWdlQml0bWFwOwotY2xhc3MgVVJMOwogY2xhc3MgV2ViR0xPYmplY3Q7CiAKIGNsYXNzIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggNjc0ZGVi
YzY5OGRiOWI3MDAyZWI0MDUyMzM1YjllNmRiODFiNjRhMy4uNDIzMDkyNjhlOWJkZDA5NWFjOWJm
MTZhZDlmNzMzMmEzNzFjZDViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkRlY2lt
YWwuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggNzE5MjhjN2NlYThl
MTRmMDQ0ZGU0OWY5ZDAxMzg0NzMwYWFhMmNlYi4uNjEwNGJlMzkyYmNlMzFjNjNjYTFlZjI0YWUx
MmVlYjEzMTk1NWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNT
QXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5j
cHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgYm9vbCBpc1NlbWljb2xvblNlcGFyYXRlZEF0
dHJpYnV0ZShjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlKQogc3RhdGljIGJv
b2wgc2VtaWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoU3RyaW5nVmll
dyBzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZSkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBzZW1p
Y29sb25TZXBhcmF0ZWRWYWx1ZS5zcGxpdCgnOycpKSB7Ci0gICAgICAgIGlmIChwcm90b2NvbElz
SmF2YVNjcmlwdCh2YWx1ZSkpCisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0
KHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CkBAIC00NDYsOSArNDQ2LDkgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tl
bihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJsb2Nr
U2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKG1fd2FzU2NyaXB0VGFnRm91bmRJblJlcXVlc3QpIHsK
LSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVl
c3QsIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlr
ZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJ
bmplY3RlZChyZXF1ZXN0LCBTVkdOYW1lczo6aHJlZkF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCks
IFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2Ny
aXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBYTGlua05hbWVzOjpocmVm
QXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmli
dXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHJlcXVlc3QsIHNyY0F0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0
eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VB
dHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIFNWR05hbWVzOjpocmVmQXR0ciwgV1RGOjpibGFu
a1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAg
ICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwg
WExpbmtOYW1lczo6aHJlZkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlv
blN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKICAgICB9CiAKICAgICByZXR1cm4gZGlkQmxvY2tT
Y3JpcHQ7CkBAIC00NjEsNyArNDYxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RU
b2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJs
b2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29udGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNh
bGl6ZWRTbmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsKLSAgICAgICAgZGlkQmxvY2tTY3Jp
cHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGRhdGFBdHRyLCBibGFua1VS
TCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAg
ICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZGF0
YUF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtl
QXR0cmlidXRlKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZklu
amVjdGVkKHJlcXVlc3QsIHR5cGVBdHRyKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGNsYXNzaWRBdHRyKTsKICAgICB9CkBAIC00
ODEsNyArNDgxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKGNvbnN0IEZp
bHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBpZiAoIUhUTUxQYXJhbUVsZW1lbnQ6Omlz
VVJMUGFyYW1ldGVyKFN0cmluZyhuYW1lQXR0cmlidXRlLnZhbHVlKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwg
dmFsdWVBdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VB
dHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwg
dmFsdWVBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3Jj
TGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihj
b25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC00OTIsNyArNDkyLDcgQEAgYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYg
cmVxdWVzdCkKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29u
dGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRTbmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkp
IHsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJl
cXVlc3QsIGNvZGVBdHRyLCBTdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmli
dXRlKTsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHJlcXVlc3QsIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6
U3JjTGlrZUF0dHJpYnV0ZSk7CisgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmli
dXRlSWZJbmplY3RlZChyZXF1ZXN0LCBzcmNBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCks
IFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiAgICAgICAgIGRpZEJsb2NrU2Ny
aXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCB0eXBlQXR0cik7CiAgICAg
fQogICAgIHJldHVybiBkaWRCbG9ja1NjcmlwdDsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIFhT
U0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVl
c3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRU
YWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGZvcm1UYWcpKTsKIAotICAg
IHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgYWN0aW9uQXR0ciwgYmxh
bmtVUkwoKS5zdHJpbmcoKSk7CisgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChy
ZXF1ZXN0LCBhY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiBib29s
IFhTU0F1ZGl0b3I6OmZpbHRlcklucHV0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiBy
ZXF1ZXN0KQpAQCAtNTUyLDcgKzU1Miw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVySW5wdXRU
b2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVl
c3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNO
YW1lKHJlcXVlc3QudG9rZW4sIGlucHV0VGFnKSk7CiAKLSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1
dGVJZkluamVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBibGFua1VSTCgpLnN0cmluZygp
LCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0
dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZm9ybWFjdGlvbkF0dHIsIFdURjo6YmxhbmtVUkwo
KS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKIH0KIAogYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3Qm
IHJlcXVlc3QpCkBAIC01NjAsNyArNTYwLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0
b25Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJl
cXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVCho
YXNOYW1lKHJlcXVlc3QudG9rZW4sIGJ1dHRvblRhZykpOwogCi0gICAgcmV0dXJuIGVyYXNlQXR0
cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBmb3JtYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJp
bmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICByZXR1cm4gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBXVEY6OmJsYW5r
VVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAK
IGJvb2wgWFNTQXVkaXRvcjo6ZXJhc2VEYW5nZXJvdXNBdHRyaWJ1dGVzSWZJbmplY3RlZChjb25z
dCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC01NzMsNyArNTczLDcgQEAgYm9vbCBY
U1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRl
clRva2VuUmVxdWVzdCYgcmUKICAgICAgICAgYm9vbCBpc0lubGluZUV2ZW50SGFuZGxlciA9IGlz
TmFtZU9mSW5saW5lRXZlbnRIYW5kbGVyKGF0dHJpYnV0ZS5uYW1lKTsKICAgICAgICAgLy8gRklY
TUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBkaWRuJ3QgY3JlYXRlIGEgbmV3IFN0cmluZyBm
b3IgZXZlcnkgYXR0cmlidXRlIGluIHRoZSBkb2N1bWVudC4KICAgICAgICAgU3RyaW5nIHN0cmlw
cGVkVmFsdWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5nKGF0dHJp
YnV0ZS52YWx1ZSkpOwotICAgICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0g
KCFpc0lubGluZUV2ZW50SGFuZGxlciAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcHBlZFZh
bHVlKSkgfHwgKGlzU2VtaWNvbG9uU2VwYXJhdGVkQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgc2Vt
aWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoc3RyaXBwZWRWYWx1ZSkp
OworICAgICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lubGluZUV2
ZW50SGFuZGxlciAmJiBXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwcGVkVmFsdWUpKSB8
fCAoaXNTZW1pY29sb25TZXBhcmF0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlKSAmJiBzZW1pY29sb25T
ZXBhcmF0ZWRWYWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTChzdHJpcHBlZFZhbHVlKSk7CiAgICAg
ICAgIGlmICghaXNJbmxpbmVFdmVudEhhbmRsZXIgJiYgIXZhbHVlQ29udGFpbnNKYXZhU2NyaXB0
VVJMKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghaXNDb250YWluZWRJblJl
cXVlc3QoY2Fub25pY2FsaXplKHNuaXBwZXRGcm9tQXR0cmlidXRlKHJlcXVlc3QsIGF0dHJpYnV0
ZSksIFRydW5jYXRpb25TdHlsZTo6U2NyaXB0TGlrZUF0dHJpYnV0ZSkpKQpAQCAtNzI3LDcgKzcy
Nyw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5n
JiB1cmwpCiAgICAgLy8gR2l2ZSBlbXB0eSBVUkxzIGFuZCBhYm91dDpibGFuayBhIHBhc3MuIE1h
a2luZyBhIHJlc291cmNlVVJMIGZyb20gYW4KICAgICAvLyBlbXB0eSBzdHJpbmcgYmVsb3cgd2ls
bCBsaWtlbHkgbGF0ZXIgZmFpbCB0aGUgIm5vIHF1ZXJ5IGFyZ3MgdGVzdCIgYXMKICAgICAvLyBp
dCBpbmhlcml0cyB0aGUgZG9jdW1lbnQncyBxdWVyeSBhcmdzLgotICAgIGlmICh1cmwuaXNFbXB0
eSgpIHx8IHVybCA9PSBibGFua1VSTCgpLnN0cmluZygpKQorICAgIGlmICh1cmwuaXNFbXB0eSgp
IHx8IHVybCA9PSBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgLy8gSWYgdGhlIHJlc291cmNlIGlzIGxvYWRlZCBmcm9tIHRoZSBzYW1lIGhvc3Qg
YXMgdGhlIGVuY2xvc2luZyBwYWdlLCBpdCdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmgKaW5kZXggZGM4MmFkZDdjN2Y1YmRkYTNjYWI1MzRkZmFhMTA5YmZkMTkwYmMyNy4u
MTJlYzk4YzA5MmZmNjUwNGNkZTUzZmZmOTM2ODFlMDI1MTEwMDUxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAi
SFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU3VmZml4VHJlZS5oIgogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3JEZWxlZ2F0ZS5oCmluZGV4IDY3YTMyZWQ5MzBkN2Q5ZGQ0ZGFjNDA4OTIyMGJkZjNmMmFk
NzZlODcuLjYwNTE1OWIyZmFmYTRjZjg3MWFlNjU2ZjEwYWY0M2YwMDFlOTNmYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCkBAIC0yNiw3
ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCmluZGV4IGM3MzRkYTJiZWFlMTM4NDUyN2Q3NzJhZTliZTE4YjM3ZjU0
NDVjOGIuLjI2YWI2ZGY5NTI0YTRlNjk4MTQ4ODE1MjVlZGM4N2Y2NjA4NmI4NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBA
IC0zMTEsNyArMzExLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmtpbGxUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzaG91bGRQcmVwZW5kVG9LaWwKIAogdm9pZCBJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBp
ZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAoV1RGOjpwcm90
b2NvbElzSmF2YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9jbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKaW5kZXggZGRlMjEyMmNjZWQwMGE4ZTMyMGNmNDQwOThmYWQwNjY1NzY0Nzk3MC4u
OGMzNzJmYWFmN2VkOGVlZDM5OGI1YTZjZDdlNTRmYThmNmVlYzQ4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtODgs
NyArODgsNiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgVGltZXJCYXNlOwotY2xhc3MgVVJMOwog
I2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwCmluZGV4IDMzMzEwNzgxY2FhYjViNTE1MmQ2MWZjNTY2NjhhNDljYzM1MjQ0YzYuLjdj
Njc0NDYxMjA1NzA3OThjYWZkNzgwMTVmYWQ5OWQ2MDg3MzE0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKQEAgLTY2LDcgKzY2LDcgQEAKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRl
ICJXZWJTb2NrZXRGcmFtZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggNjRkMGUwNDU4MDI1OTVmZjMw
NWM5YTM2YzExMjJkMTY2NDM3OGM5NC4uYjY4NTkwZjFiODQwODgyODRhOGE1NWZjNzVkMGU1NTlk
NDkwOWJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXZWJTb2NrZXQ7
CiAKIHN0cnVjdCBXZWJTb2NrZXRGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDY3MDlmNTJiZTAzNDMyYjJj
NTVlYjk0NzFiYzRjMGRiMjVkMDg2YzcuLjcyZjYzYmQ4OTYyNWI2MjY5Y2JmN2E2M2YxMjUyMTVm
NDE1NzViNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBJbnNwZWN0b3JPdmVy
bGF5OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKLWNsYXNzIFVSTDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aAppbmRleCA3Mjg4Y2ZmZTRjZjJlOGZlYmViMGM2MTBkNDZiN2VjYWZiYzY1ZjRkLi41ZTA0MGM5
NTRkNGI1MTRhMTQ5MDNjMDcyMDcwYmVjZGUwNjBjYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC0zNCw3
ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBVUkw7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaAppbmRleCA4YjY0MzFhYjQyMmYyY2I2
Yzk0OGQ4Y2Y4ZWJiNTUxMTcxMTdkZGJhLi4xYjBmNzYwZDJlY2ViZDVjMjhlZjVjMmVjNDJlZGEx
MmYwM2YzYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25N
YW5pZmVzdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1h
bmlmZXN0TG9hZGVyLmgKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbk1h
bmlmZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5kZXggNWZhNzA1ZDhhODVmZjE1ODY4
OTA2NWZjOGJjZDg4YjNmYzk4YjRlNC4uYjliOWYzNzQ5NzQzZWQ0OGY3MzhhM2ZkOGU3MmE2OWE0
ZDAwOWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtMzEsNyArMzEsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFVSTDsKIHN0cnVj
dCBDb29raWU7CiBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAppbmRleCBk
MmIwOWJkNWRiNTY3NmMwMWFiZjgyM2QzZjA3MjJhNzcwZWE1NDBiLi4yYWYzZDRhMWM1MjA5MTI5
M2RlMWM0ODNhMmZjMTczYWM2NmVhMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oCmluZGV4IGRjMDcxMzBhMWIxNDY1M2JkMWRmNWJl
ZWU5ODgwOWUzYjcyZWZiZTMuLjk2NWRlNmY4YTA3YmRjNzhjMDhlMGYxYzJlNzIxOWUxZWRhNDA0
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuaApAQCAtMjcsOSArMjcsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IDY2ZmQ2YTg2YTg0NWFkNGRmMWIwZTA1YmNhZDc1YzIwMzIzNDgxY2EuLmRhNmIy
YWJlMTEzOGQ4ZjQxYTMwYWJjN2QxOTc2NGI4ODdmNmQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjCiAgICAgICAgIHN3aXRjaCAoc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY2Fz
ZSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbjoKICAgICAgICAgICAgIC8vIFdlIGhhbmRs
ZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2gg
bGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sgdG8gcmVzdW1lLgotICAgICAgICAgICAg
cmVxdWVzdCA9IHsgYmxhbmtVUkwoKSB9OworICAgICAgICAgICAgcmVxdWVzdCA9IHsgV1RGOjpi
bGFua1VSTCgpIH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTaG91bGRDb250
aW51ZTo6Tm86CiAgICAgICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwpAQCAt
MTY2Nyw3ICsxNjY3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9yZXF1ZXN0LnVybCgpLmlzRW1wdHko
KSAmJiAhZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlE
b2N1bWVudCgpKSB7Ci0gICAgICAgIG1fcmVxdWVzdC5zZXRVUkwoYmxhbmtVUkwoKSk7CisgICAg
ICAgIG1fcmVxdWVzdC5zZXRVUkwoV1RGOjpibGFua1VSTCgpKTsKICAgICAgICAgaWYgKGlzTG9h
ZGluZ01haW5SZXNvdXJjZSgpKQogICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCku
ZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYWM5NDhjY2RhZGQwYWExYzVlMWJlN2EwMWVhMTYw
OTAxYzFmYTM3NC4uZTlmNTAzY2M2ZjYzNGVlMTAzNjdhZGE3ODdkMTY2MjEwNmMxMmI0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTIzNCw3ICsyMzQsNyBAQCBj
bGFzcyBEb2N1bWVudExvYWRlcgogICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdERlc3RpbmF0aW9u
Rm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHVybEZvckhpc3RvcnkoKTsgfQogICAgIHZvaWQg
c2V0Q2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KGNvbnN0IFN0cmluZyYgY2xpZW50UmVk
aXJlY3RTb3VyY2VGb3JIaXN0b3J5KSB7IG1fY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
ID0gY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OyB9CiAgICAgCi0gICAgU3RyaW5nIHNl
cnZlclJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuICh1cmxGb3JIaXN0
b3J5KCkgPT0gdXJsKCkgfHwgdXJsKCkgPT0gYmxhbmtVUkwoKSkgPyBTdHJpbmcoKSA6IHVybEZv
ckhpc3RvcnkoKS5zdHJpbmcoKTsgfSAvLyBudWxsIGlmIG5vIHNlcnZlciByZWRpcmVjdCBvY2N1
cnJlZC4KKyAgICBTdHJpbmcgc2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gKHVybEZvckhpc3RvcnkoKSA9PSB1cmwoKSB8fCB1cmwoKSA9PSBXVEY6OmJsYW5r
VVJMKCkpID8gU3RyaW5nKCkgOiB1cmxGb3JIaXN0b3J5KCkuc3RyaW5nKCk7IH0gLy8gbnVsbCBp
ZiBubyBzZXJ2ZXIgcmVkaXJlY3Qgb2NjdXJyZWQuCiAgICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0
RGVzdGluYXRpb25Gb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gdXJsKCk7IH0KIAogICAgIGJv
b2wgZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWRDcmVh
dGVHbG9iYWxIaXN0b3J5RW50cnk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmgKaW5kZXggMzg1ZmI2NDA3YmE0MTliYmI4NjY3Y2JjNTA5OTdjMWIwZDRiZjIxNC4uMzA0OGM1
OWU1NzUxMzdkODVlMGE5OWNlOTJjNTBlM2RlN2JhZjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zv
cm1TdWJtaXNzaW9uLmgKaW5kZXggNGNkZjQ4Yjc3YzZkMDVlMmU2NTU3OWE0MzIxNDgzMDhkODQ4
ZWJjOS4uZjlhY2NmMTcyMTViYjA2YTZmODk2NmNmMDIxNzk5YmVkNThlM2QxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1
ZGUgIkZvcm1TdGF0ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYjNhZTZhYjBlM2Q0OWEwZGI2
MTM3NWEzYzdkY2ZkMjgyMDQ0NDhkMi4uOWQwMjk3YjFiNDc1N2QyOGIzMDNhYzBiZDM4NmY5YzYz
Mjc1MDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00MjEsNyAr
NDIxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShSZWY8Rm9ybVN1Ym1pc3Npb24+
JiYgc3VibWlzc2lvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwcm90b2Nv
bElzSmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKKyAgICBpZiAoV1RGOjpwcm90
b2NvbElzSmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKICAgICAgICAgaWYgKCFt
X2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Zvcm1BY3Rp
b24oVVJMKHN1Ym1pc3Npb24tPmFjdGlvbigpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7CkBAIC02OTksNyAr
Njk5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIGlmICgh
cGFyc2VIVFRQUmVmcmVzaChkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6UmVmcmVzaCksIGRlbGF5LCB1cmxTdHJpbmcpKQogICAgICAgICBy
ZXR1cm47CiAgICAgYXV0byBjb21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gZG9j
dW1lbnQudXJsKCkgOiBkb2N1bWVudC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwotICAgIGlmICgh
cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICBpZiAoIVdURjo6cHJvdG9j
b2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKICAgICAgICAgbV9mcmFtZS5uYXZpZ2F0aW9u
U2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkb2N1bWVudCwgZGVsYXksIGNvbXBsZXRlZFVS
TCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJl
c2ggIiArIGRvY3VtZW50LnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsg
IiB0byBhIGphdmFzY3JpcHQ6IFVSTCI7CkBAIC0zMzU1LDcgKzMzNTUsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZQogCiAgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9uIGJ5IG5hdmln
YXRpbmcgZm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNldHVwIHRvIG5h
dmlnYXRlIGJhY2sgdG8gcmVzdW1lLgogICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hv
dWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXItPndpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KHsg
YmxhbmtVUkwoKSB9KTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+
d2lsbENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBXVEY6OmJsYW5rVVJM
KCkgfSk7CiAKICAgICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRp
bmdNYWluUmVzb3VyY2Uoc2hvdWxkQ29udGludWUpOwogICAgIH07CkBAIC0zOTA2LDcgKzM5MDYs
NyBAQCBSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyRnJhbWUsIEZyYW1l
JiBsb29rdXBGcmFtZSwgRnJhbWVMb2FkUmVxdQogICAgIGNyZWF0ZWQgPSBmYWxzZTsKIAogICAg
IC8vIEZJWE1FOiBQcm92aWRlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIHdpdGggcmVzcGVjdCB0
byB0aGUgb3BlbmVyJ3MgZG9jdW1lbnQuCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpICYmICFvcGVuZXJGcmFtZS5kb2N1bWVudCgp
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhvcGVuZXJGcmFt
ZS5kb2N1bWVudCgpLT51cmwoKSwgeyB9KSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNj
cmlwdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKSAmJiAhb3BlbmVyRnJhbWUuZG9j
dW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SmF2YVNjcmlwdFVSTHMob3Bl
bmVyRnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIHsgfSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSAmJiAhZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShyZXF1ZXN0LmZyYW1lTmFtZSgpLCAiX2JsYW5rIikpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMWI5MTFhMmI3ZDI5MjJiYTM2
Njk1ZDRkOTI2MzA0MGY1MGYyZmYzZi4uOTA0ZWQ5NjJmNzk3OTNjODNlY2I3ZDgxNWY0NTA2ZmZj
ODUwYTVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTEwMCw3ICsxMDAsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKLWNsYXNz
IFVSTDsKIGNsYXNzIFdpZGdldDsKIAogZW51bSBjbGFzcyBQb2xpY3lEZWNpc2lvbk1vZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA5ZmJhODM1
YTQ1NTI5ZWVjOTE5MDBjMmYzYjJlYjUwYjcxODg4NGQ4Li41MGJkMTM4ZjAyZTM0YjE0YTM5MTll
MzY3ZWQ3ODFiZGJjNzliYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29u
dHJvbGxlci5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpj
dXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdAogICAgIC8vICAiSWYgdGhlIGJyb3dz
aW5nIGNvbnRleHQncyBzZXNzaW9uIGhpc3RvcnkgY29udGFpbnMgb25seSBvbmUgRG9jdW1lbnQs
CiAgICAgLy8gICBhbmQgdGhhdCB3YXMgdGhlIGFib3V0OmJsYW5rIERvY3VtZW50IGNyZWF0ZWQg
d2hlbiB0aGUgYnJvd3NpbmcgY29udGV4dAogICAgIC8vICAgd2FzIGNyZWF0ZWQsIHRoZW4gdGhl
IG5hdmlnYXRpb24gbXVzdCBiZSBkb25lIHdpdGggcmVwbGFjZW1lbnQgZW5hYmxlZC4iCi0gICAg
cmV0dXJuIG1fY3VycmVudEl0ZW0gJiYgIW1fcHJldmlvdXNJdGVtICYmIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UobV9jdXJyZW50SXRlbS0+dXJsU3RyaW5nKCksIGJsYW5rVVJMKCkpOworICAgIHJl
dHVybiBtX2N1cnJlbnRJdGVtICYmICFtX3ByZXZpb3VzSXRlbSAmJiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG1fY3VycmVudEl0ZW0tPnVybFN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpOwogfQog
CiB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpjbGVhclByZXZpb3VzSXRlbSgpCkBAIC02NTQsOSAr
NjU0LDkgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0
ZW0mIGl0ZW0pCiAgICAgLy8gTGF0ZXIgd2UgbWF5IHdhbnQgdG8gbGVhcm4gdG8gbGl2ZSB3aXRo
IG5pbCBmb3IgVVJMLgogICAgIC8vIFNlZSBidWcgMzM2ODIzNiBhbmQgcmVsYXRlZCBidWdzIGZv
ciBtb3JlIGluZm9ybWF0aW9uLgogICAgIGlmICh1cmwuaXNFbXB0eSgpKSAKLSAgICAgICAgdXJs
ID0gYmxhbmtVUkwoKTsKKyAgICAgICAgdXJsID0gV1RGOjpibGFua1VSTCgpOwogICAgIGlmIChv
cmlnaW5hbFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIG9yaWdpbmFsVVJMID0gYmxhbmtVUkwoKTsK
KyAgICAgICAgb3JpZ2luYWxVUkwgPSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgCiAgICAgU3RyaW5n
V2l0aERpcmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCAwMWQxZWZjMzE1YTViMDJkMDY5OWU5YWM0NWRmZDEz
Njg3OGY0YWIxLi41NGQ3MjIzMTBkOGRmZjkyMWYxZTlkZTA1NDViZDllMWM2MjA5NDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBMaW5rUHJlbG9h
ZFJlc291cmNlQ2xpZW50OwogCiBzdHJ1Y3QgTGlua1JlbEF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZFRpbWluZy5oCmluZGV4IDczZjllZjk0YWZkNjI1NWQ1YTNmNTc0NTgyZDMwYTY0ZjIx
ZDE0NjQuLmZlYTdjNDFmY2U2MDI1MjZlMzZhYThlZGI2ZWFiNDY1Njk4NThjODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xvYWRUaW1pbmcuaApAQCAtMjUsMTMgKzI1LDEyIEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFVSTDsKLQogY2xhc3MgTG9hZFRpbWluZyB7CiBwdWJsaWM6CiAgICAgU2Vjb25kcyBz
ZWNvbmRzU2luY2VTdGFydFRpbWUoTW9ub3RvbmljVGltZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IDU5Njc4MmM2NTdjYWM1MDgyY2FmZTFjZTRiMWMx
NmZmYjlhNjhkNGQuLjI4NWU2ODA5Y2U0NWUyMjEyNDQ0NjlmZjk1NWFlNTVlZmRlYjUxNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC01MSw3ICs1MSw2IEBAIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3Qg
RmV0Y2hPcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRD
b250ZW50Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hl
Y2tlci5jcHAKaW5kZXggMDUwY2I3OWVhNjU3N2Q1M2EwMzM1MjA2YmQ0NjBlYTQ0NzNmMjM3Ny4u
ZmFkZTAxYjdjMWQwYmVjODQ2MzY3ZmY1YTYyN2Q5M2RmMWYwOWExNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBA
IHZvaWQgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JtRm9yTWl4ZWRDb250ZW50KFNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpCiB7CiAgICAgLy8gVW5jb25kaXRpb25hbGx5IGFsbG93
IGphdmFzY3JpcHQ6IFVSTHMgYXMgZm9ybSBhY3Rpb25zIGFzIHNvbWUgcGFnZXMgZG8gdGhpcyBh
bmQgaXQgZG9lcyBub3QgaW50cm9kdWNlCiAgICAgLy8gYSBtaXhlZCBjb250ZW50IGlzc3VlLgot
ICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29s
SXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaXNNaXhlZENv
bnRlbnQoc2VjdXJpdHlPcmlnaW4sIHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVk
Q29udGVudENoZWNrZXIuaAppbmRleCBhMjZhODU3OTdkM2E4Y2IwYzI5MzNkZjI0Nzc2YjY5NWI3
MGQ0NDM0Li41ZmRmZmY4MGEzMTg3NDM3MTgzODg5MGI1ZTI0MDRlYTAwOWYxMTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgKQEAgLTM3LDcgKzM3LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVy
Q2xpZW50OwotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIE1peGVk
Q29udGVudENoZWNrZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hl
ZHVsZXIuY3BwCmluZGV4IGE4ZjgwYmUxMzgyMDdkYzdhYTZjNmMxNDY5NzNkMGRiOWU0YjliMWMu
Ljg4ZTcwNTE2ZDZjZTkzZDM2ZWM4M2FiMmM4ZDQzYjdmYzQ1ZGEyMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTM2Niw3ICszNjYsNyBA
QCBpbmxpbmUgYm9vbCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzaG91bGRTY2hlZHVsZU5hdmlnYXRp
b24oY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmln
YXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChwcm90b2NvbElzSmF2YVNj
cmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBOYXZpZ2F0aW9uRGlzYWJsZXI6OmlzTmF2aWdh
dGlvbkFsbG93ZWQobV9mcmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuaAppbmRleCAwNDU5MzE4MTkxNzY0OWJiMjk4NzUzNTVlMzM4NzIwNzM1NDMy
MTk0Li42ZmJlMmE1YjNkYmM5NmZjYmQ0NTA5MjU1OTc4NGU4ZGQwY2Q2YjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAg
Y2xhc3MgRm9ybVN1Ym1pc3Npb247CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFNjaGVkdWxlZE5hdmln
YXRpb247CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgTmF2aWdh
dGlvblNjaGVkdWxlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUGluZ0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRl
eCAxNTQ4OWRjZjA0YmYxZGVkNzg4NmVmOGMwODYxN2RkYmMxM2Q5YTE4Li42ZGVlZjQ1MTY5YTll
NWNhMzBhOWYyZjgzMzQyMzc5ZDM5OWIxZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUGluZ0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVy
LmgKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9ybURhdGE7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiAKIGVudW0gY2xhc3MgVmlvbGF0aW9uUmVwb3J0VHlwZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaAppbmRleCA5YjYzMzBlZDQ3YmFjNjZk
ZWEyMmI4NGUxOWNmMWQwMGIwNmEyM2MxLi4xYzEyM2QwNmY3YWQ2NzUyMjlkNmM1ZTAxZjkyNTFh
NjhiMTYyMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKQEAg
LTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2Uu
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHAKaW5kZXggN2JkZmM0OGY1ZDQwNTliZTZhYjhiYjlhMjVlYjA4MzUwZTg5MDE5OS4uMTI3
MjNiMzQyY2I1YzI2NTJmM2UxNGFkNGFjM2MyZDFjNDBmNmZiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjIzLDcgKzIyMyw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoY29uc3QgU3RyaW5nJiBkb21haW5JCiAgICAgYXV0byBvcGVuZXJQcmltYXJ5RG9tYWluID0g
cHJpbWFyeURvbWFpbihvcGVuZXJVcmwpOwogICAgIGlmIChkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MgIT0gb3BlbmVyUHJpbWFyeURvbWFpbgogICAgICAgICAmJiAhb3BlbmVyRG9jdW1lbnQu
aGFzUmVxdWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24o
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKQotICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShvcGVuZXJVcmwuc3RyaW5nKCksIGJsYW5rVVJMKCkpKSB7CisgICAgICAgICYmICFl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG9wZW5lclVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgp
KSkgewogICAgICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyUHJpbWFyeURv
bWFpbik7CiAgICAgICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVz
dHMgc2luY2UgdGhleSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJE
b2N1bWVudC5zZXRIYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJ
bnRlcmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCBhZTJjYWUyNzgwOTE3NTU4M2Yy
ZWJiNDMzNjVhMTAxOWExNDcxMDg3Li4yYWJmYzUwMzM0YzE3ZDg5ZTJiNmZmYmRjMzhhMzgyYTFm
MTA2ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aApAQCAtNDcsNyArNDcsNiBAQCBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1j
bGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAppbmRleCBmOTRkNmZkMTll
Nzc0NmRmNWU2ODNhOTU3ZjBmZDk5YTc3MmQzMjFhLi4wODI0NjlkYTEyYTA0MGIzMThjNDJhZjNj
Njc0Y2Q4MGMwZmQ2ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmgKQEAgLTI2LDEwICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
V2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
CmluZGV4IDZiYTU1MjZjMGFmNTZlOTYyMzU2MWRiNDdjZDFiYWZmODEzMTk2Y2MuLmEwYjdkODQ5
ODUwMmIwZTcyMzdhZjFhMDFhMjFiNmJkN2E5NTg5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJh
bWVMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcmV2aWV3TG9hZGVy
OwotY2xhc3MgVVJMOwogCiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKaW5kZXggNmM5YWNiMTkzYTY3
MDIzYmI1ZGMzNmJhYzRkYTdlNzk4ODM0NDNiZS4uN2VmOGRiYzg1MTRkY2VjZmYxYjA3ZjQ1MDM3
MDM3ZjhlODg0ODgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
VGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKQEAg
LTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0xvYWRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiU2VydmVyVGltaW5nLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IDVkN2QzOGMzYjA3MjNiNzE4
NjA5YWQ4N2IxMGU3NTIxNjRkZTg3MzYuLjU1YTE2ODQ4MzFiZDAxZjZlMGM0YTYxZmM3Yjc3YmI1
NzdlZDg4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAt
NzcsMTQgKzc3LDE0IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJh
bWVPd25lckVsZW1lbnQmIG93bmVyRWxlbWVudCwgY29uc3QgU3RyCiAgICAgLy8gU3VwcG9ydCBm
b3IgPGZyYW1lIHNyYz0iamF2YXNjcmlwdDpzdHJpbmciPgogICAgIFVSTCBzY3JpcHRVUkw7CiAg
ICAgVVJMIHVybDsKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkgewor
ICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpIHsKICAgICAgICAg
c2NyaXB0VVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsgLy8gY29tcGxldGVVUkwoKSBlbmNv
ZGVzIHRoZSBVUkwuCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdU
Rjo6YmxhbmtVUkwoKTsKICAgICB9IGVsc2UKICAgICAgICAgdXJsID0gY29tcGxldGVVUkwodXJs
U3RyaW5nKTsKIAogICAgIGlmIChzaG91bGRDb252ZXJ0SW52YWxpZFVSTHNUb0JsYW5rKCkgJiYg
IXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9
IFdURjo6YmxhbmtVUkwoKTsKIAogICAgIGJvb2wgaGFzRXhpc3RpbmdGcmFtZSA9IG93bmVyRWxl
bWVudC5jb250ZW50RnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWUgPSBsb2FkT3JSZWRpcmVjdFN1
YmZyYW1lKG93bmVyRWxlbWVudCwgdXJsLCBmcmFtZU5hbWUsIGxvY2tIaXN0b3J5LCBsb2NrQmFj
a0ZvcndhcmRMaXN0KTsKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVx
dWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBTdHIK
ICAgICAvLyBJZiB3ZSBjcmVhdGUgYSBuZXcgc3ViZnJhbWUgdGhlbiBhbiBlbXB0eSBkb2N1bWVu
dCBpcyBsb2FkZWQgaW50byBpdCBzeW5jaHJvbm91c2x5IGFuZCBtYXkKICAgICAvLyBjYXVzZSBz
Y3JpcHQgZXhlY3V0aW9uIChzYXksIHZpYSBhIERPTSBsb2FkIGV2ZW50IGhhbmRsZXIpIHRoYXQg
Y2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcKICAgICAvLyBuYXZpZ2F0aW5nIHRoZSBzdWJmcmFt
ZS4gV2Ugb25seSB3YW50IHRvIGV2YWx1YXRlIHNjcmlwdFVSTCBpZiB0aGUgZnJhbWUgaGFzIG5v
dCBiZWVuIG5hdmlnYXRlZC4KLSAgICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGlu
Z0ZyYW1lIHx8IChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxVUkwoKSA9PSBibGFua1VSTCgpKTsKKyAg
ICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+b3JpZ2luYWxVUkwoKSA9PSBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGlmICghc2NyaXB0VVJM
LmlzRW1wdHkoKSAmJiBjYW5FeGVjdXRlU2NyaXB0ICYmIG93bmVyRWxlbWVudC5pc1VSTEFsbG93
ZWQoc2NyaXB0VVJMKSkKICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVJZkphdmFTY3Jp
cHRVUkwoc2NyaXB0VVJMKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YmZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaApp
bmRleCA0ODk2ZDYyZjQ1ZjFmODFkOTBkZTc0MDJlMjA5NzA0MWE2ZWIwNjRjLi4yY2FhZTljYTYw
OThhNzUzM2MzMDkzODk2ZGMyMDMxMjZlNjg5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
ZnJhbWVMb2FkZXIuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1l
bnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXaWRnZXQ7CiAKIC8vIFRoaXMg
aXMgYSBzbGlnaHQgbWlzbm9tZXIuIEl0IGhhbmRsZXMgdGhlIGhpZ2hlciBsZXZlbCBsb2dpYyBv
ZiBsb2FkaW5nIGJvdGggc3ViZnJhbWVzIGFuZCBwbHVnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3Vic3RpdHV0ZURhdGEuaAppbmRleCBmMTAxMzUxNTk3MTk4MTgyOWM2MTAxOTE3NTJiOTFhZjll
YzdmYjc1Li43MDU2MzIxMzNkZjhlZjg1NjU5ODUyODdlNDEwNjBiMWRiMzc5NDg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKaW5kZXggNWRmNWY2MDE3Y2U0YzAzYjc4OGJl
OThiZWI3YjZlMTdiYjA0MGI2ZS4uNjEzMTdiNTMxY2NjMWIwNjI5YjIxZGJmMGE2N2NjZmVlYTZj
ZjQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIAogdXNpbmcgRmFsbGJhY2tVUkxWZWN0
b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFVSTCwgVVJMPj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCBhYmFh
NzNlMTRhYjRiOGM3YWJhYjEwODhkZDhjMjM4ZTY5ZTJiNDFlLi40N2Q4OTM0YmE5OTE0YTVhNTZk
MTE0NmE3OTdlZGViODRkZjJkYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0yNywxMCArMjcsMTAgQEAK
IAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IGYyZmIxZjc4MzJi
Y2Q4MDQ2MmJjYWIwOGNlYmE3ZDEyNWI4NWEyNDMuLjBkMTMwYTQ1ZjhhZjNiNDk5MDQyMTA1Yjk2
MTAzOWZmNWZiZjM0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggODFjMjMyMWYzMzk5YzMwNDAzMzc3NmQ5MjZk
OGUzMDAzYjZlNDFhNS4uMDQwZDhiN2FkNmEwOTFlYjFjOWU0MzViNWUwYzM0MDFmOTNhZTI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiU1FMaXRl
VHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA0OGNiZjg4ZTVkODkwMzcxMTM2MTg5NWNh
MWMxMzJhNjQwYzdkOTA0Li42OGMzNjFlNTJiNDJkOTFkMzYxZTljYzgyOTBlZjM1YzM1MDE1MmI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZUhvc3Q7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBTdG9yYWdlSURKb3VybmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggY2I0ODE1ODVmNGEwZGMzNjg5YzhlODE1
ZTcwNmNhMjRjNDI2MDAxNS4uODQ0NjlmOGFkNGE5NGE4NDYyZTc2ZjNkOTEwYzMyZThiMTQxMjE5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJz
ZXIuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKIAog
I2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1
ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKaW5kZXggZTc4MTA4OTNhMjA2OTBhY2U2
M2FlYzNlYzg4ZTYwZWFmNjJmYzc4MC4uOGZlNDBhNjRlNDQ5MGFhYzgyN2E2MWRiMGY0MDQ3YzFl
ZTg2MGIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlm
ZXN0UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0
UGFyc2VyLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBVUkw7Ci0KIHN0cnVjdCBNYW5pZmVzdCB7CiAgICAgVmVjdG9yPFVSTD4gb25saW5lV2hpdGVs
aXN0ZWRVUkxzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBsaWNpdFVSTHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmgKaW5kZXggMzdkZjY4YjM2NmNmZjg1MzliOTVjODIzZjJlOTEyNGQzNWVhOTkzOC4uZTQ2
MGI2OWMyYWVkNWQyNzlkZDU0YTBkZjlhZjAxMGI5NGJjNzdmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24u
aApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmU7
CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCA2NDEyMjYyZTE1YjkxZjFhOWFlNTRhYzA1MTk1
MTZiNmNhNjViODFmLi5hMWQzN2M3MDI5ZjI5N2E0MWY2ODNmMDllNzg2NGE5ZGM4YjdiMDA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRl
ICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hl
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTEsNiArNTAsNyBAQAogI2luY2x1ZGUgIm1hcmt1
cC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTU2NCw3ICs1
NjQsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
RnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9j
dW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3Ro
ZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93
bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5v
XCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhl
aWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkt
PnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKLSAgICBhdXRvIGlm
cmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVN
YXJrdXApLCBibGFua1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOworICAg
IGF1dG8gaWZyYW1lUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVy
KGlmcmFtZU1hcmt1cCksIFdURjo6YmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFN0
cmluZygpKTsKIAogICAgIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJj
aGl2ZXM7CiAgICAgc3ViZnJhbWVBcmNoaXZlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXgg
NWUxZTNmMWQzY2QxNGE0NmEyNzQ5YTQ4YTE5MzljYTJkNjM4OGI0Yy4uOGY1ZGQyMDYxNzRmZjQ4
NmY0MTJjZWRmODEyYTk4MGRkNjNkYzUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC00NywxMSArNDcsMTEgQEAKICNpbmNsdWRlICJT
Y2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
U3VicmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggMDc3N2IxNzcyNGU5YjA1Y2VmNWVk
NTRhM2FlZmMxZDExNDY3ZjRkNy4uMTBmNjljNmExMDUyOWYxZmQ5MTFhMWQwNzRlZjAzMDljMGY1
Y2JiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVyOwogY2xhc3MgU2V0dGluZ3M7Ci1jbGFzcyBVUkw7
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdXNpbmcgUmVzb3VyY2VFcnJvck9yID0gRXhwZWN0
ZWQ8VCwgUmVzb3VyY2VFcnJvcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaAppbmRleCBkZjQ2YmUyZDM3N2U0YzFkZTE4MmFk
YWYxNGQ3MzlhMWY5N2NkYzAyLi4zOGJiMTk5OTAwODdjOGQ2NjYxZjM2YTM2NjlkNGM5YWUzMzQ4
MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVT
aGVldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHls
ZVNoZWV0Q2xpZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkU3R5
bGVTaGVldENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGQ3MTY3OThhNGNl
MWQ5N2Q2MWQzMTNlOTUxOGI3ZGMyMjY5ZjcwNWMuLjJmY2JkMzE5ODVhNDc1YTMwZmYxNzdmNjMy
OTQ2MjJmMDEyNTI5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5oCkBAIC00MSw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSAgewogCiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCmluZGV4IDZhYTU1Mzc0Zjc4YjY2NzdmNTcwOWEy
YmQ5ZGNiNzE0YzE4ZmZkZmEuLjM0YTBmMzJiNGY1ZThkZjlhNmMwM2VmNTc0MThmYzZhYTg1MWQz
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAgLTI3LDkgKzI3
LDkgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQppbmRleCBmOTEwZWQ1YmRlMjQ5YmEzMWI4YTU4M2Zj
NTQxZWY3YWFjY2MzY2MwLi5jYmUwMDA0ODA2Y2M1ODc0MjNkOGRlYjBlZTQ4NGEwMWY3ZTA2ZjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFz
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0K
QEAgLTMwLDExICszMCwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMb2FkZXJO
U1VSTEV4dHJhcy5oIgogCi0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3Rm
L1ZlY3Rvci5oPgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgi
CiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNw
cAppbmRleCBjMTM5MDc2OGVmODY1ZjI2NjQxZTlhOTM0OGU2ZTY2MGRiMDcyZGVhLi45MTZkM2Y1
MTFiOTY1M2Q4NGNlN2FiM2YxNTExZjBiYjczNWI2YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNDEsNyAr
NDEsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2lu
Y2x1ZGUgIlZUVEN1ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCmluZGV4IGI1MTdiNTJlNzlkODg0ZDBlNzY4NjUwYTYxM2ZmNzQ5ODIyNDVmNGEu
LmE1NTBkNWIwYjc5YTk0MTg3N2EzZmJmNTQ5Njc0Y2RiMzNlZWJjZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaApAQCAtMzgyLDcgKzM4Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JU
IENocm9tZUNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9u
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIHsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgeyB9
OworICAgIHZpcnR1YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJM
JiwgY29uc3QgSGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIHsgfTsKIAogI2lm
IFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVu
dEN1cnNvcigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3Jp
Z2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IGFmN2NhOTI2
NGE0ZjJmODVlOTQwYzliZDFkNDAxNmRmYTA5OTJjYzAuLmI4NzUwNWEwNTA1NzllM2JmMTM4NTAy
YTVlZmY0YTQ1NTJlZDFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50
T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtMjYs
NyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEu
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDVl
N2MzNWM5NzcxOGQ4OGY4NDFiZjQxODA0NTI0OTRhZDhmNzUxOTIuLjg4OWVlOTk3NjEyOGQxYTk2
NjdlMGE1MGEzNDhlNTEyYmU2ODcwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q2xpZW50LmgKQEAgLTMxLDI5ICszMSwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAg
ICBjbGFzcyBGcmFtZTsKLSAgICBjbGFzcyBVUkw7Ci0KLSAgICBjbGFzcyBDb250ZXh0TWVudUNs
aWVudCB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgp
ID0gZGVmYXVsdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkg
PSAwOwotICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVS
TCYgdXJsKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0
IEZyYW1lKikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZy
YW1lKikgPSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpID0gMDsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHN0b3BTcGVha2luZygpID0gMDsKK2NsYXNzIEZyYW1lOworCitjbGFzcyBDb250ZXh0
TWVudUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29udGV4dE1lbnVDbGllbnQoKSA9
IGRlZmF1bHQ7CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOwor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTcGVha2luZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5n
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSA9IDA7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7CiAjZW5kaWYK
IAogI2lmIFVTRShBQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBzaG93Q29udGV4dE1lbnUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0
TWVudSgpID0gMDsKICNlbmRpZgotICAgIH07Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRl
eCA2ODEyNmJhOTZlOGJmMTdlNzY4OTNlMWViYWFjZjU0OTQwZjJmYmM3Li5hM2U1ZWFlODk0ZDY0
Mjc2MzdkZDg0NWVkYWFkZTcxYzYxNTFjMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYg
aXRlbSkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2s6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAg
ICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNv
bHV0ZUltYWdlVVJMKCksICJmaWxlIikpCisgICAgICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElz
KG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVSTCgpLCAiZmlsZSIpKQog
ICAgICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgICAg
ICBicmVhazsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
OjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAg
ICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRWaWRl
b1RvRGlzaygpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpdGVtLnNldFRp
dGxlKGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkQXVkaW9Ub0Rpc2soKSk7Ci0gICAgICAgICAg
ICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJcyhtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29s
dXRlSW1hZ2VVUkwoKSwgImZpbGUiKSkKKyAgICAgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMo
bV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksICJmaWxlIikpCiAg
ICAgICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlwYm9hcmQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggN2JkZTFjYmI4YjYzNzFlN2E3YTA4YmE1
NTFlODU2YjgxOTJmNjBmYy4uMWQ2ZGQ3Y2E3Yjg4ZjhmOTNhOWMyNDlkNDlhZTE3NTdmOTAzMDRi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAjaW5j
bHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRl
ICJTdWRkZW5UZXJtaW5hdGlvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc3Vh
bFZpZXdwb3J0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9pbnQuaCIKQEAgLTIyMTUsNyArMjIxNSw3
IEBAIFN0cmluZyBET01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0
IERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBJCiAKIGJvb2wgRE9NV2luZG93Ojppc0luc2VjdXJl
U2NyaXB0QWNjZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZykKIHsKLSAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCisgICAg
aWYgKCFXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIElmIHRoaXMgRE9NV2luZG93IGlzbid0IGN1cnJlbnRseSBhY3Rp
dmUgaW4gdGhlIEZyYW1lLCB0aGVuIHRoZXJlJ3Mgbm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKaW5kZXggYTEwZGFiMzNmYjcyMDBkZjFhNDIwYzM0MjhlNWY3YjM5NmZjY2Q2
Zi4uZTAxMDhhN2JlYjNhYWJjNGQxMmE3ZTgzYWE5NzkxZGQyZTEzMTA1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTEwNjksNyArMTA2OSw3IEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRl
LCBEcmFnT3BlcmF0aW9uCiAgICAgICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQp
CiAgICAgICAgICAgICAgICAgc3JjLmVkaXRvcigpLmNvcHlVUkwobGlua1VSTCwgdGV4dENvbnRl
bnRXaXRoU2ltcGxpZmllZFdoaXRlU3BhY2UsIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNl
dFVSTChzcmMuZWRpdG9yKCkucGFzdGVib2FyZFdyaXRlclVSTChsaW5rVVJMLCB0ZXh0Q29udGVu
dFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRX
cml0ZXJEYXRhLnNldFVSTERhdGEoc3JjLmVkaXRvcigpLnBhc3RlYm9hcmRXcml0ZXJVUkwobGlu
a1VSTCwgdGV4dENvbnRlbnRXaXRoU2ltcGxpZmllZFdoaXRlU3BhY2UpKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFzdGVib2FyZCBhbHNvIGNvbnRh
aW5zIHRydXN0d29ydGh5IGxpbmsgZGF0YQogICAgICAgICAgICAgLy8gYnV0IGRvbid0IG92ZXJ3
cml0ZSBtb3JlIGdlbmVyYWwgcGFzdGVib2FyZCB0eXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaAppbmRleCBjMDJkNWM4MDE2YzY1YjNkNWVmOTM1NmM4MmJlN2Q1NzJiOTc5YTk0
Li44NDM1MjgzY2RmY2IxMWE4NjJkOWZjY2M2NmYzMDQzZjJjNTdhOTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhZ0lt
YWdlLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCAzNzkyYTkxMjZmMWQzMGFmZmUzN2Jl
MWMyYTZkYWM3ODIxNmE3MjlhLi41OGE0YzM4NzQ5ZTk1MGI0NzhjZjg3MDY4YTI2MzkzMTBhZGVm
MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggZTg4NmI5MGZj
MDgxYmE3YjNmMzBlYzM0MTRiMmZjYmJlOWVmMTVhNS4uYTAyMTVmYTc3NDIzODUyYWJiNTQxMTBh
NzI5NzE2YjkzNGU5MzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtODksNyArODksNiBAQCBjbGFz
cyBSZW5kZXJXaWRnZXQ7CiBjbGFzcyBTY3JpcHRDb250cm9sbGVyOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTZXR0aW5nczsKLWNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQb3NpdGlv
bjsKIGNsYXNzIFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMjQwZTY0NTcz
N2E0Yzc4Y2Y1MmQ3MWQ4ZDI4NTcwYTAzYjg0ZjlhZi4uODRjNjIwMTBmNjZlOTNjMmVhYWVlZDQz
Y2Q3ZjI0MDU1MmNkZGI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01Miw3ICs1Miw2
IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEhUTUxGcmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQ
YWdlOwogY2xhc3MgUmVuZGVyQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9I
aXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAppbmRleCAwNWZlMmIzZjY3
MGRlMmZmYjViMGQ2YTkwZDhkNzRmOTJhODQ2NTcyLi43ZjM1ZjRkNzAxMDU1N2ZjNTk5YTIxYWRk
ZTY2MmEzNTk0YjZiMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3Rvcnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaApAQCAtMzYsNyArMzYsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7Ci1jbGFz
cyBVUkw7CiAKIGNsYXNzIEhpc3RvcnkgZmluYWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBw
dWJsaWMgUmVmQ291bnRlZDxIaXN0b3J5PiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKaW5kZXggN2I5OGEwNjM2YzQ5MzZjZDZmZDYy
OTQwMTIyY2FjYzlhODU4Njc2Ni4uODBhNmVkOTJiMDdhYjc5ZTAwZjUxYTc1YTgyMDI3NGNlYzU5
NjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdh
dGlvblNjaGVkdWxlci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
MCw3ICs1MCw3IEBAIGlubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogCiAg
ICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAo
IXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBibGFua1VSTCgpOyAvLyBVc2UgImFib3V0
OmJsYW5rIiB3aGlsZSB0aGUgcGFnZSBpcyBzdGlsbCBsb2FkaW5nIChiZWZvcmUgd2UgaGF2ZSBh
IGZyYW1lKS4KKyAgICAgICAgcmV0dXJuIFdURjo6YmxhbmtVUkwoKTsgLy8gVXNlICJhYm91dDpi
bGFuayIgd2hpbGUgdGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdlIGhhdmUgYSBm
cmFtZSkuCiAKICAgICByZXR1cm4gdXJsOwogfQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgTG9j
YXRpb246OnJlbG9hZChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdykKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh0YXJnZXREb2N1bWVudC51cmwo
KSkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodGFyZ2V0RG9jdW1lbnQudXJs
KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVy
KCkuc2NoZWR1bGVSZWZyZXNoKGFjdGl2ZURvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaApp
bmRleCBiYjdkMmQxZDMzZWVmZjZjOWQxNjY2YWIwMDEwMTc4MzJhNGYyYWY4Li4wMzRjZThiNmVm
Y2Y3MmMwYTdlZDRiZWUwMGZlMGVlYzk0YjE0NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCkBA
IC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93Owog
Y2xhc3MgRnJhbWU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIExvY2F0aW9uIDogcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8TG9jYXRpb24+LCBwdWJsaWMgRE9NV2luZG93
UHJvcGVydHkgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAyNGI0MWRlM2Q2MWZhMTY4MTg4
MjFlZDMwY2Q3ZTdiOTRmNjgwZDcxLi5iMmI5YWU2ZTU5NTg3MjdlYmU0M2ZjYzBkODJkMGEzYTdk
MjA4MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTM1LDcgKzEzNSw2IEBAIGNsYXNzIFNldHRpbmdz
OwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3Mg
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwotY2xhc3MgVVJMOwogY2xhc3MgVXNlckNvbnRlbnRQ
cm92aWRlcjsKIGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4
IDNiNmUxODI5ZTI4YzM1YTM5ZTRhMTZiNWYwODhlNjFjM2M0NmVkOGEuLmZmM2UyZTFmY2IwNjFh
NGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmgKQEAgLTMwLDExICszMCwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVS
TEhhc2guaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKaW5kZXggMjRhYjk0YmNhMjk1Y2NhZmIwYTY1MWE2Mjcw
YjI4Nzk0NWViYTk5MS4uM2E4NjM0YWI2MzdhOTE0MmE3MjUwM2Y5YTg4YTUyNmY3OWUwYTliZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBQZXJm
b3JtYW5jZVRpbWluZzsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRp
bWluZzsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBV
c2VyVGltaW5nOwogCiBjbGFzcyBQZXJmb3JtYW5jZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PFBlcmZvcm1hbmNlPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAppbmRleCA1NzUzMzU4MGMzMDIxZWFlNjZkZTMx
OTA4OWQ4ZTRiMWJjMTAzZjlkLi43YjdkODdhNDU4ZmJhMGU3MzlkMmM0MjA5Y2Y4MjQyYmJkODc0
OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRp
bWluZy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlJlc291cmNlVGltaW5nLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggMjI5ZWZmODQz
ODU0YjIwNjgwZDRhMzlkYzUxYzAwNzJhNzY0OWU5My4uMDIwZTA5MmI5OGY4YzgzZmQ4YTViM2Y0
MzMyYzI0NmIzZWM1ODc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAK
QEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNs
dWRlICJUZXh0RW5jb2RpbmcuaCIKQEAgLTE0OCw3ICsxNDgsNyBAQCBTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiAgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0
YXJ0cyBhcyBtX2RhdGEuaG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KICAgICBtX2Rv
bWFpbiA9IG1fZGF0YS5ob3N0OwogCi0gICAgaWYgKG1fZGF0YS5wb3J0ICYmIGlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbChtX2RhdGEucG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQorICAg
IGlmIChtX2RhdGEucG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2RhdGEu
cG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICBtX2RhdGEucG9ydCA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmln
aW5zIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4KQEAgLTUxNiw3ICs1MTYsNyBAQCBSZWY8U2Vj
dXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCwgY29uc3QgU3RyaW5nJgogewogICAgIFN0cmluZyBkZWNvZGVkSG9zdCA9IGRlY29kZVVSTEVz
Y2FwZVNlcXVlbmNlcyhob3N0KTsKICAgICBhdXRvIG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCks
IHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7Ci0gICAgaWYgKHBvcnQgJiYgIWlzRGVm
YXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQorICAgIGlmIChwb3J0ICYmICFX
VEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQogICAgICAgICBv
cmlnaW4tPm1fZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDVhZGY1MDE3NDliMDljMjkzZTU5YmE0MDQ1
NmY3NjdjYjU2ZTA4ZTEuLmI5M2QwZmFmMjM1YTdmZTM1NDc2NTA5ZjZlNDM3ZDU0NDA1Y2MxMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTM0LDggKzM0LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6
CiAgICAgZW51bSBQb2xpY3kgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmgKaW5kZXggY2VmZmVhMzJiMDg0YzU2MzEyNGYyMGI3YzVmZTI4ZjE0OTA0MDQ3NS4uMjc3NjJl
YTIxZDZkMjA2NWU5ZGQwMTQ2ZGI5NzliMzMyZWM0NTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5I
YXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCmluZGV4IGVl
MjU3MmM1YTlhNjQ0Mzk1N2E1ZjNmNzUzZjQ2ZTJmYmE5MjIzNDAuLmUwMTQ4YTJkMDVkOTliMGRk
ZGYwNmEyM2QyNDZkNTM0NTJjYjJjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5IYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkhhc2guaApAQCAtMjgsNyArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9s
aWN5LmNwcAppbmRleCAxNTNlZGQ4MTlkMTI1NTU1NTY4ODc2NTY2ZGUzMWY5OGI2YzA1NTNiLi40
MjM0MTgyODBlYTJlZTNjOWJmZGZjOTFjZDEyN2I5NjhlYjFlMWJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMzEsMTEgKzMxLDExIEBACiAKICNpbmNsdWRlICJP
cmlnaW5BY2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBTZWN1cml0
eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKGNvbnN0IFVSTCYg
dXJsKQogICAgIC8vCiAgICAgLy8gTm90ZTogV2UgZ2VuZXJhbGl6ZSB0aGlzIHRvIGludmFsaWQg
VVJMcyBiZWNhdXNlIHdlIHRyZWF0IHN1Y2ggVVJMcyBhcyBhYm91dDpibGFuay4KICAgICAvLwot
ICAgIHJldHVybiB1cmwuaXNFbXB0eSgpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnN0
cmluZygpLCBibGFua1VSTCgpKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwu
c3RyaW5nKCksICJhYm91dDpzcmNkb2MiKTsKKyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNkb2Mi
KTsKIH0KIAogdm9pZCBTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KExvY2FsTG9h
ZFBvbGljeSBwb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggY2Qz
N2NhM2FkMmRmZGJkN2U2NzIzNTFmYTU0M2VlZjQ5ZTgyYjRmNC4uNTMzYjFkNGZiZGFkNTJlMzhm
MWZkMzVhMmY2YTA3ZDQ4MDA4YjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3ku
aApAQCAtMzQsNyArMzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgU2VjdXJpdHlQb2xpY3kgewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKaW5kZXggYWE4MDRjZGIwODRlMGQ2YTNmZDNkZWVi
NmY2MWQ1NTQzYWYzNDFiMS4uOTg2Nzc2Y2EzZGI1ZGE4ZjhlMWE2YmE4Nzc5ZmRlZWE3MjgzYjli
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5j
bHVkZSAiU3RvcmFnZU1hcC5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
IldyaXRpbmdNb2RlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+
CiAjaW5jbHVkZSA8dW5pY29kZS91c2NyaXB0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRl
eCAyNzlmMDMzYTI2NDgxM2MyMWFkZjkwY2ZhNmMzNjU4YWMzODQzZjIzLi5jOGIxMmEzOTcxYjY2
MmY4MDc4ZjNjYTY4ZjUwZTYxZjlhN2Y4YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAg
LTI0LDcgKzI0LDcgQEAKICAqLwogCiAjcHJhZ21hIG9uY2UKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU29ja2V0UHJvdmlkZXIuaAppbmRleCBkMTk3OTc3YWZlYjgyMGFhNDEyZTJjMzRmYTU0
NzIxNjM4NDkwZTcyLi45ZThjMDAzYmZmNTFlMWE1Y2M5NmQyZTQ3M2U3YWVlZWVkYmRhOGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oCkBAIC0zNCw3ICszNCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTb2Nr
ZXRTdHJlYW1IYW5kbGU7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7Ci1jbGFzcyBV
Ukw7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvY2tldFByb3ZpZGVyIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFNvY2tldFByb3ZpZGVyPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCmluZGV4IDI4ZGZiMzJhMDc2ZTY1MTJlY2Y5MjRm
MDE0NTIyMGVlYWU0OWM0NzIuLmZhNjkyMDM0ZGJhZTVmZDc5ZmU4MTk3ODlhNzMyMWViZTRiMGRl
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCkBAIC00Miw3
ICs0Miw2IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwog
Y2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIGNsYXNzIFVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I7CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNl
clN0eWxlU2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAKaW5kZXggYjliODExNTgyN2I3OGY1MjczMDk1YzJjM2UxNTE4YmY0M2Y0M2U5MC4uZjM3
M2NmMzdiMjRjNTBmYzIxZGM2ZGM0NzFhYjA4ZWQ0ZWM1MDkxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
aAppbmRleCA5MzNmNjlkNmM1YTYwZTZlZDcyOGJhMDgwZWVlODRmNTQ4MGRmMmQ2Li45M2Y2NTgx
MmRhYzVkZThhZDVmY2RiNjcwZDhkMmY5ZTg2OTc4MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybiB7
CiBwdWJsaWM6CiAgICAgVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkgOiBtX2ludmFsaWQodHJ1ZSks
IG1fbWF0Y2hTdWJkb21haW5zKGZhbHNlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlclNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKaW5k
ZXggODUxMGMxZjMzOTkwMWU5OTVmMzIwY2NjOWJmNzE5YjJlNDlhZTQyNy4uNTJjMTJmM2M2OTY2
MzAyYWFlZjQ1NWI4ZmVmYmM5OWViZGE1ODRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgK
QEAgLTI1LDcgKzI1LDcgQEAKICAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVzZXJDb250ZW50VHlwZXMuaCIKICNpbmNs
dWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggNjhmMTBhODJhZGY4OThmMjUyYzQxNTU5Y2Ix
Njc4YWVjOGM1MDg0MS4uYzQ3NDc2N2U3Yzk4YmI0OGE4ODNjYjczYjY5ODkwNWY2MDFkNzYwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAtMjUsNyArMjUsNyBAQAogIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiVXNlckNvbnRlbnRUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlw
ZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExp
bmtTdG9yZS5oCmluZGV4IDQzYzM1MTM3MmQ2MThiNjgxMDliMGZiOGNjZDY5ZmM4NWY4YmRkNzgu
LjI2ZDY1MGRiYTc0ZGM1MDJjZjkzMDlhM2YzZDFjMDVkYTZiNjQ5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogY2xhc3MgUGFnZTsK
LWNsYXNzIFVSTDsKIAogY2xhc3MgVmlzaXRlZExpbmtTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFZpc2l0ZWRMaW5rU3RvcmU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKaW5kZXggNWI1OTJmZDgyOGY5N2Y5NGMyM2FlMzM0
OTY4YTVhYjQ3ZDk2YzE2My4uZTAyYTdhYjZjNTliZmNmNWI5OWU2NDhmZmM2YzdlMjU0NGNmZmUz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmgKQEAgLTU2LDcgKzU2LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVGV4dEVuY29k
aW5nOwotY2xhc3MgVVJMOwogc3RydWN0IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKIAog
dHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q+PiBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaAppbmRleCBlYjRmZTg3
YzI5ZjFjYWIxMThiZDFiMGRiZTY3NjNjYjEwNGYzMjMwLi44ZTA1MTgyNjQxNDA2ZjJjYzhjYWEy
ZGM1NmFlMzM2MDYzNGU2YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaApAQCAtMzIsNyArMzIsNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3JtRGF0YTsKLWNsYXNzIFVSTDsKIAogc3RydWN0IENT
UEluZm8gewogICAgIFN0cmluZyBkb2N1bWVudFVSSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaApp
bmRleCAyOTA3MjUwZjBlYjFkYzRmZDA4ZmIyMDcyYzY4MzM3YjI4ZDdiMDI2Li5kZDUxMzAwZWMz
YjAwMzMxZjMzYmQwMjczN2ExNThjMmFhYzYyMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5o
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5o
IgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oIgog
I2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggOTRiNGNjMTNjMGY2ZTQ1YmRhNGY1ZDgzYjRkMThlNzcz
MDNmNDM2Yy4uZWIyMTk1YTIwNGE0YzZiZWE0N2E0NzA4NDEzYmMwYjdlNmYzNDlkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3kuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAw
LDE0ICsxMDAsMTQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnBvcnRNYXRj
aGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoKG1fcG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29s
SXMoImh0dHBzIikpIHx8IChwb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZh
bHVlKCksICJodHRwcyIpKSkpCisgICAgaWYgKChtX3BvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnBy
b3RvY29sSXMoImh0dHBzIikpIHx8IChwb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQudmFsdWUoKSwgImh0dHBzIikpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBpZiAoIXBvcnQpCi0gICAgICAgIHJldHVybiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9w
b3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSk7CiAKICAg
ICBpZiAoIW1fcG9ydCkKLSAgICAgICAgcmV0dXJuIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChw
b3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpOwogCiAgICAg
cmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAppbmRleCA0ZWVhYmIwMTM2NTI1MWI2ZDg5NjMzY2E5
NjgwZDAxNWYyMzEwNmFhLi5hMmRiNTA0Mzg5OGYyZTY5NDdiYzdiMGEyZGQ2NDQzYWI1MTQzOGQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2UuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgU2VjdXJpdHlP
cmlnaW5EYXRhOwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmNwcAppbmRleCAxYjQzMzEyNjYwMGE1MDFmOTVmNWU2M2I0MmRkNGNkZGRkOTU3
OWIyLi4yNmRhOTExNTM3NjRhZmY3MDQ4Njc4ZTYyN2Y3MmZjNGM3OTgxZDVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgog
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgKaW5kZXggOWY2M2MzMDA2YTBjYTdmMmUzMzk5NDgw
MWI1NDJjMzY2NjhjMmU1NC4uNWZjZjNiMmVhZTRhOWU1Zjg0ODEwYmQ1M2M0NTU1MjQ0MDc3MjZm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3QuaApAQCAtMzYsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiAKIGNsYXNz
IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERp
cmVjdGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcAppbmRleCBjMmJmMWQ0NWE1NWY1NzdmYTJkM2ZiNjAw
YjJhYzlmM2ZmMGNhMWU0Li4xYjA5MmI4NGZkMGJmN2Q2NmY4ZTFhYWZlMGYxYmFjNTMzNmFlNjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcApAQCAtMjksNyArMjks
NyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCmluZGV4
IGI5YTlkMDBkNWJkMmZkYTlmYTdmYTE0ZWI5MTcxYWM4NjEyODU3YjguLjRiOGUxYWFlNmI0Nzcw
ZWVkOTY3ODFiNmRiZjY2YWJhMWUxMjU1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCkBAIC0yMywxNCArMjMsMTMg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcl9oCi0jZGVmaW5lIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
IAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogT0JKQ19DTEFTUyBOU0NvZGVyOwpAQCAtNzcsNSArNzYsMyBAQCBjbGFz
cyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgewogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotCi0jZW5kaWYgLy8gQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NvbnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1l
bnVJdGVtLmgKaW5kZXggNDc2YTNjMzZiOTViZGIxODdiYjU4OTMyZTAwM2JkMTFlZjMyYjQwNi4u
MWIwZjc0NTBiNDU3MmQ1NmE5MTNlNWMxZTdhYTU3Mzk4NDk0OGQxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb250ZXh0TWVudTsKIGNsYXNzIEltYWdlOwotY2xhc3MgVVJM
OwogCiBlbnVtIENvbnRleHRNZW51QWN0aW9uIHsKICAgICBDb250ZXh0TWVudUl0ZW1UYWdOb0Fj
dGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKaW5kZXggYjIxMjI0ZjFjYjlhMGRhOWFmNTg2
YWI5YjA0ZjM5MTI1NzZlY2Q5NC4uOGNiYTRkZjU5MzExNmMzZjIzZDJiNGJkYTRjZDNiM2RmNzky
Nzk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKQEAgLTI2LDggKzI2LDggQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29va2llc1N0cmF0ZWd5LmgKaW5kZXggYjQzOTc4Njg3ODEwOTVkMGMwOWE5OTZkMjQwNGEy
ZjRlOWQ5OTlkYi4uOWIwZDVhNjhkOTJjOGU1NWFkOWQwZjlhYjMzOGY5NTE3NjI5ZDc3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKQEAgLTMzLDcgKzMzLDYg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwot
Y2xhc3MgVVJMOwogCiBzdHJ1Y3QgQ29va2llOwogc3RydWN0IFNhbWVTaXRlSW5mbzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDFhNGE0NWY4MDVjYzUwNmFiOWYxOTFmODA2MTU3
ODcwNGZmNDkyMDYuLmU5MzA5NWZjN2IyYTBiMTM2ZDQ2NjE2ZDAyMjBjY2ViYTM5OWEwMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNTYsOCArNTYsNiBAQCB0eXBlZGVmIHZv
aWQqIERyYWdEYXRhUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQog
ZW51bSBEcmFnQXBwbGljYXRpb25GbGFncyB7CiAgICAgRHJhZ0FwcGxpY2F0aW9uTm9uZSA9IDAs
CiAgICAgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJ
bWFnZS5oCmluZGV4IGJlNWI0YzljMmE0NzA0YTFkYjkxMTJjNGNlOTRlYWM0M2YxNWQ2ZjkuLmYz
MmE2ODQ1YTY4NWM1YTBjMjFkYWY5MmMxZmMwZmVmNGE1MDAyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdJbWFnZS5oCkBAIC01Nyw3ICs1Nyw2IEBAIGNsYXNzIEltYWdlOwogY2xhc3MgSW50
UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKLWNsYXNzIFVSTDsKIAogI2lmIFBMQVRG
T1JNKElPUykKIHR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IERyYWdJbWFnZVJlZjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAppbmRleCA5NjdkZWRjN2JhNmVjZjQyOTJkZjE5
Y2ZjMTg4NTFkMTY2YjNhYTVmLi5iMmFhMjg0NDc5ZjdiMTIyNmViZjdhYWE5YjdmZGNhYzMwYzMz
NzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCkBAIC0zNSw4ICszNSw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiAvLyBBbGwgbWV0aG9kcyBh
cmUgc3luY2hyb25vdXMuCiBjbGFzcyBGaWxlU3RyZWFtIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MaW5rSWNvbi5oCmluZGV4IDI4MTc1NDYwMzU5YWRmZjdhMGNmMmZlMWViN2ZmNDEzNGM1
NzdlNTkuLjg5ZTJmODk2OWJiNTI2YTM2NGRiNmI5MGUzMGE5Yjc3MWNkZTU4NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGlua0ljb24uaApAQCAtMjYsOSArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJMaW5rSWNvblR5cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCA3MzdhMzkwNDI1
N2RlNjQzYmMwZDlhYjk5YmMyNjRhMzE0ZmQ2ZmY3Li41NTVlYzI4MmU0YmI2NmU1ZjlkMTExMjBi
OTc2MWE3MjVlYmMzZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJM
UGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgUGFzdGVib2FyZDo6aXNTYWZlVHlwZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogYm9vbCBQYXN0ZWJvYXJkOjpj
YW5FeHBvc2VVUkxUb0RPTVdoZW5QYXN0ZWJvYXJkQ29udGFpbnNGaWxlcyhjb25zdCBTdHJpbmcm
IHVybFN0cmluZykKIHsKLSAgICBhdXRvIHVybCA9IFVSTFBhcnNlciB7IHVybFN0cmluZyB9LnJl
c3VsdCgpOworICAgIFVSTCB1cmwoeyB9LCB1cmxTdHJpbmcpOwogICAgIHJldHVybiB1cmwucHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzQmxvYigpIHx8IHVybC5wcm90
b2NvbElzRGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
MjA2MzVhYjAyOTRmMjk5N2UyOGZiZmZkNTA5ODY5NDhhOTliNjAzMC4uYTJiYTJiNzYwMGRkNGVi
YTI2OGY2MjljZGQxOTE0MTM4ODFiZDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNs
dWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggOTlkOGRkZmZhZTAwZWFjZTFh
NjMyY2IwZDNmNTM4MWEyM2ZhMzY1Yy4uYTViMzY1MGEwYmJjMGFmODhmOWFmNzQ0NDA4ZGVhZTk5
NjBkYTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBj
bGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogc3Ry
dWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3Qg
UGFzdGVib2FyZFVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRXcml0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmNwcAppbmRleCAzZDJkY2VlZDdjNTZlODcwOTY3ODk4MDdhNjdiZWUyZWQwMzI5
MjdmLi5lMjU2OTA3NGVlNWEyYjNlZjZjMjBlOGJlNDhkZmU3NTdhODA2OWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIHZvaWQgUGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFBsYWluVGV4dChQbGFpblRl
eHQgcGxhaW5UZXh0KQogICAgIG1fcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpOwogfQog
Ci12b2lkIFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpzZXRVUkwoVVJMIHVybCkKK3ZvaWQgUGFzdGVi
b2FyZFdyaXRlckRhdGE6OnNldFVSTERhdGEoVVJMRGF0YSB1cmwpCiB7CiAgICAgQVNTRVJUKCFt
X3VybCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0
YS5oCmluZGV4IGQ1M2ZkNzJmZjVlNmM0NGUwYTE2ZTc3ZjM5MWRhZmNkODQ2NTAyMGEuLjVmNDc1
OTJiMTAxOTUxMTkxMTc5NzY4OGU3ODU1MGY0OGJiZWQ1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMjUsOCArMjUsOCBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjYsOCArNjYsOCBAQCBjbGFzcyBQYXN0ZWJvYXJk
V3JpdGVyRGF0YSBmaW5hbCB7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+JiBw
bGFpblRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYWluVGV4dDsgfQogICAgIHZvaWQgc2V0UGxh
aW5UZXh0KFBsYWluVGV4dCk7CiAKLSAgICBzdHJ1Y3QgVVJMIHsKLSAgICAgICAgV2ViQ29yZTo6
VVJMIHVybDsKKyAgICBzdHJ1Y3QgVVJMRGF0YSB7CisgICAgICAgIFVSTCB1cmw7CiAgICAgICAg
IFN0cmluZyB0aXRsZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFN0cmluZyB1c2VyVmlz
aWJsZUZvcm07CkBAIC03NiwxNSArNzYsMTUgQEAgY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEg
ZmluYWwgewogI2VuZGlmCiAgICAgfTsKIAotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMPiYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICB2b2lkIHNldFVSTChVUkwpOworICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMRGF0YT4mIHVybERhdGEoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQorICAgIHZvaWQgc2V0VVJMRGF0YShVUkxEYXRhKTsKIAogICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29udGVudD4mIHdlYkNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3dlYkNv
bnRlbnQ7IH0KICAgICB2b2lkIHNldFdlYkNvbnRlbnQoV2ViQ29udGVudCk7CiAKIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+IG1fcGxhaW5UZXh0OwotICAgIHN0ZDo6b3B0
aW9uYWw8VVJMPiBtX3VybDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTERhdGE+IG1fdXJsOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29udGVudD4gbV93ZWJDb250ZW50OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA4ZTEzYmY0ZDg0MTQx
M2JmMWMxMTdkZWM5ZWZmODVjNDgyNGI4OGVmLi5lMGEyMTMzMzc0NmNkZjk0ZGQ3MGU5NWUzZjYy
ZWQwZDc4MjAwMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaApAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xv
cjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7
CiBzdHJ1Y3QgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwog
c3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCBkYmVjZmMxYjNiMTZkN2Y1ZTAzMDhlMTEw
YWNkYTExMDJjYjQyMDdlLi5hOTU4YzJmMGFiMmQ5ZjFmMzc2NjJhN2EwYjYwMmJlMzEzNDMwN2I1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewog
ICAgIFVSTCBibG9iVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU1NM
S2V5R2VuZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3Iu
aAppbmRleCAwNzY3MjM4NmY2OGVhYTk4MWZlN2M1OTdjMDVmNjFlZjhlNjczY2U0Li5jMmJkOGQ2
ZTlkM2FhOTNlMjQ2MDI0ODYyYzFmM2IyMmY0NWE0ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaApAQCAtMzEsOCArMzEsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFVSTDsKLQogLy8gUmV0dXJucyBzdHJpbmdzIHJlcHJlc2VudGluZyBr
ZXkgc2l6ZXMgdGhhdCBtYXkgYmUgdXNlZAogLy8gZm9yIHRoZSA8a2V5Z2VuPiB0YWcuIFRoZSBm
aXJzdCBzdHJpbmcgaXMgZGlzcGxheWVkIGFzIHRoZSBkZWZhdWx0CiAvLyBrZXkgc2l6ZSBpbiB0
aGUgPGtleWdlbj4gbWVudS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
aGVtZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5
LmNwcAppbmRleCA5NDlkZTYzYWVmMDZjZmNmYWYwYzAyZDI0YzZhYzQ0ZTY2ZmUwYjk3Li43N2Y2
YzM5MmE5MTdmMGM5MTcyNjY1YTc2MThlNjcwNDM4YzRlNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogCi0jaW5jbHVkZSAiVVJM
UGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgpAQCAtNTUxLDcgKzU1MSw3IEBA
IGJvb2wgU2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcm
IHNjaGVtZSkKIAogYm9vbCBTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQogewotICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIChhbGxCdWls
dGluU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkgfHwgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hl
bWUoc2NoZW1lKSk7CisgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgKGFsbEJ1aWx0aW5T
Y2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKSB8fCBXVEY6OlVSTFBhcnNlcjo6aXNTcGVjaWFsU2No
ZW1lKHNjaGVtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGUyYWFlMmYzMDQ1NzM1NWY0ODllZWM0YWI0ZWNm
MWNlN2QzZTQ1MmYuLmY4NjhjMmMwMWQ2YjEwZWNmMzY0YjFhNmZmZTNkZDQyZjVmNTIyODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC00MCw3ICs0MCw3IEBACiAj
ZW5kaWYKIAogI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCisjaW5j
bHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNlbmRpZgogCiAjaWYgVVNFKEdMSUIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCmluZGV4IDBj
YzVmNjg3ZDYyMWVmZTdlYWJhYzRkYmY5ZTU0NTQ3YTQ4ZGNlMTguLmFmYjc1N2NiZTQwMjJmZWRm
YzQ3OTNlYWJjMjU2OWU4NjBlOTU5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZFN0cmluZ0hhc2guY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU2hhcmVkU3RyaW5nSGFzaC5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdI
YXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmgKaW5kZXgg
NzMyNDYxN2JhNDk2YTA2NjNiZmQ1M2RlYzRhNDQzZDk3NjkzOWU4ZS4uMzYwM2NmMGYyZTdmOTIx
NGIzZTI1M2Y1NDc5ZDljYjM0NmIyN2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZFN0cmluZ0hhc2guaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFVSTDsKLQogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogCiAv
LyBVc2UgdGhlIGxvdyAzMi1iaXRzIG9mIHRoZSA2NC1iaXQgU2hhcmVkU3RyaW5nSGFzaCBhcyB0
aGUga2V5IGZvciBIYXNoU2V0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4
dAppbmRleCBjMDJlNDllNGU1MWVmNzQ5MzFmNzBkZDg2NTVkMzRkZTJkNjNlNDhiLi4yZTg1NmE5
ODAwYzMzN2E0MDUzMTY1MmM3MDRmM2UyZmI2ZmQzMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU291cmNlc1NvdXAudHh0CkBAIC00MSw0ICs0MSwzIEBAIHBsYXRmb3JtL25ldHdvcmsvc291
cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwCiAKIHBsYXRmb3JtL3NvdXAvUHVibGljU3Vm
Zml4U291cC5jcHAKIHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKLXBsYXRmb3Jt
L3NvdXAvVVJMU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiZGI0Njg2OTU4ZjMwMDA5MzMzNDQzMTg5NDc3YTlkNDVmNGY1ZDg4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTA5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxMS0yMDEzLCAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlVSTC5oIgotCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8c3Rk
aW8uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VVUlE
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJl
cnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgotCi0vLyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVz
ZSBvZiB0aGUgKyBvcGVyYXRvciBvbiBTdHJpbmcuCi0vLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRp
bWl6ZSB0aGF0IG9wZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQotLy8gc28gbWFueSBhbGxv
Y2F0aW9ucywgb3IgY2hhbmdlIHRoaXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgotCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLXR5cGVkZWYgVmVj
dG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVD
aGFyQnVmZmVyOwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAw
eEZGRkY7Ci0KLS8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1p
bmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKLS8vIEFTQ0lJLiBUaGUgZGVzdGluYXRp
b24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93
ZWQKLS8vIGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51
bGwtdGVybWluYXRlIHRoZSByZXN1bHQuCi1zdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGNoYXIqIGRlc3QpCi17Ci0gICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG1lbWNw
eShkZXN0LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNl
IHsKLSAgICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAg
ICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNf
Y2FzdDxjaGFyPihzcmNbaV0pOwotICAgIH0KLX0KLQotdm9pZCBVUkw6OmludmFsaWRhdGUoKQot
ewotICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9
IGZhbHNlOwotICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOwotICAgIG1fc2NoZW1lRW5k
ID0gMDsKLSAgICBtX3VzZXJTdGFydCA9IDA7Ci0gICAgbV91c2VyRW5kID0gMDsKLSAgICBtX3Bh
c3N3b3JkRW5kID0gMDsKLSAgICBtX2hvc3RFbmQgPSAwOwotICAgIG1fcG9ydExlbmd0aCA9IDA7
Ci0gICAgbV9wYXRoRW5kID0gMDsKLSAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7Ci0gICAg
bV9xdWVyeUVuZCA9IDA7Ci19Ci0KLVVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3Ry
aW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKLXsKLSAgICBV
UkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7Ci0gICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFy
IGMpCi17Ci0gICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFj
ZSBhbmQgY29udHJvbAotICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMg
aXMgYW4gKnVuc2lnbmVkKiBjaGFyIGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hv
dWxkIG9ubHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBjIDw9ICcgJzsK
LX0KLQotVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICBVUkwgcmVzdWx0ID0g
KnRoaXM7Ci0gICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29w
eSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9u
ZW50KCkgY29uc3QKLXsKLSAgICBpZiAoIWhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKLSAgICBpZiAobV9zdHJp
bmdbZW5kXSA9PSAnLycpCi0gICAgICAgIC0tZW5kOwotCi0gICAgc2l6ZV90IHN0YXJ0ID0gbV9z
dHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgKytzdGFydDsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3Rh
cnQsIGVuZCAtIHN0YXJ0ICsgMSk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3Nj
aGVtZUVuZCk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKLXsKLSAgICB1bnNp
Z25lZCBzdGFydCA9IGhvc3RTdGFydCgpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKLX0KLQotc3RkOjpvcHRpb25h
bDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcG9ydExlbmd0aCkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAg
ICB1bnNpZ25lZCBudW1iZXI7Ci0gICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBu
dW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBt
X2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwotICAgIGVsc2UKLSAgICAgICAg
bnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSAr
IG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBu
dW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQotU3RyaW5nIFVSTDo6
aG9zdEFuZFBvcnQoKSBjb25zdAotewotICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkp
Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocG9ydC52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOwotfQot
Ci1TdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKLXsKLSAgICBTdHJpbmcg
cmVzdWx0ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7
Ci0KLSAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgewotICAgICAgICBj
b25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7Ci0gICAgICAgIHJlc3VsdC5yZW1v
dmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJh
aWxpbmdBdFNpZ24pOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBT
dHJpbmcgZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0
KQotewotICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAoIWlu
cHV0TGVuZ3RoKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBWZWN0b3I8TENo
YXI+IHBlcmNlbnREZWNvZGVkOwotICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoaW5wdXRMZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExl
bmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKLSAgICAgICAgICAgICYm
IGlucHV0TGVuZ3RoID4gMgotICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgotICAg
ICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKLSAgICAgICAgICAgICYm
IGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7Ci0gICAgICAgICAgICBwZXJjZW50RGVj
b2RlZC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRb
aSArIDJdKSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKLSAgICB9Ci0gICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVj
b2RlZC5zaXplKCkpOwotfQotCi1TdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Ci19Ci0K
LVN0cmluZyBVUkw6OnBhc3MoKSBjb25zdAotewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1f
dXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZUVz
Y2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Ci19Ci0KLVN0
cmluZyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Ci19Ci0KLVN0cmlu
ZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKLXsKLSAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBt
X3VzZXJFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmlu
Zy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEp
OwotfQotCi1TdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAotewotICAgIGlm
ICghaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQot
ICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwotfQotCi1ib29s
IFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1Zh
bGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Ci19Ci0KLVN0cmluZyBVUkw6
OmJhc2VBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRo
QWZ0ZXJMYXN0U2xhc2gpOwotfQotCi0jaWYgIVVTRShDRikKLQotU3RyaW5nIFVSTDo6ZmlsZVN5
c3RlbVBhdGgoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgp
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2Vx
dWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOwotfQotCi0jZW5kaWYKLQot
I2lmZGVmIE5ERUJVRwotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2Qo
U3RyaW5nVmlldykKLXsKLX0KLQotI2Vsc2UKLQotc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJ
c0dvb2QoU3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkg
ZG9uJ3QgbmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgotICAgIC8vIFRoZSBpc0FTQ0lJQWxw
aGFDYXNlbGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVy
cwotICAgIC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3Qg
YW5kIHJlbGllZCBvbiB0aGVzZSBjaGVja3MuCi0gICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHBy
b3RvY29sLmNvZGVVbml0cygpKSB7Ci0gICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3Rlcikp
OwotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsKLSAgICAgICAgQVNTRVJUKCFpc0FT
Q0lJVXBwZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNr
ZWQoY2hhcmFjdGVyKSA9PSBjaGFyYWN0ZXIpOwotICAgIH0KLX0KLQotI2VuZGlmCi0KLXN0YXRp
YyBMb2NrIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKLQotdXNpbmcg
RGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWlu
dDE2X3Q+Owotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQotewotICAgIHN0YXRpYyBEZWZhdWx0
UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsK
LSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKLX0KLQotc3RhdGljIERlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZygpCi17Ci0gICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKTsKLSAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCi0g
ICAgICAgIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3Rpbmc7Ci0gICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
OwotfQotCi12b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWlu
dDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKLXsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAg
ZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2ws
IHBvcnQpOwotfQotCi12b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcoKQotewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmdMb2NrKTsKLSAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcoKSkKLSAgICAgICAgbWFwLT5jbGVhcigpOwotfQotCi1zdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJv
dG9jb2wpCi17Ci0gICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcoKSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgICAgIEFTU0VSVChv
dmVycmlkZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92
ZXJyaWRlTWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KLSAgICAg
ICAgYXV0byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5k
KCkpCi0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotICAgIH0KLSAgICByZXR1
cm4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKLX0KLQotYm9v
bCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90
b2NvbCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0g
cG9ydDsKLX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNv
bnN0Ci17Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7Ci0KLSAgICAv
LyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVu
IGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCi0gICAgLy8gVGhlIGZyZWUgZnVuY3Rp
b24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKLSAgICBB
U1NFUlQoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wp
LCAiamF2YXNjcmlwdCIpKTsKLQotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBz
dHJpbmcgb2JqZWN0LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsg
KytpKSB7Ci0gICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3Vs
ZCBoYXZlIGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KLX0KLQotYm9v
bCBVUkw6OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKLXsKLSAgICBhc3Nl
cnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5s
ZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG8gdGhlIGNvbXBhcmlz
b24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgewotICAgICAgICBpZiAoIWlzQVNDSUlBbHBo
YUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBVUkw6OnF1
ZXJ5KCkgY29uc3QKLXsKLSAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRo
RW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAotfQotCi1TdHJpbmcgVVJM
OjpwYXRoKCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9w
b3J0TGVuZ3RoOwotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRo
RW5kIC0gcG9ydEVuZCk7Ci19Ci0KLWJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcm
IHMpCi17Ci0gICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhl
IGZpcnN0ICc6Jy4KLSAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsK
LSAgICBTdHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlv
bik7Ci0gICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6
ZVNjaGVtZShuZXdQcm90b2NvbCk7Ci0gICAgaWYgKCFjYW5vbmljYWxpemVkKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBVUkxQYXJzZXIg
cGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKLSAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJp
bmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1Zp
ZXcgc3RyaW5nKQotewotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgo
KSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2
KCksIHN0cmluZy5sZW5ndGgoKSk7Ci19Ci0gICAgCi0vLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQg
aG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KLS8v
IHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRl
ZC4KLS8vIFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KLXN0
YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJp
bmdWaWV3IHN0cmluZykKLXsKLSAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQg
YW4gSUROLWVuY29kZWQgbmFtZS4KLSAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0
aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkg
T0suCi0gICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OwotICAg
IAotICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0Fs
bEFTQ0lJKHN0cmluZykpIHsKLSAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hv
c3RuYW1lQnVmZmVyTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9S
OwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTEla
RVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVND
SUkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCi0gICAg
ICAgIHN0cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0
bmFtZUJ1ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVy
cm9yKTsKLSAgICAKLSAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFp
bHMuZXJyb3JzKSB7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNo
YXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi11bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBt
X3Bhc3N3b3JkRW5kICsgMTsKLX0KLQotdm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBz
KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGNv
bG9uSW5kZXggPSBzLmZpbmQoJzonKTsKLSAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOwotICAg
IGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAKLSAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0
U3RhcnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVk
SG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwotCi0gICAgVVJMUGFyc2VyIHBh
cnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwot
fQotCi12b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCi17Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0g
ICAgICAgIHJldHVybjsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmll
dyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJp
bmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3Vs
dCgpOwotfQotCi12b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQotewotICAgIGlm
ICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIGNvbG9uTmVlZGVkID0g
IW1fcG9ydExlbmd0aDsKLSAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBt
X2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0
cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/
ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVz
dWx0KCk7Ci19Ci0KLXZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RB
bmRQb3J0KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBT
dHJpbmdWaWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKLSAgICBTdHJpbmdWaWV3IHBvcnQ7Ci0g
ICAgCi0gICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOwotICAgIGlmIChj
b2xvbkluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJp
bmcoY29sb25JbmRleCArIDEpOwotICAgICAgICBib29sIG9rOwotICAgICAgICBpbnQgcG9ydElu
dCA9IHBvcnQudG9JbnRTdHJpY3Qob2spOwotICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAw
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0
cmluZygwLCBjb2xvbkluZGV4KTsKLSAgICB9Ci0KLSAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7Ci0g
ICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0
YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwotCi0gICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9z
dFN0YXJ0KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2Rl
ZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAgIGlmICghcG9y
dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKHBvcnQpOwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7Ci0K
LSAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3Rl
cnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCi17Ci0g
ICAgYXV0byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgewot
ICAgICAgICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7Ci0gICAgICAgIGF1dG8qIGRhdGEg
PSB1dGY4LmRhdGEoKTsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBh
dXRvIGxlbmd0aCA9IHV0ZjgubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7
IGogPCBsZW5ndGg7IGorKykgewotICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKLSAgICAg
ICAgICAgIGlmIChzaG91bGRFbmNvZGUoYykpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnJScpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9B
U0NJSUhleERpZ2l0KGMpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5p
YmJsZVRvQVNDSUlIZXhEaWdpdChjKSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChjKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOwotICAgIH07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0
Lmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1
dFtpXSkpKQotICAgICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7Ci0gICAgfQotICAgIHJl
dHVybiBpbnB1dDsKLX0KLQotdm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQot
ewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTog
Tm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNo
IHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3Jl
IHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KLQotICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVu
ZDsKLSAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyB1ID0gcGVyY2Vu
dEVuY29kZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQp
OwotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2No
ZW1lRW5kICsgMSkpCi0gICAgICAgICAgICB1ID0gIi8vIiArIHU7Ci0gICAgICAgIC8vIEFkZCAn
QCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAgICAgICAgaWYgKGVuZCA9PSBtX2hv
c3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkK
LSAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5n
VmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cg
aGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyRW5kID09
IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdA
JykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBh
cnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0
byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7Ci0gICAg
ICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZyku
bGVmdChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7
Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotdm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKLXsKLSAgICBp
ZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9w
YXNzd29yZEVuZDsKLSAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJp
bmcgcCA9ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6
OmlzSW5Vc2VySW5mb0VuY29kZVNldCkgKyAiQCI7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICBwID0g
Ii8vIiArIHA7Ci0gICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBn
b2luZyB0byBhZGQgb3VyIG93bi4KLSAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9z
dHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgVVJMUGFy
c2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5k
KSwgcCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdA
JyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAo
bV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdb
ZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBu
b3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQp
IHsKLSAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhl
bmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotdm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlk
ZW50aWZpZXIpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5
IGhhcHBlbnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPwotICAgIC8vIEZJWE1FOiBJ
cyBpdCBjb3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9u
LUFTQ0lJIGNoYXJhY3RlcnM/Ci0gICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVu
dGlmaWVyKSB9LnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBBU1NFUlQoIW1fcXVlcnlF
bmQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJp
bmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kKQotICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxl
ZnQobV9xdWVyeUVuZCk7Ci19Ci0KLXZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRl
bnRpZmllcigpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQpOwotICAgIG1fcXVlcnlFbmQgPSBt
X3BhdGhFbmQ7Ci19Ci0KLXZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQot
ewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTog
JyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQu
Ci0gICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5j
b2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBhY2Nlc3MgdG8gdGhl
IGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTYxMTc2Ci0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAh
cXVlcnkuaXNOdWxsKCkpIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFy
c2VyLnJlc3VsdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMg
PSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfQotCi19Ci0KLXZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0
IFN0cmluZyYgcykKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgU3RyaW5nIHBhdGggPSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9
ICcvJykKLSAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0KLSAgICBhdXRvIHF1ZXN0aW9uTWFy
a09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNo
YXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKLSAgICB9OwotICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCAr
IG1fcG9ydExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFy
a09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQp
KSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLWJvb2wgZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBp
ZiAoYS5tX3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHVuc2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtp
XSAhPSBiLnN0cmluZygpW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVS
TCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhF
bmQoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7Ci0gICAg
ICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIHByb3RvY29sSG9z
dEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBpZiAo
YS5tX3NjaGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBo
b3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0
U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9o
b3N0RW5kIC0gYi5ob3N0U3RhcnQoKTsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0
aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAg
IGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gQW5kIHRoZSBob3N0Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9z
dFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgaG9zdHNB
cmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICB1bnNpZ25lZCBob3N0
U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9o
b3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3Rh
cnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0
QjsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7
Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hv
c3RTdGFydEIgKyBpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5n
JiBkb21haW4pIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBpZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOwotICAgIGlmICghaG9zdC5lbmRzV2l0
aChkb21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaG9zdC5sZW5n
dGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxl
bmd0aCgpIC0gMV0gPT0gJy4nOwotfQotCi1TdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVl
bmNlcyhjb25zdCBTdHJpbmcmIGlucHV0KQotewotICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hh
cmFjdGVycyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwotfQotCi1i
b29sIFVSTDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAotewotICAgIGlmICghbV9pc1ZhbGlkKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9
PSAnOicpOwotICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKLX0K
LQotdm9pZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25z
dAotewotICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFs
bCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQotICAgIC8vIFRoYXQncyBmaW5lIGZvciBh
IHZhbGlkIFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMu
Ci0gICAgYnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgY29weUFTQ0lJKG1f
c3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xh
c3M+Ci1ib29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25z
dCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1h
a2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmlu
Z1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHBy
b3RvY29sKSkpOwotICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwLCBqID0gMDsgdXJsW2ldOyArK2kpIHsKLSAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdo
aXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICAgICAgaWYgKGlzTGVhZGluZyAm
JiBzaG91bGRUcmltRnJvbVVSTCh1cmxbaV0pKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlzTGVhZGluZyA9IGZhbHNlOwotCi0gICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5l
d2xpbmVzLgotICAgICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwg
dXJsW2ldID09ICdcbicpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIXBy
b3RvY29sW2pdKQotICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7Ci0gICAgICAgIGlm
ICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICArK2o7Ci0gICAgfQotICAgIAotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwg
cHJvdG9jb2wpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIHJldHVybiBXZWJDb3JlOjpw
cm90b2NvbElzSW50ZXJuYWwoc3RyaW5nLCBwcm90b2NvbCk7Ci19Ci0KLSNpZm5kZWYgTkRFQlVH
Ci0KLXZvaWQgVVJMOjpwcmludCgpIGNvbnN0Ci17Ci0gICAgcHJpbnRmKCIlc1xuIiwgbV9zdHJp
bmcudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLSNlbmRpZgotCi1TdHJpbmcgVVJMOjpzdHJpcHBlZEZv
clVzZUFzUmVmZXJyZXIoKSBjb25zdAotewotICAgIFVSTCByZWZlcnJlcigqdGhpcyk7Ci0gICAg
cmVmZXJyZXIuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmco
KSk7Ci0gICAgcmVmZXJyZXIucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJu
IHJlZmVycmVyLnN0cmluZygpOwotfQotCi1ib29sIFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdAot
ewotICAgIC8vIEluY2x1ZGluZyBmZWVkIGhlcmUgbWlnaHQgYmUgYSBiYWQgaWRlYSBzaW5jZSBk
cmFnIGFuZCBkcm9wIHVzZXMgdGhpcyBjaGVjawotICAgIC8vIGFuZCBpbmNsdWRpbmcgZmVlZCB3
b3VsZCBhbGxvdyBmZWVkcyB0byBwb3RlbnRpYWxseSBsZXQgc29tZW9uZSdzIGJsb2cKLSAgICAv
LyByZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJkIG9uIGEgZHJhZywgZXZlbiB3aXRo
b3V0IGEgZHJvcC4KLSAgICAvLyBMaWtld2lzZSB3aXRoIHVzaW5nIHRoZSBGcmFtZUxvYWRlcjo6
c2hvdWxkVHJlYXRVUkxBc0xvY2FsKCkgZnVuY3Rpb24uCi0gICAgcmV0dXJuIHByb3RvY29sSXMo
ImZpbGUiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVy
bCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsK
LX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCkKLXsKLSAgICBy
ZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotYm9vbCBw
cm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIGF1dG8gbGVu
Z3RoID0gdXJsLmxlbmd0aCgpOwotICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFr
aW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCi0gICAgcmV0dXJuIGxlbmd0aCA+PSA1Ci0gICAgICAg
ICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzBdLCAnaCcpCi0gICAgICAgICYmIGlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzFdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlB
bHBoYUNhc2VsZXNzRXF1YWwodXJsWzJdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwodXJsWzNdLCAncCcpCi0gICAgICAgICYmICh1cmxbNF0gPT0gJzonIHx8IChp
c0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFs0XSwgJ3MnKSAmJiBsZW5ndGggPj0gNiAmJiB1
cmxbNV0gPT0gJzonKSk7Ci19Ci0KLWNvbnN0IFVSTCYgYmxhbmtVUkwoKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJvdXQ6Ymxhbmsi
KTsKLSAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7Ci19Ci0KLWJvb2wgVVJMOjppc0JsYW5rVVJM
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJcygiYWJvdXQiKTsKLX0KLQotYm9vbCBw
b3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBwb3J0ID0gdXJsLnBvcnQoKTsKLQotICAgIC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZl
IGEgcG9ydCwgcmV0dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBvcnQiIGNhc2UuCi0gICAgaWYgKCFw
b3J0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxp
c3QgbWF0Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KLSAg
ICAvLyBTZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5p
bmcuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qg
YmxvY2tlZFBvcnRMaXN0W10gPSB7Ci0gICAgICAgIDEsICAgIC8vIHRjcG11eAotICAgICAgICA3
LCAgICAvLyBlY2hvCi0gICAgICAgIDksICAgIC8vIGRpc2NhcmQKLSAgICAgICAgMTEsICAgLy8g
c3lzdGF0Ci0gICAgICAgIDEzLCAgIC8vIGRheXRpbWUKLSAgICAgICAgMTUsICAgLy8gbmV0c3Rh
dAotICAgICAgICAxNywgICAvLyBxb3RkCi0gICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KLSAgICAg
ICAgMjAsICAgLy8gRlRQLWRhdGEKLSAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKLSAgICAg
ICAgMjIsICAgLy8gU1NICi0gICAgICAgIDIzLCAgIC8vIHRlbG5ldAotICAgICAgICAyNSwgICAv
LyBTTVRQCi0gICAgICAgIDM3LCAgIC8vIHRpbWUKLSAgICAgICAgNDIsICAgLy8gbmFtZQotICAg
ICAgICA0MywgICAvLyBuaWNuYW1lCi0gICAgICAgIDUzLCAgIC8vIGRvbWFpbgotICAgICAgICA3
NywgICAvLyBwcml2LXJqcwotICAgICAgICA3OSwgICAvLyBmaW5nZXIKLSAgICAgICAgODcsICAg
Ly8gdHR5bGluawotICAgICAgICA5NSwgICAvLyBzdXBkdXAKLSAgICAgICAgMTAxLCAgLy8gaG9z
dHJpYW1lCi0gICAgICAgIDEwMiwgIC8vIGlzby10c2FwCi0gICAgICAgIDEwMywgIC8vIGdwcGl0
bnAKLSAgICAgICAgMTA0LCAgLy8gYWNyLW5lbWEKLSAgICAgICAgMTA5LCAgLy8gUE9QMgotICAg
ICAgICAxMTAsICAvLyBQT1AzCi0gICAgICAgIDExMSwgIC8vIHN1bnJwYwotICAgICAgICAxMTMs
ICAvLyBhdXRoCi0gICAgICAgIDExNSwgIC8vIFNGVFAKLSAgICAgICAgMTE3LCAgLy8gdXVjcC1w
YXRoCi0gICAgICAgIDExOSwgIC8vIG5udHAKLSAgICAgICAgMTIzLCAgLy8gTlRQCi0gICAgICAg
IDEzNSwgIC8vIGxvYy1zcnYgLyBlcG1hcAotICAgICAgICAxMzksICAvLyBuZXRiaW9zCi0gICAg
ICAgIDE0MywgIC8vIElNQVAyCi0gICAgICAgIDE3OSwgIC8vIEJHUAotICAgICAgICAzODksICAv
LyBMREFQCi0gICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCi0gICAgICAgIDUxMiwgIC8vIHByaW50
IC8gZXhlYwotICAgICAgICA1MTMsICAvLyBsb2dpbgotICAgICAgICA1MTQsICAvLyBzaGVsbAot
ICAgICAgICA1MTUsICAvLyBwcmludGVyCi0gICAgICAgIDUyNiwgIC8vIHRlbXBvCi0gICAgICAg
IDUzMCwgIC8vIGNvdXJpZXIKLSAgICAgICAgNTMxLCAgLy8gQ2hhdAotICAgICAgICA1MzIsICAv
LyBuZXRuZXdzCi0gICAgICAgIDU0MCwgIC8vIFVVQ1AKLSAgICAgICAgNTQ4LCAgLy8gYWZwb3Zl
cnRjcCBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDU1NiwgIC8vIHJlbW90ZWZzCi0gICAgICAg
IDU2MywgIC8vIE5OVFArU1NMCi0gICAgICAgIDU4NywgIC8vIEVTTVRQCi0gICAgICAgIDYwMSwg
IC8vIHN5c2xvZy1jb25uCi0gICAgICAgIDYzNiwgIC8vIExEQVArU1NMCi0gICAgICAgIDk5Mywg
IC8vIElNQVArU1NMCi0gICAgICAgIDk5NSwgIC8vIFBPUDMrU1NMCi0gICAgICAgIDIwNDksIC8v
IE5GUwotICAgICAgICAzNjU5LCAvLyBhcHBsZS1zYXNsIC8gUGFzc3dvcmRTZXJ2ZXIgW0FwcGxl
IGFkZGl0aW9uXQotICAgICAgICA0MDQ1LCAvLyBsb2NrZAotICAgICAgICA0MTkwLCAvLyBNYW5h
Z2VTaWV2ZSBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDYwMDAsIC8vIFgxMQotICAgICAgICA2
NjY1LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2NiwgLy8g
QWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjcsIC8vIFN0YW5kYXJk
IElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0Fw
cGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRp
dGlvbl0KLSAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9u
XQotICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgaW52
YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJz
Ci0gICAgfTsKLQotICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0
IGxpc3QsIGFsbG93IGl0LgotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJs
b2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKLSAgICBpZiAoIXN0
ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJs
b2NrZWRQb3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgLy8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2Vz
LgotICAgIGlmICgocG9ydC52YWx1ZSgpID09IDIxIHx8IHBvcnQudmFsdWUoKSA9PSAyMikgJiYg
dXJsLnByb3RvY29sSXMoImZ0cCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEFs
bG93IGFueSBwb3J0IG51bWJlciBpbiBhIGZpbGUgVVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIg
aXMgaWdub3JlZC4KLSAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGUiKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21E
YXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJu
YWwodXJsLCAiZGF0YSIpKTsKLQotICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2
aW9yIHdoZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVy
PwotICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9u
IGluIHRoYXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJlY3QuCi0gICAgYXV0byBpbmRleCA9
IHVybC5maW5kKCc7JywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBp
bmRleCA9IHVybC5maW5kKCcsJywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUg
aXQgc291bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcgdGV4dC9wbGFpbi4KLSAgICAg
ICAgLy8gQnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNv
bWUgdGltZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBhdCB0aGlzIHRpbWUuCi0gICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLSAgICBpZiAoaW5kZXggPT0gNSkKLSAg
ICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOwotICAgIEFTU0VSVChpbmRleCA+PSA1KTsKLSAg
ICByZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCk7Ci19Ci0KLVN0cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1
bnNpZ25lZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHN0cmluZygpOwotCi0gICAgcmV0dXJuIHN0cmluZygpLmxl
ZnQobGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0g
Mik7Ci19Ci0KLVVSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYg
cmVsYXRpdmVQYXJ0KQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6
Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsK
LX0KLQotVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7
Ci19Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYg
dXJsKQotewotICAgIHRzIDw8IHVybC5zdHJpbmcoKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLSNp
ZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoU09VUCkKLXN0YXRpYyBib29sIGlzSVB2NEFkZHJl
c3MoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYXV0byBjb3VudCA9IDA7Ci0KLSAgICBmb3Ig
KGNvbnN0IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicp
KSB7Ci0gICAgICAgIGlmIChjb3VudCA+PSA0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gb2N0ZXQubGVuZ3RoKCk7Ci0gICAgICAgIGlm
ICghbGVuZ3RoIHx8IGxlbmd0aCA+IDMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgYXV0byB2YWx1ZSA9IDA7Ci0gICAgICAgIGZvciAoYXV0byBpID0gMHU7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgY29uc3QgYXV0byBkaWdpdCA9IG9jdGV0W2ldOwotCi0g
ICAgICAgICAgICAvLyBQcm9oaWJpdCBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmIChk
aWdpdCA+ICc5JyB8fCBkaWdpdCA8ICghaSAmJiBsZW5ndGggPiAxID8gJzEnIDogJzAnKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHZhbHVlID0gMTAgKiB2
YWx1ZSArIChkaWdpdCAtICcwJyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodmFsdWUgPiAy
NTUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgY291bnQrKzsKLSAgICB9
Ci0KLSAgICByZXR1cm4gKGNvdW50ID09IDQpOwotfQotCi1zdGF0aWMgYm9vbCBpc0lQdjZBZGRy
ZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGVudW0gU2tpcFN0YXRlIHsgTm9uZSwgV2ls
bFNraXAsIFNraXBwaW5nLCBTa2lwcGVkLCBGaW5hbCB9OwotICAgIGF1dG8gc2tpcFN0YXRlID0g
Tm9uZTsKLSAgICBhdXRvIGNvdW50ID0gMDsKLQotICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQg
OiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnOicpKSB7Ci0gICAgICAgIGlmIChj
b3VudCA+PSA4IHx8IHNraXBTdGF0ZSA9PSBGaW5hbCkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IGhleHRldC5sZW5ndGgoKTsKLSAgICAg
ICAgaWYgKCFsZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIDo6IG1heSBiZSB1c2VkIGFueXdoZXJl
IHRvIHNraXAgMSB0byA4IGhleHRldHMsIGJ1dCBvbmx5IG9uY2UuCi0gICAgICAgICAgICBpZiAo
c2tpcFN0YXRlID09IFNraXBwZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IE5vbmUpCi0gICAgICAgICAgICAgICAgc2tpcFN0
YXRlID0gIWNvdW50ID8gV2lsbFNraXAgOiBTa2lwcGluZzsKLSAgICAgICAgICAgIGVsc2UgaWYg
KHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lw
cGluZzsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5h
bDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNraXBT
dGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBp
ZiAoc2tpcFN0YXRlID09IFNraXBwaW5nKQotICAgICAgICAgICAgc2tpcFN0YXRlID0gU2tpcHBl
ZDsKLQotICAgICAgICBpZiAobGVuZ3RoID4gNCkgewotICAgICAgICAgICAgLy8gQW4gSVB2NCBh
ZGRyZXNzIG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBmaW5hbCB0d28gaGV4dGV0cy4KLSAg
ICAgICAgICAgIGlmICgoc2tpcFN0YXRlID09IE5vbmUgJiYgY291bnQgIT0gNikgfHwgKHNraXBT
dGF0ZSA9PSBTa2lwcGVkICYmIGNvdW50ID49IDYpIHx8ICFpc0lQdjRBZGRyZXNzKGhleHRldCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBza2lwU3RhdGUg
PSBGaW5hbDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9y
IChjb25zdCBhdXRvIGNvZGVVbml0IDogaGV4dGV0LmNvZGVVbml0cygpKSB7Ci0gICAgICAgICAg
ICAvLyBJUHY2IGFsbG93cyBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmICghaXNBU0NJ
SUhleERpZ2l0KGNvZGVVbml0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb3VudCsrOwotICAgIH0KLQotICAgIHJldHVybiAoY291bnQgPT0g
OCAmJiBza2lwU3RhdGUgPT0gTm9uZSkgfHwgc2tpcFN0YXRlID09IFNraXBwZWQgfHwgc2tpcFN0
YXRlID09IEZpbmFsOwotfQotCi1ib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcg
aG9zdCkKLXsKLSAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0gbm90Rm91bmQpCi0gICAgICAgIHJl
dHVybiBpc0lQdjRBZGRyZXNzKGhvc3QpOwotCi0gICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9z
dCk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YwZTM4YTcxYjYxYjRmZGE4MTZiNzRk
NTMzOTM1ZGY0MzFiNjZkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAorKysgL2Rldi9udWxsCkBAIC0x
LDM5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBVU0UoQ0YpCi10
eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKLSNlbmRpZgotCi0jaWYgVVNF
KFNPVVApCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKLSNlbmRpZgotCi0jaWYgVVNFKEZP
VU5EQVRJT04pCi1PQkpDX0NMQVNTIE5TVVJMOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewot
Y2xhc3MgVGV4dFN0cmVhbTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkxU
ZXh0RW5jb2RpbmcgewotcHVibGljOgotICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29k
ZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgflVSTFRl
eHRFbmNvZGluZygpIHsgfTsKLX07Ci0KLXN0cnVjdCBVUkxIYXNoOwotCi1jbGFzcyBVUkwgewot
cHVibGljOgotICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3Ry
aW5nLgotICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9Ci0KLSAgICBleHBsaWNpdCBVUkwoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAgLy8g
UmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJv
dmlkZWQsIHRoZQotICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24t
QVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0
eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMK
LSAgICAvLyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFs
aWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJ
IHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMK
LSAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4K
LSAgICBXRUJDT1JFX0VYUE9SVCBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJl
bGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0
aChjb25zdCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIo
KSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBo
YXJtb25pemVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBl
bXB0eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8vIHN0YW5kYXJk
IFN0cmluZyBjb25zdHJ1Y3Rvci4KLQotICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVs
IG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIKLSAgICAvLyB0aHJlYWQu
IFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0
aGVyZSdzCi0gICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29w
eSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIGlz
b2xhdGVkQ29weSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4K
LSAgICAvLyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQu
Ci0gICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGlj
YWwoKTsgfQotCi0gICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGll
cmFyY2hpY2FsKCk7IH0KLSAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7Ci0KLSAgICBj
b25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0KLSAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2ln
bmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmll
dyBwcm90b2NvbCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaG9zdCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQo
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHBhc3MoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotCi0gICAgYm9vbCBo
YXNVc2VybmFtZSgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKLSAgICBi
b29sIGhhc1F1ZXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OwotICAg
IGJvb2wgaGFzUGF0aCgpIGNvbnN0OwotCi0gICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygp
LCB0aGVzZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAgLy8g
VGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVu
Y29kaW5nIGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgotICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBlbmNvZGVkVXNlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBl
bmNvZGVkUGFzcygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGJhc2VBc1N0
cmluZygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZpbGVTeXN0ZW1QYXRo
KCkgY29uc3Q7Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJv
dG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCi0gICAgLy8gdGVybWluYXRlZCBBU0NJSSBh
cmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KLSAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OwotICAgIGJvb2wgcHJvdG9j
b2xJcyhTdHJpbmdWaWV3KSBjb25zdDsKLSAgICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3Qg
eyByZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNMb2NhbEZp
bGUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQmxhbmtVUkwoKSBjb25zdDsK
LSAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJlQUJh
c2VVUkw7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihjb25z
dCBTdHJpbmcmKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0UHJvdG9jb2wo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwotCi0gICAg
dm9pZCByZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKLQot
ICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgotICAgIHZv
aWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHNldFVzZXIoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOwotCi0gICAgLy8g
SWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVz
dWx0aW5nIHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFBhdGgoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdp
dGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAotICAgIC8v
IGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2
ZSBhICI/IiBpbiB0aGUKLSAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNs
ZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOwotCi0gICAgdW5zaWduZWQg
cGF0aFN0YXJ0KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCgpIGNvbnN0OwotICAgIHVu
c2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0OwotCi0gICAgb3BlcmF0b3IgY29uc3Qg
U3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0KLSNpZiBVU0UoQ0YpCi0gICAg
V0VCQ09SRV9FWFBPUlQgVVJMKENGVVJMUmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShTT1VQ
KQotICAgIFVSTChTb3VwVVJJKik7Ci0gICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBjcmVhdGVTb3Vw
VVJJKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFdFQkNPUkVf
RVhQT1JUIFVSTChOU1VSTCopOwotICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TVVJMKigp
IGNvbnN0OwotI2VuZGlmCi0jaWZkZWYgX19PQkpDX18KLSAgICBvcGVyYXRvciBOU1N0cmluZyoo
KSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQotI2VuZGlmCi0KLSNpZm5kZWYgTkRFQlVHCi0g
ICAgdm9pZCBwcmludCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOwotICAgIHRlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVy
Jik7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNlcjsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKLSAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNv
bnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKLSAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8
Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdDsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25z
dDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
ZnJpZW5kIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGhvc3RzQXJlRXF1YWwoY29u
c3QgVVJMJiwgY29uc3QgVVJMJik7Ci0KLSAgICBTdHJpbmcgbV9zdHJpbmc7Ci0KLSAgICB1bnNp
Z25lZCBtX2lzVmFsaWQgOiAxOwotICAgIHVuc2lnbmVkIG1fcHJvdG9jb2xJc0luSFRUUEZhbWls
eSA6IDE7Ci0gICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDogMTsKLQotICAgIC8vIFRo
aXMgaXMgb3V0IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRzIGJldHRlci4gVGhlIHBvcnQgaXMg
YWZ0ZXIgdGhlIGhvc3QuCi0gICAgdW5zaWduZWQgbV9wb3J0TGVuZ3RoIDogMzsKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGggPSAoMSA8PCAzKSAtIDE7Ci0KLSAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVtZUxlbmd0aCA9ICgxIDw8IDI2KSAt
IDE7Ci0gICAgdW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsKLSAgICB1bnNpZ25lZCBtX3VzZXJT
dGFydDsKLSAgICB1bnNpZ25lZCBtX3VzZXJFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXNzd29yZEVu
ZDsKLSAgICB1bnNpZ25lZCBtX2hvc3RFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7Ci0gICAgdW5zaWduZWQgbV9wYXRoRW5kOwotICAgIHVuc2lnbmVkIG1fcXVlcnlFbmQ7
Ci19OwotCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVvZihTdHJpbmcpICsgOCAq
IHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwiKTsKLQotdGVtcGxhdGUg
PGNsYXNzIEVuY29kZXI+Ci12b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Ci17Ci0gICAgZW5jb2RlciA8PCBtX3N0cmluZzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+Ci1ib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYgdXJsKQotewotICAg
IGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsKLSAgICBpZiAoIW9wdGlv
bmFsVVJMKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdXJsID0gV1RGTW92ZSgqb3B0aW9u
YWxVUkwpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4K
LXN0ZDo6b3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAg
IFN0cmluZyBzdHJpbmc7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBVUkwoVVJMKCksIHN0cmluZyk7Ci19
Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmlu
Z1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci1XRUJDT1JFX0VYUE9S
VCBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwm
KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBV
UkwmKTsKLQotV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiBibGFua1VSTCgpOwotCi0vLyBGdW5j
dGlvbnMgdG8gZG8gVVJMIG9wZXJhdGlvbnMgb24gc3RyaW5ncy4KLS8vIFRoZXNlIGFyZSBvcGVy
YXRpb25zIHRoYXQgYXJlbid0IGZhc3RlciBvbiBhIHBhcnNlZCBVUkwuCi0vLyBUaGVzZSBhcmUg
YWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3Qg
cmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KLS8vIFRo
aXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMg
YXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFVSTC4KLQotV0VCQ09SRV9F
WFBPUlQgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90
b2NvbCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0
cmluZyYgdXJsKTsKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpOwot
V0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYg
dXJsKTsKLQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChT
dHJpbmdWaWV3IHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwotV0VCQ09SRV9F
WFBPUlQgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRo
YXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCi0KLVdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZf
dCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwotCi1ib29sIGlzVmFsaWRQ
cm90b2NvbChjb25zdCBTdHJpbmcmKTsKLQotU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29u
c3QgU3RyaW5nJiB1cmwpOwotCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8g
ZXhwb3NlLCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcg
cGVyIHRoZSBVUkwgU3RhbmRhcmQuCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZW5jb2RlV2l0aFVS
TEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKLQotLy8gSW5saW5lcy4KLQotaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1
cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygp
ID09IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25z
dCBVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5zdHJpbmcoKTsKLX0KLQotaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4g
YS5zdHJpbmcoKSAhPSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpICE9
IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBV
UkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKLX0KLQotLy8gSW5saW5lIHZl
cnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxp
bmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0
aGUgY2xhc3MgZGVmaW5pdGlvbi4KLQotaW5saW5lIGJvb2wgVVJMOjppc051bGwoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3N0cmluZy5pc051bGwoKTsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpp
c0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOwotfQotCi1p
bmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQ7
Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUGF0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cGF0aEVuZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19Ci0KLWlubGluZSBib29sIFVS
TDo6aGFzVXNlcm5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZXJFbmQgPiBtX3VzZXJT
dGFydDsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpoYXNQYXNzd29yZCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fcGFzc3dvcmRFbmQgPiAobV91c2VyRW5kICsgMSk7Ci19Ci0KLWlubGluZSBib29s
IFVSTDo6aGFzUXVlcnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3F1ZXJ5RW5kID4gbV9wYXRo
RW5kOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZDsKLX0KLQot
aW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwotfQotCi1pbmxpbmUgdW5zaWduZWQgVVJM
OjpwYXRoU3RhcnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2hvc3RFbmQgKyBtX3BvcnRMZW5n
dGg7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhFbmQoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3BhdGhFbmQ7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RT
bGFzaCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFzdFNsYXNoOwotfQotCi1X
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+OwotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxXZWJDb3JlOjpVUkw+OwotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkxIYXNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZDBhYjk2ZGEzNWQz
MWFjOGRiNGViNGRhYmQzZjRlMTU5MmI4MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMSGFzaC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVSTEhhc2hfaAotI2RlZmluZSBVUkxIYXNoX2gKLQot
I2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAg
c3RydWN0IFVSTEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwm
IGtleSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCkt
Pmhhc2goKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVS
TCYgYSwgY29uc3QgVVJMJiBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5n
SGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNl
OwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LS8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nCi10ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+IHsKLSAgICB1c2luZyBIYXNoID0gV2ViQ29y
ZTo6VVJMSGFzaDsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6
VVJMPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+IHsgfTsKLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkxQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2JhYzQ5ZDliNjVk
ZThiMTA0ZDVhNmY3NWIyNTgwYjhiODkyYzZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyOTI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLQotI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlIDxh
cnJheT4KLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5j
bHVkZSA8dW5pY29kZS91dHlwZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jZGVmaW5l
IFVSTF9QQVJTRVJfREVCVUdHSU5HIDAKLQotI2lmIFVSTF9QQVJTRVJfREVCVUdHSU5HCi0jZGVm
aW5lIFVSTF9QQVJTRVJfTE9HKC4uLikgTE9HKFVSTFBhcnNlciwgX19WQV9BUkdTX18pCi0jZWxz
ZQotI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pCi0jZW5kaWYKLSAgICAKLXRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1jbGFzcyBDb2RlUG9pbnRJdGVyYXRvciB7Ci1wdWJsaWM6
Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcigpIHsgfQotICAgIEFMV0FZU19J
TkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogYmVnaW4sIGNvbnN0
IENoYXJhY3RlclR5cGUqIGVuZCkKLSAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQotICAgICAgICAs
IG1fZW5kKGVuZCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgQ29kZVBv
aW50SXRlcmF0b3IoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIGJlZ2luLCBjb25zdCBDb2RlUG9p
bnRJdGVyYXRvciYgZW5kKQotICAgICAgICA6IENvZGVQb2ludEl0ZXJhdG9yKGJlZ2luLm1fYmVn
aW4sIGVuZC5tX2JlZ2luKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGVuZC5tX2JlZ2luID49IGJl
Z2luLm1fYmVnaW4pOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIgb3Bl
cmF0b3IqKCkgY29uc3Q7Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvciYgb3Bl
cmF0b3IrKygpOwotCi0gICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmVn
aW4gPT0gb3RoZXIubV9iZWdpbgotICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7
Ci0gICAgfQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAg
ICAKLSAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3ImIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9iZWdpbiA9IG90aGVy
Lm1fYmVnaW47Ci0gICAgICAgIG1fZW5kID0gb3RoZXIubV9lbmQ7Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgYXRFbmQoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fYmVnaW4gPD0gbV9lbmQpOwotICAgICAgICByZXR1cm4gbV9i
ZWdpbiA+PSBtX2VuZDsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29k
ZVVuaXRzU2luY2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogcmVmZXJlbmNlKSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fYmVnaW4gPj0gcmVmZXJlbmNlKTsKLSAgICAgICAgcmV0dXJuIG1f
YmVnaW4gLSByZWZlcmVuY2U7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29k
ZVVuaXRzU2luY2UoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGNvZGVVbml0c1NpbmNlKG90aGVyLm1fYmVnaW4pOwotICAgIH0KLSAg
ICAKLXByaXZhdGU6Ci0gICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogbV9iZWdpbiB7IG51bGxwdHIg
fTsKLSAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2VuZCB7IG51bGxwdHIgfTsKLX07Ci0KLXRl
bXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46
Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFhdEVuZCgpKTsKLSAgICByZXR1cm4g
Km1fYmVnaW47Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgYXV0byBDb2RlUG9pbnRJ
dGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKysoKSAtPiBDb2RlUG9pbnRJdGVyYXRvciYKLXsKLSAg
ICBtX2JlZ2luKys7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNf
SU5MSU5FIFVDaGFyMzIgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+OjpvcGVyYXRvciooKSBjb25z
dAotewotICAgIEFTU0VSVCghYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjOwotICAgIFUxNl9HRVQo
bV9iZWdpbiwgMCwgMCwgbV9lbmQgLSBtX2JlZ2luLCBjKTsKLSAgICByZXR1cm4gYzsKLX0KLQot
dGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPjo6
b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgotewotICAgIHVuc2lnbmVkIGkgPSAw
OwotICAgIHNpemVfdCBsZW5ndGggPSBtX2VuZCAtIG1fYmVnaW47Ci0gICAgVTE2X0ZXRF8xKG1f
YmVnaW4sIGksIGxlbmd0aCk7Ci0gICAgbV9iZWdpbiArPSBpOwotICAgIHJldHVybiAqdGhpczsK
LX0KLSAgICAKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgYXBwZW5kQ29kZVBvaW50KFZlY3Rv
cjxVQ2hhcj4mIGRlc3RpbmF0aW9uLCBVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBpZiAoVV9J
U19CTVAoY29kZVBvaW50KSkgewotICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoc3RhdGljX2Nh
c3Q8VUNoYXI+KGNvZGVQb2ludCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGRlc3Rp
bmF0aW9uLnJlc2VydmVDYXBhY2l0eShkZXN0aW5hdGlvbi5zaXplKCkgKyAyKTsKLSAgICBkZXN0
aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X0xFQUQoY29kZVBvaW50KSk7Ci0gICAgZGVzdGlu
YXRpb24udW5jaGVja2VkQXBwZW5kKFUxNl9UUkFJTChjb2RlUG9pbnQpKTsKLX0KLQotZW51bSBV
UkxDaGFyYWN0ZXJDbGFzcyB7Ci0gICAgVXNlckluZm8gPSAweDEsCi0gICAgRGVmYXVsdCA9IDB4
MiwKLSAgICBGb3JiaWRkZW5Ib3N0ID0gMHg0LAotICAgIFF1ZXJ5UGVyY2VudCA9IDB4OCwKLSAg
ICBTbGFzaFF1ZXN0aW9uT3JIYXNoID0gMHgxMCwKLSAgICBWYWxpZFNjaGVtZSA9IDB4MjAsCi19
OwotCi1zdGF0aWMgY29uc3QgdWludDhfdCBjaGFyYWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7Ci0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8g
MHgwCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEKLSAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MgotICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgzCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4NQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg2
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDcKLSAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4OAotICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4OQotICAgIFVzZXJJbmZv
IHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4QQotICAgIFVz
ZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhCCi0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweEQKLSAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4RQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCwgLy8gMHhGCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDEwCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDExCi0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEyCi0gICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEzCi0gICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE0Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweDE1Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDE2Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE3
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE4Ci0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE5Ci0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFBCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDFCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDFDCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAw
eDFECi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFFCi0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFGCi0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyAnCi0gICAgMCwg
Ly8gJyEnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAnIicKLSAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNo
IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyMnCi0gICAgMCwgLy8gJyQnCi0gICAgRm9yYmlkZGVuSG9z
dCwgLy8gJyUnCi0gICAgMCwgLy8gJyYnCi0gICAgMCwgLy8gJ1wnJwotICAgIDAsIC8vICcoJwot
ICAgIDAsIC8vICcpJwotICAgIDAsIC8vICcqJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnKycKLSAg
ICAwLCAvLyAnLCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJy0nCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICcuJwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3Qs
IC8vICcvJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzEn
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICcyJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMycKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJzQnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc1JwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnNicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzcnCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICc4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnOScKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhv
c3QsIC8vICc6JwotICAgIFVzZXJJbmZvLCAvLyAnOycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnPCcKLSAgICBVc2VySW5mbywgLy8g
Jz0nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9z
dCwgLy8gJz4nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8
IEZvcmJpZGRlbkhvc3QsIC8vICc/JwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8g
J0AnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdBJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnQicKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJ0MnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdEJwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnRScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0YnCi0gICAgVmFsaWRTY2hlbWUs
IC8vICdHJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0kn
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICdKJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSycKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ0wnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdNJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnTicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ08nCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICdQJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnUScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1InCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdTJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnVCcKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ1UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdWJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnVycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdZ
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnWicKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3Qs
IC8vICdbJwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhv
c3QsIC8vICdcXCcKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICddJwotICAgIFVz
ZXJJbmZvLCAvLyAnXicKLSAgICAwLCAvLyAnXycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8v
ICdgJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnYScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2InCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdjJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnZCcKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ2UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdmJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnZycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdp
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnaicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2snCi0gICAg
VmFsaWRTY2hlbWUsIC8vICdsJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnbScKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJ24nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdvJwotICAgIFZhbGlkU2NoZW1lLCAv
LyAncCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3EnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdyJwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAncycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3QnCi0gICAgVmFs
aWRTY2hlbWUsIC8vICd1JwotICAgIFZhbGlkU2NoZW1lLCAvLyAndicKLSAgICBWYWxpZFNjaGVt
ZSwgLy8gJ3cnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAn
eScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3onCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAn
eycKLSAgICBVc2VySW5mbywgLy8gJ3wnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAnfScK
LSAgICAwLCAvLyAnficKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4N0YKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4ODAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODEKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4ODIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODMKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4ODQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
ODYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODgK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEEKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OEIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEMKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OEQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEUKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OEYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTAKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTIKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTQKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTYKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUIK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUQKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUYKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTEKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTMKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTUKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTcKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTkKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUUK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjAKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QjEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjIKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjQKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QjUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjYKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjgKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkEKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkMKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QkYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzEK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzMKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QzQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzUKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QzYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzcKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QzgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzkKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4Q0EKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0IKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4Q0MKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0QKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4Q0UKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0YKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RDAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RDIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDQK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDYKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RDcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDgKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RDkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REEKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4REIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REMKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4REQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REUKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4REYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTAKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTIKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTcK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTkKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUIKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUQKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUYKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RjAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjEKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RjIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjMKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RjQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjUKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RjYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RjgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkEK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkMKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkUKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RkYKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRyb2woQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweDFGOyB9Ci10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzQzBDb250cm9sT3JT
cGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MjA7
IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGlj
IGJvb2wgaXNUYWJPck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNo
YXJhY3RlciA8PSAweEQgJiYgY2hhcmFjdGVyID49IDB4OSAmJiBjaGFyYWN0ZXIgIT0gMHhCICYm
IGNoYXJhY3RlciAhPSAweEM7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblNpbXBsZUVuY29kZVNldChDaGFyYWN0ZXJUeXBl
IGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3RSB8fCBpc0MwQ29udHJvbChjaGFy
YWN0ZXIpOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBib29sIGlzSW5EZWZhdWx0RW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVy
KSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFj
dGVyXSAmIERlZmF1bHQ7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZ
U19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5jb2RlU2V0KENoYXJhY3RlclR5cGUg
Y2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFi
bGVbY2hhcmFjdGVyXSAmIFVzZXJJbmZvOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzUGVyY2VudE9yTm9uQVNDSUkoQ2hhcmFj
dGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuICFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgY2hhcmFj
dGVyID09ICclJzsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goQ2hhcmFjdGVyVHlwZSBjaGFy
YWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXFwnICYmIGNoYXJhY3RlckNsYXNzVGFibGVb
Y2hhcmFjdGVyXSAmIFNsYXNoUXVlc3Rpb25Pckhhc2g7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNWYWxpZFNjaGVtZUNoYXJh
Y3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICd6JyAm
JiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBWYWxpZFNjaGVtZTsgfQotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0Zv
cmJpZGRlbkhvc3RDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNo
YXJhY3RlciA8PSAnXScgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgRm9yYmlk
ZGVuSG9zdDsgfQotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBzaG91bGRQZXJjZW50RW5jb2Rl
UXVlcnlCeXRlKHVpbnQ4X3QgYnl0ZSwgY29uc3QgYm9vbCYgdXJsSXNTcGVjaWFsKQotewotICAg
IGlmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2J5dGVdICYgUXVlcnlQZXJjZW50KQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBpZiAoYnl0ZSA9PSAnXCcnICYmIHVybElzU3BlY2lhbCkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFVSTFBhcnNlcjo6
aXNJblVzZXJJbmZvRW5jb2RlU2V0KFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6Omlz
SW5Vc2VySW5mb0VuY29kZVNldChjKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZSwgVVJMUGFyc2VyOjpSZXBvcnRTeW50YXhWaW9sYXRpb24gcmVwb3J0U3ludGF4VmlvbGF0
aW9uPgotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YWR2YW5jZShDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQotewotICAg
ICsraXRlcmF0b3I7Ci0gICAgd2hpbGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlz
VGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgIGlmIChyZXBvcnRTeW50YXhWaW9s
YXRpb24gPT0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXMpCi0gICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICsr
aXRlcmF0b3I7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgot
Ym9vbCBVUkxQYXJzZXI6OnRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0
U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIGlmIChpdGVyYXRvci5hdEVuZCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBv
cnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmF0
RW5kKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5M
SU5FIGJvb2wgVVJMUGFyc2VyOjppc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8
fCAhaXNBU0NJSUFscGhhKCppdGVyYXRvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
ZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9y
KTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoVU5M
SUtFTFkoKml0ZXJhdG9yID09ICd8JykpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJ
SUJ1ZmZlcihVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBBU1NFUlQoaXNBU0NJSShjb2RlUG9p
bnQpKTsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAg
ICBtX2FzY2lpQnVmZmVyLmFwcGVuZChjb2RlUG9pbnQpOwotfQotCi1BTFdBWVNfSU5MSU5FIHZv
aWQgVVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMs
IHNpemVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0
aW9uKSkKLSAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjph
cHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
IGl0ZXJhdG9yKQotewotICAgIEFTU0VSVChpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikp
OwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoKml0ZXJhdG9yKTsKLSAgICBhZHZhbmNlKGl0ZXJh
dG9yKTsKLSAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwotICAgIEFTU0VSVCgqaXRlcmF0
b3IgPT0gJzonIHx8ICppdGVyYXRvciA9PSAnfCcpOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJ3wn
KQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJzonKTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6
OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVSTCYgYmFzZSkKLXsKLSAgICBpZiAo
YmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5t
X2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCA8IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwot
ICAgICAgICBpZiAoYmFzZS5tX3N0cmluZy5pczhCaXQoKSkgewotICAgICAgICAgICAgY29uc3Qg
TENoYXIqIGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAg
Q29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJhc2Uu
bV9wb3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICAg
ICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFw
cGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczE2KCk7Ci0gICAgICAgICAgICBDb2Rl
UG9pbnRJdGVyYXRvcjxVQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3Bv
cnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAg
ICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5k
V2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRDb3B5
RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAg
ICBpZiAoIWlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhZHZhbmNlKGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgYWR2YW5jZShpdGVyYXRvcik7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiAhaXNTbGFzaFF1ZXN0aW9u
T3JIYXNoKCppdGVyYXRvcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVp
bnQ4X3QgYnl0ZSwgVmVjdG9yPExDaGFyPiYgYnVmZmVyKQotewotICAgIGJ1ZmZlci5hcHBlbmQo
JyUnKTsKLSAgICBidWZmZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUp
KTsKLSAgICBidWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsK
LX0KLQotdm9pZCBVUkxQYXJzZXI6OnBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSkKLXsK
LSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJyUnKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHVwcGVyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGJ5dGUpKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9BU0NJ
SUhleERpZ2l0KGJ5dGUpKTsKLX0KLQotY29uc3QgY2hhciByZXBsYWNlbWVudENoYXJhY3RlclVU
RjhQZXJjZW50RW5jb2RlZFsxMF0gPSAiJUVGJUJGJUJEIjsKLWNvbnN0IHNpemVfdCByZXBsYWNl
bWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCA9IHNpemVvZihyZXBsYWNlbWVu
dENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCkgLSAxOwotCi10ZW1wbGF0ZTxib29sKCppc0lu
Q29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5F
IHZvaWQgVVJMUGFyc2VyOjp1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCFpdGVyYXRvci5hdEVu
ZCgpKTsKLSAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVyYXRvcjsKLSAgICBpZiAoTElLRUxZ
KGlzQVNDSUkoY29kZVBvaW50KSkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzSW5Db2RlU2V0
KGNvZGVQb2ludCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwot
ICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBvaW50KTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvZGVQb2ludCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0luQ29kZVNldChjb2RlUG9p
bnQpLCAiaXNJbkNvZGVTZXQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBmb3Igbm9uLUFTQ0lJ
IGNoYXJhY3RlcnMiKTsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIAotICAg
IGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgewotICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkLCByZXBsYWNl
bWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgdWludDhfdCBidWZmZXJbVThfTUFYX0xFTkdUSF07Ci0gICAgaW50
MzJfdCBvZmZzZXQgPSAwOwotICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQsIGNv
ZGVQb2ludCk7Ci0gICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgb2Zmc2V0OyArK2kpCi0gICAg
ICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ1ZmZlcltpXSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UXVlcnlF
bmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQot
ewotICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjb2RlUG9pbnQg
PSAqaXRlcmF0b3I7Ci0gICAgaWYgKExJS0VMWShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7Ci0gICAg
ICAgIGlmIChVTkxJS0VMWShzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGNvZGVQb2ludCwg
bV91cmxJc1NwZWNpYWwpKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9y
KTsKLSAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0g
ICAgCi0gICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUihjb2RlUG9pbnQpKSB7Ci0gICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQs
IHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwotICAg
IGludDMyX3Qgb2Zmc2V0ID0gMDsKLSAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0
LCBjb2RlUG9pbnQpOwotICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytpKSB7
Ci0gICAgICAgIGF1dG8gYnl0ZSA9IGJ1ZmZlcltpXTsKLSAgICAgICAgaWYgKHNob3VsZFBlcmNl
bnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQotICAgICAgICAgICAgcGVy
Y2VudEVuY29kZUJ5dGUoYnl0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoYnl0ZSk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8
VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGF1dG8gZW5jb2RlZCA9
IGVuY29kaW5nLmVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldyhzb3VyY2UuZGF0YSgpLCBz
b3VyY2Uuc2l6ZSgpKSk7Ci0gICAgYXV0byogZGF0YSA9IGVuY29kZWQuZGF0YSgpOwotICAgIHNp
emVfdCBsZW5ndGggPSBlbmNvZGVkLnNpemUoKTsKLSAgICAKLSAgICBpZiAoIWxlbmd0aCA9PSAh
aXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHNpemVfdCBpID0gMDsKLSAgICBmb3Ig
KDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7
Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGRhdGFbaV07Ci0gICAgICAgIGlmIChVTkxJS0VMWShi
eXRlICE9ICppdGVyYXRvcikpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRv
cik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoVU5MSUtFTFko
c2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpKSB7Ci0g
ICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKLSAgICAgICAg
KytpdGVyYXRvcjsKLSAgICB9Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFi
T3JOZXdsaW5lKCppdGVyYXRvcikpCi0gICAgICAgICsraXRlcmF0b3I7Ci0gICAgQVNTRVJUKChp
ID09IGxlbmd0aCkgPT0gaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgZm9yICg7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAg
ICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOwotICAgICAgICBpZiAoc2hvdWxkUGVyY2VudEVuY29k
ZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCi0gICAgICAgICAgICBwZXJjZW50RW5j
b2RlQnl0ZShieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihieXRlKTsKLSAgICB9Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNl
cjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKLXsKLSAgICBzdGF0
aWMgY29uc3QgdWludDE2X3QgZnRwUG9ydCA9IDIxOwotICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCBnb3BoZXJQb3J0ID0gNzA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBQb3J0ID0g
ODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBzUG9ydCA9IDQ0MzsKLSAgICBzdGF0
aWMgY29uc3QgdWludDE2X3Qgd3NQb3J0ID0gODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90
IHdzc1BvcnQgPSA0NDM7Ci0gICAgCi0gICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7
Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgc3dp
dGNoIChzY2hlbWVbMF0pIHsKLSAgICBjYXNlICd3JzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgp
IHsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHdzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3Mn
Ci0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gd3NzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBjYXNl
ICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSA0OgotICAgICAg
ICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0g
PT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gaHR0cFBvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAg
ICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVb
M10gPT0gJ3AnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdzJykKLSAgICAgICAg
ICAgICAgICByZXR1cm4gaHR0cHNQb3J0OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgICAgIH0KLSAgICBjYXNlICdnJzoKLSAgICAgICAgaWYgKGxlbmd0aCA9PSA2Ci0gICAgICAg
ICAgICAmJiBzY2hlbWVbMV0gPT0gJ28nCi0gICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3An
Ci0gICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCi0gICAgICAgICAgICAmJiBzY2hlbWVb
NF0gPT0gJ2UnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNV0gPT0gJ3InKQotICAgICAgICAgICAg
cmV0dXJuIGdvcGhlclBvcnQ7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgY2Fz
ZSAnZic6Ci0gICAgICAgIGlmIChsZW5ndGggPT0gMwotICAgICAgICAgICAgJiYgc2NoZW1lWzFd
ID09ICd0JwotICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJykKLSAgICAgICAgICAgIHJl
dHVybiBmdHBQb3J0OwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotfQotCi1lbnVtIGNsYXNzIFNj
aGVtZSB7Ci0gICAgV1MsCi0gICAgV1NTLAotICAgIEZpbGUsCi0gICAgRlRQLAotICAgIEdvcGhl
ciwKLSAgICBIVFRQLAotICAgIEhUVFBTLAotICAgIE5vblNwZWNpYWwKLX07Ci0KLUFMV0FZU19J
TkxJTkUgc3RhdGljIFNjaGVtZSBzY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpCi17Ci0gICAgYXV0
byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJl
dHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKLSAgICBj
YXNlICdmJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSAzOgotICAg
ICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVb
Ml0gPT0gJ3AnKQotICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkZUUDsKLSAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAgICAg
ICAgIGlmIChzY2hlbWVbMV0gPT0gJ2knCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICdsJwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnZScpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6RmlsZTsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNw
ZWNpYWw7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25T
cGVjaWFsOwotICAgICAgICB9Ci0gICAgY2FzZSAnZyc6Ci0gICAgICAgIGlmIChsZW5ndGggPT0g
NgotICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJwotICAgICAgICAgICAgJiYgc2NoZW1l
WzJdID09ICdwJwotICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJwotICAgICAgICAgICAg
JiYgc2NoZW1lWzRdID09ICdlJwotICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKLSAg
ICAgICAgICAgIHJldHVybiBTY2hlbWU6OkdvcGhlcjsKLSAgICAgICAgcmV0dXJuIFNjaGVtZTo6
Tm9uU3BlY2lhbDsKLSAgICBjYXNlICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAg
ICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNd
ID09ICdwJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpIVFRQOwotICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAg
ICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0g
J3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJwotICAgICAgICAgICAgICAg
ICYmIHNjaGVtZVs0XSA9PSAncycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRU
UFM7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQot
ICAgIGNhc2UgJ3cnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNlIDI6
Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1
cm4gU2NoZW1lOjpXUzsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0g
ICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2No
ZW1lOjpXU1M7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAg
ICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0g
ICAgfQotfQotCi1zdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNh
bGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoc2NoZW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICghaXNBU0NJSUFs
cGhhKHNjaGVtZVswXSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmIChp
c0FTQ0lJQWxwaGFudW1lcmljKHNjaGVtZVtpXSkgfHwgc2NoZW1lW2ldID09ICcrJyB8fCBzY2hl
bWVbaV0gPT0gJy0nIHx8IHNjaGVtZVtpXSA9PSAnLicpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NoZW1l
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc1NwZWNp
YWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWVBcmcpCi17Ci0gICAgcmV0dXJuIHNjaGVtZShz
Y2hlbWVBcmcpICE9IFNjaGVtZTo6Tm9uU3BlY2lhbDsKLX0KLQotZW51bSBjbGFzcyBVUkxQYXJz
ZXI6OlVSTFBhcnQgewotICAgIFNjaGVtZUVuZCwKLSAgICBVc2VyU3RhcnQsCi0gICAgVXNlckVu
ZCwKLSAgICBQYXNzd29yZEVuZCwKLSAgICBIb3N0RW5kLAotICAgIFBvcnRFbmQsCi0gICAgUGF0
aEFmdGVyTGFzdFNsYXNoLAotICAgIFBhdGhFbmQsCi0gICAgUXVlcnlFbmQsCi19OwotCi1zaXpl
X3QgVVJMUGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQoY29uc3QgVVJMJiB1cmwsIFVSTFBhcnQg
cGFydCkKLXsKLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBjYXNlIFVSTFBhcnQ6OlF1ZXJ5RW5k
OgotICAgICAgICByZXR1cm4gdXJsLm1fcXVlcnlFbmQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRo
RW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBh
dGhBZnRlckxhc3RTbGFzaDoKLSAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9ob3N0
RW5kICsgdXJsLm1fcG9ydExlbmd0aDsKLSAgICBjYXNlIFVSTFBhcnQ6Okhvc3RFbmQ6Ci0gICAg
ICAgIHJldHVybiB1cmwubV9ob3N0RW5kOwotICAgIGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6
Ci0gICAgICAgIHJldHVybiB1cmwubV9wYXNzd29yZEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlVz
ZXJFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV91c2VyRW5kOwotICAgIGNhc2UgVVJMUGFydDo6
VXNlclN0YXJ0OgotICAgICAgICByZXR1cm4gdXJsLm1fdXNlclN0YXJ0OwotICAgIGNhc2UgVVJM
UGFydDo6U2NoZW1lRW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kOwotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBVUkxQ
YXJzZXI6OmNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBzaXplX3Qg
bGVuZ3RoKQotewotICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSBzdHJpbmcubGVuZ3RoKCkp
OwotICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQo
bV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nLmNoYXJh
Y3RlcnMxNigpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICBVQ2hhciBjID0gY2hhcmFjdGVyc1tpXTsKLSAgICAgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzQVNDSUkoYykpOwotICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcihjKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbChj
b25zdCBVUkwmIGJhc2UsIFVSTFBhcnQgcGFydCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqJiBub25VVEY4UXVl
cnlFbmNvZGluZykKLXsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotCi0gICAgbV9h
c2NpaUJ1ZmZlci5jbGVhcigpOwotICAgIGNvcHlBU0NJSVN0cmluZ1VudGlsKGJhc2UubV9zdHJp
bmcsIHVybExlbmd0aFVudGlsUGFydChiYXNlLCBwYXJ0KSk7Ci0gICAgc3dpdGNoIChwYXJ0KSB7
Ci0gICAgY2FzZSBVUkxQYXJ0OjpRdWVyeUVuZDoKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9
IGJhc2UubV9xdWVyeUVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0
OjpQYXRoRW5kOgotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBiYXNlLm1fcGF0aEVuZDsKLSAg
ICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6
Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BhdGhBZnRlckxh
c3RTbGFzaDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5k
OgotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBiYXNlLm1fcG9ydExlbmd0aDsKLSAgICAg
ICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgotICAgICAgICBtX3Vy
bC5tX2hvc3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAg
Y2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IGJhc2UubV9wYXNzd29yZEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQ
YXJ0OjpVc2VyRW5kOgotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBiYXNlLm1fdXNlckVuZDsK
LSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyU3RhcnQ6Ci0gICAg
ICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gYmFzZS5tX3VzZXJTdGFydDsKLSAgICAgICAgRkFMTFRI
Uk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpTY2hlbWVFbmQ6Ci0gICAgICAgIG1fdXJsLm1faXNW
YWxpZCA9IGJhc2UubV9pc1ZhbGlkOwotICAgICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBG
YW1pbHkgPSBiYXNlLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsKLSAgICAgICAgbV91cmwubV9z
Y2hlbWVFbmQgPSBiYXNlLm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBzd2l0Y2ggKHNjaGVtZShT
dHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpLCBtX3VybC5tX3NjaGVtZUVuZCkpKSB7Ci0g
ICAgY2FzZSBTY2hlbWU6OldTOgotICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgIG5vblVU
RjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVl
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6OkZpbGU6Ci0gICAgICAgIG1fdXJs
SXNGaWxlID0gdHJ1ZTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBTY2hlbWU6OkZU
UDoKLSAgICBjYXNlIFNjaGVtZTo6R29waGVyOgotICAgIGNhc2UgU2NoZW1lOjpIVFRQOgotICAg
IGNhc2UgU2NoZW1lOjpIVFRQUzoKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6Ok5vblNwZWNpYWw6Ci0gICAgICAgIG1fdXJs
SXNTcGVjaWFsID0gZmFsc2U7Ci0gICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotc3RhdGljIGNvbnN0IGNoYXIgZG90QVNDSUlDb2RlWzJdID0geycyJywgJ2UnfTsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJz
ZXI6OmlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4gYykKLXsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCpjID09ICcuJykgewotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5
bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xh
c2hRdWVzdGlvbk9ySGFzaCgqYyk7Ci0gICAgfQotICAgIGlmICgqYyAhPSAnJScpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZp
b2xhdGlvbjo6Tm8+KGMpOwotICAgIGlmIChjLmF0RW5kKCkgfHwgKmMgIT0gZG90QVNDSUlDb2Rl
WzBdKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBS
ZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2Rl
WzFdKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9u
T3JIYXNoKCpjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNEb3Vi
bGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQotewot
ICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKmMgPT0g
Jy4nKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpOwot
ICAgIH0KLSAgICBpZiAoKmMgIT0gJyUnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2
YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBp
ZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29kZVswXSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpO
bz4oYyk7Ci0gICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkgewotICAgICAgICBhZHZhbmNl
PENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICBy
ZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6
OmNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKSk7Ci0gICAg
aWYgKCpjID09ICcuJykgewotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRF
bmQoKSkgewotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAg
ICAgICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
QVNTRVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAg
IEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAg
ICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAgICAg
ICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkgewotICAgICAgICAgICAgaWYg
KCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAqYyA9
PSAnIycpOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNEb3VibGVE
b3RQYXRoU2VnbWVudChjKSk7Ci0gICAgaWYgKCpjID09ICcuJykKLSAgICAgICAgYWR2YW5jZShj
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFu
Y2UoYyk7Ci0gICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBh
ZHZhbmNlKGMpOwotICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNv
ZGVbMV0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgIH0KLSAgICBjb25zdW1lU2luZ2xlRG90
UGF0aFNlZ21lbnQoYyk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKHVuc2ln
bmVkIG5ld1BhdGhBZnRlckxhc3RTbGFzaCkKLXsKLSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhW
aW9sYXRpb24pOwotICAgIGlmICghbV91cmxJc0ZpbGUpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgQVNTRVJUKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IG1fYXNjaWlCdWZmZXIu
c2l6ZSgpKTsKLSAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gY29tcG9uZW50VG9Qb3AoJm1f
YXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSwgJm1fYXNjaWlCdWZmZXJbMF0gKyBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCk7Ci0gICAgaWYgKG5ld1BhdGhBZnRlckxhc3RTbGFz
aCA9PSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxICYmIGlzV2luZG93
c0RyaXZlTGV0dGVyKGNvbXBvbmVudFRvUG9wKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiB0cnVlOwotfQotCi12b2lkIFVSTFBhcnNlcjo6cG9wUGF0aCgpCi17Ci0gICAgQVNT
RVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICBpZiAobV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxKSB7Ci0g
ICAgICAgIGF1dG8gbmV3UGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggLSAxOwotICAgICAgICBpZiAobV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xh
c2hdID09ICcvJykKLSAgICAgICAgICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaC0tOwotICAgICAg
ICB3aGlsZSAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwu
bV9wb3J0TGVuZ3RoICYmIG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSAhPSAn
LycpCi0gICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKLSAgICAgICAgbmV3UGF0
aEFmdGVyTGFzdFNsYXNoKys7Ci0gICAgICAgIGlmIChzaG91bGRQb3BQYXRoKG5ld1BhdGhBZnRl
ckxhc3RTbGFzaCkpCi0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG5l
d1BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICB9Ci0gICAgbV9hc2NpaUJ1ZmZlci5yZXNpemUobV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgaWYgKG1fZGlkU2VlU3lu
dGF4VmlvbGF0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kaWRTZWVTeW50YXhWaW9sYXRp
b24gPSB0cnVlOwotICAgIAotICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7Ci0g
ICAgc2l6ZV90IGNvZGVVbml0c1RvQ29weSA9IGl0ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlwZSo+KG1faW5wdXRCZWdpbikpOwotICAgIFJF
TEVBU0VfQVNTRVJUKGNvZGVVbml0c1RvQ29weSA8PSBtX2lucHV0U3RyaW5nLmxlbmd0aCgpKTsK
LSAgICBtX2FzY2lpQnVmZmVyLnJlc2VydmVDYXBhY2l0eShtX2lucHV0U3RyaW5nLmxlbmd0aCgp
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVVbml0c1RvQ29weTsgKytpKSB7Ci0g
ICAgICAgIEFTU0VSVChpc0FTQ0lJKG1faW5wdXRTdHJpbmdbaV0pKTsKLSAgICAgICAgbV9hc2Np
aUJ1ZmZlci51bmNoZWNrZWRBcHBlbmQobV9pbnB1dFN0cmluZ1tpXSk7Ci0gICAgfQotfQotCi12
b2lkIFVSTFBhcnNlcjo6ZmFpbHVyZSgpCi17Ci0gICAgbV91cmwuaW52YWxpZGF0ZSgpOwotICAg
IG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpjaGVja0xvY2FsaG9zdENvZGVQb2ludChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIFVDaGFyMzIgY29kZVBv
aW50KQotewotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8IHRvQVNDSUlMb3dlcigqaXRlcmF0
b3IpICE9IGNvZGVQb2ludCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBV
UkxQYXJzZXI6OmlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
aXRlcmF0b3IpCi17Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwg
J2wnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2Rl
UG9pbnQoaXRlcmF0b3IsICdvJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNo
ZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYycpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2EnKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRl
cmF0b3IsICdsJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxo
b3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnaCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ28nKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdz
JykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBv
aW50KGl0ZXJhdG9yLCAndCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGl0
ZXJhdG9yLmF0RW5kKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc0xvY2FsaG9zdChTdHJpbmdW
aWV3IHZpZXcpCi17Ci0gICAgaWYgKHZpZXcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBpc0F0
TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPih2aWV3LmNoYXJhY3RlcnM4KCksIHZp
ZXcuY2hhcmFjdGVyczgoKSArIHZpZXcubGVuZ3RoKCkpKTsKLSAgICByZXR1cm4gaXNBdExvY2Fs
aG9zdChDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4odmlldy5jaGFyYWN0ZXJzMTYoKSwgdmlldy5j
aGFyYWN0ZXJzMTYoKSArIHZpZXcubGVuZ3RoKCkpKTsKLX0KLQotQUxXQVlTX0lOTElORSBTdHJp
bmdWaWV3IFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXcoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVu
Z3RoKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpIHsKLSAg
ICAgICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKLSAg
ICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZlci5kYXRhKCkgKyBzdGFydCwgbGVu
Z3RoKTsKLSAgICB9Ci0gICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1faW5wdXRTdHJpbmcu
bGVuZ3RoKCkpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1faW5wdXRTdHJpbmcpLnN1YnN0cmlu
ZyhzdGFydCwgbGVuZ3RoKTsKLX0KLQotQUxXQVlTX0lOTElORSBVQ2hhciBVUkxQYXJzZXI6OnBh
cnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlvbikKLXsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRT
ZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlcltwb3NpdGlv
bl07Ci0gICAgcmV0dXJuIG1faW5wdXRTdHJpbmdbcG9zaXRpb25dOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzaXplX3QgVVJMUGFyc2VyOjpj
dXJyZW50UG9zaXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0
ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCi0g
ICAgICAgIHJldHVybiBtX2FzY2lpQnVmZmVyLnNpemUoKTsKLSAgICAKLSAgICByZXR1cm4gaXRl
cmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBDaGFyYWN0ZXJUeXBl
Kj4obV9pbnB1dEJlZ2luKSk7Ci19Ci0KLVVSTFBhcnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0cmlu
ZyYgaW5wdXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4
UXVlcnlFbmNvZGluZykKLSAgICA6IG1faW5wdXRTdHJpbmcoaW5wdXQpCi17Ci0gICAgaWYgKGlu
cHV0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiAhYmFzZS5tX2Nh
bm5vdEJlQUJhc2VVUkwpIHsKLSAgICAgICAgICAgIG1fdXJsID0gYmFzZTsKLSAgICAgICAgICAg
IG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoaW5wdXQuaXM4Qml0KCkpIHsKLSAgICAgICAgbV9pbnB1
dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFj
dGVyczgoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1dC5jaGFyYWN0ZXJzMTYoKTsK
LSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczE2KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNl
LCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX3VybC5tX2lz
VmFsaWQKLSAgICAgICAgfHwgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPT0gKG1fdXJsLnN0cmlu
ZygpICE9IGlucHV0KQotICAgICAgICB8fCAoaW5wdXQuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxp
c0MwQ29udHJvbE9yU3BhY2U+KCkKLSAgICAgICAgICAgICYmIG1fdXJsLm1fc3RyaW5nID09IGJh
c2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpKSk7Ci0gICAgQVNTRVJUKGludGVybmFs
VmFsdWVzQ29uc2lzdGVudChtX3VybCkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpZiAo
IW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSB7Ci0gICAgICAgIC8vIEZvcmNlIGEgc3ludGF4IHZp
b2xhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlIHNhbWUgcmVz
dWx0LgotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoIiAiLCBpbnB1dCksIGJh
c2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgVVJMIHBhcnNlZCA9IHBhcnNlci5y
ZXN1bHQoKTsKLSAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBBU1NF
UlQoYWxsVmFsdWVzRXF1YWwocGFyc2VyLnJlc3VsdCgpLCBtX3VybCkpOwotICAgIH0KLSNlbmRp
ZgotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6
OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqIGlucHV0LCBjb25zdCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNv
ZGluZykKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2luZyBVUkwgPCVzPiBiYXNlIDwlcz4i
LCBTdHJpbmcoaW5wdXQsIGxlbmd0aCkudXRmOCgpLmRhdGEoKSwgYmFzZS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICBtX3VybCA9IHsgfTsKLSAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5p
c0VtcHR5KCkpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBxdWVyeUJ1ZmZlcjsKLQotICAgIHVuc2ln
bmVkIGVuZEluZGV4ID0gbGVuZ3RoOwotICAgIHdoaWxlIChVTkxJS0VMWShlbmRJbmRleCAmJiBp
c0MwQ29udHJvbE9yU3BhY2UoaW5wdXRbZW5kSW5kZXggLSAxXSkpKSB7Ci0gICAgICAgIHN5bnRh
eFZpb2xhdGlvbihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihpbnB1dCwgaW5wdXQp
KTsKLSAgICAgICAgZW5kSW5kZXgtLTsKLSAgICB9Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4gYyhpbnB1dCwgaW5wdXQgKyBlbmRJbmRleCk7Ci0gICAgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gYXV0aG9yaXR5T3JIb3N0QmVnaW47Ci0gICAgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gcXVlcnlCZWdpbjsKLSAgICB3aGlsZSAoVU5MSUtFTFko
IWMuYXRFbmQoKSAmJiBpc0MwQ29udHJvbE9yU3BhY2UoKmMpKSkgewotICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7Ci0gICAgICAgICsrYzsKLSAgICB9Ci0gICAgYXV0byBiZWdpbkFmdGVyQ29u
dHJvbEFuZFNwYWNlID0gYzsKLQotICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKLSAg
ICAgICAgU2NoZW1lU3RhcnQsCi0gICAgICAgIFNjaGVtZSwKLSAgICAgICAgTm9TY2hlbWUsCi0g
ICAgICAgIFNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5LAotICAgICAgICBQYXRoT3JBdXRob3Jp
dHksCi0gICAgICAgIFJlbGF0aXZlLAotICAgICAgICBSZWxhdGl2ZVNsYXNoLAotICAgICAgICBT
cGVjaWFsQXV0aG9yaXR5U2xhc2hlcywKLSAgICAgICAgU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNs
YXNoZXMsCi0gICAgICAgIEF1dGhvcml0eU9ySG9zdCwKLSAgICAgICAgSG9zdCwKLSAgICAgICAg
RmlsZSwKLSAgICAgICAgRmlsZVNsYXNoLAotICAgICAgICBGaWxlSG9zdCwKLSAgICAgICAgUGF0
aFN0YXJ0LAotICAgICAgICBQYXRoLAotICAgICAgICBDYW5ub3RCZUFCYXNlVVJMUGF0aCwKLSAg
ICAgICAgVVRGOFF1ZXJ5LAotICAgICAgICBOb25VVEY4UXVlcnksCi0gICAgICAgIEZyYWdtZW50
LAotICAgIH07Ci0KLSNkZWZpbmUgTE9HX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJTdGF0ZSAl
cywgY29kZSBwb2ludCAlYywgcGFyc2VkIGRhdGEgPCVzPiBzaXplICV6dSIsIHgsICpjLCBwYXJz
ZWREYXRhVmlldygwLCBjdXJyZW50UG9zaXRpb24oYykpLnV0ZjgoKS5kYXRhKCksIGN1cnJlbnRQ
b3NpdGlvbihjKSkKLSNkZWZpbmUgTE9HX0ZJTkFMX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJG
aW5hbCBTdGF0ZTogJXMiLCB4KQotCi0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6U2NoZW1lU3Rh
cnQ7Ci0gICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFi
T3JOZXdsaW5lKCpjKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAg
ICAgICAgICsrYzsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAg
c3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKLSAgICAg
ICAgICAgIExPR19TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJ
QWxwaGEoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigq
YykpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAgICAg
ICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICAgICAgYyA9IGJlZ2lu
QWZ0ZXJDb250cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTY2hlbWU7Ci0gICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAg
ICAgICBMT0dfU1RBVEUoIlNjaGVtZSIpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWRTY2hlbWVD
aGFyYWN0ZXIoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBl
cigqYykpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgc2No
ZW1lRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChzY2hlbWVF
bmQgPiBVUkw6Om1heFNjaGVtZUxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBmYWlsdXJl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBzY2hlbWVFbmQ7Ci0gICAgICAgICAgICAg
ICAgU3RyaW5nVmlldyB1cmxTY2hlbWUgPSBwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVt
ZUVuZCk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAg
ICAgICAgICAgIHN3aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIFNjaGVtZTo6RmlsZToKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICBtX3VybElzRmlsZSA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6
OldTOgotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgICAgICAgICAg
ICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAg
bV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5wcm90
b2NvbElzKHVybFNjaGVtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNs
YXNoZXM7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFA6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBTY2hlbWU6OkhUVFBTOgotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Byb3RvY29s
SXNJbkhUVFBGYW1pbHkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsK
LSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RlRQOgotICAgICAgICAgICAgICAgIGNhc2Ug
U2NoZW1lOjpHb3BoZXI6Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJvdG9jb2xJcyh1cmxTY2hlbWUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JB
dXRob3JpdHk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOwotICAgICAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgotICAgICAgICAgICAgICAgICAgICBub25VVEY4UXVl
cnlFbmNvZGluZyA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbWF5YmVTbGFz
aCA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIGFkdmFuY2UobWF5YmVTbGFzaCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghbWF5YmVTbGFzaC5hdEVuZCgpICYmICptYXliZVNsYXNoID09ICcv
JykgewotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG1heWJlU2xhc2g7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoT3JBdXRob3JpdHk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoKmMgPT0gJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrYzsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX2Nhbm5vdEJlQUJhc2VVUkwgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6Tm9TY2hlbWU7Ci0gICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250
cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgewotICAgICAg
ICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xB
bmRTcGFjZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFN0YXRlOjpOb1NjaGVtZToKLSAgICAgICAgICAgIExPR19TVEFURSgiTm9TY2hlbWUiKTsKLSAg
ICAgICAgICAgIGlmICghYmFzZS5pc1ZhbGlkKCkgfHwgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJM
ICYmICpjICE9ICcjJykpIHsKLSAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGJhc2UubV9jYW5u
b3RCZUFCYXNlVVJMICYmICpjID09ICcjJykgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0
c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7
Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghYmFzZS5w
cm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxh
dGl2ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eToKLSAgICAgICAgICAgIExP
R19TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgICAgIGlmICgq
YyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJy8n
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNo
ZXM7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKLSAg
ICAgICAgICAgIExPR19TVEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7Ci0gICAgICAgICAgICBpZiAo
KmMgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwot
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKLSAgICAgICAg
ICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2lu
ID0gYzsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNl
ZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAg
ICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICAg
ICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAg
ICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlJlbGF0
aXZlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAgICAgICBjYXNlICcvJzoK
LSAgICAgICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpS
ZWxhdGl2ZVNsYXNoOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgJz8nOgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1Vu
dGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAg
KytjOwotICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAg
ICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlICcjJzoKLSAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNV
bnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwot
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKLSAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNv
cHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24o
YykgJiYgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgIT0gJy8nKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKLSAgICAgICAgICAgIExPR19T
VEFURSgiUmVsYXRpdmVTbGFzaCIpOwotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9
PSAnXFwnKSB7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rp
bmcpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjovLyIsIDMpOwotICAg
ICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3Jp
dHlPckhvc3Q7Ci0gICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVy
eUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1faG9zdEVu
ZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpQYXRoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJT
cGVjaWFsQXV0aG9yaXR5U2xhc2hlcyIpOwotICAgICAgICAgICAgaWYgKExJS0VMWSgqYyA9PSAn
LycgfHwgKmMgPT0gJ1xcJykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0g
J1xcJykpCi0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgYWR2YW5j
ZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoTElLRUxZKCFjLmF0RW5kKCkgJiYgKCpjID09ICcv
JyB8fCAqYyA9PSAnXFwnKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpj
ID09ICdcXCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6
Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzIik7
Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpIHsKLSAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQ
b3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhv
c3Q7Ci0gICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0eU9y
SG9zdDoKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkF1dGhv
cml0eU9ySG9zdCIpOwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnQCcpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYXV0byBsYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICBhdXRvIGZp
bmRMYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWZpbmRMYXN0QXQuYXRF
bmQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgVVJMX1BBUlNFUl9MT0coIkZpbmRpbmcg
bGFzdCBAOiAlYyIsICpmaW5kTGFzdEF0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgq
ZmluZExhc3RBdCA9PSAnQCcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEF0ID0g
ZmluZExhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTbGFzaCA9ICpmaW5k
TGFzdEF0ID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmZpbmRMYXN0QXQgPT0gJ1xcJyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8fCAqZmluZExhc3RBdCA9PSAn
PycgfHwgKmZpbmRMYXN0QXQgPT0gJyMnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgKytmaW5kTGFzdEF0OwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBsYXN0QXQpKTsKLSAg
ICAgICAgICAgICAgICAgICAgYyA9IGxhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgYWR2YW5j
ZShjKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIb3N0OwotICAgICAgICAgICAgICAgICAg
ICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1NsYXNo
ID0gKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKTsKLSAgICAgICAg
ICAgICAgICBpZiAoaXNTbGFzaCB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChp
dGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJc1Nw
ZWNpYWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihj
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5t
X3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGgg
PSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYXV0aG9y
aXR5T3JIb3N0QmVnaW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29y
ZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFy
c2VIb3N0QW5kUG9ydChpdGVyYXRvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
YWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFp
c1NsYXNoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lh
bCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5v
bkFTQ0lJKCpjKSkKLSAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVND
SUkgPSB0cnVlOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0gd2hpbGUgKCFj
LmF0RW5kKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Okhvc3Q6
Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJIb3N0Iik7Ci0g
ICAgICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCpjID09
ICc/JyB8fCAqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJ
SSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5hdEVu
ZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAg
ICAgICAgICAgTE9HX1NUQVRFKCJGaWxlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0g
ICAgICAgICAgICBjYXNlICdcXCc6Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSAnLyc6Ci0g
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkZpbGVTbGFzaDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICc/JzoKLSAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYm
IGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5n
KTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOwotICAgICAg
ICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vPyIsIDQpOwotICAgICAgICAgICAgICAg
ICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVu
dFBvc2l0aW9uKGMpIC0gMjsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgJyMnOgotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKLSAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElz
KCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwg
VVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyMiLCA0KTsK
LSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24o
YykgLSAyOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3Vy
bC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OwotICAgICAgICAgICAg
ICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChi
YXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSAmJiBzaG91bGRDb3B5Rmls
ZVVSTChjKSkKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJM
UGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoIi8vLyIsIDMpOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1
cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
V2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoK
LSAgICAgICAgICAgIExPR19TVEFURSgiRmlsZVNsYXNoIik7Ci0gICAgICAgICAgICBpZiAoTElL
RUxZKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSgqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3Vy
cmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAg
ICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpGaWxlSG9zdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAg
IGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFdp
bmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7Ci0gICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0
YXJ0ICsgMTsKLSAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6Ci0gICAgICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICAgICAgICAgIGlm
IChpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wg
d2luZG93c1F1aXJrID0gdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyaykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NR
dWlyayB8fCBhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQod2luZG93c1F1aXJrIHx8IHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlv
bihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
KmMgPT0gJz8nKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIv
PyIsIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6VVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAn
IycpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8jIiwgMik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0g
MTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFw
YXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0
eU9ySG9zdEJlZ2luLCBjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNMb2NhbGhvc3QocGFyc2VkRGF0YVZp
ZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91cmwubV9wYXNz
d29yZEVuZCkpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91cmwubV9w
YXNzd29yZEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRM
ZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoU3RhcnQ7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo
aXNQZXJjZW50T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1Bl
cmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAg
ICB9IHdoaWxlICghYy5hdEVuZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFN0YXRlOjpQYXRoU3RhcnQ6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhTdGFydCIpOwot
ICAgICAgICAgICAgaWYgKCpjICE9ICcvJyAmJiAqYyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
UGF0aDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpQYXRoOgotICAg
ICAgICAgICAgTE9HX1NUQVRFKCJQYXRoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8
IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChV
TkxJS0VMWShtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoY3VycmVudFBv
c2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcv
JykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNEb3VibGVEb3RQYXRoU2VnbWVu
dChjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICAgICAgICAgICAgICBjb25zdW1lRG91YmxlRG90UGF0aFNlZ21lbnQoYyk7Ci0gICAgICAgICAg
ICAgICAgICAgIHBvcFBhdGgoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1NpbmdsZURvdFBhdGhT
ZWdtZW50KGMpKSkgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKCpjID09ICc/JykgewotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGlmIChu
b25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0g
YzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAg
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpV
VEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1dGY4
UGVyY2VudEVuY29kZTxpc0luRGVmYXVsdEVuY29kZVNldD4oYyk7Ci0gICAgICAgICAgICArK2M7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVS
TFBhdGg6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0g
ICAgICAgICAgICBpZiAoKmMgPT0gJz8nKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJz8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgaWYgKG5v
blVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBj
OwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVU
RjhRdWVyeTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAg
ICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcv
JykgewotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAg
ICAgICAgICsrYzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFN0YXRlOjpVVEY4UXVlcnk6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlVURjhRdWVyeSIp
OwotICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4oKSk7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAg
ICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVCghbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwot
ICAgICAgICAgICAgdXRmOFF1ZXJ5RW5jb2RlKGMpOwotICAgICAgICAgICAgKytjOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKLSAgICAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIk5vblVURjhRdWVyeSIpOwotICAg
ICAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KCkpOwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5
RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMp
KTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBhcHBlbmRDb2RlUG9pbnQocXVlcnlCdWZmZXIsICpjKTsKLSAgICAgICAgICAgICAgICBhZHZh
bmNlKGMsIHF1ZXJ5QmVnaW4pOwotICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAgICAg
ICAgICBVUkxfUEFSU0VSX0xPRygiU3RhdGUgRnJhZ21lbnQiKTsKLSAgICAgICAgICAgIHV0ZjhQ
ZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHN0YXRl
KSB7Ci0gICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFU
RSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgaWYgKCFjdXJyZW50UG9zaXRpb24oYykgJiYgYmFz
ZS5pc1ZhbGlkKCkgJiYgIWJhc2UubV9jYW5ub3RCZUFCYXNlVVJMKSB7Ci0gICAgICAgICAgICBt
X3VybCA9IGJhc2U7Ci0gICAgICAgICAgICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmYWlsdXJlKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAgIExPR19GSU5B
TF9TVEFURSgiU2NoZW1lIik7Ci0gICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgU3RhdGU6Ok5vU2NoZW1lOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5vU2No
ZW1lIik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2FzZSBT
dGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6Ci0gICAgICAgIExPR19GSU5BTF9TVEFU
RSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50
aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgotICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOwotICAgICAgICBBU1NFUlQobV91cmwu
bV91c2VyU3RhcnQpOwotICAgICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQgPT0gY3VycmVu
dFBvc2l0aW9uKGMpKTsKLSAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3Np
dGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0LS07Ci0gICAg
ICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwot
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsg
MTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7
Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgIExPR19G
SU5BTF9TVEFURSgiUmVsYXRpdmUiKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgotICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwg
VVJMUGFydDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgbV91
cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJs
Lm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM6Ci0gICAgICAgIExPR19G
SU5BTF9TVEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKLSAgICAgICAgbV91cmwubV91
c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BhdGhF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0
aG9yaXR5SWdub3JlU2xhc2hlczoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTcGVjaWFsQXV0
aG9yaXR5SWdub3JlU2xhc2hlcyIpOwotICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiQXV0aG9yaXR5T3JIb3N0Iik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJl
bnRQb3NpdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdp
bi5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAg
ICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICB9IGVsc2UgaWYgKCFwYXJzZUhvc3RB
bmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgZmFpbHVyZSgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1f
dXJsSXNTcGVjaWFsKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAx
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOwotICAgICAgICB9Ci0gICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBt
X3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFN0YXRlOjpIb3N0OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkhvc3QiKTsKLSAgICAg
ICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAg
ICAgICAgZmFpbHVyZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChtX3VybElzU3BlY2lhbCkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RF
bmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwu
bV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIkZpbGUiKTsKLSAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYm
IGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRp
bChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8iLCAzKTsKLSAgICAgICAgbV91cmwubV91
c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxl
U2xhc2giKTsKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICBtX3VybC5tX3Vz
ZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSArIDE7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoIi8vIiwgMik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0g
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0
ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0
OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpG
aWxlSG9zdDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICBp
ZiAodGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICYmIGlzV2luZG93c0Ry
aXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKLSAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3Jp
dHlPckhvc3RCZWdpbik7Ci0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlv
bihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
LSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0g
ICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgIGlmIChpc0xvY2FsaG9zdChwYXJz
ZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3Vy
bC5tX3Bhc3N3b3JkRW5kKSkpIHsKLSAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1f
dXJsLm1fcGFzc3dvcmRFbmQpOwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAg
ICAgfQotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3Ro
ICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgotICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIGNhc2UgU3RhdGU6OlBhdGg6Ci0gICAgICAgIExPR19GSU5BTF9TVEFU
RSgiUGF0aCIpOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7
Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRoOgotICAgICAgICBMT0df
RklOQUxfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fcGF0aEVuZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5
OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQo
cXVlcnlCZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUo
Ik5vblVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1
ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1
cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6RnJhZ21l
bnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiRnJhZ21lbnQiKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgaWYgKExJS0VMWSghbV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKSB7Ci0g
ICAgICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLSAgICAgICAgQVNTRVJUKG1f
YXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV91cmwubV9zdHJp
bmcgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUobV9hc2NpaUJ1ZmZlcikpOwotICAgIG1fdXJsLm1f
aXNWYWxpZCA9IHRydWU7Ci0gICAgVVJMX1BBUlNFUl9MT0coIlBhcnNlZCBVUkwgPCVzPiIsIG1f
dXJsLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShpdGVyYXRv
ci5hdEVuZCgpKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAg
ICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBt
X3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgYWR2YW5jZShpdGVyYXRvcikpIHsK
LSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpIHsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAgICBhdXRvIGl0ZXJh
dG9yQXRDb2xvbiA9IGl0ZXJhdG9yOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAg
ICAgIGJvb2wgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IGZhbHNlOwotICAgICAgICAgICAgd2hp
bGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRv
cikpKSB7Ci0gICAgICAgICAgICAgICAgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
IChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihpdGVyYXRvckF0Q29sb24pOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdXJsLm1fdXNl
ckVuZCA+IG1fdXJsLm1fdXNlclN0YXJ0KQotICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCdAJyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKHRhYk9yTmV3bGluZUFmdGVyQ29sb24pCi0gICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yQXRDb2xvbik7Ci0gICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCc6Jyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB1
dGY4UGVyY2VudEVuY29kZTxXZWJDb3JlOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJhdG9y
KTsKLSAgICB9Ci0gICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9y
KSkKLSAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V2ViQ29yZTo6aXNJblVzZXJJbmZvRW5jb2Rl
U2V0PihpdGVyYXRvcik7Ci0gICAgbV91cmwubV9wYXNzd29yZEVuZCA9IGN1cnJlbnRQb3NpdGlv
bihpdGVyYXRvcik7Ci0gICAgaWYgKCFtX3VybC5tX3VzZXJFbmQpCi0gICAgICAgIG1fdXJsLm1f
dXNlckVuZCA9IG1fdXJsLm1fcGFzc3dvcmRFbmQ7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
QCcpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPgotdm9pZCBV
UkxQYXJzZXI6OmFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIoVW5zaWduZWRJbnRlZ2VyVHlwZSBu
dW1iZXIpCi17Ci0gICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMg
KyAxXTsKLSAgICBMQ2hhciogZW5kID0gc3RkOjplbmQoYnVmKTsKLSAgICBMQ2hhciogcCA9IGVu
ZDsKLSAgICBkbyB7Ci0gICAgICAgICotLXAgPSAobnVtYmVyICUgMTApICsgJzAnOwotICAgICAg
ICBudW1iZXIgLz0gMTA7Ci0gICAgfSB3aGlsZSAobnVtYmVyKTsKLSAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKHAsIGVuZCAtIHApOwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NChJ
UHY0QWRkcmVzcyBhZGRyZXNzKQotewotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWlu
dDhfdD4oYWRkcmVzcyA+PiAyNCk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAg
IGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAxNik7Ci0gICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8
dWludDhfdD4oYWRkcmVzcyA+PiA4KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7Ci0g
ICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzKTsKLX0KLSAgICAK
LXN0YXRpYyBzaXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2
X3QsIDg+JiBhZGRyZXNzLCBzaXplX3QgYmVnaW4pCi17Ci0gICAgc2l6ZV90IGVuZCA9IGJlZ2lu
OwotICAgIGZvciAoOyBlbmQgPCA4OyBlbmQrKykgewotICAgICAgICBpZiAoYWRkcmVzc1tlbmRd
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBlbmQgLSBiZWdpbjsKLX0K
LQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShj
b25zdCBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKLXsKLSAgICBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbG9uZ2VzdDsKLSAgICBzaXplX3QgbG9uZ2VzdExlbmd0aCA9IDA7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyBpKyspIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IHplcm9TZXF1ZW5jZUxlbmd0aChhZGRyZXNzLCBpKTsKLSAgICAgICAgaWYgKGxlbmd0aCkgewot
ICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgKCFsb25nZXN0IHx8IGxvbmdlc3RMZW5ndGgg
PCBsZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgbG9uZ2VzdCA9IGk7Ci0gICAgICAgICAgICAg
ICAgbG9uZ2VzdExlbmd0aCA9IGxlbmd0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkg
Kz0gbGVuZ3RoOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsb25nZXN0OwotfQotCi12
b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKQotewotICAg
IGJvb2wgcHJpbnRlZCA9IGZhbHNlOwotICAgIGlmIChhdXRvIG5pYmJsZTAgPSBwaWVjZSA+PiAx
MikgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VB
U0NJSUhleERpZ2l0KG5pYmJsZTApKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQot
ICAgIGF1dG8gbmliYmxlMSA9IHBpZWNlID4+IDggJiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwg
bmliYmxlMSkgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dl
cmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTEpKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0g
ICAgfQotICAgIGF1dG8gbmliYmxlMiA9IHBpZWNlID4+IDQgJiAweEY7Ci0gICAgaWYgKHByaW50
ZWQgfHwgbmliYmxlMikKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRv
TG93ZXJjYXNlQVNDSUlIZXhEaWdpdChuaWJibGUyKSk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChwaWVjZSAmIDB4RikpOwotfQot
Ci12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NihVUkxQYXJzZXI6OklQdjZBZGRyZXNzIGFk
ZHJlc3MpCi17Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignWycpOwotICAgIGF1dG8gY29tcHJl
c3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7Ci0gICAgZm9yIChz
aXplX3QgcGllY2UgPSAwOyBwaWVjZSA8IDg7IHBpZWNlKyspIHsKLSAgICAgICAgaWYgKGNvbXBy
ZXNzUG9pbnRlciAmJiBjb21wcmVzc1BvaW50ZXIudmFsdWUoKSA9PSBwaWVjZSkgewotICAgICAg
ICAgICAgQVNTRVJUKCFhZGRyZXNzW3BpZWNlXSk7Ci0gICAgICAgICAgICBpZiAocGllY2UpCi0g
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjo6IiwgMik7Ci0gICAgICAg
ICAgICB3aGlsZSAocGllY2UgPCA4ICYmICFhZGRyZXNzW3BpZWNlXSkKLSAgICAgICAgICAgICAg
ICBwaWVjZSsrOwotICAgICAgICAgICAgaWYgKHBpZWNlID09IDgpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc2VyaWFsaXplSVB2NlBpZWNlKGFkZHJlc3NbcGll
Y2VdKTsKLSAgICAgICAgaWYgKHBpZWNlIDwgNykKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJzonKTsKLSAgICB9Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignXScpOwotfQotCi1l
bnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yIHsKLSAgICBGYWlsdXJl
LAotICAgIE92ZXJmbG93LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
LUV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gVVJM
UGFyc2VyOjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
aXRlcmF0b3IsIGJvb2wmIGRpZFNlZVN5bnRheFZpb2xhdGlvbikKLXsKLSAgICBlbnVtIGNsYXNz
IFN0YXRlIDogdWludDhfdCB7Ci0gICAgICAgIFVua25vd25CYXNlLAotICAgICAgICBEZWNpbWFs
LAotICAgICAgICBPY3RhbE9ySGV4LAotICAgICAgICBPY3RhbCwKLSAgICAgICAgSGV4LAotICAg
IH07Ci0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93bkJhc2U7Ci0gICAgQ2hlY2tlZDx1
aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsKLSAgICBpZiAoIWl0ZXJhdG9yLmF0
RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5h
dEVuZCgpKSB7Ci0gICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7Ci0gICAg
ICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgKytpdGVy
YXRvcjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICgqaXRl
cmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93ZWQo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpVbmtub3duQmFzZToK
LSAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0b3IgPT0gJzAnKSkgewotICAgICAgICAg
ICAgICAgICsraXRlcmF0b3I7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6T2N0YWxP
ckhleDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkRlY2ltYWw7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBTdGF0ZTo6T2N0YWxPckhleDoKLSAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9
IHRydWU7Ci0gICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09ICd4JyB8fCAqaXRlcmF0b3IgPT0g
J1gnKSB7Ci0gICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpIZXg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFN0YXRlOjpEZWNpbWFsOgotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQo
Kml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBp
ZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICAgICAgICAgIHZhbHVlICo9IDEwOwotICAg
ICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElL
RUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAg
KytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpPY3Rh
bDoKLSAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAgICAg
ICAgaWYgKCppdGVyYXRvciA8ICcwJyB8fCAqaXRlcmF0b3IgPiAnNycpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7
Ci0gICAgICAgICAgICB2YWx1ZSAqPSA4OwotICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9y
IC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdF
cnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpIZXg6Ci0gICAgICAgICAgICBBU1NFUlQoZGlkU2Vl
U3ludGF4VmlvbGF0aW9uKTsKLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KCppdGVy
YXRvcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBh
cnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgICAgICB2YWx1ZSAqPSAxNjsKLSAgICAgICAg
ICAgIHZhbHVlICs9IHRvQVNDSUlIZXhWYWx1ZSgqaXRlcmF0b3IpOwotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAg
ICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQot
ICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gdmFsdWUudW5z
YWZlR2V0KCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQ2NF90IHBvdzI1NihzaXpl
X3QgZXhwb25lbnQpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhwb25lbnQgPD0gNCk7Ci0gICAg
dWludDY0X3QgdmFsdWVzWzVdID0gezEsIDI1NiwgMjU2ICogMjU2LCAyNTYgKiAyNTYgKiAyNTYs
IDI1NnVsbCAqIDI1NiAqIDI1NiAqIDI1NiB9OwotICAgIHJldHVybiB2YWx1ZXNbZXhwb25lbnRd
OwotfQotCi1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvciB7Ci0gICAgRmFp
bHVyZSwKLSAgICBOb3RJUHY0LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVjdGVkPFVS
TFBhcnNlcjo6SVB2NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvcj4gVVJMUGFy
c2VyOjpwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVG
b3JTeW50YXhWaW9sYXRpb24+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uLCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBWZWN0b3I8
RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiwgND4g
aXRlbXM7Ci0gICAgYm9vbCBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSBmYWxzZTsKLSAgICBpZiAo
IWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIHdoaWxlICghaXRl
cmF0b3IuYXRFbmQoKSkgewotICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkg
ewotICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAg
ICsraXRlcmF0b3I7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoaXRlbXMuc2l6ZSgpID49IDQpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
SVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAgIGl0ZW1zLmFwcGVuZChwYXJzZUlQ
djRQaWVjZShpdGVyYXRvciwgZGlkU2VlU3ludGF4VmlvbGF0aW9uKSk7Ci0gICAgICAgIGlmICgh
aXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICArK2l0
ZXJhdG9yOwotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwot
ICAgICAgICAgICAgZWxzZSBpZiAoKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpIHx8ICFpdGVtcy5zaXplKCkgfHwg
aXRlbXMuc2l6ZSgpID4gNCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJz
aW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7
Ci0gICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBp
ZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRl
bS5lcnJvcigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCi0gICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAg
fQotICAgIGlmIChpdGVtcy5zaXplKCkgPiAxKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaXRlbXMuc2l6ZSgpIC0gMTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoaXRlbXNbaV0u
dmFsdWUoKSA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2
NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGl0ZW1z
W2l0ZW1zLnNpemUoKSAtIDFdLnZhbHVlKCkgPj0gcG93MjU2KDUgLSBpdGVtcy5zaXplKCkpKQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7
Ci0KLSAgICBpZiAoZGlkU2VlU3ludGF4VmlvbGF0aW9uKQotICAgICAgICBzeW50YXhWaW9sYXRp
b24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgZm9yIChjb25zdCBh
dXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgaWYgKGl0ZW0udmFsdWUoKSA+IDI1NSkKLSAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0
aW9uKTsKLSAgICB9Ci0KLSAgICBpZiAoVU5MSUtFTFkoaXRlbXMuc2l6ZSgpICE9IDQpKQotICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7
Ci0KLSAgICBJUHY0QWRkcmVzcyBpcHY0ID0gaXRlbXMudGFrZUxhc3QoKS52YWx1ZSgpOwotICAg
IGZvciAoc2l6ZV90IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgaXRlbXMuc2l6ZSgpOyArK2NvdW50
ZXIpCi0gICAgICAgIGlwdjQgKz0gaXRlbXNbY291bnRlcl0udmFsdWUoKSAqIHBvdzI1NigzIC0g
Y291bnRlcik7Ci0gICAgcmV0dXJuIGlwdjQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1zdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBp
ZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3Ip
Ci17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgdWludDMyX3QgcGllY2UgPSAwOwotICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFs
c2U7Ci0gICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOwotICAgIHdoaWxlICghaXRlcmF0b3IuYXRF
bmQoKSkgewotICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgKytkaWdpdENvdW50OwotICAgICAgICBp
ZiAoIXBpZWNlICYmICppdGVyYXRvciA9PSAnMCcpIHsKLSAgICAgICAgICAgIGlmIChsZWFkaW5n
WmVyb3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAg
IGxlYWRpbmdaZXJvcyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwaWVjZSAmJiAq
aXRlcmF0b3IgPT0gJzAnKQotICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAg
ICAgcGllY2UgPSBwaWVjZSAqIDEwICsgKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICBpZiAocGll
Y2UgPiAyNTUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZh
bmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsK
LSAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgaWYgKCppdGVyYXRvciA9PSAnLicpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
aWYgKHBpZWNlICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICByZXR1cm4gcGllY2U7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Ci1zdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJ
UHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRl
cmF0b3IpCi17Ci0gICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9IDA7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IHBpZWNlID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKLSAgICAgICAgICAg
IGFkZHJlc3MgPSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZhbHVlKCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmIChpIDwgMykgewot
ICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4nKQotICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICBhZHZhbmNlPENoYXJh
Y3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAgICAg
fSBlbHNlIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgfQotICAgIEFTU0VSVChpdGVyYXRvci5hdEVuZCgpKTsKLSAgICByZXR1cm4g
YWRkcmVzczsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0ZDo6b3B0
aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCi17Ci0gICAgQVNTRVJUKCpjID09ICdb
Jyk7Ci0gICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBjOwotICAgIGFkdmFuY2UoYywgaG9zdEJl
Z2luKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
Ci0gICAgSVB2NkFkZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19Owot
ICAgIHNpemVfdCBwaWVjZVBvaW50ZXIgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBj
b21wcmVzc1BvaW50ZXI7Ci0KLSAgICBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgIGFkdmFuY2Uo
YywgaG9zdEJlZ2luKTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICgqYyAhPSAnOicpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7Ci0gICAgICAg
ICsrcGllY2VQb2ludGVyOwotICAgICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7
Ci0gICAgfQotICAgIAotICAgIHdoaWxlICghYy5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChwaWVj
ZVBvaW50ZXIgPT0gOCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IGlmICgqYyA9PSAnOicpIHsKLSAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGFkdmFuY2UoYywg
aG9zdEJlZ2luKTsKLSAgICAgICAgICAgICsrcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29t
cHJlc3NQb2ludGVyID0gcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50ZXIg
JiYgcGllY2VQb2ludGVyIDwgNikpIHsKLSAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPElQ
djRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPT0g
NSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICBhZGRyZXNz
W3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgPj4gMTY7Ci0gICAgICAgICAg
ICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpICYgMHhG
RkZGOwotICAgICAgICAgICAgICAgIGMgPSB7IH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdWludDE2X3QgdmFsdWUgPSAwOwotICAg
ICAgICBzaXplX3QgbGVuZ3RoID0gMDsKLSAgICAgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxz
ZTsKLSAgICAgICAgZm9yICg7IGxlbmd0aCA8IDQ7IGxlbmd0aCsrKSB7Ci0gICAgICAgICAgICBp
ZiAoYy5hdEVuZCgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKCFp
c0FTQ0lJSGV4RGlnaXQoKmMpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
aWYgKGlzQVNDSUlVcHBlcigqYykpCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhv
c3RCZWdpbik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJzAnICYmICFsZW5ndGgpCi0gICAgICAg
ICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUg
KiAweDEwICsgdG9BU0NJSUhleFZhbHVlKCpjKTsKLSAgICAgICAgICAgIGFkdmFuY2UoYywgaG9z
dEJlZ2luKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKFVOTElLRUxZKCh2YWx1
ZSAmJiBsZWFkaW5nWmVyb3MpIHx8ICghdmFsdWUgJiYgbGVuZ3RoID4gMSkpKQotICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAgICAgYWRkcmVzc1twaWVjZVBv
aW50ZXIrK10gPSB2YWx1ZTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDggfHwgKmMgIT0gJzonKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4p
OwotICAgIH0KLSAgICAKLSAgICBpZiAoIWMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAKLSAgICBpZiAoY29tcHJlc3NQb2ludGVyKSB7Ci0gICAgICAgIHNpemVf
dCBzd2FwcyA9IHBpZWNlUG9pbnRlciAtIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpOwotICAgICAg
ICBwaWVjZVBvaW50ZXIgPSA3OwotICAgICAgICB3aGlsZSAoc3dhcHMpCi0gICAgICAgICAgICBz
dGQ6OnN3YXAoYWRkcmVzc1twaWVjZVBvaW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2ludGVy
LnZhbHVlKCkgKyBzd2Fwcy0tIC0gMV0pOwotICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9
IDgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gcG9zc2libGVDb21wcmVzc1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShh
ZGRyZXNzKTsKLSAgICBpZiAocG9zc2libGVDb21wcmVzc1BvaW50ZXIpCi0gICAgICAgIHBvc3Np
YmxlQ29tcHJlc3NQb2ludGVyLnZhbHVlKCkrKzsKLSAgICBpZiAoVU5MSUtFTFkoY29tcHJlc3NQ
b2ludGVyICE9IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKSkKLSAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGhvc3RCZWdpbik7Ci0gICAgCi0gICAgcmV0dXJuIGFkZHJlc3M7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1VUkxQYXJzZXI6OkxDaGFyQnVmZmVyIFVSTFBhcnNl
cjo6cGVyY2VudERlY29kZShjb25zdCBMQ2hhciogaW5wdXQsIHNpemVfdCBsZW5ndGgsIGNvbnN0
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xh
dGlvblBvc2l0aW9uKQotewotICAgIExDaGFyQnVmZmVyIG91dHB1dDsKLSAgICBvdXRwdXQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07Ci0g
ICAgICAgIGlmIChieXRlICE9ICclJykKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBl
bmQoYnl0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIp
IHsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FT
Q0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICAgICAgICAgICAg
ICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlu
cHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9
Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLSAgICAKLVVSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJM
UGFyc2VyOjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkK
LXsKLSAgICBMQ2hhckJ1ZmZlciBvdXRwdXQ7Ci0gICAgb3V0cHV0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobGVuZ3RoKTsKLSAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGlucHV0W2ldOwotICAgICAgICBpZiAoYnl0
ZSAhPSAnJScpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOwotICAg
ICAgICBlbHNlIGlmIChsZW5ndGggPiAyICYmIGkgPCBsZW5ndGggLSAyKSB7Ci0gICAgICAgICAg
ICBpZiAoaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkgJiYgaXNBU0NJSUhleERpZ2l0KGlu
cHV0W2kgKyAyXSkpIHsKLSAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRv
QVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAgICAgICAgICAg
ICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG91dHB1dC51
bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0
LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6
OkxDaGFyQnVmZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWlu
LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50
YXhWaW9sYXRpb25Qb3NpdGlvbikKLXsKLSAgICBMQ2hhckJ1ZmZlciBhc2NpaTsKLSAgICBpZiAo
ZG9tYWluLmlzQWxsQVNDSUkoKSkgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gZG9tYWluLmxl
bmd0aCgpOwotICAgICAgICBpZiAoZG9tYWluLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25z
dCBMQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAg
YXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQotICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAg
ICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJz
W2ldKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25z
dCBVQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAg
IGFzY2lpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkKLSAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAg
ICAgICAgICAgICAgIGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJTG93ZXIoY2hhcmFjdGVy
c1tpXSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhc2NpaTsK
LSAgICB9Ci0gICAgCi0gICAgY29uc3Qgc2l6ZV90IG1heERvbWFpbkxlbmd0aCA9IDY0OwotICAg
IFVDaGFyIGhvc3RuYW1lQnVmZmVyW21heERvbWFpbkxlbmd0aF07Ci0gICAgVUVycm9yQ29kZSBl
cnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBV
SUROQV9JTkZPX0lOSVRJQUxJWkVSOwotICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRl
ZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIo
KSwgU3RyaW5nVmlldyhkb21haW4pLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBkb21haW4ubGVu
Z3RoKCksIGhvc3RuYW1lQnVmZmVyLCBtYXhEb21haW5MZW5ndGgsICZwcm9jZXNzaW5nRGV0YWls
cywgJmVycm9yKTsKLSAgICBBU1NFUlQobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA8PSBzdGF0aWNf
Y2FzdDxpbnQzMl90PihtYXhEb21haW5MZW5ndGgpKTsKLQotICAgIGlmIChVX1NVQ0NFU1MoZXJy
b3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKLSAgICAgICAgZm9yIChpbnQzMl90
IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsgKytpKSB7Ci0gICAgICAgICAgICBB
U1NFUlQoaXNBU0NJSShob3N0bmFtZUJ1ZmZlcltpXSkpOwotICAgICAgICAgICAgQVNTRVJUKCFp
c0FTQ0lJVXBwZXIoaG9zdG5hbWVCdWZmZXJbaV0pKTsKLSAgICAgICAgfQotICAgICAgICBhc2Np
aS5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAg
ICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcoYXNjaWkuZGF0YSgpLCBhc2NpaS5zaXplKCkpKQot
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9z
aXRpb24pOwotICAgICAgICByZXR1cm4gYXNjaWk7Ci0gICAgfQotICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNv
bnN0IFVSTFBhcnNlcjo6TENoYXJCdWZmZXImIGFzY2lpRG9tYWluKQotewotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXNjaWlEb21haW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGlz
Rm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbltpXSkpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCppdGVyYXRvciA9
PSAnOicpOwotICAgIGF1dG8gY29sb25JdGVyYXRvciA9IGl0ZXJhdG9yOwotICAgIGFkdmFuY2Uo
aXRlcmF0b3IsIGNvbG9uSXRlcmF0b3IpOwotICAgIHVpbnQzMl90IHBvcnQgPSAwOwotICAgIGlm
IChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICB1bnNpZ25lZCBwb3J0TGVu
Z3RoID0gY3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7
Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIHNpemVfdCBkaWdpdENvdW50ID0gMDsKLSAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNl
OwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBp
ZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkgewotICAgICAgICAg
ICAgaWYgKCppdGVyYXRvciA9PSAnMCcgJiYgIWRpZ2l0Q291bnQpCi0gICAgICAgICAgICAgICAg
bGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgICsrZGlnaXRDb3VudDsKLSAgICAgICAg
ICAgIHBvcnQgPSBwb3J0ICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7Ci0gICAgICAgICAgICBpZiAo
cG9ydCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIGlmIChwb3J0ICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgIAotICAgIGlmICghcG9ydCAmJiBkaWdp
dENvdW50ID4gMSkKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotCi0g
ICAgQVNTRVJUKHBvcnQgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKLSAgICBpZiAo
VU5MSUtFTFkoZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwYXJzZWREYXRhVmlldygwLCBtX3VybC5t
X3NjaGVtZUVuZCkpID09IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSkpCi0gICAgICAgIHN5
bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICBlbHNlIHsKLSAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICBBU1NFUlQocG9ydCA8PSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOwotICAgICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVm
ZmVyPHVpbnQxNl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOwotICAgIH0KLQotICAg
IHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwu
bV9ob3N0RW5kOwotICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0
TGVuZ3RoKTsKLSAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwotICAgIHJldHVy
biB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQ
YXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
aXRlcmF0b3IpCi17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICgqaXRlcmF0b3IgPT0gJ1snKSB7Ci0gICAgICAgIGF1dG8gaXB2NkVuZCA9IGl0ZXJh
dG9yOwotICAgICAgICB3aGlsZSAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCAhPSAnXScp
Ci0gICAgICAgICAgICArK2lwdjZFbmQ7Ci0gICAgICAgIGlmIChpcHY2RW5kLmF0RW5kKCkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBwYXJz
ZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGl0ZXJhdG9yLCBpcHY2
RW5kKSkpIHsKLSAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjYoYWRkcmVzcy52YWx1ZSgpKTsKLSAg
ICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgYWR2YW5j
ZShpcHY2RW5kKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2
NkVuZCA9PSAnOicpIHsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3Vy
cmVudFBvc2l0aW9uKGlwdjZFbmQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VQ
b3J0KGlwdjZFbmQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXB2NkVuZCk7Ci0gICAgICAgICAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihp
cHY2RW5kKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdXJsSXNTcGVjaWFsKSB7Ci0gICAgICAg
IGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRm9yYmlkZGVuSG9zdENv
ZGVQb2ludCgqaXRlcmF0b3IpICYmICppdGVyYXRvciAhPSAnJScpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVF
bmNvZGVTZXQ+KGl0ZXJhdG9yKTsKLSAgICAgICAgfQotICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQo
KSkgewotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3Ip
OwotICAgIH0KLSAgICAKLSAgICBpZiAoTElLRUxZKCFtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJ
SSkpIHsKLSAgICAgICAgYXV0byBob3N0SXRlcmF0b3IgPSBpdGVyYXRvcjsKLSAgICAgICAgZm9y
ICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBpZiAoaXNU
YWJPck5ld2xpbmUoKml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGFkZHJlc3Mg
PSBwYXJzZUlQdjRIb3N0KGhvc3RJdGVyYXRvciwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4oaG9zdEl0ZXJhdG9yLCBpdGVyYXRvcikpOwotICAgICAgICBpZiAoYWRkcmVzcykgewot
ICAgICAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOwotICAgICAgICAgICAg
bV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAg
IGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZm9yICg7IGhvc3RJdGVyYXRvciAhPSBpdGVy
YXRvcjsgKytob3N0SXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9y
TmV3bGluZSgqaG9zdEl0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oaG9zdEl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoKmhvc3RJdGVyYXRvcikp
KQotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0SXRlcmF0b3IpOwotICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmhvc3RJdGVyYXRvcikpOwot
ICAgICAgICB9Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVy
YXRvcik7Ci0gICAgICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gcGFyc2VQb3J0KGhvc3RJdGVyYXRvcik7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRMZW5n
dGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAg
ICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICAKLSAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGl0ZXJhdG9yOwotICAg
IAotICAgIExDaGFyQnVmZmVyIHV0ZjhFbmNvZGVkOwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRF
bmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUo
Kml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCppdGVyYXRvciA9
PSAnOicpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJ
KCppdGVyYXRvcikpKQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0K
LSAgICAgICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUigqaXRlcmF0b3IpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKLSAg
ICAgICAgaW50MzJfdCBvZmZzZXQgPSAwOwotICAgICAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZl
ciwgb2Zmc2V0LCAqaXRlcmF0b3IpOwotICAgICAgICB1dGY4RW5jb2RlZC5hcHBlbmQoYnVmZmVy
LCBvZmZzZXQpOwotICAgIH0KLSAgICBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlZCA9IHBlcmNl
bnREZWNvZGUodXRmOEVuY29kZWQuZGF0YSgpLCB1dGY4RW5jb2RlZC5zaXplKCksIGhvc3RCZWdp
bik7Ci0gICAgU3RyaW5nIGRvbWFpbiA9IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQu
ZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotICAgIGlmIChkb21haW4uaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcocGVy
Y2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpKQotICAgICAgICBzeW50
YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICBhdXRvIGFzY2lpRG9tYWluID0gZG9tYWluVG9B
U0NJSSgqZG9tYWluLmltcGwoKSwgaG9zdEJlZ2luKTsKLSAgICBpZiAoIWFzY2lpRG9tYWluIHx8
IGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlEb21haW4udmFsdWUoKSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW5WYWx1ZSA9IGFzY2lp
RG9tYWluLnZhbHVlKCk7Ci0gICAgY29uc3QgTENoYXIqIGFzY2lpRG9tYWluQ2hhcmFjdGVycyA9
IGFzY2lpRG9tYWluVmFsdWUuZGF0YSgpOwotCi0gICAgYXV0byBhZGRyZXNzID0gcGFyc2VJUHY0
SG9zdChob3N0QmVnaW4sIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPihhc2NpaURvbWFpblZhbHVl
LmJlZ2luKCksIGFzY2lpRG9tYWluVmFsdWUuZW5kKCkpKTsKLSAgICBpZiAoYWRkcmVzcykgewot
ICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7Ci0gICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmIChpdGVyYXRv
ci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChp
dGVyYXRvcik7Ci0gICAgfQotICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdF
cnJvcjo6RmFpbHVyZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcihhc2NpaURvbWFpbkNoYXJhY3RlcnMsIGFzY2lpRG9tYWluVmFsdWUuc2l6ZSgpKTsK
LSAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgIGlm
ICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7
Ci0gICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlu
cHV0KQotewotICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7Ci0g
ICAgaWYgKHV0ZjguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
YXV0byBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkp
OwotfQotCi0vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsZW5jb2Rl
ZC1wYXJzZXIKLWF1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcg
aW5wdXQpIC0+IFVSTEVuY29kZWRGb3JtCi17Ci0gICAgVVJMRW5jb2RlZEZvcm0gb3V0cHV0Owot
ICAgIGZvciAoU3RyaW5nVmlldyBieXRlcyA6IGlucHV0LnNwbGl0KCcmJykpIHsKLSAgICAgICAg
YXV0byBlcXVhbEluZGV4ID0gYnl0ZXMuZmluZCgnPScpOwotICAgICAgICBpZiAoZXF1YWxJbmRl
eCA9PSBub3RGb3VuZCkgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShi
eXRlcy50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFt
ZSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0eVN0
cmluZygpIH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9y
bVVSTERlY29kZShieXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBs
YWNlKCcrJywgMHgyMCkpOwotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGZvcm1VUkxEZWNvZGUo
Ynl0ZXMuc3Vic3RyaW5nKGVxdWFsSW5kZXggKyAxKS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAw
eDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSkKLSAgICAgICAgICAgICAgICBv
dXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52YWx1ZSgpIH0pOwotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiBvdXRwdXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHNlcmlhbGl6ZVVS
TEVuY29kZWRGb3JtKGNvbnN0IFN0cmluZyYgaW5wdXQsIFZlY3RvcjxMQ2hhcj4mIG91dHB1dCkK
LXsKLSAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOwotICAgIGNv
bnN0IGNoYXIqIGRhdGEgPSB1dGY4LmRhdGEoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHV0ZjgubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBjb25zdCBjaGFyIGJ5dGUgPSBkYXRhW2ld
OwotICAgICAgICBpZiAoYnl0ZSA9PSAweDIwKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgw
eDJCKTsKLSAgICAgICAgZWxzZSBpZiAoYnl0ZSA9PSAweDJBCi0gICAgICAgICAgICB8fCBieXRl
ID09IDB4MkQKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgyRQotICAgICAgICAgICAgfHwgKGJ5
dGUgPj0gMHgzMCAmJiBieXRlIDw9IDB4MzkpCi0gICAgICAgICAgICB8fCAoYnl0ZSA+PSAweDQx
ICYmIGJ5dGUgPD0gMHg1QSkKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHg1RgotICAgICAgICAg
ICAgfHwgKGJ5dGUgPj0gMHg2MSAmJiBieXRlIDw9IDB4N0EpKSAvLyBGSVhNRTogUHV0IHRoZXNl
IGluIHRoZSBjaGFyYWN0ZXJDbGFzc1RhYmxlIHRvIGF2b2lkIGJyYW5jaGVzLgotICAgICAgICAg
ICAgb3V0cHV0LmFwcGVuZChieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcGVyY2Vu
dEVuY29kZUJ5dGUoYnl0ZSwgb3V0cHV0KTsKLSAgICB9Ci19Ci0gICAgCi1TdHJpbmcgVVJMUGFy
c2VyOjpzZXJpYWxpemUoY29uc3QgVVJMRW5jb2RlZEZvcm0mIHR1cGxlcykKLXsKLSAgICBpZiAo
dHVwbGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3RvcjxMQ2hh
cj4gb3V0cHV0OwotICAgIGZvciAoYXV0byYgdHVwbGUgOiB0dXBsZXMpIHsKLSAgICAgICAgaWYg
KCFvdXRwdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgnJicpOwotICAg
ICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS5rZXksIG91dHB1dCk7Ci0gICAgICAg
IG91dHB1dC5hcHBlbmQoJz0nKTsKLSAgICAgICAgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0odHVw
bGUudmFsdWUsIG91dHB1dCk7Ci0gICAgfQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1v
dmUob3V0cHV0KSk7Ci19Ci0KLWNvbnN0IFVJRE5BJiBVUkxQYXJzZXI6OmludGVybmF0aW9uYWxE
b21haW5OYW1lVHJhbnNjb2RlcigpCi17Ci0gICAgc3RhdGljIFVJRE5BKiBlbmNvZGVyOwotICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10gewotICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAg
ICAgICAvLyBXYXJuaW5nOiBQbGVhc2UgY29udGFjdCBhIFdlYktpdEdUSysgZGV2ZWxvcGVyIGlm
IGNoYW5naW5nIHRoZXNlIGZsYWdzLgotICAgICAgICAvLyBUaGV5IHNob3VsZCBiZSBzeW5jZWQg
d2l0aCBlcGh5X3VyaV9kZWNvZGUoKSBpbiBlcGh5LXVyaS1oZWxwZXJzLmMuCi0gICAgICAgIGVu
Y29kZXIgPSB1aWRuYV9vcGVuVVRTNDYoVUlETkFfQ0hFQ0tfQklESSB8IFVJRE5BX0NIRUNLX0NP
TlRFWFRKIHwgVUlETkFfTk9OVFJBTlNJVElPTkFMX1RPX1VOSUNPREUgfCBVSUROQV9OT05UUkFO
U0lUSU9OQUxfVE9fQVNDSUksICZlcnJvcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFVfU1VD
Q0VTUyhlcnJvcikpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmNvZGVyKTsKLSAgICB9KTsK
LSAgICByZXR1cm4gKmVuY29kZXI7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVh
bChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiJWQg
JWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVk
ICVkICVkICVkICVkICVkICVzIiwKLSAgICAgICAgYS5tX2lzVmFsaWQsCi0gICAgICAgIGEubV9j
YW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKLSAg
ICAgICAgYS5tX3NjaGVtZUVuZCwKLSAgICAgICAgYS5tX3VzZXJTdGFydCwKLSAgICAgICAgYS5t
X3VzZXJFbmQsCi0gICAgICAgIGEubV9wYXNzd29yZEVuZCwKLSAgICAgICAgYS5tX2hvc3RFbmQs
Ci0gICAgICAgIGEubV9ob3N0RW5kICsgYS5tX3BvcnRMZW5ndGgsCi0gICAgICAgIGEubV9wYXRo
QWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGEubV9wYXRoRW5kLAotICAgICAgICBhLm1fcXVlcnlF
bmQsCi0gICAgICAgIGEubV9zdHJpbmcudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgYi5tX2lzVmFs
aWQsCi0gICAgICAgIGIubV9jYW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBiLm1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSwKLSAgICAgICAgYi5tX3NjaGVtZUVuZCwKLSAgICAgICAgYi5tX3VzZXJT
dGFydCwKLSAgICAgICAgYi5tX3VzZXJFbmQsCi0gICAgICAgIGIubV9wYXNzd29yZEVuZCwKLSAg
ICAgICAgYi5tX2hvc3RFbmQsCi0gICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5ndGgs
Ci0gICAgICAgIGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGIubV9wYXRoRW5kLAot
ICAgICAgICBiLm1fcXVlcnlFbmQsCi0gICAgICAgIGIubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7
Ci0KLSAgICByZXR1cm4gYS5tX3N0cmluZyA9PSBiLm1fc3RyaW5nCi0gICAgICAgICYmIGEubV9p
c1ZhbGlkID09IGIubV9pc1ZhbGlkCi0gICAgICAgICYmIGEubV9jYW5ub3RCZUFCYXNlVVJMID09
IGIubV9jYW5ub3RCZUFCYXNlVVJMCi0gICAgICAgICYmIGEubV9wcm90b2NvbElzSW5IVFRQRmFt
aWx5ID09IGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5Ci0gICAgICAgICYmIGEubV9zY2hlbWVF
bmQgPT0gYi5tX3NjaGVtZUVuZAotICAgICAgICAmJiBhLm1fdXNlclN0YXJ0ID09IGIubV91c2Vy
U3RhcnQKLSAgICAgICAgJiYgYS5tX3VzZXJFbmQgPT0gYi5tX3VzZXJFbmQKLSAgICAgICAgJiYg
YS5tX3Bhc3N3b3JkRW5kID09IGIubV9wYXNzd29yZEVuZAotICAgICAgICAmJiBhLm1faG9zdEVu
ZCA9PSBiLm1faG9zdEVuZAotICAgICAgICAmJiBhLm1fcG9ydExlbmd0aCA9PSBiLm1fcG9ydExl
bmd0aAotICAgICAgICAmJiBhLm1fcGF0aEFmdGVyTGFzdFNsYXNoID09IGIubV9wYXRoQWZ0ZXJM
YXN0U2xhc2gKLSAgICAgICAgJiYgYS5tX3BhdGhFbmQgPT0gYi5tX3BhdGhFbmQKLSAgICAgICAg
JiYgYS5tX3F1ZXJ5RW5kID09IGIubV9xdWVyeUVuZDsKLX0KLQotYm9vbCBVUkxQYXJzZXI6Omlu
dGVybmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gdXJs
Lm1fc2NoZW1lRW5kIDw9IHVybC5tX3VzZXJTdGFydAotICAgICAgICAmJiB1cmwubV91c2VyU3Rh
cnQgPD0gdXJsLm1fdXNlckVuZAotICAgICAgICAmJiB1cmwubV91c2VyRW5kIDw9IHVybC5tX3Bh
c3N3b3JkRW5kCi0gICAgICAgICYmIHVybC5tX3Bhc3N3b3JkRW5kIDw9IHVybC5tX2hvc3RFbmQK
LSAgICAgICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGggPD0gdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoCi0gICAgICAgICYmIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSB1
cmwubV9wYXRoRW5kCi0gICAgICAgICYmIHVybC5tX3BhdGhFbmQgPD0gdXJsLm1fcXVlcnlFbmQK
LSAgICAgICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1fc3RyaW5nLmxlbmd0aCgpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjViZWIwMjRjOTgwMzIyYTZlMDUzOWE1YmZl
ODQ3YWU5MTBjZmFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KLQotc3RydWN0IFVJRE5BOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQb2ludEl0ZXJhdG9yOwotCi1jbGFz
cyBVUkxQYXJzZXIgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFVSTFBhcnNlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVs
bHB0cik7Ci0gICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpbnRlcm5hbFZhbHVlc0NvbnNpc3Rl
bnQoY29uc3QgVVJMJik7Ci0gICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBTdHJpbmc+PiBVUkxFbmNvZGVkRm9ybTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgVVJMRW5jb2RlZEZvcm0gcGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KTsKLSAg
ICBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYpOwotCi0gICAg
c3RhdGljIGNvbnN0IFVJRE5BJiBpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsK
LSAgICBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIpOwotCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2No
ZW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1h
eWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLQotcHJpdmF0ZToK
LSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bChTdHJpbmdWaWV3KTsKLSAgICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVs
dFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKLQotICAgIFVSTCBtX3VybDsKLSAgICBWZWN0
b3I8TENoYXI+IG1fYXNjaWlCdWZmZXI7Ci0gICAgYm9vbCBtX3VybElzU3BlY2lhbCB7IGZhbHNl
IH07Ci0gICAgYm9vbCBtX3VybElzRmlsZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hvc3RIYXNQ
ZXJjZW50T3JOb25BU0NJSSB7IGZhbHNlIH07Ci0gICAgU3RyaW5nIG1faW5wdXRTdHJpbmc7Ci0g
ICAgY29uc3Qgdm9pZCogbV9pbnB1dEJlZ2luIHsgbnVsbHB0ciB9OwotCi0gICAgYm9vbCBtX2Rp
ZFNlZVN5bnRheFZpb2xhdGlvbiB7IGZhbHNlIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgZGVmYXVsdElubGluZUJ1ZmZlclNpemUgPSAyMDQ4OwotICAgIHVzaW5nIExDaGFyQnVmZmVy
ID0gVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT47Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUq
LCBjb25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTFRleHRFbmNvZGlu
ZyopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2VBdXRo
b3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gYm9vbCBwYXJzZVBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLQot
ICAgIHZvaWQgZmFpbHVyZSgpOwotICAgIGVudW0gY2xhc3MgUmVwb3J0U3ludGF4VmlvbGF0aW9u
IHsgTm8sIFllcyB9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9y
dFN5bnRheFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9s
YXRpb246Olllcz4KLSAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGl0ZXJhdG9yKSB7IGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgcmVwb3J0U3ludGF4Vmlv
bGF0aW9uPihpdGVyYXRvciwgaXRlcmF0b3IpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uID0gUmVwb3J0U3ludGF4VmlvbGF0aW9u
OjpZZXM+Ci0gICAgdm9pZCBhZHZhbmNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
JiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3lu
dGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGJvb2wgdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHN5
bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNQZXJjZW50RW5jb2Rl
ZERvdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gYm9vbCBpc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlz
RG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgc2hvdWxkQ29weUZpbGVV
UkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGJvb2wgY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBVQ2hhcjMyKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4pOwotICAgIGJvb2wgaXNMb2NhbGhvc3QoU3RyaW5nVmlldyk7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb25zdW1lU2luZ2xlRG90UGF0aFNl
Z21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc2l6ZV90IGN1cnJlbnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+
IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlKTsKLSAg
ICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lk
IHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYp
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8TENo
YXJCdWZmZXI+IGRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYsIGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBMQ2hhckJ1ZmZlciBwZXJjZW50
RGVjb2RlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgc3Rh
dGljIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QpOwotICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlu
cHV0KTsKLSAgICBzdGF0aWMgYm9vbCBoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IExD
aGFyQnVmZmVyJik7Ci0gICAgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90KTsKLSAgICB2
b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoVUNoYXIzMik7Ci0gICAgdm9pZCBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IHNpemUpIHsgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFyYWN0ZXJzKSwgc2l6ZSk7IH0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGVuY29kZU5vblVURjhR
dWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYs
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB2b2lkIGNvcHlBU0NJSVN0
cmluZ1VudGlsKGNvbnN0IFN0cmluZyYsIHNpemVfdCBsZW5ndGgpOwotICAgIGJvb2wgY29weUJh
c2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJik7Ci0gICAgU3RyaW5nVmlldyBwYXJzZWRE
YXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpOwotICAgIFVDaGFyIHBhcnNlZERh
dGFWaWV3KHNpemVfdCBwb3NpdGlvbik7Ci0KLSAgICB1c2luZyBJUHY0QWRkcmVzcyA9IHVpbnQz
Ml90OwotICAgIHZvaWQgc2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyk7Ci0gICAgZW51bSBjbGFz
cyBJUHY0UGFyc2luZ0Vycm9yOwotICAgIGVudW0gY2xhc3MgSVB2NFBpZWNlUGFyc2luZ0Vycm9y
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24s
IHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPElQdjRBZGRyZXNzLCBJUHY0UGFyc2lu
Z0Vycm9yPiBwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGVGb3JTeW50YXhWaW9sYXRpb24+JiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4p
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPHVpbnQzMl90
LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gcGFyc2VJUHY0UGllY2UoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBib29sJiBzeW50YXhWaW9sYXRpb24pOwotICAg
IHVzaW5nIElQdjZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFy
c2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJ
UHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRk
cmVzcz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4pOwotICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsK
LSAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOwotCi0gICAgZW51bSBjbGFzcyBV
UkxQYXJ0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29weVVS
TFBhcnRzVW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyomKTsKLSAgICBzdGF0
aWMgc2l6ZV90IHVybExlbmd0aFVudGlsUGFydChjb25zdCBVUkwmLCBVUkxQYXJ0KTsKLSAgICB2
b2lkIHBvcFBhdGgoKTsKLSAgICBib29sIHNob3VsZFBvcFBhdGgodW5zaWduZWQpOwotfTsKLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAppbmRleCA0MTgxZWMxM2JmZjhmNGUyYWE4
Mjk1ZTFiZmI3ZWZlNTllZDA4MWUzLi5jMzQ0ODQ4NmVlN2MyYWVhY2FhZWJlYmY1YTBlYjcxODNk
YzZlZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzYsNyArMzYsNiBA
QCBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25O
YW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYQogU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25G
b3JVc2VyQWdlbnRTdHJpbmcoKTsKIFN0cmluZyB1c2VyQWdlbnRCdW5kbGVWZXJzaW9uKCk7CiAj
ZWxzZQotY2xhc3MgVVJMOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdl
bnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBlbXB0eVN0cmluZygpLCBjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCkpOwogV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKaW5kZXggMjMyZTVjZTU3ZGIwNWRi
MzhiNDlkZDljMDIxYTFiYzk5YzAzODVjYi4uNDliNTg5MjBhN2FlYjc3MzJkNjU3MzI3NTU5MzQ3
N2ExODZiMGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50
UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3Mu
Y3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiVXNlckFnZW50UXVpcmtzLmgiCiAKICNp
bmNsdWRlICJQdWJsaWNTdWZmaXguaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnRRdWlya3MuaAppbmRleCBiZjEwY2UyMzJkOTFkNDMxYmNiNmQ0YTcxYTUxZGQ0ZGRl
OGZiODhhLi5kYzc3ZDRlODUwZWY5MDlkNGIwMDU2ZDdjOWE3ZTFhZDQ1ZmRkOGVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaApAQCAtMzAsOCArMzAsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgVXNlckFnZW50UXVp
cmtzIHsKIHB1YmxpYzoKICAgICBlbnVtIFVzZXJBZ2VudFF1aXJrIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzNiNDNiYzdhMDdiODBhZTRiYWEzNWZkYjczMzVhYzNiYTc2NDQxNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9DRlVSTEV4dHJhcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0K
LSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCi17Ci0g
ICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2Vk
IHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKLSAg
ICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBp
cyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgLy8g
Y291bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVu
dCBlbmNvZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjawotICAgIC8vIG9udG8g
dXNpbmcgSVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCi0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgsIGJhc2VVUkwsIHRydWUpKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0
ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRp
bjEsIGJhc2VVUkwsIHRydWUpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIGdldFVS
TEJ5dGVzKENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQotewotICAgIENGSW5k
ZXggYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7Ci0gICAgcmVzdWx0LnJl
c2l6ZShieXRlc0xlbmd0aCk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0
ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVu
Z3RoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRl
c0xlbmd0aCk7Ci19Ci0KLXZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiBy
ZXN1bHQpCi17Ci0gICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAw
LCAwKTsKLSAgICBjaGFyKiBieXRlczsKLSAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRp
YWxpemVkKGJ5dGVzTGVuZ3RoLCBieXRlcyk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENG
VVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xl
bmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0
ZXNMZW5ndGgpOwotfQotCi1ib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBj
b25zdCBVUkwmIHVybCkKLXsKLSAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSk7Ci0KLSAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCi0g
ICAgICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVS
TCB9KTsKLQotICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXMoY2ZVUkws
IGJ5dGVzKTsKLSAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5z
aXplKCkpIH07Ci0KLSAgICBpZiAoIXVybC5oYXNQYXRoKCkpCi0gICAgICAgIHJldHVybiBTdHJp
bmdWaWV3IHsgdXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7Ci0KLSAgICBhdXRvIHVybFdp
dGhvdXRQYXRoID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwu
cGF0aFN0YXJ0KCkgKyAxKTsKLSAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxX
aXRob3V0UGF0aCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0NGVVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJh
cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmQ1NzA2NjBkYTZhYTk4ZDEyMjg2
NDA3OGZlZDdkZDZlNzc5ZWY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDRlVSTEV4dHJh
c19oCi0jZGVmaW5lIENGVVJMRXh0cmFzX2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkw7Ci10eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+
IFVSTENoYXJCdWZmZXI7Ci0KLVdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFJlZj4gY3Jl
YXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VVUkwg
PSAwKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJC
dWZmZXImKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIENTdHJp
bmcmKTsKLQotYm9vbCBpc0NGVVJMU2FtZU9yaWdpbihDRlVSTFJlZiwgY29uc3QgVVJMJik7Ci0K
LX0KLQotI2VuZGlmIC8vIENGVVJMRXh0cmFzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1VSTENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENG
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI2NDFlZDJkOWJlYzEzZDZhMTc3
OGY2MzY2MmY5YjY2N2E5NzFjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJV
UkwuaCIKLQotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgi
Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+Ci0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6OlVSTChD
RlVSTFJlZiB1cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBp
Z25vcmUgYmFzZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5
dGVzKHVybCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgp
KTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotI2lmICFVU0UoRk9VTkRBVElP
TikKLVJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17Ci0gICAg
Ly8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/Ci0gICAg
Ly8gQ3VycmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0
ZXJzIGluIHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAotICAgIC8vIHdoaWNoIGlzIGNsZWFybHkg
d3JvbmcuCi0gICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0gICAgY29weVRvQnVmZmVyKGJ1ZmZl
cik7Ci0gICAgYXV0byBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKLQotICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYg
IWlzQ0ZVUkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgcmV0dXJuIGNmVVJMOwotfQotI2VuZGlmCi0KLVN0cmluZyBVUkw6OmZp
bGVTeXN0ZW1QYXRoKCkgY29uc3QKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0g
Y3JlYXRlQ0ZVUkwoKTsKLSAgICBpZiAoIWNmVVJMKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0KLSNpZiBQTEFURk9STShXSU4pCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NG
VVJMV2luZG93c1BhdGhTdHlsZTsKLSNlbHNlCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxl
ID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7Ci0jZW5kaWYKLSAgICByZXR1cm4gYWRvcHRDRihDRlVS
TENvcHlGaWxlU3lzdGVtUGF0aChjZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7Ci19Ci0K
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IDIxMDZjMmJhOWI4NmFjMDIwYjQwNzAx
MGU5MTMyMzliZDQyNTkwZWYuLmE0ZTc2MmU3ODYzOWRkNmM2M2NjMjZlODY5NzA5YTU5N2NhNDEw
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXJfaAotI2RlZmluZSBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGVudEZpbHRlci5oIgog
I2luY2x1ZGUgPG9iamMvTlNPYmpDUnVudGltZS5oPgpAQCAtMzksOCArMzgsNiBAQCBPQkpDX0NM
QVNTIE5TRGF0YTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNz
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ29u
dGVudEZpbHRlciB7CiAgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcj4oKTsKIApAQCAtNjksNSArNjYsMyBAQCBjbGFzcyBOZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCBlOTQ0MWZmY2RlYjg2ZTYy
OGJiZTU0ZjdjOTY1ZDg2NjgwNjExNDU1Li5kZTFkYWRiYjkzYmRlMmFmZmIwMmQzYjY2OWJiYmIw
YTdkYWFiYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMzQsMTAgKzM0LDEw
IEBACiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgi
CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTkVGaWx0
ZXJTb3VyY2VTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogI2ltcG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIFNPRlRf
TElOS19GUkFNRVdPUktfT1BUSU9OQUwoTmV0d29ya0V4dGVuc2lvbik7CkBAIC0xMTgsNyArMTE4
LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY28KIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RV
UkwgeyBVUkwoKSwgbW9kaWZpZWRSZXF1ZXN0VVJMU3RyaW5nLmdldCgpIH07CiAgICAgaWYgKCFt
b2RpZmllZFJlcXVlc3RVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVy
aW5nLCAiTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9k
aWZpZWQgVVJMIHN0cmluZyAlQCB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVz
dFVSTFN0cmluZy5nZXQoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQgVVJMIHN0
cmluZyAlQCB0byBhICBVUkwuXG4iLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcuZ2V0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1NTTEtleUdlbmVyYXRvckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9TU0xLZXlHZW5lcmF0b3JHTGliLmNwcAppbmRleCA5NDUwNmY1N2E0NzVlMWVjNTY3
ZmI2OGZkY2FkYjRkMjBjMjJmMmJmLi40MWY0OGQ3MTYxZTdmMjk2NWMxNTU4NWZmMDA4ZmMyOTMw
OTJjMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NTTEtleUdl
bmVyYXRvckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU1NMS2V5
R2VuZXJhdG9yR0xpYi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
IAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdl
bnRHTGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5j
cHAKaW5kZXggMTYyMWE4ODVlODcwNGNhODQ4MzIwZjYyNTFjMDZmOTIxYjE4OWQ4OC4uYTNiYTRl
NDZkYzI4Mzk1ZDg1MmNlOGZiNjhjNzBiNTc5OWUyNzcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50LmgiCiAKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJVc2VyQWdlbnRRdWlya3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCiAjaWYgT1MoVU5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuY3BwCmluZGV4IGIwY2E0M2Q1NWM0
NWNiNTBkNzMwZjg5MmUxN2Q4MDg2OWNjZDQ5NjEuLmQzNWViMTZiYTUyYWQwM2YwN2E0ZWZlZDA0
MWJmYmU4ODQwMzM2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5ncy5oIgogCisjaW5jbHVk
ZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNDk3ZDJjNzlmZDJj
YjA4ZmMzZDBjY2JmOGY4ZWEyMjczYzQzMTAxYy4uYWU4YTkzZjRmMWE0ODhjZWFiOGIzMWI0ODVj
YmFhOGIyYjg1YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTY1LDYgKzY1LDEyIEBAIHR5cGVkZWYgdW5zaWduZWQg
Y2hhciBVSW50ODsKICNlbmRpZgogI2VuZGlmCiAKKy8vIFgxMSBoZWFkZXIgZGVmaW5lcyAiTm9u
ZSIgYXMgY29uc3RhbnQgaW4gbWFjcm8gYW5kIGJyZWFrZXMgdGhlIFBhaW50SW52YWxpZGF0aW9u
UmVhc29ucyBlbnVtJ3MgIk5vbmUiLgorLy8gQXMgYSB3b3JrYXJvdW5kLCB3ZSBleHBsaWNpdGx5
IHVuZGVmIFgxMSdzIE5vbmUgaGVyZS4KKyNpZiBkZWZpbmVkKE5vbmUpCisjdW5kZWYgTm9uZQor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShXSU5HREkpCkBAIC04NSw3
ICs5MSw2IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIGNsYXNzIElt
YWdlQnVmZmVyOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFJvdW5kZWRSZWN0OwotY2xhc3MgVVJM
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBQYXRoOwogY2xhc3MgVGV4dFJ1bjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBkNmIwYzY1
ZmJmNTdkOWM3ZGVhMTk2MDgwMjliYzJhNjAxNDU3OGIxLi5iYzM4OTE0NDg5ZTMyZDMyOGE1NGQ0
MjFlNTdkYjdmMzE1OGYzM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFVTRShDRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDVmMjIwYmU0ZWYwNmYzZmMx
ZTc5MzQ5ZmRlYjMzMGVkOTFlNzRhYzkuLjFlMzBmMzQ2OWU0YWI3OTg0NDE0YzJiZmQ4ZmFlNjRl
MThhMDBhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAt
NjgsNyArNjgsNiBAQCBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJM
Owogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4g
aW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZh
bmNlcyBhbmltYXRpb24gZnJhbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VPYnNlcnZlci5oCmluZGV4IDgyNjljYzRlZGMzN2NlNWY0ZGMxNjVmYmQ0ZDYx
YzM2OThhNDI3ZmUuLmYyODMyM2MyNTViMWQwYTAxNDM1MWM5MzQyNzNkYTAxYzVhZjg1YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgK
QEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgSW1hZ2VP
YnNlcnZlcl9oCi0jZGVmaW5lIEltYWdlT2JzZXJ2ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJJbWFnZVR5cGVzLmgiCiAKQEAgLTMyLDcgKzMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbWFnZTsKIGNsYXNzIEludFJlY3Q7Ci1jbGFzcyBVUkw7CiAKIC8vIEludGVy
ZmFjZSBmb3Igbm90aWZpY2F0aW9uIGFib3V0IGNoYW5nZXMgdG8gYW4gaW1hZ2UsIGluY2x1ZGlu
ZyBkZWNvZGluZywKIC8vIGRyYXdpbmcsIGFuZCBhbmltYXRpbmcuCkBAIC01NCw1ICs1MiwzIEBA
IGNsYXNzIEltYWdlT2JzZXJ2ZXIgewogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA0ODhmOTQ1ZmRj
M2QwMDBkYmZhYTMzN2Q0NjVlNWZiMmVmYWFiNDM4Li5mZDRhMWZlMmRkODdiZjljMDhlY2FiYjEw
ZjNlZjM3NDI5NGIxODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJJbWFnZURl
Y29kZXIuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNp
bmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAppbmRleCAwOTAxMDEyMjk5ZWJjNDFjMmNhODRlMTllOTUxZTAyNDc4ODY5
NThlLi45ODBkNjBlZTUwZDUwYmMyNmEwMDMwNWUwM2U1MWI0ZDQ0Y2M5ZTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM4LDcgKzM4
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIElt
YWdlU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiB7CiAg
ICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggNDYyYTcyNjYwNTg0NzEyM2U4N2I3NDk1NWY0
ZjE2OGZmODJmYTZmMC4uMDYwMTQ2ZDNhYzcxMGZlMWM0ZDc4YTMwODEwNjkzYmJmYThiMTFjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBA
IC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0
ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggNTkxNWE3NzMxNmVkOGEwMzBhNGU2ZDNhZDc0MTA0
YzE3OGNhZDlkMi4uM2UxZDI3MGU2NGU3ODVkYWE3MTk1NWRkNGFhZmU0MDMyZjllYjY1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
SW5saW5lcy5oPgpAQCAtNDksNiArNDgsNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQ
cmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGU4
MjQ0OWE1MGZjYzhlOWI4MTdmYzc3ZTJhYTNhMDE5NWY2YTEyMjYuLjFkYmM1Y2Q4OGE3YTA4YTUw
YzM5OTlhMDAyZWU0N2I3NWYyMWY3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtNDUsOSArNDUs
OSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtQ0FMYXllcldpbi5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8cGFs
L2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKICNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkNGUGxheWVySXRlbS5oPgogI2lmIEhB
VkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA3ZDQ5ZDRlMTBjOWU1MTY1YmNlYWUyNTE2M2Q5NmFkYWFmYmQ3YzFiLi42ZTQx
MTdlNWVhMzlhOGUwOWVmYzVkOTE0NDhmNzY2ZjVhYWUzYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTU5LDcgKzU5LDYgQEAKICNpbXBvcnQgIlRleHRFbmNvZGluZy5oIgogI2ltcG9y
dCAiVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCIKICNpbXBvcnQgIlRleHR1cmVDYWNoZUNWLmgi
Ci0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9i
akMuaCIKICNpbXBvcnQgIlZpZGVvVGV4dHVyZUNvcGllckNWLmgiCiAjaW1wb3J0ICJWaWRlb1Ry
YWNrUHJpdmF0ZUFWRk9iakMuaCIKQEAgLTgxLDYgKzgwLDcgQEAKICNpbXBvcnQgPHd0Zi9MaXN0
SGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYv
T1NPYmplY3RQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAKaW5kZXggNWY4NTcwYjEyMTcwNWE2YmE5MTUwNmUzMWJlZDk3ZjY0Nzg4Y2Y2Zi4u
NzZiZWYwNzNkOTcyZWMxNzA3MjBkNmRlZTJhZTkwMDFmM2EyNmU0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lmIFVTRShDQUlSTykKIAogI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYmQy
YTczYTM0ZmFhMWRiZTE1OTIyZWMzYjFjMTFhZDExYjU2ZjY1Ny4uNjhlYzMxZWRkYTBkYTkwZWY4
MTYxYjg5NjdjNDc0OGE4MDMwMjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNDEsMTAgKzQx
LDEwIEBACiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVX
aXRoVGltZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFBMQVRGT1JNKFdJTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjk3
MDNlMjFlYjIxNTcwZjEwM2U1NDJiNWU1NDQzYWIzODY4OWU3NC4uYzUzM2EyZGU0M2IwY2IyMTg2
NzMwMmVmODYwODhiYzRmNjM2YThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGltZVJh
bmdlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5oIgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC00Nyw2
ICs0Niw3IEBACiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9y
aXR5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRS5jcHAKaW5kZXggNGYxZjhhYjAzOGI3ODMzYmVhZTI4OTBhMmNhZTQ1NTk4ZGZi
MmE3Ni4uZDE1YzJhNTBkNzJjNTNlM2EwOTVlMDYyYjFjMzQwOWZlZWYyNmQ1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNw
cApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlBsYXliYWNrUGlwZWxpbmUuaCIKICNpbmNs
dWRlICJTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdl
cy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmgiCiAKICNpbmNsdWRlIDxmbm1hdGNoLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nSGFzaC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuY3BwCmluZGV4IGY3YmQ0NzczYmZkNWM1NjdlODAxZmIwNzE3OGViOGZkODYx
YjdkNDAuLjk2OWE0MjI0NDJlNTgzZDNlZDFhZjdjZmU0M2QyOWU0MmFhOWViNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0
TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02
MzUsNyArNjM1LDcgQEAgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFTcmNTZXRVcmkoR3N0VVJJSGFuZGxl
ciogaGFuZGxlciwgY29uc3QgZ2NoYXIqIHVyaSwgR0Vycm9yKioKICAgICAgICAgcmV0dXJuIFRS
VUU7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6VVJMIHVybChXZWJDb3JlOjpVUkwoKSwgdXJpKTsK
KyAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogCiAgICAgcHJpdi0+bG9jYXRpb24gPSBHVW5pcXVl
UHRyPGdjaGFyPihnX3N0cmR1cCh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdT
VF9PQkpFQ1RfVU5MT0NLKHNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCmluZGV4IGQwM2Y1ZjdmY2VhM2M4ZjE3Mzc3MTZh
NDM1ZjllNjY2MDEyYTVmMTguLjllYzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQy
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09W
VFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09W
VFRDdWUuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiSVNPVlRUQ3VlLmgiCiAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogdXNpbmcgSlNDOjpEYXRhVmlldzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRE
aXJlY3QyRC5jcHAKaW5kZXggNWVhY2UxMDg4NjY3YzIyOWI1YWZjMzllYzkzNjg3ZTBkNDVhNTJm
Yi4uNDQ4MTczMTU3NWFlNDA5NDk1NGM3Njk1ZmRkNzVlN2EwNTVjOGFiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVj
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDxkMmQx
ZWZmZWN0cy5oPgogI2luY2x1ZGUgPGR3cml0ZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
I3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDc1NikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAppbmRleCAzM2Y0ZmUzYTQyZjA1ZjJkNmI5M2RiMGZh
ZGE4Nzg0M2U5YjcwMjY4Li5mN2QxODRmNjdlOGFjMzU2NTUzMzUxNTNlMWNlNTU4YWUxOGU5N2Ux
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAt
MjMsOSArMjMsOSBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgi
CiAjaW5jbHVkZSAiVGV4dEluZGljYXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PGNhaXJvLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHAKaW5kZXggYTRhYjYxMGE3M2ZmMWFjOTE0OTBkZGMyMDA4YzQ4OGQ0MmM5
MDBmMC4uNzFhMDBhMzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjcsOCArMjcs
OCBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBmMzA4YzJiYjdlNTM2OTFk
YTM0YzZlYmQwYjM0ZWQxMWJlYjJmYjY0Li44MTQzZmFmYzM3YzFiYzQ4YTRjMGRlOGRmMTA5NmQ3
MjM4ZTY1MDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZv
cm1QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxh
dGZvcm1QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgIlBhc3Rl
Ym9hcmRIZWxwZXIuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBkYTUxZGEwOWFkMTI3NDhjZjc5
YTUwZjZjMzM0OTllNTBhYTM1Yzg3Li4xYjg1OGVmOWRlZTU3YzIwNmJhM2UwYzczYWFkOGE4NjY5
NmI4MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9u
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgK
QEAgLTE5LDkgKzE5LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA5ZjY5MTRlYzQ4MWYxZGNhYWRhNzVkZjk2
ZDFkNTcwMjU1ZmY3MTUyLi40ZDY2OWYwMWExMzU5ZGE4YTQ3MzQ1ZWMzYzMyN2FkYjIzOWE5OTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAt
MzUsMTAgKzM1LDEwIEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYk5TQXR0
cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmls
ZUNvcmVTZXJ2aWNlcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogCiBAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoTlNBdHRyaWJ1
dGVkU3RyaW5nS2l0QWRkaXRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZGE3ZjYyMTc3YWM4NTk2MDUzMTAx
YjViODkxODJlMDIxYTliMjZkYy4uZDdhZDQyNWRhYWI0NmY4MWI2OTk5Mzk4NzgzY2MyNTFmZTgy
YmRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC0zMiw5ICszMiw3IEBACiAjaW1wb3J0ICJJbWFnZS5oIgogI2lt
cG9ydCAiUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJV
UkwuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0
cmFzLmgiCiAjaW1wb3J0ICJXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0IDxN
b2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxVSUtpdC9V
SUNvbG9yLmg+CkBAIC00NCw2ICs0Miw4IEBACiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQ
SS5oPgogI2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJh
cy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjZGVmaW5lIFBBU1RFQk9B
UkRfU1VQUE9SVFNfSVRFTV9QUk9WSURFUlMgKFBMQVRGT1JNKElPUykgJiYgIShQTEFURk9STShX
QVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKSkpCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2Fy
ZEltYWdlKQogICAgIGF1dG8mIHBhc3RlYm9hcmRVUkwgPSBwYXN0ZWJvYXJkSW1hZ2UudXJsOwog
ICAgIGlmIChOU1VSTCAqbnNVUkwgPSBwYXN0ZWJvYXJkVVJMLnVybCkgewogI2lmIE5TVVJMX1NV
UFBPUlRTX1RJVExFCi0gICAgICAgIG5zVVJMLl90aXRsZSA9IHBhc3RlYm9hcmRVUkwudGl0bGUu
aXNFbXB0eSgpID8gdXNlclZpc2libGVTdHJpbmcocGFzdGVib2FyZFVSTC51cmwpIDogKE5TU3Ry
aW5nICopcGFzdGVib2FyZFVSTC50aXRsZTsKKyAgICAgICAgbnNVUkwuX3RpdGxlID0gcGFzdGVi
b2FyZFVSTC50aXRsZS5pc0VtcHR5KCkgPyBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9h
cmRVUkwudXJsKSA6IChOU1N0cmluZyAqKXBhc3RlYm9hcmRVUkwudGl0bGU7CiAjZW5kaWYKICAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0Om5z
VVJMXTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVp
Y2tMb29rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgKaW5kZXgg
NDlkODExZDUxNDBjOGZkMGFmMDE2MjlkOGQwYzFjOWU5ZTk5NGYxNy4uMGE2ZWZhZWYzZTg2MWVm
NTlmZDQyODljZWY5MTFjNzc4ZGE3MGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9R
dWlja0xvb2suaApAQCAtMzUsOCArMzUsNiBAQCBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIFdFQkNPUkVfRVhQT1JUIE5TU2V0
ICpRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKTsKIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9FWFBP
UlQgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5l
ZWRlZChOU1VSTCAqLCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0YSAqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBkY2U3MzMzMWU3N2E4NzQ2OGI2
NzExN2M0MzRiNGIwYjgyMzJhOWViLi43MTZjMzY2NmI5YzRiY2U3MTM2MWY0YzA1MzgxZGMzYTlh
M2JkMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBA
IC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5o
IgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1Mp
CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CkBAIC0y
MTAsNyArMjExLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiAgICAg
Ly8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdlIGtu
b3cgLVtOU1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxsIHRo
ZSBzYW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRpbmcg
YW4gTlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0gICAgICAgIHJldHVybiB1c2VyVmlzaWJs
ZVN0cmluZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsKKyAgICAgICAgcmV0dXJuIFdU
Rjo6dXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CiAKICAg
ICAvLyBGSVhNRTogV1RGIHNob3VsZCBvZmZlciBhIG5vbi1NYWMtc3BlY2lmaWMgd2F5IHRvIGNv
bnZlcnQgc3RyaW5nIHRvIHByZWNvbXBvc2VkIGZvcm0gc28gd2UgY2FuIGRvIGl0IGZvciBhbGwg
cGxhdGZvcm1zLgogICAgIHJldHVybiBbKE5TU3RyaW5nICopc3RyaW5nIHByZWNvbXBvc2VkU3Ry
aW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnSW1hZ2VNYWMubW0KaW5kZXggMjAxY2IzMzhiYmQ3ZGM3NTNiMzM1YTMwMDYyYzJiOTEyNmIx
MTk0OS4uOWQ4YmI4N2Y5YmUxN2JhMzU3MjQ3ZTA1NjljZTQ2NWZhNjY2YzFkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC00MSwxMiArNDEsMTIg
QEAKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlN0cmluZ1RydW5jYXRvci5oIgogI2ltcG9y
dCAiVGV4dEluZGljYXRvci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJLaXROU0lt
YWdlRXh0cmFzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9VUkxGb3JtYXR0aW5nU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2lmICFIQVZFKFVSTF9GT1JNQVRUSU5HKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVX
T1JLX09QVElPTkFMKExpbmtQcmVzZW50YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9GaWxlU3lzdGVtTWFjLm1tCmluZGV4IDA3MWQwYzkxMTc3OTRlNjAzOGQ5OGFhZDU2ZmU5
NmZmOGY0ODE1MzMuLjhlZDc1MWE3ZWMwZTVkMGJhZjc3NGY5ODYxMGFjYjA0NWNkMmIwMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCkBAIC0yOCw4
ICsyOCw4IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4
dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaD4KKyNpbXBvcnQgPHd0
Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBGaWxlU3lzdGVtOjpz
ZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFV
UkxTdHIKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChOU1VSTCAqdXJsID0gVVJM
V2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJs
U3RyaW5nID0gdXNlclZpc2libGVTdHJpbmcoVVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOwor
ICAgICAgICB1cmxTdHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1v
dmluZ1VzZXJJbmZvKHVybCkpOwogICAgIGVsc2UKICAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRh
dGFVUkxTdHJpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KaW5kZXggM2MzNjdkYTQ4NDBjMGU0MmQzYTRhOTVjNzA2MTE1NTk2MTEzNDc2Mi4uOGE1
YzI3NGNhNjRjMzkwMjAwN2U4NzQ2YTQzZjViZmMzNjBkZGQ0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTM3LDcgKzM3LDYgQEAKICNpbXBv
cnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgi
CiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVVRJ
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNp
bXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC00NSw2ICs0NCw3IEBACiAj
aW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2lt
cG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2ltcG9ydCA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZFdyaXRlci5tbQppbmRleCA2YTI4ZmU2MmFjZWNkNTcyNjU4ZDAzM2QwY2Q5YzFhYzMxZWUw
ZTNkLi4wZmU1MDVkZTU1YzY2MTY0OGYwNTlkYTliN2ZhZTJhMDc3ZmM2MjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtNjMsMTAg
KzYzLDEwIEBAIFJldGFpblB0cjxpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4+IGNyZWF0ZVBhc3Rl
Ym9hcmRXcml0ZXIoY29uc3QgUGFzdGVib2FyZFdyaXRlCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoYXV0byYgdXJsID0gZGF0YS51cmwoKSkgewotICAgICAgICBOU1VSTCAqY29jb2FVUkwg
PSB1cmwtPnVybDsKLSAgICAgICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nID0gdXJsLT51
c2VyVmlzaWJsZUZvcm07Ci0gICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IChOU1N0cmluZyAqKXVy
bC0+dGl0bGU7CisgICAgaWYgKGF1dG8mIHVybERhdGEgPSBkYXRhLnVybERhdGEoKSkgeworICAg
ICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmxEYXRhLT51cmw7CisgICAgICAgIE5TU3RyaW5nICp1
c2VyVmlzaWJsZVN0cmluZyA9IHVybERhdGEtPnVzZXJWaXNpYmxlRm9ybTsKKyAgICAgICAgTlNT
dHJpbmcgKnRpdGxlID0gKE5TU3RyaW5nICopdXJsRGF0YS0+dGl0bGU7CiAgICAgICAgIGlmICgh
dGl0bGUubGVuZ3RoKSB7CiAgICAgICAgICAgICB0aXRsZSA9IGNvY29hVVJMLnBhdGgubGFzdFBh
dGhDb21wb25lbnQ7CiAgICAgICAgICAgICBpZiAoIXRpdGxlLmxlbmd0aCkKQEAgLTc0LDcgKzc0
LDcgQEAgUmV0YWluUHRyPGlkIDxOU1Bhc3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2Fy
ZFdyaXRlcihjb25zdCBQYXN0ZWJvYXJkV3JpdGUKICAgICAgICAgfQogCiAgICAgICAgIC8vIFdl
YlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZS4KLSAgICAgICAgYXV0byBwYXRocyA9IGFkb3B0TlMo
W1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6QFsgQFsgY29jb2FVUkwuYWJzb2x1dGVT
dHJpbmcgXSBdLCBAWyB1cmwtPnRpdGxlLnN0cmlwV2hpdGVTcGFjZSgpIF0sIG5pbF0pOworICAg
ICAgICBhdXRvIHBhdGhzID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0
czpAWyBAWyBjb2NvYVVSTC5hYnNvbHV0ZVN0cmluZyBdIF0sIEBbIHVybERhdGEtPnRpdGxlLnN0
cmlwV2hpdGVTcGFjZSgpIF0sIG5pbF0pOwogICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0UHJv
cGVydHlMaXN0OnBhdGhzLmdldCgpIGZvclR5cGU6dG9VVEkoQCJXZWJVUkxzV2l0aFRpdGxlc1Bi
b2FyZFR5cGUiKS5nZXQoKV07CiAKICAgICAgICAgLy8gTlNVUkxQYm9hcmRUeXBlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
aW5kZXggYjFkZmZiNmNiN2U2NDI1NzQxYmQwYzZjMGU1M2I0ZWZkY2ZkYjE3MS4uMGNiMWRkOGI5
MzBhMDY1YjdjMDgwMTVjYTJlMGNlNWRiZDViMmI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0zMiwxMCArMzIs
MTAgQEAKICNpbXBvcnQgIkNvbG9yTWFjLmgiCiAjaW1wb3J0ICJMZWdhY3lOU1Bhc3RlYm9hcmRU
eXBlcy5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0
ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2ltcG9y
dCA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCmluZGV4IDIzMDM4MTdmM2IyMTRm
YWM1NGZlMGY0ZTI2ZDA0OTMzM2I1MTA0MzUuLjAxOTZiNDE2ZWQ0MjViMTcwMGViY2U5YzBiYzFk
YzhiNjYzMTM4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJs
aWNTdWZmaXhNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1
ZmZpeE1hYy5tbQpAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhf
TElTVCkKIAotI2ltcG9ydCAiVVJMLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIK
ICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC02Myw3ICs2Myw3IEBAIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
KGNvbnN0IFN0cmluZyYgZG9tYWluKQogCiBTdHJpbmcgZGVjb2RlSG9zdE5hbWUoY29uc3QgU3Ry
aW5nJiBkb21haW4pCiB7Ci0gICAgcmV0dXJuIGRlY29kZUhvc3ROYW1lKChOU1N0cmluZyAqKShk
b21haW4pKTsKKyAgICByZXR1cm4gV1RGOjpkZWNvZGVIb3N0TmFtZShkb21haW4pOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9y
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5t
bQppbmRleCBmYzQwYWExOWIwNGMzYWUzNDcxODAyNzYzZjdkZjM4OWE3MjI4YzlkLi5iZDlkYTBk
ZDg2YWNjZDFkODRhNmMzZmVkYTBiNDEyYTI2YWRmNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KQEAgLTI5LDEzICsyOSwxMyBA
QAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxTZWN1cml0eS9TZWNBc24xQ29kZXIuaD4KICNpbXBvcnQg
PFNlY3VyaXR5L1NlY0FzbjFUZW1wbGF0ZXMuaD4KICNpbXBvcnQgPFNlY3VyaXR5L1NlY0VuY29k
ZVRyYW5zZm9ybS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Nv
Y29hL1NlY3VyaXR5U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MjVjMWRlN2IwMjgzY2QwZGJkYmE1NmNhMTZmYWZjNWYzOWM1OGI2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9VUkxNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiVVJMLmgiCi0KLSNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJV
UkxQYXJzZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgotI2ltcG9ydCA8d3Rm
L09iamNSdW50aW1lRXh0cmFzLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLUBp
bnRlcmZhY2UgTlNTdHJpbmcgKFdlYkNvcmVOU1VSTEV4dHJhcykKLS0gKEJPT0wpX3dlYl9sb29r
c0xpa2VJUEFkZHJlc3M7Ci1AZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwo
TlNVUkwgKnVybCkKLXsKLSAgICBpZiAoIXVybCkgewotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGln
bm9yZSBiYXNlIFVSTCBoZXJlPwotICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0
ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXVybCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJz
ZXIodXJsQnl0ZXMuZGF0YSgpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQot
VVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29uc3QKLXsKLSAgICAvLyBDcmVhdGluZyBhIHRvbGwt
ZnJlZSBicmlkZ2VkIENGVVJMIGJlY2F1c2UgY3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdv
dWxkIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5nLgotICAgIC8vIFdlJ2xsIG5lZWQg
ZmlkZWxpdHkgd2hlbiByb3VuZC10cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgotICAgIHJl
dHVybiBjcmVhdGVDRlVSTCgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKLX0KLQotUmV0YWluUHRy
PENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAg
ICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwg
dG8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVl
cy4KLSAgICAgICAgcmV0dXJuIChfX2JyaWRnZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOkAiIl0pLmdldCgpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gY2ZVUkw7Ci0KLSAgICAvLyBGYXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMg
OC1iaXQgdG8gYXZvaWQgY29weWluZyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KLSAgICBpZiAo
TElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpKSkKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZy
b21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9zdHJpbmcuY2hhcmFjdGVy
czgoKSksIG1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gU2xvd2Vy
IHBhdGguCi0gICAgICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOwotICAgICAgICBjb3B5VG9CdWZm
ZXIoYnVmZmVyKTsKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgfQotCi0gICAgaWYgKHByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSAmJiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gY2ZVUkw7Ci19Ci0KLWJvb2wgVVJM
Ojpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewotICAgIHJldHVybiBbaG9zdC5j
cmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkgX3dlYl9sb29rc0xpa2VJUEFkZHJl
c3NdOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZU5TVVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5T
VVJMRXh0cmFzLmgKaW5kZXggZmUxMDY4MTM0NWY1N2YzZjQxZjRkMGRhNzJjZTYxNjFkYmIwNjk0
OC4uMWMwNzMyOWJlOWViYjZmYjBhMjNjNWQyN2NkYTgwMmM0ZTgwMWUxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaApAQCAtMjYsMjkg
KzI2LDEwIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLUBjbGFzcyBOU1N0cmluZzsKIEBjbGFzcyBO
U1VSTDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAq
dXNlclZpc2libGVTdHJpbmcoTlNVUkwgKik7CiBXRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlD
YW5vbmljYWxpemluZ1VSTChOU1VSTCAqKTsKLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxXaXRo
VXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsgLy8gUmV0dXJuIHZh
bHVlIG9mIG5pbCBtZWFucyBlcnJvci4KLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeVJlbW92
aW5nVXNlckluZm8oTlNVUkwgKik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGhvc3ROYW1lTmVlZHNE
ZWNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlLCBCT09MKiBlcnJvcik7Ci1XRUJD
T1JFX0VYUE9SVCBCT09MIGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAq
LCBOU1JhbmdlLCBCT09MKiBlcnJvcik7Ci1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2Rl
SG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBv
ZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZW5jb2RlSG9zdE5h
bWVXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwg
bWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNT
dHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VY
UE9SVCBOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1
ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlUcnVuY2F0
aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICosIENGVVJMQ29tcG9uZW50VHlw
ZSk7Ci1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICosIE5TVVJMICpi
YXNlVVJMKTsKLVdFQkNPUkVfRVhQT1JUIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICop
OwotV0VCQ09SRV9FWFBPUlQgTlNEYXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAq
LCBDRlVSTENvbXBvbmVudFR5cGUpOwotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmdEZXByZWNhdGVkKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsKLQotTlNS
YW5nZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBp
c1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBsb29rc0xp
a2VBYnNvbHV0ZVVSTChOU1N0cmluZyAqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KaW5k
ZXggY2UxYzk1NjNiMGI1OWNhOTY0NTkzYWM2ZGM5OTdkNGM0NDYwYWEwYi4uMDQ0YzQyOTBkZGZl
NWY1MDk4Mzg5MTgzYThiYjQ5YWU0NzRhODBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBAIC0yNyw3ICsyNyw2IEBACiAgKi8K
IAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJVUkxQYXJzZXIuaCIKICNpbXBvcnQgIldl
YkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4K
ICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtMzksOTk5ICszOCw4IEBACiAjaW1wb3J0IDx1
bmljb2RlL3VpZG5hLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KIAotLy8gTmVlZHMg
dG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCi0vLyBGb3IgaG9z
dCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNo
IGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0jZGVmaW5lIEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RI
IDIwNDgKLSNkZWZpbmUgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEggMjA0OAotCi10eXBlZGVmIHZv
aWQgKCogU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24pKE5TU3RyaW5nICosIE5TUmFuZ2UsIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4mKTsKLQotc3RhdGljIHVpbnQzMl90IElETlNjcmlwdFdo
aXRlTGlzdFsoVVNDUklQVF9DT0RFX0xJTUlUICsgMzEpIC8gMzJdOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBib29sIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIoVUNoYXIz
MiBjb2RlUG9pbnQpCi17Ci0gICAgcmV0dXJuIGNvZGVQb2ludCA9PSAweDA1NDggfHwgY29kZVBv
aW50ID09IDB4MDU0RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQb2ludCA9PSAweDA1
N0Q7Ci19Ci0KLXN0YXRpYyBib29sIGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoVUNoYXIzMiBj
b2RlUG9pbnQpCi17Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBV
U2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjb2RlUG9pbnQsICZlcnJvcik7
Ci0gICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICBMT0dfRVJST1IoImdv
dCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBlcnJvcik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NyaXB0ID09IFVT
Q1JJUFRfQVJNRU5JQU47Ci19Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
aW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlw
ZSBjaGFyQ29kZSkKLXsKLSAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24oY2hhckNv
ZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGluZ3MgdGhlIFVSTCBQYXJz
ZXIgcmVqZWN0czoKLSAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7Ci0gICAgY2FzZSAnIyc6Ci0gICAg
Y2FzZSAnJSc6Ci0gICAgY2FzZSAnLyc6Ci0gICAgY2FzZSAnOic6Ci0gICAgY2FzZSAnPyc6Ci0g
ICAgY2FzZSAnQCc6Ci0gICAgY2FzZSAnWyc6Ci0gICAgY2FzZSAnXFwnOgotICAgIGNhc2UgJ10n
OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotfQotCi0KLQotc3RhdGljIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0ZXIoc3Rk
OjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjaGFyQ29kZSkK
LXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVuc2FmZSwg
bG9va2FsaWtlIGNoYXJhY3RlcnM6Ci0gICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hhcmFjdGVy
LCBhbnkgY2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKLSAgICAvLyBhbnkgaWdu
b3JhYmxlIGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBsb2Nrcy4K
LSAgICAKLSAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4gTW96aWxs
YSdzIGJsYWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklETi5ibGFj
a2xpc3RfY2hhcnM+LgotCi0gICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVycyBoZXJlIHdpbGwg
bmV2ZXIgYXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgotICAgIC8vIEZvciBleGFtcGxlLCBJ
Q1UgdHJhbnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNlIGFuZCBtb3N0Ci0g
ICAgLy8gc2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUgb2YgdGhlIHR3byBj
YWxsZXJzIHVzZXMgdGhpcwotICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBoYXZlIG5vdCBiZWVu
IHByb2Nlc3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgotICAgIAotICAgIGlm
ICghdV9pc3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hhckNvZGUpIHx8IHVf
aGFzQmluYXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxFX0NPREVf
UE9JTlQpKQotICAgICAgICByZXR1cm4gWUVTOwotICAgIAotICAgIHN3aXRjaCAoY2hhckNvZGUp
IHsKLSAgICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUiAq
LwotICAgICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGICovCi0g
ICAgICAgIGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMgKi8K
LSAgICAgICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUg
Ki8KLSAgICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBSRVRST0ZMRVggQ0xJQ0sg
Ki8KLSAgICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBBTFBIQSAqLwot
ICAgICAgICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBHICovCi0g
ICAgICAgIGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJQU5HVUxBUiBDT0xPTiAq
LwotICAgICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JUIFNUUk9LRSBPVkVSTEFZ
ICovCi0gICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQgU09MSURVUyBPVkVS
TEFZICovCi0gICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9W
RVJMQVkgKi8KLSAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZVTEwgU1RPUCAqLwot
ICAgICAgICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICovCi0gICAgICAgIGNh
c2UgMHgwNUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRICovCi0gICAgICAgIGNh
c2UgMHgwNUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRICovCi0gICAgICAgIGNh
c2UgMHgwNUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICovCi0gICAgICAgIGNh
c2UgMHgwNjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04gKi8KLSAgICAgICAgY2Fz
ZSAweDA2MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJR04gKi8KLSAgICAg
ICAgY2FzZSAweDA2NTA6IC8qIEFSQUJJQyBLQVNSQSAqLwotICAgICAgICBjYXNlIDB4MDY2MDog
LyogQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KLSAgICAgICAgY2FzZSAweDA2NkE6IC8qIEFS
QUJJQyBQRVJDRU5UIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2RDQ6IC8qIEFSQUJJQyBGVUxM
IFNUT1AgKi8KLSAgICAgICAgY2FzZSAweDA2RjA6IC8qIEVYVEVOREVEIEFSQUJJQyBJTkRJQyBE
SUdJVCBaRVJPICovCi0gICAgICAgIGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMgU1VQUkFMSU5FQVIg
RlVMTCBTVE9QICovCi0gICAgICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMgU1VCTElORUFSIEZV
TEwgU1RPUCAqLwotICAgICAgICBjYXNlIDB4MDcwMzogLyogU1lSSUFDIFNVUFJBTElORUFSIENP
TE9OICovCi0gICAgICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJQUMgU1VCTElORUFSIENPTE9OICov
Ci0gICAgICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQVU5DVFVBVElPTiAq
LwotICAgICAgICBjYXNlIDB4MUQwNDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgQyAq
LwotICAgICAgICBjYXNlIDB4MUQwRjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTyAq
LwotICAgICAgICBjYXNlIDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVSAq
LwotICAgICAgICBjYXNlIDB4MUQyMDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgViAq
LwotICAgICAgICBjYXNlIDB4MUQyMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVyAq
LwotICAgICAgICBjYXNlIDB4MUQyMjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgWiAq
LwotICAgICAgICBjYXNlIDB4MUVDRDogLyogTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1Qg
QkVMT1cgKi8KLSAgICAgICAgY2FzZSAweDIwMTA6IC8qIEhZUEhFTiAqLwotICAgICAgICBjYXNl
IDB4MjAxMTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLwotICAgICAgICBjYXNlIDB4MjAyNDog
LyogT05FIERPVCBMRUFERVIgKi8KLSAgICAgICAgY2FzZSAweDIwMjc6IC8qIEhZUEhFTkFUSU9O
IFBPSU5UICovCi0gICAgICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVGVC1QT0lOVElORyBB
TkdMRSBRVU9UQVRJT04gTUFSSyAqLwotICAgICAgICBjYXNlIDB4MjAzQTogLyogU0lOR0xFIFJJ
R0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHgyMDQx
OiAvKiBDQVJFVCBJTlNFUlRJT04gUE9JTlQgKi8KLSAgICAgICAgY2FzZSAweDIwNDQ6IC8qIEZS
QUNUSU9OIFNMQVNIICovCi0gICAgICAgIGNhc2UgMHgyMDUyOiAvKiBDT01NRVJDSUFMIE1JTlVT
IFNJR04gKi8KLSAgICAgICAgY2FzZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgVEhJ
UkQgKi8KLSAgICAgICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08gVEhJUkRT
ICovCi0gICAgICAgIGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEZJRlRIICov
Ci0gICAgICAgIGNhc2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRIUyAqLwot
ICAgICAgICBjYXNlIDB4MjE1NzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRIUyAqLwot
ICAgICAgICBjYXNlIDB4MjE1ODogLyogVlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhTICovCi0g
ICAgICAgIGNhc2UgMHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIICovCi0gICAg
ICAgIGNhc2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhUSFMgKi8KLSAgICAg
ICAgY2FzZSAweDIxNUI6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFQgKi8KLSAgICAgICAg
Y2FzZSAweDIxNUM6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhTICovCi0gICAgICAg
IGNhc2UgMHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTICovCi0gICAgICAg
IGNhc2UgMHgyMTVFOiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRIUyAqLwotICAgICAg
ICBjYXNlIDB4MjE1RjogLyogRlJBQ1RJT04gTlVNRVJBVE9SIE9ORSAqLwotICAgICAgICBjYXNl
IDB4MjIxMjogLyogTUlOVVMgU0lHTiAqLwotICAgICAgICBjYXNlIDB4MjIxNTogLyogRElWSVNJ
T04gU0xBU0ggKi8KLSAgICAgICAgY2FzZSAweDIyMTY6IC8qIFNFVCBNSU5VUyAqLwotICAgICAg
ICBjYXNlIDB4MjIzNjogLyogUkFUSU8gKi8KLSAgICAgICAgY2FzZSAweDIzM0Y6IC8qIEFQTCBG
VU5DVElPTkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KLSAgICAgICAgY2FzZSAweDIzQUU6IC8qIElO
VEVHUkFMIEVYVEVOU0lPTiAqLwotICAgICAgICBjYXNlIDB4MjQ0QTogLyogT0NSIERPVUJMRSBC
QUNLU0xBU0ggKi8KLSAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJB
V0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLwotICAgICAg
ICBjYXNlIDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBESUFHT05B
TCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyOUY2OiAvKiBT
T0xJRFVTIFdJVEggT1ZFUkJBUiAqLwotICAgICAgICBjYXNlIDB4MjlGODogLyogQklHIFNPTElE
VVMgKi8KLSAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFSWSBSRUxB
VElPTiAqLwotICAgICAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BFUkFUT1Ig
Ki8KLSAgICAgICAgY2FzZSAweDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJB
Q1RFUiBMRUZUIFRPIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyRkYxOiAvKiBJREVPR1JBUEhJ
QyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KLSAgICAgICAgY2FzZSAw
eDJGRjI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIE1JRERM
RSBBTkQgUklHSFQgKi8KLSAgICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9HUkFQSElDIERFU0NS
SVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICovCi0gICAgICAgIGNh
c2UgMHgyRkY0OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVMTCBTVVJS
T1VORCAqLwotICAgICAgICBjYXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04g
Q0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQUJPVkUgKi8KLSAgICAgICAgY2FzZSAweDJGRjY6IC8q
IElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJFTE9XICov
Ci0gICAgICAgIGNhc2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNU
RVIgU1VSUk9VTkQgRlJPTSBMRUZUICovCi0gICAgICAgIGNhc2UgMHgyRkY4OiAvKiBJREVPR1JB
UEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZUICovCi0g
ICAgICAgIGNhc2UgMHgyRkY5OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIg
U1VSUk9VTkQgRlJPTSBVUFBFUiBSSUdIVCAqLwotICAgICAgICBjYXNlIDB4MkZGQTogLyogSURF
T0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIgTEVGVCAq
LwotICAgICAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFD
VEVSIE9WRVJMQUlEICovCi0gICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVPR1JBUEhJQyBGVUxM
IFNUT1AgKi8KLSAgICAgICAgY2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUgQlJBQ0tFVCAqLwot
ICAgICAgICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0g
ICAgICAgIGNhc2UgMHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0g
ICAgICAgIGNhc2UgMHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQUEVSIEhB
TEYgKi8KLSAgICAgICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksg
TE9XRVIgSEFMRiAqLwotICAgICAgICBjYXNlIDB4MzIxRDogLyogUEFSRU5USEVTSVpFRCBLT1JF
QU4gQ0hBUkFDVEVSIE9KRU9OICovCi0gICAgICAgIGNhc2UgMHgzMjFFOiAvKiBQQVJFTlRIRVNJ
WkVEIEtPUkVBTiBDSEFSQUNURVIgTyBIVSAqLwotICAgICAgICBjYXNlIDB4MzNBRTogLyogU1FV
QVJFIFJBRCBPVkVSIFMgKi8KLSAgICAgICAgY2FzZSAweDMzQUY6IC8qIFNRVUFSRSBSQUQgT1ZF
UiBTIFNRVUFSRUQgKi8KLSAgICAgICAgY2FzZSAweDMzQzY6IC8qIFNRVUFSRSBDIE9WRVIgS0cg
Ki8KLSAgICAgICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9WRVIgTSAqLwotICAgICAgICBj
YXNlIDB4MDVCOTogLyogSEVCUkVXIFBPSU5UIEhPTEFNICovCi0gICAgICAgIGNhc2UgMHgwNUJB
OiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZBViAqLwotICAgICAgICBjYXNlIDB4
MDVDMTogLyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCi0gICAgICAgIGNhc2UgMHgwNUMyOiAv
KiBIRUJSRVcgUE9JTlQgU0lOIERPVCAqLwotICAgICAgICBjYXNlIDB4MDVDNDogLyogSEVCUkVX
IE1BUksgVVBQRVIgRE9UICovCi0gICAgICAgIGNhc2UgMHhBNzMxOiAvKiBMQVRJTiBMRVRURVIg
U01BTEwgQ0FQSVRBTCBTICovCi0gICAgICAgIGNhc2UgMHhBNzcxOiAvKiBMQVRJTiBTTUFMTCBM
RVRURVIgRFVNICovCi0gICAgICAgIGNhc2UgMHhBNzg5OiAvKiBNT0RJRklFUiBMRVRURVIgQ09M
T04gKi8KLSAgICAgICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJU
SUNBTCBTRU1JQ09MT04gKi8KLSAgICAgICAgY2FzZSAweEZFMTU6IC8qIFBSRVNFTlRBVElPTiBG
T1JNIEZPUiBWRVJUSUNBTCBFWENMQU1BVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHhGRTNG
OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFDS0VUICov
Ci0gICAgICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNL
RVQgKi8KLSAgICAgICAgY2FzZSAweEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRPUlRPSVNFIFNIRUxM
IEJSQUNLRVQgKi8KLSAgICAgICAgY2FzZSAweEZGMEU6IC8qIEZVTExXSURUSCBGVUxMIFNUT1Ag
Ki8KLSAgICAgICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09MSURVUyAqLwotICAgICAg
ICBjYXNlIDB4RkY2MTogLyogSEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwgU1RPUCAqLwotICAg
ICAgICBjYXNlIDB4RkZGQzogLyogT0JKRUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAqLwotICAg
ICAgICBjYXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCi0gICAgICAgIGNh
c2UgMHgxRjUwRjogLyogTE9DSyBXSVRIIElOSyBQRU4gKi8KLSAgICAgICAgY2FzZSAweDFGNTEw
OiAvKiBDTE9TRUQgTE9DSyBXSVRIIEtFWSAqLwotICAgICAgICBjYXNlIDB4MUY1MTE6IC8qIEtF
WSAqLwotICAgICAgICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sgKi8KLSAgICAgICAgY2FzZSAweDFG
NTEzOiAvKiBPUEVOIExPQ0sgKi8KLSAgICAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgICAgIGNh
c2UgMHgwMzA3OiAvKiBDT01CSU5JTkcgRE9UIEFCT1ZFICovCi0gICAgICAgICAgICByZXR1cm4g
cHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMjM3IC8qIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNT
IEogKi8KLSAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAxMzEgLyog
TEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSSAqLwotICAgICAgICAgICAgICAgIHx8IHByZXZp
b3VzQ29kZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExFVFRFUiBWQVYgKi8KLSAgICAgICAg
Y2FzZSAweDA1NDg6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPICovCi0gICAgICAgIGNh
c2UgMHgwNTREOiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUggKi8KLSAgICAgICAgY2Fz
ZSAweDA1Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLwotICAgICAgICBjYXNlIDB4
MDU3RDogLyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNFSCAqLwotICAgICAgICAgICAgcmV0dXJu
IHByZXZpb3VzQ29kZVBvaW50Ci0gICAgICAgICAgICAgICAgJiYgIWlzQVNDSUlEaWdpdE9yVmFs
aWRIb3N0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCi0gICAgICAgICAgICAg
ICAgJiYgIWlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUo
KSk7Ci0gICAgICAgIGNhc2UgJy4nOgotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50Ci0gICAgICAgICAg
ICAgICAgJiYgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52
YWx1ZSgpKQotICAgICAgICAgICAgICAgICYmICEoaXNBcm1lbmlhblNjcmlwdENoYXJhY3Rlcihj
aGFyQ29kZSkgfHwgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoY2hhckNvZGUpKTsK
LSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHdoaXRlTGlzdElETlNjcmlwdChjb25zdCBjaGFyKiBz
Y3JpcHROYW1lKQotewotICAgIGludDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9wZXJ0eVZhbHVlRW51
bShVQ0hBUl9TQ1JJUFQsIHNjcmlwdE5hbWUpOwotICAgIGlmIChzY3JpcHQgPj0gMCAmJiBzY3Jp
cHQgPCBVU0NSSVBUX0NPREVfTElNSVQpIHsKLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc2NyaXB0
IC8gMzI7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7Ci0gICAg
ICAgIElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gfD0gbWFzazsKLSAgICB9Ci19Ci0KLXN0YXRp
YyBCT09MIHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpmaWxlbmFtZSkKLXsK
LSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBGSUxFICpmaWxl
ID0gZm9wZW4oW2ZpbGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICJyIik7Ci0gICAg
aWYgKCFmaWxlKQotICAgICAgICByZXR1cm4gTk87Ci0gICAgCi0gICAgLy8gUmVhZCBhIHdvcmQg
YXQgYSB0aW1lLgotICAgIC8vIEFsbG93IGNvbW1lbnRzLCBzdGFydGluZyB3aXRoICMgY2hhcmFj
dGVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgLy8g
U2tpcCBhIGNvbW1lbnQgaWYgcHJlc2VudC4KLSAgICAgICAgaWYgKGZzY2FuZihmaWxlLCAiICMl
KlteXG5ccl0lKltcblxyXSIpID09IEVPRikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAK
LSAgICAgICAgLy8gUmVhZCBhIHNjcmlwdCBuYW1lIGlmIHByZXNlbnQuCi0gICAgICAgIGNoYXIg
d29yZFszM107Ci0gICAgICAgIGludCByZXN1bHQgPSBmc2NhbmYoZmlsZSwgIiAlMzJbXiMgXHRc
blxyXSUqW14jIFx0XG5ccl0gIiwgd29yZCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gRU9GKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVzdWx0ID09IDEpIHsK
LSAgICAgICAgICAgIC8vIEdvdCBhIHdvcmQsIG1hcCB0byBzY3JpcHQgY29kZSBhbmQgcHV0IGl0
IGludG8gdGhlIGFycmF5LgotICAgICAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHdvcmQpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIGZjbG9zZShmaWxlKTsKLSAgICByZXR1cm4gWUVTOwotfQot
Ci1zdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29uc3QgVUNo
YXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2Vf
dCBmbGFnOwotICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57Ci0gICAgICAgIC8vIFJlYWQgd2hp
dGUgbGlzdCBmcm9tIGxpYnJhcnkuCi0gICAgICAgIE5TQXJyYXkgKmRpcnMgPSBOU1NlYXJjaFBh
dGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxsRG9tYWlu
c01hc2ssIFlFUyk7Ci0gICAgICAgIGludCBudW1EaXJzID0gW2RpcnMgY291bnRdOwotICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykgewotICAgICAgICAgICAgaWYgKHJl
YWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGNoYXIqIGRlZmF1
bHRJRE5TY3JpcHRXaGl0ZUxpc3RbMjBdID0gewotICAgICAgICAgICAgIkNvbW1vbiIsCi0gICAg
ICAgICAgICAiSW5oZXJpdGVkIiwKLSAgICAgICAgICAgICJBcmFiaWMiLAotICAgICAgICAgICAg
IkFybWVuaWFuIiwKLSAgICAgICAgICAgICJCb3BvbW9mbyIsCi0gICAgICAgICAgICAiQ2FuYWRp
YW5fQWJvcmlnaW5hbCIsCi0gICAgICAgICAgICAiRGV2YW5hZ2FyaSIsCi0gICAgICAgICAgICAi
RGVzZXJldCIsCi0gICAgICAgICAgICAiR3VqYXJhdGkiLAotICAgICAgICAgICAgIkd1cm11a2hp
IiwKLSAgICAgICAgICAgICJIYW5ndWwiLAotICAgICAgICAgICAgIkhhbiIsCi0gICAgICAgICAg
ICAiSGVicmV3IiwKLSAgICAgICAgICAgICJIaXJhZ2FuYSIsCi0gICAgICAgICAgICAiS2F0YWth
bmFfT3JfSGlyYWdhbmEiLAotICAgICAgICAgICAgIkthdGFrYW5hIiwKLSAgICAgICAgICAgICJM
YXRpbiIsCi0gICAgICAgICAgICAiVGFtaWwiLAotICAgICAgICAgICAgIlRoYWkiLAotICAgICAg
ICAgICAgIllpIiwKLSAgICAgICAgfTsKLSAgICAgICAgZm9yIChjb25zdCBjaGFyKiBzY3JpcHRO
YW1lIDogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKLSAgICAgICAgICAgIHdoaXRlTGlzdElE
TlNjcmlwdChzY3JpcHROYW1lKTsKLSAgICB9KTsKLSAgICAKLSAgICBpbnQzMl90IGkgPSAwOwot
ICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgd2hpbGUg
KGkgPCBsZW5ndGgpIHsKLSAgICAgICAgVUNoYXIzMiBjOwotICAgICAgICBVMTZfTkVYVChidWZm
ZXIsIGksIGxlbmd0aCwgYykKLSAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJP
UjsKLSAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQoYywgJmVy
cm9yKTsKLSAgICAgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICAgICAg
TE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNjcmlwdHM6
ICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICB9Ci0gICAgICAg
IGlmIChzY3JpcHQgPCAwKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoImdvdCBuZWdhdGl2ZSBu
dW1iZXIgZm9yIHNjcmlwdCBjb2RlIGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7Ci0gICAgICAgICAg
ICByZXR1cm4gTk87Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNjcmlwdCA+PSBVU0NSSVBUX0NP
REVfTElNSVQpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0KLSAgICAgICAgc2l6ZV90IGluZGV4
ID0gc2NyaXB0IC8gMzI7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAz
Mik7Ci0gICAgICAgIGlmICghKElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gJiBtYXNrKSkKLSAg
ICAgICAgICAgIHJldHVybiBOTzsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0xvb2thbGlrZUNo
YXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0g
ICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKLSAgICB9Ci0gICAgcmV0dXJuIFlFUzsKLX0K
LQotc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhj
b25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5jdGlvbjxi
b29sKFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKLXsKLSAgICBBU1NFUlQobGVuZ3RoID4g
MCk7Ci0KLSAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0g
ICAgICAgIFVDaGFyIGNoID0gYnVmZmVyW2ldOwotICAgICAgICAKLSAgICAgICAgaWYgKGNoYXJh
Y3RlcklzQWxsb3dlZChjaCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAg
ICAgIC8vIE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExvd2VyIGxldmVsIHJl
Z2lzdHJhcnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgotICAgICAgICBpZiAoY2ggPT0gJy4n
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi0jZGVmaW5lIENIRUNLX1JVTEVTX0lGX1NVRkZJ
WF9NQVRDSEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKLSAgICB7IFwKLSAgICAgICAgc3RhdGljIGNv
bnN0IGludDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yoc3VmZml4
WzBdKTsgXAotICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYmIDAgPT0gbWVtY21w
KGJ1ZmZlciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXplb2Yoc3VmZml4KSkp
IFwKLSAgICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRM
RFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlvbik7IFwKLSAgICB9
Ci0KLXN0YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNoYXIgY2gpCi17
Ci0gICAgLy8gT25seSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBh
cmUgYWxsb3dlZC4KLSAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8
IGNoID09IDB4MDQ1MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLX0KLQotc3Rh
dGljIEJPT0wgYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZm
ZXIsIGludDMyX3QgbGVuZ3RoKQotewotICAgIC8vIFNraXAgdHJhaWxpbmcgZG90IGZvciByb290
IGRvbWFpbi4KLSAgICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFdID09ICcuJykKLSAgICAgICAgbGVu
Z3RoLS07Ci0KLSAgICAvLyBodHRwOi8vY2N0bGQucnUvZmlsZXMvcGRmL2RvY3MvcnVsZXNfcnUt
cmYucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9IHsKLSAgICAgICAg
Jy4nLAotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAg
ICAweDA0NDQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgotICAgIH07Ci0gICAgQ0hFQ0tf
UlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFuRG9tYWluTmFtZUNo
YXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vcnVzbmFtZXMucnUvcnVsZXMucGwKLSAgICBzdGF0
aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNSVVNbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAw
eDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0NDMsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBVCi0gICAgICAgIDB4MDQ0MSAgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEVTCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJp
bGxpY1JVUywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8v
cnUuZmFpdGlkLm9yZy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2YS9pZG4KLSAgICBz
dGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9IHsKLSAgICAgICAgJy4nLAotICAg
ICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAweDA0M0Us
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IEtBCi0gICAgICAgIDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCi0gICAgICAg
IDB4MDQzMCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICB9OwotICAgIENIRUNLX1JV
TEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZBLCBpc1J1c3NpYW5Eb21haW5OYW1l
Q2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9mb3J1c2VyL2RvY3Mv
cmVncnVsZXMucGhwCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljREVUSVtdID0gewot
ICAgICAgICAnLicsCi0gICAgICAgIDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERF
Ci0gICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCi0gICAgICAgIDB4
MDQ0MiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCi0gICAgICAgIDB4MDQzOCAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEkKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9N
QVRDSEVTKGN5cmlsbGljREVUSSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAg
ICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBydWxlcyBub3QgcHVibGlzaGVkLiBUaGUgd29yZCBp
cyBSdXNzaWFuLCBzbyBvbmx5IGFsbG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0aW1lLAotICAgIC8v
IGFsdGhvdWdoIHdlIG1heSBuZWVkIHRvIHJldmlzZSB0aGUgY2hlY2tzIGlmIHRoaXMgZW5kcyB1
cCBiZWluZyB1c2VkIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBSdXNzaWEuCi0gICAg
c3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT05MQVlOW10gPSB7Ci0gICAgICAgICcuJywKLSAg
ICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0M0Qs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgICAgICAweDA0M0IsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBFTAotICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBBCi0gICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKLSAg
ICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KLSAgICB9OwotICAgIENI
RUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT05MQVlOLCBpc1J1c3NpYW5Eb21h
aW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHNhbWUgYXMg
YWJvdmUuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU0FZVFtdID0gewotICAgICAg
ICAnLicsCi0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAg
ICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICAgICAgMHgwNDM5LCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQotICAgICAgICAweDA0NDIgIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBURQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01B
VENIRVMoY3lyaWxsaWNTQVlULCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAg
IC8vIGh0dHA6Ly9waXIub3JnL3Byb2R1Y3RzL29wci1kb21haW4vIC0gcnVsZXMgbm90IHB1Ymxp
c2hlZC4gQWNjb3JkaW5nIHRvIHRoZSByZWdpc3RyeSBzaXRlLAotICAgIC8vIHRoZSBpbnRlbmRl
ZCBhdWRpZW5jZSBpcyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xhdmljLXNwZWFraW5nIG1hcmtldHMi
LgotICAgIC8vIENocm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lhbiwgc28gc3RpY2tp
bmcgd2l0aCB0aGF0IGZvciBub3cuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT1JH
W10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgTwotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAg
ICAgICAweDA0MzMgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKLSAgICB9OwotICAgIENI
RUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1c3NpYW5Eb21haW5O
YW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxlcy5odG1sCi0gICAg
c3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAg
ICAgMHgwNDMxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICAgICAgMHgwNDM1LCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKLSAgICAgICAgMHgwNDNCICAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgRUwKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVT
KGN5cmlsbGljQkVMLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBSdXNzaWFuIGFuZCBCeWVs
b3J1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAg
IHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8
IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5IHx8IGlzQVNDSUlE
aWdpdChjaCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gaHR0cDovL3d3dy5uaWMu
a3ovZG9jcy9wb3J5YWRva192bmVkcmVuaXlhX2thel9ydS5wZGYKLSAgICBzdGF0aWMgY29uc3Qg
VUNoYXIgY3lyaWxsaWNLQVpbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0OUIsIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDA0MzAs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAgICAgIDB4MDQzNyAgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIFpFCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hF
UyhjeXJpbGxpY0tBWiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gS2F6YWtoIGxldHRlcnMs
IGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4
MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0RDkgfHwg
Y2ggPT0gMHgwNDkzIHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMgfHwgY2ggPT0gMHgw
NEU5IHx8IGNoID09IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0gMHgwNEJCIHx8IGNo
ID09IDB4MDQ1NiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQot
ICAgIC8vIGh0dHA6Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1bGVzJTIwb2YlMjBV
S1JfdjQuMC5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNVS1JbXSA9IHsKLSAg
ICAgICAgJy4nLAotICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCi0g
ICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAgIDB4MDQ0
MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19J
Rl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1VLUiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8g
UnVzc2lhbiBhbmQgVWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxv
d2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNo
ID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8IGNoID09IDB4MDQ1
NiB8fCBjaCA9PSAweDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAg
fSk7Ci0KLSAgICAvLyBodHRwOi8vd3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1FTlRJL2lkbi1zcmIt
cG9saWN5LXRlcm1zb2Z1c2UtdjEuNC1lbmcucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5
cmlsbGljU1JCW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRVMKLSAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgRVIKLSAgICAgICAgMHgwNDMxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICB9
OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU1JCLCBbXShVQ2hh
ciBjaCkgewotICAgICAgICAvLyBTZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFy
ZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0Mzgp
IHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTIgfHwgY2gg
PT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0gMHgwNDVC
IHx8IGNoID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9
KTsKLQotICAgIC8vIGh0dHA6Ly9tYXJuZXQubWsvZG9jL3ByYXZpbG5pay1tay1ta2QucGRmCi0g
ICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTUtEW10gPSB7Ci0gICAgICAgICcuJywKLSAg
ICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KLSAgICAgICAgMHgwNDNB
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwNDM0ICAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgREUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRD
SEVTKGN5cmlsbGljTUtELCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBNYWNlZG9uaWFuIGxl
dHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNo
ID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgw
NDQ4KSB8fCBjaCA9PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1IHx8IGNoID09IDB4MDQ1OCB8fCBj
aCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8fCBjaCA9PSAweDA0
NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBo
dHRwczovL3d3dy5tb24ubW4vY3MvCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTU9O
W10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgRU0KLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAg
ICAgICAweDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgIH07Ci0gICAgQ0hF
Q0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT04sIFtdKFVDaGFyIGNoKSB7Ci0g
ICAgICAgIC8vIE1vbmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dl
ZC4KLSAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9
PSAweDA0NTEgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRBRiB8fCBpc0FTQ0lJRGlnaXQo
Y2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIE5vdCBhIGtub3duIHRvcCBsZXZl
bCBkb21haW4gd2l0aCBzcGVjaWFsIHJ1bGVzLgotICAgIHJldHVybiBOTzsKLX0KLQotLy8gUmV0
dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1h
a2VTdHJpbmcgaXMgTk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwgb3Igc2VsZiB0
byBpbmRpY2F0ZSBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1ha2VTdHJpbmcgaXMgWUVT
LCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBwZWQgc3RyaW5nLgot
c3RhdGljIE5TU3RyaW5nICptYXBIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBO
U1JhbmdlIHJhbmdlLCBCT09MIGVuY29kZSwgQk9PTCBtYWtlU3RyaW5nLCBCT09MICplcnJvcikK
LXsKLSAgICBpZiAocmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCi0gICAgVUNoYXIgc291cmNlQnVmZmVyW0hPU1RfTkFNRV9CVUZG
RVJfTEVOR1RIXTsKLSAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NUX05BTUVfQlVGRkVS
X0xFTkdUSF07Ci0gICAgCi0gICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6
QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24gIT0gTlNO
b3RGb3VuZCkgewotICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBzdWJzdHJp
bmdXaXRoUmFuZ2U6cmFuZ2VdOwotICAgICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFz
ZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgKENG
U3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7Ci0gICAgICAgIGlmIChzdWJzdHJpbmcp
IHsKLSAgICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKLSAgICAgICAgICAgIHJhbmdlID0g
TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAK
LSAgICBpbnQgbGVuZ3RoID0gcmFuZ2UubGVuZ3RoOwotICAgIFtzdHJpbmcgZ2V0Q2hhcmFjdGVy
czpzb3VyY2VCdWZmZXIgcmFuZ2U6cmFuZ2VdOwotICAgIAotICAgIFVFcnJvckNvZGUgdWVycm9y
ID0gVV9aRVJPX0VSUk9SOwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5B
X0lORk9fSU5JVElBTElaRVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0g
KGVuY29kZSA/IHVpZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5pY29kZSkoJlVSTFBh
cnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksIHNvdXJjZUJ1ZmZlciwg
bGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgsICZwcm9j
ZXNzaW5nRGV0YWlscywgJnVlcnJvcik7Ci0gICAgaWYgKGxlbmd0aCAmJiAoVV9GQUlMVVJFKHVl
cnJvcikgfHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkgewotICAgICAgICAqZXJyb3IgPSBZ
RVM7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIAotICAgIGlmIChudW1DaGFyYWN0
ZXJzQ29udmVydGVkID09IGxlbmd0aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZlciwgZGVzdGluYXRp
b25CdWZmZXIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpKQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIAotICAgIGlmICghZW5jb2RlICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxp
c3QoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpICYmICFhbGxDaGFy
YWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnND
b252ZXJ0ZWQpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBtYWtlU3Ry
aW5nID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0aW9uQnVmZmVyIGxl
bmd0aDpudW1DaGFyYWN0ZXJzQ29udmVydGVkXSA6IHN0cmluZzsKLX0KLQotQk9PTCBob3N0TmFt
ZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwg
Qk9PTCAqZXJyb3IpCi17Ci0gICAgcmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywg
cmFuZ2UsIE5PLCBOTywgZXJyb3IpICE9IG5pbDsKLX0KLSAKLUJPT0wgaG9zdE5hbWVOZWVkc0Vu
Y29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVy
cm9yKQotewotICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBZ
RVMsICBOTywgZXJyb3IpICE9IG5pbDsKLX0KLQotTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0
aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgQk9PTCBlcnJv
ciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5n
LCByYW5nZSwgTk8sIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcg
KmVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2Up
Ci17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5h
bWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgWUVTLCBZRVMsICZlcnJvcik7Ci0gICAgaWYgKGVy
cm9yKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhv
c3Q7Ci19Ci0KLU5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQotewot
ICAgIEJPT0wgZXJyb3IgPSBOTzsKLSAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0
aFJhbmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgTk8sIFlFUywg
JmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJu
ICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5T
U3RyaW5nICpzdHJpbmcpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpo
b3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5n
IGxlbmd0aF0pLCBZRVMsIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotc3RhdGlj
IHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1Jh
bmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSwgQk9PTCBlbmNvZGUp
Ci17Ci0gICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3
aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3QgbmVlZCBtYXBwaW5nLgot
ICAgIC8vIFRoZXJlZm9yZSwgd2UgdXNlIG5pbCB0byBpbmRpY2F0ZSBubyBtYXBwaW5nIGhlcmUg
YW5kIGFuIGVtcHR5IGFycmF5IHRvIGluZGljYXRlIGVycm9yLgotCi0gICAgQk9PTCBlcnJvciA9
IE5POwotICAgIEJPT0wgbmVlZHNNYXBwaW5nID0gZW5jb2RlID8gaG9zdE5hbWVOZWVkc0VuY29k
aW5nV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsICZlcnJvcikgOiBob3N0TmFtZU5lZWRzRGVjb2Rp
bmdXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgJmVycm9yKTsKLSAgICBpZiAoIWVycm9yICYmICFu
ZWVkc01hcHBpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIWFycmF5KQotICAg
ICAgICBhcnJheSA9IGFkb3B0TlMoW05TTXV0YWJsZUFycmF5IG5ld10pOwotCi0gICAgaWYgKCFl
cnJvcikKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpy
YW5nZV1dOwotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyhO
U1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
JiBhcnJheSkKLXsKLSAgICByZXR1cm4gY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhzdHJp
bmcsIHJhbmdlLCBhcnJheSwgWUVTKTsKLX0KLQotc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1Ro
YXROZWVkRGVjb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCi17Ci0gICAgcmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0
TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIE5PKTsKLX0KLQotc3RhdGljIHZvaWQg
YXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywg
U3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYg
YXJyYXkpCi17Ci0gICAgLy8gSW4gYSBtYWlsdG86IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVy
IGEgJ0AnIGNoYXJhY3RlciBhbmQgZW5kIHdpdGggYSAnPicgb3IgJywnIG9yICc/JyBjaGFyYWN0
ZXIuCi0gICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5ncyBzbyB0aGF0IGNoYXJhY3RlcnMgaW4gdGhl
bSBkb24ndCBjb25mdXNlIHVzLgotICAgIC8vIFdoZW4gd2UgZmluZCBhICc/JyBjaGFyYWN0ZXIs
IHdlIGFyZSBwYXN0IHRoZSBwYXJ0IG9mIHRoZSBVUkwgdGhhdCBjb250YWlucyBob3N0IG5hbWVz
LgotICAgIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJT
ZXQ+PiBob3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNo
YXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJcIkA/Il07Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3ROYW1lRW5kQ2hhcmFj
dGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5n
OkAiPiw/Il07Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3Rl
clNldD4+IHF1b3RlZFN0cmluZ0NoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVy
U2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIlwiXFwiXTsKLSAgICAKLSAgICB1bnNpZ25lZCBz
dHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07Ci0gICAgTlNSYW5nZSByZW1haW5pbmcgPSBO
U01ha2VSYW5nZSgwLCBzdHJpbmdMZW5ndGgpOwotICAgIAotICAgIHdoaWxlICgxKSB7Ci0gICAg
ICAgIC8vIEZpbmQgc3RhcnQgb2YgaG9zdCBuYW1lIG9yIG9mIHF1b3RlZCBzdHJpbmcuCi0gICAg
ICAgIE5TUmFuZ2UgaG9zdE5hbWVPclN0cmluZ1N0YXJ0ID0gW3N0cmluZyByYW5nZU9mQ2hhcmFj
dGVyRnJvbVNldDpob3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9w
dGlvbnM6MCByYW5nZTpyZW1haW5pbmddOwotICAgICAgICBpZiAoaG9zdE5hbWVPclN0cmluZ1N0
YXJ0LmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdW5pY2hhciBjID0gW3N0cmluZyBjaGFyYWN0ZXJBdEluZGV4Omhvc3ROYW1lT3JTdHJpbmdT
dGFydC5sb2NhdGlvbl07Ci0gICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2Uo
aG9zdE5hbWVPclN0cmluZ1N0YXJ0KTsKLSAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmlu
Z0xlbmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09
ICc/JykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09ICdA
JykgewotICAgICAgICAgICAgLy8gRmluZCBlbmQgb2YgaG9zdCBuYW1lLgotICAgICAgICAgICAg
dW5zaWduZWQgaG9zdE5hbWVTdGFydCA9IHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAg
IE5TUmFuZ2UgaG9zdE5hbWVFbmQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhv
c3ROYW1lRW5kQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5n
XTsKLSAgICAgICAgICAgIEJPT0wgZG9uZTsKLSAgICAgICAgICAgIGlmIChob3N0TmFtZUVuZC5s
b2NhdGlvbiA9PSBOU05vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgaG9zdE5hbWVFbmQubG9j
YXRpb24gPSBzdHJpbmdMZW5ndGg7Ci0gICAgICAgICAgICAgICAgZG9uZSA9IFlFUzsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gaG9z
dE5hbWVFbmQubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0
cmluZ0xlbmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICBkb25lID0g
Tk87Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFByb2Nlc3Mg
aG9zdCBuYW1lIHJhbmdlLgotICAgICAgICAgICAgZihzdHJpbmcsIE5TTWFrZVJhbmdlKGhvc3RO
YW1lU3RhcnQsIGhvc3ROYW1lRW5kLmxvY2F0aW9uIC0gaG9zdE5hbWVTdGFydCksIGFycmF5KTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGRvbmUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5n
LgotICAgICAgICAgICAgQVNTRVJUKGMgPT0gJyInKTsKLSAgICAgICAgICAgIHdoaWxlICgxKSB7
Ci0gICAgICAgICAgICAgICAgTlNSYW5nZSBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBb
c3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OnF1b3RlZFN0cmluZ0NoYXJhY3RlcnMuZ2V0
KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107Ci0gICAgICAgICAgICAgICAgaWYg
KGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBjID0gW3N0cmluZyBj
aGFyYWN0ZXJBdEluZGV4OmVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbl07Ci0g
ICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gTlNNYXhSYW5nZShlc2NhcGVkQ2hh
cmFjdGVyT3JTdHJpbmdFbmQpOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBz
dHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgLy8gSWYgd2UgYXJlIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgdGhlbiBicmVh
ayBmcm9tIHRoZSBzdHJpbmcgbG9vcCBiYWNrIHRvIHRoZSBob3N0IG5hbWUgbG9vcC4KLSAgICAg
ICAgICAgICAgICBpZiAoYyA9PSAnIicpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIFNraXAgZXNjYXBlZCBjaGFyYWN0ZXIu
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGMgPT0gJ1xcJyk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFyZW1haW5pbmcubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgICAgICByZW1haW5pbmcubG9jYXRpb24gKz0gMTsKLSAgICAgICAgICAgICAgICByZW1h
aW5pbmcubGVuZ3RoIC09IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LXN0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKE5TU3RyaW5nICpz
dHJpbmcsIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4mIGFycmF5KQotewotICAgIC8vIEZpbmQgaG9zdG5hbWVzLiBUb28gYmFkIHdlIGNhbid0
IHVzZSBhbnkgcmVhbCBVUkwtcGFyc2luZyBjb2RlIHRvIGRvIHRoaXMsCi0gICAgLy8gYnV0IHdl
IGhhdmUgdG8gZG8gaXQgYmVmb3JlIGRvaW5nIGFsbCB0aGUgJS1lc2NhcGluZywgYW5kIHRoaXMg
aXMgdGhlIG9ubHkKLSAgICAvLyBjb2RlIHdlIGhhdmUgdGhhdCBwYXJzZXMgbWFpbHRvIFVSTHMg
YW55d2F5LgotICAgIAotICAgIC8vIE1heWJlIHdlIHNob3VsZCBpbXBsZW1lbnQgdGhpcyB1c2lu
ZyBhIGNoYXJhY3RlciBidWZmZXIgaW5zdGVhZD8KLSAgICAKLSAgICBpZiAocHJvdG9jb2xJcyhz
dHJpbmcsICJtYWlsdG8iKSkgewotICAgICAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub01haWxU
b1VSTFN0cmluZyhzdHJpbmcsIGYsIGFycmF5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAKLSAgICAvLyBGaW5kIHRoZSBob3N0IG5hbWUgaW4gYSBoaWVyYXJjaGljYWwgVVJMLgotICAg
IC8vIEl0IGNvbWVzIGFmdGVyIGEgIjovLyIgc2VxdWVuY2UsIHdpdGggc2NoZW1lIGNoYXJhY3Rl
cnMgcHJlY2VkaW5nLgotICAgIC8vIElmIGVuZHMgd2l0aCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcg
b3IgYSAiOiIsICIvIiwgb3IgYSAiPyIuCi0gICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFj
dGVyLCB0aGUgaG9zdCBwYXJ0IGlzIGp1c3QgdGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KLSAgICBO
U1JhbmdlIHNlcGFyYXRvclJhbmdlID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiOi8vIl07Ci0g
ICAgaWYgKHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICAvLyBDaGVjayB0aGF0IGFsbCBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUg
Oi8vIGFyZSB2YWxpZCBzY2hlbWUgY2hhcmFjdGVycy4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gbm9uU2NoZW1lQ2hhcmFjdGVycyA9IFtbTlND
aGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIkFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky0u
Il0gaW52ZXJ0ZWRTZXRdOwotICAgIGlmIChbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0
Om5vblNjaGVtZUNoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJh
bmdlKDAsIHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uKV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IFtzdHJp
bmcgbGVuZ3RoXTsKLSAgICAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5T
Q2hhcmFjdGVyU2V0Pj4gaG9zdFRlcm1pbmF0b3JzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3Rl
clNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCI6Lz8jIl07Ci0gICAgCi0gICAgLy8gU3RhcnQg
YWZ0ZXIgdGhlIHNlcGFyYXRvci4KLSAgICB1bnNpZ25lZCBhdXRob3JpdHlTdGFydCA9IE5TTWF4
UmFuZ2Uoc2VwYXJhdG9yUmFuZ2UpOwotICAgIAotICAgIC8vIEZpbmQgdGVybWluYXRpbmcgY2hh
cmFjdGVyLgotICAgIE5TUmFuZ2UgaG9zdE5hbWVUZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9m
Q2hhcmFjdGVyRnJvbVNldDpob3N0VGVybWluYXRvcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJh
bmdlOk5TTWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBzdHJpbmdMZW5ndGggLSBhdXRob3JpdHlT
dGFydCldOwotICAgIHVuc2lnbmVkIGhvc3ROYW1lRW5kID0gaG9zdE5hbWVUZXJtaW5hdG9yLmxv
Y2F0aW9uID09IE5TTm90Rm91bmQgPyBzdHJpbmdMZW5ndGggOiBob3N0TmFtZVRlcm1pbmF0b3Iu
bG9jYXRpb247Ci0gICAgCi0gICAgLy8gRmluZCAiQCIgZm9yIHRoZSBzdGFydCBvZiB0aGUgaG9z
dCBuYW1lLgotICAgIE5TUmFuZ2UgdXNlckluZm9UZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9m
U3RyaW5nOkAiQCIgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBo
b3N0TmFtZUVuZCAtIGF1dGhvcml0eVN0YXJ0KV07Ci0gICAgdW5zaWduZWQgaG9zdE5hbWVTdGFy
dCA9IHVzZXJJbmZvVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8gYXV0aG9yaXR5
U3RhcnQgOiBOU01heFJhbmdlKHVzZXJJbmZvVGVybWluYXRvcik7Ci0gICAgCi0gICAgcmV0dXJu
IGYoc3RyaW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZCAtIGhvc3RO
YW1lU3RhcnQpLCBhcnJheSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IG1hcEhv
c3ROYW1lcyhOU1N0cmluZyAqc3RyaW5nLCBCT09MIGVuY29kZSkKLXsKLSAgICAvLyBHZW5lcmFs
bHksIHdlIHdhbnQgdG8gb3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIG9uZSBo
b3N0IG5hbWUgdGhhdCBkb2VzIG5vdCBuZWVkIG1hcHBpbmcuCi0gICAgCi0gICAgaWYgKGVuY29k
ZSAmJiBbc3RyaW5nIGNhbkJlQ29udmVydGVkVG9FbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2Rp
bmddKQotICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgIAotICAgIC8vIE1ha2UgYSBsaXN0IG9m
IHJhbmdlcyB0aGF0IGFjdHVhbGx5IG5lZWQgbWFwcGluZy4KLSAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGhvc3ROYW1lUmFuZ2VzOwotICAgIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9u
IGYgPSBlbmNvZGUgPyBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyA6IGNvbGxlY3RSYW5n
ZXNUaGF0TmVlZERlY29kaW5nOwotICAgIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5n
KHN0cmluZywgZiwgaG9zdE5hbWVSYW5nZXMpOwotICAgIGlmICghaG9zdE5hbWVSYW5nZXMpCi0g
ICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICBpZiAoIVtob3N0TmFtZVJhbmdlcyBjb3VudF0p
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgLy8gRG8gdGhlIG1hcHBpbmcuCi0gICAg
YXV0byBtdXRhYmxlQ29weSA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwotICAgIHVu
c2lnbmVkIGkgPSBbaG9zdE5hbWVSYW5nZXMgY291bnRdOwotICAgIHdoaWxlIChpLS0pIHsKLSAg
ICAgICAgTlNSYW5nZSBob3N0TmFtZVJhbmdlID0gW1tob3N0TmFtZVJhbmdlcyBvYmplY3RBdElu
ZGV4OmldIHJhbmdlVmFsdWVdOwotICAgICAgICBOU1N0cmluZyAqbWFwcGVkSG9zdE5hbWUgPSBl
bmNvZGUgPyBlbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIGhvc3ROYW1lUmFuZ2UpIDog
ZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKTsKLSAgICAgICAg
W211dGFibGVDb3B5IHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpob3N0TmFtZVJhbmdlIHdpdGhT
dHJpbmc6bWFwcGVkSG9zdE5hbWVdOwotICAgIH0KLSAgICByZXR1cm4gbXV0YWJsZUNvcHk7Ci19
Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNl
KE5TU3RyaW5nICpzdHJpbmcpCi17Ci0gICAgYXV0byB0cmltbWVkID0gYWRvcHROUyhbc3RyaW5n
IG11dGFibGVDb3B5XSk7Ci0gICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoX19icmlkZ2UgQ0ZN
dXRhYmxlU3RyaW5nUmVmKXRyaW1tZWQuZ2V0KCkpOwotICAgIHJldHVybiB0cmltbWVkOwotfQot
Ci1OU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJM
ICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZSBjb21wb25lbnQpCi17Ci0gICAgaWYgKCFVUkwpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgQ0ZSYW5nZSBmcmFnUmcgPSBDRlVSTEdldEJ5
dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIG51
bGxwdHIpOwotICAgIGlmIChmcmFnUmcubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAg
IHJldHVybiBVUkw7Ci0KLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RI
PiB1cmxCeXRlcyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBudW1CeXRl
cyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgdXJsQnl0ZXMuZGF0YSgp
LCB1cmxCeXRlcy5zaXplKCkpOwotICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBu
dW1CeXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwg
MCk7Ci0gICAgICAgIHVybEJ5dGVzLmdyb3cobnVtQnl0ZXMpOwotICAgICAgICBDRlVSTEdldEJ5
dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOwot
ICAgIH0KLQotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxw
dHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2Rp
bmdVVEY4LCBudWxscHRyKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZV
UkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRp
b24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgIAot
ICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOwotfQot
Ci1zdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihOU1VSTCAqVVJM
KQotewotICAgIHJldHVybiBVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25l
bnQoVVJMLCBrQ0ZVUkxDb21wb25lbnRSZXNvdXJjZVNwZWNpZmllcik7Ci19Ci0KLU5TVVJMICpV
UkxXaXRoRGF0YShOU0RhdGEgKmRhdGEsIE5TVVJMICpiYXNlVVJMKQotewotICAgIGlmICghZGF0
YSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBOU1VSTCAqcmVzdWx0ID0gbmlsOwot
ICAgIHNpemVfdCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOwotICAgIGlmIChsZW5ndGggPiAwKSB7
Ci0gICAgICAgIC8vIHdvcmsgYXJvdW5kIDxyZGFyOi8vNDQ3MDc3MT46IENGVVJMQ3JlYXRlQWJz
b2x1dGVVUkxXaXRoQnl0ZXMoLi4sIFRSVUUpIGRvZXNuJ3QgcmVtb3ZlIG5vbi1wYXRoIGNvbXBv
bmVudHMuCi0gICAgICAgIGJhc2VVUkwgPSBVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIo
YmFzZVVSTCk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBVSW50OCAqYnl0ZXMgPSBzdGF0aWNf
Y2FzdDxjb25zdCBVSW50OCo+KFtkYXRhIGJ5dGVzXSk7Ci0gICAgICAgIAotICAgICAgICAvLyBD
RlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzIHdvdWxkIGNvbXBsYWluIHRvIGNvbnNvbGUg
aWYgd2UgcGFzc2VkIGEgcGF0aCB0byBpdC4KLSAgICAgICAgaWYgKGJ5dGVzWzBdID09ICcvJyAm
JiAhYmFzZVVSTCkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICAv
LyBOT1RFOiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hl
biBjb21wdXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAgICAg
ICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBp
cyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgICAg
IC8vIGNvdWxkIGVpdGhlciBiZSBhIG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZm
ZXJlbnQgZW5jb2RpbmcsIGxpa2Ugc2hpZnQtamlzLCBzbyB3ZSBmYWxsIGJhY2sKLSAgICAgICAg
Ly8gb250byB1c2luZyBJU08gTGF0aW4gMSBpbiB0aG9zZSBjYXNlcy4KLSAgICAgICAgcmVzdWx0
ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxs
cHRyLCBieXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBDRlVS
TFJlZiliYXNlVVJMLCBZRVMpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICBy
ZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVz
KG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoX19i
cmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc3Vs
dCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
c3RhdGljIE5TRGF0YSAqZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykK
LXsKLSAgICBOU0RhdGEgKnVzZXJUeXBlZERhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBBU1NFUlQodXNlclR5cGVkRGF0YSk7Ci0gICAg
Ci0gICAgY29uc3QgVUludDgqIGluQnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBVSW50OCAqPihb
dXNlclR5cGVkRGF0YSBieXRlc10pOwotICAgIGludCBpbkxlbmd0aCA9IFt1c2VyVHlwZWREYXRh
IGxlbmd0aF07Ci0gICAgaWYgKCFpbkxlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAK
LSAgICBjaGFyKiBvdXRCeXRlcyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obWFsbG9jKGluTGVuZ3Ro
ICogMykpOyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0gICAg
Y2hhciogcCA9IG91dEJ5dGVzOwotICAgIGludCBvdXRMZW5ndGggPSAwOwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgaW5MZW5ndGg7IGkrKykgewotICAgICAgICBVSW50OCBjID0gaW5CeXRlc1tp
XTsKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKLSAgICAgICAgICAgICpw
KysgPSAnJSc7Ci0gICAgICAgICAgICAqcCsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQo
Yyk7Ci0gICAgICAgICAgICAqcCsrID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0g
ICAgICAgICAgICBvdXRMZW5ndGggKz0gMzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICpwKysgPSBjOwotICAgICAgICAgICAgb3V0TGVuZ3RoKys7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpvdXRCeXRlcyBsZW5n
dGg6b3V0TGVuZ3RoXTsgLy8gYWRvcHRzIG91dEJ5dGVzCi19Ci0KLU5TVVJMICpVUkxXaXRoVXNl
clR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TVVJMICpuc1VSTCkKLXsKLSAgICBpZiAo
IXN0cmluZykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGF1dG8gbWFwcGVkU3RyaW5nID0g
bWFwSG9zdE5hbWVzKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCksIFlF
Uyk7Ci0gICAgaWYgKCFtYXBwZWRTdHJpbmcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAv
LyBMZXQncyBjaGVjayB3aGV0aGVyIHRoZSBVUkwgaXMgYm9ndXMuCi0gICAgVVJMIHVybCB7IFVS
TCB7IG5zVVJMIH0sIG1hcHBlZFN0cmluZy5nZXQoKSB9OwotICAgIGlmICghdXJsLmNyZWF0ZUNG
VVJMKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjA1NwotICAgIC8vIFdlIHNob3VsZCBiZSBh
YmxlIHRvIHVzZSB1cmwuY3JlYXRlQ0ZVUkwgaW5zdGVhZCBvZiB1c2luZyBkaXJlY3RseSBDRlVS
TCBwYXJzaW5nIHJvdXRpbmVzLgotICAgIE5TRGF0YSAqZGF0YSA9IGRhdGFXaXRoVXNlclR5cGVk
U3RyaW5nKG1hcHBlZFN0cmluZy5nZXQoKSk7Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1
cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKLQotICAgIHJldHVybiBVUkxXaXRoRGF0YShk
YXRhLCBuc1VSTCk7Ci19Ci0KLU5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRl
ZChOU1N0cmluZyAqc3RyaW5nLCBOU1VSTCAqVVJMKQotewotICAgIGlmICghc3RyaW5nKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgTlNVUkwgKnJlc3VsdCA9IFVSTFdpdGhVc2VyVHlwZWRT
dHJpbmcoc3RyaW5nLCBVUkwpOwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIE5TRGF0YSAq
cmVzdWx0RGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZyk7Ci0gICAgICAgIGlm
ICghcmVzdWx0RGF0YSkKLSAgICAgICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpA
IiJdOwotICAgICAgICByZXN1bHQgPSBVUkxXaXRoRGF0YShyZXN1bHREYXRhLCBVUkwpOwotICAg
IH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBCT09MIGhhc1F1ZXN0aW9uTWFy
a09ubHlRdWVyeVN0cmluZyhOU1VSTCAqVVJMKQotewotICAgIENGUmFuZ2UgcmFuZ2VXaXRoU2Vw
YXJhdG9yczsKLSAgICBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCBrQ0ZVUkxDb21wb25lbnRRdWVyeSwgJnJhbmdlV2l0aFNlcGFyYXRvcnMpOwot
ICAgIGlmIChyYW5nZVdpdGhTZXBhcmF0b3JzLmxvY2F0aW9uICE9IGtDRk5vdEZvdW5kICYmIHJh
bmdlV2l0aFNlcGFyYXRvcnMubGVuZ3RoID09IDEpCi0gICAgICAgIHJldHVybiBZRVM7Ci0KLSAg
ICByZXR1cm4gTk87Ci19Ci0KLU5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwg
KlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudFR5cGUpCi17Ci0gICAgVmVjdG9yPFVJ
bnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYWxsQnl0ZXNCdWZmZXIoVVJMX0JZVEVTX0JV
RkZFUl9MRU5HVEgpOwotICAgIENGSW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChf
X2JyaWRnZSBDRlVSTFJlZilVUkwsIGFsbEJ5dGVzQnVmZmVyLmRhdGEoKSwgYWxsQnl0ZXNCdWZm
ZXIuc2l6ZSgpKTsKLSAgICBpZiAoYnl0ZXNGaWxsZWQgPT0gLTEpIHsKLSAgICAgICAgQ0ZJbmRl
eCBieXRlc1RvQWxsb2NhdGUgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkws
IG51bGxwdHIsIDApOwotICAgICAgICBhbGxCeXRlc0J1ZmZlci5ncm93KGJ5dGVzVG9BbGxvY2F0
ZSk7Ci0gICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxS
ZWYpVVJMLCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgfQot
ICAgIAotICAgIGNvbnN0IENGVVJMQ29tcG9uZW50VHlwZSBjb21wbGV0ZVVSTCA9IChDRlVSTENv
bXBvbmVudFR5cGUpLTE7Ci0gICAgQ0ZSYW5nZSByYW5nZTsKLSAgICBpZiAoY29tcG9uZW50VHlw
ZSAhPSBjb21wbGV0ZVVSTCkgewotICAgICAgICByYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9y
Q29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudFR5cGUsIG51bGxwdHIp
OwotICAgICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgICAg
ICByZXR1cm4gbmlsOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJhbmdlLmxvY2F0aW9uID0gMDsK
LSAgICAgICAgcmFuZ2UubGVuZ3RoID0gYnl0ZXNGaWxsZWQ7Ci0gICAgfQotICAgIAotICAgIE5T
RGF0YSAqY29tcG9uZW50RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczphbGxCeXRlc0J1ZmZl
ci5kYXRhKCkgKyByYW5nZS5sb2NhdGlvbiBsZW5ndGg6cmFuZ2UubGVuZ3RoXTsgCi0gICAgCi0g
ICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyICo+KFtjb21wb25lbnREYXRhIGJ5dGVzXSk7Ci0gICAgTlNNdXRhYmxlRGF0YSAqcmVz
dWx0RGF0YSA9IFtOU011dGFibGVEYXRhIGRhdGFdOwotICAgIC8vIE5PVEU6IGFkZCBsZWFkaW5n
ICc/JyB0byBxdWVyeSBzdHJpbmdzIG5vbi16ZXJvIGxlbmd0aCBxdWVyeSBzdHJpbmdzLgotICAg
IC8vIE5PVEU6IHJldGFpbiBxdWVzdGlvbi1tYXJrIG9ubHkgcXVlcnkgc3RyaW5ncy4KLSAgICBp
ZiAoY29tcG9uZW50VHlwZSA9PSBrQ0ZVUkxDb21wb25lbnRRdWVyeSkgewotICAgICAgICBpZiAo
cmFuZ2UubGVuZ3RoID4gMCB8fCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoVVJMKSkK
LSAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOiI/IiBsZW5ndGg6MV07ICAgIAot
ICAgIH0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlLmxlbmd0aDsgaSsrKSB7Ci0gICAg
ICAgIHVuc2lnbmVkIGNoYXIgYyA9IGJ5dGVzW2ldOwotICAgICAgICBpZiAoYyA8PSAweDIwIHx8
IGMgPj0gMHg3ZikgewotICAgICAgICAgICAgY2hhciBlc2NhcGVkWzNdOwotICAgICAgICAgICAg
ZXNjYXBlZFswXSA9ICclJzsKLSAgICAgICAgICAgIGVzY2FwZWRbMV0gPSB1cHBlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAgIGVzY2FwZWRbMl0gPSBsb3dlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmVz
Y2FwZWQgbGVuZ3RoOjNdOyAgICAKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNoYXIg
YlsxXTsKLSAgICAgICAgICAgIGJbMF0gPSBjOwotICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBw
ZW5kQnl0ZXM6YiBsZW5ndGg6MV07ICAgIAotICAgICAgICB9ICAgICAgICAgICAgICAgCi0gICAg
fQotICAgIAotICAgIHJldHVybiByZXN1bHREYXRhOwotfQotCi1zdGF0aWMgTlNVUkwgKlVSTEJ5
UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENGVVJM
Q29tcG9uZW50VHlwZSBjb21wb25lbnQpCi17Ci0gICAgQ0ZSYW5nZSByYW5nZSA9IENGVVJMR2V0
Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwg
MCk7Ci0gICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQotICAgICAgICByZXR1
cm4gVVJMOwotICAgIAotICAgIC8vIFJlbW92ZSBvbmUgc3Vic2VxdWVudCBjaGFyYWN0ZXIuCi0g
ICAgcmFuZ2UubGVuZ3RoKys7Ci0KLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJf
TEVOR1RIPiBidWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwotICAgIENGSW5kZXggbnVt
Qnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOwotICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBu
dW1CeXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwg
MCk7Ci0gICAgICAgIGJ1ZmZlci5ncm93KG51bUJ5dGVzKTsKLSAgICAgICAgQ0ZVUkxHZXRCeXRl
cygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBudW1CeXRlcyk7Ci0gICAg
fQotICAgIFVJbnQ4KiB1cmxCeXRlcyA9IGJ1ZmZlci5kYXRhKCk7Ci0gICAgICAgIAotICAgIGlm
IChudW1CeXRlcyA8IHJhbmdlLmxvY2F0aW9uKQotICAgICAgICByZXR1cm4gVVJMOwotICAgIGlm
IChudW1CeXRlcyA8IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKQotICAgICAgICByYW5n
ZS5sZW5ndGggPSBudW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uOwotICAgICAgICAKLSAgICBtZW1t
b3ZlKHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24sIHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24g
KyByYW5nZS5sZW5ndGgsIG51bUJ5dGVzIC0gcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgp
OwotICAgIAotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxw
dHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdV
VEY4LCBudWxscHRyKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxD
cmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3Ro
LCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgcmV0dXJuIHJlc3VsdCA/IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7Ci19
Ci0KLU5TVVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNVUkwgKlVSTCkKLXsKLSAgICByZXR1
cm4gVVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoVVJMLCBrQ0ZV
UkxDb21wb25lbnRVc2VySW5mbyk7Ci19Ci0KIE5TVVJMICpVUkxCeUNhbm9uaWNhbGl6aW5nVVJM
KE5TVVJMICpVUkwpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdCA9IGFk
b3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOlVSTF0pOwpAQCAtMTA0OSwy
MDMgKzU3LDQgQEAgTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoTlNVUkwgKlVSTCkKICAg
ICByZXR1cm4gW1tuZXdVUkwgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLU5TRGF0YSAqb3Jp
Z2luYWxVUkxEYXRhKE5TVVJMICpVUkwpCi17Ci0gICAgVUludDggKmJ1ZmZlciA9IChVSW50OCAq
KW1hbGxvYyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBieXRlc0ZpbGxl
ZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLCBVUkxfQllU
RVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgaWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7Ci0gICAgICAg
IENGSW5kZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxS
ZWYpVVJMLCBudWxscHRyLCAwKTsKLSAgICAgICAgYnVmZmVyID0gKFVJbnQ4ICopcmVhbGxvYyhi
dWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRC
eXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0g
ICAgICAgIEFTU0VSVChieXRlc0ZpbGxlZCA9PSBieXRlc1RvQWxsb2NhdGUpOwotICAgIH0KLSAg
ICAKLSAgICAvLyBidWZmZXIgaXMgYWRvcHRlZCBieSB0aGUgTlNEYXRhCi0gICAgTlNEYXRhICpk
YXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5OmJ1ZmZlciBsZW5ndGg6Ynl0ZXNGaWxs
ZWQgZnJlZVdoZW5Eb25lOllFU107Ci0gICAgCi0gICAgTlNVUkwgKmJhc2VVUkwgPSAoX19icmlk
Z2UgTlNVUkwgKilDRlVSTEdldEJhc2VVUkwoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCk7Ci0gICAg
aWYgKGJhc2VVUkwpCi0gICAgICAgIHJldHVybiBvcmlnaW5hbFVSTERhdGEoVVJMV2l0aERhdGEo
ZGF0YSwgYmFzZVVSTCkpOwotICAgIHJldHVybiBkYXRhOwotfQotCi1zdGF0aWMgQ0ZTdHJpbmdS
ZWYgY3JlYXRlU3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKENGU3RyaW5nUmVmIHN0
cmluZykKLXsKLSAgICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7
Ci0gICAgVmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gc291cmNlQnVmZmVy
KGxlbmd0aCk7Ci0gICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2Uo
MCwgbGVuZ3RoKSwgc291cmNlQnVmZmVyLmRhdGEoKSk7Ci0gICAgCi0gICAgVmVjdG9yPFVDaGFy
LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gb3V0QnVmZmVyOwotICAgIAotICAgIHN0ZDo6b3B0
aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgQ0ZJbmRleCBpID0gMDsKLSAg
ICB3aGlsZSAoaSA8IGxlbmd0aCkgewotICAgICAgICBVQ2hhcjMyIGM7Ci0gICAgICAgIFUxNl9O
RVhUKHNvdXJjZUJ1ZmZlciwgaSwgbGVuZ3RoLCBjKQotICAgICAgICAKLSAgICAgICAgaWYgKGlz
TG9va2FsaWtlQ2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LCBjKSkgewotICAgICAgICAgICAg
dWludDhfdCB1dGY4QnVmZmVyWzRdOwotICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOwot
ICAgICAgICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOwotICAgICAgICAgICAgVThfQVBQRU5E
KHV0ZjhCdWZmZXIsIG9mZnNldCwgNCwgYywgZmFpbHVyZSkKLSAgICAgICAgICAgIEFTU0VSVCgh
ZmFpbHVyZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsg
aiA8IG9mZnNldDsgKytqKSB7Ci0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCgnJScp
OwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4
RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQo
bG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgVUNoYXIgdXRmMTZCdWZmZXJbMl07Ci0g
ICAgICAgICAgICBDRkluZGV4IG9mZnNldCA9IDA7Ci0gICAgICAgICAgICBVQm9vbCBmYWlsdXJl
ID0gZmFsc2U7Ci0gICAgICAgICAgICBVMTZfQVBQRU5EKHV0ZjE2QnVmZmVyLCBvZmZzZXQsIDIs
IGMsIGZhaWx1cmUpCi0gICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOwotICAgICAgICAgICAg
Zm9yIChDRkluZGV4IGogPSAwOyBqIDwgb2Zmc2V0OyArK2opCi0gICAgICAgICAgICAgICAgb3V0
QnVmZmVyLmFwcGVuZCh1dGYxNkJ1ZmZlcltqXSk7Ci0gICAgICAgIH0KLSAgICAgICAgcHJldmlv
dXNDb2RlUG9pbnQgPSBjOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycyhudWxscHRyLCBvdXRCdWZmZXIuZGF0YSgpLCBvdXRCdWZmZXIuc2l6ZSgp
KTsKLX0KLQotTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCi17Ci0gICAg
TlNEYXRhICpkYXRhID0gb3JpZ2luYWxVUkxEYXRhKFVSTCk7Ci0gICAgY29uc3QgdW5zaWduZWQg
Y2hhciAqYmVmb3JlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KFtkYXRhIGJ5
dGVzXSk7Ci0gICAgaW50IGxlbmd0aCA9IFtkYXRhIGxlbmd0aF07Ci0gICAgCi0gICAgYm9vbCBt
YXlOZWVkSG9zdE5hbWVEZWNvZGluZyA9IGZhbHNlOwotICAgIAotICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKnAgPSBiZWZvcmU7Ci0gICAgaW50IGJ1ZmZlckxlbmd0aCA9IChsZW5ndGggKiAzKSAr
IDE7Ci0gICAgVmVjdG9yPGNoYXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBhZnRlcihidWZm
ZXJMZW5ndGgpOyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0g
ICAgY2hhciAqcSA9IGFmdGVyLmRhdGEoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07Ci0gICAgICAgIC8vIHVu
ZXNjYXBlIGVzY2FwZSBzZXF1ZW5jZXMgdGhhdCBpbmRpY2F0ZSBieXRlcyBncmVhdGVyIHRoYW4g
MHg3ZgotICAgICAgICBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlI
ZXhEaWdpdChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChw
W2kgKyAyXSkpIHsKLSAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAx
XSwgcFtpICsgMl0pOwotICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gdW5lc2NhcGUKLSAgICAgICAgICAgICAgICAqcSsrID0gdTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90IHVuZXNjYXBlCi0gICAgICAgICAgICAg
ICAgKnErKyA9IHBbaV07Ci0gICAgICAgICAgICAgICAgKnErKyA9IHBbaSArIDFdOwotICAgICAg
ICAgICAgICAgICpxKysgPSBwW2kgKyAyXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkg
Kz0gMjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpxKysgPSBjOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICAvLyBDaGVjayBmb3IgInhuLS0iIGluIGFuIGVmZmljaWVudCwgbm9u
LWNhc2Utc2Vuc2l0aXZlLCB3YXkuCi0gICAgICAgICAgICBpZiAoYyA9PSAnLScgJiYgaSA+PSAz
ICYmICFtYXlOZWVkSG9zdE5hbWVEZWNvZGluZyAmJiAocVstNF0gfCAweDIwKSA9PSAneCcgJiYg
KHFbLTNdIHwgMHgyMCkgPT0gJ24nICYmIHFbLTJdID09ICctJykKLSAgICAgICAgICAgICAgICBt
YXlOZWVkSG9zdE5hbWVEZWNvZGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgKnEg
PSAnXDAnOwotICAgIAotICAgIC8vIENoZWNrIHN0cmluZyB0byBzZWUgaWYgaXQgY2FuIGJlIGNv
bnZlcnRlZCB0byBkaXNwbGF5IHVzaW5nIFVURi04ICAKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IHJlc3VsdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOwot
ICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIC8vIENvdWxkIG5vdCBjb252ZXJ0IHRvIFVURi04
LgotICAgICAgICAvLyBDb252ZXJ0IGNoYXJhY3RlcnMgZ3JlYXRlciB0aGFuIDB4N2YgdG8gZXNj
YXBlIHNlcXVlbmNlcy4KLSAgICAgICAgLy8gU2hpZnQgY3VycmVudCBzdHJpbmcgdG8gdGhlIGVu
ZCBvZiB0aGUgYnVmZmVyCi0gICAgICAgIC8vIHRoZW4gd2Ugd2lsbCBjb3B5IGJhY2sgYnl0ZXMg
dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgCi0gICAgICAgIC8vIGFzIHdlIGNvbnZlcnQuCi0g
ICAgICAgIGludCBhZnRlcmxlbmd0aCA9IHEgLSBhZnRlci5kYXRhKCk7Ci0gICAgICAgIGNoYXIg
KnAgPSBhZnRlci5kYXRhKCkgKyBidWZmZXJMZW5ndGggLSBhZnRlcmxlbmd0aCAtIDE7Ci0gICAg
ICAgIG1lbW1vdmUocCwgYWZ0ZXIuZGF0YSgpLCBhZnRlcmxlbmd0aCArIDEpOyAvLyBjb3BpZXMg
dHJhaWxpbmcgJ1wwJwotICAgICAgICBjaGFyICpxID0gYWZ0ZXIuZGF0YSgpOwotICAgICAgICB3
aGlsZSAoKnApIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpwOwotICAgICAgICAg
ICAgaWYgKGMgPiAweDdmKSB7Ci0gICAgICAgICAgICAgICAgKnErKyA9ICclJzsKLSAgICAgICAg
ICAgICAgICAqcSsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAg
ICAgICAgKnErKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgKnErKyA9ICpwOwotICAgICAgICAgICAgcCsrOwotICAg
ICAgICB9Ci0gICAgICAgICpxID0gJ1wwJzsKLSAgICAgICAgcmVzdWx0ID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhVVEY4U3RyaW5nOmFmdGVyLmRhdGEoKV07Ci0gICAgfQotICAgIAotICAgIGlmICht
YXlOZWVkSG9zdE5hbWVEZWNvZGluZykgewotICAgICAgICAvLyBGSVhNRTogSXMgaXQgZ29vZCB0
byBpZ25vcmUgdGhlIGZhaWx1cmUgb2YgbWFwSG9zdE5hbWVzIGFuZCBrZWVwIHJlc3VsdCBpbnRh
Y3Q/Ci0gICAgICAgIGF1dG8gbWFwcGVkUmVzdWx0ID0gbWFwSG9zdE5hbWVzKHJlc3VsdC5nZXQo
KSwgTk8pOwotICAgICAgICBpZiAobWFwcGVkUmVzdWx0KQotICAgICAgICAgICAgcmVzdWx0ID0g
bWFwcGVkUmVzdWx0OwotICAgIH0KLQotICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRT
dHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNl
KGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpcmVzdWx0LmdldCgpKSk7Ci19Ci0KLUJPT0wgaXNVc2VyVmlzaWJsZVVSTChOU1N0cmlu
ZyAqc3RyaW5nKQotewotICAgIEJPT0wgdmFsaWQgPSBZRVM7Ci0gICAgLy8gZ2V0IGJ1ZmZlcgot
ICAgIAotICAgIGNoYXIgc3RhdGljX2J1ZmZlclsxMDI0XTsKLSAgICBjb25zdCBjaGFyICpwOwot
ICAgIEJPT0wgc3VjY2VzcyA9IENGU3RyaW5nR2V0Q1N0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpc3RyaW5nLCBzdGF0aWNfYnVmZmVyLCAxMDIzLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpOwot
ICAgIHAgPSBzdWNjZXNzID8gc3RhdGljX2J1ZmZlciA6IFtzdHJpbmcgVVRGOFN0cmluZ107Ci0g
ICAgCi0gICAgaW50IGxlbmd0aCA9IHN0cmxlbihwKTsKLSAgICAKLSAgICAvLyBjaGVjayBmb3Ig
Y2hhcmFjdGVycyA8PSAweDIwIG9yID49MHg3ZiwgJS1lc2NhcGUgc2VxdWVuY2VzIG9mICU3Ziwg
YW5kIHhuLS0sIHRoZXNlCi0gICAgLy8gYXJlIHRoZSB0aGluZ3MgdGhhdCB3aWxsIGxlYWQgX3dl
Yl91c2VyVmlzaWJsZVN0cmluZyB0byBhY3R1YWxseSBjaGFuZ2UgdGhpbmdzLgotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0g
cFtpXTsKLSAgICAgICAgLy8gZXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVycywgc3BhY2UsIGFuZCBk
ZWxldGUKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID09IDB4N2YpIHsKLSAgICAgICAgICAg
IHZhbGlkID0gTk87Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChjID09
ICclJyAmJiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDFdKSkgJiYg
aSArIDIgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDJdKSkgewotICAgICAgICAg
ICAgYXV0byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7Ci0gICAgICAg
ICAgICBpZiAodSA+IDB4N2YpIHsKLSAgICAgICAgICAgICAgICB2YWxpZCA9IE5POwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaSArPSAyOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBhbiBlZmZp
Y2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgotICAgICAgICAgICAgaWYgKGMgPT0gJy0n
ICYmIGkgPj0gMyAmJiAocFtpIC0gM10gfCAweDIwKSA9PSAneCcgJiYgKHBbaSAtIDJdIHwgMHgy
MCkgPT0gJ24nICYmIHBbaSAtIDFdID09ICctJykgewotICAgICAgICAgICAgICAgIHZhbGlkID0g
Tk87Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgCi0gICAgcmV0dXJuIHZhbGlkOwotfQotCi1OU1JhbmdlIHJhbmdlT2ZVUkxTY2hl
bWUoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICBOU1JhbmdlIGNvbG9uID0gW3N0cmluZyByYW5n
ZU9mU3RyaW5nOkAiOiJdOwotICAgIGlmIChjb2xvbi5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYm
IGNvbG9uLmxvY2F0aW9uID4gMCkgewotICAgICAgICBOU1JhbmdlIHNjaGVtZSA9IHswLCBjb2xv
bi5sb2NhdGlvbn07Ci0gICAgICAgIC8qCi0gICAgICAgICBUaGlzIHN0dWZmIGlzIHZlcnkgZXhw
ZW5zaXZlLiAgMTAtMTUgbXNlYyBvbiBhIDJ4MS4yR0h6LiAgSWYgbm90IGNhY2hlZCBpdCBzd2Ft
cHMKLSAgICAgICAgIGV2ZXJ5dGhpbmcgZWxzZSB3aGVuIGFkZGluZyBpdGVtcyB0byB0aGUgYXV0
b2NvbXBsZXRlIERCLiAgTWFrZXMgbWUgd29uZGVyIGlmIHdlCi0gICAgICAgICBldmVuIG5lZWQg
dG8gZW5mb3JjZSB0aGUgY2hhcmFjdGVyIHNldCBoZXJlLgotICAgICAgICAgKi8KLSAgICAgICAg
TlNTdHJpbmcgKmFjY2VwdGFibGVDaGFyYWN0ZXJzID0gQCJBQkNERUZHSElKS0xNTk9QUVJTVFVW
V1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsuLSI7Ci0gICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBJbnZlcnNlU2No
ZW1lQ2hhcmFjdGVyU2V0KFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3Rl
cnNJblN0cmluZzphY2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52ZXJ0ZWRTZXRdKTsKLSAgICAgICAg
TlNSYW5nZSBpbGxlZ2FscyA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6SW52ZXJz
ZVNjaGVtZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsK
LSAgICAgICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAg
ICByZXR1cm4gc2NoZW1lOwotICAgIH0KLSAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3Vu
ZCwgMCk7Ci19Ci0KLUJPT0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKnN0cmluZykK
LXsKLSAgICAvLyBUcmltIHdoaXRlc3BhY2UgYmVjYXVzZSBfd2ViX1VSTFdpdGhTdHJpbmcgYWxs
b3dzIHdoaXRlc3BhY2UuCi0gICAgcmV0dXJuIHJhbmdlT2ZVUkxTY2hlbWUoc3RyaW5nQnlUcmlt
bWluZ1doaXRlc3BhY2Uoc3RyaW5nKS5nZXQoKSkubG9jYXRpb24gIT0gTlNOb3RGb3VuZDsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgK
aW5kZXggYzk5Y2IzODM3OGMxOWFiODJjZTkxZThiZjAyMzdhYjc3Mjg3OTExYS4uNjMzMTc4ZTRl
ZWFiNWVhMzE5MzYyMTAxMGU3NThjYjM0MjBjODE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmln
dXJhdGlvbi5oCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlICJSVENCdW5kbGVQb2xpY3ku
aCIKICNpbmNsdWRlICJSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaApp
bmRleCBiNzAyNjc0ODI0NjlkNTg3NWVmYjVmNzQ5NGQxYmY3YWM0MmM4OWUxLi4zODBkMzczMWIw
YTE1M2FiYjljMjI3MGJmZWU3NjgwZjAzYjNiOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRp
bGl0aWVzLmgKQEAgLTIzLDYgKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI3ByYWdt
YSBvbmNlCisKICNpbmNsdWRlIDxDb3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlBhcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaAppbmRl
eCA2MjhmOTM5YTMwNWNjZjc0NjY5ZTZiY2JhYmMwZjU5MTc5NTYzNzg2Li4wNDFjMjlhMzEyZjA5
ODE3ZjhlY2YxNzM2MTYxM2NhZDJmZDZmNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUGFydC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5o
CmluZGV4IDlmZjYwMGNhYzU5M2QzNTk0NWMxMGVhMTE0NTM3NGRiYzk3MjgwMTMuLjQ3NGEwZjJm
OGJiYTFjYjFmOTYzY2NjOTk0NGYyZTc5ZGFiYzFkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFy
dDsKIGNsYXNzIEJsb2JSZWdpc3RyeTsKLWNsYXNzIFVSTDsKIAogV0VCQ09SRV9FWFBPUlQgQmxv
YlJlZ2lzdHJ5JiBibG9iUmVnaXN0cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCAyNGZlY2M5NWE0MTk2MGIxM2Rk
ODc0ODE1MTBlYzI3OGE4YjFlZjI0Li5jNjkxZTViNjcwMDdlZGEyZTJmZjhiYjYyMjZhMDBhMzAw
NTE0ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuaApAQCAtMzMsMTQgKzMzLDEzIEBACiAKICNpbmNsdWRlICJCbG9iRGF0YS5o
IgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlSGFuZGxl
OwogY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAKaW5kZXggNjE4MmJlNTZjNDI2MDVkNTBlYTI5ZDJkN2JlMTAyMTdkYmY2MjEwOS4u
Yzk0ZTM5NDk0YjhlMzI2ZGI0YTEyYTI3MjAxYTQ2MjM4ZGUxOGM0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApA
QCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFJhbmdlLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDI0OWEwMDM2MWJl
ZmFjM2M4YWIzMzlhZDg3N2U4NzFmNGJmZTU5MzIuLjMyYTZmNTdjMGEyMTk2MDQ3Yzc0MzliMDkz
OWRmZTJjZDBjMzY5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAgLTI3LDgg
KzI3LDggQEAKIAogI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIlNhbWVT
aXRlSW5mby5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcApp
bmRleCBlNWYzMDRiYmNlNWQwMTk2OTkxZjVjZDljZTJlMGYyMjEyY2FlNmEwLi4yYzU0MzQzODVm
MTg1ZTgyZTI5MTYxYjhmYzQ3ZmU5OTAxMzk0N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcApAQCAtMjcsNyArMjcs
NyBAQAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCmlu
ZGV4IDVjYWNjMDU2MzFjMTY4MGQxZDk0MjdkNzc4OTUyOWYzYjE4ZDMwN2QuLjdkZGM0ZmU1NWJi
MWJlMmY2OTIwMDA4MGMzNGYzNGJhYmQ1MGVkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKQEAgLTIzLDggKzIzLDcgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQ3JlZGVudGlhbFN0b3JhZ2VfaAotI2Rl
ZmluZSBDcmVkZW50aWFsU3RvcmFnZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRl
bnRpYWwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VIYXNoLmgiCkBAIC0zNSw3ICszNCw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlv
blNwYWNlOwogCiBjbGFzcyBDcmVkZW50aWFsU3RvcmFnZSB7CkBAIC03MCw1ICs2OCwzIEBAIGNs
YXNzIENyZWRlbnRpYWxTdG9yYWdlIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIENyZWRlbnRpYWxTdG9yYWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggM2Y0ZmIxYWQ4ODRhNzgyYmRj
NjE0ZmQzOTRmZTc3NzFhYmE1NGE0Zi4uNDYwNWJlYTBhN2ExNmQxM2E1ZDJjMGU5MDZmYmFlOTBj
ZGQ0NjIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtR
dWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggNzI1ODI0NzEyOWNi
YmFhMmM4NWZjM2I0OWNmZGI2NjgwZDJiZDc1ZC4uOTc0ZDljZWJlYjE5NTE4OGI1Yzg0NjkyYWEw
ZjViMjZiYTk5MGNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RGF0YVVSTERlY29kZXIuaApAQCAtMjMsOSArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRGF0YVVSTERlY29kZXJfaAotI2RlZmluZSBE
YXRhVVJMRGVjb2Rlcl9oCi0KKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0zOCw3ICszNiw2IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogbmFtZXNw
YWNlIERhdGFVUkxEZWNvZGVyIHsKIApAQCAtNjEsNSArNTgsMyBAQCB2b2lkIGRlY29kZShjb25z
dCBVUkwmLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmLCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYm
KTsKIH0KIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaAppbmRleCBlOGM3ZDk4YTA3NWI2NmRkMDU0Mjg3OWI1OTE2NGMwZDQ2ZjZhNzI2Li5i
YmFhZGUxODViNzlmNTRmOGMwNzA3NTM5NjMyMTY2MzQ2ZWMyZGVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0yMCw5ICsyMCw5IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaAppbmRleCAxMDNkOWE5NmJiZGM2MTUyYTYx
YjdkMTYxZmU0MDkwYmE1YmMzYTA1Li41Mjc4OWI1YmRkOGRhYjM5N2IzNjlhYWMxNThjMjY3NzIx
ODc3ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZl
ci5oCkBAIC0yMywxNSArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIFByb3h5U2VydmVyX2gKLSNkZWZpbmUgUHJveHlTZXJ2ZXJfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xh
c3MgTmV0d29ya2luZ0NvbnRleHQ7CiAKIC8vIFJlcHJlc2VudHMgYSBzaW5nbGUgcHJveHkgc2Vy
dmVyLgpAQCAtNzUsNSArNzMsMyBAQCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UHJveHlTZXJ2ZXI+
IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0
b1N0cmluZyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+Jik7CiAgICAgCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQcm94eVNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggNzYzMzE4YzJl
MTE0NzM2MjM2ZWMzZDEzNmM3YzRhODc4ZGRjYjJmMy4uZTBiZjA0YjhhYzhmMDBiMzkzOTc5MWVi
ZmQwMDg3ZWNiOTBkYjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaApAQCAtMjYsNyArMjYsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCA0OTE0
MzRkOGZhNTNmMTkwZTU0NTNlYjlmMzk0ZTQwN2RkNmMxM2JmLi40NmFmNTY3MTNkODk4YzNhN2Zi
ZDc5OGFhNTBmZWFhNjU0Nzg0OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIENvbXBsZXRpb25ICiAgICAgaWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAg
YXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4gcG9ydCA9IHVybC5wb3J0KCk7Ci0gICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKKyAgICAgICAgaWYg
KHBvcnQgJiYgIVdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJs
LnByb3RvY29sKCkpKSB7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlID0gIkNhbmNlbGxlZCBsb2FkIGZyb20gJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIGl0IGlzIHVzaW5nIEhUVFAvMC45LiI7CiAg
ICAgICAgICAgICBkLT5tX2NsaWVudC0+ZGlkRmFpbCh0aGlzLCB7IFN0cmluZygpLCAwLCB1cmws
IG1lc3NhZ2UgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmgKaW5kZXggMDFhODZlMzU5YjFmZDBmMmVhZjQ1NjhhYTcyODY0MGMzMmI3NmY3
OC4uNjVmMzBmOTVkYjYwNTRhNWQwMWIyOWYyNDY4YjU5ZTk3MzcyNGY3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtNzcsNyAr
NzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIFVSTDsKIGNsYXNzIE5l
dHdvcmtpbmdDb250ZXh0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaAppbmRleCBkNmVkYjZkNjE4YWRjM2JjY2UyM2YwMWZiOTdmZjEzOTk3
YTZmYWMyLi4zZTEwYmVmNDkxMDdkMTM3ODE3Y2I5OTMyOTg1MjE3NWJiOGQ0MGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5oCkBAIC00NCw3ICs0NCw2IEBAIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xh
c3MgQ3JlZGVudGlhbDsKLWNsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNz
IFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4
IGZmNTgzNjE3NGVhYjk1OTUyOGEyMDdiZmJhYWI2MDAzOWQ5YjUwMzMuLmZiNDYzNjM1MjJhN2Zl
YzI1MjdkY2M0ZDEyNzVlZGEzZjc2MzMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIFJlc291cmNlUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByCiAgICAgICAgIHJlcXVlc3QubV9odHRwSGVh
ZGVyRmllbGRzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAgICAgfQog
Ci0gICAgaWYgKHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJl
cXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ICYmICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0
dHBzIikgJiYgV1RGOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIp
KQogICAgICAgICByZXF1ZXN0LmNsZWFySFRUUFJlZmVycmVyKCk7CiAKICAgICBpZiAoIXByb3Rv
Y29sSG9zdEFuZFBvcnRBcmVFcXVhbChyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVy
bCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmgKaW5kZXggM2FmNDM1MjY5ZmUxZmNlMDM3Nzg1ZmQyNWExZTBjYmJmZDc5
MGYzNS4uZTdjMWM0MDljM2I5YjY0ZWE3YjRlMzc4NzgzNDM5NTQyYTRhZDBjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkhU
VFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAppbmRleCBkOGZjYzE0MzFiNTBiYzdhYjY3
ZjFkMTk2OGI5MWNlNzBlYTE2MWVmLi4wZTU1YzFjZWZmMmFlN2MzNzFmNjBlNmVjMzRhODE1Yjc4
YTgyMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiSFRUUEhl
YWRlck1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlBh
cnNlZENvbnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYXJr
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggYjU5YmRiYTBiNDEyOTVjZWUzODUz
ZjZmZWEyMmFiYzI0ZWNkYmYyNS4uNmQxZmQxYTgzMDk5Mzk4OTRiNDllYTg0Yjc3YTU5ZjExN2Q4
YTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRT
dHJlYW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZS5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHAKaW5kZXggYmEzNDBmZjg4ZDYyMDNiNzEyNTIwOWE4NTAyM2QzNDlkZjM1ZjJkZi4uNGY4
ZTQzMjJhYzU3MWQ3NzcxM2QxMDE0Mzc0MDQ1ZmY2ZGNjZmNmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHAKQEAgLTMwLDExICszMCwxMSBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShXSU4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGZhMDRjOGI3MDk5Y2JhZWI2
ZTVmNGMxNWIxNzQ1MjY3NDA5YjNhZDcuLmY4ZWJiMDZjY2QwNTZlMzUwZWQwMGYwYjkyNWZkYWFj
ZmZkZTRkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC00MiwxMiAr
NDIsMTIgQEAKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgogI2lu
Y2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+
CiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxw
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRl
IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVy
Q0ZOZXQuY3BwCmluZGV4IGI1YzZhOGQ2YzMyZmZkYmQ5MGIyMTAwNDJiOTQ3MTQ3NDNhMGM1NGIu
LjJhYjM0OTcyMTZhYzVhYTg3NmUwMDRlN2E3ZDU2YThlNDhkZWM0Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNw
cApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5
U2VydmVyLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggYmEzNjA1YmJkMWQ0NmY5N2RlMjgz
OGYzOTgzNzg5MmY5OTUyMmI2OC4uZDQxNmY2MTUxNGVmMWZmMDIzMTFkNWMyZDEwMzVlZmQ1NDFl
OTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24v
Q0ZFcnJvci5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KICNpbmNs
dWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA4
OTQ4NWEzMWY1NDQ1YTVjODllOTNiODEzYzkxMDgxYTc0YTQ5MTljLi4wZWFkZTE1OTljZTU4YmI2
NDBmMmQxMjEzYWM0MzYwMjE0NzNhODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0KQEAgLTMxLDExICszMSwxMSBAQAogI2ltcG9ydCAiQ29va2llU3RvcmFnZU9ic2Vy
dmVyLmgiCiAjaW1wb3J0ICJDb29raWVzU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlNhbWVTaXRlSW5m
by5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5o
PgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9PcHRp
b25hbC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogQGludGVyZmFjZSBO
U1VSTCAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmgKaW5kZXggZTBiMjFjYzEzNzc0OGE4ZTE2Mjc0ODMyNjA3YzE4ZDdhNDgx
NjBmZS4uYjk2MTRiZmYwMDc5ODRjYTVmMjIxOGUwYjY1OWFhZjJmNGEyZDYwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5o
CkBAIC0yNSw3ICsyNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwog
Y2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogCiBzdHJ1Y3QgQ29va2llOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmxEYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
Q3VybERhdGFiYXNlLmNwcAppbmRleCA1ZTg0NTRhYTU0YWY2ZjcxYWNmYWU3ZTkzNjI0MDdjMjE0
MTc1MTg1Li5jMmQwNTFlMzc5M2Y1YThlODY4YTRlNzlkZmUxNjQ2NTY3NTE3YWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyQ3VybERhdGFiYXNlLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuY3BwCmluZGV4IDY1MDAzOGQzOTQxMmM3Y2EwMzg0M2Q4YWM5M2YxNDY2YTRlODdj
ODIuLjM5ZTc3YmY3ZDQ2MGZmNzZhYTc3ZmNhNjFjYjI2MTNiMWE3NTU5MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApA
QCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlVSTC5oIgog
CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmgKaW5kZXggYTg5YzlhYjdiOTYyNjI0NDgzMjYyNTI1NDcw
ZjFhNGRjYzlmZjM3Mi4uNjE4ZGY3Yjg4ZTQyOWVmNzY0ZTEyYjI2N2M3NGFkZmExYWU5ZWM4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0
aWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRp
bC5oCkBAIC0yNCw4ICsyNCw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXgg
MzczMjYwMTc5Yjg4NmYxZWVkYTA2ODEzOWYwMDY4NGExNGFmMDc3NS4uZjhkNjgxMDgwMWVmYmFk
ZDlkNDEwMDIyOTRhZGEzOTlhMDk2NTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAj
aW5jbHVkZSAiQ3VybFByb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlICJDdXJsU1NMSGFuZGxlLmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNl
dHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5
U2V0dGluZ3MuaAppbmRleCBhNjFjNmVjMjI2MmQyZTM4Nzk5MjcyNGI2ZGNjNWY2OTRkMTE2NjQ5
Li5mMzVmNDFiNTFmNTg5NmY2ZjczMzY2MDU1MjQ5YzMwYmEzOTViM2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGlu
Z3MuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogI2RlZmluZSBrQ1VSTEFVVEhfRElHRVNUX0lFICAgICgoKHVuc2lnbmVkIGxvbmcpIDEpIDw8
IDQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c3BvbnNlLmgKaW5kZXggMzczNjYxYmQzNWFmY2U2NjdhZTFiYjM1NzdhNmMwOWRjMTQ0ZmE0ZC4u
ZTYxMWZmYzRmYjE1NDFmNGNmZDEzMjg3MmNiYzFkNWRjM2Q5M2ZhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2UuaApAQCAtMjUs
NyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKaW5kZXggZTExMGFkMTY0OTEwNWVjNmIwMDNiMTk5MDM2YWQ4YThlNzA0
NzcxNC4uMWJkMjFlY2VhYmZmN2U3OTIwMGFmODJjY2QwOWMyYTg4NzE4OWUwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Qcm94eVNlcnZlckN1cmwuY3BwCmluZGV4IGNkYTQ0OTkzZjYzNGIyNDQ0YTYxZGNhZjk3
NDAxZTlmMjYwMmYwYjAuLjE4ZjUwOGI2ZTQ4NjgyYThmYzcwMGQxZjY3ZDdhOTZlMDkzZWQ0YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNl
cnZlckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Q
cm94eVNlcnZlckN1cmwuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBVU0UoQ1VSTCkKIAot
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCBjZmM0OGZm
YTI1ZmQ4MGZkYjhkNzFmYTdjMzg5M2QzZTg2YTQ1NzdhLi4wNzEwY2FlZTI1MDNjMWYzZjM4MDhl
MjA0MzcwNTg4MjdlZDM2ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5j
cHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU29j
a2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggMmVjZjQy
OGMwYWI1MTRhY2UwYzAxYzVmNGQxNjI5OGNlYTIxNjA3My4uZGNiZGUzNDhlYjQ3N2MyYTFiNWFi
ZTRhYjU5MzU5Mzk4ZTJhYzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCkBAIC0yNiwxMSArMjYsMTEgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogCi0jaW1wb3J0
ICJVUkwuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIEBpbnRlcmZhY2UgTlNFcnJvciAoV2Vi
RXh0cmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0dVbmlxdWVQdHJTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
R1VuaXF1ZVB0clNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZkYzYzNzQx
MmUxOGJhNzI1Zjc0ODNlYzMyNmUxMjQ5YTg4YTE2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvR1VuaXF1ZVB0clNvdXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBHVW5p
cXVlUHRyU291cF9oCi0jZGVmaW5lIEdVbmlxdWVQdHJTb3VwX2gKLQotI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLQotbmFtZXNwYWNl
IFdURiB7Ci0KLVdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2ZyZWUp
Ci1XVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVlKQot
V1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3NhZ2Vf
aGVhZGVyc19mcmVlKQotV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cEJ1ZmZlciwgc291cF9i
dWZmZXJfZnJlZSkKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IGU0ODNhYTYzMTZjZTZjNWQ2YzhmM2U2NTVkNTVk
ZDFlZWIwNDYzY2YuLjAzZDE1NmU1ZWQ2ZThjMWY1OTA5NTZhOGJkODQwZThhM2QxMGU0N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAog
I2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5LmgiCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgpAQCAtNDEsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKICNpZiBV
U0UoTElCU0VDUkVUKQogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKaW5k
ZXggNGMyNzdjM2QyMTY3YWNjNTQ0MTFmOTYwM2UzNTE5MDAxNzMzYjRhZC4uOWM5OWY4OTVkYjRk
YjdjODExY2E1MGY1MTFkM2Q0ZmIyNWM3MTZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKQEAgLTI4LDcg
KzI4LDcgQEAKIAogI2lmIFVTRShTT1VQKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
aW5kZXggNjM3MzRjNjc0YzUyZWU5NWRjNmM5ZTQyMWM0NjYwZjQxODQwMGJhYS4uZmI3MTgxM2Ez
NzU5MDljMGE3YTJmNTQ1NzRhODExYWVkZGIzZmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
QEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVk
ZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtNTgsNiArNTcsNyBAQAogI2VuZGlmCiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0LmgKaW5kZXggMzhlM2E4ZWU2OTY4MTFmZDViYTc4YjRiMzBjMmMwMWEzOWZm
NWI1Zi4uNzQ3MmFkMjM4YjMzNGE5NTA5MDFlZGU5MDE1ODMyNjViM2Y5YmM0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3QuaApAQCAtMjcsOSArMjcsOSBAQAogI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RfaAogI2RlZmlu
ZSBSZXNvdXJjZVJlcXVlc3RfaAogCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3RCYXNlLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Cisj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggNThjZmE3NzYxNDRjODRhMDkwZDM2MjJk
ZjIyMjc0MjE4Zjc5MWJiNi4uZWQyNjk0MDFlYmJmZjRkZDYzOGVmOGVmYzFlMGVkODY5MjJmNDZm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtMjQsMTEgKzI0LDExIEBACiAKICNpbmNs
dWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKLSNpbmNsdWRl
ICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAi
TUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
IldlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQ
dHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcApp
bmRleCA5Y2RkZGI4N2UzNzU5NWEyYmJhZDY1MTAyMDQ1ZjZmYTc0MmI0ZTQyLi41YWY5NDczZjM3
NzI4NjExMzFiYWU3MTc3YjM0MzE5YTVjMmRiMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsU291cC5jcHAKQEAgLTQxLDkgKzQxLDkgQEAKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1F
cnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUg
IlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGdpby9n
aW8uaD4KICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CmluZGV4IDEzZWNiNWIwZjc2M2MyMDFjZjE3YTQxNjEyYTczZjA5YThmNWEwNzguLjYwMDRkMTdm
NzZhMDNhOTBlMzM4YTkwZTNjNTQ1YjUyZjUxOWM3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3Mu
aCIKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUg
PHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGQxZTlkOWNlNWIyODlkMTRj
YzZjMTY1OTNiZjRhZDA2NzgyN2U1M2EuLjViNWZmNzk3NzM0NzE1MTk2MWE0NWMzNDk3ZWEyZjU1
MTM0NGIxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwotY2xhc3MgVVJMOwogc3RydWN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczsKIAogY2xhc3Mg
U291cE5ldHdvcmtTZXNzaW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NvdXAvVVJMU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2RiYTMyODY5NWZmY2IyNmYzODdi
NjcyYWE5Mzg3MzcyYjJlOTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiVVJMLmgiCi0KLSNp
bmNsdWRlICJVUkxQYXJzZXIuaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwo
U291cFVSSSogc291cFVSSSkKLXsKLSAgICBpZiAoIXNvdXBVUkkpIHsKLSAgICAgICAgaW52YWxp
ZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4g
dXJsU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwotICAgIFVSTFBh
cnNlciBwYXJzZXIoU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0KCkpKTsKLSAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKLQotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4OTU2LiBsaWJzb3VwCi0gICAgLy8gZG9lcyBub3QgYWRkIHRoZSBwYXNzd29y
ZCB0byB0aGUgVVJMIHdoZW4gY2FsbGluZwotICAgIC8vIHNvdXBfdXJpX3RvX3N0cmluZywgYW5k
IHRodXMgdGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkKLSAgICAvLyBidWlsdC4gRml4aW5n
IHNvdXBfdXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMKLSAg
ICAvLyBub3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVt
ZW50YXRpb25zCi0gICAgaWYgKHNvdXBVUkktPnBhc3N3b3JkKQotICAgICAgICBzZXRQYXNzKFN0
cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsKLX0KLQotR1VuaXF1ZVB0cjxTb3Vw
VVJJPiBVUkw6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBHVW5pcXVlUHRyPFNvdXBVUkk+
KHNvdXBfdXJpX25ldyhzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci19Ci0KLWJvb2wgVVJMOjpo
b3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewotICAgIHJldHVybiAhaG9zdC5pc0Vt
cHR5KCkgJiYgZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGhvc3QudXRmOCgpLmRhdGEoKSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaAppbmRleCA3N2M1Mjg4ZmQwY2UwNTk4NjRlZjgxMjNl
MDA3MmJiN2MzNTcyM2RiLi43ZDAzZjg2M2QwZGY0OWQyZjc5YzdjM2E2ZDEzODJjZjQxNjgxMGU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKQEAgLTI1
LDEzICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHBhbC90ZXh0L1VuZW5jb2RhYmxlSGFuZGxpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgVGV4dEVuY29kaW5nIDogcHVibGljIFVSTFRleHRFbmNvZGluZyB7CitjbGFzcyBU
ZXh0RW5jb2RpbmcgOiBwdWJsaWMgV1RGOjpVUkxUZXh0RW5jb2RpbmcgewogcHVibGljOgogICAg
IFRleHRFbmNvZGluZygpID0gZGVmYXVsdDsKICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0RW5jb2Rp
bmcoY29uc3QgY2hhciogbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQlN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5j
cHAKaW5kZXggYmFlMWJlYWFhYTM3YWRlMzAzYjA4ZjM0ODk0OTI0OTAxODY0NzljYS4uMGY0NmM1
ZGNhYjI5YjdiNDYzYmI2ZWNkMzFiMGViM2I3NThjMjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9CU3RyaW5nLmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkJTdHJpbmcuaCIKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0JTdHJpbmcuaAppbmRleCAxZmJlMDJjMTU4N2MxMjliOGQ1MDUwMmU2NDYw
NGU3ODZjZTgyYTJhLi4xODRiNTUxZDQ4ZTljMjMxZWEwMmE3ODc1NmZlOTZmZWQzZTU2NjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKQEAgLTQwLDggKzQwLDYgQEAgdHlw
ZWRlZiBfTnVsbF90ZXJtaW5hdGVkXyB3Y2hhcl90KiBCU1RSOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLSAgICBjbGFzcyBVUkw7Ci0KICAgICBjbGFzcyBCU3RyaW5nIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIEJTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggNmZmODllYzE4MGQ1ODM1YzU5MTQw
ZmM2YTM4N2Y0N2IxMjViMGEzMi4uNzkwYTgyZjhiNjcxMTAwYTE2MmU1M2VkODk3OTdjZDkwNzhl
ZmZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFV0aWxpdGllc1dpbi5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkNsaXBib2Fy
ZFV0aWxpdGllc1dpbi5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5o
IgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3
aW5pbmV0Lmg+IC8vIGZvciBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSAogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBtYXJrdXBUb0NGSFRNTChj
b25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5nJiBzcmNVUkwsIFZlY3RvcjxjaGFyPiYg
cmUKICAgICBjb25zdCBjaGFyKiBzdGFydE1hcmt1cCA9ICI8SFRNTD5cbjxCT0RZPlxuPCEtLVN0
YXJ0RnJhZ21lbnQtLT5cbiI7CiAgICAgY29uc3QgY2hhciogZW5kTWFya3VwID0gIlxuPCEtLUVu
ZEZyYWdtZW50LS0+XG48L0JPRFk+XG48L0hUTUw+IjsKIAotICAgIENTdHJpbmcgc291cmNlVVJM
VVRGOCA9IHNyY1VSTCA9PSBibGFua1VSTCgpID8gIiIgOiBzcmNVUkwudXRmOCgpOworICAgIENT
dHJpbmcgc291cmNlVVJMVVRGOCA9IHNyY1VSTCA9PSBXVEY6OmJsYW5rVVJMKCkgPyAiIiA6IHNy
Y1VSTC51dGY4KCk7CiAgICAgQ1N0cmluZyBtYXJrdXBVVEY4ID0gbWFya3VwLnV0ZjgoKTsKIAog
ICAgIC8vIGNhbGN1bGF0ZSBvZmZzZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5kZXggNWNkOWUwZTc1NzMxM2ZmMDIyOWE2
Y2ZiYThlZDY0OTBhODFhZmUyOC4uYzM3ZjNlMmRlMTk2MWU2YTEzMDQ1NDc3Y2NhODY5MjY0ZjAz
MjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uaApAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKLWNsYXNzIFVSTDsKIAogSEdM
T0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFN0cmluZyYpOwogSEdMT0JBTCBjcmVhdGVHbG9i
YWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRleCAxZGZhNTBiNTMyZGQ4YjVhZjY2Njc1Zjg0NDlmZTU0
MTkxMTc0ZWZmLi5hNmI2NzJmYzcyN2ZlODM3OWEyZDBmN2UwNDYwNzE2OTYwY2ZiYjg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAtMzQsMTIg
KzM0LDEyIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFduZERD
LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdHJp
bmdUcnVuY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4
dFJ1bi5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXh0UmVuZGVyZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dp
bi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAw
Njk5Nzk5MDYzMWU1YzM0MzY0NzE4YWU2YWIxNzY1OTRjZGYzNjlkLi5kNTk2N2E1ODIwYzk3YWUy
OGM2MjVhNTBkODAzOGUwMGVlMjVkZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiSFduZERD
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSYW5n
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC00OSw2ICs0OCw3IEBACiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9X
aW5kb3dzRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5k
ZXggMGI2YzQyZWUyZDA4MTY4YmVkZWZjOGYzZDBmOWVhZTZlMWE2YmY1OC4uZjA0MGIwYWY5NmYz
YjhiYmQ5ZjU0OTMyOTMxMmI4ZjRmNzA2OWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5E
YXRhLmgKQEAgLTIwLDEwICsyMCwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmgKaW5kZXggZDA3NzdiMzQ1MGMzYTAyMGFlZmQ0M2E3MjNjYzZjYjEzM2RlYWUw
Yi4uMzMyZjI4NTMxZDM4OGNmZTJjM2Q1OGE5NGMzZjI2MTdkY2I5MTY2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIEhU
TUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JvbGxi
YXI7Ci1jbGFzcyBVUkw7CiAKIGVudW0gY2xhc3MgSGl0VGVzdFByb2dyZXNzIHsgU3RvcCwgQ29u
dGludWUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0
dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQu
Y3BwCmluZGV4IGVkMzMzNWUxMzc0ZDhmNzIyOTI1MmQ1NGNlMDY3Y2MzODQ3NjgxYmQuLjc0Njdm
ZjM4NjU2ODJiOGJlNjNiYjY3ZGViZDcxOWE0YzhiN2UzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNs
dWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5o
IgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKaW5kZXggOTk5
OTZlMDFlZDA3MWFmNTg3MWExZGExNjZjNjMxNDlhMTNiNGU3NC4uNzIyMWRmY2I3ZGRkZTU5MDM5
Mjc2YWRkYzlmMzliZGEyZDc4OTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgU1ZHSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2
ZW50KCkKIFN0cmluZyBTVkdJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlKSBjb25zdAogewogICAgIFVSTCBiYXNlID0gZWxlbWVudCgpLmJhc2VVUkko
KTsKLSAgICBpZiAoYmFzZSAhPSBibGFua1VSTCgpKQorICAgIGlmIChiYXNlICE9IFdURjo6Ymxh
bmtVUkwoKSkKICAgICAgICAgcmV0dXJuIFVSTChiYXNlLCBzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoYXR0cmlidXRlKSkuc3RyaW5nKCk7CiAgICAgcmV0dXJuIGVsZW1lbnQoKS5k
b2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhh
dHRyaWJ1dGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZl
cmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAKaW5kZXgg
Njg1MDRhYTg0ZjI2Y2IxOTNmZjM1ZmEwOGIwYTRmNmQxZTU1ZmMyYy4uZGExM2I3N2I2ZjNkMWI4
MjgzZGNhOTk4OGQ4ODc2ZGQzNmUxNWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VSSVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVy
ZW5jZS5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVPd25lclByb3h5LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlhMaW5rTmFtZXMu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaAppbmRleCA4N2UyODIzZjllNzFiNjdiZDQ4MWU4ZTg4NDExYmFkMDAxMjY0Yjk4Li5jZDNm
ZDBkMWUyNTlkYWI0ZTMzYTY5YWI2YWQxODQ2ZDlhZTVlMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtMjcsNyArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuaAppbmRleCAzZjViYzNhNzU2ZTY4NzkxYmFjOGQzNjgzYjZjM2MxNjc0NmQ5
ZTQyLi4zMmU3MjJiZmEyNzM0NTRjNGI1YTExNGVmODA5NjQzNzUyMzRmODZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKQEAgLTMzLDcgKzMzLDYgQEAg
Y2xhc3MgTGF5b3V0U2l6ZTsKIGNsYXNzIFNWR0ltYWdlOwogY2xhc3MgU1ZHSW1hZ2VGb3JDb250
YWluZXI7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFNWR0ltYWdl
Q2FjaGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCA2OTgwNmJlNjc3
MDNlMmU5NDlmMzQxZDVjOTg2YTg1ZWEyZDdlMjRmLi40Y2ZjZThkNGIwMzc4NTc5MTQyMjY3YWE2
YjgwODc2NzEyNmIwNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKLSNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDY3ZTA2YTFiNzljNThlMDg0
Yzc3YTU2YjJiZjc3OTc4ZjQzNjBlMWYuLjkwYmNiYmI1ZDc1YTk1NTRkNzhkNzViZDA1ZmRlYmQx
N2FhNzkzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ1NCw3ICs0
NTQsNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdl
KQogICAgICAgICAgICAgYmFja2luZy0+c2V0VGlsZVNpemVVcGRhdGVEZWxheURpc2FibGVkRm9y
VGVzdGluZyhmYWxzZSk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6Y2xlYXJEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZygpOworICAgIFdURjo6Y2xlYXJEZWZhdWx0UG9ydEZvclBy
b3RvY29sTWFwRm9yVGVzdGluZygpOwogICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdl
cyhWZWN0b3I8U3RyaW5nPigpKTsKICAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGlu
Z3M6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhmYWxzZSk7CiAgICAgV2ViQ29yZTo6RGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzOjpzZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9yKGZhbHNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KaW5kZXggNmZjZGNiZWRkM2Y3ZGE0Y2M1NDIwYTkz
NjczNDI5NDFhNWMxMTQ5Ny4uN2M1YjdhZDg0MmQ5OThmZTYxYTAxNDIzMDUyYzBhMWU2MGI5MzNm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KQEAgLTMyLDggKzMyLDggQEAKICNp
bXBvcnQgIkV2ZW50SGFuZGxlci5oIgogI2ltcG9ydCAiSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9y
dCAiUmFuZ2UuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogI2lm
IFBMQVRGT1JNKElPUykKIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCkBAIC00NCw3ICs0NCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIEludGVybmFsczo6dXNlclZpc2libGVT
dHJpbmcoY29uc3QgRE9NVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNp
YmxlU3RyaW5nKHVybC5ocmVmKCkpOworICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KHVybC5ocmVmKCkpOwogfQogCiBib29sIEludGVybmFsczo6dXNlclByZWZlcnNSZWR1Y2VkTW90
aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5j
cHAKaW5kZXggNjQ4ZmJkMjZmYWMzNmE2NWM5OTU3YzUxMTU3ODg3NjQ2ZjJkYzI2Mi4uNTExODFk
YWU3MmUxM2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4YTE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBNb2Nr
Q29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2UKIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RVUkwgeyByZXF1ZXN0LnVy
bCgpLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcgfTsKICAgICBpZiAoIW1vZGlmaWVkUmVxdWVz
dFVSTC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJNb2NrQ29u
dGVudEZpbHRlciBmYWlsZWQgdG8gY29udmVydCAlcyB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1v
ZGlmaWVkUmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhD
b250ZW50RmlsdGVyaW5nLCAiTW9ja0NvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgJXMg
dG8gYSAgVVJMLlxuIiwgbW9kaWZpZWRSZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggOWI2ZTk1ZTIxNTQ4MzBjMDAwM2Q2
ZTIxODAwM2FjZWFhMjJmZWQ1MS4uNDkyOWU4YWUzZDE5ZGM4ZWIxMzUwYWQ1ZTE1YzA1MTNmMTY4
MTMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRp
bmF0b3IuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiTW9ja1BheW1lbnRNZXRob2Qu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IGQyNDEyMDZhMjhkZDVmNjQ3MGRh
OWZiODRlOWVkNGZjNzRjMjg3YjAuLjU4MDlmMGJlZGYwZTdhMDcxNzI4ZDA5ZWI5Mjk3NDdjNGI0
ZWUwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHAKQEAgLTM5LDEyICszOSwxMiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmln
Z2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50
aWZpZXJJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgor
I2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9y
dCB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdv
cmtlci5oCmluZGV4IDkwMGMyY2I0MDQ2MmEwZWJlMzcwMjhhMzc1YTYzM2ZlYWY5NTM0ZjEuLjAz
MjFjMmM3ZmVkMjU2NjI4ZmYyNmNlZDkxM2FlYjhhZmMzMGUwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKQEAgLTM1LDggKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIEFic3RyYWN0V29ya2VyIDogcHVibGljIFJl
ZkNvdW50ZWQ8QWJzdHJhY3RXb3JrZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDViOWEwYmUzNjljMjk5YzBmYjc1NDEw
NzhmYzc2NTZkNmRlNzllYzEuLjI4MmRkMDZiYzMzOGExZTA2OWE1YmQ0NmQ4NjNmYzMyOWQwYmE0
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTMy
LDcgKzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUg
IldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZVByb3h5LmgKaW5kZXggMzZiZDAwNzA3ZDBhNjhkYjMwNzYyNzJiYTY1
ZjMwYTNhOTI3ZjFlNy4uODU4NWE1YmZmOTNiMDQ2NjVkZTUzMjFlZDMyYjkyZmZhOTc2YTE3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgK
QEAgLTQyLDcgKzQyLDYgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7Ci1jbGFzcyBVUkw7
CiBjbGFzcyBXb3JrZXI7CiAKIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2VyIGNvbnRl
eHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclBy
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKaW5k
ZXggZGY0MzcxYWUyM2MzMDMwNmVhN2JmNjQwZDI3ZjllMTRiOTc1ZTRiMi4uYTFkM2VhNzU3NmU3
ZWEzNGE2NGNiOTE1NDdkZTc2YWNmNTE4YmRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VySW5zcGVjdG9yUHJveHkuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJX
b3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJMb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oCmlu
ZGV4IDUzYzc3NjE1Njc1NWI3MDZiOWQyNDkzNzE2YTgxMjUyN2ZjYTM1ZjguLjkyY2ZjYzc3MDZm
MDM0ZTU3YjlmODJlOWJhMjdiYTNhNTFhMDlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckxvY2F0aW9uLmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXgg
ZTU3YzMyM2NkZTllNmY0ZjgwYWY5YjI1YjJjZmUxZWUyZTczNzRkOS4uMDRhNDFjMjFjYjJmNzUz
MWZkZTYxOWU0ZDY3ZGQ1NjQ0OTA1Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5oCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCAxYzZhYTE2NWI1OTE4NzE0
N2M4YmE4MDk1NjFiMzAzMTVjODRiMGI3Li44NGYxMWUyNmVlYzZiZjkyMWJiMDY1M2EyYjk1OTIz
NzZjNDNjM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0z
Myw3ICszMyw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTb2Nr
ZXRQcm92aWRlci5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8dXRp
bGl0eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGQ3MTQxMjQ4NWE5
NjkwNDlhZGI0OTY1OTc0ZGJlOTFmNWVlMTkxODkuLjNkYzU0ZjZjNDczZGIzNzY3NTI1ZDFjYTQx
MDNkNWQ2YTU2Yzk2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAt
MzksNyArMzksNiBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKLWNsYXNzIFVSTDsKIGNs
YXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29j
a2V0UHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXIuaAppbmRleCA5YjliY2M4YTIyZjlkNzY3MTI5ODk3ZWMwMWYzN2IyYTU1MjFiN2VkLi43
YjIzOWYzMDdkYTcxZTE1NmQ4N2JhMjM1M2I1MWIxYTMzMzVmZmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmgKQEAgLTMxLDkgKzMxLDkgQEAK
ICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckRhdGEuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaAppbmRleCAxNDNkN2Q5ZTA0NWQ1NGUxMWE4YzZlZDlh
YzE0ZTM3YjE1NmEwNTI5Li5mOTkxZjMyY2U2ZDNhOWIyNTdhNTYxMmI0NjM2NWE2NzlhZTJkMTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5
cGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuY3BwCmluZGV4IDQwZDQwZGFkYTBiMThmMjJhODgzN2NiOTc2OGE0YTk5NmUyZTZiZDIuLjhk
YjljNDE2YmRmNzNjNjg2YWVmMTU4ZDY0ZDYxMDA0MmZlOGVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKQEAgLTQ4LDkgKzQ4LDkgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgog
I2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBD
T05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYo
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBDT05U
QUlORVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0df
RVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAt
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oCmluZGV4IDNiZTk1MDQyNWVhNzgwY2ZmZDViYmVlNzg1ZmE0NTMyYWY5NGEz
ZDcuLjRkNjIwODg5ZjkzNGE3ZWZhMjYwYjMyMDliNGUxNzZiMDJhYjBkMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmgKQEAgLTI5LDExICsyOSwxMSBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwu
aCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyRGF0YS5oCmluZGV4IDcyOGMzN2NmZTYyYTVmZTU2MGFiNmM0ZWIxODY0ZjA0NDRj
ZjkzNmUuLmNlMzYxZDNmM2QwZjM4NzNhODZkYzhhOTM4YmFmMDNmMWQxNjRhNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCkBA
IC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2JEYXRhLmgKaW5kZXggMDg3MGJiNmVmNjAyOTg0NWNkNGE5YjZkZTIzMDBhODgzY2Fh
MWMyMi4uOTNjMmRmNmZmMGQyZjM5OGU4NDEyNjhiZTE5NjY0ZjdhOWNlNjRmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkuY3BwCmluZGV4IDFjM2Q3NDZiMjNkYjkzZTM1NmYyMmU2MzEyMGIxY2Q0ZjRjZGIwYzku
LmJjZGQ4YzQ2OTI3ZGM0MDA2MGIwZGVmOWRlYmVlNWVlYTVlZjE3NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTEhhc2gu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleS5oCmluZGV4IDcxMGY0MTJiNDcyZDhmMTc0MmUwYmVlNDhkNTAy
YmU4OWE5YTAzOTkuLmU2YWY3MzMxYzdiOTU0MzlkNTM5OGE5YThjMzdlMzQ3NmI4ZmRmNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xMDIsNyArMTAyLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXlI
YXNoIHsKIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5PiB7CiAgICAgc3RhdGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXk6OmVtcHR5S2V5KCk7IH0KIAotICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBz
bG90KSB7IHNsb3Quc2V0U2NvcGUoV2ViQ29yZTo6VVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkp
OyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29wZShVUkwoSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHJldHVybiBz
bG90LnNjb3BlKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA1MDUyMGI2YTE0MWIxODNmMDQ4ZGU2MDkzMjlmOWNj
ODFmMjU0ODcwLi42MjYxN2NiODdhMTBjMTVjNTIzOGUwYzBjYWE3NjdmMmJlOGFjODJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUg
IkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUg
IlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCBhY2Q2NWU5YzgwYTA2N2YyNzJhNThlMWQ5
NzM1YzExZmU2NTEyYTk0Li4xZmI0MTVlMmQyZDA4NjUzZWZjYTI3MWJlOWM4ZjBlYWU0NTRmZjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaAppbmRleCBkZTIyYzc5ZjhlOGQwZTJiODE3MjRmNjUxMTFh
OWYxMGE1ZDIwMzY5Li4zMjEwZTMyOTllNmZjYjgzMmZjMzljOGVkNmNhOGU2Njc4YmM2YmMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJD
b29raWVNYW5hZ2VyLmgKQEAgLTQwLDcgKzQwLDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgQ29va2llOwogfQogCkBAIC03OCw5ICs3Nyw5IEBA
IGNsYXNzIFdlYkNvb2tpZU1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjCiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZp
ZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIENhbGxiYWNrSUQpOwogCiAgICAgdm9p
ZCBzZXRDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENhbGxi
YWNrSUQpOwotICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIG1haW5Eb2N1bWVudFVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWVzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEFs
bENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2ll
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDYWxsYmFja0lEKTsK
IAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kpOwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFj
a0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9X
ZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZTNkZTlkOGNmYWI5
ZmQ1ZjZmYjY4YTJjMDcxMDI2MmE4NTVkYzQ0OC4uMGIxZmQ1NTllMGJlYjI2ZTAwMzc5NDM0YWRh
ZTRlNWM5ZTQ3ZGFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI5
LDkgKzI5LDkgQEAKICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogCiAgICAgdm9pZCBTZXRDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCi0gICAgdm9pZCBTZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJM
IG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9p
ZCBTZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gY29va2llcywgVVJMIHVybCwgVVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBHZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRD
b29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgVVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgdm9pZCBEZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2Vi
Q29yZTo6Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
dm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdhbGxUaW1lIHRpbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2Nv
YS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlckNvY29hLm1tCmluZGV4IGMyYjE0N2M1ZjcyMWI5NTQwNzQ1YjY0OGQyMGJiY2I3Mjg0NzFh
YmUuLjZlOTAyOGRiNWM5OTdiZDJhMzFmZWUxOGEzM2MxMjRiN2ZmMTQyOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNvY29hLm1tCkBAIC0zNCw4ICszNCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RleHRFbmNvZGluZy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvTlNVUkxDb25uZWN0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRl
eCBiNjc2NjE0OWVlZDExZTljMjhiMGUxNDMzYWU2ZGVjMGFkNWQ2OTk3Li40ZTBmN2ZhN2RlNjgz
YmNhMTI2NTg4ZDFjNDEyM2NkNWJhZmE0MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBA
IC03MCw3ICs3MCw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgbWFwSXRlcmF0b3It
PnZhbHVlLmFkZCh1cmwpOwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBib29sIHNob3Vs
ZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlv
bkNoZWNrKQogewogICAgIC8vIFRoZSBjb25uZWN0aW9uIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBp
ZiBOZXR3b3JrUHJvY2VzcyBwcmV2b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJlYXNvbi4KICAgICBC
bG9iRm9yQ29ubmVjdGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29u
bmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTmV0d29y
a0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29y
a0Nvbm5lY3Rpb25UCiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQogCi12b2lk
IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQor
dm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKIHsKICAgICAvLyBUaGUg
Y29ubmVjdGlvbiBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgTmV0d29ya1Byb2Nlc3MgcHJldm91
c2x5IGNyYXNoZWQgZm9yIGFueSByZWFzb24uCiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0
ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9u
KTsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKgogICAgIG1hcEl0
ZXJhdG9yLT52YWx1ZS5hZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1
bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVu
cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9u
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkgbm90IGJlIHJl
Z2lzdGVyZWQgaWYgTmV0d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9yIGFueSByZWFz
b24uCiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9i
bG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2
b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiBjb25uZQogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5yZW1vdmUodXJs
KTsKIH0KIAotdWludDY0X3QgTmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
KQordWludDY0X3QgTmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICgh
bV9ibG9ic0ZvckNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbikgfHwgIW1fYmxvYnNGb3JD
b25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlLmNvbnRhaW5zKHVybCkpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6
Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQCiAg
ICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwogfQogCi1WZWN0b3I8
UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVz
SW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCkKK1ZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4g
TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9ibG9ic0Zv
ckNvbm5lY3Rpb24uY29udGFpbnMoJmNvbm5lY3Rpb24pIHx8ICFtX2Jsb2JzRm9yQ29ubmVjdGlv
bi5maW5kKCZjb25uZWN0aW9uKS0+dmFsdWUuY29udGFpbnModXJsKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9O
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCmluZGV4IGMxOWE2NTllMGVmNDU1YmIxMDg4YmNmODVj
MjlmZGVhYzkzNzI2MzkuLjkwNmI5ZThhNTJmZTRjZmEwMjY2Y2Q5NzFkNzE4Y2UyYzkyNTU0NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJ
L05ldHdvcmtCbG9iUmVnaXN0cnkuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTsKQEAgLTQ2LDI1ICs0NiwyNSBAQCBXVEZfTUFLRV9OT05DT1BZ
QUJMRShOZXR3b3JrQmxvYlJlZ2lzdHJ5KTsKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CiAg
ICAgc3RhdGljIE5ldHdvcmtCbG9iUmVnaXN0cnkmIHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCBy
ZWdpc3RlckZpbGVCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBW
ZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwot
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hv
dWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlv
bmFsbHlGaWxlQmFja2VkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmls
ZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwg
aW50NjRfdCBlbmQpOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB1aW50NjRfdCBibG9i
U2l6ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYp
OworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRl
bnNpb24+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgVmVjdG9y
PFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVj
ayk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBj
b25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsK
KyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGlu
dDY0X3QgZW5kKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJik7CisgICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0g
ICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgYmxvYlVSTCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJs
b2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHZvaWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0Rp
ZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7CiAKLSAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25z
dCBXZWJDb3JlOjpVUkwmKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
Y29uc3QgVVJMJik7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICB+TmV0d29y
a0Jsb2JSZWdpc3RyeSgpOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgSGFzaFNldDxXZWJDb3JlOjpVUkw+PiBCbG9iRm9yQ29ubmVjdGlvbk1h
cDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBI
YXNoU2V0PFVSTD4+IEJsb2JGb3JDb25uZWN0aW9uTWFwOwogICAgIEJsb2JGb3JDb25uZWN0aW9u
TWFwIG1fYmxvYnNGb3JDb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmlu
ZGV4IGQwMzc4N2ZiNGEyNWQ0OWFlYzNlZTY3NzViODc1YmY4YjIwMzAzOTMuLmY1ODRiYzQ2NjA4
NTFjMDBhZmFhYmUxNWZiYjA5OWFhMjlhNmRjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTE1MCwzMiArMTUwLDMyIEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByCiAgICAgdm9pZCBy
ZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICB2b2lkIHBh
Z2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCk7CiAgICAgdm9pZCBzZXREZWZlcnNM
b2FkaW5nKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQgY3Jvc3NPcmln
aW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVkaXJlY3RVUkwpOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVk
KFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZv
aWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsK
ICAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKIAotICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBT
dHJpbmcmIGNvb2tpZVN0cmluZywgYm9vbCYgc2VjdXJlQ29va2llc0FjY2Vzc2VkKTsKLSAgICB2
b2lkIHNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQpOwor
ICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklE
LCBib29sJiByZXN1bHQpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcywgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wmIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCk7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1
cmVDb29raWVzQWNjZXNzZWQpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBk
ZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNz
Q29ubmVjdGlvbkNoZWNrKTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKICAgICB2b2lkIHBy
ZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVCYWNrZWRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSYmKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7Ci0gICAgdm9p
ZCBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7Ci0g
ICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CisgICAgdm9p
ZCBibG9iU2l6ZShjb25zdCBVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7CisgICAgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBv
cmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YUtleSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OwogCiAgICAgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJv
b2wpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oV2ViQ29yZTo6VVJMJiYsIFBBTDo6
U2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90KTsKKyAgICB2b2lkIGNy
ZWF0ZVNvY2tldFN0cmVhbShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRp
dGlvbiwgdWludDY0X3QpOwogICAgIHZvaWQgZGVzdHJveVNvY2tldFN0cmVhbSh1aW50NjRfdCk7
CiAgICAgCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA3NzNkOWQ4ZTEw
MzNiNjJlNDgxMzNiOTYyMGI2MjliZjc4ODZmZWFkLi45ZWZlYTU3NTRiNGRjY2Y2MzNiMWU0MzA0
ZGJhMzc0NGQ3ZGEzZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTM0LDI4ICszNCwyOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJD
b3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmlu
ZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKLSAgICBTZXRDb29r
aWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBh
cnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6
VVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBj
b29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAgICBTZXRDb29raWVz
RnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBTdHJp
bmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKGJvb2wgZW5hYmxlZCkKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1
Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBlbnVtIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKQotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUlu
Zm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
IGNvb2tpZXMpCi0gICAgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAgQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
ZW51bSBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykg
LT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAg
ICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHks
IHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAgIERlbGV0ZUNvb2tp
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQog
Ci0gICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgcGF0aCwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcg
Y29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFZlY3Rv
cjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAg
UmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgc3Jj
VVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykKKyAgICBSZWdpc3RlckZpbGVC
bG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJs
b2JVUkwoVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmlu
ZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBz
cmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogICAgIFByZXJlZ2lzdGVy
U2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoVmVjdG9yPFN0cmlu
Zz4gZmlsZVBhdGhzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4dGVu
c2lvbkhhbmRsZXMpCi0gICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoV2Vi
Q29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRo
LCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoV2ViQ29y
ZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBl
bmQpCi0gICAgVW5yZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCkKLSAgICBCbG9iU2l6
ZShXZWJDb3JlOjpVUkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkKKyAgICBSZWdpc3Rl
ckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChVUkwgdXJsLCBVUkwgc3JjVVJMLCBTdHJpbmcg
ZmlsZUJhY2tlZFBhdGgsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxG
b3JTbGljZShVUkwgdXJsLCBVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkK
KyAgICBVbnJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsKQorICAgIEJsb2JTaXplKFVSTCB1cmwpIC0+
ICh1aW50NjRfdCByZXN1bHRTaXplKQogICAgIFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFZl
Y3RvcjxTdHJpbmc+IGJsb2JVUkxzLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcikKIAogICAg
IFN0b3JlRGVyaXZlZERhdGFUb0NhY2hlKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhS2V5IGtl
eSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCiAKICAgICBTZXRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAotICAgIENyZWF0
ZVNvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICBDcmVhdGVT
b2NrZXRTdHJlYW0oVVJMIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2Fj
aGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCiAKICAgICBFbnN1cmVMZWdhY3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suY3BwCmluZGV4IGNmNGU2NGQ1MDNmMWE5ZWUwYmRjNWUwZDUyOGM0
N2YyOTQyOWE2NDEuLjA1OWExMzAxNDNiYTVmM2E3ZTBkMWViMWIxNDY2ZmE5MWZhMGI5OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAK
QEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDbwogICAgIGlmIChyZXNw
b25zZS5pc0hUVFAwOSgpKSB7CiAgICAgICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwotICAgICAg
ICBpZiAocG9ydCAmJiAhaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJs
LnByb3RvY29sKCkpKSB7CisgICAgICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRG
b3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICAgICAgY2Fu
Y2VsKCk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoeyBTdHJp
bmcoKSwgMCwgdXJsLCAiQ2FuY2VsbGVkIGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIiB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwCmluZGV4IDY1ZWFiYjJiZjNiNTlkMmZkNDdhYTQxMjY1ZGZmNjk5NDhiMzgwZGIu
LmQ3M2E2ZWE2ZmYxMmMzMDRiZmE3NGJhYjk1YmU2YWVlZTY2Yjg5OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAt
NDgsOSArNDgsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMTc5
N2Q3ZTAyNWEwNGRkMjNjZTQ5N2M4MTFhZjI4MWEyNTk3MTI1ZC4uODQ2Y2I0ZDNhZDNiYzk1YTBh
ZWUxYmJlZTA2MDZkMjMxNDVjMWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjsKIAogY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogcHVibGljOgotICAgIE5l
dHdvcmtMb2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1h
cCYmLCBXZWJDb3JlOjpVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBX
ZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIHNob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlKTsKKyAgICBOZXR3b3JrTG9hZENo
ZWNrZXIoV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYs
IFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9s
aWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MgPSBmYWxzZSk7CiAgICAgfk5ldHdvcmtMb2FkQ2hlY2tlcigpOwogCiAgICAgdXNp
bmcgUmVxdWVzdE9yRXJyb3IgPSBFeHBlY3RlZDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3I+OwpAQCAtNjksMTQgKzY5LDE0IEBAIGNsYXNzIE5ldHdvcmtM
b2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsK
IAogICAgIHZvaWQgc2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYmIGhlYWRlcnMpIHsgbV9jc3BSZXNwb25zZUhlYWRlcnMg
PSBXVEZNb3ZlKGhlYWRlcnMpOyB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAg
ICB2b2lkIHNldENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6OlVSTCYmIG1haW5E
b2N1bWVudFVSTCwgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
PiBpZGVudGlmaWVyKQorICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoVVJM
JiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXI+IGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5Eb2N1bWVudFVSTCA9
IFdURk1vdmUobWFpbkRvY3VtZW50VVJMKTsKICAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICB9CiAjZW5kaWYKIAotICAgIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3N0
b3JlZENyZWRlbnRpYWxzUG9saWN5OyB9CiAKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZEluZm9y
bWF0aW9uIHRha2VOZXR3b3JrTG9hZEluZm9ybWF0aW9uKCkgeyByZXR1cm4gV1RGTW92ZShtX2xv
YWRJbmZvcm1hdGlvbik7IH0KQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRDaGVj
a2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogCiAgICAg
dm9pZCBjb250aW51ZUNoZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
VmFsaWRhdGlvbkhhbmRsZXImJik7CiAKLSAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNrKGNv
bnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2so
Y29uc3QgVVJMJikgY29uc3Q7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09S
U1JlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9u
SGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKQEAgLTExOCwxMSAr
MTE4LDExIEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQ7CiAgICAgV2Vi
Q29yZTo6SFRUUEhlYWRlck1hcCBtX29yaWdpbmFsUmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBm
b3IgQ09SUyBjaGVja3MuCiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX2ZpcnN0UmVxdWVz
dEhlYWRlcnM7IC8vIE5lZWRlZCBmb3IgQ09SUyBjaGVja3MuCi0gICAgV2ViQ29yZTo6VVJMIG1f
dXJsOworICAgIFVSTCBtX3VybDsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
IG1fb3JpZ2luOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVyczsKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQotICAgIFdlYkNvcmU6OlVSTCBtX21haW5Eb2N1bWVudFVSTDsKKyAg
ICBVUkwgbV9tYWluRG9jdW1lbnRVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAj
ZW5kaWYKIApAQCAtMTMxLDcgKzEzMSw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICBib29sIG1faXNT
aW1wbGVSZXF1ZXN0IHsgdHJ1ZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIHNpemVfdCBt
X3JlZGlyZWN0Q291bnQgeyAwIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fcHJldmlvdXNVUkw7Cisg
ICAgVVJMIG1fcHJldmlvdXNVUkw7CiAgICAgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5IG1fcHJl
ZmxpZ2h0UG9saWN5OwogICAgIFN0cmluZyBtX2RudEhlYWRlclZhbHVlOwogICAgIFN0cmluZyBt
X3JlZmVycmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAppbmRleCBlYjg4NjY0ODEzOWNjN2I3NTllNzJjNjgxODI4MGI1ZDA0NzEwOWUwLi4w
NmMxYjNhZDRlYWU0Y2Q3ZDQyZDI5MDQ0NTUyOGE5OTRjY2E5MWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNzYsMTMgKzc2LDEz
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFj
a0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAj
ZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiBoYW5kbGVGb3JXcml0aW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZUZvcldyaXRpbmcs
IHVpbnQ2NF90IHJlcXVlc3RJRCkKIHsKICAgICBhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZShXVEZNb3ZlKGhhbmRsZUZvcldyaXRpbmcpKTsKICAgICBpZiAoIWV4dGVu
c2lvbikgewpAQCAtMTAwOCw3ICsxMDA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2Fj
aGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF8KICAg
ICAgICAgY2FsbGJhY2soU3RyaW5nIHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0sIHF1b3RhKTsK
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVy
bCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kpCiB7CiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQogICAgIE5ldHdvcmtMb2FkUGFy
YW1ldGVycyBwYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCmluZGV4IGZiMzc3M2QxZWZlMWQzNDIxNmQ2YWVmY2U0ODUzZWM3ODk5ZGE1
NGMuLmFhYWRiMTMzYzc5ZmZhMTFjMGNmNjgyMzAyZTdiZDBhMGU2MWQzY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTY1LDcgKzY1LDYg
QEAgY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFNX
U2VydmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiBlbnVtIGNsYXNzIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5Owogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwog
c3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKQEAgLTE3Miw3ICsxNzEsNyBAQCBjbGFzcyBOZXR3
b3JrUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2Vy
OjpDbGllbnQKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHF1b3RhKT47CiAgICAg
dm9pZCBjYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VQ
YXJhbWV0ZXJzQ2FsbGJhY2smJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBXZWJD
b3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgdm9pZCBw
cmVjb25uZWN0VG8oY29uc3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kp
OwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9nQ29va2llSW5mb3JtYXRpb247IH0KQEAgLTI5Myw3ICsyOTIsNyBAQCBjbGFz
cyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRN
YW5hZ2VyOjpDbGllbnQKICAgICB2b2lkIHN5bmNBbGxDb29raWVzKCk7CiAgICAgdm9pZCBkaWRT
eW5jQWxsQ29va2llcygpOwogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYs
IHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldElnbm9y
ZVRMU0Vycm9ycyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFjNzNiZWQ0MmUyZDQ1YTdjZThj
MWZjNDRiM2M3NmYyYmIyYTllYmUuLjc4ZjljYjI5ODZkMzA0YzViMDJlZjgzNWI3MTk3MjBjNDMw
ZTIzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNzcsOSArNzcsOSBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkR2V0U2FuZGJveEV4dGVuc2lvbnNG
b3JCbG9iRmlsZXModWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5IGV4dGVuc2lvbnMpCiAjZW5kaWYKIAotICAgIFdyaXRlQmxvYlRvRmlsZVBh
dGgoV2ViQ29yZTo6VVJMIGJsb2JVUkwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgV3JpdGVCbG9i
VG9GaWxlUGF0aChVUkwgYmxvYlVSTCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIFByZWNvbm5l
Y3RUbyhXZWJDb3JlOjpVUkwgdXJsLCBlbnVtIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBQcmVjb25uZWN0VG8oVVJMIHVybCwg
ZW51bSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0Jsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3Qs
IHVpbnQ2NF90IGNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkNjM3Mzhh
ZWVjOGEzNTM1ZDA5NjEwMzY5ZTc4NjQ5MWIxZTlkMmY5Li4yNzQzZTEyOWM4NzlmNmIwYzI1YzIx
MWJhMDA4OTM5NzhhM2EwYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC02NSw3ICs2
NSw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIDogcHVibGljIE5ldHdv
cmtMb2FkUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4+IGZyYW1lQW5jZXN0b3JPcmlnaW5zOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKLSAgICBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMOworICAgIFVSTCBtYWluRG9j
dW1lbnRVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IGQxYzY4ODllYTY0OGNjYWNmMDhhYzE0YmU3YjZjNTJjYTNiMDNkMzYuLjQzYWVk
NTQ2ZGVmNjBlOGFkY2NlZmMxMzlhNzJmODZhZmY3NWRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk3
Niw3ICs5NzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3Jt
YXRpb24oKSBjb25zdAogICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKCJOZXR3b3JrUmVzb3VyY2VM
b2FkZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2Ft
ZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51
cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlE
KCksIGlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZv
cm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZv
aWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRp
b24oKSk7CiAKQEAgLTEwMDMsNyArMTAwMyw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29r
aWVJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPCiAj
dW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5m
b3JtYXRpb25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRP
YmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVu
dGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhZmIwZTlj
Nzk1NjYzZWFiMDVlYzRhZjRmMzgyNTRiNzdmYWVjMWRhLi5mODc0ZjhkYmE2ZTljNWU1NjEwZjcz
NGQzNGNkNDc2MDFiMDRhODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRpYyBib29sIHNob3Vs
ZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3Jt
YXRpb24oY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAog
cHJpdmF0ZToKQEAgLTEzNCw3ICsxMzQsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIg
ZmluYWwKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50
cnk+JiYpOwogICAgIHZvaWQgY29udGludWVQcm9jZXNzaW5nQ2FjaGVkRW50cnlBZnRlckRpZFJl
Y2VpdmVSZXNwb25zZShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogCi0g
ICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JY
RnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIGJvb2wgc2hvdWxk
SW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIGVudW0gY2xhc3MgRmlyc3RMb2FkIHsg
Tm8sIFllcyB9OwpAQCAtMTY5LDcgKzE2OSw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRl
ciBmaW5hbAogCiAgICAgLy8gQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAgdm9pZCBh
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYsIHVuc2lnbmVkIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9y
dChXZWJDb3JlOjpVUkwmJiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQoVVJMJiYsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4m
JikgZmluYWw7CiAgICAgdm9pZCBlbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChX
ZWJDb3JlOjpTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBsb2dTbG93Q2FjaGVSZXRyaWV2ZUlmTmVlZGVkKGNvbnN0IE5ldHdvcmtDYWNoZTo6
Q2FjaGU6OlJldHJpZXZlSW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggNDJkMzZiYzRjYzNmZTQzMmYzNTI0
YzgzYjBjOWY4ODRlOGQ3NDQzYy4uYzVhNjJjNjhmZTlkYTY1NmU0MjMzZmJkMTM2OWEyYzY2MWUy
OWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRTdHJlYW0uY3BwCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gTmV0d29y
a1NvY2tldFN0cmVhbTo6Y3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25B
dWRpdFRva2VuJiYgYXVkaXREYXRhKQorUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtT
b2NrZXRTdHJlYW06OmNyZWF0ZShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYm
IGF1ZGl0RGF0YSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU29ja2V0U3Ry
ZWFtKFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBpZGVudGlm
aWVyLCBjb25uZWN0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggOTA2ZTU4
ZWJmNTc0MjVkNjgzNzcwODkxNjg1ZmRhYmQyYTgzN2JjOC4uMzI2ODcxNmY0NDY5YzA5OTNmMjU5
N2QwOWNiZTE1ODhlNmYyM2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKQEAgLTM5LDE0ICszOSwxMyBAQCBjbGFzcyBEYXRh
UmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0
d29ya1NvY2tldFN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRTdHJlYW0+
LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmLCBQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRf
dCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2Vu
JiYpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFVSTCYmLCBQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRf
dCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2Vu
JiYpOwogICAgIH5OZXR3b3JrU29ja2V0U3RyZWFtKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtNjcsNyArNjYsNyBA
QCBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Nv
Y2tldFN0cmVhbT4sIHB1YmxpYyBJUEM6OgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGZpbmFsOwogCi0gICAgTmV0d29ya1NvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwm
JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWlu
dDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRU
b2tlbiYmKTsKKyAgICBOZXR3b3JrU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0
aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogCiAgICAgdWlu
dDY0X3QgbV9pZGVudGlmaWVyOwogICAgIElQQzo6Q29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDlmMGM2Yjg2YjQyMGY0
NTViZmZjMmRlNmI5NGViZTdjOGJlMTQzYTAuLmQ0NTQzZjIzNWI5MDQ3YzU3MDljODFmZmRhMzg2
MWM1OWY3ODQyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAg
LTM2LDcgKzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1cml0
eVBvbGljeTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTEsNyArNTAsNyBAQCBjbGFzcyBQaW5nTG9hZCBmaW5hbCA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxQaW5nTG9hZD4sIHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQwogcHJp
dmF0ZToKICAgICB+UGluZ0xvYWQoKTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgY3VycmVu
dFVSTCgpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgY3VycmVudFVSTCgpIGNvbnN0OwogICAgIFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5KCkgY29u
c3Q7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgK
aW5kZXggMmNhNjYyNWQxYzAwZTZkMjdkNTI1ODg2MTcyMWZjYzUwYjUzNGI1NS4uOWQxNzAzNzg5
NGY1YjUxMTAzOGRlMDZiYWQwOWRkN2Y2MzRjN2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaApAQCAtOTAsOCArOTAsOCBAQCBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rp
b24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ogog
ICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwg
U3RyaW5nJiYgcmVmZXJyZXIpOwogICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7
CiAKLSAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNo
UmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9w
T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7Ci0gICAgdm9pZCBnZXRSZWdp
c3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGNsaWVudFVSTCk7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBy
ZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpOworICAgIHZvaWQg
Z2V0UmVnaXN0cmF0aW9ucyh1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3Qg
VVJMJiBjbGllbnRVUkwpOwogCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCmluZGV4IDA2MTk1YjhhZDE5NDYxOGNkZmY2ZmZlOWQ1NzVlOWYzYTQ0NGE3ZWQuLjI5NGJk
NTk5ZDQwYmNjMjExODRkOTdkN2FkNTBjYmM4YzMwMWEyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsOSArMzYsOSBAQCBt
ZXNzYWdlcyAtPiBXZWJTV1NlcnZlckNvbm5lY3Rpb24gewogCiAgICAgRGlkUmVzb2x2ZVJlZ2lz
dHJhdGlvblByb21pc2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBrZXkp
CiAKLSAgICBNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0
Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0
b3BPcmlnaW4sIFdlYkNvcmU6OlVSTCBjbGllbnRVUkwpCi0gICAgV2hlblJlZ2lzdHJhdGlvblJl
YWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJM
IGNsaWVudFVSTCkKLSAgICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3Ry
YXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKKyAgICBNYXRjaFJlZ2lz
dHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmll
ciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGll
bnRVUkwpCisgICAgV2hlblJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3Ry
YXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKKyAgICBHZXRSZWdpc3RyYXRpb25zKHVp
bnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKICAg
ICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSB0b3BPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSBkYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyPiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KQogICAgIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpp
bmRleCBkODZhYjYwOTM5Nzc2NWM1YmJmYTc5MzU0YTExNWI3Yzc0OTFkMjdlLi42MTE2OTJkMTk0
OTk3MmZlYjFlM2NlODViODhiODU4NTU5ZmU2NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1
LDcgKzM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsK
ICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
c3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIpOwogICAgIE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25z
KTsKICAgICBDbGFpbSh1aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgU2V0
U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgV2ViQ29yZTo6VVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgV2ViQ29yZTo6VVJMIHJl
c3BvbnNlVVJMLCBTdHJpbmcgbWltZVR5cGUpOworICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0
cmluZyBzY3JpcHQsIFVSTCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVUeXBlKTsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA1NWEw
OGJjMDhjMDhkMWQ4YThhYzg2MjI4ZGY2NTAxYTkxNTlhODdhLi5iMTliZmQxMDA1NzI2NzY0MjE2
NzAwZjViMzg0YzZiZWVmMTQzMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMzQsNyArMTM0
LDcgQEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3IKIH0KIAogCi12b2lkIEVuZ2luZTo6cmV0cmll
dmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpVUkwmJiB1cmwsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRz
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCwg
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGZyb20oc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyLCB1cmwgPSBXVEZNb3ZlKHVybCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAg
ICAgICAgIGVuZ2luZS5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHVy
bCksIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEVuZ2luZTo6
cmV0cmlldmVDYWNoZXMoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2
NF90IHVwZGF0ZQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsLCBSZWNvcmRzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIHJlYWRDYWNoZShjYWNoZUlkZW50aWZpZXIsIFt1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA4
YzJlOGNjZTE0ZDgxMjkwOTdmNzFhYzIxZTI2ZTM2MWZkNmQ2ODMzLi43ZTE0MjI1YmVlNTBhOTc3
YjVmYzkyNTE0NjU0NjdiYjM0ZDgzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTY1LDcgKzY1LDcg
QEAgY2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiwgcHVibGljIENhbk1h
a2VXZWFrUHRyPEVuZ2luZT4gewogICAgIHN0YXRpYyB2b2lkIHJlbW92ZShQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CiAgICAgc3RhdGljIHZvaWQgcmV0cmlldmVDYWNoZXMo
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCB1aW50NjRfdCB1cGRhdGVD
b3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwog
Ci0gICAgc3RhdGljIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlUmVjb3JkcyhQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBwdXRS
ZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVN
YXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYs
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwog
CkBAIC0xMDQsNyArMTA0LDcgQEAgY2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5n
aW5lPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEVuZ2luZT4gewogICAgIHZvaWQgY2xlYXJNZW1v
cnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNl
bnRhdGlvbigpOwogCi0gICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHND
YWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYp
OwogICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5n
UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5o
CmluZGV4IDdmYjZlMDgxOGVjMjQxNTk1ZjgyYzY3NzJjODRiNWUzMjBjZjc2MTUuLjg5ODAxOGU0
ZWEzN2ZiMTJmYjYzMmIxOTJmZThhZWExYzcxNDY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RydWN0IFJlY29yZEluZm9ybWF0aW9uIHsKIAogICAgIHVp
bnQ2NF90IHNpemUgeyAwIH07CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsOworICAgIFVSTCB1cmw7
CiAgICAgYm9vbCBoYXNWYXJ5U3RhciB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4gdmFyeUhlYWRlcnM7CiB9OwpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBDYWNoZSB7CiAg
ICAgY29uc3QgU3RyaW5nJiB1bmlxdWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVOYW1l
OyB9CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6
OlVuaW5pdGlhbGl6ZWQ7IH0KIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCByZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJbmZvIGluZm8oKSBjb25zdCB7IHJldHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07IH0K
IAogICAgIHZvaWQgcHV0KFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYm
LCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsK
QEAgLTk0LDggKzk0LDggQEAgY2xhc3MgQ2FjaGUgewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PERlY29kZWRSZWNvcmQ+IGRlY29kZVJlY29yZEhlYWRlcihjb25zdCBOZXR3b3JrQ2FjaGU6OlN0
b3JhZ2U6OlJlY29yZCYpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlv
bj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIGNvbnN0IFZlY3Rv
cjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYp
IGNvbnN0OworICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNv
bnN0IFVSTCYpOworICAgIGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNG
cm9tVVJMKGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIFJlY29yZEluZm9ybWF0aW9uJiBhZGRSZWNv
cmQoVmVjdG9yPFJlY29yZEluZm9ybWF0aW9uPiosIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpSZWNvcmQmKTsKIAogICAgIHZvaWQgc3RvcmVSZWNvcmRzKFZlY3RvcjxXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
SWRlbnRpZmllcnNDYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
Y3BwCmluZGV4IDI5YjM4YjFhMmUzZWJiNDExNzcyYTJhZWFhYmRjZWZiM2NkNGRlNzMuLmM2MmNi
M2FiODU3NDhhNWIwYzg5ZTU3YjE1Y2YxYzA1NmQ4NzEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHJlcQogICAgIH0pOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJl
dHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCkK
K3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgVVJMJiYgdXJsKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInJldHJpZXZlUmVjb3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hlICUiIFBSSXU2NCwgcmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7CiAgICAgRW5naW5lOjpyZXRyaWV2ZVJl
Y29yZHMoc2Vzc2lvbklELCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW2Nvbm5lY3Rp
b24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVl
c3RJZGVudGlmaWVyXShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uaAppbmRleCBiYzg4MGY1ZWI1ODlhZWRjZmVlNDVhMjM0MTgzOGIyNTNk
YmE2MTA0Li42YTNkZGM2M2QyYTA4ODVjYTRjNTE0MjVlNTZjM2E1Y2M5NjgzYTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdAogICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBy
ZW1vdmVSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2
b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlm
aWVyLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgdWludDY0X3QgdXBkYXRlQ291bnRlcik7CiAK
LSAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYpOwor
ICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJik7CiAgICAgdm9pZCBk
ZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMo
UEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IGUzMTA3ZTIwMTQ2ZDU5MDAzYjIwNmIxZGVkZjZmODYzY2I4YzU1ZWUuLjYwZTM5YWEyYzQw
NWRjYzk4YWFhOTIwMDk0YWUxMGQ4ZWFiNTQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2FnZXMg
LT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiB7CiAgICAgQ2xlYXJNZW1vcnlSZXByZXNl
bnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbik7CiAgICAgRW5naW5lUmVw
cmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllcik7CiAKLSAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpVUkwgdXJsKTsKKyAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBVUkwgdXJsKTsKICAgICBEZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6
OkNhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIFB1dFJlY29yZHMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3Jk
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5oCmluZGV4IGYxNWFkNmJkMGFkYzhjNzM1OGMxYTk0OTk4MGQ4NDA5ZTYyODMzYTQuLjAx
N2FkNjNlMmM5ZWI3MzM0NWM1NzYxZDlhYTQ3YmRmZjY5ZTMzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMzcsNyArMzcs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCBhMTU1
ZTlmMmUzYWUxMzgxNDQzYTRhMGNlMGIyNDA3NTdlNGE2OWViLi5kMDY2YTg5NWI5NDA1ODFkZWE4
Y2MxM2JhNDQyMzQ1NzllNTZkZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI5
NCw3ICsyOTQsNyBAQCBzdGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFn
bm9zdGljS2V5KFVzZURlY2lzaW9uIGRlY2lzaW9uKQogCiB2b2lkIFN0YXRpc3RpY3M6OnJlY29y
ZFJldHJpZXZlZENhY2hlZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXks
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVXNlRGVjaXNpb24gZGVj
aXNpb24pCiB7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOwor
ICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAoZGVjaXNpb24gPT0g
VXNlRGVjaXNpb246OlVzZSkgewogICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQ
cm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIGlzIGluIHRoZSBjYWNoZSBhbmQgaXMg
dXNlZCIsIHdlYlBhZ2VJRCwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAg
ICAgICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhSZXN1bHQod2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5ldHdv
cmtDYWNoZUtleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJldHJpZXZhbEtl
eSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MsIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZTo6WWVzKTsKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnJlY29y
ZFJldHJpZXZlZENhY2hlZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXks
CiAKIHZvaWQgU3RhdGlzdGljczo6cmVjb3JkUmV2YWxpZGF0aW9uU3VjY2Vzcyh1aW50NjRfdCB3
ZWJQYWdlSUQsIGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgp
OworICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBMT0coTmV0d29ya0Nh
Y2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIHdhcyBzdWNj
ZXNzZnVsbHkgcmV2YWxpZGF0ZWQiLCB3ZWJQYWdlSUQsIHJlcXVlc3RVUkwuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOwogCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dn
aW5nS2V5czo6bmV0d29ya0NhY2hlS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5
czo6cmV2YWxpZGF0aW5nS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0UGFz
cywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5oCmluZGV4IGVmMjUyYTFjN2I5YzZiZDU2ODA5NzMwYzJkMDQ5MzM1MzFmMDRjOWIu
LjQzOTIxYTAwMjRlOTdkZDM2ZjBkMjIxODUxZWM0YWU5ODc2MWExNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2Vz
RW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmgKQEAgLTIzLDE1ICsyMywxNCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnlfaAotI2RlZmluZSBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeV9oCisj
cHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFM
SURBVElPTikKIAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CkBAIC01MCw3ICs0OSw3IEBAIGNsYXNz
IFN1YnJlc291cmNlSW5mbyB7CiAgICAgV2FsbFRpbWUgZmlyc3RTZWVuKCkgY29uc3QgeyByZXR1
cm4gbV9maXJzdFNlZW47IH0KIAogICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVy
biBtX2lzVHJhbnNpZW50OyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5Rm9y
Q29va2llcygpIGNvbnN0IHsgQVNTRVJUKCFtX2lzVHJhbnNpZW50KTsgcmV0dXJuIG1fZmlyc3RQ
YXJ0eUZvckNvb2tpZXM7IH0KKyAgICBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkg
Y29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29v
a2llczsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJz
KCkgY29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVy
czsgfQogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KCkgY29uc3Qg
eyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9wcmlvcml0eTsgfQogCkBAIC02NSw3
ICs2NCw3IEBAIGNsYXNzIFN1YnJlc291cmNlSW5mbyB7CiAgICAgV2FsbFRpbWUgbV9maXJzdFNl
ZW47CiAgICAgYm9vbCBtX2lzVHJhbnNpZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTYW1l
U2l0ZSB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7
CisgICAgVVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCBtX3JlcXVlc3RIZWFkZXJzOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5
IG1fcHJpb3JpdHk7CiB9OwpAQCAtMTA3LDQgKzEwNiwzIEBAIGNsYXNzIFN1YnJlc291cmNlc0Vu
dHJ5IHsKIH0gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNoZQogCiAjZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQotI2VuZGlmIC8vIE5ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcAppbmRleCA5NjYx
NjhiNGUwNzgxMjQ4ZTU1NjgxZmY0Yjc3N2U2ZTE2MDMwOTQ1Li5iMWMwZmIxMTFiZDViZDYxMTQ4
OTk4YjRiOTdhN2YwZjNlM2NhMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwCkBAIC0zNiw5
ICszNiw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVz
cG9uc2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0JyaWdhbmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
UGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtODEsOCArODEsNyBAQCBSZXF1ZXN0OjpSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogUmVxdWVzdDo6b3BlcmF0b3IgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0KCkgY29uc3QKIHsKLSAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKHVy
bCk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocGFyc2VyLnJlc3VsdCgp
LCByZWZlcnJlciwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xp
Y3k+KHBvbGljeSkpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFVSTCh7
IH0sIHVybCksIHJlZmVycmVyLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeT4ocG9saWN5KSk7CiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKG1ldGhvZCk7
CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpCkBAIC0xMTgsOCArMTE3
LDcgQEAgUmVzcG9uc2U6OlJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogCiBSZXNwb25zZTo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSgpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcih1cmwpOwotICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UocGFyc2VyLnJlc3VsdCgpLCBtaW1lVHlw
ZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUpOworICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKHsgfSwgdXJsKSwgbWltZVR5cGUsIGV4cGVjdGVkTGVu
Z3RoLCB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICByZXNwb25zZS5zZXRIVFRQVmVyc2lvbih2ZXJz
aW9uKTsKICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOwogICAgIHJlc3Bv
bnNlLnNldEhUVFBTdGF0dXNUZXh0KHJlYXNvbik7CkBAIC0xNTIsOCArMTUwLDcgQEAgRXJyb3I6
OkVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiBFcnJvcjo6b3Bl
cmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJM
UGFyc2VyIHBhcnNlcihmYWlsaW5nVVJMKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBwYXJzZXIucmVzdWx0KCksIGxvY2FsaXplZERlc2NyaXB0
aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlPih0eXBlKSk7Cisg
ICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcihkb21haW4sIGVycm9yQ29kZSwgVVJMKHsg
fSwgZmFpbGluZ1VSTCksIGxvY2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yOjpUeXBlPih0eXBlKSk7CiAKICAgICByZXR1cm4gZXJyb3I7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0Nh
cHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDI3Njg5ZWUzYjcyMzk4ZDg1MTIwZjczNjM1
N2MwMDcyNDIyODllOGUuLmQ1NjVhNGVhMzc3MWU0NjM3OTczZjcxOWNhMTk4YTI4YzU1N2UwZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3Jr
Q2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpbmNs
dWRlICJOZXR3b3JrQ2FwdHVyZUxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZVJl
c291cmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxpdGVyYXRv
cj4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAg
LTE0Niw3ICsxNDYsNyBAQCBSZXNvdXJjZSogTWFuYWdlcjo6ZmluZEJlc3RGdXp6eU1hdGNoKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogICAgIFJlc291cmNlKiBi
ZXN0TWF0Y2ggPSBudWxscHRyOwogICAgIGludCBiZXN0U2NvcmUgPSBrTWluTWF0Y2g7Ci0gICAg
Y29uc3QgYXV0byYgcmVxdWVzdFBhcmFtZXRlcnMgPSBXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNl
VVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkpOworICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RQYXJh
bWV0ZXJzID0gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkp
OwogICAgIGZvciAoYXV0byBpUmVzb3VyY2UgPSBsb3dlcjsgaVJlc291cmNlICE9IHVwcGVyOyAr
K2lSZXNvdXJjZSkgewogICAgICAgICBpbnQgdGhpc1Njb3JlID0gZnV6enlNYXRjaFVSTHModXJs
LCByZXF1ZXN0UGFyYW1ldGVycywgaVJlc291cmNlLT51cmwoKSwgaVJlc291cmNlLT5xdWVyeVBh
cmFtZXRlcnMoKSk7CiAgICAgICAgIC8vIFRPRE86IENvbnNpZGVyIGlnbm9yaW5nIGFueSBtYXRj
aGVzIDwgMCBhcyBiZWluZyB0b28gZGlmZmVyZW50LgpAQCAtMTY1LDcgKzE2NSw3IEBAIFJlc291
cmNlKiBNYW5hZ2VyOjpmaW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogLy8gVE9ETzogQ29udmVydCB0byBhbiBpbnRlcmZhY2UgYmFzZWQg
b24gUmVzb3VyY2VSZXF1ZXN0IHNvIHRoYXQgd2UgY2FuIGRvCiAvLyBkZWVwZXIgbWF0Y2hpbmcu
CiAKLWludCBNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyhjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQ
YXJhbWV0ZXJzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXZWJDb3Jl
OjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpCitpbnQgTWFu
YWdlcjo6ZnV6enlNYXRjaFVSTHMoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXVEY6OlVS
TFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBVUkwmIHJl
c291cmNlVVJMLCBjb25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNl
UGFyYW1ldGVycykKIHsKICAgICAvLyBUT0RPOiBjb25zaWRlciByZXF1aXJpbmcgdGhhdCBhbnkg
dHJhaWxpbmcgc3VmZml4ZXMgKGUuZy4sICIuanMiLAogICAgIC8vICIucG5nIiwgIi5jc3MiLCAi
Lmh0bWwiLCBldGMuKSBzaG91bGQgYmUgYW4gZXhhY3QgbWF0Y2guCkBAIC00MTksNyArNDE5LDcg
QEAgU3RyaW5nIE1hbmFnZXI6Omhhc2hUb1BhdGgoY29uc3QgU3RyaW5nJiBoYXNoKQogICAgIHJl
dHVybiBwYXRoOwogfQogCi1TdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21h
aW4oY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCitTdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlp
bmdDb21tb25Eb21haW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHVybC5wcm90b2Nv
bEhvc3RBbmRQb3J0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKaW5kZXggM2M2YjUwMTBk
YTIzNDFlNjgyY2IxY2EyNDAxYTA2NjBmMzljNzQxYS4uYzM2ODE2YzlhODlhMWM3ZWZhZDEwNGYx
YjAzOTA4ODM2ZGNhN2YzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtMjksOCArMjks
OCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04Miw3
ICs4Miw3IEBAIGNsYXNzIE1hbmFnZXIgewogICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgb3BlbkNh
Y2hlRmlsZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUp
OwogCiAgICAgU3RyaW5nIHJlcXVlc3RUb1BhdGgoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7Ci0gICAgc3RhdGljIFN0cmluZyB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbihjb25z
dCBXZWJDb3JlOjpVUkwmKTsKKyAgICBzdGF0aWMgU3RyaW5nIHVybElkZW50aWZ5aW5nQ29tbW9u
RG9tYWluKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgogICAgIE1hbmFnZXIoKSA9IGRlZmF1bHQ7
CkBAIC05MCw3ICs5MCw3IEBAIGNsYXNzIE1hbmFnZXIgewogCiAgICAgUmVzb3VyY2UqIGZpbmRF
eGFjdE1hdGNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIFJlc291cmNl
KiBmaW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0g
ICAgaW50IGZ1enp5TWF0Y2hVUkxzKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29u
c3QgV2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVxdWVzdFBhcmFtZXRlcnMs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzb3VyY2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNl
cjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNlUGFyYW1ldGVycyk7CisgICAgaW50IGZ1enp5TWF0
Y2hVUkxzKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVu
Y29kZWRGb3JtJiByZXF1ZXN0UGFyYW1ldGVycywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCwgY29u
c3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpOwog
CiAgICAgdm9pZCBsb2FkUmVzb3VyY2VzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNw
cAppbmRleCA3MDRjMGQ2YWQ0ZjY2YTBjM2NhYjNiYWYzZTk5NTYxZDg4ODRmMDQ1Li5mM2RjMjNj
NTcwNjk0ZWYzYmJmMjViYmJhMzIzNTFjZDgwZjc0MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVz
b3VyY2UuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlc291cmNlOjpSZXNvdXJjZShjb25zdCBTdHJp
bmcmIGV2ZW50RmlsZVBhdGgpCiB7CiB9CiAKLWNvbnN0IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6
OnVybCgpCitjb25zdCBVUkwmIFJlc291cmNlOjp1cmwoKQogewogICAgIGlmICghbV91cmwuaXNW
YWxpZCgpKSB7CiAgICAgICAgIGF1dG8gZXZlbnRzID0gZXZlbnRTdHJlYW0oKTsKQEAgLTUyLDgg
KzUyLDcgQEAgY29uc3QgV2ViQ29yZTo6VVJMJiBSZXNvdXJjZTo6dXJsKCkKICAgICAgICAgICAg
IERFQlVHX0xPR19FUlJPUigiRXZlbnQgc3RyZWFtIGRvZXMgbm90IGhhdmUgYSByZXF1ZXN0U2Vu
dCBldmVudDogZmlsZSA9ICIgU1RSSU5HX1NQRUNJRklFUiwgREVCVUdfU1RSKG1fZXZlbnRGaWxl
UGF0aCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gcmVxdWVzdFNlbnRFdmVu
dCA9IFdURjo6Z2V0PFJlcXVlc3RTZW50RXZlbnQ+KCpldmVudCk7Ci0gICAgICAgICAgICBXZWJD
b3JlOjpVUkxQYXJzZXIgcGFyc2VyKHJlcXVlc3RTZW50RXZlbnQucmVxdWVzdC51cmwpOwotICAg
ICAgICAgICAgbV91cmwgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgICAgICBtX3VybCA9IFVS
TCh7IH0sIHJlcXVlc3RTZW50RXZlbnQucmVxdWVzdC51cmwpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC02OCwxMCArNjcsMTAgQEAgY29uc3QgU3RyaW5nJiBSZXNvdXJjZTo6dXJsSWRlbnRpZnlp
bmdDb21tb25Eb21haW4oKQogICAgIHJldHVybiBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWlu
OwogfQogCi1XZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpxdWVy
eVBhcmFtZXRlcnMoKQorV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpx
dWVyeVBhcmFtZXRlcnMoKQogewogICAgIGlmICghbV9xdWVyeVBhcmFtZXRlcnMpCi0gICAgICAg
IG1fcXVlcnlQYXJhbWV0ZXJzID0gV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRG
b3JtKHVybCgpLnF1ZXJ5KCkpOworICAgICAgICBtX3F1ZXJ5UGFyYW1ldGVycyA9IFdURjo6VVJM
UGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHVybCgpLnF1ZXJ5KCkpOwogCiAgICAgcmV0dXJu
ICptX3F1ZXJ5UGFyYW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCmluZGV4IDc1
NzZjMGQ1ZTAwODQ4OTE2MmMxOGM5NjYwNGZlM2EzODdmMzllNWUuLmQ0OTNmNGE0YTM1YWQ4ZWE2
Y2RiMmRkOGUwMjVkNjkwYzU4OTI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaApAQCAt
MjksOSArMjksOSBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1cmVFdmVudC5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FwdHVyZSB7CkBAIC01NSwxNiArNTUsMTYg
QEAgY2xhc3MgUmVzb3VyY2UgewogcHVibGljOgogICAgIFJlc291cmNlKGNvbnN0IFN0cmluZyYg
ZXZlbnRGaWxlUGF0aCk7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpOworICAgIGNv
bnN0IFVSTCYgdXJsKCk7CiAgICAgY29uc3QgU3RyaW5nJiB1cmxJZGVudGlmeWluZ0NvbW1vbkRv
bWFpbigpOwotICAgIFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0gcXVlcnlQYXJh
bWV0ZXJzKCk7CisgICAgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIHF1ZXJ5UGFyYW1l
dGVycygpOwogICAgIEV2ZW50U3RyZWFtIGV2ZW50U3RyZWFtKCk7CiAKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fZXZlbnRGaWxlUGF0aDsKLSAgICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAgVVJM
IG1fdXJsOwogICAgIFN0cmluZyBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluOwotICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybT4gbV9xdWVyeVBh
cmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZv
cm0+IG1fcXVlcnlQYXJhbWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhcHR1
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGU1YWY0ZjgzZjFiNTAxYjhiM2Q4YTFiYzU3Yzlk
NzM5MDVmYzk5MTcuLjgwYjE0MDM0NzdhNTM5YjZhMGQxY2JiOWE0ZWFiOGJlNWZlM2RkZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmCiAgICAgfQogICAgIAogICAgIC8vIFNob3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIg
YSByZWRpcmVjdCBmcm9tIGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1cmUgb25lLgotICAg
IGlmIChtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVl
c3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJlcXVl
c3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChtX3Nob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0
cHMiKSAmJiBXVEY6OnByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikp
CiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAKICAgICBjb25zdCBh
dXRvJiB1cmwgPSByZXF1ZXN0LnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDdmMThjMDU2
ZjFhMDVkMmY5MDEwZTRhYjg3NTFlMTM0N2M4MmE2ZWIuLjI3MDU5MjVkODczMDhiOGEyYTY0NzAy
OWRmZDc4Yzc2OTVmMWRkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTQ2LDEyICs0NiwxMiBA
QAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVVUkxSZXNwb25z
ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0
Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKQEAgLTM0OCw3ICszNDgsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5T
VVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlkUmVj
ZQogICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpD
cmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgpKSB7CiAKICAgICAgICAgICAgICAg
ICBXZWJDb3JlOjpDcmVkZW50aWFsIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwu
dXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUpOwotICAgICAgICAgICAgICAgIFdlYkNvcmU6OlVSTCB1cmxUb1N0b3JlOworICAg
ICAgICAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICAgICAgICAgIGlmIChhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQw
MSkKICAgICAgICAgICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIHN0
b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IDQwMmVjMWRlMDE5NjJmMGNjZjQyMDQyOTU3MjM3
OTFmN2M2NTcyYTAuLmY1Y2MxYzFlMGFjNmRhODQyOTJjNDhiNDcxYjA4Yzg3YmYyOThlZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NN
YWMubW0KQEAgLTIxNSwxMSArMjE1LDExIEBAIHN0YXRpYyB2b2lkIGNhcmJvbldpbmRvd0hpZGRl
bihXaW5kb3dSZWYgd2luZG93KQogc3RhdGljIGJvb2wgb3BlbkNGVVJMUmVmKENGVVJMUmVmIHVy
bCwgaW50MzJfdCYgc3RhdHVzLCBDRlVSTFJlZiogbGF1bmNoZWRVUkwpCiB7CiAgICAgU3RyaW5n
IGxhdW5jaGVkVVJMU3RyaW5nOwotICAgIGlmICghUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCku
b3BlblVSTChXZWJDb3JlOjpVUkwodXJsKS5zdHJpbmcoKSwgc3RhdHVzLCBsYXVuY2hlZFVSTFN0
cmluZykpCisgICAgaWYgKCFQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5vcGVuVVJMKFVSTCh1
cmwpLnN0cmluZygpLCBzdGF0dXMsIGxhdW5jaGVkVVJMU3RyaW5nKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKCFsYXVuY2hlZFVSTFN0cmluZy5pc051bGwoKSAmJiBsYXVuY2hl
ZFVSTCkKLSAgICAgICAgKmxhdW5jaGVkVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCBsYXVuY2hlZFVSTFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7CisgICAgICAgICps
YXVuY2hlZFVSTCA9IFVSTChVUkwoKSwgbGF1bmNoZWRVUkxTdHJpbmcpLmNyZWF0ZUNGVVJMKCku
bGVha1JlZigpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zOTksNyArMzk5LDcgQEAgc3Rh
dGljIE5TUnVubmluZ0FwcGxpY2F0aW9uICpyZXBsYWNlZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxp
Y2F0aW9uQXRVUkxfb3B0aW9uc18KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChQbHVnaW5Q
cm9jZXNzOjpzaW5nbGV0b24oKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFdlYkNvcmU6OlVSTCh1
cmwpLnN0cmluZygpLCBhcmd1bWVudHMpKSB7CisgICAgaWYgKFBsdWdpblByb2Nlc3M6OnNpbmds
ZXRvbigpLmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5nKCksIGFyZ3VtZW50
cykpIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgKmVycm9yID0gbmlsOwogICAg
ICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVVSTC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IDdiMDFkMGU5
MjA1NjI4Y2QzYzAwMmVmNTdlZjExZTgxNGRjY2NiOTEuLmJiZDQyM2JjZjU3MTVlNGFkNzBiZjUy
ZGVmOGMyYzMwYzQxYmYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElVUkwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTIzLDMy
ICsyMywzMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgV2ViVVJMX2gKLSNkZWZpbmUgV2ViVVJMX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJM
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmlu
ZyYgc3RyaW5nKQorICAgIHN0YXRpYyBSZWY8QVBJOjpVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0
cmluZyYgc3RyaW5nKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKHN0
cmluZykpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8VVJMPiBjcmVhdGUoY29uc3QgVVJMKiBi
YXNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgcmVsYXRpdmVVUkwpCisgICAgc3RhdGljIFJlZjxB
UEk6OlVSTD4gY3JlYXRlKGNvbnN0IEFQSTo6VVJMKiBiYXNlVVJMLCBjb25zdCBXVEY6OlN0cmlu
ZyYgcmVsYXRpdmVVUkwpCiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAg
IGJhc2VVUkwtPnBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVS
TCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwu
Z2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVV
UkwpOwogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxTdHJpbmcgPSBhYnNv
bHV0ZVVSTC0+c3RyaW5nKCk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKFdU
Rk1vdmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJzb2x1dGVVUkxT
dHJpbmcpKTsKICAgICB9CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmlzTnVsbCgpOyB9CkBAIC01Niw3ICs1NSw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmpl
Y3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgc3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KIAotICAgIHN0YXRpYyBib29sIGVxdWFs
cyhjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKKyAgICBzdGF0aWMgYm9vbCBlcXVhbHMoY29u
c3QgQVBJOjpVUkwmIGEsIGNvbnN0IEFQSTo6VVJMJiBiKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGEudXJsKCkgPT0gYi51cmwoKTsKICAgICB9CkBAIC0xMDYsMTMgKzEwNSwxMyBAQCBjbGFzcyBV
UkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICB9
CiAKLSAgICBVUkwoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJMLCBjb25z
dCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAgIFVSTChzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpVUkw+
IHBhcnNlZFVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3N0cmlu
ZyhzdHJpbmcpCiAgICAgICAgICwgbV9wYXJzZWRVUkwoV1RGTW92ZShwYXJzZWRVUkwpKQogICAg
IHsKICAgICB9CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0CisgICAgY29u
c3QgV1RGOjpVUkwmIHVybCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNz
YXJ5KCk7CiAgICAgICAgIHJldHVybiAqbV9wYXJzZWRVUkw7CkBAIC0xMjIsMTMgKzEyMSwxMSBA
QCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAg
IHsKICAgICAgICAgaWYgKG1fcGFyc2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPihXZWJDb3JlOjpV
UkwoKSwgbV9zdHJpbmcpOworICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8
V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmlu
ZyBtX3N0cmluZzsKLSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpVUkw+IG1f
cGFyc2VkVVJMOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdURjo6VVJMPiBtX3BhcnNl
ZFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVJMX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRl
cm4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4u
aAppbmRleCA5YjVjN2Y2NmI0OGI4YTk2YmRkMmRjYmU4OWNhOTBhMTIzZDMwNmFhLi42Njk5NWEw
YTg4NTI2YmFjNTNhYjdkMWNjNTk2MTVhMzIwMjE5ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oCkBAIC0yNyw4ICsyNyw4
IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFVz
ZXJDb250ZW50VVJMUGF0dGVybiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6OlVzZXJDb250CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJl
dHVybiBtX3BhdHRlcm4uaG9zdCgpOyB9CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHNjaGVtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5zY2hlbWUoKTsgfQogICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5pc1ZhbGlkKCk7IH07Ci0gICAgYm9vbCBtYXRjaGVz
VVJMKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRj
aGVzKFdlYkNvcmU6OlVSTCh7IH0sIHVybCkpOyB9CisgICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0
IFdURjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdURjo6
VVJMKHsgfSwgdXJsKSk7IH0KICAgICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXR0ZXJuLm1hdGNoU3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBXVEY6OlN0
cmluZyYgcGF0dGVyblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggNzM2ZTFm
M2U2NjQ1Y2UwZWMyMTJmNmRiOWY4Nzg0M2Q1Y2QxM2RhNS4uMTQ5OTU2M2UzOWFlN2I5ODZkZTE3
MzQ3Njc4ODVmNmFhZDkyOGQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VS
TFJlcXVlc3QuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5o
IgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRGF0YS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCmluZGV4IGI4YThhOTBiY2QzYzM0NWNkNDc1NjUyNzcz
MTQzMmNmY2EwMTdjODcuLjhmMWZhOWFkNmUzNmU5OGFjNDEzZWJhOWVmOTU1M2NhZDQwNjM4Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
Y2YvV0tVUkxDRi5tbQppbmRleCBkZjE5ODNhNjAxNTBkZDdlYWRiYWU4M2QzODgyOGFiYWE3ODBl
MGFlLi5iZDkxYTQ1YjA5YzMxNGVmZjM2MzA1MWNjYjg4MTViZGNiYjZkYjg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2lt
cG9ydCAiV0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS05TVVJMLmgiCi0jaW1wb3J0IDxXZWJDb3Jl
L0NGVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9j
Zi9DRlVSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgV0tf
QVBJX0VOQUJMRUQKQEAgLTU2LDcgKzU2LDcgQEAgV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoQ0ZV
UkwoQ0ZVUkxSZWYgY2ZVUkwpCiAjZW5kaWYKIAogICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAg
V2ViQ29yZTo6Z2V0VVJMQnl0ZXMoY2ZVUkwsIHVybEJ5dGVzKTsKKyAgICBXVEY6OmdldFVSTEJ5
dGVzKGNmVVJMLCB1cmxCeXRlcyk7CiAKICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQ
SSh1cmxCeXRlcy5kYXRhKCkpOwogfQpAQCAtNjksNSArNjksNSBAQCBDRlVSTFJlZiBXS1VSTENv
cHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVSTFJlZikKICAg
ICAvLyBVVEYtOCB3aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0IFdlYktpdCBjbGll
bnRzIG1pZ2h0IGV4cGVjdC4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gV2ViS2l0Ojp0b0ltcGwo
VVJMUmVmKS0+c3RyaW5nKCkudXRmOCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVDRlVS
TEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpLCAwKS5sZWFrUmVmKCk7
CisgICAgcmV0dXJuIFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5sZW5ndGgoKSwgMCkubGVha1JlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCA5ZmU1OTU3MjA0Y2M3OTkz
ZWJjMDg4ODhiZDFmODkzMWVhNGViMDAxLi4zMWY2MWNlN2VhZjhiOWE5OWNiYWFkN2RkMDUzNzVk
YTgxYTI1YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRVUklSZXF1ZXN0LmNwcApAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUgIldlYktpdFVSSVJl
cXVlc3QuaCIKIAogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwCmluZGV4
IGQyNDU1ODkzNmNmNDYwNzU1NTcxMmExNmM5NGZkNDYxZWMwOThhMjMuLjI4N2VlZmQ0ZDljY2Y0
MDAzNjczZGU5N2I4OGQzYzJkNjNjMjM0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNp
bmNsdWRlICJXZWJLaXRVUklSZXNwb25zZS5oIgogCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9u
c2VQcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1
ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAu
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2
ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNl
Lm1tCmluZGV4IGRjMGY5MGYwZjM4NTFhYmYxMDA0ODRiYTU3M2FlNGFmOGU4MGIyMzIuLmJjMmZl
NDllMzBhYTM4MmI0MjNiNTRkYjJiYWQ3MmJiN2Y5N2VlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTMwLDggKzMwLDggQEAKIAogI2lu
Y2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTQ2LDggKzQ2LDggQEAgUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBhcmMKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJBcmNoaXZlUmVzb3VyY2UoV1RGTW92ZShhcmNoaXZlUmVzb3Vy
Y2UpKSk7CiB9CiAKLVdlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6
RGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKQotICAgIDogbV9hcmNoaXZlUmVzb3VyY2UoQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS0+Ynl0ZXMoKSwgZGF0
YS0+c2l6ZSgpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBVUkwpLCBNSU1FVHlwZSwg
dGV4dEVuY29kaW5nLCBTdHJpbmcoKSkpCitXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVS
ZXNvdXJjZShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZykKKyAgICA6IG1fYXJjaGl2ZVJl
c291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEt
PmJ5dGVzKCksIGRhdGEtPnNpemUoKSksIFdURjo6VVJMKFdURjo6VVJMKCksIHVybCksIE1JTUVU
eXBlLCB0ZXh0RW5jb2RpbmcsIFN0cmluZygpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKaW5kZXggNDMzNjM4Yjk0OGRmMDk3OGFi
M2MxYmQxYmExYTNiNzQxZGRmYTZhZi4uZDg2ZGM0YWI3NTBiZjgxY2Y5ZTM2NDNhZTY2OTRmY2Iz
MjQ3ZjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTIwLDcg
KzEyMCw3IEBAIHN0cnVjdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiB7CiAgICAgU3RyaW5nIHRp
dGxlOwogICAgIGJvb2wgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIHsgZmFsc2Ug
fTsKICAgICBib29sIGlzQXV0b2ZpbGxhYmxlVXNlcm5hbWVGaWVsZCB7IGZhbHNlIH07Ci0gICAg
V2ViQ29yZTo6VVJMIHJlcHJlc2VudGluZ1BhZ2VVUkw7CisgICAgVVJMIHJlcHJlc2VudGluZ1Bh
Z2VVUkw7CiAgICAgV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWUgYXV0b2ZpbGxGaWVsZE5hbWUg
eyBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Tm9uZSB9OwogICAgIFN0cmluZyBwbGFjZWhv
bGRlcjsKICAgICBTdHJpbmcgbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tO
U1VSTEV4dHJhcy5tbQppbmRleCAwMTg4Zjc0Nzk4MmE5NDBhNDhhYjg2ZjgyODhhYWIwMDZkZmQx
MWQ3Li41MTliOWQ4M2VkNzY2MWRjNmQ4N2Q2MjllN2M4Yzg1NWIwZWYyYmJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW0KQEAgLTI2LDEzICsyNiwxMSBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAKLSNpbXBv
cnQgPFdlYkNvcmUvQ0ZVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogQGltcGxlbWVudGF0aW9uIE5TVVJMIChXS0V4dHJh
cykKIAogKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5n
JilzdHJpbmcKQEAgLTUwLDcgKzQ4LDcgQEAgKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdU
RlN0cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcgcmVsYXRpdmVUb1VSTDooTlNVUkwKIC0gKFN0
cmluZylfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nCiB7CiAgICAgQ1N0cmluZyBvcmlnaW5h
bERhdGE7Ci0gICAgZ2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXNlbGYsIG9yaWdpbmFs
RGF0YSk7CisgICAgV1RGOjpnZXRVUkxCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpc2VsZiwgb3Jp
Z2luYWxEYXRhKTsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChvcmlnaW5hbERhdGEpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IDlkY2Y2ZjJlMWQ3MTUzM2Fk
NjQ1ZGY2M2RiZjI0MjI2NTc4NGI4YWYuLjUzY2UyZDFhZjA2ZDI1MWM4MDU1YmQyYWQ1MjdmYWE0
Njc2ZWU5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBAIC0zNCw4ICszNCw4
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdHJ1Y3QgQmFja0Zv
cndhcmRMaXN0U3RhdGUgewogc3RydWN0IFNlc3Npb25TdGF0ZSB7CiAgICAgQmFja0ZvcndhcmRM
aXN0U3RhdGUgYmFja0ZvcndhcmRMaXN0U3RhdGU7CiAgICAgdWludDY0X3QgcmVuZGVyVHJlZVNp
emU7Ci0gICAgV2ViQ29yZTo6VVJMIHByb3Zpc2lvbmFsVVJMOworICAgIFVSTCBwcm92aXNpb25h
bFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBkZjk3MzUwZTAzMGM5ODIzNWJh
M2JhZTRhZDVjYjA1NjVjOTRlNjc1Li5hOTE5NjkyZjY5YzIzYjcxMzM1NjY1OWFkMzA0NWQwM2Yw
ZmU5OWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uaCIKIAogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTA0LDggKzEwNCw4IEBA
IGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9jdW1lbnQoY29uc3Qg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYKICAgICBpZiAobWFpbkZyYW1lU3RhdGUuc3RhdGVPYmpl
Y3REYXRhIHx8IG90aGVyTWFpbkZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhKQogICAgICAgICBy
ZXR1cm4gbWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlciA9PSBvdGhlck1haW5G
cmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXI7CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJs
ID0gV2ViQ29yZTo6VVJMKHsgfSwgbWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKLSAgICBXZWJD
b3JlOjpVUkwgb3RoZXJVUkwgPSBXZWJDb3JlOjpVUkwoeyB9LCBvdGhlck1haW5GcmFtZVN0YXRl
LnVybFN0cmluZyk7CisgICAgVVJMIHVybCA9IFVSTCh7IH0sIG1haW5GcmFtZVN0YXRlLnVybFN0
cmluZyk7CisgICAgVVJMIG90aGVyVVJMID0gVVJMKHsgfSwgb3RoZXJNYWluRnJhbWVTdGF0ZS51
cmxTdHJpbmcpOwogCiAgICAgaWYgKCh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgfHwgb3Ro
ZXJVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIodXJsLCBvdGhlclVSTCkpCiAgICAgICAgIHJldHVybiBtYWluRnJhbWVTdGF0ZS5k
b2N1bWVudFNlcXVlbmNlTnVtYmVyID09IG90aGVyTWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1
ZW5jZU51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IGU1MDdiZjg3NTliMTE3ODkwODZlNTBkN2YwNmM1N2RkODM4MGE0ZjYuLjM5
NWVhNzU4ZDAzYzFhMDcxNjBhNmIzNWZmZWRhZTI4MmY5YjgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzcsMTEgKzc3LDExIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9U
aW1pbmdGdW5jdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXgu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxl
U2hlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAzZWViNDQyZTMyN2RjNzkxMmI0M2M0OTYzNmE2
NTc0Y2Y5YmM0NmNlLi45NTQ1MGY0MTFjN2ZiYTAzYzFlZDc2MTA1OWZkYmEzM2JhMDJlNWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtOTMs
NyArOTMsNiBAQCBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBjbGFz
cyBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4Owog
Y2xhc3MgVXNlclN0eWxlU2hlZXQ7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0
aW9uczsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3Jz
LmgKaW5kZXggMjdkMTRlMzFiMzEwODY2YzZmMTM2ZTNhZDhhYWZmODhlMjNiMzg0Mi4uN2Q2MDBj
NmQyM2I1NWRjYzM5NjMwOTkwNDA3Y2U3NDQ0NDZjYjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJy
b3JzLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTQ4LDE4ICs0Nywx
OCBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlcwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxI
YW5kbGVMb2FkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFVSTCYpOwogCiAjaWYgVVNF
KFNPVVApCi1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7CitXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7
CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdURjo6U3RyaW5nJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLVdlYkNv
cmU6OlJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
VEY6OlN0cmluZyYpOwotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJv
cihjb25zdCBXZWJDb3JlOjpVUkwmKTsKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW52YWxpZFBh
Z2VSYW5nZVRvUHJpbnQoY29uc3QgV2ViQ29yZTo6VVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKK1dlYkNvcmU6
OlJlc291cmNlRXJyb3IgcHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgVVJMJik7CitXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGNvbnN0IFVSTCYpOwogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IDE3OWNhNGJlMzdiZWQwZTNkY2NiNWQzMjYzZjNm
MDY5YjA1MjU1NWIuLmMxY2ZjY2YwNWY4NDIwYWMzYjljMjRkYzU3Zjk4NWY3MjI2MzdjNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlbmRlck9iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCBlM2YzMDU2NjY4NjMw
YTRiNWFmZWI5ODRjOWRlNGRlZGU1MDE1YzBiLi4yZWQ3NzQ0YjA4ZGY4ZmJlOWFjNzJmZDQ3NDc2
NGUxY2U2ZDcyNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVu
dENvZGVyc0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVy
c0NGLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvQ0ZVUkxFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKICNpZiBVU0UoRk9VTkRBVElP
TikKQEAgLTU5OSw4ICs1OTksOCBAQCB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDRlVS
TFJlZiB1cmwpCiAgICAgaWYgKGJhc2VVUkwpCiAgICAgICAgIGVuY29kZShlbmNvZGVyLCBiYXNl
VVJMKTsKIAotICAgIFVSTENoYXJCdWZmZXIgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXModXJs
LCB1cmxCeXRlcyk7CisgICAgV1RGOjpVUkxDaGFyQnVmZmVyIHVybEJ5dGVzOworICAgIFdURjo6
Z2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXJsQnl0ZXMuZGF0YSgp
KSwgdXJsQnl0ZXMuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IGRhdGFSZWZlcmVuY2U7CiB9CkBA
IC02MzEsNyArNjMxLDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRy
PENGVVJMUmVmPiYgcmVzdWx0KQogICAgIH0KICNlbmRpZgogCi0gICAgcmVzdWx0ID0gY3JlYXRl
Q0ZVUkxGcm9tQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJ5dGVzLmRh
dGEoKSksIHVybEJ5dGVzLnNpemUoKSwgYmFzZVVSTC5nZXQoKSk7CisgICAgcmVzdWx0ID0gV1RG
OjpjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJs
Qnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6ZSgpLCBiYXNlVVJMLmdldCgpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2Vi
RXJyb3JzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3Bw
CmluZGV4IGU5ZDkyMzkzYzdkNWM2YjNhYmYzZjlmNDRhMDdmNDFhMDA4NDYwZTguLjZhMGRmNTRj
Mzc0NDVkZjY0Y2M1ZDNiNGJiNjEwZWMxZjNjMDY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9XZWJFcnJvcnNHdGsuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViRXJy
b3JzLmgiCiAKICNpbmNsdWRlICJBUElFcnJvci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbi5oCmluZGV4IDNkMDg2ODlmZTE3NmRkN2E2MTcyYTEzN2MwNTgzZGNlYTczNzJmNjMuLmMx
YWI4NWZkNDQxYmMxMjgwNzU0NjYwOTQwOTY4ZjczNmE4ZjY2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbi5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uUmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dEluZGljYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTYwLDggKzYwLDggQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uIHsKICAgICBib29sIHByZXZlbnRUZXh0SW50ZXJhY3Rpb24geyBmYWxzZSB9OwogI2VuZGlm
CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBhZGp1c3RlZFBvaW50Rm9yTm9kZVJlc3BvbmRpbmdU
b0NsaWNrRXZlbnRzOwotICAgIFdlYkNvcmU6OlVSTCB1cmw7Ci0gICAgV2ViQ29yZTo6VVJMIGlt
YWdlVVJMOworICAgIFVSTCB1cmw7CisgICAgVVJMIGltYWdlVVJMOwogICAgIFN0cmluZyB0aXRs
ZTsKICAgICBTdHJpbmcgaWRBdHRyaWJ1dGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
aW5kZXggYmIwZDFjYjYzZDQxZjJlN2JjMzZiYTlmNWQ1ZGFlNWU0MDgxMTU5Mi4uOTBmZGU3ZDA0
YjI3MzA1YTQ2NDM2MTQxYmRiNzdlMTAwNGJkZDA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaApAQCAtMzMsNyArMzMsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsK
IHN0cnVjdCBDb29raWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uLmNwcAppbmRleCA2OGI4N2Q4ODdmZTYzNDJmMGY1MWM5NDMxMmVhMGY0YmNlMTJi
ZjZhLi45MzJiNjI2Nzc3ZjBhZjBhYjU0ZjY0N2JkODFiZmY0Nzg0MzljN2I4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC02OSw3ICs2OSw3
IEBAIHZvaWQgTmF2aWdhdGlvbjo6c2V0Q3VycmVudFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUHJvY2Vzc0lkZW50aWZpZXIKICAgICBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lk
ZW50aWZpZXIgPSBwcm9jZXNzSWRlbnRpZmllcjsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uOjphcHBl
bmRSZWRpcmVjdGlvblVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgTmF2aWdhdGlv
bjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV1RGOjpVUkwmIHVybCkKIHsKICAgICBpZiAo
bV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHVy
bCkKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKaW5kZXggOTdlZTk2ZGRkNmU0N2ExOWFjZGMy
ZjI4NDhmN2E3NjI5N2JkZDFmMi4uZWQwMjk0ZDgyODdlY2Q4NjZiYTZlOTNiODFjNTNmMGI0NGI4
NDlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCkBA
IC03Nyw4ICs3Nyw4IEBAIGNsYXNzIE5hdmlnYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmpl
Y3Q6OlR5cGU6Ok5hdmlnYXRpb24+IHsKICAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIGZyb21JdGVtKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tSXRlbS5nZXQoKTsgfQogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVMb2FkVHlwZT4gYmFja0ZvcndhcmRGcmFtZUxvYWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7IH0KIAotICAg
IHZvaWQgYXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVj
dG9yPFdlYkNvcmU6OlVSTD4gdGFrZVJlZGlyZWN0Q2hhaW4oKSB7IHJldHVybiBXVEZNb3ZlKG1f
cmVkaXJlY3RDaGFpbik7IH0KKyAgICB2b2lkIGFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0IFdU
Rjo6VVJMJik7CisgICAgVmVjdG9yPFdURjo6VVJMPiB0YWtlUmVkaXJlY3RDaGFpbigpIHsgcmV0
dXJuIFdURk1vdmUobV9yZWRpcmVjdENoYWluKTsgfQogCiAgICAgdm9pZCBzZXRXYXNVc2VySW5p
dGlhdGVkKGJvb2wgdmFsdWUpIHsgbV93YXNVc2VySW5pdGlhdGVkID0gdmFsdWU7IH0KICAgICBi
b29sIHdhc1VzZXJJbml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJJbml0aWF0ZWQ7
IH0KQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uPiB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1
cnJlbnRSZXF1ZXN0OwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXI+IG1fY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllcjsKLSAgICBWZWN0b3I8V2ViQ29y
ZTo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CisgICAgVmVjdG9yPFdURjo6VVJMPiBtX3JlZGlyZWN0
Q2hhaW47CiAgICAgYm9vbCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBt
X3Nob3VsZEZvcmNlRG93bmxvYWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1JlZGlyZWN0IHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkFjdGlvbi5oCmluZGV4IGVlY2JmZjRhMmEzZWQ5MGY0NDQwOGNjZDZjYWYyOWRlOThkOTUyZDcu
LjMwODcxYzdhMDk1NTRkNWNiOGE3ZWQ0YWI4MmNiYjE0OGNkZTc4NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaApAQCAtMzEsNyAr
MzEsNyBAQAogI2luY2x1ZGUgIkFQSVVzZXJJbml0aWF0ZWRBY3Rpb24uaCIKICNpbmNsdWRlICJO
YXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBBUEkgewogCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24g
ZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+
CiAgICAgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV90YXJnZXRGcmFtZU5hbWU7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQotICAgIGNv
bnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5h
bFVSTC5pc051bGwoKSA/IG1fb3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KKyAgICBj
b25zdCBXVEY6OlVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5hbFVS
TC5pc051bGwoKSA/IG1fb3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KIAogICAgIFdl
YkNvcmU6Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9u
YXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZTsgfQogICAgIFdlYktpdDo6V2ViRXZl
bnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rp
b25EYXRhLm1vZGlmaWVyczsgfQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0
aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0
aW9uPgogICAgIE5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX21haW5GcmFtZU5hdmlnYXRpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBOYXZpZ2F0
aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0
RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5h
bFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9u
PiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdh
dGlvbikKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6
OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdl
dEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RG
OjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJ
bml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBt
YWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICAgICA6IG1fc291cmNlRnJhbWUoc291cmNlRnJhbWUp
CiAgICAgICAgICwgbV90YXJnZXRGcmFtZSh0YXJnZXRGcmFtZSkKICAgICAgICAgLCBtX3Rhcmdl
dEZyYW1lTmFtZSh0YXJnZXRGcmFtZU5hbWUpCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIE5hdmln
YXRpb25BY3Rpb24gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmln
YXRpb25BY3Rpb24+CiAgICAgewogICAgIH0KIAotICAgIE5hdmlnYXRpb25BY3Rpb24oV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBBUEk6OkZyYW1l
SW5mbyogc291cmNlRnJhbWUsIEFQSTo6RnJhbWVJbmZvKiB0YXJnZXRGcmFtZSwgc3RkOjpvcHRp
b25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3Vs
ZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRl
ZEFjdGlvbikKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBB
UEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRh
cmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
V1RGOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVz
ZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKICAgICAgICAgOiBOYXZp
Z2F0aW9uQWN0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZSwg
dGFyZ2V0RnJhbWUsIHRhcmdldEZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxV
UkwsIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aW9uKSwgbnVs
bHB0cikKICAgICB7CiAgICAgfQpAQCAtODksNyArODksNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0
aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0
aW9uPgogICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IG1fdGFyZ2V0RnJhbWVOYW1lOwog
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBXZWJDb3JlOjpV
UkwgbV9vcmlnaW5hbFVSTDsKKyAgICBXVEY6OlVSTCBtX29yaWdpbmFsVVJMOwogCiAgICAgYm9v
bCBtX3Nob3VsZE9wZW5BcHBMaW5rczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggNmFkODMzYTYwOTk1Yjg5OWExYjExYzcx
YWU5OWM0OTU3YWMyNzI5MC4uOGU5NDRiN2RlYzRkOWU1ZGU3NGE3NDFjMmFhZWQ3OTk4MzIwMDM5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25D
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oCkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgewogCiAgICAg
dmlydHVhbCBSZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVBy
b3h5JikgeyByZXR1cm4gbnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U3RyaW5nPiBz
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCB1
bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxTdHJpbmc+JiBjaGFsbGVuZ2VTdHJp
bmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFs
IFJlZlB0cjxTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPFN0cmlu
Zz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV1RGOjpVUkwmKSB7IHJldHVybiBudWxscHRyOyB9
CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQpAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIE5h
dmlnYXRpb25DbGllbnQgewogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQogICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJDb3JlOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90
aWZpY2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV1RGOjpVUkwmJiwgVmVjdG9yPFdURjo6
U3RyaW5nPiYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiYpIHsgfTsKICAgICAKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2aXJ0dWFsIGJvb2wgZGlkRmFpbFRvSW5pdGlhbGl6
ZVBsdWdJbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYpIHsgcmV0dXJu
IGZhbHNlOyB9CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgTmF2aWdhdGlvbkNsaWVudCB7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2aXJ0dWFsIHZvaWQgd2ViR0xMb2FkUG9s
aWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6
V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlV2ViR0xMb2Fk
UG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGlj
eTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQorICAgIHZpcnR1YWwgdm9pZCB3ZWJHTExvYWRQb2xp
Y3koV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
Y29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdM
QWxsb3dDcmVhdGlvbik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGlj
eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6VVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBj
b25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xB
bGxvd0NyZWF0aW9uKTsgfQogI2VuZGlmCiAgICAgCiAgICAgdmlydHVhbCBib29sIHdpbGxHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSYsIGJvb2wgaW5QYWdlQ2FjaGUsIE9iamVjdCopIHsgcmV0dXJuIGZh
bHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGJh
MjkwZTA4OTdiOWM3MjdhZjY5NjgyZjI4ZmYzMzQ1MTk1ZDkxNjIuLjgzZGEyOWNjNTJmYzg3MzA5
Y2ZjNjVmNDZkNzAxMTBmMTI5NDY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oCkBAIC0xNDAsNyArMTQwLDcgQEAgY2xhc3MgVUlDbGllbnQgewogICAgIHZp
cnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHJ1bk1vZGFsKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBEYXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmVEYXRhVG9GaWxlSW5E
b3dubG9hZHNGb2xkZXIoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBEYXRhJikgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgcGlubmVkU3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3Jp
cHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCmlu
ZGV4IDc1ODRlNjMxMjEwMmI1YjBjNTAwN2VhOWI4OGNhYzc4M2I5ZTE0NmMuLjQwMjJlZmRjYjk3
YTUwOWY2ZTBlZjg5NWRjYjY3Mzg2NmFhOWY1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNl
IEFQSSB7CiAKLVdlYkNvcmU6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCitX
VEY6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVp
bnQ2NF90IGlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU2NyaXB0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNl
clNjcmlwdC5oCmluZGV4IDE3YTQwOTA5ODk3Zjc0NGI1MDVhMDQ5MmFjNTA4YzQwNTBiMTMxYzUu
LjAzMzMyODIwYjE2MDExNDkxNDAzNjE4YjYzN2YzM2RhODE0YjE4YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaApAQCAtMjMsOCArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQVBJVXNlclNj
cmlwdF9oCi0jZGVmaW5lIEFQSVVzZXJTY3JpcHRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0zNSw3
ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyU2NyaXB0PiwgcHVibGljIElkZW50aWZp
ZWQ8VXNlclNjcmlwdD4gewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJh
dGVVbmlxdWVVUkwoKTsKKyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsK
IAogICAgIHN0YXRpYyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQg
dXNlclNjcmlwdCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1
ICs1NCwzIEBAIGNsYXNzIFVzZXJTY3JpcHQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmpl
Y3Q6OlR5cGU6OlVzZXJTY3JpcHQ+LCBwdWJsaWMgSWRlCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBB
UEkKLQotI2VuZGlmIC8vIEFQSVVzZXJTY3JpcHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKaW5kZXggMWQ1OTViYjE1ODhkOWY3ZDVk
NDhmZDkyMWNkMWRkOTY2YjNmODZhZi4uM2VhNDYxZmUxYTE1NmM2YTlkNTg5NTg0MDM3ZmUzODdj
MjkwN2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0
eWxlU2hlZXQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1XZWJD
b3JlOjpVUkwgVXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKK1dURjo6VVJMIFVz
ZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90
IGlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmgKaW5kZXggZDg1NmY3YTUyZjliNTA0ZTBmYTQyM2VhOWEzYjZlMTU3MTQ1MWVk
ZS4uNzViYjk1YWZlYWM4ZjhmMWU4MjIzMzVmMjkzZTk4Mzg3YjVkNzYzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKQEAgLTIzLDggKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IEFQSVVzZXJTdHlsZVNoZWV0X2gKLSNkZWZpbmUgQVBJVXNlclN0eWxlU2hlZXRfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVu
dFdvcmxkLmgiCkBAIC0zNSw3ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2Vy
U3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclN0
eWxlU2hlZXQ+LCBwdWJsaWMgSWRlbnRpZmllZDxVc2VyU3R5bGVTaGVldD4gewogcHVibGljOgot
ICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKKyAgICBzdGF0aWMg
V1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKIAogICAgIHN0YXRpYyBSZWY8VXNlclN0eWxl
U2hlZXQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIGNsYXNz
IFVzZXJTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpV
c2VyU3R5bGVTaGVldD4sIHB1CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8v
IEFQSVVzZXJTdHlsZVNoZWV0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXggNmU3OTY2MjU1
MmI5ZjY4MDUyMDI5NGViYjlkNzRlYmFiZDgzMjY1MC4uNGEwZmZjNDJlNTk0MWMzMDZiY2ZmYmY4
OGNlMTVhY2M3MDk5YjVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1
ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzRnJvbUZp
bGVVUkxzKGNvbnN0IEFQSTo6QXJyYXkmIGZpbGVVUkxzKQogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEFQSTo6VVJMKiBhcGlVUkwgPSBmaWxlVVJMcy5h
dDxBUEk6OlVSTD4oaSk7CiAgICAgICAgIGlmIChhcGlVUkwpCi0gICAgICAgICAgICBmaWxlUGF0
aHMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYXBpVVJMLT5z
dHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7CisgICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVj
a2VkQXBwZW5kKFVSTChVUkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGZpbGVQYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCmluZGV4IGNjMmRmOWI1NzFhMTE3OGVjZjU3ZjZkZTZmYWEzOGRhZTVh
YzYxMTAuLjJjYjk2YTMyNTBkZDNkMGM0YTdhMTM0YzliOWM4YTY4MjAyZTFhYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZv
aWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdS
ZWYgcGxhaW5UZXh0U3RyaW5nUmVmCiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dp
dGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5n
UmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7Ci0gICAgbG9hZFN0cmluZyhwYWdlUmVmLCBw
bGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBibGFua1VSTCgpLnN0cmluZygpLCB1
c2VyRGF0YVJlZik7CisgICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYs
ICJ0ZXh0L3BsYWluIl9zLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIHVzZXJEYXRhUmVmKTsK
IH0KIAogdm9pZCBXS1BhZ2VMb2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
RGF0YVJlZiB3ZWJBcmNoaXZlRGF0YVJlZikKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVu
dEJhc2UqIHdrQ2xpZW50CiAKICAgICAgICAgICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rp
dml0eSA9IHBhZ2UucHJvY2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0
aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgYm9v
bCBzaG91bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3VyY2VGcmFtZUluZm8tPnJl
cXVlc3QoKS51cmwoKSwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgICAgICAgICBh
dXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShX
VEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxs
cHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgV2ViQ29yZTo6VVJM
KCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRp
b25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJh
bWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1
ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0
aXZpdHkpKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXBpV2luZG93RmVhdHVyZXMgPSBBUEk6
OldpbmRvd0ZlYXR1cmVzOjpjcmVhdGUod2luZG93RmVhdHVyZXMpOwogCkBAIC0xOTQ1LDcgKzE5
NDUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgbV9jbGllbnQucnVu
TW9kYWwodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQ
cm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRh
JiBkYXRhKSBmaW5hbAorICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBBUEk6OkRh
dGEmIGRhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuc2F2
ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yMTg1LDcgKzIxODUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAg
cmV0dXJuIEFQSTo6RGF0YTo6Y3JlYXRlKG1hc3RlcktleS5kYXRhKCksIG1hc3RlcktleS5zaXpl
KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwpIG92ZXJyaWRlCisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmlu
Zz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYgcGFnZSwg
dW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVu
Z2VTdHJpbmcsIGNvbnN0IFVSTCYgdXJsKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAobV9jbGllbnQuY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZykKICAg
ICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNvcHlTaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91
cC5jcHAKaW5kZXggMzkwZTEyMDc0N2VhZTg5Y2ZkOWZlZTY5ZGFjZWNiNmRlMDc5NWVjNS4uMDM3
NzQxMGVhN2U2N2U2YjA5MTBjZmJjMDVhOWIzMmY1OGNiNDNlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lk
IFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
LCBXS1N0cmluZ1JlZiBzb3VyYwogICAgIGF1dG8gd2hpdGVsaXN0ID0gdG9JbXBsKHdoaXRlbGlz
dGVkVVJMUGF0dGVybnMpOwogICAgIGF1dG8gYmxhY2tsaXN0ID0gdG9JbXBsKGJsYWNrbGlzdGVk
VVJMUGF0dGVybnMpOwogCi0gICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNo
ZWV0ID0gQVBJOjpVc2VyU3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0
IHsgc291cmNlLCAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFua1VSTCgp
IDogV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlz
dCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNr
bGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRv
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OlVzZXJT
dHlsZVVzZXJMZXZlbCB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwor
ICAgIFJlZjxBUEk6OlVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCA9IEFQSTo6VXNlclN0
eWxlU2hlZXQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgKGJhc2VV
UkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVS
TFN0cmluZykpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0
b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBW
ZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFt
ZXMpLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxk
Ojpub3JtYWxXb3JsZCgpKTsKIAogICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVu
dENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldC5nZXQoKSk7CiB9
CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tTdHJpbmdSZWYgc291cmNlUmVmCiAgICAgYXV0byB3aGl0
ZWxpc3QgPSB0b0ltcGwod2hpdGVsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgYXV0byBibGFja2xp
c3QgPSB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgCi0gICAgYXV0byB1cmwg
PSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIGF1dG8gdXJsID0gYmFz
ZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiAgVVJMKFVSTCgpLCBiYXNl
VVJMU3RyaW5nKTsKICAgICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2VyU2NyaXB0ID0gQVBJOjpV
c2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwg
V1RGTW92ZSh1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBW
ZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkg
OiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRp
bWUpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIEFQSTo6
VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgdG9JbXBsKHBhZ2VHcm91cFJl
ZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQodXNlclNjcmlwdC5nZXQo
KSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRl
eCA2N2E1NDIzZWE1ZWQ1N2ExZThiZjlkYWQ4MzIwZTA0ZGJhZjczMWI0Li4zODVkY2JjZDg2Mzc2
ODYyNjcyZjZlODQ3MDRkNTdkZWY3ODI1YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQxLDggKzQx
LDggQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURhdGFTdG9yZUdldFR5cGVJ
RCgpCiB7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlRm9y
RGVidWdNb2RlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgc3RvcmUt
PnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTA3LDcgKzEw
Nyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzdG9yZS0+c2V0TGFzdFNlZW4oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4
dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBzdG9yZS0+c2V0TGFzdFNlZW4oVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0xMjEsMTEgKzEyMSwxMSBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YQogICAgIH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPnNldFBy
ZXZhbGVudFJlc291cmNlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAg
ICAgIHN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UK
LSAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2Uo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQp
OwogICAgICAgICB9KTsKIH0KQEAgLTEzOSwxMSArMTM5LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYKICAgICB9CiAKICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5zZXRWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAg
ICAgc3RvcmUtPnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVs
c2UKLSAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRl
eHQpOwogICAgICAgICB9KTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZUlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPmlzUHJldmFsZW50
UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJj
ZSkgeworICAgIHN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUHJldmFs
ZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNQcmV2YWxlbnRSZXNvdXJjZSwgY29u
dGV4dCk7CiAgICAgfSk7CiB9CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzdG9yZS0+aXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UpIHsKKyAgICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2td
KGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNWZXJ5
UHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTk1LDcgKzE5NSw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVz
b3VyY2VVbmRlcihXS1dlYnNpdGVEYXRhU3RvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ci0gICAgc3RvcmUtPmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YnJlc291cmNlSG9zdCktPnN0cmluZygp
KSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1
YnJlc291cmNlVW5kZXIpIHsKKyAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVu
ZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkp
LCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewog
ICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQp
OwogICAgIH0pOwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
SXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihXS1dlYnNpdGVEYXRhU3RvcmVS
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJG
cmFtZVVuZGVyKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3Vi
RnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktp
dDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShi
b29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgeworICAgIHN0b3JlLT5pc1JlZ2lzdGVy
ZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJGcmFtZUhvc3Qp
LT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3Ry
aW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVu
ZGVyKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlciwgY29u
dGV4dCk7CiAgICAgfSk7CiB9CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vic2l0ZURhdGFT
dG9yZVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRB
c1JlZGlyZWN0aW5nVG8oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgeworICAgIHN0
b3JlLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29s
IGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjM1LDExICsy
MzUsMTEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNlcklu
dGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZgogICAgIH0KIAogICAgIGlmICh2YWx1ZSkK
LSAgICAgICAgc3RvcmUtPmxvZ1VzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0
aW9uSGFuZGxlcl0geworICAgICAgICBzdG9yZS0+bG9nVXNlckludGVyYWN0aW9uKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25I
YW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAg
ICAgfSk7CiAgICAgZWxzZQotICAgICAgICBzdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24oV2Vi
Q29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyVXNl
ckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5o
YXNIYWRVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFk
VXNlckludGVyYWN0aW9uKSB7CisgICAgc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFj
a10oYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFk
VXNlckludGVyYWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTI2Myw3ICsyNjMsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhlcmVkKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUpOworICAgIHN0b3Jl
LT5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgdmFsdWUpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dy
YW5kZmF0aGVyZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3Jh
bmRmYXRoZXJlZEZ1bmN0aW9uIGNhbGxiYWNrKQpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aGFz
SGFkVXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRm
YXRoZXJlZCkgeworICAgIHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aXNHcmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29u
dGV4dCk7CiAgICAgfSk7CiB9CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURh
dGFTdG8KICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3Jl
LT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9z
dCktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpCkBA
IC0yOTQsNyArMjk0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGEKICAgICBpZiAoIXN0b3Jl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSk7
CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmlu
Z1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQpAQCAtMzAzLDcgKzMwMyw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRU
byktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RU
byhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RG
cm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
RnJvbShXS1dlYnNpdGVEYXRhUwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV2ViQ29yZTo6
VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJD
b3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJv
bSktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RG
cm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkpOwogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwg
V0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tX
ZWJzaXRlRGF0YVN0b3JlUgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5n
KCkpKTsKKyAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9z
dFJlZGlyZWN0ZWRGcm9tKQpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFT
dG9yCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHN0b3JlLT5z
ZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKKyAg
ICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RS
ZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggYTgwNmJk
ZWMyZTJkNDgyM2IyZjFlOTJlZDEzM2U3MTM2NWRlZjY2NC4uYzg1ODAzM2FlNTkxYjNhMjIzOWIw
MWYxYjliMGYzOWZkZmJiNDBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMzAsMTAgKzMwLDEwIEBACiAK
ICNpbXBvcnQgIkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29v
a2llLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4K
IAogc3RhdGljIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb3JlQ29va2llc1RvTlNDb29raWVz
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb3JlQ29va2llcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCmluZGV4IDljZjY2
ODFhYWIzOTFjMzViNjM3OTA3YjExMTA4NmY4Mjc5NzZkNWEuLjhlMGM3MjEyODY4MjgyMTE5ZjJm
ODlmMjk1MDY1YWY0ZDJmZWEwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQpAQCAtOTUsNyArOTUsNyBAQCAtIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1Vz
ZXJTY3JpcHRJbgogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBX
ZWJDb3JlOjpVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hp
dGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFs
bEZyYW1lcyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQ
STo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJD
b3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwp
LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0
b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9w
RnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29y
bGQtPl91c2VyQ29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQppbmRleCAzMWYyYTkzNmQ5YWY5MWY5ZTBiZmI5NjZlYTBiZmFkZmM5OTg5MDVm
Li4wN2FlNzg0Yjc1MzNjMjNmNmNkNjRhMDU2NTk0NGFjNTViNDM0NjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQpAQCAtNDQsOCArNDQsOCBAQAogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9y
ZUludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkxQYXJz
ZXIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIu
aD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
NDc4LDcgKzQ3OCw3IEBAIC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2No
ZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAgICAgaWYgKFtXS1dlYlZp
ZXcgaGFuZGxlc1VSTFNjaGVtZTp1cmxTY2hlbWVdKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBhIFVSTCBzY2hl
bWUgdGhhdCBXS1dlYlZpZXcgaGFuZGxlcyBuYXRpdmVseSIsIHVybFNjaGVtZV07CiAKLSAgICBh
dXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxp
emVTY2hlbWUodXJsU2NoZW1lKTsKKyAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdURjo6VVJM
UGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOwogICAgIGlmICghY2Fu
b25pY2FsU2NoZW1lKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1l
bnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBub3QgYSB2YWxpZCBVUkwgc2NoZW1lIiwgdXJs
U2NoZW1lXTsKIApAQCAtNDkwLDcgKzQ5MCw3IEBAIC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxl
cjooaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAK
IC0gKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6
KE5TU3RyaW5nICopdXJsU2NoZW1lCiB7Ci0gICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJD
b3JlOjpVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAg
YXV0byBjYW5vbmljYWxTY2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVT
Y2hlbWUodXJsU2NoZW1lKTsKICAgICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggYzY0OWZmNmNiY2VhNWExZGE0NWYzNjBiZTUz
OWM3ZGJjNDkyODMyNi4uNTA2ZmI1YmY2NzRmYzNhZDk2ZWUzYTAyOWI3YWNkM2NmOGEzNDA4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCkBAIC0zOCw5ICszOCw5IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9u
LmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYktpdC9TZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
QGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
CmluZGV4IDNlZGQ4NTMxYTA5OGIwNGYyNDM3ZDdkZTViODU0MGYzZjYwZWNmNzIuLmRmZWQwYTli
ZTE3NTM3MjJiNjU0MDc3MWM4N2IzNjVhYjZkZjA5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
CkBAIC01NCw5ICs1NCw5IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVy
ICopYURlY29kZXIKICAgICAgICAgV1RGOjpTdHJpbmcobmFtZSksCiAgICAgICAgIFdURjo6U3Ry
aW5nKHNob3J0TmFtZSksCiAgICAgICAgIFdURjo6U3RyaW5nKGRlc2NyaXB0aW9uKSwKLSAgICAg
ICAgV2ViQ29yZTo6VVJMKHNjb3BlVVJMKSwKKyAgICAgICAgVVJMKHNjb3BlVVJMKSwKICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheT4oZGlz
cGxheSksCi0gICAgICAgIFdlYkNvcmU6OlVSTChzdGFydFVSTCkKKyAgICAgICAgVVJMKHN0YXJ0
VVJMKQogICAgIH07CiAKICAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6
QXBwbGljYXRpb25NYW5pZmVzdD4oc2VsZiwgV1RGTW92ZShjb3JlQXBwbGljYXRpb25NYW5pZmVz
dCkpOwpAQCAtODMsNyArODMsNyBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAq
KWFDb2RlcgogCiArIChfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopYXBwbGljYXRpb25NYW5pZmVz
dEZyb21KU09OOihOU1N0cmluZyAqKWpzb24gbWFuaWZlc3RVUkw6KE5TVVJMICopbWFuaWZlc3RV
UkwgZG9jdW1lbnRVUkw6KE5TVVJMICopZG9jdW1lbnRVUkwKIHsKLSAgICBhdXRvIG1hbmlmZXN0
ID0gV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2UoV1RGOjpTdHJpbmco
anNvbiksIFdlYkNvcmU6OlVSTChtYW5pZmVzdFVSTCksIFdlYkNvcmU6OlVSTChkb2N1bWVudFVS
TCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFy
c2VyOjpwYXJzZShXVEY6OlN0cmluZyhqc29uKSwgVVJMKG1hbmlmZXN0VVJMKSwgVVJMKGRvY3Vt
ZW50VVJMKSk7CiAgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0Ojpj
cmVhdGUobWFuaWZlc3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IGU2ZjA5MGZmNWQ0MTM3YzY1
ODljZWU4ZmNhODM1MDEzYjhhNmRlM2QuLjYxNDUyMzJhMGQ4ZTdmMWE4ZDcyZGFkNzEzNzdiYTVj
NzRiYjg0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTcwLDcgKzcwLDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09M
KWZvck1haW4KICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVy
YXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFz
IGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJ
bml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBl
cjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdU
Rjo6U3RyaW5nKHNvdXJjZSksIHsgV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJM
IF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxl
Z2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNv
bnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1
Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxl
U2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpTdHJpbmcoW2Jhc2VV
UkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9TdHJpbmdWZWN0b3Io
bGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBm
b3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3Jl
OjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2Vy
Q29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3Bw
CmluZGV4IGE3MjlmYWI5YTc5ZTFkY2QxNTRmNDMwOTFkMTdmNGVkYzgwZGYzYjQuLjY3NGE1ZGIw
NDNjOGE2MGYzNjIwYWE3YmEwMThjMWY5ODVlZGY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogLy8gRm9yIG1ldGhvZHMgdGhhdCBhcmUgbWVh
bnQgdG8gc3VwcG9ydCBBUEkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgLSBzaG91bGQgbm90IGJlIGNh
bGxlZCBpbnRlcm5hbGx5CiAjZGVmaW5lIEFTU0VSVF9OT1RfU1lOQ19USFJFQUQoKSBBU1NFUlQo
IW1fc3luY1RocmVhZFJ1bm5pbmcgfHwgIUlTX0lDT05fU1lOQ19USFJFQUQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdl
ci5jcHAKaW5kZXggZGU4MmZkYWI1YzdmOTUzZmE1YmNhZjQwN2Q5YzY2Y2IxODUyMjdlMy4uN2E5
NDI5MTlkZGY4YzRmMmEzYjE2ZGE3NjcwMTRiMmMyYzE1NGZhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAK
QEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2ll
cyhXZWJLaXRDb29raWVNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBnY2hhcgogCiAgICAgLy8gQ29v
a2llcyBhcmUgcmVhZC93cml0dGVuIGZyb20vdG8gdGhlIHNhbWUgU1FMaXRlIGRhdGFiYXNlIG9u
IGRpc2sgcmVnYXJkbGVzcwogICAgIC8vIG9mIHRoZSBwcm9jZXNzIHdlIGFjY2VzcyB0aGVtIGZy
b20sIHNvIGp1c3QgdXNlIHRoZSBmaXJzdCBwcm9jZXNzIHBvb2wuCi0gICAgcHJvY2Vzc1Bvb2xz
WzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0Q29va2llcyhzZXNz
aW9uSUQsIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkp
KSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYg
Y29va2llcywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIHByb2Nlc3NQb29sc1sw
XS0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZXMoc2Vzc2lv
bklELCBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSksIFt0YXNrID0gV1RGTW92ZSh0
YXNrKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJy
b3I6Ok5vbmUpIHsKICAgICAgICAgICAgIC8vIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGluIGNhc2Vz
IHdoZXJlIHRoZSB3ZWIgcHJvY2VzcyBpcyBub3QgYXZhaWxhYmxlLAogICAgICAgICAgICAgLy8g
Y29uc2lkZXIgdGhlIG9wZXJhdGlvbiAiY2FuY2VsbGVkIiBmcm9tIHRoZSBwb2ludCBvZiB2aWV3
IG9mIHRoZSBjbGllbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCBjZDAyNmU0Zjhl
OTFhN2FiZmIxOWJjYzMwYjBhMTIzNThmMjdkZTUwLi4zN2U2Y2NhMGNlYmNlOTE0NzMwZTNjNmQ0
MjVjNWZlZjc3ZmI0ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTI3LDggKzI3
LDggQEAKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2Rp
bmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RG
R1R5cGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAzYmNjMjEyMzY3ODU5MzZhNzcxMjk3ZTZl
Mzk4ZDI4MGRmYjZiODAyLi44ODMzNmIzZGM0Njg0OTg4YWM3N2QxNjlkYTZhNTk1ZTYxZTU5ZTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1
cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0
U2VjdXJpdHlPcmlnaW4uaCIKIAogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0
ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogLyoqCkBAIC0xMTAsNyArMTEwLDcgQEAgV2Vi
S2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoY29u
c3QgZ2NoYXIqIHVyaSkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCh1cmksIG51bGxwdHIp
OwogCi0gICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZy
b21VVEY4KHVyaSkpKSk7CisgICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4
KHVyaSkpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDAyNzU0MzEyN2FlZTFiMDg2ZDAzNjE1MWQx
MThjZmM3OTY2NmE0MmUuLjk2ZjllZTExODJhMjQyM2I5MTYzZGMzYWYwODIxNmIzZTkxODliNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNs
aWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpV
SUNsaWVudCB7CiAgICAgdm9pZCBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVm
PEFQSTo6RnJhbWVJbmZvPiYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVzb3VyY2VSZXF1ZXN0LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVz
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbAogICAgIHsKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdl
LnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNl
ckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICBXZWJLaXROYXZpZ2F0aW9uQWN0aW9u
IG5hdmlnYXRpb25BY3Rpb24oQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uRGF0YSksIGZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxs
b3B0LCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFdlYkNvcmU6OlVSTCB7IH0sIGZhbHNlLCBX
VEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpKTsKKyAgICAgICAgV2ViS2l0TmF2aWdhdGlv
bkFjdGlvbiBuYXZpZ2F0aW9uQWN0aW9uKEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0
ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBVUkwgeyB9LCBmYWxzZSwgV1RG
TW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKG1fd2ViVmlldywgd2luZG93RmVhdHVyZXMsICZu
YXZpZ2F0aW9uQWN0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4IDkx
Njc0YWMyODhmN2U3OGY0NTFlOTU5M2QzYTU1NDhmZjU5ODg4OWYuLjA3YjU4YWQzMjNkNTQ1OGM5
MDM2NjNkYjgzMGU5NGJlN2U1ZDg4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0yNiwx
MCArMjYsMTAgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RG
R1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDBmYTRhMThm
ODljOGM1MWE0NTQwNzc4ZjVhZTI3YmVhODdkN2I1ZjEuLjIzNDg1OTY2M2QxZjJjNzgwODk4ZjA2
MGY0MDE0OTg4ZTc4NmI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC02NiwxMiArNjYsMTIgQEAKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJp
dmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01FeGNlcHRp
b25IYW5kbGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KQEAgLTI2NDcsNyArMjY0Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRf
cGxhaW5fdGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogcGxhaW5UCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdf
cmV0dXJuX2lmX2ZhaWwocGxhaW5UZXh0KTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9hZERh
dGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwbGFpblRleHQpLCBwbGFpblRl
eHQgPyBzdHJsZW4ocGxhaW5UZXh0KSA6IDAgfSwgInRleHQvcGxhaW4iX3MsICJVVEYtOCJfcywg
YmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YSh7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBsYWluVGV4dCksIHBsYWluVGV4dCA/IHN0
cmxlbihwbGFpblRleHQpIDogMCB9LCAidGV4dC9wbGFpbiJfcywgIlVURi04Il9zLCBXVEY6OmJs
YW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBiYmQ1MTZlNzI5NjIzMzdiZGRmZWNkMGM1NmQzOTgx
NDgzM2Q4YTc0Li5iN2U2MzMwZWFlYjJlMjAyMmU2MjNmM2E2OGVjMWJjMTdhYTM3NzVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0yOCw3ICsy
OCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA3ODBhMTVlOTZkM2MzNjI0NmJiNWQ1YTQx
YzcxMjdiMmFiZGQxMzFjLi4yZjA2NjA4NmQ5OTJmYzMwZmFmNmM3OTQwYWNlZjJmZGZjYzg1M2Nl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDUsMTEgKzEwNSwxMSBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYXRpbmdVUkxTdHJpbgogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmF0aW5n
OwogCi0gICAgV2ViQ29yZTo6VVJMIG9yaWdpbmF0aW5nVVJMKFdlYkNvcmU6OlVSTCgpLCBvcmln
aW5hdGluZ1VSTFN0cmluZyk7CisgICAgVVJMIG9yaWdpbmF0aW5nVVJMKFVSTCgpLCBvcmlnaW5h
dGluZ1VSTFN0cmluZyk7CiAKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBsaW5rSWNvblVSTHM7
CisgICAgVmVjdG9yPFVSTD4gbGlua0ljb25VUkxzOwogICAgIGZvciAoY29uc3QgYXV0byYgbGlu
a0ljb25VUkxTdHJpbmcgOiBsaW5rSWNvblVSTFN0cmluZ3MpCi0gICAgICAgIGxpbmtJY29uVVJM
cy5hcHBlbmQoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBsaW5rSWNvblVSTFN0cmluZykp
OworICAgICAgICBsaW5rSWNvblVSTHMuYXBwZW5kKFVSTChVUkwoKSwgbGlua0ljb25VUkxTdHJp
bmcpKTsKIAogICAgIHBsYXRmb3JtU2hvd1BheW1lbnRVSShvcmlnaW5hdGluZ1VSTCwgbGlua0lj
b25VUkxzLCBwYXltZW50UmVxdWVzdCwgW3RoaXNdKGJvb2wgcmVzdWx0KSB7CiAgICAgICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmF0aW5nKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigp
CiAgICAgZGlkUmVhY2hGaW5hbFN0YXRlKCk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYg
dXJsKQogewogICAgIEFTU0VSVChtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlID09IE1lcmNoYW50
VmFsaWRhdGlvblN0YXRlOjpJZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXgg
MDg1MDE5ZGEwNmUzMmZiMGY0ZWM1ODk5MTUzNTQ4NmZlYmE3ZjhkYS4uZWRlN2E3MGNmMjEzNTk0
ODgwYTY4ZjUwZGE3Y2Y5Y2YxODU0NjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBA
IC00Myw3ICs0Myw2IEBAIGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKIGNs
YXNzIFBheW1lbnRNZXJjaGFudFNlc3Npb247CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3Mg
VVJMOwogfQogCiBPQkpDX0NMQVNTIE5TT2JqZWN0OwpAQCAtNjEsNyArNjAsNyBAQCBjbGFzcyBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBDYW5NYWtlVwogICAgIH5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwogCiAg
ICAgdm9pZCBkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwotICAgIHZvaWQgdmFsaWRhdGVNZXJj
aGFudChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29u
c3QgVVJMJik7CiAgICAgdm9pZCBkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFdlYkNvcmU6OlBh
eW1lbnQmKTsKICAgICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpOwogICAgIHZv
aWQgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0
Jik7CkBAIC05OSw3ICs5OCw3IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXCiAgICAgYm9vbCBw
bGF0Zm9ybUNhbk1ha2VQYXltZW50cygpOwogICAgIHZvaWQgcGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJp
bmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIHBsYXRm
b3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0
IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNv
bnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgV1RGOjpGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9u
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAg
ICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4IDE1OWFjMTkyNDYyYjQ5
ZjdmOTQ2ZmM0NmE2ZTk4ZjkyNmJiY2I5NmMuLjRlMGYyMmI3YWRmNTEwNDE5ZmU2MGFjOWJhNGVh
NTQ4OWRiYWNhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNv
Y29hLmgKQEAgLTMxLDE1ICszMSwxMSBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0
U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgVVJMOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OwogCi1SZXRhaW5QdHI8UEtQYXltZW50
UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNv
blVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CitS
ZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94
eSYsIGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNv
blVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2Ev
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KaW5k
ZXggYTRlZWNjYjA5MWJmMGI0MGNmYjBjMDUzMjgyMjU2OTMxYjA3MzRjNS4uZGY1YjlkYTdkZGRi
ZmI1NjVhNThhYmRlMjllZDMzMzc0MWI1M2ZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbXBvcnQgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykK
IFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQpAQCAtNTExLDcg
KzUxMSw3IEBAIHN0YXRpYyBQS1BheW1lbnRSZXF1ZXN0QVBJVHlwZSB0b0FQSVR5cGUoV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6CiB9CiAjZW5kaWYKIAotUmV0YWluUHRy
PFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBh
Z2VQcm94eSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQorUmV0YWluUHRyPFBLUGF5bWVudFJl
cXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29u
c3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywg
Y29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1
ZXN0KQogewogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0
SW5zdGFuY2UoKSBpbml0XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlP
Uy5tbQppbmRleCBiMTBkOTJlMzhiMGMxNzUzMzAwMjgyZWI3ZDU4MGUyYzIzNmNmYTg5Li4xN2I3
ZjJmODlhMThiNzgwNmEyZTk2YzY0ZTA4ZGIxZmYyODZjNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5SU9TLm1tCkBAIC00MSw3ICs0MSw3IEBAIFNPRlRfTElOS19DTEFT
UyhQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJl
c2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlDbGllbnQoKS5wcmVzZW50
aW5nVmlld0NvbnRyb2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWFjLm1tCmluZGV4IDc0MTU5MzgzZjE5NTQyN2RiOTc2MGE4YzAxZWM3MDY3YTY3YzZmOTUuLjI1
MTQ5NTBlNWQwMjQ2MDNlMDU3MWFiYjAzNmY3OTEyOTMwZDE2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTQxLDcgKzQxLDcgQEAgU09GVF9MSU5LX0NP
TlNUQU5UKFBhc3NLaXQsIFBLRXh0ZW5zaW9uUGF5bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lv
blBvaW50TmFtZSwKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9y
aWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxTdHJp
bmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVz
dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBV
UkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdz
LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwg
V1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghUGFzc0tpdExpYnJhcnkoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGY2M2JiMmJhZmViOThkZTQzNWVmYjVmNWNkNTNk
ZTQwYzQ3NmNiZTEuLmExMjI4NzRjMWYwNTA1MjhmNjdiNDUxM2FhN2RiNDI0OWYxNmEwMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC00NCwxMCArNDQsMTAgQEAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
SU1FVHlwZVJlZ2lzdHJ5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCkBAIC02NTksNyArNjU5LDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoY29uc3Qg
U3RyaW5nJiBoYW5kbGUsIGNvbnN0IFMKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3Bh
Z2VMb2FkU3RyYXRlZ3knIGlzIGludmFsaWQuIik7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQg
PSBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9w
dGlvbmFsUGFnZUxvYWRUaW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKLSAgICBw
YWdlLT5sb2FkUmVxdWVzdChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHVybCkpOworICAg
IHBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdXJsKSk7CiAgICAgd2FpdEZvck5hdmlnYXRp
b25Ub0NvbXBsZXRlT25QYWdlKCpwYWdlLCBwYWdlTG9hZFN0cmF0ZWd5LnZhbHVlKCksIHBhZ2VM
b2FkVGltZW91dCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCkBAIC0xMjg3LDcgKzEyODcsNyBA
QCBzdGF0aWMgU3RyaW5nIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQoU3RyaW5nIGRv
bWFpbikKICAgICBpZiAoZG9tYWluWzBdICE9ICcuJykgewogICAgICAgICAvLyBSRkMgMjk2NTog
SWYgYW4gZXhwbGljaXRseSBzcGVjaWZpZWQgdmFsdWUgZG9lcyBub3Qgc3RhcnQgd2l0aCBhIGRv
dCwgdGhlIHVzZXIgYWdlbnQgc3VwcGxpZXMgYSBsZWFkaW5nIGRvdC4KICAgICAgICAgLy8gQXNz
dW1lIHRoYXQgYW55IGhvc3QgdGhhdCBlbmRzIHdpdGggYSBkaWdpdCBpcyB0cnlpbmcgdG8gYmUg
YW4gSVAgYWRkcmVzcy4KLSAgICAgICAgaWYgKCFXZWJDb3JlOjpVUkw6Omhvc3RJc0lQQWRkcmVz
cyhkb21haW4pKQorICAgICAgICBpZiAoIVVSTDo6aG9zdElzSVBBZGRyZXNzKGRvbWFpbikpCiAg
ICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygnLicsIGRvbWFpbik7CiAgICAgfQogICAgIApA
QCAtMTMwMCw3ICsxMzAwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xl
Q29va2llKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLAogICAgIGlmICghcGFn
ZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91
bmQpOwogCi0gICAgV2ViQ29yZTo6VVJMIGFjdGl2ZVVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3Jl
OjpVUkwoKSwgcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKTsKKyAgICBVUkwgYWN0
aXZlVVJMID0gVVJMKFVSTCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOwog
ICAgIEFTU0VSVChhY3RpdmVVUkwuaXNWYWxpZCgpKTsKIAogICAgIFdlYkNvcmU6OkNvb2tpZSBj
b29raWU7CkBAIC0xMzU3LDcgKzEzNTcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpk
ZWxldGVBbGxDb29raWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaQogICAg
IGlmICghcGFnZSkKICAgICAgICAgU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5k
b3dOb3RGb3VuZCk7CiAKLSAgICBXZWJDb3JlOjpVUkwgYWN0aXZlVVJMID0gV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOworICAg
IFVSTCBhY3RpdmVVUkwgPSBVUkwoVVJMKCksIHBhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVV
UkwoKSk7CiAgICAgQVNTRVJUKGFjdGl2ZVVSTC5pc1ZhbGlkKCkpOwogCiAgICAgV2ViQ29va2ll
TWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDZmZjFiNDc4MzIzOTJiZDAzMjU2MjFlNTA1ZmIw
NGE3NGY0NTY1ZmYuLjFkNmU3MTg4NDViMTQ4NWUwYjI2NjZiOWFmMWVmOTMxNjAyMDQwMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBA
IC0yMTMsNyArMjEzLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKFdlYlByb2Nl
c3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICAgICBpZiAoZG93bmxvYWRQ
cm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiB3ZWJQ
YWdlID0gZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKSkgewogICAgICAgICAgICAgTlNV
UkwgKmRlc3RpbmF0aW9uVVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDooTlNTdHJpbmcgKilk
b3dubG9hZFByb3h5LmRlc3RpbmF0aW9uRmlsZW5hbWUoKV07Ci0gICAgICAgICAgICB3ZWJQYWdl
LT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigpLT5maW5pc2goV2ViQ29yZTo6VVJMKGRlc3RpbmF0
aW9uVVJMKSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigp
LT5maW5pc2goVVJMKGRlc3RpbmF0aW9uVVJMKSk7CiAgICAgICAgIH0KICAgICAgICAgcmVsZWFz
ZUFjdGl2aXR5VG9rZW5JZk5lY2Vzc2FyeShkb3dubG9hZFByb3h5KTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApp
bmRleCA0NTk4NWY1MGU0YmZlNzAyNWFjZGE4ZjYyZTU1ZDk4Y2FkMzQ1YmJjLi4wNTU2ZWNjYTMy
NDgwZTlkMjY3NDVhZTdiMTk0ZDBlNWM5ZTZjYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTE2LDcgKzExNiw3IEBAIGNsYXNz
IE5hdmlnYXRpb25TdGF0ZSBmaW5hbCA6IHByaXZhdGUgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIg
ewogCiAgICAgICAgIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdl
UHJveHkmKSBvdmVycmlkZTsKIAotICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXpl
SW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
V2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2ln
bmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtl
eVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBj
b25zdCBVUkwmKSBvdmVycmlkZTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lk
IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKQEAgLTEy
NCw4ICsxMjQsOCBAQCBjbGFzcyBOYXZpZ2F0aW9uU3RhdGUgZmluYWwgOiBwcml2YXRlIFBhZ2VM
b2FkU3RhdGU6Ok9ic2VydmVyIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAg
ICB2b2lkIHdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYpIGNv
bnN0IGZpbmFsOwotICAgICAgICB2b2lkIHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCB3ZWJHTExv
YWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9p
ZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmlu
YWw7CiAgICAgICAgIGJvb2wgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2VQcm94
eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBib29sIGluUGFnZUNhY2hlLCBBUEk6Ok9iamVj
dCopIGZpbmFsOwogICAgICAgICBib29sIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnSW4oV2ViUGFn
ZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7CiAgICAgICAgIGJvb2wgZGlkQmxvY2tJ
bnNlY3VyZVBsdWdpblZlcnNpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmlu
YWw7CkBAIC0xMzMsNyArMTMzLDcgQEAgY2xhc3MgTmF2aWdhdGlvblN0YXRlIGZpbmFsIDogcHJp
dmF0ZSBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CiAgICAgICAgIGJvb2wgZGlkQ2hhbmdlQmFj
a0ZvcndhcmRMaXN0KFdlYlBhZ2VQcm94eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBjb25z
dCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYpIGZpbmFsOwogI2VuZGlmCiAK
LSAgICAgICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5Jiwg
V2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYsIFZlY3RvcjxTdHJpbmc+JiYpIGZpbmFs
OworICAgICAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkm
LCBVUkwmJiwgVmVjdG9yPFN0cmluZz4mJiwgVmVjdG9yPFN0cmluZz4mJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBS
ZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5PiYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpO
YXZpZ2F0aW9uUmVzcG9uc2U+JiYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBhNWIwODdjZmYzMDhiZjE0
MGFmODViZGFkZDM5ZmJmNjk5MTA3OWE3Li40MjA3NzM5YWIwZTBmMDRiNTI3Y2M5Zjc3ZDViODQw
MTAxM2Y1OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCkBAIC03MCw5ICs3MCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdl
bmVyYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjaWYgSEFWRShBUFBfTElOS1MpCiAjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CkBAIC0zOTIsNyArMzkyLDcg
QEAgaW5saW5lIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB0b1dlYkNvcmVXZWJHTExvYWRQb2xp
Y3koX1dLV2ViR0xMb2FkUG9saWN5IHBvbGkKICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxv
d0NyZWF0aW9uOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0Cit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOwpAQCAtNDA5LDcgKzQwOSw3IEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3ko
V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQ
YWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAor
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQ
b2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QK
IHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3UmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdlYlBhZ2VQCiAgICAgfQogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSYs
IFdlYkNvcmU6OlVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmllcnMsIFZl
Y3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucykKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5Jiwg
VVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGxpc3RJZGVudGlmaWVycywgVmVjdG9yPFN0cmlu
Zz4mJiBub3RpZmljYXRpb25zKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdVUkxDb250ZW50UnVsZUxpc3RJZGVudGlmaWVy
c05vdGlmaWNhdGlvbnMpCiAgICAgICAgIHJldHVybjsKQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdChXZWJQYWdlUHJveHkmCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYkNvcmU6OlVSTCB1cmwoV2ViQ29yZTo6VVJMKCksIHVybFN0cmlu
Zyk7CisgICAgVVJMIHVybChVUkwoKSwgdXJsU3RyaW5nKTsKIAogICAgIFtzdGF0aWNfY2FzdDxp
ZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlKSBfd2Vi
VmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dFRvVVJMOnVybCBkZWxheTpkZWxheV07CiB9CkBAIC05NzIsNyArOTcyLDcgQEAgUmVmUHRyPEFQ
STo6RGF0YT4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0
ZXJLZXkoV2ViUGFnZVAKICAgICByZXR1cm4gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhkYXRhKTsKIH0KIAotUmVmUHRyPEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJv
eHkmIHBhZ2UsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5n
PiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1JlZlB0cjxBUEk6
OlN0cmluZz4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXpl
SW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgLy8gV2ViS2l0VGVzdFJ1bm5lciB1c2VzIEMgQVBJLiBIZW5jZSwg
bm8gU1BJIGlzIHByb3ZpZGVkIHRvIG92ZXJyaWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24uCiAg
ICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwg
dXJsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJv
d3NpbmdSZXN1bHRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVC
cm93c2luZ1Jlc3VsdENvY29hLm1tCmluZGV4IDA4N2FjNjU0OTMzM2ExNDBhZjUzOWVhNDA0Yjk2
ZmExZWVjZjM0OTQuLjA0ZGZkNWQ0NGQ2ZTQ4MzExZGRjMmYyZmU3NDE2OWY0NDhjNWIzMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3Vs
dENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2lu
Z1Jlc3VsdENvY29hLm1tCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
I2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLVNhZmVCcm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5n
UmVzdWx0KFdlYkNvcmU6OlVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0
KQorU2FmZUJyb3dzaW5nUmVzdWx0OjpTYWZlQnJvd3NpbmdSZXN1bHQoVVJMJiYgdXJsLCBTU0JT
ZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAg
ICAgLCBtX3Byb3ZpZGVyKFtyZXN1bHQgcHJvdmlkZXJdKQogICAgICwgbV9pc1BoaXNoaW5nKFty
ZXN1bHQgaXNQaGlzaGluZ10pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCBhN2RhZDQ4
MTUyNjFhOThjNmMxMWQzNDQ4ZjNkYjIxODEzMWE2MmRhLi45OGJkYzI3OTY0YTU2OWE3Nzk4YzE5
YzdiNWFhYzJjNzRlNmQ1OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTEwNSw3
ICsxMDUsNyBAQCAtICh2b2lkKXNldFByb2dyZXNzOihmbG9hdClwcm9ncmVzcwogICAgICAgICBb
X2l0ZW0gc2V0UHJldmlld0l0ZW1Qcm92aWRlclByb2dyZXNzOkAocHJvZ3Jlc3MpXTsKIH0KIAot
LSAodm9pZClmaW5pc2g6KFdlYkNvcmU6OlVSTCl1cmwKKy0gKHZvaWQpZmluaXNoOihVUkwpdXJs
CiB7CiAgICAgaWYgKHNlbGYuY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHNlbGYuY29tcGxl
dGlvbkhhbmRsZXIoKE5TVVJMKil1cmwsIG5pbCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBT
eXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dXBkYXRlUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCiAg
ICAgICAgIFttX3FsUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlIHNldFByb2dyZXNzOnByb2dy
ZXNzXTsKIH0KIAotdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmluaXNoKFdlYkNvcmU6
OlVSTCB1cmwpCit2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2goVVJMIHVybCkK
IHsKICAgICBpZiAobV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSkKICAgICAgICAgW21f
cWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgZmluaXNoOnVybF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggMzNmMGE5YzJjZDI2MTI1NzFlMjg2
ZDU3NjczZWI3MDQwNGQwMDFiMi4uNmNmYjQ0M2E5NTg4NjU1NmYwOTg2MDg3MDQ0ZTQyMDI2ZDNm
YTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAt
MTE5LDcgKzExOSw3IEBAIGNsYXNzIFVJRGVsZWdhdGUgewogICAgICAgICB2b2lkIHRvb2xiYXJz
QXJlVmlzaWJsZShXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsK
ICAgICAgICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1l
dGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAg
dm9pZCBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdl
YlBhZ2VQcm94eSYsIFdLUmVzb3VyY2VMaW1pdCkgZmluYWw7Ci0gICAgICAgIHZvaWQgc2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpEYXRhJikg
ZmluYWw7CisgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQ
YWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
VVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CiAjZW5kaWYKICAgICAgICAgYm9vbCBkZWNpZGVQb2xp
Y3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVBy
b3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JikgZmluYWw7CiAgICAgICAgIGJvb2wgY2hlY2tVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBB
UEk6OlNlY3VyaXR5T3JpZ2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbQppbmRleCAzZWNlODIwZWQ0YjMxNjQzNjkzZjUyMjQ3ZWRhZDljNjhiODFm
ZjYwLi5mOTE3YWE1ZjdhMTE4YjIyZDhlYjIyNTU4MzRjNmM5Y2NjZGNkYmZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTUxLDggKzUxLDggQEAK
ICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRlc3RS
ZXN1bHRJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVkNhcHR1cmVEZXZpY2UuaD4KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJh
bWVJbmZvPgogCiAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3Mo
KS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVU
b2tlbklkZW50aWZpZXIpOwogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJl
RXF1YWwoc291cmNlRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpOwot
ICAgIGF1dG8gYXBpTmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8ucHRyKCks
IG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgV2ViQ29yZTo6VVJMKCks
IHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAg
ICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0
ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBu
dWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91bGRPcGVu
QXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICBhdXRvIGFw
aVdpbmRvd0ZlYXR1cmVzID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3JlYXRlKHdpbmRvd0ZlYXR1
cmVzKTsKIApAQCAtNzg3LDcgKzc4Nyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNo
b3dQYWdlKFdlYlBhZ2VQcm94eSopCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVs
ZWdhdGUgX3Nob3dXZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogICAgIAotdm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihX
ZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0
IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VS
TCwgQVBJOjpEYXRhJiBkYXRhKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFU
b0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJM
JiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKQogewogICAgIGlmICghbV91aURlbGVn
YXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVu
YW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtODY1LDggKzg2
NSw4IEBAIHN0YXRpYyB2b2lkIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNl
cyhjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwKICAgICB9KTsKIAogICAgIGNvbnN0IFdlYkZy
YW1lUHJveHkqIG1haW5GcmFtZSA9IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCk7Ci0gICAgV2Vi
Q29yZTo6VVJMIHJlcXVlc3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJhbWUudXJsKCkpOwot
ICAgIFdlYkNvcmU6OlVSTCBtYWluRnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIG1haW5GcmFtZS0+
dXJsKCkpOworICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIGZyYW1lLnVybCgpKTsKKyAg
ICBVUkwgbWFpbkZyYW1lVVJMKFVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKIAogICAgIF9XS0Nh
cHR1cmVEZXZpY2VzIGRldmljZXMgPSAwOwogICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzQXVkaW9D
YXB0dXJlKCkpCkBAIC05NzMsOCArOTczLDggQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSwKIAog
ICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXc7CiAgICAgY29u
c3QgV2ViRnJhbWVQcm94eSogbWFpbkZyYW1lID0gZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKTsK
LSAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBmcmFtZS51
cmwoKSk7Ci0gICAgV2ViQ29yZTo6VVJMIG1haW5GcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgbWFp
bkZyYW1lLT51cmwoKSk7CisgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgZnJhbWUudXJs
KCkpOworICAgIFVSTCBtYWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogCiAg
ICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkKE5TU3RyaW5nICosIEJPT0wp
Pjo6ZnJvbUNhbGxhYmxlKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oTlNT
dHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkgewogICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0
LT5zZXRVc2VyTWVkaWFBY2Nlc3NJbmZvKFN0cmluZyhzYWx0KSwgYXV0aG9yaXplZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JS
ZWNvdmVyeUF0dGVtcHRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVs
b2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCmluZGV4IDVmOTlhZWM4NWRhNzUyNGJh
MDQxZTc1ZWIwODAxNzM5OTA0OWIyMTIuLmFlNTc2NWU0OGU3MWI4N2ZmNjBkMTQwNWMzYzdhMzM3
MjUxNWNhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVs
b2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCkBAIC02
OSw3ICs2OSw3IEBAIC0gKEJPT0wpYXR0ZW1wdFJlY292ZXJ5CiAgICAgaWYgKCF3ZWJGcmFtZVBy
b3h5KQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICB3ZWJGcmFtZVByb3h5LT5sb2FkVVJMKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgX3VybFN0cmluZykpOworICAgIHdlYkZyYW1lUHJv
eHktPmxvYWRVUkwoVVJMKFVSTCgpLCBfdXJsU3RyaW5nKSk7CiAgICAgcmV0dXJuIFlFUzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbQppbmRleCBhZTY0NzA3ZGExNTFjMjJiYzM4MzlkYWI0YWY3ZTc0MDE0
ZTAyMjBlLi41ZmQ1YjkwY2Q0OWRiNDdkOGU3YzMwNmZjNDg2YjNiZTMxMmQ4MTQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJk
SXRlbUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggNWFhZGNmNjdkMTVlMGZmNGE3NzQxYjg1ZTlkZTI3YTQ5NzIyMjlmMi4uYmNiZjUzNzZi
MWEzZWJlYjQ3ZjgzYjMyODM4ZDIxNGRkNzBiNzFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQwNjYsNyArNDA2Niw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OndyaXRlVG9VUkxGb3JGaWxlUHJvbWlzZVByb3ZpZGVyKE5TRmlsZVByb21pc2VQ
cm92aWRlciAqcHJvdmlkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpV
UkwgYmxvYlVSTCB7IGluZm8uYmxvYlVSTCB9OworICAgIFVSTCBibG9iVVJMIHsgaW5mby5ibG9i
VVJMIH07CiAgICAgaWYgKGJsb2JVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHdlYktpdFVua25vd25FcnJvcigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggZTA3
YWFjODk2MDM4MTU2MWE3MmNhNTRiNzU1NzM5Mjc5ODVlMzQwYy4uNDc3MzZmMDZkZjgyODY4ZmUz
YmNiZGNkMDgxMGNlZWNmZGQ2ZGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEludFJl
Y3Q7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC03NSw4ICs3NCw4IEBAIGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpEb3dubG9hZD4sIHB1YmxpCiAgICAgV2ViUGFnZVByb3h5
KiBvcmlnaW5hdGluZ1BhZ2UoKSBjb25zdDsKICAgICB2b2lkIHNldE9yaWdpbmF0aW5nUGFnZShX
ZWJQYWdlUHJveHkqKTsKIAotICAgIHZvaWQgc2V0UmVkaXJlY3RDaGFpbihWZWN0b3I8V2ViQ29y
ZTo6VVJMPiYmIHJlZGlyZWN0Q2hhaW4pIHsgbV9yZWRpcmVjdENoYWluID0gV1RGTW92ZShyZWRp
cmVjdENoYWluKTsgfQotICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiByZWRpcmVjdENo
YWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdENoYWluOyB9CisgICAgdm9pZCBzZXRSZWRp
cmVjdENoYWluKFZlY3RvcjxVUkw+JiYgcmVkaXJlY3RDaGFpbikgeyBtX3JlZGlyZWN0Q2hhaW4g
PSBXVEZNb3ZlKHJlZGlyZWN0Q2hhaW4pOyB9CisgICAgY29uc3QgVmVjdG9yPFVSTD4mIHJlZGly
ZWN0Q2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0Q2hhaW47IH0KIAogICAgIHZvaWQg
c2V0V2FzVXNlckluaXRpYXRlZChib29sIHZhbHVlKSB7IG1fd2FzVXNlckluaXRpYXRlZCA9IHZh
bHVlOyB9CiAgICAgYm9vbCB3YXNVc2VySW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNV
c2VySW5pdGlhdGVkOyB9CkBAIC0xMjYsNyArMTI1LDcgQEAgY2xhc3MgRG93bmxvYWRQcm94eSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRvd25sb2FkPiwgcHVi
bGkKICAgICB1aW50NjRfdCBtX2J5dGVzTG9hZGVkIHsgMCB9OwogCiAgICAgV2Vha1B0cjxXZWJQ
YWdlUHJveHk+IG1fb3JpZ2luYXRpbmdQYWdlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IG1f
cmVkaXJlY3RDaGFpbjsKKyAgICBWZWN0b3I8VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9v
bCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAKaW5kZXggOWZlM2M3NjU2MWIyNTU3MTZhNDViYmEzOGZl
OTk1YTAwNTk3N2ZmYi4uNzJmNGY3MjQ1NWE3ZWI4YTY1YjllNTI3ZTU1YTFmODIxYWNlMDhmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcApAQCAtMzIsNyAr
MzIsNyBAQCBGcmFtZUxvYWRTdGF0ZTo6fkZyYW1lTG9hZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBG
cmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpCit2b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25z
dCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQobV9wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwog
CkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogICAgIG1fcHJvdmlzaW9uYWxVUkwgPSB1
cmw7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2Fk
U3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBV
UkwmIHVybCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwpOwog
CkBAIC04MSwxMiArODEsMTIgQEAgdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkRmFpbExvYWQoKQog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmluaXNoZWQ7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6
OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3Zv
aWQgRnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBVUkwm
IHVybCkKIHsKICAgICBtX3VybCA9IHVybDsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6c2V0
VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCkKK3ZvaWQg
RnJhbWVMb2FkU3RhdGU6OnNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdW5yZWFjaGFibGVV
UkwpCiB7CiAgICAgbV9sYXN0VW5yZWFjaGFibGVVUkwgPSBtX3VucmVhY2hhYmxlVVJMOwogICAg
IG1fdW5yZWFjaGFibGVVUkwgPSB1bnJlYWNoYWJsZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9GcmFtZUxvYWRTdGF0ZS5oCmluZGV4IDk4YzMyNWU4NDQzNmVkYWU0ZGNmNjM5ZDE0MDc2ZGE5
ODM1MzZjMTIuLmM2NTAwMDNmZmI1ZjBiNjg4NWMxM2YzMjZiZDJmYjRmZDI2YzlkZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuaApAQCAtMjUsNyArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzksMjkgKzM5LDI5IEBAIGNsYXNz
IEZyYW1lTG9hZFN0YXRlIHsKICAgICAgICAgRmluaXNoZWQKICAgICB9OwogCi0gICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpV
UkwmKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOworICAg
IHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVS
TCYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwogCiAgICAgdm9pZCBkaWRD
b21taXRMb2FkKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWls
TG9hZCgpOwogCi0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2Vi
Q29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3Qg
VVJMJik7CiAKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAg
ICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAg
Y29uc3QgV2ViQ29yZTo6VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
dmlzaW9uYWxVUkw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CisgICAgY29uc3QgVVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
dmlzaW9uYWxVUkw7IH0KIAotICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJik7Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KKyAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJM
KGNvbnN0IFVSTCYpOworICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJl
dHVybiBtX3VucmVhY2hhYmxlVVJMOyB9CiAKIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpGaW5pc2hlZCB9OwotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKLSAgICBXZWJDb3Jl
OjpVUkwgbV9wcm92aXNpb25hbFVSTDsKLSAgICBXZWJDb3JlOjpVUkwgbV91bnJlYWNoYWJsZVVS
TDsKLSAgICBXZWJDb3JlOjpVUkwgbV9sYXN0VW5yZWFjaGFibGVVUkw7CisgICAgVVJMIG1fdXJs
OworICAgIFVSTCBtX3Byb3Zpc2lvbmFsVVJMOworICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOwor
ICAgIFVSTCBtX2xhc3RVbnJlYWNoYWJsZVVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKaW5kZXggMGU5MjE4MzMyN2FiZjg3YWJiNjIwNjcwN2U2YWU1OGE2NTZh
YjViNC4uMTgxYTllMjRhZTVlZjY3NmQ2OThhNmY0MjVkZTk5N2Q1ODM4OGVhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5k
UHJvY2Vzc0RpZFJlc3VtZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpQcm9jZXNzRGlkUmVzdW1lKCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxi
YWNrKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjYWxsYmFjayhm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCmluZGV4IDI1NTg5N2U3ZTgyNWUxN2I4M2U4YjE0NjRiNDgwOTE3NTZl
YTMwMDcuLjRkYmJiNmZlZTA2MmZmNWUwOGJmMTNjMDc3MzE1MjA4ZTk5NTM0NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKLSNkZWZpbmUgTmV0d29ya1By
b2Nlc3NQcm94eV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94eS5oIgpAQCAtNDksNyArNDgsNiBAQCBj
bGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNz
IFNob3VsZFNhbXBsZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVVJMOwogc3RydWN0
IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAtODcsNyArODUsNyBAQCBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwcml2YXRlIFBy
b2Nlc3NUaHJvdAogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRp
ZgogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFj
ayk7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CiAKICAg
ICB2b2lkIHByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpOwogICAgIApAQCAtMjAzLDUgKzIwMSwzIEBA
IGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzUHJv
eHksIHByaXZhdGUgUHJvY2Vzc1Rocm90CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlTG9hZFN0YXRlLmNwcAppbmRleCAxNzU5ZjhhNDkzNjdkMDUyZTVmY2FlNTE3M2RhMjY3MjUz
OTdmNjYwLi4yZWQxMDc1YzYwMGViZGRlYTVlNGZmNTRmYWE5MWRkZDVmNWJlMmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcApAQCAtMjA2LDkgKzIwNiw5IEBA
IGJvb2wgUGFnZUxvYWRTdGF0ZTo6aGFzT25seVNlY3VyZUNvbnRlbnQoY29uc3QgRGF0YSYgZGF0
YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGRhdGEuc3RhdGUgPT0gU3RhdGU6
OlByb3Zpc2lvbmFsKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhkYXRhLnBy
b3Zpc2lvbmFsVVJMLCAiaHR0cHMiKTsKKyAgICAgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJcyhk
YXRhLnByb3Zpc2lvbmFsVVJMLCAiaHR0cHMiKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpwcm90
b2NvbElzKGRhdGEudXJsLCAiaHR0cHMiKTsKKyAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzKGRh
dGEudXJsLCAiaHR0cHMiKTsKIH0KIAogYm9vbCBQYWdlTG9hZFN0YXRlOjpoYXNPbmx5U2VjdXJl
Q29udGVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHAKaW5kZXggMjMxMDc1YWMzNTk5YmFkMWQxOWFkNGQ3YzQyZmM3
MmZmOThjZGEwMy4uNTEzMmI4M2JmYWFhYTEzZjQ3NmE2NjM2NTFjZDM2MjAwNjY0YWVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3Jl
LmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKaW5kZXggNmU5ZWVmYzhmNWY0MzhhZTg5YTJmMjVh
Yzg4MmI1NTA3ZmVlMWIzNC4uNTU1OTdmMzQ0YmY1MTM5YjlmNTY3M2MzMGY4OGM3MjgxNTdhZjk5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5oCkBAIC0zMSwxMCArMzEsNiBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRh
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFBsdWdpbkluZm9TdG9yZTsKQEAgLTUzLDcgKzQ5LDcgQEAgY2xhc3Mg
UGx1Z2luSW5mb1N0b3JlIHsKICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZvciBhIHBsdWctaW4g
dGhhdCBjYW4gaGFuZGxlIHRoZSBnaXZlbiBNSU1FIHR5cGUuCiAgICAgLy8gSWYgdGhlIE1JTUUg
dHlwZSBpcyBudWxsLCB0aGUgZmlsZSBleHRlbnNpb24gb2YgdGhlIGdpdmVuIHVybCB3aWxsIGJl
IHVzZWQgdG8gaW5mZXIgdGhlCiAgICAgLy8gcGx1Zy1pbiB0eXBlLiBJbiB0aGF0IGNhc2UsIG1p
bWVUeXBlIHdpbGwgYmUgZmlsbGVkIGluIHdpdGggdGhlIHJpZ2h0IE1JTUUgdHlwZS4KLSAgICBQ
bHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzID0gV2ViQ29y
ZTo6UGx1Z2luRGF0YTo6QWxsUGx1Z2lucyk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1
Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFs
bG93ZWRQbHVnaW5UeXBlcyA9IFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpOwogCiAg
ICAgLy8gUmV0dXJucyB0aGUgaW5mbyBmb3IgdGhlIHBsdWctaW4gd2l0aCB0aGUgZ2l2ZW4gYnVu
ZGxlIGlkZW50aWZpZXIuCiAgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luV2l0aEJ1bmRs
ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKTsKQEAgLTYzLDcgKzU5
LDcgQEAgY2xhc3MgUGx1Z2luSW5mb1N0b3JlIHsKIAogICAgIHN0YXRpYyBQbHVnaW5Nb2R1bGVM
b2FkUG9saWN5IGRlZmF1bHRMb2FkUG9saWN5Rm9yUGx1Z2luKGNvbnN0IFBsdWdpbk1vZHVsZUlu
Zm8mKTsKIAotICAgIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBwbHVnaW5VUkwsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxT
dHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcGFnZVVSTCk7CisgICAgYm9vbCBpc1N1cHBvcnRl
ZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHBsdWdpblVSTCwgY29u
c3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgVVJMJiBwYWdlVVJMKTsKICAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKTsKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBsdWdpbihT
dHJpbmcmJiBtYXRjaGluZ0RvbWFpbiwgU3RyaW5nJiYgaWRlbnRpZmllciwgSGFzaFNldDxTdHJp
bmc+JiYgbWltZVR5cGVzLCBIYXNoU2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7CiAgICAgdm9pZCBj
bGVhclN1cHBvcnRlZFBsdWdpbnMoKSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9IHN0ZDo6bnVsbG9w
dDsgfQpAQCAtMTA0LDcgKzEwMCw3IEBAIGNsYXNzIFBsdWdpbkluZm9TdG9yZSB7CiAgICAgICAg
IEhhc2hTZXQ8U3RyaW5nPiBtaW1lVHlwZXM7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBleHRl
bnNpb25zOwogICAgIH07Ci0gICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3Qg
U3VwcG9ydGVkUGx1Z2luJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6
VVJMJiBwbHVnaW5VUkwpOworICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0
IFN1cHBvcnRlZFBsdWdpbiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1
Z2luVVJMKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbj4+IG1f
c3VwcG9ydGVkUGx1Z2luczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggZDkwZjBh
OWVhMDc0ZjZmNWY5MWJkYmFhNjY3YmUwMjIyZTU4MjczOS4uZmFlY2YzMWRmNzk1ZDMxNjM4NjQ5
ZDIyNDM4MDdjZjk3NWIyYzU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMzQsMTIg
KzM0LDEyIEBACiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxRdWFydHpD
b3JlL0NBUmVtb3RlTGF5ZXJTZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPGNydF9leHRlcm5zLmg+CiAjaW1w
b3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4K
ICNpbXBvcnQgPHNwYXduLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBAaW50ZXJm
YWNlIFdLUGxhY2Vob2xkZXJNb2RhbFdpbmRvdyA6IE5TV2luZG93IApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5nUmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaAppbmRleCA3OTNiZjRiYTRhZjczZGEyMGJk
OTU3YTRiZmMwMzEyNWRmM2M3Nzc2Li4zNDIyMDQ3YWIyMDgwYjY5YmNiYjhkMzM4MzhhNzJkOGNh
ZTk5NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdS
ZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQu
aApAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgU1NCU2Vydmlj
ZUxvb2t1cFJlc3VsdDsKQEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFNhZmVCcm93c2luZ1Jlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNhZmVCcm93c2luZ1Jl
c3VsdD4gewogcHVibGljOgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLSAgICBzdGF0aWMgUmVm
PFNhZmVCcm93c2luZ1Jlc3VsdD4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgU1NCU2Vydmlj
ZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorICAgIHN0YXRpYyBSZWY8U2FmZUJyb3dzaW5nUmVzdWx0
PiBjcmVhdGUoVVJMJiYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTYWZlQnJvd3NpbmdSZXN1bHQoV1RGTW92
ZSh1cmwpLCByZXN1bHQpKTsKICAgICB9CiAjZW5kaWYKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFN0cmluZyYgcHJvdmlkZXIoKSBjb25zdCB7
IHJldHVybiBtX3Byb3ZpZGVyOyB9CiAgICAgYm9vbCBpc1BoaXNoaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9pc1BoaXNoaW5nOyB9CiAgICAgYm9vbCBpc01hbHdhcmUoKSBjb25zdCB7IHJldHVybiBt
X2lzTWFsd2FyZTsgfQpAQCAtNTAsOSArNTAsOSBAQCBjbGFzcyBTYWZlQnJvd3NpbmdSZXN1bHQg
OiBwdWJsaWMgUmVmQ291bnRlZDxTYWZlQnJvd3NpbmdSZXN1bHQ+IHsKIAogcHJpdmF0ZToKICNp
ZiBIQVZFKFNBRkVfQlJPV1NJTkcpCi0gICAgU2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNvcmU6OlVS
TCYmLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICopOworICAgIFNhZmVCcm93c2luZ1Jlc3VsdChV
UkwmJiwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqKTsKICNlbmRpZgotICAgIFdlYkNvcmU6OlVS
TCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fcHJvdmlkZXI7CiAgICAgYm9v
bCBtX2lzUGhpc2hpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc01hbHdhcmUgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5k
ZXggOGJjNGE3NTNmYTc2NzNkNDExYjliNGNmNWI1NDQyOTc5ZDY5MzIwNC4uMmVhNzlmODJkMTM5
ZTFkYjVlMjcxODFlNDI1YzllZWUxNTE4ZTIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCmluZGV4IDk0OWM4ZGY3MjFl
ZDllZDM1YTdkYTY4ZWM3Y2Y5MTI3OWVmOTBhMzEuLjI2OWQwYzMyZmIzMjA4NGI1N2U3ZDE2YjBj
Y2YyNWNlZjc0ZjljMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3Rl
bVByZXZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVt
UHJldmlld0NvbnRyb2xsZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiBPQkpDX0NMQVNTIFFMUHJldmlld0Nv
bnRyb2xsZXI7CkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
IHsKIAogICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpOwogICAgIHZvaWQgdXBkYXRlUHJvZ3Jlc3MoZmxvYXQpOwotICAgIHZvaWQg
ZmluaXNoKFdlYkNvcmU6OlVSTCk7CisgICAgdm9pZCBmaW5pc2goVVJMKTsKICAgICB2b2lkIGNh
bmNlbCgpOwogICAgIHZvaWQgZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5k
ZXggZTMzMTY3YTg5NTBjMTY4ZjAxYzAzMmNlYjllNWY4Zjk4MWU1MTM4MC4uOWYyNDBkMzAyMWVk
Zjg2YzdjYWVkN2U4MTQ1OTUxZGVkMzI2MGUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTcxLDEwICs3MSwxMCBAQCBjbGFzcyBX
ZWJDb29raWVNYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpDb29raWVNYQogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uo
UEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CiAKICAgICB2b2lkIHNldENvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwot
ICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAg
IHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248
dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lkIGdldEFsbENvb2tpZXMo
UEFMOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZv
aWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAg
ICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBIVFRQQ29v
a2llQWNjZXB0UG9saWN5LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBGdW5j
dGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggMjk3YWE4YWYz
MjU1YjBkYWY0YzQ3M2FlNzczZTcwZGFjNjliNDVjOC4uNDk3YjIzMTdiN2RjZjE2NmY3MWRjNDAw
ZTVmZjc4ZmQwZWExZGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
aApAQCAtODAsMTQgKzgwLDE0IEBAIGNsYXNzIFdlYkZyYW1lUHJveHkgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpGcmFtZT4gewogCiAgICAgRnJhbWVMb2FkU3Rh
dGUmIGZyYW1lTG9hZFN0YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZTsgfQogCi0gICAg
dm9pZCBsb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgbG9hZFVSTChjb25z
dCBVUkwmKTsKICAgICB2b2lkIHN0b3BMb2FkaW5nKCkgY29uc3Q7CiAKLSAgICBjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7IH0K
LSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9CisgICAgY29uc3QgVVJMJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVybCgpOyB9CisgICAgY29uc3QgVVJM
JiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUucHJvdmlz
aW9uYWxVUkwoKTsgfQogCi0gICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CisgICAgdm9pZCBz
ZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9
CiAKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9NSU1FVHlw
ZTsgfQogICAgIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGFpbnNQbHVnaW5Eb2N1bWVudDsgfQpAQCAtMTA4LDEzICsxMDgsMTMgQEAgY2xhc3MgV2Vi
RnJhbWVQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkZy
YW1lPiB7CiAgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6
RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0
YShBUEk6OlVSTCosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29y
ZTo6VVJMJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZChjb25zdCBVUkwmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWQoKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
V2ViQ2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50KTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkKCk7Ci0gICAgdm9pZCBk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOyAvLyBlZy4gYW5j
aG9yIG5hdmlnYXRpb24sIHNlc3Npb24gc3RhdGUgY2hhbmdlLgorICAgIHZvaWQgZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbihjb25zdCBVUkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBz
ZXNzaW9uIHN0YXRlIGNoYW5nZS4KICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGljeUxpc3Rl
bmVyUHJveHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQ
STo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgVmVjdG9y
PFJlZjxTYWZlQnJvd3NpbmdSZXN1bHQ+PiYmKT4mJiwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5n
UmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmlu
ZGV4IDg0NDIwYTEzNTc0OWM0OWYyM2Q4ZTJjNDkwYzhkZDk0NzZjZDMzN2YuLjU1NGU3NDQ4ZWM0
YWNmODY5NzNkMjZiOWRhMDBhZDFjNjNiY2Q5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtNTAsMTAgKzUwLDYgQEAgT0JKQ19DTEFTUyBXS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyOwogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNlbmRpZgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtMTUxLDcgKzE0Nyw3IEBAIGNsYXNzIFdlYkluc3Bl
Y3RvclByb3h5CiAgICAgc3RhdGljIFN0cmluZyBpbnNwZWN0b3JQYWdlVVJMKCk7CiAgICAgc3Rh
dGljIFN0cmluZyBpbnNwZWN0b3JUZXN0UGFnZVVSTCgpOwogICAgIHN0YXRpYyBTdHJpbmcgaW5z
cGVjdG9yQmFzZVVSTCgpOwotICAgIHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdEluc3BlY3RvclBh
Z2UoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5z
cGVjdG9yUGFnZShjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5p
bXVtV2luZG93V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1XaW5kb3dI
ZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCmluZGV4IDNhNTk0YmI3YjRhMjYwYjk0YjA4ZmZj
YmVkYzJhZWNhY2U5NDFhZDcuLjAyODEyY2Y3ZmJlN2I0ZTU2ZjI3NTc5MmVmMjk0MGQ5ZWVmZDg2
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAi
QVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDIyZjI2YWVhMTg0OGE0MDlhODI4N2Mz
MjY1NjViM2YzZWQxMzdjMC4uODg2YmMyYmQxMzNjNjM5YTBkMGNlNGE3ZGZlOGUzYzZiNDA2Nzc0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTMsMTMg
KzE1MywxMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dEluZGljYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJi
bGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3Rk
aW8uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3lz
dGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFy
c2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtMTA3MSw3ICsxMDcxLDcgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIGMKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNh
Y3Rpb24oKTsKIAotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0
cmFuc2FjdGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IGJsYW5rVVJMKCkuc3Ry
aW5nKCkpOworICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFu
c2FjdGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IFdURjo6YmxhbmtVUkwoKS5z
dHJpbmcoKSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlBy
b2Nlc3MoKTsKQEAgLTEwOTIsNyArMTA5Miw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAg
ICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojps
b2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgYm9vbCBm
b3JTYWZlQnJvd3NpbmcpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywg
Y29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIGJvb2wgZm9yU2FmZUJyb3dzaW5nKQogewogICAgIC8vIFdoZW4gdGhlIFVJ
UHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9u
YWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5h
dGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBm
cm9tIGJlaW5nCkBAIC0xMTQxLDcgKzExNDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdl
YkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwog
ICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQ
ZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7Cisg
ICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBX
VEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogCiAgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFt
ZXRlcnM7CiAgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsKQEAgLTExNjAsNyAr
MTE2MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgSW50UG9pCiAgICAgaWYgKG1faXNDbG9zZWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1
cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghaXNWYWxpZCgpKQpAQCAtMzUwNiw3ICszNTA2LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkK
ICAgICBtX25hdmlnYXRpb25TdGF0ZS0+ZGlkRGVzdHJveU5hdmlnYXRpb24obmF2aWdhdGlvbklE
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwm
JiB1cmwsIFdlYkNvcmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCwgVVJM
JiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC0zNjA0LDcgKzM2
MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlEKQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENhbmNl
bENsaWVudFJlZGlyZWN0KCp0aGlzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5n
ZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIFdlYkNv
cmU6OlVSTCYmIHVybCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVS
TEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBVUkwmJiB1cmwpCiB7CiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtMzg3NCw3
ICszODc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELAogICAgIH0KIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5h
dmlnYXRpb25UeXBlLCBXZWJDb3JlOjpVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgp
KTsKIApAQCAtNDI0MSw3ICs0MjQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRG
b3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihX
ZWJDb3JlOjpVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxT
dHJpbmc+JiYgbm90aWZpY2F0aW9ucykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50UnVsZUxp
c3ROb3RpZmljYXRpb24oVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBW
ZWN0b3I8U3RyaW5nPiYmIG5vdGlmaWNhdGlvbnMpCiB7CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5jb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oKnRoaXMsIFdURk1vdmUodXJsKSwgV1RGTW92
ZShpZGVudGlmaWVycyksIFdURk1vdmUobm90aWZpY2F0aW9ucykpOwogfQpAQCAtNTk1Miw3ICs1
OTUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAobV9w
cm9jZXNzLT5pc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkgewotICAgICAgICBTdHJpbmcgZG9tYWlu
ID0gV2ViQ29yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihXZWJDb3JlOjpVUkwoeyB9
LCBjdXJyZW50VVJMKCkpLmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIGRvbWFp
biA9IFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oVVJMKHsgfSwgY3VycmVu
dFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1wdHko
KSkKICAgICAgICAgICAgIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aEVuaGFuY2VkUHJpdmFjeShX
ZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmRvbWFpbkNhdXNpbmdKZXRzYW1LZXkoKSwg
ZG9tYWluLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB9CkBAIC03MDMxLDcgKzcw
MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgd3JhcHBlZEtleSwgYm9vbCYgc3VjYwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6
ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIFN0cmluZyYgcmVzdWx0KQordm9pZCBXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYg
Y2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNzY3Niw5
ICs3Njc2LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVS
TFNjaGVtZUhhbmRsZXI+JiYgaGFuZGxlciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAg
YXV0byBjYW5vbmljYWxpemVkU2NoZW1lID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNj
aGVtZShzY2hlbWUpOworICAgIGF1dG8gY2Fub25pY2FsaXplZFNjaGVtZSA9IFdURjo6VVJMUGFy
c2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUpOwogICAgIEFTU0VSVChjYW5vbmlj
YWxpemVkU2NoZW1lKTsKLSAgICBBU1NFUlQoIVVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKGNh
bm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOworICAgIEFTU0VSVCghV1RGOjpVUkxQYXJzZXI6
OmlzU3BlY2lhbFNjaGVtZShjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKIAogICAgIGF1
dG8gc2NoZW1lUmVzdWx0ID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lLmFkZChjYW5vbmlj
YWxpemVkU2NoZW1lLnZhbHVlKCksIGhhbmRsZXIuZ2V0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQo
c2NoZW1lUmVzdWx0LCBzY2hlbWVSZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGU2NmM1NGE4YTMyNTgzYmJmNzhiMGI3M2Y3YWQ5YTNj
ZWNjYzY1NTguLmVlZGE3MTViNzAxYzE4YWE1ZjMyMzVhY2NmODdiZjc4ZTNjOTFiMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04Myw3ICs4Myw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRD
aGVja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24uaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CkBAIC05NSw2ICs5NCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDY0LDcgKzQ2NCw3IEBA
IGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6OlBhZ2U+CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxv
d0V4dGVybmFsU2NoZW1lcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMLCBj
b25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEg
PSBudWxscHRyKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9
IG51bGxwdHIpOwotICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNl
VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEgPSBudWxscHRyLCBib29sIGZvclNhZmVCcm93c2luZyA9IGZhbHNlKTsKKyAgICB2b2lk
IGxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0ciwgYm9vbCBmb3JTYWZlQnJvd3Npbmcg
PSBmYWxzZSk7CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9j
dW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogCkBAIC0xMDY0LDgg
KzEwNjQsOCBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlS
ZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNhdmVEYXRh
VG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmlu
ZyYmIG1pbWVUeXBlLCBXZWJDb3JlOjpVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJik7
Ci0gICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2Vz
dGVkRmlsZW5hbWUsIFdlYkNvcmU6OlVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIo
U3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBVUkwmJiBvcmln
aW5hdGluZ1VSTCwgQVBJOjpEYXRhJik7CisgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFVSTCYmIG9yaWdpbmF0aW5nVVJM
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
b2lkIHNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25S
YXcoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
dGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBj
b25zdCBTdHJpbmcmIHBkZlVVSUQpOwogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVy
QW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpOwpAQCAtMTE3OCw3ICsxMTc4LDcgQEAg
Y2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6UGFnZT4KICAgICB2b2lkIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhf
dD4mLCBib29sJiBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiYpOwogI2VuZGlmCiAKLSAgICB2
b2lkIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5k
ZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBT
dHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywg
Y29uc3QgVVJMJiwgU3RyaW5nJiByZXN1bHQpOwogCiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2Vi
Q29yZTo6SW50UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlv
bnMsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKQEAgLTEzNDYsNyArMTM0Niw3IEBAIGNsYXNzIFdl
YlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBh
Z2U+CiAgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICNlbmRpZgogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNv
bnN0IFdlYkNvcmU6OlVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2
b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25z
dCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1
Y2Nlc3MpPiYmKTsKIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgcHJlZmVyZW5jZXNTdG9yZSgp
IGNvbnN0OwogCkBAIC0xNDExLDE3ICsxNDExLDE3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBk
aWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENyZWF0ZVdp
bmRvdyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYp
OwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6OlVS
TCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRv
dWJsZSBkZWxheSk7CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpOwotICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYm
KTsKKyAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJh
bWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWlu
c1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVu
dD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQg
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNl
ckRhdGEmKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVE
b2N1bWVudE5hdmlnYXRpb25UeXBlLCBXZWJDb3JlOjpVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsK
KyAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlLCBVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZU1haW5E
b2N1bWVudCh1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsK
QEAgLTE0NDgsMTEgKzE0NDgsMTEgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBv
bGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsK
LSAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJiwgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CisgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0No
ZWNrKGNvbnN0IFVSTCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCiAgICAgdm9p
ZCB3aWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlE
LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVl
cywgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICAgICAgCi0gICAg
dm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxT
dHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7Cisg
ICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oVVJMJiYsIFZlY3RvcjxTdHJpbmc+
JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7CiAKICAgICAv
LyBIaXN0b3J5IGNsaWVudAogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEo
Y29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwpAQCAtMTQ3
Myw4ICsxNDczLDggQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0
dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFxdWVQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcGx1Z2luc1BhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgd2ViR0xQb2xpY3lG
b3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5
Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7Ci0gICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JV
UkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBv
bGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwo
VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVk
UmVwbHkmJik7CisgICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5
JiYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xiYXJzQXJlVmlz
aWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSk7CiAgICAgdm9pZCBnZXRUb29sYmFyc0FyZVZp
c2libGUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxh
eWVkUmVwbHkmJik7CkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQg
c2V0UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0
SW5wdXRJZGVudGlmaWVyLCB1aW50NjRfdCBjb21wbGV4VGV4dElucHV0U3RhdGUpOwogI2VuZGlm
CiAKLSAgICBib29sIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgYm9vbCBtYXli
ZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFVSTCYsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYpOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQog
ICAgIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlZmJiNGIxZjg3YzQ3OGZi
MDM4MzI2Yjk5NDAyN2YyMmE3ODBkNWE0Li5jMGQ3ZDgyMTI1NGMzZTdiYTlmYjAzZDllN2Y1YThm
MWQ2ZjRlYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0zNCw4ICszNCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAgICAgVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IHBsdWdpblVuYXZh
aWxhYmlsaXR5UmVhc29uLCBTdHJpbmcgbWltZVR5cGUsIFN0cmluZyBwbHVnaW5VUkxTdHJpbmcs
IFN0cmluZyBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3Ry
aW5nLCBTdHJpbmcgcGFnZVVSTFN0cmluZykKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29y
ZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKLSAgICBSZXNvbHZl
V2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xp
Y3kpIERlbGF5ZWQKKyAgICBXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3Qg
bG9hZFBvbGljeSkgRGVsYXllZAorICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwgdXJs
KSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVsYXllZAogI2VuZGlmIC8vIEVOQUJMRShXRUJH
TCkKICAgICBEaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoc3RydWN0IFdlYkNvcmU6OlZpZXdw
b3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIERpZFJlY2VpdmVFdmVudCh1aW50MzJfdCB0
eXBlLCBib29sIGhhbmRsZWQpCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIERpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3Qg
V2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllciB3aW5kb3dJZGVudGlmaWVyKQogCiAgICAg
IyBGcmFtZSBsb2FkIG1lc3NhZ2VzCi0gICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1
cmwsIFdlYkNvcmU6OlVSTCB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKKyAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMIHVybCwgVVJMIHVucmVhY2hhYmxlVVJMLCBXZWJL
aXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCiAgICAgV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyB1cmwsIGRvdWJsZSBkZWxheSkKICAgICBEaWRDYW5jZWxDbGllbnRS
ZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgRGlkQ2hhbmdlUHJvdmlzaW9u
YWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdl
YkNvcmU6OlVSTCB1cmwpCisgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwpCiAgICAgRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJy
b3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBl
LCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5E
b2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNl
ZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRG
YWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
QEAgLTE0NSw3ICsxNDUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRGV0ZWN0WFNT
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAg
ICBEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCB0eXBlLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJL
aXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5
cGUsIFVSTCB1cmwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ2hhbmdlTWFp
bkRvY3VtZW50KHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCkKIApAQCAtNDI3LDcgKzQyNyw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8
V2ViQ29yZTo6UmVjZW50U2VhcmNoPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNo
ZXMoU3RyaW5nIG5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiByZXN1bHQp
CiAKLSAgICBTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3RlZEZp
bGVuYW1lLCBXZWJDb3JlOjpVUkwgb3JpZ2luYXRpbmdVUkwsIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhKQorICAgIFNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVk
RmlsZW5hbWUsIFVSTCBvcmlnaW5hdGluZ1VSTCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVu
V2l0aE5hdGl2ZUFwcGxpY2F0aW9uKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIHBkZlVV
SUQpCkBAIC00ODcsNyArNDg3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAg
IERpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogCi0gICAgQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYkNv
cmU6OlVSTCB1cmwsIFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiBu
b3RpZmljYXRpb25zKQorICAgIENvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihVUkwgdXJsLCBW
ZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9ucykK
IAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1Mp
CiAgICAgQWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0X3QgY29udGV4dElkKQpA
QCAtNTQ2LDYgKzU0Niw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RvcERp
c3BsYXlMaW5rKHVuc2lnbmVkIG9ic2VydmVySUQpCiAjZW5kaWYKIAotICAgIFNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFs
bGVuZ2VTdHJpbmcsIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQorICAgIFNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0
cmluZyBjaGFsbGVuZ2VTdHJpbmcsIFVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggODE3NWEzYzY4
NWY3NDI3ZjE1NDE0OTVhZjIxNTA5YWM5OGMxZjE3ZS4uMGEwMmUzYmQ3MTg4ZGRlMDA1NzAyNjZk
MDhiMjFiNWQzNzg3NzkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtODYsNyArODYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3Jl
ZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CkBAIC05NCw2ICs5Myw3IEBACiAjaW5jbHVkZSA8d3RmL1Byb2Nl
c3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9T
Y29wZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDE0NDQyOGI2ZjA5ZGM5YjVlZjcxNzU1
N2Y2NDQ0Y2FlZGU1NGEwYzEuLmIxZTRjNWQxY2M0OTIxMDEyMTYzNWU4N2FiYjc5NjdkMzQxZDVm
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjM0LDcg
KzIzNCw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1BvCiAgICAgdm9pZCByZWdpc3RlclVSTFNj
aGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVn
aXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYp
OwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6VVJMJik7Cisg
ICAgdm9pZCBwcmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgVVJMJik7CiAKICAgICBWaXNpdGVkTGlu
a1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdl
dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDllODQ0Y2RiNWU2ZjI5YmQ4YTRkMzE1Y2VmZmRiNmRjYzE4MTE5MzIuLmFkMjczYTIyODhl
ZTM4OWI2NmY0ODU4ZDJlNDYxYTUxOWVkOTEzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1
ZmZpeC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcxNiw3
ICs3MTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFp
bGVkVG9MYXVuY2goKQogI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAgICAgaWYgKHBh
Z2VzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIGF1dG8mIHBhZ2UgPSAqcGFnZXNbMF07Ci0gICAg
ICAgIFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdlYkNvcmU6
OlVSTCh7IH0sIHBhZ2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgICAg
IFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFVSTCh7IH0sIHBh
Z2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWlu
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHBhZ2UubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoRW5o
YW5jZWRQcml2YWN5KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6ZG9tYWluQ2F1c2lu
Z0NyYXNoS2V5KCksIGRvbWFpbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBlMGE2N2NiNzg5
ZGZmNmQyMGFhNWI5NWRhNjAxZmMzZjlmYzJlOGM2Li4xMjZhZDI2YjY2MDljMjIyNmRlYzk4NmI1
NTJkNTI3ZGFlNDIwODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaApAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogc3RydWN0
IFBsdWdpbkluZm87CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQpAQCAtMTQ2LDEwICsx
NDUsMTAgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5
LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2wKIAogICAgIHZvaWQgd2lsbEFjcXVpcmVV
bml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKSB7IG1fbWF5SGF2ZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbiA9IHRydWU7IH0KICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nl
c3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBoYXNBc3N1bWVkUmVhZEFjY2Vz
c1RvVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgaGFzQXNzdW1lZFJl
YWRBY2Nlc3NUb1VSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIGJvb2wgY2hlY2tVUkxSZWNl
aXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgY2hlY2tVUkxSZWNl
aXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgY2hlY2tV
UkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wg
ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAz
MTc4MzZiNDJmZjY3NGU1N2I0Y2JlYWVlODcxZGYxMzQ3ZWU3NWY0Li5mOGQ5Mjg0NWE2M2ZhMmIz
OWIxN2IxZWJlODliMTcxNWZhN2JhNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE3Miw3
ICsxNzIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sIHZhbAogICAgIH0pOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBVUkwmIHVybCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VibWl0VGVsZW1ldHJ5KCkKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25z
dCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RV
UkwpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0
aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZ2VVUkwsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiByZWRpcmVjdFVS
TCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmlu
ZGV4IDZjNDEwZmE0YTk1YTNjMDA4ZDU3YjIzZjZjODMxZDllY2QwNDA3ZDAuLjU4MWEyYWU5MThi
ZTc0OWY2YTNhMzRjMDYyOGE1MDQ1NGE0N2JiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw3
ICs0MSw2IEBAIGNsYXNzIFdvcmtRdWV1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M7CiB9CiAKQEAgLTg0LDI4ICs4MywyOCBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUmVzbwogCiAg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKTsKIAotICAgIHZvaWQgbG9nRnJhbWVO
YXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHBhZ2VV
UkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
cmVkaXJlY3RVUkwpOwotICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJ
bnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0TGFzdFNlZW4o
Y29uc3QgV2ViQ29yZTo6VVJMJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVz
b3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiwgY29uc3Qg
VVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBVUkwm
IHJlZGlyZWN0VVJMKTsKKyAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rp
b24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhh
c0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFVSTCYsIFNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShj
b25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VmVy
eVByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2Uo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0g
ICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3Vi
cmVzb3VyY2VVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwmIHN1
YkZyYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhjb25z
dCBXZWJDb3JlOjpVUkwmIGhvc3RSZWRpcmVjdGVkRnJvbSwgY29uc3QgV2ViQ29yZTo6VVJMJiBo
b3N0UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2
b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgYm9vbCk7Ci0gICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRT
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJmcmFtZSwg
Y29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3Qg
V2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6
VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOwotICAgIHZvaWQgc2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lSG9zdE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9p
ZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworICAgIHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXIoY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiB0b3BG
cmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lz
dGVyZWRBc1N1YkZyYW1lVW5kZXIoY29uc3QgVVJMJiBzdWJGcmFtZSwgY29uc3QgVVJMJiB0b3BG
cmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0
IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYs
IGJvb2wpOworICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luKGNvbnN0IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZv
aWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3Vy
Y2UsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRp
cmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oY29u
c3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsK
KyAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHRvcEZyYW1l
SG9zdE5hbWUsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBj
b25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOwogICAgIHZvaWQgc2NoZWR1bGVDb29r
aWVCbG9ja2luZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0Jsb2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckJsb2NraW5nU3RhdGVGb3JEb21haW5z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpAQCAtMTMyLDcgKzEzMSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJSZXNvCiAgICAgdm9p
ZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29s
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiAgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmKT4mJiBjYWxsYmFjaykgeyBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKTsgfQogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5oCmluZGV4IDc5OTI2M2VhYzRhMmMyODgyNDY0ZDllZmFlYTQ2YTg0MzE0OWRhNWYu
LjVmNGEzYTVkMTg0M2ViYTJiMTQwMjY3MjEwYTQwNDg5ZTdjOTk3N2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgK
QEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QYXRoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBEcmFnU291cmNlU3Rh
dGUgewogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGlj
YXRvckRhdGE7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXRoPiB2aXNpYmxlUGF0aDsK
ICAgICBTdHJpbmcgbGlua1RpdGxlOwotICAgIFdlYkNvcmU6OlVSTCBsaW5rVVJMOworICAgIFVS
TCBsaW5rVVJMOwogICAgIGJvb2wgcG9zc2libHlOZWVkc0RyYWdQcmV2aWV3VXBkYXRlIHsgdHJ1
ZSB9OwogCiAgICAgTlNJbnRlZ2VyIGl0ZW1JZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQppbmRl
eCBiYjY2MzQ3NTI1ZjE4ODcxMDA3Y2U1MDRiZWI5MjI0NTljOTBlMWNhLi5lMzQ2MGY0MTVkMGI4
NjhiZGYzYzI5MjVmYzQzOGI1N2U3ZmY5MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpAQCAtNDEsMTAgKzQxLDEw
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2Nv
YS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2lt
cG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlT
ZW1hcGhvcmUuaD4KIApAQCAtMzA0LDcgKzMwNCw3IEBAIC0gKHZvaWQpX2NyZWF0ZVNoZWV0V2l0
aEVsZW1lbnRBY3Rpb25zOihOU0FycmF5ICopYWN0aW9ucyBzaG93TGlua1RpdGxlOihCT09MKXNo
CiAgICAgICAgIGlmIChpc0phdmFTY3JpcHRVUkwpCiAgICAgICAgICAgICB0aXRsZVN0cmluZyA9
IFdFQl9VSV9TVFJJTkdfS0VZKCJKYXZhU2NyaXB0IiwgIkphdmFTY3JpcHQgQWN0aW9uIFNoZWV0
IFRpdGxlIiwgIlRpdGxlIGZvciBhY3Rpb24gc2hlZXQgZm9yIEphdmFTY3JpcHQgbGluayIpOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV2ViQ29yZTo6dXNlclZp
c2libGVTdHJpbmcodGFyZ2V0VVJMKTsKKyAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV1RGOjp1
c2VyVmlzaWJsZVN0cmluZyh0YXJnZXRVUkwpOwogICAgICAgICAgICAgdGl0bGVJc1VSTCA9IFlF
UzsKICAgICAgICAgfQogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjAxYzRmNmEzYzU0
ZTk5YzcxNjU1NzhiYWU3MjJmMzhlY2I4ZTU4Yy4uNTMxNmJjM2QwNmM5MmE2ZTcyNzRkYjgxMmM0
YjljZjIxMTk1MTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04Nyw3ICs4Nyw2IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1w
b3J0IDxXZWJLaXQvV2ViU2VsZWN0aW9uUmVjdC5oPiAvLyBGSVhNRTogV0syIHNob3VsZCBub3Qg
aW5jbHVkZSBXZWJLaXQgaGVhZGVycyEKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmg+CkBAIC05OCw2ICs5Nyw3IEBACiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNp
bXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+Cisj
aW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC00ODk1LDkgKzQ4OTUsOSBA
QCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICop
YXNzaXN0YW50IG9wZW5FbGVtZW50QXRMbwogLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDoo
V0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXRoVVJMOihO
U1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAgaWYgKF90ZXh0U2Vs
ZWN0aW9uQXNzaXN0YW50KQotICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1No
YXJlU2hlZXRGb3I6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3Rd
OworICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6V1RG
Ojp1c2VyVmlzaWJsZVN0cmluZyh1cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CiAgICAgZWxz
ZSBpZiAoX3dlYlNlbGVjdGlvbkFzc2lzdGFudCkKLSAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Np
c3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpi
b3VuZGluZ1JlY3RdOworICAgICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVT
aGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0
XTsKIH0KIAogI2lmIEhBVkUoQVBQX0xJTktTKQpAQCAtNjE4Nyw3ICs2MTg3LDcgQEAgLSAoVUlW
aWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29u
dHJvbGxlcjooVUlQcmV2aWUKIAogICAgIE5TVVJMICp0YXJnZXRVUkwgPSBjb250cm9sbGVyLnBy
ZXZpZXdEYXRhW1VJUHJldmlld0RhdGFMaW5rXTsKICAgICBVUkwgY29yZVRhcmdldFVSTCA9IHRh
cmdldFVSTDsKLSAgICBib29sIGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdl
dFVSTC5pc0VtcHR5KCkgJiYgKFdlYkNvcmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29yZVRh
cmdldFVSTCkgfHwgV2ViQ29yZTo6cHJvdG9jb2xJcyhjb3JlVGFyZ2V0VVJMLCAiZGF0YSIpKTsK
KyAgICBib29sIGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0Vt
cHR5KCkgJiYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShjb3JlVGFyZ2V0VVJMKSB8fCBX
VEY6OnByb3RvY29sSXMoY29yZVRhcmdldFVSTCwgImRhdGEiKSk7CiAKICAgICBpZiAoW19wcmV2
aWV3SXRlbUNvbnRyb2xsZXIgdHlwZV0gPT0gVUlQcmV2aWV3SXRlbVR5cGVMaW5rKSB7CiAgICAg
ICAgIF9oaWdobGlnaHRMb25nUHJlc3NDYW5DbGljayA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXgg
YmRjYzU3MTBmYzdmNDk2NWYzYzk4ZGUxNzE2MTM1OWZhNzM1NzU4Mi4uNWFhY2M1ZWU5MDQ1YWFm
ZGMxNmEzNjM1YTFlYmY0MWE5MjRhNDQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC00MSwxMyArNDEs
MTMgQEAKICNpbXBvcnQgIl9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCIKICNp
bXBvcnQgIl9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBv
cnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIK
ICNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CkBA
IC0xODQsNyArMTg0LDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVk
CiAKICAgICAgICAgaWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19j
YXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oW3JlcXVlc3QudmlldyBVSURlbGVnYXRlXSk7
CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNp
b25IYW5kbGVyOildKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJM
KFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CisgICAgICAgICAgICBVUkwg
cmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CiAgICAgICAgICAg
ICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQoKSwgKnJlcXVlc3Qub3JpZ2luLmdldCgpKSk7
CiAgICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
PiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUo
dWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6
YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwogICAgICAgICAgICAgV0tXZWJW
aWV3ICp2aWV3RnJvbVJlcXVlc3QgPSByZXF1ZXN0LnZpZXcuZ2V0KCk7CkBAIC0yMDAsOCArMjAw
LDggQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAgIGlm
IChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3Vs
ZFJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6aXNNYWluRnJhbWU6bWFpbkZy
YW1lVVJMOildKSB7CiAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1h
aW5GcmFtZSA9IHJlcXVlc3QuZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgICAgICAg
ICBib29sIGlzTWFpbkZyYW1lID0gcmVxdWVzdC5mcmFtZSA9PSBtYWluRnJhbWU7Ci0gICAgICAg
ICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0
LmZyYW1lLT51cmwoKSk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdl
YkNvcmU6OlVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCByZXF1ZXN0
RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCBt
YWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogICAgICAgICAgICAgcmVxdWly
ZXNVc2VyQXV0aG9yaXphdGlvbiA9IFt1aURlbGVnYXRlIF93ZWJWaWV3OnJlcXVlc3Qudmlldy5n
ZXQoKQogICAgICAgICAgICAgICAgICBzaG91bGRSZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0
aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzTWFpbkZyYW1lOmlzTWFpbkZyYW1lCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbQppbmRleCBkMzhmMzFjODE1ZjNj
OWYzZTk4ZGE1MmU1NGZiODg4ODRlZDBhNDMwLi5hZWEwZDZkMzlmNjJkNzFkOTY3NDQ2ZTY4MjI3
ZWJkN2YyODNhZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tM
ZWdhY3lQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2Fj
eVBERlZpZXcubW0KQEAgLTQzLDExICs0MywxMSBAQAogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZp
Y2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVO
U1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAK
IC8vIEFsbCBvZiBVSVBERlBhZ2UqIGFyZSBkZXByZWNhdGVkLCBzbyBqdXN0IGlnbm9yZSBkZXBy
ZWNhdGVkIGRlY2xhcmF0aW9ucwogLy8gaW4gdGhpcyBmaWxlIHVudGlsIHdlIHN3aXRjaCBvZmYg
dGhlbS4KQEAgLTc3OSw3ICs3NzksNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihX
S0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50QXRMbwogLSAodm9p
ZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFu
dCBzaGFyZUVsZW1lbnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdS
ZWN0CiB7CiAgICAgX3dlYlNlbGVjdGlvbkFzc2lzdGFudCA9IGFkb3B0TlMoW1tVSVdLU2VsZWN0
aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwotICAgIFtfd2ViU2VsZWN0
aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5n
KHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKKyAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFu
dCBzaG93U2hhcmVTaGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6
Ym91bmRpbmdSZWN0XTsKICAgICBfd2ViU2VsZWN0aW9uQXNzaXN0YW50ID0gbmlsOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBkZmY0YzZjYmYwMDMy
ZTE1NWNiY2I5MWYxM2FiZmIzZGMyMzQwMWVhLi5jZjRlOGE3MzMzNGZmNTdjMjZkY2YxNTJkMjM3
NGNhZThkYmNjZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQ
REZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0K
QEAgLTM4LDExICszOCwxMSBAQAogI2ltcG9ydCAiX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50
ZXJuYWwuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0
Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIEBp
bnRlcmZhY2UgV0tQREZWaWV3ICgpIDxQREZIb3N0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSwgV0tB
Y3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlPgogQGVuZApAQCAtNDk3LDcgKzQ5Nyw3IEBAIC0g
KHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Np
c3RhbnQgb3BlbkVsZW1lbnRBdExvCiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0Fj
dGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdGhVUkw6KE5TVVJM
ICopdXJsIHJlY3Q6KENHUmVjdClib3VuZGluZ1JlY3QKIHsKICAgICBhdXRvIHNlbGVjdGlvbkFz
c2lzdGFudCA9IGFkb3B0TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0
aFZpZXc6W19ob3N0Vmlld0NvbnRyb2xsZXIgdmlld11dKTsKLSAgICBbc2VsZWN0aW9uQXNzaXN0
YW50IHNob3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJv
bVJlY3Q6Ym91bmRpbmdSZWN0XTsKKyAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNo
ZWV0Rm9yOldURjo6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3Rd
OwogfQogCiAjaWYgSEFWRShBUFBfTElOS1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlcklPUy5tbQppbmRleCA0ZWRkOTRiZWJjZGRiNTA0MGIwMDk0ZmM0ODdhNTUy
NmU2OTI1MGZlLi4yNjU4YjM2M2I0MTFhM2JiZmI2ZDRkZDZkM2VkYTRkMWFhYjIxY2VlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KQEAgLTQ1LDEy
ICs0NSwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1N0cmluZ1NQ
SS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1VSTEZvcm1hdHRpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC05NDEs
NyArOTQxLDcgQEAgLSAodm9pZClfdXBkYXRlTG9jYXRpb25JbmZvCiAgICAgaWYgKExpbmtQcmVz
ZW50YXRpb25MaWJyYXJ5KCkpCiAgICAgICAgIGRvbWFpbiA9IFt1cmwgX2xwX3NpbXBsaWZpZWRE
aXNwbGF5U3RyaW5nXTsKICAgICBlbHNlCi0gICAgICAgIGRvbWFpbiA9IHVzZXJWaXNpYmxlU3Ry
aW5nKHVybCk7CisgICAgICAgIGRvbWFpbiA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsK
ICNlbmRpZgogCiAgICAgTlNTdHJpbmcgKnRleHQgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4
IDE3ZjY2YjcxNzc5YzA1NDljZjY4YWUyODE2NTgxOGE3MjlkNjYzZmUuLjlmNjc4NTg3NmU2OWM3
YjY0ZGQyMTAyODUwZTBmNTYwNGQ4ZTRiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0xMTMzLDcg
KzExMzMsNyBAQCBib29sIGRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IHNpemUsIFNlc3Npb25TdGF0ZSYgcwogICAgIH0KIAogICAgIGlmIChhdXRv
IHByb3Zpc2lvbmFsVVJMU3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzZXNzaW9uU3RhdGVEaWN0aW9uYXJ5LCBwcm92aXNpb25hbFVSTEtl
eSkpKSB7Ci0gICAgICAgIHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTCA9IFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgcHJvdmlzaW9uYWxVUkxTdHJpbmcpOworICAgICAgICBzZXNzaW9u
U3RhdGUucHJvdmlzaW9uYWxVUkwgPSBVUkwoVVJMKCksIHByb3Zpc2lvbmFsVVJMU3RyaW5nKTsK
ICAgICAgICAgaWYgKCFzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwuaXNWYWxpZCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGY4
NzIwNzA2NGM3YmU1MWVhZWJiMjdhMDMxZDQ5MDUxMTJiMzg4ZjQuLjRhYWZkZmYzZGVhOGNmOTQy
ZDAwYTQwYzdiNzRhN2YxM2M2YzZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzgsMTMg
KzM4LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQg
PFdlYkNvcmUvR2VvbWV0cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGlj
YXRvcldpbmRvdy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkv
bWFjL0RhdGFEZXRlY3RvcnNTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0xvb2t1cFNQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNNZW51U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21h
Yy9OU1BvcG92ZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL1F1aWNrTG9va01hY1NQSS5o
PgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIFNP
RlRfTElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6LCBRdWlja0xvb2tVSSkKIFNPRlRf
TElOS19DTEFTUyhRdWlja0xvb2tVSSwgUUxQcmV2aWV3TWVudUl0ZW0pCkBAIC0yNzYsMTcgKzI3
NiwxNyBAQCAtIChpZCA8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilfZGVm
YXVsdEFuaW1hdGlvbkNvbnRyb2xsZXIKIAogICAgIFN0cmluZyBhYnNvbHV0ZUxpbmtVUkwgPSBo
aXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBpZiAoIWFic29sdXRlTGlua1VS
TC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMoYWJzb2x1dGVM
aW5rVVJMLCAibWFpbHRvIikpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0
ZUxpbmtVUkwsICJtYWlsdG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVB
Y3Rpb25NYWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250
cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoV2Vi
Q29yZTo6cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJ0ZWwiKSkgeworICAgICAgICBpZiAo
V1RGOjpwcm90b2NvbElzKGFic29sdXRlTGlua1VSTCwgInRlbCIpKSB7CiAgICAgICAgICAgICBf
dHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvblRlbExpbms7CiAgICAgICAgICAgICByZXR1cm4gW3Nl
bGYgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rXTsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGFic29sdXRlTGlu
a1VSTCkpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0
ZUxpbmtVUkwpKSB7CiAgICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvbkxpbmtQ
cmV2aWV3OwogCiAgICAgICAgICAgICBRTFByZXZpZXdNZW51SXRlbSAqaXRlbSA9IFtOU01lbnVJ
dGVtIHN0YW5kYXJkUXVpY2tMb29rTWVudUl0ZW1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRl
eCAyMDlhODVkZWEzYjYzMGQyN2MxYzIxMjUxNTU2ZGNjMGM1YTgyYjk3Li41NTY5ZGYyZWE4NTVk
MTVjNWFlNDcxNDlhNTFhYjRjMmI0NjM3YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAt
MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXltZW50Q29vcmRpbmF0b3IuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6
b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgYwogICAg
IG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6T3Bl
blBheW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIHJlcGx5SUQpKTsK
IH0KIAotYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkoY29uc3QgV2Vi
Q29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxp
bmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qm
IHBheW1lbnRSZXF1ZXN0KQorYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50
VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29u
VVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1l
bnRSZXF1ZXN0KQogewogICAgIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5nczsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGxpbmtJY29uVVJMIDogbGlua0ljb25VUkxzKQpAQCAtMTg2LDcg
KzE4Niw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpwYXltZW50Q29vcmRpbmF0b3JE
ZXN0cm95ZWQoKQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVNZXJjaGFu
dChjb25zdCBTdHJpbmcmIHZhbGlkYXRpb25VUkxTdHJpbmcpCiB7Ci0gICAgcGF5bWVudENvb3Jk
aW5hdG9yKCkudmFsaWRhdGVNZXJjaGFudChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHZh
bGlkYXRpb25VUkxTdHJpbmcpKTsKKyAgICBwYXltZW50Q29vcmRpbmF0b3IoKS52YWxpZGF0ZU1l
cmNoYW50KFVSTChVUkwoKSwgdmFsaWRhdGlvblVSTFN0cmluZykpOwogfQogCiB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvcjo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25zdCBXZWJDb3JlOjpQYXlt
ZW50JiBwYXltZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IGU0ODg3Y2M4OGFiMWYxOWZiZGE5
OWYzYzBiMmM4YWVkMWRiM2EwNDQuLjAyMTJkNmFkYmJiOTA1MWZiMWJiNDY5NmQ1ZDlhODI5NTFh
ZjI0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgV2ViUGF5
bWVudENvb3JkaW5hdG9yIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRv
ckNsaWVudCwgcHIKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5bWVu
dFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRv
bWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9y
aWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBW
ZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlk
YXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBp
bmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRl
eCAzZjI3MTIzMmQ2M2U0YTRmNzc0NWVmMjhjNjRlYWU1NTM4YzRiN2I5Li43ZmU5MzM0YmE0ZjM1
OWM3MmIwZDkxZDU1NDJhNzE2NDQ2MmU2ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBA
IC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2
ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uCiAgICAgY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OkNhY2hlcyhtX3Nl
c3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwgdXBkYXRlQ291bnRlciksIDApOwog
fQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1Jl
dHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmV0cmlldmVSZWNvcmRzKG1fc2Vz
c2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1cmwpLCAwKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDQ4MGVkZGQ5YjRlNTE1YzRiNGFhZTZkNGM2ZDk0MjU4
ZmNiZTI1MmIuLmQyZTBkZjJkODYwOTIyYTNiMWUzNTZiZTkyMWU3ODAxOTg2ZGM3NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24g
ewogICAgIHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50
NjRfdCB1cGRhdGVDb3VudGVyKSBmaW5hbDsKIAotICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHMo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBV
UkwmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikgZmluYWw7CiAg
ICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3JkPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDUwNzEzMTNlYzYyNTMwN2M0MGI1
YjQwMTBmNzBjNjFjNzUwNDE1ZDcuLjlkNjFlOTFjZWFmYzAwNjE0OWU3MDMyYjg5ZWZmZmJmNWRh
MWM1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JS
ZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJl
Z2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxv
YlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
IHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
aAppbmRleCBiMDU0ODliOGEyM2JjNzkwYjk1ZTZlYzlmMGQ1YzgyZWQwOWY4NzNjLi5hNGM1ZjY4
NGFkNWYxNjM0N2IwNzA3OTE4NWY3N2E5YWI3YjAwYTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTMxLDEzICsz
MSwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJveHkgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lkIHJl
Z2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdl
YkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVS
TChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJM
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOwotICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQ
YXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQs
IGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6
ZShjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmgKaW5kZXggMDhkZGJiZWE3MmJkZTdhNjg2Y2U3NWM0ZjRmYzk4NjhjNmFmYjQ4
OS4uODAxMmE4NGY0YzgzODg4MDI2MzY3MTkwNjBkNDg1NGE2NGYwNDBjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0z
Nyw3ICszNyw2IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTUsNyBAQCBjbGFzcyBQYWdlTG9h
ZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZp
cnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBBUEk6
Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktp
dDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JikgeyB9CkBAIC05Niw3ICs5NSw3IEBAIGNsYXNzIFBhZ2VMb2FkZXJDbGllbnQgewogICAg
IHZpcnR1YWwgdm9pZCBmZWF0dXJlc1VzZWRJblBhZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYpIHsgfQotICAgIHZpcnR1
YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50Rm9yVVJMKFdlYktpdDo6V2ViRnJhbWUmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmKSBjb25zdCB7IHJldHVybiBXVEY6OlN0cmluZygpOyB9CisgICAgdmlydHVh
bCBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViS2l0OjpXZWJGcmFtZSYsIGNvbnN0IFdU
Rjo6VVJMJikgY29uc3QgeyByZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQogCiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7IHJldHVy
biAwOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4IDRjMGM2YWVkMzg5
OWQ4YjI4N2NjMTEwZWIwNzk3NmZmMTRjNzFhZTMuLjA0NjBlYzYzZjA3OGFkZjVkY2VhYmMzMGVl
ODI3NjNjZDNmNTg1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTE3Miw3
ICsxNzIsNyBAQCBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUxheWVyVHJlZUFzVGV4dChX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmKQogCiBib29sIFdLQnVuZGxlRnJhbWVBbGxvd3NGb2xs
b3dpbmdMaW5rKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsK
LSAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICByZXR1cm4g
dG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhVUkwoVVJMKCksIHRvV1RGU3Ry
aW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1lSGFuZGxlc1BhZ2VTY2FsZUdl
c3R1cmUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKQEAgLTIxNywxMiArMjE3LDEyIEBAIGJv
b2wgV0tCdW5kbGVGcmFtZUdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWVSZWYsIGRvdWJsZSoKIAogV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlTdWdn
ZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVm
LCBXS1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFt
ZVJlZiktPnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKFdlYkNvcmU6OlVSTChX
ZWJDb3JlOjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKKyAgICByZXR1cm4gdG9Db3Bp
ZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhV
UkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBXS1N0cmluZ1JlZiBX
S0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEko
dG9JbXBsKGZyYW1lUmVmKS0+bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOworICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5taW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChVUkwo
VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVGcmFtZUNv
bnRhaW5zQW55Rm9ybUVsZW1lbnRzKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDA3ZDAyNDI0MzZiZDQxNDU4MDJjYjE1OWUzYjBkOTcw
MTRmM2EzMDguLjllOWEyYjFkNTI4NmUxNGZjNDQ2OGJjMTAwMmQ1YWE3NjY2MjVmNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02Niw5ICs2Niw5IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZW5kZXJMYXllckNvbXBvc2l0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaGVlbEV2ZW50
VGVzdFRyaWdnZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00MjUsNyArNDI1LDcg
QEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYsIFdLQnVuZGxlUGFnZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xvY2FsRGF0
YUZvclVSTChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAg
IHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICByZXR1cm4gdG9JbXBs
KHBhZ2VSZWYpLT5oYXNMb2NhbERhdGFGb3JVUkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxS
ZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVQYWdlQ2FuSGFuZGxlUmVxdWVzdChXS1VSTFJlcXVl
c3RSZWYgcmVxdWVzdFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9V
VEY4U3RyaW5nLmNwcAppbmRleCBiNWUxNjU3YTBkMjFmNmMxYzk3YmI5MDM4ZmQ0YTUwMTk5YmNm
MWFkLi43MTU3NDlhNDkyMzljMzFhYWI3ZmMxYWVkZDAyNjIzZTE0ZThhYWVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29u
dmVydFRvVVRGOFN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCkBAIC0yMSw3ICsy
MSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmlu
Zy5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCkBAIC0zNSw3ICszNSw3IEBAIGdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdURjo6
U3RyaW5nIGNvbnN0JiBzKQogICAgIHJldHVybiBnX3N0cmR1cChzLnV0ZjgoKS5kYXRhKCkpOwog
fQogCi1nY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpVUkwgY29uc3QmIHMpCitn
Y2hhciogY29udmVydFRvVVRGOFN0cmluZyhVUkwgY29uc3QmIHMpCiB7CiAgICAgcmV0dXJuIGNv
bnZlcnRUb1VURjhTdHJpbmcocy5zdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0
cmluZy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuaAppbmRleCBlNDk0MTEzYTNmOGZmNmU5YzRkYmU2OGFm
OWYxZDhhMmUyMjJmZWM5Li5jMzcyNTM1OWI4OTM0N2MxZjg4OTZhZGM1YmNhYjRiNmE0NDk2YzQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKQEAg
LTIzLDEzICsyMyw5IEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIHR5cGVkZWYgY2hhciBnY2hhcjsKIAogZ2NoYXIq
IGNvbnZlcnRUb1VURjhTdHJpbmcoV1RGOjpTdHJpbmcgY29uc3QmIHMpOwotZ2NoYXIqIGNvbnZl
cnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6VVJMIGNvbnN0JiBzKTsKK2djaGFyKiBjb252ZXJ0VG9V
VEY4U3RyaW5nKFVSTCBjb25zdCYgcyk7CiAKICNlbmRpZiAvKiBDb252ZXJ0VG9VVEY4U3RyaW5n
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXgg
MWJiMGJhMTYwMzcyOGJjMmZjOTI0OTdhY2IwMTM2YmI5OTkwNTcyYi4uMDgzMTc0ZTVlZDIxZjk4
Mzk3M2IyNmM3ZDdjOGM0ODhlMTAyYzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaAppbmRleCA0OTM1NjYxZWUyNDg4ZjYzODAxNGU4NjlkZDhmMTEyMDlhNDhiODEwLi4wMWRk
OTkwNzljYjU0ZmI2MzM1ZWNmYTNlMzczMzVlZTFiNjViZjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNCw3ICszNCw2IEBACiBuYW1lc3Bh
Y2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIGNsYXNzIFN0cmluZzsKLWNsYXNzIFVSTDsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2U+
IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjAsIFdL
QnVuZGxlUGFnZUxvYWRlckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMiwgV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50VjMsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY0LCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnRWNSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjYsIFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudFY3LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWOCwgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Vjk+IFZlcnNpb25zOwpAQCAtNDgsNyArNDcsNyBAQCBjbGFzcyBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZQogICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudChjb25zdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKik7CiAKICAgICB2b2lkIHdp
bGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3Qo
V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbExvYWRE
YXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3Vs
ZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2UmLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0
cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKQEAgLTg3LDcgKzg2LDcgQEAgY2xhc3MgSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFn
ZUxvYWRlckNsaWUKIAogICAgIHZvaWQgZmVhdHVyZXNVc2VkSW5QYWdlKFdlYlBhZ2UmLCBjb25z
dCBWZWN0b3I8V1RGOjpTdHJpbmc+Jikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0cmluZyB1c2Vy
QWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25zdCBVUkwm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0
TWlsZXN0b25lcygpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggZTJhNjk3OGZlMjgzYWQ1M2MzNDhiZjA3MDdhYjY4ZGY3ZDk2MjM2Mi4u
OTAzYzZkMDEyYzFkYjI4OGZiYTIzOGI1NzhiZDA2NTYzNDQ4ZDgxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAxMjc4YzFiNDQzZmFkN2JmYTcxZjEw
ZjJiNGYyODY4NmI2ZTAzNDRmLi42NWNmNDIzYWIxNjgyNzI1YWZkOTRhMzE0YmUxNDdiODNlYTlm
MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNv
dXJjZUUKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlcnJvciksIFdURk1vdmUo
cmVzcG9uc2UpKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKEZy
YW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVj
dENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3Qg
cHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnMuYWRkKHByZWNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApp
bmRleCBlMDQwZDA3NTVjNzk0ZGJkNzFlYTljNTU4ODQyYTA2NWM1MmRmNWRlLi4xYzJmYjNmMTFl
NDVlM2I3ZWE4ODI5NjNmYTFjYTA5M2Q4ZTZlMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTU1LDcgKzU1LDcg
QEAgY2xhc3MgV2ViTG9hZGVyU3RyYXRlZ3kgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVy
U3RyYXRlZ3kgewogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBm
aW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIm
LCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpIGZp
bmFsOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyKiwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCkgZmluYWw7CiAgICAgCiAgICAgdm9p
ZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5p
bXVtUHJpb3JpdHkpIGZpbmFsOwogCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYkxvYWRlclN0
cmF0ZWd5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKICAgICB2b2lk
IHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBj
b25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVj
b25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBwcmVjb25uZWN0VG8o
V2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0
YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiBib2R5SGFzaCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQ
cm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJv
dmlkZXIuaAppbmRleCAwMjQ0ZTVmMmM4ODYyMDUzMTc2OTllY2ZkMWUxYTFiMjNjN2ZkOTk4Li42
OWI3ZmEzYjQxNmY0ZWYzOTZhZWFkZTRjMTIwODRiYjM1MmIxMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgKQEAgLTMy
LDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTb2NrZXRQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxXZWJTb2NrZXRQcm92aWRlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJTb2NrZXRQcm92aWRlcik7IH0KLSAgICBSZWY8V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlPiBjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbikgZmluYWw7CisgICAgUmVmPFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGNyZWRlbnRpYWxQYXJ0aXRpb24pIGZpbmFsOwogICAgIHZpcnR1YWwgfldlYlNvY2tldFByb3Zp
ZGVyKCkgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCA3YTBiOWUzMTJlYjk5ZDQ3YWM1MmRlZTlkZTRh
YTY4ZWFmNTRkNzQ3Li4xZDVlMjI5YWMyM2RhMzA4N2U0NmQ5MzU1NjVhYWE0ZDY3YjVhMDI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmPFdlYlNvY2tldFN0cmVhbT4gV2ViU29ja2V0
U3RyZWFtOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUMKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRTdHJlYW0odXJsLCBjbGllbnQsIHNlc3Npb25J
RCwgY3JlZGVudGlhbFBhcnRpdGlvbikpOwogfQogCi1XZWJTb2NrZXRTdHJlYW06OldlYlNvY2tl
dFN0cmVhbShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBjYWNoZVBhcnRpdGlvbikKK1dlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0
IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKQogICAg
IDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uaAppbmRleCAzZmViNmE2MzVmZmU5ZTc5MjMxZDMyYjUxYzYzZmI3Mjg3N2Q5OWUzLi4z
ODlhMGI5OGI3NTk4Y2M2NjhiZThkYjQ1ZjE3MTFiOGZlOGY3NzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtNDUsNyAr
NDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0U3RyZWFtIDogcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJs
aWMgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlLCBwdWJsaWMgSWRlbnRpZmllZDxXZWJTb2Nr
ZXRTdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNvY2tldFN0cmVhbT4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOwor
ICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0U3RyZWFtPiBjcmVhdGUoY29uc3QgVVJMJiwgV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1Byb2Nlc3ND
cmFzaGVkKCk7CiAgICAgc3RhdGljIFdlYlNvY2tldFN0cmVhbSogc3RyZWFtV2l0aElkZW50aWZp
ZXIodWludDY0X3QpOwogICAgIApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBXZWJTb2NrZXRTdHJl
YW0gOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIsCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFs
OwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CiAKLSAg
ICBXZWJTb2NrZXRTdHJlYW0oY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlh
bFBhcnRpdGlvbik7CisgICAgV2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNy
ZWRlbnRpYWxQYXJ0aXRpb24pOwogICAgIH5XZWJTb2NrZXRTdHJlYW0oKTsKIAogICAgIHNpemVf
dCBtX2J1ZmZlcmVkQW1vdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDAw
M2QyN2ExMDE4Nzk4ODlkYWE2NmZhYTBjNmQ5OTNlOTE2MGUxMGYuLmM2YTUwNjkxNzQwYTVkYjNl
NjVmMTk3NTcxYjdiZDQwMDViYjcxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM4
LDggKzM4LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJNYXAuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgUExVR0lOX0FS
Q0hJVEVDVFVSRShVTklYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggYmNiM2Q3ZmI3NzdkMTMx
YzdmMjQ3NmY2NWIxNTJmMDQzOTAxNDZkNy4uNzRhODRlOTI3Y2Y1YTdkZjYyMjM2Y2Y0YTliZmZi
OTU1MTIzOWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0xMzksNyArMTM5LDcgQEAgY2xh
c3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJsaWMgUGx1Z2luIHsKIAogICAgIHZvaWQgc2V0SXNQbGF5
aW5nQXVkaW8oYm9vbCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyUmVkaXJlY3QoTmV0c2NhcGVQbHVn
aW5TdHJlYW0qLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGludCByZWRpcmVjdFJl
c3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKKyAgICB2b2lkIHJlZ2lzdGVy
UmVkaXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGlu
dCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKICAgICB2
b2lkIHVybFJlZGlyZWN0UmVzcG9uc2Uodm9pZCogbm90aWZ5RGF0YSwgYm9vbCBhbGxvdyk7CiAK
ICAgICAvLyBNZW1iZXIgZnVuY3Rpb25zIGZvciBjYWxsaW5nIGludG8gdGhlIHBsdWctaW4uCkBA
IC0yMDQsMTMgKzIwNCwxMyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1YmxpYyBQbHVnaW4g
ewogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdh
c0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgaW50IHJl
c3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLAorICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VV
UkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Ry
ZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKKyAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0
cmVhbS5oCmluZGV4IDQwNzQwNzhkN2E4ZmI1MzhjZmY0N2RjMWFkYTRmOWQyMGI3MGQyMmYuLmJi
NmE1YjA4YzdjY2U1ZGRlZDg5OTM2MGY3YWI4MzQwZjAzOTVlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgVVJMOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQ
bHVnaW47CkBAIC01NSw4ICs1MSw4IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luU3RyZWFtIDogcHVi
bGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHsKICAgICB1aW50NjRfdCBzdHJl
YW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtSUQ7IH0KICAgICBjb25zdCBOUFN0cmVhbSog
bnBTdHJlYW0oKSBjb25zdCB7IHJldHVybiAmbV9ucFN0cmVhbTsgfQogCi0gICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29u
c3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCBy
ZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaAppbmRleCBlNThkZTJjNzYwZGRiMTRjMTJjNGNiZmJmNzVjZTkyZjVhYjhlMDFhLi42ODYy
ZTMwNGZlZGI4NWI3ODYzNDcwMGI5ZDZiMzVhNmMzYzIwY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xMzUsMTIgKzEzNSwx
MiBAQCBjbGFzcyBQREZQbHVnaW4gZmluYWwgOiBwdWJsaWMgUGx1Z2luLCBwcml2YXRlIFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhIHsKICAgICB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCByZXF1ZXN0SUQpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIHZvaWQgZGlkRXZhbHVhdGVK
YXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFs
OwotICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VV
UkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9u
c2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVx
dWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQorICAgIHZvaWQgc3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIGZp
bmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkg
ZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdh
c0NhbmNlbGxlZCkgZmluYWw7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJp
bmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwogICAg
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZp
bmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmlu
YWw7CkBAIC0zMDYsNyArMzA2LDcgQEAgY2xhc3MgUERGUGx1Z2luIGZpbmFsIDogcHVibGljIFBs
dWdpbiwgcHJpdmF0ZSBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSB7CiAKICAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNvcmU6OlVSTCBtX3NvdXJjZVVSTDsKKyAgICBVUkwg
bV9zb3VyY2VVUkw7CiAKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKICAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNzFiOGNmODMzNDNjNmNmODUy
YTBkMDk3MjgzOGRmZmFkMjcwNmM4YS4uZTRjZDY1MzU2MTE2MjQ2YmZhNjhmNzRiMTZiNDMxNTY4
ZDc5NzViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCkBAIC0xNzAyLDcgKzE3MDIsNyBAQCBib29sIFBERlBsdWdpbjo6aGFuZGxl
c1BhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiB2b2lkIFBERlBsdWdpbjo6Y2xpY2tlZExpbmsoTlNV
UkwgKnVybCkKIHsKICAgICBVUkwgY29yZVVSTCA9IHVybDsKLSAgICBpZiAocHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29yZVVSTCkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29y
ZVVSTCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHdlYkZyYW1lKCkt
PmNvcmVGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApp
bmRleCA4NzZmNmNlNDhlY2NiNjA2MzM5NDc2YTY2NjFmMjZmNGY5MGFhNDcyLi5hYWJkNWU1MDUx
YmVjMjlmNTUxMTU3MzgwNjFhNmE2MDhlZjIzMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjMsMTYgKzIzLDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbHVnaW5faAotI2RlZmluZSBQbHVn
aW5faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTUzLDE1ICs1MiwxNSBAQCBjbGFzcyBE
ZWNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgQWZmaW5lVHJhbnNm
b3JtOwotICAgIGNsYXNzIEZsb2F0UG9pbnQ7Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0Owot
ICAgIGNsYXNzIEludFBvaW50OwotICAgIGNsYXNzIEludFJlY3Q7Ci0gICAgY2xhc3MgSW50U2l6
ZTsKLSAgICBjbGFzcyBGbG9hdFBvaW50OwotICAgIGNsYXNzIFNjcm9sbGJhcjsKLSAgICBjbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBGbG9hdFBvaW50
OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRSZWN0
OworY2xhc3MgSW50U2l6ZTsKK2NsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBTY3JvbGxiYXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODEs
NyBAQCBlbnVtIFBsdWdpblR5cGUgewogY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFBsdWdpbj4gewogcHVibGljOgogICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKLSAg
ICAgICAgV2ViQ29yZTo6VVJMIHVybDsKKyAgICAgICAgVVJMIHVybDsKICAgICAgICAgVmVjdG9y
PFN0cmluZz4gbmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlczsKICAgICAgICAg
U3RyaW5nIG1pbWVUeXBlOwpAQCAtMTY3LDEwICsxNjYsMTAgQEAgY2xhc3MgUGx1Z2luIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogICAgIHZpcnR1YWwgdm9pZCBkaWRF
dmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3Vs
dCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBtYXkgc2Vu
ZCBhbiBIVFRQIHJlcXVlc3QuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVz
dCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXNDb2RlKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVz
cG9uc2VTdGF0dXNDb2RlKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEg
c3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVS
TCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQg
YSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE4Myw3ICsxODIsNyBAQCBjbGFzcyBQbHVn
aW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7CiAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSA9
IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGhh
cyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwgCisgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5n
dGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAg
ICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGRpZCByZWNlaXZl
IGRhdGEuCkBAIC0zMjMsNSArMzIyLDMgQEAgY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFBsdWdpbj4gewogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJL
aXQ6OlRvVmFsdWVUeXBlTmFtZSkgXAogc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYktpdDo6
UGx1Z2luJiBwbHVnaW4pIHsgcmV0dXJuIHBsdWdpbi50eXBlKCkgPT0gV2ViS2l0OjpTcGVjaWZp
Y1BsdWdpblR5cGU7IH0gXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYg
Ly8gUGx1Z2luX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbkNvbnRyb2xsZXIuaAppbmRleCBhNWM2ZmEwNDNjMzYyMjY5NDFjOGQyMTQ3YjIxMjA4ZWMy
ZjI5NDc1Li5hMWY4MDdlMWU1NTA3MjNlZmVlYTE3NzEzM2I4MWRmZjRkMTc2YjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5o
CkBAIC00Myw3ICs0Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEhUVFBIZWFkZXJN
YXA7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwotY2xhc3MgVVJMOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGRjNDIxMWQwMGVkODkxMGQzNDdkOGYwY2ExYjc1M2M2
YjJlNmVhMWQuLmU2YWIzZWQ5YjAzMmZlMDRjMDJkZjVjNjg5MmU0N2Q0ZTY5ZDRhYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtODcs
MTIgKzg3LDEyIEBAIGNsYXNzIFBsdWdpblByb3h5IDogcHVibGljIFBsdWdpbiB7CiAgICAgdm9p
ZCBmcmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKICAg
ICB2b2lkIGZyYW1lRGlkRmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVk
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbVdp
bGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1
ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0
dXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJl
YW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50
IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qg
c3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZU5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2
b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxs
ZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKICAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmco
KSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxs
ZWQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCBmMDc1MmJkOTgyYTE1M2JhZDRiMjkyNDVmMTAzMjE5NzBlYjNhYzkx
Li4zY2FhYWM5YWMxY2QzZGJkNmJmNDZmZWM1ZDcxZjE0MWRmNDViMzk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE2Myw3ICsx
MTYzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiBy
ZXF1ZXN0KQogICAgIFJlZjxQbHVnaW5WaWV3PiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIC8vIEZp
cnN0LCBjaGVjayBpZiB0aGlzIGlzIGEgamF2YXNjcmlwdDogdXJsLgotICAgIGlmIChwcm90b2Nv
bElzSmF2YVNjcmlwdChyZXF1ZXN0LT5yZXF1ZXN0KCkudXJsKCkpKSB7CisgICAgaWYgKFdURjo6
cHJvdG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVybCgpKSkgewogICAgICAg
ICBwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1GcmFt
ZUxvYWRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAKIHZvaWQgUGx1Z2luVmlldzo6
cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAg
QVNTRVJUKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwoKSkpOwor
ICAgIEFTU0VSVChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51
cmwoKSkpOwogCiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fcGx1Z2luRWxlbWVudC0+ZG9j
dW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRl
eCA1YzUxYzQ1ZjY0MDlkZWVkZDU1ZTkzYzBmZDk4OGI3Yzg3M2Q4MzFhLi4zZjcwYjFlODdiOWFm
ZThmM2YwNjVhNDE5Y2NkYjk1MmNlZmZjZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTEx
NSw3ICsxMTUsNyBAQCBWZWN0b3I8UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpw
bHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIHN0ZDo6b3B0aW9uYWw8VgogI2VuZGlmIC8vIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogfQogCi1WZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQYWdlJiBwYWdlLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCkKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVn
aW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIGNvbnN0IFVS
TCYgdXJsKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBs
dWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKICAgICBhdXRvIHBs
dWdpbnMgPSBwbHVnaW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Q
cm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmgKaW5kZXggMWJiYWQ1YTc5ZmIxMWVjNjgwNzQ5NDdkMDA3YzNjZDU2ZTU4MTlk
ZC4uODQ2NDJkN2ZjMDExZjhjYWNmNjQxYmIxYWVlOGYyODIzOTNjMDdlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiAgICAgV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyKCk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2luSW5m
byhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbklu
Zm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpV
UkwmKSBmaW5hbDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBs
dWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQgcmVm
cmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uaAppbmRleCAyYmZhZWU0NzZlMWY0YmNjY2RiMjY2MGZlNWQ4ZTY2YmQ2
NzRhM2Q3Li5kY2Q2ZGE1ODA2YmIzMzJjMjRmZmVjODUxOGVlNTA5NmNiYWU3ZjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaApAQCAtNzksMTMgKzc5LDEzIEBAIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlv
biBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24sIHB1YmxpYyBJCiAg
ICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGEmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyPiYpIGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIHZvaWQgbWF0
Y2hSZWdpc3RyYXRpb24oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRpb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IG1hdGNo
UmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGE+JiYpOwogICAgIHZvaWQgZGlkR2V0UmVnaXN0cmF0aW9ucyh1aW50NjRf
dCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGE+JiYpOwotICAgIHZvaWQgd2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Y2xpZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIHdoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCBjYWxs
YmFja0lELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKTsKIAotICAg
IHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BP
cmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRpb25zQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdldFJlZ2lz
dHJhdGlvbnNDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJh
dGlvblByb21pc2UoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYp
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBlODczZmZmZDJh
OGM3MDFhZTg2OTA1Y2U5ZTU3MDRmMWE3YjljOWI0Li5kOTc5NDY5OWM5MWRjNWQ3NTZkYzMzYmRi
MjU0NWM1ZjVkYzA0MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTcy
LDcgKzcyLDcgQEAgY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q28KICAgICB2b2lkIG1hdGNoQWxsKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHNNYXRj
aEFsbENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xhaW0oV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAg
dm9pZCBza2lwV2FpdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgRnVuY3Rp
b248dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgZmluYWw7Cisg
ICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJ
bXBvcnRlZFNjcmlwdCYpIGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQg
c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5oCmluZGV4IDAzNzAxMDZlOTJmMWZiMmE0YWJkODUxMTE2YzcyNjJm
ZTQ1NDAwZmIuLjYyNmY2MWE1MGE2NDU5ZDQ5NTY3ZDY4YmZlY2JhODc3YmJhNmFiOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTU3LDEwICs1NywxMCBAQCBjbGFzcyBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VXNlckNvbnRlbnRQ
cm92aWRlciwgcHJpdgogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRp
ZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0
KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYpOwotICAg
IHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IFVSTCYpOwogICAgIHZvaWQgcmVtb3Zl
VXNlclNjcmlwdHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAgIHZvaWQgYWRkVXNl
clN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdlYkNvcmU6OlVzZXJTdHls
ZVNoZWV0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRXaXRoVVJMKEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlbW92
ZVVzZXJTdHlsZVNoZWV0V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3Qg
VVJMJik7CiAgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldHMoSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAppbmRleCBmOTM2NjdhZTQ4ZTlkNzgxZjMyZjI2YTEwYTNhNTJmN2NmYThjMzE2
Li41YTQ2ZWY4MDdkNzAxNzNlOWZjMTgzMzI3ZDc2MWJmYjI1Y2M4ZDU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVu
d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwK
IAogI2VuZGlmCiAKLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxl
bmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJDaHJv
bWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkg
Y29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwg
Y2hhbGxlbmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS5wYWdlSUQoKSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMDk0OGY2N2FiZWMxNGQ4NGU2ZGY1NTY0MjcxZWQ2ZTEz
ZDk0MjRjZS4uM2ZlZTBjYjAxYjM2ZGI4NmY2ZjNhZjAzOTNjYWEzYTE1ZjM1ZDAyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaApAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVudCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIHZvaWQgc2NoZWR1bGVD
b21wb3NpdGluZ0xheWVyRmx1c2goKSBmaW5hbDsKICAgICBib29sIGFkanVzdExheWVyRmx1c2hU
aHJvdHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFncykgZmluYWw7
CiAKLSAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgZmluYWw7Cisg
ICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJMJiwgY29uc3QgSGFz
aFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIGZpbmFsOwogCiAjaWYgUExBVEZPUk0o
V0lOKQogICAgIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpIGZpbmFsIHsg
fQpAQCAtMzI1LDcgKzMyNSw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IGZpbmFsOwogI2VuZGlm
CiAKLSAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVk
IGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5n
ZVN0cmluZywgY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAKICNpZiBFTkFCTEUoVEVMRVBIT05F
X05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGhhbmRsZVRlbGVw
aG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBjZWMzMTQyYjE2
ZTM1ZDAwMmNmYzhjNDJmNGU3ODFiODJlYmU4NThjLi41ZDhlN2Q2ZDBmYTUxYTEwNTFkODBjYTE3
NjZlZTM3N2ZiY2YzY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNDQsNyAr
NDQsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250
ZXh0TWVudUNsaWVudCB7CiBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQo
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwog
ICAgIGJvb2wgaXNTcGVha2luZygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggOWY3ZDdm
YzUwYjZlYzhhZWU1NmJiMjU5YjczMzQwYzQwZDkzNjcyNy4uMWFkNGMzZGUyY2I3ZDM4ZTYyNjJj
MTk3YWFiMjRjY2E2ZmVkYTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNs
YXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAgICAgdm9p
ZCBkaWRDb25jbHVkZUVkaXREcmFnKCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3Ry
aW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsK
ICNlbmRpZgogCiAgICAgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYzIzNTM5NTM1MzJiMDc3NzAyMjA1
NzNmMmRmMzZiOGNjMzY2ZjdhYy4uY2E5ZTYzN2JjNTk3ZWE2MjlhMTZmMjA3MTBhNDRiNWYxNGUz
NWFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNzk2LDcgKzE3OTYs
NyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd1NjcmlwdChib29sIGVuYWJsZWRQ
ZXJTZXR0aW5ncykKICAgICByZXR1cm4gIXBsdWdpblZpZXcgfHwgIXBsdWdpblZpZXctPnNob3Vs
ZEFsbG93U2NyaXB0aW5nKCk7CiB9CiAKLWJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3Vs
ZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
KQorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NG
cm9tTG9jYWxVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IGMxYjljZDBmOTQzMzI3OWNkZDg0YzBjOTVmYTgxYjk4NGU1ZjU0ZTguLjNjNzE2
Njg1MGIyNTE1NjZkNWU0NDBlZTNmNTkzN2NiOWNjZjcwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC05NywxMyArOTcsMTMgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKmRldGVjdGlvblJlc3VsdHMpIGZp
bmFsOwogI2VuZGlmCiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZU1haW5Eb2N1bWVudCgpIGZp
bmFsOwotICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgV2ViQ29yZTo6
VVJMJiBjdXJyZW50VXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG5ld1VybCkgZmluYWw7CisgICAg
dm9pZCBkaXNwYXRjaFdpbGxDaGFuZ2VEb2N1bWVudChjb25zdCBVUkwmIGN1cnJlbnRVcmwsIGNv
bnN0IFVSTCYgbmV3VXJsKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWREaXNwYXRjaE9u
bG9hZEV2ZW50cygpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlUHJvdmlzaW9uYWxVUkwoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3QoKSBmaW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZp
cmVEYXRlKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dChjb25zdCBVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZpcmVEYXRlKSBmaW5hbDsK
ICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgZmluYWw7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKICAgICB2b2lk
IGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOwpAQCAtMTU1LDggKzE1
NSw4IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJD
b3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50KCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJl
UGFnZSkgZmluYWw7CisgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERldGVjdFhTUyhj
b25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7CiAKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIGZpbmFsOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOwpAQCAtMTg5LDkgKzE4OSw5IEBA
IGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50IHsKICAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVu
dExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIGZpbmFsOwogCi0gICAgdm9pZCBzZXRU
aXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
VVJMJikgZmluYWw7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRo
RGlyZWN0aW9uJiwgY29uc3QgVVJMJikgZmluYWw7CiAgICAgCi0gICAgU3RyaW5nIHVzZXJBZ2Vu
dChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0
IFVSTCYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
KCkgY29uc3QgZmluYWw7CiAKQEAgLTIxMCwyMCArMjEwLDIwIEBAIGNsYXNzIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAg
ICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3Jl
YXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3Jl
OjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50
IG1hcmdpbkhlaWdodCkgZmluYWw7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVh
dGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJv
b2wgbG9hZE1hbnVhbGx5KSBmaW5hbDsKICAgICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6
OldpZGdldCopIGZpbmFsOwogICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6
V2lkZ2V0JikgZmluYWw7CiAgICAgCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25z
dCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5
Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsK
KyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNv
bnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6
VVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJD
b3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykg
ZmluYWw7CiAgICAgCi0gICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVu
dFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7
CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CiAgICAgU3RyaW5nIG92ZXJyaWRl
TWVkaWFUeXBlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIGZpbmFsOwpAQCAtMjQ5
LDcgKzI0OSw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKIAogICAgIGJvb2wgYWxsb3dTY3JpcHQoYm9vbCBl
bmFibGVkUGVyU2V0dGluZ3MpIGZpbmFsOwogCi0gICAgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNh
bEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBib29s
IHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFVSTCYpIGZpbmFs
OwogCiAgICAgUmVmPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdv
cmtpbmdDb250ZXh0KCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
aW5kZXggZTk3NzNlYTc4MGEzMzJhZTU5ZjAyNzhhZTgzYTMwNzZkZDI3OTc2ZS4uMWQzZWVlNzk4
M2NlZWMyMTEwYzJmODU3YTMyYjRlZTVjNmUxZjI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKQEAgLTYwLDkgKzYwLDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRl
SW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFjZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3ViZnJhbWVMb2FkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTdHJpbmdVdGls
aXRpZXMuaCIKQEAgLTM2NCw3ICszNjQsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbgogICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+
KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitVUkwgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyB1cmxTdHJp
bmc7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0
ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDZlZWMwOWIxZWQyMmI5YWQwNjhlM2Y2
OTI0YjU5MjU3NDUxNWQxNDYuLjc2YTgxMGFmZDNlMGZmNTA3OTNiNWRmMTVjZWVjODNhMjRhMTRh
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ3LDEzICs0NywxMyBAQCBj
bGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJh
dGVnaWVzLCBwcml2YXRlIFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRl
QmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRl
Z3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
ZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVDb29r
aWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6
OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kK
ICNpZiBQTEFURk9STShJT1MpCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2Vi
Q29yCiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBX
ZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRV
UkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
cyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAg
ICAgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9y
IGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNv
cmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAg
VVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAogICAgIGxv
bmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCAzYmQ3
ZDFmYmIzOGNiMjA5YWZkYjcxZGViMThiOWQ5MWVkZDkxMzBmLi5hZTU5NTJkMDhlNjQ5NzYxNjBj
OGEzNDQ5NGI0YWQ2MGJhYTk3MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBA
IC00OCw4ICs0OCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUmVuZGVySW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3RyaW5nVHJ1bmNhdG9y
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNp
ZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtMTI5LDcgKzEyOSw3IEBA
IHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkgewogICAg
ICAgICB0aXRsZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAodGl0bGUu
aXNFbXB0eSgpKQotICAgICAgICAgICAgdGl0bGUgPSB1c2VyVmlzaWJsZVN0cmluZygoTlNVUkwg
Kil1cmwpOworICAgICAgICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7
CiAgICAgfQogCiAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoZWxlbWVudCk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJE
cmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgRWxlbWUKICAgICAgICAgICAgIGZpbGVuYW1lID0gZG93bmxvYWRGaWxlbmFtZTsK
ICAgICB9CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIGltYWdlSGFuZGxlLCBpbWFnZVNpemUs
IGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCBTdHJpbmcoW1tyZXNwb25zZSBVUkxdIGFic29s
dXRlU3RyaW5nXSksIHVzZXJWaXNpYmxlU3RyaW5nKChOU1VSTCAqKXVybCksIGFyY2hpdmVIYW5k
bGUsIGFyY2hpdmVTaXplKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBpbWFnZUhhbmRsZSwg
aW1hZ2VTaXplLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgU3RyaW5nKFtbcmVzcG9uc2Ug
VVJMXSBhYnNvbHV0ZVN0cmluZ10pLCBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCksIGFyY2hp
dmVIYW5kbGUsIGFyY2hpdmVTaXplKSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDFmOTBjNGE1NzQwZjQxNTA5ZDhl
ODViMTlkNGEwN2U4MDA0M2EyNTQuLjNkMWZmODQ5MDMxMTExMTUxY2EyZTg3YzhjNGU3MDdjMmYx
MzM5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC00MCw3ICs0MCw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJk
RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlci5oCmluZGV4IDA5MjNlNDYwOTU5YjBmMzRhOTQyZWQ5MjRmMDQ0
YzUzZjg0YzMzZTYuLjE3ZmE4ZWNjYTc4YmE4YWMyNzY4MTY1M2E3ZDJlN2ZkZDcwZmUyNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBWaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
b3JlICwgcHJpdgogICAgIGV4cGxpY2l0IFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKHVpbnQ2
NF90IGlkZW50aWZpZXIpOwogCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZS4KLSAg
ICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmlu
Z0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBh
dHRyaWJ1dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQ
YWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25z
dCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNp
dGVkTGluayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAyNTYwNzY5ZmJlNGI1YjM3YzEyZDJl
N2UxODQyZDAxYzNlOTE0NGVmLi5jMzI4OTdiM2I4ZTJiNWMxNjkyNGVlOWUzMDI0NDY2NDY5MGMy
NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CkBAIC01MDksNyArNTA5LDcgQEAgdW5zaWduZWQgV2ViRnJhbWU6OnBlbmRpbmdVbmxvYWRDb3Vu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKLWJvb2wgV2ViRnJhbWU6OmFs
bG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0Citib29sIFdl
YkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAg
IGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggMmUwM2YyYmQ1NTYyNTQ0ZDY3OGYx
YTgzYTk1MzhjY2ZlNGEzNDY4Yi4uZWI4MTM2YWI3NzEwYTRlZDEzMGU2Nzk4MDFiOTUwZDllY2E1
OGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBA
IC01Myw3ICs1Myw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50
OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgVVJMOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTEwNiw3ICsxMDUsNyBAQCBjbGFzcyBXZWJGcmFtZSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUZyYW1lPiB7CiAgICAg
Ly8gV0tCdW5kbGVGcmFtZSBBUEkgYW5kIFNQSSBmdW5jdGlvbnMKICAgICBib29sIGlzTWFpbkZy
YW1lKCkgY29uc3Q7CiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBXZWJDb3JlOjpVUkwg
dXJsKCkgY29uc3Q7CisgICAgVVJMIHVybCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKICAgICBTdHJpbmcgaW5uZXJUZXh0KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3Q7CkBAIC0xNDEsMTEgKzE0MCwxMSBA
QCBjbGFzcyBXZWJGcmFtZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OkJ1bmRsZUZyYW1lPiB7CiAgICAgCiAgICAgdW5zaWduZWQgcGVuZGluZ1VubG9hZENvdW50
KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBhbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgYWxsb3dzRm9sbG93aW5nTGluayhjb25zdCBVUkwm
KSBjb25zdDsKIAogICAgIFN0cmluZyBwcm92aXNpb25hbFVSTCgpIGNvbnN0OwotICAgIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJDb3JlOjpVUkwm
KSBjb25zdDsKLSAgICBTdHJpbmcgbWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3Vy
Y2VXaXRoVVJMKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIFN0cmluZyBtaW1lVHlwZUZvclJlc291
cmNlV2l0aFVSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4dERpcmVjdGlv
bihjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCAyMmI4MDkwMTEyOTc2MjgwZGIzZmVmMjE4OGUyZTdiOGFiZWQ5NGQ5
Li4wMjk1NjA1YTE0ZDgzYjllOWY5ODZmZGI4ZDY0NGI1M2RlNzI5N2QyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTI1Nyw3ICsxMjU3LDcg
QEAgdm9pZCBXZWJQYWdlOjpzZW5kQ2xvc2UoKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q2xvc2VQYWdlKGZhbHNlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFVSTEluRnJh
bWUoV2ViQ29yZTo6VVJMJiYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJQYWdlOjps
b2FkVVJMSW5GcmFtZShVUkwmJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViRnJh
bWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAg
ICAgaWYgKCFmcmFtZSkKQEAgLTEzMjAsNyArMTMyMCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERh
dGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBwbGF0Zm9ybURpZFJlY2Vp
dmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxv
YWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwot
ICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkg
PyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsK
KyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgp
ID8gV1RGOjpibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3Ry
aW5nKTsKICAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBXVEZN
b3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVy
cy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7
CiB9CiAKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhU
TUwoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewogICAgIHBsYXRmb3Jt
RGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFVSTCBiYXNl
VVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgp
IDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBVUkwgYmFz
ZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFu
a1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKICAgICBV
UkwgdW5yZWFjaGFibGVVUkwgPSBsb2FkUGFyYW1ldGVycy51bnJlYWNoYWJsZVVSTFN0cmluZy5p
c0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVV
UkxTdHJpbmcpOwogICAgIFVSTCBwcm92aXNpb25hbExvYWRFcnJvclVSTCA9IGxvYWRQYXJhbWV0
ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJM
KFVSTCgpLCBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZyk7CiAg
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0
ZXJzLmRhdGEuc2l6ZSgpKTsKQEAgLTMzNzMsNyArMzM3Myw3IEBAIHZvaWQgV2ViUGFnZTo6YWRk
Q29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291
cmNlLCBNCiAgICAgICAgIGZyYW1lLT5hZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlU291cmNlLCBt
ZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2Vu
ZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcG9ydERhdGEpCit2b2lkIFdl
YlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJM
JiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXBvcnREYXRhKQogewogICAg
IGF1dG8gcmVwb3J0ID0gcmVwb3J0RGF0YS50YWtlRGF0YSgpOwogICAgIGlmICghcmVwb3J0KQpA
QCAtNTg3NCwxNCArNTg3NCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmltYWdlT3JNZWRpYURvY3VtZW50
U2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogdm9pZCBXZWJQYWdlOjphZGRV
c2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyBpbmplY3RlZEZyYW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZSkKIHsKLSAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZN
b3ZlKHNvdXJjZSksIFVSTChXZWJDb3JlOjpibGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKKyAgICBX
ZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVSTChXVEY6
OmJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3Rp
b25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXIt
PmFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwg
V1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6YWRkVXNlclN0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRGcmFtZXMpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0
eWxlU2hlZXR7IHNvdXJjZSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9Owor
ICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0IHtzb3VyY2UsIFdURjo6
YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRG
cmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xs
ZXItPmFkZFVzZXJTdHlsZVNoZWV0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdv
cmxkKCksIFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNTBhYjRmZWQ5ZTRhNmNkNDMxMzQ1Mjc2NmI4
OTgwZDg3NWNjZjg4Li40YjVkOWQ4OGZlNWY5YmY5ZDQ4YzdlM2JiOTNkNjg4NTc0ZmRjMjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTksNyAr
MTU5LDYgQEAgY2xhc3MgU2VsZWN0aW9uUmVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKLWNsYXNzIFVSTDsK
IGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4
X3Q7CkBAIC0zMTYsNyArMzE1LDcgQEAgY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVAKICNlbmRpZgog
CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlELCBNZXNzYWdlU291
cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHJlcXVlc3RJRCA9IDAp
OwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmKTsKKyAg
ICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJM
JiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJik7CiAgICAgdm9pZCBlbnF1ZXVl
U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpT
ZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpOwogCiAgICAgLy8gLS0gQ2FsbGVk
IGJ5IHRoZSBEcmF3aW5nQXJlYS4KQEAgLTMzNCw5ICszMzMsOSBAQCBjbGFzcyBXZWJQYWdlIDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1
YmxpYyBJUAogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoY29uc3QgV2ViRnJh
bWUmKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoV2ViRnJhbWUqKTsKICAgICB2b2lkIHNob3co
KTsKLSAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwotICAg
IFN0cmluZyB1c2VyQWdlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsK
LSAgICBTdHJpbmcgcGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7
CisgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgdXNl
ckFnZW50KFdlYkZyYW1lKiwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3Jt
VXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIFdlYkNvcmU6OktleWJvYXJkVUlNb2Rl
IGtleWJvYXJkVUlNb2RlKCk7CiAKICAgICB2b2lkIGRpZEluc2VydE1lbnVFbGVtZW50KFdlYkNv
cmU6OkhUTUxNZW51RWxlbWVudCYpOwpAQCAtNDE5LDggKzQxOCw4IEBAIGNsYXNzIFdlYlBhZ2Ug
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwg
cHVibGljIElQCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpV
UkwmKTsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJik7CisgICAg
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFt
ZSosIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgCiAgICAgZW51bSBjbGFzcyBJbmNsdWRlUG9z
dExheW91dERhdGFIaW50IHsgTm8sIFllcyB9OwpAQCAtNjg1LDcgKzY4NCw3IEBAIGNsYXNzIFdl
YlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQ
YWdlPiwgcHVibGljIElQCiAgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRleHRNZW51QXRQb2ludElu
V2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYKIAotICAgIGJvb2wgaGFz
TG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgaGFzTG9jYWxE
YXRhRm9yVVJMKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlUmVxdWVz
dChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtOTQzLDcgKzk0Miw3IEBA
IGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9u
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0KCk7IH0K
ICNlbmRpZgogCi0gICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGlu
Z1VSTCwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKKyAgICB2b2lk
IHNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVuYW1lLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsb25nIHNpemUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzYXZl
UERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJp
bmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5n
JiBwZGZVVUlEKTsKQEAgLTExNTksNyArMTE1OCw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQ
CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9h
ZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwg
Y29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgLy8gQWN0aW9u
cwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKQEAgLTExOTcsNyArMTE5Niw3IEBAIGNsYXNzIFdlYlBh
Z2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdl
PiwgcHVibGljIElQCiAgICAgc3RhdGljIGJvb2wgc2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJD
b3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKICAgICBz
dGF0aWMgYm9vbCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxM
b2dpY2FsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAKLSAgICB2b2lk
IGxvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKKyAgICB2
b2lkIGxvYWRVUkxJbkZyYW1lKFVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIGVudW0g
Y2xhc3MgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07CiAgICAgdm9pZCByZXN0
b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+
JiwgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QsIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpPdmVy
d3JpdGVFeGlzdGluZ0l0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZDc1YWNlZWEwZTAwMDIzYWIyMTliMjkx
MzllMzYyMjZhZjljNmM3Ni4uMjdjYWEyN2NlNTcxZTIyYWEwODE5NmEyMmM2NzJiNDU4YjAzZGE3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC0yOCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkK
IAogICAgIEFkZENvbnNvbGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGVudW0gTWVzc2FnZVNv
dXJjZSBtZXNzYWdlU291cmNlLCBlbnVtIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIFN0cmlu
ZyBtZXNzYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgU2VuZENTUFZpb2xhdGlvblJlcG9y
dCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHJlcG9ydERhdGEpCisgICAgU2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRf
dCBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERh
dGEpCiAgICAgRW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQodWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6SW5pdCBldmVudElu
aXQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXIgYmFja0ZvcndhcmRJdGVtSUQsIGVudW0gV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBiYWNrRm9y
d2FyZFR5cGUsIGVudW0gV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCkKICAgICBUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQog
Ci0gICAgTG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3QgZnJhbWVJRCkK
KyAgICBMb2FkVVJMSW5GcmFtZShVUkwgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQogICAgIExvYWRS
ZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogICAg
IExvYWREYXRhKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQog
ICAgIExvYWRBbHRlcm5hdGVIVE1MKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggZTU4ZTlmMWRkN2IwNzdm
NTYxY2E1MWM5MmZlZjcxNWIwYWUxNDI5ZC4uNzM1NjZhMTMzODVkZTNhYWM2NDZmYjk0OTZiZGRh
ZmNiNWFmNDZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCkBAIC00MCw5ICs0MCw5IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJpbnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVk
ZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCkBAIC00NTQsMTMgKzQ1NCwxMyBA
QCBib29sIFdlYlByaW50T3BlcmF0aW9uR3RrOjpjdXJyZW50UGFnZUlzTGFzdFBhZ2VPZlNoZWV0
KCkgY29uc3QKICAgICByZXR1cm4gKG1fbnVtYmVyVXAgPCAyIHx8ICEoKG1fcGFnZVBvc2l0aW9u
ICsgMSkgJSBtX251bWJlclVwKSB8fCBtX3BhZ2VQb3NpdGlvbiA9PSBtX251bWJlck9mUGFnZXNU
b1ByaW50IC0gMSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBXZWJQcmludE9wZXJhdGlvbkd0azo6ZnJh
bWVVUkwoKSBjb25zdAorVVJMIFdlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFtZVVSTCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3ByaW50Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVS
TCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSBtX3ByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKTsKLSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRl
ci0+dXJsKCkgOiBXZWJDb3JlOjpVUkwoKTsKKyAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIgPyBk
b2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKTsKIH0KIAogdm9pZCBXZWJQcmludE9wZXJhdGlv
bkd0azo6cm90YXRlUGFnZUlmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKaW5kZXggYjI2
MmRmMzRjODA1ZmFhY2RmMjAwNzgxZGI3YWFmZTA0MmU3ZjUyNC4uYjdlMTQ0NDI5NGIyNTEyN2Q0
NTJmMTJhNDhiMmZhZTg5NTgyMGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKQEAgLTQwLDcg
KzQwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a1BhZ2VSYW5nZSBHdGtQYWdlUmFuZ2U7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQcmludENvbnRleHQ7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwotY2xhc3MgVVJMOwogfTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05Nyw3ICs5Niw3IEBA
IGNsYXNzIFdlYlByaW50T3BlcmF0aW9uR3RrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUHJpbnRP
cGVyYXRpb25HdGs+IHsKICAgICB2b2lkIHByaW50UGFnZXNEb25lKCk7CiAgICAgdm9pZCBwcmlu
dERvbmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgc2VuZFByaW50
RmluaXNoZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIFdlYkNvcmU6OlVS
TCBmcmFtZVVSTCgpIGNvbnN0OworICAgIFVSTCBmcmFtZVVSTCgpIGNvbnN0OwogCiAgICAgV2Vi
UGFnZSogbV93ZWJQYWdlOwogICAgIEdSZWZQdHI8R3RrUHJpbnRTZXR0aW5ncz4gbV9wcmludFNl
dHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGJlZDI4
N2RmYWM5Yjk0NGU0MzQyOGYyMjQ3MzMxNjBmMjc0MDYxZWQuLjQ0YWZlZWMyMGYxZWIxN2MyMjU4
YjNjNjMyYTE5MzA2OWJmYjQxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKQEAgLTExNCwxMiArMTE0LDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2Vy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUg
PHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKICNpZiAhT1MoV0lORE9XUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGRiYzU3OWI5OTVmMTliYzMyOTUxY2M4MDJlNjVh
N2ZmODdhMjgxNDIuLjYyZjM5MDU3ZTEyZGQzMjA1ZjkwMzUyNTdhZTE0OTBkZWE2YTM2MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQpAQCAtNjAsNyArNjAsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Njcm9sbGVySW1wRGV0YWls
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8YWxnb3JpdGhtPgogI2ltcG9ydCA8ZGlzcGF0Y2gv
ZGlzcGF0Y2guaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpAQCAtNzEsNiArNzAsNyBAQAog
I2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJLmg+CiAjaW1wb3J0IDxzdGRpby5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLmgiCkBAIC00MzYsNyArNDM2LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBpZiAoTlNVUkwgKm9yaWdpbkFzVVJMID0gb3JpZ2luKCpwYWdlKSkKLSAgICAg
ICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmplY3Q6dXNlclZpc2libGVTdHJpbmcob3JpZ2lu
QXNVUkwpXTsKKyAgICAgICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmplY3Q6V1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyhvcmlnaW5Bc1VSTCldOwogICAgIH0KIAogICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVM
VCwgMCksIFthY3RpdmVQYWdlVVJMc10gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmlu
ZGV4IDZiNGE2NmJmYTM4ZjA1MzJhMGNiZWE1OTAxNDIzZGE1NWZmZDg4NjAuLjNiNWFiYTIzMzgw
NDQxMTM4NzhjZTA4YWMyMGJkMGYyZDU3NjA5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKQEAgLTM1LDkgKzM1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRl
Z2llcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAj
aWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggOGE1NmE5ZTc5
OWZhMWZmODI0OWYwMTQwY2FkMzgxYTVlMmFjYTgzYi4uZWRmNjUxZmE2ZGZiY2EzMThhOGY2ZjIw
N2Y0YjY0OWFkZTFiZjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC01NSw3ICs1
NSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpMb2FkZXJTdHJhdGVneSB7CiAKICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJl
Y2VpdmVkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRp
cmVjdFVSTCkgZmluYWw7CisgICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKSBmaW5hbDsKICAg
ICAKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNvcmU6OlJlc291cmNlTG9hZFBy
aW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5OjpW
ZXJ5TG93KSBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKSBmaW5hbDsK
QEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKIAogICAgIHZvaWQgc3RhcnRQaW5nTG9h
ZChXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXAmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9h
ZENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oV2Vi
Q29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwor
ICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3Qg
U0hBMTo6RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgZmluYWwgeyB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kg
ewogICAgICAgICBGaW5kT25seQogICAgIH07CiAgICAgCi0gICAgSG9zdEluZm9ybWF0aW9uKiBo
b3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25s
eSk7CisgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0IFVSTCYsIENyZWF0ZUhv
c3RQb2xpY3kgPSBGaW5kT25seSk7CiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0
SW5mb3JtYXRpb24qLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAKICAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJpbmdIYXNoPiBIb3N0TWFw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUF0dHIubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQppbmRleCBlOGY3NmYxNjRlMDY1
ZjgwMjhlOWE2ZjY3ZWEzNWQ1MmViN2VjODc1Li4yMTZiYTY1NDgwNzFjNjZkMWE1YTYwNGQ5Y2Rh
ZGMzYWNiMjk5ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
QXR0ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQpAQCAt
MzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkF0dHIqPihyZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01CbG9iLm1tCmluZGV4IDRlNmVkYzU2YTYzZmY0Y2E3Y2Y0YjQ2Y2UxYzc3MjQ4Mzkx
MTNjNmUuLmRlNTkxM2NhMTg2MDBjOGVkM2M5NTJiMWE5NjlkN2VlZWRiNzUyZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbXBv
cnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OkJsb2IqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01DU1NDaGFyc2V0UnVsZS5tbQppbmRleCBkMWI1ZWFiZDc1ZDZmYWI2YzdjY2M3ZDY2YWZmMjNk
NGMyMTIwMWQ0Li43YmZmZmRjMjFkYmEwODk3ZjY2ZmU1YWUxNDU1M2M1ZWM1MzdiZjQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTQ2hhcnNldFJ1bGUubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0NoYXJzZXRSdWxlLm1tCkBA
IC0zMCw5ICszMCw5IEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiBAaW1wbGVtZW50YXRpb24gRE9NQ1NTQ2hhcnNldFJ1bGUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQppbmRleCA4ODA0ZjI0NTAwYmQ2ZThl
ZjdjMmI2MGU0NzA2N2U2YzkyZDNlMDAzLi5jNTE3OGFlMjAxODRjNjJmYjNkYTBhZGZlNjg3ZTQz
ZDRhZTUyYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NT
SW1wb3J0UnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1w
b3J0UnVsZS5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU0ltcG9y
dFJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxl
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU01lZGlhUnVsZS5tbQppbmRl
eCAxNTlhOWE0OTQ5ODdiZDU0NTE5Y2JkNjJlNDMwOTAxYTdkMGM4YzllLi5lYjVkY2YyMmY3Y2Zi
OGM2MTY3OTk3OWE1YTMyNDgyNTNmOWY5ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFMaXN0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpDU1NNZWRpYVJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTUGFnZVJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUGFn
ZVJ1bGUubW0KaW5kZXggZjM2MjIzMWNlNWJjZmQ2ZGVhNjVmMTFkMzE0YzQxYmRjOWY5MzQyOS4u
YjZiYzI3ODA5OWY4MjQ3NzE3YjJmOWI3MjkxYmY5M2JmZTgxNTE0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQYWdlUnVsZS5tbQpAQCAtMzQsOSArMzQsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVBy
b3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1BhZ2VSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmluZGV4IDM1YTg5MzQ5YzMyMTI4
YmY5MzcyNWI2NmZhYzQ2NjY0ODhkNmUwNTguLjA1NWVhOWVjNGFiNWE1MTIzOTc2OGMzZjc3Yjll
MDM2OTllNzk3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
U1NQcmltaXRpdmVWYWx1ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTUHJpbWl0aXZlVmFsdWUubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgIkV4Y2VwdGlv
bkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6RGVwcmVjYXRlZENTU09NVmFsdWUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCmluZGV4IGQ0OGNiM2Y5MjI5ZGRiMmJkNjNkZDk5ZjA5
MWZkNWJjNWM2NTJkMGYuLmExMmIwZThjOGYwNzc3MDE2OGU5OGNiN2FhNzU1MWQ3YWZkNWIyNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCkBAIC0zNCwxMCAr
MzQsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KaW5kZXggMmQ5
ZmVmZmZjMTU0MDBkOTg3MzMxMzNjOGEzNzRmMWQ2ZTkzOGVmOC4uYjNiMDdmMzM5ODY4NmRlZGJk
MGRkMmM5MjQ2NDE5YTFlY2ZkNzY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KQEAgLTM2LDEwICszNiwxMCBAQAog
I2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbio+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZVJ1bGUubW0KaW5kZXggOGE0Y2ZmMzBjZGQ1NTMx
MmY3ZGQ0MjdlNTEyMWEwNjYxZDEwYjkwOS4uMmFlMTkxM2IyZTQzZjgzMTJmZWI0MDg0MmFhOGY5
N2UwZmI0ZjY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNT
U1N0eWxlUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5
bGVSdWxlLm1tCkBAIC0zNCw5ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q1NT
U3R5bGVSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxl
U2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5t
bQppbmRleCA4YzI0MDYwMTZjMGVhNWNlYmFlZWFkZDZkZmQ5OTU5NzE1MTA4OGFkLi4yNjlmMDI0
OGM3YzYwMTQwZTQ3NGI4ODQwN2IwMGEzODAwNjVmZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2lt
cG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OlN0eWxlU2hlZXQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTVmFsdWUubW0KaW5kZXggMGM2ZTA3NGQ4ZjNkMTUwNTAwMDkxYjExMWRkOTk4N2M4OGFh
NzM4Zi4uYjc3ZDRiODcyMDY1OTYzMDhjNzMyZjhhZjM0YzE2MTQ4OWY2MjFkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbQpAQCAtMzEsMTAgKzMxLDEwIEBA
CiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01WYWx1ZSo+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRhdGEubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQppbmRleCA4YzNiNGQ0YTU4
MmZlOTQ3YTBjMzhkMDY0ZjlhMTI5MWI1OTljOWMzLi5iMzBlOTU3OTQwZWQ5NjY1NzViYzYzNDk0
NGU3YTkxNjBlNTI5MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ2hhcmFjdGVyRGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q2hhcmFjdGVyRGF0YS5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25I
YW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DaGFyYWN0
ZXJEYXRhLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhKj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ291bnRlci5tbQppbmRleCAyZDFlNTY1N2VhMmQ2NjhkMjAwNWI1M2M0
ODU5ZWRkOWQ1MmY4YmY4Li4zMDg3MDFlNWI0ODE4Njc0NzMyM2MxOGRlZWQ0ZTQzMGFkYWMyYjQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQpAQCAtMzEsMTAg
KzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Db3VudGVyKj4oX2ludGVybmFsKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXggYWQ1NTg1Mjlh
YmI3ODNhODFkM2Y5ODMyZmM0M2Y5YWJjM2EyM2E1MC4uM2IwNGQzOTMzZDI0YWFlMzMzNWJkODdi
ODEwNjlmNGNjZTdiZDYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1
bWVudC5tbQpAQCAtODIsMTIgKzgyLDEyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVHJlZVdhbGtl
ci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aEV4cHJlc3Npb24uaD4KICNp
bXBvcnQgPFdlYkNvcmUvWFBhdGhOU1Jlc29sdmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRo
UmVzdWx0Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KaW5kZXggOTZkMDMyOWI0OWFl
NjE1YjcxZWZhYTRjMDViMjY5MTFkZTg1YzE3ZC4uMmVlMmNmODRjNjM5NDhjMDAwMmY4YTY1ZDhj
ZDY2OWE3Njc5ZDI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TURvY3VtZW50RnJhZ21lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TURvY3VtZW50RnJhZ21lbnQubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
TmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEb2N1bWVudEZyYWdtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURv
Y3VtZW50VHlwZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudFR5
cGUubW0KaW5kZXggZTIwMTE3NmE5MmRjNjY2NDBjZDUwMWVmN2VjMjBhY2Q4NDY0YWY5Mi4uN2Iy
ZTAzZWM1MjFjZGYwNzQwMzI2NTkwMGU2ZDNjYjA2MzQyYTNkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRUeXBlLm1tCkBAIC0zMiw5ICszMiw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVkTm9k
ZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRUeXBlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2
ZW50Lm1tCmluZGV4IDYwY2RiNmU1N2Y1YmUxNzYwZjRkOTE1ZDM4YWU0YTMzNTU3NTE3Y2QuLjJk
NjE1NGIxZTA2NDZkOGEzMWMwYzAzMGVjZTYzMzNmYjUxNmMwODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NRXZlbnQubW0KQEAgLTMzLDEwICszMywxMCBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2lu
dGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmls
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1tCmluZGV4IGVkYTg3
ZmZmMWM0ZTRiNWE5YTg3YzZkYjhiNDAyYWM0YjI0YjI4N2YuLmZkYzU0MTNiOWE1ZjQ2YjllZGE1
ZmMwYTdiMzZhZTVmODVkM2RiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01GaWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxl
Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZpbGUqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0KaW5kZXggNDQ2MGYyN2M2ZGZk
ZDMwNjU2MGMxMjRkOWQ3OTk0MWM4ZDVjODUyZC4uYzZjMDFiZDdhNjk2MTc3MGNlOGZmMThlNTc2
YzEwOTg1ZWZmNDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxBbmNob3JFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MQW5jaG9yRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxBbmNob3JFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxBcHBsZXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxBcHBsZXRFbGVtZW50Lm1tCmluZGV4IGE4NDU0MmRhNDdkNjQ0ZGMzNjJlOGZkMWRmYjUyZDA2
YjIxM2E2NGEuLjI2YjhkM2M1OGJlYmQyZDdkNWRiMmU4ZGNjY2UyNjlhMGY5NWJjZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFwcGxldEVsZW1lbnQu
bW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFyZWFFbGVtZW50Lm1tCmluZGV4
IGM0YWIyMzIwMjc1N2VmYzIyNmQzNDdlNTBhMjEwZGQ0M2UxMjA1MmUuLmI5YWNhODk2YTRjMDkx
NzY4Y2ZhMDMxOGI2YzZiN2EwN2VkNTc1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxBcmVhRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MQlJFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxCUkVsZW1lbnQubW0KaW5kZXggY2Y1YjNlMDg4NDEzOWM5OGU0Yjc4Y2IzNzhkZjFhNjdj
NDM1OThiOC4uNDMyNDY0YjhkZDJkNTYyNjMxMDE4OGM3MTgwNzI4NTkxNjMzOTM3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KQEAgLTMx
LDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQlJFbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQubW0KaW5kZXggNTE0YjcwOTFiNDNk
MTIyNzcyZDA3MGM3N2U2YTExZGY0ODAwNmMxMy4uYWZlM2I2OTkzYjYzODZkNzM5ZTE0Y2ZjYTNi
N2M5ZGY2OTQxZTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxCYXNlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEJhc2VFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTEJhc2VFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxC
YXNlRm9udEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJh
c2VGb250RWxlbWVudC5tbQppbmRleCBhOTljMGI2MjM4MWYyNTFjMjFlODA3Njg1ZmI5MzUwMzA2
NzExYTRkLi4yNjMzYzgwZjcyNGQ4Nzk0NGRlYmY5MDhmMDM5MmZlN2JmY2RhNGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVW5rbm93bkVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxV
bmtub3duRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9k
eUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJvZHlFbGVt
ZW50Lm1tCmluZGV4IDY5NTI5M2I0MjQ2M2ZiZTY2Mjg3YjA2NDc2NGVmNjlkZmU1OGY3MDQuLmRm
NjEyMDg2NmM2YmM2MmM0MTIyMzM5N2ZmMWNiMzBjNmE2ZjQ0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbQpAQCAtMzEsOSArMzEs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbQppbmRleCA5OGFhMjdjNTYyNzVj
NTQzY2Q0ZDllMmZiYjI3YzE4ZGI5ZDgyYWI1Li43Yzc1OTVkMzE0ODMwMzJjZmFlYmZlNDAxYzE3
MzIxY2I5ZGJkNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEJ1dHRvbkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxCdXR0b25FbGVtZW50Lm1tCkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L05hbWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTEJ1dHRvbkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihf
aW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTENhbnZhc0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TENhbnZhc0VsZW1lbnQubW0KaW5kZXggMGZkNjBhNmRhOGFhYWFiZTc0ZDJiZDJiZDk0NzliODE0
YmQ5NjM1MS4uMThiMzEzZWI0NGFjMDM2YjAzN2Y1OGE5NDIzNTc2OWJlZGQxMDQzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ2FudmFzRWxlbWVudC5t
bQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TdHJpbmdBZGFwdG9ycy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTENhbnZhc0Vs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0KaW5k
ZXggZTM0NDA5OGNiNDhlMmQzOTBmNTQwYmMxZDUwZTY5NzNjYzQzZDdmMS4uYWFjMTg1NDlkM2Q4
YjQ3ODEzYmMxNTRiMWNhNWM0MTE3M2I1MzZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MQ29sbGVjdGlvbi5tbQpAQCAtMzUsMTAgKzM1LDEwIEBACiAjaW1w
b3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SFRNTENv
bGxlY3Rpb24qPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRGl2RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MRGl2RWxlbWVudC5tbQppbmRleCAyOTM2YWZhYzAyNTMxODU4ZDFmYjhhOTRkMjcy
ZmZmOTVjZTk0OWRkLi45Y2IwM2EwMTE5NmI3ZjQ0MTU0NTI3YTdjNWMyNTViN2QzYWU5Y2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERpdkVsZW1lbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEaXZFbGVtZW50Lm1t
CkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTERpdkVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEb2N1bWVudC5tbQppbmRleCAwMzc1YTNjZjRm
ZDY3MWY2MzM2ZmJiMzdjOWJiN2M5YWVmMDE3NjNkLi44OGQxNDJlYWRhODQxMTM3MDUwMTQ4ZmNl
NGVjODc1ZjAyMjdiN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTERvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MRG9jdW1lbnQubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTERv
Y3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpI
VE1MRG9jdW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1lbnQubW0KaW5k
ZXggYTVlMGNkMzE5MTNiZDM4NzMyNjYzNWU3OTM1ZjRhYTg5ODE5YzZmMC4uMmZlMjRjNzA3NDk3
ODg3MjUwODRmMzY2ZjkwYjlkODQ0OTc2ODA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRWxlbWVudC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+
KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MRW1iZWRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxFbWJlZEVsZW1lbnQubW0KaW5kZXggNmI4MmJlMDhlODIxNjZjMzE5NDBhMzQ4ZWNmOTcyNTgy
NTljYzlkMC4uMGQ2ZDg4MTQ3MWE4MTVlMjAzYTBjNDU0ZDBkNzY2YTYwOWQ3ZTczYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0K
QEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpp
bmRleCBlYTkyYTAxOWE1MDY1Njk1YzY0NDZhZGE0OTM5NWY2ZmEzYWUyNjY2Li4xZmQ0ZDgwYmM3
MThjOTU2YTM1ZDZjOGJjMGEwN2ZiMDJhOTk2YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpAQCAtMzYsMTAgKzM2
LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRpdHlTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxGb250RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MRm9udEVsZW1lbnQubW0KaW5kZXggODBkZTQ5MDU0OTI0ODAzM2EzMmJmY2EwMzhiM2FmNzcx
OWM2ZmI3Ni4uOTEwZThmN2Q0NjZmMWRlM2E3OGVjZDMyZmQ4NzcxYmI3ZTg0ODJkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvbnRFbGVtZW50Lm1tCkBA
IC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZvbnRFbGVtZW50Kj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9ybUVsZW1lbnQubW0KaW5kZXggYmZkZTFk
YWQ4MTRlZGRjYmVhNzY1N2FmYjc4Y2QzNGY3YmVkZDU2Zi4uZTg2MjZiYTM1YWEzMzdmNGI0Yzdj
ZmExYmQ4MzNiOTVmZWVlNzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxGcmFtZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEZyYW1lRWxlbWVudC5tbQppbmRleCA2MDBmNDRmODliYzQzOTk3ZGM0MGUwMDZkMjZjYzM1MmUz
ODFhYWYxLi5lYjVjNTVhYzJiNjdhZjRkZWViZGY2MTVhMzc0ZTI1NzNlYjMzYjgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQpA
QCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCmlu
ZGV4IGYyZjIwN2YwNTI0OTdjMjE5N2I3NDM0NzdjM2NiYjMxMjZmZmM5OGEuLjY5Yjk1YTA2Zjc4
ZDg4Njg0MGUzNjYwNmI3NzE1YzI5MDYxNjQxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KaW5kZXggYjI1NzhhYTJkZjNlZTg5MDA4
NTYxMmZjMjE3NzM1ODM1MjY1Yjc2ZC4uYTcyNmJkYzFlMDIyN2FiMjZjZjAwOWI3MzY3MzQxODdm
ZTQwMmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxI
UkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVs
ZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSFJFbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZEVsZW1lbnQubW0KaW5k
ZXggYmVmMzlhZTU3MDZmOTQ5YWNkMjdmNDFiNWQwYmIyN2VlZTJmZDJhNy4uOWNhNGI4ODBiMWFh
YWJhZDhjMzBhOWViMWQ2ZTQwZTMzMGJlZDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTEhlYWRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTEhlYWRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MSGVhZGluZ0VsZW1lbnQubW0KaW5kZXggODExYmIxODA0ODg2MWY4YjE3MTJj
OTM1NmMxZDgyNzZkMDExMzE4OS4uYTJkZmI2YTNlYzFlYjA1YzhjYjMxMTEyMjIwNDZhMDAyYzc5
ZGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFk
aW5nRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhl
YWRpbmdFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxO
YW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TEhlYWRpbmdFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxI
dG1sRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSHRtbEVs
ZW1lbnQubW0KaW5kZXggMjg3Y2U3Zjk0ZmYyZTljOTY1ZjM1ZmRlNDMzNTBjZDRhYjNjYmMxZi4u
ZWJjM2NmZTc0ODYxNDI2MzNkMzM5MjZkNWRlMTNlNTlmZWMxOGNhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tCkBAIC0zMSw5ICsz
MSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEh0bWxFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCmluZGV4IGYzODJjOWVmOGUw
OTY5MjNhNjMwZTVkYmJkNTk3MjY3ZjFlMTY5ZGYuLmUzMjFiNGY3NmQyMTZlMjNhM2Q5ZmEwNDNj
Y2VmNzg4YWMzN2E3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MSUZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTElGcmFtZUVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MSUZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+
KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MSW1hZ2VFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxJbWFnZUVsZW1lbnQubW0KaW5kZXggZmM5MTk1M2NlY2MyY2FlZWU3NjJiMzQ1NDIwMjQxYmJm
OWIzNzE1MS4uZWJhNGVjOTIzMTZjMzljZTAxMzRjZGIwMDVkMTYwOTNiMDMyMmRiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0K
QEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5wdXRFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KaW5k
ZXggODM2MzczNWQ5NDc0YTg2YmE4YTgwNWUwZjFhM2ViYTZmODRkNGJjZC4uZDczN2E1NTdlOWEz
ZWMwMzUzNTNjNTEyNjkwZGJlNzhlYjBlODQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KQEAgLTY0LDkgKzY0LDkgQEAgQGVu
ZAogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJF
bGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMSUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTExJRWxlbWVudC5tbQppbmRleCAyNjlkMWE1NGFkZDhjZTJiZDRmZWFm
NmE0MmE2Mzk4MjA4NWZlZGEwLi5hM2NmM2ZhOGRiZmE4Y2VhZDdhMjlmYTk4YzI3N2E4NGQ5YmYw
ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxMSUVsZW1lbnQq
PihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCmluZGV4
IDUxZjU2MGMwOTc5MTg5M2FlNjZkYzU1MmQyZjk2OTdkMmZiZjAyODEuLjgxMzkwMDBlYWVhNGNh
N2QwZWU5MmI1ODBmNGNmMDgwMTdhMTE2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCkBAIC0zNSw5ICszNSw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTExhYmVsRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbQppbmRleCA5MzQzY2E2ZTlkZmFmNzM3ODA2NTdj
ZjU0MmFlMTIyNTQ1MmQ4YjBjLi5kNGYxZjM2YzVmMjRiMTk0YTkyYzgyYjEwY2RiYTFkOGUxMGU2
MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExlZ2Vu
ZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMZWdl
bmRFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1l
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExl
Z2VuZEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtF
bGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMaW5rRWxlbWVu
dC5tbQppbmRleCAyMGY0YzAxNTE1ZGViNjBlZTRkYjM3OWEwMDVlNTI3NzliOWM1MjIwLi41Njg3
YzQ1YmJhMGZhYzc0YjU0Yzk0ODVkOThhZTQ5ZThmNzM1YjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGlua0VsZW1lbnQubW0KQEAgLTM2LDkgKzM2LDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5
bGVTaGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tCmluZGV4IGI5MjFiM2E1MGVkMDUxNTAzZjNk
NzdjNDUwYmQzOTcxNmFkNGM5NjAuLjJjYzkwY2Y4NjM0ZTM5NmRkMDFmNGEwYzExZjA2MTBlY2Q2
MGU4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFw
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcEVs
ZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWFwRWxl
bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcnF1ZWVFbGVtZW50
Lm1tCmluZGV4IDYxYWI0YzYyMzMzZjk1NmUwNzI0MzYyNzcyZmMxZmZmY2E0NmEyMzguLjk2MjNl
ZGIxNmFjMDk5YjQxZGM5NjM4NzU5MDQ0YjQ3MWI5MGJjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbQpAQCAtMzEsOSAr
MzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KaW5kZXggNWJjNzQ1NmY2
MGNmNzYxMmI1MDZlYmZkM2RjODlmYTQ3YWVjYTQ2Ny4uNzgzYTVhMTVlOWRlMWM3NWU3NGRiODk1
MmI0MTk5MjAxYTk0MzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KQEAgLTM4LDkgKzM4LDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvTWVkaWFFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaW1lUmFuZ2VzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxNZXRhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
TWV0YUVsZW1lbnQubW0KaW5kZXggOTk4NzAwMmFmN2NiZTNkMTRkNjdjZjhjNGYzYjgxZGUzZDNi
ZjI2Yy4uNzhlZDZlOTNjZGZhYTViOGM5NWY3NzJmMjAzZjM4NDRkODBlOTllNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tCkBAIC0z
MSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
ZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tCmluZGV4IGQ4ODVmY2ZkMDgw
MzZjNzM4MjkyZTAwNzA3MjFlZTVmODJlMzcxOWEuLjYwZjllNDVjN2IxZTM0YmMwNjJlNmE0ZWIz
MTI3NGFmNDY1YjI1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MTW9kRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTE1vZEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpI
VE1MTW9kRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT0xp
c3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVs
ZW1lbnQubW0KaW5kZXggYTMyYzJkOGJjOTcxMjE3MDdiNmUwZTM3OGU3NDUxNTIyYzU1ODczMC4u
YjdmYTU5YjZlNjY5NWY2NmM4OTY5YjFmYTQwNWU4ZTRhMWRlYWVlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KQEAgLTMxLDkg
KzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE9MaXN0RWxlbWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE9MaXN0RWxlbWVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbQppbmRleCA3
YWI3M2Y1NzI5NDMwZDNiZjIwMjdlZGJjNWU0NjEwMzE0YmRjYTE1Li5kYjIzNmQ4Yjk1ODZiOGI3
MmFjOGU4OGNjZGYyYjQ5MGFiZWRiNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTE9iamVjdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tCkBAIC0zNyw5ICszNyw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQppbmRleCA0ZTUxNWRhZjU1YmI3
Y2M1Y2MwMzhiYjUyNDA0YjZlZWYxYjU1Y2RiLi4xNzcxYzJlZmUzMTg2MmQ3YjE1NTllMGQxMjQ3
NTNmMTNmMzcwMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTE9wdEdyb3VwRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MT3B0R3JvdXBFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tCmluZGV4IGZkZWM1NGVlMWQ2NDc4MWU2
NmU4ODMzNGM1MmNmNTQxOGJjNzkzZGYuLjE0NTM1MWQ5YjZmZWUzZTNiMTJhZjMxZjA0YmMzMDM3
ZmRhNzc5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
T3B0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE9wdGlvbkVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE9wdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KaW5kZXggZjc3MGE4YTE0ZDVhODNkNzY5NWU0
MzcxOWVlMWFmNGRjYjY2NGNhMS4uMzkxMjEwMTU2MWY1ZmZkZjg5NDFlOWE3MWJmYmU0YjgyOGY4
NGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRp
b25zQ29sbGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLm1tCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogI2ltcG9ydCA8d3RmL1ZhcmlhbnQuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uKj4oX2ludGVybmFsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1t
CmluZGV4IDZjNTExZTkxNjY0Y2U5MjNjYzkyODRhMjU1YTExZTZhNzkzYjNmZDQuLjFhNTQzYjNm
ZDNlNmZlNzI4MjQ2YjJiYThjMTJmZjI2NDBmNjYwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQubW0KQEAgLTMxLDkg
KzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBhcmFncmFwaEVsZW1lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxQYXJhZ3JhcGhFbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhbUVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQpp
bmRleCA1ZmIwY2VjMjdmYjcwOTdmMDkxNWVlNWNkZmM0MThhODFjNTk0ZmU4Li5lZGE2NTMyYzVk
MmE3ZWZlZmMxNDliMGI3NjZhZTlkYjhkYmM5MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MUGFyYW1FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbQppbmRleCAzNzQ5YzE4MDMzMGZi
MGUzNWNkNTQ1OTExYzA5ZTc3NDU4NzVhZmQwLi5iY2Q3ODY2Y2Q3NmM3M2VhYzY0NGUwNGY4NDM3
ZTUwMzBmNWEyZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFF1b3RlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFF1b3RlRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MUXVvdGVFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MUXVvdGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxTY3JpcHRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxTY3JpcHRFbGVtZW50Lm1tCmluZGV4IDMzNDRkNTQ4ODg0OWMxNGM5MWM1YTY5M2U3OWFk
N2U2NzBlMDlmZjQuLmU0YWMwMTc4MDJkYTI1MTRmNGNkZmU3ZGQ3YzkyMDQ5YmRhYjAxZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2NyaXB0RWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNjcmlwdEVsZW1l
bnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFNjcmlwdEVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxT
Y3JpcHRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxl
Y3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxlY3RF
bGVtZW50Lm1tCmluZGV4IDc1ODE0MWRlM2ZiN2Y1YWJmNmUyYTI4ZmE2YWVhMTQ2NThjNjY5NjIu
LmJjZmJlY2FjZDM4NDkxZmE3YmM5OTU0YjNkZTkwMzAyZjkxYTY2YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2VsZWN0RWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW0KQEAgLTQ0
LDkgKzQ0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9O
b2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50Lm1tCmluZGV4IGE0NTI3ODIwODBiYjYz
OWM0ZTY3ZjQ1NzlmOTM5NDY1NjhjNWNmMTAuLjgwNzZhMzM4ZWUxZGMzMGFmMWMyOGE3NDg1ZWI2
NDdkOGVlMzdhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MU3R5bGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MU3R5bGVFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkhUTUxTdHlsZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0KaW5kZXggYTc4MTFiZDY4YjM4OGI4ZDczMzFkNDUz
Yzk2Mjg2MDhhNWEzNmUzNy4uNDgzZjk0ZjEzZmJhZDE1OTdlNjczNmFmNzZjYTRjMGYxMDZlZTg5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNh
cHRpb25FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
VGFibGVDYXB0aW9uRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0KaW5kZXggZGQzMDE2
YjNhYTYzYTRmOWIwMzE0NDA3NWYwNWU1YTk4MDU1OGVlMC4uOWFkOTE0NmU4NGEyNzgwNjk5YmNh
NzNkNTQ3Y2JjYTgyNTBjM2U1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDZWxsRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCmluZGV4IGFm
MjY3MTRkODRmMzBhYWRjYWUxNDJiZTg0NmQ2NmNlNmUzNWU0MGEuLmM5ZDk4Y2E1MTRlMWFiYTdi
MGVmNDg5YzNkYWYyYmU3OWM3MTJkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZUNvbEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNvbEVsZW1lbnQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCmluZGV4IDRjNjhjNGI2
YjRjYTVkNmYxZjYxMGVjNWFjMDdmYTZkMzQ3MzIwYzkuLmJlZGRhZjUwZmFhYWI0YzJkMzZmYTVk
MTI4ZDAzMTY1ZjIwNGI3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCkBAIC0zOSw5ICszOSw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQppbmRleCAyNDA5NmE4ZDk5NDdm
ZDdiN2EyNGZkMTY1NzMxM2E5ODQwOTkzOGNjLi4zZGZlZGMzM2VmY2MxNWFhZTE0ZDQ0MTFmZmVl
NzA2NzczZDY4YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFRhYmxlUm93RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MVGFibGVSb3dFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tCmluZGV4IDk4YjE5
ZmEzMTU0MDM0ZGFkOWY2MzBiMzQzMjIyODgyODM0ZjMxODguLmMzMmMyZTcwMjczNDNkNDcwOTMw
YTY3NzNiMjk4ODhlZDRmNmZlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQpp
bmRleCAyNDg2Zjc3YzNhNWU3NTA0MjcxMDJhZDI3ZTI4MmI2YjY1YjRlZmU5Li4yODM5MTcxNzg1
NTk5ZjkyODU4NGFkNTIxNThlMGYwNWQzNDEyMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQpAQCAtMzAsOSArMzAsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MVGl0bGVFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbQppbmRleCBmOThmOGU4NTJiZDQ3
YTE2MjkyYjk3MzQwOTAxNTcyOGU0NWYzM2ExLi5mY2Y5MDU0YWIwZjEyMTY3YWVlMjA2Y2FkOGFk
YTFkMTM5MDdhM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFVMaXN0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFVMaXN0RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MVUxpc3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MVUxpc3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFZpZGVvRWxlbWVudC5tbQppbmRleCAzMzU4MDY1MDM5Mjg3MTliOTViMGY3MTY3ZjI3MWE5
MDFlODVjMTE5Li40NTdlYWZiYTBkMGNlNTJkMDNmNTUwZjA0NzhiMzRiMDhlODczZDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5t
bQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQppbmRl
eCAzZmQ4ZmNlMzY0NjZmMzdhYjlhMTk0YzBhMzBjMWMzYzQwNTJmNjNjLi4yYzAxZjNlNjEwNTUy
Njk3ZTQ1MTM3OTRkYjEzOWEzNzlkMzJjNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpF
dmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01NZWRpYUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVk
aWFMaXN0Lm1tCmluZGV4IDllODE2N2ExNmE0NGIzMTM3YjIzZWRiMWE4ZWVkNDU5NDlkMjdkOTgu
Ljg2NTFmYzk3YjQ4NzExNWUyZDRjZGQ3NzE0OTBkZjNmZDAwYTVkYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbQpAQCAtMzMsMTAgKzMzLDEwIEBACiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhTGlz
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpNZWRpYUxpc3QqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU1vdXNlRXZlbnQubW0KaW5kZXggZjY1NmE4YWRlNTUzNWE5MGU4N2FiY2FhYjlkODA3
OTk2M2E4MTIwNi4uOTVmMjIzNWQ0NTcyZmIzOTZkNjI0YzM5ZmM1MDY5YjMwOTZkYzM5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KQEAgLTM2LDkg
KzM2LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3VzZUV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01NdXRhdGlvbkV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU11dGF0aW9uRXZlbnQubW0KaW5kZXggMGY0ZWYxNjc1YTFjMDNhODdhMTBkNjFlM2Zi
NzExYWFmMTFjNzZiZC4uMmZiZjQyMmFlODVkOTljNjY4MGEwZWQ1OGNkYmEzMjdmN2VkOGZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQubW0K
QEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTXV0YXRpb25FdmVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNdXRhdGlvbkV2ZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCmluZGV4IDU2ODE5MzMyYmI2NzQy
ZTFlZmVkZDAxZTJjNzUzMzU3N2Q3MWUzZjguLjI5MTgxOTA5MGU1ZTI1MDM1M2IzMDc0YWY5NmJk
MjM4ZmRiOGQ1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01O
YW1lZE5vZGVNYXAubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5hbWVk
Tm9kZU1hcC5tbQpAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVkTm9kZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOYW1lZE5vZGVNYXAqPihf
aW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tCmluZGV4IDlhZGM0MGIwOGFiYmM4NzcxYjNjOGI4YmRm
ZWUwMTlmYzgxY2UzMjUuLjIwMGU4MmEzMTAzYTY3MWQwNjE1NzExMmM3ZGM5NzI0YTU1NmUyZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVByb2Nlc3Np
bmdJbnN0cnVjdGlvbi5tbQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVTaGVldC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdl
Lm1tCmluZGV4IGYyODliM2EyNmU4YTRmNTY2YjY3MjRmYjhkNjE1MTE1OGJkYjYyZTguLmVmMmMz
NTgwOWIwYjY3NjNiNDc3NDU2MThjM2IyOTU2MDZkOTk5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NUmFuZ2UubW0KQEAgLTM0LDEwICszNCwxMCBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlJhbmdlKj4oX2ludGVybmFsKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCmluZGV4IDdh
MWE0YTg3ZmM2ZWYyNDlhY2I5ZDA3ZGUyNTRiZGIyYjBhM2M5MzMuLjBlODc4NWM3ZDJjMDY3YzQ4
NDcyMWVkNTM3ODc0ZDdjNTVjYjBhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01TdHlsZVNoZWV0Lm1tCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUv
Tm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlN0eWxlU2hlZXQqPihfaW50
ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0KaW5kZXggMzBlN2Rh
M2MwYzk4OTczZDQxMjVhNjdlZGRjZDI2ZDljZWU3NWNiNS4uZjczMGFkNmRlYmFmYTA1YmUzNzI0
NDBmOTZlNjAxYWVmZjRkZjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVRleHQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQu
bW0KQEAgLTMwLDkgKzMwLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVGV4dEV2ZW50Lm1tCmluZGV4IGM1MDI2ZWI0YjJmODYwMTMzMjg3YjlmMmUwNThh
NzYxZmIyNDIwNGYuLmNhMDZmZDdjMGZmMGUwMDFiOWU4ODQwNmQwYmE3ZWFjY2E0MTRhOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQpAQCAtMzMsOSAr
MzMsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UZXh0RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRFdmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVRva2VuTGlzdC5tbQppbmRleCBkYjhmNTVjZTA3YWE2NGZkOTI5YTVmNWY4M2ZmMGNi
Y2NkZDc3NDY4Li45YzRhYTg5NjMwZDc4MTQ0NDJiMTNjNmJjMjVjOGU0YjdmOTZiYjYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0KQEAgLTMyLDEwICsz
MiwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6RE9NVG9rZW5MaXN0Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCmluZGV4IDE3MzI0MzE5MGEzMmIxNWM0N2ZmZmUw
MDJiM2JhNjE2N2IxNzc4ZGIuLmY4MmNmNThhN2VkNGFiYjk0Zjg4NWYwZWU0YWZmYmMzZjlkZTAx
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCkBAIC0zNCw5
ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVUlFdmVudC5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VUlFdmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NWFBhdGhSZXN1bHQubW0KaW5kZXggYTFlZjU3M2Y4ZGQyYzEwYjY4NmMxMTk1MDlh
NzAyNDJkN2NmNTJhZi4uZGFjZjFkODZkZjhlNzNjMWJiMDQ0Y2RkYThiNDkxNTFhNGJmZmZkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aFJlc3VsdC5tbQpAQCAt
MzEsMTEgKzMxLDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvWFBhdGhSZXN1bHQuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6WFBhdGhS
ZXN1bHQqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmluZGV4IDhmMTdjM2FmODlmMmIyNzRhYjQ3NTQ1ZWE5Zjll
YWFhNmM5ZWNkZmMuLmIyYjRhZThhMzFjODM1MTFkOTA3NTEwZDA4YWE4MGJhMDAxODE4OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0u
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bQpAQCAtNDcsMTMgKzQ3LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRy
YXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVh
ZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9v
cC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQppbmRleCBmM2Jh
YWVhMmZhMTEzZDhlNDc3Y2Y2MzA4MzVlMDc4YWQ0MGE3Y2E4Li5lZDI4NGI0NjdiODRiYjZmZDg1
ZTA0YTQzNzg3NmNkZTRhNmU5YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViTlNVUkxFeHRyYXMubW0KQEAgLTMzLDE0ICszMywxNSBAQAogI2ltcG9ydCAiV2ViTG9j
YWxpemFibGVTdHJpbmdzLmgiCiAjaW1wb3J0ICJXZWJOU0RhdGFFeHRyYXMuaCIKICNpbXBvcnQg
PEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Mb2FkZXJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0
RW5jb2RpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+Ci0jaW1w
b3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+
CiAjaW1wb3J0IDx1bmljb2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4K
KyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRy
YXMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJh
cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBA
IC0xMDksNyArMTEwLDcgQEAgLSAoTlNTdHJpbmcgKilfd2ViX29yaWdpbmFsRGF0YUFzU3RyaW5n
CiAKIC0gKE5TU3RyaW5nICopX3dlYl91c2VyVmlzaWJsZVN0cmluZwogewotICAgIHJldHVybiB1
c2VyVmlzaWJsZVN0cmluZyhzZWxmKTsKKyAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmlu
ZyhzZWxmKTsKIH0KIAogLSAoQk9PTClfd2ViX2lzRW1wdHkKQEAgLTEzOSw3ICsxNDAsNyBAQCAt
IChOU1VSTCAqKV93ZWJraXRfVVJMQnlSZW1vdmluZ0ZyYWdtZW50CiAKIC0gKE5TVVJMICopX3dl
Yl9VUkxCeVJlbW92aW5nVXNlckluZm8KIHsKLSAgICByZXR1cm4gVVJMQnlSZW1vdmluZ1VzZXJJ
bmZvKHNlbGYpOworICAgIHJldHVybiBXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhzZWxmKTsK
IH0KIAogLSAoQk9PTClfd2Via2l0X2lzSmF2YVNjcmlwdFVSTApAQCAtMTc1LDE3ICsxNzYsMTcg
QEAgLShOU0RhdGEgKilfd2ViX3NjaGVtZVNlcGFyYXRvcldpdGhvdXRDb2xvbgogCiAtKE5TRGF0
YSAqKV93ZWJfZGF0YUZvclVSTENvbXBvbmVudFR5cGU6KENGVVJMQ29tcG9uZW50VHlwZSljb21w
b25lbnRUeXBlCiB7Ci0gICAgcmV0dXJuIGRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGNv
bXBvbmVudFR5cGUpOworICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNl
bGYsIGNvbXBvbmVudFR5cGUpOwogfQogCiAtKE5TRGF0YSAqKV93ZWJfc2NoZW1lRGF0YQogewot
ICAgIHJldHVybiBkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRT
Y2hlbWUpOworICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGtD
RlVSTENvbXBvbmVudFNjaGVtZSk7CiB9CiAKIC0oTlNEYXRhICopX3dlYl9ob3N0RGF0YQogewot
ICAgIE5TRGF0YSAqcmVzdWx0ID0gZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwga0NGVVJM
Q29tcG9uZW50SG9zdCk7CisgICAgTlNEYXRhICpyZXN1bHQgPSBXVEY6OmRhdGFGb3JVUkxDb21w
b25lbnRUeXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudEhvc3QpOwogICAgIE5TRGF0YSAqc2NoZW1l
ID0gW3NlbGYgX3dlYl9zY2hlbWVEYXRhXTsKICAgICAvLyBUYWtlIG9mZiBsb2NhbGhvc3QgZm9y
IGZpbGUKICAgICBpZiAoW3NjaGVtZSBfd2ViX2lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb0NTdHJp
bmc6ImZpbGUiXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbQppbmRleCBlOWVkNWNiZWIyOTVkMDZkYWFkOTY5
NTcyMmEzNGYzZWVlNTU2NjhkLi5iNzI2NTgzZjk3NGNkZGY3NjYxN2YyYWQxOGQzOThmNDAzYjkx
M2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250
ZW50VVJMUGF0dGVybi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVz
ZXJDb250ZW50VVJMUGF0dGVybi5tbQpAQCAtMjQsOCArMjQsOCBAQAogCiAjaW1wb3J0ICJXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4uaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW0KaW5kZXggYWM3YTRiYjMxOGM1NWY5MzU5Yzk4ZTBhOGJmOTZkMWU2ZTQ0
MzYzNi4uODgzYjkyMDcyMDdlMjQ4ZGQ0N2EzMGJjMGM3NjIxZTcwNjhiN2MzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNTgsNyArNTgsNiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9Qcm94eVNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250
cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9ucHJ1bnRpbWVfaW1wbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ydW50
aW1lX29iamVjdC5oPgpAQCAtNjYsNiArNjUsNyBAQAogI2ltcG9ydCA8dXRpbGl0eT4KICNpbXBv
cnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWRMZWFrQ291
bnRlci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBleHRlcm4gIkMiIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAwZTE4OThmMDMwNTk5NzA0
M2U2NGY2YTI5YWY2ZmNkM2Y5OWM1ZmE3Li4yYmM5NzhkMzQwM2Y3M2YxYzA2M2RmMjUyMzQzYzVi
ODNlYzEzMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFdl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0+CiAKICAgICB2b2lkIGNhbmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0aEVycm9y
KE5TRXJyb3IgKik7CiAKLSAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29uc3QgV2ViQ29yZTo6VVJM
JiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0KKyAgICB2b2lkIHNl
dFJlcXVlc3RVUkwoY29uc3QgVVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVl
c3RVUkw7IH0KIAogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKQEAgLTEwMyw3
ICsxMDMsNyBAQCBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPgogICAgIGJvb2wgd2FudHNBbGxTdHJlYW1zKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gbV9kZWxpdmVy
eURhdGE7Ci0gICAgV2ViQ29yZTo6VVJMIG1fcmVxdWVzdFVSTDsKKyAgICBVUkwgbV9yZXF1ZXN0
VVJMOwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9yZXNwb25zZVVSTDsKICAgICBDU3RyaW5nIG1f
bWltZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMWE3MGJjZWI2NWRmNTcxMmY2NTA1NmEy
NGY0ZTk5NTkyMjMxY2I2Zi4uMDRkMjQ2ODE3ODUzNjFlYjgxNjBhMzc1MjM4YmE4ZTQ4ZTk0YzY5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIyNyw3ICsyMjcsNyBAQCBjbGFzcyBXZWJDaHJvbWVD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKICAgICB2b2lkIHNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKICNlbmRpZgogCi0gICAgU3Ry
aW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5k
ZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBj
b25zdCBmaW5hbDsKKyAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNv
bnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQppbmRleCA1ODc4NGI5OTc5NmViYTBiNzkzMWQ3ZTJhNzhmODVlNTdhMmZh
MTE4Li45ZTUxMjUzMDUxMjRlNGZhMmFlNjMyNWRlMDIzNmE4MTIyODExZGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsCiAK
ICNlbmRpZgogCi1TdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5n
ZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CitTdHJpbmcgV2ViQ2hyb21l
Q2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6
ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZ0ZvcldlYlZpZXc6KTsKICAgICBpZiAoW1ttX3dlYlZpZXcgVUlEZWxlZ2F0
ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CmluZGV4IDhiMjAzNjRiYjY3YTkxNzI3OGIyOTUzZmM1MTc5YTEyZGQzNjZkZGQuLjE4ODVmMDMx
MzEzNWI4MTdiMzBmOTQ1Nzc3ZDhlMjRiMTUzOWJmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudAogCiAgICAgdm9pZCBjb250ZXh0TWVudURlc3Ry
b3llZCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpV
UkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc1NwZWFraW5nKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50Lm1tCmluZGV4IGFmNzgxNGI5Njk2N2U5ZDg1ZjU5NDFkNGFmYWIzMDI0NzU2Y2YzMjUuLjYx
NjMwNDkwMTk5NmYxNTdmYzdlOThhMGU3YWIwYTBlODdlYzk5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tCkBAIC01NCw5ICs1NCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlck9i
amVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTVByaXZhdGUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFj
L05TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEkuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCA0ZTgxZDM3MDg0OGY5ZTQ0
YTQwZjUwNDBiYzlhZDhhMzdjY2FkOGUwLi44NDdhNzNiMTdhNDYxN2JkNTRhOGQyOGE5MjNjMWQ0
YTYzYmRkMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFdlYkRyYWdD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAKICAgICB2b2lkIGJlZ2luRHJh
ZyhXZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgbW91c2VEb3duUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtb3VzZURy
YWdnZWRQb3NpdGlvbiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RHJhZ1NvdXJj
ZUFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDc3MTgyZDIw
ZWJiYjM5MDcyMWFmYjgyZTU5NGUyMTlhMGI0NDBkNGQuLmZmNmQxNDFmZTNkODljYTk1YjUwZDU4
ZDc3ZGU0Njk2YTJjNTZkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTA3LDcg
KzEwNyw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50IHsKICAgICB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVu
dHMoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVu
dFJlZGlyZWN0KCkgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJl
RGF0ZSkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
Y29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIGZpbmFsOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CiAgICAgdm9pZCBk
aXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKQEAgLTE1OSw4ICsxNTks
OCBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudCB7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKSBm
aW5hbDsKIAogICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIGZpbmFsOwotICAg
IHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgV2ViQ29yZTo6VVJMJikgZmluYWw7Ci0gICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFsOworICAgIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikg
ZmluYWw7CisgICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0Vu
dGlyZVBhZ2UpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKSBmaW5hbDsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBib29sIHNob3Vs
ZEZhbGxCYWNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIAotICAgIFdU
Rjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBXVEY6
OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgZmluYWw7CiAgICAgCiAgICAgdm9pZCBzYXZl
UGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIGZpbmFsOwog
ICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNh
Y2hlZEZyYW1lKikgZmluYWw7CkBAIC0yMDYsMzAgKzIwNiwzMCBAQCBjbGFzcyBXZWJGcmFtZUxv
YWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgUmVm
PFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIGZp
bmFsOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXImKSBmaW5hbCB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIHZv
aWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVS
TCYpIGZpbmFsOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZy
YW1lT3duZXJFbGVtZW50JiwKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1l
KGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVP
d25lckVsZW1lbnQmLAogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wg
YWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIGZpbmFs
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpV
UkwmLAorICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBVUkwmLAog
ICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCByZWNyZWF0
ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0RGF0YVRv
UGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAg
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAg
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBj
b25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9s
aWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
YmFzZVVSTCwKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYs
IGNvbnN0IFVSTCYgYmFzZVVSTCwKICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYg
cGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIGZpbmFs
OwogICAgIAotICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBl
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7
CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3Qg
VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbDsKICAgICBXVEY6OlN0cmlu
ZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIAogICAgIHZvaWQgZGlzcGF0
Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikg
ZmluYWw7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBzaG91bGRMb2FkTWVkaWFFbGVt
ZW50VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc2hvdWxk
TG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAg
ICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsg
cmV0dXJuIDA7IH0KQEAgLTI0Miw3ICsyNDIsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBSZWY8V2ViQ29y
ZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSBmaW5h
bDsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBXZWJDb3JlOjpVUkwm
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgVVJM
JikgY29uc3QgZmluYWw7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBSZWZQdHI8V2ViQ29y
ZTo6UHJldmlld0xvYWRlckNsaWVudD4gY3JlYXRlUHJldmlld0xvYWRlckNsaWVudChjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCmluZGV4IDI4MjEyNDI3MjMyZDIzMTkzYjI4MWNjMTVhZjIwYzIxYmQ5OWFm
NzUuLmVmZTlhMzRiYzViN2Y1OTUwZjcyY2JiZWYxYTlkMjUxZWZkYTk2MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKICAgICBXZWJWaWV3KiB2aWV3ID0gZ2V0
V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0g
Y29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IGJsYW5rVVJM
KCkpCisgICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IFdURjo6YmxhbmtVUkwoKSkK
ICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50LmgKaW5kZXggZmQ0Y2Q0YzRiMzZkOGJmZjRiY2U1N2JmMTVlZDZmODlmNGVjZDU4MC4u
MDc3ZDAxNGQzZTUzNWM3YThhYmIzNDY4ZTFkNjU0ZTlmZTliZTI3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29y
ZGluYXRvckNsaWUKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1l
bnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlu
a0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYp
IG92ZXJyaWRlOworICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0
b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRp
b24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdD
b250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRv
ckNsaWVudC5tbQppbmRleCAzMzQ5M2JkOWYxNjBiZGE4YWFjNWRhZmZmYTU5MmE1NjBmYTk5Mjgy
Li4zMGUwNmNhZjkzMWFlMDY2YzM2OWI3MzUxMTNkOWM0OGE3YmRjMGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZKQogCi0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogV2ViUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50OjpXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKQogewpAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6b3BlblBheW1lbnRTZXR1cChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLAogICAgIH0pOwogfQogCi1ib29sIFdlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudDo6c2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JikKK2Jvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpzaG93
UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiwgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggNzM5Yzk1MWY2YmQ3ZmY1NWYyOTkyYWRm
ZjNhNTA5YTZjZTEwMDU5NC4uNGVhMWFkZDNlMTIzN2UwMmU1MDA5YzExZmQ1YWI3ZTJhMmMzOTM4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBjbGFz
cyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVn
aWVzLCBwcml2YXRlIFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxv
YlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kK
LSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNv
cmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
KSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVDb29raWUoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKICNp
ZiBQTEFURk9STShJT1MpCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRl
Z2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29y
CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJD
b3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0
cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6
IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAgICAg
bG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9yIGNv
bG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6
OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVVJM
IHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAogICAgIGxvbmcg
d3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4g
dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCmluZGV4IGJkNzU4MWZhNTA0ODFjOTg5N2M5YTFmY2RkMzIxOTBmNjdmMDZiNDUuLmY1
MGIwZWIzYmM0NzBlYjkxMjg1YTA1ZmRkMmQ0ZDM0NDZlMjUxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0KQEAgLTIzOSw3ICsyMzksNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
bgogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZm
ZXIoaW5kZXgsIHR5cGUpOwogfQogCi1XZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcmIHRpdGxlKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVS
TEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5yZWFkVVJMKGluZGV4LCB0aXRsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5oCmluZGV4IGQxYWI1NTExODRjMGE1ZjY0OTk0MGQ4ZTkyN2JkODRlNTI5YzdmZjAuLjUyNWVl
MmZjZGVlYTE2YzVjNmY5ZGZlODEzNWVkN2QxYzVlYmJkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Q
cm92aWRlci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFdlYlBsdWdpbkluZm9Qcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5JbmZvUHJvdmlkZXIgewogcHJpdmF0ZToKICAg
ICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOwotICAgIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdl
JiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBVUkwmKSBm
aW5hbDsKIAogICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcigpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbklu
Zm9Qcm92aWRlci5tbQppbmRleCBlMzRlYzczZTU0ZmJkOTU0MTY4ZmZjYTU1MmU0ZjM2YmM5NWY1
NDRiLi5iMDZkYTZmMGYwYzM1N2IwMGJhODc0OTFjYjE3YmZkMmZhOTRlMzYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJv
dmlkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLm1tCkBAIC03NCw3ICs3NCw3IEBAIFZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oV2ViQ29yZTo6UGFn
ZSYgcGFnCiAgICAgcmV0dXJuIHBsdWdpbnM7CiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6
OlBhZ2UmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYpCitWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3Jl
OjpQYWdlJiBwYWdlLCBjb25zdCBVUkwmKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1
cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKICAg
ICByZXR1cm4gcGx1Z2luSW5mbyhwYWdlLCBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1
cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDRlNGMxM2RmYjczYWI2NGFlZTk3ZDdhMzczOTUxM2Fl
NDkyNDI5ZmMuLmQ5YTA3ZWVjNTc4MzMyNjkwOTY4YjQ3OTRkMTVmMjViZDc5NTExYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5
T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Rh
dGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNp
dGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaXNpdGVkTGlua1N0b3JlLmgKaW5kZXggYWVmNGZjNTJhYWU0MTJmM2U2YzRlY2Y0MDM5NWI0
M2U4N2NjOTQ2Yy4uMjBlZTUxODc5NDU1OTcyYWI0YjAzYzQ2MmFlMzFmMzk0OWVjOTEzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRl
ZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBXZWJWaXNpdGVk
TGlua1N0b3JlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RvcmUgewogcHJp
dmF0ZToKICAgICBXZWJWaXNpdGVkTGlua1N0b3JlKCk7CiAKLSAgICBib29sIGlzTGlua1Zpc2l0
ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJy
aWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hh
cmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQ
YWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBv
cHVsYXRlVmlzaXRlZExpbmtzSWZOZWVkZWQoV2ViQ29yZTo6UGFnZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDYxMTc5ZmY4
ODFlMzU1ODJjNTc5NjliNzY1ZGUzNjhhNjZjMjRiYTMuLjFlMjI1OTFiMDI3MjcyM2VkMjI5NDNk
Y2JjMjNhMjZmZTk1ZTJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTU1LDcgKzU1LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUv
TUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlVVJMUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01IVE1MLmg+
CkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV2ViUERGVmlld0lPUy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMzdiMzNjODEwODQw
MmJlY2Y3ZTU0NTcwNTZjNGQ2MzcxYzIyMDQ2Yi4uNzhiZDNkNDliOTBlNzllOTdjMzg4ZDA4Njc4
NTdjN2JlYWMwYTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCkBAIC0yNTA4LDcgKzI1MDgsNyBAQCAtICh2b2lkKV9sb2FkRGF0YTooTlNEYXRhICop
ZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOgogICAg
IGlmIChiYXNlVVJMKQogICAgICAgICBiYXNlVVJMID0gW2Jhc2VVUkwgYWJzb2x1dGVVUkxdOwog
ICAgIGVsc2UgewotICAgICAgICBiYXNlVVJMID0gYmxhbmtVUkwoKTsKKyAgICAgICAgYmFzZVVS
TCA9IFdURjo6YmxhbmtVUkwoKTsKICAgICAgICAgcmVzcG9uc2VVUkwgPSBjcmVhdGVVbmlxdWVX
ZWJEYXRhVVJMKCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmlu
ZGV4IDc1NGNjY2MxYWYyODA2NTU4Y2VmOTZiODhjYzZlNjg3MzNjYTIyYTYuLmY1MTRiODQwNTRj
MjFhOTM3M2JkZTdmNWI5YTQwMWQ4ZGVmYjM0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW0KQEAgLTI1NiwxNyArMjU2LDE3IEBAIC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1h
dGlvbkNvbnRyb2xsZXI+KV9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcgogICAgIE5TVVJMICp1
cmwgPSBfaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBOU1N0cmluZyAqYWJz
b2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICBpZiAodXJsICYmIF9o
aXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSkgewotICAgICAgICBpZiAocHJvdG9jb2xJcyhhYnNv
bHV0ZVVSTFN0cmluZywgIm1haWx0byIpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMo
YWJzb2x1dGVVUkxTdHJpbmcsICJtYWlsdG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBXZWJJ
bW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmlt
YXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAocHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgInRlbCIpKSB7CisgICAgICAgIGlm
IChXVEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJ0ZWwiKSkgewogICAgICAgICAg
ICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25UZWxMaW5rOwogICAgICAgICAgICAgcmV0dXJu
IFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0
ZVVSTFN0cmluZykpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShh
YnNvbHV0ZVVSTFN0cmluZykpIHsKICAgICAgICAgICAgIF90eXBlID0gV2ViSW1tZWRpYXRlQWN0
aW9uTGlua1ByZXZpZXc7CiAKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0g
cmFuZ2VPZkNvbnRlbnRzKCpfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4IGEwOTljNDZkZTcy
Njk3ZGNkZjk1M2YxYTQxYjliNzQwYzIwMDUwNGMuLjkwMDM4MmNmOGI4MDBlYjFkNTE1OTE4NWRl
MmYzODMzYjBjNjZlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlBERlZpZXcubW0KQEAgLTYyLDkgKzYyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogZXh0ZXJu
ICJDIiB7CiAgICAgYm9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3RoaW5nKENHQ29udGV4
dFJlZiBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IDg1YWZmYzFiY2EwZDg3ODMzYjQ0OTYyMmVhMWRh
YTMyYWEwYzY0OWEuLjVmY2Y5ZjZhZmUwNTFiYjJmN2NjZjEzZTMyN2I0NWE1NTY3ODhiZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdn
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1
Z2dlci5tbQpAQCAtMzksOCArMzksOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01XaW5kb3cu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRy
b2xsZXIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggMGU3YzVkN2U5MmUyOGIyZWZlNjJmYTdjZTNh
ZDkxMmE0N2YwOTNkOC4uYjYyZjJjMzUyYTNiMDFiZWUyNzgzMDhlOWI3ODllYTkwNWFlZjY0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlOwog
Y2xhc3MgUmVuZGVyQm94OwogY2xhc3MgVGV4dEluZGljYXRvcjsKLWNsYXNzIFVSTDsKIHN0cnVj
dCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXgg
NmFmMzE1MTMxNjUxOGEyY2Y1NjI4ODgxYjQ4NWMyMjMzMGNjODA5Ny4uNzQ3MWExMTZjNzMyZGJl
ZjhmZmYxMTBjM2QxMWJjMzZjODllOGI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKaW5kZXggNjZkZWU4YTQwNDYwZjkyNWM0
OGY1OWVmNzdkOGY5MzA0NjA2OGQ0Ny4uODIwYjYyMTM2YmM4Y2QwZDMxM2ZjYzA3NGZlYTNjYzVh
MmFlYzRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdI
ZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJz
LmgKQEAgLTMwLDE1ICszMCwxNCBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBJbnRSZWN0OwotICAg
IGNsYXNzIFVSTDsKK2NsYXNzIEludFJlY3Q7CiB9CiAKIGNsYXNzIE1hcnNoYWxsaW5nSGVscGVy
cwogewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgQlNUUlRvS1VSTChCU1RSKTsK
LSAgICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgc3Rh
dGljIFVSTCBCU1RSVG9LVVJMKEJTVFIpOworICAgIHN0YXRpYyBCU1RSIFVSTFRvQlNUUihjb25z
dCBVUkwmKTsKICAgICBzdGF0aWMgQ0ZVUkxSZWYgUGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNv
bnN0IFdURjo6U3RyaW5nJik7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIEZpbGVDRlVSTFJlZlRv
UGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKTsKICAgICBzdGF0aWMgQ0ZVUkxSZWYgQlNUUlRv
Q0ZVUkxSZWYoQlNUUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGYyNDM2MDNjZTY3MTVkOGYxZjA4OGRlYWYyOWFlMDA3
MWQ4ZTk0NjguLjljZGNjMTQ1YjcxOTk5Y2RhNjk4NDE0ZTUyZmUyMmMzN2E4OTdiODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3Bw
CkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXgg
MDEzNzA4ZWJkNzFmOTgzNzA1NDlhNDQ2NDExYmZhNGM3ZmQ5MzBhZC4uYWNjMGUxZmJhNzQ2NDI5
NDQxYmI5YWQ2NGZkYmNlMjUwZDJkYjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFz
cyBJbnRTaXplOwotICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVu
dDsKICAgICBjbGFzcyBQbHVnaW5QYWNrYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4IGMzZTQ5ZjQ0MTk2
NTQ2MTBlZmQ0ZGM1ZjVlYmQ5YWIwOTFjMDZlMTUuLjgxNGUyYmI2ZGMzOTFmYzJmZmExYTk1YjY5
ZTQ2ZDQ1ODBjMDM2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRl
ICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XaW5k
b3dzRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCmlu
ZGV4IGY2MjhjY2QzZDVhNDU5MjZlNTM3MDM1MmQ4NmRjOWE3NTM1NThlNzEuLmMxYjlmODdhYzRl
NjIyZmJiMmUyZTIwNWQxNjQ1OWMwYzE5NGU3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGI0ZTkxZjZlMTJiM2Ji
OWIyYTM5ZDhiYThmMDJhOTQyMDQwNWJkMzAuLjdjZmM3YTlhODJlNzJjOTEyZjVkYjk5OWNmYjM3
YmY5Y2YxYTlmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCkBAIC02MCw3ICs2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBI
VE1MUGx1Z0luRWxlbWVudDsKICAgICBjbGFzcyBLZXlib2FyZEV2ZW50OwogICAgIGNsYXNzIE1v
dXNlRXZlbnQ7Ci0gICAgY2xhc3MgVVJMOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgIGNsYXNzIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW47CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oCmluZGV4IDIwM2QxNTY1ZTI1ODYxNzNjYTI1NjFhNTQ1YTM4ZTYwZTc1
YzhkODIuLmM5ZGU0OWIzY2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkxNThiZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVu
dUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7CiAKICAgICB2aXJ0
dWFsIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb3du
bG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRV
UkwoY29uc3QgVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3Qg
V2ViQ29yZTo6RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdl
YkNvcmU6OkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFdURjo6U3RyaW5n
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCmlu
ZGV4IDY0MzUwNzY3ZjkzNDAyNmQwOWMwZmE4Yjg4ZGNjZGQzODk0MmVkMDcuLmNjMDM4Y2VmZDkx
NWY0NTE2ZDU4N2JhZjEwOWE1YWQ2NDdhMjAxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0
b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAi
V2ViVmlldy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0Rl
bGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNr
dG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKaW5kZXggZjBmMWQ5MmYyZGIyNWI3NDQyODc3NTI0
NjJhZmJhNGJjMWQxYzdmMS4uODI5NmM4Y2NiNjg4N2QzNDU0OGQ1YTY0YzY4Njc3MjZhNzQ2MDc3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaApAQCAt
MzgsNyArMzgsNiBAQCBpbnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgVVJMOwogfQog
CiBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlIDogcHVibGljIFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzOWNk
MWMxNjc5YWRkZDIwNWJiMDdlODNmYTY5MjA5ODUzMjg1NzM2Li4zMmE5ZjBiYzMxNDAyOTkxYjg5
MjQ5ODAyNzk1NjNkZGUyMjg4OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTg1
LDcgKzg1LDcgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjoKICAgICB2b2lkIGRpc3BhdGNoRGlk
RGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91
YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNw
YXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFs
LCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZUxvY2F0aW9uV2l0aGluUGFnZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQdXNo
U3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VT
dGF0ZVdpdGhpblBhZ2UoKSBvdmVycmlkZTsKQEAgLTE0MCw4ICsxNDAsOCBAQCBjbGFzcyBXZWJG
cmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVi
bGljIFdlYkNvcmU6OgogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYs
IGNvbnN0IFVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYs
IGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikg
b3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CkBAIC0xNTQsMTIgKzE1NCwxMiBA
QCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAgYm9vbCBzaG91bGRGYWxsQmFjayhjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0cmluZyB1
c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgV1RGOjpTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAgICAgUmVmPFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBv
dmVycmlkZSB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0
aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3Jl
OjpDYWNoZWRGcmFtZSopIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVk
RnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgb3ZlcnJpZGU7CkBAIC0xODUs
MTUgKzE4NSwxNSBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAgYm9vbCBjYW5DYWNo
ZVBhZ2UoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3Jl
YXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCYsCisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1l
PiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29y
ZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJl
ZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2lu
SGVpZ2h0KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Jiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5
KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3Qg
VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlIHsgfQogICAg
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Jikgb3ZlcnJpZGU7CiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIG92ZXJyaWRlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcykgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpP
YmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6Ok9iamVj
dENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3Ry
aW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7CiAgICAgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5
cGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDBjNGZiMDQyNGQwMWVhMTE1ZDI3ZWNlNzJlMTkwMzg3
NmU1YzFlNTkuLmJlMjRjYjhhNTY4NTljZDQzY2UxOWYwYTE3YmJmODFkYTdjOTlmMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00NSwxMSArNDUsMTEgQEAgY2xhc3MgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJp
dmF0ZSBXZWJDb3IKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxv
YlJlZ2lzdHJ5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2ll
cykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJik7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFN0cmluZyYpOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCAxYTQ1YWI4ZGUyODIzN2Nm
ZGViNmYzOWRlMGYxNzRlZWI1ZDgyM2VmLi5kMzEwZDI5MTAwODcwMDllODliYWZlZjVmMGUwMTI3
NjE5NGRkZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6
cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWcKICAgICByZXR1cm4gb3V0UGx1Z2luczsKIH0K
IAotVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2Vi
VmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6VVJM
JikKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6Ondl
YlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYpCiB7CiAg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cj4+IHN1cHBvcnRlZFBsdWdpbk5hbWVzOwogICAgIHJldHVybiBwbHVnaW5JbmZvKHBhZ2UsIHN1
cHBvcnRlZFBsdWdpbk5hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5kZXggODAx
YmNiN2I0NjJkY2NkZGZjNzY1MmI2NGFmMDZmODYwZmZjNTVmYi4uMTBmNzY2ZTA2MDQ0ZDE1OWIw
YTFjZDkzOTQ5MjFlNzYxMmQ1NzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAg
LTM3LDcgKzM3LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiBwcml2YXRlOgogICAgIHZvaWQgcmVmcmVz
aFBsdWdpbnMoKSBmaW5hbDsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lu
SW5mbyhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9y
dGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwgY29uc3QgV2ViQ29y
ZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2li
bGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwgY29uc3QgVVJMJikgZmluYWw7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYg
YnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKSBmaW5hbDsKICAg
ICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5r
U3RvcmUuaAppbmRleCA2YTdiOTkyMmMzYTM5MTUyMmMzZGEwNDdlNGEwNjk3M2I0MDRkMTEwLi44
YmVkZTllMjU4MTkxODMyMDI3MGVhYjY1Mjc0YTdhOTA2ZGI1OGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExp
bmtTdG9yZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdlYlZpc2l0ZWRMaW5rU3RvcmUgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZSB7CiBwcml2YXRlOgogICAgIFdl
YlZpc2l0ZWRMaW5rU3RvcmUoKTsKIAotICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQ
YWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNl
VVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNo
LCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBv
dmVycmlkZTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3Jl
OjpTaGFyZWRTdHJpbmdIYXNoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcG9wdWxhdGVWaXNpdGVk
TGlua3NJZk5lZWRlZChXZWJDb3JlOjpQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFTb3VyY2UuY3BwCmluZGV4IGE2ODJjNjI3NTBlMTFmNTIxNTY3MjFmM2Q4MjgyZDU3ZTBm
ODA2ZDIuLmI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuaAppbmRleCA4NDg4NWYyNGZiODM0YTJkZmNh
ODJlZWI3OWUxOWM3MTkxMDRhNDcyLi40ZjYxMTFlMjNiMmMyZTA3ZTBhZTRhZmFkNThlYTUwZWQx
YTMyYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmgKQEAgLTM4LDcgKzM4
LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgVVJMOwogICAg
IGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNTIsMTMgKzUxLDEzIEBAIGNsYXNzIFdlYkRvd25s
b2FkCiAjZW5kaWYKIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUlu
c3RhbmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAg
c3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJbnN0YW5jZShjb25zdCBVUkwmLCBJV2ViRG93bmxv
YWREZWxlZ2F0ZSopOwogICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRlSW5zdGFuY2UoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsK
ICAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKCk7CiBwcml2YXRlOgogICAg
IFdlYkRvd25sb2FkKCk7CiAgICAgdm9pZCBpbml0KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7Ci0gICAgdm9pZCBpbml0KGNvbnN0IFdl
YkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAgdm9pZCBpbml0KGNvbnN0
IFVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CiAgICAgfldlYkRvd25sb2FkKCk7CiBwdWJs
aWM6CiAgICAgLy8gSVVua25vd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJF
bGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IGNkZjhjYWQ2YTM2OTZlZWJhY2U2MmY0ZTU3ODRj
ZWU0YmVmMWQ5ZTkuLjI3YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQwZTFhYzUwYWQ3MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNw
cApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9i
amVjdC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IGRiZWE2OThhNTc1MDIxMmE1MDY1
MGU3ODM5MTY5ZDBhNWUxYjM3NTQuLmM0ZDA4MzYyZGFkNWU4MzkzZThkZmY4MzFjMjU5ODFhMmM3
N2ZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtMzQsOSArMzQsOSBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHNhbC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBjbGFzcyBE
RUNMU1BFQ19VVUlEKCJ7QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQwRTYzNTFEfSIpIFdl
YkZyYW1lIDogcHVibGljCiAgICAgSFJFU1VMVCBtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGNv
bnN0IEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElET01FbGVtZW50KiBhZ2FpbnN0RWxlbWVu
dCwgQlNUUiogcmVzdWx0KTsKICAgICBIUkVTVUxUIGNhblByb3ZpZGVEb2N1bWVudFNvdXJjZShi
b29sKiByZXN1bHQpOwogCi0gICAgV2ViQ29yZTo6VVJMIHVybCgpIGNvbnN0OworICAgIFVSTCB1
cmwoKSBjb25zdDsKIAogICAgIFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsKICAgICB2b2lkIHNl
dFdlYlZpZXcoV2ViVmlldyopOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIERFQ0xTUEVDX1VV
SUQoIntBMzY3NjM5OC00NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgOiBw
dWJsaWMKICAgICBjbGFzcyBXZWJGcmFtZVByaXZhdGU7CiAgICAgV2ViRnJhbWVQcml2YXRlKiBk
OwogICAgIGJvb2wgbV9xdWlja1JlZGlyZWN0Q29taW5nIHsgZmFsc2UgfTsKLSAgICBXZWJDb3Jl
OjpVUkwgbV9vcmlnaW5hbFJlcXVlc3RVUkw7CisgICAgVVJMIG1fb3JpZ2luYWxSZXF1ZXN0VVJM
OwogICAgIGJvb2wgbV9pblByaW50aW5nTW9kZSB7IGZhbHNlIH07CiAKICAgICBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4gbV9wYWdlUmVjdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwCmluZGV4IDIyYjA4NDZhOTA2Yjc4Mjg2NTZiOGQ5NTdjMTBhMGRmYWZmOGIzMDEuLjAy
MzM4NGNlOTZmMTA5NDljZGQ1OWY3NzRhODE0NWViYmVhN2I3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAKICNpbmNsdWRlICJXZWJW
aXNpdGVkTGlua1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
aXN0b3J5LmgKaW5kZXggMTdhZmY5MjgyN2QxZDEwOWI1M2U5Y2RjYzZjZTQ5YzhiZTNlNzBlNS4u
NjkzNzRkZjAyMDFkODk4Zjc3ZDZiMTIxOThjNjc1ZGNlNDgxODA4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuaApAQCAtMzMsOCArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBVUkw7Ci0gICAgY2xhc3Mg
UGFnZUdyb3VwOworY2xhc3MgUGFnZUdyb3VwOwogfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC03OCw3ICs3Nyw3IEBAIGNsYXNzIFdlYkhpc3RvcnkgOiBwdWJsaWMgSVdlYkhpc3Rvcnks
IHB1YmxpYyBJV2ViSGlzdG9yeVByaXZhdGUgewogCiAgICAgLy8gV2ViSGlzdG9yeQogICAgIHN0
YXRpYyBXZWJIaXN0b3J5KiBzaGFyZWRIaXN0b3J5KCk7Ci0gICAgdm9pZCB2aXNpdGVkVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV1RGOjpT
dHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9vbCBpbmNyZWFzZVZpc2l0Q291
bnQpOworICAgIHZvaWQgdmlzaXRlZFVSTChjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYg
dGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1cmUsIGJv
b2wgaW5jcmVhc2VWaXNpdENvdW50KTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rc1RvVmlzaXRl
ZExpbmtTdG9yZShXZWJWaXNpdGVkTGlua1N0b3JlJik7CiAKICAgICBDT01QdHI8SVdlYkhpc3Rv
cnlJdGVtPiBpdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggODQzNzYyMDFkMDdl
YjNmZWY1ZWIyZDlhNzIxNzZkMzE3Zjk5MTIyZS4uYTg1NTlhNWZkMjI3Y2JkMmIxN2VhZjI4NWVh
NjM5NWVhZmY4YTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlz
dG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVt
LmNwcApAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
Y3BwCmluZGV4IGIyOTJkZGU3ZGNjZWY2MmZjYTczYjBjNGNiNGJhYjJhZGM1YmZmYjAuLjk0M2Zh
N2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIC8vIFdlYlJlc291cmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZWJSZXNvdXJjZTo6V2Vi
UmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpCitXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2Uo
SVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RGOjpT
dHJpbmcmIGZyYW1lTmFtZSkKICAgICA6IG1fZGF0YShkYXRhKQogICAgICwgbV91cmwodXJsKQog
ICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5oCmluZGV4IGI4YzdkY2NiMDM3NDlhYjc4NzNlMzdmZmEyOWYyNTJjNjUzYmViYTUuLjRkZjNl
MGMxMTUwNDY1MGE5ZjJiMDFjMjE3MWUyMWZjMjFhMGI5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuaApAQCAtMjgsMTcgKzI4LDE3IEBACiAKICNpbmNsdWRlICJXZWJLaXQu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBjbGFzcyBXZWJSZXNv
dXJjZSA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJSZXNv
dXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogcHJvdGVjdGVkOgotICAgIFdlYlJlc291
cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25z
dCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKTsKKyAgICBXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRh
LCBjb25zdCBXVEY6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVO
YW1lKTsKICAgICB+V2ViUmVzb3VyY2UoKTsKIAogcHVibGljOgpAQCAtNTgsNyArNTgsNyBAQCBj
bGFzcyBXZWJSZXNvdXJjZSA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHJpdmF0ZToKICAgICBV
TE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIENPTVB0cjxJU3RyZWFtPiBtX2RhdGE7Ci0gICAg
V2ViQ29yZTo6VVJMIG1fdXJsOworICAgIFdURjo6VVJMIG1fdXJsOwogICAgIFdURjo6U3RyaW5n
IG1fbWltZVR5cGU7CiAgICAgV1RGOjpTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgIFdU
Rjo6U3RyaW5nIG1fZnJhbWVOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2Vj
dXJpdHlPcmlnaW4uY3BwCmluZGV4IDgxYjI2OWZjNDIwYzU5Y2M2ZWY1ZDk5MmZjNzZjYzQ5YjBl
YTBmYjguLjk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3N2YwY2QwNjAwMjQ2YTEwMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rh
dGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNw
b25zZS5jcHAKaW5kZXggNDU3NmMyMjI1YzgzNTdmMzA2NzA2NzNjMTg4MDVkMzM4ZjQ4MmJiNC4u
N2RhMTU1OGJiNDU3ZDkyMWQyNGNhM2I1Y2M3NWU2ZTEwYTdlNjI0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiAjZW5k
aWYKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNo
bHdhcGkuaD4KICNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBXZWJVUkxSZXNwb25z
ZSogV2ViVVJMUmVzcG9uc2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25z
ZSogaW5zdGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAg
cmVzcG9uc2UgLSBzbyBpdCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0g
ICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVSTCh7
IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1f
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygp
LCAwLCBTdHJpbmcoKSk7CiAgICAgaW5zdGFuY2UtPkFkZFJlZigpOwogICAgIHJldHVybiBpbnN0
YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwCmluZGV4IGJkMTI2NzU4YTUxY2MzNTM4ZjlhYzk1MzdjZmIxZmM3ZGZk
YWUzODguLjQ4MTIzODQ3MTNjOGI5OWRhNWNiYTViNjNmMjU0NDQ5ZmU1MGM2NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNw
cApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogCiAjaW5jbHVkZSA8
V2ViQ29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmgKaW5kZXggM2NmZDY2NzY4ZWIzMjdhZWFkYzdhMDllNGQyN2NlYTI0OTQ4ZmQ3ZS4u
MWI3MmJiZTgyNzM0Y2U4MzM2MmE3MmM5MGVjMmI4ZjA2ZTU4ZmY0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuaApAQCAtNDYzLDcgKzQ2Myw3IEBAIGNsYXNzIFdlYlZpZXcKIAogICAgIC8v
IENvbnZlbmllbnQgdG8gYmUgYWJsZSB0byB2aW9sYXRlIHRoZSBydWxlcyBvZiBDT00gaGVyZSBm
b3IgZWFzeSBtb3ZlbWVudCB0byB0aGUgZnJhbWUuCiAgICAgV2ViRnJhbWUqIHRvcExldmVsRnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZTsgfQotICAgIGNvbnN0IFdURjo6U3RyaW5n
JiB1c2VyQWdlbnRGb3JLVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKTsKKyAgICBjb25zdCBX
VEY6OlN0cmluZyYgdXNlckFnZW50Rm9yS1VSTChjb25zdCBVUkwmIHVybCk7CiAKICAgICBzdGF0
aWMgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwogCkBAIC01MDIsNyArNTAyLDcgQEAgY2xhc3MgV2ViVmlldwogICAgIGJvb2wgb25HZXRPYmpl
Y3QoV1BBUkFNLCBMUEFSQU0sIExSRVNVTFQmKSBjb25zdDsKICAgICBzdGF0aWMgU1RETUVUSE9E
SU1QIEFjY2Vzc2libGVPYmplY3RGcm9tV2luZG93KEhXTkQsIERXT1JEIG9iamVjdElELCBSRUZJ
SUQsIHZvaWQqKiBwcE9iamVjdCk7CiAKLSAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNv
cmU6OlVSTCYpOworICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJik7CiAKICAgICB2b2lk
IGZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpOwogICAgIHZvaWQgc2V0Um9v
dENoaWxkTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNjYzdkNzc1MGQzNzk4OTk1YjgwZjli
ZTFlNGExZTMwM2JkOTcwZmEuLmU0ZGNhOTMxNzQ0NjEzNTk2MDFhMTMxMzk2MmU1MmE3YzdkYmJj
MjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNyBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Y3JlYXRlVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1Jl
bGF0aXZlVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMRGlmZmVyZW5jZXMp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNw
cDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJl
cGxhY2VtZW50LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvVVJMRXh0cmFzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6b3JpZ2luYWxEYXRhQXNT
dHJpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dXNlclZpc2libGVTdHJpbmcpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6bGl0ZXJhbFVSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRB
bHRlcm5hdGVIVE1MU3RyaW5nLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW06CisgICAg
ICAgIChsaXRlcmFsVVJMKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbToKKyAgICAgICAgKC1bTG9hZEludmFsaWRVUkxX
ZWJGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJy
b3I6Zm9yRnJhbWU6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5
R2VuZXJhdG9yLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0
aWVzV2luLmNwcDoKKwogMjAxOC0xMC0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0Ml0gRm9ybWF0ID4gQm9sZCBhbmQgRm9ybWF0ID4g
SXRhbGljIGRvbid0IHRvZ2dsZSBiZXR3ZWVuIGJvbGQgYW5kIGl0YWxpYyBzdHlsZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25z
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9u
cy5jcHAKaW5kZXggNThlNjlkMGRmNjMwNTk3YTEwZGIyZTljOTZhMmQ4ZGRjZGFhN2M2OS4uMTg4
YjhiZGUwYzVmMzQ5ZWRjOWY0MjVjZjkwODNjYzc3NjhkMDcwNyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBA
IC0zOCwxMCArMzgsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05GQS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTkZBVG9ERkEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZEluZm8uaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMRmlsdGVyUGFy
c2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBiOTI4
MzI0ZjM1OThkZGI0NjE3YTFkZWViODgyNjM2MGM2NWE0MjA1Li5hYWQxNmI4NjA0MTc5Y2E0M2E5
NzczNzk1ODU0YjU3NTc3M2FmYzlhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNs
dWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1VSTC5jcHAKaW5kZXggNzM1MzRjODE3MzNlYmE0NTJmMzJmZDlmODIxNzFiYTli
YTU0YjZiYi4uZGMzMWI0N2JkMDc4NjhhZWRjYWZmOTdmNTY1NmQ4M2Y3ODlkODMyMSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKQEAgLTI1LDExICsyNSw5IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC03Myw4ICs3MSw3IEBAIFRFU1RfRihVUkxUZXN0
LCBVUkxDb25zdHJ1Y3RvckNvbnN0Q2hhcikKIAogc3RhdGljIFVSTCBjcmVhdGVVUkwoY29uc3Qg
Y2hhciogdXJsQXNTdHJpbmcpCiB7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxBc1N0cmluZyk7
Ci0gICAgcmV0dXJuIHBhcnNlci5yZXN1bHQoKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgdXJsQXNT
dHJpbmcpOwogfTsKIAogVEVTVF9GKFVSTFRlc3QsIFVSTFByb3RvY29sSG9zdEFuZFBvcnQpCkBA
IC0zMTcsMjAgKzMxNCwyMCBAQCBURVNUX0YoVVJMVGVzdCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5k
RnJhZ21lbnQpCiAKIFRFU1RfRihVUkxUZXN0LCBQcm90b2NvbElzSW5IVFRQRmFtaWx5KQogewot
ICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KHt9KSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoIiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJv
dG9jb2xJc0luSFRUUEZhbWlseSgiYSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgiYWIiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoImFiYyIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJj
ZCIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZGUiKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlZiIpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZGVmZyIpKTsKLSAgICBF
WFBFQ1RfVFJVRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwOiIpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cCIpKTsKLSAgICBFWFBFQ1RfVFJVRShw
cm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwczoiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoImh0dHBzIikpOwotICAgIEVYUEVDVF9UUlVFKHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoImh0dHBzOi8vIUAjJCVeJiooKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RG
Ojpwcm90b2NvbElzSW5IVFRQRmFtaWx5KHsgfSkpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoIiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCJhIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoImFiIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoImFiYyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCJhYmNkIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoImFiY2RlIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoImFiY2RlZiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCJhYmNkZWZnIikpOworICAgIEVYUEVDVF9UUlVFKFdURjo6cHJvdG9jb2xJc0luSFRU
UEZhbWlseSgiaHR0cDoiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRU
UEZhbWlseSgiaHR0cCIpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoImh0dHBzOiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCJodHRwcyIpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoImh0dHBzOi8vIUAjJCVeJiooKSIpKTsKIH0KIAogVEVTVF9GKFVSTFRlc3QsIEhvc3RJ
c0lQQWRkcmVzcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9VUkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBh
cnNlci5jcHAKaW5kZXggM2UxMDU5MmEwM2QwYWIwMWUyYzE2NmE0NTNlYWFlZWMxZmEwMzljMS4u
MWM0ZGNkZDA1ZTIxZDdiNWZkN2FiN2RmZTg1ZDhmMDVjMWFjOGE3YSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKQEAgLTI2LDggKzI2LDgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
UGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
UGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VS
TChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRl
c3RUYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmco
KSkpOwogCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3Rl
bnQodXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVz
Q29uc2lzdGVudCh1cmwpKTsKIAogICAgIGlmICh0ZXN0VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAg
ICAgICAgIHJldHVybjsKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0
aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJp
bgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlm
aWVyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkp
OwogICAgIAotICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0
ZW50KHVybCkpOworICAgIEVYUEVDVF9UUlVFKFdURjo6VVJMUGFyc2VyOjppbnRlcm5hbFZhbHVl
c0NvbnNpc3RlbnQodXJsKSk7CiAgICAgCiAgICAgaWYgKHRlc3RUYWJzID09IFRlc3RUYWJzOjpO
bykKICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNr
VVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFy
dHMmIHBhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVu
dElkZW50aWZpZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnN0cmluZywgdXJs
LnN0cmluZygpKSk7CiAgICAgCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZh
bHVlc0NvbnNpc3RlbnQodXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6Omlu
dGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKICAgICAKICAgICBpZiAodGVzdFRhYnMgPT0g
VGVzdFRhYnM6Ok5vKQogICAgICAgICByZXR1cm47CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGlj
IHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGIKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwg
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcu
c3RyaW5nLCB1cmwuc3RyaW5nKCkpKTsKICAgICAKLSAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6
OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OlVS
TFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwogICAgIAogICAgIGlmICh0
ZXN0VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAgICAgIHJldHVybjsKQEAgLTIxMyw4ICsyMTMs
NyBAQCBzdGF0aWMgdm9pZCBzaG91bGRGYWlsKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGJhc2VTdHJpbmcpCiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zdCBFeHBlY3Rl
ZFBhcnRzJiBwYXJ0cywgVGVzdFRhYnMgdGVzdFRhYnMgPSBUZXN0VGFiczo6WWVzKQogewotICAg
IFVSTFBhcnNlciBwYXJzZXIodXJsU3RyaW5nLCB7IH0sIGVuY29kaW5nKTsKLSAgICBhdXRvIHVy
bCA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBhdXRvIHVybCA9IFVSTCh7IH0sIHVybFN0cmluZywg
ZW5jb2RpbmcpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9j
b2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwpAQCAtMjM4LDkg
KzIzNyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zCiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJM
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNv
bnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBU
ZXN0VGFicyB0ZXN0VGFicyA9IFRlc3RUYWJzOjpZZXMpCiB7Ci0gICAgVVJMUGFyc2VyIGJhc2VQ
YXJzZXIoYmFzZVVSTFN0cmluZywgeyB9LCBlbmNvZGluZyk7Ci0gICAgVVJMUGFyc2VyIHBhcnNl
cih1cmxTdHJpbmcsIGJhc2VQYXJzZXIucmVzdWx0KCksIGVuY29kaW5nKTsKLSAgICBhdXRvIHVy
bCA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBhdXRvIHVybCA9IFVSTChVUkwoeyB9LCBiYXNlVVJM
U3RyaW5nKSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
cHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNl
ciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwu
cGFzcygpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VXNlckFnZW50UXVpcmtzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9V
c2VyQWdlbnRRdWlya3MuY3BwCmluZGV4IDRjODAzMmI5MzZjZmUzYTU5MWYyMDJlZjBlMGVhMWRm
MGVmN2Q3YjcuLjBjNWU2Mzc3OWJhN2UwMWZhNjg5YjcwOWQzYWY3ZmU1MThmNzAwNDMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3Mu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWly
a3MuY3BwCkBAIC0yNSw4ICsyNSw4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQuY3BwCmluZGV4IDc2YjEwMzU3NWNhNDI1Y2UzZmU1OGRhMzEzNmIwZWVjMGQ2
ZDNmMWUuLjMwMGIxM2NiY2ExMGMyMWIzMDdlZWUzMTE0ZGUwMGZiZjBmZTAyZDEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC0yNCw5ICsyNCw5IEBACiAgKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Z
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1t
CmluZGV4IDZmZmQ3ZGFjYjNmYzAyMTJhNDA0ZDg1NmIzMThjOTM2OWY4OWZlOTYuLmI2NDBiMTBi
ZmYyZjAxOWI3MjcyNDNhN2M2MDA4NTFhZGFmZDc1ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1VSTEV4dHJhcy5tbQpAQCAtMjUsOCArMjUs
OCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNV
UkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9O
U1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKQEAgLTUwLDE3ICs1MCwxNyBAQCBzdGF0aWMgY29uc3QgY2hhciog
ZGF0YUFzU3RyaW5nKE5TRGF0YSAqZGF0YSkKIAogc3RhdGljIGNvbnN0IGNoYXIqIG9yaWdpbmFs
RGF0YUFzU3RyaW5nKE5TVVJMICpVUkwpCiB7Ci0gICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXZWJD
b3JlOjpvcmlnaW5hbFVSTERhdGEoVVJMKSk7CisgICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXVEY6
Om9yaWdpbmFsVVJMRGF0YShVUkwpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJWaXNp
YmxlU3RyaW5nKE5TVVJMICpVUkwpCiB7Ci0gICAgcmV0dXJuIFtXZWJDb3JlOjp1c2VyVmlzaWJs
ZVN0cmluZyhVUkwpIFVURjhTdHJpbmddOworICAgIHJldHVybiBbV1RGOjp1c2VyVmlzaWJsZVN0
cmluZyhVUkwpIFVURjhTdHJpbmddOwogfQogCiBzdGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29u
c3QgY2hhciogbGl0ZXJhbCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEobGl0
ZXJhbEFzRGF0YShsaXRlcmFsKSwgbmlsKTsKKyAgICByZXR1cm4gV1RGOjpVUkxXaXRoRGF0YShs
aXRlcmFsQXNEYXRhKGxpdGVyYWwpLCBuaWwpOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJh
cykKQEAgLTEyNyw4ICsxMjcsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19EaXZpc2lvblNp
Z24pCiAgICAgLy8gU2VsZWN0ZWQgdGhlIGRpdmlzaW9uIHNpZ24gYXMgYW4gZXhhbXBsZSBvZiBh
IG5vbi1BU0NJSSBjaGFyYWN0ZXIgdGhhdCBpcyBhbGxvd2VkIGluIGhvc3QgbmFtZXMsIHNpbmNl
IGl0J3MgYSBsb29rYWxpa2UgY2hhcmFjdGVyLgogCiAgICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIg
dG8gdGhlIG9uZSB1c2VkIHdoZW4gdHlwaW5nIGluIGEgVVJMLgotICAgIEVYUEVDVF9TVFJFUSgi
aHR0cDovL3NpdGUueG4tLWNvbW90aGVyc2l0ZS1ramIub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJp
bmcoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4QzNc
eEI3b3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRl
LmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdlYkNvcmU6OlVS
TFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5v
cmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS54bi0tY29tb3RoZXJz
aXRlLWtqYi5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRT
dHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1
c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0
ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhz
IHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBI
VFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3
b3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9z
aXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpKSk7CkBAIC0xMzcsMTcgKzEzNywxNyBAQCBU
RVNUKFdlYkNvcmUsIFVSTEV4dHJhc19EaXZpc2lvblNpZ24pCiAgICAgRVhQRUNUX1NUUkVRKCJo
dHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhs
aXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb20lQzMlQjdvdGhlcnNpdGUub3JnIikpKTsKIAogICAg
IC8vIFNlcGFyYXRlIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1lIG9u
IGl0cyBvd24uCi0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLnhuLS1jb21vdGhlcnNpdGUta2piLm9y
ZyIsIFtXZWJDb3JlOjplbmNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUu
b3JnIikgVVRGOFN0cmluZ10pOwotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb21ceEMzXHhCN290
aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3
b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUueG4t
LWNvbW90aGVyc2l0ZS1ramIub3JnIiwgW1dURjo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4
QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNp
dGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgW1dURjo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRl
LmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAotVEVTVChXZWJD
b3JlLCBVUkxFeHRyYXNfU29saWR1cykKK1RFU1QoV1RGLCBVUkxFeHRyYXNfU29saWR1cykKIHsK
ICAgICAvLyBTZWxlY3RlZCBmdWxsIHdpZHRoIHNvbGlkdXMsIHdoaWNoIGxvb2tzIGxpa2UgdGhl
IHNvbGlkdXMsIHdoaWNoIGlzIHRoZSBjaGFyYWN0ZXIgdGhhdCBpbmRpY2F0ZXMgdGhlIGVuZCBv
ZiB0aGUgaG9zdCBuYW1lLgogCiAgICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1
c2VkIHdoZW4gdHlwaW5nIGluIGEgVVJMLgotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUu
Y29tL290aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXZWJDb3JlOjpVUkxXaXRo
VXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9y
ZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbS9vdGhlcnNpdGUu
b3JnIiwgdXNlclZpc2libGVTdHJpbmcoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhA
Imh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAg
RVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0
YUFzU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4
RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRw
Oi8vc2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMV2l0
aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5v
cmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNl
ZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBF
Q1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBvcmln
aW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZv
dGhlcnNpdGUub3JnIikpKTsKQEAgLTE1Niw4ICsxNTYsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4
dHJhc19Tb2xpZHVzKQogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJUVGJUJDJThG
b3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRl
LmNvbSVFRiVCQyU4Rm90aGVyc2l0ZS5vcmciKSkpOwogCiAgICAgLy8gU2VwYXJhdGUgZnVuY3Rp
b25zIHRoYXQgZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5hbWUgb24gaXRzIG93bi4KLSAgICBFWFBF
Q1RfU1RSRVEoInNpdGUuY29tL290aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5h
bWUoQCJzaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7Ci0g
ICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29k
ZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmlu
Z10pOworICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmVu
Y29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0
cmluZ10pOworICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6
OmRlY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRG
OFN0cmluZ10pOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKQEAgLTE2NSw4
ICsxNjUsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKICAgICAvLyBTZWxlY3Rl
ZCBpZGVvZ3JhcGhpYyBzcGFjZSwgd2hpY2ggbG9va3MgbGlrZSB0aGUgQVNDSUkgc3BhY2UsIHdo
aWNoIGlzIG5vdCBhbGxvd2VkIHVuZXNjYXBlZC4KIAogICAgIC8vIENvZGUgcGF0aCBzaW1pbGFy
IHRvIHRoZSBvbmUgdXNlZCB3aGVuIHR5cGluZyBpbiBhIFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhX
ZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBc
eDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRl
LmNvbSUyMG90aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXZWJDb3JlOjpVUkxXaXRo
VXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9y
ZyIsIG5pbCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0
ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmco
QCJodHRwOi8vc2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAg
IEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJTIwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNp
YmxlU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4
RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNp
bWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQ
IHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4
MG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8v
c2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIikpKTsKQEAgLTE3NSwzMSArMTc1LDMx
IEBAIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX1NwYWNlKQogICAgIEVYUEVDVF9TVFJFUSgiaHR0
cDovL3NpdGUuY29tJUUzJTgwJTgwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxp
dGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVFMyU4MCU4MG90aGVyc2l0ZS5vcmciKSkpOwogCiAg
ICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5hbWUg
b24gaXRzIG93bi4KLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tIG90aGVyc2l0ZS5vcmciLCBb
V2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5v
cmciKSBVVEY4U3RyaW5nXSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbVx4RTNceDgwXHg4
MG90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNc
eDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJz
aXRlLmNvbSBvdGhlcnNpdGUub3JnIiwgW1dURjo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4
RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVR
KCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBbV1RGOjpkZWNvZGVIb3N0TmFt
ZShAInNpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKIH0K
IAogVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfRmlsZSkKIHsKLSAgICBFWFBFQ1RfU1RSRVEoImZp
bGU6Ly8vJUUyJTk4JTgzIiwgW1tXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmls
ZTovLy/imIMiLCBuaWwpIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNU
X1NUUkVRKCJmaWxlOi8vLyVFMiU5OCU4MyIsIFtbV1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5n
KEAiZmlsZTovLy/imIMiLCBuaWwpIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSk7CiB9CiAK
IFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX1BhcnNpbmdFcnJvcikKIHsKICAgICAvLyBFeHBlY3Qg
SUROIGZhaWx1cmUuCi0gICAgTlNVUkwgKnVybCA9IFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRT
dHJpbmcoQCJodHRwOi8v76O/LmNvbSIsIG5pbCk7CisgICAgTlNVUkwgKnVybCA9IFdURjo6VVJM
V2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly/vo78uY29tIiwgbmlsKTsKICAgICBFWFBFQ1Rf
VFJVRSh1cmwgPT0gbmlsKTsKIAotICAgIE5TU3RyaW5nICplbmNvZGVkSG9zdE5hbWUgPSBXZWJD
b3JlOjplbmNvZGVIb3N0TmFtZShAImh0dHA6Ly/vo78uY29tIik7CisgICAgTlNTdHJpbmcgKmVu
Y29kZWRIb3N0TmFtZSA9IFdURjo6ZW5jb2RlSG9zdE5hbWUoQCJodHRwOi8v76O/LmNvbSIpOwog
ICAgIEVYUEVDVF9UUlVFKGVuY29kZWRIb3N0TmFtZSA9PSBuaWwpOwogfQogCiBURVNUKFdlYkNv
cmUsIFVSTEV4dHJhc19OaWwpCiB7Ci0gICAgTlNVUkwgKnVybDEgPSBXZWJDb3JlOjpVUkxXaXRo
VXNlclR5cGVkU3RyaW5nKG5pbCwgbmlsKTsKKyAgICBOU1VSTCAqdXJsMSA9IFdURjo6VVJMV2l0
aFVzZXJUeXBlZFN0cmluZyhuaWwsIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUodXJsMSA9PSBuaWwp
OwogCi0gICAgTlNVUkwgKnVybDIgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVw
cmVjYXRlZChuaWwsIG5pbCk7CisgICAgTlNVUkwgKnVybDIgPSBXVEY6OlVSTFdpdGhVc2VyVHlw
ZWRTdHJpbmdEZXByZWNhdGVkKG5pbCwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwyID09IG5p
bCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tCmluZGV4IDUwNWFmMzU3ZTVk
MTAxZDE3NmI1MjNkMTU1YTYyOTRiYmU4ZjdmZGYuLjkwZDQ2MTBjNzQxMDk5ZmFlNGE2MGJlOTc3
NjVjYzNkN2IwZWNkNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbQpAQCAtMzAs
OSArMzAsOSBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVz
dC5oIgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogc3RhdGljIGJvb2wgaXNEb25lOwogc3Rh
dGljIGludCBwcm92aXNpb25hbExvYWRDb3VudDsKQEAgLTExMCw3ICsxMTAsNyBAQCBURVNUKFdL
V2ViVmlldywgTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdGcm9tUHJvdmlzaW9uYWxMb2FkRXJyb3JC
YWNrVG9CYWNrKQogICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOwogCiAgICAgICAgIGNoYXIgbGl0ZXJhbFtdID0gImh0dHBzOi8vd3d3LmV4YW1w
bGUuY29tPD4vIjsKLSAgICAgICAgTlNVUkwqIHRhcmdldFVSTCA9IFdlYkNvcmU6OlVSTFdpdGhE
YXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCld
LCBuaWwpOworICAgICAgICBOU1VSTCogdGFyZ2V0VVJMID0gV1RGOjpVUkxXaXRoRGF0YShbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6bGl0ZXJhbCBsZW5ndGg6c3RybGVuKGxpdGVyYWwpXSwgbmlsKTsK
ICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDp0YXJnZXRVUkxdXTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDp0YXJnZXRVUkxdXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5t
bQppbmRleCBhYzk4YzE5NjQ0MGFiN2I1NTA4NGM5NWQ3OGQwOWZlN2ZjNzk3ZTNjLi5lYWE1NWNh
YzY3ZjhlODQ0MTQzMjdkNGRhZTMyNjA5NjQ1ZDk1YmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVx
dWVzdC5tbQpAQCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0
cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIHN0YXRpYyBib29sIGRpZEZpbmlzaFRlc3Q7CiBz
dGF0aWMgYm9vbCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkOwpAQCAtMzksNyArMzksNyBAQCBzdGF0
aWMgY29uc3QgY2hhciBsaXRlcmFsW10gPSAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb208Pi8iOwog
CiBzdGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29uc3QgY2hhciogbGl0ZXJhbCkKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwg
bGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CisgICAgcmV0dXJuIFdURjo6VVJMV2l0aERh
dGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0s
IG5pbCk7CiB9CiAKIEBpbnRlcmZhY2UgTG9hZEludmFsaWRVUkxOYXZpZ2F0aW9uQWN0aW9uRGVs
ZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNw
cAppbmRleCBiMDUxNDUyNGY3MjU5MWY2Y2I1MDI5MTEwMzFiN2JmYThhM2FmYTA3Li4xYmFhZTk1
YWMwNjIzMWZiZmIyOWE4YmExNDE4Nzc3MmI1YWYzYWQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAK
QEAgLTIyLDggKzIyLDggQEAKIAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNs
dWRlICJXZWJWaWV3VGVzdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4K
ICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJT
b3VwLmg+CiAKIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwogCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0K
aW5kZXggOGQ1NGNhNmUxOWUwZDY5OTYyYTVmMTUzMjM1NDJhZWYyMDM1NzVkMS4uODZiN2IzYzRh
OTk4NjMwZDI4NWU1MTc5NWZjOGFkNjk4MWNmYzkyNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQpAQCAtMjYsMTAg
KzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLTmF2aWdhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4
dHJhcy5oPgogCiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hUZXN0Owogc3RhdGljIGJvb2wgZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZDsKQEAgLTUxLDcgKzUxLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6KE5TRXJyb3IgKill
cnIKICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMKTsK
IAogICAgIHN0YXRpYyBjaGFyIGxpdGVyYWxbXSA9ICJodHRwczovL3d3dy5leGFtcGxlLmNvbSQv
IjsKLSAgICBOU1VSTCAqZmFpbGVkVVJMID0gV2ViQ29yZTo6VVJMV2l0aERhdGEoW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CisgICAg
TlNVUkwgKmZhaWxlZFVSTCA9IFdURjo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVz
OmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUo
W2Vycm9yLnVzZXJJbmZvW0AiTlNFcnJvckZhaWxpbmdVUkxLZXkiXSBpc0VxdWFsOmZhaWxlZFVS
TF0pOwogCiAgICAgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCA9IHRydWU7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW0KaW5kZXggZGRlOGM3ZDAx
ZGE2NzgwNDE5NWM3ZjQxZTI5MTFhNzg5YzcwMmM1Mi4uYWMxYmY3ZGI2Yzk4YjAyZDI1NTI2NTk3
MmJjMjk5ZGEwYzk4N2VkZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvU1NMS2V5R2VuZXJhdG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L1NTTEtleUdlbmVyYXRvci5tbQpAQCAtMjksOSArMjksOSBAQAogI2ltcG9ydCA8U2VjdXJpdHkv
U2VjQXNuMVRlbXBsYXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdlbmVyYXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEku
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC02OSw3ICs2OSw3IEBAIGNvbnN0
IFNlY0FzbjFUZW1wbGF0ZSBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VUZW1wbGF0ZVtdIHsK
ICAgICB7IDAsIDAsIDAsIDAgfQogfTsKIAotY29uc3QgV2ViQ29yZTo6VVJMIHVybCA9IFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iKTsKK2NvbnN0
IFVSTCB1cmwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIik7CiAKIGNsYXNz
IFNTTEtleUdlbmVyYXRvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5k
ZXggOGY3NTVjMzJjOGMyZTJlMGQzNzlkM2U1ZjA3Y2M2YjliZGNjMTg2NS4uOTE3Y2JlYmNlZTU2
YzdjMTc2NDgyMGZjYmQxZDBiOGYzNDkwNjU0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5j
bHVkZSA8U2hsd2FwaS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351506</attachid>
            <date>2018-10-03 04:03:15 -0700</date>
            <delta_ts>2018-10-03 05:21:23 -0700</delta_ts>
            <desc>Add Linux support</desc>
            <filename>bug-190234-20181003200313.patch</filename>
            <type>text/plain</type>
            <size>1275381</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE2Y2I1MjQ5NmNlZGVkZGJhYjM0NDA0
Mjc5MzdlMWM4NmQ3YTg4ZjQuLjZhNmQyOTA5NjY3OTgwNGQzZDljNDY2MGFmZTNhMTVlMDZiYWFm
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTgtMTAtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUg
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAg
ICAgICAgKiB3dGYvVVJMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgICogd3Rm
L1VSTC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmguCisgICAg
ICAgICogd3RmL1VSTEhhc2guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTEhhc2guaC4KKyAgICAgICAgKFdURjo6VVJMSGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6
OlVSTEhhc2g6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvVVJMUGFyc2VyLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAuCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KToKKyAgICAgICAgKFdURjo6VVJMUGFy
c2VyOjpwYXJzZUF1dGhvcml0eSk6CisgICAgICAgICogd3RmL1VSTFBhcnNlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmguCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpyZXN1bHQp
OgorICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4dHJhcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAuCisgICAgICAgICogd3RmL2NmL0NG
VVJMRXh0cmFzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVS
TEV4dHJhcy5oLgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAuCisgICAgICAgICogd3RmL2NvY29hL05T
VVJMRXh0cmFzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRy
YXMubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0uCisgICAgICAgIChXVEY6OmlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIp
OgorICAgICAgICAoV1RGOjppc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdU
Rjo6aXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjppc0xv
b2thbGlrZUNoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OndoaXRlTGlzdElETlNjcmlwdCk6Cisg
ICAgICAgIChXVEY6OnJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKToKKyAgICAgICAgKFdURjo6
YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KToKKyAgICAgICAgKFdURjo6aXNTZWNv
bmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyk6CisgICAgICAgIChXVEY6OmlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjphbGxDaGFyYWN0ZXJzQWxs
b3dlZEJ5VExEUnVsZXMpOgorICAgICAgICAoV1RGOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6Cisg
ICAgICAgIChXVEY6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChX
VEY6Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChXVEY6OmRlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKToKKyAgICAgICAgKFdURjo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFu
Z2UpOgorICAgICAgICAoV1RGOjpkZWNvZGVIb3N0TmFtZSk6CisgICAgICAgIChXVEY6OmVuY29k
ZUhvc3ROYW1lKToKKyAgICAgICAgKFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyk6
CisgICAgICAgIChXVEY6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKToKKyAgICAgICAg
KFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcpOgorICAgICAgICAoV1RGOjphcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6CisgICAgICAgIChXVEY6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKToKKyAgICAgICAgKFdURjo6bWFwSG9zdE5hbWVz
KToKKyAgICAgICAgKFdURjo6c3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOgorICAgICAgICAo
V1RGOjpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOgorICAgICAg
ICAoV1RGOjpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIpOgorICAgICAgICAoV1RGOjpV
UkxXaXRoRGF0YSk6CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKToKKyAg
ICAgICAgKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyk6CisgICAgICAgIChXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKToKKyAgICAgICAgKFdURjo6aGFzUXVlc3Rpb25N
YXJrT25seVF1ZXJ5U3RyaW5nKToKKyAgICAgICAgKFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5
cGUpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENo
YXJhY3Rlcik6CisgICAgICAgIChXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6CisgICAgICAg
IChXVEY6Om9yaWdpbmFsVVJMRGF0YSk6CisgICAgICAgIChXVEY6OmNyZWF0ZVN0cmluZ1dpdGhF
c2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KToKKyAgICAgICAgKFdURjo6aXNVc2VyVmlzaWJsZVVSTCk6CisgICAgICAgIChXVEY6OnJhbmdl
T2ZVUkxTY2hlbWUpOgorICAgICAgICAoV1RGOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6CisgICAg
ICAgICogd3RmL2NvY29hL1VSTENvY29hLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VSTE1hYy5tbS4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOgorICAgICAg
ICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2xpYi9HVW5p
cXVlUHRyU291cC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0dVbmlxdWVQdHJTb3VwLmguCisgICAgICAgICogd3RmL2dsaWIvVVJMU291cC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwLgor
CiAyMDE4LTEwLTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBb
bWFjT1NdIFN3aXRjaGluZyB0byBkaXNjcmV0ZSBHUFUgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIFVJ
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOWQzMGE0OGM5Y2M2NzczN2Y2Y2ZlY2VkYjRmYWFmMGEx
YTE4MjEwLi43YWZlNjY1YjFjMzExNDdhYjE0MDNkNDYzMWNiZjI1MDVhZDgzZWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTQxIEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRv
IFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkw
MjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBV
UkwgaXMgYSBsb3ctbGV2ZWwgY29uY2VwdCB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbiBvdGhlciBj
bGFzc2VzIGluIFdlYkNvcmUuCisgICAgICAgIFdlIGFyZSBzdGFydGluZyB0byB1c2UgVVJMcyBp
biBKYXZhU2NyaXB0Q29yZSBmb3IgbW9kdWxlcy4KKyAgICAgICAgSSBuZWVkIFVSTCBhbmQgVVJM
UGFyc2VyIGluIGEgcGxhY2Ugd2l0aCBmZXdlciBkZXBlbmRlbmNpZXMgZm9yIHJkYXI6Ly9wcm9i
bGVtLzQ0MTE5Njk2CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50
RXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5j
cHA6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVs
ZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5oOgor
ICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAgICAgICAg
KiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50Lmg6CisgICAg
ICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTTWFwTGlrZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVh
ZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGlucy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0Nv
bnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNp
b25SdWxlc0ZvclBpbmdMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjphcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVS
ZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3NzL1N0
eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+Ojpjb25zdHJ1
Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg6
CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb21wbGV0ZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5z
dXJlVGVtcGxhdGVEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dXJsRm9yQmluZGluZ3MgY29uc3QpOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzSmF2YVNjcmlwdFVS
TEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJDb250ZXh0Rm9yRWxlbWVudCk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YmFzZVVSSSBjb25zdCk6
CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5oOgor
ICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZG9tL1Nl
Y3VyaXR5Q29udGV4dC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTCk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRRdW90ZWRVUkxBdHRyaWJ1
dGVWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgICogZWRp
dGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU3VicmVzb3VyY2VVUkxB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCk6
CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHA6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaDoKKyAgICAg
ICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JVUkwuY3BwOgorICAg
ICAgICAqIGZpbGVhcGkvQmxvYlVSTC5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAg
ICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuaDoK
KyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgICogaHRtbC9ET01VUkwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
RE9NVVJMLmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVuVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbik6CisgICAgICAg
ICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RG
OjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50
PFdlYkNvcmU6OlVSTD46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0
bWFwLmg6CisgICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmg6CisgICAgICAg
ICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1h
bmFnZXIuaDoKKyAgICAgICAgKiBodG1sL1VSTElucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRt
bC9VUkxSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6VVJMU2VhcmNoUGFyYW1zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9tQXNzb2NpYXRlZFVSTCk6CisgICAgICAgICogaHRt
bC9VUkxVdGlscy5oOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldEhvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldFBvcnQpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNlbWljb2xvblNlcGFyYXRlZFZhbHVlQ29udGFpbnNKYXZhU2NyaXB0
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpY
U1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZmlsdGVySW5wdXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0
ZXJCdXR0b25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmlzTGlrZWx5U2FmZVJlc291cmNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9y
Lmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24u
aDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnJlY2VpdmVkRmlyc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250
aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0pOgorICAgICAgICAq
IGxvYWRlci9MaW5rTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0xvYWRUaW1pbmcuaDoKKyAg
ICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvTWl4ZWRD
b250ZW50Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVja2Vy
OjpjaGVja0Zvcm1Gb3JNaXhlZENvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2hvdWxkU2NoZWR1
bGVOYXZpZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5oOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZEluZm8uaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
VGltaW5nLmg6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAqIGxvYWRl
ci9TdWJmcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L01hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQ
YXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9u
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW06CisgICAgICAgICogcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvQ29u
dGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFi
bGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNzKToKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0V2ZW50U291cmNlLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9IaXN0b3J5Lmg6CisgICAgICAg
ICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6dXJsIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAqIHBh
Z2UvTG9jYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5oOgorICAgICAgICAq
IHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHA6CisgICAgICAgICogcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5oOgor
ICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9Tb2NrZXRQcm92aWRl
ci5oOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oOgorICAgICAgICAqIHBh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5oOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5oOgorICAgICAgICAqIHBh
Z2UvVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBwYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaDoK
KyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Lmg6CisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMgY29uc3QpOgorICAgICAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9E
cmFnRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MaW5rSWNvbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6Y2FuRXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmg6CisgICAgICAgICogcGxh
dGZvcm0vU291cmNlc1NvdXAudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vVXNlckFnZW50UXVpcmtzLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2Vk
U2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKHdlYktpdE1lZGlhU3JjU2V0VXJpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnSW1h
Z2VHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzUGxhaW5U
ZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUHVibGljU3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5h
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjppc0FybWVu
aWFuTG9va2FsaWtlQ2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQXJt
ZW5pYW5TY3JpcHRDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBU0NJ
SURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
aXNMb29rYWxpa2VDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d2hpdGVM
aXN0SUROU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJRE5TY3JpcHRX
aGl0ZUxpc3RGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFsbENoYXJhY3RlcnNJ
bklETlNjcmlwdFdoaXRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1NlY29u
ZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6YWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Om1hcEhvc3ROYW1lV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW5j
b2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFJhbmdlc1Ro
YXROZWVkTWFwcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFuZ2Vz
VGhhdE5lZWRFbmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFu
Z2VzVGhhdE5lZWREZWNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseUhv
c3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjphcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjptYXBIb3N0TmFtZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c3Ry
aW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJM
QnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpVUkxXaXRoRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3Rlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpVUkxCeVJlbW92aW5nVXNlckluZm8pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6b3JpZ2luYWxVUkxEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc1VzZXJWaXNpYmxlVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJh
bmdlT2ZVUkxTY2hlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9va3NMaWtlQWJz
b2x1dGVVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JQYXJ0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVz
dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94
eVNlcnZlckN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Byb3h5U2VydmVyU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRF
bmNvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vQlN0cmluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya3VwVG9DRkhUTUwpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQXR0YWNobWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjpzb3VyY2VVUkkgY29uc3QpOgorICAgICAg
ICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29u
c2lzdGVudFN0YXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVudENv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5j
cHA6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5Lmg6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudERhdGEuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0
YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNw
cDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5oOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXk+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5oOgorCiAyMDE4LTEwLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgTWVzc2FnZUV2ZW50LnBvcnRzIHNob3VsZCByZXR1cm4gdGhlIHNhbWUg
b2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDMwNTk2NDRhMDViYTNmZjRhNGJiNjc4YTE5ZjJkMDQxNjc2MTI0
NWQuLjM5OTRiZjYxZTRkZmQ2NjFlM2FmY2QzYzBiZDQ5MzEwMTVjOTZmYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzgyIEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRvIFdURgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxv
YlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lz
dHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVn
aXN0cnk6OmJsb2JTaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6
ZmlsZXNJbkJsb2IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Js
b2JSZWdpc3RyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OnNldENvbnRlbnRFeHRlbnNp
b25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjp1cmwg
Y29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndyaXRlQmxvYlRvRmlsZVBhdGgpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bG9nQmxvY2tlZENv
b2tpZUluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bG9nQ29va2llSW5mb3JtYXRpb25J
bnRlcm5hbCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmV0
cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hl
ZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdGF0aXN0aWNzOjpyZWNv
cmRSZXZhbGlkYXRpb25TdWNjZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlN1YnJlc291cmNlSW5mbzo6Zmlyc3RQYXJ0eUZvckNvb2tpZXMgY29uc3QpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXF1ZXN0OjpvcGVyYXRvciBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVy
ZTo6UmVzcG9uc2U6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6RXJyb3I6Om9wZXJhdG9yIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1
cmU6Ok1hbmFnZXI6OmZpbmRCZXN0RnV6enlNYXRjaCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYXB0dXJlOjpNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjp1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6UmVzb3VyY2U6OnVybCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXNvdXJjZTo6cXVlcnlQYXJhbWV0ZXJzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2Uu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vz
c2lvbjp0YXNrOmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6b3BlbkNGVVJMUmVmKToKKyAgICAgICAgKFdlYktpdDo6cmVwbGFjZWROU1dvcmtzcGFj
ZV9sYXVuY2hBcHBsaWNhdGlvbkF0VVJMX29wdGlvbnNfY29uZmlndXJhdGlvbl9lcnJvcik6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwuaDoKKyAgICAgICAgKEFQSTo6VVJMOjpjcmVhdGUp
OgorICAgICAgICAoQVBJOjpVUkw6OmVxdWFscyk6CisgICAgICAgIChBUEk6OlVSTDo6VVJMKToK
KyAgICAgICAgKEFQSTo6VVJMOjp1cmwgY29uc3QpOgorICAgICAgICAoQVBJOjpVUkw6OnBhcnNl
VVJMSWZOZWNlc3NhcnkgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmg6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0
Y2hlc1VSTCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHA6
CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAoV0tVUkxDcmVhdGVXaXRoQ0ZVUkwp
OgorICAgICAgICAoV0tVUkxDb3B5Q0ZVUkwpOgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJ
UmVzcG9uc2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06
CisgICAgICAgIChBUEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKToK
KyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNVUkwgX3dlYl9vcmln
aW5hbERhdGFBc1dURlN0cmluZ10pOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBT
aGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVt
SXNJblNhbWVEb2N1bWVudCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJFcnJvcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVz
dFJlc3VsdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNw
cDoKKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHA6CisgICAgICAgICogU2hhcmVkL2lvcy9J
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6YXBwZW5kUmVkaXJlY3Rpb25V
UkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uOjp0YWtlUmVkaXJlY3RDaGFpbik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyk6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25D
bGllbnQ6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnNhdmVE
YXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
VXNlclNjcmlwdC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVl
VVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKEFQSTo6VXNl
clN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuY3BwOgorICAgICAgICAoZmlsZVBhdGhzRnJvbUZpbGVVUkxzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxv
YWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQYWdlR3Jv
dXBBZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVzZXJTY3JpcHQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlRm9yRGVidWdNb2RlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NMYXN0U2Vlbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcik6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJG
cmFtZVVuZGVyKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyZWQpOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVj
dEZyb20pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW06CisgICAg
ICAgICgtW1dLVXNlclNjcmlwdCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWlu
RnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDp1
c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOmZvclVSTFNjaGVtZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiB1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbToKKyAgICAgICAgKC1b
X1dLQXBwbGljYXRpb25NYW5pZmVzdCBpbml0V2l0aENvZGVyOl0pOgorICAgICAgICAoK1tfV0tB
cHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjptYW5pZmVzdFVS
TDpkb2N1bWVudFVSTDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJT
dHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJj
ZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YmFzZVVS
TDp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2llcyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNw
cDoKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19sb2FkX3BsYWluX3RleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQYXltZW50VUkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5Q29jb2EuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1l
bnRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJ
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpuYXZpZ2F0ZUJyb3dz
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OmRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xl
Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZUFs
bENvb2tpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpyZXNvbHZlV2ViR0xMb2Fk
UG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpT
YWZlQnJvd3NpbmdSZXN1bHQ6OlNhZmVCcm93c2luZ1Jlc3VsdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgICgtW19X
S1ByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBmaW5pc2g6XSk6CisgICAgICAgIChXZWJLaXQ6
OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxl
SW5Eb3dubG9hZHNGb2xkZXIpOgorICAgICAgICAoV2ViS2l0OjpyZXF1ZXN0VXNlck1lZGlhQXV0
aG9yaXphdGlvbkZvckRldmljZXMpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW06CisgICAg
ICAgICgtW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyIGF0dGVtcHRSZWNvdmVy
eV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVRvVVJMRm9yRmlsZVByb21pc2VQcm92aWRlcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldFJlZGlyZWN0Q2hhaW4pOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpyZWRpcmVjdENoYWluIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvRnJhbWVMb2FkU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0
ZTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpzZXRVbnJlYWNoYWJsZVVSTCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmg6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZFN0YXRlOjp1cmwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6
cHJvdmlzaW9uYWxVUkwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6
dW5yZWFjaGFibGVVUkwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZFN0YXRlOjpoYXNPbmx5U2VjdXJlQ29udGVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaDoKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dz
aW5nUmVzdWx0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1bHQ6
OnVybCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OnVybCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OnByb3Zpc2lvbmFsVVJMIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6dW5yZWFjaGFibGVVUkwgY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEFsdGVy
bmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtX
aXRoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJG
b3JTY2hlbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVu
Y2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJj
ZUZvckRlYnVnTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFn
RHJvcEludGVyYWN0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9u
U2hlZXRBc3Npc3RhbnQubW06CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgX2Ny
ZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25zOnNob3dMaW5rVGl0bGU6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVFbGVtZW50V2l0aFVSTDpyZWN0
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZv
clByZXZpZXdJdGVtQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbToKKyAgICAgICAgKC1bV0tMZWdhY3lQREZWaWV3IGFj
dGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6cmVjdDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAgICAgKC1bV0tQREZWaWV3IGFjdGlv
blNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6cmVjdDpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBfdXBkYXRlTG9jYXRp
b25JbmZvXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2Rp
bmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAg
ICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250
cm9sbGVyXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQ
YXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlk
YXRlTWVyY2hhbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZG9SZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAg
ICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudDo6dXNlckFnZW50Rm9yVVJM
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWUuY3BwOgorICAgICAgICAoV0tCdW5kbGVGcmFtZUFsbG93c0ZvbGxvd2luZ0xpbmsp
OgorICAgICAgICAoV0tCdW5kbGVGcmFtZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNl
V2l0aFVSTCk6CisgICAgICAgIChXS0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVzb3VyY2VX
aXRoVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VIYXNMb2NhbERhdGFGb3JVUkwpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRv
VVRGOFN0cmluZy5jcHA6CisgICAgICAgIChjb252ZXJ0VG9VVEY4U3RyaW5nKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJp
bmcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01l
ZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldFByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0
U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46OmNsaWNrZWRMaW5rKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1VUkxSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjphbGxvd3NGb2xs
b3dpbmdMaW5rIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRN
TCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJh
dGlvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFt
ZVVSTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKToKKwogMjAxOC0xMC0wMiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIERlcHJlY2F0
ZSBXS0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMTRjNjIwYWFhYjFiN2ExNTY4
NTVkY2Q3YTYzOGE2MGQzOGVkMTM1OC4uM2Y5MjIzYmI3ZDE3ZWIwZDIxNTczMDc1ZmEzNzBjNDcz
ZmM0OTRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMC0w
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaDoKKwogMjAxOC0xMC0wMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW21hY09TXSBTd2l0Y2hpbmcgdG8gZGlzY3JldGUgR1BVIHNob3VsZCBiZSBkb25l
IGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggY2UzMWU3
MzgxYjg5ZDhkOGQ2NjhiZmIxNDRiMzIyYzg4ZTc2OWY2NS4uZTgwNmVlNjE4ZmIyYjcyOTkyOGEw
YzBiOGFhOWViNzcwNTU1NTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzNyBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTUF0dHIu
bW06CisgICAgICAgICogRE9NL0RPTUJsb2IubW06CisgICAgICAgICogRE9NL0RPTUNTU0NoYXJz
ZXRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NJbXBvcnRSdWxlLm1tOgorICAgICAgICAq
IERPTS9ET01DU1NNZWRpYVJ1bGUubW06CisgICAgICAgICogRE9NL0RPTUNTU1BhZ2VSdWxlLm1t
OgorICAgICAgICAqIERPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbToKKyAgICAgICAgKiBET00v
RE9NQ1NTUnVsZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbToK
KyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NT
dHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9ET01DU1NWYWx1ZS5tbToKKyAgICAgICAgKiBE
T00vRE9NQ2hhcmFjdGVyRGF0YS5tbToKKyAgICAgICAgKiBET00vRE9NQ291bnRlci5tbToKKyAg
ICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3VtZW50RnJh
Z21lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3VtZW50VHlwZS5tbToKKyAgICAgICAgKiBE
T00vRE9NRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTUZpbGUubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQXBwbGV0RWxl
bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEFyZWFFbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MQlJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQmFzZUVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEJ1dHRv
bkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50Lm1tOgorICAg
ICAgICAqIERPTS9ET01IVE1MQ29sbGVjdGlvbi5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTERp
dkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxEb2N1bWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxFbWJlZEVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEZvcm1F
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRnJhbWVFbGVtZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
SFJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSGVhZEVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRN
TEh0bWxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTEltYWdlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9N
SFRNTElucHV0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTExJRWxlbWVudC5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9N
SFRNTExlZ2VuZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxMaW5rRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTE1hcEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RP
TUhUTUxNYXJxdWVlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1lZGlhRWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tOgorICAgICAgICAqIERP
TS9ET01IVE1MTW9kRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9MaXN0RWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9iamVjdEVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxPcHRp
b25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW06
CisgICAgICAgICogRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1tOgorICAgICAgICAqIERP
TS9ET01IVE1MUGFyYW1FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MUXVvdGVFbGVt
ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MU2NyaXB0RWxlbWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxTdHls
ZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1t
OgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxl
RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxUaXRsZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxVTGlzdEVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxWaWRlb0VsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUtleWJvYXJkRXZlbnQubW06CisgICAgICAgICogRE9NL0RPTU1lZGlhTGlzdC5tbToK
KyAgICAgICAgKiBET00vRE9NTW91c2VFdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTXV0YXRp
b25FdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTmFtZWROb2RlTWFwLm1tOgorICAgICAgICAq
IERPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW06CisgICAgICAgICogRE9NL0RPTVJhbmdl
Lm1tOgorICAgICAgICAqIERPTS9ET01TdHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9ET01U
ZXh0Lm1tOgorICAgICAgICAqIERPTS9ET01UZXh0RXZlbnQubW06CisgICAgICAgICogRE9NL0RP
TVRva2VuTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9NVUlFdmVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NWFBhdGhSZXN1bHQubW06CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bToKKyAgICAgICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1VSTCBf
d2ViX3VzZXJWaXNpYmxlU3RyaW5nXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfVVJMQnlSZW1v
dmluZ1VzZXJJbmZvXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfZGF0YUZvclVSTENvbXBvbmVu
dFR5cGU6XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfc2NoZW1lRGF0YV0pOgorICAgICAgICAo
LVtOU1VSTCBfd2ViX2hvc3REYXRhXSk6CisgICAgICAgICogTWlzYy9XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4ubW06CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aDoKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZXRSZXF1ZXN0VVJMKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6
OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyBjb25zdCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW06
CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OnNob3dQYXltZW50VUkpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW06CisgICAgICAgIChXZWJQbHVnaW5JbmZv
UHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNp
dGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9sb2FkRGF0
YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dW5yZWFjaGFibGVVUkw6XSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAg
ICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0aW9uQ29udHJv
bGxlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVy
bmFsLmg6CisKIDIwMTgtMTAtMDEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFttYWNPU10gU3dpdGNoaW5nIHRvIGRpc2NyZXRlIEdQVSBzaG91bGQgYmUgZG9uZSBp
biB0aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGVjODJkNDlh
Y2ZmYjc5MTQ1YWYzM2M0MjU5M2EzYzBhZWI0YWRlOGIuLmU2ZmU2Y2Q3YmFjMGI1OWYwOTllNDA1
MmZkODQyZTVhMGJjNmI0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0MiBAQAorMjAxOC0xMC0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWFyc2hhbGxpbmdIZWxw
ZXJzLmNwcDoKKyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBlcnMuaDoKKyAgICAgICAgKiBQbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNl
Lmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgICog
UGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJQ
bHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6
CisgICAgICAgICogV2ViRG93bmxvYWQuaDoKKyAgICAgICAgKiBXZWJFbGVtZW50UHJvcGVydHlC
YWcuY3BwOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6
CisgICAgICAgICogV2ViSGlzdG9yeS5oOgorICAgICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoK
KyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6V2ViUmVz
b3VyY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisgICAgICAgICogV2ViU2VjdXJpdHlP
cmlnaW4uY3BwOgorICAgICAgICAqIFdlYlVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYlVS
TFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTgtMTAtMDIgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgUGFy
c2VkVVJMU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjY2YyOTQ2YTlkYTVmYzg2MGYzNThjZDMwZWM5YjM2OGY1MGQ2ZjY5Li44ZTVmY2VkZmI1MWE1
MjZjZTdlZTRkMTgxZGM4ZTA3OTA2NTE2MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTc2LDYgKzc2LDEyIEBACiAJCTUzMTFCRDUzMUVBNzFDQUQwMDUy
NTI4MSAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzMTFCRDUxMUVBNzFDQUQwMDUyNTI4MSAvKiBTaWduYWxzLmNwcCAqLzsgfTsK
IAkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENUIxRUE4MjJGOTAw
NTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwICovOyB9OwogCQk1MzUzNEYyQTFFQzBFMTBFMDAx
NDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTM0RjI5MUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0
aW9ucy5kZWZzICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKENsaWVudCwgU2VydmVyLCAp
OyB9OyB9OworCQk1QzFGMDU5MzIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxRjA1OTEyMTY0
MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLzsgfTsKKwkJNUMxRjA1OTUyMTY0MzdC
MzAwMzkzMDJDIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgKi87IH07
CisJCTVDQzBFRTc1MjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFNzMyMTYyOUYxOTAwQTFB
ODQyIC8qIFVSTFBhcnNlci5jcHAgKi87IH07CisJCTVDQzBFRTc2MjE2MjlGMTkwMEExQTg0MiAv
KiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNDMEVFNzQyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgKi87IH07CisJCTVDQzBFRTg5MjE2
MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5t
bSAqLzsgfTsKKwkJNUNDMEVFOEEyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFODgyMTYy
QkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tICovOyB9OwogCQk3MEE5OTNGRTFBRDcxNTEz
MDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJl
Z2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBFQ0E2MEQxQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0
cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBFQ0E2MEExQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwICovOyB9
OwogCQk3QTA1MDkzRjFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTA1MDkzRTFGQjlEQ0M1MDBC
MzNGQjggLyogSlNPTlZhbHVlcy5jcHAgKi87IH07CkBAIC0zNzIsNyArMzc4LDE5IEBACiAJCTU1
MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGlueUxSVUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1OTdGODJDMUQ5NEI5OTcwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bmNocm9uaXplZEZpeGVkUXVl
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUI0MzM4M0E1RDBCNDYzQzk0MzNE
OTMzIC8qIEluZGV4TWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGV4
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMUYwNTkxMjE2NDM1NkIwMDM5
MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDRlVSTEV4dHJhcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMUYw
NTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDRlVSTEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QzFGMDU5NDIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVVJMQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzFGMDU5NzIxNjQzOTk0MDAzOTMwMkMgLyogVVJMSGFzaC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDN0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlxdWVSZWYuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDQzBFRTcxMjE2MjlGMTgwMEExQTg0MiAvKiBVUkwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QzBFRTcyMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVJMUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQzBFRTczMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUNDMEVFNzQyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0MwRUU3NzIxNjJBMDEwMDBBMUE4NDIgLyogVVJMSGFzaC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVSTENvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU4NzIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRy
YXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNVUkxFeHRyYXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFODgyMTYyQkMyMjAwQTFBODQyIC8qIE5T
VVJMRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTlNV
UkxFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjYyMTQ2ODlC
ODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGli
V1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVEMjQ3QjZFMTQ2
ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjcwMTQ2ODlDNDcwMEU3OEI3
NiAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzIwLDkgKzczOCwxMiBAQAog
CQkyQ0RFRDBGMDE4MTE1QzNGMDA0REJBNzAgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDMUYwNTkxMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVS
TEV4dHJhcy5jcHAgKi8sCisJCQkJNUMxRjA1OTIyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0
cmFzLmggKi8sCiAJCQkJQzJCQ0ZDNDExRjYxRDYxNjAwQzkyMjJDIC8qIExhbmd1YWdlQ0YuY3Bw
ICovLAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAog
CQkJCTFBRkRFNjQ3MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2FzdHNDRi5oICovLAorCQkJCTVD
MUYwNTk0MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGNmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTExMzEsNiArMTE1MiwxMiBAQAog
CQkJCUUzMDBFNTIxMjAzRDY0NUYwMERBNzlCRSAvKiBVbmlxdWVBcnJheS5oICovLAogCQkJCTVD
N0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlxdWVSZWYuaCAqLywKIAkJCQlDRDc2MDBGRjFG
OTBBM0NBMDAwMjZFMjYgLyogVW5zYWZlUG9pbnRlci5oICovLAorCQkJCTVDQzBFRTc0MjE2MjlG
MTkwMEExQTg0MiAvKiBVUkwuY3BwICovLAorCQkJCTVDQzBFRTcxMjE2MjlGMTgwMEExQTg0MiAv
KiBVUkwuaCAqLywKKwkJCQk1QzFGMDU5NzIxNjQzOTk0MDAzOTMwMkMgLyogVVJMSGFzaC5oICov
LAorCQkJCTVDQzBFRTc3MjE2MkEwMTAwMEExQTg0MiAvKiBVUkxIYXNoLmggKi8sCisJCQkJNUND
MEVFNzMyMTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5jcHAgKi8sCisJCQkJNUNDMEVFNzIy
MTYyOUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5oICovLAogCQkJCTdBRkVDNkIwMUVCMjJCNTkw
MERBREUzNiAvKiBVVUlELmNwcCAqLywKIAkJCQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYgLyog
VVVJRC5oICovLAogCQkJCUE4QTQ3MzZGMTUxQTgyNUIwMDQxMjNGRiAvKiBWYWx1ZUNoZWNrLmgg
Ki8sCkBAIC0xMzU0LDcgKzEzODEsMTAgQEAKIAkJCQlBOEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYg
LyogTWFpblRocmVhZENvY29hLm1tICovLAogCQkJCUFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAv
KiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgKi8sCiAJCQkJQUQ4OUI2QjkxRTY0MTUwRjAwOTA3
MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tICovLAorCQkJCTVDQzBFRTg3MjE2
MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5oICovLAorCQkJCTVDQzBFRTg4MjE2MkJDMjIw
MEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSAqLywKIAkJCQlBMzBENDEyQzFGMERFMEJBMDBCNzE5
NTQgLyogU29mdExpbmtpbmcuaCAqLywKKwkJCQk1Q0MwRUU4NjIxNjJCQzIyMDBBMUE4NDIgLyog
VVJMQ29jb2EubW0gKi8sCiAJCQkJRTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1
ZUNvY29hLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CkBAIC0xNDgxLDYgKzE1MTEs
NyBAQAogCQkJCUE4QTQ3MzhCMTUxQTgyNUIwMDQxMjNGRiAvKiBCaXRWZWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2Vw
dGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNBQzE1MUE4MjVCMDA0MTIzRkYgLyog
Y2FjaGVkLXBvd2Vycy5jYyBpbiBTb3VyY2VzICovLAorCQkJCTVDMUYwNTkzMjE2NDM1NkIwMDM5
MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI4QTFEQzk3
QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDYw
MTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTUzMiw2ICsxNTYzLDcgQEAKIAkJCQlBRDg5QjZCQTFFNjQxNTBGMDA5MDcwN0Yg
LyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzNFQzE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjY2QjI4QzFEQzk3QkFCMDA0QTFEM0YgLyogTW9ub3RvbmljVGltZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1Q0MwRUU4QTIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRyYXMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNDE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVyT2ZD
b3Jlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGNzE1MUE4MjVCMDA0MTIzRkYgLyog
T1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNGOTE1MUE4MjVC
MDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTg1LDYg
KzE2MTcsMTAgQEAKIAkJCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2Fn
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MDFEQzk3QkFCMDA0QTFEM0YgLyogVGlt
ZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzA3NUY1MUZC
RjUzQ0QwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0Mw
RUU3NjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDMUYw
NTk1MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0Mw
RUU4OTIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJCQk1
Q0MwRUU3NTIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFDMTgxQzhGMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFDMTgxQzkxMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0
aW4xLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzkzMUQzMDdBQjgwMEY1RkExNiAvKiBV
VGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDM5Y2MxOTk5NjkyNWExMmRjMzRkZTA3MzRiOWYyOTZlZGE0N2NmNDAuLjI4OTIxYmM4ZDI0
ZjQ5ZTM1ZjFmMzc3NmI3YWM2ZTc0ODI5NGMxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0y
NDAsNiArMjQwLDkgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFRpbnlQdHJTZXQuaAog
ICAgIFRyaVN0YXRlLmgKICAgICBUeXBlQ2FzdHMuaAorICAgIFVSTC5oCisgICAgVVJMSGFzaC5o
CisgICAgVVJMUGFyc2VyLmgKICAgICBVVUlELmgKICAgICBVbmFsaWduZWRBY2Nlc3MuaAogICAg
IFVuZXhwZWN0ZWQuaApAQCAtMzkyLDYgKzM5NSw4IEBAIHNldChXVEZfU09VUkNFUwogICAgIFRo
cmVhZGluZy5jcHAKICAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwCiAgICAgVGltaW5n
U2NvcGUuY3BwCisgICAgVVJMLmNwcAorICAgIFVSTFBhcnNlci5jcHAKICAgICBVVUlELmNwcAog
ICAgIFdURkFzc2VydGlvbnMuY3BwCiAgICAgV2FsbFRpbWUuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmggYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggZWU1
MWM3MzIxOGYxZmZiOWU1MjUwYjY1ZmQ1YmY1Mzg4MjdhZmVlMi4uNGJlZjgxMGNjMTA4NjcyZDk4
Mjk2OGNiNTkzNWJhMjQwMjcwNjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFz
cyBTdHJpbmdWaWV3OwogY2xhc3MgVGV4dFBvc2l0aW9uOwogY2xhc3MgVGV4dFN0cmVhbTsKIGNs
YXNzIFVuaXF1ZWRTdHJpbmdJbXBsOworY2xhc3MgVVJMOwogY2xhc3MgV2FsbFRpbWU7CiAKIHN0
cnVjdCBGYXN0TWFsbG9jOwpAQCAtMTA5LDYgKzExMCw3IEBAIHVzaW5nIFdURjo6U3RyaW5nSW1w
bDsKIHVzaW5nIFdURjo6U3RyaW5nVmlldzsKIHVzaW5nIFdURjo6VGV4dFBvc2l0aW9uOwogdXNp
bmcgV1RGOjpUZXh0U3RyZWFtOwordXNpbmcgV1RGOjpVUkw7CiB1c2luZyBXVEY6OlZhcmlhbnQ7
CiB1c2luZyBXVEY6OlZlY3RvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA0Njkw
M2MzNjQyOWNlYjcyNmExMTE5MzNhZTJmYjM1MDQ4OGRmMjI1Li40MWM4OTU0OTE4ODI5YzdlMDdl
ZmVjOGRhOTU3MWE2NjZmNjgyNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNiw2
ICs2LDcgQEAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgZ2xpYi9HUmVmUHRy
LmgKICAgICBnbGliL0dUeXBlZGVmcy5oCiAgICAgZ2xpYi9HVW5pcXVlUHRyLmgKKyAgICBnbGli
L0dVbmlxdWVQdHJTb3VwLmgKICAgICBnbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oCiAgICAg
Z2xpYi9XVEZHVHlwZS5oCiAKQEAgLTIxLDYgKzIyLDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKICAgICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAg
IGdsaWIvUnVuTG9vcEdMaWIuY3BwCisgICAgZ2xpYi9VUkxTb3VwLmNwcAogCiAgICAgbGludXgv
Q3VycmVudFByb2Nlc3NNZW1vcnlTdGF0dXMuY3BwCiAgICAgbGludXgvTWVtb3J5Rm9vdHByaW50
TGludXguY3BwCkBAIC0zNyw5ICszOSwxMSBAQCBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCiAg
ICAgJHtHTElCX0dJT19MSUJSQVJJRVN9CiAgICAgJHtHTElCX0dPQkpFQ1RfTElCUkFSSUVTfQog
ICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAgJHtMSUJTT1VQX0xJQlJBUklFU30KICAgICAke1pM
SUJfTElCUkFSSUVTfQogKQogCiBsaXN0KEFQUEVORCBXVEZfU1lTVEVNX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICR7TElCU09VUF9JTkNMVURFX0RJ
UlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGY0ZDUyNmU1NzFiOTMyMjk0ZWFh
MzQyOWEzNDA0OTEwZTcxOTE0MjEuLmEwMThmOTI5ZWY1NTJlZTI0MjExNTY1ZjFhNzllZjBiM2Mz
ZTU2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC04LDEwICs4LDEyIEBAIGxpc3Qo
QVBQRU5EIFdURl9MSUJSQVJJRVMKICkKIAogbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFERVJT
CisgICAgY2YvQ0ZVUkxFeHRyYXMuaAogICAgIGNmL1R5cGVDYXN0c0NGLmgKIAogICAgIGNvY29h
L0VudGl0bGVtZW50cy5oCiAgICAgY29jb2EvTWFjaFNlbmRSaWdodC5oCisgICAgY29jb2EvTlNV
UkxFeHRyYXMuaAogICAgIGNvY29hL1NvZnRMaW5raW5nLmgKIAogICAgIGRhcndpbi9XZWFrTGlu
a2luZy5oCkBAIC0zOCw4ICs0MCwxMCBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIFNj
aGVkdWxlUGFpckNGLmNwcAogICAgIFNjaGVkdWxlUGFpck1hYy5tbQogCisgICAgY2YvQ0ZVUkxF
eHRyYXMuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAgICBjZi9SdW5Mb29wQ0YuY3BwCisg
ICAgY2YvVVJMQ0YuY3BwCiAKICAgICBjb2NvYS9BdXRvZHJhaW5lZFBvb2wuY3BwCiAgICAgY29j
b2EvQ1BVVGltZUNvY29hLmNwcApAQCAtNDgsNiArNTIsOCBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogICAgIGNvY29hL01haW5UaHJlYWRDb2NvYS5tbQogICAgIGNvY29hL01lbW9yeUZvb3Rw
cmludENvY29hLmNwcAogICAgIGNvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisg
ICAgY29jb2EvTlNVUkxFeHRyYXMubW0KKyAgICBjb2NvYS9VUkxDb2NvYS5tbQogICAgIGNvY29h
L1dvcmtRdWV1ZUNvY29hLmNwcAogCiAgICAgbWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2Fm
YXJpLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZSBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDc1MmI1OTkzMTQ4ZjExMTBhMjkz
YzlkYTllMjhhZGVmMDhmZWU0MGMuLmEwMmRhNTI3OGVlZWFiOGRiODAwYmM4Zjk2Zjg5ZmI5NzJm
M2UxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC00LDYgKzQsNyBAQCBsaXN0KEFQ
UEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICBnbGliL0dSZWZQdHIuaAogICAgIGdsaWIvR1R5
cGVkZWZzLmgKICAgICBnbGliL0dVbmlxdWVQdHIuaAorICAgIGdsaWIvR1VuaXF1ZVB0clNvdXAu
aAogICAgIGdsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmgKICAgICBnbGliL1dURkdUeXBlLmgK
IApAQCAtMTksNiArMjAsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGdsaWIvR0xp
YlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3BwCiAgICAgZ2xpYi9SdW5Mb29wR0xp
Yi5jcHAKKyAgICBnbGliL1VSTFNvdXAuY3BwCiAKICAgICBsaW51eC9DdXJyZW50UHJvY2Vzc01l
bW9yeVN0YXR1cy5jcHAKICAgICBsaW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKQEAgLTM1
LDkgKzM3LDExIEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICAgICAke0dMSUJfR0lPX0xJ
QlJBUklFU30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJRVN9CiAgICAgJHtHTElCX0xJQlJB
UklFU30KKyAgICAke0xJQlNPVVBfTElCUkFSSUVTfQogICAgICR7WkxJQl9MSUJSQVJJRVN9CiAp
CiAKIGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7R0xJ
Ql9JTkNMVURFX0RJUlN9CisgICAgJHtMSUJTT1VQX0lOQ0xVREVfRElSU30KICkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1XaW4uY21ha2UKaW5kZXggNDY4NTE5NmNlYTYyZGMwNmQ1YmE2MzAwMjEyYzI3ODkwOTFl
OWFkNy4uNjgzNTk5YjEwNzMyZTJmODAzY2Q5MTA1OTZlZDQyODE4MTNjODdlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1XaW4uY21ha2UKQEAgLTIwLDExICsyMCwxNSBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogCiBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwor
ICAgICAgICBjZi9DRlVSTEV4dHJhcy5oCiAgICAgICAgIGNmL1R5cGVDYXN0c0NGLmgKIAogICAg
ICAgICB0ZXh0L2NmL1RleHRCcmVha0l0ZXJhdG9yQ0YuaAogICAgICkKICAgICBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUworICAgICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKKyAgICAgICAgY2YvVVJM
Q0YuY3BwCisKICAgICAgICAgdGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCiAgICAgICAg
IHRleHQvY2YvU3RyaW5nQ0YuY3BwCiAgICAgICAgIHRleHQvY2YvU3RyaW5nSW1wbENGLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTQzNDVhZWU3NTMzM2JjZjg3YzE2YTM1Y2Q3YzAxZDUwYzAwNWU5Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTAsMCArMSwxMTA4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LTIwMDgsIDIwMTEtMjAxMywgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKyNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNp
bmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKKy8vIEZJWE1FOiBUaGlzIGZpbGUgbWFrZXMg
dG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJhdG9yIG9uIFN0cmluZy4KKy8vIFdlIGVpdGhlciBo
YXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0b3Igc28gaXQgZG9lc24ndCBpbnZvbHZlCisvLyBz
byBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFuZ2UgdGhpcyB0byB1c2UgU3RyaW5nQnVmZmVyIGlu
c3RlYWQuCisKKworbmFtZXNwYWNlIFdURiB7CisKK3R5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4g
Q2hhckJ1ZmZlcjsKK3R5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOworCitz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7CisKKy8vIENv
cGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3Vy
Y2UgY2hhcmFjdGVycyBhcmUKKy8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3Qg
YmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKKy8vIGluIHRoZSBz
b3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRo
ZSByZXN1bHQuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNo
YXIqIGRlc3QpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIG1lbWNweShkZXN0LCBzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgY29u
c3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgc2l6ZV90IGxl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzcmNb
aV0pOworICAgIH0KK30KKwordm9pZCBVUkw6OmludmFsaWRhdGUoKQoreworICAgIG1faXNWYWxp
ZCA9IGZhbHNlOworICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOworICAgIG1f
Y2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOworICAgIG1fc2NoZW1lRW5kID0gMDsKKyAgICBtX3Vz
ZXJTdGFydCA9IDA7CisgICAgbV91c2VyRW5kID0gMDsKKyAgICBtX3Bhc3N3b3JkRW5kID0gMDsK
KyAgICBtX2hvc3RFbmQgPSAwOworICAgIG1fcG9ydExlbmd0aCA9IDA7CisgICAgbV9wYXRoRW5k
ID0gMDsKKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7CisgICAgbV9xdWVyeUVuZCA9IDA7
Cit9CisKK1VSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwg
Y29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKK3sKKyAgICBVUkxQYXJzZXIgcGFyc2Vy
KHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Cit9CisKK3N0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCit7CisgICAgLy8g
QnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbAor
ICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4gKnVuc2lnbmVk
KiBjaGFyIGhlcmUKKyAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9ubHkgY2F0Y2gg
Y29udHJvbCBjaGFyYWN0ZXJzLgorICAgIHJldHVybiBjIDw9ICcgJzsKK30KKworVVJMIFVSTDo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBVUkwgcmVzdWx0ID0gKnRoaXM7CisgICAgcmVz
dWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK1N0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKK3sK
KyAgICBpZiAoIWhhc1BhdGgoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgdW5z
aWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKKyAgICBpZiAobV9zdHJpbmdbZW5kXSA9PSAnLycp
CisgICAgICAgIC0tZW5kOworCisgICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcucmV2ZXJzZUZp
bmQoJy8nLCBlbmQpOworICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2hv
c3RFbmQgKyBtX3BvcnRMZW5ndGgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgKytz
dGFydDsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0
ICsgMSk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7Cit9CisK
K1N0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBzdGFydCA9IGhv
c3RTdGFydCgpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3Rh
cnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKK30KKworc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJM
Ojpwb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcG9ydExlbmd0aCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCBudW1i
ZXI7CisgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBudW1iZXIgPSBjaGFyYWN0
ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBt
X3BvcnRMZW5ndGggLSAxLCAmb2spOworICAgIGVsc2UKKyAgICAgICAgbnVtYmVyID0gY2hhcmFj
dGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9zdEVuZCArIDEs
IG1fcG9ydExlbmd0aCAtIDEsICZvayk7CisgICAgaWYgKCFvayB8fCBudW1iZXIgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgcmV0dXJuIG51bWJlcjsKK30KKworU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBj
b25zdAoreworICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkpCisgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9ydC52YWx1
ZSgpKSk7CisgICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOworfQorCitTdHJpbmcgVVJMOjpw
cm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKK3sKKyAgICBTdHJpbmcgcmVzdWx0ID0gbV9zdHJp
bmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7CisKKyAgICBpZiAobV9w
YXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgeworICAgICAgICBjb25zdCBpbnQgYWxsb3dG
b3JUcmFpbGluZ0F0U2lnbiA9IDE7CisgICAgICAgIHJlc3VsdC5yZW1vdmUobV91c2VyU3RhcnQs
IG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdBdFNpZ24pOwor
ICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBTdHJpbmcgZGVjb2RlRXNj
YXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0KQoreworICAgIGF1dG8g
aW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBpZiAoIWlucHV0TGVuZ3RoKQorICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBWZWN0b3I8TENoYXI+IHBlcmNlbnREZWNv
ZGVkOworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXRMZW5n
dGgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKKyAgICAgICAgICAgICYmIGlucHV0TGVuZ3RoID4g
MgorICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgorICAgICAgICAgICAgJiYgaXNB
U0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKKyAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdp
dChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRB
cHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7CisgICAg
ICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGVyY2VudERlY29k
ZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKKyAgICB9CisgICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwor
fQorCitTdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBl
U2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91
c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Cit9CisKK1N0cmluZyBVUkw6OnBh
c3MoKSBjb25zdAoreworICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zy
b21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlckVuZCArIDEs
IG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Cit9CisKK1N0cmluZyBVUkw6OmVuY29k
ZWRVc2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlclN0
YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Cit9CisKK1N0cmluZyBVUkw6OmVuY29kZWRQ
YXNzKCkgY29uc3QKK3sKKyAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91
c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOworfQorCitTdHJpbmcg
VVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICghaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0
cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOworfQorCitib29sIFVSTDo6aGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5n
Lmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Cit9CisKK1N0cmluZyBVUkw6OmJhc2VBc1N0cmluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gp
OworfQorCisjaWYgIVVTRShDRikKKworU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25z
dAoreworICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNl
ZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOworfQorCisjZW5kaWYKKworI2lmZGVmIE5ERUJVRwor
CitzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldykKK3sK
K30KKworI2Vsc2UKKworc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmll
dyBwcm90b2NvbCkKK3sKKyAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0aGlz
IGZ1bmN0aW9uIGFueSBtb3JlLgorICAgIC8vIFRoZSBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFs
IGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVycworICAgIC8vIGFyZSBv
bmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3QgYW5kIHJlbGllZCBvbiB0
aGVzZSBjaGVja3MuCisgICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHByb3RvY29sLmNvZGVVbml0
cygpKSB7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOworICAgICAgICBBU1NF
UlQoY2hhcmFjdGVyID4gJyAnKTsKKyAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoY2hhcmFj
dGVyKSk7CisgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSA9
PSBjaGFyYWN0ZXIpOworICAgIH0KK30KKworI2VuZGlmCisKK3N0YXRpYyBMb2NrIGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKKwordXNpbmcgRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+Oworc3RhdGlj
IERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIHN0YXRpYyBEZWZhdWx0UG9ydEZvclByb3RvY29s
TWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKKyAgICByZXR1cm4gZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKK30KKworc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGlu
ZygpCit7CisgICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0
UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmco
KTsKKyAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCisgICAgICAgIGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmc7CisgICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOworfQorCit2b2lkIHJl
Z2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgZW5zdXJlRGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQpOworfQorCit2
b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdM
b2NrKTsKKyAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcoKSkKKyAgICAgICAgbWFwLT5jbGVhcigpOworfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQx
Nl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCit7CisgICAg
aWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcoKSkgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJv
dG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgICAgIEFTU0VSVChvdmVycmlkZU1hcCk7IC8v
IE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRlTWFwIGNhbm5v
dCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KKyAgICAgICAgYXV0byBpdGVyYXRv
ciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7
CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCisgICAgICAgICAg
ICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gVVJMUGFyc2VyOjpk
ZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKK30KKworYm9vbCBpc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkKK3sKKyAgICBy
ZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsKK30KKworYm9v
bCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Cit7CisgICAgYXNz
ZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7CisKKyAgICAvLyBKYXZhU2NyaXB0IFVS
THMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVSTCBkZWNpZGVz
IHRoZXkgYXJlIGludmFsaWQuCisgICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJvdG9jb2xJc0ph
dmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKKyAgICBBU1NFUlQoIWVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2YXNjcmlwdCIp
KTsKKworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0Lgor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7CisgICAgICAg
IGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdb
aV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
cmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZlIGNvbnN1bWVk
IGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KK30KKworYm9vbCBVUkw6OnByb3RvY29s
SXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKK3sKKyAgICBhc3NlcnRQcm90b2NvbElzR29v
ZChwcm90b2NvbCk7CisKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5sZW5ndGgoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtp
bmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9z
Y2hlbWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
bV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBVUkw6OnF1ZXJ5KCkgY29uc3QKK3sK
KyAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9xdWVy
eUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAorfQorCitTdHJpbmcgVVJMOjpwYXRoKCkgY29uc3QK
K3sKKyAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworICAg
IHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0gcG9ydEVuZCk7
Cit9CisKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCit7CisgICAgLy8g
RmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KKyAg
ICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKKyAgICBTdHJpbmcgbmV3
UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7CisgICAgYXV0byBj
YW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90
b2NvbCk7CisgICAgaWYgKCFjYW5vbmljYWxpemVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJp
bmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vic3RyaW5nKG1f
c2NoZW1lRW5kKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQorewor
ICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJu
IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5n
dGgoKSk7Cit9CisgICAgCisvLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRp
ZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KKy8vIHRoZSBvdXRwdXQgYnVm
ZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KKy8vIFJldHVybiB2
YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KK3N0YXRpYyBib29sIGFwcGVu
ZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykK
K3sKKyAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQg
bmFtZS4KKyAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBk
byBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCisgICAgY29uc3Qg
dW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OworICAgIAorICAgIGlmIChzdHJp
bmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJKHN0cmluZykp
IHsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIAorICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVu
Z3RoXTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5m
byBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJf
dCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVSTFBhcnNlcjo6
aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCisgICAgICAgIHN0cmluZy51cGNv
bnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1ZmZlciwgaG9z
dG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKKyAgICAKKyAg
ICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7Cisg
ICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0
ZWQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit1bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3Bhc3N3
b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsg
MTsKK30KKwordm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQoreworICAgIGlmICgh
bV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbG9uSW5kZXggPSBzLmZp
bmQoJzonKTsKKyAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOworICAgIGlmICghYXBwZW5kRW5j
b2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOworICAg
IGlmIChzbGFzaFNsYXNoTmVlZGVkKQorICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8v
Iik7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgp
LCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcu
c3Vic3RyaW5nKG1faG9zdEVuZCkpOworCisgICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVyLnRv
U3RyaW5nKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6
cmVtb3ZlUG9ydCgpCit7CisgICAgaWYgKCFtX3BvcnRMZW5ndGgpCisgICAgICAgIHJldHVybjsK
KyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVm
dChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsg
bV9wb3J0TGVuZ3RoKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCit2b2lk
IFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQoreworICAgIGlmICghbV9pc1ZhbGlkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9ydExlbmd0aDsK
KyAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hv
c3RFbmQgKyAxKTsKKworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3
KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3Ry
aW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQg
KyBtX3BvcnRMZW5ndGgpKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK3Zv
aWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQoreworICAg
IGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmdWaWV3IGhvc3RO
YW1lKGhvc3RBbmRQb3J0KTsKKyAgICBTdHJpbmdWaWV3IHBvcnQ7CisgICAgCisgICAgYXV0byBj
b2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOworICAgIGlmIChjb2xvbkluZGV4ICE9IG5v
dEZvdW5kKSB7CisgICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCAr
IDEpOworICAgICAgICBib29sIG9rOworICAgICAgICBpbnQgcG9ydEludCA9IHBvcnQudG9JbnRT
dHJpY3Qob2spOworICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbklu
ZGV4KTsKKyAgICB9CisKKyAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7CisgICAgaWYgKCFhcHBlbmRF
bmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOworCisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsKKyAg
ICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIv
LyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEo
KSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOworICAgIGlmICghcG9ydC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHBvcnQpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7CisKKyAgICBVUkxQYXJzZXIg
cGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Cit9CisKK3N0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5n
JiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCit7CisgICAgYXV0byBlbmNvZGUg
PSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgeworICAgICAgICBDU3RyaW5n
IHV0ZjggPSBpbnB1dC51dGY4KCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSB1dGY4LmRhdGEoKTsK
KyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBhdXRvIGxlbmd0aCA9IHV0
ZjgubGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7IGor
KykgeworICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKKyAgICAgICAgICAgIGlmIChzaG91
bGRFbmNvZGUoYykpIHsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMp
KTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhE
aWdpdChjKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwor
ICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aCgpOyArK2kp
IHsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1dFtpXSkpKQorICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7CisgICAgfQorICAgIHJldHVybiBpbnB1dDsKK30K
Kwordm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJh
Y3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0
YXRpb25zLAorICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUg
dXNlciBsb2dpbi4KKworICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKKyAgICBpZiAoIXVz
ZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29kZUNoYXJhY3Rl
cnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOworICAgICAgICBpZiAo
bV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisg
ICAgICAgICAgICB1ID0gIi8vIiArIHU7CisgICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0
IGhhdmUgb25lIGJlZm9yZS4KKyAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9
PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKKyAgICAgICAgICAgIHUu
YXBwZW5kKCdAJyk7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVz
ZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRFbmQg
JiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKKyAgICAgICAgICAg
IGVuZCArPSAxOworICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRy
ZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdl
LgorICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7CisgICAgICAgICAgICBVUkxQYXJz
ZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJTdGFy
dCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAgICAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBVUkw6
OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKKyAg
ICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmcgcCA9ICI6IiArIHBl
cmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0Vu
Y29kZVNldCkgKyAiQCI7CisgICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisgICAgICAgICAgICBwID0gIi8vIiArIHA7CisgICAg
ICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQgb3Vy
IG93bi4KKyAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAn
QCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVz
dWx0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2
ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0g
bV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisg
ICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBp
biB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFr
ZSBhIGNoYW5nZS4KKyAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKKyAgICAgICAgICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1f
dXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAg
ICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBPcHRp
bWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBlbnMgdG8gYmUg
ZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPworICAgIC8vIEZJWE1FOiBJcyBpdCBjb3JyZWN0IHRv
IGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJIGNoYXJhY3Rl
cnM/CisgICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgeyBtX3N0
cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVyKSB9LnJlc3Vs
dCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKK3sKKyAgICBp
ZiAoIW1faXNWYWxpZCkgeworICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBt
X3F1ZXJ5RW5kKQorICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7
Cit9CisKK3ZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpCit7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RyaW5nID0gbV9z
dHJpbmcubGVmdChtX3BhdGhFbmQpOworICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhFbmQ7Cit9CisK
K3ZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVND
SUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCisgICAgLy8gVXN1YWxs
eSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYt
OCwgYnV0IHdlIGRvbid0IGhhdmUKKyAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRo
aXMgZnVuY3Rpb24uCisgICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2CisgICAgaWYg
KChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkp
IHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJp
bmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vi
c3RyaW5nKG1fcXVlcnlFbmQpKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7CisgICAgfQorCit9CisKK3ZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKK3sK
KyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIHBhdGgg
PSBzOworICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKKyAgICAgICAg
cGF0aCA9ICIvIiArIHBhdGg7CisKKyAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9
IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnPycg
fHwgY2hhcmFjdGVyID09ICcjJzsKKyAgICB9OworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0
cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCks
IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiks
IFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7CisgICAgKnRoaXMg
PSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK2Jvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRp
Zmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5tX3F1ZXJ5RW5k
ICE9IGIubV9xdWVyeUVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHF1
ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBx
dWVyeUxlbmd0aDsgKytpKQorICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygp
W2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJM
JiBiKQoreworICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7CisgICAgICAgIGlmIChhLnN0cmlu
ZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVh
bChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5tX3NjaGVtZUVuZCAh
PSBiLm1fc2NoZW1lRW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBo
b3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEu
bV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0
U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gYi5ob3N0
U3RhcnQoKTsKKyAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7CisgICAgICAgIGlmIChhLnN0cmluZygp
W2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgLy8gQW5kIHRoZSBob3N0CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RM
ZW5ndGhBOyArK2kpIHsKKyAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldICE9
IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBV
UkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0
U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0
YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKKyAgICB1bnNp
Z25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKKyAgICBpZiAoaG9z
dExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7CisgICAgICAgIGlmIChh
LnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFydEIgKyBpXSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0
Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
ZG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIXByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBo
b3N0ID0gdGhpcy0+aG9zdCgpOworICAgIGlmICghaG9zdC5lbmRzV2l0aChkb21haW4pKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9PSBkb21haW4u
bGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgpIC0gMV0gPT0g
Jy4nOworfQorCitTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJp
bmcmIGlucHV0KQoreworICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhpbnB1dCwg
VVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOworfQorCitib29sIFVSTDo6aXNIaWVy
YXJjaGljYWwoKSBjb25zdAoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9PSAnOicpOworICAgIHJl
dHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKK30KKwordm9pZCBVUkw6OmNv
cHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAoreworICAgIC8vIEZJ
WE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUgY2hhcmFjdGVy
cyBpbiB0aGUgc3RyaW5nIQorICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlkIFVSTCwgd2hp
Y2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCisgICAgYnVmZmVyLnJl
c2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIu
ZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Citib29sIHByb3Rv
Y29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2Nv
bCkKK3sKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJp
bmcgb2JqZWN0LgorICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29sKSkpOworICAg
IGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBqID0gMDsg
dXJsW2ldOyArK2kpIHsKKyAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNv
bnRyb2wgY2hhcmFjdGVycy4KKyAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91bGRUcmltRnJv
bVVSTCh1cmxbaV0pKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlzTGVhZGluZyA9
IGZhbHNlOworCisgICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVzLgorICAgICAg
ICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ldID09ICdcbicp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIXByb3RvY29sW2pdKQorICAg
ICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7CisgICAgICAgIGlmICghaXNBU0NJSUFscGhh
Q2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICArK2o7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2Nv
bCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wpOworfQor
CitpbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0
IGNoYXIqIHByb3RvY29sKQoreworICAgIHJldHVybiBXVEY6OnByb3RvY29sSXNJbnRlcm5hbChz
dHJpbmcsIHByb3RvY29sKTsKK30KKworI2lmbmRlZiBOREVCVUcKKwordm9pZCBVUkw6OnByaW50
KCkgY29uc3QKK3sKKyAgICBwcmludGYoIiVzXG4iLCBtX3N0cmluZy51dGY4KCkuZGF0YSgpKTsK
K30KKworI2VuZGlmCisKK1N0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNv
bnN0Cit7CisgICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKKyAgICByZWZlcnJlci5zZXRVc2VyKFN0
cmluZygpKTsKKyAgICByZWZlcnJlci5zZXRQYXNzKFN0cmluZygpKTsKKyAgICByZWZlcnJlci5y
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gcmVmZXJyZXIuc3RyaW5nKCk7
Cit9CisKK2Jvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0Cit7CisgICAgLy8gSW5jbHVkaW5n
IGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVhIHNpbmNlIGRyYWcgYW5kIGRyb3AgdXNlcyB0
aGlzIGNoZWNrCisgICAgLy8gYW5kIGluY2x1ZGluZyBmZWVkIHdvdWxkIGFsbG93IGZlZWRzIHRv
IHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxvZworICAgIC8vIHJlYWQgdGhlIGNvbnRlbnRz
IG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBldmVuIHdpdGhvdXQgYSBkcm9wLgorICAgIC8v
IExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzTG9j
YWwoKSBmdW5jdGlvbi4KKyAgICByZXR1cm4gcHJvdG9jb2xJcygiZmlsZSIpOworfQorCitib29s
IHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIHJldHVybiBw
cm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29sIHByb3RvY29s
SXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKQoreworICAgIHJldHVybiBwcm90b2NvbElzSW50
ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29sIHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgYXV0byBsZW5ndGggPSB1cmwubGVuZ3RoKCk7
CisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9i
amVjdC4KKyAgICByZXR1cm4gbGVuZ3RoID49IDUKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2Fz
ZWxlc3NFcXVhbCh1cmxbMF0sICdoJykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbCh1cmxbMV0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1
cmxbMl0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbM10s
ICdwJykKKyAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwgKGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwodXJsWzRdLCAncycpICYmIGxlbmd0aCA+PSA2ICYmIHVybFs1XSA9PSAnOicpKTsKK30K
KworY29uc3QgVVJMJiBibGFua1VSTCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVS
TD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayIpOworICAgIHJldHVybiBzdGF0
aWNCbGFua1VSTDsKK30KKworYm9vbCBVUkw6OmlzQmxhbmtVUkwoKSBjb25zdAoreworICAgIHJl
dHVybiBwcm90b2NvbElzKCJhYm91dCIpOworfQorCitib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVS
TCYgdXJsKQoreworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgp
OworCisgICAgLy8gU2luY2UgbW9zdCBVUkxzIGRvbid0IGhhdmUgYSBwb3J0LCByZXR1cm4gZWFy
bHkgZm9yIHRoZSAibm8gcG9ydCIgY2FzZS4KKyAgICBpZiAoIXBvcnQpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gVGhpcyBibG9ja2VkIHBvcnQgbGlzdCBtYXRjaGVzIHRoZSBwb3J0
IGJsb2NraW5nIHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgorICAgIC8vIFNlZSBodHRwOi8vd3d3
Lm1vemlsbGEub3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFubmluZy5odG1sIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgorICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBibG9ja2VkUG9ydExpc3RbXSA9
IHsKKyAgICAgICAgMSwgICAgLy8gdGNwbXV4CisgICAgICAgIDcsICAgIC8vIGVjaG8KKyAgICAg
ICAgOSwgICAgLy8gZGlzY2FyZAorICAgICAgICAxMSwgICAvLyBzeXN0YXQKKyAgICAgICAgMTMs
ICAgLy8gZGF5dGltZQorICAgICAgICAxNSwgICAvLyBuZXRzdGF0CisgICAgICAgIDE3LCAgIC8v
IHFvdGQKKyAgICAgICAgMTksICAgLy8gY2hhcmdlbgorICAgICAgICAyMCwgICAvLyBGVFAtZGF0
YQorICAgICAgICAyMSwgICAvLyBGVFAtY29udHJvbAorICAgICAgICAyMiwgICAvLyBTU0gKKyAg
ICAgICAgMjMsICAgLy8gdGVsbmV0CisgICAgICAgIDI1LCAgIC8vIFNNVFAKKyAgICAgICAgMzcs
ICAgLy8gdGltZQorICAgICAgICA0MiwgICAvLyBuYW1lCisgICAgICAgIDQzLCAgIC8vIG5pY25h
bWUKKyAgICAgICAgNTMsICAgLy8gZG9tYWluCisgICAgICAgIDc3LCAgIC8vIHByaXYtcmpzCisg
ICAgICAgIDc5LCAgIC8vIGZpbmdlcgorICAgICAgICA4NywgICAvLyB0dHlsaW5rCisgICAgICAg
IDk1LCAgIC8vIHN1cGR1cAorICAgICAgICAxMDEsICAvLyBob3N0cmlhbWUKKyAgICAgICAgMTAy
LCAgLy8gaXNvLXRzYXAKKyAgICAgICAgMTAzLCAgLy8gZ3BwaXRucAorICAgICAgICAxMDQsICAv
LyBhY3ItbmVtYQorICAgICAgICAxMDksICAvLyBQT1AyCisgICAgICAgIDExMCwgIC8vIFBPUDMK
KyAgICAgICAgMTExLCAgLy8gc3VucnBjCisgICAgICAgIDExMywgIC8vIGF1dGgKKyAgICAgICAg
MTE1LCAgLy8gU0ZUUAorICAgICAgICAxMTcsICAvLyB1dWNwLXBhdGgKKyAgICAgICAgMTE5LCAg
Ly8gbm50cAorICAgICAgICAxMjMsICAvLyBOVFAKKyAgICAgICAgMTM1LCAgLy8gbG9jLXNydiAv
IGVwbWFwCisgICAgICAgIDEzOSwgIC8vIG5ldGJpb3MKKyAgICAgICAgMTQzLCAgLy8gSU1BUDIK
KyAgICAgICAgMTc5LCAgLy8gQkdQCisgICAgICAgIDM4OSwgIC8vIExEQVAKKyAgICAgICAgNDY1
LCAgLy8gU01UUCtTU0wKKyAgICAgICAgNTEyLCAgLy8gcHJpbnQgLyBleGVjCisgICAgICAgIDUx
MywgIC8vIGxvZ2luCisgICAgICAgIDUxNCwgIC8vIHNoZWxsCisgICAgICAgIDUxNSwgIC8vIHBy
aW50ZXIKKyAgICAgICAgNTI2LCAgLy8gdGVtcG8KKyAgICAgICAgNTMwLCAgLy8gY291cmllcgor
ICAgICAgICA1MzEsICAvLyBDaGF0CisgICAgICAgIDUzMiwgIC8vIG5ldG5ld3MKKyAgICAgICAg
NTQwLCAgLy8gVVVDUAorICAgICAgICA1NDgsICAvLyBhZnBvdmVydGNwIFtBcHBsZSBhZGRpdGlv
bl0KKyAgICAgICAgNTU2LCAgLy8gcmVtb3RlZnMKKyAgICAgICAgNTYzLCAgLy8gTk5UUCtTU0wK
KyAgICAgICAgNTg3LCAgLy8gRVNNVFAKKyAgICAgICAgNjAxLCAgLy8gc3lzbG9nLWNvbm4KKyAg
ICAgICAgNjM2LCAgLy8gTERBUCtTU0wKKyAgICAgICAgOTkzLCAgLy8gSU1BUCtTU0wKKyAgICAg
ICAgOTk1LCAgLy8gUE9QMytTU0wKKyAgICAgICAgMjA0OSwgLy8gTkZTCisgICAgICAgIDM2NTks
IC8vIGFwcGxlLXNhc2wgLyBQYXNzd29yZFNlcnZlciBbQXBwbGUgYWRkaXRpb25dCisgICAgICAg
IDQwNDUsIC8vIGxvY2tkCisgICAgICAgIDQxOTAsIC8vIE1hbmFnZVNpZXZlIFtBcHBsZSBhZGRp
dGlvbl0KKyAgICAgICAgNjAwMCwgLy8gWDExCisgICAgICAgIDY2NjUsIC8vIEFsdGVybmF0ZSBJ
UkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2NjY2LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBs
ZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2NywgLy8gU3RhbmRhcmQgSVJDIFtBcHBsZSBhZGRpdGlv
bl0KKyAgICAgICAgNjY2OCwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAg
ICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2Njc5
LCAvLyBBbHRlcm5hdGUgSVJDIFNTTCBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2OTcsIC8v
IElSQytTU0wgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICBpbnZhbGlkUG9ydE51bWJlciwgLy8g
VXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJlcnMKKyAgICB9OworCisgICAgLy8g
SWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBvcnQgbGlzdCwgYWxsb3cgaXQuCisg
ICAgQVNTRVJUKHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3Rk
OjplbmQoYmxvY2tlZFBvcnRMaXN0KSkpOworICAgIGlmICghc3RkOjpiaW5hcnlfc2VhcmNoKHN0
ZDo6YmVnaW4oYmxvY2tlZFBvcnRMaXN0KSwgc3RkOjplbmQoYmxvY2tlZFBvcnRMaXN0KSwgcG9y
dC52YWx1ZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBBbGxvdyBwb3J0cyAy
MSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxhIGRvZXMuCisgICAgaWYgKChwb3J0LnZh
bHVlKCkgPT0gMjEgfHwgcG9ydC52YWx1ZSgpID09IDIyKSAmJiB1cmwucHJvdG9jb2xJcygiZnRw
IikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gQWxsb3cgYW55IHBvcnQgbnVtYmVy
IGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJlciBpcyBpZ25vcmVkLgorICAgIGlm
ICh1cmwucHJvdG9jb2xJcygiZmlsZSIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5n
JiB1cmwpCit7CisgICAgQVNTRVJUKHByb3RvY29sSXNJbnRlcm5hbCh1cmwsICJkYXRhIikpOwor
CisgICAgLy8gRklYTUU6IFdoYXQncyB0aGUgcmlnaHQgYmVoYXZpb3Igd2hlbiB0aGUgVVJMIGhh
cyBhIGNvbW1hIGZpcnN0LCBidXQgYSBzZW1pY29sb24gbGF0ZXI/CisgICAgLy8gQ3VycmVudGx5
IHRoaXMgY29kZSB3aWxsIGJyZWFrIGF0IHRoZSBzZW1pY29sb24gaW4gdGhhdCBjYXNlLiBOb3Qg
c3VyZSB0aGF0J3MgY29ycmVjdC4KKyAgICBhdXRvIGluZGV4ID0gdXJsLmZpbmQoJzsnLCA1KTsK
KyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIGluZGV4ID0gdXJsLmZpbmQoJywn
LCA1KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRo
ZXJlIHdhcyBhbiBvbGQgY29tbWVudCBoZXJlIHRoYXQgbWFkZSBpdCBzb3VuZCBsaWtlIHRoaXMg
c2hvdWxkIGJlIHJldHVybmluZyB0ZXh0L3BsYWluLgorICAgICAgICAvLyBCdXQgd2UgaGF2ZSBi
ZWVuIHJldHVybmluZyBlbXB0eSBzdHJpbmcgaGVyZSBmb3Igc29tZSB0aW1lLCBzbyBub3QgY2hh
bmdpbmcgaXRzIGJlaGF2aW9yIGF0IHRoaXMgdGltZS4KKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CisgICAgfQorICAgIGlmIChpbmRleCA9PSA1KQorICAgICAgICByZXR1cm4gInRleHQv
cGxhaW4iX3M7CisgICAgQVNTRVJUKGluZGV4ID49IDUpOworICAgIHJldHVybiB1cmwuc3Vic3Ry
aW5nKDUsIGluZGV4IC0gNSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKK30KKworU3RyaW5n
IFVSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkgY29u
c3QKK3sKKyAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkgPD0gbGVuZ3RoKQorICAgICAgICByZXR1
cm4gc3RyaW5nKCk7CisKKyAgICByZXR1cm4gc3RyaW5nKCkubGVmdChsZW5ndGggLyAyIC0gMSkg
KyAiLi4uIiArIHN0cmluZygpLnJpZ2h0KGxlbmd0aCAvIDIgLSAyKTsKK30KKworVVJMIFVSTDo6
ZmFrZVVSTFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhcnQpCit7Cisg
ICAgcmV0dXJuIFVSTChVUkwoKSwgIndlYmtpdC1mYWtlLXVybDovLyIgKyBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkgKyAnLycgKyByZWxhdGl2ZVBhcnQpOworfQorCitVUkwgVVJMOjpmaWxl
VVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgcmV0
dXJuIFVSTChVUkwoKSwgImZpbGU6Ly8vIiArIGZpbGVQYXRoKTsKK30KKworVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVVJMJiB1cmwpCit7CisgICAgdHMgPDwg
dXJsLnN0cmluZygpOworICAgIHJldHVybiB0czsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkg
JiYgIVVTRShTT1VQKQorc3RhdGljIGJvb2wgaXNJUHY0QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmlu
ZykKK3sKKyAgICBhdXRvIGNvdW50ID0gMDsKKworICAgIGZvciAoY29uc3QgYXV0byBvY3RldCA6
IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCcuJykpIHsKKyAgICAgICAgaWYgKGNv
dW50ID49IDQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3QgYXV0
byBsZW5ndGggPSBvY3RldC5sZW5ndGgoKTsKKyAgICAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3Ro
ID4gMykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBhdXRvIHZhbHVlID0g
MDsKKyAgICAgICAgZm9yIChhdXRvIGkgPSAwdTsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICBjb25zdCBhdXRvIGRpZ2l0ID0gb2N0ZXRbaV07CisKKyAgICAgICAgICAgIC8vIFByb2hp
Yml0IGxlYWRpbmcgemVyb2VzLgorICAgICAgICAgICAgaWYgKGRpZ2l0ID4gJzknIHx8IGRpZ2l0
IDwgKCFpICYmIGxlbmd0aCA+IDEgPyAnMScgOiAnMCcpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAgICAgdmFsdWUgPSAxMCAqIHZhbHVlICsgKGRpZ2l0IC0gJzAn
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2YWx1ZSA+IDI1NSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBjb3VudCsrOworICAgIH0KKworICAgIHJldHVybiAoY291
bnQgPT0gNCk7Cit9CisKK3N0YXRpYyBib29sIGlzSVB2NkFkZHJlc3MoU3RyaW5nVmlldyBzdHJp
bmcpCit7CisgICAgZW51bSBTa2lwU3RhdGUgeyBOb25lLCBXaWxsU2tpcCwgU2tpcHBpbmcsIFNr
aXBwZWQsIEZpbmFsIH07CisgICAgYXV0byBza2lwU3RhdGUgPSBOb25lOworICAgIGF1dG8gY291
bnQgPSAwOworCisgICAgZm9yIChjb25zdCBhdXRvIGhleHRldCA6IHN0cmluZy5zcGxpdEFsbG93
aW5nRW1wdHlFbnRyaWVzKCc6JykpIHsKKyAgICAgICAgaWYgKGNvdW50ID49IDggfHwgc2tpcFN0
YXRlID09IEZpbmFsKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0
IGF1dG8gbGVuZ3RoID0gaGV4dGV0Lmxlbmd0aCgpOworICAgICAgICBpZiAoIWxlbmd0aCkgewor
ICAgICAgICAgICAgLy8gOjogbWF5IGJlIHVzZWQgYW55d2hlcmUgdG8gc2tpcCAxIHRvIDggaGV4
dGV0cywgYnV0IG9ubHkgb25jZS4KKyAgICAgICAgICAgIGlmIChza2lwU3RhdGUgPT0gU2tpcHBl
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChza2lw
U3RhdGUgPT0gTm9uZSkKKyAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSAhY291bnQgPyBXaWxs
U2tpcCA6IFNraXBwaW5nOworICAgICAgICAgICAgZWxzZSBpZiAoc2tpcFN0YXRlID09IFdpbGxT
a2lwKQorICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IFNraXBwaW5nOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHNraXBTdGF0ZSA9IEZpbmFsOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2tpcFN0YXRlID09IFdpbGxTa2lwKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChza2lwU3RhdGUgPT0gU2tp
cHBpbmcpCisgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGVkOworCisgICAgICAgIGlmIChs
ZW5ndGggPiA0KSB7CisgICAgICAgICAgICAvLyBBbiBJUHY0IGFkZHJlc3MgbWF5IGJlIHVzZWQg
aW4gcGxhY2Ugb2YgdGhlIGZpbmFsIHR3byBoZXh0ZXRzLgorICAgICAgICAgICAgaWYgKChza2lw
U3RhdGUgPT0gTm9uZSAmJiBjb3VudCAhPSA2KSB8fCAoc2tpcFN0YXRlID09IFNraXBwZWQgJiYg
Y291bnQgPj0gNikgfHwgIWlzSVB2NEFkZHJlc3MoaGV4dGV0KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHNraXBTdGF0ZSA9IEZpbmFsOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gY29kZVVu
aXQgOiBoZXh0ZXQuY29kZVVuaXRzKCkpIHsKKyAgICAgICAgICAgIC8vIElQdjYgYWxsb3dzIGxl
YWRpbmcgemVyb2VzLgorICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoY29kZVVuaXQp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGNv
dW50Kys7CisgICAgfQorCisgICAgcmV0dXJuIChjb3VudCA9PSA4ICYmIHNraXBTdGF0ZSA9PSBO
b25lKSB8fCBza2lwU3RhdGUgPT0gU2tpcHBlZCB8fCBza2lwU3RhdGUgPT0gRmluYWw7Cit9CisK
K2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQoreworICAgIGlmICho
b3N0LmZpbmQoJzonKSA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIGlzSVB2NEFkZHJlc3Mo
aG9zdCk7CisKKyAgICByZXR1cm4gaXNJUHY2QWRkcmVzcyhob3N0KTsKK30KKyNlbmRpZgorCit9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291
cmNlL1dURi93dGYvVVJMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ3M2JjNzA1NmZhMzQ1YmVkZTBhOGMyNTgx
YTgwM2RhNzViMDk5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCkBA
IC0wLDAgKzEsMzkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBVU0UoQ0Yp
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKKyNlbmRpZgorCisjaWYg
VVNFKFNPVVApCisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KKyNlbmRpZgor
CisjaWYgVVNFKEZPVU5EQVRJT04pCitPQkpDX0NMQVNTIE5TVVJMOworI2VuZGlmCisKK25hbWVz
cGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKKworY2xhc3MgVVJMVGV4dEVuY29kaW5nIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5n
KFN0cmluZ1ZpZXcpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIH5VUkxUZXh0RW5jb2RpbmcoKSB7
IH07Cit9OworCitzdHJ1Y3QgVVJMSGFzaDsKKworY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIFVS
TCB7CitwdWJsaWM6CisgICAgLy8gR2VuZXJhdGVzIGEgVVJMIHdoaWNoIGNvbnRhaW5zIGEgbnVs
bCBzdHJpbmcuCisgICAgVVJMKCkgeyBpbnZhbGlkYXRlKCk7IH0KKworICAgIGV4cGxpY2l0IFVS
TChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWUpIHsgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBzdHJpbmcoKS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisKKyAg
ICAvLyBSZXNvbHZlcyB0aGUgcmVsYXRpdmUgVVJMIHdpdGggdGhlIGdpdmVuIGJhc2UgVVJMLiBJ
ZiBwcm92aWRlZCwgdGhlCisgICAgLy8gVVJMVGV4dEVuY29kaW5nIGlzIHVzZWQgdG8gZW5jb2Rl
IG5vbi1BU0NJSSBjaGFyYWNlcnMuIFRoZSBiYXNlIFVSTCBjYW4gYmUKKyAgICAvLyBudWxsIG9y
IGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRl
ZCBhcworICAgIC8vIGFic29sdXRlLgorICAgIC8vIEZJWE1FOiBJZiB0aGUgYmFzZSBVUkwgaXMg
aW52YWxpZCwgdGhpcyBhbHdheXMgY3JlYXRlcyBhbiBpbnZhbGlkCisgICAgLy8gVVJMLiBJbnN0
ZWFkIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVyIHRvIHRyZWF0IGFsbCBpbnZhbGlkIGJhc2Ug
VVJMcworICAgIC8vIHRoZSBzYW1lIHdheSB3ZSB0cmVhdGUgbnVsbCBhbmQgZW1wdHkgYmFzZSBV
UkxzLgorICAgIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNv
bnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKKworICAgIHN0YXRpYyBVUkwgZmFrZVVS
TFdpdGhSZWxhdGl2ZVBhcnQoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFVSTCBmaWxlVVJM
V2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHN0cmlwcGVk
Rm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0OworCisgICAgLy8gRklYTUU6IFRoZSBhYm92ZSBmdW5j
dGlvbnMgc2hvdWxkIGJlIGhhcm1vbml6ZWQgc28gdGhhdCBwYXNzaW5nIGEKKyAgICAvLyBiYXNl
IG9mIG51bGwgb3IgdGhlIGVtcHR5IHN0cmluZyBnaXZlcyB0aGUgc2FtZSByZXN1bHQgYXMgdGhl
CisgICAgLy8gc3RhbmRhcmQgU3RyaW5nIGNvbnN0cnVjdG9yLgorCisgICAgLy8gTWFrZXMgYSBk
ZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5b3UgbmVlZCB0byB1c2UgYSBVUkwgb24gYW5vdGhl
cgorICAgIC8vIHRocmVhZC4gU2luY2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3Rz
IGFyZSBpbW11dGFibGUsIHRoZXJlJ3MKKyAgICAvLyBubyBvdGhlciByZWFzb24gdG8gZXZlciBw
cmVmZXIgaXNvbGF0ZWRDb3B5KCkgb3ZlciBwbGFpbiBvbGQgYXNzaWdubWVudC4KKyAgICBVUkwg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0OworICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworCisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHlvdSBjYW4gc2V0IHRoZSBob3N0IGFuZCBwb3J0IGZvciB0aGUgVVJM
LgorICAgIC8vIE5vbi1oaWVyYXJjaGljYWwgVVJMcyBkb24ndCBoYXZlIGEgaG9zdCBhbmQgcG9y
dC4KKyAgICBib29sIGNhblNldEhvc3RPclBvcnQoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNo
aWNhbCgpOyB9CisKKyAgICBib29sIGNhblNldFBhdGhuYW1lKCkgY29uc3QgeyByZXR1cm4gaXNI
aWVyYXJjaGljYWwoKTsgfQorICAgIGJvb2wgaXNIaWVyYXJjaGljYWwoKSBjb25zdDsKKworICAg
IGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKworICAg
IFN0cmluZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoID0g
MTAyNCkgY29uc3Q7CisKKyAgICBTdHJpbmdWaWV3IHByb3RvY29sKCkgY29uc3Q7CisgICAgU3Ry
aW5nVmlldyBob3N0KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgp
IGNvbnN0OworICAgIFN0cmluZyBob3N0QW5kUG9ydCgpIGNvbnN0OworICAgIFN0cmluZyBwcm90
b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7CisgICAgU3RyaW5nIHVzZXIoKSBjb25zdDsKKyAgICBT
dHJpbmcgcGFzcygpIGNvbnN0OworICAgIFN0cmluZyBwYXRoKCkgY29uc3Q7CisgICAgU3RyaW5n
IGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7CisgICAgU3RyaW5nIHF1ZXJ5KCkgY29uc3Q7Cisg
ICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworICAgIGJvb2wgaGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBib29sIGhhc1VzZXJuYW1lKCkgY29uc3Q7Cisg
ICAgYm9vbCBoYXNQYXNzd29yZCgpIGNvbnN0OworICAgIGJvb2wgaGFzUXVlcnkoKSBjb25zdDsK
KyAgICBib29sIGhhc0ZyYWdtZW50KCkgY29uc3Q7CisgICAgYm9vbCBoYXNQYXRoKCkgY29uc3Q7
CisKKyAgICAvLyBVbmxpa2UgdXNlcigpIGFuZCBwYXNzKCksIHRoZXNlIGZ1bmN0aW9ucyBkb24n
dCBkZWNvZGUgZXNjYXBlIHNlcXVlbmNlcy4KKyAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3Ig
YWNjdXJhdGUgcm91bmQtdHJpcHBpbmcsIGJlY2F1c2UgZW5jb2RpbmcgZG9lc24ndCBlbmNvZGUg
JyUnIGNoYXJhY3RlcnMuCisgICAgU3RyaW5nIGVuY29kZWRVc2VyKCkgY29uc3Q7CisgICAgU3Ry
aW5nIGVuY29kZWRQYXNzKCkgY29uc3Q7CisKKyAgICBTdHJpbmcgYmFzZUFzU3RyaW5nKCkgY29u
c3Q7CisKKyAgICBTdHJpbmcgZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsKKworICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBVUkwncyBwcm90b2NvbCBpcyB0aGUgc2FtZSBhcyB0aGUg
bnVsbC0KKyAgICAvLyB0ZXJtaW5hdGVkIEFTQ0lJIGFyZ3VtZW50LiBUaGUgYXJndW1lbnQgbXVz
dCBiZSBsb3dlci1jYXNlLgorICAgIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7
CisgICAgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgcHJvdG9j
b2xJc0Jsb2IoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJibG9iIik7IH0KKyAgICBib29s
IHByb3RvY29sSXNEYXRhKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9Cisg
ICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3Q7CisgICAgYm9vbCBpc0xvY2Fs
RmlsZSgpIGNvbnN0OworICAgIGJvb2wgaXNCbGFua1VSTCgpIGNvbnN0OworICAgIGJvb2wgY2Fu
bm90QmVBQmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fubm90QmVBQmFzZVVSTDsgfQorCisg
ICAgYm9vbCBpc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYpIGNvbnN0OworCisgICAgYm9v
bCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEhvc3QoY29uc3QgU3Ry
aW5nJik7CisKKyAgICB2b2lkIHJlbW92ZVBvcnQoKTsKKyAgICB2b2lkIHNldFBvcnQodW5zaWdu
ZWQgc2hvcnQpOworCisgICAgLy8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206
ODAwMCIuCisgICAgdm9pZCBzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKKworICAgIHZv
aWQgc2V0VXNlcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5n
Jik7CisKKyAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBT
IFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aAorICAgIC8vIHdpbGwgYmUgIi8iLgorICAgIHZvaWQg
c2V0UGF0aChjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0
aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVkCisgICAgLy8g
Zm9yIHlvdS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZl
IGEgIj8iIGluIHRoZQorICAgIC8vIFVSTCAod2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xl
YXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcuCisgICAgdm9pZCBzZXRRdWVyeShjb25z
dCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcp
OworICAgIHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisKKyAgICB2b2lkIHJlbW92
ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7CisKKyAgICBzdGF0aWMgYm9vbCBob3N0SXNJ
UEFkZHJlc3MoU3RyaW5nVmlldyk7CisKKyAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25zdDsK
KyAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7CisgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFz
dFNsYXNoKCkgY29uc3Q7CisKKyAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyBy
ZXR1cm4gc3RyaW5nKCk7IH0KKworI2lmIFVTRShDRikKKyAgICBVUkwoQ0ZVUkxSZWYpOworICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBjb25zdDsKKyNlbmRpZgorCisjaWYg
VVNFKFNPVVApCisgICAgVVJMKFNvdXBVUkkqKTsKKyAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IGNy
ZWF0ZVNvdXBVUkkoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAg
VVJMKE5TVVJMKik7CisgICAgb3BlcmF0b3IgTlNVUkwqKCkgY29uc3Q7CisjZW5kaWYKKyNpZmRl
ZiBfX09CSkNfXworICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIHN0cmlu
ZygpOyB9CisjZW5kaWYKKworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIHByaW50KCkgY29uc3Q7
CisjZW5kaWYKKworICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiwgVVJMJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgVVJMUGFyc2VyOworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIHN0YXRp
YyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOworICAgIHZvaWQg
Y29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0OworICAgIHVuc2ln
bmVkIGhvc3RTdGFydCgpIGNvbnN0OworCisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJM
Jik7CisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKyAgICBmcmllbmQgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKwor
ICAgIFN0cmluZyBtX3N0cmluZzsKKworICAgIHVuc2lnbmVkIG1faXNWYWxpZCA6IDE7CisgICAg
dW5zaWduZWQgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKKyAgICB1bnNpZ25lZCBtX2Nh
bm5vdEJlQUJhc2VVUkwgOiAxOworCisgICAgLy8gVGhpcyBpcyBvdXQgb2Ygb3JkZXIgdG8gYWxp
Z24gdGhlIGJpdHMgYmV0dGVyLiBUaGUgcG9ydCBpcyBhZnRlciB0aGUgaG9zdC4KKyAgICB1bnNp
Z25lZCBtX3BvcnRMZW5ndGggOiAzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4
UG9ydExlbmd0aCA9ICgxIDw8IDMpIC0gMTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbWF4U2NoZW1lTGVuZ3RoID0gKDEgPDwgMjYpIC0gMTsKKyAgICB1bnNpZ25lZCBtX3NjaGVt
ZUVuZCA6IDI2OworICAgIHVuc2lnbmVkIG1fdXNlclN0YXJ0OworICAgIHVuc2lnbmVkIG1fdXNl
ckVuZDsKKyAgICB1bnNpZ25lZCBtX3Bhc3N3b3JkRW5kOworICAgIHVuc2lnbmVkIG1faG9zdEVu
ZDsKKyAgICB1bnNpZ25lZCBtX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICB1bnNpZ25lZCBtX3Bh
dGhFbmQ7CisgICAgdW5zaWduZWQgbV9xdWVyeUVuZDsKK307CisKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6ZW9mKHVuc2lnbmVkKSwgIlVSTCBz
aG91bGQgc3RheSBzbWFsbCIpOworCit0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgVVJM
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc3Ry
aW5nOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgVVJMOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCit7CisgICAgYXV0byBvcHRpb25hbFVSTCA9IFVSTDo6
ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghb3B0aW9uYWxVUkwpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVSTCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgU3RyaW5nIHN0cmluZzsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHN0cmluZykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIFVSTChVUkwoKSwgc3RyaW5nKTsKK30KKworV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwm
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9j
b2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKwor
V1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYmxhbmtVUkwoKTsKKworLy8gRnVuY3Rpb25z
IHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCisvLyBUaGVzZSBhcmUgb3BlcmF0aW9u
cyB0aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJMLgorLy8gVGhlc2UgYXJlIGFsc28g
ZGlmZmVyZW50IGZyb20gdGhlIFVSTCBmdW5jdGlvbnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVp
cmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJzYWJsZSBVUkwuCisvLyBUaGlzIGlz
IGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1c2UgdmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBu
b3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxpZCBieSBVUkwuCisKK1dURl9FWFBPUlRfUFJJ
VkFURSBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3Rv
Y29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0
IFN0cmluZyYgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2Ny
aXB0KFN0cmluZ1ZpZXcgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHBy
b3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYpOyAvLyBCbGFja2xpc3QgcG9ydHMgdGhhdCBz
aG91bGQgbmV2ZXIgYmUgdXNlZCBmb3IgV2ViIHJlc291cmNlcy4KKworV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZf
dCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKTsKKworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNWYWxpZFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworCitXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwp
OworCisvLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3NlLCBkaWZmZXJl
bnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRoZSBVUkwgU3Rh
bmRhcmQuCitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1
ZW5jZXMoY29uc3QgU3RyaW5nJik7CisKKy8vIElubGluZXMuCisKK2lubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5n
KCkgPT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwm
IGEsIGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQor
eworICAgIHJldHVybiBhID09IGIuc3RyaW5nKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5nKCkg
IT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEs
IGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiOworfQorCitp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQorewor
ICAgIHJldHVybiBhICE9IGIuc3RyaW5nKCk7Cit9CisKKy8vIElubGluZSB2ZXJzaW9ucyBvZiBz
b21lIG5vbi1Hb29nbGVVUkwgZnVuY3Rpb25zIHNvIHdlIGNhbiBnZXQgaW5saW5pbmcKKy8vIHdp
dGhvdXQgaGF2aW5nIHRvIGhhdmUgYSBsb3Qgb2YgdWdseSBpZmRlZnMgaW4gdGhlIGNsYXNzIGRl
ZmluaXRpb24uCisKK2lubGluZSBib29sIFVSTDo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zdHJpbmcuaXNOdWxsKCk7Cit9CisKK2lubGluZSBib29sIFVSTDo6aXNFbXB0eSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5saW5lIGJvb2wg
VVJMOjppc1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkOworfQorCitpbmxp
bmUgYm9vbCBVUkw6Omhhc1BhdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhdGhFbmQgIT0g
bV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc1VzZXJu
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VyRW5kID4gbV91c2VyU3RhcnQ7Cit9CisK
K2lubGluZSBib29sIFVSTDo6aGFzUGFzc3dvcmQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Bh
c3N3b3JkRW5kID4gKG1fdXNlckVuZCArIDEpOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc1F1
ZXJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9xdWVyeUVuZCA+IG1fcGF0aEVuZDsKK30KKwor
aW5saW5lIGJvb2wgVVJMOjpoYXNGcmFnbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNW
YWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlFbmQ7Cit9CisKK2lubGluZSBib29s
IFVSTDo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJv
dG9jb2xJc0luSFRUUEZhbWlseTsKK30KKworaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aFN0YXJ0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworfQorCitp
bmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoRW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXRo
RW5kOworfQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25z
dAoreworICAgIHJldHVybiBtX3BhdGhBZnRlckxhc3RTbGFzaDsKK30KKworV1RGX0VYUE9SVF9Q
UklWQVRFIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25z
dCBVUkwmKTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJMPjsKK3RlbXBsYXRl
PD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPjsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDAyZmEzZGNjZjY2MTAwZmM4NTA4NjZlYzM1NDdhM2E4NmRmOWJlMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhhc2guaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
VVJMSGFzaF9oCisjZGVmaW5lIFVSTEhhc2hfaAorCisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBVUkxIYXNoIHsKKyAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBrZXku
c3RyaW5nKCkuaW1wbCgpLT5oYXNoKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5n
SGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7CisgICAgfQorCisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisK
Ky8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nCit0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxVUkw+IHsKKyAgICB1c2luZyBIYXNoID0gVVJMSGFzaDsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxVUkw+IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVUkxIYXNoX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9VUkxQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwOWQ0YjgxZjk4MjMzYWQ0YTk5Njk1YjNlOWRh
MzRjYjFjZTZjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIu
Y3BwCkBAIC0wLDAgKzEsMjkyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KKworI2luY2x1ZGUgPGFycmF5PgorI2lu
Y2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KKyNpbmNsdWRlIDx1bmlj
b2RlL3V0ZjguaD4KKyNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworI2RlZmluZSBVUkxfUEFSU0VSX0RFQlVHR0lORyAwCisKKyNpZiBVUkxfUEFSU0VSX0RF
QlVHR0lORworI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pIFdURkxvZ0Fsd2F5cyhfX1ZBX0FS
R1NfXykKKyNlbHNlCisjZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4uLikKKyNlbmRpZgorICAgIAor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2NsYXNzIENvZGVQb2ludEl0ZXJhdG9y
IHsKK3B1YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yKCkgeyB9Cisg
ICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBi
ZWdpbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQorICAgICAgICA6IG1fYmVnaW4oYmVnaW4p
CisgICAgICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lO
TElORSBDb2RlUG9pbnRJdGVyYXRvcihjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgYmVnaW4sIGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yJiBlbmQpCisgICAgICAgIDogQ29kZVBvaW50SXRlcmF0b3Io
YmVnaW4ubV9iZWdpbiwgZW5kLm1fYmVnaW4pCisgICAgeworICAgICAgICBBU1NFUlQoZW5kLm1f
YmVnaW4gPj0gYmVnaW4ubV9iZWdpbik7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUg
VUNoYXIzMiBvcGVyYXRvciooKSBjb25zdDsKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0
ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luCisgICAgICAgICAgICAmJiBtX2VuZCA9PSBv
dGhlci5tX2VuZDsKKyAgICB9CisgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yIT0oY29u
c3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3ImIG9wZXJh
dG9yPShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpCisgICAgeworICAgICAgICBtX2Jl
Z2luID0gb3RoZXIubV9iZWdpbjsKKyAgICAgICAgbV9lbmQgPSBvdGhlci5tX2VuZDsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBhdEVuZCgp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA8PSBtX2VuZCk7CisgICAgICAg
IHJldHVybiBtX2JlZ2luID49IG1fZW5kOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5F
IHNpemVfdCBjb2RlVW5pdHNTaW5jZShjb25zdCBDaGFyYWN0ZXJUeXBlKiByZWZlcmVuY2UpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA+PSByZWZlcmVuY2UpOworICAgICAg
ICByZXR1cm4gbV9iZWdpbiAtIHJlZmVyZW5jZTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHNpemVfdCBjb2RlVW5pdHNTaW5jZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gY29kZVVuaXRzU2luY2Uob3RoZXIubV9iZWdpbik7
CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2JlZ2lu
IHsgbnVsbHB0ciB9OworICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIG1fZW5kIHsgbnVsbHB0ciB9
OworfTsKKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBVQ2hhcjMyIENvZGVQb2ludEl0ZXJh
dG9yPExDaGFyPjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWF0RW5kKCkpOwor
ICAgIHJldHVybiAqbV9iZWdpbjsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBhdXRv
IENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJh
dG9yJgoreworICAgIG1fYmVnaW4rKzsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRl
PD4KK0FMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj46Om9wZXJh
dG9yKigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBVQ2hhcjMyIGM7Cisg
ICAgVTE2X0dFVChtX2JlZ2luLCAwLCAwLCBtX2VuZCAtIG1fYmVnaW4sIGMpOworICAgIHJldHVy
biBjOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIGF1dG8gQ29kZVBvaW50SXRlcmF0
b3I8VUNoYXI+OjpvcGVyYXRvcisrKCkgLT4gQ29kZVBvaW50SXRlcmF0b3ImCit7CisgICAgdW5z
aWduZWQgaSA9IDA7CisgICAgc2l6ZV90IGxlbmd0aCA9IG1fZW5kIC0gbV9iZWdpbjsKKyAgICBV
MTZfRldEXzEobV9iZWdpbiwgaSwgbGVuZ3RoKTsKKyAgICBtX2JlZ2luICs9IGk7CisgICAgcmV0
dXJuICp0aGlzOworfQorICAgIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBhcHBlbmRDb2Rl
UG9pbnQoVmVjdG9yPFVDaGFyPiYgZGVzdGluYXRpb24sIFVDaGFyMzIgY29kZVBvaW50KQorewor
ICAgIGlmIChVX0lTX0JNUChjb2RlUG9pbnQpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLmFwcGVu
ZChzdGF0aWNfY2FzdDxVQ2hhcj4oY29kZVBvaW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgZGVzdGluYXRpb24ucmVzZXJ2ZUNhcGFjaXR5KGRlc3RpbmF0aW9uLnNpemUoKSArIDIp
OworICAgIGRlc3RpbmF0aW9uLnVuY2hlY2tlZEFwcGVuZChVMTZfTEVBRChjb2RlUG9pbnQpKTsK
KyAgICBkZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X1RSQUlMKGNvZGVQb2ludCkpOwor
fQorCitlbnVtIFVSTENoYXJhY3RlckNsYXNzIHsKKyAgICBVc2VySW5mbyA9IDB4MSwKKyAgICBE
ZWZhdWx0ID0gMHgyLAorICAgIEZvcmJpZGRlbkhvc3QgPSAweDQsCisgICAgUXVlcnlQZXJjZW50
ID0gMHg4LAorICAgIFNsYXNoUXVlc3Rpb25Pckhhc2ggPSAweDEwLAorICAgIFZhbGlkU2NoZW1l
ID0gMHgyMCwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGNoYXJhY3RlckNsYXNzVGFibGVb
MjU2XSA9IHsKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAweDAKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgyCisgICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDMKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFF1ZXJ5UGVyY2VudCwgLy8gMHg1CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
NworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg4CisgICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHg5Cisg
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8g
MHhBCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEIKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4QworICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4RAorICAgIFVzZXJJ
bmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhFCisgICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQsIC8vIDB4MTAKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQs
IC8vIDB4MTEKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTIK
KyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTMKKyAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTQKKyAgICBVc2VySW5mbyB8IERl
ZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTUKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQsIC8vIDB4MTYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4MTcKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
MTgKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTkKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUEKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUIKKyAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQsIC8vIDB4MUMKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQsIC8vIDB4MUQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MUUKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUYKKyAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAn
ICcKKyAgICAwLCAvLyAnIScKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQs
IC8vICciJworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IFNsYXNoUXVl
c3Rpb25Pckhhc2ggfCBGb3JiaWRkZW5Ib3N0LCAvLyAnIycKKyAgICAwLCAvLyAnJCcKKyAgICBG
b3JiaWRkZW5Ib3N0LCAvLyAnJScKKyAgICAwLCAvLyAnJicKKyAgICAwLCAvLyAnXCcnCisgICAg
MCwgLy8gJygnCisgICAgMCwgLy8gJyknCisgICAgMCwgLy8gJyonCisgICAgVmFsaWRTY2hlbWUs
IC8vICcrJworICAgIDAsIC8vICcsJworICAgIFZhbGlkU2NoZW1lLCAvLyAnLScKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJy4nCisgICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9y
YmlkZGVuSG9zdCwgLy8gJy8nCisgICAgVmFsaWRTY2hlbWUsIC8vICcwJworICAgIFZhbGlkU2No
ZW1lLCAvLyAnMScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzInCisgICAgVmFsaWRTY2hlbWUsIC8v
ICczJworICAgIFZhbGlkU2NoZW1lLCAvLyAnNCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzUnCisg
ICAgVmFsaWRTY2hlbWUsIC8vICc2JworICAgIFZhbGlkU2NoZW1lLCAvLyAnNycKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJzgnCisgICAgVmFsaWRTY2hlbWUsIC8vICc5JworICAgIFVzZXJJbmZvIHwg
Rm9yYmlkZGVuSG9zdCwgLy8gJzonCisgICAgVXNlckluZm8sIC8vICc7JworICAgIFVzZXJJbmZv
IHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vICc8JworICAgIFVz
ZXJJbmZvLCAvLyAnPScKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBG
b3JiaWRkZW5Ib3N0LCAvLyAnPicKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBTbGFzaFF1ZXN0
aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJz8nCisgICAgVXNlckluZm8gfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAnQCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0EnCisgICAgVmFsaWRTY2hlbWUs
IC8vICdCJworICAgIFZhbGlkU2NoZW1lLCAvLyAnQycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0Qn
CisgICAgVmFsaWRTY2hlbWUsIC8vICdFJworICAgIFZhbGlkU2NoZW1lLCAvLyAnRicKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJ0cnCisgICAgVmFsaWRTY2hlbWUsIC8vICdIJworICAgIFZhbGlkU2No
ZW1lLCAvLyAnSScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0onCisgICAgVmFsaWRTY2hlbWUsIC8v
ICdLJworICAgIFZhbGlkU2NoZW1lLCAvLyAnTCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ00nCisg
ICAgVmFsaWRTY2hlbWUsIC8vICdOJworICAgIFZhbGlkU2NoZW1lLCAvLyAnTycKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJ1AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdRJworICAgIFZhbGlkU2NoZW1l
LCAvLyAnUicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdU
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnVScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1YnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdXJworICAgIFZhbGlkU2NoZW1lLCAvLyAnWCcKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ1knCisgICAgVmFsaWRTY2hlbWUsIC8vICdaJworICAgIFVzZXJJbmZvIHwgRm9y
YmlkZGVuSG9zdCwgLy8gJ1snCisgICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwg
Rm9yYmlkZGVuSG9zdCwgLy8gJ1xcJworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8g
J10nCisgICAgVXNlckluZm8sIC8vICdeJworICAgIDAsIC8vICdfJworICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCwgLy8gJ2AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdhJworICAgIFZhbGlkU2NoZW1l
LCAvLyAnYicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdk
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnZScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2YnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdnJworICAgIFZhbGlkU2NoZW1lLCAvLyAnaCcKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ2knCisgICAgVmFsaWRTY2hlbWUsIC8vICdqJworICAgIFZhbGlkU2NoZW1lLCAv
LyAnaycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2wnCisgICAgVmFsaWRTY2hlbWUsIC8vICdtJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnbicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ28nCisgICAgVmFs
aWRTY2hlbWUsIC8vICdwJworICAgIFZhbGlkU2NoZW1lLCAvLyAncScKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJ3InCisgICAgVmFsaWRTY2hlbWUsIC8vICdzJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
dCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3UnCisgICAgVmFsaWRTY2hlbWUsIC8vICd2JworICAg
IFZhbGlkU2NoZW1lLCAvLyAndycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3gnCisgICAgVmFsaWRT
Y2hlbWUsIC8vICd5JworICAgIFZhbGlkU2NoZW1lLCAvLyAneicKKyAgICBVc2VySW5mbyB8IERl
ZmF1bHQsIC8vICd7JworICAgIFVzZXJJbmZvLCAvLyAnfCcKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQsIC8vICd9JworICAgIDAsIC8vICd+JworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg3RgorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg4MAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MQorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg4MgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MworICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg4NAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg4NgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NworICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg4OAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4OQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg4QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg4QworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4
RQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MAor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MgorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg5MworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg5NQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg5NworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5OAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg5OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg5QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QworICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg5RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg5RgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhB
MQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMwor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhBNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNworICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhBOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBOQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhBQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBQgorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhBQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRAorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhBRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhCMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhCMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhC
NAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCOAorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhCOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQQorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhCQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQworICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhCRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCRQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhCRgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMAorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhDMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhDMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhDNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhD
NworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDOQor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQgorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhDQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhDRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhEMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhEMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMworICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhENAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhENgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENworICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhEOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhE
QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQwor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhERgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhFMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhFMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhFNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhFNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFOAorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhFOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhFQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhF
RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhGMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMworICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhGNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhGNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNworICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhGOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGOQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhGQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhGQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhGRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRgorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0MwQ29udHJvbChDaGFy
YWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MUY7IH0KK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXND
MENvbnRyb2xPclNwYWNlKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0
ZXIgPD0gMHgyMDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc1RhYk9yTmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rlcikg
eyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4RCAmJiBjaGFyYWN0ZXIgPj0gMHg5ICYmIGNoYXJhY3Rl
ciAhPSAweEIgJiYgY2hhcmFjdGVyICE9IDB4QzsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luU2ltcGxlRW5jb2RlU2V0KENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGlzQzBD
b250cm9sKGNoYXJhY3Rlcik7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJbkRlZmF1bHRFbmNvZGVTZXQoQ2hhcmFjdGVyVHlw
ZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xhc3NU
YWJsZVtjaGFyYWN0ZXJdICYgRGVmYXVsdDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoQ2hh
cmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFj
dGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgVXNlckluZm87IH0KK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNQZXJjZW50T3JOb25B
U0NJSShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gIWlzQVNDSUkoY2hhcmFjdGVy
KSB8fCBjaGFyYWN0ZXIgPT0gJyUnOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzU2xhc2hRdWVzdGlvbk9ySGFzaChDaGFyYWN0
ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICdcXCcgJiYgY2hhcmFjdGVy
Q2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgU2xhc2hRdWVzdGlvbk9ySGFzaDsgfQordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1ZhbGlk
U2NoZW1lQ2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0
ZXIgPD0gJ3onICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFZhbGlkU2NoZW1l
OyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludChDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rlcikg
eyByZXR1cm4gY2hhcmFjdGVyIDw9ICddJyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rl
cl0gJiBGb3JiaWRkZW5Ib3N0OyB9CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIHNob3VsZFBl
cmNlbnRFbmNvZGVRdWVyeUJ5dGUodWludDhfdCBieXRlLCBjb25zdCBib29sJiB1cmxJc1NwZWNp
YWwpCit7CisgICAgaWYgKGNoYXJhY3RlckNsYXNzVGFibGVbYnl0ZV0gJiBRdWVyeVBlcmNlbnQp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChieXRlID09ICdcJycgJiYgdXJsSXNTcGVj
aWFsKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
VVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIgYykKK3sKKyAgICByZXR1cm4g
V1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQoYyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGUsIFVSTFBhcnNlcjo6UmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRh
eFZpb2xhdGlvbj4KK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFkdmFuY2UoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikK
K3sKKyAgICArK2l0ZXJhdG9yOworICAgIHdoaWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQo
KSAmJiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICBpZiAocmVwb3J0U3lu
dGF4VmlvbGF0aW9uID09IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6WWVzKQorICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAg
ICAgICArK2l0ZXJhdG9yOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KK2Jvb2wgVVJMUGFyc2VyOjp0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUs
IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICBpZiAoaXRlcmF0b3Iu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgIHJldHVybiBpdGVy
YXRvci5hdEVuZCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxX
QVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkgfHwgIWlzQVNDSUlBbHBoYSgqaXRlcmF0b3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihp
dGVyYXRvcik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKFVOTElLRUxZKCppdGVyYXRvciA9PSAnfCcpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFwcGVu
ZFRvQVNDSUlCdWZmZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgQVNTRVJUKGlzQVNDSUko
Y29kZVBvaW50KSk7CisgICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkK
KyAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY29kZVBvaW50KTsKK30KKworQUxXQVlTX0lO
TElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBjaGFyKiBjaGFy
YWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRh
eFZpb2xhdGlvbikpCisgICAgICAgIG1fYXNjaWlCdWZmZXIuYXBwZW5kKGNoYXJhY3RlcnMsIGxl
bmd0aCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBh
cnNlcjo6YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoaXRl
cmF0b3IpKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCppdGVyYXRvcik7CisgICAgYWR2YW5j
ZShpdGVyYXRvcik7CisgICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKKyAgICBBU1NFUlQo
Kml0ZXJhdG9yID09ICc6JyB8fCAqaXRlcmF0b3IgPT0gJ3wnKTsKKyAgICBpZiAoKml0ZXJhdG9y
ID09ICd8JykKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgYWR2YW5jZShpdGVyYXRvcik7Cit9CisKK2Jvb2wgVVJM
UGFyc2VyOjpjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmIGJhc2UpCit7Cisg
ICAgaWYgKGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggPCBiYXNlLm1fc3RyaW5nLmxlbmd0
aCgpKTsKKyAgICAgICAgaWYgKGJhc2UubV9zdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgICAg
IGNvbnN0IExDaGFyKiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczgoKTsKKyAgICAg
ICAgICAgIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQg
KyBiYXNlLm1fcG9ydExlbmd0aCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7
CisgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAg
ICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25z
dCBVQ2hhciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICAg
ICAgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJh
c2UubV9wb3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgeworICAgICAgICAgICAgICAg
IGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6c2hv
dWxkQ29weUZpbGVVUkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3Ip
Cit7CisgICAgaWYgKCFpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgYWR2YW5jZShpdGVyYXRvcik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGFkdmFuY2UoaXRlcmF0b3IpOworICAgIGlmIChpdGVy
YXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gIWlzU2xhc2hR
dWVzdGlvbk9ySGFzaCgqaXRlcmF0b3IpOworfQorCitzdGF0aWMgdm9pZCBwZXJjZW50RW5jb2Rl
Qnl0ZSh1aW50OF90IGJ5dGUsIFZlY3RvcjxMQ2hhcj4mIGJ1ZmZlcikKK3sKKyAgICBidWZmZXIu
YXBwZW5kKCclJyk7CisgICAgYnVmZmVyLmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdp
dChieXRlKSk7CisgICAgYnVmZmVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChi
eXRlKSk7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90IGJ5
dGUpCit7CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCclJyk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih1cHBlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChieXRlKSk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJs
ZVRvQVNDSUlIZXhEaWdpdChieXRlKSk7Cit9CisKK2NvbnN0IGNoYXIgcmVwbGFjZW1lbnRDaGFy
YWN0ZXJVVEY4UGVyY2VudEVuY29kZWRbMTBdID0gIiVFRiVCRiVCRCI7Citjb25zdCBzaXplX3Qg
cmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGggPSBzaXplb2YocmVw
bGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQpIC0gMTsKKwordGVtcGxhdGU8Ym9v
bCgqaXNJbkNvZGVTZXQpKFVDaGFyMzIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlT
X0lOTElORSB2b2lkIFVSTFBhcnNlcjo6dXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIEFTU0VSVCghaXRlcmF0
b3IuYXRFbmQoKSk7CisgICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRlcmF0b3I7CisgICAgaWYg
KExJS0VMWShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc0lu
Q29kZVNldChjb2RlUG9pbnQpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yKTsKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNJbkNvZGVTZXQo
Y29kZVBvaW50KSwgImlzSW5Db2RlU2V0IHNob3VsZCBhbHdheXMgcmV0dXJuIHRydWUgZm9yIG5v
bi1BU0NJSSBjaGFyYWN0ZXJzIik7CisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAg
ICAKKyAgICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKGNvZGVQb2ludCkpIHsKKyAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCwg
cmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwor
ICAgIGludDMyX3Qgb2Zmc2V0ID0gMDsKKyAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zm
c2V0LCBjb2RlUG9pbnQpOworICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytp
KQorICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShidWZmZXJbaV0pOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6dXRm
OFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVy
YXRvcikKK3sKKyAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOworICAgIFVDaGFyMzIgY29k
ZVBvaW50ID0gKml0ZXJhdG9yOworICAgIGlmIChMSUtFTFkoaXNBU0NJSShjb2RlUG9pbnQpKSkg
eworICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShjb2Rl
UG9pbnQsIG1fdXJsSXNTcGVjaWFsKSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihp
dGVyYXRvcik7CisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShjb2RlUG9pbnQpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29kZVBvaW50KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0
b3IpOworICAgIAorICAgIGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgeworICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRF
bmNvZGVkLCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RI
XTsKKyAgICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAgVThfQVBQRU5EX1VOU0FGRShidWZmZXIs
IG9mZnNldCwgY29kZVBvaW50KTsKKyAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBvZmZzZXQ7
ICsraSkgeworICAgICAgICBhdXRvIGJ5dGUgPSBidWZmZXJbaV07CisgICAgICAgIGlmIChzaG91
bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkKKyAgICAgICAg
ICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKGJ5dGUpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjplbmNvZGVOb25VVEY4UXVlcnkoY29uc3Qg
VmVjdG9yPFVDaGFyPiYgc291cmNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBhdXRvIGVu
Y29kZWQgPSBlbmNvZGluZy5lbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcoc291cmNlLmRh
dGEoKSwgc291cmNlLnNpemUoKSkpOworICAgIGF1dG8qIGRhdGEgPSBlbmNvZGVkLmRhdGEoKTsK
KyAgICBzaXplX3QgbGVuZ3RoID0gZW5jb2RlZC5zaXplKCk7CisgICAgCisgICAgaWYgKCFsZW5n
dGggPT0gIWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzaXplX3QgaSA9IDA7Cisg
ICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0
RW5kKCkpOworICAgICAgICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOworICAgICAgICBpZiAoVU5M
SUtFTFkoYnl0ZSAhPSAqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
aXRlcmF0b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVO
TElLRUxZKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwp
KSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYnl0ZSk7Cisg
ICAgICAgICsraXRlcmF0b3I7CisgICAgfQorICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSAm
JiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKQorICAgICAgICArK2l0ZXJhdG9yOworICAgIEFT
U0VSVCgoaSA9PSBsZW5ndGgpID09IGl0ZXJhdG9yLmF0RW5kKCkpOworICAgIGZvciAoOyBpIDwg
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsK
KyAgICAgICAgdWludDhfdCBieXRlID0gZGF0YVtpXTsKKyAgICAgICAgaWYgKHNob3VsZFBlcmNl
bnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQorICAgICAgICAgICAgcGVy
Y2VudEVuY29kZUJ5dGUoYnl0ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoYnl0ZSk7CisgICAgfQorfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBV
UkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCit7Cisg
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGZ0cFBvcnQgPSAyMTsKKyAgICBzdGF0aWMgY29uc3Qg
dWludDE2X3QgZ29waGVyUG9ydCA9IDcwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBodHRw
UG9ydCA9IDgwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBodHRwc1BvcnQgPSA0NDM7Cisg
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IHdzUG9ydCA9IDgwOworICAgIHN0YXRpYyBjb25zdCB1
aW50MTZfdCB3c3NQb3J0ID0gNDQzOworICAgIAorICAgIGF1dG8gbGVuZ3RoID0gc2NoZW1lLmxl
bmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7CisgICAgY2FzZSAndyc6CisgICAgICAgIHN3aXRjaCAo
bGVuZ3RoKSB7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0g
J3MnKQorICAgICAgICAgICAgICAgIHJldHVybiB3c1BvcnQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFd
ID09ICdzJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHdzc1BvcnQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgY2FzZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgNDoK
KyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2No
ZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGh0dHBQb3J0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcK
KyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYg
c2NoZW1lWzNdID09ICdwJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAncycpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGh0dHBzUG9ydDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICB9CisgICAgY2FzZSAnZyc6CisgICAgICAgIGlmIChsZW5ndGggPT0gNgor
ICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJworICAgICAgICAgICAgJiYgc2NoZW1lWzJd
ID09ICdwJworICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJworICAgICAgICAgICAgJiYg
c2NoZW1lWzRdID09ICdlJworICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKKyAgICAg
ICAgICAgIHJldHVybiBnb3BoZXJQb3J0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIGNhc2UgJ2YnOgorICAgICAgICBpZiAobGVuZ3RoID09IDMKKyAgICAgICAgICAgICYmIHNj
aGVtZVsxXSA9PSAndCcKKyAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcpCisgICAgICAg
ICAgICByZXR1cm4gZnRwUG9ydDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KK30KKworZW51bSBj
bGFzcyBTY2hlbWUgeworICAgIFdTLAorICAgIFdTUywKKyAgICBGaWxlLAorICAgIEZUUCwKKyAg
ICBHb3BoZXIsCisgICAgSFRUUCwKKyAgICBIVFRQUywKKyAgICBOb25TcGVjaWFsCit9OworCitB
TFdBWVNfSU5MSU5FIHN0YXRpYyBTY2hlbWUgc2NoZW1lKFN0cmluZ1ZpZXcgc2NoZW1lKQorewor
ICAgIGF1dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAg
ICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7
CisgICAgY2FzZSAnZic6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2Ug
MzoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYg
c2NoZW1lWzJdID09ICdwJykKKyAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpGVFA7Cisg
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICBjYXNlIDQ6Cisg
ICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdpJworICAgICAgICAgICAgICAgICYmIHNjaGVt
ZVsyXSA9PSAnbCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2UnKQorICAgICAg
ICAgICAgICAgIHJldHVybiBTY2hlbWU6OkZpbGU7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1l
OjpOb25TcGVjaWFsOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFNjaGVt
ZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgfQorICAgIGNhc2UgJ2cnOgorICAgICAgICBpZiAobGVu
Z3RoID09IDYKKyAgICAgICAgICAgICYmIHNjaGVtZVsxXSA9PSAnbycKKyAgICAgICAgICAgICYm
IHNjaGVtZVsyXSA9PSAncCcKKyAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnaCcKKyAgICAg
ICAgICAgICYmIHNjaGVtZVs0XSA9PSAnZScKKyAgICAgICAgICAgICYmIHNjaGVtZVs1XSA9PSAn
cicpCisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpHb3BoZXI7CisgICAgICAgIHJldHVybiBT
Y2hlbWU6Ok5vblNwZWNpYWw7CisgICAgY2FzZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3Ro
KSB7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisg
ICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNj
aGVtZVszXSA9PSAncCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRUUDsKKyAg
ICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGNhc2UgNToKKyAg
ICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcKKyAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hl
bWU6OkhUVFBTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAg
ICAgIH0KKyAgICBjYXNlICd3JzoKKyAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAgICAgICAg
Y2FzZSAyOgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6V1M7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVj
aWFsOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJwor
ICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6V1NTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7
CisgICAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVj
aWFsOworICAgIH0KK30KKworc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6bWF5YmVD
YW5vbmljYWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVt
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWlz
QVNDSUlBbHBoYShzY2hlbWVbMF0pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzY2hlbWUubGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICBpZiAoaXNBU0NJSUFscGhhbnVtZXJpYyhzY2hlbWVbaV0pIHx8IHNjaGVtZVtpXSA9PSAnKycg
fHwgc2NoZW1lW2ldID09ICctJyB8fCBzY2hlbWVbaV0gPT0gJy4nKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJu
IHNjaGVtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworfQorCitib29sIFVSTFBhcnNlcjo6
aXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lQXJnKQoreworICAgIHJldHVybiBz
Y2hlbWUoc2NoZW1lQXJnKSAhPSBTY2hlbWU6Ok5vblNwZWNpYWw7Cit9CisKK2VudW0gY2xhc3Mg
VVJMUGFyc2VyOjpVUkxQYXJ0IHsKKyAgICBTY2hlbWVFbmQsCisgICAgVXNlclN0YXJ0LAorICAg
IFVzZXJFbmQsCisgICAgUGFzc3dvcmRFbmQsCisgICAgSG9zdEVuZCwKKyAgICBQb3J0RW5kLAor
ICAgIFBhdGhBZnRlckxhc3RTbGFzaCwKKyAgICBQYXRoRW5kLAorICAgIFF1ZXJ5RW5kLAorfTsK
Kworc2l6ZV90IFVSTFBhcnNlcjo6dXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYgdXJsLCBV
UkxQYXJ0IHBhcnQpCit7CisgICAgc3dpdGNoIChwYXJ0KSB7CisgICAgY2FzZSBVUkxQYXJ0OjpR
dWVyeUVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3F1ZXJ5RW5kOworICAgIGNhc2UgVVJMUGFy
dDo6UGF0aEVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhFbmQ7CisgICAgY2FzZSBVUkxQ
YXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6CisgICAgICAgIHJldHVybiB1cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgorICAgICAgICByZXR1cm4gdXJs
Lm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGg7CisgICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5k
OgorICAgICAgICByZXR1cm4gdXJsLm1faG9zdEVuZDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhc3N3
b3JkRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fcGFzc3dvcmRFbmQ7CisgICAgY2FzZSBVUkxQ
YXJ0OjpVc2VyRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fdXNlckVuZDsKKyAgICBjYXNlIFVS
TFBhcnQ6OlVzZXJTdGFydDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3VzZXJTdGFydDsKKyAgICBj
YXNlIFVSTFBhcnQ6OlNjaGVtZUVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3NjaGVtZUVuZDsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgVVJMUGFyc2VyOjpjb3B5QVNDSUlTdHJpbmdVbnRpbChjb25zdCBTdHJpbmcmIHN0cmluZywg
c2l6ZV90IGxlbmd0aCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGggPD0gc3RyaW5nLmxl
bmd0aCgpKTsKKyAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5n
dGgpOworICAgIGVsc2UgeworICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgVUNoYXIgYyA9IGNoYXJhY3RlcnNbaV07CisgICAgICAgICAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpc0FTQ0lJKGMpKTsKKyAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6Y29weVVSTFBhcnRz
VW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0IHBhcnQsIGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpCit7CisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKwor
ICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICBjb3B5QVNDSUlTdHJpbmdVbnRpbChiYXNl
Lm1fc3RyaW5nLCB1cmxMZW5ndGhVbnRpbFBhcnQoYmFzZSwgcGFydCkpOworICAgIHN3aXRjaCAo
cGFydCkgeworICAgIGNhc2UgVVJMUGFydDo6UXVlcnlFbmQ6CisgICAgICAgIG1fdXJsLm1fcXVl
cnlFbmQgPSBiYXNlLm1fcXVlcnlFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2Ug
VVJMUGFydDo6UGF0aEVuZDoKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gYmFzZS5tX3BhdGhF
bmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6UGF0aEFmdGVyTGFz
dFNsYXNoOgorICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJhc2UubV9wYXRo
QWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6
UG9ydEVuZDoKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gYmFzZS5tX3BvcnRMZW5ndGg7
CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6SG9zdEVuZDoKKyAgICAg
ICAgbV91cmwubV9ob3N0RW5kID0gYmFzZS5tX2hvc3RFbmQ7CisgICAgICAgIEZBTExUSFJPVUdI
OworICAgIGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6CisgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBiYXNlLm1fcGFzc3dvcmRFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNh
c2UgVVJMUGFydDo6VXNlckVuZDoKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gYmFzZS5tX3Vz
ZXJFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6VXNlclN0YXJ0
OgorICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGJhc2UubV91c2VyU3RhcnQ7CisgICAgICAg
IEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6U2NoZW1lRW5kOgorICAgICAgICBtX3Vy
bC5tX2lzVmFsaWQgPSBiYXNlLm1faXNWYWxpZDsKKyAgICAgICAgbV91cmwubV9wcm90b2NvbElz
SW5IVFRQRmFtaWx5ID0gYmFzZS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7CisgICAgICAgIG1f
dXJsLm1fc2NoZW1lRW5kID0gYmFzZS5tX3NjaGVtZUVuZDsKKyAgICB9CisgICAgc3dpdGNoIChz
Y2hlbWUoU3RyaW5nVmlldyhtX2FzY2lpQnVmZmVyLmRhdGEoKSwgbV91cmwubV9zY2hlbWVFbmQp
KSkgeworICAgIGNhc2UgU2NoZW1lOjpXUzoKKyAgICBjYXNlIFNjaGVtZTo6V1NTOgorICAgICAg
ICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgIG1fdXJsSXNTcGVjaWFs
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1lOjpGaWxlOgorICAgICAg
ICBtX3VybElzRmlsZSA9IHRydWU7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgU2No
ZW1lOjpGVFA6CisgICAgY2FzZSBTY2hlbWU6OkdvcGhlcjoKKyAgICBjYXNlIFNjaGVtZTo6SFRU
UDoKKyAgICBjYXNlIFNjaGVtZTo6SFRUUFM6CisgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgorICAgICAg
ICBtX3VybElzU3BlY2lhbCA9IGZhbHNlOworICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9
IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyIGRvdEFTQ0lJQ29kZVsyXSA9IHsnMicsICdlJ307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wg
VVJMUGFyc2VyOjppc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+IGMpCit7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBS
ZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICAgICAgcmV0dXJuIGMuYXRFbmQoKSB8
fCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpOworICAgIH0KKyAgICBpZiAoKmMgIT0gJyUnKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRT
eW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICBpZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFT
Q0lJQ29kZVswXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgaWYgKGMuYXRFbmQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFT
Q0lJQ29kZVsxXSkgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hR
dWVzdGlvbk9ySGFzaCgqYyk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6
OmlzRG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
YykKK3sKKyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCpjID09ICcuJykgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVu
dChjKTsKKyAgICB9CisgICAgaWYgKCpjICE9ICclJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7
CisgICAgaWYgKGMuYXRFbmQoKSB8fCAqYyAhPSBkb3RBU0NJSUNvZGVbMF0pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pIHsKKyAgICAgICAg
YWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAg
ICAgICAgcmV0dXJuIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJM
UGFyc2VyOjpjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYykp
OworICAgIGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYg
KCFjLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykK
KyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIEFTU0VSVCgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOworICAgICAgICBhZHZhbmNlKGMpOwor
ICAgICAgICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKKyAgICAgICAgYWR2YW5jZShj
KTsKKyAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKTsK
KyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAg
ICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykKKyAgICAgICAgICAgICAgICBhZHZhbmNl
KGMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVCgqYyA9PSAnPycg
fHwgKmMgPT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpjb25zdW1lRG91YmxlRG90UGF0aFNlZ21l
bnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlz
RG91YmxlRG90UGF0aFNlZ21lbnQoYykpOworICAgIGlmICgqYyA9PSAnLicpCisgICAgICAgIGFk
dmFuY2UoYyk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOworICAgICAg
ICBhZHZhbmNlKGMpOworICAgICAgICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKKyAg
ICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90
QVNDSUlDb2RlWzFdKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICB9CisgICAgY29uc3VtZVNp
bmdsZURvdFBhdGhTZWdtZW50KGMpOworfQorCitib29sIFVSTFBhcnNlcjo6c2hvdWxkUG9wUGF0
aCh1bnNpZ25lZCBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gpCit7CisgICAgQVNTRVJUKG1fZGlkU2Vl
U3ludGF4VmlvbGF0aW9uKTsKKyAgICBpZiAoIW1fdXJsSXNGaWxlKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIEFTU0VSVChtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSBtX2FzY2lp
QnVmZmVyLnNpemUoKSk7CisgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGNvbXBvbmVudFRv
UG9wKCZtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0sICZtX2FzY2lpQnVmZmVy
WzBdICsgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworICAgIGlmIChuZXdQYXRoQWZ0ZXJM
YXN0U2xhc2ggPT0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSAmJiBp
c1dpbmRvd3NEcml2ZUxldHRlcihjb21wb25lbnRUb1BvcCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBVUkxQYXJzZXI6OnBvcFBhdGgoKQorewor
ICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgaWYgKG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsg
MSkgeworICAgICAgICBhdXRvIG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoIC0gMTsKKyAgICAgICAgaWYgKG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVy
TGFzdFNsYXNoXSA9PSAnLycpCisgICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsK
KyAgICAgICAgd2hpbGUgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA+IG1fdXJsLm1faG9zdEVuZCAr
IG1fdXJsLm1fcG9ydExlbmd0aCAmJiBtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFz
aF0gIT0gJy8nKQorICAgICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07CisgICAgICAg
IG5ld1BhdGhBZnRlckxhc3RTbGFzaCsrOworICAgICAgICBpZiAoc2hvdWxkUG9wUGF0aChuZXdQ
YXRoQWZ0ZXJMYXN0U2xhc2gpKQorICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgfQorICAgIG1fYXNjaWlCdWZmZXIucmVz
aXplKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpzeW50YXhWaW9sYXRpb24oY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIGlmIChtX2Rp
ZFNlZVN5bnRheFZpb2xhdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGlkU2VlU3ludGF4
VmlvbGF0aW9uID0gdHJ1ZTsKKyAgICAKKyAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5
KCkpOworICAgIHNpemVfdCBjb2RlVW5pdHNUb0NvcHkgPSBpdGVyYXRvci5jb2RlVW5pdHNTaW5j
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IENoYXJhY3RlclR5cGUqPihtX2lucHV0QmVnaW4pKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChjb2RlVW5pdHNUb0NvcHkgPD0gbV9pbnB1dFN0cmluZy5sZW5n
dGgoKSk7CisgICAgbV9hc2NpaUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobV9pbnB1dFN0cmluZy5s
ZW5ndGgoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlVW5pdHNUb0NvcHk7ICsr
aSkgeworICAgICAgICBBU1NFUlQoaXNBU0NJSShtX2lucHV0U3RyaW5nW2ldKSk7CisgICAgICAg
IG1fYXNjaWlCdWZmZXIudW5jaGVja2VkQXBwZW5kKG1faW5wdXRTdHJpbmdbaV0pOworICAgIH0K
K30KKwordm9pZCBVUkxQYXJzZXI6OmZhaWx1cmUoKQoreworICAgIG1fdXJsLmludmFsaWRhdGUo
KTsKKyAgICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJpbmc7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6Y2hlY2tMb2NhbGhvc3RDb2Rl
UG9pbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBVQ2hhcjMy
IGNvZGVQb2ludCkKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCB0b0FTQ0lJTG93ZXIo
Kml0ZXJhdG9yKSAhPSBjb2RlUG9pbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZh
bmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K2Jvb2wgVVJMUGFyc2VyOjppc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+IGl0ZXJhdG9yKQoreworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRl
cmF0b3IsICdsJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxo
b3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2MnKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdh
JykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBv
aW50KGl0ZXJhdG9yLCAnbCcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVj
a0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2gnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdvJykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJh
dG9yLCAncycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9z
dENvZGVQb2ludChpdGVyYXRvciwgJ3QnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBpdGVyYXRvci5hdEVuZCgpOworfQorCitib29sIFVSTFBhcnNlcjo6aXNMb2NhbGhvc3Qo
U3RyaW5nVmlldyB2aWV3KQoreworICAgIGlmICh2aWV3LmlzOEJpdCgpKQorICAgICAgICByZXR1
cm4gaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4odmlldy5jaGFyYWN0ZXJz
OCgpLCB2aWV3LmNoYXJhY3RlcnM4KCkgKyB2aWV3Lmxlbmd0aCgpKSk7CisgICAgcmV0dXJuIGlz
QXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+KHZpZXcuY2hhcmFjdGVyczE2KCks
IHZpZXcuY2hhcmFjdGVyczE2KCkgKyB2aWV3Lmxlbmd0aCgpKSk7Cit9CisKK0FMV0FZU19JTkxJ
TkUgU3RyaW5nVmlldyBVUkxQYXJzZXI6OnBhcnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6
ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24p
KSB7CisgICAgICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSBtX2FzY2lpQnVmZmVyLnNpemUo
KSk7CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpICsgc3Rh
cnQsIGxlbmd0aCk7CisgICAgfQorICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSBtX2lucHV0
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX2lucHV0U3RyaW5nKS5z
dWJzdHJpbmcoc3RhcnQsIGxlbmd0aCk7Cit9CisKK0FMV0FZU19JTkxJTkUgVUNoYXIgVVJMUGFy
c2VyOjpwYXJzZWREYXRhVmlldyhzaXplX3QgcG9zaXRpb24pCit7CisgICAgaWYgKFVOTElLRUxZ
KG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAgICAgcmV0dXJuIG1fYXNjaWlCdWZmZXJb
cG9zaXRpb25dOworICAgIHJldHVybiBtX2lucHV0U3RyaW5nW3Bvc2l0aW9uXTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgc2l6ZV90IFVSTFBh
cnNlcjo6Y3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+JiBpdGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRp
b24pKQorICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlci5zaXplKCk7CisgICAgCisgICAgcmV0
dXJuIGl0ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFj
dGVyVHlwZSo+KG1faW5wdXRCZWdpbikpOworfQorCitVUkxQYXJzZXI6OlVSTFBhcnNlcihjb25z
dCBTdHJpbmcmIGlucHV0LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyog
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcpCisgICAgOiBtX2lucHV0U3RyaW5nKGlucHV0KQoreworICAg
IGlmIChpbnB1dC5pc051bGwoKSkgeworICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgIWJh
c2UubV9jYW5ub3RCZUFCYXNlVVJMKSB7CisgICAgICAgICAgICBtX3VybCA9IGJhc2U7CisgICAg
ICAgICAgICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGlucHV0LmlzOEJpdCgpKSB7CisgICAgICAg
IG1faW5wdXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnM4KCk7CisgICAgICAgIHBhcnNlKGlucHV0
LmNoYXJhY3RlcnM4KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9pbnB1dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVy
czE2KCk7CisgICAgICAgIHBhcnNlKGlucHV0LmNoYXJhY3RlcnMxNigpLCBpbnB1dC5sZW5ndGgo
KSwgYmFzZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgIH0KKworICAgIEFTU0VSVCghbV91
cmwubV9pc1ZhbGlkCisgICAgICAgIHx8IG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uID09IChtX3Vy
bC5zdHJpbmcoKSAhPSBpbnB1dCkKKyAgICAgICAgfHwgKGlucHV0LmlzQWxsU3BlY2lhbENoYXJh
Y3RlcnM8aXNDMENvbnRyb2xPclNwYWNlPigpCisgICAgICAgICAgICAmJiBtX3VybC5tX3N0cmlu
ZyA9PSBiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5kKSkpOworICAgIEFTU0VSVChp
bnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQobV91cmwpKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgaWYgKCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikgeworICAgICAgICAvLyBGb3JjZSBhIHN5
bnRheCB2aW9sYXRpb24gYXQgdGhlIGJlZ2lubmluZyB0byBtYWtlIHN1cmUgd2UgZ2V0IHRoZSBz
YW1lIHJlc3VsdC4KKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCIgIiwgaW5w
dXQpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgIFVSTCBwYXJzZWQgPSBw
YXJzZXIucmVzdWx0KCk7CisgICAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKQorICAgICAgICAg
ICAgQVNTRVJUKGFsbFZhbHVlc0VxdWFsKHBhcnNlci5yZXN1bHQoKSwgbV91cmwpKTsKKyAgICB9
CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJM
UGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBpbnB1dCwgY29uc3QgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpCit7CisgICAgVVJMX1BBUlNFUl9MT0coIlBhcnNpbmcgVVJMIDwlcz4gYmFz
ZSA8JXM+IiwgU3RyaW5nKGlucHV0LCBsZW5ndGgpLnV0ZjgoKS5kYXRhKCksIGJhc2Uuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV91cmwgPSB7IH07CisgICAgQVNTRVJUKG1fYXNjaWlC
dWZmZXIuaXNFbXB0eSgpKTsKKworICAgIFZlY3RvcjxVQ2hhcj4gcXVlcnlCdWZmZXI7CisKKyAg
ICB1bnNpZ25lZCBlbmRJbmRleCA9IGxlbmd0aDsKKyAgICB3aGlsZSAoVU5MSUtFTFkoZW5kSW5k
ZXggJiYgaXNDMENvbnRyb2xPclNwYWNlKGlucHV0W2VuZEluZGV4IC0gMV0pKSkgeworICAgICAg
ICBzeW50YXhWaW9sYXRpb24oQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaW5wdXQs
IGlucHV0KSk7CisgICAgICAgIGVuZEluZGV4LS07CisgICAgfQorICAgIENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+IGMoaW5wdXQsIGlucHV0ICsgZW5kSW5kZXgpOworICAgIENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGF1dGhvcml0eU9ySG9zdEJlZ2luOworICAgIENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IHF1ZXJ5QmVnaW47CisgICAgd2hpbGUgKFVO
TElLRUxZKCFjLmF0RW5kKCkgJiYgaXNDMENvbnRyb2xPclNwYWNlKCpjKSkpIHsKKyAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICArK2M7CisgICAgfQorICAgIGF1dG8gYmVnaW5B
ZnRlckNvbnRyb2xBbmRTcGFjZSA9IGM7CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhf
dCB7CisgICAgICAgIFNjaGVtZVN0YXJ0LAorICAgICAgICBTY2hlbWUsCisgICAgICAgIE5vU2No
ZW1lLAorICAgICAgICBTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSwKKyAgICAgICAgUGF0aE9y
QXV0aG9yaXR5LAorICAgICAgICBSZWxhdGl2ZSwKKyAgICAgICAgUmVsYXRpdmVTbGFzaCwKKyAg
ICAgICAgU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMsCisgICAgICAgIFNwZWNpYWxBdXRob3JpdHlJ
Z25vcmVTbGFzaGVzLAorICAgICAgICBBdXRob3JpdHlPckhvc3QsCisgICAgICAgIEhvc3QsCisg
ICAgICAgIEZpbGUsCisgICAgICAgIEZpbGVTbGFzaCwKKyAgICAgICAgRmlsZUhvc3QsCisgICAg
ICAgIFBhdGhTdGFydCwKKyAgICAgICAgUGF0aCwKKyAgICAgICAgQ2Fubm90QmVBQmFzZVVSTFBh
dGgsCisgICAgICAgIFVURjhRdWVyeSwKKyAgICAgICAgTm9uVVRGOFF1ZXJ5LAorICAgICAgICBG
cmFnbWVudCwKKyAgICB9OworCisjZGVmaW5lIExPR19TVEFURSh4KSBVUkxfUEFSU0VSX0xPRygi
U3RhdGUgJXMsIGNvZGUgcG9pbnQgJWMsIHBhcnNlZCBkYXRhIDwlcz4gc2l6ZSAlenUiLCB4LCAq
YywgcGFyc2VkRGF0YVZpZXcoMCwgY3VycmVudFBvc2l0aW9uKGMpKS51dGY4KCkuZGF0YSgpLCBj
dXJyZW50UG9zaXRpb24oYykpCisjZGVmaW5lIExPR19GSU5BTF9TVEFURSh4KSBVUkxfUEFSU0VS
X0xPRygiRmluYWwgU3RhdGU6ICVzIiwgeCkKKworICAgIFN0YXRlIHN0YXRlID0gU3RhdGU6OlNj
aGVtZVN0YXJ0OworICAgIHdoaWxlICghYy5hdEVuZCgpKSB7CisgICAgICAgIGlmIChVTkxJS0VM
WShpc1RhYk9yTmV3bGluZSgqYykpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7
CisgICAgICAgICAgICArK2M7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6
CisgICAgICAgICAgICBMT0dfU1RBVEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgICAgICBpZiAo
aXNBU0NJSUFscGhhKCpjKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJ
VXBwZXIoKmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7CisgICAg
ICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAgICAgIGMg
PSBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U2NoZW1l
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9T
Y2hlbWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgor
ICAgICAgICAgICAgTE9HX1NUQVRFKCJTY2hlbWUiKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlk
U2NoZW1lQ2hhcmFjdGVyKCpjKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FT
Q0lJVXBwZXIoKmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwor
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICc6JykgeworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHNjaGVtZUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAo
c2NoZW1lRW5kID4gVVJMOjptYXhTY2hlbWVMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIG1fdXJsLm1fc2NoZW1lRW5kID0gc2NoZW1lRW5kOworICAgICAg
ICAgICAgICAgIFN0cmluZ1ZpZXcgdXJsU2NoZW1lID0gcGFyc2VkRGF0YVZpZXcoMCwgbV91cmwu
bV9zY2hlbWVFbmQpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHNjaGVtZSh1cmxTY2hlbWUpKSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBTY2hlbWU6OkZpbGU6CisgICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVj
aWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmxJc0ZpbGUgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlOworICAgICAgICAgICAgICAgICAg
ICArK2M7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
U2NoZW1lOjpXUzoKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6V1NTOgorICAgICAgICAg
ICAgICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgICAgICAg
ICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJh
c2UucHJvdG9jb2xJcyh1cmxTY2hlbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRo
b3JpdHlTbGFzaGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpIVFRQOgorICAgICAgICAg
ICAgICAgIGNhc2UgU2NoZW1lOjpIVFRQUzoKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9w
cm90b2NvbElzSW5IVFRQRmFtaWx5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkZUUDoKKyAgICAgICAgICAgICAg
ICBjYXNlIFNjaGVtZTo6R29waGVyOgorICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lh
bCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLnByb3RvY29sSXModXJsU2No
ZW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxSZWxh
dGl2ZU9yQXV0aG9yaXR5OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczsKKyAgICAg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIFNjaGVtZTo6Tm9uU3BlY2lhbDoKKyAgICAgICAgICAgICAgICAgICAgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBhdXRvIG1h
eWJlU2xhc2ggPSBjOworICAgICAgICAgICAgICAgICAgICBhZHZhbmNlKG1heWJlU2xhc2gpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIW1heWJlU2xhc2guYXRFbmQoKSAmJiAqbWF5YmVTbGFz
aCA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBtYXliZVNsYXNoOworICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OworICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICcvJyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICArK2M7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0
YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAg
ICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9jYW5ub3RCZUFCYXNlVVJMID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRo
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAgICAgICAgICAgICAgIGMgPSBiZWdpbkFm
dGVyQ29udHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsK
KyAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJD
b250cm9sQW5kU3BhY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTdGF0ZTo6Tm9TY2hlbWU6CisgICAgICAgICAgICBMT0dfU1RBVEUoIk5vU2NoZW1l
Iik7CisgICAgICAgICAgICBpZiAoIWJhc2UuaXNWYWxpZCgpIHx8IChiYXNlLm1fY2Fubm90QmVB
QmFzZVVSTCAmJiAqYyAhPSAnIycpKSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChiYXNl
Lm1fY2Fubm90QmVBQmFzZVVSTCAmJiAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICBjb3B5
VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKKyAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
IWJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6UmVsYXRpdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5v
blVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzon
KTsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6CisgICAgICAg
ICAgICBMT0dfU1RBVEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgICAg
ICBpZiAoKmMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOworICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKGMu
YXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCpj
ID09ICcvJykgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7
CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25v
cmVTbGFzaGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlU2xhc2g7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpQYXRoT3JBdXRob3Jp
dHk6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOworICAgICAgICAg
ICAgaWYgKCpjID09ICcvJykgeworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Cisg
ICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJT
dGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhv
c3RCZWdpbiA9IGM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VS
VChwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAg
ICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAg
ICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAg
ICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAg
ICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgorICAgICAgICAgICAgTE9HX1NUQVRF
KCJSZWxhdGl2ZSIpOworICAgICAgICAgICAgc3dpdGNoICgqYykgeworICAgICAgICAgICAgY2Fz
ZSAnLyc6CisgICAgICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6UmVsYXRpdmVTbGFzaDsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICc/JzoKKyAgICAgICAgICAgICAgICBjb3B5VVJM
UGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOworICAgICAgICAg
ICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsK
KyAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnIyc6CisgICAgICAgICAgICAgICAgY29weVVS
TFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29k
aW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7CisgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2gs
IGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBv
c2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpICE9ICcv
JykgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0
aW9uKGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpQYXRoOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlU2xhc2g6CisgICAgICAgICAg
ICBMT0dfU1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycg
fHwgKmMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5vblVURjhRdWVy
eUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCI6Ly8iLCAz
KTsKKyAgICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpCisgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
QXV0aG9yaXR5T3JIb3N0OworICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdp
biA9IGM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQb3J0RW5kLCBjLCBub25V
VEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5t
X2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczoKKyAgICAgICAgICAgIExPR19T
VEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFko
KmMgPT0gJy8nIHx8ICpjID09ICdcXCcpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCpjID09ICdcXCcpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAg
IGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKExJS0VMWSghYy5hdEVuZCgpICYmICgq
YyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSgqYyA9PSAnXFwnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8iLCAyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVT
bGFzaGVzOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xh
c2hlcyIpOworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSB7CisgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICsrYzsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBj
dXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9y
aXR5T3JIb3N0OworICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpBdXRo
b3JpdHlPckhvc3Q6CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRF
KCJBdXRob3JpdHlPckhvc3QiKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJ0AnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gbGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBmaW5kTGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFmaW5kTGFz
dEF0LmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFVSTF9QQVJTRVJfTE9HKCJG
aW5kaW5nIGxhc3QgQDogJWMiLCAqZmluZExhc3RBdCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoKmZpbmRMYXN0QXQgPT0gJ0AnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh
c3RBdCA9IGZpbmRMYXN0QXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU2xhc2gg
PSAqZmluZExhc3RBdCA9PSAnLycgfHwgKG1fdXJsSXNTcGVjaWFsICYmICpmaW5kTGFzdEF0ID09
ICdcXCcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmZpbmRMYXN0
QXQgPT0gJz8nIHx8ICpmaW5kTGFzdEF0ID09ICcjJykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrZmluZExhc3RBdDsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJzZUF1dGhvcml0eShDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgbGFzdEF0
KSk7CisgICAgICAgICAgICAgICAgICAgIGMgPSBsYXN0QXQ7CisgICAgICAgICAgICAgICAgICAg
IGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0g
YzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6SG9zdDsKKyAgICAgICAgICAg
ICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJvb2wg
aXNTbGFzaCA9ICpjID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJyk7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmMgPT0gJz8nIHx8ICpjID09ICcjJykgewor
ICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1f
dXJsSXNTcGVjaWFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJl
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9z
aXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
bV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9u
KGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIXBhcnNlSG9zdEFuZFBvcnQoaXRlcmF0b3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghaXNTbGFzaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJ
c1NwZWNpYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9u
KGMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaXNQZXJj
ZW50T3JOb25BU0NJSSgqYykpCisgICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRP
ck5vbkFTQ0lJID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9IHdo
aWxlICghYy5hdEVuZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRl
OjpIb3N0OgorICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiSG9z
dCIpOworICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJz8nIHx8ICpjID09
ICcjJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlm
ICgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzUGVyY2VudE9y
Tm9uQVNDSUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25B
U0NJSSA9IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgfSB3aGlsZSAo
IWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6Rmls
ZToKKyAgICAgICAgICAgIExPR19TVEFURSgiRmlsZSIpOworICAgICAgICAgICAgc3dpdGNoICgq
YykgeworICAgICAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgIGNhc2Ug
Jy8nOgorICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlU2xhc2g7CisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnPyc6CisgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFs
aWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlF
bmNvZGluZyk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsK
KyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLz8iLCA0KTsKKyAgICAgICAg
ICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKSAtIDI7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
c3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAg
ICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJv
dG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGls
KGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8j
IiwgNCk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBv
c2l0aW9uKGMpIC0gMjsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExl
bmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAg
ICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAg
ICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikgJiYgc2hvdWxk
Q29weUZpbGVVUkwoYykpCisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJh
c2UsIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rpbmcp
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCIvLy8iLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3Rh
cnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpGaWxl
U2xhc2g6CisgICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGVTbGFzaCIpOworICAgICAgICAgICAg
aWYgKExJS0VMWSgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFy
dCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKKyAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZUhvc3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAgICAgICAgICAgbV91cmwubV91c2Vy
U3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAg
ICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAgICAgICBh
cHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGJhc2UpKSB7CisgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0OworICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5t
X3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZpbGVIb3N0OgorICAgICAgICAgICAg
ZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiRmlsZUhvc3QiKTsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKSkgeworICAgICAgICAgICAgICAgICAg
ICBib29sIHdpbmRvd3NRdWlyayA9IHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAg
ICAgICAgICAgICAgICAgICAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RC
ZWdpbik7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3dzUXVpcmspIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0
QmVnaW4pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh3
aW5kb3dzUXVpcmsgfHwgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHdpbmRvd3NRdWlyayB8fCBwYXJzZWREYXRhVmlldyhjdXJyZW50
UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKCpjID09ICc/JykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcigiLz8iLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
KmMgPT0gJyMnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIv
IyIsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlv
bihjKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihh
dXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWls
dXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzTG9jYWxob3N0KHBhcnNl
ZERhdGFWaWV3KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJlbnRQb3NpdGlvbihjKSAtIG1fdXJs
Lm1fcGFzc3dvcmRFbmQpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1f
dXJsLm1fcGFzc3dvcmRFbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aFN0YXJ0OworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKGlzUGVyY2VudE9yTm9uQVNDSUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hv
c3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAg
ICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoU3Rh
cnQiKTsKKyAgICAgICAgICAgIGlmICgqYyAhPSAnLycgJiYgKmMgIT0gJ1xcJykgeworICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlBhdGg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UGF0
aDoKKyAgICAgICAgICAgIExPR19TVEFURSgiUGF0aCIpOworICAgICAgICAgICAgaWYgKCpjID09
ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJykpCisgICAgICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGN1
cnJlbnRQb3NpdGlvbihjKSAmJiBwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAx
KSA9PSAnLycpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRG91YmxlRG90UGF0
aFNlZ21lbnQoYykpKSB7CisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgICAgICAgICAgY29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KGMpOworICAg
ICAgICAgICAgICAgICAgICBwb3BQYXRoKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNTaW5nbGVE
b3RQYXRoU2VnbWVudChjKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGMpOworICAgICAgICAgICAgICAgICAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICgqYyA9PSAnPycpIHsKKyAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignPycpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAg
ICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlC
ZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVy
eTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKCpjID09ICcjJykgeworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5
RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZy
YWdtZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJbkRlZmF1bHRFbmNvZGVTZXQ+KGMpOworICAgICAgICAg
ICAgKytjOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJl
QUJhc2VVUkxQYXRoOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0
aCIpOworICAgICAgICAgICAgaWYgKCpjID09ICc/JykgeworICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc/Jyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAg
IGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAgICAgICAgICAgICBxdWVyeUJl
Z2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5
OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcjJykgeworICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAg
ICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgfSBlbHNlIGlmICgq
YyA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Cisg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2RlU2V0PihjKTsKKyAg
ICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJVVEY4
UXVlcnkiKTsKKyAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luID09IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+KCkpOworICAgICAgICAgICAgaWYgKCpjID09ICcjJykgeworICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoIW5vblVURjhRdWVyeUVuY29k
aW5nKTsKKyAgICAgICAgICAgIHV0ZjhRdWVyeUVuY29kZShjKTsKKyAgICAgICAgICAgICsrYzsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpOb25VVEY4UXVlcnk6Cisg
ICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJOb25VVEY4UXVlcnki
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPigpKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGVuY29kZU5vblVURjhRdWVyeShxdWVyeUJ1ZmZlciwgKm5vblVU
RjhRdWVyeUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJl
Z2luLCBjKSk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50
UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYXBwZW5kQ29kZVBvaW50KHF1ZXJ5QnVmZmVyLCAqYyk7CisgICAgICAgICAgICAg
ICAgYWR2YW5jZShjLCBxdWVyeUJlZ2luKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5k
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZyYWdtZW50Ogor
ICAgICAgICAgICAgVVJMX1BBUlNFUl9MT0coIlN0YXRlIEZyYWdtZW50Iik7CisgICAgICAgICAg
ICB1dGY4UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2RlU2V0PihjKTsKKyAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgc3dpdGNo
IChzdGF0ZSkgeworICAgIGNhc2UgU3RhdGU6OlNjaGVtZVN0YXJ0OgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgIGlmICghY3VycmVudFBvc2l0aW9uKGMp
ICYmIGJhc2UuaXNWYWxpZCgpICYmICFiYXNlLm1fY2Fubm90QmVBQmFzZVVSTCkgeworICAgICAg
ICAgICAgbV91cmwgPSBiYXNlOworICAgICAgICAgICAgbV91cmwucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZmFpbHVy
ZSgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgorICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIlNjaGVtZSIpOworICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIFN0YXRlOjpOb1NjaGVtZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJOb1NjaGVtZSIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IGNhc2UgU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKKyAg
ICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoT3JBdXRob3JpdHkiKTsKKyAgICAgICAgQVNTRVJU
KG1fdXJsLm1fdXNlclN0YXJ0KTsKKyAgICAgICAgQVNTRVJUKG1fdXJsLm1fdXNlclN0YXJ0ID09
IGN1cnJlbnRQb3NpdGlvbihjKSk7CisgICAgICAgIEFTU0VSVChwYXJzZWREYXRhVmlldyhjdXJy
ZW50UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICBtX3VybC5tX3VzZXJTdGFydC0t
OworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJT
dGFydCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgorICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIlJlbGF0aXZlIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKKyAgICAgICAgTE9H
X0ZJTkFMX1NUQVRFKCJSZWxhdGl2ZVNsYXNoIik7CisgICAgICAgIGNvcHlVUkxQYXJ0c1VudGls
KGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CisgICAg
ICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAg
ICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgorICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzIik7CisgICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6U3Bl
Y2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiU3Bl
Y2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMiKTsKKyAgICAgICAgZmFpbHVyZSgpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIkF1dGhvcml0eU9ySG9zdCIpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBjdXJyZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICBpZiAoYXV0aG9yaXR5T3JI
b3N0QmVnaW4uYXRFbmQoKSkgeworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgfSBlbHNlIGlmICghcGFy
c2VIb3N0QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIGZhaWx1
cmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGlmIChtX3VybElzU3BlY2lhbCkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVu
Z3RoICsgMTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aDsKKyAgICAgICAgfQor
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAg
ICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTdGF0ZTo6SG9zdDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJIb3N0Iik7
CisgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikpIHsK
KyAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCAr
IDE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOworICAgICAgICBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9
IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6RmlsZToK
KyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlIik7CisgICAgICAgIGlmIChiYXNlLmlzVmFs
aWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgY29weVVSTFBh
cnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5n
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIiwgMyk7CisgICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgbV91cmwu
bV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAg
ICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFN0YXRlOjpGaWxlU2xhc2g6CisgICAgICAgIExPR19GSU5BTF9TVEFU
RSgiRmlsZVNsYXNoIik7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgbV91
cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgKyAxOworICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKGNvcHlCYXNlV2luZG93c0Ry
aXZlTGV0dGVyKGJhc2UpKSB7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7
CisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0
YXJ0ICsgNDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
dGF0ZTo6RmlsZUhvc3Q6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRmlsZUhvc3QiKTsKKyAg
ICAgICAgaWYgKHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAgICAgICAmJiBpc1dp
bmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIo
YXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykg
eworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50
UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
KyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMp
KSkgeworICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICBpZiAoaXNMb2NhbGhv
c3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMp
IC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSB7CisgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLnNo
cmluayhtX3VybC5tX3Bhc3N3b3JkRW5kKTsKKyAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9y
dExlbmd0aCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlBhdGhTdGFydDoKKyAg
ICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoU3RhcnQiKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0YXRlOjpQYXRoOgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlBhdGgiKTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDoKKyAgICAg
ICAgTE9HX0ZJTkFMX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0aCIpOworICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlVU
RjhRdWVyeToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJVVEY4UXVlcnkiKTsKKyAgICAgICAg
QVNTRVJUKHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7
CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKKyAgICAgICAgTE9HX0ZJTkFM
X1NUQVRFKCJOb25VVEY4UXVlcnkiKTsKKyAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gIT0gQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAgICAgIGVuY29kZU5vblVURjhR
dWVyeShxdWVyeUJ1ZmZlciwgKm5vblVURjhRdWVyeUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBjKSk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6
OkZyYWdtZW50OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZyYWdtZW50Iik7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGlmIChMSUtFTFkoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9u
KSkgeworICAgICAgICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJpbmc7CisgICAgICAgIEFT
U0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fdXJs
Lm1fc3RyaW5nID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKG1fYXNjaWlCdWZmZXIpKTsKKyAgICBt
X3VybC5tX2lzVmFsaWQgPSB0cnVlOworICAgIFVSTF9QQVJTRVJfTE9HKCJQYXJzZWQgVVJMIDwl
cz4iLCBtX3VybC5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpwYXJzZUF1dGhvcml0eShDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFko
aXRlcmF0b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAg
ICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7IGFkdmFuY2UoaXRlcmF0
b3IpKSB7CisgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKSB7CisgICAgICAgICAgICBtX3Vy
bC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgYXV0
byBpdGVyYXRvckF0Q29sb24gPSBpdGVyYXRvcjsKKyAgICAgICAgICAgICsraXRlcmF0b3I7Cisg
ICAgICAgICAgICBib29sIHRhYk9yTmV3bGluZUFmdGVyQ29sb24gPSBmYWxzZTsKKyAgICAgICAg
ICAgIHdoaWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQoKSAmJiBpc1RhYk9yTmV3bGluZSgq
aXRlcmF0b3IpKSkgeworICAgICAgICAgICAgICAgIHRhYk9yTmV3bGluZUFmdGVyQ29sb24gPSB0
cnVlOworICAgICAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoaXRlcmF0b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JBdENvbG9uKTsKKyAgICAgICAgICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgIGlmIChtX3Vy
bC5tX3VzZXJFbmQgPiBtX3VybC5tX3VzZXJTdGFydCkKKyAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignQCcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICh0YWJPck5ld2xpbmVBZnRlckNvbG9uKQorICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckF0Q29sb24pOworICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignOicpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJh
dG9yKTsKKyAgICB9CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJh
dG9yKSkKKyAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNlckluZm9FbmNvZGVT
ZXQ+KGl0ZXJhdG9yKTsKKyAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gY3VycmVudFBvc2l0aW9u
KGl0ZXJhdG9yKTsKKyAgICBpZiAoIW1fdXJsLm1fdXNlckVuZCkKKyAgICAgICAgbV91cmwubV91
c2VyRW5kID0gbV91cmwubV9wYXNzd29yZEVuZDsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdA
Jyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+Cit2b2lkIFVS
TFBhcnNlcjo6YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlIG51
bWJlcikKK3sKKyAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2lnbmVkSW50ZWdlclR5cGUpICogMyAr
IDFdOworICAgIExDaGFyKiBlbmQgPSBzdGQ6OmVuZChidWYpOworICAgIExDaGFyKiBwID0gZW5k
OworICAgIGRvIHsKKyAgICAgICAgKi0tcCA9IChudW1iZXIgJSAxMCkgKyAnMCc7CisgICAgICAg
IG51bWJlciAvPSAxMDsKKyAgICB9IHdoaWxlIChudW1iZXIpOworICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIocCwgZW5kIC0gcCk7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY0KElQ
djRBZGRyZXNzIGFkZHJlc3MpCit7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50
OF90PihhZGRyZXNzID4+IDI0KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7CisgICAg
YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzID4+IDE2KTsKKyAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1
aW50OF90PihhZGRyZXNzID4+IDgpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy4nKTsKKyAg
ICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQ4X3Q+KGFkZHJlc3MpOworfQorICAgIAor
c3RhdGljIHNpemVfdCB6ZXJvU2VxdWVuY2VMZW5ndGgoY29uc3Qgc3RkOjphcnJheTx1aW50MTZf
dCwgOD4mIGFkZHJlc3MsIHNpemVfdCBiZWdpbikKK3sKKyAgICBzaXplX3QgZW5kID0gYmVnaW47
CisgICAgZm9yICg7IGVuZCA8IDg7IGVuZCsrKSB7CisgICAgICAgIGlmIChhZGRyZXNzW2VuZF0p
CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGVuZCAtIGJlZ2luOworfQor
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNv
bnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzKQoreworICAgIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBsb25nZXN0OworICAgIHNpemVfdCBsb25nZXN0TGVuZ3RoID0gMDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0g
emVyb1NlcXVlbmNlTGVuZ3RoKGFkZHJlc3MsIGkpOworICAgICAgICBpZiAobGVuZ3RoKSB7Cisg
ICAgICAgICAgICBpZiAobGVuZ3RoID4gMSAmJiAoIWxvbmdlc3QgfHwgbG9uZ2VzdExlbmd0aCA8
IGxlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICBsb25nZXN0ID0gaTsKKyAgICAgICAgICAgICAg
ICBsb25nZXN0TGVuZ3RoID0gbGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSAr
PSBsZW5ndGg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxvbmdlc3Q7Cit9CisKK3Zv
aWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGllY2UpCit7CisgICAg
Ym9vbCBwcmludGVkID0gZmFsc2U7CisgICAgaWYgKGF1dG8gbmliYmxlMCA9IHBpZWNlID4+IDEy
KSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFT
Q0lJSGV4RGlnaXQobmliYmxlMCkpOworICAgICAgICBwcmludGVkID0gdHJ1ZTsKKyAgICB9Cisg
ICAgYXV0byBuaWJibGUxID0gcGllY2UgPj4gOCAmIDB4RjsKKyAgICBpZiAocHJpbnRlZCB8fCBu
aWJibGUxKSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2Vy
Y2FzZUFTQ0lJSGV4RGlnaXQobmliYmxlMSkpOworICAgICAgICBwcmludGVkID0gdHJ1ZTsKKyAg
ICB9CisgICAgYXV0byBuaWJibGUyID0gcGllY2UgPj4gNCAmIDB4RjsKKyAgICBpZiAocHJpbnRl
ZCB8fCBuaWJibGUyKQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9M
b3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTIpKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHBpZWNlICYgMHhGKSk7Cit9CisK
K3ZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2KFVSTFBhcnNlcjo6SVB2NkFkZHJlc3MgYWRk
cmVzcykKK3sKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdbJyk7CisgICAgYXV0byBjb21wcmVz
c1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKKyAgICBmb3IgKHNp
emVfdCBwaWVjZSA9IDA7IHBpZWNlIDwgODsgcGllY2UrKykgeworICAgICAgICBpZiAoY29tcHJl
c3NQb2ludGVyICYmIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpID09IHBpZWNlKSB7CisgICAgICAg
ICAgICBBU1NFUlQoIWFkZHJlc3NbcGllY2VdKTsKKyAgICAgICAgICAgIGlmIChwaWVjZSkKKyAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOjoiLCAyKTsKKyAgICAgICAg
ICAgIHdoaWxlIChwaWVjZSA8IDggJiYgIWFkZHJlc3NbcGllY2VdKQorICAgICAgICAgICAgICAg
IHBpZWNlKys7CisgICAgICAgICAgICBpZiAocGllY2UgPT0gOCkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBzZXJpYWxpemVJUHY2UGllY2UoYWRkcmVzc1twaWVj
ZV0pOworICAgICAgICBpZiAocGllY2UgPCA3KQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignOicpOworICAgIH0KKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCddJyk7Cit9CisKK2Vu
dW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3IgeworICAgIEZhaWx1cmUs
CisgICAgT3ZlcmZsb3csCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgor
RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBVUkxQ
YXJzZXI6OnBhcnNlSVB2NFBpZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvciwgYm9vbCYgZGlkU2VlU3ludGF4VmlvbGF0aW9uKQoreworICAgIGVudW0gY2xhc3Mg
U3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5rbm93bkJhc2UsCisgICAgICAgIERlY2ltYWws
CisgICAgICAgIE9jdGFsT3JIZXgsCisgICAgICAgIE9jdGFsLAorICAgICAgICBIZXgsCisgICAg
fTsKKyAgICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpVbmtub3duQmFzZTsKKyAgICBDaGVja2VkPHVp
bnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gdmFsdWUgPSAwOworICAgIGlmICghaXRlcmF0b3IuYXRF
bmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
SVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0
RW5kKCkpIHsKKyAgICAgICAgaWYgKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpIHsKKyAgICAg
ICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7CisgICAgICAgICAgICArK2l0ZXJh
dG9yOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCppdGVy
YXRvciA9PSAnLicpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgp
KTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKKyAgICAgICAgfQorICAg
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgU3RhdGU6OlVua25vd25CYXNlOgor
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKCppdGVyYXRvciA9PSAnMCcpKSB7CisgICAgICAgICAg
ICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbE9y
SGV4OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RGVjaW1hbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0YXRlOjpPY3RhbE9ySGV4OgorICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJ3gnIHx8ICppdGVyYXRvciA9PSAn
WCcpIHsKKyAgICAgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkhleDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok9jdGFsOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU3RhdGU6OkRlY2ltYWw6CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgq
aXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGll
Y2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpOworICAgICAgICAgICAgdmFsdWUgKj0gMTA7CisgICAg
ICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICAr
K2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6Ok9jdGFs
OgorICAgICAgICAgICAgQVNTRVJUKGRpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgICAgICAg
ICBpZiAoKml0ZXJhdG9yIDwgJzAnIHx8ICppdGVyYXRvciA+ICc3JykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsK
KyAgICAgICAgICAgIHZhbHVlICo9IDg7CisgICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3Ig
LSAnMCc7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vy
cm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkhleDoKKyAgICAgICAgICAgIEFTU0VSVChkaWRTZWVT
eW50YXhWaW9sYXRpb24pOworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKml0ZXJh
dG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFy
c2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgICAgIHZhbHVlICo9IDE2OworICAgICAgICAg
ICAgdmFsdWUgKz0gdG9BU0NJSUhleFZhbHVlKCppdGVyYXRvcik7CisgICAgICAgICAgICBpZiAo
VU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAg
ICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgQVNTRVJUKCF2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpOworICAgIHJldHVybiB2YWx1ZS51bnNh
ZmVHZXQoKTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDY0X3QgcG93MjU2KHNpemVf
dCBleHBvbmVudCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChleHBvbmVudCA8PSA0KTsKKyAgICB1
aW50NjRfdCB2YWx1ZXNbNV0gPSB7MSwgMjU2LCAyNTYgKiAyNTYsIDI1NiAqIDI1NiAqIDI1Niwg
MjU2dWxsICogMjU2ICogMjU2ICogMjU2IH07CisgICAgcmV0dXJuIHZhbHVlc1tleHBvbmVudF07
Cit9CisKK2VudW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yIHsKKyAgICBGYWls
dXJlLAorICAgIE5vdElQdjQsCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Rm9yU3ludGF4VmlvbGF0aW9uLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorRXhwZWN0ZWQ8VVJM
UGFyc2VyOjpJUHY0QWRkcmVzcywgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yPiBVUkxQYXJz
ZXI6OnBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZv
clN5bnRheFZpb2xhdGlvbj4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24sIENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIFZlY3RvcjxF
eHBlY3RlZDx1aW50MzJfdCwgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3I+LCA0PiBp
dGVtczsKKyAgICBib29sIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IGZhbHNlOworICAgIGlmICgh
aXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgd2hpbGUgKCFpdGVy
YXRvci5hdEVuZCgpKSB7CisgICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7
CisgICAgICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOworICAgICAgICAgICAg
KytpdGVyYXRvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlm
IChpdGVtcy5zaXplKCkgPj0gNCkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJ
UHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAgaXRlbXMuYXBwZW5kKHBhcnNlSVB2
NFBpZWNlKGl0ZXJhdG9yLCBkaWRTZWVTeW50YXhWaW9sYXRpb24pKTsKKyAgICAgICAgaWYgKCFp
dGVyYXRvci5hdEVuZCgpICYmICppdGVyYXRvciA9PSAnLicpIHsKKyAgICAgICAgICAgICsraXRl
cmF0b3I7CisgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlIGlmICgqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgfHwgIWl0ZW1zLnNpemUoKSB8fCBp
dGVtcy5zaXplKCkgPiA0KQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNp
bmdFcnJvcjo6Tm90SVB2NCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsK
KyAgICAgICAgaWYgKCFpdGVtLmhhc192YWx1ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0UGll
Y2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgfQorICAgIGZvciAoY29uc3QgYXV0
byYgaXRlbSA6IGl0ZW1zKSB7CisgICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVt
LmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdykKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICB9
CisgICAgaWYgKGl0ZW1zLnNpemUoKSA+IDEpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpdGVtcy5zaXplKCkgLSAxOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpdGVtc1tpXS52
YWx1ZSgpID4gMjU1KQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0
UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaXRlbXNb
aXRlbXMuc2l6ZSgpIC0gMV0udmFsdWUoKSA+PSBwb3cyNTYoNSAtIGl0ZW1zLnNpemUoKSkpCisg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsK
KworICAgIGlmIChkaWRTZWVTeW50YXhWaW9sYXRpb24pCisgICAgICAgIHN5bnRheFZpb2xhdGlv
bihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0ZW0gOiBpdGVtcykgeworICAgICAgICBpZiAoaXRlbS52YWx1ZSgpID4gMjU1KQorICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRp
b24pOworICAgIH0KKworICAgIGlmIChVTkxJS0VMWShpdGVtcy5zaXplKCkgIT0gNCkpCisgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsK
KworICAgIElQdjRBZGRyZXNzIGlwdjQgPSBpdGVtcy50YWtlTGFzdCgpLnZhbHVlKCk7CisgICAg
Zm9yIChzaXplX3QgY291bnRlciA9IDA7IGNvdW50ZXIgPCBpdGVtcy5zaXplKCk7ICsrY291bnRl
cikKKyAgICAgICAgaXB2NCArPSBpdGVtc1tjb3VudGVyXS52YWx1ZSgpICogcG93MjU2KDMgLSBj
b3VudGVyKTsKKyAgICByZXR1cm4gaXB2NDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGll
Y2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikK
K3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICB1aW50MzJfdCBwaWVjZSA9IDA7CisgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxz
ZTsKKyAgICBzaXplX3QgZGlnaXRDb3VudCA9IDA7CisgICAgd2hpbGUgKCFpdGVyYXRvci5hdEVu
ZCgpKSB7CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCppdGVyYXRvcikpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICArK2RpZ2l0Q291bnQ7CisgICAgICAgIGlm
ICghcGllY2UgJiYgKml0ZXJhdG9yID09ICcwJykgeworICAgICAgICAgICAgaWYgKGxlYWRpbmda
ZXJvcykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAg
bGVhZGluZ1plcm9zID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXBpZWNlICYmICpp
dGVyYXRvciA9PSAnMCcpCisgICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAg
ICBwaWVjZSA9IHBpZWNlICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgIGlmIChwaWVj
ZSA+IDI1NSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGFkdmFu
Y2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwor
ICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAoKml0ZXJhdG9yID09ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBp
ZiAocGllY2UgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHJldHVybiBwaWVjZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K3N0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQ
djRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVy
YXRvcikKK3sKKyAgICBJUHY0QWRkcmVzcyBhZGRyZXNzID0gMDsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDQ7ICsraSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
cGllY2UgPSBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoaXRlcmF0b3IpKQorICAgICAgICAgICAg
YWRkcmVzcyA9IChhZGRyZXNzIDw8IDgpICsgcGllY2UudmFsdWUoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKGkgPCAzKSB7Cisg
ICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICAgICAgaWYgKCppdGVyYXRvciAhPSAnLicpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGFkdmFuY2U8Q2hhcmFj
dGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgICAgICB9
IGVsc2UgaWYgKCFpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICB9CisgICAgQVNTRVJUKGl0ZXJhdG9yLmF0RW5kKCkpOworICAgIHJldHVybiBh
ZGRyZXNzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRp
b25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sKKyAgICBBU1NFUlQoKmMgPT0gJ1sn
KTsKKyAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7CisgICAgYWR2YW5jZShjLCBob3N0QmVn
aW4pOworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBJUHY2QWRkcmVzcyBhZGRyZXNzID0ge3swLCAwLCAwLCAwLCAwLCAwLCAwLCAwfX07Cisg
ICAgc2l6ZV90IHBpZWNlUG9pbnRlciA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNv
bXByZXNzUG9pbnRlcjsKKworICAgIGlmICgqYyA9PSAnOicpIHsKKyAgICAgICAgYWR2YW5jZShj
LCBob3N0QmVnaW4pOworICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCpjICE9ICc6JykKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAg
KytwaWVjZVBvaW50ZXI7CisgICAgICAgIGNvbXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRlcjsK
KyAgICB9CisgICAgCisgICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKHBpZWNl
UG9pbnRlciA9PSA4KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
aWYgKCpjID09ICc6JykgeworICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgYWR2YW5jZShjLCBo
b3N0QmVnaW4pOworICAgICAgICAgICAgKytwaWVjZVBvaW50ZXI7CisgICAgICAgICAgICBjb21w
cmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDYgfHwgKGNvbXByZXNzUG9pbnRlciAm
JiBwaWVjZVBvaW50ZXIgPCA2KSkgeworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8SVB2
NEFkZHJlc3M+IGlwdjRBZGRyZXNzID0gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoYykpIHsK
KyAgICAgICAgICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA9PSA1
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgICAgICAgICAgICAgIGFkZHJlc3Nb
cGllY2VQb2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSA+PiAxNjsKKyAgICAgICAgICAg
ICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgJiAweEZG
RkY7CisgICAgICAgICAgICAgICAgYyA9IHsgfTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB1aW50MTZfdCB2YWx1ZSA9IDA7CisgICAg
ICAgIHNpemVfdCBsZW5ndGggPSAwOworICAgICAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNl
OworICAgICAgICBmb3IgKDsgbGVuZ3RoIDwgNDsgbGVuZ3RoKyspIHsKKyAgICAgICAgICAgIGlm
IChjLmF0RW5kKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIWlz
QVNDSUlIZXhEaWdpdCgqYykpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAoaXNBU0NJSVVwcGVyKCpjKSkKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9z
dEJlZ2luKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnMCcgJiYgIWxlbmd0aCkKKyAgICAgICAg
ICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAq
IDB4MTAgKyB0b0FTQ0lJSGV4VmFsdWUoKmMpOworICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0
QmVnaW4pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkoKHZhbHVl
ICYmIGxlYWRpbmdaZXJvcykgfHwgKCF2YWx1ZSAmJiBsZW5ndGggPiAxKSkpCisgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKworICAgICAgICBhZGRyZXNzW3BpZWNlUG9p
bnRlcisrXSA9IHZhbHVlOworICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCB8fCAqYyAhPSAnOicpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7
CisgICAgfQorICAgIAorICAgIGlmICghYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIAorICAgIGlmIChjb21wcmVzc1BvaW50ZXIpIHsKKyAgICAgICAgc2l6ZV90
IHN3YXBzID0gcGllY2VQb2ludGVyIC0gY29tcHJlc3NQb2ludGVyLnZhbHVlKCk7CisgICAgICAg
IHBpZWNlUG9pbnRlciA9IDc7CisgICAgICAgIHdoaWxlIChzd2FwcykKKyAgICAgICAgICAgIHN0
ZDo6c3dhcChhZGRyZXNzW3BpZWNlUG9pbnRlci0tXSwgYWRkcmVzc1tjb21wcmVzc1BvaW50ZXIu
dmFsdWUoKSArIHN3YXBzLS0gLSAxXSk7CisgICAgfSBlbHNlIGlmIChwaWVjZVBvaW50ZXIgIT0g
OCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBwb3NzaWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFk
ZHJlc3MpOworICAgIGlmIChwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikKKyAgICAgICAgcG9zc2li
bGVDb21wcmVzc1BvaW50ZXIudmFsdWUoKSsrOworICAgIGlmIChVTkxJS0VMWShjb21wcmVzc1Bv
aW50ZXIgIT0gcG9zc2libGVDb21wcmVzc1BvaW50ZXIpKQorICAgICAgICBzeW50YXhWaW9sYXRp
b24oaG9zdEJlZ2luKTsKKyAgICAKKyAgICByZXR1cm4gYWRkcmVzczsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK1VSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2Vy
OjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCwgY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0
aW9uUG9zaXRpb24pCit7CisgICAgTENoYXJCdWZmZXIgb3V0cHV0OworICAgIG91dHB1dC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICB1aW50OF90IGJ5dGUgPSBpbnB1dFtpXTsKKyAg
ICAgICAgaWYgKGJ5dGUgIT0gJyUnKQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVu
ZChieXRlKTsKKyAgICAgICAgZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpIDwgbGVuZ3RoIC0gMikg
eworICAgICAgICAgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pICYmIGlzQVND
SUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAgICAgICAg
IG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5w
dXRbaSArIDJdKSk7CisgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgIH0K
KyAgICByZXR1cm4gb3V0cHV0OworfQorICAgIAorVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciBVUkxQ
YXJzZXI6OnBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQor
eworICAgIExDaGFyQnVmZmVyIG91dHB1dDsKKyAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShsZW5ndGgpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07CisgICAgICAgIGlmIChieXRl
ICE9ICclJykKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKKyAgICAgICAgICAg
IGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5w
dXRbaSArIDJdKSkgeworICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9B
U0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7CisgICAgICAgICAgICAg
ICAgaSArPSAyOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0LnVu
Y2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvdXRwdXQu
dW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgIH0KKyAgICByZXR1cm4gb3V0cHV0OworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6
TENoYXJCdWZmZXI+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiBkb21haW4s
IGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uKQoreworICAgIExDaGFyQnVmZmVyIGFzY2lpOworICAgIGlmIChk
b21haW4uaXNBbGxBU0NJSSgpKSB7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBkb21haW4ubGVu
Z3RoKCk7CisgICAgICAgIGlmIChkb21haW4uaXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnM4KCk7CisgICAgICAgICAgICBh
c2NpaS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGlzQVNDSUlVcHBlcihjaGFyYWN0ZXJzW2ldKSkpCisgICAgICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICAg
ICAgICAgICAgICBhc2NpaS51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUxvd2VyKGNoYXJhY3RlcnNb
aV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAg
YXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQorICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAg
ICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJz
W2ldKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFzY2lpOwor
ICAgIH0KKyAgICAKKyAgICBjb25zdCBzaXplX3QgbWF4RG9tYWluTGVuZ3RoID0gNjQ7CisgICAg
VUNoYXIgaG9zdG5hbWVCdWZmZXJbbWF4RG9tYWluTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVy
cm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJ
RE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVk
ID0gdWlkbmFfbmFtZVRvQVNDSUkoJmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2Rlcigp
LCBTdHJpbmdWaWV3KGRvbWFpbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGRvbWFpbi5sZW5n
dGgoKSwgaG9zdG5hbWVCdWZmZXIsIG1heERvbWFpbkxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxz
LCAmZXJyb3IpOworICAgIEFTU0VSVChudW1DaGFyYWN0ZXJzQ29udmVydGVkIDw9IHN0YXRpY19j
YXN0PGludDMyX3Q+KG1heERvbWFpbkxlbmd0aCkpOworCisgICAgaWYgKFVfU1VDQ0VTUyhlcnJv
cikgJiYgIXByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgeworICAgICAgICBmb3IgKGludDMyX3Qg
aSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzQ29udmVydGVkOyArK2kpIHsKKyAgICAgICAgICAgIEFT
U0VSVChpc0FTQ0lJKGhvc3RuYW1lQnVmZmVyW2ldKSk7CisgICAgICAgICAgICBBU1NFUlQoIWlz
QVNDSUlVcHBlcihob3N0bmFtZUJ1ZmZlcltpXSkpOworICAgICAgICB9CisgICAgICAgIGFzY2lp
LmFwcGVuZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CisgICAgICAg
IGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhhc2NpaS5kYXRhKCksIGFzY2lpLnNpemUoKSkpCisg
ICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3Np
dGlvbik7CisgICAgICAgIHJldHVybiBhc2NpaTsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKK30KKworYm9vbCBVUkxQYXJzZXI6Omhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29u
c3QgVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW4pCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhc2NpaURvbWFpbi5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoaXNG
b3JiaWRkZW5Ib3N0Q29kZVBvaW50KGFzY2lpRG9tYWluW2ldKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6cGFyc2VQb3J0KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoKml0ZXJhdG9yID09
ICc6Jyk7CisgICAgYXV0byBjb2xvbkl0ZXJhdG9yID0gaXRlcmF0b3I7CisgICAgYWR2YW5jZShp
dGVyYXRvciwgY29sb25JdGVyYXRvcik7CisgICAgdWludDMyX3QgcG9ydCA9IDA7CisgICAgaWYg
KFVOTElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5n
dGggPSBjdXJyZW50UG9zaXRpb24oY29sb25JdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsK
KyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKKyAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOworICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7
CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIGlm
IChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKSB7CisgICAgICAgICAg
ICBpZiAoKml0ZXJhdG9yID09ICcwJyAmJiAhZGlnaXRDb3VudCkKKyAgICAgICAgICAgICAgICBs
ZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICAgICAgKytkaWdpdENvdW50OworICAgICAgICAg
ICAgcG9ydCA9IHBvcnQgKiAxMCArICppdGVyYXRvciAtICcwJzsKKyAgICAgICAgICAgIGlmIChw
b3J0ID4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKHBvcnQgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICBzeW50
YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisgICAgCisgICAgaWYgKCFwb3J0ICYmIGRpZ2l0
Q291bnQgPiAxKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisKKyAg
ICBBU1NFUlQocG9ydCA9PSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOworICAgIGlmIChV
TkxJS0VMWShkZWZhdWx0UG9ydEZvclByb3RvY29sKHBhcnNlZERhdGFWaWV3KDAsIG1fdXJsLm1f
c2NoZW1lRW5kKSkgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKSkKKyAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgIGVsc2UgeworICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgIEFTU0VSVChwb3J0IDw9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDE2X3Q+OjptYXgoKSk7CisgICAgICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZm
ZXI8dWludDE2X3Q+KHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSk7CisgICAgfQorCisgICAg
dW5zaWduZWQgcG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5t
X2hvc3RFbmQ7CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRM
ZW5ndGgpOworICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBh
cnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBp
dGVyYXRvcikKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCppdGVyYXRvciA9PSAnWycpIHsKKyAgICAgICAgYXV0byBpcHY2RW5kID0gaXRlcmF0
b3I7CisgICAgICAgIHdoaWxlICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2RW5kICE9ICddJykK
KyAgICAgICAgICAgICsraXB2NkVuZDsKKyAgICAgICAgaWYgKGlwdjZFbmQuYXRFbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IHBhcnNl
SVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaXRlcmF0b3IsIGlwdjZF
bmQpKSkgeworICAgICAgICAgICAgc2VyaWFsaXplSVB2NihhZGRyZXNzLnZhbHVlKCkpOworICAg
ICAgICAgICAgaWYgKCFpcHY2RW5kLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNl
KGlwdjZFbmQpOworICAgICAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2
RW5kID09ICc6JykgeworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJy
ZW50UG9zaXRpb24oaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVBv
cnQoaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKKyAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlw
djZFbmQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAg
Zm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNGb3JiaWRkZW5Ib3N0Q29k
ZVBvaW50KCppdGVyYXRvcikgJiYgKml0ZXJhdG9yICE9ICclJykpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJblNpbXBsZUVu
Y29kZVNldD4oaXRlcmF0b3IpOworICAgICAgICB9CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgp
KSB7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7
CisgICAgfQorICAgIAorICAgIGlmIChMSUtFTFkoIW1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJ
KSkgeworICAgICAgICBhdXRvIGhvc3RJdGVyYXRvciA9IGl0ZXJhdG9yOworICAgICAgICBmb3Ig
KDsgIWl0ZXJhdG9yLmF0RW5kKCk7ICsraXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGlmIChpc1Rh
Yk9yTmV3bGluZSgqaXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBpZiAoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KCppdGVyYXRvcikpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGF1dG8gYWRkcmVzcyA9
IHBhcnNlSVB2NEhvc3QoaG9zdEl0ZXJhdG9yLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPihob3N0SXRlcmF0b3IsIGl0ZXJhdG9yKSk7CisgICAgICAgIGlmIChhZGRyZXNzKSB7Cisg
ICAgICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAg
aWYgKGl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5n
dGggPSAwOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKDsgaG9zdEl0ZXJhdG9yICE9IGl0ZXJh
dG9yOyArK2hvc3RJdGVyYXRvcikgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JO
ZXdsaW5lKCpob3N0SXRlcmF0b3IpKSkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihob3N0SXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqaG9zdEl0ZXJhdG9yKSkp
CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RJdGVyYXRvcik7CisgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqaG9zdEl0ZXJhdG9yKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJh
dG9yKTsKKyAgICAgICAgaWYgKCFob3N0SXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBwYXJzZVBvcnQoaG9zdEl0ZXJhdG9yKTsKKyAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0
aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIAorICAgIGNvbnN0IGF1dG8gaG9zdEJlZ2luID0gaXRlcmF0b3I7CisgICAg
CisgICAgTENoYXJCdWZmZXIgdXRmOEVuY29kZWQ7CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVu
ZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgq
aXRlcmF0b3IpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKml0ZXJhdG9yID09
ICc6JykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUko
Kml0ZXJhdG9yKSkpCisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKwor
ICAgICAgICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKCppdGVyYXRvcikpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOworICAg
ICAgICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAgICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVy
LCBvZmZzZXQsICppdGVyYXRvcik7CisgICAgICAgIHV0ZjhFbmNvZGVkLmFwcGVuZChidWZmZXIs
IG9mZnNldCk7CisgICAgfQorICAgIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGVkID0gcGVyY2Vu
dERlY29kZSh1dGY4RW5jb2RlZC5kYXRhKCksIHV0ZjhFbmNvZGVkLnNpemUoKSwgaG9zdEJlZ2lu
KTsKKyAgICBTdHJpbmcgZG9tYWluID0gU3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5k
YXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CisgICAgaWYgKGRvbWFpbi5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhwZXJj
ZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSkpCisgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgIGF1dG8gYXNjaWlEb21haW4gPSBkb21haW5Ub0FT
Q0lJKCpkb21haW4uaW1wbCgpLCBob3N0QmVnaW4pOworICAgIGlmICghYXNjaWlEb21haW4gfHwg
aGFzRm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbi52YWx1ZSgpKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIExDaGFyQnVmZmVyJiBhc2NpaURvbWFpblZhbHVlID0gYXNjaWlE
b21haW4udmFsdWUoKTsKKyAgICBjb25zdCBMQ2hhciogYXNjaWlEb21haW5DaGFyYWN0ZXJzID0g
YXNjaWlEb21haW5WYWx1ZS5kYXRhKCk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRI
b3N0KGhvc3RCZWdpbiwgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+KGFzY2lpRG9tYWluVmFsdWUu
YmVnaW4oKSwgYXNjaWlEb21haW5WYWx1ZS5lbmQoKSkpOworICAgIGlmIChhZGRyZXNzKSB7Cisg
ICAgICAgIHNlcmlhbGl6ZUlQdjQoYWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgbV91cmwubV9o
b3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9y
LmF0RW5kKCkpIHsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0
ZXJhdG9yKTsKKyAgICB9CisgICAgaWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGFzY2lpRG9tYWluQ2hhcmFjdGVycywgYXNjaWlEb21haW5WYWx1ZS5zaXplKCkpOwor
ICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgaWYg
KCFpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsK
KyAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgIHJldHVybiB0cnVlOworfQorCitzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5w
dXQpCit7CisgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJzaW9uKTsKKyAg
ICBpZiAodXRmOC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBh
dXRvIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7
Cit9CisKKy8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmxlbmNvZGVk
LXBhcnNlcgorYXV0byBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyBp
bnB1dCkgLT4gVVJMRW5jb2RlZEZvcm0KK3sKKyAgICBVUkxFbmNvZGVkRm9ybSBvdXRwdXQ7Cisg
ICAgZm9yIChTdHJpbmdWaWV3IGJ5dGVzIDogaW5wdXQuc3BsaXQoJyYnKSkgeworICAgICAgICBh
dXRvIGVxdWFsSW5kZXggPSBieXRlcy5maW5kKCc9Jyk7CisgICAgICAgIGlmIChlcXVhbEluZGV4
ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVjb2RlKGJ5
dGVzLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKKyAgICAgICAgICAgIGlmIChuYW1l
KQorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIGVtcHR5U3Ry
aW5nKCkgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3Jt
VVJMRGVjb2RlKGJ5dGVzLnN1YnN0cmluZygwLCBlcXVhbEluZGV4KS50b1N0cmluZygpLnJlcGxh
Y2UoJysnLCAweDIwKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gZm9ybVVSTERlY29kZShi
eXRlcy5zdWJzdHJpbmcoZXF1YWxJbmRleCArIDEpLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4
MjApKTsKKyAgICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVlKQorICAgICAgICAgICAgICAgIG91
dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIHZhbHVlLnZhbHVlKCkgfSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworc3RhdGljIHZvaWQgc2VyaWFsaXplVVJM
RW5jb2RlZEZvcm0oY29uc3QgU3RyaW5nJiBpbnB1dCwgVmVjdG9yPExDaGFyPiYgb3V0cHV0KQor
eworICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CisgICAgY29u
c3QgY2hhciogZGF0YSA9IHV0ZjguZGF0YSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dXRmOC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IGNoYXIgYnl0ZSA9IGRhdGFbaV07
CisgICAgICAgIGlmIChieXRlID09IDB4MjApCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDB4
MkIpOworICAgICAgICBlbHNlIGlmIChieXRlID09IDB4MkEKKyAgICAgICAgICAgIHx8IGJ5dGUg
PT0gMHgyRAorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDJFCisgICAgICAgICAgICB8fCAoYnl0
ZSA+PSAweDMwICYmIGJ5dGUgPD0gMHgzOSkKKyAgICAgICAgICAgIHx8IChieXRlID49IDB4NDEg
JiYgYnl0ZSA8PSAweDVBKQorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDVGCisgICAgICAgICAg
ICB8fCAoYnl0ZSA+PSAweDYxICYmIGJ5dGUgPD0gMHg3QSkpIC8vIEZJWE1FOiBQdXQgdGhlc2Ug
aW4gdGhlIGNoYXJhY3RlckNsYXNzVGFibGUgdG8gYXZvaWQgYnJhbmNoZXMuCisgICAgICAgICAg
ICBvdXRwdXQuYXBwZW5kKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwZXJjZW50
RW5jb2RlQnl0ZShieXRlLCBvdXRwdXQpOworICAgIH0KK30KKyAgICAKK1N0cmluZyBVUkxQYXJz
ZXI6OnNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYgdHVwbGVzKQoreworICAgIGlmICh0
dXBsZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPExDaGFy
PiBvdXRwdXQ7CisgICAgZm9yIChhdXRvJiB0dXBsZSA6IHR1cGxlcykgeworICAgICAgICBpZiAo
IW91dHB1dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCcmJyk7CisgICAg
ICAgIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3JtKHR1cGxlLmtleSwgb3V0cHV0KTsKKyAgICAgICAg
b3V0cHV0LmFwcGVuZCgnPScpOworICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBs
ZS52YWx1ZSwgb3V0cHV0KTsKKyAgICB9CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92
ZShvdXRwdXQpKTsKK30KKworY29uc3QgVUlETkEmIFVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERv
bWFpbk5hbWVUcmFuc2NvZGVyKCkKK3sKKyAgICBzdGF0aWMgVUlETkEqIGVuY29kZXI7CisgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7CisgICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAg
ICAgIC8vIFdhcm5pbmc6IFBsZWFzZSBjb250YWN0IGEgV2ViS2l0R1RLKyBkZXZlbG9wZXIgaWYg
Y2hhbmdpbmcgdGhlc2UgZmxhZ3MuCisgICAgICAgIC8vIFRoZXkgc2hvdWxkIGJlIHN5bmNlZCB3
aXRoIGVwaHlfdXJpX2RlY29kZSgpIGluIGVwaHktdXJpLWhlbHBlcnMuYy4KKyAgICAgICAgZW5j
b2RlciA9IHVpZG5hX29wZW5VVFM0NihVSUROQV9DSEVDS19CSURJIHwgVUlETkFfQ0hFQ0tfQ09O
VEVYVEogfCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fVU5JQ09ERSB8IFVJRE5BX05PTlRSQU5T
SVRJT05BTF9UT19BU0NJSSwgJmVycm9yKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoVV9TVUND
RVNTKGVycm9yKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuY29kZXIpOworICAgIH0pOwor
ICAgIHJldHVybiAqZW5jb2RlcjsKK30KKworYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFs
KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIFVSTF9QQVJTRVJfTE9HKCIlZCAl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlc1xuJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJWQgJXMiLAorICAgICAgICBhLm1faXNWYWxpZCwKKyAgICAgICAgYS5tX2Nh
bm5vdEJlQUJhc2VVUkwsCisgICAgICAgIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAorICAg
ICAgICBhLm1fc2NoZW1lRW5kLAorICAgICAgICBhLm1fdXNlclN0YXJ0LAorICAgICAgICBhLm1f
dXNlckVuZCwKKyAgICAgICAgYS5tX3Bhc3N3b3JkRW5kLAorICAgICAgICBhLm1faG9zdEVuZCwK
KyAgICAgICAgYS5tX2hvc3RFbmQgKyBhLm1fcG9ydExlbmd0aCwKKyAgICAgICAgYS5tX3BhdGhB
ZnRlckxhc3RTbGFzaCwKKyAgICAgICAgYS5tX3BhdGhFbmQsCisgICAgICAgIGEubV9xdWVyeUVu
ZCwKKyAgICAgICAgYS5tX3N0cmluZy51dGY4KCkuZGF0YSgpLAorICAgICAgICBiLm1faXNWYWxp
ZCwKKyAgICAgICAgYi5tX2Nhbm5vdEJlQUJhc2VVUkwsCisgICAgICAgIGIubV9wcm90b2NvbElz
SW5IVFRQRmFtaWx5LAorICAgICAgICBiLm1fc2NoZW1lRW5kLAorICAgICAgICBiLm1fdXNlclN0
YXJ0LAorICAgICAgICBiLm1fdXNlckVuZCwKKyAgICAgICAgYi5tX3Bhc3N3b3JkRW5kLAorICAg
ICAgICBiLm1faG9zdEVuZCwKKyAgICAgICAgYi5tX2hvc3RFbmQgKyBiLm1fcG9ydExlbmd0aCwK
KyAgICAgICAgYi5tX3BhdGhBZnRlckxhc3RTbGFzaCwKKyAgICAgICAgYi5tX3BhdGhFbmQsCisg
ICAgICAgIGIubV9xdWVyeUVuZCwKKyAgICAgICAgYi5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsK
KworICAgIHJldHVybiBhLm1fc3RyaW5nID09IGIubV9zdHJpbmcKKyAgICAgICAgJiYgYS5tX2lz
VmFsaWQgPT0gYi5tX2lzVmFsaWQKKyAgICAgICAgJiYgYS5tX2Nhbm5vdEJlQUJhc2VVUkwgPT0g
Yi5tX2Nhbm5vdEJlQUJhc2VVUkwKKyAgICAgICAgJiYgYS5tX3Byb3RvY29sSXNJbkhUVFBGYW1p
bHkgPT0gYi5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkKKyAgICAgICAgJiYgYS5tX3NjaGVtZUVu
ZCA9PSBiLm1fc2NoZW1lRW5kCisgICAgICAgICYmIGEubV91c2VyU3RhcnQgPT0gYi5tX3VzZXJT
dGFydAorICAgICAgICAmJiBhLm1fdXNlckVuZCA9PSBiLm1fdXNlckVuZAorICAgICAgICAmJiBh
Lm1fcGFzc3dvcmRFbmQgPT0gYi5tX3Bhc3N3b3JkRW5kCisgICAgICAgICYmIGEubV9ob3N0RW5k
ID09IGIubV9ob3N0RW5kCisgICAgICAgICYmIGEubV9wb3J0TGVuZ3RoID09IGIubV9wb3J0TGVu
Z3RoCisgICAgICAgICYmIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gYi5tX3BhdGhBZnRlckxh
c3RTbGFzaAorICAgICAgICAmJiBhLm1fcGF0aEVuZCA9PSBiLm1fcGF0aEVuZAorICAgICAgICAm
JiBhLm1fcXVlcnlFbmQgPT0gYi5tX3F1ZXJ5RW5kOworfQorCitib29sIFVSTFBhcnNlcjo6aW50
ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVybiB1cmwu
bV9zY2hlbWVFbmQgPD0gdXJsLm1fdXNlclN0YXJ0CisgICAgICAgICYmIHVybC5tX3VzZXJTdGFy
dCA8PSB1cmwubV91c2VyRW5kCisgICAgICAgICYmIHVybC5tX3VzZXJFbmQgPD0gdXJsLm1fcGFz
c3dvcmRFbmQKKyAgICAgICAgJiYgdXJsLm1fcGFzc3dvcmRFbmQgPD0gdXJsLm1faG9zdEVuZAor
ICAgICAgICAmJiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aCA8PSB1cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2gKKyAgICAgICAgJiYgdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IHVy
bC5tX3BhdGhFbmQKKyAgICAgICAgJiYgdXJsLm1fcGF0aEVuZCA8PSB1cmwubV9xdWVyeUVuZAor
ICAgICAgICAmJiB1cmwubV9xdWVyeUVuZCA8PSB1cmwubV9zdHJpbmcubGVuZ3RoKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2Vy
LmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTI1YjU0MDIyMzQw
YTllODhiZWQ4Y2NmMTcwMDM5Mjc3N2ZlNzJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvVVJMUGFyc2VyLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKK3N0cnVjdCBVSUROQTsKKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQ
b2ludEl0ZXJhdG9yOworCitjbGFzcyBVUkxQYXJzZXIgeworcHVibGljOgorICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBV
UkwmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaW50ZXJuYWxWYWx1ZXND
b25zaXN0ZW50KGNvbnN0IFVSTCYpOworICAgIAorICAgIHVzaW5nIFVSTEVuY29kZWRGb3JtID0g
VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj47CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBVUkxFbmNvZGVkRm9ybSBwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmlu
Z1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShj
b25zdCBVUkxFbmNvZGVkRm9ybSYpOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF5YmVDYW5vbmljYWxpemVT
Y2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworCisgICAgc3RhdGljIGNvbnN0IFVJRE5BJiBp
bnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBpc0lu
VXNlckluZm9FbmNvZGVTZXQoVUNoYXIpOworCitwcml2YXRlOgorICAgIFVSTFBhcnNlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVs
bHB0cik7CisgICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9CisKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3
KTsKKyAgICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90
b2NvbChTdHJpbmdWaWV3KTsKKyAgICBmcmllbmQgY2xhc3MgVVJMOworCisgICAgVVJMIG1fdXJs
OworICAgIFZlY3RvcjxMQ2hhcj4gbV9hc2NpaUJ1ZmZlcjsKKyAgICBib29sIG1fdXJsSXNTcGVj
aWFsIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdXJsSXNGaWxlIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJIHsgZmFsc2UgfTsKKyAgICBTdHJpbmcgbV9pbnB1
dFN0cmluZzsKKyAgICBjb25zdCB2b2lkKiBtX2lucHV0QmVnaW4geyBudWxscHRyIH07CisKKyAg
ICBib29sIG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZSA9IDIwNDg7CisgICAgdXNpbmcg
TENoYXJCdWZmZXIgPSBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPjsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2UoY29uc3QgQ2hh
cmFjdGVyVHlwZSosIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVVJMJiwgY29uc3QgVVJM
VGV4dEVuY29kaW5nKik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9p
ZCBwYXJzZUF1dGhvcml0eShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZUhvc3RBbmRQb3J0KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBib29sIHBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYpOworCisgICAgdm9pZCBmYWlsdXJlKCk7CisgICAgZW51bSBjbGFzcyBSZXBvcnRTeW50
YXhWaW9sYXRpb24geyBObywgWWVzIH07CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZpb2xhdGlvbiA9IFJlcG9y
dFN5bnRheFZpb2xhdGlvbjo6WWVzPgorICAgIHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpIHsgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCByZXBv
cnRTeW50YXhWaW9sYXRpb24+KGl0ZXJhdG9yLCBpdGVyYXRvcik7IH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50
YXhWaW9sYXRpb246Olllcz4KKyAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRl
cmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gYm9vbCB0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHZvaWQgc3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1Bl
cmNlbnRFbmNvZGVkRG90KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzV2luZG93c0RyaXZlTGV0dGVy
KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGJvb2wgaXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBzaG91
bGRDb3B5RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBjaGVja0xvY2FsaG9zdENvZGVQb2lu
dChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIFVDaGFyMzIpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgYm9vbCBpc0xvY2FsaG9zdChTdHJpbmdWaWV3
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVTaW5n
bGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29uc3VtZURvdWJsZURvdFBh
dGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBzaXplX3QgY3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJ
bnRlZ2VyVHlwZT4gdm9pZCBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdl
clR5cGUpOworICAgIHRlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgdXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpv
cHRpb25hbDxMQ2hhckJ1ZmZlcj4gZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9u
UG9zaXRpb24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExDaGFyQnVm
ZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9u
KTsKKyAgICBzdGF0aWMgTENoYXJCdWZmZXIgcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNp
emVfdCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBmb3JtVVJMRGVjb2RlKFN0
cmluZ1ZpZXcgaW5wdXQpOworICAgIHN0YXRpYyBib29sIGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9p
bnQoY29uc3QgTENoYXJCdWZmZXImKTsKKyAgICB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4
X3QpOworICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyKTsKKyAgICB2b2lkIGFw
cGVuZFRvQVNDSUlCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmRU
b0FTQ0lJQnVmZmVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qgc2l6ZSkgeyBhcHBl
bmRUb0FTQ0lJQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNoYXJhY3RlcnMp
LCBzaXplKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgZW5j
b2RlTm9uVVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIHNvdXJjZSwgY29uc3QgVVJMVGV4
dEVuY29kaW5nJiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHZvaWQg
Y29weUFTQ0lJU3RyaW5nVW50aWwoY29uc3QgU3RyaW5nJiwgc2l6ZV90IGxlbmd0aCk7CisgICAg
Ym9vbCBjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmKTsKKyAgICBTdHJpbmdW
aWV3IHBhcnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCk7CisgICAgVUNo
YXIgcGFyc2VkRGF0YVZpZXcoc2l6ZV90IHBvc2l0aW9uKTsKKworICAgIHVzaW5nIElQdjRBZGRy
ZXNzID0gdWludDMyX3Q7CisgICAgdm9pZCBzZXJpYWxpemVJUHY0KElQdjRBZGRyZXNzKTsKKyAg
ICBlbnVtIGNsYXNzIElQdjRQYXJzaW5nRXJyb3I7CisgICAgZW51bSBjbGFzcyBJUHY0UGllY2VQ
YXJzaW5nRXJyb3I7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRh
eFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8SVB2NEFkZHJlc3Ms
IElQdjRQYXJzaW5nRXJyb3I+IHBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbj4mLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0
ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRQ
aWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xh
dGlvbik7CisgICAgdXNpbmcgSVB2NkFkZHJlc3MgPSBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PjsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQdjZB
ZGRyZXNzPiBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlv
bmFsPElQdjRBZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdm9pZCBzZXJpYWxpemVJUHY2UGllY2UodWludDE2
X3QgcGllY2UpOworICAgIHZvaWQgc2VyaWFsaXplSVB2NihJUHY2QWRkcmVzcyk7CisKKyAgICBl
bnVtIGNsYXNzIFVSTFBhcnQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
dm9pZCBjb3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQsIGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYp
OworICAgIHN0YXRpYyBzaXplX3QgdXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYsIFVSTFBh
cnQpOworICAgIHZvaWQgcG9wUGF0aCgpOworICAgIGJvb2wgc2hvdWxkUG9wUGF0aCh1bnNpZ25l
ZCk7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY2NjVh
OGQwZmZiOTYzNDkyMDY0NTMxNzA1YmMxY2I5MzNiYjc4ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCisKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1l
c3BhY2UgV1RGIHsKKworUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCit7CisgICAg
Ly8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdo
ZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAv
LyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBu
b3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCisgICAgLy8gY291
bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBl
bmNvZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjaworICAgIC8vIG9udG8gdXNp
bmcgSVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBy
ZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIGJhc2VVUkwsIHRydWUpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0g
YWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEs
IGJhc2VVUkwsIHRydWUpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIGdldFVSTEJ5
dGVzKENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQoreworICAgIENGSW5kZXgg
Ynl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7CisgICAgcmVzdWx0LnJlc2l6
ZShieXRlc0xlbmd0aCk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXMo
dXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVuZ3Ro
KTsKKyAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRlc0xl
bmd0aCk7Cit9CisKK3ZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiByZXN1
bHQpCit7CisgICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAw
KTsKKyAgICBjaGFyKiBieXRlczsKKyAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxp
emVkKGJ5dGVzTGVuZ3RoLCBieXRlcyk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJM
R2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0
aCk7CisgICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNM
ZW5ndGgpOworfQorCitib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25z
dCBVUkwmIHVybCkKK3sKKyAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7
CisKKyAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCisgICAg
ICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9
KTsKKworICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5
dGVzKTsKKyAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5zaXpl
KCkpIH07CisKKyAgICBpZiAoIXVybC5oYXNQYXRoKCkpCisgICAgICAgIHJldHVybiBTdHJpbmdW
aWV3IHsgdXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7CisKKyAgICBhdXRvIHVybFdpdGhv
dXRQYXRoID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwucGF0
aFN0YXJ0KCkgKyAxKTsKKyAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxXaXRo
b3V0UGF0aCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0
cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhYzQ5
YzNmMzdmNjUwMGU5NjNhZWQ1YjA0ZDA5OGYzODUxZjBlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIENGVVJMRXh0cmFzX2gKKyNkZWZpbmUgQ0ZVUkxFeHRyYXNfaAorCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVVJMOwordHlwZWRl
ZiBWZWN0b3I8Y2hhciwgNTEyPiBVUkxDaGFyQnVmZmVyOworCitXVEZfRVhQT1JUX1BSSVZBVEUg
UmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciosIHNp
emVfdCwgQ0ZVUkxSZWYgYmFzZVVSTCA9IDApOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0
VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmLCBDU3RyaW5nJik7CisKK2Jvb2wgaXNDRlVSTFNhbWVP
cmlnaW4oQ0ZVUkxSZWYsIGNvbnN0IFVSTCYpOworCit9CisKKyNlbmRpZiAvLyBDRlVSTEV4dHJh
c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9jZi9VUkxDRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk1OTFlMmIzODRlYmIyMDZkNTIyMjdlYzlj
YmY5ZTc1ZDk1ODI1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1VSTENG
LmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CisKKyNpbmNsdWRlICJDRlVSTEV4dHJhcy5oIgorI2luY2x1ZGUgIlVSTFBhcnNl
ci5oIgorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGVVJMLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworVVJMOjpVUkwoQ0ZVUkxSZWYgdXJs
KQoreworICAgIGlmICghdXJsKSB7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2Ug
VVJMIGhlcmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAgICBnZXRVUkxCeXRlcyh1cmwsIHVy
bEJ5dGVzKTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKHVybEJ5dGVzLmRhdGEoKSk7CisgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKKyNpZiAhVVNFKEZPVU5EQVRJT04pCitSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBX
aGF0IHNob3VsZCB0aGlzIHJldHVybiBmb3IgaW52YWxpZCBVUkxzPworICAgIC8vIEN1cnJlbnRs
eSBpdCB0aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUg
c3RyaW5nIGluIHRoYXQgY2FzZSwKKyAgICAvLyB3aGljaCBpcyBjbGVhcmx5IHdyb25nLgorICAg
IFVSTENoYXJCdWZmZXIgYnVmZmVyOworICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOworICAgIGF1
dG8gY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisKKyAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NGVVJMU2Ft
ZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBjZlVSTDsKK30KKyNlbmRpZgorCitTdHJpbmcgVVJMOjpmaWxlU3lzdGVtUGF0
aCgpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTCA9IGNyZWF0ZUNGVVJM
KCk7CisgICAgaWYgKCFjZlVSTCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisjaWYgUExB
VEZPUk0oV0lOKQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQ
YXRoU3R5bGU7CisjZWxzZQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFBP
U0lYUGF0aFN0eWxlOworI2VuZGlmCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5
c3RlbVBhdGgoY2ZVUkwuZ2V0KCksIHBhdGhTdHlsZSkpLmdldCgpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQzMmU0YjMzZDI0ODdkYjcwZmY0ZDM5
YjBiZDQzZTlmODlhYTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TlNVUkxFeHRyYXMuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA3LCAyMDEyLCAyMDE0IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAK
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAY2xhc3MgTlNTdHJp
bmc7CitAY2xhc3MgTlNVUkw7CisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQT1JUX1BSSVZB
VEUgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopOworV1RGX0VYUE9SVF9QUklW
QVRFIE5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNl
VVJMKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJ
VkFURSBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICopOworV1RGX0VYUE9SVF9Q
UklWQVRFIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsgLy8gUmV0dXJuIHZh
bHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAqZW5j
b2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJy
b3IuCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3Rl
ckJlZm9yZUNvbXBvbmVudChOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOworV1RGX0VYUE9S
VF9QUklWQVRFIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKiwgTlNVUkwgKmJhc2VVUkwpOwor
V1RGX0VYUE9SVF9QUklWQVRFIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOworV1RG
X0VYUE9SVF9QUklWQVRFIE5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKiwg
Q0ZVUkxDb21wb25lbnRUeXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJMV2l0aFVz
ZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOworCitO
U1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
Qk9PTCBpc1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICopOworV1RGX0VYUE9SVF9QUklWQVRFIEJP
T0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKik7CisKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmZjOGYxNjhkZTA1
NmM1YjJhMjk3MjFmMGJkN2I5ZjZmMTIzNDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTAsMCArMSwxMjM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0
ICJOU1VSTEV4dHJhcy5oIgorCisjaW1wb3J0ICJDRlVSTEV4dHJhcy5oIgorI2ltcG9ydCAiVVJM
UGFyc2VyLmgiCisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi9IZXhOdW1i
ZXIuaD4KKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8dW5pY29kZS91Y2hh
ci5oPgorI2ltcG9ydCA8dW5pY29kZS91aWRuYS5oPgorI2ltcG9ydCA8dW5pY29kZS91c2NyaXB0
Lmg+CisKKy8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBu
YW1lLgorLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSURO
IGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgorI2RlZmluZSBIT1NUX05B
TUVfQlVGRkVSX0xFTkdUSCAyMDQ4CisjZGVmaW5lIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIIDIw
NDgKKwordHlwZWRlZiB2b2lkICgqIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uKShOU1N0cmlu
ZyAqLCBOU1JhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+Jik7CisKK3N0YXRpYyB1aW50
MzJfdCBJRE5TY3JpcHRXaGl0ZUxpc3RbKFVTQ1JJUFRfQ09ERV9MSU1JVCArIDMxKSAvIDMyXTsK
KworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBib29sIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFy
YWN0ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgcmV0dXJuIGNvZGVQb2ludCA9PSAweDA1
NDggfHwgY29kZVBvaW50ID09IDB4MDU0RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQ
b2ludCA9PSAweDA1N0Q7Cit9CisKK3N0YXRpYyBib29sIGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0
ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19F
UlJPUjsKKyAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjb2RlUG9p
bnQsICZlcnJvcik7CisgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgeworICAgICAgICBM
T0dfRVJST1IoImdvdCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czog
JWQiLCBlcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
c2NyaXB0ID09IFVTQ1JJUFRfQVJNRU5JQU47Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIo
Q2hhcmFjdGVyVHlwZSBjaGFyQ29kZSkKK3sKKyAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1
YXRpb24oY2hhckNvZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGluZ3Mg
dGhlIFVSTCBQYXJzZXIgcmVqZWN0czoKKyAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7CisgICAgY2Fz
ZSAnIyc6CisgICAgY2FzZSAnJSc6CisgICAgY2FzZSAnLyc6CisgICAgY2FzZSAnOic6CisgICAg
Y2FzZSAnPyc6CisgICAgY2FzZSAnQCc6CisgICAgY2FzZSAnWyc6CisgICAgY2FzZSAnXFwnOgor
ICAgIGNhc2UgJ10nOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCisKKworc3RhdGljIEJPT0wgaXNMb29rYWxpa2VD
aGFyYWN0ZXIoc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIz
MiBjaGFyQ29kZSkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5n
IGFzIHVuc2FmZSwgbG9va2FsaWtlIGNoYXJhY3RlcnM6CisgICAgLy8gYW55IG5vbi1wcmludGFi
bGUgY2hhcmFjdGVyLCBhbnkgY2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKKyAg
ICAvLyBhbnkgaWdub3JhYmxlIGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRl
ZCB0byBsb2Nrcy4KKyAgICAKKyAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3Rl
cnMgaW4gTW96aWxsYSdzIGJsYWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3
b3JrLklETi5ibGFja2xpc3RfY2hhcnM+LgorCisgICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVy
cyBoZXJlIHdpbGwgbmV2ZXIgYXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgorICAgIC8vIEZv
ciBleGFtcGxlLCBJQ1UgdHJhbnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNl
IGFuZCBtb3N0CisgICAgLy8gc2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUg
b2YgdGhlIHR3byBjYWxsZXJzIHVzZXMgdGhpcworICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBo
YXZlIG5vdCBiZWVuIHByb2Nlc3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgor
ICAgIAorICAgIGlmICghdV9pc3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hh
ckNvZGUpIHx8IHVfaGFzQmluYXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdO
T1JBQkxFX0NPREVfUE9JTlQpKQorICAgICAgICByZXR1cm4gWUVTOworICAgIAorICAgIHN3aXRj
aCAoY2hhckNvZGUpIHsKKyAgICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBP
TkUgUVVBUlRFUiAqLworICAgICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9OIE9O
RSBIQUxGICovCisgICAgICAgIGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUg
UVVBUlRFUlMgKi8KKyAgICAgICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRFUiBJ
IFdJVEggQUNVVEUgKi8KKyAgICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBSRVRS
T0ZMRVggQ0xJQ0sgKi8KKyAgICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExFVFRF
UiBBTFBIQSAqLworICAgICAgICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIFND
UklQVCBHICovCisgICAgICAgIGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJQU5H
VUxBUiBDT0xPTiAqLworICAgICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JUIFNU
Uk9LRSBPVkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQg
U09MSURVUyBPVkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcgTE9O
RyBTT0xJRFVTIE9WRVJMQVkgKi8KKyAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZV
TEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICov
CisgICAgICAgIGNhc2UgMHgwNUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRICov
CisgICAgICAgIGNhc2UgMHgwNUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRICov
CisgICAgICAgIGNhc2UgMHgwNUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICov
CisgICAgICAgIGNhc2UgMHgwNjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04gKi8K
KyAgICAgICAgY2FzZSAweDA2MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJ
R04gKi8KKyAgICAgICAgY2FzZSAweDA2NTA6IC8qIEFSQUJJQyBLQVNSQSAqLworICAgICAgICBj
YXNlIDB4MDY2MDogLyogQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KKyAgICAgICAgY2FzZSAw
eDA2NkE6IC8qIEFSQUJJQyBQRVJDRU5UIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDA2RDQ6IC8q
IEFSQUJJQyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDA2RjA6IC8qIEVYVEVOREVEIEFS
QUJJQyBJTkRJQyBESUdJVCBaRVJPICovCisgICAgICAgIGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMg
U1VQUkFMSU5FQVIgRlVMTCBTVE9QICovCisgICAgICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMg
U1VCTElORUFSIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MDcwMzogLyogU1lSSUFDIFNV
UFJBTElORUFSIENPTE9OICovCisgICAgICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJQUMgU1VCTElO
RUFSIENPTE9OICovCisgICAgICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQ
VU5DVFVBVElPTiAqLworICAgICAgICBjYXNlIDB4MUQwNDogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgQyAqLworICAgICAgICBjYXNlIDB4MUQwRjogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgTyAqLworICAgICAgICBjYXNlIDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgVSAqLworICAgICAgICBjYXNlIDB4MUQyMDogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgViAqLworICAgICAgICBjYXNlIDB4MUQyMTogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgVyAqLworICAgICAgICBjYXNlIDB4MUQyMjogLyogTEFUSU4gTEVUVEVSIFNNQUxM
IENBUElUQUwgWiAqLworICAgICAgICBjYXNlIDB4MUVDRDogLyogTEFUSU4gU01BTEwgTEVUVEVS
IE8gV0lUSCBET1QgQkVMT1cgKi8KKyAgICAgICAgY2FzZSAweDIwMTA6IC8qIEhZUEhFTiAqLwor
ICAgICAgICBjYXNlIDB4MjAxMTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLworICAgICAgICBj
YXNlIDB4MjAyNDogLyogT05FIERPVCBMRUFERVIgKi8KKyAgICAgICAgY2FzZSAweDIwMjc6IC8q
IEhZUEhFTkFUSU9OIFBPSU5UICovCisgICAgICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVG
VC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4MjAzQTog
LyogU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICovCisgICAgICAg
IGNhc2UgMHgyMDQxOiAvKiBDQVJFVCBJTlNFUlRJT04gUE9JTlQgKi8KKyAgICAgICAgY2FzZSAw
eDIwNDQ6IC8qIEZSQUNUSU9OIFNMQVNIICovCisgICAgICAgIGNhc2UgMHgyMDUyOiAvKiBDT01N
RVJDSUFMIE1JTlVTIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFD
VElPTiBPTkUgVEhJUkQgKi8KKyAgICAgICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElP
TiBUV08gVEhJUkRTICovCisgICAgICAgIGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04g
T05FIEZJRlRIICovCisgICAgICAgIGNhc2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdP
IEZJRlRIUyAqLworICAgICAgICBjYXNlIDB4MjE1NzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVF
IEZJRlRIUyAqLworICAgICAgICBjYXNlIDB4MjE1ODogLyogVlVMR0FSIEZSQUNUSU9OIEZPVVIg
RklGVEhTICovCisgICAgICAgIGNhc2UgMHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJ
WFRIICovCisgICAgICAgIGNhc2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhU
SFMgKi8KKyAgICAgICAgY2FzZSAweDIxNUI6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFQg
Ki8KKyAgICAgICAgY2FzZSAweDIxNUM6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhT
ICovCisgICAgICAgIGNhc2UgMHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhT
ICovCisgICAgICAgIGNhc2UgMHgyMTVFOiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRI
UyAqLworICAgICAgICBjYXNlIDB4MjE1RjogLyogRlJBQ1RJT04gTlVNRVJBVE9SIE9ORSAqLwor
ICAgICAgICBjYXNlIDB4MjIxMjogLyogTUlOVVMgU0lHTiAqLworICAgICAgICBjYXNlIDB4MjIx
NTogLyogRElWSVNJT04gU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDIyMTY6IC8qIFNFVCBNSU5V
UyAqLworICAgICAgICBjYXNlIDB4MjIzNjogLyogUkFUSU8gKi8KKyAgICAgICAgY2FzZSAweDIz
M0Y6IC8qIEFQTCBGVU5DVElPTkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KKyAgICAgICAgY2FzZSAw
eDIzQUU6IC8qIElOVEVHUkFMIEVYVEVOU0lPTiAqLworICAgICAgICBjYXNlIDB4MjQ0QTogLyog
T0NSIERPVUJMRSBCQUNLU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlU
eXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVG
VCAqLworICAgICAgICBjYXNlIDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBM
SUdIVCBESUFHT05BTCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUICovCisgICAgICAgIGNhc2Ug
MHgyOUY2OiAvKiBTT0xJRFVTIFdJVEggT1ZFUkJBUiAqLworICAgICAgICBjYXNlIDB4MjlGODog
LyogQklHIFNPTElEVVMgKi8KKyAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVT
IEJJTkFSWSBSRUxBVElPTiAqLworICAgICAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElE
VVMgT1BFUkFUT1IgKi8KKyAgICAgICAgY2FzZSAweDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NS
SVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIFJJR0hUICovCisgICAgICAgIGNhc2UgMHgyRkYxOiAv
KiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KKyAg
ICAgICAgY2FzZSAweDJGRjI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBM
RUZUIFRPIE1JRERMRSBBTkQgUklHSFQgKi8KKyAgICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9H
UkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICov
CisgICAgICAgIGNhc2UgMHgyRkY0OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNU
RVIgRlVMTCBTVVJST1VORCAqLworICAgICAgICBjYXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMg
REVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQUJPVkUgKi8KKyAgICAgICAgY2Fz
ZSAweDJGRjY6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBG
Uk9NIEJFTE9XICovCisgICAgICAgIGNhc2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQ
VElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMRUZUICovCisgICAgICAgIGNhc2UgMHgyRkY4
OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBF
UiBMRUZUICovCisgICAgICAgIGNhc2UgMHgyRkY5OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElP
TiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBSSUdIVCAqLworICAgICAgICBjYXNlIDB4
MkZGQTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00g
TE9XRVIgTEVGVCAqLworICAgICAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJ
UFRJT04gQ0hBUkFDVEVSIE9WRVJMQUlEICovCisgICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVP
R1JBUEhJQyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUg
QlJBQ0tFVCAqLworICAgICAgICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBC
UkFDS0VUICovCisgICAgICAgIGNhc2UgMHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBC
UkFDS0VUICovCisgICAgICAgIGNhc2UgMHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBN
QVJLIFVQUEVSIEhBTEYgKi8KKyAgICAgICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEg
UkVQRUFUIE1BUksgTE9XRVIgSEFMRiAqLworICAgICAgICBjYXNlIDB4MzIxRDogLyogUEFSRU5U
SEVTSVpFRCBLT1JFQU4gQ0hBUkFDVEVSIE9KRU9OICovCisgICAgICAgIGNhc2UgMHgzMjFFOiAv
KiBQQVJFTlRIRVNJWkVEIEtPUkVBTiBDSEFSQUNURVIgTyBIVSAqLworICAgICAgICBjYXNlIDB4
MzNBRTogLyogU1FVQVJFIFJBRCBPVkVSIFMgKi8KKyAgICAgICAgY2FzZSAweDMzQUY6IC8qIFNR
VUFSRSBSQUQgT1ZFUiBTIFNRVUFSRUQgKi8KKyAgICAgICAgY2FzZSAweDMzQzY6IC8qIFNRVUFS
RSBDIE9WRVIgS0cgKi8KKyAgICAgICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9WRVIgTSAq
LworICAgICAgICBjYXNlIDB4MDVCOTogLyogSEVCUkVXIFBPSU5UIEhPTEFNICovCisgICAgICAg
IGNhc2UgMHgwNUJBOiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZBViAqLworICAg
ICAgICBjYXNlIDB4MDVDMTogLyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCisgICAgICAgIGNh
c2UgMHgwNUMyOiAvKiBIRUJSRVcgUE9JTlQgU0lOIERPVCAqLworICAgICAgICBjYXNlIDB4MDVD
NDogLyogSEVCUkVXIE1BUksgVVBQRVIgRE9UICovCisgICAgICAgIGNhc2UgMHhBNzMxOiAvKiBM
QVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBTICovCisgICAgICAgIGNhc2UgMHhBNzcxOiAvKiBM
QVRJTiBTTUFMTCBMRVRURVIgRFVNICovCisgICAgICAgIGNhc2UgMHhBNzg5OiAvKiBNT0RJRklF
UiBMRVRURVIgQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBG
T1JNIEZPUiBWRVJUSUNBTCBTRU1JQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZFMTU6IC8qIFBS
RVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFWENMQU1BVElPTiBNQVJLICovCisgICAgICAg
IGNhc2UgMHhGRTNGOiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdM
RSBCUkFDS0VUICovCisgICAgICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNF
IFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRP
UlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZGMEU6IC8qIEZVTExXSURU
SCBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09MSURV
UyAqLworICAgICAgICBjYXNlIDB4RkY2MTogLyogSEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwg
U1RPUCAqLworICAgICAgICBjYXNlIDB4RkZGQzogLyogT0JKRUNUIFJFUExBQ0VNRU5UIENIQVJB
Q1RFUiAqLworICAgICAgICBjYXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICov
CisgICAgICAgIGNhc2UgMHgxRjUwRjogLyogTE9DSyBXSVRIIElOSyBQRU4gKi8KKyAgICAgICAg
Y2FzZSAweDFGNTEwOiAvKiBDTE9TRUQgTE9DSyBXSVRIIEtFWSAqLworICAgICAgICBjYXNlIDB4
MUY1MTE6IC8qIEtFWSAqLworICAgICAgICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sgKi8KKyAgICAg
ICAgY2FzZSAweDFGNTEzOiAvKiBPUEVOIExPQ0sgKi8KKyAgICAgICAgICAgIHJldHVybiBZRVM7
CisgICAgICAgIGNhc2UgMHgwMzA3OiAvKiBDT01CSU5JTkcgRE9UIEFCT1ZFICovCisgICAgICAg
ICAgICByZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMjM3IC8qIExBVElOIFNNQUxMIExF
VFRFUiBET1RMRVNTIEogKi8KKyAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9
PSAweDAxMzEgLyogTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSSAqLworICAgICAgICAgICAg
ICAgIHx8IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExFVFRFUiBWQVYg
Ki8KKyAgICAgICAgY2FzZSAweDA1NDg6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPICov
CisgICAgICAgIGNhc2UgMHgwNTREOiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUggKi8K
KyAgICAgICAgY2FzZSAweDA1Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLworICAg
ICAgICBjYXNlIDB4MDU3RDogLyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNFSCAqLworICAgICAg
ICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50CisgICAgICAgICAgICAgICAgJiYgIWlzQVND
SUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCisg
ICAgICAgICAgICAgICAgJiYgIWlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJldmlvdXNDb2Rl
UG9pbnQudmFsdWUoKSk7CisgICAgICAgIGNhc2UgJy4nOgorICAgICAgICAgICAgcmV0dXJuIE5P
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50
CisgICAgICAgICAgICAgICAgJiYgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91
c0NvZGVQb2ludC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICYmICEoaXNBcm1lbmlhblNjcmlw
dENoYXJhY3RlcihjaGFyQ29kZSkgfHwgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIo
Y2hhckNvZGUpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdoaXRlTGlzdElETlNjcmlwdChj
b25zdCBjaGFyKiBzY3JpcHROYW1lKQoreworICAgIGludDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9w
ZXJ0eVZhbHVlRW51bShVQ0hBUl9TQ1JJUFQsIHNjcmlwdE5hbWUpOworICAgIGlmIChzY3JpcHQg
Pj0gMCAmJiBzY3JpcHQgPCBVU0NSSVBUX0NPREVfTElNSVQpIHsKKyAgICAgICAgc2l6ZV90IGlu
ZGV4ID0gc2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQg
JSAzMik7CisgICAgICAgIElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gfD0gbWFzazsKKyAgICB9
Cit9CisKK3N0YXRpYyBCT09MIHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpm
aWxlbmFtZSkKK3sKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gTk87CisKKyAg
ICBGSUxFICpmaWxlID0gZm9wZW4oW2ZpbGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0s
ICJyIik7CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gTk87CisgICAgCisgICAgLy8g
UmVhZCBhIHdvcmQgYXQgYSB0aW1lLgorICAgIC8vIEFsbG93IGNvbW1lbnRzLCBzdGFydGluZyB3
aXRoICMgY2hhcmFjdGVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgICAgd2hpbGUgKDEpIHsK
KyAgICAgICAgLy8gU2tpcCBhIGNvbW1lbnQgaWYgcHJlc2VudC4KKyAgICAgICAgaWYgKGZzY2Fu
ZihmaWxlLCAiICMlKlteXG5ccl0lKltcblxyXSIpID09IEVPRikKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAKKyAgICAgICAgLy8gUmVhZCBhIHNjcmlwdCBuYW1lIGlmIHByZXNlbnQuCisg
ICAgICAgIGNoYXIgd29yZFszM107CisgICAgICAgIGludCByZXN1bHQgPSBmc2NhbmYoZmlsZSwg
IiAlMzJbXiMgXHRcblxyXSUqW14jIFx0XG5ccl0gIiwgd29yZCk7CisgICAgICAgIGlmIChyZXN1
bHQgPT0gRU9GKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBpZiAocmVz
dWx0ID09IDEpIHsKKyAgICAgICAgICAgIC8vIEdvdCBhIHdvcmQsIG1hcCB0byBzY3JpcHQgY29k
ZSBhbmQgcHV0IGl0IGludG8gdGhlIGFycmF5LgorICAgICAgICAgICAgd2hpdGVMaXN0SUROU2Ny
aXB0KHdvcmQpOworICAgICAgICB9CisgICAgfQorICAgIGZjbG9zZShmaWxlKTsKKyAgICByZXR1
cm4gWUVTOworfQorCitzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxp
c3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCit7CisgICAgc3RhdGljIGRp
c3BhdGNoX29uY2VfdCBmbGFnOworICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57CisgICAgICAg
IC8vIFJlYWQgd2hpdGUgbGlzdCBmcm9tIGxpYnJhcnkuCisgICAgICAgIE5TQXJyYXkgKmRpcnMg
PSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3Rvcnks
IE5TQWxsRG9tYWluc01hc2ssIFlFUyk7CisgICAgICAgIGludCBudW1EaXJzID0gW2RpcnMgY291
bnRdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykgeworICAgICAg
ICAgICAgaWYgKHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4
OmldIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50
eHQiXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0
IGNoYXIqIGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3RbMjBdID0geworICAgICAgICAgICAgIkNv
bW1vbiIsCisgICAgICAgICAgICAiSW5oZXJpdGVkIiwKKyAgICAgICAgICAgICJBcmFiaWMiLAor
ICAgICAgICAgICAgIkFybWVuaWFuIiwKKyAgICAgICAgICAgICJCb3BvbW9mbyIsCisgICAgICAg
ICAgICAiQ2FuYWRpYW5fQWJvcmlnaW5hbCIsCisgICAgICAgICAgICAiRGV2YW5hZ2FyaSIsCisg
ICAgICAgICAgICAiRGVzZXJldCIsCisgICAgICAgICAgICAiR3VqYXJhdGkiLAorICAgICAgICAg
ICAgIkd1cm11a2hpIiwKKyAgICAgICAgICAgICJIYW5ndWwiLAorICAgICAgICAgICAgIkhhbiIs
CisgICAgICAgICAgICAiSGVicmV3IiwKKyAgICAgICAgICAgICJIaXJhZ2FuYSIsCisgICAgICAg
ICAgICAiS2F0YWthbmFfT3JfSGlyYWdhbmEiLAorICAgICAgICAgICAgIkthdGFrYW5hIiwKKyAg
ICAgICAgICAgICJMYXRpbiIsCisgICAgICAgICAgICAiVGFtaWwiLAorICAgICAgICAgICAgIlRo
YWkiLAorICAgICAgICAgICAgIllpIiwKKyAgICAgICAgfTsKKyAgICAgICAgZm9yIChjb25zdCBj
aGFyKiBzY3JpcHROYW1lIDogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKKyAgICAgICAgICAg
IHdoaXRlTGlzdElETlNjcmlwdChzY3JpcHROYW1lKTsKKyAgICB9KTsKKyAgICAKKyAgICBpbnQz
Ml90IGkgPSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7
CisgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgVUNoYXIzMiBjOworICAgICAgICBV
MTZfTkVYVChidWZmZXIsIGksIGxlbmd0aCwgYykKKyAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9
IFVfWkVST19FUlJPUjsKKyAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRT
Y3JpcHQoYywgJmVycm9yKTsKKyAgICAgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29r
IGF0IHNjcmlwdHM6ICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAg
ICB9CisgICAgICAgIGlmIChzY3JpcHQgPCAwKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoImdv
dCBuZWdhdGl2ZSBudW1iZXIgZm9yIHNjcmlwdCBjb2RlIGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7
CisgICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNjcmlwdCA+
PSBVU0NSSVBUX0NPREVfTElNSVQpCisgICAgICAgICAgICByZXR1cm4gTk87CisKKyAgICAgICAg
c2l6ZV90IGluZGV4ID0gc2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8
IChzY3JpcHQgJSAzMik7CisgICAgICAgIGlmICghKElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0g
JiBtYXNrKSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgCisgICAgICAgIGlmIChp
c0xvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykpCisgICAgICAgICAgICBy
ZXR1cm4gTk87CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKKyAgICB9CisgICAgcmV0
dXJuIFlFUzsKK30KKworc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2Vk
QnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RG
OjpGdW5jdGlvbjxib29sKFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKK3sKKyAgICBBU1NF
UlQobGVuZ3RoID4gMCk7CisKKyAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0g
MDsgLS1pKSB7CisgICAgICAgIFVDaGFyIGNoID0gYnVmZmVyW2ldOworICAgICAgICAKKyAgICAg
ICAgaWYgKGNoYXJhY3RlcklzQWxsb3dlZChjaCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgCisgICAgICAgIC8vIE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExv
d2VyIGxldmVsIHJlZ2lzdHJhcnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgorICAgICAgICBp
ZiAoY2ggPT0gJy4nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisjZGVmaW5lIENIRUNLX1JV
TEVTX0lGX1NVRkZJWF9NQVRDSEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKKyAgICB7IFwKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBz
aXplb2Yoc3VmZml4WzBdKTsgXAorICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYm
IDAgPT0gbWVtY21wKGJ1ZmZlciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXpl
b2Yoc3VmZml4KSkpIFwKKyAgICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFt
ZUFsbG93ZWRCeVRMRFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlv
bik7IFwKKyAgICB9CisKK3N0YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIo
VUNoYXIgY2gpCit7CisgICAgLy8gT25seSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMg
YW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8
PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICct
JzsKK30KKworc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0
IFVDaGFyKiBidWZmZXIsIGludDMyX3QgbGVuZ3RoKQoreworICAgIC8vIFNraXAgdHJhaWxpbmcg
ZG90IGZvciByb290IGRvbWFpbi4KKyAgICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFdID09ICcuJykK
KyAgICAgICAgbGVuZ3RoLS07CisKKyAgICAvLyBodHRwOi8vY2N0bGQucnUvZmlsZXMvcGRmL2Rv
Y3MvcnVsZXNfcnUtcmYucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9
IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBFUgorICAgICAgICAweDA0NDQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgorICAgIH07
CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFu
RG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vcnVzbmFtZXMucnUvcnVsZXMu
cGwKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNSVVNbXSA9IHsKKyAgICAgICAgJy4n
LAorICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICAgICAw
eDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCisgICAgICAgIDB4MDQ0MSAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhf
TUFUQ0hFUyhjeXJpbGxpY1JVUywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAg
ICAvLyBodHRwOi8vcnUuZmFpdGlkLm9yZy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2
YS9pZG4KKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9IHsKKyAgICAg
ICAgJy4nLAorICAgICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQorICAg
ICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCisgICAgICAgIDB4MDQ0MSwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEtBCisgICAgICAgIDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IFZFCisgICAgICAgIDB4MDQzMCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICB9Owor
ICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZBLCBpc1J1c3Np
YW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9m
b3J1c2VyL2RvY3MvcmVncnVsZXMucGhwCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGlj
REVUSVtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01B
TEwgTEVUVEVSIERFCisgICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElF
CisgICAgICAgIDB4MDQ0MiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCisgICAgICAgIDB4
MDQzOCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKKyAgICB9OworICAgIENIRUNLX1JVTEVT
X0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljREVUSSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJh
Y3Rlcik7CisKKyAgICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBydWxlcyBub3QgcHVibGlzaGVk
LiBUaGUgd29yZCBpcyBSdXNzaWFuLCBzbyBvbmx5IGFsbG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0
aW1lLAorICAgIC8vIGFsdGhvdWdoIHdlIG1heSBuZWVkIHRvIHJldmlzZSB0aGUgY2hlY2tzIGlm
IHRoaXMgZW5kcyB1cCBiZWluZyB1c2VkIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBS
dXNzaWEuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT05MQVlOW10gPSB7CisgICAg
ICAgICcuJywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAg
ICAgICAweDA0M0QsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICAgICAweDA0M0Is
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAorICAgICAgICAweDA0MzAsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IFNIT1JUIEkKKyAgICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAg
ICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT05MQVlOLCBp
c1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9y
ZyAtIHNhbWUgYXMgYWJvdmUuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU0FZVFtd
ID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEVTCisgICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICAg
ICAgMHgwNDM5LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQorICAgICAgICAweDA0
NDIgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNf
SUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNTQVlULCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFj
dGVyKTsKKworICAgIC8vIGh0dHA6Ly9waXIub3JnL3Byb2R1Y3RzL29wci1kb21haW4vIC0gcnVs
ZXMgbm90IHB1Ymxpc2hlZC4gQWNjb3JkaW5nIHRvIHRoZSByZWdpc3RyeSBzaXRlLAorICAgIC8v
IHRoZSBpbnRlbmRlZCBhdWRpZW5jZSBpcyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xhdmljLXNwZWFr
aW5nIG1hcmtldHMiLgorICAgIC8vIENocm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lh
biwgc28gc3RpY2tpbmcgd2l0aCB0aGF0IGZvciBub3cuCisgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGN5cmlsbGljT1JHW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgTworICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBFUgorICAgICAgICAweDA0MzMgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKKyAg
ICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1
c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxl
cy5odG1sCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7CisgICAgICAg
ICcuJywKKyAgICAgICAgMHgwNDMxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKyAgICAg
ICAgMHgwNDM1LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKyAgICAgICAgMHgwNDNCICAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NV
RkZJWF9NQVRDSEVTKGN5cmlsbGljQkVMLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBSdXNz
aWFuIGFuZCBCeWVsb3J1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93
ZWQuCisgICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2gg
PT0gMHgwNDUxIHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5
IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0
cDovL3d3dy5uaWMua3ovZG9jcy9wb3J5YWRva192bmVkcmVuaXlhX2thel9ydS5wZGYKKyAgICBz
dGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNLQVpbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAg
ICAweDA0OUIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAg
ICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzNyAg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9T
VUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0tBWiwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gS2F6
YWtoIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1
cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9
PSAweDA0RDkgfHwgY2ggPT0gMHgwNDkzIHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMg
fHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0g
MHgwNEJCIHx8IGNoID09IDB4MDQ1NiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsK
KyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1
bGVzJTIwb2YlMjBVS1JfdjQuMC5wZGYKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNV
S1JbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBVCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCisg
ICAgICAgIDB4MDQ0MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgfTsKKyAgICBD
SEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1VLUiwgW10oVUNoYXIgY2gpIHsK
KyAgICAgICAgLy8gUnVzc2lhbiBhbmQgVWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFz
aGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAw
eDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8
IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9
PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBodHRwOi8vd3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1F
TlRJL2lkbi1zcmItcG9saWN5LXRlcm1zb2Z1c2UtdjEuNC1lbmcucGRmCisgICAgc3RhdGljIGNv
bnN0IFVDaGFyIGN5cmlsbGljU1JCW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQx
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDMxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgQkUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGlj
U1JCLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBTZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBh
bmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBj
aCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAw
eDA0NTIgfHwgY2ggPT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwg
Y2ggPT0gMHgwNDVCIHx8IGNoID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09
ICctJzsKKyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly9tYXJuZXQubWsvZG9jL3ByYXZpbG5pay1t
ay1ta2QucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTUtEW10gPSB7CisgICAg
ICAgICcuJywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAg
ICAgICAgMHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyAgICAgICAgMHgwNDM0
ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTUtELCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBN
YWNlZG9uaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAg
ICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0Eg
JiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1IHx8IGNoID09
IDB4MDQ1OCB8fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8
fCBjaCA9PSAweDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7
CisKKyAgICAvLyBodHRwczovL3d3dy5tb24ubW4vY3MvCisgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGN5cmlsbGljTU9OW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgTworICAgICAgICAweDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAg
IH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT04sIFtdKFVD
aGFyIGNoKSB7CisgICAgICAgIC8vIE1vbmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hl
cyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgw
NDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRBRiB8fCBp
c0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9KTsKKworICAgIC8vIE5vdCBhIGtu
b3duIHRvcCBsZXZlbCBkb21haW4gd2l0aCBzcGVjaWFsIHJ1bGVzLgorICAgIHJldHVybiBOTzsK
K30KKworLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2Fy
eS4KKy8vIElmIG1ha2VTdHJpbmcgaXMgTk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBu
aWwgb3Igc2VsZiB0byBpbmRpY2F0ZSBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KKy8vIElmIG1ha2VT
dHJpbmcgaXMgWUVTLCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBw
ZWQgc3RyaW5nLgorc3RhdGljIE5TU3RyaW5nICptYXBIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmlu
ZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MIGVuY29kZSwgQk9PTCBtYWtlU3RyaW5nLCBC
T09MICplcnJvcikKK3sKKyAgICBpZiAocmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1FX0JVRkZFUl9M
RU5HVEgpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKCFbc3RyaW5nIGxlbmd0
aF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgVUNoYXIgc291cmNlQnVmZmVyW0hP
U1RfTkFNRV9CVUZGRVJfTEVOR1RIXTsKKyAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NU
X05BTUVfQlVGRkVSX0xFTkdUSF07CisgICAgCisgICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJh
bmdlT2ZTdHJpbmc6QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9j
YXRpb24gIT0gTlNOb3RGb3VuZCkgeworICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0
cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VdOworICAgICAgICBzdWJzdHJpbmcgPSBDRkJy
aWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMo
bnVsbHB0ciwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7CisgICAgICAgIGlm
IChzdWJzdHJpbmcpIHsKKyAgICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKKyAgICAgICAg
ICAgIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBpbnQgbGVuZ3RoID0gcmFuZ2UubGVuZ3RoOworICAgIFtzdHJpbmcg
Z2V0Q2hhcmFjdGVyczpzb3VyY2VCdWZmZXIgcmFuZ2U6cmFuZ2VdOworICAgIAorICAgIFVFcnJv
ckNvZGUgdWVycm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0
YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJz
Q29udmVydGVkID0gKGVuY29kZSA/IHVpZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5p
Y29kZSkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksIHNv
dXJjZUJ1ZmZlciwgbGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9M
RU5HVEgsICZwcm9jZXNzaW5nRGV0YWlscywgJnVlcnJvcik7CisgICAgaWYgKGxlbmd0aCAmJiAo
VV9GQUlMVVJFKHVlcnJvcikgfHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkgeworICAgICAg
ICAqZXJyb3IgPSBZRVM7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIAorICAgIGlm
IChudW1DaGFyYWN0ZXJzQ29udmVydGVkID09IGxlbmd0aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZl
ciwgZGVzdGluYXRpb25CdWZmZXIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIAorICAgIGlmICghZW5jb2RlICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5T
Y3JpcHRXaGl0ZUxpc3QoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQp
ICYmICFhbGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoZGVzdGluYXRpb25CdWZmZXIsIG51
bUNoYXJhY3RlcnNDb252ZXJ0ZWQpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJl
dHVybiBtYWtlU3RyaW5nID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0
aW9uQnVmZmVyIGxlbmd0aDpudW1DaGFyYWN0ZXJzQ29udmVydGVkXSA6IHN0cmluZzsKK30KKwor
c3RhdGljIEJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJp
bmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQoreworICAgIHJldHVybiBtYXBIb3N0TmFt
ZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBOTywgTk8sIGVycm9yKSAhPSBuaWw7Cit9CisgCitz
dGF0aWMgQk9PTCBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmlu
ZywgTlNSYW5nZSByYW5nZSwgQk9PTCAqZXJyb3IpCit7CisgICAgcmV0dXJuIG1hcEhvc3ROYW1l
V2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIFlFUywgIE5PLCBlcnJvcikgIT0gbmlsOworfQorCitz
dGF0aWMgTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcs
IE5TUmFuZ2UgcmFuZ2UpCit7CisgICAgQk9PTCBlcnJvciA9IE5POworICAgIE5TU3RyaW5nICpo
b3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgTk8sIFlFUywgJmVycm9y
KTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICFob3N0
ID8gc3RyaW5nIDogaG9zdDsKK30KKworc3RhdGljIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdp
dGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQoreworICAgIEJPT0wgZXJy
b3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmlu
ZywgcmFuZ2UsIFlFUywgWUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQorCitOU1N0cmlu
ZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIGVycm9yID0g
Tk87CisgICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIE5T
TWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSksIE5PLCBZRVMsICZlcnJvcik7CisgICAgaWYg
KGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6
IGhvc3Q7Cit9CisKK05TU3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQor
eworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1l
V2l0aFJhbmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgWUVTLCBZ
RVMsICZlcnJvcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJl
dHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5n
ZXNUaGF0TmVlZE1hcHBpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXksIEJPT0wgZW5jb2RlKQoreworICAgIC8vIEdlbmVy
YWxseSwgd2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25l
IGhvc3QgbmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGluZy4KKyAgICAvLyBUaGVyZWZvcmUs
IHdlIHVzZSBuaWwgdG8gaW5kaWNhdGUgbm8gbWFwcGluZyBoZXJlIGFuZCBhbiBlbXB0eSBhcnJh
eSB0byBpbmRpY2F0ZSBlcnJvci4KKworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBCT09MIG5l
ZWRzTWFwcGluZyA9IGVuY29kZSA/IGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShzdHJp
bmcsIHJhbmdlLCAmZXJyb3IpIDogaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKHN0cmlu
ZywgcmFuZ2UsICZlcnJvcik7CisgICAgaWYgKCFlcnJvciAmJiAhbmVlZHNNYXBwaW5nKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgYXJyYXkgPSBhZG9w
dE5TKFtOU011dGFibGVBcnJheSBuZXddKTsKKworICAgIGlmICghZXJyb3IpCisgICAgICAgIFth
cnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKK30KKworc3Rh
dGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcoTlNTdHJpbmcgKnN0cmluZywg
TlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCit7CisgICAg
cmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXks
IFlFUyk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZERlY29kaW5nKE5T
U3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4m
IGFycmF5KQoreworICAgIHJldHVybiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmlu
ZywgcmFuZ2UsIGFycmF5LCBOTyk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5j
dGlvblRvTWFpbFRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIFN0cmluZ1JhbmdlQXBwbGll
ckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQoreworICAgIC8v
IEluIGEgbWFpbHRvOiBVUkwsIGhvc3QgbmFtZXMgY29tZSBhZnRlciBhICdAJyBjaGFyYWN0ZXIg
YW5kIGVuZCB3aXRoIGEgJz4nIG9yICcsJyBvciAnPycgY2hhcmFjdGVyLgorICAgIC8vIFNraXAg
cXVvdGVkIHN0cmluZ3Mgc28gdGhhdCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29uZnVzZSB1
cy4KKyAgICAvLyBXaGVuIHdlIGZpbmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFzdCB0aGUg
cGFydCBvZiB0aGUgVVJMIHRoYXQgY29udGFpbnMgaG9zdCBuYW1lcy4KKyAgICAKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5hbWVPclN0
cmluZ1N0YXJ0Q2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hh
cmFjdGVyc0luU3RyaW5nOkAiXCJAPyJdOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBob3N0TmFtZUVuZENoYXJhY3RlcnMgPSBbTlNDaGFyYWN0
ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIj4sPyJdOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBxdW90ZWRTdHJp
bmdDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJz
SW5TdHJpbmc6QCJcIlxcIl07CisgICAgCisgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0
cmluZyBsZW5ndGhdOworICAgIE5TUmFuZ2UgcmVtYWluaW5nID0gTlNNYWtlUmFuZ2UoMCwgc3Ry
aW5nTGVuZ3RoKTsKKyAgICAKKyAgICB3aGlsZSAoMSkgeworICAgICAgICAvLyBGaW5kIHN0YXJ0
IG9mIGhvc3QgbmFtZSBvciBvZiBxdW90ZWQgc3RyaW5nLgorICAgICAgICBOU1JhbmdlIGhvc3RO
YW1lT3JTdHJpbmdTdGFydCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdE5h
bWVPclN0cmluZ1N0YXJ0Q2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVt
YWluaW5nXTsKKyAgICAgICAgaWYgKGhvc3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlvbiA9PSBO
U05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuaWNoYXIgYyA9IFtz
dHJpbmcgY2hhcmFjdGVyQXRJbmRleDpob3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRpb25dOwor
ICAgICAgICByZW1haW5pbmcubG9jYXRpb24gPSBOU01heFJhbmdlKGhvc3ROYW1lT3JTdHJpbmdT
dGFydCk7CisgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5p
bmcubG9jYXRpb247CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnPycpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnQCcpIHsKKyAgICAgICAgICAg
IC8vIEZpbmQgZW5kIG9mIGhvc3QgbmFtZS4KKyAgICAgICAgICAgIHVuc2lnbmVkIGhvc3ROYW1l
U3RhcnQgPSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAgICAgICBOU1JhbmdlIGhvc3ROYW1l
RW5kID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpob3N0TmFtZUVuZENoYXJhY3Rl
cnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107CisgICAgICAgICAgICBC
T09MIGRvbmU7CisgICAgICAgICAgICBpZiAoaG9zdE5hbWVFbmQubG9jYXRpb24gPT0gTlNOb3RG
b3VuZCkgeworICAgICAgICAgICAgICAgIGhvc3ROYW1lRW5kLmxvY2F0aW9uID0gc3RyaW5nTGVu
Z3RoOworICAgICAgICAgICAgICAgIGRvbmUgPSBZRVM7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IGhvc3ROYW1lRW5kLmxvY2F0aW9u
OworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1h
aW5pbmcubG9jYXRpb247CisgICAgICAgICAgICAgICAgZG9uZSA9IE5POworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBQcm9jZXNzIGhvc3QgbmFtZSByYW5nZS4K
KyAgICAgICAgICAgIGYoc3RyaW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFt
ZUVuZC5sb2NhdGlvbiAtIGhvc3ROYW1lU3RhcnQpLCBhcnJheSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChkb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KKyAgICAgICAgICAgIEFT
U0VSVChjID09ICciJyk7CisgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAg
IE5TUmFuZ2UgZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kID0gW3N0cmluZyByYW5nZU9mQ2hh
cmFjdGVyRnJvbVNldDpxdW90ZWRTdHJpbmdDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6
MCByYW5nZTpyZW1haW5pbmddOworICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hhcmFjdGVy
T3JTdHJpbmdFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICAgICAgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRleDpl
c2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb25dOworICAgICAgICAgICAgICAgIHJl
bWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5k
KTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVt
YWluaW5nLmxvY2F0aW9uOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIElm
IHdlIGFyZSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUgc3RyaW5n
IGxvb3AgYmFjayB0byB0aGUgaG9zdCBuYW1lIGxvb3AuCisgICAgICAgICAgICAgICAgaWYgKGMg
PT0gJyInKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAg
IEFTU0VSVChjID09ICdcXCcpOworICAgICAgICAgICAgICAgIGlmICghcmVtYWluaW5nLmxlbmd0
aCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgcmVtYWlu
aW5nLmxvY2F0aW9uICs9IDE7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCAtPSAx
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJpbmdSYW5n
ZUFwcGxpZXJGdW5jdGlvbiBmLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKK3sK
KyAgICAvLyBGaW5kIGhvc3RuYW1lcy4gVG9vIGJhZCB3ZSBjYW4ndCB1c2UgYW55IHJlYWwgVVJM
LXBhcnNpbmcgY29kZSB0byBkbyB0aGlzLAorICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGRvIGl0IGJl
Zm9yZSBkb2luZyBhbGwgdGhlICUtZXNjYXBpbmcsIGFuZCB0aGlzIGlzIHRoZSBvbmx5CisgICAg
Ly8gY29kZSB3ZSBoYXZlIHRoYXQgcGFyc2VzIG1haWx0byBVUkxzIGFueXdheS4KKyAgICAKKyAg
ICAvLyBNYXliZSB3ZSBzaG91bGQgaW1wbGVtZW50IHRoaXMgdXNpbmcgYSBjaGFyYWN0ZXIgYnVm
ZmVyIGluc3RlYWQ/CisgICAgCisgICAgaWYgKHByb3RvY29sSXMoc3RyaW5nLCAibWFpbHRvIikp
IHsKKyAgICAgICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoc3RyaW5n
LCBmLCBhcnJheSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gRmluZCB0
aGUgaG9zdCBuYW1lIGluIGEgaGllcmFyY2hpY2FsIFVSTC4KKyAgICAvLyBJdCBjb21lcyBhZnRl
ciBhICI6Ly8iIHNlcXVlbmNlLCB3aXRoIHNjaGVtZSBjaGFyYWN0ZXJzIHByZWNlZGluZy4KKyAg
ICAvLyBJZiBlbmRzIHdpdGggdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiLCAiLyIsIG9y
IGEgIj8iLgorICAgIC8vIElmIHRoZXJlIGlzIGEgIkAiIGNoYXJhY3RlciwgdGhlIGhvc3QgcGFy
dCBpcyBqdXN0IHRoZSBwYXJ0IGFmdGVyIHRoZSAiQCIuCisgICAgTlNSYW5nZSBzZXBhcmF0b3JS
YW5nZSA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjovLyJdOworICAgIGlmIChzZXBhcmF0b3JS
YW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
Ly8gQ2hlY2sgdGhhdCBhbGwgY2hhcmFjdGVycyBiZWZvcmUgdGhlIDovLyBhcmUgdmFsaWQgc2No
ZW1lIGNoYXJhY3RlcnMuCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0No
YXJhY3RlclNldD4+IG5vblNjaGVtZUNoYXJhY3RlcnMgPSBbW05TQ2hhcmFjdGVyU2V0IGNoYXJh
Y3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSstLiJdIGludmVydGVkU2V0XTsK
KyAgICBpZiAoW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpub25TY2hlbWVDaGFyYWN0
ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBzZXBhcmF0b3JS
YW5nZS5sb2NhdGlvbildLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07CisgICAg
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhv
c3RUZXJtaW5hdG9ycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVy
c0luU3RyaW5nOkAiOi8/IyJdOworICAgIAorICAgIC8vIFN0YXJ0IGFmdGVyIHRoZSBzZXBhcmF0
b3IuCisgICAgdW5zaWduZWQgYXV0aG9yaXR5U3RhcnQgPSBOU01heFJhbmdlKHNlcGFyYXRvclJh
bmdlKTsKKyAgICAKKyAgICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICBOU1Jh
bmdlIGhvc3ROYW1lVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6
aG9zdFRlcm1pbmF0b3JzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZShh
dXRob3JpdHlTdGFydCwgc3RyaW5nTGVuZ3RoIC0gYXV0aG9yaXR5U3RhcnQpXTsKKyAgICB1bnNp
Z25lZCBob3N0TmFtZUVuZCA9IGhvc3ROYW1lVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZv
dW5kID8gc3RyaW5nTGVuZ3RoIDogaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uOworICAgIAor
ICAgIC8vIEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KKyAgICBOU1Jh
bmdlIHVzZXJJbmZvVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIkAiIG9wdGlv
bnM6MCByYW5nZTpOU01ha2VSYW5nZShhdXRob3JpdHlTdGFydCwgaG9zdE5hbWVFbmQgLSBhdXRo
b3JpdHlTdGFydCldOworICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQgPSB1c2VySW5mb1Rlcm1p
bmF0b3IubG9jYXRpb24gPT0gTlNOb3RGb3VuZCA/IGF1dGhvcml0eVN0YXJ0IDogTlNNYXhSYW5n
ZSh1c2VySW5mb1Rlcm1pbmF0b3IpOworICAgIAorICAgIHJldHVybiBmKHN0cmluZywgTlNNYWtl
UmFuZ2UoaG9zdE5hbWVTdGFydCwgaG9zdE5hbWVFbmQgLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkp
OworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBtYXBIb3N0TmFtZXMoTlNTdHJpbmcg
KnN0cmluZywgQk9PTCBlbmNvZGUpCit7CisgICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9w
dGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9l
cyBub3QgbmVlZCBtYXBwaW5nLgorICAgIAorICAgIGlmIChlbmNvZGUgJiYgW3N0cmluZyBjYW5C
ZUNvbnZlcnRlZFRvRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXSkKKyAgICAgICAgcmV0
dXJuIHN0cmluZzsKKyAgICAKKyAgICAvLyBNYWtlIGEgbGlzdCBvZiByYW5nZXMgdGhhdCBhY3R1
YWxseSBuZWVkIG1hcHBpbmcuCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBob3N0TmFt
ZVJhbmdlczsKKyAgICBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmID0gZW5jb2RlID8gY29s
bGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcgOiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWREZWNvZGlu
ZzsKKyAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhzdHJpbmcsIGYsIGhvc3RO
YW1lUmFuZ2VzKTsKKyAgICBpZiAoIWhvc3ROYW1lUmFuZ2VzKQorICAgICAgICByZXR1cm4gc3Ry
aW5nOworCisgICAgaWYgKCFbaG9zdE5hbWVSYW5nZXMgY291bnRdKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIAorICAgIC8vIERvIHRoZSBtYXBwaW5nLgorICAgIGF1dG8gbXV0YWJsZUNvcHkg
PSBhZG9wdE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsKKyAgICB1bnNpZ25lZCBpID0gW2hvc3RO
YW1lUmFuZ2VzIGNvdW50XTsKKyAgICB3aGlsZSAoaS0tKSB7CisgICAgICAgIE5TUmFuZ2UgaG9z
dE5hbWVSYW5nZSA9IFtbaG9zdE5hbWVSYW5nZXMgb2JqZWN0QXRJbmRleDppXSByYW5nZVZhbHVl
XTsKKyAgICAgICAgTlNTdHJpbmcgKm1hcHBlZEhvc3ROYW1lID0gZW5jb2RlID8gZW5jb2RlSG9z
dE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKSA6IGRlY29kZUhvc3ROYW1lV2l0
aFJhbmdlKHN0cmluZywgaG9zdE5hbWVSYW5nZSk7CisgICAgICAgIFttdXRhYmxlQ29weSByZXBs
YWNlQ2hhcmFjdGVyc0luUmFuZ2U6aG9zdE5hbWVSYW5nZSB3aXRoU3RyaW5nOm1hcHBlZEhvc3RO
YW1lXTsKKyAgICB9CisgICAgcmV0dXJuIG11dGFibGVDb3B5OworfQorCitzdGF0aWMgUmV0YWlu
UHRyPE5TU3RyaW5nPiBzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShOU1N0cmluZyAqc3RyaW5n
KQoreworICAgIGF1dG8gdHJpbW1lZCA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwor
ICAgIENGU3RyaW5nVHJpbVdoaXRlc3BhY2UoKF9fYnJpZGdlIENGTXV0YWJsZVN0cmluZ1JlZil0
cmltbWVkLmdldCgpKTsKKyAgICByZXR1cm4gdHJpbW1lZDsKK30KKworTlNVUkwgKlVSTEJ5VHJ1
bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChOU1VSTCAqVVJMLCBDRlVSTENvbXBv
bmVudFR5cGUgY29tcG9uZW50KQoreworICAgIGlmICghVVJMKQorICAgICAgICByZXR1cm4gbmls
OworICAgIAorICAgIENGUmFuZ2UgZnJhZ1JnID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25l
bnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50LCBudWxscHRyKTsKKyAgICBpZiAo
ZnJhZ1JnLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICByZXR1cm4gVVJMOworCisg
ICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gdXJsQnl0ZXMoVVJMX0JZ
VEVTX0JVRkZFUl9MRU5HVEgpOworICAgIENGSW5kZXggbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgdXJsQnl0ZXMuc2l6ZSgp
KTsKKyAgICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdl
dEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICB1cmxC
eXRlcy5ncm93KG51bUJ5dGVzKTsKKyAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCB1cmxCeXRlcy5kYXRhKCksIG51bUJ5dGVzKTsKKyAgICB9CisKKyAgICBDRlVS
TFJlZiByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRh
KCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7
CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVz
KG51bGxwdHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5n
RW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAgICAKKyAgICByZXR1cm4gcmVzdWx0
ID8gQ0ZCcmlkZ2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKK30KKworc3RhdGljIE5TVVJMICpV
UkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKK3sKKyAgICByZXR1cm4g
VVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KFVSTCwga0NGVVJMQ29t
cG9uZW50UmVzb3VyY2VTcGVjaWZpZXIpOworfQorCitOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRh
ICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKK3sKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgCisgICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsKKyAgICBzaXplX3QgbGVuZ3Ro
ID0gW2RhdGEgbGVuZ3RoXTsKKyAgICBpZiAobGVuZ3RoID4gMCkgeworICAgICAgICAvLyB3b3Jr
IGFyb3VuZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVz
KC4uLCBUUlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21wb25lbnRzLgorICAgICAgICBi
YXNlVVJMID0gVVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKGJhc2VVUkwpOworICAgICAg
ICAKKyAgICAgICAgY29uc3QgVUludDggKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDgq
PihbZGF0YSBieXRlc10pOworICAgICAgICAKKyAgICAgICAgLy8gQ0ZVUkxDcmVhdGVBYnNvbHV0
ZVVSTFdpdGhCeXRlcyB3b3VsZCBjb21wbGFpbiB0byBjb25zb2xlIGlmIHdlIHBhc3NlZCBhIHBh
dGggdG8gaXQuCisgICAgICAgIGlmIChieXRlc1swXSA9PSAnLycgJiYgIWJhc2VVUkwpCisgICAg
ICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAKKyAgICAgICAgLy8gTk9URTogV2UgdXNlIFVU
Ri04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmlu
Z3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAgICAgLy8gKGUuZyBjYWxscyB0
byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9m
IGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAorICAgICAgICAvLyBjb3VsZCBlaXRoZXIg
YmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBs
aWtlIHNoaWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCisgICAgICAgIC8vIG9udG8gdXNpbmcgSVNP
IExhdGluIDEgaW4gdGhvc2UgY2FzZXMuCisgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxl
YXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0
aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVT
KSk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2lu
Z1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBieXRlcywg
bGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgKF9fYnJpZGdlIENGVVJMUmVmKWJh
c2VVUkwsIFlFUykpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0
aFN0cmluZzpAIiJdOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KK3N0YXRpYyBOU0RhdGEgKmRh
dGFXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNEYXRhICp1
c2VyVHlwZWREYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ107CisgICAgQVNTRVJUKHVzZXJUeXBlZERhdGEpOworICAgIAorICAgIGNvbnN0IFVJbnQ4
KiBpbkJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDggKj4oW3VzZXJUeXBlZERhdGEgYnl0
ZXNdKTsKKyAgICBpbnQgaW5MZW5ndGggPSBbdXNlclR5cGVkRGF0YSBsZW5ndGhdOworICAgIGlm
ICghaW5MZW5ndGgpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgY2hhciogb3V0Qnl0
ZXMgPSBzdGF0aWNfY2FzdDxjaGFyICo+KG1hbGxvYyhpbkxlbmd0aCAqIDMpKTsgLy8gbGFyZ2Ug
ZW5vdWdoIHRvICUtZXNjYXBlIGV2ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIqIHAgPSBvdXRCeXRl
czsKKyAgICBpbnQgb3V0TGVuZ3RoID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGluTGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgVUludDggYyA9IGluQnl0ZXNbaV07CisgICAgICAgIGlmIChj
IDw9IDB4MjAgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICAqcCsrID0gJyUnOworICAgICAg
ICAgICAgKnArKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAg
KnArKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgb3V0TGVu
Z3RoICs9IDM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAg
ICAgICAgIG91dExlbmd0aCsrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6b3V0Qnl0ZXMgbGVuZ3RoOm91dExlbmd0aF07IC8v
IGFkb3B0cyBvdXRCeXRlcworfQorCitOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0
cmluZyAqc3RyaW5nLCBOU1VSTCAqbnNVUkwpCit7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBhdXRvIG1hcHBlZFN0cmluZyA9IG1hcEhvc3ROYW1lcyhzdHJp
bmdCeVRyaW1taW5nV2hpdGVzcGFjZShzdHJpbmcpLmdldCgpLCBZRVMpOworICAgIGlmICghbWFw
cGVkU3RyaW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gTGV0J3MgY2hlY2sgd2hl
dGhlciB0aGUgVVJMIGlzIGJvZ3VzLgorICAgIFVSTCB1cmwgeyBVUkwgeyBuc1VSTCB9LCBtYXBw
ZWRTdHJpbmcuZ2V0KCkgfTsKKyAgICBpZiAoIXVybC5jcmVhdGVDRlVSTCgpKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODYwNTcKKyAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgdXJsLmNy
ZWF0ZUNGVVJMIGluc3RlYWQgb2YgdXNpbmcgZGlyZWN0bHkgQ0ZVUkwgcGFyc2luZyByb3V0aW5l
cy4KKyAgICBOU0RhdGEgKmRhdGEgPSBkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhtYXBwZWRTdHJp
bmcuZ2V0KCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiIl07CisKKyAgICByZXR1cm4gVVJMV2l0aERhdGEoZGF0YSwgbnNVUkwpOworfQor
CitOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKnN0cmlu
ZywgTlNVUkwgKlVSTCkKK3sKKyAgICBpZiAoIXN0cmluZykKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIE5TVVJMICpyZXN1bHQgPSBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZywgVVJM
KTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBOU0RhdGEgKnJlc3VsdERhdGEgPSBkYXRh
V2l0aFVzZXJUeXBlZFN0cmluZyhzdHJpbmcpOworICAgICAgICBpZiAoIXJlc3VsdERhdGEpCisg
ICAgICAgICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKKyAgICAgICAgcmVz
dWx0ID0gVVJMV2l0aERhdGEocmVzdWx0RGF0YSwgVVJMKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgQk9PTCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmco
TlNVUkwgKlVSTCkKK3sKKyAgICBDRlJhbmdlIHJhbmdlV2l0aFNlcGFyYXRvcnM7CisgICAgQ0ZV
UkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwga0NGVVJM
Q29tcG9uZW50UXVlcnksICZyYW5nZVdpdGhTZXBhcmF0b3JzKTsKKyAgICBpZiAocmFuZ2VXaXRo
U2VwYXJhdG9ycy5sb2NhdGlvbiAhPSBrQ0ZOb3RGb3VuZCAmJiByYW5nZVdpdGhTZXBhcmF0b3Jz
Lmxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgcmV0dXJuIE5POworfQor
CitOU0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICpVUkwsIENGVVJMQ29tcG9u
ZW50VHlwZSBjb21wb25lbnRUeXBlKQoreworICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JV
RkZFUl9MRU5HVEg+IGFsbEJ5dGVzQnVmZmVyKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAg
ICBDRkluZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGFsbEJ5dGVzQnVmZmVyLnNpemUoKSk7CisgICAg
aWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7CisgICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9jYXRl
ID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAg
ICAgICAgYWxsQnl0ZXNCdWZmZXIuZ3JvdyhieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBieXRl
c0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYWxsQnl0ZXNC
dWZmZXIuZGF0YSgpLCBieXRlc1RvQWxsb2NhdGUpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBD
RlVSTENvbXBvbmVudFR5cGUgY29tcGxldGVVUkwgPSAoQ0ZVUkxDb21wb25lbnRUeXBlKS0xOwor
ICAgIENGUmFuZ2UgcmFuZ2U7CisgICAgaWYgKGNvbXBvbmVudFR5cGUgIT0gY29tcGxldGVVUkwp
IHsKKyAgICAgICAgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlk
Z2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnRUeXBlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJh
bmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICB9IGVsc2UgeworICAgICAgICByYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgICAgIHJhbmdlLmxl
bmd0aCA9IGJ5dGVzRmlsbGVkOworICAgIH0KKyAgICAKKyAgICBOU0RhdGEgKmNvbXBvbmVudERh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YWxsQnl0ZXNCdWZmZXIuZGF0YSgpICsgcmFuZ2Uu
bG9jYXRpb24gbGVuZ3RoOnJhbmdlLmxlbmd0aF07IAorICAgIAorICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbY29tcG9u
ZW50RGF0YSBieXRlc10pOworICAgIE5TTXV0YWJsZURhdGEgKnJlc3VsdERhdGEgPSBbTlNNdXRh
YmxlRGF0YSBkYXRhXTsKKyAgICAvLyBOT1RFOiBhZGQgbGVhZGluZyAnPycgdG8gcXVlcnkgc3Ry
aW5ncyBub24temVybyBsZW5ndGggcXVlcnkgc3RyaW5ncy4KKyAgICAvLyBOT1RFOiByZXRhaW4g
cXVlc3Rpb24tbWFyayBvbmx5IHF1ZXJ5IHN0cmluZ3MuCisgICAgaWYgKGNvbXBvbmVudFR5cGUg
PT0ga0NGVVJMQ29tcG9uZW50UXVlcnkpIHsKKyAgICAgICAgaWYgKHJhbmdlLmxlbmd0aCA+IDAg
fHwgaGFzUXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKFVSTCkpCisgICAgICAgICAgICBbcmVz
dWx0RGF0YSBhcHBlbmRCeXRlczoiPyIgbGVuZ3RoOjFdOyAgICAKKyAgICB9CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCByYW5nZS5sZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFy
IGMgPSBieXRlc1tpXTsKKyAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKKyAg
ICAgICAgICAgIGNoYXIgZXNjYXBlZFszXTsKKyAgICAgICAgICAgIGVzY2FwZWRbMF0gPSAnJSc7
CisgICAgICAgICAgICBlc2NhcGVkWzFdID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7
CisgICAgICAgICAgICBlc2NhcGVkWzJdID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7
CisgICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczplc2NhcGVkIGxlbmd0aDozXTsg
ICAgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGFyIGJbMV07CisgICAgICAgICAg
ICBiWzBdID0gYzsKKyAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmIgbGVuZ3Ro
OjFdOyAgICAKKyAgICAgICAgfSAgICAgICAgICAgICAgIAorICAgIH0KKyAgICAKKyAgICByZXR1
cm4gcmVzdWx0RGF0YTsKK30KKworc3RhdGljIE5TVVJMICpVUkxCeVJlbW92aW5nQ29tcG9uZW50
QW5kU3Vic2VxdWVudENoYXJhY3RlcihOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29t
cG9uZW50KQoreworICAgIENGUmFuZ2UgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBv
bmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIDApOworICAgIGlmIChyYW5n
ZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICAKKyAg
ICAvLyBSZW1vdmUgb25lIHN1YnNlcXVlbnQgY2hhcmFjdGVyLgorICAgIHJhbmdlLmxlbmd0aCsr
OworCisgICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYnVmZmVyKFVS
TF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZVUkxHZXRC
eXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKKyAgICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdl
dEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICBidWZm
ZXIuZ3JvdyhudW1CeXRlcyk7CisgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJM
UmVmKVVSTCwgYnVmZmVyLmRhdGEoKSwgbnVtQnl0ZXMpOworICAgIH0KKyAgICBVSW50OCogdXJs
Qnl0ZXMgPSBidWZmZXIuZGF0YSgpOworICAgICAgICAKKyAgICBpZiAobnVtQnl0ZXMgPCByYW5n
ZS5sb2NhdGlvbikKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICBpZiAobnVtQnl0ZXMgPCByYW5n
ZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCkKKyAgICAgICAgcmFuZ2UubGVuZ3RoID0gbnVtQnl0
ZXMgLSByYW5nZS5sb2NhdGlvbjsKKyAgICAgICAgCisgICAgbWVtbW92ZSh1cmxCeXRlcyArIHJh
bmdlLmxvY2F0aW9uLCB1cmxCeXRlcyArIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoLCBu
dW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKTsKKyAgICAKKyAgICBDRlVS
TFJlZiByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVt
Qnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51
bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2Rp
bmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIAorICAgIHJldHVybiByZXN1
bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworfQorCitOU1VSTCAqVVJMQnlS
ZW1vdmluZ1VzZXJJbmZvKE5TVVJMICpVUkwpCit7CisgICAgcmV0dXJuIFVSTEJ5UmVtb3ZpbmdD
b21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKFVSTCwga0NGVVJMQ29tcG9uZW50VXNlcklu
Zm8pOworfQorCitOU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqVVJMKQoreworICAgIFVJ
bnQ4ICpidWZmZXIgPSAoVUludDggKiltYWxsb2MoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwor
ICAgIENGSW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJl
ZilVUkwsIGJ1ZmZlciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOworICAgIGlmIChieXRlc0Zp
bGxlZCA9PSAtMSkgeworICAgICAgICBDRkluZGV4IGJ5dGVzVG9BbGxvY2F0ZSA9IENGVVJMR2V0
Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7CisgICAgICAgIGJ1ZmZl
ciA9IChVSW50OCAqKXJlYWxsb2MoYnVmZmVyLCBieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBi
eXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVy
LCBieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBBU1NFUlQoYnl0ZXNGaWxsZWQgPT0gYnl0ZXNU
b0FsbG9jYXRlKTsKKyAgICB9CisgICAgCisgICAgLy8gYnVmZmVyIGlzIGFkb3B0ZWQgYnkgdGhl
IE5TRGF0YQorICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpi
dWZmZXIgbGVuZ3RoOmJ5dGVzRmlsbGVkIGZyZWVXaGVuRG9uZTpZRVNdOworICAgIAorICAgIE5T
VVJMICpiYXNlVVJMID0gKF9fYnJpZGdlIE5TVVJMICopQ0ZVUkxHZXRCYXNlVVJMKChfX2JyaWRn
ZSBDRlVSTFJlZilVUkwpOworICAgIGlmIChiYXNlVVJMKQorICAgICAgICByZXR1cm4gb3JpZ2lu
YWxVUkxEYXRhKFVSTFdpdGhEYXRhKGRhdGEsIGJhc2VVUkwpKTsKKyAgICByZXR1cm4gZGF0YTsK
K30KKworc3RhdGljIENGU3RyaW5nUmVmIGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hh
cmFjdGVycyhDRlN0cmluZ1JlZiBzdHJpbmcpCit7CisgICAgQ0ZJbmRleCBsZW5ndGggPSBDRlN0
cmluZ0dldExlbmd0aChzdHJpbmcpOworICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZF
Ul9MRU5HVEg+IHNvdXJjZUJ1ZmZlcihsZW5ndGgpOworICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVy
cyhzdHJpbmcsIENGUmFuZ2VNYWtlKDAsIGxlbmd0aCksIHNvdXJjZUJ1ZmZlci5kYXRhKCkpOwor
ICAgIAorICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IG91dEJ1ZmZl
cjsKKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50Owor
ICAgIENGSW5kZXggaSA9IDA7CisgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgVUNo
YXIzMiBjOworICAgICAgICBVMTZfTkVYVChzb3VyY2VCdWZmZXIsIGksIGxlbmd0aCwgYykKKyAg
ICAgICAgCisgICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2lu
dCwgYykpIHsKKyAgICAgICAgICAgIHVpbnQ4X3QgdXRmOEJ1ZmZlcls0XTsKKyAgICAgICAgICAg
IENGSW5kZXggb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIFVCb29sIGZhaWx1cmUgPSBmYWxzZTsK
KyAgICAgICAgICAgIFU4X0FQUEVORCh1dGY4QnVmZmVyLCBvZmZzZXQsIDQsIGMsIGZhaWx1cmUp
CisgICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBmb3IgKENGSW5kZXggaiA9IDA7IGogPCBvZmZzZXQ7ICsraikgeworICAgICAgICAgICAgICAg
IG91dEJ1ZmZlci5hcHBlbmQoJyUnKTsKKyAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5k
KHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZmZXJbal0pKTsKKyAgICAgICAgICAg
ICAgICBvdXRCdWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZm
ZXJbal0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFVD
aGFyIHV0ZjE2QnVmZmVyWzJdOworICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOworICAg
ICAgICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOworICAgICAgICAgICAgVTE2X0FQUEVORCh1
dGYxNkJ1ZmZlciwgb2Zmc2V0LCAyLCBjLCBmYWlsdXJlKQorICAgICAgICAgICAgQVNTRVJUKCFm
YWlsdXJlKTsKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8IG9mZnNldDsgKytq
KQorICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXRmMTZCdWZmZXJbal0pOworICAg
ICAgICB9CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgb3V0QnVmZmVyLmRh
dGEoKSwgb3V0QnVmZmVyLnNpemUoKSk7Cit9CisKK05TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmlu
ZyhOU1VSTCAqVVJMKQoreworICAgIE5TRGF0YSAqZGF0YSA9IG9yaWdpbmFsVVJMRGF0YShVUkwp
OworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJlZm9yZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihbZGF0YSBieXRlc10pOworICAgIGludCBsZW5ndGggPSBbZGF0YSBsZW5n
dGhdOworICAgIAorICAgIGJvb2wgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSBmYWxzZTsKKyAg
ICAKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gYmVmb3JlOworICAgIGludCBidWZmZXJM
ZW5ndGggPSAobGVuZ3RoICogMykgKyAxOworICAgIFZlY3RvcjxjaGFyLCBVUkxfQllURVNfQlVG
RkVSX0xFTkdUSD4gYWZ0ZXIoYnVmZmVyTGVuZ3RoKTsgLy8gbGFyZ2UgZW5vdWdoIHRvICUtZXNj
YXBlIGV2ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIgKnEgPSBhZnRlci5kYXRhKCk7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMg
PSBwW2ldOworICAgICAgICAvLyB1bmVzY2FwZSBlc2NhcGUgc2VxdWVuY2VzIHRoYXQgaW5kaWNh
dGUgYnl0ZXMgZ3JlYXRlciB0aGFuIDB4N2YKKyAgICAgICAgaWYgKGMgPT0gJyUnICYmIChpICsg
MSA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAmJiBpICsgMiA8IGxlbmd0
aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7CisgICAgICAgICAgICBhdXRvIHUgPSB0
b0FTQ0lJSGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKKyAgICAgICAgICAgIGlmICh1ID4g
MHg3ZikgeworICAgICAgICAgICAgICAgIC8vIHVuZXNjYXBlCisgICAgICAgICAgICAgICAgKnEr
KyA9IHU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGRvIG5vdCB1
bmVzY2FwZQorICAgICAgICAgICAgICAgICpxKysgPSBwW2ldOworICAgICAgICAgICAgICAgICpx
KysgPSBwW2kgKyAxXTsKKyAgICAgICAgICAgICAgICAqcSsrID0gcFtpICsgMl07CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAqcSsrID0gYzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0t
IiBpbiBhbiBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgorICAgICAgICAgICAg
aWYgKGMgPT0gJy0nICYmIGkgPj0gMyAmJiAhbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgJiYgKHFb
LTRdIHwgMHgyMCkgPT0gJ3gnICYmIChxWy0zXSB8IDB4MjApID09ICduJyAmJiBxWy0yXSA9PSAn
LScpCisgICAgICAgICAgICAgICAgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSB0cnVlOworICAg
ICAgICB9CisgICAgfQorICAgICpxID0gJ1wwJzsKKyAgICAKKyAgICAvLyBDaGVjayBzdHJpbmcg
dG8gc2VlIGlmIGl0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gZGlzcGxheSB1c2luZyBVVEYtOCAgCisg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiByZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhT
dHJpbmc6YWZ0ZXIuZGF0YSgpXTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAvLyBDb3Vs
ZCBub3QgY29udmVydCB0byBVVEYtOC4KKyAgICAgICAgLy8gQ29udmVydCBjaGFyYWN0ZXJzIGdy
ZWF0ZXIgdGhhbiAweDdmIHRvIGVzY2FwZSBzZXF1ZW5jZXMuCisgICAgICAgIC8vIFNoaWZ0IGN1
cnJlbnQgc3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgorICAgICAgICAvLyB0aGVuIHdl
IHdpbGwgY29weSBiYWNrIGJ5dGVzIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIAorICAgICAg
ICAvLyBhcyB3ZSBjb252ZXJ0LgorICAgICAgICBpbnQgYWZ0ZXJsZW5ndGggPSBxIC0gYWZ0ZXIu
ZGF0YSgpOworICAgICAgICBjaGFyICpwID0gYWZ0ZXIuZGF0YSgpICsgYnVmZmVyTGVuZ3RoIC0g
YWZ0ZXJsZW5ndGggLSAxOworICAgICAgICBtZW1tb3ZlKHAsIGFmdGVyLmRhdGEoKSwgYWZ0ZXJs
ZW5ndGggKyAxKTsgLy8gY29waWVzIHRyYWlsaW5nICdcMCcKKyAgICAgICAgY2hhciAqcSA9IGFm
dGVyLmRhdGEoKTsKKyAgICAgICAgd2hpbGUgKCpwKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIGMgPSAqcDsKKyAgICAgICAgICAgIGlmIChjID4gMHg3ZikgeworICAgICAgICAgICAgICAg
ICpxKysgPSAnJSc7CisgICAgICAgICAgICAgICAgKnErKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGMpOworICAgICAgICAgICAgICAgICpxKysgPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhE
aWdpdChjKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICpxKysgPSAqcDsK
KyAgICAgICAgICAgIHArKzsKKyAgICAgICAgfQorICAgICAgICAqcSA9ICdcMCc7CisgICAgICAg
IHJlc3VsdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOwor
ICAgIH0KKyAgICAKKyAgICBpZiAobWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcpIHsKKyAgICAgICAg
Ly8gRklYTUU6IElzIGl0IGdvb2QgdG8gaWdub3JlIHRoZSBmYWlsdXJlIG9mIG1hcEhvc3ROYW1l
cyBhbmQga2VlcCByZXN1bHQgaW50YWN0PworICAgICAgICBhdXRvIG1hcHBlZFJlc3VsdCA9IG1h
cEhvc3ROYW1lcyhyZXN1bHQuZ2V0KCksIE5PKTsKKyAgICAgICAgaWYgKG1hcHBlZFJlc3VsdCkK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1hcHBlZFJlc3VsdDsKKyAgICB9CisKKyAgICByZXN1bHQg
PSBbcmVzdWx0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOworICAgIHJl
dHVybiBDRkJyaWRnaW5nUmVsZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJh
Y3RlcnMoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSkpOworfQorCitCT09MIGlz
VXNlclZpc2libGVVUkwoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIHZhbGlkID0gWUVT
OworICAgIC8vIGdldCBidWZmZXIKKyAgICAKKyAgICBjaGFyIHN0YXRpY19idWZmZXJbMTAyNF07
CisgICAgY29uc3QgY2hhciAqcDsKKyAgICBCT09MIHN1Y2Nlc3MgPSBDRlN0cmluZ0dldENTdHJp
bmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZywgc3RhdGljX2J1ZmZlciwgMTAyMywga0NG
U3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICBwID0gc3VjY2VzcyA/IHN0YXRpY19idWZmZXIgOiBb
c3RyaW5nIFVURjhTdHJpbmddOworICAgIAorICAgIGludCBsZW5ndGggPSBzdHJsZW4ocCk7Cisg
ICAgCisgICAgLy8gY2hlY2sgZm9yIGNoYXJhY3RlcnMgPD0gMHgyMCBvciA+PTB4N2YsICUtZXNj
YXBlIHNlcXVlbmNlcyBvZiAlN2YsIGFuZCB4bi0tLCB0aGVzZQorICAgIC8vIGFyZSB0aGUgdGhp
bmdzIHRoYXQgd2lsbCBsZWFkIF93ZWJfdXNlclZpc2libGVTdHJpbmcgdG8gYWN0dWFsbHkgY2hh
bmdlIHRoaW5ncy4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07CisgICAgICAgIC8vIGVzY2FwZSBjb250cm9sIGNo
YXJhY3RlcnMsIHNwYWNlLCBhbmQgZGVsZXRlCisgICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA9
PSAweDdmKSB7CisgICAgICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlI
ZXhEaWdpdChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChw
W2kgKyAyXSkpIHsKKyAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAx
XSwgcFtpICsgMl0pOworICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7CisgICAgICAgICAgICAg
ICAgdmFsaWQgPSBOTzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGkgKz0gMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNr
IGZvciAieG4tLSIgaW4gYW4gZWZmaWNpZW50LCBub24tY2FzZS1zZW5zaXRpdmUsIHdheS4KKyAg
ICAgICAgICAgIGlmIChjID09ICctJyAmJiBpID49IDMgJiYgKHBbaSAtIDNdIHwgMHgyMCkgPT0g
J3gnICYmIChwW2kgLSAyXSB8IDB4MjApID09ICduJyAmJiBwW2kgLSAxXSA9PSAnLScpIHsKKyAg
ICAgICAgICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB2YWxpZDsKK30KKwor
TlNSYW5nZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNSYW5n
ZSBjb2xvbiA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjoiXTsKKyAgICBpZiAoY29sb24ubG9j
YXRpb24gIT0gTlNOb3RGb3VuZCAmJiBjb2xvbi5sb2NhdGlvbiA+IDApIHsKKyAgICAgICAgTlNS
YW5nZSBzY2hlbWUgPSB7MCwgY29sb24ubG9jYXRpb259OworICAgICAgICAvKgorICAgICAgICAg
VGhpcyBzdHVmZiBpcyB2ZXJ5IGV4cGVuc2l2ZS4gIDEwLTE1IG1zZWMgb24gYSAyeDEuMkdIei4g
IElmIG5vdCBjYWNoZWQgaXQgc3dhbXBzCisgICAgICAgICBldmVyeXRoaW5nIGVsc2Ugd2hlbiBh
ZGRpbmcgaXRlbXMgdG8gdGhlIGF1dG9jb21wbGV0ZSBEQi4gIE1ha2VzIG1lIHdvbmRlciBpZiB3
ZQorICAgICAgICAgZXZlbiBuZWVkIHRvIGVuZm9yY2UgdGhlIGNoYXJhY3RlciBzZXQgaGVyZS4K
KyAgICAgICAgICovCisgICAgICAgIE5TU3RyaW5nICphY2NlcHRhYmxlQ2hhcmFjdGVycyA9IEAi
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0
NTY3ODkrLi0iOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hh
cmFjdGVyU2V0Pj4gSW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldChbW05TQ2hhcmFjdGVyU2V0IGNo
YXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGlu
dmVydGVkU2V0XSk7CisgICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBbc3RyaW5nIHJhbmdlT2ZD
aGFyYWN0ZXJGcm9tU2V0OkludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQuZ2V0KCkuZ2V0KCkgb3B0
aW9uczowIHJhbmdlOnNjaGVtZV07CisgICAgICAgIGlmIChpbGxlZ2Fscy5sb2NhdGlvbiA9PSBO
U05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIHNjaGVtZTsKKyAgICB9CisgICAgcmV0dXJu
IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOworfQorCitCT09MIGxvb2tzTGlrZUFic29sdXRl
VVJMKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgLy8gVHJpbSB3aGl0ZXNwYWNlIGJlY2F1c2Ug
X3dlYl9VUkxXaXRoU3RyaW5nIGFsbG93cyB3aGl0ZXNwYWNlLgorICAgIHJldHVybiByYW5nZU9m
VVJMU2NoZW1lKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCkpLmxvY2F0
aW9uICE9IE5TTm90Rm91bmQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29j
b2EvVVJMQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ1MWZhZGJiNjhkNjQ3NmQwY2E0NjA2ODRhOTcy
YjhjNTM1MGRhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENv
Y29hLm1tCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDx3dGYvVVJM
Lmg+CisKKyNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCisjaW1wb3J0ICJOU1VSTEV4dHJhcy5oIgor
I2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMUGFyc2Vy
Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK0BpbnRlcmZhY2UgTlNTdHJpbmcg
KFdURk5TVVJMRXh0cmFzKQorLSAoQk9PTClfd2ViX2xvb2tzTGlrZUlQQWRkcmVzczsKK0BlbmQK
KworbmFtZXNwYWNlIFdURiB7CisKK1VSTDo6VVJMKE5TVVJMICp1cmwpCit7CisgICAgaWYgKCF1
cmwpIHsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KKyAgICBD
U3RyaW5nIHVybEJ5dGVzOworICAgIFdURjo6Z2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVm
KXVybCwgdXJsQnl0ZXMpOworICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsK
KyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKworVVJMOjpvcGVyYXRvciBOU1VSTCAq
KCkgY29uc3QKK3sKKyAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlkZ2VkIENGVVJMIGJl
Y2F1c2UgY3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdvdWxkIG5vdCBwcmVzZXJ2ZSB0aGUg
b3JpZ2luYWwgc3RyaW5nLgorICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxpdHkgd2hlbiByb3VuZC10
cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgorICAgIHJldHVybiBjcmVhdGVDRlVSTCgpLmJy
aWRnaW5nQXV0b3JlbGVhc2UoKTsKK30KKworUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0
ZUNGVVJMKCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwt
ZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYg
c3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KKyAgICAgICAgcmV0dXJuIChf
X2JyaWRnZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAi
Il0pLmdldCgpOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7CisKKyAg
ICAvLyBGYXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMgOC1iaXQgdG8gYXZvaWQgY29weWlu
ZyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KKyAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJp
dCgpKSkKKyAgICAgICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcu
bGVuZ3RoKCkpOworICAgIGVsc2UgeworICAgICAgICAvLyBTbG93ZXIgcGF0aC4KKyAgICAgICAg
V1RGOjpVUkxDaGFyQnVmZmVyIGJ1ZmZlcjsKKyAgICAgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7
CisgICAgICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CisgICAgfQorCisgICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSAmJiAhV1RGOjppc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjZlVSTDsKK30KKworYm9vbCBVUkw6
Omhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCit7CisgICAgcmV0dXJuIFtob3N0LmNy
ZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSBfd2ViX2xvb2tzTGlrZUlQQWRkcmVz
c107Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNv
dXAuaCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjRmYjM0Zjg2ZjI0YTQ2MjFlMGY5MDY3MDY3NzVmOTQ4MTg1OTk2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dURi93dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oCkBAIC0wLDAgKzEsMzggQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIFVTRShTT1VQKQorCisj
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cFVSSSwg
c291cF91cmlfZnJlZSkKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBDb29raWUsIHNvdXBf
Y29va2llX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwTWVzc2FnZUhlYWRlcnMs
IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3Vw
QnVmZmVyLCBzb3VwX2J1ZmZlcl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlm
IC8vIFVTRShTT1VQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9VUkxTb3VwLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkYmM3ZTE3
YjgzODkxOWM1MGNmZmZiZDZiNDVjZjhjYjNiODlhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoU09VUCkKKworI2lu
Y2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMUGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKworVVJMOjpVUkwoU291cFVSSSogc291cFVSSSkKK3sKKyAgICBpZiAoIXNvdXBV
UkkpIHsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJ
LCBGQUxTRSkpOworICAgIFVSTFBhcnNlciBwYXJzZXIoU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJp
bmcuZ2V0KCkpKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKworICAgIGlmICghaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTU2LiBsaWJzb3VwCisgICAgLy8gZG9l
cyBub3QgYWRkIHRoZSBwYXNzd29yZCB0byB0aGUgVVJMIHdoZW4gY2FsbGluZworICAgIC8vIHNv
dXBfdXJpX3RvX3N0cmluZywgYW5kIHRodXMgdGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkK
KyAgICAvLyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRo
ZSBtYWludGFpbmVyIGRvZXMKKyAgICAvLyBub3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5
IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRpb25zCisgICAgaWYgKHNvdXBVUkktPnBhc3N3b3Jk
KQorICAgICAgICBzZXRQYXNzKFN0cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsK
K30KKworR1VuaXF1ZVB0cjxTb3VwVVJJPiBVUkw6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAorewor
ICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBHVW5pcXVlUHRyPFNvdXBVUkk+KHNvdXBfdXJpX25ldyhzdHJpbmcoKS51dGY4KCkuZGF0YSgp
KSk7Cit9CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQorewor
ICAgIHJldHVybiAhaG9zdC5pc0VtcHR5KCkgJiYgZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGhv
c3QudXRmOCgpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCmlu
ZGV4IGQwYjkwMzhmODI2NDdiZTBhMTVmNWNlYTRmODAxOTYxZjY3MmYyOWIuLjdlYzM5ODJlMTEw
YjdhZjczMTQ5YWU5YWVjNTUxYjBkMDM2YjE0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaApAQCAtNDgsNyArNDgsNiBAQCBjbGFz
cyBQYXltZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0
b3I7CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czsKIHN0cnVjdCBBcHBsZVBheUxpbmVJdGVtOwogc3RydWN0IEFw
cGxlUGF5UGF5bWVudFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmgKaW5kZXgg
YjA3NTljZGExOGMwM2M3M2RiMGJkMWRjZjg0NTMxYjI0YjUyZDA5ZC4uM2FhMjJmNWI4MmQ2YzJj
MTgwZWNlODE0NTg1ZDg1MTA4OTRiMWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQu
aApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJF
dmVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggYmQ1NTM0YzJkZjkxMjU4N2RkMjc3ODky
Mjk4YmQ3ZDQxZTdhOWFmYy4uZTM3MzM1N2NjMDdmZWE1OWRlOTdlYzU1ZDVjODg5M2QwNjM4NjRk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dENvb3JkaW5hdG9yLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiUGF5bWVudFNlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZDQ2NTJj
ZmVkNTBmZmMxZDJmNmI2MmI1ZTRiZGQwZjkyODYzZDQ1Ni4uYTU0NzE1NDk3M2MwMWY4YmVhNWQx
ZGNhMTIxNWQ5ZDQ0OWUwMDE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIFBh
eW1lbnRDb250YWN0OwogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKIGNsYXNzIFBheW1l
bnRNZXRob2Q7CiBjbGFzcyBQYXltZW50U2Vzc2lvbjsKLWNsYXNzIFVSTDsKIGVudW0gY2xhc3Mg
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CiBzdHJ1Y3QgUGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHQ7CiBzdHJ1Y3QgUGF5bWVudE1ldGhvZFVwZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmlu
ZGV4IGU5MTVjYTE2ZGI0MDI0MzhkOGJkODAwMTlkYWRlOWIzNjc3MDNkMTcuLmU3N2YyY2E5OGZh
ZmM1NTM0ZTRmNjBlOGNmOTA0MDYwZDI4YjEzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaApAQCAt
MzQsNyArMzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYXltZW50TWVyY2hh
bnRTZXNzaW9uOwotY2xhc3MgVVJMOwogc3RydWN0IFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0
Owogc3RydWN0IFBheW1lbnRNZXRob2RVcGRhdGU7CiBzdHJ1Y3QgU2hpcHBpbmdDb250YWN0VXBk
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lv
bi5oCmluZGV4IDBhMzUwN2UyNjBlNzQ2N2UwYWMwZDMxYzk0OTM3NTRhMzNmZjJhNjQuLjhmN2E0
YjY1MGYwYjkyZjgxNWY5YjVkNWNjZTE3OWE3ZDUyOTEwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmgKQEAgLTM3LDcgKzM3LDYgQEAg
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBQYXltZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBj
bGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogCiBjbGFzcyBQYXltZW50U2Vzc2lvbiA6
IHB1YmxpYyB2aXJ0dWFsIFBheW1lbnRTZXNzaW9uQmFzZSB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25N
YW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0Fw
cGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCA5OThiNzg0NjBjYzg3ZWQzOGU5MTg2ZjA4ZmQyOTk3
YzYzZjg5ZDcyLi5iMmYxYjQ5ZjNlYjNhM2VlODBhNGZiMzI5ZjY5ZThiZjhlNTFhOThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGlj
YXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCmluZGV4IGU2ODk2ZTc4NzhiMmMy
YjEwZjY2MTNjZGI5ODVkMGI2ZTI1OGQ5NGEuLjQ4OTc2ZDJhMzUyZTIwZGU0MTRhNmJmOThlNTY2
ZWU0NzA0NzVlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05h
dmlnYXRvckJlYWNvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2
aWdhdG9yQmVhY29uLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAzOGQ1YTY2MDhi
ZDVmNGQ0ODg4ODEyNmY5YjU4ZjIwMmQ5NzAyMTNlLi45YTY0ZWU4Y2IzZmM0MTRhNDYyNTUxZGJi
YjEzODEyYzRjMGNiZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2lu
Y2x1ZGUgIlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaAppbmRleCA2N2RlMmU1NDYyYmYzZGM2YWI4MGMyNGEzMThjNDA1NGZjZjkyY2E1Li40MDEx
YjM3MzhjOTc5YmI5NzhhZGZkY2ZjYmE4NTRjYWU4YzVkZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAi
RmV0Y2hCb2R5Q29uc3VtZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5j
bHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWV0YWRhdGEu
aAppbmRleCBlMzY0NGE4NzUxOTU5N2Y2NGU1M2YzY2NkYWM3NDQwMzk3NjAwMjNkLi42ZjNkZmUz
NmYwNTM4OTkxNDdjNGVhZGVmY2UwMmQ0MzJmOTk5M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgK
QEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlUmVnaXN0cnkuY3BwCmluZGV4IDJlODJjMzI2MTg2NWQ3YTk4ODhhNWMyYzZiODU3NTRi
NDJjYmE0NTkuLjk4YzY2M2I2ZmM2ZGJkYTI5MzZhN2RhMjY4OTZkZjAwMzIzM2JkYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZVJlZ2lzdHJ5LmNwcApAQCAtMzUsOSArMzUsOSBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAKICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5
LmgKaW5kZXggMmI4OTRlMGNhNDNiZTQxYjViMTBmNGQxOTg5MTM0MzQ4NzkyODMwNi4uMDMzNjc0
ZjI2ZDM0NTg1OWE0YWExY2RhMTIwZTZkODg0MTU0NmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKQEAg
LTM4LDcgKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFz
cyBNZWRpYVNvdXJjZTsKIAogY2xhc3MgTWVkaWFTb3VyY2VSZWdpc3RyeSBmaW5hbCA6IHB1Ymxp
YyBVUkxSZWdpc3RyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDdlMjIxNTAyNDA4ZmJjNDkxZTg3MDY2OTc2ODY3OWVi
ZTAwNDM0NjIuLjhhYzE0NTc5NTBhNzkxODlkM2FjZDJkMDcwNTY2YTIxODdiY2ZhZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3Bw
CkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVJlZ2lzdHJ5LmNwcAppbmRleCBkNjlkY2NmODZlMzhhYTNmNzNjY2E3MTlkZjFiOWViZmZi
MmMyMDA4Li42NDE1ZmZhYmE1YzlhODQ4MTM0ZTUyMjMzNGRkM2E2MDFlYzJiZjJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1SZWdpc3RyeS5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5o
CmluZGV4IGEyNjdmMTEwMGJlMTdjMmEwYjI5YTIyMWUzYjE2OWM5Nzc0YWEyMmQuLmY2ZDIzZDJk
NzkwZjBkNGYyNzUxMDViYjQwNmIxOWUzY2UwZTQ5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCkBAIC0z
Niw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW07CiBj
bGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIE1lZGlhU3RyZWFt
UmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9y
Q29udGVudFV0aWxzQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNv
bnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAppbmRleCBiNjJkOWFmYThl
YWU1YjRmNmZlMzRiNGM1OGNkYjRmZGNjZDY1YTA2Li40NzA2NzNhMDllOTVmMDMwZjVlZWFjNDIz
OTg2OTZmYTEwNDNlMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmln
YXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50
VXRpbHNDbGllbnQuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE5BVklHQVRPUl9D
T05URU5UX1VUSUxTKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmgKaW5kZXggZmYwZGM1NGRhZjFlNTAyMzhhZmEzNWYxMzI4OWU1YjgzZTJiMmI5Yy4uZmVkYTFh
MTNhZWQyMWM0NGJhZDMzODk2MjlhNzI1M2Y5MmIxYzllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMzgsNyArMzgs
NyBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvblBlcm1pc3Npb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmgKaW5kZXggYjA5M2Qz
YTVmZmM5NTY3MTJlYzkxMGQ0Y2ZhMTIyNzFlMjhhOWJhYS4uMjA3NzljZWRkMjZmNmI5NDcxMTM4
NDRmZDk2MWZiZjhiYjAwNjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaApAQCAt
MjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJF
dmVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKaW5kZXggZTNiZDdlNTMyY2YyM2YyNTc2NjY1NGUx
MGMzNDVkY2JjYzM0MDg3Mi4uM2QxODgxYzU1N2I3ZDM3NjhkNDMzYjA4NmUyZjdmNGE3OTlkZDkz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudFJlcXVlc3QuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRNZXRo
b2RDaGFuZ2VFdmVudC5oIgogI2luY2x1ZGUgIlBheW1lbnRPcHRpb25zLmgiCiAjaW5jbHVkZSAi
UGF5bWVudFJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKaW5k
ZXggNmI1NTQyZTA4OTAwN2Q5YTQ5NzA0ZjJmYjNjZjQzOThhMGZiNGUwYy4uZWZlYWYwMGM5ZTM1
OGVkNjgxNTViNThhMTFhZDQ3MjU1NjFlMDI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xh
c3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJUcmVlUG9zaXRpb247CiBjbGFzcyBTZXR0aW5n
czsKIGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFBsdWdpblJlcGxhY2Vt
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luUmVwbGFjZW1lbnQ+IHsKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDc2
MGE0ZTcxMTRmNzQ3NTgyMjNhZGQxZmIwZjg1NmQ2ZTg1ZDMwY2UuLjRlZjBiNGRkZTAxNzU0ZmQ3
YmQ2ODkyMmE0NTVkOTM2N2VjYjg2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNzEsNyArNzEsNiBAQCBjbGFzcyBPc2NpbGxhdG9y
Tm9kZTsKIGNsYXNzIFBhbm5lck5vZGU7CiBjbGFzcyBQZXJpb2RpY1dhdmU7CiBjbGFzcyBTY3Jp
cHRQcm9jZXNzb3JOb2RlOwotY2xhc3MgVVJMOwogY2xhc3MgV2F2ZVNoYXBlck5vZGU7CiAKIC8v
IEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5k
IGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCmluZGV4IGNhNDA2YWY0YzZmNTIyNTFmOWY2Y2NhOGM0NWQ0NDNhYmI4ZDk4NTcuLmE4
NWRmZDc3NDRjZDQ3OWFiMTIzZDMzMjcxMWVlOGYyM2QxMDFkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIEFycmF5QnVmZmVyOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwotY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xhc3MgV2ViU29ja2V0Q2hh
bm5lbENsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaAppbmRleCA5MDEyMWY3MGQzMDg4MGMyYTAyZjk2NTgwYWUwNTcyOGZiOGJkZGM4Li41MDQz
YzQ5NDIzNWQwNzA4NTUwNmFhYmRjZTNiYzRkMGI4NGJiYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5j
bHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA3NDI3YmI1NTcwNzVl
ZGE4OGZiZDY2MTIxZTdkOTBhM2YxOWNkZDM0Li4xYjE5ZWRhYjRjOWE2ZjM4MTJmNzEzMGI3NmE2
Yjk1MzdjNWM3NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNDQsNyArNDQsNyBAQAogI2luY2x1
ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKICNpbmNsdWRlIDx3dGYvQVND
SUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oCmluZGV4IGNmMmJkN2FjMGFmMWIyNzRkOTgzYmQ2YmZjZjI0ZTM4MWQxMjIz
ZTcuLmU5NmY4NjAyYTg3YTkzNTI2OTY5Njc2NWM4MGU3MzAyY2Y3MzdlYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggODEy
ZjhhMDJkMzBhMTY4M2NlOTQ2ODRmODcxMDIwZTZiYmI5OWQxOC4uMzg5NWU0NDk2NzUwN2M1ZWU5
OWNjMjJmNDNlNzIxZjI5MTM3NWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmgKQEAgLTM5LDcgKzM5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDk0MzM5ODQ3NTdlMWI0YzkxNDVlODBiN2QyMjcx
ZjllMjRhMjc0MGIuLjA2OGI1YzI2MjNjNDEwMGM5N2U2NzMyY2I1MjcxYzMxZDBlZGRjN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xODcsNyArMTg3LDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAog
ICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLm1tCiAKLSAgICBw
bGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0Yu
Y3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xOTUsNyArMTk0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3Bw
CiAgICAgcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogICAgIHBsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgcGxhdGZv
cm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KICAgICBwbGF0Zm9y
bS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKQEAgLTM5OSw3ICszOTcsNiBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24u
bW0KICAgICBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvVGhyZWFk
Q2hlY2subW0KLSAgICBwbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL1Vz
ZXJBY3Rpdml0eU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9WYWxpZGF0aW9uQnViYmxlTWFjLm1t
CiAgICAgcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGEyNGE5MTk1MzYwYTNjNWI0NjBkNjI4ZTJmODQ0
ZWQwMTkxOWZkNzIuLjY1ODZiMDI0NjFhNDcyMTdlZjA4ZDVlYzBiM2NkYzMxNjY2MTEzZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNTAsMTIgKzI1MCwxMCBAQCBpZiAoVVNFX0NG
KQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBsb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAogCi0gICAgICAgIHBsYXRmb3JtL2NmL0NGVVJMRXh0
cmFzLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgICAgIHBs
YXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCi0gICAg
ICAgIHBsYXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgICAgIHBsYXRmb3JtL2NmL3dpbi9DZXJ0
aWZpY2F0ZUNGV2luLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGZjMjg4YjAxMzkxZDc1MmIyNGRj
OWZhZTcxZWZmMGYwZWI4YmU1YWYuLjYyMTkxYzAyZTM1MzcyZDc2YjMxN2YyNzRmNWE4MzVlNjcz
MDY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNTM1LDggKzE1MzUsNiBAQCBwbGF0Zm9ybS9UaGVt
ZS5jcHAKIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9ybS9UaHJlYWRUaW1l
cnMuY3BwCiBwbGF0Zm9ybS9UaW1lci5jcHAKLXBsYXRmb3JtL1VSTC5jcHAKLXBsYXRmb3JtL1VS
TFBhcnNlci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAKIHBsYXRmb3JtL1dlYkNvcmVD
cm9zc1RocmVhZENvcGllci5jcHAKIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTgxMzZhOTM4YzRlODg5MDJhZDU0YWZmMWQxMTUyOGZm
YWM2MTNhOC4uZmI5ZDkyMDE0NjJhMmYxZWI0NmNjMGJhYTUxYjNhNTY4NjgwYjQwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xNzgsNyArMTc4LDYgQEAgcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3Bw
CiBwbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCiAKLXBsYXRmb3JtL2NmL0NGVVJM
RXh0cmFzLmNwcAogcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE4Niw3
ICsxODUsNiBAQCBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKIHBsYXRm
b3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcAogcGxhdGZvcm0vY2YvUnVuTG9v
cE9ic2VydmVyLmNwcAogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCi1wbGF0Zm9ybS9j
Zi9VUkxDRi5jcHAKIAogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
Q29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAK
QEAgLTQ1OCw3ICs0NTYsNiBAQCBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCiBwbGF0
Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0KIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQog
cGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tIEBuby11bmlmeQotcGxhdGZvcm0vbWFjL1VSTE1h
Yy5tbQogcGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQogcGxhdGZvcm0vbWFjL1VzZXJB
Z2VudE1hYy5tbQogcGxhdGZvcm0vbWFjL1ZhbGlkYXRpb25CdWJibGVNYWMubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMzQ0
NGVlZTY1NjM5ZjVlNjc5ZDk2ODczMGNiMzkzOTM4ZGRjMGEwLi45YTg4MzJiNWJlNDI4NmVlNjZk
ZjRhZTkxNDBhNzJlMzQ0ZDY3OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQxLDcgKzE4NDEsNiBAQAogCQk1QzQzMDRC
MDE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRDE5MUFDOTA4MDAwRTJC
QzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgKi87IH07CiAJCTVDNDMwNEIxMTkxQUM5MDgw
MDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hh
ZGVyVGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzQzMDRCNjE5MUFFRjQ2MDAwRTJCQzAgLyogSlNF
WFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzQzMDRCNDE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJl
TE9ELmggKi87IH07Ci0JCTVDNkU2NTQzMUQ1Q0VGQkYwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNkU2NTQwMUQ1
Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDOEM2MDA5MjEyNzZCODcw
MDgyRjg4RiAvKiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEM2MDA3MjEyNzZCMEYwMDgyRjg4RiAv
KiBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0ExREVDNjFGNzFGMUM3MDBFNzFCRDMgLyogSFRU
UEhlYWRlckZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5MTcsNyArMTkx
Niw2IEBACiAJCTY1NkQzNzQ4MEFEQkE1REUwMEE0NTU0RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2RDM3MzAw
QURCQTVERTAwQTQ1NTREIC8qIFN1YnJlc291cmNlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU3QUZBRkMyMDA0N0EyOTAwNTA5NDY0
IC8qIFNwZWN0cmVHYWRnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1N0FGQUY4MjAwNDc4OTkwMDUwOTQ2NCAvKiBTcGVjdHJlR2FkZ2V0LmggKi87
IH07CiAJCTY1ODQzNjg2MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg0MzY4NTBBRTAx
Qjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBV
UkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5
MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTlBN0QxMzBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3Rp
dHV0ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1OUE3RDEyMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1OUREQzgzMDlFMTk4QkEw
MDFCRjNDNiAvKiBKU0RvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTlEREM4MTA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1QTIxNDY4
MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODA1LDcgKzM4
MDMsNiBAQAogCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4QUI1MTNGMUFG
QjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUJDQkI4QUJBMTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRl
cnZhbFRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JCOEFCQjEzRjFBRkIw
MDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNzEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxh
Y2tUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJQkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAv
KiBVUkxIYXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkZCNTNCMERDRDI5Q0Yw
MDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNDMEU4NzYxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0
dXJlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNDMEU4NzQxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5oICovOyB9
OwogCQlCQ0M1QkUwMTBDMEU5MzExMDAxMUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1QkRGRjBDMEU5MzEx
MDAxMUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmggKi87IH07CkBAIC00NjY5LDcgKzQ2NjYsNiBA
QAogCQlFMUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTE0NzA3
MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oICovOyB9OwogCQlF
MUEzMTYyRDEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUEzMTYyQjEz
NEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBNjQzRjIwRUMwOTcy
NTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBX
b3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJRTFBOEU1NjcxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUE4RTU2
NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUFERUNCRjBFNzZBQ0YxMDA0QTFBNUUgLyog
TWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxQURFQ0JEMEU3NkFDRjEwMDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQURFQ0NFMEU3NkFEOEIw
MDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFBREVDQ0MwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFu
bmVsLmggKi87IH07CiAJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFERURE
ODBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oICovOyB9OwpAQCAtNjExNiw3ICs2
MTEyLDYgQEAKIAkJMUE5MjdGQ0YxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wYXBpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBOTI3RkQwMTQxNkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbnBydW50aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBOTI3RkQxMTQxNkExNUIwMDNBODNDOCAvKiBucHR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wdHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBQTg0RjAyMTQzQkE3QkQwMDUxRDE1MyAvKiBTY3JvbGxDb250cm9sbGVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsQ29udHJv
bGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBODRGMDMxNDNCQTdCRDAw
NTFEMTUzIC8qIFNjcm9sbENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2Nyb2xsQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUFBRERBMTE0REI0MDlGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTg3NDAsOCArODczNSw2IEBACiAJCTVDNjY4RTY0MUU3QzZDMzUw
MEQzMkIzQiAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzY4OEFBMDFEMzgwNTA5MDAwQjU0RkEgLyogVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzY4OEFBMjFEMzgxMjZGMDAwQjU0RkEgLyogU29ja2V0UHJvdmlkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0UHJvdmlkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzZFNjUzRjFENUNFREM5MDBGNzg2MkUgLyog
VVJMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTFBh
cnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNkU2NTQwMUQ1Q0VEQzkw
MEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VVJMUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OEQ3MUQwRjFG
MkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTb2NrZXRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzhDNjAwNzIxMjc2QjBGMDA4MkY4OEYgLyogU2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNob3VsZFNraXBTYWZlQnJvd3NpbmdD
aGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzk3QTMzNjFGNUY3QTY1MDAx
MDUyMDcgLyogUmVjdEVkZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
Y3RFZGdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg5NSw4ICs4ODg4LDYg
QEAKIAkJNjU3QUZBRkEyMDA0Nzg5QTAwNTA5NDY0IC8qIFNwZWN0cmVHYWRnZXQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFNwZWN0cmVHYWRnZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTdBRkFGQjIwMDQ3ODlBMDA1MDk0NjQgLyogU3BlY3RyZUdhZGdldC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjdHJlR2FkZ2V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8q
IEZyYW1lTG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZy
YW1lTG9hZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzUw
OUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzYw
OUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OTM5MjM5MDlBRTQzNUMw
MDJDNTMxRiAvKiBVUkxNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVVJMTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTlBN0QxMjBC
NkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN1YnN0aXR1dGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1OUREQzgwMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTA3LDcgKzEyODk4LDYgQEAKIAkJQkNCQjhBQjUxM0YxQUZC
MDAwNzM0REYwIC8qIFBPREludGVydmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBPREludGVydmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkI4QUI2
MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUE9ESW50ZXJ2YWxUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDQkI4QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9EUmVkQmxhY2tUcmVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNo
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTEhhc2guaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCRkI1M0EwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXaW5kb3dQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkZCNTNCMERDRDI5Q0Yw
MDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDMEU4
NzMxQkZFNzBFOTAwOEY3RjUwIC8qIEhUTUxQaWN0dXJlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MUGljdHVyZUVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyNTIsOCArMTQyNDIsNiBAQAogCQlFMUE1Rjk5QTBF
N0VBQTI1MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdv
cmtlclNjcmlwdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V29ya2VyU2NyaXB0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MUE2NDNGQzBFQzA5N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBOEU1NjQxNzU1MkIyQTAwNzQ4
OEU3IC8qIENGVVJMRXh0cmFzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENGVVJMRXh0cmFzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBOEU1
NjUxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENGVVJMRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxQUIxRUE4MTRFOUUyN0QwMDQ0OUUxMyAvKiBGaWxlTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRmlsZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFC
MUVCNzE0RTlFMzU4MDA0NDlFMTMgLyogRmlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUJCMTRFOUUzN0EwMDQ0OUUxMyAvKiBGaWxlRXJy
b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEZpbGVFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNjIzNCw4ICsxNjIyMiw2IEBACiAJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTFBOEU1NjQx
NzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCAqLywKLQkJCQlFMUE4RTU2NTE3NTUy
QjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLywKIAkJCQk1MTYwMzA2QjBDQzQzNjIzMDBD
OEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQk1MTdBNjNCRjFCNzQzMTdFMDBFN0RD
REMgLyogS2V5ZWREZWNvZGVyQ0YuY3BwICovLAogCQkJCTUxN0E2M0MwMUI3NDMxN0UwMEU3RENE
QyAvKiBLZXllZERlY29kZXJDRi5oICovLApAQCAtMTYyNDcsNyArMTYyMzMsNiBAQAogCQkJCTJE
NzZCQjgzMTk0NTZGODEwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuY3BwICovLAogCQkJCTJE
NzZCQjgwMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCAqLywKIAkJCQk1MTJE
RDhFMjBEOTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICovLAotCQkJCTFBOTg5
NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNm
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0Njk5LDExICsyNDY4NCw2IEBACiAJ
CQkJMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oICovLAogCQkJCTkz
MzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi8sCiAJCQkJOTMwNUIyNEMwOThG
MUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8sCi0JCQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFG
IC8qIFVSTC5jcHAgKi8sCi0JCQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oICov
LAotCQkJCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi8sCi0JCQkJNUM2
RTY1M0YxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgKi8sCi0JCQkJNUM2RTY1NDAx
RDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5oICovLAogCQkJCTg2ODE2MEQxMTg3NjY5QzQw
MDIxRTc5RCAvKiBVc2VyQWN0aXZpdHkuY3BwICovLAogCQkJCTg2ODE2MEQyMTg3NjY5QzQwMDIx
RTc5RCAvKiBVc2VyQWN0aXZpdHkuaCAqLywKIAkJCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYg
LyogVXNlckFnZW50LmggKi8sCkBAIC0yNzQ3Niw3ICsyNzQ1Niw2IEBACiAJCQkJQ0QzMTg2MjMx
OTlGMUUyQTAwMzBBMEY3IC8qIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RkE5MDRDQTE3OEU2MUY1MDA0QzhB
MkQgLyogQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMUE4RTU2NzE3NTUy
QjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzZGRDE1
MTZDNzgyNjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTdCQzY5REQxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNUZGRjEyQjAyNjc2MDBDMUEzNTkgLyogQ2hhbm5lbE1lcmdl
ck5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzA5MTYsMTEgKzMwODk1LDggQEAKIAkJCQlFNEFG
Q0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RDA4NkZFOTgwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEMTc2MkUwMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI2NzcyNjA1MUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUJDQkQyMUFCMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNTVCM0RERTEyNTFGMTJEMDAzRUYyNjkgLyogVVJMSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1QzZFNjU0MzFENUNFRkJGMDBGNzg2MkUgLyogVVJMUGFy
c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0MyODlERjFBQTBGRTVEMDA5QTlDRTMgLyogVVJM
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzN0EyMUQ1N0IzRkUwMEFCODVFQSAv
KiBVUkxVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyNzYzQkYxNjY4OUJGQjAwMkZDQUNC
IC8qIFVzZXJBY3Rpb25FbGVtZW50U2V0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKaW5kZXgg
ZjNlMzQ2YmVhN2UxOGJlZDJiODk5MDY3NGI2ZTIyZmM0YTAyNWNjMi4uNjJjZDU0YTg0YWI0YTVm
MDJmYWM3YjcyNWY2MGQ3ZThhZDEyYzJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKQEAgLTQwLDcgKzQwLDYgQEAg
Y2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBKU0RPTUdsb2Jh
bE9iamVjdDsKIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKLWNsYXNzIFVSTDsKIAogY2xh
c3MgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2Fj
aGVkTW9kdWxlU2NyaXB0TG9hZGVyPiwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3Jp
cHRGZXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRj
aGVyLmgKaW5kZXggNTIyYjJmZmMwNDMyYzE4OTRhNDVjMDJiNjk1OWU5ZTYwYTg0MzU2ZS4uZDUz
OTFjNjk3ZDdjZjRmNmY1ZDQwNzljYTI3MmVmNzdlYTljYWJhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaApAQCAtMzMsNyArMzMsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERvY3Vt
ZW50OwotY2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRTY3JpcHRGZXRjaGVyIDogcHVibGljIEpT
Qzo6U2NyaXB0RmV0Y2hlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDg4NjlkYjFmOWEzMmRkYzNkMjA1YzhmZjg1
ZDIyOTQwMTlkMjliMzEuLmQ2Yzc5Y2QyMGFkNTcxMjhhZDdlNjc5NmI1ZTFmNjQxNjFkNDFjMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CkBAIC01ODksNyArNTg5LDcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2UKIAogYm9vbCBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91
bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZK
YXZhU2NyaXB0VVJMKQogewotICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAg
ICBpZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSB8fCAhbV9mcmFtZS5kb2N1bWVudCgpLT5j
b250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhtX2ZyYW1lLmRvY3Vt
ZW50KCktPnVybCgpLCBldmVudEhhbmRsZXJQb3NpdGlvbigpLm1fbGluZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZjdjMDgyNGUwNmNj
NzE0NjljMDcwZDY4OGU0MjY4MjRjOWMzYzRmMC4uNmU5ZGRjYTA4ZGUwZjY4MThhMDc2NzViYWE2
ZjRhZTRkZWVlYmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaApAQCAtNjAsNyArNjAsNiBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdDsK
IGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIGNsYXNzIFdpZGdldDsKIHN0cnVjdCBF
eGNlcHRpb25EZXRhaWxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5oCmluZGV4IDkxZmY5OWMxNTBjZmJjOGZiNmVhNzBmNWY1MDQyYzdhYTFl
NDM0NGIuLmE2MDY2ZjRjZTM5OTk5NmM2NTRkYjYwM2MwYTQ3MjRkZDA4NDAzNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCkBAIC0yNywx
MCArMjcsMTAgQEAKIAogI2luY2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIgogI2lu
Y2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5o
IgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1Zh
bHVlLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggNTZlZTY5MGRl
ODQxNTlhNTdjNDI4YTkwNzM5YjIwNTZmZmRkYmZkNi4uYjdkN2ViOTNjYmFjYjc0YTgxYzAwN2U1
ZWYwOTgxMjI1YmM5YTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFNvdXJjZUNvZGUuaApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNj
cmlwdFNvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NvdXJjZVBy
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQppbmRleCBkMTFiNDJlNmU3ZTc1NDcwNDI3NDMzODEzYzM1OThjNDAwMGU4OTRkLi41ZjNl
YTczZjk3NjQxMjAwNWZjMzkyN2IwNmUxMWI2YjUxODIzZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDUzMiw3ICs0
NTMyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAoTmVlZHNJbXBsZW1l
bnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDdXN0b21IZWFwU25hcHNob3R9KSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPiIpOwogICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7Ci0gICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJVUkwuaCIpOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHd0Zi9VUkwu
aD4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6aGVh
cFNuYXBzaG90KEpTQ2VsbCogY2VsbCwgSGVhcFNuYXBzaG90QnVpbGRlciYgYnVpbGRlcilcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNl
bGwpO1xuIik7CkBAIC00NTQ0LDcgKzQ1NDQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgIH0KIAogICAgIGlmICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbikgewotICAgICAgICAk
aW1wbEluY2x1ZGVzeyJVUkwuaCJ9ID0gMSBpZiAkaW5kZXhlZEdldHRlck9wZXJhdGlvbi0+dHlw
ZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siPHd0Zi9VUkwu
aD4ifSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0
cmluZyI7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9u
JC8gb3IgJGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxpc3QiKSB7CiAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
Ik5vZGUuaCJ9ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKaW5kZXggMTE3OTU4NzUzNTFiZjJl
MzYzYzkxNGVkZDc0MTM1MWI3NDJhMjlhYy4uNmQ5YmQxN2I2ZDE1NGUwYmYwYTZmZjhiMDFiMDAx
ZDMzNTZkZmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKaW5kZXggNmQ3ZmFhMmI3N2RhZDZh
NDczZDA5Y2E2ZmYyOWIzODk2YzVjNGEyYi4uMDc5YzY2NjI5NGFlZWNhODI3NGFlMmJjZTVlZmU0
ZWE3N2IxNmI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTTWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNo
b3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1h
cExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVh
ZE9ubHlNYXBMaWtlLmNwcAppbmRleCAwMDhkY2ViYTQyYzZkNGM2ZmIyYzlhOTEzZmZiNmQzM2Zk
MGYxYzgzLi45N2Q0ZjNhYjRmYTE2MDJhZTQ5MGFlODZjOTZlMGMzODQ3OGJmOTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1h
cExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1JlYWRPbmx5TWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpTRE9N
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDYyOTE2ZDM2YmI1NWE2OTMyMjYyZmZhNTVkYzI0
Y2U2ZWUzYmU4NjMuLjRkOWYxNDJjNTQ0MzI4MWU1OGZmY2IwNTU2NGU1Y2RjYmZjNGQ1NGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RB
Y3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmluZGV4IDY0MDZiZTk5OTAzZDE0YzFi
MTcxMDhiOGZhM2QxMjkyZTFmYzkwNzAuLjRhMDI3OTM2YjlkYjk5MzYwYmZkZDc4YTk3YjZiMzVk
NjQ2ODZjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBA
CiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCmluZGV4IGFkYWQwNDliMTRjNGFhNWYyNWFlYWQ5NDYw
YjFjMmJmYTYxOTIyNGUuLjM0MmEwZGY4ZDFlMjgzNTI4NGJjMzZiZTYxZGJiYmYyN2JiMjhkMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKQEAgLTMw
LDEyICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAK
aW5kZXggNDYxYzRkOTZhNWYzOTBkYzhmMTkwMDk1Y2I3NDU2NGE3MTA3YTcyMi4uM2FkOGMyMzc5
M2E3YTY5YjgzMzRkZjViZDc1NDMyM2ZkOWFhYjcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNw
cApAQCAtMzcsMTIgKzM3LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDFkYjBhMzJk
NTVlNWNiN2MwZjk0Yzg1ZjJhZmM5Yzk4MmIyZWIwMGQuLjAwOGI1ZTg5NzY4Njk1ZjI1YzgzM2Jh
MzQ2MDFkNGJlNTdkMGUyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
CmluZGV4IGUxZjlmMTcwYTZjZDcyM2RiZTk1NTg0ZGNmNWZhZDA0MjQyY2VlODguLmE5NDU0ZTli
YTZiOTM4MDRhM2U5MDU5NGU5YTcwZTYwY2Q2YTFiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNw
cApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJ
VC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9N
SklULmNwcAppbmRleCA3NmM0MGZiMDQ1Nzk1MDNlYTViNTJjNDdlMDQ5NjBkYjIxOTk5ZjNhLi45
NWQ3NjcwNDczODhlMzhjMDEwMDQyOTVkOGNmMTM0NTZiZDQ0YmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNw
cApAQCAtNDEsMTIgKzQxLDEyIEBACiAjaW5jbHVkZSAiSlNFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SlNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRyYWNlcnMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5j
cHAKaW5kZXggODdiMzUzYzViNTk4NTg5ZDU5MDJiNzBlNjRmMzkwNzIxZmE5MmM5My4uMTI3ZmFh
OTY3ZDJhYzUzNmU0NmFiOTNkYmY1NmZkNTI1NGZlMTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiSlNUZXN0U3Vi
T2JqLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
ICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3Mu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCA1NWRlYThlZWFiMDdm
NzUwNWYxYTZiZGZjYzI0MWI2NzFjYmRlYTU2Li40NWRjMTkyNzA0OWJlMjcyMDU1MmE5OGI3ZGYy
MzViMGY1YTE1YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0z
MCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNu
YXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggMzA4ZTM0ZjAwMWFjMmQ4YjM1M2U4MDUxZDhlYzUx
YmJhZGQ2ZWUwYS4uNzFlM2JmMzc1NDQyOWVjN2E3Y2NjYTgzNTUxZDM5Mjg4YWMxZWVmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggMjM4YTQ4ZjdjNjVmMGQzY2I2ZjFlMDNmN2EyOWU5
ZTgyOWViY2JjZi4uZDMyYzA0Y2M1MGVlZGYyNjllZDgwMWQ2OTEyM2Y2YjUwNTQwNDcyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4
Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRl
eCAzNDIzOGJjNWQyMTNlYzQ5OWZiZTVhMjU1YzU2MThmMzA2ODViMmRjLi5hYzJiZWJiMmQ5MzI0
YTFhMmMyYWRkNmExNjBkMzdjNzc1YzIzYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IDcxYjhiZGRmNjhkYWVjYzcz
ZTIyMWNlODNkNjYwNzNjNzM4YjRlYzguLmIyMGI4M2M3YmU5ZTViMzdiOWNjNTc1ODY2M2UxNzg1
NTg1ZTM5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMg
QEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQogI2luY2x1ZGUgIlRlc3RHbG9iYWxPYmplY3RCdWlsdGlucy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDY2MDc4
YmQ2Y2I1MTFlMWQyZjQ2ODg4MjU4MmE3ZjkxZmJjMDZiYzkuLjU3ODkyNTM3YmU4NzgzMjRhNWRk
ZThmNmQxYzU5MmMxYjk2MmI3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAppbmRleCA2MjAzY2MwYjk4NzM5MjQ3N2ExZDliZjdiNTcwY2JlMzdjMTBlMzRmLi4z
NTVhZGNkOTBhZWZjZjU5NWQwN2VkNTQ2ZTRjYWFiMjBiM2VlMjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjcs
MTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDNmZGM1NjA0MDM1MGUxMzIxZGIy
NDY5N2I3MjcyNTU3ZGQxYTkwOGQuLjc2OTY3M2FmYmI0ZTYyMDFkOTRjMzJhODRjZjI0OWVlNjAz
ODhmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCkBAIC0yOSwxMyArMjksMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCmluZGV4IDRjNjRjMTllYjg1ODI2MDI5ZjYwYjkyNWIzMTllMTFhNzAzZDk0ZjcuLjY0YTM3
ODk5YTlkOTA3ZmM4NTI5OTg2YjNkMDQ5MWJmNzA3ODY2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXN0U3VwcGxl
bWVudGFsLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgfHwgRU5BQkxFKENvbmRpdGlvbjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogI2luY2x1ZGUg
IkpTRE9NQ29udmVydFN0cmluZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmUuY3BwCmluZGV4IDU1ZmZkNjdhMTUwZmUzMmM1ZWRhMzVlMzJkMjQ2
ZjY5MzJlOGViYWEuLmNmZjMyZmYwZWIzYWRkYTc3ZmU5NDYzYTJhNGY5OWNlNjU4YjQ5NzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcApA
QCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90
QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVy
YWJsZS5jcHAKaW5kZXggOTc5YzBmOGNjNWJhZDg0NmYwOTYxY2JkYTI2NGUwY2I3NmMxODMwYy4u
YWMxZThlN2Y5ZWY4MjkyNzhlMjQ1ODQ1YTY2MjMxYTVmY2JjYWIwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFi
bGUuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1
aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDUwYWRhOGNhZjBlZTZkMDJiYWRhODAxYjBiNjk4
YWVlOTU5ZDkzNjAuLjAwZmFmOWYwNTczZmQwMDc1ZGU4ZGU1MTQ5ZThlYjUwODc0Yzk0ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTMwLDEy
ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRl
eCAzMTg3ZDJkYWYzZDZlNzIxZTdlMDA4NWYyN2NjYjIyZjJiNDFkYWY5Li4zZmViZDFjZGVjNDBl
Y2VmYmEzMmJjZmM0MzYzMjQzNTE1Y2U2YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMjgsMTMgKzI4
LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBkMjcx
OTRlODNlNmFjNzc2NTMxYTlkYjc3MzBmMDU3NGMyZGZhZTFkLi5lMDVkNjU1NDZiZmExMTM2YTA4
NjQyOTU4NDcyY2Y1MGNhMmQ1MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEz
ICsyOCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggYjFmMzZk
NzNlMDM1YWZlNzhlZmU5MzJiMTRkZjkzY2VmZmJhNGRmMi4uZTAxNWIxNzhhNzY1MzhmODE5ZTUz
YWZlN2M1ZmJiYTc0MTg0Y2EzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMg
QEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTI5
OGExNzYwYzA4MzUyNjZjNDJlYjY2NDg2NGJmNjQ0ODJjN2IzMC4uZjFhODRhOGJhZDlhNWQ2MDVh
MTBlNDlkOWM1YzQyNzNkOTkyODdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01OYW1lZENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25h
cHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDU3ZDY3
YzIzNGUyNmI0ZGRkMDk0N2U0MDJlZjg5YjQ1MDJiNmRkNDMuLjg2MmI0NTlmYmIyMWQ3ZDEwMTI1
Njk1ZjVhMGVhZWZlZDc1NGY2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAppbmRleCBkMGZjZDJmMmI5MDMyNDk1YjRiNjU4YmU5YjMxYjdmZTU1YTA4
ODZhLi5jMTA1ZjE1ZGJhZjg1ZGJmM2ZlNDQzM2JhN2E4MDU1YTg0MmZhYTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAg
LTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDI1MTQxMGI1
ZmFlZjcwMDRjMDExNjY2NmZjZThlMWU5MGEzMzc5YTkuLjY0MTM5YzhmNmIyMGJiMzRiNjIzNmQ2
MjA0MWM3ZTZkMDI5ZDhhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01P
cGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCmluZGV4IDI3NThjYTEwYTE0MTJjNDEzOWIzMjU4NGYzY2Y5MmI0MDNhYmIwMTQuLmQ2
MTRiY2U0MjFmZTM0YzZmYmU2NzhiZDM3ZTUzMmQ1MmQyNzY0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtMjgsMTMg
KzI4LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aC5jcHAKaW5kZXggY2EyYmY2MTJhY2JjMmZkNGUwNDRhMTU5YTc2NDY3ZTVhYWNhYjli
Mi4uZWE0YzVjZDI3Zjg4NzlkMTc5ZWJiYjkxNTNkZjk5MzgxMGJlNzY0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllci5jcHAKaW5kZXggOTEyMGY0YmU3ZjIxYjc4ZDJjOWJmZjJkYjE3MjVhOTQ5NzRi
ZmNkMS4uNmU0MGRlZjNkNDRiYTM3Zjc2NDAwOTkxMjg5YWZjMTBlMjliN2I1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgs
MTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggM2JiN2QzYjdlMTJmODI5Yzg4YzM0
NGJhYmRiNDg2ODIyZjU3Y2JhMi4uZDM5MjRjYmE2MDg2Y2Y5MDg0NmJmMTEwODUwOTM0MjAxOGU0
MzM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
LmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGNiZDVkMzFhNjI2N2Vh
MWVlMjVkZTA5MTRkNjE0NjhiZmNkOTI1YjUuLmM3YTNjNmE5ZDU5NWRmZTY3MmNjNzJhYmRkZTAz
ZWZlNmM4MzI4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
CmluZGV4IDlmY2JmNjk3YjYzOWFlMDNkZGMwZWJiMjA4M2NlNzk5ZjczODgzNTMuLjk4ZWMxM2Rj
MmU3OWVmNWZkYTY0YmY3MmQ3NDNmMWJjZjM5ZTQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBA
QAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBiOGE5ZmFkZTg1YjRlOTg3YzcwNTJhMDI5
YTlkZDhmY2RhNmQzMjUwLi5kZGRmZjhjY2Q3MjU5YjM3NDVhNjZjYzdkYmU2YWFmZmY4MDllNmE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDE3MTQ3NzU1
MGIwYzM4NDU5NTYyZjZhNzVjMmU4M2Q4MzE1ZGI5MjQuLmI2NjFmNTNjZDI4NzA4ODgzYTExYzhj
MjA1ZTcwNDgwOTUzMTdmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyLmNwcAppbmRleCAxMDNmOTFjMWJhYTJhYTM5ZjFlMzk5YWFmZWNlNTgxMTkx
MTE2ZGVlLi5jMzVmZjg5NmM0OGQ4YmIyODc4MjNiZGYwYTQ2MDdhMWIzZGE4NzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJh
dGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5k
ZXggZmMxMjJhMmUyYmJmODdiYTE0YjE2ZjcwNzk5ZTZjMjgwZjFlNGM0ZC4uOWYxMGQ2NGVlNWEw
ZDEzMTliOGNjZjg5NGRhOTBjOGFjMThhMTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMjgsMTIgKzI4LDEy
IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKaW5kZXggNDgw
N2IzNjU1MzMxOGUwNDJhOWI2N2I0NDQwODExOWQ2ODRlZDFkZS4uYzYwZGNhYjYzNTk1OTdkYjRm
ODgwZWRmNDA0MGFjODM0MzVhODI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCkBAIC0zMCwxMiArMzAs
MTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCBkZDUxOTMwNzMzYjZjZGFhNDllMWY2ODU2YjZi
NzFmMWUxMTdjYWRlLi40MGI5ODFlMzQ0MTA1N2Q3Y2JiN2ZlZTE3MGVlNTNjYjkwMzAxNzdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcApA
QCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCBk
ZTk2ZDNiOGNiZjIwMTI4YjM5NjM1ZGIzNmUwNjg0ZTlmODY2N2M2Li4yYjJkZWQ0YzJjNjg4YWY0
NDNmNGE5N2MwZmQ0OWIxMjYwMDA2NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0zNCwxMyArMzQsMTMg
QEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9P
YmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDBjYTVkYmRlMGM5NzM0ZTM5ODFlYzExYzFl
NzVlNzg4OWFiYjdiYmYuLjlmMjU0YjQ3ZWI5OWVlOTkwZDc1N2NkMjcyODhlYzhhMGI4OTcxNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCkBAIC03Nyw3ICs3Nyw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlQcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KQEAgLTkx
LDYgKzkwLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwCmluZGV4IGVhZjA5MmFmM2YzYTcxZTlkM2M0Y2Y2MDExYmZkOTE5MmFi
MjFiNWEuLjFhZGI3MDIxMmY0NTFjY2U4NWIwOGNkYTAzNmZlNDc4MDg5YzM5NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTMyLDEyICszMiwx
MiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAppbmRleCAwNTgx
NDNiYTE0YmI0ZWIyMjQwOWM4ZDI4NDczNzUzZDg0ZjAzZTdmLi5iMDU1NjY4NTk2YmM2ZjI3Yzgy
YzcxNmZkMjM0ZTVkODBhYThhNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgpAQCAtMzcsNiArMzYsNyBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJy
aWRlQnVpbHRpbnMuY3BwCmluZGV4IDBkYjc3NGFmMTI1ZjVkMTg1MGY3OWE2MTcxNDc1ZTEzN2Fi
N2NkNjEuLmMxYTYzNDMwYWMwZDhhYzEzYmJhNGM0YTc0Mzk0OTAxOGM3MTFkMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAppbmRleCAyODM2MjQ3M2E3MDlm
NTk2NDZiYmViNjA0YmUzZGExMTFhMGE4Y2VkLi5iZWM1N2Q1NTE3ZDViMDljOGQyMGEwYWRlNDI5
N2NmMGFlOGRmY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcApAQCAtMjcs
MTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJK
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4IDhiMGY1MWVkMzE5NDFjODRhZWIy
NGEzNzNiZTliMTdjMDdmNzYzZDcuLjdhMjU4OTg2NzE0NjMwYTMwNTNiYzc0ODFhNWRlMGZlZjFi
ZDc5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCkBA
IC0zNCwxMSArMzQsMTEgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uLmNwcAppbmRleCBlM2MxY2MyNTlhMWQyNzg3OWEyNjdkOWY0NDU4
ZDVkNDg5YTY4NzkyLi43OGQxYzQxYzQyOGMwMWUxZjc1ZjZlOTFhNjRhZWIzMDVjMGE1MjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAKICNpbmNs
dWRlICJKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oIgogI2luY2x1ZGUg
IkpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25h
cHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5kaXJlY3RJbmhlcml0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCmluZGV4
IDk2MzY4ZjNlNmY3YmZmYThlMWE3ZWZiZmU3ZjUwNjNmNjQ2ZGJkYTcuLjEzM2VkYTAyZTY0MDE2
M2ZjOWJlNjU0MzQ4MjBmYjkyNWYwNGMwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0
YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcApAQCAtMjYsMTEgKzI2LDEx
IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwCmluZGV4IDM3ZjY1NGRkZmNkN2MxNWI3OGViNjcx
YzRhYWM2Nzg1ZDU0MDBiYjcuLmFkNTMxYjIwYjc0YmM2ZDI1OTU2OTE4MmVhZWZjNTMxMWNmOGUw
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcApAQCAtMjks
MTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZp
bmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcAppbmRleCA1ZTg2OTEwYWI1MjA4OGUzMTc3OTM2
NDlkNGM2MDcyYWM0ZTcyYjk0Li5hMWFjMmQwMTBlNTFjNDgzN2MwZjBiNTQ2MjI4MDM0YWQwZGI4
NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwu
Y3BwCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAz
NDJlZDFhYTUwYjQ2ODY4YmZiMzkxNjZhZTBmODNkMDhjNjgwMmE4Li5kZjdkZmI4Zjk2MWQ5NGZl
OGUyNGYwMWQyNDFmYjI0ZjZhOTRmYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBACiAj
aW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAppbmRleCBmZjJjYWQyY2FmZmM5YWRmMWFmZmE1M2Nk
ZjA5NzdjZmM4M2U4NzE1Li41MjQyYmI4YmFhYzZmYzhjYTE0MDQwNjBmMTUwYmIxZGQ3YzAxNWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uLmNwcAppbmRleCA4OWVkZmI0ZDU0ZmZjZTI5MzEyZTlkYzM3MGEyOTA0ZTg2
Mzg5NDhmLi43Y2FlMjQzOWVmNjI3YjZjMjY2MTczOTRiOTFjYzhiODA0ZmYwNTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAK
QEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKaW5kZXggYjE2YjZmYjRiZDE0ZTI0
ZDJkYWUwZjQ0YmFiZWE2NGQ4NDcwMGY0NC4uNTBhNDZmNjE0Zjk4NDhiNzY5Mjg1ZTE2Mzg5MDcz
YzEyOTE1N2ZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24u
aCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
cy5jcHAKaW5kZXggNWE1NGFjMTQzY2IyNzkzNjRlNjQ2YzMzMzRiMGNiYzE3YWU4MzQzNS4uMGEz
M2FmMzc4YTJiMTIxOWYyOTI4NGRjODllMTZkMzhiNzI0Nzc5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKQEAg
LTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCmluZGV4IGYy
NTE4YTcxZWQ2ODYxYzVhOGNhZjZiZWIzNGM1ZmNmNmJkMzBkZWYuLjQ5MDQ5MTc0ZTAzNmY1ZjE4
MDYyNDRjM2YyZWJkMTllMTY5NjJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC0yOCwxMiArMjgsMTIg
QEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCmluZGV4IDgxMjM3MmI0ZDRlZTcwYzQyM2EyODQzMzQ2
NTFkMTE1OGVhYWNlNTkuLmM5YzUyNjk4YjgyZDNmZmYyN2QyMzQ0ZmRkYjU1NDNkMDkyY2E0MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZS5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAppbmRleCAz
OTE3YjRkOTI5NmJhNTIzZGMxMzA3MDYxOWNmNGNlZDM4YTgzZmIxLi43NWVjMzhhZGI4ZmU4ODkz
MDQ2MDM1MzQ2YjU2NDQ2ZDdiMmI2MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2lu
Y2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCAxZTYxM2FhYjA2NTI0YWY1
NTYwNjMzZDg4MjI0OTdmZDFjMDFlMGEyLi4xODZhNDE2ZGE4NzNhNjRlNWRmNWM2NmViYmZkMDkw
MWFjZTVkZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQAogI2lu
Y2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IDcyNDA3MTU2ZWJkNjI2ODZhMTM0YjAx
YTRlNDBjZDUxMTZiNzU5ZGYuLmQwZWFiYTA5ZmQxMmVlYWY1YTEzN2EyYWI0ZGMyNDBiOTk3Yjc2
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZEluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTk0LDcgKzE5
NCw3IEBAIEJsb2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29u
dGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6TWFrZUhUVFBTOiB7CiAgICAg
ICAgICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwgdXJsLnByb3RvY29sSXMoIndz
IikpCi0gICAgICAgICAgICAgICAgJiYgKCF1cmwucG9ydCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCisgICAgICAgICAg
ICAgICAgJiYgKCF1cmwucG9ydCgpIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVy
bC5wb3J0KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKICAgICAgICAgICAgICAgICB3aWxs
TWFrZUhUVFBTID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNDQs
NyArMjQ0LDcgQEAgQmxvY2tlZFN0YXR1cyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nl
c3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZCgKICAgICAgICAgICAgIHdpbGxCbG9j
a0Nvb2tpZXMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6Ok1ha2VIVFRQUzoKLSAgICAgICAgICAgIGlmICgodXJs
LnByb3RvY29sSXMoImh0dHAiKSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSkgJiYgKCF1cmwucG9y
dCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5w
cm90b2NvbCgpKSkpCisgICAgICAgICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwg
dXJsLnByb3RvY29sSXMoIndzIikpICYmICghdXJsLnBvcnQoKSB8fCBXVEY6OmlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCiAgICAg
ICAgICAgICAgICAgd2lsbE1ha2VIVFRQUyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVT
ZWxlY3RvcjoKQEAgLTI3NSwxMiArMjc1LDEyIEBAIHZvaWQgYXBwbHlCbG9ja2VkU3RhdHVzVG9S
ZXF1ZXN0KGNvbnN0IEJsb2NrZWRTdGF0dXMmIHN0YXR1cywgUGFnZSogcGFnZSwgUmVzb3VyCiAg
ICAgaWYgKHN0YXR1cy5tYWRlSFRUUFMpIHsKICAgICAgICAgY29uc3QgVVJMJiBvcmlnaW5hbFVS
TCA9IHJlcXVlc3QudXJsKCk7CiAgICAgICAgIEFTU0VSVChvcmlnaW5hbFVSTC5wcm90b2NvbElz
KCJodHRwIikpOwotICAgICAgICBBU1NFUlQoIW9yaWdpbmFsVVJMLnBvcnQoKSB8fCBpc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgpLnZhbHVlKCksIG9yaWdpbmFsVVJM
LnByb3RvY29sKCkpKTsKKyAgICAgICAgQVNTRVJUKCFvcmlnaW5hbFVSTC5wb3J0KCkgfHwgV1RG
Ojppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgpLnZhbHVlKCksIG9y
aWdpbmFsVVJMLnByb3RvY29sKCkpKTsKIAogICAgICAgICBVUkwgbmV3VVJMID0gb3JpZ2luYWxV
Ukw7CiAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAgICAgICAgaWYgKG9y
aWdpbmFsVVJMLnBvcnQoKSkKLSAgICAgICAgICAgIG5ld1VSTC5zZXRQb3J0KGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2woImh0dHBzIikudmFsdWUoKSk7CisgICAgICAgICAgICBuZXdVUkwuc2V0UG9y
dChXVEY6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woImh0dHBzIikudmFsdWUoKSk7CiAgICAgICAg
IHJlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApp
bmRleCBhMjk2ZmY5N2ZiY2ZlYzkwYjVhNjBjZmVjM2M4MGM0MGU4ZTQxODMzLi4zNGNmYWNhNTAx
ZmQzYzcyYzk2NjdlOGY0YjcwZGUyNzdhYWM1YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApA
QCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50TG9h
ZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgUmVzb3Vy
Y2VMb2FkSW5mbzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCA1ZDM4NmFmZGZiMjk3M2Y2OTYw
MjcxY2YzNjc5MTJhMWUzNzc0M2U0Li4zNmM3YzY0ZGNiODQyNzAyNDYzMGYwZjc5MTYzMWI3Nzhk
ZGE5ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMjAsMTIgKzIwLDEyIEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydGllcy5oCmluZGV4IDNmNGI2NWFiNzI4OGRkMGYzYjE2MWJhNDFiZDUw
NWRmMmUzNzU1MGMuLjM0MjE2M2RiNTAzNjM2MjA0ODNlYmQwMmIzYmNjOTJmZGM2YTI4MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3Mg
Q1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ29sb3I7
CiBjbGFzcyBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM7Ci1jbGFzcyBVUkw7CiBjbGFzcyBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
OwogY2xhc3MgU3R5bGVkRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4
IDRlNDhjMzA0YTU3NzExZTNmNzc0ODZmM2M5Njc2MmQ2NGZlMWIxMDYuLjIwY2ZjZDcxMTUyNWIz
ZmRjMDM0MDhmY2UyNTYzYzQ2MTQzYmVlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
aApAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKLWNsYXNzIFVSTDsKIGNsYXNzIEtleWZyYW1lTGlz
dDsKIGNsYXNzIEtleWZyYW1lVmFsdWU7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVNoZWV0LmgKaW5kZXggZThiNWJmYzU2Mjg3YTRkOTgyOGU4OTNkODU3OWNiYThi
OGVlYmNjMi4uYmFiNGU2Mjc5NDdiNmVlODVkODQ5OTVjM2ZkMDIzNDIxOGQ0MzgxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldC5oCkBAIC0zMCw3ICszMCw2IEBAIGNsYXNzIENTU0ltcG9ydFJ1bGU7
CiBjbGFzcyBNZWRpYUxpc3Q7CiBjbGFzcyBOb2RlOwogY2xhc3MgU3R5bGVTaGVldDsKLWNsYXNz
IFVSTDsKIAogY2xhc3MgU3R5bGVTaGVldCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU2hlZXQ+
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29u
dGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAppbmRleCAy
YzJiZDExN2FlMGE1YjIzZGYyNTAxNGI5ZTViOTMxMDdkOTU4YTQ1Li5kMTEyMDk4NGY1ZjQ0N2E3
ZDJmYjQxN2VmYzgxY2Y5NTZkOWFhM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5oCkBAIC0yMiwxMCArMjIsMTAgQEAKIAogI2luY2x1ZGUgIkNTU1BhcnNlckNvbnRl
eHQuaCIKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNv
bnRleHQuaAppbmRleCAxZWY3NzExZmQwY2JkYjUxNTIwZmZkYWQ4NjIzNzc3NzY4OTJkMjY0Li5k
YmQyMzc3NTM0YTRjOTg3NTk5YWUxYmNhNGY4YTM3MmM1ZDVkYTBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaApAQCAtMjcsOSArMjcsOSBAQAogCiAj
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaEZ1
bmN0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtODMsNyArODMsNyBAQCBXRUJDT1JFX0VYUE9SVCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCk7CiBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dEhhc2gg
ewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGtleSkK
ICAgICB7Ci0gICAgICAgIGF1dG8gaGFzaCA9IFVSTEhhc2g6Omhhc2goa2V5LmJhc2VVUkwpOwor
ICAgICAgICBhdXRvIGhhc2ggPSBXVEY6OlVSTEhhc2g6Omhhc2goa2V5LmJhc2VVUkwpOwogICAg
ICAgICBpZiAoIWtleS5jaGFyc2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGhhc2ggXj0gU3Ry
aW5nSGFzaDo6aGFzaChrZXkuY2hhcnNldCk7CiAgICAgICAgIHVuc2lnbmVkIGJpdHMgPSBrZXku
aXNIVE1MRG9jdW1lbnQgICAgICAgICAgICAgICAgICA8PCAwCkBAIC0xMTUsNyArMTE1LDcgQEAg
c3RydWN0IENTU1BhcnNlckNvbnRleHRIYXNoIHsKIAogbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0
ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+IDogR2VuZXJp
Y0hhc2hUcmFpdHM8V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dD4gewotICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7
IG5ldyAoTm90TnVsbCwgJnNsb3QuYmFzZVVSTCkgV2ViQ29yZTo6VVJMKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShX
ZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QuYmFz
ZVVSTCkgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQogICAgIHN0YXRpYyBib29s
IGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQmIHZhbHVlKSB7
IHJldHVybiB2YWx1ZS5iYXNlVVJMLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgICBz
dGF0aWMgV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gV2Vi
Q29yZTo6Q1NTUGFyc2VyQ29udGV4dChXZWJDb3JlOjpIVE1MU3RhbmRhcmRNb2RlKTsgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCmluZGV4IDg3MWQ1
OTkxYjU3NmJiMzBmNDY1ODc4MTE4NzNkYWY2ZmE1OGJjYTQuLjI1NzVjMGRmMmI4N2M1OTA1Zjdk
YmMyY2U2ZmNjMzU0ZmI3YTk3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJJZGlvbXMuaApAQCAtMzUsOCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVVJMOwogICAgIAogLy8gU3BhY2Ug
Y2hhcmFjdGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBDU1Mgc3BlY2lmaWNhdGlvbi4KIC8vIGh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyN3aGl0ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXIuY3BwCmluZGV4IDZkMzlkYTQ1NWQ0MmYzMzgyZGM3NDI1ZGFkODAwN2JmZDY3MDdi
OWUuLjYwZTNiN2NlNjliZjk4MDg0NjUxMTdjOGE2NDM4NjM5YjE3NDUxMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MywxMCArNDMsMTAgQEAKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJT
dGF0aWNQYXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2Vi
Q29udGVudFJlYWRlci5oIgogI2luY2x1ZGUgIldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5o
IgogI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNs
dWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxp
c3QoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgaWYgKHR5cGUg
PT0gInRleHQvaHRtbCIpCiAgICAgICAgIHNhbml0aXplZERhdGEgPSBzYW5pdGl6ZU1hcmt1cChk
YXRhKTsKICAgICBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L3VyaS1saXN0IikgewotICAgICAgICBh
dXRvIHVybCA9IFVSTFBhcnNlcihkYXRhKS5yZXN1bHQoKTsKKyAgICAgICAgYXV0byB1cmwgPSBV
UkwoeyB9LCBkYXRhKTsKICAgICAgICAgaWYgKHVybC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBz
YW5pdGl6ZWREYXRhID0gdXJsLnN0cmluZygpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAidGV4
dC9wbGFpbiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmNThlYjJlNTljYjBkOGIxMWNi
NWE1NjQyYzAxZTQxZmJiZWM4ZGVmLi44NzI0ZTgxMTRiYjIxNGI1MDJjZWNhOThhYzZmMGMyNzdk
MjljZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTMxMzYsNyArMzEzNiw3IEBAIHZv
aWQgRG9jdW1lbnQ6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzCiAKIHZvaWQgRG9jdW1lbnQ6OnNldFVSTChjb25zdCBVUkwm
IHVybCkKIHsKLSAgICBjb25zdCBVUkwmIG5ld1VSTCA9IHVybC5pc0VtcHR5KCkgPyBibGFua1VS
TCgpIDogdXJsOworICAgIGNvbnN0IFVSTCYgbmV3VVJMID0gdXJsLmlzRW1wdHkoKSA/IFdURjo6
YmxhbmtVUkwoKSA6IHVybDsKICAgICBpZiAobmV3VVJMID09IG1fdXJsKQogICAgICAgICByZXR1
cm47CiAKQEAgLTM0MjYsNyArMzQyNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1
aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sCiAgICAg
ICAgICAgICAgICAgY29tcGxldGVkVVJMID0gbV91cmw7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsKLSAgICAg
ICAgICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICAgICAg
ICAgIGlmICghV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChjb21wbGV0ZWRVUkwpKQogICAgICAg
ICAgICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdCgq
dGhpcywgZGVsYXksIGNvbXBsZXRlZFVSTCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJlc2ggIiArIG1fdXJsLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0byBhIGphdmFzY3JpcHQ6IFVSTCI7
CkBAIC00ODg4LDcgKzQ4ODgsNyBAQCBVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3QKICAgICAvLyBTZWUg
YWxzbyBbQ1NTXVN0eWxlU2hlZXQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpCiAgICAgaWYg
KHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFVSTCgpOwotICAgIGNvbnN0IFVSTCYgYmFz
ZVVSTCA9ICgoYmFzZVVSTE92ZXJyaWRlLmlzRW1wdHkoKSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0g
YmxhbmtVUkwoKSkgJiYgcGFyZW50RG9jdW1lbnQoKSkgPyBwYXJlbnREb2N1bWVudCgpLT5iYXNl
VVJMKCkgOiBiYXNlVVJMT3ZlcnJpZGU7CisgICAgY29uc3QgVVJMJiBiYXNlVVJMID0gKChiYXNl
VVJMT3ZlcnJpZGUuaXNFbXB0eSgpIHx8IGJhc2VVUkxPdmVycmlkZSA9PSBXVEY6OmJsYW5rVVJM
KCkpICYmIHBhcmVudERvY3VtZW50KCkpID8gcGFyZW50RG9jdW1lbnQoKS0+YmFzZVVSTCgpIDog
YmFzZVVSTE92ZXJyaWRlOwogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gVVJM
KGJhc2VVUkwsIHVybCk7CiAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwsIG1fZGVjb2Rlci0+
ZW5jb2RpbmdGb3JVUkxQYXJzaW5nKCkpOwpAQCAtNzE2Miw5ICs3MTYyLDkgQEAgRG9jdW1lbnQm
IERvY3VtZW50OjplbnN1cmVUZW1wbGF0ZURvY3VtZW50KCkKICAgICAgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8RG9jdW1lbnQmPigqZG9jdW1lbnQpOwogCiAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkp
Ci0gICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxw
dHIsIGJsYW5rVVJMKCkpOworICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBIVE1MRG9jdW1l
bnQ6OmNyZWF0ZShudWxscHRyLCBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGVsc2UKLSAgICAgICAg
bV90ZW1wbGF0ZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBibGFua1VSTCgp
KTsKKyAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRy
LCBXVEY6OmJsYW5rVVJMKCkpOwogCiAgICAgbV90ZW1wbGF0ZURvY3VtZW50LT5zZXRDb250ZXh0
RG9jdW1lbnQoY29udGV4dERvY3VtZW50KCkpOwogICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0
VGVtcGxhdGVEb2N1bWVudEhvc3QodGhpcyk7IC8vIGJhbGFuY2VkIGluIGR0b3IuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCmluZGV4IGE3OTZiNDkwN2MxMjE1OGMwNmJmYTYyNTMxZDhmMTdlY2UwYWFjNDIu
LjFkOWNmODQ0ODNjNGUxYmIzOWFlMjk3MzQ2NDczYTFjZTYzMzViYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCkBAIC02NzEsNyArNjcxLDcgQEAgY2xhc3MgRG9jdW1lbnQKIAogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KICAgICB2b2lkIHNldFVSTChj
b25zdCBVUkwmKTsKLSAgICBjb25zdCBVUkwmIHVybEZvckJpbmRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV91cmwuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IG1fdXJsOyB9CisgICAgY29uc3QgVVJM
JiB1cmxGb3JCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKSA/IFdURjo6
YmxhbmtVUkwoKSA6IG1fdXJsOyB9CiAKICAgICAvLyBUbyB1bmRlcnN0YW5kIGhvdyB0aGVzZSBj
b25jZXB0cyByZWxhdGUgdG8gb25lIGFub3RoZXIsIHBsZWFzZSBzZWUgdGhlCiAgICAgLy8gY29t
bWVudHMgc3Vycm91bmRpbmcgdGhlaXIgZGVjbGFyYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggZDkxZmU0MzE1ZTYyNmYxNDBkYzY4YmU1OTU3ZjZhMDRkNmY0NjAwNy4uOGIzN2I5ZmYz
MmY2YzhhNTk4YWYyNmVlYWEwMjgwNTZhMzRjNDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtMTcxOSw3ICsxNzE5LDcgQEAgYm9vbCBFbGVtZW50Ojppc0V2ZW50SGFuZGxlckF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKIAogYm9vbCBFbGVtZW50Ojppc0ph
dmFTY3JpcHRVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgcHJvdG9jb2xJc0phdmFT
Y3JpcHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZS52YWx1ZSgp
KSk7CisgICAgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgV1RGOjpwcm90b2Nv
bElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRl
LnZhbHVlKCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzdHJpcFNjcmlwdGluZ0F0dHJpYnV0ZXMo
VmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXggOGVlYzI2YTlkNTQ0ZTEzODQ2
ZDhhNDA0Mzk2NWZjZDcwNWUyMDQ3MC4uYzI3ZmRlNDhkNjYwYmQ1OWRjNjJmYTQzYmNhZDY1YjRi
YWIwNTZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRP
d25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4
dEZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBzaGFkb3dS
b290ID0gZWxlbWVudC5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIC8vIFVzZXIgYWdlbnQg
c2hhZG93IHRyZWVzIGNhbid0IGNvbnRhaW4gZG9jdW1lbnQtcmVsYXRpdmUgVVJMcy4gVXNlIGJs
YW5rIFVSTCBhcyBiYXNlIGFsbG93aW5nIGNyb3NzLWRvY3VtZW50IHNoYXJpbmcuCi0gICAgYXV0
byYgYmFzZVVSTCA9IHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jv
b3RNb2RlOjpVc2VyQWdlbnQgPyBibGFua1VSTCgpIDogZWxlbWVudC5kb2N1bWVudCgpLmJhc2VV
UkwoKTsKKyAgICBhdXRvJiBiYXNlVVJMID0gc2hhZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2Rl
KCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCA/IFdURjo6YmxhbmtVUkwoKSA6IGVsZW1l
bnQuZG9jdW1lbnQoKS5iYXNlVVJMKCk7CiAKICAgICBDU1NQYXJzZXJDb250ZXh0IHJlc3VsdCA9
IENTU1BhcnNlckNvbnRleHQgeyBlbGVtZW50LmRvY3VtZW50KCksIGJhc2VVUkwsIGVsZW1lbnQu
ZG9jdW1lbnQoKS5jaGFyYWN0ZXJTZXRXaXRoVVRGOEZhbGxiYWNrKCkgfTsKICAgICBpZiAoc2hh
ZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2Vu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAppbmRleCBhNTIwMmQ1YzVkYWNlZTgyODk2YzRlMDM3Mjc0NzE1N2Y5
ODYxOTgzLi5mM2RlNzAxZDZkNGJhODQ1NjE3MmY2NjQzYzYxZjk1MTRhZTM0YTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBEb2N1bWVudCogTm9kZTo6b3duZXJEb2N1
bWVudCgpIGNvbnN0CiBjb25zdCBVUkwmIE5vZGU6OmJhc2VVUkkoKSBjb25zdAogewogICAgIGF1
dG8mIHVybCA9IGRvY3VtZW50KCkuYmFzZVVSTCgpOwotICAgIHJldHVybiB1cmwuaXNOdWxsKCkg
PyBibGFua1VSTCgpIDogdXJsOworICAgIHJldHVybiB1cmwuaXNOdWxsKCkgPyBXVEY6OmJsYW5r
VVJMKCkgOiB1cmw7CiB9CiAKIGJvb2wgTm9kZTo6aXNFcXVhbE5vZGUoTm9kZSogb3RoZXIpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAppbmRleCA1MmRhNmQxMWEwMTBmZjQzYTM2OTU1NWFmNzc5OTQ2MWJjYTJh
NThiLi4xMjQzOWQ3OGQzNWM0YzI4MjFhNzI1NGQwMzIxNDUwMzVmYjQ3ZjlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKQEAgLTMxLDExICszMSwxMSBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgi
CiAjaW5jbHVkZSAiU3R5bGVWYWxpZGl0eS5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgotI2lu
Y2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIC8vIFRoaXMgbmVl
ZHMgdG8gYmUgaGVyZSBiZWNhdXNlIERvY3VtZW50LmggYWxzbyBkZXBlbmRzIG9uIGl0LgogI2Rl
ZmluZSBEVU1QX05PREVfU1RBVElTVElDUyAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaApp
bmRleCBhNjFkYWQ0NWU5ZTQ0NGZhMzIyZTU5ODIyYjRlOGU2YjFlOGY2ZGI3Li42MjQ1NGU3OTNj
YjEzMzRmNjRjY2YzYmUyMDk1ZDMzY2E5YTcyYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmgKQEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIExvYWRhYmxlTW9k
dWxlU2NyaXB0OwogY2xhc3MgUGVuZGluZ1NjcmlwdDsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7
Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFNjcmlwdEVsZW1lbnQgewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggM2JkZmNjODBkYmU2ZTZh
ZGFkNTg3N2QxZmVlMzAxMTI3Mzc2ZDU2My4uNGIyM2Y0N2Y3ZGUzZGJlMGRmY2NhNGJhYzI3ZjA0
NTI2OWZmODAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC02OCw3ICs2OCw2IEBAIGNsYXNzIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNvY2tldFBy
b3ZpZGVyOwotY2xhc3MgVVJMOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogY2xhc3Mg
U2VydmljZVdvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAppbmRleCA5ZjIx
NWZiYTFiNTNmMjU2MTVjYzBkYTNjYzczNDIwNTAxMjVhY2E1Li5jMGNjOGUyMTEwOWQ2M2JmNGEz
MmU5YjVhN2M0ZjE5NWE0ODA3MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Vj
dXJpdHlDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5o
CkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgU2VjdXJpdHlPcmlnaW5Qb2xpY3k7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQ
b2xpY3k7Ci1jbGFzcyBVUkw7CiAKIGVudW0gU2FuZGJveEZsYWcgewogICAgIC8vIFNlZSBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNhdHRyLWlmcmFt
ZS1zYW5kYm94IGZvciBhIGxpc3Qgb2YgdGhlIHNhbmRib3ggZmxhZ3MuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKaW5kZXggNjdlN2VlZWM0OWM4ODdiNjYxZTQ1NTUwN2ZhMGM4MjFmN2VjNjA5
Zi4uMTY4NjI5MDVmYTYyZTI2YjcwMjJiMWYxMTNjZjNkOTkyMGE0YWJmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcApAQCAtMTUxMCw5ICsxNTEwLDkgQEAgdm9pZCBFZGl0b3I6OmNvcHlV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3Rl
Ym9hcmQKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRVUkwpOwogfQogCi1QYXN0ZWJv
YXJkV3JpdGVyRGF0YTo6VVJMIEVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK1Bhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkxEYXRh
IEVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB0aXRsZSkKIHsKLSAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMIHJlc3VsdDsKKyAgICBQ
YXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMRGF0YSByZXN1bHQ7CiAKICAgICByZXN1bHQudXJsID0g
dXJsOwogICAgIHJlc3VsdC50aXRsZSA9IHRpdGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5k
ZXggNmZmMjg2NmIxNDhmZGY0ZmY5MjA1Y2QzZGZmOTRlZDAyYmVjOTUzYi4uZmMyNTQwMzIyOTIx
ZGYyZmJlNzYxZWM2NjliNDM2MTI4Mjg2Mzc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBA
IC0xNzAsNyArMTcwLDcgQEAgY2xhc3MgRWRpdG9yIHsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29weVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICB2b2lkIGNv
cHlVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYpOwotICAg
IFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkwgcGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMRGF0
YSBwYXN0ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwog
I2lmICFQTEFURk9STShJT1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5SW1hZ2UoY29u
c3QgSGl0VGVzdFJlc3VsdCYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFy
a3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDM1M2RiYTY5Mjc0OWIxOGNiYTkxMzE1NDAxZmFmYWVj
NGJmMDM4NTEuLmZkN2Y4YTgxODE4MjQzYzE2Mjg2ZmNhNzhjMDNmNDAzNjJkODZkOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0zNSw3ICsz
NSw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCkBAIC0yMzIsNyAr
MjMyLDcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRl
VmFsdWUoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb24KICAgICBjb25zdCBTdHJpbmcgcmVzb2x2
ZWRVUkxTdHJpbmcgPSByZXNvbHZlVVJMSWZOZWVkZWQoZWxlbWVudCwgYXR0cmlidXRlLnZhbHVl
KCkpOwogICAgIFVDaGFyIHF1b3RlQ2hhciA9ICciJzsKICAgICBTdHJpbmcgc3RyaXBwZWRVUkxT
dHJpbmcgPSByZXNvbHZlZFVSTFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBpZiAocHJv
dG9jb2xJc0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcpKSB7CisgICAgaWYgKFdURjo6cHJv
dG9jb2xJc0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcpKSB7CiAgICAgICAgIC8vIG1pbmlt
YWwgZXNjYXBpbmcgZm9yIGphdmFzY3JpcHQgdXJscwogICAgICAgICBpZiAoc3RyaXBwZWRVUkxT
dHJpbmcuY29udGFpbnMoJyInKSkgewogICAgICAgICAgICAgaWYgKHN0cmlwcGVkVVJMU3RyaW5n
LmNvbnRhaW5zKCdcJycpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9EYXRhRGV0ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24uaAppbmRleCBmMjVmYWFlMzc1NzA2MTFlN2RmMjI5ZWU4YWYxMzNmNDVkYWFmN2Y0Li4x
NTA0ZjZmMzRmN2UxNWZjYTJjNzBiNDQzNzZhMTY4OGM0ZjU3Zjc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaApAQCAtNDEsNyArNDEsNiBAQCBjbGFz
cyBFbGVtZW50OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNz
IFJhbmdlOwotY2xhc3MgVVJMOwogCiBlbnVtIERhdGFEZXRlY3RvclR5cGVzIHsKICAgICBEYXRh
RGV0ZWN0b3JUeXBlTm9uZSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbQppbmRleCBhZjYxZjM2YjhiNDhlZDhhMjdhYjBmZDVlYjhiM2ViNjFkYWZlNGQ1
Li5lYzM3OTVmZTY2ZTIwNTc1M2YzNmQ3NjZmZDI2NzEzN2JmNDEzZmU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTUxLDExICs1MSwxMSBAQAog
I2ltcG9ydCAiUmVuZGVyU3R5bGUuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIldlYkNv
bnRlbnRSZWFkZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAi
bWFya3VwLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBF
ZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRT
dHJpbmcgKmF0dHJpYnV0ZWQKIAogU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29u
c3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVy
bCk7CisgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAogUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCBjNWE4OGYzYWQ1YWY0YmRhY2UxMzY0MDg5MGQ3Y2Ew
OTlkNGJmMjM2Li5kNTdmMWFlNTYzMTRkMjljMjgzMGMxZDJjNGI3MmUwNDdmMGQzOTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbQpAQCAtNTQsNyArNTQsNiBAQAogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQg
IlNvY2tldFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IuaCIKLSNpbXBvcnQgIlVSTFBhcnNlci5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1w
b3J0ICJXZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIuaCIKQEAgLTYyLDYgKzYx
LDcgQEAKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJp
YnV0ZWRTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8
d3RmL1VSTFBhcnNlci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkxvY2FsRGVm
YXVsdFN5c3RlbUFwcGVhcmFuY2UuaCIKQEAgLTI4OCw3ICsyODgsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogCiAgICAgICAgIGF1dG8gbmFtZSA9IGltYWdlLmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9IFVSTFBhcnNlciB7IHJlc291cmNlVVJMU3RyaW5n
IH0ucmVzdWx0KCkubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgICAgIG5hbWUgPSBVUkwo
eyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygibWVkaWEi
KTsKIApAQCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAg
IGlmIChyZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgYXV0byBuYW1lID0gVVJMUGFyc2VyIHsgcmVzb3VyY2VVUkxTdHJp
bmcgfS5yZXN1bHQoKS5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBhdXRvIG5hbWUgPSBV
UkwoeyB9LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygiZmls
ZSIpOwogCkBAIC01MTgsNyArNTE4LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2Vi
QXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBTdHJpbmcgc2FuaXRpemVkTWFya3Vw
ID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgKmZyYW1lLmRvY3VtZW50KCksICpy
ZXN1bHQsIG1zb0xpc3RRdWlya3NGb3JNYXJrdXAoKSwgWyZdIChjb25zdCBTdHJpbmcmIHR5cGUp
IHsKICAgICAgICAgcmV0dXJuIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhblNob3dNSU1FVHlw
ZUFzSFRNTCh0eXBlKTsKICAgICB9KTsKLSAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJv
bU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgc2FuaXRpemVkTWFya3VwLCBibGFua1VSTCgpLCBE
aXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOworICAgIGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBzYW5pdGl6ZWRNYXJrdXAsIFdU
Rjo6YmxhbmtVUkwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KTsKIAogICAg
IGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCBmMWNkNTNjOWUzMzhkMWFhYWY1MzBhOTA4MTE4ZmZl
MDg4YjI4MjRmLi40NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJmMjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC01MiwxMSArNTIsMTEgQEAK
ICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVy
dGllcy5oIgogI2ltcG9ydCAiV2ViQ29udGVudFJlYWRlci5oIgotI2ltcG9ydCAiV2ViQ29yZU5T
VVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNp
bXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8cGFs
L3N5c3RlbS9Tb3VuZC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjUzLDcgKzI1Myw3IEBAIFN0cmluZyBFZGl0b3I6OnBs
YWluVGV4dEZyb21QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAg
ICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdl
IGtub3cgLVtOU1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxs
IHRoZSBzYW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRp
bmcgYW4gTlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0gICAgICAgIHN0cmluZyA9IHVzZXJW
aXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworICAgICAgICBzdHJp
bmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10p
OwogCiAgICAgLy8gRklYTUU6IFdURiBzaG91bGQgb2ZmZXIgYSBub24tTWFjLXNwZWNpZmljIHdh
eSB0byBjb252ZXJ0IHN0cmluZyB0byBwcmVjb21wb3NlZCBmb3JtIHNvIHdlIGNhbiBkbyBpdCBm
b3IgYWxsIHBsYXRmb3Jtcy4KICAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21w
b3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lk
IEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBF
bGVtZW50JiBpbWFnZUVsZW1lbgogICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0ID0gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoaW1hZ2VFbGVtZW50KTsKICAgICBwYXN0
ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxl
ID0gdGl0bGU7Ci0gICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSB1c2Vy
VmlzaWJsZVN0cmluZyhwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCk7CisgICAgcGFzdGVib2FyZElt
YWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9h
cmRJbWFnZS51cmwudXJsKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2Fj
aGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNl
TUlNRVR5cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZjBlMGQ4NjVjOGJjN2RjZGIxMzU4MTRjMDdkMjQ0NWE5
ZGE3Y2NmNC4uOTE0YjgwY2I1ODNjMzk4ZDZhOTU4ZDdhNzU3NWNhZTI4MDVmNTI3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzMsMTEgKzczLDExIEBACiAjaW5jbHVkZSAiU3R5
bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVk
ZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUg
IlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTYxLDcgKzE2
MSw3IEBAIHZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZy
YWdtZW50PiYmIGZyYWdtZW50LCBXVEY6OkZ1bmN0CiAgICAgICAgIGZvciAoY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGZvciBzcmNzZXQuCiAgICAgICAgICAgICBp
ZiAoZWxlbWVudC5hdHRyaWJ1dGVDb250YWluc1VSTChhdHRyaWJ1dGUpICYmICFhdHRyaWJ1dGUu
dmFsdWUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBVUkwgdXJsID0gVVJMUGFyc2Vy
IHsgYXR0cmlidXRlLnZhbHVlKCkgfS5yZXN1bHQoKTsKKyAgICAgICAgICAgICAgICBVUkwgdXJs
KHsgfSwgYXR0cmlidXRlLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZW1v
dmVVUkwodXJsKSkKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlc1RvUmVtb3ZlLmFwcGVu
ZCh7IGVsZW1lbnQsIGF0dHJpYnV0ZS5uYW1lKCkgfSk7CiAgICAgICAgICAgICB9CkBAIC05NTEs
NyArOTUxLDcgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1
cChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYKIAogICAgIGZyYWdtZW50LT5wYXJz
ZUhUTUwobWFya3VwLCBmYWtlQm9keS5wdHIoKSwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAg
cmVzdG9yZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQoZnJhZ21lbnQpOwotICAgIGlmICgh
YmFzZVVSTC5pc0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBibGFua1VSTCgpICYmIGJhc2VVUkwgIT0g
ZG9jdW1lbnQuYmFzZVVSTCgpKQorICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkgJiYgYmFzZVVS
TCAhPSBXVEY6OmJsYW5rVVJMKCkgJiYgYmFzZVVSTCAhPSBkb2N1bWVudC5iYXNlVVJMKCkpCiAg
ICAgICAgIGNvbXBsZXRlVVJMcyhmcmFnbWVudC5wdHIoKSwgYmFzZVVSTCk7CiAKICAgICByZXR1
cm4gZnJhZ21lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCBiNTUwYThmNjdmMzlkZmEz
YWFlODkwNWQ4YTBkMmYyNWNmOTA0YTg3Li5iMDQ4Y2E4MjMzMjc1MGJmYWJlODRhY2YxOWQ0YjUx
Y2QwZDJiMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xh
c3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEhUTUxFbGVtZW50OwotY2xhc3MgVVJMOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFz
cyBRdWFsaWZpZWROYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3lu
Y0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
Y3BwCmluZGV4IDYzYjFlMGU1NzQxMWQwNjMzYzQxOThmNGFlMDkzNTNhMDM1NTEyN2UuLjczYTM2
NTIyODc5OWMxNmI5YTk4OGQ5YTExODllMGNmOTM4MGZlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKIAogI2luY2x1ZGUg
IkZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5o
PgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUg
PHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNG
aWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCmlu
ZGV4IDRmMGU3YjI3NzcxN2ExOWNjMjcwZGYyZTk2M2FiZWVmOTNmM2YzNTMuLjYyY2FmZmUyZDk4
YWQxZDVkMTBmNGVkNjg4MTdkYTkwNDk0ZWExNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZpbGVTdHJlYW1DbGllbnQ7CiBjbGFzcyBGaWxlU3RyZWFtOwotY2xhc3MgVVJMOwog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBc3luY0ZpbGVTdHJlYW0gewogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaAppbmRleCAyMDEzOWM0YzEyYTE0OTNlMDUzOGRjOWFiOTUxNjNiMTQ5OGNmOTYy
Li45MGQ0NjU2OTk3MzAxMjU4ZWU4NjgyOGU5YWI2MDc4YWMzZjg5YTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlByb3BlcnR5QmFnLmgi
CiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKaW5kZXggYzZkZmVlNjU1MDE1
M2UyYmY0ODhhMjdjYzVhZThlMjBlOThlMDQ2MS4uMTQ2YzBkYjA0OWQ3MTU0OGQwZmMyZDg4OWU0
NmJiNmY1NTY0OWFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCkBAIC0zMiw3ICsz
Miw3IEBACiAKICNpbmNsdWRlICJCbG9iVVJMLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3
dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2JVUkwuaAppbmRleCAzNTllYWFmN2YyYTI2NjdiOGIyMmY3YTM1MDMyYTE1NzFkNjcyMGM0
Li4zZDBhZTExYzEwMzllMzQ4NGUwZWRmNzAwOTc3N2JmMmViZjliZGE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2JVUkwuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDU3NWYwZTc2ZDA5YTlkM2U1N2YyNThhZWNiZWYzMWYz
NjBhNDhkZjAuLmRhMmU4YmNhMzUyY2EzZmM3ZWM3Y2I0NTYyZDc5YmJiNzI4YmYwNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5oCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgVVJMOwotCiBjbGFzcyBGaWxlIGZpbmFsIDogcHVibGljIEJsb2IgewogcHVibGlj
OgogICAgIHN0cnVjdCBQcm9wZXJ0eUJhZyA6IEJsb2JQcm9wZXJ0eUJhZyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCmluZGV4IGYzZGM2YzQ3OGM5ODAwNGE3YjEz
NDBjMzI5ZWQ2ODgwOGI3MjE4ZjAuLjFmNzc3OGU4ODllMzkzZDdmYjk2OTQ0M2NlOGViZTIxMjc0
ZDRhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCkBAIC0z
Miw3ICszMiw3IEBACiAKICNpbmNsdWRlICJCbG9iUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRl
ICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IDQyNDZkN2VlYTBiMGU3M2I1MDlmYmM4
MGQyNDFlMWNmZjk2MjA5YzIuLmE5Yzc5ZmUyMjkyZjg5NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5oCkBAIC0zNiw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2JQ
YXJ0OwotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCmluZGV4IGUw
YmU1NzFhMjkwNjgzMjViYTE3ZWNmM2ViZGZlYjg2YjZiZDgxOTguLjI5OGY3ODI4MzFhNjk2OTg2
MzhmYzU5MmQyZjYzMDU0NjNhMzA0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRE9NV2luZG93
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNj
cmlwdENhY2hlZEZyYW1lRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCmluZGV4IGU3MmI1ODkzOTQ5ODFlY2VjNDEwN2Y2ZDYy
Yjc3YzlkNzQzODM1MWQuLjIwYTM5NzMzZjg1MzNhOTAzNGU2NTZiYTdmN2FiMGEwNTQ4MmY0YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTU0LDcgKzU0LDYgQEAgY2xh
c3MgRm9ybURhdGE7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEltYWdlOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQcnVuaW5nUmVhc29uOwogCiBX
RUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCAoKm5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCkoSGlz
dG9yeUl0ZW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAppbmRleCBhNzdiY2Q3MDcyM2YzY2Y5Y2Ex
MTY4MmU0NDZlZGZlODdkODEzOGY4Li4wYTA4YjU5NDY4NjU3MzJmMjhkYTMwZmI3ZjYzY2E0ZDMx
NGVhOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxET01VUkw+PiBET01VUkw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
RE9NVVJMJiBiYXNlKQogCiBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9NVVJMOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgVVJMIGJhc2VVUkwgeyBibGFua1VSTCgpIH07Cisg
ICAgVVJMIGJhc2VVUkwgeyBXVEY6OmJsYW5rVVJMKCkgfTsKICAgICBVUkwgY29tcGxldGVVUkwg
eyBiYXNlVVJMLCB1cmwgfTsKICAgICBpZiAoIWNvbXBsZXRlVVJMLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKaW5kZXgg
NTkwMjVjMmZiOTZmMDI5OWFkOTE3ZTYxN2IyOTExYzMxYWI5MWQzNC4uZDMxM2Q3YTQ0NGQ4ZWE1
NTM0ZjAwM2Y0NDUwZmRkYTBkNDYzNTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCkBAIC0yNyw3ICsy
Nyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFV0aWxzLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAKaW5kZXggOWI5OWEzNDczMDk3MmQ0ZGQ3OTljMDgxYTBmOThmNjM3N2FiNWFk
MC4uMzA0OGI0OTBmYTUzZjNmZDQxNTFlMDIxMDQzNmM2NGZhOTQ3MTQ3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKQEAgLTM3LDggKzM3LDggQEAK
ICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6
aXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYgY29tcGxldGVVUkwpIGNvbnN0CiAgICAgaWYgKGNvbXBs
ZXRlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocHJvdG9j
b2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29tcGxldGVVUkwpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gY29udGVu
dERvYyA9IHRoaXMtPmNvbnRlbnREb2N1bWVudCgpOwogICAgICAgICBpZiAoY29udGVudERvYyAm
JiAhU2NyaXB0Q29udHJvbGxlcjo6Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4oY29udGVudERv
Yy0+ZnJhbWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Om9wZW5VUkwoTG9ja0hpc3RvcnkgbG9ja0hpc3Rv
cnksIExvY2tCYWNrRm9yd2FyZExpc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fVVJM
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9VUkwgPSBibGFua1VSTCgpLnN0cmluZygpOworICAgICAg
ICBtX1VSTCA9IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKTsKIAogICAgIFJlZlB0cjxGcmFtZT4g
cGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFwYXJlbnRGcmFtZSkK
QEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlv
bihjb25zdCBTdHJpbmcmIHN0cikKIAogdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TG9j
YXRpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG5ld0xvY2F0aW9uKQog
ewotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMobmV3TG9jYXRpb24pKSkgeworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2Ny
aXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhuZXdMb2NhdGlvbikpKSB7CiAg
ICAgICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0
ZSwgY29udGVudERvY3VtZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMjMyYjNkY2IzMDMxODg5ZGM4MjZm
OTg3ZDJiZDZmYjA4NzU4ZTliNS4uYjFjY2Q3NTU3NTAwZmExYWI3NjBlMTI0MDAyM2EzYTllZmE2
ZDM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0
LDYgQEAgY2xhc3MgSWNvbjsKIGNsYXNzIElucHV0VHlwZTsKIGNsYXNzIExpc3RBdHRyaWJ1dGVU
YXJnZXRPYnNlcnZlcjsKIGNsYXNzIFJhZGlvQnV0dG9uR3JvdXBzOwotY2xhc3MgVVJMOwogCiBz
dHJ1Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmgKaW5kZXggNTEwZjRjZmI2MzZkOWRhMTFlMjU4ZjllZTNhNDJmZWQ2ZWZkMzZj
ZC4uNjgyOGY5MzQzYjU3MjQwOTVkYjYwMjE3NDI2ODc2NTQwNzBjZGY4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRE9NVG9rZW5MaXN0OwogY2xhc3MgSFRNTExpbmtFbGVtZW50OwotY2xh
c3MgVVJMOwogc3RydWN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjbGFzcyBFdmVudFNlbmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IDljMDliMDk0ODM5OTU1MTE1ODNkYjUxMjVkM2VjN2M3MzRjZGM2MGIu
Ljc3ZDBjYmZiN2Q0ODA0YjcyMWIyM2Q0NDNlMDdiMDc2ZmM0NjliNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTY4LDggKzE2OCw4IEBACiAKIG5hbWVz
cGFjZSBXVEYgewogdGVtcGxhdGUgPD4KLXN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpVUkw+
IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQor
c3RydWN0IExvZ0FyZ3VtZW50PFVSTD4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29u
c3QgVVJMJiB1cmwpCiAgICAgewogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gNTEyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggMzIxM2M0NGFk
YmYyOGYyNzBiNTI2MGRjYTEzMDU1ZGU4YWE0M2Q5Yi4uOWU1YzI3Nzc3ZDY5M2U0ZjY0YmVmMWI3
MzEyNTgzOTVjNGFkMjMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojppc0ltYWdlVHlwZSgpCiBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFsbG93
ZWRUb0xvYWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVUkwgY29tcGxldGVV
UkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7Ci0gICAgaWYgKGNvbnRlbnRGcmFtZSgp
ICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKSAmJiAhZG9jdW1lbnQoKS5zZWN1
cml0eU9yaWdpbigpLmNhbkFjY2Vzcyhjb250ZW50RG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSkpCisgICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQo
Y29tcGxldGVVUkwpICYmICFkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzKGNv
bnRlbnREb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJldHVybiBkb2N1bWVudCgpLmZyYW1lKCktPmlzVVJMQWxsb3dlZChjb21wbGV0ZVVS
TCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKaW5kZXggMjdhNDg5ZDRmNjU3YjZlNjlk
YzRlOTlmOWQ0ZGM5YjY5ZDdiY2M3Ny4uMTIwMGI4NzgxNjQ2ZjYxYTZmNzBjNDZiOTliY2M4ZWZj
ZjY1YWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaApAQCAtNDQsNyArNDQsNiBAQCBj
bGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFBlbmRpbmdJbWFnZUJpdG1hcDsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgSW1hZ2VC
aXRtYXBPcHRpb25zOwogCiBjbGFzcyBJbWFnZUJpdG1hcCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUsIHB1YmxpYyBSZWZDb3VudGVkPEltYWdlQml0bWFwPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCmluZGV4IDdjNzczNmMzNGViY2Y2NGQ5NDU2MDNk
Y2Q4NjM5MzllOGRiMzdlNGMuLjEwYTJhMGQwZjUyMjRiMDUwYWQ1YzdmNGQxZDY1NmFmZWU4M2M3
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCkBA
IC0yNywxNCArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsK
LQogY2xhc3MgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBmaW5hbCB7CiBwdWJsaWM6CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAppbmRleCBjZjE4NmMwYmE0MDBl
MmEzYzIzMDRjYzc5ZmZhZGJhOGFmM2FhMzYxLi43M2I1NDczNTc4ZTNiMGIzMWVhZjk1ZGE0MGMy
MGFjMDk5YzA3MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlB1Ymxp
Y1VSTE1hbmFnZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKaW5kZXggZTMyNjU0NWRjY2I0
OWJmYTZjNWFmZjkyM2EyYzVlMGMwZmE3NzVhNC4uZTY5ZGU0ZWQ4YzgzYmI4YThkYzRkMzY2ODYy
MmNkM2ZkZDUzN2U3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKQEAg
LTMzLDcgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBV
UkxSZWdpc3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcAppbmRleCA2Y2EwYWMx
YTIwMTNjZjZkNWQ4ZGM1YzBlYTAzYjIxMTc5MmYxOTVlLi42M2JiM2NjMjYwMWEwNDNkMTQ5YzQ1
YTI5ZWMxOGRhMTQwYjVhZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUg
IklucHV0VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKaW5kZXggYmQ3NzJjZTVmMTdhNmI4N2RjMmY0NjI1
YjcxYmUwMTEwM2MzNzc0My4uODIyM2JiZDA3NTkwZGRhY2NlOWZkMTYwNGUzYWMwYmMwMTVmNjRh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaApAQCAtMzQsNyArMzQsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xh
c3MgVVJMUmVnaXN0cnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2Vh
cmNoUGFyYW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcApp
bmRleCAzMGU4NTkyNGE3ODUyMGQ2NTkyMDkxYWQyZDMzYzA0MjBjZmVkZDQzLi40ZTdmYmFlZmRm
MGE0MTZjYzY1NGFhNzNkNTliN2JlODBiNDFkMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxT
ZWFyY2hQYXJhbXMuY3BwCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpbmNsdWRlICJVUkxTZWFyY2hQ
YXJhbXMuaCIKIAogI2luY2x1ZGUgIkRPTVVSTC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgor
I2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBVUkxT
ZWFyY2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhjb25zdCBTdHJpbmcmIGluaXQsIERPTVVSTCog
YXNzb2NpYXRlZFVSTCkKICAgICA6IG1fYXNzb2NpYXRlZFVSTChhc3NvY2lhdGVkVVJMKQotICAg
ICwgbV9wYWlycyhpbml0LnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNv
ZGVkRm9ybShTdHJpbmdWaWV3KGluaXQpLnN1YnN0cmluZygxKSkgOiBVUkxQYXJzZXI6OnBhcnNl
VVJMRW5jb2RlZEZvcm0oaW5pdCkpCisgICAgLCBtX3BhaXJzKGluaXQuc3RhcnRzV2l0aCgnPycp
ID8gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhpbml0KS5z
dWJzdHJpbmcoMSkpIDogV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oaW5pdCkp
CiB7CiB9CiAKQEAgLTEzMywyMCArMTMzLDIwIEBAIHZvaWQgVVJMU2VhcmNoUGFyYW1zOjpyZW1v
dmUoY29uc3QgU3RyaW5nJiBuYW1lKQogCiBTdHJpbmcgVVJMU2VhcmNoUGFyYW1zOjp0b1N0cmlu
ZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOwor
ICAgIHJldHVybiBXVEY6OlVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOwogfQogCiB2b2lk
IFVSTFNlYXJjaFBhcmFtczo6dXBkYXRlVVJMKCkKIHsKICAgICBpZiAobV9hc3NvY2lhdGVkVVJM
KQotICAgICAgICBtX2Fzc29jaWF0ZWRVUkwtPnNldFF1ZXJ5KFVSTFBhcnNlcjo6c2VyaWFsaXpl
KG1fcGFpcnMpKTsKKyAgICAgICAgbV9hc3NvY2lhdGVkVVJMLT5zZXRRdWVyeShXVEY6OlVSTFBh
cnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpKTsKIH0KIAogdm9pZCBVUkxTZWFyY2hQYXJhbXM6OnVw
ZGF0ZUZyb21Bc3NvY2lhdGVkVVJMKCkKIHsKICAgICBBU1NFUlQobV9hc3NvY2lhdGVkVVJMKTsK
ICAgICBTdHJpbmcgc2VhcmNoID0gbV9hc3NvY2lhdGVkVVJMLT5zZWFyY2goKTsKLSAgICBtX3Bh
aXJzID0gc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVk
Rm9ybShTdHJpbmdWaWV3KHNlYXJjaCkuc3Vic3RyaW5nKDEpKSA6IFVSTFBhcnNlcjo6cGFyc2VV
UkxFbmNvZGVkRm9ybShzZWFyY2gpOworICAgIG1fcGFpcnMgPSBzZWFyY2guc3RhcnRzV2l0aCgn
PycpID8gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhzZWFy
Y2gpLnN1YnN0cmluZygxKSkgOiBXVEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShz
ZWFyY2gpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3Ry
aW5nPj4gVVJMU2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4dCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxz
LmgKaW5kZXggYTA3YzA4MTRmMTFlMTcxMTg0NTAzZTZhYTZhYWFkNmMwNDdkNDc1YS4uNjU2YWJm
YmRhMGJkYmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMu
aApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICAgICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8g
IjAiIGlmIGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCiAgICAgICAgICAgICB1cmwuc2V0SG9z
dEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgJzAnKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9y
dCwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgICAgICAgICB1cmwuc2V0
SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmco
MCwgcG9ydEVuZCkpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBv
cnQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0
IHRvICIwIiBpZiBpdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nLgogICAgIC8vIEZJWE1FOiBodHRw
Oi8vdXJsLnNwZWMud2hhdHdnLm9yZy8gZG9lc24ndCBhcHBlYXIgdG8gcmVxdWlyZSB0aGlzOyB0
ZXN0IHdoYXQgYnJvd3NlcnMgZG8KICAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50KCk7
Ci0gICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkp
CisgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2Nv
bCgpKSkKICAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKICAgICBlbHNlCiAgICAgICAgIHVybC5z
ZXRQb3J0KHBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBjMzQ2MTAyMTVlNTY5ZmU3YWExMTljYTUyMTZh
N2Q4M2UxNTU2MjI5Li5kNzcyM2VkZGVkZmFjODVhZWQ5ODNjNWE1NDFkNGMwMDIyZDM1Zjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCaXRtYXAuaCIKICNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDgxY2I1NWQ3N2UzMTgwNTY0NDcw
Nzc3N2ExZTI5OTU2ZjQ0M2Y2NTguLjk4ZWM0NjJlZmViMzk1YjlhN2U5YzM5OTcwMThlYWFkNWVm
N2ZjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7
CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNz
IEltYWdlQml0bWFwOwotY2xhc3MgVVJMOwogY2xhc3MgV2ViR0xPYmplY3Q7CiAKIGNsYXNzIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggNjc0ZGVi
YzY5OGRiOWI3MDAyZWI0MDUyMzM1YjllNmRiODFiNjRhMy4uNDIzMDkyNjhlOWJkZDA5NWFjOWJm
MTZhZDlmNzMzMmEzNzFjZDViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkRlY2lt
YWwuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggNzE5MjhjN2NlYThl
MTRmMDQ0ZGU0OWY5ZDAxMzg0NzMwYWFhMmNlYi4uNjEwNGJlMzkyYmNlMzFjNjNjYTFlZjI0YWUx
MmVlYjEzMTk1NWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNT
QXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5j
cHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgYm9vbCBpc1NlbWljb2xvblNlcGFyYXRlZEF0
dHJpYnV0ZShjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlKQogc3RhdGljIGJv
b2wgc2VtaWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoU3RyaW5nVmll
dyBzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZSkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBzZW1p
Y29sb25TZXBhcmF0ZWRWYWx1ZS5zcGxpdCgnOycpKSB7Ci0gICAgICAgIGlmIChwcm90b2NvbElz
SmF2YVNjcmlwdCh2YWx1ZSkpCisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0
KHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CkBAIC00NDYsOSArNDQ2LDkgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tl
bihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJsb2Nr
U2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKG1fd2FzU2NyaXB0VGFnRm91bmRJblJlcXVlc3QpIHsK
LSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVl
c3QsIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlr
ZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJ
bmplY3RlZChyZXF1ZXN0LCBTVkdOYW1lczo6aHJlZkF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCks
IFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2Ny
aXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBYTGlua05hbWVzOjpocmVm
QXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmli
dXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHJlcXVlc3QsIHNyY0F0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0
eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VB
dHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIFNWR05hbWVzOjpocmVmQXR0ciwgV1RGOjpibGFu
a1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAg
ICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwg
WExpbmtOYW1lczo6aHJlZkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlv
blN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKICAgICB9CiAKICAgICByZXR1cm4gZGlkQmxvY2tT
Y3JpcHQ7CkBAIC00NjEsNyArNDYxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RU
b2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJs
b2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29udGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNh
bGl6ZWRTbmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsKLSAgICAgICAgZGlkQmxvY2tTY3Jp
cHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGRhdGFBdHRyLCBibGFua1VS
TCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAg
ICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZGF0
YUF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtl
QXR0cmlidXRlKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZklu
amVjdGVkKHJlcXVlc3QsIHR5cGVBdHRyKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGNsYXNzaWRBdHRyKTsKICAgICB9CkBAIC00
ODEsNyArNDgxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKGNvbnN0IEZp
bHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBpZiAoIUhUTUxQYXJhbUVsZW1lbnQ6Omlz
VVJMUGFyYW1ldGVyKFN0cmluZyhuYW1lQXR0cmlidXRlLnZhbHVlKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwg
dmFsdWVBdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VB
dHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwg
dmFsdWVBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3Jj
TGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihj
b25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC00OTIsNyArNDkyLDcgQEAgYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYg
cmVxdWVzdCkKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29u
dGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRTbmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkp
IHsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJl
cXVlc3QsIGNvZGVBdHRyLCBTdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmli
dXRlKTsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHJlcXVlc3QsIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6
U3JjTGlrZUF0dHJpYnV0ZSk7CisgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmli
dXRlSWZJbmplY3RlZChyZXF1ZXN0LCBzcmNBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCks
IFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiAgICAgICAgIGRpZEJsb2NrU2Ny
aXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCB0eXBlQXR0cik7CiAgICAg
fQogICAgIHJldHVybiBkaWRCbG9ja1NjcmlwdDsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIFhT
U0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVl
c3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRU
YWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGZvcm1UYWcpKTsKIAotICAg
IHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgYWN0aW9uQXR0ciwgYmxh
bmtVUkwoKS5zdHJpbmcoKSk7CisgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChy
ZXF1ZXN0LCBhY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiBib29s
IFhTU0F1ZGl0b3I6OmZpbHRlcklucHV0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiBy
ZXF1ZXN0KQpAQCAtNTUyLDcgKzU1Miw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVySW5wdXRU
b2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVl
c3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNO
YW1lKHJlcXVlc3QudG9rZW4sIGlucHV0VGFnKSk7CiAKLSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1
dGVJZkluamVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBibGFua1VSTCgpLnN0cmluZygp
LCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0
dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZm9ybWFjdGlvbkF0dHIsIFdURjo6YmxhbmtVUkwo
KS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKIH0KIAogYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3Qm
IHJlcXVlc3QpCkBAIC01NjAsNyArNTYwLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0
b25Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJl
cXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVCho
YXNOYW1lKHJlcXVlc3QudG9rZW4sIGJ1dHRvblRhZykpOwogCi0gICAgcmV0dXJuIGVyYXNlQXR0
cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBmb3JtYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJp
bmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICByZXR1cm4gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBXVEY6OmJsYW5r
VVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAK
IGJvb2wgWFNTQXVkaXRvcjo6ZXJhc2VEYW5nZXJvdXNBdHRyaWJ1dGVzSWZJbmplY3RlZChjb25z
dCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC01NzMsNyArNTczLDcgQEAgYm9vbCBY
U1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRl
clRva2VuUmVxdWVzdCYgcmUKICAgICAgICAgYm9vbCBpc0lubGluZUV2ZW50SGFuZGxlciA9IGlz
TmFtZU9mSW5saW5lRXZlbnRIYW5kbGVyKGF0dHJpYnV0ZS5uYW1lKTsKICAgICAgICAgLy8gRklY
TUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBkaWRuJ3QgY3JlYXRlIGEgbmV3IFN0cmluZyBm
b3IgZXZlcnkgYXR0cmlidXRlIGluIHRoZSBkb2N1bWVudC4KICAgICAgICAgU3RyaW5nIHN0cmlw
cGVkVmFsdWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5nKGF0dHJp
YnV0ZS52YWx1ZSkpOwotICAgICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0g
KCFpc0lubGluZUV2ZW50SGFuZGxlciAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcHBlZFZh
bHVlKSkgfHwgKGlzU2VtaWNvbG9uU2VwYXJhdGVkQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgc2Vt
aWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoc3RyaXBwZWRWYWx1ZSkp
OworICAgICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lubGluZUV2
ZW50SGFuZGxlciAmJiBXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwcGVkVmFsdWUpKSB8
fCAoaXNTZW1pY29sb25TZXBhcmF0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlKSAmJiBzZW1pY29sb25T
ZXBhcmF0ZWRWYWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTChzdHJpcHBlZFZhbHVlKSk7CiAgICAg
ICAgIGlmICghaXNJbmxpbmVFdmVudEhhbmRsZXIgJiYgIXZhbHVlQ29udGFpbnNKYXZhU2NyaXB0
VVJMKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghaXNDb250YWluZWRJblJl
cXVlc3QoY2Fub25pY2FsaXplKHNuaXBwZXRGcm9tQXR0cmlidXRlKHJlcXVlc3QsIGF0dHJpYnV0
ZSksIFRydW5jYXRpb25TdHlsZTo6U2NyaXB0TGlrZUF0dHJpYnV0ZSkpKQpAQCAtNzI3LDcgKzcy
Nyw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5n
JiB1cmwpCiAgICAgLy8gR2l2ZSBlbXB0eSBVUkxzIGFuZCBhYm91dDpibGFuayBhIHBhc3MuIE1h
a2luZyBhIHJlc291cmNlVVJMIGZyb20gYW4KICAgICAvLyBlbXB0eSBzdHJpbmcgYmVsb3cgd2ls
bCBsaWtlbHkgbGF0ZXIgZmFpbCB0aGUgIm5vIHF1ZXJ5IGFyZ3MgdGVzdCIgYXMKICAgICAvLyBp
dCBpbmhlcml0cyB0aGUgZG9jdW1lbnQncyBxdWVyeSBhcmdzLgotICAgIGlmICh1cmwuaXNFbXB0
eSgpIHx8IHVybCA9PSBibGFua1VSTCgpLnN0cmluZygpKQorICAgIGlmICh1cmwuaXNFbXB0eSgp
IHx8IHVybCA9PSBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgLy8gSWYgdGhlIHJlc291cmNlIGlzIGxvYWRlZCBmcm9tIHRoZSBzYW1lIGhvc3Qg
YXMgdGhlIGVuY2xvc2luZyBwYWdlLCBpdCdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmgKaW5kZXggZGM4MmFkZDdjN2Y1YmRkYTNjYWI1MzRkZmFhMTA5YmZkMTkwYmMyNy4u
MTJlYzk4YzA5MmZmNjUwNGNkZTUzZmZmOTM2ODFlMDI1MTEwMDUxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAi
SFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU3VmZml4VHJlZS5oIgogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3JEZWxlZ2F0ZS5oCmluZGV4IDY3YTMyZWQ5MzBkN2Q5ZGQ0ZGFjNDA4OTIyMGJkZjNmMmFk
NzZlODcuLjYwNTE1OWIyZmFmYTRjZjg3MWFlNjU2ZjEwYWY0M2YwMDFlOTNmYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCkBAIC0yNiw3
ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCmluZGV4IGM3MzRkYTJiZWFlMTM4NDUyN2Q3NzJhZTliZTE4YjM3ZjU0
NDVjOGIuLjI2YWI2ZGY5NTI0YTRlNjk4MTQ4ODE1MjVlZGM4N2Y2NjA4NmI4NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBA
IC0zMTEsNyArMzExLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmtpbGxUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzaG91bGRQcmVwZW5kVG9LaWwKIAogdm9pZCBJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBp
ZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAoV1RGOjpwcm90
b2NvbElzSmF2YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9jbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKaW5kZXggZGRlMjEyMmNjZWQwMGE4ZTMyMGNmNDQwOThmYWQwNjY1NzY0Nzk3MC4u
OGMzNzJmYWFmN2VkOGVlZDM5OGI1YTZjZDdlNTRmYThmNmVlYzQ4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtODgs
NyArODgsNiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgVGltZXJCYXNlOwotY2xhc3MgVVJMOwog
I2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwCmluZGV4IDMzMzEwNzgxY2FhYjViNTE1MmQ2MWZjNTY2NjhhNDljYzM1MjQ0YzYuLjdj
Njc0NDYxMjA1NzA3OThjYWZkNzgwMTVmYWQ5OWQ2MDg3MzE0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKQEAgLTY2LDcgKzY2LDcgQEAKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRl
ICJXZWJTb2NrZXRGcmFtZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggNjRkMGUwNDU4MDI1OTVmZjMw
NWM5YTM2YzExMjJkMTY2NDM3OGM5NC4uYjY4NTkwZjFiODQwODgyODRhOGE1NWZjNzVkMGU1NTlk
NDkwOWJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXZWJTb2NrZXQ7
CiAKIHN0cnVjdCBXZWJTb2NrZXRGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDY3MDlmNTJiZTAzNDMyYjJj
NTVlYjk0NzFiYzRjMGRiMjVkMDg2YzcuLjcyZjYzYmQ4OTYyNWI2MjY5Y2JmN2E2M2YxMjUyMTVm
NDE1NzViNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBJbnNwZWN0b3JPdmVy
bGF5OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKLWNsYXNzIFVSTDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aAppbmRleCA3Mjg4Y2ZmZTRjZjJlOGZlYmViMGM2MTBkNDZiN2VjYWZiYzY1ZjRkLi41ZTA0MGM5
NTRkNGI1MTRhMTQ5MDNjMDcyMDcwYmVjZGUwNjBjYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC0zNCw3
ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBVUkw7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaAppbmRleCA4YjY0MzFhYjQyMmYyY2I2
Yzk0OGQ4Y2Y4ZWJiNTUxMTcxMTdkZGJhLi4xYjBmNzYwZDJlY2ViZDVjMjhlZjVjMmVjNDJlZGEx
MmYwM2YzYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25N
YW5pZmVzdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1h
bmlmZXN0TG9hZGVyLmgKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbk1h
bmlmZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5kZXggNWZhNzA1ZDhhODVmZjE1ODY4
OTA2NWZjOGJjZDg4YjNmYzk4YjRlNC4uYjliOWYzNzQ5NzQzZWQ0OGY3MzhhM2ZkOGU3MmE2OWE0
ZDAwOWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtMzEsNyArMzEsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFVSTDsKIHN0cnVj
dCBDb29raWU7CiBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAppbmRleCBk
MmIwOWJkNWRiNTY3NmMwMWFiZjgyM2QzZjA3MjJhNzcwZWE1NDBiLi4yYWYzZDRhMWM1MjA5MTI5
M2RlMWM0ODNhMmZjMTczYWM2NmVhMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oCmluZGV4IGRjMDcxMzBhMWIxNDY1M2JkMWRmNWJl
ZWU5ODgwOWUzYjcyZWZiZTMuLjk2NWRlNmY4YTA3YmRjNzhjMDhlMGYxYzJlNzIxOWUxZWRhNDA0
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuaApAQCAtMjcsOSArMjcsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IDY2ZmQ2YTg2YTg0NWFkNGRmMWIwZTA1YmNhZDc1YzIwMzIzNDgxY2EuLmRhNmIy
YWJlMTEzOGQ4ZjQxYTMwYWJjN2QxOTc2NGI4ODdmNmQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjCiAgICAgICAgIHN3aXRjaCAoc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY2Fz
ZSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbjoKICAgICAgICAgICAgIC8vIFdlIGhhbmRs
ZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2gg
bGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sgdG8gcmVzdW1lLgotICAgICAgICAgICAg
cmVxdWVzdCA9IHsgYmxhbmtVUkwoKSB9OworICAgICAgICAgICAgcmVxdWVzdCA9IHsgV1RGOjpi
bGFua1VSTCgpIH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTaG91bGRDb250
aW51ZTo6Tm86CiAgICAgICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwpAQCAt
MTY2Nyw3ICsxNjY3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9yZXF1ZXN0LnVybCgpLmlzRW1wdHko
KSAmJiAhZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlE
b2N1bWVudCgpKSB7Ci0gICAgICAgIG1fcmVxdWVzdC5zZXRVUkwoYmxhbmtVUkwoKSk7CisgICAg
ICAgIG1fcmVxdWVzdC5zZXRVUkwoV1RGOjpibGFua1VSTCgpKTsKICAgICAgICAgaWYgKGlzTG9h
ZGluZ01haW5SZXNvdXJjZSgpKQogICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCku
ZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYWM5NDhjY2RhZGQwYWExYzVlMWJlN2EwMWVhMTYw
OTAxYzFmYTM3NC4uZTlmNTAzY2M2ZjYzNGVlMTAzNjdhZGE3ODdkMTY2MjEwNmMxMmI0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTIzNCw3ICsyMzQsNyBAQCBj
bGFzcyBEb2N1bWVudExvYWRlcgogICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdERlc3RpbmF0aW9u
Rm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHVybEZvckhpc3RvcnkoKTsgfQogICAgIHZvaWQg
c2V0Q2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KGNvbnN0IFN0cmluZyYgY2xpZW50UmVk
aXJlY3RTb3VyY2VGb3JIaXN0b3J5KSB7IG1fY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
ID0gY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OyB9CiAgICAgCi0gICAgU3RyaW5nIHNl
cnZlclJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuICh1cmxGb3JIaXN0
b3J5KCkgPT0gdXJsKCkgfHwgdXJsKCkgPT0gYmxhbmtVUkwoKSkgPyBTdHJpbmcoKSA6IHVybEZv
ckhpc3RvcnkoKS5zdHJpbmcoKTsgfSAvLyBudWxsIGlmIG5vIHNlcnZlciByZWRpcmVjdCBvY2N1
cnJlZC4KKyAgICBTdHJpbmcgc2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gKHVybEZvckhpc3RvcnkoKSA9PSB1cmwoKSB8fCB1cmwoKSA9PSBXVEY6OmJsYW5r
VVJMKCkpID8gU3RyaW5nKCkgOiB1cmxGb3JIaXN0b3J5KCkuc3RyaW5nKCk7IH0gLy8gbnVsbCBp
ZiBubyBzZXJ2ZXIgcmVkaXJlY3Qgb2NjdXJyZWQuCiAgICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0
RGVzdGluYXRpb25Gb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gdXJsKCk7IH0KIAogICAgIGJv
b2wgZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWRDcmVh
dGVHbG9iYWxIaXN0b3J5RW50cnk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmgKaW5kZXggMzg1ZmI2NDA3YmE0MTliYmI4NjY3Y2JjNTA5OTdjMWIwZDRiZjIxNC4uMzA0OGM1
OWU1NzUxMzdkODVlMGE5OWNlOTJjNTBlM2RlN2JhZjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zv
cm1TdWJtaXNzaW9uLmgKaW5kZXggNGNkZjQ4Yjc3YzZkMDVlMmU2NTU3OWE0MzIxNDgzMDhkODQ4
ZWJjOS4uZjlhY2NmMTcyMTViYjA2YTZmODk2NmNmMDIxNzk5YmVkNThlM2QxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1
ZGUgIkZvcm1TdGF0ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYjNhZTZhYjBlM2Q0OWEwZGI2
MTM3NWEzYzdkY2ZkMjgyMDQ0NDhkMi4uOWQwMjk3YjFiNDc1N2QyOGIzMDNhYzBiZDM4NmY5YzYz
Mjc1MDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00MjEsNyAr
NDIxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShSZWY8Rm9ybVN1Ym1pc3Npb24+
JiYgc3VibWlzc2lvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwcm90b2Nv
bElzSmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKKyAgICBpZiAoV1RGOjpwcm90
b2NvbElzSmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKICAgICAgICAgaWYgKCFt
X2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Zvcm1BY3Rp
b24oVVJMKHN1Ym1pc3Npb24tPmFjdGlvbigpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7CkBAIC02OTksNyAr
Njk5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIGlmICgh
cGFyc2VIVFRQUmVmcmVzaChkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6UmVmcmVzaCksIGRlbGF5LCB1cmxTdHJpbmcpKQogICAgICAgICBy
ZXR1cm47CiAgICAgYXV0byBjb21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gZG9j
dW1lbnQudXJsKCkgOiBkb2N1bWVudC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwotICAgIGlmICgh
cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICBpZiAoIVdURjo6cHJvdG9j
b2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKICAgICAgICAgbV9mcmFtZS5uYXZpZ2F0aW9u
U2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkb2N1bWVudCwgZGVsYXksIGNvbXBsZXRlZFVS
TCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJl
c2ggIiArIGRvY3VtZW50LnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsg
IiB0byBhIGphdmFzY3JpcHQ6IFVSTCI7CkBAIC0zMzU1LDcgKzMzNTUsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZQogCiAgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9uIGJ5IG5hdmln
YXRpbmcgZm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNldHVwIHRvIG5h
dmlnYXRlIGJhY2sgdG8gcmVzdW1lLgogICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hv
dWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXItPndpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KHsg
YmxhbmtVUkwoKSB9KTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+
d2lsbENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBXVEY6OmJsYW5rVVJM
KCkgfSk7CiAKICAgICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRp
bmdNYWluUmVzb3VyY2Uoc2hvdWxkQ29udGludWUpOwogICAgIH07CkBAIC0zOTA2LDcgKzM5MDYs
NyBAQCBSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyRnJhbWUsIEZyYW1l
JiBsb29rdXBGcmFtZSwgRnJhbWVMb2FkUmVxdQogICAgIGNyZWF0ZWQgPSBmYWxzZTsKIAogICAg
IC8vIEZJWE1FOiBQcm92aWRlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIHdpdGggcmVzcGVjdCB0
byB0aGUgb3BlbmVyJ3MgZG9jdW1lbnQuCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpICYmICFvcGVuZXJGcmFtZS5kb2N1bWVudCgp
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhvcGVuZXJGcmFt
ZS5kb2N1bWVudCgpLT51cmwoKSwgeyB9KSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNj
cmlwdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKSAmJiAhb3BlbmVyRnJhbWUuZG9j
dW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SmF2YVNjcmlwdFVSTHMob3Bl
bmVyRnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIHsgfSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSAmJiAhZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShyZXF1ZXN0LmZyYW1lTmFtZSgpLCAiX2JsYW5rIikpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMWI5MTFhMmI3ZDI5MjJiYTM2
Njk1ZDRkOTI2MzA0MGY1MGYyZmYzZi4uOTA0ZWQ5NjJmNzk3OTNjODNlY2I3ZDgxNWY0NTA2ZmZj
ODUwYTVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTEwMCw3ICsxMDAsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKLWNsYXNz
IFVSTDsKIGNsYXNzIFdpZGdldDsKIAogZW51bSBjbGFzcyBQb2xpY3lEZWNpc2lvbk1vZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA5ZmJhODM1
YTQ1NTI5ZWVjOTE5MDBjMmYzYjJlYjUwYjcxODg4NGQ4Li41MGJkMTM4ZjAyZTM0YjE0YTM5MTll
MzY3ZWQ3ODFiZGJjNzliYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29u
dHJvbGxlci5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpj
dXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdAogICAgIC8vICAiSWYgdGhlIGJyb3dz
aW5nIGNvbnRleHQncyBzZXNzaW9uIGhpc3RvcnkgY29udGFpbnMgb25seSBvbmUgRG9jdW1lbnQs
CiAgICAgLy8gICBhbmQgdGhhdCB3YXMgdGhlIGFib3V0OmJsYW5rIERvY3VtZW50IGNyZWF0ZWQg
d2hlbiB0aGUgYnJvd3NpbmcgY29udGV4dAogICAgIC8vICAgd2FzIGNyZWF0ZWQsIHRoZW4gdGhl
IG5hdmlnYXRpb24gbXVzdCBiZSBkb25lIHdpdGggcmVwbGFjZW1lbnQgZW5hYmxlZC4iCi0gICAg
cmV0dXJuIG1fY3VycmVudEl0ZW0gJiYgIW1fcHJldmlvdXNJdGVtICYmIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UobV9jdXJyZW50SXRlbS0+dXJsU3RyaW5nKCksIGJsYW5rVVJMKCkpOworICAgIHJl
dHVybiBtX2N1cnJlbnRJdGVtICYmICFtX3ByZXZpb3VzSXRlbSAmJiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG1fY3VycmVudEl0ZW0tPnVybFN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpOwogfQog
CiB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpjbGVhclByZXZpb3VzSXRlbSgpCkBAIC02NTQsOSAr
NjU0LDkgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0
ZW0mIGl0ZW0pCiAgICAgLy8gTGF0ZXIgd2UgbWF5IHdhbnQgdG8gbGVhcm4gdG8gbGl2ZSB3aXRo
IG5pbCBmb3IgVVJMLgogICAgIC8vIFNlZSBidWcgMzM2ODIzNiBhbmQgcmVsYXRlZCBidWdzIGZv
ciBtb3JlIGluZm9ybWF0aW9uLgogICAgIGlmICh1cmwuaXNFbXB0eSgpKSAKLSAgICAgICAgdXJs
ID0gYmxhbmtVUkwoKTsKKyAgICAgICAgdXJsID0gV1RGOjpibGFua1VSTCgpOwogICAgIGlmIChv
cmlnaW5hbFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIG9yaWdpbmFsVVJMID0gYmxhbmtVUkwoKTsK
KyAgICAgICAgb3JpZ2luYWxVUkwgPSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgCiAgICAgU3RyaW5n
V2l0aERpcmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCAwMWQxZWZjMzE1YTViMDJkMDY5OWU5YWM0NWRmZDEz
Njg3OGY0YWIxLi41NGQ3MjIzMTBkOGRmZjkyMWYxZTlkZTA1NDViZDllMWM2MjA5NDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBMaW5rUHJlbG9h
ZFJlc291cmNlQ2xpZW50OwogCiBzdHJ1Y3QgTGlua1JlbEF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZFRpbWluZy5oCmluZGV4IDczZjllZjk0YWZkNjI1NWQ1YTNmNTc0NTgyZDMwYTY0ZjIx
ZDE0NjQuLmZlYTdjNDFmY2U2MDI1MjZlMzZhYThlZGI2ZWFiNDY1Njk4NThjODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xvYWRUaW1pbmcuaApAQCAtMjUsMTMgKzI1LDEyIEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFVSTDsKLQogY2xhc3MgTG9hZFRpbWluZyB7CiBwdWJsaWM6CiAgICAgU2Vjb25kcyBz
ZWNvbmRzU2luY2VTdGFydFRpbWUoTW9ub3RvbmljVGltZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IDU5Njc4MmM2NTdjYWM1MDgyY2FmZTFjZTRiMWMx
NmZmYjlhNjhkNGQuLjI4NWU2ODA5Y2U0NWUyMjEyNDQ0NjlmZjk1NWFlNTVlZmRlYjUxNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC01MSw3ICs1MSw2IEBAIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3Qg
RmV0Y2hPcHRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRD
b250ZW50Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hl
Y2tlci5jcHAKaW5kZXggMDUwY2I3OWVhNjU3N2Q1M2EwMzM1MjA2YmQ0NjBlYTQ0NzNmMjM3Ny4u
ZmFkZTAxYjdjMWQwYmVjODQ2MzY3ZmY1YTYyN2Q5M2RmMWYwOWExNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBA
IHZvaWQgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JtRm9yTWl4ZWRDb250ZW50KFNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpCiB7CiAgICAgLy8gVW5jb25kaXRpb25hbGx5IGFsbG93
IGphdmFzY3JpcHQ6IFVSTHMgYXMgZm9ybSBhY3Rpb25zIGFzIHNvbWUgcGFnZXMgZG8gdGhpcyBh
bmQgaXQgZG9lcyBub3QgaW50cm9kdWNlCiAgICAgLy8gYSBtaXhlZCBjb250ZW50IGlzc3VlLgot
ICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29s
SXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaXNNaXhlZENv
bnRlbnQoc2VjdXJpdHlPcmlnaW4sIHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVk
Q29udGVudENoZWNrZXIuaAppbmRleCBhMjZhODU3OTdkM2E4Y2IwYzI5MzNkZjI0Nzc2YjY5NWI3
MGQ0NDM0Li41ZmRmZmY4MGEzMTg3NDM3MTgzODg5MGI1ZTI0MDRlYTAwOWYxMTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgKQEAgLTM3LDcgKzM3LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVy
Q2xpZW50OwotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIE1peGVk
Q29udGVudENoZWNrZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hl
ZHVsZXIuY3BwCmluZGV4IGE4ZjgwYmUxMzgyMDdkYzdhYTZjNmMxNDY5NzNkMGRiOWU0YjliMWMu
Ljg4ZTcwNTE2ZDZjZTkzZDM2ZWM4M2FiMmM4ZDQzYjdmYzQ1ZGEyMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTM2Niw3ICszNjYsNyBA
QCBpbmxpbmUgYm9vbCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzaG91bGRTY2hlZHVsZU5hdmlnYXRp
b24oY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmln
YXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChwcm90b2NvbElzSmF2YVNj
cmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBOYXZpZ2F0aW9uRGlzYWJsZXI6OmlzTmF2aWdh
dGlvbkFsbG93ZWQobV9mcmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuaAppbmRleCAwNDU5MzE4MTkxNzY0OWJiMjk4NzUzNTVlMzM4NzIwNzM1NDMy
MTk0Li42ZmJlMmE1YjNkYmM5NmZjYmQ0NTA5MjU1OTc4NGU4ZGQwY2Q2YjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAg
Y2xhc3MgRm9ybVN1Ym1pc3Npb247CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFNjaGVkdWxlZE5hdmln
YXRpb247CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgTmF2aWdh
dGlvblNjaGVkdWxlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUGluZ0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRl
eCAxNTQ4OWRjZjA0YmYxZGVkNzg4NmVmOGMwODYxN2RkYmMxM2Q5YTE4Li42ZGVlZjQ1MTY5YTll
NWNhMzBhOWYyZjgzMzQyMzc5ZDM5OWIxZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUGluZ0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVy
LmgKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9ybURhdGE7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiAKIGVudW0gY2xhc3MgVmlvbGF0aW9uUmVwb3J0VHlwZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaAppbmRleCA5YjYzMzBlZDQ3YmFjNjZk
ZWEyMmI4NGUxOWNmMWQwMGIwNmEyM2MxLi4xYzEyM2QwNmY3YWQ2NzUyMjlkNmM1ZTAxZjkyNTFh
NjhiMTYyMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKQEAg
LTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2Uu
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHAKaW5kZXggN2JkZmM0OGY1ZDQwNTliZTZhYjhiYjlhMjVlYjA4MzUwZTg5MDE5OS4uMTI3
MjNiMzQyY2I1YzI2NTJmM2UxNGFkNGFjM2MyZDFjNDBmNmZiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjIzLDcgKzIyMyw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoY29uc3QgU3RyaW5nJiBkb21haW5JCiAgICAgYXV0byBvcGVuZXJQcmltYXJ5RG9tYWluID0g
cHJpbWFyeURvbWFpbihvcGVuZXJVcmwpOwogICAgIGlmIChkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MgIT0gb3BlbmVyUHJpbWFyeURvbWFpbgogICAgICAgICAmJiAhb3BlbmVyRG9jdW1lbnQu
aGFzUmVxdWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24o
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKQotICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShvcGVuZXJVcmwuc3RyaW5nKCksIGJsYW5rVVJMKCkpKSB7CisgICAgICAgICYmICFl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG9wZW5lclVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgp
KSkgewogICAgICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyUHJpbWFyeURv
bWFpbik7CiAgICAgICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVz
dHMgc2luY2UgdGhleSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJE
b2N1bWVudC5zZXRIYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJ
bnRlcmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCBhZTJjYWUyNzgwOTE3NTU4M2Yy
ZWJiNDMzNjVhMTAxOWExNDcxMDg3Li4yYWJmYzUwMzM0YzE3ZDg5ZTJiNmZmYmRjMzhhMzgyYTFm
MTA2ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aApAQCAtNDcsNyArNDcsNiBAQCBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1j
bGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAppbmRleCBmOTRkNmZkMTll
Nzc0NmRmNWU2ODNhOTU3ZjBmZDk5YTc3MmQzMjFhLi4wODI0NjlkYTEyYTA0MGIzMThjNDJhZjNj
Njc0Y2Q4MGMwZmQ2ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmgKQEAgLTI2LDEwICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
V2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
CmluZGV4IDZiYTU1MjZjMGFmNTZlOTYyMzU2MWRiNDdjZDFiYWZmODEzMTk2Y2MuLmEwYjdkODQ5
ODUwMmIwZTcyMzdhZjFhMDFhMjFiNmJkN2E5NTg5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJh
bWVMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcmV2aWV3TG9hZGVy
OwotY2xhc3MgVVJMOwogCiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKaW5kZXggNmM5YWNiMTkzYTY3
MDIzYmI1ZGMzNmJhYzRkYTdlNzk4ODM0NDNiZS4uN2VmOGRiYzg1MTRkY2VjZmYxYjA3ZjQ1MDM3
MDM3ZjhlODg0ODgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
VGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKQEAg
LTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0xvYWRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiU2VydmVyVGltaW5nLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IDVkN2QzOGMzYjA3MjNiNzE4
NjA5YWQ4N2IxMGU3NTIxNjRkZTg3MzYuLjU1YTE2ODQ4MzFiZDAxZjZlMGM0YTYxZmM3Yjc3YmI1
NzdlZDg4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAt
NzcsMTQgKzc3LDE0IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJh
bWVPd25lckVsZW1lbnQmIG93bmVyRWxlbWVudCwgY29uc3QgU3RyCiAgICAgLy8gU3VwcG9ydCBm
b3IgPGZyYW1lIHNyYz0iamF2YXNjcmlwdDpzdHJpbmciPgogICAgIFVSTCBzY3JpcHRVUkw7CiAg
ICAgVVJMIHVybDsKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkgewor
ICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpIHsKICAgICAgICAg
c2NyaXB0VVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsgLy8gY29tcGxldGVVUkwoKSBlbmNv
ZGVzIHRoZSBVUkwuCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdU
Rjo6YmxhbmtVUkwoKTsKICAgICB9IGVsc2UKICAgICAgICAgdXJsID0gY29tcGxldGVVUkwodXJs
U3RyaW5nKTsKIAogICAgIGlmIChzaG91bGRDb252ZXJ0SW52YWxpZFVSTHNUb0JsYW5rKCkgJiYg
IXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9
IFdURjo6YmxhbmtVUkwoKTsKIAogICAgIGJvb2wgaGFzRXhpc3RpbmdGcmFtZSA9IG93bmVyRWxl
bWVudC5jb250ZW50RnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWUgPSBsb2FkT3JSZWRpcmVjdFN1
YmZyYW1lKG93bmVyRWxlbWVudCwgdXJsLCBmcmFtZU5hbWUsIGxvY2tIaXN0b3J5LCBsb2NrQmFj
a0ZvcndhcmRMaXN0KTsKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVx
dWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBTdHIK
ICAgICAvLyBJZiB3ZSBjcmVhdGUgYSBuZXcgc3ViZnJhbWUgdGhlbiBhbiBlbXB0eSBkb2N1bWVu
dCBpcyBsb2FkZWQgaW50byBpdCBzeW5jaHJvbm91c2x5IGFuZCBtYXkKICAgICAvLyBjYXVzZSBz
Y3JpcHQgZXhlY3V0aW9uIChzYXksIHZpYSBhIERPTSBsb2FkIGV2ZW50IGhhbmRsZXIpIHRoYXQg
Y2FuIGRvIGFueXRoaW5nLCBpbmNsdWRpbmcKICAgICAvLyBuYXZpZ2F0aW5nIHRoZSBzdWJmcmFt
ZS4gV2Ugb25seSB3YW50IHRvIGV2YWx1YXRlIHNjcmlwdFVSTCBpZiB0aGUgZnJhbWUgaGFzIG5v
dCBiZWVuIG5hdmlnYXRlZC4KLSAgICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGlu
Z0ZyYW1lIHx8IChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxVUkwoKSA9PSBibGFua1VSTCgpKTsKKyAg
ICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+b3JpZ2luYWxVUkwoKSA9PSBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGlmICghc2NyaXB0VVJM
LmlzRW1wdHkoKSAmJiBjYW5FeGVjdXRlU2NyaXB0ICYmIG93bmVyRWxlbWVudC5pc1VSTEFsbG93
ZWQoc2NyaXB0VVJMKSkKICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVJZkphdmFTY3Jp
cHRVUkwoc2NyaXB0VVJMKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YmZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaApp
bmRleCA0ODk2ZDYyZjQ1ZjFmODFkOTBkZTc0MDJlMjA5NzA0MWE2ZWIwNjRjLi4yY2FhZTljYTYw
OThhNzUzM2MzMDkzODk2ZGMyMDMxMjZlNjg5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
ZnJhbWVMb2FkZXIuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1l
bnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXaWRnZXQ7CiAKIC8vIFRoaXMg
aXMgYSBzbGlnaHQgbWlzbm9tZXIuIEl0IGhhbmRsZXMgdGhlIGhpZ2hlciBsZXZlbCBsb2dpYyBv
ZiBsb2FkaW5nIGJvdGggc3ViZnJhbWVzIGFuZCBwbHVnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3Vic3RpdHV0ZURhdGEuaAppbmRleCBmMTAxMzUxNTk3MTk4MTgyOWM2MTAxOTE3NTJiOTFhZjll
YzdmYjc1Li43MDU2MzIxMzNkZjhlZjg1NjU5ODUyODdlNDEwNjBiMWRiMzc5NDg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKaW5kZXggNWRmNWY2MDE3Y2U0YzAzYjc4OGJl
OThiZWI3YjZlMTdiYjA0MGI2ZS4uNjEzMTdiNTMxY2NjMWIwNjI5YjIxZGJmMGE2N2NjZmVlYTZj
ZjQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIAogdXNpbmcgRmFsbGJhY2tVUkxWZWN0
b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFVSTCwgVVJMPj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCBhYmFh
NzNlMTRhYjRiOGM3YWJhYjEwODhkZDhjMjM4ZTY5ZTJiNDFlLi40N2Q4OTM0YmE5OTE0YTVhNTZk
MTE0NmE3OTdlZGViODRkZjJkYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0yNywxMCArMjcsMTAgQEAK
IAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IGYyZmIxZjc4MzJi
Y2Q4MDQ2MmJjYWIwOGNlYmE3ZDEyNWI4NWEyNDMuLjBkMTMwYTQ1ZjhhZjNiNDk5MDQyMTA1Yjk2
MTAzOWZmNWZiZjM0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggODFjMjMyMWYzMzk5YzMwNDAzMzc3NmQ5MjZk
OGUzMDAzYjZlNDFhNS4uMDQwZDhiN2FkNmEwOTFlYjFjOWU0MzViNWUwYzM0MDFmOTNhZTI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiU1FMaXRl
VHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA0OGNiZjg4ZTVkODkwMzcxMTM2MTg5NWNh
MWMxMzJhNjQwYzdkOTA0Li42OGMzNjFlNTJiNDJkOTFkMzYxZTljYzgyOTBlZjM1YzM1MDE1MmI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZUhvc3Q7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBTdG9yYWdlSURKb3VybmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggY2I0ODE1ODVmNGEwZGMzNjg5YzhlODE1
ZTcwNmNhMjRjNDI2MDAxNS4uODQ0NjlmOGFkNGE5NGE4NDYyZTc2ZjNkOTEwYzMyZThiMTQxMjE5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJz
ZXIuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKIAog
I2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1
ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKaW5kZXggZTc4MTA4OTNhMjA2OTBhY2U2
M2FlYzNlYzg4ZTYwZWFmNjJmYzc4MC4uOGZlNDBhNjRlNDQ5MGFhYzgyN2E2MWRiMGY0MDQ3YzFl
ZTg2MGIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlm
ZXN0UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0
UGFyc2VyLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBVUkw7Ci0KIHN0cnVjdCBNYW5pZmVzdCB7CiAgICAgVmVjdG9yPFVSTD4gb25saW5lV2hpdGVs
aXN0ZWRVUkxzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBsaWNpdFVSTHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmgKaW5kZXggMzdkZjY4YjM2NmNmZjg1MzliOTVjODIzZjJlOTEyNGQzNWVhOTkzOC4uZTQ2
MGI2OWMyYWVkNWQyNzlkZDU0YTBkZjlhZjAxMGI5NGJjNzdmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24u
aApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmU7
CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCA2NDEyMjYyZTE1YjkxZjFhOWFlNTRhYzA1MTk1
MTZiNmNhNjViODFmLi5hMWQzN2M3MDI5ZjI5N2E0MWY2ODNmMDllNzg2NGE5ZGM4YjdiMDA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRl
ICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hl
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTEsNiArNTAsNyBAQAogI2luY2x1ZGUgIm1hcmt1
cC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTU2NCw3ICs1
NjQsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
RnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9j
dW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3Ro
ZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93
bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5v
XCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhl
aWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkt
PnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKLSAgICBhdXRvIGlm
cmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVN
YXJrdXApLCBibGFua1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOworICAg
IGF1dG8gaWZyYW1lUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVy
KGlmcmFtZU1hcmt1cCksIFdURjo6YmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFN0
cmluZygpKTsKIAogICAgIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJj
aGl2ZXM7CiAgICAgc3ViZnJhbWVBcmNoaXZlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXgg
NWUxZTNmMWQzY2QxNGE0NmEyNzQ5YTQ4YTE5MzljYTJkNjM4OGI0Yy4uOGY1ZGQyMDYxNzRmZjQ4
NmY0MTJjZWRmODEyYTk4MGRkNjNkYzUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC00NywxMSArNDcsMTEgQEAKICNpbmNsdWRlICJT
Y2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
U3VicmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggMDc3N2IxNzcyNGU5YjA1Y2VmNWVk
NTRhM2FlZmMxZDExNDY3ZjRkNy4uMTBmNjljNmExMDUyOWYxZmQ5MTFhMWQwNzRlZjAzMDljMGY1
Y2JiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVyOwogY2xhc3MgU2V0dGluZ3M7Ci1jbGFzcyBVUkw7
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdXNpbmcgUmVzb3VyY2VFcnJvck9yID0gRXhwZWN0
ZWQ8VCwgUmVzb3VyY2VFcnJvcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaAppbmRleCBkZjQ2YmUyZDM3N2U0YzFkZTE4MmFk
YWYxNGQ3MzlhMWY5N2NkYzAyLi4zOGJiMTk5OTAwODdjOGQ2NjYxZjM2YTM2NjlkNGM5YWUzMzQ4
MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVT
aGVldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHls
ZVNoZWV0Q2xpZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkU3R5
bGVTaGVldENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGQ3MTY3OThhNGNl
MWQ5N2Q2MWQzMTNlOTUxOGI3ZGMyMjY5ZjcwNWMuLjJmY2JkMzE5ODVhNDc1YTMwZmYxNzdmNjMy
OTQ2MjJmMDEyNTI5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5oCkBAIC00MSw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSAgewogCiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCmluZGV4IDZhYTU1Mzc0Zjc4YjY2NzdmNTcwOWEy
YmQ5ZGNiNzE0YzE4ZmZkZmEuLjM0YTBmMzJiNGY1ZThkZjlhNmMwM2VmNTc0MThmYzZhYTg1MWQz
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAgLTI3LDkgKzI3
LDkgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQppbmRleCBmOTEwZWQ1YmRlMjQ5YmEzMWI4YTU4M2Zj
NTQxZWY3YWFjY2MzY2MwLi5jYmUwMDA0ODA2Y2M1ODc0MjNkOGRlYjBlZTQ4NGEwMWY3ZTA2ZjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFz
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0K
QEAgLTMwLDExICszMCwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMb2FkZXJO
U1VSTEV4dHJhcy5oIgogCi0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3Rm
L1ZlY3Rvci5oPgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgi
CiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNw
cAppbmRleCBjMTM5MDc2OGVmODY1ZjI2NjQxZTlhOTM0OGU2ZTY2MGRiMDcyZGVhLi45MTZkM2Y1
MTFiOTY1M2Q4NGNlN2FiM2YxNTExZjBiYjczNWI2YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNDEsNyAr
NDEsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2lu
Y2x1ZGUgIlZUVEN1ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCmluZGV4IGI1MTdiNTJlNzlkODg0ZDBlNzY4NjUwYTYxM2ZmNzQ5ODIyNDVmNGEu
LmE1NTBkNWIwYjc5YTk0MTg3N2EzZmJmNTQ5Njc0Y2RiMzNlZWJjZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaApAQCAtMzgyLDcgKzM4Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JU
IENocm9tZUNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9u
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIHsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgeyB9
OworICAgIHZpcnR1YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJM
JiwgY29uc3QgSGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIHsgfTsKIAogI2lm
IFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVu
dEN1cnNvcigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3Jp
Z2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IGFmN2NhOTI2
NGE0ZjJmODVlOTQwYzliZDFkNDAxNmRmYTA5OTJjYzAuLmI4NzUwNWEwNTA1NzllM2JmMTM4NTAy
YTVlZmY0YTQ1NTJlZDFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50
T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtMjYs
NyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEu
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDVl
N2MzNWM5NzcxOGQ4OGY4NDFiZjQxODA0NTI0OTRhZDhmNzUxOTIuLjg4OWVlOTk3NjEyOGQxYTk2
NjdlMGE1MGEzNDhlNTEyYmU2ODcwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q2xpZW50LmgKQEAgLTMxLDI5ICszMSwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAg
ICBjbGFzcyBGcmFtZTsKLSAgICBjbGFzcyBVUkw7Ci0KLSAgICBjbGFzcyBDb250ZXh0TWVudUNs
aWVudCB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgp
ID0gZGVmYXVsdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkg
PSAwOwotICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVS
TCYgdXJsKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0
IEZyYW1lKikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZy
YW1lKikgPSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpID0gMDsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHN0b3BTcGVha2luZygpID0gMDsKK2NsYXNzIEZyYW1lOworCitjbGFzcyBDb250ZXh0
TWVudUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29udGV4dE1lbnVDbGllbnQoKSA9
IGRlZmF1bHQ7CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOwor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTcGVha2luZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5n
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSA9IDA7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7CiAjZW5kaWYK
IAogI2lmIFVTRShBQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBzaG93Q29udGV4dE1lbnUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0
TWVudSgpID0gMDsKICNlbmRpZgotICAgIH07Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRl
eCA2ODEyNmJhOTZlOGJmMTdlNzY4OTNlMWViYWFjZjU0OTQwZjJmYmM3Li5hM2U1ZWFlODk0ZDY0
Mjc2MzdkZDg0NWVkYWFkZTcxYzYxNTFjMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYg
aXRlbSkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2s6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAg
ICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNv
bHV0ZUltYWdlVVJMKCksICJmaWxlIikpCisgICAgICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElz
KG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVSTCgpLCAiZmlsZSIpKQog
ICAgICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgICAg
ICBicmVhazsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
OjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAg
ICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRWaWRl
b1RvRGlzaygpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpdGVtLnNldFRp
dGxlKGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkQXVkaW9Ub0Rpc2soKSk7Ci0gICAgICAgICAg
ICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJcyhtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29s
dXRlSW1hZ2VVUkwoKSwgImZpbGUiKSkKKyAgICAgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMo
bV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksICJmaWxlIikpCiAg
ICAgICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlwYm9hcmQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggN2JkZTFjYmI4YjYzNzFlN2E3YTA4YmE1
NTFlODU2YjgxOTJmNjBmYy4uMWQ2ZGQ3Y2E3Yjg4ZjhmOTNhOWMyNDlkNDlhZTE3NTdmOTAzMDRi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAjaW5j
bHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRl
ICJTdWRkZW5UZXJtaW5hdGlvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc3Vh
bFZpZXdwb3J0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9pbnQuaCIKQEAgLTIyMTUsNyArMjIxNSw3
IEBAIFN0cmluZyBET01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0
IERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBJCiAKIGJvb2wgRE9NV2luZG93Ojppc0luc2VjdXJl
U2NyaXB0QWNjZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZykKIHsKLSAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCisgICAg
aWYgKCFXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIElmIHRoaXMgRE9NV2luZG93IGlzbid0IGN1cnJlbnRseSBhY3Rp
dmUgaW4gdGhlIEZyYW1lLCB0aGVuIHRoZXJlJ3Mgbm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKaW5kZXggYTEwZGFiMzNmYjcyMDBkZjFhNDIwYzM0MjhlNWY3YjM5NmZjY2Q2
Zi4uZTAxMDhhN2JlYjNhYWJjNGQxMmE3ZTgzYWE5NzkxZGQyZTEzMTA1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTEwNjksNyArMTA2OSw3IEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRl
LCBEcmFnT3BlcmF0aW9uCiAgICAgICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQp
CiAgICAgICAgICAgICAgICAgc3JjLmVkaXRvcigpLmNvcHlVUkwobGlua1VSTCwgdGV4dENvbnRl
bnRXaXRoU2ltcGxpZmllZFdoaXRlU3BhY2UsIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNl
dFVSTChzcmMuZWRpdG9yKCkucGFzdGVib2FyZFdyaXRlclVSTChsaW5rVVJMLCB0ZXh0Q29udGVu
dFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRX
cml0ZXJEYXRhLnNldFVSTERhdGEoc3JjLmVkaXRvcigpLnBhc3RlYm9hcmRXcml0ZXJVUkwobGlu
a1VSTCwgdGV4dENvbnRlbnRXaXRoU2ltcGxpZmllZFdoaXRlU3BhY2UpKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFzdGVib2FyZCBhbHNvIGNvbnRh
aW5zIHRydXN0d29ydGh5IGxpbmsgZGF0YQogICAgICAgICAgICAgLy8gYnV0IGRvbid0IG92ZXJ3
cml0ZSBtb3JlIGdlbmVyYWwgcGFzdGVib2FyZCB0eXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaAppbmRleCBjMDJkNWM4MDE2YzY1YjNkNWVmOTM1NmM4MmJlN2Q1NzJiOTc5YTk0
Li44NDM1MjgzY2RmY2IxMWE4NjJkOWZjY2M2NmYzMDQzZjJjNTdhOTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhZ0lt
YWdlLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCAzNzkyYTkxMjZmMWQzMGFmZmUzN2Jl
MWMyYTZkYWM3ODIxNmE3MjlhLi41OGE0YzM4NzQ5ZTk1MGI0NzhjZjg3MDY4YTI2MzkzMTBhZGVm
MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggZTg4NmI5MGZj
MDgxYmE3YjNmMzBlYzM0MTRiMmZjYmJlOWVmMTVhNS4uYTAyMTVmYTc3NDIzODUyYWJiNTQxMTBh
NzI5NzE2YjkzNGU5MzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtODksNyArODksNiBAQCBjbGFz
cyBSZW5kZXJXaWRnZXQ7CiBjbGFzcyBTY3JpcHRDb250cm9sbGVyOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTZXR0aW5nczsKLWNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQb3NpdGlv
bjsKIGNsYXNzIFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMjQwZTY0NTcz
N2E0Yzc4Y2Y1MmQ3MWQ4ZDI4NTcwYTAzYjg0ZjlhZi4uODRjNjIwMTBmNjZlOTNjMmVhYWVlZDQz
Y2Q3ZjI0MDU1MmNkZGI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01Miw3ICs1Miw2
IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEhUTUxGcmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQ
YWdlOwogY2xhc3MgUmVuZGVyQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9I
aXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAppbmRleCAwNWZlMmIzZjY3
MGRlMmZmYjViMGQ2YTkwZDhkNzRmOTJhODQ2NTcyLi43ZjM1ZjRkNzAxMDU1N2ZjNTk5YTIxYWRk
ZTY2MmEzNTk0YjZiMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3Rvcnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaApAQCAtMzYsNyArMzYsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7Ci1jbGFz
cyBVUkw7CiAKIGNsYXNzIEhpc3RvcnkgZmluYWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBw
dWJsaWMgUmVmQ291bnRlZDxIaXN0b3J5PiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKaW5kZXggN2I5OGEwNjM2YzQ5MzZjZDZmZDYy
OTQwMTIyY2FjYzlhODU4Njc2Ni4uODBhNmVkOTJiMDdhYjc5ZTAwZjUxYTc1YTgyMDI3NGNlYzU5
NjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdh
dGlvblNjaGVkdWxlci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
MCw3ICs1MCw3IEBAIGlubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogCiAg
ICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAo
IXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBibGFua1VSTCgpOyAvLyBVc2UgImFib3V0
OmJsYW5rIiB3aGlsZSB0aGUgcGFnZSBpcyBzdGlsbCBsb2FkaW5nIChiZWZvcmUgd2UgaGF2ZSBh
IGZyYW1lKS4KKyAgICAgICAgcmV0dXJuIFdURjo6YmxhbmtVUkwoKTsgLy8gVXNlICJhYm91dDpi
bGFuayIgd2hpbGUgdGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdlIGhhdmUgYSBm
cmFtZSkuCiAKICAgICByZXR1cm4gdXJsOwogfQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgTG9j
YXRpb246OnJlbG9hZChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdykKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh0YXJnZXREb2N1bWVudC51cmwo
KSkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodGFyZ2V0RG9jdW1lbnQudXJs
KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVy
KCkuc2NoZWR1bGVSZWZyZXNoKGFjdGl2ZURvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaApp
bmRleCBiYjdkMmQxZDMzZWVmZjZjOWQxNjY2YWIwMDEwMTc4MzJhNGYyYWY4Li4wMzRjZThiNmVm
Y2Y3MmMwYTdlZDRiZWUwMGZlMGVlYzk0YjE0NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCkBA
IC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93Owog
Y2xhc3MgRnJhbWU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIExvY2F0aW9uIDogcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8TG9jYXRpb24+LCBwdWJsaWMgRE9NV2luZG93
UHJvcGVydHkgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAyNGI0MWRlM2Q2MWZhMTY4MTg4
MjFlZDMwY2Q3ZTdiOTRmNjgwZDcxLi5iMmI5YWU2ZTU5NTg3MjdlYmU0M2ZjYzBkODJkMGEzYTdk
MjA4MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTM1LDcgKzEzNSw2IEBAIGNsYXNzIFNldHRpbmdz
OwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3Mg
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwotY2xhc3MgVVJMOwogY2xhc3MgVXNlckNvbnRlbnRQ
cm92aWRlcjsKIGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4
IDNiNmUxODI5ZTI4YzM1YTM5ZTRhMTZiNWYwODhlNjFjM2M0NmVkOGEuLmZmM2UyZTFmY2IwNjFh
NGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmgKQEAgLTMwLDExICszMCwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVS
TEhhc2guaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKaW5kZXggMjRhYjk0YmNhMjk1Y2NhZmIwYTY1MWE2Mjcw
YjI4Nzk0NWViYTk5MS4uM2E4NjM0YWI2MzdhOTE0MmE3MjUwM2Y5YTg4YTUyNmY3OWUwYTliZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBQZXJm
b3JtYW5jZVRpbWluZzsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRp
bWluZzsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBV
c2VyVGltaW5nOwogCiBjbGFzcyBQZXJmb3JtYW5jZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PFBlcmZvcm1hbmNlPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAppbmRleCA1NzUzMzU4MGMzMDIxZWFlNjZkZTMx
OTA4OWQ4ZTRiMWJjMTAzZjlkLi43YjdkODdhNDU4ZmJhMGU3MzlkMmM0MjA5Y2Y4MjQyYmJkODc0
OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRp
bWluZy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlJlc291cmNlVGltaW5nLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggMjI5ZWZmODQz
ODU0YjIwNjgwZDRhMzlkYzUxYzAwNzJhNzY0OWU5My4uMDIwZTA5MmI5OGY4YzgzZmQ4YTViM2Y0
MzMyYzI0NmIzZWM1ODc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAK
QEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNs
dWRlICJUZXh0RW5jb2RpbmcuaCIKQEAgLTE0OCw3ICsxNDgsNyBAQCBTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiAgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0
YXJ0cyBhcyBtX2RhdGEuaG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KICAgICBtX2Rv
bWFpbiA9IG1fZGF0YS5ob3N0OwogCi0gICAgaWYgKG1fZGF0YS5wb3J0ICYmIGlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbChtX2RhdGEucG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQorICAg
IGlmIChtX2RhdGEucG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2RhdGEu
cG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICBtX2RhdGEucG9ydCA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmln
aW5zIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4KQEAgLTUxNiw3ICs1MTYsNyBAQCBSZWY8U2Vj
dXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCwgY29uc3QgU3RyaW5nJgogewogICAgIFN0cmluZyBkZWNvZGVkSG9zdCA9IGRlY29kZVVSTEVz
Y2FwZVNlcXVlbmNlcyhob3N0KTsKICAgICBhdXRvIG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCks
IHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7Ci0gICAgaWYgKHBvcnQgJiYgIWlzRGVm
YXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQorICAgIGlmIChwb3J0ICYmICFX
VEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQogICAgICAgICBv
cmlnaW4tPm1fZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDVhZGY1MDE3NDliMDljMjkzZTU5YmE0MDQ1
NmY3NjdjYjU2ZTA4ZTEuLmI5M2QwZmFmMjM1YTdmZTM1NDc2NTA5ZjZlNDM3ZDU0NDA1Y2MxMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTM0LDggKzM0LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6
CiAgICAgZW51bSBQb2xpY3kgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmgKaW5kZXggY2VmZmVhMzJiMDg0YzU2MzEyNGYyMGI3YzVmZTI4ZjE0OTA0MDQ3NS4uMjc3NjJl
YTIxZDZkMjA2NWU5ZGQwMTQ2ZGI5NzliMzMyZWM0NTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5I
YXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCmluZGV4IGVl
MjU3MmM1YTlhNjQ0Mzk1N2E1ZjNmNzUzZjQ2ZTJmYmE5MjIzNDAuLmUwMTQ4YTJkMDVkOTliMGRk
ZGYwNmEyM2QyNDZkNTM0NTJjYjJjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5IYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkhhc2guaApAQCAtMjgsNyArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9s
aWN5LmNwcAppbmRleCAxNTNlZGQ4MTlkMTI1NTU1NTY4ODc2NTY2ZGUzMWY5OGI2YzA1NTNiLi40
MjM0MTgyODBlYTJlZTNjOWJmZGZjOTFjZDEyN2I5NjhlYjFlMWJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMzEsMTEgKzMxLDExIEBACiAKICNpbmNsdWRlICJP
cmlnaW5BY2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBTZWN1cml0
eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKGNvbnN0IFVSTCYg
dXJsKQogICAgIC8vCiAgICAgLy8gTm90ZTogV2UgZ2VuZXJhbGl6ZSB0aGlzIHRvIGludmFsaWQg
VVJMcyBiZWNhdXNlIHdlIHRyZWF0IHN1Y2ggVVJMcyBhcyBhYm91dDpibGFuay4KICAgICAvLwot
ICAgIHJldHVybiB1cmwuaXNFbXB0eSgpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnN0
cmluZygpLCBibGFua1VSTCgpKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwu
c3RyaW5nKCksICJhYm91dDpzcmNkb2MiKTsKKyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNkb2Mi
KTsKIH0KIAogdm9pZCBTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KExvY2FsTG9h
ZFBvbGljeSBwb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggY2Qz
N2NhM2FkMmRmZGJkN2U2NzIzNTFmYTU0M2VlZjQ5ZTgyYjRmNC4uNTMzYjFkNGZiZGFkNTJlMzhm
MWZkMzVhMmY2YTA3ZDQ4MDA4YjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3ku
aApAQCAtMzQsNyArMzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgU2VjdXJpdHlQb2xpY3kgewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKaW5kZXggYWE4MDRjZGIwODRlMGQ2YTNmZDNkZWVi
NmY2MWQ1NTQzYWYzNDFiMS4uOTg2Nzc2Y2EzZGI1ZGE4ZjhlMWE2YmE4Nzc5ZmRlZWE3MjgzYjli
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5j
bHVkZSAiU3RvcmFnZU1hcC5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
IldyaXRpbmdNb2RlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+
CiAjaW5jbHVkZSA8dW5pY29kZS91c2NyaXB0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRl
eCAyNzlmMDMzYTI2NDgxM2MyMWFkZjkwY2ZhNmMzNjU4YWMzODQzZjIzLi5jOGIxMmEzOTcxYjY2
MmY4MDc4ZjNjYTY4ZjUwZTYxZjlhN2Y4YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAg
LTI0LDcgKzI0LDcgQEAKICAqLwogCiAjcHJhZ21hIG9uY2UKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU29ja2V0UHJvdmlkZXIuaAppbmRleCBkMTk3OTc3YWZlYjgyMGFhNDEyZTJjMzRmYTU0
NzIxNjM4NDkwZTcyLi45ZThjMDAzYmZmNTFlMWE1Y2M5NmQyZTQ3M2U3YWVlZWVkYmRhOGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oCkBAIC0zNCw3ICszNCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTb2Nr
ZXRTdHJlYW1IYW5kbGU7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7Ci1jbGFzcyBV
Ukw7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvY2tldFByb3ZpZGVyIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFNvY2tldFByb3ZpZGVyPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCmluZGV4IDI4ZGZiMzJhMDc2ZTY1MTJlY2Y5MjRm
MDE0NTIyMGVlYWU0OWM0NzIuLmZhNjkyMDM0ZGJhZTVmZDc5ZmU4MTk3ODlhNzMyMWViZTRiMGRl
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCkBAIC00Miw3
ICs0Miw2IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwog
Y2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIGNsYXNzIFVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I7CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNl
clN0eWxlU2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAKaW5kZXggYjliODExNTgyN2I3OGY1MjczMDk1YzJjM2UxNTE4YmY0M2Y0M2U5MC4uZjM3
M2NmMzdiMjRjNTBmYzIxZGM2ZGM0NzFhYjA4ZWQ0ZWM1MDkxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
aAppbmRleCA5MzNmNjlkNmM1YTYwZTZlZDcyOGJhMDgwZWVlODRmNTQ4MGRmMmQ2Li45M2Y2NTgx
MmRhYzVkZThhZDVmY2RiNjcwZDhkMmY5ZTg2OTc4MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybiB7
CiBwdWJsaWM6CiAgICAgVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkgOiBtX2ludmFsaWQodHJ1ZSks
IG1fbWF0Y2hTdWJkb21haW5zKGZhbHNlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlclNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKaW5k
ZXggODUxMGMxZjMzOTkwMWU5OTVmMzIwY2NjOWJmNzE5YjJlNDlhZTQyNy4uNTJjMTJmM2M2OTY2
MzAyYWFlZjQ1NWI4ZmVmYmM5OWViZGE1ODRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgK
QEAgLTI1LDcgKzI1LDcgQEAKICAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVzZXJDb250ZW50VHlwZXMuaCIKICNpbmNs
dWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggNjhmMTBhODJhZGY4OThmMjUyYzQxNTU5Y2Ix
Njc4YWVjOGM1MDg0MS4uYzQ3NDc2N2U3Yzk4YmI0OGE4ODNjYjczYjY5ODkwNWY2MDFkNzYwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAtMjUsNyArMjUsNyBAQAogIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiVXNlckNvbnRlbnRUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlw
ZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExp
bmtTdG9yZS5oCmluZGV4IDQzYzM1MTM3MmQ2MThiNjgxMDliMGZiOGNjZDY5ZmM4NWY4YmRkNzgu
LjI2ZDY1MGRiYTc0ZGM1MDJjZjkzMDlhM2YzZDFjMDVkYTZiNjQ5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogY2xhc3MgUGFnZTsK
LWNsYXNzIFVSTDsKIAogY2xhc3MgVmlzaXRlZExpbmtTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFZpc2l0ZWRMaW5rU3RvcmU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKaW5kZXggNWI1OTJmZDgyOGY5N2Y5NGMyM2FlMzM0
OTY4YTVhYjQ3ZDk2YzE2My4uZTAyYTdhYjZjNTliZmNmNWI5OWU2NDhmZmM2YzdlMjU0NGNmZmUz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmgKQEAgLTU2LDcgKzU2LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVGV4dEVuY29k
aW5nOwotY2xhc3MgVVJMOwogc3RydWN0IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKIAog
dHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q+PiBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaAppbmRleCBlYjRmZTg3
YzI5ZjFjYWIxMThiZDFiMGRiZTY3NjNjYjEwNGYzMjMwLi44ZTA1MTgyNjQxNDA2ZjJjYzhjYWEy
ZGM1NmFlMzM2MDYzNGU2YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaApAQCAtMzIsNyArMzIsNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3JtRGF0YTsKLWNsYXNzIFVSTDsKIAogc3RydWN0IENT
UEluZm8gewogICAgIFN0cmluZyBkb2N1bWVudFVSSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaApp
bmRleCAyOTA3MjUwZjBlYjFkYzRmZDA4ZmIyMDcyYzY4MzM3YjI4ZDdiMDI2Li5kZDUxMzAwZWMz
YjAwMzMxZjMzYmQwMjczN2ExNThjMmFhYzYyMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5o
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5o
IgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oIgog
I2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggOTRiNGNjMTNjMGY2ZTQ1YmRhNGY1ZDgzYjRkMThlNzcz
MDNmNDM2Yy4uZWIyMTk1YTIwNGE0YzZiZWE0N2E0NzA4NDEzYmMwYjdlNmYzNDlkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3kuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAw
LDE0ICsxMDAsMTQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnBvcnRNYXRj
aGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoKG1fcG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29s
SXMoImh0dHBzIikpIHx8IChwb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZh
bHVlKCksICJodHRwcyIpKSkpCisgICAgaWYgKChtX3BvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnBy
b3RvY29sSXMoImh0dHBzIikpIHx8IChwb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQudmFsdWUoKSwgImh0dHBzIikpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBpZiAoIXBvcnQpCi0gICAgICAgIHJldHVybiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9w
b3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSk7CiAKICAg
ICBpZiAoIW1fcG9ydCkKLSAgICAgICAgcmV0dXJuIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChw
b3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpOwogCiAgICAg
cmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAppbmRleCA0ZWVhYmIwMTM2NTI1MWI2ZDg5NjMzY2E5
NjgwZDAxNWYyMzEwNmFhLi5hMmRiNTA0Mzg5OGYyZTY5NDdiYzdiMGEyZGQ2NDQzYWI1MTQzOGQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2UuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgU2VjdXJpdHlP
cmlnaW5EYXRhOwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmNwcAppbmRleCAxYjQzMzEyNjYwMGE1MDFmOTVmNWU2M2I0MmRkNGNkZGRkOTU3
OWIyLi4yNmRhOTExNTM3NjRhZmY3MDQ4Njc4ZTYyN2Y3MmZjNGM3OTgxZDVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgog
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgKaW5kZXggOWY2M2MzMDA2YTBjYTdmMmUzMzk5NDgw
MWI1NDJjMzY2NjhjMmU1NC4uNWZjZjNiMmVhZTRhOWU1Zjg0ODEwYmQ1M2M0NTU1MjQ0MDc3MjZm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3QuaApAQCAtMzYsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiAKIGNsYXNz
IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERp
cmVjdGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcAppbmRleCBjMmJmMWQ0NWE1NWY1NzdmYTJkM2ZiNjAw
YjJhYzlmM2ZmMGNhMWU0Li4xYjA5MmI4NGZkMGJmN2Q2NmY4ZTFhYWZlMGYxYmFjNTMzNmFlNjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcApAQCAtMjksNyArMjks
NyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCmluZGV4
IGI5YTlkMDBkNWJkMmZkYTlmYTdmYTE0ZWI5MTcxYWM4NjEyODU3YjguLjRiOGUxYWFlNmI0Nzcw
ZWVkOTY3ODFiNmRiZjY2YWJhMWUxMjU1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCkBAIC0yMywxNCArMjMsMTMg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcl9oCi0jZGVmaW5lIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
IAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogT0JKQ19DTEFTUyBOU0NvZGVyOwpAQCAtNzcsNSArNzYsMyBAQCBjbGFz
cyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgewogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotCi0jZW5kaWYgLy8gQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NvbnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1l
bnVJdGVtLmgKaW5kZXggNDc2YTNjMzZiOTViZGIxODdiYjU4OTMyZTAwM2JkMTFlZjMyYjQwNi4u
MWIwZjc0NTBiNDU3MmQ1NmE5MTNlNWMxZTdhYTU3Mzk4NDk0OGQxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb250ZXh0TWVudTsKIGNsYXNzIEltYWdlOwotY2xhc3MgVVJM
OwogCiBlbnVtIENvbnRleHRNZW51QWN0aW9uIHsKICAgICBDb250ZXh0TWVudUl0ZW1UYWdOb0Fj
dGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKaW5kZXggYjIxMjI0ZjFjYjlhMGRhOWFmNTg2
YWI5YjA0ZjM5MTI1NzZlY2Q5NC4uOGNiYTRkZjU5MzExNmMzZjIzZDJiNGJkYTRjZDNiM2RmNzky
Nzk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKQEAgLTI2LDggKzI2LDggQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29va2llc1N0cmF0ZWd5LmgKaW5kZXggYjQzOTc4Njg3ODEwOTVkMGMwOWE5OTZkMjQwNGEy
ZjRlOWQ5OTlkYi4uOWIwZDVhNjhkOTJjOGU1NWFkOWQwZjlhYjMzOGY5NTE3NjI5ZDc3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKQEAgLTMzLDcgKzMzLDYg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwot
Y2xhc3MgVVJMOwogCiBzdHJ1Y3QgQ29va2llOwogc3RydWN0IFNhbWVTaXRlSW5mbzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDFhNGE0NWY4MDVjYzUwNmFiOWYxOTFmODA2MTU3
ODcwNGZmNDkyMDYuLmU5MzA5NWZjN2IyYTBiMTM2ZDQ2NjE2ZDAyMjBjY2ViYTM5OWEwMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNTYsOCArNTYsNiBAQCB0eXBlZGVmIHZv
aWQqIERyYWdEYXRhUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQog
ZW51bSBEcmFnQXBwbGljYXRpb25GbGFncyB7CiAgICAgRHJhZ0FwcGxpY2F0aW9uTm9uZSA9IDAs
CiAgICAgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJ
bWFnZS5oCmluZGV4IGJlNWI0YzljMmE0NzA0YTFkYjkxMTJjNGNlOTRlYWM0M2YxNWQ2ZjkuLmYz
MmE2ODQ1YTY4NWM1YTBjMjFkYWY5MmMxZmMwZmVmNGE1MDAyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdJbWFnZS5oCkBAIC01Nyw3ICs1Nyw2IEBAIGNsYXNzIEltYWdlOwogY2xhc3MgSW50
UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKLWNsYXNzIFVSTDsKIAogI2lmIFBMQVRG
T1JNKElPUykKIHR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IERyYWdJbWFnZVJlZjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAppbmRleCA5NjdkZWRjN2JhNmVjZjQyOTJkZjE5
Y2ZjMTg4NTFkMTY2YjNhYTVmLi5iMmFhMjg0NDc5ZjdiMTIyNmViZjdhYWE5YjdmZGNhYzMwYzMz
NzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCkBAIC0zNSw4ICszNSw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiAvLyBBbGwgbWV0aG9kcyBh
cmUgc3luY2hyb25vdXMuCiBjbGFzcyBGaWxlU3RyZWFtIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MaW5rSWNvbi5oCmluZGV4IDI4MTc1NDYwMzU5YWRmZjdhMGNmMmZlMWViN2ZmNDEzNGM1
NzdlNTkuLjg5ZTJmODk2OWJiNTI2YTM2NGRiNmI5MGUzMGE5Yjc3MWNkZTU4NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGlua0ljb24uaApAQCAtMjYsOSArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJMaW5rSWNvblR5cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCA3MzdhMzkwNDI1
N2RlNjQzYmMwZDlhYjk5YmMyNjRhMzE0ZmQ2ZmY3Li41NTVlYzI4MmU0YmI2NmU1ZjlkMTExMjBi
OTc2MWE3MjVlYmMzZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJM
UGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgUGFzdGVib2FyZDo6aXNTYWZlVHlwZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogYm9vbCBQYXN0ZWJvYXJkOjpj
YW5FeHBvc2VVUkxUb0RPTVdoZW5QYXN0ZWJvYXJkQ29udGFpbnNGaWxlcyhjb25zdCBTdHJpbmcm
IHVybFN0cmluZykKIHsKLSAgICBhdXRvIHVybCA9IFVSTFBhcnNlciB7IHVybFN0cmluZyB9LnJl
c3VsdCgpOworICAgIFVSTCB1cmwoeyB9LCB1cmxTdHJpbmcpOwogICAgIHJldHVybiB1cmwucHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzQmxvYigpIHx8IHVybC5wcm90
b2NvbElzRGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
MjA2MzVhYjAyOTRmMjk5N2UyOGZiZmZkNTA5ODY5NDhhOTliNjAzMC4uYTJiYTJiNzYwMGRkNGVi
YTI2OGY2MjljZGQxOTE0MTM4ODFiZDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNs
dWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggOTlkOGRkZmZhZTAwZWFjZTFh
NjMyY2IwZDNmNTM4MWEyM2ZhMzY1Yy4uYTViMzY1MGEwYmJjMGFmODhmOWFmNzQ0NDA4ZGVhZTk5
NjBkYTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBj
bGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogc3Ry
dWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3Qg
UGFzdGVib2FyZFVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRXcml0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmNwcAppbmRleCAzZDJkY2VlZDdjNTZlODcwOTY3ODk4MDdhNjdiZWUyZWQwMzI5
MjdmLi5lMjU2OTA3NGVlNWEyYjNlZjZjMjBlOGJlNDhkZmU3NTdhODA2OWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIHZvaWQgUGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFBsYWluVGV4dChQbGFpblRl
eHQgcGxhaW5UZXh0KQogICAgIG1fcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpOwogfQog
Ci12b2lkIFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpzZXRVUkwoVVJMIHVybCkKK3ZvaWQgUGFzdGVi
b2FyZFdyaXRlckRhdGE6OnNldFVSTERhdGEoVVJMRGF0YSB1cmwpCiB7CiAgICAgQVNTRVJUKCFt
X3VybCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0
YS5oCmluZGV4IGQ1M2ZkNzJmZjVlNmM0NGUwYTE2ZTc3ZjM5MWRhZmNkODQ2NTAyMGEuLjVmNDc1
OTJiMTAxOTUxMTkxMTc5NzY4OGU3ODU1MGY0OGJiZWQ1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMjUsOCArMjUsOCBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjYsOCArNjYsOCBAQCBjbGFzcyBQYXN0ZWJvYXJk
V3JpdGVyRGF0YSBmaW5hbCB7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+JiBw
bGFpblRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYWluVGV4dDsgfQogICAgIHZvaWQgc2V0UGxh
aW5UZXh0KFBsYWluVGV4dCk7CiAKLSAgICBzdHJ1Y3QgVVJMIHsKLSAgICAgICAgV2ViQ29yZTo6
VVJMIHVybDsKKyAgICBzdHJ1Y3QgVVJMRGF0YSB7CisgICAgICAgIFVSTCB1cmw7CiAgICAgICAg
IFN0cmluZyB0aXRsZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFN0cmluZyB1c2VyVmlz
aWJsZUZvcm07CkBAIC03NiwxNSArNzYsMTUgQEAgY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEg
ZmluYWwgewogI2VuZGlmCiAgICAgfTsKIAotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMPiYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICB2b2lkIHNldFVSTChVUkwpOworICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMRGF0YT4mIHVybERhdGEoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQorICAgIHZvaWQgc2V0VVJMRGF0YShVUkxEYXRhKTsKIAogICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29udGVudD4mIHdlYkNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3dlYkNv
bnRlbnQ7IH0KICAgICB2b2lkIHNldFdlYkNvbnRlbnQoV2ViQ29udGVudCk7CiAKIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+IG1fcGxhaW5UZXh0OwotICAgIHN0ZDo6b3B0
aW9uYWw8VVJMPiBtX3VybDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTERhdGE+IG1fdXJsOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29udGVudD4gbV93ZWJDb250ZW50OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA4ZTEzYmY0ZDg0MTQx
M2JmMWMxMTdkZWM5ZWZmODVjNDgyNGI4OGVmLi5lMGEyMTMzMzc0NmNkZjk0ZGQ3MGU5NWUzZjYy
ZWQwZDc4MjAwMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaApAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xv
cjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7
CiBzdHJ1Y3QgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwog
c3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCBkYmVjZmMxYjNiMTZkN2Y1ZTAzMDhlMTEw
YWNkYTExMDJjYjQyMDdlLi5hOTU4YzJmMGFiMmQ5ZjFmMzc2NjJhN2EwYjYwMmJlMzEzNDMwN2I1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewog
ICAgIFVSTCBibG9iVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU1NM
S2V5R2VuZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3Iu
aAppbmRleCAwNzY3MjM4NmY2OGVhYTk4MWZlN2M1OTdjMDVmNjFlZjhlNjczY2U0Li5jMmJkOGQ2
ZTlkM2FhOTNlMjQ2MDI0ODYyYzFmM2IyMmY0NWE0ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaApAQCAtMzEsOCArMzEsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFVSTDsKLQogLy8gUmV0dXJucyBzdHJpbmdzIHJlcHJlc2VudGluZyBr
ZXkgc2l6ZXMgdGhhdCBtYXkgYmUgdXNlZAogLy8gZm9yIHRoZSA8a2V5Z2VuPiB0YWcuIFRoZSBm
aXJzdCBzdHJpbmcgaXMgZGlzcGxheWVkIGFzIHRoZSBkZWZhdWx0CiAvLyBrZXkgc2l6ZSBpbiB0
aGUgPGtleWdlbj4gbWVudS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
aGVtZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5
LmNwcAppbmRleCA5NDlkZTYzYWVmMDZjZmNmYWYwYzAyZDI0YzZhYzQ0ZTY2ZmUwYjk3Li43N2Y2
YzM5MmE5MTdmMGM5MTcyNjY1YTc2MThlNjcwNDM4YzRlNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogCi0jaW5jbHVkZSAiVVJM
UGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgpAQCAtNTUxLDcgKzU1MSw3IEBA
IGJvb2wgU2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcm
IHNjaGVtZSkKIAogYm9vbCBTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQogewotICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIChhbGxCdWls
dGluU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkgfHwgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hl
bWUoc2NoZW1lKSk7CisgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgKGFsbEJ1aWx0aW5T
Y2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKSB8fCBXVEY6OlVSTFBhcnNlcjo6aXNTcGVjaWFsU2No
ZW1lKHNjaGVtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGUyYWFlMmYzMDQ1NzM1NWY0ODllZWM0YWI0ZWNm
MWNlN2QzZTQ1MmYuLmY4NjhjMmMwMWQ2YjEwZWNmMzY0YjFhNmZmZTNkZDQyZjVmNTIyODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC00MCw3ICs0MCw3IEBACiAj
ZW5kaWYKIAogI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCisjaW5j
bHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNlbmRpZgogCiAjaWYgVVNFKEdMSUIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCmluZGV4IDBj
YzVmNjg3ZDYyMWVmZTdlYWJhYzRkYmY5ZTU0NTQ3YTQ4ZGNlMTguLmFmYjc1N2NiZTQwMjJmZWRm
YzQ3OTNlYWJjMjU2OWU4NjBlOTU5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZFN0cmluZ0hhc2guY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU2hhcmVkU3RyaW5nSGFzaC5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdI
YXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmgKaW5kZXgg
NzMyNDYxN2JhNDk2YTA2NjNiZmQ1M2RlYzRhNDQzZDk3NjkzOWU4ZS4uMzYwM2NmMGYyZTdmOTIx
NGIzZTI1M2Y1NDc5ZDljYjM0NmIyN2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZFN0cmluZ0hhc2guaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFVSTDsKLQogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogCiAv
LyBVc2UgdGhlIGxvdyAzMi1iaXRzIG9mIHRoZSA2NC1iaXQgU2hhcmVkU3RyaW5nSGFzaCBhcyB0
aGUga2V5IGZvciBIYXNoU2V0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4
dAppbmRleCBjMDJlNDllNGU1MWVmNzQ5MzFmNzBkZDg2NTVkMzRkZTJkNjNlNDhiLi4yZTg1NmE5
ODAwYzMzN2E0MDUzMTY1MmM3MDRmM2UyZmI2ZmQzMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU291cmNlc1NvdXAudHh0CkBAIC00MSw0ICs0MSwzIEBAIHBsYXRmb3JtL25ldHdvcmsvc291
cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwCiAKIHBsYXRmb3JtL3NvdXAvUHVibGljU3Vm
Zml4U291cC5jcHAKIHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKLXBsYXRmb3Jt
L3NvdXAvVVJMU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiZGI0Njg2OTU4ZjMwMDA5MzMzNDQzMTg5NDc3YTlkNDVmNGY1ZDg4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTA5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxMS0yMDEzLCAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlVSTC5oIgotCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8c3Rk
aW8uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VVUlE
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJl
cnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgotCi0vLyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVz
ZSBvZiB0aGUgKyBvcGVyYXRvciBvbiBTdHJpbmcuCi0vLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRp
bWl6ZSB0aGF0IG9wZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQotLy8gc28gbWFueSBhbGxv
Y2F0aW9ucywgb3IgY2hhbmdlIHRoaXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgotCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLXR5cGVkZWYgVmVj
dG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVD
aGFyQnVmZmVyOwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAw
eEZGRkY7Ci0KLS8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1p
bmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKLS8vIEFTQ0lJLiBUaGUgZGVzdGluYXRp
b24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93
ZWQKLS8vIGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51
bGwtdGVybWluYXRlIHRoZSByZXN1bHQuCi1zdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGNoYXIqIGRlc3QpCi17Ci0gICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG1lbWNw
eShkZXN0LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNl
IHsKLSAgICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAg
ICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNf
Y2FzdDxjaGFyPihzcmNbaV0pOwotICAgIH0KLX0KLQotdm9pZCBVUkw6OmludmFsaWRhdGUoKQot
ewotICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9
IGZhbHNlOwotICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOwotICAgIG1fc2NoZW1lRW5k
ID0gMDsKLSAgICBtX3VzZXJTdGFydCA9IDA7Ci0gICAgbV91c2VyRW5kID0gMDsKLSAgICBtX3Bh
c3N3b3JkRW5kID0gMDsKLSAgICBtX2hvc3RFbmQgPSAwOwotICAgIG1fcG9ydExlbmd0aCA9IDA7
Ci0gICAgbV9wYXRoRW5kID0gMDsKLSAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7Ci0gICAg
bV9xdWVyeUVuZCA9IDA7Ci19Ci0KLVVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3Ry
aW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKLXsKLSAgICBV
UkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7Ci0gICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFy
IGMpCi17Ci0gICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFj
ZSBhbmQgY29udHJvbAotICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMg
aXMgYW4gKnVuc2lnbmVkKiBjaGFyIGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hv
dWxkIG9ubHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBjIDw9ICcgJzsK
LX0KLQotVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICBVUkwgcmVzdWx0ID0g
KnRoaXM7Ci0gICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29w
eSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9u
ZW50KCkgY29uc3QKLXsKLSAgICBpZiAoIWhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKLSAgICBpZiAobV9zdHJp
bmdbZW5kXSA9PSAnLycpCi0gICAgICAgIC0tZW5kOwotCi0gICAgc2l6ZV90IHN0YXJ0ID0gbV9z
dHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgKytzdGFydDsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3Rh
cnQsIGVuZCAtIHN0YXJ0ICsgMSk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3Nj
aGVtZUVuZCk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKLXsKLSAgICB1bnNp
Z25lZCBzdGFydCA9IGhvc3RTdGFydCgpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKLX0KLQotc3RkOjpvcHRpb25h
bDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcG9ydExlbmd0aCkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAg
ICB1bnNpZ25lZCBudW1iZXI7Ci0gICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBu
dW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBt
X2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwotICAgIGVsc2UKLSAgICAgICAg
bnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSAr
IG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBu
dW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQotU3RyaW5nIFVSTDo6
aG9zdEFuZFBvcnQoKSBjb25zdAotewotICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkp
Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocG9ydC52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOwotfQot
Ci1TdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKLXsKLSAgICBTdHJpbmcg
cmVzdWx0ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7
Ci0KLSAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgewotICAgICAgICBj
b25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7Ci0gICAgICAgIHJlc3VsdC5yZW1v
dmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJh
aWxpbmdBdFNpZ24pOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBT
dHJpbmcgZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0
KQotewotICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAoIWlu
cHV0TGVuZ3RoKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBWZWN0b3I8TENo
YXI+IHBlcmNlbnREZWNvZGVkOwotICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoaW5wdXRMZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExl
bmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKLSAgICAgICAgICAgICYm
IGlucHV0TGVuZ3RoID4gMgotICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgotICAg
ICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKLSAgICAgICAgICAgICYm
IGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7Ci0gICAgICAgICAgICBwZXJjZW50RGVj
b2RlZC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRb
aSArIDJdKSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKLSAgICB9Ci0gICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVj
b2RlZC5zaXplKCkpOwotfQotCi1TdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Ci19Ci0K
LVN0cmluZyBVUkw6OnBhc3MoKSBjb25zdAotewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1f
dXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZUVz
Y2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Ci19Ci0KLVN0
cmluZyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Ci19Ci0KLVN0cmlu
ZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKLXsKLSAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBt
X3VzZXJFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmlu
Zy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEp
OwotfQotCi1TdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAotewotICAgIGlm
ICghaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQot
ICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwotfQotCi1ib29s
IFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1Zh
bGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Ci19Ci0KLVN0cmluZyBVUkw6
OmJhc2VBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRo
QWZ0ZXJMYXN0U2xhc2gpOwotfQotCi0jaWYgIVVTRShDRikKLQotU3RyaW5nIFVSTDo6ZmlsZVN5
c3RlbVBhdGgoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgp
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2Vx
dWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOwotfQotCi0jZW5kaWYKLQot
I2lmZGVmIE5ERUJVRwotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2Qo
U3RyaW5nVmlldykKLXsKLX0KLQotI2Vsc2UKLQotc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJ
c0dvb2QoU3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkg
ZG9uJ3QgbmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgotICAgIC8vIFRoZSBpc0FTQ0lJQWxw
aGFDYXNlbGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVy
cwotICAgIC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3Qg
YW5kIHJlbGllZCBvbiB0aGVzZSBjaGVja3MuCi0gICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHBy
b3RvY29sLmNvZGVVbml0cygpKSB7Ci0gICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3Rlcikp
OwotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsKLSAgICAgICAgQVNTRVJUKCFpc0FT
Q0lJVXBwZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNr
ZWQoY2hhcmFjdGVyKSA9PSBjaGFyYWN0ZXIpOwotICAgIH0KLX0KLQotI2VuZGlmCi0KLXN0YXRp
YyBMb2NrIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKLQotdXNpbmcg
RGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWlu
dDE2X3Q+Owotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQotewotICAgIHN0YXRpYyBEZWZhdWx0
UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsK
LSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKLX0KLQotc3RhdGljIERlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZygpCi17Ci0gICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKTsKLSAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCi0g
ICAgICAgIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3Rpbmc7Ci0gICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
OwotfQotCi12b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWlu
dDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKLXsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAg
ZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2ws
IHBvcnQpOwotfQotCi12b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcoKQotewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmdMb2NrKTsKLSAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcoKSkKLSAgICAgICAgbWFwLT5jbGVhcigpOwotfQotCi1zdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJv
dG9jb2wpCi17Ci0gICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcoKSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgICAgIEFTU0VSVChv
dmVycmlkZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92
ZXJyaWRlTWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KLSAgICAg
ICAgYXV0byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5k
KCkpCi0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotICAgIH0KLSAgICByZXR1
cm4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKLX0KLQotYm9v
bCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90
b2NvbCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0g
cG9ydDsKLX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNv
bnN0Ci17Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7Ci0KLSAgICAv
LyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVu
IGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCi0gICAgLy8gVGhlIGZyZWUgZnVuY3Rp
b24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKLSAgICBB
U1NFUlQoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wp
LCAiamF2YXNjcmlwdCIpKTsKLQotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBz
dHJpbmcgb2JqZWN0LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsg
KytpKSB7Ci0gICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3Vs
ZCBoYXZlIGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KLX0KLQotYm9v
bCBVUkw6OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKLXsKLSAgICBhc3Nl
cnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5s
ZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG8gdGhlIGNvbXBhcmlz
b24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgewotICAgICAgICBpZiAoIWlzQVNDSUlBbHBo
YUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBVUkw6OnF1
ZXJ5KCkgY29uc3QKLXsKLSAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRo
RW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAotfQotCi1TdHJpbmcgVVJM
OjpwYXRoKCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9w
b3J0TGVuZ3RoOwotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRo
RW5kIC0gcG9ydEVuZCk7Ci19Ci0KLWJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcm
IHMpCi17Ci0gICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhl
IGZpcnN0ICc6Jy4KLSAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsK
LSAgICBTdHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlv
bik7Ci0gICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6
ZVNjaGVtZShuZXdQcm90b2NvbCk7Ci0gICAgaWYgKCFjYW5vbmljYWxpemVkKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBVUkxQYXJzZXIg
cGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKLSAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJp
bmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1Zp
ZXcgc3RyaW5nKQotewotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgo
KSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2
KCksIHN0cmluZy5sZW5ndGgoKSk7Ci19Ci0gICAgCi0vLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQg
aG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KLS8v
IHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRl
ZC4KLS8vIFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KLXN0
YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJp
bmdWaWV3IHN0cmluZykKLXsKLSAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQg
YW4gSUROLWVuY29kZWQgbmFtZS4KLSAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0
aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkg
T0suCi0gICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OwotICAg
IAotICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0Fs
bEFTQ0lJKHN0cmluZykpIHsKLSAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hv
c3RuYW1lQnVmZmVyTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9S
OwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTEla
RVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVND
SUkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCi0gICAg
ICAgIHN0cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0
bmFtZUJ1ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVy
cm9yKTsKLSAgICAKLSAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFp
bHMuZXJyb3JzKSB7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNo
YXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi11bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBt
X3Bhc3N3b3JkRW5kICsgMTsKLX0KLQotdm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBz
KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGNv
bG9uSW5kZXggPSBzLmZpbmQoJzonKTsKLSAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOwotICAg
IGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAKLSAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0
U3RhcnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVk
SG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwotCi0gICAgVVJMUGFyc2VyIHBh
cnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwot
fQotCi12b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCi17Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0g
ICAgICAgIHJldHVybjsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmll
dyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJp
bmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3Vs
dCgpOwotfQotCi12b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQotewotICAgIGlm
ICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIGNvbG9uTmVlZGVkID0g
IW1fcG9ydExlbmd0aDsKLSAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBt
X2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0
cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/
ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0
cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVz
dWx0KCk7Ci19Ci0KLXZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RB
bmRQb3J0KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBT
dHJpbmdWaWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKLSAgICBTdHJpbmdWaWV3IHBvcnQ7Ci0g
ICAgCi0gICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOwotICAgIGlmIChj
b2xvbkluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJp
bmcoY29sb25JbmRleCArIDEpOwotICAgICAgICBib29sIG9rOwotICAgICAgICBpbnQgcG9ydElu
dCA9IHBvcnQudG9JbnRTdHJpY3Qob2spOwotICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAw
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0
cmluZygwLCBjb2xvbkluZGV4KTsKLSAgICB9Ci0KLSAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7Ci0g
ICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0
YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwotCi0gICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9z
dFN0YXJ0KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2Rl
ZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAgIGlmICghcG9y
dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKHBvcnQpOwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7Ci0K
LSAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3Rl
cnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCi17Ci0g
ICAgYXV0byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgewot
ICAgICAgICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7Ci0gICAgICAgIGF1dG8qIGRhdGEg
PSB1dGY4LmRhdGEoKTsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBh
dXRvIGxlbmd0aCA9IHV0ZjgubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7
IGogPCBsZW5ndGg7IGorKykgewotICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKLSAgICAg
ICAgICAgIGlmIChzaG91bGRFbmNvZGUoYykpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnJScpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9B
U0NJSUhleERpZ2l0KGMpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5p
YmJsZVRvQVNDSUlIZXhEaWdpdChjKSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChjKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOwotICAgIH07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0
Lmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1
dFtpXSkpKQotICAgICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7Ci0gICAgfQotICAgIHJl
dHVybiBpbnB1dDsKLX0KLQotdm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQot
ewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTog
Tm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNo
IHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3Jl
IHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KLQotICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVu
ZDsKLSAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyB1ID0gcGVyY2Vu
dEVuY29kZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQp
OwotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2No
ZW1lRW5kICsgMSkpCi0gICAgICAgICAgICB1ID0gIi8vIiArIHU7Ci0gICAgICAgIC8vIEFkZCAn
QCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAgICAgICAgaWYgKGVuZCA9PSBtX2hv
c3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkK
LSAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5n
VmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cg
aGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyRW5kID09
IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdA
JykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBh
cnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0
byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7Ci0gICAg
ICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZyku
bGVmdChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7
Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotdm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKLXsKLSAgICBp
ZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9w
YXNzd29yZEVuZDsKLSAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJp
bmcgcCA9ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6
OmlzSW5Vc2VySW5mb0VuY29kZVNldCkgKyAiQCI7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICBwID0g
Ii8vIiArIHA7Ci0gICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBn
b2luZyB0byBhZGQgb3VyIG93bi4KLSAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9z
dHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgVVJMUGFy
c2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5k
KSwgcCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdA
JyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAo
bV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdb
ZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBu
b3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQp
IHsKLSAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhl
bmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotdm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlk
ZW50aWZpZXIpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5
IGhhcHBlbnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPwotICAgIC8vIEZJWE1FOiBJ
cyBpdCBjb3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9u
LUFTQ0lJIGNoYXJhY3RlcnM/Ci0gICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVu
dGlmaWVyKSB9LnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBBU1NFUlQoIW1fcXVlcnlF
bmQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJp
bmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kKQotICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxl
ZnQobV9xdWVyeUVuZCk7Ci19Ci0KLXZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRl
bnRpZmllcigpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQpOwotICAgIG1fcXVlcnlFbmQgPSBt
X3BhdGhFbmQ7Ci19Ci0KLXZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQot
ewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTog
JyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQu
Ci0gICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5j
b2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBhY2Nlc3MgdG8gdGhl
IGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTYxMTc2Ci0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAh
cXVlcnkuaXNOdWxsKCkpIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0
cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmll
dyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFy
c2VyLnJlc3VsdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMg
PSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfQotCi19Ci0KLXZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0
IFN0cmluZyYgcykKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgU3RyaW5nIHBhdGggPSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9
ICcvJykKLSAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0KLSAgICBhdXRvIHF1ZXN0aW9uTWFy
a09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNo
YXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKLSAgICB9OwotICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCAr
IG1fcG9ydExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFy
a09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQp
KSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLWJvb2wgZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBp
ZiAoYS5tX3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHVuc2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtp
XSAhPSBiLnN0cmluZygpW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVS
TCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhF
bmQoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7Ci0gICAg
ICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIHByb3RvY29sSG9z
dEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBpZiAo
YS5tX3NjaGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBo
b3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0
U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9o
b3N0RW5kIC0gYi5ob3N0U3RhcnQoKTsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0
aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAg
IGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gQW5kIHRoZSBob3N0Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9z
dFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgaG9zdHNB
cmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICB1bnNpZ25lZCBob3N0
U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9o
b3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3Rh
cnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0
QjsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7
Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hv
c3RTdGFydEIgKyBpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5n
JiBkb21haW4pIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBpZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOwotICAgIGlmICghaG9zdC5lbmRzV2l0
aChkb21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaG9zdC5sZW5n
dGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxl
bmd0aCgpIC0gMV0gPT0gJy4nOwotfQotCi1TdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVl
bmNlcyhjb25zdCBTdHJpbmcmIGlucHV0KQotewotICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hh
cmFjdGVycyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwotfQotCi1i
b29sIFVSTDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAotewotICAgIGlmICghbV9pc1ZhbGlkKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9
PSAnOicpOwotICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKLX0K
LQotdm9pZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25z
dAotewotICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFs
bCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQotICAgIC8vIFRoYXQncyBmaW5lIGZvciBh
IHZhbGlkIFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMu
Ci0gICAgYnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgY29weUFTQ0lJKG1f
c3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xh
c3M+Ci1ib29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25z
dCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1h
a2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmlu
Z1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHBy
b3RvY29sKSkpOwotICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwLCBqID0gMDsgdXJsW2ldOyArK2kpIHsKLSAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdo
aXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICAgICAgaWYgKGlzTGVhZGluZyAm
JiBzaG91bGRUcmltRnJvbVVSTCh1cmxbaV0pKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlzTGVhZGluZyA9IGZhbHNlOwotCi0gICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5l
d2xpbmVzLgotICAgICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwg
dXJsW2ldID09ICdcbicpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIXBy
b3RvY29sW2pdKQotICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7Ci0gICAgICAgIGlm
ICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICArK2o7Ci0gICAgfQotICAgIAotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwg
cHJvdG9jb2wpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIHJldHVybiBXZWJDb3JlOjpw
cm90b2NvbElzSW50ZXJuYWwoc3RyaW5nLCBwcm90b2NvbCk7Ci19Ci0KLSNpZm5kZWYgTkRFQlVH
Ci0KLXZvaWQgVVJMOjpwcmludCgpIGNvbnN0Ci17Ci0gICAgcHJpbnRmKCIlc1xuIiwgbV9zdHJp
bmcudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLSNlbmRpZgotCi1TdHJpbmcgVVJMOjpzdHJpcHBlZEZv
clVzZUFzUmVmZXJyZXIoKSBjb25zdAotewotICAgIFVSTCByZWZlcnJlcigqdGhpcyk7Ci0gICAg
cmVmZXJyZXIuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmco
KSk7Ci0gICAgcmVmZXJyZXIucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJu
IHJlZmVycmVyLnN0cmluZygpOwotfQotCi1ib29sIFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdAot
ewotICAgIC8vIEluY2x1ZGluZyBmZWVkIGhlcmUgbWlnaHQgYmUgYSBiYWQgaWRlYSBzaW5jZSBk
cmFnIGFuZCBkcm9wIHVzZXMgdGhpcyBjaGVjawotICAgIC8vIGFuZCBpbmNsdWRpbmcgZmVlZCB3
b3VsZCBhbGxvdyBmZWVkcyB0byBwb3RlbnRpYWxseSBsZXQgc29tZW9uZSdzIGJsb2cKLSAgICAv
LyByZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJkIG9uIGEgZHJhZywgZXZlbiB3aXRo
b3V0IGEgZHJvcC4KLSAgICAvLyBMaWtld2lzZSB3aXRoIHVzaW5nIHRoZSBGcmFtZUxvYWRlcjo6
c2hvdWxkVHJlYXRVUkxBc0xvY2FsKCkgZnVuY3Rpb24uCi0gICAgcmV0dXJuIHByb3RvY29sSXMo
ImZpbGUiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVy
bCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsK
LX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCkKLXsKLSAgICBy
ZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotYm9vbCBw
cm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIGF1dG8gbGVu
Z3RoID0gdXJsLmxlbmd0aCgpOwotICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFr
aW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCi0gICAgcmV0dXJuIGxlbmd0aCA+PSA1Ci0gICAgICAg
ICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzBdLCAnaCcpCi0gICAgICAgICYmIGlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzFdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlB
bHBoYUNhc2VsZXNzRXF1YWwodXJsWzJdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwodXJsWzNdLCAncCcpCi0gICAgICAgICYmICh1cmxbNF0gPT0gJzonIHx8IChp
c0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFs0XSwgJ3MnKSAmJiBsZW5ndGggPj0gNiAmJiB1
cmxbNV0gPT0gJzonKSk7Ci19Ci0KLWNvbnN0IFVSTCYgYmxhbmtVUkwoKQotewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJvdXQ6Ymxhbmsi
KTsKLSAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7Ci19Ci0KLWJvb2wgVVJMOjppc0JsYW5rVVJM
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJcygiYWJvdXQiKTsKLX0KLQotYm9vbCBw
b3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBwb3J0ID0gdXJsLnBvcnQoKTsKLQotICAgIC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZl
IGEgcG9ydCwgcmV0dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBvcnQiIGNhc2UuCi0gICAgaWYgKCFw
b3J0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxp
c3QgbWF0Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KLSAg
ICAvLyBTZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5p
bmcuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qg
YmxvY2tlZFBvcnRMaXN0W10gPSB7Ci0gICAgICAgIDEsICAgIC8vIHRjcG11eAotICAgICAgICA3
LCAgICAvLyBlY2hvCi0gICAgICAgIDksICAgIC8vIGRpc2NhcmQKLSAgICAgICAgMTEsICAgLy8g
c3lzdGF0Ci0gICAgICAgIDEzLCAgIC8vIGRheXRpbWUKLSAgICAgICAgMTUsICAgLy8gbmV0c3Rh
dAotICAgICAgICAxNywgICAvLyBxb3RkCi0gICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KLSAgICAg
ICAgMjAsICAgLy8gRlRQLWRhdGEKLSAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKLSAgICAg
ICAgMjIsICAgLy8gU1NICi0gICAgICAgIDIzLCAgIC8vIHRlbG5ldAotICAgICAgICAyNSwgICAv
LyBTTVRQCi0gICAgICAgIDM3LCAgIC8vIHRpbWUKLSAgICAgICAgNDIsICAgLy8gbmFtZQotICAg
ICAgICA0MywgICAvLyBuaWNuYW1lCi0gICAgICAgIDUzLCAgIC8vIGRvbWFpbgotICAgICAgICA3
NywgICAvLyBwcml2LXJqcwotICAgICAgICA3OSwgICAvLyBmaW5nZXIKLSAgICAgICAgODcsICAg
Ly8gdHR5bGluawotICAgICAgICA5NSwgICAvLyBzdXBkdXAKLSAgICAgICAgMTAxLCAgLy8gaG9z
dHJpYW1lCi0gICAgICAgIDEwMiwgIC8vIGlzby10c2FwCi0gICAgICAgIDEwMywgIC8vIGdwcGl0
bnAKLSAgICAgICAgMTA0LCAgLy8gYWNyLW5lbWEKLSAgICAgICAgMTA5LCAgLy8gUE9QMgotICAg
ICAgICAxMTAsICAvLyBQT1AzCi0gICAgICAgIDExMSwgIC8vIHN1bnJwYwotICAgICAgICAxMTMs
ICAvLyBhdXRoCi0gICAgICAgIDExNSwgIC8vIFNGVFAKLSAgICAgICAgMTE3LCAgLy8gdXVjcC1w
YXRoCi0gICAgICAgIDExOSwgIC8vIG5udHAKLSAgICAgICAgMTIzLCAgLy8gTlRQCi0gICAgICAg
IDEzNSwgIC8vIGxvYy1zcnYgLyBlcG1hcAotICAgICAgICAxMzksICAvLyBuZXRiaW9zCi0gICAg
ICAgIDE0MywgIC8vIElNQVAyCi0gICAgICAgIDE3OSwgIC8vIEJHUAotICAgICAgICAzODksICAv
LyBMREFQCi0gICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCi0gICAgICAgIDUxMiwgIC8vIHByaW50
IC8gZXhlYwotICAgICAgICA1MTMsICAvLyBsb2dpbgotICAgICAgICA1MTQsICAvLyBzaGVsbAot
ICAgICAgICA1MTUsICAvLyBwcmludGVyCi0gICAgICAgIDUyNiwgIC8vIHRlbXBvCi0gICAgICAg
IDUzMCwgIC8vIGNvdXJpZXIKLSAgICAgICAgNTMxLCAgLy8gQ2hhdAotICAgICAgICA1MzIsICAv
LyBuZXRuZXdzCi0gICAgICAgIDU0MCwgIC8vIFVVQ1AKLSAgICAgICAgNTQ4LCAgLy8gYWZwb3Zl
cnRjcCBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDU1NiwgIC8vIHJlbW90ZWZzCi0gICAgICAg
IDU2MywgIC8vIE5OVFArU1NMCi0gICAgICAgIDU4NywgIC8vIEVTTVRQCi0gICAgICAgIDYwMSwg
IC8vIHN5c2xvZy1jb25uCi0gICAgICAgIDYzNiwgIC8vIExEQVArU1NMCi0gICAgICAgIDk5Mywg
IC8vIElNQVArU1NMCi0gICAgICAgIDk5NSwgIC8vIFBPUDMrU1NMCi0gICAgICAgIDIwNDksIC8v
IE5GUwotICAgICAgICAzNjU5LCAvLyBhcHBsZS1zYXNsIC8gUGFzc3dvcmRTZXJ2ZXIgW0FwcGxl
IGFkZGl0aW9uXQotICAgICAgICA0MDQ1LCAvLyBsb2NrZAotICAgICAgICA0MTkwLCAvLyBNYW5h
Z2VTaWV2ZSBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDYwMDAsIC8vIFgxMQotICAgICAgICA2
NjY1LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2NiwgLy8g
QWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjcsIC8vIFN0YW5kYXJk
IElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0Fw
cGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRp
dGlvbl0KLSAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9u
XQotICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgaW52
YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJz
Ci0gICAgfTsKLQotICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0
IGxpc3QsIGFsbG93IGl0LgotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJs
b2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKLSAgICBpZiAoIXN0
ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJs
b2NrZWRQb3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgLy8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2Vz
LgotICAgIGlmICgocG9ydC52YWx1ZSgpID09IDIxIHx8IHBvcnQudmFsdWUoKSA9PSAyMikgJiYg
dXJsLnByb3RvY29sSXMoImZ0cCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEFs
bG93IGFueSBwb3J0IG51bWJlciBpbiBhIGZpbGUgVVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIg
aXMgaWdub3JlZC4KLSAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGUiKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21E
YXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJu
YWwodXJsLCAiZGF0YSIpKTsKLQotICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2
aW9yIHdoZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVy
PwotICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9u
IGluIHRoYXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJlY3QuCi0gICAgYXV0byBpbmRleCA9
IHVybC5maW5kKCc7JywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBp
bmRleCA9IHVybC5maW5kKCcsJywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUg
aXQgc291bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcgdGV4dC9wbGFpbi4KLSAgICAg
ICAgLy8gQnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNv
bWUgdGltZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBhdCB0aGlzIHRpbWUuCi0gICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLSAgICBpZiAoaW5kZXggPT0gNSkKLSAg
ICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOwotICAgIEFTU0VSVChpbmRleCA+PSA1KTsKLSAg
ICByZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCk7Ci19Ci0KLVN0cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1
bnNpZ25lZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHN0cmluZygpOwotCi0gICAgcmV0dXJuIHN0cmluZygpLmxl
ZnQobGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0g
Mik7Ci19Ci0KLVVSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYg
cmVsYXRpdmVQYXJ0KQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6
Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsK
LX0KLQotVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7
Ci19Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYg
dXJsKQotewotICAgIHRzIDw8IHVybC5zdHJpbmcoKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLSNp
ZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoU09VUCkKLXN0YXRpYyBib29sIGlzSVB2NEFkZHJl
c3MoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYXV0byBjb3VudCA9IDA7Ci0KLSAgICBmb3Ig
KGNvbnN0IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicp
KSB7Ci0gICAgICAgIGlmIChjb3VudCA+PSA0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gb2N0ZXQubGVuZ3RoKCk7Ci0gICAgICAgIGlm
ICghbGVuZ3RoIHx8IGxlbmd0aCA+IDMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgYXV0byB2YWx1ZSA9IDA7Ci0gICAgICAgIGZvciAoYXV0byBpID0gMHU7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgY29uc3QgYXV0byBkaWdpdCA9IG9jdGV0W2ldOwotCi0g
ICAgICAgICAgICAvLyBQcm9oaWJpdCBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmIChk
aWdpdCA+ICc5JyB8fCBkaWdpdCA8ICghaSAmJiBsZW5ndGggPiAxID8gJzEnIDogJzAnKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHZhbHVlID0gMTAgKiB2
YWx1ZSArIChkaWdpdCAtICcwJyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodmFsdWUgPiAy
NTUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgY291bnQrKzsKLSAgICB9
Ci0KLSAgICByZXR1cm4gKGNvdW50ID09IDQpOwotfQotCi1zdGF0aWMgYm9vbCBpc0lQdjZBZGRy
ZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGVudW0gU2tpcFN0YXRlIHsgTm9uZSwgV2ls
bFNraXAsIFNraXBwaW5nLCBTa2lwcGVkLCBGaW5hbCB9OwotICAgIGF1dG8gc2tpcFN0YXRlID0g
Tm9uZTsKLSAgICBhdXRvIGNvdW50ID0gMDsKLQotICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQg
OiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnOicpKSB7Ci0gICAgICAgIGlmIChj
b3VudCA+PSA4IHx8IHNraXBTdGF0ZSA9PSBGaW5hbCkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IGhleHRldC5sZW5ndGgoKTsKLSAgICAg
ICAgaWYgKCFsZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIDo6IG1heSBiZSB1c2VkIGFueXdoZXJl
IHRvIHNraXAgMSB0byA4IGhleHRldHMsIGJ1dCBvbmx5IG9uY2UuCi0gICAgICAgICAgICBpZiAo
c2tpcFN0YXRlID09IFNraXBwZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IE5vbmUpCi0gICAgICAgICAgICAgICAgc2tpcFN0
YXRlID0gIWNvdW50ID8gV2lsbFNraXAgOiBTa2lwcGluZzsKLSAgICAgICAgICAgIGVsc2UgaWYg
KHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lw
cGluZzsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5h
bDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNraXBT
dGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBp
ZiAoc2tpcFN0YXRlID09IFNraXBwaW5nKQotICAgICAgICAgICAgc2tpcFN0YXRlID0gU2tpcHBl
ZDsKLQotICAgICAgICBpZiAobGVuZ3RoID4gNCkgewotICAgICAgICAgICAgLy8gQW4gSVB2NCBh
ZGRyZXNzIG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBmaW5hbCB0d28gaGV4dGV0cy4KLSAg
ICAgICAgICAgIGlmICgoc2tpcFN0YXRlID09IE5vbmUgJiYgY291bnQgIT0gNikgfHwgKHNraXBT
dGF0ZSA9PSBTa2lwcGVkICYmIGNvdW50ID49IDYpIHx8ICFpc0lQdjRBZGRyZXNzKGhleHRldCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBza2lwU3RhdGUg
PSBGaW5hbDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9y
IChjb25zdCBhdXRvIGNvZGVVbml0IDogaGV4dGV0LmNvZGVVbml0cygpKSB7Ci0gICAgICAgICAg
ICAvLyBJUHY2IGFsbG93cyBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmICghaXNBU0NJ
SUhleERpZ2l0KGNvZGVVbml0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb3VudCsrOwotICAgIH0KLQotICAgIHJldHVybiAoY291bnQgPT0g
OCAmJiBza2lwU3RhdGUgPT0gTm9uZSkgfHwgc2tpcFN0YXRlID09IFNraXBwZWQgfHwgc2tpcFN0
YXRlID09IEZpbmFsOwotfQotCi1ib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcg
aG9zdCkKLXsKLSAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0gbm90Rm91bmQpCi0gICAgICAgIHJl
dHVybiBpc0lQdjRBZGRyZXNzKGhvc3QpOwotCi0gICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9z
dCk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YwZTM4YTcxYjYxYjRmZGE4MTZiNzRk
NTMzOTM1ZGY0MzFiNjZkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAorKysgL2Rldi9udWxsCkBAIC0x
LDM5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBVU0UoQ0YpCi10
eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKLSNlbmRpZgotCi0jaWYgVVNF
KFNPVVApCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKLSNlbmRpZgotCi0jaWYgVVNFKEZP
VU5EQVRJT04pCi1PQkpDX0NMQVNTIE5TVVJMOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewot
Y2xhc3MgVGV4dFN0cmVhbTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkxU
ZXh0RW5jb2RpbmcgewotcHVibGljOgotICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29k
ZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgflVSTFRl
eHRFbmNvZGluZygpIHsgfTsKLX07Ci0KLXN0cnVjdCBVUkxIYXNoOwotCi1jbGFzcyBVUkwgewot
cHVibGljOgotICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3Ry
aW5nLgotICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9Ci0KLSAgICBleHBsaWNpdCBVUkwoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAgLy8g
UmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJv
dmlkZWQsIHRoZQotICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24t
QVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0
eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMK
LSAgICAvLyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFs
aWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJ
IHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMK
LSAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4K
LSAgICBXRUJDT1JFX0VYUE9SVCBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJl
bGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0
aChjb25zdCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIo
KSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBo
YXJtb25pemVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBl
bXB0eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8vIHN0YW5kYXJk
IFN0cmluZyBjb25zdHJ1Y3Rvci4KLQotICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVs
IG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIKLSAgICAvLyB0aHJlYWQu
IFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0
aGVyZSdzCi0gICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29w
eSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIGlz
b2xhdGVkQ29weSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4K
LSAgICAvLyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQu
Ci0gICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGlj
YWwoKTsgfQotCi0gICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGll
cmFyY2hpY2FsKCk7IH0KLSAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7Ci0KLSAgICBj
b25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0KLSAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2ln
bmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmll
dyBwcm90b2NvbCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaG9zdCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQo
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHBhc3MoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNv
bnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotCi0gICAgYm9vbCBo
YXNVc2VybmFtZSgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKLSAgICBi
b29sIGhhc1F1ZXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OwotICAg
IGJvb2wgaGFzUGF0aCgpIGNvbnN0OwotCi0gICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygp
LCB0aGVzZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAgLy8g
VGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVu
Y29kaW5nIGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgotICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBlbmNvZGVkVXNlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBl
bmNvZGVkUGFzcygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGJhc2VBc1N0
cmluZygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZpbGVTeXN0ZW1QYXRo
KCkgY29uc3Q7Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJv
dG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCi0gICAgLy8gdGVybWluYXRlZCBBU0NJSSBh
cmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KLSAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OwotICAgIGJvb2wgcHJvdG9j
b2xJcyhTdHJpbmdWaWV3KSBjb25zdDsKLSAgICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3Qg
eyByZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNMb2NhbEZp
bGUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQmxhbmtVUkwoKSBjb25zdDsK
LSAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJlQUJh
c2VVUkw7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihjb25z
dCBTdHJpbmcmKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0UHJvdG9jb2wo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwotCi0gICAg
dm9pZCByZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKLQot
ICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgotICAgIHZv
aWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHNldFVzZXIoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOwotCi0gICAgLy8g
SWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVz
dWx0aW5nIHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFBhdGgoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdp
dGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAotICAgIC8v
IGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2
ZSBhICI/IiBpbiB0aGUKLSAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNs
ZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOwotCi0gICAgdW5zaWduZWQg
cGF0aFN0YXJ0KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCgpIGNvbnN0OwotICAgIHVu
c2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0OwotCi0gICAgb3BlcmF0b3IgY29uc3Qg
U3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0KLSNpZiBVU0UoQ0YpCi0gICAg
V0VCQ09SRV9FWFBPUlQgVVJMKENGVVJMUmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShTT1VQ
KQotICAgIFVSTChTb3VwVVJJKik7Ci0gICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBjcmVhdGVTb3Vw
VVJJKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFdFQkNPUkVf
RVhQT1JUIFVSTChOU1VSTCopOwotICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TVVJMKigp
IGNvbnN0OwotI2VuZGlmCi0jaWZkZWYgX19PQkpDX18KLSAgICBvcGVyYXRvciBOU1N0cmluZyoo
KSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQotI2VuZGlmCi0KLSNpZm5kZWYgTkRFQlVHCi0g
ICAgdm9pZCBwcmludCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOwotICAgIHRlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVy
Jik7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNlcjsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKLSAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNv
bnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKLSAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8
Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdDsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25z
dDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
ZnJpZW5kIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGhvc3RzQXJlRXF1YWwoY29u
c3QgVVJMJiwgY29uc3QgVVJMJik7Ci0KLSAgICBTdHJpbmcgbV9zdHJpbmc7Ci0KLSAgICB1bnNp
Z25lZCBtX2lzVmFsaWQgOiAxOwotICAgIHVuc2lnbmVkIG1fcHJvdG9jb2xJc0luSFRUUEZhbWls
eSA6IDE7Ci0gICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDogMTsKLQotICAgIC8vIFRo
aXMgaXMgb3V0IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRzIGJldHRlci4gVGhlIHBvcnQgaXMg
YWZ0ZXIgdGhlIGhvc3QuCi0gICAgdW5zaWduZWQgbV9wb3J0TGVuZ3RoIDogMzsKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGggPSAoMSA8PCAzKSAtIDE7Ci0KLSAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVtZUxlbmd0aCA9ICgxIDw8IDI2KSAt
IDE7Ci0gICAgdW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsKLSAgICB1bnNpZ25lZCBtX3VzZXJT
dGFydDsKLSAgICB1bnNpZ25lZCBtX3VzZXJFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXNzd29yZEVu
ZDsKLSAgICB1bnNpZ25lZCBtX2hvc3RFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7Ci0gICAgdW5zaWduZWQgbV9wYXRoRW5kOwotICAgIHVuc2lnbmVkIG1fcXVlcnlFbmQ7
Ci19OwotCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVvZihTdHJpbmcpICsgOCAq
IHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwiKTsKLQotdGVtcGxhdGUg
PGNsYXNzIEVuY29kZXI+Ci12b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Ci17Ci0gICAgZW5jb2RlciA8PCBtX3N0cmluZzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIERlY29k
ZXI+Ci1ib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYgdXJsKQotewotICAg
IGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsKLSAgICBpZiAoIW9wdGlv
bmFsVVJMKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdXJsID0gV1RGTW92ZSgqb3B0aW9u
YWxVUkwpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4K
LXN0ZDo6b3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAg
IFN0cmluZyBzdHJpbmc7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBVUkwoVVJMKCksIHN0cmluZyk7Ci19
Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmlu
Z1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci1XRUJDT1JFX0VYUE9S
VCBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwm
KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBV
UkwmKTsKLQotV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiBibGFua1VSTCgpOwotCi0vLyBGdW5j
dGlvbnMgdG8gZG8gVVJMIG9wZXJhdGlvbnMgb24gc3RyaW5ncy4KLS8vIFRoZXNlIGFyZSBvcGVy
YXRpb25zIHRoYXQgYXJlbid0IGZhc3RlciBvbiBhIHBhcnNlZCBVUkwuCi0vLyBUaGVzZSBhcmUg
YWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3Qg
cmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KLS8vIFRo
aXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMg
YXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFVSTC4KLQotV0VCQ09SRV9F
WFBPUlQgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90
b2NvbCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0
cmluZyYgdXJsKTsKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpOwot
V0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYg
dXJsKTsKLQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChT
dHJpbmdWaWV3IHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwotV0VCQ09SRV9F
WFBPUlQgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRo
YXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCi0KLVdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZf
dCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwotCi1ib29sIGlzVmFsaWRQ
cm90b2NvbChjb25zdCBTdHJpbmcmKTsKLQotU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29u
c3QgU3RyaW5nJiB1cmwpOwotCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8g
ZXhwb3NlLCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcg
cGVyIHRoZSBVUkwgU3RhbmRhcmQuCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZW5jb2RlV2l0aFVS
TEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKLQotLy8gSW5saW5lcy4KLQotaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1
cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygp
ID09IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25z
dCBVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5zdHJpbmcoKTsKLX0KLQotaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4g
YS5zdHJpbmcoKSAhPSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpICE9
IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBV
UkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKLX0KLQotLy8gSW5saW5lIHZl
cnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxp
bmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0
aGUgY2xhc3MgZGVmaW5pdGlvbi4KLQotaW5saW5lIGJvb2wgVVJMOjppc051bGwoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3N0cmluZy5pc051bGwoKTsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpp
c0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOwotfQotCi1p
bmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQ7
Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUGF0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cGF0aEVuZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19Ci0KLWlubGluZSBib29sIFVS
TDo6aGFzVXNlcm5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZXJFbmQgPiBtX3VzZXJT
dGFydDsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpoYXNQYXNzd29yZCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fcGFzc3dvcmRFbmQgPiAobV91c2VyRW5kICsgMSk7Ci19Ci0KLWlubGluZSBib29s
IFVSTDo6aGFzUXVlcnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3F1ZXJ5RW5kID4gbV9wYXRo
RW5kOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZDsKLX0KLQot
aW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwotfQotCi1pbmxpbmUgdW5zaWduZWQgVVJM
OjpwYXRoU3RhcnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2hvc3RFbmQgKyBtX3BvcnRMZW5n
dGg7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhFbmQoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3BhdGhFbmQ7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RT
bGFzaCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFzdFNsYXNoOwotfQotCi1X
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+OwotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFz
aFRyYWl0czxXZWJDb3JlOjpVUkw+OwotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkxIYXNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZDBhYjk2ZGEzNWQz
MWFjOGRiNGViNGRhYmQzZjRlMTU5MmI4MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMSGFzaC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVSTEhhc2hfaAotI2RlZmluZSBVUkxIYXNoX2gKLQot
I2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAg
c3RydWN0IFVSTEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwm
IGtleSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCkt
Pmhhc2goKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVS
TCYgYSwgY29uc3QgVVJMJiBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5n
SGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNl
OwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LS8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nCi10ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+IHsKLSAgICB1c2luZyBIYXNoID0gV2ViQ29y
ZTo6VVJMSGFzaDsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6
VVJMPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+IHsgfTsKLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkxQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2JhYzQ5ZDliNjVk
ZThiMTA0ZDVhNmY3NWIyNTgwYjhiODkyYzZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyOTI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLQotI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlIDxh
cnJheT4KLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5j
bHVkZSA8dW5pY29kZS91dHlwZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jZGVmaW5l
IFVSTF9QQVJTRVJfREVCVUdHSU5HIDAKLQotI2lmIFVSTF9QQVJTRVJfREVCVUdHSU5HCi0jZGVm
aW5lIFVSTF9QQVJTRVJfTE9HKC4uLikgTE9HKFVSTFBhcnNlciwgX19WQV9BUkdTX18pCi0jZWxz
ZQotI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pCi0jZW5kaWYKLSAgICAKLXRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1jbGFzcyBDb2RlUG9pbnRJdGVyYXRvciB7Ci1wdWJsaWM6
Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcigpIHsgfQotICAgIEFMV0FZU19J
TkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogYmVnaW4sIGNvbnN0
IENoYXJhY3RlclR5cGUqIGVuZCkKLSAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQotICAgICAgICAs
IG1fZW5kKGVuZCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgQ29kZVBv
aW50SXRlcmF0b3IoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIGJlZ2luLCBjb25zdCBDb2RlUG9p
bnRJdGVyYXRvciYgZW5kKQotICAgICAgICA6IENvZGVQb2ludEl0ZXJhdG9yKGJlZ2luLm1fYmVn
aW4sIGVuZC5tX2JlZ2luKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGVuZC5tX2JlZ2luID49IGJl
Z2luLm1fYmVnaW4pOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIgb3Bl
cmF0b3IqKCkgY29uc3Q7Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvciYgb3Bl
cmF0b3IrKygpOwotCi0gICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmVn
aW4gPT0gb3RoZXIubV9iZWdpbgotICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7
Ci0gICAgfQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAg
ICAKLSAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3ImIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9iZWdpbiA9IG90aGVy
Lm1fYmVnaW47Ci0gICAgICAgIG1fZW5kID0gb3RoZXIubV9lbmQ7Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgYXRFbmQoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fYmVnaW4gPD0gbV9lbmQpOwotICAgICAgICByZXR1cm4gbV9i
ZWdpbiA+PSBtX2VuZDsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29k
ZVVuaXRzU2luY2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogcmVmZXJlbmNlKSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fYmVnaW4gPj0gcmVmZXJlbmNlKTsKLSAgICAgICAgcmV0dXJuIG1f
YmVnaW4gLSByZWZlcmVuY2U7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29k
ZVVuaXRzU2luY2UoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGNvZGVVbml0c1NpbmNlKG90aGVyLm1fYmVnaW4pOwotICAgIH0KLSAg
ICAKLXByaXZhdGU6Ci0gICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogbV9iZWdpbiB7IG51bGxwdHIg
fTsKLSAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2VuZCB7IG51bGxwdHIgfTsKLX07Ci0KLXRl
bXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46
Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFhdEVuZCgpKTsKLSAgICByZXR1cm4g
Km1fYmVnaW47Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgYXV0byBDb2RlUG9pbnRJ
dGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKysoKSAtPiBDb2RlUG9pbnRJdGVyYXRvciYKLXsKLSAg
ICBtX2JlZ2luKys7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNf
SU5MSU5FIFVDaGFyMzIgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+OjpvcGVyYXRvciooKSBjb25z
dAotewotICAgIEFTU0VSVCghYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjOwotICAgIFUxNl9HRVQo
bV9iZWdpbiwgMCwgMCwgbV9lbmQgLSBtX2JlZ2luLCBjKTsKLSAgICByZXR1cm4gYzsKLX0KLQot
dGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPjo6
b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgotewotICAgIHVuc2lnbmVkIGkgPSAw
OwotICAgIHNpemVfdCBsZW5ndGggPSBtX2VuZCAtIG1fYmVnaW47Ci0gICAgVTE2X0ZXRF8xKG1f
YmVnaW4sIGksIGxlbmd0aCk7Ci0gICAgbV9iZWdpbiArPSBpOwotICAgIHJldHVybiAqdGhpczsK
LX0KLSAgICAKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgYXBwZW5kQ29kZVBvaW50KFZlY3Rv
cjxVQ2hhcj4mIGRlc3RpbmF0aW9uLCBVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBpZiAoVV9J
U19CTVAoY29kZVBvaW50KSkgewotICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoc3RhdGljX2Nh
c3Q8VUNoYXI+KGNvZGVQb2ludCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGRlc3Rp
bmF0aW9uLnJlc2VydmVDYXBhY2l0eShkZXN0aW5hdGlvbi5zaXplKCkgKyAyKTsKLSAgICBkZXN0
aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X0xFQUQoY29kZVBvaW50KSk7Ci0gICAgZGVzdGlu
YXRpb24udW5jaGVja2VkQXBwZW5kKFUxNl9UUkFJTChjb2RlUG9pbnQpKTsKLX0KLQotZW51bSBV
UkxDaGFyYWN0ZXJDbGFzcyB7Ci0gICAgVXNlckluZm8gPSAweDEsCi0gICAgRGVmYXVsdCA9IDB4
MiwKLSAgICBGb3JiaWRkZW5Ib3N0ID0gMHg0LAotICAgIFF1ZXJ5UGVyY2VudCA9IDB4OCwKLSAg
ICBTbGFzaFF1ZXN0aW9uT3JIYXNoID0gMHgxMCwKLSAgICBWYWxpZFNjaGVtZSA9IDB4MjAsCi19
OwotCi1zdGF0aWMgY29uc3QgdWludDhfdCBjaGFyYWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7Ci0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8g
MHgwCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEKLSAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MgotICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgzCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4NQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg2
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDcKLSAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4OAotICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4OQotICAgIFVzZXJJbmZv
IHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4QQotICAgIFVz
ZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhCCi0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweEQKLSAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4RQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCwgLy8gMHhGCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDEwCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDExCi0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEyCi0gICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEzCi0gICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE0Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweDE1Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDE2Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE3
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE4Ci0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE5Ci0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFBCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDFCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDFDCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAw
eDFECi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFFCi0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFGCi0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyAnCi0gICAgMCwg
Ly8gJyEnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAnIicKLSAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNo
IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyMnCi0gICAgMCwgLy8gJyQnCi0gICAgRm9yYmlkZGVuSG9z
dCwgLy8gJyUnCi0gICAgMCwgLy8gJyYnCi0gICAgMCwgLy8gJ1wnJwotICAgIDAsIC8vICcoJwot
ICAgIDAsIC8vICcpJwotICAgIDAsIC8vICcqJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnKycKLSAg
ICAwLCAvLyAnLCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJy0nCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICcuJwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3Qs
IC8vICcvJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzEn
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICcyJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMycKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJzQnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc1JwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnNicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzcnCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICc4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnOScKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhv
c3QsIC8vICc6JwotICAgIFVzZXJJbmZvLCAvLyAnOycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnPCcKLSAgICBVc2VySW5mbywgLy8g
Jz0nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9z
dCwgLy8gJz4nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8
IEZvcmJpZGRlbkhvc3QsIC8vICc/JwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8g
J0AnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdBJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnQicKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJ0MnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdEJwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnRScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0YnCi0gICAgVmFsaWRTY2hlbWUs
IC8vICdHJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0kn
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICdKJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSycKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ0wnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdNJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnTicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ08nCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICdQJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnUScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1InCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdTJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnVCcKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ1UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdWJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnVycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdZ
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnWicKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3Qs
IC8vICdbJwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhv
c3QsIC8vICdcXCcKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICddJwotICAgIFVz
ZXJJbmZvLCAvLyAnXicKLSAgICAwLCAvLyAnXycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8v
ICdgJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnYScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2InCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdjJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnZCcKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ2UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdmJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnZycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdp
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnaicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2snCi0gICAg
VmFsaWRTY2hlbWUsIC8vICdsJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnbScKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJ24nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdvJwotICAgIFZhbGlkU2NoZW1lLCAv
LyAncCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3EnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdyJwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAncycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3QnCi0gICAgVmFs
aWRTY2hlbWUsIC8vICd1JwotICAgIFZhbGlkU2NoZW1lLCAvLyAndicKLSAgICBWYWxpZFNjaGVt
ZSwgLy8gJ3cnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAn
eScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3onCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAn
eycKLSAgICBVc2VySW5mbywgLy8gJ3wnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAnfScK
LSAgICAwLCAvLyAnficKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4N0YKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4ODAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODEKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4ODIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODMKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4ODQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
ODYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODgK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEEKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OEIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEMKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OEQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEUKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OEYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTAKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTIKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTQKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTYKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUIK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUQKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUYKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTEKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTMKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTUKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTcKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTkKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUUK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjAKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QjEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjIKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjQKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QjUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjYKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjgKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkEKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkMKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QkYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzEK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzMKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QzQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzUKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QzYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzcKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QzgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzkKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4Q0EKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0IKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4Q0MKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0QKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4Q0UKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0YKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RDAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RDIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDQK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDYKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RDcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDgKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RDkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REEKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4REIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REMKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4REQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REUKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4REYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTAKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTIKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTcK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTkKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUIKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUQKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUYKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RjAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjEKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RjIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjMKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RjQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjUKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RjYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RjgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkEK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkMKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkUKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RkYKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRyb2woQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweDFGOyB9Ci10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzQzBDb250cm9sT3JT
cGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MjA7
IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGlj
IGJvb2wgaXNUYWJPck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNo
YXJhY3RlciA8PSAweEQgJiYgY2hhcmFjdGVyID49IDB4OSAmJiBjaGFyYWN0ZXIgIT0gMHhCICYm
IGNoYXJhY3RlciAhPSAweEM7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblNpbXBsZUVuY29kZVNldChDaGFyYWN0ZXJUeXBl
IGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3RSB8fCBpc0MwQ29udHJvbChjaGFy
YWN0ZXIpOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBib29sIGlzSW5EZWZhdWx0RW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVy
KSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFj
dGVyXSAmIERlZmF1bHQ7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZ
U19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5jb2RlU2V0KENoYXJhY3RlclR5cGUg
Y2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFi
bGVbY2hhcmFjdGVyXSAmIFVzZXJJbmZvOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzUGVyY2VudE9yTm9uQVNDSUkoQ2hhcmFj
dGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuICFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgY2hhcmFj
dGVyID09ICclJzsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goQ2hhcmFjdGVyVHlwZSBjaGFy
YWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXFwnICYmIGNoYXJhY3RlckNsYXNzVGFibGVb
Y2hhcmFjdGVyXSAmIFNsYXNoUXVlc3Rpb25Pckhhc2g7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNWYWxpZFNjaGVtZUNoYXJh
Y3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICd6JyAm
JiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBWYWxpZFNjaGVtZTsgfQotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0Zv
cmJpZGRlbkhvc3RDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNo
YXJhY3RlciA8PSAnXScgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgRm9yYmlk
ZGVuSG9zdDsgfQotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBzaG91bGRQZXJjZW50RW5jb2Rl
UXVlcnlCeXRlKHVpbnQ4X3QgYnl0ZSwgY29uc3QgYm9vbCYgdXJsSXNTcGVjaWFsKQotewotICAg
IGlmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2J5dGVdICYgUXVlcnlQZXJjZW50KQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBpZiAoYnl0ZSA9PSAnXCcnICYmIHVybElzU3BlY2lhbCkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFVSTFBhcnNlcjo6
aXNJblVzZXJJbmZvRW5jb2RlU2V0KFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6Omlz
SW5Vc2VySW5mb0VuY29kZVNldChjKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZSwgVVJMUGFyc2VyOjpSZXBvcnRTeW50YXhWaW9sYXRpb24gcmVwb3J0U3ludGF4VmlvbGF0
aW9uPgotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YWR2YW5jZShDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQotewotICAg
ICsraXRlcmF0b3I7Ci0gICAgd2hpbGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlz
VGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgIGlmIChyZXBvcnRTeW50YXhWaW9s
YXRpb24gPT0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXMpCi0gICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICsr
aXRlcmF0b3I7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgot
Ym9vbCBVUkxQYXJzZXI6OnRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0
U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIGlmIChpdGVyYXRvci5hdEVuZCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBv
cnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmF0
RW5kKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5M
SU5FIGJvb2wgVVJMUGFyc2VyOjppc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8
fCAhaXNBU0NJSUFscGhhKCppdGVyYXRvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
ZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9y
KTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoVU5M
SUtFTFkoKml0ZXJhdG9yID09ICd8JykpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJ
SUJ1ZmZlcihVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBBU1NFUlQoaXNBU0NJSShjb2RlUG9p
bnQpKTsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAg
ICBtX2FzY2lpQnVmZmVyLmFwcGVuZChjb2RlUG9pbnQpOwotfQotCi1BTFdBWVNfSU5MSU5FIHZv
aWQgVVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMs
IHNpemVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0
aW9uKSkKLSAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjph
cHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
IGl0ZXJhdG9yKQotewotICAgIEFTU0VSVChpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikp
OwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoKml0ZXJhdG9yKTsKLSAgICBhZHZhbmNlKGl0ZXJh
dG9yKTsKLSAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwotICAgIEFTU0VSVCgqaXRlcmF0
b3IgPT0gJzonIHx8ICppdGVyYXRvciA9PSAnfCcpOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJ3wn
KQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJzonKTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6
OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVSTCYgYmFzZSkKLXsKLSAgICBpZiAo
YmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5t
X2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCA8IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwot
ICAgICAgICBpZiAoYmFzZS5tX3N0cmluZy5pczhCaXQoKSkgewotICAgICAgICAgICAgY29uc3Qg
TENoYXIqIGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAg
Q29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJhc2Uu
bV9wb3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICAg
ICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFw
cGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczE2KCk7Ci0gICAgICAgICAgICBDb2Rl
UG9pbnRJdGVyYXRvcjxVQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3Bv
cnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAg
ICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5k
V2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRDb3B5
RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAg
ICBpZiAoIWlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhZHZhbmNlKGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgYWR2YW5jZShpdGVyYXRvcik7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiAhaXNTbGFzaFF1ZXN0aW9u
T3JIYXNoKCppdGVyYXRvcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVp
bnQ4X3QgYnl0ZSwgVmVjdG9yPExDaGFyPiYgYnVmZmVyKQotewotICAgIGJ1ZmZlci5hcHBlbmQo
JyUnKTsKLSAgICBidWZmZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUp
KTsKLSAgICBidWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsK
LX0KLQotdm9pZCBVUkxQYXJzZXI6OnBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSkKLXsK
LSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJyUnKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHVwcGVyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGJ5dGUpKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9BU0NJ
SUhleERpZ2l0KGJ5dGUpKTsKLX0KLQotY29uc3QgY2hhciByZXBsYWNlbWVudENoYXJhY3RlclVU
RjhQZXJjZW50RW5jb2RlZFsxMF0gPSAiJUVGJUJGJUJEIjsKLWNvbnN0IHNpemVfdCByZXBsYWNl
bWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCA9IHNpemVvZihyZXBsYWNlbWVu
dENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCkgLSAxOwotCi10ZW1wbGF0ZTxib29sKCppc0lu
Q29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5F
IHZvaWQgVVJMUGFyc2VyOjp1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCFpdGVyYXRvci5hdEVu
ZCgpKTsKLSAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVyYXRvcjsKLSAgICBpZiAoTElLRUxZ
KGlzQVNDSUkoY29kZVBvaW50KSkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzSW5Db2RlU2V0
KGNvZGVQb2ludCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwot
ICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBvaW50KTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvZGVQb2ludCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0luQ29kZVNldChjb2RlUG9p
bnQpLCAiaXNJbkNvZGVTZXQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBmb3Igbm9uLUFTQ0lJ
IGNoYXJhY3RlcnMiKTsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIAotICAg
IGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgewotICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkLCByZXBsYWNl
bWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgdWludDhfdCBidWZmZXJbVThfTUFYX0xFTkdUSF07Ci0gICAgaW50
MzJfdCBvZmZzZXQgPSAwOwotICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQsIGNv
ZGVQb2ludCk7Ci0gICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgb2Zmc2V0OyArK2kpCi0gICAg
ICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ1ZmZlcltpXSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UXVlcnlF
bmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQot
ewotICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjb2RlUG9pbnQg
PSAqaXRlcmF0b3I7Ci0gICAgaWYgKExJS0VMWShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7Ci0gICAg
ICAgIGlmIChVTkxJS0VMWShzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGNvZGVQb2ludCwg
bV91cmxJc1NwZWNpYWwpKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9y
KTsKLSAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0g
ICAgCi0gICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUihjb2RlUG9pbnQpKSB7Ci0gICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQs
IHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwotICAg
IGludDMyX3Qgb2Zmc2V0ID0gMDsKLSAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0
LCBjb2RlUG9pbnQpOwotICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytpKSB7
Ci0gICAgICAgIGF1dG8gYnl0ZSA9IGJ1ZmZlcltpXTsKLSAgICAgICAgaWYgKHNob3VsZFBlcmNl
bnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQotICAgICAgICAgICAgcGVy
Y2VudEVuY29kZUJ5dGUoYnl0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoYnl0ZSk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8
VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGF1dG8gZW5jb2RlZCA9
IGVuY29kaW5nLmVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldyhzb3VyY2UuZGF0YSgpLCBz
b3VyY2Uuc2l6ZSgpKSk7Ci0gICAgYXV0byogZGF0YSA9IGVuY29kZWQuZGF0YSgpOwotICAgIHNp
emVfdCBsZW5ndGggPSBlbmNvZGVkLnNpemUoKTsKLSAgICAKLSAgICBpZiAoIWxlbmd0aCA9PSAh
aXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHNpemVfdCBpID0gMDsKLSAgICBmb3Ig
KDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7
Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGRhdGFbaV07Ci0gICAgICAgIGlmIChVTkxJS0VMWShi
eXRlICE9ICppdGVyYXRvcikpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRv
cik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoVU5MSUtFTFko
c2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpKSB7Ci0g
ICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKLSAgICAgICAg
KytpdGVyYXRvcjsKLSAgICB9Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFi
T3JOZXdsaW5lKCppdGVyYXRvcikpCi0gICAgICAgICsraXRlcmF0b3I7Ci0gICAgQVNTRVJUKChp
ID09IGxlbmd0aCkgPT0gaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgZm9yICg7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAg
ICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOwotICAgICAgICBpZiAoc2hvdWxkUGVyY2VudEVuY29k
ZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCi0gICAgICAgICAgICBwZXJjZW50RW5j
b2RlQnl0ZShieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihieXRlKTsKLSAgICB9Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNl
cjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKLXsKLSAgICBzdGF0
aWMgY29uc3QgdWludDE2X3QgZnRwUG9ydCA9IDIxOwotICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCBnb3BoZXJQb3J0ID0gNzA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBQb3J0ID0g
ODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBzUG9ydCA9IDQ0MzsKLSAgICBzdGF0
aWMgY29uc3QgdWludDE2X3Qgd3NQb3J0ID0gODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90
IHdzc1BvcnQgPSA0NDM7Ci0gICAgCi0gICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7
Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgc3dp
dGNoIChzY2hlbWVbMF0pIHsKLSAgICBjYXNlICd3JzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgp
IHsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHdzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3Mn
Ci0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gd3NzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBjYXNl
ICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSA0OgotICAgICAg
ICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0g
PT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gaHR0cFBvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAg
ICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVb
M10gPT0gJ3AnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdzJykKLSAgICAgICAg
ICAgICAgICByZXR1cm4gaHR0cHNQb3J0OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgICAgIH0KLSAgICBjYXNlICdnJzoKLSAgICAgICAgaWYgKGxlbmd0aCA9PSA2Ci0gICAgICAg
ICAgICAmJiBzY2hlbWVbMV0gPT0gJ28nCi0gICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3An
Ci0gICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCi0gICAgICAgICAgICAmJiBzY2hlbWVb
NF0gPT0gJ2UnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNV0gPT0gJ3InKQotICAgICAgICAgICAg
cmV0dXJuIGdvcGhlclBvcnQ7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgY2Fz
ZSAnZic6Ci0gICAgICAgIGlmIChsZW5ndGggPT0gMwotICAgICAgICAgICAgJiYgc2NoZW1lWzFd
ID09ICd0JwotICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJykKLSAgICAgICAgICAgIHJl
dHVybiBmdHBQb3J0OwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotfQotCi1lbnVtIGNsYXNzIFNj
aGVtZSB7Ci0gICAgV1MsCi0gICAgV1NTLAotICAgIEZpbGUsCi0gICAgRlRQLAotICAgIEdvcGhl
ciwKLSAgICBIVFRQLAotICAgIEhUVFBTLAotICAgIE5vblNwZWNpYWwKLX07Ci0KLUFMV0FZU19J
TkxJTkUgc3RhdGljIFNjaGVtZSBzY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpCi17Ci0gICAgYXV0
byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJl
dHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKLSAgICBj
YXNlICdmJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSAzOgotICAg
ICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVb
Ml0gPT0gJ3AnKQotICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkZUUDsKLSAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAgICAg
ICAgIGlmIChzY2hlbWVbMV0gPT0gJ2knCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICdsJwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnZScpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6RmlsZTsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNw
ZWNpYWw7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25T
cGVjaWFsOwotICAgICAgICB9Ci0gICAgY2FzZSAnZyc6Ci0gICAgICAgIGlmIChsZW5ndGggPT0g
NgotICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJwotICAgICAgICAgICAgJiYgc2NoZW1l
WzJdID09ICdwJwotICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJwotICAgICAgICAgICAg
JiYgc2NoZW1lWzRdID09ICdlJwotICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKLSAg
ICAgICAgICAgIHJldHVybiBTY2hlbWU6OkdvcGhlcjsKLSAgICAgICAgcmV0dXJuIFNjaGVtZTo6
Tm9uU3BlY2lhbDsKLSAgICBjYXNlICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAg
ICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNd
ID09ICdwJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpIVFRQOwotICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAg
ICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0g
J3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJwotICAgICAgICAgICAgICAg
ICYmIHNjaGVtZVs0XSA9PSAncycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRU
UFM7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQot
ICAgIGNhc2UgJ3cnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNlIDI6
Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1
cm4gU2NoZW1lOjpXUzsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0g
ICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2No
ZW1lOjpXU1M7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAg
ICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0g
ICAgfQotfQotCi1zdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNh
bGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoc2NoZW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICghaXNBU0NJSUFs
cGhhKHNjaGVtZVswXSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmIChp
c0FTQ0lJQWxwaGFudW1lcmljKHNjaGVtZVtpXSkgfHwgc2NoZW1lW2ldID09ICcrJyB8fCBzY2hl
bWVbaV0gPT0gJy0nIHx8IHNjaGVtZVtpXSA9PSAnLicpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NoZW1l
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc1NwZWNp
YWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWVBcmcpCi17Ci0gICAgcmV0dXJuIHNjaGVtZShz
Y2hlbWVBcmcpICE9IFNjaGVtZTo6Tm9uU3BlY2lhbDsKLX0KLQotZW51bSBjbGFzcyBVUkxQYXJz
ZXI6OlVSTFBhcnQgewotICAgIFNjaGVtZUVuZCwKLSAgICBVc2VyU3RhcnQsCi0gICAgVXNlckVu
ZCwKLSAgICBQYXNzd29yZEVuZCwKLSAgICBIb3N0RW5kLAotICAgIFBvcnRFbmQsCi0gICAgUGF0
aEFmdGVyTGFzdFNsYXNoLAotICAgIFBhdGhFbmQsCi0gICAgUXVlcnlFbmQsCi19OwotCi1zaXpl
X3QgVVJMUGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQoY29uc3QgVVJMJiB1cmwsIFVSTFBhcnQg
cGFydCkKLXsKLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBjYXNlIFVSTFBhcnQ6OlF1ZXJ5RW5k
OgotICAgICAgICByZXR1cm4gdXJsLm1fcXVlcnlFbmQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRo
RW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBh
dGhBZnRlckxhc3RTbGFzaDoKLSAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9ob3N0
RW5kICsgdXJsLm1fcG9ydExlbmd0aDsKLSAgICBjYXNlIFVSTFBhcnQ6Okhvc3RFbmQ6Ci0gICAg
ICAgIHJldHVybiB1cmwubV9ob3N0RW5kOwotICAgIGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6
Ci0gICAgICAgIHJldHVybiB1cmwubV9wYXNzd29yZEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlVz
ZXJFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV91c2VyRW5kOwotICAgIGNhc2UgVVJMUGFydDo6
VXNlclN0YXJ0OgotICAgICAgICByZXR1cm4gdXJsLm1fdXNlclN0YXJ0OwotICAgIGNhc2UgVVJM
UGFydDo6U2NoZW1lRW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kOwotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBVUkxQ
YXJzZXI6OmNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBzaXplX3Qg
bGVuZ3RoKQotewotICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSBzdHJpbmcubGVuZ3RoKCkp
OwotICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQo
bV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nLmNoYXJh
Y3RlcnMxNigpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICBVQ2hhciBjID0gY2hhcmFjdGVyc1tpXTsKLSAgICAgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzQVNDSUkoYykpOwotICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcihjKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbChj
b25zdCBVUkwmIGJhc2UsIFVSTFBhcnQgcGFydCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqJiBub25VVEY4UXVl
cnlFbmNvZGluZykKLXsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotCi0gICAgbV9h
c2NpaUJ1ZmZlci5jbGVhcigpOwotICAgIGNvcHlBU0NJSVN0cmluZ1VudGlsKGJhc2UubV9zdHJp
bmcsIHVybExlbmd0aFVudGlsUGFydChiYXNlLCBwYXJ0KSk7Ci0gICAgc3dpdGNoIChwYXJ0KSB7
Ci0gICAgY2FzZSBVUkxQYXJ0OjpRdWVyeUVuZDoKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9
IGJhc2UubV9xdWVyeUVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0
OjpQYXRoRW5kOgotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBiYXNlLm1fcGF0aEVuZDsKLSAg
ICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6
Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BhdGhBZnRlckxh
c3RTbGFzaDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5k
OgotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBiYXNlLm1fcG9ydExlbmd0aDsKLSAgICAg
ICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgotICAgICAgICBtX3Vy
bC5tX2hvc3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAg
Y2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IGJhc2UubV9wYXNzd29yZEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQ
YXJ0OjpVc2VyRW5kOgotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBiYXNlLm1fdXNlckVuZDsK
LSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyU3RhcnQ6Ci0gICAg
ICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gYmFzZS5tX3VzZXJTdGFydDsKLSAgICAgICAgRkFMTFRI
Uk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpTY2hlbWVFbmQ6Ci0gICAgICAgIG1fdXJsLm1faXNW
YWxpZCA9IGJhc2UubV9pc1ZhbGlkOwotICAgICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBG
YW1pbHkgPSBiYXNlLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsKLSAgICAgICAgbV91cmwubV9z
Y2hlbWVFbmQgPSBiYXNlLm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBzd2l0Y2ggKHNjaGVtZShT
dHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpLCBtX3VybC5tX3NjaGVtZUVuZCkpKSB7Ci0g
ICAgY2FzZSBTY2hlbWU6OldTOgotICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgIG5vblVU
RjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVl
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6OkZpbGU6Ci0gICAgICAgIG1fdXJs
SXNGaWxlID0gdHJ1ZTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBTY2hlbWU6OkZU
UDoKLSAgICBjYXNlIFNjaGVtZTo6R29waGVyOgotICAgIGNhc2UgU2NoZW1lOjpIVFRQOgotICAg
IGNhc2UgU2NoZW1lOjpIVFRQUzoKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6Ok5vblNwZWNpYWw6Ci0gICAgICAgIG1fdXJs
SXNTcGVjaWFsID0gZmFsc2U7Ci0gICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotc3RhdGljIGNvbnN0IGNoYXIgZG90QVNDSUlDb2RlWzJdID0geycyJywgJ2UnfTsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJz
ZXI6OmlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4gYykKLXsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCpjID09ICcuJykgewotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5
bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xh
c2hRdWVzdGlvbk9ySGFzaCgqYyk7Ci0gICAgfQotICAgIGlmICgqYyAhPSAnJScpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZp
b2xhdGlvbjo6Tm8+KGMpOwotICAgIGlmIChjLmF0RW5kKCkgfHwgKmMgIT0gZG90QVNDSUlDb2Rl
WzBdKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBS
ZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2Rl
WzFdKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9u
T3JIYXNoKCpjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNEb3Vi
bGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQotewot
ICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKmMgPT0g
Jy4nKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpOwot
ICAgIH0KLSAgICBpZiAoKmMgIT0gJyUnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2
YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBp
ZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29kZVswXSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpO
bz4oYyk7Ci0gICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkgewotICAgICAgICBhZHZhbmNl
PENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICBy
ZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6
OmNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKSk7Ci0gICAg
aWYgKCpjID09ICcuJykgewotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRF
bmQoKSkgewotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAg
ICAgICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
QVNTRVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAg
IEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAg
ICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAgICAg
ICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkgewotICAgICAgICAgICAgaWYg
KCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAqYyA9
PSAnIycpOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNEb3VibGVE
b3RQYXRoU2VnbWVudChjKSk7Ci0gICAgaWYgKCpjID09ICcuJykKLSAgICAgICAgYWR2YW5jZShj
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFu
Y2UoYyk7Ci0gICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBh
ZHZhbmNlKGMpOwotICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNv
ZGVbMV0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgIH0KLSAgICBjb25zdW1lU2luZ2xlRG90
UGF0aFNlZ21lbnQoYyk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKHVuc2ln
bmVkIG5ld1BhdGhBZnRlckxhc3RTbGFzaCkKLXsKLSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhW
aW9sYXRpb24pOwotICAgIGlmICghbV91cmxJc0ZpbGUpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgQVNTRVJUKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IG1fYXNjaWlCdWZmZXIu
c2l6ZSgpKTsKLSAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gY29tcG9uZW50VG9Qb3AoJm1f
YXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSwgJm1fYXNjaWlCdWZmZXJbMF0gKyBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCk7Ci0gICAgaWYgKG5ld1BhdGhBZnRlckxhc3RTbGFz
aCA9PSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxICYmIGlzV2luZG93
c0RyaXZlTGV0dGVyKGNvbXBvbmVudFRvUG9wKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiB0cnVlOwotfQotCi12b2lkIFVSTFBhcnNlcjo6cG9wUGF0aCgpCi17Ci0gICAgQVNT
RVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICBpZiAobV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxKSB7Ci0g
ICAgICAgIGF1dG8gbmV3UGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggLSAxOwotICAgICAgICBpZiAobV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xh
c2hdID09ICcvJykKLSAgICAgICAgICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaC0tOwotICAgICAg
ICB3aGlsZSAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwu
bV9wb3J0TGVuZ3RoICYmIG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSAhPSAn
LycpCi0gICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKLSAgICAgICAgbmV3UGF0
aEFmdGVyTGFzdFNsYXNoKys7Ci0gICAgICAgIGlmIChzaG91bGRQb3BQYXRoKG5ld1BhdGhBZnRl
ckxhc3RTbGFzaCkpCi0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG5l
d1BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICB9Ci0gICAgbV9hc2NpaUJ1ZmZlci5yZXNpemUobV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgaWYgKG1fZGlkU2VlU3lu
dGF4VmlvbGF0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kaWRTZWVTeW50YXhWaW9sYXRp
b24gPSB0cnVlOwotICAgIAotICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7Ci0g
ICAgc2l6ZV90IGNvZGVVbml0c1RvQ29weSA9IGl0ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlwZSo+KG1faW5wdXRCZWdpbikpOwotICAgIFJF
TEVBU0VfQVNTRVJUKGNvZGVVbml0c1RvQ29weSA8PSBtX2lucHV0U3RyaW5nLmxlbmd0aCgpKTsK
LSAgICBtX2FzY2lpQnVmZmVyLnJlc2VydmVDYXBhY2l0eShtX2lucHV0U3RyaW5nLmxlbmd0aCgp
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVVbml0c1RvQ29weTsgKytpKSB7Ci0g
ICAgICAgIEFTU0VSVChpc0FTQ0lJKG1faW5wdXRTdHJpbmdbaV0pKTsKLSAgICAgICAgbV9hc2Np
aUJ1ZmZlci51bmNoZWNrZWRBcHBlbmQobV9pbnB1dFN0cmluZ1tpXSk7Ci0gICAgfQotfQotCi12
b2lkIFVSTFBhcnNlcjo6ZmFpbHVyZSgpCi17Ci0gICAgbV91cmwuaW52YWxpZGF0ZSgpOwotICAg
IG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpjaGVja0xvY2FsaG9zdENvZGVQb2ludChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIFVDaGFyMzIgY29kZVBv
aW50KQotewotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8IHRvQVNDSUlMb3dlcigqaXRlcmF0
b3IpICE9IGNvZGVQb2ludCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBV
UkxQYXJzZXI6OmlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
aXRlcmF0b3IpCi17Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwg
J2wnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2Rl
UG9pbnQoaXRlcmF0b3IsICdvJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNo
ZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYycpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2EnKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRl
cmF0b3IsICdsJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxo
b3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnaCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ28nKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdz
JykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBv
aW50KGl0ZXJhdG9yLCAndCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGl0
ZXJhdG9yLmF0RW5kKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc0xvY2FsaG9zdChTdHJpbmdW
aWV3IHZpZXcpCi17Ci0gICAgaWYgKHZpZXcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBpc0F0
TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPih2aWV3LmNoYXJhY3RlcnM4KCksIHZp
ZXcuY2hhcmFjdGVyczgoKSArIHZpZXcubGVuZ3RoKCkpKTsKLSAgICByZXR1cm4gaXNBdExvY2Fs
aG9zdChDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4odmlldy5jaGFyYWN0ZXJzMTYoKSwgdmlldy5j
aGFyYWN0ZXJzMTYoKSArIHZpZXcubGVuZ3RoKCkpKTsKLX0KLQotQUxXQVlTX0lOTElORSBTdHJp
bmdWaWV3IFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXcoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVu
Z3RoKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpIHsKLSAg
ICAgICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKLSAg
ICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZlci5kYXRhKCkgKyBzdGFydCwgbGVu
Z3RoKTsKLSAgICB9Ci0gICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1faW5wdXRTdHJpbmcu
bGVuZ3RoKCkpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1faW5wdXRTdHJpbmcpLnN1YnN0cmlu
ZyhzdGFydCwgbGVuZ3RoKTsKLX0KLQotQUxXQVlTX0lOTElORSBVQ2hhciBVUkxQYXJzZXI6OnBh
cnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlvbikKLXsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRT
ZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlcltwb3NpdGlv
bl07Ci0gICAgcmV0dXJuIG1faW5wdXRTdHJpbmdbcG9zaXRpb25dOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzaXplX3QgVVJMUGFyc2VyOjpj
dXJyZW50UG9zaXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0
ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCi0g
ICAgICAgIHJldHVybiBtX2FzY2lpQnVmZmVyLnNpemUoKTsKLSAgICAKLSAgICByZXR1cm4gaXRl
cmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBDaGFyYWN0ZXJUeXBl
Kj4obV9pbnB1dEJlZ2luKSk7Ci19Ci0KLVVSTFBhcnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0cmlu
ZyYgaW5wdXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4
UXVlcnlFbmNvZGluZykKLSAgICA6IG1faW5wdXRTdHJpbmcoaW5wdXQpCi17Ci0gICAgaWYgKGlu
cHV0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiAhYmFzZS5tX2Nh
bm5vdEJlQUJhc2VVUkwpIHsKLSAgICAgICAgICAgIG1fdXJsID0gYmFzZTsKLSAgICAgICAgICAg
IG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoaW5wdXQuaXM4Qml0KCkpIHsKLSAgICAgICAgbV9pbnB1
dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFj
dGVyczgoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1dC5jaGFyYWN0ZXJzMTYoKTsK
LSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczE2KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNl
LCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX3VybC5tX2lz
VmFsaWQKLSAgICAgICAgfHwgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPT0gKG1fdXJsLnN0cmlu
ZygpICE9IGlucHV0KQotICAgICAgICB8fCAoaW5wdXQuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxp
c0MwQ29udHJvbE9yU3BhY2U+KCkKLSAgICAgICAgICAgICYmIG1fdXJsLm1fc3RyaW5nID09IGJh
c2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpKSk7Ci0gICAgQVNTRVJUKGludGVybmFs
VmFsdWVzQ29uc2lzdGVudChtX3VybCkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpZiAo
IW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSB7Ci0gICAgICAgIC8vIEZvcmNlIGEgc3ludGF4IHZp
b2xhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlIHNhbWUgcmVz
dWx0LgotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoIiAiLCBpbnB1dCksIGJh
c2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgVVJMIHBhcnNlZCA9IHBhcnNlci5y
ZXN1bHQoKTsKLSAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBBU1NF
UlQoYWxsVmFsdWVzRXF1YWwocGFyc2VyLnJlc3VsdCgpLCBtX3VybCkpOwotICAgIH0KLSNlbmRp
ZgotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6
OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqIGlucHV0LCBjb25zdCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNv
ZGluZykKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2luZyBVUkwgPCVzPiBiYXNlIDwlcz4i
LCBTdHJpbmcoaW5wdXQsIGxlbmd0aCkudXRmOCgpLmRhdGEoKSwgYmFzZS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICBtX3VybCA9IHsgfTsKLSAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5p
c0VtcHR5KCkpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBxdWVyeUJ1ZmZlcjsKLQotICAgIHVuc2ln
bmVkIGVuZEluZGV4ID0gbGVuZ3RoOwotICAgIHdoaWxlIChVTkxJS0VMWShlbmRJbmRleCAmJiBp
c0MwQ29udHJvbE9yU3BhY2UoaW5wdXRbZW5kSW5kZXggLSAxXSkpKSB7Ci0gICAgICAgIHN5bnRh
eFZpb2xhdGlvbihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihpbnB1dCwgaW5wdXQp
KTsKLSAgICAgICAgZW5kSW5kZXgtLTsKLSAgICB9Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4gYyhpbnB1dCwgaW5wdXQgKyBlbmRJbmRleCk7Ci0gICAgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gYXV0aG9yaXR5T3JIb3N0QmVnaW47Ci0gICAgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gcXVlcnlCZWdpbjsKLSAgICB3aGlsZSAoVU5MSUtFTFko
IWMuYXRFbmQoKSAmJiBpc0MwQ29udHJvbE9yU3BhY2UoKmMpKSkgewotICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7Ci0gICAgICAgICsrYzsKLSAgICB9Ci0gICAgYXV0byBiZWdpbkFmdGVyQ29u
dHJvbEFuZFNwYWNlID0gYzsKLQotICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKLSAg
ICAgICAgU2NoZW1lU3RhcnQsCi0gICAgICAgIFNjaGVtZSwKLSAgICAgICAgTm9TY2hlbWUsCi0g
ICAgICAgIFNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5LAotICAgICAgICBQYXRoT3JBdXRob3Jp
dHksCi0gICAgICAgIFJlbGF0aXZlLAotICAgICAgICBSZWxhdGl2ZVNsYXNoLAotICAgICAgICBT
cGVjaWFsQXV0aG9yaXR5U2xhc2hlcywKLSAgICAgICAgU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNs
YXNoZXMsCi0gICAgICAgIEF1dGhvcml0eU9ySG9zdCwKLSAgICAgICAgSG9zdCwKLSAgICAgICAg
RmlsZSwKLSAgICAgICAgRmlsZVNsYXNoLAotICAgICAgICBGaWxlSG9zdCwKLSAgICAgICAgUGF0
aFN0YXJ0LAotICAgICAgICBQYXRoLAotICAgICAgICBDYW5ub3RCZUFCYXNlVVJMUGF0aCwKLSAg
ICAgICAgVVRGOFF1ZXJ5LAotICAgICAgICBOb25VVEY4UXVlcnksCi0gICAgICAgIEZyYWdtZW50
LAotICAgIH07Ci0KLSNkZWZpbmUgTE9HX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJTdGF0ZSAl
cywgY29kZSBwb2ludCAlYywgcGFyc2VkIGRhdGEgPCVzPiBzaXplICV6dSIsIHgsICpjLCBwYXJz
ZWREYXRhVmlldygwLCBjdXJyZW50UG9zaXRpb24oYykpLnV0ZjgoKS5kYXRhKCksIGN1cnJlbnRQ
b3NpdGlvbihjKSkKLSNkZWZpbmUgTE9HX0ZJTkFMX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJG
aW5hbCBTdGF0ZTogJXMiLCB4KQotCi0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6U2NoZW1lU3Rh
cnQ7Ci0gICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFi
T3JOZXdsaW5lKCpjKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAg
ICAgICAgICsrYzsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAg
c3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKLSAgICAg
ICAgICAgIExPR19TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJ
QWxwaGEoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigq
YykpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAgICAg
ICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICAgICAgYyA9IGJlZ2lu
QWZ0ZXJDb250cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTY2hlbWU7Ci0gICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAg
ICAgICBMT0dfU1RBVEUoIlNjaGVtZSIpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWRTY2hlbWVD
aGFyYWN0ZXIoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBl
cigqYykpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgc2No
ZW1lRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChzY2hlbWVF
bmQgPiBVUkw6Om1heFNjaGVtZUxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBmYWlsdXJl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBzY2hlbWVFbmQ7Ci0gICAgICAgICAgICAg
ICAgU3RyaW5nVmlldyB1cmxTY2hlbWUgPSBwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVt
ZUVuZCk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAg
ICAgICAgICAgIHN3aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIFNjaGVtZTo6RmlsZToKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICBtX3VybElzRmlsZSA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6
OldTOgotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgICAgICAgICAg
ICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAg
bV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5wcm90
b2NvbElzKHVybFNjaGVtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNs
YXNoZXM7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFA6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBTY2hlbWU6OkhUVFBTOgotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Byb3RvY29s
SXNJbkhUVFBGYW1pbHkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsK
LSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RlRQOgotICAgICAgICAgICAgICAgIGNhc2Ug
U2NoZW1lOjpHb3BoZXI6Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJvdG9jb2xJcyh1cmxTY2hlbWUpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JB
dXRob3JpdHk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOwotICAgICAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgotICAgICAgICAgICAgICAgICAgICBub25VVEY4UXVl
cnlFbmNvZGluZyA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbWF5YmVTbGFz
aCA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIGFkdmFuY2UobWF5YmVTbGFzaCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghbWF5YmVTbGFzaC5hdEVuZCgpICYmICptYXliZVNsYXNoID09ICcv
JykgewotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG1heWJlU2xhc2g7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoT3JBdXRob3JpdHk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoKmMgPT0gJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrYzsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX2Nhbm5vdEJlQUJhc2VVUkwgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6Tm9TY2hlbWU7Ci0gICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250
cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgewotICAgICAg
ICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xB
bmRTcGFjZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFN0YXRlOjpOb1NjaGVtZToKLSAgICAgICAgICAgIExPR19TVEFURSgiTm9TY2hlbWUiKTsKLSAg
ICAgICAgICAgIGlmICghYmFzZS5pc1ZhbGlkKCkgfHwgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJM
ICYmICpjICE9ICcjJykpIHsKLSAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGJhc2UubV9jYW5u
b3RCZUFCYXNlVVJMICYmICpjID09ICcjJykgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0
c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7
Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghYmFzZS5w
cm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxh
dGl2ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eToKLSAgICAgICAgICAgIExP
R19TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgICAgIGlmICgq
YyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJy8n
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNo
ZXM7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKLSAg
ICAgICAgICAgIExPR19TVEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7Ci0gICAgICAgICAgICBpZiAo
KmMgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwot
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKLSAgICAgICAg
ICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2lu
ID0gYzsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNl
ZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAg
ICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICAg
ICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAg
ICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlJlbGF0
aXZlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAgICAgICBjYXNlICcvJzoK
LSAgICAgICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpS
ZWxhdGl2ZVNsYXNoOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgJz8nOgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1Vu
dGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAg
KytjOwotICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAg
ICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlICcjJzoKLSAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNV
bnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwot
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKLSAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNv
cHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24o
YykgJiYgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgIT0gJy8nKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKLSAgICAgICAgICAgIExPR19T
VEFURSgiUmVsYXRpdmVTbGFzaCIpOwotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9
PSAnXFwnKSB7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rp
bmcpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjovLyIsIDMpOwotICAg
ICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3Jp
dHlPckhvc3Q7Ci0gICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVy
eUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1faG9zdEVu
ZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpQYXRoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJT
cGVjaWFsQXV0aG9yaXR5U2xhc2hlcyIpOwotICAgICAgICAgICAgaWYgKExJS0VMWSgqYyA9PSAn
LycgfHwgKmMgPT0gJ1xcJykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0g
J1xcJykpCi0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgYWR2YW5j
ZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoTElLRUxZKCFjLmF0RW5kKCkgJiYgKCpjID09ICcv
JyB8fCAqYyA9PSAnXFwnKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpj
ID09ICdcXCcpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6
Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzIik7
Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpIHsKLSAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQ
b3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhv
c3Q7Ci0gICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0eU9y
SG9zdDoKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkF1dGhv
cml0eU9ySG9zdCIpOwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnQCcpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYXV0byBsYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICBhdXRvIGZp
bmRMYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWZpbmRMYXN0QXQuYXRF
bmQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgVVJMX1BBUlNFUl9MT0coIkZpbmRpbmcg
bGFzdCBAOiAlYyIsICpmaW5kTGFzdEF0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgq
ZmluZExhc3RBdCA9PSAnQCcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEF0ID0g
ZmluZExhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTbGFzaCA9ICpmaW5k
TGFzdEF0ID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmZpbmRMYXN0QXQgPT0gJ1xcJyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8fCAqZmluZExhc3RBdCA9PSAn
PycgfHwgKmZpbmRMYXN0QXQgPT0gJyMnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgKytmaW5kTGFzdEF0OwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBsYXN0QXQpKTsKLSAg
ICAgICAgICAgICAgICAgICAgYyA9IGxhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgYWR2YW5j
ZShjKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIb3N0OwotICAgICAgICAgICAgICAgICAg
ICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1NsYXNo
ID0gKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKTsKLSAgICAgICAg
ICAgICAgICBpZiAoaXNTbGFzaCB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChp
dGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJc1Nw
ZWNpYWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihj
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5t
X3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGgg
PSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYXV0aG9y
aXR5T3JIb3N0QmVnaW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29y
ZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFy
c2VIb3N0QW5kUG9ydChpdGVyYXRvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
YWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFp
c1NsYXNoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lh
bCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5v
bkFTQ0lJKCpjKSkKLSAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVND
SUkgPSB0cnVlOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0gd2hpbGUgKCFj
LmF0RW5kKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Okhvc3Q6
Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJIb3N0Iik7Ci0g
ICAgICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCpjID09
ICc/JyB8fCAqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJ
SSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5hdEVu
ZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAg
ICAgICAgICAgTE9HX1NUQVRFKCJGaWxlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0g
ICAgICAgICAgICBjYXNlICdcXCc6Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSAnLyc6Ci0g
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkZpbGVTbGFzaDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICc/JzoKLSAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYm
IGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQ
YXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5n
KTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOwotICAgICAg
ICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vPyIsIDQpOwotICAgICAgICAgICAgICAg
ICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVu
dFBvc2l0aW9uKGMpIC0gMjsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgJyMnOgotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKLSAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElz
KCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwg
VVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyMiLCA0KTsK
LSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24o
YykgLSAyOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3Vy
bC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OwotICAgICAgICAgICAg
ICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChi
YXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSAmJiBzaG91bGRDb3B5Rmls
ZVVSTChjKSkKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJM
UGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoIi8vLyIsIDMpOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1
cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
V2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoK
LSAgICAgICAgICAgIExPR19TVEFURSgiRmlsZVNsYXNoIik7Ci0gICAgICAgICAgICBpZiAoTElL
RUxZKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSgqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3Vy
cmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAg
ICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpGaWxlSG9zdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAg
IGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFdp
bmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7Ci0gICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0
YXJ0ICsgMTsKLSAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6Ci0gICAgICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICAgICAgICAgIGlm
IChpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wg
d2luZG93c1F1aXJrID0gdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyaykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NR
dWlyayB8fCBhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQod2luZG93c1F1aXJrIHx8IHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlv
bihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
KmMgPT0gJz8nKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIv
PyIsIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6VVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAn
IycpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8jIiwgMik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0g
MTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFw
YXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0
eU9ySG9zdEJlZ2luLCBjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNMb2NhbGhvc3QocGFyc2VkRGF0YVZp
ZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91cmwubV9wYXNz
d29yZEVuZCkpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91cmwubV9w
YXNzd29yZEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRM
ZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoU3RhcnQ7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo
aXNQZXJjZW50T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1Bl
cmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAg
ICB9IHdoaWxlICghYy5hdEVuZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFN0YXRlOjpQYXRoU3RhcnQ6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhTdGFydCIpOwot
ICAgICAgICAgICAgaWYgKCpjICE9ICcvJyAmJiAqYyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
UGF0aDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpQYXRoOgotICAg
ICAgICAgICAgTE9HX1NUQVRFKCJQYXRoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8
IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChV
TkxJS0VMWShtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoY3VycmVudFBv
c2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcv
JykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNEb3VibGVEb3RQYXRoU2VnbWVu
dChjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICAgICAgICAgICAgICBjb25zdW1lRG91YmxlRG90UGF0aFNlZ21lbnQoYyk7Ci0gICAgICAgICAg
ICAgICAgICAgIHBvcFBhdGgoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1NpbmdsZURvdFBhdGhT
ZWdtZW50KGMpKSkgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKCpjID09ICc/JykgewotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGlmIChu
b25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0g
YzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAg
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpV
VEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1dGY4
UGVyY2VudEVuY29kZTxpc0luRGVmYXVsdEVuY29kZVNldD4oYyk7Ci0gICAgICAgICAgICArK2M7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVS
TFBhdGg6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0g
ICAgICAgICAgICBpZiAoKmMgPT0gJz8nKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJz8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgaWYgKG5v
blVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBj
OwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVU
RjhRdWVyeTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAg
ICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcv
JykgewotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAg
ICAgICAgICsrYzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFN0YXRlOjpVVEY4UXVlcnk6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlVURjhRdWVyeSIp
OwotICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4oKSk7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAg
ICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVCghbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwot
ICAgICAgICAgICAgdXRmOFF1ZXJ5RW5jb2RlKGMpOwotICAgICAgICAgICAgKytjOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKLSAgICAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIk5vblVURjhRdWVyeSIpOwotICAg
ICAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KCkpOwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5
RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMp
KTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBhcHBlbmRDb2RlUG9pbnQocXVlcnlCdWZmZXIsICpjKTsKLSAgICAgICAgICAgICAgICBhZHZh
bmNlKGMsIHF1ZXJ5QmVnaW4pOwotICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAgICAg
ICAgICBVUkxfUEFSU0VSX0xPRygiU3RhdGUgRnJhZ21lbnQiKTsKLSAgICAgICAgICAgIHV0ZjhQ
ZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHN0YXRl
KSB7Ci0gICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFU
RSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgaWYgKCFjdXJyZW50UG9zaXRpb24oYykgJiYgYmFz
ZS5pc1ZhbGlkKCkgJiYgIWJhc2UubV9jYW5ub3RCZUFCYXNlVVJMKSB7Ci0gICAgICAgICAgICBt
X3VybCA9IGJhc2U7Ci0gICAgICAgICAgICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmYWlsdXJlKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAgIExPR19GSU5B
TF9TVEFURSgiU2NoZW1lIik7Ci0gICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgU3RhdGU6Ok5vU2NoZW1lOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5vU2No
ZW1lIik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2FzZSBT
dGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6Ci0gICAgICAgIExPR19GSU5BTF9TVEFU
RSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50
aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgotICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOwotICAgICAgICBBU1NFUlQobV91cmwu
bV91c2VyU3RhcnQpOwotICAgICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQgPT0gY3VycmVu
dFBvc2l0aW9uKGMpKTsKLSAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3Np
dGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0LS07Ci0gICAg
ICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwot
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsg
MTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7
Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgIExPR19G
SU5BTF9TVEFURSgiUmVsYXRpdmUiKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgotICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwg
VVJMUGFydDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgbV91
cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJs
Lm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM6Ci0gICAgICAgIExPR19G
SU5BTF9TVEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKLSAgICAgICAgbV91cmwubV91
c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BhdGhF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0
aG9yaXR5SWdub3JlU2xhc2hlczoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTcGVjaWFsQXV0
aG9yaXR5SWdub3JlU2xhc2hlcyIpOwotICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiQXV0aG9yaXR5T3JIb3N0Iik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJl
bnRQb3NpdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdp
bi5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAg
ICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICB9IGVsc2UgaWYgKCFwYXJzZUhvc3RB
bmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgZmFpbHVyZSgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1f
dXJsSXNTcGVjaWFsKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAx
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOwotICAgICAgICB9Ci0gICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBt
X3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFN0YXRlOjpIb3N0OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkhvc3QiKTsKLSAgICAg
ICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAg
ICAgICAgZmFpbHVyZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChtX3VybElzU3BlY2lhbCkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RF
bmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwu
bV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIkZpbGUiKTsKLSAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYm
IGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRp
bChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8iLCAzKTsKLSAgICAgICAgbV91cmwubV91
c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxl
U2xhc2giKTsKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICBtX3VybC5tX3Vz
ZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSArIDE7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoIi8vIiwgMik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0g
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0
ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0
OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpG
aWxlSG9zdDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICBp
ZiAodGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICYmIGlzV2luZG93c0Ry
aXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKLSAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3Jp
dHlPckhvc3RCZWdpbik7Ci0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlv
bihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
LSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0g
ICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgIGlmIChpc0xvY2FsaG9zdChwYXJz
ZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3Vy
bC5tX3Bhc3N3b3JkRW5kKSkpIHsKLSAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1f
dXJsLm1fcGFzc3dvcmRFbmQpOwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAg
ICAgfQotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3Ro
ICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgotICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIGNhc2UgU3RhdGU6OlBhdGg6Ci0gICAgICAgIExPR19GSU5BTF9TVEFU
RSgiUGF0aCIpOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7
Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRoOgotICAgICAgICBMT0df
RklOQUxfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fcGF0aEVuZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5
OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQo
cXVlcnlCZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUo
Ik5vblVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1
ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1
cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6RnJhZ21l
bnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiRnJhZ21lbnQiKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgaWYgKExJS0VMWSghbV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKSB7Ci0g
ICAgICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLSAgICAgICAgQVNTRVJUKG1f
YXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV91cmwubV9zdHJp
bmcgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUobV9hc2NpaUJ1ZmZlcikpOwotICAgIG1fdXJsLm1f
aXNWYWxpZCA9IHRydWU7Ci0gICAgVVJMX1BBUlNFUl9MT0coIlBhcnNlZCBVUkwgPCVzPiIsIG1f
dXJsLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShpdGVyYXRv
ci5hdEVuZCgpKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAg
ICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBt
X3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgYWR2YW5jZShpdGVyYXRvcikpIHsK
LSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpIHsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAgICBhdXRvIGl0ZXJh
dG9yQXRDb2xvbiA9IGl0ZXJhdG9yOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAg
ICAgIGJvb2wgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IGZhbHNlOwotICAgICAgICAgICAgd2hp
bGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRv
cikpKSB7Ci0gICAgICAgICAgICAgICAgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
IChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihpdGVyYXRvckF0Q29sb24pOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdXJsLm1fdXNl
ckVuZCA+IG1fdXJsLm1fdXNlclN0YXJ0KQotICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCdAJyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKHRhYk9yTmV3bGluZUFmdGVyQ29sb24pCi0gICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yQXRDb2xvbik7Ci0gICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCc6Jyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB1
dGY4UGVyY2VudEVuY29kZTxXZWJDb3JlOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJhdG9y
KTsKLSAgICB9Ci0gICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9y
KSkKLSAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V2ViQ29yZTo6aXNJblVzZXJJbmZvRW5jb2Rl
U2V0PihpdGVyYXRvcik7Ci0gICAgbV91cmwubV9wYXNzd29yZEVuZCA9IGN1cnJlbnRQb3NpdGlv
bihpdGVyYXRvcik7Ci0gICAgaWYgKCFtX3VybC5tX3VzZXJFbmQpCi0gICAgICAgIG1fdXJsLm1f
dXNlckVuZCA9IG1fdXJsLm1fcGFzc3dvcmRFbmQ7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
QCcpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPgotdm9pZCBV
UkxQYXJzZXI6OmFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIoVW5zaWduZWRJbnRlZ2VyVHlwZSBu
dW1iZXIpCi17Ci0gICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMg
KyAxXTsKLSAgICBMQ2hhciogZW5kID0gc3RkOjplbmQoYnVmKTsKLSAgICBMQ2hhciogcCA9IGVu
ZDsKLSAgICBkbyB7Ci0gICAgICAgICotLXAgPSAobnVtYmVyICUgMTApICsgJzAnOwotICAgICAg
ICBudW1iZXIgLz0gMTA7Ci0gICAgfSB3aGlsZSAobnVtYmVyKTsKLSAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKHAsIGVuZCAtIHApOwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NChJ
UHY0QWRkcmVzcyBhZGRyZXNzKQotewotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWlu
dDhfdD4oYWRkcmVzcyA+PiAyNCk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAg
IGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAxNik7Ci0gICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8
dWludDhfdD4oYWRkcmVzcyA+PiA4KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7Ci0g
ICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzKTsKLX0KLSAgICAK
LXN0YXRpYyBzaXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2
X3QsIDg+JiBhZGRyZXNzLCBzaXplX3QgYmVnaW4pCi17Ci0gICAgc2l6ZV90IGVuZCA9IGJlZ2lu
OwotICAgIGZvciAoOyBlbmQgPCA4OyBlbmQrKykgewotICAgICAgICBpZiAoYWRkcmVzc1tlbmRd
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBlbmQgLSBiZWdpbjsKLX0K
LQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShj
b25zdCBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKLXsKLSAgICBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbG9uZ2VzdDsKLSAgICBzaXplX3QgbG9uZ2VzdExlbmd0aCA9IDA7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyBpKyspIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IHplcm9TZXF1ZW5jZUxlbmd0aChhZGRyZXNzLCBpKTsKLSAgICAgICAgaWYgKGxlbmd0aCkgewot
ICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgKCFsb25nZXN0IHx8IGxvbmdlc3RMZW5ndGgg
PCBsZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgbG9uZ2VzdCA9IGk7Ci0gICAgICAgICAgICAg
ICAgbG9uZ2VzdExlbmd0aCA9IGxlbmd0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkg
Kz0gbGVuZ3RoOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsb25nZXN0OwotfQotCi12
b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKQotewotICAg
IGJvb2wgcHJpbnRlZCA9IGZhbHNlOwotICAgIGlmIChhdXRvIG5pYmJsZTAgPSBwaWVjZSA+PiAx
MikgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VB
U0NJSUhleERpZ2l0KG5pYmJsZTApKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQot
ICAgIGF1dG8gbmliYmxlMSA9IHBpZWNlID4+IDggJiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwg
bmliYmxlMSkgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dl
cmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTEpKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0g
ICAgfQotICAgIGF1dG8gbmliYmxlMiA9IHBpZWNlID4+IDQgJiAweEY7Ci0gICAgaWYgKHByaW50
ZWQgfHwgbmliYmxlMikKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRv
TG93ZXJjYXNlQVNDSUlIZXhEaWdpdChuaWJibGUyKSk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChwaWVjZSAmIDB4RikpOwotfQot
Ci12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NihVUkxQYXJzZXI6OklQdjZBZGRyZXNzIGFk
ZHJlc3MpCi17Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignWycpOwotICAgIGF1dG8gY29tcHJl
c3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7Ci0gICAgZm9yIChz
aXplX3QgcGllY2UgPSAwOyBwaWVjZSA8IDg7IHBpZWNlKyspIHsKLSAgICAgICAgaWYgKGNvbXBy
ZXNzUG9pbnRlciAmJiBjb21wcmVzc1BvaW50ZXIudmFsdWUoKSA9PSBwaWVjZSkgewotICAgICAg
ICAgICAgQVNTRVJUKCFhZGRyZXNzW3BpZWNlXSk7Ci0gICAgICAgICAgICBpZiAocGllY2UpCi0g
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjo6IiwgMik7Ci0gICAgICAg
ICAgICB3aGlsZSAocGllY2UgPCA4ICYmICFhZGRyZXNzW3BpZWNlXSkKLSAgICAgICAgICAgICAg
ICBwaWVjZSsrOwotICAgICAgICAgICAgaWYgKHBpZWNlID09IDgpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc2VyaWFsaXplSVB2NlBpZWNlKGFkZHJlc3NbcGll
Y2VdKTsKLSAgICAgICAgaWYgKHBpZWNlIDwgNykKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJzonKTsKLSAgICB9Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignXScpOwotfQotCi1l
bnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yIHsKLSAgICBGYWlsdXJl
LAotICAgIE92ZXJmbG93LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
LUV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gVVJM
UGFyc2VyOjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
aXRlcmF0b3IsIGJvb2wmIGRpZFNlZVN5bnRheFZpb2xhdGlvbikKLXsKLSAgICBlbnVtIGNsYXNz
IFN0YXRlIDogdWludDhfdCB7Ci0gICAgICAgIFVua25vd25CYXNlLAotICAgICAgICBEZWNpbWFs
LAotICAgICAgICBPY3RhbE9ySGV4LAotICAgICAgICBPY3RhbCwKLSAgICAgICAgSGV4LAotICAg
IH07Ci0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93bkJhc2U7Ci0gICAgQ2hlY2tlZDx1
aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsKLSAgICBpZiAoIWl0ZXJhdG9yLmF0
RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5h
dEVuZCgpKSB7Ci0gICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7Ci0gICAg
ICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgKytpdGVy
YXRvcjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICgqaXRl
cmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93ZWQo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpVbmtub3duQmFzZToK
LSAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0b3IgPT0gJzAnKSkgewotICAgICAgICAg
ICAgICAgICsraXRlcmF0b3I7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6T2N0YWxP
ckhleDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkRlY2ltYWw7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBTdGF0ZTo6T2N0YWxPckhleDoKLSAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9
IHRydWU7Ci0gICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09ICd4JyB8fCAqaXRlcmF0b3IgPT0g
J1gnKSB7Ci0gICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpIZXg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFN0YXRlOjpEZWNpbWFsOgotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQo
Kml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBp
ZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICAgICAgICAgIHZhbHVlICo9IDEwOwotICAg
ICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElL
RUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAg
KytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpPY3Rh
bDoKLSAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAgICAg
ICAgaWYgKCppdGVyYXRvciA8ICcwJyB8fCAqaXRlcmF0b3IgPiAnNycpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7
Ci0gICAgICAgICAgICB2YWx1ZSAqPSA4OwotICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9y
IC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdF
cnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpIZXg6Ci0gICAgICAgICAgICBBU1NFUlQoZGlkU2Vl
U3ludGF4VmlvbGF0aW9uKTsKLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KCppdGVy
YXRvcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBh
cnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgICAgICB2YWx1ZSAqPSAxNjsKLSAgICAgICAg
ICAgIHZhbHVlICs9IHRvQVNDSUlIZXhWYWx1ZSgqaXRlcmF0b3IpOwotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAg
ICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQot
ICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gdmFsdWUudW5z
YWZlR2V0KCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQ2NF90IHBvdzI1NihzaXpl
X3QgZXhwb25lbnQpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhwb25lbnQgPD0gNCk7Ci0gICAg
dWludDY0X3QgdmFsdWVzWzVdID0gezEsIDI1NiwgMjU2ICogMjU2LCAyNTYgKiAyNTYgKiAyNTYs
IDI1NnVsbCAqIDI1NiAqIDI1NiAqIDI1NiB9OwotICAgIHJldHVybiB2YWx1ZXNbZXhwb25lbnRd
OwotfQotCi1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvciB7Ci0gICAgRmFp
bHVyZSwKLSAgICBOb3RJUHY0LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVjdGVkPFVS
TFBhcnNlcjo6SVB2NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvcj4gVVJMUGFy
c2VyOjpwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVG
b3JTeW50YXhWaW9sYXRpb24+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uLCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBWZWN0b3I8
RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiwgND4g
aXRlbXM7Ci0gICAgYm9vbCBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSBmYWxzZTsKLSAgICBpZiAo
IWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIHdoaWxlICghaXRl
cmF0b3IuYXRFbmQoKSkgewotICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkg
ewotICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAg
ICsraXRlcmF0b3I7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoaXRlbXMuc2l6ZSgpID49IDQpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
SVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAgIGl0ZW1zLmFwcGVuZChwYXJzZUlQ
djRQaWVjZShpdGVyYXRvciwgZGlkU2VlU3ludGF4VmlvbGF0aW9uKSk7Ci0gICAgICAgIGlmICgh
aXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICArK2l0
ZXJhdG9yOwotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwot
ICAgICAgICAgICAgZWxzZSBpZiAoKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpIHx8ICFpdGVtcy5zaXplKCkgfHwg
aXRlbXMuc2l6ZSgpID4gNCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJz
aW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7
Ci0gICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBp
ZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRl
bS5lcnJvcigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCi0gICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAg
fQotICAgIGlmIChpdGVtcy5zaXplKCkgPiAxKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaXRlbXMuc2l6ZSgpIC0gMTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoaXRlbXNbaV0u
dmFsdWUoKSA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2
NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGl0ZW1z
W2l0ZW1zLnNpemUoKSAtIDFdLnZhbHVlKCkgPj0gcG93MjU2KDUgLSBpdGVtcy5zaXplKCkpKQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7
Ci0KLSAgICBpZiAoZGlkU2VlU3ludGF4VmlvbGF0aW9uKQotICAgICAgICBzeW50YXhWaW9sYXRp
b24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgZm9yIChjb25zdCBh
dXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgaWYgKGl0ZW0udmFsdWUoKSA+IDI1NSkKLSAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0
aW9uKTsKLSAgICB9Ci0KLSAgICBpZiAoVU5MSUtFTFkoaXRlbXMuc2l6ZSgpICE9IDQpKQotICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7
Ci0KLSAgICBJUHY0QWRkcmVzcyBpcHY0ID0gaXRlbXMudGFrZUxhc3QoKS52YWx1ZSgpOwotICAg
IGZvciAoc2l6ZV90IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgaXRlbXMuc2l6ZSgpOyArK2NvdW50
ZXIpCi0gICAgICAgIGlwdjQgKz0gaXRlbXNbY291bnRlcl0udmFsdWUoKSAqIHBvdzI1NigzIC0g
Y291bnRlcik7Ci0gICAgcmV0dXJuIGlwdjQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1zdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBp
ZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3Ip
Ci17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgdWludDMyX3QgcGllY2UgPSAwOwotICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFs
c2U7Ci0gICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOwotICAgIHdoaWxlICghaXRlcmF0b3IuYXRF
bmQoKSkgewotICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgKytkaWdpdENvdW50OwotICAgICAgICBp
ZiAoIXBpZWNlICYmICppdGVyYXRvciA9PSAnMCcpIHsKLSAgICAgICAgICAgIGlmIChsZWFkaW5n
WmVyb3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAg
IGxlYWRpbmdaZXJvcyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwaWVjZSAmJiAq
aXRlcmF0b3IgPT0gJzAnKQotICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAg
ICAgcGllY2UgPSBwaWVjZSAqIDEwICsgKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICBpZiAocGll
Y2UgPiAyNTUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZh
bmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsK
LSAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgaWYgKCppdGVyYXRvciA9PSAnLicpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
aWYgKHBpZWNlICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICByZXR1cm4gcGllY2U7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Ci1zdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJ
UHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRl
cmF0b3IpCi17Ci0gICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9IDA7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IHBpZWNlID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKLSAgICAgICAgICAg
IGFkZHJlc3MgPSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZhbHVlKCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmIChpIDwgMykgewot
ICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4nKQotICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICBhZHZhbmNlPENoYXJh
Y3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAgICAg
fSBlbHNlIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgfQotICAgIEFTU0VSVChpdGVyYXRvci5hdEVuZCgpKTsKLSAgICByZXR1cm4g
YWRkcmVzczsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0ZDo6b3B0
aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCi17Ci0gICAgQVNTRVJUKCpjID09ICdb
Jyk7Ci0gICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBjOwotICAgIGFkdmFuY2UoYywgaG9zdEJl
Z2luKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
Ci0gICAgSVB2NkFkZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19Owot
ICAgIHNpemVfdCBwaWVjZVBvaW50ZXIgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBj
b21wcmVzc1BvaW50ZXI7Ci0KLSAgICBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgIGFkdmFuY2Uo
YywgaG9zdEJlZ2luKTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICgqYyAhPSAnOicpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7Ci0gICAgICAg
ICsrcGllY2VQb2ludGVyOwotICAgICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7
Ci0gICAgfQotICAgIAotICAgIHdoaWxlICghYy5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChwaWVj
ZVBvaW50ZXIgPT0gOCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IGlmICgqYyA9PSAnOicpIHsKLSAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGFkdmFuY2UoYywg
aG9zdEJlZ2luKTsKLSAgICAgICAgICAgICsrcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29t
cHJlc3NQb2ludGVyID0gcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50ZXIg
JiYgcGllY2VQb2ludGVyIDwgNikpIHsKLSAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPElQ
djRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPT0g
NSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICBhZGRyZXNz
W3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgPj4gMTY7Ci0gICAgICAgICAg
ICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpICYgMHhG
RkZGOwotICAgICAgICAgICAgICAgIGMgPSB7IH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdWludDE2X3QgdmFsdWUgPSAwOwotICAg
ICAgICBzaXplX3QgbGVuZ3RoID0gMDsKLSAgICAgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxz
ZTsKLSAgICAgICAgZm9yICg7IGxlbmd0aCA8IDQ7IGxlbmd0aCsrKSB7Ci0gICAgICAgICAgICBp
ZiAoYy5hdEVuZCgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKCFp
c0FTQ0lJSGV4RGlnaXQoKmMpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
aWYgKGlzQVNDSUlVcHBlcigqYykpCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhv
c3RCZWdpbik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJzAnICYmICFsZW5ndGgpCi0gICAgICAg
ICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUg
KiAweDEwICsgdG9BU0NJSUhleFZhbHVlKCpjKTsKLSAgICAgICAgICAgIGFkdmFuY2UoYywgaG9z
dEJlZ2luKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKFVOTElLRUxZKCh2YWx1
ZSAmJiBsZWFkaW5nWmVyb3MpIHx8ICghdmFsdWUgJiYgbGVuZ3RoID4gMSkpKQotICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAgICAgYWRkcmVzc1twaWVjZVBv
aW50ZXIrK10gPSB2YWx1ZTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDggfHwgKmMgIT0gJzonKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4p
OwotICAgIH0KLSAgICAKLSAgICBpZiAoIWMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAKLSAgICBpZiAoY29tcHJlc3NQb2ludGVyKSB7Ci0gICAgICAgIHNpemVf
dCBzd2FwcyA9IHBpZWNlUG9pbnRlciAtIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpOwotICAgICAg
ICBwaWVjZVBvaW50ZXIgPSA3OwotICAgICAgICB3aGlsZSAoc3dhcHMpCi0gICAgICAgICAgICBz
dGQ6OnN3YXAoYWRkcmVzc1twaWVjZVBvaW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2ludGVy
LnZhbHVlKCkgKyBzd2Fwcy0tIC0gMV0pOwotICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9
IDgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gcG9zc2libGVDb21wcmVzc1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShh
ZGRyZXNzKTsKLSAgICBpZiAocG9zc2libGVDb21wcmVzc1BvaW50ZXIpCi0gICAgICAgIHBvc3Np
YmxlQ29tcHJlc3NQb2ludGVyLnZhbHVlKCkrKzsKLSAgICBpZiAoVU5MSUtFTFkoY29tcHJlc3NQ
b2ludGVyICE9IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKSkKLSAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGhvc3RCZWdpbik7Ci0gICAgCi0gICAgcmV0dXJuIGFkZHJlc3M7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1VUkxQYXJzZXI6OkxDaGFyQnVmZmVyIFVSTFBhcnNl
cjo6cGVyY2VudERlY29kZShjb25zdCBMQ2hhciogaW5wdXQsIHNpemVfdCBsZW5ndGgsIGNvbnN0
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xh
dGlvblBvc2l0aW9uKQotewotICAgIExDaGFyQnVmZmVyIG91dHB1dDsKLSAgICBvdXRwdXQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07Ci0g
ICAgICAgIGlmIChieXRlICE9ICclJykKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBl
bmQoYnl0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIp
IHsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FT
Q0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICAgICAgICAgICAg
ICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlu
cHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9
Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLSAgICAKLVVSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJM
UGFyc2VyOjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkK
LXsKLSAgICBMQ2hhckJ1ZmZlciBvdXRwdXQ7Ci0gICAgb3V0cHV0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobGVuZ3RoKTsKLSAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGlucHV0W2ldOwotICAgICAgICBpZiAoYnl0
ZSAhPSAnJScpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOwotICAg
ICAgICBlbHNlIGlmIChsZW5ndGggPiAyICYmIGkgPCBsZW5ndGggLSAyKSB7Ci0gICAgICAgICAg
ICBpZiAoaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkgJiYgaXNBU0NJSUhleERpZ2l0KGlu
cHV0W2kgKyAyXSkpIHsKLSAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRv
QVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAgICAgICAgICAg
ICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG91dHB1dC51
bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0
LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6
OkxDaGFyQnVmZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWlu
LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50
YXhWaW9sYXRpb25Qb3NpdGlvbikKLXsKLSAgICBMQ2hhckJ1ZmZlciBhc2NpaTsKLSAgICBpZiAo
ZG9tYWluLmlzQWxsQVNDSUkoKSkgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gZG9tYWluLmxl
bmd0aCgpOwotICAgICAgICBpZiAoZG9tYWluLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25z
dCBMQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAg
YXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQotICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAg
ICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJz
W2ldKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25z
dCBVQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAg
IGFzY2lpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkKLSAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAg
ICAgICAgICAgICAgIGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJTG93ZXIoY2hhcmFjdGVy
c1tpXSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhc2NpaTsK
LSAgICB9Ci0gICAgCi0gICAgY29uc3Qgc2l6ZV90IG1heERvbWFpbkxlbmd0aCA9IDY0OwotICAg
IFVDaGFyIGhvc3RuYW1lQnVmZmVyW21heERvbWFpbkxlbmd0aF07Ci0gICAgVUVycm9yQ29kZSBl
cnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBV
SUROQV9JTkZPX0lOSVRJQUxJWkVSOwotICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRl
ZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIo
KSwgU3RyaW5nVmlldyhkb21haW4pLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBkb21haW4ubGVu
Z3RoKCksIGhvc3RuYW1lQnVmZmVyLCBtYXhEb21haW5MZW5ndGgsICZwcm9jZXNzaW5nRGV0YWls
cywgJmVycm9yKTsKLSAgICBBU1NFUlQobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA8PSBzdGF0aWNf
Y2FzdDxpbnQzMl90PihtYXhEb21haW5MZW5ndGgpKTsKLQotICAgIGlmIChVX1NVQ0NFU1MoZXJy
b3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKLSAgICAgICAgZm9yIChpbnQzMl90
IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsgKytpKSB7Ci0gICAgICAgICAgICBB
U1NFUlQoaXNBU0NJSShob3N0bmFtZUJ1ZmZlcltpXSkpOwotICAgICAgICAgICAgQVNTRVJUKCFp
c0FTQ0lJVXBwZXIoaG9zdG5hbWVCdWZmZXJbaV0pKTsKLSAgICAgICAgfQotICAgICAgICBhc2Np
aS5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAg
ICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcoYXNjaWkuZGF0YSgpLCBhc2NpaS5zaXplKCkpKQot
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9z
aXRpb24pOwotICAgICAgICByZXR1cm4gYXNjaWk7Ci0gICAgfQotICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNv
bnN0IFVSTFBhcnNlcjo6TENoYXJCdWZmZXImIGFzY2lpRG9tYWluKQotewotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXNjaWlEb21haW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGlz
Rm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbltpXSkpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCppdGVyYXRvciA9
PSAnOicpOwotICAgIGF1dG8gY29sb25JdGVyYXRvciA9IGl0ZXJhdG9yOwotICAgIGFkdmFuY2Uo
aXRlcmF0b3IsIGNvbG9uSXRlcmF0b3IpOwotICAgIHVpbnQzMl90IHBvcnQgPSAwOwotICAgIGlm
IChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICB1bnNpZ25lZCBwb3J0TGVu
Z3RoID0gY3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7
Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIHNpemVfdCBkaWdpdENvdW50ID0gMDsKLSAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNl
OwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBp
ZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkgewotICAgICAgICAg
ICAgaWYgKCppdGVyYXRvciA9PSAnMCcgJiYgIWRpZ2l0Q291bnQpCi0gICAgICAgICAgICAgICAg
bGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgICsrZGlnaXRDb3VudDsKLSAgICAgICAg
ICAgIHBvcnQgPSBwb3J0ICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7Ci0gICAgICAgICAgICBpZiAo
cG9ydCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIGlmIChwb3J0ICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgIAotICAgIGlmICghcG9ydCAmJiBkaWdp
dENvdW50ID4gMSkKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotCi0g
ICAgQVNTRVJUKHBvcnQgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKLSAgICBpZiAo
VU5MSUtFTFkoZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwYXJzZWREYXRhVmlldygwLCBtX3VybC5t
X3NjaGVtZUVuZCkpID09IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSkpCi0gICAgICAgIHN5
bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICBlbHNlIHsKLSAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICBBU1NFUlQocG9ydCA8PSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOwotICAgICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVm
ZmVyPHVpbnQxNl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOwotICAgIH0KLQotICAg
IHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwu
bV9ob3N0RW5kOwotICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0
TGVuZ3RoKTsKLSAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwotICAgIHJldHVy
biB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQ
YXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
aXRlcmF0b3IpCi17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICgqaXRlcmF0b3IgPT0gJ1snKSB7Ci0gICAgICAgIGF1dG8gaXB2NkVuZCA9IGl0ZXJh
dG9yOwotICAgICAgICB3aGlsZSAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCAhPSAnXScp
Ci0gICAgICAgICAgICArK2lwdjZFbmQ7Ci0gICAgICAgIGlmIChpcHY2RW5kLmF0RW5kKCkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBwYXJz
ZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGl0ZXJhdG9yLCBpcHY2
RW5kKSkpIHsKLSAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjYoYWRkcmVzcy52YWx1ZSgpKTsKLSAg
ICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgYWR2YW5j
ZShpcHY2RW5kKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2
NkVuZCA9PSAnOicpIHsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3Vy
cmVudFBvc2l0aW9uKGlwdjZFbmQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VQ
b3J0KGlwdjZFbmQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXB2NkVuZCk7Ci0gICAgICAgICAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihp
cHY2RW5kKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdXJsSXNTcGVjaWFsKSB7Ci0gICAgICAg
IGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRm9yYmlkZGVuSG9zdENv
ZGVQb2ludCgqaXRlcmF0b3IpICYmICppdGVyYXRvciAhPSAnJScpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVF
bmNvZGVTZXQ+KGl0ZXJhdG9yKTsKLSAgICAgICAgfQotICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQo
KSkgewotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3Ip
OwotICAgIH0KLSAgICAKLSAgICBpZiAoTElLRUxZKCFtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJ
SSkpIHsKLSAgICAgICAgYXV0byBob3N0SXRlcmF0b3IgPSBpdGVyYXRvcjsKLSAgICAgICAgZm9y
ICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBpZiAoaXNU
YWJPck5ld2xpbmUoKml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGFkZHJlc3Mg
PSBwYXJzZUlQdjRIb3N0KGhvc3RJdGVyYXRvciwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4oaG9zdEl0ZXJhdG9yLCBpdGVyYXRvcikpOwotICAgICAgICBpZiAoYWRkcmVzcykgewot
ICAgICAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOwotICAgICAgICAgICAg
bV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAg
IGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZm9yICg7IGhvc3RJdGVyYXRvciAhPSBpdGVy
YXRvcjsgKytob3N0SXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9y
TmV3bGluZSgqaG9zdEl0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oaG9zdEl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoKmhvc3RJdGVyYXRvcikp
KQotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0SXRlcmF0b3IpOwotICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmhvc3RJdGVyYXRvcikpOwot
ICAgICAgICB9Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVy
YXRvcik7Ci0gICAgICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gcGFyc2VQb3J0KGhvc3RJdGVyYXRvcik7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRMZW5n
dGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAg
ICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICAKLSAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGl0ZXJhdG9yOwotICAg
IAotICAgIExDaGFyQnVmZmVyIHV0ZjhFbmNvZGVkOwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRF
bmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUo
Kml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCppdGVyYXRvciA9
PSAnOicpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJ
KCppdGVyYXRvcikpKQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0K
LSAgICAgICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUigqaXRlcmF0b3IpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKLSAg
ICAgICAgaW50MzJfdCBvZmZzZXQgPSAwOwotICAgICAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZl
ciwgb2Zmc2V0LCAqaXRlcmF0b3IpOwotICAgICAgICB1dGY4RW5jb2RlZC5hcHBlbmQoYnVmZmVy
LCBvZmZzZXQpOwotICAgIH0KLSAgICBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlZCA9IHBlcmNl
bnREZWNvZGUodXRmOEVuY29kZWQuZGF0YSgpLCB1dGY4RW5jb2RlZC5zaXplKCksIGhvc3RCZWdp
bik7Ci0gICAgU3RyaW5nIGRvbWFpbiA9IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQu
ZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotICAgIGlmIChkb21haW4uaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcocGVy
Y2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpKQotICAgICAgICBzeW50
YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICBhdXRvIGFzY2lpRG9tYWluID0gZG9tYWluVG9B
U0NJSSgqZG9tYWluLmltcGwoKSwgaG9zdEJlZ2luKTsKLSAgICBpZiAoIWFzY2lpRG9tYWluIHx8
IGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlEb21haW4udmFsdWUoKSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW5WYWx1ZSA9IGFzY2lp
RG9tYWluLnZhbHVlKCk7Ci0gICAgY29uc3QgTENoYXIqIGFzY2lpRG9tYWluQ2hhcmFjdGVycyA9
IGFzY2lpRG9tYWluVmFsdWUuZGF0YSgpOwotCi0gICAgYXV0byBhZGRyZXNzID0gcGFyc2VJUHY0
SG9zdChob3N0QmVnaW4sIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPihhc2NpaURvbWFpblZhbHVl
LmJlZ2luKCksIGFzY2lpRG9tYWluVmFsdWUuZW5kKCkpKTsKLSAgICBpZiAoYWRkcmVzcykgewot
ICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7Ci0gICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmIChpdGVyYXRv
ci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChp
dGVyYXRvcik7Ci0gICAgfQotICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdF
cnJvcjo6RmFpbHVyZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcihhc2NpaURvbWFpbkNoYXJhY3RlcnMsIGFzY2lpRG9tYWluVmFsdWUuc2l6ZSgpKTsK
LSAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgIGlm
ICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7
Ci0gICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlu
cHV0KQotewotICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7Ci0g
ICAgaWYgKHV0ZjguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
YXV0byBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkp
OwotfQotCi0vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsZW5jb2Rl
ZC1wYXJzZXIKLWF1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcg
aW5wdXQpIC0+IFVSTEVuY29kZWRGb3JtCi17Ci0gICAgVVJMRW5jb2RlZEZvcm0gb3V0cHV0Owot
ICAgIGZvciAoU3RyaW5nVmlldyBieXRlcyA6IGlucHV0LnNwbGl0KCcmJykpIHsKLSAgICAgICAg
YXV0byBlcXVhbEluZGV4ID0gYnl0ZXMuZmluZCgnPScpOwotICAgICAgICBpZiAoZXF1YWxJbmRl
eCA9PSBub3RGb3VuZCkgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShi
eXRlcy50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFt
ZSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0eVN0
cmluZygpIH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9y
bVVSTERlY29kZShieXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBs
YWNlKCcrJywgMHgyMCkpOwotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGZvcm1VUkxEZWNvZGUo
Ynl0ZXMuc3Vic3RyaW5nKGVxdWFsSW5kZXggKyAxKS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAw
eDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSkKLSAgICAgICAgICAgICAgICBv
dXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52YWx1ZSgpIH0pOwotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiBvdXRwdXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHNlcmlhbGl6ZVVS
TEVuY29kZWRGb3JtKGNvbnN0IFN0cmluZyYgaW5wdXQsIFZlY3RvcjxMQ2hhcj4mIG91dHB1dCkK
LXsKLSAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOwotICAgIGNv
bnN0IGNoYXIqIGRhdGEgPSB1dGY4LmRhdGEoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHV0ZjgubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBjb25zdCBjaGFyIGJ5dGUgPSBkYXRhW2ld
OwotICAgICAgICBpZiAoYnl0ZSA9PSAweDIwKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgw
eDJCKTsKLSAgICAgICAgZWxzZSBpZiAoYnl0ZSA9PSAweDJBCi0gICAgICAgICAgICB8fCBieXRl
ID09IDB4MkQKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgyRQotICAgICAgICAgICAgfHwgKGJ5
dGUgPj0gMHgzMCAmJiBieXRlIDw9IDB4MzkpCi0gICAgICAgICAgICB8fCAoYnl0ZSA+PSAweDQx
ICYmIGJ5dGUgPD0gMHg1QSkKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHg1RgotICAgICAgICAg
ICAgfHwgKGJ5dGUgPj0gMHg2MSAmJiBieXRlIDw9IDB4N0EpKSAvLyBGSVhNRTogUHV0IHRoZXNl
IGluIHRoZSBjaGFyYWN0ZXJDbGFzc1RhYmxlIHRvIGF2b2lkIGJyYW5jaGVzLgotICAgICAgICAg
ICAgb3V0cHV0LmFwcGVuZChieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcGVyY2Vu
dEVuY29kZUJ5dGUoYnl0ZSwgb3V0cHV0KTsKLSAgICB9Ci19Ci0gICAgCi1TdHJpbmcgVVJMUGFy
c2VyOjpzZXJpYWxpemUoY29uc3QgVVJMRW5jb2RlZEZvcm0mIHR1cGxlcykKLXsKLSAgICBpZiAo
dHVwbGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3RvcjxMQ2hh
cj4gb3V0cHV0OwotICAgIGZvciAoYXV0byYgdHVwbGUgOiB0dXBsZXMpIHsKLSAgICAgICAgaWYg
KCFvdXRwdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgnJicpOwotICAg
ICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS5rZXksIG91dHB1dCk7Ci0gICAgICAg
IG91dHB1dC5hcHBlbmQoJz0nKTsKLSAgICAgICAgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0odHVw
bGUudmFsdWUsIG91dHB1dCk7Ci0gICAgfQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1v
dmUob3V0cHV0KSk7Ci19Ci0KLWNvbnN0IFVJRE5BJiBVUkxQYXJzZXI6OmludGVybmF0aW9uYWxE
b21haW5OYW1lVHJhbnNjb2RlcigpCi17Ci0gICAgc3RhdGljIFVJRE5BKiBlbmNvZGVyOwotICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10gewotICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAg
ICAgICAvLyBXYXJuaW5nOiBQbGVhc2UgY29udGFjdCBhIFdlYktpdEdUSysgZGV2ZWxvcGVyIGlm
IGNoYW5naW5nIHRoZXNlIGZsYWdzLgotICAgICAgICAvLyBUaGV5IHNob3VsZCBiZSBzeW5jZWQg
d2l0aCBlcGh5X3VyaV9kZWNvZGUoKSBpbiBlcGh5LXVyaS1oZWxwZXJzLmMuCi0gICAgICAgIGVu
Y29kZXIgPSB1aWRuYV9vcGVuVVRTNDYoVUlETkFfQ0hFQ0tfQklESSB8IFVJRE5BX0NIRUNLX0NP
TlRFWFRKIHwgVUlETkFfTk9OVFJBTlNJVElPTkFMX1RPX1VOSUNPREUgfCBVSUROQV9OT05UUkFO
U0lUSU9OQUxfVE9fQVNDSUksICZlcnJvcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFVfU1VD
Q0VTUyhlcnJvcikpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmNvZGVyKTsKLSAgICB9KTsK
LSAgICByZXR1cm4gKmVuY29kZXI7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVh
bChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiJWQg
JWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVk
ICVkICVkICVkICVkICVkICVzIiwKLSAgICAgICAgYS5tX2lzVmFsaWQsCi0gICAgICAgIGEubV9j
YW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKLSAg
ICAgICAgYS5tX3NjaGVtZUVuZCwKLSAgICAgICAgYS5tX3VzZXJTdGFydCwKLSAgICAgICAgYS5t
X3VzZXJFbmQsCi0gICAgICAgIGEubV9wYXNzd29yZEVuZCwKLSAgICAgICAgYS5tX2hvc3RFbmQs
Ci0gICAgICAgIGEubV9ob3N0RW5kICsgYS5tX3BvcnRMZW5ndGgsCi0gICAgICAgIGEubV9wYXRo
QWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGEubV9wYXRoRW5kLAotICAgICAgICBhLm1fcXVlcnlF
bmQsCi0gICAgICAgIGEubV9zdHJpbmcudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgYi5tX2lzVmFs
aWQsCi0gICAgICAgIGIubV9jYW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBiLm1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSwKLSAgICAgICAgYi5tX3NjaGVtZUVuZCwKLSAgICAgICAgYi5tX3VzZXJT
dGFydCwKLSAgICAgICAgYi5tX3VzZXJFbmQsCi0gICAgICAgIGIubV9wYXNzd29yZEVuZCwKLSAg
ICAgICAgYi5tX2hvc3RFbmQsCi0gICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5ndGgs
Ci0gICAgICAgIGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGIubV9wYXRoRW5kLAot
ICAgICAgICBiLm1fcXVlcnlFbmQsCi0gICAgICAgIGIubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7
Ci0KLSAgICByZXR1cm4gYS5tX3N0cmluZyA9PSBiLm1fc3RyaW5nCi0gICAgICAgICYmIGEubV9p
c1ZhbGlkID09IGIubV9pc1ZhbGlkCi0gICAgICAgICYmIGEubV9jYW5ub3RCZUFCYXNlVVJMID09
IGIubV9jYW5ub3RCZUFCYXNlVVJMCi0gICAgICAgICYmIGEubV9wcm90b2NvbElzSW5IVFRQRmFt
aWx5ID09IGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5Ci0gICAgICAgICYmIGEubV9zY2hlbWVF
bmQgPT0gYi5tX3NjaGVtZUVuZAotICAgICAgICAmJiBhLm1fdXNlclN0YXJ0ID09IGIubV91c2Vy
U3RhcnQKLSAgICAgICAgJiYgYS5tX3VzZXJFbmQgPT0gYi5tX3VzZXJFbmQKLSAgICAgICAgJiYg
YS5tX3Bhc3N3b3JkRW5kID09IGIubV9wYXNzd29yZEVuZAotICAgICAgICAmJiBhLm1faG9zdEVu
ZCA9PSBiLm1faG9zdEVuZAotICAgICAgICAmJiBhLm1fcG9ydExlbmd0aCA9PSBiLm1fcG9ydExl
bmd0aAotICAgICAgICAmJiBhLm1fcGF0aEFmdGVyTGFzdFNsYXNoID09IGIubV9wYXRoQWZ0ZXJM
YXN0U2xhc2gKLSAgICAgICAgJiYgYS5tX3BhdGhFbmQgPT0gYi5tX3BhdGhFbmQKLSAgICAgICAg
JiYgYS5tX3F1ZXJ5RW5kID09IGIubV9xdWVyeUVuZDsKLX0KLQotYm9vbCBVUkxQYXJzZXI6Omlu
dGVybmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gdXJs
Lm1fc2NoZW1lRW5kIDw9IHVybC5tX3VzZXJTdGFydAotICAgICAgICAmJiB1cmwubV91c2VyU3Rh
cnQgPD0gdXJsLm1fdXNlckVuZAotICAgICAgICAmJiB1cmwubV91c2VyRW5kIDw9IHVybC5tX3Bh
c3N3b3JkRW5kCi0gICAgICAgICYmIHVybC5tX3Bhc3N3b3JkRW5kIDw9IHVybC5tX2hvc3RFbmQK
LSAgICAgICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGggPD0gdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoCi0gICAgICAgICYmIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSB1
cmwubV9wYXRoRW5kCi0gICAgICAgICYmIHVybC5tX3BhdGhFbmQgPD0gdXJsLm1fcXVlcnlFbmQK
LSAgICAgICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1fc3RyaW5nLmxlbmd0aCgpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjViZWIwMjRjOTgwMzIyYTZlMDUzOWE1YmZl
ODQ3YWU5MTBjZmFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KLQotc3RydWN0IFVJRE5BOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQb2ludEl0ZXJhdG9yOwotCi1jbGFz
cyBVUkxQYXJzZXIgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFVSTFBhcnNlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVs
bHB0cik7Ci0gICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpbnRlcm5hbFZhbHVlc0NvbnNpc3Rl
bnQoY29uc3QgVVJMJik7Ci0gICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBTdHJpbmc+PiBVUkxFbmNvZGVkRm9ybTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgVVJMRW5jb2RlZEZvcm0gcGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KTsKLSAg
ICBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYpOwotCi0gICAg
c3RhdGljIGNvbnN0IFVJRE5BJiBpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsK
LSAgICBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIpOwotCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2No
ZW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1h
eWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLQotcHJpdmF0ZToK
LSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bChTdHJpbmdWaWV3KTsKLSAgICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVs
dFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKLQotICAgIFVSTCBtX3VybDsKLSAgICBWZWN0
b3I8TENoYXI+IG1fYXNjaWlCdWZmZXI7Ci0gICAgYm9vbCBtX3VybElzU3BlY2lhbCB7IGZhbHNl
IH07Ci0gICAgYm9vbCBtX3VybElzRmlsZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hvc3RIYXNQ
ZXJjZW50T3JOb25BU0NJSSB7IGZhbHNlIH07Ci0gICAgU3RyaW5nIG1faW5wdXRTdHJpbmc7Ci0g
ICAgY29uc3Qgdm9pZCogbV9pbnB1dEJlZ2luIHsgbnVsbHB0ciB9OwotCi0gICAgYm9vbCBtX2Rp
ZFNlZVN5bnRheFZpb2xhdGlvbiB7IGZhbHNlIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgZGVmYXVsdElubGluZUJ1ZmZlclNpemUgPSAyMDQ4OwotICAgIHVzaW5nIExDaGFyQnVmZmVy
ID0gVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT47Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUq
LCBjb25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTFRleHRFbmNvZGlu
ZyopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2VBdXRo
b3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gYm9vbCBwYXJzZVBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLQot
ICAgIHZvaWQgZmFpbHVyZSgpOwotICAgIGVudW0gY2xhc3MgUmVwb3J0U3ludGF4VmlvbGF0aW9u
IHsgTm8sIFllcyB9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9y
dFN5bnRheFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9s
YXRpb246Olllcz4KLSAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGl0ZXJhdG9yKSB7IGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgcmVwb3J0U3ludGF4Vmlv
bGF0aW9uPihpdGVyYXRvciwgaXRlcmF0b3IpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uID0gUmVwb3J0U3ludGF4VmlvbGF0aW9u
OjpZZXM+Ci0gICAgdm9pZCBhZHZhbmNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
JiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3lu
dGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGJvb2wgdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHN5
bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNQZXJjZW50RW5jb2Rl
ZERvdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gYm9vbCBpc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlz
RG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgc2hvdWxkQ29weUZpbGVV
UkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGJvb2wgY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBVQ2hhcjMyKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4pOwotICAgIGJvb2wgaXNMb2NhbGhvc3QoU3RyaW5nVmlldyk7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb25zdW1lU2luZ2xlRG90UGF0aFNl
Z21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc2l6ZV90IGN1cnJlbnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+
IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlKTsKLSAg
ICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lk
IHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYp
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8TENo
YXJCdWZmZXI+IGRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYsIGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBMQ2hhckJ1ZmZlciBwZXJjZW50
RGVjb2RlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgc3Rh
dGljIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QpOwotICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlu
cHV0KTsKLSAgICBzdGF0aWMgYm9vbCBoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IExD
aGFyQnVmZmVyJik7Ci0gICAgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90KTsKLSAgICB2
b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoVUNoYXIzMik7Ci0gICAgdm9pZCBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IHNpemUpIHsgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFyYWN0ZXJzKSwgc2l6ZSk7IH0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGVuY29kZU5vblVURjhR
dWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYs
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB2b2lkIGNvcHlBU0NJSVN0
cmluZ1VudGlsKGNvbnN0IFN0cmluZyYsIHNpemVfdCBsZW5ndGgpOwotICAgIGJvb2wgY29weUJh
c2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJik7Ci0gICAgU3RyaW5nVmlldyBwYXJzZWRE
YXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpOwotICAgIFVDaGFyIHBhcnNlZERh
dGFWaWV3KHNpemVfdCBwb3NpdGlvbik7Ci0KLSAgICB1c2luZyBJUHY0QWRkcmVzcyA9IHVpbnQz
Ml90OwotICAgIHZvaWQgc2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyk7Ci0gICAgZW51bSBjbGFz
cyBJUHY0UGFyc2luZ0Vycm9yOwotICAgIGVudW0gY2xhc3MgSVB2NFBpZWNlUGFyc2luZ0Vycm9y
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24s
IHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPElQdjRBZGRyZXNzLCBJUHY0UGFyc2lu
Z0Vycm9yPiBwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGVGb3JTeW50YXhWaW9sYXRpb24+JiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4p
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPHVpbnQzMl90
LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gcGFyc2VJUHY0UGllY2UoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBib29sJiBzeW50YXhWaW9sYXRpb24pOwotICAg
IHVzaW5nIElQdjZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFy
c2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJ
UHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRk
cmVzcz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4pOwotICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsK
LSAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOwotCi0gICAgZW51bSBjbGFzcyBV
UkxQYXJ0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29weVVS
TFBhcnRzVW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyomKTsKLSAgICBzdGF0
aWMgc2l6ZV90IHVybExlbmd0aFVudGlsUGFydChjb25zdCBVUkwmLCBVUkxQYXJ0KTsKLSAgICB2
b2lkIHBvcFBhdGgoKTsKLSAgICBib29sIHNob3VsZFBvcFBhdGgodW5zaWduZWQpOwotfTsKLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAppbmRleCA0MTgxZWMxM2JmZjhmNGUyYWE4
Mjk1ZTFiZmI3ZWZlNTllZDA4MWUzLi5jMzQ0ODQ4NmVlN2MyYWVhY2FhZWJlYmY1YTBlYjcxODNk
YzZlZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzYsNyArMzYsNiBA
QCBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25O
YW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYQogU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25G
b3JVc2VyQWdlbnRTdHJpbmcoKTsKIFN0cmluZyB1c2VyQWdlbnRCdW5kbGVWZXJzaW9uKCk7CiAj
ZWxzZQotY2xhc3MgVVJMOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdl
bnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBlbXB0eVN0cmluZygpLCBjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCkpOwogV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKaW5kZXggMjMyZTVjZTU3ZGIwNWRi
MzhiNDlkZDljMDIxYTFiYzk5YzAzODVjYi4uNDliNTg5MjBhN2FlYjc3MzJkNjU3MzI3NTU5MzQ3
N2ExODZiMGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50
UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3Mu
Y3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiVXNlckFnZW50UXVpcmtzLmgiCiAKICNp
bmNsdWRlICJQdWJsaWNTdWZmaXguaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnRRdWlya3MuaAppbmRleCBiZjEwY2UyMzJkOTFkNDMxYmNiNmQ0YTcxYTUxZGQ0ZGRl
OGZiODhhLi5kYzc3ZDRlODUwZWY5MDlkNGIwMDU2ZDdjOWE3ZTFhZDQ1ZmRkOGVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaApAQCAtMzAsOCArMzAsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgVXNlckFnZW50UXVp
cmtzIHsKIHB1YmxpYzoKICAgICBlbnVtIFVzZXJBZ2VudFF1aXJrIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzNiNDNiYzdhMDdiODBhZTRiYWEzNWZkYjczMzVhYzNiYTc2NDQxNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9DRlVSTEV4dHJhcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0K
LSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCi17Ci0g
ICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2Vk
IHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKLSAg
ICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBp
cyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgLy8g
Y291bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVu
dCBlbmNvZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjawotICAgIC8vIG9udG8g
dXNpbmcgSVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCi0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgsIGJhc2VVUkwsIHRydWUpKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0
ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRp
bjEsIGJhc2VVUkwsIHRydWUpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIGdldFVS
TEJ5dGVzKENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQotewotICAgIENGSW5k
ZXggYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7Ci0gICAgcmVzdWx0LnJl
c2l6ZShieXRlc0xlbmd0aCk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0
ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVu
Z3RoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRl
c0xlbmd0aCk7Ci19Ci0KLXZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiBy
ZXN1bHQpCi17Ci0gICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAw
LCAwKTsKLSAgICBjaGFyKiBieXRlczsKLSAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRp
YWxpemVkKGJ5dGVzTGVuZ3RoLCBieXRlcyk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENG
VVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xl
bmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0
ZXNMZW5ndGgpOwotfQotCi1ib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBj
b25zdCBVUkwmIHVybCkKLXsKLSAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSk7Ci0KLSAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCi0g
ICAgICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVS
TCB9KTsKLQotICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXMoY2ZVUkws
IGJ5dGVzKTsKLSAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5z
aXplKCkpIH07Ci0KLSAgICBpZiAoIXVybC5oYXNQYXRoKCkpCi0gICAgICAgIHJldHVybiBTdHJp
bmdWaWV3IHsgdXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7Ci0KLSAgICBhdXRvIHVybFdp
dGhvdXRQYXRoID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwu
cGF0aFN0YXJ0KCkgKyAxKTsKLSAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxX
aXRob3V0UGF0aCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0NGVVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJh
cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmQ1NzA2NjBkYTZhYTk4ZDEyMjg2
NDA3OGZlZDdkZDZlNzc5ZWY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDRlVSTEV4dHJh
c19oCi0jZGVmaW5lIENGVVJMRXh0cmFzX2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkw7Ci10eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+
IFVSTENoYXJCdWZmZXI7Ci0KLVdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFJlZj4gY3Jl
YXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VVUkwg
PSAwKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJC
dWZmZXImKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIENTdHJp
bmcmKTsKLQotYm9vbCBpc0NGVVJMU2FtZU9yaWdpbihDRlVSTFJlZiwgY29uc3QgVVJMJik7Ci0K
LX0KLQotI2VuZGlmIC8vIENGVVJMRXh0cmFzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1VSTENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENG
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI2NDFlZDJkOWJlYzEzZDZhMTc3
OGY2MzY2MmY5YjY2N2E5NzFjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJV
UkwuaCIKLQotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgi
Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+Ci0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6OlVSTChD
RlVSTFJlZiB1cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBp
Z25vcmUgYmFzZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5
dGVzKHVybCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgp
KTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotI2lmICFVU0UoRk9VTkRBVElP
TikKLVJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17Ci0gICAg
Ly8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/Ci0gICAg
Ly8gQ3VycmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0
ZXJzIGluIHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAotICAgIC8vIHdoaWNoIGlzIGNsZWFybHkg
d3JvbmcuCi0gICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0gICAgY29weVRvQnVmZmVyKGJ1ZmZl
cik7Ci0gICAgYXV0byBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKLQotICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYg
IWlzQ0ZVUkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgcmV0dXJuIGNmVVJMOwotfQotI2VuZGlmCi0KLVN0cmluZyBVUkw6OmZp
bGVTeXN0ZW1QYXRoKCkgY29uc3QKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0g
Y3JlYXRlQ0ZVUkwoKTsKLSAgICBpZiAoIWNmVVJMKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0KLSNpZiBQTEFURk9STShXSU4pCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NG
VVJMV2luZG93c1BhdGhTdHlsZTsKLSNlbHNlCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxl
ID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7Ci0jZW5kaWYKLSAgICByZXR1cm4gYWRvcHRDRihDRlVS
TENvcHlGaWxlU3lzdGVtUGF0aChjZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7Ci19Ci0K
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IDIxMDZjMmJhOWI4NmFjMDIwYjQwNzAx
MGU5MTMyMzliZDQyNTkwZWYuLmE0ZTc2MmU3ODYzOWRkNmM2M2NjMjZlODY5NzA5YTU5N2NhNDEw
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXJfaAotI2RlZmluZSBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGVudEZpbHRlci5oIgog
I2luY2x1ZGUgPG9iamMvTlNPYmpDUnVudGltZS5oPgpAQCAtMzksOCArMzgsNiBAQCBPQkpDX0NM
QVNTIE5TRGF0YTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNz
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ29u
dGVudEZpbHRlciB7CiAgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcj4oKTsKIApAQCAtNjksNSArNjYsMyBAQCBjbGFzcyBOZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCBlOTQ0MWZmY2RlYjg2ZTYy
OGJiZTU0ZjdjOTY1ZDg2NjgwNjExNDU1Li5kZTFkYWRiYjkzYmRlMmFmZmIwMmQzYjY2OWJiYmIw
YTdkYWFiYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMzQsMTAgKzM0LDEw
IEBACiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgi
CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTkVGaWx0
ZXJTb3VyY2VTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogI2ltcG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIFNPRlRf
TElOS19GUkFNRVdPUktfT1BUSU9OQUwoTmV0d29ya0V4dGVuc2lvbik7CkBAIC0xMTgsNyArMTE4
LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY28KIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RV
UkwgeyBVUkwoKSwgbW9kaWZpZWRSZXF1ZXN0VVJMU3RyaW5nLmdldCgpIH07CiAgICAgaWYgKCFt
b2RpZmllZFJlcXVlc3RVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVy
aW5nLCAiTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9k
aWZpZWQgVVJMIHN0cmluZyAlQCB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVz
dFVSTFN0cmluZy5nZXQoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQgVVJMIHN0
cmluZyAlQCB0byBhICBVUkwuXG4iLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcuZ2V0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1NTTEtleUdlbmVyYXRvckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9TU0xLZXlHZW5lcmF0b3JHTGliLmNwcAppbmRleCA5NDUwNmY1N2E0NzVlMWVjNTY3
ZmI2OGZkY2FkYjRkMjBjMjJmMmJmLi40MWY0OGQ3MTYxZTdmMjk2NWMxNTU4NWZmMDA4ZmMyOTMw
OTJjMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NTTEtleUdl
bmVyYXRvckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU1NMS2V5
R2VuZXJhdG9yR0xpYi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
IAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdl
bnRHTGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5j
cHAKaW5kZXggMTYyMWE4ODVlODcwNGNhODQ4MzIwZjYyNTFjMDZmOTIxYjE4OWQ4OC4uYTNiYTRl
NDZkYzI4Mzk1ZDg1MmNlOGZiNjhjNzBiNTc5OWUyNzcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50LmgiCiAKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJVc2VyQWdlbnRRdWlya3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCiAjaWYgT1MoVU5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuY3BwCmluZGV4IGIwY2E0M2Q1NWM0
NWNiNTBkNzMwZjg5MmUxN2Q4MDg2OWNjZDQ5NjEuLmQzNWViMTZiYTUyYWQwM2YwN2E0ZWZlZDA0
MWJmYmU4ODQwMzM2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5ncy5oIgogCisjaW5jbHVk
ZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNDk3ZDJjNzlmZDJj
YjA4ZmMzZDBjY2JmOGY4ZWEyMjczYzQzMTAxYy4uYWU4YTkzZjRmMWE0ODhjZWFiOGIzMWI0ODVj
YmFhOGIyYjg1YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTY1LDYgKzY1LDEyIEBAIHR5cGVkZWYgdW5zaWduZWQg
Y2hhciBVSW50ODsKICNlbmRpZgogI2VuZGlmCiAKKy8vIFgxMSBoZWFkZXIgZGVmaW5lcyAiTm9u
ZSIgYXMgY29uc3RhbnQgaW4gbWFjcm8gYW5kIGJyZWFrZXMgdGhlIFBhaW50SW52YWxpZGF0aW9u
UmVhc29ucyBlbnVtJ3MgIk5vbmUiLgorLy8gQXMgYSB3b3JrYXJvdW5kLCB3ZSBleHBsaWNpdGx5
IHVuZGVmIFgxMSdzIE5vbmUgaGVyZS4KKyNpZiBkZWZpbmVkKE5vbmUpCisjdW5kZWYgTm9uZQor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShXSU5HREkpCkBAIC04NSw3
ICs5MSw2IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIGNsYXNzIElt
YWdlQnVmZmVyOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFJvdW5kZWRSZWN0OwotY2xhc3MgVVJM
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBQYXRoOwogY2xhc3MgVGV4dFJ1bjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBkNmIwYzY1
ZmJmNTdkOWM3ZGVhMTk2MDgwMjliYzJhNjAxNDU3OGIxLi5iYzM4OTE0NDg5ZTMyZDMyOGE1NGQ0
MjFlNTdkYjdmMzE1OGYzM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFVTRShDRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDVmMjIwYmU0ZWYwNmYzZmMx
ZTc5MzQ5ZmRlYjMzMGVkOTFlNzRhYzkuLjFlMzBmMzQ2OWU0YWI3OTg0NDE0YzJiZmQ4ZmFlNjRl
MThhMDBhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAt
NjgsNyArNjgsNiBAQCBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJM
Owogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4g
aW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZh
bmNlcyBhbmltYXRpb24gZnJhbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VPYnNlcnZlci5oCmluZGV4IDgyNjljYzRlZGMzN2NlNWY0ZGMxNjVmYmQ0ZDYx
YzM2OThhNDI3ZmUuLmYyODMyM2MyNTViMWQwYTAxNDM1MWM5MzQyNzNkYTAxYzVhZjg1YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgK
QEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgSW1hZ2VP
YnNlcnZlcl9oCi0jZGVmaW5lIEltYWdlT2JzZXJ2ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJJbWFnZVR5cGVzLmgiCiAKQEAgLTMyLDcgKzMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbWFnZTsKIGNsYXNzIEludFJlY3Q7Ci1jbGFzcyBVUkw7CiAKIC8vIEludGVy
ZmFjZSBmb3Igbm90aWZpY2F0aW9uIGFib3V0IGNoYW5nZXMgdG8gYW4gaW1hZ2UsIGluY2x1ZGlu
ZyBkZWNvZGluZywKIC8vIGRyYXdpbmcsIGFuZCBhbmltYXRpbmcuCkBAIC01NCw1ICs1MiwzIEBA
IGNsYXNzIEltYWdlT2JzZXJ2ZXIgewogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA0ODhmOTQ1ZmRj
M2QwMDBkYmZhYTMzN2Q0NjVlNWZiMmVmYWFiNDM4Li5mZDRhMWZlMmRkODdiZjljMDhlY2FiYjEw
ZjNlZjM3NDI5NGIxODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJJbWFnZURl
Y29kZXIuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNp
bmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAppbmRleCAwOTAxMDEyMjk5ZWJjNDFjMmNhODRlMTllOTUxZTAyNDc4ODY5
NThlLi45ODBkNjBlZTUwZDUwYmMyNmEwMDMwNWUwM2U1MWI0ZDQ0Y2M5ZTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM4LDcgKzM4
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIElt
YWdlU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiB7CiAg
ICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggNDYyYTcyNjYwNTg0NzEyM2U4N2I3NDk1NWY0
ZjE2OGZmODJmYTZmMC4uMDYwMTQ2ZDNhYzcxMGZlMWM0ZDc4YTMwODEwNjkzYmJmYThiMTFjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBA
IC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0
ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggNTkxNWE3NzMxNmVkOGEwMzBhNGU2ZDNhZDc0MTA0
YzE3OGNhZDlkMi4uM2UxZDI3MGU2NGU3ODVkYWE3MTk1NWRkNGFhZmU0MDMyZjllYjY1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
SW5saW5lcy5oPgpAQCAtNDksNiArNDgsNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQ
cmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGU4
MjQ0OWE1MGZjYzhlOWI4MTdmYzc3ZTJhYTNhMDE5NWY2YTEyMjYuLjFkYmM1Y2Q4OGE3YTA4YTUw
YzM5OTlhMDAyZWU0N2I3NWYyMWY3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtNDUsOSArNDUs
OSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtQ0FMYXllcldpbi5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8cGFs
L2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKICNpbmNsdWRlIDxBVkZvdW5kYXRpb25DRi9BVkNGUGxheWVySXRlbS5oPgogI2lmIEhB
VkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA3ZDQ5ZDRlMTBjOWU1MTY1YmNlYWUyNTE2M2Q5NmFkYWFmYmQ3YzFiLi42ZTQx
MTdlNWVhMzlhOGUwOWVmYzVkOTE0NDhmNzY2ZjVhYWUzYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTU5LDcgKzU5LDYgQEAKICNpbXBvcnQgIlRleHRFbmNvZGluZy5oIgogI2ltcG9y
dCAiVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCIKICNpbXBvcnQgIlRleHR1cmVDYWNoZUNWLmgi
Ci0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9i
akMuaCIKICNpbXBvcnQgIlZpZGVvVGV4dHVyZUNvcGllckNWLmgiCiAjaW1wb3J0ICJWaWRlb1Ry
YWNrUHJpdmF0ZUFWRk9iakMuaCIKQEAgLTgxLDYgKzgwLDcgQEAKICNpbXBvcnQgPHd0Zi9MaXN0
SGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYv
T1NPYmplY3RQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAKaW5kZXggNWY4NTcwYjEyMTcwNWE2YmE5MTUwNmUzMWJlZDk3ZjY0Nzg4Y2Y2Zi4u
NzZiZWYwNzNkOTcyZWMxNzA3MjBkNmRlZTJhZTkwMDFmM2EyNmU0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lmIFVTRShDQUlSTykKIAogI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYmQy
YTczYTM0ZmFhMWRiZTE1OTIyZWMzYjFjMTFhZDExYjU2ZjY1Ny4uNjhlYzMxZWRkYTBkYTkwZWY4
MTYxYjg5NjdjNDc0OGE4MDMwMjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNDEsMTAgKzQx
LDEwIEBACiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVX
aXRoVGltZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFBMQVRGT1JNKFdJTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjk3
MDNlMjFlYjIxNTcwZjEwM2U1NDJiNWU1NDQzYWIzODY4OWU3NC4uYzUzM2EyZGU0M2IwY2IyMTg2
NzMwMmVmODYwODhiYzRmNjM2YThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGltZVJh
bmdlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5oIgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC00Nyw2
ICs0Niw3IEBACiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9y
aXR5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRS5jcHAKaW5kZXggNGYxZjhhYjAzOGI3ODMzYmVhZTI4OTBhMmNhZTQ1NTk4ZGZi
MmE3Ni4uZDE1YzJhNTBkNzJjNTNlM2EwOTVlMDYyYjFjMzQwOWZlZWYyNmQ1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNw
cApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlBsYXliYWNrUGlwZWxpbmUuaCIKICNpbmNs
dWRlICJTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdl
cy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmgiCiAKICNpbmNsdWRlIDxmbm1hdGNoLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nSGFzaC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuY3BwCmluZGV4IGY3YmQ0NzczYmZkNWM1NjdlODAxZmIwNzE3OGViOGZkODYx
YjdkNDAuLjk2OWE0MjI0NDJlNTgzZDNlZDFhZjdjZmU0M2QyOWU0MmFhOWViNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0
TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02
MzUsNyArNjM1LDcgQEAgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFTcmNTZXRVcmkoR3N0VVJJSGFuZGxl
ciogaGFuZGxlciwgY29uc3QgZ2NoYXIqIHVyaSwgR0Vycm9yKioKICAgICAgICAgcmV0dXJuIFRS
VUU7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6VVJMIHVybChXZWJDb3JlOjpVUkwoKSwgdXJpKTsK
KyAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogCiAgICAgcHJpdi0+bG9jYXRpb24gPSBHVW5pcXVl
UHRyPGdjaGFyPihnX3N0cmR1cCh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdT
VF9PQkpFQ1RfVU5MT0NLKHNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCmluZGV4IGQwM2Y1ZjdmY2VhM2M4ZjE3Mzc3MTZh
NDM1ZjllNjY2MDEyYTVmMTguLjllYzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQy
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09W
VFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09W
VFRDdWUuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiSVNPVlRUQ3VlLmgiCiAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogdXNpbmcgSlNDOjpEYXRhVmlldzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRE
aXJlY3QyRC5jcHAKaW5kZXggNWVhY2UxMDg4NjY3YzIyOWI1YWZjMzllYzkzNjg3ZTBkNDVhNTJm
Yi4uNDQ4MTczMTU3NWFlNDA5NDk1NGM3Njk1ZmRkNzVlN2EwNTVjOGFiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVj
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDxkMmQx
ZWZmZWN0cy5oPgogI2luY2x1ZGUgPGR3cml0ZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
I3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDc1NikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAppbmRleCAzM2Y0ZmUzYTQyZjA1ZjJkNmI5M2RiMGZh
ZGE4Nzg0M2U5YjcwMjY4Li5mN2QxODRmNjdlOGFjMzU2NTUzMzUxNTNlMWNlNTU4YWUxOGU5N2Ux
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAt
MjMsOSArMjMsOSBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgi
CiAjaW5jbHVkZSAiVGV4dEluZGljYXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PGNhaXJvLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHAKaW5kZXggYTRhYjYxMGE3M2ZmMWFjOTE0OTBkZGMyMDA4YzQ4OGQ0MmM5
MDBmMC4uNzFhMDBhMzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjcsOCArMjcs
OCBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBmMzA4YzJiYjdlNTM2OTFk
YTM0YzZlYmQwYjM0ZWQxMWJlYjJmYjY0Li44MTQzZmFmYzM3YzFiYzQ4YTRjMGRlOGRmMTA5NmQ3
MjM4ZTY1MDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZv
cm1QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxh
dGZvcm1QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgIlBhc3Rl
Ym9hcmRIZWxwZXIuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBkYTUxZGEwOWFkMTI3NDhjZjc5
YTUwZjZjMzM0OTllNTBhYTM1Yzg3Li4xYjg1OGVmOWRlZTU3YzIwNmJhM2UwYzczYWFkOGE4NjY5
NmI4MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9u
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgK
QEAgLTE5LDkgKzE5LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA5ZjY5MTRlYzQ4MWYxZGNhYWRhNzVkZjk2
ZDFkNTcwMjU1ZmY3MTUyLi40ZDY2OWYwMWExMzU5ZGE4YTQ3MzQ1ZWMzYzMyN2FkYjIzOWE5OTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAt
MzUsMTAgKzM1LDEwIEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYk5TQXR0
cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmls
ZUNvcmVTZXJ2aWNlcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogCiBAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoTlNBdHRyaWJ1
dGVkU3RyaW5nS2l0QWRkaXRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZGE3ZjYyMTc3YWM4NTk2MDUzMTAx
YjViODkxODJlMDIxYTliMjZkYy4uZDdhZDQyNWRhYWI0NmY4MWI2OTk5Mzk4NzgzY2MyNTFmZTgy
YmRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC0zMiw5ICszMiw3IEBACiAjaW1wb3J0ICJJbWFnZS5oIgogI2lt
cG9ydCAiUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJV
UkwuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0
cmFzLmgiCiAjaW1wb3J0ICJXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0IDxN
b2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxVSUtpdC9V
SUNvbG9yLmg+CkBAIC00NCw2ICs0Miw4IEBACiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQ
SS5oPgogI2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJh
cy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjZGVmaW5lIFBBU1RFQk9B
UkRfU1VQUE9SVFNfSVRFTV9QUk9WSURFUlMgKFBMQVRGT1JNKElPUykgJiYgIShQTEFURk9STShX
QVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKSkpCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2Fy
ZEltYWdlKQogICAgIGF1dG8mIHBhc3RlYm9hcmRVUkwgPSBwYXN0ZWJvYXJkSW1hZ2UudXJsOwog
ICAgIGlmIChOU1VSTCAqbnNVUkwgPSBwYXN0ZWJvYXJkVVJMLnVybCkgewogI2lmIE5TVVJMX1NV
UFBPUlRTX1RJVExFCi0gICAgICAgIG5zVVJMLl90aXRsZSA9IHBhc3RlYm9hcmRVUkwudGl0bGUu
aXNFbXB0eSgpID8gdXNlclZpc2libGVTdHJpbmcocGFzdGVib2FyZFVSTC51cmwpIDogKE5TU3Ry
aW5nICopcGFzdGVib2FyZFVSTC50aXRsZTsKKyAgICAgICAgbnNVUkwuX3RpdGxlID0gcGFzdGVi
b2FyZFVSTC50aXRsZS5pc0VtcHR5KCkgPyBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9h
cmRVUkwudXJsKSA6IChOU1N0cmluZyAqKXBhc3RlYm9hcmRVUkwudGl0bGU7CiAjZW5kaWYKICAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0Om5z
VVJMXTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVp
Y2tMb29rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgKaW5kZXgg
NDlkODExZDUxNDBjOGZkMGFmMDE2MjlkOGQwYzFjOWU5ZTk5NGYxNy4uMGE2ZWZhZWYzZTg2MWVm
NTlmZDQyODljZWY5MTFjNzc4ZGE3MGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9R
dWlja0xvb2suaApAQCAtMzUsOCArMzUsNiBAQCBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIFdFQkNPUkVfRVhQT1JUIE5TU2V0
ICpRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKTsKIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9FWFBP
UlQgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5l
ZWRlZChOU1VSTCAqLCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0YSAqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBkY2U3MzMzMWU3N2E4NzQ2OGI2
NzExN2M0MzRiNGIwYjgyMzJhOWViLi43MTZjMzY2NmI5YzRiY2U3MTM2MWY0YzA1MzgxZGMzYTlh
M2JkMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBA
IC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5o
IgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1Mp
CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CkBAIC0y
MTAsNyArMjExLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiAgICAg
Ly8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdlIGtu
b3cgLVtOU1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxsIHRo
ZSBzYW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRpbmcg
YW4gTlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0gICAgICAgIHJldHVybiB1c2VyVmlzaWJs
ZVN0cmluZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsKKyAgICAgICAgcmV0dXJuIFdU
Rjo6dXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CiAKICAg
ICAvLyBGSVhNRTogV1RGIHNob3VsZCBvZmZlciBhIG5vbi1NYWMtc3BlY2lmaWMgd2F5IHRvIGNv
bnZlcnQgc3RyaW5nIHRvIHByZWNvbXBvc2VkIGZvcm0gc28gd2UgY2FuIGRvIGl0IGZvciBhbGwg
cGxhdGZvcm1zLgogICAgIHJldHVybiBbKE5TU3RyaW5nICopc3RyaW5nIHByZWNvbXBvc2VkU3Ry
aW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnSW1hZ2VNYWMubW0KaW5kZXggMjAxY2IzMzhiYmQ3ZGM3NTNiMzM1YTMwMDYyYzJiOTEyNmIx
MTk0OS4uOWQ4YmI4N2Y5YmUxN2JhMzU3MjQ3ZTA1NjljZTQ2NWZhNjY2YzFkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC00MSwxMiArNDEsMTIg
QEAKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlN0cmluZ1RydW5jYXRvci5oIgogI2ltcG9y
dCAiVGV4dEluZGljYXRvci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJLaXROU0lt
YWdlRXh0cmFzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9VUkxGb3JtYXR0aW5nU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2lmICFIQVZFKFVSTF9GT1JNQVRUSU5HKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVX
T1JLX09QVElPTkFMKExpbmtQcmVzZW50YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9GaWxlU3lzdGVtTWFjLm1tCmluZGV4IDA3MWQwYzkxMTc3OTRlNjAzOGQ5OGFhZDU2ZmU5
NmZmOGY0ODE1MzMuLjhlZDc1MWE3ZWMwZTVkMGJhZjc3NGY5ODYxMGFjYjA0NWNkMmIwMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCkBAIC0yOCw4
ICsyOCw4IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4
dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaD4KKyNpbXBvcnQgPHd0
Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBGaWxlU3lzdGVtOjpz
ZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFV
UkxTdHIKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChOU1VSTCAqdXJsID0gVVJM
V2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJs
U3RyaW5nID0gdXNlclZpc2libGVTdHJpbmcoVVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOwor
ICAgICAgICB1cmxTdHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1v
dmluZ1VzZXJJbmZvKHVybCkpOwogICAgIGVsc2UKICAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRh
dGFVUkxTdHJpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KaW5kZXggM2MzNjdkYTQ4NDBjMGU0MmQzYTRhOTVjNzA2MTE1NTk2MTEzNDc2Mi4uOGE1
YzI3NGNhNjRjMzkwMjAwN2U4NzQ2YTQzZjViZmMzNjBkZGQ0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTM3LDcgKzM3LDYgQEAKICNpbXBv
cnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgi
CiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVVRJ
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNp
bXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC00NSw2ICs0NCw3IEBACiAj
aW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2lt
cG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2ltcG9ydCA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZFdyaXRlci5tbQppbmRleCA2YTI4ZmU2MmFjZWNkNTcyNjU4ZDAzM2QwY2Q5YzFhYzMxZWUw
ZTNkLi4wZmU1MDVkZTU1YzY2MTY0OGYwNTlkYTliN2ZhZTJhMDc3ZmM2MjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtNjMsMTAg
KzYzLDEwIEBAIFJldGFpblB0cjxpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4+IGNyZWF0ZVBhc3Rl
Ym9hcmRXcml0ZXIoY29uc3QgUGFzdGVib2FyZFdyaXRlCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoYXV0byYgdXJsID0gZGF0YS51cmwoKSkgewotICAgICAgICBOU1VSTCAqY29jb2FVUkwg
PSB1cmwtPnVybDsKLSAgICAgICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nID0gdXJsLT51
c2VyVmlzaWJsZUZvcm07Ci0gICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IChOU1N0cmluZyAqKXVy
bC0+dGl0bGU7CisgICAgaWYgKGF1dG8mIHVybERhdGEgPSBkYXRhLnVybERhdGEoKSkgeworICAg
ICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmxEYXRhLT51cmw7CisgICAgICAgIE5TU3RyaW5nICp1
c2VyVmlzaWJsZVN0cmluZyA9IHVybERhdGEtPnVzZXJWaXNpYmxlRm9ybTsKKyAgICAgICAgTlNT
dHJpbmcgKnRpdGxlID0gKE5TU3RyaW5nICopdXJsRGF0YS0+dGl0bGU7CiAgICAgICAgIGlmICgh
dGl0bGUubGVuZ3RoKSB7CiAgICAgICAgICAgICB0aXRsZSA9IGNvY29hVVJMLnBhdGgubGFzdFBh
dGhDb21wb25lbnQ7CiAgICAgICAgICAgICBpZiAoIXRpdGxlLmxlbmd0aCkKQEAgLTc0LDcgKzc0
LDcgQEAgUmV0YWluUHRyPGlkIDxOU1Bhc3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2Fy
ZFdyaXRlcihjb25zdCBQYXN0ZWJvYXJkV3JpdGUKICAgICAgICAgfQogCiAgICAgICAgIC8vIFdl
YlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZS4KLSAgICAgICAgYXV0byBwYXRocyA9IGFkb3B0TlMo
W1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6QFsgQFsgY29jb2FVUkwuYWJzb2x1dGVT
dHJpbmcgXSBdLCBAWyB1cmwtPnRpdGxlLnN0cmlwV2hpdGVTcGFjZSgpIF0sIG5pbF0pOworICAg
ICAgICBhdXRvIHBhdGhzID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0
czpAWyBAWyBjb2NvYVVSTC5hYnNvbHV0ZVN0cmluZyBdIF0sIEBbIHVybERhdGEtPnRpdGxlLnN0
cmlwV2hpdGVTcGFjZSgpIF0sIG5pbF0pOwogICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0UHJv
cGVydHlMaXN0OnBhdGhzLmdldCgpIGZvclR5cGU6dG9VVEkoQCJXZWJVUkxzV2l0aFRpdGxlc1Bi
b2FyZFR5cGUiKS5nZXQoKV07CiAKICAgICAgICAgLy8gTlNVUkxQYm9hcmRUeXBlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
aW5kZXggYjFkZmZiNmNiN2U2NDI1NzQxYmQwYzZjMGU1M2I0ZWZkY2ZkYjE3MS4uMGNiMWRkOGI5
MzBhMDY1YjdjMDgwMTVjYTJlMGNlNWRiZDViMmI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0zMiwxMCArMzIs
MTAgQEAKICNpbXBvcnQgIkNvbG9yTWFjLmgiCiAjaW1wb3J0ICJMZWdhY3lOU1Bhc3RlYm9hcmRU
eXBlcy5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0
ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2ltcG9y
dCA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCmluZGV4IDIzMDM4MTdmM2IyMTRm
YWM1NGZlMGY0ZTI2ZDA0OTMzM2I1MTA0MzUuLjAxOTZiNDE2ZWQ0MjViMTcwMGViY2U5YzBiYzFk
YzhiNjYzMTM4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJs
aWNTdWZmaXhNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1
ZmZpeE1hYy5tbQpAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhf
TElTVCkKIAotI2ltcG9ydCAiVVJMLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIK
ICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC02Myw3ICs2Myw3IEBAIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
KGNvbnN0IFN0cmluZyYgZG9tYWluKQogCiBTdHJpbmcgZGVjb2RlSG9zdE5hbWUoY29uc3QgU3Ry
aW5nJiBkb21haW4pCiB7Ci0gICAgcmV0dXJuIGRlY29kZUhvc3ROYW1lKChOU1N0cmluZyAqKShk
b21haW4pKTsKKyAgICByZXR1cm4gV1RGOjpkZWNvZGVIb3N0TmFtZShkb21haW4pOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9y
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5t
bQppbmRleCBmYzQwYWExOWIwNGMzYWUzNDcxODAyNzYzZjdkZjM4OWE3MjI4YzlkLi5iZDlkYTBk
ZDg2YWNjZDFkODRhNmMzZmVkYTBiNDEyYTI2YWRmNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KQEAgLTI5LDEzICsyOSwxMyBA
QAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxTZWN1cml0eS9TZWNBc24xQ29kZXIuaD4KICNpbXBvcnQg
PFNlY3VyaXR5L1NlY0FzbjFUZW1wbGF0ZXMuaD4KICNpbXBvcnQgPFNlY3VyaXR5L1NlY0VuY29k
ZVRyYW5zZm9ybS5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Nv
Y29hL1NlY3VyaXR5U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MjVjMWRlN2IwMjgzY2QwZGJkYmE1NmNhMTZmYWZjNWYzOWM1OGI2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9VUkxNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiVVJMLmgiCi0KLSNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJV
UkxQYXJzZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgotI2ltcG9ydCA8d3Rm
L09iamNSdW50aW1lRXh0cmFzLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLUBp
bnRlcmZhY2UgTlNTdHJpbmcgKFdlYkNvcmVOU1VSTEV4dHJhcykKLS0gKEJPT0wpX3dlYl9sb29r
c0xpa2VJUEFkZHJlc3M7Ci1AZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwo
TlNVUkwgKnVybCkKLXsKLSAgICBpZiAoIXVybCkgewotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGln
bm9yZSBiYXNlIFVSTCBoZXJlPwotICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0
ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXVybCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJz
ZXIodXJsQnl0ZXMuZGF0YSgpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQot
VVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29uc3QKLXsKLSAgICAvLyBDcmVhdGluZyBhIHRvbGwt
ZnJlZSBicmlkZ2VkIENGVVJMIGJlY2F1c2UgY3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdv
dWxkIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5nLgotICAgIC8vIFdlJ2xsIG5lZWQg
ZmlkZWxpdHkgd2hlbiByb3VuZC10cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgotICAgIHJl
dHVybiBjcmVhdGVDRlVSTCgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKLX0KLQotUmV0YWluUHRy
PENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAg
ICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwg
dG8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVl
cy4KLSAgICAgICAgcmV0dXJuIChfX2JyaWRnZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOkAiIl0pLmdldCgpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gY2ZVUkw7Ci0KLSAgICAvLyBGYXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMg
OC1iaXQgdG8gYXZvaWQgY29weWluZyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KLSAgICBpZiAo
TElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpKSkKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZy
b21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9zdHJpbmcuY2hhcmFjdGVy
czgoKSksIG1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gU2xvd2Vy
IHBhdGguCi0gICAgICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOwotICAgICAgICBjb3B5VG9CdWZm
ZXIoYnVmZmVyKTsKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgfQotCi0gICAgaWYgKHByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSAmJiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gY2ZVUkw7Ci19Ci0KLWJvb2wgVVJM
Ojpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewotICAgIHJldHVybiBbaG9zdC5j
cmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkgX3dlYl9sb29rc0xpa2VJUEFkZHJl
c3NdOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZU5TVVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5T
VVJMRXh0cmFzLmgKaW5kZXggZmUxMDY4MTM0NWY1N2YzZjQxZjRkMGRhNzJjZTYxNjFkYmIwNjk0
OC4uMWMwNzMyOWJlOWViYjZmYjBhMjNjNWQyN2NkYTgwMmM0ZTgwMWUxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaApAQCAtMjYsMjkg
KzI2LDEwIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLUBjbGFzcyBOU1N0cmluZzsKIEBjbGFzcyBO
U1VSTDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAq
dXNlclZpc2libGVTdHJpbmcoTlNVUkwgKik7CiBXRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlD
YW5vbmljYWxpemluZ1VSTChOU1VSTCAqKTsKLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxXaXRo
VXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsgLy8gUmV0dXJuIHZh
bHVlIG9mIG5pbCBtZWFucyBlcnJvci4KLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeVJlbW92
aW5nVXNlckluZm8oTlNVUkwgKik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGhvc3ROYW1lTmVlZHNE
ZWNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlLCBCT09MKiBlcnJvcik7Ci1XRUJD
T1JFX0VYUE9SVCBCT09MIGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAq
LCBOU1JhbmdlLCBCT09MKiBlcnJvcik7Ci1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2Rl
SG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBv
ZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZW5jb2RlSG9zdE5h
bWVXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwg
bWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNT
dHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VY
UE9SVCBOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1
ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlUcnVuY2F0
aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICosIENGVVJMQ29tcG9uZW50VHlw
ZSk7Ci1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICosIE5TVVJMICpi
YXNlVVJMKTsKLVdFQkNPUkVfRVhQT1JUIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICop
OwotV0VCQ09SRV9FWFBPUlQgTlNEYXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAq
LCBDRlVSTENvbXBvbmVudFR5cGUpOwotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmdEZXByZWNhdGVkKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsKLQotTlNS
YW5nZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBp
c1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBsb29rc0xp
a2VBYnNvbHV0ZVVSTChOU1N0cmluZyAqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KaW5k
ZXggY2UxYzk1NjNiMGI1OWNhOTY0NTkzYWM2ZGM5OTdkNGM0NDYwYWEwYi4uMDQ0YzQyOTBkZGZl
NWY1MDk4Mzg5MTgzYThiYjQ5YWU0NzRhODBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBAIC0yNyw3ICsyNyw2IEBACiAgKi8K
IAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJVUkxQYXJzZXIuaCIKICNpbXBvcnQgIldl
YkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4K
ICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtMzksOTk5ICszOCw4IEBACiAjaW1wb3J0IDx1
bmljb2RlL3VpZG5hLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KIAotLy8gTmVlZHMg
dG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCi0vLyBGb3IgaG9z
dCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNo
IGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0jZGVmaW5lIEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RI
IDIwNDgKLSNkZWZpbmUgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEggMjA0OAotCi10eXBlZGVmIHZv
aWQgKCogU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24pKE5TU3RyaW5nICosIE5TUmFuZ2UsIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4mKTsKLQotc3RhdGljIHVpbnQzMl90IElETlNjcmlwdFdo
aXRlTGlzdFsoVVNDUklQVF9DT0RFX0xJTUlUICsgMzEpIC8gMzJdOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBib29sIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIoVUNoYXIz
MiBjb2RlUG9pbnQpCi17Ci0gICAgcmV0dXJuIGNvZGVQb2ludCA9PSAweDA1NDggfHwgY29kZVBv
aW50ID09IDB4MDU0RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQb2ludCA9PSAweDA1
N0Q7Ci19Ci0KLXN0YXRpYyBib29sIGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoVUNoYXIzMiBj
b2RlUG9pbnQpCi17Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBV
U2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjb2RlUG9pbnQsICZlcnJvcik7
Ci0gICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICBMT0dfRVJST1IoImdv
dCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBlcnJvcik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NyaXB0ID09IFVT
Q1JJUFRfQVJNRU5JQU47Ci19Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
aW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlw
ZSBjaGFyQ29kZSkKLXsKLSAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24oY2hhckNv
ZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGluZ3MgdGhlIFVSTCBQYXJz
ZXIgcmVqZWN0czoKLSAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7Ci0gICAgY2FzZSAnIyc6Ci0gICAg
Y2FzZSAnJSc6Ci0gICAgY2FzZSAnLyc6Ci0gICAgY2FzZSAnOic6Ci0gICAgY2FzZSAnPyc6Ci0g
ICAgY2FzZSAnQCc6Ci0gICAgY2FzZSAnWyc6Ci0gICAgY2FzZSAnXFwnOgotICAgIGNhc2UgJ10n
OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotfQotCi0KLQotc3RhdGljIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0ZXIoc3Rk
OjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjaGFyQ29kZSkK
LXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVuc2FmZSwg
bG9va2FsaWtlIGNoYXJhY3RlcnM6Ci0gICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hhcmFjdGVy
LCBhbnkgY2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKLSAgICAvLyBhbnkgaWdu
b3JhYmxlIGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBsb2Nrcy4K
LSAgICAKLSAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4gTW96aWxs
YSdzIGJsYWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklETi5ibGFj
a2xpc3RfY2hhcnM+LgotCi0gICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVycyBoZXJlIHdpbGwg
bmV2ZXIgYXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgotICAgIC8vIEZvciBleGFtcGxlLCBJ
Q1UgdHJhbnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNlIGFuZCBtb3N0Ci0g
ICAgLy8gc2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUgb2YgdGhlIHR3byBj
YWxsZXJzIHVzZXMgdGhpcwotICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBoYXZlIG5vdCBiZWVu
IHByb2Nlc3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgotICAgIAotICAgIGlm
ICghdV9pc3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hhckNvZGUpIHx8IHVf
aGFzQmluYXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxFX0NPREVf
UE9JTlQpKQotICAgICAgICByZXR1cm4gWUVTOwotICAgIAotICAgIHN3aXRjaCAoY2hhckNvZGUp
IHsKLSAgICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUiAq
LwotICAgICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGICovCi0g
ICAgICAgIGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMgKi8K
LSAgICAgICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUg
Ki8KLSAgICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBSRVRST0ZMRVggQ0xJQ0sg
Ki8KLSAgICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBBTFBIQSAqLwot
ICAgICAgICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBHICovCi0g
ICAgICAgIGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJQU5HVUxBUiBDT0xPTiAq
LwotICAgICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JUIFNUUk9LRSBPVkVSTEFZ
ICovCi0gICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQgU09MSURVUyBPVkVS
TEFZICovCi0gICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9W
RVJMQVkgKi8KLSAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZVTEwgU1RPUCAqLwot
ICAgICAgICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICovCi0gICAgICAgIGNh
c2UgMHgwNUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRICovCi0gICAgICAgIGNh
c2UgMHgwNUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRICovCi0gICAgICAgIGNh
c2UgMHgwNUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICovCi0gICAgICAgIGNh
c2UgMHgwNjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04gKi8KLSAgICAgICAgY2Fz
ZSAweDA2MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJR04gKi8KLSAgICAg
ICAgY2FzZSAweDA2NTA6IC8qIEFSQUJJQyBLQVNSQSAqLwotICAgICAgICBjYXNlIDB4MDY2MDog
LyogQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KLSAgICAgICAgY2FzZSAweDA2NkE6IC8qIEFS
QUJJQyBQRVJDRU5UIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2RDQ6IC8qIEFSQUJJQyBGVUxM
IFNUT1AgKi8KLSAgICAgICAgY2FzZSAweDA2RjA6IC8qIEVYVEVOREVEIEFSQUJJQyBJTkRJQyBE
SUdJVCBaRVJPICovCi0gICAgICAgIGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMgU1VQUkFMSU5FQVIg
RlVMTCBTVE9QICovCi0gICAgICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMgU1VCTElORUFSIEZV
TEwgU1RPUCAqLwotICAgICAgICBjYXNlIDB4MDcwMzogLyogU1lSSUFDIFNVUFJBTElORUFSIENP
TE9OICovCi0gICAgICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJQUMgU1VCTElORUFSIENPTE9OICov
Ci0gICAgICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQVU5DVFVBVElPTiAq
LwotICAgICAgICBjYXNlIDB4MUQwNDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgQyAq
LwotICAgICAgICBjYXNlIDB4MUQwRjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTyAq
LwotICAgICAgICBjYXNlIDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVSAq
LwotICAgICAgICBjYXNlIDB4MUQyMDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgViAq
LwotICAgICAgICBjYXNlIDB4MUQyMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVyAq
LwotICAgICAgICBjYXNlIDB4MUQyMjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgWiAq
LwotICAgICAgICBjYXNlIDB4MUVDRDogLyogTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1Qg
QkVMT1cgKi8KLSAgICAgICAgY2FzZSAweDIwMTA6IC8qIEhZUEhFTiAqLwotICAgICAgICBjYXNl
IDB4MjAxMTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLwotICAgICAgICBjYXNlIDB4MjAyNDog
LyogT05FIERPVCBMRUFERVIgKi8KLSAgICAgICAgY2FzZSAweDIwMjc6IC8qIEhZUEhFTkFUSU9O
IFBPSU5UICovCi0gICAgICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVGVC1QT0lOVElORyBB
TkdMRSBRVU9UQVRJT04gTUFSSyAqLwotICAgICAgICBjYXNlIDB4MjAzQTogLyogU0lOR0xFIFJJ
R0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHgyMDQx
OiAvKiBDQVJFVCBJTlNFUlRJT04gUE9JTlQgKi8KLSAgICAgICAgY2FzZSAweDIwNDQ6IC8qIEZS
QUNUSU9OIFNMQVNIICovCi0gICAgICAgIGNhc2UgMHgyMDUyOiAvKiBDT01NRVJDSUFMIE1JTlVT
IFNJR04gKi8KLSAgICAgICAgY2FzZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgVEhJ
UkQgKi8KLSAgICAgICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08gVEhJUkRT
ICovCi0gICAgICAgIGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEZJRlRIICov
Ci0gICAgICAgIGNhc2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRIUyAqLwot
ICAgICAgICBjYXNlIDB4MjE1NzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRIUyAqLwot
ICAgICAgICBjYXNlIDB4MjE1ODogLyogVlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhTICovCi0g
ICAgICAgIGNhc2UgMHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIICovCi0gICAg
ICAgIGNhc2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhUSFMgKi8KLSAgICAg
ICAgY2FzZSAweDIxNUI6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFQgKi8KLSAgICAgICAg
Y2FzZSAweDIxNUM6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhTICovCi0gICAgICAg
IGNhc2UgMHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTICovCi0gICAgICAg
IGNhc2UgMHgyMTVFOiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRIUyAqLwotICAgICAg
ICBjYXNlIDB4MjE1RjogLyogRlJBQ1RJT04gTlVNRVJBVE9SIE9ORSAqLwotICAgICAgICBjYXNl
IDB4MjIxMjogLyogTUlOVVMgU0lHTiAqLwotICAgICAgICBjYXNlIDB4MjIxNTogLyogRElWSVNJ
T04gU0xBU0ggKi8KLSAgICAgICAgY2FzZSAweDIyMTY6IC8qIFNFVCBNSU5VUyAqLwotICAgICAg
ICBjYXNlIDB4MjIzNjogLyogUkFUSU8gKi8KLSAgICAgICAgY2FzZSAweDIzM0Y6IC8qIEFQTCBG
VU5DVElPTkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KLSAgICAgICAgY2FzZSAweDIzQUU6IC8qIElO
VEVHUkFMIEVYVEVOU0lPTiAqLwotICAgICAgICBjYXNlIDB4MjQ0QTogLyogT0NSIERPVUJMRSBC
QUNLU0xBU0ggKi8KLSAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJB
V0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLwotICAgICAg
ICBjYXNlIDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBESUFHT05B
TCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyOUY2OiAvKiBT
T0xJRFVTIFdJVEggT1ZFUkJBUiAqLwotICAgICAgICBjYXNlIDB4MjlGODogLyogQklHIFNPTElE
VVMgKi8KLSAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFSWSBSRUxB
VElPTiAqLwotICAgICAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BFUkFUT1Ig
Ki8KLSAgICAgICAgY2FzZSAweDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJB
Q1RFUiBMRUZUIFRPIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyRkYxOiAvKiBJREVPR1JBUEhJ
QyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KLSAgICAgICAgY2FzZSAw
eDJGRjI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIE1JRERM
RSBBTkQgUklHSFQgKi8KLSAgICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9HUkFQSElDIERFU0NS
SVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICovCi0gICAgICAgIGNh
c2UgMHgyRkY0OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVMTCBTVVJS
T1VORCAqLwotICAgICAgICBjYXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04g
Q0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQUJPVkUgKi8KLSAgICAgICAgY2FzZSAweDJGRjY6IC8q
IElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJFTE9XICov
Ci0gICAgICAgIGNhc2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNU
RVIgU1VSUk9VTkQgRlJPTSBMRUZUICovCi0gICAgICAgIGNhc2UgMHgyRkY4OiAvKiBJREVPR1JB
UEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZUICovCi0g
ICAgICAgIGNhc2UgMHgyRkY5OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIg
U1VSUk9VTkQgRlJPTSBVUFBFUiBSSUdIVCAqLwotICAgICAgICBjYXNlIDB4MkZGQTogLyogSURF
T0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIgTEVGVCAq
LwotICAgICAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFD
VEVSIE9WRVJMQUlEICovCi0gICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVPR1JBUEhJQyBGVUxM
IFNUT1AgKi8KLSAgICAgICAgY2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUgQlJBQ0tFVCAqLwot
ICAgICAgICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0g
ICAgICAgIGNhc2UgMHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0g
ICAgICAgIGNhc2UgMHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQUEVSIEhB
TEYgKi8KLSAgICAgICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksg
TE9XRVIgSEFMRiAqLwotICAgICAgICBjYXNlIDB4MzIxRDogLyogUEFSRU5USEVTSVpFRCBLT1JF
QU4gQ0hBUkFDVEVSIE9KRU9OICovCi0gICAgICAgIGNhc2UgMHgzMjFFOiAvKiBQQVJFTlRIRVNJ
WkVEIEtPUkVBTiBDSEFSQUNURVIgTyBIVSAqLwotICAgICAgICBjYXNlIDB4MzNBRTogLyogU1FV
QVJFIFJBRCBPVkVSIFMgKi8KLSAgICAgICAgY2FzZSAweDMzQUY6IC8qIFNRVUFSRSBSQUQgT1ZF
UiBTIFNRVUFSRUQgKi8KLSAgICAgICAgY2FzZSAweDMzQzY6IC8qIFNRVUFSRSBDIE9WRVIgS0cg
Ki8KLSAgICAgICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9WRVIgTSAqLwotICAgICAgICBj
YXNlIDB4MDVCOTogLyogSEVCUkVXIFBPSU5UIEhPTEFNICovCi0gICAgICAgIGNhc2UgMHgwNUJB
OiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZBViAqLwotICAgICAgICBjYXNlIDB4
MDVDMTogLyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCi0gICAgICAgIGNhc2UgMHgwNUMyOiAv
KiBIRUJSRVcgUE9JTlQgU0lOIERPVCAqLwotICAgICAgICBjYXNlIDB4MDVDNDogLyogSEVCUkVX
IE1BUksgVVBQRVIgRE9UICovCi0gICAgICAgIGNhc2UgMHhBNzMxOiAvKiBMQVRJTiBMRVRURVIg
U01BTEwgQ0FQSVRBTCBTICovCi0gICAgICAgIGNhc2UgMHhBNzcxOiAvKiBMQVRJTiBTTUFMTCBM
RVRURVIgRFVNICovCi0gICAgICAgIGNhc2UgMHhBNzg5OiAvKiBNT0RJRklFUiBMRVRURVIgQ09M
T04gKi8KLSAgICAgICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJU
SUNBTCBTRU1JQ09MT04gKi8KLSAgICAgICAgY2FzZSAweEZFMTU6IC8qIFBSRVNFTlRBVElPTiBG
T1JNIEZPUiBWRVJUSUNBTCBFWENMQU1BVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHhGRTNG
OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFDS0VUICov
Ci0gICAgICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNL
RVQgKi8KLSAgICAgICAgY2FzZSAweEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRPUlRPSVNFIFNIRUxM
IEJSQUNLRVQgKi8KLSAgICAgICAgY2FzZSAweEZGMEU6IC8qIEZVTExXSURUSCBGVUxMIFNUT1Ag
Ki8KLSAgICAgICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09MSURVUyAqLwotICAgICAg
ICBjYXNlIDB4RkY2MTogLyogSEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwgU1RPUCAqLwotICAg
ICAgICBjYXNlIDB4RkZGQzogLyogT0JKRUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAqLwotICAg
ICAgICBjYXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCi0gICAgICAgIGNh
c2UgMHgxRjUwRjogLyogTE9DSyBXSVRIIElOSyBQRU4gKi8KLSAgICAgICAgY2FzZSAweDFGNTEw
OiAvKiBDTE9TRUQgTE9DSyBXSVRIIEtFWSAqLwotICAgICAgICBjYXNlIDB4MUY1MTE6IC8qIEtF
WSAqLwotICAgICAgICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sgKi8KLSAgICAgICAgY2FzZSAweDFG
NTEzOiAvKiBPUEVOIExPQ0sgKi8KLSAgICAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgICAgIGNh
c2UgMHgwMzA3OiAvKiBDT01CSU5JTkcgRE9UIEFCT1ZFICovCi0gICAgICAgICAgICByZXR1cm4g
cHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMjM3IC8qIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNT
IEogKi8KLSAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAxMzEgLyog
TEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSSAqLwotICAgICAgICAgICAgICAgIHx8IHByZXZp
b3VzQ29kZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExFVFRFUiBWQVYgKi8KLSAgICAgICAg
Y2FzZSAweDA1NDg6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPICovCi0gICAgICAgIGNh
c2UgMHgwNTREOiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUggKi8KLSAgICAgICAgY2Fz
ZSAweDA1Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLwotICAgICAgICBjYXNlIDB4
MDU3RDogLyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNFSCAqLwotICAgICAgICAgICAgcmV0dXJu
IHByZXZpb3VzQ29kZVBvaW50Ci0gICAgICAgICAgICAgICAgJiYgIWlzQVNDSUlEaWdpdE9yVmFs
aWRIb3N0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCi0gICAgICAgICAgICAg
ICAgJiYgIWlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUo
KSk7Ci0gICAgICAgIGNhc2UgJy4nOgotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50Ci0gICAgICAgICAg
ICAgICAgJiYgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52
YWx1ZSgpKQotICAgICAgICAgICAgICAgICYmICEoaXNBcm1lbmlhblNjcmlwdENoYXJhY3Rlcihj
aGFyQ29kZSkgfHwgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoY2hhckNvZGUpKTsK
LSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHdoaXRlTGlzdElETlNjcmlwdChjb25zdCBjaGFyKiBz
Y3JpcHROYW1lKQotewotICAgIGludDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9wZXJ0eVZhbHVlRW51
bShVQ0hBUl9TQ1JJUFQsIHNjcmlwdE5hbWUpOwotICAgIGlmIChzY3JpcHQgPj0gMCAmJiBzY3Jp
cHQgPCBVU0NSSVBUX0NPREVfTElNSVQpIHsKLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc2NyaXB0
IC8gMzI7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7Ci0gICAg
ICAgIElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gfD0gbWFzazsKLSAgICB9Ci19Ci0KLXN0YXRp
YyBCT09MIHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpmaWxlbmFtZSkKLXsK
LSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBGSUxFICpmaWxl
ID0gZm9wZW4oW2ZpbGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICJyIik7Ci0gICAg
aWYgKCFmaWxlKQotICAgICAgICByZXR1cm4gTk87Ci0gICAgCi0gICAgLy8gUmVhZCBhIHdvcmQg
YXQgYSB0aW1lLgotICAgIC8vIEFsbG93IGNvbW1lbnRzLCBzdGFydGluZyB3aXRoICMgY2hhcmFj
dGVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgLy8g
U2tpcCBhIGNvbW1lbnQgaWYgcHJlc2VudC4KLSAgICAgICAgaWYgKGZzY2FuZihmaWxlLCAiICMl
KlteXG5ccl0lKltcblxyXSIpID09IEVPRikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAK
LSAgICAgICAgLy8gUmVhZCBhIHNjcmlwdCBuYW1lIGlmIHByZXNlbnQuCi0gICAgICAgIGNoYXIg
d29yZFszM107Ci0gICAgICAgIGludCByZXN1bHQgPSBmc2NhbmYoZmlsZSwgIiAlMzJbXiMgXHRc
blxyXSUqW14jIFx0XG5ccl0gIiwgd29yZCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gRU9GKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVzdWx0ID09IDEpIHsK
LSAgICAgICAgICAgIC8vIEdvdCBhIHdvcmQsIG1hcCB0byBzY3JpcHQgY29kZSBhbmQgcHV0IGl0
IGludG8gdGhlIGFycmF5LgotICAgICAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHdvcmQpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIGZjbG9zZShmaWxlKTsKLSAgICByZXR1cm4gWUVTOwotfQot
Ci1zdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29uc3QgVUNo
YXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2Vf
dCBmbGFnOwotICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57Ci0gICAgICAgIC8vIFJlYWQgd2hp
dGUgbGlzdCBmcm9tIGxpYnJhcnkuCi0gICAgICAgIE5TQXJyYXkgKmRpcnMgPSBOU1NlYXJjaFBh
dGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxsRG9tYWlu
c01hc2ssIFlFUyk7Ci0gICAgICAgIGludCBudW1EaXJzID0gW2RpcnMgY291bnRdOwotICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykgewotICAgICAgICAgICAgaWYgKHJl
YWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGNoYXIqIGRlZmF1
bHRJRE5TY3JpcHRXaGl0ZUxpc3RbMjBdID0gewotICAgICAgICAgICAgIkNvbW1vbiIsCi0gICAg
ICAgICAgICAiSW5oZXJpdGVkIiwKLSAgICAgICAgICAgICJBcmFiaWMiLAotICAgICAgICAgICAg
IkFybWVuaWFuIiwKLSAgICAgICAgICAgICJCb3BvbW9mbyIsCi0gICAgICAgICAgICAiQ2FuYWRp
YW5fQWJvcmlnaW5hbCIsCi0gICAgICAgICAgICAiRGV2YW5hZ2FyaSIsCi0gICAgICAgICAgICAi
RGVzZXJldCIsCi0gICAgICAgICAgICAiR3VqYXJhdGkiLAotICAgICAgICAgICAgIkd1cm11a2hp
IiwKLSAgICAgICAgICAgICJIYW5ndWwiLAotICAgICAgICAgICAgIkhhbiIsCi0gICAgICAgICAg
ICAiSGVicmV3IiwKLSAgICAgICAgICAgICJIaXJhZ2FuYSIsCi0gICAgICAgICAgICAiS2F0YWth
bmFfT3JfSGlyYWdhbmEiLAotICAgICAgICAgICAgIkthdGFrYW5hIiwKLSAgICAgICAgICAgICJM
YXRpbiIsCi0gICAgICAgICAgICAiVGFtaWwiLAotICAgICAgICAgICAgIlRoYWkiLAotICAgICAg
ICAgICAgIllpIiwKLSAgICAgICAgfTsKLSAgICAgICAgZm9yIChjb25zdCBjaGFyKiBzY3JpcHRO
YW1lIDogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKLSAgICAgICAgICAgIHdoaXRlTGlzdElE
TlNjcmlwdChzY3JpcHROYW1lKTsKLSAgICB9KTsKLSAgICAKLSAgICBpbnQzMl90IGkgPSAwOwot
ICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgd2hpbGUg
KGkgPCBsZW5ndGgpIHsKLSAgICAgICAgVUNoYXIzMiBjOwotICAgICAgICBVMTZfTkVYVChidWZm
ZXIsIGksIGxlbmd0aCwgYykKLSAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJP
UjsKLSAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQoYywgJmVy
cm9yKTsKLSAgICAgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICAgICAg
TE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNjcmlwdHM6
ICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICB9Ci0gICAgICAg
IGlmIChzY3JpcHQgPCAwKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoImdvdCBuZWdhdGl2ZSBu
dW1iZXIgZm9yIHNjcmlwdCBjb2RlIGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7Ci0gICAgICAgICAg
ICByZXR1cm4gTk87Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNjcmlwdCA+PSBVU0NSSVBUX0NP
REVfTElNSVQpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0KLSAgICAgICAgc2l6ZV90IGluZGV4
ID0gc2NyaXB0IC8gMzI7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAz
Mik7Ci0gICAgICAgIGlmICghKElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gJiBtYXNrKSkKLSAg
ICAgICAgICAgIHJldHVybiBOTzsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0xvb2thbGlrZUNo
YXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0g
ICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKLSAgICB9Ci0gICAgcmV0dXJuIFlFUzsKLX0K
LQotc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhj
b25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5jdGlvbjxi
b29sKFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKLXsKLSAgICBBU1NFUlQobGVuZ3RoID4g
MCk7Ci0KLSAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0g
ICAgICAgIFVDaGFyIGNoID0gYnVmZmVyW2ldOwotICAgICAgICAKLSAgICAgICAgaWYgKGNoYXJh
Y3RlcklzQWxsb3dlZChjaCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAg
ICAgIC8vIE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExvd2VyIGxldmVsIHJl
Z2lzdHJhcnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgotICAgICAgICBpZiAoY2ggPT0gJy4n
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi0jZGVmaW5lIENIRUNLX1JVTEVTX0lGX1NVRkZJ
WF9NQVRDSEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKLSAgICB7IFwKLSAgICAgICAgc3RhdGljIGNv
bnN0IGludDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yoc3VmZml4
WzBdKTsgXAotICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYmIDAgPT0gbWVtY21w
KGJ1ZmZlciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXplb2Yoc3VmZml4KSkp
IFwKLSAgICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRM
RFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlvbik7IFwKLSAgICB9
Ci0KLXN0YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNoYXIgY2gpCi17
Ci0gICAgLy8gT25seSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBh
cmUgYWxsb3dlZC4KLSAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8
IGNoID09IDB4MDQ1MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLX0KLQotc3Rh
dGljIEJPT0wgYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZm
ZXIsIGludDMyX3QgbGVuZ3RoKQotewotICAgIC8vIFNraXAgdHJhaWxpbmcgZG90IGZvciByb290
IGRvbWFpbi4KLSAgICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFdID09ICcuJykKLSAgICAgICAgbGVu
Z3RoLS07Ci0KLSAgICAvLyBodHRwOi8vY2N0bGQucnUvZmlsZXMvcGRmL2RvY3MvcnVsZXNfcnUt
cmYucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9IHsKLSAgICAgICAg
Jy4nLAotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAg
ICAweDA0NDQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgotICAgIH07Ci0gICAgQ0hFQ0tf
UlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFuRG9tYWluTmFtZUNo
YXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vcnVzbmFtZXMucnUvcnVsZXMucGwKLSAgICBzdGF0
aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNSVVNbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAw
eDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0NDMsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBVCi0gICAgICAgIDB4MDQ0MSAgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEVTCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJp
bGxpY1JVUywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8v
cnUuZmFpdGlkLm9yZy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2YS9pZG4KLSAgICBz
dGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9IHsKLSAgICAgICAgJy4nLAotICAg
ICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAweDA0M0Us
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IEtBCi0gICAgICAgIDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCi0gICAgICAg
IDB4MDQzMCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICB9OwotICAgIENIRUNLX1JV
TEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZBLCBpc1J1c3NpYW5Eb21haW5OYW1l
Q2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9mb3J1c2VyL2RvY3Mv
cmVncnVsZXMucGhwCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljREVUSVtdID0gewot
ICAgICAgICAnLicsCi0gICAgICAgIDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERF
Ci0gICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCi0gICAgICAgIDB4
MDQ0MiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCi0gICAgICAgIDB4MDQzOCAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEkKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9N
QVRDSEVTKGN5cmlsbGljREVUSSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAg
ICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBydWxlcyBub3QgcHVibGlzaGVkLiBUaGUgd29yZCBp
cyBSdXNzaWFuLCBzbyBvbmx5IGFsbG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0aW1lLAotICAgIC8v
IGFsdGhvdWdoIHdlIG1heSBuZWVkIHRvIHJldmlzZSB0aGUgY2hlY2tzIGlmIHRoaXMgZW5kcyB1
cCBiZWluZyB1c2VkIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBSdXNzaWEuCi0gICAg
c3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT05MQVlOW10gPSB7Ci0gICAgICAgICcuJywKLSAg
ICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0M0Qs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgICAgICAweDA0M0IsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBFTAotICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBBCi0gICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKLSAg
ICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KLSAgICB9OwotICAgIENI
RUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT05MQVlOLCBpc1J1c3NpYW5Eb21h
aW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHNhbWUgYXMg
YWJvdmUuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU0FZVFtdID0gewotICAgICAg
ICAnLicsCi0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAg
ICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICAgICAgMHgwNDM5LCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQotICAgICAgICAweDA0NDIgIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBURQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01B
VENIRVMoY3lyaWxsaWNTQVlULCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAg
IC8vIGh0dHA6Ly9waXIub3JnL3Byb2R1Y3RzL29wci1kb21haW4vIC0gcnVsZXMgbm90IHB1Ymxp
c2hlZC4gQWNjb3JkaW5nIHRvIHRoZSByZWdpc3RyeSBzaXRlLAotICAgIC8vIHRoZSBpbnRlbmRl
ZCBhdWRpZW5jZSBpcyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xhdmljLXNwZWFraW5nIG1hcmtldHMi
LgotICAgIC8vIENocm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lhbiwgc28gc3RpY2tp
bmcgd2l0aCB0aGF0IGZvciBub3cuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT1JH
W10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgTwotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAg
ICAgICAweDA0MzMgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKLSAgICB9OwotICAgIENI
RUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1c3NpYW5Eb21haW5O
YW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxlcy5odG1sCi0gICAg
c3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAg
ICAgMHgwNDMxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICAgICAgMHgwNDM1LCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKLSAgICAgICAgMHgwNDNCICAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgRUwKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVT
KGN5cmlsbGljQkVMLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBSdXNzaWFuIGFuZCBCeWVs
b3J1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAg
IHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8
IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5IHx8IGlzQVNDSUlE
aWdpdChjaCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gaHR0cDovL3d3dy5uaWMu
a3ovZG9jcy9wb3J5YWRva192bmVkcmVuaXlhX2thel9ydS5wZGYKLSAgICBzdGF0aWMgY29uc3Qg
VUNoYXIgY3lyaWxsaWNLQVpbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0OUIsIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDA0MzAs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAgICAgIDB4MDQzNyAgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIFpFCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hF
UyhjeXJpbGxpY0tBWiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gS2F6YWtoIGxldHRlcnMs
IGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4
MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0RDkgfHwg
Y2ggPT0gMHgwNDkzIHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMgfHwgY2ggPT0gMHgw
NEU5IHx8IGNoID09IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0gMHgwNEJCIHx8IGNo
ID09IDB4MDQ1NiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQot
ICAgIC8vIGh0dHA6Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1bGVzJTIwb2YlMjBV
S1JfdjQuMC5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNVS1JbXSA9IHsKLSAg
ICAgICAgJy4nLAotICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCi0g
ICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAgIDB4MDQ0
MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19J
Rl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1VLUiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8g
UnVzc2lhbiBhbmQgVWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxv
d2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNo
ID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8IGNoID09IDB4MDQ1
NiB8fCBjaCA9PSAweDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAg
fSk7Ci0KLSAgICAvLyBodHRwOi8vd3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1FTlRJL2lkbi1zcmIt
cG9saWN5LXRlcm1zb2Z1c2UtdjEuNC1lbmcucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5
cmlsbGljU1JCW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRVMKLSAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgRVIKLSAgICAgICAgMHgwNDMxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICB9
OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU1JCLCBbXShVQ2hh
ciBjaCkgewotICAgICAgICAvLyBTZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFy
ZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0Mzgp
IHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTIgfHwgY2gg
PT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0gMHgwNDVC
IHx8IGNoID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9
KTsKLQotICAgIC8vIGh0dHA6Ly9tYXJuZXQubWsvZG9jL3ByYXZpbG5pay1tay1ta2QucGRmCi0g
ICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTUtEW10gPSB7Ci0gICAgICAgICcuJywKLSAg
ICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KLSAgICAgICAgMHgwNDNB
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwNDM0ICAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgREUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRD
SEVTKGN5cmlsbGljTUtELCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBNYWNlZG9uaWFuIGxl
dHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNo
ID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgw
NDQ4KSB8fCBjaCA9PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1IHx8IGNoID09IDB4MDQ1OCB8fCBj
aCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8fCBjaCA9PSAweDA0
NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBo
dHRwczovL3d3dy5tb24ubW4vY3MvCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTU9O
W10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgRU0KLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAg
ICAgICAweDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgIH07Ci0gICAgQ0hF
Q0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT04sIFtdKFVDaGFyIGNoKSB7Ci0g
ICAgICAgIC8vIE1vbmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dl
ZC4KLSAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9
PSAweDA0NTEgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRBRiB8fCBpc0FTQ0lJRGlnaXQo
Y2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIE5vdCBhIGtub3duIHRvcCBsZXZl
bCBkb21haW4gd2l0aCBzcGVjaWFsIHJ1bGVzLgotICAgIHJldHVybiBOTzsKLX0KLQotLy8gUmV0
dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1h
a2VTdHJpbmcgaXMgTk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwgb3Igc2VsZiB0
byBpbmRpY2F0ZSBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1ha2VTdHJpbmcgaXMgWUVT
LCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBwZWQgc3RyaW5nLgot
c3RhdGljIE5TU3RyaW5nICptYXBIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBO
U1JhbmdlIHJhbmdlLCBCT09MIGVuY29kZSwgQk9PTCBtYWtlU3RyaW5nLCBCT09MICplcnJvcikK
LXsKLSAgICBpZiAocmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCi0gICAgVUNoYXIgc291cmNlQnVmZmVyW0hPU1RfTkFNRV9CVUZG
RVJfTEVOR1RIXTsKLSAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NUX05BTUVfQlVGRkVS
X0xFTkdUSF07Ci0gICAgCi0gICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6
QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24gIT0gTlNO
b3RGb3VuZCkgewotICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBzdWJzdHJp
bmdXaXRoUmFuZ2U6cmFuZ2VdOwotICAgICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFz
ZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgKENG
U3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7Ci0gICAgICAgIGlmIChzdWJzdHJpbmcp
IHsKLSAgICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKLSAgICAgICAgICAgIHJhbmdlID0g
TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAK
LSAgICBpbnQgbGVuZ3RoID0gcmFuZ2UubGVuZ3RoOwotICAgIFtzdHJpbmcgZ2V0Q2hhcmFjdGVy
czpzb3VyY2VCdWZmZXIgcmFuZ2U6cmFuZ2VdOwotICAgIAotICAgIFVFcnJvckNvZGUgdWVycm9y
ID0gVV9aRVJPX0VSUk9SOwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5B
X0lORk9fSU5JVElBTElaRVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0g
KGVuY29kZSA/IHVpZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5pY29kZSkoJlVSTFBh
cnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksIHNvdXJjZUJ1ZmZlciwg
bGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgsICZwcm9j
ZXNzaW5nRGV0YWlscywgJnVlcnJvcik7Ci0gICAgaWYgKGxlbmd0aCAmJiAoVV9GQUlMVVJFKHVl
cnJvcikgfHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkgewotICAgICAgICAqZXJyb3IgPSBZ
RVM7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIAotICAgIGlmIChudW1DaGFyYWN0
ZXJzQ29udmVydGVkID09IGxlbmd0aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZlciwgZGVzdGluYXRp
b25CdWZmZXIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpKQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIAotICAgIGlmICghZW5jb2RlICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxp
c3QoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpICYmICFhbGxDaGFy
YWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnND
b252ZXJ0ZWQpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBtYWtlU3Ry
aW5nID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0aW9uQnVmZmVyIGxl
bmd0aDpudW1DaGFyYWN0ZXJzQ29udmVydGVkXSA6IHN0cmluZzsKLX0KLQotQk9PTCBob3N0TmFt
ZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwg
Qk9PTCAqZXJyb3IpCi17Ci0gICAgcmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywg
cmFuZ2UsIE5PLCBOTywgZXJyb3IpICE9IG5pbDsKLX0KLSAKLUJPT0wgaG9zdE5hbWVOZWVkc0Vu
Y29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVy
cm9yKQotewotICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBZ
RVMsICBOTywgZXJyb3IpICE9IG5pbDsKLX0KLQotTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0
aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgQk9PTCBlcnJv
ciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5n
LCByYW5nZSwgTk8sIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcg
KmVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2Up
Ci17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5h
bWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgWUVTLCBZRVMsICZlcnJvcik7Ci0gICAgaWYgKGVy
cm9yKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhv
c3Q7Ci19Ci0KLU5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQotewot
ICAgIEJPT0wgZXJyb3IgPSBOTzsKLSAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0
aFJhbmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgTk8sIFlFUywg
JmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJu
ICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5T
U3RyaW5nICpzdHJpbmcpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpo
b3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5n
IGxlbmd0aF0pLCBZRVMsIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotc3RhdGlj
IHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1Jh
bmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSwgQk9PTCBlbmNvZGUp
Ci17Ci0gICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3
aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3QgbmVlZCBtYXBwaW5nLgot
ICAgIC8vIFRoZXJlZm9yZSwgd2UgdXNlIG5pbCB0byBpbmRpY2F0ZSBubyBtYXBwaW5nIGhlcmUg
YW5kIGFuIGVtcHR5IGFycmF5IHRvIGluZGljYXRlIGVycm9yLgotCi0gICAgQk9PTCBlcnJvciA9
IE5POwotICAgIEJPT0wgbmVlZHNNYXBwaW5nID0gZW5jb2RlID8gaG9zdE5hbWVOZWVkc0VuY29k
aW5nV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsICZlcnJvcikgOiBob3N0TmFtZU5lZWRzRGVjb2Rp
bmdXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgJmVycm9yKTsKLSAgICBpZiAoIWVycm9yICYmICFu
ZWVkc01hcHBpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIWFycmF5KQotICAg
ICAgICBhcnJheSA9IGFkb3B0TlMoW05TTXV0YWJsZUFycmF5IG5ld10pOwotCi0gICAgaWYgKCFl
cnJvcikKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpy
YW5nZV1dOwotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyhO
U1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
JiBhcnJheSkKLXsKLSAgICByZXR1cm4gY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhzdHJp
bmcsIHJhbmdlLCBhcnJheSwgWUVTKTsKLX0KLQotc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1Ro
YXROZWVkRGVjb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCi17Ci0gICAgcmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0
TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIE5PKTsKLX0KLQotc3RhdGljIHZvaWQg
YXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywg
U3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYg
YXJyYXkpCi17Ci0gICAgLy8gSW4gYSBtYWlsdG86IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVy
IGEgJ0AnIGNoYXJhY3RlciBhbmQgZW5kIHdpdGggYSAnPicgb3IgJywnIG9yICc/JyBjaGFyYWN0
ZXIuCi0gICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5ncyBzbyB0aGF0IGNoYXJhY3RlcnMgaW4gdGhl
bSBkb24ndCBjb25mdXNlIHVzLgotICAgIC8vIFdoZW4gd2UgZmluZCBhICc/JyBjaGFyYWN0ZXIs
IHdlIGFyZSBwYXN0IHRoZSBwYXJ0IG9mIHRoZSBVUkwgdGhhdCBjb250YWlucyBob3N0IG5hbWVz
LgotICAgIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJT
ZXQ+PiBob3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNo
YXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJcIkA/Il07Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3ROYW1lRW5kQ2hhcmFj
dGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5n
OkAiPiw/Il07Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3Rl
clNldD4+IHF1b3RlZFN0cmluZ0NoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVy
U2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIlwiXFwiXTsKLSAgICAKLSAgICB1bnNpZ25lZCBz
dHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07Ci0gICAgTlNSYW5nZSByZW1haW5pbmcgPSBO
U01ha2VSYW5nZSgwLCBzdHJpbmdMZW5ndGgpOwotICAgIAotICAgIHdoaWxlICgxKSB7Ci0gICAg
ICAgIC8vIEZpbmQgc3RhcnQgb2YgaG9zdCBuYW1lIG9yIG9mIHF1b3RlZCBzdHJpbmcuCi0gICAg
ICAgIE5TUmFuZ2UgaG9zdE5hbWVPclN0cmluZ1N0YXJ0ID0gW3N0cmluZyByYW5nZU9mQ2hhcmFj
dGVyRnJvbVNldDpob3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9w
dGlvbnM6MCByYW5nZTpyZW1haW5pbmddOwotICAgICAgICBpZiAoaG9zdE5hbWVPclN0cmluZ1N0
YXJ0LmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdW5pY2hhciBjID0gW3N0cmluZyBjaGFyYWN0ZXJBdEluZGV4Omhvc3ROYW1lT3JTdHJpbmdT
dGFydC5sb2NhdGlvbl07Ci0gICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2Uo
aG9zdE5hbWVPclN0cmluZ1N0YXJ0KTsKLSAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmlu
Z0xlbmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09
ICc/JykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09ICdA
JykgewotICAgICAgICAgICAgLy8gRmluZCBlbmQgb2YgaG9zdCBuYW1lLgotICAgICAgICAgICAg
dW5zaWduZWQgaG9zdE5hbWVTdGFydCA9IHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAg
IE5TUmFuZ2UgaG9zdE5hbWVFbmQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhv
c3ROYW1lRW5kQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5n
XTsKLSAgICAgICAgICAgIEJPT0wgZG9uZTsKLSAgICAgICAgICAgIGlmIChob3N0TmFtZUVuZC5s
b2NhdGlvbiA9PSBOU05vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgaG9zdE5hbWVFbmQubG9j
YXRpb24gPSBzdHJpbmdMZW5ndGg7Ci0gICAgICAgICAgICAgICAgZG9uZSA9IFlFUzsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gaG9z
dE5hbWVFbmQubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0
cmluZ0xlbmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICBkb25lID0g
Tk87Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFByb2Nlc3Mg
aG9zdCBuYW1lIHJhbmdlLgotICAgICAgICAgICAgZihzdHJpbmcsIE5TTWFrZVJhbmdlKGhvc3RO
YW1lU3RhcnQsIGhvc3ROYW1lRW5kLmxvY2F0aW9uIC0gaG9zdE5hbWVTdGFydCksIGFycmF5KTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGRvbmUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5n
LgotICAgICAgICAgICAgQVNTRVJUKGMgPT0gJyInKTsKLSAgICAgICAgICAgIHdoaWxlICgxKSB7
Ci0gICAgICAgICAgICAgICAgTlNSYW5nZSBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBb
c3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OnF1b3RlZFN0cmluZ0NoYXJhY3RlcnMuZ2V0
KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107Ci0gICAgICAgICAgICAgICAgaWYg
KGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBjID0gW3N0cmluZyBj
aGFyYWN0ZXJBdEluZGV4OmVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbl07Ci0g
ICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gTlNNYXhSYW5nZShlc2NhcGVkQ2hh
cmFjdGVyT3JTdHJpbmdFbmQpOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBz
dHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgLy8gSWYgd2UgYXJlIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgdGhlbiBicmVh
ayBmcm9tIHRoZSBzdHJpbmcgbG9vcCBiYWNrIHRvIHRoZSBob3N0IG5hbWUgbG9vcC4KLSAgICAg
ICAgICAgICAgICBpZiAoYyA9PSAnIicpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIFNraXAgZXNjYXBlZCBjaGFyYWN0ZXIu
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGMgPT0gJ1xcJyk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFyZW1haW5pbmcubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgICAgICByZW1haW5pbmcubG9jYXRpb24gKz0gMTsKLSAgICAgICAgICAgICAgICByZW1h
aW5pbmcubGVuZ3RoIC09IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LXN0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKE5TU3RyaW5nICpz
dHJpbmcsIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4mIGFycmF5KQotewotICAgIC8vIEZpbmQgaG9zdG5hbWVzLiBUb28gYmFkIHdlIGNhbid0
IHVzZSBhbnkgcmVhbCBVUkwtcGFyc2luZyBjb2RlIHRvIGRvIHRoaXMsCi0gICAgLy8gYnV0IHdl
IGhhdmUgdG8gZG8gaXQgYmVmb3JlIGRvaW5nIGFsbCB0aGUgJS1lc2NhcGluZywgYW5kIHRoaXMg
aXMgdGhlIG9ubHkKLSAgICAvLyBjb2RlIHdlIGhhdmUgdGhhdCBwYXJzZXMgbWFpbHRvIFVSTHMg
YW55d2F5LgotICAgIAotICAgIC8vIE1heWJlIHdlIHNob3VsZCBpbXBsZW1lbnQgdGhpcyB1c2lu
ZyBhIGNoYXJhY3RlciBidWZmZXIgaW5zdGVhZD8KLSAgICAKLSAgICBpZiAocHJvdG9jb2xJcyhz
dHJpbmcsICJtYWlsdG8iKSkgewotICAgICAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub01haWxU
b1VSTFN0cmluZyhzdHJpbmcsIGYsIGFycmF5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAKLSAgICAvLyBGaW5kIHRoZSBob3N0IG5hbWUgaW4gYSBoaWVyYXJjaGljYWwgVVJMLgotICAg
IC8vIEl0IGNvbWVzIGFmdGVyIGEgIjovLyIgc2VxdWVuY2UsIHdpdGggc2NoZW1lIGNoYXJhY3Rl
cnMgcHJlY2VkaW5nLgotICAgIC8vIElmIGVuZHMgd2l0aCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcg
b3IgYSAiOiIsICIvIiwgb3IgYSAiPyIuCi0gICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFj
dGVyLCB0aGUgaG9zdCBwYXJ0IGlzIGp1c3QgdGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KLSAgICBO
U1JhbmdlIHNlcGFyYXRvclJhbmdlID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiOi8vIl07Ci0g
ICAgaWYgKHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICAvLyBDaGVjayB0aGF0IGFsbCBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUg
Oi8vIGFyZSB2YWxpZCBzY2hlbWUgY2hhcmFjdGVycy4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gbm9uU2NoZW1lQ2hhcmFjdGVycyA9IFtbTlND
aGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIkFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky0u
Il0gaW52ZXJ0ZWRTZXRdOwotICAgIGlmIChbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0
Om5vblNjaGVtZUNoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJh
bmdlKDAsIHNlcGFyYXRvclJhbmdlLmxvY2F0aW9uKV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IFtzdHJp
bmcgbGVuZ3RoXTsKLSAgICAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5T
Q2hhcmFjdGVyU2V0Pj4gaG9zdFRlcm1pbmF0b3JzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3Rl
clNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCI6Lz8jIl07Ci0gICAgCi0gICAgLy8gU3RhcnQg
YWZ0ZXIgdGhlIHNlcGFyYXRvci4KLSAgICB1bnNpZ25lZCBhdXRob3JpdHlTdGFydCA9IE5TTWF4
UmFuZ2Uoc2VwYXJhdG9yUmFuZ2UpOwotICAgIAotICAgIC8vIEZpbmQgdGVybWluYXRpbmcgY2hh
cmFjdGVyLgotICAgIE5TUmFuZ2UgaG9zdE5hbWVUZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9m
Q2hhcmFjdGVyRnJvbVNldDpob3N0VGVybWluYXRvcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJh
bmdlOk5TTWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBzdHJpbmdMZW5ndGggLSBhdXRob3JpdHlT
dGFydCldOwotICAgIHVuc2lnbmVkIGhvc3ROYW1lRW5kID0gaG9zdE5hbWVUZXJtaW5hdG9yLmxv
Y2F0aW9uID09IE5TTm90Rm91bmQgPyBzdHJpbmdMZW5ndGggOiBob3N0TmFtZVRlcm1pbmF0b3Iu
bG9jYXRpb247Ci0gICAgCi0gICAgLy8gRmluZCAiQCIgZm9yIHRoZSBzdGFydCBvZiB0aGUgaG9z
dCBuYW1lLgotICAgIE5TUmFuZ2UgdXNlckluZm9UZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9m
U3RyaW5nOkAiQCIgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBo
b3N0TmFtZUVuZCAtIGF1dGhvcml0eVN0YXJ0KV07Ci0gICAgdW5zaWduZWQgaG9zdE5hbWVTdGFy
dCA9IHVzZXJJbmZvVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8gYXV0aG9yaXR5
U3RhcnQgOiBOU01heFJhbmdlKHVzZXJJbmZvVGVybWluYXRvcik7Ci0gICAgCi0gICAgcmV0dXJu
IGYoc3RyaW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZCAtIGhvc3RO
YW1lU3RhcnQpLCBhcnJheSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IG1hcEhv
c3ROYW1lcyhOU1N0cmluZyAqc3RyaW5nLCBCT09MIGVuY29kZSkKLXsKLSAgICAvLyBHZW5lcmFs
bHksIHdlIHdhbnQgdG8gb3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIG9uZSBo
b3N0IG5hbWUgdGhhdCBkb2VzIG5vdCBuZWVkIG1hcHBpbmcuCi0gICAgCi0gICAgaWYgKGVuY29k
ZSAmJiBbc3RyaW5nIGNhbkJlQ29udmVydGVkVG9FbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2Rp
bmddKQotICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgIAotICAgIC8vIE1ha2UgYSBsaXN0IG9m
IHJhbmdlcyB0aGF0IGFjdHVhbGx5IG5lZWQgbWFwcGluZy4KLSAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGhvc3ROYW1lUmFuZ2VzOwotICAgIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9u
IGYgPSBlbmNvZGUgPyBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyA6IGNvbGxlY3RSYW5n
ZXNUaGF0TmVlZERlY29kaW5nOwotICAgIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5n
KHN0cmluZywgZiwgaG9zdE5hbWVSYW5nZXMpOwotICAgIGlmICghaG9zdE5hbWVSYW5nZXMpCi0g
ICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICBpZiAoIVtob3N0TmFtZVJhbmdlcyBjb3VudF0p
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgLy8gRG8gdGhlIG1hcHBpbmcuCi0gICAg
YXV0byBtdXRhYmxlQ29weSA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwotICAgIHVu
c2lnbmVkIGkgPSBbaG9zdE5hbWVSYW5nZXMgY291bnRdOwotICAgIHdoaWxlIChpLS0pIHsKLSAg
ICAgICAgTlNSYW5nZSBob3N0TmFtZVJhbmdlID0gW1tob3N0TmFtZVJhbmdlcyBvYmplY3RBdElu
ZGV4OmldIHJhbmdlVmFsdWVdOwotICAgICAgICBOU1N0cmluZyAqbWFwcGVkSG9zdE5hbWUgPSBl
bmNvZGUgPyBlbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIGhvc3ROYW1lUmFuZ2UpIDog
ZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKTsKLSAgICAgICAg
W211dGFibGVDb3B5IHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpob3N0TmFtZVJhbmdlIHdpdGhT
dHJpbmc6bWFwcGVkSG9zdE5hbWVdOwotICAgIH0KLSAgICByZXR1cm4gbXV0YWJsZUNvcHk7Ci19
Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNl
KE5TU3RyaW5nICpzdHJpbmcpCi17Ci0gICAgYXV0byB0cmltbWVkID0gYWRvcHROUyhbc3RyaW5n
IG11dGFibGVDb3B5XSk7Ci0gICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoX19icmlkZ2UgQ0ZN
dXRhYmxlU3RyaW5nUmVmKXRyaW1tZWQuZ2V0KCkpOwotICAgIHJldHVybiB0cmltbWVkOwotfQot
Ci1OU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJM
ICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZSBjb21wb25lbnQpCi17Ci0gICAgaWYgKCFVUkwpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgQ0ZSYW5nZSBmcmFnUmcgPSBDRlVSTEdldEJ5
dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIG51
bGxwdHIpOwotICAgIGlmIChmcmFnUmcubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAg
IHJldHVybiBVUkw7Ci0KLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RI
PiB1cmxCeXRlcyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBudW1CeXRl
cyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgdXJsQnl0ZXMuZGF0YSgp
LCB1cmxCeXRlcy5zaXplKCkpOwotICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBu
dW1CeXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwg
MCk7Ci0gICAgICAgIHVybEJ5dGVzLmdyb3cobnVtQnl0ZXMpOwotICAgICAgICBDRlVSTEdldEJ5
dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOwot
ICAgIH0KLQotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxw
dHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2Rp
bmdVVEY4LCBudWxscHRyKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZV
UkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRp
b24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgIAot
ICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOwotfQot
Ci1zdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihOU1VSTCAqVVJM
KQotewotICAgIHJldHVybiBVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25l
bnQoVVJMLCBrQ0ZVUkxDb21wb25lbnRSZXNvdXJjZVNwZWNpZmllcik7Ci19Ci0KLU5TVVJMICpV
UkxXaXRoRGF0YShOU0RhdGEgKmRhdGEsIE5TVVJMICpiYXNlVVJMKQotewotICAgIGlmICghZGF0
YSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBOU1VSTCAqcmVzdWx0ID0gbmlsOwot
ICAgIHNpemVfdCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOwotICAgIGlmIChsZW5ndGggPiAwKSB7
Ci0gICAgICAgIC8vIHdvcmsgYXJvdW5kIDxyZGFyOi8vNDQ3MDc3MT46IENGVVJMQ3JlYXRlQWJz
b2x1dGVVUkxXaXRoQnl0ZXMoLi4sIFRSVUUpIGRvZXNuJ3QgcmVtb3ZlIG5vbi1wYXRoIGNvbXBv
bmVudHMuCi0gICAgICAgIGJhc2VVUkwgPSBVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIo
YmFzZVVSTCk7Ci0gICAgICAgIAotICAgICAgICBjb25zdCBVSW50OCAqYnl0ZXMgPSBzdGF0aWNf
Y2FzdDxjb25zdCBVSW50OCo+KFtkYXRhIGJ5dGVzXSk7Ci0gICAgICAgIAotICAgICAgICAvLyBD
RlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzIHdvdWxkIGNvbXBsYWluIHRvIGNvbnNvbGUg
aWYgd2UgcGFzc2VkIGEgcGF0aCB0byBpdC4KLSAgICAgICAgaWYgKGJ5dGVzWzBdID09ICcvJyAm
JiAhYmFzZVVSTCkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICAv
LyBOT1RFOiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hl
biBjb21wdXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAgICAg
ICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBp
cyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgICAg
IC8vIGNvdWxkIGVpdGhlciBiZSBhIG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZm
ZXJlbnQgZW5jb2RpbmcsIGxpa2Ugc2hpZnQtamlzLCBzbyB3ZSBmYWxsIGJhY2sKLSAgICAgICAg
Ly8gb250byB1c2luZyBJU08gTGF0aW4gMSBpbiB0aG9zZSBjYXNlcy4KLSAgICAgICAgcmVzdWx0
ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxs
cHRyLCBieXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBDRlVS
TFJlZiliYXNlVVJMLCBZRVMpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICBy
ZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVz
KG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoX19i
cmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc3Vs
dCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
c3RhdGljIE5TRGF0YSAqZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykK
LXsKLSAgICBOU0RhdGEgKnVzZXJUeXBlZERhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBBU1NFUlQodXNlclR5cGVkRGF0YSk7Ci0gICAg
Ci0gICAgY29uc3QgVUludDgqIGluQnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBVSW50OCAqPihb
dXNlclR5cGVkRGF0YSBieXRlc10pOwotICAgIGludCBpbkxlbmd0aCA9IFt1c2VyVHlwZWREYXRh
IGxlbmd0aF07Ci0gICAgaWYgKCFpbkxlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAK
LSAgICBjaGFyKiBvdXRCeXRlcyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obWFsbG9jKGluTGVuZ3Ro
ICogMykpOyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0gICAg
Y2hhciogcCA9IG91dEJ5dGVzOwotICAgIGludCBvdXRMZW5ndGggPSAwOwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgaW5MZW5ndGg7IGkrKykgewotICAgICAgICBVSW50OCBjID0gaW5CeXRlc1tp
XTsKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKLSAgICAgICAgICAgICpw
KysgPSAnJSc7Ci0gICAgICAgICAgICAqcCsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQo
Yyk7Ci0gICAgICAgICAgICAqcCsrID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0g
ICAgICAgICAgICBvdXRMZW5ndGggKz0gMzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICpwKysgPSBjOwotICAgICAgICAgICAgb3V0TGVuZ3RoKys7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpvdXRCeXRlcyBsZW5n
dGg6b3V0TGVuZ3RoXTsgLy8gYWRvcHRzIG91dEJ5dGVzCi19Ci0KLU5TVVJMICpVUkxXaXRoVXNl
clR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TVVJMICpuc1VSTCkKLXsKLSAgICBpZiAo
IXN0cmluZykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGF1dG8gbWFwcGVkU3RyaW5nID0g
bWFwSG9zdE5hbWVzKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCksIFlF
Uyk7Ci0gICAgaWYgKCFtYXBwZWRTdHJpbmcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAv
LyBMZXQncyBjaGVjayB3aGV0aGVyIHRoZSBVUkwgaXMgYm9ndXMuCi0gICAgVVJMIHVybCB7IFVS
TCB7IG5zVVJMIH0sIG1hcHBlZFN0cmluZy5nZXQoKSB9OwotICAgIGlmICghdXJsLmNyZWF0ZUNG
VVJMKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjA1NwotICAgIC8vIFdlIHNob3VsZCBiZSBh
YmxlIHRvIHVzZSB1cmwuY3JlYXRlQ0ZVUkwgaW5zdGVhZCBvZiB1c2luZyBkaXJlY3RseSBDRlVS
TCBwYXJzaW5nIHJvdXRpbmVzLgotICAgIE5TRGF0YSAqZGF0YSA9IGRhdGFXaXRoVXNlclR5cGVk
U3RyaW5nKG1hcHBlZFN0cmluZy5nZXQoKSk7Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1
cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKLQotICAgIHJldHVybiBVUkxXaXRoRGF0YShk
YXRhLCBuc1VSTCk7Ci19Ci0KLU5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRl
ZChOU1N0cmluZyAqc3RyaW5nLCBOU1VSTCAqVVJMKQotewotICAgIGlmICghc3RyaW5nKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgTlNVUkwgKnJlc3VsdCA9IFVSTFdpdGhVc2VyVHlwZWRT
dHJpbmcoc3RyaW5nLCBVUkwpOwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIE5TRGF0YSAq
cmVzdWx0RGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZyk7Ci0gICAgICAgIGlm
ICghcmVzdWx0RGF0YSkKLSAgICAgICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpA
IiJdOwotICAgICAgICByZXN1bHQgPSBVUkxXaXRoRGF0YShyZXN1bHREYXRhLCBVUkwpOwotICAg
IH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBCT09MIGhhc1F1ZXN0aW9uTWFy
a09ubHlRdWVyeVN0cmluZyhOU1VSTCAqVVJMKQotewotICAgIENGUmFuZ2UgcmFuZ2VXaXRoU2Vw
YXJhdG9yczsKLSAgICBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCBrQ0ZVUkxDb21wb25lbnRRdWVyeSwgJnJhbmdlV2l0aFNlcGFyYXRvcnMpOwot
ICAgIGlmIChyYW5nZVdpdGhTZXBhcmF0b3JzLmxvY2F0aW9uICE9IGtDRk5vdEZvdW5kICYmIHJh
bmdlV2l0aFNlcGFyYXRvcnMubGVuZ3RoID09IDEpCi0gICAgICAgIHJldHVybiBZRVM7Ci0KLSAg
ICByZXR1cm4gTk87Ci19Ci0KLU5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwg
KlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudFR5cGUpCi17Ci0gICAgVmVjdG9yPFVJ
bnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYWxsQnl0ZXNCdWZmZXIoVVJMX0JZVEVTX0JV
RkZFUl9MRU5HVEgpOwotICAgIENGSW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChf
X2JyaWRnZSBDRlVSTFJlZilVUkwsIGFsbEJ5dGVzQnVmZmVyLmRhdGEoKSwgYWxsQnl0ZXNCdWZm
ZXIuc2l6ZSgpKTsKLSAgICBpZiAoYnl0ZXNGaWxsZWQgPT0gLTEpIHsKLSAgICAgICAgQ0ZJbmRl
eCBieXRlc1RvQWxsb2NhdGUgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkws
IG51bGxwdHIsIDApOwotICAgICAgICBhbGxCeXRlc0J1ZmZlci5ncm93KGJ5dGVzVG9BbGxvY2F0
ZSk7Ci0gICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxS
ZWYpVVJMLCBhbGxCeXRlc0J1ZmZlci5kYXRhKCksIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgfQot
ICAgIAotICAgIGNvbnN0IENGVVJMQ29tcG9uZW50VHlwZSBjb21wbGV0ZVVSTCA9IChDRlVSTENv
bXBvbmVudFR5cGUpLTE7Ci0gICAgQ0ZSYW5nZSByYW5nZTsKLSAgICBpZiAoY29tcG9uZW50VHlw
ZSAhPSBjb21wbGV0ZVVSTCkgewotICAgICAgICByYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9y
Q29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudFR5cGUsIG51bGxwdHIp
OwotICAgICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgICAg
ICByZXR1cm4gbmlsOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJhbmdlLmxvY2F0aW9uID0gMDsK
LSAgICAgICAgcmFuZ2UubGVuZ3RoID0gYnl0ZXNGaWxsZWQ7Ci0gICAgfQotICAgIAotICAgIE5T
RGF0YSAqY29tcG9uZW50RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczphbGxCeXRlc0J1ZmZl
ci5kYXRhKCkgKyByYW5nZS5sb2NhdGlvbiBsZW5ndGg6cmFuZ2UubGVuZ3RoXTsgCi0gICAgCi0g
ICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyICo+KFtjb21wb25lbnREYXRhIGJ5dGVzXSk7Ci0gICAgTlNNdXRhYmxlRGF0YSAqcmVz
dWx0RGF0YSA9IFtOU011dGFibGVEYXRhIGRhdGFdOwotICAgIC8vIE5PVEU6IGFkZCBsZWFkaW5n
ICc/JyB0byBxdWVyeSBzdHJpbmdzIG5vbi16ZXJvIGxlbmd0aCBxdWVyeSBzdHJpbmdzLgotICAg
IC8vIE5PVEU6IHJldGFpbiBxdWVzdGlvbi1tYXJrIG9ubHkgcXVlcnkgc3RyaW5ncy4KLSAgICBp
ZiAoY29tcG9uZW50VHlwZSA9PSBrQ0ZVUkxDb21wb25lbnRRdWVyeSkgewotICAgICAgICBpZiAo
cmFuZ2UubGVuZ3RoID4gMCB8fCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoVVJMKSkK
LSAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOiI/IiBsZW5ndGg6MV07ICAgIAot
ICAgIH0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlLmxlbmd0aDsgaSsrKSB7Ci0gICAg
ICAgIHVuc2lnbmVkIGNoYXIgYyA9IGJ5dGVzW2ldOwotICAgICAgICBpZiAoYyA8PSAweDIwIHx8
IGMgPj0gMHg3ZikgewotICAgICAgICAgICAgY2hhciBlc2NhcGVkWzNdOwotICAgICAgICAgICAg
ZXNjYXBlZFswXSA9ICclJzsKLSAgICAgICAgICAgIGVzY2FwZWRbMV0gPSB1cHBlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAgIGVzY2FwZWRbMl0gPSBsb3dlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmVz
Y2FwZWQgbGVuZ3RoOjNdOyAgICAKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNoYXIg
YlsxXTsKLSAgICAgICAgICAgIGJbMF0gPSBjOwotICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBw
ZW5kQnl0ZXM6YiBsZW5ndGg6MV07ICAgIAotICAgICAgICB9ICAgICAgICAgICAgICAgCi0gICAg
fQotICAgIAotICAgIHJldHVybiByZXN1bHREYXRhOwotfQotCi1zdGF0aWMgTlNVUkwgKlVSTEJ5
UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENGVVJM
Q29tcG9uZW50VHlwZSBjb21wb25lbnQpCi17Ci0gICAgQ0ZSYW5nZSByYW5nZSA9IENGVVJMR2V0
Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwg
MCk7Ci0gICAgaWYgKHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQotICAgICAgICByZXR1
cm4gVVJMOwotICAgIAotICAgIC8vIFJlbW92ZSBvbmUgc3Vic2VxdWVudCBjaGFyYWN0ZXIuCi0g
ICAgcmFuZ2UubGVuZ3RoKys7Ci0KLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJf
TEVOR1RIPiBidWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwotICAgIENGSW5kZXggbnVt
Qnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOwotICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBu
dW1CeXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwg
MCk7Ci0gICAgICAgIGJ1ZmZlci5ncm93KG51bUJ5dGVzKTsKLSAgICAgICAgQ0ZVUkxHZXRCeXRl
cygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBudW1CeXRlcyk7Ci0gICAg
fQotICAgIFVJbnQ4KiB1cmxCeXRlcyA9IGJ1ZmZlci5kYXRhKCk7Ci0gICAgICAgIAotICAgIGlm
IChudW1CeXRlcyA8IHJhbmdlLmxvY2F0aW9uKQotICAgICAgICByZXR1cm4gVVJMOwotICAgIGlm
IChudW1CeXRlcyA8IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKQotICAgICAgICByYW5n
ZS5sZW5ndGggPSBudW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uOwotICAgICAgICAKLSAgICBtZW1t
b3ZlKHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24sIHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24g
KyByYW5nZS5sZW5ndGgsIG51bUJ5dGVzIC0gcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgp
OwotICAgIAotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxw
dHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdV
VEY4LCBudWxscHRyKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxD
cmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3Ro
LCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgcmV0dXJuIHJlc3VsdCA/IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7Ci19
Ci0KLU5TVVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNVUkwgKlVSTCkKLXsKLSAgICByZXR1
cm4gVVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoVVJMLCBrQ0ZV
UkxDb21wb25lbnRVc2VySW5mbyk7Ci19Ci0KIE5TVVJMICpVUkxCeUNhbm9uaWNhbGl6aW5nVVJM
KE5TVVJMICpVUkwpCiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdCA9IGFk
b3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOlVSTF0pOwpAQCAtMTA0OSwy
MDMgKzU3LDQgQEAgTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoTlNVUkwgKlVSTCkKICAg
ICByZXR1cm4gW1tuZXdVUkwgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLU5TRGF0YSAqb3Jp
Z2luYWxVUkxEYXRhKE5TVVJMICpVUkwpCi17Ci0gICAgVUludDggKmJ1ZmZlciA9IChVSW50OCAq
KW1hbGxvYyhVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBieXRlc0ZpbGxl
ZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLCBVUkxfQllU
RVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgaWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7Ci0gICAgICAg
IENGSW5kZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxS
ZWYpVVJMLCBudWxscHRyLCAwKTsKLSAgICAgICAgYnVmZmVyID0gKFVJbnQ4ICopcmVhbGxvYyhi
dWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRC
eXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0g
ICAgICAgIEFTU0VSVChieXRlc0ZpbGxlZCA9PSBieXRlc1RvQWxsb2NhdGUpOwotICAgIH0KLSAg
ICAKLSAgICAvLyBidWZmZXIgaXMgYWRvcHRlZCBieSB0aGUgTlNEYXRhCi0gICAgTlNEYXRhICpk
YXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5OmJ1ZmZlciBsZW5ndGg6Ynl0ZXNGaWxs
ZWQgZnJlZVdoZW5Eb25lOllFU107Ci0gICAgCi0gICAgTlNVUkwgKmJhc2VVUkwgPSAoX19icmlk
Z2UgTlNVUkwgKilDRlVSTEdldEJhc2VVUkwoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCk7Ci0gICAg
aWYgKGJhc2VVUkwpCi0gICAgICAgIHJldHVybiBvcmlnaW5hbFVSTERhdGEoVVJMV2l0aERhdGEo
ZGF0YSwgYmFzZVVSTCkpOwotICAgIHJldHVybiBkYXRhOwotfQotCi1zdGF0aWMgQ0ZTdHJpbmdS
ZWYgY3JlYXRlU3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKENGU3RyaW5nUmVmIHN0
cmluZykKLXsKLSAgICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7
Ci0gICAgVmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gc291cmNlQnVmZmVy
KGxlbmd0aCk7Ci0gICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2Uo
MCwgbGVuZ3RoKSwgc291cmNlQnVmZmVyLmRhdGEoKSk7Ci0gICAgCi0gICAgVmVjdG9yPFVDaGFy
LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gb3V0QnVmZmVyOwotICAgIAotICAgIHN0ZDo6b3B0
aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgQ0ZJbmRleCBpID0gMDsKLSAg
ICB3aGlsZSAoaSA8IGxlbmd0aCkgewotICAgICAgICBVQ2hhcjMyIGM7Ci0gICAgICAgIFUxNl9O
RVhUKHNvdXJjZUJ1ZmZlciwgaSwgbGVuZ3RoLCBjKQotICAgICAgICAKLSAgICAgICAgaWYgKGlz
TG9va2FsaWtlQ2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LCBjKSkgewotICAgICAgICAgICAg
dWludDhfdCB1dGY4QnVmZmVyWzRdOwotICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOwot
ICAgICAgICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOwotICAgICAgICAgICAgVThfQVBQRU5E
KHV0ZjhCdWZmZXIsIG9mZnNldCwgNCwgYywgZmFpbHVyZSkKLSAgICAgICAgICAgIEFTU0VSVCgh
ZmFpbHVyZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsg
aiA8IG9mZnNldDsgKytqKSB7Ci0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCgnJScp
OwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4
RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQo
bG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgVUNoYXIgdXRmMTZCdWZmZXJbMl07Ci0g
ICAgICAgICAgICBDRkluZGV4IG9mZnNldCA9IDA7Ci0gICAgICAgICAgICBVQm9vbCBmYWlsdXJl
ID0gZmFsc2U7Ci0gICAgICAgICAgICBVMTZfQVBQRU5EKHV0ZjE2QnVmZmVyLCBvZmZzZXQsIDIs
IGMsIGZhaWx1cmUpCi0gICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOwotICAgICAgICAgICAg
Zm9yIChDRkluZGV4IGogPSAwOyBqIDwgb2Zmc2V0OyArK2opCi0gICAgICAgICAgICAgICAgb3V0
QnVmZmVyLmFwcGVuZCh1dGYxNkJ1ZmZlcltqXSk7Ci0gICAgICAgIH0KLSAgICAgICAgcHJldmlv
dXNDb2RlUG9pbnQgPSBjOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycyhudWxscHRyLCBvdXRCdWZmZXIuZGF0YSgpLCBvdXRCdWZmZXIuc2l6ZSgp
KTsKLX0KLQotTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCi17Ci0gICAg
TlNEYXRhICpkYXRhID0gb3JpZ2luYWxVUkxEYXRhKFVSTCk7Ci0gICAgY29uc3QgdW5zaWduZWQg
Y2hhciAqYmVmb3JlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KFtkYXRhIGJ5
dGVzXSk7Ci0gICAgaW50IGxlbmd0aCA9IFtkYXRhIGxlbmd0aF07Ci0gICAgCi0gICAgYm9vbCBt
YXlOZWVkSG9zdE5hbWVEZWNvZGluZyA9IGZhbHNlOwotICAgIAotICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKnAgPSBiZWZvcmU7Ci0gICAgaW50IGJ1ZmZlckxlbmd0aCA9IChsZW5ndGggKiAzKSAr
IDE7Ci0gICAgVmVjdG9yPGNoYXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBhZnRlcihidWZm
ZXJMZW5ndGgpOyAvLyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0g
ICAgY2hhciAqcSA9IGFmdGVyLmRhdGEoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07Ci0gICAgICAgIC8vIHVu
ZXNjYXBlIGVzY2FwZSBzZXF1ZW5jZXMgdGhhdCBpbmRpY2F0ZSBieXRlcyBncmVhdGVyIHRoYW4g
MHg3ZgotICAgICAgICBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlI
ZXhEaWdpdChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChw
W2kgKyAyXSkpIHsKLSAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAx
XSwgcFtpICsgMl0pOwotICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gdW5lc2NhcGUKLSAgICAgICAgICAgICAgICAqcSsrID0gdTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gZG8gbm90IHVuZXNjYXBlCi0gICAgICAgICAgICAg
ICAgKnErKyA9IHBbaV07Ci0gICAgICAgICAgICAgICAgKnErKyA9IHBbaSArIDFdOwotICAgICAg
ICAgICAgICAgICpxKysgPSBwW2kgKyAyXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkg
Kz0gMjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpxKysgPSBjOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICAvLyBDaGVjayBmb3IgInhuLS0iIGluIGFuIGVmZmljaWVudCwgbm9u
LWNhc2Utc2Vuc2l0aXZlLCB3YXkuCi0gICAgICAgICAgICBpZiAoYyA9PSAnLScgJiYgaSA+PSAz
ICYmICFtYXlOZWVkSG9zdE5hbWVEZWNvZGluZyAmJiAocVstNF0gfCAweDIwKSA9PSAneCcgJiYg
KHFbLTNdIHwgMHgyMCkgPT0gJ24nICYmIHFbLTJdID09ICctJykKLSAgICAgICAgICAgICAgICBt
YXlOZWVkSG9zdE5hbWVEZWNvZGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgKnEg
PSAnXDAnOwotICAgIAotICAgIC8vIENoZWNrIHN0cmluZyB0byBzZWUgaWYgaXQgY2FuIGJlIGNv
bnZlcnRlZCB0byBkaXNwbGF5IHVzaW5nIFVURi04ICAKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IHJlc3VsdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOwot
ICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIC8vIENvdWxkIG5vdCBjb252ZXJ0IHRvIFVURi04
LgotICAgICAgICAvLyBDb252ZXJ0IGNoYXJhY3RlcnMgZ3JlYXRlciB0aGFuIDB4N2YgdG8gZXNj
YXBlIHNlcXVlbmNlcy4KLSAgICAgICAgLy8gU2hpZnQgY3VycmVudCBzdHJpbmcgdG8gdGhlIGVu
ZCBvZiB0aGUgYnVmZmVyCi0gICAgICAgIC8vIHRoZW4gd2Ugd2lsbCBjb3B5IGJhY2sgYnl0ZXMg
dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgCi0gICAgICAgIC8vIGFzIHdlIGNvbnZlcnQuCi0g
ICAgICAgIGludCBhZnRlcmxlbmd0aCA9IHEgLSBhZnRlci5kYXRhKCk7Ci0gICAgICAgIGNoYXIg
KnAgPSBhZnRlci5kYXRhKCkgKyBidWZmZXJMZW5ndGggLSBhZnRlcmxlbmd0aCAtIDE7Ci0gICAg
ICAgIG1lbW1vdmUocCwgYWZ0ZXIuZGF0YSgpLCBhZnRlcmxlbmd0aCArIDEpOyAvLyBjb3BpZXMg
dHJhaWxpbmcgJ1wwJwotICAgICAgICBjaGFyICpxID0gYWZ0ZXIuZGF0YSgpOwotICAgICAgICB3
aGlsZSAoKnApIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpwOwotICAgICAgICAg
ICAgaWYgKGMgPiAweDdmKSB7Ci0gICAgICAgICAgICAgICAgKnErKyA9ICclJzsKLSAgICAgICAg
ICAgICAgICAqcSsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAg
ICAgICAgKnErKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgKnErKyA9ICpwOwotICAgICAgICAgICAgcCsrOwotICAg
ICAgICB9Ci0gICAgICAgICpxID0gJ1wwJzsKLSAgICAgICAgcmVzdWx0ID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhVVEY4U3RyaW5nOmFmdGVyLmRhdGEoKV07Ci0gICAgfQotICAgIAotICAgIGlmICht
YXlOZWVkSG9zdE5hbWVEZWNvZGluZykgewotICAgICAgICAvLyBGSVhNRTogSXMgaXQgZ29vZCB0
byBpZ25vcmUgdGhlIGZhaWx1cmUgb2YgbWFwSG9zdE5hbWVzIGFuZCBrZWVwIHJlc3VsdCBpbnRh
Y3Q/Ci0gICAgICAgIGF1dG8gbWFwcGVkUmVzdWx0ID0gbWFwSG9zdE5hbWVzKHJlc3VsdC5nZXQo
KSwgTk8pOwotICAgICAgICBpZiAobWFwcGVkUmVzdWx0KQotICAgICAgICAgICAgcmVzdWx0ID0g
bWFwcGVkUmVzdWx0OwotICAgIH0KLQotICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRT
dHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNl
KGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpcmVzdWx0LmdldCgpKSk7Ci19Ci0KLUJPT0wgaXNVc2VyVmlzaWJsZVVSTChOU1N0cmlu
ZyAqc3RyaW5nKQotewotICAgIEJPT0wgdmFsaWQgPSBZRVM7Ci0gICAgLy8gZ2V0IGJ1ZmZlcgot
ICAgIAotICAgIGNoYXIgc3RhdGljX2J1ZmZlclsxMDI0XTsKLSAgICBjb25zdCBjaGFyICpwOwot
ICAgIEJPT0wgc3VjY2VzcyA9IENGU3RyaW5nR2V0Q1N0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpc3RyaW5nLCBzdGF0aWNfYnVmZmVyLCAxMDIzLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpOwot
ICAgIHAgPSBzdWNjZXNzID8gc3RhdGljX2J1ZmZlciA6IFtzdHJpbmcgVVRGOFN0cmluZ107Ci0g
ICAgCi0gICAgaW50IGxlbmd0aCA9IHN0cmxlbihwKTsKLSAgICAKLSAgICAvLyBjaGVjayBmb3Ig
Y2hhcmFjdGVycyA8PSAweDIwIG9yID49MHg3ZiwgJS1lc2NhcGUgc2VxdWVuY2VzIG9mICU3Ziwg
YW5kIHhuLS0sIHRoZXNlCi0gICAgLy8gYXJlIHRoZSB0aGluZ3MgdGhhdCB3aWxsIGxlYWQgX3dl
Yl91c2VyVmlzaWJsZVN0cmluZyB0byBhY3R1YWxseSBjaGFuZ2UgdGhpbmdzLgotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0g
cFtpXTsKLSAgICAgICAgLy8gZXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVycywgc3BhY2UsIGFuZCBk
ZWxldGUKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID09IDB4N2YpIHsKLSAgICAgICAgICAg
IHZhbGlkID0gTk87Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChjID09
ICclJyAmJiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDFdKSkgJiYg
aSArIDIgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDJdKSkgewotICAgICAgICAg
ICAgYXV0byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7Ci0gICAgICAg
ICAgICBpZiAodSA+IDB4N2YpIHsKLSAgICAgICAgICAgICAgICB2YWxpZCA9IE5POwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaSArPSAyOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBhbiBlZmZp
Y2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgotICAgICAgICAgICAgaWYgKGMgPT0gJy0n
ICYmIGkgPj0gMyAmJiAocFtpIC0gM10gfCAweDIwKSA9PSAneCcgJiYgKHBbaSAtIDJdIHwgMHgy
MCkgPT0gJ24nICYmIHBbaSAtIDFdID09ICctJykgewotICAgICAgICAgICAgICAgIHZhbGlkID0g
Tk87Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgCi0gICAgcmV0dXJuIHZhbGlkOwotfQotCi1OU1JhbmdlIHJhbmdlT2ZVUkxTY2hl
bWUoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICBOU1JhbmdlIGNvbG9uID0gW3N0cmluZyByYW5n
ZU9mU3RyaW5nOkAiOiJdOwotICAgIGlmIChjb2xvbi5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYm
IGNvbG9uLmxvY2F0aW9uID4gMCkgewotICAgICAgICBOU1JhbmdlIHNjaGVtZSA9IHswLCBjb2xv
bi5sb2NhdGlvbn07Ci0gICAgICAgIC8qCi0gICAgICAgICBUaGlzIHN0dWZmIGlzIHZlcnkgZXhw
ZW5zaXZlLiAgMTAtMTUgbXNlYyBvbiBhIDJ4MS4yR0h6LiAgSWYgbm90IGNhY2hlZCBpdCBzd2Ft
cHMKLSAgICAgICAgIGV2ZXJ5dGhpbmcgZWxzZSB3aGVuIGFkZGluZyBpdGVtcyB0byB0aGUgYXV0
b2NvbXBsZXRlIERCLiAgTWFrZXMgbWUgd29uZGVyIGlmIHdlCi0gICAgICAgICBldmVuIG5lZWQg
dG8gZW5mb3JjZSB0aGUgY2hhcmFjdGVyIHNldCBoZXJlLgotICAgICAgICAgKi8KLSAgICAgICAg
TlNTdHJpbmcgKmFjY2VwdGFibGVDaGFyYWN0ZXJzID0gQCJBQkNERUZHSElKS0xNTk9QUVJTVFVW
V1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsuLSI7Ci0gICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBJbnZlcnNlU2No
ZW1lQ2hhcmFjdGVyU2V0KFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3Rl
cnNJblN0cmluZzphY2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52ZXJ0ZWRTZXRdKTsKLSAgICAgICAg
TlNSYW5nZSBpbGxlZ2FscyA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6SW52ZXJz
ZVNjaGVtZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsK
LSAgICAgICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAg
ICByZXR1cm4gc2NoZW1lOwotICAgIH0KLSAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3Vu
ZCwgMCk7Ci19Ci0KLUJPT0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKnN0cmluZykK
LXsKLSAgICAvLyBUcmltIHdoaXRlc3BhY2UgYmVjYXVzZSBfd2ViX1VSTFdpdGhTdHJpbmcgYWxs
b3dzIHdoaXRlc3BhY2UuCi0gICAgcmV0dXJuIHJhbmdlT2ZVUkxTY2hlbWUoc3RyaW5nQnlUcmlt
bWluZ1doaXRlc3BhY2Uoc3RyaW5nKS5nZXQoKSkubG9jYXRpb24gIT0gTlNOb3RGb3VuZDsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgK
aW5kZXggYzk5Y2IzODM3OGMxOWFiODJjZTkxZThiZjAyMzdhYjc3Mjg3OTExYS4uNjMzMTc4ZTRl
ZWFiNWVhMzE5MzYyMTAxMGU3NThjYjM0MjBjODE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmln
dXJhdGlvbi5oCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlICJSVENCdW5kbGVQb2xpY3ku
aCIKICNpbmNsdWRlICJSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaApp
bmRleCBiNzAyNjc0ODI0NjlkNTg3NWVmYjVmNzQ5NGQxYmY3YWM0MmM4OWUxLi4zODBkMzczMWIw
YTE1M2FiYjljMjI3MGJmZWU3NjgwZjAzYjNiOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRp
bGl0aWVzLmgKQEAgLTIzLDYgKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI3ByYWdt
YSBvbmNlCisKICNpbmNsdWRlIDxDb3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlBhcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaAppbmRl
eCA2MjhmOTM5YTMwNWNjZjc0NjY5ZTZiY2JhYmMwZjU5MTc5NTYzNzg2Li4wNDFjMjlhMzEyZjA5
ODE3ZjhlY2YxNzM2MTYxM2NhZDJmZDZmNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUGFydC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5o
CmluZGV4IDlmZjYwMGNhYzU5M2QzNTk0NWMxMGVhMTE0NTM3NGRiYzk3MjgwMTMuLjQ3NGEwZjJm
OGJiYTFjYjFmOTYzY2NjOTk0NGYyZTc5ZGFiYzFkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFy
dDsKIGNsYXNzIEJsb2JSZWdpc3RyeTsKLWNsYXNzIFVSTDsKIAogV0VCQ09SRV9FWFBPUlQgQmxv
YlJlZ2lzdHJ5JiBibG9iUmVnaXN0cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCAyNGZlY2M5NWE0MTk2MGIxM2Rk
ODc0ODE1MTBlYzI3OGE4YjFlZjI0Li5jNjkxZTViNjcwMDdlZGEyZTJmZjhiYjYyMjZhMDBhMzAw
NTE0ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuaApAQCAtMzMsMTQgKzMzLDEzIEBACiAKICNpbmNsdWRlICJCbG9iRGF0YS5o
IgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlSGFuZGxl
OwogY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAKaW5kZXggNjE4MmJlNTZjNDI2MDVkNTBlYTI5ZDJkN2JlMTAyMTdkYmY2MjEwOS4u
Yzk0ZTM5NDk0YjhlMzI2ZGI0YTEyYTI3MjAxYTQ2MjM4ZGUxOGM0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApA
QCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFJhbmdlLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDI0OWEwMDM2MWJl
ZmFjM2M4YWIzMzlhZDg3N2U4NzFmNGJmZTU5MzIuLjMyYTZmNTdjMGEyMTk2MDQ3Yzc0MzliMDkz
OWRmZTJjZDBjMzY5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAgLTI3LDgg
KzI3LDggQEAKIAogI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIlNhbWVT
aXRlSW5mby5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcApp
bmRleCBlNWYzMDRiYmNlNWQwMTk2OTkxZjVjZDljZTJlMGYyMjEyY2FlNmEwLi4yYzU0MzQzODVm
MTg1ZTgyZTI5MTYxYjhmYzQ3ZmU5OTAxMzk0N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcApAQCAtMjcsNyArMjcs
NyBAQAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCmlu
ZGV4IDVjYWNjMDU2MzFjMTY4MGQxZDk0MjdkNzc4OTUyOWYzYjE4ZDMwN2QuLjdkZGM0ZmU1NWJi
MWJlMmY2OTIwMDA4MGMzNGYzNGJhYmQ1MGVkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKQEAgLTIzLDggKzIzLDcgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQ3JlZGVudGlhbFN0b3JhZ2VfaAotI2Rl
ZmluZSBDcmVkZW50aWFsU3RvcmFnZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRl
bnRpYWwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VIYXNoLmgiCkBAIC0zNSw3ICszNCw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlv
blNwYWNlOwogCiBjbGFzcyBDcmVkZW50aWFsU3RvcmFnZSB7CkBAIC03MCw1ICs2OCwzIEBAIGNs
YXNzIENyZWRlbnRpYWxTdG9yYWdlIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIENyZWRlbnRpYWxTdG9yYWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggM2Y0ZmIxYWQ4ODRhNzgyYmRj
NjE0ZmQzOTRmZTc3NzFhYmE1NGE0Zi4uNDYwNWJlYTBhN2ExNmQxM2E1ZDJjMGU5MDZmYmFlOTBj
ZGQ0NjIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtR
dWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggNzI1ODI0NzEyOWNi
YmFhMmM4NWZjM2I0OWNmZGI2NjgwZDJiZDc1ZC4uOTc0ZDljZWJlYjE5NTE4OGI1Yzg0NjkyYWEw
ZjViMjZiYTk5MGNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RGF0YVVSTERlY29kZXIuaApAQCAtMjMsOSArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRGF0YVVSTERlY29kZXJfaAotI2RlZmluZSBE
YXRhVVJMRGVjb2Rlcl9oCi0KKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0zOCw3ICszNiw2IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogbmFtZXNw
YWNlIERhdGFVUkxEZWNvZGVyIHsKIApAQCAtNjEsNSArNTgsMyBAQCB2b2lkIGRlY29kZShjb25z
dCBVUkwmLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmLCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYm
KTsKIH0KIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaAppbmRleCBlOGM3ZDk4YTA3NWI2NmRkMDU0Mjg3OWI1OTE2NGMwZDQ2ZjZhNzI2Li5i
YmFhZGUxODViNzlmNTRmOGMwNzA3NTM5NjMyMTY2MzQ2ZWMyZGVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0yMCw5ICsyMCw5IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaAppbmRleCAxMDNkOWE5NmJiZGM2MTUyYTYx
YjdkMTYxZmU0MDkwYmE1YmMzYTA1Li41Mjc4OWI1YmRkOGRhYjM5N2IzNjlhYWMxNThjMjY3NzIx
ODc3ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZl
ci5oCkBAIC0yMywxNSArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIFByb3h5U2VydmVyX2gKLSNkZWZpbmUgUHJveHlTZXJ2ZXJfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xh
c3MgTmV0d29ya2luZ0NvbnRleHQ7CiAKIC8vIFJlcHJlc2VudHMgYSBzaW5nbGUgcHJveHkgc2Vy
dmVyLgpAQCAtNzUsNSArNzMsMyBAQCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UHJveHlTZXJ2ZXI+
IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0
b1N0cmluZyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+Jik7CiAgICAgCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQcm94eVNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggNzYzMzE4YzJl
MTE0NzM2MjM2ZWMzZDEzNmM3YzRhODc4ZGRjYjJmMy4uZTBiZjA0YjhhYzhmMDBiMzkzOTc5MWVi
ZmQwMDg3ZWNiOTBkYjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaApAQCAtMjYsNyArMjYsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCA0OTE0
MzRkOGZhNTNmMTkwZTU0NTNlYjlmMzk0ZTQwN2RkNmMxM2JmLi40NmFmNTY3MTNkODk4YzNhN2Zi
ZDc5OGFhNTBmZWFhNjU0Nzg0OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIENvbXBsZXRpb25ICiAgICAgaWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAg
YXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4gcG9ydCA9IHVybC5wb3J0KCk7Ci0gICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKKyAgICAgICAgaWYg
KHBvcnQgJiYgIVdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJs
LnByb3RvY29sKCkpKSB7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlID0gIkNhbmNlbGxlZCBsb2FkIGZyb20gJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIGl0IGlzIHVzaW5nIEhUVFAvMC45LiI7CiAg
ICAgICAgICAgICBkLT5tX2NsaWVudC0+ZGlkRmFpbCh0aGlzLCB7IFN0cmluZygpLCAwLCB1cmws
IG1lc3NhZ2UgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmgKaW5kZXggMDFhODZlMzU5YjFmZDBmMmVhZjQ1NjhhYTcyODY0MGMzMmI3NmY3
OC4uNjVmMzBmOTVkYjYwNTRhNWQwMWIyOWYyNDY4YjU5ZTk3MzcyNGY3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtNzcsNyAr
NzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIFVSTDsKIGNsYXNzIE5l
dHdvcmtpbmdDb250ZXh0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaAppbmRleCBkNmVkYjZkNjE4YWRjM2JjY2UyM2YwMWZiOTdmZjEzOTk3
YTZmYWMyLi4zZTEwYmVmNDkxMDdkMTM3ODE3Y2I5OTMyOTg1MjE3NWJiOGQ0MGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5oCkBAIC00NCw3ICs0NCw2IEBAIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xh
c3MgQ3JlZGVudGlhbDsKLWNsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNz
IFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4
IGZmNTgzNjE3NGVhYjk1OTUyOGEyMDdiZmJhYWI2MDAzOWQ5YjUwMzMuLmZiNDYzNjM1MjJhN2Zl
YzI1MjdkY2M0ZDEyNzVlZGEzZjc2MzMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIFJlc291cmNlUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByCiAgICAgICAgIHJlcXVlc3QubV9odHRwSGVh
ZGVyRmllbGRzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAgICAgfQog
Ci0gICAgaWYgKHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJl
cXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ICYmICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0
dHBzIikgJiYgV1RGOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIp
KQogICAgICAgICByZXF1ZXN0LmNsZWFySFRUUFJlZmVycmVyKCk7CiAKICAgICBpZiAoIXByb3Rv
Y29sSG9zdEFuZFBvcnRBcmVFcXVhbChyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVy
bCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmgKaW5kZXggM2FmNDM1MjY5ZmUxZmNlMDM3Nzg1ZmQyNWExZTBjYmJmZDc5
MGYzNS4uZTdjMWM0MDljM2I5YjY0ZWE3YjRlMzc4NzgzNDM5NTQyYTRhZDBjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkhU
VFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAppbmRleCBkOGZjYzE0MzFiNTBiYzdhYjY3
ZjFkMTk2OGI5MWNlNzBlYTE2MWVmLi4wZTU1YzFjZWZmMmFlN2MzNzFmNjBlNmVjMzRhODE1Yjc4
YTgyMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiSFRUUEhl
YWRlck1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlBh
cnNlZENvbnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYXJr
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggYjU5YmRiYTBiNDEyOTVjZWUzODUz
ZjZmZWEyMmFiYzI0ZWNkYmYyNS4uNmQxZmQxYTgzMDk5Mzk4OTRiNDllYTg0Yjc3YTU5ZjExN2Q4
YTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRT
dHJlYW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZS5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHAKaW5kZXggYmEzNDBmZjg4ZDYyMDNiNzEyNTIwOWE4NTAyM2QzNDlkZjM1ZjJkZi4uNGY4
ZTQzMjJhYzU3MWQ3NzcxM2QxMDE0Mzc0MDQ1ZmY2ZGNjZmNmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHAKQEAgLTMwLDExICszMCwxMSBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShXSU4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGZhMDRjOGI3MDk5Y2JhZWI2
ZTVmNGMxNWIxNzQ1MjY3NDA5YjNhZDcuLmY4ZWJiMDZjY2QwNTZlMzUwZWQwMGYwYjkyNWZkYWFj
ZmZkZTRkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC00MiwxMiAr
NDIsMTIgQEAKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgogI2lu
Y2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+
CiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxw
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRl
IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVy
Q0ZOZXQuY3BwCmluZGV4IGI1YzZhOGQ2YzMyZmZkYmQ5MGIyMTAwNDJiOTQ3MTQ3NDNhMGM1NGIu
LjJhYjM0OTcyMTZhYzVhYTg3NmUwMDRlN2E3ZDU2YThlNDhkZWM0Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNw
cApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5
U2VydmVyLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggYmEzNjA1YmJkMWQ0NmY5N2RlMjgz
OGYzOTgzNzg5MmY5OTUyMmI2OC4uZDQxNmY2MTUxNGVmMWZmMDIzMTFkNWMyZDEwMzVlZmQ1NDFl
OTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24v
Q0ZFcnJvci5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KICNpbmNs
dWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA4
OTQ4NWEzMWY1NDQ1YTVjODllOTNiODEzYzkxMDgxYTc0YTQ5MTljLi4wZWFkZTE1OTljZTU4YmI2
NDBmMmQxMjEzYWM0MzYwMjE0NzNhODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0KQEAgLTMxLDExICszMSwxMSBAQAogI2ltcG9ydCAiQ29va2llU3RvcmFnZU9ic2Vy
dmVyLmgiCiAjaW1wb3J0ICJDb29raWVzU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlNhbWVTaXRlSW5m
by5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5o
PgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9PcHRp
b25hbC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogQGludGVyZmFjZSBO
U1VSTCAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmgKaW5kZXggZTBiMjFjYzEzNzc0OGE4ZTE2Mjc0ODMyNjA3YzE4ZDdhNDgx
NjBmZS4uYjk2MTRiZmYwMDc5ODRjYTVmMjIxOGUwYjY1OWFhZjJmNGEyZDYwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5o
CkBAIC0yNSw3ICsyNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwog
Y2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogCiBzdHJ1Y3QgQ29va2llOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmxEYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
Q3VybERhdGFiYXNlLmNwcAppbmRleCA1ZTg0NTRhYTU0YWY2ZjcxYWNmYWU3ZTkzNjI0MDdjMjE0
MTc1MTg1Li5jMmQwNTFlMzc5M2Y1YThlODY4YTRlNzlkZmUxNjQ2NTY3NTE3YWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyQ3VybERhdGFiYXNlLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuY3BwCmluZGV4IDY1MDAzOGQzOTQxMmM3Y2EwMzg0M2Q4YWM5M2YxNDY2YTRlODdj
ODIuLjM5ZTc3YmY3ZDQ2MGZmNzZhYTc3ZmNhNjFjYjI2MTNiMWE3NTU5MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApA
QCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlVSTC5oIgog
CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmgKaW5kZXggYTg5YzlhYjdiOTYyNjI0NDgzMjYyNTI1NDcw
ZjFhNGRjYzlmZjM3Mi4uNjE4ZGY3Yjg4ZTQyOWVmNzY0ZTEyYjI2N2M3NGFkZmExYWU5ZWM4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0
aWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRp
bC5oCkBAIC0yNCw4ICsyNCw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXgg
MzczMjYwMTc5Yjg4NmYxZWVkYTA2ODEzOWYwMDY4NGExNGFmMDc3NS4uZjhkNjgxMDgwMWVmYmFk
ZDlkNDEwMDIyOTRhZGEzOTlhMDk2NTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAj
aW5jbHVkZSAiQ3VybFByb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlICJDdXJsU1NMSGFuZGxlLmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNl
dHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5
U2V0dGluZ3MuaAppbmRleCBhNjFjNmVjMjI2MmQyZTM4Nzk5MjcyNGI2ZGNjNWY2OTRkMTE2NjQ5
Li5mMzVmNDFiNTFmNTg5NmY2ZjczMzY2MDU1MjQ5YzMwYmEzOTViM2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGlu
Z3MuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogI2RlZmluZSBrQ1VSTEFVVEhfRElHRVNUX0lFICAgICgoKHVuc2lnbmVkIGxvbmcpIDEpIDw8
IDQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c3BvbnNlLmgKaW5kZXggMzczNjYxYmQzNWFmY2U2NjdhZTFiYjM1NzdhNmMwOWRjMTQ0ZmE0ZC4u
ZTYxMWZmYzRmYjE1NDFmNGNmZDEzMjg3MmNiYzFkNWRjM2Q5M2ZhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2UuaApAQCAtMjUs
NyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKaW5kZXggZTExMGFkMTY0OTEwNWVjNmIwMDNiMTk5MDM2YWQ4YThlNzA0
NzcxNC4uMWJkMjFlY2VhYmZmN2U3OTIwMGFmODJjY2QwOWMyYTg4NzE4OWUwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Qcm94eVNlcnZlckN1cmwuY3BwCmluZGV4IGNkYTQ0OTkzZjYzNGIyNDQ0YTYxZGNhZjk3
NDAxZTlmMjYwMmYwYjAuLjE4ZjUwOGI2ZTQ4NjgyYThmYzcwMGQxZjY3ZDdhOTZlMDkzZWQ0YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNl
cnZlckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Q
cm94eVNlcnZlckN1cmwuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBVU0UoQ1VSTCkKIAot
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCBjZmM0OGZm
YTI1ZmQ4MGZkYjhkNzFmYTdjMzg5M2QzZTg2YTQ1NzdhLi4wNzEwY2FlZTI1MDNjMWYzZjM4MDhl
MjA0MzcwNTg4MjdlZDM2ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5j
cHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU29j
a2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggMmVjZjQy
OGMwYWI1MTRhY2UwYzAxYzVmNGQxNjI5OGNlYTIxNjA3My4uZGNiZGUzNDhlYjQ3N2MyYTFiNWFi
ZTRhYjU5MzU5Mzk4ZTJhYzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCkBAIC0yNiwxMSArMjYsMTEgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogCi0jaW1wb3J0
ICJVUkwuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIEBpbnRlcmZhY2UgTlNFcnJvciAoV2Vi
RXh0cmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0dVbmlxdWVQdHJTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
R1VuaXF1ZVB0clNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZkYzYzNzQx
MmUxOGJhNzI1Zjc0ODNlYzMyNmUxMjQ5YTg4YTE2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvR1VuaXF1ZVB0clNvdXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBHVW5p
cXVlUHRyU291cF9oCi0jZGVmaW5lIEdVbmlxdWVQdHJTb3VwX2gKLQotI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLQotbmFtZXNwYWNl
IFdURiB7Ci0KLVdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2ZyZWUp
Ci1XVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVlKQot
V1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3NhZ2Vf
aGVhZGVyc19mcmVlKQotV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cEJ1ZmZlciwgc291cF9i
dWZmZXJfZnJlZSkKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IGU0ODNhYTYzMTZjZTZjNWQ2YzhmM2U2NTVkNTVk
ZDFlZWIwNDYzY2YuLjAzZDE1NmU1ZWQ2ZThjMWY1OTA5NTZhOGJkODQwZThhM2QxMGU0N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAog
I2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5LmgiCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgpAQCAtNDEsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKICNpZiBV
U0UoTElCU0VDUkVUKQogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKaW5k
ZXggNGMyNzdjM2QyMTY3YWNjNTQ0MTFmOTYwM2UzNTE5MDAxNzMzYjRhZC4uOWM5OWY4OTVkYjRk
YjdjODExY2E1MGY1MTFkM2Q0ZmIyNWM3MTZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKQEAgLTI4LDcg
KzI4LDcgQEAKIAogI2lmIFVTRShTT1VQKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
aW5kZXggNjM3MzRjNjc0YzUyZWU5NWRjNmM5ZTQyMWM0NjYwZjQxODQwMGJhYS4uZmI3MTgxM2Ez
NzU5MDljMGE3YTJmNTQ1NzRhODExYWVkZGIzZmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
QEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVk
ZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtNTgsNiArNTcsNyBAQAogI2VuZGlmCiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0LmgKaW5kZXggMzhlM2E4ZWU2OTY4MTFmZDViYTc4YjRiMzBjMmMwMWEzOWZm
NWI1Zi4uNzQ3MmFkMjM4YjMzNGE5NTA5MDFlZGU5MDE1ODMyNjViM2Y5YmM0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3QuaApAQCAtMjcsOSArMjcsOSBAQAogI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RfaAogI2RlZmlu
ZSBSZXNvdXJjZVJlcXVlc3RfaAogCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3RCYXNlLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Cisj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggNThjZmE3NzYxNDRjODRhMDkwZDM2MjJk
ZjIyMjc0MjE4Zjc5MWJiNi4uZWQyNjk0MDFlYmJmZjRkZDYzOGVmOGVmYzFlMGVkODY5MjJmNDZm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtMjQsMTEgKzI0LDExIEBACiAKICNpbmNs
dWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKLSNpbmNsdWRl
ICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAi
TUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
IldlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQ
dHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcApp
bmRleCA5Y2RkZGI4N2UzNzU5NWEyYmJhZDY1MTAyMDQ1ZjZmYTc0MmI0ZTQyLi41YWY5NDczZjM3
NzI4NjExMzFiYWU3MTc3YjM0MzE5YTVjMmRiMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsU291cC5jcHAKQEAgLTQxLDkgKzQxLDkgQEAKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1F
cnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUg
IlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGdpby9n
aW8uaD4KICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CmluZGV4IDEzZWNiNWIwZjc2M2MyMDFjZjE3YTQxNjEyYTczZjA5YThmNWEwNzguLjYwMDRkMTdm
NzZhMDNhOTBlMzM4YTkwZTNjNTQ1YjUyZjUxOWM3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3Mu
aCIKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUg
PHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGQxZTlkOWNlNWIyODlkMTRj
YzZjMTY1OTNiZjRhZDA2NzgyN2U1M2EuLjViNWZmNzk3NzM0NzE1MTk2MWE0NWMzNDk3ZWEyZjU1
MTM0NGIxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwotY2xhc3MgVVJMOwogc3RydWN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczsKIAogY2xhc3Mg
U291cE5ldHdvcmtTZXNzaW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NvdXAvVVJMU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2RiYTMyODY5NWZmY2IyNmYzODdi
NjcyYWE5Mzg3MzcyYjJlOTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiVVJMLmgiCi0KLSNp
bmNsdWRlICJVUkxQYXJzZXIuaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwo
U291cFVSSSogc291cFVSSSkKLXsKLSAgICBpZiAoIXNvdXBVUkkpIHsKLSAgICAgICAgaW52YWxp
ZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4g
dXJsU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwotICAgIFVSTFBh
cnNlciBwYXJzZXIoU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0KCkpKTsKLSAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKLQotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4OTU2LiBsaWJzb3VwCi0gICAgLy8gZG9lcyBub3QgYWRkIHRoZSBwYXNzd29y
ZCB0byB0aGUgVVJMIHdoZW4gY2FsbGluZwotICAgIC8vIHNvdXBfdXJpX3RvX3N0cmluZywgYW5k
IHRodXMgdGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkKLSAgICAvLyBidWlsdC4gRml4aW5n
IHNvdXBfdXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMKLSAg
ICAvLyBub3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVt
ZW50YXRpb25zCi0gICAgaWYgKHNvdXBVUkktPnBhc3N3b3JkKQotICAgICAgICBzZXRQYXNzKFN0
cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsKLX0KLQotR1VuaXF1ZVB0cjxTb3Vw
VVJJPiBVUkw6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBHVW5pcXVlUHRyPFNvdXBVUkk+
KHNvdXBfdXJpX25ldyhzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci19Ci0KLWJvb2wgVVJMOjpo
b3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewotICAgIHJldHVybiAhaG9zdC5pc0Vt
cHR5KCkgJiYgZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGhvc3QudXRmOCgpLmRhdGEoKSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaAppbmRleCA3N2M1Mjg4ZmQwY2UwNTk4NjRlZjgxMjNl
MDA3MmJiN2MzNTcyM2RiLi43ZDAzZjg2M2QwZGY0OWQyZjc5YzdjM2E2ZDEzODJjZjQxNjgxMGU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKQEAgLTI1
LDEzICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHBhbC90ZXh0L1VuZW5jb2RhYmxlSGFuZGxpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgVGV4dEVuY29kaW5nIDogcHVibGljIFVSTFRleHRFbmNvZGluZyB7CitjbGFzcyBU
ZXh0RW5jb2RpbmcgOiBwdWJsaWMgV1RGOjpVUkxUZXh0RW5jb2RpbmcgewogcHVibGljOgogICAg
IFRleHRFbmNvZGluZygpID0gZGVmYXVsdDsKICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0RW5jb2Rp
bmcoY29uc3QgY2hhciogbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQlN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5j
cHAKaW5kZXggYmFlMWJlYWFhYTM3YWRlMzAzYjA4ZjM0ODk0OTI0OTAxODY0NzljYS4uMGY0NmM1
ZGNhYjI5YjdiNDYzYmI2ZWNkMzFiMGViM2I3NThjMjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9CU3RyaW5nLmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkJTdHJpbmcuaCIKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0JTdHJpbmcuaAppbmRleCAxZmJlMDJjMTU4N2MxMjliOGQ1MDUwMmU2NDYw
NGU3ODZjZTgyYTJhLi4xODRiNTUxZDQ4ZTljMjMxZWEwMmE3ODc1NmZlOTZmZWQzZTU2NjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKQEAgLTQwLDggKzQwLDYgQEAgdHlw
ZWRlZiBfTnVsbF90ZXJtaW5hdGVkXyB3Y2hhcl90KiBCU1RSOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLSAgICBjbGFzcyBVUkw7Ci0KICAgICBjbGFzcyBCU3RyaW5nIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIEJTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggNmZmODllYzE4MGQ1ODM1YzU5MTQw
ZmM2YTM4N2Y0N2IxMjViMGEzMi4uNzkwYTgyZjhiNjcxMTAwYTE2MmU1M2VkODk3OTdjZDkwNzhl
ZmZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFV0aWxpdGllc1dpbi5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkNsaXBib2Fy
ZFV0aWxpdGllc1dpbi5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5o
IgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3
aW5pbmV0Lmg+IC8vIGZvciBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSAogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBtYXJrdXBUb0NGSFRNTChj
b25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5nJiBzcmNVUkwsIFZlY3RvcjxjaGFyPiYg
cmUKICAgICBjb25zdCBjaGFyKiBzdGFydE1hcmt1cCA9ICI8SFRNTD5cbjxCT0RZPlxuPCEtLVN0
YXJ0RnJhZ21lbnQtLT5cbiI7CiAgICAgY29uc3QgY2hhciogZW5kTWFya3VwID0gIlxuPCEtLUVu
ZEZyYWdtZW50LS0+XG48L0JPRFk+XG48L0hUTUw+IjsKIAotICAgIENTdHJpbmcgc291cmNlVVJM
VVRGOCA9IHNyY1VSTCA9PSBibGFua1VSTCgpID8gIiIgOiBzcmNVUkwudXRmOCgpOworICAgIENT
dHJpbmcgc291cmNlVVJMVVRGOCA9IHNyY1VSTCA9PSBXVEY6OmJsYW5rVVJMKCkgPyAiIiA6IHNy
Y1VSTC51dGY4KCk7CiAgICAgQ1N0cmluZyBtYXJrdXBVVEY4ID0gbWFya3VwLnV0ZjgoKTsKIAog
ICAgIC8vIGNhbGN1bGF0ZSBvZmZzZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5kZXggNWNkOWUwZTc1NzMxM2ZmMDIyOWE2
Y2ZiYThlZDY0OTBhODFhZmUyOC4uYzM3ZjNlMmRlMTk2MWU2YTEzMDQ1NDc3Y2NhODY5MjY0ZjAz
MjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uaApAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKLWNsYXNzIFVSTDsKIAogSEdM
T0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFN0cmluZyYpOwogSEdMT0JBTCBjcmVhdGVHbG9i
YWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRleCAxZGZhNTBiNTMyZGQ4YjVhZjY2Njc1Zjg0NDlmZTU0
MTkxMTc0ZWZmLi5hNmI2NzJmYzcyN2ZlODM3OWEyZDBmN2UwNDYwNzE2OTYwY2ZiYjg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAtMzQsMTIg
KzM0LDEyIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFduZERD
LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdHJp
bmdUcnVuY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4
dFJ1bi5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXh0UmVuZGVyZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dp
bi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAw
Njk5Nzk5MDYzMWU1YzM0MzY0NzE4YWU2YWIxNzY1OTRjZGYzNjlkLi5kNTk2N2E1ODIwYzk3YWUy
OGM2MjVhNTBkODAzOGUwMGVlMjVkZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiSFduZERD
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSYW5n
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC00OSw2ICs0OCw3IEBACiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9X
aW5kb3dzRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5k
ZXggMGI2YzQyZWUyZDA4MTY4YmVkZWZjOGYzZDBmOWVhZTZlMWE2YmY1OC4uZjA0MGIwYWY5NmYz
YjhiYmQ5ZjU0OTMyOTMxMmI4ZjRmNzA2OWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5E
YXRhLmgKQEAgLTIwLDEwICsyMCwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmgKaW5kZXggZDA3NzdiMzQ1MGMzYTAyMGFlZmQ0M2E3MjNjYzZjYjEzM2RlYWUw
Yi4uMzMyZjI4NTMxZDM4OGNmZTJjM2Q1OGE5NGMzZjI2MTdkY2I5MTY2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIEhU
TUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JvbGxi
YXI7Ci1jbGFzcyBVUkw7CiAKIGVudW0gY2xhc3MgSGl0VGVzdFByb2dyZXNzIHsgU3RvcCwgQ29u
dGludWUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0
dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQu
Y3BwCmluZGV4IGVkMzMzNWUxMzc0ZDhmNzIyOTI1MmQ1NGNlMDY3Y2MzODQ3NjgxYmQuLjc0Njdm
ZjM4NjU2ODJiOGJlNjNiYjY3ZGViZDcxOWE0YzhiN2UzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNs
dWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5o
IgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKaW5kZXggOTk5
OTZlMDFlZDA3MWFmNTg3MWExZGExNjZjNjMxNDlhMTNiNGU3NC4uNzIyMWRmY2I3ZGRkZTU5MDM5
Mjc2YWRkYzlmMzliZGEyZDc4OTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgU1ZHSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2
ZW50KCkKIFN0cmluZyBTVkdJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlKSBjb25zdAogewogICAgIFVSTCBiYXNlID0gZWxlbWVudCgpLmJhc2VVUkko
KTsKLSAgICBpZiAoYmFzZSAhPSBibGFua1VSTCgpKQorICAgIGlmIChiYXNlICE9IFdURjo6Ymxh
bmtVUkwoKSkKICAgICAgICAgcmV0dXJuIFVSTChiYXNlLCBzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoYXR0cmlidXRlKSkuc3RyaW5nKCk7CiAgICAgcmV0dXJuIGVsZW1lbnQoKS5k
b2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhh
dHRyaWJ1dGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZl
cmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAKaW5kZXgg
Njg1MDRhYTg0ZjI2Y2IxOTNmZjM1ZmEwOGIwYTRmNmQxZTU1ZmMyYy4uZGExM2I3N2I2ZjNkMWI4
MjgzZGNhOTk4OGQ4ODc2ZGQzNmUxNWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VSSVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVy
ZW5jZS5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVPd25lclByb3h5LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlhMaW5rTmFtZXMu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaAppbmRleCA4N2UyODIzZjllNzFiNjdiZDQ4MWU4ZTg4NDExYmFkMDAxMjY0Yjk4Li5jZDNm
ZDBkMWUyNTlkYWI0ZTMzYTY5YWI2YWQxODQ2ZDlhZTVlMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtMjcsNyArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuaAppbmRleCAzZjViYzNhNzU2ZTY4NzkxYmFjOGQzNjgzYjZjM2MxNjc0NmQ5
ZTQyLi4zMmU3MjJiZmEyNzM0NTRjNGI1YTExNGVmODA5NjQzNzUyMzRmODZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKQEAgLTMzLDcgKzMzLDYgQEAg
Y2xhc3MgTGF5b3V0U2l6ZTsKIGNsYXNzIFNWR0ltYWdlOwogY2xhc3MgU1ZHSW1hZ2VGb3JDb250
YWluZXI7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFNWR0ltYWdl
Q2FjaGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCA2OTgwNmJlNjc3
MDNlMmU5NDlmMzQxZDVjOTg2YTg1ZWEyZDdlMjRmLi40Y2ZjZThkNGIwMzc4NTc5MTQyMjY3YWE2
YjgwODc2NzEyNmIwNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKLSNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDY3ZTA2YTFiNzljNThlMDg0
Yzc3YTU2YjJiZjc3OTc4ZjQzNjBlMWYuLjkwYmNiYmI1ZDc1YTk1NTRkNzhkNzViZDA1ZmRlYmQx
N2FhNzkzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ1NCw3ICs0
NTQsNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdl
KQogICAgICAgICAgICAgYmFja2luZy0+c2V0VGlsZVNpemVVcGRhdGVEZWxheURpc2FibGVkRm9y
VGVzdGluZyhmYWxzZSk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6Y2xlYXJEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZygpOworICAgIFdURjo6Y2xlYXJEZWZhdWx0UG9ydEZvclBy
b3RvY29sTWFwRm9yVGVzdGluZygpOwogICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdl
cyhWZWN0b3I8U3RyaW5nPigpKTsKICAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGlu
Z3M6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhmYWxzZSk7CiAgICAgV2ViQ29yZTo6RGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzOjpzZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9yKGZhbHNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KaW5kZXggNmZjZGNiZWRkM2Y3ZGE0Y2M1NDIwYTkz
NjczNDI5NDFhNWMxMTQ5Ny4uN2M1YjdhZDg0MmQ5OThmZTYxYTAxNDIzMDUyYzBhMWU2MGI5MzNm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KQEAgLTMyLDggKzMyLDggQEAKICNp
bXBvcnQgIkV2ZW50SGFuZGxlci5oIgogI2ltcG9ydCAiSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9y
dCAiUmFuZ2UuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogI2lm
IFBMQVRGT1JNKElPUykKIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCkBAIC00NCw3ICs0NCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIEludGVybmFsczo6dXNlclZpc2libGVT
dHJpbmcoY29uc3QgRE9NVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNp
YmxlU3RyaW5nKHVybC5ocmVmKCkpOworICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KHVybC5ocmVmKCkpOwogfQogCiBib29sIEludGVybmFsczo6dXNlclByZWZlcnNSZWR1Y2VkTW90
aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5j
cHAKaW5kZXggNjQ4ZmJkMjZmYWMzNmE2NWM5OTU3YzUxMTU3ODg3NjQ2ZjJkYzI2Mi4uNTExODFk
YWU3MmUxM2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4YTE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBNb2Nr
Q29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2UKIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RVUkwgeyByZXF1ZXN0LnVy
bCgpLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcgfTsKICAgICBpZiAoIW1vZGlmaWVkUmVxdWVz
dFVSTC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJNb2NrQ29u
dGVudEZpbHRlciBmYWlsZWQgdG8gY29udmVydCAlcyB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1v
ZGlmaWVkUmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhD
b250ZW50RmlsdGVyaW5nLCAiTW9ja0NvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgJXMg
dG8gYSAgVVJMLlxuIiwgbW9kaWZpZWRSZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggOWI2ZTk1ZTIxNTQ4MzBjMDAwM2Q2
ZTIxODAwM2FjZWFhMjJmZWQ1MS4uNDkyOWU4YWUzZDE5ZGM4ZWIxMzUwYWQ1ZTE1YzA1MTNmMTY4
MTMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRp
bmF0b3IuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiTW9ja1BheW1lbnRNZXRob2Qu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IGQyNDEyMDZhMjhkZDVmNjQ3MGRh
OWZiODRlOWVkNGZjNzRjMjg3YjAuLjU4MDlmMGJlZGYwZTdhMDcxNzI4ZDA5ZWI5Mjk3NDdjNGI0
ZWUwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHAKQEAgLTM5LDEyICszOSwxMiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmln
Z2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50
aWZpZXJJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgor
I2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9y
dCB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdv
cmtlci5oCmluZGV4IDkwMGMyY2I0MDQ2MmEwZWJlMzcwMjhhMzc1YTYzM2ZlYWY5NTM0ZjEuLjAz
MjFjMmM3ZmVkMjU2NjI4ZmYyNmNlZDkxM2FlYjhhZmMzMGUwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKQEAgLTM1LDggKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIEFic3RyYWN0V29ya2VyIDogcHVibGljIFJl
ZkNvdW50ZWQ8QWJzdHJhY3RXb3JrZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDViOWEwYmUzNjljMjk5YzBmYjc1NDEw
NzhmYzc2NTZkNmRlNzllYzEuLjI4MmRkMDZiYzMzOGExZTA2OWE1YmQ0NmQ4NjNmYzMyOWQwYmE0
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTMy
LDcgKzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUg
IldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZVByb3h5LmgKaW5kZXggMzZiZDAwNzA3ZDBhNjhkYjMwNzYyNzJiYTY1
ZjMwYTNhOTI3ZjFlNy4uODU4NWE1YmZmOTNiMDQ2NjVkZTUzMjFlZDMyYjkyZmZhOTc2YTE3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgK
QEAgLTQyLDcgKzQyLDYgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7Ci1jbGFzcyBVUkw7
CiBjbGFzcyBXb3JrZXI7CiAKIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2VyIGNvbnRl
eHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclBy
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKaW5k
ZXggZGY0MzcxYWUyM2MzMDMwNmVhN2JmNjQwZDI3ZjllMTRiOTc1ZTRiMi4uYTFkM2VhNzU3NmU3
ZWEzNGE2NGNiOTE1NDdkZTc2YWNmNTE4YmRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VySW5zcGVjdG9yUHJveHkuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJX
b3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJMb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oCmlu
ZGV4IDUzYzc3NjE1Njc1NWI3MDZiOWQyNDkzNzE2YTgxMjUyN2ZjYTM1ZjguLjkyY2ZjYzc3MDZm
MDM0ZTU3YjlmODJlOWJhMjdiYTNhNTFhMDlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckxvY2F0aW9uLmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXgg
ZTU3YzMyM2NkZTllNmY0ZjgwYWY5YjI1YjJjZmUxZWUyZTczNzRkOS4uMDRhNDFjMjFjYjJmNzUz
MWZkZTYxOWU0ZDY3ZGQ1NjQ0OTA1Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5oCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCAxYzZhYTE2NWI1OTE4NzE0
N2M4YmE4MDk1NjFiMzAzMTVjODRiMGI3Li44NGYxMWUyNmVlYzZiZjkyMWJiMDY1M2EyYjk1OTIz
NzZjNDNjM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0z
Myw3ICszMyw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTb2Nr
ZXRQcm92aWRlci5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8dXRp
bGl0eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGQ3MTQxMjQ4NWE5
NjkwNDlhZGI0OTY1OTc0ZGJlOTFmNWVlMTkxODkuLjNkYzU0ZjZjNDczZGIzNzY3NTI1ZDFjYTQx
MDNkNWQ2YTU2Yzk2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAt
MzksNyArMzksNiBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKLWNsYXNzIFVSTDsKIGNs
YXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29j
a2V0UHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXIuaAppbmRleCA5YjliY2M4YTIyZjlkNzY3MTI5ODk3ZWMwMWYzN2IyYTU1MjFiN2VkLi43
YjIzOWYzMDdkYTcxZTE1NmQ4N2JhMjM1M2I1MWIxYTMzMzVmZmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmgKQEAgLTMxLDkgKzMxLDkgQEAK
ICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckRhdGEuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaAppbmRleCAxNDNkN2Q5ZTA0NWQ1NGUxMWE4YzZlZDlh
YzE0ZTM3YjE1NmEwNTI5Li5mOTkxZjMyY2U2ZDNhOWIyNTdhNTYxMmI0NjM2NWE2NzlhZTJkMTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5
cGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuY3BwCmluZGV4IDQwZDQwZGFkYTBiMThmMjJhODgzN2NiOTc2OGE0YTk5NmUyZTZiZDIuLjhk
YjljNDE2YmRmNzNjNjg2YWVmMTU4ZDY0ZDYxMDA0MmZlOGVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKQEAgLTQ4LDkgKzQ4LDkgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgog
I2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBD
T05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYo
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBDT05U
QUlORVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0df
RVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAt
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oCmluZGV4IDNiZTk1MDQyNWVhNzgwY2ZmZDViYmVlNzg1ZmE0NTMyYWY5NGEz
ZDcuLjRkNjIwODg5ZjkzNGE3ZWZhMjYwYjMyMDliNGUxNzZiMDJhYjBkMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmgKQEAgLTI5LDExICsyOSwxMSBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwu
aCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyRGF0YS5oCmluZGV4IDcyOGMzN2NmZTYyYTVmZTU2MGFiNmM0ZWIxODY0ZjA0NDRj
ZjkzNmUuLmNlMzYxZDNmM2QwZjM4NzNhODZkYzhhOTM4YmFmMDNmMWQxNjRhNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCkBA
IC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2JEYXRhLmgKaW5kZXggMDg3MGJiNmVmNjAyOTg0NWNkNGE5YjZkZTIzMDBhODgzY2Fh
MWMyMi4uOTNjMmRmNmZmMGQyZjM5OGU4NDEyNjhiZTE5NjY0ZjdhOWNlNjRmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkuY3BwCmluZGV4IDFjM2Q3NDZiMjNkYjkzZTM1NmYyMmU2MzEyMGIxY2Q0ZjRjZGIwYzku
LmJjZGQ4YzQ2OTI3ZGM0MDA2MGIwZGVmOWRlYmVlNWVlYTVlZjE3NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTEhhc2gu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleS5oCmluZGV4IDcxMGY0MTJiNDcyZDhmMTc0MmUwYmVlNDhkNTAy
YmU4OWE5YTAzOTkuLmU2YWY3MzMxYzdiOTU0MzlkNTM5OGE5YThjMzdlMzQ3NmI4ZmRmNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xMDIsNyArMTAyLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXlI
YXNoIHsKIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5PiB7CiAgICAgc3RhdGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXk6OmVtcHR5S2V5KCk7IH0KIAotICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBz
bG90KSB7IHNsb3Quc2V0U2NvcGUoV2ViQ29yZTo6VVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkp
OyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29wZShVUkwoSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHJldHVybiBz
bG90LnNjb3BlKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA1MDUyMGI2YTE0MWIxODNmMDQ4ZGU2MDkzMjlmOWNj
ODFmMjU0ODcwLi42MjYxN2NiODdhMTBjMTVjNTIzOGUwYzBjYWE3NjdmMmJlOGFjODJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUg
IkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUg
IlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCBhY2Q2NWU5YzgwYTA2N2YyNzJhNThlMWQ5
NzM1YzExZmU2NTEyYTk0Li4xZmI0MTVlMmQyZDA4NjUzZWZjYTI3MWJlOWM4ZjBlYWU0NTRmZjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaAppbmRleCBkZTIyYzc5ZjhlOGQwZTJiODE3MjRmNjUxMTFh
OWYxMGE1ZDIwMzY5Li4zMjEwZTMyOTllNmZjYjgzMmZjMzljOGVkNmNhOGU2Njc4YmM2YmMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJD
b29raWVNYW5hZ2VyLmgKQEAgLTQwLDcgKzQwLDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgQ29va2llOwogfQogCkBAIC03OCw5ICs3Nyw5IEBA
IGNsYXNzIFdlYkNvb2tpZU1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjCiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZp
ZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIENhbGxiYWNrSUQpOwogCiAgICAgdm9p
ZCBzZXRDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENhbGxi
YWNrSUQpOwotICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIG1haW5Eb2N1bWVudFVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWVzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEFs
bENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2ll
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDYWxsYmFja0lEKTsK
IAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kpOwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFj
a0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9X
ZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZTNkZTlkOGNmYWI5
ZmQ1ZjZmYjY4YTJjMDcxMDI2MmE4NTVkYzQ0OC4uMGIxZmQ1NTllMGJlYjI2ZTAwMzc5NDM0YWRh
ZTRlNWM5ZTQ3ZGFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI5
LDkgKzI5LDkgQEAKICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogCiAgICAgdm9pZCBTZXRDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCi0gICAgdm9pZCBTZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJM
IG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9p
ZCBTZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gY29va2llcywgVVJMIHVybCwgVVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBHZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRD
b29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgVVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgdm9pZCBEZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2Vi
Q29yZTo6Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
dm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdhbGxUaW1lIHRpbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2Nv
YS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlckNvY29hLm1tCmluZGV4IGMyYjE0N2M1ZjcyMWI5NTQwNzQ1YjY0OGQyMGJiY2I3Mjg0NzFh
YmUuLjZlOTAyOGRiNWM5OTdiZDJhMzFmZWUxOGEzM2MxMjRiN2ZmMTQyOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNvY29hLm1tCkBAIC0zNCw4ICszNCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RleHRFbmNvZGluZy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PHBhbC9zcGkvY29jb2EvTlNVUkxDb25uZWN0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRl
eCBiNjc2NjE0OWVlZDExZTljMjhiMGUxNDMzYWU2ZGVjMGFkNWQ2OTk3Li40ZTBmN2ZhN2RlNjgz
YmNhMTI2NTg4ZDFjNDEyM2NkNWJhZmE0MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBA
IC03MCw3ICs3MCw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgbWFwSXRlcmF0b3It
PnZhbHVlLmFkZCh1cmwpOwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBib29sIHNob3Vs
ZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlv
bkNoZWNrKQogewogICAgIC8vIFRoZSBjb25uZWN0aW9uIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBp
ZiBOZXR3b3JrUHJvY2VzcyBwcmV2b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJlYXNvbi4KICAgICBC
bG9iRm9yQ29ubmVjdGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29u
bmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTmV0d29y
a0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29y
a0Nvbm5lY3Rpb25UCiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQogCi12b2lk
IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQor
dm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKIHsKICAgICAvLyBUaGUg
Y29ubmVjdGlvbiBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgTmV0d29ya1Byb2Nlc3MgcHJldm91
c2x5IGNyYXNoZWQgZm9yIGFueSByZWFzb24uCiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0
ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9u
KTsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKgogICAgIG1hcEl0
ZXJhdG9yLT52YWx1ZS5hZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1
bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVu
cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9u
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkgbm90IGJlIHJl
Z2lzdGVyZWQgaWYgTmV0d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9yIGFueSByZWFz
b24uCiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9i
bG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2
b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiBjb25uZQogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5yZW1vdmUodXJs
KTsKIH0KIAotdWludDY0X3QgTmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
KQordWludDY0X3QgTmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICgh
bV9ibG9ic0ZvckNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbikgfHwgIW1fYmxvYnNGb3JD
b25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlLmNvbnRhaW5zKHVybCkpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6
Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQCiAg
ICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwogfQogCi1WZWN0b3I8
UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVz
SW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCkKK1ZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4g
TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9ibG9ic0Zv
ckNvbm5lY3Rpb24uY29udGFpbnMoJmNvbm5lY3Rpb24pIHx8ICFtX2Jsb2JzRm9yQ29ubmVjdGlv
bi5maW5kKCZjb25uZWN0aW9uKS0+dmFsdWUuY29udGFpbnModXJsKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9O
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCmluZGV4IGMxOWE2NTllMGVmNDU1YmIxMDg4YmNmODVj
MjlmZGVhYzkzNzI2MzkuLjkwNmI5ZThhNTJmZTRjZmEwMjY2Y2Q5NzFkNzE4Y2UyYzkyNTU0NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJ
L05ldHdvcmtCbG9iUmVnaXN0cnkuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTsKQEAgLTQ2LDI1ICs0NiwyNSBAQCBXVEZfTUFLRV9OT05DT1BZ
QUJMRShOZXR3b3JrQmxvYlJlZ2lzdHJ5KTsKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CiAg
ICAgc3RhdGljIE5ldHdvcmtCbG9iUmVnaXN0cnkmIHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCBy
ZWdpc3RlckZpbGVCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBW
ZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwot
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hv
dWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlv
bmFsbHlGaWxlQmFja2VkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmls
ZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwg
aW50NjRfdCBlbmQpOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB1aW50NjRfdCBibG9i
U2l6ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYp
OworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRl
bnNpb24+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgVmVjdG9y
PFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVj
ayk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBj
b25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsK
KyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGlu
dDY0X3QgZW5kKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJik7CisgICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0g
ICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgYmxvYlVSTCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJs
b2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHZvaWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0Rp
ZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7CiAKLSAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25z
dCBXZWJDb3JlOjpVUkwmKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
Y29uc3QgVVJMJik7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICB+TmV0d29y
a0Jsb2JSZWdpc3RyeSgpOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgSGFzaFNldDxXZWJDb3JlOjpVUkw+PiBCbG9iRm9yQ29ubmVjdGlvbk1h
cDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBI
YXNoU2V0PFVSTD4+IEJsb2JGb3JDb25uZWN0aW9uTWFwOwogICAgIEJsb2JGb3JDb25uZWN0aW9u
TWFwIG1fYmxvYnNGb3JDb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmlu
ZGV4IGQwMzc4N2ZiNGEyNWQ0OWFlYzNlZTY3NzViODc1YmY4YjIwMzAzOTMuLmY1ODRiYzQ2NjA4
NTFjMDBhZmFhYmUxNWZiYjA5OWFhMjlhNmRjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTE1MCwzMiArMTUwLDMyIEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByCiAgICAgdm9pZCBy
ZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICB2b2lkIHBh
Z2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCk7CiAgICAgdm9pZCBzZXREZWZlcnNM
b2FkaW5nKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQgY3Jvc3NPcmln
aW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVkaXJlY3RVUkwpOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVk
KFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZv
aWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsK
ICAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKIAotICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBT
dHJpbmcmIGNvb2tpZVN0cmluZywgYm9vbCYgc2VjdXJlQ29va2llc0FjY2Vzc2VkKTsKLSAgICB2
b2lkIHNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQpOwor
ICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklE
LCBib29sJiByZXN1bHQpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcywgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wmIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCk7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1
cmVDb29raWVzQWNjZXNzZWQpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBk
ZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNz
Q29ubmVjdGlvbkNoZWNrKTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKICAgICB2b2lkIHBy
ZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVCYWNrZWRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSYmKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7Ci0gICAgdm9p
ZCBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7Ci0g
ICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CisgICAgdm9p
ZCBibG9iU2l6ZShjb25zdCBVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7CisgICAgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBv
cmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YUtleSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OwogCiAgICAgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJv
b2wpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oV2ViQ29yZTo6VVJMJiYsIFBBTDo6
U2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90KTsKKyAgICB2b2lkIGNy
ZWF0ZVNvY2tldFN0cmVhbShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRp
dGlvbiwgdWludDY0X3QpOwogICAgIHZvaWQgZGVzdHJveVNvY2tldFN0cmVhbSh1aW50NjRfdCk7
CiAgICAgCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA3NzNkOWQ4ZTEw
MzNiNjJlNDgxMzNiOTYyMGI2MjliZjc4ODZmZWFkLi45ZWZlYTU3NTRiNGRjY2Y2MzNiMWU0MzA0
ZGJhMzc0NGQ3ZGEzZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTM0LDI4ICszNCwyOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJD
b3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmlu
ZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKLSAgICBTZXRDb29r
aWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBh
cnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6
VVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBj
b29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAgICBTZXRDb29raWVz
RnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBTdHJp
bmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKGJvb2wgZW5hYmxlZCkKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1
Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBlbnVtIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKQotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUlu
Zm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
IGNvb2tpZXMpCi0gICAgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAgQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
ZW51bSBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykg
LT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAg
ICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHks
IHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAgIERlbGV0ZUNvb2tp
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQog
Ci0gICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgcGF0aCwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcg
Y29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFZlY3Rv
cjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAg
UmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgc3Jj
VVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykKKyAgICBSZWdpc3RlckZpbGVC
bG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJs
b2JVUkwoVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmlu
ZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBz
cmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogICAgIFByZXJlZ2lzdGVy
U2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoVmVjdG9yPFN0cmlu
Zz4gZmlsZVBhdGhzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4dGVu
c2lvbkhhbmRsZXMpCi0gICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoV2Vi
Q29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRo
LCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoV2ViQ29y
ZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBl
bmQpCi0gICAgVW5yZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCkKLSAgICBCbG9iU2l6
ZShXZWJDb3JlOjpVUkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkKKyAgICBSZWdpc3Rl
ckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChVUkwgdXJsLCBVUkwgc3JjVVJMLCBTdHJpbmcg
ZmlsZUJhY2tlZFBhdGgsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxG
b3JTbGljZShVUkwgdXJsLCBVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkK
KyAgICBVbnJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsKQorICAgIEJsb2JTaXplKFVSTCB1cmwpIC0+
ICh1aW50NjRfdCByZXN1bHRTaXplKQogICAgIFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFZl
Y3RvcjxTdHJpbmc+IGJsb2JVUkxzLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcikKIAogICAg
IFN0b3JlRGVyaXZlZERhdGFUb0NhY2hlKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhS2V5IGtl
eSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCiAKICAgICBTZXRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAotICAgIENyZWF0
ZVNvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICBDcmVhdGVT
b2NrZXRTdHJlYW0oVVJMIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2Fj
aGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCiAKICAgICBFbnN1cmVMZWdhY3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suY3BwCmluZGV4IGNmNGU2NGQ1MDNmMWE5ZWUwYmRjNWUwZDUyOGM0
N2YyOTQyOWE2NDEuLjA1OWExMzAxNDNiYTVmM2E3ZTBkMWViMWIxNDY2ZmE5MWZhMGI5OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAK
QEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDbwogICAgIGlmIChyZXNw
b25zZS5pc0hUVFAwOSgpKSB7CiAgICAgICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwotICAgICAg
ICBpZiAocG9ydCAmJiAhaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJs
LnByb3RvY29sKCkpKSB7CisgICAgICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRG
b3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICAgICAgY2Fu
Y2VsKCk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoeyBTdHJp
bmcoKSwgMCwgdXJsLCAiQ2FuY2VsbGVkIGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIiB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwCmluZGV4IDY1ZWFiYjJiZjNiNTlkMmZkNDdhYTQxMjY1ZGZmNjk5NDhiMzgwZGIu
LmQ3M2E2ZWE2ZmYxMmMzMDRiZmE3NGJhYjk1YmU2YWVlZTY2Yjg5OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAt
NDgsOSArNDgsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMTc5
N2Q3ZTAyNWEwNGRkMjNjZTQ5N2M4MTFhZjI4MWEyNTk3MTI1ZC4uODQ2Y2I0ZDNhZDNiYzk1YTBh
ZWUxYmJlZTA2MDZkMjMxNDVjMWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjsKIAogY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogcHVibGljOgotICAgIE5l
dHdvcmtMb2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1h
cCYmLCBXZWJDb3JlOjpVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBX
ZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIHNob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlKTsKKyAgICBOZXR3b3JrTG9hZENo
ZWNrZXIoV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYs
IFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9s
aWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MgPSBmYWxzZSk7CiAgICAgfk5ldHdvcmtMb2FkQ2hlY2tlcigpOwogCiAgICAgdXNp
bmcgUmVxdWVzdE9yRXJyb3IgPSBFeHBlY3RlZDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3I+OwpAQCAtNjksMTQgKzY5LDE0IEBAIGNsYXNzIE5ldHdvcmtM
b2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsK
IAogICAgIHZvaWQgc2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYmIGhlYWRlcnMpIHsgbV9jc3BSZXNwb25zZUhlYWRlcnMg
PSBXVEZNb3ZlKGhlYWRlcnMpOyB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAg
ICB2b2lkIHNldENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6OlVSTCYmIG1haW5E
b2N1bWVudFVSTCwgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
PiBpZGVudGlmaWVyKQorICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoVVJM
JiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXI+IGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5Eb2N1bWVudFVSTCA9
IFdURk1vdmUobWFpbkRvY3VtZW50VVJMKTsKICAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICB9CiAjZW5kaWYKIAotICAgIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3N0
b3JlZENyZWRlbnRpYWxzUG9saWN5OyB9CiAKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZEluZm9y
bWF0aW9uIHRha2VOZXR3b3JrTG9hZEluZm9ybWF0aW9uKCkgeyByZXR1cm4gV1RGTW92ZShtX2xv
YWRJbmZvcm1hdGlvbik7IH0KQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRDaGVj
a2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogCiAgICAg
dm9pZCBjb250aW51ZUNoZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
VmFsaWRhdGlvbkhhbmRsZXImJik7CiAKLSAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNrKGNv
bnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2so
Y29uc3QgVVJMJikgY29uc3Q7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09S
U1JlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9u
SGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKQEAgLTExOCwxMSAr
MTE4LDExIEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQ7CiAgICAgV2Vi
Q29yZTo6SFRUUEhlYWRlck1hcCBtX29yaWdpbmFsUmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBm
b3IgQ09SUyBjaGVja3MuCiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX2ZpcnN0UmVxdWVz
dEhlYWRlcnM7IC8vIE5lZWRlZCBmb3IgQ09SUyBjaGVja3MuCi0gICAgV2ViQ29yZTo6VVJMIG1f
dXJsOworICAgIFVSTCBtX3VybDsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
IG1fb3JpZ2luOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVyczsKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQotICAgIFdlYkNvcmU6OlVSTCBtX21haW5Eb2N1bWVudFVSTDsKKyAg
ICBVUkwgbV9tYWluRG9jdW1lbnRVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAj
ZW5kaWYKIApAQCAtMTMxLDcgKzEzMSw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICBib29sIG1faXNT
aW1wbGVSZXF1ZXN0IHsgdHJ1ZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIHNpemVfdCBt
X3JlZGlyZWN0Q291bnQgeyAwIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fcHJldmlvdXNVUkw7Cisg
ICAgVVJMIG1fcHJldmlvdXNVUkw7CiAgICAgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5IG1fcHJl
ZmxpZ2h0UG9saWN5OwogICAgIFN0cmluZyBtX2RudEhlYWRlclZhbHVlOwogICAgIFN0cmluZyBt
X3JlZmVycmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAppbmRleCBlYjg4NjY0ODEzOWNjN2I3NTllNzJjNjgxODI4MGI1ZDA0NzEwOWUwLi4w
NmMxYjNhZDRlYWU0Y2Q3ZDQyZDI5MDQ0NTUyOGE5OTRjY2E5MWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNzYsMTMgKzc2LDEz
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFj
a0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAj
ZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiBoYW5kbGVGb3JXcml0aW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZUZvcldyaXRpbmcs
IHVpbnQ2NF90IHJlcXVlc3RJRCkKIHsKICAgICBhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZShXVEZNb3ZlKGhhbmRsZUZvcldyaXRpbmcpKTsKICAgICBpZiAoIWV4dGVu
c2lvbikgewpAQCAtMTAwOCw3ICsxMDA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2Fj
aGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF8KICAg
ICAgICAgY2FsbGJhY2soU3RyaW5nIHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0sIHF1b3RhKTsK
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVy
bCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kpCiB7CiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQogICAgIE5ldHdvcmtMb2FkUGFy
YW1ldGVycyBwYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCmluZGV4IGZiMzc3M2QxZWZlMWQzNDIxNmQ2YWVmY2U0ODUzZWM3ODk5ZGE1
NGMuLmFhYWRiMTMzYzc5ZmZhMTFjMGNmNjgyMzAyZTdiZDBhMGU2MWQzY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTY1LDcgKzY1LDYg
QEAgY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFNX
U2VydmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiBlbnVtIGNsYXNzIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5Owogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwog
c3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKQEAgLTE3Miw3ICsxNzEsNyBAQCBjbGFzcyBOZXR3
b3JrUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2Vy
OjpDbGllbnQKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHF1b3RhKT47CiAgICAg
dm9pZCBjYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VQ
YXJhbWV0ZXJzQ2FsbGJhY2smJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBXZWJD
b3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgdm9pZCBw
cmVjb25uZWN0VG8oY29uc3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kp
OwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9nQ29va2llSW5mb3JtYXRpb247IH0KQEAgLTI5Myw3ICsyOTIsNyBAQCBjbGFz
cyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRN
YW5hZ2VyOjpDbGllbnQKICAgICB2b2lkIHN5bmNBbGxDb29raWVzKCk7CiAgICAgdm9pZCBkaWRT
eW5jQWxsQ29va2llcygpOwogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYs
IHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldElnbm9y
ZVRMU0Vycm9ycyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFjNzNiZWQ0MmUyZDQ1YTdjZThj
MWZjNDRiM2M3NmYyYmIyYTllYmUuLjc4ZjljYjI5ODZkMzA0YzViMDJlZjgzNWI3MTk3MjBjNDMw
ZTIzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNzcsOSArNzcsOSBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkR2V0U2FuZGJveEV4dGVuc2lvbnNG
b3JCbG9iRmlsZXModWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5IGV4dGVuc2lvbnMpCiAjZW5kaWYKIAotICAgIFdyaXRlQmxvYlRvRmlsZVBh
dGgoV2ViQ29yZTo6VVJMIGJsb2JVUkwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgV3JpdGVCbG9i
VG9GaWxlUGF0aChVUkwgYmxvYlVSTCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIFByZWNvbm5l
Y3RUbyhXZWJDb3JlOjpVUkwgdXJsLCBlbnVtIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBQcmVjb25uZWN0VG8oVVJMIHVybCwg
ZW51bSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0Jsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3Qs
IHVpbnQ2NF90IGNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkNjM3Mzhh
ZWVjOGEzNTM1ZDA5NjEwMzY5ZTc4NjQ5MWIxZTlkMmY5Li4yNzQzZTEyOWM4NzlmNmIwYzI1YzIx
MWJhMDA4OTM5NzhhM2EwYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC02NSw3ICs2
NSw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIDogcHVibGljIE5ldHdv
cmtMb2FkUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4+IGZyYW1lQW5jZXN0b3JPcmlnaW5zOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKLSAgICBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMOworICAgIFVSTCBtYWluRG9j
dW1lbnRVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IGQxYzY4ODllYTY0OGNjYWNmMDhhYzE0YmU3YjZjNTJjYTNiMDNkMzYuLjQzYWVk
NTQ2ZGVmNjBlOGFkY2NlZmMxMzlhNzJmODZhZmY3NWRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk3
Niw3ICs5NzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3Jt
YXRpb24oKSBjb25zdAogICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKCJOZXR3b3JrUmVzb3VyY2VM
b2FkZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2Ft
ZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51
cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlE
KCksIGlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZv
cm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZv
aWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRp
b24oKSk7CiAKQEAgLTEwMDMsNyArMTAwMyw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29r
aWVJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPCiAj
dW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5m
b3JtYXRpb25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRP
YmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVu
dGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhZmIwZTlj
Nzk1NjYzZWFiMDVlYzRhZjRmMzgyNTRiNzdmYWVjMWRhLi5mODc0ZjhkYmE2ZTljNWU1NjEwZjcz
NGQzNGNkNDc2MDFiMDRhODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRpYyBib29sIHNob3Vs
ZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3Jt
YXRpb24oY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAog
cHJpdmF0ZToKQEAgLTEzNCw3ICsxMzQsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIg
ZmluYWwKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50
cnk+JiYpOwogICAgIHZvaWQgY29udGludWVQcm9jZXNzaW5nQ2FjaGVkRW50cnlBZnRlckRpZFJl
Y2VpdmVSZXNwb25zZShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogCi0g
ICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JY
RnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIGJvb2wgc2hvdWxk
SW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIGVudW0gY2xhc3MgRmlyc3RMb2FkIHsg
Tm8sIFllcyB9OwpAQCAtMTY5LDcgKzE2OSw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRl
ciBmaW5hbAogCiAgICAgLy8gQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAgdm9pZCBh
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYsIHVuc2lnbmVkIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9y
dChXZWJDb3JlOjpVUkwmJiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQoVVJMJiYsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4m
JikgZmluYWw7CiAgICAgdm9pZCBlbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChX
ZWJDb3JlOjpTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBsb2dTbG93Q2FjaGVSZXRyaWV2ZUlmTmVlZGVkKGNvbnN0IE5ldHdvcmtDYWNoZTo6
Q2FjaGU6OlJldHJpZXZlSW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggNDJkMzZiYzRjYzNmZTQzMmYzNTI0
YzgzYjBjOWY4ODRlOGQ3NDQzYy4uYzVhNjJjNjhmZTlkYTY1NmU0MjMzZmJkMTM2OWEyYzY2MWUy
OWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRTdHJlYW0uY3BwCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gTmV0d29y
a1NvY2tldFN0cmVhbTo6Y3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25B
dWRpdFRva2VuJiYgYXVkaXREYXRhKQorUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtT
b2NrZXRTdHJlYW06OmNyZWF0ZShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYm
IGF1ZGl0RGF0YSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU29ja2V0U3Ry
ZWFtKFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBpZGVudGlm
aWVyLCBjb25uZWN0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggOTA2ZTU4
ZWJmNTc0MjVkNjgzNzcwODkxNjg1ZmRhYmQyYTgzN2JjOC4uMzI2ODcxNmY0NDY5YzA5OTNmMjU5
N2QwOWNiZTE1ODhlNmYyM2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKQEAgLTM5LDE0ICszOSwxMyBAQCBjbGFzcyBEYXRh
UmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0
d29ya1NvY2tldFN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRTdHJlYW0+
LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmLCBQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRf
dCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2Vu
JiYpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFVSTCYmLCBQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRf
dCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2Vu
JiYpOwogICAgIH5OZXR3b3JrU29ja2V0U3RyZWFtKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtNjcsNyArNjYsNyBA
QCBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Nv
Y2tldFN0cmVhbT4sIHB1YmxpYyBJUEM6OgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGZpbmFsOwogCi0gICAgTmV0d29ya1NvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwm
JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWlu
dDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRU
b2tlbiYmKTsKKyAgICBOZXR3b3JrU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0
aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogCiAgICAgdWlu
dDY0X3QgbV9pZGVudGlmaWVyOwogICAgIElQQzo6Q29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDlmMGM2Yjg2YjQyMGY0
NTViZmZjMmRlNmI5NGViZTdjOGJlMTQzYTAuLmQ0NTQzZjIzNWI5MDQ3YzU3MDljODFmZmRhMzg2
MWM1OWY3ODQyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAg
LTM2LDcgKzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1cml0
eVBvbGljeTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTEsNyArNTAsNyBAQCBjbGFzcyBQaW5nTG9hZCBmaW5hbCA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxQaW5nTG9hZD4sIHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQwogcHJp
dmF0ZToKICAgICB+UGluZ0xvYWQoKTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgY3VycmVu
dFVSTCgpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgY3VycmVudFVSTCgpIGNvbnN0OwogICAgIFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5KCkgY29u
c3Q7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgK
aW5kZXggMmNhNjYyNWQxYzAwZTZkMjdkNTI1ODg2MTcyMWZjYzUwYjUzNGI1NS4uOWQxNzAzNzg5
NGY1YjUxMTAzOGRlMDZiYWQwOWRkN2Y2MzRjN2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaApAQCAtOTAsOCArOTAsOCBAQCBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rp
b24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ogog
ICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwg
U3RyaW5nJiYgcmVmZXJyZXIpOwogICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7
CiAKLSAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNo
UmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9w
T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7Ci0gICAgdm9pZCBnZXRSZWdp
c3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGNsaWVudFVSTCk7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBy
ZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpOworICAgIHZvaWQg
Z2V0UmVnaXN0cmF0aW9ucyh1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3Qg
VVJMJiBjbGllbnRVUkwpOwogCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCmluZGV4IDA2MTk1YjhhZDE5NDYxOGNkZmY2ZmZlOWQ1NzVlOWYzYTQ0NGE3ZWQuLjI5NGJk
NTk5ZDQwYmNjMjExODRkOTdkN2FkNTBjYmM4YzMwMWEyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsOSArMzYsOSBAQCBt
ZXNzYWdlcyAtPiBXZWJTV1NlcnZlckNvbm5lY3Rpb24gewogCiAgICAgRGlkUmVzb2x2ZVJlZ2lz
dHJhdGlvblByb21pc2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBrZXkp
CiAKLSAgICBNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0
Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0
b3BPcmlnaW4sIFdlYkNvcmU6OlVSTCBjbGllbnRVUkwpCi0gICAgV2hlblJlZ2lzdHJhdGlvblJl
YWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJM
IGNsaWVudFVSTCkKLSAgICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3Ry
YXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKKyAgICBNYXRjaFJlZ2lz
dHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmll
ciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGll
bnRVUkwpCisgICAgV2hlblJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3Ry
YXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKKyAgICBHZXRSZWdpc3RyYXRpb25zKHVp
bnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKICAg
ICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSB0b3BPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSBkYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyPiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KQogICAgIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpp
bmRleCBkODZhYjYwOTM5Nzc2NWM1YmJmYTc5MzU0YTExNWI3Yzc0OTFkMjdlLi42MTE2OTJkMTk0
OTk3MmZlYjFlM2NlODViODhiODU4NTU5ZmU2NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1
LDcgKzM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsK
ICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
c3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIpOwogICAgIE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25z
KTsKICAgICBDbGFpbSh1aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgU2V0
U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgV2ViQ29yZTo6VVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgV2ViQ29yZTo6VVJMIHJl
c3BvbnNlVVJMLCBTdHJpbmcgbWltZVR5cGUpOworICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0
cmluZyBzY3JpcHQsIFVSTCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVUeXBlKTsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA1NWEw
OGJjMDhjMDhkMWQ4YThhYzg2MjI4ZGY2NTAxYTkxNTlhODdhLi5iMTliZmQxMDA1NzI2NzY0MjE2
NzAwZjViMzg0YzZiZWVmMTQzMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMzQsNyArMTM0
LDcgQEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3IKIH0KIAogCi12b2lkIEVuZ2luZTo6cmV0cmll
dmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpVUkwmJiB1cmwsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRz
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCwg
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGZyb20oc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyLCB1cmwgPSBXVEZNb3ZlKHVybCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAg
ICAgICAgIGVuZ2luZS5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHVy
bCksIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEVuZ2luZTo6
cmV0cmlldmVDYWNoZXMoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2
NF90IHVwZGF0ZQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsLCBSZWNvcmRzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBVUkwmJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIHJlYWRDYWNoZShjYWNoZUlkZW50aWZpZXIsIFt1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA4
YzJlOGNjZTE0ZDgxMjkwOTdmNzFhYzIxZTI2ZTM2MWZkNmQ2ODMzLi43ZTE0MjI1YmVlNTBhOTc3
YjVmYzkyNTE0NjU0NjdiYjM0ZDgzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTY1LDcgKzY1LDcg
QEAgY2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiwgcHVibGljIENhbk1h
a2VXZWFrUHRyPEVuZ2luZT4gewogICAgIHN0YXRpYyB2b2lkIHJlbW92ZShQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CiAgICAgc3RhdGljIHZvaWQgcmV0cmlldmVDYWNoZXMo
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCB1aW50NjRfdCB1cGRhdGVD
b3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwog
Ci0gICAgc3RhdGljIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlUmVjb3JkcyhQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBwdXRS
ZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVN
YXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYs
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwog
CkBAIC0xMDQsNyArMTA0LDcgQEAgY2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5n
aW5lPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEVuZ2luZT4gewogICAgIHZvaWQgY2xlYXJNZW1v
cnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNl
bnRhdGlvbigpOwogCi0gICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHND
YWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYp
OwogICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5n
UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5o
CmluZGV4IDdmYjZlMDgxOGVjMjQxNTk1ZjgyYzY3NzJjODRiNWUzMjBjZjc2MTUuLjg5ODAxOGU0
ZWEzN2ZiMTJmYjYzMmIxOTJmZThhZWExYzcxNDY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RydWN0IFJlY29yZEluZm9ybWF0aW9uIHsKIAogICAgIHVp
bnQ2NF90IHNpemUgeyAwIH07CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsOworICAgIFVSTCB1cmw7
CiAgICAgYm9vbCBoYXNWYXJ5U3RhciB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4gdmFyeUhlYWRlcnM7CiB9OwpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBDYWNoZSB7CiAg
ICAgY29uc3QgU3RyaW5nJiB1bmlxdWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVOYW1l
OyB9CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6
OlVuaW5pdGlhbGl6ZWQ7IH0KIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCByZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJbmZvIGluZm8oKSBjb25zdCB7IHJldHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07IH0K
IAogICAgIHZvaWQgcHV0KFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYm
LCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsK
QEAgLTk0LDggKzk0LDggQEAgY2xhc3MgQ2FjaGUgewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PERlY29kZWRSZWNvcmQ+IGRlY29kZVJlY29yZEhlYWRlcihjb25zdCBOZXR3b3JrQ2FjaGU6OlN0
b3JhZ2U6OlJlY29yZCYpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlv
bj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIGNvbnN0IFZlY3Rv
cjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYp
IGNvbnN0OworICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNv
bnN0IFVSTCYpOworICAgIGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNG
cm9tVVJMKGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIFJlY29yZEluZm9ybWF0aW9uJiBhZGRSZWNv
cmQoVmVjdG9yPFJlY29yZEluZm9ybWF0aW9uPiosIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpSZWNvcmQmKTsKIAogICAgIHZvaWQgc3RvcmVSZWNvcmRzKFZlY3RvcjxXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
SWRlbnRpZmllcnNDYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
Y3BwCmluZGV4IDI5YjM4YjFhMmUzZWJiNDExNzcyYTJhZWFhYmRjZWZiM2NkNGRlNzMuLmM2MmNi
M2FiODU3NDhhNWIwYzg5ZTU3YjE1Y2YxYzA1NmQ4NzEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHJlcQogICAgIH0pOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJl
dHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCkK
K3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgVVJMJiYgdXJsKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInJldHJpZXZlUmVjb3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hlICUiIFBSSXU2NCwgcmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7CiAgICAgRW5naW5lOjpyZXRyaWV2ZVJl
Y29yZHMoc2Vzc2lvbklELCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW2Nvbm5lY3Rp
b24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVl
c3RJZGVudGlmaWVyXShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uaAppbmRleCBiYzg4MGY1ZWI1ODlhZWRjZmVlNDVhMjM0MTgzOGIyNTNk
YmE2MTA0Li42YTNkZGM2M2QyYTA4ODVjYTRjNTE0MjVlNTZjM2E1Y2M5NjgzYTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdAogICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBy
ZW1vdmVSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2
b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlm
aWVyLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgdWludDY0X3QgdXBkYXRlQ291bnRlcik7CiAK
LSAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYpOwor
ICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJik7CiAgICAgdm9pZCBk
ZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMo
UEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IGUzMTA3ZTIwMTQ2ZDU5MDAzYjIwNmIxZGVkZjZmODYzY2I4YzU1ZWUuLjYwZTM5YWEyYzQw
NWRjYzk4YWFhOTIwMDk0YWUxMGQ4ZWFiNTQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2FnZXMg
LT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiB7CiAgICAgQ2xlYXJNZW1vcnlSZXByZXNl
bnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbik7CiAgICAgRW5naW5lUmVw
cmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllcik7CiAKLSAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpVUkwgdXJsKTsKKyAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBVUkwgdXJsKTsKICAgICBEZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6
OkNhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIFB1dFJlY29yZHMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3Jk
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5oCmluZGV4IGYxNWFkNmJkMGFkYzhjNzM1OGMxYTk0OTk4MGQ4NDA5ZTYyODMzYTQuLjAx
N2FkNjNlMmM5ZWI3MzM0NWM1NzYxZDlhYTQ3YmRmZjY5ZTMzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMzcsNyArMzcs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCBhMTU1
ZTlmMmUzYWUxMzgxNDQzYTRhMGNlMGIyNDA3NTdlNGE2OWViLi5kMDY2YTg5NWI5NDA1ODFkZWE4
Y2MxM2JhNDQyMzQ1NzllNTZkZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI5
NCw3ICsyOTQsNyBAQCBzdGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFn
bm9zdGljS2V5KFVzZURlY2lzaW9uIGRlY2lzaW9uKQogCiB2b2lkIFN0YXRpc3RpY3M6OnJlY29y
ZFJldHJpZXZlZENhY2hlZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXks
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVXNlRGVjaXNpb24gZGVj
aXNpb24pCiB7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOwor
ICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAoZGVjaXNpb24gPT0g
VXNlRGVjaXNpb246OlVzZSkgewogICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQ
cm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIGlzIGluIHRoZSBjYWNoZSBhbmQgaXMg
dXNlZCIsIHdlYlBhZ2VJRCwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAg
ICAgICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhSZXN1bHQod2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5ldHdv
cmtDYWNoZUtleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJldHJpZXZhbEtl
eSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MsIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZTo6WWVzKTsKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnJlY29y
ZFJldHJpZXZlZENhY2hlZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXks
CiAKIHZvaWQgU3RhdGlzdGljczo6cmVjb3JkUmV2YWxpZGF0aW9uU3VjY2Vzcyh1aW50NjRfdCB3
ZWJQYWdlSUQsIGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgp
OworICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBMT0coTmV0d29ya0Nh
Y2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIHdhcyBzdWNj
ZXNzZnVsbHkgcmV2YWxpZGF0ZWQiLCB3ZWJQYWdlSUQsIHJlcXVlc3RVUkwuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOwogCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dn
aW5nS2V5czo6bmV0d29ya0NhY2hlS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5
czo6cmV2YWxpZGF0aW5nS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0UGFz
cywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5oCmluZGV4IGVmMjUyYTFjN2I5YzZiZDU2ODA5NzMwYzJkMDQ5MzM1MzFmMDRjOWIu
LjQzOTIxYTAwMjRlOTdkZDM2ZjBkMjIxODUxZWM0YWU5ODc2MWExNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2Vz
RW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmgKQEAgLTIzLDE1ICsyMywxNCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnlfaAotI2RlZmluZSBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeV9oCisj
cHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFM
SURBVElPTikKIAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CkBAIC01MCw3ICs0OSw3IEBAIGNsYXNz
IFN1YnJlc291cmNlSW5mbyB7CiAgICAgV2FsbFRpbWUgZmlyc3RTZWVuKCkgY29uc3QgeyByZXR1
cm4gbV9maXJzdFNlZW47IH0KIAogICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVy
biBtX2lzVHJhbnNpZW50OyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5Rm9y
Q29va2llcygpIGNvbnN0IHsgQVNTRVJUKCFtX2lzVHJhbnNpZW50KTsgcmV0dXJuIG1fZmlyc3RQ
YXJ0eUZvckNvb2tpZXM7IH0KKyAgICBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkg
Y29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29v
a2llczsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJz
KCkgY29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVy
czsgfQogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KCkgY29uc3Qg
eyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9wcmlvcml0eTsgfQogCkBAIC02NSw3
ICs2NCw3IEBAIGNsYXNzIFN1YnJlc291cmNlSW5mbyB7CiAgICAgV2FsbFRpbWUgbV9maXJzdFNl
ZW47CiAgICAgYm9vbCBtX2lzVHJhbnNpZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTYW1l
U2l0ZSB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7
CisgICAgVVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCBtX3JlcXVlc3RIZWFkZXJzOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5
IG1fcHJpb3JpdHk7CiB9OwpAQCAtMTA3LDQgKzEwNiwzIEBAIGNsYXNzIFN1YnJlc291cmNlc0Vu
dHJ5IHsKIH0gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNoZQogCiAjZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQotI2VuZGlmIC8vIE5ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcAppbmRleCA5NjYx
NjhiNGUwNzgxMjQ4ZTU1NjgxZmY0Yjc3N2U2ZTE2MDMwOTQ1Li5iMWMwZmIxMTFiZDViZDYxMTQ4
OTk4YjRiOTdhN2YwZjNlM2NhMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwCkBAIC0zNiw5
ICszNiw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVz
cG9uc2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0JyaWdhbmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
UGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtODEsOCArODEsNyBAQCBSZXF1ZXN0OjpSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogUmVxdWVzdDo6b3BlcmF0b3IgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0KCkgY29uc3QKIHsKLSAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKHVy
bCk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocGFyc2VyLnJlc3VsdCgp
LCByZWZlcnJlciwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xp
Y3k+KHBvbGljeSkpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFVSTCh7
IH0sIHVybCksIHJlZmVycmVyLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeT4ocG9saWN5KSk7CiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKG1ldGhvZCk7
CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpCkBAIC0xMTgsOCArMTE3
LDcgQEAgUmVzcG9uc2U6OlJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogCiBSZXNwb25zZTo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSgpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcih1cmwpOwotICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UocGFyc2VyLnJlc3VsdCgpLCBtaW1lVHlw
ZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUpOworICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKHsgfSwgdXJsKSwgbWltZVR5cGUsIGV4cGVjdGVkTGVu
Z3RoLCB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICByZXNwb25zZS5zZXRIVFRQVmVyc2lvbih2ZXJz
aW9uKTsKICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOwogICAgIHJlc3Bv
bnNlLnNldEhUVFBTdGF0dXNUZXh0KHJlYXNvbik7CkBAIC0xNTIsOCArMTUwLDcgQEAgRXJyb3I6
OkVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiBFcnJvcjo6b3Bl
cmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJM
UGFyc2VyIHBhcnNlcihmYWlsaW5nVVJMKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBwYXJzZXIucmVzdWx0KCksIGxvY2FsaXplZERlc2NyaXB0
aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlPih0eXBlKSk7Cisg
ICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcihkb21haW4sIGVycm9yQ29kZSwgVVJMKHsg
fSwgZmFpbGluZ1VSTCksIGxvY2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yOjpUeXBlPih0eXBlKSk7CiAKICAgICByZXR1cm4gZXJyb3I7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0Nh
cHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDI3Njg5ZWUzYjcyMzk4ZDg1MTIwZjczNjM1
N2MwMDcyNDIyODllOGUuLmQ1NjVhNGVhMzc3MWU0NjM3OTczZjcxOWNhMTk4YTI4YzU1N2UwZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3Jr
Q2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpbmNs
dWRlICJOZXR3b3JrQ2FwdHVyZUxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZVJl
c291cmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxpdGVyYXRv
cj4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAg
LTE0Niw3ICsxNDYsNyBAQCBSZXNvdXJjZSogTWFuYWdlcjo6ZmluZEJlc3RGdXp6eU1hdGNoKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogICAgIFJlc291cmNlKiBi
ZXN0TWF0Y2ggPSBudWxscHRyOwogICAgIGludCBiZXN0U2NvcmUgPSBrTWluTWF0Y2g7Ci0gICAg
Y29uc3QgYXV0byYgcmVxdWVzdFBhcmFtZXRlcnMgPSBXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNl
VVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkpOworICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RQYXJh
bWV0ZXJzID0gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkp
OwogICAgIGZvciAoYXV0byBpUmVzb3VyY2UgPSBsb3dlcjsgaVJlc291cmNlICE9IHVwcGVyOyAr
K2lSZXNvdXJjZSkgewogICAgICAgICBpbnQgdGhpc1Njb3JlID0gZnV6enlNYXRjaFVSTHModXJs
LCByZXF1ZXN0UGFyYW1ldGVycywgaVJlc291cmNlLT51cmwoKSwgaVJlc291cmNlLT5xdWVyeVBh
cmFtZXRlcnMoKSk7CiAgICAgICAgIC8vIFRPRE86IENvbnNpZGVyIGlnbm9yaW5nIGFueSBtYXRj
aGVzIDwgMCBhcyBiZWluZyB0b28gZGlmZmVyZW50LgpAQCAtMTY1LDcgKzE2NSw3IEBAIFJlc291
cmNlKiBNYW5hZ2VyOjpmaW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogLy8gVE9ETzogQ29udmVydCB0byBhbiBpbnRlcmZhY2UgYmFzZWQg
b24gUmVzb3VyY2VSZXF1ZXN0IHNvIHRoYXQgd2UgY2FuIGRvCiAvLyBkZWVwZXIgbWF0Y2hpbmcu
CiAKLWludCBNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyhjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQ
YXJhbWV0ZXJzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXZWJDb3Jl
OjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpCitpbnQgTWFu
YWdlcjo6ZnV6enlNYXRjaFVSTHMoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXVEY6OlVS
TFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBVUkwmIHJl
c291cmNlVVJMLCBjb25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNl
UGFyYW1ldGVycykKIHsKICAgICAvLyBUT0RPOiBjb25zaWRlciByZXF1aXJpbmcgdGhhdCBhbnkg
dHJhaWxpbmcgc3VmZml4ZXMgKGUuZy4sICIuanMiLAogICAgIC8vICIucG5nIiwgIi5jc3MiLCAi
Lmh0bWwiLCBldGMuKSBzaG91bGQgYmUgYW4gZXhhY3QgbWF0Y2guCkBAIC00MTksNyArNDE5LDcg
QEAgU3RyaW5nIE1hbmFnZXI6Omhhc2hUb1BhdGgoY29uc3QgU3RyaW5nJiBoYXNoKQogICAgIHJl
dHVybiBwYXRoOwogfQogCi1TdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21h
aW4oY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCitTdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlp
bmdDb21tb25Eb21haW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHVybC5wcm90b2Nv
bEhvc3RBbmRQb3J0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKaW5kZXggM2M2YjUwMTBk
YTIzNDFlNjgyY2IxY2EyNDAxYTA2NjBmMzljNzQxYS4uYzM2ODE2YzlhODlhMWM3ZWZhZDEwNGYx
YjAzOTA4ODM2ZGNhN2YzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtMjksOCArMjks
OCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04Miw3
ICs4Miw3IEBAIGNsYXNzIE1hbmFnZXIgewogICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgb3BlbkNh
Y2hlRmlsZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUp
OwogCiAgICAgU3RyaW5nIHJlcXVlc3RUb1BhdGgoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7Ci0gICAgc3RhdGljIFN0cmluZyB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbihjb25z
dCBXZWJDb3JlOjpVUkwmKTsKKyAgICBzdGF0aWMgU3RyaW5nIHVybElkZW50aWZ5aW5nQ29tbW9u
RG9tYWluKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgogICAgIE1hbmFnZXIoKSA9IGRlZmF1bHQ7
CkBAIC05MCw3ICs5MCw3IEBAIGNsYXNzIE1hbmFnZXIgewogCiAgICAgUmVzb3VyY2UqIGZpbmRF
eGFjdE1hdGNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIFJlc291cmNl
KiBmaW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0g
ICAgaW50IGZ1enp5TWF0Y2hVUkxzKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29u
c3QgV2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVxdWVzdFBhcmFtZXRlcnMs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzb3VyY2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNl
cjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNlUGFyYW1ldGVycyk7CisgICAgaW50IGZ1enp5TWF0
Y2hVUkxzKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVu
Y29kZWRGb3JtJiByZXF1ZXN0UGFyYW1ldGVycywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCwgY29u
c3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpOwog
CiAgICAgdm9pZCBsb2FkUmVzb3VyY2VzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNw
cAppbmRleCA3MDRjMGQ2YWQ0ZjY2YTBjM2NhYjNiYWYzZTk5NTYxZDg4ODRmMDQ1Li5mM2RjMjNj
NTcwNjk0ZWYzYmJmMjViYmJhMzIzNTFjZDgwZjc0MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVz
b3VyY2UuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlc291cmNlOjpSZXNvdXJjZShjb25zdCBTdHJp
bmcmIGV2ZW50RmlsZVBhdGgpCiB7CiB9CiAKLWNvbnN0IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6
OnVybCgpCitjb25zdCBVUkwmIFJlc291cmNlOjp1cmwoKQogewogICAgIGlmICghbV91cmwuaXNW
YWxpZCgpKSB7CiAgICAgICAgIGF1dG8gZXZlbnRzID0gZXZlbnRTdHJlYW0oKTsKQEAgLTUyLDgg
KzUyLDcgQEAgY29uc3QgV2ViQ29yZTo6VVJMJiBSZXNvdXJjZTo6dXJsKCkKICAgICAgICAgICAg
IERFQlVHX0xPR19FUlJPUigiRXZlbnQgc3RyZWFtIGRvZXMgbm90IGhhdmUgYSByZXF1ZXN0U2Vu
dCBldmVudDogZmlsZSA9ICIgU1RSSU5HX1NQRUNJRklFUiwgREVCVUdfU1RSKG1fZXZlbnRGaWxl
UGF0aCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gcmVxdWVzdFNlbnRFdmVu
dCA9IFdURjo6Z2V0PFJlcXVlc3RTZW50RXZlbnQ+KCpldmVudCk7Ci0gICAgICAgICAgICBXZWJD
b3JlOjpVUkxQYXJzZXIgcGFyc2VyKHJlcXVlc3RTZW50RXZlbnQucmVxdWVzdC51cmwpOwotICAg
ICAgICAgICAgbV91cmwgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgICAgICBtX3VybCA9IFVS
TCh7IH0sIHJlcXVlc3RTZW50RXZlbnQucmVxdWVzdC51cmwpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC02OCwxMCArNjcsMTAgQEAgY29uc3QgU3RyaW5nJiBSZXNvdXJjZTo6dXJsSWRlbnRpZnlp
bmdDb21tb25Eb21haW4oKQogICAgIHJldHVybiBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWlu
OwogfQogCi1XZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpxdWVy
eVBhcmFtZXRlcnMoKQorV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpx
dWVyeVBhcmFtZXRlcnMoKQogewogICAgIGlmICghbV9xdWVyeVBhcmFtZXRlcnMpCi0gICAgICAg
IG1fcXVlcnlQYXJhbWV0ZXJzID0gV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRG
b3JtKHVybCgpLnF1ZXJ5KCkpOworICAgICAgICBtX3F1ZXJ5UGFyYW1ldGVycyA9IFdURjo6VVJM
UGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHVybCgpLnF1ZXJ5KCkpOwogCiAgICAgcmV0dXJu
ICptX3F1ZXJ5UGFyYW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCmluZGV4IDc1
NzZjMGQ1ZTAwODQ4OTE2MmMxOGM5NjYwNGZlM2EzODdmMzllNWUuLmQ0OTNmNGE0YTM1YWQ4ZWE2
Y2RiMmRkOGUwMjVkNjkwYzU4OTI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaApAQCAt
MjksOSArMjksOSBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1cmVFdmVudC5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FwdHVyZSB7CkBAIC01NSwxNiArNTUsMTYg
QEAgY2xhc3MgUmVzb3VyY2UgewogcHVibGljOgogICAgIFJlc291cmNlKGNvbnN0IFN0cmluZyYg
ZXZlbnRGaWxlUGF0aCk7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpOworICAgIGNv
bnN0IFVSTCYgdXJsKCk7CiAgICAgY29uc3QgU3RyaW5nJiB1cmxJZGVudGlmeWluZ0NvbW1vbkRv
bWFpbigpOwotICAgIFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0gcXVlcnlQYXJh
bWV0ZXJzKCk7CisgICAgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIHF1ZXJ5UGFyYW1l
dGVycygpOwogICAgIEV2ZW50U3RyZWFtIGV2ZW50U3RyZWFtKCk7CiAKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fZXZlbnRGaWxlUGF0aDsKLSAgICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAgVVJM
IG1fdXJsOwogICAgIFN0cmluZyBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluOwotICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybT4gbV9xdWVyeVBh
cmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZv
cm0+IG1fcXVlcnlQYXJhbWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhcHR1
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGU1YWY0ZjgzZjFiNTAxYjhiM2Q4YTFiYzU3Yzlk
NzM5MDVmYzk5MTcuLjgwYjE0MDM0NzdhNTM5YjZhMGQxY2JiOWE0ZWFiOGJlNWZlM2RkZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmCiAgICAgfQogICAgIAogICAgIC8vIFNob3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIg
YSByZWRpcmVjdCBmcm9tIGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1cmUgb25lLgotICAg
IGlmIChtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVl
c3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJlcXVl
c3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChtX3Nob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0
cHMiKSAmJiBXVEY6OnByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikp
CiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAKICAgICBjb25zdCBh
dXRvJiB1cmwgPSByZXF1ZXN0LnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDdmMThjMDU2
ZjFhMDVkMmY5MDEwZTRhYjg3NTFlMTM0N2M4MmE2ZWIuLjI3MDU5MjVkODczMDhiOGEyYTY0NzAy
OWRmZDc4Yzc2OTVmMWRkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTQ2LDEyICs0NiwxMiBA
QAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVVUkxSZXNwb25z
ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0
Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKQEAgLTM0OCw3ICszNDgsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5T
VVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlkUmVj
ZQogICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpD
cmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgpKSB7CiAKICAgICAgICAgICAgICAg
ICBXZWJDb3JlOjpDcmVkZW50aWFsIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwu
dXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUpOwotICAgICAgICAgICAgICAgIFdlYkNvcmU6OlVSTCB1cmxUb1N0b3JlOworICAg
ICAgICAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICAgICAgICAgIGlmIChhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQw
MSkKICAgICAgICAgICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIHN0
b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IDQwMmVjMWRlMDE5NjJmMGNjZjQyMDQyOTU3MjM3
OTFmN2M2NTcyYTAuLmY1Y2MxYzFlMGFjNmRhODQyOTJjNDhiNDcxYjA4Yzg3YmYyOThlZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NN
YWMubW0KQEAgLTIxNSwxMSArMjE1LDExIEBAIHN0YXRpYyB2b2lkIGNhcmJvbldpbmRvd0hpZGRl
bihXaW5kb3dSZWYgd2luZG93KQogc3RhdGljIGJvb2wgb3BlbkNGVVJMUmVmKENGVVJMUmVmIHVy
bCwgaW50MzJfdCYgc3RhdHVzLCBDRlVSTFJlZiogbGF1bmNoZWRVUkwpCiB7CiAgICAgU3RyaW5n
IGxhdW5jaGVkVVJMU3RyaW5nOwotICAgIGlmICghUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCku
b3BlblVSTChXZWJDb3JlOjpVUkwodXJsKS5zdHJpbmcoKSwgc3RhdHVzLCBsYXVuY2hlZFVSTFN0
cmluZykpCisgICAgaWYgKCFQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5vcGVuVVJMKFVSTCh1
cmwpLnN0cmluZygpLCBzdGF0dXMsIGxhdW5jaGVkVVJMU3RyaW5nKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKCFsYXVuY2hlZFVSTFN0cmluZy5pc051bGwoKSAmJiBsYXVuY2hl
ZFVSTCkKLSAgICAgICAgKmxhdW5jaGVkVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCBsYXVuY2hlZFVSTFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7CisgICAgICAgICps
YXVuY2hlZFVSTCA9IFVSTChVUkwoKSwgbGF1bmNoZWRVUkxTdHJpbmcpLmNyZWF0ZUNGVVJMKCku
bGVha1JlZigpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zOTksNyArMzk5LDcgQEAgc3Rh
dGljIE5TUnVubmluZ0FwcGxpY2F0aW9uICpyZXBsYWNlZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxp
Y2F0aW9uQXRVUkxfb3B0aW9uc18KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChQbHVnaW5Q
cm9jZXNzOjpzaW5nbGV0b24oKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFdlYkNvcmU6OlVSTCh1
cmwpLnN0cmluZygpLCBhcmd1bWVudHMpKSB7CisgICAgaWYgKFBsdWdpblByb2Nlc3M6OnNpbmds
ZXRvbigpLmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5nKCksIGFyZ3VtZW50
cykpIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgKmVycm9yID0gbmlsOwogICAg
ICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVVSTC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IDdiMDFkMGU5
MjA1NjI4Y2QzYzAwMmVmNTdlZjExZTgxNGRjY2NiOTEuLmJiZDQyM2JjZjU3MTVlNGFkNzBiZjUy
ZGVmOGMyYzMwYzQxYmYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElVUkwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTIzLDMy
ICsyMywzMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgV2ViVVJMX2gKLSNkZWZpbmUgV2ViVVJMX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJM
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmlu
ZyYgc3RyaW5nKQorICAgIHN0YXRpYyBSZWY8QVBJOjpVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0
cmluZyYgc3RyaW5nKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKHN0
cmluZykpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8VVJMPiBjcmVhdGUoY29uc3QgVVJMKiBi
YXNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgcmVsYXRpdmVVUkwpCisgICAgc3RhdGljIFJlZjxB
UEk6OlVSTD4gY3JlYXRlKGNvbnN0IEFQSTo6VVJMKiBiYXNlVVJMLCBjb25zdCBXVEY6OlN0cmlu
ZyYgcmVsYXRpdmVVUkwpCiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAg
IGJhc2VVUkwtPnBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVS
TCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwu
Z2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVV
UkwpOwogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxTdHJpbmcgPSBhYnNv
bHV0ZVVSTC0+c3RyaW5nKCk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKFdU
Rk1vdmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJzb2x1dGVVUkxT
dHJpbmcpKTsKICAgICB9CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmlzTnVsbCgpOyB9CkBAIC01Niw3ICs1NSw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmpl
Y3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgc3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KIAotICAgIHN0YXRpYyBib29sIGVxdWFs
cyhjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKKyAgICBzdGF0aWMgYm9vbCBlcXVhbHMoY29u
c3QgQVBJOjpVUkwmIGEsIGNvbnN0IEFQSTo6VVJMJiBiKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGEudXJsKCkgPT0gYi51cmwoKTsKICAgICB9CkBAIC0xMDYsMTMgKzEwNSwxMyBAQCBjbGFzcyBV
UkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICB9
CiAKLSAgICBVUkwoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJMLCBjb25z
dCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAgIFVSTChzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpVUkw+
IHBhcnNlZFVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3N0cmlu
ZyhzdHJpbmcpCiAgICAgICAgICwgbV9wYXJzZWRVUkwoV1RGTW92ZShwYXJzZWRVUkwpKQogICAg
IHsKICAgICB9CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0CisgICAgY29u
c3QgV1RGOjpVUkwmIHVybCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNz
YXJ5KCk7CiAgICAgICAgIHJldHVybiAqbV9wYXJzZWRVUkw7CkBAIC0xMjIsMTMgKzEyMSwxMSBA
QCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAg
IHsKICAgICAgICAgaWYgKG1fcGFyc2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPihXZWJDb3JlOjpV
UkwoKSwgbV9zdHJpbmcpOworICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8
V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmlu
ZyBtX3N0cmluZzsKLSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpVUkw+IG1f
cGFyc2VkVVJMOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdURjo6VVJMPiBtX3BhcnNl
ZFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVJMX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRl
cm4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4u
aAppbmRleCA5YjVjN2Y2NmI0OGI4YTk2YmRkMmRjYmU4OWNhOTBhMTIzZDMwNmFhLi42Njk5NWEw
YTg4NTI2YmFjNTNhYjdkMWNjNTk2MTVhMzIwMjE5ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oCkBAIC0yNyw4ICsyNyw4
IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFVz
ZXJDb250ZW50VVJMUGF0dGVybiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6OlVzZXJDb250CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJl
dHVybiBtX3BhdHRlcm4uaG9zdCgpOyB9CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHNjaGVtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5zY2hlbWUoKTsgfQogICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5pc1ZhbGlkKCk7IH07Ci0gICAgYm9vbCBtYXRjaGVz
VVJMKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRj
aGVzKFdlYkNvcmU6OlVSTCh7IH0sIHVybCkpOyB9CisgICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0
IFdURjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdURjo6
VVJMKHsgfSwgdXJsKSk7IH0KICAgICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXR0ZXJuLm1hdGNoU3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBXVEY6OlN0
cmluZyYgcGF0dGVyblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggNzM2ZTFm
M2U2NjQ1Y2UwZWMyMTJmNmRiOWY4Nzg0M2Q1Y2QxM2RhNS4uMTQ5OTU2M2UzOWFlN2I5ODZkZTE3
MzQ3Njc4ODVmNmFhZDkyOGQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VS
TFJlcXVlc3QuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5o
IgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRGF0YS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCmluZGV4IGI4YThhOTBiY2QzYzM0NWNkNDc1NjUyNzcz
MTQzMmNmY2EwMTdjODcuLjhmMWZhOWFkNmUzNmU5OGFjNDEzZWJhOWVmOTU1M2NhZDQwNjM4Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
Y2YvV0tVUkxDRi5tbQppbmRleCBkZjE5ODNhNjAxNTBkZDdlYWRiYWU4M2QzODgyOGFiYWE3ODBl
MGFlLi5iZDkxYTQ1YjA5YzMxNGVmZjM2MzA1MWNjYjg4MTViZGNiYjZkYjg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2lt
cG9ydCAiV0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS05TVVJMLmgiCi0jaW1wb3J0IDxXZWJDb3Jl
L0NGVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9j
Zi9DRlVSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgV0tf
QVBJX0VOQUJMRUQKQEAgLTU2LDcgKzU2LDcgQEAgV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoQ0ZV
UkwoQ0ZVUkxSZWYgY2ZVUkwpCiAjZW5kaWYKIAogICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAg
V2ViQ29yZTo6Z2V0VVJMQnl0ZXMoY2ZVUkwsIHVybEJ5dGVzKTsKKyAgICBXVEY6OmdldFVSTEJ5
dGVzKGNmVVJMLCB1cmxCeXRlcyk7CiAKICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQ
SSh1cmxCeXRlcy5kYXRhKCkpOwogfQpAQCAtNjksNSArNjksNSBAQCBDRlVSTFJlZiBXS1VSTENv
cHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVSTFJlZikKICAg
ICAvLyBVVEYtOCB3aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0IFdlYktpdCBjbGll
bnRzIG1pZ2h0IGV4cGVjdC4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gV2ViS2l0Ojp0b0ltcGwo
VVJMUmVmKS0+c3RyaW5nKCkudXRmOCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVDRlVS
TEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpLCAwKS5sZWFrUmVmKCk7
CisgICAgcmV0dXJuIFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5sZW5ndGgoKSwgMCkubGVha1JlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCA5ZmU1OTU3MjA0Y2M3OTkz
ZWJjMDg4ODhiZDFmODkzMWVhNGViMDAxLi4zMWY2MWNlN2VhZjhiOWE5OWNiYWFkN2RkMDUzNzVk
YTgxYTI1YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRVUklSZXF1ZXN0LmNwcApAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUgIldlYktpdFVSSVJl
cXVlc3QuaCIKIAogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwCmluZGV4
IGQyNDU1ODkzNmNmNDYwNzU1NTcxMmExNmM5NGZkNDYxZWMwOThhMjMuLjI4N2VlZmQ0ZDljY2Y0
MDAzNjczZGU5N2I4OGQzYzJkNjNjMjM0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNp
bmNsdWRlICJXZWJLaXRVUklSZXNwb25zZS5oIgogCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9u
c2VQcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1
ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAu
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2
ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNl
Lm1tCmluZGV4IGRjMGY5MGYwZjM4NTFhYmYxMDA0ODRiYTU3M2FlNGFmOGU4MGIyMzIuLmJjMmZl
NDllMzBhYTM4MmI0MjNiNTRkYjJiYWQ3MmJiN2Y5N2VlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTMwLDggKzMwLDggQEAKIAogI2lu
Y2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTQ2LDggKzQ2LDggQEAgUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBhcmMKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJBcmNoaXZlUmVzb3VyY2UoV1RGTW92ZShhcmNoaXZlUmVzb3Vy
Y2UpKSk7CiB9CiAKLVdlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6
RGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKQotICAgIDogbV9hcmNoaXZlUmVzb3VyY2UoQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS0+Ynl0ZXMoKSwgZGF0
YS0+c2l6ZSgpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBVUkwpLCBNSU1FVHlwZSwg
dGV4dEVuY29kaW5nLCBTdHJpbmcoKSkpCitXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVS
ZXNvdXJjZShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZykKKyAgICA6IG1fYXJjaGl2ZVJl
c291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEt
PmJ5dGVzKCksIGRhdGEtPnNpemUoKSksIFdURjo6VVJMKFdURjo6VVJMKCksIHVybCksIE1JTUVU
eXBlLCB0ZXh0RW5jb2RpbmcsIFN0cmluZygpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKaW5kZXggNDMzNjM4Yjk0OGRmMDk3OGFi
M2MxYmQxYmExYTNiNzQxZGRmYTZhZi4uZDg2ZGM0YWI3NTBiZjgxY2Y5ZTM2NDNhZTY2OTRmY2Iz
MjQ3ZjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTIwLDcg
KzEyMCw3IEBAIHN0cnVjdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiB7CiAgICAgU3RyaW5nIHRp
dGxlOwogICAgIGJvb2wgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIHsgZmFsc2Ug
fTsKICAgICBib29sIGlzQXV0b2ZpbGxhYmxlVXNlcm5hbWVGaWVsZCB7IGZhbHNlIH07Ci0gICAg
V2ViQ29yZTo6VVJMIHJlcHJlc2VudGluZ1BhZ2VVUkw7CisgICAgVVJMIHJlcHJlc2VudGluZ1Bh
Z2VVUkw7CiAgICAgV2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWUgYXV0b2ZpbGxGaWVsZE5hbWUg
eyBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZTo6Tm9uZSB9OwogICAgIFN0cmluZyBwbGFjZWhv
bGRlcjsKICAgICBTdHJpbmcgbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tO
U1VSTEV4dHJhcy5tbQppbmRleCAwMTg4Zjc0Nzk4MmE5NDBhNDhhYjg2ZjgyODhhYWIwMDZkZmQx
MWQ3Li41MTliOWQ4M2VkNzY2MWRjNmQ4N2Q2MjllN2M4Yzg1NWIwZWYyYmJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW0KQEAgLTI2LDEzICsyNiwxMSBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAKLSNpbXBv
cnQgPFdlYkNvcmUvQ0ZVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogQGltcGxlbWVudGF0aW9uIE5TVVJMIChXS0V4dHJh
cykKIAogKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5n
JilzdHJpbmcKQEAgLTUwLDcgKzQ4LDcgQEAgKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdU
RlN0cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcgcmVsYXRpdmVUb1VSTDooTlNVUkwKIC0gKFN0
cmluZylfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nCiB7CiAgICAgQ1N0cmluZyBvcmlnaW5h
bERhdGE7Ci0gICAgZ2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXNlbGYsIG9yaWdpbmFs
RGF0YSk7CisgICAgV1RGOjpnZXRVUkxCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpc2VsZiwgb3Jp
Z2luYWxEYXRhKTsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChvcmlnaW5hbERhdGEpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IDlkY2Y2ZjJlMWQ3MTUzM2Fk
NjQ1ZGY2M2RiZjI0MjI2NTc4NGI4YWYuLjUzY2UyZDFhZjA2ZDI1MWM4MDU1YmQyYWQ1MjdmYWE0
Njc2ZWU5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBAIC0zNCw4ICszNCw4
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdHJ1Y3QgQmFja0Zv
cndhcmRMaXN0U3RhdGUgewogc3RydWN0IFNlc3Npb25TdGF0ZSB7CiAgICAgQmFja0ZvcndhcmRM
aXN0U3RhdGUgYmFja0ZvcndhcmRMaXN0U3RhdGU7CiAgICAgdWludDY0X3QgcmVuZGVyVHJlZVNp
emU7Ci0gICAgV2ViQ29yZTo6VVJMIHByb3Zpc2lvbmFsVVJMOworICAgIFVSTCBwcm92aXNpb25h
bFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBkZjk3MzUwZTAzMGM5ODIzNWJh
M2JhZTRhZDVjYjA1NjVjOTRlNjc1Li5hOTE5NjkyZjY5YzIzYjcxMzM1NjY1OWFkMzA0NWQwM2Yw
ZmU5OWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uaCIKIAogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTA0LDggKzEwNCw4IEBA
IGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9jdW1lbnQoY29uc3Qg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYKICAgICBpZiAobWFpbkZyYW1lU3RhdGUuc3RhdGVPYmpl
Y3REYXRhIHx8IG90aGVyTWFpbkZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhKQogICAgICAgICBy
ZXR1cm4gbWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlciA9PSBvdGhlck1haW5G
cmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXI7CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJs
ID0gV2ViQ29yZTo6VVJMKHsgfSwgbWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKLSAgICBXZWJD
b3JlOjpVUkwgb3RoZXJVUkwgPSBXZWJDb3JlOjpVUkwoeyB9LCBvdGhlck1haW5GcmFtZVN0YXRl
LnVybFN0cmluZyk7CisgICAgVVJMIHVybCA9IFVSTCh7IH0sIG1haW5GcmFtZVN0YXRlLnVybFN0
cmluZyk7CisgICAgVVJMIG90aGVyVVJMID0gVVJMKHsgfSwgb3RoZXJNYWluRnJhbWVTdGF0ZS51
cmxTdHJpbmcpOwogCiAgICAgaWYgKCh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgfHwgb3Ro
ZXJVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIodXJsLCBvdGhlclVSTCkpCiAgICAgICAgIHJldHVybiBtYWluRnJhbWVTdGF0ZS5k
b2N1bWVudFNlcXVlbmNlTnVtYmVyID09IG90aGVyTWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1
ZW5jZU51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IGU1MDdiZjg3NTliMTE3ODkwODZlNTBkN2YwNmM1N2RkODM4MGE0ZjYuLjM5
NWVhNzU4ZDAzYzFhMDcxNjBhNmIzNWZmZWRhZTI4MmY5YjgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzcsMTEgKzc3LDExIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9U
aW1pbmdGdW5jdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXgu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxl
U2hlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAzZWViNDQyZTMyN2RjNzkxMmI0M2M0OTYzNmE2
NTc0Y2Y5YmM0NmNlLi45NTQ1MGY0MTFjN2ZiYTAzYzFlZDc2MTA1OWZkYmEzM2JhMDJlNWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtOTMs
NyArOTMsNiBAQCBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBjbGFz
cyBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4Owog
Y2xhc3MgVXNlclN0eWxlU2hlZXQ7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0
aW9uczsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3Jz
LmgKaW5kZXggMjdkMTRlMzFiMzEwODY2YzZmMTM2ZTNhZDhhYWZmODhlMjNiMzg0Mi4uN2Q2MDBj
NmQyM2I1NWRjYzM5NjMwOTkwNDA3Y2U3NDQ0NDZjYjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJy
b3JzLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTQ4LDE4ICs0Nywx
OCBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlcwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxI
YW5kbGVMb2FkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFVSTCYpOwogCiAjaWYgVVNF
KFNPVVApCi1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7CitXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7
CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdURjo6U3RyaW5nJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLVdlYkNv
cmU6OlJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
VEY6OlN0cmluZyYpOwotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJv
cihjb25zdCBXZWJDb3JlOjpVUkwmKTsKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW52YWxpZFBh
Z2VSYW5nZVRvUHJpbnQoY29uc3QgV2ViQ29yZTo6VVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKK1dlYkNvcmU6
OlJlc291cmNlRXJyb3IgcHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgVVJMJik7CitXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGNvbnN0IFVSTCYpOwogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IDE3OWNhNGJlMzdiZWQwZTNkY2NiNWQzMjYzZjNm
MDY5YjA1MjU1NWIuLmMxY2ZjY2YwNWY4NDIwYWMzYjljMjRkYzU3Zjk4NWY3MjI2MzdjNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlbmRlck9iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCBlM2YzMDU2NjY4NjMw
YTRiNWFmZWI5ODRjOWRlNGRlZGU1MDE1YzBiLi4yZWQ3NzQ0YjA4ZGY4ZmJlOWFjNzJmZDQ3NDc2
NGUxY2U2ZDcyNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVu
dENvZGVyc0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVy
c0NGLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvQ0ZVUkxFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKICNpZiBVU0UoRk9VTkRBVElP
TikKQEAgLTU5OSw4ICs1OTksOCBAQCB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDRlVS
TFJlZiB1cmwpCiAgICAgaWYgKGJhc2VVUkwpCiAgICAgICAgIGVuY29kZShlbmNvZGVyLCBiYXNl
VVJMKTsKIAotICAgIFVSTENoYXJCdWZmZXIgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXModXJs
LCB1cmxCeXRlcyk7CisgICAgV1RGOjpVUkxDaGFyQnVmZmVyIHVybEJ5dGVzOworICAgIFdURjo6
Z2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXJsQnl0ZXMuZGF0YSgp
KSwgdXJsQnl0ZXMuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IGRhdGFSZWZlcmVuY2U7CiB9CkBA
IC02MzEsNyArNjMxLDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRy
PENGVVJMUmVmPiYgcmVzdWx0KQogICAgIH0KICNlbmRpZgogCi0gICAgcmVzdWx0ID0gY3JlYXRl
Q0ZVUkxGcm9tQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJ5dGVzLmRh
dGEoKSksIHVybEJ5dGVzLnNpemUoKSwgYmFzZVVSTC5nZXQoKSk7CisgICAgcmVzdWx0ID0gV1RG
OjpjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJs
Qnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6ZSgpLCBiYXNlVVJMLmdldCgpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2Vi
RXJyb3JzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3Bw
CmluZGV4IGU5ZDkyMzkzYzdkNWM2YjNhYmYzZjlmNDRhMDdmNDFhMDA4NDYwZTguLjZhMGRmNTRj
Mzc0NDVkZjY0Y2M1ZDNiNGJiNjEwZWMxZjNjMDY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9XZWJFcnJvcnNHdGsuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViRXJy
b3JzLmgiCiAKICNpbmNsdWRlICJBUElFcnJvci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbi5oCmluZGV4IDNkMDg2ODlmZTE3NmRkN2E2MTcyYTEzN2MwNTgzZGNlYTczNzJmNjMuLmMx
YWI4NWZkNDQxYmMxMjgwNzU0NjYwOTQwOTY4ZjczNmE4ZjY2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbi5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uUmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dEluZGljYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTYwLDggKzYwLDggQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uIHsKICAgICBib29sIHByZXZlbnRUZXh0SW50ZXJhY3Rpb24geyBmYWxzZSB9OwogI2VuZGlm
CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBhZGp1c3RlZFBvaW50Rm9yTm9kZVJlc3BvbmRpbmdU
b0NsaWNrRXZlbnRzOwotICAgIFdlYkNvcmU6OlVSTCB1cmw7Ci0gICAgV2ViQ29yZTo6VVJMIGlt
YWdlVVJMOworICAgIFVSTCB1cmw7CisgICAgVVJMIGltYWdlVVJMOwogICAgIFN0cmluZyB0aXRs
ZTsKICAgICBTdHJpbmcgaWRBdHRyaWJ1dGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
aW5kZXggYmIwZDFjYjYzZDQxZjJlN2JjMzZiYTlmNWQ1ZGFlNWU0MDgxMTU5Mi4uOTBmZGU3ZDA0
YjI3MzA1YTQ2NDM2MTQxYmRiNzdlMTAwNGJkZDA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaApAQCAtMzMsNyArMzMsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsK
IHN0cnVjdCBDb29raWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uLmNwcAppbmRleCA2OGI4N2Q4ODdmZTYzNDJmMGY1MWM5NDMxMmVhMGY0YmNlMTJi
ZjZhLi45MzJiNjI2Nzc3ZjBhZjBhYjU0ZjY0N2JkODFiZmY0Nzg0MzljN2I4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC02OSw3ICs2OSw3
IEBAIHZvaWQgTmF2aWdhdGlvbjo6c2V0Q3VycmVudFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUHJvY2Vzc0lkZW50aWZpZXIKICAgICBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lk
ZW50aWZpZXIgPSBwcm9jZXNzSWRlbnRpZmllcjsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uOjphcHBl
bmRSZWRpcmVjdGlvblVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgTmF2aWdhdGlv
bjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV1RGOjpVUkwmIHVybCkKIHsKICAgICBpZiAo
bV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHVy
bCkKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKaW5kZXggOTdlZTk2ZGRkNmU0N2ExOWFjZGMy
ZjI4NDhmN2E3NjI5N2JkZDFmMi4uZWQwMjk0ZDgyODdlY2Q4NjZiYTZlOTNiODFjNTNmMGI0NGI4
NDlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCkBA
IC03Nyw4ICs3Nyw4IEBAIGNsYXNzIE5hdmlnYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmpl
Y3Q6OlR5cGU6Ok5hdmlnYXRpb24+IHsKICAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIGZyb21JdGVtKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tSXRlbS5nZXQoKTsgfQogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVMb2FkVHlwZT4gYmFja0ZvcndhcmRGcmFtZUxvYWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7IH0KIAotICAg
IHZvaWQgYXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVj
dG9yPFdlYkNvcmU6OlVSTD4gdGFrZVJlZGlyZWN0Q2hhaW4oKSB7IHJldHVybiBXVEZNb3ZlKG1f
cmVkaXJlY3RDaGFpbik7IH0KKyAgICB2b2lkIGFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0IFdU
Rjo6VVJMJik7CisgICAgVmVjdG9yPFdURjo6VVJMPiB0YWtlUmVkaXJlY3RDaGFpbigpIHsgcmV0
dXJuIFdURk1vdmUobV9yZWRpcmVjdENoYWluKTsgfQogCiAgICAgdm9pZCBzZXRXYXNVc2VySW5p
dGlhdGVkKGJvb2wgdmFsdWUpIHsgbV93YXNVc2VySW5pdGlhdGVkID0gdmFsdWU7IH0KICAgICBi
b29sIHdhc1VzZXJJbml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJJbml0aWF0ZWQ7
IH0KQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uPiB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1
cnJlbnRSZXF1ZXN0OwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXI+IG1fY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllcjsKLSAgICBWZWN0b3I8V2ViQ29y
ZTo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CisgICAgVmVjdG9yPFdURjo6VVJMPiBtX3JlZGlyZWN0
Q2hhaW47CiAgICAgYm9vbCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBt
X3Nob3VsZEZvcmNlRG93bmxvYWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1JlZGlyZWN0IHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkFjdGlvbi5oCmluZGV4IGVlY2JmZjRhMmEzZWQ5MGY0NDQwOGNjZDZjYWYyOWRlOThkOTUyZDcu
LjMwODcxYzdhMDk1NTRkNWNiOGE3ZWQ0YWI4MmNiYjE0OGNkZTc4NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaApAQCAtMzEsNyAr
MzEsNyBAQAogI2luY2x1ZGUgIkFQSVVzZXJJbml0aWF0ZWRBY3Rpb24uaCIKICNpbmNsdWRlICJO
YXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBBUEkgewogCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24g
ZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+
CiAgICAgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV90YXJnZXRGcmFtZU5hbWU7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQotICAgIGNv
bnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5h
bFVSTC5pc051bGwoKSA/IG1fb3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KKyAgICBj
b25zdCBXVEY6OlVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5hbFVS
TC5pc051bGwoKSA/IG1fb3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KIAogICAgIFdl
YkNvcmU6Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9u
YXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZTsgfQogICAgIFdlYktpdDo6V2ViRXZl
bnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rp
b25EYXRhLm1vZGlmaWVyczsgfQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0
aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0
aW9uPgogICAgIE5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX21haW5GcmFtZU5hdmlnYXRpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBOYXZpZ2F0
aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0
RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5h
bFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9u
PiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdh
dGlvbikKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6
OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdl
dEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RG
OjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJ
bml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBt
YWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICAgICA6IG1fc291cmNlRnJhbWUoc291cmNlRnJhbWUp
CiAgICAgICAgICwgbV90YXJnZXRGcmFtZSh0YXJnZXRGcmFtZSkKICAgICAgICAgLCBtX3Rhcmdl
dEZyYW1lTmFtZSh0YXJnZXRGcmFtZU5hbWUpCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIE5hdmln
YXRpb25BY3Rpb24gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmln
YXRpb25BY3Rpb24+CiAgICAgewogICAgIH0KIAotICAgIE5hdmlnYXRpb25BY3Rpb24oV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBBUEk6OkZyYW1l
SW5mbyogc291cmNlRnJhbWUsIEFQSTo6RnJhbWVJbmZvKiB0YXJnZXRGcmFtZSwgc3RkOjpvcHRp
b25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3Vs
ZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRl
ZEFjdGlvbikKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBB
UEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRh
cmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
V1RGOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVz
ZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKICAgICAgICAgOiBOYXZp
Z2F0aW9uQWN0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZSwg
dGFyZ2V0RnJhbWUsIHRhcmdldEZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxV
UkwsIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aW9uKSwgbnVs
bHB0cikKICAgICB7CiAgICAgfQpAQCAtODksNyArODksNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0
aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0
aW9uPgogICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IG1fdGFyZ2V0RnJhbWVOYW1lOwog
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBXZWJDb3JlOjpV
UkwgbV9vcmlnaW5hbFVSTDsKKyAgICBXVEY6OlVSTCBtX29yaWdpbmFsVVJMOwogCiAgICAgYm9v
bCBtX3Nob3VsZE9wZW5BcHBMaW5rczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggNmFkODMzYTYwOTk1Yjg5OWExYjExYzcx
YWU5OWM0OTU3YWMyNzI5MC4uOGU5NDRiN2RlYzRkOWU1ZGU3NGE3NDFjMmFhZWQ3OTk4MzIwMDM5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25D
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oCkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgewogCiAgICAg
dmlydHVhbCBSZWZQdHI8RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVBy
b3h5JikgeyByZXR1cm4gbnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U3RyaW5nPiBz
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCB1
bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxTdHJpbmc+JiBjaGFsbGVuZ2VTdHJp
bmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFs
IFJlZlB0cjxTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPFN0cmlu
Zz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV1RGOjpVUkwmKSB7IHJldHVybiBudWxscHRyOyB9
CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQpAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIE5h
dmlnYXRpb25DbGllbnQgewogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQogICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJDb3JlOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90
aWZpY2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV1RGOjpVUkwmJiwgVmVjdG9yPFdURjo6
U3RyaW5nPiYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiYpIHsgfTsKICAgICAKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2aXJ0dWFsIGJvb2wgZGlkRmFpbFRvSW5pdGlhbGl6
ZVBsdWdJbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYpIHsgcmV0dXJu
IGZhbHNlOyB9CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgTmF2aWdhdGlvbkNsaWVudCB7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2aXJ0dWFsIHZvaWQgd2ViR0xMb2FkUG9s
aWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6
V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlV2ViR0xMb2Fk
UG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGlj
eTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQorICAgIHZpcnR1YWwgdm9pZCB3ZWJHTExvYWRQb2xp
Y3koV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
Y29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdM
QWxsb3dDcmVhdGlvbik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGlj
eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6VVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBj
b25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xB
bGxvd0NyZWF0aW9uKTsgfQogI2VuZGlmCiAgICAgCiAgICAgdmlydHVhbCBib29sIHdpbGxHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSYsIGJvb2wgaW5QYWdlQ2FjaGUsIE9iamVjdCopIHsgcmV0dXJuIGZh
bHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGJh
MjkwZTA4OTdiOWM3MjdhZjY5NjgyZjI4ZmYzMzQ1MTk1ZDkxNjIuLjgzZGEyOWNjNTJmYzg3MzA5
Y2ZjNjVmNDZkNzAxMTBmMTI5NDY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oCkBAIC0xNDAsNyArMTQwLDcgQEAgY2xhc3MgVUlDbGllbnQgewogICAgIHZp
cnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHJ1bk1vZGFsKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBEYXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmVEYXRhVG9GaWxlSW5E
b3dubG9hZHNGb2xkZXIoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBEYXRhJikgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgcGlubmVkU3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3Jp
cHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCmlu
ZGV4IDc1ODRlNjMxMjEwMmI1YjBjNTAwN2VhOWI4OGNhYzc4M2I5ZTE0NmMuLjQwMjJlZmRjYjk3
YTUwOWY2ZTBlZjg5NWRjYjY3Mzg2NmFhOWY1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNl
IEFQSSB7CiAKLVdlYkNvcmU6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCitX
VEY6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVp
bnQ2NF90IGlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU2NyaXB0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNl
clNjcmlwdC5oCmluZGV4IDE3YTQwOTA5ODk3Zjc0NGI1MDVhMDQ5MmFjNTA4YzQwNTBiMTMxYzUu
LjAzMzMyODIwYjE2MDExNDkxNDAzNjE4YjYzN2YzM2RhODE0YjE4YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaApAQCAtMjMsOCArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQVBJVXNlclNj
cmlwdF9oCi0jZGVmaW5lIEFQSVVzZXJTY3JpcHRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0zNSw3
ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyU2NyaXB0PiwgcHVibGljIElkZW50aWZp
ZWQ8VXNlclNjcmlwdD4gewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJh
dGVVbmlxdWVVUkwoKTsKKyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsK
IAogICAgIHN0YXRpYyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQg
dXNlclNjcmlwdCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1
ICs1NCwzIEBAIGNsYXNzIFVzZXJTY3JpcHQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmpl
Y3Q6OlR5cGU6OlVzZXJTY3JpcHQ+LCBwdWJsaWMgSWRlCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBB
UEkKLQotI2VuZGlmIC8vIEFQSVVzZXJTY3JpcHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKaW5kZXggMWQ1OTViYjE1ODhkOWY3ZDVk
NDhmZDkyMWNkMWRkOTY2YjNmODZhZi4uM2VhNDYxZmUxYTE1NmM2YTlkNTg5NTg0MDM3ZmUzODdj
MjkwN2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0
eWxlU2hlZXQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1XZWJD
b3JlOjpVUkwgVXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKK1dURjo6VVJMIFVz
ZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90
IGlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmgKaW5kZXggZDg1NmY3YTUyZjliNTA0ZTBmYTQyM2VhOWEzYjZlMTU3MTQ1MWVk
ZS4uNzViYjk1YWZlYWM4ZjhmMWU4MjIzMzVmMjkzZTk4Mzg3YjVkNzYzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKQEAgLTIzLDggKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IEFQSVVzZXJTdHlsZVNoZWV0X2gKLSNkZWZpbmUgQVBJVXNlclN0eWxlU2hlZXRfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVu
dFdvcmxkLmgiCkBAIC0zNSw3ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2Vy
U3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclN0
eWxlU2hlZXQ+LCBwdWJsaWMgSWRlbnRpZmllZDxVc2VyU3R5bGVTaGVldD4gewogcHVibGljOgot
ICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKKyAgICBzdGF0aWMg
V1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKIAogICAgIHN0YXRpYyBSZWY8VXNlclN0eWxl
U2hlZXQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIGNsYXNz
IFVzZXJTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpV
c2VyU3R5bGVTaGVldD4sIHB1CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8v
IEFQSVVzZXJTdHlsZVNoZWV0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXggNmU3OTY2MjU1
MmI5ZjY4MDUyMDI5NGViYjlkNzRlYmFiZDgzMjY1MC4uNGEwZmZjNDJlNTk0MWMzMDZiY2ZmYmY4
OGNlMTVhY2M3MDk5YjVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1
ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzRnJvbUZp
bGVVUkxzKGNvbnN0IEFQSTo6QXJyYXkmIGZpbGVVUkxzKQogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEFQSTo6VVJMKiBhcGlVUkwgPSBmaWxlVVJMcy5h
dDxBUEk6OlVSTD4oaSk7CiAgICAgICAgIGlmIChhcGlVUkwpCi0gICAgICAgICAgICBmaWxlUGF0
aHMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYXBpVVJMLT5z
dHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7CisgICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVj
a2VkQXBwZW5kKFVSTChVUkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGZpbGVQYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCmluZGV4IGNjMmRmOWI1NzFhMTE3OGVjZjU3ZjZkZTZmYWEzOGRhZTVh
YzYxMTAuLjJjYjk2YTMyNTBkZDNkMGM0YTdhMTM0YzliOWM4YTY4MjAyZTFhYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZv
aWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdS
ZWYgcGxhaW5UZXh0U3RyaW5nUmVmCiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dp
dGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5n
UmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7Ci0gICAgbG9hZFN0cmluZyhwYWdlUmVmLCBw
bGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBibGFua1VSTCgpLnN0cmluZygpLCB1
c2VyRGF0YVJlZik7CisgICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYs
ICJ0ZXh0L3BsYWluIl9zLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIHVzZXJEYXRhUmVmKTsK
IH0KIAogdm9pZCBXS1BhZ2VMb2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
RGF0YVJlZiB3ZWJBcmNoaXZlRGF0YVJlZikKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVu
dEJhc2UqIHdrQ2xpZW50CiAKICAgICAgICAgICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rp
dml0eSA9IHBhZ2UucHJvY2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0
aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgYm9v
bCBzaG91bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3VyY2VGcmFtZUluZm8tPnJl
cXVlc3QoKS51cmwoKSwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgICAgICAgICBh
dXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShX
VEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxs
cHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgV2ViQ29yZTo6VVJM
KCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRp
b25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJh
bWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1
ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0
aXZpdHkpKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXBpV2luZG93RmVhdHVyZXMgPSBBUEk6
OldpbmRvd0ZlYXR1cmVzOjpjcmVhdGUod2luZG93RmVhdHVyZXMpOwogCkBAIC0xOTQ1LDcgKzE5
NDUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgbV9jbGllbnQucnVu
TW9kYWwodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQ
cm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRh
JiBkYXRhKSBmaW5hbAorICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBBUEk6OkRh
dGEmIGRhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuc2F2
ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yMTg1LDcgKzIxODUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAg
cmV0dXJuIEFQSTo6RGF0YTo6Y3JlYXRlKG1hc3RlcktleS5kYXRhKCksIG1hc3RlcktleS5zaXpl
KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwpIG92ZXJyaWRlCisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmlu
Zz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYgcGFnZSwg
dW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVu
Z2VTdHJpbmcsIGNvbnN0IFVSTCYgdXJsKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAobV9jbGllbnQuY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZykKICAg
ICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNvcHlTaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91
cC5jcHAKaW5kZXggMzkwZTEyMDc0N2VhZTg5Y2ZkOWZlZTY5ZGFjZWNiNmRlMDc5NWVjNS4uMDM3
NzQxMGVhN2U2N2U2YjA5MTBjZmJjMDVhOWIzMmY1OGNiNDNlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lk
IFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
LCBXS1N0cmluZ1JlZiBzb3VyYwogICAgIGF1dG8gd2hpdGVsaXN0ID0gdG9JbXBsKHdoaXRlbGlz
dGVkVVJMUGF0dGVybnMpOwogICAgIGF1dG8gYmxhY2tsaXN0ID0gdG9JbXBsKGJsYWNrbGlzdGVk
VVJMUGF0dGVybnMpOwogCi0gICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNo
ZWV0ID0gQVBJOjpVc2VyU3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0
IHsgc291cmNlLCAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFua1VSTCgp
IDogV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlz
dCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNr
bGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRv
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OlVzZXJT
dHlsZVVzZXJMZXZlbCB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwor
ICAgIFJlZjxBUEk6OlVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCA9IEFQSTo6VXNlclN0
eWxlU2hlZXQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgKGJhc2VV
UkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVS
TFN0cmluZykpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0
b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBW
ZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFt
ZXMpLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxk
Ojpub3JtYWxXb3JsZCgpKTsKIAogICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVu
dENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldC5nZXQoKSk7CiB9
CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tTdHJpbmdSZWYgc291cmNlUmVmCiAgICAgYXV0byB3aGl0
ZWxpc3QgPSB0b0ltcGwod2hpdGVsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgYXV0byBibGFja2xp
c3QgPSB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgCi0gICAgYXV0byB1cmwg
PSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIGF1dG8gdXJsID0gYmFz
ZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiAgVVJMKFVSTCgpLCBiYXNl
VVJMU3RyaW5nKTsKICAgICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2VyU2NyaXB0ID0gQVBJOjpV
c2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwg
V1RGTW92ZSh1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBW
ZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkg
OiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRp
bWUpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIEFQSTo6
VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgdG9JbXBsKHBhZ2VHcm91cFJl
ZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQodXNlclNjcmlwdC5nZXQo
KSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRl
eCA2N2E1NDIzZWE1ZWQ1N2ExZThiZjlkYWQ4MzIwZTA0ZGJhZjczMWI0Li4zODVkY2JjZDg2Mzc2
ODYyNjcyZjZlODQ3MDRkNTdkZWY3ODI1YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQxLDggKzQx
LDggQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURhdGFTdG9yZUdldFR5cGVJ
RCgpCiB7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlRm9y
RGVidWdNb2RlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgc3RvcmUt
PnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTA3LDcgKzEw
Nyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzdG9yZS0+c2V0TGFzdFNlZW4oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4
dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBzdG9yZS0+c2V0TGFzdFNlZW4oVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0xMjEsMTEgKzEyMSwxMSBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YQogICAgIH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPnNldFBy
ZXZhbGVudFJlc291cmNlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAg
ICAgIHN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UK
LSAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2Uo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQp
OwogICAgICAgICB9KTsKIH0KQEAgLTEzOSwxMSArMTM5LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYKICAgICB9CiAKICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5zZXRWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAg
ICAgc3RvcmUtPnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVs
c2UKLSAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRl
eHQpOwogICAgICAgICB9KTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZUlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPmlzUHJldmFsZW50
UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJj
ZSkgeworICAgIHN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUHJldmFs
ZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNQcmV2YWxlbnRSZXNvdXJjZSwgY29u
dGV4dCk7CiAgICAgfSk7CiB9CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzdG9yZS0+aXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UpIHsKKyAgICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2td
KGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNWZXJ5
UHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTk1LDcgKzE5NSw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVz
b3VyY2VVbmRlcihXS1dlYnNpdGVEYXRhU3RvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ci0gICAgc3RvcmUtPmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YnJlc291cmNlSG9zdCktPnN0cmluZygp
KSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1
YnJlc291cmNlVW5kZXIpIHsKKyAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVu
ZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkp
LCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewog
ICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQp
OwogICAgIH0pOwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
SXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihXS1dlYnNpdGVEYXRhU3RvcmVS
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJG
cmFtZVVuZGVyKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3Vi
RnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktp
dDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShi
b29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgeworICAgIHN0b3JlLT5pc1JlZ2lzdGVy
ZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJGcmFtZUhvc3Qp
LT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3Ry
aW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVu
ZGVyKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlciwgY29u
dGV4dCk7CiAgICAgfSk7CiB9CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vic2l0ZURhdGFT
dG9yZVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRB
c1JlZGlyZWN0aW5nVG8oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgeworICAgIHN0
b3JlLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29s
IGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjM1LDExICsy
MzUsMTEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNlcklu
dGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZgogICAgIH0KIAogICAgIGlmICh2YWx1ZSkK
LSAgICAgICAgc3RvcmUtPmxvZ1VzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0
aW9uSGFuZGxlcl0geworICAgICAgICBzdG9yZS0+bG9nVXNlckludGVyYWN0aW9uKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25I
YW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAg
ICAgfSk7CiAgICAgZWxzZQotICAgICAgICBzdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24oV2Vi
Q29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyVXNl
ckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5o
YXNIYWRVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFk
VXNlckludGVyYWN0aW9uKSB7CisgICAgc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFj
a10oYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFk
VXNlckludGVyYWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTI2Myw3ICsyNjMsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhlcmVkKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUpOworICAgIHN0b3Jl
LT5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgdmFsdWUpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dy
YW5kZmF0aGVyZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3Jh
bmRmYXRoZXJlZEZ1bmN0aW9uIGNhbGxiYWNrKQpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aGFz
SGFkVXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRm
YXRoZXJlZCkgeworICAgIHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aXNHcmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29u
dGV4dCk7CiAgICAgfSk7CiB9CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURh
dGFTdG8KICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3Jl
LT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9z
dCktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpCkBA
IC0yOTQsNyArMjk0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGEKICAgICBpZiAoIXN0b3Jl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1w
bCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSk7
CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmlu
Z1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQpAQCAtMzAzLDcgKzMwMyw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRU
byktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RU
byhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RG
cm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
RnJvbShXS1dlYnNpdGVEYXRhUwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV2ViQ29yZTo6
VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJD
b3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJv
bSktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RG
cm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkpOwogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwg
V0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tX
ZWJzaXRlRGF0YVN0b3JlUgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5n
KCkpKTsKKyAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9z
dFJlZGlyZWN0ZWRGcm9tKQpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFT
dG9yCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHN0b3JlLT5z
ZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKKyAg
ICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RS
ZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggYTgwNmJk
ZWMyZTJkNDgyM2IyZjFlOTJlZDEzM2U3MTM2NWRlZjY2NC4uYzg1ODAzM2FlNTkxYjNhMjIzOWIw
MWYxYjliMGYzOWZkZmJiNDBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMzAsMTAgKzMwLDEwIEBACiAK
ICNpbXBvcnQgIkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29v
a2llLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4K
IAogc3RhdGljIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb3JlQ29va2llc1RvTlNDb29raWVz
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb3JlQ29va2llcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCmluZGV4IDljZjY2
ODFhYWIzOTFjMzViNjM3OTA3YjExMTA4NmY4Mjc5NzZkNWEuLjhlMGM3MjEyODY4MjgyMTE5ZjJm
ODlmMjk1MDY1YWY0ZDJmZWEwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQpAQCAtOTUsNyArOTUsNyBAQCAtIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1Vz
ZXJTY3JpcHRJbgogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBX
ZWJDb3JlOjpVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hp
dGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFs
bEZyYW1lcyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQ
STo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJD
b3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwp
LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0
b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9w
RnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29y
bGQtPl91c2VyQ29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQppbmRleCAzMWYyYTkzNmQ5YWY5MWY5ZTBiZmI5NjZlYTBiZmFkZmM5OTg5MDVm
Li4wN2FlNzg0Yjc1MzNjMjNmNmNkNjRhMDU2NTk0NGFjNTViNDM0NjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQpAQCAtNDQsOCArNDQsOCBAQAogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9y
ZUludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkxQYXJz
ZXIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIu
aD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
NDc4LDcgKzQ3OCw3IEBAIC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2No
ZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAgICAgaWYgKFtXS1dlYlZp
ZXcgaGFuZGxlc1VSTFNjaGVtZTp1cmxTY2hlbWVdKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBhIFVSTCBzY2hl
bWUgdGhhdCBXS1dlYlZpZXcgaGFuZGxlcyBuYXRpdmVseSIsIHVybFNjaGVtZV07CiAKLSAgICBh
dXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxp
emVTY2hlbWUodXJsU2NoZW1lKTsKKyAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdURjo6VVJM
UGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOwogICAgIGlmICghY2Fu
b25pY2FsU2NoZW1lKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1l
bnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBub3QgYSB2YWxpZCBVUkwgc2NoZW1lIiwgdXJs
U2NoZW1lXTsKIApAQCAtNDkwLDcgKzQ5MCw3IEBAIC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxl
cjooaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAK
IC0gKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6
KE5TU3RyaW5nICopdXJsU2NoZW1lCiB7Ci0gICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJD
b3JlOjpVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAg
YXV0byBjYW5vbmljYWxTY2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVT
Y2hlbWUodXJsU2NoZW1lKTsKICAgICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggYzY0OWZmNmNiY2VhNWExZGE0NWYzNjBiZTUz
OWM3ZGJjNDkyODMyNi4uNTA2ZmI1YmY2NzRmYzNhZDk2ZWUzYTAyOWI3YWNkM2NmOGEzNDA4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCkBAIC0zOCw5ICszOCw5IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9u
LmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYktpdC9TZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
QGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
CmluZGV4IDNlZGQ4NTMxYTA5OGIwNGYyNDM3ZDdkZTViODU0MGYzZjYwZWNmNzIuLmRmZWQwYTli
ZTE3NTM3MjJiNjU0MDc3MWM4N2IzNjVhYjZkZjA5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
CkBAIC01NCw5ICs1NCw5IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVy
ICopYURlY29kZXIKICAgICAgICAgV1RGOjpTdHJpbmcobmFtZSksCiAgICAgICAgIFdURjo6U3Ry
aW5nKHNob3J0TmFtZSksCiAgICAgICAgIFdURjo6U3RyaW5nKGRlc2NyaXB0aW9uKSwKLSAgICAg
ICAgV2ViQ29yZTo6VVJMKHNjb3BlVVJMKSwKKyAgICAgICAgVVJMKHNjb3BlVVJMKSwKICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheT4oZGlz
cGxheSksCi0gICAgICAgIFdlYkNvcmU6OlVSTChzdGFydFVSTCkKKyAgICAgICAgVVJMKHN0YXJ0
VVJMKQogICAgIH07CiAKICAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6
QXBwbGljYXRpb25NYW5pZmVzdD4oc2VsZiwgV1RGTW92ZShjb3JlQXBwbGljYXRpb25NYW5pZmVz
dCkpOwpAQCAtODMsNyArODMsNyBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAq
KWFDb2RlcgogCiArIChfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopYXBwbGljYXRpb25NYW5pZmVz
dEZyb21KU09OOihOU1N0cmluZyAqKWpzb24gbWFuaWZlc3RVUkw6KE5TVVJMICopbWFuaWZlc3RV
UkwgZG9jdW1lbnRVUkw6KE5TVVJMICopZG9jdW1lbnRVUkwKIHsKLSAgICBhdXRvIG1hbmlmZXN0
ID0gV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2UoV1RGOjpTdHJpbmco
anNvbiksIFdlYkNvcmU6OlVSTChtYW5pZmVzdFVSTCksIFdlYkNvcmU6OlVSTChkb2N1bWVudFVS
TCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFy
c2VyOjpwYXJzZShXVEY6OlN0cmluZyhqc29uKSwgVVJMKG1hbmlmZXN0VVJMKSwgVVJMKGRvY3Vt
ZW50VVJMKSk7CiAgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0Ojpj
cmVhdGUobWFuaWZlc3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IGU2ZjA5MGZmNWQ0MTM3YzY1
ODljZWU4ZmNhODM1MDEzYjhhNmRlM2QuLjYxNDUyMzJhMGQ4ZTdmMWE4ZDcyZGFkNzEzNzdiYTVj
NzRiYjg0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTcwLDcgKzcwLDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09M
KWZvck1haW4KICAgICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVy
YXRlVW5pcXVlVVJMIGJlbG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFz
IGRvbmUgdGhpcy4uLiB3aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJ
bml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBl
cjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdU
Rjo6U3RyaW5nKHNvdXJjZSksIHsgV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJM
IF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxl
Z2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNv
bnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1
Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxl
U2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpTdHJpbmcoW2Jhc2VV
UkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9TdHJpbmdWZWN0b3Io
bGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBm
b3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3Jl
OjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2Vy
Q29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3Bw
CmluZGV4IGE3MjlmYWI5YTc5ZTFkY2QxNTRmNDMwOTFkMTdmNGVkYzgwZGYzYjQuLjY3NGE1ZGIw
NDNjOGE2MGYzNjIwYWE3YmEwMThjMWY5ODVlZGY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogLy8gRm9yIG1ldGhvZHMgdGhhdCBhcmUgbWVh
bnQgdG8gc3VwcG9ydCBBUEkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgLSBzaG91bGQgbm90IGJlIGNh
bGxlZCBpbnRlcm5hbGx5CiAjZGVmaW5lIEFTU0VSVF9OT1RfU1lOQ19USFJFQUQoKSBBU1NFUlQo
IW1fc3luY1RocmVhZFJ1bm5pbmcgfHwgIUlTX0lDT05fU1lOQ19USFJFQUQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdl
ci5jcHAKaW5kZXggZGU4MmZkYWI1YzdmOTUzZmE1YmNhZjQwN2Q5YzY2Y2IxODUyMjdlMy4uN2E5
NDI5MTlkZGY4YzRmMmEzYjE2ZGE3NjcwMTRiMmMyYzE1NGZhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAK
QEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2ll
cyhXZWJLaXRDb29raWVNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBnY2hhcgogCiAgICAgLy8gQ29v
a2llcyBhcmUgcmVhZC93cml0dGVuIGZyb20vdG8gdGhlIHNhbWUgU1FMaXRlIGRhdGFiYXNlIG9u
IGRpc2sgcmVnYXJkbGVzcwogICAgIC8vIG9mIHRoZSBwcm9jZXNzIHdlIGFjY2VzcyB0aGVtIGZy
b20sIHNvIGp1c3QgdXNlIHRoZSBmaXJzdCBwcm9jZXNzIHBvb2wuCi0gICAgcHJvY2Vzc1Bvb2xz
WzBdLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0Q29va2llcyhzZXNz
aW9uSUQsIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkp
KSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYg
Y29va2llcywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIHByb2Nlc3NQb29sc1sw
XS0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZXMoc2Vzc2lv
bklELCBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSksIFt0YXNrID0gV1RGTW92ZSh0
YXNrKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJy
b3I6Ok5vbmUpIHsKICAgICAgICAgICAgIC8vIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGluIGNhc2Vz
IHdoZXJlIHRoZSB3ZWIgcHJvY2VzcyBpcyBub3QgYXZhaWxhYmxlLAogICAgICAgICAgICAgLy8g
Y29uc2lkZXIgdGhlIG9wZXJhdGlvbiAiY2FuY2VsbGVkIiBmcm9tIHRoZSBwb2ludCBvZiB2aWV3
IG9mIHRoZSBjbGllbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCBjZDAyNmU0Zjhl
OTFhN2FiZmIxOWJjYzMwYjBhMTIzNThmMjdkZTUwLi4zN2U2Y2NhMGNlYmNlOTE0NzMwZTNjNmQ0
MjVjNWZlZjc3ZmI0ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTI3LDggKzI3
LDggQEAKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2Rp
bmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RG
R1R5cGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAzYmNjMjEyMzY3ODU5MzZhNzcxMjk3ZTZl
Mzk4ZDI4MGRmYjZiODAyLi44ODMzNmIzZGM0Njg0OTg4YWM3N2QxNjlkYTZhNTk1ZTYxZTU5ZTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1
cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0
U2VjdXJpdHlPcmlnaW4uaCIKIAogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0
ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogLyoqCkBAIC0xMTAsNyArMTEwLDcgQEAgV2Vi
S2l0U2VjdXJpdHlPcmlnaW4qIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoY29u
c3QgZ2NoYXIqIHVyaSkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCh1cmksIG51bGxwdHIp
OwogCi0gICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZy
b21VVEY4KHVyaSkpKSk7CisgICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4
KHVyaSkpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDAyNzU0MzEyN2FlZTFiMDg2ZDAzNjE1MWQx
MThjZmM3OTY2NmE0MmUuLjk2ZjllZTExODJhMjQyM2I5MTYzZGMzYWYwODIxNmIzZTkxODliNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNs
aWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpV
SUNsaWVudCB7CiAgICAgdm9pZCBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVm
PEFQSTo6RnJhbWVJbmZvPiYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVzb3VyY2VSZXF1ZXN0LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVz
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbAogICAgIHsKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdl
LnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNl
ckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICBXZWJLaXROYXZpZ2F0aW9uQWN0aW9u
IG5hdmlnYXRpb25BY3Rpb24oQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uRGF0YSksIGZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxs
b3B0LCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFdlYkNvcmU6OlVSTCB7IH0sIGZhbHNlLCBX
VEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpKTsKKyAgICAgICAgV2ViS2l0TmF2aWdhdGlv
bkFjdGlvbiBuYXZpZ2F0aW9uQWN0aW9uKEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0
ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBVUkwgeyB9LCBmYWxzZSwgV1RG
TW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKG1fd2ViVmlldywgd2luZG93RmVhdHVyZXMsICZu
YXZpZ2F0aW9uQWN0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4IDkx
Njc0YWMyODhmN2U3OGY0NTFlOTU5M2QzYTU1NDhmZjU5ODg4OWYuLjA3YjU4YWQzMjNkNTQ1OGM5
MDM2NjNkYjgzMGU5NGJlN2U1ZDg4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0yNiwx
MCArMjYsMTAgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RG
R1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDBmYTRhMThm
ODljOGM1MWE0NTQwNzc4ZjVhZTI3YmVhODdkN2I1ZjEuLjIzNDg1OTY2M2QxZjJjNzgwODk4ZjA2
MGY0MDE0OTg4ZTc4NmI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC02NiwxMiArNjYsMTIgQEAKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJp
dmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01FeGNlcHRp
b25IYW5kbGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z2xpYi9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KQEAgLTI2NDcsNyArMjY0Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRf
cGxhaW5fdGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogcGxhaW5UCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdf
cmV0dXJuX2lmX2ZhaWwocGxhaW5UZXh0KTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9hZERh
dGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwbGFpblRleHQpLCBwbGFpblRl
eHQgPyBzdHJsZW4ocGxhaW5UZXh0KSA6IDAgfSwgInRleHQvcGxhaW4iX3MsICJVVEYtOCJfcywg
YmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YSh7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBsYWluVGV4dCksIHBsYWluVGV4dCA/IHN0
cmxlbihwbGFpblRleHQpIDogMCB9LCAidGV4dC9wbGFpbiJfcywgIlVURi04Il9zLCBXVEY6OmJs
YW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBiYmQ1MTZlNzI5NjIzMzdiZGRmZWNkMGM1NmQzOTgx
NDgzM2Q4YTc0Li5iN2U2MzMwZWFlYjJlMjAyMmU2MjNmM2E2OGVjMWJjMTdhYTM3NzVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0yOCw3ICsy
OCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA3ODBhMTVlOTZkM2MzNjI0NmJiNWQ1YTQx
YzcxMjdiMmFiZGQxMzFjLi4yZjA2NjA4NmQ5OTJmYzMwZmFmNmM3OTQwYWNlZjJmZGZjYzg1M2Nl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDUsMTEgKzEwNSwxMSBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYXRpbmdVUkxTdHJpbgogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmF0aW5n
OwogCi0gICAgV2ViQ29yZTo6VVJMIG9yaWdpbmF0aW5nVVJMKFdlYkNvcmU6OlVSTCgpLCBvcmln
aW5hdGluZ1VSTFN0cmluZyk7CisgICAgVVJMIG9yaWdpbmF0aW5nVVJMKFVSTCgpLCBvcmlnaW5h
dGluZ1VSTFN0cmluZyk7CiAKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBsaW5rSWNvblVSTHM7
CisgICAgVmVjdG9yPFVSTD4gbGlua0ljb25VUkxzOwogICAgIGZvciAoY29uc3QgYXV0byYgbGlu
a0ljb25VUkxTdHJpbmcgOiBsaW5rSWNvblVSTFN0cmluZ3MpCi0gICAgICAgIGxpbmtJY29uVVJM
cy5hcHBlbmQoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBsaW5rSWNvblVSTFN0cmluZykp
OworICAgICAgICBsaW5rSWNvblVSTHMuYXBwZW5kKFVSTChVUkwoKSwgbGlua0ljb25VUkxTdHJp
bmcpKTsKIAogICAgIHBsYXRmb3JtU2hvd1BheW1lbnRVSShvcmlnaW5hdGluZ1VSTCwgbGlua0lj
b25VUkxzLCBwYXltZW50UmVxdWVzdCwgW3RoaXNdKGJvb2wgcmVzdWx0KSB7CiAgICAgICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmF0aW5nKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigp
CiAgICAgZGlkUmVhY2hGaW5hbFN0YXRlKCk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYg
dXJsKQogewogICAgIEFTU0VSVChtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlID09IE1lcmNoYW50
VmFsaWRhdGlvblN0YXRlOjpJZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXgg
MDg1MDE5ZGEwNmUzMmZiMGY0ZWM1ODk5MTUzNTQ4NmZlYmE3ZjhkYS4uZWRlN2E3MGNmMjEzNTk0
ODgwYTY4ZjUwZGE3Y2Y5Y2YxODU0NjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBA
IC00Myw3ICs0Myw2IEBAIGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKIGNs
YXNzIFBheW1lbnRNZXJjaGFudFNlc3Npb247CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3Mg
VVJMOwogfQogCiBPQkpDX0NMQVNTIE5TT2JqZWN0OwpAQCAtNjEsNyArNjAsNyBAQCBjbGFzcyBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBDYW5NYWtlVwogICAgIH5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwogCiAg
ICAgdm9pZCBkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwotICAgIHZvaWQgdmFsaWRhdGVNZXJj
aGFudChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29u
c3QgVVJMJik7CiAgICAgdm9pZCBkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFdlYkNvcmU6OlBh
eW1lbnQmKTsKICAgICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpOwogICAgIHZv
aWQgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0
Jik7CkBAIC05OSw3ICs5OCw3IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXCiAgICAgYm9vbCBw
bGF0Zm9ybUNhbk1ha2VQYXltZW50cygpOwogICAgIHZvaWQgcGxhdGZvcm1DYW5NYWtlUGF5bWVu
dHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJp
bmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIHBsYXRm
b3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0
IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNv
bnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgV1RGOjpGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9u
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAg
ICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4IDE1OWFjMTkyNDYyYjQ5
ZjdmOTQ2ZmM0NmE2ZTk4ZjkyNmJiY2I5NmMuLjRlMGYyMmI3YWRmNTEwNDE5ZmU2MGFjOWJhNGVh
NTQ4OWRiYWNhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNv
Y29hLmgKQEAgLTMxLDE1ICszMSwxMSBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0
U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgVVJMOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OwogCi1SZXRhaW5QdHI8UEtQYXltZW50
UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNv
blVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CitS
ZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94
eSYsIGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNv
blVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2Ev
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KaW5k
ZXggYTRlZWNjYjA5MWJmMGI0MGNmYjBjMDUzMjgyMjU2OTMxYjA3MzRjNS4uZGY1YjlkYTdkZGRi
ZmI1NjVhNThhYmRlMjllZDMzMzc0MWI1M2ZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbXBvcnQgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykK
IFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQpAQCAtNTExLDcg
KzUxMSw3IEBAIHN0YXRpYyBQS1BheW1lbnRSZXF1ZXN0QVBJVHlwZSB0b0FQSVR5cGUoV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6CiB9CiAjZW5kaWYKIAotUmV0YWluUHRy
PFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBh
Z2VQcm94eSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQorUmV0YWluUHRyPFBLUGF5bWVudFJl
cXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29u
c3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywg
Y29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1
ZXN0KQogewogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0
SW5zdGFuY2UoKSBpbml0XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlP
Uy5tbQppbmRleCBiMTBkOTJlMzhiMGMxNzUzMzAwMjgyZWI3ZDU4MGUyYzIzNmNmYTg5Li4xN2I3
ZjJmODlhMThiNzgwNmEyZTk2YzY0ZTA4ZGIxZmYyODZjNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5SU9TLm1tCkBAIC00MSw3ICs0MSw3IEBAIFNPRlRfTElOS19DTEFT
UyhQYXNzS2l0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJl
c2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlDbGllbnQoKS5wcmVzZW50
aW5nVmlld0NvbnRyb2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWFjLm1tCmluZGV4IDc0MTU5MzgzZjE5NTQyN2RiOTc2MGE4YzAxZWM3MDY3YTY3YzZmOTUuLjI1
MTQ5NTBlNWQwMjQ2MDNlMDU3MWFiYjAzNmY3OTEyOTMwZDE2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTQxLDcgKzQxLDcgQEAgU09GVF9MSU5LX0NP
TlNUQU5UKFBhc3NLaXQsIFBLRXh0ZW5zaW9uUGF5bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lv
blBvaW50TmFtZSwKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9y
aWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxTdHJp
bmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVz
dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBV
UkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdz
LCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwg
V1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghUGFzc0tpdExpYnJhcnkoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGY2M2JiMmJhZmViOThkZTQzNWVmYjVmNWNkNTNk
ZTQwYzQ3NmNiZTEuLmExMjI4NzRjMWYwNTA1MjhmNjdiNDUxM2FhN2RiNDI0OWYxNmEwMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC00NCwxMCArNDQsMTAgQEAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
SU1FVHlwZVJlZ2lzdHJ5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCkBAIC02NTksNyArNjU5LDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoY29uc3Qg
U3RyaW5nJiBoYW5kbGUsIGNvbnN0IFMKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3Bh
Z2VMb2FkU3RyYXRlZ3knIGlzIGludmFsaWQuIik7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQg
PSBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9w
dGlvbmFsUGFnZUxvYWRUaW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKLSAgICBw
YWdlLT5sb2FkUmVxdWVzdChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHVybCkpOworICAg
IHBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdXJsKSk7CiAgICAgd2FpdEZvck5hdmlnYXRp
b25Ub0NvbXBsZXRlT25QYWdlKCpwYWdlLCBwYWdlTG9hZFN0cmF0ZWd5LnZhbHVlKCksIHBhZ2VM
b2FkVGltZW91dCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCkBAIC0xMjg3LDcgKzEyODcsNyBA
QCBzdGF0aWMgU3RyaW5nIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQoU3RyaW5nIGRv
bWFpbikKICAgICBpZiAoZG9tYWluWzBdICE9ICcuJykgewogICAgICAgICAvLyBSRkMgMjk2NTog
SWYgYW4gZXhwbGljaXRseSBzcGVjaWZpZWQgdmFsdWUgZG9lcyBub3Qgc3RhcnQgd2l0aCBhIGRv
dCwgdGhlIHVzZXIgYWdlbnQgc3VwcGxpZXMgYSBsZWFkaW5nIGRvdC4KICAgICAgICAgLy8gQXNz
dW1lIHRoYXQgYW55IGhvc3QgdGhhdCBlbmRzIHdpdGggYSBkaWdpdCBpcyB0cnlpbmcgdG8gYmUg
YW4gSVAgYWRkcmVzcy4KLSAgICAgICAgaWYgKCFXZWJDb3JlOjpVUkw6Omhvc3RJc0lQQWRkcmVz
cyhkb21haW4pKQorICAgICAgICBpZiAoIVVSTDo6aG9zdElzSVBBZGRyZXNzKGRvbWFpbikpCiAg
ICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygnLicsIGRvbWFpbik7CiAgICAgfQogICAgIApA
QCAtMTMwMCw3ICsxMzAwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xl
Q29va2llKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLAogICAgIGlmICghcGFn
ZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91
bmQpOwogCi0gICAgV2ViQ29yZTo6VVJMIGFjdGl2ZVVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3Jl
OjpVUkwoKSwgcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKTsKKyAgICBVUkwgYWN0
aXZlVVJMID0gVVJMKFVSTCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOwog
ICAgIEFTU0VSVChhY3RpdmVVUkwuaXNWYWxpZCgpKTsKIAogICAgIFdlYkNvcmU6OkNvb2tpZSBj
b29raWU7CkBAIC0xMzU3LDcgKzEzNTcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpk
ZWxldGVBbGxDb29raWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaQogICAg
IGlmICghcGFnZSkKICAgICAgICAgU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5k
b3dOb3RGb3VuZCk7CiAKLSAgICBXZWJDb3JlOjpVUkwgYWN0aXZlVVJMID0gV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOworICAg
IFVSTCBhY3RpdmVVUkwgPSBVUkwoVVJMKCksIHBhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVV
UkwoKSk7CiAgICAgQVNTRVJUKGFjdGl2ZVVSTC5pc1ZhbGlkKCkpOwogCiAgICAgV2ViQ29va2ll
TWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDZmZjFiNDc4MzIzOTJiZDAzMjU2MjFlNTA1ZmIw
NGE3NGY0NTY1ZmYuLjFkNmU3MTg4NDViMTQ4NWUwYjI2NjZiOWFmMWVmOTMxNjAyMDQwMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBA
IC0yMTMsNyArMjEzLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKFdlYlByb2Nl
c3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICAgICBpZiAoZG93bmxvYWRQ
cm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiB3ZWJQ
YWdlID0gZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKSkgewogICAgICAgICAgICAgTlNV
UkwgKmRlc3RpbmF0aW9uVVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDooTlNTdHJpbmcgKilk
b3dubG9hZFByb3h5LmRlc3RpbmF0aW9uRmlsZW5hbWUoKV07Ci0gICAgICAgICAgICB3ZWJQYWdl
LT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigpLT5maW5pc2goV2ViQ29yZTo6VVJMKGRlc3RpbmF0
aW9uVVJMKSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigp
LT5maW5pc2goVVJMKGRlc3RpbmF0aW9uVVJMKSk7CiAgICAgICAgIH0KICAgICAgICAgcmVsZWFz
ZUFjdGl2aXR5VG9rZW5JZk5lY2Vzc2FyeShkb3dubG9hZFByb3h5KTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApp
bmRleCA0NTk4NWY1MGU0YmZlNzAyNWFjZGE4ZjYyZTU1ZDk4Y2FkMzQ1YmJjLi4wNTU2ZWNjYTMy
NDgwZTlkMjY3NDVhZTdiMTk0ZDBlNWM5ZTZjYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTE2LDcgKzExNiw3IEBAIGNsYXNz
IE5hdmlnYXRpb25TdGF0ZSBmaW5hbCA6IHByaXZhdGUgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIg
ewogCiAgICAgICAgIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdl
UHJveHkmKSBvdmVycmlkZTsKIAotICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXpl
SW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
V2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2ln
bmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtl
eVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBj
b25zdCBVUkwmKSBvdmVycmlkZTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lk
IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKQEAgLTEy
NCw4ICsxMjQsOCBAQCBjbGFzcyBOYXZpZ2F0aW9uU3RhdGUgZmluYWwgOiBwcml2YXRlIFBhZ2VM
b2FkU3RhdGU6Ok9ic2VydmVyIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAg
ICB2b2lkIHdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYpIGNv
bnN0IGZpbmFsOwotICAgICAgICB2b2lkIHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCB3ZWJHTExv
YWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9p
ZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmlu
YWw7CiAgICAgICAgIGJvb2wgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2VQcm94
eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBib29sIGluUGFnZUNhY2hlLCBBUEk6Ok9iamVj
dCopIGZpbmFsOwogICAgICAgICBib29sIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnSW4oV2ViUGFn
ZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7CiAgICAgICAgIGJvb2wgZGlkQmxvY2tJ
bnNlY3VyZVBsdWdpblZlcnNpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmlu
YWw7CkBAIC0xMzMsNyArMTMzLDcgQEAgY2xhc3MgTmF2aWdhdGlvblN0YXRlIGZpbmFsIDogcHJp
dmF0ZSBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CiAgICAgICAgIGJvb2wgZGlkQ2hhbmdlQmFj
a0ZvcndhcmRMaXN0KFdlYlBhZ2VQcm94eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBjb25z
dCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYpIGZpbmFsOwogI2VuZGlmCiAK
LSAgICAgICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5Jiwg
V2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYsIFZlY3RvcjxTdHJpbmc+JiYpIGZpbmFs
OworICAgICAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkm
LCBVUkwmJiwgVmVjdG9yPFN0cmluZz4mJiwgVmVjdG9yPFN0cmluZz4mJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBS
ZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5PiYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpO
YXZpZ2F0aW9uUmVzcG9uc2U+JiYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBhNWIwODdjZmYzMDhiZjE0
MGFmODViZGFkZDM5ZmJmNjk5MTA3OWE3Li40MjA3NzM5YWIwZTBmMDRiNTI3Y2M5Zjc3ZDViODQw
MTAxM2Y1OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCkBAIC03MCw5ICs3MCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdl
bmVyYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjaWYgSEFWRShBUFBfTElOS1MpCiAjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CkBAIC0zOTIsNyArMzkyLDcg
QEAgaW5saW5lIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB0b1dlYkNvcmVXZWJHTExvYWRQb2xp
Y3koX1dLV2ViR0xMb2FkUG9saWN5IHBvbGkKICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxv
d0NyZWF0aW9uOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0Cit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOwpAQCAtNDA5LDcgKzQwOSw3IEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3ko
V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQ
YWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAor
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQ
b2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QK
IHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3UmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdlYlBhZ2VQCiAgICAgfQogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSYs
IFdlYkNvcmU6OlVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmllcnMsIFZl
Y3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucykKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5Jiwg
VVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGxpc3RJZGVudGlmaWVycywgVmVjdG9yPFN0cmlu
Zz4mJiBub3RpZmljYXRpb25zKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdVUkxDb250ZW50UnVsZUxpc3RJZGVudGlmaWVy
c05vdGlmaWNhdGlvbnMpCiAgICAgICAgIHJldHVybjsKQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdChXZWJQYWdlUHJveHkmCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYkNvcmU6OlVSTCB1cmwoV2ViQ29yZTo6VVJMKCksIHVybFN0cmlu
Zyk7CisgICAgVVJMIHVybChVUkwoKSwgdXJsU3RyaW5nKTsKIAogICAgIFtzdGF0aWNfY2FzdDxp
ZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlKSBfd2Vi
VmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dFRvVVJMOnVybCBkZWxheTpkZWxheV07CiB9CkBAIC05NzIsNyArOTcyLDcgQEAgUmVmUHRyPEFQ
STo6RGF0YT4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0
ZXJLZXkoV2ViUGFnZVAKICAgICByZXR1cm4gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhkYXRhKTsKIH0KIAotUmVmUHRyPEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJv
eHkmIHBhZ2UsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5n
PiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1JlZlB0cjxBUEk6
OlN0cmluZz4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXpl
SW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgLy8gV2ViS2l0VGVzdFJ1bm5lciB1c2VzIEMgQVBJLiBIZW5jZSwg
bm8gU1BJIGlzIHByb3ZpZGVkIHRvIG92ZXJyaWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24uCiAg
ICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwg
dXJsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJv
d3NpbmdSZXN1bHRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVC
cm93c2luZ1Jlc3VsdENvY29hLm1tCmluZGV4IDA4N2FjNjU0OTMzM2ExNDBhZjUzOWVhNDA0Yjk2
ZmExZWVjZjM0OTQuLjA0ZGZkNWQ0NGQ2ZTQ4MzExZGRjMmYyZmU3NDE2OWY0NDhjNWIzMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3Vs
dENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2lu
Z1Jlc3VsdENvY29hLm1tCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
I2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLVNhZmVCcm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5n
UmVzdWx0KFdlYkNvcmU6OlVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0
KQorU2FmZUJyb3dzaW5nUmVzdWx0OjpTYWZlQnJvd3NpbmdSZXN1bHQoVVJMJiYgdXJsLCBTU0JT
ZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAg
ICAgLCBtX3Byb3ZpZGVyKFtyZXN1bHQgcHJvdmlkZXJdKQogICAgICwgbV9pc1BoaXNoaW5nKFty
ZXN1bHQgaXNQaGlzaGluZ10pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCBhN2RhZDQ4
MTUyNjFhOThjNmMxMWQzNDQ4ZjNkYjIxODEzMWE2MmRhLi45OGJkYzI3OTY0YTU2OWE3Nzk4YzE5
YzdiNWFhYzJjNzRlNmQ1OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTEwNSw3
ICsxMDUsNyBAQCAtICh2b2lkKXNldFByb2dyZXNzOihmbG9hdClwcm9ncmVzcwogICAgICAgICBb
X2l0ZW0gc2V0UHJldmlld0l0ZW1Qcm92aWRlclByb2dyZXNzOkAocHJvZ3Jlc3MpXTsKIH0KIAot
LSAodm9pZClmaW5pc2g6KFdlYkNvcmU6OlVSTCl1cmwKKy0gKHZvaWQpZmluaXNoOihVUkwpdXJs
CiB7CiAgICAgaWYgKHNlbGYuY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHNlbGYuY29tcGxl
dGlvbkhhbmRsZXIoKE5TVVJMKil1cmwsIG5pbCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBT
eXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dXBkYXRlUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCiAg
ICAgICAgIFttX3FsUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlIHNldFByb2dyZXNzOnByb2dy
ZXNzXTsKIH0KIAotdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmluaXNoKFdlYkNvcmU6
OlVSTCB1cmwpCit2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2goVVJMIHVybCkK
IHsKICAgICBpZiAobV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSkKICAgICAgICAgW21f
cWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgZmluaXNoOnVybF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggMzNmMGE5YzJjZDI2MTI1NzFlMjg2
ZDU3NjczZWI3MDQwNGQwMDFiMi4uNmNmYjQ0M2E5NTg4NjU1NmYwOTg2MDg3MDQ0ZTQyMDI2ZDNm
YTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAt
MTE5LDcgKzExOSw3IEBAIGNsYXNzIFVJRGVsZWdhdGUgewogICAgICAgICB2b2lkIHRvb2xiYXJz
QXJlVmlzaWJsZShXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsK
ICAgICAgICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1l
dGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAg
dm9pZCBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdl
YlBhZ2VQcm94eSYsIFdLUmVzb3VyY2VMaW1pdCkgZmluYWw7Ci0gICAgICAgIHZvaWQgc2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpEYXRhJikg
ZmluYWw7CisgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQ
YWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
VVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CiAjZW5kaWYKICAgICAgICAgYm9vbCBkZWNpZGVQb2xp
Y3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVBy
b3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JikgZmluYWw7CiAgICAgICAgIGJvb2wgY2hlY2tVc2Vy
TWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBB
UEk6OlNlY3VyaXR5T3JpZ2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVja1Byb3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbQppbmRleCAzZWNlODIwZWQ0YjMxNjQzNjkzZjUyMjQ3ZWRhZDljNjhiODFm
ZjYwLi5mOTE3YWE1ZjdhMTE4YjIyZDhlYjIyNTU4MzRjNmM5Y2NjZGNkYmZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTUxLDggKzUxLDggQEAK
ICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRlc3RS
ZXN1bHRJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVkNhcHR1cmVEZXZpY2UuaD4KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJh
bWVJbmZvPgogCiAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3Mo
KS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVU
b2tlbklkZW50aWZpZXIpOwogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJl
RXF1YWwoc291cmNlRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpOwot
ICAgIGF1dG8gYXBpTmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8ucHRyKCks
IG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgV2ViQ29yZTo6VVJMKCks
IHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAg
ICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0
ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBu
dWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91bGRPcGVu
QXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICBhdXRvIGFw
aVdpbmRvd0ZlYXR1cmVzID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3JlYXRlKHdpbmRvd0ZlYXR1
cmVzKTsKIApAQCAtNzg3LDcgKzc4Nyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNo
b3dQYWdlKFdlYlBhZ2VQcm94eSopCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVs
ZWdhdGUgX3Nob3dXZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogICAgIAotdm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihX
ZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0
IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VS
TCwgQVBJOjpEYXRhJiBkYXRhKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFU
b0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJM
JiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKQogewogICAgIGlmICghbV91aURlbGVn
YXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVu
YW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtODY1LDggKzg2
NSw4IEBAIHN0YXRpYyB2b2lkIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNl
cyhjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwKICAgICB9KTsKIAogICAgIGNvbnN0IFdlYkZy
YW1lUHJveHkqIG1haW5GcmFtZSA9IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCk7Ci0gICAgV2Vi
Q29yZTo6VVJMIHJlcXVlc3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJhbWUudXJsKCkpOwot
ICAgIFdlYkNvcmU6OlVSTCBtYWluRnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIG1haW5GcmFtZS0+
dXJsKCkpOworICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIGZyYW1lLnVybCgpKTsKKyAg
ICBVUkwgbWFpbkZyYW1lVVJMKFVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKIAogICAgIF9XS0Nh
cHR1cmVEZXZpY2VzIGRldmljZXMgPSAwOwogICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzQXVkaW9D
YXB0dXJlKCkpCkBAIC05NzMsOCArOTczLDggQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSwKIAog
ICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXc7CiAgICAgY29u
c3QgV2ViRnJhbWVQcm94eSogbWFpbkZyYW1lID0gZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKTsK
LSAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBmcmFtZS51
cmwoKSk7Ci0gICAgV2ViQ29yZTo6VVJMIG1haW5GcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgbWFp
bkZyYW1lLT51cmwoKSk7CisgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgZnJhbWUudXJs
KCkpOworICAgIFVSTCBtYWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogCiAg
ICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkKE5TU3RyaW5nICosIEJPT0wp
Pjo6ZnJvbUNhbGxhYmxlKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oTlNT
dHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkgewogICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0
LT5zZXRVc2VyTWVkaWFBY2Nlc3NJbmZvKFN0cmluZyhzYWx0KSwgYXV0aG9yaXplZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JS
ZWNvdmVyeUF0dGVtcHRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVs
b2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCmluZGV4IDVmOTlhZWM4NWRhNzUyNGJh
MDQxZTc1ZWIwODAxNzM5OTA0OWIyMTIuLmFlNTc2NWU0OGU3MWI4N2ZmNjBkMTQwNWMzYzdhMzM3
MjUxNWNhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVs
b2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCkBAIC02
OSw3ICs2OSw3IEBAIC0gKEJPT0wpYXR0ZW1wdFJlY292ZXJ5CiAgICAgaWYgKCF3ZWJGcmFtZVBy
b3h5KQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICB3ZWJGcmFtZVByb3h5LT5sb2FkVVJMKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgX3VybFN0cmluZykpOworICAgIHdlYkZyYW1lUHJv
eHktPmxvYWRVUkwoVVJMKFVSTCgpLCBfdXJsU3RyaW5nKSk7CiAgICAgcmV0dXJuIFlFUzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbQppbmRleCBhZTY0NzA3ZGExNTFjMjJiYzM4MzlkYWI0YWY3ZTc0MDE0
ZTAyMjBlLi41ZmQ1YjkwY2Q0OWRiNDdkOGU3YzMwNmZjNDg2YjNiZTMxMmQ4MTQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJk
SXRlbUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggNWFhZGNmNjdkMTVlMGZmNGE3NzQxYjg1ZTlkZTI3YTQ5NzIyMjlmMi4uYmNiZjUzNzZi
MWEzZWJlYjQ3ZjgzYjMyODM4ZDIxNGRkNzBiNzFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQwNjYsNyArNDA2Niw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OndyaXRlVG9VUkxGb3JGaWxlUHJvbWlzZVByb3ZpZGVyKE5TRmlsZVByb21pc2VQ
cm92aWRlciAqcHJvdmlkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpV
UkwgYmxvYlVSTCB7IGluZm8uYmxvYlVSTCB9OworICAgIFVSTCBibG9iVVJMIHsgaW5mby5ibG9i
VVJMIH07CiAgICAgaWYgKGJsb2JVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHdlYktpdFVua25vd25FcnJvcigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggZTA3
YWFjODk2MDM4MTU2MWE3MmNhNTRiNzU1NzM5Mjc5ODVlMzQwYy4uNDc3MzZmMDZkZjgyODY4ZmUz
YmNiZGNkMDgxMGNlZWNmZGQ2ZGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEludFJl
Y3Q7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC03NSw4ICs3NCw4IEBAIGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpEb3dubG9hZD4sIHB1YmxpCiAgICAgV2ViUGFnZVByb3h5
KiBvcmlnaW5hdGluZ1BhZ2UoKSBjb25zdDsKICAgICB2b2lkIHNldE9yaWdpbmF0aW5nUGFnZShX
ZWJQYWdlUHJveHkqKTsKIAotICAgIHZvaWQgc2V0UmVkaXJlY3RDaGFpbihWZWN0b3I8V2ViQ29y
ZTo6VVJMPiYmIHJlZGlyZWN0Q2hhaW4pIHsgbV9yZWRpcmVjdENoYWluID0gV1RGTW92ZShyZWRp
cmVjdENoYWluKTsgfQotICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiByZWRpcmVjdENo
YWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdENoYWluOyB9CisgICAgdm9pZCBzZXRSZWRp
cmVjdENoYWluKFZlY3RvcjxVUkw+JiYgcmVkaXJlY3RDaGFpbikgeyBtX3JlZGlyZWN0Q2hhaW4g
PSBXVEZNb3ZlKHJlZGlyZWN0Q2hhaW4pOyB9CisgICAgY29uc3QgVmVjdG9yPFVSTD4mIHJlZGly
ZWN0Q2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0Q2hhaW47IH0KIAogICAgIHZvaWQg
c2V0V2FzVXNlckluaXRpYXRlZChib29sIHZhbHVlKSB7IG1fd2FzVXNlckluaXRpYXRlZCA9IHZh
bHVlOyB9CiAgICAgYm9vbCB3YXNVc2VySW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNV
c2VySW5pdGlhdGVkOyB9CkBAIC0xMjYsNyArMTI1LDcgQEAgY2xhc3MgRG93bmxvYWRQcm94eSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRvd25sb2FkPiwgcHVi
bGkKICAgICB1aW50NjRfdCBtX2J5dGVzTG9hZGVkIHsgMCB9OwogCiAgICAgV2Vha1B0cjxXZWJQ
YWdlUHJveHk+IG1fb3JpZ2luYXRpbmdQYWdlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IG1f
cmVkaXJlY3RDaGFpbjsKKyAgICBWZWN0b3I8VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9v
bCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAKaW5kZXggOWZlM2M3NjU2MWIyNTU3MTZhNDViYmEzOGZl
OTk1YTAwNTk3N2ZmYi4uNzJmNGY3MjQ1NWE3ZWI4YTY1YjllNTI3ZTU1YTFmODIxYWNlMDhmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcApAQCAtMzIsNyAr
MzIsNyBAQCBGcmFtZUxvYWRTdGF0ZTo6fkZyYW1lTG9hZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBG
cmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpCit2b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25z
dCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQobV9wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwog
CkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogICAgIG1fcHJvdmlzaW9uYWxVUkwgPSB1
cmw7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2Fk
U3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBV
UkwmIHVybCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwpOwog
CkBAIC04MSwxMiArODEsMTIgQEAgdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkRmFpbExvYWQoKQog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmluaXNoZWQ7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6
OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3Zv
aWQgRnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBVUkwm
IHVybCkKIHsKICAgICBtX3VybCA9IHVybDsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6c2V0
VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCkKK3ZvaWQg
RnJhbWVMb2FkU3RhdGU6OnNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdW5yZWFjaGFibGVV
UkwpCiB7CiAgICAgbV9sYXN0VW5yZWFjaGFibGVVUkwgPSBtX3VucmVhY2hhYmxlVVJMOwogICAg
IG1fdW5yZWFjaGFibGVVUkwgPSB1bnJlYWNoYWJsZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9GcmFtZUxvYWRTdGF0ZS5oCmluZGV4IDk4YzMyNWU4NDQzNmVkYWU0ZGNmNjM5ZDE0MDc2ZGE5
ODM1MzZjMTIuLmM2NTAwMDNmZmI1ZjBiNjg4NWMxM2YzMjZiZDJmYjRmZDI2YzlkZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuaApAQCAtMjUsNyArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzksMjkgKzM5LDI5IEBAIGNsYXNz
IEZyYW1lTG9hZFN0YXRlIHsKICAgICAgICAgRmluaXNoZWQKICAgICB9OwogCi0gICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpV
UkwmKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOworICAg
IHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVS
TCYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwogCiAgICAgdm9pZCBkaWRD
b21taXRMb2FkKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWls
TG9hZCgpOwogCi0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2Vi
Q29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3Qg
VVJMJik7CiAKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAg
ICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAg
Y29uc3QgV2ViQ29yZTo6VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
dmlzaW9uYWxVUkw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CisgICAgY29uc3QgVVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
dmlzaW9uYWxVUkw7IH0KIAotICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJik7Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KKyAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJM
KGNvbnN0IFVSTCYpOworICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJl
dHVybiBtX3VucmVhY2hhYmxlVVJMOyB9CiAKIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpGaW5pc2hlZCB9OwotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKLSAgICBXZWJDb3Jl
OjpVUkwgbV9wcm92aXNpb25hbFVSTDsKLSAgICBXZWJDb3JlOjpVUkwgbV91bnJlYWNoYWJsZVVS
TDsKLSAgICBXZWJDb3JlOjpVUkwgbV9sYXN0VW5yZWFjaGFibGVVUkw7CisgICAgVVJMIG1fdXJs
OworICAgIFVSTCBtX3Byb3Zpc2lvbmFsVVJMOworICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOwor
ICAgIFVSTCBtX2xhc3RVbnJlYWNoYWJsZVVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKaW5kZXggMGU5MjE4MzMyN2FiZjg3YWJiNjIwNjcwN2U2YWU1OGE2NTZh
YjViNC4uMTgxYTllMjRhZTVlZjY3NmQ2OThhNmY0MjVkZTk5N2Q1ODM4OGVhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5k
UHJvY2Vzc0RpZFJlc3VtZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpQcm9jZXNzRGlkUmVzdW1lKCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxi
YWNrKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjYWxsYmFjayhm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCmluZGV4IDI1NTg5N2U3ZTgyNWUxN2I4M2U4YjE0NjRiNDgwOTE3NTZl
YTMwMDcuLjRkYmJiNmZlZTA2MmZmNWUwOGJmMTNjMDc3MzE1MjA4ZTk5NTM0NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKLSNkZWZpbmUgTmV0d29ya1By
b2Nlc3NQcm94eV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94eS5oIgpAQCAtNDksNyArNDgsNiBAQCBj
bGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNz
IFNob3VsZFNhbXBsZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVVJMOwogc3RydWN0
IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAtODcsNyArODUsNyBAQCBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwcml2YXRlIFBy
b2Nlc3NUaHJvdAogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRp
ZgogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFj
ayk7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CiAKICAg
ICB2b2lkIHByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpOwogICAgIApAQCAtMjAzLDUgKzIwMSwzIEBA
IGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzUHJv
eHksIHByaXZhdGUgUHJvY2Vzc1Rocm90CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIE5ldHdvcmtQcm9jZXNzUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlTG9hZFN0YXRlLmNwcAppbmRleCAxNzU5ZjhhNDkzNjdkMDUyZTVmY2FlNTE3M2RhMjY3MjUz
OTdmNjYwLi4yZWQxMDc1YzYwMGViZGRlYTVlNGZmNTRmYWE5MWRkZDVmNWJlMmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcApAQCAtMjA2LDkgKzIwNiw5IEBA
IGJvb2wgUGFnZUxvYWRTdGF0ZTo6aGFzT25seVNlY3VyZUNvbnRlbnQoY29uc3QgRGF0YSYgZGF0
YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGRhdGEuc3RhdGUgPT0gU3RhdGU6
OlByb3Zpc2lvbmFsKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhkYXRhLnBy
b3Zpc2lvbmFsVVJMLCAiaHR0cHMiKTsKKyAgICAgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJcyhk
YXRhLnByb3Zpc2lvbmFsVVJMLCAiaHR0cHMiKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpwcm90
b2NvbElzKGRhdGEudXJsLCAiaHR0cHMiKTsKKyAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzKGRh
dGEudXJsLCAiaHR0cHMiKTsKIH0KIAogYm9vbCBQYWdlTG9hZFN0YXRlOjpoYXNPbmx5U2VjdXJl
Q29udGVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHAKaW5kZXggMjMxMDc1YWMzNTk5YmFkMWQxOWFkNGQ3YzQyZmM3
MmZmOThjZGEwMy4uNTEzMmI4M2JmYWFhYTEzZjQ3NmE2NjM2NTFjZDM2MjAwNjY0YWVmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3Jl
LmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKaW5kZXggNmU5ZWVmYzhmNWY0MzhhZTg5YTJmMjVh
Yzg4MmI1NTA3ZmVlMWIzNC4uNTU1OTdmMzQ0YmY1MTM5YjlmNTY3M2MzMGY4OGM3MjgxNTdhZjk5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5oCkBAIC0zMSwxMCArMzEsNiBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRh
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFBsdWdpbkluZm9TdG9yZTsKQEAgLTUzLDcgKzQ5LDcgQEAgY2xhc3Mg
UGx1Z2luSW5mb1N0b3JlIHsKICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZvciBhIHBsdWctaW4g
dGhhdCBjYW4gaGFuZGxlIHRoZSBnaXZlbiBNSU1FIHR5cGUuCiAgICAgLy8gSWYgdGhlIE1JTUUg
dHlwZSBpcyBudWxsLCB0aGUgZmlsZSBleHRlbnNpb24gb2YgdGhlIGdpdmVuIHVybCB3aWxsIGJl
IHVzZWQgdG8gaW5mZXIgdGhlCiAgICAgLy8gcGx1Zy1pbiB0eXBlLiBJbiB0aGF0IGNhc2UsIG1p
bWVUeXBlIHdpbGwgYmUgZmlsbGVkIGluIHdpdGggdGhlIHJpZ2h0IE1JTUUgdHlwZS4KLSAgICBQ
bHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzID0gV2ViQ29y
ZTo6UGx1Z2luRGF0YTo6QWxsUGx1Z2lucyk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1
Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFs
bG93ZWRQbHVnaW5UeXBlcyA9IFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpOwogCiAg
ICAgLy8gUmV0dXJucyB0aGUgaW5mbyBmb3IgdGhlIHBsdWctaW4gd2l0aCB0aGUgZ2l2ZW4gYnVu
ZGxlIGlkZW50aWZpZXIuCiAgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luV2l0aEJ1bmRs
ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKTsKQEAgLTYzLDcgKzU5
LDcgQEAgY2xhc3MgUGx1Z2luSW5mb1N0b3JlIHsKIAogICAgIHN0YXRpYyBQbHVnaW5Nb2R1bGVM
b2FkUG9saWN5IGRlZmF1bHRMb2FkUG9saWN5Rm9yUGx1Z2luKGNvbnN0IFBsdWdpbk1vZHVsZUlu
Zm8mKTsKIAotICAgIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBwbHVnaW5VUkwsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxT
dHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcGFnZVVSTCk7CisgICAgYm9vbCBpc1N1cHBvcnRl
ZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHBsdWdpblVSTCwgY29u
c3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgVVJMJiBwYWdlVVJMKTsKICAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKTsKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBsdWdpbihT
dHJpbmcmJiBtYXRjaGluZ0RvbWFpbiwgU3RyaW5nJiYgaWRlbnRpZmllciwgSGFzaFNldDxTdHJp
bmc+JiYgbWltZVR5cGVzLCBIYXNoU2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7CiAgICAgdm9pZCBj
bGVhclN1cHBvcnRlZFBsdWdpbnMoKSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9IHN0ZDo6bnVsbG9w
dDsgfQpAQCAtMTA0LDcgKzEwMCw3IEBAIGNsYXNzIFBsdWdpbkluZm9TdG9yZSB7CiAgICAgICAg
IEhhc2hTZXQ8U3RyaW5nPiBtaW1lVHlwZXM7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBleHRl
bnNpb25zOwogICAgIH07Ci0gICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3Qg
U3VwcG9ydGVkUGx1Z2luJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6
VVJMJiBwbHVnaW5VUkwpOworICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0
IFN1cHBvcnRlZFBsdWdpbiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1
Z2luVVJMKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbj4+IG1f
c3VwcG9ydGVkUGx1Z2luczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggZDkwZjBh
OWVhMDc0ZjZmNWY5MWJkYmFhNjY3YmUwMjIyZTU4MjczOS4uZmFlY2YzMWRmNzk1ZDMxNjM4NjQ5
ZDIyNDM4MDdjZjk3NWIyYzU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMzQsMTIg
KzM0LDEyIEBACiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxRdWFydHpD
b3JlL0NBUmVtb3RlTGF5ZXJTZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPGNydF9leHRlcm5zLmg+CiAjaW1w
b3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4K
ICNpbXBvcnQgPHNwYXduLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBAaW50ZXJm
YWNlIFdLUGxhY2Vob2xkZXJNb2RhbFdpbmRvdyA6IE5TV2luZG93IApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5nUmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaAppbmRleCA3OTNiZjRiYTRhZjczZGEyMGJk
OTU3YTRiZmMwMzEyNWRmM2M3Nzc2Li4zNDIyMDQ3YWIyMDgwYjY5YmNiYjhkMzM4MzhhNzJkOGNh
ZTk5NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdS
ZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQu
aApAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgU1NCU2Vydmlj
ZUxvb2t1cFJlc3VsdDsKQEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFNhZmVCcm93c2luZ1Jlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNhZmVCcm93c2luZ1Jl
c3VsdD4gewogcHVibGljOgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLSAgICBzdGF0aWMgUmVm
PFNhZmVCcm93c2luZ1Jlc3VsdD4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgU1NCU2Vydmlj
ZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorICAgIHN0YXRpYyBSZWY8U2FmZUJyb3dzaW5nUmVzdWx0
PiBjcmVhdGUoVVJMJiYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTYWZlQnJvd3NpbmdSZXN1bHQoV1RGTW92
ZSh1cmwpLCByZXN1bHQpKTsKICAgICB9CiAjZW5kaWYKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFN0cmluZyYgcHJvdmlkZXIoKSBjb25zdCB7
IHJldHVybiBtX3Byb3ZpZGVyOyB9CiAgICAgYm9vbCBpc1BoaXNoaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9pc1BoaXNoaW5nOyB9CiAgICAgYm9vbCBpc01hbHdhcmUoKSBjb25zdCB7IHJldHVybiBt
X2lzTWFsd2FyZTsgfQpAQCAtNTAsOSArNTAsOSBAQCBjbGFzcyBTYWZlQnJvd3NpbmdSZXN1bHQg
OiBwdWJsaWMgUmVmQ291bnRlZDxTYWZlQnJvd3NpbmdSZXN1bHQ+IHsKIAogcHJpdmF0ZToKICNp
ZiBIQVZFKFNBRkVfQlJPV1NJTkcpCi0gICAgU2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNvcmU6OlVS
TCYmLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICopOworICAgIFNhZmVCcm93c2luZ1Jlc3VsdChV
UkwmJiwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqKTsKICNlbmRpZgotICAgIFdlYkNvcmU6OlVS
TCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fcHJvdmlkZXI7CiAgICAgYm9v
bCBtX2lzUGhpc2hpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc01hbHdhcmUgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5k
ZXggOGJjNGE3NTNmYTc2NzNkNDExYjliNGNmNWI1NDQyOTc5ZDY5MzIwNC4uMmVhNzlmODJkMTM5
ZTFkYjVlMjcxODFlNDI1YzllZWUxNTE4ZTIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCmluZGV4IDk0OWM4ZGY3MjFl
ZDllZDM1YTdkYTY4ZWM3Y2Y5MTI3OWVmOTBhMzEuLjI2OWQwYzMyZmIzMjA4NGI1N2U3ZDE2YjBj
Y2YyNWNlZjc0ZjljMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3Rl
bVByZXZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVt
UHJldmlld0NvbnRyb2xsZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiBPQkpDX0NMQVNTIFFMUHJldmlld0Nv
bnRyb2xsZXI7CkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
IHsKIAogICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpOwogICAgIHZvaWQgdXBkYXRlUHJvZ3Jlc3MoZmxvYXQpOwotICAgIHZvaWQg
ZmluaXNoKFdlYkNvcmU6OlVSTCk7CisgICAgdm9pZCBmaW5pc2goVVJMKTsKICAgICB2b2lkIGNh
bmNlbCgpOwogICAgIHZvaWQgZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5k
ZXggZTMzMTY3YTg5NTBjMTY4ZjAxYzAzMmNlYjllNWY4Zjk4MWU1MTM4MC4uOWYyNDBkMzAyMWVk
Zjg2YzdjYWVkN2U4MTQ1OTUxZGVkMzI2MGUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTcxLDEwICs3MSwxMCBAQCBjbGFzcyBX
ZWJDb29raWVNYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpDb29raWVNYQogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uo
UEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CiAKICAgICB2b2lkIHNldENvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6Q29va2llJiwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwot
ICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAg
IHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248
dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lkIGdldEFsbENvb2tpZXMo
UEFMOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZv
aWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAg
ICAgdm9pZCBzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBIVFRQQ29v
a2llQWNjZXB0UG9saWN5LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBGdW5j
dGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggMjk3YWE4YWYz
MjU1YjBkYWY0YzQ3M2FlNzczZTcwZGFjNjliNDVjOC4uNDk3YjIzMTdiN2RjZjE2NmY3MWRjNDAw
ZTVmZjc4ZmQwZWExZGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
aApAQCAtODAsMTQgKzgwLDE0IEBAIGNsYXNzIFdlYkZyYW1lUHJveHkgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpGcmFtZT4gewogCiAgICAgRnJhbWVMb2FkU3Rh
dGUmIGZyYW1lTG9hZFN0YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZTsgfQogCi0gICAg
dm9pZCBsb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgbG9hZFVSTChjb25z
dCBVUkwmKTsKICAgICB2b2lkIHN0b3BMb2FkaW5nKCkgY29uc3Q7CiAKLSAgICBjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7IH0K
LSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9CisgICAgY29uc3QgVVJMJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVybCgpOyB9CisgICAgY29uc3QgVVJM
JiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUucHJvdmlz
aW9uYWxVUkwoKTsgfQogCi0gICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CisgICAgdm9pZCBz
ZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9
CiAKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9NSU1FVHlw
ZTsgfQogICAgIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGFpbnNQbHVnaW5Eb2N1bWVudDsgfQpAQCAtMTA4LDEzICsxMDgsMTMgQEAgY2xhc3MgV2Vi
RnJhbWVQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkZy
YW1lPiB7CiAgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6
RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0
YShBUEk6OlVSTCosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29y
ZTo6VVJMJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZChjb25zdCBVUkwmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWQoKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
V2ViQ2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50KTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkKCk7Ci0gICAgdm9pZCBk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOyAvLyBlZy4gYW5j
aG9yIG5hdmlnYXRpb24sIHNlc3Npb24gc3RhdGUgY2hhbmdlLgorICAgIHZvaWQgZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbihjb25zdCBVUkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBz
ZXNzaW9uIHN0YXRlIGNoYW5nZS4KICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGljeUxpc3Rl
bmVyUHJveHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQ
STo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgVmVjdG9y
PFJlZjxTYWZlQnJvd3NpbmdSZXN1bHQ+PiYmKT4mJiwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5n
UmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmlu
ZGV4IDg0NDIwYTEzNTc0OWM0OWYyM2Q4ZTJjNDkwYzhkZDk0NzZjZDMzN2YuLjU1NGU3NDQ4ZWM0
YWNmODY5NzNkMjZiOWRhMDBhZDFjNjNiY2Q5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtNTAsMTAgKzUwLDYgQEAgT0JKQ19DTEFTUyBXS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyOwogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNlbmRpZgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtMTUxLDcgKzE0Nyw3IEBAIGNsYXNzIFdlYkluc3Bl
Y3RvclByb3h5CiAgICAgc3RhdGljIFN0cmluZyBpbnNwZWN0b3JQYWdlVVJMKCk7CiAgICAgc3Rh
dGljIFN0cmluZyBpbnNwZWN0b3JUZXN0UGFnZVVSTCgpOwogICAgIHN0YXRpYyBTdHJpbmcgaW5z
cGVjdG9yQmFzZVVSTCgpOwotICAgIHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdEluc3BlY3RvclBh
Z2UoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5z
cGVjdG9yUGFnZShjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5p
bXVtV2luZG93V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1XaW5kb3dI
ZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCmluZGV4IDNhNTk0YmI3YjRhMjYwYjk0YjA4ZmZj
YmVkYzJhZWNhY2U5NDFhZDcuLjAyODEyY2Y3ZmJlN2I0ZTU2ZjI3NTc5MmVmMjk0MGQ5ZWVmZDg2
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAi
QVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDIyZjI2YWVhMTg0OGE0MDlhODI4N2Mz
MjY1NjViM2YzZWQxMzdjMC4uODg2YmMyYmQxMzNjNjM5YTBkMGNlNGE3ZGZlOGUzYzZiNDA2Nzc0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTMsMTMg
KzE1MywxMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dEluZGljYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJi
bGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3Rk
aW8uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3lz
dGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFy
c2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtMTA3MSw3ICsxMDcxLDcgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIGMKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNh
Y3Rpb24oKTsKIAotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0
cmFuc2FjdGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IGJsYW5rVVJMKCkuc3Ry
aW5nKCkpOworICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFu
c2FjdGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IFdURjo6YmxhbmtVUkwoKS5z
dHJpbmcoKSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlBy
b2Nlc3MoKTsKQEAgLTEwOTIsNyArMTA5Miw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAg
ICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojps
b2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgYm9vbCBm
b3JTYWZlQnJvd3NpbmcpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywg
Y29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIGJvb2wgZm9yU2FmZUJyb3dzaW5nKQogewogICAgIC8vIFdoZW4gdGhlIFVJ
UHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9u
YWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5h
dGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBm
cm9tIGJlaW5nCkBAIC0xMTQxLDcgKzExNDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdl
YkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwog
ICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQ
ZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7Cisg
ICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBX
VEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogCiAgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFt
ZXRlcnM7CiAgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsKQEAgLTExNjAsNyAr
MTE2MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgSW50UG9pCiAgICAgaWYgKG1faXNDbG9zZWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1
cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghaXNWYWxpZCgpKQpAQCAtMzUwNiw3ICszNTA2LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkK
ICAgICBtX25hdmlnYXRpb25TdGF0ZS0+ZGlkRGVzdHJveU5hdmlnYXRpb24obmF2aWdhdGlvbklE
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwm
JiB1cmwsIFdlYkNvcmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCwgVVJM
JiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC0zNjA0LDcgKzM2
MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlEKQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENhbmNl
bENsaWVudFJlZGlyZWN0KCp0aGlzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5n
ZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIFdlYkNv
cmU6OlVSTCYmIHVybCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVS
TEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBVUkwmJiB1cmwpCiB7CiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtMzg3NCw3
ICszODc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELAogICAgIH0KIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5h
dmlnYXRpb25UeXBlLCBXZWJDb3JlOjpVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgp
KTsKIApAQCAtNDI0MSw3ICs0MjQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRG
b3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihX
ZWJDb3JlOjpVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxT
dHJpbmc+JiYgbm90aWZpY2F0aW9ucykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50UnVsZUxp
c3ROb3RpZmljYXRpb24oVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBW
ZWN0b3I8U3RyaW5nPiYmIG5vdGlmaWNhdGlvbnMpCiB7CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5jb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oKnRoaXMsIFdURk1vdmUodXJsKSwgV1RGTW92
ZShpZGVudGlmaWVycyksIFdURk1vdmUobm90aWZpY2F0aW9ucykpOwogfQpAQCAtNTk1Miw3ICs1
OTUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAobV9w
cm9jZXNzLT5pc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkgewotICAgICAgICBTdHJpbmcgZG9tYWlu
ID0gV2ViQ29yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihXZWJDb3JlOjpVUkwoeyB9
LCBjdXJyZW50VVJMKCkpLmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIGRvbWFp
biA9IFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oVVJMKHsgfSwgY3VycmVu
dFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1wdHko
KSkKICAgICAgICAgICAgIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aEVuaGFuY2VkUHJpdmFjeShX
ZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmRvbWFpbkNhdXNpbmdKZXRzYW1LZXkoKSwg
ZG9tYWluLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB9CkBAIC03MDMxLDcgKzcw
MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgd3JhcHBlZEtleSwgYm9vbCYgc3VjYwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6
ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIFN0cmluZyYgcmVzdWx0KQordm9pZCBXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYg
Y2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNzY3Niw5
ICs3Njc2LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVS
TFNjaGVtZUhhbmRsZXI+JiYgaGFuZGxlciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAg
YXV0byBjYW5vbmljYWxpemVkU2NoZW1lID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNj
aGVtZShzY2hlbWUpOworICAgIGF1dG8gY2Fub25pY2FsaXplZFNjaGVtZSA9IFdURjo6VVJMUGFy
c2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUpOwogICAgIEFTU0VSVChjYW5vbmlj
YWxpemVkU2NoZW1lKTsKLSAgICBBU1NFUlQoIVVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKGNh
bm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOworICAgIEFTU0VSVCghV1RGOjpVUkxQYXJzZXI6
OmlzU3BlY2lhbFNjaGVtZShjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKIAogICAgIGF1
dG8gc2NoZW1lUmVzdWx0ID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lLmFkZChjYW5vbmlj
YWxpemVkU2NoZW1lLnZhbHVlKCksIGhhbmRsZXIuZ2V0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQo
c2NoZW1lUmVzdWx0LCBzY2hlbWVSZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGU2NmM1NGE4YTMyNTgzYmJmNzhiMGI3M2Y3YWQ5YTNj
ZWNjYzY1NTguLmVlZGE3MTViNzAxYzE4YWE1ZjMyMzVhY2NmODdiZjc4ZTNjOTFiMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04Myw3ICs4Myw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRD
aGVja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24uaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CkBAIC05NSw2ICs5NCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDY0LDcgKzQ2NCw3IEBA
IGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6OlBhZ2U+CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxv
d0V4dGVybmFsU2NoZW1lcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMLCBj
b25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEg
PSBudWxscHRyKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9
IG51bGxwdHIpOwotICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNl
VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEgPSBudWxscHRyLCBib29sIGZvclNhZmVCcm93c2luZyA9IGZhbHNlKTsKKyAgICB2b2lk
IGxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0ciwgYm9vbCBmb3JTYWZlQnJvd3Npbmcg
PSBmYWxzZSk7CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9j
dW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogCkBAIC0xMDY0LDgg
KzEwNjQsOCBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlS
ZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNhdmVEYXRh
VG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmlu
ZyYmIG1pbWVUeXBlLCBXZWJDb3JlOjpVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJik7
Ci0gICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2Vz
dGVkRmlsZW5hbWUsIFdlYkNvcmU6OlVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIo
U3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBVUkwmJiBvcmln
aW5hdGluZ1VSTCwgQVBJOjpEYXRhJik7CisgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFVSTCYmIG9yaWdpbmF0aW5nVVJM
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
b2lkIHNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25S
YXcoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
dGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBj
b25zdCBTdHJpbmcmIHBkZlVVSUQpOwogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVy
QW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpOwpAQCAtMTE3OCw3ICsxMTc4LDcgQEAg
Y2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6UGFnZT4KICAgICB2b2lkIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhf
dD4mLCBib29sJiBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiYpOwogI2VuZGlmCiAKLSAgICB2
b2lkIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5k
ZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBT
dHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywg
Y29uc3QgVVJMJiwgU3RyaW5nJiByZXN1bHQpOwogCiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2Vi
Q29yZTo6SW50UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlv
bnMsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKQEAgLTEzNDYsNyArMTM0Niw3IEBAIGNsYXNzIFdl
YlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBh
Z2U+CiAgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICNlbmRpZgogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNv
bnN0IFdlYkNvcmU6OlVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2
b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25z
dCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1
Y2Nlc3MpPiYmKTsKIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgcHJlZmVyZW5jZXNTdG9yZSgp
IGNvbnN0OwogCkBAIC0xNDExLDE3ICsxNDExLDE3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBk
aWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENyZWF0ZVdp
bmRvdyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYp
OwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6OlVS
TCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRv
dWJsZSBkZWxheSk7CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpOwotICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYm
KTsKKyAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJh
bWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWlu
c1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVu
dD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQg
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNl
ckRhdGEmKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVE
b2N1bWVudE5hdmlnYXRpb25UeXBlLCBXZWJDb3JlOjpVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsK
KyAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlLCBVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZU1haW5E
b2N1bWVudCh1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsK
QEAgLTE0NDgsMTEgKzE0NDgsMTEgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBv
bGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsK
LSAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJiwgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CisgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0No
ZWNrKGNvbnN0IFVSTCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCiAgICAgdm9p
ZCB3aWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlE
LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVl
cywgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICAgICAgCi0gICAg
dm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxT
dHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7Cisg
ICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oVVJMJiYsIFZlY3RvcjxTdHJpbmc+
JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7CiAKICAgICAv
LyBIaXN0b3J5IGNsaWVudAogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEo
Y29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwpAQCAtMTQ3
Myw4ICsxNDczLDggQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0
dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFxdWVQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcGx1Z2luc1BhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgd2ViR0xQb2xpY3lG
b3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5
Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7Ci0gICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JV
UkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBv
bGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwo
VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVk
UmVwbHkmJik7CisgICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5
JiYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xiYXJzQXJlVmlz
aWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSk7CiAgICAgdm9pZCBnZXRUb29sYmFyc0FyZVZp
c2libGUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxh
eWVkUmVwbHkmJik7CkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQg
c2V0UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0
SW5wdXRJZGVudGlmaWVyLCB1aW50NjRfdCBjb21wbGV4VGV4dElucHV0U3RhdGUpOwogI2VuZGlm
CiAKLSAgICBib29sIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgYm9vbCBtYXli
ZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFVSTCYsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYpOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQog
ICAgIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlZmJiNGIxZjg3YzQ3OGZi
MDM4MzI2Yjk5NDAyN2YyMmE3ODBkNWE0Li5jMGQ3ZDgyMTI1NGMzZTdiYTlmYjAzZDllN2Y1YThm
MWQ2ZjRlYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0zNCw4ICszNCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAgICAgVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IHBsdWdpblVuYXZh
aWxhYmlsaXR5UmVhc29uLCBTdHJpbmcgbWltZVR5cGUsIFN0cmluZyBwbHVnaW5VUkxTdHJpbmcs
IFN0cmluZyBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3Ry
aW5nLCBTdHJpbmcgcGFnZVVSTFN0cmluZykKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29y
ZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKLSAgICBSZXNvbHZl
V2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xp
Y3kpIERlbGF5ZWQKKyAgICBXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3Qg
bG9hZFBvbGljeSkgRGVsYXllZAorICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwgdXJs
KSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVsYXllZAogI2VuZGlmIC8vIEVOQUJMRShXRUJH
TCkKICAgICBEaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoc3RydWN0IFdlYkNvcmU6OlZpZXdw
b3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIERpZFJlY2VpdmVFdmVudCh1aW50MzJfdCB0
eXBlLCBib29sIGhhbmRsZWQpCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIERpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3Qg
V2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllciB3aW5kb3dJZGVudGlmaWVyKQogCiAgICAg
IyBGcmFtZSBsb2FkIG1lc3NhZ2VzCi0gICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1
cmwsIFdlYkNvcmU6OlVSTCB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKKyAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMIHVybCwgVVJMIHVucmVhY2hhYmxlVVJMLCBXZWJL
aXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCiAgICAgV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyB1cmwsIGRvdWJsZSBkZWxheSkKICAgICBEaWRDYW5jZWxDbGllbnRS
ZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgRGlkQ2hhbmdlUHJvdmlzaW9u
YWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdl
YkNvcmU6OlVSTCB1cmwpCisgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwpCiAgICAgRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJy
b3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBl
LCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5E
b2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNl
ZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRG
YWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
QEAgLTE0NSw3ICsxNDUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRGV0ZWN0WFNT
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAg
ICBEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCB0eXBlLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJL
aXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5
cGUsIFVSTCB1cmwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ2hhbmdlTWFp
bkRvY3VtZW50KHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCkKIApAQCAtNDI3LDcgKzQyNyw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8
V2ViQ29yZTo6UmVjZW50U2VhcmNoPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNo
ZXMoU3RyaW5nIG5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiByZXN1bHQp
CiAKLSAgICBTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3RlZEZp
bGVuYW1lLCBXZWJDb3JlOjpVUkwgb3JpZ2luYXRpbmdVUkwsIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhKQorICAgIFNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVk
RmlsZW5hbWUsIFVSTCBvcmlnaW5hdGluZ1VSTCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVu
V2l0aE5hdGl2ZUFwcGxpY2F0aW9uKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIHBkZlVV
SUQpCkBAIC00ODcsNyArNDg3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAg
IERpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogCi0gICAgQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYkNv
cmU6OlVSTCB1cmwsIFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiBu
b3RpZmljYXRpb25zKQorICAgIENvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihVUkwgdXJsLCBW
ZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9ucykK
IAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1Mp
CiAgICAgQWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0X3QgY29udGV4dElkKQpA
QCAtNTQ2LDYgKzU0Niw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RvcERp
c3BsYXlMaW5rKHVuc2lnbmVkIG9ic2VydmVySUQpCiAjZW5kaWYKIAotICAgIFNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFs
bGVuZ2VTdHJpbmcsIFdlYkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQorICAgIFNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0
cmluZyBjaGFsbGVuZ2VTdHJpbmcsIFVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggODE3NWEzYzY4
NWY3NDI3ZjE1NDE0OTVhZjIxNTA5YWM5OGMxZjE3ZS4uMGEwMmUzYmQ3MTg4ZGRlMDA1NzAyNjZk
MDhiMjFiNWQzNzg3NzkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtODYsNyArODYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3Jl
ZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CkBAIC05NCw2ICs5Myw3IEBACiAjaW5jbHVkZSA8d3RmL1Byb2Nl
c3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9T
Y29wZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDE0NDQyOGI2ZjA5ZGM5YjVlZjcxNzU1
N2Y2NDQ0Y2FlZGU1NGEwYzEuLmIxZTRjNWQxY2M0OTIxMDEyMTYzNWU4N2FiYjc5NjdkMzQxZDVm
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjM0LDcg
KzIzNCw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1BvCiAgICAgdm9pZCByZWdpc3RlclVSTFNj
aGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVn
aXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYp
OwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6VVJMJik7Cisg
ICAgdm9pZCBwcmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgVVJMJik7CiAKICAgICBWaXNpdGVkTGlu
a1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdl
dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDllODQ0Y2RiNWU2ZjI5YmQ4YTRkMzE1Y2VmZmRiNmRjYzE4MTE5MzIuLmFkMjczYTIyODhl
ZTM4OWI2NmY0ODU4ZDJlNDYxYTUxOWVkOTEzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1
ZmZpeC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcxNiw3
ICs3MTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFp
bGVkVG9MYXVuY2goKQogI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAgICAgaWYgKHBh
Z2VzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIGF1dG8mIHBhZ2UgPSAqcGFnZXNbMF07Ci0gICAg
ICAgIFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdlYkNvcmU6
OlVSTCh7IH0sIHBhZ2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgICAg
IFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFVSTCh7IH0sIHBh
Z2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWlu
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHBhZ2UubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoRW5o
YW5jZWRQcml2YWN5KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6ZG9tYWluQ2F1c2lu
Z0NyYXNoS2V5KCksIGRvbWFpbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBlMGE2N2NiNzg5
ZGZmNmQyMGFhNWI5NWRhNjAxZmMzZjlmYzJlOGM2Li4xMjZhZDI2YjY2MDljMjIyNmRlYzk4NmI1
NTJkNTI3ZGFlNDIwODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaApAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogc3RydWN0
IFBsdWdpbkluZm87CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQpAQCAtMTQ2LDEwICsx
NDUsMTAgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5
LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2wKIAogICAgIHZvaWQgd2lsbEFjcXVpcmVV
bml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKSB7IG1fbWF5SGF2ZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbiA9IHRydWU7IH0KICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nl
c3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBoYXNBc3N1bWVkUmVhZEFjY2Vz
c1RvVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgaGFzQXNzdW1lZFJl
YWRBY2Nlc3NUb1VSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIGJvb2wgY2hlY2tVUkxSZWNl
aXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgY2hlY2tVUkxSZWNl
aXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgY2hlY2tV
UkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wg
ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAz
MTc4MzZiNDJmZjY3NGU1N2I0Y2JlYWVlODcxZGYxMzQ3ZWU3NWY0Li5mOGQ5Mjg0NWE2M2ZhMmIz
OWIxN2IxZWJlODliMTcxNWZhN2JhNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE3Miw3
ICsxNzIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sIHZhbAogICAgIH0pOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBVUkwmIHVybCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VibWl0VGVsZW1ldHJ5KCkKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25z
dCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RV
UkwpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0
aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZ2VVUkwsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiByZWRpcmVjdFVS
TCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmlu
ZGV4IDZjNDEwZmE0YTk1YTNjMDA4ZDU3YjIzZjZjODMxZDllY2QwNDA3ZDAuLjU4MWEyYWU5MThi
ZTc0OWY2YTNhMzRjMDYyOGE1MDQ1NGE0N2JiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw3
ICs0MSw2IEBAIGNsYXNzIFdvcmtRdWV1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M7CiB9CiAKQEAgLTg0LDI4ICs4MywyOCBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUmVzbwogCiAg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKTsKIAotICAgIHZvaWQgbG9nRnJhbWVO
YXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHBhZ2VV
UkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
cmVkaXJlY3RVUkwpOwotICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJ
bnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0TGFzdFNlZW4o
Y29uc3QgV2ViQ29yZTo6VVJMJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVz
b3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiwgY29uc3Qg
VVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBVUkwm
IHJlZGlyZWN0VVJMKTsKKyAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rp
b24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhh
c0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFVSTCYsIFNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShj
b25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VmVy
eVByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2Uo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0g
ICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3Vi
cmVzb3VyY2VVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwmIHN1
YkZyYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhjb25z
dCBXZWJDb3JlOjpVUkwmIGhvc3RSZWRpcmVjdGVkRnJvbSwgY29uc3QgV2ViQ29yZTo6VVJMJiBo
b3N0UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2
b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgYm9vbCk7Ci0gICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRT
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJmcmFtZSwg
Y29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3Qg
V2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6
VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOwotICAgIHZvaWQgc2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lSG9zdE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9p
ZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworICAgIHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXIoY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiB0b3BG
cmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lz
dGVyZWRBc1N1YkZyYW1lVW5kZXIoY29uc3QgVVJMJiBzdWJGcmFtZSwgY29uc3QgVVJMJiB0b3BG
cmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0
IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYs
IGJvb2wpOworICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luKGNvbnN0IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZv
aWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3Vy
Y2UsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRp
cmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oY29u
c3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsK
KyAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHRvcEZyYW1l
SG9zdE5hbWUsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBj
b25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOwogICAgIHZvaWQgc2NoZWR1bGVDb29r
aWVCbG9ja2luZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0Jsb2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckJsb2NraW5nU3RhdGVGb3JEb21haW5z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpAQCAtMTMyLDcgKzEzMSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJSZXNvCiAgICAgdm9p
ZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29s
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiAgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmKT4mJiBjYWxsYmFjaykgeyBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKTsgfQogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5oCmluZGV4IDc5OTI2M2VhYzRhMmMyODgyNDY0ZDllZmFlYTQ2YTg0MzE0OWRhNWYu
LjVmNGEzYTVkMTg0M2ViYTJiMTQwMjY3MjEwYTQwNDg5ZTdjOTk3N2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgK
QEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QYXRoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBEcmFnU291cmNlU3Rh
dGUgewogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGlj
YXRvckRhdGE7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXRoPiB2aXNpYmxlUGF0aDsK
ICAgICBTdHJpbmcgbGlua1RpdGxlOwotICAgIFdlYkNvcmU6OlVSTCBsaW5rVVJMOworICAgIFVS
TCBsaW5rVVJMOwogICAgIGJvb2wgcG9zc2libHlOZWVkc0RyYWdQcmV2aWV3VXBkYXRlIHsgdHJ1
ZSB9OwogCiAgICAgTlNJbnRlZ2VyIGl0ZW1JZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQppbmRl
eCBiYjY2MzQ3NTI1ZjE4ODcxMDA3Y2U1MDRiZWI5MjI0NTljOTBlMWNhLi5lMzQ2MGY0MTVkMGI4
NjhiZGYzYzI5MjVmYzQzOGI1N2U3ZmY5MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpAQCAtNDEsMTAgKzQxLDEw
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2Nv
YS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2lt
cG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlT
ZW1hcGhvcmUuaD4KIApAQCAtMzA0LDcgKzMwNCw3IEBAIC0gKHZvaWQpX2NyZWF0ZVNoZWV0V2l0
aEVsZW1lbnRBY3Rpb25zOihOU0FycmF5ICopYWN0aW9ucyBzaG93TGlua1RpdGxlOihCT09MKXNo
CiAgICAgICAgIGlmIChpc0phdmFTY3JpcHRVUkwpCiAgICAgICAgICAgICB0aXRsZVN0cmluZyA9
IFdFQl9VSV9TVFJJTkdfS0VZKCJKYXZhU2NyaXB0IiwgIkphdmFTY3JpcHQgQWN0aW9uIFNoZWV0
IFRpdGxlIiwgIlRpdGxlIGZvciBhY3Rpb24gc2hlZXQgZm9yIEphdmFTY3JpcHQgbGluayIpOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV2ViQ29yZTo6dXNlclZp
c2libGVTdHJpbmcodGFyZ2V0VVJMKTsKKyAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV1RGOjp1
c2VyVmlzaWJsZVN0cmluZyh0YXJnZXRVUkwpOwogICAgICAgICAgICAgdGl0bGVJc1VSTCA9IFlF
UzsKICAgICAgICAgfQogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjAxYzRmNmEzYzU0
ZTk5YzcxNjU1NzhiYWU3MjJmMzhlY2I4ZTU4Yy4uNTMxNmJjM2QwNmM5MmE2ZTcyNzRkYjgxMmM0
YjljZjIxMTk1MTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04Nyw3ICs4Nyw2IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1w
b3J0IDxXZWJLaXQvV2ViU2VsZWN0aW9uUmVjdC5oPiAvLyBGSVhNRTogV0syIHNob3VsZCBub3Qg
aW5jbHVkZSBXZWJLaXQgaGVhZGVycyEKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmg+CkBAIC05OCw2ICs5Nyw3IEBACiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNp
bXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+Cisj
aW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC00ODk1LDkgKzQ4OTUsOSBA
QCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICop
YXNzaXN0YW50IG9wZW5FbGVtZW50QXRMbwogLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDoo
V0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXRoVVJMOihO
U1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAgaWYgKF90ZXh0U2Vs
ZWN0aW9uQXNzaXN0YW50KQotICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1No
YXJlU2hlZXRGb3I6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3Rd
OworICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6V1RG
Ojp1c2VyVmlzaWJsZVN0cmluZyh1cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CiAgICAgZWxz
ZSBpZiAoX3dlYlNlbGVjdGlvbkFzc2lzdGFudCkKLSAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Np
c3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpi
b3VuZGluZ1JlY3RdOworICAgICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVT
aGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0
XTsKIH0KIAogI2lmIEhBVkUoQVBQX0xJTktTKQpAQCAtNjE4Nyw3ICs2MTg3LDcgQEAgLSAoVUlW
aWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29u
dHJvbGxlcjooVUlQcmV2aWUKIAogICAgIE5TVVJMICp0YXJnZXRVUkwgPSBjb250cm9sbGVyLnBy
ZXZpZXdEYXRhW1VJUHJldmlld0RhdGFMaW5rXTsKICAgICBVUkwgY29yZVRhcmdldFVSTCA9IHRh
cmdldFVSTDsKLSAgICBib29sIGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdl
dFVSTC5pc0VtcHR5KCkgJiYgKFdlYkNvcmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29yZVRh
cmdldFVSTCkgfHwgV2ViQ29yZTo6cHJvdG9jb2xJcyhjb3JlVGFyZ2V0VVJMLCAiZGF0YSIpKTsK
KyAgICBib29sIGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0Vt
cHR5KCkgJiYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShjb3JlVGFyZ2V0VVJMKSB8fCBX
VEY6OnByb3RvY29sSXMoY29yZVRhcmdldFVSTCwgImRhdGEiKSk7CiAKICAgICBpZiAoW19wcmV2
aWV3SXRlbUNvbnRyb2xsZXIgdHlwZV0gPT0gVUlQcmV2aWV3SXRlbVR5cGVMaW5rKSB7CiAgICAg
ICAgIF9oaWdobGlnaHRMb25nUHJlc3NDYW5DbGljayA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXgg
YmRjYzU3MTBmYzdmNDk2NWYzYzk4ZGUxNzE2MTM1OWZhNzM1NzU4Mi4uNWFhY2M1ZWU5MDQ1YWFm
ZGMxNmEzNjM1YTFlYmY0MWE5MjRhNDQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC00MSwxMyArNDEs
MTMgQEAKICNpbXBvcnQgIl9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCIKICNp
bXBvcnQgIl9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBv
cnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogLy8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIK
ICNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CkBA
IC0xODQsNyArMTg0LDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVk
CiAKICAgICAgICAgaWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19j
YXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oW3JlcXVlc3QudmlldyBVSURlbGVnYXRlXSk7
CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNp
b25IYW5kbGVyOildKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJM
KFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CisgICAgICAgICAgICBVUkwg
cmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CiAgICAgICAgICAg
ICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQoKSwgKnJlcXVlc3Qub3JpZ2luLmdldCgpKSk7
CiAgICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
PiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUo
dWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6
YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwogICAgICAgICAgICAgV0tXZWJW
aWV3ICp2aWV3RnJvbVJlcXVlc3QgPSByZXF1ZXN0LnZpZXcuZ2V0KCk7CkBAIC0yMDAsOCArMjAw
LDggQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAgIGlm
IChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3Vs
ZFJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6aXNNYWluRnJhbWU6bWFpbkZy
YW1lVVJMOildKSB7CiAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1h
aW5GcmFtZSA9IHJlcXVlc3QuZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgICAgICAg
ICBib29sIGlzTWFpbkZyYW1lID0gcmVxdWVzdC5mcmFtZSA9PSBtYWluRnJhbWU7Ci0gICAgICAg
ICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0
LmZyYW1lLT51cmwoKSk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdl
YkNvcmU6OlVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCByZXF1ZXN0
RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCBt
YWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogICAgICAgICAgICAgcmVxdWly
ZXNVc2VyQXV0aG9yaXphdGlvbiA9IFt1aURlbGVnYXRlIF93ZWJWaWV3OnJlcXVlc3Qudmlldy5n
ZXQoKQogICAgICAgICAgICAgICAgICBzaG91bGRSZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0
aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzTWFpbkZyYW1lOmlzTWFpbkZyYW1lCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbQppbmRleCBkMzhmMzFjODE1ZjNj
OWYzZTk4ZGE1MmU1NGZiODg4ODRlZDBhNDMwLi5hZWEwZDZkMzlmNjJkNzFkOTY3NDQ2ZTY4MjI3
ZWJkN2YyODNhZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tM
ZWdhY3lQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2Fj
eVBERlZpZXcubW0KQEAgLTQzLDExICs0MywxMSBAQAogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZp
Y2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVO
U1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAK
IC8vIEFsbCBvZiBVSVBERlBhZ2UqIGFyZSBkZXByZWNhdGVkLCBzbyBqdXN0IGlnbm9yZSBkZXBy
ZWNhdGVkIGRlY2xhcmF0aW9ucwogLy8gaW4gdGhpcyBmaWxlIHVudGlsIHdlIHN3aXRjaCBvZmYg
dGhlbS4KQEAgLTc3OSw3ICs3NzksNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihX
S0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50QXRMbwogLSAodm9p
ZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFu
dCBzaGFyZUVsZW1lbnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdS
ZWN0CiB7CiAgICAgX3dlYlNlbGVjdGlvbkFzc2lzdGFudCA9IGFkb3B0TlMoW1tVSVdLU2VsZWN0
aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwotICAgIFtfd2ViU2VsZWN0
aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5n
KHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKKyAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFu
dCBzaG93U2hhcmVTaGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6
Ym91bmRpbmdSZWN0XTsKICAgICBfd2ViU2VsZWN0aW9uQXNzaXN0YW50ID0gbmlsOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBkZmY0YzZjYmYwMDMy
ZTE1NWNiY2I5MWYxM2FiZmIzZGMyMzQwMWVhLi5jZjRlOGE3MzMzNGZmNTdjMjZkY2YxNTJkMjM3
NGNhZThkYmNjZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQ
REZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0K
QEAgLTM4LDExICszOCwxMSBAQAogI2ltcG9ydCAiX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50
ZXJuYWwuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0
Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIEBp
bnRlcmZhY2UgV0tQREZWaWV3ICgpIDxQREZIb3N0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSwgV0tB
Y3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlPgogQGVuZApAQCAtNDk3LDcgKzQ5Nyw3IEBAIC0g
KHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Np
c3RhbnQgb3BlbkVsZW1lbnRBdExvCiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0Fj
dGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdGhVUkw6KE5TVVJM
ICopdXJsIHJlY3Q6KENHUmVjdClib3VuZGluZ1JlY3QKIHsKICAgICBhdXRvIHNlbGVjdGlvbkFz
c2lzdGFudCA9IGFkb3B0TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0
aFZpZXc6W19ob3N0Vmlld0NvbnRyb2xsZXIgdmlld11dKTsKLSAgICBbc2VsZWN0aW9uQXNzaXN0
YW50IHNob3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJv
bVJlY3Q6Ym91bmRpbmdSZWN0XTsKKyAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNo
ZWV0Rm9yOldURjo6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3Rd
OwogfQogCiAjaWYgSEFWRShBUFBfTElOS1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlcklPUy5tbQppbmRleCA0ZWRkOTRiZWJjZGRiNTA0MGIwMDk0ZmM0ODdhNTUy
NmU2OTI1MGZlLi4yNjU4YjM2M2I0MTFhM2JiZmI2ZDRkZDZkM2VkYTRkMWFhYjIxY2VlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KQEAgLTQ1LDEy
ICs0NSwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1N0cmluZ1NQ
SS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1VSTEZvcm1hdHRpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC05NDEs
NyArOTQxLDcgQEAgLSAodm9pZClfdXBkYXRlTG9jYXRpb25JbmZvCiAgICAgaWYgKExpbmtQcmVz
ZW50YXRpb25MaWJyYXJ5KCkpCiAgICAgICAgIGRvbWFpbiA9IFt1cmwgX2xwX3NpbXBsaWZpZWRE
aXNwbGF5U3RyaW5nXTsKICAgICBlbHNlCi0gICAgICAgIGRvbWFpbiA9IHVzZXJWaXNpYmxlU3Ry
aW5nKHVybCk7CisgICAgICAgIGRvbWFpbiA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsK
ICNlbmRpZgogCiAgICAgTlNTdHJpbmcgKnRleHQgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4
IDE3ZjY2YjcxNzc5YzA1NDljZjY4YWUyODE2NTgxOGE3MjlkNjYzZmUuLjlmNjc4NTg3NmU2OWM3
YjY0ZGQyMTAyODUwZTBmNTYwNGQ4ZTRiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0xMTMzLDcg
KzExMzMsNyBAQCBib29sIGRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IHNpemUsIFNlc3Npb25TdGF0ZSYgcwogICAgIH0KIAogICAgIGlmIChhdXRv
IHByb3Zpc2lvbmFsVVJMU3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzZXNzaW9uU3RhdGVEaWN0aW9uYXJ5LCBwcm92aXNpb25hbFVSTEtl
eSkpKSB7Ci0gICAgICAgIHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTCA9IFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgcHJvdmlzaW9uYWxVUkxTdHJpbmcpOworICAgICAgICBzZXNzaW9u
U3RhdGUucHJvdmlzaW9uYWxVUkwgPSBVUkwoVVJMKCksIHByb3Zpc2lvbmFsVVJMU3RyaW5nKTsK
ICAgICAgICAgaWYgKCFzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwuaXNWYWxpZCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGY4
NzIwNzA2NGM3YmU1MWVhZWJiMjdhMDMxZDQ5MDUxMTJiMzg4ZjQuLjRhYWZkZmYzZGVhOGNmOTQy
ZDAwYTQwYzdiNzRhN2YxM2M2YzZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzgsMTMg
KzM4LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQg
PFdlYkNvcmUvR2VvbWV0cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGlj
YXRvcldpbmRvdy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkv
bWFjL0RhdGFEZXRlY3RvcnNTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0xvb2t1cFNQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNNZW51U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21h
Yy9OU1BvcG92ZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL1F1aWNrTG9va01hY1NQSS5o
PgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIFNP
RlRfTElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6LCBRdWlja0xvb2tVSSkKIFNPRlRf
TElOS19DTEFTUyhRdWlja0xvb2tVSSwgUUxQcmV2aWV3TWVudUl0ZW0pCkBAIC0yNzYsMTcgKzI3
NiwxNyBAQCAtIChpZCA8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilfZGVm
YXVsdEFuaW1hdGlvbkNvbnRyb2xsZXIKIAogICAgIFN0cmluZyBhYnNvbHV0ZUxpbmtVUkwgPSBo
aXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBpZiAoIWFic29sdXRlTGlua1VS
TC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMoYWJzb2x1dGVM
aW5rVVJMLCAibWFpbHRvIikpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0
ZUxpbmtVUkwsICJtYWlsdG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVB
Y3Rpb25NYWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250
cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoV2Vi
Q29yZTo6cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJ0ZWwiKSkgeworICAgICAgICBpZiAo
V1RGOjpwcm90b2NvbElzKGFic29sdXRlTGlua1VSTCwgInRlbCIpKSB7CiAgICAgICAgICAgICBf
dHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvblRlbExpbms7CiAgICAgICAgICAgICByZXR1cm4gW3Nl
bGYgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rXTsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGFic29sdXRlTGlu
a1VSTCkpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0
ZUxpbmtVUkwpKSB7CiAgICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvbkxpbmtQ
cmV2aWV3OwogCiAgICAgICAgICAgICBRTFByZXZpZXdNZW51SXRlbSAqaXRlbSA9IFtOU01lbnVJ
dGVtIHN0YW5kYXJkUXVpY2tMb29rTWVudUl0ZW1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRl
eCAyMDlhODVkZWEzYjYzMGQyN2MxYzIxMjUxNTU2ZGNjMGM1YTgyYjk3Li41NTY5ZGYyZWE4NTVk
MTVjNWFlNDcxNDlhNTFhYjRjMmI0NjM3YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAt
MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXltZW50Q29vcmRpbmF0b3IuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6
b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgYwogICAg
IG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6T3Bl
blBheW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIHJlcGx5SUQpKTsK
IH0KIAotYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkoY29uc3QgV2Vi
Q29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxp
bmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qm
IHBheW1lbnRSZXF1ZXN0KQorYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50
VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29u
VVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1l
bnRSZXF1ZXN0KQogewogICAgIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5nczsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGxpbmtJY29uVVJMIDogbGlua0ljb25VUkxzKQpAQCAtMTg2LDcg
KzE4Niw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpwYXltZW50Q29vcmRpbmF0b3JE
ZXN0cm95ZWQoKQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVNZXJjaGFu
dChjb25zdCBTdHJpbmcmIHZhbGlkYXRpb25VUkxTdHJpbmcpCiB7Ci0gICAgcGF5bWVudENvb3Jk
aW5hdG9yKCkudmFsaWRhdGVNZXJjaGFudChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHZh
bGlkYXRpb25VUkxTdHJpbmcpKTsKKyAgICBwYXltZW50Q29vcmRpbmF0b3IoKS52YWxpZGF0ZU1l
cmNoYW50KFVSTChVUkwoKSwgdmFsaWRhdGlvblVSTFN0cmluZykpOwogfQogCiB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvcjo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25zdCBXZWJDb3JlOjpQYXlt
ZW50JiBwYXltZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IGU0ODg3Y2M4OGFiMWYxOWZiZGE5
OWYzYzBiMmM4YWVkMWRiM2EwNDQuLjAyMTJkNmFkYmJiOTA1MWZiMWJiNDY5NmQ1ZDlhODI5NTFh
ZjI0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgV2ViUGF5
bWVudENvb3JkaW5hdG9yIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRv
ckNsaWVudCwgcHIKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5bWVu
dFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRv
bWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9y
aWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBW
ZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlk
YXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBp
bmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRl
eCAzZjI3MTIzMmQ2M2U0YTRmNzc0NWVmMjhjNjRlYWU1NTM4YzRiN2I5Li43ZmU5MzM0YmE0ZjM1
OWM3MmIwZDkxZDU1NDJhNzE2NDQ2MmU2ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBA
IC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2
ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uCiAgICAgY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OkNhY2hlcyhtX3Nl
c3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwgdXBkYXRlQ291bnRlciksIDApOwog
fQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1Jl
dHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmV0cmlldmVSZWNvcmRzKG1fc2Vz
c2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1cmwpLCAwKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDQ4MGVkZGQ5YjRlNTE1YzRiNGFhZTZkNGM2ZDk0MjU4
ZmNiZTI1MmIuLmQyZTBkZjJkODYwOTIyYTNiMWUzNTZiZTkyMWU3ODAxOTg2ZGM3NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24g
ewogICAgIHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50
NjRfdCB1cGRhdGVDb3VudGVyKSBmaW5hbDsKIAotICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHMo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBV
UkwmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikgZmluYWw7CiAg
ICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3JkPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDUwNzEzMTNlYzYyNTMwN2M0MGI1
YjQwMTBmNzBjNjFjNzUwNDE1ZDcuLjlkNjFlOTFjZWFmYzAwNjE0OWU3MDMyYjg5ZWZmZmJmNWRh
MWM1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JS
ZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJl
Z2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxv
YlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
IHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
aAppbmRleCBiMDU0ODliOGEyM2JjNzkwYjk1ZTZlYzlmMGQ1YzgyZWQwOWY4NzNjLi5hNGM1ZjY4
NGFkNWYxNjM0N2IwNzA3OTE4NWY3N2E5YWI3YjAwYTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTMxLDEzICsz
MSwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJveHkgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2b2lkIHJl
Z2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdl
YkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVS
TChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJM
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOwotICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQ
YXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQs
IGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6
ZShjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmgKaW5kZXggMDhkZGJiZWE3MmJkZTdhNjg2Y2U3NWM0ZjRmYzk4NjhjNmFmYjQ4
OS4uODAxMmE4NGY0YzgzODg4MDI2MzY3MTkwNjBkNDg1NGE2NGYwNDBjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0z
Nyw3ICszNyw2IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTUsNyBAQCBjbGFzcyBQYWdlTG9h
ZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZp
cnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBBUEk6
Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktp
dDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JikgeyB9CkBAIC05Niw3ICs5NSw3IEBAIGNsYXNzIFBhZ2VMb2FkZXJDbGllbnQgewogICAg
IHZpcnR1YWwgdm9pZCBmZWF0dXJlc1VzZWRJblBhZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYpIHsgfQotICAgIHZpcnR1
YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50Rm9yVVJMKFdlYktpdDo6V2ViRnJhbWUmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmKSBjb25zdCB7IHJldHVybiBXVEY6OlN0cmluZygpOyB9CisgICAgdmlydHVh
bCBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViS2l0OjpXZWJGcmFtZSYsIGNvbnN0IFdU
Rjo6VVJMJikgY29uc3QgeyByZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQogCiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7IHJldHVy
biAwOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4IDRjMGM2YWVkMzg5
OWQ4YjI4N2NjMTEwZWIwNzk3NmZmMTRjNzFhZTMuLjA0NjBlYzYzZjA3OGFkZjVkY2VhYmMzMGVl
ODI3NjNjZDNmNTg1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTE3Miw3
ICsxNzIsNyBAQCBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUxheWVyVHJlZUFzVGV4dChX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmKQogCiBib29sIFdLQnVuZGxlRnJhbWVBbGxvd3NGb2xs
b3dpbmdMaW5rKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsK
LSAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICByZXR1cm4g
dG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhVUkwoVVJMKCksIHRvV1RGU3Ry
aW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1lSGFuZGxlc1BhZ2VTY2FsZUdl
c3R1cmUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKQEAgLTIxNywxMiArMjE3LDEyIEBAIGJv
b2wgV0tCdW5kbGVGcmFtZUdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWVSZWYsIGRvdWJsZSoKIAogV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlTdWdn
ZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVm
LCBXS1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFt
ZVJlZiktPnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKFdlYkNvcmU6OlVSTChX
ZWJDb3JlOjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKKyAgICByZXR1cm4gdG9Db3Bp
ZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhV
UkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBXS1N0cmluZ1JlZiBX
S0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEko
dG9JbXBsKGZyYW1lUmVmKS0+bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOworICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5taW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChVUkwo
VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVGcmFtZUNv
bnRhaW5zQW55Rm9ybUVsZW1lbnRzKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDA3ZDAyNDI0MzZiZDQxNDU4MDJjYjE1OWUzYjBkOTcw
MTRmM2EzMDguLjllOWEyYjFkNTI4NmUxNGZjNDQ2OGJjMTAwMmQ1YWE3NjY2MjVmNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02Niw5ICs2Niw5IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZW5kZXJMYXllckNvbXBvc2l0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaGVlbEV2ZW50
VGVzdFRyaWdnZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00MjUsNyArNDI1LDcg
QEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYsIFdLQnVuZGxlUGFnZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xvY2FsRGF0
YUZvclVSTChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAg
IHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICByZXR1cm4gdG9JbXBs
KHBhZ2VSZWYpLT5oYXNMb2NhbERhdGFGb3JVUkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxS
ZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVQYWdlQ2FuSGFuZGxlUmVxdWVzdChXS1VSTFJlcXVl
c3RSZWYgcmVxdWVzdFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9V
VEY4U3RyaW5nLmNwcAppbmRleCBiNWUxNjU3YTBkMjFmNmMxYzk3YmI5MDM4ZmQ0YTUwMTk5YmNm
MWFkLi43MTU3NDlhNDkyMzljMzFhYWI3ZmMxYWVkZDAyNjIzZTE0ZThhYWVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29u
dmVydFRvVVRGOFN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCkBAIC0yMSw3ICsy
MSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmlu
Zy5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCkBAIC0zNSw3ICszNSw3IEBAIGdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdURjo6
U3RyaW5nIGNvbnN0JiBzKQogICAgIHJldHVybiBnX3N0cmR1cChzLnV0ZjgoKS5kYXRhKCkpOwog
fQogCi1nY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpVUkwgY29uc3QmIHMpCitn
Y2hhciogY29udmVydFRvVVRGOFN0cmluZyhVUkwgY29uc3QmIHMpCiB7CiAgICAgcmV0dXJuIGNv
bnZlcnRUb1VURjhTdHJpbmcocy5zdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0
cmluZy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuaAppbmRleCBlNDk0MTEzYTNmOGZmNmU5YzRkYmU2OGFm
OWYxZDhhMmUyMjJmZWM5Li5jMzcyNTM1OWI4OTM0N2MxZjg4OTZhZGM1YmNhYjRiNmE0NDk2YzQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKQEAg
LTIzLDEzICsyMyw5IEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIHR5cGVkZWYgY2hhciBnY2hhcjsKIAogZ2NoYXIq
IGNvbnZlcnRUb1VURjhTdHJpbmcoV1RGOjpTdHJpbmcgY29uc3QmIHMpOwotZ2NoYXIqIGNvbnZl
cnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6VVJMIGNvbnN0JiBzKTsKK2djaGFyKiBjb252ZXJ0VG9V
VEY4U3RyaW5nKFVSTCBjb25zdCYgcyk7CiAKICNlbmRpZiAvKiBDb252ZXJ0VG9VVEY4U3RyaW5n
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXgg
MWJiMGJhMTYwMzcyOGJjMmZjOTI0OTdhY2IwMTM2YmI5OTkwNTcyYi4uMDgzMTc0ZTVlZDIxZjk4
Mzk3M2IyNmM3ZDdjOGM0ODhlMTAyYzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaAppbmRleCA0OTM1NjYxZWUyNDg4ZjYzODAxNGU4NjlkZDhmMTEyMDlhNDhiODEwLi4wMWRk
OTkwNzljYjU0ZmI2MzM1ZWNmYTNlMzczMzVlZTFiNjViZjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNCw3ICszNCw2IEBACiBuYW1lc3Bh
Y2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIGNsYXNzIFN0cmluZzsKLWNsYXNzIFVSTDsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2U+
IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjAsIFdL
QnVuZGxlUGFnZUxvYWRlckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMiwgV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50VjMsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY0LCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnRWNSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjYsIFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudFY3LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWOCwgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Vjk+IFZlcnNpb25zOwpAQCAtNDgsNyArNDcsNyBAQCBjbGFzcyBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZQogICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudChjb25zdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKik7CiAKICAgICB2b2lkIHdp
bGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3Qo
V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbExvYWRE
YXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3Vs
ZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2UmLCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0
cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKQEAgLTg3LDcgKzg2LDcgQEAgY2xhc3MgSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFn
ZUxvYWRlckNsaWUKIAogICAgIHZvaWQgZmVhdHVyZXNVc2VkSW5QYWdlKFdlYlBhZ2UmLCBjb25z
dCBWZWN0b3I8V1RGOjpTdHJpbmc+Jikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0cmluZyB1c2Vy
QWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25zdCBVUkwm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0
TWlsZXN0b25lcygpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggZTJhNjk3OGZlMjgzYWQ1M2MzNDhiZjA3MDdhYjY4ZGY3ZDk2MjM2Mi4u
OTAzYzZkMDEyYzFkYjI4OGZiYTIzOGI1NzhiZDA2NTYzNDQ4ZDgxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAxMjc4YzFiNDQzZmFkN2JmYTcxZjEw
ZjJiNGYyODY4NmI2ZTAzNDRmLi42NWNmNDIzYWIxNjgyNzI1YWZkOTRhMzE0YmUxNDdiODNlYTlm
MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBSZXNv
dXJjZUUKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlcnJvciksIFdURk1vdmUo
cmVzcG9uc2UpKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKEZy
YW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVj
dENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3Qg
cHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnMuYWRkKHByZWNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApp
bmRleCBlMDQwZDA3NTVjNzk0ZGJkNzFlYTljNTU4ODQyYTA2NWM1MmRmNWRlLi4xYzJmYjNmMTFl
NDVlM2I3ZWE4ODI5NjNmYTFjYTA5M2Q4ZTZlMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTU1LDcgKzU1LDcg
QEAgY2xhc3MgV2ViTG9hZGVyU3RyYXRlZ3kgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVy
U3RyYXRlZ3kgewogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBm
aW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIm
LCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpIGZp
bmFsOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyKiwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCkgZmluYWw7CiAgICAgCiAgICAgdm9p
ZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5p
bXVtUHJpb3JpdHkpIGZpbmFsOwogCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYkxvYWRlclN0
cmF0ZWd5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKICAgICB2b2lk
IHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBj
b25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVj
b25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBwcmVjb25uZWN0VG8o
V2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0
YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiBib2R5SGFzaCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQ
cm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJv
dmlkZXIuaAppbmRleCAwMjQ0ZTVmMmM4ODYyMDUzMTc2OTllY2ZkMWUxYTFiMjNjN2ZkOTk4Li42
OWI3ZmEzYjQxNmY0ZWYzOTZhZWFkZTRjMTIwODRiYjM1MmIxMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgKQEAgLTMy
LDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTb2NrZXRQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxXZWJTb2NrZXRQcm92aWRlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJTb2NrZXRQcm92aWRlcik7IH0KLSAgICBSZWY8V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlPiBjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbikgZmluYWw7CisgICAgUmVmPFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGNyZWRlbnRpYWxQYXJ0aXRpb24pIGZpbmFsOwogICAgIHZpcnR1YWwgfldlYlNvY2tldFByb3Zp
ZGVyKCkgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCA3YTBiOWUzMTJlYjk5ZDQ3YWM1MmRlZTlkZTRh
YTY4ZWFmNTRkNzQ3Li4xZDVlMjI5YWMyM2RhMzA4N2U0NmQ5MzU1NjVhYWE0ZDY3YjVhMDI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmPFdlYlNvY2tldFN0cmVhbT4gV2ViU29ja2V0
U3RyZWFtOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUMKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRTdHJlYW0odXJsLCBjbGllbnQsIHNlc3Npb25J
RCwgY3JlZGVudGlhbFBhcnRpdGlvbikpOwogfQogCi1XZWJTb2NrZXRTdHJlYW06OldlYlNvY2tl
dFN0cmVhbShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBjYWNoZVBhcnRpdGlvbikKK1dlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0
IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKQogICAg
IDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uaAppbmRleCAzZmViNmE2MzVmZmU5ZTc5MjMxZDMyYjUxYzYzZmI3Mjg3N2Q5OWUzLi4z
ODlhMGI5OGI3NTk4Y2M2NjhiZThkYjQ1ZjE3MTFiOGZlOGY3NzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAtNDUsNyAr
NDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0U3RyZWFtIDogcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJs
aWMgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlLCBwdWJsaWMgSWRlbnRpZmllZDxXZWJTb2Nr
ZXRTdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNvY2tldFN0cmVhbT4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOwor
ICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0U3RyZWFtPiBjcmVhdGUoY29uc3QgVVJMJiwgV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1Byb2Nlc3ND
cmFzaGVkKCk7CiAgICAgc3RhdGljIFdlYlNvY2tldFN0cmVhbSogc3RyZWFtV2l0aElkZW50aWZp
ZXIodWludDY0X3QpOwogICAgIApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBXZWJTb2NrZXRTdHJl
YW0gOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIsCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFs
OwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CiAKLSAg
ICBXZWJTb2NrZXRTdHJlYW0oY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlh
bFBhcnRpdGlvbik7CisgICAgV2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNy
ZWRlbnRpYWxQYXJ0aXRpb24pOwogICAgIH5XZWJTb2NrZXRTdHJlYW0oKTsKIAogICAgIHNpemVf
dCBtX2J1ZmZlcmVkQW1vdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDAw
M2QyN2ExMDE4Nzk4ODlkYWE2NmZhYTBjNmQ5OTNlOTE2MGUxMGYuLmM2YTUwNjkxNzQwYTVkYjNl
NjVmMTk3NTcxYjdiZDQwMDViYjcxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM4
LDggKzM4LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJNYXAuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgUExVR0lOX0FS
Q0hJVEVDVFVSRShVTklYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggYmNiM2Q3ZmI3NzdkMTMx
YzdmMjQ3NmY2NWIxNTJmMDQzOTAxNDZkNy4uNzRhODRlOTI3Y2Y1YTdkZjYyMjM2Y2Y0YTliZmZi
OTU1MTIzOWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0xMzksNyArMTM5LDcgQEAgY2xh
c3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJsaWMgUGx1Z2luIHsKIAogICAgIHZvaWQgc2V0SXNQbGF5
aW5nQXVkaW8oYm9vbCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyUmVkaXJlY3QoTmV0c2NhcGVQbHVn
aW5TdHJlYW0qLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGludCByZWRpcmVjdFJl
c3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKKyAgICB2b2lkIHJlZ2lzdGVy
UmVkaXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGlu
dCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKICAgICB2
b2lkIHVybFJlZGlyZWN0UmVzcG9uc2Uodm9pZCogbm90aWZ5RGF0YSwgYm9vbCBhbGxvdyk7CiAK
ICAgICAvLyBNZW1iZXIgZnVuY3Rpb25zIGZvciBjYWxsaW5nIGludG8gdGhlIHBsdWctaW4uCkBA
IC0yMDQsMTMgKzIwNCwxMyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1YmxpYyBQbHVnaW4g
ewogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdh
c0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgaW50IHJl
c3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLAorICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VV
UkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Ry
ZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKKyAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0
cmVhbS5oCmluZGV4IDQwNzQwNzhkN2E4ZmI1MzhjZmY0N2RjMWFkYTRmOWQyMGI3MGQyMmYuLmJi
NmE1YjA4YzdjY2U1ZGRlZDg5OTM2MGY3YWI4MzQwZjAzOTVlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgVVJMOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQ
bHVnaW47CkBAIC01NSw4ICs1MSw4IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luU3RyZWFtIDogcHVi
bGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHsKICAgICB1aW50NjRfdCBzdHJl
YW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtSUQ7IH0KICAgICBjb25zdCBOUFN0cmVhbSog
bnBTdHJlYW0oKSBjb25zdCB7IHJldHVybiAmbV9ucFN0cmVhbTsgfQogCi0gICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29u
c3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCBy
ZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaAppbmRleCBlNThkZTJjNzYwZGRiMTRjMTJjNGNiZmJmNzVjZTkyZjVhYjhlMDFhLi42ODYy
ZTMwNGZlZGI4NWI3ODYzNDcwMGI5ZDZiMzVhNmMzYzIwY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xMzUsMTIgKzEzNSwx
MiBAQCBjbGFzcyBQREZQbHVnaW4gZmluYWwgOiBwdWJsaWMgUGx1Z2luLCBwcml2YXRlIFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhIHsKICAgICB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCByZXF1ZXN0SUQpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIHZvaWQgZGlkRXZhbHVhdGVK
YXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFs
OwotICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VV
UkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9Ci0gICAgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9u
c2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVx
dWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQorICAgIHZvaWQgc3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIGZp
bmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkg
ZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdh
c0NhbmNlbGxlZCkgZmluYWw7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJp
bmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwogICAg
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIGZp
bmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgZmlu
YWw7CkBAIC0zMDYsNyArMzA2LDcgQEAgY2xhc3MgUERGUGx1Z2luIGZpbmFsIDogcHVibGljIFBs
dWdpbiwgcHJpdmF0ZSBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSB7CiAKICAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNvcmU6OlVSTCBtX3NvdXJjZVVSTDsKKyAgICBVUkwg
bV9zb3VyY2VVUkw7CiAKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKICAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNzFiOGNmODMzNDNjNmNmODUy
YTBkMDk3MjgzOGRmZmFkMjcwNmM4YS4uZTRjZDY1MzU2MTE2MjQ2YmZhNjhmNzRiMTZiNDMxNTY4
ZDc5NzViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCkBAIC0xNzAyLDcgKzE3MDIsNyBAQCBib29sIFBERlBsdWdpbjo6aGFuZGxl
c1BhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiB2b2lkIFBERlBsdWdpbjo6Y2xpY2tlZExpbmsoTlNV
UkwgKnVybCkKIHsKICAgICBVUkwgY29yZVVSTCA9IHVybDsKLSAgICBpZiAocHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29yZVVSTCkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29y
ZVVSTCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHdlYkZyYW1lKCkt
PmNvcmVGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApp
bmRleCA4NzZmNmNlNDhlY2NiNjA2MzM5NDc2YTY2NjFmMjZmNGY5MGFhNDcyLi5hYWJkNWU1MDUx
YmVjMjlmNTUxMTU3MzgwNjFhNmE2MDhlZjIzMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjMsMTYgKzIzLDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbHVnaW5faAotI2RlZmluZSBQbHVn
aW5faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTUzLDE1ICs1MiwxNSBAQCBjbGFzcyBE
ZWNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgQWZmaW5lVHJhbnNm
b3JtOwotICAgIGNsYXNzIEZsb2F0UG9pbnQ7Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0Owot
ICAgIGNsYXNzIEludFBvaW50OwotICAgIGNsYXNzIEludFJlY3Q7Ci0gICAgY2xhc3MgSW50U2l6
ZTsKLSAgICBjbGFzcyBGbG9hdFBvaW50OwotICAgIGNsYXNzIFNjcm9sbGJhcjsKLSAgICBjbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBGbG9hdFBvaW50
OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRSZWN0
OworY2xhc3MgSW50U2l6ZTsKK2NsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBTY3JvbGxiYXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODEs
NyBAQCBlbnVtIFBsdWdpblR5cGUgewogY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFBsdWdpbj4gewogcHVibGljOgogICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKLSAg
ICAgICAgV2ViQ29yZTo6VVJMIHVybDsKKyAgICAgICAgVVJMIHVybDsKICAgICAgICAgVmVjdG9y
PFN0cmluZz4gbmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlczsKICAgICAgICAg
U3RyaW5nIG1pbWVUeXBlOwpAQCAtMTY3LDEwICsxNjYsMTAgQEAgY2xhc3MgUGx1Z2luIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogICAgIHZpcnR1YWwgdm9pZCBkaWRF
dmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3Vs
dCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBtYXkgc2Vu
ZCBhbiBIVFRQIHJlcXVlc3QuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVz
dCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXNDb2RlKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVz
cG9uc2VTdGF0dXNDb2RlKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEg
c3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVS
TCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQg
YSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE4Myw3ICsxODIsNyBAQCBjbGFzcyBQbHVn
aW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7CiAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSA9
IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGhh
cyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwgCisgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5n
dGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAg
ICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGRpZCByZWNlaXZl
IGRhdGEuCkBAIC0zMjMsNSArMzIyLDMgQEAgY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFBsdWdpbj4gewogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJL
aXQ6OlRvVmFsdWVUeXBlTmFtZSkgXAogc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYktpdDo6
UGx1Z2luJiBwbHVnaW4pIHsgcmV0dXJuIHBsdWdpbi50eXBlKCkgPT0gV2ViS2l0OjpTcGVjaWZp
Y1BsdWdpblR5cGU7IH0gXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYg
Ly8gUGx1Z2luX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbkNvbnRyb2xsZXIuaAppbmRleCBhNWM2ZmEwNDNjMzYyMjY5NDFjOGQyMTQ3YjIxMjA4ZWMy
ZjI5NDc1Li5hMWY4MDdlMWU1NTA3MjNlZmVlYTE3NzEzM2I4MWRmZjRkMTc2YjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5o
CkBAIC00Myw3ICs0Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEhUVFBIZWFkZXJN
YXA7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwotY2xhc3MgVVJMOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGRjNDIxMWQwMGVkODkxMGQzNDdkOGYwY2ExYjc1M2M2
YjJlNmVhMWQuLmU2YWIzZWQ5YjAzMmZlMDRjMDJkZjVjNjg5MmU0N2Q0ZTY5ZDRhYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtODcs
MTIgKzg3LDEyIEBAIGNsYXNzIFBsdWdpblByb3h5IDogcHVibGljIFBsdWdpbiB7CiAgICAgdm9p
ZCBmcmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKICAg
ICB2b2lkIGZyYW1lRGlkRmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVk
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbVdp
bGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1
ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0
dXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJl
YW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50
IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qg
c3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZU5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2
b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxs
ZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKICAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmco
KSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxs
ZWQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCBmMDc1MmJkOTgyYTE1M2JhZDRiMjkyNDVmMTAzMjE5NzBlYjNhYzkx
Li4zY2FhYWM5YWMxY2QzZGJkNmJmNDZmZWM1ZDcxZjE0MWRmNDViMzk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE2Myw3ICsx
MTYzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiBy
ZXF1ZXN0KQogICAgIFJlZjxQbHVnaW5WaWV3PiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIC8vIEZp
cnN0LCBjaGVjayBpZiB0aGlzIGlzIGEgamF2YXNjcmlwdDogdXJsLgotICAgIGlmIChwcm90b2Nv
bElzSmF2YVNjcmlwdChyZXF1ZXN0LT5yZXF1ZXN0KCkudXJsKCkpKSB7CisgICAgaWYgKFdURjo6
cHJvdG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVybCgpKSkgewogICAgICAg
ICBwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1GcmFt
ZUxvYWRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAKIHZvaWQgUGx1Z2luVmlldzo6
cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAg
QVNTRVJUKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwoKSkpOwor
ICAgIEFTU0VSVChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51
cmwoKSkpOwogCiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fcGx1Z2luRWxlbWVudC0+ZG9j
dW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRl
eCA1YzUxYzQ1ZjY0MDlkZWVkZDU1ZTkzYzBmZDk4OGI3Yzg3M2Q4MzFhLi4zZjcwYjFlODdiOWFm
ZThmM2YwNjVhNDE5Y2NkYjk1MmNlZmZjZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTEx
NSw3ICsxMTUsNyBAQCBWZWN0b3I8UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpw
bHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIHN0ZDo6b3B0aW9uYWw8VgogI2VuZGlmIC8vIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogfQogCi1WZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQYWdlJiBwYWdlLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCkKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVn
aW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIGNvbnN0IFVS
TCYgdXJsKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBs
dWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKICAgICBhdXRvIHBs
dWdpbnMgPSBwbHVnaW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Q
cm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmgKaW5kZXggMWJiYWQ1YTc5ZmIxMWVjNjgwNzQ5NDdkMDA3YzNjZDU2ZTU4MTlk
ZC4uODQ2NDJkN2ZjMDExZjhjYWNmNjQxYmIxYWVlOGYyODIzOTNjMDdlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiAgICAgV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyKCk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2luSW5m
byhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbklu
Zm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpV
UkwmKSBmaW5hbDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBs
dWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQgcmVm
cmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uaAppbmRleCAyYmZhZWU0NzZlMWY0YmNjY2RiMjY2MGZlNWQ4ZTY2YmQ2
NzRhM2Q3Li5kY2Q2ZGE1ODA2YmIzMzJjMjRmZmVjODUxOGVlNTA5NmNiYWU3ZjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaApAQCAtNzksMTMgKzc5LDEzIEBAIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlv
biBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24sIHB1YmxpYyBJCiAg
ICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGEmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyPiYpIGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIHZvaWQgbWF0
Y2hSZWdpc3RyYXRpb24oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRpb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IG1hdGNo
UmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGE+JiYpOwogICAgIHZvaWQgZGlkR2V0UmVnaXN0cmF0aW9ucyh1aW50NjRf
dCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGE+JiYpOwotICAgIHZvaWQgd2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Y2xpZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIHdoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCBjYWxs
YmFja0lELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKTsKIAotICAg
IHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BP
cmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRpb25zQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdldFJlZ2lz
dHJhdGlvbnNDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJh
dGlvblByb21pc2UoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYp
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBlODczZmZmZDJh
OGM3MDFhZTg2OTA1Y2U5ZTU3MDRmMWE3YjljOWI0Li5kOTc5NDY5OWM5MWRjNWQ3NTZkYzMzYmRi
MjU0NWM1ZjVkYzA0MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTcy
LDcgKzcyLDcgQEAgY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q28KICAgICB2b2lkIG1hdGNoQWxsKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHNNYXRj
aEFsbENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xhaW0oV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAg
dm9pZCBza2lwV2FpdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgRnVuY3Rp
b248dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgZmluYWw7Cisg
ICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJ
bXBvcnRlZFNjcmlwdCYpIGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQg
c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5oCmluZGV4IDAzNzAxMDZlOTJmMWZiMmE0YWJkODUxMTE2YzcyNjJm
ZTQ1NDAwZmIuLjYyNmY2MWE1MGE2NDU5ZDQ5NTY3ZDY4YmZlY2JhODc3YmJhNmFiOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTU3LDEwICs1NywxMCBAQCBjbGFzcyBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VXNlckNvbnRlbnRQ
cm92aWRlciwgcHJpdgogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRp
ZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0
KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYpOwotICAg
IHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IFVSTCYpOwogICAgIHZvaWQgcmVtb3Zl
VXNlclNjcmlwdHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAgIHZvaWQgYWRkVXNl
clN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdlYkNvcmU6OlVzZXJTdHls
ZVNoZWV0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRXaXRoVVJMKEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlbW92
ZVVzZXJTdHlsZVNoZWV0V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3Qg
VVJMJik7CiAgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldHMoSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAppbmRleCBmOTM2NjdhZTQ4ZTlkNzgxZjMyZjI2YTEwYTNhNTJmN2NmYThjMzE2
Li41YTQ2ZWY4MDdkNzAxNzNlOWZjMTgzMzI3ZDc2MWJmYjI1Y2M4ZDU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVu
d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwK
IAogI2VuZGlmCiAKLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxl
bmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJDaHJv
bWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkg
Y29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwg
Y2hhbGxlbmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS5wYWdlSUQoKSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMDk0OGY2N2FiZWMxNGQ4NGU2ZGY1NTY0MjcxZWQ2ZTEz
ZDk0MjRjZS4uM2ZlZTBjYjAxYjM2ZGI4NmY2ZjNhZjAzOTNjYWEzYTE1ZjM1ZDAyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaApAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVudCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIHZvaWQgc2NoZWR1bGVD
b21wb3NpdGluZ0xheWVyRmx1c2goKSBmaW5hbDsKICAgICBib29sIGFkanVzdExheWVyRmx1c2hU
aHJvdHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFncykgZmluYWw7
CiAKLSAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgZmluYWw7Cisg
ICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJMJiwgY29uc3QgSGFz
aFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIGZpbmFsOwogCiAjaWYgUExBVEZPUk0o
V0lOKQogICAgIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpIGZpbmFsIHsg
fQpAQCAtMzI1LDcgKzMyNSw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IGZpbmFsOwogI2VuZGlm
CiAKLSAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVk
IGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5n
ZVN0cmluZywgY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAKICNpZiBFTkFCTEUoVEVMRVBIT05F
X05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGhhbmRsZVRlbGVw
aG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBjZWMzMTQyYjE2
ZTM1ZDAwMmNmYzhjNDJmNGU3ODFiODJlYmU4NThjLi41ZDhlN2Q2ZDBmYTUxYTEwNTFkODBjYTE3
NjZlZTM3N2ZiY2YzY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNDQsNyAr
NDQsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250
ZXh0TWVudUNsaWVudCB7CiBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQo
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwog
ICAgIGJvb2wgaXNTcGVha2luZygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggOWY3ZDdm
YzUwYjZlYzhhZWU1NmJiMjU5YjczMzQwYzQwZDkzNjcyNy4uMWFkNGMzZGUyY2I3ZDM4ZTYyNjJj
MTk3YWFiMjRjY2E2ZmVkYTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNs
YXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAgICAgdm9p
ZCBkaWRDb25jbHVkZUVkaXREcmFnKCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3Ry
aW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsK
ICNlbmRpZgogCiAgICAgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYzIzNTM5NTM1MzJiMDc3NzAyMjA1
NzNmMmRmMzZiOGNjMzY2ZjdhYy4uY2E5ZTYzN2JjNTk3ZWE2MjlhMTZmMjA3MTBhNDRiNWYxNGUz
NWFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNzk2LDcgKzE3OTYs
NyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd1NjcmlwdChib29sIGVuYWJsZWRQ
ZXJTZXR0aW5ncykKICAgICByZXR1cm4gIXBsdWdpblZpZXcgfHwgIXBsdWdpblZpZXctPnNob3Vs
ZEFsbG93U2NyaXB0aW5nKCk7CiB9CiAKLWJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3Vs
ZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
KQorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NG
cm9tTG9jYWxVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IGMxYjljZDBmOTQzMzI3OWNkZDg0YzBjOTVmYTgxYjk4NGU1ZjU0ZTguLjNjNzE2
Njg1MGIyNTE1NjZkNWU0NDBlZTNmNTkzN2NiOWNjZjcwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC05NywxMyArOTcsMTMgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKmRldGVjdGlvblJlc3VsdHMpIGZp
bmFsOwogI2VuZGlmCiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZU1haW5Eb2N1bWVudCgpIGZp
bmFsOwotICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgV2ViQ29yZTo6
VVJMJiBjdXJyZW50VXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG5ld1VybCkgZmluYWw7CisgICAg
dm9pZCBkaXNwYXRjaFdpbGxDaGFuZ2VEb2N1bWVudChjb25zdCBVUkwmIGN1cnJlbnRVcmwsIGNv
bnN0IFVSTCYgbmV3VXJsKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWREaXNwYXRjaE9u
bG9hZEV2ZW50cygpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlUHJvdmlzaW9uYWxVUkwoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3QoKSBmaW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZp
cmVEYXRlKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dChjb25zdCBVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZpcmVEYXRlKSBmaW5hbDsK
ICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgZmluYWw7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKICAgICB2b2lk
IGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOwpAQCAtMTU1LDggKzE1
NSw4IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJD
b3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50KCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJl
UGFnZSkgZmluYWw7CisgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERldGVjdFhTUyhj
b25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7CiAKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIGZpbmFsOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOwpAQCAtMTg5LDkgKzE4OSw5IEBA
IGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50IHsKICAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVu
dExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIGZpbmFsOwogCi0gICAgdm9pZCBzZXRU
aXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
VVJMJikgZmluYWw7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRo
RGlyZWN0aW9uJiwgY29uc3QgVVJMJikgZmluYWw7CiAgICAgCi0gICAgU3RyaW5nIHVzZXJBZ2Vu
dChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0
IFVSTCYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
KCkgY29uc3QgZmluYWw7CiAKQEAgLTIxMCwyMCArMjEwLDIwIEBAIGNsYXNzIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAg
ICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3Jl
YXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3Jl
OjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50
IG1hcmdpbkhlaWdodCkgZmluYWw7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVh
dGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJv
b2wgbG9hZE1hbnVhbGx5KSBmaW5hbDsKICAgICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6
OldpZGdldCopIGZpbmFsOwogICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6
V2lkZ2V0JikgZmluYWw7CiAgICAgCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25z
dCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5
Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsK
KyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNv
bnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6
VVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJD
b3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykg
ZmluYWw7CiAgICAgCi0gICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVu
dFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7
CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CiAgICAgU3RyaW5nIG92ZXJyaWRl
TWVkaWFUeXBlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIGZpbmFsOwpAQCAtMjQ5
LDcgKzI0OSw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKIAogICAgIGJvb2wgYWxsb3dTY3JpcHQoYm9vbCBl
bmFibGVkUGVyU2V0dGluZ3MpIGZpbmFsOwogCi0gICAgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNh
bEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBib29s
IHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFVSTCYpIGZpbmFs
OwogCiAgICAgUmVmPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdv
cmtpbmdDb250ZXh0KCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
aW5kZXggZTk3NzNlYTc4MGEzMzJhZTU5ZjAyNzhhZTgzYTMwNzZkZDI3OTc2ZS4uMWQzZWVlNzk4
M2NlZWMyMTEwYzJmODU3YTMyYjRlZTVjNmUxZjI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKQEAgLTYwLDkgKzYwLDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRl
SW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFjZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3ViZnJhbWVMb2FkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTdHJpbmdVdGls
aXRpZXMuaCIKQEAgLTM2NCw3ICszNjQsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbgogICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+
KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitVUkwgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyB1cmxTdHJp
bmc7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0
ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDZlZWMwOWIxZWQyMmI5YWQwNjhlM2Y2
OTI0YjU5MjU3NDUxNWQxNDYuLjc2YTgxMGFmZDNlMGZmNTA3OTNiNWRmMTVjZWVjODNhMjRhMTRh
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ3LDEzICs0NywxMyBAQCBj
bGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJh
dGVnaWVzLCBwcml2YXRlIFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRl
QmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRl
Z3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBz
ZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVDb29r
aWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6
OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kK
ICNpZiBQTEFURk9STShJT1MpCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2Vi
Q29yCiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBX
ZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRV
UkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
cyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAg
ICAgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9y
IGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNv
cmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAg
VVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAogICAgIGxv
bmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCAzYmQ3
ZDFmYmIzOGNiMjA5YWZkYjcxZGViMThiOWQ5MWVkZDkxMzBmLi5hZTU5NTJkMDhlNjQ5NzYxNjBj
OGEzNDQ5NGI0YWQ2MGJhYTk3MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBA
IC00OCw4ICs0OCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUmVuZGVySW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3RyaW5nVHJ1bmNhdG9y
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNp
ZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtMTI5LDcgKzEyOSw3IEBA
IHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkgewogICAg
ICAgICB0aXRsZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAodGl0bGUu
aXNFbXB0eSgpKQotICAgICAgICAgICAgdGl0bGUgPSB1c2VyVmlzaWJsZVN0cmluZygoTlNVUkwg
Kil1cmwpOworICAgICAgICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7
CiAgICAgfQogCiAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoZWxlbWVudCk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJE
cmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgRWxlbWUKICAgICAgICAgICAgIGZpbGVuYW1lID0gZG93bmxvYWRGaWxlbmFtZTsK
ICAgICB9CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIGltYWdlSGFuZGxlLCBpbWFnZVNpemUs
IGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCBTdHJpbmcoW1tyZXNwb25zZSBVUkxdIGFic29s
dXRlU3RyaW5nXSksIHVzZXJWaXNpYmxlU3RyaW5nKChOU1VSTCAqKXVybCksIGFyY2hpdmVIYW5k
bGUsIGFyY2hpdmVTaXplKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBpbWFnZUhhbmRsZSwg
aW1hZ2VTaXplLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgU3RyaW5nKFtbcmVzcG9uc2Ug
VVJMXSBhYnNvbHV0ZVN0cmluZ10pLCBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCksIGFyY2hp
dmVIYW5kbGUsIGFyY2hpdmVTaXplKSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDFmOTBjNGE1NzQwZjQxNTA5ZDhl
ODViMTlkNGEwN2U4MDA0M2EyNTQuLjNkMWZmODQ5MDMxMTExMTUxY2EyZTg3YzhjNGU3MDdjMmYx
MzM5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC00MCw3ICs0MCw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJk
RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlci5oCmluZGV4IDA5MjNlNDYwOTU5YjBmMzRhOTQyZWQ5MjRmMDQ0
YzUzZjg0YzMzZTYuLjE3ZmE4ZWNjYTc4YmE4YWMyNzY4MTY1M2E3ZDJlN2ZkZDcwZmUyNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBWaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
b3JlICwgcHJpdgogICAgIGV4cGxpY2l0IFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyKHVpbnQ2
NF90IGlkZW50aWZpZXIpOwogCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZS4KLSAg
ICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmlu
Z0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBh
dHRyaWJ1dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQ
YWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25z
dCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNp
dGVkTGluayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAyNTYwNzY5ZmJlNGI1YjM3YzEyZDJl
N2UxODQyZDAxYzNlOTE0NGVmLi5jMzI4OTdiM2I4ZTJiNWMxNjkyNGVlOWUzMDI0NDY2NDY5MGMy
NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CkBAIC01MDksNyArNTA5LDcgQEAgdW5zaWduZWQgV2ViRnJhbWU6OnBlbmRpbmdVbmxvYWRDb3Vu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKLWJvb2wgV2ViRnJhbWU6OmFs
bG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0Citib29sIFdl
YkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAg
IGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggMmUwM2YyYmQ1NTYyNTQ0ZDY3OGYx
YTgzYTk1MzhjY2ZlNGEzNDY4Yi4uZWI4MTM2YWI3NzEwYTRlZDEzMGU2Nzk4MDFiOTUwZDllY2E1
OGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBA
IC01Myw3ICs1Myw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50
OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgVVJMOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTEwNiw3ICsxMDUsNyBAQCBjbGFzcyBXZWJGcmFtZSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUZyYW1lPiB7CiAgICAg
Ly8gV0tCdW5kbGVGcmFtZSBBUEkgYW5kIFNQSSBmdW5jdGlvbnMKICAgICBib29sIGlzTWFpbkZy
YW1lKCkgY29uc3Q7CiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBXZWJDb3JlOjpVUkwg
dXJsKCkgY29uc3Q7CisgICAgVVJMIHVybCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKICAgICBTdHJpbmcgaW5uZXJUZXh0KCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3Q7CkBAIC0xNDEsMTEgKzE0MCwxMSBA
QCBjbGFzcyBXZWJGcmFtZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OkJ1bmRsZUZyYW1lPiB7CiAgICAgCiAgICAgdW5zaWduZWQgcGVuZGluZ1VubG9hZENvdW50
KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBhbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgYWxsb3dzRm9sbG93aW5nTGluayhjb25zdCBVUkwm
KSBjb25zdDsKIAogICAgIFN0cmluZyBwcm92aXNpb25hbFVSTCgpIGNvbnN0OwotICAgIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJDb3JlOjpVUkwm
KSBjb25zdDsKLSAgICBTdHJpbmcgbWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3Vy
Y2VXaXRoVVJMKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIFN0cmluZyBtaW1lVHlwZUZvclJlc291
cmNlV2l0aFVSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4dERpcmVjdGlv
bihjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCAyMmI4MDkwMTEyOTc2MjgwZGIzZmVmMjE4OGUyZTdiOGFiZWQ5NGQ5
Li4wMjk1NjA1YTE0ZDgzYjllOWY5ODZmZGI4ZDY0NGI1M2RlNzI5N2QyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTI1Nyw3ICsxMjU3LDcg
QEAgdm9pZCBXZWJQYWdlOjpzZW5kQ2xvc2UoKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q2xvc2VQYWdlKGZhbHNlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFVSTEluRnJh
bWUoV2ViQ29yZTo6VVJMJiYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJQYWdlOjps
b2FkVVJMSW5GcmFtZShVUkwmJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViRnJh
bWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAg
ICAgaWYgKCFmcmFtZSkKQEAgLTEzMjAsNyArMTMyMCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERh
dGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBwbGF0Zm9ybURpZFJlY2Vp
dmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxv
YWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwot
ICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkg
PyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsK
KyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgp
ID8gV1RGOjpibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3Ry
aW5nKTsKICAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBXVEZN
b3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVy
cy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7
CiB9CiAKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhU
TUwoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewogICAgIHBsYXRmb3Jt
RGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFVSTCBiYXNl
VVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgp
IDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBVUkwgYmFz
ZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFu
a1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKICAgICBV
UkwgdW5yZWFjaGFibGVVUkwgPSBsb2FkUGFyYW1ldGVycy51bnJlYWNoYWJsZVVSTFN0cmluZy5p
c0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVV
UkxTdHJpbmcpOwogICAgIFVSTCBwcm92aXNpb25hbExvYWRFcnJvclVSTCA9IGxvYWRQYXJhbWV0
ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJM
KFVSTCgpLCBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZyk7CiAg
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0
ZXJzLmRhdGEuc2l6ZSgpKTsKQEAgLTMzNzMsNyArMzM3Myw3IEBAIHZvaWQgV2ViUGFnZTo6YWRk
Q29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291
cmNlLCBNCiAgICAgICAgIGZyYW1lLT5hZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlU291cmNlLCBt
ZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2Vu
ZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcG9ydERhdGEpCit2b2lkIFdl
YlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJM
JiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXBvcnREYXRhKQogewogICAg
IGF1dG8gcmVwb3J0ID0gcmVwb3J0RGF0YS50YWtlRGF0YSgpOwogICAgIGlmICghcmVwb3J0KQpA
QCAtNTg3NCwxNCArNTg3NCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmltYWdlT3JNZWRpYURvY3VtZW50
U2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogdm9pZCBXZWJQYWdlOjphZGRV
c2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyBpbmplY3RlZEZyYW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZSkKIHsKLSAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZN
b3ZlKHNvdXJjZSksIFVSTChXZWJDb3JlOjpibGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKKyAgICBX
ZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVSTChXVEY6
OmJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3Rp
b25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXIt
PmFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwg
V1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6YWRkVXNlclN0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRGcmFtZXMpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0
eWxlU2hlZXR7IHNvdXJjZSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9Owor
ICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0IHtzb3VyY2UsIFdURjo6
YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRG
cmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xs
ZXItPmFkZFVzZXJTdHlsZVNoZWV0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdv
cmxkKCksIFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNTBhYjRmZWQ5ZTRhNmNkNDMxMzQ1Mjc2NmI4
OTgwZDg3NWNjZjg4Li40YjVkOWQ4OGZlNWY5YmY5ZDQ4YzdlM2JiOTNkNjg4NTc0ZmRjMjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTksNyAr
MTU5LDYgQEAgY2xhc3MgU2VsZWN0aW9uUmVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKLWNsYXNzIFVSTDsK
IGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4
X3Q7CkBAIC0zMTYsNyArMzE1LDcgQEAgY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVAKICNlbmRpZgog
CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlELCBNZXNzYWdlU291
cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHJlcXVlc3RJRCA9IDAp
OwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmKTsKKyAg
ICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJM
JiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJik7CiAgICAgdm9pZCBlbnF1ZXVl
U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpT
ZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpOwogCiAgICAgLy8gLS0gQ2FsbGVk
IGJ5IHRoZSBEcmF3aW5nQXJlYS4KQEAgLTMzNCw5ICszMzMsOSBAQCBjbGFzcyBXZWJQYWdlIDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1
YmxpYyBJUAogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoY29uc3QgV2ViRnJh
bWUmKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoV2ViRnJhbWUqKTsKICAgICB2b2lkIHNob3co
KTsKLSAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwotICAg
IFN0cmluZyB1c2VyQWdlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsK
LSAgICBTdHJpbmcgcGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7
CisgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgdXNl
ckFnZW50KFdlYkZyYW1lKiwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3Jt
VXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIFdlYkNvcmU6OktleWJvYXJkVUlNb2Rl
IGtleWJvYXJkVUlNb2RlKCk7CiAKICAgICB2b2lkIGRpZEluc2VydE1lbnVFbGVtZW50KFdlYkNv
cmU6OkhUTUxNZW51RWxlbWVudCYpOwpAQCAtNDE5LDggKzQxOCw4IEBAIGNsYXNzIFdlYlBhZ2Ug
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwg
cHVibGljIElQCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpV
UkwmKTsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJik7CisgICAg
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFt
ZSosIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgCiAgICAgZW51bSBjbGFzcyBJbmNsdWRlUG9z
dExheW91dERhdGFIaW50IHsgTm8sIFllcyB9OwpAQCAtNjg1LDcgKzY4NCw3IEBAIGNsYXNzIFdl
YlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQ
YWdlPiwgcHVibGljIElQCiAgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRleHRNZW51QXRQb2ludElu
V2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYKIAotICAgIGJvb2wgaGFz
TG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgaGFzTG9jYWxE
YXRhRm9yVVJMKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlUmVxdWVz
dChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtOTQzLDcgKzk0Miw3IEBA
IGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0ZWN0aW9u
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0KCk7IH0K
ICNlbmRpZgogCi0gICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGlu
Z1VSTCwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKKyAgICB2b2lk
IHNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVuYW1lLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsb25nIHNpemUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzYXZl
UERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJp
bmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5n
JiBwZGZVVUlEKTsKQEAgLTExNTksNyArMTE1OCw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQ
CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9h
ZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwg
Y29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgLy8gQWN0aW9u
cwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKQEAgLTExOTcsNyArMTE5Niw3IEBAIGNsYXNzIFdlYlBh
Z2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdl
PiwgcHVibGljIElQCiAgICAgc3RhdGljIGJvb2wgc2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJD
b3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKICAgICBz
dGF0aWMgYm9vbCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxM
b2dpY2FsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAKLSAgICB2b2lk
IGxvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKKyAgICB2
b2lkIGxvYWRVUkxJbkZyYW1lKFVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIGVudW0g
Y2xhc3MgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07CiAgICAgdm9pZCByZXN0
b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+
JiwgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QsIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpPdmVy
d3JpdGVFeGlzdGluZ0l0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZDc1YWNlZWEwZTAwMDIzYWIyMTliMjkx
MzllMzYyMjZhZjljNmM3Ni4uMjdjYWEyN2NlNTcxZTIyYWEwODE5NmEyMmM2NzJiNDU4YjAzZGE3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC0yOCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkK
IAogICAgIEFkZENvbnNvbGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGVudW0gTWVzc2FnZVNv
dXJjZSBtZXNzYWdlU291cmNlLCBlbnVtIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIFN0cmlu
ZyBtZXNzYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgU2VuZENTUFZpb2xhdGlvblJlcG9y
dCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHJlcG9ydERhdGEpCisgICAgU2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRf
dCBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERh
dGEpCiAgICAgRW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQodWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6SW5pdCBldmVudElu
aXQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXIgYmFja0ZvcndhcmRJdGVtSUQsIGVudW0gV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBiYWNrRm9y
d2FyZFR5cGUsIGVudW0gV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCkKICAgICBUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQog
Ci0gICAgTG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3QgZnJhbWVJRCkK
KyAgICBMb2FkVVJMSW5GcmFtZShVUkwgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQogICAgIExvYWRS
ZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogICAg
IExvYWREYXRhKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQog
ICAgIExvYWRBbHRlcm5hdGVIVE1MKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggZTU4ZTlmMWRkN2IwNzdm
NTYxY2E1MWM5MmZlZjcxNWIwYWUxNDI5ZC4uNzM1NjZhMTMzODVkZTNhYWM2NDZmYjk0OTZiZGRh
ZmNiNWFmNDZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCkBAIC00MCw5ICs0MCw5IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJpbnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVk
ZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCkBAIC00NTQsMTMgKzQ1NCwxMyBA
QCBib29sIFdlYlByaW50T3BlcmF0aW9uR3RrOjpjdXJyZW50UGFnZUlzTGFzdFBhZ2VPZlNoZWV0
KCkgY29uc3QKICAgICByZXR1cm4gKG1fbnVtYmVyVXAgPCAyIHx8ICEoKG1fcGFnZVBvc2l0aW9u
ICsgMSkgJSBtX251bWJlclVwKSB8fCBtX3BhZ2VQb3NpdGlvbiA9PSBtX251bWJlck9mUGFnZXNU
b1ByaW50IC0gMSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBXZWJQcmludE9wZXJhdGlvbkd0azo6ZnJh
bWVVUkwoKSBjb25zdAorVVJMIFdlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFtZVVSTCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3ByaW50Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlVS
TCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSBtX3ByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKTsKLSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRl
ci0+dXJsKCkgOiBXZWJDb3JlOjpVUkwoKTsKKyAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIgPyBk
b2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKTsKIH0KIAogdm9pZCBXZWJQcmludE9wZXJhdGlv
bkd0azo6cm90YXRlUGFnZUlmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKaW5kZXggYjI2
MmRmMzRjODA1ZmFhY2RmMjAwNzgxZGI3YWFmZTA0MmU3ZjUyNC4uYjdlMTQ0NDI5NGIyNTEyN2Q0
NTJmMTJhNDhiMmZhZTg5NTgyMGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKQEAgLTQwLDcg
KzQwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a1BhZ2VSYW5nZSBHdGtQYWdlUmFuZ2U7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQcmludENvbnRleHQ7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwotY2xhc3MgVVJMOwogfTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05Nyw3ICs5Niw3IEBA
IGNsYXNzIFdlYlByaW50T3BlcmF0aW9uR3RrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUHJpbnRP
cGVyYXRpb25HdGs+IHsKICAgICB2b2lkIHByaW50UGFnZXNEb25lKCk7CiAgICAgdm9pZCBwcmlu
dERvbmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgc2VuZFByaW50
RmluaXNoZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIFdlYkNvcmU6OlVS
TCBmcmFtZVVSTCgpIGNvbnN0OworICAgIFVSTCBmcmFtZVVSTCgpIGNvbnN0OwogCiAgICAgV2Vi
UGFnZSogbV93ZWJQYWdlOwogICAgIEdSZWZQdHI8R3RrUHJpbnRTZXR0aW5ncz4gbV9wcmludFNl
dHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGJlZDI4
N2RmYWM5Yjk0NGU0MzQyOGYyMjQ3MzMxNjBmMjc0MDYxZWQuLjQ0YWZlZWMyMGYxZWIxN2MyMjU4
YjNjNjMyYTE5MzA2OWJmYjQxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKQEAgLTExNCwxMiArMTE0LDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2Vy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUg
PHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKICNpZiAhT1MoV0lORE9XUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGRiYzU3OWI5OTVmMTliYzMyOTUxY2M4MDJlNjVh
N2ZmODdhMjgxNDIuLjYyZjM5MDU3ZTEyZGQzMjA1ZjkwMzUyNTdhZTE0OTBkZWE2YTM2MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQpAQCAtNjAsNyArNjAsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Njcm9sbGVySW1wRGV0YWls
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8YWxnb3JpdGhtPgogI2ltcG9ydCA8ZGlzcGF0Y2gv
ZGlzcGF0Y2guaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpAQCAtNzEsNiArNzAsNyBAQAog
I2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJLmg+CiAjaW1wb3J0IDxzdGRpby5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLmgiCkBAIC00MzYsNyArNDM2LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBpZiAoTlNVUkwgKm9yaWdpbkFzVVJMID0gb3JpZ2luKCpwYWdlKSkKLSAgICAg
ICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmplY3Q6dXNlclZpc2libGVTdHJpbmcob3JpZ2lu
QXNVUkwpXTsKKyAgICAgICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmplY3Q6V1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyhvcmlnaW5Bc1VSTCldOwogICAgIH0KIAogICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVM
VCwgMCksIFthY3RpdmVQYWdlVVJMc10gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmlu
ZGV4IDZiNGE2NmJmYTM4ZjA1MzJhMGNiZWE1OTAxNDIzZGE1NWZmZDg4NjAuLjNiNWFiYTIzMzgw
NDQxMTM4NzhjZTA4YWMyMGJkMGYyZDU3NjA5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKQEAgLTM1LDkgKzM1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRl
Z2llcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAj
aWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggOGE1NmE5ZTc5
OWZhMWZmODI0OWYwMTQwY2FkMzgxYTVlMmFjYTgzYi4uZWRmNjUxZmE2ZGZiY2EzMThhOGY2ZjIw
N2Y0YjY0OWFkZTFiZjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC01NSw3ICs1
NSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpMb2FkZXJTdHJhdGVneSB7CiAKICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJl
Y2VpdmVkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRp
cmVjdFVSTCkgZmluYWw7CisgICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKSBmaW5hbDsKICAg
ICAKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNvcmU6OlJlc291cmNlTG9hZFBy
aW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5OjpW
ZXJ5TG93KSBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKSBmaW5hbDsK
QEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKIAogICAgIHZvaWQgc3RhcnRQaW5nTG9h
ZChXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXAmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9h
ZENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oV2Vi
Q29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwor
ICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3Qg
U0hBMTo6RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgZmluYWwgeyB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kg
ewogICAgICAgICBGaW5kT25seQogICAgIH07CiAgICAgCi0gICAgSG9zdEluZm9ybWF0aW9uKiBo
b3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25s
eSk7CisgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0IFVSTCYsIENyZWF0ZUhv
c3RQb2xpY3kgPSBGaW5kT25seSk7CiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0
SW5mb3JtYXRpb24qLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAKICAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJpbmdIYXNoPiBIb3N0TWFw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUF0dHIubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQppbmRleCBlOGY3NmYxNjRlMDY1
ZjgwMjhlOWE2ZjY3ZWEzNWQ1MmViN2VjODc1Li4yMTZiYTY1NDgwNzFjNjZkMWE1YTYwNGQ5Y2Rh
ZGMzYWNiMjk5ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
QXR0ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQpAQCAt
MzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkF0dHIqPihyZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01CbG9iLm1tCmluZGV4IDRlNmVkYzU2YTYzZmY0Y2E3Y2Y0YjQ2Y2UxYzc3MjQ4Mzkx
MTNjNmUuLmRlNTkxM2NhMTg2MDBjOGVkM2M5NTJiMWE5NjlkN2VlZWRiNzUyZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbXBv
cnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OkJsb2IqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01DU1NDaGFyc2V0UnVsZS5tbQppbmRleCBkMWI1ZWFiZDc1ZDZmYWI2YzdjY2M3ZDY2YWZmMjNk
NGMyMTIwMWQ0Li43YmZmZmRjMjFkYmEwODk3ZjY2ZmU1YWUxNDU1M2M1ZWM1MzdiZjQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTQ2hhcnNldFJ1bGUubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0NoYXJzZXRSdWxlLm1tCkBA
IC0zMCw5ICszMCw5IEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiBAaW1wbGVtZW50YXRpb24gRE9NQ1NTQ2hhcnNldFJ1bGUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQppbmRleCA4ODA0ZjI0NTAwYmQ2ZThl
ZjdjMmI2MGU0NzA2N2U2YzkyZDNlMDAzLi5jNTE3OGFlMjAxODRjNjJmYjNkYTBhZGZlNjg3ZTQz
ZDRhZTUyYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NT
SW1wb3J0UnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1w
b3J0UnVsZS5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU0ltcG9y
dFJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxl
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU01lZGlhUnVsZS5tbQppbmRl
eCAxNTlhOWE0OTQ5ODdiZDU0NTE5Y2JkNjJlNDMwOTAxYTdkMGM4YzllLi5lYjVkY2YyMmY3Y2Zi
OGM2MTY3OTk3OWE1YTMyNDgyNTNmOWY5ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFMaXN0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpDU1NNZWRpYVJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTUGFnZVJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUGFn
ZVJ1bGUubW0KaW5kZXggZjM2MjIzMWNlNWJjZmQ2ZGVhNjVmMTFkMzE0YzQxYmRjOWY5MzQyOS4u
YjZiYzI3ODA5OWY4MjQ3NzE3YjJmOWI3MjkxYmY5M2JmZTgxNTE0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQYWdlUnVsZS5tbQpAQCAtMzQsOSArMzQsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVBy
b3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1BhZ2VSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmluZGV4IDM1YTg5MzQ5YzMyMTI4
YmY5MzcyNWI2NmZhYzQ2NjY0ODhkNmUwNTguLjA1NWVhOWVjNGFiNWE1MTIzOTc2OGMzZjc3Yjll
MDM2OTllNzk3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
U1NQcmltaXRpdmVWYWx1ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTUHJpbWl0aXZlVmFsdWUubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgIkV4Y2VwdGlv
bkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6RGVwcmVjYXRlZENTU09NVmFsdWUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCmluZGV4IGQ0OGNiM2Y5MjI5ZGRiMmJkNjNkZDk5ZjA5
MWZkNWJjNWM2NTJkMGYuLmExMmIwZThjOGYwNzc3MDE2OGU5OGNiN2FhNzU1MWQ3YWZkNWIyNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCkBAIC0zNCwxMCAr
MzQsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KaW5kZXggMmQ5
ZmVmZmZjMTU0MDBkOTg3MzMxMzNjOGEzNzRmMWQ2ZTkzOGVmOC4uYjNiMDdmMzM5ODY4NmRlZGJk
MGRkMmM5MjQ2NDE5YTFlY2ZkNzY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KQEAgLTM2LDEwICszNiwxMCBAQAog
I2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbio+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZVJ1bGUubW0KaW5kZXggOGE0Y2ZmMzBjZGQ1NTMx
MmY3ZGQ0MjdlNTEyMWEwNjYxZDEwYjkwOS4uMmFlMTkxM2IyZTQzZjgzMTJmZWI0MDg0MmFhOGY5
N2UwZmI0ZjY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNT
U1N0eWxlUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5
bGVSdWxlLm1tCkBAIC0zNCw5ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q1NT
U3R5bGVSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxl
U2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5t
bQppbmRleCA4YzI0MDYwMTZjMGVhNWNlYmFlZWFkZDZkZmQ5OTU5NzE1MTA4OGFkLi4yNjlmMDI0
OGM3YzYwMTQwZTQ3NGI4ODQwN2IwMGEzODAwNjVmZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2lt
cG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OlN0eWxlU2hlZXQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTVmFsdWUubW0KaW5kZXggMGM2ZTA3NGQ4ZjNkMTUwNTAwMDkxYjExMWRkOTk4N2M4OGFh
NzM4Zi4uYjc3ZDRiODcyMDY1OTYzMDhjNzMyZjhhZjM0YzE2MTQ4OWY2MjFkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbQpAQCAtMzEsMTAgKzMxLDEwIEBA
CiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01WYWx1ZSo+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRhdGEubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQppbmRleCA4YzNiNGQ0YTU4
MmZlOTQ3YTBjMzhkMDY0ZjlhMTI5MWI1OTljOWMzLi5iMzBlOTU3OTQwZWQ5NjY1NzViYzYzNDk0
NGU3YTkxNjBlNTI5MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ2hhcmFjdGVyRGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q2hhcmFjdGVyRGF0YS5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25I
YW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DaGFyYWN0
ZXJEYXRhLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhKj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ291bnRlci5tbQppbmRleCAyZDFlNTY1N2VhMmQ2NjhkMjAwNWI1M2M0
ODU5ZWRkOWQ1MmY4YmY4Li4zMDg3MDFlNWI0ODE4Njc0NzMyM2MxOGRlZWQ0ZTQzMGFkYWMyYjQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQpAQCAtMzEsMTAg
KzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Db3VudGVyKj4oX2ludGVybmFsKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXggYWQ1NTg1Mjlh
YmI3ODNhODFkM2Y5ODMyZmM0M2Y5YWJjM2EyM2E1MC4uM2IwNGQzOTMzZDI0YWFlMzMzNWJkODdi
ODEwNjlmNGNjZTdiZDYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1
bWVudC5tbQpAQCAtODIsMTIgKzgyLDEyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVHJlZVdhbGtl
ci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aEV4cHJlc3Npb24uaD4KICNp
bXBvcnQgPFdlYkNvcmUvWFBhdGhOU1Jlc29sdmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRo
UmVzdWx0Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KaW5kZXggOTZkMDMyOWI0OWFl
NjE1YjcxZWZhYTRjMDViMjY5MTFkZTg1YzE3ZC4uMmVlMmNmODRjNjM5NDhjMDAwMmY4YTY1ZDhj
ZDY2OWE3Njc5ZDI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TURvY3VtZW50RnJhZ21lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TURvY3VtZW50RnJhZ21lbnQubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
TmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEb2N1bWVudEZyYWdtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURv
Y3VtZW50VHlwZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudFR5
cGUubW0KaW5kZXggZTIwMTE3NmE5MmRjNjY2NDBjZDUwMWVmN2VjMjBhY2Q4NDY0YWY5Mi4uN2Iy
ZTAzZWM1MjFjZGYwNzQwMzI2NTkwMGU2ZDNjYjA2MzQyYTNkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRUeXBlLm1tCkBAIC0zMiw5ICszMiw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVkTm9k
ZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRUeXBlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2
ZW50Lm1tCmluZGV4IDYwY2RiNmU1N2Y1YmUxNzYwZjRkOTE1ZDM4YWU0YTMzNTU3NTE3Y2QuLjJk
NjE1NGIxZTA2NDZkOGEzMWMwYzAzMGVjZTYzMzNmYjUxNmMwODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NRXZlbnQubW0KQEAgLTMzLDEwICszMywxMCBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2lu
dGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmls
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1tCmluZGV4IGVkYTg3
ZmZmMWM0ZTRiNWE5YTg3YzZkYjhiNDAyYWM0YjI0YjI4N2YuLmZkYzU0MTNiOWE1ZjQ2YjllZGE1
ZmMwYTdiMzZhZTVmODVkM2RiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01GaWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxl
Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZpbGUqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0KaW5kZXggNDQ2MGYyN2M2ZGZk
ZDMwNjU2MGMxMjRkOWQ3OTk0MWM4ZDVjODUyZC4uYzZjMDFiZDdhNjk2MTc3MGNlOGZmMThlNTc2
YzEwOTg1ZWZmNDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxBbmNob3JFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MQW5jaG9yRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxBbmNob3JFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxBcHBsZXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxBcHBsZXRFbGVtZW50Lm1tCmluZGV4IGE4NDU0MmRhNDdkNjQ0ZGMzNjJlOGZkMWRmYjUyZDA2
YjIxM2E2NGEuLjI2YjhkM2M1OGJlYmQyZDdkNWRiMmU4ZGNjY2UyNjlhMGY5NWJjZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFwcGxldEVsZW1lbnQu
bW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFyZWFFbGVtZW50Lm1tCmluZGV4
IGM0YWIyMzIwMjc1N2VmYzIyNmQzNDdlNTBhMjEwZGQ0M2UxMjA1MmUuLmI5YWNhODk2YTRjMDkx
NzY4Y2ZhMDMxOGI2YzZiN2EwN2VkNTc1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxBcmVhRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MQlJFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxCUkVsZW1lbnQubW0KaW5kZXggY2Y1YjNlMDg4NDEzOWM5OGU0Yjc4Y2IzNzhkZjFhNjdj
NDM1OThiOC4uNDMyNDY0YjhkZDJkNTYyNjMxMDE4OGM3MTgwNzI4NTkxNjMzOTM3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KQEAgLTMx
LDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQlJFbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQubW0KaW5kZXggNTE0YjcwOTFiNDNk
MTIyNzcyZDA3MGM3N2U2YTExZGY0ODAwNmMxMy4uYWZlM2I2OTkzYjYzODZkNzM5ZTE0Y2ZjYTNi
N2M5ZGY2OTQxZTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxCYXNlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEJhc2VFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTEJhc2VFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxC
YXNlRm9udEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJh
c2VGb250RWxlbWVudC5tbQppbmRleCBhOTljMGI2MjM4MWYyNTFjMjFlODA3Njg1ZmI5MzUwMzA2
NzExYTRkLi4yNjMzYzgwZjcyNGQ4Nzk0NGRlYmY5MDhmMDM5MmZlN2JmY2RhNGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVW5rbm93bkVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxV
bmtub3duRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9k
eUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJvZHlFbGVt
ZW50Lm1tCmluZGV4IDY5NTI5M2I0MjQ2M2ZiZTY2Mjg3YjA2NDc2NGVmNjlkZmU1OGY3MDQuLmRm
NjEyMDg2NmM2YmM2MmM0MTIyMzM5N2ZmMWNiMzBjNmE2ZjQ0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbQpAQCAtMzEsOSArMzEs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbQppbmRleCA5OGFhMjdjNTYyNzVj
NTQzY2Q0ZDllMmZiYjI3YzE4ZGI5ZDgyYWI1Li43Yzc1OTVkMzE0ODMwMzJjZmFlYmZlNDAxYzE3
MzIxY2I5ZGJkNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEJ1dHRvbkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxCdXR0b25FbGVtZW50Lm1tCkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L05hbWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTEJ1dHRvbkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihf
aW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTENhbnZhc0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TENhbnZhc0VsZW1lbnQubW0KaW5kZXggMGZkNjBhNmRhOGFhYWFiZTc0ZDJiZDJiZDk0NzliODE0
YmQ5NjM1MS4uMThiMzEzZWI0NGFjMDM2YjAzN2Y1OGE5NDIzNTc2OWJlZGQxMDQzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ2FudmFzRWxlbWVudC5t
bQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TdHJpbmdBZGFwdG9ycy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTENhbnZhc0Vs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24ubW0KaW5k
ZXggZTM0NDA5OGNiNDhlMmQzOTBmNTQwYmMxZDUwZTY5NzNjYzQzZDdmMS4uYWFjMTg1NDlkM2Q4
YjQ3ODEzYmMxNTRiMWNhNWM0MTE3M2I1MzZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MQ29sbGVjdGlvbi5tbQpAQCAtMzUsMTAgKzM1LDEwIEBACiAjaW1w
b3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SFRNTENv
bGxlY3Rpb24qPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRGl2RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MRGl2RWxlbWVudC5tbQppbmRleCAyOTM2YWZhYzAyNTMxODU4ZDFmYjhhOTRkMjcy
ZmZmOTVjZTk0OWRkLi45Y2IwM2EwMTE5NmI3ZjQ0MTU0NTI3YTdjNWMyNTViN2QzYWU5Y2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERpdkVsZW1lbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEaXZFbGVtZW50Lm1t
CkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTERpdkVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEb2N1bWVudC5tbQppbmRleCAwMzc1YTNjZjRm
ZDY3MWY2MzM2ZmJiMzdjOWJiN2M5YWVmMDE3NjNkLi44OGQxNDJlYWRhODQxMTM3MDUwMTQ4ZmNl
NGVjODc1ZjAyMjdiN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTERvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MRG9jdW1lbnQubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTERv
Y3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpI
VE1MRG9jdW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1lbnQubW0KaW5k
ZXggYTVlMGNkMzE5MTNiZDM4NzMyNjYzNWU3OTM1ZjRhYTg5ODE5YzZmMC4uMmZlMjRjNzA3NDk3
ODg3MjUwODRmMzY2ZjkwYjlkODQ0OTc2ODA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRWxlbWVudC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+
KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MRW1iZWRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxFbWJlZEVsZW1lbnQubW0KaW5kZXggNmI4MmJlMDhlODIxNjZjMzE5NDBhMzQ4ZWNmOTcyNTgy
NTljYzlkMC4uMGQ2ZDg4MTQ3MWE4MTVlMjAzYTBjNDU0ZDBkNzY2YTYwOWQ3ZTczYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0K
QEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpp
bmRleCBlYTkyYTAxOWE1MDY1Njk1YzY0NDZhZGE0OTM5NWY2ZmEzYWUyNjY2Li4xZmQ0ZDgwYmM3
MThjOTU2YTM1ZDZjOGJjMGEwN2ZiMDJhOTk2YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpAQCAtMzYsMTAgKzM2
LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRpdHlTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxGb250RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MRm9udEVsZW1lbnQubW0KaW5kZXggODBkZTQ5MDU0OTI0ODAzM2EzMmJmY2EwMzhiM2FmNzcx
OWM2ZmI3Ni4uOTEwZThmN2Q0NjZmMWRlM2E3OGVjZDMyZmQ4NzcxYmI3ZTg0ODJkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvbnRFbGVtZW50Lm1tCkBA
IC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZvbnRFbGVtZW50Kj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9ybUVsZW1lbnQubW0KaW5kZXggYmZkZTFk
YWQ4MTRlZGRjYmVhNzY1N2FmYjc4Y2QzNGY3YmVkZDU2Zi4uZTg2MjZiYTM1YWEzMzdmNGI0Yzdj
ZmExYmQ4MzNiOTVmZWVlNzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxGcmFtZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEZyYW1lRWxlbWVudC5tbQppbmRleCA2MDBmNDRmODliYzQzOTk3ZGM0MGUwMDZkMjZjYzM1MmUz
ODFhYWYxLi5lYjVjNTVhYzJiNjdhZjRkZWViZGY2MTVhMzc0ZTI1NzNlYjMzYjgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQpA
QCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCmlu
ZGV4IGYyZjIwN2YwNTI0OTdjMjE5N2I3NDM0NzdjM2NiYjMxMjZmZmM5OGEuLjY5Yjk1YTA2Zjc4
ZDg4Njg0MGUzNjYwNmI3NzE1YzI5MDYxNjQxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KaW5kZXggYjI1NzhhYTJkZjNlZTg5MDA4
NTYxMmZjMjE3NzM1ODM1MjY1Yjc2ZC4uYTcyNmJkYzFlMDIyN2FiMjZjZjAwOWI3MzY3MzQxODdm
ZTQwMmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxI
UkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVs
ZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSFJFbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZEVsZW1lbnQubW0KaW5k
ZXggYmVmMzlhZTU3MDZmOTQ5YWNkMjdmNDFiNWQwYmIyN2VlZTJmZDJhNy4uOWNhNGI4ODBiMWFh
YWJhZDhjMzBhOWViMWQ2ZTQwZTMzMGJlZDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTEhlYWRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTEhlYWRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MSGVhZGluZ0VsZW1lbnQubW0KaW5kZXggODExYmIxODA0ODg2MWY4YjE3MTJj
OTM1NmMxZDgyNzZkMDExMzE4OS4uYTJkZmI2YTNlYzFlYjA1YzhjYjMxMTEyMjIwNDZhMDAyYzc5
ZGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFk
aW5nRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhl
YWRpbmdFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxO
YW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TEhlYWRpbmdFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxI
dG1sRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSHRtbEVs
ZW1lbnQubW0KaW5kZXggMjg3Y2U3Zjk0ZmYyZTljOTY1ZjM1ZmRlNDMzNTBjZDRhYjNjYmMxZi4u
ZWJjM2NmZTc0ODYxNDI2MzNkMzM5MjZkNWRlMTNlNTlmZWMxOGNhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tCkBAIC0zMSw5ICsz
MSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEh0bWxFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCmluZGV4IGYzODJjOWVmOGUw
OTY5MjNhNjMwZTVkYmJkNTk3MjY3ZjFlMTY5ZGYuLmUzMjFiNGY3NmQyMTZlMjNhM2Q5ZmEwNDNj
Y2VmNzg4YWMzN2E3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MSUZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTElGcmFtZUVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MSUZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+
KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MSW1hZ2VFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxJbWFnZUVsZW1lbnQubW0KaW5kZXggZmM5MTk1M2NlY2MyY2FlZWU3NjJiMzQ1NDIwMjQxYmJm
OWIzNzE1MS4uZWJhNGVjOTIzMTZjMzljZTAxMzRjZGIwMDVkMTYwOTNiMDMyMmRiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0K
QEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5wdXRFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KaW5k
ZXggODM2MzczNWQ5NDc0YTg2YmE4YTgwNWUwZjFhM2ViYTZmODRkNGJjZC4uZDczN2E1NTdlOWEz
ZWMwMzUzNTNjNTEyNjkwZGJlNzhlYjBlODQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KQEAgLTY0LDkgKzY0LDkgQEAgQGVu
ZAogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJF
bGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMSUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTExJRWxlbWVudC5tbQppbmRleCAyNjlkMWE1NGFkZDhjZTJiZDRmZWFm
NmE0MmE2Mzk4MjA4NWZlZGEwLi5hM2NmM2ZhOGRiZmE4Y2VhZDdhMjlmYTk4YzI3N2E4NGQ5YmYw
ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxMSUVsZW1lbnQq
PihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCmluZGV4
IDUxZjU2MGMwOTc5MTg5M2FlNjZkYzU1MmQyZjk2OTdkMmZiZjAyODEuLjgxMzkwMDBlYWVhNGNh
N2QwZWU5MmI1ODBmNGNmMDgwMTdhMTE2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCkBAIC0zNSw5ICszNSw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTExhYmVsRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbQppbmRleCA5MzQzY2E2ZTlkZmFmNzM3ODA2NTdj
ZjU0MmFlMTIyNTQ1MmQ4YjBjLi5kNGYxZjM2YzVmMjRiMTk0YTkyYzgyYjEwY2RiYTFkOGUxMGU2
MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExlZ2Vu
ZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMZWdl
bmRFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1l
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExl
Z2VuZEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtF
bGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMaW5rRWxlbWVu
dC5tbQppbmRleCAyMGY0YzAxNTE1ZGViNjBlZTRkYjM3OWEwMDVlNTI3NzliOWM1MjIwLi41Njg3
YzQ1YmJhMGZhYzc0YjU0Yzk0ODVkOThhZTQ5ZThmNzM1YjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGlua0VsZW1lbnQubW0KQEAgLTM2LDkgKzM2LDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5
bGVTaGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tCmluZGV4IGI5MjFiM2E1MGVkMDUxNTAzZjNk
NzdjNDUwYmQzOTcxNmFkNGM5NjAuLjJjYzkwY2Y4NjM0ZTM5NmRkMDFmNGEwYzExZjA2MTBlY2Q2
MGU4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFw
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcEVs
ZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWFwRWxl
bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcnF1ZWVFbGVtZW50
Lm1tCmluZGV4IDYxYWI0YzYyMzMzZjk1NmUwNzI0MzYyNzcyZmMxZmZmY2E0NmEyMzguLjk2MjNl
ZGIxNmFjMDk5YjQxZGM5NjM4NzU5MDQ0YjQ3MWI5MGJjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbQpAQCAtMzEsOSAr
MzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KaW5kZXggNWJjNzQ1NmY2
MGNmNzYxMmI1MDZlYmZkM2RjODlmYTQ3YWVjYTQ2Ny4uNzgzYTVhMTVlOWRlMWM3NWU3NGRiODk1
MmI0MTk5MjAxYTk0MzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KQEAgLTM4LDkgKzM4LDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvTWVkaWFFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaW1lUmFuZ2VzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxNZXRhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
TWV0YUVsZW1lbnQubW0KaW5kZXggOTk4NzAwMmFmN2NiZTNkMTRkNjdjZjhjNGYzYjgxZGUzZDNi
ZjI2Yy4uNzhlZDZlOTNjZGZhYTViOGM5NWY3NzJmMjAzZjM4NDRkODBlOTllNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tCkBAIC0z
MSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
ZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tCmluZGV4IGQ4ODVmY2ZkMDgw
MzZjNzM4MjkyZTAwNzA3MjFlZTVmODJlMzcxOWEuLjYwZjllNDVjN2IxZTM0YmMwNjJlNmE0ZWIz
MTI3NGFmNDY1YjI1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MTW9kRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTE1vZEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpI
VE1MTW9kRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT0xp
c3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVs
ZW1lbnQubW0KaW5kZXggYTMyYzJkOGJjOTcxMjE3MDdiNmUwZTM3OGU3NDUxNTIyYzU1ODczMC4u
YjdmYTU5YjZlNjY5NWY2NmM4OTY5YjFmYTQwNWU4ZTRhMWRlYWVlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KQEAgLTMxLDkg
KzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE9MaXN0RWxlbWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE9MaXN0RWxlbWVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbQppbmRleCA3
YWI3M2Y1NzI5NDMwZDNiZjIwMjdlZGJjNWU0NjEwMzE0YmRjYTE1Li5kYjIzNmQ4Yjk1ODZiOGI3
MmFjOGU4OGNjZGYyYjQ5MGFiZWRiNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTE9iamVjdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tCkBAIC0zNyw5ICszNyw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQppbmRleCA0ZTUxNWRhZjU1YmI3
Y2M1Y2MwMzhiYjUyNDA0YjZlZWYxYjU1Y2RiLi4xNzcxYzJlZmUzMTg2MmQ3YjE1NTllMGQxMjQ3
NTNmMTNmMzcwMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTE9wdEdyb3VwRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MT3B0R3JvdXBFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tCmluZGV4IGZkZWM1NGVlMWQ2NDc4MWU2
NmU4ODMzNGM1MmNmNTQxOGJjNzkzZGYuLjE0NTM1MWQ5YjZmZWUzZTNiMTJhZjMxZjA0YmMzMDM3
ZmRhNzc5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
T3B0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE9wdGlvbkVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE9wdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KaW5kZXggZjc3MGE4YTE0ZDVhODNkNzY5NWU0
MzcxOWVlMWFmNGRjYjY2NGNhMS4uMzkxMjEwMTU2MWY1ZmZkZjg5NDFlOWE3MWJmYmU0YjgyOGY4
NGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRp
b25zQ29sbGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLm1tCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogI2ltcG9ydCA8d3RmL1ZhcmlhbnQuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uKj4oX2ludGVybmFsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50Lm1t
CmluZGV4IDZjNTExZTkxNjY0Y2U5MjNjYzkyODRhMjU1YTExZTZhNzkzYjNmZDQuLjFhNTQzYjNm
ZDNlNmZlNzI4MjQ2YjJiYThjMTJmZjI2NDBmNjYwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQubW0KQEAgLTMxLDkg
KzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBhcmFncmFwaEVsZW1lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxQYXJhZ3JhcGhFbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhbUVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQpp
bmRleCA1ZmIwY2VjMjdmYjcwOTdmMDkxNWVlNWNkZmM0MThhODFjNTk0ZmU4Li5lZGE2NTMyYzVk
MmE3ZWZlZmMxNDliMGI3NjZhZTlkYjhkYmM5MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MUGFyYW1FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbQppbmRleCAzNzQ5YzE4MDMzMGZi
MGUzNWNkNTQ1OTExYzA5ZTc3NDU4NzVhZmQwLi5iY2Q3ODY2Y2Q3NmM3M2VhYzY0NGUwNGY4NDM3
ZTUwMzBmNWEyZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFF1b3RlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFF1b3RlRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MUXVvdGVFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MUXVvdGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxTY3JpcHRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxTY3JpcHRFbGVtZW50Lm1tCmluZGV4IDMzNDRkNTQ4ODg0OWMxNGM5MWM1YTY5M2U3OWFk
N2U2NzBlMDlmZjQuLmU0YWMwMTc4MDJkYTI1MTRmNGNkZmU3ZGQ3YzkyMDQ5YmRhYjAxZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2NyaXB0RWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNjcmlwdEVsZW1l
bnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFNjcmlwdEVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxT
Y3JpcHRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxl
Y3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxlY3RF
bGVtZW50Lm1tCmluZGV4IDc1ODE0MWRlM2ZiN2Y1YWJmNmUyYTI4ZmE2YWVhMTQ2NThjNjY5NjIu
LmJjZmJlY2FjZDM4NDkxZmE3YmM5OTU0YjNkZTkwMzAyZjkxYTY2YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2VsZWN0RWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW0KQEAgLTQ0
LDkgKzQ0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9O
b2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50Lm1tCmluZGV4IGE0NTI3ODIwODBiYjYz
OWM0ZTY3ZjQ1NzlmOTM5NDY1NjhjNWNmMTAuLjgwNzZhMzM4ZWUxZGMzMGFmMWMyOGE3NDg1ZWI2
NDdkOGVlMzdhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MU3R5bGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MU3R5bGVFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkhUTUxTdHlsZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0KaW5kZXggYTc4MTFiZDY4YjM4OGI4ZDczMzFkNDUz
Yzk2Mjg2MDhhNWEzNmUzNy4uNDgzZjk0ZjEzZmJhZDE1OTdlNjczNmFmNzZjYTRjMGYxMDZlZTg5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNh
cHRpb25FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
VGFibGVDYXB0aW9uRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0KaW5kZXggZGQzMDE2
YjNhYTYzYTRmOWIwMzE0NDA3NWYwNWU1YTk4MDU1OGVlMC4uOWFkOTE0NmU4NGEyNzgwNjk5YmNh
NzNkNTQ3Y2JjYTgyNTBjM2U1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDZWxsRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCmluZGV4IGFm
MjY3MTRkODRmMzBhYWRjYWUxNDJiZTg0NmQ2NmNlNmUzNWU0MGEuLmM5ZDk4Y2E1MTRlMWFiYTdi
MGVmNDg5YzNkYWYyYmU3OWM3MTJkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZUNvbEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNvbEVsZW1lbnQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCmluZGV4IDRjNjhjNGI2
YjRjYTVkNmYxZjYxMGVjNWFjMDdmYTZkMzQ3MzIwYzkuLmJlZGRhZjUwZmFhYWI0YzJkMzZmYTVk
MTI4ZDAzMTY1ZjIwNGI3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCkBAIC0zOSw5ICszOSw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQppbmRleCAyNDA5NmE4ZDk5NDdm
ZDdiN2EyNGZkMTY1NzMxM2E5ODQwOTkzOGNjLi4zZGZlZGMzM2VmY2MxNWFhZTE0ZDQ0MTFmZmVl
NzA2NzczZDY4YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFRhYmxlUm93RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MVGFibGVSb3dFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tCmluZGV4IDk4YjE5
ZmEzMTU0MDM0ZGFkOWY2MzBiMzQzMjIyODgyODM0ZjMxODguLmMzMmMyZTcwMjczNDNkNDcwOTMw
YTY3NzNiMjk4ODhlZDRmNmZlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQpp
bmRleCAyNDg2Zjc3YzNhNWU3NTA0MjcxMDJhZDI3ZTI4MmI2YjY1YjRlZmU5Li4yODM5MTcxNzg1
NTk5ZjkyODU4NGFkNTIxNThlMGYwNWQzNDEyMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQpAQCAtMzAsOSArMzAsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MVGl0bGVFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbQppbmRleCBmOThmOGU4NTJiZDQ3
YTE2MjkyYjk3MzQwOTAxNTcyOGU0NWYzM2ExLi5mY2Y5MDU0YWIwZjEyMTY3YWVlMjA2Y2FkOGFk
YTFkMTM5MDdhM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFVMaXN0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFVMaXN0RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MVUxpc3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MVUxpc3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFZpZGVvRWxlbWVudC5tbQppbmRleCAzMzU4MDY1MDM5Mjg3MTliOTViMGY3MTY3ZjI3MWE5
MDFlODVjMTE5Li40NTdlYWZiYTBkMGNlNTJkMDNmNTUwZjA0NzhiMzRiMDhlODczZDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5t
bQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQppbmRl
eCAzZmQ4ZmNlMzY0NjZmMzdhYjlhMTk0YzBhMzBjMWMzYzQwNTJmNjNjLi4yYzAxZjNlNjEwNTUy
Njk3ZTQ1MTM3OTRkYjEzOWEzNzlkMzJjNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpF
dmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01NZWRpYUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVk
aWFMaXN0Lm1tCmluZGV4IDllODE2N2ExNmE0NGIzMTM3YjIzZWRiMWE4ZWVkNDU5NDlkMjdkOTgu
Ljg2NTFmYzk3YjQ4NzExNWUyZDRjZGQ3NzE0OTBkZjNmZDAwYTVkYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbQpAQCAtMzMsMTAgKzMzLDEwIEBACiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhTGlz
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpNZWRpYUxpc3QqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU1vdXNlRXZlbnQubW0KaW5kZXggZjY1NmE4YWRlNTUzNWE5MGU4N2FiY2FhYjlkODA3
OTk2M2E4MTIwNi4uOTVmMjIzNWQ0NTcyZmIzOTZkNjI0YzM5ZmM1MDY5YjMwOTZkYzM5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KQEAgLTM2LDkg
KzM2LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3VzZUV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01NdXRhdGlvbkV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU11dGF0aW9uRXZlbnQubW0KaW5kZXggMGY0ZWYxNjc1YTFjMDNhODdhMTBkNjFlM2Zi
NzExYWFmMTFjNzZiZC4uMmZiZjQyMmFlODVkOTljNjY4MGEwZWQ1OGNkYmEzMjdmN2VkOGZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQubW0K
QEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTXV0YXRpb25FdmVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNdXRhdGlvbkV2ZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCmluZGV4IDU2ODE5MzMyYmI2NzQy
ZTFlZmVkZDAxZTJjNzUzMzU3N2Q3MWUzZjguLjI5MTgxOTA5MGU1ZTI1MDM1M2IzMDc0YWY5NmJk
MjM4ZmRiOGQ1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01O
YW1lZE5vZGVNYXAubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5hbWVk
Tm9kZU1hcC5tbQpAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVkTm9kZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOYW1lZE5vZGVNYXAqPihf
aW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tCmluZGV4IDlhZGM0MGIwOGFiYmM4NzcxYjNjOGI4YmRm
ZWUwMTlmYzgxY2UzMjUuLjIwMGU4MmEzMTAzYTY3MWQwNjE1NzExMmM3ZGM5NzI0YTU1NmUyZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVByb2Nlc3Np
bmdJbnN0cnVjdGlvbi5tbQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVTaGVldC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdl
Lm1tCmluZGV4IGYyODliM2EyNmU4YTRmNTY2YjY3MjRmYjhkNjE1MTE1OGJkYjYyZTguLmVmMmMz
NTgwOWIwYjY3NjNiNDc3NDU2MThjM2IyOTU2MDZkOTk5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NUmFuZ2UubW0KQEAgLTM0LDEwICszNCwxMCBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlJhbmdlKj4oX2ludGVybmFsKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCmluZGV4IDdh
MWE0YTg3ZmM2ZWYyNDlhY2I5ZDA3ZGUyNTRiZGIyYjBhM2M5MzMuLjBlODc4NWM3ZDJjMDY3YzQ4
NDcyMWVkNTM3ODc0ZDdjNTVjYjBhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01TdHlsZVNoZWV0Lm1tCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUv
Tm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlN0eWxlU2hlZXQqPihfaW50
ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0KaW5kZXggMzBlN2Rh
M2MwYzk4OTczZDQxMjVhNjdlZGRjZDI2ZDljZWU3NWNiNS4uZjczMGFkNmRlYmFmYTA1YmUzNzI0
NDBmOTZlNjAxYWVmZjRkZjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVRleHQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQu
bW0KQEAgLTMwLDkgKzMwLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVGV4dEV2ZW50Lm1tCmluZGV4IGM1MDI2ZWI0YjJmODYwMTMzMjg3YjlmMmUwNThh
NzYxZmIyNDIwNGYuLmNhMDZmZDdjMGZmMGUwMDFiOWU4ODQwNmQwYmE3ZWFjY2E0MTRhOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQpAQCAtMzMsOSAr
MzMsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UZXh0RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRFdmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVRva2VuTGlzdC5tbQppbmRleCBkYjhmNTVjZTA3YWE2NGZkOTI5YTVmNWY4M2ZmMGNi
Y2NkZDc3NDY4Li45YzRhYTg5NjMwZDc4MTQ0NDJiMTNjNmJjMjVjOGU0YjdmOTZiYjYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0KQEAgLTMyLDEwICsz
MiwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6RE9NVG9rZW5MaXN0Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCmluZGV4IDE3MzI0MzE5MGEzMmIxNWM0N2ZmZmUw
MDJiM2JhNjE2N2IxNzc4ZGIuLmY4MmNmNThhN2VkNGFiYjk0Zjg4NWYwZWU0YWZmYmMzZjlkZTAx
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCkBAIC0zNCw5
ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVUlFdmVudC5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VUlFdmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NWFBhdGhSZXN1bHQubW0KaW5kZXggYTFlZjU3M2Y4ZGQyYzEwYjY4NmMxMTk1MDlh
NzAyNDJkN2NmNTJhZi4uZGFjZjFkODZkZjhlNzNjMWJiMDQ0Y2RkYThiNDkxNTFhNGJmZmZkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aFJlc3VsdC5tbQpAQCAt
MzEsMTEgKzMxLDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvWFBhdGhSZXN1bHQuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6WFBhdGhS
ZXN1bHQqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmluZGV4IDhmMTdjM2FmODlmMmIyNzRhYjQ3NTQ1ZWE5Zjll
YWFhNmM5ZWNkZmMuLmIyYjRhZThhMzFjODM1MTFkOTA3NTEwZDA4YWE4MGJhMDAxODE4OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0u
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bQpAQCAtNDcsMTMgKzQ3LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRy
YXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVh
ZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9v
cC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQppbmRleCBmM2Jh
YWVhMmZhMTEzZDhlNDc3Y2Y2MzA4MzVlMDc4YWQ0MGE3Y2E4Li5lZDI4NGI0NjdiODRiYjZmZDg1
ZTA0YTQzNzg3NmNkZTRhNmU5YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViTlNVUkxFeHRyYXMubW0KQEAgLTMzLDE0ICszMywxNSBAQAogI2ltcG9ydCAiV2ViTG9j
YWxpemFibGVTdHJpbmdzLmgiCiAjaW1wb3J0ICJXZWJOU0RhdGFFeHRyYXMuaCIKICNpbXBvcnQg
PEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Mb2FkZXJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0
RW5jb2RpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+Ci0jaW1w
b3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+
CiAjaW1wb3J0IDx1bmljb2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4K
KyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRy
YXMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJh
cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBA
IC0xMDksNyArMTEwLDcgQEAgLSAoTlNTdHJpbmcgKilfd2ViX29yaWdpbmFsRGF0YUFzU3RyaW5n
CiAKIC0gKE5TU3RyaW5nICopX3dlYl91c2VyVmlzaWJsZVN0cmluZwogewotICAgIHJldHVybiB1
c2VyVmlzaWJsZVN0cmluZyhzZWxmKTsKKyAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmlu
ZyhzZWxmKTsKIH0KIAogLSAoQk9PTClfd2ViX2lzRW1wdHkKQEAgLTEzOSw3ICsxNDAsNyBAQCAt
IChOU1VSTCAqKV93ZWJraXRfVVJMQnlSZW1vdmluZ0ZyYWdtZW50CiAKIC0gKE5TVVJMICopX3dl
Yl9VUkxCeVJlbW92aW5nVXNlckluZm8KIHsKLSAgICByZXR1cm4gVVJMQnlSZW1vdmluZ1VzZXJJ
bmZvKHNlbGYpOworICAgIHJldHVybiBXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhzZWxmKTsK
IH0KIAogLSAoQk9PTClfd2Via2l0X2lzSmF2YVNjcmlwdFVSTApAQCAtMTc1LDE3ICsxNzYsMTcg
QEAgLShOU0RhdGEgKilfd2ViX3NjaGVtZVNlcGFyYXRvcldpdGhvdXRDb2xvbgogCiAtKE5TRGF0
YSAqKV93ZWJfZGF0YUZvclVSTENvbXBvbmVudFR5cGU6KENGVVJMQ29tcG9uZW50VHlwZSljb21w
b25lbnRUeXBlCiB7Ci0gICAgcmV0dXJuIGRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGNv
bXBvbmVudFR5cGUpOworICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNl
bGYsIGNvbXBvbmVudFR5cGUpOwogfQogCiAtKE5TRGF0YSAqKV93ZWJfc2NoZW1lRGF0YQogewot
ICAgIHJldHVybiBkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRT
Y2hlbWUpOworICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGtD
RlVSTENvbXBvbmVudFNjaGVtZSk7CiB9CiAKIC0oTlNEYXRhICopX3dlYl9ob3N0RGF0YQogewot
ICAgIE5TRGF0YSAqcmVzdWx0ID0gZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwga0NGVVJM
Q29tcG9uZW50SG9zdCk7CisgICAgTlNEYXRhICpyZXN1bHQgPSBXVEY6OmRhdGFGb3JVUkxDb21w
b25lbnRUeXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudEhvc3QpOwogICAgIE5TRGF0YSAqc2NoZW1l
ID0gW3NlbGYgX3dlYl9zY2hlbWVEYXRhXTsKICAgICAvLyBUYWtlIG9mZiBsb2NhbGhvc3QgZm9y
IGZpbGUKICAgICBpZiAoW3NjaGVtZSBfd2ViX2lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb0NTdHJp
bmc6ImZpbGUiXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbQppbmRleCBlOWVkNWNiZWIyOTVkMDZkYWFkOTY5
NTcyMmEzNGYzZWVlNTU2NjhkLi5iNzI2NTgzZjk3NGNkZGY3NjYxN2YyYWQxOGQzOThmNDAzYjkx
M2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250
ZW50VVJMUGF0dGVybi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVz
ZXJDb250ZW50VVJMUGF0dGVybi5tbQpAQCAtMjQsOCArMjQsOCBAQAogCiAjaW1wb3J0ICJXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4uaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW0KaW5kZXggYWM3YTRiYjMxOGM1NWY5MzU5Yzk4ZTBhOGJmOTZkMWU2ZTQ0
MzYzNi4uODgzYjkyMDcyMDdlMjQ4ZGQ0N2EzMGJjMGM3NjIxZTcwNjhiN2MzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNTgsNyArNTgsNiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9Qcm94eVNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250
cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9ucHJ1bnRpbWVfaW1wbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ydW50
aW1lX29iamVjdC5oPgpAQCAtNjYsNiArNjUsNyBAQAogI2ltcG9ydCA8dXRpbGl0eT4KICNpbXBv
cnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWRMZWFrQ291
bnRlci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBleHRlcm4gIkMiIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAwZTE4OThmMDMwNTk5NzA0
M2U2NGY2YTI5YWY2ZmNkM2Y5OWM1ZmE3Li4yYmM5NzhkMzQwM2Y3M2YxYzA2M2RmMjUyMzQzYzVi
ODNlYzEzMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFdl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0+CiAKICAgICB2b2lkIGNhbmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0aEVycm9y
KE5TRXJyb3IgKik7CiAKLSAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29uc3QgV2ViQ29yZTo6VVJM
JiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0KKyAgICB2b2lkIHNl
dFJlcXVlc3RVUkwoY29uc3QgVVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVl
c3RVUkw7IH0KIAogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKQEAgLTEwMyw3
ICsxMDMsNyBAQCBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPgogICAgIGJvb2wgd2FudHNBbGxTdHJlYW1zKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gbV9kZWxpdmVy
eURhdGE7Ci0gICAgV2ViQ29yZTo6VVJMIG1fcmVxdWVzdFVSTDsKKyAgICBVUkwgbV9yZXF1ZXN0
VVJMOwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9yZXNwb25zZVVSTDsKICAgICBDU3RyaW5nIG1f
bWltZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMWE3MGJjZWI2NWRmNTcxMmY2NTA1NmEy
NGY0ZTk5NTkyMjMxY2I2Zi4uMDRkMjQ2ODE3ODUzNjFlYjgxNjBhMzc1MjM4YmE4ZTQ4ZTk0YzY5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIyNyw3ICsyMjcsNyBAQCBjbGFzcyBXZWJDaHJvbWVD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKICAgICB2b2lkIHNldE1vY2tN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TWVk
aWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKICNlbmRpZgogCi0gICAgU3Ry
aW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5k
ZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBj
b25zdCBmaW5hbDsKKyAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNv
bnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQppbmRleCA1ODc4NGI5OTc5NmViYTBiNzkzMWQ3ZTJhNzhmODVlNTdhMmZh
MTE4Li45ZTUxMjUzMDUxMjRlNGZhMmFlNjMyNWRlMDIzNmE4MTIyODExZGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5hbWUsCiAK
ICNlbmRpZgogCi1TdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5n
ZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CitTdHJpbmcgV2ViQ2hyb21l
Q2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6
ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZ0ZvcldlYlZpZXc6KTsKICAgICBpZiAoW1ttX3dlYlZpZXcgVUlEZWxlZ2F0
ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CmluZGV4IDhiMjAzNjRiYjY3YTkxNzI3OGIyOTUzZmM1MTc5YTEyZGQzNjZkZGQuLjE4ODVmMDMx
MzEzNWI4MTdiMzBmOTQ1Nzc3ZDhlMjRiMTUzOWJmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudAogCiAgICAgdm9pZCBjb250ZXh0TWVudURlc3Ry
b3llZCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpV
UkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc1NwZWFraW5nKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50Lm1tCmluZGV4IGFmNzgxNGI5Njk2N2U5ZDg1ZjU5NDFkNGFmYWIzMDI0NzU2Y2YzMjUuLjYx
NjMwNDkwMTk5NmYxNTdmYzdlOThhMGU3YWIwYTBlODdlYzk5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tCkBAIC01NCw5ICs1NCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlck9i
amVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTVByaXZhdGUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFj
L05TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEkuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCA0ZTgxZDM3MDg0OGY5ZTQ0
YTQwZjUwNDBiYzlhZDhhMzdjY2FkOGUwLi44NDdhNzNiMTdhNDYxN2JkNTRhOGQyOGE5MjNjMWQ0
YTYzYmRkMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFdlYkRyYWdD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAKICAgICB2b2lkIGJlZ2luRHJh
ZyhXZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgbW91c2VEb3duUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtb3VzZURy
YWdnZWRQb3NpdGlvbiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RHJhZ1NvdXJj
ZUFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDc3MTgyZDIw
ZWJiYjM5MDcyMWFmYjgyZTU5NGUyMTlhMGI0NDBkNGQuLmZmNmQxNDFmZTNkODljYTk1YjUwZDU4
ZDc3ZGU0Njk2YTJjNTZkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTA3LDcg
KzEwNyw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50IHsKICAgICB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVu
dHMoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVu
dFJlZGlyZWN0KCkgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJl
RGF0ZSkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
Y29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIGZpbmFsOwogICAg
IHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CiAgICAgdm9pZCBk
aXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKQEAgLTE1OSw4ICsxNTks
OCBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudCB7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKSBm
aW5hbDsKIAogICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIGZpbmFsOwotICAg
IHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgV2ViQ29yZTo6VVJMJikgZmluYWw7Ci0gICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFsOworICAgIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikg
ZmluYWw7CisgICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0Vu
dGlyZVBhZ2UpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKSBmaW5hbDsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBib29sIHNob3Vs
ZEZhbGxCYWNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIAotICAgIFdU
Rjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBXVEY6
OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgZmluYWw7CiAgICAgCiAgICAgdm9pZCBzYXZl
UGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIGZpbmFsOwog
ICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNh
Y2hlZEZyYW1lKikgZmluYWw7CkBAIC0yMDYsMzAgKzIwNiwzMCBAQCBjbGFzcyBXZWJGcmFtZUxv
YWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgUmVm
PFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIGZp
bmFsOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXImKSBmaW5hbCB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIHZv
aWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVS
TCYpIGZpbmFsOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZy
YW1lT3duZXJFbGVtZW50JiwKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1l
KGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVP
d25lckVsZW1lbnQmLAogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wg
YWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIGZpbmFs
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpV
UkwmLAorICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBVUkwmLAog
ICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCByZWNyZWF0
ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0RGF0YVRv
UGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAg
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAg
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBj
b25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9s
aWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
YmFzZVVSTCwKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYs
IGNvbnN0IFVSTCYgYmFzZVVSTCwKICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYg
cGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIGZpbmFs
OwogICAgIAotICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBl
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7
CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3Qg
VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbDsKICAgICBXVEY6OlN0cmlu
ZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIAogICAgIHZvaWQgZGlzcGF0
Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikg
ZmluYWw7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBzaG91bGRMb2FkTWVkaWFFbGVt
ZW50VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc2hvdWxk
TG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAg
ICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsIHsg
cmV0dXJuIDA7IH0KQEAgLTI0Miw3ICsyNDIsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBSZWY8V2ViQ29y
ZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSBmaW5h
bDsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBXZWJDb3JlOjpVUkwm
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgVVJM
JikgY29uc3QgZmluYWw7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBSZWZQdHI8V2ViQ29y
ZTo6UHJldmlld0xvYWRlckNsaWVudD4gY3JlYXRlUHJldmlld0xvYWRlckNsaWVudChjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCmluZGV4IDI4MjEyNDI3MjMyZDIzMTkzYjI4MWNjMTVhZjIwYzIxYmQ5OWFm
NzUuLmVmZTlhMzRiYzViN2Y1OTUwZjcyY2JiZWYxYTlkMjUxZWZkYTk2MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKICAgICBXZWJWaWV3KiB2aWV3ID0gZ2V0
V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0g
Y29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IGJsYW5rVVJM
KCkpCisgICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IFdURjo6YmxhbmtVUkwoKSkK
ICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50LmgKaW5kZXggZmQ0Y2Q0YzRiMzZkOGJmZjRiY2U1N2JmMTVlZDZmODlmNGVjZDU4MC4u
MDc3ZDAxNGQzZTUzNWM3YThhYmIzNDY4ZTFkNjU0ZTlmZTliZTI3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29y
ZGluYXRvckNsaWUKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1l
bnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlu
a0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYp
IG92ZXJyaWRlOworICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0
b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRp
b24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdD
b250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRv
ckNsaWVudC5tbQppbmRleCAzMzQ5M2JkOWYxNjBiZGE4YWFjNWRhZmZmYTU5MmE1NjBmYTk5Mjgy
Li4zMGUwNmNhZjkzMWFlMDY2YzM2OWI3MzUxMTNkOWM0OGE3YmRjMGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZKQogCi0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogV2ViUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50OjpXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKQogewpAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6b3BlblBheW1lbnRTZXR1cChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLAogICAgIH0pOwogfQogCi1ib29sIFdlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudDo6c2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JikKK2Jvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpzaG93
UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiwgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggNzM5Yzk1MWY2YmQ3ZmY1NWYyOTkyYWRm
ZjNhNTA5YTZjZTEwMDU5NC4uNGVhMWFkZDNlMTIzN2UwMmU1MDA5YzExZmQ1YWI3ZTJhMmMzOTM4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBjbGFz
cyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVn
aWVzLCBwcml2YXRlIFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxv
YlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kK
LSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNv
cmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
KSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVDb29raWUoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKICNp
ZiBQTEFURk9STShJT1MpCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRl
Z2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29y
CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJD
b3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0
cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6
IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yCiAgICAg
bG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9yIGNv
bG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6
OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVVJM
IHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAogICAgIGxvbmcg
d3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4g
dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCmluZGV4IGJkNzU4MWZhNTA0ODFjOTg5N2M5YTFmY2RkMzIxOTBmNjdmMDZiNDUuLmY1
MGIwZWIzYmM0NzBlYjkxMjg1YTA1ZmRkMmQ0ZDM0NDZlMjUxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0KQEAgLTIzOSw3ICsyMzksNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
bgogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZm
ZXIoaW5kZXgsIHR5cGUpOwogfQogCi1XZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcmIHRpdGxlKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVS
TEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5yZWFkVVJMKGluZGV4LCB0aXRsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5oCmluZGV4IGQxYWI1NTExODRjMGE1ZjY0OTk0MGQ4ZTkyN2JkODRlNTI5YzdmZjAuLjUyNWVl
MmZjZGVlYTE2YzVjNmY5ZGZlODEzNWVkN2QxYzVlYmJkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Q
cm92aWRlci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFdlYlBsdWdpbkluZm9Qcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5JbmZvUHJvdmlkZXIgewogcHJpdmF0ZToKICAg
ICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOwotICAgIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdl
JiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBVUkwmKSBm
aW5hbDsKIAogICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcigpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbklu
Zm9Qcm92aWRlci5tbQppbmRleCBlMzRlYzczZTU0ZmJkOTU0MTY4ZmZjYTU1MmU0ZjM2YmM5NWY1
NDRiLi5iMDZkYTZmMGYwYzM1N2IwMGJhODc0OTFjYjE3YmZkMmZhOTRlMzYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJv
dmlkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLm1tCkBAIC03NCw3ICs3NCw3IEBAIFZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oV2ViQ29yZTo6UGFn
ZSYgcGFnCiAgICAgcmV0dXJuIHBsdWdpbnM7CiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6
OlBhZ2UmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYpCitWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3Jl
OjpQYWdlJiBwYWdlLCBjb25zdCBVUkwmKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1
cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKICAg
ICByZXR1cm4gcGx1Z2luSW5mbyhwYWdlLCBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1
cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDRlNGMxM2RmYjczYWI2NGFlZTk3ZDdhMzczOTUxM2Fl
NDkyNDI5ZmMuLmQ5YTA3ZWVjNTc4MzMyNjkwOTY4YjQ3OTRkMTVmMjViZDc5NTExYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5
T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Rh
dGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNp
dGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaXNpdGVkTGlua1N0b3JlLmgKaW5kZXggYWVmNGZjNTJhYWU0MTJmM2U2YzRlY2Y0MDM5NWI0
M2U4N2NjOTQ2Yy4uMjBlZTUxODc5NDU1OTcyYWI0YjAzYzQ2MmFlMzFmMzk0OWVjOTEzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRl
ZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBXZWJWaXNpdGVk
TGlua1N0b3JlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RvcmUgewogcHJp
dmF0ZToKICAgICBXZWJWaXNpdGVkTGlua1N0b3JlKCk7CiAKLSAgICBib29sIGlzTGlua1Zpc2l0
ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJy
aWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hh
cmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQ
YWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBv
cHVsYXRlVmlzaXRlZExpbmtzSWZOZWVkZWQoV2ViQ29yZTo6UGFnZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDYxMTc5ZmY4
ODFlMzU1ODJjNTc5NjliNzY1ZGUzNjhhNjZjMjRiYTMuLjFlMjI1OTFiMDI3MjcyM2VkMjI5NDNk
Y2JjMjNhMjZmZTk1ZTJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTU1LDcgKzU1LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUv
TUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlVVJMUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01IVE1MLmg+
CkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV2ViUERGVmlld0lPUy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMzdiMzNjODEwODQw
MmJlY2Y3ZTU0NTcwNTZjNGQ2MzcxYzIyMDQ2Yi4uNzhiZDNkNDliOTBlNzllOTdjMzg4ZDA4Njc4
NTdjN2JlYWMwYTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCkBAIC0yNTA4LDcgKzI1MDgsNyBAQCAtICh2b2lkKV9sb2FkRGF0YTooTlNEYXRhICop
ZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOgogICAg
IGlmIChiYXNlVVJMKQogICAgICAgICBiYXNlVVJMID0gW2Jhc2VVUkwgYWJzb2x1dGVVUkxdOwog
ICAgIGVsc2UgewotICAgICAgICBiYXNlVVJMID0gYmxhbmtVUkwoKTsKKyAgICAgICAgYmFzZVVS
TCA9IFdURjo6YmxhbmtVUkwoKTsKICAgICAgICAgcmVzcG9uc2VVUkwgPSBjcmVhdGVVbmlxdWVX
ZWJEYXRhVVJMKCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmlu
ZGV4IDc1NGNjY2MxYWYyODA2NTU4Y2VmOTZiODhjYzZlNjg3MzNjYTIyYTYuLmY1MTRiODQwNTRj
MjFhOTM3M2JkZTdmNWI5YTQwMWQ4ZGVmYjM0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW0KQEAgLTI1NiwxNyArMjU2LDE3IEBAIC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1h
dGlvbkNvbnRyb2xsZXI+KV9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcgogICAgIE5TVVJMICp1
cmwgPSBfaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBOU1N0cmluZyAqYWJz
b2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICBpZiAodXJsICYmIF9o
aXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSkgewotICAgICAgICBpZiAocHJvdG9jb2xJcyhhYnNv
bHV0ZVVSTFN0cmluZywgIm1haWx0byIpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMo
YWJzb2x1dGVVUkxTdHJpbmcsICJtYWlsdG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBXZWJJ
bW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmlt
YXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAocHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgInRlbCIpKSB7CisgICAgICAgIGlm
IChXVEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJ0ZWwiKSkgewogICAgICAgICAg
ICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25UZWxMaW5rOwogICAgICAgICAgICAgcmV0dXJu
IFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0
ZVVSTFN0cmluZykpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShh
YnNvbHV0ZVVSTFN0cmluZykpIHsKICAgICAgICAgICAgIF90eXBlID0gV2ViSW1tZWRpYXRlQWN0
aW9uTGlua1ByZXZpZXc7CiAKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1JhbmdlID0g
cmFuZ2VPZkNvbnRlbnRzKCpfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4IGEwOTljNDZkZTcy
Njk3ZGNkZjk1M2YxYTQxYjliNzQwYzIwMDUwNGMuLjkwMDM4MmNmOGI4MDBlYjFkNTE1OTE4NWRl
MmYzODMzYjBjNjZlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlBERlZpZXcubW0KQEAgLTYyLDkgKzYyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogZXh0ZXJu
ICJDIiB7CiAgICAgYm9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3RoaW5nKENHQ29udGV4
dFJlZiBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IDg1YWZmYzFiY2EwZDg3ODMzYjQ0OTYyMmVhMWRh
YTMyYWEwYzY0OWEuLjVmY2Y5ZjZhZmUwNTFiYjJmN2NjZjEzZTMyN2I0NWE1NTY3ODhiZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdn
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1
Z2dlci5tbQpAQCAtMzksOCArMzksOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01XaW5kb3cu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRy
b2xsZXIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggMGU3YzVkN2U5MmUyOGIyZWZlNjJmYTdjZTNh
ZDkxMmE0N2YwOTNkOC4uYjYyZjJjMzUyYTNiMDFiZWUyNzgzMDhlOWI3ODllYTkwNWFlZjY0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlOwog
Y2xhc3MgUmVuZGVyQm94OwogY2xhc3MgVGV4dEluZGljYXRvcjsKLWNsYXNzIFVSTDsKIHN0cnVj
dCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXgg
NmFmMzE1MTMxNjUxOGEyY2Y1NjI4ODgxYjQ4NWMyMjMzMGNjODA5Ny4uNzQ3MWExMTZjNzMyZGJl
ZjhmZmYxMTBjM2QxMWJjMzZjODllOGI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKaW5kZXggNjZkZWU4YTQwNDYwZjkyNWM0
OGY1OWVmNzdkOGY5MzA0NjA2OGQ0Ny4uODIwYjYyMTM2YmM4Y2QwZDMxM2ZjYzA3NGZlYTNjYzVh
MmFlYzRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdI
ZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJz
LmgKQEAgLTMwLDE1ICszMCwxNCBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBJbnRSZWN0OwotICAg
IGNsYXNzIFVSTDsKK2NsYXNzIEludFJlY3Q7CiB9CiAKIGNsYXNzIE1hcnNoYWxsaW5nSGVscGVy
cwogewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgQlNUUlRvS1VSTChCU1RSKTsK
LSAgICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgc3Rh
dGljIFVSTCBCU1RSVG9LVVJMKEJTVFIpOworICAgIHN0YXRpYyBCU1RSIFVSTFRvQlNUUihjb25z
dCBVUkwmKTsKICAgICBzdGF0aWMgQ0ZVUkxSZWYgUGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNv
bnN0IFdURjo6U3RyaW5nJik7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIEZpbGVDRlVSTFJlZlRv
UGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKTsKICAgICBzdGF0aWMgQ0ZVUkxSZWYgQlNUUlRv
Q0ZVUkxSZWYoQlNUUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGYyNDM2MDNjZTY3MTVkOGYxZjA4OGRlYWYyOWFlMDA3
MWQ4ZTk0NjguLjljZGNjMTQ1YjcxOTk5Y2RhNjk4NDE0ZTUyZmUyMmMzN2E4OTdiODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3Bw
CkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXgg
MDEzNzA4ZWJkNzFmOTgzNzA1NDlhNDQ2NDExYmZhNGM3ZmQ5MzBhZC4uYWNjMGUxZmJhNzQ2NDI5
NDQxYmI5YWQ2NGZkYmNlMjUwZDJkYjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFz
cyBJbnRTaXplOwotICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVu
dDsKICAgICBjbGFzcyBQbHVnaW5QYWNrYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4IGMzZTQ5ZjQ0MTk2
NTQ2MTBlZmQ0ZGM1ZjVlYmQ5YWIwOTFjMDZlMTUuLjgxNGUyYmI2ZGMzOTFmYzJmZmExYTk1YjY5
ZTQ2ZDQ1ODBjMDM2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRl
ICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XaW5k
b3dzRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCmlu
ZGV4IGY2MjhjY2QzZDVhNDU5MjZlNTM3MDM1MmQ4NmRjOWE3NTM1NThlNzEuLmMxYjlmODdhYzRl
NjIyZmJiMmUyZTIwNWQxNjQ1OWMwYzE5NGU3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGI0ZTkxZjZlMTJiM2Ji
OWIyYTM5ZDhiYThmMDJhOTQyMDQwNWJkMzAuLjdjZmM3YTlhODJlNzJjOTEyZjVkYjk5OWNmYjM3
YmY5Y2YxYTlmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCkBAIC02MCw3ICs2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBI
VE1MUGx1Z0luRWxlbWVudDsKICAgICBjbGFzcyBLZXlib2FyZEV2ZW50OwogICAgIGNsYXNzIE1v
dXNlRXZlbnQ7Ci0gICAgY2xhc3MgVVJMOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgIGNsYXNzIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW47CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oCmluZGV4IDIwM2QxNTY1ZTI1ODYxNzNjYTI1NjFhNTQ1YTM4ZTYwZTc1
YzhkODIuLmM5ZGU0OWIzY2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkxNThiZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVu
dUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7CiAKICAgICB2aXJ0
dWFsIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb3du
bG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRV
UkwoY29uc3QgVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3Qg
V2ViQ29yZTo6RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdl
YkNvcmU6OkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFdURjo6U3RyaW5n
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCmlu
ZGV4IDY0MzUwNzY3ZjkzNDAyNmQwOWMwZmE4Yjg4ZGNjZGQzODk0MmVkMDcuLmNjMDM4Y2VmZDkx
NWY0NTE2ZDU4N2JhZjEwOWE1YWQ2NDdhMjAxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0
b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAi
V2ViVmlldy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0Rl
bGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNr
dG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKaW5kZXggZjBmMWQ5MmYyZGIyNWI3NDQyODc3NTI0
NjJhZmJhNGJjMWQxYzdmMS4uODI5NmM4Y2NiNjg4N2QzNDU0OGQ1YTY0YzY4Njc3MjZhNzQ2MDc3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaApAQCAt
MzgsNyArMzgsNiBAQCBpbnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgVVJMOwogfQog
CiBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlIDogcHVibGljIFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzOWNk
MWMxNjc5YWRkZDIwNWJiMDdlODNmYTY5MjA5ODUzMjg1NzM2Li4zMmE5ZjBiYzMxNDAyOTkxYjg5
MjQ5ODAyNzk1NjNkZGUyMjg4OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTg1
LDcgKzg1LDcgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjoKICAgICB2b2lkIGRpc3BhdGNoRGlk
RGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91
YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNw
YXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFs
LCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZUxvY2F0aW9uV2l0aGluUGFnZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQdXNo
U3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VT
dGF0ZVdpdGhpblBhZ2UoKSBvdmVycmlkZTsKQEAgLTE0MCw4ICsxNDAsOCBAQCBjbGFzcyBXZWJG
cmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVi
bGljIFdlYkNvcmU6OgogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYs
IGNvbnN0IFVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYs
IGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikg
b3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CkBAIC0xNTQsMTIgKzE1NCwxMiBA
QCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAgYm9vbCBzaG91bGRGYWxsQmFjayhjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0cmluZyB1
c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgV1RGOjpTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAgICAgUmVmPFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBv
dmVycmlkZSB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0
aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3Jl
OjpDYWNoZWRGcmFtZSopIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVk
RnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgb3ZlcnJpZGU7CkBAIC0xODUs
MTUgKzE4NSwxNSBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAgYm9vbCBjYW5DYWNo
ZVBhZ2UoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3Jl
YXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCYsCisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1l
PiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29y
ZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJl
ZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2lu
SGVpZ2h0KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Jiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5
KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3Qg
VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlIHsgfQogICAg
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Jikgb3ZlcnJpZGU7CiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIG92ZXJyaWRlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcykgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpP
YmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6Ok9iamVj
dENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3Ry
aW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7CiAgICAgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5
cGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDBjNGZiMDQyNGQwMWVhMTE1ZDI3ZWNlNzJlMTkwMzg3
NmU1YzFlNTkuLmJlMjRjYjhhNTY4NTljZDQzY2UxOWYwYTE3YmJmODFkYTdjOTlmMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00NSwxMSArNDUsMTEgQEAgY2xhc3MgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJp
dmF0ZSBXZWJDb3IKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxv
YlJlZ2lzdHJ5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2ll
cykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJik7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFN0cmluZyYpOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCAxYTQ1YWI4ZGUyODIzN2Nm
ZGViNmYzOWRlMGYxNzRlZWI1ZDgyM2VmLi5kMzEwZDI5MTAwODcwMDllODliYWZlZjVmMGUwMTI3
NjE5NGRkZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6
cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWcKICAgICByZXR1cm4gb3V0UGx1Z2luczsKIH0K
IAotVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2Vi
VmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6VVJM
JikKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6Ondl
YlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYpCiB7CiAg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cj4+IHN1cHBvcnRlZFBsdWdpbk5hbWVzOwogICAgIHJldHVybiBwbHVnaW5JbmZvKHBhZ2UsIHN1
cHBvcnRlZFBsdWdpbk5hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5kZXggODAx
YmNiN2I0NjJkY2NkZGZjNzY1MmI2NGFmMDZmODYwZmZjNTVmYi4uMTBmNzY2ZTA2MDQ0ZDE1OWIw
YTFjZDkzOTQ5MjFlNzYxMmQ1NzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAg
LTM3LDcgKzM3LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiBwcml2YXRlOgogICAgIHZvaWQgcmVmcmVz
aFBsdWdpbnMoKSBmaW5hbDsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lu
SW5mbyhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9y
dGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwgY29uc3QgV2ViQ29y
ZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2li
bGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwgY29uc3QgVVJMJikgZmluYWw7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYg
YnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKSBmaW5hbDsKICAg
ICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5r
U3RvcmUuaAppbmRleCA2YTdiOTkyMmMzYTM5MTUyMmMzZGEwNDdlNGEwNjk3M2I0MDRkMTEwLi44
YmVkZTllMjU4MTkxODMyMDI3MGVhYjY1Mjc0YTdhOTA2ZGI1OGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExp
bmtTdG9yZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdlYlZpc2l0ZWRMaW5rU3RvcmUgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZSB7CiBwcml2YXRlOgogICAgIFdl
YlZpc2l0ZWRMaW5rU3RvcmUoKTsKIAotICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQ
YWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNl
VVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNo
LCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBv
dmVycmlkZTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3Jl
OjpTaGFyZWRTdHJpbmdIYXNoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcG9wdWxhdGVWaXNpdGVk
TGlua3NJZk5lZWRlZChXZWJDb3JlOjpQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFTb3VyY2UuY3BwCmluZGV4IGE2ODJjNjI3NTBlMTFmNTIxNTY3MjFmM2Q4MjgyZDU3ZTBm
ODA2ZDIuLmI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuaAppbmRleCA4NDg4NWYyNGZiODM0YTJkZmNh
ODJlZWI3OWUxOWM3MTkxMDRhNDcyLi40ZjYxMTFlMjNiMmMyZTA3ZTBhZTRhZmFkNThlYTUwZWQx
YTMyYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmgKQEAgLTM4LDcgKzM4
LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgVVJMOwogICAg
IGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNTIsMTMgKzUxLDEzIEBAIGNsYXNzIFdlYkRvd25s
b2FkCiAjZW5kaWYKIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUlu
c3RhbmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAg
c3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJbnN0YW5jZShjb25zdCBVUkwmLCBJV2ViRG93bmxv
YWREZWxlZ2F0ZSopOwogICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRlSW5zdGFuY2UoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsK
ICAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKCk7CiBwcml2YXRlOgogICAg
IFdlYkRvd25sb2FkKCk7CiAgICAgdm9pZCBpbml0KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7Ci0gICAgdm9pZCBpbml0KGNvbnN0IFdl
YkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAgdm9pZCBpbml0KGNvbnN0
IFVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CiAgICAgfldlYkRvd25sb2FkKCk7CiBwdWJs
aWM6CiAgICAgLy8gSVVua25vd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJF
bGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IGNkZjhjYWQ2YTM2OTZlZWJhY2U2MmY0ZTU3ODRj
ZWU0YmVmMWQ5ZTkuLjI3YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQwZTFhYzUwYWQ3MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNw
cApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9i
amVjdC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IGRiZWE2OThhNTc1MDIxMmE1MDY1
MGU3ODM5MTY5ZDBhNWUxYjM3NTQuLmM0ZDA4MzYyZGFkNWU4MzkzZThkZmY4MzFjMjU5ODFhMmM3
N2ZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtMzQsOSArMzQsOSBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHNhbC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBjbGFzcyBE
RUNMU1BFQ19VVUlEKCJ7QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQwRTYzNTFEfSIpIFdl
YkZyYW1lIDogcHVibGljCiAgICAgSFJFU1VMVCBtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGNv
bnN0IEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElET01FbGVtZW50KiBhZ2FpbnN0RWxlbWVu
dCwgQlNUUiogcmVzdWx0KTsKICAgICBIUkVTVUxUIGNhblByb3ZpZGVEb2N1bWVudFNvdXJjZShi
b29sKiByZXN1bHQpOwogCi0gICAgV2ViQ29yZTo6VVJMIHVybCgpIGNvbnN0OworICAgIFVSTCB1
cmwoKSBjb25zdDsKIAogICAgIFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsKICAgICB2b2lkIHNl
dFdlYlZpZXcoV2ViVmlldyopOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIERFQ0xTUEVDX1VV
SUQoIntBMzY3NjM5OC00NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJhbWUgOiBw
dWJsaWMKICAgICBjbGFzcyBXZWJGcmFtZVByaXZhdGU7CiAgICAgV2ViRnJhbWVQcml2YXRlKiBk
OwogICAgIGJvb2wgbV9xdWlja1JlZGlyZWN0Q29taW5nIHsgZmFsc2UgfTsKLSAgICBXZWJDb3Jl
OjpVUkwgbV9vcmlnaW5hbFJlcXVlc3RVUkw7CisgICAgVVJMIG1fb3JpZ2luYWxSZXF1ZXN0VVJM
OwogICAgIGJvb2wgbV9pblByaW50aW5nTW9kZSB7IGZhbHNlIH07CiAKICAgICBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4gbV9wYWdlUmVjdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwCmluZGV4IDIyYjA4NDZhOTA2Yjc4Mjg2NTZiOGQ5NTdjMTBhMGRmYWZmOGIzMDEuLjAy
MzM4NGNlOTZmMTA5NDljZGQ1OWY3NzRhODE0NWViYmVhN2I3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAKICNpbmNsdWRlICJXZWJW
aXNpdGVkTGlua1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
aXN0b3J5LmgKaW5kZXggMTdhZmY5MjgyN2QxZDEwOWI1M2U5Y2RjYzZjZTQ5YzhiZTNlNzBlNS4u
NjkzNzRkZjAyMDFkODk4Zjc3ZDZiMTIxOThjNjc1ZGNlNDgxODA4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuaApAQCAtMzMsOCArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBVUkw7Ci0gICAgY2xhc3Mg
UGFnZUdyb3VwOworY2xhc3MgUGFnZUdyb3VwOwogfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC03OCw3ICs3Nyw3IEBAIGNsYXNzIFdlYkhpc3RvcnkgOiBwdWJsaWMgSVdlYkhpc3Rvcnks
IHB1YmxpYyBJV2ViSGlzdG9yeVByaXZhdGUgewogCiAgICAgLy8gV2ViSGlzdG9yeQogICAgIHN0
YXRpYyBXZWJIaXN0b3J5KiBzaGFyZWRIaXN0b3J5KCk7Ci0gICAgdm9pZCB2aXNpdGVkVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV1RGOjpT
dHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9vbCBpbmNyZWFzZVZpc2l0Q291
bnQpOworICAgIHZvaWQgdmlzaXRlZFVSTChjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYg
dGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1cmUsIGJv
b2wgaW5jcmVhc2VWaXNpdENvdW50KTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rc1RvVmlzaXRl
ZExpbmtTdG9yZShXZWJWaXNpdGVkTGlua1N0b3JlJik7CiAKICAgICBDT01QdHI8SVdlYkhpc3Rv
cnlJdGVtPiBpdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggODQzNzYyMDFkMDdl
YjNmZWY1ZWIyZDlhNzIxNzZkMzE3Zjk5MTIyZS4uYTg1NTlhNWZkMjI3Y2JkMmIxN2VhZjI4NWVh
NjM5NWVhZmY4YTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlz
dG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVt
LmNwcApAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
Y3BwCmluZGV4IGIyOTJkZGU3ZGNjZWY2MmZjYTczYjBjNGNiNGJhYjJhZGM1YmZmYjAuLjk0M2Zh
N2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIC8vIFdlYlJlc291cmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZWJSZXNvdXJjZTo6V2Vi
UmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpCitXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2Uo
SVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RGOjpT
dHJpbmcmIGZyYW1lTmFtZSkKICAgICA6IG1fZGF0YShkYXRhKQogICAgICwgbV91cmwodXJsKQog
ICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5oCmluZGV4IGI4YzdkY2NiMDM3NDlhYjc4NzNlMzdmZmEyOWYyNTJjNjUzYmViYTUuLjRkZjNl
MGMxMTUwNDY1MGE5ZjJiMDFjMjE3MWUyMWZjMjFhMGI5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuaApAQCAtMjgsMTcgKzI4LDE3IEBACiAKICNpbmNsdWRlICJXZWJLaXQu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBjbGFzcyBXZWJSZXNv
dXJjZSA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJSZXNv
dXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogcHJvdGVjdGVkOgotICAgIFdlYlJlc291
cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25z
dCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKTsKKyAgICBXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRh
LCBjb25zdCBXVEY6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVO
YW1lKTsKICAgICB+V2ViUmVzb3VyY2UoKTsKIAogcHVibGljOgpAQCAtNTgsNyArNTgsNyBAQCBj
bGFzcyBXZWJSZXNvdXJjZSA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHJpdmF0ZToKICAgICBV
TE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIENPTVB0cjxJU3RyZWFtPiBtX2RhdGE7Ci0gICAg
V2ViQ29yZTo6VVJMIG1fdXJsOworICAgIFdURjo6VVJMIG1fdXJsOwogICAgIFdURjo6U3RyaW5n
IG1fbWltZVR5cGU7CiAgICAgV1RGOjpTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgIFdU
Rjo6U3RyaW5nIG1fZnJhbWVOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2Vj
dXJpdHlPcmlnaW4uY3BwCmluZGV4IDgxYjI2OWZjNDIwYzU5Y2M2ZWY1ZDk5MmZjNzZjYzQ5YjBl
YTBmYjguLjk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3N2YwY2QwNjAwMjQ2YTEwMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rh
dGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNw
b25zZS5jcHAKaW5kZXggNDU3NmMyMjI1YzgzNTdmMzA2NzA2NzNjMTg4MDVkMzM4ZjQ4MmJiNC4u
MmQ4ZjA1Y2Y0YjMyOWU3OTJhNmNmNGMzNWJmZDk0YjQ0NDZiNjQ2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiAjZW5k
aWYKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNo
bHdhcGkuaD4KICNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBXZWJVUkxSZXNwb25z
ZSogV2ViVVJMUmVzcG9uc2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25z
ZSogaW5zdGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAg
cmVzcG9uc2UgLSBzbyBpdCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0g
ICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVSTCh7
IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1f
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8iKSwgU3Ry
aW5nKCksIDAsIFN0cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJu
IGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJD
b250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggYmQxMjY3NThhNTFjYzM1MzhmOWFjOTUzN2NmYjFm
YzdkZmRhZTM4OC4uNDgxMjM4NDcxM2M4Yjk5ZGE1Y2JhNWI2M2YyNTQ0NDlmZTUwYzY0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAKICNpbmNs
dWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuaAppbmRleCAzY2ZkNjY3NjhlYjMyN2FlYWRjN2EwOWU0ZDI3Y2VhMjQ5NDhm
ZDdlLi4xYjcyYmJlODI3MzRjZTgzMzYyYTcyYzkwZWMyYjhmMDZlNThmZjQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5oCkBAIC00NjMsNyArNDYzLDcgQEAgY2xhc3MgV2ViVmlldwogCiAg
ICAgLy8gQ29udmVuaWVudCB0byBiZSBhYmxlIHRvIHZpb2xhdGUgdGhlIHJ1bGVzIG9mIENPTSBo
ZXJlIGZvciBlYXN5IG1vdmVtZW50IHRvIHRoZSBmcmFtZS4KICAgICBXZWJGcmFtZSogdG9wTGV2
ZWxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lOyB9Ci0gICAgY29uc3QgV1RGOjpT
dHJpbmcmIHVzZXJBZ2VudEZvcktVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpOworICAgIGNv
bnN0IFdURjo6U3RyaW5nJiB1c2VyQWdlbnRGb3JLVVJMKGNvbnN0IFVSTCYgdXJsKTsKIAogICAg
IHN0YXRpYyBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCBjbGFzcyBXZWJWaWV3CiAgICAgYm9vbCBvbkdl
dE9iamVjdChXUEFSQU0sIExQQVJBTSwgTFJFU1VMVCYpIGNvbnN0OwogICAgIHN0YXRpYyBTVERN
RVRIT0RJTVAgQWNjZXNzaWJsZU9iamVjdEZyb21XaW5kb3coSFdORCwgRFdPUkQgb2JqZWN0SUQs
IFJFRklJRCwgdm9pZCoqIHBwT2JqZWN0KTsKIAotICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKTsKIAogICAg
IHZvaWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCk7CiAgICAgdm9pZCBz
ZXRSb290Q2hpbGRMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2NjN2Q3NzUwZDM3OTg5OTVi
ODBmOWJlMWU0YTFlMzAzYmQ5NzBmYS4uZTRkY2E5MzE3NDQ2MTM1OTYwMWExMzEzOTYyZTUyYTdj
N2RiYmMyMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM3IEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRvIFdU
RgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpjcmVhdGVVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNo
ZWNrUmVsYXRpdmVVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVUkxEaWZmZXJl
bmNlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5j
ZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWly
a3MuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9VUkxFeHRyYXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpvcmlnaW5hbERh
dGFBc1N0cmluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp1c2VyVmlzaWJsZVN0cmluZyk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpsaXRlcmFsVVJMKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbToK
KyAgICAgICAgKGxpdGVyYWxVUkwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tOgorICAgICAgICAoLVtMb2FkSW52YWxp
ZFVSTFdlYkZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdp
dGhFcnJvcjpmb3JGcmFtZTpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9T
U0xLZXlHZW5lcmF0b3IubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1V
dGlsaXRpZXNXaW4uY3BwOgorCiAyMDE4LTEwLTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJLaXQyXSBGb3JtYXQgPiBCb2xkIGFuZCBGb3Jt
YXQgPiBJdGFsaWMgZG9uJ3QgdG9nZ2xlIGJldHdlZW4gYm9sZCBhbmQgaXRhbGljIHN0eWxlCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVu
c2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRl
bnNpb25zLmNwcAppbmRleCA1OGU2OWQwZGY2MzA1OTdhMTBkYjJlOWM5NmEyZDhkZGNkYWE3YzY5
Li4xODhiOGJkZTBjNWYzNDllZGM5ZjQyNWNmOTA4M2NjNzc2OGQwNzA3IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5j
cHAKQEAgLTM4LDEwICszOCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTkZBLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9ORkFUb0RGQS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkSW5m
by5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkxGaWx0
ZXJQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4
IGI5MjgzMjRmMzU5OGRkYjQ2MTdhMWRlZWI4ODI2MzYwYzY1YTQyMDUuLmFhZDE2Yjg2MDQxNzlj
YTQzYTk3NzM3OTU4NTRiNTc1NzczYWZjOWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjgsOCArMjgsOCBAQAog
I2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvVVJMLmNwcAppbmRleCA3MzUzNGM4MTczM2ViYTQ1MmYzMmZkOWY4MjE3
MWJhOWJhNTRiNmJiLi5kYzMxYjQ3YmQwNzg2OGFlZGNhZmY5N2Y1NjU2ZDgzZjc4OWQ4MzIxIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNwcApAQCAtMjUsMTEgKzI1
LDkgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGll
cy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJz
ZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKQEAgLTczLDggKzcxLDcgQEAgVEVTVF9GKFVS
TFRlc3QsIFVSTENvbnN0cnVjdG9yQ29uc3RDaGFyKQogCiBzdGF0aWMgVVJMIGNyZWF0ZVVSTChj
b25zdCBjaGFyKiB1cmxBc1N0cmluZykKIHsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKHVybEFzU3Ry
aW5nKTsKLSAgICByZXR1cm4gcGFyc2VyLnJlc3VsdCgpOworICAgIHJldHVybiBVUkwoeyB9LCB1
cmxBc1N0cmluZyk7CiB9OwogCiBURVNUX0YoVVJMVGVzdCwgVVJMUHJvdG9jb2xIb3N0QW5kUG9y
dCkKQEAgLTMxNywyMCArMzE0LDIwIEBAIFRFU1RfRihVUkxUZXN0LCBFcXVhbElnbm9yaW5nUXVl
cnlBbmRGcmFnbWVudCkKIAogVEVTVF9GKFVSTFRlc3QsIFByb3RvY29sSXNJbkhUVFBGYW1pbHkp
CiB7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoe30pKTsKLSAgICBF
WFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiIikpOwotICAgIEVYUEVDVF9GQUxT
RShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhIikpOwotICAgIEVYUEVDVF9GQUxTRShwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCJhYiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRU
UEZhbWlseSgiYWJjIikpOwotICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5
KCJhYmNkIikpOwotICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNk
ZSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZGVmIikp
OwotICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNkZWZnIikpOwot
ICAgIEVYUEVDVF9UUlVFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHA6IikpOwotICAgIEVY
UEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwIikpOwotICAgIEVYUEVDVF9U
UlVFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzOiIpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cHMiKSk7Ci0gICAgRVhQRUNUX1RSVUUocHJvdG9j
b2xJc0luSFRUUEZhbWlseSgiaHR0cHM6Ly8hQCMkJV4mKigpIikpOworICAgIEVYUEVDVF9GQUxT
RShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoeyB9KSk7CisgICAgRVhQRUNUX0ZBTFNFKFdU
Rjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoImEiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9j
b2xJc0luSFRUUEZhbWlseSgiYWIiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgiYWJjIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoImFiY2QiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgiYWJjZGUiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgiYWJjZGVmIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoImFiY2RlZmciKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpwcm90b2NvbElz
SW5IVFRQRmFtaWx5KCJodHRwOiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElz
SW5IVFRQRmFtaWx5KCJodHRwIikpOworICAgIEVYUEVDVF9UUlVFKFdURjo6cHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgiaHR0cHM6IikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoImh0dHBzIikpOworICAgIEVYUEVDVF9UUlVFKFdURjo6cHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgiaHR0cHM6Ly8hQCMkJV4mKigpIikpOwogfQogCiBURVNUX0YoVVJMVGVzdCwg
SG9zdElzSVBBZGRyZXNzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VSTFBhcnNlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VVJMUGFyc2VyLmNwcAppbmRleCAzZTEwNTkyYTAzZDBhYjAxZTJjMTY2YTQ1M2VhYWVlYzFmYTAz
OWMxLi4xYzRkY2RkMDVlMjFkN2I1ZmQ3YWI3ZGZlODVkOGYwNWMxYWM4YTdhIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcApAQCAtMjYsOCAr
MjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGll
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyB2b2lkIGNo
ZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0
cywgVGVzdFRhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVu
dElkZW50aWZpZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnN0cmluZywgdXJsLnN0
cmluZygpKSk7CiAKLSAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29u
c2lzdGVudCh1cmwpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OlVSTFBhcnNlcjo6aW50ZXJuYWxW
YWx1ZXNDb25zaXN0ZW50KHVybCkpOwogCiAgICAgaWYgKHRlc3RUYWJzID09IFRlc3RUYWJzOjpO
bykKICAgICAgICAgcmV0dXJuOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNr
UmVsYXRpdmVVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TFN0cmluCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnN0cmluZywgdXJsLnN0cmlu
ZygpKSk7CiAgICAgCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0Nv
bnNpc3RlbnQodXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFs
VmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKICAgICAKICAgICBpZiAodGVzdFRhYnMgPT0gVGVzdFRh
YnM6Ok5vKQogICAgICAgICByZXR1cm47CkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIHZvaWQg
Y2hlY2tVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0
ZWRQYXJ0cyYgcGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuc3RyaW5n
LCB1cmwuc3RyaW5nKCkpKTsKICAgICAKLSAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6OmludGVy
bmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OlVSTFBhcnNl
cjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwogICAgIAogICAgIGlmICh0ZXN0VGFi
cyA9PSBUZXN0VGFiczo6Tm8pCiAgICAgICAgIHJldHVybjsKQEAgLTE4Nyw3ICsxODcsNyBAQCBz
dGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgYgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LmZyYWdt
ZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
c05ldy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogICAgIAotICAgIEVYUEVDVF9UUlVFKFVSTFBh
cnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOworICAgIEVYUEVDVF9UUlVFKFdU
Rjo6VVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CiAgICAgCiAgICAg
aWYgKHRlc3RUYWJzID09IFRlc3RUYWJzOjpObykKICAgICAgICAgcmV0dXJuOwpAQCAtMjEzLDgg
KzIxMyw3IEBAIHN0YXRpYyB2b2lkIHNob3VsZEZhaWwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgYmFzZVN0cmluZykKIAogc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNvbnN0IEV4
cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGFicyB0ZXN0VGFicyA9IFRlc3RUYWJzOjpZZXMpCiB7
Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxTdHJpbmcsIHsgfSwgZW5jb2RpbmcpOwotICAgIGF1
dG8gdXJsID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgdXJsU3Ry
aW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5w
cm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CkBAIC0y
MzgsOSArMjM3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNvbnMKIAogc3RhdGljIHZvaWQgY2hl
Y2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmlu
ZywgY29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFy
dHMsIFRlc3RUYWJzIHRlc3RUYWJzID0gVGVzdFRhYnM6OlllcykKIHsKLSAgICBVUkxQYXJzZXIg
YmFzZVBhcnNlcihiYXNlVVJMU3RyaW5nLCB7IH0sIGVuY29kaW5nKTsKLSAgICBVUkxQYXJzZXIg
cGFyc2VyKHVybFN0cmluZywgYmFzZVBhcnNlci5yZXN1bHQoKSwgZW5jb2RpbmcpOwotICAgIGF1
dG8gdXJsID0gcGFyc2VyLnJlc3VsdCgpOworICAgIGF1dG8gdXJsID0gVVJMKFVSTCh7IH0sIGJh
c2VVUkxTdHJpbmcpLCB1cmxTdHJpbmcsIGVuY29kaW5nKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQs
IHVybC5wYXNzKCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAKaW5kZXggNGM4MDMyYjkzNmNmZTNhNTkxZjIwMmVmMGUw
ZWExZGYwZWY3ZDdiNy4uMGM1ZTYzNzc5YmE3ZTAxZmE2ODliNzA5ZDNhZjdmZTUxOGY3MDA0MyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1
aXJrcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2Vu
dFF1aXJrcy5jcHAKQEAgLTI1LDggKzI1LDggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0j
aW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBZ2VudC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1lvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggNzZiMTAzNTc1Y2E0MjVjZTNmZTU4ZGEzMTM2YjBl
ZWMwZDZkM2YxZS4uMzAwYjEzY2JjYTEwYzIxYjMwN2VlZTMxMTRkZTAwZmJmMGZlMDJkMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1lvdVR1YmVQbHVnaW5S
ZXBsYWNlbWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1lv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTI0LDkgKzI0LDkgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1VSTEV4
dHJhcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRy
YXMubW0KaW5kZXggNmZmZDdkYWNiM2ZjMDIxMmE0MDRkODU2YjMxOGM5MzY5Zjg5ZmU5Ni4uYjY0
MGIxMGJmZjJmMDE5YjcyNzI0M2E3YzYwMDg1MWFkYWZkNzVlMCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1VSTEV4dHJhcy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tCkBAIC0yNSw4
ICsyNSw4IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL2Nv
Y29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNTAsMTcgKzUwLDE3IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBkYXRhQXNTdHJpbmcoTlNEYXRhICpkYXRhKQogCiBzdGF0aWMgY29uc3QgY2hhciogb3Jp
Z2luYWxEYXRhQXNTdHJpbmcoTlNVUkwgKlVSTCkKIHsKLSAgICByZXR1cm4gZGF0YUFzU3RyaW5n
KFdlYkNvcmU6Om9yaWdpbmFsVVJMRGF0YShVUkwpKTsKKyAgICByZXR1cm4gZGF0YUFzU3RyaW5n
KFdURjo6b3JpZ2luYWxVUkxEYXRhKFVSTCkpOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogdXNl
clZpc2libGVTdHJpbmcoTlNVUkwgKlVSTCkKIHsKLSAgICByZXR1cm4gW1dlYkNvcmU6OnVzZXJW
aXNpYmxlU3RyaW5nKFVSTCkgVVRGOFN0cmluZ107CisgICAgcmV0dXJuIFtXVEY6OnVzZXJWaXNp
YmxlU3RyaW5nKFVSTCkgVVRGOFN0cmluZ107CiB9CiAKIHN0YXRpYyBOU1VSTCAqbGl0ZXJhbFVS
TChjb25zdCBjaGFyKiBsaXRlcmFsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpVUkxXaXRoRGF0
YShsaXRlcmFsQXNEYXRhKGxpdGVyYWwpLCBuaWwpOworICAgIHJldHVybiBXVEY6OlVSTFdpdGhE
YXRhKGxpdGVyYWxBc0RhdGEobGl0ZXJhbCksIG5pbCk7CiB9CiAKIFRFU1QoV2ViQ29yZSwgVVJM
RXh0cmFzKQpAQCAtMTI3LDggKzEyNyw4IEBAIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX0Rpdmlz
aW9uU2lnbikKICAgICAvLyBTZWxlY3RlZCB0aGUgZGl2aXNpb24gc2lnbiBhcyBhbiBleGFtcGxl
IG9mIGEgbm9uLUFTQ0lJIGNoYXJhY3RlciB0aGF0IGlzIGFsbG93ZWQgaW4gaG9zdCBuYW1lcywg
c2luY2UgaXQncyBhIGxvb2thbGlrZSBjaGFyYWN0ZXIuCiAKICAgICAvLyBDb2RlIHBhdGggc2lt
aWxhciB0byB0aGUgb25lIHVzZWQgd2hlbiB0eXBpbmcgaW4gYSBVUkwuCi0gICAgRVhQRUNUX1NU
UkVRKCJodHRwOi8vc2l0ZS54bi0tY29tb3RoZXJzaXRlLWtqYi5vcmciLCBvcmlnaW5hbERhdGFB
c1N0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29t
XHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgbmlsKSkpOwotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDov
L3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmcoV2ViQ29y
ZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJz
aXRlLm9yZyIsIG5pbCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLnhuLS1jb21v
dGhlcnNpdGUta2piLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJU
eXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIG5pbCkp
KTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9y
ZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6
Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKIAogICAgIC8vIENvZGUg
cGF0aHMgc2ltaWxhciB0byB0aGUgb25lcyB1c2VkIGZvciBVUkxzIGZvdW5kIGluIHdlYnBhZ2Vz
IG9yIEhUVFAgcmVzcG9uc2VzLgogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tXHhD
M1x4QjdvdGhlcnNpdGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcobGl0ZXJhbFVSTCgiaHR0
cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIikpKTsKQEAgLTEzNywxNyArMTM3LDE3
IEBAIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX0RpdmlzaW9uU2lnbikKICAgICBFWFBFQ1RfU1RS
RVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3Ry
aW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVDMyVCN290aGVyc2l0ZS5vcmciKSkpOwog
CiAgICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5h
bWUgb24gaXRzIG93bi4KLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUueG4tLWNvbW90aGVyc2l0ZS1r
amIub3JnIiwgW1dlYkNvcmU6OmVuY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEMzXHhCN290aGVy
c2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbVx4QzNc
eEI3b3RoZXJzaXRlLm9yZyIsIFtXZWJDb3JlOjpkZWNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhD
M1x4QjdvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJFUSgic2l0
ZS54bi0tY29tb3RoZXJzaXRlLWtqYi5vcmciLCBbV1RGOjplbmNvZGVIb3N0TmFtZShAInNpdGUu
Y29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJF
USgic2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBbV1RGOjpkZWNvZGVIb3N0TmFtZShA
InNpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwogfQogCi1URVNU
KFdlYkNvcmUsIFVSTEV4dHJhc19Tb2xpZHVzKQorVEVTVChXVEYsIFVSTEV4dHJhc19Tb2xpZHVz
KQogewogICAgIC8vIFNlbGVjdGVkIGZ1bGwgd2lkdGggc29saWR1cywgd2hpY2ggbG9va3MgbGlr
ZSB0aGUgc29saWR1cywgd2hpY2ggaXMgdGhlIGNoYXJhY3RlciB0aGF0IGluZGljYXRlcyB0aGUg
ZW5kIG9mIHRoZSBob3N0IG5hbWUuCiAKICAgICAvLyBDb2RlIHBhdGggc2ltaWxhciB0byB0aGUg
b25lIHVzZWQgd2hlbiB0eXBpbmcgaW4gYSBVUkwuCi0gICAgRVhQRUNUX1NUUkVRKCJodHRwOi8v
c2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKFdlYkNvcmU6OlVS
TFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNp
dGUub3JnIiwgbmlsKSkpOwotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tL290aGVy
c2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3Ry
aW5nKEAiaHR0cDovL3NpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgb3JpZ2lu
YWxEYXRhQXNTdHJpbmcoV1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUu
Y29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly9zaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmcoV1RGOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJz
aXRlLm9yZyIsIG5pbCkpKTsKIAogICAgIC8vIENvZGUgcGF0aHMgc2ltaWxhciB0byB0aGUgb25l
cyB1c2VkIGZvciBVUkxzIGZvdW5kIGluIHdlYnBhZ2VzIG9yIEhUVFAgcmVzcG9uc2VzLgogICAg
IEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIs
IG9yaWdpbmFsRGF0YUFzU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJD
XHg4Rm90aGVyc2l0ZS5vcmciKSkpOwpAQCAtMTU2LDggKzE1Niw4IEBAIFRFU1QoV2ViQ29yZSwg
VVJMRXh0cmFzX1NvbGlkdXMpCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20lRUYl
QkMlOEZvdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmcobGl0ZXJhbFVSTCgiaHR0cDov
L3NpdGUuY29tJUVGJUJDJThGb3RoZXJzaXRlLm9yZyIpKSk7CiAKICAgICAvLyBTZXBhcmF0ZSBm
dW5jdGlvbnMgdGhhdCBkZWFsIHdpdGgganVzdCBhIGhvc3QgbmFtZSBvbiBpdHMgb3duLgotICAg
IEVYUEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXZWJDb3JlOjplbmNvZGVI
b3N0TmFtZShAInNpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmdd
KTsKLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tL290aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6
ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciKSBVVEY4
U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgW1dU
Rjo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciKSBV
VEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwg
W1dURjo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmci
KSBVVEY4U3RyaW5nXSk7CiB9CiAKIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX1NwYWNlKQpAQCAt
MTY1LDggKzE2NSw4IEBAIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX1NwYWNlKQogICAgIC8vIFNl
bGVjdGVkIGlkZW9ncmFwaGljIHNwYWNlLCB3aGljaCBsb29rcyBsaWtlIHRoZSBBU0NJSSBzcGFj
ZSwgd2hpY2ggaXMgbm90IGFsbG93ZWQgdW5lc2NhcGVkLgogCiAgICAgLy8gQ29kZSBwYXRoIHNp
bWlsYXIgdG8gdGhlIG9uZSB1c2VkIHdoZW4gdHlwaW5nIGluIGEgVVJMLgotICAgIEVYUEVDVF9T
VFJFUSgiaHR0cDovL3NpdGUuY29tJTIwb3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3Ry
aW5nKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEUz
XHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgbmlsKSkpOwotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDov
L3NpdGUuY29tJTIwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdlYkNvcmU6OlVS
TFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNp
dGUub3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJTIwb3Ro
ZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0
cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBuaWwpKSk7
CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20lMjBvdGhlcnNpdGUub3JnIiwgdXNl
clZpc2libGVTdHJpbmcoV1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUu
Y29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKIAogICAgIC8vIENvZGUgcGF0
aHMgc2ltaWxhciB0byB0aGUgb25lcyB1c2VkIGZvciBVUkxzIGZvdW5kIGluIHdlYnBhZ2VzIG9y
IEhUVFAgcmVzcG9uc2VzLgogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tXHhFM1x4
ODBceDgwb3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKGxpdGVyYWxVUkwoImh0
dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSkpOwpAQCAtMTc1LDMxICsx
NzUsMzEgQEAgVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfU3BhY2UpCiAgICAgRVhQRUNUX1NUUkVR
KCJodHRwOi8vc2l0ZS5jb20lRTMlODAlODBvdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJp
bmcobGl0ZXJhbFVSTCgiaHR0cDovL3NpdGUuY29tJUUzJTgwJTgwb3RoZXJzaXRlLm9yZyIpKSk7
CiAKICAgICAvLyBTZXBhcmF0ZSBmdW5jdGlvbnMgdGhhdCBkZWFsIHdpdGgganVzdCBhIGhvc3Qg
bmFtZSBvbiBpdHMgb3duLgotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb20gb3RoZXJzaXRlLm9y
ZyIsIFtXZWJDb3JlOjplbmNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJz
aXRlLm9yZyIpIFVURjhTdHJpbmddKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tXHhFM1x4
ODBceDgwb3RoZXJzaXRlLm9yZyIsIFtXZWJDb3JlOjpkZWNvZGVIb3N0TmFtZShAInNpdGUuY29t
XHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RS
RVEoInNpdGUuY29tIG90aGVyc2l0ZS5vcmciLCBbV1RGOjplbmNvZGVIb3N0TmFtZShAInNpdGUu
Y29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoInNpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmRlY29kZUhv
c3ROYW1lKEAic2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10p
OwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19GaWxlKQogewotICAgIEVYUEVDVF9TVFJF
USgiZmlsZTovLy8lRTIlOTglODMiLCBbW1dlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmco
QCJmaWxlOi8vL+KYgyIsIG5pbCkgYWJzb2x1dGVTdHJpbmddIFVURjhTdHJpbmddKTsKKyAgICBF
WFBFQ1RfU1RSRVEoImZpbGU6Ly8vJUUyJTk4JTgzIiwgW1tXVEY6OlVSTFdpdGhVc2VyVHlwZWRT
dHJpbmcoQCJmaWxlOi8vL+KYgyIsIG5pbCkgYWJzb2x1dGVTdHJpbmddIFVURjhTdHJpbmddKTsK
IH0KIAogVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfUGFyc2luZ0Vycm9yKQogewogICAgIC8vIEV4
cGVjdCBJRE4gZmFpbHVyZS4KLSAgICBOU1VSTCAqdXJsID0gV2ViQ29yZTo6VVJMV2l0aFVzZXJU
eXBlZFN0cmluZyhAImh0dHA6Ly/vo78uY29tIiwgbmlsKTsKKyAgICBOU1VSTCAqdXJsID0gV1RG
OjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL++jvy5jb20iLCBuaWwpOwogICAgIEVY
UEVDVF9UUlVFKHVybCA9PSBuaWwpOwogCi0gICAgTlNTdHJpbmcgKmVuY29kZWRIb3N0TmFtZSA9
IFdlYkNvcmU6OmVuY29kZUhvc3ROYW1lKEAiaHR0cDovL++jvy5jb20iKTsKKyAgICBOU1N0cmlu
ZyAqZW5jb2RlZEhvc3ROYW1lID0gV1RGOjplbmNvZGVIb3N0TmFtZShAImh0dHA6Ly/vo78uY29t
Iik7CiAgICAgRVhQRUNUX1RSVUUoZW5jb2RlZEhvc3ROYW1lID09IG5pbCk7CiB9CiAKIFRFU1Qo
V2ViQ29yZSwgVVJMRXh0cmFzX05pbCkKIHsKLSAgICBOU1VSTCAqdXJsMSA9IFdlYkNvcmU6OlVS
TFdpdGhVc2VyVHlwZWRTdHJpbmcobmlsLCBuaWwpOworICAgIE5TVVJMICp1cmwxID0gV1RGOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKG5pbCwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwxID09
IG5pbCk7CiAKLSAgICBOU1VSTCAqdXJsMiA9IFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJp
bmdEZXByZWNhdGVkKG5pbCwgbmlsKTsKKyAgICBOU1VSTCAqdXJsMiA9IFdURjo6VVJMV2l0aFVz
ZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQobmlsLCBuaWwpOwogICAgIEVYUEVDVF9UUlVFKHVybDIg
PT0gbmlsKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Mb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0KaW5kZXggNTA1YWYz
NTdlNWQxMDFkMTc2YjUyM2QxNTVhNjI5NGJiZThmN2ZkZi4uOTBkNDYxMGM3NDEwOTlmYWU0YTYw
YmU5Nzc2NWNjM2Q3YjBlY2Q0NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Mb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tCkBA
IC0zMCw5ICszMCw5IEBACiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJUZXN0LmgiCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBzdGF0aWMgYm9vbCBpc0RvbmU7
CiBzdGF0aWMgaW50IHByb3Zpc2lvbmFsTG9hZENvdW50OwpAQCAtMTEwLDcgKzExMCw3IEBAIFRF
U1QoV0tXZWJWaWV3LCBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ0Zyb21Qcm92aXNpb25hbExvYWRF
cnJvckJhY2tUb0JhY2spCiAgICAgICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CiAKICAgICAgICAgY2hhciBsaXRlcmFsW10gPSAiaHR0cHM6Ly93d3cu
ZXhhbXBsZS5jb208Pi8iOwotICAgICAgICBOU1VSTCogdGFyZ2V0VVJMID0gV2ViQ29yZTo6VVJM
V2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRl
cmFsKV0sIG5pbCk7CisgICAgICAgIE5TVVJMKiB0YXJnZXRVUkwgPSBXVEY6OlVSTFdpdGhEYXRh
KFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBu
aWwpOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOnRhcmdldFVSTF1dOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRhcmdldFVSTF1dOwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEludmFsaWRVUkxSZXF1
ZXN0Lm1tCmluZGV4IGFjOThjMTk2NDQwYWI3YjU1MDg0Yzk1ZDc4ZDA5ZmU3ZmM3OTdlM2MuLmVh
YTU1Y2FjNjdmOGU4NDQxNDMyN2Q0ZGFlMzI2MDk2NDVkOTViYWMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEludmFsaWRV
UkxSZXF1ZXN0Lm1tCkBAIC0yOCwxMCArMjgsMTAgQEAKICNpZiBXS19BUElfRU5BQkxFRAogCiAj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNV
UkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25Qcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogc3RhdGljIGJvb2wgZGlkRmluaXNoVGVz
dDsKIHN0YXRpYyBib29sIGRpZEZhaWxQcm92aXNpb25hbExvYWQ7CkBAIC0zOSw3ICszOSw3IEBA
IHN0YXRpYyBjb25zdCBjaGFyIGxpdGVyYWxbXSA9ICJodHRwczovL3d3dy5leGFtcGxlLmNvbTw+
LyI7CiAKIHN0YXRpYyBOU1VSTCAqbGl0ZXJhbFVSTChjb25zdCBjaGFyKiBsaXRlcmFsKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpVUkxXaXRoRGF0YShbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bGl0
ZXJhbCBsZW5ndGg6c3RybGVuKGxpdGVyYWwpXSwgbmlsKTsKKyAgICByZXR1cm4gV1RGOjpVUkxX
aXRoRGF0YShbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bGl0ZXJhbCBsZW5ndGg6c3RybGVuKGxpdGVy
YWwpXSwgbmlsKTsKIH0KIAogQGludGVyZmFjZSBMb2FkSW52YWxpZFVSTE5hdmlnYXRpb25BY3Rp
b25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFn
ZXIuY3BwCmluZGV4IGIwNTE0NTI0ZjcyNTkxZjZjYjUwMjkxMTAzMWI3YmZhOGEzYWZhMDcuLjFi
YWFlOTVhYzA2MjMxZmJmYjI5YThiYTE0MTg3NzcyYjVhZjNhZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2Vy
LmNwcApAQCAtMjIsOCArMjIsOCBAQAogCiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgog
I2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291
cC5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1
ZVB0clNvdXAuaD4KIAogc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVz
dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVz
dC5tbQppbmRleCA4ZDU0Y2E2ZTE5ZTBkNjk5NjJhNWYxNTMyMzU0MmFlZjIwMzU3NWQxLi44NmI3
YjNjNGE5OTg2MzBkMjg1ZTUxNzk1ZmM4YWQ2OTgxY2ZjOTI3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tCkBAIC0y
NiwxMCArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlldy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05T
VVJMRXh0cmFzLmg+CiAKIHN0YXRpYyBib29sIGRpZEZpbmlzaFRlc3Q7CiBzdGF0aWMgYm9vbCBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkOwpAQCAtNTEsNyArNTEsNyBAQCAtICh2b2lkKXdlYlZpZXc6
KFdlYlZpZXcgKilzZW5kZXIgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcjooTlNFcnJv
ciAqKWVycgogICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBXZWJLaXRFcnJvckNhbm5vdFNob3dV
UkwpOwogCiAgICAgc3RhdGljIGNoYXIgbGl0ZXJhbFtdID0gImh0dHBzOi8vd3d3LmV4YW1wbGUu
Y29tJC8iOwotICAgIE5TVVJMICpmYWlsZWRVUkwgPSBXZWJDb3JlOjpVUkxXaXRoRGF0YShbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6bGl0ZXJhbCBsZW5ndGg6c3RybGVuKGxpdGVyYWwpXSwgbmlsKTsK
KyAgICBOU1VSTCAqZmFpbGVkVVJMID0gV1RGOjpVUkxXaXRoRGF0YShbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6bGl0ZXJhbCBsZW5ndGg6c3RybGVuKGxpdGVyYWwpXSwgbmlsKTsKICAgICBFWFBFQ1Rf
VFJVRShbZXJyb3IudXNlckluZm9bQCJOU0Vycm9yRmFpbGluZ1VSTEtleSJdIGlzRXF1YWw6ZmFp
bGVkVVJMXSk7CiAKICAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NTTEtleUdlbmVyYXRvci5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NTTEtleUdlbmVyYXRvci5tbQppbmRleCBkZGU4
YzdkMDFkYTY3ODA0MTk1YzdmNDFlMjkxMWE3ODljNzAyYzUyLi5hYzFiZjdkYjZjOThiMDJkMjU1
MjY1OTcyYmMyOTlkYTBjOTg3ZWRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvU1NMS2V5R2VuZXJhdG9yLm1tCkBAIC0yOSw5ICsyOSw5IEBACiAjaW1wb3J0IDxTZWN1
cml0eS9TZWNBc24xVGVtcGxhdGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmlu
Z3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU1NMS2V5R2VuZXJhdG9yLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9TY29w
ZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0
eVNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKQEAgLTY5LDcgKzY5LDcgQEAg
Y29uc3QgU2VjQXNuMVRlbXBsYXRlIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVRlbXBsYXRl
W10gewogICAgIHsgMCwgMCwgMCwgMCB9CiB9OwogCi1jb25zdCBXZWJDb3JlOjpVUkwgdXJsID0g
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCAiaHR0cDovL3d3dy53ZWJraXQub3JnLyIpOwor
Y29uc3QgVVJMIHVybCA9IFVSTChVUkwoKSwgImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iKTsKIAog
Y2xhc3MgU1NMS2V5R2VuZXJhdG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVz
V2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNw
cAppbmRleCA4Zjc1NWMzMmM4YzJlMmUwZDM3OWQzZTVmMDdjYzZiOWJkY2MxODY1Li45MTdjYmVi
Y2VlNTZjN2MxNzY0ODIwZmNiZDFkMGI4ZjM0OTA2NTRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpbmNsdWRlIDxTaGx3YXBpLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351512</attachid>
            <date>2018-10-03 05:21:26 -0700</date>
            <delta_ts>2018-10-03 08:36:45 -0700</delta_ts>
            <desc>Add Linux support</desc>
            <filename>bug-190234-20181003212124.patch</filename>
            <type>text/plain</type>
            <size>1276165</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUxNWRmNGRlNGZhMDAyZmM1NDRhODAz
MGNiNjQ4ZmM1NTYyMzU0MzAuLjkzZjVkNDFhZmZjNDdkOGRmYmQxN2IxYWRjNTFhZjYwODNiZTZi
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTgtMTAtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUg
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAg
ICAgICAgKiB3dGYvVVJMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgICogd3Rm
L1VSTC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmguCisgICAg
ICAgICogd3RmL1VSTEhhc2guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTEhhc2guaC4KKyAgICAgICAgKFdURjo6VVJMSGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6
OlVSTEhhc2g6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvVVJMUGFyc2VyLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAuCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KToKKyAgICAgICAgKFdURjo6VVJMUGFy
c2VyOjpwYXJzZUF1dGhvcml0eSk6CisgICAgICAgICogd3RmL1VSTFBhcnNlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmguCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpyZXN1bHQp
OgorICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4dHJhcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAuCisgICAgICAgICogd3RmL2NmL0NG
VVJMRXh0cmFzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVS
TEV4dHJhcy5oLgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAuCisgICAgICAgICogd3RmL2NvY29hL05T
VVJMRXh0cmFzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRy
YXMubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0uCisgICAgICAgIChXVEY6OmlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIp
OgorICAgICAgICAoV1RGOjppc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdU
Rjo6aXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjppc0xv
b2thbGlrZUNoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OndoaXRlTGlzdElETlNjcmlwdCk6Cisg
ICAgICAgIChXVEY6OnJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKToKKyAgICAgICAgKFdURjo6
YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KToKKyAgICAgICAgKFdURjo6aXNTZWNv
bmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyk6CisgICAgICAgIChXVEY6OmlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjphbGxDaGFyYWN0ZXJzQWxs
b3dlZEJ5VExEUnVsZXMpOgorICAgICAgICAoV1RGOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6Cisg
ICAgICAgIChXVEY6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChX
VEY6Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChXVEY6OmRlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKToKKyAgICAgICAgKFdURjo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFu
Z2UpOgorICAgICAgICAoV1RGOjpkZWNvZGVIb3N0TmFtZSk6CisgICAgICAgIChXVEY6OmVuY29k
ZUhvc3ROYW1lKToKKyAgICAgICAgKFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyk6
CisgICAgICAgIChXVEY6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKToKKyAgICAgICAg
KFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcpOgorICAgICAgICAoV1RGOjphcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6CisgICAgICAgIChXVEY6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKToKKyAgICAgICAgKFdURjo6bWFwSG9zdE5hbWVz
KToKKyAgICAgICAgKFdURjo6c3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOgorICAgICAgICAo
V1RGOjpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOgorICAgICAg
ICAoV1RGOjpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIpOgorICAgICAgICAoV1RGOjpV
UkxXaXRoRGF0YSk6CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKToKKyAg
ICAgICAgKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyk6CisgICAgICAgIChXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKToKKyAgICAgICAgKFdURjo6aGFzUXVlc3Rpb25N
YXJrT25seVF1ZXJ5U3RyaW5nKToKKyAgICAgICAgKFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5
cGUpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENo
YXJhY3Rlcik6CisgICAgICAgIChXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6CisgICAgICAg
IChXVEY6Om9yaWdpbmFsVVJMRGF0YSk6CisgICAgICAgIChXVEY6OmNyZWF0ZVN0cmluZ1dpdGhF
c2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KToKKyAgICAgICAgKFdURjo6aXNVc2VyVmlzaWJsZVVSTCk6CisgICAgICAgIChXVEY6OnJhbmdl
T2ZVUkxTY2hlbWUpOgorICAgICAgICAoV1RGOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6CisgICAg
ICAgICogd3RmL2NvY29hL1VSTENvY29hLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VSTE1hYy5tbS4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOgorICAgICAg
ICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2xpYi9HVW5p
cXVlUHRyU291cC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0dVbmlxdWVQdHJTb3VwLmguCisgICAgICAgICogd3RmL2dsaWIvVVJMU291cC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwLgor
CiAyMDE4LTEwLTAzICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4K
IAogICAgICAgICAtV3VudXNlZC12YXJpYWJsZSBpbiBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xs
YWJsZUFyZWFTZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyOWMwZGZlMTY3ODlkNmFlNTNmNmRjN2JiOGQzYjMx
MjM0ZDI1OTQ5Li44ZTU5ZTMzMTgzODViYzQ4MWNlYWQxNGVkMmUzZDI5NTgwOWVmNDY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQxIEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3Jl
IHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QSBVUkwgaXMgYSBsb3ctbGV2ZWwgY29uY2VwdCB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbiBvdGhl
ciBjbGFzc2VzIGluIFdlYkNvcmUuCisgICAgICAgIFdlIGFyZSBzdGFydGluZyB0byB1c2UgVVJM
cyBpbiBKYXZhU2NyaXB0Q29yZSBmb3IgbW9kdWxlcy4KKyAgICAgICAgSSBuZWVkIFVSTCBhbmQg
VVJMUGFyc2VyIGluIGEgcGxhY2Ugd2l0aCBmZXdlciBkZXBlbmRlbmNpZXMgZm9yIHJkYXI6Ly9w
cm9ibGVtLzQ0MTE5Njk2CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vz
c2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNo
YW50RXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRv
ci5jcHA6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRh
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oOgorICAgICAgICAqIE1v
ZHVsZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5o
OgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oOgorICAgICAg
ICAqIE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBT
b3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9k
dWxlTG9hZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTTWFwTGlrZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UmVhZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
RmluYWwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKiBjb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRl
bnNpb25SdWxlc0ZvclBpbmdMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjphcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1
ZS5oOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBjc3MvU3R5
bGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3Nz
L1N0eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gpOgor
ICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+Ojpjb25z
dHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21z
Lmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpjb21wbGV0ZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
ZW5zdXJlVGVtcGxhdGVEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXJsRm9yQmluZGluZ3MgY29uc3QpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzSmF2YVNjcmlw
dFVSTEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJDb250ZXh0Rm9yRWxlbWVudCk6CisgICAg
ICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YmFzZVVSSSBjb25z
dCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5o
OgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZG9t
L1NlY3VyaXR5Q29udGV4dC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTCk6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRRdW90ZWRVUkxBdHRy
aWJ1dGVWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmg6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250
ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6
OnJlYWRXZWJBcmNoaXZlKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgICog
ZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU3VicmVzb3VyY2VV
UkxBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1
cCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHA6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaDoKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JVUkwuY3BwOgor
ICAgICAgICAqIGZpbGVhcGkvQmxvYlVSTC5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgor
ICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkv
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUu
aDoKKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgICogaHRtbC9ET01V
UkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvRE9NVVJMLmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVuVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbik6CisgICAg
ICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V1RGOjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3Vt
ZW50PFdlYkNvcmU6OlVSTD46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKToKKyAgICAgICAgKiBodG1sL0ltYWdl
Qml0bWFwLmg6CisgICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmg6CisgICAg
ICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBodG1sL1B1YmxpY1VS
TE1hbmFnZXIuaDoKKyAgICAgICAgKiBodG1sL1VSTElucHV0VHlwZS5jcHA6CisgICAgICAgICog
aHRtbC9VUkxSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6VVJMU2VhcmNoUGFyYW1zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6dG9TdHJpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9tQXNzb2NpYXRlZFVSTCk6CisgICAgICAgICog
aHRtbC9VUkxVdGlscy5oOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldEhvc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldFBvcnQpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNlbWljb2xvblNlcGFyYXRlZFZhbHVlQ29udGFpbnNKYXZhU2Ny
aXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2Vu
KToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbik6CisgICAgICAgIChXZWJDb3Jl
OjpYU1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVk
aXRvcjo6ZmlsdGVySW5wdXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpm
aWx0ZXJCdXR0b25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURh
bmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmlzTGlrZWx5U2FmZVJlc291cmNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRp
dG9yLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5IGNvbnN0KToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Np
b24uaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OnJlY2VpdmVkRmlyc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpj
b250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlV2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlz
dG9yeUNvbnRyb2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0pOgorICAgICAg
ICAqIGxvYWRlci9MaW5rTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0xvYWRUaW1pbmcuaDoK
KyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvTWl4
ZWRDb250ZW50Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVj
a2VyOjpjaGVja0Zvcm1Gb3JNaXhlZENvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9N
aXhlZENvbnRlbnRDaGVja2VyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2hvdWxkU2No
ZWR1bGVOYXZpZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVk
dWxlci5oOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZEluZm8uaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlVGltaW5nLmg6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAqIGxv
YWRlci9TdWJmcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5o
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL01hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZl
c3RQYXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0
aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW06CisgICAgICAgICogcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAqIHBhZ2Uv
Q29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JF
bmFibGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNzKToKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9IaXN0b3J5Lmg6CisgICAg
ICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6dXJs
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAq
IHBhZ2UvTG9jYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdl
L1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5oOgorICAgICAg
ICAqIHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHA6CisgICAgICAgICogcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2Vj
dXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6
CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlPcmlnaW5EYXRhLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAg
ICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIpOgorICAgICAg
ICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5o
OgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9Tb2NrZXRQcm92
aWRlci5oOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oOgorICAgICAgICAq
IHBhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250
ZW50VVJMUGF0dGVybi5oOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5oOgorICAgICAgICAq
IHBhZ2UvVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBwYWdlL1Zpc2l0ZWRMaW5rU3RvcmUu
aDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAg
KiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Lmg6CisgICAgICAgICogcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaDoKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9EcmFnRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MaW5rSWNvbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y2FuRXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1By
b21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TU0xLZXlHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNo
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmg6CisgICAgICAgICog
cGxhdGZvcm0vU291cmNlc1NvdXAudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vVXNlckFnZW50UXVpcmtzLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9Vc2VyQWdlbnRHTGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFn
Z2VkU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKHdlYktpdE1lZGlhU3JjU2V0VXJpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFn
SW1hZ2VHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzUGxh
aW5UZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9z
dE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW06Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjppc0Fy
bWVuaWFuTG9va2FsaWtlQ2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omlz
QXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNB
U0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6aXNMb29rYWxpa2VDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d2hp
dGVMaXN0SUROU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJRE5TY3Jp
cHRXaGl0ZUxpc3RGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFsbENoYXJhY3Rl
cnNJbklETlNjcmlwdFdoaXRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1Nl
Y29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6YWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Om1hcEhvc3ROYW1lV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
ZW5jb2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFJhbmdl
c1RoYXROZWVkTWFwcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFu
Z2VzVGhhdE5lZWRFbmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0
UmFuZ2VzVGhhdE5lZWREZWNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjphcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjptYXBIb3N0TmFtZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
c3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpVUkxXaXRoRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVS
TFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Omhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3Rlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxCeVJlbW92aW5nVXNlckluZm8pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3JpZ2luYWxVUkxEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjppc1VzZXJWaXNpYmxlVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnJhbmdlT2ZVUkxTY2hlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9va3NMaWtl
QWJzb2x1dGVVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JQYXJ0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVx
dWVzdCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Q
cm94eVNlcnZlckN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vQlN0cmluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya3VwVG9DRkhUTUwp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQXR0YWNobWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjpzb3VyY2VVUkkgY29uc3QpOgorICAg
ICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmg6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRv
Q29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVu
dENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9y
dC5jcHA6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5Lmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5o
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleS5oOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIHhtbC9Y
TUxIdHRwUmVxdWVzdC5oOgorCiAyMDE4LTEwLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgSDI2NCBzaW11bGNhc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzA1
OTY0NGEwNWJhM2ZmNGE0YmI2NzhhMTlmMmQwNDE2NzYxMjQ1ZC4uZDhiZTUwYTI3OTA1Mjk4YTY1
NDEyMTc1NzE4YWM5MTMwODU4YmExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzODMgQEAKKzIwMTgt
MTAtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJM
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmg6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtMb2FkQ2hlY2tlcjo6c2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OnVybCBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0Ojpsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24pOgorICAg
ICAgICAoV2ViS2l0Ojpsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1NvY2tldFN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0U3RyZWFtLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZl
UmVjb3Jkcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6U3RhdGlzdGljczo6cmVjb3JkUmV0cmlldmVkQ2FjaGVkRW50cnkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3RpY3M6OnJlY29yZFJldmFsaWRhdGlvblN1Y2Nlc3Mp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VJbmZv
OjpmaXJzdFBhcnR5Rm9yQ29va2llcyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhcHR1cmU6OlJlcXVlc3Q6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXNwb25zZTo6b3BlcmF0b3Ig
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYXB0dXJlOjpFcnJvcjo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6TWFuYWdlcjo6ZmluZEJlc3RG
dXp6eU1hdGNoKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6OmZ1
enp5TWF0Y2hVUkxzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6
OnVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYXB0dXJlOjpSZXNvdXJjZTo6dXJsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
cHR1cmU6OlJlc291cmNlOjpxdWVyeVBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAg
ICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2ZUNo
YWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpvcGVuQ0ZVUkxSZWYpOgor
ICAgICAgICAoV2ViS2l0OjpyZXBsYWNlZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRV
Ukxfb3B0aW9uc19jb25maWd1cmF0aW9uX2Vycm9yKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQ
SVVSTC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTDo6
ZXF1YWxzKToKKyAgICAgICAgKEFQSTo6VVJMOjpVUkwpOgorICAgICAgICAoQVBJOjpVUkw6OnVy
bCBjb25zdCk6CisgICAgICAgIChBUEk6OlVSTDo6cGFyc2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaDoKKyAgICAg
ICAgKEFQSTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzVVJMIGNvbnN0KToKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2MvV0tVUkxSZXNwb25zZS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0Yu
bW06CisgICAgICAgIChXS1VSTENyZWF0ZVdpdGhDRlVSTCk6CisgICAgICAgIChXS1VSTENvcHlD
RlVSTCk6CisgICAgICAgICogU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHA6CisgICAgICAg
ICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJj
aGl2ZVJlc291cmNlOjpXZWJBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFNoYXJlZC9Bc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XS05TVVJMRXh0
cmFzLm1tOgorICAgICAgICAoLVtOU1VSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSk6
CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uU3RhdGUuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1Jc0luU2FtZURvY3VtZW50IGNvbnN0
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkVy
cm9ycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHA6CisgICAg
ICAgICogU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAoSVBDOjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXJy
b3JzR3RrLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVSTCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OnRha2VS
ZWRpcmVjdENoYWluKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAg
ICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGVudFJ1bGVMaXN0
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2Fk
UG9saWN5IGNvbnN0KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdl
YkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0Zv
bGRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcDoKKyAgICAg
ICAgKEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNl
clN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoQVBJOjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVV
bmlxdWVVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChmaWxlUGF0aHNGcm9tRmlsZVVSTHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhV
c2VyRGF0YSk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAoV0tQ
YWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VHcm91cC5jcHA6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0KToK
KyAgICAgICAgKFdLUGFnZUdyb3VwQWRkVXNlclNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVu
dFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1Zl
cnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hhc0hhZFVz
ZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
R3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NH
cmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NT
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRv
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IF9p
bml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVs
aXN0OmxlZ2FjeUJsYWNrbGlzdDphc3NvY2lhdGVkVVJMOnVzZXJDb250ZW50V29ybGQ6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6Zm9y
VVJMU2NoZW1lOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIHVybFNjaGVt
ZUhhbmRsZXJGb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
cHBsaWNhdGlvbk1hbmlmZXN0Lm1tOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
IGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgrW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgYXBw
bGljYXRpb25NYW5pZmVzdEZyb21KU09OOm1hbmlmZXN0VVJMOmRvY3VtZW50VVJMOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06CisgICAgICAg
ICgtW19XS1VzZXJTdHlsZVNoZWV0IGluaXRXaXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6bGVn
YWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDpiYXNlVVJMOnVzZXJDb250ZW50V29ybGQ6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAo
d2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9jb29raWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2xvYWRfcGxhaW5fdGV4dCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6c2hvd1BheW1lbnRVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFJlcXVlc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNo
b3dQYXltZW50VUkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246Om5hdmlnYXRlQnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6ZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5lZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3
ZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRlbnRSdWxl
TGlzdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5n
UmVzdWx0Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6U2Fm
ZUJyb3dzaW5nUmVzdWx0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmll
d0NvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKC1bX1dLUHJldmlld0NvbnRyb2xsZXJEYXRh
U291cmNlIGZpbmlzaDpdKToKKyAgICAgICAgKFdlYktpdDo6U3lzdGVtUHJldmlld0NvbnRyb2xs
ZXI6OmZpbmlzaCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpV
SURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OnJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcyk6
CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjaGVja1VzZXJNZWRpYVBl
cm1pc3Npb25Gb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZy
YW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5tbToKKyAgICAgICAgKC1bV0tSZWxvYWRGcmFtZUVy
cm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYXR0ZW1wdFJlY292ZXJ5XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Ondy
aXRlVG9VUkxGb3JGaWxlUHJvbWlzZVByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6
c2V0UmVkaXJlY3RDaGFpbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnJlZGly
ZWN0Q2hhaW4gY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0
ZTo6ZGlkU2FtZURvY3VtZW50Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkU3RhdGU6OnNldFVucmVhY2hhYmxlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRnJhbWVM
b2FkU3RhdGUuaDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OnVybCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpwcm92aXNpb25hbFVSTCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjp1bnJlYWNoYWJsZVVSTCBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OndyaXRlQmxvYlRvRmlsZVBhdGgp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VMb2FkU3RhdGU6Omhhc09ubHlTZWN1cmVDb250ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVn
aW5Qcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL1NhZmVCcm93c2luZ1Jl
c3VsdC5oOgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1bHQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6dXJsIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6dXJsIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVQcm94eTo6cHJvdmlzaW9uYWxVUkwgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZVByb3h5Ojp1bnJlYWNoYWJsZVVSTCBjb25zdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9u
YWxVUkxGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
Ojpwcm9jZXNzRGlkVGVybWluYXRlT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dGcmFtZU5hdmln
YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbToKKyAg
ICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBfY3JlYXRlU2hlZXRXaXRoRWxlbWVudEFj
dGlvbnM6c2hvd0xpbmtUaXRsZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVl
dEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoVVJMOnJlY3Q6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX3ByZXNlbnRlZFZpZXdDb250cm9sbGVyRm9yUHJldmlld0l0ZW1Db250cm9sbGVy
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1t
OgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3
Lm1tOgorICAgICAgICAoLVtXS0xlZ2FjeVBERlZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hh
cmVFbGVtZW50V2l0aFVSTDpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tQREZW
aWV3Lm1tOgorICAgICAgICAoLVtXS1BERlZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVF
bGVtZW50V2l0aFVSTDpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVl
bi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoLVtXS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyIF91cGRhdGVMb2NhdGlvbkluZm9dKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
S0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlciBfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXJdKToKKyAgICAgICAgKiBV
SVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvcjo6c2hvd1BheW1lbnRVSSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVNZXJjaGFudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
TG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnRGb3JVUkwgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHA6CisgICAgICAgIChXS0J1
bmRsZUZyYW1lQWxsb3dzRm9sbG93aW5nTGluayk6CisgICAgICAgIChXS0J1bmRsZUZyYW1lQ29w
eVN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKToKKyAgICAgICAgKFdLQnVuZGxl
RnJhbWVDb3B5TUlNRVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlUGFnZUhhc0xvY2FsRGF0YUZvclVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcDoKKyAgICAgICAgKGNv
bnZlcnRUb1VURjhTdHJpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRv
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU29ja2V0U3RyZWFtOjpXZWJTb2NrZXRTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y2xpY2tlZExp
bmspOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybVVSTFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVS
TFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJv
dmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZp
c2libGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyBjb25zdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGb3JjZVVuaXZlcnNhbEFj
Y2Vzc0Zyb21Mb2NhbFVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW06
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xpbmsgY29uc3QpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFVSTEluRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2VuZENTUFZpb2xhdGlvblJlcG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFk
ZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJpbnRPcGVyYXRpb25HdGs6OmZyYW1lVVJMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQWN0aXZl
UGFnZXMpOgorCiAyMDE4LTEwLTAyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRGVwcmVjYXRlIFdLQ29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwppbmRleCAxNGM2MjBhYWFiMWI3YTE1Njg1NWRjZDdhNjM4YTYwZDM4ZWQxMzU4Li4zZjky
MjNiYjdkMTdlYjBkMjE1NzMwNzVmYTM3MGM0NzNmYzQ5NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRvIFdU
RgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAyMDE4LTEwLTAxICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFN3aXRjaGluZyB0
byBkaXNjcmV0ZSBHUFUgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIFVJIHByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBkM2I2YzkyZWU3ZGFkMDg2Njg4ODdkNjllZWEyNDk2OTcw
ZTc4MWI3Li44ODg1ZmI2NzFhNWI2NDFiOTUyMzc3ODJhYzVhZjUyZjJkMWZmODk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM3IEBACisyMDE4LTEwLTAzICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBV
UkwgZnJvbSBXZWJDb3JlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBET00vRE9NQXR0ci5tbToKKyAgICAgICAgKiBET00vRE9NQmxvYi5t
bToKKyAgICAgICAgKiBET00vRE9NQ1NTQ2hhcnNldFJ1bGUubW06CisgICAgICAgICogRE9NL0RP
TUNTU0ltcG9ydFJ1bGUubW06CisgICAgICAgICogRE9NL0RPTUNTU01lZGlhUnVsZS5tbToKKyAg
ICAgICAgKiBET00vRE9NQ1NTUGFnZVJ1bGUubW06CisgICAgICAgICogRE9NL0RPTUNTU1ByaW1p
dGl2ZVZhbHVlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NSdWxlLm1tOgorICAgICAgICAqIERP
TS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tOgorICAgICAgICAqIERPTS9ET01DU1NTdHlsZVJ1
bGUubW06CisgICAgICAgICogRE9NL0RPTUNTU1N0eWxlU2hlZXQubW06CisgICAgICAgICogRE9N
L0RPTUNTU1ZhbHVlLm1tOgorICAgICAgICAqIERPTS9ET01DaGFyYWN0ZXJEYXRhLm1tOgorICAg
ICAgICAqIERPTS9ET01Db3VudGVyLm1tOgorICAgICAgICAqIERPTS9ET01Eb2N1bWVudC5tbToK
KyAgICAgICAgKiBET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbToKKyAgICAgICAgKiBET00vRE9N
RG9jdW1lbnRUeXBlLm1tOgorICAgICAgICAqIERPTS9ET01FdmVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NRmlsZS5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW06Cisg
ICAgICAgICogRE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MQXJlYUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCUkVsZW1lbnQubW06Cisg
ICAgICAgICogRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRN
TEJhc2VGb250RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEJvZHlFbGVtZW50Lm1t
OgorICAgICAgICAqIERPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbToKKyAgICAgICAgKiBET00v
RE9NSFRNTENhbnZhc0VsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxDb2xsZWN0aW9u
Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRGl2RWxlbWVudC5tbToKKyAgICAgICAgKiBET00v
RE9NSFRNTERvY3VtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTEVtYmVkRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRN
TEZpZWxkU2V0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEZvbnRFbGVtZW50Lm1t
OgorICAgICAgICAqIERPTS9ET01IVE1MRm9ybUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RP
TUhUTUxGcmFtZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGcmFtZVNldEVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxIUkVsZW1lbnQubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxIZWFkRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEhlYWRpbmdFbGVt
ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSHRtbEVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSW1hZ2VF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSW5wdXRFbGVtZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01IVE1MTElFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MTGFiZWxF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MTWFw
RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1hcnF1ZWVFbGVtZW50Lm1tOgorICAg
ICAgICAqIERPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
TWV0YUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tOgorICAg
ICAgICAqIERPTS9ET01IVE1MT0xpc3RFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
T2JqZWN0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTE9wdGlvbkVsZW1lbnQubW06CisgICAgICAgICogRE9N
L0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFBhcmFn
cmFwaEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxQYXJhbUVsZW1lbnQubW06Cisg
ICAgICAgICogRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhU
TUxTY3JpcHRFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MU2VsZWN0RWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00v
RE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxUYWJs
ZUNlbGxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1t
OgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9E
T01IVE1MVGFibGVSb3dFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRN
TFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NS2V5Ym9hcmRFdmVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NTWVkaWFMaXN0Lm1tOgorICAgICAgICAqIERPTS9ET01Nb3VzZUV2ZW50
Lm1tOgorICAgICAgICAqIERPTS9ET01NdXRhdGlvbkV2ZW50Lm1tOgorICAgICAgICAqIERPTS9E
T01OYW1lZE5vZGVNYXAubW06CisgICAgICAgICogRE9NL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlv
bi5tbToKKyAgICAgICAgKiBET00vRE9NUmFuZ2UubW06CisgICAgICAgICogRE9NL0RPTVN0eWxl
U2hlZXQubW06CisgICAgICAgICogRE9NL0RPTVRleHQubW06CisgICAgICAgICogRE9NL0RPTVRl
eHRFdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NVG9rZW5MaXN0Lm1tOgorICAgICAgICAqIERP
TS9ET01VSUV2ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01YUGF0aFJlc3VsdC5tbToKKyAgICAg
ICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAqIE1pc2MvV2ViTlNVUkxF
eHRyYXMubW06CisgICAgICAgICgtW05TVVJMIF93ZWJfdXNlclZpc2libGVTdHJpbmddKToKKyAg
ICAgICAgKC1bTlNVUkwgX3dlYl9VUkxCeVJlbW92aW5nVXNlckluZm9dKToKKyAgICAgICAgKC1b
TlNVUkwgX3dlYl9kYXRhRm9yVVJMQ29tcG9uZW50VHlwZTpdKToKKyAgICAgICAgKC1bTlNVUkwg
X3dlYl9zY2hlbWVEYXRhXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfaG9zdERhdGFdKToKKyAg
ICAgICAgKiBNaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbToKKyAgICAgICAgKiBQbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgICogUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAoV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW06OnNldFJlcXVlc3RVUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5t
bToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYlBheW1lbnRDb29yZGlu
YXRvckNsaWVudDo6c2hvd1BheW1lbnRVSSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJM
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Q
cm92aWRlci5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5tbToKKyAgICAgICAgKFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbklu
Zm8pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaDoKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWUgX2xvYWREYXRhOk1JTUVUeXBlOnRleHRFbmNvZGluZ05hbWU6
YmFzZVVSTDp1bnJlYWNoYWJsZVVSTDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJQREZWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW06Cisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKwogMjAxOC0xMC0wMyAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBFbmFibGUgc2VsZWN0aW9uQWNy
b3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQgYnkgZGVmYXVsdCBpbiBXZWJLaXRMZWdhY3kKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBlYzgyZDQ5YWNmZmI3OTE0NWFmMzNjNDI1OTNh
M2MwYWViNGFkZThiLi5lNmZlNmNkN2JhYzBiNTlmMDk5ZTQwNTJmZDg0MmU1YTBiYzZiNDE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTgtMTAtMDMg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBN
b3ZlIFVSTCBmcm9tIFdlYkNvcmUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE1hcnNoYWxsaW5nSGVscGVycy5jcHA6CisgICAgICAgICog
TWFyc2hhbGxpbmdIZWxwZXJzLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5j
cHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oOgorICAgICAgICAqIFBsdWdp
bnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luU3RyZWFt
Lmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnaW5JbmZvUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3
ZWJWaXNpYmxlUGx1Z2luSW5mbyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtT
dG9yZS5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAqIFdlYkRvd25s
b2FkLmg6CisgICAgICAgICogV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKiBX
ZWJGcmFtZS5oOgorICAgICAgICAqIFdlYkhpc3RvcnkuY3BwOgorICAgICAgICAqIFdlYkhpc3Rv
cnkuaDoKKyAgICAgICAgKiBXZWJIaXN0b3J5SXRlbS5jcHA6CisgICAgICAgICogV2ViUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OldlYlJlc291cmNlKToKKyAgICAgICAgKiBX
ZWJSZXNvdXJjZS5oOgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAg
KiBXZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJVUkxSZXNwb25zZTo6Y3JlYXRlSW5z
dGFuY2UpOgorICAgICAgICAqIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6CisgICAgICAg
ICogV2ViVmlldy5oOgorCiAyMDE4LTEwLTAyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFBhcnNlZFVSTFN0cmluZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2NmMjk0NmE5ZGE1ZmM4NjBm
MzU4Y2QzMGVjOWIzNjhmNTBkNmY2OS4uOGU1ZmNlZGZiNTFhNTI2Y2U3ZWU0ZDE4MWRjOGUwNzkw
NjUxNjBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03
Niw2ICs3NiwxMiBAQAogCQk1MzExQkQ1MzFFQTcxQ0FEMDA1MjUyODEgLyogU2lnbmFscy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ1MTFF
QTcxQ0FEMDA1MjUyODEgLyogU2lnbmFscy5jcHAgKi87IH07CiAJCTUzMTFCRDVDMUVBODIyRjkw
MDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTFCRDVCMUVBODIyRjkwMDUyNTI4MSAvKiBUaHJlYWRNZXNz
YWdlLmNwcCAqLzsgfTsKIAkJNTM1MzRGMkExRUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRp
b25zLmRlZnMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzUzNEYyOTFFQzBFMTBFMDAxNDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChDbGllbnQsIFNlcnZlciwgKTsgfTsgfTsKKwkJNUMxRjA1OTMy
MTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUYwNTkxMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVS
TEV4dHJhcy5jcHAgKi87IH07CisJCTVDMUYwNTk1MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxDRi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFGMDU5
NDIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwICovOyB9OworCQk1Q0MwRUU3NTIxNjI5RjE5
MDBBMUE4NDIgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQzBFRTczMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuY3Bw
ICovOyB9OworCQk1Q0MwRUU3NjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTc0MjE2MjlGMTkwMEEx
QTg0MiAvKiBVUkwuY3BwICovOyB9OworCQk1Q0MwRUU4OTIxNjJCQzIyMDBBMUE4NDIgLyogVVJM
Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0MwRUU4NjIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0gKi87IH07CisJCTVDQzBFRThB
MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTg4MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VS
TEV4dHJhcy5tbSAqLzsgfTsKIAkJNzBBOTkzRkUxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJl
Z2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQTk5M0ZDMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgKi87IH07CiAJ
CTcwRUNBNjBEMUIwMjQyNjgwMDQ0OTczOSAvKiBBdG9taWNTdHJpbmdJbXBsLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjBBMUIwMjQyNjgw
MDQ0OTczOSAvKiBBdG9taWNTdHJpbmdJbXBsLmNwcCAqLzsgfTsKIAkJN0EwNTA5M0YxRkI5REND
NTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0EwNTA5M0UxRkI5RENDNTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMu
Y3BwICovOyB9OwpAQCAtMzcyLDcgKzM3OCwxOSBAQAogCQk1NTMwNzFDOTFDNDA0MjcyMDAzODQ4
OTggLyogVGlueUxSVUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRp
bnlMUlVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3RjgyQzFEOTRC
OTk3MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVCNDMzODNBNUQwQjQ2M0M5NDMzRDkzMyAvKiBJbmRleE1hcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleE1hcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0ZVUkxFeHRyYXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzFGMDU5MjIxNjQzNTZCMDAzOTMwMkMg
LyogQ0ZVUkxFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0ZVUkxF
eHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMxRjA1OTQyMTY0MzdCMzAw
MzkzMDJDIC8qIFVSTENGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVSTENGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMxRjA1OTcyMTY0Mzk5
NDAwMzkzMDJDIC8qIFVSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VVJMSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzdDODhEMzFEMEEzQTBB
MDA5RDJGNkQgLyogVW5pcXVlUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVuaXF1ZVJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3MTIxNjI5
RjE4MDBBMUE4NDIgLyogVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVS
TC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3MjIxNjI5RjE5MDBBMUE4
NDIgLyogVVJMUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTFBh
cnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3MzIxNjI5RjE5MDBB
MUE4NDIgLyogVVJMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVSTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTc0
MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzcy
MTYyQTAxMDAwQTFBODQyIC8qIFVSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVVJMSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU4NjIx
NjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBVUkxDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNDMEVFODcyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5TVVJMRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDQzBFRTg4MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5TVVJMRXh0cmFzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I2MjE0Njg5Qjg2MDBFNzhCNzYgLyogbGliV1RG
LmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hp
dmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYldURi5hOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDI0N0I2RTE0Njg5QzQ3MDBFNzhCNzYgLyogQmFz
ZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1RDI0N0I3MDE0Njg5QzQ3MDBFNzhCNzYgLyogRGVidWdSZWxlYXNlLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTcyMCw5ICs3MzgsMTIgQEAKIAkJMkNERUQwRjAxODExNUMzRjAw
NERCQTcwIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuY3BwICovLAorCQkJ
CTVDMUYwNTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5oICovLAogCQkJCUMyQkNG
QzQxMUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNwcCAqLywKIAkJCQkyQ0RFRDBFRTE4
MTE1QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCAqLywKIAkJCQkxQUZERTY0NzE5NTIwMUMz
MDBDNDhGRkEgLyogVHlwZUNhc3RzQ0YuaCAqLywKKwkJCQk1QzFGMDU5NDIxNjQzN0IzMDAzOTMw
MkMgLyogVVJMQ0YuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0xMTMxLDYgKzExNTIsMTIgQEAKIAkJCQlFMzAwRTUyMTIwM0Q2NDVG
MDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLywKIAkJCQk1QzdDODhEMzFEMEEzQTBBMDA5RDJG
NkQgLyogVW5pcXVlUmVmLmggKi8sCiAJCQkJQ0Q3NjAwRkYxRjkwQTNDQTAwMDI2RTI2IC8qIFVu
c2FmZVBvaW50ZXIuaCAqLywKKwkJCQk1Q0MwRUU3NDIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNw
cCAqLywKKwkJCQk1Q0MwRUU3MTIxNjI5RjE4MDBBMUE4NDIgLyogVVJMLmggKi8sCisJCQkJNUMx
RjA1OTcyMTY0Mzk5NDAwMzkzMDJDIC8qIFVSTEhhc2guaCAqLywKKwkJCQk1Q0MwRUU3NzIxNjJB
MDEwMDBBMUE4NDIgLyogVVJMSGFzaC5oICovLAorCQkJCTVDQzBFRTczMjE2MjlGMTkwMEExQTg0
MiAvKiBVUkxQYXJzZXIuY3BwICovLAorCQkJCTVDQzBFRTcyMjE2MjlGMTkwMEExQTg0MiAvKiBV
UkxQYXJzZXIuaCAqLywKIAkJCQk3QUZFQzZCMDFFQjIyQjU5MDBEQURFMzYgLyogVVVJRC5jcHAg
Ki8sCiAJCQkJN0FGRUM2QUUxRUIyMkFDNjAwREFERTM2IC8qIFVVSUQuaCAqLywKIAkJCQlBOEE0
NzM2RjE1MUE4MjVCMDA0MTIzRkYgLyogVmFsdWVDaGVjay5oICovLApAQCAtMTM1NCw3ICsxMzgx
LDEwIEBACiAJCQkJQThBNDcyQzUxNTFBODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJlYWRDb2NvYS5t
bSAqLywKIAkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29j
b2EuY3BwICovLAogCQkJCUFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJDb2NvYS5tbSAqLywKKwkJCQk1Q0MwRUU4NzIxNjJCQzIyMDBBMUE4NDIgLyogTlNV
UkxFeHRyYXMuaCAqLywKKwkJCQk1Q0MwRUU4ODIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRy
YXMubW0gKi8sCiAJCQkJQTMwRDQxMkMxRjBERTBCQTAwQjcxOTU0IC8qIFNvZnRMaW5raW5nLmgg
Ki8sCisJCQkJNUNDMEVFODYyMTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29hLm1tICovLAogCQkJ
CUU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi8sCiAJCQkp
OwogCQkJcGF0aCA9IGNvY29hOwpAQCAtMTQ4MSw2ICsxNTExLDcgQEAKIAkJCQlBOEE0NzM4QjE1
MUE4MjVCMDA0MTIzRkYgLyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURDRUUy
MjAxMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDczQUMxNTFBODI1QjAwNDEyM0ZGIC8qIGNhY2hlZC1wb3dlcnMuY2MgaW4g
U291cmNlcyAqLywKKwkJCQk1QzFGMDU5MzIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOEExREM5N0JBQjAwNEExRDNGIC8qIENsb2Nr
VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MDE1MUE4MjVCMDA0MTIzRkYgLyog
Q29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDYzMTUxQTgyNUIw
MDQxMjNGRiAvKiBDb2xsYXRvcklDVS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1MzIsNiArMTU2
Myw3IEBACiAJCQkJQUQ4OUI2QkExRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFu
ZGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRUMxNTFBODI1QjAwNDEyM0ZG
IC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOEMxREM5N0JB
QjAwNEExRDNGIC8qIE1vbm90b25pY1RpbWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDMEVF
OEEyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDczRjcxNTFBODI1QjAwNDEyM0ZGIC8qIE9TQWxsb2NhdG9yUG9zaXguY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjkxNTFBODI1QjAwNDEyM0ZGIC8qIE9TUmFuZG9t
U291cmNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTU4NSw2ICsxNjE3LDEwIEBACiAJCQkJNTMx
MUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY2NkIyOTAxREM5N0JBQjAwNEExRDNGIC8qIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcwNzVGNTFGQkY1M0NEMDA0ODlBRjAgLyogVGlt
aW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDMEVFNzYyMTYyOUYxOTAwQTFBODQy
IC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzFGMDU5NTIxNjQzN0IzMDAzOTMwMkMg
LyogVVJMQ0YuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDMEVFODkyMTYyQkMyMjAwQTFBODQy
IC8qIFVSTENvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDMEVFNzUyMTYyOUYxOTAwQTFB
ODQyIC8qIFVSTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzE4MUM4RjFEMzA3QUI4
MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzE4MUM5
MTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQzE4MUM5MzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCAzOWNjMTk5OTY5MjVhMTJk
YzM0ZGUwNzM0YjlmMjk2ZWRhNDdjZjQwLi4yODkyMWJjOGQyNGY0OWUzNWYxZjM3NzZiN2FjNmU3
NDgyOTRjMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMjQwLDYgKzI0MCw5IEBAIHNldChX
VEZfUFVCTElDX0hFQURFUlMKICAgICBUaW55UHRyU2V0LmgKICAgICBUcmlTdGF0ZS5oCiAgICAg
VHlwZUNhc3RzLmgKKyAgICBVUkwuaAorICAgIFVSTEhhc2guaAorICAgIFVSTFBhcnNlci5oCiAg
ICAgVVVJRC5oCiAgICAgVW5hbGlnbmVkQWNjZXNzLmgKICAgICBVbmV4cGVjdGVkLmgKQEAgLTM5
Miw2ICszOTUsOCBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBUaHJlYWRpbmcuY3BwCiAgICAgVGlt
ZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcAogICAgIFRpbWluZ1Njb3BlLmNwcAorICAgIFVSTC5j
cHAKKyAgICBVUkxQYXJzZXIuY3BwCiAgICAgVVVJRC5jcHAKICAgICBXVEZBc3NlcnRpb25zLmNw
cAogICAgIFdhbGxUaW1lLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5o
IGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IGVlNTFjNzMyMThmMWZmYjllNTI1MGI2
NWZkNWJmNTM4ODI3YWZlZTIuLjRiZWY4MTBjYzEwODY3MmQ5ODI5NjhjYjU5MzViYTI0MDI3MDY0
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9Gb3J3YXJkLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgU3RyaW5nVmlldzsKIGNsYXNz
IFRleHRQb3NpdGlvbjsKIGNsYXNzIFRleHRTdHJlYW07CiBjbGFzcyBVbmlxdWVkU3RyaW5nSW1w
bDsKK2NsYXNzIFVSTDsKIGNsYXNzIFdhbGxUaW1lOwogCiBzdHJ1Y3QgRmFzdE1hbGxvYzsKQEAg
LTEwOSw2ICsxMTAsNyBAQCB1c2luZyBXVEY6OlN0cmluZ0ltcGw7CiB1c2luZyBXVEY6OlN0cmlu
Z1ZpZXc7CiB1c2luZyBXVEY6OlRleHRQb3NpdGlvbjsKIHVzaW5nIFdURjo6VGV4dFN0cmVhbTsK
K3VzaW5nIFdURjo6VVJMOwogdXNpbmcgV1RGOjpWYXJpYW50OwogdXNpbmcgV1RGOjpWZWN0b3I7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNDY5MDNjMzY0MjljZWI3MjZhMTExOTMz
YWUyZmIzNTA0ODhkZjIyNS4uNDFjODk1NDkxODgyOWM3ZTA3ZWZlYzhkYTk1NzFhNjY2ZjY4MjUx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTYsNiArNiw3IEBAIGxpc3QoQVBQRU5E
IFdURl9QVUJMSUNfSEVBREVSUwogICAgIGdsaWIvR1JlZlB0ci5oCiAgICAgZ2xpYi9HVHlwZWRl
ZnMuaAogICAgIGdsaWIvR1VuaXF1ZVB0ci5oCisgICAgZ2xpYi9HVW5pcXVlUHRyU291cC5oCiAg
ICAgZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaAogICAgIGdsaWIvV1RGR1R5cGUuaAogCkBA
IC0yMSw2ICsyMiw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgZ2xpYi9HTGliVXRp
bGl0aWVzLmNwcAogICAgIGdsaWIvR1JlZlB0ci5jcHAKICAgICBnbGliL1J1bkxvb3BHTGliLmNw
cAorICAgIGdsaWIvVVJMU291cC5jcHAKIAogICAgIGxpbnV4L0N1cnJlbnRQcm9jZXNzTWVtb3J5
U3RhdHVzLmNwcAogICAgIGxpbnV4L01lbW9yeUZvb3RwcmludExpbnV4LmNwcApAQCAtMzcsOSAr
MzksMTEgQEAgbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUwogICAgICR7R0xJQl9HSU9fTElCUkFS
SUVTfQogICAgICR7R0xJQl9HT0JKRUNUX0xJQlJBUklFU30KICAgICAke0dMSUJfTElCUkFSSUVT
fQorICAgICR7TElCU09VUF9MSUJSQVJJRVN9CiAgICAgJHtaTElCX0xJQlJBUklFU30KICkKIAog
bGlzdChBUFBFTkQgV1RGX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtHTElCX0lO
Q0xVREVfRElSU30KKyAgICAke0xJQlNPVVBfSU5DTFVERV9ESVJTfQogKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bU1hYy5jbWFrZQppbmRleCBmNGQ1MjZlNTcxYjkzMjI5NGVhYTM0MjlhMzQwNDkxMGU3MTkxNDIx
Li5hMDE4ZjkyOWVmNTUyZWUyNDIxMTU2NWYxYTc5ZWYwYjNjM2U1NjNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybU1hYy5jbWFrZQpAQCAtOCwxMCArOCwxMiBAQCBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVT
CiApCiAKIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUworICAgIGNmL0NGVVJMRXh0cmFz
LmgKICAgICBjZi9UeXBlQ2FzdHNDRi5oCiAKICAgICBjb2NvYS9FbnRpdGxlbWVudHMuaAogICAg
IGNvY29hL01hY2hTZW5kUmlnaHQuaAorICAgIGNvY29hL05TVVJMRXh0cmFzLmgKICAgICBjb2Nv
YS9Tb2Z0TGlua2luZy5oCiAKICAgICBkYXJ3aW4vV2Vha0xpbmtpbmcuaApAQCAtMzgsOCArNDAs
MTAgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBTY2hlZHVsZVBhaXJDRi5jcHAKICAg
ICBTY2hlZHVsZVBhaXJNYWMubW0KIAorICAgIGNmL0NGVVJMRXh0cmFzLmNwcAogICAgIGNmL0xh
bmd1YWdlQ0YuY3BwCiAgICAgY2YvUnVuTG9vcENGLmNwcAorICAgIGNmL1VSTENGLmNwcAogCiAg
ICAgY29jb2EvQXV0b2RyYWluZWRQb29sLmNwcAogICAgIGNvY29hL0NQVVRpbWVDb2NvYS5jcHAK
QEAgLTQ4LDYgKzUyLDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBjb2NvYS9NYWlu
VGhyZWFkQ29jb2EubW0KICAgICBjb2NvYS9NZW1vcnlGb290cHJpbnRDb2NvYS5jcHAKICAgICBj
b2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQorICAgIGNvY29hL05TVVJMRXh0cmFz
Lm1tCisgICAgY29jb2EvVVJMQ29jb2EubW0KICAgICBjb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAK
IAogICAgIG1hYy9EZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdQRS5jbWFrZQppbmRleCA3NTJiNTk5MzE0OGYxMTEwYTI5M2M5ZGE5ZTI4YWRlZjA4ZmVlNDBj
Li5hMDJkYTUyNzhlZWVhYjhkYjgwMGJjOGY5NmY4OWZiOTcyZjNlMWU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdQRS5jbWFrZQpAQCAtNCw2ICs0LDcgQEAgbGlzdChBUFBFTkQgV1RGX1BVQkxJQ19IRUFE
RVJTCiAgICAgZ2xpYi9HUmVmUHRyLmgKICAgICBnbGliL0dUeXBlZGVmcy5oCiAgICAgZ2xpYi9H
VW5pcXVlUHRyLmgKKyAgICBnbGliL0dVbmlxdWVQdHJTb3VwLmgKICAgICBnbGliL1J1bkxvb3BT
b3VyY2VQcmlvcml0eS5oCiAgICAgZ2xpYi9XVEZHVHlwZS5oCiAKQEAgLTE5LDYgKzIwLDcgQEAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnbGliL0dMaWJVdGlsaXRpZXMuY3BwCiAgICAg
Z2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCisgICAgZ2xpYi9VUkxT
b3VwLmNwcAogCiAgICAgbGludXgvQ3VycmVudFByb2Nlc3NNZW1vcnlTdGF0dXMuY3BwCiAgICAg
bGludXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwCkBAIC0zNSw5ICszNywxMSBAQCBsaXN0KEFQ
UEVORCBXVEZfTElCUkFSSUVTCiAgICAgJHtHTElCX0dJT19MSUJSQVJJRVN9CiAgICAgJHtHTElC
X0dPQkpFQ1RfTElCUkFSSUVTfQogICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAgJHtMSUJTT1VQ
X0xJQlJBUklFU30KICAgICAke1pMSUJfTElCUkFSSUVTfQogKQogCiBsaXN0KEFQUEVORCBXVEZf
U1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAg
ICR7TElCU09VUF9JTkNMVURFX0RJUlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4
IDQ2ODUxOTZjZWE2MmRjMDZkNWJhNjMwMDIxMmMyNzg5MDkxZTlhZDcuLjY4MzU5OWIxMDczMmUy
ZjgwM2NkOTEwNTk2ZWQ0MjgxODEzYzg3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCkBA
IC0yMCwxMSArMjAsMTUgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKIAogaWYgKFVTRV9DRikK
ICAgICBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKKyAgICAgICAgY2YvQ0ZVUkxFeHRy
YXMuaAogICAgICAgICBjZi9UeXBlQ2FzdHNDRi5oCiAKICAgICAgICAgdGV4dC9jZi9UZXh0QnJl
YWtJdGVyYXRvckNGLmgKICAgICApCiAgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKKyAgICAg
ICAgY2YvQ0ZVUkxFeHRyYXMuY3BwCisgICAgICAgIGNmL1VSTENGLmNwcAorCiAgICAgICAgIHRl
eHQvY2YvQXRvbWljU3RyaW5nSW1wbENGLmNwcAogICAgICAgICB0ZXh0L2NmL1N0cmluZ0NGLmNw
cAogICAgICAgICB0ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0MzQ1
YWVlNzUzMzNiY2Y4N2MxNmEzNWNkN2MwMWQ1MGMwMDVlOWYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0wLDAgKzEsMTEwOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNy0yMDA4LCAyMDExLTIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorCisjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp
bmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvSGV4TnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0
cmVhbS5oPgorCisvLyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVzZSBvZiB0aGUg
KyBvcGVyYXRvciBvbiBTdHJpbmcuCisvLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRpbWl6ZSB0aGF0
IG9wZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQorLy8gc28gbWFueSBhbGxvY2F0aW9ucywg
b3IgY2hhbmdlIHRoaXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgorCisKK25hbWVzcGFj
ZSBXVEYgeworCit0eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IENoYXJCdWZmZXI7Cit0eXBlZGVm
IFZlY3RvcjxVQ2hhciwgNTEyPiBVQ2hhckJ1ZmZlcjsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGludmFsaWRQb3J0TnVtYmVyID0gMHhGRkZGOworCisvLyBDb3BpZXMgdGhlIHNvdXJjZSB0byB0
aGUgZGVzdGluYXRpb24sIGFzc3VtaW5nIGFsbCB0aGUgc291cmNlIGNoYXJhY3RlcnMgYXJlCisv
LyBBU0NJSS4gVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBtdXN0IGJlIGxhcmdlIGVub3VnaC4gTnVs
bCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkCisvLyBpbiB0aGUgc291cmNlIHN0cmluZywgYW5kIG5v
IGF0dGVtcHQgaXMgbWFkZSB0byBudWxsLXRlcm1pbmF0ZSB0aGUgcmVzdWx0Lgorc3RhdGljIHZv
aWQgY29weUFTQ0lJKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjaGFyKiBkZXN0KQoreworICAgIGlm
IChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc3RyaW5nLmlz
OEJpdCgpKQorICAgICAgICBtZW1jcHkoZGVzdCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmlu
Zy5sZW5ndGgoKSk7CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBzcmMgPSBzdHJp
bmcuY2hhcmFjdGVyczE2KCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCisgICAgICAg
ICAgICBkZXN0W2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3JjW2ldKTsKKyAgICB9Cit9CisKK3Zv
aWQgVVJMOjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICBtX3By
b3RvY29sSXNJbkhUVFBGYW1pbHkgPSBmYWxzZTsKKyAgICBtX2Nhbm5vdEJlQUJhc2VVUkwgPSBm
YWxzZTsKKyAgICBtX3NjaGVtZUVuZCA9IDA7CisgICAgbV91c2VyU3RhcnQgPSAwOworICAgIG1f
dXNlckVuZCA9IDA7CisgICAgbV9wYXNzd29yZEVuZCA9IDA7CisgICAgbV9ob3N0RW5kID0gMDsK
KyAgICBtX3BvcnRMZW5ndGggPSAwOworICAgIG1fcGF0aEVuZCA9IDA7CisgICAgbV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSAwOworICAgIG1fcXVlcnlFbmQgPSAwOworfQorCitVUkw6OlVSTChjb25z
dCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFVSTFRleHRFbmNvZGlu
ZyogZW5jb2RpbmcpCit7CisgICAgVVJMUGFyc2VyIHBhcnNlcihyZWxhdGl2ZSwgYmFzZSwgZW5j
b2RpbmcpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCitzdGF0aWMgYm9vbCBz
aG91bGRUcmltRnJvbVVSTChVQ2hhciBjKQoreworICAgIC8vIEJyb3dzZXJzIGlnbm9yZSBsZWFk
aW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wKKyAgICAvLyBjaGFyYWN0ZXJzIGZy
b20gVVJMcy4gIE5vdGUgdGhhdCBjIGlzIGFuICp1bnNpZ25lZCogY2hhciBoZXJlCisgICAgLy8g
c28gdGhpcyBjb21wYXJpc29uIHNob3VsZCBvbmx5IGNhdGNoIGNvbnRyb2wgY2hhcmFjdGVycy4K
KyAgICByZXR1cm4gYyA8PSAnICc7Cit9CisKK1VSTCBVUkw6Omlzb2xhdGVkQ29weSgpIGNvbnN0
Cit7CisgICAgVVJMIHJlc3VsdCA9ICp0aGlzOworICAgIHJlc3VsdC5tX3N0cmluZyA9IHJlc3Vs
dC5tX3N0cmluZy5pc29sYXRlZENvcHkoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitTdHJp
bmcgVVJMOjpsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNQYXRoKCkp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHVuc2lnbmVkIGVuZCA9IG1fcGF0aEVu
ZCAtIDE7CisgICAgaWYgKG1fc3RyaW5nW2VuZF0gPT0gJy8nKQorICAgICAgICAtLWVuZDsKKwor
ICAgIHNpemVfdCBzdGFydCA9IG1fc3RyaW5nLnJldmVyc2VGaW5kKCcvJywgZW5kKTsKKyAgICBp
ZiAoc3RhcnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9ob3N0RW5kICsgbV9wb3J0TGVuZ3Ro
KSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICsrc3RhcnQ7CisKKyAgICByZXR1cm4g
bV9zdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpOworfQorCitTdHJpbmdW
aWV3IFVSTDo6cHJvdG9jb2woKSBjb25zdAoreworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcoMCwgbV9zY2hlbWVFbmQpOworfQorCitTdHJpbmdWaWV3IFVSTDo6aG9z
dCgpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgc3RhcnQgPSBob3N0U3RhcnQoKTsKKyAgICByZXR1
cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBtX2hvc3RFbmQgLSBzdGFy
dCk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTDo6cG9ydCgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3BvcnRMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBib29sIG9rID0gZmFsc2U7CisgICAgdW5zaWduZWQgbnVtYmVyOworICAgIGlmIChtX3N0cmlu
Zy5pczhCaXQoKSkKKyAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0
cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSwgJm9r
KTsKKyAgICBlbHNlCisgICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QobV9z
dHJpbmcuY2hhcmFjdGVyczE2KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAm
b2spOworICAgIGlmICghb2sgfHwgbnVtYmVyID4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZf
dD46Om1heCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBudW1i
ZXI7Cit9CisKK1N0cmluZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoYXV0
byBwb3J0ID0gdGhpcy0+cG9ydCgpKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhob3N0KCks
ICc6Jywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvcnQudmFsdWUoKSkpOworICAgIHJldHVybiBo
b3N0KCkudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFVSTDo6cHJvdG9jb2xIb3N0QW5kUG9ydCgp
IGNvbnN0Cit7CisgICAgU3RyaW5nIHJlc3VsdCA9IG1fc3RyaW5nLnN1YnN0cmluZygwLCBtX2hv
c3RFbmQgKyBtX3BvcnRMZW5ndGgpOworCisgICAgaWYgKG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJT
dGFydCA+IDApIHsKKyAgICAgICAgY29uc3QgaW50IGFsbG93Rm9yVHJhaWxpbmdBdFNpZ24gPSAx
OworICAgICAgICByZXN1bHQucmVtb3ZlKG1fdXNlclN0YXJ0LCBtX3Bhc3N3b3JkRW5kIC0gbV91
c2VyU3RhcnQgKyBhbGxvd0ZvclRyYWlsaW5nQXRTaWduKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgU3RyaW5nIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJz
ZWRVUkwoU3RyaW5nVmlldyBpbnB1dCkKK3sKKyAgICBhdXRvIGlucHV0TGVuZ3RoID0gaW5wdXQu
bGVuZ3RoKCk7CisgICAgaWYgKCFpbnB1dExlbmd0aCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CisgICAgVmVjdG9yPExDaGFyPiBwZXJjZW50RGVjb2RlZDsKKyAgICBwZXJjZW50RGVj
b2RlZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlucHV0TGVuZ3RoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgaW5wdXRMZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoaW5wdXRbaV0g
PT0gJyUnCisgICAgICAgICAgICAmJiBpbnB1dExlbmd0aCA+IDIKKyAgICAgICAgICAgICYmIGkg
PCBpbnB1dExlbmd0aCAtIDIKKyAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtp
ICsgMV0pCisgICAgICAgICAgICAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgewor
ICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1
ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOworICAgICAgICAgICAgaSArPSAyOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBlcmNlbnREZWNvZGVkLnVuY2hlY2tlZEFwcGVuZChp
bnB1dFtpXSk7CisgICAgfQorICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHBlcmNlbnREZWNv
ZGVkLmRhdGEoKSwgcGVyY2VudERlY29kZWQuc2l6ZSgpKTsKK30KKworU3RyaW5nIFVSTDo6dXNl
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRV
UkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQg
LSBtX3VzZXJTdGFydCkpOworfQorCitTdHJpbmcgVVJMOjpwYXNzKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3JkRW5kIC0gbV91
c2VyRW5kIC0gMSkpOworfQorCitTdHJpbmcgVVJMOjplbmNvZGVkVXNlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5kIC0gbV91
c2VyU3RhcnQpOworfQorCitTdHJpbmcgVVJMOjplbmNvZGVkUGFzcygpIGNvbnN0Cit7CisgICAg
aWYgKG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyRW5kKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisKKyAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFzc3dv
cmRFbmQgLSBtX3VzZXJFbmQgLSAxKTsKK30KKworU3RyaW5nIFVSTDo6ZnJhZ21lbnRJZGVudGlm
aWVyKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVl
cnlFbmQgKyAxKTsKK30KKworYm9vbCBVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSAhPSBtX3F1ZXJ5
RW5kOworfQorCitTdHJpbmcgVVJMOjpiYXNlQXNTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVy
biBtX3N0cmluZy5sZWZ0KG1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKK30KKworI2lmICFVU0UoQ0Yp
CisKK1N0cmluZyBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzVmFs
aWQoKSB8fCAhaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAg
cmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhwYXRo
KCkpKTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBOREVCVUcKKworc3RhdGljIGlubGluZSB2b2lk
IGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcpCit7Cit9CisKKyNlbHNlCisKK3N0YXRp
YyB2b2lkIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCit7CisgICAg
Ly8gRklYTUU6IFdlIHByb2JhYmx5IGRvbid0IG5lZWQgdGhpcyBmdW5jdGlvbiBhbnkgbW9yZS4K
KyAgICAvLyBUaGUgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCBmdW5jdGlvbiBhc3NlcnRzIHRo
YXQgcGFzc2VkLWluIGNoYXJhY3RlcnMKKyAgICAvLyBhcmUgb25lcyBpdCBjYW4gaGFuZGxlOyB0
aGUgb2xkZXIgY29kZSBkaWQgbm90IGFuZCByZWxpZWQgb24gdGhlc2UgY2hlY2tzLgorICAgIGZv
ciAoYXV0byBjaGFyYWN0ZXIgOiBwcm90b2NvbC5jb2RlVW5pdHMoKSkgeworICAgICAgICBBU1NF
UlQoaXNBU0NJSShjaGFyYWN0ZXIpKTsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3RlciA+ICcgJyk7
CisgICAgICAgIEFTU0VSVCghaXNBU0NJSVVwcGVyKGNoYXJhY3RlcikpOworICAgICAgICBBU1NF
UlQodG9BU0NJSUxvd2VyVW5jaGVja2VkKGNoYXJhY3RlcikgPT0gY2hhcmFjdGVyKTsKKyAgICB9
Cit9CisKKyNlbmRpZgorCitzdGF0aWMgTG9jayBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9y
VGVzdGluZ0xvY2s7CisKK3VzaW5nIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5n
ID0gSGFzaE1hcDxTdHJpbmcsIHVpbnQxNl90PjsKK3N0YXRpYyBEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZyomIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkK
K3sKKyAgICBzdGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqIGRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXA7CisgICAgcmV0dXJuIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xN
YXA7Cit9CisKK3N0YXRpYyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyYgZW5z
dXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIERlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcCA9
IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7CisgICAgaWYgKCFkZWZhdWx0
UG9ydEZvclByb3RvY29sTWFwKQorICAgICAgICBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0g
bmV3IERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nOworICAgIHJldHVybiAqZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKK30KKwordm9pZCByZWdpc3RlckRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2xGb3JUZXN0aW5nKHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wp
Cit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhkZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
Rm9yVGVzdGluZ0xvY2spOworICAgIGVuc3VyZURlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JU
ZXN0aW5nKCkuYWRkKHByb3RvY29sLCBwb3J0KTsKK30KKwordm9pZCBjbGVhckRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgaWYgKGF1dG8q
IG1hcCA9IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkpCisgICAgICAgIG1h
cC0+Y2xlYXIoKTsKK30KKworc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKQoreworICAgIGlmIChhdXRvKiBvdmVycmlkZU1h
cCA9IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkpIHsKKyAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZ0xv
Y2spOworICAgICAgICBBU1NFUlQob3ZlcnJpZGVNYXApOyAvLyBObyBuZWVkIHRvIG51bGwgY2hl
Y2sgYWdhaW4gaGVyZSBzaW5jZSBvdmVycmlkZU1hcCBjYW5ub3QgYmVjb21lIG51bGwgYWZ0ZXIg
YmVpbmcgbm9uLW51bGwuCisgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBvdmVycmlkZU1hcC0+Zmlu
ZChwcm90b2NvbC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgICAgICBpZiAoaXRlcmF0
b3IgIT0gb3ZlcnJpZGVNYXAtPmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52
YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bChwcm90b2NvbCk7Cit9CisKK2Jvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90
IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpCit7CisgICAgcmV0dXJuIGRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wocHJvdG9jb2wpID09IHBvcnQ7Cit9CisKK2Jvb2wgVVJMOjpwcm90b2NvbElzKGNv
bnN0IGNoYXIqIHByb3RvY29sKSBjb25zdAoreworICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0
cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVu
KHByb3RvY29sKSkpOworCisgICAgLy8gSmF2YVNjcmlwdCBVUkxzIGFyZSAidmFsaWQiIGFuZCBz
aG91bGQgYmUgZXhlY3V0ZWQgZXZlbiBpZiBVUkwgZGVjaWRlcyB0aGV5IGFyZSBpbnZhbGlkLgor
ICAgIC8vIFRoZSBmcmVlIGZ1bmN0aW9uIHByb3RvY29sSXNKYXZhU2NyaXB0KCkgc2hvdWxkIGJl
IHVzZWQgaW5zdGVhZC4gCisgICAgQVNTRVJUKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShTdHJpbmdWaWV3KHByb3RvY29sKSwgImphdmFzY3JpcHQiKSk7CisKKyAgICBpZiAoIW1faXNW
YWxpZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24g
d2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoIXByb3RvY29sW2ldIHx8
ICFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fc3RyaW5nW2ldLCBwcm90b2NvbFtpXSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiAhcHJvdG9jb2xbbV9z
Y2hlbWVFbmRdOyAvLyBXZSBzaG91bGQgaGF2ZSBjb25zdW1lZCBhbGwgY2hhcmFjdGVycyBpbiB0
aGUgYXJndW1lbnQuCit9CisKK2Jvb2wgVVJMOjpwcm90b2NvbElzKFN0cmluZ1ZpZXcgcHJvdG9j
b2wpIGNvbnN0Cit7CisgICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QocHJvdG9jb2wpOworCisgICAg
aWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAobV9z
Y2hlbWVFbmQgIT0gcHJvdG9jb2wubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmpl
Y3QuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NoZW1lRW5kOyArK2kpIHsKKyAg
ICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fc3RyaW5nW2ldLCBwcm90b2Nv
bFtpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCitTdHJpbmcgVVJMOjpxdWVyeSgpIGNvbnN0Cit7CisgICAgaWYgKG1fcXVlcnlFbmQg
PT0gbV9wYXRoRW5kKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9z
dHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVuZCArIDEsIG1fcXVlcnlFbmQgLSAobV9wYXRoRW5kICsg
MSkpOyAKK30KKworU3RyaW5nIFVSTDo6cGF0aCgpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgcG9y
dEVuZCA9IG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKKyAgICByZXR1cm4gbV9zdHJpbmcuc3Vi
c3RyaW5nKHBvcnRFbmQsIG1fcGF0aEVuZCAtIHBvcnRFbmQpOworfQorCitib29sIFVSTDo6c2V0
UHJvdG9jb2woY29uc3QgU3RyaW5nJiBzKQoreworICAgIC8vIEZpcmVmb3ggYW5kIElFIHJlbW92
ZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCAnOicuCisgICAgc2l6ZV90IHNlcGFyYXRvclBv
c2l0aW9uID0gcy5maW5kKCc6Jyk7CisgICAgU3RyaW5nIG5ld1Byb3RvY29sID0gcy5zdWJzdHJp
bmcoMCwgc2VwYXJhdG9yUG9zaXRpb24pOworICAgIGF1dG8gY2Fub25pY2FsaXplZCA9IFVSTFBh
cnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUobmV3UHJvdG9jb2wpOworICAgIGlmICghY2Fu
b25pY2FsaXplZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2lzVmFsaWQp
IHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCpjYW5vbmljYWxpemVkLCAi
OiIsIG1fc3RyaW5nKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmco
KmNhbm9uaWNhbGl6ZWQsIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpKTsKKyAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJv
b2wgaXNBbGxBU0NJSShTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBpZiAoc3RyaW5nLmlzOEJp
dCgpKQorICAgICAgICByZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0
ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVND
SUkoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorICAgIAorLy8g
QXBwZW5kcyB0aGUgcHVueWNvZGVkIGhvc3RuYW1lIGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIHN0
cmluZyBhbmQgbGVuZ3RoIHRvCisvLyB0aGUgb3V0cHV0IGJ1ZmZlci4gVGhlIHJlc3VsdCB3aWxs
IG5vdCBiZSBudWxsIHRlcm1pbmF0ZWQuCisvLyBSZXR1cm4gdmFsdWUgb2YgZmFsc2UgbWVhbnMg
ZXJyb3IgaW4gZW5jb2RpbmcuCitzdGF0aWMgYm9vbCBhcHBlbmRFbmNvZGVkSG9zdG5hbWUoVUNo
YXJCdWZmZXImIGJ1ZmZlciwgU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgLy8gTmVlZHMgdG8g
YmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCisgICAgLy8gRm9yIGhv
c3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGlj
aCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgorICAgIGNvbnN0IHVuc2lnbmVkIGhvc3RuYW1lQnVm
ZmVyTGVuZ3RoID0gMjA0ODsKKyAgICAKKyAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID4gaG9zdG5h
bWVCdWZmZXJMZW5ndGggfHwgaXNBbGxBU0NJSShzdHJpbmcpKSB7CisgICAgICAgIGFwcGVuZChi
dWZmZXIsIHN0cmluZyk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBV
Q2hhciBob3N0bmFtZUJ1ZmZlcltob3N0bmFtZUJ1ZmZlckxlbmd0aF07CisgICAgVUVycm9yQ29k
ZSBlcnJvciA9IFVfWkVST19FUlJPUjsKKyAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMg
PSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOworICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZl
cnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21haW5O
YW1lVHJhbnNjb2RlcigpLAorICAgICAgICBzdHJpbmcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCks
IHN0cmluZy5sZW5ndGgoKSwgaG9zdG5hbWVCdWZmZXIsIGhvc3RuYW1lQnVmZmVyTGVuZ3RoLCAm
cHJvY2Vzc2luZ0RldGFpbHMsICZlcnJvcik7CisgICAgCisgICAgaWYgKFVfU1VDQ0VTUyhlcnJv
cikgJiYgIXByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgeworICAgICAgICBidWZmZXIuYXBwZW5k
KGhvc3RuYW1lQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordW5zaWduZWQgVVJMOjpob3N0
U3RhcnQoKSBjb25zdAoreworICAgIHJldHVybiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJTdGFy
dCkgPyBtX3Bhc3N3b3JkRW5kIDogbV9wYXNzd29yZEVuZCArIDE7Cit9CisKK3ZvaWQgVVJMOjpz
ZXRIb3N0KGNvbnN0IFN0cmluZyYgcykKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBjb2xvbkluZGV4ID0gcy5maW5kKCc6Jyk7CisgICAgaWYgKGNv
bG9uSW5kZXggIT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKworICAgIFVDaGFyQnVmZmVy
IGVuY29kZWRIb3N0TmFtZTsKKyAgICBpZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFtZShlbmNvZGVk
SG9zdE5hbWUsIHMpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgYm9vbCBzbGFzaFNsYXNo
TmVlZGVkID0gbV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5k
ICsgMSk7CisgICAgCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsKKyAgICBpZiAoc2xhc2hTbGFzaE5lZWRl
ZCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNp
emUoKSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLnN1YnN0cmluZyhtX2hvc3RFbmQp
KTsKKworICAgIFVSTFBhcnNlciBwYXJzZXIoYnVpbGRlci50b1N0cmluZygpKTsKKyAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKwordm9pZCBVUkw6OnJlbW92ZVBvcnQoKQoreworICAg
IGlmICghbV9wb3J0TGVuZ3RoKQorICAgICAgICByZXR1cm47CisgICAgVVJMUGFyc2VyIHBhcnNl
cihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kKSwgU3RyaW5n
VmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpKTsKKyAg
ICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKwordm9pZCBVUkw6OnNldFBvcnQodW5zaWdu
ZWQgc2hvcnQgaSkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYm9vbCBjb2xvbk5lZWRlZCA9ICFtX3BvcnRMZW5ndGg7CisgICAgdW5zaWduZWQgcG9ydFN0
YXJ0ID0gKGNvbG9uTmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0RW5kICsgMSk7CisKKyAgICBV
UkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChwb3J0
U3RhcnQpLCAoY29sb25OZWVkZWQgPyAiOiIgOiAiIiksIFN0cmluZzo6bnVtYmVyKGkpLCBTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwor
ICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6c2V0SG9zdEFuZFBv
cnQoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nVmlldyBob3N0TmFtZShob3N0QW5kUG9ydCk7Cisg
ICAgU3RyaW5nVmlldyBwb3J0OworICAgIAorICAgIGF1dG8gY29sb25JbmRleCA9IGhvc3ROYW1l
LmZpbmQoJzonKTsKKyAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkgeworICAgICAgICBw
b3J0ID0gaG9zdE5hbWUuc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxKTsKKyAgICAgICAgYm9vbCBv
azsKKyAgICAgICAgaW50IHBvcnRJbnQgPSBwb3J0LnRvSW50U3RyaWN0KG9rKTsKKyAgICAgICAg
aWYgKCFvayB8fCBwb3J0SW50IDwgMCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaG9z
dE5hbWUgPSBob3N0TmFtZS5zdWJzdHJpbmcoMCwgY29sb25JbmRleCk7CisgICAgfQorCisgICAg
aWYgKGhvc3ROYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVUNoYXJCdWZm
ZXIgZW5jb2RlZEhvc3ROYW1lOworICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29k
ZWRIb3N0TmFtZSwgaG9zdE5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIHNsYXNo
U2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hl
bWVFbmQgKyAxKTsKKworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFw
cGVuZChtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSk7CisgICAgaWYgKHNsYXNoU2xhc2hOZWVk
ZWQpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLy8iKTsKKyAgICBidWlsZGVyLmFw
cGVuZChTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0TmFtZS5z
aXplKCkpKTsKKyAgICBpZiAoIXBvcnQuaXNFbXB0eSgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiOiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChwb3J0KTsKKyAgICB9Cisg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVu
ZCArIG1fcG9ydExlbmd0aCkpOworCisgICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVyLnRvU3Ry
aW5nKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCitzdGF0aWMgU3RyaW5n
IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZyYgaW5wdXQsIGJvb2woKnNob3Vs
ZEVuY29kZSkoVUNoYXIpKQoreworICAgIGF1dG8gZW5jb2RlID0gW3Nob3VsZEVuY29kZV0gKGNv
bnN0IFN0cmluZyYgaW5wdXQpIHsKKyAgICAgICAgQ1N0cmluZyB1dGY4ID0gaW5wdXQudXRmOCgp
OworICAgICAgICBhdXRvKiBkYXRhID0gdXRmOC5kYXRhKCk7CisgICAgICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKKyAgICAgICAgYXV0byBsZW5ndGggPSB1dGY4Lmxlbmd0aCgpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgIGF1
dG8gYyA9IGRhdGFbal07CisgICAgICAgICAgICBpZiAoc2hvdWxkRW5jb2RlKGMpKSB7CisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyUnKTsKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKSk7CisgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYykpOworICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYyk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICB9OworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmIChVTkxJ
S0VMWShzaG91bGRFbmNvZGUoaW5wdXRbaV0pKSkKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGUo
aW5wdXQpOworICAgIH0KKyAgICByZXR1cm4gaW5wdXQ7Cit9CisKK3ZvaWQgVVJMOjpzZXRVc2Vy
KGNvbnN0IFN0cmluZyYgdXNlcikKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gRklYTUU6IE5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2Rl
ZCBhbmQgZXNjYXBlZCB0byBtYXRjaCBwYXJzZSgpIGV4cGVjdGF0aW9ucywKKyAgICAvLyBhbmQg
dG8gYXZvaWQgY2hhbmdpbmcgbW9yZSB0aGFuIGp1c3QgdGhlIHVzZXIgbG9naW4uCisKKyAgICB1
bnNpZ25lZCBlbmQgPSBtX3VzZXJFbmQ7CisgICAgaWYgKCF1c2VyLmlzRW1wdHkoKSkgeworICAg
ICAgICBTdHJpbmcgdSA9IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHVzZXIsIFVSTFBhcnNlcjo6
aXNJblVzZXJJbmZvRW5jb2RlU2V0KTsKKyAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpKQorICAgICAgICAgICAgdSA9ICIvLyIg
KyB1OworICAgICAgICAvLyBBZGQgJ0AnIGlmIHdlIGRpZG4ndCBoYXZlIG9uZSBiZWZvcmUuCisg
ICAgICAgIGlmIChlbmQgPT0gbV9ob3N0RW5kIHx8IChlbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBt
X3N0cmluZ1tlbmRdICE9ICdAJykpCisgICAgICAgICAgICB1LmFwcGVuZCgnQCcpOworICAgICAg
ICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdCht
X3VzZXJTdGFydCksIHUsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Cisg
ICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1c2VyIG5vciBwYXNzd29yZC4KKyAg
ICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQg
JiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdo
ZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KKyAgICAgICAgaWYgKG1fdXNl
clN0YXJ0ICE9IGVuZCkgeworICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5n
KFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyU3RhcnQpLCBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcoZW5kKSkpOworICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVVJMOjpzZXRQYXNzKGNvbnN0IFN0cmlu
ZyYgcGFzc3dvcmQpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHVuc2lnbmVkIGVuZCA9IG1fcGFzc3dvcmRFbmQ7CisgICAgaWYgKCFwYXNzd29yZC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgU3RyaW5nIHAgPSAiOiIgKyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVy
cyhwYXNzd29yZCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpICsgIkAiOworICAg
ICAgICBpZiAobV91c2VyRW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCAr
IDEpKQorICAgICAgICAgICAgcCA9ICIvLyIgKyBwOworICAgICAgICAvLyBFYXQgdGhlIGV4aXN0
aW5nICdAJyBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gYWRkIG91ciBvd24uCisgICAgICAgIGlmIChl
bmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQorICAgICAgICAgICAgZW5k
ICs9IDE7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIHAsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
ZyhlbmQpKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIH0gZWxzZSB7
CisgICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1c2VyIG5vciBw
YXNzd29yZC4KKyAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IG1fdXNlckVuZCAmJiBlbmQgIT0g
bV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQorICAgICAgICAgICAgZW5kICs9IDE7
CisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBjb21t
b24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UuCisgICAgICAg
IGlmIChtX3VzZXJFbmQgIT0gZW5kKSB7CisgICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1h
a2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJFbmQpLCBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOworICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVVJMOjpzZXRGcmFnbWVudElk
ZW50aWZpZXIoU3RyaW5nVmlldyBpZGVudGlmaWVyKQoreworICAgIGlmICghbV9pc1ZhbGlkKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogT3B0aW1pemUgdGhlIGNhc2Ugd2hlcmUg
dGhlIGlkZW50aWZpZXIgYWxyZWFkeSBoYXBwZW5zIHRvIGJlIGVxdWFsIHRvIHdoYXQgd2FzIHBh
c3NlZD8KKyAgICAvLyBGSVhNRTogSXMgaXQgY29ycmVjdCB0byBkbyB0aGlzIHdpdGhvdXQgZW5j
b2RpbmcgYW5kIGVzY2FwaW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJzPworICAgICp0aGlzID0gVVJM
UGFyc2VyIHsgbWFrZVN0cmluZyhTdHJpbmdWaWV3IHsgbV9zdHJpbmcgfS5zdWJzdHJpbmcoMCwg
bV9xdWVyeUVuZCksICcjJywgaWRlbnRpZmllcikgfS5yZXN1bHQoKTsKK30KKwordm9pZCBVUkw6
OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpIHsKKyAg
ICAgICAgQVNTRVJUKCFtX3F1ZXJ5RW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAobV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZCkKKyAgICAgICAg
bV9zdHJpbmcgPSBtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpOworfQorCit2b2lkIFVSTDo6cmVt
b3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZpZXIoKQoreworICAgIGlmICghbV9pc1ZhbGlkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9wYXRoRW5k
KTsKKyAgICBtX3F1ZXJ5RW5kID0gbV9wYXRoRW5kOworfQorCit2b2lkIFVSTDo6c2V0UXVlcnko
Y29uc3QgU3RyaW5nJiBxdWVyeSkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gRklYTUU6ICcjJyBhbmQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBi
ZSBlbmNvZGVkIGFuZCBlc2NhcGVkLgorICAgIC8vIFVzdWFsbHksIHRoZSBxdWVyeSBpcyBlbmNv
ZGVkIHVzaW5nIGRvY3VtZW50IGVuY29kaW5nLCBub3QgVVRGLTgsIGJ1dCB3ZSBkb24ndCBoYXZl
CisgICAgLy8gYWNjZXNzIHRvIHRoZSBkb2N1bWVudCBpbiB0aGlzIGZ1bmN0aW9uLgorICAgIC8v
IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2MTE3NgorICAgIGlmICgocXVlcnkuaXNFbXB0eSgpIHx8
IHF1ZXJ5WzBdICE9ICc/JykgJiYgIXF1ZXJ5LmlzTnVsbCgpKSB7CisgICAgICAgIFVSTFBhcnNl
ciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCks
ICI/IiwgcXVlcnksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSkp
OworICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdCht
X3BhdGhFbmQpLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlF
bmQpKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIH0KKworfQorCit2
b2lkIFVSTDo6c2V0UGF0aChjb25zdCBTdHJpbmcmIHMpCit7CisgICAgaWYgKCFtX2lzVmFsaWQp
CisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBwYXRoID0gczsKKyAgICBpZiAocGF0aC5p
c0VtcHR5KCkgfHwgcGF0aFswXSAhPSAnLycpCisgICAgICAgIHBhdGggPSAiLyIgKyBwYXRoOwor
CisgICAgYXV0byBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24gPSBbXSAoVUNoYXIgY2hhcmFjdGVy
KSB7CisgICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJz8nIHx8IGNoYXJhY3RlciA9PSAnIyc7
CisgICAgfTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpLCBwZXJjZW50RW5jb2RlQ2hhcmFj
dGVycyhwYXRoLCBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24pLCBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV9wYXRoRW5kKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwor
fQorCitib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiBhLCBj
b25zdCBVUkwmIGIpCit7CisgICAgaWYgKGEubV9xdWVyeUVuZCAhPSBiLm1fcXVlcnlFbmQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1bnNpZ25lZCBxdWVyeUxlbmd0aCA9IGEubV9xdWVy
eUVuZDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcXVlcnlMZW5ndGg7ICsraSkKKyAg
ICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBlcXVhbElnbm9yaW5nUXVl
cnlBbmRGcmFnbWVudChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5w
YXRoRW5kKCkgIT0gYi5wYXRoRW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1bnNp
Z25lZCBwYXRoRW5kID0gYS5wYXRoRW5kKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHBhdGhFbmQ7ICsraSkgeworICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygp
W2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiBhLCBjb25z
dCBVUkwmIGIpCit7CisgICAgaWYgKGEubV9zY2hlbWVFbmQgIT0gYi5tX3NjaGVtZUVuZCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQgaG9zdFN0YXJ0QSA9IGEuaG9zdFN0
YXJ0KCk7CisgICAgdW5zaWduZWQgaG9zdExlbmd0aEEgPSBhLm1faG9zdEVuZCAtIGhvc3RTdGFy
dEE7CisgICAgdW5zaWduZWQgaG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7CisgICAgdW5zaWdu
ZWQgaG9zdExlbmd0aEIgPSBiLm1faG9zdEVuZCAtIGIuaG9zdFN0YXJ0KCk7CisgICAgaWYgKGhv
c3RMZW5ndGhBICE9IGhvc3RMZW5ndGhCKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBDaGVjayB0aGUgc2NoZW1lCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGEubV9zY2hl
bWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ld
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEFuZCB0aGUgaG9z
dAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7CisgICAg
ICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFy
dEIgKyBpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoYS5w
b3J0KCkgIT0gYi5wb3J0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIp
Cit7CisgICAgdW5zaWduZWQgaG9zdFN0YXJ0QSA9IGEuaG9zdFN0YXJ0KCk7CisgICAgdW5zaWdu
ZWQgaG9zdExlbmd0aEEgPSBhLm1faG9zdEVuZCAtIGhvc3RTdGFydEE7CisgICAgdW5zaWduZWQg
aG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7CisgICAgdW5zaWduZWQgaG9zdExlbmd0aEIgPSBi
Lm1faG9zdEVuZCAtIGhvc3RTdGFydEI7CisgICAgaWYgKGhvc3RMZW5ndGhBICE9IGhvc3RMZW5n
dGhCKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgaG9zdExlbmd0aEE7ICsraSkgeworICAgICAgICBpZiAoYS5zdHJpbmcoKVtob3N0U3RhcnRB
ICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVVJMOjppc01hdGNo
aW5nRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAoreworICAgIGlmIChpc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGRvbWFpbi5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gaG9zdCA9IHRoaXMtPmhvc3QoKTsK
KyAgICBpZiAoIWhvc3QuZW5kc1dpdGgoZG9tYWluKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIGhvc3QubGVuZ3RoKCkgPT0gZG9tYWluLmxlbmd0aCgpIHx8IGhvc3RbaG9z
dC5sZW5ndGgoKSAtIGRvbWFpbi5sZW5ndGgoKSAtIDFdID09ICcuJzsKK30KKworU3RyaW5nIGVu
Y29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBpbnB1dCkKK3sKKyAgICBy
ZXR1cm4gcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoaW5wdXQsIFVSTFBhcnNlcjo6aXNJblVzZXJJ
bmZvRW5jb2RlU2V0KTsKK30KKworYm9vbCBVUkw6OmlzSGllcmFyY2hpY2FsKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVCht
X3N0cmluZ1ttX3NjaGVtZUVuZF0gPT0gJzonKTsKKyAgICByZXR1cm4gbV9zdHJpbmdbbV9zY2hl
bWVFbmQgKyAxXSA9PSAnLyc7Cit9CisKK3ZvaWQgVVJMOjpjb3B5VG9CdWZmZXIoVmVjdG9yPGNo
YXIsIDUxMj4mIGJ1ZmZlcikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhpcyB0aHJvd3MgYXdh
eSB0aGUgaGlnaCBieXRlcyBvZiBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyEKKyAg
ICAvLyBUaGF0J3MgZmluZSBmb3IgYSB2YWxpZCBVUkwsIHdoaWNoIGlzIGFsbCBBU0NJSSwgYnV0
IG5vdCBmb3IgaW52YWxpZCBVUkxzLgorICAgIGJ1ZmZlci5yZXNpemUobV9zdHJpbmcubGVuZ3Ro
KCkpOworICAgIGNvcHlBU0NJSShtX3N0cmluZywgYnVmZmVyLmRhdGEoKSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzPgorYm9vbCBwcm90b2NvbElzSW50ZXJuYWwoY29uc3Qg
U3RyaW5nQ2xhc3MmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpCit7CisgICAgLy8gRG8gdGhl
IGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBhc3Nl
cnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
Pihwcm90b2NvbCksIHN0cmxlbihwcm90b2NvbCkpKTsKKyAgICBib29sIGlzTGVhZGluZyA9IHRy
dWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgaiA9IDA7IHVybFtpXTsgKytpKSB7CisgICAg
ICAgIC8vIFNraXAgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCisg
ICAgICAgIGlmIChpc0xlYWRpbmcgJiYgc2hvdWxkVHJpbUZyb21VUkwodXJsW2ldKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBpc0xlYWRpbmcgPSBmYWxzZTsKKworICAgICAgICAv
LyBTa2lwIGFueSB0YWJzIGFuZCBuZXdsaW5lcy4KKyAgICAgICAgaWYgKHVybFtpXSA9PSAnXHQn
IHx8IHVybFtpXSA9PSAnXHInIHx8IHVybFtpXSA9PSAnXG4nKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgaWYgKCFwcm90b2NvbFtqXSkKKyAgICAgICAgICAgIHJldHVybiB1cmxb
aV0gPT0gJzonOworICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsW2ld
LCBwcm90b2NvbFtqXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgKytq
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgcHJvdG9jb2xJcyhj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpCit7CisgICAgcmV0dXJuIHBy
b3RvY29sSXNJbnRlcm5hbCh1cmwsIHByb3RvY29sKTsKK30KKworaW5saW5lIGJvb2wgVVJMOjpw
cm90b2NvbElzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK3sK
KyAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzSW50ZXJuYWwoc3RyaW5nLCBwcm90b2NvbCk7Cit9
CisKKyNpZm5kZWYgTkRFQlVHCisKK3ZvaWQgVVJMOjpwcmludCgpIGNvbnN0Cit7CisgICAgcHJp
bnRmKCIlc1xuIiwgbV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Cit9CisKKyNlbmRpZgorCitTdHJp
bmcgVVJMOjpzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdAoreworICAgIFVSTCByZWZl
cnJlcigqdGhpcyk7CisgICAgcmVmZXJyZXIuc2V0VXNlcihTdHJpbmcoKSk7CisgICAgcmVmZXJy
ZXIuc2V0UGFzcyhTdHJpbmcoKSk7CisgICAgcmVmZXJyZXIucmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCk7CisgICAgcmV0dXJuIHJlZmVycmVyLnN0cmluZygpOworfQorCitib29sIFVSTDo6aXNM
b2NhbEZpbGUoKSBjb25zdAoreworICAgIC8vIEluY2x1ZGluZyBmZWVkIGhlcmUgbWlnaHQgYmUg
YSBiYWQgaWRlYSBzaW5jZSBkcmFnIGFuZCBkcm9wIHVzZXMgdGhpcyBjaGVjaworICAgIC8vIGFu
ZCBpbmNsdWRpbmcgZmVlZCB3b3VsZCBhbGxvdyBmZWVkcyB0byBwb3RlbnRpYWxseSBsZXQgc29t
ZW9uZSdzIGJsb2cKKyAgICAvLyByZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJkIG9u
IGEgZHJhZywgZXZlbiB3aXRob3V0IGEgZHJvcC4KKyAgICAvLyBMaWtld2lzZSB3aXRoIHVzaW5n
IHRoZSBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc0xvY2FsKCkgZnVuY3Rpb24uCisgICAg
cmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKK30KKworYm9vbCBwcm90b2NvbElzSmF2YVNjcmlw
dChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVy
bCwgImphdmFzY3JpcHQiKTsKK30KKworYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdW
aWV3IHVybCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3Jp
cHQiKTsKK30KKworYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJs
KQoreworICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgpOworICAgIC8vIERvIHRoZSBjb21w
YXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCisgICAgcmV0dXJuIGxl
bmd0aCA+PSA1CisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzBdLCAn
aCcpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzFdLCAndCcpCisg
ICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzJdLCAndCcpCisgICAgICAg
ICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzNdLCAncCcpCisgICAgICAgICYmICh1
cmxbNF0gPT0gJzonIHx8IChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFs0XSwgJ3MnKSAm
JiBsZW5ndGggPj0gNiAmJiB1cmxbNV0gPT0gJzonKSk7Cit9CisKK2NvbnN0IFVSTCYgYmxhbmtV
UkwoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVS
TCgpLCAiYWJvdXQ6YmxhbmsiKTsKKyAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7Cit9CisKK2Jv
b2wgVVJMOjppc0JsYW5rVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJcygiYWJv
dXQiKTsKK30KKworYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKKworICAgIC8vIFNpbmNlIG1v
c3QgVVJMcyBkb24ndCBoYXZlIGEgcG9ydCwgcmV0dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBvcnQi
IGNhc2UuCisgICAgaWYgKCFwb3J0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFRo
aXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemls
bGEgaW1wbGVtZW50cy4KKyAgICAvLyBTZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0
cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICBzdGF0
aWMgY29uc3QgdWludDE2X3QgYmxvY2tlZFBvcnRMaXN0W10gPSB7CisgICAgICAgIDEsICAgIC8v
IHRjcG11eAorICAgICAgICA3LCAgICAvLyBlY2hvCisgICAgICAgIDksICAgIC8vIGRpc2NhcmQK
KyAgICAgICAgMTEsICAgLy8gc3lzdGF0CisgICAgICAgIDEzLCAgIC8vIGRheXRpbWUKKyAgICAg
ICAgMTUsICAgLy8gbmV0c3RhdAorICAgICAgICAxNywgICAvLyBxb3RkCisgICAgICAgIDE5LCAg
IC8vIGNoYXJnZW4KKyAgICAgICAgMjAsICAgLy8gRlRQLWRhdGEKKyAgICAgICAgMjEsICAgLy8g
RlRQLWNvbnRyb2wKKyAgICAgICAgMjIsICAgLy8gU1NICisgICAgICAgIDIzLCAgIC8vIHRlbG5l
dAorICAgICAgICAyNSwgICAvLyBTTVRQCisgICAgICAgIDM3LCAgIC8vIHRpbWUKKyAgICAgICAg
NDIsICAgLy8gbmFtZQorICAgICAgICA0MywgICAvLyBuaWNuYW1lCisgICAgICAgIDUzLCAgIC8v
IGRvbWFpbgorICAgICAgICA3NywgICAvLyBwcml2LXJqcworICAgICAgICA3OSwgICAvLyBmaW5n
ZXIKKyAgICAgICAgODcsICAgLy8gdHR5bGluaworICAgICAgICA5NSwgICAvLyBzdXBkdXAKKyAg
ICAgICAgMTAxLCAgLy8gaG9zdHJpYW1lCisgICAgICAgIDEwMiwgIC8vIGlzby10c2FwCisgICAg
ICAgIDEwMywgIC8vIGdwcGl0bnAKKyAgICAgICAgMTA0LCAgLy8gYWNyLW5lbWEKKyAgICAgICAg
MTA5LCAgLy8gUE9QMgorICAgICAgICAxMTAsICAvLyBQT1AzCisgICAgICAgIDExMSwgIC8vIHN1
bnJwYworICAgICAgICAxMTMsICAvLyBhdXRoCisgICAgICAgIDExNSwgIC8vIFNGVFAKKyAgICAg
ICAgMTE3LCAgLy8gdXVjcC1wYXRoCisgICAgICAgIDExOSwgIC8vIG5udHAKKyAgICAgICAgMTIz
LCAgLy8gTlRQCisgICAgICAgIDEzNSwgIC8vIGxvYy1zcnYgLyBlcG1hcAorICAgICAgICAxMzks
ICAvLyBuZXRiaW9zCisgICAgICAgIDE0MywgIC8vIElNQVAyCisgICAgICAgIDE3OSwgIC8vIEJH
UAorICAgICAgICAzODksICAvLyBMREFQCisgICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCisgICAg
ICAgIDUxMiwgIC8vIHByaW50IC8gZXhlYworICAgICAgICA1MTMsICAvLyBsb2dpbgorICAgICAg
ICA1MTQsICAvLyBzaGVsbAorICAgICAgICA1MTUsICAvLyBwcmludGVyCisgICAgICAgIDUyNiwg
IC8vIHRlbXBvCisgICAgICAgIDUzMCwgIC8vIGNvdXJpZXIKKyAgICAgICAgNTMxLCAgLy8gQ2hh
dAorICAgICAgICA1MzIsICAvLyBuZXRuZXdzCisgICAgICAgIDU0MCwgIC8vIFVVQ1AKKyAgICAg
ICAgNTQ4LCAgLy8gYWZwb3ZlcnRjcCBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDU1NiwgIC8v
IHJlbW90ZWZzCisgICAgICAgIDU2MywgIC8vIE5OVFArU1NMCisgICAgICAgIDU4NywgIC8vIEVT
TVRQCisgICAgICAgIDYwMSwgIC8vIHN5c2xvZy1jb25uCisgICAgICAgIDYzNiwgIC8vIExEQVAr
U1NMCisgICAgICAgIDk5MywgIC8vIElNQVArU1NMCisgICAgICAgIDk5NSwgIC8vIFBPUDMrU1NM
CisgICAgICAgIDIwNDksIC8vIE5GUworICAgICAgICAzNjU5LCAvLyBhcHBsZS1zYXNsIC8gUGFz
c3dvcmRTZXJ2ZXIgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA0MDQ1LCAvLyBsb2NrZAorICAg
ICAgICA0MTkwLCAvLyBNYW5hZ2VTaWV2ZSBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDYwMDAs
IC8vIFgxMQorICAgICAgICA2NjY1LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0K
KyAgICAgICAgNjY2NiwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAgICAg
IDY2NjcsIC8vIFN0YW5kYXJkIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2NjgsIC8v
IEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2NjY5LCAvLyBBbHRlcm5h
dGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBT
U0wgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRp
dGlvbl0KKyAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGlu
dmFsaWQgcG9ydCBudW1iZXJzCisgICAgfTsKKworICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBp
biB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgorICAgIEFTU0VSVChzdGQ6OmlzX3Nv
cnRlZChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlz
dCkpKTsKKyAgICBpZiAoIXN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0
TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgLy8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJM
cywgYXMgTW96aWxsYSBkb2VzLgorICAgIGlmICgocG9ydC52YWx1ZSgpID09IDIxIHx8IHBvcnQu
dmFsdWUoKSA9PSAyMikgJiYgdXJsLnByb3RvY29sSXMoImZ0cCIpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIC8vIEFsbG93IGFueSBwb3J0IG51bWJlciBpbiBhIGZpbGUgVVJMLCBzaW5j
ZSB0aGUgcG9ydCBudW1iZXIgaXMgaWdub3JlZC4KKyAgICBpZiAodXJsLnByb3RvY29sSXMoImZp
bGUiKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0
cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIEFTU0VS
VChwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiZGF0YSIpKTsKKworICAgIC8vIEZJWE1FOiBXaGF0
J3MgdGhlIHJpZ2h0IGJlaGF2aW9yIHdoZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwgYnV0
IGEgc2VtaWNvbG9uIGxhdGVyPworICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVh
ayBhdCB0aGUgc2VtaWNvbG9uIGluIHRoYXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJlY3Qu
CisgICAgYXV0byBpbmRleCA9IHVybC5maW5kKCc7JywgNSk7CisgICAgaWYgKGluZGV4ID09IG5v
dEZvdW5kKQorICAgICAgICBpbmRleCA9IHVybC5maW5kKCcsJywgNSk7CisgICAgaWYgKGluZGV4
ID09IG5vdEZvdW5kKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1l
bnQgaGVyZSB0aGF0IG1hZGUgaXQgc291bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcg
dGV4dC9wbGFpbi4KKyAgICAgICAgLy8gQnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkg
c3RyaW5nIGhlcmUgZm9yIHNvbWUgdGltZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBh
dCB0aGlzIHRpbWUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIH0KKyAgICBp
ZiAoaW5kZXggPT0gNSkKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOworICAgIEFTU0VS
VChpbmRleCA+PSA1KTsKKyAgICByZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNv
bnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Cit9CisKK1N0cmluZyBVUkw6OnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Cit7CisgICAgaWYgKHN0cmlu
ZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0cmluZygpOworCisgICAg
cmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJpbmcoKS5y
aWdodChsZW5ndGggLyAyIC0gMik7Cit9CisKK1VSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQ
YXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXJ0KQoreworICAgIHJldHVybiBVUkwoVVJMKCks
ICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8n
ICsgcmVsYXRpdmVQYXJ0KTsKK30KKworVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0
aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxl
Oi8vLyIgKyBmaWxlUGF0aCk7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFVSTCYgdXJsKQoreworICAgIHRzIDw8IHVybC5zdHJpbmcoKTsKKyAgICBy
ZXR1cm4gdHM7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoU09VUCkKK3N0YXRp
YyBib29sIGlzSVB2NEFkZHJlc3MoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYXV0byBjb3Vu
dCA9IDA7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2lu
Z0VtcHR5RW50cmllcygnLicpKSB7CisgICAgICAgIGlmIChjb3VudCA+PSA0KQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gb2N0ZXQubGVu
Z3RoKCk7CisgICAgICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCA+IDMpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byB2YWx1ZSA9IDA7CisgICAgICAgIGZvciAoYXV0
byBpID0gMHU7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgY29uc3QgYXV0byBkaWdp
dCA9IG9jdGV0W2ldOworCisgICAgICAgICAgICAvLyBQcm9oaWJpdCBsZWFkaW5nIHplcm9lcy4K
KyAgICAgICAgICAgIGlmIChkaWdpdCA+ICc5JyB8fCBkaWdpdCA8ICghaSAmJiBsZW5ndGggPiAx
ID8gJzEnIDogJzAnKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
ICAgIHZhbHVlID0gMTAgKiB2YWx1ZSArIChkaWdpdCAtICcwJyk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAodmFsdWUgPiAyNTUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgY291bnQrKzsKKyAgICB9CisKKyAgICByZXR1cm4gKGNvdW50ID09IDQpOworfQorCitzdGF0
aWMgYm9vbCBpc0lQdjZBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGVudW0gU2tp
cFN0YXRlIHsgTm9uZSwgV2lsbFNraXAsIFNraXBwaW5nLCBTa2lwcGVkLCBGaW5hbCB9OworICAg
IGF1dG8gc2tpcFN0YXRlID0gTm9uZTsKKyAgICBhdXRvIGNvdW50ID0gMDsKKworICAgIGZvciAo
Y29uc3QgYXV0byBoZXh0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnOicp
KSB7CisgICAgICAgIGlmIChjb3VudCA+PSA4IHx8IHNraXBTdGF0ZSA9PSBGaW5hbCkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IGhleHRl
dC5sZW5ndGgoKTsKKyAgICAgICAgaWYgKCFsZW5ndGgpIHsKKyAgICAgICAgICAgIC8vIDo6IG1h
eSBiZSB1c2VkIGFueXdoZXJlIHRvIHNraXAgMSB0byA4IGhleHRldHMsIGJ1dCBvbmx5IG9uY2Uu
CisgICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IFNraXBwZWQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IE5vbmUpCisgICAg
ICAgICAgICAgICAgc2tpcFN0YXRlID0gIWNvdW50ID8gV2lsbFNraXAgOiBTa2lwcGluZzsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkKKyAgICAgICAgICAgICAg
ICBza2lwU3RhdGUgPSBTa2lwcGluZzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBza2lwU3RhdGUgPSBGaW5hbDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBpZiAoc2tpcFN0YXRlID09IFNraXBwaW5nKQorICAgICAgICAgICAg
c2tpcFN0YXRlID0gU2tpcHBlZDsKKworICAgICAgICBpZiAobGVuZ3RoID4gNCkgeworICAgICAg
ICAgICAgLy8gQW4gSVB2NCBhZGRyZXNzIG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBmaW5h
bCB0d28gaGV4dGV0cy4KKyAgICAgICAgICAgIGlmICgoc2tpcFN0YXRlID09IE5vbmUgJiYgY291
bnQgIT0gNikgfHwgKHNraXBTdGF0ZSA9PSBTa2lwcGVkICYmIGNvdW50ID49IDYpIHx8ICFpc0lQ
djRBZGRyZXNzKGhleHRldCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvIGNvZGVVbml0IDogaGV4dGV0LmNvZGVVbml0
cygpKSB7CisgICAgICAgICAgICAvLyBJUHY2IGFsbG93cyBsZWFkaW5nIHplcm9lcy4KKyAgICAg
ICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGNvZGVVbml0KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBjb3VudCsrOworICAgIH0KKworICAg
IHJldHVybiAoY291bnQgPT0gOCAmJiBza2lwU3RhdGUgPT0gTm9uZSkgfHwgc2tpcFN0YXRlID09
IFNraXBwZWQgfHwgc2tpcFN0YXRlID09IEZpbmFsOworfQorCitib29sIFVSTDo6aG9zdElzSVBB
ZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKK3sKKyAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0gbm90
Rm91bmQpCisgICAgICAgIHJldHVybiBpc0lQdjRBZGRyZXNzKGhvc3QpOworCisgICAgcmV0dXJu
IGlzSVB2NkFkZHJlc3MoaG9zdCk7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJkNzNiYzcwNTZmYTM0NWJlZGUwYThjMjU4MWE4MDNkYTc1YjA5OTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuaApAQCAtMCwwICsxLDM5MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAx
MSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgVVNFKENGKQordHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX19DRlVSTCogQ0ZVUkxSZWY7CisjZW5kaWYKKworI2lmIFVTRShTT1VQKQorI2luY2x1ZGUg
PHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9O
KQorT0JKQ19DTEFTUyBOU1VSTDsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRl
eHRTdHJlYW07CisKK2NsYXNzIFVSTFRleHRFbmNvZGluZyB7CitwdWJsaWM6CisgICAgdmlydHVh
bCBWZWN0b3I8dWludDhfdD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3KSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB+VVJMVGV4dEVuY29kaW5nKCkgeyB9OworfTsKKworc3RydWN0IFVS
TEhhc2g7CisKK2NsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBVUkwgeworcHVibGljOgorICAgIC8v
IEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgorICAgIFVSTCgp
IHsgaW52YWxpZGF0ZSgpOyB9CisKKyAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0K
KyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5n
KCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorCisgICAgLy8gUmVzb2x2ZXMgdGhlIHJl
bGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQorICAg
IC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjZXJz
LiBUaGUgYmFzZSBVUkwgY2FuIGJlCisgICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2Fz
ZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMKKyAgICAvLyBhYnNvbHV0
ZS4KKyAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlz
IGNyZWF0ZXMgYW4gaW52YWxpZAorICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxk
IGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMKKyAgICAvLyB0aGUgc2Ft
ZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4KKyAgICBVUkwoY29uc3Qg
VVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2Rpbmcq
ID0gbnVsbHB0cik7CisKKyAgICBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNv
bnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChj
b25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBj
b25zdDsKKworICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBoYXJt
b25pemVkIHNvIHRoYXQgcGFzc2luZyBhCisgICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBlbXB0
eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQorICAgIC8vIHN0YW5kYXJkIFN0
cmluZyBjb25zdHJ1Y3Rvci4KKworICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9u
bHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIKKyAgICAvLyB0aHJlYWQuIFNp
bmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVy
ZSdzCisgICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29weSgp
IG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCisgICAgVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0
OworCisgICAgYm9vbCBpc051bGwoKSBjb25zdDsKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdDsK
KyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB5b3Ug
Y2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4KKyAgICAvLyBOb24taGllcmFy
Y2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQuCisgICAgYm9vbCBjYW5TZXRI
b3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQorCisgICAgYm9v
bCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KKyAg
ICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7CisKKyAgICBjb25zdCBTdHJpbmcmIHN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisKKyAgICBTdHJpbmcgc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OworCisgICAg
U3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKKyAgICBTdHJpbmcg
aG9zdEFuZFBvcnQoKSBjb25zdDsKKyAgICBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNv
bnN0OworICAgIFN0cmluZyB1c2VyKCkgY29uc3Q7CisgICAgU3RyaW5nIHBhc3MoKSBjb25zdDsK
KyAgICBTdHJpbmcgcGF0aCgpIGNvbnN0OworICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgp
IGNvbnN0OworICAgIFN0cmluZyBxdWVyeSgpIGNvbnN0OworICAgIFN0cmluZyBmcmFnbWVudElk
ZW50aWZpZXIoKSBjb25zdDsKKyAgICBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0
OworCisgICAgYm9vbCBoYXNVc2VybmFtZSgpIGNvbnN0OworICAgIGJvb2wgaGFzUGFzc3dvcmQo
KSBjb25zdDsKKyAgICBib29sIGhhc1F1ZXJ5KCkgY29uc3Q7CisgICAgYm9vbCBoYXNGcmFnbWVu
dCgpIGNvbnN0OworICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0OworCisgICAgLy8gVW5saWtlIHVz
ZXIoKSBhbmQgcGFzcygpLCB0aGVzZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1
ZW5jZXMuCisgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBw
aW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgorICAg
IFN0cmluZyBlbmNvZGVkVXNlcigpIGNvbnN0OworICAgIFN0cmluZyBlbmNvZGVkUGFzcygpIGNv
bnN0OworCisgICAgU3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OworCisgICAgU3RyaW5nIGZp
bGVTeXN0ZW1QYXRoKCkgY29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJl
bnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCisgICAgLy8gdGVybWlu
YXRlZCBBU0NJSSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KKyAg
ICBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OworICAgIGJvb2wgcHJvdG9jb2xJ
cyhTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3QgeyBy
ZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9CisgICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQorICAgIGJvb2wgcHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpIGNvbnN0OworICAgIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKKyAgICBi
b29sIGlzQmxhbmtVUkwoKSBjb25zdDsKKyAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25z
dCB7IHJldHVybiBtX2Nhbm5vdEJlQUJhc2VVUkw7IH0KKworICAgIGJvb2wgaXNNYXRjaGluZ0Rv
bWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKKworICAgIGJvb2wgc2V0UHJvdG9jb2woY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCBy
ZW1vdmVQb3J0KCk7CisgICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKKworICAgIC8v
IElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgorICAgIHZvaWQgc2V0
SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIHNldFVzZXIoY29uc3QgU3Ry
aW5nJik7CisgICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gSWYgeW91
IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5n
IHBhdGgKKyAgICAvLyB3aWxsIGJlICIvIi4KKyAgICB2b2lkIHNldFBhdGgoY29uc3QgU3RyaW5n
Jik7CisKKyAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBv
ciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAorICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhl
IHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKKyAgICAv
LyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBh
IG51bGwgc3RyaW5nLgorICAgIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7CisKKyAgICB2
b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKKyAgICB2b2lkIHJlbW92ZUZy
YWdtZW50SWRlbnRpZmllcigpOworCisgICAgdm9pZCByZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRl
bnRpZmllcigpOworCisgICAgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcp
OworCisgICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7CisgICAgdW5zaWduZWQgcGF0aEVu
ZCgpIGNvbnN0OworICAgIHVuc2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0OworCisg
ICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CisK
KyNpZiBVU0UoQ0YpCisgICAgVVJMKENGVVJMUmVmKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShTT1VQKQorICAgIFVSTChT
b3VwVVJJKik7CisgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBjcmVhdGVTb3VwVVJJKCkgY29uc3Q7
CisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFVSTChOU1VSTCopOworICAgIG9w
ZXJhdG9yIE5TVVJMKigpIGNvbnN0OworI2VuZGlmCisjaWZkZWYgX19PQkpDX18KKyAgICBvcGVy
YXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQorI2VuZGlmCisKKyNp
Zm5kZWYgTkRFQlVHCisgICAgdm9pZCBwcmludCgpIGNvbnN0OworI2VuZGlmCisKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRl
bXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYp
OworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVUkw+
IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNl
cjsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNv
bnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8
Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdDsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25z
dDsKKworICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nRnJh
Z21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworICAgIGZyaWVuZCBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJM
JiwgY29uc3QgVVJMJik7CisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGhvc3Rz
QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKKyAgICBTdHJpbmcgbV9zdHJpbmc7
CisKKyAgICB1bnNpZ25lZCBtX2lzVmFsaWQgOiAxOworICAgIHVuc2lnbmVkIG1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSA6IDE7CisgICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDogMTsK
KworICAgIC8vIFRoaXMgaXMgb3V0IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRzIGJldHRlci4g
VGhlIHBvcnQgaXMgYWZ0ZXIgdGhlIGhvc3QuCisgICAgdW5zaWduZWQgbV9wb3J0TGVuZ3RoIDog
MzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGggPSAoMSA8PCAz
KSAtIDE7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVtZUxlbmd0aCA9
ICgxIDw8IDI2KSAtIDE7CisgICAgdW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsKKyAgICB1bnNp
Z25lZCBtX3VzZXJTdGFydDsKKyAgICB1bnNpZ25lZCBtX3VzZXJFbmQ7CisgICAgdW5zaWduZWQg
bV9wYXNzd29yZEVuZDsKKyAgICB1bnNpZ25lZCBtX2hvc3RFbmQ7CisgICAgdW5zaWduZWQgbV9w
YXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgdW5zaWduZWQgbV9wYXRoRW5kOworICAgIHVuc2lnbmVk
IG1fcXVlcnlFbmQ7Cit9OworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVvZihT
dHJpbmcpICsgOCAqIHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwiKTsK
KwordGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Cit2b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3N0cmluZzsKK30KKwordGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+Citib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYg
dXJsKQoreworICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsKKyAg
ICBpZiAoIW9wdGlvbmFsVVJMKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdXJsID0gV1RG
TW92ZSgqb3B0aW9uYWxVUkwpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIFN0cmluZyBzdHJpbmc7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJp
bmcpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBVUkwoVVJMKCks
IHN0cmluZyk7Cit9CisKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudChjb25zdCBVUkwmLCBjb25zdCBV
UkwmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVh
bChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGhvc3Rz
QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKK1dURl9FWFBPUlRfUFJJVkFURSBj
b25zdCBVUkwmIGJsYW5rVVJMKCk7CisKKy8vIEZ1bmN0aW9ucyB0byBkbyBVUkwgb3BlcmF0aW9u
cyBvbiBzdHJpbmdzLgorLy8gVGhlc2UgYXJlIG9wZXJhdGlvbnMgdGhhdCBhcmVuJ3QgZmFzdGVy
IG9uIGEgcGFyc2VkIFVSTC4KKy8vIFRoZXNlIGFyZSBhbHNvIGRpZmZlcmVudCBmcm9tIHRoZSBV
UkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCByZXF1aXJlIHRoZSBzdHJpbmcgdG8gYmUg
YSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgorLy8gVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFu
dCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vzc2FyaWx5IGNvbnNp
ZGVyZWQgdmFsaWQgYnkgVVJMLgorCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElz
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0
cmluZyYgdXJsKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+
IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBwcm90b2NvbCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3Ry
aW5nVmlldyBwcm90b2NvbCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwb3J0QWxsb3dlZChj
b25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQg
Zm9yIFdlYiByZXNvdXJjZXMuCisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlZ2lzdGVyRGVm
YXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbGVhckRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7CisKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzVmFs
aWRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBt
aW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKKworLy8gRklYTUU6IFRoaXMg
aXMgYSB3cm9uZyBjb25jZXB0IHRvIGV4cG9zZSwgZGlmZmVyZW50IHBhcnRzIG9mIGEgVVJMIG5l
ZWQgZGlmZmVyZW50IGVzY2FwaW5nIHBlciB0aGUgVVJMIFN0YW5kYXJkLgorV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYp
OworCisvLyBJbmxpbmVzLgorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwg
Y29uc3QgVVJMJiBiKQoreworICAgIHJldHVybiBhLnN0cmluZygpID09IGIuc3RyaW5nKCk7Cit9
CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIp
Cit7CisgICAgcmV0dXJuIGEuc3RyaW5nKCkgPT0gYjsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICByZXR1cm4gYSA9PSBi
LnN0cmluZygpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29u
c3QgVVJMJiBiKQoreworICAgIHJldHVybiBhLnN0cmluZygpICE9IGIuc3RyaW5nKCk7Cit9CisK
K2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIpCit7
CisgICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYjsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICByZXR1cm4gYSAhPSBiLnN0
cmluZygpOworfQorCisvLyBJbmxpbmUgdmVyc2lvbnMgb2Ygc29tZSBub24tR29vZ2xlVVJMIGZ1
bmN0aW9ucyBzbyB3ZSBjYW4gZ2V0IGlubGluaW5nCisvLyB3aXRob3V0IGhhdmluZyB0byBoYXZl
IGEgbG90IG9mIHVnbHkgaWZkZWZzIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLgorCitpbmxpbmUg
Ym9vbCBVUkw6OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgp
OworfQorCitpbmxpbmUgYm9vbCBVUkw6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiBt
X3N0cmluZy5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBib29sIFVSTDo6aXNWYWxpZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faXNWYWxpZDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpoYXNQYXRo
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXRoRW5kICE9IG1faG9zdEVuZCArIG1fcG9ydExl
bmd0aDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpoYXNVc2VybmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fdXNlckVuZCA+IG1fdXNlclN0YXJ0OworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhh
c1Bhc3N3b3JkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXNzd29yZEVuZCA+IChtX3VzZXJF
bmQgKyAxKTsKK30KKworaW5saW5lIGJvb2wgVVJMOjpoYXNRdWVyeSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcXVlcnlFbmQgPiBtX3BhdGhFbmQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6aGFz
RnJhZ21lbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVu
Z3RoKCkgPiBtX3F1ZXJ5RW5kOworfQorCitpbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSBjb25zdAoreworICAgIHJldHVybiBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7
Cit9CisKK2lubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhTdGFydCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKK30KKworaW5saW5lIHVuc2lnbmVkIFVSTDo6
cGF0aEVuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGF0aEVuZDsKK30KKworaW5saW5lIHVu
c2lnbmVkIFVSTDo6cGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9w
YXRoQWZ0ZXJMYXN0U2xhc2g7Cit9CisKK1dURl9FWFBPUlRfUFJJVkFURSBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7CisKK3RlbXBsYXRl
PD4gc3RydWN0IERlZmF1bHRIYXNoPFVSTD47Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRz
PFVSTD47CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VVJMSGFzaC5oIGIvU291cmNlL1dURi93dGYvVVJMSGFzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMmZhM2Rj
Y2Y2NjEwMGZjODUwODY2ZWMzNTQ3YTNhODZkZjliZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkxIYXNoLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFVSTEhhc2hfaAorI2RlZmluZSBV
UkxIYXNoX2gKKworI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCitzdHJ1Y3QgVVJMSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
VVJMJiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4ga2V5LnN0cmluZygpLmltcGwoKS0+aGFz
aCgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3Qg
VVJMJiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2g6OmVxdWFsKGEuc3RyaW5n
KCksIGIuc3RyaW5nKCkpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCisvLyBVUkxIYXNoIGlzIHRoZSBk
ZWZhdWx0IGhhc2ggZm9yIFN0cmluZwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJM
PiB7CisgICAgdXNpbmcgSGFzaCA9IFVSTEhhc2g7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPFVSTD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8VVJMPiB7IH07CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVVJMSGFzaF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9VUkxQYXJzZXIuY3BwIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41MDlkNGI4MWY5ODIzM2FkNGE5OTY5NWIzZTlkYTM0Y2IxY2U2Yzc1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcApAQCAtMCwwICsxLDI5MjUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMUGFyc2VyLmg+CisKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNs
dWRlIDx1bmljb2RlL3VpZG5hLmg+CisjaW5jbHVkZSA8dW5pY29kZS91dGY4Lmg+CisjaW5jbHVk
ZSA8dW5pY29kZS91dHlwZXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKyNkZWZpbmUgVVJMX1BB
UlNFUl9ERUJVR0dJTkcgMAorCisjaWYgVVJMX1BBUlNFUl9ERUJVR0dJTkcKKyNkZWZpbmUgVVJM
X1BBUlNFUl9MT0coLi4uKSBXVEZMb2dBbHdheXMoX19WQV9BUkdTX18pCisjZWxzZQorI2RlZmlu
ZSBVUkxfUEFSU0VSX0xPRyguLi4pCisjZW5kaWYKKyAgICAKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CitjbGFzcyBDb2RlUG9pbnRJdGVyYXRvciB7CitwdWJsaWM6CisgICAgQUxX
QVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcigpIHsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29k
ZVBvaW50SXRlcmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogYmVnaW4sIGNvbnN0IENoYXJhY3Rl
clR5cGUqIGVuZCkKKyAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQorICAgICAgICAsIG1fZW5kKGVu
ZCkKKyAgICB7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0
b3IoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIGJlZ2luLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRv
ciYgZW5kKQorICAgICAgICA6IENvZGVQb2ludEl0ZXJhdG9yKGJlZ2luLm1fYmVnaW4sIGVuZC5t
X2JlZ2luKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGVuZC5tX2JlZ2luID49IGJlZ2luLm1fYmVn
aW4pOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIgb3BlcmF0b3IqKCkg
Y29uc3Q7CisgICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvciYgb3BlcmF0b3IrKygp
OworCisgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZVBvaW50SXRl
cmF0b3ImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3Ro
ZXIubV9iZWdpbgorICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7CisgICAgfQor
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICAKKyAgICBB
TFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgQ29kZVBvaW50
SXRlcmF0b3ImIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9iZWdpbiA9IG90aGVyLm1fYmVnaW47
CisgICAgICAgIG1fZW5kID0gb3RoZXIubV9lbmQ7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgYXRFbmQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fYmVnaW4gPD0gbV9lbmQpOworICAgICAgICByZXR1cm4gbV9iZWdpbiA+PSBt
X2VuZDsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2lu
Y2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogcmVmZXJlbmNlKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fYmVnaW4gPj0gcmVmZXJlbmNlKTsKKyAgICAgICAgcmV0dXJuIG1fYmVnaW4gLSBy
ZWZlcmVuY2U7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2lu
Y2UoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGNvZGVVbml0c1NpbmNlKG90aGVyLm1fYmVnaW4pOworICAgIH0KKyAgICAKK3ByaXZh
dGU6CisgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogbV9iZWdpbiB7IG51bGxwdHIgfTsKKyAgICBj
b25zdCBDaGFyYWN0ZXJUeXBlKiBtX2VuZCB7IG51bGxwdHIgfTsKK307CisKK3RlbXBsYXRlPD4K
K0FMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9y
KigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICByZXR1cm4gKm1fYmVnaW47
Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgYXV0byBDb2RlUG9pbnRJdGVyYXRvcjxM
Q2hhcj46Om9wZXJhdG9yKysoKSAtPiBDb2RlUG9pbnRJdGVyYXRvciYKK3sKKyAgICBtX2JlZ2lu
Kys7CisgICAgcmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIFVD
aGFyMzIgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+OjpvcGVyYXRvciooKSBjb25zdAoreworICAg
IEFTU0VSVCghYXRFbmQoKSk7CisgICAgVUNoYXIzMiBjOworICAgIFUxNl9HRVQobV9iZWdpbiwg
MCwgMCwgbV9lbmQgLSBtX2JlZ2luLCBjKTsKKyAgICByZXR1cm4gYzsKK30KKwordGVtcGxhdGU8
PgorQUxXQVlTX0lOTElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPjo6b3BlcmF0b3Ir
KygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgoreworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIHNp
emVfdCBsZW5ndGggPSBtX2VuZCAtIG1fYmVnaW47CisgICAgVTE2X0ZXRF8xKG1fYmVnaW4sIGks
IGxlbmd0aCk7CisgICAgbV9iZWdpbiArPSBpOworICAgIHJldHVybiAqdGhpczsKK30KKyAgICAK
K0FMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgYXBwZW5kQ29kZVBvaW50KFZlY3RvcjxVQ2hhcj4m
IGRlc3RpbmF0aW9uLCBVQ2hhcjMyIGNvZGVQb2ludCkKK3sKKyAgICBpZiAoVV9JU19CTVAoY29k
ZVBvaW50KSkgeworICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+
KGNvZGVQb2ludCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRlc3RpbmF0aW9uLnJl
c2VydmVDYXBhY2l0eShkZXN0aW5hdGlvbi5zaXplKCkgKyAyKTsKKyAgICBkZXN0aW5hdGlvbi51
bmNoZWNrZWRBcHBlbmQoVTE2X0xFQUQoY29kZVBvaW50KSk7CisgICAgZGVzdGluYXRpb24udW5j
aGVja2VkQXBwZW5kKFUxNl9UUkFJTChjb2RlUG9pbnQpKTsKK30KKworZW51bSBVUkxDaGFyYWN0
ZXJDbGFzcyB7CisgICAgVXNlckluZm8gPSAweDEsCisgICAgRGVmYXVsdCA9IDB4MiwKKyAgICBG
b3JiaWRkZW5Ib3N0ID0gMHg0LAorICAgIFF1ZXJ5UGVyY2VudCA9IDB4OCwKKyAgICBTbGFzaFF1
ZXN0aW9uT3JIYXNoID0gMHgxMCwKKyAgICBWYWxpZFNjaGVtZSA9IDB4MjAsCit9OworCitzdGF0
aWMgY29uc3QgdWludDhfdCBjaGFyYWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7CisgICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHgwCisgICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MgorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFF1ZXJ5UGVyY2VudCwgLy8gMHgzCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
NQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg2CisgICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDcKKyAgICBVc2VySW5mbyB8IERl
ZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4OAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1
ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4OQorICAgIFVzZXJJbmZvIHwgRGVmYXVs
dCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4QQorICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhCCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweEMKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweEQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQsIC8vIDB4RQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwg
Ly8gMHhGCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEwCisg
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDExCisgICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEyCisgICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEzCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweDE0CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDE1CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE2
CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE3CisgICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE4CisgICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE5CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDFBCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDFCCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAw
eDFDCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFECisgICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFFCisgICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFGCisgICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyAnCisgICAgMCwgLy8gJyEnCisg
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAnIicKKyAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlk
ZGVuSG9zdCwgLy8gJyMnCisgICAgMCwgLy8gJyQnCisgICAgRm9yYmlkZGVuSG9zdCwgLy8gJyUn
CisgICAgMCwgLy8gJyYnCisgICAgMCwgLy8gJ1wnJworICAgIDAsIC8vICcoJworICAgIDAsIC8v
ICcpJworICAgIDAsIC8vICcqJworICAgIFZhbGlkU2NoZW1lLCAvLyAnKycKKyAgICAwLCAvLyAn
LCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJy0nCisgICAgVmFsaWRTY2hlbWUsIC8vICcuJworICAg
IFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICcvJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnMCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzEnCisgICAgVmFs
aWRTY2hlbWUsIC8vICcyJworICAgIFZhbGlkU2NoZW1lLCAvLyAnMycKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJzQnCisgICAgVmFsaWRTY2hlbWUsIC8vICc1JworICAgIFZhbGlkU2NoZW1lLCAvLyAn
NicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzcnCisgICAgVmFsaWRTY2hlbWUsIC8vICc4JworICAg
IFZhbGlkU2NoZW1lLCAvLyAnOScKKyAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICc6
JworICAgIFVzZXJJbmZvLCAvLyAnOycKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnPCcKKyAgICBVc2VySW5mbywgLy8gJz0nCisgICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJz4n
CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRl
bkhvc3QsIC8vICc/JworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ0AnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdBJworICAgIFZhbGlkU2NoZW1lLCAvLyAnQicKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ0MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdEJworICAgIFZhbGlkU2NoZW1lLCAv
LyAnRScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0YnCisgICAgVmFsaWRTY2hlbWUsIC8vICdHJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnSCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0knCisgICAgVmFs
aWRTY2hlbWUsIC8vICdKJworICAgIFZhbGlkU2NoZW1lLCAvLyAnSycKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJ0wnCisgICAgVmFsaWRTY2hlbWUsIC8vICdNJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
TicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ08nCisgICAgVmFsaWRTY2hlbWUsIC8vICdQJworICAg
IFZhbGlkU2NoZW1lLCAvLyAnUScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1InCisgICAgVmFsaWRT
Y2hlbWUsIC8vICdTJworICAgIFZhbGlkU2NoZW1lLCAvLyAnVCcKKyAgICBWYWxpZFNjaGVtZSwg
Ly8gJ1UnCisgICAgVmFsaWRTY2hlbWUsIC8vICdWJworICAgIFZhbGlkU2NoZW1lLCAvLyAnVycK
KyAgICBWYWxpZFNjaGVtZSwgLy8gJ1gnCisgICAgVmFsaWRTY2hlbWUsIC8vICdZJworICAgIFZh
bGlkU2NoZW1lLCAvLyAnWicKKyAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICdbJwor
ICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICdc
XCcKKyAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICddJworICAgIFVzZXJJbmZvLCAv
LyAnXicKKyAgICAwLCAvLyAnXycKKyAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8vICdgJworICAg
IFZhbGlkU2NoZW1lLCAvLyAnYScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2InCisgICAgVmFsaWRT
Y2hlbWUsIC8vICdjJworICAgIFZhbGlkU2NoZW1lLCAvLyAnZCcKKyAgICBWYWxpZFNjaGVtZSwg
Ly8gJ2UnCisgICAgVmFsaWRTY2hlbWUsIC8vICdmJworICAgIFZhbGlkU2NoZW1lLCAvLyAnZycK
KyAgICBWYWxpZFNjaGVtZSwgLy8gJ2gnCisgICAgVmFsaWRTY2hlbWUsIC8vICdpJworICAgIFZh
bGlkU2NoZW1lLCAvLyAnaicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2snCisgICAgVmFsaWRTY2hl
bWUsIC8vICdsJworICAgIFZhbGlkU2NoZW1lLCAvLyAnbScKKyAgICBWYWxpZFNjaGVtZSwgLy8g
J24nCisgICAgVmFsaWRTY2hlbWUsIC8vICdvJworICAgIFZhbGlkU2NoZW1lLCAvLyAncCcKKyAg
ICBWYWxpZFNjaGVtZSwgLy8gJ3EnCisgICAgVmFsaWRTY2hlbWUsIC8vICdyJworICAgIFZhbGlk
U2NoZW1lLCAvLyAncycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3QnCisgICAgVmFsaWRTY2hlbWUs
IC8vICd1JworICAgIFZhbGlkU2NoZW1lLCAvLyAndicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3cn
CisgICAgVmFsaWRTY2hlbWUsIC8vICd4JworICAgIFZhbGlkU2NoZW1lLCAvLyAneScKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJ3onCisgICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAneycKKyAgICBV
c2VySW5mbywgLy8gJ3wnCisgICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAnfScKKyAgICAwLCAv
LyAnficKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4N0YKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
ODAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODIK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODQKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4ODUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODYKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4ODcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODgKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4ODkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEEKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OEIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEMKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OEQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEUKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OEYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTAKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OTEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OTMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTUK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTcKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OTgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTkKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OUEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUIKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OUMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUQKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OUUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUYKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QTAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTEKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QTIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTMKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QTQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QTYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTgK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUEKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QUIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUMKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QUQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUUKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QUYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjAKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QjEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjIKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QjMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjQKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QjUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjYKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QjcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QjkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkIK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkQKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QkUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkYKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QzAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzEKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QzIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzMKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QzQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzUKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QzYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzcKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QzgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzkKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4Q0EKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0IKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
Q0MKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0QKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0UK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0YKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDAKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RDEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDIKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RDMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDQKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RDUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDYKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RDcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDgKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RDkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REEKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4REIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REMKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4REQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
REYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTEK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTMKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RTQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTUKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RTYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTcKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RTgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTkKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RUEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUIKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RUMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUQKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RUUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUYKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RjAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RjIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjQK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjYKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RjcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjgKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RjkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkEKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RkIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkMKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RkQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkUKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RkYKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZ
U19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRyb2woQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIp
IHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweDFGOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzQzBDb250cm9sT3JTcGFjZShDaGFy
YWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MjA7IH0KK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNU
YWJPck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8
PSAweEQgJiYgY2hhcmFjdGVyID49IDB4OSAmJiBjaGFyYWN0ZXIgIT0gMHhCICYmIGNoYXJhY3Rl
ciAhPSAweEM7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJ
TkUgc3RhdGljIGJvb2wgaXNJblNpbXBsZUVuY29kZVNldChDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rl
cikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3RSB8fCBpc0MwQ29udHJvbChjaGFyYWN0ZXIpOyB9
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBi
b29sIGlzSW5EZWZhdWx0RW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVy
biBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIERl
ZmF1bHQ7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUg
c3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVy
KSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFj
dGVyXSAmIFVzZXJJbmZvOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBib29sIGlzUGVyY2VudE9yTm9uQVNDSUkoQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuICFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09ICcl
JzsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0
aWMgYm9vbCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsg
cmV0dXJuIGNoYXJhY3RlciA8PSAnXFwnICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVy
XSAmIFNsYXNoUXVlc3Rpb25Pckhhc2g7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNWYWxpZFNjaGVtZUNoYXJhY3RlcihDaGFy
YWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICd6JyAmJiBjaGFyYWN0
ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBWYWxpZFNjaGVtZTsgfQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0ZvcmJpZGRlbkhv
c3RDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8
PSAnXScgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgRm9yYmlkZGVuSG9zdDsg
fQorQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRl
KHVpbnQ4X3QgYnl0ZSwgY29uc3QgYm9vbCYgdXJsSXNTcGVjaWFsKQoreworICAgIGlmIChjaGFy
YWN0ZXJDbGFzc1RhYmxlW2J5dGVdICYgUXVlcnlQZXJjZW50KQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAoYnl0ZSA9PSAnXCcnICYmIHVybElzU3BlY2lhbCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFVSTFBhcnNlcjo6aXNJblVzZXJJ
bmZvRW5jb2RlU2V0KFVDaGFyIGMpCit7CisgICAgcmV0dXJuIFdURjo6aXNJblVzZXJJbmZvRW5j
b2RlU2V0KGMpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBVUkxQYXJz
ZXI6OlJlcG9ydFN5bnRheFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24+CitBTFdBWVNf
SU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphZHZhbmNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+JiBpdGVyYXRvciwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
IGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pCit7CisgICAgKytpdGVyYXRvcjsK
KyAgICB3aGlsZSAoVU5MSUtFTFkoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJPck5ld2xpbmUo
Kml0ZXJhdG9yKSkpIHsKKyAgICAgICAgaWYgKHJlcG9ydFN5bnRheFZpb2xhdGlvbiA9PSBSZXBv
cnRTeW50YXhWaW9sYXRpb246OlllcykKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVy
YXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICAgICAgKytpdGVyYXRvcjsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNl
cjo6dGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+IGl0ZXJhdG9yKQoreworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRp
b246Ok5vPihpdGVyYXRvcik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICByZXR1cm4gaXRlcmF0b3IuYXRFbmQoKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgYm9vbCBVUkxQ
YXJzZXI6OmlzV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+IGl0ZXJhdG9yKQoreworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8ICFpc0FTQ0lJQWxw
aGEoKml0ZXJhdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFj
dGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgIGlmIChp
dGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppdGVyYXRv
ciA9PSAnOicpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0
b3IgPT0gJ3wnKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitBTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKFVDaGFy
MzIgY29kZVBvaW50KQoreworICAgIEFTU0VSVChpc0FTQ0lJKGNvZGVQb2ludCkpOworICAgIGlm
IChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCisgICAgICAgIG1fYXNjaWlCdWZm
ZXIuYXBwZW5kKGNvZGVQb2ludCk7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6
OmFwcGVuZFRvQVNDSUlCdWZmZXIoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0
aCkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQorICAgICAg
ICBtX2FzY2lpQnVmZmVyLmFwcGVuZChjaGFyYWN0ZXJzLCBsZW5ndGgpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OmFwcGVuZFdpbmRvd3NE
cml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7
CisgICAgQVNTRVJUKGlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSk7CisgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcigqaXRlcmF0b3IpOworICAgIGFkdmFuY2UoaXRlcmF0b3IpOworICAgIEFT
U0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7CisgICAgQVNTRVJUKCppdGVyYXRvciA9PSAnOicgfHwg
Kml0ZXJhdG9yID09ICd8Jyk7CisgICAgaWYgKCppdGVyYXRvciA9PSAnfCcpCisgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwor
ICAgIGFkdmFuY2UoaXRlcmF0b3IpOworfQorCitib29sIFVSTFBhcnNlcjo6Y29weUJhc2VXaW5k
b3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJiBiYXNlKQoreworICAgIGlmIChiYXNlLnByb3RvY29s
SXMoImZpbGUiKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLm1faG9zdEVuZCArIGJh
c2UubV9wb3J0TGVuZ3RoIDwgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGlmIChi
YXNlLm1fc3RyaW5nLmlzOEJpdCgpKSB7CisgICAgICAgICAgICBjb25zdCBMQ2hhciogYmVnaW4g
PSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnM4KCk7CisgICAgICAgICAgICBDb2RlUG9pbnRJdGVy
YXRvcjxMQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGgg
KyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAgaWYgKGlz
V2luZG93c0RyaXZlTGV0dGVyKGMpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0Ry
aXZlTGV0dGVyKGMpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc3QgVUNoYXIqIGJlZ2luID0gYmFz
ZS5tX3N0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgICAgIENvZGVQb2ludEl0ZXJhdG9y
PFVDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDEs
IGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgICAgICBpZiAoaXNXaW5k
b3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVM
ZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OnNob3VsZENvcHlGaWxlVVJMKENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIGlmICghaXNXaW5k
b3dzRHJpdmVMZXR0ZXIoaXRlcmF0b3IpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
aXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2UoaXRl
cmF0b3IpOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuICFpc1NsYXNoUXVlc3Rpb25Pckhhc2goKml0ZXJh
dG9yKTsKK30KKworc3RhdGljIHZvaWQgcGVyY2VudEVuY29kZUJ5dGUodWludDhfdCBieXRlLCBW
ZWN0b3I8TENoYXI+JiBidWZmZXIpCit7CisgICAgYnVmZmVyLmFwcGVuZCgnJScpOworICAgIGJ1
ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0ZSkpOworICAgIGJ1ZmZl
ci5hcHBlbmQobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0ZSkpOworfQorCit2b2lkIFVS
TFBhcnNlcjo6cGVyY2VudEVuY29kZUJ5dGUodWludDhfdCBieXRlKQoreworICAgIEFTU0VSVCht
X2RpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignJScpOwor
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0ZSkp
OworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0
ZSkpOworfQorCitjb25zdCBjaGFyIHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNv
ZGVkWzEwXSA9ICIlRUYlQkYlQkQiOworY29uc3Qgc2l6ZV90IHJlcGxhY2VtZW50Q2hhcmFjdGVy
VVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoID0gc2l6ZW9mKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRG
OFBlcmNlbnRFbmNvZGVkKSAtIDE7CisKK3RlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hh
cjMyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJz
ZXI6OnV0ZjhQZXJjZW50RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOworICAgIFVD
aGFyMzIgY29kZVBvaW50ID0gKml0ZXJhdG9yOworICAgIGlmIChMSUtFTFkoaXNBU0NJSShjb2Rl
UG9pbnQpKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkoaXNJbkNvZGVTZXQoY29kZVBvaW50KSkp
IHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgICAgICAgICBw
ZXJjZW50RW5jb2RlQnl0ZShjb2RlUG9pbnQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoY29kZVBvaW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzSW5Db2RlU2V0KGNvZGVQb2ludCksICJpc0luQ29k
ZVNldCBzaG91bGQgYWx3YXlzIHJldHVybiB0cnVlIGZvciBub24tQVNDSUkgY2hhcmFjdGVycyIp
OworICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgCisgICAgaWYgKCFVX0lTX1VO
SUNPREVfQ0hBUihjb2RlUG9pbnQpKSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIocmVw
bGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQsIHJlcGxhY2VtZW50Q2hhcmFjdGVy
VVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKKyAgICBpbnQzMl90IG9mZnNldCA9
IDA7CisgICAgVThfQVBQRU5EX1VOU0FGRShidWZmZXIsIG9mZnNldCwgY29kZVBvaW50KTsKKyAg
ICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBvZmZzZXQ7ICsraSkKKyAgICAgICAgcGVyY2VudEVu
Y29kZUJ5dGUoYnVmZmVyW2ldKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OnV0ZjhRdWVyeUVuY29kZShjb25zdCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7CisgICAgQVNTRVJU
KCFpdGVyYXRvci5hdEVuZCgpKTsKKyAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVyYXRvcjsK
KyAgICBpZiAoTElLRUxZKGlzQVNDSUkoY29kZVBvaW50KSkpIHsKKyAgICAgICAgaWYgKFVOTElL
RUxZKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoY29kZVBvaW50LCBtX3VybElzU3BlY2lh
bCkpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOworICAgICAgICAg
ICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBvaW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvZGVQb2ludCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAKKyAgICBpZiAo
IVVfSVNfVU5JQ09ERV9DSEFSKGNvZGVQb2ludCkpIHsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCwgcmVwbGFjZW1lbnRD
aGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgdWludDhfdCBidWZmZXJbVThfTUFYX0xFTkdUSF07CisgICAgaW50MzJfdCBvZmZz
ZXQgPSAwOworICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQsIGNvZGVQb2ludCk7
CisgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgb2Zmc2V0OyArK2kpIHsKKyAgICAgICAgYXV0
byBieXRlID0gYnVmZmVyW2ldOworICAgICAgICBpZiAoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5
Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0
ZShieXRlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihi
eXRlKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lk
IFVSTFBhcnNlcjo6ZW5jb2RlTm9uVVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIHNvdXJj
ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nJiBlbmNvZGluZywgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgYXV0byBlbmNvZGVkID0gZW5jb2RpbmcuZW5j
b2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3KHNvdXJjZS5kYXRhKCksIHNvdXJjZS5zaXplKCkp
KTsKKyAgICBhdXRvKiBkYXRhID0gZW5jb2RlZC5kYXRhKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9
IGVuY29kZWQuc2l6ZSgpOworICAgIAorICAgIGlmICghbGVuZ3RoID09ICFpdGVyYXRvci5hdEVu
ZCgpKSB7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKKyAgICAgICAgdWlu
dDhfdCBieXRlID0gZGF0YVtpXTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGJ5dGUgIT0gKml0ZXJh
dG9yKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChVTkxJS0VMWShzaG91bGRQZXJjZW50
RW5jb2RlUXVlcnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkpIHsKKyAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGJ5dGUpOworICAgICAgICArK2l0ZXJhdG9yOwor
ICAgIH0KKyAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJPck5ld2xpbmUoKml0
ZXJhdG9yKSkKKyAgICAgICAgKytpdGVyYXRvcjsKKyAgICBBU1NFUlQoKGkgPT0gbGVuZ3RoKSA9
PSBpdGVyYXRvci5hdEVuZCgpKTsKKyAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAg
ICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgICAgIHVpbnQ4X3QgYnl0
ZSA9IGRhdGFbaV07CisgICAgICAgIGlmIChzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGJ5
dGUsIG1fdXJsSXNTcGVjaWFsKSkKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ5dGUp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGJ5dGUpOwor
ICAgIH0KK30KKworc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMUGFyc2VyOjpkZWZhdWx0UG9y
dEZvclByb3RvY29sKFN0cmluZ1ZpZXcgc2NoZW1lKQoreworICAgIHN0YXRpYyBjb25zdCB1aW50
MTZfdCBmdHBQb3J0ID0gMjE7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGdvcGhlclBvcnQg
PSA3MDsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgaHR0cFBvcnQgPSA4MDsKKyAgICBzdGF0
aWMgY29uc3QgdWludDE2X3QgaHR0cHNQb3J0ID0gNDQzOworICAgIHN0YXRpYyBjb25zdCB1aW50
MTZfdCB3c1BvcnQgPSA4MDsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qgd3NzUG9ydCA9IDQ0
MzsKKyAgICAKKyAgICBhdXRvIGxlbmd0aCA9IHNjaGVtZS5sZW5ndGgoKTsKKyAgICBpZiAoIWxl
bmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzd2l0Y2ggKHNjaGVtZVsw
XSkgeworICAgIGNhc2UgJ3cnOgorICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgeworICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gd3NQb3J0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgY2FzZSAzOgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycKKyAgICAgICAgICAg
ICAgICAmJiBzY2hlbWVbMl0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiB3c3NQb3J0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIGNhc2UgJ2gnOgorICAgICAg
ICBzd2l0Y2ggKGxlbmd0aCkgeworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICBpZiAoc2No
ZW1lWzFdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKKyAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnKQorICAgICAgICAgICAgICAgIHJldHVybiBo
dHRwUG9ydDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNhc2Ug
NToKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYg
c2NoZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcKKyAg
ICAgICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVy
biBodHRwc1BvcnQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAg
IGNhc2UgJ2cnOgorICAgICAgICBpZiAobGVuZ3RoID09IDYKKyAgICAgICAgICAgICYmIHNjaGVt
ZVsxXSA9PSAnbycKKyAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcKKyAgICAgICAgICAg
ICYmIHNjaGVtZVszXSA9PSAnaCcKKyAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAnZScKKyAg
ICAgICAgICAgICYmIHNjaGVtZVs1XSA9PSAncicpCisgICAgICAgICAgICByZXR1cm4gZ29waGVy
UG9ydDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBjYXNlICdmJzoKKyAgICAg
ICAgaWYgKGxlbmd0aCA9PSAzCisgICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0gJ3QnCisgICAg
ICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnKQorICAgICAgICAgICAgcmV0dXJuIGZ0cFBvcnQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK2VudW0gY2xhc3MgU2NoZW1lIHsKKyAgICBX
UywKKyAgICBXU1MsCisgICAgRmlsZSwKKyAgICBGVFAsCisgICAgR29waGVyLAorICAgIEhUVFAs
CisgICAgSFRUUFMsCisgICAgTm9uU3BlY2lhbAorfTsKKworQUxXQVlTX0lOTElORSBzdGF0aWMg
U2NoZW1lIHNjaGVtZShTdHJpbmdWaWV3IHNjaGVtZSkKK3sKKyAgICBhdXRvIGxlbmd0aCA9IHNj
aGVtZS5sZW5ndGgoKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIFNjaGVtZTo6
Tm9uU3BlY2lhbDsKKyAgICBzd2l0Y2ggKHNjaGVtZVswXSkgeworICAgIGNhc2UgJ2YnOgorICAg
ICAgICBzd2l0Y2ggKGxlbmd0aCkgeworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAo
c2NoZW1lWzFdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6RlRQOworICAgICAgICAgICAgcmV0dXJuIFNj
aGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgaWYgKHNjaGVt
ZVsxXSA9PSAnaScKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ2wnCisgICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdlJykKKyAgICAgICAgICAgICAgICByZXR1cm4gU2No
ZW1lOjpGaWxlOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAg
ICAgIH0KKyAgICBjYXNlICdnJzoKKyAgICAgICAgaWYgKGxlbmd0aCA9PSA2CisgICAgICAgICAg
ICAmJiBzY2hlbWVbMV0gPT0gJ28nCisgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnCisg
ICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCisgICAgICAgICAgICAmJiBzY2hlbWVbNF0g
PT0gJ2UnCisgICAgICAgICAgICAmJiBzY2hlbWVbNV0gPT0gJ3InKQorICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6R29waGVyOworICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwor
ICAgIGNhc2UgJ2gnOgorICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgeworICAgICAgICBjYXNlIDQ6
CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNj
aGVtZVsyXSA9PSAndCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnKQorICAg
ICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkhUVFA7CisgICAgICAgICAgICByZXR1cm4gU2No
ZW1lOjpOb25TcGVjaWFsOworICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICBpZiAoc2NoZW1l
WzFdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKKyAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzRd
ID09ICdzJykKKyAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpIVFRQUzsKKyAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICB9CisgICAgY2FzZSAndyc6
CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAg
IGlmIChzY2hlbWVbMV0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OldT
OworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgY2FzZSAz
OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycKKyAgICAgICAgICAgICAgICAmJiBz
Y2hlbWVbMl0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OldTUzsKKyAg
ICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICB9CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICB9Cit9CisKK3N0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKGNv
bnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGlmIChzY2hlbWUuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFpc0FTQ0lJQWxwaGEoc2NoZW1lWzBd
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGZvciAoc2l6ZV90IGkgPSAx
OyBpIDwgc2NoZW1lLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYW51
bWVyaWMoc2NoZW1lW2ldKSB8fCBzY2hlbWVbaV0gPT0gJysnIHx8IHNjaGVtZVtpXSA9PSAnLScg
fHwgc2NoZW1lW2ldID09ICcuJykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBzY2hlbWUuY29udmVydFRvQVND
SUlMb3dlcmNhc2UoKTsKK30KKworYm9vbCBVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZShjb25z
dCBTdHJpbmcmIHNjaGVtZUFyZykKK3sKKyAgICByZXR1cm4gc2NoZW1lKHNjaGVtZUFyZykgIT0g
U2NoZW1lOjpOb25TcGVjaWFsOworfQorCitlbnVtIGNsYXNzIFVSTFBhcnNlcjo6VVJMUGFydCB7
CisgICAgU2NoZW1lRW5kLAorICAgIFVzZXJTdGFydCwKKyAgICBVc2VyRW5kLAorICAgIFBhc3N3
b3JkRW5kLAorICAgIEhvc3RFbmQsCisgICAgUG9ydEVuZCwKKyAgICBQYXRoQWZ0ZXJMYXN0U2xh
c2gsCisgICAgUGF0aEVuZCwKKyAgICBRdWVyeUVuZCwKK307CisKK3NpemVfdCBVUkxQYXJzZXI6
OnVybExlbmd0aFVudGlsUGFydChjb25zdCBVUkwmIHVybCwgVVJMUGFydCBwYXJ0KQoreworICAg
IHN3aXRjaCAocGFydCkgeworICAgIGNhc2UgVVJMUGFydDo6UXVlcnlFbmQ6CisgICAgICAgIHJl
dHVybiB1cmwubV9xdWVyeUVuZDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhdGhFbmQ6CisgICAgICAg
IHJldHVybiB1cmwubV9wYXRoRW5kOworICAgIGNhc2UgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNs
YXNoOgorICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgIGNhc2Ug
VVJMUGFydDo6UG9ydEVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX2hvc3RFbmQgKyB1cmwubV9w
b3J0TGVuZ3RoOworICAgIGNhc2UgVVJMUGFydDo6SG9zdEVuZDoKKyAgICAgICAgcmV0dXJuIHVy
bC5tX2hvc3RFbmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKKyAgICAgICAgcmV0
dXJuIHVybC5tX3Bhc3N3b3JkRW5kOworICAgIGNhc2UgVVJMUGFydDo6VXNlckVuZDoKKyAgICAg
ICAgcmV0dXJuIHVybC5tX3VzZXJFbmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpVc2VyU3RhcnQ6Cisg
ICAgICAgIHJldHVybiB1cmwubV91c2VyU3RhcnQ7CisgICAgY2FzZSBVUkxQYXJ0OjpTY2hlbWVF
bmQ6CisgICAgICAgIHJldHVybiB1cmwubV9zY2hlbWVFbmQ7CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFVSTFBhcnNlcjo6Y29weUFT
Q0lJU3RyaW5nVW50aWwoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHNpemVfdCBsZW5ndGgpCit7Cisg
ICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDw9IHN0cmluZy5sZW5ndGgoKSk7CisgICAgaWYgKHN0
cmluZy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2FzY2lpQnVmZmVy
LmlzRW1wdHkoKSk7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcihzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IFVDaGFyIGMgPSBjaGFyYWN0ZXJzW2ldOworICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaXNBU0NJSShjKSk7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKGMpOworICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OmNvcHlVUkxQYXJ0c1VudGlsKGNvbnN0IFVSTCYgYmFz
ZSwgVVJMUGFydCBwYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
aXRlcmF0b3IsIGNvbnN0IFVSTFRleHRFbmNvZGluZyomIG5vblVURjhRdWVyeUVuY29kaW5nKQor
eworICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisKKyAgICBtX2FzY2lpQnVmZmVyLmNs
ZWFyKCk7CisgICAgY29weUFTQ0lJU3RyaW5nVW50aWwoYmFzZS5tX3N0cmluZywgdXJsTGVuZ3Ro
VW50aWxQYXJ0KGJhc2UsIHBhcnQpKTsKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAgICBjYXNlIFVS
TFBhcnQ6OlF1ZXJ5RW5kOgorICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gYmFzZS5tX3F1ZXJ5
RW5kOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhdGhFbmQ6Cisg
ICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGJhc2UubV9wYXRoRW5kOworICAgICAgICBGQUxMVEhS
T1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaDoKKyAgICAgICAgbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAg
ICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6CisgICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IGJhc2UubV9wb3J0TGVuZ3RoOworICAgICAgICBGQUxMVEhST1VH
SDsKKyAgICBjYXNlIFVSTFBhcnQ6Okhvc3RFbmQ6CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IGJhc2UubV9ob3N0RW5kOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6
OlBhc3N3b3JkRW5kOgorICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gYmFzZS5tX3Bhc3N3
b3JkRW5kOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlVzZXJFbmQ6
CisgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGJhc2UubV91c2VyRW5kOworICAgICAgICBGQUxM
VEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlVzZXJTdGFydDoKKyAgICAgICAgbV91cmwubV91
c2VyU3RhcnQgPSBiYXNlLm1fdXNlclN0YXJ0OworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBj
YXNlIFVSTFBhcnQ6OlNjaGVtZUVuZDoKKyAgICAgICAgbV91cmwubV9pc1ZhbGlkID0gYmFzZS5t
X2lzVmFsaWQ7CisgICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGJhc2Uu
bV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OworICAgICAgICBtX3VybC5tX3NjaGVtZUVuZCA9IGJh
c2UubV9zY2hlbWVFbmQ7CisgICAgfQorICAgIHN3aXRjaCAoc2NoZW1lKFN0cmluZ1ZpZXcobV9h
c2NpaUJ1ZmZlci5kYXRhKCksIG1fdXJsLm1fc2NoZW1lRW5kKSkpIHsKKyAgICBjYXNlIFNjaGVt
ZTo6V1M6CisgICAgY2FzZSBTY2hlbWU6OldTUzoKKyAgICAgICAgbm9uVVRGOFF1ZXJ5RW5jb2Rp
bmcgPSBudWxscHRyOworICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIFNjaGVtZTo6RmlsZToKKyAgICAgICAgbV91cmxJc0ZpbGUgPSB0cnVl
OworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFNjaGVtZTo6RlRQOgorICAgIGNhc2Ug
U2NoZW1lOjpHb3BoZXI6CisgICAgY2FzZSBTY2hlbWU6OkhUVFA6CisgICAgY2FzZSBTY2hlbWU6
OkhUVFBTOgorICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIFNjaGVtZTo6Tm9uU3BlY2lhbDoKKyAgICAgICAgbV91cmxJc1NwZWNpYWwgPSBm
YWxzZTsKKyAgICAgICAgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgY29u
c3QgY2hhciBkb3RBU0NJSUNvZGVbMl0gPSB7JzInLCAnZSd9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNTaW5nbGVE
b3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQoreworICAg
IGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmMgPT0gJy4n
KSB7CisgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9u
OjpObz4oYyk7CisgICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9uT3JI
YXNoKCpjKTsKKyAgICB9CisgICAgaWYgKCpjICE9ICclJykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4o
Yyk7CisgICAgaWYgKGMuYXRFbmQoKSB8fCAqYyAhPSBkb3RBU0NJSUNvZGVbMF0pCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZp
b2xhdGlvbjo6Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pIHsKKyAgICAg
ICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsK
KyAgICAgICAgcmV0dXJuIGMuYXRFbmQoKSB8fCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFyc2VyOjppc0RvdWJsZURvdFBhdGhTZWdt
ZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCit7CisgICAgaWYgKGMuYXRF
bmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqYyA9PSAnLicpIHsKKyAgICAg
ICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsK
KyAgICAgICAgcmV0dXJuIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAgfQorICAgIGlm
ICgqYyAhPSAnJScpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3Rl
clR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkg
fHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2
YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICBp
ZiAoYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHRvQVNDSUlMb3dl
cigqYykgPT0gZG90QVNDSUlDb2RlWzFdKSB7CisgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgICAgIHJldHVybiBpc1Npbmds
ZURvdFBhdGhTZWdtZW50KGMpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6Y29uc3VtZVNpbmds
ZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBjKQorewor
ICAgIEFTU0VSVChpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpKTsKKyAgICBpZiAoKmMgPT0gJy4n
KSB7CisgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgIGlmICghYy5hdEVuZCgpKSB7CisgICAg
ICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpCisgICAgICAgICAgICAgICAgYWR2
YW5jZShjKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlQoKmMgPT0g
Jz8nIHx8ICpjID09ICcjJyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBBU1NF
UlQoKmMgPT0gJyUnKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgQVNTRVJUKCpjID09
IGRvdEFTQ0lJQ29kZVswXSk7CisgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgIEFTU0VSVCh0
b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSk7CisgICAgICAgIGFkdmFuY2UoYyk7
CisgICAgICAgIGlmICghYy5hdEVuZCgpKSB7CisgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8
ICpjID09ICdcXCcpCisgICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBBU1NFUlQoKmMgPT0gJz8nIHx8ICpjID09ICcjJyk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lk
IFVSTFBhcnNlcjo6Y29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+JiBjKQoreworICAgIEFTU0VSVChpc0RvdWJsZURvdFBhdGhTZWdtZW50
KGMpKTsKKyAgICBpZiAoKmMgPT0gJy4nKQorICAgICAgICBhZHZhbmNlKGMpOworICAgIGVsc2Ug
eworICAgICAgICBBU1NFUlQoKmMgPT0gJyUnKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAg
ICAgQVNTRVJUKCpjID09IGRvdEFTQ0lJQ29kZVswXSk7CisgICAgICAgIGFkdmFuY2UoYyk7Cisg
ICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSk7CisgICAg
ICAgIGFkdmFuY2UoYyk7CisgICAgfQorICAgIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChj
KTsKK30KKworYm9vbCBVUkxQYXJzZXI6OnNob3VsZFBvcFBhdGgodW5zaWduZWQgbmV3UGF0aEFm
dGVyTGFzdFNsYXNoKQoreworICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7Cisg
ICAgaWYgKCFtX3VybElzRmlsZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBBU1NFUlQo
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPD0gbV9hc2NpaUJ1ZmZlci5zaXplKCkpOworICAg
IENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjb21wb25lbnRUb1BvcCgmbV9hc2NpaUJ1ZmZlcltu
ZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdLCAmbV9hc2NpaUJ1ZmZlclswXSArIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoKTsKKyAgICBpZiAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID09IG1fdXJsLm1f
aG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDEgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIo
Y29tcG9uZW50VG9Qb3ApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpwb3BQYXRoKCkKK3sKKyAgICBBU1NFUlQobV9kaWRTZWVT
eW50YXhWaW9sYXRpb24pOworICAgIGlmIChtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA+IG1f
dXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDEpIHsKKyAgICAgICAgYXV0byBu
ZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCAtIDE7Cisg
ICAgICAgIGlmIChtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0gPT0gJy8nKQor
ICAgICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07CisgICAgICAgIHdoaWxlIChuZXdQ
YXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGgg
JiYgbV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdICE9ICcvJykKKyAgICAgICAg
ICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaC0tOworICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xh
c2grKzsKKyAgICAgICAgaWYgKHNob3VsZFBvcFBhdGgobmV3UGF0aEFmdGVyTGFzdFNsYXNoKSkK
KyAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbmV3UGF0aEFmdGVyTGFz
dFNsYXNoOworICAgIH0KKyAgICBtX2FzY2lpQnVmZmVyLnJlc2l6ZShtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lk
IFVSTFBhcnNlcjo6c3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBpZiAobV9kaWRTZWVTeW50YXhWaW9sYXRpb24p
CisgICAgICAgIHJldHVybjsKKyAgICBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7Cisg
ICAgCisgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKKyAgICBzaXplX3QgY29k
ZVVuaXRzVG9Db3B5ID0gaXRlcmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBDaGFyYWN0ZXJUeXBlKj4obV9pbnB1dEJlZ2luKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
Y29kZVVuaXRzVG9Db3B5IDw9IG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOworICAgIG1fYXNjaWlC
dWZmZXIucmVzZXJ2ZUNhcGFjaXR5KG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY29kZVVuaXRzVG9Db3B5OyArK2kpIHsKKyAgICAgICAgQVNTRVJU
KGlzQVNDSUkobV9pbnB1dFN0cmluZ1tpXSkpOworICAgICAgICBtX2FzY2lpQnVmZmVyLnVuY2hl
Y2tlZEFwcGVuZChtX2lucHV0U3RyaW5nW2ldKTsKKyAgICB9Cit9CisKK3ZvaWQgVVJMUGFyc2Vy
OjpmYWlsdXJlKCkKK3sKKyAgICBtX3VybC5pbnZhbGlkYXRlKCk7CisgICAgbV91cmwubV9zdHJp
bmcgPSBtX2lucHV0U3RyaW5nOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PgorYm9vbCBVUkxQYXJzZXI6OmNoZWNrTG9jYWxob3N0Q29kZVBvaW50KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAg
aWYgKGl0ZXJhdG9yLmF0RW5kKCkgfHwgdG9BU0NJSUxvd2VyKCppdGVyYXRvcikgIT0gY29kZVBv
aW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBS
ZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6aXNB
dExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sK
KyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbCcpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRv
ciwgJ28nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RD
b2RlUG9pbnQoaXRlcmF0b3IsICdjJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYScpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2wnKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQo
aXRlcmF0b3IsICdoJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9j
YWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbycpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ3MnKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3Is
ICd0JykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXRlcmF0b3IuYXRFbmQo
KTsKK30KKworYm9vbCBVUkxQYXJzZXI6OmlzTG9jYWxob3N0KFN0cmluZ1ZpZXcgdmlldykKK3sK
KyAgICBpZiAodmlldy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGlzQXRMb2NhbGhvc3QoQ29k
ZVBvaW50SXRlcmF0b3I8TENoYXI+KHZpZXcuY2hhcmFjdGVyczgoKSwgdmlldy5jaGFyYWN0ZXJz
OCgpICsgdmlldy5sZW5ndGgoKSkpOworICAgIHJldHVybiBpc0F0TG9jYWxob3N0KENvZGVQb2lu
dEl0ZXJhdG9yPFVDaGFyPih2aWV3LmNoYXJhY3RlcnMxNigpLCB2aWV3LmNoYXJhY3RlcnMxNigp
ICsgdmlldy5sZW5ndGgoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXcgVVJMUGFy
c2VyOjpwYXJzZWREYXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpCit7CisgICAg
aWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkgeworICAgICAgICBBU1NFUlQo
c3RhcnQgKyBsZW5ndGggPD0gbV9hc2NpaUJ1ZmZlci5zaXplKCkpOworICAgICAgICByZXR1cm4g
U3RyaW5nVmlldyhtX2FzY2lpQnVmZmVyLmRhdGEoKSArIHN0YXJ0LCBsZW5ndGgpOworICAgIH0K
KyAgICBBU1NFUlQoc3RhcnQgKyBsZW5ndGggPD0gbV9pbnB1dFN0cmluZy5sZW5ndGgoKSk7Cisg
ICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9pbnB1dFN0cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBsZW5n
dGgpOworfQorCitBTFdBWVNfSU5MSU5FIFVDaGFyIFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXco
c2l6ZV90IHBvc2l0aW9uKQoreworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xh
dGlvbikpCisgICAgICAgIHJldHVybiBtX2FzY2lpQnVmZmVyW3Bvc2l0aW9uXTsKKyAgICByZXR1
cm4gbV9pbnB1dFN0cmluZ1twb3NpdGlvbl07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIHNpemVfdCBVUkxQYXJzZXI6OmN1cnJlbnRQb3NpdGlv
bihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7Cisg
ICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAgICAgcmV0dXJu
IG1fYXNjaWlCdWZmZXIuc2l6ZSgpOworICAgIAorICAgIHJldHVybiBpdGVyYXRvci5jb2RlVW5p
dHNTaW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IENoYXJhY3RlclR5cGUqPihtX2lucHV0QmVn
aW4pKTsKK30KKworVVJMUGFyc2VyOjpVUkxQYXJzZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwgY29u
c3QgVVJMJiBiYXNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIG5vblVURjhRdWVyeUVuY29kaW5n
KQorICAgIDogbV9pbnB1dFN0cmluZyhpbnB1dCkKK3sKKyAgICBpZiAoaW5wdXQuaXNOdWxsKCkp
IHsKKyAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmICFiYXNlLm1fY2Fubm90QmVBQmFzZVVS
TCkgeworICAgICAgICAgICAgbV91cmwgPSBiYXNlOworICAgICAgICAgICAgbV91cmwucmVtb3Zl
RnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChpbnB1dC5pczhCaXQoKSkgeworICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1
dC5jaGFyYWN0ZXJzOCgpOworICAgICAgICBwYXJzZShpbnB1dC5jaGFyYWN0ZXJzOCgpLCBpbnB1
dC5sZW5ndGgoKSwgYmFzZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1faW5wdXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnMxNigpOworICAgICAgICBwYXJz
ZShpbnB1dC5jaGFyYWN0ZXJzMTYoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVURjhRdWVy
eUVuY29kaW5nKTsKKyAgICB9CisKKyAgICBBU1NFUlQoIW1fdXJsLm1faXNWYWxpZAorICAgICAg
ICB8fCBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiA9PSAobV91cmwuc3RyaW5nKCkgIT0gaW5wdXQp
CisgICAgICAgIHx8IChpbnB1dC5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQzBDb250cm9sT3JT
cGFjZT4oKQorICAgICAgICAgICAgJiYgbV91cmwubV9zdHJpbmcgPT0gYmFzZS5tX3N0cmluZy5s
ZWZ0KGJhc2UubV9xdWVyeUVuZCkpKTsKKyAgICBBU1NFUlQoaW50ZXJuYWxWYWx1ZXNDb25zaXN0
ZW50KG1fdXJsKSk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGlmICghbV9kaWRTZWVTeW50
YXhWaW9sYXRpb24pIHsKKyAgICAgICAgLy8gRm9yY2UgYSBzeW50YXggdmlvbGF0aW9uIGF0IHRo
ZSBiZWdpbm5pbmcgdG8gbWFrZSBzdXJlIHdlIGdldCB0aGUgc2FtZSByZXN1bHQuCisgICAgICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygiICIsIGlucHV0KSwgYmFzZSwgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpOworICAgICAgICBVUkwgcGFyc2VkID0gcGFyc2VyLnJlc3VsdCgpOworICAg
ICAgICBpZiAocGFyc2VkLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIEFTU0VSVChhbGxWYWx1ZXNF
cXVhbChwYXJzZXIucmVzdWx0KCksIG1fdXJsKSk7CisgICAgfQorI2VuZGlmCit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3Qg
Q2hhcmFjdGVyVHlwZSogaW5wdXQsIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVVJMJiBi
YXNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIG5vblVURjhRdWVyeUVuY29kaW5nKQoreworICAg
IFVSTF9QQVJTRVJfTE9HKCJQYXJzaW5nIFVSTCA8JXM+IGJhc2UgPCVzPiIsIFN0cmluZyhpbnB1
dCwgbGVuZ3RoKS51dGY4KCkuZGF0YSgpLCBiYXNlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIG1fdXJsID0geyB9OworICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7CisK
KyAgICBWZWN0b3I8VUNoYXI+IHF1ZXJ5QnVmZmVyOworCisgICAgdW5zaWduZWQgZW5kSW5kZXgg
PSBsZW5ndGg7CisgICAgd2hpbGUgKFVOTElLRUxZKGVuZEluZGV4ICYmIGlzQzBDb250cm9sT3JT
cGFjZShpbnB1dFtlbmRJbmRleCAtIDFdKSkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGlucHV0LCBpbnB1dCkpOworICAgICAgICBl
bmRJbmRleC0tOworICAgIH0KKyAgICBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBj
KGlucHV0LCBpbnB1dCArIGVuZEluZGV4KTsKKyAgICBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiBhdXRob3JpdHlPckhvc3RCZWdpbjsKKyAgICBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiBxdWVyeUJlZ2luOworICAgIHdoaWxlIChVTkxJS0VMWSghYy5hdEVuZCgpICYm
IGlzQzBDb250cm9sT3JTcGFjZSgqYykpKSB7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgKytjOworICAgIH0KKyAgICBhdXRvIGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2Ug
PSBjOworCisgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBTY2hlbWVT
dGFydCwKKyAgICAgICAgU2NoZW1lLAorICAgICAgICBOb1NjaGVtZSwKKyAgICAgICAgU3BlY2lh
bFJlbGF0aXZlT3JBdXRob3JpdHksCisgICAgICAgIFBhdGhPckF1dGhvcml0eSwKKyAgICAgICAg
UmVsYXRpdmUsCisgICAgICAgIFJlbGF0aXZlU2xhc2gsCisgICAgICAgIFNwZWNpYWxBdXRob3Jp
dHlTbGFzaGVzLAorICAgICAgICBTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcywKKyAgICAg
ICAgQXV0aG9yaXR5T3JIb3N0LAorICAgICAgICBIb3N0LAorICAgICAgICBGaWxlLAorICAgICAg
ICBGaWxlU2xhc2gsCisgICAgICAgIEZpbGVIb3N0LAorICAgICAgICBQYXRoU3RhcnQsCisgICAg
ICAgIFBhdGgsCisgICAgICAgIENhbm5vdEJlQUJhc2VVUkxQYXRoLAorICAgICAgICBVVEY4UXVl
cnksCisgICAgICAgIE5vblVURjhRdWVyeSwKKyAgICAgICAgRnJhZ21lbnQsCisgICAgfTsKKwor
I2RlZmluZSBMT0dfU1RBVEUoeCkgVVJMX1BBUlNFUl9MT0coIlN0YXRlICVzLCBjb2RlIHBvaW50
ICVjLCBwYXJzZWQgZGF0YSA8JXM+IHNpemUgJXp1IiwgeCwgKmMsIHBhcnNlZERhdGFWaWV3KDAs
IGN1cnJlbnRQb3NpdGlvbihjKSkudXRmOCgpLmRhdGEoKSwgY3VycmVudFBvc2l0aW9uKGMpKQor
I2RlZmluZSBMT0dfRklOQUxfU1RBVEUoeCkgVVJMX1BBUlNFUl9MT0coIkZpbmFsIFN0YXRlOiAl
cyIsIHgpCisKKyAgICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpTY2hlbWVTdGFydDsKKyAgICB3aGls
ZSAoIWMuYXRFbmQoKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKmMp
KSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHN0YXRl
KSB7CisgICAgICAgIGNhc2UgU3RhdGU6OlNjaGVtZVN0YXJ0OgorICAgICAgICAgICAgTE9HX1NU
QVRFKCJTY2hlbWVTdGFydCIpOworICAgICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYSgqYykpIHsK
KyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKCpjKSkpCisgICAgICAg
ICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqYykpOworICAgICAgICAgICAgICAgIGFkdmFuY2Uo
Yyk7CisgICAgICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAg
ICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6Ok5vU2NoZW1lOworICAgICAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xB
bmRTcGFjZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNjaGVtZTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlNjaGVtZToKKyAgICAgICAgICAgIExPR19TVEFU
RSgiU2NoZW1lIik7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFNjaGVtZUNoYXJhY3RlcigqYykp
IHsKKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKCpjKSkpCisgICAg
ICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqYykpOworICAgICAgICAgICAgfSBlbHNlIGlm
ICgqYyA9PSAnOicpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBzY2hlbWVFbmQgPSBjdXJy
ZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgaWYgKHNjaGVtZUVuZCA+IFVSTDo6bWF4
U2NoZW1lTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBt
X3VybC5tX3NjaGVtZUVuZCA9IHNjaGVtZUVuZDsKKyAgICAgICAgICAgICAgICBTdHJpbmdWaWV3
IHVybFNjaGVtZSA9IHBhcnNlZERhdGFWaWV3KDAsIG1fdXJsLm1fc2NoZW1lRW5kKTsKKyAgICAg
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAgICAgICAgc3dp
dGNoIChzY2hlbWUodXJsU2NoZW1lKSkgeworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpG
aWxlOgorICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIG1fdXJsSXNGaWxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6RmlsZTsKKyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6V1M6CisgICAgICAg
ICAgICAgICAgY2FzZSBTY2hlbWU6OldTUzoKKyAgICAgICAgICAgICAgICAgICAgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lh
bCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLnByb3RvY29sSXModXJsU2No
ZW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxSZWxh
dGl2ZU9yQXV0aG9yaXR5OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczsKKyAgICAg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIFNjaGVtZTo6SFRUUDoKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6
SFRUUFM6CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWls
eSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICAgICAg
ICAgIGNhc2UgU2NoZW1lOjpGVFA6CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkdvcGhl
cjoKKyAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBpZiAoYmFzZS5wcm90b2NvbElzKHVybFNjaGVtZSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eTsKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM7CisgICAgICAgICAgICAgICAgICAgICsrYzsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6
Ok5vblNwZWNpYWw6CisgICAgICAgICAgICAgICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0g
bnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBtYXliZVNsYXNoID0gYzsKKyAgICAg
ICAgICAgICAgICAgICAgYWR2YW5jZShtYXliZVNsYXNoKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFtYXliZVNsYXNoLmF0RW5kKCkgJiYgKm1heWJlU2xhc2ggPT0gJy8nKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjID0gbWF5YmVTbGFzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OlBhdGhPckF1dGhvcml0eTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VCgqYyA9PSAnLycpOworICAgICAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK2M7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1fY2Fubm90QmVBQmFzZVVSTCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpO
b1NjaGVtZTsKKyAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xBbmRTcGFjZTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkdmFu
Y2UoYyk7CisgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgbV9h
c2NpaUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vU2No
ZW1lOworICAgICAgICAgICAgICAgIGMgPSBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6Ok5vU2No
ZW1lOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJOb1NjaGVtZSIpOworICAgICAgICAgICAgaWYg
KCFiYXNlLmlzVmFsaWQoKSB8fCAoYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwgJiYgKmMgIT0gJyMn
KSkgeworICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwg
JiYgKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwg
VVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcjJyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFiYXNlLnByb3RvY29sSXMoImZp
bGUiKSkgeworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29weVVSTFBhcnRz
VW50aWwoYmFzZSwgVVJMUGFydDo6U2NoZW1lRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7
CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpGaWxlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6
OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVj
aWFsUmVsYXRpdmVPckF1dGhvcml0eSIpOworICAgICAgICAgICAgaWYgKCpjID09ICcvJykgewor
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAg
ICBhZHZhbmNlKGMpOworICAgICAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsKKyAgICAgICAg
ICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZVNsYXNoOworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgorICAgICAgICAgICAgTE9H
X1NUQVRFKCJQYXRoT3JBdXRob3JpdHkiKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsK
KyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OworICAgICAgICAgICAgICAgIGFkdmFu
Y2UoYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRp
b24oYyk7CisgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkRGF0YVZpZXcoY3Vy
cmVudFBvc2l0aW9uKGMpIC0gMSkgPT0gJy8nKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Vz
ZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAgICAgICAgbV91cmwu
bV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9w
YXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
UGF0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0
YXRlOjpSZWxhdGl2ZToKKyAgICAgICAgICAgIExPR19TVEFURSgiUmVsYXRpdmUiKTsKKyAgICAg
ICAgICAgIHN3aXRjaCAoKmMpIHsKKyAgICAgICAgICAgIGNhc2UgJy8nOgorICAgICAgICAgICAg
Y2FzZSAnXFwnOgorICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlU2xhc2g7
CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAnPyc6CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJM
UGFydDo6UGF0aEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAg
ICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7CisgICAgICAgICAgICAgICAgICAg
IHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25V
VEY4UXVlcnk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgJyMnOgorICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVS
TFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OkZyYWdtZW50OworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50
aWwoYmFzZSwgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4UXVlcnlFbmNv
ZGluZyk7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbihjKSAmJiBwYXJzZWRE
YXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSAhPSAnLycpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJSZWxhdGl2
ZVNsYXNoIik7CisgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpIHsKKyAg
ICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFz
ZSwgVVJMUGFydDo6U2NoZW1lRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOi8vIiwgMyk7CisgICAgICAgICAgICAgICAg
aWYgKG1fdXJsSXNTcGVjaWFsKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpT
cGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7
CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRz
VW50aWwoYmFzZSwgVVJMUGFydDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwor
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3Bv
cnRMZW5ndGggKyAxOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lh
bEF1dGhvcml0eVNsYXNoZXM6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRob3Jp
dHlTbGFzaGVzIik7CisgICAgICAgICAgICBpZiAoTElLRUxZKCpjID09ICcvJyB8fCAqYyA9PSAn
XFwnKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnXFwnKSkKKyAgICAg
ICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAg
ICAgICAgICAgIGlmIChMSUtFTFkoIWMuYXRFbmQoKSAmJiAoKmMgPT0gJy8nIHx8ICpjID09ICdc
XCcpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykpCisg
ICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAg
ICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoIi8vIiwgMik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpT
cGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczoKKyAgICAgICAgICAg
IExPR19TVEFURSgiU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMiKTsKKyAgICAgICAgICAg
IGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwor
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKKyAgICAgICAg
ICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OgorICAgICAg
ICAgICAgZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiQXV0aG9yaXR5T3JIb3N0Iik7
CisgICAgICAgICAgICAgICAgaWYgKCpjID09ICdAJykgeworICAgICAgICAgICAgICAgICAgICBh
dXRvIGxhc3RBdCA9IGM7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZmluZExhc3RBdCA9IGM7
CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICghZmluZExhc3RBdC5hdEVuZCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBVUkxfUEFSU0VSX0xPRygiRmluZGluZyBsYXN0IEA6ICVjIiwg
KmZpbmRMYXN0QXQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmaW5kTGFzdEF0ID09
ICdAJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QXQgPSBmaW5kTGFzdEF0Owor
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1NsYXNoID0gKmZpbmRMYXN0QXQgPT0gJy8n
IHx8IChtX3VybElzU3BlY2lhbCAmJiAqZmluZExhc3RBdCA9PSAnXFwnKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpc1NsYXNoIHx8ICpmaW5kTGFzdEF0ID09ICc/JyB8fCAqZmluZExh
c3RBdCA9PSAnIycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICArK2ZpbmRMYXN0QXQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgcGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGxhc3RBdCkpOworICAgICAgICAgICAgICAg
ICAgICBjID0gbGFzdEF0OworICAgICAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAg
ICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6Okhvc3Q7CisgICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1Bl
cmNlbnRPck5vbkFTQ0lJID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBib29sIGlzU2xhc2ggPSAqYyA9PSAnLycg
fHwgKG1fdXJsSXNTcGVjaWFsICYmICpjID09ICdcXCcpOworICAgICAgICAgICAgICAgIGlmIChp
c1NsYXNoIHx8ICpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBpdGVyYXRvciA9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0
eU9ySG9zdEJlZ2luLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5k
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZSgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlckVuZDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNl
ckVuZDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihhdXRob3JpdHlPckhvc3RCZWdp
bik7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwu
bV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0
KGl0ZXJhdG9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlzU2xhc2gpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzUGVyY2VudE9yTm9uQVNDSUkoKmMpKQor
ICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6SG9zdDoKKyAgICAgICAgICAg
IGRvIHsKKyAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkhvc3QiKTsKKyAgICAgICAgICAgICAg
ICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJz8nIHx8ICpjID09
ICcjJykgeworICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRp
b24oYyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJKCpjKSkKKyAgICAg
ICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVlOworICAgICAg
ICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZpbGU6CisgICAgICAgICAgICBMT0df
U1RBVEUoIkZpbGUiKTsKKyAgICAgICAgICAgIHN3aXRjaCAoKmMpIHsKKyAgICAgICAgICAgIGNh
c2UgJ1xcJzoKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAg
ICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgICAgICBjYXNlICcvJzoKKyAgICAgICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6RmlsZVNsYXNoOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgJz8nOgorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjKTsKKyAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2Nv
bElzKCJmaWxlIikpIHsKKyAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFz
ZSwgVVJMUGFydDo6UGF0aEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7CisgICAgICAgICAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCIvLy8/IiwgNCk7CisgICAgICAgICAgICAgICAgICAgICsrYzsKKyAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykg
LSAyOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5t
X3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcXVl
cnlCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhR
dWVyeTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAnIyc6CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAg
ICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgewor
ICAgICAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVy
eUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcjJyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIyIsIDQpOworICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDI7CisgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0
ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgKytjOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgp
ICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpICYmIHNob3VsZENvcHlGaWxlVVJMKGMpKQorICAg
ICAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoQWZ0
ZXJMYXN0U2xhc2gsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIiwgMyk7
CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9u
KGMpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9
IDA7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91
cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJp
dmVMZXR0ZXIoYykpCisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVM
ZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OlBhdGg7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZVNsYXNoOgorICAgICAgICAgICAg
TE9HX1NUQVRFKCJGaWxlU2xhc2giKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoKmMgPT0gJy8n
IHx8ICpjID09ICdcXCcpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICdc
XCcpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIGFkdmFuY2Uo
Yyk7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24o
Yyk7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OworICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owor
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAg
YXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OkZpbGVIb3N0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cigiLy8iLCAyKTsKKyAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0
aW9uKGMpIC0gMTsKKyAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OworICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OworICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAg
ICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgaWYgKGlzV2luZG93
c0RyaXZlTGV0dGVyKGMpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0
dGVyKGMpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91
cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAgICAgfSBlbHNlIGlmIChjb3B5QmFzZVdpbmRv
d3NEcml2ZUxldHRlcihiYXNlKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1f
dXJsLm1fdXNlclN0YXJ0ICsgNDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFN0YXRlOjpGaWxlSG9zdDoKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAg
ICBMT0dfU1RBVEUoIkZpbGVIb3N0Iik7CisgICAgICAgICAgICAgICAgaWYgKGlzU2xhc2hRdWVz
dGlvbk9ySGFzaCgqYykpIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCB3aW5kb3dzUXVpcmsg
PSB0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYg
aXNXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAg
ICAgICAgICBpZiAod2luZG93c1F1aXJrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93c1F1aXJrIHx8IGF1dGhv
cml0eU9ySG9zdEJlZ2luID09IGMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh3
aW5kb3dzUXVpcmsgfHwgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgPT0g
Jy8nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnPycpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8/IiwgMik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4
UXVlcnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICcjJykpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLyMiLCAyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBv
cnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4s
IGMpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bh
c3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLnNocmluayhtX3VybC5tX3Bhc3N3b3JkRW5kKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGhTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5v
bkFTQ0lJKCpjKSkKKyAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVND
SUkgPSB0cnVlOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFj
LmF0RW5kKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlBhdGhT
dGFydDoKKyAgICAgICAgICAgIExPR19TVEFURSgiUGF0aFN0YXJ0Iik7CisgICAgICAgICAgICBp
ZiAoKmMgIT0gJy8nICYmICpjICE9ICdcXCcpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJy
ZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlBhdGg6CisgICAgICAgICAgICBMT0df
U1RBVEUoIlBhdGgiKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKG1fdXJsSXNTcGVj
aWFsICYmICpjID09ICdcXCcpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fdXJs
SXNTcGVjaWFsICYmICpjID09ICdcXCcpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAg
ICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShjdXJyZW50UG9zaXRpb24oYykgJiYg
cGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgPT0gJy8nKSkgeworICAgICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWShpc0RvdWJsZURvdFBhdGhTZWdtZW50KGMpKSkgeworICAg
ICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChjKTsKKyAgICAgICAgICAgICAgICAgICAgcG9w
UGF0aCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYykpKSB7
CisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KGMpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoKmMgPT0gJz8nKSB7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVu
dFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsK
KyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVu
Y29kaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqYyA9
PSAnIycpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRp
b24oYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVu
ZDsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2Rl
PGlzSW5EZWZhdWx0RW5jb2RlU2V0PihjKTsKKyAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDoKKyAgICAg
ICAgICAgIExPR19TVEFURSgiQ2Fubm90QmVBQmFzZVVSTFBhdGgiKTsKKyAgICAgICAgICAgIGlm
ICgqYyA9PSAnPycpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50
UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOwor
ICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7CisgICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAg
ICAgICAgICAgfSBlbHNlIGlmICgqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9x
dWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpGcmFnbWVudDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJy8nKSB7CisgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICsrYzsK
KyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3Np
dGlvbihjKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdXRmOFBlcmNl
bnRFbmNvZGU8aXNJblNpbXBsZUVuY29kZVNldD4oYyk7CisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlVU
RjhRdWVyeToKKyAgICAgICAgICAgIExPR19TVEFURSgiVVRGOFF1ZXJ5Iik7CisgICAgICAgICAg
ICBBU1NFUlQocXVlcnlCZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigp
KTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5t
X3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQVNTRVJUKCFub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICB1
dGY4UXVlcnlFbmNvZGUoYyk7CisgICAgICAgICAgICArK2M7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgorICAgICAgICAgICAgZG8geworICAg
ICAgICAgICAgICAgIExPR19TVEFURSgiTm9uVVRGOFF1ZXJ5Iik7CisgICAgICAgICAgICAgICAg
QVNTRVJUKHF1ZXJ5QmVnaW4gIT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7
CisgICAgICAgICAgICAgICAgaWYgKCpjID09ICcjJykgeworICAgICAgICAgICAgICAgICAgICBl
bmNvZGVOb25VVEY4UXVlcnkocXVlcnlCdWZmZXIsICpub25VVEY4UXVlcnlFbmNvZGluZywgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4ocXVlcnlCZWdpbiwgYykpOworICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFwcGVuZENvZGVQ
b2ludChxdWVyeUJ1ZmZlciwgKmMpOworICAgICAgICAgICAgICAgIGFkdmFuY2UoYywgcXVlcnlC
ZWdpbik7CisgICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpGcmFnbWVudDoKKyAgICAgICAgICAgIFVSTF9QQVJT
RVJfTE9HKCJTdGF0ZSBGcmFnbWVudCIpOworICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8
aXNJblNpbXBsZUVuY29kZVNldD4oYyk7CisgICAgICAgICAgICArK2M7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNl
IFN0YXRlOjpTY2hlbWVTdGFydDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTY2hlbWVTdGFy
dCIpOworICAgICAgICBpZiAoIWN1cnJlbnRQb3NpdGlvbihjKSAmJiBiYXNlLmlzVmFsaWQoKSAm
JiAhYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwpIHsKKyAgICAgICAgICAgIG1fdXJsID0gYmFzZTsK
KyAgICAgICAgICAgIG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgU3RhdGU6OlNjaGVtZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTY2hl
bWUiKTsKKyAgICAgICAgZmFpbHVyZSgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0
ZTo6Tm9TY2hlbWU6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiTm9TY2hlbWUiKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0YXRlOjpTcGVjaWFs
UmVsYXRpdmVPckF1dGhvcml0eToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTcGVjaWFsUmVs
YXRpdmVPckF1dGhvcml0eSIpOworICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQ
YXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFN0YXRlOjpQYXRoT3JBdXRob3JpdHk6CisgICAgICAgIExPR19GSU5BTF9TVEFU
RSgiUGF0aE9yQXV0aG9yaXR5Iik7CisgICAgICAgIEFTU0VSVChtX3VybC5tX3VzZXJTdGFydCk7
CisgICAgICAgIEFTU0VSVChtX3VybC5tX3VzZXJTdGFydCA9PSBjdXJyZW50UG9zaXRpb24oYykp
OworICAgICAgICBBU1NFUlQocGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkg
PT0gJy8nKTsKKyAgICAgICAgbV91cmwubV91c2VyU3RhcnQtLTsKKyAgICAgICAgbV91cmwubV91
c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICBt
X3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJS
ZWxhdGl2ZSIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNh
c2UgU3RhdGU6OlJlbGF0aXZlU2xhc2g6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiUmVsYXRp
dmVTbGFzaCIpOworICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQb3J0
RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX2hv
c3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOworICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0
YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJT
cGVjaWFsQXV0aG9yaXR5U2xhc2hlcyIpOworICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1
cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
KyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVT
bGFzaGVzOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlJZ25vcmVT
bGFzaGVzIik7CisgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
U3RhdGU6OkF1dGhvcml0eU9ySG9zdDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJBdXRob3Jp
dHlPckhvc3QiKTsKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGF1
dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlckVuZDsKKyAgICAgICAgaWYgKGF1dGhvcml0eU9ySG9zdEJlZ2luLmF0RW5kKCkpIHsK
KyAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAg
ICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAg
ICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgIH0gZWxzZSBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoYXV0aG9y
aXR5T3JIb3N0QmVnaW4pKSB7CisgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwp
IHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVu
ZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RF
bmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6Okhv
c3Q6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiSG9zdCIpOworICAgICAgICBpZiAoIXBhcnNl
SG9zdEFuZFBvcnQoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7CisgICAgICAgICAgICBmYWlsdXJl
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fdXJsSXNT
cGVjaWFsKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1f
cG9ydExlbmd0aDsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5t
X3BhdGhFbmQ7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OkZpbGU6CisgICAgICAgIExPR19GSU5BTF9T
VEFURSgiRmlsZSIpOworICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2Nv
bElzKCJmaWxlIikpIHsKKyAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBh
cnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoIi8vLyIsIDMpOworICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1
cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0
ZTo6RmlsZVNsYXNoOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGVTbGFzaCIpOworICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3Vy
cmVudFBvc2l0aW9uKGMpICsgMTsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8iLCAy
KTsKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAg
IG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwu
bV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0
aCA9IDA7CisgICAgICAgIGlmIChjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihiYXNlKSkgewor
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3Vz
ZXJTdGFydCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OkZpbGVIb3N0OgorICAg
ICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGVIb3N0Iik7CisgICAgICAgIGlmICh0YWtlc1R3b0Fk
dmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5
T3JIb3N0QmVnaW4sIGMpKQorICAgICAgICAgICAgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0
aG9yaXR5T3JIb3N0QmVnaW4pKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYXV0aG9y
aXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwor
ICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2lu
KTsKKyAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0
aW9uKGMpOworICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgaWYgKGF1dGhvcml0eU9ySG9zdEJlZ2luID09IGMpIHsKKyAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAg
ICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAg
ICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAg
ICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAg
bV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKKyAgICAgICAgICAgIGZh
aWx1cmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjKTsKKyAgICAgICAgaWYgKGlzTG9jYWxob3N0KHBhcnNlZERhdGFWaWV3KG1f
dXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJlbnRQb3NpdGlvbihjKSAtIG1fdXJsLm1fcGFzc3dvcmRF
bmQpKSkgeworICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91cmwubV9wYXNzd29y
ZEVuZCk7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7
CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICB9CisgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOworICAgICAg
ICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFN0YXRlOjpQYXRoU3RhcnQ6CisgICAgICAgIExPR19GSU5BTF9TVEFU
RSgiUGF0aFN0YXJ0Iik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgY2FzZSBTdGF0ZTo6UGF0aDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoIik7Cisg
ICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgi
Q2Fubm90QmVBQmFzZVVSTFBhdGgiKTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVu
dFBvc2l0aW9uKGMpOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5k
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpVVEY4UXVlcnk6CisgICAgICAgIExP
R19GSU5BTF9TVEFURSgiVVRGOFF1ZXJ5Iik7CisgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luID09
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOworICAgICAgICBtX3VybC5tX3F1
ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0
YXRlOjpOb25VVEY4UXVlcnk6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiTm9uVVRGOFF1ZXJ5
Iik7CisgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KCkpOworICAgICAgICBlbmNvZGVOb25VVEY4UXVlcnkocXVlcnlCdWZmZXIsICpu
b25VVEY4UXVlcnlFbmNvZGluZywgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4ocXVl
cnlCZWdpbiwgYykpOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9u
KGMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpGcmFnbWVudDoKKyAgICAgICAg
TE9HX0ZJTkFMX1NUQVRFKCJGcmFnbWVudCIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBpZiAoTElLRUxZKCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpIHsKKyAgICAgICAgbV91cmwu
bV9zdHJpbmcgPSBtX2lucHV0U3RyaW5nOworICAgICAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5p
c0VtcHR5KCkpOworICAgIH0gZWxzZQorICAgICAgICBtX3VybC5tX3N0cmluZyA9IFN0cmluZzo6
YWRvcHQoV1RGTW92ZShtX2FzY2lpQnVmZmVyKSk7CisgICAgbV91cmwubV9pc1ZhbGlkID0gdHJ1
ZTsKKyAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2VkIFVSTCA8JXM+IiwgbV91cmwubV9zdHJpbmcu
dXRmOCgpLmRhdGEoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2
b2lkIFVSTFBhcnNlcjo6cGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKFVOTElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7
CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9y
ICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkgeworICAgICAgICBpZiAo
Kml0ZXJhdG9yID09ICc6JykgeworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVu
dFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGF1dG8gaXRlcmF0b3JBdENvbG9uID0g
aXRlcmF0b3I7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYm9vbCB0YWJP
ck5ld2xpbmVBZnRlckNvbG9uID0gZmFsc2U7CisgICAgICAgICAgICB3aGlsZSAoVU5MSUtFTFko
IWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAg
ICAgICAgICAgICB0YWJPck5ld2xpbmVBZnRlckNvbG9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICArK2l0ZXJhdG9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGl0
ZXJhdG9yLmF0RW5kKCkpKSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yQXRDb2xvbik7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlckVuZDsKKyAgICAgICAgICAgICAgICBpZiAobV91cmwubV91c2VyRW5kID4gbV91cmwu
bV91c2VyU3RhcnQpCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJ0An
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAodGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbikKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oaXRlcmF0b3JBdENvbG9uKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzon
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHV0ZjhQZXJjZW50RW5j
b2RlPFdURjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0PihpdGVyYXRvcik7CisgICAgfQorICAgIGZv
ciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgYWR2YW5jZShpdGVyYXRvcikpCisgICAgICAgIHV0ZjhQ
ZXJjZW50RW5jb2RlPFdURjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0PihpdGVyYXRvcik7CisgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgaWYg
KCFtX3VybC5tX3VzZXJFbmQpCisgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fcGFz
c3dvcmRFbmQ7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignQCcpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OmFwcGVuZE51bWJl
clRvQVNDSUlCdWZmZXIoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpCit7CisgICAgTENoYXIg
YnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMgKyAxXTsKKyAgICBMQ2hhciogZW5k
ID0gc3RkOjplbmQoYnVmKTsKKyAgICBMQ2hhciogcCA9IGVuZDsKKyAgICBkbyB7CisgICAgICAg
ICotLXAgPSAobnVtYmVyICUgMTApICsgJzAnOworICAgICAgICBudW1iZXIgLz0gMTA7CisgICAg
fSB3aGlsZSAobnVtYmVyKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHAsIGVuZCAtIHApOwor
fQorCit2b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyBhZGRyZXNzKQor
eworICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAyNCk7
CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOworICAgIGFwcGVuZE51bWJlclRvQVNDSUlC
dWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAxNik7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LicpOworICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiA4
KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJ
SUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzKTsKK30KKyAgICAKK3N0YXRpYyBzaXplX3QgemVyb1Nl
cXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzLCBzaXpl
X3QgYmVnaW4pCit7CisgICAgc2l6ZV90IGVuZCA9IGJlZ2luOworICAgIGZvciAoOyBlbmQgPCA4
OyBlbmQrKykgeworICAgICAgICBpZiAoYWRkcmVzc1tlbmRdKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiBlbmQgLSBiZWdpbjsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShjb25zdCBzdGQ6OmFycmF5PHVpbnQx
Nl90LCA4PiYgYWRkcmVzcykKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbG9uZ2VzdDsK
KyAgICBzaXplX3QgbG9uZ2VzdExlbmd0aCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCA4OyBpKyspIHsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHplcm9TZXF1ZW5jZUxlbmd0aChh
ZGRyZXNzLCBpKTsKKyAgICAgICAgaWYgKGxlbmd0aCkgeworICAgICAgICAgICAgaWYgKGxlbmd0
aCA+IDEgJiYgKCFsb25nZXN0IHx8IGxvbmdlc3RMZW5ndGggPCBsZW5ndGgpKSB7CisgICAgICAg
ICAgICAgICAgbG9uZ2VzdCA9IGk7CisgICAgICAgICAgICAgICAgbG9uZ2VzdExlbmd0aCA9IGxl
bmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgKz0gbGVuZ3RoOworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiBsb25nZXN0OworfQorCit2b2lkIFVSTFBhcnNlcjo6c2VyaWFs
aXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKQoreworICAgIGJvb2wgcHJpbnRlZCA9IGZhbHNl
OworICAgIGlmIChhdXRvIG5pYmJsZTAgPSBwaWVjZSA+PiAxMikgeworICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTAp
KTsKKyAgICAgICAgcHJpbnRlZCA9IHRydWU7CisgICAgfQorICAgIGF1dG8gbmliYmxlMSA9IHBp
ZWNlID4+IDggJiAweEY7CisgICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMSkgeworICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5p
YmJsZTEpKTsKKyAgICAgICAgcHJpbnRlZCA9IHRydWU7CisgICAgfQorICAgIGF1dG8gbmliYmxl
MiA9IHBpZWNlID4+IDQgJiAweEY7CisgICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMikKKyAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdp
dChuaWJibGUyKSk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJj
YXNlQVNDSUlIZXhEaWdpdChwaWVjZSAmIDB4RikpOworfQorCit2b2lkIFVSTFBhcnNlcjo6c2Vy
aWFsaXplSVB2NihVUkxQYXJzZXI6OklQdjZBZGRyZXNzIGFkZHJlc3MpCit7CisgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignWycpOworICAgIGF1dG8gY29tcHJlc3NQb2ludGVyID0gZmluZExvbmdl
c3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7CisgICAgZm9yIChzaXplX3QgcGllY2UgPSAwOyBwaWVj
ZSA8IDg7IHBpZWNlKyspIHsKKyAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBjb21wcmVz
c1BvaW50ZXIudmFsdWUoKSA9PSBwaWVjZSkgeworICAgICAgICAgICAgQVNTRVJUKCFhZGRyZXNz
W3BpZWNlXSk7CisgICAgICAgICAgICBpZiAocGllY2UpCisgICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignOicpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoIjo6IiwgMik7CisgICAgICAgICAgICB3aGlsZSAocGllY2UgPCA4
ICYmICFhZGRyZXNzW3BpZWNlXSkKKyAgICAgICAgICAgICAgICBwaWVjZSsrOworICAgICAgICAg
ICAgaWYgKHBpZWNlID09IDgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgc2VyaWFsaXplSVB2NlBpZWNlKGFkZHJlc3NbcGllY2VdKTsKKyAgICAgICAgaWYgKHBp
ZWNlIDwgNykKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICB9Cisg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignXScpOworfQorCitlbnVtIGNsYXNzIFVSTFBhcnNlcjo6
SVB2NFBpZWNlUGFyc2luZ0Vycm9yIHsKKyAgICBGYWlsdXJlLAorICAgIE92ZXJmbG93LAorfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0V4cGVjdGVkPHVpbnQzMl90LCBV
UkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVj
ZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGJvb2wmIGRpZFNl
ZVN5bnRheFZpb2xhdGlvbikKK3sKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7Cisg
ICAgICAgIFVua25vd25CYXNlLAorICAgICAgICBEZWNpbWFsLAorICAgICAgICBPY3RhbE9ySGV4
LAorICAgICAgICBPY3RhbCwKKyAgICAgICAgSGV4LAorICAgIH07CisgICAgU3RhdGUgc3RhdGUg
PSBTdGF0ZTo6VW5rbm93bkJhc2U7CisgICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZs
b3c+IHZhbHVlID0gMDsKKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09
ICcuJykKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJv
cjo6RmFpbHVyZSk7CisgICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgIGlm
IChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBkaWRTZWVTeW50YXhW
aW9sYXRpb24gPSB0cnVlOworICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJy4nKSB7CisgICAg
ICAgICAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7CisgICAgICAgICAgICByZXR1
cm4gdmFsdWUudW5zYWZlR2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChzdGF0ZSkg
eworICAgICAgICBjYXNlIFN0YXRlOjpVbmtub3duQmFzZToKKyAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSgqaXRlcmF0b3IgPT0gJzAnKSkgeworICAgICAgICAgICAgICAgICsraXRlcmF0b3I7Cisg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6T2N0YWxPckhleDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkRlY2lt
YWw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6T2N0YWxPckhleDoK
KyAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7CisgICAgICAgICAgICBp
ZiAoKml0ZXJhdG9yID09ICd4JyB8fCAqaXRlcmF0b3IgPT0gJ1gnKSB7CisgICAgICAgICAgICAg
ICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIZXg7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpPY3RhbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpEZWNp
bWFsOgorICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWls
dXJlKTsKKyAgICAgICAgICAgIHZhbHVlICo9IDEwOworICAgICAgICAgICAgdmFsdWUgKz0gKml0
ZXJhdG9yIC0gJzAnOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93
ZWQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBh
cnNpbmdFcnJvcjo6T3ZlcmZsb3cpOworICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpPY3RhbDoKKyAgICAgICAgICAgIEFTU0VS
VChkaWRTZWVTeW50YXhWaW9sYXRpb24pOworICAgICAgICAgICAgaWYgKCppdGVyYXRvciA8ICcw
JyB8fCAqaXRlcmF0b3IgPiAnNycpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CisgICAgICAgICAgICB2YWx1ZSAq
PSA4OworICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOworICAgICAgICAgICAg
aWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOworICAg
ICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0
YXRlOjpIZXg6CisgICAgICAgICAgICBBU1NFUlQoZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAg
ICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KCppdGVyYXRvcikpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7
CisgICAgICAgICAgICB2YWx1ZSAqPSAxNjsKKyAgICAgICAgICAgIHZhbHVlICs9IHRvQVNDSUlI
ZXhWYWx1ZSgqaXRlcmF0b3IpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092
ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQ
aWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOworICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVCghdmFsdWUuaGFz
T3ZlcmZsb3dlZCgpKTsKKyAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgc3RhdGljIHVpbnQ2NF90IHBvdzI1NihzaXplX3QgZXhwb25lbnQpCit7CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhwb25lbnQgPD0gNCk7CisgICAgdWludDY0X3QgdmFsdWVzWzVdID0g
ezEsIDI1NiwgMjU2ICogMjU2LCAyNTYgKiAyNTYgKiAyNTYsIDI1NnVsbCAqIDI1NiAqIDI1NiAq
IDI1NiB9OworICAgIHJldHVybiB2YWx1ZXNbZXhwb25lbnRdOworfQorCitlbnVtIGNsYXNzIFVS
TFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvciB7CisgICAgRmFpbHVyZSwKKyAgICBOb3RJUHY0LAor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbiwg
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0V4cGVjdGVkPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3Ms
IFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQdjRIb3N0KGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24+JiBp
dGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBWZWN0b3I8RXhwZWN0ZWQ8dWludDMyX3QsIFVS
TFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiwgND4gaXRlbXM7CisgICAgYm9vbCBkaWRT
ZWVTeW50YXhWaW9sYXRpb24gPSBmYWxzZTsKKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYg
Kml0ZXJhdG9yID09ICcuJykKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJz
aW5nRXJyb3I6Ok5vdElQdjQpOworICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgeworICAg
ICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkgeworICAgICAgICAgICAgZGlkU2Vl
U3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXRlbXMuc2l6ZSgpID49IDQp
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90
SVB2NCk7CisgICAgICAgIGl0ZW1zLmFwcGVuZChwYXJzZUlQdjRQaWVjZShpdGVyYXRvciwgZGlk
U2VlU3ludGF4VmlvbGF0aW9uKSk7CisgICAgICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAmJiAq
aXRlcmF0b3IgPT0gJy4nKSB7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAg
aWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0
ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZSBpZiAo
Kml0ZXJhdG9yID09ICcuJykKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
SVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFp
dGVyYXRvci5hdEVuZCgpIHx8ICFpdGVtcy5zaXplKCkgfHwgaXRlbXMuc2l6ZSgpID4gNCkKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwor
ICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7CisgICAgICAgIGlmICghaXRlbS5o
YXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWls
dXJlKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6
Ok5vdElQdjQpOworICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBpdGVtcykgewor
ICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQaWVj
ZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CisgICAgfQorICAgIGlmIChpdGVtcy5zaXpl
KCkgPiAxKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpIC0g
MTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoaXRlbXNbaV0udmFsdWUoKSA+IDI1NSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVy
ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGl0ZW1zW2l0ZW1zLnNpemUoKSAtIDFdLnZh
bHVlKCkgPj0gcG93MjU2KDUgLSBpdGVtcy5zaXplKCkpKQorICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CisKKyAgICBpZiAoZGlkU2VlU3lu
dGF4VmlvbGF0aW9uKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhW
aW9sYXRpb25Qb3NpdGlvbik7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsK
KyAgICAgICAgaWYgKGl0ZW0udmFsdWUoKSA+IDI1NSkKKyAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICB9CisKKyAgICBp
ZiAoVU5MSUtFTFkoaXRlbXMuc2l6ZSgpICE9IDQpKQorICAgICAgICBzeW50YXhWaW9sYXRpb24o
aXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisKKyAgICBJUHY0QWRkcmVzcyBp
cHY0ID0gaXRlbXMudGFrZUxhc3QoKS52YWx1ZSgpOworICAgIGZvciAoc2l6ZV90IGNvdW50ZXIg
PSAwOyBjb3VudGVyIDwgaXRlbXMuc2l6ZSgpOyArK2NvdW50ZXIpCisgICAgICAgIGlwdjQgKz0g
aXRlbXNbY291bnRlcl0udmFsdWUoKSAqIHBvdzI1NigzIC0gY291bnRlcik7CisgICAgcmV0dXJu
IGlwdjQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9y
LmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgdWludDMyX3QgcGll
Y2UgPSAwOworICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7CisgICAgc2l6ZV90IGRpZ2l0
Q291bnQgPSAwOworICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICBpZiAo
IWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgKytkaWdpdENvdW50OworICAgICAgICBpZiAoIXBpZWNlICYmICppdGVyYXRv
ciA9PSAnMCcpIHsKKyAgICAgICAgICAgIGlmIChsZWFkaW5nWmVyb3MpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0gJzAnKQorICAg
ICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKKyAgICAgICAgcGllY2UgPSBwaWVjZSAqIDEw
ICsgKml0ZXJhdG9yIC0gJzAnOworICAgICAgICBpZiAocGllY2UgPiAyNTUpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJl
cG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9y
LmF0RW5kKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCppdGVyYXRvciA9PSAn
LicpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKHBpZWNlICYmIGxlYWRpbmda
ZXJvcykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcGllY2U7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPFVSTFBh
cnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgSVB2NEFk
ZHJlc3MgYWRkcmVzcyA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyArK2kpIHsK
KyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBpZWNlID0gcGFyc2VJUHY0UGll
Y2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKKyAgICAgICAgICAgIGFkZHJlc3MgPSAoYWRkcmVzcyA8
PCA4KSArIHBpZWNlLnZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIGlmIChpIDwgMykgeworICAgICAgICAgICAgaWYgKGl0ZXJh
dG9yLmF0RW5kKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4nKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICAgICAgfSBlbHNlIGlmICghaXRlcmF0b3Iu
YXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIEFT
U0VSVChpdGVyYXRvci5hdEVuZCgpKTsKKyAgICByZXR1cm4gYWRkcmVzczsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2
QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+IGMpCit7CisgICAgQVNTRVJUKCpjID09ICdbJyk7CisgICAgY29uc3QgYXV0byBo
b3N0QmVnaW4gPSBjOworICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICBpZiAoYy5hdEVu
ZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgSVB2NkFkZHJlc3MgYWRk
cmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19OworICAgIHNpemVfdCBwaWVjZVBvaW50
ZXIgPSAwOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb21wcmVzc1BvaW50ZXI7CisKKyAg
ICBpZiAoKmMgPT0gJzonKSB7CisgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAg
ICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgIGlmICgqYyAhPSAnOicpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CisgICAgICAgICsrcGllY2VQb2ludGVyOworICAg
ICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7CisgICAgfQorICAgIAorICAgIHdo
aWxlICghYy5hdEVuZCgpKSB7CisgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmICgqYyA9PSAnOicpIHsKKyAg
ICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAg
ICAgICsrcGllY2VQb2ludGVyOworICAgICAgICAgICAgY29tcHJlc3NQb2ludGVyID0gcGllY2VQ
b2ludGVyOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBp
ZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2ludGVyIDwgNikp
IHsKKyAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBpcHY0QWRkcmVz
cyA9IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPT0gNSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
aG9zdEJlZ2luKTsKKyAgICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlw
djRBZGRyZXNzLnZhbHVlKCkgPj4gMTY7CisgICAgICAgICAgICAgICAgYWRkcmVzc1twaWVjZVBv
aW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpICYgMHhGRkZGOworICAgICAgICAgICAgICAg
IGMgPSB7IH07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgdWludDE2X3QgdmFsdWUgPSAwOworICAgICAgICBzaXplX3QgbGVuZ3RoID0g
MDsKKyAgICAgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKKyAgICAgICAgZm9yICg7IGxl
bmd0aCA8IDQ7IGxlbmd0aCsrKSB7CisgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKmMpKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcigqYykp
CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisgICAgICAgICAg
ICBpZiAoKmMgPT0gJzAnICYmICFsZW5ndGgpCisgICAgICAgICAgICAgICAgbGVhZGluZ1plcm9z
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgKiAweDEwICsgdG9BU0NJSUhleFZh
bHVlKCpjKTsKKyAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKFVOTElLRUxZKCh2YWx1ZSAmJiBsZWFkaW5nWmVyb3MpIHx8
ICghdmFsdWUgJiYgbGVuZ3RoID4gMSkpKQorICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhv
c3RCZWdpbik7CisKKyAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSB2YWx1ZTsKKyAg
ICAgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAocGll
Y2VQb2ludGVyID09IDggfHwgKmMgIT0gJzonKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOworICAgIH0KKyAgICAKKyAgICBp
ZiAoIWMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAKKyAgICBp
ZiAoY29tcHJlc3NQb2ludGVyKSB7CisgICAgICAgIHNpemVfdCBzd2FwcyA9IHBpZWNlUG9pbnRl
ciAtIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpOworICAgICAgICBwaWVjZVBvaW50ZXIgPSA3Owor
ICAgICAgICB3aGlsZSAoc3dhcHMpCisgICAgICAgICAgICBzdGQ6OnN3YXAoYWRkcmVzc1twaWVj
ZVBvaW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2ludGVyLnZhbHVlKCkgKyBzd2Fwcy0tIC0g
MV0pOworICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9IDgpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcG9zc2libGVDb21wcmVz
c1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKKyAgICBpZiAocG9z
c2libGVDb21wcmVzc1BvaW50ZXIpCisgICAgICAgIHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyLnZh
bHVlKCkrKzsKKyAgICBpZiAoVU5MSUtFTFkoY29tcHJlc3NQb2ludGVyICE9IHBvc3NpYmxlQ29t
cHJlc3NQb2ludGVyKSkKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisgICAg
CisgICAgcmV0dXJuIGFkZHJlc3M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+CitVUkxQYXJzZXI6OkxDaGFyQnVmZmVyIFVSTFBhcnNlcjo6cGVyY2VudERlY29kZShjb25z
dCBMQ2hhciogaW5wdXQsIHNpemVfdCBsZW5ndGgsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQoreworICAg
IExDaGFyQnVmZmVyIG91dHB1dDsKKyAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShs
ZW5ndGgpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07CisgICAgICAgIGlmIChieXRlICE9ICcl
JykKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAgICAgIGVs
c2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKKyAgICAgICAgICAgIGlmIChp
c0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSAr
IDJdKSkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBw
ZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOworICAgICAg
ICAgICAgICAgIGkgKz0gMjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG91
dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
b3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICB9CisgICAgcmV0dXJuIG91dHB1dDsK
K30KKyAgICAKK1VSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJjZW50RGVjb2Rl
KGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBMQ2hhckJ1ZmZlciBv
dXRwdXQ7CisgICAgb3V0cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICAK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHVpbnQ4
X3QgYnl0ZSA9IGlucHV0W2ldOworICAgICAgICBpZiAoYnl0ZSAhPSAnJScpCisgICAgICAgICAg
ICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgICAgICBlbHNlIGlmIChsZW5ndGgg
PiAyICYmIGkgPCBsZW5ndGggLSAyKSB7CisgICAgICAgICAgICBpZiAoaXNBU0NJSUhleERpZ2l0
KGlucHV0W2kgKyAxXSkgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAyXSkpIHsKKyAgICAg
ICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtp
ICsgMV0sIGlucHV0W2kgKyAyXSkpOworICAgICAgICAgICAgICAgIGkgKz0gMjsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRl
KTsKKyAgICB9CisgICAgcmV0dXJuIG91dHB1dDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OkxDaGFyQnVmZmVyPiBVUkxQYXJz
ZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikK
K3sKKyAgICBMQ2hhckJ1ZmZlciBhc2NpaTsKKyAgICBpZiAoZG9tYWluLmlzQWxsQVNDSUkoKSkg
eworICAgICAgICBzaXplX3QgbGVuZ3RoID0gZG9tYWluLmxlbmd0aCgpOworICAgICAgICBpZiAo
ZG9tYWluLmlzOEJpdCgpKSB7CisgICAgICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9
IGRvbWFpbi5jaGFyYWN0ZXJzOCgpOworICAgICAgICAgICAgYXNjaWkucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShsZW5ndGgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoY2hh
cmFjdGVyc1tpXSkpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0
b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgICAgICAgICAgICAgYXNjaWkudW5j
aGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9
IGRvbWFpbi5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgICAgIGFzY2lpLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKGNo
YXJhY3RlcnNbaV0pKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAgICAgICAgIGFzY2lpLnVu
Y2hlY2tlZEFwcGVuZCh0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIHJldHVybiBhc2NpaTsKKyAgICB9CisgICAgCisgICAgY29u
c3Qgc2l6ZV90IG1heERvbWFpbkxlbmd0aCA9IDY0OworICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVy
W21heERvbWFpbkxlbmd0aF07CisgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsK
KyAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVS
OworICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJ
KCZpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwgU3RyaW5nVmlldyhkb21haW4p
LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBkb21haW4ubGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVy
LCBtYXhEb21haW5MZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKKyAgICBBU1NF
UlQobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA8PSBzdGF0aWNfY2FzdDxpbnQzMl90PihtYXhEb21h
aW5MZW5ndGgpKTsKKworICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9jZXNzaW5nRGV0
YWlscy5lcnJvcnMpIHsKKyAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbnVtQ2hhcmFj
dGVyc0NvbnZlcnRlZDsgKytpKSB7CisgICAgICAgICAgICBBU1NFUlQoaXNBU0NJSShob3N0bmFt
ZUJ1ZmZlcltpXSkpOworICAgICAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoaG9zdG5hbWVC
dWZmZXJbaV0pKTsKKyAgICAgICAgfQorICAgICAgICBhc2NpaS5hcHBlbmQoaG9zdG5hbWVCdWZm
ZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOworICAgICAgICBpZiAoZG9tYWluICE9IFN0cmlu
Z1ZpZXcoYXNjaWkuZGF0YSgpLCBhc2NpaS5zaXplKCkpKQorICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICByZXR1
cm4gYXNjaWk7CisgICAgfQorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK2Jvb2wgVVJM
UGFyc2VyOjpoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IFVSTFBhcnNlcjo6TENoYXJC
dWZmZXImIGFzY2lpRG9tYWluKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXNjaWlE
b21haW4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2lu
dChhc2NpaURvbWFpbltpXSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9v
bCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
aXRlcmF0b3IpCit7CisgICAgQVNTRVJUKCppdGVyYXRvciA9PSAnOicpOworICAgIGF1dG8gY29s
b25JdGVyYXRvciA9IGl0ZXJhdG9yOworICAgIGFkdmFuY2UoaXRlcmF0b3IsIGNvbG9uSXRlcmF0
b3IpOworICAgIHVpbnQzMl90IHBvcnQgPSAwOworICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5h
dEVuZCgpKSkgeworICAgICAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0gY3VycmVudFBvc2l0aW9u
KGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IHBvcnRMZW5ndGg7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJh
dG9yKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHNpemVfdCBkaWdpdENvdW50
ID0gMDsKKyAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOworICAgIGZvciAoOyAhaXRlcmF0
b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgeworICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5l
d2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0
ZXJhdG9yKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChp
c0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkgeworICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAn
MCcgJiYgIWRpZ2l0Q291bnQpCisgICAgICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsK
KyAgICAgICAgICAgICsrZGlnaXRDb3VudDsKKyAgICAgICAgICAgIHBvcnQgPSBwb3J0ICogMTAg
KyAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgICAgICBpZiAocG9ydCA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDE2X3Q+OjptYXgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
IChwb3J0ICYmIGxlYWRpbmdaZXJvcykKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRl
cmF0b3IpOworICAgIAorICAgIGlmICghcG9ydCAmJiBkaWdpdENvdW50ID4gMSkKKyAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworCisgICAgQVNTRVJUKHBvcnQgPT0gc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKKyAgICBpZiAoVU5MSUtFTFkoZGVmYXVsdFBvcnRG
b3JQcm90b2NvbChwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCkpID09IHN0YXRp
Y19jYXN0PHVpbnQxNl90Pihwb3J0KSkpCisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0
ZXJhdG9yKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwor
ICAgICAgICBBU1NFUlQocG9ydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4
KCkpOworICAgICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQxNl90PihzdGF0aWNf
Y2FzdDx1aW50MTZfdD4ocG9ydCkpOworICAgIH0KKworICAgIHVuc2lnbmVkIHBvcnRMZW5ndGgg
PSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgIFJFTEVB
U0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBv
cnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYg
KGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKml0ZXJh
dG9yID09ICc6JykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaXRlcmF0b3IgPT0g
J1snKSB7CisgICAgICAgIGF1dG8gaXB2NkVuZCA9IGl0ZXJhdG9yOworICAgICAgICB3aGlsZSAo
IWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCAhPSAnXScpCisgICAgICAgICAgICArK2lwdjZF
bmQ7CisgICAgICAgIGlmIChpcHY2RW5kLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KGl0ZXJhdG9yLCBpcHY2RW5kKSkpIHsKKyAgICAgICAgICAg
IHNlcmlhbGl6ZUlQdjYoYWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgICAgIGlmICghaXB2NkVu
ZC5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgYWR2YW5jZShpcHY2RW5kKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCA9PSAnOicpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGlwdjZFbmQpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9z
aXRpb24oaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpZiAoIW1fdXJsSXNTcGVjaWFsKSB7CisgICAgICAgIGZvciAoOyAhaXRlcmF0b3IuYXRF
bmQoKTsgKytpdGVyYXRvcikgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXds
aW5lKCppdGVyYXRvcikpKSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpICYm
ICppdGVyYXRvciAhPSAnJScpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGl0ZXJhdG9yKTsK
KyAgICAgICAgfQorICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRl
cmF0b3IpOworICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOworICAgIH0KKyAgICAKKyAgICBp
ZiAoTElLRUxZKCFtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSkpIHsKKyAgICAgICAgYXV0byBo
b3N0SXRlcmF0b3IgPSBpdGVyYXRvcjsKKyAgICAgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgp
OyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9y
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICgqaXRlcmF0b3Ig
PT0gJzonKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGlzRm9yYmlk
ZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRIb3N0KGhvc3RJ
dGVyYXRvciwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaG9zdEl0ZXJhdG9yLCBp
dGVyYXRvcikpOworICAgICAgICBpZiAoYWRkcmVzcykgeworICAgICAgICAgICAgc2VyaWFsaXpl
SVB2NChhZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3Vy
cmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgp
KSB7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBwYXJz
ZVBvcnQoaXRlcmF0b3IpOworICAgICAgICB9CisgICAgICAgIGlmIChhZGRyZXNzLmVycm9yKCkg
PT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgZm9yICg7IGhvc3RJdGVyYXRvciAhPSBpdGVyYXRvcjsgKytob3N0SXRlcmF0b3Ip
IHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaG9zdEl0ZXJhdG9y
KSkpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEl0ZXJhdG9yKTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChV
TkxJS0VMWShpc0FTQ0lJVXBwZXIoKmhvc3RJdGVyYXRvcikpKQorICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihob3N0SXRlcmF0b3IpOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcih0b0FTQ0lJTG93ZXIoKmhvc3RJdGVyYXRvcikpOworICAgICAgICB9CisgICAgICAgIG1f
dXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIGlmICgh
aG9zdEl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGhvc3RJ
dGVyYXRvcik7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24o
aXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0
TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0
aCA9IHBvcnRMZW5ndGg7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBj
b25zdCBhdXRvIGhvc3RCZWdpbiA9IGl0ZXJhdG9yOworICAgIAorICAgIExDaGFyQnVmZmVyIHV0
ZjhFbmNvZGVkOworICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewor
ICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJKCppdGVyYXRvcikpKQorICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisKKyAgICAgICAgaWYgKCFVX0lTX1VO
SUNPREVfQ0hBUigqaXRlcmF0b3IpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKKyAgICAgICAgaW50MzJfdCBvZmZzZXQg
PSAwOworICAgICAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCAqaXRlcmF0b3Ip
OworICAgICAgICB1dGY4RW5jb2RlZC5hcHBlbmQoYnVmZmVyLCBvZmZzZXQpOworICAgIH0KKyAg
ICBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUodXRmOEVuY29kZWQu
ZGF0YSgpLCB1dGY4RW5jb2RlZC5zaXplKCksIGhvc3RCZWdpbik7CisgICAgU3RyaW5nIGRvbWFp
biA9IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2Rl
ZC5zaXplKCkpOworICAgIGlmIChkb21haW4uaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcocGVyY2VudERlY29kZWQuZGF0YSgpLCBw
ZXJjZW50RGVjb2RlZC5zaXplKCkpKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2lu
KTsKKyAgICBhdXRvIGFzY2lpRG9tYWluID0gZG9tYWluVG9BU0NJSSgqZG9tYWluLmltcGwoKSwg
aG9zdEJlZ2luKTsKKyAgICBpZiAoIWFzY2lpRG9tYWluIHx8IGhhc0ZvcmJpZGRlbkhvc3RDb2Rl
UG9pbnQoYXNjaWlEb21haW4udmFsdWUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBM
Q2hhckJ1ZmZlciYgYXNjaWlEb21haW5WYWx1ZSA9IGFzY2lpRG9tYWluLnZhbHVlKCk7CisgICAg
Y29uc3QgTENoYXIqIGFzY2lpRG9tYWluQ2hhcmFjdGVycyA9IGFzY2lpRG9tYWluVmFsdWUuZGF0
YSgpOworCisgICAgYXV0byBhZGRyZXNzID0gcGFyc2VJUHY0SG9zdChob3N0QmVnaW4sIENvZGVQ
b2ludEl0ZXJhdG9yPExDaGFyPihhc2NpaURvbWFpblZhbHVlLmJlZ2luKCksIGFzY2lpRG9tYWlu
VmFsdWUuZW5kKCkpKTsKKyAgICBpZiAoYWRkcmVzcykgeworICAgICAgICBzZXJpYWxpemVJUHY0
KGFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3Np
dGlvbihpdGVyYXRvcik7CisgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgfQorICAg
IGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihhc2NpaURvbWFpbkNo
YXJhY3RlcnMsIGFzY2lpRG9tYWluVmFsdWUuc2l6ZSgpKTsKKyAgICBtX3VybC5tX2hvc3RFbmQg
PSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSkK
KyAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVS
TFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQoreworICAgIGF1dG8gdXRm
OCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CisgICAgaWYgKHV0ZjguaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgYXV0byBwZXJjZW50RGVjb2RlZCA9
IHBlcmNlbnREZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHV0ZjguZGF0YSgp
KSwgdXRmOC5sZW5ndGgoKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERl
Y29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOworfQorCisvLyBodHRwczovL3Vy
bC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsZW5jb2RlZC1wYXJzZXIKK2F1dG8gVVJMUGFy
c2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+IFVSTEVuY29kZWRG
b3JtCit7CisgICAgVVJMRW5jb2RlZEZvcm0gb3V0cHV0OworICAgIGZvciAoU3RyaW5nVmlldyBi
eXRlcyA6IGlucHV0LnNwbGl0KCcmJykpIHsKKyAgICAgICAgYXV0byBlcXVhbEluZGV4ID0gYnl0
ZXMuZmluZCgnPScpOworICAgICAgICBpZiAoZXF1YWxJbmRleCA9PSBub3RGb3VuZCkgeworICAg
ICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy50b1N0cmluZygpLnJlcGxh
Y2UoJysnLCAweDIwKSk7CisgICAgICAgICAgICBpZiAobmFtZSkKKyAgICAgICAgICAgICAgICBv
dXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJz
dHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOworICAg
ICAgICAgICAgYXV0byB2YWx1ZSA9IGZvcm1VUkxEZWNvZGUoYnl0ZXMuc3Vic3RyaW5nKGVxdWFs
SW5kZXggKyAxKS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7CisgICAgICAgICAgICBp
ZiAobmFtZSAmJiB2YWx1ZSkKKyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52
YWx1ZSgpLCB2YWx1ZS52YWx1ZSgpIH0pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBv
dXRwdXQ7Cit9CisKK3N0YXRpYyB2b2lkIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3JtKGNvbnN0IFN0
cmluZyYgaW5wdXQsIFZlY3RvcjxMQ2hhcj4mIG91dHB1dCkKK3sKKyAgICBhdXRvIHV0ZjggPSBp
bnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOworICAgIGNvbnN0IGNoYXIqIGRhdGEgPSB1dGY4
LmRhdGEoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHV0ZjgubGVuZ3RoKCk7ICsraSkg
eworICAgICAgICBjb25zdCBjaGFyIGJ5dGUgPSBkYXRhW2ldOworICAgICAgICBpZiAoYnl0ZSA9
PSAweDIwKQorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgweDJCKTsKKyAgICAgICAgZWxzZSBp
ZiAoYnl0ZSA9PSAweDJBCisgICAgICAgICAgICB8fCBieXRlID09IDB4MkQKKyAgICAgICAgICAg
IHx8IGJ5dGUgPT0gMHgyRQorICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHgzMCAmJiBieXRlIDw9
IDB4MzkpCisgICAgICAgICAgICB8fCAoYnl0ZSA+PSAweDQxICYmIGJ5dGUgPD0gMHg1QSkKKyAg
ICAgICAgICAgIHx8IGJ5dGUgPT0gMHg1RgorICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHg2MSAm
JiBieXRlIDw9IDB4N0EpKSAvLyBGSVhNRTogUHV0IHRoZXNlIGluIHRoZSBjaGFyYWN0ZXJDbGFz
c1RhYmxlIHRvIGF2b2lkIGJyYW5jaGVzLgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChieXRl
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnl0ZSwgb3V0
cHV0KTsKKyAgICB9Cit9CisgICAgCitTdHJpbmcgVVJMUGFyc2VyOjpzZXJpYWxpemUoY29uc3Qg
VVJMRW5jb2RlZEZvcm0mIHR1cGxlcykKK3sKKyAgICBpZiAodHVwbGVzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxMQ2hhcj4gb3V0cHV0OworICAgIGZvciAo
YXV0byYgdHVwbGUgOiB0dXBsZXMpIHsKKyAgICAgICAgaWYgKCFvdXRwdXQuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgnJicpOworICAgICAgICBzZXJpYWxpemVVUkxFbmNv
ZGVkRm9ybSh0dXBsZS5rZXksIG91dHB1dCk7CisgICAgICAgIG91dHB1dC5hcHBlbmQoJz0nKTsK
KyAgICAgICAgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0odHVwbGUudmFsdWUsIG91dHB1dCk7Cisg
ICAgfQorICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUob3V0cHV0KSk7Cit9CisKK2Nv
bnN0IFVJRE5BJiBVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2Rlcigp
Cit7CisgICAgc3RhdGljIFVJRE5BKiBlbmNvZGVyOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBV
RXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOworICAgICAgICAvLyBXYXJuaW5nOiBQbGVh
c2UgY29udGFjdCBhIFdlYktpdEdUSysgZGV2ZWxvcGVyIGlmIGNoYW5naW5nIHRoZXNlIGZsYWdz
LgorICAgICAgICAvLyBUaGV5IHNob3VsZCBiZSBzeW5jZWQgd2l0aCBlcGh5X3VyaV9kZWNvZGUo
KSBpbiBlcGh5LXVyaS1oZWxwZXJzLmMuCisgICAgICAgIGVuY29kZXIgPSB1aWRuYV9vcGVuVVRT
NDYoVUlETkFfQ0hFQ0tfQklESSB8IFVJRE5BX0NIRUNLX0NPTlRFWFRKIHwgVUlETkFfTk9OVFJB
TlNJVElPTkFMX1RPX1VOSUNPREUgfCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fQVNDSUksICZl
cnJvcik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChlbmNvZGVyKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKmVuY29kZXI7
Cit9CisKK2Jvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0
IFVSTCYgYikKK3sKKyAgICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzIiwK
KyAgICAgICAgYS5tX2lzVmFsaWQsCisgICAgICAgIGEubV9jYW5ub3RCZUFCYXNlVVJMLAorICAg
ICAgICBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKKyAgICAgICAgYS5tX3NjaGVtZUVuZCwK
KyAgICAgICAgYS5tX3VzZXJTdGFydCwKKyAgICAgICAgYS5tX3VzZXJFbmQsCisgICAgICAgIGEu
bV9wYXNzd29yZEVuZCwKKyAgICAgICAgYS5tX2hvc3RFbmQsCisgICAgICAgIGEubV9ob3N0RW5k
ICsgYS5tX3BvcnRMZW5ndGgsCisgICAgICAgIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCisgICAg
ICAgIGEubV9wYXRoRW5kLAorICAgICAgICBhLm1fcXVlcnlFbmQsCisgICAgICAgIGEubV9zdHJp
bmcudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgYi5tX2lzVmFsaWQsCisgICAgICAgIGIubV9jYW5u
b3RCZUFCYXNlVVJMLAorICAgICAgICBiLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKKyAgICAg
ICAgYi5tX3NjaGVtZUVuZCwKKyAgICAgICAgYi5tX3VzZXJTdGFydCwKKyAgICAgICAgYi5tX3Vz
ZXJFbmQsCisgICAgICAgIGIubV9wYXNzd29yZEVuZCwKKyAgICAgICAgYi5tX2hvc3RFbmQsCisg
ICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5ndGgsCisgICAgICAgIGIubV9wYXRoQWZ0
ZXJMYXN0U2xhc2gsCisgICAgICAgIGIubV9wYXRoRW5kLAorICAgICAgICBiLm1fcXVlcnlFbmQs
CisgICAgICAgIGIubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4gYS5tX3N0
cmluZyA9PSBiLm1fc3RyaW5nCisgICAgICAgICYmIGEubV9pc1ZhbGlkID09IGIubV9pc1ZhbGlk
CisgICAgICAgICYmIGEubV9jYW5ub3RCZUFCYXNlVVJMID09IGIubV9jYW5ub3RCZUFCYXNlVVJM
CisgICAgICAgICYmIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID09IGIubV9wcm90b2NvbElz
SW5IVFRQRmFtaWx5CisgICAgICAgICYmIGEubV9zY2hlbWVFbmQgPT0gYi5tX3NjaGVtZUVuZAor
ICAgICAgICAmJiBhLm1fdXNlclN0YXJ0ID09IGIubV91c2VyU3RhcnQKKyAgICAgICAgJiYgYS5t
X3VzZXJFbmQgPT0gYi5tX3VzZXJFbmQKKyAgICAgICAgJiYgYS5tX3Bhc3N3b3JkRW5kID09IGIu
bV9wYXNzd29yZEVuZAorICAgICAgICAmJiBhLm1faG9zdEVuZCA9PSBiLm1faG9zdEVuZAorICAg
ICAgICAmJiBhLm1fcG9ydExlbmd0aCA9PSBiLm1fcG9ydExlbmd0aAorICAgICAgICAmJiBhLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID09IGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gKKyAgICAgICAgJiYg
YS5tX3BhdGhFbmQgPT0gYi5tX3BhdGhFbmQKKyAgICAgICAgJiYgYS5tX3F1ZXJ5RW5kID09IGIu
bV9xdWVyeUVuZDsKK30KKworYm9vbCBVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVu
dChjb25zdCBVUkwmIHVybCkKK3sKKyAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kIDw9IHVybC5t
X3VzZXJTdGFydAorICAgICAgICAmJiB1cmwubV91c2VyU3RhcnQgPD0gdXJsLm1fdXNlckVuZAor
ICAgICAgICAmJiB1cmwubV91c2VyRW5kIDw9IHVybC5tX3Bhc3N3b3JkRW5kCisgICAgICAgICYm
IHVybC5tX3Bhc3N3b3JkRW5kIDw9IHVybC5tX2hvc3RFbmQKKyAgICAgICAgJiYgdXJsLm1faG9z
dEVuZCArIHVybC5tX3BvcnRMZW5ndGggPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoCisgICAg
ICAgICYmIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSB1cmwubV9wYXRoRW5kCisgICAgICAg
ICYmIHVybC5tX3BhdGhFbmQgPD0gdXJsLm1fcXVlcnlFbmQKKyAgICAgICAgJiYgdXJsLm1fcXVl
cnlFbmQgPD0gdXJsLm1fc3RyaW5nLmxlbmd0aCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5oIGIvU291cmNlL1dURi93dGYv
VVJMUGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWUyNWI1NDAyMjM0MGE5ZTg4YmVkOGNjZjE3MDAzOTI3
NzdmZTcyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5oCkBA
IC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgorCitzdHJ1Y3QgVUlETkE7CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjbGFzcyBDb2RlUG9pbnRJdGVyYXRvcjsKKworY2xh
c3MgVVJMUGFyc2VyIHsKK3B1YmxpYzoKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgYWxsVmFsdWVzRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGludGVybmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwm
KTsKKyAgICAKKyAgICB1c2luZyBVUkxFbmNvZGVkRm9ybSA9IFZlY3RvcjxXVEY6OktleVZhbHVl
UGFpcjxTdHJpbmcsIFN0cmluZz4+OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVJM
RW5jb2RlZEZvcm0gcGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBzZXJpYWxpemUoY29uc3QgVVJMRW5jb2RlZEZvcm0m
KTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBpc1NwZWNpYWxTY2hlbWUo
Y29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG1heWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYg
c2NoZW1lKTsKKworICAgIHN0YXRpYyBjb25zdCBVSUROQSYgaW50ZXJuYXRpb25hbERvbWFpbk5h
bWVUcmFuc2NvZGVyKCk7CisgICAgc3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5jb2RlU2V0KFVD
aGFyKTsKKworcHJpdmF0ZToKKyAgICBVUkxQYXJzZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJM
JiA9IHsgfSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiA9IG51bGxwdHIpOworICAgIFVSTCByZXN1
bHQoKSB7IHJldHVybiBtX3VybDsgfQorCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2
X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CisgICAgZnJpZW5kIHN0ZDo6
b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7Cisg
ICAgZnJpZW5kIGNsYXNzIFVSTDsKKworICAgIFVSTCBtX3VybDsKKyAgICBWZWN0b3I8TENoYXI+
IG1fYXNjaWlCdWZmZXI7CisgICAgYm9vbCBtX3VybElzU3BlY2lhbCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3VybElzRmlsZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hvc3RIYXNQZXJjZW50T3JO
b25BU0NJSSB7IGZhbHNlIH07CisgICAgU3RyaW5nIG1faW5wdXRTdHJpbmc7CisgICAgY29uc3Qg
dm9pZCogbV9pbnB1dEJlZ2luIHsgbnVsbHB0ciB9OworCisgICAgYm9vbCBtX2RpZFNlZVN5bnRh
eFZpb2xhdGlvbiB7IGZhbHNlIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVs
dElubGluZUJ1ZmZlclNpemUgPSAyMDQ4OworICAgIHVzaW5nIExDaGFyQnVmZmVyID0gVmVjdG9y
PExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT47CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqLCBjb25zdCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyopOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2VBdXRob3JpdHkoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IGJvb2wgcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBw
YXJzZVBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKworICAgIHZvaWQg
ZmFpbHVyZSgpOworICAgIGVudW0gY2xhc3MgUmVwb3J0U3ludGF4VmlvbGF0aW9uIHsgTm8sIFll
cyB9OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZp
b2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9sYXRpb246Olll
cz4KKyAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0
ZXJhdG9yKSB7IGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgcmVwb3J0U3ludGF4VmlvbGF0aW9uPihp
dGVyYXRvciwgaXRlcmF0b3IpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uID0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXM+Cisg
ICAgdm9pZCBhZHZhbmNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0
aW9uUG9zaXRpb24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wg
dGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHN5bnRheFZpb2xh
dGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNQZXJjZW50RW5jb2RlZERvdChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gYm9vbCBpc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9v
bCBpc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzRG91YmxlRG90
UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgc2hvdWxkQ29weUZpbGVVUkwoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGJvb2wgY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4mLCBVQ2hhcjMyKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBib29sIGlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4pOworICAgIGJvb2wgaXNMb2NhbGhvc3QoU3RyaW5nVmlldyk7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6
ZV90IGN1cnJlbnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+IHZvaWQgYXBw
ZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlKTsKKyAgICB0ZW1wbGF0
ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZv
aWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVy
eUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8TENoYXJCdWZmZXI+
IGRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlKGNv
bnN0IExDaGFyKiwgc2l6ZV90LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgc3RhdGljIExDaGFy
QnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KTsKKyAg
ICBzdGF0aWMgYm9vbCBoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IExDaGFyQnVmZmVy
Jik7CisgICAgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90KTsKKyAgICB2b2lkIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoVUNoYXIzMik7CisgICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNv
bnN0IGNoYXIqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBM
Q2hhciogY2hhcmFjdGVycywgc2l6ZV90IHNpemUpIHsgYXBwZW5kVG9BU0NJSUJ1ZmZlcihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFyYWN0ZXJzKSwgc2l6ZSk7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGVuY29kZU5vblVURjhRdWVyeShjb25z
dCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYsIENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB2b2lkIGNvcHlBU0NJSVN0cmluZ1VudGls
KGNvbnN0IFN0cmluZyYsIHNpemVfdCBsZW5ndGgpOworICAgIGJvb2wgY29weUJhc2VXaW5kb3dz
RHJpdmVMZXR0ZXIoY29uc3QgVVJMJik7CisgICAgU3RyaW5nVmlldyBwYXJzZWREYXRhVmlldyhz
aXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpOworICAgIFVDaGFyIHBhcnNlZERhdGFWaWV3KHNp
emVfdCBwb3NpdGlvbik7CisKKyAgICB1c2luZyBJUHY0QWRkcmVzcyA9IHVpbnQzMl90OworICAg
IHZvaWQgc2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyk7CisgICAgZW51bSBjbGFzcyBJUHY0UGFy
c2luZ0Vycm9yOworICAgIGVudW0gY2xhc3MgSVB2NFBpZWNlUGFyc2luZ0Vycm9yOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24sIHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPElQdjRBZGRyZXNzLCBJUHY0UGFyc2luZ0Vycm9yPiBw
YXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50
YXhWaW9sYXRpb24+JiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJz
ZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gcGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mLCBib29sJiBzeW50YXhWaW9sYXRpb24pOworICAgIHVzaW5nIElQ
djZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9z
dChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGllY2VJ
bnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4gcGFy
c2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4p
OworICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsKKyAgICB2b2lk
IHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOworCisgICAgZW51bSBjbGFzcyBVUkxQYXJ0Owor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29weVVSTFBhcnRzVW50
aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyomKTsKKyAgICBzdGF0aWMgc2l6ZV90
IHVybExlbmd0aFVudGlsUGFydChjb25zdCBVUkwmLCBVUkxQYXJ0KTsKKyAgICB2b2lkIHBvcFBh
dGgoKTsKKyAgICBib29sIHNob3VsZFBvcFBhdGgodW5zaWduZWQpOworfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwIGIvU291cmNlL1dURi93dGYv
Y2YvQ0ZVUkxFeHRyYXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2NjY1YThkMGZmYjk2MzQ5MjA2NDUzMTcw
NWJjMWNiOTMzYmI3OGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVS
TEV4dHJhcy5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDRlVSTEV4dHJhcy5oIgorCisjaW5jbHVkZSA8d3RmL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1JldGFp
blB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplLCBDRlVSTFJlZiBiYXNlVVJMKQoreworICAgIC8vIE5PVEU6IFdlIHVzZSBVVEYt
OCBoZXJlIHNpbmNlIHRoaXMgZW5jb2RpbmcgaXMgdXNlZCB3aGVuIGNvbXB1dGluZyBzdHJpbmdz
IHdoZW4gcmV0dXJuaW5nIFVSTCBjb21wb25lbnRzCisgICAgLy8gKGUuZyBjYWxscyB0byBOU1VS
TCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVn
YWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAorICAgIC8vIGNvdWxkIGVpdGhlciBiZSBhIG1hbGZv
cm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZmZXJlbnQgZW5jb2RpbmcsIGxpa2UgU2hpZnQt
SklTLCBzbyB3ZSBmYWxsIGJhY2sKKyAgICAvLyBvbnRvIHVzaW5nIElTTyBMYXRpbi0xIGluIHRo
b3NlIGNhc2VzLgorICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVzdWx0ID0gYWRvcHRDRihDRlVS
TENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUlu
dDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBiYXNlVVJMLCB0cnVlKSk7
CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVB
YnNvbHV0ZVVSTFdpdGhCeXRlcygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0
YSksIHNpemUsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBiYXNlVVJMLCB0cnVlKSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiB1cmwsIFVS
TENoYXJCdWZmZXImIHJlc3VsdCkKK3sKKyAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxH
ZXRCeXRlcyh1cmwsIDAsIDApOworICAgIHJlc3VsdC5yZXNpemUoYnl0ZXNMZW5ndGgpOworICAg
IENGSW5kZXggZmluYWxMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgcmVpbnRlcnByZXRfY2Fz
dDxVSW50OCo+KHJlc3VsdC5kYXRhKCkpLCBieXRlc0xlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNF
RChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5ndGgpOworfQorCit2b2lkIGdl
dFVSTEJ5dGVzKENGVVJMUmVmIHVybCwgQ1N0cmluZyYgcmVzdWx0KQoreworICAgIENGSW5kZXgg
Ynl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7CisgICAgY2hhciogYnl0ZXM7
CisgICAgcmVzdWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChieXRlc0xlbmd0aCwgYnl0
ZXMpOworICAgIENGSW5kZXggZmluYWxMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgcmVpbnRl
cnByZXRfY2FzdDxVSW50OCo+KGJ5dGVzKSwgYnl0ZXNMZW5ndGgpOworICAgIEFTU0VSVF9VTlVT
RUQoZmluYWxMZW5ndGgsIGZpbmFsTGVuZ3RoID09IGJ5dGVzTGVuZ3RoKTsKK30KKworYm9vbCBp
c0NGVVJMU2FtZU9yaWdpbihDRlVSTFJlZiBjZlVSTCwgY29uc3QgVVJMJiB1cmwpCit7CisgICAg
QVNTRVJUKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOworCisgICAgaWYgKHVybC5oYXNV
c2VybmFtZSgpIHx8IHVybC5oYXNQYXNzd29yZCgpKQorICAgICAgICByZXR1cm4gcHJvdG9jb2xI
b3N0QW5kUG9ydEFyZUVxdWFsKHVybCwgVVJMIHsgY2ZVUkwgfSk7CisKKyAgICBVUkxDaGFyQnVm
ZmVyIGJ5dGVzOworICAgIGdldFVSTEJ5dGVzKGNmVVJMLCBieXRlcyk7CisgICAgU3RyaW5nVmll
dyBjZlVSTFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihieXRlcy5kYXRh
KCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnl0ZXMuc2l6ZSgpKSB9OworCisgICAgaWYgKCF1
cmwuaGFzUGF0aCgpKQorICAgICAgICByZXR1cm4gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9
ID09IGNmVVJMU3RyaW5nOworCisgICAgYXV0byB1cmxXaXRob3V0UGF0aCA9IFN0cmluZ1ZpZXcg
eyB1cmwuc3RyaW5nKCkgfS5zdWJzdHJpbmcoMCwgdXJsLnBhdGhTdGFydCgpICsgMSk7CisgICAg
cmV0dXJuIGNmVVJMU3RyaW5nLnN0YXJ0c1dpdGgodXJsV2l0aG91dFBhdGgpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oIGIvU291cmNlL1dURi93
dGYvY2YvQ0ZVUkxFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWM0OWMzZjM3ZjY1MDBlOTYzYWVkNWIw
NGQwOThmMzg1MWYwZWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY2YvQ0ZV
UkxFeHRyYXMuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDRlVSTEV4
dHJhc19oCisjZGVmaW5lIENGVVJMRXh0cmFzX2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFVSTDsKK3R5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4g
VVJMQ2hhckJ1ZmZlcjsKKworV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxDRlVSTFJlZj4g
Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VV
UkwgPSAwKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmLCBV
UkxDaGFyQnVmZmVyJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRVUkxCeXRlcyhDRlVS
TFJlZiwgQ1N0cmluZyYpOworCitib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmLCBjb25z
dCBVUkwmKTsKKworfQorCisjZW5kaWYgLy8gQ0ZVUkxFeHRyYXNfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwIGIvU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg5NTkxZTJiMzg0ZWJiMjA2ZDUyMjI3ZWM5Y2JmOWU3NWQ5NTgyNTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAKQEAgLTAsMCArMSw4MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisjaW5jbHVk
ZSAiQ0ZVUkxFeHRyYXMuaCIKKyNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNpbmNsdWRlIDxDb3Jl
Rm91bmRhdGlvbi9DRlVSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK1VSTDo6VVJMKENGVVJMUmVmIHVybCkKK3sKKyAgICBpZiAoIXVybCkg
eworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAv
LyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPworICAgIENTdHJp
bmcgdXJsQnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7CisgICAgVVJMUGFy
c2VyIHBhcnNlcih1cmxCeXRlcy5kYXRhKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OworfQorCisjaWYgIVVTRShGT1VOREFUSU9OKQorUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNy
ZWF0ZUNGVVJMKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgdGhpcyByZXR1
cm4gZm9yIGludmFsaWQgVVJMcz8KKyAgICAvLyBDdXJyZW50bHkgaXQgdGhyb3dzIGF3YXkgdGhl
IGhpZ2ggYnl0ZXMgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBpbiB0aGF0IGNhc2Us
CisgICAgLy8gd2hpY2ggaXMgY2xlYXJseSB3cm9uZy4KKyAgICBVUkxDaGFyQnVmZmVyIGJ1ZmZl
cjsKKyAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsKKyAgICBhdXRvIGNmVVJMID0gY3JlYXRlQ0ZV
UkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworCisgICAgaWYgKHBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCks
ICp0aGlzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gY2ZVUkw7Cit9
CisjZW5kaWYKKworU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAoreworICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gY2ZVUkwgPSBjcmVhdGVDRlVSTCgpOworICAgIGlmICghY2ZVUkwp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBDRlVS
TFBhdGhTdHlsZSBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlOworI2Vsc2UKKyAg
ICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsKKyNlbmRp
ZgorICAgIHJldHVybiBhZG9wdENGKENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKGNmVVJMLmdldCgp
LCBwYXRoU3R5bGUpKS5nZXQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGM0MzJlNGIzM2QyNDg3ZGI3MGZmNGQzOWIwYmQ0M2U5Zjg5YWExYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLmgKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxMiwgMjAxNCBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworQGNsYXNzIE5TU3RyaW5nOworQGNsYXNzIE5TVVJMOwor
CituYW1lc3BhY2UgV1RGIHsKKworV1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5nICp1c2VyVmlz
aWJsZVN0cmluZyhOU1VSTCAqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJMV2l0aFVz
ZXJUeXBlZFN0cmluZyhOU1N0cmluZyAqLCBOU1VSTCAqYmFzZVVSTCk7IC8vIFJldHVybiB2YWx1
ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTEJ5UmVt
b3ZpbmdVc2VySW5mbyhOU1VSTCAqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAqZGVj
b2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJy
b3IuCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5TU3RyaW5n
ICopOyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgorV1RGX0VYUE9SVF9QUklW
QVRFIE5TVVJMICpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNV
UkwgKiwgQ0ZVUkxDb21wb25lbnRUeXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJM
V2l0aERhdGEoTlNEYXRhICosIE5TVVJMICpiYXNlVVJMKTsKK1dURl9FWFBPUlRfUFJJVkFURSBO
U0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU0Rh
dGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICosIENGVVJMQ29tcG9uZW50VHlwZSk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNh
dGVkKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsKKworTlNSYW5nZSByYW5nZU9mVVJMU2No
ZW1lKE5TU3RyaW5nICopOworV1RGX0VYUE9SVF9QUklWQVRFIEJPT0wgaXNVc2VyVmlzaWJsZVVS
TChOU1N0cmluZyAqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBCT09MIGxvb2tzTGlrZUFic29sdXRl
VVJMKE5TU3RyaW5nICopOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvTlNV
UkxFeHRyYXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTZmYzhmMTY4ZGUwNTZjNWIyYTI5NzIxZjBiZDdiOWY2
ZjEyMzQ0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0
cmFzLm1tCkBAIC0wLDAgKzEsMTIzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
NywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCAiTlNVUkxFeHRyYXMuaCIKKwor
I2ltcG9ydCAiQ0ZVUkxFeHRyYXMuaCIKKyNpbXBvcnQgIlVSTFBhcnNlci5oIgorI2ltcG9ydCA8
d3RmL0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvSGV4TnVtYmVyLmg+CisjaW1wb3J0IDx3dGYv
T2JqY1J1bnRpbWVFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQg
PHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHVuaWNvZGUvdWNoYXIuaD4KKyNpbXBvcnQgPHVuaWNv
ZGUvdWlkbmEuaD4KKyNpbXBvcnQgPHVuaWNvZGUvdXNjcmlwdC5oPgorCisvLyBOZWVkcyB0byBi
ZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KKy8vIEZvciBob3N0IG5h
bWVzIGJpZ2dlciB0aGFuIHRoaXMsIHdlIHdvbid0IGRvIElETiBlbmNvZGluZywgd2hpY2ggaXMg
YWxtb3N0IGNlcnRhaW5seSBPSy4KKyNkZWZpbmUgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEggMjA0
OAorI2RlZmluZSBVUkxfQllURVNfQlVGRkVSX0xFTkdUSCAyMDQ4CisKK3R5cGVkZWYgdm9pZCAo
KiBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbikoTlNTdHJpbmcgKiwgTlNSYW5nZSwgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiYpOworCitzdGF0aWMgdWludDMyX3QgSUROU2NyaXB0V2hpdGVM
aXN0WyhVU0NSSVBUX0NPREVfTElNSVQgKyAzMSkgLyAzMl07CisKK25hbWVzcGFjZSBXVEYgewor
CitzdGF0aWMgYm9vbCBpc0FybWVuaWFuTG9va2FsaWtlQ2hhcmFjdGVyKFVDaGFyMzIgY29kZVBv
aW50KQoreworICAgIHJldHVybiBjb2RlUG9pbnQgPT0gMHgwNTQ4IHx8IGNvZGVQb2ludCA9PSAw
eDA1NEQgfHwgY29kZVBvaW50ID09IDB4MDU3OCB8fCBjb2RlUG9pbnQgPT0gMHgwNTdEOworfQor
CitzdGF0aWMgYm9vbCBpc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKFVDaGFyMzIgY29kZVBvaW50
KQoreworICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgVVNjcmlwdENv
ZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQoY29kZVBvaW50LCAmZXJyb3IpOworICAgIGlm
IChlcnJvciAhPSBVX1pFUk9fRVJST1IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVy
cm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNjcmlwdHM6ICVkIiwgZXJyb3IpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHNjcmlwdCA9PSBVU0NSSVBUX0FS
TUVOSUFOOworfQorCisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBi
b29sIGlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhckNv
ZGUpCit7CisgICAgaWYgKCFpc0FTQ0lJRGlnaXRPclB1bmN0dWF0aW9uKGNoYXJDb2RlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhpbmdzIHRoZSBVUkwgUGFyc2VyIHJlamVj
dHM6CisgICAgc3dpdGNoIChjaGFyQ29kZSkgeworICAgIGNhc2UgJyMnOgorICAgIGNhc2UgJyUn
OgorICAgIGNhc2UgJy8nOgorICAgIGNhc2UgJzonOgorICAgIGNhc2UgJz8nOgorICAgIGNhc2Ug
J0AnOgorICAgIGNhc2UgJ1snOgorICAgIGNhc2UgJ1xcJzoKKyAgICBjYXNlICddJzoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KK30KKworCisKK3N0YXRpYyBCT09MIGlzTG9va2FsaWtlQ2hhcmFjdGVyKHN0ZDo6b3B0aW9u
YWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQsIFVDaGFyMzIgY2hhckNvZGUpCit7CisgICAg
Ly8gVGhpcyBmdW5jdGlvbiB0cmVhdHMgdGhlIGZvbGxvd2luZyBhcyB1bnNhZmUsIGxvb2thbGlr
ZSBjaGFyYWN0ZXJzOgorICAgIC8vIGFueSBub24tcHJpbnRhYmxlIGNoYXJhY3RlciwgYW55IGNo
YXJhY3RlciBjb25zaWRlcmVkIGFzIHdoaXRlc3BhY2UsCisgICAgLy8gYW55IGlnbm9yYWJsZSBj
aGFyYWN0ZXIsIGFuZCBlbW9qaSBjaGFyYWN0ZXJzIHJlbGF0ZWQgdG8gbG9ja3MuCisgICAgCisg
ICAgLy8gV2UgYWxzbyBjb25zaWRlcmVkIHRoZSBjaGFyYWN0ZXJzIGluIE1vemlsbGEncyBibGFj
a2xpc3QgPGh0dHA6Ly9rYi5tb3ppbGxhemluZS5vcmcvTmV0d29yay5JRE4uYmxhY2tsaXN0X2No
YXJzPi4KKworICAgIC8vIFNvbWUgb2YgdGhlIGNoYXJhY3RlcnMgaGVyZSB3aWxsIG5ldmVyIGFw
cGVhciBvbmNlIElDVSBoYXMgZW5jb2RlZC4KKyAgICAvLyBGb3IgZXhhbXBsZSwgSUNVIHRyYW5z
Zm9ybXMgbW9zdCBzcGFjZXMgaW50byBhbiBBU0NJSSBzcGFjZSBhbmQgbW9zdAorICAgIC8vIHNs
YXNoZXMgaW50byBhbiBBU0NJSSBzb2xpZHVzLiBCdXQgb25lIG9mIHRoZSB0d28gY2FsbGVycyB1
c2VzIHRoaXMKKyAgICAvLyBvbiBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBub3QgYmVlbiBwcm9jZXNz
ZWQgYnkgSUNVLCBzbyB0aGV5IGFyZSBuZWVkZWQgaGVyZS4KKyAgICAKKyAgICBpZiAoIXVfaXNw
cmludChjaGFyQ29kZSkgfHwgdV9pc1VXaGl0ZVNwYWNlKGNoYXJDb2RlKSB8fCB1X2hhc0JpbmFy
eVByb3BlcnR5KGNoYXJDb2RlLCBVQ0hBUl9ERUZBVUxUX0lHTk9SQUJMRV9DT0RFX1BPSU5UKSkK
KyAgICAgICAgcmV0dXJuIFlFUzsKKyAgICAKKyAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7CisgICAg
ICAgIGNhc2UgMHgwMEJDOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIgKi8KKyAgICAg
ICAgY2FzZSAweDAwQkQ6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRiAqLworICAgICAgICBj
YXNlIDB4MDBCRTogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTICovCisgICAgICAg
IGNhc2UgMHgwMEVEOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFICovCisgICAg
ICAgIGNhc2UgMHgwMUMzOiAvKiBMQVRJTiBMRVRURVIgUkVUUk9GTEVYIENMSUNLICovCisgICAg
ICAgIGNhc2UgMHgwMjUxOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgQUxQSEEgKi8KKyAgICAgICAg
Y2FzZSAweDAyNjE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgRyAqLworICAgICAgICBj
YXNlIDB4MDJEMDogLyogTU9ESUZJRVIgTEVUVEVSIFRSSUFOR1VMQVIgQ09MT04gKi8KKyAgICAg
ICAgY2FzZSAweDAzMzU6IC8qIENPTUJJTklORyBTSE9SVCBTVFJPS0UgT1ZFUkxBWSAqLworICAg
ICAgICBjYXNlIDB4MDMzNzogLyogQ09NQklOSU5HIFNIT1JUIFNPTElEVVMgT1ZFUkxBWSAqLwor
ICAgICAgICBjYXNlIDB4MDMzODogLyogQ09NQklOSU5HIExPTkcgU09MSURVUyBPVkVSTEFZICov
CisgICAgICAgIGNhc2UgMHgwNTg5OiAvKiBBUk1FTklBTiBGVUxMIFNUT1AgKi8KKyAgICAgICAg
Y2FzZSAweDA1QjQ6IC8qIEhFQlJFVyBQT0lOVCBISVJJUSAqLworICAgICAgICBjYXNlIDB4MDVC
QzogLyogSEVCUkVXIFBPSU5UIERBR0VTSCBPUiBNQVBJUSAqLworICAgICAgICBjYXNlIDB4MDVD
MzogLyogSEVCUkVXIFBVTkNUVUFUSU9OIFNPRiBQQVNVUSAqLworICAgICAgICBjYXNlIDB4MDVG
NDogLyogSEVCUkVXIFBVTkNUVUFUSU9OIEdFUlNIQVlJTSAqLworICAgICAgICBjYXNlIDB4MDYw
OTogLyogQVJBQklDLUlORElDIFBFUiBNSUxMRSBTSUdOICovCisgICAgICAgIGNhc2UgMHgwNjBB
OiAvKiBBUkFCSUMtSU5ESUMgUEVSIFRFTiBUSE9VU0FORCBTSUdOICovCisgICAgICAgIGNhc2Ug
MHgwNjUwOiAvKiBBUkFCSUMgS0FTUkEgKi8KKyAgICAgICAgY2FzZSAweDA2NjA6IC8qIEFSQUJJ
QyBJTkRJQyBESUdJVCBaRVJPICovCisgICAgICAgIGNhc2UgMHgwNjZBOiAvKiBBUkFCSUMgUEVS
Q0VOVCBTSUdOICovCisgICAgICAgIGNhc2UgMHgwNkQ0OiAvKiBBUkFCSUMgRlVMTCBTVE9QICov
CisgICAgICAgIGNhc2UgMHgwNkYwOiAvKiBFWFRFTkRFRCBBUkFCSUMgSU5ESUMgRElHSVQgWkVS
TyAqLworICAgICAgICBjYXNlIDB4MDcwMTogLyogU1lSSUFDIFNVUFJBTElORUFSIEZVTEwgU1RP
UCAqLworICAgICAgICBjYXNlIDB4MDcwMjogLyogU1lSSUFDIFNVQkxJTkVBUiBGVUxMIFNUT1Ag
Ki8KKyAgICAgICAgY2FzZSAweDA3MDM6IC8qIFNZUklBQyBTVVBSQUxJTkVBUiBDT0xPTiAqLwor
ICAgICAgICBjYXNlIDB4MDcwNDogLyogU1lSSUFDIFNVQkxJTkVBUiBDT0xPTiAqLworICAgICAg
ICBjYXNlIDB4MTczNTogLyogUEhJTElQUElORSBTSU5HTEUgUFVOQ1RVQVRJT04gKi8KKyAgICAg
ICAgY2FzZSAweDFEMDQ6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEMgKi8KKyAgICAg
ICAgY2FzZSAweDFEMEY6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE8gKi8KKyAgICAg
ICAgY2FzZSAweDFEMUM6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFUgKi8KKyAgICAg
ICAgY2FzZSAweDFEMjA6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFYgKi8KKyAgICAg
ICAgY2FzZSAweDFEMjE6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFcgKi8KKyAgICAg
ICAgY2FzZSAweDFEMjI6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFogKi8KKyAgICAg
ICAgY2FzZSAweDFFQ0Q6IC8qIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9UIEJFTE9XICov
CisgICAgICAgIGNhc2UgMHgyMDEwOiAvKiBIWVBIRU4gKi8KKyAgICAgICAgY2FzZSAweDIwMTE6
IC8qIE5PTi1CUkVBS0lORyBIWVBIRU4gKi8KKyAgICAgICAgY2FzZSAweDIwMjQ6IC8qIE9ORSBE
T1QgTEVBREVSICovCisgICAgICAgIGNhc2UgMHgyMDI3OiAvKiBIWVBIRU5BVElPTiBQT0lOVCAq
LworICAgICAgICBjYXNlIDB4MjAzOTogLyogU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVP
VEFUSU9OIE1BUksgKi8KKyAgICAgICAgY2FzZSAweDIwM0E6IC8qIFNJTkdMRSBSSUdIVC1QT0lO
VElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4MjA0MTogLyogQ0FS
RVQgSU5TRVJUSU9OIFBPSU5UICovCisgICAgICAgIGNhc2UgMHgyMDQ0OiAvKiBGUkFDVElPTiBT
TEFTSCAqLworICAgICAgICBjYXNlIDB4MjA1MjogLyogQ09NTUVSQ0lBTCBNSU5VUyBTSUdOICov
CisgICAgICAgIGNhc2UgMHgyMTUzOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFRISVJEICovCisg
ICAgICAgIGNhc2UgMHgyMTU0OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIFRISVJEUyAqLworICAg
ICAgICBjYXNlIDB4MjE1NTogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSCAqLworICAgICAg
ICBjYXNlIDB4MjE1NjogLyogVlVMR0FSIEZSQUNUSU9OIFRXTyBGSUZUSFMgKi8KKyAgICAgICAg
Y2FzZSAweDIxNTc6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBGSUZUSFMgKi8KKyAgICAgICAg
Y2FzZSAweDIxNTg6IC8qIFZVTEdBUiBGUkFDVElPTiBGT1VSIEZJRlRIUyAqLworICAgICAgICBj
YXNlIDB4MjE1OTogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBTSVhUSCAqLworICAgICAgICBjYXNl
IDB4MjE1QTogLyogVlVMR0FSIEZSQUNUSU9OIEZJVkUgU0lYVEhTICovCisgICAgICAgIGNhc2Ug
MHgyMTVCOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEVJR0hUICovCisgICAgICAgIGNhc2UgMHgy
MTVDOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRUlHSFRIUyAqLworICAgICAgICBjYXNlIDB4
MjE1RDogLyogVlVMR0FSIEZSQUNUSU9OIEZJVkUgRUlHSFRIUyAqLworICAgICAgICBjYXNlIDB4
MjE1RTogLyogVlVMR0FSIEZSQUNUSU9OIFNFVkVOIEVJR0hUSFMgKi8KKyAgICAgICAgY2FzZSAw
eDIxNUY6IC8qIEZSQUNUSU9OIE5VTUVSQVRPUiBPTkUgKi8KKyAgICAgICAgY2FzZSAweDIyMTI6
IC8qIE1JTlVTIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDIyMTU6IC8qIERJVklTSU9OIFNMQVNI
ICovCisgICAgICAgIGNhc2UgMHgyMjE2OiAvKiBTRVQgTUlOVVMgKi8KKyAgICAgICAgY2FzZSAw
eDIyMzY6IC8qIFJBVElPICovCisgICAgICAgIGNhc2UgMHgyMzNGOiAvKiBBUEwgRlVOQ1RJT05B
TCBTWU1CT0wgU0xBU0ggQkFSICovCisgICAgICAgIGNhc2UgMHgyM0FFOiAvKiBJTlRFR1JBTCBF
WFRFTlNJT04gKi8KKyAgICAgICAgY2FzZSAweDI0NEE6IC8qIE9DUiBET1VCTEUgQkFDS1NMQVNI
ICovCisgICAgICAgIGNhc2UgMHgyNTcxOiAvKiBEaXNwbGF5VHlwZTo6Qm94IERSQVdJTkdTIExJ
R0hUIERJQUdPTkFMIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQgKi8KKyAgICAgICAgY2FzZSAw
eDI1NzI6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIg
TEVGVCBUTyBMT1dFUiBSSUdIVCAqLworICAgICAgICBjYXNlIDB4MjlGNjogLyogU09MSURVUyBX
SVRIIE9WRVJCQVIgKi8KKyAgICAgICAgY2FzZSAweDI5Rjg6IC8qIEJJRyBTT0xJRFVTICovCisg
ICAgICAgIGNhc2UgMHgyQUZCOiAvKiBUUklQTEUgU09MSURVUyBCSU5BUlkgUkVMQVRJT04gKi8K
KyAgICAgICAgY2FzZSAweDJBRkQ6IC8qIERPVUJMRSBTT0xJRFVTIE9QRVJBVE9SICovCisgICAg
ICAgIGNhc2UgMHgyRkYwOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgTEVG
VCBUTyBSSUdIVCAqLworICAgICAgICBjYXNlIDB4MkZGMTogLyogSURFT0dSQVBISUMgREVTQ1JJ
UFRJT04gQ0hBUkFDVEVSIEFCT1ZFIFRPIEJFTE9XICovCisgICAgICAgIGNhc2UgMHgyRkYyOiAv
KiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgTEVGVCBUTyBNSURETEUgQU5EIFJJ
R0hUICovCisgICAgICAgIGNhc2UgMHgyRkYzOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBD
SEFSQUNURVIgQUJPVkUgVE8gTUlERExFIEFORCBCRUxPVyAqLworICAgICAgICBjYXNlIDB4MkZG
NDogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEZVTEwgU1VSUk9VTkQgKi8K
KyAgICAgICAgY2FzZSAweDJGRjU6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RF
UiBTVVJST1VORCBGUk9NIEFCT1ZFICovCisgICAgICAgIGNhc2UgMHgyRkY2OiAvKiBJREVPR1JB
UEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBCRUxPVyAqLworICAgICAg
ICBjYXNlIDB4MkZGNzogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJP
VU5EIEZST00gTEVGVCAqLworICAgICAgICBjYXNlIDB4MkZGODogLyogSURFT0dSQVBISUMgREVT
Q1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gVVBQRVIgTEVGVCAqLworICAgICAgICBj
YXNlIDB4MkZGOTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5E
IEZST00gVVBQRVIgUklHSFQgKi8KKyAgICAgICAgY2FzZSAweDJGRkE6IC8qIElERU9HUkFQSElD
IERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIExPV0VSIExFRlQgKi8KKyAgICAg
ICAgY2FzZSAweDJGRkI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBPVkVS
TEFJRCAqLworICAgICAgICBjYXNlIDB4MzAwMjogLyogSURFT0dSQVBISUMgRlVMTCBTVE9QICov
CisgICAgICAgIGNhc2UgMHgzMDA4OiAvKiBMRUZUIEFOR0xFIEJSQUNLRVQgKi8KKyAgICAgICAg
Y2FzZSAweDMwMTQ6IC8qIExFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLworICAgICAgICBj
YXNlIDB4MzAxNTogLyogUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLworICAgICAgICBj
YXNlIDB4MzAzMzogLyogVkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSyBVUFBFUiBIQUxGICovCisg
ICAgICAgIGNhc2UgMHgzMDM1OiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIExPV0VSIEhB
TEYgKi8KKyAgICAgICAgY2FzZSAweDMyMUQ6IC8qIFBBUkVOVEhFU0laRUQgS09SRUFOIENIQVJB
Q1RFUiBPSkVPTiAqLworICAgICAgICBjYXNlIDB4MzIxRTogLyogUEFSRU5USEVTSVpFRCBLT1JF
QU4gQ0hBUkFDVEVSIE8gSFUgKi8KKyAgICAgICAgY2FzZSAweDMzQUU6IC8qIFNRVUFSRSBSQUQg
T1ZFUiBTICovCisgICAgICAgIGNhc2UgMHgzM0FGOiAvKiBTUVVBUkUgUkFEIE9WRVIgUyBTUVVB
UkVEICovCisgICAgICAgIGNhc2UgMHgzM0M2OiAvKiBTUVVBUkUgQyBPVkVSIEtHICovCisgICAg
ICAgIGNhc2UgMHgzM0RGOiAvKiBTUVVBUkUgQSBPVkVSIE0gKi8KKyAgICAgICAgY2FzZSAweDA1
Qjk6IC8qIEhFQlJFVyBQT0lOVCBIT0xBTSAqLworICAgICAgICBjYXNlIDB4MDVCQTogLyogSEVC
UkVXIFBPSU5UIEhPTEFNIEhBU0VSIEZPUiBWQVYgKi8KKyAgICAgICAgY2FzZSAweDA1QzE6IC8q
IEhFQlJFVyBQT0lOVCBTSElOIERPVCAqLworICAgICAgICBjYXNlIDB4MDVDMjogLyogSEVCUkVX
IFBPSU5UIFNJTiBET1QgKi8KKyAgICAgICAgY2FzZSAweDA1QzQ6IC8qIEhFQlJFVyBNQVJLIFVQ
UEVSIERPVCAqLworICAgICAgICBjYXNlIDB4QTczMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENB
UElUQUwgUyAqLworICAgICAgICBjYXNlIDB4QTc3MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIERV
TSAqLworICAgICAgICBjYXNlIDB4QTc4OTogLyogTU9ESUZJRVIgTEVUVEVSIENPTE9OICovCisg
ICAgICAgIGNhc2UgMHhGRTE0OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgU0VN
SUNPTE9OICovCisgICAgICAgIGNhc2UgMHhGRTE1OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1Ig
VkVSVElDQUwgRVhDTEFNQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4RkUzRjogLyogUFJF
U0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQU5HTEUgQlJBQ0tFVCAqLworICAgICAg
ICBjYXNlIDB4RkU1RDogLyogU01BTEwgTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCisg
ICAgICAgIGNhc2UgMHhGRTVFOiAvKiBTTUFMTCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VU
ICovCisgICAgICAgIGNhc2UgMHhGRjBFOiAvKiBGVUxMV0lEVEggRlVMTCBTVE9QICovCisgICAg
ICAgIGNhc2UgMHhGRjBGOiAvKiBGVUxMIFdJRFRIIFNPTElEVVMgKi8KKyAgICAgICAgY2FzZSAw
eEZGNjE6IC8qIEhBTEZXSURUSCBJREVPR1JBUEhJQyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2Fz
ZSAweEZGRkM6IC8qIE9CSkVDVCBSRVBMQUNFTUVOVCBDSEFSQUNURVIgKi8KKyAgICAgICAgY2Fz
ZSAweEZGRkQ6IC8qIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAqLworICAgICAgICBjYXNlIDB4MUY1
MEY6IC8qIExPQ0sgV0lUSCBJTksgUEVOICovCisgICAgICAgIGNhc2UgMHgxRjUxMDogLyogQ0xP
U0VEIExPQ0sgV0lUSCBLRVkgKi8KKyAgICAgICAgY2FzZSAweDFGNTExOiAvKiBLRVkgKi8KKyAg
ICAgICAgY2FzZSAweDFGNTEyOiAvKiBMT0NLICovCisgICAgICAgIGNhc2UgMHgxRjUxMzogLyog
T1BFTiBMT0NLICovCisgICAgICAgICAgICByZXR1cm4gWUVTOworICAgICAgICBjYXNlIDB4MDMw
NzogLyogQ09NQklOSU5HIERPVCBBQk9WRSAqLworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3Vz
Q29kZVBvaW50ID09IDB4MDIzNyAvKiBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKICovCisg
ICAgICAgICAgICAgICAgfHwgcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMTMxIC8qIExBVElOIFNN
QUxMIExFVFRFUiBET1RMRVNTIEkgKi8KKyAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQ
b2ludCA9PSAweDA1RDU7IC8qIEhFQlJFVyBMRVRURVIgVkFWICovCisgICAgICAgIGNhc2UgMHgw
NTQ4OiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBWTyAqLworICAgICAgICBjYXNlIDB4MDU0
RDogLyogQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0VIICovCisgICAgICAgIGNhc2UgMHgwNTc4
OiAvKiBBUk1FTklBTiBTTUFMTCBMRVRURVIgVk8gKi8KKyAgICAgICAgY2FzZSAweDA1N0Q6IC8q
IEFSTUVOSUFOIFNNQUxMIExFVFRFUiBTRUggKi8KKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91
c0NvZGVQb2ludAorICAgICAgICAgICAgICAgICYmICFpc0FTQ0lJRGlnaXRPclZhbGlkSG9zdENo
YXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICYmICFp
c0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpOworICAg
ICAgICBjYXNlICcuJzoKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0NvZGVQb2ludAorICAgICAgICAgICAgICAgICYm
IGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUoKSkK
KyAgICAgICAgICAgICAgICAmJiAhKGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoY2hhckNvZGUp
IHx8IGlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKGNoYXJDb2RlKSk7CisgICAgfQor
fQorCitzdGF0aWMgdm9pZCB3aGl0ZUxpc3RJRE5TY3JpcHQoY29uc3QgY2hhciogc2NyaXB0TmFt
ZSkKK3sKKyAgICBpbnQzMl90IHNjcmlwdCA9IHVfZ2V0UHJvcGVydHlWYWx1ZUVudW0oVUNIQVJf
U0NSSVBULCBzY3JpcHROYW1lKTsKKyAgICBpZiAoc2NyaXB0ID49IDAgJiYgc2NyaXB0IDwgVVND
UklQVF9DT0RFX0xJTUlUKSB7CisgICAgICAgIHNpemVfdCBpbmRleCA9IHNjcmlwdCAvIDMyOwor
ICAgICAgICB1aW50MzJfdCBtYXNrID0gMSA8PCAoc2NyaXB0ICUgMzIpOworICAgICAgICBJRE5T
Y3JpcHRXaGl0ZUxpc3RbaW5kZXhdIHw9IG1hc2s7CisgICAgfQorfQorCitzdGF0aWMgQk9PTCBy
ZWFkSUROU2NyaXB0V2hpdGVMaXN0RmlsZShOU1N0cmluZyAqZmlsZW5hbWUpCit7CisgICAgaWYg
KCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgRklMRSAqZmlsZSA9IGZvcGVu
KFtmaWxlbmFtZSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dLCAiciIpOworICAgIGlmICghZmls
ZSkKKyAgICAgICAgcmV0dXJuIE5POworICAgIAorICAgIC8vIFJlYWQgYSB3b3JkIGF0IGEgdGlt
ZS4KKyAgICAvLyBBbGxvdyBjb21tZW50cywgc3RhcnRpbmcgd2l0aCAjIGNoYXJhY3RlciB0byB0
aGUgZW5kIG9mIHRoZSBsaW5lLgorICAgIHdoaWxlICgxKSB7CisgICAgICAgIC8vIFNraXAgYSBj
b21tZW50IGlmIHByZXNlbnQuCisgICAgICAgIGlmIChmc2NhbmYoZmlsZSwgIiAjJSpbXlxuXHJd
JSpbXG5ccl0iKSA9PSBFT0YpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICAg
IC8vIFJlYWQgYSBzY3JpcHQgbmFtZSBpZiBwcmVzZW50LgorICAgICAgICBjaGFyIHdvcmRbMzNd
OworICAgICAgICBpbnQgcmVzdWx0ID0gZnNjYW5mKGZpbGUsICIgJTMyW14jIFx0XG5ccl0lKlte
IyBcdFxuXHJdICIsIHdvcmQpOworICAgICAgICBpZiAocmVzdWx0ID09IEVPRikKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAxKSB7CisgICAgICAg
ICAgICAvLyBHb3QgYSB3b3JkLCBtYXAgdG8gc2NyaXB0IGNvZGUgYW5kIHB1dCBpdCBpbnRvIHRo
ZSBhcnJheS4KKyAgICAgICAgICAgIHdoaXRlTGlzdElETlNjcmlwdCh3b3JkKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBmY2xvc2UoZmlsZSk7CisgICAgcmV0dXJuIFlFUzsKK30KKworc3RhdGlj
IEJPT0wgYWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KGNvbnN0IFVDaGFyICpidWZm
ZXIsIGludDMyX3QgbGVuZ3RoKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgZmxhZzsK
KyAgICBkaXNwYXRjaF9vbmNlKCZmbGFnLCBeeworICAgICAgICAvLyBSZWFkIHdoaXRlIGxpc3Qg
ZnJvbSBsaWJyYXJ5LgorICAgICAgICBOU0FycmF5ICpkaXJzID0gTlNTZWFyY2hQYXRoRm9yRGly
ZWN0b3JpZXNJbkRvbWFpbnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU0FsbERvbWFpbnNNYXNrLCBZ
RVMpOworICAgICAgICBpbnQgbnVtRGlycyA9IFtkaXJzIGNvdW50XTsKKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1EaXJzOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChyZWFkSUROU2Ny
aXB0V2hpdGVMaXN0RmlsZShbW2RpcnMgb2JqZWN0QXRJbmRleDppXSBzdHJpbmdCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJJRE5TY3JpcHRXaGl0ZUxpc3QudHh0Il0pKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBjaGFyKiBkZWZhdWx0SUROU2Ny
aXB0V2hpdGVMaXN0WzIwXSA9IHsKKyAgICAgICAgICAgICJDb21tb24iLAorICAgICAgICAgICAg
IkluaGVyaXRlZCIsCisgICAgICAgICAgICAiQXJhYmljIiwKKyAgICAgICAgICAgICJBcm1lbmlh
biIsCisgICAgICAgICAgICAiQm9wb21vZm8iLAorICAgICAgICAgICAgIkNhbmFkaWFuX0Fib3Jp
Z2luYWwiLAorICAgICAgICAgICAgIkRldmFuYWdhcmkiLAorICAgICAgICAgICAgIkRlc2VyZXQi
LAorICAgICAgICAgICAgIkd1amFyYXRpIiwKKyAgICAgICAgICAgICJHdXJtdWtoaSIsCisgICAg
ICAgICAgICAiSGFuZ3VsIiwKKyAgICAgICAgICAgICJIYW4iLAorICAgICAgICAgICAgIkhlYnJl
dyIsCisgICAgICAgICAgICAiSGlyYWdhbmEiLAorICAgICAgICAgICAgIkthdGFrYW5hX09yX0hp
cmFnYW5hIiwKKyAgICAgICAgICAgICJLYXRha2FuYSIsCisgICAgICAgICAgICAiTGF0aW4iLAor
ICAgICAgICAgICAgIlRhbWlsIiwKKyAgICAgICAgICAgICJUaGFpIiwKKyAgICAgICAgICAgICJZ
aSIsCisgICAgICAgIH07CisgICAgICAgIGZvciAoY29uc3QgY2hhciogc2NyaXB0TmFtZSA6IGRl
ZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3QpCisgICAgICAgICAgICB3aGl0ZUxpc3RJRE5TY3JpcHQo
c2NyaXB0TmFtZSk7CisgICAgfSk7CisgICAgCisgICAgaW50MzJfdCBpID0gMDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50OworICAgIHdoaWxlIChpIDwgbGVu
Z3RoKSB7CisgICAgICAgIFVDaGFyMzIgYzsKKyAgICAgICAgVTE2X05FWFQoYnVmZmVyLCBpLCBs
ZW5ndGgsIGMpCisgICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAg
ICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9IHVzY3JpcHRfZ2V0U2NyaXB0KGMsICZlcnJvcik7Cisg
ICAgICAgIGlmIChlcnJvciAhPSBVX1pFUk9fRVJST1IpIHsKKyAgICAgICAgICAgIExPR19FUlJP
UigiZ290IElDVSBlcnJvciB3aGlsZSB0cnlpbmcgdG8gbG9vayBhdCBzY3JpcHRzOiAlZCIsIGVy
cm9yKTsKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2Ny
aXB0IDwgMCkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJnb3QgbmVnYXRpdmUgbnVtYmVyIGZv
ciBzY3JpcHQgY29kZSBmcm9tIElDVTogJWQiLCBzY3JpcHQpOworICAgICAgICAgICAgcmV0dXJu
IE5POworICAgICAgICB9CisgICAgICAgIGlmIChzY3JpcHQgPj0gVVNDUklQVF9DT0RFX0xJTUlU
KQorICAgICAgICAgICAgcmV0dXJuIE5POworCisgICAgICAgIHNpemVfdCBpbmRleCA9IHNjcmlw
dCAvIDMyOworICAgICAgICB1aW50MzJfdCBtYXNrID0gMSA8PCAoc2NyaXB0ICUgMzIpOworICAg
ICAgICBpZiAoIShJRE5TY3JpcHRXaGl0ZUxpc3RbaW5kZXhdICYgbWFzaykpCisgICAgICAgICAg
ICByZXR1cm4gTk87CisgICAgICAgIAorICAgICAgICBpZiAoaXNMb29rYWxpa2VDaGFyYWN0ZXIo
cHJldmlvdXNDb2RlUG9pbnQsIGMpKQorICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAgICBw
cmV2aW91c0NvZGVQb2ludCA9IGM7CisgICAgfQorICAgIHJldHVybiBZRVM7Cit9CisKK3N0YXRp
YyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMoY29uc3QgVUNo
YXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgsIGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChVQ2hh
cik+JiBjaGFyYWN0ZXJJc0FsbG93ZWQpCit7CisgICAgQVNTRVJUKGxlbmd0aCA+IDApOworCisg
ICAgZm9yIChpbnQzMl90IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICBV
Q2hhciBjaCA9IGJ1ZmZlcltpXTsKKyAgICAgICAgCisgICAgICAgIGlmIChjaGFyYWN0ZXJJc0Fs
bG93ZWQoY2gpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICAvLyBP
bmx5IGNoZWNrIHRoZSBzZWNvbmQgbGV2ZWwgZG9tYWluLiBMb3dlciBsZXZlbCByZWdpc3RyYXJz
IG1heSBoYXZlIGRpZmZlcmVudCBydWxlcy4KKyAgICAgICAgaWYgKGNoID09ICcuJykKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworI2RlZmluZSBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hF
UyhzdWZmaXgsIGZ1bmN0aW9uKSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQz
Ml90IHN1ZmZpeExlbmd0aCA9IHNpemVvZihzdWZmaXgpIC8gc2l6ZW9mKHN1ZmZpeFswXSk7IFwK
KyAgICAgICAgaWYgKGxlbmd0aCA+IHN1ZmZpeExlbmd0aCAmJiAwID09IG1lbWNtcChidWZmZXIg
KyBsZW5ndGggLSBzdWZmaXhMZW5ndGgsIHN1ZmZpeCwgc2l6ZW9mKHN1ZmZpeCkpKSBcCisgICAg
ICAgICAgICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhi
dWZmZXIsIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgZnVuY3Rpb24pOyBcCisgICAgfQorCitzdGF0
aWMgYm9vbCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKFVDaGFyIGNoKQoreworICAgIC8v
IE9ubHkgbW9kZXJuIFJ1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93
ZWQuCisgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAw
eDA0NTEgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Cit9CisKK3N0YXRpYyBCT09M
IGFsbENoYXJhY3RlcnNBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQz
Ml90IGxlbmd0aCkKK3sKKyAgICAvLyBTa2lwIHRyYWlsaW5nIGRvdCBmb3Igcm9vdCBkb21haW4u
CisgICAgaWYgKGJ1ZmZlcltsZW5ndGggLSAxXSA9PSAnLicpCisgICAgICAgIGxlbmd0aC0tOwor
CisgICAgLy8gaHR0cDovL2NjdGxkLnJ1L2ZpbGVzL3BkZi9kb2NzL3J1bGVzX3J1LXJmLnBkZgor
ICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1JGW10gPSB7CisgICAgICAgICcuJywKKyAg
ICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDQ0
ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljUkYsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIp
OworCisgICAgLy8gaHR0cDovL3J1c25hbWVzLnJ1L3J1bGVzLnBsCisgICAgc3RhdGljIGNvbnN0
IFVDaGFyIGN5cmlsbGljUlVTW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQwLCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDQzLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgVQorICAgICAgICAweDA0NDEgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBF
UworICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSVVMs
IGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDovL3J1LmZhaXRp
ZC5vcmcvcHJvamVjdHMvbW9zY293L2RvY3VtZW50cy9tb3NrdmEvaWRuCisgICAgc3RhdGljIGNv
bnN0IFVDaGFyIGN5cmlsbGljTU9TS1ZBW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgw
NDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgTworICAgICAgICAweDA0NDEsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBFUworICAgICAgICAweDA0M0EsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAg
ICAgICAweDA0MzIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBWRQorICAgICAgICAweDA0MzAg
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9T
VUZGSVhfTUFUQ0hFUyhjeXJpbGxpY01PU0tWQSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rl
cik7CisKKyAgICAvLyBodHRwOi8vd3d3LmRvdGRldGkucnUvZm9ydXNlci9kb2NzL3JlZ3J1bGVz
LnBocAorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY0RFVElbXSA9IHsKKyAgICAgICAg
Jy4nLAorICAgICAgICAweDA0MzQsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBERQorICAgICAg
ICAweDA0MzUsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBJRQorICAgICAgICAweDA0NDIsIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgICAgICAweDA0MzggIC8vIENZUklMTElDIFNN
QUxMIExFVFRFUiBJCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhj
eXJpbGxpY0RFVEksIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0
cDovL2NvcmVuaWMub3JnIC0gcnVsZXMgbm90IHB1Ymxpc2hlZC4gVGhlIHdvcmQgaXMgUnVzc2lh
biwgc28gb25seSBhbGxvd2luZyBSdXNzaWFuIGF0IHRoaXMgdGltZSwKKyAgICAvLyBhbHRob3Vn
aCB3ZSBtYXkgbmVlZCB0byByZXZpc2UgdGhlIGNoZWNrcyBpZiB0aGlzIGVuZHMgdXAgYmVpbmcg
dXNlZCB3aXRoIG90aGVyIGxhbmd1YWdlcyBzcG9rZW4gaW4gUnVzc2lhLgorICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBjeXJpbGxpY09OTEFZTltdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4
MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAgICAgMHgwNDNELCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICAgICAgMHgwNDNCLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgRUwKKyAgICAgICAgMHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQorICAg
ICAgICAweDA0MzksIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCisgICAgICAgIDB4
MDQzRCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCisgICAgfTsKKyAgICBDSEVDS19SVUxF
U19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY09OTEFZTiwgaXNSdXNzaWFuRG9tYWluTmFtZUNo
YXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBzYW1lIGFzIGFib3ZlLgor
ICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1NBWVRbXSA9IHsKKyAgICAgICAgJy4nLAor
ICAgICAgICAweDA0NDEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUworICAgICAgICAweDA0
MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKKyAgICAgICAgMHgwNDQyICAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgVEUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5
cmlsbGljU0FZVCwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRw
Oi8vcGlyLm9yZy9wcm9kdWN0cy9vcHItZG9tYWluLyAtIHJ1bGVzIG5vdCBwdWJsaXNoZWQuIEFj
Y29yZGluZyB0byB0aGUgcmVnaXN0cnkgc2l0ZSwKKyAgICAvLyB0aGUgaW50ZW5kZWQgYXVkaWVu
Y2UgaXMgIlJ1c3NpYW4gYW5kIG90aGVyIFNsYXZpYy1zcGVha2luZyBtYXJrZXRzIi4KKyAgICAv
LyBDaHJvbWUgYXBwZWFycyB0byBvbmx5IGFsbG93IFJ1c3NpYW4sIHNvIHN0aWNraW5nIHdpdGgg
dGhhdCBmb3Igbm93LgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY09SR1tdID0gewor
ICAgICAgICAnLicsCisgICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8K
KyAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgw
NDMzICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCisgICAgfTsKKyAgICBDSEVDS19SVUxF
U19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY09SRywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJh
Y3Rlcik7CisKKyAgICAvLyBodHRwOi8vY2N0bGQuYnkvcnVsZXMuaHRtbAorICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBjeXJpbGxpY0JFTFtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQz
MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCisgICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIElFCisgICAgICAgIDB4MDQzQiAgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEVMCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxp
Y0JFTCwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gUnVzc2lhbiBhbmQgQnllbG9ydXNzaWFu
IGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4g
KGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAw
eDA0NTYgfHwgY2ggPT0gMHgwNDVFIHx8IGNoID09IDB4MjAxOSB8fCBpc0FTQ0lJRGlnaXQoY2gp
IHx8IGNoID09ICctJzsKKyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly93d3cubmljLmt6L2RvY3Mv
cG9yeWFkb2tfdm5lZHJlbml5YV9rYXpfcnUucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5
cmlsbGljS0FaW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDlCLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKKyAgICAgICAgMHgwNDMwLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgQQorICAgICAgICAweDA0MzcgIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBaRQorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxs
aWNLQVosIFtdKFVDaGFyIGNoKSB7CisgICAgICAgIC8vIEthemFraCBsZXR0ZXJzLCBkaWdpdHMg
YW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYg
Y2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEQ5IHx8IGNoID09IDB4
MDQ5MyB8fCBjaCA9PSAweDA0OUIgfHwgY2ggPT0gMHgwNEEzIHx8IGNoID09IDB4MDRFOSB8fCBj
aCA9PSAweDA0QjEgfHwgY2ggPT0gMHgwNEFGIHx8IGNoID09IDB4MDRCQiB8fCBjaCA9PSAweDA0
NTYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBo
dHRwOi8vdWFuaWMubmV0L2RvY3MvZG9jdW1lbnRzLXVrci9SdWxlcyUyMG9mJTIwVUtSX3Y0LjAu
cGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljVUtSW10gPSB7CisgICAgICAgICcu
JywKKyAgICAgICAgMHgwNDQzLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQorICAgICAgICAw
eDA0M0EsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICAgICAweDA0NDAgIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklY
X01BVENIRVMoY3lyaWxsaWNVS1IsIFtdKFVDaGFyIGNoKSB7CisgICAgICAgIC8vIFJ1c3NpYW4g
YW5kIFVrcmFpbmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAg
ICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0
NTEgfHwgY2ggPT0gMHgwNDkxIHx8IGNoID09IDB4MDQwNCB8fCBjaCA9PSAweDA0NTYgfHwgY2gg
PT0gMHgwNDU3IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisg
ICAgLy8gaHR0cDovL3d3dy5ybmlkcy5ycy9kYXRhL0RPS1VNRU5USS9pZG4tc3JiLXBvbGljeS10
ZXJtc29mdXNlLXYxLjQtZW5nLnBkZgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1NS
QltdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEVTCisgICAgICAgIDB4MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisg
ICAgICAgIDB4MDQzMSAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCisgICAgfTsKKyAgICBD
SEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1NSQiwgW10oVUNoYXIgY2gpIHsK
KyAgICAgICAgLy8gU2VyYmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dl
ZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDM4KSB8fCAoY2gg
Pj0gMHgwNDNBICYmIGNoIDw9IDB4MDQ0OCkgfHwgY2ggPT0gMHgwNDUyIHx8IGNoID09IDB4MDQ1
OCB8fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QiB8fCBjaCA9
PSAweDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAg
ICAvLyBodHRwOi8vbWFybmV0Lm1rL2RvYy9wcmF2aWxuaWstbWstbWtkLnBkZgorICAgIHN0YXRp
YyBjb25zdCBVQ2hhciBjeXJpbGxpY01LRFtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4
MDQzQywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCisgICAgICAgIDB4MDQzQSwgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEtBCisgICAgICAgIDB4MDQzNCAgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIERFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJp
bGxpY01LRCwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gTWFjZWRvbmlhbiBsZXR0ZXJzLCBk
aWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0
MzAgJiYgY2ggPD0gMHgwNDM4KSB8fCAoY2ggPj0gMHgwNDNBICYmIGNoIDw9IDB4MDQ0OCkgfHwg
Y2ggPT0gMHgwNDUzIHx8IGNoID09IDB4MDQ1NSB8fCBjaCA9PSAweDA0NTggfHwgY2ggPT0gMHgw
NDU5IHx8IGNoID09IDB4MDQ1QSB8fCBjaCA9PSAweDA0NUMgfHwgY2ggPT0gMHgwNDVGIHx8IGlz
QVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0cHM6Ly93
d3cubW9uLm1uL2NzLworICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY01PTltdID0gewor
ICAgICAgICAnLicsCisgICAgICAgIDB4MDQzQywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVN
CisgICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAgICAgMHgw
NDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICB9OworICAgIENIRUNLX1JVTEVT
X0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9OLCBbXShVQ2hhciBjaCkgeworICAgICAgICAv
LyBNb25nb2xpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisgICAg
ICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUx
IHx8IGNoID09IDB4MDRFOSB8fCBjaCA9PSAweDA0QUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBj
aCA9PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBOb3QgYSBrbm93biB0b3AgbGV2ZWwgZG9tYWlu
IHdpdGggc3BlY2lhbCBydWxlcy4KKyAgICByZXR1cm4gTk87Cit9CisKKy8vIFJldHVybiB2YWx1
ZSBvZiBuaWwgbWVhbnMgbm8gbWFwcGluZyBpcyBuZWNlc3NhcnkuCisvLyBJZiBtYWtlU3RyaW5n
IGlzIE5PLCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHNlbGYgdG8gaW5kaWNh
dGUgbWFwcGluZyBpcyBuZWNlc3NhcnkuCisvLyBJZiBtYWtlU3RyaW5nIGlzIFlFUywgdGhlbiBy
ZXR1cm4gdmFsdWUgaXMgZWl0aGVyIG5pbCBvciB0aGUgbWFwcGVkIHN0cmluZy4KK3N0YXRpYyBO
U1N0cmluZyAqbWFwSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSBy
YW5nZSwgQk9PTCBlbmNvZGUsIEJPT0wgbWFrZVN0cmluZywgQk9PTCAqZXJyb3IpCit7CisgICAg
aWYgKHJhbmdlLmxlbmd0aCA+IEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RIKQorICAgICAgICByZXR1
cm4gbmlsOworICAgIAorICAgIGlmICghW3N0cmluZyBsZW5ndGhdKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIAorICAgIFVDaGFyIHNvdXJjZUJ1ZmZlcltIT1NUX05BTUVfQlVGRkVSX0xFTkdU
SF07CisgICAgVUNoYXIgZGVzdGluYXRpb25CdWZmZXJbSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEhd
OworICAgIAorICAgIGlmIChlbmNvZGUgJiYgW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiJSIgb3B0
aW9uczpOU0xpdGVyYWxTZWFyY2ggcmFuZ2U6cmFuZ2VdLmxvY2F0aW9uICE9IE5TTm90Rm91bmQp
IHsKKyAgICAgICAgTlNTdHJpbmcgKnN1YnN0cmluZyA9IFtzdHJpbmcgc3Vic3RyaW5nV2l0aFJh
bmdlOnJhbmdlXTsKKyAgICAgICAgc3Vic3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZVUkxD
cmVhdGVTdHJpbmdCeVJlcGxhY2luZ1BlcmNlbnRFc2NhcGVzKG51bGxwdHIsIChDRlN0cmluZ1Jl
ZilzdWJzdHJpbmcsIENGU1RSKCIiKSkpOworICAgICAgICBpZiAoc3Vic3RyaW5nKSB7CisgICAg
ICAgICAgICBzdHJpbmcgPSBzdWJzdHJpbmc7CisgICAgICAgICAgICByYW5nZSA9IE5TTWFrZVJh
bmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaW50
IGxlbmd0aCA9IHJhbmdlLmxlbmd0aDsKKyAgICBbc3RyaW5nIGdldENoYXJhY3RlcnM6c291cmNl
QnVmZmVyIHJhbmdlOnJhbmdlXTsKKyAgICAKKyAgICBVRXJyb3JDb2RlIHVlcnJvciA9IFVfWkVS
T19FUlJPUjsKKyAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lO
SVRJQUxJWkVSOworICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IChlbmNvZGUg
PyB1aWRuYV9uYW1lVG9BU0NJSSA6IHVpZG5hX25hbWVUb1VuaWNvZGUpKCZVUkxQYXJzZXI6Omlu
dGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpLCBzb3VyY2VCdWZmZXIsIGxlbmd0aCwg
ZGVzdGluYXRpb25CdWZmZXIsIEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RILCAmcHJvY2Vzc2luZ0Rl
dGFpbHMsICZ1ZXJyb3IpOworICAgIGlmIChsZW5ndGggJiYgKFVfRkFJTFVSRSh1ZXJyb3IpIHx8
IHByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykpIHsKKyAgICAgICAgKmVycm9yID0gWUVTOworICAg
ICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICAKKyAgICBpZiAobnVtQ2hhcmFjdGVyc0NvbnZl
cnRlZCA9PSBsZW5ndGggJiYgIW1lbWNtcChzb3VyY2VCdWZmZXIsIGRlc3RpbmF0aW9uQnVmZmVy
LCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAg
ICBpZiAoIWVuY29kZSAmJiAhYWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KGRlc3Rp
bmF0aW9uQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKSAmJiAhYWxsQ2hhcmFjdGVyc0Fs
bG93ZWRCeVRMRFJ1bGVzKGRlc3RpbmF0aW9uQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVk
KSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gbWFrZVN0cmluZyA/IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczpkZXN0aW5hdGlvbkJ1ZmZlciBsZW5ndGg6bnVt
Q2hhcmFjdGVyc0NvbnZlcnRlZF0gOiBzdHJpbmc7Cit9CisKK3N0YXRpYyBCT09MIGhvc3ROYW1l
TmVlZHNEZWNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBC
T09MICplcnJvcikKK3sKKyAgICByZXR1cm4gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBy
YW5nZSwgTk8sIE5PLCBlcnJvcikgIT0gbmlsOworfQorIAorc3RhdGljIEJPT0wgaG9zdE5hbWVO
ZWVkc0VuY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJP
T0wgKmVycm9yKQoreworICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJh
bmdlLCBZRVMsICBOTywgZXJyb3IpICE9IG5pbDsKK30KKworc3RhdGljIE5TU3RyaW5nICpkZWNv
ZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQorewor
ICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0
aFJhbmdlKHN0cmluZywgcmFuZ2UsIE5PLCBZRVMsICZlcnJvcik7CisgICAgaWYgKGVycm9yKQor
ICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9
CisKK3N0YXRpYyBOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0
cmluZywgTlNSYW5nZSByYW5nZSkKK3sKKyAgICBCT09MIGVycm9yID0gTk87CisgICAgTlNTdHJp
bmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBZRVMsIFlFUywg
JmVycm9yKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJu
ICFob3N0ID8gc3RyaW5nIDogaG9zdDsKK30KKworTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5T
U3RyaW5nICpzdHJpbmcpCit7CisgICAgQk9PTCBlcnJvciA9IE5POworICAgIE5TU3RyaW5nICpo
b3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5n
IGxlbmd0aF0pLCBOTywgWUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQorCitOU1N0cmlu
ZyAqZW5jb2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIGVycm9yID0g
Tk87CisgICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIE5T
TWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSksIFlFUywgWUVTLCAmZXJyb3IpOworICAgIGlm
IChlcnJvcikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcg
OiBob3N0OworfQorCitzdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKE5T
U3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4m
IGFycmF5LCBCT09MIGVuY29kZSkKK3sKKyAgICAvLyBHZW5lcmFsbHksIHdlIHdhbnQgdG8gb3B0
aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIG9uZSBob3N0IG5hbWUgdGhhdCBkb2Vz
IG5vdCBuZWVkIG1hcHBpbmcuCisgICAgLy8gVGhlcmVmb3JlLCB3ZSB1c2UgbmlsIHRvIGluZGlj
YXRlIG5vIG1hcHBpbmcgaGVyZSBhbmQgYW4gZW1wdHkgYXJyYXkgdG8gaW5kaWNhdGUgZXJyb3Iu
CisKKyAgICBCT09MIGVycm9yID0gTk87CisgICAgQk9PTCBuZWVkc01hcHBpbmcgPSBlbmNvZGUg
PyBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgJmVycm9yKSA6
IGhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCAmZXJyb3IpOwor
ICAgIGlmICghZXJyb3IgJiYgIW5lZWRzTWFwcGluZykKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIGlmICghYXJyYXkpCisgICAgICAgIGFycmF5ID0gYWRvcHROUyhbTlNNdXRhYmxlQXJyYXkg
bmV3XSk7CisKKyAgICBpZiAoIWVycm9yKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU1Zh
bHVlIHZhbHVlV2l0aFJhbmdlOnJhbmdlXV07Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5n
ZXNUaGF0TmVlZEVuY29kaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFp
blB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQoreworICAgIHJldHVybiBjb2xsZWN0UmFuZ2Vz
VGhhdE5lZWRNYXBwaW5nKHN0cmluZywgcmFuZ2UsIGFycmF5LCBZRVMpOworfQorCitzdGF0aWMg
dm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWREZWNvZGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1Jh
bmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKK3sKKyAgICByZXR1
cm4gY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhzdHJpbmcsIHJhbmdlLCBhcnJheSwgTk8p
OworfQorCitzdGF0aWMgdm9pZCBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmlu
ZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmLCBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKK3sKKyAgICAvLyBJbiBhIG1haWx0bzogVVJMLCBo
b3N0IG5hbWVzIGNvbWUgYWZ0ZXIgYSAnQCcgY2hhcmFjdGVyIGFuZCBlbmQgd2l0aCBhICc+JyBv
ciAnLCcgb3IgJz8nIGNoYXJhY3Rlci4KKyAgICAvLyBTa2lwIHF1b3RlZCBzdHJpbmdzIHNvIHRo
YXQgY2hhcmFjdGVycyBpbiB0aGVtIGRvbid0IGNvbmZ1c2UgdXMuCisgICAgLy8gV2hlbiB3ZSBm
aW5kIGEgJz8nIGNoYXJhY3Rlciwgd2UgYXJlIHBhc3QgdGhlIHBhcnQgb2YgdGhlIFVSTCB0aGF0
IGNvbnRhaW5zIGhvc3QgbmFtZXMuCisgICAgCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3ROYW1lT3JTdHJpbmdTdGFydENoYXJhY3RlcnMg
PSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIlwi
QD8iXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0
Pj4gaG9zdE5hbWVFbmRDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdp
dGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCI+LD8iXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gcXVvdGVkU3RyaW5nQ2hhcmFjdGVycyA9IFtOU0No
YXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiXCJcXCJdOwor
ICAgIAorICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IFtzdHJpbmcgbGVuZ3RoXTsKKyAgICBO
U1JhbmdlIHJlbWFpbmluZyA9IE5TTWFrZVJhbmdlKDAsIHN0cmluZ0xlbmd0aCk7CisgICAgCisg
ICAgd2hpbGUgKDEpIHsKKyAgICAgICAgLy8gRmluZCBzdGFydCBvZiBob3N0IG5hbWUgb3Igb2Yg
cXVvdGVkIHN0cmluZy4KKyAgICAgICAgTlNSYW5nZSBob3N0TmFtZU9yU3RyaW5nU3RhcnQgPSBb
c3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhvc3ROYW1lT3JTdHJpbmdTdGFydENoYXJh
Y3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107CisgICAgICAgIGlm
IChob3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB1bmljaGFyIGMgPSBbc3RyaW5nIGNoYXJhY3RlckF0SW5k
ZXg6aG9zdE5hbWVPclN0cmluZ1N0YXJ0LmxvY2F0aW9uXTsKKyAgICAgICAgcmVtYWluaW5nLmxv
Y2F0aW9uID0gTlNNYXhSYW5nZShob3N0TmFtZU9yU3RyaW5nU3RhcnQpOworICAgICAgICByZW1h
aW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWluaW5nLmxvY2F0aW9uOworICAgICAg
ICAKKyAgICAgICAgaWYgKGMgPT0gJz8nKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAK
KyAgICAgICAgaWYgKGMgPT0gJ0AnKSB7CisgICAgICAgICAgICAvLyBGaW5kIGVuZCBvZiBob3N0
IG5hbWUuCisgICAgICAgICAgICB1bnNpZ25lZCBob3N0TmFtZVN0YXJ0ID0gcmVtYWluaW5nLmxv
Y2F0aW9uOworICAgICAgICAgICAgTlNSYW5nZSBob3N0TmFtZUVuZCA9IFtzdHJpbmcgcmFuZ2VP
ZkNoYXJhY3RlckZyb21TZXQ6aG9zdE5hbWVFbmRDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlv
bnM6MCByYW5nZTpyZW1haW5pbmddOworICAgICAgICAgICAgQk9PTCBkb25lOworICAgICAgICAg
ICAgaWYgKGhvc3ROYW1lRW5kLmxvY2F0aW9uID09IE5TTm90Rm91bmQpIHsKKyAgICAgICAgICAg
ICAgICBob3N0TmFtZUVuZC5sb2NhdGlvbiA9IHN0cmluZ0xlbmd0aDsKKyAgICAgICAgICAgICAg
ICBkb25lID0gWUVTOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZW1h
aW5pbmcubG9jYXRpb24gPSBob3N0TmFtZUVuZC5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICBy
ZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWluaW5nLmxvY2F0aW9uOworICAg
ICAgICAgICAgICAgIGRvbmUgPSBOTzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgLy8gUHJvY2VzcyBob3N0IG5hbWUgcmFuZ2UuCisgICAgICAgICAgICBmKHN0cmlu
ZywgTlNNYWtlUmFuZ2UoaG9zdE5hbWVTdGFydCwgaG9zdE5hbWVFbmQubG9jYXRpb24gLSBob3N0
TmFtZVN0YXJ0KSwgYXJyYXkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZG9uZSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBTa2lwIHF1b3RlZCBzdHJpbmcuCisgICAgICAgICAgICBBU1NFUlQoYyA9PSAnIicpOworICAg
ICAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgICAgICBOU1JhbmdlIGVzY2FwZWRDaGFy
YWN0ZXJPclN0cmluZ0VuZCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6cXVvdGVk
U3RyaW5nQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5nXTsK
KyAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kLmxvY2F0aW9u
ID09IE5TTm90Rm91bmQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgICAgIGMgPSBbc3RyaW5nIGNoYXJhY3RlckF0SW5kZXg6ZXNjYXBlZENoYXJhY3Rlck9yU3Ry
aW5nRW5kLmxvY2F0aW9uXTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmcubG9jYXRpb24gPSBO
U01heFJhbmdlKGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCk7CisgICAgICAgICAgICAgICAg
cmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xlbmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgdGhlIGVuZCBvZiB0
aGUgc3RyaW5nLCB0aGVuIGJyZWFrIGZyb20gdGhlIHN0cmluZyBsb29wIGJhY2sgdG8gdGhlIGhv
c3QgbmFtZSBsb29wLgorICAgICAgICAgICAgICAgIGlmIChjID09ICciJykKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gU2tp
cCBlc2NhcGVkIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICBBU1NFUlQoYyA9PSAnXFwnKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXJlbWFpbmluZy5sZW5ndGgpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiArPSAxOwor
ICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggLT0gMTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9V
UkxTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywgU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiwg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCit7CisgICAgLy8gRmluZCBob3N0bmFt
ZXMuIFRvbyBiYWQgd2UgY2FuJ3QgdXNlIGFueSByZWFsIFVSTC1wYXJzaW5nIGNvZGUgdG8gZG8g
dGhpcywKKyAgICAvLyBidXQgd2UgaGF2ZSB0byBkbyBpdCBiZWZvcmUgZG9pbmcgYWxsIHRoZSAl
LWVzY2FwaW5nLCBhbmQgdGhpcyBpcyB0aGUgb25seQorICAgIC8vIGNvZGUgd2UgaGF2ZSB0aGF0
IHBhcnNlcyBtYWlsdG8gVVJMcyBhbnl3YXkuCisgICAgCisgICAgLy8gTWF5YmUgd2Ugc2hvdWxk
IGltcGxlbWVudCB0aGlzIHVzaW5nIGEgY2hhcmFjdGVyIGJ1ZmZlciBpbnN0ZWFkPworICAgIAor
ICAgIGlmIChwcm90b2NvbElzKHN0cmluZywgIm1haWx0byIpKSB7CisgICAgICAgIGFwcGx5SG9z
dE5hbWVGdW5jdGlvblRvTWFpbFRvVVJMU3RyaW5nKHN0cmluZywgZiwgYXJyYXkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIEZpbmQgdGhlIGhvc3QgbmFtZSBpbiBhIGhp
ZXJhcmNoaWNhbCBVUkwuCisgICAgLy8gSXQgY29tZXMgYWZ0ZXIgYSAiOi8vIiBzZXF1ZW5jZSwg
d2l0aCBzY2hlbWUgY2hhcmFjdGVycyBwcmVjZWRpbmcuCisgICAgLy8gSWYgZW5kcyB3aXRoIHRo
ZSBlbmQgb2YgdGhlIHN0cmluZyBvciBhICI6IiwgIi8iLCBvciBhICI/Ii4KKyAgICAvLyBJZiB0
aGVyZSBpcyBhICJAIiBjaGFyYWN0ZXIsIHRoZSBob3N0IHBhcnQgaXMganVzdCB0aGUgcGFydCBh
ZnRlciB0aGUgIkAiLgorICAgIE5TUmFuZ2Ugc2VwYXJhdG9yUmFuZ2UgPSBbc3RyaW5nIHJhbmdl
T2ZTdHJpbmc6QCI6Ly8iXTsKKyAgICBpZiAoc2VwYXJhdG9yUmFuZ2UubG9jYXRpb24gPT0gTlNO
b3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIC8vIENoZWNrIHRoYXQgYWxsIGNo
YXJhY3RlcnMgYmVmb3JlIHRoZSA6Ly8gYXJlIHZhbGlkIHNjaGVtZSBjaGFyYWN0ZXJzLgorICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBub25TY2hl
bWVDaGFyYWN0ZXJzID0gW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVy
c0luU3RyaW5nOkAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5ejAxMjM0NTY3ODkrLS4iXSBpbnZlcnRlZFNldF07CisgICAgaWYgKFtzdHJpbmcgcmFu
Z2VPZkNoYXJhY3RlckZyb21TZXQ6bm9uU2NoZW1lQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRp
b25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgc2VwYXJhdG9yUmFuZ2UubG9jYXRpb24pXS5sb2Nh
dGlvbiAhPSBOU05vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdW5zaWduZWQg
c3RyaW5nTGVuZ3RoID0gW3N0cmluZyBsZW5ndGhdOworICAgIAorICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBob3N0VGVybWluYXRvcnMgPSBbTlND
aGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIjovPyMiXTsK
KyAgICAKKyAgICAvLyBTdGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLgorICAgIHVuc2lnbmVkIGF1
dGhvcml0eVN0YXJ0ID0gTlNNYXhSYW5nZShzZXBhcmF0b3JSYW5nZSk7CisgICAgCisgICAgLy8g
RmluZCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIuCisgICAgTlNSYW5nZSBob3N0TmFtZVRlcm1pbmF0
b3IgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhvc3RUZXJtaW5hdG9ycy5nZXQo
KS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoYXV0aG9yaXR5U3RhcnQsIHN0cmlu
Z0xlbmd0aCAtIGF1dGhvcml0eVN0YXJ0KV07CisgICAgdW5zaWduZWQgaG9zdE5hbWVFbmQgPSBo
b3N0TmFtZVRlcm1pbmF0b3IubG9jYXRpb24gPT0gTlNOb3RGb3VuZCA/IHN0cmluZ0xlbmd0aCA6
IGhvc3ROYW1lVGVybWluYXRvci5sb2NhdGlvbjsKKyAgICAKKyAgICAvLyBGaW5kICJAIiBmb3Ig
dGhlIHN0YXJ0IG9mIHRoZSBob3N0IG5hbWUuCisgICAgTlNSYW5nZSB1c2VySW5mb1Rlcm1pbmF0
b3IgPSBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCJAIiBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFu
Z2UoYXV0aG9yaXR5U3RhcnQsIGhvc3ROYW1lRW5kIC0gYXV0aG9yaXR5U3RhcnQpXTsKKyAgICB1
bnNpZ25lZCBob3N0TmFtZVN0YXJ0ID0gdXNlckluZm9UZXJtaW5hdG9yLmxvY2F0aW9uID09IE5T
Tm90Rm91bmQgPyBhdXRob3JpdHlTdGFydCA6IE5TTWF4UmFuZ2UodXNlckluZm9UZXJtaW5hdG9y
KTsKKyAgICAKKyAgICByZXR1cm4gZihzdHJpbmcsIE5TTWFrZVJhbmdlKGhvc3ROYW1lU3RhcnQs
IGhvc3ROYW1lRW5kIC0gaG9zdE5hbWVTdGFydCksIGFycmF5KTsKK30KKworc3RhdGljIFJldGFp
blB0cjxOU1N0cmluZz4gbWFwSG9zdE5hbWVzKE5TU3RyaW5nICpzdHJpbmcsIEJPT0wgZW5jb2Rl
KQoreworICAgIC8vIEdlbmVyYWxseSwgd2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNhc2Ug
d2hlcmUgdGhlcmUgaXMgb25lIGhvc3QgbmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGluZy4K
KyAgICAKKyAgICBpZiAoZW5jb2RlICYmIFtzdHJpbmcgY2FuQmVDb252ZXJ0ZWRUb0VuY29kaW5n
Ok5TQVNDSUlTdHJpbmdFbmNvZGluZ10pCisgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgCisg
ICAgLy8gTWFrZSBhIGxpc3Qgb2YgcmFuZ2VzIHRoYXQgYWN0dWFsbHkgbmVlZCBtYXBwaW5nLgor
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gaG9zdE5hbWVSYW5nZXM7CisgICAgU3RyaW5n
UmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiA9IGVuY29kZSA/IGNvbGxlY3RSYW5nZXNUaGF0TmVlZEVu
Y29kaW5nIDogY29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2Rpbmc7CisgICAgYXBwbHlIb3N0TmFt
ZUZ1bmN0aW9uVG9VUkxTdHJpbmcoc3RyaW5nLCBmLCBob3N0TmFtZVJhbmdlcyk7CisgICAgaWYg
KCFob3N0TmFtZVJhbmdlcykKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKworICAgIGlmICghW2hv
c3ROYW1lUmFuZ2VzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICAvLyBE
byB0aGUgbWFwcGluZy4KKyAgICBhdXRvIG11dGFibGVDb3B5ID0gYWRvcHROUyhbc3RyaW5nIG11
dGFibGVDb3B5XSk7CisgICAgdW5zaWduZWQgaSA9IFtob3N0TmFtZVJhbmdlcyBjb3VudF07Cisg
ICAgd2hpbGUgKGktLSkgeworICAgICAgICBOU1JhbmdlIGhvc3ROYW1lUmFuZ2UgPSBbW2hvc3RO
YW1lUmFuZ2VzIG9iamVjdEF0SW5kZXg6aV0gcmFuZ2VWYWx1ZV07CisgICAgICAgIE5TU3RyaW5n
ICptYXBwZWRIb3N0TmFtZSA9IGVuY29kZSA/IGVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKHN0cmlu
ZywgaG9zdE5hbWVSYW5nZSkgOiBkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIGhvc3RO
YW1lUmFuZ2UpOworICAgICAgICBbbXV0YWJsZUNvcHkgcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdl
Omhvc3ROYW1lUmFuZ2Ugd2l0aFN0cmluZzptYXBwZWRIb3N0TmFtZV07CisgICAgfQorICAgIHJl
dHVybiBtdXRhYmxlQ29weTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5n
QnlUcmltbWluZ1doaXRlc3BhY2UoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBhdXRvIHRyaW1t
ZWQgPSBhZG9wdE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsKKyAgICBDRlN0cmluZ1RyaW1XaGl0
ZXNwYWNlKChfX2JyaWRnZSBDRk11dGFibGVTdHJpbmdSZWYpdHJpbW1lZC5nZXQoKSk7CisgICAg
cmV0dXJuIHRyaW1tZWQ7Cit9CisKK05TVVJMICpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJC
ZWZvcmVDb21wb25lbnQoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudCkK
K3sKKyAgICBpZiAoIVVSTCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBDRlJhbmdl
IGZyYWdSZyA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJl
ZilVUkwsIGNvbXBvbmVudCwgbnVsbHB0cik7CisgICAgaWYgKGZyYWdSZy5sb2NhdGlvbiA9PSBr
Q0ZOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFVSTDsKKworICAgIFZlY3RvcjxVSW50OCwgVVJM
X0JZVEVTX0JVRkZFUl9MRU5HVEg+IHVybEJ5dGVzKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsK
KyAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCB1cmxCeXRlcy5kYXRhKCksIHVybEJ5dGVzLnNpemUoKSk7CisgICAgaWYgKG51bUJ5dGVz
ID09IC0xKSB7CisgICAgICAgIG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAgICAgICAgdXJsQnl0ZXMuZ3JvdyhudW1CeXRlcyk7
CisgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgdXJsQnl0ZXMu
ZGF0YSgpLCBudW1CeXRlcyk7CisgICAgfQorCisgICAgQ0ZVUkxSZWYgcmVzdWx0ID0gQ0ZVUkxD
cmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24g
LSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpOworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5k
YXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBu
dWxscHRyKTsKKyAgICAgICAgCisgICAgcmV0dXJuIHJlc3VsdCA/IENGQnJpZGdpbmdSZWxlYXNl
KHJlc3VsdCkgOiBVUkw7Cit9CisKK3N0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ1Jlc291cmNl
U3BlY2lmaWVyKE5TVVJMICpVUkwpCit7CisgICAgcmV0dXJuIFVSTEJ5VHJ1bmNhdGluZ09uZUNo
YXJhY3RlckJlZm9yZUNvbXBvbmVudChVUkwsIGtDRlVSTENvbXBvbmVudFJlc291cmNlU3BlY2lm
aWVyKTsKK30KKworTlNVUkwgKlVSTFdpdGhEYXRhKE5TRGF0YSAqZGF0YSwgTlNVUkwgKmJhc2VV
UkwpCit7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIE5T
VVJMICpyZXN1bHQgPSBuaWw7CisgICAgc2l6ZV90IGxlbmd0aCA9IFtkYXRhIGxlbmd0aF07Cisg
ICAgaWYgKGxlbmd0aCA+IDApIHsKKyAgICAgICAgLy8gd29yayBhcm91bmQgPHJkYXI6Ly80NDcw
NzcxPjogQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyguLiwgVFJVRSkgZG9lc24ndCBy
ZW1vdmUgbm9uLXBhdGggY29tcG9uZW50cy4KKyAgICAgICAgYmFzZVVSTCA9IFVSTEJ5UmVtb3Zp
bmdSZXNvdXJjZVNwZWNpZmllcihiYXNlVVJMKTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IFVJ
bnQ4ICpieXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IFVJbnQ4Kj4oW2RhdGEgYnl0ZXNdKTsKKyAg
ICAgICAgCisgICAgICAgIC8vIENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMgd291bGQg
Y29tcGxhaW4gdG8gY29uc29sZSBpZiB3ZSBwYXNzZWQgYSBwYXRoIHRvIGl0LgorICAgICAgICBp
ZiAoYnl0ZXNbMF0gPT0gJy8nICYmICFiYXNlVVJMKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICAgICAgCisgICAgICAgIC8vIE5PVEU6IFdlIHVzZSBVVEYtOCBoZXJlIHNpbmNlIHRoaXMg
ZW5jb2RpbmcgaXMgdXNlZCB3aGVuIGNvbXB1dGluZyBzdHJpbmdzIHdoZW4gcmV0dXJuaW5nIFVS
TCBjb21wb25lbnRzCisgICAgICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBhdGgpLiBIb3dl
dmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVURi04IHNlcXVl
bmNlcywgd2hpY2gKKyAgICAgICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmlu
ZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBzaGlmdC1qaXMsIHNvIHdl
IGZhbGwgYmFjaworICAgICAgICAvLyBvbnRvIHVzaW5nIElTTyBMYXRpbiAxIGluIHRob3NlIGNh
c2VzLgorICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29s
dXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlFUykpOworICAgICAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRl
QWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5j
b2RpbmdJU09MYXRpbjEsIChfX2JyaWRnZSBDRlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CitzdGF0aWMgTlNEYXRhICpkYXRhV2l0aFVzZXJUeXBlZFN0cmlu
ZyhOU1N0cmluZyAqc3RyaW5nKQoreworICAgIE5TRGF0YSAqdXNlclR5cGVkRGF0YSA9IFtzdHJp
bmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIEFTU0VSVCh1
c2VyVHlwZWREYXRhKTsKKyAgICAKKyAgICBjb25zdCBVSW50OCogaW5CeXRlcyA9IHN0YXRpY19j
YXN0PGNvbnN0IFVJbnQ4ICo+KFt1c2VyVHlwZWREYXRhIGJ5dGVzXSk7CisgICAgaW50IGluTGVu
Z3RoID0gW3VzZXJUeXBlZERhdGEgbGVuZ3RoXTsKKyAgICBpZiAoIWluTGVuZ3RoKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIAorICAgIGNoYXIqIG91dEJ5dGVzID0gc3RhdGljX2Nhc3Q8Y2hh
ciAqPihtYWxsb2MoaW5MZW5ndGggKiAzKSk7IC8vIGxhcmdlIGVub3VnaCB0byAlLWVzY2FwZSBl
dmVyeSBjaGFyYWN0ZXIKKyAgICBjaGFyKiBwID0gb3V0Qnl0ZXM7CisgICAgaW50IG91dExlbmd0
aCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbkxlbmd0aDsgaSsrKSB7CisgICAgICAg
IFVJbnQ4IGMgPSBpbkJ5dGVzW2ldOworICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPj0gMHg3
ZikgeworICAgICAgICAgICAgKnArKyA9ICclJzsKKyAgICAgICAgICAgICpwKysgPSB1cHBlck5p
YmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKKyAgICAgICAgICAgICpwKysgPSBsb3dlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChjKTsKKyAgICAgICAgICAgIG91dExlbmd0aCArPSAzOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgKnArKyA9IGM7CisgICAgICAgICAgICBvdXRMZW5ndGgrKzsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gW05TRGF0YSBkYXRhV2l0aEJ5dGVz
Tm9Db3B5Om91dEJ5dGVzIGxlbmd0aDpvdXRMZW5ndGhdOyAvLyBhZG9wdHMgb3V0Qnl0ZXMKK30K
KworTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNVUkwg
Km5zVVJMKQoreworICAgIGlmICghc3RyaW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
YXV0byBtYXBwZWRTdHJpbmcgPSBtYXBIb3N0TmFtZXMoc3RyaW5nQnlUcmltbWluZ1doaXRlc3Bh
Y2Uoc3RyaW5nKS5nZXQoKSwgWUVTKTsKKyAgICBpZiAoIW1hcHBlZFN0cmluZykKKyAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgIC8vIExldCdzIGNoZWNrIHdoZXRoZXIgdGhlIFVSTCBpcyBib2d1
cy4KKyAgICBVUkwgdXJsIHsgVVJMIHsgbnNVUkwgfSwgbWFwcGVkU3RyaW5nLmdldCgpIH07Cisg
ICAgaWYgKCF1cmwuY3JlYXRlQ0ZVUkwoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MDU3Cisg
ICAgLy8gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIHVybC5jcmVhdGVDRlVSTCBpbnN0ZWFkIG9m
IHVzaW5nIGRpcmVjdGx5IENGVVJMIHBhcnNpbmcgcm91dGluZXMuCisgICAgTlNEYXRhICpkYXRh
ID0gZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcobWFwcGVkU3RyaW5nLmdldCgpKTsKKyAgICBpZiAo
IWRhdGEpCisgICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOworCisgICAg
cmV0dXJuIFVSTFdpdGhEYXRhKGRhdGEsIG5zVVJMKTsKK30KKworTlNVUkwgKlVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmdEZXByZWNhdGVkKE5TU3RyaW5nICpzdHJpbmcsIE5TVVJMICpVUkwpCit7Cisg
ICAgaWYgKCFzdHJpbmcpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU1VSTCAqcmVzdWx0
ID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhzdHJpbmcsIFVSTCk7CisgICAgaWYgKCFyZXN1bHQp
IHsKKyAgICAgICAgTlNEYXRhICpyZXN1bHREYXRhID0gZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmco
c3RyaW5nKTsKKyAgICAgICAgaWYgKCFyZXN1bHREYXRhKQorICAgICAgICAgICAgcmV0dXJuIFtO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07CisgICAgICAgIHJlc3VsdCA9IFVSTFdpdGhEYXRhKHJl
c3VsdERhdGEsIFVSTCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGlj
IEJPT0wgaGFzUXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKE5TVVJMICpVUkwpCit7CisgICAg
Q0ZSYW5nZSByYW5nZVdpdGhTZXBhcmF0b3JzOworICAgIENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29t
cG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGtDRlVSTENvbXBvbmVudFF1ZXJ5LCAmcmFu
Z2VXaXRoU2VwYXJhdG9ycyk7CisgICAgaWYgKHJhbmdlV2l0aFNlcGFyYXRvcnMubG9jYXRpb24g
IT0ga0NGTm90Rm91bmQgJiYgcmFuZ2VXaXRoU2VwYXJhdG9ycy5sZW5ndGggPT0gMSkKKyAgICAg
ICAgcmV0dXJuIFlFUzsKKworICAgIHJldHVybiBOTzsKK30KKworTlNEYXRhICpkYXRhRm9yVVJM
Q29tcG9uZW50VHlwZShOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50VHlw
ZSkKK3sKKyAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBhbGxCeXRl
c0J1ZmZlcihVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7CisgICAgQ0ZJbmRleCBieXRlc0ZpbGxl
ZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYWxsQnl0ZXNCdWZmZXIu
ZGF0YSgpLCBhbGxCeXRlc0J1ZmZlci5zaXplKCkpOworICAgIGlmIChieXRlc0ZpbGxlZCA9PSAt
MSkgeworICAgICAgICBDRkluZGV4IGJ5dGVzVG9BbGxvY2F0ZSA9IENGVVJMR2V0Qnl0ZXMoKF9f
YnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7CisgICAgICAgIGFsbEJ5dGVzQnVmZmVy
Lmdyb3coYnl0ZXNUb0FsbG9jYXRlKTsKKyAgICAgICAgYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5
dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGFsbEJ5dGVzQnVmZmVyLmRhdGEoKSwgYnl0ZXNU
b0FsbG9jYXRlKTsKKyAgICB9CisgICAgCisgICAgY29uc3QgQ0ZVUkxDb21wb25lbnRUeXBlIGNv
bXBsZXRlVVJMID0gKENGVVJMQ29tcG9uZW50VHlwZSktMTsKKyAgICBDRlJhbmdlIHJhbmdlOwor
ICAgIGlmIChjb21wb25lbnRUeXBlICE9IGNvbXBsZXRlVVJMKSB7CisgICAgICAgIHJhbmdlID0g
Q0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgY29t
cG9uZW50VHlwZSwgbnVsbHB0cik7CisgICAgICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBrQ0ZO
b3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
cmFuZ2UubG9jYXRpb24gPSAwOworICAgICAgICByYW5nZS5sZW5ndGggPSBieXRlc0ZpbGxlZDsK
KyAgICB9CisgICAgCisgICAgTlNEYXRhICpjb21wb25lbnREYXRhID0gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmFsbEJ5dGVzQnVmZmVyLmRhdGEoKSArIHJhbmdlLmxvY2F0aW9uIGxlbmd0aDpyYW5n
ZS5sZW5ndGhdOyAKKyAgICAKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oW2NvbXBvbmVudERhdGEgYnl0ZXNdKTsKKyAg
ICBOU011dGFibGVEYXRhICpyZXN1bHREYXRhID0gW05TTXV0YWJsZURhdGEgZGF0YV07CisgICAg
Ly8gTk9URTogYWRkIGxlYWRpbmcgJz8nIHRvIHF1ZXJ5IHN0cmluZ3Mgbm9uLXplcm8gbGVuZ3Ro
IHF1ZXJ5IHN0cmluZ3MuCisgICAgLy8gTk9URTogcmV0YWluIHF1ZXN0aW9uLW1hcmsgb25seSBx
dWVyeSBzdHJpbmdzLgorICAgIGlmIChjb21wb25lbnRUeXBlID09IGtDRlVSTENvbXBvbmVudFF1
ZXJ5KSB7CisgICAgICAgIGlmIChyYW5nZS5sZW5ndGggPiAwIHx8IGhhc1F1ZXN0aW9uTWFya09u
bHlRdWVyeVN0cmluZyhVUkwpKQorICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0ZXM6
Ij8iIGxlbmd0aDoxXTsgICAgCisgICAgfQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2Uu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gYnl0ZXNbaV07CisgICAg
ICAgIGlmIChjIDw9IDB4MjAgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICBjaGFyIGVzY2Fw
ZWRbM107CisgICAgICAgICAgICBlc2NhcGVkWzBdID0gJyUnOworICAgICAgICAgICAgZXNjYXBl
ZFsxXSA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgZXNjYXBl
ZFsyXSA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgW3Jlc3Vs
dERhdGEgYXBwZW5kQnl0ZXM6ZXNjYXBlZCBsZW5ndGg6M107ICAgIAorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgY2hhciBiWzFdOworICAgICAgICAgICAgYlswXSA9IGM7CisgICAgICAg
ICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczpiIGxlbmd0aDoxXTsgICAgCisgICAgICAgIH0g
ICAgICAgICAgICAgICAKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdERhdGE7Cit9CisK
K3N0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0
ZXIoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudCkKK3sKKyAgICBDRlJh
bmdlIHJhbmdlID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJM
UmVmKVVSTCwgY29tcG9uZW50LCAwKTsKKyAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90
Rm91bmQpCisgICAgICAgIHJldHVybiBVUkw7CisgICAgCisgICAgLy8gUmVtb3ZlIG9uZSBzdWJz
ZXF1ZW50IGNoYXJhY3Rlci4KKyAgICByYW5nZS5sZW5ndGgrKzsKKworICAgIFZlY3RvcjxVSW50
OCwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IGJ1ZmZlcihVUkxfQllURVNfQlVGRkVSX0xFTkdU
SCk7CisgICAgQ0ZJbmRleCBudW1CeXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJM
UmVmKVVSTCwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgaWYgKG51bUJ5dGVz
ID09IC0xKSB7CisgICAgICAgIG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAgICAgICAgYnVmZmVyLmdyb3cobnVtQnl0ZXMpOwor
ICAgICAgICBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlci5kYXRh
KCksIG51bUJ5dGVzKTsKKyAgICB9CisgICAgVUludDgqIHVybEJ5dGVzID0gYnVmZmVyLmRhdGEo
KTsKKyAgICAgICAgCisgICAgaWYgKG51bUJ5dGVzIDwgcmFuZ2UubG9jYXRpb24pCisgICAgICAg
IHJldHVybiBVUkw7CisgICAgaWYgKG51bUJ5dGVzIDwgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5s
ZW5ndGgpCisgICAgICAgIHJhbmdlLmxlbmd0aCA9IG51bUJ5dGVzIC0gcmFuZ2UubG9jYXRpb247
CisgICAgICAgIAorICAgIG1lbW1vdmUodXJsQnl0ZXMgKyByYW5nZS5sb2NhdGlvbiwgdXJsQnl0
ZXMgKyByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCwgbnVtQnl0ZXMgLSByYW5nZS5sb2Nh
dGlvbiArIHJhbmdlLmxlbmd0aCk7CisgICAgCisgICAgQ0ZVUkxSZWYgcmVzdWx0ID0gQ0ZVUkxD
cmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3Ro
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVt
Qnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRy
KTsKKyAgICAgICAgICAgICAgICAKKyAgICByZXR1cm4gcmVzdWx0ID8gQ0ZCcmlkZ2luZ1JlbGVh
c2UocmVzdWx0KSA6IFVSTDsKK30KKworTlNVUkwgKlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhOU1VS
TCAqVVJMKQoreworICAgIHJldHVybiBVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVu
dENoYXJhY3RlcihVUkwsIGtDRlVSTENvbXBvbmVudFVzZXJJbmZvKTsKK30KKworTlNEYXRhICpv
cmlnaW5hbFVSTERhdGEoTlNVUkwgKlVSTCkKK3sKKyAgICBVSW50OCAqYnVmZmVyID0gKFVJbnQ4
ICopbWFsbG9jKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4IGJ5dGVzRmls
bGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIsIFVSTF9C
WVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBpZiAoYnl0ZXNGaWxsZWQgPT0gLTEpIHsKKyAgICAg
ICAgQ0ZJbmRleCBieXRlc1RvQWxsb2NhdGUgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVS
TFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICBidWZmZXIgPSAoVUludDggKilyZWFsbG9j
KGJ1ZmZlciwgYnl0ZXNUb0FsbG9jYXRlKTsKKyAgICAgICAgYnl0ZXNGaWxsZWQgPSBDRlVSTEdl
dEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlciwgYnl0ZXNUb0FsbG9jYXRlKTsK
KyAgICAgICAgQVNTRVJUKGJ5dGVzRmlsbGVkID09IGJ5dGVzVG9BbGxvY2F0ZSk7CisgICAgfQor
ICAgIAorICAgIC8vIGJ1ZmZlciBpcyBhZG9wdGVkIGJ5IHRoZSBOU0RhdGEKKyAgICBOU0RhdGEg
KmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6YnVmZmVyIGxlbmd0aDpieXRlc0Zp
bGxlZCBmcmVlV2hlbkRvbmU6WUVTXTsKKyAgICAKKyAgICBOU1VSTCAqYmFzZVVSTCA9IChfX2Jy
aWRnZSBOU1VSTCAqKUNGVVJMR2V0QmFzZVVSTCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMKTsKKyAg
ICBpZiAoYmFzZVVSTCkKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsVVJMRGF0YShVUkxXaXRoRGF0
YShkYXRhLCBiYXNlVVJMKSk7CisgICAgcmV0dXJuIGRhdGE7Cit9CisKK3N0YXRpYyBDRlN0cmlu
Z1JlZiBjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoQ0ZTdHJpbmdSZWYg
c3RyaW5nKQoreworICAgIENGSW5kZXggbGVuZ3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5n
KTsKKyAgICBWZWN0b3I8VUNoYXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBzb3VyY2VCdWZm
ZXIobGVuZ3RoKTsKKyAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFr
ZSgwLCBsZW5ndGgpLCBzb3VyY2VCdWZmZXIuZGF0YSgpKTsKKyAgICAKKyAgICBWZWN0b3I8VUNo
YXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBvdXRCdWZmZXI7CisgICAgCisgICAgc3RkOjpv
cHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludDsKKyAgICBDRkluZGV4IGkgPSAwOwor
ICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7CisgICAgICAgIFVDaGFyMzIgYzsKKyAgICAgICAgVTE2
X05FWFQoc291cmNlQnVmZmVyLCBpLCBsZW5ndGgsIGMpCisgICAgICAgIAorICAgICAgICBpZiAo
aXNMb29rYWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQsIGMpKSB7CisgICAgICAgICAg
ICB1aW50OF90IHV0ZjhCdWZmZXJbNF07CisgICAgICAgICAgICBDRkluZGV4IG9mZnNldCA9IDA7
CisgICAgICAgICAgICBVQm9vbCBmYWlsdXJlID0gZmFsc2U7CisgICAgICAgICAgICBVOF9BUFBF
TkQodXRmOEJ1ZmZlciwgb2Zmc2V0LCA0LCBjLCBmYWlsdXJlKQorICAgICAgICAgICAgQVNTRVJU
KCFmYWlsdXJlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChDRkluZGV4IGogPSAw
OyBqIDwgb2Zmc2V0OyArK2opIHsKKyAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKCcl
Jyk7CisgICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdCh1dGY4QnVmZmVyW2pdKSk7CisgICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVu
ZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1dGY4QnVmZmVyW2pdKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBVQ2hhciB1dGYxNkJ1ZmZlclsyXTsK
KyAgICAgICAgICAgIENGSW5kZXggb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIFVCb29sIGZhaWx1
cmUgPSBmYWxzZTsKKyAgICAgICAgICAgIFUxNl9BUFBFTkQodXRmMTZCdWZmZXIsIG9mZnNldCwg
MiwgYywgZmFpbHVyZSkKKyAgICAgICAgICAgIEFTU0VSVCghZmFpbHVyZSk7CisgICAgICAgICAg
ICBmb3IgKENGSW5kZXggaiA9IDA7IGogPCBvZmZzZXQ7ICsraikKKyAgICAgICAgICAgICAgICBv
dXRCdWZmZXIuYXBwZW5kKHV0ZjE2QnVmZmVyW2pdKTsKKyAgICAgICAgfQorICAgICAgICBwcmV2
aW91c0NvZGVQb2ludCA9IGM7CisgICAgfQorICAgIAorICAgIHJldHVybiBDRlN0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIG91dEJ1ZmZlci5kYXRhKCksIG91dEJ1ZmZlci5zaXpl
KCkpOworfQorCitOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcoTlNVUkwgKlVSTCkKK3sKKyAg
ICBOU0RhdGEgKmRhdGEgPSBvcmlnaW5hbFVSTERhdGEoVVJMKTsKKyAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyICpiZWZvcmUgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oW2RhdGEg
Ynl0ZXNdKTsKKyAgICBpbnQgbGVuZ3RoID0gW2RhdGEgbGVuZ3RoXTsKKyAgICAKKyAgICBib29s
IG1heU5lZWRIb3N0TmFtZURlY29kaW5nID0gZmFsc2U7CisgICAgCisgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciAqcCA9IGJlZm9yZTsKKyAgICBpbnQgYnVmZmVyTGVuZ3RoID0gKGxlbmd0aCAqIDMp
ICsgMTsKKyAgICBWZWN0b3I8Y2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IGFmdGVyKGJ1
ZmZlckxlbmd0aCk7IC8vIGxhcmdlIGVub3VnaCB0byAlLWVzY2FwZSBldmVyeSBjaGFyYWN0ZXIK
KyAgICBjaGFyICpxID0gYWZ0ZXIuZGF0YSgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcFtpXTsKKyAgICAgICAgLy8g
dW5lc2NhcGUgZXNjYXBlIHNlcXVlbmNlcyB0aGF0IGluZGljYXRlIGJ5dGVzIGdyZWF0ZXIgdGhh
biAweDdmCisgICAgICAgIGlmIChjID09ICclJyAmJiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJ
SUhleERpZ2l0KHBbaSArIDFdKSkgJiYgaSArIDIgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0
KHBbaSArIDJdKSkgeworICAgICAgICAgICAgYXV0byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSAr
IDFdLCBwW2kgKyAyXSk7CisgICAgICAgICAgICBpZiAodSA+IDB4N2YpIHsKKyAgICAgICAgICAg
ICAgICAvLyB1bmVzY2FwZQorICAgICAgICAgICAgICAgICpxKysgPSB1OworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBkbyBub3QgdW5lc2NhcGUKKyAgICAgICAgICAg
ICAgICAqcSsrID0gcFtpXTsKKyAgICAgICAgICAgICAgICAqcSsrID0gcFtpICsgMV07CisgICAg
ICAgICAgICAgICAgKnErKyA9IHBbaSArIDJdOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aSArPSAyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKnErKyA9IGM7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciAieG4tLSIgaW4gYW4gZWZmaWNpZW50LCBu
b24tY2FzZS1zZW5zaXRpdmUsIHdheS4KKyAgICAgICAgICAgIGlmIChjID09ICctJyAmJiBpID49
IDMgJiYgIW1heU5lZWRIb3N0TmFtZURlY29kaW5nICYmIChxWy00XSB8IDB4MjApID09ICd4JyAm
JiAocVstM10gfCAweDIwKSA9PSAnbicgJiYgcVstMl0gPT0gJy0nKQorICAgICAgICAgICAgICAg
IG1heU5lZWRIb3N0TmFtZURlY29kaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAq
cSA9ICdcMCc7CisgICAgCisgICAgLy8gQ2hlY2sgc3RyaW5nIHRvIHNlZSBpZiBpdCBjYW4gYmUg
Y29udmVydGVkIHRvIGRpc3BsYXkgdXNpbmcgVVRGLTggIAorICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gcmVzdWx0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFmdGVyLmRhdGEoKV07
CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgLy8gQ291bGQgbm90IGNvbnZlcnQgdG8gVVRG
LTguCisgICAgICAgIC8vIENvbnZlcnQgY2hhcmFjdGVycyBncmVhdGVyIHRoYW4gMHg3ZiB0byBl
c2NhcGUgc2VxdWVuY2VzLgorICAgICAgICAvLyBTaGlmdCBjdXJyZW50IHN0cmluZyB0byB0aGUg
ZW5kIG9mIHRoZSBidWZmZXIKKyAgICAgICAgLy8gdGhlbiB3ZSB3aWxsIGNvcHkgYmFjayBieXRl
cyB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAKKyAgICAgICAgLy8gYXMgd2UgY29udmVydC4K
KyAgICAgICAgaW50IGFmdGVybGVuZ3RoID0gcSAtIGFmdGVyLmRhdGEoKTsKKyAgICAgICAgY2hh
ciAqcCA9IGFmdGVyLmRhdGEoKSArIGJ1ZmZlckxlbmd0aCAtIGFmdGVybGVuZ3RoIC0gMTsKKyAg
ICAgICAgbWVtbW92ZShwLCBhZnRlci5kYXRhKCksIGFmdGVybGVuZ3RoICsgMSk7IC8vIGNvcGll
cyB0cmFpbGluZyAnXDAnCisgICAgICAgIGNoYXIgKnEgPSBhZnRlci5kYXRhKCk7CisgICAgICAg
IHdoaWxlICgqcCkgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKnA7CisgICAgICAg
ICAgICBpZiAoYyA+IDB4N2YpIHsKKyAgICAgICAgICAgICAgICAqcSsrID0gJyUnOworICAgICAg
ICAgICAgICAgICpxKysgPSB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKKyAgICAgICAg
ICAgICAgICAqcSsrID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICAqcSsrID0gKnA7CisgICAgICAgICAgICBwKys7Cisg
ICAgICAgIH0KKyAgICAgICAgKnEgPSAnXDAnOworICAgICAgICByZXN1bHQgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aFVURjhTdHJpbmc6YWZ0ZXIuZGF0YSgpXTsKKyAgICB9CisgICAgCisgICAgaWYg
KG1heU5lZWRIb3N0TmFtZURlY29kaW5nKSB7CisgICAgICAgIC8vIEZJWE1FOiBJcyBpdCBnb29k
IHRvIGlnbm9yZSB0aGUgZmFpbHVyZSBvZiBtYXBIb3N0TmFtZXMgYW5kIGtlZXAgcmVzdWx0IGlu
dGFjdD8KKyAgICAgICAgYXV0byBtYXBwZWRSZXN1bHQgPSBtYXBIb3N0TmFtZXMocmVzdWx0Lmdl
dCgpLCBOTyk7CisgICAgICAgIGlmIChtYXBwZWRSZXN1bHQpCisgICAgICAgICAgICByZXN1bHQg
PSBtYXBwZWRSZXN1bHQ7CisgICAgfQorCisgICAgcmVzdWx0ID0gW3Jlc3VsdCBwcmVjb21wb3Nl
ZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKKyAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVh
c2UoY3JlYXRlU3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKChfX2JyaWRnZSBDRlN0
cmluZ1JlZilyZXN1bHQuZ2V0KCkpKTsKK30KKworQk9PTCBpc1VzZXJWaXNpYmxlVVJMKE5TU3Ry
aW5nICpzdHJpbmcpCit7CisgICAgQk9PTCB2YWxpZCA9IFlFUzsKKyAgICAvLyBnZXQgYnVmZmVy
CisgICAgCisgICAgY2hhciBzdGF0aWNfYnVmZmVyWzEwMjRdOworICAgIGNvbnN0IGNoYXIgKnA7
CisgICAgQk9PTCBzdWNjZXNzID0gQ0ZTdHJpbmdHZXRDU3RyaW5nKChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilzdHJpbmcsIHN0YXRpY19idWZmZXIsIDEwMjMsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7
CisgICAgcCA9IHN1Y2Nlc3MgPyBzdGF0aWNfYnVmZmVyIDogW3N0cmluZyBVVEY4U3RyaW5nXTsK
KyAgICAKKyAgICBpbnQgbGVuZ3RoID0gc3RybGVuKHApOworICAgIAorICAgIC8vIGNoZWNrIGZv
ciBjaGFyYWN0ZXJzIDw9IDB4MjAgb3IgPj0weDdmLCAlLWVzY2FwZSBzZXF1ZW5jZXMgb2YgJTdm
LCBhbmQgeG4tLSwgdGhlc2UKKyAgICAvLyBhcmUgdGhlIHRoaW5ncyB0aGF0IHdpbGwgbGVhZCBf
d2ViX3VzZXJWaXNpYmxlU3RyaW5nIHRvIGFjdHVhbGx5IGNoYW5nZSB0aGluZ3MuCisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMg
PSBwW2ldOworICAgICAgICAvLyBlc2NhcGUgY29udHJvbCBjaGFyYWN0ZXJzLCBzcGFjZSwgYW5k
IGRlbGV0ZQorICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPT0gMHg3ZikgeworICAgICAgICAg
ICAgdmFsaWQgPSBOTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgaWYgKGMg
PT0gJyUnICYmIChpICsgMSA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAm
JiBpICsgMiA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7CisgICAgICAg
ICAgICBhdXRvIHUgPSB0b0FTQ0lJSGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKKyAgICAg
ICAgICAgIGlmICh1ID4gMHg3ZikgeworICAgICAgICAgICAgICAgIHZhbGlkID0gTk87CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpICs9IDI7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayBmb3IgInhuLS0iIGluIGFuIGVm
ZmljaWVudCwgbm9uLWNhc2Utc2Vuc2l0aXZlLCB3YXkuCisgICAgICAgICAgICBpZiAoYyA9PSAn
LScgJiYgaSA+PSAzICYmIChwW2kgLSAzXSB8IDB4MjApID09ICd4JyAmJiAocFtpIC0gMl0gfCAw
eDIwKSA9PSAnbicgJiYgcFtpIC0gMV0gPT0gJy0nKSB7CisgICAgICAgICAgICAgICAgdmFsaWQg
PSBOTzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gdmFsaWQ7Cit9CisKK05TUmFuZ2UgcmFuZ2VPZlVSTFNj
aGVtZShOU1N0cmluZyAqc3RyaW5nKQoreworICAgIE5TUmFuZ2UgY29sb24gPSBbc3RyaW5nIHJh
bmdlT2ZTdHJpbmc6QCI6Il07CisgICAgaWYgKGNvbG9uLmxvY2F0aW9uICE9IE5TTm90Rm91bmQg
JiYgY29sb24ubG9jYXRpb24gPiAwKSB7CisgICAgICAgIE5TUmFuZ2Ugc2NoZW1lID0gezAsIGNv
bG9uLmxvY2F0aW9ufTsKKyAgICAgICAgLyoKKyAgICAgICAgIFRoaXMgc3R1ZmYgaXMgdmVyeSBl
eHBlbnNpdmUuICAxMC0xNSBtc2VjIG9uIGEgMngxLjJHSHouICBJZiBub3QgY2FjaGVkIGl0IHN3
YW1wcworICAgICAgICAgZXZlcnl0aGluZyBlbHNlIHdoZW4gYWRkaW5nIGl0ZW1zIHRvIHRoZSBh
dXRvY29tcGxldGUgREIuICBNYWtlcyBtZSB3b25kZXIgaWYgd2UKKyAgICAgICAgIGV2ZW4gbmVl
ZCB0byBlbmZvcmNlIHRoZSBjaGFyYWN0ZXIgc2V0IGhlcmUuCisgICAgICAgICAqLworICAgICAg
ICBOU1N0cmluZyAqYWNjZXB0YWJsZUNoYXJhY3RlcnMgPSBAIkFCQ0RFRkdISUpLTE1OT1BRUlNU
VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky4tIjsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IEludmVyc2VT
Y2hlbWVDaGFyYWN0ZXJTZXQoW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFj
dGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0pOworICAgICAg
ICBOU1JhbmdlIGlsbGVnYWxzID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpJbnZl
cnNlU2NoZW1lQ2hhcmFjdGVyU2V0LmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpzY2hlbWVd
OworICAgICAgICBpZiAoaWxsZWdhbHMubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAg
ICAgIHJldHVybiBzY2hlbWU7CisgICAgfQorICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZv
dW5kLCAwKTsKK30KKworQk9PTCBsb29rc0xpa2VBYnNvbHV0ZVVSTChOU1N0cmluZyAqc3RyaW5n
KQoreworICAgIC8vIFRyaW0gd2hpdGVzcGFjZSBiZWNhdXNlIF93ZWJfVVJMV2l0aFN0cmluZyBh
bGxvd3Mgd2hpdGVzcGFjZS4KKyAgICByZXR1cm4gcmFuZ2VPZlVSTFNjaGVtZShzdHJpbmdCeVRy
aW1taW5nV2hpdGVzcGFjZShzdHJpbmcpLmdldCgpKS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9VUkxDb2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRkNTFmYWRiYjY4ZDY0NzZkMGNhNDYwNjg0YTk3MmI4YzUzNTBkYWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpAQCAtMCwwICsxLDk1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8d3RmL1VSTC5oPgorCisjaW1wb3J0ICJDRlVS
TEV4dHJhcy5oIgorI2ltcG9ydCAiTlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQgPHd0Zi9PYmpjUnVu
dGltZUV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTFBhcnNlci5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCitAaW50ZXJmYWNlIE5TU3RyaW5nIChXVEZOU1VSTEV4dHJhcykKKy0g
KEJPT0wpX3dlYl9sb29rc0xpa2VJUEFkZHJlc3M7CitAZW5kCisKK25hbWVzcGFjZSBXVEYgewor
CitVUkw6OlVSTChOU1VSTCAqdXJsKQoreworICAgIGlmICghdXJsKSB7CisgICAgICAgIGludmFs
aWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXaHkgaXMg
aXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAg
ICBXVEY6OmdldFVSTEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZil1cmwsIHVybEJ5dGVzKTsKKyAg
ICBVUkxQYXJzZXIgcGFyc2VyKHVybEJ5dGVzLmRhdGEoKSk7CisgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Cit9CisKK1VSTDo6b3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0Cit7CisgICAgLy8g
Q3JlYXRpbmcgYSB0b2xsLWZyZWUgYnJpZGdlZCBDRlVSTCBiZWNhdXNlIGNyZWF0aW9uIHdpdGgg
TlNVUkwgbWV0aG9kcyB3b3VsZCBub3QgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHN0cmluZy4KKyAg
ICAvLyBXZSdsbCBuZWVkIGZpZGVsaXR5IHdoZW4gcm91bmQtdHJpcHBpbmcgdmlhIENGVVJMR2V0
Qnl0ZXMoKS4KKyAgICByZXR1cm4gY3JlYXRlQ0ZVUkwoKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7
Cit9CisKK1JldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChpc0Vt
cHR5KCkpIHsKKyAgICAgICAgLy8gV2UgdXNlIHRoZSB0b2xsLWZyZWUgYnJpZGdlIGJldHdlZW4g
TlNVUkwgYW5kIENGVVJMIHRvIGNyZWF0ZSBhIENGVVJMUmVmIHN1cHBvcnRpbmcgYm90aCBlbXB0
eSBhbmQgbnVsbCB2YWx1ZXMuCisgICAgICAgIHJldHVybiAoX19icmlkZ2UgQ0ZVUkxSZWYpYWRv
cHROUyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiJdKS5nZXQoKTsKKyAgICB9CisK
KyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOworCisgICAgLy8gRmFzdCBwYXRoIGlmIHRo
ZSBpbnB1dCBkYXRhIGlzIDgtYml0IHRvIGF2b2lkIGNvcHlpbmcgaW50byBhIHRlbXBvcmFyeSBi
dWZmZXIuCisgICAgaWYgKExJS0VMWShtX3N0cmluZy5pczhCaXQoKSkpCisgICAgICAgIGNmVVJM
ID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSksIG1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgLy8gU2xvd2VyIHBhdGguCisgICAgICAgIFdURjo6VVJMQ2hhckJ1ZmZlciBi
dWZmZXI7CisgICAgICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOworICAgICAgICBjZlVSTCA9IFdU
Rjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwor
ICAgIH0KKworICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIVdURjo6aXNDRlVS
TFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gY2ZVUkw7Cit9CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3Ry
aW5nVmlldyBob3N0KQoreworICAgIHJldHVybiBbaG9zdC5jcmVhdGVOU1N0cmluZ1dpdGhvdXRD
b3B5aW5nKCkuZ2V0KCkgX3dlYl9sb29rc0xpa2VJUEFkZHJlc3NdOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmggYi9Tb3VyY2UvV1RGL3d0
Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI0ZmIzNGY4NmYyNGE0NjIxZTBm
OTA2NzA2Nzc1Zjk0ODE4NTk5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2ds
aWIvR1VuaXF1ZVB0clNvdXAuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogIENvcHlyaWdodCAo
QykgMjAxNCBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBVU0UoU09VUCkKKworI2luY2x1ZGUgPGxpYnNvdXAvc291
cC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7
CisKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2ZyZWUpCitXVEZf
REVGSU5FX0dQVFJfREVMRVRFUihTb3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVlKQorV1RGX0RF
RklORV9HUFRSX0RFTEVURVIoU291cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3NhZ2VfaGVhZGVy
c19mcmVlKQorV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cEJ1ZmZlciwgc291cF9idWZmZXJf
ZnJlZSkKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVU0UoU09VUCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9n
bGliL1VSTFNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1ZGJjN2UxN2I4Mzg5MTljNTBjZmZmYmQ2YjQ1
Y2Y4Y2IzYjg5YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1VSTFNv
dXAuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKFNPVVApCisKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1VSTDo6VVJM
KFNvdXBVUkkqIHNvdXBVUkkpCit7CisgICAgaWYgKCFzb3VwVVJJKSB7CisgICAgICAgIGludmFs
aWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IHVybFN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcoc291cFVSSSwgRkFMU0UpKTsKKyAgICBVUkxQ
YXJzZXIgcGFyc2VyKFN0cmluZzo6ZnJvbVVURjgodXJsU3RyaW5nLmdldCgpKSk7CisgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7CisKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gTW90aXZhdGVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zODk1Ni4gbGlic291cAorICAgIC8vIGRvZXMgbm90IGFkZCB0aGUgcGFzc3dv
cmQgdG8gdGhlIFVSTCB3aGVuIGNhbGxpbmcKKyAgICAvLyBzb3VwX3VyaV90b19zdHJpbmcsIGFu
ZCB0aHVzIHRoZSByZXF1ZXN0cyBhcmUgbm90IHByb3Blcmx5CisgICAgLy8gYnVpbHQuIEZpeGlu
ZyBzb3VwX3VyaV90b19zdHJpbmcgaXMgYSBuby1ubyBhcyB0aGUgbWFpbnRhaW5lciBkb2VzCisg
ICAgLy8gbm90IHdhbnQgdG8gYnJlYWsgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIGltcGxl
bWVudGF0aW9ucworICAgIGlmIChzb3VwVVJJLT5wYXNzd29yZCkKKyAgICAgICAgc2V0UGFzcyhT
dHJpbmc6OmZyb21VVEY4KHNvdXBVUkktPnBhc3N3b3JkKSk7Cit9CisKK0dVbmlxdWVQdHI8U291
cFVSST4gVVJMOjpjcmVhdGVTb3VwVVJJKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gR1VuaXF1ZVB0cjxTb3VwVVJJ
Pihzb3VwX3VyaV9uZXcoc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworfQorCitib29sIFVSTDo6
aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKK3sKKyAgICByZXR1cm4gIWhvc3QuaXNF
bXB0eSgpICYmIGdfaG9zdG5hbWVfaXNfaXBfYWRkcmVzcyhob3N0LnV0ZjgoKS5kYXRhKCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaAppbmRleCBkMGI5MDM4ZjgyNjQ3YmUw
YTE1ZjVjZWE0ZjgwMTk2MWY2NzJmMjliLi43ZWMzOTgyZTExMGI3YWY3MzE0OWFlOWFlYzU1MWIw
ZDAzNmIxNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXNzaW9uLmgKQEAgLTQ4LDcgKzQ4LDYgQEAgY2xhc3MgUGF5bWVudDsKIGNsYXNzIFBh
eW1lbnRDb250YWN0OwogY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yOwogY2xhc3MgUGF5bWVudE1l
dGhvZDsKLWNsYXNzIFVSTDsKIGVudW0gY2xhc3MgUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7
CiBzdHJ1Y3QgQXBwbGVQYXlMaW5lSXRlbTsKIHN0cnVjdCBBcHBsZVBheVBheW1lbnRSZXF1ZXN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZh
bGlkYXRlTWVyY2hhbnRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oCmluZGV4IGIwNzU5Y2RhMThjMDNjNzNkYjBi
ZDFkY2Y4NDUzMWIyNGI1MmQwOWQuLjNhYTIyZjViODJkNmMyYzE4MGVjZTgxNDU4NWQ4NTEwODk0
YjFiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmgKQEAgLTI4LDcgKzI4LDcgQEAK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0
b3IuY3BwCmluZGV4IGJkNTUzNGMyZGY5MTI1ODdkZDI3Nzg5MjI5OGJkN2Q0MWU3YTlhZmMuLmUz
NzMzNTdjYzA3ZmVhNTlkZTk3ZWM1NWQ1Yzg4OTNkMDYzODY0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oIgog
I2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oIgogI2luY2x1ZGUgIlBheW1lbnRT
ZXNzaW9uLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5oCmluZGV4IGQ0NjUyY2ZlZDUwZmZjMWQyZjZiNjJiNWU0
YmRkMGY5Mjg2M2Q0NTYuLmE1NDcxNTQ5NzNjMDFmOGJlYTVkMWRjYTEyMTVkOWQ0NDllMDAxNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3IuaApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBQYXltZW50Q29udGFjdDsKIGNsYXNz
IFBheW1lbnRNZXJjaGFudFNlc3Npb247CiBjbGFzcyBQYXltZW50TWV0aG9kOwogY2xhc3MgUGF5
bWVudFNlc3Npb247Ci1jbGFzcyBVUkw7CiBlbnVtIGNsYXNzIFBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzOwogc3RydWN0IFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Owogc3RydWN0IFBheW1l
bnRNZXRob2RVcGRhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAppbmRleCBlOTE1Y2ExNmRiNDAyNDM4
ZDhiZDgwMDE5ZGFkZTliMzY3NzAzZDE3Li5lNzdmMmNhOThmYWZjNTUzNGU0ZjYwZThjZjkwNDA2
MGQyOGIxM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTM0LDcgKzM0LDYgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKLWNsYXNzIFVS
TDsKIHN0cnVjdCBQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdDsKIHN0cnVjdCBQYXltZW50TWV0
aG9kVXBkYXRlOwogc3RydWN0IFNoaXBwaW5nQ29udGFjdFVwZGF0ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaAppbmRleCAwYTM1MDdlMjYw
ZTc0NjdlMGFjMGQzMWM5NDkzNzU0YTMzZmYyYTY0Li44ZjdhNGI2NTBmMGI5MmY4MTVmOWI1ZDVj
Y2UxNzlhN2Q1MjkxMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50U2Vzc2lvbi5oCkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgUGF5bWVudDsKIGNsYXNzIFBheW1lbnRDb250YWN0OwogY2xhc3MgUGF5bWVudE1ldGhvZDsK
LWNsYXNzIFVSTDsKIAogY2xhc3MgUGF5bWVudFNlc3Npb24gOiBwdWJsaWMgdmlydHVhbCBQYXlt
ZW50U2Vzc2lvbkJhc2UgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgK
aW5kZXggOTk4Yjc4NDYwY2M4N2VkMzhlOTE4NmYwOGZkMjk5N2M2M2Y4OWQ3Mi4uYjJmMWI0OWYz
ZWIzYTNlZTgwYTRmYjMyOWY2OWU4YmY4ZTUxYTk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25N
YW5pZmVzdC5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNv
bi9OYXZpZ2F0b3JCZWFjb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2
aWdhdG9yQmVhY29uLmNwcAppbmRleCBlNjg5NmU3ODc4YjJjMmIxMGY2NjEzY2RiOTg1ZDBiNmUy
NThkOTRhLi40ODk3NmQyYTM1MmUyMGRlNDE0YTZiZjk4ZTU2NmVlNDcwNDc1ZTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJz
LmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggZjc5MmY1YTEwMTA0NmVmMTEwMDBhNzExYjYxNDE5
MTMxYzI4NWY0My4uMTBjODRlNTdmMzMzY2UzMWEzMDM1YmY4NmQ3ZWZkMDYyYjkxOTMwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVh
bUNodW5rLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggNjdkZTJlNTQ2
MmJmM2RjNmFiODBjMjRhMzE4YzQwNTRmY2Y5MmNhNS4uNDAxMWIzNzM4Yzk3OWJiOTc4YWRmZGNm
Y2JhODU0Y2FlOGM1ZGZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkZldGNoQm9keUNvbnN1bWVyLmgi
CiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2Fk
ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgKaW5kZXggZTM2NDRhODc1MTk1
OTdmNjRlNTNmM2NjZGFjNzQ0MDM5NzYwMDIzZC4uNmYzZGZlMzZmMDUzODk5MTQ3YzRlYWRlZmNl
MDJkNDMyZjk5OTNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oCkBAIC0yNyw3ICsyNyw3IEBACiAK
ICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcApp
bmRleCAyZTgyYzMyNjE4NjVkN2E5ODg4YTVjMmM2Yjg1NzU0YjQyY2JhNDU5Li45OGM2NjNiNmZj
NmRiZGEyOTM2YTdkYTI2ODk2ZGYwMDMyMzNiZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKQEAg
LTM1LDkgKzM1LDkgQEAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW5jbHVkZSAiTWVk
aWFTb3VyY2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCmluZGV4IDJiODk0ZTBjYTQz
YmU0MWI1YjEwZjRkMTk4OTEzNDM0ODc5MjgzMDYuLjAzMzY3NGYyNmQzNDU4NTlhNGFhMWNkYTEy
MGU2ZDg4NDE1NDZkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCkBAIC0zOCw3ICszOCw2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTWVkaWFTb3VyY2U7CiAKIGNs
YXNzIE1lZGlhU291cmNlUmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApp
bmRleCA3ZTIyMTUwMjQwOGZiYzQ5MWU4NzA2Njk3Njg2NzllYmUwMDQzNDYyLi44YWMxNDU3OTUw
YTc5MTg5ZDNhY2QyZDA3MDU2NmEyMTg3YmNmYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtNDEsNyArNDEsNyBAQAog
I2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAKaW5k
ZXggZDY5ZGNjZjg2ZTM4YWEzZjczY2NhNzE5ZGYxYjllYmZmYjJjMjAwOC4uNjQxNWZmYWJhNWM5
YTg0ODEzNGU1MjIzMzRkZDNhNjAxZWMyYmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwCkBAIC0y
OSw5ICsyOSw5IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIk1lZGlh
U3RyZWFtLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaAppbmRleCBhMjY3ZjExMDBiZTE3
YzJhMGIyOWEyMjFlM2IxNjljOTc3NGFhMjJkLi5mNmQyM2QyZDc5MGYwZDRmMjc1MTA1YmI0MDZi
MTllM2NlMGU0OTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFTdHJlYW1Qcml2
YXRlOwotY2xhc3MgVVJMOwogCiBjbGFzcyBNZWRpYVN0cmVhbVJlZ2lzdHJ5IGZpbmFsIDogcHVi
bGljIFVSTFJlZ2lzdHJ5IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9y
Q29udGVudFV0aWxzQ2xpZW50LmgKaW5kZXggYjYyZDlhZmE4ZWFlNWI0ZjZmZTM0YjRjNThjZGI0
ZmRjY2Q2NWEwNi4uNDcwNjczYTA5ZTk1ZjAzMGY1ZWVhYzQyMzk4Njk2ZmExMDQzZTE3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2
aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
YXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50LmgKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShOQVZJR0FUT1JfQ09OVEVOVF9VVElMUykKIAotI2lu
Y2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IGZmMGRjNTRkYWYx
ZTUwMjM4YWZhMzVmMTMyODllNWI4M2UyYjJiOWMuLmZlZGExYTEzYWVkMjFjNDRiYWQzMzg5NjI5
YTcyNTNmOTJiMWM5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJOb3Rp
ZmljYXRpb25EaXJlY3Rpb24uaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZh
bGlkYXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9N
ZXJjaGFudFZhbGlkYXRpb25FdmVudC5oCmluZGV4IGIwOTNkM2E1ZmZjOTU2NzEyZWM5MTBkNGNm
YTEyMjcxZTI4YTliYWEuLjIwNzc5Y2VkZDI2ZjZiOTQ3MTEzODQ0ZmQ5NjFmYmY4YmIwMDY0NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hh
bnRWYWxpZGF0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBF
TkFCTEUoUEFZTUVOVF9SRVFVRVNUKQogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVx
dWVzdC5oCmluZGV4IGUzYmQ3ZTUzMmNmMjNmMjU3NjY2NTRlMTBjMzQ1ZGNiY2MzNDA4NzIuLjNk
MTg4MWM1NTdiN2QzNzY4ZDQzM2IwODZlMmY3ZjRhNzk5ZGQ5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKQEAg
LTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQuaCIKICNp
bmNsdWRlICJQYXltZW50T3B0aW9ucy5oIgogI2luY2x1ZGUgIlBheW1lbnRSZXNwb25zZS5oIgot
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCmluZGV4IDZiNTU0MmUwODkwMDdkOWE0
OTcwNGYyZmIzY2Y0Mzk4YTBmYjRlMGMuLmVmZWFmMDBjOWUzNThlZDY4MTU1YjU4YTExYWQ0NzI1
NTYxZTAyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVn
aW5SZXBsYWNlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVn
aW5SZXBsYWNlbWVudC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIFJlbmRlclN0eWxlOwogY2xh
c3MgUmVuZGVyVHJlZVBvc2l0aW9uOwogY2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBTaGFkb3dSb290
OwotY2xhc3MgVVJMOwogCiBjbGFzcyBQbHVnaW5SZXBsYWNlbWVudCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFBsdWdpblJlcGxhY2VtZW50PiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA3NjBhNGU3MTE0Zjc0NzU4MjIzYWRk
MWZiMGY4NTZkNmU4NWQzMGNlLi40ZWYwYjRkZGUwMTc1NGZkN2JkNjg5MjJhNDU1ZDkzNjdlY2I4
NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmgKQEAgLTcxLDcgKzcxLDYgQEAgY2xhc3MgT3NjaWxsYXRvck5vZGU7CiBjbGFzcyBQYW5uZXJO
b2RlOwogY2xhc3MgUGVyaW9kaWNXYXZlOwogY2xhc3MgU2NyaXB0UHJvY2Vzc29yTm9kZTsKLWNs
YXNzIFVSTDsKIGNsYXNzIFdhdmVTaGFwZXJOb2RlOwogCiAvLyBBdWRpb0NvbnRleHQgaXMgdGhl
IGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUg
Y3JlYXRlZCBmcm9tIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBjYTQwNmFm
NGM2ZjUyMjUxZjlmNmNjYThjNDVkNDQzYWJiOGQ5ODU3Li5hODVkZmQ3NzQ0Y2Q0NzlhYjEyM2Qz
MzI3MTFlZThmMjNkMTAxZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNDAs
NyArNDAsNiBAQCBjbGFzcyBBcnJheUJ1ZmZlcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQmxvYjsKLWNsYXNzIFVSTDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFz
cyBTb2NrZXRQcm92aWRlcjsKIGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggOTAxMjFmNzBk
MzA4ODBjMmEwMmY5NjU4MGFlMDU3MjhmYjhiZGRjOC4uNTA0M2M0OTQyMzVkMDcwODU1MDZhYWJk
Y2UzYmM0ZDBiODRiYmMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0Lmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVs
Q2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5jcHAKaW5kZXggNzQyN2JiNTU3MDc1ZWRhODhmYmQ2NjEyMWU3ZDkwYTNm
MTljZGQzNC4uMWIxOWVkYWI0YzlhNmYzODEyZjcxMzBiNzZhNmI5NTM3YzVjNzVlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiV2ViU29ja2V0LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRl
IDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAppbmRleCBj
ZjJiZDdhYzBhZjFiMjc0ZDk4M2JkNmJmY2YyNGUzODFkMTIyM2U3Li5lOTZmODYwMmE4N2E5MzUy
Njk2OTY3NjVjODBlNzMwMmNmNzM3ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC0zMSw3ICszMSw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDgxMmY4YTAyZDMwYTE2ODNjZTk0Njg0
Zjg3MTAyMGU2YmJiOTlkMTguLjM4OTVlNDQ5Njc1MDdjNWVlOTljYzIyZjQzZTcyMWYyOTEzNzVm
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0zOSw3ICsz
OSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQppbmRleCA5NDMzOTg0NzU3ZTFiNGM5MTQ1ZTgwYjdkMjI3MWY5ZTI0YTI3NDBiLi4wNjhiNWMy
NjIzYzQxMDBjOTdlNjczMmNiNTI3MWMzMWQwZWRkYzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQpAQCAtMTg3LDcgKzE4Nyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9t
YWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5tbQogCi0gICAgcGxhdGZvcm0vY2YvQ0ZVUkxFeHRy
YXMuY3BwCiAgICAgcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogICAgIHBsYXRmb3JtL2Nm
L0tleWVkRGVjb2RlckNGLmNwcAogICAgIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApA
QCAtMTk1LDcgKzE5NCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcAogICAgIHBsYXRmb3JtL2NmL1J1
bkxvb3BPYnNlcnZlci5jcHAKICAgICBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKLSAg
ICBwbGF0Zm9ybS9jZi9VUkxDRi5jcHAKIAogICAgIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29m
dExpbmsuY3BwCkBAIC0zOTksNyArMzk3LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vbWFjL1N1ZGRlblRlcm1pbmF0aW9uLm1tCiAgICAgcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCi0gICAgcGxhdGZv
cm0vbWFjL1VSTE1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0KICAg
ICBwbGF0Zm9ybS9tYWMvVmFsaWRhdGlvbkJ1YmJsZU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9X
ZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZQppbmRleCBhMjRhOTE5NTM2MGEzYzViNDYwZDYyOGUyZjg0NGVkMDE5MTlmZDcyLi42NTg2YjAy
NDYxYTQ3MjE3ZWYwOGQ1ZWMwYjNjZGMzMTY2NjExM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5j
bWFrZQpAQCAtMjUwLDEyICsyNTAsMTAgQEAgaWYgKFVTRV9DRikKICAgICBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICAgICAgbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAKIAotICAgICAgICBwbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKICAgICAgICAgcGxh
dGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9LZXllZERlY29k
ZXJDRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCiAgICAgICAg
IHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotICAgICAgICBwbGF0Zm9ybS9jZi9VUkxD
Ri5jcHAKIAogICAgICAgICBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCBmYzI4OGIwMTM5MWQ3NTJiMjRkYzlmYWU3MWVmZjBmMGViOGJlNWFm
Li42MjE5MWMwMmUzNTM3MmQ3NmIzMTdmMjc0ZjVhODM1ZTY3MzA2ODFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtMTUzNSw4ICsxNTM1LDYgQEAgcGxhdGZvcm0vVGhlbWUuY3BwCiBwbGF0Zm9ybS9UaHJl
YWRHbG9iYWxEYXRhLmNwcAogcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcAogcGxhdGZvcm0vVGlt
ZXIuY3BwCi1wbGF0Zm9ybS9VUkwuY3BwCi1wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCiBwbGF0Zm9y
bS9Vc2VyQWN0aXZpdHkuY3BwCiBwbGF0Zm9ybS9XZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3Bw
CiBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDU4MTM2YTkzOGM0ZTg4OTAyYWQ1NGFmZjFkMTE1MjhmZmFjNjEzYTguLmZiOWQ5MjAxNDYy
YTJmMWViNDZjYzBiYWE1MWIzYTU2ODY4MGI0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMTc4LDcgKzE3OCw2IEBAIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3Bw
CiBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFj
L0ZGVEZyYW1lTWFjLmNwcAogCi1wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKIHBsYXRmb3Jt
L2NmL0ZpbGVTeXN0ZW1DRi5jcHAKIHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xODYsNyArMTg1LDYgQEAgcGxhdGZvcm0v
Y2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9NZWRpYUFjY2Vzc2li
aWxpdHlTb2Z0TGluay5jcHAKIHBsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5jcHAKIHBsYXRm
b3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCiAKIHBsYXRm
b3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tIEBuby11bmlmeQog
cGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCkBAIC00NTgsNyArNDU2LDYgQEAg
cGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQogcGxhdGZvcm0vbWFjL1N1ZGRlblRlcm1p
bmF0aW9uLm1tCiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KIHBsYXRmb3JtL21hYy9UaHJlYWRD
aGVjay5tbSBAbm8tdW5pZnkKLXBsYXRmb3JtL21hYy9VUkxNYWMubW0KIHBsYXRmb3JtL21hYy9V
c2VyQWN0aXZpdHlNYWMubW0KIHBsYXRmb3JtL21hYy9Vc2VyQWdlbnRNYWMubW0KIHBsYXRmb3Jt
L21hYy9WYWxpZGF0aW9uQnViYmxlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDM0NDRlZWU2NTYzOWY1ZTY3OWQ5Njg3
MzBjYjM5MzkzOGRkYzBhMC4uOWE4ODMyYjViZTQyODZlZTY2ZGY0YWU5MTQwYTcyZTM0NGQ2Nzlj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTg0MSw3ICsxODQxLDYgQEAKIAkJNUM0MzA0QjAxOTFBQzkwODAwMEUyQkMwIC8q
IEVYVFNoYWRlclRleHR1cmVMT0QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUM0MzA0QUQxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1
cmVMT0QuY3BwICovOyB9OwogCQk1QzQzMDRCMTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVy
VGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCAqLzsg
fTsKIAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QjQx
OTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwotCQk1QzZF
NjU0MzFENUNFRkJGMDBGNzg2MkUgLyogVVJMUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzZFNjU0MDFENUNFREM5MDBGNzg2MkUgLyogVVJM
UGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNUM3Qzg4RDgxRDBGMUY0QTAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzdDODhENzFEMEYxRjJCMDA5
RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1QzhDNjAwOTIxMjc2Qjg3MDA4MkY4OEYgLyogU2hvdWxkU2tp
cFNhZmVCcm93c2luZ0NoZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzhDNjAwNzIxMjc2QjBGMDA4MkY4OEYgLyogU2hvdWxkU2tpcFNhZmVCcm93
c2luZ0NoZWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNUNBMURFQzYxRjcxRjFDNzAwRTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBMURFQzQxRjcxRTY4
NzAwRTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xOTE3LDcgKzE5MTYsNiBAQAogCQk2NTZEMzc0ODBB
REJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzMwMEFEQkE1REUwMEE0NTU0RCAvKiBT
dWJyZXNvdXJjZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTY1N0FGQUZDMjAwNDdBMjkwMDUwOTQ2NCAvKiBTcGVjdHJlR2FkZ2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTdBRkFGODIw
MDQ3ODk5MDA1MDk0NjQgLyogU3BlY3RyZUdhZGdldC5oICovOyB9OwogCQk2NTg0MzY4NjBBRTAx
Qjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1l
TG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYg
LyogVVJMLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNjU5QTdEMTMwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTlBN0QxMjBCNkRCNEQ5MDAx
MTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk2NTlEREM4MzA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5RERD
ODEwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUEyMTQ2ODA5N0EzMjkxMDBCOTA1MEEgLyog
UGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVB
MjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzgwNSw3ICszODAzLDYgQEAKIAkJQkNCQjhBQjkx
M0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50
ZXJ2YWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlCQ0JCOEFCQTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWxUcmVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNjEzRjFBRkIwMDA3
MzRERjAgLyogUE9ESW50ZXJ2YWxUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCQjhBQkIxM0YxQUZCMDAwNzM0REYwIC8qIFBPRFJlZEJs
YWNrVHJlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNCQjhBQjcxM0YxQUZCMDAwNzM0REYwIC8qIFBPRFJlZEJsYWNrVHJlZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDQkQyMUFCMEU0MTdBRDQw
MEEwNzBGMiAvKiBVUkxIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQkZCNTNEMERDRDI5
Q0YwMDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JGQjUzQjBEQ0QyOUNGMDAxOUIzRTUgLyogSlNXaW5kb3dQ
cm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUJDQzBFODc2MUJGRTcwRTkwMDhGN0Y1MCAvKiBIVE1MUGljdHVyZUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzBFODc0MUJGRTcwRTkw
MDhGN0Y1MCAvKiBIVE1MUGljdHVyZUVsZW1lbnQuaCAqLzsgfTsKIAkJQkNDNUJFMDEwQzBFOTMx
MTAwMTFDMkRCIC8qIEpTQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDNUJERkYwQzBFOTMxMTAwMTFDMkRCIC8qIEpTQ1NTU3R5
bGVTaGVldC5oICovOyB9OwpAQCAtNDY2OSw3ICs0NjY2LDYgQEAKIAkJRTFBMTQ3MDgxMTEwMkIx
NTAwRUVDMEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyog
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCAqLzsgfTsKIAkJRTFBMzE2MkQxMzRCQzMyRDAwN0M5
QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMzE2MkIxMzRCQzMyRDAwN0M5QTRGIC8qIFdl
Yk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUxQTY0M0YyMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUE2NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUUx
QThFNTY3MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBOEU1NjUxNzU1MkIyQTAwNzQ4OEU3IC8q
IENGVVJMRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTFBREVDQkYwRTc2QUNGMTAwNEExQTVFIC8qIE1lc3NhZ2VQb3J0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFERUNCRDBFNzZBQ0Yx
MDA0QTFBNUUgLyogTWVzc2FnZVBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMUFERUNDRTBFNzZBRDhCMDA0QTFBNUUgLyogTWVzc2FnZUNo
YW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
QURFQ0NDMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oICovOyB9OwogCQlFMUFE
RUREQTBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBREVERDgwRTc2QkQ5MzAwNEExQTVFIC8q
IEpTTWVzc2FnZVBvcnQuaCAqLzsgfTsKQEAgLTYxMTYsNyArNjExMiw2IEBACiAJCTFBOTI3RkNG
MTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBucGFwaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTkyN0ZEMDE0MTZB
MTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IG5wcnVudGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTkyN0ZEMTE0
MTZBMTVCMDAzQTgzQzggLyogbnB0eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBucHR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBOTg5NTZBMEFB
NzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVVJMQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUE4NEYw
MjE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbENvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQTg0RjAzMTQzQkE3QkQwMDUxRDE1MyAvKiBTY3JvbGxDb250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbENvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBQUREQTExNERCNDA5RjAwQUY2
NEIzIC8qIFNjcm9sbGluZ1RyZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2Nyb2xsaW5nVHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
NzQwLDggKzg3MzUsNiBAQAogCQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUM2ODhBQTAxRDM4MDUwOTAwMEI1NEZBIC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2ODhBQTIxRDM4
MTI2RjAwMEI1NEZBIC8qIFNvY2tldFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNvY2tldFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNUM2RTY1M0YxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxQYXJzZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1QzZFNjU0MDFENUNFREM5MDBGNzg2MkUgLyogVVJMUGFyc2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTFBhcnNlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzdDODhENzFEMEYxRjJCMDA5RDJGNkQgLyogU29ja2V0
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0UHJvdmlk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4QzYwMDcyMTI3NkIwRjAwODJG
ODhGIC8qIFNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUM5N0EzMzYxRjVGN0E2NTAwMTA1MjA3IC8qIFJlY3RFZGdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWN0RWRnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4OTUsOCArODg4OCw2IEBACiAJCTY1N0FGQUZBMjAwNDc4
OUEwMDUwOTQ2NCAvKiBTcGVjdHJlR2FkZ2V0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
cGVjdHJlR2FkZ2V0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU3QUZBRkIy
MDA0Nzg5QTAwNTA5NDY0IC8qIFNwZWN0cmVHYWRnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3BlY3RyZUdhZGdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZUxvYWRSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBV
UkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBV
UkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogVVJMTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVSTE1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5QTdEMTIwQjZEQjREOTAwMTE1NUIzIC8qIFN1
YnN0aXR1dGVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJzdGl0
dXRlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTlEREM4MDA5RTE5OEJB
MDAxQkYzQzYgLyogSlNEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MjkwNyw3ICsxMjg5OCw2IEBACiAJCUJDQkI4QUI1MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRl
cnZhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQT0RJbnRlcnZhbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JCOEFCNjEzRjFBRkIwMDA3MzRERjAgLyog
UE9ESW50ZXJ2YWxUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPRElu
dGVydmFsVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JCOEFCNzEzRjFB
RkIwMDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBPRFJlZEJsYWNrVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2luZG93UHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0JGQjUzQjBEQ0QyOUNGMDAxOUIzRTUgLyogSlNXaW5kb3dQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dpbmRvd1Byb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQzBFODczMUJGRTcwRTkwMDhGN0Y1MCAv
KiBIVE1MUGljdHVyZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSFRNTFBpY3R1cmVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE0MjUyLDggKzE0MjQyLDYgQEAKIAkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpT
TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5
NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRlVSTEV4dHJhcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQThFNTY1MTc1NTJCMkEwMDc0ODhFNyAv
KiBDRlVSTEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRlVSTEV4
dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVBODE0RTlFMjdEMDA0
NDlFMTMgLyogRmlsZUxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVMaXN0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQjcxNEU5RTM1ODAwNDQ5RTEz
IC8qIEZpbGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEZpbGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMUFCMUVCQjE0RTlFMzdBMDA0NDlFMTMgLyogRmlsZUVycm9yLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxlRXJy
b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyMzQsOCArMTYyMjIsNiBA
QAogCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAvKiBD
RlVSTEV4dHJhcy5jcHAgKi8sCi0JCQkJRTFBOEU1NjUxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJM
RXh0cmFzLmggKi8sCiAJCQkJNTE2MDMwNkIwQ0M0MzYyMzAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1D
Ri5jcHAgKi8sCiAJCQkJNTE3QTYzQkYxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNG
LmNwcCAqLywKIAkJCQk1MTdBNjNDMDFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWREZWNvZGVyQ0Yu
aCAqLywKQEAgLTE2MjQ3LDcgKzE2MjMzLDYgQEAKIAkJCQkyRDc2QkI4MzE5NDU2RjgxMDBDRkQy
OUEgLyogUnVuTG9vcE9ic2VydmVyLmNwcCAqLywKIAkJCQkyRDc2QkI4MDE5NDU2MzI0MDBDRkQy
OUEgLyogUnVuTG9vcE9ic2VydmVyLmggKi8sCiAJCQkJNTEyREQ4RTIwRDkxRTJCNDAwMEY4OUVF
IC8qIFNoYXJlZEJ1ZmZlckNGLmNwcCAqLywKLQkJCQkxQTk4OTU2QTBBQTc4RjgwMDA1RUY1RUYg
LyogVVJMQ0YuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yNDY5OSwxMSArMjQ2ODQsNiBAQAogCQkJCTE4NUJDRjI3MEYzMjc5Q0Uw
MDBFQTI2MiAvKiBUaHJlYWRUaW1lcnMuaCAqLywKIAkJCQk5MzMwOUVBMTA5OUVCNzhDMDA1NkU1
ODEgLyogVGltZXIuY3BwICovLAogCQkJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1l
ci5oICovLAotCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuY3BwICovLAotCQkJ
CTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLywKLQkJCQlCQ0JEMjFBQTBFNDE3
QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovLAotCQkJCTVDNkU2NTNGMUQ1Q0VEQzkwMEY3ODYy
RSAvKiBVUkxQYXJzZXIuY3BwICovLAotCQkJCTVDNkU2NTQwMUQ1Q0VEQzkwMEY3ODYyRSAvKiBV
UkxQYXJzZXIuaCAqLywKIAkJCQk4NjgxNjBEMTE4NzY2OUM0MDAyMUU3OUQgLyogVXNlckFjdGl2
aXR5LmNwcCAqLywKIAkJCQk4NjgxNjBEMjE4NzY2OUM0MDAyMUU3OUQgLyogVXNlckFjdGl2aXR5
LmggKi8sCiAJCQkJQTNBRjlEODIyMDMyNTMyNDAwNkNBRDA2IC8qIFVzZXJBZ2VudC5oICovLApA
QCAtMjc0NzYsNyArMjc0NTYsNiBAQAogCQkJCUNEMzE4NjIzMTk5RjFFMkEwMDMwQTBGNyAvKiBD
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREU1OTU5
NzFCRjI2RTIxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUZBOTA0Q0ExNzhFNjFGNTAwNEM4QTJEIC8qIENlcnRpZmljYXRlSW5m
by5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTFBOEU1NjcxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJM
RXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM2RkQxNTE2Qzc4MjY1MDBGODg3QzEgLyog
Q2hhbmdlVmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2OUREMTUwNUYwNzYw
MDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTVGRkYxMkIwMjY3NjAwQzFBMzU5IC8qIENoYW5uZWxNZXJnZXJOb2RlLmggaW4gSGVhZGVycyAq
LywKQEAgLTMwOTE2LDExICszMDg5NSw4IEBACiAJCQkJRTRBRkNGQTUwREFGMjlBMzAwRjVGNTVD
IC8qIFVuaXRCZXppZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwODZGRTk4MDlENTNBQUIwMDVC
Qzc0RCAvKiBVbmxpbmtDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDE3NjJFMDE3NjY4
NkQ5MDBEODM2QTggLyogVXBTYW1wbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk2NTkzOTIzODA5
QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjc3MjYwNTFBNURG
NkYyMDAzQzI0REQgLyogVVJMRmlsdGVyUGFyc2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0JE
MjFBQjBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1
QjNEREUxMjUxRjEyRDAwM0VGMjY5IC8qIFVSTElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNUM2RTY1NDMxRDVDRUZCRjAwRjc4NjJFIC8qIFVSTFBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0NDMjg5REYxQUEwRkU1RDAwOUE5Q0UzIC8qIFVSTFJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0Q0MzdBMjFENTdCM0ZFMDBBQjg1RUEgLyogVVJMVXRpbHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3Mjc2M0JGMTY2ODlCRkIwMDJGQ0FDQiAvKiBVc2VyQWN0aW9uRWxlbWVu
dFNldC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oCmluZGV4IGYzZTM0NmJlYTdlMThiZWQyYjg5
OTA2NzRiNmUyMmZjNGEwMjVjYzIuLjYyY2Q1NGE4NGFiNGE1ZjAyZmFjN2I3MjVmNjBkN2U4YWQx
MmMyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1v
ZHVsZVNjcmlwdExvYWRlci5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIERlZmVycmVkUHJvbWlz
ZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CiBjbGFzcyBNb2R1
bGVGZXRjaFBhcmFtZXRlcnM7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlw
dExvYWRlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlZE1vZHVsZVNjcmlwdExvYWRl
cj4sIHByaXZhdGUgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCmluZGV4IDUyMmIyZmZj
MDQzMmMxODk0YTQ1YzAyYjY5NTllOWU2MGE4NDM1NmUuLmQ1MzkxYzY5N2Q3Y2Y0ZjZmNWQ0MDc5
Y2EyNzJlZjc3ZWE5Y2FiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhY2hlZFNjcmlwdEZldGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRTY3JpcHRGZXRjaGVyLmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDYWNoZWRTY3JpcHQ7CiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFVSTDsKIAog
Y2xhc3MgQ2FjaGVkU2NyaXB0RmV0Y2hlciA6IHB1YmxpYyBKU0M6OlNjcmlwdEZldGNoZXIgewog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCA4ODY5ZGIxZjlhMzJkZGMzZDIwNWM4ZmY4NWQyMjk0MDE5ZDI5YjMxLi5kNmM3
OWNkMjBhZDU3MTI4YWQ3ZTY3OTZiNWUxZjY0MTYxZDQxYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTg5LDcgKzU4OSw3IEBA
IEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlLCBFeGNlCiAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZK
YXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCkKIHsKLSAg
ICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCisgICAgaWYgKCFXVEY6OnByb3RvY29s
SXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9m
cmFtZS5wYWdlKCkgfHwgIW1fZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCktPmFsbG93SmF2YVNjcmlwdFVSTHMobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSwgZXZlbnRI
YW5kbGVyUG9zaXRpb24oKS5tX2xpbmUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGY3YzA4MjRlMDZjYzcxNDY5YzA3MGQ2ODhlNDI2ODI0
YzljM2M0ZjAuLjZlOWRkY2EwOGRlMGY2ODE4YTA3Njc1YmFhNmY0YWU0ZGVlZWJiZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTYwLDcg
KzYwLDYgQEAgY2xhc3MgTG9hZGFibGVNb2R1bGVTY3JpcHQ7CiBjbGFzcyBNb2R1bGVGZXRjaFBh
cmFtZXRlcnM7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBVUkw7CiBjbGFzcyBXaWRnZXQ7CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaAppbmRl
eCA5MWZmOTljMTUwY2ZiYzhmYjZlYTcwZjVmNTA0MmM3YWExZTQzNDRiLi5hNjA2NmY0Y2UzOTk5
OTZjNjU0ZGI2MDNjMGE0NzI0ZGQwODQwMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaApAQCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNs
dWRlICJDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJVUkxIYXNo
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
SGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U291cmNlQ29kZS5oCmluZGV4IDU2ZWU2OTBkZTg0MTU5YTU3YzQyOGE5MDczOWIy
MDU2ZmZkZGJmZDYuLmI3ZDdlYjkzY2JhY2I3NGE4MWMwMDdlNWVmMDk4MTIyNWJjOWE5N2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKQEAgLTM0
LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFNjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NvdXJjZUNvZGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Tb3VyY2VQcm92aWRlci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFBvc2l0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZDExYjQyZTZl
N2U3NTQ3MDQyNzQzMzgxM2MzNTk4YzQwMDBlODk0ZC4uNWYzZWE3M2Y5NzY0MTIwMDVmYzM5Mjdi
MDZlMTFiNmI1MTgyM2ZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ1MzIsNyArNDUzMiw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgaWYgKE5lZWRzSW1wbGVtZW50YXRpb25DbGFzcygkaW50ZXJm
YWNlKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tSGVhcFNuYXBz
aG90fSkgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPEphdmFTY3JpcHRDb3JlL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuaD4iKTsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIpOwotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVVJMLmgiKTsK
KyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjx3dGYvVVJMLmg+Iik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmhlYXBTbmFwc2hvdChKU0NlbGwqIGNl
bGwsIEhlYXBTbmFwc2hvdEJ1aWxkZXImIGJ1aWxkZXIpXG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwpAQCAtNDU0NCw3
ICs0NTQ0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBpZiAo
JGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24pIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siVVJMLmgi
fSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmlu
ZyI7CisgICAgICAgICRpbXBsSW5jbHVkZXN7Ijx3dGYvVVJMLmg+In0gPSAxIGlmICRpbmRleGVk
R2V0dGVyT3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJET01TdHJpbmciOwogICAgICAgICBpZiAo
JGludGVyZmFjZU5hbWUgPX4gL15IVE1MXHcqQ29sbGVjdGlvbiQvIG9yICRpbnRlcmZhY2VOYW1l
IGVxICJSYWRpb05vZGVMaXN0IikgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNOb2Rl
LmgifSA9IDE7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJOb2RlLmgifSA9IDE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZh
Y2VOYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0lu
dGVyZmFjZU5hbWUuY3BwCmluZGV4IDExNzk1ODc1MzUxYmYyZTM2M2M5MTRlZGQ3NDEzNTFiNzQy
YTI5YWMuLjZkOWJkMTdiNmQxNTRlMGJmMGE2ZmY4YjAxYjAwMWQzMzU2ZGZlNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5h
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0lu
dGVyZmFjZU5hbWUuY3BwCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNNYXBMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU01hcExpa2UuY3BwCmluZGV4IDZkN2ZhYTJiNzdkYWQ2YTQ3M2QwOWNhNmZmMjliMzg5NmM1
YzRhMmIuLjA3OWM2NjYyOTRhZWVjYTgyNzRhZTJiY2U1ZWZlNGVhNzdiMTZiNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2Uu
Y3BwCkBAIC0zMSwxMyArMzEsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0
aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAKaW5k
ZXggMDA4ZGNlYmE0MmM2ZDRjNmZiMmM5YTkxM2ZmYjZkMzNmZDBmMWM4My4uOTdkNGYzYWI0ZmEx
NjAyYWU0OTBhZTg2Yzk2ZTBjMzg0NzhiZjkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3Bw
CkBAIC0zMSwxMyArMzEsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5O
YW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cAppbmRleCA2MjkxNmQzNmJiNTVhNjkzMjI2MmZmYTU1ZGMyNGNlNmVlM2JlODYzLi40ZDlmMTQy
YzU0NDMyODFlNThmZmNiMDU1NjRlNWNkY2JmYzRkNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcApAQCAtMzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zLmNwcAppbmRleCA2NDA2YmU5OTkwM2QxNGMxYjE3MTA4YjhmYTNkMTI5MmUxZmM5
MDcwLi40YTAyNzkzNmI5ZGI5OTM2MGJmZGQ3OGE5N2I2YjM1ZDY0Njg2Y2FlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDRVJlYWN0aW9ucy5jcHAKQEAgLTM0LDEyICszNCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
LmNwcAppbmRleCBhZGFkMDQ5YjE0YzRhYTVmMjVhZWFkOTQ2MGIxYzJiZmE2MTkyMjRlLi4zNDJh
MGRmOGQxZTI4MzUyODRiYzM2YmU2MWRiYmJmMjdiYjI4ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
Zmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKICNpbmNs
dWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCmluZGV4IDQ2MWM0ZDk2YTVmMzkw
ZGM4ZjE5MDA5NWNiNzQ1NjRhNzEwN2E3MjIuLjNhZDhjMjM3OTNhN2E2OWI4MzM0ZGY1YmQ3NTQz
MjNmZDlhYWI3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKQEAgLTM3LDEyICszNywxMiBA
QAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL1ZhcmlhbnQuaD4KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCAxZGIwYTMyZDU1ZTVjYjdjMGY5NGM4NWYyYWZj
OWM5ODJiMmViMDBkLi4wMDhiNWU4OTc2ODY5NWYyNWM4MzNiYTM0NjAxZDRiZTU3ZDBlMjQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5jcHAKQEAgLTI3LDEyICsyNywxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5zLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAppbmRleCBlMWY5ZjE3MGE2Y2Q3
MjNkYmU5NTU4NGRjZjVmYWQwNDI0MmNlZTg4Li5hOTQ1NGU5YmE2YjkzODA0YTNlOTA1OTRlOWE3
MGU2MGNkNmExYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKQEAgLTI2LDEyICsyNiwxMiBA
QAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKaW5kZXggNzZjNDBm
YjA0NTc5NTAzZWE1YjUyYzQ3ZTA0OTYwZGIyMTk5OWYzYS4uOTVkNzY3MDQ3Mzg4ZTM4YzAxMDA0
Mjk1ZDhjZjEzNDU2YmQ0NGJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTQxLDEyICs0MSwxMiBA
QAogI2luY2x1ZGUgIkpTRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnJhbWVUcmFjZXJzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCmluZGV4IDg3YjM1M2M1YjU5
ODU4OWQ1OTAyYjcwZTY0ZjM5MDcyMWZhOTJjOTMuLjEyN2ZhYTk2N2QyYWM1MzZlNDZhYjkzZGJm
NTZmZDUyNTRmZTE5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKQEAg
LTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNTVkZWE4ZWVhYjA3Zjc1MDVmMWE2YmRmY2MyNDFiNjcx
Y2JkZWE1Ni4uNDVkYzE5MjcwNDliZTI3MjA1NTJhOThiN2RmMjM1YjBmNWExNWJkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMzAsMTEgKzMwLDExIEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3Bw
CmluZGV4IDMwOGUzNGYwMDFhYzJkOGIzNTNlODA1MWQ4ZWM1MWJiYWRkNmVlMGEuLjcxZTNiZjM3
NTQ0MjllYzdhN2NjY2E4MzU1MWQzOTI4OGFjMWVlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90
QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3Bw
CmluZGV4IDIzOGE0OGY3YzY1ZjBkM2NiNmYxZTAzZjdhMjllOWU4MjllYmNiY2YuLmQzMmMwNGNj
NTBlZWRmMjY5ZWQ4MDFkNjkxMjNmNmI1MDU0MDQ3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3Bw
CkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNo
b3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggMzQyMzhiYzVkMjEzZWM0OTlm
YmU1YTI1NWM1NjE4ZjMwNjg1YjJkYy4uYWMyYmViYjJkOTMyNGExYTJjMmFkZDZhMTYwZDM3Yzc3
NWMyM2I4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAt
MjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xv
YmFsT2JqZWN0LmNwcAppbmRleCA3MWI4YmRkZjY4ZGFlY2M3M2UyMjFjZTgzZDY2MDczYzczOGI0
ZWM4Li5iMjBiODNjN2JlOWU1YjM3YjljYzU3NTg2NjNlMTc4NTU4NWUzOTJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2xvYmFsT2JqZWN0LmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICNpbmNsdWRl
ICJUZXN0R2xvYmFsT2JqZWN0QnVpbHRpbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCA2NjA3OGJkNmNiNTExZTFkMmY0Njg4ODI1
ODJhN2Y5MWZiYzA2YmM5Li41Nzg5MjUzN2JlODc4MzI0YTVkZGU4ZjZkMWM1OTJjMWI5NjJiNzI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
CkBAIC0yNywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNo
b3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggNjIwM2Nj
MGI5ODczOTI0NzdhMWQ5YmY3YjU3MGNiZTM3YzEwZTM0Zi4uMzU1YWRjZDkwYWVmY2Y1OTVkMDdl
ZDU0NmU0Y2FhYjIwYjNlZTI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1
ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVy
dHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bv
aW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcAppbmRleCAzZmRjNTYwNDAzNTBlMTMyMWRiMjQ2OTdiNzI3MjU1N2RkMWE5MDhk
Li43Njk2NzNhZmJiNGU2MjAxZDk0YzMyYTg0Y2YyNDllZTYwMzg4ZmU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjksMTMg
KzI5LDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA0YzY0YzE5ZWI4
NTgyNjAyOWY2MGI5MjViMzE5ZTExYTcwM2Q5NGY3Li42NGEzNzg5OWE5ZDkwN2ZjODUyOTk4NmIz
ZDA0OTFiZjcwNzg2NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMzQsMTIgKzM0LDEy
IEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpIHx8IEVOQUJMRShDb25kaXRpb24yKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNw
cAppbmRleCA1NWZmZDY3YTE1MGZlMzJjNWVkYTM1ZTMyZDI0NmY2OTMyZThlYmFhLi5jZmYzMmZm
MGViM2FkZGE3N2ZlOTQ2M2EyYTRmOTljZTY1OGI0OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCmluZGV4IDk3OWMw
ZjhjYzViYWQ4NDZmMDk2MWNiZGEyNjRlMGNiNzZjMTgzMGMuLmFjMWU4ZTdmOWVmODI5Mjc4ZTI0
NTg0NWE2NjIzMWE1ZmNiY2FiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcApAQCAtMjgsMTMgKzI4
LDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cAppbmRleCA1MGFkYThjYWYwZWU2ZDAyYmFkYTgwMWIwYjY5OGFlZTk1OWQ5MzYwLi4wMGZhZjlm
MDU3M2ZkMDA3NWRlOGRlNTE0OWU4ZWI1MDg3NGM5NGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggMzE4N2QyZGFmM2Q2ZTcyMWU3
ZTAwODVmMjdjY2IyMmYyYjQxZGFmOS4uM2ZlYmQxY2RlYzQwZWNlZmJhMzJiY2ZjNDM2MzI0MzUx
NWNlNmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTI4LDEzICsyOCwxMyBAQAogI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1l
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggZDI3MTk0ZTgzZTZhYzc3NjUzMWE5ZGI3
NzMwZjA1NzRjMmRmYWUxZC4uZTA1ZDY1NTQ2YmZhMTEzNmEwODY0Mjk1ODQ3MmNmNTBjYTJkNTM1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5
TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGIxZjM2ZDczZTAzNWFmZTc4ZWZlOTMyYjE0
ZGY5M2NlZmZiYTRkZjIuLmUwMTViMTc4YTc2NTM4ZjgxOWU1M2FmZTdjNWZiYmE3NDE4NGNhM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiSlNET01P
cGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDkyOThhMTc2MGMwODM1MjY2YzQyZWI2
NjQ4NjRiZjY0NDgyYzdiMzAuLmYxYTg0YThiYWQ5YTVkNjA1YTEwZTQ5ZDljNWM0MjczZDk5Mjg3
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTI5LDEyICsyOSwx
MiBAQAogI2luY2x1ZGUgIkpTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCA1N2Q2N2MyMzRlMjZiNGRkZDA5NDdlNDAy
ZWY4OWI0NTAyYjZkZDQzLi44NjJiNDU5ZmJiMjFkN2QxMDEyNTY5NWY1YTBlYWVmZWQ3NTRmNmY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcApA
QCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90
QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXgg
ZDBmY2QyZjJiOTAzMjQ5NWI0YjY1OGJlOWIzMWI3ZmU1NWEwODg2YS4uYzEwNWYxNWRiYWY4NWRi
ZjNmZTQ0MzNiYTdhODA1NWE4NDJmYWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNp
bmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCAyNTE0MTBiNWZhZWY3MDA0YzAxMTY2NjZmY2U4
ZTFlOTBhMzM3OWE5Li42NDEzOWM4ZjZiMjBiYjM0YjYyMzZkNjIwNDFjN2U2ZDAyOWQ4YTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAK
QEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRleCAyNzU4Y2Ex
MGExNDEyYzQxMzliMzI1ODRmM2NmOTJiNDAzYWJiMDE0Li5kNjE0YmNlNDIxZmUzNGM2ZmJlNjc4
YmQzN2U1MzJkNTJkMjc2NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTI4LDEzICsyOCwxMyBAQAogI2luY2x1ZGUg
IkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlO
YW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCmluZGV4IGNh
MmJmNjEyYWNiYzJmZDRlMDQ0YTE1OWE3NjQ2N2U1YWFjYWI5YjIuLmVhNGM1Y2QyN2Y4ODc5ZDE3
OWViYmI5MTUzZGY5OTM4MTBiZTc2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aC5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4
IDkxMjBmNGJlN2YyMWI3OGQyYzliZmYyZGIxNzI1YTk0OTc0YmZjZDEuLjZlNDBkZWYzZDQ0YmEz
N2Y3NjQwMDk5MTI4OWFmYzEwZTI5YjdiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
R2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNE
T01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCmluZGV4IDNiYjdkM2I3ZTEyZjgyOWM4OGMzNDRiYWJkYjQ4NjgyMmY1N2NiYTIu
LmQzOTI0Y2JhNjA4NmNmOTA4NDZiZjExMDg1MDkzNDIwMThlNDMzNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldp
dGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTI5LDEyICsyOSwx
MiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcAppbmRleCBjYmQ1ZDMxYTYyNjdlYTFlZTI1ZGUwOTE0ZDYxNDY4YmZj
ZDkyNWI1Li5jN2EzYzZhOWQ1OTVkZmU2NzJjYzcyYWJkZGUwM2VmZTZjODMyOGZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTI4LDEyICsy
OCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCA5ZmNiZjY5N2I2Mzlh
ZTAzZGRjMGViYjIwODNjZTc5OWY3Mzg4MzUzLi45OGVjMTNkYzJlNzllZjVmZGE2NGJmNzJkNzQz
ZjFiY2YzOWU0MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAKaW5kZXggYjhhOWZhZGU4NWI0ZTk4N2M3MDUyYTAyOWE5ZGQ4ZmNkYTZkMzI1MC4uZGRk
ZmY4Y2NkNzI1OWIzNzQ1YTY2Y2M3ZGJlNmFhZmZmODA5ZTZhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjksMTIgKzI5LDEyIEBA
CiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRleCAxNzE0Nzc1NTBiMGMzODQ1OTU2MmY2YTc1YzJl
ODNkODMxNWRiOTI0Li5iNjYxZjUzY2QyODcwODg4M2ExMWM4YzIwNWU3MDQ4MDk1MzE3ZjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIu
Y3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKaW5k
ZXggMTAzZjkxYzFiYWEyYWEzOWYxZTM5OWFhZmVjZTU4MTE5MTExNmRlZS4uYzM1ZmY4OTZjNDhk
OGJiMjg3ODIzYmRmMGE0NjA3YTFiM2RhODcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcApAQCAt
MzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IGZjMTIyYTJlMmJiZjg3YmEx
NGIxNmY3MDc5OWU2YzI4MGYxZTRjNGQuLjlmMTBkNjRlZTVhMGQxMzE5YjhjY2Y4OTRkYTkwYzhh
YzE4YTE4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCmluZGV4IDQ4MDdiMzY1NTMzMThlMDQyYTliNjdi
NDQ0MDgxMTlkNjg0ZWQxZGUuLmM2MGRjYWI2MzU5NTk3ZGI0Zjg4MGVkZjQwNDBhYzgzNDM1YTgy
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNE
T01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5j
cHAKaW5kZXggZGQ1MTkzMDczM2I2Y2RhYTQ5ZTFmNjg1NmI2YjcxZjFlMTE3Y2FkZS4uNDBiOTgx
ZTM0NDEwNTdkN2NiYjdmZWUxNzBlZTUzY2I5MDMwMTc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggZGU5NmQzYjhjYmYyMDEyOGIzOTYz
NWRiMzZlMDY4NGU5Zjg2NjdjNi4uMmIyZGVkNGMyYzY4OGFmNDQzZjRhOTdjMGZkNDliMTI2MDAw
NjVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAppbmRleCAwY2E1ZGJkZTBjOTczNGUzOTgxZWMxMWMxZTc1ZTc4ODlhYmI3YmJmLi45ZjI1
NGI0N2ViOTllZTk5MGQ3NTdjZDI3Mjg4ZWM4YTBiODk3MTU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNzcs
NyArNzcsNiBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CkBAIC05MSw2ICs5MCw3IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRl
eCBlYWYwOTJhZjNmM2E3MWU5ZDNjNGNmNjAxMWJmZDkxOTJhYjIxYjVhLi4xYWRiNzAyMTJmNDUx
Y2NlODViMDhjZGEwMzZmZTQ3ODA4OWMzOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RP
TUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKaW5kZXggMDU4MTQzYmExNGJiNGViMjI0MDljOGQy
ODQ3Mzc1M2Q4NGYwM2U3Zi4uYjA1NTY2ODU5NmJjNmYyN2M4MmM3MTZmZDIzNGU1ZDgwYWE4YTRj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkpTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
dGVyYXRvck9wZXJhdGlvbnMuaD4KQEAgLTM3LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRl
eCAwZGI3NzRhZjEyNWY1ZDE4NTBmNzlhNjE3MTQ3NWUxMzdhYjdjZDYxLi5jMWE2MzQzMGFjMGQ4
YWMxM2JiYTRjNGE3NDM5NDkwMThjNzExZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBs
dWdpbkludGVyZmFjZS5jcHAKaW5kZXggMjgzNjI0NzNhNzA5ZjU5NjQ2YmJlYjYwNGJlM2RhMTEx
YTBhOGNlZC4uYmVjNTdkNTUxN2Q1YjA5YzhkMjBhMGFkZTQyOTdjZjBhZThkZmNlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdp
bkludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKQEAgLTI3LDEyICsyNywxMiBAQAogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50LmNwcAppbmRleCA4YjBmNTFlZDMxOTQxYzg0YWViMjRhMzczYmU5YjE3YzA3Zjc2M2Q3
Li43YTI1ODk4NjcxNDYzMGEzMDUzYmM3NDgxYTVkZTBmZWYxYmQ3OThmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApAQCAtMzQsMTEgKzM0LDExIEBACiAj
aW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5j
cHAKaW5kZXggZTNjMWNjMjU5YTFkMjc4NzlhMjY3ZDlmNDQ1OGQ1ZDQ4OWE2ODc5Mi4uNzhkMWM0
MWM0MjhjMDFlMWY3NWY2ZTkxYTY0YWViMzA1YzBhNTI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uLmNwcApAQCAtMzYsMTMgKzM2LDEzIEBACiAjaW5jbHVkZSAiSlNUZXN0U2VyaWFsaXph
dGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuaCIKICNpbmNsdWRlICJKU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdEZpbmFsLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAppbmRleCA5NjM2OGYzZTZmN2JmZmE4ZTFh
N2VmYmZlN2Y1MDYzZjY0NmRiZGE3Li4xMzNlZGEwMmU2NDAxNjNmYzliZTY1NDM0ODIwZmI5MjVm
MDRjMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5k
aXJlY3RJbmhlcml0YW5jZS5jcHAKQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0LmNwcAppbmRleCAzN2Y2NTRkZGZjZDdjMTViNzhlYjY3MWM0YWFjNjc4NWQ1NDAwYmI3Li5h
ZDUzMWIyMGI3NGJjNmQyNTk1NjkxODJlYWVmYzUzMTFjZjhlMDkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRG
aW5hbC5jcHAKaW5kZXggNWU4NjkxMGFiNTIwODhlMzE3NzkzNjQ5ZDRjNjA3MmFjNGU3MmI5NC4u
YTFhYzJkMDEwZTUxYzQ4MzdjMGYwYjU0NjIyODAzNGFkMGRiODRlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0RmluYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcApAQCAtMjksMTIgKzI5LDEy
IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggMzQyZWQxYWE1MGI0Njg2OGJmYjM5
MTY2YWUwZjgzZDA4YzY4MDJhOC4uZGY3ZGZiOGY5NjFkOTRmZThlMjRmMDFkMjQxZmIyNGY2YTk0
ZmFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAKQEAgLTM3LDEzICszNywxMyBAQAogI2luY2x1ZGUgIkpTTWVzc2FnZVBv
cnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ci5jcHAKaW5kZXggZmYyY2FkMmNhZmZjOWFkZjFhZmZhNTNjZGYwOTc3Y2ZjODNlODcxNS4uNTI0
MmJiOGJhYWM2ZmM4Y2ExNDA0MDYwZjE1MGJiMWRkN2MwMTVkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKaW5k
ZXggODllZGZiNGQ1NGZmY2UyOTMxMmU5ZGMzNzBhMjkwNGU4NjM4OTQ4Zi4uN2NhZTI0MzllZjYy
N2I2YzI2NjE3Mzk0YjkxY2M4YjgwNGZmMDU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb24uY3BwCmluZGV4IGIxNmI2ZmI0YmQxNGUyNGQyZGFlMGY0NGJhYmVhNjRkODQ3
MDBmNDQuLjUwYTQ2ZjYxNGY5ODQ4Yjc2OTI4NWUxNjM4OTA3M2MxMjkxNTdmZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKQEAgLTI4LDEy
ICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCmluZGV4IDVhNTRhYzE0
M2NiMjc5MzY0ZTY0NmMzMzM0YjBjYmMxN2FlODM0MzUuLjBhMzNhZjM3OGEyYjEyMTlmMjkyODRk
Yzg5ZTE2ZDM4YjcyNDc3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNp
bmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAppbmRleCBmMjUxOGE3MWVkNjg2MWM1YThjYWY2
YmViMzRjNWZjZjZiZDMwZGVmLi40OTA0OTE3NGUwMzZmNWYxODA2MjQ0YzNmMmViZDE5ZTE2OTYy
ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01P
cGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
LmNwcAppbmRleCA4MTIzNzJiNGQ0ZWU3MGM0MjNhMjg0MzM0NjUxZDExNThlYWFjZTU5Li5jOWM1
MjY5OGI4MmQzZmZmMjdkMjM0NGZkZGI1NTQzZDA5MmNhNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCkBAIC0yOSwxMiArMjks
MTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKaW5kZXggMzkxN2I0ZDkyOTZiYTUyM2RjMTMw
NzA2MTljZjRjZWQzOGE4M2ZiMS4uNzVlYzM4YWRiOGZlODg5MzA0NjAzNTM0NmI1NjQ0NmQ3YjJi
NjJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGUuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlv
bi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNu
YXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5
cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5jcHAKaW5kZXggMWU2MTNhYWIwNjUyNGFmNTU2MDYzM2Q4ODIyNDk3ZmQxYzAx
ZTBhMi4uMTg2YTQxNmRhODczYTY0ZTVkZjVjNjZlYmJmZDA5MDFhY2U1ZGQyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
VHlwZWRlZnMuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAKICNpbmNsdWRlICJKU1Rlc3RTdWJPYmou
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
U25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kLmNwcAppbmRleCA3MjQwNzE1NmViZDYyNjg2YTEzNGIwMWE0ZTQwY2Q1MTE2Yjc1OWRmLi5k
MGVhYmEwOWZkMTJlZWFmNWExMzdhMmFiNGRjMjQwYjk5N2I3Njk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25z
QmFja2VuZC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRJbmZvLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTE5NCw3ICsxOTQsNyBAQCBCbG9ja2VkU3RhdHVz
IENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0Zv
ckxvYWQoY29ucwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6Ok1ha2VIVFRQUzogewogICAgICAgICAgICAgaWYgKCh1cmwucHJv
dG9jb2xJcygiaHR0cCIpIHx8IHVybC5wcm90b2NvbElzKCJ3cyIpKQotICAgICAgICAgICAgICAg
ICYmICghdXJsLnBvcnQoKSB8fCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBvcnQoKS52
YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpKQorICAgICAgICAgICAgICAgICYmICghdXJsLnBvcnQo
KSB8fCBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVy
bC5wcm90b2NvbCgpKSkpCiAgICAgICAgICAgICAgICAgd2lsbE1ha2VIVFRQUyA9IHRydWU7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjQ0LDcgKzI0NCw3IEBAIEJsb2NrZWRT
dGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1
bGVzRm9yUGluZ0xvYWQoCiAgICAgICAgICAgICB3aWxsQmxvY2tDb29raWVzID0gdHJ1ZTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25U
eXBlOjpNYWtlSFRUUFM6Ci0gICAgICAgICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikg
fHwgdXJsLnByb3RvY29sSXMoIndzIikpICYmICghdXJsLnBvcnQoKSB8fCBpc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wodXJsLnBvcnQoKS52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpKQorICAgICAg
ICAgICAgaWYgKCh1cmwucHJvdG9jb2xJcygiaHR0cCIpIHx8IHVybC5wcm90b2NvbElzKCJ3cyIp
KSAmJiAoIXVybC5wb3J0KCkgfHwgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBv
cnQoKS52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpKQogICAgICAgICAgICAgICAgIHdpbGxNYWtl
SFRUUFMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3I6CkBAIC0yNzUsMTIg
KzI3NSwxMiBAQCB2b2lkIGFwcGx5QmxvY2tlZFN0YXR1c1RvUmVxdWVzdChjb25zdCBCbG9ja2Vk
U3RhdHVzJiBzdGF0dXMsIFBhZ2UqIHBhZ2UsIFJlc291cgogICAgIGlmIChzdGF0dXMubWFkZUhU
VFBTKSB7CiAgICAgICAgIGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwgPSByZXF1ZXN0LnVybCgpOwog
ICAgICAgICBBU1NFUlQob3JpZ2luYWxVUkwucHJvdG9jb2xJcygiaHR0cCIpKTsKLSAgICAgICAg
QVNTRVJUKCFvcmlnaW5hbFVSTC5wb3J0KCkgfHwgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG9y
aWdpbmFsVVJMLnBvcnQoKS52YWx1ZSgpLCBvcmlnaW5hbFVSTC5wcm90b2NvbCgpKSk7CisgICAg
ICAgIEFTU0VSVCghb3JpZ2luYWxVUkwucG9ydCgpIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclBy
b3RvY29sKG9yaWdpbmFsVVJMLnBvcnQoKS52YWx1ZSgpLCBvcmlnaW5hbFVSTC5wcm90b2NvbCgp
KSk7CiAKICAgICAgICAgVVJMIG5ld1VSTCA9IG9yaWdpbmFsVVJMOwogICAgICAgICBuZXdVUkwu
c2V0UHJvdG9jb2woImh0dHBzIik7CiAgICAgICAgIGlmIChvcmlnaW5hbFVSTC5wb3J0KCkpCi0g
ICAgICAgICAgICBuZXdVUkwuc2V0UG9ydChkZWZhdWx0UG9ydEZvclByb3RvY29sKCJodHRwcyIp
LnZhbHVlKCkpOworICAgICAgICAgICAgbmV3VVJMLnNldFBvcnQoV1RGOjpkZWZhdWx0UG9ydEZv
clByb3RvY29sKCJodHRwcyIpLnZhbHVlKCkpOwogICAgICAgICByZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKaW5kZXggYTI5NmZmOTdmYmNmZWM5
MGI1YTYwY2ZlYzNjODBjNDBlOGU0MTgzMy4uMzRjZmFjYTUwMWZkM2M3MmM5NjY3ZThmNGI3MGRl
Mjc3YWFjNWM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKQEAgLTM3LDcgKzM3LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKLWNsYXNzIFVSTDsKIAogc3RydWN0IFJlc291cmNlTG9hZEluZm87CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlLmgKaW5kZXggNWQzODZhZmRmYjI5NzNmNjk2MDI3MWNmMzY3OTEyYTFlMzc3NDNl
NC4uMzZjN2M2NGRjYjg0MjcwMjQ2MzBmMGY3OTE2MzFiNzc4ZGRhOTg3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlLmgKQEAgLTIwLDEyICsyMCwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMu
aAppbmRleCAzZjRiNjVhYjcyODhkZDBmM2IxNjFiYTQxYmQ1MDVkZjJlMzc1NTBjLi4zNDIxNjNk
YjUwMzYzNjIwNDgzZWJkMDJiM2JjYzkyZmRjNmEyODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydGllcy5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247
CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENvbG9yOwogY2xhc3MgSW1tdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOwotY2xhc3MgVVJMOwogY2xhc3MgTXV0YWJsZVN0eWxlUHJvcGVydGllczsK
IGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIFN0eWxlZEVsZW1l
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA0ZTQ4YzMwNGE1NzcxMWUzZjc3
NDg2ZjNjOTY3NjJkNjRmZTFiMTA2Li4yMGNmY2Q3MTE1MjViM2ZkYzAzNDA4ZmNlMjU2M2M0NjE0
M2JlZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTU3LDcgKzU3LDYgQEAg
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFt
ZVZpZXc7Ci1jbGFzcyBVUkw7CiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFzcyBLZXlmcmFtZVZh
bHVlOwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCmlu
ZGV4IGU4YjViZmM1NjI4N2E0ZDk4MjhlODkzZDg1NzljYmE4YjhlZWJjYzIuLmJhYjRlNjI3OTQ3
YjZlZTg1ZDg0OTk1YzNmZDAyMzQyMThkNDM4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaApA
QCAtMzAsNyArMzAsNiBAQCBjbGFzcyBDU1NJbXBvcnRSdWxlOwogY2xhc3MgTWVkaWFMaXN0Owog
Y2xhc3MgTm9kZTsKIGNsYXNzIFN0eWxlU2hlZXQ7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFN0eWxl
U2hlZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVNoZWV0PiB7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKaW5kZXggMmMyYmQxMTdhZTBhNWIyM2RmMjUw
MTRiOWU1YjkzMTA3ZDk1OGE0NS4uZDExMjA5ODRmNWY0NDdhN2QyZmI0MTdlZmM4MWNmOTU2ZDlh
YTNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaApAQCAtMjIsMTAg
KzIyLDEwIEBACiAKICNpbmNsdWRlICJDU1NQYXJzZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ2Fj
aGVQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKaW5kZXggMWVmNzcx
MWZkMGNiZGI1MTUyMGZmZGFkODYyMzc3Nzc2ODkyZDI2NC4uZGJkMjM3NzUzNGE0Yzk4NzU5OWFl
MWJjYTRmOGEzNzJjNWQ1ZGEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJDb250ZXh0LmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkNTU1BhcnNlck1v
ZGUuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNs
dWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgzLDcgKzgzLDcgQEAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgc3RyaWN0Q1NTUGFyc2VyQ29u
dGV4dCgpOwogc3RydWN0IENTU1BhcnNlckNvbnRleHRIYXNoIHsKICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBrZXkpCiAgICAgewotICAgICAgICBhdXRv
IGhhc2ggPSBVUkxIYXNoOjpoYXNoKGtleS5iYXNlVVJMKTsKKyAgICAgICAgYXV0byBoYXNoID0g
V1RGOjpVUkxIYXNoOjpoYXNoKGtleS5iYXNlVVJMKTsKICAgICAgICAgaWYgKCFrZXkuY2hhcnNl
dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBoYXNoIF49IFN0cmluZ0hhc2g6Omhhc2goa2V5LmNo
YXJzZXQpOwogICAgICAgICB1bnNpZ25lZCBiaXRzID0ga2V5LmlzSFRNTERvY3VtZW50ICAgICAg
ICAgICAgICAgICAgPDwgMApAQCAtMTE1LDcgKzExNSw3IEBAIHN0cnVjdCBDU1NQYXJzZXJDb250
ZXh0SGFzaCB7CiAKIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0
czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6
OkNTU1BhcnNlckNvbnRleHQ+IHsKLSAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFs
dWUoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90
LmJhc2VVUkwpIFdlYkNvcmU6OlVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAg
ICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6Q1NTUGFyc2VyQ29u
dGV4dCYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LmJhc2VVUkwpIFVSTChXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25z
dCBXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuYmFzZVVS
TC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAgICAgc3RhdGljIFdlYkNvcmU6OkNTU1Bh
cnNlckNvbnRleHQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OkNTU1BhcnNlckNvbnRl
eHQoV2ViQ29yZTo6SFRNTFN0YW5kYXJkTW9kZSk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAppbmRleCA4NzFkNTk5MWI1NzZiYjMwZjQ2NTg3ODEx
ODczZGFmNmZhNThiY2E0Li4yNTc1YzBkZjJiODdjNTkwNWY3ZGJjMmNlNmZjYzM1NGZiN2E5N2Jk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgKQEAgLTM1
LDggKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIFVSTDsKICAgICAKIC8vIFNwYWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5l
ZCBieSB0aGUgQ1NTIHNwZWNpZmljYXRpb24uCiAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3Mz
LXN5bnRheC8jd2hpdGVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCA2
ZDM5ZGE0NTVkNDJmMzM4MmRjNzQyNWRhZDgwMDdiZmQ2NzA3YjllLi42MGUzYjdjZTY5YmY5ODA4
NDY1MTE3YzhhNjQzODYzOWIxNzQ1MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNw
cApAQCAtNDMsMTAgKzQzLDEwIEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RhdGljUGFzdGVib2FyZC5oIgot
I2luY2x1ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1ZGUgIldlYkNvbnRlbnRSZWFkZXIuaCIKICNp
bmNsdWRlICJXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCIKICNpbmNsdWRlICJtYXJrdXAu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjU1LDcgKzI1NSw3IEBA
IHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIGlmICh0eXBlID09ICJ0ZXh0L2h0bWwiKQogICAg
ICAgICBzYW5pdGl6ZWREYXRhID0gc2FuaXRpemVNYXJrdXAoZGF0YSk7CiAgICAgZWxzZSBpZiAo
dHlwZSA9PSAidGV4dC91cmktbGlzdCIpIHsKLSAgICAgICAgYXV0byB1cmwgPSBVUkxQYXJzZXIo
ZGF0YSkucmVzdWx0KCk7CisgICAgICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgZGF0YSk7CiAgICAg
ICAgIGlmICh1cmwuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2FuaXRpemVkRGF0YSA9IHVybC5z
dHJpbmcoKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gInRleHQvcGxhaW4iKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggZjU4ZWIyZTU5Y2IwZDhiMTFjYjVhNTY0MmMwMWU0MWZiYmVjOGRl
Zi4uODcyNGU4MTE0YmIyMTRiNTAyY2VjYTk4YWM2ZjBjMjc3ZDI5Y2VhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC0zMTM2LDcgKzMxMzYsNyBAQCB2b2lkIERvY3VtZW50Ojpsb2dFeGNl
cHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
cwogCiB2b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgY29uc3Qg
VVJMJiBuZXdVUkwgPSB1cmwuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IHVybDsKKyAgICBjb25z
dCBVUkwmIG5ld1VSTCA9IHVybC5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiB1cmw7CiAg
ICAgaWYgKG5ld1VSTCA9PSBtX3VybCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNDI2LDcgKzM0
MjYsNyBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1
aXYsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbAogICAgICAgICAgICAgICAgIGNvbXBsZXRl
ZFVSTCA9IG1fdXJsOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNvbXBsZXRl
ZFVSTCA9IGNvbXBsZXRlVVJMKHVybFN0cmluZyk7Ci0gICAgICAgICAgICBpZiAoIXByb3RvY29s
SXNKYXZhU2NyaXB0KGNvbXBsZXRlZFVSTCkpCisgICAgICAgICAgICBpZiAoIVdURjo6cHJvdG9j
b2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKICAgICAgICAgICAgICAgICBmcmFtZS0+bmF2
aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVkaXJlY3QoKnRoaXMsIGRlbGF5LCBjb21wbGV0
ZWRVUkwpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSAiUmVmdXNlZCB0byByZWZyZXNoICIgKyBtX3VybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVk
VG9MZW5ndGgoKSArICIgdG8gYSBqYXZhc2NyaXB0OiBVUkwiOwpAQCAtNDg4OCw3ICs0ODg4LDcg
QEAgVVJMIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVVJM
JiBiYXNlVVJMT3ZlcnJpZGUpIGNvbnN0CiAgICAgLy8gU2VlIGFsc28gW0NTU11TdHlsZVNoZWV0
Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKQogICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBVUkwoKTsKLSAgICBjb25zdCBVUkwmIGJhc2VVUkwgPSAoKGJhc2VVUkxPdmVy
cmlkZS5pc0VtcHR5KCkgfHwgYmFzZVVSTE92ZXJyaWRlID09IGJsYW5rVVJMKCkpICYmIHBhcmVu
dERvY3VtZW50KCkpID8gcGFyZW50RG9jdW1lbnQoKS0+YmFzZVVSTCgpIDogYmFzZVVSTE92ZXJy
aWRlOworICAgIGNvbnN0IFVSTCYgYmFzZVVSTCA9ICgoYmFzZVVSTE92ZXJyaWRlLmlzRW1wdHko
KSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0gV1RGOjpibGFua1VSTCgpKSAmJiBwYXJlbnREb2N1bWVu
dCgpKSA/IHBhcmVudERvY3VtZW50KCktPmJhc2VVUkwoKSA6IGJhc2VVUkxPdmVycmlkZTsKICAg
ICBpZiAoIW1fZGVjb2RlcikKICAgICAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwpOwogICAg
IHJldHVybiBVUkwoYmFzZVVSTCwgdXJsLCBtX2RlY29kZXItPmVuY29kaW5nRm9yVVJMUGFyc2lu
ZygpKTsKQEAgLTcxNjIsOSArNzE2Miw5IEBAIERvY3VtZW50JiBEb2N1bWVudDo6ZW5zdXJlVGVt
cGxhdGVEb2N1bWVudCgpCiAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PERvY3VtZW50Jj4oKmRv
Y3VtZW50KTsKIAogICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQotICAgICAgICBtX3RlbXBsYXRl
RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBibGFua1VSTCgpKTsKKyAg
ICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwg
V1RGOjpibGFua1VSTCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9
IERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgYmxhbmtVUkwoKSk7CisgICAgICAgIG1fdGVtcGxh
dGVEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgV1RGOjpibGFua1VSTCgpKTsK
IAogICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0Q29udGV4dERvY3VtZW50KGNvbnRleHREb2N1
bWVudCgpKTsKICAgICBtX3RlbXBsYXRlRG9jdW1lbnQtPnNldFRlbXBsYXRlRG9jdW1lbnRIb3N0
KHRoaXMpOyAvLyBiYWxhbmNlZCBpbiBkdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhNzk2
YjQ5MDdjMTIxNThjMDZiZmE2MjUzMWQ4ZjE3ZWNlMGFhYzQyLi4xZDljZjg0NDgzYzRlMWJiMzlh
ZTI5NzM0NjQ3M2ExY2U2MzM1YmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNjcxLDcgKzY3
MSw3IEBAIGNsYXNzIERvY3VtZW50CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJik7Ci0gICAgY29u
c3QgVVJMJiB1cmxGb3JCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKSA/
IGJsYW5rVVJMKCkgOiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsRm9yQmluZGluZ3MoKSBj
b25zdCB7IHJldHVybiBtX3VybC5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiBtX3VybDsg
fQogCiAgICAgLy8gVG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY29uY2VwdHMgcmVsYXRlIHRvIG9u
ZSBhbm90aGVyLCBwbGVhc2Ugc2VlIHRoZQogICAgIC8vIGNvbW1lbnRzIHN1cnJvdW5kaW5nIHRo
ZWlyIGRlY2xhcmF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGQ5MWZlNDMxNWU2MjZm
MTQwZGM2OGJlNTk1N2Y2YTA0ZDZmNDYwMDcuLjhiMzdiOWZmMzJmNmM4YTU5OGFmMjZlZWFhMDI4
MDU2YTM0YzQ1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE3MTksNyArMTcxOSw3IEBA
IGJvb2wgRWxlbWVudDo6aXNFdmVudEhhbmRsZXJBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBh
dHRyaWJ1dGUpIGNvbnN0CiAKIGJvb2wgRWxlbWVudDo6aXNKYXZhU2NyaXB0VVJMQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogewotICAgIHJldHVybiBpc1VSTEF0
dHJpYnV0ZShhdHRyaWJ1dGUpICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUudmFsdWUoKSkpOworICAgIHJldHVybiBpc1VS
TEF0dHJpYnV0ZShhdHRyaWJ1dGUpICYmIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZS52YWx1ZSgpKSk7CiB9CiAKIHZv
aWQgRWxlbWVudDo6c3RyaXBTY3JpcHRpbmdBdHRyaWJ1dGVzKFZlY3RvcjxBdHRyaWJ1dGU+JiBh
dHRyaWJ1dGVWZWN0b3IpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5s
aW5lU3R5bGVTaGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNo
ZWV0T3duZXIuY3BwCmluZGV4IDhlZWMyNmE5ZDU0NGUxMzg0NmQ4YTQwNDM5NjVmY2Q3MDVlMjA0
NzAuLmMyN2ZkZTQ4ZDY2MGJkNTlkYzYyZmE0M2JjYWQ2NWI0YmFiMDU2ZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBA
IHN0YXRpYyBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHRGb3JFbGVtZW50KGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgYXV0byogc2hhZG93Um9vdCA9IGVsZW1lbnQuY29udGFp
bmluZ1NoYWRvd1Jvb3QoKTsKICAgICAvLyBVc2VyIGFnZW50IHNoYWRvdyB0cmVlcyBjYW4ndCBj
b250YWluIGRvY3VtZW50LXJlbGF0aXZlIFVSTHMuIFVzZSBibGFuayBVUkwgYXMgYmFzZSBhbGxv
d2luZyBjcm9zcy1kb2N1bWVudCBzaGFyaW5nLgotICAgIGF1dG8mIGJhc2VVUkwgPSBzaGFkb3dS
b290ICYmIHNoYWRvd1Jvb3QtPm1vZGUoKSA9PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50ID8g
YmxhbmtVUkwoKSA6IGVsZW1lbnQuZG9jdW1lbnQoKS5iYXNlVVJMKCk7CisgICAgYXV0byYgYmFz
ZVVSTCA9IHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jvb3RNb2Rl
OjpVc2VyQWdlbnQgPyBXVEY6OmJsYW5rVVJMKCkgOiBlbGVtZW50LmRvY3VtZW50KCkuYmFzZVVS
TCgpOwogCiAgICAgQ1NTUGFyc2VyQ29udGV4dCByZXN1bHQgPSBDU1NQYXJzZXJDb250ZXh0IHsg
ZWxlbWVudC5kb2N1bWVudCgpLCBiYXNlVVJMLCBlbGVtZW50LmRvY3VtZW50KCkuY2hhcmFjdGVy
U2V0V2l0aFVURjhGYWxsYmFjaygpIH07CiAgICAgaWYgKHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9v
dC0+bW9kZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5k
ZXggYTUyMDJkNWM1ZGFjZWU4Mjg5NmM0ZTAzNzI3NDcxNTdmOTg2MTk4My4uZjNkZTcwMWQ2ZDRi
YTg0NTYxNzJmNjY0M2M2MWY5NTE0YWUzNGE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTM0OCw3
ICsxMzQ4LDcgQEAgRG9jdW1lbnQqIE5vZGU6Om93bmVyRG9jdW1lbnQoKSBjb25zdAogY29uc3Qg
VVJMJiBOb2RlOjpiYXNlVVJJKCkgY29uc3QKIHsKICAgICBhdXRvJiB1cmwgPSBkb2N1bWVudCgp
LmJhc2VVUkwoKTsKLSAgICByZXR1cm4gdXJsLmlzTnVsbCgpID8gYmxhbmtVUkwoKSA6IHVybDsK
KyAgICByZXR1cm4gdXJsLmlzTnVsbCgpID8gV1RGOjpibGFua1VSTCgpIDogdXJsOwogfQogCiBi
b29sIE5vZGU6OmlzRXF1YWxOb2RlKE5vZGUqIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXgg
NTJkYTZkMTFhMDEwZmY0M2EzNjk1NTVhZjc3OTk0NjFiY2EyYTU4Yi4uMTI0MzlkNzhkMzVjNGMy
ODIxYTcyNTRkMDMyMTQ1MDM1ZmI0N2Y5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zMSwxMSArMzEsMTEg
QEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlN0eWxlVmFs
aWRpdHkuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiAvLyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVz
ZSBEb2N1bWVudC5oIGFsc28gZGVwZW5kcyBvbiBpdC4KICNkZWZpbmUgRFVNUF9OT0RFX1NUQVRJ
U1RJQ1MgMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKaW5kZXggYTYxZGFkNDVlOWU0NDRm
YTMyMmU1OTgyMmI0ZThlNmIxZThmNmRiNy4uNjI0NTRlNzkzY2IxMzM0ZjY0Y2NmM2JlMjA5NWQz
M2NhOWE3MmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCkBAIC0zNSw3ICszNSw2
IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdDsKIGNsYXNzIFBl
bmRpbmdTY3JpcHQ7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwotY2xhc3MgVVJMOwogCiBjbGFz
cyBTY3JpcHRFbGVtZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCmluZGV4IDNiZGZjYzgwZGJlNmU2YWRhZDU4NzdkMWZlZTMwMTEyNzM3
NmQ1NjMuLjRiMjNmNDdmN2RlM2RiZTBkZmNjYTRiYWMyN2YwNDUyNjlmZjgwMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNjgsNyArNjgsNiBA
QCBjbGFzcyBSZWplY3RlZFByb21pc2VUcmFja2VyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKLWNsYXNzIFVSTDsK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIGNsYXNzIFNlcnZpY2VXb3JrZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKaW5kZXggOWYyMTVmYmExYjUzZjI1NjE1Y2MwZGEz
Y2M3MzQyMDUwMTI1YWNhNS4uYzBjYzhlMjExMDlkNjNiZjRhMzJlOWI1YTdjNGYxOTVhNDgwNzBh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaApAQCAtMzcsNyArMzcsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNlY3VyaXR5
T3JpZ2luUG9saWN5OwogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5OwotY2xhc3MgVVJMOwog
CiBlbnVtIFNhbmRib3hGbGFnIHsKICAgICAvLyBTZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3Nw
ZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jYXR0ci1pZnJhbWUtc2FuZGJveCBmb3IgYSBsaXN0
IG9mIHRoZSBzYW5kYm94IGZsYWdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGI3
ZjNlOGMxM2IyOTZjOTYxMjExYWZhOGJkMDJmOTA1OTNjOTMxMTcuLjY4OGRhNmZhYWQ4NjJlOTk0
YTcyNzlmM2FkZmI0Njk0YTM5MjI3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTE1MTAsOSArMTUxMCw5IEBAIHZvaWQgRWRpdG9yOjpjb3B5VVJMKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkCiAgICAgcGFzdGVib2Fy
ZC53cml0ZShwYXN0ZWJvYXJkVVJMKTsKIH0KIAotUGFzdGVib2FyZFdyaXRlckRhdGE6OlVSTCBF
ZGl0b3I6OnBhc3RlYm9hcmRXcml0ZXJVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCitQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMRGF0YSBFZGl0b3I6OnBhc3RlYm9hcmRX
cml0ZXJVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgUGFz
dGVib2FyZFdyaXRlckRhdGE6OlVSTCByZXN1bHQ7CisgICAgUGFzdGVib2FyZFdyaXRlckRhdGE6
OlVSTERhdGEgcmVzdWx0OwogCiAgICAgcmVzdWx0LnVybCA9IHVybDsKICAgICByZXN1bHQudGl0
bGUgPSB0aXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDZmZjI4NjZiMTQ4ZmRmNGZm
OTIwNWNkM2RmZjk0ZWQwMmJlYzk1M2IuLmZjMjU0MDMyMjkyMWRmMmZiZTc2MWVjNjY5YjQzNjEy
ODI4NjM3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMTcwLDcgKzE3MCw3IEBAIGNs
YXNzIEVkaXRvciB7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlVUkwoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgdm9pZCBjb3B5VVJMKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmKTsKLSAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0
YTo6VVJMIHBhc3RlYm9hcmRXcml0ZXJVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSk7CisgICAgUGFzdGVib2FyZFdyaXRlckRhdGE6OlVSTERhdGEgcGFzdGVib2FyZFdyaXRlclVS
TChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICNpZiAhUExBVEZPUk0oSU9TKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weUltYWdlKGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVs
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApp
bmRleCA0NWFlZTU5NGM1NzFkYTZlZmU3NDA1NDgxZGRhMTJjZjM3OTFkM2Q0Li5hNWRjMGVkMjZm
Yjg2MGE3ODIwZTIwMjc3YzAwNTc0OTI5YjU1MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkhU
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRlbXBs
YXRlRWxlbWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgi
CiAjaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgTWFya3Vw
QWNjdW11bGF0b3I6OmFwcGVuZFF1b3RlZFVSTEF0dHJpYnV0ZVZhbHVlKFN0cmluZ0J1aWxkZXIm
IHJlc3VsdCwgY29uCiAgICAgY29uc3QgU3RyaW5nIHJlc29sdmVkVVJMU3RyaW5nID0gcmVzb2x2
ZVVSTElmTmVlZGVkKGVsZW1lbnQsIGF0dHJpYnV0ZS52YWx1ZSgpKTsKICAgICBVQ2hhciBxdW90
ZUNoYXIgPSAnIic7CiAgICAgU3RyaW5nIHN0cmlwcGVkVVJMU3RyaW5nID0gcmVzb2x2ZWRVUkxT
dHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHN0
cmlwcGVkVVJMU3RyaW5nKSkgeworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0
cmlwcGVkVVJMU3RyaW5nKSkgewogICAgICAgICAvLyBtaW5pbWFsIGVzY2FwaW5nIGZvciBqYXZh
c2NyaXB0IHVybHMKICAgICAgICAgaWYgKHN0cmlwcGVkVVJMU3RyaW5nLmNvbnRhaW5zKCciJykp
IHsKICAgICAgICAgICAgIGlmIChzdHJpcHBlZFVSTFN0cmluZy5jb250YWlucygnXCcnKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmgKaW5kZXggZjI1ZmFh
ZTM3NTcwNjExZTdkZjIyOWVlOGFmMTMzZjQ1ZGFhZjdmNC4uMTUwNGY2ZjM0ZjdlMTVmY2EyYzcw
YjQ0Mzc2YTE2ODhjNGY1N2Y3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
YXRhRGV0ZWN0aW9uLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZs
b2F0UmVjdDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBSYW5nZTsKLWNsYXNzIFVSTDsK
IAogZW51bSBEYXRhRGV0ZWN0b3JUeXBlcyB7CiAgICAgRGF0YURldGVjdG9yVHlwZU5vbmUgPSAw
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYWJl
M2RiM2YzYTk2ZWQxNGI2NDBjOWFmNDQ5MzNmMmQyMzExYjNhOC4uZTMxMjlhYjJmYTUxNTc0NTBj
OGRhZGRjZDU1ZGQ3NjE1MTQxNzVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCkBAIC01MiwxMSArNTIsMTEgQEAKICNpbXBvcnQgIlNldHRpbmdzLmgi
CiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1wb3J0ICJXZWJDb250ZW50UmVhZGVyLmgiCi0jaW1wb3J0
ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9u
cy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9u
V2l0aEF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkCiAKIFN0
cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOworICAgIHJldHVybiBXVEY6OnVz
ZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5k
ZXggYzVhODhmM2FkNWFmNGJkYWNlMTM2NDA4OTBkN2NhMDk5ZDRiZjIzNi4uZDU3ZjFhZTU2MzE0
ZDI5YzI4MzBjMWQyYzRiNzJlMDQ3ZjBkMzk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTU0LDcgKzU0LDYg
QEAKICNpbXBvcnQgIlNldHRpbmdzLmgiCiAjaW1wb3J0ICJTb2NrZXRQcm92aWRlci5oIgogI2lt
cG9ydCAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW1wb3J0ICJVUkxQYXJz
ZXIuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291
cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291cmNl
V2ViUmVzb3VyY2VIYW5kbGVyLmgiCkBAIC02Miw2ICs2MSw3IEBACiAjaW1wb3J0ICJtYXJrdXAu
aCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KIAogI2lm
IFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgi
CkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0
dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKIAogICAgICAgICBh
dXRvIG5hbWUgPSBpbWFnZS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6YWx0QXR0cik7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG5h
bWUgPSBVUkxQYXJzZXIgeyByZXNvdXJjZVVSTFN0cmluZyB9LnJlc3VsdCgpLmxhc3RQYXRoQ29t
cG9uZW50KCk7CisgICAgICAgICAgICBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VVUkxTdHJpbmcp
Lmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG5hbWUgPSBBdG9taWNTdHJpbmcoIm1lZGlhIik7CiAKQEAgLTMwNiw3ICszMDYsNyBA
QCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZy
YW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAocmVzb3VyY2UgPT0gdXJsVG9S
ZXNvdXJjZU1hcC5lbmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8g
bmFtZSA9IFVSTFBhcnNlciB7IHJlc291cmNlVVJMU3RyaW5nIH0ucmVzdWx0KCkubGFzdFBhdGhD
b21wb25lbnQoKTsKKyAgICAgICAgYXV0byBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VVUkxTdHJp
bmcpLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIG5hbWUgPSBBdG9taWNTdHJpbmcoImZpbGUiKTsKIApAQCAtNTE4LDcgKzUxOCw3
IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgU3RyaW5nIHNhbml0aXplZE1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFy
Y2hpdmUoZnJhbWUsICpmcmFtZS5kb2N1bWVudCgpLCAqcmVzdWx0LCBtc29MaXN0UXVpcmtzRm9y
TWFya3VwKCksIFsmXSAoY29uc3QgU3RyaW5nJiB0eXBlKSB7CiAgICAgICAgIHJldHVybiBmcmFt
ZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSk7CiAgICAgfSk7
Ci0gICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50
KCksIHNhbml0aXplZE1hcmt1cCwgYmxhbmtVUkwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVn
aW5Db250ZW50KTsKKyAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJh
bWUuZG9jdW1lbnQoKSwgc2FuaXRpemVkTWFya3VwLCBXVEY6OmJsYW5rVVJMKCksIERpc2FsbG93
U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CiAKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5k
ZXggZjFjZDUzYzllMzM4ZDFhYWFmNTMwYTkwODExOGZmZTA4OGIyODI0Zi4uNDYyMmY4NjZiZDIw
NjExODVmMzI5NTVlZTdlNzliZTFkNjkyZjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbQpAQCAtNTIsMTEgKzUyLDExIEBACiAjaW1wb3J0ICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCiAjaW1wb3J0ICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbXBvcnQgIldlYkNv
bnRlbnRSZWFkZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAi
V2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKICNpbXBv
cnQgPEFwcEtpdC9BcHBLaXQuaD4KICNpbXBvcnQgPHBhbC9zeXN0ZW0vU291bmQuaD4KKyNpbXBv
cnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTI1Myw3ICsyNTMsNyBAQCBTdHJpbmcgRWRpdG9yOjpwbGFpblRleHRGcm9tUGFzdGVib2FyZChj
b25zdCBQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0KQogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBj
bGVhciB0aGlzIGlzIDEwMCUgY29ycmVjdCBzaW5jZSB3ZSBrbm93IC1bTlNVUkwgVVJMV2l0aFN0
cmluZzpdIGRvZXMgbm90IGhhbmRsZQogICAgIC8vIGFsbCB0aGUgc2FtZSBjYXNlcyB3ZSBoYW5k
bGUgd2VsbCBpbiB0aGUgVVJMIGNvZGUgZm9yIGNyZWF0aW5nIGFuIE5TVVJMLgogICAgIGlmICh0
ZXh0LmlzVVJMKQotICAgICAgICBzdHJpbmcgPSB1c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgVVJM
V2l0aFN0cmluZzpzdHJpbmddKTsKKyAgICAgICAgc3RyaW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0
cmluZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsKIAogICAgIC8vIEZJWE1FOiBXVEYg
c2hvdWxkIG9mZmVyIGEgbm9uLU1hYy1zcGVjaWZpYyB3YXkgdG8gY29udmVydCBzdHJpbmcgdG8g
cHJlY29tcG9zZWQgZm9ybSBzbyB3ZSBjYW4gZG8gaXQgZm9yIGFsbCBwbGF0Zm9ybXMuCiAgICAg
cmV0dXJuIFsoTlNTdHJpbmcgKilzdHJpbmcgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2Fs
TWFwcGluZ107CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KICAg
ICBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCA9IGltYWdlSW5XZWJBcmNo
aXZlRm9ybWF0KGltYWdlRWxlbWVudCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC51cmwgPSB1
cmw7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwotICAgIHBhc3RlYm9h
cmRJbWFnZS51cmwudXNlclZpc2libGVGb3JtID0gdXNlclZpc2libGVTdHJpbmcocGFzdGVib2Fy
ZEltYWdlLnVybC51cmwpOworICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXNlclZpc2libGVGb3Jt
ID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCk7CiAgICAg
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZl
cigpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gY2FjaGVkSW1hZ2Ut
PnJlc3BvbnNlKCkubWltZVR5cGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4
IDE3MjllMGQ5Mjg2Mjk2ZTA0NDc1MGVmZTg3NzZmNTA3ZGEzYjUxMjkuLmZmMWU1NWI3OWM5Y2Nj
NzQyNTYzNjU0ZWMyZDcxNjQ3NjA4ZjM5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
QEAgLTc0LDExICs3NCwxMSBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1
ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIHJlbW92ZVN1YnJl
c291cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBmcmFnbWVudCwgV1RG
OjpGdW5jdAogICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogZWxlbWVu
dC5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgd29u
J3Qgd29yayBmb3Igc3Jjc2V0LgogICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXR0cmlidXRlQ29u
dGFpbnNVUkwoYXR0cmlidXRlKSAmJiAhYXR0cmlidXRlLnZhbHVlKCkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgVVJMIHVybCA9IFVSTFBhcnNlciB7IGF0dHJpYnV0ZS52YWx1ZSgpIH0u
cmVzdWx0KCk7CisgICAgICAgICAgICAgICAgVVJMIHVybCh7IH0sIGF0dHJpYnV0ZS52YWx1ZSgp
KTsKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlVVJMKHVybCkpCiAgICAgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZXNUb1JlbW92ZS5hcHBlbmQoeyBlbGVtZW50LCBhdHRyaWJ1dGUu
bmFtZSgpIH0pOwogICAgICAgICAgICAgfQpAQCAtMTAzNiw3ICsxMDM2LDcgQEAgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYKIAogICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCBmYWtlQm9k
eS5wdHIoKSwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAgcmVzdG9yZUF0dGFjaG1lbnRFbGVt
ZW50c0luRnJhZ21lbnQoZnJhZ21lbnQpOwotICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkgJiYg
YmFzZVVSTCAhPSBibGFua1VSTCgpICYmIGJhc2VVUkwgIT0gZG9jdW1lbnQuYmFzZVVSTCgpKQor
ICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBXVEY6OmJsYW5rVVJMKCkg
JiYgYmFzZVVSTCAhPSBkb2N1bWVudC5iYXNlVVJMKCkpCiAgICAgICAgIGNvbXBsZXRlVVJMcyhm
cmFnbWVudC5wdHIoKSwgYmFzZVVSTCk7CiAKICAgICByZXR1cm4gZnJhZ21lbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuaAppbmRleCAwYjgzMTRiODE1NGQyMDg1ZWExMjg0YzYyNzM2Yjk1MDUyMjlm
ODJkLi4yMjQ4NmNlMmM4YWQ1ZWNkNTc0YjI4MTRkMGZiY2NmZDI0Mjc4NzgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsK
IGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxFbGVtZW50OwotY2xhc3Mg
VVJMOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBRdWFsaWZpZWROYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IDYzYjFlMGU1NzQx
MWQwNjMzYzQxOThmNGFlMDkzNTNhMDM1NTEyN2UuLjczYTM2NTIyODc5OWMxNmI5YTk4OGQ5YTEx
ODllMGNmOTM4MGZlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNG
aWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKIAogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKICNpbmNs
dWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8bXV0
ZXg+CiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCmluZGV4IDRmMGU3YjI3NzcxN2ExOWNj
MjcwZGYyZTk2M2FiZWVmOTNmM2YzNTMuLjYyY2FmZmUyZDk4YWQxZDVkMTBmNGVkNjg4MTdkYTkw
NDk0ZWExNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaApAQCAt
MzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVTdHJlYW1DbGll
bnQ7CiBjbGFzcyBGaWxlU3RyZWFtOwotY2xhc3MgVVJMOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBBc3luY0ZpbGVTdHJlYW0gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCAyMDEz
OWM0YzEyYTE0OTNlMDUzOGRjOWFiOTUxNjNiMTQ5OGNmOTYyLi45MGQ0NjU2OTk3MzAxMjU4ZWU4
NjgyOGU5YWI2MDc4YWMzZjg5YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtMzIsNyArMzIs
NyBAQAogCiAjaW5jbHVkZSAiQmxvYlByb3BlcnR5QmFnLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYlVSTC5jcHAKaW5kZXggYzZkZmVlNjU1MDE1M2UyYmY0ODhhMjdjYzVhZThlMjBl
OThlMDQ2MS4uMTQ2YzBkYjA0OWQ3MTU0OGQwZmMyZDg4OWU0NmJiNmY1NTY0OWFlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJC
bG9iVVJMLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAppbmRleCAzNTll
YWFmN2YyYTI2NjdiOGIyMmY3YTM1MDMyYTE1NzFkNjcyMGM0Li4zZDBhZTExYzEwMzllMzQ4NGUw
ZWRmNzAwOTc3N2JmMmViZjliZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2JVUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaApAQCAtMzAs
NyArMzAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmlu
ZGV4IDU3NWYwZTc2ZDA5YTlkM2U1N2YyNThhZWNiZWYzMWYzNjBhNDhkZjAuLmRhMmU4YmNhMzUy
Y2EzZmM3ZWM3Y2I0NTYyZDc5YmJiNzI4YmYwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC0z
Myw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiBjbGFz
cyBGaWxlIGZpbmFsIDogcHVibGljIEJsb2IgewogcHVibGljOgogICAgIHN0cnVjdCBQcm9wZXJ0
eUJhZyA6IEJsb2JQcm9wZXJ0eUJhZyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ckxvYWRlci5oCmluZGV4IGYzZGM2YzQ3OGM5ODAwNGE3YjEzNDBjMzI5ZWQ2ODgwOGI3MjE4ZjAu
LjFmNzc3OGU4ODllMzkzZDdmYjk2OTQ0M2NlOGViZTIxMjc0ZDRhMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNs
dWRlICJCbG9iUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVGV4dEVuY29kaW5n
LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVC
bG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeS5oCmluZGV4IDQyNDZkN2VlYTBiMGU3M2I1MDlmYmM4MGQyNDFlMWNmZjk2MjA5YzIuLmE5
Yzc5ZmUyMjkyZjg5NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBAIC0zNiw3ICszNiw2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2JQYXJ0OwotY2xhc3MgVVJMOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFRocmVhZGFibGVCbG9iUmVnaXN0cnkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCmluZGV4IGUwYmU1NzFhMjkwNjgzMjViYTE3ZWNm
M2ViZGZlYjg2YjZiZDgxOTguLjI5OGY3ODI4MzFhNjk2OTg2MzhmYzU5MmQyZjYzMDU0NjNhMzA0
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKQEAgLTI2LDcgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNjcmlwdENhY2hlZEZyYW1lRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bS5oCmluZGV4IGU3MmI1ODkzOTQ5ODFlY2VjNDEwN2Y2ZDYyYjc3YzlkNzQzODM1MWQuLjIwYTM5
NzMzZjg1MzNhOTAzNGU2NTZiYTdmN2FiMGEwNTQ4MmY0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0hpc3RvcnlJdGVtLmgKQEAgLTU0LDcgKzU0LDYgQEAgY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBI
aXN0b3J5SXRlbTsKIGNsYXNzIEltYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3Mg
VVJMOwogZW51bSBjbGFzcyBQcnVuaW5nUmVhc29uOwogCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4g
dm9pZCAoKm5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCkoSGlzdG9yeUl0ZW0qKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RE9NVVJMLmNwcAppbmRleCBhNzdiY2Q3MDcyM2YzY2Y5Y2ExMTY4MmU0NDZlZGZlODdkODEzOGY4
Li4wYTA4YjU5NDY4NjU3MzJmMjhkYTMwZmI3ZjYzY2E0ZDMxNGVhOTE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01VUkwuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxET01VUkw+PiBET01V
Ukw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgRE9NVVJMJiBiYXNlKQogCiBFeGNl
cHRpb25PcjxSZWY8RE9NVVJMPj4gRE9NVVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwpCiB7
Ci0gICAgVVJMIGJhc2VVUkwgeyBibGFua1VSTCgpIH07CisgICAgVVJMIGJhc2VVUkwgeyBXVEY6
OmJsYW5rVVJMKCkgfTsKICAgICBVUkwgY29tcGxldGVVUkwgeyBiYXNlVVJMLCB1cmwgfTsKICAg
ICBpZiAoIWNvbXBsZXRlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKaW5kZXggNTkwMjVjMmZiOTZmMDI5OWFkOTE3
ZTYxN2IyOTExYzMxYWI5MWQzNC4uZDMxM2Q3YTQ0NGQ4ZWE1NTM0ZjAwM2Y0NDUwZmRkYTBkNDYz
NTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFV0aWxzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKaW5kZXggOWI5
OWEzNDczMDk3MmQ0ZGQ3OTljMDgxYTBmOThmNjM3N2FiNWFkMC4uMzA0OGI0OTBmYTUzZjNmZDQx
NTFlMDIxMDQzNmM2NGZhOTQ3MTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAKQEAgLTM3LDggKzM3LDggQEAKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRl
ci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcxLDcg
KzcxLDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkKGNvbnN0IFVS
TCYgY29tcGxldGVVUkwpIGNvbnN0CiAgICAgaWYgKGNvbXBsZXRlVVJMLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxl
dGVVUkwpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwp
KSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gY29udGVudERvYyA9IHRoaXMtPmNvbnRlbnRE
b2N1bWVudCgpOwogICAgICAgICBpZiAoY29udGVudERvYyAmJiAhU2NyaXB0Q29udHJvbGxlcjo6
Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4oY29udGVudERvYy0+ZnJhbWUoKSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVu
dEJhc2U6Om9wZW5VUkwoTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExp
c3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fVVJMLmlzRW1wdHkoKSkKLSAgICAgICAg
bV9VUkwgPSBibGFua1VSTCgpLnN0cmluZygpOworICAgICAgICBtX1VSTCA9IFdURjo6YmxhbmtV
UkwoKS5zdHJpbmcoKTsKIAogICAgIFJlZlB0cjxGcmFtZT4gcGFyZW50RnJhbWUgPSBkb2N1bWVu
dCgpLmZyYW1lKCk7CiAgICAgaWYgKCFwYXJlbnRGcmFtZSkKQEAgLTE3OSw3ICsxNzksNyBAQCB2
b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmIHN0cikK
IAogdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TG9jYXRpb24oSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBTdHJpbmcmIG5ld0xvY2F0aW9uKQogewotICAgIGlmIChwcm90b2NvbElz
SmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobmV3TG9jYXRpb24p
KSkgeworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyhuZXdMb2NhdGlvbikpKSB7CiAgICAgICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgY29udGVudERvY3VtZW50KCkp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKaW5kZXggMjMyYjNkY2IzMDMxODg5ZGM4MjZmOTg3ZDJiZDZmYjA4NzU4ZTliNS4u
YjFjY2Q3NTU3NTAwZmExYWI3NjBlMTI0MDAyM2EzYTllZmE2ZDM3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3MgSWNvbjsKIGNs
YXNzIElucHV0VHlwZTsKIGNsYXNzIExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKIGNsYXNz
IFJhZGlvQnV0dG9uR3JvdXBzOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgRGF0ZVRpbWVDaG9vc2Vy
UGFyYW1ldGVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggNTEw
ZjRjZmI2MzZkOWRhMTFlMjU4ZjllZTNhNDJmZWQ2ZWZkMzZjZC4uNjgyOGY5MzQzYjU3MjQwOTVk
YjYwMjE3NDI2ODc2NTQwNzBjZGY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5oCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NVG9r
ZW5MaXN0OwogY2xhc3MgSFRNTExpbmtFbGVtZW50OwotY2xhc3MgVVJMOwogc3RydWN0IE1lZGlh
UXVlcnlQYXJzZXJDb250ZXh0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBFdmVudFNl
bmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDljMDli
MDk0ODM5OTU1MTE1ODNkYjUxMjVkM2VjN2M3MzRjZGM2MGIuLjc3ZDBjYmZiN2Q0ODA0YjcyMWIy
M2Q0NDNlMDdiMDc2ZmM0NjliNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtMTY4LDggKzE2OCw4IEBACiAKIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGUg
PD4KLXN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpVUkw+IHsKLSAgICBzdGF0aWMgU3RyaW5n
IHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQorc3RydWN0IExvZ0FyZ3VtZW50PFVS
TD4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgewog
I2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1V
UkxMZW5ndGhGb3JMb2dnaW5nID0gNTEyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggMzIxM2M0NGFkYmYyOGYyNzBiNTI2MGRjYTEzMDU1
ZGU4YWE0M2Q5Yi4uOWU1YzI3Nzc3ZDY5M2U0ZjY0YmVmMWI3MzEyNTgzOTVjNGFkMjMwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0x
NTgsNyArMTU4LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojppc0ltYWdlVHlwZSgp
CiBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFsbG93ZWRUb0xvYWRGcmFtZVVSTChjb25z
dCBTdHJpbmcmIHVybCkKIHsKICAgICBVUkwgY29tcGxldGVVUkwgPSBkb2N1bWVudCgpLmNvbXBs
ZXRlVVJMKHVybCk7Ci0gICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIHByb3RvY29sSXNKYXZhU2Ny
aXB0KGNvbXBsZXRlVVJMKSAmJiAhZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vz
cyhjb250ZW50RG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgaWYgKGNvbnRlbnRG
cmFtZSgpICYmIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpICYmICFkb2N1
bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzKGNvbnRlbnREb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBkb2N1bWVu
dCgpLmZyYW1lKCktPmlzVVJMQWxsb3dlZChjb21wbGV0ZVVSTCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlQml0bWFwLmgKaW5kZXggMjdhNDg5ZDRmNjU3YjZlNjlkYzRlOTlmOWQ0ZGM5YjY5ZDdiY2M3
Ny4uMTIwMGI4NzgxNjQ2ZjYxYTZmNzBjNDZiOTliY2M4ZWZjZjY1YWQxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VCaXRtYXAuaApAQCAtNDQsNyArNDQsNiBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3Mg
SW50U2l6ZTsKIGNsYXNzIFBlbmRpbmdJbWFnZUJpdG1hcDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgSW1hZ2VCaXRtYXBPcHRpb25zOwogCiBjbGFz
cyBJbWFnZUJpdG1hcCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVk
PEltYWdlQml0bWFwPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJh
Z21lbnRVUklQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBh
cnNlci5oCmluZGV4IDdjNzczNmMzNGViY2Y2NGQ5NDU2MDNkY2Q4NjM5MzllOGRiMzdlNGMuLjEw
YTJhMGQwZjUyMjRiMDUwYWQ1YzdmNGQxZDY1NmFmZWU4M2M3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCkBAIC0yNywxNCArMjcsMTIgQEAKIAog
I2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NZWRp
YVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgTWVkaWFGcmFnbWVu
dFVSSVBhcnNlciBmaW5hbCB7CiBwdWJsaWM6CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJs
aWNVUkxNYW5hZ2VyLmNwcAppbmRleCBjZjE4NmMwYmE0MDBlMmEzYzIzMDRjYzc5ZmZhZGJhOGFm
M2FhMzYxLi43M2I1NDczNTc4ZTNiMGIzMWVhZjk1ZGE0MGMyMGFjMDk5YzA3MzY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKLSNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVVJMUmVnaXN0cnku
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Q
dWJsaWNVUkxNYW5hZ2VyLmgKaW5kZXggZTMyNjU0NWRjY2I0OWJmYTZjNWFmZjkyM2EyYzVlMGMw
ZmE3NzVhNC4uZTY5ZGU0ZWQ4YzgzYmI4YThkYzRkMzY2ODYyMmNkM2ZkZDUzN2U3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdpc3RyeTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVVJMSW5wdXRUeXBlLmNwcAppbmRleCA2Y2EwYWMxYTIwMTNjZjZkNWQ4ZGM1YzBlYTAz
YjIxMTc5MmYxOTVlLi42M2JiM2NjMjYwMWEwNDNkMTQ5YzQ1YTI5ZWMxOGRhMTQwYjVhZDg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5j
bHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lz
dHJ5LmgKaW5kZXggYmQ3NzJjZTVmMTdhNmI4N2RjMmY0NjI1YjcxYmUwMTEwM2MzNzc0My4uODIy
M2JiZDA3NTkwZGRhY2NlOWZkMTYwNGUzYWMwYmMwMTVmNjRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
UmVnaXN0cnkuaApAQCAtMzQsNyArMzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVVJMUmVnaXN0cnk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcAppbmRleCAzMGU4NTkyNGE3ODUyMGQ2
NTkyMDkxYWQyZDMzYzA0MjBjZmVkZDQzLi40ZTdmYmFlZmRmMGE0MTZjYzY1NGFhNzNkNTliN2Jl
ODBiNDFkMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFt
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCkBAIC0y
NiwxMyArMjYsMTMgQEAKICNpbmNsdWRlICJVUkxTZWFyY2hQYXJhbXMuaCIKIAogI2luY2x1ZGUg
IkRPTVVSTC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJz
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBVUkxTZWFyY2hQYXJhbXM6OlVSTFNlYXJj
aFBhcmFtcyhjb25zdCBTdHJpbmcmIGluaXQsIERPTVVSTCogYXNzb2NpYXRlZFVSTCkKICAgICA6
IG1fYXNzb2NpYXRlZFVSTChhc3NvY2lhdGVkVVJMKQotICAgICwgbV9wYWlycyhpbml0LnN0YXJ0
c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KGlu
aXQpLnN1YnN0cmluZygxKSkgOiBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oaW5pdCkp
CisgICAgLCBtX3BhaXJzKGluaXQuc3RhcnRzV2l0aCgnPycpID8gV1RGOjpVUkxQYXJzZXI6OnBh
cnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhpbml0KS5zdWJzdHJpbmcoMSkpIDogV1RGOjpV
UkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oaW5pdCkpCiB7CiB9CiAKQEAgLTEzMywyMCAr
MTMzLDIwIEBAIHZvaWQgVVJMU2VhcmNoUGFyYW1zOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1l
KQogCiBTdHJpbmcgVVJMU2VhcmNoUGFyYW1zOjp0b1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOworICAgIHJldHVybiBXVEY6OlVSTFBh
cnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOwogfQogCiB2b2lkIFVSTFNlYXJjaFBhcmFtczo6dXBk
YXRlVVJMKCkKIHsKICAgICBpZiAobV9hc3NvY2lhdGVkVVJMKQotICAgICAgICBtX2Fzc29jaWF0
ZWRVUkwtPnNldFF1ZXJ5KFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpKTsKKyAgICAgICAg
bV9hc3NvY2lhdGVkVVJMLT5zZXRRdWVyeShXVEY6OlVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFp
cnMpKTsKIH0KIAogdm9pZCBVUkxTZWFyY2hQYXJhbXM6OnVwZGF0ZUZyb21Bc3NvY2lhdGVkVVJM
KCkKIHsKICAgICBBU1NFUlQobV9hc3NvY2lhdGVkVVJMKTsKICAgICBTdHJpbmcgc2VhcmNoID0g
bV9hc3NvY2lhdGVkVVJMLT5zZWFyY2goKTsKLSAgICBtX3BhaXJzID0gc2VhcmNoLnN0YXJ0c1dp
dGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KHNlYXJj
aCkuc3Vic3RyaW5nKDEpKSA6IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShzZWFyY2gp
OworICAgIG1fcGFpcnMgPSBzZWFyY2guc3RhcnRzV2l0aCgnPycpID8gV1RGOjpVUkxQYXJzZXI6
OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhzZWFyY2gpLnN1YnN0cmluZygxKSkgOiBX
VEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShzZWFyY2gpOwogfQogCiBzdGQ6Om9w
dGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gVVJMU2VhcmNoUGFyYW1z
OjpJdGVyYXRvcjo6bmV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0
aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKaW5kZXggYTA3YzA4MTRmMTFl
MTcxMTg0NTAzZTZhYTZhYWFkNmMwNDdkNDc1YS4uNjU2YWJmYmRhMGJkYmNlMzkzYjg4Y2M1MjM0
NGI5Y2Q2MTZlNzZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaApAQCAtMTc0LDcgKzE3NCw3IEBA
IHZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAg
ICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAiIGlmIGl0IGlzIHNldCB0byBl
bXB0eSBzdHJpbmcuCiAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3Ry
aW5nKDAsIHNlcGFyYXRvciArIDEpICsgJzAnKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQor
ICAgICAgICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5w
cm90b2NvbCgpKSkKICAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vi
c3RyaW5nKDAsIHNlcGFyYXRvcikpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgcG9ydEVuZCkpOwpAQCAtMjM1
LDcgKzIzNSw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBvcnQoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBpdCBpcyBzZXQg
dG8gZW1wdHkgc3RyaW5nLgogICAgIC8vIEZJWE1FOiBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9y
Zy8gZG9lc24ndCBhcHBlYXIgdG8gcmVxdWlyZSB0aGlzOyB0ZXN0IHdoYXQgYnJvd3NlcnMgZG8K
ICAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50KCk7Ci0gICAgaWYgKGlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgaWYgKFdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgdXJsLnJl
bW92ZVBvcnQoKTsKICAgICBlbHNlCiAgICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCBjMzQ2MTAyMTVlNTY5ZmU3YWExMTljYTUyMTZhN2Q4M2UxNTU2MjI5Li5kNzcyM2Vk
ZGVkZmFjODVhZWQ5ODNjNWE1NDFkNGMwMDIyZDM1Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzQsNyAr
MzQsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXAuaCIKICNp
bmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCmluZGV4IDgxY2I1NWQ3N2UzMTgwNTY0NDcwNzc3N2ExZTI5OTU2ZjQ0M2Y2NTgu
Ljk4ZWM0NjJlZmViMzk1YjlhN2U5YzM5OTcwMThlYWFkNWVmN2ZjNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTM4
LDcgKzM4LDYgQEAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVt
ZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEltYWdlQml0bWFwOwotY2xhc3Mg
VVJMOwogY2xhc3MgV2ViR0xPYmplY3Q7CiAKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQg
OiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggNjc0ZGViYzY5OGRiOWI3MDAyZWI0MDUyMzM1
YjllNmRiODFiNjRhMy4uNDIzMDkyNjhlOWJkZDA5NWFjOWJmMTZhZDlmNzMzMmEzNzFjZDViNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAK
QEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkRlY2ltYWwuaCIKICNpbmNsdWRlICJRdWFs
aWZpZWROYW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi9kdG9hLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggNzE5MjhjN2NlYThlMTRmMDQ0ZGU0OWY5ZDAxMzg0NzMw
YWFhMmNlYi4uNjEwNGJlMzkyYmNlMzFjNjNjYTFlZjI0YWUxMmVlYjEzMTk1NWMwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTI0NCw3ICsyNDQsNyBA
QCBzdGF0aWMgYm9vbCBpc1NlbWljb2xvblNlcGFyYXRlZEF0dHJpYnV0ZShjb25zdCBIVE1MVG9r
ZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlKQogc3RhdGljIGJvb2wgc2VtaWNvbG9uU2VwYXJhdGVk
VmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoU3RyaW5nVmlldyBzZW1pY29sb25TZXBhcmF0ZWRW
YWx1ZSkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZS5z
cGxpdCgnOycpKSB7Ci0gICAgICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh2YWx1ZSkpCisg
ICAgICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHZhbHVlKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC00NDYsOSArNDQ2LDkg
QEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJl
cXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAgICAg
aWYgKG1fd2FzU2NyaXB0VGFnRm91bmRJblJlcXVlc3QpIHsKLSAgICAgICAgZGlkQmxvY2tTY3Jp
cHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNyY0F0dHIsIGJsYW5rVVJM
KCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7Ci0gICAgICAg
IGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBTVkdO
YW1lczo6aHJlZkF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3Jj
TGlrZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRl
SWZJbmplY3RlZChyZXF1ZXN0LCBYTGlua05hbWVzOjpocmVmQXR0ciwgYmxhbmtVUkwoKS5zdHJp
bmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxv
Y2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNyY0F0dHIsIFdU
Rjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRl
KTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJl
cXVlc3QsIFNWR05hbWVzOjpocmVmQXR0ciwgV1RGOjpibGFua1VSTCgpLnN0cmluZygpLCBUcnVu
Y2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAgICBkaWRCbG9ja1NjcmlwdCB8
PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgWExpbmtOYW1lczo6aHJlZkF0dHIs
IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmli
dXRlKTsKICAgICB9CiAKICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHQ7CkBAIC00NjEsNyArNDYx
LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihjb25zdCBGaWx0ZXJUb2tl
blJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAg
ICAgaWYgKGlzQ29udGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRTbmlwcGV0Rm9yVGFnTmFt
ZShyZXF1ZXN0KSkpIHsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJ
ZkluamVjdGVkKHJlcXVlc3QsIGRhdGFBdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0
aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBl
cmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZGF0YUF0dHIsIFdURjo6YmxhbmtVUkwo
KS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKICAgICAgICAg
ZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHR5cGVB
dHRyKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHJlcXVlc3QsIGNsYXNzaWRBdHRyKTsKICAgICB9CkBAIC00ODEsNyArNDgxLDcgQEAgYm9vbCBY
U1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVx
dWVzdCkKICAgICBpZiAoIUhUTUxQYXJhbUVsZW1lbnQ6OmlzVVJMUGFyYW1ldGVyKFN0cmluZyhu
YW1lQXR0cmlidXRlLnZhbHVlKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVBdHRyLCBibGFua1VSTCgp
LnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgIHJldHVy
biBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVBdHRyLCBXVEY6OmJsYW5r
VVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAK
IGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVl
c3QmIHJlcXVlc3QpCkBAIC00OTIsNyArNDkyLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJF
bWJlZFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBib29sIGRp
ZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29udGFpbmVkSW5SZXF1ZXN0KGNhbm9u
aWNhbGl6ZWRTbmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsKICAgICAgICAgZGlkQmxvY2tT
Y3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGNvZGVBdHRyLCBTdHJp
bmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKLSAgICAgICAgZGlkQmxv
Y2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNyY0F0dHIsIGJs
YW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7Cisg
ICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0
LCBzcmNBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3Jj
TGlrZUF0dHJpYnV0ZSk7CiAgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRl
SWZJbmplY3RlZChyZXF1ZXN0LCB0eXBlQXR0cik7CiAgICAgfQogICAgIHJldHVybiBkaWRCbG9j
a1NjcmlwdDsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckZvcm1U
b2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVl
c3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNO
YW1lKHJlcXVlc3QudG9rZW4sIGZvcm1UYWcpKTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJpYnV0
ZUlmSW5qZWN0ZWQocmVxdWVzdCwgYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7Cisg
ICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBhY3Rpb25BdHRyLCBX
VEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlcklu
cHV0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNTUyLDcgKzU1
Miw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVySW5wdXRUb2tlbihjb25zdCBGaWx0ZXJUb2tl
blJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGlu
cHV0VGFnKSk7CiAKLSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3Qs
IGZvcm1hY3Rpb25BdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNy
Y0xpa2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVx
dWVzdCwgZm9ybWFjdGlvbkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlv
blN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKIH0KIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJC
dXR0b25Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC01NjAsNyAr
NTYwLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tlbihjb25zdCBGaWx0ZXJU
b2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09
IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4s
IGJ1dHRvblRhZykpOwogCi0gICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1
ZXN0LCBmb3JtYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxl
OjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5j
YXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZXJh
c2VEYW5nZXJvdXNBdHRyaWJ1dGVzSWZJbmplY3RlZChjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3Qm
IHJlcXVlc3QpCkBAIC01NzMsNyArNTczLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjplcmFzZURhbmdl
cm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmUKICAg
ICAgICAgYm9vbCBpc0lubGluZUV2ZW50SGFuZGxlciA9IGlzTmFtZU9mSW5saW5lRXZlbnRIYW5k
bGVyKGF0dHJpYnV0ZS5uYW1lKTsKICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRl
ciBpZiB3ZSBkaWRuJ3QgY3JlYXRlIGEgbmV3IFN0cmluZyBmb3IgZXZlcnkgYXR0cmlidXRlIGlu
IHRoZSBkb2N1bWVudC4KICAgICAgICAgU3RyaW5nIHN0cmlwcGVkVmFsdWUgPSBzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5nKGF0dHJpYnV0ZS52YWx1ZSkpOwotICAgICAg
ICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lubGluZUV2ZW50SGFuZGxl
ciAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcHBlZFZhbHVlKSkgfHwgKGlzU2VtaWNvbG9u
U2VwYXJhdGVkQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgc2VtaWNvbG9uU2VwYXJhdGVkVmFsdWVD
b250YWluc0phdmFTY3JpcHRVUkwoc3RyaXBwZWRWYWx1ZSkpOworICAgICAgICBib29sIHZhbHVl
Q29udGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lubGluZUV2ZW50SGFuZGxlciAmJiBXVEY6OnBy
b3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwcGVkVmFsdWUpKSB8fCAoaXNTZW1pY29sb25TZXBhcmF0
ZWRBdHRyaWJ1dGUoYXR0cmlidXRlKSAmJiBzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZUNvbnRhaW5z
SmF2YVNjcmlwdFVSTChzdHJpcHBlZFZhbHVlKSk7CiAgICAgICAgIGlmICghaXNJbmxpbmVFdmVu
dEhhbmRsZXIgJiYgIXZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGlmICghaXNDb250YWluZWRJblJlcXVlc3QoY2Fub25pY2FsaXplKHNu
aXBwZXRGcm9tQXR0cmlidXRlKHJlcXVlc3QsIGF0dHJpYnV0ZSksIFRydW5jYXRpb25TdHlsZTo6
U2NyaXB0TGlrZUF0dHJpYnV0ZSkpKQpAQCAtNzI3LDcgKzcyNyw3IEBAIGJvb2wgWFNTQXVkaXRv
cjo6aXNMaWtlbHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgLy8gR2l2ZSBl
bXB0eSBVUkxzIGFuZCBhYm91dDpibGFuayBhIHBhc3MuIE1ha2luZyBhIHJlc291cmNlVVJMIGZy
b20gYW4KICAgICAvLyBlbXB0eSBzdHJpbmcgYmVsb3cgd2lsbCBsaWtlbHkgbGF0ZXIgZmFpbCB0
aGUgIm5vIHF1ZXJ5IGFyZ3MgdGVzdCIgYXMKICAgICAvLyBpdCBpbmhlcml0cyB0aGUgZG9jdW1l
bnQncyBxdWVyeSBhcmdzLgotICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVybCA9PSBibGFua1VS
TCgpLnN0cmluZygpKQorICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVybCA9PSBXVEY6OmJsYW5r
VVJMKCkuc3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgdGhlIHJl
c291cmNlIGlzIGxvYWRlZCBmcm9tIHRoZSBzYW1lIGhvc3QgYXMgdGhlIGVuY2xvc2luZyBwYWdl
LCBpdCdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgKaW5kZXggZGM4MmFk
ZDdjN2Y1YmRkYTNjYWI1MzRkZmFhMTA5YmZkMTkwYmMyNy4uMTJlYzk4YzA5MmZmNjUwNGNkZTUz
ZmZmOTM2ODFlMDI1MTEwMDUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvWFNTQXVkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0
b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiSFRNTFRva2VuLmgiCiAjaW5jbHVk
ZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSAiU3VmZml4VHJlZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCmluZGV4
IDY3YTMyZWQ5MzBkN2Q5ZGQ0ZGFjNDA4OTIyMGJkZjNmMmFkNzZlODcuLjYwNTE1OWIyZmFmYTRj
Zjg3MWFlNjU2ZjEwYWY0M2YwMDFlOTNmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4
IGM3MzRkYTJiZWFlMTM4NDUyN2Q3NzJhZTliZTE4YjM3ZjU0NDVjOGIuLjI2YWI2ZGY5NTI0YTRl
Njk4MTQ4ODE1MjVlZGM4N2Y2NjA4NmI4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9p
ZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmtpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9v
bCBzaG91bGRQcmVwZW5kVG9LaWwKIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om9wZW5J
bk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJ
c0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9jbGllbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZGRlMjEy
MmNjZWQwMGE4ZTMyMGNmNDQwOThmYWQwNjY1NzY0Nzk3MC4uOGMzNzJmYWFmN2VkOGVlZDM5OGI1
YTZjZDdlNTRmYThmNmVlYzQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtODgsNyArODgsNiBAQCBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFkb3dS
b290OwogY2xhc3MgVGltZXJCYXNlOwotY2xhc3MgVVJMOwogI2lmIEVOQUJMRShXRUJHTCkKIGNs
YXNzIFdlYkdMUHJvZ3JhbTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDMzMzEwNzgx
Y2FhYjViNTE1MmQ2MWZjNTY2NjhhNDljYzM1MjQ0YzYuLjdjNjc0NDYxMjA1NzA3OThjYWZkNzgw
MTVmYWQ5OWQ2MDg3MzE0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAK
ICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURl
Y29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogI2lu
Y2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmgKaW5kZXggNjRkMGUwNDU4MDI1OTVmZjMwNWM5YTM2YzExMjJkMTY2NDM3OGM5
NC4uYjY4NTkwZjFiODQwODgyODRhOGE1NWZjNzVkMGU1NTlkNDkwOWJkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURl
Y29kZXI7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXZWJTb2NrZXQ7CiAKIHN0cnVjdCBXZWJTb2NrZXRG
cmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCmluZGV4IDY3MDlmNTJiZTAzNDMyYjJjNTVlYjk0NzFiYzRjMGRiMjVkMDg2
YzcuLjcyZjYzYmQ4OTYyNWI2MjY5Y2JmN2E2M2YxMjUyMTVmNDE1NzViNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApA
QCAtNDksNyArNDksNiBAQCBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3MgUGFnZTsKIGNs
YXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRleCA3Mjg4Y2ZmZTRjZjJl
OGZlYmViMGM2MTBkNDZiN2VjYWZiYzY1ZjRkLi41ZTA0MGM5NTRkNGI1MTRhMTQ5MDNjMDcyMDcw
YmVjZGUwNjBjYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw2IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBVUkw7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRp
b25NYW5pZmVzdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFu
aWZlc3RMb2FkZXIuaAppbmRleCA4YjY0MzFhYjQyMmYyY2I2Yzk0OGQ4Y2Y4ZWJiNTUxMTcxMTdk
ZGJhLi4xYjBmNzYwZDJlY2ViZDVjMjhlZjVjMmVjNDJlZGExMmYwM2YzYmViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKQEAgLTMw
LDggKzMwLDggQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29va2llSmFyLmgKaW5kZXggNWZhNzA1ZDhhODVmZjE1ODY4OTA2NWZjOGJjZDg4YjNmYzk4YjRl
NC4uYjliOWYzNzQ5NzQzZWQ0OGY3MzhhM2ZkOGU3MmE2OWE0ZDAwOWU3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db29raWVKYXIuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFVSTDsKIHN0cnVjdCBDb29raWU7CiBzdHJ1Y3QgQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAppbmRleCBkMmIwOWJkNWRiNTY3NmMwMWFiZjgy
M2QzZjA3MjJhNzcwZWE1NDBiLi4yYWYzZDRhMWM1MjA5MTI5M2RlMWM0ODNhMmZjMTczYWM2NmVh
Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZS5oCmluZGV4IGRjMDcxMzBhMWIxNDY1M2JkMWRmNWJlZWU5ODgwOWUzYjcyZWZiZTMuLjk2
NWRlNmY4YTA3YmRjNzhjMDhlMGYxYzJlNzIxOWUxZWRhNDA0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaApA
QCAtMjcsOSArMjcsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTdG9yZWRDcmVkZW50
aWFsc1BvbGljeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDY2ZmQ2YTg2YTg0
NWFkNGRmMWIwZTA1YmNhZDc1YzIwMzIzNDgxY2EuLmRhNmIyYWJlMTEzOGQ4ZjQxYTMwYWJjN2Qx
OTc2NGI4ODdmNmQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cApAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAgICAgICAgIHN3
aXRjaCAoc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Rm9y
U3VzcGVuc2lvbjoKICAgICAgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9uIGJ5IG5hdmln
YXRpbmcgZm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNldHVwIHRvIG5h
dmlnYXRlIGJhY2sgdG8gcmVzdW1lLgotICAgICAgICAgICAgcmVxdWVzdCA9IHsgYmxhbmtVUkwo
KSB9OworICAgICAgICAgICAgcmVxdWVzdCA9IHsgV1RGOjpibGFua1VSTCgpIH07CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Tm86CiAgICAgICAgICAg
ICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwpAQCAtMTY2Nyw3ICsxNjY3LDcgQEAgYm9v
bCBEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAobV9yZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSAmJiAhZnJhbWVMb2FkZXIoKS0+
c3RhdGVNYWNoaW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKSB7Ci0gICAgICAg
IG1fcmVxdWVzdC5zZXRVUkwoYmxhbmtVUkwoKSk7CisgICAgICAgIG1fcmVxdWVzdC5zZXRVUkwo
V1RGOjpibGFua1VSTCgpKTsKICAgICAgICAgaWYgKGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKQog
ICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlzcGF0Y2hEaWRDaGFuZ2VQcm92
aXNpb25hbFVSTCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
aW5kZXggYWM5NDhjY2RhZGQwYWExYzVlMWJlN2EwMWVhMTYwOTAxYzFmYTM3NC4uZTlmNTAzY2M2
ZjYzNGVlMTAzNjdhZGE3ODdkMTY2MjEwNmMxMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgKQEAgLTIzNCw3ICsyMzQsNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcgog
ICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIHVybEZvckhpc3RvcnkoKTsgfQogICAgIHZvaWQgc2V0Q2xpZW50UmVkaXJlY3RTb3Vy
Y2VGb3JIaXN0b3J5KGNvbnN0IFN0cmluZyYgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
KSB7IG1fY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gY2xpZW50UmVkaXJlY3RTb3Vy
Y2VGb3JIaXN0b3J5OyB9CiAgICAgCi0gICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0U291cmNlRm9y
SGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuICh1cmxGb3JIaXN0b3J5KCkgPT0gdXJsKCkgfHwgdXJs
KCkgPT0gYmxhbmtVUkwoKSkgPyBTdHJpbmcoKSA6IHVybEZvckhpc3RvcnkoKS5zdHJpbmcoKTsg
fSAvLyBudWxsIGlmIG5vIHNlcnZlciByZWRpcmVjdCBvY2N1cnJlZC4KKyAgICBTdHJpbmcgc2Vy
dmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gKHVybEZvckhpc3Rv
cnkoKSA9PSB1cmwoKSB8fCB1cmwoKSA9PSBXVEY6OmJsYW5rVVJMKCkpID8gU3RyaW5nKCkgOiB1
cmxGb3JIaXN0b3J5KCkuc3RyaW5nKCk7IH0gLy8gbnVsbCBpZiBubyBzZXJ2ZXIgcmVkaXJlY3Qg
b2NjdXJyZWQuCiAgICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0RGVzdGluYXRpb25Gb3JIaXN0b3J5
KCkgY29uc3QgeyByZXR1cm4gdXJsKCk7IH0KIAogICAgIGJvb2wgZGlkQ3JlYXRlR2xvYmFsSGlz
dG9yeUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggMzg1ZmI2NDA3YmE0
MTliYmI4NjY3Y2JjNTA5OTdjMWIwZDRiZjIxNC4uMzA0OGM1OWU1NzUxMzdkODVlMGE5OWNlOTJj
NTBlM2RlN2JhZjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKaW5kZXgg
NGNkZjQ4Yjc3YzZkMDVlMmU2NTU3OWE0MzIxNDgzMDhkODQ4ZWJjOS4uZjlhY2NmMTcyMTViYjA2
YTZmODk2NmNmMDIxNzk5YmVkNThlM2QxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggYjNhZTZhYjBlM2Q0OWEwZGI2MTM3NWEzYzdkY2ZkMjgyMDQ0NDhk
Mi4uOWQwMjk3YjFiNDc1N2QyOGIzMDNhYzBiZDM4NmY5YzYzMjc1MDM5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6c3VibWl0Rm9ybShSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvbikKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdWJtaXNz
aW9uLT5hY3Rpb24oKSkpIHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChzdWJt
aXNzaW9uLT5hY3Rpb24oKSkpIHsKICAgICAgICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCktPmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Zvcm1BY3Rpb24oVVJMKHN1Ym1pc3Npb24tPmFj
dGlvbigpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faXNFeGVjdXRpbmdKYXZh
U2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7CkBAIC02OTksNyArNjk5LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIGlmICghcGFyc2VIVFRQUmVmcmVzaChkb2N1
bWVudExvYWRlci5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmVm
cmVzaCksIGRlbGF5LCB1cmxTdHJpbmcpKQogICAgICAgICByZXR1cm47CiAgICAgYXV0byBjb21w
bGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gZG9jdW1lbnQudXJsKCkgOiBkb2N1bWVu
dC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwotICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQo
Y29tcGxldGVkVVJMKSkKKyAgICBpZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxl
dGVkVVJMKSkKICAgICAgICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVS
ZWRpcmVjdChkb2N1bWVudCwgZGVsYXksIGNvbXBsZXRlZFVSTCk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIGF1dG8gbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJlc2ggIiArIGRvY3VtZW50LnVybCgp
LnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0byBhIGphdmFzY3JpcHQ6IFVS
TCI7CkBAIC0zMzU1LDcgKzMzNTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRB
ZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogCiAgICAg
ICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2FyZCB0byBhYm91
dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sgdG8gcmVzdW1l
LgogICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6OkZvclN1c3Bl
bnNpb24pCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPndpbGxDb250
aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KHsgYmxhbmtVUkwoKSB9KTsKKyAgICAg
ICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+d2lsbENvbnRpbnVlTWFpblJlc291
cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBXVEY6OmJsYW5rVVJMKCkgfSk7CiAKICAgICAgICAgbV9w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2Uoc2hvdWxk
Q29udGludWUpOwogICAgIH07CkBAIC0zOTA2LDcgKzM5MDYsNyBAQCBSZWZQdHI8RnJhbWU+IGNy
ZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyRnJhbWUsIEZyYW1lJiBsb29rdXBGcmFtZSwgRnJhbWVM
b2FkUmVxdQogICAgIGNyZWF0ZWQgPSBmYWxzZTsKIAogICAgIC8vIEZJWE1FOiBQcm92aWRlIGxp
bmUgbnVtYmVyIGluZm9ybWF0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgb3BlbmVyJ3MgZG9jdW1l
bnQuCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0
KCkudXJsKCkpICYmICFvcGVuZXJGcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xp
Y3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhvcGVuZXJGcmFtZS5kb2N1bWVudCgpLT51cmwoKSwg
eyB9KSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChyZXF1ZXN0LnJlc291cmNl
UmVxdWVzdCgpLnVybCgpKSAmJiAhb3BlbmVyRnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPmFsbG93SmF2YVNjcmlwdFVSTHMob3BlbmVyRnJhbWUuZG9jdW1lbnQoKS0+
dXJsKCksIHsgfSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFyZXF1ZXN0
LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0
LmZyYW1lTmFtZSgpLCAiX2JsYW5rIikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggMWI5MTFhMmI3ZDI5MjJiYTM2Njk1ZDRkOTI2MzA0MGY1MGYyZmYz
Zi4uOTA0ZWQ5NjJmNzk3OTNjODNlY2I3ZDgxNWY0NTA2ZmZjODUwYTVjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEwMCw3ICsxMDAsNiBAQCBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKLWNsYXNzIFVSTDsKIGNsYXNzIFdpZGdldDsK
IAogZW51bSBjbGFzcyBQb2xpY3lEZWNpc2lvbk1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA5ZmJhODM1YTQ1NTI5ZWVjOTE5MDBjMmYzYjJl
YjUwYjcxODg4NGQ4Li41MGJkMTM4ZjAyZTM0YjE0YTM5MTllMzY3ZWQ3ODFiZGJjNzliYjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTYxNSw3
ICs2MTUsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJyZW50SXRlbVNob3VsZEJlUmVw
bGFjZWQoKSBjb25zdAogICAgIC8vICAiSWYgdGhlIGJyb3dzaW5nIGNvbnRleHQncyBzZXNzaW9u
IGhpc3RvcnkgY29udGFpbnMgb25seSBvbmUgRG9jdW1lbnQsCiAgICAgLy8gICBhbmQgdGhhdCB3
YXMgdGhlIGFib3V0OmJsYW5rIERvY3VtZW50IGNyZWF0ZWQgd2hlbiB0aGUgYnJvd3NpbmcgY29u
dGV4dAogICAgIC8vICAgd2FzIGNyZWF0ZWQsIHRoZW4gdGhlIG5hdmlnYXRpb24gbXVzdCBiZSBk
b25lIHdpdGggcmVwbGFjZW1lbnQgZW5hYmxlZC4iCi0gICAgcmV0dXJuIG1fY3VycmVudEl0ZW0g
JiYgIW1fcHJldmlvdXNJdGVtICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9jdXJyZW50SXRl
bS0+dXJsU3RyaW5nKCksIGJsYW5rVVJMKCkpOworICAgIHJldHVybiBtX2N1cnJlbnRJdGVtICYm
ICFtX3ByZXZpb3VzSXRlbSAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fY3VycmVudEl0ZW0t
PnVybFN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpOwogfQogCiB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjpjbGVhclByZXZpb3VzSXRlbSgpCkBAIC02NTQsOSArNjU0LDkgQEAgdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAgLy8gTGF0
ZXIgd2UgbWF5IHdhbnQgdG8gbGVhcm4gdG8gbGl2ZSB3aXRoIG5pbCBmb3IgVVJMLgogICAgIC8v
IFNlZSBidWcgMzM2ODIzNiBhbmQgcmVsYXRlZCBidWdzIGZvciBtb3JlIGluZm9ybWF0aW9uLgog
ICAgIGlmICh1cmwuaXNFbXB0eSgpKSAKLSAgICAgICAgdXJsID0gYmxhbmtVUkwoKTsKKyAgICAg
ICAgdXJsID0gV1RGOjpibGFua1VSTCgpOwogICAgIGlmIChvcmlnaW5hbFVSTC5pc0VtcHR5KCkp
Ci0gICAgICAgIG9yaWdpbmFsVVJMID0gYmxhbmtVUkwoKTsKKyAgICAgICAgb3JpZ2luYWxVUkwg
PSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgCiAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiB0aXRsZSA9
IGRvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaApp
bmRleCAwMWQxZWZjMzE1YTViMDJkMDY5OWU5YWM0NWRmZDEzNjg3OGY0YWIxLi41NGQ3MjIzMTBk
OGRmZjkyMWYxZTlkZTA1NDViZDllMWM2MjA5NDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9j
dW1lbnQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50OwogCiBz
dHJ1Y3QgTGlua1JlbEF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Mb2FkVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZFRpbWluZy5oCmluZGV4
IDczZjllZjk0YWZkNjI1NWQ1YTNmNTc0NTgyZDMwYTY0ZjIxZDE0NjQuLmZlYTdjNDFmY2U2MDI1
MjZlMzZhYThlZGI2ZWFiNDY1Njk4NThjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRUaW1pbmcu
aApAQCAtMjUsMTMgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9X
YWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3Mg
TG9hZFRpbWluZyB7CiBwdWJsaWM6CiAgICAgU2Vjb25kcyBzZWNvbmRzU2luY2VTdGFydFRpbWUo
TW9ub3RvbmljVGltZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5o
CmluZGV4IDU5Njc4MmM2NTdjYWM1MDgyY2FmZTFjZTRiMWMxNmZmYjlhNjhkNGQuLjI4NWU2ODA5
Y2U0NWUyMjEyNDQ0NjlmZjk1NWFlNTVlZmRlYjUxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
b2FkZXJTdHJhdGVneS5oCkBAIC01MSw3ICs1MSw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJl
c291cmNlTG9hZGVyOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKaW5kZXggMDUwY2I3
OWVhNjU3N2Q1M2EwMzM1MjA2YmQ0NjBlYTQ0NzNmMjM3Ny4uZmFkZTAxYjdjMWQwYmVjODQ2MzY3
ZmY1YTYyN2Q5M2RmMWYwOWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01p
eGVkQ29udGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENv
bnRlbnRDaGVja2VyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgTWl4ZWRDb250ZW50Q2hl
Y2tlcjo6Y2hlY2tGb3JtRm9yTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9y
aWdpCiB7CiAgICAgLy8gVW5jb25kaXRpb25hbGx5IGFsbG93IGphdmFzY3JpcHQ6IFVSTHMgYXMg
Zm9ybSBhY3Rpb25zIGFzIHNvbWUgcGFnZXMgZG8gdGhpcyBhbmQgaXQgZG9lcyBub3QgaW50cm9k
dWNlCiAgICAgLy8gYSBtaXhlZCBjb250ZW50IGlzc3VlLgotICAgIGlmIChwcm90b2NvbElzSmF2
YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICghaXNNaXhlZENvbnRlbnQoc2VjdXJpdHlPcmlnaW4s
IHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hl
Y2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaAppbmRl
eCBhMjZhODU3OTdkM2E4Y2IwYzI5MzNkZjI0Nzc2YjY5NWI3MGQ0NDM0Li41ZmRmZmY4MGEzMTg3
NDM3MTgzODg5MGI1ZTI0MDRlYTAwOWYxMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
aXhlZENvbnRlbnRDaGVja2VyLmgKQEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50OwotY2xhc3MgVVJMOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIE1peGVkQ29udGVudENoZWNrZXIgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IGE4Zjgw
YmUxMzgyMDdkYzdhYTZjNmMxNDY5NzNkMGRiOWU0YjliMWMuLjg4ZTcwNTE2ZDZjZTkzZDM2ZWM4
M2FiMmM4ZDQzYjdmYzQ1ZGEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvblNjaGVkdWxlci5jcHAKQEAgLTM2Niw3ICszNjYsNyBAQCBpbmxpbmUgYm9vbCBOYXZpZ2F0
aW9uU2NoZWR1bGVyOjpzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChX
VEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IHJldHVybiBOYXZpZ2F0aW9uRGlzYWJsZXI6OmlzTmF2aWdhdGlvbkFsbG93ZWQobV9mcmFtZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAppbmRleCAw
NDU5MzE4MTkxNzY0OWJiMjk4NzUzNTVlMzM4NzIwNzM1NDMyMTk0Li42ZmJlMmE1YjNkYmM5NmZj
YmQ0NTA5MjU1OTc4NGU4ZGQwY2Q2YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uU2NoZWR1bGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3MgRm9ybVN1Ym1pc3Npb247
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFNjaGVkdWxlZE5hdmlnYXRpb247CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgTmF2aWdhdGlvblNjaGVkdWxlciB7CiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRleCAxNTQ4OWRjZjA0YmYxZGVkNzg4
NmVmOGMwODYxN2RkYmMxM2Q5YTE4Li42ZGVlZjQ1MTY5YTllNWNhMzBhOWYyZjgzMzQyMzc5ZDM5
OWIxZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKQEAgLTQwLDcgKzQwLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKIGVu
dW0gY2xhc3MgVmlvbGF0aW9uUmVwb3J0VHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZEluZm8uaAppbmRleCA5YjYzMzBlZDQ3YmFjNjZkZWEyMmI4NGUxOWNmMWQwMGIwNmEy
M2MxLi4xYzEyM2QwNmY3YWQ2NzUyMjlkNmM1ZTAxZjkyNTFhNjhiMTYyMjViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggN2JkZmM0OGY1
ZDQwNTliZTZhYjhiYjlhMjVlYjA4MzUwZTg5MDE5OS4uMTI3MjNiMzQyY2I1YzI2NTJmM2UxNGFk
NGFjM2MyZDFjNDBmNmZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgU3RyaW5nJiBkb21h
aW5JCiAgICAgYXV0byBvcGVuZXJQcmltYXJ5RG9tYWluID0gcHJpbWFyeURvbWFpbihvcGVuZXJV
cmwpOwogICAgIGlmIChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgIT0gb3BlbmVyUHJpbWFy
eURvbWFpbgogICAgICAgICAmJiAhb3BlbmVyRG9jdW1lbnQuaGFzUmVxdWVzdGVkUGFnZVNwZWNp
ZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24oZG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzKQotICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShvcGVuZXJVcmwuc3Ry
aW5nKCksIGJsYW5rVVJMKCkpKSB7CisgICAgICAgICYmICFlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG9wZW5lclVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSkgewogICAgICAgICBtX3JlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyUHJpbWFyeURvbWFpbik7CiAgICAgICAgIC8vIFJl
bWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVzdHMgc2luY2UgdGhleSBkb24ndCBu
ZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJEb2N1bWVudC5zZXRIYXNSZXF1ZXN0
ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaAppbmRleCBhZTJjYWUyNzgwOTE3NTU4M2YyZWJiNDMzNjVhMTAxOWExNDcxMDg3
Li4yYWJmYzUwMzM0YzE3ZDg5ZTJiNmZmYmRjMzhhMzgyYTFmMTA2ZTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtNDcsNyArNDcsNiBAQCBj
bGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuaAppbmRleCBmOTRkNmZkMTllNzc0NmRmNWU2ODNhOTU3ZjBmZDk5
YTc3MmQzMjFhLi4wODI0NjlkYTEyYTA0MGIzMThjNDJhZjNjNjc0Y2Q4MGMwZmQ2ZWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgKQEAgLTI2
LDEwICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJl
Y29yZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDZiYTU1MjZjMGFmNTZl
OTYyMzU2MWRiNDdjZDFiYWZmODEzMTk2Y2MuLmEwYjdkODQ5ODUwMmIwZTcyMzdhZjFhMDFhMjFi
NmJkN2E5NTg5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC01
Miw3ICs1Miw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBOZXR3
b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcmV2aWV3TG9hZGVyOwotY2xhc3MgVVJMOwogCiBjbGFz
cyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJv
dGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlVGltaW5nLmgKaW5kZXggNmM5YWNiMTkzYTY3MDIzYmI1ZGMzNmJhYzRkYTdlNzk4
ODM0NDNiZS4uN2VmOGRiYzg1MTRkY2VjZmYxYjA3ZjQ1MDM3MDM3ZjhlODg0ODgyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNs
dWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRNZXRyaWNzLmgiCiAjaW5j
bHVkZSAiU2VydmVyVGltaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJh
bWVMb2FkZXIuY3BwCmluZGV4IDVkN2QzOGMzYjA3MjNiNzE4NjA5YWQ4N2IxMGU3NTIxNjRkZTg3
MzYuLjU1YTE2ODQ4MzFiZDAxZjZlMGM0YTYxZmM3Yjc3YmI1NzdlZDg4MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtNzcsMTQgKzc3LDE0IEBAIGJvb2wg
U3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmIG93bmVy
RWxlbWVudCwgY29uc3QgU3RyCiAgICAgLy8gU3VwcG9ydCBmb3IgPGZyYW1lIHNyYz0iamF2YXNj
cmlwdDpzdHJpbmciPgogICAgIFVSTCBzY3JpcHRVUkw7CiAgICAgVVJMIHVybDsKLSAgICBpZiAo
cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkgeworICAgIGlmIChXVEY6OnByb3RvY29s
SXNKYXZhU2NyaXB0KHVybFN0cmluZykpIHsKICAgICAgICAgc2NyaXB0VVJMID0gY29tcGxldGVV
UkwodXJsU3RyaW5nKTsgLy8gY29tcGxldGVVUkwoKSBlbmNvZGVzIHRoZSBVUkwuCi0gICAgICAg
IHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdURjo6YmxhbmtVUkwoKTsKICAgICB9
IGVsc2UKICAgICAgICAgdXJsID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsKIAogICAgIGlmIChz
aG91bGRDb252ZXJ0SW52YWxpZFVSTHNUb0JsYW5rKCkgJiYgIXVybC5pc1ZhbGlkKCkpCi0gICAg
ICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdURjo6YmxhbmtVUkwoKTsKIAog
ICAgIGJvb2wgaGFzRXhpc3RpbmdGcmFtZSA9IG93bmVyRWxlbWVudC5jb250ZW50RnJhbWUoKTsK
ICAgICBGcmFtZSogZnJhbWUgPSBsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKG93bmVyRWxlbWVudCwg
dXJsLCBmcmFtZU5hbWUsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKQEAgLTk0
LDcgKzk0LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhUTUxGcmFtZU93
bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBTdHIKICAgICAvLyBJZiB3ZSBjcmVhdGUg
YSBuZXcgc3ViZnJhbWUgdGhlbiBhbiBlbXB0eSBkb2N1bWVudCBpcyBsb2FkZWQgaW50byBpdCBz
eW5jaHJvbm91c2x5IGFuZCBtYXkKICAgICAvLyBjYXVzZSBzY3JpcHQgZXhlY3V0aW9uIChzYXks
IHZpYSBhIERPTSBsb2FkIGV2ZW50IGhhbmRsZXIpIHRoYXQgY2FuIGRvIGFueXRoaW5nLCBpbmNs
dWRpbmcKICAgICAvLyBuYXZpZ2F0aW5nIHRoZSBzdWJmcmFtZS4gV2Ugb25seSB3YW50IHRvIGV2
YWx1YXRlIHNjcmlwdFVSTCBpZiB0aGUgZnJhbWUgaGFzIG5vdCBiZWVuIG5hdmlnYXRlZC4KLSAg
ICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChmcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+b3JpZ2luYWxVUkwoKSA9PSBibGFua1VSTCgpKTsKKyAgICBib29sIGNhbkV4ZWN1dGVTY3Jp
cHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxVUkwoKSA9PSBX
VEY6OmJsYW5rVVJMKCkpOwogICAgIGlmICghc2NyaXB0VVJMLmlzRW1wdHkoKSAmJiBjYW5FeGVj
dXRlU2NyaXB0ICYmIG93bmVyRWxlbWVudC5pc1VSTEFsbG93ZWQoc2NyaXB0VVJMKSkKICAgICAg
ICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoc2NyaXB0VVJMKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAppbmRleCA0ODk2ZDYyZjQ1ZjFmODFk
OTBkZTc0MDJlMjA5NzA0MWE2ZWIwNjRjLi4yY2FhZTljYTYwOThhNzUzM2MzMDkzODk2ZGMyMDMx
MjZlNjg5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaApAQCAtNDUs
NyArNDUsNiBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFF
bGVtZW50OwogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVudDsKIGNsYXNzIEludFNpemU7Ci1j
bGFzcyBVUkw7CiBjbGFzcyBXaWRnZXQ7CiAKIC8vIFRoaXMgaXMgYSBzbGlnaHQgbWlzbm9tZXIu
IEl0IGhhbmRsZXMgdGhlIGhpZ2hlciBsZXZlbCBsb2dpYyBvZiBsb2FkaW5nIGJvdGggc3ViZnJh
bWVzIGFuZCBwbHVnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0
aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAppbmRl
eCBmMTAxMzUxNTk3MTk4MTgyOWM2MTAxOTE3NTJiOTFhZjllYzdmYjc1Li43MDU2MzIxMzNkZjhl
Zjg1NjU5ODUyODdlNDEwNjBiMWRiMzc5NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZURhdGEuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlLmgKaW5kZXggNWRmNWY2MDE3Y2U0YzAzYjc4OGJlOThiZWI3YjZlMTdiYjA0MGI2ZS4u
NjEzMTdiNTMxY2NjMWIwNjI5YjIxZGJmMGE2N2NjZmVlYTZjZjQ2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCkBAIC0zMyw3ICsz
Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsK
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
LWNsYXNzIFVSTDsKIAogdXNpbmcgRmFsbGJhY2tVUkxWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWly
PFVSTCwgVVJMPj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCBhYmFhNzNlMTRhYjRiOGM3YWJhYjEwODhk
ZDhjMjM4ZTY5ZTJiNDFlLi40N2Q4OTM0YmE5OTE0YTVhNTZkMTE0NmE3OTdlZGViODRkZjJkYmM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5oCkBAIC0yNywxMCArMjcsMTAgQEAKIAogI2luY2x1ZGUgIkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IGYyZmIxZjc4MzJiY2Q4MDQ2MmJjYWIwOGNlYmE3ZDEy
NWI4NWEyNDMuLjBkMTMwYTQ1ZjhhZjNiNDk5MDQyMTA1Yjk2MTAzOWZmNWZiZjM0MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKaW5kZXggODFjMjMyMWYzMzk5YzMwNDAzMzc3NmQ5MjZkOGUzMDAzYjZlNDFhNS4uMDQwZDhi
N2FkNmEwOTFlYjFjOWU0MzViNWUwYzM0MDFmOTNhZTI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaAppbmRleCA0OGNiZjg4ZTVkODkwMzcxMTM2MTg5NWNhMWMxMzJhNjQwYzdkOTA0Li42OGMz
NjFlNTJiNDJkOTFkMzYxZTljYzgyOTBlZjM1YzM1MDE1MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApA
QCAtMzgsNyArMzgsNiBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdG9yYWdlSURKb3Vy
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNl
ci5jcHAKaW5kZXggY2I0ODE1ODVmNGEwZGMzNjg5YzhlODE1ZTcwNmNhMjRjNDI2MDAxNS4uODQ0
NjlmOGFkNGE5NGE4NDYyZTc2ZjNkOTEwYzMyZThiMTQxMjE5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKIAogI2luY2x1ZGUgIlRleHRSZXNvdXJj
ZURlY29kZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJh
Y3Rlck5hbWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9NYW5pZmVzdFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlm
ZXN0UGFyc2VyLmgKaW5kZXggZTc4MTA4OTNhMjA2OTBhY2U2M2FlYzNlYzg4ZTYwZWFmNjJmYzc4
MC4uOGZlNDBhNjRlNDQ5MGFhYzgyN2E2MWRiMGY0MDQ3YzFlZTg2MGIxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKQEAgLTMwLDggKzMw
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIHN0cnVjdCBNYW5p
ZmVzdCB7CiAgICAgVmVjdG9yPFVSTD4gb25saW5lV2hpdGVsaXN0ZWRVUkxzOwogICAgIEhhc2hT
ZXQ8U3RyaW5nPiBleHBsaWNpdFVSTHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgKaW5kZXggMzdkZjY4YjM2
NmNmZjg1MzliOTVjODIzZjJlOTEyNGQzNWVhOTkzOC4uZTQ2MGI2OWMyYWVkNWQyNzlkZDU0YTBk
ZjlhZjAxMGI5NGJjNzdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaApAQCAtMzcsNyArMzcsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmU7CiBjbGFzcyBBcmNoaXZlUmVzb3Vy
Y2U7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAppbmRleCAwYzU4NDUyMmFiOWM2NGI3ZjdmNTQ0Njc5ZGNiZTU3ZjZkZjc4MjYyLi4xNjI4MTFj
MTJmYWFjYzNlYTAxYTI5MDU3MDhhMjE0NTU1YmNkY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtNDIsNyAr
NDIsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgpAQCAtNTEsNiArNTAsNyBAQAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi9M
aXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTU2NSw3ICs1NjUsNyBAQCBSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSog
ZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNv
IGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdp
bGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJh
bWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIg
bWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIi
ICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3Ry
aW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKLSAgICBhdXRvIGlmcmFtZVJlc291cmNlID0gQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBibGFua1VSTCgpLCAi
dGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOworICAgIGF1dG8gaWZyYW1lUmVzb3VyY2Ug
PSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVyKGlmcmFtZU1hcmt1cCksIFdURjo6
YmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFN0cmluZygpKTsKIAogICAgIFZlY3Rv
cjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7CiAgICAgc3ViZnJhbWVB
cmNoaXZlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNWUxZTNmMWQzY2QxNGE0NmEyNzQ5
YTQ4YTE5MzljYTJkNjM4OGI0Yy4uOGY1ZGQyMDYxNzRmZjQ4NmY0MTJjZWRmODEyYTk4MGRkNjNk
YzUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCkBAIC00NywxMSArNDcsMTEgQEAKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0Nv
dW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmgKaW5kZXggMDc3N2IxNzcyNGU5YjA1Y2VmNWVkNTRhM2FlZmMxZDExNDY3ZjRkNy4u
MTBmNjljNmExMDUyOWYxZmQ5MTFhMWQwNzRlZjAzMDljMGY1Y2JiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTU3LDcg
KzU3LDYgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdl
TG9hZGVyOwogY2xhc3MgU2V0dGluZ3M7Ci1jbGFzcyBVUkw7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogdXNpbmcgUmVzb3VyY2VFcnJvck9yID0gRXhwZWN0ZWQ8VCwgUmVzb3VyY2VFcnJvcj47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVl
dENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRD
bGllbnQuaAppbmRleCBkZjQ2YmUyZDM3N2U0YzFkZTE4MmFkYWYxNGQ3MzlhMWY5N2NkYzAyLi4z
OGJiMTk5OTAwODdjOGQ2NjYxZjM2YTM2NjlkNGM5YWUzMzQ4MTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgKQEAgLTMx
LDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVT
aGVldDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkU3R5bGVTaGVldENsaWVudCA6IHB1Ymxp
YyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGQ3MTY3OThhNGNlMWQ5N2Q2MWQzMTNlOTUxOGI3ZGMy
MjY5ZjcwNWMuLjJmY2JkMzE5ODVhNDc1YTMwZmYxNzdmNjMyOTQ2MjJmMDEyNTI5ZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC00MSw3ICs0MSw2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSAgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKLWNsYXNzIFVS
TDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxv
YWRlci5oCmluZGV4IDZhYTU1Mzc0Zjc4YjY2NzdmNTcwOWEyYmQ5ZGNiNzE0YzE4ZmZkZmEuLjM0
YTBmMzJiNGY1ZThkZjlhNmMwM2VmNTc0MThmYzZhYTg1MWQzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkNh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5T
VVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJh
cy5tbQppbmRleCBmOTEwZWQ1YmRlMjQ5YmEzMWI4YTU4M2ZjNTQxZWY3YWFjY2MzY2MwLi5jYmUw
MDA0ODA2Y2M1ODc0MjNkOGRlYjBlZTQ4NGEwMWY3ZTA2ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KQEAgLTMwLDExICszMCwxMSBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMb2FkZXJOU1VSTEV4dHJhcy5oIgogCi0jaW1w
b3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotI2ltcG9ydCAi
VVJMLmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW1wb3J0ICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCBjMTM5MDc2OGVmODY1
ZjI2NjQxZTlhOTM0OGU2ZTY2MGRiMDcyZGVhLi45MTZkM2Y1MTFiOTY1M2Q4NGNlN2FiM2YxNTEx
ZjBiYjczNWI2YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2luY2x1ZGUgIlRl
eHRUcmFja0xpc3QuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgIlZUVEN1ZS5oIgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGI1MTdi
NTJlNzlkODg0ZDBlNzY4NjUwYTYxM2ZmNzQ5ODIyNDVmNGEuLmE1NTBkNWIwYjc5YTk0MTg3N2Ez
ZmJmNTQ5Njc0Y2RiMzNlZWJjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAt
MzgyLDcgKzM4Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIENocm9tZUNsaWVudCB7CiAgICAg
dmlydHVhbCB2b2lkIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNv
bnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBIYXNo
U2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBj
b250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJMJiwgY29uc3QgSGFzaFNldDxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIHsgfTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IGFmN2NhOTI2NGE0ZjJmODVlOTQwYzliZDFkNDAx
NmRmYTA5OTJjYzAuLmI4NzUwNWEwNTA1NzllM2JmMTM4NTAyYTVlZmY0YTQ1NTJlZDFjMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDVlN2MzNWM5NzcxOGQ4OGY4NDFiZjQx
ODA0NTI0OTRhZDhmNzUxOTIuLjg4OWVlOTk3NjEyOGQxYTk2NjdlMGE1MGEzNDhlNTEyYmU2ODcw
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKQEAgLTMxLDI5ICsz
MSwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBGcmFtZTsKLSAgICBj
bGFzcyBVUkw7Ci0KLSAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVudCB7Ci0gICAgcHVibGljOgot
ICAgICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgpID0gZGVmYXVsdDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOwotICAgICAgICAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJsKSA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKikgPSAwOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgPSAwOwotICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNwZWFr
KGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0b3BTcGVha2luZygp
ID0gMDsKK2NsYXNzIEZyYW1lOworCitjbGFzcyBDb250ZXh0TWVudUNsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+Q29udGV4dE1lbnVDbGllbnQoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVh
bCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgdm9p
ZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdp
dGhHb29nbGUoY29uc3QgRnJhbWUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGlj
dGlvbmFyeShGcmFtZSopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzdG9wU3BlYWtpbmcoKSA9IDA7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAg
dmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFU1NJQklM
SVRZX0NPTlRFWFRfTUVOVVMpCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpID0gMDsKICNlbmRpZgot
ICAgIH07Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCA2ODEyNmJhOTZlOGJmMTdlNzY4
OTNlMWViYWFjZjU0OTQwZjJmYmM3Li5hM2U1ZWFlODk0ZDY0Mjc2MzdkZDg0NWVkYWFkZTcxYzYx
NTFjMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hl
Y2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VU
b0Rpc2s6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgaWYgKFdlYkNvcmU6OnByb3Rv
Y29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksICJmaWxl
IikpCisgICAgICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKG1fY29udGV4dC5oaXRUZXN0UmVz
dWx0KCkuYWJzb2x1dGVJbWFnZVVSTCgpLCAiZmlsZSIpKQogICAgICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKQEAgLTEzNTEsNyAr
MTM1MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVk
ZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgICAgIGl0ZW0uc2V0
VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRWaWRlb1RvRGlzaygpKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRh
Z0Rvd25sb2FkQXVkaW9Ub0Rpc2soKSk7Ci0gICAgICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9j
b2xJcyhtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlSW1hZ2VVUkwoKSwgImZpbGUi
KSkKKyAgICAgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1
bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksICJmaWxlIikpCiAgICAgICAgICAgICAgICAgc2hvdWxk
RW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlwYm9hcmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggN2JkZTFjYmI4YjYzNzFlN2E3YTA4YmE1NTFlODU2YjgxOTJmNjBmYy4uMWQ2
ZGQ3Y2E3Yjg4ZjhmOTNhOWMyNDlkNDlhZTE3NTdmOTAzMDRiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5o
IgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdWRkZW5UZXJtaW5hdGlvbi5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJVc2Vy
R2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc3VhbFZpZXdwb3J0LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0UG9pbnQuaCIKQEAgLTIyMTUsNyArMjIxNSw3IEBAIFN0cmluZyBET01XaW5kb3c6
OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0IERPTVdpbmRvdyYgYWN0aXZlV2lu
ZG93LCBJCiAKIGJvb2wgRE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNzKERPTVdpbmRv
dyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBpZiAoIXBy
b3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCisgICAgaWYgKCFXVEY6OnByb3RvY29sSXNK
YXZhU2NyaXB0KHVybFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIElm
IHRoaXMgRE9NV2luZG93IGlzbid0IGN1cnJlbnRseSBhY3RpdmUgaW4gdGhlIEZyYW1lLCB0aGVu
IHRoZXJlJ3Mgbm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYTEw
ZGFiMzNmYjcyMDBkZjFhNDIwYzM0MjhlNWY3YjM5NmZjY2Q2Zi4uZTAxMDhhN2JlYjNhYWJjNGQx
MmE3ZTgzYWE5NzkxZGQyZTEzMTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKQEAgLTEwNjksNyArMTA2OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
ZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAg
ICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQpCiAgICAgICAgICAgICAgICAgc3Jj
LmVkaXRvcigpLmNvcHlVUkwobGlua1VSTCwgdGV4dENvbnRlbnRXaXRoU2ltcGxpZmllZFdoaXRl
U3BhY2UsIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFVSTChzcmMuZWRpdG9yKCkucGFz
dGVib2FyZFdyaXRlclVSTChsaW5rVVJMLCB0ZXh0Q29udGVudFdpdGhTaW1wbGlmaWVkV2hpdGVT
cGFjZSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFVSTERhdGEo
c3JjLmVkaXRvcigpLnBhc3RlYm9hcmRXcml0ZXJVUkwobGlua1VSTCwgdGV4dENvbnRlbnRXaXRo
U2ltcGxpZmllZFdoaXRlU3BhY2UpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGUgcGFzdGVib2FyZCBhbHNvIGNvbnRhaW5zIHRydXN0d29ydGh5IGxpbmsg
ZGF0YQogICAgICAgICAgICAgLy8gYnV0IGRvbid0IG92ZXJ3cml0ZSBtb3JlIGdlbmVyYWwgcGFz
dGVib2FyZCB0eXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAppbmRleCBjMDJk
NWM4MDE2YzY1YjNkNWVmOTM1NmM4MmJlN2Q1NzJiOTc5YTk0Li44NDM1MjgzY2RmY2IxMWE4NjJk
OWZjY2M2NmYzMDQzZjJjNTdhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5o
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiSW50
UG9pbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaAppbmRleCAzNzkyYTkxMjZmMWQzMGFmZmUzN2JlMWMyYTZkYWM3ODIxNmE3MjlhLi41
OGE0YzM4NzQ5ZTk1MGI0NzhjZjg3MDY4YTI2MzkzMTBhZGVmMDlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgot
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggZTg4NmI5MGZjMDgxYmE3YjNmMzBlYzM0MTRiMmZj
YmJlOWVmMTVhNS4uYTAyMTVmYTc3NDIzODUyYWJiNTQxMTBhNzI5NzE2YjkzNGU5MzRkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaApAQCAtODksNyArODksNiBAQCBjbGFzcyBSZW5kZXJXaWRnZXQ7CiBjbGFz
cyBTY3JpcHRDb250cm9sbGVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTZXR0aW5n
czsKLWNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNzIFdpZGdldDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMjQwZTY0NTczN2E0Yzc4Y2Y1MmQ3MWQ4ZDI4NTcw
YTAzYjg0ZjlhZi4uODRjNjIwMTBmNjZlOTNjMmVhYWVlZDQzY2Q3ZjI0MDU1MmNkZGI1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVu
dDsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyQm94
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuaAppbmRleCAwNWZlMmIzZjY3MGRlMmZmYjViMGQ2YTkwZDhkNzRm
OTJhODQ2NTcyLi43ZjM1ZjRkNzAxMDU1N2ZjNTk5YTIxYWRkZTY2MmEzNTk0YjZiMmUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0hpc3RvcnkuaApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEhpc3Rv
cnkgZmluYWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxIaXN0
b3J5PiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
dGlvbi5jcHAKaW5kZXggN2I5OGEwNjM2YzQ5MzZjZDZmZDYyOTQwMTIyY2FjYzlhODU4Njc2Ni4u
ODBhNmVkOTJiMDdhYjc5ZTAwZjUxYTc1YTgyMDI3NGNlYzU5NjUzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9M
b2NhdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVkdWxlci5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw3ICs1MCw3IEBAIGlubGluZSBj
b25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogCiAgICAgY29uc3QgVVJMJiB1cmwgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAg
ICAgIHJldHVybiBibGFua1VSTCgpOyAvLyBVc2UgImFib3V0OmJsYW5rIiB3aGlsZSB0aGUgcGFn
ZSBpcyBzdGlsbCBsb2FkaW5nIChiZWZvcmUgd2UgaGF2ZSBhIGZyYW1lKS4KKyAgICAgICAgcmV0
dXJuIFdURjo6YmxhbmtVUkwoKTsgLy8gVXNlICJhYm91dDpibGFuayIgd2hpbGUgdGhlIHBhZ2Ug
aXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdlIGhhdmUgYSBmcmFtZSkuCiAKICAgICByZXR1cm4g
dXJsOwogfQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgTG9jYXRpb246OnJlbG9hZChET01XaW5k
b3cmIGFjdGl2ZVdpbmRvdykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwcm90
b2NvbElzSmF2YVNjcmlwdCh0YXJnZXREb2N1bWVudC51cmwoKSkpCisgICAgaWYgKFdURjo6cHJv
dG9jb2xJc0phdmFTY3JpcHQodGFyZ2V0RG9jdW1lbnQudXJsKCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWZyZXNoKGFj
dGl2ZURvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAppbmRleCBiYjdkMmQxZDMzZWVmZjZj
OWQxNjY2YWIwMDEwMTc4MzJhNGYyYWY4Li4wMzRjZThiNmVmY2Y3MmMwYTdlZDRiZWUwMGZlMGVl
Yzk0YjE0NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCkBAIC0zNyw3ICszNyw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRnJhbWU7Ci1jbGFzcyBV
Ukw7CiAKIGNsYXNzIExvY2F0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJl
ZkNvdW50ZWQ8TG9jYXRpb24+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCAyNGI0MWRlM2Q2MWZhMTY4MTg4MjFlZDMwY2Q3ZTdiOTRmNjgwZDcx
Li5iMmI5YWU2ZTU5NTg3MjdlYmU0M2ZjYzBkODJkMGEzYTdkMjA4MWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtMTM1LDcgKzEzNSw2IEBAIGNsYXNzIFNldHRpbmdzOwogY2xhc3MgU29ja2V0UHJvdmlk
ZXI7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOwotY2xhc3MgVVJMOwogY2xhc3MgVXNlckNvbnRlbnRQcm92aWRlcjsKIGNsYXNzIFZhbGlk
YXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IDNiNmUxODI5ZTI4YzM1YTM5ZTRh
MTZiNWYwODhlNjFjM2M0NmVkOGEuLmZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5
YmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTMwLDExICszMCwx
MSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VS
TEhhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
LmgKaW5kZXggMjRhYjk0YmNhMjk1Y2NhZmIwYTY1MWE2MjcwYjI4Nzk0NWViYTk5MS4uM2E4NjM0
YWI2MzdhOTE0MmE3MjUwM2Y5YTg4YTUyNmY3OWUwYTliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2UuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBQZXJmb3JtYW5jZVRpbWluZzsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBVc2VyVGltaW5nOwogCiBjbGFzcyBQ
ZXJmb3JtYW5jZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlcmZvcm1hbmNlPiwgcHVibGlj
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5l
RGF0YSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3Vy
Y2VUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmNwcAppbmRleCA1NzUzMzU4MGMzMDIxZWFlNjZkZTMxOTA4OWQ4ZTRiMWJjMTAzZjlkLi43
YjdkODdhNDU4ZmJhMGU3MzlkMmM0MjA5Y2Y4MjQyYmJkODc0OTA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlVGltaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggMjI5ZWZmODQzODU0YjIwNjgwZDRhMzlkYzUxYzAw
NzJhNzY0OWU5My4uMDIwZTA5MmI5OGY4YzgzZmQ4YTViM2Y0MzMyYzI0NmIzZWM1ODc4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIK
QEAgLTE0OCw3ICsxNDgsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3Qg
VVJMJiB1cmwpCiAgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0cyBhcyBtX2RhdGEuaG9zdCwg
YnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KICAgICBtX2RvbWFpbiA9IG1fZGF0YS5ob3N0Owog
Ci0gICAgaWYgKG1fZGF0YS5wb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2RhdGEu
cG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQorICAgIGlmIChtX2RhdGEucG9ydCAmJiBX
VEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2RhdGEucG9ydC52YWx1ZSgpLCBtX2RhdGEu
cHJvdG9jb2wpKQogICAgICAgICBtX2RhdGEucG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IEJ5IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmlnaW5zIGNhbiBsb2FkIGxvY2FsIHJl
c291cmNlcy4KQEAgLTUxNiw3ICs1MTYsNyBAQCBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJgogewog
ICAgIFN0cmluZyBkZWNvZGVkSG9zdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsK
ICAgICBhdXRvIG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBo
b3N0ICsgIi8iKSk7Ci0gICAgaWYgKHBvcnQgJiYgIWlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgq
cG9ydCwgcHJvdG9jb2wpKQorICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQogICAgICAgICBvcmlnaW4tPm1fZGF0YS5wb3J0ID0g
cG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5oCmluZGV4IDVhZGY1MDE3NDliMDljMjkzZTU5YmE0MDQ1NmY3NjdjYjU2ZTA4ZTEuLmI5M2Qw
ZmFmMjM1YTdmZTM1NDc2NTA5ZjZlNDM3ZDU0NDA1Y2MxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgKQEAgLTM0LDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBVUkw7Ci0KIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6CiAgICAgZW51bSBQb2xpY3kgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggY2VmZmVhMzJiMDg0
YzU2MzEyNGYyMGI3YzVmZTI4ZjE0OTA0MDQ3NS4uMjc3NjJlYTIxZDZkMjA2NWU5ZGQwMTQ2ZGI5
NzliMzMyZWM0NTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
CkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCmluZGV4IGVlMjU3MmM1YTlhNjQ0Mzk1N2E1ZjNm
NzUzZjQ2ZTJmYmE5MjIzNDAuLmUwMTQ4YTJkMDVkOTliMGRkZGYwNmEyM2QyNDZkNTM0NTJjYjJj
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaApAQCAtMjgsNyAr
MjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAppbmRleCAxNTNlZGQ4
MTlkMTI1NTU1NTY4ODc2NTY2ZGUzMWY5OGI2YzA1NTNiLi40MjM0MTgyODBlYTJlZTNjOWJmZGZj
OTFjZDEyN2I5NjhlYjFlMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNw
cApAQCAtMzEsMTEgKzMxLDExIEBACiAKICNpbmNsdWRlICJPcmlnaW5BY2Nlc3NFbnRyeS5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6c2hvdWxkSW5oZXJp
dFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKGNvbnN0IFVSTCYgdXJsKQogICAgIC8vCiAgICAgLy8g
Tm90ZTogV2UgZ2VuZXJhbGl6ZSB0aGlzIHRvIGludmFsaWQgVVJMcyBiZWNhdXNlIHdlIHRyZWF0
IHN1Y2ggVVJMcyBhcyBhYm91dDpibGFuay4KICAgICAvLwotICAgIHJldHVybiB1cmwuaXNFbXB0
eSgpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnN0cmluZygpLCBibGFua1VSTCgpKSB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNk
b2MiKTsKKyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KHVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNkb2MiKTsKIH0KIAogdm9pZCBTZWN1cml0
eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KExvY2FsTG9hZFBvbGljeSBwb2xpY3kpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggY2QzN2NhM2FkMmRmZGJkN2U2NzIzNTFm
YTU0M2VlZjQ5ZTgyYjRmNC4uNTMzYjFkNGZiZGFkNTJlMzhmMWZkMzVhMmY2YTA3ZDQ4MDA4YjE3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaApAQCAtMzQsNyArMzQsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsK
IAogY2xhc3MgU2VjdXJpdHlQb2xpY3kgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NC
YXNlLmgKaW5kZXggYWE4MDRjZGIwODRlMGQ2YTNmZDNkZWViNmY2MWQ1NTQzYWYzNDFiMS4uOTg2
Nzc2Y2EzZGI1ZGE4ZjhlMWE2YmE4Nzc5ZmRlZWE3MjgzYjliMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzQmFzZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZU1hcC5oIgog
I2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91
c2NyaXB0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCAyNzlmMDMzYTI2NDgxM2MyMWFk
ZjkwY2ZhNmMzNjU4YWMzODQzZjIzLi5jOGIxMmEzOTcxYjY2MmY4MDc4ZjNjYTY4ZjUwZTYxZjlh
N2Y4YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
CiAjcHJhZ21hIG9uY2UKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU29ja2V0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIu
aAppbmRleCBkMTk3OTc3YWZlYjgyMGFhNDEyZTJjMzRmYTU0NzIxNjM4NDkwZTcyLi45ZThjMDAz
YmZmNTFlMWE1Y2M5NmQyZTQ3M2U3YWVlZWVkYmRhOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Tb2Nr
ZXRQcm92aWRlci5oCkBAIC0zNCw3ICszNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CiBjbGFz
cyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIFNvY2tldFByb3ZpZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvY2tl
dFByb3ZpZGVyPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJDb250ZW50UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92
aWRlci5oCmluZGV4IDI4ZGZiMzJhMDc2ZTY1MTJlY2Y5MjRmMDE0NTIyMGVlYWU0OWM0NzIuLmZh
NjkyMDM0ZGJhZTVmZDc5ZmU4MTk3ODlhNzMyMWViZTRiMGRlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCkBAIC00Miw3ICs0Miw2IEBAIGNsYXNzIERPTVdy
YXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIGNsYXNzIFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3I7CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggYjliODExNTgy
N2I3OGY1MjczMDk1YzJjM2UxNTE4YmY0M2Y0M2U5MC4uZjM3M2NmMzdiMjRjNTBmYzIxZGM2ZGM0
NzFhYjA4ZWQ0ZWM1MDkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29u
dGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRleCA5MzNmNjlkNmM1YTYw
ZTZlZDcyOGJhMDgwZWVlODRmNTQ4MGRmMmQ2Li45M2Y2NTgxMmRhYzVkZThhZDVmY2RiNjcwZDhk
MmY5ZTg2OTc4MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBV
Ukw7Ci0KIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybiB7CiBwdWJsaWM6CiAgICAgVXNlckNv
bnRlbnRVUkxQYXR0ZXJuKCkgOiBtX2ludmFsaWQodHJ1ZSksIG1fbWF0Y2hTdWJkb21haW5zKGZh
bHNlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKaW5kZXggODUxMGMxZjMzOTkwMWU5OTVm
MzIwY2NjOWJmNzE5YjJlNDlhZTQyNy4uNTJjMTJmM2M2OTY2MzAyYWFlZjQ1NWI4ZmVmYmM5OWVi
ZGE1ODRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKQEAgLTI1LDcgKzI1LDcgQEAKICAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgIlVzZXJDb250ZW50VHlwZXMuaCIKICNpbmNsdWRlICJVc2VyU2NyaXB0VHlwZXMu
aCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0
LmgKaW5kZXggNjhmMTBhODJhZGY4OThmMjUyYzQxNTU5Y2IxNjc4YWVjOGM1MDg0MS4uYzQ3NDc2
N2U3Yzk4YmI0OGE4ODNjYjczYjY5ODkwNWY2MDFkNzYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
clN0eWxlU2hlZXQuaApAQCAtMjUsNyArMjUsNyBAQAogIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRU
eXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc2l0ZWRMaW5rU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4IDQzYzM1
MTM3MmQ2MThiNjgxMDliMGZiOGNjZDY5ZmM4NWY4YmRkNzguLjI2ZDY1MGRiYTc0ZGM1MDJjZjkz
MDlhM2YzZDFjMDVkYTZiNjQ5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlz
aXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9y
ZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiB1aW50
NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogY2xhc3MgUGFnZTsKLWNsYXNzIFVSTDsKIAogY2xhc3Mg
VmlzaXRlZExpbmtTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpc2l0ZWRMaW5rU3RvcmU+IHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgKaW5kZXggNWI1OTJmZDgyOGY5N2Y5NGMyM2FlMzM0OTY4YTVhYjQ3ZDk2YzE2My4uZTAy
YTdhYjZjNTliZmNmNWI5OWU2NDhmZmM2YzdlMjU0NGNmZmUzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTU2LDcgKzU2LDYgQEAg
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVGV4dEVuY29kaW5nOwotY2xhc3MgVVJMOwogc3Ry
dWN0IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+PiBDU1BEaXJlY3Rp
dmVMaXN0VmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lDbGllbnQuaAppbmRleCBlYjRmZTg3YzI5ZjFjYWIxMThiZDFiMGRiZTY3
NjNjYjEwNGYzMjMwLi44ZTA1MTgyNjQxNDA2ZjJjYzhjYWEyZGM1NmFlMzM2MDYzNGU2YjFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lDbGllbnQuaApAQCAtMzIsNyArMzIsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBGb3JtRGF0YTsKLWNsYXNzIFVSTDsKIAogc3RydWN0IENTUEluZm8gewogICAgIFN0cmluZyBk
b2N1bWVudFVSSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAppbmRleCAyOTA3MjUwZjBlYjFkYzRm
ZDA4ZmIyMDcyYzY4MzM3YjI4ZDdiMDI2Li5kZDUxMzAwZWMzYjAwMzMxZjMzYmQwMjczN2ExNThj
MmFhYzYyMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2luY2x1ZGUgIkNvbnRlbnRT
ZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKaW5k
ZXggOTRiNGNjMTNjMGY2ZTQ1YmRhNGY1ZDgzYjRkMThlNzczMDNmNDM2Yy4uZWIyMTk1YTIwNGE0
YzZiZWE0N2E0NzA4NDEzYmMwYjdlNmYzNDlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCkBAIC0yOSw3ICsy
OSw3IEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAwLDE0ICsxMDAsMTQgQEAgYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnBvcnRNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBj
b25zdAogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBpZiAoKG1fcG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCks
ICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29sSXMoImh0dHBzIikpIHx8IChwb3J0
ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksICJodHRwcyIpKSkpCisg
ICAgaWYgKChtX3BvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZh
bHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29sSXMoImh0dHBzIikpIHx8
IChwb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgImh0
dHBzIikpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIXBvcnQpCi0gICAgICAg
IHJldHVybiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCksIHVybC5wcm90
b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1f
cG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSk7CiAKICAgICBpZiAoIW1fcG9ydCkKLSAgICAg
ICAgcmV0dXJuIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90
b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBv
cnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2UuaAppbmRleCA0ZWVhYmIwMTM2NTI1MWI2ZDg5NjMzY2E5NjgwZDAxNWYyMzEwNmFhLi5hMmRi
NTA0Mzg5OGYyZTY5NDdiYzdiMGEyZGQ2NDQzYWI1MTQzOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaApAQCAtMzEs
NyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQ
b2xpY3k7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBjbGFzcyBD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAppbmRleCAx
YjQzMzEyNjYwMGE1MDFmOTVmNWU2M2I0MmRkNGNkZGRkOTU3OWIyLi4yNmRhOTExNTM3NjRhZmY3
MDQ4Njc4ZTYyN2Y3MmZjNGM3OTgxZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcApAQCAtMzEs
OSArMzEsOSBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
LmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGlu
Zy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0LmgKaW5kZXggOWY2M2MzMDA2YTBjYTdmMmUzMzk5NDgwMWI1NDJjMzY2NjhjMmU1NC4uNWZj
ZjNiMmVhZTRhOWU1Zjg0ODEwYmQ1M2M0NTU1MjQ0MDc3MjZmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Qu
aApAQCAtMzYsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50
U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZl
LmNwcAppbmRleCBjMmJmMWQ0NWE1NWY1NzdmYTJkM2ZiNjAwYjJhYzlmM2ZmMGNhMWU0Li4xYjA5
MmI4NGZkMGJmN2Q2NmY4ZTFhYWZlMGYxYmFjNTMzNmFlNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0RGlyZWN0aXZlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCmluZGV4IGI5YTlkMDBkNWJkMmZkYTlmYTdm
YTE0ZWI5MTcxYWM4NjEyODU3YjguLjRiOGUxYWFlNmI0NzcwZWVkOTY3ODFiNmRiZjY2YWJhMWUx
MjU1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlci5oCkBAIC0yMywxNCArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlcl9oCi0jZGVmaW5lIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcl9oCisjcHJhZ21hIG9u
Y2UKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JKQ19D
TEFTUyBOU0NvZGVyOwpAQCAtNzcsNSArNzYsMyBAQCBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIgewogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQotCi0jZW5kaWYgLy8gQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKaW5kZXggNDc2YTNj
MzZiOTViZGIxODdiYjU4OTMyZTAwM2JkMTFlZjMyYjQwNi4uMWIwZjc0NTBiNDU3MmQ1NmE5MTNl
NWMxZTdhYTU3Mzk4NDk0OGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1l
bnVJdGVtLmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
b250ZXh0TWVudTsKIGNsYXNzIEltYWdlOwotY2xhc3MgVVJMOwogCiBlbnVtIENvbnRleHRNZW51
QWN0aW9uIHsKICAgICBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29va2llLmgKaW5kZXggYjIxMjI0ZjFjYjlhMGRhOWFmNTg2YWI5YjA0ZjM5MTI1NzZlY2Q5NC4u
OGNiYTRkZjU5MzExNmMzZjIzZDJiNGJkYTRjZDNiM2RmNzkyNzk3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29va2llLmgKQEAgLTI2LDggKzI2LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tp
ZXNTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgK
aW5kZXggYjQzOTc4Njg3ODEwOTVkMGMwOWE5OTZkMjQwNGEyZjRlOWQ5OTlkYi4uOWIwZDVhNjhk
OTJjOGU1NWFkOWQwZjlhYjMzOGY5NTE3NjI5ZDc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29va2llc1N0cmF0ZWd5LmgKQEAgLTMzLDcgKzMzLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3Qg
Q29va2llOwogc3RydWN0IFNhbWVTaXRlSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
CmluZGV4IDFhNGE0NWY4MDVjYzUwNmFiOWYxOTFmODA2MTU3ODcwNGZmNDkyMDYuLmU5MzA5NWZj
N2IyYTBiMTM2ZDQ2NjE2ZDAyMjBjY2ViYTM5OWEwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaApAQCAtNTYsOCArNTYsNiBAQCB0eXBlZGVmIHZvaWQqIERyYWdEYXRhUmVmOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogZW51bSBEcmFnQXBwbGljYXRpb25G
bGFncyB7CiAgICAgRHJhZ0FwcGxpY2F0aW9uTm9uZSA9IDAsCiAgICAgRHJhZ0FwcGxpY2F0aW9u
SXNNb2RhbCA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IGJlNWI0Yzlj
MmE0NzA0YTFkYjkxMTJjNGNlOTRlYWM0M2YxNWQ2ZjkuLmYzMmE2ODQ1YTY4NWM1YTBjMjFkYWY5
MmMxZmMwZmVmNGE1MDAyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC01
Nyw3ICs1Nyw2IEBAIGNsYXNzIEltYWdlOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CiBj
bGFzcyBSYW5nZTsKLWNsYXNzIFVSTDsKIAogI2lmIFBMQVRGT1JNKElPUykKIHR5cGVkZWYgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IERyYWdJbWFnZVJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
dHJlYW0uaAppbmRleCA5NjdkZWRjN2JhNmVjZjQyOTJkZjE5Y2ZjMTg4NTFkMTY2YjNhYTVmLi5i
MmFhMjg0NDc5ZjdiMTIyNmViZjdhYWE5YjdmZGNhYzMwYzMzNzYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN0cmVhbS5oCkBAIC0zNSw4ICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgVVJMOwotCiAvLyBBbGwgbWV0aG9kcyBhcmUgc3luY2hyb25vdXMuCiBjbGFz
cyBGaWxlU3RyZWFtIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xpbmtJY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSWNvbi5oCmluZGV4
IDI4MTc1NDYwMzU5YWRmZjdhMGNmMmZlMWViN2ZmNDEzNGM1NzdlNTkuLjg5ZTJmODk2OWJiNTI2
YTM2NGRiNmI5MGUzMGE5Yjc3MWNkZTU4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xpbmtJY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0ljb24u
aApAQCAtMjYsOSArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJMaW5rSWNvblR5
cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCA3MzdhMzkwNDI1N2RlNjQzYmMwZDlhYjk5YmMyNjRh
MzE0ZmQ2ZmY3Li41NTVlYzI4MmU0YmI2NmU1ZjlkMTExMjBiOTc2MWE3MjVlYmMzZjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCisjaW5jbHVkZSA8
d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29k
ZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC00Nyw3ICs0Nyw3
IEBAIGJvb2wgUGFzdGVib2FyZDo6aXNTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0
IFN0cmluZyYgdHlwZSkKIAogYm9vbCBQYXN0ZWJvYXJkOjpjYW5FeHBvc2VVUkxUb0RPTVdoZW5Q
YXN0ZWJvYXJkQ29udGFpbnNGaWxlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBh
dXRvIHVybCA9IFVSTFBhcnNlciB7IHVybFN0cmluZyB9LnJlc3VsdCgpOworICAgIFVSTCB1cmwo
eyB9LCB1cmxTdHJpbmcpOwogICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgp
IHx8IHVybC5wcm90b2NvbElzQmxvYigpIHx8IHVybC5wcm90b2NvbElzRGF0YSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggMjA2MzVhYjAyOTRmMjk5N2UyOGZi
ZmZkNTA5ODY5NDhhOTliNjAzMC4uYTJiYTJiNzYwMGRkNGViYTI2OGY2MjljZGQxOTE0MTM4ODFi
ZDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMjcsMTAgKzI3LDEw
IEBACiAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSXRlbUlu
Zm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFN0cmF0ZWd5LmgKaW5kZXggOTlkOGRkZmZhZTAwZWFjZTFhNjMyY2IwZDNmNTM4MWEyM2ZhMzY1
Yy4uYTViMzY1MGEwYmJjMGFmODhmOWFmNzQ0NDA4ZGVhZTk5NjBkYTlmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMzLDcgKzMzLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwog
Y2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsK
IHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcAppbmRleCAz
ZDJkY2VlZDdjNTZlODcwOTY3ODk4MDdhNjdiZWUyZWQwMzI5MjdmLi5lMjU2OTA3NGVlNWEyYjNl
ZjZjMjBlOGJlNDhkZmU3NTdhODA2OWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgUGFzdGVi
b2FyZFdyaXRlckRhdGE6OnNldFBsYWluVGV4dChQbGFpblRleHQgcGxhaW5UZXh0KQogICAgIG1f
cGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpOwogfQogCi12b2lkIFBhc3RlYm9hcmRXcml0
ZXJEYXRhOjpzZXRVUkwoVVJMIHVybCkKK3ZvaWQgUGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFVS
TERhdGEoVVJMRGF0YSB1cmwpCiB7CiAgICAgQVNTRVJUKCFtX3VybCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IGQ1M2ZkNzJmZjVl
NmM0NGUwYTE2ZTc3ZjM5MWRhZmNkODQ2NTAyMGEuLjVmNDc1OTJiMTAxOTUxMTkxMTc5NzY4OGU3
ODU1MGY0OGJiZWQ1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaApAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNjYsOCArNjYsOCBAQCBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiAg
ICAgY29uc3Qgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+JiBwbGFpblRleHQoKSBjb25zdCB7IHJl
dHVybiBtX3BsYWluVGV4dDsgfQogICAgIHZvaWQgc2V0UGxhaW5UZXh0KFBsYWluVGV4dCk7CiAK
LSAgICBzdHJ1Y3QgVVJMIHsKLSAgICAgICAgV2ViQ29yZTo6VVJMIHVybDsKKyAgICBzdHJ1Y3Qg
VVJMRGF0YSB7CisgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyB0aXRsZTsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgICAgIFN0cmluZyB1c2VyVmlzaWJsZUZvcm07CkBAIC03NiwxNSAr
NzYsMTUgQEAgY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogI2VuZGlmCiAgICAg
fTsKIAotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMPiYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV91cmw7IH0KLSAgICB2b2lkIHNldFVSTChVUkwpOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
VVJMRGF0YT4mIHVybERhdGEoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIHZvaWQgc2V0
VVJMRGF0YShVUkxEYXRhKTsKIAogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29udGVudD4m
IHdlYkNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbnRlbnQ7IH0KICAgICB2b2lkIHNl
dFdlYkNvbnRlbnQoV2ViQ29udGVudCk7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxQ
bGFpblRleHQ+IG1fcGxhaW5UZXh0OwotICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBtX3VybDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFVSTERhdGE+IG1fdXJsOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29u
dGVudD4gbV93ZWJDb250ZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA4ZTEzYmY0ZDg0MTQxM2JmMWMxMTdkZWM5ZWZmODVjNDgy
NGI4OGVmLi5lMGEyMTMzMzc0NmNkZjk0ZGQ3MGU5NWUzZjYyZWQwZDc4MjAwMDU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDgsNyArNDgs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIFNlbGVjdGlvbkRh
dGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZEN1
c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVt
SW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNo
bWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudElu
Zm8uaAppbmRleCBkYmVjZmMxYjNiMTZkN2Y1ZTAzMDhlMTEwYWNkYTExMDJjYjQyMDdlLi5hOTU4
YzJmMGFiMmQ5ZjFmMzc2NjJhN2EwYjYwMmJlMzEzNDMwN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMSw3ICszMSw2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsK
IAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogICAgIFVSTCBibG9iVVJMOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAppbmRleCAwNzY3MjM4NmY2OGVh
YTk4MWZlN2M1OTdjMDVmNjFlZjhlNjczY2U0Li5jMmJkOGQ2ZTlkM2FhOTNlMjQ2MDI0ODYyYzFm
M2IyMmY0NWE0ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3Iu
aApAQCAtMzEsOCArMzEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsK
LQogLy8gUmV0dXJucyBzdHJpbmdzIHJlcHJlc2VudGluZyBrZXkgc2l6ZXMgdGhhdCBtYXkgYmUg
dXNlZAogLy8gZm9yIHRoZSA8a2V5Z2VuPiB0YWcuIFRoZSBmaXJzdCBzdHJpbmcgaXMgZGlzcGxh
eWVkIGFzIHRoZSBkZWZhdWx0CiAvLyBrZXkgc2l6ZSBpbiB0aGUgPGtleWdlbj4gbWVudS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAppbmRleCA5NDlkZTYzYWVm
MDZjZmNmYWYwYzAyZDI0YzZhYzQ0ZTY2ZmUwYjk3Li43N2Y2YzM5MmE5MTdmMGM5MTcyNjY1YTc2
MThlNjcwNDM4YzRlNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hl
bWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0
cnkuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTY2hlbWVSZWdpc3RyeS5oIgogCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSA8
d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMUGFyc2VyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAjaW5jbHVkZSAi
Q29udGVudEZpbHRlci5oIgpAQCAtNTUxLDcgKzU1MSw3IEBAIGJvb2wgU2NoZW1lUmVnaXN0cnk6
OmlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIAogYm9vbCBTY2hl
bWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotICAg
IHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIChhbGxCdWlsdGluU2NoZW1lcygpLmNvbnRhaW5z
KHNjaGVtZSkgfHwgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoc2NoZW1lKSk7CisgICAgcmV0
dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgKGFsbEJ1aWx0aW5TY2hlbWVzKCkuY29udGFpbnMoc2No
ZW1lKSB8fCBXVEY6OlVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKHNjaGVtZSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CmluZGV4IGUyYWFlMmYzMDQ1NzM1NWY0ODllZWM0YWI0ZWNmMWNlN2QzZTQ1MmYuLmY4NjhjMmMw
MWQ2YjEwZWNmMzY0YjFhNmZmZTNkZDQyZjVmNTIyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCkBAIC00MCw3ICs0MCw3IEBACiAjZW5kaWYKIAogI2lmIFVTRShTT1VQ
KQotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1
ZVB0clNvdXAuaD4KICNlbmRpZgogCiAjaWYgVVNFKEdMSUIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCmluZGV4IDBjYzVmNjg3ZDYyMWVmZTdlYWJhYzRk
YmY5ZTU0NTQ3YTQ4ZGNlMTguLmFmYjc1N2NiZTQwMjJmZWRmYzQ3OTNlYWJjMjU2OWU4NjBlOTU5
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCkBA
IC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkU3Ry
aW5nSGFzaC5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmgKaW5kZXggNzMyNDYxN2JhNDk2YTA2NjNiZmQ1
M2RlYzRhNDQzZDk3NjkzOWU4ZS4uMzYwM2NmMGYyZTdmOTIxNGIzZTI1M2Y1NDc5ZDljYjM0NmIy
N2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFz
aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guaApAQCAt
MzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogdHlw
ZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogCiAvLyBVc2UgdGhlIGxvdyAzMi1iaXRz
IG9mIHRoZSA2NC1iaXQgU2hhcmVkU3RyaW5nSGFzaCBhcyB0aGUga2V5IGZvciBIYXNoU2V0cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dAppbmRleCBjMDJlNDllNGU1MWVm
NzQ5MzFmNzBkZDg2NTVkMzRkZTJkNjNlNDhiLi4yZTg1NmE5ODAwYzMzN2E0MDUzMTY1MmM3MDRm
M2UyZmI2ZmQzMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2Vz
U291cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBA
IC00MSw0ICs0MSwzIEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdl
bmVyaWMuY3BwCiAKIHBsYXRmb3JtL3NvdXAvUHVibGljU3VmZml4U291cC5jcHAKIHBsYXRmb3Jt
L3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKLXBsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9VUkwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGI0Njg2
OTU4ZjMwMDA5MzMzNDQzMTg5NDc3YTlkNDVmNGY1ZDg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMTA5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDctMjAwOCwgMjAxMS0yMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVSTC5oIgotCi0j
aW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx1bmlj
b2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGV4
TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotCi0v
LyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVzZSBvZiB0aGUgKyBvcGVyYXRvciBv
biBTdHJpbmcuCi0vLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRpbWl6ZSB0aGF0IG9wZXJhdG9yIHNv
IGl0IGRvZXNuJ3QgaW52b2x2ZQotLy8gc28gbWFueSBhbGxvY2F0aW9ucywgb3IgY2hhbmdlIHRo
aXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLXR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gQ2hhckJ1
ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOwotCi1zdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7Ci0KLS8vIENvcGllcyB0
aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hh
cmFjdGVycyBhcmUKLS8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFy
Z2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKLS8vIGluIHRoZSBzb3VyY2Ug
c3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRoZSByZXN1
bHQuCi1zdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRl
c3QpCi17Ci0gICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG1lbWNweShkZXN0LCBzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgY29uc3QgVUNo
YXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykKLSAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzcmNbaV0pOwot
ICAgIH0KLX0KLQotdm9pZCBVUkw6OmludmFsaWRhdGUoKQotewotICAgIG1faXNWYWxpZCA9IGZh
bHNlOwotICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOwotICAgIG1fY2Fubm90
QmVBQmFzZVVSTCA9IGZhbHNlOwotICAgIG1fc2NoZW1lRW5kID0gMDsKLSAgICBtX3VzZXJTdGFy
dCA9IDA7Ci0gICAgbV91c2VyRW5kID0gMDsKLSAgICBtX3Bhc3N3b3JkRW5kID0gMDsKLSAgICBt
X2hvc3RFbmQgPSAwOwotICAgIG1fcG9ydExlbmd0aCA9IDA7Ci0gICAgbV9wYXRoRW5kID0gMDsK
LSAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7Ci0gICAgbV9xdWVyeUVuZCA9IDA7Ci19Ci0K
LVVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3Qg
VVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKLXsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKHJlbGF0
aXZlLCBiYXNlLCBlbmNvZGluZyk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0K
LXN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCi17Ci0gICAgLy8gQnJvd3Nl
cnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbAotICAgIC8v
IGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4gKnVuc2lnbmVkKiBjaGFy
IGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9ubHkgY2F0Y2ggY29udHJv
bCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBjIDw9ICcgJzsKLX0KLQotVVJMIFVSTDo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKLXsKLSAgICBVUkwgcmVzdWx0ID0gKnRoaXM7Ci0gICAgcmVzdWx0Lm1f
c3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLVN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKLXsKLSAgICBp
ZiAoIWhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgdW5zaWduZWQg
ZW5kID0gbV9wYXRoRW5kIC0gMTsKLSAgICBpZiAobV9zdHJpbmdbZW5kXSA9PSAnLycpCi0gICAg
ICAgIC0tZW5kOwotCi0gICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcucmV2ZXJzZUZpbmQoJy8n
LCBlbmQpOwotICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2hvc3RFbmQg
KyBtX3BvcnRMZW5ndGgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgKytzdGFydDsK
LQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7
Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFN0
cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7Ci19Ci0KLVN0cmlu
Z1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBzdGFydCA9IGhvc3RTdGFy
dCgpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQsIG1f
aG9zdEVuZCAtIHN0YXJ0KTsKLX0KLQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0
KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcG9ydExlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLQotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBudW1iZXI7Ci0g
ICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9V
SW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRM
ZW5ndGggLSAxLCAmb2spOwotICAgIGVsc2UKLSAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1Rv
VUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9zdEVuZCArIDEsIG1fcG9y
dExlbmd0aCAtIDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBudW1iZXIgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgcmV0dXJuIG51bWJlcjsKLX0KLQotU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdAot
ewotICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkpCi0gICAgICAgIHJldHVybiBtYWtl
U3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9ydC52YWx1ZSgpKSk7
Ci0gICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOwotfQotCi1TdHJpbmcgVVJMOjpwcm90b2Nv
bEhvc3RBbmRQb3J0KCkgY29uc3QKLXsKLSAgICBTdHJpbmcgcmVzdWx0ID0gbV9zdHJpbmcuc3Vi
c3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7Ci0KLSAgICBpZiAobV9wYXNzd29y
ZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgewotICAgICAgICBjb25zdCBpbnQgYWxsb3dGb3JUcmFp
bGluZ0F0U2lnbiA9IDE7Ci0gICAgICAgIHJlc3VsdC5yZW1vdmUobV91c2VyU3RhcnQsIG1fcGFz
c3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdBdFNpZ24pOwotICAgIH0K
LQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZGVjb2RlRXNjYXBlU2Vx
dWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0KQotewotICAgIGF1dG8gaW5wdXRM
ZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAoIWlucHV0TGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBWZWN0b3I8TENoYXI+IHBlcmNlbnREZWNvZGVkOwot
ICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXRMZW5ndGgpOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgKytpKSB7Ci0gICAgICAg
IGlmIChpbnB1dFtpXSA9PSAnJScKLSAgICAgICAgICAgICYmIGlucHV0TGVuZ3RoID4gMgotICAg
ICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgotICAgICAgICAgICAgJiYgaXNBU0NJSUhl
eERpZ2l0KGlucHV0W2kgKyAxXSkKLSAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1
dFtpICsgMl0pKSB7Ci0gICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQo
dG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7Ci0gICAgICAgICAg
ICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5j
aGVja2VkQXBwZW5kKGlucHV0W2ldKTsKLSAgICB9Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotfQotCi1T
dHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVu
Y2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3Rh
cnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Ci19Ci0KLVN0cmluZyBVUkw6OnBhc3MoKSBj
b25zdAotewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJz
ZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFz
c3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Ci19Ci0KLVN0cmluZyBVUkw6OmVuY29kZWRVc2Vy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBt
X3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Ci19Ci0KLVN0cmluZyBVUkw6OmVuY29kZWRQYXNzKCkg
Y29uc3QKLXsKLSAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5k
ICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOwotfQotCi1TdHJpbmcgVVJMOjpm
cmFnbWVudElkZW50aWZpZXIoKSBjb25zdAotewotICAgIGlmICghaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5z
dWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwotfQotCi1ib29sIFVSTDo6aGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0
aCgpICE9IG1fcXVlcnlFbmQ7Ci19Ci0KLVN0cmluZyBVUkw6OmJhc2VBc1N0cmluZygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQot
Ci0jaWYgIVVTRShDRikKLQotU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAotewot
ICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0KLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChT
dHJpbmdWaWV3KHBhdGgoKSkpOwotfQotCi0jZW5kaWYKLQotI2lmZGVmIE5ERUJVRwotCi1zdGF0
aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldykKLXsKLX0KLQot
I2Vsc2UKLQotc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyBwcm90
b2NvbCkKLXsKLSAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0aGlzIGZ1bmN0
aW9uIGFueSBtb3JlLgotICAgIC8vIFRoZSBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsIGZ1bmN0
aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVycwotICAgIC8vIGFyZSBvbmVzIGl0
IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3QgYW5kIHJlbGllZCBvbiB0aGVzZSBj
aGVja3MuCi0gICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHByb3RvY29sLmNvZGVVbml0cygpKSB7
Ci0gICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOwotICAgICAgICBBU1NFUlQoY2hh
cmFjdGVyID4gJyAnKTsKLSAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyKSk7
Ci0gICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSA9PSBjaGFy
YWN0ZXIpOwotICAgIH0KLX0KLQotI2VuZGlmCi0KLXN0YXRpYyBMb2NrIGRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKLQotdXNpbmcgRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+Owotc3RhdGljIERlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmcoKQotewotICAgIHN0YXRpYyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9y
VGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKLSAgICByZXR1cm4gZGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcDsKLX0KLQotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBG
b3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpCi17
Ci0gICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKTsKLSAg
ICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCi0gICAgICAgIGRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmc7Ci0g
ICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOwotfQotCi12b2lkIHJlZ2lzdGVy
RGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCkKLXsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgZW5zdXJlRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQpOwotfQotCi12b2lkIGNs
ZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQotewotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsK
LSAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmco
KSkKLSAgICAgICAgbWFwLT5jbGVhcigpOwotfQotCi1zdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBk
ZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCi17Ci0gICAgaWYgKGF1
dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkg
ewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xN
YXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgICAgIEFTU0VSVChvdmVycmlkZU1hcCk7IC8vIE5vIG5l
ZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRlTWFwIGNhbm5vdCBiZWNv
bWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KLSAgICAgICAgYXV0byBpdGVyYXRvciA9IG92
ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Ci0gICAg
ICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCi0gICAgICAgICAgICByZXR1
cm4gaXRlcmF0b3ItPnZhbHVlOwotICAgIH0KLSAgICByZXR1cm4gVVJMUGFyc2VyOjpkZWZhdWx0
UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKLX0KLQotYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4g
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsKLX0KLQotYm9vbCBVUkw6
OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Ci17Ci0gICAgYXNzZXJ0UHJv
dG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocHJv
dG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7Ci0KLSAgICAvLyBKYXZhU2NyaXB0IFVSTHMgYXJl
ICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVSTCBkZWNpZGVzIHRoZXkg
YXJlIGludmFsaWQuCi0gICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJvdG9jb2xJc0phdmFTY3Jp
cHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKLSAgICBBU1NFUlQoIWVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2YXNjcmlwdCIpKTsKLQot
ICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBEbyB0
aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAgIGlmICgh
cHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHBy
b3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
ICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZlIGNvbnN1bWVkIGFsbCBj
aGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KLX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXMoU3Ry
aW5nVmlldyBwcm90b2NvbCkgY29uc3QKLXsKLSAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90
b2NvbCk7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IAotICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5sZW5ndGgoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBu
ZXcgc3RyaW5nIG9iamVjdC4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zY2hlbWVF
bmQ7ICsraSkgewotICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJp
bmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBVUkw6OnF1ZXJ5KCkgY29uc3QKLXsKLSAgICBp
ZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQot
ICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9xdWVyeUVuZCAt
IChtX3BhdGhFbmQgKyAxKSk7IAotfQotCi1TdHJpbmcgVVJMOjpwYXRoKCkgY29uc3QKLXsKLSAg
ICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOwotICAgIHJldHVy
biBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0gcG9ydEVuZCk7Ci19Ci0K
LWJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAgLy8gRmlyZWZv
eCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KLSAgICBzaXpl
X3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKLSAgICBTdHJpbmcgbmV3UHJvdG9j
b2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0gICAgYXV0byBjYW5vbmlj
YWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbCk7
Ci0gICAgaWYgKCFjYW5vbmljYWxpemVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoIW1faXNWYWxpZCkgewotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoKmNh
bm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVz
dWx0KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1l
RW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi1zdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGlm
IChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUko
c3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGNoYXJh
Y3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7
Ci19Ci0gICAgCi0vLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBi
eSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KLS8vIHRoZSBvdXRwdXQgYnVmZmVyLiBU
aGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KLS8vIFJldHVybiB2YWx1ZSBv
ZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KLXN0YXRpYyBib29sIGFwcGVuZEVuY29k
ZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAg
ICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4K
LSAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4g
ZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0gICAgY29uc3QgdW5zaWdu
ZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OwotICAgIAotICAgIGlmIChzdHJpbmcubGVu
Z3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJKHN0cmluZykpIHsKLSAg
ICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIAotICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3RoXTsK
LSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgIFVJRE5BSW5mbyBwcm9j
ZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7Ci0gICAgaW50MzJfdCBudW1D
aGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVSTFBhcnNlcjo6aW50ZXJu
YXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCi0gICAgICAgIHN0cmluZy51cGNvbnZlcnRl
ZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1ZmZlciwgaG9zdG5hbWVC
dWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKLSAgICAKLSAgICBpZiAo
VV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7Ci0gICAgICAg
IGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi11bnNp
Z25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5k
ID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKLX0K
LQotdm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQotewotICAgIGlmICghbV9pc1Zh
bGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGNvbG9uSW5kZXggPSBzLmZpbmQoJzon
KTsKLSAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOwotICAgIGlmICghYXBwZW5kRW5jb2RlZEhv
c3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBi
b29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOwotICAgIGlmIChz
bGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNv
ZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3Ry
aW5nKG1faG9zdEVuZCkpOwotCi0gICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVyLnRvU3RyaW5n
KCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3Zl
UG9ydCgpCi17Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAgIHJldHVybjsKLSAgICBV
UkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX2hv
c3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0
TGVuZ3RoKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6
c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9ydExlbmd0aDsKLSAgICB1
bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQg
KyAxKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpu
dW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3Bv
cnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXZvaWQgVVJM
OjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQotewotICAgIGlmICgh
bV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmdWaWV3IGhvc3ROYW1lKGhv
c3RBbmRQb3J0KTsKLSAgICBTdHJpbmdWaWV3IHBvcnQ7Ci0gICAgCi0gICAgYXV0byBjb2xvbklu
ZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOwotICAgIGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5k
KSB7Ci0gICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEpOwot
ICAgICAgICBib29sIG9rOwotICAgICAgICBpbnQgcG9ydEludCA9IHBvcnQudG9JbnRTdHJpY3Qo
b2spOwotICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsK
LSAgICB9Ci0KLSAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7Ci0gICAgaWYgKCFhcHBlbmRFbmNvZGVk
SG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsKLSAgICBpZiAo
c2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5j
b2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAgIGlmICghcG9ydC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBv
cnQpOwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7Ci0KLSAgICBVUkxQYXJzZXIgcGFyc2Vy
KGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0K
LXN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBpbnB1
dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCi17Ci0gICAgYXV0byBlbmNvZGUgPSBbc2hv
dWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgewotICAgICAgICBDU3RyaW5nIHV0Zjgg
PSBpbnB1dC51dGY4KCk7Ci0gICAgICAgIGF1dG8qIGRhdGEgPSB1dGY4LmRhdGEoKTsKLSAgICAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBhdXRvIGxlbmd0aCA9IHV0ZjgubGVu
Z3RoKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7IGorKykgewot
ICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKLSAgICAgICAgICAgIGlmIChzaG91bGRFbmNv
ZGUoYykpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScpOwotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpKTsKLSAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChj
KSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChj
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotICAgIH07
Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aCgpOyArK2kpIHsKLSAg
ICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1dFtpXSkpKQotICAgICAgICAgICAg
cmV0dXJuIGVuY29kZShpbnB1dCk7Ci0gICAgfQotICAgIHJldHVybiBpbnB1dDsKLX0KLQotdm9p
ZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQotewotICAgIGlmICghbV9pc1ZhbGlk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMg
bXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25z
LAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBs
b2dpbi4KLQotICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKLSAgICBpZiAoIXVzZXIuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29kZUNoYXJhY3RlcnModXNl
ciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwotICAgICAgICBpZiAobV91c2Vy
U3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAg
ICAgICB1ID0gIi8vIiArIHU7Ci0gICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUg
b25lIGJlZm9yZS4KLSAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bh
c3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKLSAgICAgICAgICAgIHUuYXBwZW5k
KCdAJyk7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3Ry
aW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9y
IHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRFbmQgJiYgZW5k
ICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKLSAgICAgICAgICAgIGVuZCAr
PSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkg
Y29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAg
ICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7Ci0gICAgICAgICAgICBVUkxQYXJzZXIgcGFy
c2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJTdGFydCksIFN0
cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9
IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBVUkw6OnNldFBh
c3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29yZEVuZDsKLSAgICBpZiAo
IXBhc3N3b3JkLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgcCA9ICI6IiArIHBlcmNlbnRF
bmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNl
dCkgKyAiQCI7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICBwID0gIi8vIiArIHA7Ci0gICAgICAgIC8v
IEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4K
LSAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0g
ICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5n
KFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0
aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gbV91c2Vy
RW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAg
ICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUg
ZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNo
YW5nZS4KLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKLSAgICAgICAgICAgIFVSTFBh
cnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlckVu
ZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBVUkw6
OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCi17Ci0gICAgaWYg
KCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0
aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBlbnMgdG8gYmUgZXF1YWwg
dG8gd2hhdCB3YXMgcGFzc2VkPwotICAgIC8vIEZJWE1FOiBJcyBpdCBjb3JyZWN0IHRvIGRvIHRo
aXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnM/Ci0g
ICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9
LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVyKSB9LnJlc3VsdCgpOwot
fQotCi12b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKLXsKLSAgICBpZiAoIW1f
aXNWYWxpZCkgewotICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5
RW5kKQotICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7Ci19Ci0K
LXZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpCi17Ci0gICAgaWYg
KCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RyaW5nID0gbV9zdHJpbmcu
bGVmdChtX3BhdGhFbmQpOwotICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhFbmQ7Ci19Ci0KLXZvaWQg
VVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQotewotICAgIGlmICghbV9pc1ZhbGlk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVNDSUkgY2hh
cmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCi0gICAgLy8gVXN1YWxseSwgdGhl
IHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwgYnV0
IHdlIGRvbid0IGhhdmUKLSAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRoaXMgZnVu
Y3Rpb24uCi0gICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2Ci0gICAgaWYgKChxdWVy
eS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsKLSAg
ICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxl
ZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KG1fcXVlcnlFbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1f
c3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0g
ICAgfQotCi19Ci0KLXZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICBp
ZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIHBhdGggPSBzOwot
ICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKLSAgICAgICAgcGF0aCA9
ICIvIiArIHBhdGg7Ci0KLSAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChV
Q2hhciBjaGFyYWN0ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hh
cmFjdGVyID09ICcjJzsKLSAgICB9OwotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhT
dHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCksIHBlcmNl
bnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVtYmVyU2lnbiksIFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Ci0gICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7Ci19Ci0KLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihj
b25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBpZiAoYS5tX3F1ZXJ5RW5kICE9IGIu
bV9xdWVyeUVuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHF1ZXJ5TGVu
Z3RoID0gYS5tX3F1ZXJ5RW5kOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBxdWVyeUxl
bmd0aDsgKytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGVx
dWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQot
ewotICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ld
ICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25z
dCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBpZiAoYS5tX3NjaGVtZUVuZCAhPSBiLm1f
c2NoZW1lRW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1bnNpZ25lZCBob3N0U3Rh
cnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0
RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQo
KTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gYi5ob3N0U3RhcnQo
KTsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9
IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
Ly8gQW5kIHRoZSBob3N0Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhB
OyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3Ry
aW5nKClbaG9zdFN0YXJ0QiArIGldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmIGEs
IGNvbnN0IFVSTCYgYikKLXsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQo
KTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsK
LSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBo
b3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKLSAgICBpZiAoaG9zdExlbmd0
aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmlu
ZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFydEIgKyBpXSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0Ci17Ci0g
ICAgaWYgKGlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZG9tYWlu
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIXByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBob3N0ID0g
dGhpcy0+aG9zdCgpOwotICAgIGlmICghaG9zdC5lbmRzV2l0aChkb21haW4pKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9PSBkb21haW4ubGVuZ3Ro
KCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgpIC0gMV0gPT0gJy4nOwot
fQotCi1TdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIGlu
cHV0KQotewotICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhpbnB1dCwgVVJMUGFy
c2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwotfQotCi1ib29sIFVSTDo6aXNIaWVyYXJjaGlj
YWwoKSBjb25zdAotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9PSAnOicpOwotICAgIHJldHVybiBt
X3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKLX0KLQotdm9pZCBVUkw6OmNvcHlUb0J1
ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBU
aGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0
aGUgc3RyaW5nIQotICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlkIFVSTCwgd2hpY2ggaXMg
YWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCi0gICAgYnVmZmVyLnJlc2l6ZSht
X3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0YSgp
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Ci1ib29sIHByb3RvY29sSXNJ
bnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsK
LSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2Jq
ZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29sKSkpOwotICAgIGJvb2wg
aXNMZWFkaW5nID0gdHJ1ZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBqID0gMDsgdXJsW2ld
OyArK2kpIHsKLSAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wg
Y2hhcmFjdGVycy4KLSAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91bGRUcmltRnJvbVVSTCh1
cmxbaV0pKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlzTGVhZGluZyA9IGZhbHNl
OwotCi0gICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVzLgotICAgICAgICBpZiAo
dXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ldID09ICdcbicpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIXByb3RvY29sW2pdKQotICAgICAgICAg
ICAgcmV0dXJuIHVybFtpXSA9PSAnOic7Ci0gICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxl
c3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICArK2o7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9v
bCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsK
LSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wpOwotfQotCi1pbmxp
bmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIq
IHByb3RvY29sKQotewotICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzSW50ZXJuYWwoc3Ry
aW5nLCBwcm90b2NvbCk7Ci19Ci0KLSNpZm5kZWYgTkRFQlVHCi0KLXZvaWQgVVJMOjpwcmludCgp
IGNvbnN0Ci17Ci0gICAgcHJpbnRmKCIlc1xuIiwgbV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Ci19
Ci0KLSNlbmRpZgotCi1TdHJpbmcgVVJMOjpzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25z
dAotewotICAgIFVSTCByZWZlcnJlcigqdGhpcyk7Ci0gICAgcmVmZXJyZXIuc2V0VXNlcihTdHJp
bmcoKSk7Ci0gICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIucmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIHJlZmVycmVyLnN0cmluZygpOwot
fQotCi1ib29sIFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdAotewotICAgIC8vIEluY2x1ZGluZyBm
ZWVkIGhlcmUgbWlnaHQgYmUgYSBiYWQgaWRlYSBzaW5jZSBkcmFnIGFuZCBkcm9wIHVzZXMgdGhp
cyBjaGVjawotICAgIC8vIGFuZCBpbmNsdWRpbmcgZmVlZCB3b3VsZCBhbGxvdyBmZWVkcyB0byBw
b3RlbnRpYWxseSBsZXQgc29tZW9uZSdzIGJsb2cKLSAgICAvLyByZWFkIHRoZSBjb250ZW50cyBv
ZiB0aGUgY2xpcGJvYXJkIG9uIGEgZHJhZywgZXZlbiB3aXRob3V0IGEgZHJvcC4KLSAgICAvLyBM
aWtld2lzZSB3aXRoIHVzaW5nIHRoZSBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc0xvY2Fs
KCkgZnVuY3Rpb24uCi0gICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKLX0KLQotYm9vbCBw
cm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICByZXR1cm4gcHJv
dG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotYm9vbCBwcm90b2NvbElz
SmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVy
bmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5
KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgpOwot
ICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmpl
Y3QuCi0gICAgcmV0dXJuIGxlbmd0aCA+PSA1Ci0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwodXJsWzBdLCAnaCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1
YWwodXJsWzFdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJs
WzJdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzNdLCAn
cCcpCi0gICAgICAgICYmICh1cmxbNF0gPT0gJzonIHx8IChpc0FTQ0lJQWxwaGFDYXNlbGVzc0Vx
dWFsKHVybFs0XSwgJ3MnKSAmJiBsZW5ndGggPj0gNiAmJiB1cmxbNV0gPT0gJzonKSk7Ci19Ci0K
LWNvbnN0IFVSTCYgYmxhbmtVUkwoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+
IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJvdXQ6YmxhbmsiKTsKLSAgICByZXR1cm4gc3RhdGlj
QmxhbmtVUkw7Ci19Ci0KLWJvb2wgVVJMOjppc0JsYW5rVVJMKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gcHJvdG9jb2xJcygiYWJvdXQiKTsKLX0KLQotYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwm
IHVybCkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsK
LQotICAgIC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZlIGEgcG9ydCwgcmV0dXJuIGVhcmx5
IGZvciB0aGUgIm5vIHBvcnQiIGNhc2UuCi0gICAgaWYgKCFwb3J0KQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hlcyB0aGUgcG9ydCBi
bG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KLSAgICAvLyBTZWUgaHR0cDovL3d3dy5t
b3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBmb3IgbW9yZSBpbmZv
cm1hdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgYmxvY2tlZFBvcnRMaXN0W10gPSB7
Ci0gICAgICAgIDEsICAgIC8vIHRjcG11eAotICAgICAgICA3LCAgICAvLyBlY2hvCi0gICAgICAg
IDksICAgIC8vIGRpc2NhcmQKLSAgICAgICAgMTEsICAgLy8gc3lzdGF0Ci0gICAgICAgIDEzLCAg
IC8vIGRheXRpbWUKLSAgICAgICAgMTUsICAgLy8gbmV0c3RhdAotICAgICAgICAxNywgICAvLyBx
b3RkCi0gICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KLSAgICAgICAgMjAsICAgLy8gRlRQLWRhdGEK
LSAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKLSAgICAgICAgMjIsICAgLy8gU1NICi0gICAg
ICAgIDIzLCAgIC8vIHRlbG5ldAotICAgICAgICAyNSwgICAvLyBTTVRQCi0gICAgICAgIDM3LCAg
IC8vIHRpbWUKLSAgICAgICAgNDIsICAgLy8gbmFtZQotICAgICAgICA0MywgICAvLyBuaWNuYW1l
Ci0gICAgICAgIDUzLCAgIC8vIGRvbWFpbgotICAgICAgICA3NywgICAvLyBwcml2LXJqcwotICAg
ICAgICA3OSwgICAvLyBmaW5nZXIKLSAgICAgICAgODcsICAgLy8gdHR5bGluawotICAgICAgICA5
NSwgICAvLyBzdXBkdXAKLSAgICAgICAgMTAxLCAgLy8gaG9zdHJpYW1lCi0gICAgICAgIDEwMiwg
IC8vIGlzby10c2FwCi0gICAgICAgIDEwMywgIC8vIGdwcGl0bnAKLSAgICAgICAgMTA0LCAgLy8g
YWNyLW5lbWEKLSAgICAgICAgMTA5LCAgLy8gUE9QMgotICAgICAgICAxMTAsICAvLyBQT1AzCi0g
ICAgICAgIDExMSwgIC8vIHN1bnJwYwotICAgICAgICAxMTMsICAvLyBhdXRoCi0gICAgICAgIDEx
NSwgIC8vIFNGVFAKLSAgICAgICAgMTE3LCAgLy8gdXVjcC1wYXRoCi0gICAgICAgIDExOSwgIC8v
IG5udHAKLSAgICAgICAgMTIzLCAgLy8gTlRQCi0gICAgICAgIDEzNSwgIC8vIGxvYy1zcnYgLyBl
cG1hcAotICAgICAgICAxMzksICAvLyBuZXRiaW9zCi0gICAgICAgIDE0MywgIC8vIElNQVAyCi0g
ICAgICAgIDE3OSwgIC8vIEJHUAotICAgICAgICAzODksICAvLyBMREFQCi0gICAgICAgIDQ2NSwg
IC8vIFNNVFArU1NMCi0gICAgICAgIDUxMiwgIC8vIHByaW50IC8gZXhlYwotICAgICAgICA1MTMs
ICAvLyBsb2dpbgotICAgICAgICA1MTQsICAvLyBzaGVsbAotICAgICAgICA1MTUsICAvLyBwcmlu
dGVyCi0gICAgICAgIDUyNiwgIC8vIHRlbXBvCi0gICAgICAgIDUzMCwgIC8vIGNvdXJpZXIKLSAg
ICAgICAgNTMxLCAgLy8gQ2hhdAotICAgICAgICA1MzIsICAvLyBuZXRuZXdzCi0gICAgICAgIDU0
MCwgIC8vIFVVQ1AKLSAgICAgICAgNTQ4LCAgLy8gYWZwb3ZlcnRjcCBbQXBwbGUgYWRkaXRpb25d
Ci0gICAgICAgIDU1NiwgIC8vIHJlbW90ZWZzCi0gICAgICAgIDU2MywgIC8vIE5OVFArU1NMCi0g
ICAgICAgIDU4NywgIC8vIEVTTVRQCi0gICAgICAgIDYwMSwgIC8vIHN5c2xvZy1jb25uCi0gICAg
ICAgIDYzNiwgIC8vIExEQVArU1NMCi0gICAgICAgIDk5MywgIC8vIElNQVArU1NMCi0gICAgICAg
IDk5NSwgIC8vIFBPUDMrU1NMCi0gICAgICAgIDIwNDksIC8vIE5GUwotICAgICAgICAzNjU5LCAv
LyBhcHBsZS1zYXNsIC8gUGFzc3dvcmRTZXJ2ZXIgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA0
MDQ1LCAvLyBsb2NrZAotICAgICAgICA0MTkwLCAvLyBNYW5hZ2VTaWV2ZSBbQXBwbGUgYWRkaXRp
b25dCi0gICAgICAgIDYwMDAsIC8vIFgxMQotICAgICAgICA2NjY1LCAvLyBBbHRlcm5hdGUgSVJD
IFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2NiwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUg
YWRkaXRpb25dCi0gICAgICAgIDY2NjcsIC8vIFN0YW5kYXJkIElSQyBbQXBwbGUgYWRkaXRpb25d
Ci0gICAgICAgIDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQotICAgICAg
ICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY3OSwg
Ly8gQWx0ZXJuYXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2Njk3LCAvLyBJ
UkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8vIFVz
ZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCi0gICAgfTsKLQotICAgIC8vIElm
IHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgotICAg
IEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6
ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKLSAgICBpZiAoIXN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6
OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCksIHBvcnQu
dmFsdWUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gQWxsb3cgcG9ydHMgMjEg
YW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgotICAgIGlmICgocG9ydC52YWx1
ZSgpID09IDIxIHx8IHBvcnQudmFsdWUoKSA9PSAyMikgJiYgdXJsLnByb3RvY29sSXMoImZ0cCIp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEFsbG93IGFueSBwb3J0IG51bWJlciBp
biBhIGZpbGUgVVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIgaXMgaWdub3JlZC4KLSAgICBpZiAo
dXJsLnByb3RvY29sSXMoImZpbGUiKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYg
dXJsKQotewotICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiZGF0YSIpKTsKLQot
ICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9yIHdoZW4gdGhlIFVSTCBoYXMg
YSBjb21tYSBmaXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVyPwotICAgIC8vIEN1cnJlbnRseSB0
aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRoYXQgY2FzZS4gTm90IHN1
cmUgdGhhdCdzIGNvcnJlY3QuCi0gICAgYXV0byBpbmRleCA9IHVybC5maW5kKCc7JywgNSk7Ci0g
ICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBpbmRleCA9IHVybC5maW5kKCcsJywg
NSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGVy
ZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUgaXQgc291bmQgbGlrZSB0aGlzIHNo
b3VsZCBiZSByZXR1cm5pbmcgdGV4dC9wbGFpbi4KLSAgICAgICAgLy8gQnV0IHdlIGhhdmUgYmVl
biByZXR1cm5pbmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNvbWUgdGltZSwgc28gbm90IGNoYW5n
aW5nIGl0cyBiZWhhdmlvciBhdCB0aGlzIHRpbWUuCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwotICAgIH0KLSAgICBpZiAoaW5kZXggPT0gNSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L3Bs
YWluIl9zOwotICAgIEFTU0VSVChpbmRleCA+PSA1KTsKLSAgICByZXR1cm4gdXJsLnN1YnN0cmlu
Zyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci19Ci0KLVN0cmluZyBV
Ukw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0
Ci17Ci0gICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkKLSAgICAgICAgcmV0dXJu
IHN0cmluZygpOwotCi0gICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8gMiAtIDEpICsg
Ii4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7Ci19Ci0KLVVSTCBVUkw6OmZh
a2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXJ0KQotewotICAg
IHJldHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKLX0KLQotVVJMIFVSTDo6ZmlsZVVS
TFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotewotICAgIHJldHVy
biBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7Ci19Ci0KLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJsKQotewotICAgIHRzIDw8IHVy
bC5zdHJpbmcoKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpICYm
ICFVU0UoU09VUCkKLXN0YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3RyaW5nVmlldyBzdHJpbmcp
Ci17Ci0gICAgYXV0byBjb3VudCA9IDA7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8gb2N0ZXQgOiBz
dHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicpKSB7Ci0gICAgICAgIGlmIChjb3Vu
dCA+PSA0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGNvbnN0IGF1dG8g
bGVuZ3RoID0gb2N0ZXQubGVuZ3RoKCk7Ci0gICAgICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCA+
IDMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgYXV0byB2YWx1ZSA9IDA7
Ci0gICAgICAgIGZvciAoYXV0byBpID0gMHU7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgY29uc3QgYXV0byBkaWdpdCA9IG9jdGV0W2ldOwotCi0gICAgICAgICAgICAvLyBQcm9oaWJp
dCBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmIChkaWdpdCA+ICc5JyB8fCBkaWdpdCA8
ICghaSAmJiBsZW5ndGggPiAxID8gJzEnIDogJzAnKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgICAgIHZhbHVlID0gMTAgKiB2YWx1ZSArIChkaWdpdCAtICcwJyk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodmFsdWUgPiAyNTUpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAgICAgY291bnQrKzsKLSAgICB9Ci0KLSAgICByZXR1cm4gKGNvdW50
ID09IDQpOwotfQotCi1zdGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5n
KQotewotICAgIGVudW0gU2tpcFN0YXRlIHsgTm9uZSwgV2lsbFNraXAsIFNraXBwaW5nLCBTa2lw
cGVkLCBGaW5hbCB9OwotICAgIGF1dG8gc2tpcFN0YXRlID0gTm9uZTsKLSAgICBhdXRvIGNvdW50
ID0gMDsKLQotICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2lu
Z0VtcHR5RW50cmllcygnOicpKSB7Ci0gICAgICAgIGlmIChjb3VudCA+PSA4IHx8IHNraXBTdGF0
ZSA9PSBGaW5hbCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBjb25zdCBh
dXRvIGxlbmd0aCA9IGhleHRldC5sZW5ndGgoKTsKLSAgICAgICAgaWYgKCFsZW5ndGgpIHsKLSAg
ICAgICAgICAgIC8vIDo6IG1heSBiZSB1c2VkIGFueXdoZXJlIHRvIHNraXAgMSB0byA4IGhleHRl
dHMsIGJ1dCBvbmx5IG9uY2UuCi0gICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IFNraXBwZWQp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBpZiAoc2tpcFN0
YXRlID09IE5vbmUpCi0gICAgICAgICAgICAgICAgc2tpcFN0YXRlID0gIWNvdW50ID8gV2lsbFNr
aXAgOiBTa2lwcGluZzsKLSAgICAgICAgICAgIGVsc2UgaWYgKHNraXBTdGF0ZSA9PSBXaWxsU2tp
cCkKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGluZzsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoc2tpcFN0YXRlID09IFNraXBw
aW5nKQotICAgICAgICAgICAgc2tpcFN0YXRlID0gU2tpcHBlZDsKLQotICAgICAgICBpZiAobGVu
Z3RoID4gNCkgewotICAgICAgICAgICAgLy8gQW4gSVB2NCBhZGRyZXNzIG1heSBiZSB1c2VkIGlu
IHBsYWNlIG9mIHRoZSBmaW5hbCB0d28gaGV4dGV0cy4KLSAgICAgICAgICAgIGlmICgoc2tpcFN0
YXRlID09IE5vbmUgJiYgY291bnQgIT0gNikgfHwgKHNraXBTdGF0ZSA9PSBTa2lwcGVkICYmIGNv
dW50ID49IDYpIHx8ICFpc0lQdjRBZGRyZXNzKGhleHRldCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvIGNvZGVVbml0
IDogaGV4dGV0LmNvZGVVbml0cygpKSB7Ci0gICAgICAgICAgICAvLyBJUHY2IGFsbG93cyBsZWFk
aW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGNvZGVVbml0KSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBjb3Vu
dCsrOwotICAgIH0KLQotICAgIHJldHVybiAoY291bnQgPT0gOCAmJiBza2lwU3RhdGUgPT0gTm9u
ZSkgfHwgc2tpcFN0YXRlID09IFNraXBwZWQgfHwgc2tpcFN0YXRlID09IEZpbmFsOwotfQotCi1i
b29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKLXsKLSAgICBpZiAoaG9z
dC5maW5kKCc6JykgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBpc0lQdjRBZGRyZXNzKGhv
c3QpOwotCi0gICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7Ci19Ci0jZW5kaWYKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggY2YwZTM4YTcxYjYxYjRmZGE4MTZiNzRkNTMzOTM1ZGY0MzFiNjZkOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9VUkwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAy
MDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBf
X0NGVVJMKiBDRlVSTFJlZjsKLSNlbmRpZgotCi0jaWYgVVNFKFNPVVApCi0jaW5jbHVkZSAiR1Vu
aXF1ZVB0clNvdXAuaCIKLSNlbmRpZgotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi1PQkpDX0NMQVNT
IE5TVVJMOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgVGV4dFN0cmVhbTsKLX0K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkxUZXh0RW5jb2RpbmcgewotcHVibGlj
OgotICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5n
VmlldykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgflVSTFRleHRFbmNvZGluZygpIHsgfTsKLX07
Ci0KLXN0cnVjdCBVUkxIYXNoOwotCi1jbGFzcyBVUkwgewotcHVibGljOgotICAgIC8vIEdlbmVy
YXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgotICAgIFVSTCgpIHsgaW52
YWxpZGF0ZSgpOyB9Ci0KLSAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBi
b29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0aXZl
IFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQotICAgIC8vIFVS
TFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjZXJzLiBUaGUg
YmFzZSBVUkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUg
cmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMKLSAgICAvLyBhYnNvbHV0ZS4KLSAg
ICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlzIGNyZWF0
ZXMgYW4gaW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJl
dHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMKLSAgICAvLyB0aGUgc2FtZSB3YXkg
d2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4KLSAgICBXRUJDT1JFX0VYUE9SVCBV
UkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0
RW5jb2RpbmcqID0gbnVsbHB0cik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVVJMIGZh
a2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmKTsKLQot
ICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdDsKLQotICAgIC8vIEZJ
WE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBoYXJtb25pemVkIHNvIHRoYXQgcGFz
c2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBlbXB0eSBzdHJpbmcgZ2l2ZXMgdGhl
IHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8vIHN0YW5kYXJkIFN0cmluZyBjb25zdHJ1Y3Rvci4K
LQotICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8g
dXNlIGEgVVJMIG9uIGFub3RoZXIKLSAgICAvLyB0aHJlYWQuIFNpbmNlIHRoZSB1bmRlcmx5aW5n
IFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzCi0gICAgLy8gbm8gb3Ro
ZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29weSgpIG92ZXIgcGxhaW4gb2xkIGFz
c2lnbm1lbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0Owot
Ci0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKLSAg
ICBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB5b3UgY2Fu
IHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4KLSAgICAvLyBOb24taGllcmFyY2hp
Y2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQuCi0gICAgYm9vbCBjYW5TZXRIb3N0
T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQotCi0gICAgYm9vbCBj
YW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KLSAgICBi
b29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBTdHJpbmcmIHN0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNv
bnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBhc3MoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aCgpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmcmFn
bWVudElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpIGNvbnN0OwotCi0gICAgYm9vbCBoYXNVc2VybmFtZSgpIGNvbnN0Owot
ICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKLSAgICBib29sIGhhc1F1ZXJ5KCkgY29uc3Q7
Ci0gICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0
OwotCi0gICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygpLCB0aGVzZSBmdW5jdGlvbnMgZG9u
J3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9y
IGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3QgZW5jb2Rl
ICclJyBjaGFyYWN0ZXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVkVXNlcigp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVkUGFzcygpIGNvbnN0Owot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OwotCi0gICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7Ci0KLSAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMg
dGhlIG51bGwtCi0gICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50
IG11c3QgYmUgbG93ZXItY2FzZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXMo
Y29uc3QgY2hhciopIGNvbnN0OwotICAgIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25z
dDsKLSAgICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygi
YmxvYiIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3Rv
Y29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGlzQmxhbmtVUkwoKSBjb25zdDsKLSAgICBib29sIGNhbm5vdEJlQUJh
c2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJlQUJhc2VVUkw7IH0KLQotICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKLQot
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7Ci0gICAg
dm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwotCi0gICAgdm9pZCByZW1vdmVQb3J0KCk7Ci0g
ICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKLQotICAgIC8vIElucHV0IGlzIGxpa2Ug
ImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgotICAgIHZvaWQgc2V0SG9zdEFuZFBvcnQoY29u
c3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHNldFVzZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9p
ZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOwotCi0gICAgLy8gSWYgeW91IHBhc3MgYW4gZW1wdHkg
cGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5nIHBhdGgKLSAgICAvLyB3
aWxsIGJlICIvIi4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBhdGgoY29uc3QgU3RyaW5n
Jik7Ci0KLSAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBv
ciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAotICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhl
IHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKLSAgICAv
LyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBh
IG51bGwgc3RyaW5nLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UXVlcnkoY29uc3QgU3Ry
aW5nJik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihT
dHJpbmdWaWV3KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVRdWVyeUFuZEZyYWdtZW50
SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaG9zdElzSVBB
ZGRyZXNzKFN0cmluZ1ZpZXcpOwotCi0gICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7Ci0g
ICAgdW5zaWduZWQgcGF0aEVuZCgpIGNvbnN0OwotICAgIHVuc2lnbmVkIHBhdGhBZnRlckxhc3RT
bGFzaCgpIGNvbnN0OwotCi0gICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0
dXJuIHN0cmluZygpOyB9Ci0KLSNpZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMKENG
VVJMUmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNG
VVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShTT1VQKQotICAgIFVSTChTb3VwVVJJKik7
Ci0gICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBjcmVhdGVTb3VwVVJJKCkgY29uc3Q7Ci0jZW5kaWYK
LQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIFVSTChOU1VSTCopOwot
ICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TVVJMKigpIGNvbnN0OwotI2VuZGlmCi0jaWZk
ZWYgX19PQkpDX18KLSAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBzdHJp
bmcoKTsgfQotI2VuZGlmCi0KLSNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBwcmludCgpIGNvbnN0
OwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFVSTCYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVyJik7Ci0KLXByaXZhdGU6Ci0gICAg
ZnJpZW5kIGNsYXNzIFVSTFBhcnNlcjsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRh
dGUoKTsKLSAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNo
YXIqKTsKLSAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBj
b25zdDsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQ
T1JUIGZyaWVuZCBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJM
JiwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wgcHJvdG9jb2xI
b3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIGZyaWVuZCBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7
Ci0KLSAgICBTdHJpbmcgbV9zdHJpbmc7Ci0KLSAgICB1bnNpZ25lZCBtX2lzVmFsaWQgOiAxOwot
ICAgIHVuc2lnbmVkIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA6IDE7Ci0gICAgdW5zaWduZWQg
bV9jYW5ub3RCZUFCYXNlVVJMIDogMTsKLQotICAgIC8vIFRoaXMgaXMgb3V0IG9mIG9yZGVyIHRv
IGFsaWduIHRoZSBiaXRzIGJldHRlci4gVGhlIHBvcnQgaXMgYWZ0ZXIgdGhlIGhvc3QuCi0gICAg
dW5zaWduZWQgbV9wb3J0TGVuZ3RoIDogMzsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG1heFBvcnRMZW5ndGggPSAoMSA8PCAzKSAtIDE7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIG1heFNjaGVtZUxlbmd0aCA9ICgxIDw8IDI2KSAtIDE7Ci0gICAgdW5zaWduZWQgbV9z
Y2hlbWVFbmQgOiAyNjsKLSAgICB1bnNpZ25lZCBtX3VzZXJTdGFydDsKLSAgICB1bnNpZ25lZCBt
X3VzZXJFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXNzd29yZEVuZDsKLSAgICB1bnNpZ25lZCBtX2hv
c3RFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgdW5zaWduZWQg
bV9wYXRoRW5kOwotICAgIHVuc2lnbmVkIG1fcXVlcnlFbmQ7Ci19OwotCi1zdGF0aWNfYXNzZXJ0
KHNpemVvZihVUkwpID09IHNpemVvZihTdHJpbmcpICsgOCAqIHNpemVvZih1bnNpZ25lZCksICJV
Ukwgc2hvdWxkIHN0YXkgc21hbGwiKTsKLQotdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Ci12b2lk
IFVSTDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBt
X3N0cmluZzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1ib29sIFVSTDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFVSTCYgdXJsKQotewotICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBV
Ukw6OmRlY29kZShkZWNvZGVyKTsKLSAgICBpZiAoIW9wdGlvbmFsVVJMKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgdXJsID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLXN0ZDo6b3B0aW9uYWw8VVJMPiBV
Ukw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFN0cmluZyBzdHJpbmc7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIHJldHVybiBVUkwoVVJMKCksIHN0cmluZyk7Ci19Ci0KLVdFQkNPUkVfRVhQT1JUIGJv
b2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwm
KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29u
c3QgVVJMJiwgY29uc3QgVVJMJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSG9zdEFu
ZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJv
b2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLQotV0VCQ09SRV9FWFBP
UlQgY29uc3QgVVJMJiBibGFua1VSTCgpOwotCi0vLyBGdW5jdGlvbnMgdG8gZG8gVVJMIG9wZXJh
dGlvbnMgb24gc3RyaW5ncy4KLS8vIFRoZXNlIGFyZSBvcGVyYXRpb25zIHRoYXQgYXJlbid0IGZh
c3RlciBvbiBhIHBhcnNlZCBVUkwuCi0vLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0
aGUgVVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZSB0aGUgc3RyaW5nIHRv
IGJlIGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KLS8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBv
cnRhbnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBj
b25zaWRlcmVkIHZhbGlkIGJ5IFVSTC4KLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElz
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7Ci1XRUJDT1JFX0VYUE9S
VCBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKLWJvb2wgcHJv
dG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBw
cm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsKLQotc3RkOjpvcHRpb25h
bDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsK
LVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBv
cnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBwb3J0QWxsb3dl
ZChjb25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVz
ZWQgZm9yIFdlYiByZXNvdXJjZXMuCi0KLVdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJEZWZh
dWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcm
IHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZygpOwotCi1ib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcm
KTsKLQotU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwotCi0v
LyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3NlLCBkaWZmZXJlbnQgcGFy
dHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRoZSBVUkwgU3RhbmRhcmQu
Ci1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25z
dCBTdHJpbmcmKTsKLQotLy8gSW5saW5lcy4KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0
cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3Qg
U3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpID09IGI7Ci19Ci0KLWlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCi17Ci0gICAgcmV0
dXJuIGEgPT0gYi5zdHJpbmcoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBV
UkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiLnN0cmlu
ZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29uc3QgU3Ry
aW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpICE9IGI7Ci19Ci0KLWlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCi17Ci0gICAgcmV0dXJu
IGEgIT0gYi5zdHJpbmcoKTsKLX0KLQotLy8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdv
b2dsZVVSTCBmdW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxpbmluZwotLy8gd2l0aG91dCBoYXZp
bmcgdG8gaGF2ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4K
LQotaW5saW5lIGJvb2wgVVJMOjppc051bGwoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmlu
Zy5pc051bGwoKTsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjppc0VtcHR5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OmlzVmFs
aWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQ7Ci19Ci0KLWlubGluZSBib29sIFVS
TDo6aGFzUGF0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX2hvc3RFbmQg
KyBtX3BvcnRMZW5ndGg7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzVXNlcm5hbWUoKSBjb25z
dAotewotICAgIHJldHVybiBtX3VzZXJFbmQgPiBtX3VzZXJTdGFydDsKLX0KLQotaW5saW5lIGJv
b2wgVVJMOjpoYXNQYXNzd29yZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFzc3dvcmRFbmQg
PiAobV91c2VyRW5kICsgMSk7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUXVlcnkoKSBjb25z
dAotewotICAgIHJldHVybiBtX3F1ZXJ5RW5kID4gbV9wYXRoRW5kOwotfQotCi1pbmxpbmUgYm9v
bCBVUkw6Omhhc0ZyYWdtZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1f
c3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZDsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpwcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcm90b2NvbElzSW5I
VFRQRmFtaWx5OwotfQotCi1pbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoU3RhcnQoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19Ci0KLWlubGluZSB1bnNp
Z25lZCBVUkw6OnBhdGhFbmQoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhdGhFbmQ7Ci19Ci0K
LWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fcGF0aEFmdGVyTGFzdFNsYXNoOwotfQotCi1XVEY6OlRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxX
ZWJDb3JlOjpVUkw+OwotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+
OwotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkxIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZDBhYjk2ZGEzNWQzMWFjOGRiNGViNGRhYmQzZjRlMTU5
MmI4MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMSGFzaC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIFVSTEhhc2hfaAotI2RlZmluZSBVUkxIYXNoX2gKLQotI2luY2x1ZGUgIlVSTC5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgc3RydWN0IFVSTEhhc2ggewotICAg
ICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCktPmhhc2goKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwoYS5zdHJpbmco
KSwgYi5zdHJpbmcoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAgIH07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIFVSTEhhc2ggaXMgdGhlIGRl
ZmF1bHQgaGFzaCBmb3IgU3RyaW5nCi10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJD
b3JlOjpVUkw+IHsKLSAgICB1c2luZyBIYXNoID0gV2ViQ29yZTo6VVJMSGFzaDsKLX07Ci0KLXRl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6VVJMPiA6IFNpbXBsZUNsYXNzSGFz
aFRyYWl0czxXZWJDb3JlOjpVUkw+IHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRp
ZiAvLyBVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2JhYzQ5ZDliNjVkZThiMTA0ZDVhNmY3NWIyNTgwYjhi
ODkyYzZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
OTI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJVUkxQYXJzZXIuaCIKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxtdXRl
eD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8dW5pY29kZS91dHlwZXMu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jZGVmaW5lIFVSTF9QQVJTRVJfREVCVUdHSU5H
IDAKLQotI2lmIFVSTF9QQVJTRVJfREVCVUdHSU5HCi0jZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4u
LikgTE9HKFVSTFBhcnNlciwgX19WQV9BUkdTX18pCi0jZWxzZQotI2RlZmluZSBVUkxfUEFSU0VS
X0xPRyguLi4pCi0jZW5kaWYKLSAgICAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Ci1jbGFzcyBDb2RlUG9pbnRJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgQUxXQVlTX0lOTElORSBD
b2RlUG9pbnRJdGVyYXRvcigpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0
b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogYmVnaW4sIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCkK
LSAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQotICAgICAgICAsIG1fZW5kKGVuZCkKLSAgICB7Ci0g
ICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3ImIGJlZ2luLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgZW5kKQotICAg
ICAgICA6IENvZGVQb2ludEl0ZXJhdG9yKGJlZ2luLm1fYmVnaW4sIGVuZC5tX2JlZ2luKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKGVuZC5tX2JlZ2luID49IGJlZ2luLm1fYmVnaW4pOwotICAgIH0K
LSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAg
QUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotCi0gICAgQUxX
QVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9iZWdpbgot
ICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7Ci0gICAgfQotICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5F
IENvZGVQb2ludEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90
aGVyKQotICAgIHsKLSAgICAgICAgbV9iZWdpbiA9IG90aGVyLm1fYmVnaW47Ci0gICAgICAgIG1f
ZW5kID0gb3RoZXIubV9lbmQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgYXRFbmQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
YmVnaW4gPD0gbV9lbmQpOwotICAgICAgICByZXR1cm4gbV9iZWdpbiA+PSBtX2VuZDsKLSAgICB9
Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2luY2UoY29uc3QgQ2hh
cmFjdGVyVHlwZSogcmVmZXJlbmNlKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fYmVn
aW4gPj0gcmVmZXJlbmNlKTsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4gLSByZWZlcmVuY2U7Ci0g
ICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2luY2UoY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvZGVV
bml0c1NpbmNlKG90aGVyLm1fYmVnaW4pOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgY29u
c3QgQ2hhcmFjdGVyVHlwZSogbV9iZWdpbiB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBDaGFyYWN0
ZXJUeXBlKiBtX2VuZCB7IG51bGxwdHIgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJ
TkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKigpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKCFhdEVuZCgpKTsKLSAgICByZXR1cm4gKm1fYmVnaW47Ci19Ci0KLXRlbXBs
YXRlPD4KLUFMV0FZU19JTkxJTkUgYXV0byBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJh
dG9yKysoKSAtPiBDb2RlUG9pbnRJdGVyYXRvciYKLXsKLSAgICBtX2JlZ2luKys7Ci0gICAgcmV0
dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIFVDaGFyMzIgQ29kZVBv
aW50SXRlcmF0b3I8VUNoYXI+OjpvcGVyYXRvciooKSBjb25zdAotewotICAgIEFTU0VSVCghYXRF
bmQoKSk7Ci0gICAgVUNoYXIzMiBjOwotICAgIFUxNl9HRVQobV9iZWdpbiwgMCwgMCwgbV9lbmQg
LSBtX2JlZ2luLCBjKTsKLSAgICByZXR1cm4gYzsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lO
TElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQ
b2ludEl0ZXJhdG9yJgotewotICAgIHVuc2lnbmVkIGkgPSAwOwotICAgIHNpemVfdCBsZW5ndGgg
PSBtX2VuZCAtIG1fYmVnaW47Ci0gICAgVTE2X0ZXRF8xKG1fYmVnaW4sIGksIGxlbmd0aCk7Ci0g
ICAgbV9iZWdpbiArPSBpOwotICAgIHJldHVybiAqdGhpczsKLX0KLSAgICAKLUFMV0FZU19JTkxJ
TkUgc3RhdGljIHZvaWQgYXBwZW5kQ29kZVBvaW50KFZlY3RvcjxVQ2hhcj4mIGRlc3RpbmF0aW9u
LCBVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBpZiAoVV9JU19CTVAoY29kZVBvaW50KSkgewot
ICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNvZGVQb2ludCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGRlc3RpbmF0aW9uLnJlc2VydmVDYXBhY2l0
eShkZXN0aW5hdGlvbi5zaXplKCkgKyAyKTsKLSAgICBkZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBl
bmQoVTE2X0xFQUQoY29kZVBvaW50KSk7Ci0gICAgZGVzdGluYXRpb24udW5jaGVja2VkQXBwZW5k
KFUxNl9UUkFJTChjb2RlUG9pbnQpKTsKLX0KLQotZW51bSBVUkxDaGFyYWN0ZXJDbGFzcyB7Ci0g
ICAgVXNlckluZm8gPSAweDEsCi0gICAgRGVmYXVsdCA9IDB4MiwKLSAgICBGb3JiaWRkZW5Ib3N0
ID0gMHg0LAotICAgIFF1ZXJ5UGVyY2VudCA9IDB4OCwKLSAgICBTbGFzaFF1ZXN0aW9uT3JIYXNo
ID0gMHgxMCwKLSAgICBWYWxpZFNjaGVtZSA9IDB4MjAsCi19OwotCi1zdGF0aWMgY29uc3QgdWlu
dDhfdCBjaGFyYWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHgwCi0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQsIC8vIDB4MgotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2Vu
dCwgLy8gMHgzCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDQK
LSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NQotICAgIFVzZXJJ
bmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg2Ci0gICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDcKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQsIC8vIDB4OAotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8
IEZvcmJpZGRlbkhvc3QsIC8vIDB4OQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVy
Y2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4QQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1
ZXJ5UGVyY2VudCwgLy8gMHhCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweEMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAweEQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4RQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhGCi0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEwCi0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDExCi0gICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAweDEyCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDEzCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDE0Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE1Ci0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE2Ci0gICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE3Ci0gICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE4Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweDE5Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDFBCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFC
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFDCi0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFECi0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFFCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDFGCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyAnCi0gICAgMCwgLy8gJyEnCi0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAnIicKLSAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8g
JyMnCi0gICAgMCwgLy8gJyQnCi0gICAgRm9yYmlkZGVuSG9zdCwgLy8gJyUnCi0gICAgMCwgLy8g
JyYnCi0gICAgMCwgLy8gJ1wnJwotICAgIDAsIC8vICcoJwotICAgIDAsIC8vICcpJwotICAgIDAs
IC8vICcqJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnKycKLSAgICAwLCAvLyAnLCcKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJy0nCi0gICAgVmFsaWRTY2hlbWUsIC8vICcuJwotICAgIFVzZXJJbmZvIHwg
U2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICcvJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnMCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzEnCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICcyJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzQnCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICc1JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnNicKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJzcnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc4JwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnOScKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICc6JwotICAgIFVzZXJJ
bmZvLCAvLyAnOycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3Ji
aWRkZW5Ib3N0LCAvLyAnPCcKLSAgICBVc2VySW5mbywgLy8gJz0nCi0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJz4nCi0gICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICc/
JwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ0AnCi0gICAgVmFsaWRTY2hlbWUs
IC8vICdBJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnQicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0Mn
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICdEJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnRScKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ0YnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdHJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnSCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0knCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICdKJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0wnCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdNJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnTicKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ08nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdQJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnUScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1InCi0gICAgVmFsaWRTY2hlbWUsIC8vICdT
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnVCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1UnCi0gICAg
VmFsaWRTY2hlbWUsIC8vICdWJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnVycKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJ1gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdZJwotICAgIFZhbGlkU2NoZW1lLCAv
LyAnWicKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICdbJwotICAgIFVzZXJJbmZv
IHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICdcXCcKLSAgICBVc2Vy
SW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICddJwotICAgIFVzZXJJbmZvLCAvLyAnXicKLSAgICAw
LCAvLyAnXycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8vICdgJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnYScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2InCi0gICAgVmFsaWRTY2hlbWUsIC8vICdj
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnZCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2UnCi0gICAg
VmFsaWRTY2hlbWUsIC8vICdmJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnZycKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJ2gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdpJwotICAgIFZhbGlkU2NoZW1lLCAv
LyAnaicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2snCi0gICAgVmFsaWRTY2hlbWUsIC8vICdsJwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAnbScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ24nCi0gICAgVmFs
aWRTY2hlbWUsIC8vICdvJwotICAgIFZhbGlkU2NoZW1lLCAvLyAncCcKLSAgICBWYWxpZFNjaGVt
ZSwgLy8gJ3EnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdyJwotICAgIFZhbGlkU2NoZW1lLCAvLyAn
cycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3QnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd1JwotICAg
IFZhbGlkU2NoZW1lLCAvLyAndicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3cnCi0gICAgVmFsaWRT
Y2hlbWUsIC8vICd4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAneScKLSAgICBWYWxpZFNjaGVtZSwg
Ly8gJ3onCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAneycKLSAgICBVc2VySW5mbywgLy8g
J3wnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAnfScKLSAgICAwLCAvLyAnficKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4N0YKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODAKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4ODEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODIKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4ODMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODQKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4ODUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODYKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4ODcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODgKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4ODkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OEIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEQK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEYKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTEKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTMKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTUKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTcKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTkKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUIKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTAK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTIKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTQKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTYKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTgKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUEKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUMKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUUKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QjEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjMK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjUKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QjYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjcKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QjgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjkKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QkEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkIKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QkMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkQKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QkUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkYKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QzAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzEKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QzIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QzQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzYK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzgKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QzkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0EKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4Q0IKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0MKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4Q0QKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0UKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4Q0YKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDAKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RDEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDIKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RDMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDQKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RDUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RDcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDkK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REIKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4REMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REQKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4REUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REYKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTEKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTMKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTUKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTcKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUMK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUUKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjAKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RjEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjIKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjQKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RjUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjYKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjgKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkEKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkYK
LX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3Rh
dGljIGJvb2wgaXNDMENvbnRyb2woQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNo
YXJhY3RlciA8PSAweDFGOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBib29sIGlzQzBDb250cm9sT3JTcGFjZShDaGFyYWN0ZXJUeXBlIGNo
YXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MjA7IH0KLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNUYWJPck5ld2xpbmUo
Q2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweEQgJiYgY2hh
cmFjdGVyID49IDB4OSAmJiBjaGFyYWN0ZXIgIT0gMHhCICYmIGNoYXJhY3RlciAhPSAweEM7IH0K
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJv
b2wgaXNJblNpbXBsZUVuY29kZVNldChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4g
Y2hhcmFjdGVyID4gMHg3RSB8fCBpc0MwQ29udHJvbChjaGFyYWN0ZXIpOyB9Ci10ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5EZWZh
dWx0RW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIg
PiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIERlZmF1bHQ7IH0KLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wg
aXNJblVzZXJJbmZvRW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBj
aGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFVzZXJJ
bmZvOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBib29sIGlzUGVyY2VudE9yTm9uQVNDSUkoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsg
cmV0dXJuICFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09ICclJzsgfQotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1Ns
YXNoUXVlc3Rpb25Pckhhc2goQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJh
Y3RlciA8PSAnXFwnICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFNsYXNoUXVl
c3Rpb25Pckhhc2g7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaXNWYWxpZFNjaGVtZUNoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNo
YXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICd6JyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxl
W2NoYXJhY3Rlcl0gJiBWYWxpZFNjaGVtZTsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQo
Q2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXScgJiYgY2hh
cmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgRm9yYmlkZGVuSG9zdDsgfQotQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKHVpbnQ4X3QgYnl0
ZSwgY29uc3QgYm9vbCYgdXJsSXNTcGVjaWFsKQotewotICAgIGlmIChjaGFyYWN0ZXJDbGFzc1Rh
YmxlW2J5dGVdICYgUXVlcnlQZXJjZW50KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
Ynl0ZSA9PSAnXCcnICYmIHVybElzU3BlY2lhbCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0
KFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmlzSW5Vc2VySW5mb0VuY29kZVNldChj
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgVVJMUGFyc2VyOjpSZXBv
cnRTeW50YXhWaW9sYXRpb24gcmVwb3J0U3ludGF4VmlvbGF0aW9uPgotQUxXQVlTX0lOTElORSB2
b2lkIFVSTFBhcnNlcjo6YWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
aXRlcmF0b3IsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRv
ckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQotewotICAgICsraXRlcmF0b3I7Ci0gICAgd2hp
bGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRv
cikpKSB7Ci0gICAgICAgIGlmIChyZXBvcnRTeW50YXhWaW9sYXRpb24gPT0gUmVwb3J0U3ludGF4
VmlvbGF0aW9uOjpZZXMpCi0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JT
eW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICsraXRlcmF0b3I7Ci0gICAgfQotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnRha2Vz
VHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVy
YXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4o
aXRlcmF0b3IpOwotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5v
PihpdGVyYXRvcik7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFyc2VyOjpp
c1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVy
YXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCAhaXNBU0NJSUFscGhhKCppdGVy
YXRvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUs
IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0b3Iu
YXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJzon
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoVU5MSUtFTFkoKml0ZXJhdG9yID09ICd8
JykpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotQUxXQVlT
X0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyIGNvZGVQ
b2ludCkKLXsKLSAgICBBU1NFUlQoaXNBU0NJSShjb2RlUG9pbnQpKTsKLSAgICBpZiAoVU5MSUtF
TFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAgICBtX2FzY2lpQnVmZmVyLmFwcGVu
ZChjb2RlUG9pbnQpOwotfQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphcHBlbmRU
b0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCi17Ci0g
ICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKLSAgICAgICAgbV9hc2Np
aUJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjphcHBlbmRXaW5kb3dzRHJpdmVMZXR0
ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQotewotICAgIEFT
U0VSVChpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikpOwotICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoKml0ZXJhdG9yKTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLSAgICBBU1NFUlQoIWl0
ZXJhdG9yLmF0RW5kKCkpOwotICAgIEFTU0VSVCgqaXRlcmF0b3IgPT0gJzonIHx8ICppdGVyYXRv
ciA9PSAnfCcpOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJ3wnKQotICAgICAgICBzeW50YXhWaW9s
YXRpb24oaXRlcmF0b3IpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKLSAgICBhZHZh
bmNlKGl0ZXJhdG9yKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmNvcHlCYXNlV2luZG93c0RyaXZl
TGV0dGVyKGNvbnN0IFVSTCYgYmFzZSkKLXsKLSAgICBpZiAoYmFzZS5wcm90b2NvbElzKCJmaWxl
IikpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9y
dExlbmd0aCA8IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICBpZiAoYmFzZS5tX3N0
cmluZy5pczhCaXQoKSkgewotICAgICAgICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0gYmFzZS5t
X3N0cmluZy5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAgQ29kZVBvaW50SXRlcmF0b3I8TENo
YXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMSwgYmVn
aW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIGlmIChpc1dpbmRvd3NE
cml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRl
cihjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9IGJhc2UubV9zdHJp
bmcuY2hhcmFjdGVyczE2KCk7Ci0gICAgICAgICAgICBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4g
YyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggKyAxLCBiZWdpbiAr
IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZl
TGV0dGVyKGMpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMp
OwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRDb3B5RmlsZVVSTChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoIWlzV2luZG93c0RyaXZl
TGV0dGVyKGl0ZXJhdG9yKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGl0ZXJhdG9y
LmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsK
LSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgYWR2
YW5jZShpdGVyYXRvcik7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIHJldHVybiAhaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCppdGVyYXRvcik7Ci19
Ci0KLXN0YXRpYyB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSwgVmVjdG9yPExD
aGFyPiYgYnVmZmVyKQotewotICAgIGJ1ZmZlci5hcHBlbmQoJyUnKTsKLSAgICBidWZmZXIuYXBw
ZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLSAgICBidWZmZXIuYXBwZW5k
KGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLX0KLQotdm9pZCBVUkxQYXJzZXI6
OnBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSkKLXsKLSAgICBBU1NFUlQobV9kaWRTZWVT
eW50YXhWaW9sYXRpb24pOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyUnKTsKLSAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLSAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLX0K
LQotY29uc3QgY2hhciByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZFsxMF0g
PSAiJUVGJUJGJUJEIjsKLWNvbnN0IHNpemVfdCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJj
ZW50RW5jb2RlZExlbmd0aCA9IHNpemVvZihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50
RW5jb2RlZCkgLSAxOwotCi10ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4
UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRl
cmF0b3IpCi17Ci0gICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKLSAgICBVQ2hhcjMyIGNv
ZGVQb2ludCA9ICppdGVyYXRvcjsKLSAgICBpZiAoTElLRUxZKGlzQVNDSUkoY29kZVBvaW50KSkp
IHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzSW5Db2RlU2V0KGNvZGVQb2ludCkpKSB7Ci0gICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgcGVyY2VudEVu
Y29kZUJ5dGUoY29kZVBvaW50KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKGNvZGVQb2ludCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShpc0luQ29kZVNldChjb2RlUG9pbnQpLCAiaXNJbkNvZGVTZXQgc2hv
dWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBmb3Igbm9uLUFTQ0lJIGNoYXJhY3RlcnMiKTsKLSAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIAotICAgIGlmICghVV9JU19VTklDT0RFX0NI
QVIoY29kZVBvaW50KSkgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50
Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkLCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJj
ZW50RW5jb2RlZExlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgdWlu
dDhfdCBidWZmZXJbVThfTUFYX0xFTkdUSF07Ci0gICAgaW50MzJfdCBvZmZzZXQgPSAwOwotICAg
IFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQsIGNvZGVQb2ludCk7Ci0gICAgZm9yIChp
bnQzMl90IGkgPSAwOyBpIDwgb2Zmc2V0OyArK2kpCi0gICAgICAgIHBlcmNlbnRFbmNvZGVCeXRl
KGJ1ZmZlcltpXSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdB
WVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UXVlcnlFbmNvZGUoY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQotewotICAgIEFTU0VSVCghaXRlcmF0
b3IuYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRlcmF0b3I7Ci0gICAgaWYg
KExJS0VMWShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWShzaG91
bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGNvZGVQb2ludCwgbV91cmxJc1NwZWNpYWwpKSkgewot
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgIHBlcmNl
bnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IAotICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgCi0gICAgaWYgKCFVX0lTX1VO
SUNPREVfQ0hBUihjb2RlUG9pbnQpKSB7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIocmVw
bGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQsIHJlcGxhY2VtZW50Q2hhcmFjdGVy
VVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwotICAgIGludDMyX3Qgb2Zmc2V0ID0gMDsK
LSAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCBjb2RlUG9pbnQpOwotICAgIGZv
ciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytpKSB7Ci0gICAgICAgIGF1dG8gYnl0ZSA9
IGJ1ZmZlcltpXTsKLSAgICAgICAgaWYgKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0
ZSwgbV91cmxJc1NwZWNpYWwpKQotICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnl0ZSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYnl0ZSk7Ci0g
ICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJz
ZXI6OmVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0
IFVSTFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+IGl0ZXJhdG9yKQotewotICAgIGF1dG8gZW5jb2RlZCA9IGVuY29kaW5nLmVuY29kZUZvclVS
TFBhcnNpbmcoU3RyaW5nVmlldyhzb3VyY2UuZGF0YSgpLCBzb3VyY2Uuc2l6ZSgpKSk7Ci0gICAg
YXV0byogZGF0YSA9IGVuY29kZWQuZGF0YSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBlbmNvZGVk
LnNpemUoKTsKLSAgICAKLSAgICBpZiAoIWxlbmd0aCA9PSAhaXRlcmF0b3IuYXRFbmQoKSkgewot
ICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIAotICAgIHNpemVfdCBpID0gMDsKLSAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgICAgIHVpbnQ4X3QgYnl0
ZSA9IGRhdGFbaV07Ci0gICAgICAgIGlmIChVTkxJS0VMWShieXRlICE9ICppdGVyYXRvcikpIHsK
LSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2VudEVuY29kZVF1
ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKLSAgICAgICAgKytpdGVyYXRvcjsKLSAgICB9Ci0g
ICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikp
Ci0gICAgICAgICsraXRlcmF0b3I7Ci0gICAgQVNTRVJUKChpID09IGxlbmd0aCkgPT0gaXRlcmF0
b3IuYXRFbmQoKSk7Ci0gICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBBU1NF
UlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAgICB1aW50OF90IGJ5dGUgPSBkYXRh
W2ldOwotICAgICAgICBpZiAoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3Vy
bElzU3BlY2lhbCkpCi0gICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShieXRlKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKLSAgICB9Ci19
Ci0KLXN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90
b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKLXsKLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgZnRw
UG9ydCA9IDIxOwotICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBnb3BoZXJQb3J0ID0gNzA7Ci0g
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBQb3J0ID0gODA7Ci0gICAgc3RhdGljIGNvbnN0
IHVpbnQxNl90IGh0dHBzUG9ydCA9IDQ0MzsKLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qgd3NQ
b3J0ID0gODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IHdzc1BvcnQgPSA0NDM7Ci0gICAg
Ci0gICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKLSAg
ICBjYXNlICd3JzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSAyOgot
ICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHdzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGNhc2Ug
MzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAgICAgICAgICAgICAgJiYg
c2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gd3NzUG9ydDsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBjYXNlICdoJzoKLSAgICAgICAgc3dpdGNo
IChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9
PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAg
ICAgJiYgc2NoZW1lWzNdID09ICdwJykKLSAgICAgICAgICAgICAgICByZXR1cm4gaHR0cFBvcnQ7
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBjYXNlIDU6Ci0gICAg
ICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVsy
XSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCi0gICAgICAgICAg
ICAgICAgJiYgc2NoZW1lWzRdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gaHR0cHNQ
b3J0OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLSAgICBjYXNlICdn
JzoKLSAgICAgICAgaWYgKGxlbmd0aCA9PSA2Ci0gICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0g
J28nCi0gICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnCi0gICAgICAgICAgICAmJiBzY2hl
bWVbM10gPT0gJ2gnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ2UnCi0gICAgICAgICAg
ICAmJiBzY2hlbWVbNV0gPT0gJ3InKQotICAgICAgICAgICAgcmV0dXJuIGdvcGhlclBvcnQ7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgY2FzZSAnZic6Ci0gICAgICAgIGlmIChs
ZW5ndGggPT0gMwotICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAg
JiYgc2NoZW1lWzJdID09ICdwJykKLSAgICAgICAgICAgIHJldHVybiBmdHBQb3J0OwotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgfQotfQotCi1lbnVtIGNsYXNzIFNjaGVtZSB7Ci0gICAgV1MsCi0gICAg
V1NTLAotICAgIEZpbGUsCi0gICAgRlRQLAotICAgIEdvcGhlciwKLSAgICBIVFRQLAotICAgIEhU
VFBTLAotICAgIE5vblNwZWNpYWwKLX07Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGljIFNjaGVtZSBz
Y2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpCi17Ci0gICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVu
Z3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNp
YWw7Ci0gICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKLSAgICBjYXNlICdmJzoKLSAgICAgICAgc3dp
dGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsx
XSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnKQotICAgICAgICAg
ICAgICAgIHJldHVybiBTY2hlbWU6OkZUUDsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5v
blNwZWNpYWw7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0g
J2knCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdsJwotICAgICAgICAgICAgICAg
ICYmIHNjaGVtZVszXSA9PSAnZScpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Rmls
ZTsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICB9Ci0g
ICAgY2FzZSAnZyc6Ci0gICAgICAgIGlmIChsZW5ndGggPT0gNgotICAgICAgICAgICAgJiYgc2No
ZW1lWzFdID09ICdvJwotICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJwotICAgICAgICAg
ICAgJiYgc2NoZW1lWzNdID09ICdoJwotICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdlJwot
ICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKLSAgICAgICAgICAgIHJldHVybiBTY2hl
bWU6OkdvcGhlcjsKLSAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICBjYXNl
ICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSA0OgotICAgICAg
ICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0g
PT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gU2NoZW1lOjpIVFRQOwotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9u
U3BlY2lhbDsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAn
dCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAgICAg
JiYgc2NoZW1lWzNdID09ICdwJwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAncycp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRUUFM7Ci0gICAgICAgICAgICByZXR1
cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQotICAgIGNhc2UgJ3cnOgotICAgICAg
ICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoc2No
ZW1lWzFdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpXUzsKLSAgICAg
ICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAg
ICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJd
ID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpXU1M7Ci0gICAgICAgICAg
ICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgfQotfQotCi1zdGQ6Om9wdGlv
bmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJp
bmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICghaXNBU0NJSUFscGhhKHNjaGVtZVswXSkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNj
aGVtZS5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKHNj
aGVtZVtpXSkgfHwgc2NoZW1lW2ldID09ICcrJyB8fCBzY2hlbWVbaV0gPT0gJy0nIHx8IHNjaGVt
ZVtpXSA9PSAnLicpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NoZW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5n
JiBzY2hlbWVBcmcpCi17Ci0gICAgcmV0dXJuIHNjaGVtZShzY2hlbWVBcmcpICE9IFNjaGVtZTo6
Tm9uU3BlY2lhbDsKLX0KLQotZW51bSBjbGFzcyBVUkxQYXJzZXI6OlVSTFBhcnQgewotICAgIFNj
aGVtZUVuZCwKLSAgICBVc2VyU3RhcnQsCi0gICAgVXNlckVuZCwKLSAgICBQYXNzd29yZEVuZCwK
LSAgICBIb3N0RW5kLAotICAgIFBvcnRFbmQsCi0gICAgUGF0aEFmdGVyTGFzdFNsYXNoLAotICAg
IFBhdGhFbmQsCi0gICAgUXVlcnlFbmQsCi19OwotCi1zaXplX3QgVVJMUGFyc2VyOjp1cmxMZW5n
dGhVbnRpbFBhcnQoY29uc3QgVVJMJiB1cmwsIFVSTFBhcnQgcGFydCkKLXsKLSAgICBzd2l0Y2gg
KHBhcnQpIHsKLSAgICBjYXNlIFVSTFBhcnQ6OlF1ZXJ5RW5kOgotICAgICAgICByZXR1cm4gdXJs
Lm1fcXVlcnlFbmQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgotICAgICAgICByZXR1cm4g
dXJsLm1fcGF0aEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaDoKLSAg
ICAgICAgcmV0dXJuIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICBjYXNlIFVSTFBhcnQ6
OlBvcnRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0
aDsKLSAgICBjYXNlIFVSTFBhcnQ6Okhvc3RFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9ob3N0
RW5kOwotICAgIGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwu
bV9wYXNzd29yZEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlVzZXJFbmQ6Ci0gICAgICAgIHJldHVy
biB1cmwubV91c2VyRW5kOwotICAgIGNhc2UgVVJMUGFydDo6VXNlclN0YXJ0OgotICAgICAgICBy
ZXR1cm4gdXJsLm1fdXNlclN0YXJ0OwotICAgIGNhc2UgVVJMUGFydDo6U2NoZW1lRW5kOgotICAg
ICAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBVUkxQYXJzZXI6OmNvcHlBU0NJSVN0cmlu
Z1VudGlsKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQotewotICAgIFJFTEVB
U0VfQVNTRVJUKGxlbmd0aCA8PSBzdHJpbmcubGVuZ3RoKCkpOwotICAgIGlmIChzdHJpbmcuaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5
KCkpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBVQ2hhciBj
ID0gY2hhcmFjdGVyc1tpXTsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGlzQVNDSUkoYykpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjKTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
LXZvaWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBh
cnQgcGFydCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9y
LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqJiBub25VVEY4UXVlcnlFbmNvZGluZykKLXsKLSAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotCi0gICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwot
ICAgIGNvcHlBU0NJSVN0cmluZ1VudGlsKGJhc2UubV9zdHJpbmcsIHVybExlbmd0aFVudGlsUGFy
dChiYXNlLCBwYXJ0KSk7Ci0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgY2FzZSBVUkxQYXJ0OjpR
dWVyeUVuZDoKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGJhc2UubV9xdWVyeUVuZDsKLSAg
ICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgotICAgICAgICBt
X3VybC5tX3BhdGhFbmQgPSBiYXNlLm1fcGF0aEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0g
ICAgY2FzZSBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6Ci0gICAgICAgIG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgRkFM
TFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgotICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSBiYXNlLm1fcG9ydExlbmd0aDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAg
Y2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBiYXNlLm1f
aG9zdEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXNzd29y
ZEVuZDoKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IGJhc2UubV9wYXNzd29yZEVuZDsK
LSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyRW5kOgotICAgICAg
ICBtX3VybC5tX3VzZXJFbmQgPSBiYXNlLm1fdXNlckVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7
Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyU3RhcnQ6Ci0gICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0
ID0gYmFzZS5tX3VzZXJTdGFydDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQ
YXJ0OjpTY2hlbWVFbmQ6Ci0gICAgICAgIG1fdXJsLm1faXNWYWxpZCA9IGJhc2UubV9pc1ZhbGlk
OwotICAgICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBiYXNlLm1fcHJvdG9j
b2xJc0luSFRUUEZhbWlseTsKLSAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBiYXNlLm1fc2No
ZW1lRW5kOwotICAgIH0KLSAgICBzd2l0Y2ggKHNjaGVtZShTdHJpbmdWaWV3KG1fYXNjaWlCdWZm
ZXIuZGF0YSgpLCBtX3VybC5tX3NjaGVtZUVuZCkpKSB7Ci0gICAgY2FzZSBTY2hlbWU6OldTOgot
ICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVs
bHB0cjsKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBTY2hlbWU6OkZpbGU6Ci0gICAgICAgIG1fdXJsSXNGaWxlID0gdHJ1ZTsKLSAgICAg
ICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBTY2hlbWU6OkZUUDoKLSAgICBjYXNlIFNjaGVtZTo6
R29waGVyOgotICAgIGNhc2UgU2NoZW1lOjpIVFRQOgotICAgIGNhc2UgU2NoZW1lOjpIVFRQUzoK
LSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBTY2hlbWU6Ok5vblNwZWNpYWw6Ci0gICAgICAgIG1fdXJsSXNTcGVjaWFsID0gZmFsc2U7Ci0g
ICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIg
ZG90QVNDSUlDb2RlWzJdID0geycyJywgJ2UnfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6OmlzU2luZ2xlRG90UGF0aFNl
Z21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKLXsKLSAgICBpZiAoYy5h
dEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCpjID09ICcuJykgewotICAg
ICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMp
OwotICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hRdWVzdGlvbk9ySGFzaCgqYyk7
Ci0gICAgfQotICAgIGlmICgqYyAhPSAnJScpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBh
ZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAg
IGlmIChjLmF0RW5kKCkgfHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246
Ok5vPihjKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKSB7Ci0gICAgICAgIGFkdmFu
Y2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAgICAg
IHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgot
QUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQotewotICAgIGlmIChjLmF0RW5kKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKmMgPT0gJy4nKSB7Ci0gICAgICAgIGFkdmFu
Y2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAgICAg
IHJldHVybiBpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpOwotICAgIH0KLSAgICBpZiAoKmMgIT0g
JyUnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBS
ZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5hdEVuZCgpIHx8ICpjICE9
IGRvdEFTQ0lJQ29kZVswXSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAgaWYgKGMuYXRF
bmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICh0b0FTQ0lJTG93ZXIoKmMpID09
IGRvdEFTQ0lJQ29kZVsxXSkgewotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9y
dFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4gaXNTaW5nbGVEb3RQYXRo
U2VnbWVudChjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVTaW5nbGVEb3RQYXRo
U2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsKLSAgICBBU1NF
UlQoaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKSk7Ci0gICAgaWYgKCpjID09ICcuJykgewotICAg
ICAgICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkgewotICAgICAgICAgICAg
aWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAq
YyA9PSAnIycpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCpjID09
ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJ
SUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBBU1NFUlQodG9BU0NJSUxv
d2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAg
ICBpZiAoIWMuYXRFbmQoKSkgewotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAn
XFwnKQotICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJz
ZXI6OmNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSk7Ci0g
ICAgaWYgKCpjID09ICcuJykKLSAgICAgICAgYWR2YW5jZShjKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgIEFTU0VS
VCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBB
U1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAgICAgICBhZHZh
bmNlKGMpOwotICAgIH0KLSAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7Ci19Ci0K
LWJvb2wgVVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKHVuc2lnbmVkIG5ld1BhdGhBZnRlckxhc3RT
bGFzaCkKLXsKLSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgIGlmICgh
bV91cmxJc0ZpbGUpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgQVNTRVJUKG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKLSAgICBDb2RlUG9p
bnRJdGVyYXRvcjxMQ2hhcj4gY29tcG9uZW50VG9Qb3AoJm1fYXNjaWlCdWZmZXJbbmV3UGF0aEFm
dGVyTGFzdFNsYXNoXSwgJm1fYXNjaWlCdWZmZXJbMF0gKyBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCk7Ci0gICAgaWYgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9PSBtX3VybC5tX2hvc3RFbmQg
KyBtX3VybC5tX3BvcnRMZW5ndGggKyAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGNvbXBvbmVu
dFRvUG9wKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIFVSTFBhcnNlcjo6cG9wUGF0aCgpCi17Ci0gICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4Vmlv
bGF0aW9uKTsKLSAgICBpZiAobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5tX2hv
c3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxKSB7Ci0gICAgICAgIGF1dG8gbmV3UGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggLSAxOwotICAgICAgICBp
ZiAobV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdID09ICcvJykKLSAgICAgICAg
ICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaC0tOwotICAgICAgICB3aGlsZSAobmV3UGF0aEFmdGVy
TGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICYmIG1fYXNj
aWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSAhPSAnLycpCi0gICAgICAgICAgICBuZXdQ
YXRoQWZ0ZXJMYXN0U2xhc2gtLTsKLSAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoKys7Ci0g
ICAgICAgIGlmIChzaG91bGRQb3BQYXRoKG5ld1BhdGhBZnRlckxhc3RTbGFzaCkpCi0gICAgICAg
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG5ld1BhdGhBZnRlckxhc3RTbGFzaDsK
LSAgICB9Ci0gICAgbV9hc2NpaUJ1ZmZlci5yZXNpemUobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2gpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJz
ZXI6OnN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiYgaXRlcmF0b3IpCi17Ci0gICAgaWYgKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKQotICAgICAg
ICByZXR1cm47Ci0gICAgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwotICAgIAotICAg
IEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7Ci0gICAgc2l6ZV90IGNvZGVVbml0c1Rv
Q29weSA9IGl0ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hh
cmFjdGVyVHlwZSo+KG1faW5wdXRCZWdpbikpOwotICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVVbml0
c1RvQ29weSA8PSBtX2lucHV0U3RyaW5nLmxlbmd0aCgpKTsKLSAgICBtX2FzY2lpQnVmZmVyLnJl
c2VydmVDYXBhY2l0eShtX2lucHV0U3RyaW5nLmxlbmd0aCgpKTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvZGVVbml0c1RvQ29weTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVChpc0FTQ0lJ
KG1faW5wdXRTdHJpbmdbaV0pKTsKLSAgICAgICAgbV9hc2NpaUJ1ZmZlci51bmNoZWNrZWRBcHBl
bmQobV9pbnB1dFN0cmluZ1tpXSk7Ci0gICAgfQotfQotCi12b2lkIFVSTFBhcnNlcjo6ZmFpbHVy
ZSgpCi17Ci0gICAgbV91cmwuaW52YWxpZGF0ZSgpOwotICAgIG1fdXJsLm1fc3RyaW5nID0gbV9p
bnB1dFN0cmluZzsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wg
VVJMUGFyc2VyOjpjaGVja0xvY2FsaG9zdENvZGVQb2ludChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3IsIFVDaGFyMzIgY29kZVBvaW50KQotewotICAgIGlmIChpdGVy
YXRvci5hdEVuZCgpIHx8IHRvQVNDSUlMb3dlcigqaXRlcmF0b3IpICE9IGNvZGVQb2ludCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3lu
dGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OmlzQXRMb2NhbGhv
c3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgaWYg
KCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2wnKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdvJykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50
KGl0ZXJhdG9yLCAnYycpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xv
Y2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2EnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdsJykpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9y
LCAnaCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENv
ZGVQb2ludChpdGVyYXRvciwgJ28nKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgh
Y2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdzJykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAndCcpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7Ci19Ci0K
LWJvb2wgVVJMUGFyc2VyOjppc0xvY2FsaG9zdChTdHJpbmdWaWV3IHZpZXcpCi17Ci0gICAgaWYg
KHZpZXcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBpc0F0TG9jYWxob3N0KENvZGVQb2ludEl0
ZXJhdG9yPExDaGFyPih2aWV3LmNoYXJhY3RlcnM4KCksIHZpZXcuY2hhcmFjdGVyczgoKSArIHZp
ZXcubGVuZ3RoKCkpKTsKLSAgICByZXR1cm4gaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRv
cjxVQ2hhcj4odmlldy5jaGFyYWN0ZXJzMTYoKSwgdmlldy5jaGFyYWN0ZXJzMTYoKSArIHZpZXcu
bGVuZ3RoKCkpKTsKLX0KLQotQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IFVSTFBhcnNlcjo6cGFy
c2VkRGF0YVZpZXcoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGlmIChVTkxJ
S0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpIHsKLSAgICAgICAgQVNTRVJUKHN0YXJ0ICsg
bGVuZ3RoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZ1Zp
ZXcobV9hc2NpaUJ1ZmZlci5kYXRhKCkgKyBzdGFydCwgbGVuZ3RoKTsKLSAgICB9Ci0gICAgQVNT
RVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOwotICAgIHJldHVy
biBTdHJpbmdWaWV3KG1faW5wdXRTdHJpbmcpLnN1YnN0cmluZyhzdGFydCwgbGVuZ3RoKTsKLX0K
LQotQUxXQVlTX0lOTElORSBVQ2hhciBVUkxQYXJzZXI6OnBhcnNlZERhdGFWaWV3KHNpemVfdCBw
b3NpdGlvbikKLXsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQot
ICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlcltwb3NpdGlvbl07Ci0gICAgcmV0dXJuIG1faW5w
dXRTdHJpbmdbcG9zaXRpb25dOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PgotQUxXQVlTX0lOTElORSBzaXplX3QgVVJMUGFyc2VyOjpjdXJyZW50UG9zaXRpb24oY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQotewotICAgIGlmIChV
TkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCi0gICAgICAgIHJldHVybiBtX2FzY2lp
QnVmZmVyLnNpemUoKTsKLSAgICAKLSAgICByZXR1cm4gaXRlcmF0b3IuY29kZVVuaXRzU2luY2Uo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBDaGFyYWN0ZXJUeXBlKj4obV9pbnB1dEJlZ2luKSk7Ci19
Ci0KLVVSTFBhcnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQsIGNvbnN0IFVSTCYg
YmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNvZGluZykKLSAgICA6
IG1faW5wdXRTdHJpbmcoaW5wdXQpCi17Ci0gICAgaWYgKGlucHV0LmlzTnVsbCgpKSB7Ci0gICAg
ICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwpIHsKLSAg
ICAgICAgICAgIG1fdXJsID0gYmFzZTsKLSAgICAgICAgICAgIG1fdXJsLnJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcigpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoaW5wdXQuaXM4Qml0KCkpIHsKLSAgICAgICAgbV9pbnB1dEJlZ2luID0gaW5wdXQuY2hhcmFj
dGVyczgoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczgoKSwgaW5wdXQubGVuZ3Ro
KCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICB9IGVsc2UgewotICAgICAgICBt
X2lucHV0QmVnaW4gPSBpbnB1dC5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQu
Y2hhcmFjdGVyczE2KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX3VybC5tX2lzVmFsaWQKLSAgICAgICAgfHwgbV9k
aWRTZWVTeW50YXhWaW9sYXRpb24gPT0gKG1fdXJsLnN0cmluZygpICE9IGlucHV0KQotICAgICAg
ICB8fCAoaW5wdXQuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0MwQ29udHJvbE9yU3BhY2U+KCkK
LSAgICAgICAgICAgICYmIG1fdXJsLm1fc3RyaW5nID09IGJhc2UubV9zdHJpbmcubGVmdChiYXNl
Lm1fcXVlcnlFbmQpKSk7Ci0gICAgQVNTRVJUKGludGVybmFsVmFsdWVzQ29uc2lzdGVudChtX3Vy
bCkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpZiAoIW1fZGlkU2VlU3ludGF4VmlvbGF0
aW9uKSB7Ci0gICAgICAgIC8vIEZvcmNlIGEgc3ludGF4IHZpb2xhdGlvbiBhdCB0aGUgYmVnaW5u
aW5nIHRvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0LgotICAgICAgICBVUkxQYXJz
ZXIgcGFyc2VyKG1ha2VTdHJpbmcoIiAiLCBpbnB1dCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29k
aW5nKTsKLSAgICAgICAgVVJMIHBhcnNlZCA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgaWYg
KHBhcnNlZC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBBU1NFUlQoYWxsVmFsdWVzRXF1YWwocGFy
c2VyLnJlc3VsdCgpLCBtX3VybCkpOwotICAgIH0KLSNlbmRpZgotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3Rl
clR5cGUqIGlucHV0LCBjb25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYgYmFzZSwgY29u
c3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNvZGluZykKLXsKLSAgICBVUkxfUEFS
U0VSX0xPRygiUGFyc2luZyBVUkwgPCVzPiBiYXNlIDwlcz4iLCBTdHJpbmcoaW5wdXQsIGxlbmd0
aCkudXRmOCgpLmRhdGEoKSwgYmFzZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX3Vy
bCA9IHsgfTsKLSAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwotCi0gICAgVmVj
dG9yPFVDaGFyPiBxdWVyeUJ1ZmZlcjsKLQotICAgIHVuc2lnbmVkIGVuZEluZGV4ID0gbGVuZ3Ro
OwotICAgIHdoaWxlIChVTkxJS0VMWShlbmRJbmRleCAmJiBpc0MwQ29udHJvbE9yU3BhY2UoaW5w
dXRbZW5kSW5kZXggLSAxXSkpKSB7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihpbnB1dCwgaW5wdXQpKTsKLSAgICAgICAgZW5kSW5kZXgt
LTsKLSAgICB9Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYyhpbnB1dCwg
aW5wdXQgKyBlbmRJbmRleCk7Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
YXV0aG9yaXR5T3JIb3N0QmVnaW47Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4gcXVlcnlCZWdpbjsKLSAgICB3aGlsZSAoVU5MSUtFTFkoIWMuYXRFbmQoKSAmJiBpc0MwQ29u
dHJvbE9yU3BhY2UoKmMpKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICsrYzsKLSAgICB9Ci0gICAgYXV0byBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlID0gYzsKLQot
ICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKLSAgICAgICAgU2NoZW1lU3RhcnQsCi0g
ICAgICAgIFNjaGVtZSwKLSAgICAgICAgTm9TY2hlbWUsCi0gICAgICAgIFNwZWNpYWxSZWxhdGl2
ZU9yQXV0aG9yaXR5LAotICAgICAgICBQYXRoT3JBdXRob3JpdHksCi0gICAgICAgIFJlbGF0aXZl
LAotICAgICAgICBSZWxhdGl2ZVNsYXNoLAotICAgICAgICBTcGVjaWFsQXV0aG9yaXR5U2xhc2hl
cywKLSAgICAgICAgU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMsCi0gICAgICAgIEF1dGhv
cml0eU9ySG9zdCwKLSAgICAgICAgSG9zdCwKLSAgICAgICAgRmlsZSwKLSAgICAgICAgRmlsZVNs
YXNoLAotICAgICAgICBGaWxlSG9zdCwKLSAgICAgICAgUGF0aFN0YXJ0LAotICAgICAgICBQYXRo
LAotICAgICAgICBDYW5ub3RCZUFCYXNlVVJMUGF0aCwKLSAgICAgICAgVVRGOFF1ZXJ5LAotICAg
ICAgICBOb25VVEY4UXVlcnksCi0gICAgICAgIEZyYWdtZW50LAotICAgIH07Ci0KLSNkZWZpbmUg
TE9HX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJTdGF0ZSAlcywgY29kZSBwb2ludCAlYywgcGFy
c2VkIGRhdGEgPCVzPiBzaXplICV6dSIsIHgsICpjLCBwYXJzZWREYXRhVmlldygwLCBjdXJyZW50
UG9zaXRpb24oYykpLnV0ZjgoKS5kYXRhKCksIGN1cnJlbnRQb3NpdGlvbihjKSkKLSNkZWZpbmUg
TE9HX0ZJTkFMX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJGaW5hbCBTdGF0ZTogJXMiLCB4KQot
Ci0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6U2NoZW1lU3RhcnQ7Ci0gICAgd2hpbGUgKCFjLmF0
RW5kKCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCpjKSkpIHsKLSAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICsrYzsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAg
ICAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKLSAgICAgICAgICAgIExPR19TVEFURSgiU2No
ZW1lU3RhcnQiKTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoKmMpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQotICAgICAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwotICAg
ICAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hc2Np
aUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1Nj
aGVtZTsKLSAgICAgICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTY2hlbWU7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlNjaGVt
ZSIpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWRTY2hlbWVDaGFyYWN0ZXIoKmMpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQotICAgICAgICAgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0g
JzonKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgc2NoZW1lRW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChzY2hlbWVFbmQgPiBVUkw6Om1heFNjaGVtZUxl
bmd0aCkgewotICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV91cmwubV9z
Y2hlbWVFbmQgPSBzY2hlbWVFbmQ7Ci0gICAgICAgICAgICAgICAgU3RyaW5nVmlldyB1cmxTY2hl
bWUgPSBwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCk7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgICAgIHN3aXRjaCAoc2No
ZW1lKHVybFNjaGVtZSkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RmlsZToKLSAg
ICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICBtX3VybElzRmlsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OkZpbGU7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OldTOgotICAgICAgICAgICAgICAg
IGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgICAgICAgICAgICAgIG5vblVURjhRdWVyeUVuY29k
aW5nID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVl
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5wcm90b2NvbElzKHVybFNjaGVtZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1
dGhvcml0eTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM7Ci0gICAgICAgICAgICAg
ICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBTY2hlbWU6OkhUVFA6Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFBTOgot
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSB0cnVl
OwotICAgICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgICAgICAgICBjYXNl
IFNjaGVtZTo6RlRQOgotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpHb3BoZXI6Ci0gICAg
ICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGJhc2UucHJvdG9jb2xJcyh1cmxTY2hlbWUpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7Ci0gICAgICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNw
ZWNpYWxBdXRob3JpdHlTbGFzaGVzOwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpOb25TcGVj
aWFsOgotICAgICAgICAgICAgICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbWF5YmVTbGFzaCA9IGM7Ci0gICAgICAgICAgICAg
ICAgICAgIGFkdmFuY2UobWF5YmVTbGFzaCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbWF5
YmVTbGFzaC5hdEVuZCgpICYmICptYXliZVNsYXNoID09ICcvJykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYyA9IG1heWJlU2xhc2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpQYXRoT3JBdXRob3JpdHk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoKmMgPT0g
Jy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X2Nhbm5vdEJlQUJhc2VVUkwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2FzY2lp
QnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7
Ci0gICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhZHZhbmNlKGMpOwot
ICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgewotICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZm
ZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAg
ICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xBbmRTcGFjZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpOb1NjaGVtZToKLSAg
ICAgICAgICAgIExPR19TVEFURSgiTm9TY2hlbWUiKTsKLSAgICAgICAgICAgIGlmICghYmFzZS5p
c1ZhbGlkKCkgfHwgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpjICE9ICcjJykpIHsKLSAg
ICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpjID09
ICcjJykgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6
OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignIycpOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsK
LSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJh
c2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6RmlsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpTcGVjaWFs
UmVsYXRpdmVPckF1dGhvcml0eToKLSAgICAgICAgICAgIExPR19TVEFURSgiU3BlY2lhbFJlbGF0
aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsKLSAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgYWR2YW5j
ZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICAgICAg
ICAgICsrYzsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKLSAgICAgICAgICAgIExPR19TVEFURSgi
UGF0aE9yQXV0aG9yaXR5Iik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nKSB7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwot
ICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwot
ICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3Np
dGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQg
PSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGgg
PSAwOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwu
bV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6UmVs
YXRpdmU6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlJlbGF0aXZlIik7Ci0gICAgICAgICAgICBz
d2l0Y2ggKCpjKSB7Ci0gICAgICAgICAgICBjYXNlICcvJzoKLSAgICAgICAgICAgIGNhc2UgJ1xc
JzoKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZVNsYXNoOwotICAgICAg
ICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
Jz8nOgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBh
dGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAg
IGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICBxdWVyeUJl
Z2luID0gYzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5
OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpVVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
ICcjJzoKLSAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpR
dWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoJyMnKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFn
bWVudDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2Us
IFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwot
ICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24oYykgJiYgcGFyc2VkRGF0YVZpZXco
Y3VycmVudFBvc2l0aW9uKGMpIC0gMSkgIT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0
ZTo6UmVsYXRpdmVTbGFzaDoKLSAgICAgICAgICAgIExPR19TVEFURSgiUmVsYXRpdmVTbGFzaCIp
OwotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSB7Ci0gICAgICAgICAg
ICAgICAgKytjOwotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBh
cnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoIjovLyIsIDMpOwotICAgICAgICAgICAgICAgIGlmIChtX3Vy
bElzU3BlY2lhbCkKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Ci0gICAgICAgICAg
ICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJh
c2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3Ro
ICsgMTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3Jp
dHlTbGFzaGVzOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5U2xhc2hl
cyIpOwotICAgICAgICAgICAgaWYgKExJS0VMWSgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpIHsK
LSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykpCi0gICAgICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAg
ICBpZiAoTElLRUxZKCFjLmF0RW5kKCkgJiYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICdcXCcpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICAr
K2M7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
Yyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLyIs
IDIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
dGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6Ci0gICAgICAgICAgICBMT0dfU1RB
VEUoIlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzIik7Ci0gICAgICAgICAgICBpZiAoKmMg
PT0gJy8nIHx8ICpjID09ICdcXCcpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
Yyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Ci0gICAgICAgICAgICAgICAg
YXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0eU9ySG9zdDoKLSAgICAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkF1dGhvcml0eU9ySG9zdCIpOwotICAgICAg
ICAgICAgICAgIGlmICgqYyA9PSAnQCcpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBsYXN0
QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICBhdXRvIGZpbmRMYXN0QXQgPSBjOwotICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAoIWZpbmRMYXN0QXQuYXRFbmQoKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgVVJMX1BBUlNFUl9MT0coIkZpbmRpbmcgbGFzdCBAOiAlYyIsICpmaW5kTGFz
dEF0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZmluZExhc3RBdCA9PSAnQCcpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEF0ID0gZmluZExhc3RBdDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNTbGFzaCA9ICpmaW5kTGFzdEF0ID09ICcvJyB8fCAobV91
cmxJc1NwZWNpYWwgJiYgKmZpbmRMYXN0QXQgPT0gJ1xcJyk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNTbGFzaCB8fCAqZmluZExhc3RBdCA9PSAnPycgfHwgKmZpbmRMYXN0QXQgPT0g
JyMnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgKytmaW5kTGFzdEF0OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIHBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBsYXN0QXQpKTsKLSAgICAgICAgICAgICAgICAgICAgYyA9
IGxhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAg
ICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpIb3N0OwotICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JO
b25BU0NJSSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1NsYXNoID0gKmMgPT0gJy8nIHx8IChtX3Vy
bElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKTsKLSAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8
fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gaXRl
cmF0b3IgPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RC
ZWdpbiwgYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJFbmQ7Ci0g
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVu
ZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChpdGVyYXRv
cikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc1NsYXNoKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6UGF0aDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJKCpjKSkKLSAgICAgICAg
ICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICsrYzsKLSAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Okhvc3Q6Ci0gICAgICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJIb3N0Iik7Ci0gICAgICAgICAgICAgICAgaWYgKCpj
ID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihh
dXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWls
dXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlBhdGg7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAgICAg
ICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICArK2M7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJG
aWxlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAgICAgICBjYXNlICdcXCc6
Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIEZB
TExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGVT
bGFzaDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlICc/JzoKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmls
ZSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBh
cnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcigiLy8vPyIsIDQpOwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMjsKLSAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3Rh
cnQgKyAxOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYg
KG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4g
PSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJyMn
OgotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBp
ZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMs
IG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyMiLCA0KTsKLSAgICAgICAgICAgICAgICAgICAg
bV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAyOwotICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OkZyYWdtZW50OwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiBiYXNl
LnByb3RvY29sSXMoImZpbGUiKSAmJiBzaG91bGRDb3B5RmlsZVVSTChjKSkKLSAgICAgICAgICAg
ICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNs
YXNoLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyIsIDMpOwotICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7
Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNl
clN0YXJ0ICsgMTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVy
KGMpKQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRo
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAgICAgICAgIExPR19TVEFU
RSgiRmlsZVNsYXNoIik7Ci0gICAgICAgICAgICBpZiAoTElLRUxZKCpjID09ICcvJyB8fCAqYyA9
PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnXFwnKSkKLSAg
ICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwotICAg
ICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAg
ICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAg
ICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAg
ICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgIGF1dGhvcml0
eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlSG9z
dDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwg
Mik7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAt
IDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAg
ICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAg
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxl
dHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsK
LSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNl
clN0YXJ0ICsgMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVM
ZXR0ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7
Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3Vz
ZXJTdGFydCArIDQ7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
dGF0ZTo6RmlsZUhvc3Q6Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgTE9HX1NU
QVRFKCJGaWxlSG9zdCIpOwotICAgICAgICAgICAgICAgIGlmIChpc1NsYXNoUXVlc3Rpb25Pckhh
c2goKmMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgd2luZG93c1F1aXJrID0gdGFrZXNU
d29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhv
cml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzV2luZG93
c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHdpbmRvd3NRdWlyaykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRv
d3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyayB8fCBhdXRob3JpdHlPckhv
c3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQod2luZG93c1F1
aXJrIHx8IHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJz8nKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvPyIsIDIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVl
cnlCZWdpbiA9IGM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6Ok5vblVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5Owot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
Y3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnIycpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8jIiwgMik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoaXNMb2NhbGhvc3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVu
ZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91cmwubV9wYXNzd29yZEVuZCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpQYXRoU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJSSgq
YykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpQYXRoU3RhcnQ6Ci0g
ICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAgICAgICAgaWYgKCpjICE9
ICcvJyAmJiAqYyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpQYXRoOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJQ
YXRoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAq
YyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtX3VybElzU3BlY2lh
bCAmJiAqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoY3VycmVudFBvc2l0aW9uKGMpICYmIHBhcnNlZERh
dGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJykpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoaXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICBjb25zdW1l
RG91YmxlRG90UGF0aFNlZ21lbnQoYyk7Ci0gICAgICAgICAgICAgICAgICAgIHBvcFBhdGgoKTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpKSkgewotICAgICAg
ICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCpjID09
ICc/JykgewotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAg
ICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykg
ewotICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7
Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwot
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luRGVm
YXVsdEVuY29kZVNldD4oYyk7Ci0gICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6Ci0gICAgICAgICAgICBM
T0dfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0g
Jz8nKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9u
KGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKLSAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21l
bnQ7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcvJykgewotICAgICAgICAgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2Rl
PGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpVVEY4UXVlcnk6
Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlVURjhRdWVyeSIpOwotICAgICAgICAgICAgQVNTRVJU
KHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7Ci0gICAg
ICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpG
cmFnbWVudDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIEFTU0VSVCghbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgdXRmOFF1ZXJ5
RW5jb2RlKGMpOwotICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAg
ICAgICBMT0dfU1RBVEUoIk5vblVURjhRdWVyeSIpOwotICAgICAgICAgICAgICAgIEFTU0VSVChx
dWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOwotICAgICAg
ICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAgZW5jb2RlTm9u
VVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhcHBlbmRDb2RlUG9pbnQocXVl
cnlCdWZmZXIsICpjKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMsIHF1ZXJ5QmVnaW4pOwot
ICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAgICAgICAgICBVUkxfUEFSU0VSX0xPRygi
U3RhdGUgRnJhZ21lbnQiKTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1w
bGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgY2FzZSBTdGF0ZTo6
U2NoZW1lU3RhcnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAg
ICAgICAgaWYgKCFjdXJyZW50UG9zaXRpb24oYykgJiYgYmFzZS5pc1ZhbGlkKCkgJiYgIWJhc2Uu
bV9jYW5ub3RCZUFCYXNlVVJMKSB7Ci0gICAgICAgICAgICBtX3VybCA9IGJhc2U7Ci0gICAgICAg
ICAgICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU2NoZW1lIik7Ci0g
ICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgU3RhdGU6Ok5vU2No
ZW1lOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5vU2NoZW1lIik7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZl
T3JBdXRob3JpdHk6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JB
dXRob3JpdHkiKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVl
cnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlBhdGhP
ckF1dGhvcml0eSIpOwotICAgICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQpOwotICAgICAg
ICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQgPT0gY3VycmVudFBvc2l0aW9uKGMpKTsKLSAgICAg
ICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7
Ci0gICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0LS07Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgbV91cmwubV9w
YXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVl
cnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiUmVsYXRpdmUi
KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBjYXNlIFN0YXRl
OjpSZWxhdGl2ZVNsYXNoOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlJlbGF0aXZlU2xhc2gi
KTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9ydEVuZCwgYywg
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7
Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsg
bV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6U3Bl
Y2lhbEF1dGhvcml0eVNsYXNoZXM6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbEF1
dGhvcml0eVNsYXNoZXMiKTsKLSAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9z
aXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owot
ICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczoK
LSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcyIp
OwotICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFN0YXRlOjpB
dXRob3JpdHlPckhvc3Q6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiQXV0aG9yaXR5T3JIb3N0
Iik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihhdXRob3JpdHlP
ckhvc3RCZWdpbik7Ci0gICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJF
bmQ7Ci0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdpbi5hdEVuZCgpKSB7Ci0gICAgICAg
ICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1f
dXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICB9IGVsc2UgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9z
dEJlZ2luKSkgewotICAgICAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKSB7Ci0gICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91
cmwubV9wb3J0TGVuZ3RoOwotICAgICAgICB9Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91
cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpIb3N0OgotICAg
ICAgICBMT0dfRklOQUxfU1RBVEUoIkhvc3QiKTsKLSAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQ
b3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgZmFpbHVyZSgpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkg
ewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9o
b3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5n
dGg7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoRW5k
OwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZp
bGUiKTsKLSAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmls
ZSIpKSB7Ci0gICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVy
eUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCIvLy8iLCAzKTsKLSAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9z
aXRpb24oYykgLSAxOwotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAg
ICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBt
X3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OkZpbGVT
bGFzaDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlU2xhc2giKTsKLSAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOwotICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3Np
dGlvbihjKSArIDE7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7Ci0gICAg
ICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwot
ICAgICAgICBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKLSAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0OwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQg
KyAxOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGaWxlSG9zdDoKLSAgICAgICAgTE9H
X0ZJTkFMX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICBpZiAodGFrZXNUd29BZHZhbmNlc1Vu
dGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJl
Z2luLCBjKSkKLSAgICAgICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9y
SG9zdEJlZ2luKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9z
dEJlZ2luKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAg
ICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsK
LSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
OwotICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlm
IChhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oYyk7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAg
ICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAg
ICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJs
Lm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwu
bV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAgICAgICBmYWlsdXJlKCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzeW50YXhWaW9sYXRp
b24oYyk7Ci0gICAgICAgIGlmIChpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bh
c3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpIHsK
LSAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwot
ICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgfQotICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1f
cXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlBhdGhT
dGFydCIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIGNhc2Ug
U3RhdGU6OlBhdGg6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiUGF0aCIpOwotICAgICAgICBt
X3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fcXVl
cnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6
OkNhbm5vdEJlQUJhc2VVUkxQYXRoOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkNhbm5vdEJl
QUJhc2VVUkxQYXRoIik7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgotICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIlVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiA9PSBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6Tm9u
VVRGOFF1ZXJ5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5vblVURjhRdWVyeSIpOwotICAg
ICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PigpKTsKLSAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4s
IGMpKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAgICAgIExPR19GSU5B
TF9TVEFURSgiRnJhZ21lbnQiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKExJ
S0VMWSghbV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKSB7Ci0gICAgICAgIG1fdXJsLm1fc3RyaW5n
ID0gbV9pbnB1dFN0cmluZzsKLSAgICAgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgp
KTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV91cmwubV9zdHJpbmcgPSBTdHJpbmc6OmFkb3B0KFdU
Rk1vdmUobV9hc2NpaUJ1ZmZlcikpOwotICAgIG1fdXJsLm1faXNWYWxpZCA9IHRydWU7Ci0gICAg
VVJMX1BBUlNFUl9MT0coIlBhcnNlZCBVUkwgPCVzPiIsIG1fdXJsLm1fc3RyaW5nLnV0ZjgoKS5k
YXRhKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQ
YXJzZXI6OnBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0
ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBj
dXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
bV91cmwubV91c2VyRW5kOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAoOyAhaXRl
cmF0b3IuYXRFbmQoKTsgYWR2YW5jZShpdGVyYXRvcikpIHsKLSAgICAgICAgaWYgKCppdGVyYXRv
ciA9PSAnOicpIHsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlv
bihpdGVyYXRvcik7Ci0gICAgICAgICAgICBhdXRvIGl0ZXJhdG9yQXRDb2xvbiA9IGl0ZXJhdG9y
OwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJvb2wgdGFiT3JOZXdsaW5l
QWZ0ZXJDb2xvbiA9IGZhbHNlOwotICAgICAgICAgICAgd2hpbGUgKFVOTElLRUxZKCFpdGVyYXRv
ci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgICAgICAg
ICAgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgKytpdGVy
YXRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5h
dEVuZCgpKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckF0Q29s
b24pOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJF
bmQ7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdXJsLm1fdXNlckVuZCA+IG1fdXJsLm1fdXNlclN0
YXJ0KQotICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdAJyk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHRhYk9y
TmV3bGluZUFmdGVyQ29sb24pCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yQXRDb2xvbik7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxXZWJD
b3JlOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKLSAgICB9Ci0gICAgZm9yICg7
ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkKLSAgICAgICAgdXRmOFBlcmNl
bnRFbmNvZGU8V2ViQ29yZTo6aXNJblVzZXJJbmZvRW5jb2RlU2V0PihpdGVyYXRvcik7Ci0gICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgaWYg
KCFtX3VybC5tX3VzZXJFbmQpCi0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fcGFz
c3dvcmRFbmQ7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignQCcpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmFwcGVuZE51bWJl
clRvQVNDSUlCdWZmZXIoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpCi17Ci0gICAgTENoYXIg
YnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMgKyAxXTsKLSAgICBMQ2hhciogZW5k
ID0gc3RkOjplbmQoYnVmKTsKLSAgICBMQ2hhciogcCA9IGVuZDsKLSAgICBkbyB7Ci0gICAgICAg
ICotLXAgPSAobnVtYmVyICUgMTApICsgJzAnOwotICAgICAgICBudW1iZXIgLz0gMTA7Ci0gICAg
fSB3aGlsZSAobnVtYmVyKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHAsIGVuZCAtIHApOwot
fQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyBhZGRyZXNzKQot
ewotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAyNCk7
Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVuZE51bWJlclRvQVNDSUlC
dWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAxNik7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LicpOwotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiA4
KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7Ci0gICAgYXBwZW5kTnVtYmVyVG9BU0NJ
SUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzKTsKLX0KLSAgICAKLXN0YXRpYyBzaXplX3QgemVyb1Nl
cXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzLCBzaXpl
X3QgYmVnaW4pCi17Ci0gICAgc2l6ZV90IGVuZCA9IGJlZ2luOwotICAgIGZvciAoOyBlbmQgPCA4
OyBlbmQrKykgewotICAgICAgICBpZiAoYWRkcmVzc1tlbmRdKQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIHJldHVybiBlbmQgLSBiZWdpbjsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShjb25zdCBzdGQ6OmFycmF5PHVpbnQx
Nl90LCA4PiYgYWRkcmVzcykKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbG9uZ2VzdDsK
LSAgICBzaXplX3QgbG9uZ2VzdExlbmd0aCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCA4OyBpKyspIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHplcm9TZXF1ZW5jZUxlbmd0aChh
ZGRyZXNzLCBpKTsKLSAgICAgICAgaWYgKGxlbmd0aCkgewotICAgICAgICAgICAgaWYgKGxlbmd0
aCA+IDEgJiYgKCFsb25nZXN0IHx8IGxvbmdlc3RMZW5ndGggPCBsZW5ndGgpKSB7Ci0gICAgICAg
ICAgICAgICAgbG9uZ2VzdCA9IGk7Ci0gICAgICAgICAgICAgICAgbG9uZ2VzdExlbmd0aCA9IGxl
bmd0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkgKz0gbGVuZ3RoOwotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiBsb25nZXN0OwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFs
aXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKQotewotICAgIGJvb2wgcHJpbnRlZCA9IGZhbHNl
OwotICAgIGlmIChhdXRvIG5pYmJsZTAgPSBwaWVjZSA+PiAxMikgewotICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTAp
KTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQotICAgIGF1dG8gbmliYmxlMSA9IHBp
ZWNlID4+IDggJiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMSkgewotICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5p
YmJsZTEpKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQotICAgIGF1dG8gbmliYmxl
MiA9IHBpZWNlID4+IDQgJiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMikKLSAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdp
dChuaWJibGUyKSk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJj
YXNlQVNDSUlIZXhEaWdpdChwaWVjZSAmIDB4RikpOwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2Vy
aWFsaXplSVB2NihVUkxQYXJzZXI6OklQdjZBZGRyZXNzIGFkZHJlc3MpCi17Ci0gICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignWycpOwotICAgIGF1dG8gY29tcHJlc3NQb2ludGVyID0gZmluZExvbmdl
c3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7Ci0gICAgZm9yIChzaXplX3QgcGllY2UgPSAwOyBwaWVj
ZSA8IDg7IHBpZWNlKyspIHsKLSAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBjb21wcmVz
c1BvaW50ZXIudmFsdWUoKSA9PSBwaWVjZSkgewotICAgICAgICAgICAgQVNTRVJUKCFhZGRyZXNz
W3BpZWNlXSk7Ci0gICAgICAgICAgICBpZiAocGllY2UpCi0gICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoIjo6IiwgMik7Ci0gICAgICAgICAgICB3aGlsZSAocGllY2UgPCA4
ICYmICFhZGRyZXNzW3BpZWNlXSkKLSAgICAgICAgICAgICAgICBwaWVjZSsrOwotICAgICAgICAg
ICAgaWYgKHBpZWNlID09IDgpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgc2VyaWFsaXplSVB2NlBpZWNlKGFkZHJlc3NbcGllY2VdKTsKLSAgICAgICAgaWYgKHBp
ZWNlIDwgNykKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKLSAgICB9Ci0g
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignXScpOwotfQotCi1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6
SVB2NFBpZWNlUGFyc2luZ0Vycm9yIHsKLSAgICBGYWlsdXJlLAotICAgIE92ZXJmbG93LAotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVjdGVkPHVpbnQzMl90LCBV
UkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVj
ZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGJvb2wmIGRpZFNl
ZVN5bnRheFZpb2xhdGlvbikKLXsKLSAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7Ci0g
ICAgICAgIFVua25vd25CYXNlLAotICAgICAgICBEZWNpbWFsLAotICAgICAgICBPY3RhbE9ySGV4
LAotICAgICAgICBPY3RhbCwKLSAgICAgICAgSGV4LAotICAgIH07Ci0gICAgU3RhdGUgc3RhdGUg
PSBTdGF0ZTo6VW5rbm93bkJhc2U7Ci0gICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZs
b3c+IHZhbHVlID0gMDsKLSAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09
ICcuJykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJv
cjo6RmFpbHVyZSk7Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgIGlm
IChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7Ci0gICAgICAgICAgICBkaWRTZWVTeW50YXhW
aW9sYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJy4nKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gdmFsdWUudW5zYWZlR2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChzdGF0ZSkg
ewotICAgICAgICBjYXNlIFN0YXRlOjpVbmtub3duQmFzZToKLSAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSgqaXRlcmF0b3IgPT0gJzAnKSkgewotICAgICAgICAgICAgICAgICsraXRlcmF0b3I7Ci0g
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6T2N0YWxPckhleDsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkRlY2lt
YWw7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6T2N0YWxPckhleDoK
LSAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICBp
ZiAoKml0ZXJhdG9yID09ICd4JyB8fCAqaXRlcmF0b3IgPT0gJ1gnKSB7Ci0gICAgICAgICAgICAg
ICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIZXg7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpPY3RhbDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpEZWNp
bWFsOgotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWls
dXJlKTsKLSAgICAgICAgICAgIHZhbHVlICo9IDEwOwotICAgICAgICAgICAgdmFsdWUgKz0gKml0
ZXJhdG9yIC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93
ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBh
cnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpPY3RhbDoKLSAgICAgICAgICAgIEFTU0VS
VChkaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAgICAgICAgaWYgKCppdGVyYXRvciA8ICcw
JyB8fCAqaXRlcmF0b3IgPiAnNycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgICAgICB2YWx1ZSAq
PSA4OwotICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICAgICAg
aWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAg
ICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0
YXRlOjpIZXg6Ci0gICAgICAgICAgICBBU1NFUlQoZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKLSAg
ICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KCppdGVyYXRvcikpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7
Ci0gICAgICAgICAgICB2YWx1ZSAqPSAxNjsKLSAgICAgICAgICAgIHZhbHVlICs9IHRvQVNDSUlI
ZXhWYWx1ZSgqaXRlcmF0b3IpOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092
ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQ
aWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIEFTU0VSVCghdmFsdWUuaGFz
T3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Ci19Ci0KLUFMV0FZ
U19JTkxJTkUgc3RhdGljIHVpbnQ2NF90IHBvdzI1NihzaXplX3QgZXhwb25lbnQpCi17Ci0gICAg
UkVMRUFTRV9BU1NFUlQoZXhwb25lbnQgPD0gNCk7Ci0gICAgdWludDY0X3QgdmFsdWVzWzVdID0g
ezEsIDI1NiwgMjU2ICogMjU2LCAyNTYgKiAyNTYgKiAyNTYsIDI1NnVsbCAqIDI1NiAqIDI1NiAq
IDI1NiB9OwotICAgIHJldHVybiB2YWx1ZXNbZXhwb25lbnRdOwotfQotCi1lbnVtIGNsYXNzIFVS
TFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvciB7Ci0gICAgRmFpbHVyZSwKLSAgICBOb3RJUHY0LAot
fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbiwg
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVjdGVkPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3Ms
IFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQdjRIb3N0KGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24+JiBp
dGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBWZWN0b3I8RXhwZWN0ZWQ8dWludDMyX3QsIFVS
TFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiwgND4gaXRlbXM7Ci0gICAgYm9vbCBkaWRT
ZWVTeW50YXhWaW9sYXRpb24gPSBmYWxzZTsKLSAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYg
Kml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJz
aW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewotICAg
ICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkgewotICAgICAgICAgICAgZGlkU2Vl
U3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICsraXRlcmF0b3I7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXRlbXMuc2l6ZSgpID49IDQp
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90
SVB2NCk7Ci0gICAgICAgIGl0ZW1zLmFwcGVuZChwYXJzZUlQdjRQaWVjZShpdGVyYXRvciwgZGlk
U2VlU3ludGF4VmlvbGF0aW9uKSk7Ci0gICAgICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAmJiAq
aXRlcmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICArK2l0ZXJhdG9yOwotICAgICAgICAgICAg
aWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0
ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICAgICAgZWxzZSBpZiAo
Kml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
SVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCFp
dGVyYXRvci5hdEVuZCgpIHx8ICFpdGVtcy5zaXplKCkgfHwgaXRlbXMuc2l6ZSgpID4gNCkKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwot
ICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgIGlmICghaXRlbS5o
YXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWls
dXJlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6
Ok5vdElQdjQpOwotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBpdGVtcykgewot
ICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQaWVj
ZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgfQotICAgIGlmIChpdGVtcy5zaXpl
KCkgPiAxKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpIC0g
MTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoaXRlbXNbaV0udmFsdWUoKSA+IDI1NSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVy
ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGl0ZW1zW2l0ZW1zLnNpemUoKSAtIDFdLnZh
bHVlKCkgPj0gcG93MjU2KDUgLSBpdGVtcy5zaXplKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0KLSAgICBpZiAoZGlkU2VlU3lu
dGF4VmlvbGF0aW9uKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhW
aW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsK
LSAgICAgICAgaWYgKGl0ZW0udmFsdWUoKSA+IDI1NSkKLSAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICB9Ci0KLSAgICBp
ZiAoVU5MSUtFTFkoaXRlbXMuc2l6ZSgpICE9IDQpKQotICAgICAgICBzeW50YXhWaW9sYXRpb24o
aXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0KLSAgICBJUHY0QWRkcmVzcyBp
cHY0ID0gaXRlbXMudGFrZUxhc3QoKS52YWx1ZSgpOwotICAgIGZvciAoc2l6ZV90IGNvdW50ZXIg
PSAwOyBjb3VudGVyIDwgaXRlbXMuc2l6ZSgpOyArK2NvdW50ZXIpCi0gICAgICAgIGlwdjQgKz0g
aXRlbXNbY291bnRlcl0udmFsdWUoKSAqIHBvdzI1NigzIC0gY291bnRlcik7Ci0gICAgcmV0dXJu
IGlwdjQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgaWYgKGl0ZXJhdG9y
LmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgdWludDMyX3QgcGll
Y2UgPSAwOwotICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7Ci0gICAgc2l6ZV90IGRpZ2l0
Q291bnQgPSAwOwotICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBpZiAo
IWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICAgICAgKytkaWdpdENvdW50OwotICAgICAgICBpZiAoIXBpZWNlICYmICppdGVyYXRv
ciA9PSAnMCcpIHsKLSAgICAgICAgICAgIGlmIChsZWFkaW5nWmVyb3MpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0gJzAnKQotICAg
ICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgcGllY2UgPSBwaWVjZSAqIDEw
ICsgKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICBpZiAocGllY2UgPiAyNTUpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJl
cG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9y
LmF0RW5kKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAn
LicpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKHBpZWNlICYmIGxlYWRpbmda
ZXJvcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gcGllY2U7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGQ6Om9wdGlvbmFsPFVSTFBh
cnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgSVB2NEFk
ZHJlc3MgYWRkcmVzcyA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyArK2kpIHsK
LSAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBpZWNlID0gcGFyc2VJUHY0UGll
Y2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKLSAgICAgICAgICAgIGFkZHJlc3MgPSAoYWRkcmVzcyA8
PCA4KSArIHBpZWNlLnZhbHVlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmIChpIDwgMykgewotICAgICAgICAgICAgaWYgKGl0ZXJh
dG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAg
ICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4nKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAgICAgfSBlbHNlIGlmICghaXRlcmF0b3Iu
YXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIEFT
U0VSVChpdGVyYXRvci5hdEVuZCgpKTsKLSAgICByZXR1cm4gYWRkcmVzczsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2
QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+IGMpCi17Ci0gICAgQVNTRVJUKCpjID09ICdbJyk7Ci0gICAgY29uc3QgYXV0byBo
b3N0QmVnaW4gPSBjOwotICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICBpZiAoYy5hdEVu
ZCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgSVB2NkFkZHJlc3MgYWRk
cmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19OwotICAgIHNpemVfdCBwaWVjZVBvaW50
ZXIgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb21wcmVzc1BvaW50ZXI7Ci0KLSAg
ICBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICAg
ICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgIGlmICgqYyAhPSAnOicpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
ICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7Ci0gICAgICAgICsrcGllY2VQb2ludGVyOwotICAg
ICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7Ci0gICAgfQotICAgIAotICAgIHdo
aWxlICghYy5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCkKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICgqYyA9PSAnOicpIHsKLSAg
ICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICAgICAg
ICAgICsrcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29tcHJlc3NQb2ludGVyID0gcGllY2VQ
b2ludGVyOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBp
ZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2ludGVyIDwgNikp
IHsKLSAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBpcHY0QWRkcmVz
cyA9IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPT0gNSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
aG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlw
djRBZGRyZXNzLnZhbHVlKCkgPj4gMTY7Ci0gICAgICAgICAgICAgICAgYWRkcmVzc1twaWVjZVBv
aW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpICYgMHhGRkZGOwotICAgICAgICAgICAgICAg
IGMgPSB7IH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgdWludDE2X3QgdmFsdWUgPSAwOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0g
MDsKLSAgICAgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKLSAgICAgICAgZm9yICg7IGxl
bmd0aCA8IDQ7IGxlbmd0aCsrKSB7Ci0gICAgICAgICAgICBpZiAoYy5hdEVuZCgpKQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKmMpKQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcigqYykp
Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0gICAgICAgICAg
ICBpZiAoKmMgPT0gJzAnICYmICFsZW5ndGgpCi0gICAgICAgICAgICAgICAgbGVhZGluZ1plcm9z
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgKiAweDEwICsgdG9BU0NJSUhleFZh
bHVlKCpjKTsKLSAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgaWYgKFVOTElLRUxZKCh2YWx1ZSAmJiBsZWFkaW5nWmVyb3MpIHx8
ICghdmFsdWUgJiYgbGVuZ3RoID4gMSkpKQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhv
c3RCZWdpbik7Ci0KLSAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSB2YWx1ZTsKLSAg
ICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAocGll
Y2VQb2ludGVyID09IDggfHwgKmMgIT0gJzonKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwotICAgIH0KLSAgICAKLSAgICBp
ZiAoIWMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAKLSAgICBp
ZiAoY29tcHJlc3NQb2ludGVyKSB7Ci0gICAgICAgIHNpemVfdCBzd2FwcyA9IHBpZWNlUG9pbnRl
ciAtIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpOwotICAgICAgICBwaWVjZVBvaW50ZXIgPSA3Owot
ICAgICAgICB3aGlsZSAoc3dhcHMpCi0gICAgICAgICAgICBzdGQ6OnN3YXAoYWRkcmVzc1twaWVj
ZVBvaW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2ludGVyLnZhbHVlKCkgKyBzd2Fwcy0tIC0g
MV0pOwotICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9IDgpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcG9zc2libGVDb21wcmVz
c1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKLSAgICBpZiAocG9z
c2libGVDb21wcmVzc1BvaW50ZXIpCi0gICAgICAgIHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyLnZh
bHVlKCkrKzsKLSAgICBpZiAoVU5MSUtFTFkoY29tcHJlc3NQb2ludGVyICE9IHBvc3NpYmxlQ29t
cHJlc3NQb2ludGVyKSkKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0gICAg
Ci0gICAgcmV0dXJuIGFkZHJlc3M7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1VUkxQYXJzZXI6OkxDaGFyQnVmZmVyIFVSTFBhcnNlcjo6cGVyY2VudERlY29kZShjb25z
dCBMQ2hhciogaW5wdXQsIHNpemVfdCBsZW5ndGgsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQotewotICAg
IExDaGFyQnVmZmVyIG91dHB1dDsKLSAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShs
ZW5ndGgpOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07Ci0gICAgICAgIGlmIChieXRlICE9ICcl
JykKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIGVs
c2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKLSAgICAgICAgICAgIGlmIChp
c0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSAr
IDJdKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBw
ZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAgICAg
ICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG91
dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
b3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dDsK
LX0KLSAgICAKLVVSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJjZW50RGVjb2Rl
KGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBMQ2hhckJ1ZmZlciBv
dXRwdXQ7Ci0gICAgb3V0cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHVpbnQ4
X3QgYnl0ZSA9IGlucHV0W2ldOwotICAgICAgICBpZiAoYnl0ZSAhPSAnJScpCi0gICAgICAgICAg
ICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOwotICAgICAgICBlbHNlIGlmIChsZW5ndGgg
PiAyICYmIGkgPCBsZW5ndGggLSAyKSB7Ci0gICAgICAgICAgICBpZiAoaXNBU0NJSUhleERpZ2l0
KGlucHV0W2kgKyAxXSkgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAyXSkpIHsKLSAgICAg
ICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtp
ICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRl
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OkxDaGFyQnVmZmVyPiBVUkxQYXJz
ZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikK
LXsKLSAgICBMQ2hhckJ1ZmZlciBhc2NpaTsKLSAgICBpZiAoZG9tYWluLmlzQWxsQVNDSUkoKSkg
ewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gZG9tYWluLmxlbmd0aCgpOwotICAgICAgICBpZiAo
ZG9tYWluLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9
IGRvbWFpbi5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAgYXNjaWkucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShsZW5ndGgpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoY2hh
cmFjdGVyc1tpXSkpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0
b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICAgICAgICAgYXNjaWkudW5j
aGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9
IGRvbWFpbi5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAgIGFzY2lpLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKGNo
YXJhY3RlcnNbaV0pKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICAgICAgICAgIGFzY2lpLnVu
Y2hlY2tlZEFwcGVuZCh0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhc2NpaTsKLSAgICB9Ci0gICAgCi0gICAgY29u
c3Qgc2l6ZV90IG1heERvbWFpbkxlbmd0aCA9IDY0OwotICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVy
W21heERvbWFpbkxlbmd0aF07Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsK
LSAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVS
OwotICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJ
KCZpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwgU3RyaW5nVmlldyhkb21haW4p
LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBkb21haW4ubGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVy
LCBtYXhEb21haW5MZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKLSAgICBBU1NF
UlQobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA8PSBzdGF0aWNfY2FzdDxpbnQzMl90PihtYXhEb21h
aW5MZW5ndGgpKTsKLQotICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9jZXNzaW5nRGV0
YWlscy5lcnJvcnMpIHsKLSAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbnVtQ2hhcmFj
dGVyc0NvbnZlcnRlZDsgKytpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXNBU0NJSShob3N0bmFt
ZUJ1ZmZlcltpXSkpOwotICAgICAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoaG9zdG5hbWVC
dWZmZXJbaV0pKTsKLSAgICAgICAgfQotICAgICAgICBhc2NpaS5hcHBlbmQoaG9zdG5hbWVCdWZm
ZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAgICBpZiAoZG9tYWluICE9IFN0cmlu
Z1ZpZXcoYXNjaWkuZGF0YSgpLCBhc2NpaS5zaXplKCkpKQotICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICByZXR1
cm4gYXNjaWk7Ci0gICAgfQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLWJvb2wgVVJM
UGFyc2VyOjpoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IFVSTFBhcnNlcjo6TENoYXJC
dWZmZXImIGFzY2lpRG9tYWluKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXNjaWlE
b21haW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2lu
dChhc2NpaURvbWFpbltpXSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9v
bCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
aXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCppdGVyYXRvciA9PSAnOicpOwotICAgIGF1dG8gY29s
b25JdGVyYXRvciA9IGl0ZXJhdG9yOwotICAgIGFkdmFuY2UoaXRlcmF0b3IsIGNvbG9uSXRlcmF0
b3IpOwotICAgIHVpbnQzMl90IHBvcnQgPSAwOwotICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5h
dEVuZCgpKSkgewotICAgICAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0gY3VycmVudFBvc2l0aW9u
KGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgICAgICBSRUxFQVNFX0FTU0VS
VChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJh
dG9yKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHNpemVfdCBkaWdpdENvdW50
ID0gMDsKLSAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOwotICAgIGZvciAoOyAhaXRlcmF0
b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5l
d2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0
ZXJhdG9yKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChp
c0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkgewotICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAn
MCcgJiYgIWRpZ2l0Q291bnQpCi0gICAgICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsK
LSAgICAgICAgICAgICsrZGlnaXRDb3VudDsKLSAgICAgICAgICAgIHBvcnQgPSBwb3J0ICogMTAg
KyAqaXRlcmF0b3IgLSAnMCc7Ci0gICAgICAgICAgICBpZiAocG9ydCA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlm
IChwb3J0ICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRl
cmF0b3IpOwotICAgIAotICAgIGlmICghcG9ydCAmJiBkaWdpdENvdW50ID4gMSkKLSAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotCi0gICAgQVNTRVJUKHBvcnQgPT0gc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKLSAgICBpZiAoVU5MSUtFTFkoZGVmYXVsdFBvcnRG
b3JQcm90b2NvbChwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCkpID09IHN0YXRp
Y19jYXN0PHVpbnQxNl90Pihwb3J0KSkpCi0gICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0
ZXJhdG9yKTsKLSAgICBlbHNlIHsKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwot
ICAgICAgICBBU1NFUlQocG9ydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4
KCkpOwotICAgICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQxNl90PihzdGF0aWNf
Y2FzdDx1aW50MTZfdD4ocG9ydCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHBvcnRMZW5ndGgg
PSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgIFJFTEVB
U0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKLSAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBv
cnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgaWYg
KGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKml0ZXJh
dG9yID09ICc6JykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgqaXRlcmF0b3IgPT0g
J1snKSB7Ci0gICAgICAgIGF1dG8gaXB2NkVuZCA9IGl0ZXJhdG9yOwotICAgICAgICB3aGlsZSAo
IWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCAhPSAnXScpCi0gICAgICAgICAgICArK2lwdjZF
bmQ7Ci0gICAgICAgIGlmIChpcHY2RW5kLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KGl0ZXJhdG9yLCBpcHY2RW5kKSkpIHsKLSAgICAgICAgICAg
IHNlcmlhbGl6ZUlQdjYoYWRkcmVzcy52YWx1ZSgpKTsKLSAgICAgICAgICAgIGlmICghaXB2NkVu
ZC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZShpcHY2RW5kKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCA9PSAnOicpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQp
OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGlwdjZFbmQpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9z
aXRpb24oaXB2NkVuZCk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBpZiAoIW1fdXJsSXNTcGVjaWFsKSB7Ci0gICAgICAgIGZvciAoOyAhaXRlcmF0b3IuYXRF
bmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXds
aW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJh
dG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpICYm
ICppdGVyYXRvciAhPSAnJScpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGl0ZXJhdG9yKTsK
LSAgICAgICAgfQotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRl
cmF0b3IpOwotICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgIH0KLSAgICAKLSAgICBp
ZiAoTElLRUxZKCFtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSkpIHsKLSAgICAgICAgYXV0byBo
b3N0SXRlcmF0b3IgPSBpdGVyYXRvcjsKLSAgICAgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgp
OyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9y
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3Ig
PT0gJzonKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGlzRm9yYmlk
ZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRIb3N0KGhvc3RJ
dGVyYXRvciwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaG9zdEl0ZXJhdG9yLCBp
dGVyYXRvcikpOwotICAgICAgICBpZiAoYWRkcmVzcykgewotICAgICAgICAgICAgc2VyaWFsaXpl
SVB2NChhZGRyZXNzLnZhbHVlKCkpOwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3Vy
cmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgp
KSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBwYXJz
ZVBvcnQoaXRlcmF0b3IpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChhZGRyZXNzLmVycm9yKCkg
PT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgZm9yICg7IGhvc3RJdGVyYXRvciAhPSBpdGVyYXRvcjsgKytob3N0SXRlcmF0b3Ip
IHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaG9zdEl0ZXJhdG9y
KSkpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEl0ZXJhdG9yKTsKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChV
TkxJS0VMWShpc0FTQ0lJVXBwZXIoKmhvc3RJdGVyYXRvcikpKQotICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihob3N0SXRlcmF0b3IpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcih0b0FTQ0lJTG93ZXIoKmhvc3RJdGVyYXRvcikpOwotICAgICAgICB9Ci0gICAgICAgIG1f
dXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmICgh
aG9zdEl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGhvc3RJ
dGVyYXRvcik7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24o
aXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0
TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0
aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBj
b25zdCBhdXRvIGhvc3RCZWdpbiA9IGl0ZXJhdG9yOwotICAgIAotICAgIExDaGFyQnVmZmVyIHV0
ZjhFbmNvZGVkOwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewot
ICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJKCppdGVyYXRvcikpKQotICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAgICAgaWYgKCFVX0lTX1VO
SUNPREVfQ0hBUigqaXRlcmF0b3IpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKLSAgICAgICAgaW50MzJfdCBvZmZzZXQg
PSAwOwotICAgICAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCAqaXRlcmF0b3Ip
OwotICAgICAgICB1dGY4RW5jb2RlZC5hcHBlbmQoYnVmZmVyLCBvZmZzZXQpOwotICAgIH0KLSAg
ICBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUodXRmOEVuY29kZWQu
ZGF0YSgpLCB1dGY4RW5jb2RlZC5zaXplKCksIGhvc3RCZWdpbik7Ci0gICAgU3RyaW5nIGRvbWFp
biA9IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2Rl
ZC5zaXplKCkpOwotICAgIGlmIChkb21haW4uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcocGVyY2VudERlY29kZWQuZGF0YSgpLCBw
ZXJjZW50RGVjb2RlZC5zaXplKCkpKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2lu
KTsKLSAgICBhdXRvIGFzY2lpRG9tYWluID0gZG9tYWluVG9BU0NJSSgqZG9tYWluLmltcGwoKSwg
aG9zdEJlZ2luKTsKLSAgICBpZiAoIWFzY2lpRG9tYWluIHx8IGhhc0ZvcmJpZGRlbkhvc3RDb2Rl
UG9pbnQoYXNjaWlEb21haW4udmFsdWUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBM
Q2hhckJ1ZmZlciYgYXNjaWlEb21haW5WYWx1ZSA9IGFzY2lpRG9tYWluLnZhbHVlKCk7Ci0gICAg
Y29uc3QgTENoYXIqIGFzY2lpRG9tYWluQ2hhcmFjdGVycyA9IGFzY2lpRG9tYWluVmFsdWUuZGF0
YSgpOwotCi0gICAgYXV0byBhZGRyZXNzID0gcGFyc2VJUHY0SG9zdChob3N0QmVnaW4sIENvZGVQ
b2ludEl0ZXJhdG9yPExDaGFyPihhc2NpaURvbWFpblZhbHVlLmJlZ2luKCksIGFzY2lpRG9tYWlu
VmFsdWUuZW5kKCkpKTsKLSAgICBpZiAoYWRkcmVzcykgewotICAgICAgICBzZXJpYWxpemVJUHY0
KGFkZHJlc3MudmFsdWUoKSk7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3Np
dGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAgfQotICAg
IGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihhc2NpaURvbWFpbkNo
YXJhY3RlcnMsIGFzY2lpRG9tYWluVmFsdWUuc2l6ZSgpKTsKLSAgICBtX3VybC5tX2hvc3RFbmQg
PSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSkK
LSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVS
TFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQotewotICAgIGF1dG8gdXRm
OCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7Ci0gICAgaWYgKHV0ZjguaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBwZXJjZW50RGVjb2RlZCA9
IHBlcmNlbnREZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHV0ZjguZGF0YSgp
KSwgdXRmOC5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERl
Y29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotfQotCi0vLyBodHRwczovL3Vy
bC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsZW5jb2RlZC1wYXJzZXIKLWF1dG8gVVJMUGFy
c2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+IFVSTEVuY29kZWRG
b3JtCi17Ci0gICAgVVJMRW5jb2RlZEZvcm0gb3V0cHV0OwotICAgIGZvciAoU3RyaW5nVmlldyBi
eXRlcyA6IGlucHV0LnNwbGl0KCcmJykpIHsKLSAgICAgICAgYXV0byBlcXVhbEluZGV4ID0gYnl0
ZXMuZmluZCgnPScpOwotICAgICAgICBpZiAoZXF1YWxJbmRleCA9PSBub3RGb3VuZCkgewotICAg
ICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy50b1N0cmluZygpLnJlcGxh
Y2UoJysnLCAweDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFtZSkKLSAgICAgICAgICAgICAgICBv
dXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJz
dHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOwotICAg
ICAgICAgICAgYXV0byB2YWx1ZSA9IGZvcm1VUkxEZWNvZGUoYnl0ZXMuc3Vic3RyaW5nKGVxdWFs
SW5kZXggKyAxKS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7Ci0gICAgICAgICAgICBp
ZiAobmFtZSAmJiB2YWx1ZSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52
YWx1ZSgpLCB2YWx1ZS52YWx1ZSgpIH0pOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBv
dXRwdXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3JtKGNvbnN0IFN0
cmluZyYgaW5wdXQsIFZlY3RvcjxMQ2hhcj4mIG91dHB1dCkKLXsKLSAgICBhdXRvIHV0ZjggPSBp
bnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOwotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSB1dGY4
LmRhdGEoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHV0ZjgubGVuZ3RoKCk7ICsraSkg
ewotICAgICAgICBjb25zdCBjaGFyIGJ5dGUgPSBkYXRhW2ldOwotICAgICAgICBpZiAoYnl0ZSA9
PSAweDIwKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgweDJCKTsKLSAgICAgICAgZWxzZSBp
ZiAoYnl0ZSA9PSAweDJBCi0gICAgICAgICAgICB8fCBieXRlID09IDB4MkQKLSAgICAgICAgICAg
IHx8IGJ5dGUgPT0gMHgyRQotICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHgzMCAmJiBieXRlIDw9
IDB4MzkpCi0gICAgICAgICAgICB8fCAoYnl0ZSA+PSAweDQxICYmIGJ5dGUgPD0gMHg1QSkKLSAg
ICAgICAgICAgIHx8IGJ5dGUgPT0gMHg1RgotICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHg2MSAm
JiBieXRlIDw9IDB4N0EpKSAvLyBGSVhNRTogUHV0IHRoZXNlIGluIHRoZSBjaGFyYWN0ZXJDbGFz
c1RhYmxlIHRvIGF2b2lkIGJyYW5jaGVzLgotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChieXRl
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnl0ZSwgb3V0
cHV0KTsKLSAgICB9Ci19Ci0gICAgCi1TdHJpbmcgVVJMUGFyc2VyOjpzZXJpYWxpemUoY29uc3Qg
VVJMRW5jb2RlZEZvcm0mIHR1cGxlcykKLXsKLSAgICBpZiAodHVwbGVzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3RvcjxMQ2hhcj4gb3V0cHV0OwotICAgIGZvciAo
YXV0byYgdHVwbGUgOiB0dXBsZXMpIHsKLSAgICAgICAgaWYgKCFvdXRwdXQuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgnJicpOwotICAgICAgICBzZXJpYWxpemVVUkxFbmNv
ZGVkRm9ybSh0dXBsZS5rZXksIG91dHB1dCk7Ci0gICAgICAgIG91dHB1dC5hcHBlbmQoJz0nKTsK
LSAgICAgICAgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0odHVwbGUudmFsdWUsIG91dHB1dCk7Ci0g
ICAgfQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUob3V0cHV0KSk7Ci19Ci0KLWNv
bnN0IFVJRE5BJiBVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2Rlcigp
Ci17Ci0gICAgc3RhdGljIFVJRE5BKiBlbmNvZGVyOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBV
RXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgICAgICAvLyBXYXJuaW5nOiBQbGVh
c2UgY29udGFjdCBhIFdlYktpdEdUSysgZGV2ZWxvcGVyIGlmIGNoYW5naW5nIHRoZXNlIGZsYWdz
LgotICAgICAgICAvLyBUaGV5IHNob3VsZCBiZSBzeW5jZWQgd2l0aCBlcGh5X3VyaV9kZWNvZGUo
KSBpbiBlcGh5LXVyaS1oZWxwZXJzLmMuCi0gICAgICAgIGVuY29kZXIgPSB1aWRuYV9vcGVuVVRT
NDYoVUlETkFfQ0hFQ0tfQklESSB8IFVJRE5BX0NIRUNLX0NPTlRFWFRKIHwgVUlETkFfTk9OVFJB
TlNJVElPTkFMX1RPX1VOSUNPREUgfCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fQVNDSUksICZl
cnJvcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikpOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChlbmNvZGVyKTsKLSAgICB9KTsKLSAgICByZXR1cm4gKmVuY29kZXI7
Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0
IFVSTCYgYikKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzIiwK
LSAgICAgICAgYS5tX2lzVmFsaWQsCi0gICAgICAgIGEubV9jYW5ub3RCZUFCYXNlVVJMLAotICAg
ICAgICBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKLSAgICAgICAgYS5tX3NjaGVtZUVuZCwK
LSAgICAgICAgYS5tX3VzZXJTdGFydCwKLSAgICAgICAgYS5tX3VzZXJFbmQsCi0gICAgICAgIGEu
bV9wYXNzd29yZEVuZCwKLSAgICAgICAgYS5tX2hvc3RFbmQsCi0gICAgICAgIGEubV9ob3N0RW5k
ICsgYS5tX3BvcnRMZW5ndGgsCi0gICAgICAgIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCi0gICAg
ICAgIGEubV9wYXRoRW5kLAotICAgICAgICBhLm1fcXVlcnlFbmQsCi0gICAgICAgIGEubV9zdHJp
bmcudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgYi5tX2lzVmFsaWQsCi0gICAgICAgIGIubV9jYW5u
b3RCZUFCYXNlVVJMLAotICAgICAgICBiLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKLSAgICAg
ICAgYi5tX3NjaGVtZUVuZCwKLSAgICAgICAgYi5tX3VzZXJTdGFydCwKLSAgICAgICAgYi5tX3Vz
ZXJFbmQsCi0gICAgICAgIGIubV9wYXNzd29yZEVuZCwKLSAgICAgICAgYi5tX2hvc3RFbmQsCi0g
ICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5ndGgsCi0gICAgICAgIGIubV9wYXRoQWZ0
ZXJMYXN0U2xhc2gsCi0gICAgICAgIGIubV9wYXRoRW5kLAotICAgICAgICBiLm1fcXVlcnlFbmQs
Ci0gICAgICAgIGIubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICByZXR1cm4gYS5tX3N0
cmluZyA9PSBiLm1fc3RyaW5nCi0gICAgICAgICYmIGEubV9pc1ZhbGlkID09IGIubV9pc1ZhbGlk
Ci0gICAgICAgICYmIGEubV9jYW5ub3RCZUFCYXNlVVJMID09IGIubV9jYW5ub3RCZUFCYXNlVVJM
Ci0gICAgICAgICYmIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID09IGIubV9wcm90b2NvbElz
SW5IVFRQRmFtaWx5Ci0gICAgICAgICYmIGEubV9zY2hlbWVFbmQgPT0gYi5tX3NjaGVtZUVuZAot
ICAgICAgICAmJiBhLm1fdXNlclN0YXJ0ID09IGIubV91c2VyU3RhcnQKLSAgICAgICAgJiYgYS5t
X3VzZXJFbmQgPT0gYi5tX3VzZXJFbmQKLSAgICAgICAgJiYgYS5tX3Bhc3N3b3JkRW5kID09IGIu
bV9wYXNzd29yZEVuZAotICAgICAgICAmJiBhLm1faG9zdEVuZCA9PSBiLm1faG9zdEVuZAotICAg
ICAgICAmJiBhLm1fcG9ydExlbmd0aCA9PSBiLm1fcG9ydExlbmd0aAotICAgICAgICAmJiBhLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID09IGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gKLSAgICAgICAgJiYg
YS5tX3BhdGhFbmQgPT0gYi5tX3BhdGhFbmQKLSAgICAgICAgJiYgYS5tX3F1ZXJ5RW5kID09IGIu
bV9xdWVyeUVuZDsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVu
dChjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kIDw9IHVybC5t
X3VzZXJTdGFydAotICAgICAgICAmJiB1cmwubV91c2VyU3RhcnQgPD0gdXJsLm1fdXNlckVuZAot
ICAgICAgICAmJiB1cmwubV91c2VyRW5kIDw9IHVybC5tX3Bhc3N3b3JkRW5kCi0gICAgICAgICYm
IHVybC5tX3Bhc3N3b3JkRW5kIDw9IHVybC5tX2hvc3RFbmQKLSAgICAgICAgJiYgdXJsLm1faG9z
dEVuZCArIHVybC5tX3BvcnRMZW5ndGggPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoCi0gICAg
ICAgICYmIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSB1cmwubV9wYXRoRW5kCi0gICAgICAg
ICYmIHVybC5tX3BhdGhFbmQgPD0gdXJsLm1fcXVlcnlFbmQKLSAgICAgICAgJiYgdXJsLm1fcXVl
cnlFbmQgPD0gdXJsLm1fc3RyaW5nLmxlbmd0aCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmNjViZWIwMjRjOTgwMzIyYTZlMDUzOWE1YmZlODQ3YWU5MTBjZmFiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTFBhcnNlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSA8
d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotc3RydWN0IFVJRE5B
OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGNsYXNzIENvZGVQb2ludEl0ZXJhdG9yOwotCi1jbGFzcyBVUkxQYXJzZXIgewotcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIFVSTFBhcnNlcihjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwm
ID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7Ci0gICAgVVJMIHJlc3Vs
dCgpIHsgcmV0dXJuIG1fdXJsOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBh
bGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBpbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQoY29uc3QgVVJMJik7Ci0gICAg
Ci0gICAgdHlwZWRlZiBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBV
UkxFbmNvZGVkRm9ybTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVVJMRW5jb2RlZEZvcm0g
cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KTsKLSAgICBzdGF0aWMgU3RyaW5nIHNlcmlh
bGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYpOwotCi0gICAgc3RhdGljIGNvbnN0IFVJRE5BJiBp
bnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKLSAgICBzdGF0aWMgYm9vbCBpc0lu
VXNlckluZm9FbmNvZGVTZXQoVUNoYXIpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgaXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1heWJlQ2Fub25pY2FsaXplU2NoZW1l
KGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKLSAgICBm
cmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJp
bmdWaWV3KTsKLQotICAgIFVSTCBtX3VybDsKLSAgICBWZWN0b3I8TENoYXI+IG1fYXNjaWlCdWZm
ZXI7Ci0gICAgYm9vbCBtX3VybElzU3BlY2lhbCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VybElz
RmlsZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSB7IGZh
bHNlIH07Ci0gICAgU3RyaW5nIG1faW5wdXRTdHJpbmc7Ci0gICAgY29uc3Qgdm9pZCogbV9pbnB1
dEJlZ2luIHsgbnVsbHB0ciB9OwotCi0gICAgYm9vbCBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiB7
IGZhbHNlIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdElubGluZUJ1ZmZl
clNpemUgPSAyMDQ4OwotICAgIHVzaW5nIExDaGFyQnVmZmVyID0gVmVjdG9yPExDaGFyLCBkZWZh
dWx0SW5saW5lQnVmZmVyU2l6ZT47Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiB2b2lkIHBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqLCBjb25zdCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyopOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGJvb2wgcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZVBvcnQoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLQotICAgIHZvaWQgZmFpbHVyZSgpOwot
ICAgIGVudW0gY2xhc3MgUmVwb3J0U3ludGF4VmlvbGF0aW9uIHsgTm8sIFllcyB9OwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbiByZXBv
cnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9sYXRpb246Olllcz4KLSAgICB2b2lk
IGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKSB7IGFk
dmFuY2U8Q2hhcmFjdGVyVHlwZSwgcmVwb3J0U3ludGF4VmlvbGF0aW9uPihpdGVyYXRvciwgaXRl
cmF0b3IpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgUmVwb3J0U3lu
dGF4VmlvbGF0aW9uID0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXM+Ci0gICAgdm9pZCBhZHZh
bmNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24p
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgdGFrZXNUd29BZHZh
bmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHN5bnRheFZpb2xhdGlvbihjb25zdCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGJvb2wgaXNQZXJjZW50RW5jb2RlZERvdChDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
Ym9vbCBpc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
Pik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1NpbmdsZURv
dFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzRG91YmxlRG90UGF0aFNlZ21lbnQo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGJvb2wgc2hvdWxkQ29weUZpbGVVUkwoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJv
b2wgY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mLCBVQ2hhcjMyKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29s
IGlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIGJv
b2wgaXNMb2NhbGhvc3QoU3RyaW5nVmlldyk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gdm9pZCBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiB2b2lkIGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQg
YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IGN1cnJlbnRQ
b3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+IHZvaWQgYXBwZW5kTnVtYmVyVG9B
U0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlKTsKLSAgICB0ZW1wbGF0ZTxib29sKCppc0lu
Q29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRmOFBlcmNl
bnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVyeUVuY29kZShjb25z
dCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8TENoYXJCdWZmZXI+IGRvbWFpblRvQVND
SUkoU3RyaW5nSW1wbCYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiwg
c2l6ZV90LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JG
b3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgc3RhdGljIExDaGFyQnVmZmVyIHBlcmNl
bnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KTsKLSAgICBzdGF0aWMgYm9v
bCBoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IExDaGFyQnVmZmVyJik7Ci0gICAgdm9p
ZCBwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90KTsKLSAgICB2b2lkIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoVUNoYXIzMik7Ci0gICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqLCBz
aXplX3QpOwotICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBMQ2hhciogY2hhcmFj
dGVycywgc2l6ZV90IHNpemUpIHsgYXBwZW5kVG9BU0NJSUJ1ZmZlcihyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihjaGFyYWN0ZXJzKSwgc2l6ZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8VUNo
YXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYsIENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KTsKLSAgICB2b2lkIGNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmlu
ZyYsIHNpemVfdCBsZW5ndGgpOwotICAgIGJvb2wgY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIo
Y29uc3QgVVJMJik7Ci0gICAgU3RyaW5nVmlldyBwYXJzZWREYXRhVmlldyhzaXplX3Qgc3RhcnQs
IHNpemVfdCBsZW5ndGgpOwotICAgIFVDaGFyIHBhcnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlv
bik7Ci0KLSAgICB1c2luZyBJUHY0QWRkcmVzcyA9IHVpbnQzMl90OwotICAgIHZvaWQgc2VyaWFs
aXplSVB2NChJUHY0QWRkcmVzcyk7Ci0gICAgZW51bSBjbGFzcyBJUHY0UGFyc2luZ0Vycm9yOwot
ICAgIGVudW0gY2xhc3MgSVB2NFBpZWNlUGFyc2luZ0Vycm9yOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24sIHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEV4cGVjdGVkPElQdjRBZGRyZXNzLCBJUHY0UGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRIb3N0
KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24+
JiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVj
ZVBhcnNpbmdFcnJvcj4gcGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mLCBib29sJiBzeW50YXhWaW9sYXRpb24pOwotICAgIHVzaW5nIElQdjZBZGRyZXNzID0g
c3RkOjphcnJheTx1aW50MTZfdCwgOD47Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4gcGFyc2VJUHY0QWRkcmVz
c0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHZvaWQg
c2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsKLSAgICB2b2lkIHNlcmlhbGl6ZUlQ
djYoSVB2NkFkZHJlc3MpOwotCi0gICAgZW51bSBjbGFzcyBVUkxQYXJ0OwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29weVVSTFBhcnRzVW50aWwoY29uc3QgVVJM
JiBiYXNlLCBVUkxQYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYs
IGNvbnN0IFVSTFRleHRFbmNvZGluZyomKTsKLSAgICBzdGF0aWMgc2l6ZV90IHVybExlbmd0aFVu
dGlsUGFydChjb25zdCBVUkwmLCBVUkxQYXJ0KTsKLSAgICB2b2lkIHBvcFBhdGgoKTsKLSAgICBi
b29sIHNob3VsZFBvcFBhdGgodW5zaWduZWQpOwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnQuaAppbmRleCA0MTgxZWMxM2JmZjhmNGUyYWE4Mjk1ZTFiZmI3ZWZlNTllZDA4MWUz
Li5jMzQ0ODQ4NmVlN2MyYWVhY2FhZWJlYmY1YTBlYjcxODNkYzZlZmY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzYsNyArMzYsNiBAQCBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBw
bGljYQogU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsK
IFN0cmluZyB1c2VyQWdlbnRCdW5kbGVWZXJzaW9uKCk7CiAjZWxzZQotY2xhc3MgVVJMOwogCiBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBs
aWNhdGlvbk5hbWUgPSBlbXB0eVN0cmluZygpLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVmVy
c2lvbiA9IGVtcHR5U3RyaW5nKCkpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YW5kYXJkVXNl
ckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJB
Z2VudFF1aXJrcy5jcHAKaW5kZXggMjMyZTVjZTU3ZGIwNWRiMzhiNDlkZDljMDIxYTFiYzk5YzAz
ODVjYi4uNDliNTg5MjBhN2FlYjc3MzJkNjU3MzI3NTU5MzQ3N2ExODZiMGIwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaW5jbHVkZSAiVXNlckFnZW50UXVpcmtzLmgiCiAKICNpbmNsdWRlICJQdWJsaWNTdWZmaXgu
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50
UXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaAppbmRl
eCBiZjEwY2UyMzJkOTFkNDMxYmNiNmQ0YTcxYTUxZGQ0ZGRlOGZiODhhLi5kYzc3ZDRlODUwZWY5
MDlkNGIwMDU2ZDdjOWE3ZTFhZDQ1ZmRkOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnRRdWlya3MuaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgVXNlckFnZW50UXVpcmtzIHsKIHB1YmxpYzoKICAgICBl
bnVtIFVzZXJBZ2VudFF1aXJrIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0NGVVJMRXh0cmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0
cmFzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNiNDNiYzdhMDdiODBhZTRi
YWEzNWZkYjczMzVhYzNiYTc2NDQxNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0KLSNpbmNsdWRlICJVUkwuaCIKLSNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmV0
YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCi17Ci0gICAgLy8gTk9URTogV2UgdXNlIFVU
Ri04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmlu
Z3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKLSAgICAvLyAoZS5nIGNhbGxzIHRvIE5T
VVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9sZXJhbnQgb2YgaWxs
ZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFs
Zm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBTaGlm
dC1KSVMsIHNvIHdlIGZhbGwgYmFjawotICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluLTEgaW4g
dGhvc2UgY2FzZXMuCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXN1bHQgPSBhZG9wdENGKENG
VVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
SW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGJhc2VVUkwsIHRydWUp
KTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0
ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihk
YXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGJhc2VVUkwsIHRydWUpKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmIHVybCwg
VVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQotewotICAgIENGSW5kZXggYnl0ZXNMZW5ndGggPSBDRlVS
TEdldEJ5dGVzKHVybCwgMCwgMCk7Ci0gICAgcmVzdWx0LnJlc2l6ZShieXRlc0xlbmd0aCk7Ci0g
ICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9j
YXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVuZ3RoKTsKLSAgICBBU1NFUlRfVU5V
U0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRlc0xlbmd0aCk7Ci19Ci0KLXZvaWQg
Z2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiByZXN1bHQpCi17Ci0gICAgQ0ZJbmRl
eCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKLSAgICBjaGFyKiBieXRl
czsKLSAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGJ5dGVzTGVuZ3RoLCBi
eXRlcyk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCByZWlu
dGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7Ci0gICAgQVNTRVJUX1VO
VVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5ndGgpOwotfQotCi1ib29s
IGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25zdCBVUkwmIHVybCkKLXsKLSAg
ICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7Ci0KLSAgICBpZiAodXJsLmhh
c1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCi0gICAgICAgIHJldHVybiBwcm90b2Nv
bEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsKLQotICAgIFVSTENoYXJC
dWZmZXIgYnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5dGVzKTsKLSAgICBTdHJpbmdW
aWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJ5dGVzLmRh
dGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5zaXplKCkpIH07Ci0KLSAgICBpZiAo
IXVybC5oYXNQYXRoKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmdWaWV3IHsgdXJsLnN0cmluZygp
IH0gPT0gY2ZVUkxTdHJpbmc7Ci0KLSAgICBhdXRvIHVybFdpdGhvdXRQYXRoID0gU3RyaW5nVmll
dyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwucGF0aFN0YXJ0KCkgKyAxKTsKLSAg
ICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxXaXRob3V0UGF0aCk7Ci19Ci0KLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmZmQ1NzA2NjBkYTZhYTk4ZDEyMjg2NDA3OGZlZDdkZDZlNzc5ZWY1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDRlVSTEV4dHJhc19oCi0jZGVmaW5lIENGVVJMRXh0
cmFzX2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBVUkw7Ci10eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IFVSTENoYXJCdWZmZXI7Ci0KLVdF
QkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNv
bnN0IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VVUkwgPSAwKTsKLVdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKLVdFQkNPUkVfRVhQ
T1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIENTdHJpbmcmKTsKLQotYm9vbCBpc0NGVVJM
U2FtZU9yaWdpbihDRlVSTFJlZiwgY29uc3QgVVJMJik7Ci0KLX0KLQotI2VuZGlmIC8vIENGVVJM
RXh0cmFzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYWI2NDFlZDJkOWJlYzEzZDZhMTc3OGY2MzY2MmY5YjY2N2E5NzFjOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkwuaCIKLQotI2luY2x1ZGUgIkNG
VVJMRXh0cmFzLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ0ZVUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLSNpZiBQTEFU
Rk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0jZW5kaWYK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6OlVSTChDRlVSTFJlZiB1cmwpCi17Ci0gICAg
aWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8K
LSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHVybCwgdXJsQnl0ZXMpOwot
ICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsKLSAgICAqdGhpcyA9IHBhcnNl
ci5yZXN1bHQoKTsKLX0KLQotI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRlVSTFJl
Zj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxk
IHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/Ci0gICAgLy8gQ3VycmVudGx5IGl0IHRocm93
cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgaW4g
dGhhdCBjYXNlLAotICAgIC8vIHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCi0gICAgVVJMQ2hhckJ1
ZmZlciBidWZmZXI7Ci0gICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7Ci0gICAgYXV0byBjZlVSTCA9
IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLQot
ICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWlzQ0ZVUkxTYW1lT3JpZ2luKGNm
VVJMLmdldCgpLCAqdGhpcykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJu
IGNmVVJMOwotfQotI2VuZGlmCi0KLVN0cmluZyBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QK
LXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gY3JlYXRlQ0ZVUkwoKTsKLSAgICBp
ZiAoIWNmVVJMKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSNpZiBQTEFURk9STShXSU4p
Ci0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NGVVJMV2luZG93c1BhdGhTdHlsZTsK
LSNlbHNlCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5
bGU7Ci0jZW5kaWYKLSAgICByZXR1cm4gYWRvcHRDRihDRlVSTENvcHlGaWxlU3lzdGVtUGF0aChj
ZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5oCmluZGV4IDIxMDZjMmJhOWI4NmFjMDIwYjQwNzAxMGU5MTMyMzliZDQyNTkwZWYuLmE0
ZTc2MmU3ODYzOWRkNmM2M2NjMjZlODY5NzA5YTU5N2NhNDEwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXJfaAot
I2RlZmluZSBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcl9oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGVudEZpbHRlci5oIgogI2luY2x1ZGUgPG9iamMvTlNPYmpD
UnVudGltZS5oPgpAQCAtMzksOCArMzgsNiBAQCBPQkpDX0NMQVNTIE5TRGF0YTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIE5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiAgICAgZnJp
ZW5kIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKTsKIApAQCAtNjksNSAr
NjYsMyBAQCBjbGFzcyBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlciBmaW5hbCA6IHB1Ymxp
YyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXJfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlci5tbQppbmRleCBlOTQ0MWZmY2RlYjg2ZTYyOGJiZTU0ZjdjOTY1ZDg2NjgwNjEx
NDU1Li5kZTFkYWRiYjkzYmRlMmFmZmIwMmQzYjY2OWJiYmIwYTdkYWFiYjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlci5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW1wb3J0ICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBv
cnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRp
bWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTkVGaWx0ZXJTb3VyY2VTUEkuaD4KICNpbXBv
cnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3Rm
L3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9O
QUwoTmV0d29ya0V4dGVuc2lvbik7CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBOZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY28KIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RVUkwgeyBVUkwoKSwgbW9kaWZpZWRS
ZXF1ZXN0VVJMU3RyaW5nLmdldCgpIH07CiAgICAgaWYgKCFtb2RpZmllZFJlcXVlc3RVUkwuaXNW
YWxpZCgpKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQgVVJMIHN0cmluZyAlQCB0
byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVzdFVSTFN0cmluZy5nZXQoKSk7Cisg
ICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQgVVJMIHN0cmluZyAlQCB0byBhICBVUkwuXG4i
LCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NTTEtleUdlbmVy
YXRvckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TU0xLZXlHZW5lcmF0
b3JHTGliLmNwcAppbmRleCA5NDUwNmY1N2E0NzVlMWVjNTY3ZmI2OGZkY2FkYjRkMjBjMjJmMmJm
Li40MWY0OGQ3MTYxZTdmMjk2NWMxNTU4NWZmMDA4ZmMyOTMwOTJjMzkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NTTEtleUdlbmVyYXRvckdMaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xpYi5jcHAKQEAg
LTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggMTYyMWE4ODVlODcw
NGNhODQ4MzIwZjYyNTFjMDZmOTIxYjE4OWQ4OC4uYTNiYTRlNDZkYzI4Mzk1ZDg1MmNlOGZiNjhj
NzBiNTc5OWUyNzcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJB
Z2VudEdMaWIuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiVXNlckFnZW50LmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVc2VyQWdl
bnRRdWlya3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgT1Mo
VU5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRU
YWdnZWRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
VGFnZ2VkU2V0dGluZ3MuY3BwCmluZGV4IGIwY2E0M2Q1NWM0NWNiNTBkNzMwZjg5MmUxN2Q4MDg2
OWNjZDQ5NjEuLmQzNWViMTZiYTUyYWQwM2YwN2E0ZWZlZDA0MWJmYmU4ODQwMzM2MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5n
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFRhZ2dlZFNl
dHRpbmdzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkZvbnRUYWdnZWRTZXR0aW5ncy5oIgogCisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNDk3ZDJjNzlmZDJjYjA4ZmMzZDBjY2JmOGY4ZWEyMjcz
YzQzMTAxYy4uYWU4YTkzZjRmMWE0ODhjZWFiOGIzMWI0ODVjYmFhOGIyYjg1YmZlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTY1LDYgKzY1LDEyIEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciBVSW50ODsKICNlbmRpZgog
I2VuZGlmCiAKKy8vIFgxMSBoZWFkZXIgZGVmaW5lcyAiTm9uZSIgYXMgY29uc3RhbnQgaW4gbWFj
cm8gYW5kIGJyZWFrZXMgdGhlIFBhaW50SW52YWxpZGF0aW9uUmVhc29ucyBlbnVtJ3MgIk5vbmUi
LgorLy8gQXMgYSB3b3JrYXJvdW5kLCB3ZSBleHBsaWNpdGx5IHVuZGVmIFgxMSdzIE5vbmUgaGVy
ZS4KKyNpZiBkZWZpbmVkKE5vbmUpCisjdW5kZWYgTm9uZQorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogI2lmIFVTRShXSU5HREkpCkBAIC04NSw3ICs5MSw2IEBAIGNsYXNzIEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50
UmVjdDsKIGNsYXNzIFJvdW5kZWRSZWN0OwotY2xhc3MgVVJMOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0M0Q7CiBjbGFzcyBQYXRoOwogY2xhc3MgVGV4dFJ1bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBkNmIwYzY1ZmJmNTdkOWM3ZGVhMTk2MDgwMjli
YzJhNjAxNDU3OGIxLi5iYzM4OTE0NDg5ZTMyZDMyOGE1NGQ0MjFlNTdkYjdmMzE1OGYzM2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0zNSwxMCAr
MzUsMTAgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU1ZHSW1h
Z2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRTdHJlYW0uaD4KIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oCmluZGV4IDVmMjIwYmU0ZWYwNmYzZmMxZTc5MzQ5ZmRlYjMzMGVkOTFlNzRh
YzkuLjFlMzBmMzQ2OWU0YWI3OTg0NDE0YzJiZmQ4ZmFlNjRlMThhMDBhYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtNjgsNyArNjgsNiBAQCBjbGFzcyBG
bG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRJ
bXBsOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogc3RydWN0IExlbmd0aDsKIAog
Ly8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0
cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJhbWVz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5o
CmluZGV4IDgyNjljYzRlZGMzN2NlNWY0ZGMxNjVmYmQ0ZDYxYzM2OThhNDI3ZmUuLmYyODMyM2My
NTViMWQwYTAxNDM1MWM5MzQyNzNkYTAxYzVhZjg1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTIzLDggKzIzLDcgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgSW1hZ2VPYnNlcnZlcl9oCi0jZGVmaW5lIElt
YWdlT2JzZXJ2ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbWFnZVR5cGVzLmgiCiAK
QEAgLTMyLDcgKzMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZTsKIGNs
YXNzIEludFJlY3Q7Ci1jbGFzcyBVUkw7CiAKIC8vIEludGVyZmFjZSBmb3Igbm90aWZpY2F0aW9u
IGFib3V0IGNoYW5nZXMgdG8gYW4gaW1hZ2UsIGluY2x1ZGluZyBkZWNvZGluZywKIC8vIGRyYXdp
bmcsIGFuZCBhbmltYXRpbmcuCkBAIC01NCw1ICs1MiwzIEBAIGNsYXNzIEltYWdlT2JzZXJ2ZXIg
ewogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA0ODhmOTQ1ZmRjM2QwMDBkYmZhYTMzN2Q0NjVlNWZi
MmVmYWFiNDM4Li5mZDRhMWZlMmRkODdiZjljMDhlY2FiYjEwZjNlZjM3NDI5NGIxODM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBA
IC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKICNpbmNsdWRlICJJ
bWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJh
Y2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCAw
OTAxMDEyMjk5ZWJjNDFjMmNhODRlMTllOTUxZTAyNDc4ODY5NThlLi45ODBkNjBlZTUwZDUwYmMy
NmEwMDMwNWUwM2U1MWI0ZDQ0Y2M5ZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJ
bWFnZURlY29kZXI7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEltYWdlU291cmNlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1h
cEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKaW5kZXggNDYyYTcyNjYwNTg0NzEyM2U4N2I3NDk1NWY0ZjE2OGZmODJmYTZmMC4uMDYwMTQ2
ZDNhYzcxMGZlMWM0ZDc4YTMwODEwNjkzYmJmYThiMTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MCw3ICs0MCw3IEBACiAjaW5j
bHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhh
c2guaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAK
aW5kZXggNTkxNWE3NzMxNmVkOGEwMzBhNGU2ZDNhZDc0MTA0YzE3OGNhZDlkMi4uM2UxZDI3MGU2
NGU3ODVkYWE3MTk1NWRkNGFhZmU0MDMyZjllYjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDYg
QEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1UaW1lUmFu
Z2VzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGF0YVZp
ZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpAQCAtNDksNiAr
NDgsNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9T
b2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGU4MjQ0OWE1MGZjYzhlOWI4MTdmYzc3
ZTJhYTNhMDE5NWY2YTEyMjYuLjFkYmM1Y2Q4OGE3YTA4YTUwYzM5OTlhMDAyZWU0N2I3NWYyMWY3
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtNDUsOSArNDUsOSBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtQ0FMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllcldpbi5oIgogI2lu
Y2x1ZGUgIlRpbWVSYW5nZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRp
bWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpbmNsdWRlIDxBVkZv
dW5kYXRpb25DRi9BVkNGUGxheWVySXRlbS5oPgogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lC
TEVfT1VUUFVUX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA3ZDQ5ZDRlMTBj
OWU1MTY1YmNlYWUyNTE2M2Q5NmFkYWFmYmQ3YzFiLi42ZTQxMTdlNWVhMzlhOGUwOWVmYzVkOTE0
NDhmNzY2ZjVhYWUzYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU5LDcgKzU5LDYg
QEAKICNpbXBvcnQgIlRleHRFbmNvZGluZy5oIgogI2ltcG9ydCAiVGV4dFRyYWNrUmVwcmVzZW50
YXRpb24uaCIKICNpbXBvcnQgIlRleHR1cmVDYWNoZUNWLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNp
bXBvcnQgIlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMuaCIKICNpbXBvcnQgIlZpZGVv
VGV4dHVyZUNvcGllckNWLmgiCiAjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCIK
QEAgLTgxLDYgKzgwLDcgQEAKICNpbXBvcnQgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJM
RShBVkZfQ0FQVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggNWY4NTcw
YjEyMTcwNWE2YmE5MTUwNmUzMWJlZDk3ZjY0Nzg4Y2Y2Zi4uNzZiZWYwNzNkOTcyZWMxNzA3MjBk
NmRlZTJhZTkwMDFmM2EyNmU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2lmIFVTRShDQUlSTykKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgorI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRJbXBsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYmQyYTczYTM0ZmFhMWRiZTE1OTIyZWMz
YjFjMTFhZDExYjU2ZjY1Ny4uNjhlYzMxZWRkYTBkYTkwZWY4MTYxYjg5NjdjNDc0OGE4MDMwMjhi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBACiAjaW5jbHVkZSAiU2hh
ZG93Qmx1ci5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKICNpbmNsdWRl
ICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRTdHJlYW0uaD4KIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjk3MDNlMjFlYjIxNTcwZjEwM2U1NDJi
NWU1NDQzYWIzODY4OWU3NC4uYzUzM2EyZGU0M2IwY2IyMTg2NzMwMmVmODYwODhiYzRmNjM2YThi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgPGds
aWIuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC00Nyw2ICs0Niw3IEBACiAjaW5jbHVkZSA8
d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXgg
NGYxZjhhYjAzOGI3ODMzYmVhZTI4OTBhMmNhZTQ1NTk4ZGZiMmE3Ni4uZDE1YzJhNTBkNzJjNTNl
M2EwOTVlMDYyYjFjMzQwOWZlZWYyNmQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtMzksNyArMzksNiBAQAog
I2luY2x1ZGUgIlBsYXliYWNrUGlwZWxpbmUuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRlIDxm
bm1hdGNoLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRT
dHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dl
YktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4
IGY3YmQ0NzczYmZkNWM1NjdlODAxZmIwNzE3OGViOGZkODYxYjdkNDAuLjk2OWE0MjI0NDJlNTgz
ZDNlZDFhZjdjZmU0M2QyOWU0MmFhOWViNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
V2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02MzUsNyArNjM1LDcgQEAgZ2Jvb2xl
YW4gd2ViS2l0TWVkaWFTcmNTZXRVcmkoR3N0VVJJSGFuZGxlciogaGFuZGxlciwgY29uc3QgZ2No
YXIqIHVyaSwgR0Vycm9yKioKICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQogCi0gICAgV2Vi
Q29yZTo6VVJMIHVybChXZWJDb3JlOjpVUkwoKSwgdXJpKTsKKyAgICBVUkwgdXJsKFVSTCgpLCB1
cmkpOwogCiAgICAgcHJpdi0+bG9jYXRpb24gPSBHVW5pcXVlUHRyPGdjaGFyPihnX3N0cmR1cCh1
cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNvdXJj
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
VlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRD
dWUuY3BwCmluZGV4IGQwM2Y1ZjdmY2VhM2M4ZjE3Mzc3MTZhNDM1ZjllNjY2MDEyYTVmMTguLjll
YzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQyODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCkBAIC0yNyw5ICsy
Nyw5IEBACiAjaW5jbHVkZSAiSVNPVlRUQ3VlLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGF0YVZpZXcuaD4KICNp
bmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcg
SlNDOjpEYXRhVmlldzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggNWVh
Y2UxMDg4NjY3YzIyOWI1YWZjMzllYzkzNjg3ZTBkNDVhNTJmYi4uNDQ4MTczMTU3NWFlNDA5NDk1
NGM3Njk1ZmRkNzVlN2EwNTVjOGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3Bw
CkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDxkMmQxZWZmZWN0cy5oPgogI2luY2x1ZGUg
PGR3cml0ZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI3ByYWdtYSB3YXJuaW5nIChkaXNh
YmxlIDogNDc1NikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Ry
YWdJbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3Rr
LmNwcAppbmRleCAzM2Y0ZmUzYTQyZjA1ZjJkNmI5M2RiMGZhZGE4Nzg0M2U5YjcwMjY4Li5mN2Qx
ODRmNjdlOGFjMzU2NTUzMzUxNTNlMWNlNTU4YWUxOGU5N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAtMjMsOSArMjMsOSBAQAogI2luY2x1
ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSAiVGV4dEluZGlj
YXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8
Z2RrL2dkay5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXgg
YTRhYjYxMGE3M2ZmMWFjOTE0OTBkZGMyMDA4YzQ4OGQ0MmM5MDBmMC4uNzFhMDBhMzBjMGZhZWRk
OWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIlBhc3Rl
Ym9hcmRTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1
ZGUgIlNlbGVjdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFz
dGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0
ZWJvYXJkR3RrLmNwcAppbmRleCBmMzA4YzJiYjdlNTM2OTFkYTM0YzZlYmQwYjM0ZWQxMWJlYjJm
YjY0Li44MTQzZmFmYzM3YzFiYzQ4YTRjMGRlOGRmMTA5NmQ3MjM4ZTY1MDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNw
cApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKICNpbmNs
dWRlICJTZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVj
dGlvbkRhdGEuaAppbmRleCBkYTUxZGEwOWFkMTI3NDhjZjc5YTUwZjZjMzM0OTllNTBhYTM1Yzg3
Li4xYjg1OGVmOWRlZTU3YzIwNmJhM2UwYzczYWFkOGE4NjY5NmI4MjBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTE5LDkgKzE5LDkgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQppbmRleCA5ZjY5MTRlYzQ4MWYxZGNhYWRhNzVkZjk2ZDFkNTcwMjU1ZmY3MTUyLi40ZDY2
OWYwMWExMzU5ZGE4YTQ3MzQ1ZWMzYzMyN2FkYjIzOWE5OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMzUsMTAgKzM1LDEwIEBACiAjaW1w
b3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0
ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5o
IgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBAaW50
ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoTlNBdHRyaWJ1dGVkU3RyaW5nS2l0QWRkaXRpb25z
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0KaW5kZXggZGE3ZjYyMTc3YWM4NTk2MDUzMTAxYjViODkxODJlMDIxYTliMjZkYy4u
ZDdhZDQyNWRhYWI0NmY4MWI2OTk5Mzk4NzgzY2MyNTFmZTgyYmRiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0z
Miw5ICszMiw3IEBACiAjaW1wb3J0ICJJbWFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgog
I2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlVUSVV0
aWxpdGllcy5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9i
aWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUNvbG9yLmg+CkBAIC00NCw2ICs0
Miw4IEBACiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL0xp
c3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogCiAjZGVmaW5lIFBBU1RFQk9BUkRfU1VQUE9SVFNfSVRFTV9QUk9W
SURFUlMgKFBMQVRGT1JNKElPUykgJiYgIShQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShB
UFBMRVRWKSkpCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIHBh
c3RlYm9hcmRVUkwgPSBwYXN0ZWJvYXJkSW1hZ2UudXJsOwogICAgIGlmIChOU1VSTCAqbnNVUkwg
PSBwYXN0ZWJvYXJkVVJMLnVybCkgewogI2lmIE5TVVJMX1NVUFBPUlRTX1RJVExFCi0gICAgICAg
IG5zVVJMLl90aXRsZSA9IHBhc3RlYm9hcmRVUkwudGl0bGUuaXNFbXB0eSgpID8gdXNlclZpc2li
bGVTdHJpbmcocGFzdGVib2FyZFVSTC51cmwpIDogKE5TU3RyaW5nICopcGFzdGVib2FyZFVSTC50
aXRsZTsKKyAgICAgICAgbnNVUkwuX3RpdGxlID0gcGFzdGVib2FyZFVSTC50aXRsZS5pc0VtcHR5
KCkgPyBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRVUkwudXJsKSA6IChOU1N0cmlu
ZyAqKXBhc3RlYm9hcmRVUkwudGl0bGU7CiAjZW5kaWYKICAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0Om5zVVJMXTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgKaW5kZXggNDlkODExZDUxNDBjOGZkMGFmMDE2
MjlkOGQwYzFjOWU5ZTk5NGYxNy4uMGE2ZWZhZWYzZTg2MWVmNTlmZDQyODljZWY5MTFjNzc4ZGE3
MGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2suaApAQCAtMzUsOCAr
MzUsNiBAQCBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBVUkw7Ci0KIFdFQkNPUkVfRVhQT1JUIE5TU2V0ICpRTFByZXZpZXdHZXRTdXBwb3J0
ZWRNSU1FVHlwZXNTZXQoKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUUxQcmV2aWV3Q29u
dmVydGVyRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TVVJMUmVx
dWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqLCBOU1N0cmlu
ZyAqbWltZVR5cGUsIE5TRGF0YSAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
RGF0YU1hYy5tbQppbmRleCBkY2U3MzMzMWU3N2E4NzQ2OGI2NzExN2M0MzRiNGIwYjgyMzJhOWVi
Li43MTZjMzY2NmI5YzRiY2U3MTM2MWY0YzA1MzgxZGMzYTlhM2JkMTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1w
b3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCA8d3RmL2NvY29h
L05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxNb2JpbGVDb3Jl
U2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CkBAIC0yMTAsNyArMjExLDcgQEAgU3RyaW5n
IERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNs
ZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdlIGtub3cgLVtOU1VSTCBVUkxXaXRoU3Ry
aW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxsIHRoZSBzYW1lIGNhc2VzIHdlIGhhbmRs
ZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRpbmcgYW4gTlNVUkwuCiAgICAgaWYgKHRl
eHQuaXNVUkwpCi0gICAgICAgIHJldHVybiB1c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgVVJMV2l0
aFN0cmluZzpzdHJpbmddKTsKKyAgICAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmco
W05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CiAKICAgICAvLyBGSVhNRTogV1RGIHNob3Vs
ZCBvZmZlciBhIG5vbi1NYWMtc3BlY2lmaWMgd2F5IHRvIGNvbnZlcnQgc3RyaW5nIHRvIHByZWNv
bXBvc2VkIGZvcm0gc28gd2UgY2FuIGRvIGl0IGZvciBhbGwgcGxhdGZvcm1zLgogICAgIHJldHVy
biBbKE5TU3RyaW5nICopc3RyaW5nIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBp
bmddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXgg
MjAxY2IzMzhiYmQ3ZGM3NTNiMzM1YTMwMDYyYzJiOTEyNmIxMTk0OS4uOWQ4YmI4N2Y5YmUxN2Jh
MzU3MjQ3ZTA1NjljZTQ2NWZhNjY2YzFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC00MSwxMiArNDEsMTIgQEAKICNpbXBvcnQgIlBhZ2UuaCIK
ICNpbXBvcnQgIlN0cmluZ1RydW5jYXRvci5oIgogI2ltcG9ydCAiVGV4dEluZGljYXRvci5oIgot
I2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJLaXROU0ltYWdlRXh0cmFzLmgiCiAjaW1wb3J0
IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9D
b3JlVGV4dFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9VUkxGb3JtYXR0aW5nU1BJLmg+
CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lm
ICFIQVZFKFVSTF9GT1JNQVRUSU5HKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09QVElPTkFMKExpbmtQcmVz
ZW50YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5
c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1t
CmluZGV4IDA3MWQwYzkxMTc3OTRlNjAzOGQ5OGFhZDU2ZmU5NmZmOGY0ODE1MzMuLjhlZDc1MWE3
ZWMwZTVkMGJhZjc3NGY5ODYxMGFjYjA0NWNkMmIwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBQTEFU
Rk9STShNQUMpCiAKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8cGFs
L3NwaS9tYWMvTWV0YWRhdGFTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5o
PgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHIKIHsKICAgICBTdHJpbmcg
dXJsU3RyaW5nOwogICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyht
ZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJsU3RyaW5nID0gdXNlclZpc2libGVT
dHJpbmcoVVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOworICAgICAgICB1cmxTdHJpbmcgPSBX
VEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOwog
ICAgIGVsc2UKICAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggM2MzNjdkYTQ4
NDBjMGU0MmQzYTRhOTVjNzA2MTE1NTk2MTEzNDc2Mi4uOGE1YzI3NGNhNjRjMzkwMjAwN2U4NzQ2
YTQzZjViZmMzNjBkZGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KQEAgLTM3LDcgKzM3LDYgQEAKICNpbXBvcnQgIlBsYXRmb3JtUGFzdGVib2Fy
ZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZm
ZXIuaCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29y
ZUdyYXBoaWNzU1BJLmg+CkBAIC00NSw2ICs0NCw3IEBACiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1By
aXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogI2ltcG9ydCA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCA2
YTI4ZmU2MmFjZWNkNTcyNjU4ZDAzM2QwY2Q5YzFhYzMxZWUwZTNkLi4wZmU1MDVkZTU1YzY2MTY0
OGYwNTlkYTliN2ZhZTJhMDc3ZmM2MjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtNjMsMTAgKzYzLDEwIEBAIFJldGFpblB0cjxp
ZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4+IGNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIoY29uc3QgUGFz
dGVib2FyZFdyaXRlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoYXV0byYgdXJsID0gZGF0
YS51cmwoKSkgewotICAgICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmwtPnVybDsKLSAgICAgICAg
TlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nID0gdXJsLT51c2VyVmlzaWJsZUZvcm07Ci0gICAg
ICAgIE5TU3RyaW5nICp0aXRsZSA9IChOU1N0cmluZyAqKXVybC0+dGl0bGU7CisgICAgaWYgKGF1
dG8mIHVybERhdGEgPSBkYXRhLnVybERhdGEoKSkgeworICAgICAgICBOU1VSTCAqY29jb2FVUkwg
PSB1cmxEYXRhLT51cmw7CisgICAgICAgIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyA9IHVy
bERhdGEtPnVzZXJWaXNpYmxlRm9ybTsKKyAgICAgICAgTlNTdHJpbmcgKnRpdGxlID0gKE5TU3Ry
aW5nICopdXJsRGF0YS0+dGl0bGU7CiAgICAgICAgIGlmICghdGl0bGUubGVuZ3RoKSB7CiAgICAg
ICAgICAgICB0aXRsZSA9IGNvY29hVVJMLnBhdGgubGFzdFBhdGhDb21wb25lbnQ7CiAgICAgICAg
ICAgICBpZiAoIXRpdGxlLmxlbmd0aCkKQEAgLTc0LDcgKzc0LDcgQEAgUmV0YWluUHRyPGlkIDxO
U1Bhc3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2FyZFdyaXRlcihjb25zdCBQYXN0ZWJv
YXJkV3JpdGUKICAgICAgICAgfQogCiAgICAgICAgIC8vIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJk
VHlwZS4KLSAgICAgICAgYXV0byBwYXRocyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0
V2l0aE9iamVjdHM6QFsgQFsgY29jb2FVUkwuYWJzb2x1dGVTdHJpbmcgXSBdLCBAWyB1cmwtPnRp
dGxlLnN0cmlwV2hpdGVTcGFjZSgpIF0sIG5pbF0pOworICAgICAgICBhdXRvIHBhdGhzID0gYWRv
cHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpAWyBAWyBjb2NvYVVSTC5hYnNv
bHV0ZVN0cmluZyBdIF0sIEBbIHVybERhdGEtPnRpdGxlLnN0cmlwV2hpdGVTcGFjZSgpIF0sIG5p
bF0pOwogICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0UHJvcGVydHlMaXN0OnBhdGhzLmdldCgp
IGZvclR5cGU6dG9VVEkoQCJXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUiKS5nZXQoKV07CiAK
ICAgICAgICAgLy8gTlNVUkxQYm9hcmRUeXBlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggYjFkZmZiNmNiN2U2NDI1
NzQxYmQwYzZjMGU1M2I0ZWZkY2ZkYjE3MS4uMGNiMWRkOGI5MzBhMDY1YjdjMDgwMTVjYTJlMGNl
NWRiZDViMmI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbXBvcnQgIkNvbG9y
TWFjLmgiCiAjaW1wb3J0ICJMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oIgogI2ltcG9ydCAiUGFz
dGVib2FyZC5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNp
bXBvcnQgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QdWJsaWNTdWZmaXhNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVi
bGljU3VmZml4TWFjLm1tCmluZGV4IDIzMDM4MTdmM2IyMTRmYWM1NGZlMGY0ZTI2ZDA0OTMzM2I1
MTA0MzUuLjAxOTZiNDE2ZWQ0MjViMTcwMGViY2U5YzBiYzFkYzhiNjYzMTM4MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQpAQCAtMjgsOSAr
MjgsOSBAQAogCiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKIAotI2ltcG9ydCAiVVJM
LmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3dGYvY29jb2Ev
TlNVUkxFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Myw3ICs2Myw3IEBA
IFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWlu
KQogCiBTdHJpbmcgZGVjb2RlSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBkb21haW4pCiB7Ci0gICAg
cmV0dXJuIGRlY29kZUhvc3ROYW1lKChOU1N0cmluZyAqKShkb21haW4pKTsKKyAgICByZXR1cm4g
V1RGOjpkZWNvZGVIb3N0TmFtZShkb21haW4pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQppbmRleCBmYzQwYWExOWIwNGMz
YWUzNDcxODAyNzYzZjdkZjM4OWE3MjI4YzlkLi5iZDlkYTBkZDg2YWNjZDFkODRhNmMzZmVkYTBi
NDEyYTI2YWRmNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NM
S2V5R2VuZXJhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xL
ZXlHZW5lcmF0b3JNYWMubW0KQEAgLTI5LDEzICsyOSwxMyBAQAogI2lmIFBMQVRGT1JNKE1BQykK
IAogI2ltcG9ydCAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0
IDxTZWN1cml0eS9TZWNBc24xQ29kZXIuaD4KICNpbXBvcnQgPFNlY3VyaXR5L1NlY0FzbjFUZW1w
bGF0ZXMuaD4KICNpbXBvcnQgPFNlY3VyaXR5L1NlY0VuY29kZVRyYW5zZm9ybS5oPgogI2ltcG9y
dCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bXBvcnQgPHd0Zi9TY29wZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL2Nm
L1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9VUkxNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVVJMTWFj
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjVjMWRlN2IwMjgzY2QwZGJkYmE1
NmNhMTZmYWZjNWYzOWM1OGI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0KKysrIC9kZXYv
bnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiVVJMLmgiCi0K
LSNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJVUkxQYXJzZXIuaCIKLSNpbXBvcnQg
IldlYkNvcmVOU1VSTEV4dHJhcy5oIgotI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+
Ci0jaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLUBpbnRlcmZhY2UgTlNTdHJpbmcgKFdl
YkNvcmVOU1VSTEV4dHJhcykKLS0gKEJPT0wpX3dlYl9sb29rc0xpa2VJUEFkZHJlc3M7Ci1AZW5k
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwoTlNVUkwgKnVybCkKLXsKLSAgICBp
ZiAoIXVybCkgewotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPwot
ICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVm
KXVybCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsK
LSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotVVJMOjpvcGVyYXRvciBOU1VSTCAq
KCkgY29uc3QKLXsKLSAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlkZ2VkIENGVVJMIGJl
Y2F1c2UgY3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdvdWxkIG5vdCBwcmVzZXJ2ZSB0aGUg
b3JpZ2luYWwgc3RyaW5nLgotICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxpdHkgd2hlbiByb3VuZC10
cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgotICAgIHJldHVybiBjcmVhdGVDRlVSTCgpLmJy
aWRnaW5nQXV0b3JlbGVhc2UoKTsKLX0KLQotUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0
ZUNGVVJMKCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwt
ZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYg
c3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KLSAgICAgICAgcmV0dXJuIChf
X2JyaWRnZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAi
Il0pLmdldCgpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7Ci0KLSAg
ICAvLyBGYXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMgOC1iaXQgdG8gYXZvaWQgY29weWlu
ZyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KLSAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJp
dCgpKSkKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSksIG1fc3RyaW5nLmxlbmd0
aCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gU2xvd2VyIHBhdGguCi0gICAgICAgIFVSTENo
YXJCdWZmZXIgYnVmZmVyOwotICAgICAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsKLSAgICAgICAg
Y2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7Ci0gICAgfQotCi0gICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhaXNDRlVS
TFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICByZXR1cm4gY2ZVUkw7Ci19Ci0KLWJvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3Ry
aW5nVmlldyBob3N0KQotewotICAgIHJldHVybiBbaG9zdC5jcmVhdGVOU1N0cmluZ1dpdGhvdXRD
b3B5aW5nKCkuZ2V0KCkgX3dlYl9sb29rc0xpa2VJUEFkZHJlc3NdOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmgKaW5kZXggZmUx
MDY4MTM0NWY1N2YzZjQxZjRkMGRhNzJjZTYxNjFkYmIwNjk0OC4uMWMwNzMyOWJlOWViYjZmYjBh
MjNjNWQyN2NkYTgwMmM0ZTgwMWUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaApAQCAtMjYsMjkgKzI2LDEwIEBACiAgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLUBjbGFzcyBOU1N0cmluZzsKIEBjbGFzcyBOU1VSTDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcoTlNV
UkwgKik7CiBXRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlDYW5vbmljYWxpemluZ1VSTChOU1VS
TCAqKTsKLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3Ry
aW5nICosIE5TVVJMICpiYXNlVVJMKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJv
ci4KLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNVUkwgKik7
Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZShOU1N0
cmluZyAqLCBOU1JhbmdlLCBCT09MKiBlcnJvcik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGhvc3RO
YW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlLCBCT09MKiBlcnJv
cik7Ci1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UoTlNT
dHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1X
RUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcg
KiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JF
X0VYUE9SVCBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2
YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZW5jb2Rl
SG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3Iu
Ci1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3Jl
Q29tcG9uZW50KE5TVVJMICosIENGVVJMQ29tcG9uZW50VHlwZSk7Ci1XRUJDT1JFX0VYUE9SVCBO
U1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICosIE5TVVJMICpiYXNlVVJMKTsKLVdFQkNPUkVfRVhQ
T1JUIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOwotV0VCQ09SRV9FWFBPUlQgTlNE
YXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUp
OwotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVk
KE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsKLQotTlNSYW5nZSByYW5nZU9mVVJMU2NoZW1l
KE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBpc1VzZXJWaXNpYmxlVVJMKE5TU3Ry
aW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBsb29rc0xpa2VBYnNvbHV0ZVVSTChOU1N0cmlu
ZyAqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KaW5kZXggY2UxYzk1NjNiMGI1OWNhOTY0
NTkzYWM2ZGM5OTdkNGM0NDYwYWEwYi4uMDQ0YzQyOTBkZGZlNWY1MDk4Mzg5MTgzYThiYjQ5YWU0
NzRhODBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVO
U1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5T
VVJMRXh0cmFzLm1tCkBAIC0yNyw3ICsyNyw2IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJVUkxQYXJzZXIuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgog
I2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9GdW5jdGlv
bi5oPgpAQCAtMzksOTk5ICszOCw4IEBACiAjaW1wb3J0IDx1bmljb2RlL3VpZG5hLmg+CiAjaW1w
b3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KIAotLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBo
b2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCi0vLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0
aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkg
T0suCi0jZGVmaW5lIEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RIIDIwNDgKLSNkZWZpbmUgVVJMX0JZ
VEVTX0JVRkZFUl9MRU5HVEggMjA0OAotCi10eXBlZGVmIHZvaWQgKCogU3RyaW5nUmFuZ2VBcHBs
aWVyRnVuY3Rpb24pKE5TU3RyaW5nICosIE5TUmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4mKTsKLQotc3RhdGljIHVpbnQzMl90IElETlNjcmlwdFdoaXRlTGlzdFsoVVNDUklQVF9DT0RF
X0xJTUlUICsgMzEpIC8gMzJdOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29s
IGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCi17Ci0gICAg
cmV0dXJuIGNvZGVQb2ludCA9PSAweDA1NDggfHwgY29kZVBvaW50ID09IDB4MDU0RCB8fCBjb2Rl
UG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQb2ludCA9PSAweDA1N0Q7Ci19Ci0KLXN0YXRpYyBib29s
IGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCi17Ci0gICAgVUVy
cm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1
c2NyaXB0X2dldFNjcmlwdChjb2RlUG9pbnQsICZlcnJvcik7Ci0gICAgaWYgKGVycm9yICE9IFVf
WkVST19FUlJPUikgewotICAgICAgICBMT0dfRVJST1IoImdvdCBJQ1UgZXJyb3Igd2hpbGUgdHJ5
aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBlcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NyaXB0ID09IFVTQ1JJUFRfQVJNRU5JQU47Ci19Ci0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURp
Z2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSBjaGFyQ29kZSkKLXsKLSAgICBp
ZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24oY2hhckNvZGUpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyBUaGluZ3MgdGhlIFVSTCBQYXJzZXIgcmVqZWN0czoKLSAgICBzd2l0
Y2ggKGNoYXJDb2RlKSB7Ci0gICAgY2FzZSAnIyc6Ci0gICAgY2FzZSAnJSc6Ci0gICAgY2FzZSAn
Lyc6Ci0gICAgY2FzZSAnOic6Ci0gICAgY2FzZSAnPyc6Ci0gICAgY2FzZSAnQCc6Ci0gICAgY2Fz
ZSAnWyc6Ci0gICAgY2FzZSAnXFwnOgotICAgIGNhc2UgJ10nOgotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfQotCi0KLQot
c3RhdGljIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0ZXIoc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBw
cmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjaGFyQ29kZSkKLXsKLSAgICAvLyBUaGlzIGZ1bmN0
aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVuc2FmZSwgbG9va2FsaWtlIGNoYXJhY3RlcnM6
Ci0gICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hhcmFjdGVyLCBhbnkgY2hhcmFjdGVyIGNvbnNp
ZGVyZWQgYXMgd2hpdGVzcGFjZSwKLSAgICAvLyBhbnkgaWdub3JhYmxlIGNoYXJhY3RlciwgYW5k
IGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBsb2Nrcy4KLSAgICAKLSAgICAvLyBXZSBhbHNv
IGNvbnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4gTW96aWxsYSdzIGJsYWNrbGlzdCA8aHR0cDov
L2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklETi5ibGFja2xpc3RfY2hhcnM+LgotCi0gICAg
Ly8gU29tZSBvZiB0aGUgY2hhcmFjdGVycyBoZXJlIHdpbGwgbmV2ZXIgYXBwZWFyIG9uY2UgSUNV
IGhhcyBlbmNvZGVkLgotICAgIC8vIEZvciBleGFtcGxlLCBJQ1UgdHJhbnNmb3JtcyBtb3N0IHNw
YWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNlIGFuZCBtb3N0Ci0gICAgLy8gc2xhc2hlcyBpbnRvIGFu
IEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUgb2YgdGhlIHR3byBjYWxsZXJzIHVzZXMgdGhpcwotICAg
IC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBoYXZlIG5vdCBiZWVuIHByb2Nlc3NlZCBieSBJQ1UsIHNv
IHRoZXkgYXJlIG5lZWRlZCBoZXJlLgotICAgIAotICAgIGlmICghdV9pc3ByaW50KGNoYXJDb2Rl
KSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hhckNvZGUpIHx8IHVfaGFzQmluYXJ5UHJvcGVydHkoY2hh
ckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQpKQotICAgICAgICByZXR1
cm4gWUVTOwotICAgIAotICAgIHN3aXRjaCAoY2hhckNvZGUpIHsKLSAgICAgICAgY2FzZSAweDAw
QkM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUiAqLwotICAgICAgICBjYXNlIDB4MDBC
RDogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGICovCi0gICAgICAgIGNhc2UgMHgwMEJFOiAv
KiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMgKi8KLSAgICAgICAgY2FzZSAweDAwRUQ6
IC8qIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUgKi8KLSAgICAgICAgY2FzZSAweDAx
QzM6IC8qIExBVElOIExFVFRFUiBSRVRST0ZMRVggQ0xJQ0sgKi8KLSAgICAgICAgY2FzZSAweDAy
NTE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBBTFBIQSAqLwotICAgICAgICBjYXNlIDB4MDI2MTog
LyogTEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBHICovCi0gICAgICAgIGNhc2UgMHgwMkQwOiAv
KiBNT0RJRklFUiBMRVRURVIgVFJJQU5HVUxBUiBDT0xPTiAqLwotICAgICAgICBjYXNlIDB4MDMz
NTogLyogQ09NQklOSU5HIFNIT1JUIFNUUk9LRSBPVkVSTEFZICovCi0gICAgICAgIGNhc2UgMHgw
MzM3OiAvKiBDT01CSU5JTkcgU0hPUlQgU09MSURVUyBPVkVSTEFZICovCi0gICAgICAgIGNhc2Ug
MHgwMzM4OiAvKiBDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9WRVJMQVkgKi8KLSAgICAgICAgY2Fz
ZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZVTEwgU1RPUCAqLwotICAgICAgICBjYXNlIDB4MDVCNDog
LyogSEVCUkVXIFBPSU5UIEhJUklRICovCi0gICAgICAgIGNhc2UgMHgwNUJDOiAvKiBIRUJSRVcg
UE9JTlQgREFHRVNIIE9SIE1BUElRICovCi0gICAgICAgIGNhc2UgMHgwNUMzOiAvKiBIRUJSRVcg
UFVOQ1RVQVRJT04gU09GIFBBU1VRICovCi0gICAgICAgIGNhc2UgMHgwNUY0OiAvKiBIRUJSRVcg
UFVOQ1RVQVRJT04gR0VSU0hBWUlNICovCi0gICAgICAgIGNhc2UgMHgwNjA5OiAvKiBBUkFCSUMt
SU5ESUMgUEVSIE1JTExFIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2MEE6IC8qIEFSQUJJQy1J
TkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2NTA6IC8qIEFS
QUJJQyBLQVNSQSAqLwotICAgICAgICBjYXNlIDB4MDY2MDogLyogQVJBQklDIElORElDIERJR0lU
IFpFUk8gKi8KLSAgICAgICAgY2FzZSAweDA2NkE6IC8qIEFSQUJJQyBQRVJDRU5UIFNJR04gKi8K
LSAgICAgICAgY2FzZSAweDA2RDQ6IC8qIEFSQUJJQyBGVUxMIFNUT1AgKi8KLSAgICAgICAgY2Fz
ZSAweDA2RjA6IC8qIEVYVEVOREVEIEFSQUJJQyBJTkRJQyBESUdJVCBaRVJPICovCi0gICAgICAg
IGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMgU1VQUkFMSU5FQVIgRlVMTCBTVE9QICovCi0gICAgICAg
IGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMgU1VCTElORUFSIEZVTEwgU1RPUCAqLwotICAgICAgICBj
YXNlIDB4MDcwMzogLyogU1lSSUFDIFNVUFJBTElORUFSIENPTE9OICovCi0gICAgICAgIGNhc2Ug
MHgwNzA0OiAvKiBTWVJJQUMgU1VCTElORUFSIENPTE9OICovCi0gICAgICAgIGNhc2UgMHgxNzM1
OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQVU5DVFVBVElPTiAqLwotICAgICAgICBjYXNlIDB4MUQw
NDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgQyAqLwotICAgICAgICBjYXNlIDB4MUQw
RjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTyAqLwotICAgICAgICBjYXNlIDB4MUQx
QzogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVSAqLwotICAgICAgICBjYXNlIDB4MUQy
MDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgViAqLwotICAgICAgICBjYXNlIDB4MUQy
MTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVyAqLwotICAgICAgICBjYXNlIDB4MUQy
MjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgWiAqLwotICAgICAgICBjYXNlIDB4MUVD
RDogLyogTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1QgQkVMT1cgKi8KLSAgICAgICAgY2Fz
ZSAweDIwMTA6IC8qIEhZUEhFTiAqLwotICAgICAgICBjYXNlIDB4MjAxMTogLyogTk9OLUJSRUFL
SU5HIEhZUEhFTiAqLwotICAgICAgICBjYXNlIDB4MjAyNDogLyogT05FIERPVCBMRUFERVIgKi8K
LSAgICAgICAgY2FzZSAweDIwMjc6IC8qIEhZUEhFTkFUSU9OIFBPSU5UICovCi0gICAgICAgIGNh
c2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAq
LwotICAgICAgICBjYXNlIDB4MjAzQTogLyogU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFV
T1RBVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHgyMDQxOiAvKiBDQVJFVCBJTlNFUlRJT04g
UE9JTlQgKi8KLSAgICAgICAgY2FzZSAweDIwNDQ6IC8qIEZSQUNUSU9OIFNMQVNIICovCi0gICAg
ICAgIGNhc2UgMHgyMDUyOiAvKiBDT01NRVJDSUFMIE1JTlVTIFNJR04gKi8KLSAgICAgICAgY2Fz
ZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgVEhJUkQgKi8KLSAgICAgICAgY2FzZSAw
eDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08gVEhJUkRTICovCi0gICAgICAgIGNhc2UgMHgy
MTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEZJRlRIICovCi0gICAgICAgIGNhc2UgMHgyMTU2
OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1Nzog
LyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1ODog
LyogVlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTU5OiAv
KiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIICovCi0gICAgICAgIGNhc2UgMHgyMTVBOiAvKiBW
VUxHQVIgRlJBQ1RJT04gRklWRSBTSVhUSFMgKi8KLSAgICAgICAgY2FzZSAweDIxNUI6IC8qIFZV
TEdBUiBGUkFDVElPTiBPTkUgRUlHSFQgKi8KLSAgICAgICAgY2FzZSAweDIxNUM6IC8qIFZVTEdB
UiBGUkFDVElPTiBUSFJFRSBFSUdIVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTVEOiAvKiBWVUxH
QVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTVFOiAvKiBWVUxH
QVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1RjogLyogRlJB
Q1RJT04gTlVNRVJBVE9SIE9ORSAqLwotICAgICAgICBjYXNlIDB4MjIxMjogLyogTUlOVVMgU0lH
TiAqLwotICAgICAgICBjYXNlIDB4MjIxNTogLyogRElWSVNJT04gU0xBU0ggKi8KLSAgICAgICAg
Y2FzZSAweDIyMTY6IC8qIFNFVCBNSU5VUyAqLwotICAgICAgICBjYXNlIDB4MjIzNjogLyogUkFU
SU8gKi8KLSAgICAgICAgY2FzZSAweDIzM0Y6IC8qIEFQTCBGVU5DVElPTkFMIFNZTUJPTCBTTEFT
SCBCQVIgKi8KLSAgICAgICAgY2FzZSAweDIzQUU6IC8qIElOVEVHUkFMIEVYVEVOU0lPTiAqLwot
ICAgICAgICBjYXNlIDB4MjQ0QTogLyogT0NSIERPVUJMRSBCQUNLU0xBU0ggKi8KLSAgICAgICAg
Y2FzZSAweDI1NzE6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwg
VVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLwotICAgICAgICBjYXNlIDB4MjU3MjogLyogRGlz
cGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBVUFBFUiBMRUZUIFRPIExPV0VS
IFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyOUY2OiAvKiBTT0xJRFVTIFdJVEggT1ZFUkJBUiAq
LwotICAgICAgICBjYXNlIDB4MjlGODogLyogQklHIFNPTElEVVMgKi8KLSAgICAgICAgY2FzZSAw
eDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFSWSBSRUxBVElPTiAqLwotICAgICAgICBjYXNl
IDB4MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BFUkFUT1IgKi8KLSAgICAgICAgY2FzZSAweDJG
RjA6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIFJJR0hUICov
Ci0gICAgICAgIGNhc2UgMHgyRkYxOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNU
RVIgQUJPVkUgVE8gQkVMT1cgKi8KLSAgICAgICAgY2FzZSAweDJGRjI6IC8qIElERU9HUkFQSElD
IERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIE1JRERMRSBBTkQgUklHSFQgKi8KLSAgICAg
ICAgY2FzZSAweDJGRjM6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9W
RSBUTyBNSURETEUgQU5EIEJFTE9XICovCi0gICAgICAgIGNhc2UgMHgyRkY0OiAvKiBJREVPR1JB
UEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVMTCBTVVJST1VORCAqLwotICAgICAgICBjYXNl
IDB4MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZS
T00gQUJPVkUgKi8KLSAgICAgICAgY2FzZSAweDJGRjY6IC8qIElERU9HUkFQSElDIERFU0NSSVBU
SU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJFTE9XICovCi0gICAgICAgIGNhc2UgMHgyRkY3
OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMRUZU
ICovCi0gICAgICAgIGNhc2UgMHgyRkY4OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFS
QUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZUICovCi0gICAgICAgIGNhc2UgMHgyRkY5OiAv
KiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBS
SUdIVCAqLwotICAgICAgICBjYXNlIDB4MkZGQTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04g
Q0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIgTEVGVCAqLwotICAgICAgICBjYXNlIDB4MkZG
QjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIE9WRVJMQUlEICovCi0gICAg
ICAgIGNhc2UgMHgzMDAyOiAvKiBJREVPR1JBUEhJQyBGVUxMIFNUT1AgKi8KLSAgICAgICAgY2Fz
ZSAweDMwMDg6IC8qIExFRlQgQU5HTEUgQlJBQ0tFVCAqLwotICAgICAgICBjYXNlIDB4MzAxNDog
LyogTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAgIGNhc2UgMHgzMDE1OiAv
KiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAgIGNhc2UgMHgzMDMzOiAv
KiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQUEVSIEhBTEYgKi8KLSAgICAgICAgY2FzZSAw
eDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgTE9XRVIgSEFMRiAqLwotICAgICAg
ICBjYXNlIDB4MzIxRDogLyogUEFSRU5USEVTSVpFRCBLT1JFQU4gQ0hBUkFDVEVSIE9KRU9OICov
Ci0gICAgICAgIGNhc2UgMHgzMjFFOiAvKiBQQVJFTlRIRVNJWkVEIEtPUkVBTiBDSEFSQUNURVIg
TyBIVSAqLwotICAgICAgICBjYXNlIDB4MzNBRTogLyogU1FVQVJFIFJBRCBPVkVSIFMgKi8KLSAg
ICAgICAgY2FzZSAweDMzQUY6IC8qIFNRVUFSRSBSQUQgT1ZFUiBTIFNRVUFSRUQgKi8KLSAgICAg
ICAgY2FzZSAweDMzQzY6IC8qIFNRVUFSRSBDIE9WRVIgS0cgKi8KLSAgICAgICAgY2FzZSAweDMz
REY6IC8qIFNRVUFSRSBBIE9WRVIgTSAqLwotICAgICAgICBjYXNlIDB4MDVCOTogLyogSEVCUkVX
IFBPSU5UIEhPTEFNICovCi0gICAgICAgIGNhc2UgMHgwNUJBOiAvKiBIRUJSRVcgUE9JTlQgSE9M
QU0gSEFTRVIgRk9SIFZBViAqLwotICAgICAgICBjYXNlIDB4MDVDMTogLyogSEVCUkVXIFBPSU5U
IFNISU4gRE9UICovCi0gICAgICAgIGNhc2UgMHgwNUMyOiAvKiBIRUJSRVcgUE9JTlQgU0lOIERP
VCAqLwotICAgICAgICBjYXNlIDB4MDVDNDogLyogSEVCUkVXIE1BUksgVVBQRVIgRE9UICovCi0g
ICAgICAgIGNhc2UgMHhBNzMxOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBTICovCi0g
ICAgICAgIGNhc2UgMHhBNzcxOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgRFVNICovCi0gICAgICAg
IGNhc2UgMHhBNzg5OiAvKiBNT0RJRklFUiBMRVRURVIgQ09MT04gKi8KLSAgICAgICAgY2FzZSAw
eEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBTRU1JQ09MT04gKi8KLSAg
ICAgICAgY2FzZSAweEZFMTU6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFWENM
QU1BVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHhGRTNGOiAvKiBQUkVTRU5UQVRJT04gRk9S
TSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFDS0VUICovCi0gICAgICAgIGNhc2UgMHhGRTVE
OiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KLSAgICAgICAgY2FzZSAw
eEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KLSAgICAgICAg
Y2FzZSAweEZGMEU6IC8qIEZVTExXSURUSCBGVUxMIFNUT1AgKi8KLSAgICAgICAgY2FzZSAweEZG
MEY6IC8qIEZVTEwgV0lEVEggU09MSURVUyAqLwotICAgICAgICBjYXNlIDB4RkY2MTogLyogSEFM
RldJRFRIIElERU9HUkFQSElDIEZVTEwgU1RPUCAqLwotICAgICAgICBjYXNlIDB4RkZGQzogLyog
T0JKRUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAqLwotICAgICAgICBjYXNlIDB4RkZGRDogLyog
UkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCi0gICAgICAgIGNhc2UgMHgxRjUwRjogLyogTE9DSyBX
SVRIIElOSyBQRU4gKi8KLSAgICAgICAgY2FzZSAweDFGNTEwOiAvKiBDTE9TRUQgTE9DSyBXSVRI
IEtFWSAqLwotICAgICAgICBjYXNlIDB4MUY1MTE6IC8qIEtFWSAqLwotICAgICAgICBjYXNlIDB4
MUY1MTI6IC8qIExPQ0sgKi8KLSAgICAgICAgY2FzZSAweDFGNTEzOiAvKiBPUEVOIExPQ0sgKi8K
LSAgICAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgICAgIGNhc2UgMHgwMzA3OiAvKiBDT01CSU5J
TkcgRE9UIEFCT1ZFICovCi0gICAgICAgICAgICByZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQgPT0g
MHgwMjM3IC8qIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogKi8KLSAgICAgICAgICAgICAg
ICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAxMzEgLyogTEFUSU4gU01BTEwgTEVUVEVSIERP
VExFU1MgSSAqLwotICAgICAgICAgICAgICAgIHx8IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDVE
NTsgLyogSEVCUkVXIExFVFRFUiBWQVYgKi8KLSAgICAgICAgY2FzZSAweDA1NDg6IC8qIEFSTUVO
SUFOIENBUElUQUwgTEVUVEVSIFZPICovCi0gICAgICAgIGNhc2UgMHgwNTREOiAvKiBBUk1FTklB
TiBDQVBJVEFMIExFVFRFUiBTRUggKi8KLSAgICAgICAgY2FzZSAweDA1Nzg6IC8qIEFSTUVOSUFO
IFNNQUxMIExFVFRFUiBWTyAqLwotICAgICAgICBjYXNlIDB4MDU3RDogLyogQVJNRU5JQU4gU01B
TEwgTEVUVEVSIFNFSCAqLwotICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50Ci0g
ICAgICAgICAgICAgICAgJiYgIWlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKHByZXZp
b3VzQ29kZVBvaW50LnZhbHVlKCkpCi0gICAgICAgICAgICAgICAgJiYgIWlzQXJtZW5pYW5TY3Jp
cHRDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUoKSk7Ci0gICAgICAgIGNhc2UgJy4n
OgotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIHByZXZpb3VzQ29kZVBvaW50Ci0gICAgICAgICAgICAgICAgJiYgaXNBcm1lbmlhbkxv
b2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgpKQotICAgICAgICAgICAg
ICAgICYmICEoaXNBcm1lbmlhblNjcmlwdENoYXJhY3RlcihjaGFyQ29kZSkgfHwgaXNBU0NJSURp
Z2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoY2hhckNvZGUpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2
b2lkIHdoaXRlTGlzdElETlNjcmlwdChjb25zdCBjaGFyKiBzY3JpcHROYW1lKQotewotICAgIGlu
dDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9wZXJ0eVZhbHVlRW51bShVQ0hBUl9TQ1JJUFQsIHNjcmlw
dE5hbWUpOwotICAgIGlmIChzY3JpcHQgPj0gMCAmJiBzY3JpcHQgPCBVU0NSSVBUX0NPREVfTElN
SVQpIHsKLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc2NyaXB0IC8gMzI7Ci0gICAgICAgIHVpbnQz
Ml90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7Ci0gICAgICAgIElETlNjcmlwdFdoaXRlTGlz
dFtpbmRleF0gfD0gbWFzazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBCT09MIHJlYWRJRE5TY3JpcHRX
aGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpmaWxlbmFtZSkKLXsKLSAgICBpZiAoIWZpbGVuYW1lKQot
ICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBGSUxFICpmaWxlID0gZm9wZW4oW2ZpbGVuYW1lIGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICJyIik7Ci0gICAgaWYgKCFmaWxlKQotICAgICAgICBy
ZXR1cm4gTk87Ci0gICAgCi0gICAgLy8gUmVhZCBhIHdvcmQgYXQgYSB0aW1lLgotICAgIC8vIEFs
bG93IGNvbW1lbnRzLCBzdGFydGluZyB3aXRoICMgY2hhcmFjdGVyIHRvIHRoZSBlbmQgb2YgdGhl
IGxpbmUuCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgLy8gU2tpcCBhIGNvbW1lbnQgaWYgcHJl
c2VudC4KLSAgICAgICAgaWYgKGZzY2FuZihmaWxlLCAiICMlKlteXG5ccl0lKltcblxyXSIpID09
IEVPRikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgLy8gUmVhZCBhIHNj
cmlwdCBuYW1lIGlmIHByZXNlbnQuCi0gICAgICAgIGNoYXIgd29yZFszM107Ci0gICAgICAgIGlu
dCByZXN1bHQgPSBmc2NhbmYoZmlsZSwgIiAlMzJbXiMgXHRcblxyXSUqW14jIFx0XG5ccl0gIiwg
d29yZCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gRU9GKQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIAotICAgICAgICBpZiAocmVzdWx0ID09IDEpIHsKLSAgICAgICAgICAgIC8vIEdvdCBh
IHdvcmQsIG1hcCB0byBzY3JpcHQgY29kZSBhbmQgcHV0IGl0IGludG8gdGhlIGFycmF5LgotICAg
ICAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHdvcmQpOwotICAgICAgICB9Ci0gICAgfQotICAg
IGZjbG9zZShmaWxlKTsKLSAgICByZXR1cm4gWUVTOwotfQotCi1zdGF0aWMgQk9PTCBhbGxDaGFy
YWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBs
ZW5ndGgpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBmbGFnOwotICAgIGRpc3BhdGNo
X29uY2UoJmZsYWcsIF57Ci0gICAgICAgIC8vIFJlYWQgd2hpdGUgbGlzdCBmcm9tIGxpYnJhcnku
Ci0gICAgICAgIE5TQXJyYXkgKmRpcnMgPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9t
YWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxsRG9tYWluc01hc2ssIFlFUyk7Ci0gICAgICAg
IGludCBudW1EaXJzID0gW2RpcnMgY291bnRdOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bURpcnM7IGkrKykgewotICAgICAgICAgICAgaWYgKHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RG
aWxlKFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGNoYXIqIGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3Rb
MjBdID0gewotICAgICAgICAgICAgIkNvbW1vbiIsCi0gICAgICAgICAgICAiSW5oZXJpdGVkIiwK
LSAgICAgICAgICAgICJBcmFiaWMiLAotICAgICAgICAgICAgIkFybWVuaWFuIiwKLSAgICAgICAg
ICAgICJCb3BvbW9mbyIsCi0gICAgICAgICAgICAiQ2FuYWRpYW5fQWJvcmlnaW5hbCIsCi0gICAg
ICAgICAgICAiRGV2YW5hZ2FyaSIsCi0gICAgICAgICAgICAiRGVzZXJldCIsCi0gICAgICAgICAg
ICAiR3VqYXJhdGkiLAotICAgICAgICAgICAgIkd1cm11a2hpIiwKLSAgICAgICAgICAgICJIYW5n
dWwiLAotICAgICAgICAgICAgIkhhbiIsCi0gICAgICAgICAgICAiSGVicmV3IiwKLSAgICAgICAg
ICAgICJIaXJhZ2FuYSIsCi0gICAgICAgICAgICAiS2F0YWthbmFfT3JfSGlyYWdhbmEiLAotICAg
ICAgICAgICAgIkthdGFrYW5hIiwKLSAgICAgICAgICAgICJMYXRpbiIsCi0gICAgICAgICAgICAi
VGFtaWwiLAotICAgICAgICAgICAgIlRoYWkiLAotICAgICAgICAgICAgIllpIiwKLSAgICAgICAg
fTsKLSAgICAgICAgZm9yIChjb25zdCBjaGFyKiBzY3JpcHROYW1lIDogZGVmYXVsdElETlNjcmlw
dFdoaXRlTGlzdCkKLSAgICAgICAgICAgIHdoaXRlTGlzdElETlNjcmlwdChzY3JpcHROYW1lKTsK
LSAgICB9KTsKLSAgICAKLSAgICBpbnQzMl90IGkgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8VUNo
YXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKLSAgICAg
ICAgVUNoYXIzMiBjOwotICAgICAgICBVMTZfTkVYVChidWZmZXIsIGksIGxlbmd0aCwgYykKLSAg
ICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgVVNjcmlwdENv
ZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQoYywgJmVycm9yKTsKLSAgICAgICAgaWYgKGVy
cm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVy
cm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNjcmlwdHM6ICVkIiwgZXJyb3IpOwotICAgICAg
ICAgICAgcmV0dXJuIE5POwotICAgICAgICB9Ci0gICAgICAgIGlmIChzY3JpcHQgPCAwKSB7Ci0g
ICAgICAgICAgICBMT0dfRVJST1IoImdvdCBuZWdhdGl2ZSBudW1iZXIgZm9yIHNjcmlwdCBjb2Rl
IGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7Ci0gICAgICAgICAgICByZXR1cm4gTk87Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKHNjcmlwdCA+PSBVU0NSSVBUX0NPREVfTElNSVQpCi0gICAgICAgICAg
ICByZXR1cm4gTk87Ci0KLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc2NyaXB0IC8gMzI7Ci0gICAg
ICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7Ci0gICAgICAgIGlmICghKElE
TlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gJiBtYXNrKSkKLSAgICAgICAgICAgIHJldHVybiBOTzsK
LSAgICAgICAgCi0gICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQ
b2ludCwgYykpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0gICAgICAgIHByZXZpb3VzQ29kZVBv
aW50ID0gYzsKLSAgICB9Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotc3RhdGljIGJvb2wgaXNTZWNv
bmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBp
bnQzMl90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKFVDaGFyKT4mIGNoYXJhY3Rl
cklzQWxsb3dlZCkKLXsKLSAgICBBU1NFUlQobGVuZ3RoID4gMCk7Ci0KLSAgICBmb3IgKGludDMy
X3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIFVDaGFyIGNoID0gYnVm
ZmVyW2ldOwotICAgICAgICAKLSAgICAgICAgaWYgKGNoYXJhY3RlcklzQWxsb3dlZChjaCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIE9ubHkgY2hlY2sgdGhl
IHNlY29uZCBsZXZlbCBkb21haW4uIExvd2VyIGxldmVsIHJlZ2lzdHJhcnMgbWF5IGhhdmUgZGlm
ZmVyZW50IHJ1bGVzLgotICAgICAgICBpZiAoY2ggPT0gJy4nKQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVl
OwotfQotCi0jZGVmaW5lIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKHN1ZmZpeCwgZnVu
Y3Rpb24pIFwKLSAgICB7IFwKLSAgICAgICAgc3RhdGljIGNvbnN0IGludDMyX3Qgc3VmZml4TGVu
Z3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yoc3VmZml4WzBdKTsgXAotICAgICAgICBpZiAo
bGVuZ3RoID4gc3VmZml4TGVuZ3RoICYmIDAgPT0gbWVtY21wKGJ1ZmZlciArIGxlbmd0aCAtIHN1
ZmZpeExlbmd0aCwgc3VmZml4LCBzaXplb2Yoc3VmZml4KSkpIFwKLSAgICAgICAgICAgIHJldHVy
biBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGJ1ZmZlciwgbGVuZ3Ro
IC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlvbik7IFwKLSAgICB9Ci0KLXN0YXRpYyBib29sIGlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNoYXIgY2gpCi17Ci0gICAgLy8gT25seSBtb2Rlcm4g
UnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICByZXR1
cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBpc0FT
Q0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLX0KLQotc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVy
c0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGludDMyX3QgbGVuZ3RoKQot
ewotICAgIC8vIFNraXAgdHJhaWxpbmcgZG90IGZvciByb290IGRvbWFpbi4KLSAgICBpZiAoYnVm
ZmVyW2xlbmd0aCAtIDFdID09ICcuJykKLSAgICAgICAgbGVuZ3RoLS07Ci0KLSAgICAvLyBodHRw
Oi8vY2N0bGQucnUvZmlsZXMvcGRmL2RvY3MvcnVsZXNfcnUtcmYucGRmCi0gICAgc3RhdGljIGNv
bnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0NDAs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0NDQgIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBFRgotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENI
RVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBo
dHRwOi8vcnVzbmFtZXMucnUvcnVsZXMucGwKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxs
aWNSVVNbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNN
QUxMIExFVFRFUiBFUgotICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBV
Ci0gICAgICAgIDB4MDQ0MSAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAgfTsKLSAg
ICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1JVUywgaXNSdXNzaWFuRG9t
YWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vcnUuZmFpdGlkLm9yZy9wcm9qZWN0
cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2YS9pZG4KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3ly
aWxsaWNNT1NLVkFbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0M0MsIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBPCi0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAg
ICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAgIDB4MDQzMiwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCi0gICAgICAgIDB4MDQzMCAgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEEKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVT
KGN5cmlsbGljTU9TS1ZBLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8v
IGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9mb3J1c2VyL2RvY3MvcmVncnVsZXMucGhwCi0gICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGN5cmlsbGljREVUSVtdID0gewotICAgICAgICAnLicsCi0gICAgICAg
IDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCi0gICAgICAgIDB4MDQzNSwgLy8g
Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCi0gICAgICAgIDB4MDQ0MiwgLy8gQ1lSSUxMSUMgU01B
TEwgTEVUVEVSIFRFCi0gICAgICAgIDB4MDQzOCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkK
LSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljREVUSSwg
aXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vY29yZW5pYy5v
cmcgLSBydWxlcyBub3QgcHVibGlzaGVkLiBUaGUgd29yZCBpcyBSdXNzaWFuLCBzbyBvbmx5IGFs
bG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0aW1lLAotICAgIC8vIGFsdGhvdWdoIHdlIG1heSBuZWVk
IHRvIHJldmlzZSB0aGUgY2hlY2tzIGlmIHRoaXMgZW5kcyB1cCBiZWluZyB1c2VkIHdpdGggb3Ro
ZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBSdXNzaWEuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5
cmlsbGljT05MQVlOW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0M0QsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBFTgotICAgICAgICAweDA0M0IsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAotICAg
ICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAgICAgIDB4MDQzOSwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKLSAgICAgICAgMHgwNDNEICAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgRU4KLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9N
QVRDSEVTKGN5cmlsbGljT05MQVlOLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQot
ICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHNhbWUgYXMgYWJvdmUuCi0gICAgc3RhdGljIGNv
bnN0IFVDaGFyIGN5cmlsbGljU0FZVFtdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQ0
MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIEEKLSAgICAgICAgMHgwNDM5LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgU0hPUlQgSQotICAgICAgICAweDA0NDIgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBURQot
ICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNTQVlULCBp
c1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9waXIub3JnL3By
b2R1Y3RzL29wci1kb21haW4vIC0gcnVsZXMgbm90IHB1Ymxpc2hlZC4gQWNjb3JkaW5nIHRvIHRo
ZSByZWdpc3RyeSBzaXRlLAotICAgIC8vIHRoZSBpbnRlbmRlZCBhdWRpZW5jZSBpcyAiUnVzc2lh
biBhbmQgb3RoZXIgU2xhdmljLXNwZWFraW5nIG1hcmtldHMiLgotICAgIC8vIENocm9tZSBhcHBl
YXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lhbiwgc28gc3RpY2tpbmcgd2l0aCB0aGF0IGZvciBub3cu
Ci0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT1JHW10gPSB7Ci0gICAgICAgICcuJywK
LSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0
NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0MzMgIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBHSEUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9N
QVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAg
IC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxlcy5odG1sCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5
cmlsbGljQkVMW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDMxLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgQkUKLSAgICAgICAgMHgwNDM1LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgSUUKLSAgICAgICAgMHgwNDNCICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKLSAgICB9
OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljQkVMLCBbXShVQ2hh
ciBjaCkgewotICAgICAgICAvLyBSdXNzaWFuIGFuZCBCeWVsb3J1c3NpYW4gbGV0dGVycywgZGln
aXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMw
ICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9
PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0n
OwotICAgIH0pOwotCi0gICAgLy8gaHR0cDovL3d3dy5uaWMua3ovZG9jcy9wb3J5YWRva192bmVk
cmVuaXlhX2thel9ydS5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNLQVpbXSA9
IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0OUIsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBLQSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBBCi0gICAgICAgIDB4MDQzNyAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCi0gICAg
fTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0tBWiwgW10oVUNo
YXIgY2gpIHsKLSAgICAgICAgLy8gS2F6YWtoIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFy
ZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYp
IHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0RDkgfHwgY2ggPT0gMHgwNDkzIHx8IGNoID09
IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRCMSB8
fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0gMHgwNEJCIHx8IGNoID09IDB4MDQ1NiB8fCBpc0FTQ0lJ
RGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIGh0dHA6Ly91YW5pYy5u
ZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1bGVzJTIwb2YlMjBVS1JfdjQuMC5wZGYKLSAgICBzdGF0
aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNVS1JbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAw
eDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCi0gICAgICAgIDB4MDQzQSwgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAgIDB4MDQ0MCAgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEVSCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJp
bGxpY1VLUiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gUnVzc2lhbiBhbmQgVWtyYWluaWFu
IGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4g
KGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAw
eDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NTcgfHwg
aXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwOi8v
d3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1FTlRJL2lkbi1zcmItcG9saWN5LXRlcm1zb2Z1c2UtdjEu
NC1lbmcucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU1JCW10gPSB7Ci0gICAg
ICAgICcuJywKLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKLSAg
ICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKLSAgICAgICAgMHgwNDMx
ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU1JCLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBT
ZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICBy
ZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYg
Y2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTIgfHwgY2ggPT0gMHgwNDU4IHx8IGNoID09IDB4
MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0gMHgwNDVCIHx8IGNoID09IDB4MDQ1RiB8fCBp
c0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIGh0dHA6Ly9t
YXJuZXQubWsvZG9jL3ByYXZpbG5pay1tay1ta2QucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFy
IGN5cmlsbGljTUtEW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNDLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgRU0KLSAgICAgICAgMHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgS0EKLSAgICAgICAgMHgwNDM0ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKLSAg
ICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTUtELCBbXShV
Q2hhciBjaCkgewotICAgICAgICAvLyBNYWNlZG9uaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFz
aGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAw
eDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTMg
fHwgY2ggPT0gMHgwNDU1IHx8IGNoID09IDB4MDQ1OCB8fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0g
MHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8fCBjaCA9PSAweDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNo
KSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwczovL3d3dy5tb24ubW4vY3Mv
Ci0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTU9OW10gPSB7Ci0gICAgICAgICcuJywK
LSAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KLSAgICAgICAgMHgw
NDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0M0QgIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBFTgotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01B
VENIRVMoY3lyaWxsaWNNT04sIFtdKFVDaGFyIGNoKSB7Ci0gICAgICAgIC8vIE1vbmdvbGlhbiBs
ZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICAgICAgcmV0dXJuIChj
aCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgw
NEU5IHx8IGNoID09IDB4MDRBRiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAg
ICB9KTsKLQotICAgIC8vIE5vdCBhIGtub3duIHRvcCBsZXZlbCBkb21haW4gd2l0aCBzcGVjaWFs
IHJ1bGVzLgotICAgIHJldHVybiBOTzsKLX0KLQotLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFu
cyBubyBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1ha2VTdHJpbmcgaXMgTk8sIHRoZW4g
cmV0dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwgb3Igc2VsZiB0byBpbmRpY2F0ZSBtYXBwaW5nIGlz
IG5lY2Vzc2FyeS4KLS8vIElmIG1ha2VTdHJpbmcgaXMgWUVTLCB0aGVuIHJldHVybiB2YWx1ZSBp
cyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBwZWQgc3RyaW5nLgotc3RhdGljIE5TU3RyaW5nICptYXBI
b3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MIGVu
Y29kZSwgQk9PTCBtYWtlU3RyaW5nLCBCT09MICplcnJvcikKLXsKLSAgICBpZiAocmFuZ2UubGVu
Z3RoID4gSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
Ci0gICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0g
ICAgVUNoYXIgc291cmNlQnVmZmVyW0hPU1RfTkFNRV9CVUZGRVJfTEVOR1RIXTsKLSAgICBVQ2hh
ciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NUX05BTUVfQlVGRkVSX0xFTkdUSF07Ci0gICAgCi0gICAg
aWYgKGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCIlIiBvcHRpb25zOk5TTGl0ZXJh
bFNlYXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkgewotICAgICAgICBO
U1N0cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VdOwot
ICAgICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5
UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywg
Q0ZTVFIoIiIpKSk7Ci0gICAgICAgIGlmIChzdWJzdHJpbmcpIHsKLSAgICAgICAgICAgIHN0cmlu
ZyA9IHN1YnN0cmluZzsKLSAgICAgICAgICAgIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgW3N0cmlu
ZyBsZW5ndGhdKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpbnQgbGVuZ3RoID0gcmFu
Z2UubGVuZ3RoOwotICAgIFtzdHJpbmcgZ2V0Q2hhcmFjdGVyczpzb3VyY2VCdWZmZXIgcmFuZ2U6
cmFuZ2VdOwotICAgIAotICAgIFVFcnJvckNvZGUgdWVycm9yID0gVV9aRVJPX0VSUk9SOwotICAg
IFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7Ci0g
ICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gKGVuY29kZSA/IHVpZG5hX25hbWVU
b0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5pY29kZSkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERv
bWFpbk5hbWVUcmFuc2NvZGVyKCksIHNvdXJjZUJ1ZmZlciwgbGVuZ3RoLCBkZXN0aW5hdGlvbkJ1
ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgsICZwcm9jZXNzaW5nRGV0YWlscywgJnVlcnJv
cik7Ci0gICAgaWYgKGxlbmd0aCAmJiAoVV9GQUlMVVJFKHVlcnJvcikgfHwgcHJvY2Vzc2luZ0Rl
dGFpbHMuZXJyb3JzKSkgewotICAgICAgICAqZXJyb3IgPSBZRVM7Ci0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgfQotICAgIAotICAgIGlmIChudW1DaGFyYWN0ZXJzQ29udmVydGVkID09IGxlbmd0
aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZlciwgZGVzdGluYXRpb25CdWZmZXIsIGxlbmd0aCAqIHNp
emVvZihVQ2hhcikpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmICghZW5jb2Rl
ICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoZGVzdGluYXRpb25CdWZmZXIs
IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpICYmICFhbGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVs
ZXMoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBtYWtlU3RyaW5nID8gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0aW9uQnVmZmVyIGxlbmd0aDpudW1DaGFyYWN0ZXJzQ29u
dmVydGVkXSA6IHN0cmluZzsKLX0KLQotQk9PTCBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFu
Z2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCAqZXJyb3IpCi17Ci0gICAg
cmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIE5PLCBOTywgZXJyb3Ip
ICE9IG5pbDsKLX0KLSAKLUJPT0wgaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlKE5TU3Ry
aW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQotewotICAgIHJldHVybiBt
YXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBZRVMsICBOTywgZXJyb3IpICE9IG5p
bDsKLX0KLQotTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJp
bmcsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5n
ICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgTk8sIFlFUywgJmVy
cm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuICFo
b3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lV2l0aFJh
bmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgQk9PTCBlcnJvciA9
IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBy
YW5nZSwgWUVTLCBZRVMsICZlcnJvcik7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm4g
bmlsOwotICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Ci19Ci0KLU5TU3RyaW5nICpk
ZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQotewotICAgIEJPT0wgZXJyb3IgPSBOTzsK
LSAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgTlNNYWtl
UmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgTk8sIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9z
dDsKLX0KLQotTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCi17Ci0g
ICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRo
UmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pLCBZRVMsIFlFUywg
JmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJu
ICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1Ro
YXROZWVkTWFwcGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+JiBhcnJheSwgQk9PTCBlbmNvZGUpCi17Ci0gICAgLy8gR2VuZXJhbGx5
LCB3ZSB3YW50IHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBvbmUgaG9z
dCBuYW1lIHRoYXQgZG9lcyBub3QgbmVlZCBtYXBwaW5nLgotICAgIC8vIFRoZXJlZm9yZSwgd2Ug
dXNlIG5pbCB0byBpbmRpY2F0ZSBubyBtYXBwaW5nIGhlcmUgYW5kIGFuIGVtcHR5IGFycmF5IHRv
IGluZGljYXRlIGVycm9yLgotCi0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIEJPT0wgbmVlZHNN
YXBwaW5nID0gZW5jb2RlID8gaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlKHN0cmluZywg
cmFuZ2UsICZlcnJvcikgOiBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2Uoc3RyaW5nLCBy
YW5nZSwgJmVycm9yKTsKLSAgICBpZiAoIWVycm9yICYmICFuZWVkc01hcHBpbmcpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBpZiAoIWFycmF5KQotICAgICAgICBhcnJheSA9IGFkb3B0TlMo
W05TTXV0YWJsZUFycmF5IG5ld10pOwotCi0gICAgaWYgKCFlcnJvcikKLSAgICAgICAgW2FycmF5
IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1dOwotfQotCi1zdGF0aWMg
dm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1Jh
bmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKLXsKLSAgICByZXR1
cm4gY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhzdHJpbmcsIHJhbmdlLCBhcnJheSwgWUVT
KTsKLX0KLQotc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcoTlNTdHJp
bmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJy
YXkpCi17Ci0gICAgcmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoc3RyaW5nLCBy
YW5nZSwgYXJyYXksIE5PKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbHlIb3N0TmFtZUZ1bmN0aW9u
VG9NYWlsVG9VUkxTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywgU3RyaW5nUmFuZ2VBcHBsaWVyRnVu
Y3Rpb24gZiwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCi17Ci0gICAgLy8gSW4g
YSBtYWlsdG86IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVyIGEgJ0AnIGNoYXJhY3RlciBhbmQg
ZW5kIHdpdGggYSAnPicgb3IgJywnIG9yICc/JyBjaGFyYWN0ZXIuCi0gICAgLy8gU2tpcCBxdW90
ZWQgc3RyaW5ncyBzbyB0aGF0IGNoYXJhY3RlcnMgaW4gdGhlbSBkb24ndCBjb25mdXNlIHVzLgot
ICAgIC8vIFdoZW4gd2UgZmluZCBhICc/JyBjaGFyYWN0ZXIsIHdlIGFyZSBwYXN0IHRoZSBwYXJ0
IG9mIHRoZSBVUkwgdGhhdCBjb250YWlucyBob3N0IG5hbWVzLgotICAgIAotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBob3N0TmFtZU9yU3RyaW5n
U3RhcnRDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0
ZXJzSW5TdHJpbmc6QCJcIkA/Il07Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxOU0NoYXJhY3RlclNldD4+IGhvc3ROYW1lRW5kQ2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNl
dCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiPiw/Il07Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IHF1b3RlZFN0cmluZ0No
YXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0
cmluZzpAIlwiXFwiXTsKLSAgICAKLSAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBbc3RyaW5n
IGxlbmd0aF07Ci0gICAgTlNSYW5nZSByZW1haW5pbmcgPSBOU01ha2VSYW5nZSgwLCBzdHJpbmdM
ZW5ndGgpOwotICAgIAotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIC8vIEZpbmQgc3RhcnQgb2Yg
aG9zdCBuYW1lIG9yIG9mIHF1b3RlZCBzdHJpbmcuCi0gICAgICAgIE5TUmFuZ2UgaG9zdE5hbWVP
clN0cmluZ1N0YXJ0ID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpob3N0TmFtZU9y
U3RyaW5nU3RhcnRDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpyZW1haW5p
bmddOwotICAgICAgICBpZiAoaG9zdE5hbWVPclN0cmluZ1N0YXJ0LmxvY2F0aW9uID09IE5TTm90
Rm91bmQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdW5pY2hhciBjID0gW3N0cmlu
ZyBjaGFyYWN0ZXJBdEluZGV4Omhvc3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlvbl07Ci0gICAg
ICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoaG9zdE5hbWVPclN0cmluZ1N0YXJ0
KTsKLSAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xlbmd0aCAtIHJlbWFpbmluZy5s
b2NhdGlvbjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09ICc/JykKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09ICdAJykgewotICAgICAgICAgICAgLy8g
RmluZCBlbmQgb2YgaG9zdCBuYW1lLgotICAgICAgICAgICAgdW5zaWduZWQgaG9zdE5hbWVTdGFy
dCA9IHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAgIE5TUmFuZ2UgaG9zdE5hbWVFbmQg
PSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhvc3ROYW1lRW5kQ2hhcmFjdGVycy5n
ZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5nXTsKLSAgICAgICAgICAgIEJPT0wg
ZG9uZTsKLSAgICAgICAgICAgIGlmIChob3N0TmFtZUVuZC5sb2NhdGlvbiA9PSBOU05vdEZvdW5k
KSB7Ci0gICAgICAgICAgICAgICAgaG9zdE5hbWVFbmQubG9jYXRpb24gPSBzdHJpbmdMZW5ndGg7
Ci0gICAgICAgICAgICAgICAgZG9uZSA9IFlFUzsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gaG9zdE5hbWVFbmQubG9jYXRpb247Ci0g
ICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xlbmd0aCAtIHJlbWFpbmlu
Zy5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICBkb25lID0gTk87Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFByb2Nlc3MgaG9zdCBuYW1lIHJhbmdlLgotICAg
ICAgICAgICAgZihzdHJpbmcsIE5TTWFrZVJhbmdlKGhvc3ROYW1lU3RhcnQsIGhvc3ROYW1lRW5k
LmxvY2F0aW9uIC0gaG9zdE5hbWVTdGFydCksIGFycmF5KTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKGRvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5nLgotICAgICAgICAgICAgQVNTRVJU
KGMgPT0gJyInKTsKLSAgICAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICAgICAgTlNS
YW5nZSBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0
ZXJGcm9tU2V0OnF1b3RlZFN0cmluZ0NoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJh
bmdlOnJlbWFpbmluZ107Ci0gICAgICAgICAgICAgICAgaWYgKGVzY2FwZWRDaGFyYWN0ZXJPclN0
cmluZ0VuZC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgICAgICBjID0gW3N0cmluZyBjaGFyYWN0ZXJBdEluZGV4OmVzY2Fw
ZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbl07Ci0gICAgICAgICAgICAgICAgcmVtYWlu
aW5nLmxvY2F0aW9uID0gTlNNYXhSYW5nZShlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQpOwot
ICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5p
bmcubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gSWYgd2Ug
YXJlIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgdGhlbiBicmVhayBmcm9tIHRoZSBzdHJpbmcgbG9v
cCBiYWNrIHRvIHRoZSBob3N0IG5hbWUgbG9vcC4KLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAn
IicpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIC8vIFNraXAgZXNjYXBlZCBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgQVNT
RVJUKGMgPT0gJ1xcJyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZW1haW5pbmcubGVuZ3RoKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICByZW1haW5pbmcu
bG9jYXRpb24gKz0gMTsKLSAgICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoIC09IDE7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGx5SG9z
dE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIFN0cmluZ1JhbmdlQXBw
bGllckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQotewotICAg
IC8vIEZpbmQgaG9zdG5hbWVzLiBUb28gYmFkIHdlIGNhbid0IHVzZSBhbnkgcmVhbCBVUkwtcGFy
c2luZyBjb2RlIHRvIGRvIHRoaXMsCi0gICAgLy8gYnV0IHdlIGhhdmUgdG8gZG8gaXQgYmVmb3Jl
IGRvaW5nIGFsbCB0aGUgJS1lc2NhcGluZywgYW5kIHRoaXMgaXMgdGhlIG9ubHkKLSAgICAvLyBj
b2RlIHdlIGhhdmUgdGhhdCBwYXJzZXMgbWFpbHRvIFVSTHMgYW55d2F5LgotICAgIAotICAgIC8v
IE1heWJlIHdlIHNob3VsZCBpbXBsZW1lbnQgdGhpcyB1c2luZyBhIGNoYXJhY3RlciBidWZmZXIg
aW5zdGVhZD8KLSAgICAKLSAgICBpZiAocHJvdG9jb2xJcyhzdHJpbmcsICJtYWlsdG8iKSkgewot
ICAgICAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyhzdHJpbmcsIGYs
IGFycmF5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICAvLyBGaW5kIHRoZSBo
b3N0IG5hbWUgaW4gYSBoaWVyYXJjaGljYWwgVVJMLgotICAgIC8vIEl0IGNvbWVzIGFmdGVyIGEg
IjovLyIgc2VxdWVuY2UsIHdpdGggc2NoZW1lIGNoYXJhY3RlcnMgcHJlY2VkaW5nLgotICAgIC8v
IElmIGVuZHMgd2l0aCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgYSAiOiIsICIvIiwgb3IgYSAi
PyIuCi0gICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFjdGVyLCB0aGUgaG9zdCBwYXJ0IGlz
IGp1c3QgdGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KLSAgICBOU1JhbmdlIHNlcGFyYXRvclJhbmdl
ID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiOi8vIl07Ci0gICAgaWYgKHNlcGFyYXRvclJhbmdl
LmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBD
aGVjayB0aGF0IGFsbCBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgOi8vIGFyZSB2YWxpZCBzY2hlbWUg
Y2hhcmFjdGVycy4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFj
dGVyU2V0Pj4gbm9uU2NoZW1lQ2hhcmFjdGVycyA9IFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVy
U2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJj
ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky0uIl0gaW52ZXJ0ZWRTZXRdOwotICAg
IGlmIChbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Om5vblNjaGVtZUNoYXJhY3RlcnMu
Z2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAsIHNlcGFyYXRvclJhbmdl
LmxvY2F0aW9uKV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IFtzdHJpbmcgbGVuZ3RoXTsKLSAgICAKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdFRl
cm1pbmF0b3JzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5T
dHJpbmc6QCI6Lz8jIl07Ci0gICAgCi0gICAgLy8gU3RhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4K
LSAgICB1bnNpZ25lZCBhdXRob3JpdHlTdGFydCA9IE5TTWF4UmFuZ2Uoc2VwYXJhdG9yUmFuZ2Up
OwotICAgIAotICAgIC8vIEZpbmQgdGVybWluYXRpbmcgY2hhcmFjdGVyLgotICAgIE5TUmFuZ2Ug
aG9zdE5hbWVUZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpob3N0
VGVybWluYXRvcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKGF1dGhv
cml0eVN0YXJ0LCBzdHJpbmdMZW5ndGggLSBhdXRob3JpdHlTdGFydCldOwotICAgIHVuc2lnbmVk
IGhvc3ROYW1lRW5kID0gaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uID09IE5TTm90Rm91bmQg
PyBzdHJpbmdMZW5ndGggOiBob3N0TmFtZVRlcm1pbmF0b3IubG9jYXRpb247Ci0gICAgCi0gICAg
Ly8gRmluZCAiQCIgZm9yIHRoZSBzdGFydCBvZiB0aGUgaG9zdCBuYW1lLgotICAgIE5TUmFuZ2Ug
dXNlckluZm9UZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiQCIgb3B0aW9uczow
IHJhbmdlOk5TTWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBob3N0TmFtZUVuZCAtIGF1dGhvcml0
eVN0YXJ0KV07Ci0gICAgdW5zaWduZWQgaG9zdE5hbWVTdGFydCA9IHVzZXJJbmZvVGVybWluYXRv
ci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8gYXV0aG9yaXR5U3RhcnQgOiBOU01heFJhbmdlKHVz
ZXJJbmZvVGVybWluYXRvcik7Ci0gICAgCi0gICAgcmV0dXJuIGYoc3RyaW5nLCBOU01ha2VSYW5n
ZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZCAtIGhvc3ROYW1lU3RhcnQpLCBhcnJheSk7Ci19
Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IG1hcEhvc3ROYW1lcyhOU1N0cmluZyAqc3Ry
aW5nLCBCT09MIGVuY29kZSkKLXsKLSAgICAvLyBHZW5lcmFsbHksIHdlIHdhbnQgdG8gb3B0aW1p
emUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIG9uZSBob3N0IG5hbWUgdGhhdCBkb2VzIG5v
dCBuZWVkIG1hcHBpbmcuCi0gICAgCi0gICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIGNhbkJlQ29u
dmVydGVkVG9FbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddKQotICAgICAgICByZXR1cm4g
c3RyaW5nOwotICAgIAotICAgIC8vIE1ha2UgYSBsaXN0IG9mIHJhbmdlcyB0aGF0IGFjdHVhbGx5
IG5lZWQgbWFwcGluZy4KLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGhvc3ROYW1lUmFu
Z2VzOwotICAgIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYgPSBlbmNvZGUgPyBjb2xsZWN0
UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyA6IGNvbGxlY3RSYW5nZXNUaGF0TmVlZERlY29kaW5nOwot
ICAgIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKHN0cmluZywgZiwgaG9zdE5hbWVS
YW5nZXMpOwotICAgIGlmICghaG9zdE5hbWVSYW5nZXMpCi0gICAgICAgIHJldHVybiBzdHJpbmc7
Ci0KLSAgICBpZiAoIVtob3N0TmFtZVJhbmdlcyBjb3VudF0pCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgCi0gICAgLy8gRG8gdGhlIG1hcHBpbmcuCi0gICAgYXV0byBtdXRhYmxlQ29weSA9IGFk
b3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwotICAgIHVuc2lnbmVkIGkgPSBbaG9zdE5hbWVS
YW5nZXMgY291bnRdOwotICAgIHdoaWxlIChpLS0pIHsKLSAgICAgICAgTlNSYW5nZSBob3N0TmFt
ZVJhbmdlID0gW1tob3N0TmFtZVJhbmdlcyBvYmplY3RBdEluZGV4OmldIHJhbmdlVmFsdWVdOwot
ICAgICAgICBOU1N0cmluZyAqbWFwcGVkSG9zdE5hbWUgPSBlbmNvZGUgPyBlbmNvZGVIb3N0TmFt
ZVdpdGhSYW5nZShzdHJpbmcsIGhvc3ROYW1lUmFuZ2UpIDogZGVjb2RlSG9zdE5hbWVXaXRoUmFu
Z2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKTsKLSAgICAgICAgW211dGFibGVDb3B5IHJlcGxhY2VD
aGFyYWN0ZXJzSW5SYW5nZTpob3N0TmFtZVJhbmdlIHdpdGhTdHJpbmc6bWFwcGVkSG9zdE5hbWVd
OwotICAgIH0KLSAgICByZXR1cm4gbXV0YWJsZUNvcHk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8
TlNTdHJpbmc+IHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKE5TU3RyaW5nICpzdHJpbmcpCi17
Ci0gICAgYXV0byB0cmltbWVkID0gYWRvcHROUyhbc3RyaW5nIG11dGFibGVDb3B5XSk7Ci0gICAg
Q0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoX19icmlkZ2UgQ0ZNdXRhYmxlU3RyaW5nUmVmKXRyaW1t
ZWQuZ2V0KCkpOwotICAgIHJldHVybiB0cmltbWVkOwotfQotCi1OU1VSTCAqVVJMQnlUcnVuY2F0
aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50
VHlwZSBjb21wb25lbnQpCi17Ci0gICAgaWYgKCFVUkwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgCi0gICAgQ0ZSYW5nZSBmcmFnUmcgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIG51bGxwdHIpOwotICAgIGlmIChmcmFn
UmcubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgIHJldHVybiBVUkw7Ci0KLSAgICBW
ZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiB1cmxCeXRlcyhVUkxfQllURVNf
QlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBudW1CeXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9f
YnJpZGdlIENGVVJMUmVmKVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCB1cmxCeXRlcy5zaXplKCkpOwot
ICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBudW1CeXRlcyA9IENGVVJMR2V0Qnl0
ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Ci0gICAgICAgIHVybEJ5dGVz
Lmdyb3cobnVtQnl0ZXMpOwotICAgICAgICBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJl
ZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOwotICAgIH0KLQotICAgIENGVVJMUmVm
IHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLmRhdGEoKSwg
ZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyKTsKLSAg
ICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVs
bHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNv
ZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgIAotICAgIHJldHVybiByZXN1bHQgPyBD
RkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOwotfQotCi1zdGF0aWMgTlNVUkwgKlVSTEJ5
UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihOU1VSTCAqVVJMKQotewotICAgIHJldHVybiBVUkxC
eVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoVVJMLCBrQ0ZVUkxDb21wb25l
bnRSZXNvdXJjZVNwZWNpZmllcik7Ci19Ci0KLU5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKmRh
dGEsIE5TVVJMICpiYXNlVVJMKQotewotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICAKLSAgICBOU1VSTCAqcmVzdWx0ID0gbmlsOwotICAgIHNpemVfdCBsZW5ndGggPSBb
ZGF0YSBsZW5ndGhdOwotICAgIGlmIChsZW5ndGggPiAwKSB7Ci0gICAgICAgIC8vIHdvcmsgYXJv
dW5kIDxyZGFyOi8vNDQ3MDc3MT46IENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoLi4s
IFRSVUUpIGRvZXNuJ3QgcmVtb3ZlIG5vbi1wYXRoIGNvbXBvbmVudHMuCi0gICAgICAgIGJhc2VV
UkwgPSBVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoYmFzZVVSTCk7Ci0gICAgICAgIAot
ICAgICAgICBjb25zdCBVSW50OCAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBVSW50OCo+KFtk
YXRhIGJ5dGVzXSk7Ci0gICAgICAgIAotICAgICAgICAvLyBDRlVSTENyZWF0ZUFic29sdXRlVVJM
V2l0aEJ5dGVzIHdvdWxkIGNvbXBsYWluIHRvIGNvbnNvbGUgaWYgd2UgcGFzc2VkIGEgcGF0aCB0
byBpdC4KLSAgICAgICAgaWYgKGJ5dGVzWzBdID09ICcvJyAmJiAhYmFzZVVSTCkKLSAgICAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICAvLyBOT1RFOiBXZSB1c2UgVVRGLTgg
aGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hlbiBjb21wdXRpbmcgc3RyaW5ncyB3
aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAgICAgICAvLyAoZS5nIGNhbGxzIHRvIE5T
VVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9sZXJhbnQgb2YgaWxs
ZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgICAgIC8vIGNvdWxkIGVpdGhlciBiZSBh
IG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZmZXJlbnQgZW5jb2RpbmcsIGxpa2Ug
c2hpZnQtamlzLCBzbyB3ZSBmYWxsIGJhY2sKLSAgICAgICAgLy8gb250byB1c2luZyBJU08gTGF0
aW4gMSBpbiB0aG9zZSBjYXNlcy4KLSAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
Q0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBieXRlcywgbGVuZ3RoLCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBDRlVSTFJlZiliYXNlVVJMLCBZRVMpKTsK
LSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVs
ZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5n
dGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVS
TCwgWUVTKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFtOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiIl07Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotc3RhdGljIE5TRGF0YSAqZGF0YVdp
dGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICBOU0RhdGEgKnVzZXJU
eXBlZERhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKLSAgICBBU1NFUlQodXNlclR5cGVkRGF0YSk7Ci0gICAgCi0gICAgY29uc3QgVUludDgqIGlu
Qnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBVSW50OCAqPihbdXNlclR5cGVkRGF0YSBieXRlc10p
OwotICAgIGludCBpbkxlbmd0aCA9IFt1c2VyVHlwZWREYXRhIGxlbmd0aF07Ci0gICAgaWYgKCFp
bkxlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBjaGFyKiBvdXRCeXRlcyA9
IHN0YXRpY19jYXN0PGNoYXIgKj4obWFsbG9jKGluTGVuZ3RoICogMykpOyAvLyBsYXJnZSBlbm91
Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0gICAgY2hhciogcCA9IG91dEJ5dGVzOwot
ICAgIGludCBvdXRMZW5ndGggPSAwOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5MZW5ndGg7
IGkrKykgewotICAgICAgICBVSW50OCBjID0gaW5CeXRlc1tpXTsKLSAgICAgICAgaWYgKGMgPD0g
MHgyMCB8fCBjID49IDB4N2YpIHsKLSAgICAgICAgICAgICpwKysgPSAnJSc7Ci0gICAgICAgICAg
ICAqcCsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICAqcCsr
ID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICBvdXRMZW5ndGgg
Kz0gMzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpwKysgPSBjOwotICAgICAgICAg
ICAgb3V0TGVuZ3RoKys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFtOU0Rh
dGEgZGF0YVdpdGhCeXRlc05vQ29weTpvdXRCeXRlcyBsZW5ndGg6b3V0TGVuZ3RoXTsgLy8gYWRv
cHRzIG91dEJ5dGVzCi19Ci0KLU5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5n
ICpzdHJpbmcsIE5TVVJMICpuc1VSTCkKLXsKLSAgICBpZiAoIXN0cmluZykKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgIGF1dG8gbWFwcGVkU3RyaW5nID0gbWFwSG9zdE5hbWVzKHN0cmluZ0J5
VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCksIFlFUyk7Ci0gICAgaWYgKCFtYXBwZWRT
dHJpbmcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAvLyBMZXQncyBjaGVjayB3aGV0aGVy
IHRoZSBVUkwgaXMgYm9ndXMuCi0gICAgVVJMIHVybCB7IFVSTCB7IG5zVVJMIH0sIG1hcHBlZFN0
cmluZy5nZXQoKSB9OwotICAgIGlmICghdXJsLmNyZWF0ZUNGVVJMKCkpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4NjA1NwotICAgIC8vIFdlIHNob3VsZCBiZSBhYmxlIHRvIHVzZSB1cmwuY3JlYXRl
Q0ZVUkwgaW5zdGVhZCBvZiB1c2luZyBkaXJlY3RseSBDRlVSTCBwYXJzaW5nIHJvdXRpbmVzLgot
ICAgIE5TRGF0YSAqZGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKG1hcHBlZFN0cmluZy5n
ZXQoKSk7Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJp
bmc6QCIiXTsKLQotICAgIHJldHVybiBVUkxXaXRoRGF0YShkYXRhLCBuc1VSTCk7Ci19Ci0KLU5T
VVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChOU1N0cmluZyAqc3RyaW5nLCBO
U1VSTCAqVVJMKQotewotICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgTlNVUkwgKnJlc3VsdCA9IFVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoc3RyaW5nLCBVUkwpOwot
ICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIE5TRGF0YSAqcmVzdWx0RGF0YSA9IGRhdGFXaXRo
VXNlclR5cGVkU3RyaW5nKHN0cmluZyk7Ci0gICAgICAgIGlmICghcmVzdWx0RGF0YSkKLSAgICAg
ICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwotICAgICAgICByZXN1bHQg
PSBVUkxXaXRoRGF0YShyZXN1bHREYXRhLCBVUkwpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLXN0YXRpYyBCT09MIGhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyhOU1VS
TCAqVVJMKQotewotICAgIENGUmFuZ2UgcmFuZ2VXaXRoU2VwYXJhdG9yczsKLSAgICBDRlVSTEdl
dEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBrQ0ZVUkxDb21w
b25lbnRRdWVyeSwgJnJhbmdlV2l0aFNlcGFyYXRvcnMpOwotICAgIGlmIChyYW5nZVdpdGhTZXBh
cmF0b3JzLmxvY2F0aW9uICE9IGtDRk5vdEZvdW5kICYmIHJhbmdlV2l0aFNlcGFyYXRvcnMubGVu
Z3RoID09IDEpCi0gICAgICAgIHJldHVybiBZRVM7Ci0KLSAgICByZXR1cm4gTk87Ci19Ci0KLU5T
RGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wb25lbnRU
eXBlIGNvbXBvbmVudFR5cGUpCi17Ci0gICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVS
X0xFTkdUSD4gYWxsQnl0ZXNCdWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwotICAgIENG
SW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkws
IGFsbEJ5dGVzQnVmZmVyLmRhdGEoKSwgYWxsQnl0ZXNCdWZmZXIuc2l6ZSgpKTsKLSAgICBpZiAo
Ynl0ZXNGaWxsZWQgPT0gLTEpIHsKLSAgICAgICAgQ0ZJbmRleCBieXRlc1RvQWxsb2NhdGUgPSBD
RlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOwotICAgICAg
ICBhbGxCeXRlc0J1ZmZlci5ncm93KGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAgIGJ5dGVzRmls
bGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBhbGxCeXRlc0J1ZmZl
ci5kYXRhKCksIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgfQotICAgIAotICAgIGNvbnN0IENGVVJM
Q29tcG9uZW50VHlwZSBjb21wbGV0ZVVSTCA9IChDRlVSTENvbXBvbmVudFR5cGUpLTE7Ci0gICAg
Q0ZSYW5nZSByYW5nZTsKLSAgICBpZiAoY29tcG9uZW50VHlwZSAhPSBjb21wbGV0ZVVSTCkgewot
ICAgICAgICByYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBD
RlVSTFJlZilVUkwsIGNvbXBvbmVudFR5cGUsIG51bGxwdHIpOwotICAgICAgICBpZiAocmFuZ2Uu
bG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHJhbmdlLmxvY2F0aW9uID0gMDsKLSAgICAgICAgcmFuZ2UubGVuZ3Ro
ID0gYnl0ZXNGaWxsZWQ7Ci0gICAgfQotICAgIAotICAgIE5TRGF0YSAqY29tcG9uZW50RGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhCeXRlczphbGxCeXRlc0J1ZmZlci5kYXRhKCkgKyByYW5nZS5sb2Nh
dGlvbiBsZW5ndGg6cmFuZ2UubGVuZ3RoXTsgCi0gICAgCi0gICAgY29uc3QgdW5zaWduZWQgY2hh
ciAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtjb21wb25lbnRE
YXRhIGJ5dGVzXSk7Ci0gICAgTlNNdXRhYmxlRGF0YSAqcmVzdWx0RGF0YSA9IFtOU011dGFibGVE
YXRhIGRhdGFdOwotICAgIC8vIE5PVEU6IGFkZCBsZWFkaW5nICc/JyB0byBxdWVyeSBzdHJpbmdz
IG5vbi16ZXJvIGxlbmd0aCBxdWVyeSBzdHJpbmdzLgotICAgIC8vIE5PVEU6IHJldGFpbiBxdWVz
dGlvbi1tYXJrIG9ubHkgcXVlcnkgc3RyaW5ncy4KLSAgICBpZiAoY29tcG9uZW50VHlwZSA9PSBr
Q0ZVUkxDb21wb25lbnRRdWVyeSkgewotICAgICAgICBpZiAocmFuZ2UubGVuZ3RoID4gMCB8fCBo
YXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoVVJMKSkKLSAgICAgICAgICAgIFtyZXN1bHRE
YXRhIGFwcGVuZEJ5dGVzOiI/IiBsZW5ndGg6MV07ICAgIAotICAgIH0KLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHJhbmdlLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9
IGJ5dGVzW2ldOwotICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPj0gMHg3ZikgewotICAgICAg
ICAgICAgY2hhciBlc2NhcGVkWzNdOwotICAgICAgICAgICAgZXNjYXBlZFswXSA9ICclJzsKLSAg
ICAgICAgICAgIGVzY2FwZWRbMV0gPSB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKLSAg
ICAgICAgICAgIGVzY2FwZWRbMl0gPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKLSAg
ICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmVzY2FwZWQgbGVuZ3RoOjNdOyAgICAK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNoYXIgYlsxXTsKLSAgICAgICAgICAgIGJb
MF0gPSBjOwotICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0ZXM6YiBsZW5ndGg6MV07
ICAgIAotICAgICAgICB9ICAgICAgICAgICAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiBy
ZXN1bHREYXRhOwotfQotCi1zdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdDb21wb25lbnRBbmRT
dWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZSBjb21wb25l
bnQpCi17Ci0gICAgQ0ZSYW5nZSByYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwgMCk7Ci0gICAgaWYgKHJhbmdlLmxv
Y2F0aW9uID09IGtDRk5vdEZvdW5kKQotICAgICAgICByZXR1cm4gVVJMOwotICAgIAotICAgIC8v
IFJlbW92ZSBvbmUgc3Vic2VxdWVudCBjaGFyYWN0ZXIuCi0gICAgcmFuZ2UubGVuZ3RoKys7Ci0K
LSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBidWZmZXIoVVJMX0JZ
VEVTX0JVRkZFUl9MRU5HVEgpOwotICAgIENGSW5kZXggbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwot
ICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBudW1CeXRlcyA9IENGVVJMR2V0Qnl0
ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Ci0gICAgICAgIGJ1ZmZlci5n
cm93KG51bUJ5dGVzKTsKLSAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCBidWZmZXIuZGF0YSgpLCBudW1CeXRlcyk7Ci0gICAgfQotICAgIFVJbnQ4KiB1cmxCeXRl
cyA9IGJ1ZmZlci5kYXRhKCk7Ci0gICAgICAgIAotICAgIGlmIChudW1CeXRlcyA8IHJhbmdlLmxv
Y2F0aW9uKQotICAgICAgICByZXR1cm4gVVJMOwotICAgIGlmIChudW1CeXRlcyA8IHJhbmdlLmxv
Y2F0aW9uICsgcmFuZ2UubGVuZ3RoKQotICAgICAgICByYW5nZS5sZW5ndGggPSBudW1CeXRlcyAt
IHJhbmdlLmxvY2F0aW9uOwotICAgICAgICAKLSAgICBtZW1tb3ZlKHVybEJ5dGVzICsgcmFuZ2Uu
bG9jYXRpb24sIHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgsIG51bUJ5
dGVzIC0gcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpOwotICAgIAotICAgIENGVVJMUmVm
IHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRl
cyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyKTsKLSAgICBp
ZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0
ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lT
T0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgCi0gICAgcmV0dXJuIHJlc3VsdCA/
IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7Ci19Ci0KLU5TVVJMICpVUkxCeVJlbW92
aW5nVXNlckluZm8oTlNVUkwgKlVSTCkKLXsKLSAgICByZXR1cm4gVVJMQnlSZW1vdmluZ0NvbXBv
bmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoVVJMLCBrQ0ZVUkxDb21wb25lbnRVc2VySW5mbyk7
Ci19Ci0KIE5TVVJMICpVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKE5TVVJMICpVUkwpCiB7CiAgICAg
UmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3Qg
YWxsb2NdIGluaXRXaXRoVVJMOlVSTF0pOwpAQCAtMTA0OSwyMDMgKzU3LDQgQEAgTlNVUkwgKlVS
TEJ5Q2Fub25pY2FsaXppbmdVUkwoTlNVUkwgKlVSTCkKICAgICByZXR1cm4gW1tuZXdVUkwgcmV0
YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLU5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICpV
UkwpCi17Ci0gICAgVUludDggKmJ1ZmZlciA9IChVSW50OCAqKW1hbGxvYyhVUkxfQllURVNfQlVG
RkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9f
YnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0g
ICAgaWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7Ci0gICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9j
YXRlID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsK
LSAgICAgICAgYnVmZmVyID0gKFVJbnQ4ICopcmVhbGxvYyhidWZmZXIsIGJ5dGVzVG9BbGxvY2F0
ZSk7Ci0gICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxS
ZWYpVVJMLCBidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAgIEFTU0VSVChieXRlc0Zp
bGxlZCA9PSBieXRlc1RvQWxsb2NhdGUpOwotICAgIH0KLSAgICAKLSAgICAvLyBidWZmZXIgaXMg
YWRvcHRlZCBieSB0aGUgTlNEYXRhCi0gICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzTm9Db3B5OmJ1ZmZlciBsZW5ndGg6Ynl0ZXNGaWxsZWQgZnJlZVdoZW5Eb25lOllFU107
Ci0gICAgCi0gICAgTlNVUkwgKmJhc2VVUkwgPSAoX19icmlkZ2UgTlNVUkwgKilDRlVSTEdldEJh
c2VVUkwoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCk7Ci0gICAgaWYgKGJhc2VVUkwpCi0gICAgICAg
IHJldHVybiBvcmlnaW5hbFVSTERhdGEoVVJMV2l0aERhdGEoZGF0YSwgYmFzZVVSTCkpOwotICAg
IHJldHVybiBkYXRhOwotfQotCi1zdGF0aWMgQ0ZTdHJpbmdSZWYgY3JlYXRlU3RyaW5nV2l0aEVz
Y2FwZWRVbnNhZmVDaGFyYWN0ZXJzKENGU3RyaW5nUmVmIHN0cmluZykKLXsKLSAgICBDRkluZGV4
IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7Ci0gICAgVmVjdG9yPFVDaGFyLCBV
UkxfQllURVNfQlVGRkVSX0xFTkdUSD4gc291cmNlQnVmZmVyKGxlbmd0aCk7Ci0gICAgQ0ZTdHJp
bmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgc291cmNlQnVm
ZmVyLmRhdGEoKSk7Ci0gICAgCi0gICAgVmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xF
TkdUSD4gb3V0QnVmZmVyOwotICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlv
dXNDb2RlUG9pbnQ7Ci0gICAgQ0ZJbmRleCBpID0gMDsKLSAgICB3aGlsZSAoaSA8IGxlbmd0aCkg
ewotICAgICAgICBVQ2hhcjMyIGM7Ci0gICAgICAgIFUxNl9ORVhUKHNvdXJjZUJ1ZmZlciwgaSwg
bGVuZ3RoLCBjKQotICAgICAgICAKLSAgICAgICAgaWYgKGlzTG9va2FsaWtlQ2hhcmFjdGVyKHBy
ZXZpb3VzQ29kZVBvaW50LCBjKSkgewotICAgICAgICAgICAgdWludDhfdCB1dGY4QnVmZmVyWzRd
OwotICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOwotICAgICAgICAgICAgVUJvb2wgZmFp
bHVyZSA9IGZhbHNlOwotICAgICAgICAgICAgVThfQVBQRU5EKHV0ZjhCdWZmZXIsIG9mZnNldCwg
NCwgYywgZmFpbHVyZSkKLSAgICAgICAgICAgIEFTU0VSVCghZmFpbHVyZSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8IG9mZnNldDsgKytqKSB7Ci0g
ICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCgnJScpOwotICAgICAgICAgICAgICAgIG91
dEJ1ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkp
OwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQobG93ZXJOaWJibGVUb0FTQ0lJSGV4
RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgVUNoYXIgdXRmMTZCdWZmZXJbMl07Ci0gICAgICAgICAgICBDRkluZGV4IG9m
ZnNldCA9IDA7Ci0gICAgICAgICAgICBVQm9vbCBmYWlsdXJlID0gZmFsc2U7Ci0gICAgICAgICAg
ICBVMTZfQVBQRU5EKHV0ZjE2QnVmZmVyLCBvZmZzZXQsIDIsIGMsIGZhaWx1cmUpCi0gICAgICAg
ICAgICBBU1NFUlQoIWZhaWx1cmUpOwotICAgICAgICAgICAgZm9yIChDRkluZGV4IGogPSAwOyBq
IDwgb2Zmc2V0OyArK2opCi0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCh1dGYxNkJ1
ZmZlcltqXSk7Ci0gICAgICAgIH0KLSAgICAgICAgcHJldmlvdXNDb2RlUG9pbnQgPSBjOwotICAg
IH0KLSAgICAKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRy
LCBvdXRCdWZmZXIuZGF0YSgpLCBvdXRCdWZmZXIuc2l6ZSgpKTsKLX0KLQotTlNTdHJpbmcgKnVz
ZXJWaXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCi17Ci0gICAgTlNEYXRhICpkYXRhID0gb3JpZ2lu
YWxVUkxEYXRhKFVSTCk7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmVmb3JlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KFtkYXRhIGJ5dGVzXSk7Ci0gICAgaW50IGxlbmd0
aCA9IFtkYXRhIGxlbmd0aF07Ci0gICAgCi0gICAgYm9vbCBtYXlOZWVkSG9zdE5hbWVEZWNvZGlu
ZyA9IGZhbHNlOwotICAgIAotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSBiZWZvcmU7Ci0g
ICAgaW50IGJ1ZmZlckxlbmd0aCA9IChsZW5ndGggKiAzKSArIDE7Ci0gICAgVmVjdG9yPGNoYXIs
IFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBhZnRlcihidWZmZXJMZW5ndGgpOyAvLyBsYXJnZSBl
bm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0gICAgY2hhciAqcSA9IGFmdGVyLmRh
dGEoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHVu
c2lnbmVkIGNoYXIgYyA9IHBbaV07Ci0gICAgICAgIC8vIHVuZXNjYXBlIGVzY2FwZSBzZXF1ZW5j
ZXMgdGhhdCBpbmRpY2F0ZSBieXRlcyBncmVhdGVyIHRoYW4gMHg3ZgotICAgICAgICBpZiAoYyA9
PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAxXSkpICYm
IGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAyXSkpIHsKLSAgICAgICAg
ICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAxXSwgcFtpICsgMl0pOwotICAgICAg
ICAgICAgaWYgKHUgPiAweDdmKSB7Ci0gICAgICAgICAgICAgICAgLy8gdW5lc2NhcGUKLSAgICAg
ICAgICAgICAgICAqcSsrID0gdTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgLy8gZG8gbm90IHVuZXNjYXBlCi0gICAgICAgICAgICAgICAgKnErKyA9IHBbaV07Ci0gICAg
ICAgICAgICAgICAgKnErKyA9IHBbaSArIDFdOwotICAgICAgICAgICAgICAgICpxKysgPSBwW2kg
KyAyXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICpxKysgPSBjOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBD
aGVjayBmb3IgInhuLS0iIGluIGFuIGVmZmljaWVudCwgbm9uLWNhc2Utc2Vuc2l0aXZlLCB3YXku
Ci0gICAgICAgICAgICBpZiAoYyA9PSAnLScgJiYgaSA+PSAzICYmICFtYXlOZWVkSG9zdE5hbWVE
ZWNvZGluZyAmJiAocVstNF0gfCAweDIwKSA9PSAneCcgJiYgKHFbLTNdIHwgMHgyMCkgPT0gJ24n
ICYmIHFbLTJdID09ICctJykKLSAgICAgICAgICAgICAgICBtYXlOZWVkSG9zdE5hbWVEZWNvZGlu
ZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgKnEgPSAnXDAnOwotICAgIAotICAgIC8v
IENoZWNrIHN0cmluZyB0byBzZWUgaWYgaXQgY2FuIGJlIGNvbnZlcnRlZCB0byBkaXNwbGF5IHVz
aW5nIFVURi04ICAKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHJlc3VsdCA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOwotICAgIGlmICghcmVzdWx0KSB7Ci0g
ICAgICAgIC8vIENvdWxkIG5vdCBjb252ZXJ0IHRvIFVURi04LgotICAgICAgICAvLyBDb252ZXJ0
IGNoYXJhY3RlcnMgZ3JlYXRlciB0aGFuIDB4N2YgdG8gZXNjYXBlIHNlcXVlbmNlcy4KLSAgICAg
ICAgLy8gU2hpZnQgY3VycmVudCBzdHJpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYnVmZmVyCi0gICAg
ICAgIC8vIHRoZW4gd2Ugd2lsbCBjb3B5IGJhY2sgYnl0ZXMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBi
dWZmZXIgCi0gICAgICAgIC8vIGFzIHdlIGNvbnZlcnQuCi0gICAgICAgIGludCBhZnRlcmxlbmd0
aCA9IHEgLSBhZnRlci5kYXRhKCk7Ci0gICAgICAgIGNoYXIgKnAgPSBhZnRlci5kYXRhKCkgKyBi
dWZmZXJMZW5ndGggLSBhZnRlcmxlbmd0aCAtIDE7Ci0gICAgICAgIG1lbW1vdmUocCwgYWZ0ZXIu
ZGF0YSgpLCBhZnRlcmxlbmd0aCArIDEpOyAvLyBjb3BpZXMgdHJhaWxpbmcgJ1wwJwotICAgICAg
ICBjaGFyICpxID0gYWZ0ZXIuZGF0YSgpOwotICAgICAgICB3aGlsZSAoKnApIHsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpwOwotICAgICAgICAgICAgaWYgKGMgPiAweDdmKSB7Ci0g
ICAgICAgICAgICAgICAgKnErKyA9ICclJzsKLSAgICAgICAgICAgICAgICAqcSsrID0gdXBwZXJO
aWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICAgICAgKnErKyA9IGxvd2VyTmli
YmxlVG9BU0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgKnErKyA9ICpwOwotICAgICAgICAgICAgcCsrOwotICAgICAgICB9Ci0gICAgICAgICpxID0g
J1wwJzsKLSAgICAgICAgcmVzdWx0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFm
dGVyLmRhdGEoKV07Ci0gICAgfQotICAgIAotICAgIGlmIChtYXlOZWVkSG9zdE5hbWVEZWNvZGlu
ZykgewotICAgICAgICAvLyBGSVhNRTogSXMgaXQgZ29vZCB0byBpZ25vcmUgdGhlIGZhaWx1cmUg
b2YgbWFwSG9zdE5hbWVzIGFuZCBrZWVwIHJlc3VsdCBpbnRhY3Q/Ci0gICAgICAgIGF1dG8gbWFw
cGVkUmVzdWx0ID0gbWFwSG9zdE5hbWVzKHJlc3VsdC5nZXQoKSwgTk8pOwotICAgICAgICBpZiAo
bWFwcGVkUmVzdWx0KQotICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVkUmVzdWx0OwotICAgIH0K
LQotICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFw
cGluZ107Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0ZVN0cmluZ1dpdGhFc2Nh
cGVkVW5zYWZlQ2hhcmFjdGVycygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzdWx0LmdldCgpKSk7
Ci19Ci0KLUJPT0wgaXNVc2VyVmlzaWJsZVVSTChOU1N0cmluZyAqc3RyaW5nKQotewotICAgIEJP
T0wgdmFsaWQgPSBZRVM7Ci0gICAgLy8gZ2V0IGJ1ZmZlcgotICAgIAotICAgIGNoYXIgc3RhdGlj
X2J1ZmZlclsxMDI0XTsKLSAgICBjb25zdCBjaGFyICpwOwotICAgIEJPT0wgc3VjY2VzcyA9IENG
U3RyaW5nR2V0Q1N0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc3RyaW5nLCBzdGF0aWNfYnVm
ZmVyLCAxMDIzLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpOwotICAgIHAgPSBzdWNjZXNzID8gc3Rh
dGljX2J1ZmZlciA6IFtzdHJpbmcgVVRGOFN0cmluZ107Ci0gICAgCi0gICAgaW50IGxlbmd0aCA9
IHN0cmxlbihwKTsKLSAgICAKLSAgICAvLyBjaGVjayBmb3IgY2hhcmFjdGVycyA8PSAweDIwIG9y
ID49MHg3ZiwgJS1lc2NhcGUgc2VxdWVuY2VzIG9mICU3ZiwgYW5kIHhuLS0sIHRoZXNlCi0gICAg
Ly8gYXJlIHRoZSB0aGluZ3MgdGhhdCB3aWxsIGxlYWQgX3dlYl91c2VyVmlzaWJsZVN0cmluZyB0
byBhY3R1YWxseSBjaGFuZ2UgdGhpbmdzLgotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcFtpXTsKLSAgICAgICAgLy8gZXNj
YXBlIGNvbnRyb2wgY2hhcmFjdGVycywgc3BhY2UsIGFuZCBkZWxldGUKLSAgICAgICAgaWYgKGMg
PD0gMHgyMCB8fCBjID09IDB4N2YpIHsKLSAgICAgICAgICAgIHZhbGlkID0gTk87Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChjID09ICclJyAmJiAoaSArIDEgPCBsZW5n
dGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDFdKSkgJiYgaSArIDIgPCBsZW5ndGggJiYgaXNB
U0NJSUhleERpZ2l0KHBbaSArIDJdKSkgewotICAgICAgICAgICAgYXV0byB1ID0gdG9BU0NJSUhl
eFZhbHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7Ci0gICAgICAgICAgICBpZiAodSA+IDB4N2YpIHsK
LSAgICAgICAgICAgICAgICB2YWxpZCA9IE5POwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBhbiBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNp
dGl2ZSwgd2F5LgotICAgICAgICAgICAgaWYgKGMgPT0gJy0nICYmIGkgPj0gMyAmJiAocFtpIC0g
M10gfCAweDIwKSA9PSAneCcgJiYgKHBbaSAtIDJdIHwgMHgyMCkgPT0gJ24nICYmIHBbaSAtIDFd
ID09ICctJykgewotICAgICAgICAgICAgICAgIHZhbGlkID0gTk87Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJu
IHZhbGlkOwotfQotCi1OU1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKnN0cmluZykK
LXsKLSAgICBOU1JhbmdlIGNvbG9uID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiOiJdOwotICAg
IGlmIChjb2xvbi5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIGNvbG9uLmxvY2F0aW9uID4gMCkg
ewotICAgICAgICBOU1JhbmdlIHNjaGVtZSA9IHswLCBjb2xvbi5sb2NhdGlvbn07Ci0gICAgICAg
IC8qCi0gICAgICAgICBUaGlzIHN0dWZmIGlzIHZlcnkgZXhwZW5zaXZlLiAgMTAtMTUgbXNlYyBv
biBhIDJ4MS4yR0h6LiAgSWYgbm90IGNhY2hlZCBpdCBzd2FtcHMKLSAgICAgICAgIGV2ZXJ5dGhp
bmcgZWxzZSB3aGVuIGFkZGluZyBpdGVtcyB0byB0aGUgYXV0b2NvbXBsZXRlIERCLiAgTWFrZXMg
bWUgd29uZGVyIGlmIHdlCi0gICAgICAgICBldmVuIG5lZWQgdG8gZW5mb3JjZSB0aGUgY2hhcmFj
dGVyIHNldCBoZXJlLgotICAgICAgICAgKi8KLSAgICAgICAgTlNTdHJpbmcgKmFjY2VwdGFibGVD
aGFyYWN0ZXJzID0gQCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6MDEyMzQ1Njc4OSsuLSI7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0KFtbTlND
aGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzphY2NlcHRhYmxl
Q2hhcmFjdGVyc10gaW52ZXJ0ZWRTZXRdKTsKLSAgICAgICAgTlNSYW5nZSBpbGxlZ2FscyA9IFtz
dHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6SW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldC5n
ZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsKLSAgICAgICAgaWYgKGlsbGVnYWxz
LmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4gc2NoZW1lOwotICAg
IH0KLSAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7Ci19Ci0KLUJPT0wgbG9v
a3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICAvLyBUcmltIHdoaXRl
c3BhY2UgYmVjYXVzZSBfd2ViX1VSTFdpdGhTdHJpbmcgYWxsb3dzIHdoaXRlc3BhY2UuCi0gICAg
cmV0dXJuIHJhbmdlT2ZVUkxTY2hlbWUoc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2Uoc3RyaW5n
KS5nZXQoKSkubG9jYXRpb24gIT0gTlNOb3RGb3VuZDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgKaW5kZXggYzk5Y2IzODM3OGMxOWFi
ODJjZTkxZThiZjAyMzdhYjc3Mjg3OTExYS4uNjMzMTc4ZTRlZWFiNWVhMzE5MzYyMTAxMGU3NThj
YjM0MjBjODE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5oCkBAIC0zNSw3ICsz
NSw3IEBACiAKICNpbmNsdWRlICJSVENCdW5kbGVQb2xpY3kuaCIKICNpbmNsdWRlICJSVENJY2VU
cmFuc3BvcnRQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaAppbmRleCBiNzAyNjc0ODI0NjlkNTg3
NWVmYjVmNzQ5NGQxYmY3YWM0MmM4OWUxLi4zODBkMzczMWIwYTE1M2FiYjljMjI3MGJmZWU3Njgw
ZjAzYjNiOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgKQEAgLTIzLDYgKzIz
LDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI3ByYWdtYSBvbmNlCisKICNpbmNsdWRlIDxD
b3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaAppbmRleCA2MjhmOTM5YTMwNWNjZjc0NjY5
ZTZiY2JhYmMwZjU5MTc5NTYzNzg2Li4wNDFjMjlhMzEyZjA5ODE3ZjhlY2YxNzM2MTYxM2NhZDJm
ZDZmNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JQ
YXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUGFydC5oCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCmluZGV4IDlmZjYwMGNhYzU5M2Qz
NTk0NWMxMGVhMTE0NTM3NGRiYzk3MjgwMTMuLjQ3NGEwZjJmOGJiYTFjYjFmOTYzY2NjOTk0NGYy
ZTc5ZGFiYzFkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIEJsb2JSZWdpc3Ry
eTsKLWNsYXNzIFVSTDsKIAogV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lzdHJ5JiBibG9iUmVnaXN0
cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuaAppbmRleCAyNGZlY2M5NWE0MTk2MGIxM2RkODc0ODE1MTBlYzI3OGE4YjFlZjI0
Li5jNjkxZTViNjcwMDdlZGEyZTJmZjhiYjYyMjZhMDBhMzAwNTE0ZjY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAtMzMs
MTQgKzMzLDEzIEBACiAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JSZWdp
c3RyeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VIYW5k
bGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggNjE4MmJl
NTZjNDI2MDVkNTBlYTI5ZDJkN2JlMTAyMTdkYmY2MjEwOS4uYzk0ZTM5NDk0YjhlMzI2ZGI0YTEy
YTI3MjAxYTQ2MjM4ZGUxOGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMzksNyArMzksNyBAQAogI2lu
Y2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5j
bHVkZSAiUGFyc2VkQ29udGVudFJhbmdlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmll
bGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0
SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDI0OWEwMDM2MWJlZmFjM2M4YWIzMzlhZDg3N2U4NzFm
NGJmZTU5MzIuLjMyYTZmNTdjMGEyMTk2MDQ3Yzc0MzliMDkzOWRmZTJjZDBjMzY5ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2luY2x1ZGUg
IkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAppbmRleCBlNWYzMDRiYmNlNWQwMTk2
OTkxZjVjZDljZTJlMGYyMjEyY2FlNmEwLi4yYzU0MzQzODVmMTg1ZTgyZTI5MTYxYjhmYzQ3ZmU5
OTAxMzk0N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWxTdG9yYWdlLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBQTEFURk9STShJT1Mp
CiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCmluZGV4IDVjYWNjMDU2MzFjMTY4MGQx
ZDk0MjdkNzc4OTUyOWYzYjE4ZDMwN2QuLjdkZGM0ZmU1NWJiMWJlMmY2OTIwMDA4MGMzNGYzNGJh
YmQ1MGVkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3Jl
ZGVudGlhbFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxTdG9yYWdlLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKLSNpZm5kZWYgQ3JlZGVudGlhbFN0b3JhZ2VfaAotI2RlZmluZSBDcmVkZW50aWFsU3RvcmFn
ZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQ
cm90ZWN0aW9uU3BhY2VIYXNoLmgiCkBAIC0zNSw3ICszNCw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogCiBjbGFzcyBDcmVk
ZW50aWFsU3RvcmFnZSB7CkBAIC03MCw1ICs2OCwzIEBAIGNsYXNzIENyZWRlbnRpYWxTdG9yYWdl
IHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENyZWRlbnRpYWxT
dG9yYWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0
YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJM
RGVjb2Rlci5jcHAKaW5kZXggM2Y0ZmIxYWQ4ODRhNzgyYmRjNjE0ZmQzOTRmZTc3NzFhYmE1NGE0
Zi4uNDYwNWJlYTBhN2ExNmQxM2E1ZDJjMGU5MDZmYmFlOTBjZGQ0NjIyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTMw
LDkgKzMwLDkgQEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggNzI1ODI0NzEyOWNiYmFhMmM4NWZjM2I0OWNmZGI2Njgw
ZDJiZDc1ZC4uOTc0ZDljZWJlYjE5NTE4OGI1Yzg0NjkyYWEwZjViMjZiYTk5MGNkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAt
MjMsOSArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgRGF0YVVSTERlY29kZXJfaAotI2RlZmluZSBEYXRhVVJMRGVjb2Rlcl9oCi0KKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CkBAIC0zOCw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogbmFtZXNwYWNlIERhdGFVUkxEZWNvZGVyIHsK
IApAQCAtNjEsNSArNTgsMyBAQCB2b2lkIGRlY29kZShjb25zdCBVUkwmLCBjb25zdCBTY2hlZHVs
ZUNvbnRleHQmLCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYmKTsKIH0KIAogfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCBlOGM3ZDk4
YTA3NWI2NmRkMDU0Mjg3OWI1OTE2NGMwZDQ2ZjZhNzI2Li5iYmFhZGUxODViNzlmNTRmOGMwNzA3
NTM5NjMyMTY2MzQ2ZWMyZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oCkBAIC0yMCw5ICsyMCw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJs
b2JEYXRhLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUHJveHlTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJv
eHlTZXJ2ZXIuaAppbmRleCAxMDNkOWE5NmJiZGM2MTUyYTYxYjdkMTYxZmU0MDkwYmE1YmMzYTA1
Li41Mjc4OWI1YmRkOGRhYjM5N2IzNjlhYWMxNThjMjY3NzIxODc3ZGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oCkBAIC0yMywxNSArMjMsMTMg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBy
b3h5U2VydmVyX2gKLSNkZWZpbmUgUHJveHlTZXJ2ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7
CiAKIC8vIFJlcHJlc2VudHMgYSBzaW5nbGUgcHJveHkgc2VydmVyLgpAQCAtNzUsNSArNzMsMyBA
QCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChj
b25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b1N0cmluZyhjb25zdCBWZWN0b3I8
UHJveHlTZXJ2ZXI+Jik7CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBQcm94eVNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggNzYzMzE4YzJlMTE0NzM2MjM2ZWMzZDEzNmM3YzRh
ODc4ZGRjYjJmMy4uZTBiZjA0YjhhYzhmMDBiMzkzOTc5MWViZmQwMDg3ZWNiOTBkYjc5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJh
c2UuaApAQCAtMjYsNyArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCA0OTE0MzRkOGZhNTNmMTkwZTU0NTNlYjlm
Mzk0ZTQwN2RkNmMxM2JmLi40NmFmNTY3MTNkODk4YzNhN2ZiZDc5OGFhNTBmZWFhNjU0Nzg0OTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIENvbXBsZXRpb25ICiAgICAg
aWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAgYXV0byB1cmwgPSByZXNwb25zZS51
cmwoKTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7
Ci0gICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1
ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKKyAgICAgICAgaWYgKHBvcnQgJiYgIVdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7CiAgICAg
ICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gIkNhbmNlbGxl
ZCBsb2FkIGZyb20gJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAi
JyBiZWNhdXNlIGl0IGlzIHVzaW5nIEhUVFAvMC45LiI7CiAgICAgICAgICAgICBkLT5tX2NsaWVu
dC0+ZGlkRmFpbCh0aGlzLCB7IFN0cmluZygpLCAwLCB1cmwsIG1lc3NhZ2UgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggMDFh
ODZlMzU5YjFmZDBmMmVhZjQ1NjhhYTcyODY0MGMzMmI3NmY3OC4uNjVmMzBmOTVkYjYwNTRhNWQw
MWIyOWYyNDY4YjU5ZTk3MzcyNGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtNzcsNyArNzcsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7
CiBjbGFzcyBGcmFtZTsKLWNsYXNzIFVSTDsKIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogY2xh
c3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRl
eCBkNmVkYjZkNjE4YWRjM2JjY2UyM2YwMWZiOTdmZjEzOTk3YTZmYWMyLi4zZTEwYmVmNDkxMDdk
MTM3ODE3Y2I5OTMyOTg1MjE3NWJiOGQ0MGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC00NCw3ICs0NCw2
IEBAIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlhbDsKLWNsYXNz
IFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGZmNTgzNjE3NGVhYjk1OTUyOGEy
MDdiZmJhYWI2MDAzOWQ5YjUwMzMuLmZiNDYzNjM1MjJhN2ZlYzI1MjdkY2M0ZDEyNzVlZGEzZjc2
MzMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFJlc291cmNlUmVxdWVz
dCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByCiAgICAgICAgIHJlcXVlc3QubV9odHRwSGVhZGVyRmllbGRzLnJlbW92ZShIVFRQ
SGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAgICAgfQogCi0gICAgaWYgKHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJ
cygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCks
ICJodHRwcyIpKQorICAgIGlmIChzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0ICYmICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgJiYgV1RGOjpwcm90b2Nv
bElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQogICAgICAgICByZXF1ZXN0LmNs
ZWFySFRUUFJlZmVycmVyKCk7CiAKICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVh
bChyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXgg
M2FmNDM1MjY5ZmUxZmNlMDM3Nzg1ZmQyNWExZTBjYmJmZDc5MGYzNS4uZTdjMWM0MDljM2I5YjY0
ZWE3YjRlMzc4NzgzNDM5NTQyYTRhZDBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTMxLDcgKzMxLDcgQEAK
ICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuaAppbmRleCBkOGZjYzE0MzFiNTBiYzdhYjY3ZjFkMTk2OGI5MWNlNzBlYTE2MWVm
Li4wZTU1YzFjZWZmMmFlN2MzNzFmNjBlNmVjMzRhODE1Yjc4YTgyMTNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5o
CkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5nZS5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlLmgKaW5kZXggYjU5YmRiYTBiNDEyOTVjZWUzODUzZjZmZWEyMmFiYzI0ZWNkYmYyNS4u
NmQxZmQxYTgzMDk5Mzk4OTRiNDllYTg0Yjc3YTU5ZjExN2Q4YTAyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC0z
MSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKaW5kZXggYmEzNDBmZjg4
ZDYyMDNiNzEyNTIwOWE4NTAyM2QzNDlkZjM1ZjJkZi4uNGY4ZTQzMjJhYzU3MWQ3NzcxM2QxMDE0
Mzc0MDQ1ZmY2ZGNjZmNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTMwLDExICszMCwx
MSBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUaW1lci5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwCmluZGV4IGZhMDRjOGI3MDk5Y2JhZWI2ZTVmNGMxNWIxNzQ1MjY3NDA5YjNh
ZDcuLmY4ZWJiMDZjY2QwNTZlMzUwZWQwMGYwYjkyNWZkYWFjZmZkZTRkOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC00MiwxMiArNDIsMTIgQEAKICNpbmNsdWRlICJD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgogI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVn
eS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQ
SS5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmluZGV4IGI1YzZh
OGQ2YzMyZmZkYmQ5MGIyMTAwNDJiOTQ3MTQ3NDNhMGM1NGIuLjJhYjM0OTcyMTZhYzVhYTg3NmUw
MDRlN2E3ZDU2YThlNDhkZWM0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVyLmgiCiAKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJy
b3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJy
b3JDRi5jcHAKaW5kZXggYmEzNjA1YmJkMWQ0NmY5N2RlMjgzOGYzOTgzNzg5MmY5OTUyMmI2OC4u
ZDQxNmY2MTUxNGVmMWZmMDIzMTFkNWMyZDEwMzVlZmQ1NDFlOTQzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApA
QCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZFcnJvci5oPgogI2luY2x1ZGUg
PENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA4OTQ4NWEzMWY1NDQ1YTVjODllOTNi
ODEzYzkxMDgxYTc0YTQ5MTljLi4wZWFkZTE1OTljZTU4YmI2NDBmMmQxMjEzYWM0MzYwMjE0NzNh
ODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTMxLDExICsz
MSwxMSBAQAogI2ltcG9ydCAiQ29va2llU3RvcmFnZU9ic2VydmVyLmgiCiAjaW1wb3J0ICJDb29r
aWVzU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlNhbWVTaXRlSW5mby5oIgotI2ltcG9ydCAiVVJMLmgi
CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3Rm
L1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogQGludGVyZmFjZSBOU1VSTCAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmgKaW5kZXgg
ZTBiMjFjYzEzNzc0OGE4ZTE2Mjc0ODMyNjA3YzE4ZDdhNDgxNjBmZS4uYjk2MTRiZmYwMDc5ODRj
YTVmMjIxOGUwYjY1OWFhZjJmNGEyZDYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oCkBAIC0yNSw3ICsyNSw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOwogCiBzdHJ1Y3QgQ29va2llOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmxEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNlLmNwcAppbmRl
eCA1ZTg0NTRhYTU0YWY2ZjcxYWNmYWU3ZTkzNjI0MDdjMjE0MTc1MTg1Li5jMmQwNTFlMzc5M2Y1
YThlODY4YTRlNzlkZmUxNjQ2NTY3NTE3YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNlLmNw
cApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5LmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IDY1
MDAzOGQzOTQxMmM3Y2EwMzg0M2Q4YWM5M2YxNDY2YTRlODdjODIuLjM5ZTc3YmY3ZDQ2MGZmNzZh
YTc3ZmNhNjFjYjI2MTNiMWE3NTU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMjksOSArMjksOSBAQAogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FM
aXRlRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSA8d3RmL01vbm90
b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZVV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGls
LmgKaW5kZXggYTg5YzlhYjdiOTYyNjI0NDgzMjYyNTI1NDcwZjFhNGRjYzlmZjM3Mi4uNjE4ZGY3
Yjg4ZTQyOWVmNzY0ZTEyYjI2N2M3NGFkZmExYWU5ZWM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oCkBAIC0yNCw4ICsyNCw4IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXggMzczMjYwMTc5Yjg4NmYxZWVkYTA2
ODEzOWYwMDY4NGExNGFmMDc3NS4uZjhkNjgxMDgwMWVmYmFkZDlkNDEwMDIyOTRhZGEzOTlhMDk2
NTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDb250ZXh0LmgKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaW5jbHVkZSAiQ3VybFByb3h5U2V0
dGluZ3MuaCIKICNpbmNsdWRlICJDdXJsU1NMSGFuZGxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAK
ICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIE9T
KFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAppbmRleCBhNjFj
NmVjMjI2MmQyZTM4Nzk5MjcyNGI2ZGNjNWY2OTRkMTE2NjQ5Li5mMzVmNDFiNTFmNTg5NmY2Zjcz
MzY2MDU1MjQ5YzMwYmEzOTViM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaApAQCAtMjUsNyArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2RlZmluZSBrQ1VSTEFVVEhf
RElHRVNUX0lFICAgICgoKHVuc2lnbmVkIGxvbmcpIDEpIDw8IDQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc3BvbnNlLmgKaW5kZXggMzczNjYx
YmQzNWFmY2U2NjdhZTFiYjM1NzdhNmMwOWRjMTQ0ZmE0ZC4uZTYxMWZmYzRmYjE1NDFmNGNmZDEz
Mjg3MmNiYzFkNWRjM2Q5M2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2UuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5kZXgg
ZTExMGFkMTY0OTEwNWVjNmIwMDNiMTk5MDM2YWQ4YThlNzA0NzcxNC4uMWJkMjFlY2VhYmZmN2U3
OTIwMGFmODJjY2QwOWMyYTg4NzE4OWUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
dXJsLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIK
LSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwu
Y3BwCmluZGV4IGNkYTQ0OTkzZjYzNGIyNDQ0YTYxZGNhZjk3NDAxZTlmMjYwMmYwYjAuLjE4ZjUw
OGI2ZTQ4NjgyYThmYzcwMGQxZjY3ZDdhOTZlMDkzZWQ0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3BwCkBA
IC0yOCw3ICsyOCw3IEBACiAKICNpZiBVU0UoQ1VSTCkKIAotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCBjZmM0OGZmYTI1ZmQ4MGZkYjhkNzFmYTdjMzg5
M2QzZTg2YTQ1NzdhLi4wNzEwY2FlZTI1MDNjMWYzZjM4MDhlMjA0MzcwNTg4MjdlZDM2ZGM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTM5LDkgKzM5LDkgQEAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNp
bmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggMmVjZjQyOGMwYWI1MTRhY2UwYzAxYzVmNGQx
NjI5OGNlYTIxNjA3My4uZGNiZGUzNDhlYjQ3N2MyYTFiNWFiZTRhYjU5MzU5Mzk4ZTJhYzlhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VF
cnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZUVycm9yTWFjLm1tCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgPENv
cmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIEBpbnRlcmZhY2UgTlNFcnJvciAoV2ViRXh0cmFzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNvdXAuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZkYzYzNzQxMmUxOGJhNzI1Zjc0ODNlYzMyNmUx
MjQ5YTg4YTE2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNvdXAuaAor
KysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBHVW5pcXVlUHRyU291cF9oCi0jZGVmaW5l
IEdVbmlxdWVQdHJTb3VwX2gKLQotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUg
PHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLVdURl9ERUZJTkVf
R1BUUl9ERUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2ZyZWUpCi1XVEZfREVGSU5FX0dQVFJfREVM
RVRFUihTb3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVlKQotV1RGX0RFRklORV9HUFRSX0RFTEVU
RVIoU291cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3NhZ2VfaGVhZGVyc19mcmVlKQotV1RGX0RF
RklORV9HUFRSX0RFTEVURVIoU291cEJ1ZmZlciwgc291cF9idWZmZXJfZnJlZSkKLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CmluZGV4IGU0ODNhYTYzMTZjZTZjNWQ2YzhmM2U2NTVkNTVkZDFlZWIwNDYzY2YuLjAzZDE1NmU1
ZWQ2ZThjMWY1OTA5NTZhOGJkODQwZThhM2QxMGU0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uU291cC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgog
I2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgiCi0jaW5jbHVkZSAiR1Vu
aXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNv
dXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgpAQCAtNDEsNiAr
NDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKICNpZiBVU0UoTElCU0VDUkVUKQogI2luY2x1
ZGUgIkdSZWZQdHJHdGsuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKaW5kZXggNGMyNzdjM2QyMTY3YWNjNTQ0
MTFmOTYwM2UzNTE5MDAxNzMzYjRhZC4uOWM5OWY4OTVkYjRkYjdjODExY2E1MGY1MTFkM2Q0ZmIy
NWM3MTZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Byb3h5U2VydmVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFVTRShT
T1VQKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggNjM3MzRjNjc0YzUyZWU5
NWRjNmM5ZTQyMWM0NjYwZjQxODQwMGJhYS4uZmI3MTgxM2EzNzU5MDljMGE3YTJmNTQ1NzRhODEx
YWVkZGIzZmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAog
I2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgot
I2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNp
bmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5o
IgpAQCAtNTgsNiArNTcsNyBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGli
L0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9y
aXR5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXgg
MzhlM2E4ZWU2OTY4MTFmZDViYTc4YjRiMzBjMmMwMWEzOWZmNWI1Zi4uNzQ3MmFkMjM4YjMzNGE5
NTA5MDFlZGU5MDE1ODMyNjViM2Y5YmM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApAQCAtMjcsOSArMjcsOSBA
QAogI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RfaAogI2RlZmluZSBSZXNvdXJjZVJlcXVlc3RfaAog
Ci0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3RC
YXNlLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0clNvdXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291
cC5jcHAKaW5kZXggNThjZmE3NzYxNDRjODRhMDkwZDM2MjJkZjIyMjc0MjE4Zjc5MWJiNi4uZWQy
Njk0MDFlYmJmZjRkZDYzOGVmOGVmYzFlMGVkODY5MjJmNDZmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RT
b3VwLmNwcApAQCAtMjQsMTEgKzI0LDExIEBACiAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2lu
Y2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgog
I2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYktpdFNvdXBSZXF1ZXN0R2Vu
ZXJpYy5oIgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAppbmRleCA5Y2RkZGI4N2UzNzU5NWEy
YmJhZDY1MTAyMDQ1ZjZmYTc0MmI0ZTQyLi41YWY5NDczZjM3NzI4NjExMzFiYWU3MTc3YjM0MzE5
YTVjMmRiMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKQEAgLTQx
LDkgKzQxLDkgQEAKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGli
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNv
dXJjZVByaW9yaXR5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDEzZWNiNWIwZjc2M2My
MDFjZjE3YTQxNjEyYTczZjA5YThmNWEwNzguLjYwMDRkMTdmNzZhMDNhOTBlMzM4YTkwZTNjNTQ1
YjUyZjUxOWM3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zMSw3ICszMSw2IEBACiAK
ICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlIDxnbGliL2dz
dGRpby5oPgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGln
ZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3Jr
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3
b3JrU2Vzc2lvbi5oCmluZGV4IGQxZTlkOWNlNWIyODlkMTRjYzZjMTY1OTNiZjRhZDA2NzgyN2U1
M2EuLjViNWZmNzk3NzM0NzE1MTk2MWE0NWMzNDk3ZWEyZjU1MTM0NGIxYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtT
ZXNzaW9uLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
ZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgVVJMOwogc3RydWN0
IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczsKIAogY2xhc3MgU291cE5ldHdvcmtTZXNzaW9uIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5N2RiYTMyODY5NWZmY2IyNmYzODdiNjcyYWE5Mzg3MzcyYjJlOTFjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lm
IFVTRShTT1VQKQotCi0jaW5jbHVkZSAiVVJMLmgiCi0KLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIK
LSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwoU291cFVSSSogc291cFVSSSkKLXsK
LSAgICBpZiAoIXNvdXBVUkkpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBfdXJpX3Rv
X3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwotICAgIFVSTFBhcnNlciBwYXJzZXIoU3RyaW5nOjpm
cm9tVVRGOCh1cmxTdHJpbmcuZ2V0KCkpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsK
LQotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBNb3RpdmF0
ZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTU2LiBsaWJz
b3VwCi0gICAgLy8gZG9lcyBub3QgYWRkIHRoZSBwYXNzd29yZCB0byB0aGUgVVJMIHdoZW4gY2Fs
bGluZwotICAgIC8vIHNvdXBfdXJpX3RvX3N0cmluZywgYW5kIHRodXMgdGhlIHJlcXVlc3RzIGFy
ZSBub3QgcHJvcGVybHkKLSAgICAvLyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0cmluZyBp
cyBhIG5vLW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMKLSAgICAvLyBub3Qgd2FudCB0byBicmVh
ayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRpb25zCi0gICAgaWYgKHNv
dXBVUkktPnBhc3N3b3JkKQotICAgICAgICBzZXRQYXNzKFN0cmluZzo6ZnJvbVVURjgoc291cFVS
SS0+cGFzc3dvcmQpKTsKLX0KLQotR1VuaXF1ZVB0cjxTb3VwVVJJPiBVUkw6OmNyZWF0ZVNvdXBV
UkkoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIHJldHVybiBHVW5pcXVlUHRyPFNvdXBVUkk+KHNvdXBfdXJpX25ldyhzdHJpbmco
KS51dGY4KCkuZGF0YSgpKSk7Ci19Ci0KLWJvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5n
VmlldyBob3N0KQotewotICAgIHJldHVybiAhaG9zdC5pc0VtcHR5KCkgJiYgZ19ob3N0bmFtZV9p
c19pcF9hZGRyZXNzKGhvc3QudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRFbmNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmcuaAppbmRleCA3N2M1Mjg4ZmQwY2UwNTk4NjRlZjgxMjNlMDA3MmJiN2MzNTcyM2RiLi43ZDAz
Zjg2M2QwZGY0OWQyZjc5YzdjM2E2ZDEzODJjZjQxNjgxMGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKQEAgLTI1LDEzICsyNSwxMyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC90ZXh0L1VuZW5jb2Rh
YmxlSGFuZGxpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4dEVuY29kaW5n
IDogcHVibGljIFVSTFRleHRFbmNvZGluZyB7CitjbGFzcyBUZXh0RW5jb2RpbmcgOiBwdWJsaWMg
V1RGOjpVUkxUZXh0RW5jb2RpbmcgewogcHVibGljOgogICAgIFRleHRFbmNvZGluZygpID0gZGVm
YXVsdDsKICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29uc3QgY2hhciogbmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKaW5kZXggYmFlMWJlYWFhYTM3
YWRlMzAzYjA4ZjM0ODk0OTI0OTAxODY0NzljYS4uMGY0NmM1ZGNhYjI5YjdiNDYzYmI2ZWNkMzFi
MGViM2I3NThjMjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JT
dHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcApA
QCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJTdHJpbmcu
aCIKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQlN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcu
aAppbmRleCAxZmJlMDJjMTU4N2MxMjliOGQ1MDUwMmU2NDYwNGU3ODZjZTgyYTJhLi4xODRiNTUx
ZDQ4ZTljMjMxZWEwMmE3ODc1NmZlOTZmZWQzZTU2NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9CU3RyaW5nLmgKQEAgLTQwLDggKzQwLDYgQEAgdHlwZWRlZiBfTnVsbF90ZXJtaW5hdGVk
XyB3Y2hhcl90KiBCU1RSOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBVUkw7
Ci0KICAgICBjbGFzcyBCU3RyaW5nIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEJTdHJpbmcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5jcHAKaW5kZXggNmZmODllYzE4MGQ1ODM1YzU5MTQwZmM2YTM4N2Y0N2IxMjViMGEzMi4u
NzkwYTgyZjhiNjcxMTAwYTE2MmU1M2VkODk3OTdjZDkwNzhlZmZmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAg
LTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGllc1dpbi5oIgogCiAj
aW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHNobG9iai5o
PgogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3aW5pbmV0Lmg+IC8vIGZvciBJTlRF
Uk5FVF9NQVhfVVJMX0xFTkdUSAogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0y
NzIsNyArMjcyLDcgQEAgdm9pZCBtYXJrdXBUb0NGSFRNTChjb25zdCBTdHJpbmcmIG1hcmt1cCwg
Y29uc3QgU3RyaW5nJiBzcmNVUkwsIFZlY3RvcjxjaGFyPiYgcmUKICAgICBjb25zdCBjaGFyKiBz
dGFydE1hcmt1cCA9ICI8SFRNTD5cbjxCT0RZPlxuPCEtLVN0YXJ0RnJhZ21lbnQtLT5cbiI7CiAg
ICAgY29uc3QgY2hhciogZW5kTWFya3VwID0gIlxuPCEtLUVuZEZyYWdtZW50LS0+XG48L0JPRFk+
XG48L0hUTUw+IjsKIAotICAgIENTdHJpbmcgc291cmNlVVJMVVRGOCA9IHNyY1VSTCA9PSBibGFu
a1VSTCgpID8gIiIgOiBzcmNVUkwudXRmOCgpOworICAgIENTdHJpbmcgc291cmNlVVJMVVRGOCA9
IHNyY1VSTCA9PSBXVEY6OmJsYW5rVVJMKCkgPyAiIiA6IHNyY1VSTC51dGY4KCk7CiAgICAgQ1N0
cmluZyBtYXJrdXBVVEY4ID0gbWFya3VwLnV0ZjgoKTsKIAogICAgIC8vIGNhbGN1bGF0ZSBvZmZz
ZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRp
bGl0aWVzV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0
aWVzV2luLmgKaW5kZXggNWNkOWUwZTc1NzMxM2ZmMDIyOWE2Y2ZiYThlZDY0OTBhODFhZmUyOC4u
YzM3ZjNlMmRlMTk2MWU2YTEzMDQ1NDc3Y2NhODY5MjY0ZjAzMjViOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaApAQCAtMzQs
NyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RG9jdW1lbnRGcmFnbWVudDsKLWNsYXNzIFVSTDsKIAogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRh
KGNvbnN0IFN0cmluZyYpOwogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3Rvcjxj
aGFyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApp
bmRleCAxZGZhNTBiNTMyZGQ4YjVhZjY2Njc1Zjg0NDlmZTU0MTkxMTc0ZWZmLi5hNmI2NzJmYzcy
N2ZlODM3OWEyZDBmN2UwNDYwNzE2OTYwY2ZiYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbmNs
dWRlICJUZXh0SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIldl
YkNvcmVUZXh0UmVuZGVyZXIuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwNjk5Nzk5MDYzMWU1YzM0MzY0NzE4
YWU2YWIxNzY1OTRjZGYzNjlkLi5kNTk2N2E1ODIwYzk3YWUyOGM2MjVhNTBkODAzOGUwMGVlMjVk
ZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSGl0VGVz
dFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRl
ckltYWdlLmgiCkBAIC00OSw2ICs0OCw3IEBACiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5kZXggMGI2YzQyZWUyZDA4MTY4YmVk
ZWZjOGYzZDBmOWVhZTZlMWE2YmY1OC4uZjA0MGIwYWY5NmYzYjhiYmQ5ZjU0OTMyOTMxMmI4ZjRm
NzA2OWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKQEAgLTIwLDEwICsyMCwx
MCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggZDA3
NzdiMzQ1MGMzYTAyMGFlZmQ0M2E3MjNjYzZjYjEzM2RlYWUwYi4uMzMyZjI4NTMxZDM4OGNmZTJj
M2Q1OGE5NGMzZjI2MTdkY2I5MTY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFz
cyBJbWFnZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBVUkw7CiAKIGVu
dW0gY2xhc3MgSGl0VGVzdFByb2dyZXNzIHsgU3RvcCwgQ29udGludWUgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCmluZGV4IGVkMzMzNWUxMzc0
ZDhmNzIyOTI1MmQ1NGNlMDY3Y2MzODQ3NjgxYmQuLjc0NjdmZjM4NjU2ODJiOGJlNjNiYjY3ZGVi
ZDcxOWE0YzhiN2UzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0
YWNobWVudC5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRo
ZW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKaW5kZXggOTk5OTZlMDFlZDA3MWFmNTg3MWExZGEx
NjZjNjMxNDlhMTNiNGU3NC4uNzIyMWRmY2I3ZGRkZTU5MDM5Mjc2YWRkYzlmMzliZGEyZDc4OTA0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBA
IHZvaWQgU1ZHSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2ZW50KCkKIFN0cmluZyBTVkdJbWFn
ZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlKSBjb25zdAog
ewogICAgIFVSTCBiYXNlID0gZWxlbWVudCgpLmJhc2VVUkkoKTsKLSAgICBpZiAoYmFzZSAhPSBi
bGFua1VSTCgpKQorICAgIGlmIChiYXNlICE9IFdURjo6YmxhbmtVUkwoKSkKICAgICAgICAgcmV0
dXJuIFVSTChiYXNlLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRl
KSkuc3RyaW5nKCk7CiAgICAgcmV0dXJuIGVsZW1lbnQoKS5kb2N1bWVudCgpLmNvbXBsZXRlVVJM
KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAKaW5kZXggNjg1MDRhYTg0ZjI2Y2IxOTNmZjM1
ZmEwOGIwYTRmNmQxZTU1ZmMyYy4uZGExM2I3N2I2ZjNkMWI4MjgzZGNhOTk4OGQ4ODc2ZGQzNmUx
NWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAKQEAgLTI1LDcgKzI1
LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNs
dWRlICJTVkdBdHRyaWJ1dGVPd25lclByb3h5LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA4N2UyODIzZjll
NzFiNjdiZDQ4MWU4ZTg4NDExYmFkMDAxMjY0Yjk4Li5jZDNmZDBkMWUyNTlkYWI0ZTMzYTY5YWI2
YWQxODQ2ZDlhZTVlMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApA
QCAtMjcsNyArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbWFnZS5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNo
ZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAppbmRleCAz
ZjViYzNhNzU2ZTY4NzkxYmFjOGQzNjgzYjZjM2MxNjc0NmQ5ZTQyLi4zMmU3MjJiZmEyNzM0NTRj
NGI1YTExNGVmODA5NjQzNzUyMzRmODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUNhY2hlLmgKQEAgLTMzLDcgKzMzLDYgQEAgY2xhc3MgTGF5b3V0U2l6ZTsKIGNs
YXNzIFNWR0ltYWdlOwogY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFNWR0ltYWdlQ2FjaGUgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaAppbmRleCA2OTgwNmJlNjc3MDNlMmU5NDlmMzQxZDVjOTg2YTg1
ZWEyZDdlMjRmLi40Y2ZjZThkNGIwMzc4NTc5MTQyMjY3YWE2YjgwODc2NzEyNmIwNDI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
aApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IDI2NmM2Zjg2MDBmMWU1ZmRlYWI5MDBkNWNhYmYwYjY4YmE0NWY3
MjAuLmUyMGY3YjY3YjRlN2VhMDk5OTVhOTQwZTliNmRkMTU1YjExZTg4ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIEludGVybmFs
czo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgICAgICAgICAgYmFja2lu
Zy0+c2V0VGlsZVNpemVVcGRhdGVEZWxheURpc2FibGVkRm9yVGVzdGluZyhmYWxzZSk7CiAgICAg
fQogCi0gICAgV2ViQ29yZTo6Y2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGlu
ZygpOworICAgIFdURjo6Y2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygp
OwogICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhWZWN0b3I8U3RyaW5nPigpKTsK
ICAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFVzZXNPdmVybGF5U2Ny
b2xsYmFycyhmYWxzZSk7CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpz
ZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9yKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMubW0KaW5kZXggNmZjZGNiZWRkM2Y3ZGE0Y2M1NDIwYTkzNjczNDI5NDFhNWMxMTQ5Ny4uN2M1
YjdhZDg0MmQ5OThmZTYxYTAxNDIzMDUyYzBhMWU2MGI5MzNmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMubW0KQEAgLTMyLDggKzMyLDggQEAKICNpbXBvcnQgIkV2ZW50SGFuZGxlci5o
IgogI2ltcG9ydCAiSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKLSNpbXBvcnQg
IldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1w
b3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKIFNPRlRf
TElOS19GUkFNRVdPUksoVUlLaXQpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU3RyaW5nIEludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgRE9NVVJMJiB1
cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybC5ocmVmKCkp
OworICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybC5ocmVmKCkpOwogfQogCiBi
b29sIEludGVybmFsczo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggNjQ4ZmJkMjZmYWMz
NmE2NWM5OTU3YzUxMTU3ODg3NjQ2ZjJkYzI2Mi4uNTExODFkYWU3MmUxM2UyYmJkMTUzZTgxMWMx
NDM2NGQxY2Q4YTE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6d2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2UKIAogICAg
IFVSTCBtb2RpZmllZFJlcXVlc3RVUkwgeyByZXF1ZXN0LnVybCgpLCBtb2RpZmllZFJlcXVlc3RV
UkxTdHJpbmcgfTsKICAgICBpZiAoIW1vZGlmaWVkUmVxdWVzdFVSTC5pc1ZhbGlkKCkpIHsKLSAg
ICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJNb2NrQ29udGVudEZpbHRlciBmYWlsZWQgdG8g
Y29udmVydCAlcyB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVzdFVSTC5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTW9j
a0NvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgJXMgdG8gYSAgVVJMLlxuIiwgbW9kaWZp
ZWRSZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGlu
YXRvci5jcHAKaW5kZXggOWI2ZTk1ZTIxNTQ4MzBjMDAwM2Q2ZTIxODAwM2FjZWFhMjJmZWQ1MS4u
NDkyOWU4YWUzZDE5ZGM4ZWIxMzUwYWQ1ZTE1YzA1MTNmMTY4MTMwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0zMyw4ICsz
Myw4IEBACiAjaW5jbHVkZSAiTW9ja1BheW1lbnRNZXRob2QuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3Jl
VGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1
cHBvcnQuY3BwCmluZGV4IGQyNDEyMDZhMjhkZDVmNjQ3MGRhOWZiODRlOWVkNGZjNzRjMjg3YjAu
LjU4MDlmMGJlZGYwZTdhMDcxNzI4ZDA5ZWI5Mjk3NDdjNGI0ZWUwN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTM5LDEyICsz
OSwxMiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiVVJMUGFy
c2VyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFt
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJz
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCmluZGV4IDkwMGMyY2I0
MDQ2MmEwZWJlMzcwMjhhMzc1YTYzM2ZlYWY5NTM0ZjEuLjAzMjFjMmM3ZmVkMjU2NjI4ZmYyNmNl
ZDkxM2FlYjhhZmMzMGUwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJz
dHJhY3RXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2Vy
LmgKQEAgLTM1LDggKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7
Ci0KIGNsYXNzIEFic3RyYWN0V29ya2VyIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJhY3RXb3Jr
ZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6CiAgICAgdXNp
bmcgUmVmQ291bnRlZDo6cmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oCmluZGV4IDViOWEwYmUzNjljMjk5YzBmYjc1NDEwNzhmYzc2NTZkNmRlNzllYzEuLjI4
MmRkMDZiYzMzOGExZTA2OWE1YmQ0NmQ4NjNmYzMyOWQwYmE0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRl
ICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xs
ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGVQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5
LmgKaW5kZXggMzZiZDAwNzA3ZDBhNjhkYjMwNzYyNzJiYTY1ZjMwYTNhOTI3ZjFlNy4uODU4NWE1
YmZmOTNiMDQ2NjVkZTUzMjFlZDMyYjkyZmZhOTc2YTE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKQEAgLTQyLDcgKzQyLDYgQEAgY2xh
c3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXb3JrZXI7CiAKIC8v
IEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2VyIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKaW5kZXggZGY0MzcxYWUyM2MzMDMwNmVh
N2JmNjQwZDI3ZjllMTRiOTc1ZTRiMi4uYTFkM2VhNzU3NmU3ZWEzNGE2NGNiOTE1NDdkZTc2YWNm
NTE4YmRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0
b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJv
eHkuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oCmluZGV4IDUzYzc3NjE1Njc1NWI3MDZi
OWQyNDkzNzE2YTgxMjUyN2ZjYTM1ZjguLjkyY2ZjYzc3MDZmMDM0ZTU3YjlmODJlOWJhMjdiYTNh
NTFhMDlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmgKQEAgLTI1
LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggZTU3YzMyM2NkZTllNmY0ZjgwYWY5
YjI1YjJjZmUxZWUyZTczNzRkOS4uMDRhNDFjMjFjYjJmNzUzMWZkZTYxOWU0ZDY3ZGQ1NjQ0OTA1
Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBA
IC0zMiwxMSArMzIsMTEgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcAppbmRleCAxYzZhYTE2NWI1OTE4NzE0N2M4YmE4MDk1NjFiMzAzMTVjODRi
MGI3Li44NGYxMWUyNmVlYzZiZjkyMWJiMDY1M2EyYjk1OTIzNzZjNDNjM2MxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1
ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGQ3MTQxMjQ4NWE5NjkwNDlhZGI0OTY1OTc0ZGJlOTFm
NWVlMTkxODkuLjNkYzU0ZjZjNDczZGIzNzY3NTI1ZDFjYTQxMDNkNWQ2YTU2Yzk2OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtMzksNyArMzksNiBAQCBjbGFzcyBT
ZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVyczsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vdGlmaWNhdGlvbkNsaWVu
dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaAppbmRleCA5YjliY2M4
YTIyZjlkNzY3MTI5ODk3ZWMwMWYzN2IyYTU1MjFiN2VkLi43YjIzOWYzMDdkYTcxZTE1NmQ4N2Jh
MjM1M2I1MWIxYTMzMzVmZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyLmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU1ZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERh
dGEuaAppbmRleCAxNDNkN2Q5ZTA0NWQ1NGUxMWE4YzZlZDlhYzE0ZTM3YjE1NmEwNTI5Li5mOTkx
ZjMyY2U2ZDNhOWIyNTdhNTYxMmI0NjM2NWE2NzlhZTJkMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDQwZDQwZGFk
YTBiMThmMjJhODgzN2NiOTc2OGE0YTk5NmUyZTZiZDIuLjhkYjljNDE2YmRmNzNjNjg2YWVmMTU4
ZDY0ZDYxMDA0MmZlOGVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBDT05UQUlORVJfUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OiIgZm10
LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBDT05UQUlORVJfUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDNi
ZTk1MDQyNWVhNzgwY2ZmZDViYmVlNzg1ZmE0NTMyYWY5NGEzZDcuLjRkNjIwODg5ZjkzNGE3ZWZh
MjYwYjMyMDliNGUxNzZiMDJhYjBkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTI5LDExICsy
OSwxMSBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJVUkxIYXNo
LmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMSGFzaC5oPgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckRhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCmluZGV4
IDcyOGMzN2NmZTYyYTVmZTU2MGFiNmM0ZWIxODY0ZjA0NDRjZjkzNmUuLmNlMzYxZDNmM2QwZjM4
NzNhODZkYzhhOTM4YmFmMDNmMWQxNjRhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJXb3JrZXJUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKaW5kZXgg
MDg3MGJiNmVmNjAyOTg0NWNkNGE5YjZkZTIzMDBhODgzY2FhMWMyMi4uOTNjMmRmNmZmMGQyZjM5
OGU4NDEyNjhiZTE5NjY0ZjdhOWNlNjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
VHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCmluZGV4IDFjM2Q3
NDZiMjNkYjkzZTM1NmYyMmU2MzEyMGIxY2Q0ZjRjZGIwYzkuLmJjZGQ4YzQ2OTI3ZGM0MDA2MGIw
ZGVmOWRlYmVlNWVlYTVlZjE3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKQEAg
LTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKKyNpbmNsdWRlIDx3dGYvVVJM
SGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5o
CmluZGV4IDcxMGY0MTJiNDcyZDhmMTc0MmUwYmVlNDhkNTAyYmU4OWE5YTAzOTkuLmU2YWY3MzMx
YzdiOTU0MzlkNTM5OGE5YThjMzdlMzQ3NmI4ZmRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDIsNyArMTAyLDcgQEAg
c3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXlIYXNoIHsKIHRlbXBsYXRlPD4gc3Ry
dWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gOiBH
ZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiB7
CiAgICAgc3RhdGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgZW1wdHlW
YWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmVt
cHR5S2V5KCk7IH0KIAotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHNsb3Quc2V0U2NvcGUo
V2ViQ29yZTo6VVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9CisgICAgc3RhdGljIHZvaWQg
Y29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29wZShVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7IH0K
ICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnNjb3BlKCkuaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApp
bmRleCA1MDUyMGI2YTE0MWIxODNmMDQ4ZGU2MDkzMjlmOWNjODFmMjU0ODcwLi42MjYxN2NiODdh
MTBjMTVjNTIzOGUwYzBjYWE3NjdmMmJlOGFjODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiWE1M
SHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmNwcAppbmRleCBhY2Q2NWU5YzgwYTA2N2YyNzJhNThlMWQ5NzM1YzExZmU2NTEyYTk0Li4xZmI0
MTVlMmQyZDA4NjUzZWZjYTI3MWJlOWM4ZjBlYWU0NTRmZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3Bw
CkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
aAppbmRleCBkZTIyYzc5ZjhlOGQwZTJiODE3MjRmNjUxMTFhOWYxMGE1ZDIwMzY5Li4zMjEwZTMy
OTllNmZjYjgzMmZjMzljOGVkNmNhOGU2Njc4YmM2YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKQEAgLTQw
LDcgKzQwLDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7CiBz
dHJ1Y3QgQ29va2llOwogfQogCkBAIC03OCw5ICs3Nyw5IEBAIGNsYXNzIFdlYkNvb2tpZU1hbmFn
ZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjCiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25J
RCwgV2FsbFRpbWUsIENhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBzZXRDb29raWUoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2V0
Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwg
Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3Vt
ZW50VVJMLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9u
SUQsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1T
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIHZv
aWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZTNkZTlkOGNmYWI5ZmQ1ZjZmYjY4YTJjMDcxMDI2MmE4
NTVkYzQ0OC4uMGIxZmQ1NTllMGJlYjI2ZTAwMzc5NDM0YWRhZTRlNWM5ZTQ3ZGFhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI5LDkgKzI5LDkgQEAKICAgICB2b2lk
IERlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiAgICAgdm9pZCBT
ZXRDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2ll
IGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBTZXRDb29r
aWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29v
a2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBTZXRDb29raWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgVVJMIHVy
bCwgVVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgdm9pZCBHZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCisgICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVy
bCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVDb29raWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCmluZGV4IGMy
YjE0N2M1ZjcyMWI5NTQwNzQ1YjY0OGQyMGJiY2I3Mjg0NzFhYmUuLjZlOTAyOGRiNWM5OTdiZDJh
MzFmZWUxOGEzM2MxMjRiN2ZmMTQyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCkBAIC0zNCw4ICsz
NCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRFbmNvZGluZy5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNVUkxD
b25uZWN0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQ
SS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBiNjc2NjE0OWVlZDExZTljMjhi
MGUxNDMzYWU2ZGVjMGFkNWQ2OTk3Li40ZTBmN2ZhN2RlNjgzYmNhMTI2NTg4ZDFjNDEyM2NkNWJh
ZmE0MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkv
TmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQg
TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQog
Ci12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVj
aykKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogewogICAgIC8vIFRo
ZSBjb25uZWN0aW9uIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBpZiBOZXR3b3JrUHJvY2VzcyBwcmV2
b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJlYXNvbi4KICAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcDo6
aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rp
b24pOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29ya0Nvbm5lY3Rpb25UCiAgICAgbWFw
SXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBj
b25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBz
cmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQordm9pZCBOZXR3b3JrQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyogY29ubmVjdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90
IHN0YXJ0LCBpbnQ2NF90IGVuZCkKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkgbm90IGJl
IHJlZ2lzdGVyZWQgaWYgTmV0d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9yIGFueSBy
ZWFzb24uCiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0g
bV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKQEAgLTExMyw3ICsxMTMsNyBA
QCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKgogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5hZGQodXJs
KTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVybCkKIHsK
ICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgTmV0d29ya1By
b2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9yIGFueSByZWFzb24uCiAgICAgQmxvYkZvckNvbm5l
Y3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmlu
ZChjb25uZWN0aW9uKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0
cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25u
ZQogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5yZW1vdmUodXJsKTsKIH0KIAotdWludDY0X3QgTmV0
d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
IGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQordWludDY0X3QgTmV0d29ya0Js
b2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5l
Y3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9ibG9ic0ZvckNvbm5lY3Rpb24u
Y29udGFpbnMoY29ubmVjdGlvbikgfHwgIW1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVj
dGlvbiktPnZhbHVlLmNvbnRhaW5zKHVybCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY5LDcg
KzE2OSw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6Y29ubmVjdGlvblRvV2ViUHJvY2Vz
c0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQCiAgICAgbV9ibG9ic0ZvckNvbm5lY3Rp
b24ucmVtb3ZlKGNvbm5lY3Rpb24pOwogfQogCi1WZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1Zl
Y3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6
ZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNv
bnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9ibG9ic0ZvckNvbm5lY3Rpb24uY29udGFpbnMo
JmNvbm5lY3Rpb24pIHx8ICFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKCZjb25uZWN0aW9uKS0+
dmFsdWUuY29udGFpbnModXJsKSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3Ry
eS5oCmluZGV4IGMxOWE2NTllMGVmNDU1YmIxMDg4YmNmODVjMjlmZGVhYzkzNzI2MzkuLjkwNmI5
ZThhNTJmZTRjZmEwMjY2Y2Q5NzFkNzE4Y2UyYzkyNTU0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnku
aApAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNo
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsK
QEAgLTQ2LDI1ICs0NiwyNSBAQCBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrQmxvYlJlZ2lz
dHJ5KTsKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CiAgICAgc3RhdGljIE5ldHdvcmtCbG9i
UmVnaXN0cnkmIHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBh
cnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNo
ZWNrKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOwotICAgIHZv
aWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25z
dCBXZWJDb3JlOjpVUkwmKTsKLSAgICB1aW50NjRfdCBibG9iU2l6ZShOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgcmVnaXN0ZXJG
aWxlQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayk7CisgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNr
ZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwg
Y29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lk
IHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3Qg
VVJMJik7CisgICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9y
PFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCB3cml0ZUJsb2JUb0Zp
bGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBG
dW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZv
aWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYg
cGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
IAogICAgIHZvaWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKik7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAg
ICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5C
bG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJik7CisgICAgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihj
b25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICB+TmV0d29ya0Jsb2JSZWdpc3RyeSgpOwogCi0g
ICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgSGFzaFNl
dDxXZWJDb3JlOjpVUkw+PiBCbG9iRm9yQ29ubmVjdGlvbk1hcDsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBIYXNoU2V0PFVSTD4+IEJsb2JGb3JD
b25uZWN0aW9uTWFwOwogICAgIEJsb2JGb3JDb25uZWN0aW9uTWFwIG1fYmxvYnNGb3JDb25uZWN0
aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGQwMzc4N2ZiNGEyNWQ0OWFl
YzNlZTY3NzViODc1YmY4YjIwMzAzOTMuLmY1ODRiYzQ2NjA4NTFjMDBhZmFhYmUxNWZiYjA5OWFh
MjlhNmRjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE1MCwzMiArMTUwLDMyIEBA
IGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDogcHVibGljIFJlZkNvdW50ZWQ8
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByCiAgICAgdm9pZCByZW1vdmVMb2FkSWRlbnRpZmllcihS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2
NF90IHdlYlBhZ2VJRCk7CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291cmNlTG9hZElk
ZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJl
c291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpOwor
ICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZp
ZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6
OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lkIGNvbnZlcnRNYWlu
UmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291
cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIHZvaWQgY29v
a2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBTdHJpbmcmIGNvb2tpZVN0cmluZywg
Ym9vbCYgc2VjdXJlQ29va2llc0FjY2Vzc2VkKTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYgY29va2llU3Ry
aW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQpOworICAgIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIGNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29sJiByZXN1bHQpOwotICAg
IHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2ll
cywgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wmIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk7Ci0g
ICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2b2lkIGRlbGV0
ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQpOwor
ICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWUoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKLSAgICB2b2lk
IHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBw
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9y
PFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKKyAg
ICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7
CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJs
b2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTEZyb21VUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxk
QnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKICAgICB2b2lkIHByZXJlZ2lzdGVyU2FuZGJveEV4dGVu
c2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVCYWNrZWRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKLSAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRo
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBp
bnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7Ci0gICAgdm9pZCBibG9iU2l6ZShjb25zdCBXZWJD
b3JlOjpVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxv
YlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlv
bmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJp
bmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBp
bnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CisgICAgdm9pZCBibG9iU2l6ZShjb25zdCBVUkwm
LCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAg
dm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
RGF0YUtleSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBzZXRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpOwogCi0gICAgdm9pZCBjcmVh
dGVTb2NrZXRTdHJlYW0oV2ViQ29yZTo6VVJMJiYsIFBBTDo6U2Vzc2lvbklELCBTdHJpbmcgY2Fj
aGVQYXJ0aXRpb24sIHVpbnQ2NF90KTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldFN0cmVhbShVUkwm
JiwgUEFMOjpTZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QpOwogICAg
IHZvaWQgZGVzdHJveVNvY2tldFN0cmVhbSh1aW50NjRfdCk7CiAgICAgCiAgICAgdm9pZCBlbnN1
cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA3NzNkOWQ4ZTEwMzNiNjJlNDgxMzNiOTYyMGI2Mjli
Zjc4ODZmZWFkLi45ZWZlYTU3NTRiNGRjY2Y2MzNiMWU0MzA0ZGJhMzc0NGQ3ZGEzZGFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDI4ICszNCwy
OCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktp
dDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9h
ZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkK
IAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpV
UkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8s
IFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wg
ZGlkQWNjZXNzU2VjdXJlQ29va2llcykKLSAgICBTZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBTdHJp
bmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlk
QWNjZXNzU2VjdXJlQ29va2llcykKKyAgICBTZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAg
IENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxl
ZCkKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtIFdlYkNvcmU6
OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNv
b2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKQotICAgIEdldFJhd0Nvb2tp
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmws
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpCi0gICAgRGVsZXRl
Q29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5n
IGNvb2tpZU5hbWUpCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJp
bmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAgICBHZXRSYXdDb29raWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiBjb29raWVzKQorICAgIERlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogCi0gICAgUmVnaXN0ZXJGaWxlQmxv
YlVSTChXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVn
aXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4g
YmxvYlBhcnRzLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVS
TChXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFz
c0Nvbm5lY3Rpb25DaGVjaykKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0cmlu
ZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUs
IFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwgVmVjdG9y
PFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBS
ZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwsIGJvb2wgc2hvdWxkQnlw
YXNzQ29ubmVjdGlvbkNoZWNrKQogICAgIFByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNGb3JP
cHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4dGVuc2lvbkhhbmRsZXMpCi0gICAgUmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29y
ZTo6VVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUp
Ci0gICAgUmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6
VVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdpc3RlckJs
b2JVUkwoV2ViQ29yZTo6VVJMIHVybCkKLSAgICBCbG9iU2l6ZShXZWJDb3JlOjpVUkwgdXJsKSAt
PiAodWludDY0X3QgcmVzdWx0U2l6ZSkKKyAgICBSZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZChVUkwgdXJsLCBVUkwgc3JjVVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBhdGgsIFN0cmlu
ZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGb3JTbGljZShVUkwgdXJsLCBVUkwg
c3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKKyAgICBVbnJlZ2lzdGVyQmxvYlVS
TChVUkwgdXJsKQorICAgIEJsb2JTaXplKFVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1bHRTaXpl
KQogICAgIFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxz
LCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcikKIAogICAgIFN0b3JlRGVyaXZlZERhdGFUb0Nh
Y2hlKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhS2V5IGtleSwgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGRhdGEpCiAKICAgICBTZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAotICAgIENyZWF0ZVNvY2tldFN0cmVhbShXZWJDb3Jl
OjpVUkwgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICBDcmVhdGVTb2NrZXRTdHJlYW0oVVJMIHVybCwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90
IGlkZW50aWZpZXIpCiAKICAgICBFbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3Bw
CmluZGV4IGNmNGU2NGQ1MDNmMWE5ZWUwYmRjNWUwZDUyOGM0N2YyOTQyOWE2NDEuLjA1OWExMzAx
NDNiYTVmM2E3ZTBkMWViMWIxNDY2ZmE5MWZhMGI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgUmVzcG9uc2VDbwogICAgIGlmIChyZXNwb25zZS5pc0hUVFAwOSgpKSB7CiAg
ICAgICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwotICAgICAgICBpZiAocG9ydCAmJiAhaXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7CisgICAg
ICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVl
KCksIHVybC5wcm90b2NvbCgpKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9s
aWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoeyBTdHJpbmcoKSwgMCwgdXJsLCAiQ2FuY2Vs
bGVkIGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSAr
ICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIiB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDY1ZWFi
YjJiZjNiNTlkMmZkNDdhYTQxMjY1ZGZmNjk5NDhiMzgwZGIuLmQ3M2E2ZWE2ZmYxMmMzMDRiZmE3
NGJhYjk1YmU2YWVlZTY2Yjg5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNDgsOSArNDgsOSBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMTc5N2Q3ZTAyNWEwNGRkMjNjZTQ5N2M4
MTFhZjI4MWEyNTk3MTI1ZC4uODQ2Y2I0ZDNhZDNiYzk1YTBhZWUxYmJlZTA2MDZkMjMxNDVjMWY4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hl
Y2tlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
cjsKIAogY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5l
dHdvcmtMb2FkQ2hlY2tlcj4gewogcHVibGljOgotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihXZWJD
b3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBXZWJDb3JlOjpVUkwmJiwg
UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xp
Y3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcyA9IGZhbHNlKTsKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoV2ViQ29yZTo6RmV0Y2hP
cHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJl
ciwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSk7CiAg
ICAgfk5ldHdvcmtMb2FkQ2hlY2tlcigpOwogCiAgICAgdXNpbmcgUmVxdWVzdE9yRXJyb3IgPSBF
eHBlY3RlZDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+
OwpAQCAtNjksMTQgKzY5LDE0IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKIAogICAgIHZvaWQgc2V0Q1NQUmVz
cG9uc2VIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYmIGhlYWRlcnMpIHsgbV9jc3BSZXNwb25zZUhlYWRlcnMgPSBXVEZNb3ZlKGhlYWRlcnMpOyB9
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICB2b2lkIHNldENvbnRlbnRFeHRl
bnNpb25Db250cm9sbGVyKFdlYkNvcmU6OlVSTCYmIG1haW5Eb2N1bWVudFVSTCwgc3RkOjpvcHRp
b25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQorICAgIHZv
aWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3VtZW50VVJMLCBz
dGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXIp
CiAgICAgewogICAgICAgICBtX21haW5Eb2N1bWVudFVSTCA9IFdURk1vdmUobWFpbkRvY3VtZW50
VVJMKTsKICAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gaWRlbnRp
ZmllcjsKICAgICB9CiAjZW5kaWYKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5
OyB9CiAKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZEluZm9ybWF0aW9uIHRha2VOZXR3b3JrTG9h
ZEluZm9ybWF0aW9uKCkgeyByZXR1cm4gV1RGTW92ZShtX2xvYWRJbmZvcm1hdGlvbik7IH0KQEAg
LTk1LDcgKzk1LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogCiAgICAgdm9pZCBjb250aW51ZUNoZWNraW5n
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7
CiAKLSAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNrKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNv
bnN0OworICAgIGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2soY29uc3QgVVJMJikgY29uc3Q7CiAg
ICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxp
ZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lk
IGNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKQEAgLTExOCwxMSArMTE4LDExIEBAIGNsYXNzIE5ldHdv
cmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+
IHsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQ7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBt
X29yaWdpbmFsUmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBmb3IgQ09SUyBjaGVja3MuCiAgICAg
V2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX2ZpcnN0UmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBm
b3IgQ09SUyBjaGVja3MuCi0gICAgV2ViQ29yZTo6VVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsK
ICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwogICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBt
X2NzcFJlc3BvbnNlSGVhZGVyczsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IFdlYkNvcmU6OlVSTCBtX21haW5Eb2N1bWVudFVSTDsKKyAgICBVUkwgbV9tYWluRG9jdW1lbnRV
Ukw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiBt
X3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIApAQCAtMTMxLDcgKzEz
MSw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxO
ZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICBib29sIG1faXNTaW1wbGVSZXF1ZXN0IHsgdHJ1ZSB9
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1f
Y29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIHNpemVfdCBtX3JlZGlyZWN0Q291bnQgeyAwIH07
Ci0gICAgV2ViQ29yZTo6VVJMIG1fcHJldmlvdXNVUkw7CisgICAgVVJMIG1fcHJldmlvdXNVUkw7
CiAgICAgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5IG1fcHJlZmxpZ2h0UG9saWN5OwogICAgIFN0
cmluZyBtX2RudEhlYWRlclZhbHVlOwogICAgIFN0cmluZyBtX3JlZmVycmVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBlYjg4NjY0
ODEzOWNjN2I3NTllNzJjNjgxODI4MGI1ZDA0NzEwOWUwLi4wNmMxYjNhZDRlYWU0Y2Q3ZDQyZDI5
MDQ0NTUyOGE5OTRjY2E5MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNzYsMTMgKzc2LDEzIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
SGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
QWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBoYW5kbGVGb3JX
cml0aW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp3cml0ZUJs
b2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZUZvcldyaXRpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCkK
IHsKICAgICBhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3Zl
KGhhbmRsZUZvcldyaXRpbmcpKTsKICAgICBpZiAoIWV4dGVuc2lvbikgewpAQCAtMTAwOCw3ICsx
MDA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF8KICAgICAgICAgY2FsbGJhY2soU3RyaW5n
IHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0sIHF1b3RhKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKFNF
UlZFUl9QUkVDT05ORUNUKQogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGZi
Mzc3M2QxZWZlMWQzNDIxNmQ2YWVmY2U0ODUzZWM3ODk5ZGE1NGMuLmFhYWRiMTMzYzc5ZmZhMTFj
MGNmNjgyMzAyZTdiZDBhMGU2MWQzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTY1LDcgKzY1LDYgQEAgY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3MgU2VjdXJp
dHlPcmlnaW47Ci1jbGFzcyBVUkw7CiBlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
Owogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogc3RydWN0IFNlY3VyaXR5T3JpZ2lu
RGF0YTsKQEAgLTE3Miw3ICsxNzEsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBD
aGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQKICAgICB1c2luZyBD
YWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYsIHVpbnQ2NF90IHF1b3RhKT47CiAgICAgdm9pZCBjYWNoZVN0b3JhZ2VQYXJh
bWV0ZXJzKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2smJik7
CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oY29uc3QgVVJM
JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgYm9vbCBz
aG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nQ29va2llSW5m
b3JtYXRpb247IH0KQEAgLTI5Myw3ICsyOTIsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1
YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQKICAgICB2
b2lkIHN5bmNBbGxDb29raWVzKCk7CiAgICAgdm9pZCBkaWRTeW5jQWxsQ29va2llcygpOwogCi0g
ICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0
cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIHVpbnQ2NF90IHJlcXVlc3RJ
RCk7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7
CiAKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldElnbm9yZVRMU0Vycm9ycyhib29sKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCmluZGV4IGFjNzNiZWQ0MmUyZDQ1YTdjZThjMWZjNDRiM2M3NmYyYmIyYTllYmUu
Ljc4ZjljYjI5ODZkMzA0YzViMDJlZjgzNWI3MTk3MjBjNDMwZTIzYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtNzcsOSArNzcsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAgICAgRGlkR2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXModWludDY0X3Qg
cmVxdWVzdElELCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4dGVuc2lv
bnMpCiAjZW5kaWYKIAotICAgIFdyaXRlQmxvYlRvRmlsZVBhdGgoV2ViQ29yZTo6VVJMIGJsb2JV
UkwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgV3JpdGVCbG9iVG9GaWxlUGF0aChVUkwgYmxvYlVS
TCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIFByZWNvbm5lY3RUbyhXZWJDb3JlOjpVUkwgdXJs
LCBlbnVtIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KTsKKyAgICBQcmVjb25uZWN0VG8oVVJMIHVybCwgZW51bSBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Js
b2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRv
bWFpbnNUb0Jsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QsIHVpbnQ2NF90IGNvbnRleHRJZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkNjM3MzhhZWVjOGEzNTM1ZDA5NjEwMzY5ZTc4
NjQ5MWIxZTlkMmY5Li4yNzQzZTEyOWM4NzlmNmIwYzI1YzIxMWJhMDA4OTM5NzhhM2EwYmM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIDogcHVibGljIE5ldHdvcmtMb2FkUGFyYW1ldGVycyB7CiAg
ICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IGZyYW1lQW5jZXN0b3JP
cmlnaW5zOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBXZWJDb3JlOjpV
UkwgbWFpbkRvY3VtZW50VVJMOworICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CiAgICAgc3RkOjpv
cHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGQxYzY4ODllYTY0
OGNjYWNmMDhhYzE0YmU3YjZjNTJjYTNiMDNkMzYuLjQzYWVkNTQ2ZGVmNjBlOGFkY2NlZmMxMzlh
NzJmODZhZmY3NWRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk3Niw3ICs5NzYsNyBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAogICAgIGxv
Z0Nvb2tpZUluZm9ybWF0aW9uKCJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJldF9j
YXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxS
ZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUob3Jp
Z2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0
KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50aWZpZXIoKSk7CiB9
CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBXZWJDb3JlOjpVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUlu
Zm9ybWF0aW9uKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwg
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Np
b24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSk7CiAKQEAgLTEwMDMsNyAr
MTAwMyw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPCiAjdW5kZWYgTE9DQUxfTE9HX0lGX0FM
TE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25z
dCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQg
bG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2
b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVy
KQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhZmIwZTljNzk1NjYzZWFiMDVlYzRhZjRmMzgy
NTRiNzdmYWVjMWRhLi5mODc0ZjhkYmE2ZTljNWU1NjEwZjczNGQzNGNkNDc2MDFiMDRhODg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIg
ZmluYWwKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgIHN0YXRpYyBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9u
KCk7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CisgICAg
c3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTEzNCw3ICsx
MzQsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwKICAgICB2b2lkIGRpc3Bh
dGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYpOwogICAgIHZvaWQgY29u
dGludWVQcm9jZXNzaW5nQ2FjaGVkRW50cnlBZnRlckRpZFJlY2VpdmVSZXNwb25zZShzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogCi0gICAgYm9vbCBzaG91bGRJbnRlcnJ1
cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwm
KTsKKyAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZy
YW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKIAogICAgIGVudW0gY2xhc3MgRmlyc3RMb2FkIHsgTm8sIFllcyB9OwpAQCAtMTY5LDcg
KzE2OSw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogCiAgICAgLy8gQ29u
dGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcpIGZp
bmFsOwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydChXZWJDb3JlOjpVUkwmJiwgUmVm
PFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRDU1BWaW9sYXRpb25S
ZXBvcnQoVVJMJiYsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBl
bnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXZWJDb3JlOjpTZWN1cml0eVBvbGlj
eVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpIGZpbmFsOwogCiAgICAgdm9pZCBsb2dTbG93Q2FjaGVS
ZXRyaWV2ZUlmTmVlZGVkKGNvbnN0IE5ldHdvcmtDYWNoZTo6Q2FjaGU6OlJldHJpZXZlSW5mbyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0
cmVhbS5jcHAKaW5kZXggNDJkMzZiYzRjYzNmZTQzMmYzNTI0YzgzYjBjOWY4ODRlOGQ3NDQzYy4u
YzVhNjJjNjhmZTlkYTY1NmU0MjMzZmJkMTM2OWEyYzY2MWUyOWE0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBAIC0z
NSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1SZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRl
KFdlYkNvcmU6OlVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRh
KQorUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShV
UkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50
aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU29ja2V0U3RyZWFtKFdURk1vdmUodXJsKSwgc2Vz
c2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBpZGVudGlmaWVyLCBjb25uZWN0aW9uLCBXVEZN
b3ZlKGF1ZGl0RGF0YSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggOTA2ZTU4ZWJmNTc0MjVkNjgzNzcwODkxNjg1
ZmRhYmQyYTgzN2JjOC4uMzI2ODcxNmY0NDY5YzA5OTNmMjU5N2QwOWNiZTE1ODhlNmYyM2E1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmgKQEAgLTM5LDE0ICszOSwxMyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOwotY2xhc3MgVVJMOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbSA6IHB1
YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRTdHJlYW0+LCBwdWJsaWMgSVBDOjpNZXNzYWdl
U2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nv
Y2tldFN0cmVhbT4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwg
V2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIHN0YXRpYyBSZWY8
TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwg
V2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogICAgIH5OZXR3b3JrU29j
a2V0U3RyZWFtKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwpAQCAtNjcsNyArNjYsNyBAQCBjbGFzcyBOZXR3b3JrU29ja2V0
U3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1NvY2tldFN0cmVhbT4sIHB1YmxpYyBJ
UEM6OgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5h
bDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsOwogCi0g
ICAgTmV0d29ya1NvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVjdGlv
biYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAgICBOZXR3b3Jr
U29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50
aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNl
QXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwog
ICAgIElQQzo6Q29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oCmluZGV4IDlmMGM2Yjg2YjQyMGY0NTViZmZjMmRlNmI5NGViZTdjOGJl
MTQzYTAuLmQ0NTQzZjIzNWI5MDQ3YzU3MDljODFmZmRhMzg2MWM1OWY3ODQyNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTM2LDcgKzM2LDYgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIGNsYXNzIEhUVFBI
ZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTEsNyAr
NTAsNyBAQCBjbGFzcyBQaW5nTG9hZCBmaW5hbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQaW5n
TG9hZD4sIHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQwogcHJpdmF0ZToKICAgICB+UGluZ0xvYWQo
KTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgY3VycmVudFVSTCgpIGNvbnN0OworICAgIGNv
bnN0IFVSTCYgY3VycmVudFVSTCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3Q7CiAKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMmNhNjYyNWQxYzAwZTZk
MjdkNTI1ODg2MTcyMWZjYzUwYjUzNGI1NS4uOWQxNzAzNzg5NGY1YjUxMTAzOGRlMDZiYWQwOWRk
N2Y2MzRjN2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtOTAs
OCArOTAsOCBAQCBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6
U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6OgogICAgIHZvaWQgc3RhcnRGZXRjaChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hP
cHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJyZXIpOwog
ICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIG1hdGNoUmVn
aXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGNsaWVudFVSTCk7Ci0gICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJl
Z2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7Cisg
ICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdp
biwgY29uc3QgVVJMJiBjbGllbnRVUkwpOworICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyh1aW50
NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpOwogCiAg
ICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyPiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDA2MTk1YjhhZDE5
NDYxOGNkZmY2ZmZlOWQ1NzVlOWYzYTQ0NGE3ZWQuLjI5NGJkNTk5ZDQwYmNjMjExODRkOTdkN2Fk
NTBjYmM4YzMwMWEyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsOSArMzYsOSBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZl
ckNvbm5lY3Rpb24gewogCiAgICAgRGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBrZXkpCiAKLSAgICBNYXRjaFJlZ2lzdHJh
dGlvbih1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwg
c3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFdlYkNvcmU6OlVS
TCBjbGllbnRVUkwpCi0gICAgV2hlblJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNlcnZpY2VS
ZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKLSAgICBHZXRS
ZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2Vi
Q29yZTo6VVJMIGNsaWVudFVSTCkKKyAgICBNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBzZXJ2
aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGllbnRVUkwpCisgICAgV2hlblJlZ2lz
dHJhdGlvblJlYWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgVVJM
IGNsaWVudFVSTCkKKyAgICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3Ry
YXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKICAgICBSZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIHN0
cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBjb250cm9sbGlu
Z1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogICAgIFVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciBpZGVudGlmaWVyKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBkODZhYjYwOTM5Nzc2NWM1
YmJmYTc5MzU0YTExNWI3Yzc0OTFkMjdlLi42MTE2OTJkMTk0OTk3MmZlYjFlM2NlODViODhiODU4
NTU5ZmU2NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAgbWVzc2FnZXMg
LT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKICAgICBGaW5kQ2xpZW50QnlJZGVu
dGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpOwogICAgIE1hdGNoQWxs
KHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbSh1aW50NjRf
dCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6VVJMIHNjcmlw
dFVSTCwgU3RyaW5nIHNjcmlwdCwgV2ViQ29yZTo6VVJMIHJlc3BvbnNlVVJMLCBTdHJpbmcgbWlt
ZVR5cGUpOworICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVSTCByZXNw
b25zZVVSTCwgU3RyaW5nIG1pbWVUeXBlKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA1NWEwOGJjMDhjMDhkMWQ4YThhYzg2MjI4
ZGY2NTAxYTkxNTlhODdhLi5iMTliZmQxMDA1NzI2NzY0MjE2NzAwZjViMzg0YzZiZWVmMTQzMDNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBFbmdpbmU6OnJl
dHJpZXZlQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYgb3IKIH0KIAogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJiB1
cmwsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGZyb20oc2Vzc2lvbklELCBb
Y2FjaGVJZGVudGlmaWVyLCB1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAgICAgIGVuZ2luZS5yZXRyaWV2
ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHVybCksIFdURk1vdmUoY2FsbGJhY2sp
KTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZQogICAgIH0pOwog
fQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgV2ViQ29yZTo6VVJMJiYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
RW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiB1
cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNoZShjYWNoZUlk
ZW50aWZpZXIsIFt1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0
Lmhhc192YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA4YzJlOGNjZTE0ZDgxMjkwOTdmNzFh
YzIxZTI2ZTM2MWZkNmQ2ODMzLi43ZTE0MjI1YmVlNTBhOTc3YjVmYzkyNTE0NjU0NjdiYjM0ZDgz
NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgRW5naW5lIDogcHVi
bGljIFJlZkNvdW50ZWQ8RW5naW5lPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEVuZ2luZT4gewog
ICAgIHN0YXRpYyB2b2lkIHJlbW92ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2sm
Jik7CiAgICAgc3RhdGljIHZvaWQgcmV0cmlldmVDYWNoZXMoUEFMOjpTZXNzaW9uSUQsIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwogCi0gICAgc3RhdGljIHZvaWQgcmV0
cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYp
OworICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29y
ZHNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBwdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnND
YWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogCkBAIC0xMDQsNyArMTA0LDcgQEAg
Y2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPEVuZ2luZT4gewogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxl
dGlvbkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNlbnRhdGlvbigpOwogCi0gICAgdm9p
ZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwm
JiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKKyAgICB2b2lk
IHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgcHV0UmVjb3Jk
cyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnND
YWxsYmFjayYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1
ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnND
YWxsYmFjayYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCmluZGV4IDdmYjZlMDgxOGVjMjQx
NTk1ZjgyYzY3NzJjODRiNWUzMjBjZjc2MTUuLjg5ODAxOGU0ZWEzN2ZiMTJmYjYzMmIxOTJmZThh
ZWExYzcxNDY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
c3RydWN0IFJlY29yZEluZm9ybWF0aW9uIHsKIAogICAgIHVpbnQ2NF90IHNpemUgeyAwIH07CiAK
LSAgICBXZWJDb3JlOjpVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgYm9vbCBoYXNWYXJ5U3Rh
ciB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFyeUhlYWRlcnM7CiB9
OwpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBDYWNoZSB7CiAgICAgY29uc3QgU3RyaW5nJiB1bmlx
dWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVOYW1lOyB9CiAgICAgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OlVuaW5pdGlhbGl6ZWQ7IH0KIAot
ICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZXRyaWV2ZVJlY29y
ZHMoY29uc3QgVVJMJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYm
KTsKICAgICBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvIGluZm8oKSBjb25zdCB7
IHJldHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07IH0KIAogICAgIHZvaWQgcHV0KFZlY3Rv
cjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKQEAgLTk0LDggKzk0LDggQEAgY2xh
c3MgQ2FjaGUgewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERlY29kZWRSZWNvcmQ+IGRlY29k
ZVJlY29yZEhlYWRlcihjb25zdCBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29yZCYpOwogCiBw
cml2YXRlOgotICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4q
IHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIFZlY3RvcjxS
ZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFVSTCYpOworICAgIGNvbnN0
IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFVSTCYpIGNv
bnN0OwogICAgIFJlY29yZEluZm9ybWF0aW9uJiBhZGRSZWNvcmQoVmVjdG9yPFJlY29yZEluZm9y
bWF0aW9uPiosIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQmKTsKIAogICAg
IHZvaWQgc3RvcmVSZWNvcmRzKFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
PiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCmluZGV4IDI5YjM4YjFhMmUz
ZWJiNDExNzcyYTJhZWFhYmRjZWZiM2NkNGRlNzMuLmM2MmNiM2FiODU3NDhhNWIwYzg5ZTU3YjE1
Y2YxYzA1NmQ4NzEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hl
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcQogICAgIH0pOwogfQogCi12
b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3JkcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCkKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJM
JiYgdXJsKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlUmVjb3JkcyAo
JSIgUFJJdTY0ICIpIGluIGNhY2hlICUiIFBSSXU2NCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hl
SWRlbnRpZmllcik7CiAgICAgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoc2Vzc2lvbklELCBjYWNo
ZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVj
dGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRz
T3JFcnJvciYmIHJlc3VsdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAppbmRl
eCBiYzg4MGY1ZWI1ODlhZWRjZmVlNDVhMjM0MTgzOGIyNTNkYmE2MTA0Li42YTNkZGM2M2QyYTA4
ODVjYTRjNTE0MjVlNTZjM2E1Y2M5NjgzYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb24uaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdAogICAgIHZv
aWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZW1vdmVSZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlcyhQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlmaWVyLCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mJiwgdWludDY0X3QgdXBkYXRlQ291bnRlcik7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVj
b3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYpOworICAgIHZvaWQgcmV0cmlldmVSZWNv
cmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBVUkwmJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMo
UEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1
ZXJ5T3B0aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGUzMTA3ZTIwMTQ2ZDU5MDAz
YjIwNmIxZGVkZjZmODYzY2I4YzU1ZWUuLjYwZTM5YWEyYzQwNWRjYzk4YWFhOTIwMDk0YWUxMGQ4
ZWFiNTQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbiB7CiAgICAgQ2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luIG9yaWdpbik7CiAgICAgRW5naW5lUmVwcmVzZW50YXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcik7CiAKLSAgICBSZXRy
aWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwgdXJsKTsKKyAg
ICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwgdXJsKTsKICAgICBE
ZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zIG9w
dGlvbnMpOwogICAgIFB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3JkKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGYxNWFkNmJk
MGFkYzhjNzM1OGMxYTk0OTk4MGQ4NDA5ZTYyODMzYTQuLjAxN2FkNjNlMmM5ZWI3MzM0NWM1NzYx
ZDlhYTQ3YmRmZjY5ZTMzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCBhMTU1ZTlmMmUzYWUxMzgxNDQzYTRhMGNl
MGIyNDA3NTdlNGE2OWViLi5kMDY2YTg5NWI5NDA1ODFkZWE4Y2MxM2JhNDQyMzQ1NzllNTZkZTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMg
U3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9zdGljS2V5KFVzZURlY2lzaW9u
IGRlY2lzaW9uKQogCiB2b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hlZEVudHJ5
KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgVXNlRGVjaXNpb24gZGVjaXNpb24pCiB7Ci0gICAgV2ViQ29y
ZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTCByZXF1ZXN0VVJMID0g
cmVxdWVzdC51cmwoKTsKICAgICBpZiAoZGVjaXNpb24gPT0gVXNlRGVjaXNpb246OlVzZSkgewog
ICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdlSUQgJSIg
UFJJdTY0ICI6ICVzIGlzIGluIHRoZSBjYWNoZSBhbmQgaXMgdXNlZCIsIHdlYlBhZ2VJRCwgcmVx
dWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIE5ldHdvcmtQcm9jZXNz
OjpzaW5nbGV0b24oKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFnZUlELCBX
ZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5ldHdvcmtDYWNoZUtleSgpLCBXZWJDb3Jl
OjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJldHJpZXZhbEtleSgpLCBXZWJDb3JlOjpEaWFnbm9z
dGljTG9nZ2luZ1Jlc3VsdFBhc3MsIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6WWVzKTsKQEAgLTMx
NCw3ICszMTQsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hlZEVudHJ5
KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksCiAKIHZvaWQgU3RhdGlzdGljczo6
cmVjb3JkUmV2YWxpZGF0aW9uU3VjY2Vzcyh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEtleSYg
a2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgV2Vi
Q29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTCByZXF1ZXN0VVJM
ID0gcmVxdWVzdC51cmwoKTsKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNz
KSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIHdhcyBzdWNjZXNzZnVsbHkgcmV2YWxpZGF0ZWQi
LCB3ZWJQYWdlSUQsIHJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogCiAgICAg
TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29ya0NhY2hl
S2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6cmV2YWxpZGF0aW5nS2V5KCks
IFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0UGFzcywgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlOjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCmluZGV4IGVmMjUy
YTFjN2I5YzZiZDU2ODA5NzMwYzJkMDQ5MzM1MzFmMDRjOWIuLjQzOTIxYTAwMjRlOTdkZDM2ZjBk
MjIxODUxZWM0YWU5ODc2MWExNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
LmgKQEAgLTIzLDE1ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnlfaAotI2RlZmlu
ZSBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVO
QUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKIAogI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5l
dHdvcmtDYWNoZSB7CkBAIC01MCw3ICs0OSw3IEBAIGNsYXNzIFN1YnJlc291cmNlSW5mbyB7CiAg
ICAgV2FsbFRpbWUgZmlyc3RTZWVuKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFNlZW47IH0KIAog
ICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhbnNpZW50OyB9Ci0g
ICAgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0IHsgQVNT
RVJUKCFtX2lzVHJhbnNpZW50KTsgcmV0dXJuIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7IH0KKyAg
ICBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QgeyBBU1NFUlQoIW1faXNU
cmFuc2llbnQpOyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQogICAgIGNvbnN0IFdl
YkNvcmU6OkhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyBBU1NFUlQoIW1f
aXNUcmFuc2llbnQpOyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVyczsgfQogICAgIFdlYkNvcmU6OlJl
c291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KCkgY29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2ll
bnQpOyByZXR1cm4gbV9wcmlvcml0eTsgfQogCkBAIC02NSw3ICs2NCw3IEBAIGNsYXNzIFN1YnJl
c291cmNlSW5mbyB7CiAgICAgV2FsbFRpbWUgbV9maXJzdFNlZW47CiAgICAgYm9vbCBtX2lzVHJh
bnNpZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTYW1lU2l0ZSB7IGZhbHNlIH07Ci0gICAg
V2ViQ29yZTo6VVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CisgICAgVVJMIG1fZmlyc3RQYXJ0
eUZvckNvb2tpZXM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX3JlcXVlc3RIZWFkZXJz
OwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7CiB9OwpAQCAt
MTA3LDQgKzEwNiwzIEBAIGNsYXNzIFN1YnJlc291cmNlc0VudHJ5IHsKIH0gLy8gbmFtZXNwYWNl
IE5ldHdvcmtDYWNoZQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJ
VkVfUkVWQUxJREFUSU9OKQotI2VuZGlmIC8vIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3
b3JrQ2FwdHVyZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcAppbmRleCA5NjYxNjhiNGUwNzgxMjQ4ZTU1NjgxZmY0
Yjc3N2U2ZTE2MDMwOTQ1Li5iMWMwZmIxMTFiZDViZDYxMTQ4OTk4YjRiOTdhN2YwZjNlM2NhMTUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0
dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL0JyaWdhbmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODEsOCArODEsNyBA
QCBSZXF1ZXN0OjpSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKIAogUmVxdWVzdDo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QK
IHsKLSAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKHVybCk7Ci0gICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QocGFyc2VyLnJlc3VsdCgpLCByZWZlcnJlciwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k+KHBvbGljeSkpOworICAgIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFVSTCh7IH0sIHVybCksIHJlZmVycmVyLCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4ocG9saWN5KSk7
CiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKG1ldGhvZCk7CiAKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGhlYWRlciA6IGhlYWRlcnMpCkBAIC0xMTgsOCArMTE3LDcgQEAgUmVzcG9uc2U6OlJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiBSZXNwb25z
ZTo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0CiB7Ci0gICAgV2Vi
Q29yZTo6VVJMUGFyc2VyIHBhcnNlcih1cmwpOwotICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UocGFyc2VyLnJlc3VsdCgpLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRl
eHRFbmNvZGluZ05hbWUpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2Uo
VVJMKHsgfSwgdXJsKSwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1l
KTsKICAgICByZXNwb25zZS5zZXRIVFRQVmVyc2lvbih2ZXJzaW9uKTsKICAgICByZXNwb25zZS5z
ZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOwogICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0
KHJlYXNvbik7CkBAIC0xNTIsOCArMTUwLDcgQEAgRXJyb3I6OkVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiBFcnJvcjo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcigpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcihmYWlsaW5n
VVJMKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKGRvbWFpbiwgZXJyb3JDb2Rl
LCBwYXJzZXIucmVzdWx0KCksIGxvY2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlPih0eXBlKSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvcihkb21haW4sIGVycm9yQ29kZSwgVVJMKHsgfSwgZmFpbGluZ1VSTCksIGxvY2Fs
aXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBl
Pih0eXBlKSk7CiAKICAgICByZXR1cm4gZXJyb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIu
Y3BwCmluZGV4IDI3Njg5ZWUzYjcyMzk4ZDg1MTIwZjczNjM1N2MwMDcyNDIyODllOGUuLmQ1NjVh
NGVhMzc3MWU0NjM3OTczZjcxOWNhMTk4YTI4YzU1N2UwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1h
bmFnZXIuY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZUxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDxsaW1pdHM+
CiAjaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBSZXNv
dXJjZSogTWFuYWdlcjo6ZmluZEJlc3RGdXp6eU1hdGNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIAogICAgIFJlc291cmNlKiBiZXN0TWF0Y2ggPSBudWxscHRyOwog
ICAgIGludCBiZXN0U2NvcmUgPSBrTWluTWF0Y2g7Ci0gICAgY29uc3QgYXV0byYgcmVxdWVzdFBh
cmFtZXRlcnMgPSBXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJsLnF1
ZXJ5KCkpOworICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RQYXJhbWV0ZXJzID0gV1RGOjpVUkxQYXJz
ZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkpOwogICAgIGZvciAoYXV0byBpUmVz
b3VyY2UgPSBsb3dlcjsgaVJlc291cmNlICE9IHVwcGVyOyArK2lSZXNvdXJjZSkgewogICAgICAg
ICBpbnQgdGhpc1Njb3JlID0gZnV6enlNYXRjaFVSTHModXJsLCByZXF1ZXN0UGFyYW1ldGVycywg
aVJlc291cmNlLT51cmwoKSwgaVJlc291cmNlLT5xdWVyeVBhcmFtZXRlcnMoKSk7CiAgICAgICAg
IC8vIFRPRE86IENvbnNpZGVyIGlnbm9yaW5nIGFueSBtYXRjaGVzIDwgMCBhcyBiZWluZyB0b28g
ZGlmZmVyZW50LgpAQCAtMTY1LDcgKzE2NSw3IEBAIFJlc291cmNlKiBNYW5hZ2VyOjpmaW5kQmVz
dEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogLy8g
VE9ETzogQ29udmVydCB0byBhbiBpbnRlcmZhY2UgYmFzZWQgb24gUmVzb3VyY2VSZXF1ZXN0IHNv
IHRoYXQgd2UgY2FuIGRvCiAvLyBkZWVwZXIgbWF0Y2hpbmcuCiAKLWludCBNYW5hZ2VyOjpmdXp6
eU1hdGNoVVJMcyhjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6
OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVuY29k
ZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpCitpbnQgTWFuYWdlcjo6ZnV6enlNYXRjaFVSTHMo
Y29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZv
cm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXVEY6
OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNlUGFyYW1ldGVycykKIHsKICAgICAv
LyBUT0RPOiBjb25zaWRlciByZXF1aXJpbmcgdGhhdCBhbnkgdHJhaWxpbmcgc3VmZml4ZXMgKGUu
Zy4sICIuanMiLAogICAgIC8vICIucG5nIiwgIi5jc3MiLCAiLmh0bWwiLCBldGMuKSBzaG91bGQg
YmUgYW4gZXhhY3QgbWF0Y2guCkBAIC00MTksNyArNDE5LDcgQEAgU3RyaW5nIE1hbmFnZXI6Omhh
c2hUb1BhdGgoY29uc3QgU3RyaW5nJiBoYXNoKQogICAgIHJldHVybiBwYXRoOwogfQogCi1TdHJp
bmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpCitTdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHVybC5wcm90b2NvbEhvc3RBbmRQb3J0KCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0Nh
cHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0
d29ya0NhcHR1cmVNYW5hZ2VyLmgKaW5kZXggM2M2YjUwMTBkYTIzNDFlNjgyY2IxY2EyNDAxYTA2
NjBmMzljNzQxYS4uYzM2ODE2YzlhODlhMWM3ZWZhZDEwNGYxYjAzOTA4ODM2ZGNhN2YzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0
dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNp
bmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04Miw3ICs4Miw3IEBAIGNsYXNzIE1hbmFn
ZXIgewogICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgb3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcm
LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUpOwogCiAgICAgU3RyaW5nIHJlcXVl
c3RUb1BhdGgoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgc3RhdGljIFN0
cmluZyB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAg
ICBzdGF0aWMgU3RyaW5nIHVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0IFVSTCYpOwog
CiBwcml2YXRlOgogICAgIE1hbmFnZXIoKSA9IGRlZmF1bHQ7CkBAIC05MCw3ICs5MCw3IEBAIGNs
YXNzIE1hbmFnZXIgewogCiAgICAgUmVzb3VyY2UqIGZpbmRFeGFjdE1hdGNoKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIFJlc291cmNlKiBmaW5kQmVzdEZ1enp5TWF0Y2go
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgaW50IGZ1enp5TWF0Y2hVUkxz
KGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMUGFyc2Vy
OjpVUkxFbmNvZGVkRm9ybSYgcmVxdWVzdFBhcmFtZXRlcnMsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
cmVzb3VyY2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJl
c291cmNlUGFyYW1ldGVycyk7CisgICAgaW50IGZ1enp5TWF0Y2hVUkxzKGNvbnN0IFVSTCYgcmVx
dWVzdFVSTCwgY29uc3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXF1ZXN0UGFy
YW1ldGVycywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCwgY29uc3QgV1RGOjpVUkxQYXJzZXI6OlVS
TEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpOwogCiAgICAgdm9pZCBsb2FkUmVzb3Vy
Y2VzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcAppbmRleCA3MDRjMGQ2YWQ0ZjY2
YTBjM2NhYjNiYWYzZTk5NTYxZDg4ODRmMDQ1Li5mM2RjMjNjNTcwNjk0ZWYzYmJmMjViYmJhMzIz
NTFjZDgwZjc0MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
cHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIFJlc291cmNlOjpSZXNvdXJjZShjb25zdCBTdHJpbmcmIGV2ZW50RmlsZVBhdGgpCiB7
CiB9CiAKLWNvbnN0IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6OnVybCgpCitjb25zdCBVUkwmIFJl
c291cmNlOjp1cmwoKQogewogICAgIGlmICghbV91cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIGF1
dG8gZXZlbnRzID0gZXZlbnRTdHJlYW0oKTsKQEAgLTUyLDggKzUyLDcgQEAgY29uc3QgV2ViQ29y
ZTo6VVJMJiBSZXNvdXJjZTo6dXJsKCkKICAgICAgICAgICAgIERFQlVHX0xPR19FUlJPUigiRXZl
bnQgc3RyZWFtIGRvZXMgbm90IGhhdmUgYSByZXF1ZXN0U2VudCBldmVudDogZmlsZSA9ICIgU1RS
SU5HX1NQRUNJRklFUiwgREVCVUdfU1RSKG1fZXZlbnRGaWxlUGF0aCkpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIGF1dG8gcmVxdWVzdFNlbnRFdmVudCA9IFdURjo6Z2V0PFJlcXVlc3RT
ZW50RXZlbnQ+KCpldmVudCk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2Vy
KHJlcXVlc3RTZW50RXZlbnQucmVxdWVzdC51cmwpOwotICAgICAgICAgICAgbV91cmwgPSBwYXJz
ZXIucmVzdWx0KCk7CisgICAgICAgICAgICBtX3VybCA9IFVSTCh7IH0sIHJlcXVlc3RTZW50RXZl
bnQucmVxdWVzdC51cmwpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02OCwxMCArNjcsMTAgQEAg
Y29uc3QgU3RyaW5nJiBSZXNvdXJjZTo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oKQogICAg
IHJldHVybiBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluOwogfQogCi1XZWJDb3JlOjpVUkxQ
YXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpxdWVyeVBhcmFtZXRlcnMoKQorV1RGOjpV
UkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpxdWVyeVBhcmFtZXRlcnMoKQogewog
ICAgIGlmICghbV9xdWVyeVBhcmFtZXRlcnMpCi0gICAgICAgIG1fcXVlcnlQYXJhbWV0ZXJzID0g
V2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHVybCgpLnF1ZXJ5KCkpOwor
ICAgICAgICBtX3F1ZXJ5UGFyYW1ldGVycyA9IFdURjo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29k
ZWRGb3JtKHVybCgpLnF1ZXJ5KCkpOwogCiAgICAgcmV0dXJuICptX3F1ZXJ5UGFyYW1ldGVyczsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3
b3JrQ2FwdHVyZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1
cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCmluZGV4IDc1NzZjMGQ1ZTAwODQ4OTE2MmMxOGM5
NjYwNGZlM2EzODdmMzllNWUuLmQ0OTNmNGE0YTM1YWQ4ZWE2Y2RiMmRkOGUwMjVkNjkwYzU4OTI1
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3
b3JrQ2FwdHVyZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaApAQCAtMjksOSArMjksOSBAQAogCiAjaW5j
bHVkZSAiTmV0d29ya0NhcHR1cmVFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJz
ZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFj
ZSBOZXR3b3JrQ2FwdHVyZSB7CkBAIC01NSwxNiArNTUsMTYgQEAgY2xhc3MgUmVzb3VyY2Ugewog
cHVibGljOgogICAgIFJlc291cmNlKGNvbnN0IFN0cmluZyYgZXZlbnRGaWxlUGF0aCk7CiAKLSAg
ICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsKCk7CiAgICAg
Y29uc3QgU3RyaW5nJiB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbigpOwotICAgIFdlYkNvcmU6
OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0gcXVlcnlQYXJhbWV0ZXJzKCk7CisgICAgV1RGOjpV
UkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIHF1ZXJ5UGFyYW1ldGVycygpOwogICAgIEV2ZW50U3Ry
ZWFtIGV2ZW50U3RyZWFtKCk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZXZlbnRGaWxlUGF0
aDsKLSAgICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBt
X3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybT4gbV9xdWVyeVBhcmFtZXRlcnM7CisgICAgc3RkOjpv
cHRpb25hbDxXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0+IG1fcXVlcnlQYXJhbWV0ZXJz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhcHR1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
CmluZGV4IGU1YWY0ZjgzZjFiNTAxYjhiM2Q4YTFiYzU3YzlkNzM5MDVmYzk5MTcuLjgwYjE0MDM0
NzdhNTM5YjZhMGQxY2JiOWE0ZWFiOGJlNWZlM2RkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpA
QCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgfQogICAgIAog
ICAgIC8vIFNob3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBmcm9tIGEgc2Vj
dXJlIHJlc291cmNlIHRvIG5vbi1zZWN1cmUgb25lLgotICAgIGlmIChtX3Nob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygi
aHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJo
dHRwcyIpKQorICAgIGlmIChtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXVEY6OnByb3RvY29s
SXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikpCiAgICAgICAgIHJlcXVlc3QuY2xl
YXJIVFRQUmVmZXJyZXIoKTsKICAgICAKICAgICBjb25zdCBhdXRvJiB1cmwgPSByZXF1ZXN0LnVy
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDdmMThjMDU2ZjFhMDVkMmY5MDEwZTRhYjg3NTFl
MTM0N2M4MmE2ZWIuLjI3MDU5MjVkODczMDhiOGEyYTY0NzAyOWRmZDc4Yzc2OTVmMWRkYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KQEAgLTQ2LDEyICs0NiwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVVUkxSZXNwb25zZS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTM0
OCw3ICszNDgsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24g
dGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlkUmVjZQogICAgICAgICAgICAgaWYgKGNy
ZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VG
b3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlz
UGFzc3dvcmRCYXNlZCgpKSB7CiAKICAgICAgICAgICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFs
IG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBh
c3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwotICAgICAgICAg
ICAgICAgIFdlYkNvcmU6OlVSTCB1cmxUb1N0b3JlOworICAgICAgICAgICAgICAgIFVSTCB1cmxU
b1N0b3JlOwogICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5mYWls
dXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAgICAgICAgICAgICAgICAg
ICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgp
LnVybCgpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
CmluZGV4IDQwMmVjMWRlMDE5NjJmMGNjZjQyMDQyOTU3MjM3OTFmN2M2NTcyYTAuLmY1Y2MxYzFl
MGFjNmRhODQyOTJjNDhiNDcxYjA4Yzg3YmYyOThlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTIxNSwxMSArMjE1
LDExIEBAIHN0YXRpYyB2b2lkIGNhcmJvbldpbmRvd0hpZGRlbihXaW5kb3dSZWYgd2luZG93KQog
c3RhdGljIGJvb2wgb3BlbkNGVVJMUmVmKENGVVJMUmVmIHVybCwgaW50MzJfdCYgc3RhdHVzLCBD
RlVSTFJlZiogbGF1bmNoZWRVUkwpCiB7CiAgICAgU3RyaW5nIGxhdW5jaGVkVVJMU3RyaW5nOwot
ICAgIGlmICghUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkub3BlblVSTChXZWJDb3JlOjpVUkwo
dXJsKS5zdHJpbmcoKSwgc3RhdHVzLCBsYXVuY2hlZFVSTFN0cmluZykpCisgICAgaWYgKCFQbHVn
aW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5vcGVuVVJMKFVSTCh1cmwpLnN0cmluZygpLCBzdGF0dXMs
IGxhdW5jaGVkVVJMU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFs
YXVuY2hlZFVSTFN0cmluZy5pc051bGwoKSAmJiBsYXVuY2hlZFVSTCkKLSAgICAgICAgKmxhdW5j
aGVkVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBsYXVuY2hlZFVSTFN0cmluZyku
Y3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7CisgICAgICAgICpsYXVuY2hlZFVSTCA9IFVSTChVUkwo
KSwgbGF1bmNoZWRVUkxTdHJpbmcpLmNyZWF0ZUNGVVJMKCkubGVha1JlZigpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0zOTksNyArMzk5LDcgQEAgc3RhdGljIE5TUnVubmluZ0FwcGxpY2F0
aW9uICpyZXBsYWNlZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0aW9uc18K
ICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5s
YXVuY2hBcHBsaWNhdGlvbkF0VVJMKFdlYkNvcmU6OlVSTCh1cmwpLnN0cmluZygpLCBhcmd1bWVu
dHMpKSB7CisgICAgaWYgKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmxhdW5jaEFwcGxpY2F0
aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5nKCksIGFyZ3VtZW50cykpIHsKICAgICAgICAgaWYgKGVy
cm9yKQogICAgICAgICAgICAgKmVycm9yID0gbmlsOwogICAgICAgICByZXR1cm4gbmlsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IDdiMDFkMGU5MjA1NjI4Y2QzYzAwMmVmNTdlZjEx
ZTgxNGRjY2NiOTEuLmJiZDQyM2JjZjU3MTVlNGFkNzBiZjUyZGVmOGMyYzMwYzQxYmYwZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTIzLDMyICsyMywzMSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJMX2gKLSNkZWZp
bmUgV2ViVVJMX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFVSTCA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAgIHN0YXRp
YyBSZWY8QVBJOjpVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKHN0cmluZykpOwogICAgIH0KIAotICAg
IHN0YXRpYyBSZWY8VVJMPiBjcmVhdGUoY29uc3QgVVJMKiBiYXNlVVJMLCBjb25zdCBXVEY6OlN0
cmluZyYgcmVsYXRpdmVVUkwpCisgICAgc3RhdGljIFJlZjxBUEk6OlVSTD4gY3JlYXRlKGNvbnN0
IEFQSTo6VVJMKiBiYXNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgcmVsYXRpdmVVUkwpCiAgICAg
ewogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwtPnBhcnNlVVJMSWZO
ZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsK
KyAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KCpi
YXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwpOwogICAgICAgICBjb25zdCBX
VEY6OlN0cmluZyYgYWJzb2x1dGVVUkxTdHJpbmcgPSBhYnNvbHV0ZVVSTC0+c3RyaW5nKCk7CiAK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKFdURk1vdmUoYWJzb2x1dGVVUkwpLCBh
YnNvbHV0ZVVSTFN0cmluZykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBUEk6OlVS
TChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJzb2x1dGVVUkxTdHJpbmcpKTsKICAgICB9CiAKICAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CkBAIC01
Niw3ICs1NSw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6
VVJMPiB7CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmc7IH0KIAotICAgIHN0YXRpYyBib29sIGVxdWFscyhjb25zdCBVUkwmIGEsIGNvbnN0
IFVSTCYgYikKKyAgICBzdGF0aWMgYm9vbCBlcXVhbHMoY29uc3QgQVBJOjpVUkwmIGEsIGNvbnN0
IEFQSTo6VVJMJiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGEudXJsKCkgPT0gYi51cmwoKTsK
ICAgICB9CkBAIC0xMDYsMTMgKzEwNSwxMyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1w
bDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICB9CiAKLSAgICBVUkwoc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5n
KQorICAgIFVSTChzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpVUkw+IHBhcnNlZFVSTCwgY29uc3QgV1RG
OjpTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCiAgICAgICAgICwg
bV9wYXJzZWRVUkwoV1RGTW92ZShwYXJzZWRVUkwpKQogICAgIHsKICAgICB9CiAKLSAgICBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0CisgICAgY29uc3QgV1RGOjpVUkwmIHVybCgpIGNv
bnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5KCk7CiAgICAgICAgIHJldHVy
biAqbV9wYXJzZWRVUkw7CkBAIC0xMjIsMTMgKzEyMSwxMSBAQCBjbGFzcyBVUkwgOiBwdWJsaWMg
T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgaWYgKG1fcGFy
c2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPihXZWJDb3JlOjpVUkwoKSwgbV9zdHJpbmcpOworICAg
ICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCks
IG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBtX3N0cmluZzsKLSAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpVUkw+IG1fcGFyc2VkVVJMOworICAgIG11dGFi
bGUgc3RkOjp1bmlxdWVfcHRyPFdURjo6VVJMPiBtX3BhcnNlZFVSTDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVJMX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRleCA5YjVjN2Y2NmI0OGI4
YTk2YmRkMmRjYmU4OWNhOTBhMTIzZDMwNmFhLi42Njk5NWEwYTg4NTI2YmFjNTNhYjdkMWNjNTk2
MTVhMzIwMjE5ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVz
ZXJDb250ZW50VVJMUGF0dGVybi5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VyQ29udGVudFVSTFBhdHRlcm4uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFj
ZSBBUEkgewogCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybiA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250CiAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uaG9zdCgp
OyB9CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHNjaGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0
dGVybi5zY2hlbWUoKTsgfQogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0
dGVybi5pc1ZhbGlkKCk7IH07Ci0gICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0IFdURjo6U3RyaW5n
JiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdlYkNvcmU6OlVSTCh7IH0s
IHVybCkpOyB9CisgICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpIGNv
bnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdURjo6VVJMKHsgfSwgdXJsKSk7IH0KICAg
ICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1hdGNo
U3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgcGF0dGVyblN0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggNzM2ZTFmM2U2NjQ1Y2UwZWMyMTJmNmRiOWY4
Nzg0M2Q1Y2QxM2RhNS4uMTQ5OTU2M2UzOWFlN2I5ODZkZTE3MzQ3Njc4ODVmNmFhZDkyOGQzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCkBAIC0yOSw3
ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgogI2luY2x1ZGUgIldLRGF0YS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VS
TFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2Uu
Y3BwCmluZGV4IGI4YThhOTBiY2QzYzM0NWNkNDc1NjUyNzczMTQzMmNmY2EwMTdjODcuLjhmMWZh
OWFkNmUzNmU5OGFjNDEzZWJhOWVmOTU1M2NhZDQwNjM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNs
dWRlICJBUElVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VS
TENGLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQppbmRleCBk
ZjE5ODNhNjAxNTBkZDdlYWRiYWU4M2QzODgyOGFiYWE3ODBlMGFlLi5iZDkxYTQ1YjA5YzMxNGVm
ZjM2MzA1MWNjYjg4MTViZGNiYjZkYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9jZi9XS1VSTENGLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2Nm
L1dLVVJMQ0YubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2ltcG9ydCAiV0tBUElDYXN0LmgiCiAj
aW1wb3J0ICJXS05TVVJMLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0NGVVJMRXh0cmFzLmg+CiAjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9jZi9DRlVSTEV4dHJhcy5oPgogI2lt
cG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKQEAgLTU2LDcg
KzU2LDcgQEAgV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoQ0ZVUkxSZWYgY2ZVUkwpCiAj
ZW5kaWYKIAogICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgV2ViQ29yZTo6Z2V0VVJMQnl0ZXMo
Y2ZVUkwsIHVybEJ5dGVzKTsKKyAgICBXVEY6OmdldFVSTEJ5dGVzKGNmVVJMLCB1cmxCeXRlcyk7
CiAKICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSSh1cmxCeXRlcy5kYXRhKCkpOwog
fQpAQCAtNjksNSArNjksNSBAQCBDRlVSTFJlZiBXS1VSTENvcHlDRlVSTChDRkFsbG9jYXRvclJl
ZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVSTFJlZikKICAgICAvLyBVVEYtOCB3aGljaCB1c2Vz
IGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0IFdlYktpdCBjbGllbnRzIG1pZ2h0IGV4cGVjdC4KIAog
ICAgIENTdHJpbmcgYnVmZmVyID0gV2ViS2l0Ojp0b0ltcGwoVVJMUmVmKS0+c3RyaW5nKCkudXRm
OCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLmxlbmd0aCgpLCAwKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdURjo6Y3Jl
YXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5sZW5ndGgoKSwgMCkubGVh
a1JlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2Vi
S2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXF1ZXN0LmNwcAppbmRleCA5ZmU1OTU3MjA0Y2M3OTkzZWJjMDg4ODhiZDFmODkzMWVhNGVi
MDAxLi4zMWY2MWNlN2VhZjhiOWE5OWNiYWFkN2RkMDUzNzVkYTgxYTI1YmM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAt
MjEsOCArMjEsOCBAQAogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3QuaCIKIAogI2luY2x1ZGUg
IldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRy
U291cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIv
R1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwCmluZGV4IGQyNDU1ODkzNmNmNDYwNzU1NTcx
MmExNmM5NGZkNDYxZWMwOThhMjMuLjI4N2VlZmQ0ZDljY2Y0MDAzNjczZGU5N2I4OGQzYzJkNjNj
MjM0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVS
SVJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXNwb25zZS5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJXZWJLaXRVUklSZXNw
b25zZS5oIgogCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGRjMGY5MGYwZjM4
NTFhYmYxMDA0ODRiYTU3M2FlNGFmOGU4MGIyMzIuLmJjMmZlNDllMzBhYTM4MmI0MjNiNTRkYjJi
YWQ3MmJiN2Y5N2VlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZl
UmVzb3VyY2UubW0KQEAgLTMwLDggKzMwLDggQEAKIAogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ2LDggKzQ2LDgg
QEAgUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBhcmMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJB
cmNoaXZlUmVzb3VyY2UoV1RGTW92ZShhcmNoaXZlUmVzb3VyY2UpKSk7CiB9CiAKLVdlYkFyY2hp
dmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6RGF0YSogZGF0YSwgY29uc3QgU3Ry
aW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nKQotICAgIDogbV9hcmNoaXZlUmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKSwgV2ViQ29yZTo6
VVJMKFdlYkNvcmU6OlVSTCgpLCBVUkwpLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nLCBTdHJpbmco
KSkpCitXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShBUEk6OkRhdGEqIGRh
dGEsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZykKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVSZXNvdXJj
ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNpemUo
KSksIFdURjo6VVJMKFdURjo6VVJMKCksIHVybCksIE1JTUVUeXBlLCB0ZXh0RW5jb2RpbmcsIFN0
cmluZygpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0
ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uLmgKaW5kZXggNDMzNjM4Yjk0OGRmMDk3OGFiM2MxYmQxYmExYTNiNzQxZGRmYTZh
Zi4uZDg2ZGM0YWI3NTBiZjgxY2Y5ZTM2NDNhZTY2OTRmY2IzMjQ3ZjI1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCkBAIC0zMSw3ICszMSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5wdXRN
b2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9V
UkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBBc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbiB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIGJvb2wgYWNjZXB0
c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIHsgZmFsc2UgfTsKICAgICBib29sIGlzQXV0b2Zp
bGxhYmxlVXNlcm5hbWVGaWVsZCB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6VVJMIHJlcHJlc2Vu
dGluZ1BhZ2VVUkw7CisgICAgVVJMIHJlcHJlc2VudGluZ1BhZ2VVUkw7CiAgICAgV2ViQ29yZTo6
QXV0b2ZpbGxGaWVsZE5hbWUgYXV0b2ZpbGxGaWVsZE5hbWUgeyBXZWJDb3JlOjpBdXRvZmlsbEZp
ZWxkTmFtZTo6Tm9uZSB9OwogICAgIFN0cmluZyBwbGFjZWhvbGRlcjsKICAgICBTdHJpbmcgbGFi
ZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFz
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbQppbmRleCAw
MTg4Zjc0Nzk4MmE5NDBhNDhhYjg2ZjgyODhhYWIwMDZkZmQxMWQ3Li41MTliOWQ4M2VkNzY2MWRj
NmQ4N2Q2MjllN2M4Yzg1NWIwZWYyYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dLTlNVUkxFeHRyYXMubW0KQEAgLTI2LDEzICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvQ0ZVUkxFeHRy
YXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1w
b3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQogQGltcGxlbWVudGF0aW9uIE5TVVJMIChXS0V4dHJhcykKIAogKyAoaW5zdGFuY2V0eXBl
KV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcKQEAgLTUwLDcgKzQ4
LDcgQEAgKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5n
JilzdHJpbmcgcmVsYXRpdmVUb1VSTDooTlNVUkwKIC0gKFN0cmluZylfd2ViX29yaWdpbmFsRGF0
YUFzV1RGU3RyaW5nCiB7CiAgICAgQ1N0cmluZyBvcmlnaW5hbERhdGE7Ci0gICAgZ2V0VVJMQnl0
ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXNlbGYsIG9yaWdpbmFsRGF0YSk7CisgICAgV1RGOjpnZXRV
UkxCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpc2VsZiwgb3JpZ2luYWxEYXRhKTsKICAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOChvcmlnaW5hbERhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
c3Npb25TdGF0ZS5oCmluZGV4IDlkY2Y2ZjJlMWQ3MTUzM2FkNjQ1ZGY2M2RiZjI0MjI2NTc4NGI4
YWYuLjUzY2UyZDFhZjA2ZDI1MWM4MDU1YmQyYWQ1MjdmYWE0Njc2ZWU5YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGUgewogc3Ry
dWN0IFNlc3Npb25TdGF0ZSB7CiAgICAgQmFja0ZvcndhcmRMaXN0U3RhdGUgYmFja0ZvcndhcmRM
aXN0U3RhdGU7CiAgICAgdWludDY0X3QgcmVuZGVyVHJlZVNpemU7Ci0gICAgV2ViQ29yZTo6VVJM
IHByb3Zpc2lvbmFsVVJMOworICAgIFVSTCBwcm92aXNpb25hbFVSTDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmNwcAppbmRleCBkZjk3MzUwZTAzMGM5ODIzNWJhM2JhZTRhZDVjYjA1NjVjOTRlNjc1
Li5hOTE5NjkyZjY5YzIzYjcxMzM1NjY1OWFkMzA0NWQwM2YwZmU5OWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMjcsOCArMjcs
OCBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKIAogI2luY2x1ZGUgIlN1
c3BlbmRlZFBhZ2VQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtMTA0LDggKzEwNCw4IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9jdW1lbnQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYKICAgICBpZiAobWFpbkZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhIHx8IG90aGVyTWFpbkZy
YW1lU3RhdGUuc3RhdGVPYmplY3REYXRhKQogICAgICAgICByZXR1cm4gbWFpbkZyYW1lU3RhdGUu
ZG9jdW1lbnRTZXF1ZW5jZU51bWJlciA9PSBvdGhlck1haW5GcmFtZVN0YXRlLmRvY3VtZW50U2Vx
dWVuY2VOdW1iZXI7CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsID0gV2ViQ29yZTo6VVJMKHsgfSwg
bWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKLSAgICBXZWJDb3JlOjpVUkwgb3RoZXJVUkwgPSBX
ZWJDb3JlOjpVUkwoeyB9LCBvdGhlck1haW5GcmFtZVN0YXRlLnVybFN0cmluZyk7CisgICAgVVJM
IHVybCA9IFVSTCh7IH0sIG1haW5GcmFtZVN0YXRlLnVybFN0cmluZyk7CisgICAgVVJMIG90aGVy
VVJMID0gVVJMKHsgfSwgb3RoZXJNYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcpOwogCiAgICAgaWYg
KCh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgfHwgb3RoZXJVUkwuaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBvdGhlclVS
TCkpCiAgICAgICAgIHJldHVybiBtYWluRnJhbWVTdGF0ZS5kb2N1bWVudFNlcXVlbmNlTnVtYmVy
ID09IG90aGVyTWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGU1MDdiZjg3
NTliMTE3ODkwODZlNTBkN2YwNmM1N2RkODM4MGE0ZjYuLjM5NWVhNzU4ZDAzYzFhMDcxNjBhNmIz
NWZmZWRhZTI4MmY5YjgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtNzcsMTEgKzc3LDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9U
ZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0
dXJlcy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAppbmRleCAzZWViNDQyZTMyN2RjNzkxMmI0M2M0OTYzNmE2NTc0Y2Y5YmM0NmNlLi45NTQ1MGY0
MTFjN2ZiYTAzYzFlZDc2MTA1OWZkYmEzM2JhMDJlNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtOTMsNyArOTMsNiBAQCBjbGFzcyBTdGlj
a3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0
RGF0YTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7
Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0aW9uczsKIHN0cnVjdCBDb21wb3Np
dGlvblVuZGVybGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9y
cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKaW5kZXggMjdkMTRlMzFiMzEw
ODY2YzZmMTM2ZTNhZDhhYWZmODhlMjNiMzg0Mi4uN2Q2MDBjNmQyM2I1NWRjYzM5NjMwOTkwNDA3
Y2U3NDQ0NDZjYjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3Jz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKQEAgLTI4LDcgKzI4LDYg
QEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBVUkw7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTQ4LDE4ICs0NywxOCBAQCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlcwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRl
cm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBp
bnRlcm5hbEVycm9yKGNvbnN0IFVSTCYpOwogCiAjaWYgVVNFKFNPVVApCi1XZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFdURjo6U3RyaW5nJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vy
cm9yKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0aW9uRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdURjo6U3RyaW5nJik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgcHJp
bnRFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYpOwotV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwm
KTsKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3Qg
V2ViQ29yZTo6VVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3Qg
VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgcHJpbnRl
ck5vdEZvdW5kRXJyb3IoY29uc3QgVVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludmFs
aWRQYWdlUmFuZ2VUb1ByaW50KGNvbnN0IFVSTCYpOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3Bw
CmluZGV4IDE3OWNhNGJlMzdiZWQwZTNkY2NiNWQzMjYzZjNmMDY5YjA1MjU1NWIuLmMxY2ZjY2Yw
NWY4NDIwYWMzYjljMjRkYzU3Zjk4NWY3MjI2MzdjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL05vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1
bWVudENvZGVyc0NGLmNwcAppbmRleCBlM2YzMDU2NjY4NjMwYTRiNWFmZWI5ODRjOWRlNGRlZGU1
MDE1YzBiLi4yZWQ3NzQ0YjA4ZGY4ZmJlOWFjNzJmZDQ3NDc2NGUxY2U2ZDcyNzhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcApAQCAtMzEsOSArMzEs
OSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAj
aW5jbHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ0ZVUkxFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvc3BpL2NvY29h
L1NlY3VyaXR5U1BJLmg+CiAKICNpZiBVU0UoRk9VTkRBVElPTikKQEAgLTU5OSw4ICs1OTksOCBA
QCB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDRlVSTFJlZiB1cmwpCiAgICAgaWYgKGJh
c2VVUkwpCiAgICAgICAgIGVuY29kZShlbmNvZGVyLCBiYXNlVVJMKTsKIAotICAgIFVSTENoYXJC
dWZmZXIgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7CisgICAgV1RG
OjpVUkxDaGFyQnVmZmVyIHVybEJ5dGVzOworICAgIFdURjo6Z2V0VVJMQnl0ZXModXJsLCB1cmxC
eXRlcyk7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4odXJsQnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6ZSgpKTsK
ICAgICBlbmNvZGVyIDw8IGRhdGFSZWZlcmVuY2U7CiB9CkBAIC02MzEsNyArNjMxLDcgQEAgYm9v
bCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPENGVVJMUmVmPiYgcmVzdWx0KQog
ICAgIH0KICNlbmRpZgogCi0gICAgcmVzdWx0ID0gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJ5dGVzLmRhdGEoKSksIHVybEJ5dGVzLnNpemUo
KSwgYmFzZVVSTC5nZXQoKSk7CisgICAgcmVzdWx0ID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZm
ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJsQnl0ZXMuZGF0YSgpKSwgdXJsQnl0
ZXMuc2l6ZSgpLCBiYXNlVVJMLmdldCgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwCmluZGV4IGU5ZDkyMzkzYzdkNWM2
YjNhYmYzZjlmNDRhMDdmNDFhMDA4NDYwZTguLjZhMGRmNTRjMzc0NDVkZjY0Y2M1ZDNiNGJiNjEw
ZWMxZjNjMDY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJv
cnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3Bw
CkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAKICNpbmNsdWRlICJB
UElFcnJvci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4
bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4IDNkMDg2ODlm
ZTE3NmRkN2E2MTcyYTEzN2MwNTgzZGNlYTczNzJmNjMuLmMxYWI4NWZkNDQxYmMxMjgwNzU0NjYw
OTQwOTY4ZjczNmE4ZjY2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9J
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCkBAIC0zMyw3ICszMyw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vs
ZWN0aW9uUmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDggKzYwLDggQEAg
c3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIHsKICAgICBib29sIHByZXZl
bnRUZXh0SW50ZXJhY3Rpb24geyBmYWxzZSB9OwogI2VuZGlmCiAgICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCBhZGp1c3RlZFBvaW50Rm9yTm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzOwotICAgIFdl
YkNvcmU6OlVSTCB1cmw7Ci0gICAgV2ViQ29yZTo6VVJMIGltYWdlVVJMOworICAgIFVSTCB1cmw7
CisgICAgVVJMIGltYWdlVVJMOwogICAgIFN0cmluZyB0aXRsZTsKICAgICBTdHJpbmcgaWRBdHRy
aWJ1dGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKaW5kZXggYmIwZDFjYjYzZDQxZjJl
N2JjMzZiYTlmNWQ1ZGFlNWU0MDgxMTU5Mi4uOTBmZGU3ZDA0YjI3MzA1YTQ2NDM2MTQxYmRiNzdl
MTAwNGJkZDA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQ
Q29va2llU3RvcmUuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKIHN0cnVjdCBDb29raWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcAppbmRleCA2
OGI4N2Q4ODdmZTYzNDJmMGY1MWM5NDMxMmVhMGY0YmNlMTJiZjZhLi45MzJiNjI2Nzc3ZjBhZjBh
YjU0ZjY0N2JkODFiZmY0Nzg0MzljN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTmF2aWdhdGlvbjo6
c2V0Q3VycmVudFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUHJvY2Vzc0lkZW50
aWZpZXIKICAgICBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIgPSBwcm9jZXNzSWRl
bnRpZmllcjsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVSTChjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgTmF2aWdhdGlvbjo6YXBwZW5kUmVkaXJlY3Rpb25V
UkwoY29uc3QgV1RGOjpVUkwmIHVybCkKIHsKICAgICBpZiAobV9yZWRpcmVjdENoYWluLmlzRW1w
dHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHVybCkKICAgICAgICAgbV9yZWRpcmVj
dENoYWluLmFwcGVuZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uLmgKaW5kZXggOTdlZTk2ZGRkNmU0N2ExOWFjZGMyZjI4NDhmN2E3NjI5N2JkZDFmMi4u
ZWQwMjk0ZDgyODdlY2Q4NjZiYTZlOTNiODFjNTNmMGI0NGI4NDlkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCkBAIC03Nyw4ICs3Nyw4IEBAIGNsYXNz
IE5hdmlnYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb24+
IHsKICAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVtKCkgY29uc3Qg
eyByZXR1cm4gbV9mcm9tSXRlbS5nZXQoKTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVMb2FkVHlwZT4gYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7IH0KIAotICAgIHZvaWQgYXBwZW5kUmVkaXJlY3Rp
b25VUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlVSTD4gdGFr
ZVJlZGlyZWN0Q2hhaW4oKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVkaXJlY3RDaGFpbik7IH0KKyAg
ICB2b2lkIGFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0IFdURjo6VVJMJik7CisgICAgVmVjdG9y
PFdURjo6VVJMPiB0YWtlUmVkaXJlY3RDaGFpbigpIHsgcmV0dXJuIFdURk1vdmUobV9yZWRpcmVj
dENoYWluKTsgfQogCiAgICAgdm9pZCBzZXRXYXNVc2VySW5pdGlhdGVkKGJvb2wgdmFsdWUpIHsg
bV93YXNVc2VySW5pdGlhdGVkID0gdmFsdWU7IH0KICAgICBib29sIHdhc1VzZXJJbml0aWF0ZWQo
KSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJJbml0aWF0ZWQ7IH0KQEAgLTExNCw3ICsxMTQsNyBA
QCBjbGFzcyBOYXZpZ2F0aW9uIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZp
Z2F0aW9uPiB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0
OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IG1fY3VycmVudFJlcXVlc3RQ
cm9jZXNzSWRlbnRpZmllcjsKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBtX3JlZGlyZWN0Q2hh
aW47CisgICAgVmVjdG9yPFdURjo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9vbCBtX3dh
c1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3Nob3VsZEZvcmNlRG93bmxvYWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1JlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGVlY2Jm
ZjRhMmEzZWQ5MGY0NDQwOGNjZDZjYWYyOWRlOThkOTUyZDcuLjMwODcxYzdhMDk1NTRkNWNiOGE3
ZWQ0YWI4MmNiYjE0OGNkZTc4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkFQ
SVVzZXJJbml0aWF0ZWRBY3Rpb24uaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC00
Nyw3ICs0Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24gZmluYWwgOiBwdWJsaWMgT2JqZWN0
SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+CiAgICAgc3RkOjpvcHRpb25hbDxX
VEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRGcmFt
ZU5hbWU7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3Jp
Z2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5hbFVSTC5pc051bGwoKSA/IG1fb3Jp
Z2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KKyAgICBjb25zdCBXVEY6OlVSTCYgb3JpZ2lu
YWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5hbFVSTC5pc051bGwoKSA/IG1fb3JpZ2lu
YWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KIAogICAgIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBl
IG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5u
YXZpZ2F0aW9uVHlwZTsgfQogICAgIFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmll
cnMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVyczsgfQpA
QCAtNjYsNyArNjYsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIGZpbmFsIDogcHVibGljIE9i
amVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uPgogICAgIE5hdmlnYXRpb24q
IG1haW5GcmFtZU5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZU5hdmlnYXRp
b24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8q
IHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8
V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91bGRPcGVu
QXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rp
b24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKKyAgICBOYXZpZ2F0aW9u
QWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJh
bWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFsVVJMLCBi
b29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNl
ckluaXRpYXRlZEFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0aW9uKQog
ICAgICAgICA6IG1fc291cmNlRnJhbWUoc291cmNlRnJhbWUpCiAgICAgICAgICwgbV90YXJnZXRG
cmFtZSh0YXJnZXRGcmFtZSkKICAgICAgICAgLCBtX3RhcmdldEZyYW1lTmFtZSh0YXJnZXRGcmFt
ZU5hbWUpCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24gZmluYWwgOiBw
dWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+CiAgICAgewog
ICAgIH0KIAotICAgIE5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBBUEk6OkZyYW1lSW5mbyogc291cmNlRnJhbWUsIEFQ
STo6RnJhbWVJbmZvKiB0YXJnZXRGcmFtZSwgc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4gdGFy
Z2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRy
PFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKKyAgICBOYXZpZ2F0
aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0
RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFsVVJM
LCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYg
dXNlckluaXRpYXRlZEFjdGlvbikKICAgICAgICAgOiBOYXZpZ2F0aW9uQWN0aW9uKFdURk1vdmUo
bmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZSwgdGFyZ2V0RnJhbWUsIHRhcmdldEZy
YW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxVUkwsIHNob3VsZE9wZW5BcHBMaW5r
cywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aW9uKSwgbnVsbHB0cikKICAgICB7CiAgICAgfQpA
QCAtODksNyArODksNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIGZpbmFsIDogcHVibGljIE9i
amVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uPgogICAgIHN0ZDo6b3B0aW9u
YWw8V1RGOjpTdHJpbmc+IG1fdGFyZ2V0RnJhbWVOYW1lOwogCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBXZWJDb3JlOjpVUkwgbV9vcmlnaW5hbFVSTDsKKyAg
ICBXVEY6OlVSTCBtX29yaWdpbmFsVVJMOwogCiAgICAgYm9vbCBtX3Nob3VsZE9wZW5BcHBMaW5r
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xp
ZW50LmgKaW5kZXggNmFkODMzYTYwOTk1Yjg5OWExYjExYzcxYWU5OWM0OTU3YWMyNzI5MC4uOGU5
NDRiN2RlYzRkOWU1ZGU3NGE3NDFjMmFhZWQ3OTk4MzIwMDM5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC05Nyw3ICs5Nyw3
IEBAIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgewogCiAgICAgdmlydHVhbCBSZWZQdHI8RGF0YT4g
d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gbnVsbHB0
cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U3RyaW5nPiBzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgs
IGNvbnN0IFJlZlB0cjxTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVS
TCYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxTdHJpbmc+IHNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIHVuc2ln
bmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPFN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywg
Y29uc3QgV1RGOjpVUkwmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBVU0UoUVVJQ0tfTE9P
SykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1
dGkpIHsgfQpAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgewogICAg
ICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBjb250
ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpV
UkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiYpIHsgfTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV1RGOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiYpIHsgfTsKICAgICAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
ICAgICB2aXJ0dWFsIGJvb2wgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdJbihXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYpIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMjYsOCAr
MTI2LDggQEAgY2xhc3MgTmF2aWdhdGlvbkNsaWVudCB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShX
RUJHTCkKLSAgICB2aXJ0dWFsIHZvaWQgd2ViR0xMb2FkUG9saWN5KFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRp
b25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsg
fQotICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBs
ZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9u
KTsgfQorICAgIHZpcnR1YWwgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBjb25zdCBXVEY6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFu
ZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIGNvbnN0IFdURjo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5k
bGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQogI2Vu
ZGlmCiAgICAgCiAgICAgdmlydHVhbCBib29sIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIGJv
b2wgaW5QYWdlQ2FjaGUsIE9iamVjdCopIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGJhMjkwZTA4OTdiOWM3MjdhZjY5Njgy
ZjI4ZmYzMzQ1MTk1ZDkxNjIuLjgzZGEyOWNjNTJmYzg3MzA5Y2ZjNjVmNDZkNzAxMTBmMTI5NDY0
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC0xNDAs
NyArMTQwLDcgQEAgY2xhc3MgVUlDbGllbnQgewogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2Rh
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsKFdl
YktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZURhdGFUb0Zp
bGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBEYXRhJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViS2l0
OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
Y29uc3QgV1RGOjpVUkwmLCBEYXRhJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGlubmVkU3Rh
dGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCmluZGV4IDc1ODRlNjMxMjEwMmI1YjBj
NTAwN2VhOWI4OGNhYzc4M2I5ZTE0NmMuLjQwMjJlZmRjYjk3YTUwOWY2ZTBlZjg5NWRjYjY3Mzg2
NmFhOWY1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAKLVdlYkNvcmU6OlVS
TCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCitXVEY6OlVSTCBVc2VyU2NyaXB0Ojpn
ZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCmluZGV4IDE3YTQw
OTA5ODk3Zjc0NGI1MDVhMDQ5MmFjNTA4YzQwNTBiMTMxYzUuLjAzMzMyODIwYjE2MDExNDkxNDAz
NjE4YjYzN2YzM2RhODE0YjE4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVVzZXJTY3JpcHQuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQVBJVXNlclNjcmlwdF9oCi0jZGVmaW5lIEFQSVVz
ZXJTY3JpcHRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNs
dWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0zNSw3ICszNCw3IEBAIG5hbWVzcGFjZSBB
UEkgewogCiBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0
OjpUeXBlOjpVc2VyU2NyaXB0PiwgcHVibGljIElkZW50aWZpZWQ8VXNlclNjcmlwdD4gewogcHVi
bGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKKyAgICBz
dGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKIAogICAgIHN0YXRpYyBSZWY8VXNl
clNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCwgQVBJOjpVc2Vy
Q29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIGNsYXNzIFVzZXJT
Y3JpcHQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVzZXJTY3JpcHQ+
LCBwdWJsaWMgSWRlCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8vIEFQSVVz
ZXJTY3JpcHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5
bGVTaGVldC5jcHAKaW5kZXggMWQ1OTViYjE1ODhkOWY3ZDVkNDhmZDkyMWNkMWRkOTY2YjNmODZh
Zi4uM2VhNDYxZmUxYTE1NmM2YTlkNTg5NTg0MDM3ZmUzODdjMjkwN2YwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1XZWJDb3JlOjpVUkwgVXNlclN0eWxlU2hl
ZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKK1dURjo6VVJMIFVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0
ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKaW5kZXggZDg1
NmY3YTUyZjliNTA0ZTBmYTQyM2VhOWEzYjZlMTU3MTQ1MWVkZS4uNzViYjk1YWZlYWM4ZjhmMWU4
MjIzMzVmMjkzZTk4Mzg3YjVkNzYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSVVzZXJTdHlsZVNoZWV0X2gK
LSNkZWZpbmUgQVBJVXNlclN0eWxlU2hlZXRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJB
UElPYmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0zNSw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclN0eWxlU2hlZXQ+LCBwdWJsaWMgSWRl
bnRpZmllZDxVc2VyU3R5bGVTaGVldD4gewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpV
UkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKKyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVVbmlx
dWVVUkwoKTsKIAogICAgIHN0YXRpYyBSZWY8VXNlclN0eWxlU2hlZXQ+IGNyZWF0ZShXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3
b3JsZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIGNsYXNzIFVzZXJTdHlsZVNoZWV0IGZpbmFs
IDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyU3R5bGVTaGVldD4sIHB1CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8vIEFQSVVzZXJTdHlsZVNoZWV0X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXggNmU3OTY2MjU1MmI5ZjY4MDUyMDI5NGViYjlkNzRl
YmFiZDgzMjY1MC4uNGEwZmZjNDJlNTk0MWMzMDZiY2ZmYmY4OGNlMTVhY2M3MDk5YjVjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJh
eS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtNDgsNyArNDgsNyBAQCBz
dGF0aWMgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzRnJvbUZpbGVVUkxzKGNvbnN0IEFQSTo6QXJy
YXkmIGZpbGVVUkxzKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAg
ICAgICAgIEFQSTo6VVJMKiBhcGlVUkwgPSBmaWxlVVJMcy5hdDxBUEk6OlVSTD4oaSk7CiAgICAg
ICAgIGlmIChhcGlVUkwpCi0gICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVja2VkQXBwZW5kKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5c3RlbVBh
dGgoKSk7CisgICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVja2VkQXBwZW5kKFVSTChVUkwoKSwg
YXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IGZpbGVQYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4
IGNjMmRmOWI1NzFhMTE3OGVjZjU3ZjZkZTZmYWEzOGRhZTVhYzYxMTAuLjJjYjk2YTMyNTBkZDNk
MGM0YTdhMTM0YzliOWM4YTY4MjAyZTFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4
dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVm
CiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YShXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmLCBXS1R5cGVSZWYgdXNlckRh
dGFSZWYpCiB7Ci0gICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYsICJ0
ZXh0L3BsYWluIl9zLCBibGFua1VSTCgpLnN0cmluZygpLCB1c2VyRGF0YVJlZik7CisgICAgbG9h
ZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBXVEY6
OmJsYW5rVVJMKCkuc3RyaW5nKCksIHVzZXJEYXRhUmVmKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2Fk
V2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJlZiB3ZWJBcmNoaXZlRGF0
YVJlZikKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAKICAg
ICAgICAgICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHBhZ2UucHJvY2Vzcygp
LnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRv
a2VuSWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3Mg
PSAhaG9zdHNBcmVFcXVhbChzb3VyY2VGcmFtZUluZm8tPnJlcXVlc3QoKS51cmwoKSwgcmVzb3Vy
Y2VSZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rp
b24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdU
Rk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgV2ViQ29yZTo6VVJMKCksIHNob3VsZE9wZW5BcHBMaW5r
cywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAgICAgICAgICAgICAgICBhdXRv
IGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRy
LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgVVJMKCksIHNob3VsZE9w
ZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKIAogICAgICAgICAg
ICAgICAgIGF1dG8gYXBpV2luZG93RmVhdHVyZXMgPSBBUEk6OldpbmRvd0ZlYXR1cmVzOjpjcmVh
dGUod2luZG93RmVhdHVyZXMpOwogCkBAIC0xOTQ1LDcgKzE5NDUsNyBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNl
KiB3a0NsaWVudAogICAgICAgICAgICAgbV9jbGllbnQucnVuTW9kYWwodG9BUEkoJnBhZ2UpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzYXZl
RGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKSBmaW5hbAorICAgICAg
ICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiBwYWdl
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBBUEk6OkRhdGEmIGRhdGEpIGZpbmFsCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTg1LDcgKzIxODUsNyBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25z
dCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAgcmV0dXJuIEFQSTo6RGF0YTo6Y3Jl
YXRlKG1hc3RlcktleS5kYXRhKCksIG1hc3RlcktleS5zaXplKCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0
cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwp
IG92ZXJyaWRlCisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYgcGFnZSwgdW5zaWduZWQga2V5U2l6ZUluZGV4
LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYg
dXJsKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQuY29weVNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZykKICAgICAgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKaW5kZXggMzkwZTEyMDc0
N2VhZTg5Y2ZkOWZlZTY5ZGFjZWNiNmRlMDc5NWVjNS4uMDM3NzQxMGVhN2U2N2U2YjA5MTBjZmJj
MDVhOWIzMmY1OGNiNDNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZUdyb3VwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclN0
eWxlU2hlZXQoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS1N0cmluZ1JlZiBzb3VyYwog
ICAgIGF1dG8gd2hpdGVsaXN0ID0gdG9JbXBsKHdoaXRlbGlzdGVkVVJMUGF0dGVybnMpOwogICAg
IGF1dG8gYmxhY2tsaXN0ID0gdG9JbXBsKGJsYWNrbGlzdGVkVVJMUGF0dGVybnMpOwogCi0gICAg
UmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0ID0gQVBJOjpVc2VyU3R5bGVT
aGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgc291cmNlLCAoYmFzZVVSTFN0
cmluZy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJp
bmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9T
dHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCBBUEk6
OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIFJlZjxBUEk6OlVzZXJTdHls
ZVNoZWV0PiB1c2VyU3R5bGVTaGVldCA9IEFQSTo6VXNlclN0eWxlU2hlZXQ6OmNyZWF0ZShXZWJD
b3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgKGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8g
V1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZykpLCB3aGl0ZWxpc3Qg
PyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xp
c3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1Vz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpLCBXZWJDb3JlOjpVc2VyU3R5
bGVVc2VyTGV2ZWwgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKIAog
ICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2Vy
U3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldC5nZXQoKSk7CiB9CkBAIC05OCw3ICs5OCw3IEBAIHZv
aWQgV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwg
V0tTdHJpbmdSZWYgc291cmNlUmVmCiAgICAgYXV0byB3aGl0ZWxpc3QgPSB0b0ltcGwod2hpdGVs
aXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgYXV0byBibGFja2xpc3QgPSB0b0ltcGwoYmxhY2tsaXN0
ZWRVUkxQYXR0ZXJucyk7CiAgICAgCi0gICAgYXV0byB1cmwgPSBiYXNlVVJMU3RyaW5nLmlzRW1w
dHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IGJhc2VVUkxTdHJpbmcpOworICAgIGF1dG8gdXJsID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkg
PyBXVEY6OmJsYW5rVVJMKCkgOiAgVVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKTsKICAgICBSZWY8
QVBJOjpVc2VyU2NyaXB0PiB1c2VyU2NyaXB0ID0gQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2Vi
Q29yZTo6VXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwgV1RGTW92ZSh1cmwpLCB3aGl0ZWxp
c3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFj
a2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0
b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCB0b1VzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9y
bWFsV29ybGQoKSk7CiAgICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJv
bGxlcigpLmFkZFVzZXJTY3JpcHQodXNlclNjcmlwdC5nZXQoKSwgSW5qZWN0VXNlclNjcmlwdElt
bWVkaWF0ZWx5OjpObyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCA2N2E1NDIzZWE1ZWQ1N2ExZThi
ZjlkYWQ4MzIwZTA0ZGJhZjczMWI0Li4zODVkY2JjZDg2Mzc2ODYyNjcyZjZlODQ3MDRkNTdkZWY3
ODI1YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQxLDggKzQxLDggQEAKICNpbmNsdWRlICJXZWJz
aXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKICNp
bmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IFdLVHlwZUlEIFdLV2Vic2l0ZURhdGFTdG9yZUdldFR5cGVJRCgpCiB7CkBAIC05NSw3ICs5NSw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ci0gICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNl
Rm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+c2V0TGFzdFNl
ZW4oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJd
IHsKKyAgICBzdG9yZS0+c2V0TGFzdFNlZW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY29tcGxldGlvbkhh
bmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiB9
CkBAIC0xMjEsMTEgKzEyMSwxMSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YQogICAgIH0KIAog
ICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIHN0b3JlLT5zZXRQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmUtPmNsZWFy
UHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAg
ICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgICAgICB9KTsKIH0KQEAg
LTEzOSwxMSArMTM5LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Zl
cnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYKICAgICB9CiAKICAgICBp
ZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5zZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPnNldFZlcnlQcmV2
YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UKLSAgICAgICAgc3RvcmUtPmNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsK
KyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgICAgICB9KTsKIH0K
QEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhUwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgc3RvcmUtPmlzUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgIHN0b3JlLT5pc1By
ZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAg
ICAgY2FsbGJhY2soaXNQcmV2YWxlbnRSZXNvdXJjZSwgY29udGV4dCk7CiAgICAgfSk7CiB9CkBA
IC0xODIsNyArMTgyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5
UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKKyAgICBz
dG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50
UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UsIGNv
bnRleHQpOwogICAgIH0pOwogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXS1dlYnNpdGVE
YXRhU3RvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc3RvcmUtPmlzUmVnaXN0
ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktp
dDo6dG9JbXBsKHN1YnJlc291cmNlSG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIpIHsKKyAg
ICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29s
IGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjA4
LDcgKzIwOCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJl
ZEFzU3ViRnJhbWVVbmRlcihXS1dlYnNpdGVEYXRhU3RvcmVSCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3RyaW5nKCkp
LCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3Vi
RnJhbWVVbmRlcikgeworICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2Fs
bGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKSB7CiAgICAgICAgIGNhbGxi
YWNrKGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlciwgY29udGV4dCk7CiAgICAgfSk7CiB9CkBA
IC0yMjEsNyArMjIxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdp
c3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20p
LT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlz
UmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgeworICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1Jl
ZGlyZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20p
LT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbykt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJl
Y3RpbmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8s
IGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjM1LDExICsyMzUsMTEgQEAgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZgogICAgIH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPmxvZ1Vz
ZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAg
ICBzdG9yZS0+bG9nVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiAgICAgZWxzZQotICAg
ICAgICBzdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlv
bkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyVXNlckludGVyYWN0aW9uKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25I
YW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAg
ICAgfSk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGQKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24o
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKSB7Cisg
ICAgc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNIYWRVc2VySW50
ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFkVXNlckludGVyYWN0aW9uLCBjb250
ZXh0KTsKICAgICB9KTsKIH0KQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3JlLT5zZXRH
cmFuZGZhdGhlcmVkKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgdmFsdWUpOworICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhlcmVkKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUpOwogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZEZ1bmN0aW9uIGNh
bGxiYWNrKQpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJlZCkgeworICAgIHN0b3Jl
LT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+
c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CiAg
ICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29udGV4dCk7CiAgICAgfSk7CiB9CkBA
IC0yODUsNyArMjg1LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG8KICAgICBpZiAoIXN0b3Jl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0
b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSk7CiB9CiAK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BG
cmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1Jl
ZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
T3JpZ2luKFdLV2Vic2l0ZURhdGEKICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJp
bmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1Jl
ZiBob3N0UmVkaXJlY3RlZFRvKQpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVE
YXRhU3RvCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmUtPnNl
dFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CisgICAg
c3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJl
ZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRp
cmVjdGVkRnJvbSkKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhUwog
ICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBzdG9yZS0+c2V0U3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSk7CisgICAg
c3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGly
ZWN0ZWRUbykKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUgogICAg
IGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBzdG9yZS0+c2V0VG9wRnJh
bWVVbmlxdWVSZWRpcmVjdFRvKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpKTsKKyAgICBzdG9yZS0+c2V0
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+
c3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9w
RnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQpAQCAt
MzMwLDcgKzMzMCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZy
YW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yCiAgICAgaWYgKCFzdG9yZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHN0b3JlLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKKyAgICBzdG9yZS0+c2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmlu
ZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91
YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggYTgwNmJkZWMyZTJkNDgyM2IyZjFlOTJlZDEz
M2U3MTM2NWRlZjY2NC4uYzg1ODAzM2FlNTkxYjNhMjIzOWIwMWYxYjliMGYzOWZkZmJiNDBhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tp
ZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBD
b29raWVTdG9yZS5tbQpAQCAtMzAsMTAgKzMwLDEwIEBACiAKICNpbXBvcnQgIkhUVFBDb29raWVB
Y2NlcHRQb2xpY3kuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29va2llLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQg
PHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogc3RhdGljIE5TQXJyYXk8TlNI
VFRQQ29va2llICo+ICpjb3JlQ29va2llc1RvTlNDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiBjb3JlQ29va2llcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCmluZGV4IDljZjY2ODFhYWIzOTFjMzViNjM3OTA3YjEx
MTA4NmY4Mjc5NzZkNWEuLjhlMGM3MjEyODY4MjgyMTE5ZjJmODlmMjk1MDY1YWY0ZDJmZWEwOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3Jp
cHQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlw
dC5tbQpAQCAtOTUsNyArOTUsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihO
U1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbgogICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgQVBJOjpP
YmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6
OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBXZWJDb3JlOjpVUkwoYXNzb2NpYXRl
ZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmlu
Z1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0
SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCAqdXNlckNvbnRl
bnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJ
bldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RG
OjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9y
KGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwg
QVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxk
KTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCAzMWYy
YTkzNmQ5YWY5MWY5ZTBiZmI5NjZlYTBiZmFkZmM5OTg5MDVmLi4wN2FlNzg0Yjc1MzNjMjNmNmNk
NjRhMDU2NTk0NGFjNTViNDM0NjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtNDQsOCAr
NDQsOCBAQAogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0
IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
ZXR0aW5ncy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPHd0Zi9XZWFr
T2JqQ1B0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDc4LDcgKzQ3OCw3IEBAIC0gKHZv
aWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1l
SGFuZGxlciBmb3JVUkxTY2hlCiAgICAgaWYgKFtXS1dlYlZpZXcgaGFuZGxlc1VSTFNjaGVtZTp1
cmxTY2hlbWVdKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRF
eGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBhIFVSTCBzY2hlbWUgdGhhdCBXS1dlYlZpZXcgaGFu
ZGxlcyBuYXRpdmVseSIsIHVybFNjaGVtZV07CiAKLSAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9
IFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJsU2NoZW1lKTsK
KyAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdURjo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNh
bGl6ZVNjaGVtZSh1cmxTY2hlbWUpOwogICAgIGlmICghY2Fub25pY2FsU2NoZW1lKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAi
JyVAJyBpcyBub3QgYSB2YWxpZCBVUkwgc2NoZW1lIiwgdXJsU2NoZW1lXTsKIApAQCAtNDkwLDcg
KzQ5MCw3IEBAIC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2NoZW1lSGFu
ZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAKIC0gKGlkIDxXS1VSTFNjaGVtZUhh
bmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1l
CiB7Ci0gICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJDb3JlOjpVUkxQYXJzZXI6Om1heWJl
Q2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAgYXV0byBjYW5vbmljYWxTY2hlbWUg
PSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJsU2NoZW1lKTsKICAg
ICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0KaW5kZXggYzY0OWZmNmNiY2VhNWExZGE0NWYzNjBiZTUzOWM3ZGJjNDkyODMyNi4uNTA2ZmI1
YmY2NzRmYzNhZDk2ZWUzYTAyOWI3YWNkM2NmOGEzNDA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0z
OCw5ICszOCw5IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW1wb3J0ICJfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYktpdC9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Lmg+CiAjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogQGltcGxlbWVudGF0aW9uIFdLV2Vi
c2l0ZURhdGFTdG9yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCmluZGV4IDNlZGQ4NTMxYTA5OGIw
NGYyNDM3ZDdkZTViODU0MGYzZjYwZWNmNzIuLmRmZWQwYTliZTE3NTM3MjJiNjU0MDc3MWM4N2Iz
NjVhYjZkZjA5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC01NCw5ICs1NCw5IEBAIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIKICAgICAgICAg
V1RGOjpTdHJpbmcobmFtZSksCiAgICAgICAgIFdURjo6U3RyaW5nKHNob3J0TmFtZSksCiAgICAg
ICAgIFdURjo6U3RyaW5nKGRlc2NyaXB0aW9uKSwKLSAgICAgICAgV2ViQ29yZTo6VVJMKHNjb3Bl
VVJMKSwKKyAgICAgICAgVVJMKHNjb3BlVVJMKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheT4oZGlzcGxheSksCi0gICAgICAgIFdlYkNv
cmU6OlVSTChzdGFydFVSTCkKKyAgICAgICAgVVJMKHN0YXJ0VVJMKQogICAgIH07CiAKICAgICBB
UEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6QXBwbGljYXRpb25NYW5pZmVzdD4o
c2VsZiwgV1RGTW92ZShjb3JlQXBwbGljYXRpb25NYW5pZmVzdCkpOwpAQCAtODMsNyArODMsNyBA
QCAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWFDb2RlcgogCiArIChfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0ICopYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOihOU1N0cmluZyAq
KWpzb24gbWFuaWZlc3RVUkw6KE5TVVJMICopbWFuaWZlc3RVUkwgZG9jdW1lbnRVUkw6KE5TVVJM
ICopZG9jdW1lbnRVUkwKIHsKLSAgICBhdXRvIG1hbmlmZXN0ID0gV2ViQ29yZTo6QXBwbGljYXRp
b25NYW5pZmVzdFBhcnNlcjo6cGFyc2UoV1RGOjpTdHJpbmcoanNvbiksIFdlYkNvcmU6OlVSTCht
YW5pZmVzdFVSTCksIFdlYkNvcmU6OlVSTChkb2N1bWVudFVSTCkpOworICAgIGF1dG8gbWFuaWZl
c3QgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZShXVEY6OlN0cmlu
Zyhqc29uKSwgVVJMKG1hbmlmZXN0VVJMKSwgVVJMKGRvY3VtZW50VVJMKSk7CiAgICAgcmV0dXJu
IHdyYXBwZXIoQVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0OjpjcmVhdGUobWFuaWZlc3QpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJT
dHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJT
dHlsZVNoZWV0Lm1tCmluZGV4IGU2ZjA5MGZmNWQ0MTM3YzY1ODljZWU4ZmNhODM1MDEzYjhhNmRl
M2QuLjYxNDUyMzJhMGQ4ZTdmMWE4ZDcyZGFkNzEzNzdiYTVjNzRiYjg0ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQu
bW0KQEAgLTcwLDcgKzcwLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0
cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW4KICAgICAvLyBGSVhN
RTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJMIGJlbG93IGJl
Zm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4uLiB3aGVyZSBz
aG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwog
Ci0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0
PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIHsg
V2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNX
VEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6
dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNv
cmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdl
YkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250
ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhz
b3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpTdHJpbmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFB
c1dURlN0cmluZ10pIH0sIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJ
Ojp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2Vi
Q29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcywg
V2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNv
bnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGE3MjlmYWI5YTc5ZTFk
Y2QxNTRmNDMwOTFkMTdmNGVkYzgwZGYzYjQuLjY3NGE1ZGIwNDNjOGE2MGYzNjIwYWE3YmEwMThj
MWY5ODVlZGY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9T
UUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogLy8gRm9yIG1ldGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8gc3VwcG9ydCBBUEkgZnJv
bSB0aGUgbWFpbiB0aHJlYWQgLSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbnRlcm5hbGx5CiAjZGVm
aW5lIEFTU0VSVF9OT1RfU1lOQ19USFJFQUQoKSBBU1NFUlQoIW1fc3luY1RocmVhZFJ1bm5pbmcg
fHwgIUlTX0lDT05fU1lOQ19USFJFQUQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKaW5kZXggZGU4MmZkYWI1
YzdmOTUzZmE1YmNhZjQwN2Q5YzY2Y2IxODUyMjdlMy4uN2E5NDI5MTlkZGY4YzRmMmEzYjE2ZGE3
NjcwMTRiMmMyYzE1NGZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2
b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2llcyhXZWJLaXRDb29raWVNYW5hZ2Vy
KiBtYW5hZ2VyLCBjb25zdCBnY2hhcgogCiAgICAgLy8gQ29va2llcyBhcmUgcmVhZC93cml0dGVu
IGZyb20vdG8gdGhlIHNhbWUgU1FMaXRlIGRhdGFiYXNlIG9uIGRpc2sgcmVnYXJkbGVzcwogICAg
IC8vIG9mIHRoZSBwcm9jZXNzIHdlIGFjY2VzcyB0aGVtIGZyb20sIHNvIGp1c3QgdXNlIHRoZSBm
aXJzdCBwcm9jZXNzIHBvb2wuCi0gICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVtZW50PFdlYkNv
b2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0Q29va2llcyhzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTChX
ZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSwgW3Rhc2sgPSBXVEZNb3ZlKHRh
c2spXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgIHByb2Nlc3NQb29sc1swXS0+c3VwcGxlbWVudDxXZWJDb29r
aWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZXMoc2Vzc2lvbklELCBVUkwoVVJMKCksIFN0cmlu
Zzo6ZnJvbVVURjgodXJpKSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAg
ICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKICAgICAgICAg
ICAgIC8vIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGluIGNhc2VzIHdoZXJlIHRoZSB3ZWIgcHJvY2Vz
cyBpcyBub3QgYXZhaWxhYmxlLAogICAgICAgICAgICAgLy8gY29uc2lkZXIgdGhlIG9wZXJhdGlv
biAiY2FuY2VsbGVkIiBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHRoZSBjbGllbnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3Nl
clJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rmls
ZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCBjZDAyNmU0ZjhlOTFhN2FiZmIxOWJjYzMwYjBhMTIz
NThmMjdkZTUwLi4zN2U2Y2NhMGNlYmNlOTE0NzMwZTNjNmQ0MjVjNWZlZjc3ZmI0ODVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3Nl
clJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9H
VW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2lu
LmNwcAppbmRleCAzYmNjMjEyMzY3ODU5MzZhNzcxMjk3ZTZlMzk4ZDI4MGRmYjZiODAyLi44ODMz
NmIzZGM0Njg0OTg4YWM3N2QxNjlkYTZhNTk1ZTYxZTU5ZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3Bw
CkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlPcmlnaW4uaCIKIAog
I2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogLyoqCkBAIC0xMTAsNyArMTEwLDcgQEAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoY29uc3QgZ2NoYXIqIHVyaSkKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbCh1cmksIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHdlYmtp
dFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2Vi
Q29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CisgICAg
cmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoVVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CiB9CiAKIC8qKgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQu
Y3BwCmluZGV4IDAyNzU0MzEyN2FlZTFiMDg2ZDAzNjE1MWQxMThjZmM3OTY2NmE0MmUuLjk2Zjll
ZTExODJhMjQyM2I5MTYzZGMzYWYwODIxNmIzZTkxODliNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTUxLDcgKzUx
LDcgQEAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAgICAgdm9pZCBj
cmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZvPiYmIGZy
YW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0LCBXZWJD
b3JlOjpXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxX
ZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgIHsKICAgICAg
ICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlh
dGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZp
ZXIpOwotICAgICAgICBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uIG5hdmlnYXRpb25BY3Rpb24oQVBJ
OjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSks
IGZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlc291cmNl
UmVxdWVzdCksIFdlYkNvcmU6OlVSTCB7IH0sIGZhbHNlLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRB
Y3Rpdml0eSkpKTsKKyAgICAgICAgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiBuYXZpZ2F0aW9uQWN0
aW9uKEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlv
bkRhdGEpLCBmcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShy
ZXNvdXJjZVJlcXVlc3QpLCBVUkwgeyB9LCBmYWxzZSwgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0
aXZpdHkpKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYmtpdFdlYlZpZXdDcmVhdGVO
ZXdQYWdlKG1fd2ViVmlldywgd2luZG93RmVhdHVyZXMsICZuYXZpZ2F0aW9uQWN0aW9uKSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4IDkxNjc0YWMyODhmN2U3OGY0NTFlOTU5
M2QzYTU1NDhmZjU5ODg4OWYuLjA3YjU4YWQzMjNkNTQ1OGM5MDM2NjNkYjgzMGU5NGJlN2U1ZDg4
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVS
SVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKICNpbmNsdWRl
ICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJT
b3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8bGli
c291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJj
ZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDBmYTRhMThmODljOGM1MWE0NTQwNzc4ZjVhZTI3
YmVhODdkN2I1ZjEuLjIzNDg1OTY2M2QxZjJjNzgwODk4ZjA2MGY0MDE0OTg4ZTc4NmI0ZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwCkBAIC02NiwxMiArNjYsMTIgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291
cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTI2NDcsNyAr
MjY0Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfcGxhaW5fdGV4dChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogcGxhaW5UCiAgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwocGxhaW5U
ZXh0KTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9hZERhdGEoeyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihwbGFpblRleHQpLCBwbGFpblRleHQgPyBzdHJsZW4ocGxhaW5UZXh0
KSA6IDAgfSwgInRleHQvcGxhaW4iX3MsICJVVEYtOCJfcywgYmxhbmtVUkwoKS5zdHJpbmcoKSk7
CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHBsYWluVGV4dCksIHBsYWluVGV4dCA/IHN0cmxlbihwbGFpblRleHQpIDogMCB9
LCAidGV4dC9wbGFpbiJfcywgIlVURi04Il9zLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwog
fQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApp
bmRleCBiYmQ1MTZlNzI5NjIzMzdiZGRmZWNkMGM1NmQzOTgxNDgzM2Q4YTc0Li5iN2U2MzMwZWFl
YjJlMjAyMmU2MjNmM2E2OGVjMWJjMTdhYTM3NzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRl
eHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmNwcAppbmRleCA3ODBhMTVlOTZkM2MzNjI0NmJiNWQ1YTQxYzcxMjdiMmFiZGQxMzFjLi4yZjA2
NjA4NmQ5OTJmYzMwZmFmNmM3OTQwYWNlZjJmZGZjYzg1M2NlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuY3BwCkBAIC0xMDUsMTEgKzEwNSwxMSBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpzaG93UGF5bWVudFVJKGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJp
bgogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmF0aW5nOwogCi0gICAgV2ViQ29yZTo6VVJM
IG9yaWdpbmF0aW5nVVJMKFdlYkNvcmU6OlVSTCgpLCBvcmlnaW5hdGluZ1VSTFN0cmluZyk7Cisg
ICAgVVJMIG9yaWdpbmF0aW5nVVJMKFVSTCgpLCBvcmlnaW5hdGluZ1VSTFN0cmluZyk7CiAKLSAg
ICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBsaW5rSWNvblVSTHM7CisgICAgVmVjdG9yPFVSTD4gbGlu
a0ljb25VUkxzOwogICAgIGZvciAoY29uc3QgYXV0byYgbGlua0ljb25VUkxTdHJpbmcgOiBsaW5r
SWNvblVSTFN0cmluZ3MpCi0gICAgICAgIGxpbmtJY29uVVJMcy5hcHBlbmQoV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBsaW5rSWNvblVSTFN0cmluZykpOworICAgICAgICBsaW5rSWNvblVS
THMuYXBwZW5kKFVSTChVUkwoKSwgbGlua0ljb25VUkxTdHJpbmcpKTsKIAogICAgIHBsYXRmb3Jt
U2hvd1BheW1lbnRVSShvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxzLCBwYXltZW50UmVxdWVz
dCwgW3RoaXNdKGJvb2wgcmVzdWx0KSB7CiAgICAgICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRl
OjpBY3RpdmF0aW5nKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpCiAgICAgZGlkUmVhY2hGaW5hbFN0
YXRlKCk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVy
Y2hhbnQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVCht
X21lcmNoYW50VmFsaWRhdGlvblN0YXRlID09IE1lcmNoYW50VmFsaWRhdGlvblN0YXRlOjpJZGxl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggMDg1MDE5ZGEwNmUzMmZiMGY0ZWM1
ODk5MTUzNTQ4NmZlYmE3ZjhkYS4uZWRlN2E3MGNmMjEzNTk0ODgwYTY4ZjUwZGE3Y2Y5Y2YxODU0
NjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC00Myw3ICs0Myw2IEBAIGNsYXNz
IFBheW1lbnQ7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKIGNsYXNzIFBheW1lbnRNZXJjaGFudFNl
c3Npb247CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogfQogCiBPQkpDX0NMQVNT
IE5TT2JqZWN0OwpAQCAtNjEsNyArNjAsNyBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlVwogICAg
IH5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwogCiAgICAgdm9pZCBkaWRDYW5jZWxQYXlt
ZW50U2Vzc2lvbigpOwotICAgIHZvaWQgdmFsaWRhdGVNZXJjaGFudChjb25zdCBXZWJDb3JlOjpV
UkwmKTsKKyAgICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJik7CiAgICAgdm9pZCBk
aWRBdXRob3JpemVQYXltZW50KGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmKTsKICAgICB2b2lkIGRp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpOwogICAgIHZvaWQgZGlkU2VsZWN0U2hpcHBpbmdD
b250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0Jik7CkBAIC05OSw3ICs5OCw3IEBA
IGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciwgcHVibGljIENhbk1ha2VXCiAgICAgYm9vbCBwbGF0Zm9ybUNhbk1ha2VQYXltZW50
cygpOwogICAgIHZvaWQgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25z
dCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lk
IHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25z
dCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJM
PiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdCYsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRp
b24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgcGxh
dGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2hpcHBpbmdDb250YWN0VXBkYXRlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYS5oCmluZGV4IDE1OWFjMTkyNDYyYjQ5ZjdmOTQ2ZmM0NmE2ZTk4ZjkyNmJi
Y2I5NmMuLjRlMGYyMmI3YWRmNTEwNDE5ZmU2MGFjOWJhNGVhNTQ4OWRiYWNhMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKQEAgLTMxLDE1ICszMSwx
MSBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OwogCi1SZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRS
ZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CitSZXRhaW5QdHI8UEtQYXltZW50UmVx
dWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgb3JpZ2lu
YXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KaW5kZXggYTRlZWNjYjA5MWJmMGI0MGNm
YjBjMDUzMjgyMjU2OTMxYjA3MzRjNS4uZGY1YjlkYTdkZGRiZmI1NjVhNThhYmRlMjllZDMzMzc0
MWI1M2ZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lm1tCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BheW1lbnRIZWFkZXJzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNp
bXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKIFNPRlRfTElOS19QUklWQVRFX0ZS
QU1FV09SS19PUFRJT05BTChQYXNzS2l0KQpAQCAtNTExLDcgKzUxMSw3IEBAIHN0YXRpYyBQS1Bh
eW1lbnRSZXF1ZXN0QVBJVHlwZSB0b0FQSVR5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6CiB9CiAjZW5kaWYKIAotUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRv
UEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJ
Y29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBh
eW1lbnRSZXF1ZXN0KQorUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVx
dWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQogewogICAgIGF1dG8gcmVz
dWx0ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxl
UGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCBiMTBkOTJlMzhi
MGMxNzUzMzAwMjgyZWI3ZDU4MGUyYzIzNmNmYTg5Li4xN2I3ZjJmODlhMThiNzgwNmEyZTk2YzY0
ZTA4ZGIxZmYyODZjNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBs
ZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9T
Lm1tCkBAIC00MSw3ICs0MSw3IEBAIFNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0
IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+
JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93
UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBs
aW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVy
ID0gbV93ZWJQYWdlUHJveHkudWlDbGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4IDc0MTU5Mzgz
ZjE5NTQyN2RiOTc2MGE4YzAxZWM3MDY3YTY3YzZmOTUuLjI1MTQ5NTBlNWQwMjQ2MDNlMDU3MWFi
YjAzNmY3OTEyOTMwZDE2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Fw
cGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
YWMubW0KQEAgLTQxLDcgKzQxLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NLaXQsIFBLRXh0
ZW5zaW9uUGF5bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lvblBvaW50TmFtZSwKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3Jt
U2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RGOjpGdW5jdGlvbjx2b2lk
IChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBj
b25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghUGFzc0tpdExpYnJhcnkoKSkg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CmluZGV4IGY2M2JiMmJhZmViOThkZTQzNWVmYjVmNWNkNTNkZTQwYzQ3NmNiZTEuLmExMjI4NzRj
MWYwNTA1MjhmNjdiNDUxM2FhN2RiNDI0OWYxNmEwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CkBAIC00NCwxMCArNDQsMTAgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZy
b250ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgogCkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0
IFMKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMo
SW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3BhZ2VMb2FkU3RyYXRlZ3knIGlzIGlu
dmFsaWQuIik7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VMb2FkVGlt
ZW91dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0
KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKLSAgICBwYWdlLT5sb2FkUmVxdWVzdChXZWJD
b3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHVybCkpOworICAgIHBhZ2UtPmxvYWRSZXF1ZXN0KFVS
TChVUkwoKSwgdXJsKSk7CiAgICAgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25QYWdlKCpw
YWdlLCBwYWdlTG9hZFN0cmF0ZWd5LnZhbHVlKCksIHBhZ2VMb2FkVGltZW91dCwgV1RGTW92ZShj
YWxsYmFjaykpOwogfQogCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBzdGF0aWMgU3RyaW5nIGRvbWFp
bkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQoU3RyaW5nIGRvbWFpbikKICAgICBpZiAoZG9tYWlu
WzBdICE9ICcuJykgewogICAgICAgICAvLyBSRkMgMjk2NTogSWYgYW4gZXhwbGljaXRseSBzcGVj
aWZpZWQgdmFsdWUgZG9lcyBub3Qgc3RhcnQgd2l0aCBhIGRvdCwgdGhlIHVzZXIgYWdlbnQgc3Vw
cGxpZXMgYSBsZWFkaW5nIGRvdC4KICAgICAgICAgLy8gQXNzdW1lIHRoYXQgYW55IGhvc3QgdGhh
dCBlbmRzIHdpdGggYSBkaWdpdCBpcyB0cnlpbmcgdG8gYmUgYW4gSVAgYWRkcmVzcy4KLSAgICAg
ICAgaWYgKCFXZWJDb3JlOjpVUkw6Omhvc3RJc0lQQWRkcmVzcyhkb21haW4pKQorICAgICAgICBp
ZiAoIVVSTDo6aG9zdElzSVBBZGRyZXNzKGRvbWFpbikpCiAgICAgICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZygnLicsIGRvbWFpbik7CiAgICAgfQogICAgIApAQCAtMTMwMCw3ICsxMzAwLDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKGNvbnN0IFN0cmluZyYg
YnJvd3NpbmdDb250ZXh0SGFuZGxlLAogICAgIGlmICghcGFnZSkKICAgICAgICAgQVNZTkNfRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAgV2ViQ29yZTo6
VVJMIGFjdGl2ZVVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgcGFnZS0+cGFnZUxv
YWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKTsKKyAgICBVUkwgYWN0aXZlVVJMID0gVVJMKFVSTCgpLCBw
YWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOwogICAgIEFTU0VSVChhY3RpdmVVUkwu
aXNWYWxpZCgpKTsKIAogICAgIFdlYkNvcmU6OkNvb2tpZSBjb29raWU7CkBAIC0xMzU3LDcgKzEz
NTcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaQogICAgIGlmICghcGFnZSkKICAgICAgICAg
U1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBX
ZWJDb3JlOjpVUkwgYWN0aXZlVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBwYWdl
LT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOworICAgIFVSTCBhY3RpdmVVUkwgPSBVUkwo
VVJMKCksIHBhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVVUkwoKSk7CiAgICAgQVNTRVJUKGFj
dGl2ZVVSTC5pc1ZhbGlkKCkpOwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVN
YW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1t
CmluZGV4IDZmZjFiNDc4MzIzOTJiZDAzMjU2MjFlNTA1ZmIwNGE3NGY0NTY1ZmYuLjFkNmU3MTg4
NDViMTQ4NWUwYjI2NjZiOWFmMWVmOTMxNjAyMDQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9p
ZCBEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSkKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdE
b3dubG9hZCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gZG93bmxvYWRQcm94eS5v
cmlnaW5hdGluZ1BhZ2UoKSkgewogICAgICAgICAgICAgTlNVUkwgKmRlc3RpbmF0aW9uVVJMID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDooTlNTdHJpbmcgKilkb3dubG9hZFByb3h5LmRlc3RpbmF0
aW9uRmlsZW5hbWUoKV07Ci0gICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJv
bGxlcigpLT5maW5pc2goV2ViQ29yZTo6VVJMKGRlc3RpbmF0aW9uVVJMKSk7CisgICAgICAgICAg
ICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigpLT5maW5pc2goVVJMKGRlc3RpbmF0
aW9uVVJMKSk7CiAgICAgICAgIH0KICAgICAgICAgcmVsZWFzZUFjdGl2aXR5VG9rZW5JZk5lY2Vz
c2FyeShkb3dubG9hZFByb3h5KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA0NTk4NWY1MGU0YmZlNzAy
NWFjZGE4ZjYyZTU1ZDk4Y2FkMzQ1YmJjLi4wNTU2ZWNjYTMyNDgwZTlkMjY3NDVhZTdiMTk0ZDBl
NWM5ZTZjYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUuaApAQCAtMTE2LDcgKzExNiw3IEBAIGNsYXNzIE5hdmlnYXRpb25TdGF0ZSBmaW5h
bCA6IHByaXZhdGUgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgewogCiAgICAgICAgIFJlZlB0cjxB
UEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKIAot
ICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyhXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxB
UEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJp
ZGU7CisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxl
bmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVm
UHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBvdmVycmlkZTsK
IAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKQEAgLTEyNCw4ICsxMjQsOCBAQCBjbGFzcyBO
YXZpZ2F0aW9uU3RhdGUgZmluYWwgOiBwcml2YXRlIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICB2b2lkIHdlYkdMTG9hZFBvbGlj
eShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYpIGNvbnN0IGZpbmFsOwotICAgICAgICB2
b2lkIHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYm
KSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5
JiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCByZXNvbHZlV2ViR0xMb2FkUG9s
aWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmluYWw7CiAgICAgICAgIGJvb2wgd2ls
bEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2VQcm94eSYsIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mLCBib29sIGluUGFnZUNhY2hlLCBBUEk6Ok9iamVjdCopIGZpbmFsOwogICAgICAgICBi
b29sIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnSW4oV2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0aW9u
YXJ5JikgZmluYWw7CiAgICAgICAgIGJvb2wgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24o
V2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7CkBAIC0xMzMsNyArMTMzLDcg
QEAgY2xhc3MgTmF2aWdhdGlvblN0YXRlIGZpbmFsIDogcHJpdmF0ZSBQYWdlTG9hZFN0YXRlOjpP
YnNlcnZlciB7CiAgICAgICAgIGJvb2wgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYlBhZ2VQ
cm94eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBjb25zdCBWZWN0b3I8UmVmPFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0+PiYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBjb250ZW50
UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6VVJMJiYsIFZlY3Rv
cjxTdHJpbmc+JiYsIFZlY3RvcjxTdHJpbmc+JiYpIGZpbmFsOworICAgICAgICB2b2lkIGNvbnRl
bnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkmLCBVUkwmJiwgVmVjdG9yPFN0cmlu
Zz4mJiwgVmVjdG9yPFN0cmluZz4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0
aW9uPiYmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZShXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+JiYs
IFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQppbmRleCBhNWIwODdjZmYzMDhiZjE0MGFmODViZGFkZDM5ZmJmNjk5MTA3
OWE3Li40MjA3NzM5YWIwZTBmMDRiNTI3Y2M5Zjc3ZDViODQwMTAxM2Y1OGU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC03MCw5
ICs3MCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdlbmVyYXRvci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VyaWFsaXpl
ZENyeXB0b0tleVdyYXAuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjaWYgSEFWRShBUFBfTElOS1MpCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xh
dW5jaFNlcnZpY2VzU1BJLmg+CkBAIC0zOTIsNyArMzkyLDcgQEAgaW5saW5lIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSB0b1dlYkNvcmVXZWJHTExvYWRQb2xpY3koX1dLV2ViR0xMb2FkUG9saWN5
IHBvbGkKICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCi12b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5KFdlYlBh
Z2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5KFdl
YlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d1dlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJH
TEFsbG93Q3JlYXRpb24pOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3Qg
V2ViCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAordm9pZCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5Jiwg
Y29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2Fk
UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBpZiAoIW1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVzb2x2ZVdlYkdM
TG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJHTEFsbG93
Q3JlYXRpb24pOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQCiAg
ICAgfQogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGVu
dFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OlVSTCYmIHVybCwg
VmVjdG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZp
Y2F0aW9ucykKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZW50
UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5JiwgVVJMJiYgdXJsLCBWZWN0b3I8U3Ry
aW5nPiYmIGxpc3RJZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4mJiBub3RpZmljYXRpb25zKQog
ewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdVUkxDb250ZW50UnVsZUxpc3RJZGVudGlmaWVyc05vdGlmaWNhdGlvbnMpCiAgICAg
ICAgIHJldHVybjsKQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmCiAg
ICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNv
cmU6OlVSTCB1cmwoV2ViQ29yZTo6VVJMKCksIHVybFN0cmluZyk7CisgICAgVVJMIHVybChVUkwo
KSwgdXJsU3RyaW5nKTsKIAogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0
ZS5tX3dlYlZpZXcgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOnVybCBkZWxheTpkZWxh
eV07CiB9CkBAIC05NzIsNyArOTcyLDcgQEAgUmVmUHRyPEFQSTo6RGF0YT4gTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVAKICAgICBy
ZXR1cm4gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhkYXRhKTsKIH0KIAotUmVmUHRy
PEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmIHBhZ2UsIHVuc2lnbmVkIGtl
eVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1JlZlB0cjxBUEk6OlN0cmluZz4gTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmco
V2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxB
UEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8g
V2ViS2l0VGVzdFJ1bm5lciB1c2VzIEMgQVBJLiBIZW5jZSwgbm8gU1BJIGlzIHByb3ZpZGVkIHRv
IG92ZXJyaWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24uCiAgICAgcmV0dXJuIEFQSTo6U3RyaW5n
OjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNp
emVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwgdXJsKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1t
CmluZGV4IDA4N2FjNjU0OTMzM2ExNDBhZjUzOWVhNDA0Yjk2ZmExZWVjZjM0OTQuLjA0ZGZkNWQ0
NGQ2ZTQ4MzExZGRjMmYyZmU3NDE2OWY0NDhjNWIzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tCkBAIC0z
MSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIEhBVkUoU0FGRV9CUk9XU0lO
RykKLVNhZmVCcm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNvcmU6OlVSTCYm
IHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorU2FmZUJyb3dzaW5nUmVzdWx0
OjpTYWZlQnJvd3NpbmdSZXN1bHQoVVJMJiYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpy
ZXN1bHQpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX3Byb3ZpZGVyKFtyZXN1
bHQgcHJvdmlkZXJdKQogICAgICwgbV9pc1BoaXNoaW5nKFtyZXN1bHQgaXNQaGlzaGluZ10pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJl
dmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCBhN2RhZDQ4MTUyNjFhOThjNmMxMWQzNDQ4ZjNk
YjIxODEzMWE2MmRhLi45OGJkYzI3OTY0YTU2OWE3Nzk4YzE5YzdiNWFhYzJjNzRlNmQ1OWY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3Rl
bVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTEwNSw3ICsxMDUsNyBAQCAtICh2b2lkKXNl
dFByb2dyZXNzOihmbG9hdClwcm9ncmVzcwogICAgICAgICBbX2l0ZW0gc2V0UHJldmlld0l0ZW1Q
cm92aWRlclByb2dyZXNzOkAocHJvZ3Jlc3MpXTsKIH0KIAotLSAodm9pZClmaW5pc2g6KFdlYkNv
cmU6OlVSTCl1cmwKKy0gKHZvaWQpZmluaXNoOihVUkwpdXJsCiB7CiAgICAgaWYgKHNlbGYuY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHNlbGYuY29tcGxldGlvbkhhbmRsZXIoKE5TVVJMKil1
cmwsIG5pbCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxl
cjo6dXBkYXRlUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCiAgICAgICAgIFttX3FsUHJldmlld0Nv
bnRyb2xsZXJEYXRhU291cmNlIHNldFByb2dyZXNzOnByb2dyZXNzXTsKIH0KIAotdm9pZCBTeXN0
ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmluaXNoKFdlYkNvcmU6OlVSTCB1cmwpCit2b2lkIFN5c3Rl
bVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2goVVJMIHVybCkKIHsKICAgICBpZiAobV9xbFByZXZp
ZXdDb250cm9sbGVyRGF0YVNvdXJjZSkKICAgICAgICAgW21fcWxQcmV2aWV3Q29udHJvbGxlckRh
dGFTb3VyY2UgZmluaXNoOnVybF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKaW5kZXggMzNmMGE5YzJjZDI2MTI1NzFlMjg2ZDU3NjczZWI3MDQwNGQwMDFiMi4u
NmNmYjQ0M2E5NTg4NjU1NmYwOTg2MDg3MDQ0ZTQyMDI2ZDNmYTlhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNz
IFVJRGVsZWdhdGUgewogICAgICAgICB2b2lkIHRvb2xiYXJzQXJlVmlzaWJsZShXZWJQYWdlUHJv
eHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICAgICAgYm9vbCBydW5PcGVu
UGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRFeGNlZWRCYWNrZ3Jv
dW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdlYlBhZ2VQcm94eSYsIFdLUmVzb3Vy
Y2VMaW1pdCkgZmluYWw7Ci0gICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0Zv
bGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CisgICAgICAgIHZvaWQg
c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6
OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpEYXRhJikgZmlu
YWw7CiAjZW5kaWYKICAgICAgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1cml0eU9y
aWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5JikgZmluYWw7CiAgICAgICAgIGJvb2wgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3Jp
Z2luKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwg
QVBJOjpTZWN1cml0eU9yaWdpbiYsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5JikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCAz
ZWNlODIwZWQ0YjMxNjQzNjkzZjUyMjQ3ZWRhZDljNjhiODFmZjYwLi5mOTE3YWE1ZjdhMTE4YjIy
ZDhlYjIyNTU4MzRjNmM5Y2NjZGNkYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUubW0KQEAgLTUxLDggKzUxLDggQEAKICNpbXBvcnQgIl9XS0ZyYW1lSGFu
ZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRlc3RSZXN1bHRJbnRlcm5hbC5oIgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lm
IFBMQVRGT1JNKElPUykKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVEZXZpY2UuaD4K
QEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQ
YWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZvPgogCiAgICAgYXV0byB1
c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZp
dHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogICAg
IGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoc291cmNlRnJhbWVJbmZv
LT5yZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpOwotICAgIGF1dG8gYXBpTmF2aWdhdGlv
bkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9w
dCwgV1RGTW92ZShyZXF1ZXN0KSwgV2ViQ29yZTo6VVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywg
V1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAgICBhdXRvIGFwaU5hdmlnYXRpb25B
Y3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25B
Y3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQs
IFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNl
ckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICBhdXRvIGFwaVdpbmRvd0ZlYXR1cmVzID0gQVBJ
OjpXaW5kb3dGZWF0dXJlczo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzKTsKIApAQCAtNzg3LDcgKzc4
Nyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3dQYWdlKFdlYlBhZ2VQcm94eSop
CiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3Nob3dXZWJWaWV3Om1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogICAgIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBX
VEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKQor
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRl
cihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJ
OjpEYXRhJiBkYXRhKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGlu
Z1VSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtODY1LDggKzg2NSw4IEBAIHN0YXRpYyB2b2lkIHJl
cXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcyhjb25zdCBXZWJGcmFtZVByb3h5
JiBmcmFtZSwKICAgICB9KTsKIAogICAgIGNvbnN0IFdlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9
IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCk7Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RGcmFt
ZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJhbWUudXJsKCkpOwotICAgIFdlYkNvcmU6OlVSTCBtYWlu
RnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOworICAgIFVSTCByZXF1
ZXN0RnJhbWVVUkwoVVJMKCksIGZyYW1lLnVybCgpKTsKKyAgICBVUkwgbWFpbkZyYW1lVVJMKFVS
TCgpLCBtYWluRnJhbWUtPnVybCgpKTsKIAogICAgIF9XS0NhcHR1cmVEZXZpY2VzIGRldmljZXMg
PSAwOwogICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzQXVkaW9DYXB0dXJlKCkpCkBAIC05NzMsOCAr
OTczLDggQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSwKIAogICAgIFdLV2ViVmlldyAqd2ViVmll
dyA9IG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXc7CiAgICAgY29uc3QgV2ViRnJhbWVQcm94eSogbWFp
bkZyYW1lID0gZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKTsKLSAgICBXZWJDb3JlOjpVUkwgcmVx
dWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBmcmFtZS51cmwoKSk7Ci0gICAgV2ViQ29yZTo6
VVJMIG1haW5GcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgbWFpbkZyYW1lLT51cmwoKSk7CisgICAg
VVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgZnJhbWUudXJsKCkpOworICAgIFVSTCBtYWluRnJh
bWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogCiAgICAgYXV0byBkZWNpc2lvbkhhbmRs
ZXIgPSBCbG9ja1B0cjx2b2lkKE5TU3RyaW5nICosIEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtwcm90
ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0
aG9yaXplZCkgewogICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5zZXRVc2VyTWVkaWFBY2Nlc3NJ
bmZvKFN0cmluZyhzYWx0KSwgYXV0aG9yaXplZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5
QXR0ZW1wdGVyLm1tCmluZGV4IDVmOTlhZWM4NWRhNzUyNGJhMDQxZTc1ZWIwODAxNzM5OTA0OWIy
MTIuLmFlNTc2NWU0OGU3MWI4N2ZmNjBkMTQwNWMzYzdhMzM3MjUxNWNhMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5
QXR0ZW1wdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2Fk
RnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCkBAIC02OSw3ICs2OSw3IEBAIC0gKEJPT0wp
YXR0ZW1wdFJlY292ZXJ5CiAgICAgaWYgKCF3ZWJGcmFtZVByb3h5KQogICAgICAgICByZXR1cm4g
Tk87CiAKLSAgICB3ZWJGcmFtZVByb3h5LT5sb2FkVVJMKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgX3VybFN0cmluZykpOworICAgIHdlYkZyYW1lUHJveHktPmxvYWRVUkwoVVJMKFVSTCgp
LCBfdXJsU3RyaW5nKSk7CiAgICAgcmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRl
eCBhZTY0NzA3ZGExNTFjMjJiYzM4MzlkYWI0YWY3ZTc0MDE0ZTAyMjBlLi41ZmQ1YjkwY2Q0OWRi
NDdkOGU3YzMwNmZjNDg2YjNiZTMxMmQ4MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMzMsNyAr
MzMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkSXRlbUluZm8uaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNWFhZGNmNjdkMTVlMGZm
NGE3NzQxYjg1ZTlkZTI3YTQ5NzIyMjlmMi4uYmNiZjUzNzZiMWEzZWJlYjQ3ZjgzYjMyODM4ZDIx
NGRkNzBiNzFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KQEAgLTQwNjYsNyArNDA2Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OndyaXRlVG9VUkxG
b3JGaWxlUHJvbWlzZVByb3ZpZGVyKE5TRmlsZVByb21pc2VQcm92aWRlciAqcHJvdmlkCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpVUkwgYmxvYlVSTCB7IGluZm8uYmxv
YlVSTCB9OworICAgIFVSTCBibG9iVVJMIHsgaW5mby5ibG9iVVJMIH07CiAgICAgaWYgKGJsb2JV
UkwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYktpdFVua25vd25F
cnJvcigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggZTA3YWFjODk2MDM4MTU2MWE3MmNhNTRi
NzU1NzM5Mjc5ODVlMzQwYy4uNDc3MzZmMDZkZjgyODY4ZmUzYmNiZGNkMDgxMGNlZWNmZGQ2ZGIz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQcm90ZWN0aW9u
U3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNs
YXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NSw4ICs3NCw4IEBAIGNsYXNz
IERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpEb3dubG9hZD4sIHB1YmxpCiAgICAgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2UoKSBj
b25zdDsKICAgICB2b2lkIHNldE9yaWdpbmF0aW5nUGFnZShXZWJQYWdlUHJveHkqKTsKIAotICAg
IHZvaWQgc2V0UmVkaXJlY3RDaGFpbihWZWN0b3I8V2ViQ29yZTo6VVJMPiYmIHJlZGlyZWN0Q2hh
aW4pIHsgbV9yZWRpcmVjdENoYWluID0gV1RGTW92ZShyZWRpcmVjdENoYWluKTsgfQotICAgIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiByZWRpcmVjdENoYWluKCkgY29uc3QgeyByZXR1cm4g
bV9yZWRpcmVjdENoYWluOyB9CisgICAgdm9pZCBzZXRSZWRpcmVjdENoYWluKFZlY3RvcjxVUkw+
JiYgcmVkaXJlY3RDaGFpbikgeyBtX3JlZGlyZWN0Q2hhaW4gPSBXVEZNb3ZlKHJlZGlyZWN0Q2hh
aW4pOyB9CisgICAgY29uc3QgVmVjdG9yPFVSTD4mIHJlZGlyZWN0Q2hhaW4oKSBjb25zdCB7IHJl
dHVybiBtX3JlZGlyZWN0Q2hhaW47IH0KIAogICAgIHZvaWQgc2V0V2FzVXNlckluaXRpYXRlZChi
b29sIHZhbHVlKSB7IG1fd2FzVXNlckluaXRpYXRlZCA9IHZhbHVlOyB9CiAgICAgYm9vbCB3YXNV
c2VySW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNVc2VySW5pdGlhdGVkOyB9CkBAIC0x
MjYsNyArMTI1LDcgQEAgY2xhc3MgRG93bmxvYWRQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRvd25sb2FkPiwgcHVibGkKICAgICB1aW50NjRfdCBtX2J5
dGVzTG9hZGVkIHsgMCB9OwogCiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1fb3JpZ2luYXRp
bmdQYWdlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IG1fcmVkaXJlY3RDaGFpbjsKKyAgICBW
ZWN0b3I8VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9vbCBtX3dhc1VzZXJJbml0aWF0ZWQg
eyB0cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFt
ZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5j
cHAKaW5kZXggOWZlM2M3NjU2MWIyNTU3MTZhNDViYmEzOGZlOTk1YTAwNTk3N2ZmYi4uNzJmNGY3
MjQ1NWE3ZWI4YTY1YjllNTI3ZTU1YTFmODIxYWNlMDhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcApAQCAtMzIsNyArMzIsNyBAQCBGcmFtZUxvYWRTdGF0
ZTo6fkZyYW1lTG9hZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIEZyYW1lTG9h
ZFN0YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAgICBB
U1NFUlQobV9wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwogCkBAIC00MCw3ICs0MCw3IEBAIHZv
aWQgRnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXJsKQogICAgIG1fcHJvdmlzaW9uYWxVUkwgPSB1cmw7CiB9CiAKLXZvaWQgRnJhbWVM
b2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NF
UlQobV9zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwpOwogCkBAIC04MSwxMiArODEsMTIgQEAg
dm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkRmFpbExvYWQoKQogICAgIG1fc3RhdGUgPSBTdGF0ZTo6
RmluaXNoZWQ7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1bWVudE5vdGlm
aWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6OmRp
ZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX3VybCA9
IHVybDsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6c2V0VW5yZWFjaGFibGVVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6OnNldFVu
cmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwpCiB7CiAgICAgbV9sYXN0VW5y
ZWFjaGFibGVVUkwgPSBtX3VucmVhY2hhYmxlVVJMOwogICAgIG1fdW5yZWFjaGFibGVVUkwgPSB1
bnJlYWNoYWJsZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1l
TG9hZFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5oCmlu
ZGV4IDk4YzMyNWU4NDQzNmVkYWU0ZGNmNjM5ZDE0MDc2ZGE5ODM1MzZjMTIuLmM2NTAwMDNmZmI1
ZjBiNjg4NWMxM2YzMjZiZDJmYjRmZDI2YzlkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RnJhbWVMb2FkU3RhdGUuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtMzksMjkgKzM5LDI5IEBAIGNsYXNzIEZyYW1lTG9hZFN0YXRlIHsKICAg
ICAgICAgRmluaXNoZWQKICAgICB9OwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZCgpOwogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWlsTG9hZCgpOwogCi0gICAgdm9pZCBk
aWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9p
ZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgVVJMJik7CiAKICAgICBTdGF0ZSBz
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiBw
cm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0KKyAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiBw
cm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0KIAotICAg
IHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgY29uc3Qg
V2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZWFjaGFi
bGVVUkw7IH0KKyAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYpOworICAgIGNv
bnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3VucmVhY2hhYmxlVVJM
OyB9CiAKIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpGaW5pc2hlZCB9Owot
ICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKLSAgICBXZWJDb3JlOjpVUkwgbV9wcm92aXNpb25hbFVS
TDsKLSAgICBXZWJDb3JlOjpVUkwgbV91bnJlYWNoYWJsZVVSTDsKLSAgICBXZWJDb3JlOjpVUkwg
bV9sYXN0VW5yZWFjaGFibGVVUkw7CisgICAgVVJMIG1fdXJsOworICAgIFVSTCBtX3Byb3Zpc2lv
bmFsVVJMOworICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOworICAgIFVSTCBtX2xhc3RVbnJlYWNo
YWJsZVVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXgg
MGU5MjE4MzMyN2FiZjg3YWJiNjIwNjcwN2U2YWU1OGE2NTZhYjViNC4uMTgxYTllMjRhZTVlZjY3
NmQ2OThhNmY0MjVkZTk5N2Q1ODM4OGVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01MzYsNyArNTM2
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc0RpZFJlc3VtZSgpCiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzRGlkUmVzdW1lKCks
IDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndyaXRlQmxvYlRvRmlsZVBhdGgo
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghY2Fu
U2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4
IDI1NTg5N2U3ZTgyNWUxN2I4M2U4YjE0NjRiNDgwOTE3NTZlYTMwMDcuLjRkYmJiNmZlZTA2MmZm
NWUwOGJmMTNjMDc3MzE1MjA4ZTk5NTM0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMyw4ICsyMyw3IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBOZXR3
b3JrUHJvY2Vzc1Byb3h5X2gKLSNkZWZpbmUgTmV0d29ya1Byb2Nlc3NQcm94eV9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJDaGls
ZFByb2Nlc3NQcm94eS5oIgpAQCAtNDksNyArNDgsNiBAQCBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZTsKIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVVJMOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsK
IH0KIApAQCAtODcsNyArODUsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5IGZpbmFsIDog
cHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJvdAogICAgIHZvaWQg
cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCi0gICAgdm9pZCB3cml0ZUJs
b2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCB3cml0ZUJs
b2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CiAKICAgICB2b2lkIHByb2Nlc3NSZWFkeVRv
U3VzcGVuZCgpOwogICAgIApAQCAtMjAzLDUgKzIwMSwzIEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNz
UHJveHkgZmluYWwgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzUHJveHksIHByaXZhdGUgUHJvY2Vzc1Ro
cm90CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIE5ldHdvcmtQcm9j
ZXNzUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRT
dGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAppbmRl
eCAxNzU5ZjhhNDkzNjdkMDUyZTVmY2FlNTE3M2RhMjY3MjUzOTdmNjYwLi4yZWQxMDc1YzYwMGVi
ZGRlYTVlNGZmNTRmYWE5MWRkZDVmNWJlMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlTG9hZFN0YXRlLmNwcApAQCAtMjA2LDkgKzIwNiw5IEBAIGJvb2wgUGFnZUxvYWRTdGF0ZTo6
aGFzT25seVNlY3VyZUNvbnRlbnQoY29uc3QgRGF0YSYgZGF0YSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKGRhdGEuc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKQotICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhkYXRhLnByb3Zpc2lvbmFsVVJMLCAiaHR0cHMi
KTsKKyAgICAgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJcyhkYXRhLnByb3Zpc2lvbmFsVVJMLCAi
aHR0cHMiKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzKGRhdGEudXJsLCAiaHR0
cHMiKTsKKyAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzKGRhdGEudXJsLCAiaHR0cHMiKTsKIH0K
IAogYm9vbCBQYWdlTG9hZFN0YXRlOjpoYXNPbmx5U2VjdXJlQ29udGVudCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAK
aW5kZXggMjMxMDc1YWMzNTk5YmFkMWQxOWFkNGQ3YzQyZmM3MmZmOThjZGEwMy4uNTEzMmI4M2Jm
YWFhYTEzZjQ3NmE2NjM2NTFjZDM2MjAwNjY0YWVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMzEsMTAgKzMxLDEw
IEBACiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTUlN
RVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3
dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5J
bmZvU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0
b3JlLmgKaW5kZXggNmU5ZWVmYzhmNWY0MzhhZTg5YTJmMjVhYzg4MmI1NTA3ZmVlMWIzNC4uNTU1
OTdmMzQ0YmY1MTM5YjlmNTY3M2MzMGY4OGM3MjgxNTdhZjk5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oCkBAIC0zMSwxMCArMzEs
NiBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLWNsYXNzIFVSTDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBsdWdp
bkluZm9TdG9yZTsKQEAgLTUzLDcgKzQ5LDcgQEAgY2xhc3MgUGx1Z2luSW5mb1N0b3JlIHsKICAg
ICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZvciBhIHBsdWctaW4gdGhhdCBjYW4gaGFuZGxlIHRoZSBn
aXZlbiBNSU1FIHR5cGUuCiAgICAgLy8gSWYgdGhlIE1JTUUgdHlwZSBpcyBudWxsLCB0aGUgZmls
ZSBleHRlbnNpb24gb2YgdGhlIGdpdmVuIHVybCB3aWxsIGJlIHVzZWQgdG8gaW5mZXIgdGhlCiAg
ICAgLy8gcGx1Zy1pbiB0eXBlLiBJbiB0aGF0IGNhc2UsIG1pbWVUeXBlIHdpbGwgYmUgZmlsbGVk
IGluIHdpdGggdGhlIHJpZ2h0IE1JTUUgdHlwZS4KLSAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQ
bHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6UGx1
Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzID0gV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsUGx1
Z2lucyk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luKFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFVSTCYsIFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBlcyA9IFdl
YkNvcmU6OlBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgaW5m
byBmb3IgdGhlIHBsdWctaW4gd2l0aCB0aGUgZ2l2ZW4gYnVuZGxlIGlkZW50aWZpZXIuCiAgICAg
UGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luV2l0aEJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBidW5kbGVJZGVudGlmaWVyKTsKQEAgLTYzLDcgKzU5LDcgQEAgY2xhc3MgUGx1Z2luSW5m
b1N0b3JlIHsKIAogICAgIHN0YXRpYyBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGRlZmF1bHRMb2Fk
UG9saWN5Rm9yUGx1Z2luKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKIAotICAgIGJvb2wgaXNT
dXBwb3J0ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJM
JiBwbHVnaW5VUkwsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcGFnZVVSTCk7CisgICAgYm9vbCBpc1N1cHBvcnRlZFBsdWdpbihjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBVUkwmIHBsdWdpblVSTCwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0
cmluZywgY29uc3QgVVJMJiBwYWdlVVJMKTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cnMoKTsKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBsdWdpbihTdHJpbmcmJiBtYXRjaGluZ0RvbWFp
biwgU3RyaW5nJiYgaWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmc+JiYgbWltZVR5cGVzLCBIYXNo
U2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7CiAgICAgdm9pZCBjbGVhclN1cHBvcnRlZFBsdWdpbnMo
KSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9IHN0ZDo6bnVsbG9wdDsgfQpAQCAtMTA0LDcgKzEwMCw3
IEBAIGNsYXNzIFBsdWdpbkluZm9TdG9yZSB7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtaW1l
VHlwZXM7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBleHRlbnNpb25zOwogICAgIH07Ci0gICAg
c3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3VwcG9ydGVkUGx1Z2luJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBwbHVnaW5VUkwpOworICAg
IHN0YXRpYyBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0IFN1cHBvcnRlZFBsdWdpbiYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1Z2luVVJMKTsKIAogICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbj4+IG1fc3VwcG9ydGVkUGx1Z2luczsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Q
cm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9Q
bHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggZDkwZjBhOWVhMDc0ZjZmNWY5MWJkYmFhNjY3
YmUwMjIyZTU4MjczOS4uZmFlY2YzMWRmNzk1ZDMxNjM4NjQ5ZDIyNDM4MDdjZjk3NWIyYzU0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJv
Y2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFj
L1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMzQsMTIgKzM0LDEyIEBACiAjaW1wb3J0ICJT
YW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBUmVtb3RlTGF5ZXJTZXJ2
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPGNydF9leHRlcm5zLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHNwYXduLmg+CiAj
aW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2lt
cG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBAaW50ZXJmYWNlIFdLUGxhY2Vob2xkZXJNb2Rh
bFdpbmRvdyA6IE5TV2luZG93IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U2FmZUJyb3dzaW5nUmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3Np
bmdSZXN1bHQuaAppbmRleCA3OTNiZjRiYTRhZjczZGEyMGJkOTU3YTRiZmMwMzEyNWRmM2M3Nzc2
Li4zNDIyMDQ3YWIyMDgwYjY5YmNiYjhkMzM4MzhhNzJkOGNhZTk5NmE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaApAQCAtMjUsOCArMjUsOCBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgU1NCU2VydmljZUxvb2t1cFJlc3VsdDsKQEAgLTM2
LDEyICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFNhZmVCcm93c2luZ1Jlc3Vs
dCA6IHB1YmxpYyBSZWZDb3VudGVkPFNhZmVCcm93c2luZ1Jlc3VsdD4gewogcHVibGljOgogI2lm
IEhBVkUoU0FGRV9CUk9XU0lORykKLSAgICBzdGF0aWMgUmVmPFNhZmVCcm93c2luZ1Jlc3VsdD4g
Y3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0
KQorICAgIHN0YXRpYyBSZWY8U2FmZUJyb3dzaW5nUmVzdWx0PiBjcmVhdGUoVVJMJiYgdXJsLCBT
U0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTYWZlQnJvd3NpbmdSZXN1bHQoV1RGTW92ZSh1cmwpLCByZXN1bHQpKTsKICAg
ICB9CiAjZW5kaWYKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQog
ICAgIGNvbnN0IFN0cmluZyYgcHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyOyB9
CiAgICAgYm9vbCBpc1BoaXNoaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BoaXNoaW5nOyB9CiAg
ICAgYm9vbCBpc01hbHdhcmUoKSBjb25zdCB7IHJldHVybiBtX2lzTWFsd2FyZTsgfQpAQCAtNTAs
OSArNTAsOSBAQCBjbGFzcyBTYWZlQnJvd3NpbmdSZXN1bHQgOiBwdWJsaWMgUmVmQ291bnRlZDxT
YWZlQnJvd3NpbmdSZXN1bHQ+IHsKIAogcHJpdmF0ZToKICNpZiBIQVZFKFNBRkVfQlJPV1NJTkcp
Ci0gICAgU2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNvcmU6OlVSTCYmLCBTU0JTZXJ2aWNlTG9va3Vw
UmVzdWx0ICopOworICAgIFNhZmVCcm93c2luZ1Jlc3VsdChVUkwmJiwgU1NCU2VydmljZUxvb2t1
cFJlc3VsdCAqKTsKICNlbmRpZgotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKKyAgICBVUkwgbV91
cmw7CiAgICAgU3RyaW5nIG1fcHJvdmlkZXI7CiAgICAgYm9vbCBtX2lzUGhpc2hpbmcgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9pc01hbHdhcmUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggOGJjNGE3NTNmYTc2NzNkNDEx
YjliNGNmNWI1NDQyOTc5ZDY5MzIwNC4uMmVhNzlmODJkMTM5ZTFkYjVlMjcxODFlNDI1YzllZWUx
NTE4ZTIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGll
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5
c3RlbVByZXZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlci5oCmluZGV4IDk0OWM4ZGY3MjFlZDllZDM1YTdkYTY4ZWM3Y2Y5MTI3
OWVmOTBhMzEuLjI2OWQwYzMyZmIzMjA4NGI1N2U3ZDE2YjBjY2YyNWNlZjc0ZjljMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaApA
QCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgVVNF
KFFVSUNLX0xPT0spCiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnRyb2xsZXI7CkBAIC01MCw3ICs1
MCw3IEBAIGNsYXNzIFN5c3RlbVByZXZpZXdDb250cm9sbGVyIHsKIAogICAgIHZvaWQgc3RhcnQo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZv
aWQgdXBkYXRlUHJvZ3Jlc3MoZmxvYXQpOwotICAgIHZvaWQgZmluaXNoKFdlYkNvcmU6OlVSTCk7
CisgICAgdm9pZCBmaW5pc2goVVJMKTsKICAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZvaWQgZmFp
bChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggZTMzMTY3YTg5NTBjMTY4ZjAx
YzAzMmNlYjllNWY4Zjk4MWU1MTM4MC4uOWYyNDBkMzAyMWVkZjg2YzdjYWVkN2U4MTQ1OTUxZGVk
MzI2MGUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmgKQEAgLTcxLDEwICs3MSwxMCBAQCBjbGFzcyBXZWJDb29raWVNYW5hZ2VyUHJveHkg
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb29raWVNYQogICAg
IHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQsIFdhbGxU
aW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lk
IHNldENvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgRnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgc2V0Q29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248
dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgc2V0Q29va2llcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBVUkwmLCBj
b25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CiAKICAgICB2b2lkIGdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIEZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZ2V0Q29va2llcyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgdm9pZCBzZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9saWN5LCBGdW5j
dGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChIVFRQQ29va2ll
QWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggMjk3YWE4YWYzMjU1YjBkYWY0YzQ3M2FlNzczZTcw
ZGFjNjliNDVjOC4uNDk3YjIzMTdiN2RjZjE2NmY3MWRjNDAwZTVmZjc4ZmQwZWExZGMzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtODAsMTQgKzgwLDE0IEBA
IGNsYXNzIFdlYkZyYW1lUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpGcmFtZT4gewogCiAgICAgRnJhbWVMb2FkU3RhdGUmIGZyYW1lTG9hZFN0YXRlKCkg
eyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZTsgfQogCi0gICAgdm9pZCBsb2FkVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpOworICAgIHZvaWQgbG9hZFVSTChjb25zdCBVUkwmKTsKICAgICB2b2lkIHN0
b3BMb2FkaW5nKCkgY29uc3Q7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpV
UkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS5wcm92
aXNpb25hbFVSTCgpOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lTG9hZFN0YXRlLnVybCgpOyB9CisgICAgY29uc3QgVVJMJiBwcm92aXNpb25hbFVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUucHJvdmlzaW9uYWxVUkwoKTsgfQogCi0gICAg
dm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBjb25zdCBX
ZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRT
dGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CisgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25z
dCBVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CiAKICAgICBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9NSU1FVHlwZTsgfQogICAgIGJvb2wgY29udGFp
bnNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNQbHVnaW5Eb2N1bWVu
dDsgfQpAQCAtMTA4LDEzICsxMDgsMTMgQEAgY2xhc3MgV2ViRnJhbWVQcm94eSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkZyYW1lPiB7CiAgICAgdm9pZCBnZXRN
YWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0YShBUEk6OlVSTCosIEZ1bmN0aW9u
PHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAotICAgIHZvaWQg
ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6
VVJMJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBV
UkwmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKICAgICB2b2lkIGRpZENv
bW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgV2ViQ2VydGlmaWNhdGVJbmZvJiwg
Ym9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50KTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoKTsK
ICAgICB2b2lkIGRpZEZhaWxMb2FkKCk7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOyAvLyBlZy4gYW5jaG9yIG5hdmlnYXRpb24sIHNlc3Np
b24gc3RhdGUgY2hhbmdlLgorICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25z
dCBVUkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRlIGNoYW5nZS4K
ICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgVmVjdG9yPFJlZjxTYWZlQnJvd3NpbmdSZXN1
bHQ+PiYmKT4mJiwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDg0NDIwYTEzNTc0OWM0OWYy
M2Q4ZTJjNDkwYzhkZDk0NzZjZDMzN2YuLjU1NGU3NDQ4ZWM0YWNmODY5NzNkMjZiOWRhMDBhZDFj
NjNiY2Q5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
aApAQCAtNTAsMTAgKzUwLDYgQEAgT0JKQ19DTEFTUyBXS0luc3BlY3RvclZpZXdDb250cm9sbGVy
OwogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1j
bGFzcyBVUkw7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZVByb3h5
OwpAQCAtMTUxLDcgKzE0Nyw3IEBAIGNsYXNzIFdlYkluc3BlY3RvclByb3h5CiAgICAgc3RhdGlj
IFN0cmluZyBpbnNwZWN0b3JQYWdlVVJMKCk7CiAgICAgc3RhdGljIFN0cmluZyBpbnNwZWN0b3JU
ZXN0UGFnZVVSTCgpOwogICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yQmFzZVVSTCgpOwotICAg
IHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdEluc3BlY3RvclBhZ2UoY29uc3QgV2ViQ29yZTo6VVJM
Jik7CisgICAgc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShjb25zdCBVUkwm
KTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtV2luZG93V2lkdGg7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1XaW5kb3dIZWlnaHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkuY3BwCmluZGV4IDNhNTk0YmI3YjRhMjYwYjk0YjA4ZmZjYmVkYzJhZWNhY2U5NDFhZDcuLjAy
ODEyY2Y3ZmJlN2I0ZTU2ZjI3NTc5MmVmMjk0MGQ5ZWVmZDg2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRl
ICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggNDIyZjI2YWVhMTg0OGE0MDlhODI4N2MzMjY1NjViM2YzZWQxMzdjMC4uODg2
YmMyYmQxMzNjNjM5YTBkMGNlNGE3ZGZlOGUzYzZiNDA2Nzc0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTMsMTMgKzE1MywxMyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApA
QCAtMTA3MSw3ICsxMDcxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKIAogICAgIGF1dG8g
dHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAotICAgIG1fcGFn
ZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJhc2VVUkwu
aXNFbXB0eSgpID8gYmFzZVVSTCA6IGJsYW5rVVJMKCkuc3RyaW5nKCkpOworICAgIG1fcGFnZUxv
YWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJhc2VVUkwuaXNF
bXB0eSgpID8gYmFzZVVSTCA6IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSk7CiAKICAgICBpZiAo
IWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKQEAgLTEwOTIsNyAr
MTA5Miw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgcmV0dXJuIFdURk1vdmUobmF2
aWdhdGlvbik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFi
bGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgYm9vbCBmb3JTYWZlQnJvd3NpbmcpCit2b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBj
b25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIGJvb2wgZm9y
U2FmZUJyb3dzaW5nKQogewogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUgcHJv
Y2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0dGVt
cHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQgYXMgdGhp
cyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCkBAIC0xMTQxLDcg
KzExNDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0
YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogICAgICAgICByZWF0dGFjaFRvV2Vi
UHJvY2VzcygpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFu
c2FjdGlvbigpOwotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0
cmFuc2FjdGlvbiwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgbV9wYWdlTG9hZFN0YXRlLnNl
dFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5n
KCkpOwogCiAgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBhcmFt
ZXRlcnMubmF2aWdhdGlvbklEID0gMDsKQEAgLTExNjAsNyArMTE2MCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcm
IHVybCwgSW50UG9pCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChXZWJDb3JlOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnBy
b3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaXNW
YWxpZCgpKQpAQCAtMzUwNiw3ICszNTA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ry
b3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKICAgICBtX25hdmlnYXRpb25TdGF0
ZS0+ZGlkRGVzdHJveU5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJiB1cmwsIFdlYkNvcmU6OlVSTCYm
IHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC0zNjA0LDcgKzM2MDQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQog
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENhbmNlbENsaWVudFJlZGlyZWN0KCp0aGlz
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIFdlYkNvcmU6OlVSTCYmIHVybCkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90LCBVUkwmJiB1cmwpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtMzg3NCw3ICszODc0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBXZWJDb3Jl
OjpVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNs
aWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI0MSw3ICs0MjQx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJDb3JlOjpVUkwmJiB1cmwsIFZl
Y3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9u
cykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oVVJMJiYg
dXJsLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiYmIG5vdGlm
aWNhdGlvbnMpCiB7CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZW50UnVsZUxpc3ROb3Rp
ZmljYXRpb24oKnRoaXMsIFdURk1vdmUodXJsKSwgV1RGTW92ZShpZGVudGlmaWVycyksIFdURk1v
dmUobm90aWZpY2F0aW9ucykpOwogfQpAQCAtNTk1Miw3ICs1OTUyLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNv
bikKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAobV9wcm9jZXNzLT5pc1VuZGVyTWVtb3J5
UHJlc3N1cmUoKSkgewotICAgICAgICBTdHJpbmcgZG9tYWluID0gV2ViQ29yZTo6dG9wUHJpdmF0
ZWx5Q29udHJvbGxlZERvbWFpbihXZWJDb3JlOjpVUkwoeyB9LCBjdXJyZW50VVJMKCkpLmhvc3Qo
KS50b1N0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIGRvbWFpbiA9IFdlYkNvcmU6OnRvcFByaXZh
dGVseUNvbnRyb2xsZWREb21haW4oVVJMKHsgfSwgY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJp
bmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGxvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aEVuaGFuY2VkUHJpdmFjeShXZWJDb3JlOjpEaWFnbm9zdGljTG9n
Z2luZ0tleXM6OmRvbWFpbkNhdXNpbmdKZXRzYW1LZXkoKSwgZG9tYWluLCBXZWJDb3JlOjpTaG91
bGRTYW1wbGU6Ok5vKTsKICAgICB9CkBAIC03MDMxLDcgKzcwMzEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwg
Ym9vbCYgc3VjYwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcm
IGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0
KQordm9pZCBXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1
bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25z
dCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNzY3Niw5ICs3Njc2LDkgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYgaGFu
ZGxlciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgYXV0byBjYW5vbmljYWxpemVkU2No
ZW1lID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUpOworICAgIGF1
dG8gY2Fub25pY2FsaXplZFNjaGVtZSA9IFdURjo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6
ZVNjaGVtZShzY2hlbWUpOwogICAgIEFTU0VSVChjYW5vbmljYWxpemVkU2NoZW1lKTsKLSAgICBB
U1NFUlQoIVVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFs
dWUoKSkpOworICAgIEFTU0VSVCghV1RGOjpVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZShjYW5v
bmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKIAogICAgIGF1dG8gc2NoZW1lUmVzdWx0ID0gbV91
cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lLmFkZChjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCks
IGhhbmRsZXIuZ2V0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoc2NoZW1lUmVzdWx0LCBzY2hlbWVS
ZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IGU2NmM1NGE4YTMyNTgzYmJmNzhiMGI3M2Y3YWQ5YTNjZWNjYzY1NTguLmVlZGE3MTViNzAx
YzE4YWE1ZjMyMzVhY2NmODdiZjc4ZTNjOTFiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC04Myw3ICs4Myw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQ
b3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2luZy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC05NSw2ICs5
NCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtNDY0LDcgKzQ2NCw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gbG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNl
RGlyZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJp
bmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwotICAgIHZvaWQg
bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyLCBib29s
IGZvclNhZmVCcm93c2luZyA9IGZhbHNlKTsKKyAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFVS
TCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhID0gbnVsbHB0ciwgYm9vbCBmb3JTYWZlQnJvd3NpbmcgPSBmYWxzZSk7CiAgICAgdm9pZCBs
b2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVs
bHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25z
dCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6
SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogCkBAIC0xMDY0LDggKzEwNjQsOCBAQCBjbGFzcyBXZWJQ
YWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdl
PgogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiBy
ZXN1bHQpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBXZWJDb3Jl
OjpVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJik7Ci0gICAgdm9pZCBzYXZlUERGVG9G
aWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFdlYkNvcmU6
OlVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2
b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmls
ZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRh
Jik7CisgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIFVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNhdmVQREZUb1RlbXBvcmFy
eUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25SYXcoY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQp
OwogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBs
aWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJp
bmcmIHBkZlVVSUQpOwpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lk
IHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBib29sJiBzdWNjZWVkZWQs
IFZlY3Rvcjx1aW50OF90PiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hh
bGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7CisgICAg
dm9pZCBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUlu
ZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiwgU3RyaW5nJiBy
ZXN1bHQpOwogCiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCwgV2ViQ29y
ZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CiAKQEAgLTEzNDYsNyArMTM0Niw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBnZXRBcHBs
aWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICNlbmRp
ZgogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgYmxv
YlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYp
OworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JVUkwsIGNvbnN0
IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsKIAogICAgIFdl
YlByZWZlcmVuY2VzU3RvcmUgcHJlZmVyZW5jZXNTdG9yZSgpIGNvbnN0OwogCkBAIC0xNDExLDE3
ICsxNDExLDE3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBkaWRDcmVhdGVTdWJmcmFtZSh1aW50
NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYpOwogCi0gICAgdm9pZCBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBj
b25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBVUkwmJiB1
bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFVz
ZXJEYXRhJik7CiAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSk7CiAgICAgdm9p
ZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpOwotICAg
IHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmKTsKKyAgICB2b2lkIGRpZENoYW5n
ZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJv
dmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0
YSYpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhh
c0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVD
b250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBV
c2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRp
ZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2
b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBl
LCBXZWJDb3JlOjpVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBVUkwmJiwgY29uc3Qg
VXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZU1haW5Eb2N1bWVudCh1aW50NjRfdCBmcmFt
ZUlEKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE0NDgsMTEgKzE0NDgsMTEg
QEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93
TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGJlZ2luU2FmZUJy
b3dzaW5nQ2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5Jik7CisgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIFdlYkZy
YW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCiAgICAgdm9pZCB3aWxsU3VibWl0Rm9ybSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJ
RCwgY29uc3QgVXNlckRhdGEmKTsKICAgICAgICAgCi0gICAgdm9pZCBjb250ZW50UnVsZUxpc3RO
b3RpZmljYXRpb24oV2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMs
IFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7CisgICAgdm9pZCBjb250ZW50UnVsZUxp
c3ROb3RpZmljYXRpb24oVVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3Rv
cjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7CiAKICAgICAvLyBIaXN0b3J5IGNsaWVudAogICAg
IHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRh
dGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwpAQCAtMTQ3Myw4ICsxNDczLDggQEAgY2xhc3Mg
V2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
UGFnZT4KICAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBv
cGFxdWVQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc1BhZ2VV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFn
ZVVSTFN0cmluZyk7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYg
RU5BQkxFKFdFQkdMKQotICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkm
Jik7Ci0gICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJl
cGx5JiYpOworICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBy
ZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJl
c29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOwogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xiYXJzQXJlVmlzaWJsZShib29sIHRvb2xiYXJzQXJl
VmlzaWJsZSk7CiAgICAgdm9pZCBnZXRUb29sYmFyc0FyZVZpc2libGUoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHkmJik7CkBAIC0xNjg3
LDcgKzE2ODcsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQgc2V0UGx1Z2luQ29tcGxleFRleHRJ
bnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB1aW50
NjRfdCBjb21wbGV4VGV4dElucHV0U3RhdGUpOwogI2VuZGlmCiAKLSAgICBib29sIG1heWJlSW5p
dGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgYm9vbCBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKGNvbnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogCiAj
aWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIHZvaWQgdG9nZ2xlU21hcnRJ
bnNlcnREZWxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCBlZmJiNGIxZjg3YzQ3OGZiMDM4MzI2Yjk5NDAyN2YyMmE3ODBk
NWE0Li5jMGQ3ZDgyMTI1NGMzZTdiYTlmYjAzZDllN2Y1YThmMWQ2ZjRlYWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNCw4
ICszNCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgVW5hdmFpbGFibGVQbHVn
aW5CdXR0b25DbGlja2VkKHVpbnQzMl90IHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBTdHJp
bmcgbWltZVR5cGUsIFN0cmluZyBwbHVnaW5VUkxTdHJpbmcsIFN0cmluZyBwbHVnaW5zcGFnZUF0
dHJpYnV0ZVVSTFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcgcGFnZVVSTFN0
cmluZykKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUo
V0VCR0wpCi0gICAgV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQz
Ml90IGxvYWRQb2xpY3kpIERlbGF5ZWQKLSAgICBSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2Vi
Q29yZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKKyAgICBXZWJH
TFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVsYXllZAor
ICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBv
bGljeSkgRGVsYXllZAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICBEaWRDaGFuZ2VWaWV3
cG9ydFByb3BlcnRpZXMoc3RydWN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1
dGVzKQogICAgIERpZFJlY2VpdmVFdmVudCh1aW50MzJfdCB0eXBlLCBib29sIGhhbmRsZWQpCkBA
IC0xMjgsMTEgKzEyOCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZENy
ZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6R2xvYmFsV2luZG93
SWRlbnRpZmllciB3aW5kb3dJZGVudGlmaWVyKQogCiAgICAgIyBGcmFtZSBsb2FkIG1lc3NhZ2Vz
Ci0gICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCB1bnJl
YWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMIHVybCwgVVJMIHVucmVhY2hhYmxlVVJMLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgV2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyB1cmws
IGRvdWJsZSBkZWxheSkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQpCi0gICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwpCisgICAg
RGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwpCiAgICAgRGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJvdmlz
aW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCiAgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBj
ZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAg
IERpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1
aW50MzJfdCB0eXBlLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQorICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5cGUsIFVSTCB1cmwsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ2hhbmdlTWFpbkRvY3VtZW50KHVpbnQ2NF90IGZy
YW1lSUQpOwogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkK
IApAQCAtNDI3LDcgKzQyNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2F2
ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNo
PiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUpIC0+IChW
ZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiByZXN1bHQpCiAKLSAgICBTYXZlUERGVG9GaWxl
SW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBXZWJDb3JlOjpVUkwg
b3JpZ2luYXRpbmdVUkwsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFNhdmVQREZUb0Zp
bGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUsIFVSTCBvcmlnaW5h
dGluZ1VSTCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBTYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9u
KFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIHBkZlVVSUQpCkBAIC00ODcsNyArNDg3LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIERpZFJlc2lnbklucHV0RWxlbWVu
dFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCi0g
ICAgQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYkNvcmU6OlVSTCB1cmwsIFZlY3RvcjxT
dHJpbmc+IGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiBub3RpZmljYXRpb25zKQorICAgIENv
bnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihVUkwgdXJsLCBWZWN0b3I8U3RyaW5nPiBpZGVudGlm
aWVycywgVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9ucykKIAogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCiAgICAgQWRkUGxheWJhY2tUYXJn
ZXRQaWNrZXJDbGllbnQodWludDY0X3QgY29udGV4dElkKQpAQCAtNTQ2LDYgKzU0Niw2IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RvcERpc3BsYXlMaW5rKHVuc2lnbmVkIG9i
c2VydmVySUQpCiAjZW5kaWYKIAotICAgIFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFsbGVuZ2VTdHJpbmcsIFdlYkNvcmU6
OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQorICAgIFNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFsbGVuZ2VTdHJpbmcs
IFVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggODE3NWEzYzY4NWY3NDI3ZjE1NDE0OTVhZjIxNTA5
YWM5OGMxZjE3ZS4uMGEwMmUzYmQ3MTg4ZGRlMDA1NzAyNjZkMDhiMjFiNWQzNzg3NzkzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtODYsNyArODYs
NiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Byb2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgog
I2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBA
IC05NCw2ICs5Myw3IEBACiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0
Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IDE0NDQyOGI2ZjA5ZGM5YjVlZjcxNzU1N2Y2NDQ0Y2FlZGU1NGEwYzEuLmIx
ZTRjNWQxY2M0OTIxMDEyMTYzNWU4N2FiYjc5NjdkMzQxZDVmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIFdlYlBy
b2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6UHJvY2Vzc1BvCiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2Fu
SGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRp
c3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBwcmVjb25u
ZWN0VG9TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBwcmVjb25uZWN0VG9T
ZXJ2ZXIoY29uc3QgVVJMJik7CiAKICAgICBWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0
b3JlKCkgeyByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDllODQ0Y2RiNWU2ZjI5YmQ4
YTRkMzE1Y2VmZmRiNmRjYzE4MTE5MzIuLmFkMjczYTIyODhlZTM4OWI2NmY0ODU4ZDJlNDYxYTUx
OWVkOTEzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cApAQCAtNTUsMTAgKzU1LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2lu
Z0tleXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2goKQogI2lmIEVO
QUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAgICAgaWYgKHBhZ2VzLnNpemUoKSA9PSAxKSB7CiAg
ICAgICAgIGF1dG8mIHBhZ2UgPSAqcGFnZXNbMF07Ci0gICAgICAgIFN0cmluZyBkb21haW4gPSB0
b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdlYkNvcmU6OlVSTCh7IH0sIHBhZ2UuY3VycmVu
dFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIFN0cmluZyBkb21haW4gPSB0b3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWluKFVSTCh7IH0sIHBhZ2UuY3VycmVudFVSTCgpKS5ob3N0
KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHBhZ2UubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5KFdlYkNvcmU6
OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6ZG9tYWluQ2F1c2luZ0NyYXNoS2V5KCksIGRvbWFpbiwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBlMGE2N2NiNzg5ZGZmNmQyMGFhNWI5NWRhNjAxZmMz
ZjlmYzJlOGM2Li4xMjZhZDI2YjY2MDljMjIyNmRlYzk4NmI1NTJkNTI3ZGFlNDIwODZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNTcsNyArNTcsNiBA
QCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogc3RydWN0IFBsdWdpbkluZm87CiBzdHJ1Y3Qg
U2VjdXJpdHlPcmlnaW5EYXRhOwogfQpAQCAtMTQ2LDEwICsxNDUsMTAgQEAgY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9uc2l2ZW5l
c3NUaW1lcjo6Q2wKIAogICAgIHZvaWQgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRi
b3hFeHRlbnNpb24oKSB7IG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lv
biA9IHRydWU7IH0KICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3Ry
aW5nJik7Ci0gICAgYm9vbCBoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYpIGNvbnN0OworICAgIGJvb2wgaGFzQXNzdW1lZFJlYWRBY2Nlc3NUb1VSTChjb25zdCBV
UkwmKSBjb25zdDsKIAogICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNv
bnN0IFN0cmluZyYpOwotICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9j
ZXNzKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5h
YmxlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAzMTc4MzZiNDJmZjY3NGU1N2I0Y2Jl
YWVlODcxZGYxMzQ3ZWU3NWY0Li5mOGQ5Mjg0NWE2M2ZhMmIzOWIxN2IxZWJlODliMTcxNWZhN2Jh
NzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShib29sIHZhbAogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJj
ZUZvckRlYnVnTW9kZShjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
QEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c3VibWl0VGVsZW1ldHJ5KCkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJv
eHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDZjNDEwZmE0YTk1YTNjMDA4
ZDU3YjIzZjZjODMxZDllY2QwNDA3ZDAuLjU4MWEyYWU5MThiZTc0OWY2YTNhMzRjMDYyOGE1MDQ1
NGE0N2JiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw3ICs0MSw2IEBAIGNsYXNzIFdvcmtR
dWV1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xh
c3MgVVJMOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiB9CiAKQEAgLTg0LDI4ICs4
MywyOCBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUmVzbwogCiAgICAgdm9pZCBhcHBsaWNhdGlvbldp
bGxUZXJtaW5hdGUoKTsKIAotICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZy
YW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpOwotICAgIHZv
aWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJD
b3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgaGFzSGFk
VXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgV2ViQ29yZTo6VVJMJiwg
U2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFByZXZh
bGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0gICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGxvZ0ZyYW1lTmF2
aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKTsKKyAgICB2
b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihj
b25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNl
dExhc3RTZWVuKGNvbnN0IFVSTCYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKTsKLSAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBpc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihjb25zdCBX
ZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFz
U3ViRnJhbWVVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YkZyYW1lLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2
b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3RS
ZWRpcmVjdGVkRnJvbSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0UmVkaXJlY3RlZFRvLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVz
b3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCk7Ci0g
ICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJmcmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0
b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29u
c3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFt
ZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgV2ViQ29y
ZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0
ZWRUbyk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBX
ZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVk
aXJlY3RlZEZyb20pOwotICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0
TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJv
bShjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNl
KGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoY29u
c3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIo
Y29uc3QgVVJMJiBzdWJGcmFtZSwgY29uc3QgVVJMJiB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8o
Y29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRU
bywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjbGVhclByZXZh
bGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIGJvb2wpOworICAgIHZvaWQgaXNH
cmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3Vi
ZnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgdG9wRnJh
bWUpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFVSTCYg
c3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQg
c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwg
Y29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKKyAgICB2b2lkIHNldFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0IFVSTCYg
aG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVj
dEZyb20oY29uc3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVk
aXJlY3RlZEZyb20pOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2lu
Z1VwZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBT
aG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2NoZWR1bGVDbGVhckJsb2NraW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTMyLDcgKzEzMSw3
IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxXZWJSZXNvCiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0Rl
ZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29u
c3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGVzdGluZ0Nh
bGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykgeyBt
X3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQogICAgIHZv
aWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCmluZGV4IDc5OTI2
M2VhYzRhMmMyODgyNDY0ZDllZmFlYTQ2YTg0MzE0OWRhNWYuLjVmNGEzYTVkMTg0M2ViYTJiMTQw
MjY3MjEwYTQwNDg5ZTdjOTk3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKQEAgLTMyLDEwICszMiwxMCBAQAog
I2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaD4KICNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01Miw3ICs1Miw3IEBAIHN0cnVjdCBEcmFnU291cmNlU3RhdGUgewogICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGE7CiAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYXRoPiB2aXNpYmxlUGF0aDsKICAgICBTdHJpbmcgbGlua1RpdGxl
OwotICAgIFdlYkNvcmU6OlVSTCBsaW5rVVJMOworICAgIFVSTCBsaW5rVVJMOwogICAgIGJvb2wg
cG9zc2libHlOZWVkc0RyYWdQcmV2aWV3VXBkYXRlIHsgdHJ1ZSB9OwogCiAgICAgTlNJbnRlZ2Vy
IGl0ZW1JZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQppbmRleCBiYjY2MzQ3NTI1ZjE4ODcxMDA3
Y2U1MDRiZWI5MjI0NTljOTBlMWNhLi5lMzQ2MGY0MTVkMGI4NjhiZGYzYzI5MjVmYzQzOGI1N2U3
ZmY5MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25T
aGVldEFzc2lzdGFudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rp
b25TaGVldEFzc2lzdGFudC5tbQpAQCAtNDEsMTAgKzQxLDEwIEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3
dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KKyNp
bXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAjaW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIApAQCAtMzA0
LDcgKzMwNCw3IEBAIC0gKHZvaWQpX2NyZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25zOihOU0Fy
cmF5ICopYWN0aW9ucyBzaG93TGlua1RpdGxlOihCT09MKXNoCiAgICAgICAgIGlmIChpc0phdmFT
Y3JpcHRVUkwpCiAgICAgICAgICAgICB0aXRsZVN0cmluZyA9IFdFQl9VSV9TVFJJTkdfS0VZKCJK
YXZhU2NyaXB0IiwgIkphdmFTY3JpcHQgQWN0aW9uIFNoZWV0IFRpdGxlIiwgIlRpdGxlIGZvciBh
Y3Rpb24gc2hlZXQgZm9yIEphdmFTY3JpcHQgbGluayIpOwogICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIHRpdGxlU3RyaW5nID0gV2ViQ29yZTo6dXNlclZpc2libGVTdHJpbmcodGFyZ2V0VVJM
KTsKKyAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh0YXJn
ZXRVUkwpOwogICAgICAgICAgICAgdGl0bGVJc1VSTCA9IFlFUzsKICAgICAgICAgfQogICAgIH0g
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjAxYzRmNmEzYzU0ZTk5YzcxNjU1NzhiYWU3MjJmMzhl
Y2I4ZTU4Yy4uNTMxNmJjM2QwNmM5MmE2ZTcyNzRkYjgxMmM0YjljZjIxMTk1MTdhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCkBAIC04Nyw3ICs4Nyw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlRGF0YS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zp
c2libGVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2VsZWN0
aW9uUmVjdC5oPiAvLyBGSVhNRTogV0syIHNob3VsZCBub3QgaW5jbHVkZSBXZWJLaXQgaGVhZGVy
cyEKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC05OCw2ICs5Nyw3
IEBACiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNV
UkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCkBAIC00ODk1LDkgKzQ4OTUsOSBAQCAtICh2b2lkKWFjdGlvblNoZWV0
QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50
QXRMbwogLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFu
dCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihDR1Jl
Y3QpYm91bmRpbmdSZWN0CiB7CiAgICAgaWYgKF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50KQotICAg
ICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6dXNlclZpc2li
bGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOworICAgICAgICBbX3RleHRTZWxl
Y3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6V1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1
cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CiAgICAgZWxzZSBpZiAoX3dlYlNlbGVjdGlvbkFz
c2lzdGFudCkKLSAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRG
b3I6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOworICAgICAg
ICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpXVEY6OnVzZXJWaXNp
YmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKIH0KIAogI2lmIEhBVkUoQVBQ
X0xJTktTKQpAQCAtNjE4Nyw3ICs2MTg3LDcgQEAgLSAoVUlWaWV3Q29udHJvbGxlciAqKV9wcmVz
ZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWUKIAog
ICAgIE5TVVJMICp0YXJnZXRVUkwgPSBjb250cm9sbGVyLnByZXZpZXdEYXRhW1VJUHJldmlld0Rh
dGFMaW5rXTsKICAgICBVUkwgY29yZVRhcmdldFVSTCA9IHRhcmdldFVSTDsKLSAgICBib29sIGlz
VmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0VtcHR5KCkgJiYgKFdl
YkNvcmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29yZVRhcmdldFVSTCkgfHwgV2ViQ29yZTo6
cHJvdG9jb2xJcyhjb3JlVGFyZ2V0VVJMLCAiZGF0YSIpKTsKKyAgICBib29sIGlzVmFsaWRVUkxG
b3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0VtcHR5KCkgJiYgKFdURjo6cHJvdG9j
b2xJc0luSFRUUEZhbWlseShjb3JlVGFyZ2V0VVJMKSB8fCBXVEY6OnByb3RvY29sSXMoY29yZVRh
cmdldFVSTCwgImRhdGEiKSk7CiAKICAgICBpZiAoW19wcmV2aWV3SXRlbUNvbnRyb2xsZXIgdHlw
ZV0gPT0gVUlQcmV2aWV3SXRlbVR5cGVMaW5rKSB7CiAgICAgICAgIF9oaWdobGlnaHRMb25nUHJl
c3NDYW5DbGljayA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggYmRjYzU3MTBmYzdmNDk2NWYzYzk4
ZGUxNzE2MTM1OWZhNzM1NzU4Mi4uNWFhY2M1ZWU5MDQ1YWFmZGMxNmEzNjM1YTFlYmY0MWE5MjRh
NDQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9s
b2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC00MSwxMyArNDEsMTMgQEAKICNpbXBvcnQgIl9XS0dl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIl9XS0dlb2xvY2F0aW9u
UG9zaXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0aW9u
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogLy8gRklYTUU6
IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIKICNpbXBvcnQgPFdlYktpdC9XZWJH
ZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CkBAIC0xODQsNyArMTg0LDcgQEAgLSAo
dm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAKICAgICAgICAgaWQ8V0tVSURl
bGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQ
cml2YXRlPj4oW3JlcXVlc3QudmlldyBVSURlbGVnYXRlXSk7CiAgICAgICAgIGlmIChbdWlEZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOildKSB7Ci0gICAg
ICAgICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCByZXF1
ZXN0LmZyYW1lLT51cmwoKSk7CisgICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgp
LCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUlu
Zm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqcmVxdWVzdC5m
cmFtZS5nZXQoKSwgKnJlcXVlc3Qub3JpZ2luLmdldCgpKSk7CiAgICAgICAgICAgICBSZWZQdHI8
V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9y
KF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVj
aXNpb25IYW5kbGVyOikpOwogICAgICAgICAgICAgV0tXZWJWaWV3ICp2aWV3RnJvbVJlcXVlc3Qg
PSByZXF1ZXN0LnZpZXcuZ2V0KCk7CkBAIC0yMDAsOCArMjAwLDggQEAgLSAodm9pZClnZW9sb2Nh
dGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZFJlcXVlc3RHZW9sb2NhdGlvbkF1
dGhvcml6YXRpb25Gb3JVUkw6aXNNYWluRnJhbWU6bWFpbkZyYW1lVVJMOildKSB7CiAgICAgICAg
ICAgICBjb25zdCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9IHJlcXVlc3QuZnJh
bWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgICAgICAgICBib29sIGlzTWFpbkZyYW1lID0g
cmVxdWVzdC5mcmFtZSA9PSBtYWluRnJhbWU7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgcmVx
dWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7Ci0gICAg
ICAgICAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBtYWluRnJh
bWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIHJlcXVl
c3QuZnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCBtYWluRnJhbWVVUkwoVVJMKCksIG1h
aW5GcmFtZS0+dXJsKCkpOwogICAgICAgICAgICAgcmVxdWlyZXNVc2VyQXV0aG9yaXphdGlvbiA9
IFt1aURlbGVnYXRlIF93ZWJWaWV3OnJlcXVlc3Qudmlldy5nZXQoKQogICAgICAgICAgICAgICAg
ICBzaG91bGRSZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOnJlcXVlc3RGcmFt
ZVVSTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz
TWFpbkZyYW1lOmlzTWFpbkZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
TGVnYWN5UERGVmlldy5tbQppbmRleCBkMzhmMzFjODE1ZjNjOWYzZTk4ZGE1MmU1NGZiODg4ODRl
ZDBhNDMwLi5hZWEwZDZkMzlmNjJkNzFkOTY3NDQ2ZTY4MjI3ZWJkN2YyODNhZDE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW0KQEAgLTQzLDEx
ICs0MywxMSBAQAogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRT
dHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9y
dCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgor
I2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIC8vIEFsbCBvZiBVSVBERlBhZ2Uq
IGFyZSBkZXByZWNhdGVkLCBzbyBqdXN0IGlnbm9yZSBkZXByZWNhdGVkIGRlY2xhcmF0aW9ucwog
Ly8gaW4gdGhpcyBmaWxlIHVudGlsIHdlIHN3aXRjaCBvZmYgdGhlbS4KQEAgLTc3OSw3ICs3Nzks
NyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50
ICopYXNzaXN0YW50IG9wZW5FbGVtZW50QXRMbwogLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFu
dDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXRoVVJM
OihOU1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAgX3dlYlNlbGVj
dGlvbkFzc2lzdGFudCA9IGFkb3B0TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFsbG9jXSBp
bml0V2l0aFZpZXc6c2VsZl0pOwotICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFy
ZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRp
bmdSZWN0XTsKKyAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpX
VEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKICAgICBf
d2ViU2VsZWN0aW9uQXNzaXN0YW50ID0gbmlsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLUERGVmlldy5tbQppbmRleCBkZmY0YzZjYmYwMDMyZTE1NWNiY2I5MWYxM2FiZmIzZGMy
MzQwMWVhLi5jZjRlOGE3MzMzNGZmNTdjMjZkY2YxNTJkMjM3NGNhZThkYmNjZjY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KQEAgLTM4LDExICszOCwxMSBAQAog
I2ltcG9ydCAiX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCIKICNpbXBvcnQgPE1v
YmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RGF0YURldGVjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2lt
cG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIEBpbnRlcmZhY2UgV0tQREZWaWV3ICgp
IDxQREZIb3N0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSwgV0tBY3Rpb25TaGVldEFzc2lzdGFudERl
bGVnYXRlPgogQGVuZApAQCAtNDk3LDcgKzQ5Nyw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Np
c3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgb3BlbkVsZW1lbnRBdExv
CiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICop
YXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdGhVUkw6KE5TVVJMICopdXJsIHJlY3Q6KENHUmVjdCli
b3VuZGluZ1JlY3QKIHsKICAgICBhdXRvIHNlbGVjdGlvbkFzc2lzdGFudCA9IGFkb3B0TlMoW1tV
SVdLU2VsZWN0aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6W19ob3N0Vmlld0NvbnRy
b2xsZXIgdmlld11dKTsKLSAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9y
OldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsK
KyAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOldURjo6dXNlclZpc2li
bGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOwogfQogCiAjaWYgSEFWRShBUFBf
TElOS1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVl
bi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQpp
bmRleCA0ZWRkOTRiZWJjZGRiNTA0MGIwMDk0ZmM0ODdhNTUyNmU2OTI1MGZlLi4yNjU4YjM2M2I0
MTFhM2JiZmI2ZDRkZDZkM2VkYTRkMWFhYjIxY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KQEAgLTQ1LDEyICs0NSwxMiBAQAogI2ltcG9ydCA8
V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1N0cmluZ1NQSS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1VSTEZvcm1h
dHRpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL2Nv
Y29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC05NDEsNyArOTQxLDcgQEAgLSAodm9pZClf
dXBkYXRlTG9jYXRpb25JbmZvCiAgICAgaWYgKExpbmtQcmVzZW50YXRpb25MaWJyYXJ5KCkpCiAg
ICAgICAgIGRvbWFpbiA9IFt1cmwgX2xwX3NpbXBsaWZpZWREaXNwbGF5U3RyaW5nXTsKICAgICBl
bHNlCi0gICAgICAgIGRvbWFpbiA9IHVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CisgICAgICAgIGRv
bWFpbiA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKICNlbmRpZgogCiAgICAgTlNTdHJp
bmcgKnRleHQgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
TGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IDE3ZjY2YjcxNzc5YzA1NDljZjY4
YWUyODE2NTgxOGE3MjlkNjYzZmUuLjlmNjc4NTg3NmU2OWM3YjY0ZGQyMTAyODUwZTBmNTYwNGQ4
ZTRiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNz
aW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdh
Y3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0xMTMzLDcgKzExMzMsNyBAQCBib29sIGRlY29k
ZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IHNpemUsIFNl
c3Npb25TdGF0ZSYgcwogICAgIH0KIAogICAgIGlmIChhdXRvIHByb3Zpc2lvbmFsVVJMU3RyaW5n
ID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzZXNz
aW9uU3RhdGVEaWN0aW9uYXJ5LCBwcm92aXNpb25hbFVSTEtleSkpKSB7Ci0gICAgICAgIHNlc3Np
b25TdGF0ZS5wcm92aXNpb25hbFVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgcHJv
dmlzaW9uYWxVUkxTdHJpbmcpOworICAgICAgICBzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwg
PSBVUkwoVVJMKCksIHByb3Zpc2lvbmFsVVJMU3RyaW5nKTsKICAgICAgICAgaWYgKCFzZXNzaW9u
U3RhdGUucHJvdmlzaW9uYWxVUkwuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGY4NzIwNzA2NGM3YmU1MWVhZWJiMjdh
MDMxZDQ5MDUxMTJiMzg4ZjQuLjRhYWZkZmYzZGVhOGNmOTQyZDAwYTQwYzdiNzRhN2YxM2M2YzZk
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1t
ZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzgsMTMgKzM4LDEzIEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvR2VvbWV0cnlVdGls
aXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0RhdGFEZXRlY3RvcnNTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0xvb2t1cFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9t
YWMvTlNNZW51U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1BvcG92ZXJTUEkuaD4KICNp
bXBvcnQgPHBhbC9zcGkvbWFjL1F1aWNrTG9va01hY1NQSS5oPgogI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktfSU5f
VU1CUkVMTEEoUXVhcnR6LCBRdWlja0xvb2tVSSkKIFNPRlRfTElOS19DTEFTUyhRdWlja0xvb2tV
SSwgUUxQcmV2aWV3TWVudUl0ZW0pCkBAIC0yNzYsMTcgKzI3NiwxNyBAQCAtIChpZCA8TlNJbW1l
ZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xs
ZXIKIAogICAgIFN0cmluZyBhYnNvbHV0ZUxpbmtVUkwgPSBoaXRUZXN0UmVzdWx0LT5hYnNvbHV0
ZUxpbmtVUkwoKTsKICAgICBpZiAoIWFic29sdXRlTGlua1VSTC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMoYWJzb2x1dGVMaW5rVVJMLCAibWFpbHRvIikpIHsK
KyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJtYWlsdG8iKSkg
ewogICAgICAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5rOwogICAg
ICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVk
TGlua107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJcyhhYnNv
bHV0ZUxpbmtVUkwsICJ0ZWwiKSkgeworICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKGFic29s
dXRlTGlua1VSTCwgInRlbCIpKSB7CiAgICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFj
dGlvblRlbExpbms7CiAgICAgICAgICAgICByZXR1cm4gW3NlbGYgX2FuaW1hdGlvbkNvbnRyb2xs
ZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rXTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChXZWJDb3Jl
Ojpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGFic29sdXRlTGlua1VSTCkpIHsKKyAgICAgICAgaWYg
KFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0ZUxpbmtVUkwpKSB7CiAgICAgICAg
ICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvbkxpbmtQcmV2aWV3OwogCiAgICAgICAgICAg
ICBRTFByZXZpZXdNZW51SXRlbSAqaXRlbSA9IFtOU01lbnVJdGVtIHN0YW5kYXJkUXVpY2tMb29r
TWVudUl0ZW1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYklu
c3BlY3RvclByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNw
ZWN0b3JQcm94eVdpbi5jcHAKaW5kZXggZWU4NjI3ZTJjMzVkNTRmNzhkOWFlNDg4YTI4YWIyZWRl
ZDRjMTJmOC4uNGQyZGIwNDkwZWU4YjI0OTFkZTE1ZTYzMDQwNmMxODc0ZGEwMWRlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4u
Y3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5oIgogI2luY2x1
ZGUgIkFQSU5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlv
bi5oIgotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwu
aCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJQYWdlR3JvdXAuaCIKQEAgLTQ0LDYgKzQzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dlYkNv
cmVJbnN0YW5jZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVzc2FnZUJyb2Fk
Y2FzdGVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZS5oPgorI2luY2x1ZGUgPHd0Zi9jZi9D
RlVSTEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNw
cAppbmRleCAyMDlhODVkZWEzYjYzMGQyN2MxYzIxMjUxNTU2ZGNjMGM1YTgyYjk3Li41NTY5ZGYy
ZWE4NTVkMTVjNWFlNDcxNDlhNTFhYjRjMmI0NjM3YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNw
cApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXltZW50Q29vcmRpbmF0b3IuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvcjo6b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwg
YwogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6T3BlblBheW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIHJlcGx5
SUQpKTsKIH0KIAotYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXltZW50VUkoY29u
c3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVS
TD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3QmIHBheW1lbnRSZXF1ZXN0KQorYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQ
YXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxp
bmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qm
IHBheW1lbnRSZXF1ZXN0KQogewogICAgIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5n
czsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxpbmtJY29uVVJMIDogbGlua0ljb25VUkxzKQpAQCAt
MTg2LDcgKzE4Niw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpwYXltZW50Q29vcmRp
bmF0b3JEZXN0cm95ZWQoKQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVN
ZXJjaGFudChjb25zdCBTdHJpbmcmIHZhbGlkYXRpb25VUkxTdHJpbmcpCiB7Ci0gICAgcGF5bWVu
dENvb3JkaW5hdG9yKCkudmFsaWRhdGVNZXJjaGFudChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJM
KCksIHZhbGlkYXRpb25VUkxTdHJpbmcpKTsKKyAgICBwYXltZW50Q29vcmRpbmF0b3IoKS52YWxp
ZGF0ZU1lcmNoYW50KFVSTChVUkwoKSwgdmFsaWRhdGlvblVSTFN0cmluZykpOwogfQogCiB2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvcjo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25zdCBXZWJDb3Jl
OjpQYXltZW50JiBwYXltZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IGU0ODg3Y2M4OGFiMWYx
OWZiZGE5OWYzYzBiMmM4YWVkMWRiM2EwNDQuLjAyMTJkNmFkYmJiOTA1MWZiMWJiNDY5NmQ1ZDlh
ODI5NTFhZjI0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3Mg
V2ViUGF5bWVudENvb3JkaW5hdG9yIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29y
ZGluYXRvckNsaWVudCwgcHIKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJj
aGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2
b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBvcGVu
UGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpV
UkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25V
UkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJy
aWRlOworICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBj
b25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFu
dFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cAppbmRleCAzZjI3MTIzMmQ2M2U0YTRmNzc0NWVmMjhjNjRlYWU1NTM4YzRiN2I5Li43ZmU5MzM0
YmE0ZjM1OWM3MmIwZDkxZDU1NDJhNzE2NDQ2MmU2ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9S
ZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uCiAgICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OkNhY2hl
cyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwgdXBkYXRlQ291bnRlciks
IDApOwogfQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNv
cmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Ojpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBjb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmV0cmlldmVSZWNvcmRz
KG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1cmwpLCAw
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDQ4MGVkZGQ5YjRlNTE1YzRiNGFhZTZkNGM2
ZDk0MjU4ZmNiZTI1MmIuLmQyZTBkZjJkODYwOTIyYTNiMWUzNTZiZTkyMWU3ODAxOTg2ZGM3NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBXZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24gewogICAgIHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
LCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKSBmaW5hbDsKIAotICAgIHZvaWQgZG9SZXRyaWV2ZVJl
Y29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jk
cyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBj
b25zdCBVUkwmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikgZmlu
YWw7CiAgICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3JkPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDUwNzEzMTNlYzYyNTMw
N2M0MGI1YjQwMTBmNzBjNjFjNzUwNDE1ZDcuLjlkNjFlOTFjZWFmYzAwNjE0OWU3MDMyYjg5ZWZm
ZmJmNWRhMWM1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJ
L0Jsb2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmls
ZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJv
eHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFJlZjxCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmws
IFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5
UHJveHkuaAppbmRleCBiMDU0ODliOGEyM2JjNzkwYjk1ZTZlYzlmMGQ1YzgyZWQwOWY4NzNjLi5h
NGM1ZjY4NGFkNWYxNjM0N2IwNzA3OTE4NWY3N2E5YWI3YjAwYTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKQEAgLTMx
LDEzICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJv
eHkgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2
b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgUmVmPFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVj
dG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnJlZ2lzdGVy
QmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
c3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOwotICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6
OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBV
UkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcg
c3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBi
bG9iU2l6ZShjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBv
cmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92
ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMDhkZGJiZWE3MmJkZTdhNjg2Y2U3NWM0ZjRmYzk4Njhj
NmFmYjQ4OS4uODAxMmE4NGY0YzgzODg4MDI2MzY3MTkwNjBkNDg1NGE2NGYwNDBjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5o
CkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFz
cyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTUsNyBAQCBjbGFzcyBQ
YWdlTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZh
dWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJ
OjpPYmplY3Q+JikgeyB9CkBAIC05Niw3ICs5NSw3IEBAIGNsYXNzIFBhZ2VMb2FkZXJDbGllbnQg
ewogICAgIHZpcnR1YWwgdm9pZCBmZWF0dXJlc1VzZWRJblBhZ2UoV2ViS2l0OjpXZWJQYWdlJiwg
Y29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95RnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYpIHsgfQotICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50Rm9yVVJMKFdlYktpdDo6V2ViRnJhbWUmLCBj
b25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCB7IHJldHVybiBXVEY6OlN0cmluZygpOyB9CisgICAg
dmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViS2l0OjpXZWJGcmFtZSYsIGNv
bnN0IFdURjo6VVJMJikgY29uc3QgeyByZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQogCiAgICAgdmly
dHVhbCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7
IHJldHVybiAwOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4IDRjMGM2
YWVkMzg5OWQ4YjI4N2NjMTEwZWIwNzk3NmZmMTRjNzFhZTMuLjA0NjBlYzYzZjA3OGFkZjVkY2Vh
YmMzMGVlODI3NjNjZDNmNTg1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAg
LTE3Miw3ICsxNzIsNyBAQCBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUxheWVyVHJlZUFz
VGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmKQogCiBib29sIFdLQnVuZGxlRnJhbWVBbGxv
d3NGb2xsb3dpbmdMaW5rKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJl
ZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhX
ZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICBy
ZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhVUkwoVVJMKCksIHRv
V1RGU3RyaW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1lSGFuZGxlc1BhZ2VT
Y2FsZUdlc3R1cmUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKQEAgLTIxNywxMiArMjE3LDEy
IEBAIGJvb2wgV0tCdW5kbGVGcmFtZUdldERvY3VtZW50QmFja2dyb3VuZENvbG9yKFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWVSZWYsIGRvdWJsZSoKIAogV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNv
cHlTdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lUmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1w
bChmcmFtZVJlZiktPnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKFdlYkNvcmU6
OlVSTChXZWJDb3JlOjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKKyAgICByZXR1cm4g
dG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJj
ZVdpdGhVUkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBXS1N0cmlu
Z1JlZiBXS0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3Bp
ZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOworICAgIHJldHVy
biB0b0NvcGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5taW1lVHlwZUZvclJlc291cmNlV2l0aFVS
TChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVG
cmFtZUNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDA3ZDAyNDI0MzZiZDQxNDU4MDJjYjE1OWUz
YjBkOTcwMTRmM2EzMDguLjllOWEyYjFkNTI4NmUxNGZjNDQ2OGJjMTAwMmQ1YWE3NjY2MjVmNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02Niw5ICs2Niw5IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZW5kZXJMYXllckNvbXBvc2l0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaGVl
bEV2ZW50VGVzdFRyaWdnZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00MjUsNyAr
NDI1LDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xv
Y2FsRGF0YUZvclVSTChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQog
ewotICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAgICByZXR1cm4g
dG9JbXBsKHBhZ2VSZWYpLT5oYXNMb2NhbERhdGFGb3JVUkwoVVJMKFVSTCgpLCB0b1dURlN0cmlu
Zyh1cmxSZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVQYWdlQ2FuSGFuZGxlUmVxdWVzdChXS1VS
TFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252
ZXJ0VG9VVEY4U3RyaW5nLmNwcAppbmRleCBiNWUxNjU3YTBkMjFmNmMxYzk3YmI5MDM4ZmQ0YTUw
MTk5YmNmMWFkLi43MTU3NDlhNDkyMzljMzFhYWI3ZmMxYWVkZDAyNjIzZTE0ZThhYWVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vQ29udmVydFRvVVRGOFN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCkBAIC0y
MSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRG
OFN0cmluZy5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkBAIC0zNSw3ICszNSw3IEBAIGdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5n
KFdURjo6U3RyaW5nIGNvbnN0JiBzKQogICAgIHJldHVybiBnX3N0cmR1cChzLnV0ZjgoKS5kYXRh
KCkpOwogfQogCi1nY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpVUkwgY29uc3Qm
IHMpCitnY2hhciogY29udmVydFRvVVRGOFN0cmluZyhVUkwgY29uc3QmIHMpCiB7CiAgICAgcmV0
dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcocy5zdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRv
VVRGOFN0cmluZy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuaAppbmRleCBlNDk0MTEzYTNmOGZmNmU5YzRk
YmU2OGFmOWYxZDhhMmUyMjJmZWM5Li5jMzcyNTM1OWI4OTM0N2MxZjg4OTZhZGM1YmNhYjRiNmE0
NDk2YzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5n
LmgKQEAgLTIzLDEzICsyMyw5IEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIHR5cGVkZWYgY2hhciBnY2hhcjsKIAog
Z2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV1RGOjpTdHJpbmcgY29uc3QmIHMpOwotZ2NoYXIq
IGNvbnZlcnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6VVJMIGNvbnN0JiBzKTsKK2djaGFyKiBjb252
ZXJ0VG9VVEY4U3RyaW5nKFVSTCBjb25zdCYgcyk7CiAKICNlbmRpZiAvKiBDb252ZXJ0VG9VVEY4
U3RyaW5nX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAK
aW5kZXggMWJiMGJhMTYwMzcyOGJjMmZjOTI0OTdhY2IwMTM2YmI5OTkwNTcyYi4uMDgzMTc0ZTVl
ZDIxZjk4Mzk3M2IyNmM3ZDdjOGM0ODhlMTAyYzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaAppbmRleCA0OTM1NjYxZWUyNDg4ZjYzODAxNGU4NjlkZDhmMTEyMDlhNDhiODEw
Li4wMWRkOTkwNzljYjU0ZmI2MzM1ZWNmYTNlMzczMzVlZTFiNjViZjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNCw3ICszNCw2IEBACiBu
YW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIGNsYXNzIFN0cmluZzsKLWNsYXNzIFVSTDsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVu
dEJhc2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
VjAsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRW
MiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjMsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY0
LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjYs
IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY3LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWOCwg
V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Vjk+IFZlcnNpb25zOwpAQCAtNDgsNyArNDcsNyBAQCBj
bGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8
V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZQogICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudChjb25zdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKik7CiAKICAgICB2
b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJl
cXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgd2ls
bExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6
OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICBib29s
IHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2UmLCBJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYs
IFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKQEAgLTg3LDcgKzg2LDcgQEAgY2xhc3Mg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWUKIAogICAgIHZvaWQgZmVhdHVyZXNVc2VkSW5QYWdlKFdlYlBhZ2Um
LCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+Jikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0cmlu
ZyB1c2VyQWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25z
dCBVUkwmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMg
bGF5b3V0TWlsZXN0b25lcygpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAKaW5kZXggZTJhNjk3OGZlMjgzYWQ1M2MzNDhiZjA3MDdhYjY4ZGY3ZDk2
MjM2Mi4uOTAzYzZkMDEyYzFkYjI4OGZiYTIzOGI1NzhiZDA2NTYzNDQ4ZDgxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAxMjc4YzFiNDQzZmFkN2Jm
YTcxZjEwZjJiNGYyODY4NmI2ZTAzNDRmLi42NWNmNDIzYWIxNjgyNzI1YWZkOTRhMzE0YmUxNDdi
ODNlYTlmMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBXZWJMb2Fk
ZXJTdHJhdGVneTo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVy
LCBSZXNvdXJjZUUKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlcnJvciksIFdU
Rk1vdmUocmVzcG9uc2UpKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVj
dFRvKEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYg
dXJsLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJl
Y29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWlu
dDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7
CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnMuYWRk
KHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuaAppbmRleCBlMDQwZDA3NTVjNzk0ZGJkNzFlYTljNTU4ODQyYTA2NWM1MmRmNWRlLi4xYzJm
YjNmMTFlNDVlM2I3ZWE4ODI5NjNmYTFjYTA5M2Q4ZTZlMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTU1LDcg
KzU1LDcgQEAgY2xhc3MgV2ViTG9hZGVyU3RyYXRlZ3kgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
TG9hZGVyU3RyYXRlZ3kgewogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXImLCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZl
ZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RV
UkwpIGZpbmFsOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyKiwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCkgZmluYWw7CiAgICAgCiAg
ICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0
eSBtaW5pbXVtUHJpb3JpdHkpIGZpbmFsOwogCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYkxv
YWRlclN0cmF0ZWd5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKICAg
ICB2b2lkIHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFk
ZXJzLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xv
YWRJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRl
ciYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBwcmVjb25u
ZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAogICAgIHZvaWQgc3RvcmVEZXJp
dmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiBib2R5SGFzaCwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0UHJvdmlkZXIuaAppbmRleCAwMjQ0ZTVmMmM4ODYyMDUzMTc2OTllY2ZkMWUxYTFiMjNjN2Zk
OTk4Li42OWI3ZmEzYjQxNmY0ZWYzOTZhZWFkZTRjMTIwODRiYjM1MmIxMTg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgK
QEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTb2NrZXRQcm92
aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRQcm92aWRlciB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxXZWJTb2NrZXRQcm92aWRlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJTb2NrZXRQcm92aWRlcik7IH0KLSAgICBSZWY8V2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlPiBjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwg
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbikgZmluYWw7CisgICAgUmVmPFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pIGZpbmFsOwogICAgIHZpcnR1YWwgfldlYlNvY2tl
dFByb3ZpZGVyKCkgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCA3YTBiOWUzMTJlYjk5ZDQ3YWM1MmRl
ZTlkZTRhYTY4ZWFmNTRkNzQ3Li4xZDVlMjI5YWMyM2RhMzA4N2U0NmQ5MzU1NjVhYWE0ZDY3YjVh
MDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldFN0cmVhbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmPFdlYlNvY2tldFN0cmVhbT4gV2Vi
U29ja2V0U3RyZWFtOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUMK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRTdHJlYW0odXJsLCBjbGllbnQsIHNl
c3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbikpOwogfQogCi1XZWJTb2NrZXRTdHJlYW06Oldl
YlNvY2tldFN0cmVhbShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBjYWNoZVBhcnRpdGlvbikKK1dlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFt
KGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVu
dCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9u
KQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQogICAgICwgbV9jbGllbnQo
Y2xpZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRTdHJlYW0uaAppbmRleCAzZmViNmE2MzVmZmU5ZTc5MjMxZDMyYjUxYzYzZmI3Mjg3N2Q5
OWUzLi4zODlhMGI5OGI3NTk4Y2M2NjhiZThkYjQ1ZjE3MTFiOGZlOGY3NzBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApAQCAt
NDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0U3RyZWFt
IDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwdWJsaWMgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlLCBwdWJsaWMgSWRlbnRpZmllZDxX
ZWJTb2NrZXRTdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNvY2tldFN0cmVh
bT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRp
b24pOworICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0U3RyZWFtPiBjcmVhdGUoY29uc3QgVVJMJiwg
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1By
b2Nlc3NDcmFzaGVkKCk7CiAgICAgc3RhdGljIFdlYlNvY2tldFN0cmVhbSogc3RyZWFtV2l0aElk
ZW50aWZpZXIodWludDY0X3QpOwogICAgIApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBXZWJTb2Nr
ZXRTdHJlYW0gOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIsCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7
CiAKLSAgICBXZWJTb2NrZXRTdHJlYW0oY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbFBhcnRpdGlvbik7CisgICAgV2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYsIFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOwogICAgIH5XZWJTb2NrZXRTdHJlYW0oKTsKIAogICAg
IHNpemVfdCBtX2J1ZmZlcmVkQW1vdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmlu
ZGV4IDAwM2QyN2ExMDE4Nzk4ODlkYWE2NmZhYTBjNmQ5OTNlOTE2MGUxMGYuLmM2YTUwNjkxNzQw
YTVkYjNlNjVmMTk3NTcxYjdiZDQwMDViYjcxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAK
QEAgLTM4LDggKzM4LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJNYXAuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgUExV
R0lOX0FSQ0hJVEVDVFVSRShVTklYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggYmNiM2Q3ZmI3
NzdkMTMxYzdmMjQ3NmY2NWIxNTJmMDQzOTAxNDZkNy4uNzRhODRlOTI3Y2Y1YTdkZjYyMjM2Y2Y0
YTliZmZiOTU1MTIzOWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0xMzksNyArMTM5LDcg
QEAgY2xhc3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJsaWMgUGx1Z2luIHsKIAogICAgIHZvaWQgc2V0
SXNQbGF5aW5nQXVkaW8oYm9vbCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyUmVkaXJlY3QoTmV0c2Nh
cGVQbHVnaW5TdHJlYW0qLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGludCByZWRp
cmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKKyAgICB2b2lkIHJl
Z2lzdGVyUmVkaXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25zdCBVUkwmIHJlcXVlc3RV
UkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsK
ICAgICB2b2lkIHVybFJlZGlyZWN0UmVzcG9uc2Uodm9pZCogbm90aWZ5RGF0YSwgYm9vbCBhbGxv
dyk7CiAKICAgICAvLyBNZW1iZXIgZnVuY3Rpb25zIGZvciBjYWxsaW5nIGludG8gdGhlIHBsdWct
aW4uCkBAIC0yMDQsMTMgKzIwNCwxMyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1YmxpYyBQ
bHVnaW4gewogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJ
RCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBi
b29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3Jp
cHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwg
aW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAorICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVz
cG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VV
UkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
TmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZv
aWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxl
ZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKKyAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1h
bnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFt
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5oCmluZGV4IDQwNzQwNzhkN2E4ZmI1MzhjZmY0N2RjMWFkYTRmOWQyMGI3MGQy
MmYuLmJiNmE1YjA4YzdjY2U1ZGRlZDg5OTM2MGY3YWI4MzQwZjAzOTVlNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgVVJMOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0
c2NhcGVQbHVnaW47CkBAIC01NSw4ICs1MSw4IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luU3RyZWFt
IDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHsKICAgICB1aW50NjRf
dCBzdHJlYW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtSUQ7IH0KICAgICBjb25zdCBOUFN0
cmVhbSogbnBTdHJlYW0oKSBjb25zdCB7IHJldHVybiAmbV9ucFN0cmVhbTsgfQogCi0gICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3Rh
dHVzKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJl
c3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCisgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkws
IGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaAppbmRleCBlNThkZTJjNzYwZGRiMTRjMTJjNGNiZmJmNzVjZTkyZjVhYjhlMDFh
Li42ODYyZTMwNGZlZGI4NWI3ODYzNDcwMGI5ZDZiMzVhNmMzYzIwY2VjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xMzUsMTIg
KzEzNSwxMiBAQCBjbGFzcyBQREZQbHVnaW4gZmluYWwgOiBwdWJsaWMgUGx1Z2luLCBwcml2YXRl
IFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhIHsKICAgICB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGlu
Zyh1aW50NjRfdCByZXF1ZXN0SUQpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVEaWRGYWlsKHVpbnQ2
NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIHZvaWQgZGlkRXZh
bHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQp
IGZpbmFsOwotICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVz
cG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9Ci0gICAgdm9pZCBzdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
cmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVk
VGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHN0cmVhbVdpbGxT
ZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQorICAgIHZv
aWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmll
ZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRS
ZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5n
dGgpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJl
YW1JRCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBi
b29sIHdhc0NhbmNlbGxlZCkgZmluYWw7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFt
TGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RG
OjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFs
OwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGlu
ZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxl
ZCkgZmluYWw7CkBAIC0zMDYsNyArMzA2LDcgQEAgY2xhc3MgUERGUGx1Z2luIGZpbmFsIDogcHVi
bGljIFBsdWdpbiwgcHJpdmF0ZSBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSB7CiAKICAgICBXZWJD
b3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNvcmU6OlVSTCBtX3NvdXJjZVVSTDsKKyAg
ICBVUkwgbV9zb3VyY2VVUkw7CiAKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKICAg
ICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNzFiOGNmODMzNDNj
NmNmODUyYTBkMDk3MjgzOGRmZmFkMjcwNmM4YS4uZTRjZDY1MzU2MTE2MjQ2YmZhNjhmNzRiMTZi
NDMxNTY4ZDc5NzViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCkBAIC0xNzAyLDcgKzE3MDIsNyBAQCBib29sIFBERlBsdWdpbjo6
aGFuZGxlc1BhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiB2b2lkIFBERlBsdWdpbjo6Y2xpY2tlZExp
bmsoTlNVUkwgKnVybCkKIHsKICAgICBVUkwgY29yZVVSTCA9IHVybDsKLSAgICBpZiAocHJvdG9j
b2xJc0phdmFTY3JpcHQoY29yZVVSTCkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3Jp
cHQoY29yZVVSTCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHdlYkZy
YW1lKCktPmNvcmVGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaAppbmRleCA4NzZmNmNlNDhlY2NiNjA2MzM5NDc2YTY2NjFmMjZmNGY5MGFhNDcyLi5hYWJk
NWU1MDUxYmVjMjlmNTUxMTU3MzgwNjFhNmE2MDhlZjIzMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjMsMTYgKzIzLDE1IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbHVnaW5faAotI2RlZmlu
ZSBQbHVnaW5faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25z
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTUzLDE1ICs1MiwxNSBAQCBj
bGFzcyBEZWNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwotICAgIGNsYXNzIEZsb2F0UG9pbnQ7Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwotICAgIGNsYXNzIEludFBvaW50OwotICAgIGNsYXNzIEludFJlY3Q7Ci0gICAgY2xhc3Mg
SW50U2l6ZTsKLSAgICBjbGFzcyBGbG9hdFBvaW50OwotICAgIGNsYXNzIFNjcm9sbGJhcjsKLSAg
ICBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBGbG9h
dFBvaW50OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJ
bnRSZWN0OworY2xhc3MgSW50U2l6ZTsKK2NsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBTY3JvbGxi
YXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIs
NyArODEsNyBAQCBlbnVtIFBsdWdpblR5cGUgewogY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogcHVibGljOgogICAgIHN0cnVjdCBQYXJhbWV0ZXJz
IHsKLSAgICAgICAgV2ViQ29yZTo6VVJMIHVybDsKKyAgICAgICAgVVJMIHVybDsKICAgICAgICAg
VmVjdG9yPFN0cmluZz4gbmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlczsKICAg
ICAgICAgU3RyaW5nIG1pbWVUeXBlOwpAQCAtMTY3LDEwICsxNjYsMTAgQEAgY2xhc3MgUGx1Z2lu
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogICAgIHZpcnR1YWwgdm9p
ZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcm
IHJlc3VsdCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBt
YXkgc2VuZCBhbiBIVFRQIHJlcXVlc3QuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5k
UmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJM
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXNDb2Rl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBp
bnQgcmVzcG9uc2VTdGF0dXNDb2RlKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0
aGF0IGEgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1l
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWlu
IHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE4Myw3ICsxODIsNyBAQCBjbGFz
cyBQbHVnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7CiAgICAgdmly
dHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2Vs
bGVkKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3Ry
ZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VV
UkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCisgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJl
YW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7
CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGRpZCBy
ZWNlaXZlIGRhdGEuCkBAIC0zMjMsNSArMzIyLDMgQEAgY2xhc3MgUGx1Z2luIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJLaXQ6OlRvVmFsdWVUeXBlTmFtZSkgXAogc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YktpdDo6UGx1Z2luJiBwbHVnaW4pIHsgcmV0dXJuIHBsdWdpbi50eXBlKCkgPT0gV2ViS2l0OjpT
cGVjaWZpY1BsdWdpblR5cGU7IH0gXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0j
ZW5kaWYgLy8gUGx1Z2luX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkNvbnRyb2xsZXIuaAppbmRleCBhNWM2ZmEwNDNjMzYyMjY5NDFjOGQyMTQ3YjIx
MjA4ZWMyZjI5NDc1Li5hMWY4MDdlMWU1NTA3MjNlZmVlYTE3NzEzM2I4MWRmZjRkMTc2YjM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJv
bGxlci5oCkBAIC00Myw3ICs0Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEhUVFBI
ZWFkZXJNYXA7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwotY2xhc3Mg
VVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGRjNDIxMWQwMGVkODkxMGQzNDdkOGYwY2Ex
Yjc1M2M2YjJlNmVhMWQuLmU2YWIzZWQ5YjAzMmZlMDRjMDJkZjVjNjg5MmU0N2Q0ZTY5ZDRhYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApA
QCAtODcsMTIgKzg3LDEyIEBAIGNsYXNzIFBsdWdpblByb3h5IDogcHVibGljIFBsdWdpbiB7CiAg
ICAgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlk
ZTsKICAgICB2b2lkIGZyYW1lRGlkRmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2Fu
Y2VsbGVkKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0
cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJM
JiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9u
c2VTdGF0dXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJf
dCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVS
TCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2Vp
dmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZU5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJy
aWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXND
YW5jZWxsZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0
aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
TmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBs
YXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6
U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlk
ZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVz
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExv
YWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXND
YW5jZWxsZWQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAppbmRleCBmMDc1MmJkOTgyYTE1M2JhZDRiMjkyNDVmMTAzMjE5NzBl
YjNhYzkxLi4zY2FhYWM5YWMxY2QzZGJkNmJmNDZmZWM1ZDcxZjE0MWRmNDViMzk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE2
Myw3ICsxMTYzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVzdChVUkxSZXF1
ZXN0KiByZXF1ZXN0KQogICAgIFJlZjxQbHVnaW5WaWV3PiBwcm90ZWN0KCp0aGlzKTsKIAogICAg
IC8vIEZpcnN0LCBjaGVjayBpZiB0aGlzIGlzIGEgamF2YXNjcmlwdDogdXJsLgotICAgIGlmIChw
cm90b2NvbElzSmF2YVNjcmlwdChyZXF1ZXN0LT5yZXF1ZXN0KCkudXJsKCkpKSB7CisgICAgaWYg
KFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVybCgpKSkgewog
ICAgICAgICBwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QocmVxdWVzdCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZv
cm1GcmFtZUxvYWRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAKIHZvaWQgUGx1Z2lu
Vmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiB7
Ci0gICAgQVNTRVJUKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51cmwo
KSkpOworICAgIEFTU0VSVChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVl
c3QoKS51cmwoKSkpOwogCiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fcGx1Z2luRWxlbWVu
dC0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNw
cAppbmRleCA1YzUxYzQ1ZjY0MDlkZWVkZDU1ZTkzYzBmZDk4OGI3Yzg3M2Q4MzFhLi4zZjcwYjFl
ODdiOWFmZThmM2YwNjVhNDE5Y2NkYjk1MmNlZmZjZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAK
QEAgLTExNSw3ICsxMTUsNyBAQCBWZWN0b3I8UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyOjpwbHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIHN0ZDo6b3B0aW9uYWw8VgogI2VuZGlmIC8vIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogfQogCi1WZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQYWdlJiBwYWdl
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBX
ZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIGNv
bnN0IFVSTCYgdXJsKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBv
cnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyczsKICAgICBh
dXRvIHBsdWdpbnMgPSBwbHVnaW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdp
bkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyLmgKaW5kZXggMWJiYWQ1YTc5ZmIxMWVjNjgwNzQ5NDdkMDA3YzNjZDU2
ZTU4MTlkZC4uODQ2NDJkN2ZjMDExZjhjYWNmNjQxYmIxYWVlOGYyODIzOTNjMDdlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiAgICAgV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyKCk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1
Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBXZWJD
b3JlOjpVUkwmKSBmaW5hbDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlz
aWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZv
aWQgcmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAyYmZhZWU0NzZlMWY0YmNjY2RiMjY2MGZlNWQ4
ZTY2YmQ2NzRhM2Q3Li5kY2Q2ZGE1ODA2YmIzMzJjMjRmZmVjODUxOGVlNTA5NmNiYWU3ZjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uaApAQCAtNzksMTMgKzc5LDEzIEBAIGNsYXNzIFdlYlNXQ2xpZW50Q29u
bmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24sIHB1Ymxp
YyBJCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudERhdGEmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyPiYpIGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIHZv
aWQgbWF0Y2hSZWdpc3RyYXRpb24oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3Jp
Z2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbihXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRpb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90
IG1hdGNoUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpOwogICAgIHZvaWQgZGlkR2V0UmVnaXN0cmF0aW9ucyh1
aW50NjRfdCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpOwotICAgIHZvaWQgd2hlblJlZ2lzdHJhdGlvblJlYWR5
KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6
OlVSTCYgY2xpZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHdoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJl
YWR5Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RyYXRpb25SZWFkeSh1aW50NjRf
dCBjYWxsYmFja0lELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKTsK
IAotICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRp
b25zQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdl
dFJlZ2lzdHJhdGlvbnNDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVzb2x2ZVJl
Z2lzdHJhdGlvblByb21pc2UoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBlODcz
ZmZmZDJhOGM3MDFhZTg2OTA1Y2U5ZTU3MDRmMWE3YjljOWI0Li5kOTc5NDY5OWM5MWRjNWQ3NTZk
YzMzYmRiMjU0NWM1ZjVkYzA0MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
QEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q28KICAgICB2b2lkIG1hdGNo
QWxsKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dHNNYXRjaEFsbENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xhaW0oV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7
CiAgICAgdm9pZCBza2lwV2FpdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgZmlu
YWw7CisgICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdCYpIGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAg
IHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IDAzNzAxMDZlOTJmMWZiMmE0YWJkODUxMTE2
YzcyNjJmZTQ1NDAwZmIuLjYyNmY2MWE1MGE2NDU5ZDQ5NTY3ZDY4YmZlY2JhODc3YmJhNmFiOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTU3LDEwICs1NywxMCBAQCBjbGFz
cyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VXNlckNv
bnRlbnRQcm92aWRlciwgcHJpdgogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
aWRlbnRpZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBhZGRVc2Vy
U2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYp
OwotICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdp
dGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IFVSTCYpOwogICAgIHZvaWQg
cmVtb3ZlVXNlclNjcmlwdHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAgIHZvaWQg
YWRkVXNlclN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRXaXRoVVJMKElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lk
IHJlbW92ZVVzZXJTdHlsZVNoZWV0V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwg
Y29uc3QgVVJMJik7CiAgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldHMoSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAppbmRleCBmOTM2NjdhZTQ4ZTlkNzgxZjMyZjI2YTEwYTNhNTJmN2Nm
YThjMzE2Li41YTQ2ZWY4MDdkNzAxNzNlOWZjMTgzMzI3ZDc2MWJmYjI1Y2M4ZDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGll
bnQ6OnVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZl
Y3RvcjwKIAogI2VuZGlmCiAKLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYg
Y2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QKK1N0cmluZyBX
ZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25l
ZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwm
IHVybCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGlmICghV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJ
bmRleCwgY2hhbGxlbmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS5wYWdl
SUQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMDk0OGY2N2FiZWMxNGQ4NGU2ZGY1NTY0Mjcx
ZWQ2ZTEzZDk0MjRjZS4uM2ZlZTBjYjAxYjM2ZGI4NmY2ZjNhZjAzOTNjYWEzYTE1ZjM1ZDAyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIFdlYkNocm9tZUNs
aWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIHZvaWQgc2No
ZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSBmaW5hbDsKICAgICBib29sIGFkanVzdExheWVy
Rmx1c2hUaHJvdHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFncykg
ZmluYWw7CiAKLSAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgZmlu
YWw7CisgICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJMJiwgY29u
c3QgSGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIGZpbmFsOwogCiAjaWYgUExB
VEZPUk0oV0lOKQogICAgIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpIGZp
bmFsIHsgfQpAQCAtMzI1LDcgKzMyNSw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIGJvb2wgdW53cmFwQ3J5cHRvS2V5
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IGZpbmFsOwog
I2VuZGlmCiAKLSAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVu
c2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0
IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNo
YWxsZW5nZVN0cmluZywgY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAKICNpZiBFTkFCTEUoVEVM
RVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGhhbmRs
ZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBjZWMz
MTQyYjE2ZTM1ZDAwMmNmYzhjNDJmNGU3ODFiODJlYmU4NThjLi41ZDhlN2Q2ZDBmYTUxYTEwNTFk
ODBjYTE3NjZlZTM3N2ZiY2YzY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAt
NDQsNyArNDQsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpDb250ZXh0TWVudUNsaWVudCB7CiBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVEZXN0
cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIG92ZXJy
aWRlOwogICAgIGJvb2wgaXNTcGVha2luZygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXgg
OWY3ZDdmYzUwYjZlYzhhZWU1NmJiMjU5YjczMzQwYzQwZDkzNjcyNy4uMWFkNGMzZGUyY2I3ZDM4
ZTYyNjJjMTk3YWFiMjRjY2E2ZmVkYTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC01MCw3ICs1MCw3
IEBAIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAg
ICAgdm9pZCBkaWRDb25jbHVkZUVkaXREcmFnKCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpF
bGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVy
cmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYzIzNTM5NTM1MzJiMDc3
NzAyMjA1NzNmMmRmMzZiOGNjMzY2ZjdhYy4uY2E5ZTYzN2JjNTk3ZWE2MjlhMTZmMjA3MTBhNDRi
NWYxNGUzNWFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNzk2LDcg
KzE3OTYsNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd1NjcmlwdChib29sIGVu
YWJsZWRQZXJTZXR0aW5ncykKICAgICByZXR1cm4gIXBsdWdpblZpZXcgfHwgIXBsdWdpblZpZXct
PnNob3VsZEFsbG93U2NyaXB0aW5nKCk7CiB9CiAKLWJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsKQorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxB
Y2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCmluZGV4IGMxYjljZDBmOTQzMzI3OWNkZDg0YzBjOTVmYTgxYjk4NGU1ZjU0ZTgu
LjNjNzE2Njg1MGIyNTE1NjZkNWU0NDBlZTNmNTkzN2NiOWNjZjcwMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC05NywxMyArOTcsMTMgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJD
bGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZv
aWQgZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKmRldGVjdGlvblJlc3Vs
dHMpIGZpbmFsOwogI2VuZGlmCiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZU1haW5Eb2N1bWVu
dCgpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgV2Vi
Q29yZTo6VVJMJiBjdXJyZW50VXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG5ld1VybCkgZmluYWw7
CisgICAgdm9pZCBkaXNwYXRjaFdpbGxDaGFuZ2VEb2N1bWVudChjb25zdCBVUkwmIGN1cnJlbnRV
cmwsIGNvbnN0IFVSTCYgbmV3VXJsKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWREaXNw
YXRjaE9ubG9hZEV2ZW50cygpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkwoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2Fu
Y2VsQ2xpZW50UmVkaXJlY3QoKSBmaW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxU
aW1lIGZpcmVEYXRlKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZpcmVEYXRlKSBm
aW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgZmlu
YWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKICAg
ICB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOwpAQCAtMTU1
LDggKzE1NSw4IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRl
bShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50KCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRl
bnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsK
LSAgICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2Nr
RW50aXJlUGFnZSkgZmluYWw7CisgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERldGVj
dFhTUyhjb25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7CiAKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIGZpbmFsOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOwpAQCAtMTg5LDkgKzE4
OSw5IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNy
ZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWRE
b2N1bWVudExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIGZpbmFsOwogCi0gICAgdm9p
ZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJikgZmluYWw7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJp
bmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikgZmluYWw7CiAgICAgCi0gICAgU3RyaW5nIHVz
ZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBTdHJpbmcgdXNlckFnZW50
KGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5KCkgY29uc3QgZmluYWw7CiAKQEAgLTIxMCwyMCArMjEwLDIwIEBAIGNsYXNzIFdlYkZy
YW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
IHsKICAgICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBX
ZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBi
b29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0
aCwgaW50IG1hcmdpbkhlaWdodCkgZmluYWw7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVn
SW5FbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVVJMJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBmaW5hbDsKICAgICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdl
YkNvcmU6OldpZGdldCopIGZpbmFsOwogICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2Vi
Q29yZTo6V2lkZ2V0JikgZmluYWw7CiAgICAgCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkNv
cmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwm
KSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdM
UG9saWN5Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNv
cmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBm
aW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZh
bHVlcykgZmluYWw7CiAgICAgCi0gICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0
Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkg
ZmluYWw7CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CiAgICAgU3RyaW5nIG92
ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2xl
YXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIGZpbmFsOwpA
QCAtMjQ5LDcgKzI0OSw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKIAogICAgIGJvb2wgYWxsb3dTY3JpcHQo
Ym9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIGZpbmFsOwogCi0gICAgYm9vbCBzaG91bGRGb3JjZVVu
aXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAg
ICBib29sIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFVSTCYp
IGZpbmFsOwogCiAgICAgUmVmPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0
ZU5ldHdvcmtpbmdDb250ZXh0KCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKaW5kZXggZTk3NzNlYTc4MGEzMzJhZTU5ZjAyNzhhZTgzYTMwNzZkZDI3OTc2ZS4uMWQz
ZWVlNzk4M2NlZWMyMTEwYzJmODU3YTMyYjRlZTVjNmUxZjI5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKQEAgLTYwLDkgKzYwLDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Nh
bWVTaXRlSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFjZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU3ViZnJhbWVMb2FkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTdHJp
bmdVdGlsaXRpZXMuaCIKQEAgLTM2NCw3ICszNjQsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
bgogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CiB9CiAKLVdlYkNvcmU6
OlVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitVUkwgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyB1
cmxTdHJpbmc7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZy
b21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSks
IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDZlZWMwOWIxZWQyMmI5YWQw
NjhlM2Y2OTI0YjU5MjU3NDUxNWQxNDYuLjc2YTgxMGFmZDNlMGZmNTA3OTNiNWRmMTVjZWVjODNh
MjRhMTRhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ3LDEzICs0Nywx
MyBAQCBjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZv
cm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSog
Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVz
U3RyYXRlZ3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJM
Jiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nv
b2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3Ry
YXRlZ3kKICNpZiBQTEFURk9STShJT1MpCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFdlYlBsYXRm
b3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZh
dGUgV2ViQ29yCiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
LSAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJM
IHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2Vi
Q29yCiAgICAgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6
OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAg
IFdlYkNvcmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
CisgICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAog
ICAgIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRUeXBl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRl
eCAzYmQ3ZDFmYmIzOGNiMjA5YWZkYjcxZGViMThiOWQ5MWVkZDkxMzBmLi5hZTU5NTJkMDhlNjQ5
NzYxNjBjOGEzNDQ5NGI0YWQ2MGJhYTk3MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCkBAIC00OCw4ICs0OCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUmVuZGVySW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3RyaW5nVHJ1
bmNhdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9y
dCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAtMTI5LDcgKzEy
OSw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkg
ewogICAgICAgICB0aXRsZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICBpZiAo
dGl0bGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgdGl0bGUgPSB1c2VyVmlzaWJsZVN0cmluZygo
TlNVUkwgKil1cmwpOworICAgICAgICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KHVybCk7CiAgICAgfQogCiAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZWxlbWVudCk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9p
ZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICAgICAgICAgIGZpbGVuYW1lID0gZG93bmxvYWRGaWxl
bmFtZTsKICAgICB9CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIGltYWdlSGFuZGxlLCBpbWFn
ZVNpemUsIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCBTdHJpbmcoW1tyZXNwb25zZSBVUkxd
IGFic29sdXRlU3RyaW5nXSksIHVzZXJWaXNpYmxlU3RyaW5nKChOU1VSTCAqKXVybCksIGFyY2hp
dmVIYW5kbGUsIGFyY2hpdmVTaXplKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1lLCBpbWFnZUhh
bmRsZSwgaW1hZ2VTaXplLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgU3RyaW5nKFtbcmVz
cG9uc2UgVVJMXSBhYnNvbHV0ZVN0cmluZ10pLCBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCks
IGFyY2hpdmVIYW5kbGUsIGFyY2hpdmVTaXplKSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDFmOTBjNGE1NzQwZjQx
NTA5ZDhlODViMTlkNGEwN2U4MDA0M2EyNTQuLjNkMWZmODQ5MDMxMTExMTUxY2EyZTg3YzhjNGU3
MDdjMmYxMzM5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC00MCw3
ICs0MCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tl
eWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNV
UkxFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRM
aW5rVGFibGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9W
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oCmluZGV4IDA5MjNlNDYwOTU5YjBmMzRhOTQyZWQ5
MjRmMDQ0YzUzZjg0YzMzZTYuLjE3ZmE4ZWNjYTc4YmE4YWMyNzY4MTY1M2E3ZDJlN2ZkZDcwZmUy
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRM
aW5rVGFibGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBW
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaXNpdGVk
TGlua1N0b3JlICwgcHJpdgogICAgIGV4cGxpY2l0IFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVy
KHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9y
ZS4KLSAgICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJl
ZFN0cmluZ0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJD
b3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJM
LCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBh
ZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkg
b3ZlcnJpZGU7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAyNTYwNzY5ZmJlNGI1YjM3
YzEyZDJlN2UxODQyZDAxYzNlOTE0NGVmLi5jMzI4OTdiM2I4ZTJiNWMxNjkyNGVlOWUzMDI0NDY2
NDY5MGMyNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCkBAIC01MDksNyArNTA5LDcgQEAgdW5zaWduZWQgV2ViRnJhbWU6OnBlbmRpbmdVbmxv
YWRDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21X
aW5kb3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKLWJvb2wgV2ViRnJh
bWU6OmFsbG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0Citi
b29sIFdlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFVSTCYgdXJsKSBjb25zdAog
ewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggMmUwM2YyYmQ1NTYyNTQ0
ZDY3OGYxYTgzYTk1MzhjY2ZlNGEzNDY4Yi4uZWI4MTM2YWI3NzEwYTRlZDEzMGU2Nzk4MDFiOTUw
ZDllY2E1OGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5oCkBAIC01Myw3ICs1Myw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJF
bGVtZW50OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgVVJMOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwNiw3ICsxMDUsNyBAQCBjbGFzcyBXZWJGcmFtZSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUZyYW1lPiB7
CiAgICAgLy8gV0tCdW5kbGVGcmFtZSBBUEkgYW5kIFNQSSBmdW5jdGlvbnMKICAgICBib29sIGlz
TWFpbkZyYW1lKCkgY29uc3Q7CiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBXZWJDb3Jl
OjpVUkwgdXJsKCkgY29uc3Q7CisgICAgVVJMIHVybCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkNl
cnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKICAgICBTdHJpbmcgaW5uZXJU
ZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3Q7CkBAIC0xNDEsMTEgKzE0
MCwxMSBAQCBjbGFzcyBXZWJGcmFtZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6OkJ1bmRsZUZyYW1lPiB7CiAgICAgCiAgICAgdW5zaWduZWQgcGVuZGluZ1VubG9h
ZENvdW50KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBhbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0
IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgYWxsb3dzRm9sbG93aW5nTGluayhjb25z
dCBVUkwmKSBjb25zdDsKIAogICAgIFN0cmluZyBwcm92aXNpb25hbFVSTCgpIGNvbnN0OwotICAg
IFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKSBjb25zdDsKLSAgICBTdHJpbmcgbWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29u
c3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lRm9y
UmVzb3VyY2VXaXRoVVJMKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIFN0cmluZyBtaW1lVHlwZUZv
clJlc291cmNlV2l0aFVSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4dERp
cmVjdGlvbihjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCAyMmI4MDkwMTEyOTc2MjgwZGIzZmVmMjE4OGUyZTdiOGFi
ZWQ5NGQ5Li4wMjk1NjA1YTE0ZDgzYjllOWY5ODZmZGI4ZDY0NGI1M2RlNzI5N2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTI1Nyw3ICsx
MjU3LDcgQEAgdm9pZCBXZWJQYWdlOjpzZW5kQ2xvc2UoKQogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6Q2xvc2VQYWdlKGZhbHNlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFVS
TEluRnJhbWUoV2ViQ29yZTo6VVJMJiYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJQ
YWdlOjpsb2FkVVJMSW5GcmFtZShVUkwmJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAg
V2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJ
RCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTEzMjAsNyArMTMyMCw3IEBAIHZvaWQgV2ViUGFnZTo6
bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBwbGF0Zm9ybURp
ZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBhdXRvIHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXpl
KCkpOwotICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0Vt
cHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3Ry
aW5nKTsKKyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNF
bXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNl
VVJMU3RyaW5nKTsKICAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklE
LCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFy
YW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2Vy
RGF0YSk7CiB9CiAKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVy
bmF0ZUhUTUwoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewogICAgIHBs
YXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIFVS
TCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFu
a1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKKyAgICBV
UkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RG
OjpibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsK
ICAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBsb2FkUGFyYW1ldGVycy51bnJlYWNoYWJsZVVSTFN0
cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMudW5yZWFj
aGFibGVVUkxTdHJpbmcpOwogICAgIFVSTCBwcm92aXNpb25hbExvYWRFcnJvclVSTCA9IGxvYWRQ
YXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgp
IDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmlu
Zyk7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSksIGxvYWRQ
YXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKQEAgLTMzNzMsNyArMzM3Myw3IEBAIHZvaWQgV2ViUGFn
ZTo6YWRkQ29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSBtZXNz
YWdlU291cmNlLCBNCiAgICAgICAgIGZyYW1lLT5hZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlU291
cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6c2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcG9ydERhdGEpCit2
b2lkIFdlYlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgVVJMJiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXBvcnREYXRhKQog
ewogICAgIGF1dG8gcmVwb3J0ID0gcmVwb3J0RGF0YS50YWtlRGF0YSgpOwogICAgIGlmICghcmVw
b3J0KQpAQCAtNTg3NCwxNCArNTg3NCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmltYWdlT3JNZWRpYURv
Y3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogdm9pZCBXZWJQYWdl
OjphZGRVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRp
bWUgaW5qZWN0aW9uVGltZSkKIHsKLSAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQg
eyBXVEZNb3ZlKHNvdXJjZSksIFVSTChXZWJDb3JlOjpibGFua1VSTCgpKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsK
KyAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVS
TChXVEY6OmJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBp
bmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRy
b2xsZXItPmFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29y
bGQoKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6YWRkVXNlclN0
eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
dXNlclN0eWxlU2hlZXR7IHNvdXJjZSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZl
bCB9OworICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0IHtzb3VyY2Us
IFdURjo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5q
ZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9OwogCiAgICAgbV91c2VyQ29udGVudENv
bnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5v
cm1hbFdvcmxkKCksIFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNTBhYjRmZWQ5ZTRhNmNkNDMxMzQ1
Mjc2NmI4OTgwZDg3NWNjZjg4Li40YjVkOWQ4OGZlNWY5YmY5ZDQ4YzdlM2JiOTNkNjg4NTc0ZmRj
MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0x
NTksNyArMTU5LDYgQEAgY2xhc3MgU2VsZWN0aW9uUmVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKLWNsYXNz
IFVSTDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWNDbGlja1R5cGUg
OiBpbnQ4X3Q7CkBAIC0zMTYsNyArMzE1LDcgQEAgY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVAKICNl
bmRpZgogCiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlELCBNZXNz
YWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHJlcXVlc3RJ
RCA9IDApOwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
KTsKKyAgICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgVVJMJiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJik7CiAgICAgdm9pZCBl
bnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudCh1aW50NjRfdCBmcmFtZUlELCBXZWJD
b3JlOjpTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpOwogCiAgICAgLy8gLS0g
Q2FsbGVkIGJ5IHRoZSBEcmF3aW5nQXJlYS4KQEAgLTMzNCw5ICszMzMsOSBAQCBjbGFzcyBXZWJQ
YWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFn
ZT4sIHB1YmxpYyBJUAogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoY29uc3Qg
V2ViRnJhbWUmKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoV2ViRnJhbWUqKTsKICAgICB2b2lk
IHNob3coKTsKLSAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0
OwotICAgIFN0cmluZyB1c2VyQWdlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBj
b25zdDsKLSAgICBTdHJpbmcgcGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikg
Y29uc3Q7CisgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBTdHJp
bmcgdXNlckFnZW50KFdlYkZyYW1lKiwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHBs
YXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIFdlYkNvcmU6OktleWJvYXJk
VUlNb2RlIGtleWJvYXJkVUlNb2RlKCk7CiAKICAgICB2b2lkIGRpZEluc2VydE1lbnVFbGVtZW50
KFdlYkNvcmU6OkhUTUxNZW51RWxlbWVudCYpOwpAQCAtNDE5LDggKzQxOCw4IEBAIGNsYXNzIFdl
YlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQ
YWdlPiwgcHVibGljIElQCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBXZWJD
b3JlOjpVUkwmKTsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9s
aWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJik7
CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChX
ZWJGcmFtZSosIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgCiAgICAgZW51bSBjbGFzcyBJbmNs
dWRlUG9zdExheW91dERhdGFIaW50IHsgTm8sIFllcyB9OwpAQCAtNjg1LDcgKzY4NCw3IEBAIGNs
YXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpC
dW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRleHRNZW51QXRQ
b2ludEluV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYKIAotICAgIGJv
b2wgaGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgaGFz
TG9jYWxEYXRhRm9yVVJMKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxl
UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtOTQzLDcgKzk0
Miw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGV0
ZWN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YURldGVjdGlvbkNvbnRleHQuZ2V0
KCk7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIo
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmln
aW5hdGluZ1VSTCwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKKyAg
ICB2b2lkIHNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVuYW1lLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsb25nIHNpemUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9p
ZCBzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdV
UkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3Qg
U3RyaW5nJiBwZGZVVUlEKTsKQEAgLTExNTksNyArMTE1OCw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVi
bGljIElQCiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZv
aWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
Z05hbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
YWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFz
ZVVSTCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgLy8g
QWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKQEAgLTExOTcsNyArMTE5Niw3IEBAIGNsYXNz
IFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5k
bGVQYWdlPiwgcHVibGljIElQCiAgICAgc3RhdGljIGJvb2wgc2Nyb2xsKFdlYkNvcmU6OlBhZ2Uq
LCBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsK
ICAgICBzdGF0aWMgYm9vbCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpT
Y3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAKLSAg
ICB2b2lkIGxvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsK
KyAgICB2b2lkIGxvYWRVUkxJbkZyYW1lKFVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAg
IGVudW0gY2xhc3MgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07CiAgICAgdm9p
ZCByZXN0b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGU+JiwgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QsIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjpPdmVyd3JpdGVFeGlzdGluZ0l0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZDc1YWNlZWEwZTAwMDIzYWIy
MTliMjkxMzllMzYyMjZhZjljNmM3Ni4uMjdjYWEyN2NlNTcxZTIyYWEwODE5NmEyMmM2NzJiNDU4
YjAzZGE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yOCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
TGVnYWN5UmVjZWl2ZXIgewogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dy
b3VuZCkKIAogICAgIEFkZENvbnNvbGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGVudW0gTWVz
c2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBlbnVtIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWws
IFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgU2VuZENTUFZpb2xhdGlv
blJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpVUkwgcmVwb3J0VVJMLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCisgICAgU2VuZENTUFZpb2xhdGlvblJlcG9ydCh1
aW50NjRfdCBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJl
cG9ydERhdGEpCiAgICAgRW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQodWludDY0
X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6SW5pdCBl
dmVudEluaXQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHb1RvQmFja0ZvcndhcmRJdGVt
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQsIGVudW0gV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBi
YWNrRm9yd2FyZFR5cGUsIGVudW0gV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCkKICAgICBUcnlSZXN0b3JlU2Nyb2xsUG9zaXRp
b24oKQogCi0gICAgTG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3QgZnJh
bWVJRCkKKyAgICBMb2FkVVJMSW5GcmFtZShVUkwgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQogICAg
IExvYWRSZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJz
KQogICAgIExvYWREYXRhKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0
ZXJzKQogICAgIExvYWRBbHRlcm5hdGVIVE1MKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJz
IGxvYWRQYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggZTU4ZTlmMWRk
N2IwNzdmNTYxY2E1MWM5MmZlZjcxNWIwYWUxNDI5ZC4uNzM1NjZhMTMzODVkZTNhYWM2NDZmYjk0
OTZiZGRhZmNiNWFmNDZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCkBAIC00MCw5ICs0
MCw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUHJpbnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAj
aW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCkBAIC00NTQsMTMgKzQ1
NCwxMyBAQCBib29sIFdlYlByaW50T3BlcmF0aW9uR3RrOjpjdXJyZW50UGFnZUlzTGFzdFBhZ2VP
ZlNoZWV0KCkgY29uc3QKICAgICByZXR1cm4gKG1fbnVtYmVyVXAgPCAyIHx8ICEoKG1fcGFnZVBv
c2l0aW9uICsgMSkgJSBtX251bWJlclVwKSB8fCBtX3BhZ2VQb3NpdGlvbiA9PSBtX251bWJlck9m
UGFnZXNUb1ByaW50IC0gMSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBXZWJQcmludE9wZXJhdGlvbkd0
azo6ZnJhbWVVUkwoKSBjb25zdAorVVJMIFdlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFtZVVSTCgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX3ByaW50Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OlVSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX3ByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKTsKLSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVu
dExvYWRlci0+dXJsKCkgOiBXZWJDb3JlOjpVUkwoKTsKKyAgICByZXR1cm4gZG9jdW1lbnRMb2Fk
ZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKTsKIH0KIAogdm9pZCBXZWJQcmludE9w
ZXJhdGlvbkd0azo6cm90YXRlUGFnZUlmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKaW5k
ZXggYjI2MmRmMzRjODA1ZmFhY2RmMjAwNzgxZGI3YWFmZTA0MmU3ZjUyNC4uYjdlMTQ0NDI5NGIy
NTEyN2Q0NTJmMTJhNDhiMmZhZTg5NTgyMGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKQEAg
LTQwLDcgKzQwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a1BhZ2VSYW5nZSBHdGtQYWdlUmFuZ2U7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQcmludENvbnRleHQ7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwotY2xhc3MgVVJMOwogfTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05Nyw3ICs5
Niw3IEBAIGNsYXNzIFdlYlByaW50T3BlcmF0aW9uR3RrIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
UHJpbnRPcGVyYXRpb25HdGs+IHsKICAgICB2b2lkIHByaW50UGFnZXNEb25lKCk7CiAgICAgdm9p
ZCBwcmludERvbmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgc2Vu
ZFByaW50RmluaXNoZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIFdlYkNv
cmU6OlVSTCBmcmFtZVVSTCgpIGNvbnN0OworICAgIFVSTCBmcmFtZVVSTCgpIGNvbnN0OwogCiAg
ICAgV2ViUGFnZSogbV93ZWJQYWdlOwogICAgIEdSZWZQdHI8R3RrUHJpbnRTZXR0aW5ncz4gbV9w
cmludFNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4
IGJlZDI4N2RmYWM5Yjk0NGU0MzQyOGYyMjQ3MzMxNjBmMjc0MDYxZWQuLjQ0YWZlZWMyMGYxZWIx
N2MyMjU4YjNjNjMyYTE5MzA2OWJmYjQxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTExNCwxMiArMTE0LDEyIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
UGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2lu
Y2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKICNpZiAhT1MoV0lORE9XUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGRiYzU3OWI5OTVmMTliYzMyOTUxY2M4
MDJlNjVhN2ZmODdhMjgxNDIuLjYyZjM5MDU3ZTEyZGQzMjA1ZjkwMzUyNTdhZTE0OTBkZWE2YTM2
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQpAQCAtNjAsNyArNjAsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Njcm9sbGVySW1w
RGV0YWlscy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8YWxnb3JpdGhtPgogI2ltcG9ydCA8ZGlz
cGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpAQCAtNzEsNiArNzAs
NyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJLmg+CiAjaW1wb3J0IDxzdGRpby5oPgorI2lt
cG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1w
b3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLmgiCkBAIC00MzYsNyArNDM2LDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBpZiAoTlNVUkwgKm9yaWdpbkFzVVJMID0gb3JpZ2luKCpwYWdlKSkK
LSAgICAgICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmplY3Q6dXNlclZpc2libGVTdHJpbmco
b3JpZ2luQXNVUkwpXTsKKyAgICAgICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmplY3Q6V1RG
Ojp1c2VyVmlzaWJsZVN0cmluZyhvcmlnaW5Bc1VSTCldOwogICAgIH0KIAogICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlf
REVGQVVMVCwgMCksIFthY3RpdmVQYWdlVVJMc10gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwCmluZGV4IDZiNGE2NmJmYTM4ZjA1MzJhMGNiZWE1OTAxNDIzZGE1NWZmZDg4NjAuLjNiNWFi
YTIzMzgwNDQxMTM4NzhjZTA4YWMyMGJkMGYyZDU3NjA5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAKQEAgLTM1LDkgKzM1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
U3RyYXRlZ2llcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2Nv
cGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggOGE1
NmE5ZTc5OWZhMWZmODI0OWYwMTQwY2FkMzgxYTVlMmFjYTgzYi4uZWRmNjUxZmE2ZGZiY2EzMThh
OGY2ZjIwN2Y0YjY0OWFkZTFiZjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC01
NSw3ICs1NSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSB7CiAKICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRp
cmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6VVJM
JiByZWRpcmVjdFVSTCkgZmluYWw7CisgICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2
ZWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKSBmaW5h
bDsKICAgICAKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNvcmU6OlJlc291cmNl
TG9hZFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9y
aXR5OjpWZXJ5TG93KSBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKSBm
aW5hbDsKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKIAogICAgIHZvaWQgc3RhcnRQ
aW5nTG9hZChXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQ
aW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogCi0gICAgdm9pZCBwcmVjb25uZWN0
VG8oV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOworICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3Qg
VVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUo
Y29uc3QgU0hBMTo6RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJikgZmluYWwgeyB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3Ry
YXRlZ3kgewogICAgICAgICBGaW5kT25seQogICAgIH07CiAgICAgCi0gICAgSG9zdEluZm9ybWF0
aW9uKiBob3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBG
aW5kT25seSk7CisgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0IFVSTCYsIENy
ZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0
cyhIb3N0SW5mb3JtYXRpb24qLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJpbmdIYXNoPiBI
b3N0TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUF0dHIu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQppbmRleCBlOGY3NmYx
NjRlMDY1ZjgwMjhlOWE2ZjY3ZWEzNWQ1MmViN2VjODc1Li4yMTZiYTY1NDgwNzFjNjZkMWE1YTYw
NGQ5Y2RhZGMzYWNiMjk5ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQXR0ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5t
bQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkF0dHIqPihyZWlu
dGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01CbG9iLm1tCmluZGV4IDRlNmVkYzU2YTYzZmY0Y2E3Y2Y0YjQ2Y2UxYzc3
MjQ4MzkxMTNjNmUuLmRlNTkxM2NhMTg2MDBjOGVkM2M5NTJiMWE5NjlkN2VlZWRiNzUyZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCkBAIC0zMSwxMCArMzEsMTAgQEAK
ICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdl
YkNvcmU6OkJsb2IqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbQppbmRleCBkMWI1ZWFiZDc1ZDZmYWI2YzdjY2M3ZDY2
YWZmMjNkNGMyMTIwMWQ0Li43YmZmZmRjMjFkYmEwODk3ZjY2ZmU1YWUxNDU1M2M1ZWM1MzdiZjQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTQ2hhcnNldFJ1
bGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0NoYXJzZXRSdWxl
Lm1tCkBAIC0zMCw5ICszMCw5IEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiBAaW1wbGVtZW50YXRpb24gRE9NQ1NTQ2hhcnNldFJ1bGUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQppbmRleCA4ODA0ZjI0NTAw
YmQ2ZThlZjdjMmI2MGU0NzA2N2U2YzkyZDNlMDAzLi5jNTE3OGFlMjAxODRjNjJmYjNkYTBhZGZl
Njg3ZTQzZDRhZTUyYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTSW1wb3J0UnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTSW1wb3J0UnVsZS5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYUxpc3QuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNT
U0ltcG9ydFJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJu
YWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVk
aWFSdWxlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU01lZGlhUnVsZS5t
bQppbmRleCAxNTlhOWE0OTQ5ODdiZDU0NTE5Y2JkNjJlNDMwOTAxYTdkMGM4YzllLi5lYjVkY2Yy
MmY3Y2ZiOGM2MTY3OTk3OWE1YTMyNDgyNTNmOWY5ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFMaXN0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpDU1NNZWRpYVJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNT
U1J1bGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQ1NTUGFnZVJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTUGFnZVJ1bGUubW0KaW5kZXggZjM2MjIzMWNlNWJjZmQ2ZGVhNjVmMTFkMzE0YzQxYmRjOWY5
MzQyOS4uYjZiYzI3ODA5OWY4MjQ3NzE3YjJmOWI3MjkxYmY5M2JmZTgxNTE0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQYWdlUnVsZS5tbQpAQCAtMzQsOSArMzQs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
dHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1BhZ2VSdWxlKj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmluZGV4IDM1YTg5MzQ5
YzMyMTI4YmY5MzcyNWI2NmZhYzQ2NjY0ODhkNmUwNTguLjA1NWVhOWVjNGFiNWE1MTIzOTc2OGMz
Zjc3YjllMDM2OTllNzk3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgIkV4
Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6RGVwcmVjYXRlZENTU09NVmFsdWUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCmluZGV4IGQ0OGNiM2Y5MjI5ZGRiMmJkNjNk
ZDk5ZjA5MWZkNWJjNWM2NTJkMGYuLmExMmIwZThjOGYwNzc3MDE2OGU5OGNiN2FhNzU1MWQ3YWZk
NWIyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCkBAIC0z
NCwxMCArMzQsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJh
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWlu
dGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KaW5k
ZXggMmQ5ZmVmZmZjMTU0MDBkOTg3MzMxMzNjOGEzNzRmMWQ2ZTkzOGVmOC4uYjNiMDdmMzM5ODY4
NmRlZGJkMGRkMmM5MjQ2NDE5YTFlY2ZkNzY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KQEAgLTM2LDEwICszNiwx
MCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbio+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZVJ1bGUubW0KaW5kZXggOGE0Y2ZmMzBj
ZGQ1NTMxMmY3ZGQ0MjdlNTEyMWEwNjYxZDEwYjkwOS4uMmFlMTkxM2IyZTQzZjgzMTJmZWI0MDg0
MmFhOGY5N2UwZmI0ZjY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUNTU1N0eWxlUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTU3R5bGVSdWxlLm1tCkBAIC0zNCw5ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhl
Y1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6Q1NTU3R5bGVSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNT
U1N0eWxlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVT
aGVldC5tbQppbmRleCA4YzI0MDYwMTZjMGVhNWNlYmFlZWFkZDZkZmQ5OTU5NzE1MTA4OGFkLi4y
NjlmMDI0OGM3YzYwMTQwZTQ3NGI4ODQwN2IwMGEzODAwNjVmZmI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQpAQCAtMzYsOSArMzYsOSBA
QAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqPihyZWludGVycHJldF9jYXN0PFdl
YkNvcmU6OlN0eWxlU2hlZXQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQ1NTVmFsdWUubW0KaW5kZXggMGM2ZTA3NGQ4ZjNkMTUwNTAwMDkxYjExMWRkOTk4
N2M4OGFhNzM4Zi4uYjc3ZDRiODcyMDY1OTYzMDhjNzMyZjhhZjM0YzE2MTQ4OWY2MjFkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbQpAQCAtMzEsMTAgKzMx
LDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01WYWx1ZSo+KF9pbnRlcm5hbCkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRhdGEubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQppbmRleCA4YzNi
NGQ0YTU4MmZlOTQ3YTBjMzhkMDY0ZjlhMTI5MWI1OTljOWMzLi5iMzBlOTU3OTQwZWQ5NjY1NzVi
YzYzNDk0NGU3YTkxNjBlNTI5MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQ2hhcmFjdGVyRGF0YS5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNl
cHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9D
aGFyYWN0ZXJEYXRhLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhKj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQppbmRleCAyZDFlNTY1N2VhMmQ2NjhkMjAw
NWI1M2M0ODU5ZWRkOWQ1MmY4YmY4Li4zMDg3MDFlNWI0ODE4Njc0NzMyM2MxOGRlZWQ0ZTQzMGFk
YWMyYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQpAQCAt
MzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRy
YXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Db3VudGVyKj4oX2ludGVybmFs
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXggYWQ1
NTg1MjlhYmI3ODNhODFkM2Y5ODMyZmM0M2Y5YWJjM2EyM2E1MC4uM2IwNGQzOTMzZDI0YWFlMzMz
NWJkODdiODEwNjlmNGNjZTdiZDYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01Eb2N1bWVudC5tbQpAQCAtODIsMTIgKzgyLDEyIEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVHJl
ZVdhbGtlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aEV4cHJlc3Npb24u
aD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhOU1Jlc29sdmVyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1hQYXRoUmVzdWx0Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KaW5kZXggOTZkMDMy
OWI0OWFlNjE1YjcxZWZhYTRjMDViMjY5MTFkZTg1YzE3ZC4uMmVlMmNmODRjNjM5NDhjMDAwMmY4
YTY1ZDhjZDY2OWE3Njc5ZDI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTURvY3VtZW50VHlwZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1
bWVudFR5cGUubW0KaW5kZXggZTIwMTE3NmE5MmRjNjY2NDBjZDUwMWVmN2VjMjBhY2Q4NDY0YWY5
Mi4uN2IyZTAzZWM1MjFjZGYwNzQwMzI2NTkwMGU2ZDNjYjA2MzQyYTNkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRUeXBlLm1tCkBAIC0zMiw5ICszMiw5
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05h
bWVkTm9kZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRUeXBlKj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUV2ZW50Lm1tCmluZGV4IDYwY2RiNmU1N2Y1YmUxNzYwZjRkOTE1ZDM4YWU0YTMzNTU3NTE3
Y2QuLjJkNjE1NGIxZTA2NDZkOGEzMWMwYzAzMGVjZTYzMzNmYjUxNmMwODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FdmVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NRXZlbnQubW0KQEAgLTMzLDEwICszMywxMCBAQAogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50
Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NRmlsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1tCmluZGV4
IGVkYTg3ZmZmMWM0ZTRiNWE5YTg3YzZkYjhiNDAyYWM0YjI0YjI4N2YuLmZkYzU0MTNiOWE1ZjQ2
YjllZGE1ZmMwYTdiMzZhZTVmODVkM2RiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01GaWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01GaWxlLm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZpbGUqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0KaW5kZXggNDQ2MGYy
N2M2ZGZkZDMwNjU2MGMxMjRkOWQ3OTk0MWM4ZDVjODUyZC4uYzZjMDFiZDdhNjk2MTc3MGNlOGZm
MThlNTc2YzEwOTg1ZWZmNDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MQW5jaG9yRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tCmluZGV4IGE4NDU0MmRhNDdkNjQ0ZGMzNjJlOGZkMWRm
YjUyZDA2YjIxM2E2NGEuLjI2YjhkM2M1OGJlYmQyZDdkNWRiMmU4ZGNjY2UyNjlhMGY5NWJjZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXBwbGV0RWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFwcGxldEVs
ZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQXBwbGV0
RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFyZWFFbGVtZW50Lm1t
CmluZGV4IGM0YWIyMzIwMjc1N2VmYzIyNmQzNDdlNTBhMjEwZGQ0M2UxMjA1MmUuLmI5YWNhODk2
YTRjMDkxNzY4Y2ZhMDMxOGI2YzZiN2EwN2VkNTc1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBcmVhRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MQlJFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KaW5kZXggY2Y1YjNlMDg4NDEzOWM5OGU0Yjc4Y2IzNzhk
ZjFhNjdjNDM1OThiOC4uNDMyNDY0YjhkZDJkNTYyNjMxMDE4OGM3MTgwNzI4NTkxNjMzOTM3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0K
QEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQlJFbGVtZW50Kj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQubW0KaW5kZXggNTE0Yjcw
OTFiNDNkMTIyNzcyZDA3MGM3N2U2YTExZGY0ODAwNmMxMy4uYWZlM2I2OTkzYjYzODZkNzM5ZTE0
Y2ZjYTNiN2M5ZGY2OTQxZTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEJhc2VFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTEJhc2VFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxCYXNlRm9udEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEJhc2VGb250RWxlbWVudC5tbQppbmRleCBhOTljMGI2MjM4MWYyNTFjMjFlODA3Njg1ZmI5
MzUwMzA2NzExYTRkLi4yNjMzYzgwZjcyNGQ4Nzk0NGRlYmY5MDhmMDM5MmZlN2JmY2RhNGNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VGb250
RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVW5rbm93
bkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkhUTUxVbmtub3duRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQm9keUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJv
ZHlFbGVtZW50Lm1tCmluZGV4IDY5NTI5M2I0MjQ2M2ZiZTY2Mjg3YjA2NDc2NGVmNjlkZmU1OGY3
MDQuLmRmNjEyMDg2NmM2YmM2MmM0MTIyMzM5N2ZmMWNiMzBjNmE2ZjQ0NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbQpAQCAtMzEs
OSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbQppbmRleCA5OGFhMjdj
NTYyNzVjNTQzY2Q0ZDllMmZiYjI3YzE4ZGI5ZDgyYWI1Li43Yzc1OTVkMzE0ODMwMzJjZmFlYmZl
NDAxYzE3MzIxY2I5ZGJkNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxCdXR0b25FbGVtZW50Lm1tCkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL05hbWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTENhbnZhc0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTENhbnZhc0VsZW1lbnQubW0KaW5kZXggMGZkNjBhNmRhOGFhYWFiZTc0ZDJiZDJiZDk0
NzliODE0YmQ5NjM1MS4uMThiMzEzZWI0NGFjMDM2YjAzN2Y1OGE5NDIzNTc2OWJlZGQxMDQzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDYW52YXNFbGVt
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ2FudmFzRWxl
bWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TdHJpbmdBZGFwdG9ycy5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxl
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENvbGxlY3Rpb24u
bW0KaW5kZXggZTM0NDA5OGNiNDhlMmQzOTBmNTQwYmMxZDUwZTY5NzNjYzQzZDdmMS4uYWFjMTg1
NDlkM2Q4YjQ3ODEzYmMxNTRiMWNhNWM0MTE3M2I1MzZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ29sbGVjdGlvbi5tbQpAQCAtMzUsMTAgKzM1LDEwIEBA
CiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
SFRNTENvbGxlY3Rpb24qPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRGl2RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRGl2RWxlbWVudC5tbQppbmRleCAyOTM2YWZhYzAyNTMxODU4ZDFmYjhh
OTRkMjcyZmZmOTVjZTk0OWRkLi45Y2IwM2EwMTE5NmI3ZjQ0MTU0NTI3YTdjNWMyNTViN2QzYWU5
Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERpdkVs
ZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEaXZFbGVt
ZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTERpdkVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEb2N1bWVudC5tbQppbmRleCAwMzc1
YTNjZjRmZDY3MWY2MzM2ZmJiMzdjOWJiN2M5YWVmMDE3NjNkLi44OGQxNDJlYWRhODQxMTM3MDUw
MTQ4ZmNlNGVjODc1ZjAyMjdiN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTERvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MRG9jdW1lbnQubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
SFRNTERvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MRG9jdW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1lbnQu
bW0KaW5kZXggYTVlMGNkMzE5MTNiZDM4NzMyNjYzNWU3OTM1ZjRhYTg5ODE5YzZmMC4uMmZlMjRj
NzA3NDk3ODg3MjUwODRmMzY2ZjkwYjlkODQ0OTc2ODA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRWxlbWVudC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MRW1iZWRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxFbWJlZEVsZW1lbnQubW0KaW5kZXggNmI4MmJlMDhlODIxNjZjMzE5NDBhMzQ4ZWNm
OTcyNTgyNTljYzlkMC4uMGQ2ZDg4MTQ3MWE4MTVlMjAzYTBjNDU0ZDBkNzY2YTYwOWQ3ZTczYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1l
bnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRW1iZWRFbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVu
dC5tbQppbmRleCBlYTkyYTAxOWE1MDY1Njk1YzY0NDZhZGE0OTM5NWY2ZmEzYWUyNjY2Li4xZmQ0
ZDgwYmM3MThjOTU2YTM1ZDZjOGJjMGEwN2ZiMDJhOTk2YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQpAQCAtMzYs
MTAgKzM2LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRpdHlTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MRm9udEVsZW1lbnQubW0KaW5kZXggODBkZTQ5MDU0OTI0ODAzM2EzMmJmY2EwMzhi
M2FmNzcxOWM2ZmI3Ni4uOTEwZThmN2Q0NjZmMWRlM2E3OGVjZDMyZmQ4NzcxYmI3ZTg0ODJkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvbnRFbGVtZW50
Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZvbnRFbGVtZW50
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9ybUVsZW1lbnQubW0KaW5kZXgg
YmZkZTFkYWQ4MTRlZGRjYmVhNzY1N2FmYjc4Y2QzNGY3YmVkZDU2Zi4uZTg2MjZiYTM1YWEzMzdm
NGI0YzdjZmExYmQ4MzNiOTVmZWVlNzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTEZyYW1lRWxlbWVudC5tbQppbmRleCA2MDBmNDRmODliYzQzOTk3ZGM0MGUwMDZkMjZj
YzM1MmUzODFhYWYxLi5lYjVjNTVhYzJiNjdhZjRkZWViZGY2MTVhMzc0ZTI1NzNlYjMzYjgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVu
dC5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1lU2V0RWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50
Lm1tCmluZGV4IGYyZjIwN2YwNTI0OTdjMjE5N2I3NDM0NzdjM2NiYjMxMjZmZmM5OGEuLjY5Yjk1
YTA2Zjc4ZDg4Njg0MGUzNjYwNmI3NzE1YzI5MDYxNjQxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCkBAIC0zMSw5
ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KaW5kZXggYjI1NzhhYTJkZjNl
ZTg5MDA4NTYxMmZjMjE3NzM1ODM1MjY1Yjc2ZC4uYTcyNmJkYzFlMDIyN2FiMjZjZjAwOWI3MzY3
MzQxODdmZTQwMmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxIUkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxIUkVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5h
bWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
SFJFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZEVsZW1lbnQu
bW0KaW5kZXggYmVmMzlhZTU3MDZmOTQ5YWNkMjdmNDFiNWQwYmIyN2VlZTJmZDJhNy4uOWNhNGI4
ODBiMWFhYWJhZDhjMzBhOWViMWQ2ZTQwZTMzMGJlZDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhlYWRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEhlYWRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MSGVhZGluZ0VsZW1lbnQubW0KaW5kZXggODExYmIxODA0ODg2MWY4
YjE3MTJjOTM1NmMxZDgyNzZkMDExMzE4OS4uYTJkZmI2YTNlYzFlYjA1YzhjYjMxMTEyMjIwNDZh
MDAyYzc5ZGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxIZWFkaW5nRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEhlYWRpbmdFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTEhlYWRpbmdFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxIdG1sRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
SHRtbEVsZW1lbnQubW0KaW5kZXggMjg3Y2U3Zjk0ZmYyZTljOTY1ZjM1ZmRlNDMzNTBjZDRhYjNj
YmMxZi4uZWJjM2NmZTc0ODYxNDI2MzNkMzM5MjZkNWRlMTNlNTlmZWMxOGNhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tCkBAIC0z
MSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
ZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEh0bWxFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCmluZGV4IGYzODJj
OWVmOGUwOTY5MjNhNjMwZTVkYmJkNTk3MjY3ZjFlMTY5ZGYuLmUzMjFiNGY3NmQyMTZlMjNhM2Q5
ZmEwNDNjY2VmNzg4YWMzN2E3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTElGcmFtZUVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQg
PFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MSW1hZ2VFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxJbWFnZUVsZW1lbnQubW0KaW5kZXggZmM5MTk1M2NlY2MyY2FlZWU3NjJiMzQ1NDIw
MjQxYmJmOWIzNzE1MS4uZWJhNGVjOTIzMTZjMzljZTAxMzRjZGIwMDVkMTYwOTNiMDMyMmRiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1l
bnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEltYWdl
RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5wdXRFbGVt
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQu
bW0KaW5kZXggODM2MzczNWQ5NDc0YTg2YmE4YTgwNWUwZjFhM2ViYTZmODRkNGJjZC4uZDczN2E1
NTdlOWEzZWMwMzUzNTNjNTEyNjkwZGJlNzhlYjBlODQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KQEAgLTY0LDkgKzY0LDkg
QEAgQGVuZAogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZW5kZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZp
bmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMSUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxlbWVudC5tbQppbmRleCAyNjlkMWE1NGFkZDhjZTJi
ZDRmZWFmNmE0MmE2Mzk4MjA4NWZlZGEwLi5hM2NmM2ZhOGRiZmE4Y2VhZDdhMjlmYTk4YzI3N2E4
NGQ5YmYwZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TExJRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJ
RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxMSUVs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVsRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1t
CmluZGV4IDUxZjU2MGMwOTc5MTg5M2FlNjZkYzU1MmQyZjk2OTdkMmZiZjAyODEuLjgxMzkwMDBl
YWVhNGNhN2QwZWU5MmI1ODBmNGNmMDgwMTdhMTE2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCkBAIC0zNSw5ICszNSw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExhYmVsRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbQppbmRleCA5MzQzY2E2ZTlkZmFmNzM3
ODA2NTdjZjU0MmFlMTIyNTQ1MmQ4YjBjLi5kNGYxZjM2YzVmMjRiMTk0YTkyYzgyYjEwY2RiYTFk
OGUxMGU2MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TExlZ2VuZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxMZWdlbmRFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTExlZ2VuZEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TExpbmtFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMaW5r
RWxlbWVudC5tbQppbmRleCAyMGY0YzAxNTE1ZGViNjBlZTRkYjM3OWEwMDVlNTI3NzliOWM1MjIw
Li41Njg3YzQ1YmJhMGZhYzc0YjU0Yzk0ODVkOThhZTQ5ZThmNzM1YjA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGlua0VsZW1lbnQubW0KQEAgLTM2LDkg
KzM2LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU3R5bGVTaGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tCmluZGV4IGI5MjFiM2E1MGVkMDUx
NTAzZjNkNzdjNDUwYmQzOTcxNmFkNGM5NjAuLjJjYzkwY2Y4NjM0ZTM5NmRkMDFmNGEwYzExZjA2
MTBlY2Q2MGU4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MTWFwRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE1hcEVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5h
bWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
TWFwRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVl
ZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcnF1ZWVF
bGVtZW50Lm1tCmluZGV4IDYxYWI0YzYyMzMzZjk1NmUwNzI0MzYyNzcyZmMxZmZmY2E0NmEyMzgu
Ljk2MjNlZGIxNmFjMDk5YjQxZGM5NjM4NzU5MDQ0YjQ3MWI5MGJjZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbQpAQCAt
MzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFBy
aXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
I2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KaW5kZXggNWJj
NzQ1NmY2MGNmNzYxMmI1MDZlYmZkM2RjODlmYTQ3YWVjYTQ2Ny4uNzgzYTVhMTVlOWRlMWM3NWU3
NGRiODk1MmI0MTk5MjAxYTk0MzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KQEAgLTM4LDkgKzM4LDkgQEAKICNpbXBvcnQg
PFdlYkNvcmUvTWVkaWFFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaW1lUmFuZ2VzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxNZXRhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MTWV0YUVsZW1lbnQubW0KaW5kZXggOTk4NzAwMmFmN2NiZTNkMTRkNjdjZjhjNGYzYjgx
ZGUzZDNiZjI2Yy4uNzhlZDZlOTNjZGZhYTViOGM5NWY3NzJmMjAzZjM4NDRkODBlOTllNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1t
CkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tCmluZGV4IGQ4ODVm
Y2ZkMDgwMzZjNzM4MjkyZTAwNzA3MjFlZTVmODJlMzcxOWEuLjYwZjllNDVjN2IxZTM0YmMwNjJl
NmE0ZWIzMTI3NGFmNDY1YjI1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MTW9kRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTE1vZEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MTW9kRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MT0xpc3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxP
TGlzdEVsZW1lbnQubW0KaW5kZXggYTMyYzJkOGJjOTcxMjE3MDdiNmUwZTM3OGU3NDUxNTIyYzU1
ODczMC4uYjdmYTU5YjZlNjY5NWY2NmM4OTY5YjFmYTQwNWU4ZTRhMWRlYWVlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KQEAg
LTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE9MaXN0RWxlbWVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE9MaXN0RWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbQpp
bmRleCA3YWI3M2Y1NzI5NDMwZDNiZjIwMjdlZGJjNWU0NjEwMzE0YmRjYTE1Li5kYjIzNmQ4Yjk1
ODZiOGI3MmFjOGU4OGNjZGYyYjQ5MGFiZWRiNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTE9iamVjdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tCkBAIC0zNyw5ICszNyw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRl
ckVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQppbmRleCA0ZTUxNWRh
ZjU1YmI3Y2M1Y2MwMzhiYjUyNDA0YjZlZWYxYjU1Y2RiLi4xNzcxYzJlZmUzMTg2MmQ3YjE1NTll
MGQxMjQ3NTNmMTNmMzcwMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MT3B0R3JvdXBFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhl
Y1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tCmluZGV4IGZkZWM1NGVlMWQ2
NDc4MWU2NmU4ODMzNGM1MmNmNTQxOGJjNzkzZGYuLjE0NTM1MWQ5YjZmZWUzZTNiMTJhZjMxZjA0
YmMzMDM3ZmRhNzc5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MT3B0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTE9wdGlvbkVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSFRNTE9wdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KaW5kZXggZjc3MGE4YTE0ZDVhODNk
NzY5NWU0MzcxOWVlMWFmNGRjYjY2NGNhMS4uMzkxMjEwMTU2MWY1ZmZkZjg5NDFlOWE3MWJmYmU0
YjgyOGY4NGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxPcHRpb25zQ29sbGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZhcmlhbnQuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uKj4oX2ludGVybmFsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVt
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVt
ZW50Lm1tCmluZGV4IDZjNTExZTkxNjY0Y2U5MjNjYzkyODRhMjU1YTExZTZhNzkzYjNmZDQuLjFh
NTQzYjNmZDNlNmZlNzI4MjQ2YjJiYThjMTJmZjI2NDBmNjYwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQubW0KQEAg
LTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBhcmFncmFwaEVsZW1lbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxQYXJhZ3Jh
cGhFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhbUVs
ZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVu
dC5tbQppbmRleCA1ZmIwY2VjMjdmYjcwOTdmMDkxNWVlNWNkZmM0MThhODFjNTk0ZmU4Li5lZGE2
NTMyYzVkMmE3ZWZlZmMxNDliMGI3NjZhZTlkYjhkYmM5MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQpAQCAtMzEsOSArMzEs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MUGFyYW1FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbQppbmRleCAzNzQ5YzE4
MDMzMGZiMGUzNWNkNTQ1OTExYzA5ZTc3NDU4NzVhZmQwLi5iY2Q3ODY2Y2Q3NmM3M2VhYzY0NGUw
NGY4NDM3ZTUwMzBmNWEyZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MUXVvdGVFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpIVE1MUXVvdGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxTY3JpcHRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxTY3JpcHRFbGVtZW50Lm1tCmluZGV4IDMzNDRkNTQ4ODg0OWMxNGM5MWM1YTY5
M2U3OWFkN2U2NzBlMDlmZjQuLmU0YWMwMTc4MDJkYTI1MTRmNGNkZmU3ZGQ3YzkyMDQ5YmRhYjAx
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2NyaXB0
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNjcmlw
dEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFNjcmlw
dEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkhUTUxTY3JpcHRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxTZWxlY3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxT
ZWxlY3RFbGVtZW50Lm1tCmluZGV4IDc1ODE0MWRlM2ZiN2Y1YWJmNmUyYTI4ZmE2YWVhMTQ2NThj
NjY5NjIuLmJjZmJlY2FjZDM4NDkxZmE3YmM5OTU0YjNkZTkwMzAyZjkxYTY2YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2VsZWN0RWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW0K
QEAgLTQ0LDkgKzQ0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50Lm1tCmluZGV4IGE0NTI3ODIw
ODBiYjYzOWM0ZTY3ZjQ1NzlmOTM5NDY1NjhjNWNmMTAuLjgwNzZhMzM4ZWUxZGMzMGFmMWMyOGE3
NDg1ZWI2NDdkOGVlMzdhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MU3R5bGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MU3R5bGVFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlU2hlZXQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0KaW5kZXggYTc4MTFiZDY4YjM4OGI4ZDcz
MzFkNDUzYzk2Mjg2MDhhNWEzNmUzNy4uNDgzZjk0ZjEzZmJhZDE1OTdlNjczNmFmNzZjYTRjMGYx
MDZlZTg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxU
YWJsZUNhcHRpb25FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0KaW5kZXgg
ZGQzMDE2YjNhYTYzYTRmOWIwMzE0NDA3NWYwNWU1YTk4MDU1OGVlMC4uOWFkOTE0NmU4NGEyNzgw
Njk5YmNhNzNkNTQ3Y2JjYTgyNTBjM2U1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDZWxsRWxlbWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
ZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCmlu
ZGV4IGFmMjY3MTRkODRmMzBhYWRjYWUxNDJiZTg0NmQ2NmNlNmUzNWU0MGEuLmM5ZDk4Y2E1MTRl
MWFiYTdiMGVmNDg5YzNkYWYyYmU3OWM3MTJkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZUNvbEVsZW1lbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFBy
aXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
I2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNvbEVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCmluZGV4IDRj
NjhjNGI2YjRjYTVkNmYxZjYxMGVjNWFjMDdmYTZkMzQ3MzIwYzkuLmJlZGRhZjUwZmFhYWI0YzJk
MzZmYTVkMTI4ZDAzMTY1ZjIwNGI3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCkBAIC0zOSw5ICszOSw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQppbmRleCAyNDA5NmE4
ZDk5NDdmZDdiN2EyNGZkMTY1NzMxM2E5ODQwOTkzOGNjLi4zZGZlZGMzM2VmY2MxNWFhZTE0ZDQ0
MTFmZmVlNzA2NzczZDY4YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MVGFibGVSb3dFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhl
Y1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tCmluZGV4
IDk4YjE5ZmEzMTU0MDM0ZGFkOWY2MzBiMzQzMjIyODgyODM0ZjMxODguLmMzMmMyZTcwMjczNDNk
NDcwOTMwYTY3NzNiMjk4ODhlZDRmNmZlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0KQEAgLTM1LDkg
KzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZVNlY3Rp
b25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUaXRsZUVs
ZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVu
dC5tbQppbmRleCAyNDg2Zjc3YzNhNWU3NTA0MjcxMDJhZDI3ZTI4MmI2YjY1YjRlZmU5Li4yODM5
MTcxNzg1NTk5ZjkyODU4NGFkNTIxNThlMGYwNWQzNDEyMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQpAQCAtMzAsOSArMzAs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGl0bGVFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbQppbmRleCBmOThmOGU4
NTJiZDQ3YTE2MjkyYjk3MzQwOTAxNTcyOGU0NWYzM2ExLi5mY2Y5MDU0YWIwZjEyMTY3YWVlMjA2
Y2FkOGFkYTFkMTM5MDdhM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MVUxpc3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpIVE1MVUxpc3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTFZpZGVvRWxlbWVudC5tbQppbmRleCAzMzU4MDY1MDM5Mjg3MTliOTViMGY3MTY3
ZjI3MWE5MDFlODVjMTE5Li40NTdlYWZiYTBkMGNlNTJkMDNmNTUwZjA0NzhiMzRiMDhlODczZDhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxl
bWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVt
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJk
RXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5t
bQppbmRleCAzZmQ4ZmNlMzY0NjZmMzdhYjlhMTk0YzBhMzBjMWMzYzQwNTJmNjNjLi4yYzAxZjNl
NjEwNTUyNjk3ZTQ1MTM3OTRkYjEzOWEzNzlkMzJjNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NTWVkaWFMaXN0Lm1tCmluZGV4IDllODE2N2ExNmE0NGIzMTM3YjIzZWRiMWE4ZWVkNDU5NDlk
MjdkOTguLjg2NTFmYzk3YjQ4NzExNWUyZDRjZGQ3NzE0OTBkZjNmZDAwYTVkYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbQpAQCAtMzMsMTAgKzMzLDEw
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01l
ZGlhTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpNZWRpYUxpc3QqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KaW5kZXggZjY1NmE4YWRlNTUzNWE5MGU4N2FiY2Fh
YjlkODA3OTk2M2E4MTIwNi4uOTVmMjIzNWQ0NTcyZmIzOTZkNjI0YzM5ZmM1MDY5YjMwOTZkYzM5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KQEAg
LTM2LDkgKzM2LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZp
bmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3VzZUV2ZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01NdXRhdGlvbkV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQubW0KaW5kZXggMGY0ZWYxNjc1YTFjMDNhODdhMTBk
NjFlM2ZiNzExYWFmMTFjNzZiZC4uMmZiZjQyMmFlODVkOTljNjY4MGEwZWQ1OGNkYmEzMjdmN2Vk
OGZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9u
RXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZl
bnQubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTXV0YXRpb25FdmVudC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNdXRhdGlvbkV2ZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCmluZGV4IDU2ODE5MzMy
YmI2NzQyZTFlZmVkZDAxZTJjNzUzMzU3N2Q3MWUzZjguLjI5MTgxOTA5MGU1ZTI1MDM1M2IzMDc0
YWY5NmJkMjM4ZmRiOGQ1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01OYW1lZE5vZGVNYXAubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TU5hbWVkTm9kZU1hcC5tbQpAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVkTm9kZU1hcC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOYW1lZE5vZGVN
YXAqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tCmluZGV4IDlhZGM0MGIwOGFiYmM4NzcxYjNj
OGI4YmRmZWUwMTlmYzgxY2UzMjUuLjIwMGU4MmEzMTAzYTY3MWQwNjE1NzExMmM3ZGM5NzI0YTU1
NmUyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5tbQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVTaGVldC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVJhbmdlLm1tCmluZGV4IGYyODliM2EyNmU4YTRmNTY2YjY3MjRmYjhkNjE1MTE1OGJkYjYyZTgu
LmVmMmMzNTgwOWIwYjY3NjNiNDc3NDU2MThjM2IyOTU2MDZkOTk5OTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NUmFuZ2UubW0KQEAgLTM0LDEwICszNCwxMCBAQAogI2ltcG9ydCA8
V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlJhbmdlKj4oX2ludGVy
bmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVT
aGVldC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCmlu
ZGV4IDdhMWE0YTg3ZmM2ZWYyNDlhY2I5ZDA3ZGUyNTRiZGIyYjBhM2M5MzMuLjBlODc4NWM3ZDJj
MDY3YzQ4NDcyMWVkNTM3ODc0ZDdjNTVjYjBhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbXBvcnQgPFdl
YkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlN0eWxlU2hlZXQq
PihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01UZXh0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0KaW5kZXgg
MzBlN2RhM2MwYzk4OTczZDQxMjVhNjdlZGRjZDI2ZDljZWU3NWNiNS4uZjczMGFkNmRlYmFmYTA1
YmUzNzI0NDBmOTZlNjAxYWVmZjRkZjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVRleHQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVRleHQubW0KQEAgLTMwLDkgKzMwLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCmluZGV4IGM1MDI2ZWI0YjJmODYwMTMzMjg3Yjlm
MmUwNThhNzYxZmIyNDIwNGYuLmNhMDZmZDdjMGZmMGUwMDFiOWU4ODQwNmQwYmE3ZWFjY2E0MTRh
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQpAQCAt
MzMsOSArMzMsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFBy
aXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
I2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRFdmVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVRva2VuTGlzdC5tbQppbmRleCBkYjhmNTVjZTA3YWE2NGZkOTI5YTVmNWY4
M2ZmMGNiY2NkZDc3NDY4Li45YzRhYTg5NjMwZDc4MTQ0NDJiMTNjNmJjMjVjOGU0YjdmOTZiYjYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0KQEAgLTMy
LDEwICszMiwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RE9NVG9rZW5MaXN0Kj4oX2ludGVybmFsKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCmluZGV4IDE3MzI0MzE5MGEzMmIxNWM0
N2ZmZmUwMDJiM2JhNjE2N2IxNzc4ZGIuLmY4MmNmNThhN2VkNGFiYjk0Zjg4NWYwZWU0YWZmYmMz
ZjlkZTAxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCkBA
IC0zNCw5ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVUlFdmVudC5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VUlFdmVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0KaW5kZXggYTFlZjU3M2Y4ZGQyYzEwYjY4NmMx
MTk1MDlhNzAyNDJkN2NmNTJhZi4uZGFjZjFkODZkZjhlNzNjMWJiMDQ0Y2RkYThiNDkxNTFhNGJm
ZmZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVz
dWx0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aFJlc3VsdC5t
bQpAQCAtMzEsMTEgKzMxLDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0
cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvWFBhdGhSZXN1bHQuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
WFBhdGhSZXN1bHQqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmluZGV4IDhmMTdjM2FmODlmMmIyNzRhYjQ3NTQ1
ZWE5ZjllYWFhNmM5ZWNkZmMuLmIyYjRhZThhMzFjODM1MTFkOTA3NTEwZDA4YWE4MGJhMDAxODE4
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5
SXRlbS5tbQpAQCAtNDcsMTMgKzQ3LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9i
akNFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYv
UnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFz
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQppbmRl
eCBmM2JhYWVhMmZhMTEzZDhlNDc3Y2Y2MzA4MzVlMDc4YWQ0MGE3Y2E4Li5lZDI4NGI0NjdiODRi
YjZmZDg1ZTA0YTQzNzg3NmNkZTRhNmU5YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KQEAgLTMzLDE0ICszMywxNSBAQAogI2ltcG9ydCAi
V2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCiAjaW1wb3J0ICJXZWJOU0RhdGFFeHRyYXMuaCIKICNp
bXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Mb2FkZXJOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UZXh0RW5jb2RpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+
Ci0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0
cmFzLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3Jp
cHQuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvT2JqY1J1bnRp
bWVFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBX
VEY7CkBAIC0xMDksNyArMTEwLDcgQEAgLSAoTlNTdHJpbmcgKilfd2ViX29yaWdpbmFsRGF0YUFz
U3RyaW5nCiAKIC0gKE5TU3RyaW5nICopX3dlYl91c2VyVmlzaWJsZVN0cmluZwogewotICAgIHJl
dHVybiB1c2VyVmlzaWJsZVN0cmluZyhzZWxmKTsKKyAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJs
ZVN0cmluZyhzZWxmKTsKIH0KIAogLSAoQk9PTClfd2ViX2lzRW1wdHkKQEAgLTEzOSw3ICsxNDAs
NyBAQCAtIChOU1VSTCAqKV93ZWJraXRfVVJMQnlSZW1vdmluZ0ZyYWdtZW50CiAKIC0gKE5TVVJM
ICopX3dlYl9VUkxCeVJlbW92aW5nVXNlckluZm8KIHsKLSAgICByZXR1cm4gVVJMQnlSZW1vdmlu
Z1VzZXJJbmZvKHNlbGYpOworICAgIHJldHVybiBXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhz
ZWxmKTsKIH0KIAogLSAoQk9PTClfd2Via2l0X2lzSmF2YVNjcmlwdFVSTApAQCAtMTc1LDE3ICsx
NzYsMTcgQEAgLShOU0RhdGEgKilfd2ViX3NjaGVtZVNlcGFyYXRvcldpdGhvdXRDb2xvbgogCiAt
KE5TRGF0YSAqKV93ZWJfZGF0YUZvclVSTENvbXBvbmVudFR5cGU6KENGVVJMQ29tcG9uZW50VHlw
ZSljb21wb25lbnRUeXBlCiB7Ci0gICAgcmV0dXJuIGRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNl
bGYsIGNvbXBvbmVudFR5cGUpOworICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRU
eXBlKHNlbGYsIGNvbXBvbmVudFR5cGUpOwogfQogCiAtKE5TRGF0YSAqKV93ZWJfc2NoZW1lRGF0
YQogewotICAgIHJldHVybiBkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21w
b25lbnRTY2hlbWUpOworICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNl
bGYsIGtDRlVSTENvbXBvbmVudFNjaGVtZSk7CiB9CiAKIC0oTlNEYXRhICopX3dlYl9ob3N0RGF0
YQogewotICAgIE5TRGF0YSAqcmVzdWx0ID0gZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwg
a0NGVVJMQ29tcG9uZW50SG9zdCk7CisgICAgTlNEYXRhICpyZXN1bHQgPSBXVEY6OmRhdGFGb3JV
UkxDb21wb25lbnRUeXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudEhvc3QpOwogICAgIE5TRGF0YSAq
c2NoZW1lID0gW3NlbGYgX3dlYl9zY2hlbWVEYXRhXTsKICAgICAvLyBUYWtlIG9mZiBsb2NhbGhv
c3QgZm9yIGZpbGUKICAgICBpZiAoW3NjaGVtZSBfd2ViX2lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxU
b0NTdHJpbmc6ImZpbGUiXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbQppbmRleCBlOWVkNWNiZWIyOTVkMDZk
YWFkOTY5NTcyMmEzNGYzZWVlNTU2NjhkLi5iNzI2NTgzZjk3NGNkZGY3NjYxN2YyYWQxOGQzOThm
NDAzYjkxM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYlVz
ZXJDb250ZW50VVJMUGF0dGVybi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbQpAQCAtMjQsOCArMjQsOCBAQAogCiAjaW1wb3J0
ICJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggYWM3YTRiYjMxOGM1NWY5MzU5Yzk4ZTBhOGJmOTZk
MWU2ZTQ0MzYzNi4uODgzYjkyMDcyMDdlMjQ4ZGQ0N2EzMGJjMGM3NjIxZTcwNjhiN2MzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNTgsNyArNTgsNiBA
QAogI2ltcG9ydCA8V2ViQ29yZS9Qcm94eVNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3Jp
cHRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRv
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ucHJ1bnRpbWVfaW1wbC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9ydW50aW1lX29iamVjdC5oPgpAQCAtNjYsNiArNjUsNyBAQAogI2ltcG9ydCA8dXRpbGl0eT4K
ICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWRM
ZWFrQ291bnRlci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiBleHRlcm4gIkMiIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAwZTE4OThmMDMw
NTk5NzA0M2U2NGY2YTI5YWY2ZmNkM2Y5OWM1ZmE3Li4yYmM5NzhkMzQwM2Y3M2YxYzA2M2RmMjUy
MzQzYzViODNlYzEzMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC03Miw3ICs3Miw3IEBAIGNs
YXNzIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW0+CiAKICAgICB2b2lkIGNhbmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0
aEVycm9yKE5TRXJyb3IgKik7CiAKLSAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0KKyAgICB2
b2lkIHNldFJlcXVlc3RVUkwoY29uc3QgVVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9
IHJlcXVlc3RVUkw7IH0KIAogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKQEAg
LTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPgogICAgIGJvb2wgd2FudHNBbGxTdHJl
YW1zKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gbV9k
ZWxpdmVyeURhdGE7Ci0gICAgV2ViQ29yZTo6VVJMIG1fcmVxdWVzdFVSTDsKKyAgICBVUkwgbV9y
ZXF1ZXN0VVJMOwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9yZXNwb25zZVVSTDsKICAgICBDU3Ry
aW5nIG1fbWltZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMWE3MGJjZWI2NWRmNTcxMmY2
NTA1NmEyNGY0ZTk5NTkyMjMxY2I2Zi4uMDRkMjQ2ODE3ODUzNjFlYjgxNjBhMzc1MjM4YmE4ZTQ4
ZTk0YzY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIyNyw3ICsyMjcsNyBAQCBjbGFzcyBXZWJD
aHJvbWVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKICAgICB2b2lkIHNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKICNlbmRpZgogCi0g
ICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpV
UkwmKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJp
bmcsIGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViVmlldyAqbV93ZWJWaWV3Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCA1ODc4NGI5OTc5NmViYTBiNzkzMWQ3ZTJhNzhmODVl
NTdhMmZhMTE4Li45ZTUxMjUzMDUxMjRlNGZhMmFlNjMyNWRlMDIzNmE4MTIyODExZGY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmIG5h
bWUsCiAKICNlbmRpZgogCi1TdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNo
YWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CitTdHJpbmcgV2Vi
Q2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQg
a2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHNpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZ0ZvcldlYlZpZXc6KTsKICAgICBpZiAoW1ttX3dlYlZpZXcgVUlE
ZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oCmluZGV4IDhiMjAzNjRiYjY3YTkxNzI3OGIyOTUzZmM1MTc5YTEyZGQzNjZkZGQuLjE4
ODVmMDMxMzEzNWI4MTdiMzBmOTQ1Nzc3ZDhlMjRiMTUzOWJmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudAogCiAgICAgdm9pZCBjb250ZXh0TWVu
dURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSop
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBpc1NwZWFraW5nKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tCmluZGV4IGFmNzgxNGI5Njk2N2U5ZDg1ZjU5NDFkNGFmYWIzMDI0NzU2Y2Yz
MjUuLjYxNjMwNDkwMTk5NmYxNTdmYzdlOThhMGU3YWIwYTBlODdlYzk5ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50Lm1tCkBAIC01NCw5ICs1NCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jl
bmRlck9iamVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTVByaXZhdGUuaD4KICNpbXBvcnQgPHBhbC9z
cGkvbWFjL05TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEkuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCA0ZTgxZDM3MDg0
OGY5ZTQ0YTQwZjUwNDBiYzlhZDhhMzdjY2FkOGUwLi44NDdhNzNiMTdhNDYxN2JkNTRhOGQyOGE5
MjNjMWQ0YTYzYmRkMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFdl
YkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAKICAgICB2b2lkIGJl
Z2luRHJhZyhXZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgbW91c2VEb3duUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBt
b3VzZURyYWdnZWRQb3NpdGlvbiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RHJh
Z1NvdXJjZUFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwg
V2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWco
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDc3
MTgyZDIwZWJiYjM5MDcyMWFmYjgyZTU5NGUyMTlhMGI0NDBkNGQuLmZmNmQxNDFmZTNkODljYTk1
YjUwZDU4ZDc3ZGU0Njk2YTJjNTZkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
MTA3LDcgKzEwNyw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxv
YWRFdmVudHMoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENhbmNl
bENsaWVudFJlZGlyZWN0KCkgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGlt
ZSBmaXJlRGF0ZSkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgZmlu
YWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIGZpbmFs
OwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CiAgICAg
dm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKQEAgLTE1OSw4
ICsxNTksOCBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBh
Z2UoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIGZpbmFs
OwotICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7Ci0gICAgdm9pZCBkaWREZXRlY3RYU1MoY29u
c3QgV2ViQ29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFsOworICAgIHZv
aWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3Qg
VVJMJikgZmluYWw7CisgICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRC
bG9ja0VudGlyZVBhZ2UpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5j
ZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBmaW5hbDsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRl
ckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBib29s
IHNob3VsZEZhbGxCYWNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIAot
ICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAg
ICBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgZmluYWw7CiAgICAgCiAgICAgdm9p
ZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIGZp
bmFsOwogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNv
cmU6OkNhY2hlZEZyYW1lKikgZmluYWw7CkBAIC0yMDYsMzAgKzIwNiwzMCBAQCBjbGFzcyBXZWJG
cmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAg
ICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXImKSBmaW5hbCB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOwor
ICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFVSTCYpIGZpbmFsOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFt
ZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0
ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1M
RnJhbWVPd25lckVsZW1lbnQmLAogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIs
IGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQp
IGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBXZWJD
b3JlOjpVUkwmLAorICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBV
UkwmLAogICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBy
ZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0
RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFdFQkdM
KQotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kg
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFs
OworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBV
UkwmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdl
YkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgYmFzZVVSTCwKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxl
bWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwKICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMp
IGZpbmFsOwogICAgIAotICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRl
bnRUeXBlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkg
ZmluYWw7CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUo
Y29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbDsKICAgICBXVEY6
OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIAogICAgIHZvaWQg
ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldv
cmxkJikgZmluYWw7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBzaG91bGRMb2FkTWVk
aWFFbGVtZW50VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
c2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICNlbmRp
ZgogCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZp
bmFsIHsgcmV0dXJuIDA7IH0KQEAgLTI0Miw3ICsyNDIsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRl
ckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICBSZWY8
V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQo
KSBmaW5hbDsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBXZWJDb3Jl
OjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29u
c3QgVVJMJikgY29uc3QgZmluYWw7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBSZWZQdHI8
V2ViQ29yZTo6UHJldmlld0xvYWRlckNsaWVudD4gY3JlYXRlUHJldmlld0xvYWRlckNsaWVudChj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDI4MjEyNDI3MjMyZDIzMTkzYjI4MWNjMTVhZjIwYzIx
YmQ5OWFmNzUuLmVmZTlhMzRiYzViN2Y1OTUwZjcyY2JiZWYxYTlkMjUxZWZkYTk2MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKICAgICBXZWJWaWV3KiB2aWV3
ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBEb2N1bWVudExvYWRlciogbG9h
ZGVyID0gY29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsK
ICNpZiBQTEFURk9STShJT1MpCi0gICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IGJs
YW5rVVJMKCkpCisgICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IFdURjo6YmxhbmtV
UkwoKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgKaW5kZXggZmQ0Y2Q0YzRiMzZkOGJmZjRiY2U1N2JmMTVlZDZmODlmNGVj
ZDU4MC4uMDc3ZDAxNGQzZTUzNWM3YThhYmIzNDY4ZTFkNjU0ZTlmZTliZTI3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3Mg
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1l
bnRDb29yZGluYXRvckNsaWUKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgb3ZlcnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVy
Y2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hv
d1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJM
PiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdCYpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25z
dCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZh
bGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNv
bXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hp
cHBpbmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29y
ZGluYXRvckNsaWVudC5tbQppbmRleCAzMzQ5M2JkOWYxNjBiZGE4YWFjNWRhZmZmYTU5MmE1NjBm
YTk5MjgyLi4zMGUwNmNhZjkzMWFlMDY2YzM2OWI3MzUxMTNkOWM0OGE3YmRjMGQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC0yNyw4ICsyNyw4IEBACiAK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCi0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogV2ViUGF5bWVudENv
b3JkaW5hdG9yQ2xpZW50OjpXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKQogewpAQCAtNjcs
NyArNjcsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLAogICAgIH0pOwogfQogCi1ib29sIFdl
YlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6c2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikKK2Jvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
OjpzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiwgY29uc3QgV2Vi
Q29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKQogewogICAgIHJldHVybiBmYWxz
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggNzM5Yzk1MWY2YmQ3ZmY1NWYy
OTkyYWRmZjNhNTA5YTZjZTEwMDU5NC4uNGVhMWFkZDNlMTIzN2UwMmU1MDA5YzExZmQ1YWI3ZTJh
MmMzOTM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ4LDEzICs0OCwxMyBA
QCBjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1T
dHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3Jl
YXRlQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3Ry
YXRlZ3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNv
cmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVDb29r
aWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRl
Z3kKICNpZiBQTEFURk9STShJT1MpCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUg
V2ViQ29yCiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAg
ICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJl
YWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRl
Z2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29y
CiAgICAgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNv
bG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdl
YkNvcmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Cisg
ICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAogICAg
IGxvbmcgd3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0
cmluZz4gdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCmluZGV4IGJkNzU4MWZhNTA0ODFjOTg5N2M5YTFmY2RkMzIxOTBmNjdmMDZi
NDUuLmY1MGIwZWIzYmM0NzBlYjkxMjg1YTA1ZmRkMmQ0ZDM0NDZlMjUxNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTIzOSw3ICsyMzksNyBAQCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChpbgogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJl
YWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQogCi1XZWJDb3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nJiB0aXRsZSkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4LCB0aXRsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Q
cm92aWRlci5oCmluZGV4IGQxYWI1NTExODRjMGE1ZjY0OTk0MGQ4ZTkyN2JkODRlNTI5YzdmZjAu
LjUyNWVlMmZjZGVlYTE2YzVjNmY5ZGZlODEzNWVkN2QxYzVlYmJkMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdp
bkluZm9Qcm92aWRlci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFdlYlBsdWdpbkluZm9Qcm92
aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5JbmZvUHJvdmlkZXIgewogcHJpdmF0
ZToKICAgICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOwotICAg
IFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3Jl
OjpQYWdlJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBV
UkwmKSBmaW5hbDsKIAogICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcigpOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Q
cm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkluZm9Qcm92aWRlci5tbQppbmRleCBlMzRlYzczZTU0ZmJkOTU0MTY4ZmZjYTU1MmU0ZjM2
YmM5NWY1NDRiLi5iMDZkYTZmMGYwYzM1N2IwMGJhODc0OTFjYjE3YmZkMmZhOTRlMzYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLm1tCkBAIC03NCw3ICs3NCw3IEBAIFZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oV2ViQ29y
ZTo6UGFnZSYgcGFnCiAgICAgcmV0dXJuIHBsdWdpbnM7CiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdl
YkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYpCitWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhX
ZWJDb3JlOjpQYWdlJiBwYWdlLCBjb25zdCBVUkwmKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVy
czsKICAgICByZXR1cm4gcGx1Z2luSW5mbyhwYWdlLCBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVy
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDRlNGMxM2RmYjczYWI2NGFlZTk3ZDdhMzcz
OTUxM2FlNDkyNDI5ZmMuLmQ5YTA3ZWVjNTc4MzMyNjkwOTY4YjQ3OTRkMTVmMjViZDc5NTExYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNl
Y3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaXNpdGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKaW5kZXggYWVmNGZjNTJhYWU0MTJmM2U2YzRlY2Y0
MDM5NWI0M2U4N2NjOTQ2Yy4uMjBlZTUxODc5NDU1OTcyYWI0YjAzYzQ2MmFlMzFmMzk0OWVjOTEz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
VmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBXZWJW
aXNpdGVkTGlua1N0b3JlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RvcmUg
ewogcHJpdmF0ZToKICAgICBXZWJWaXNpdGVkTGlua1N0b3JlKCk7CiAKLSAgICBib29sIGlzTGlu
a1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwp
IG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29y
ZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJp
bmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJD
b3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzSWZOZWVkZWQoV2ViQ29yZTo6UGFnZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDYx
MTc5ZmY4ODFlMzU1ODJjNTc5NjliNzY1ZGUzNjhhNjZjMjRiYTMuLjFlMjI1OTFiMDI3MjcyM2Vk
MjI5NDNkY2JjMjNhMjZmZTk1ZTJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTU1LDcgKzU1LDYgQEAKICNpbXBvcnQgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlVVJMUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01I
VE1MLmg+CkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV2ViUERGVmlld0lPUy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMzdiMzNj
ODEwODQwMmJlY2Y3ZTU0NTcwNTZjNGQ2MzcxYzIyMDQ2Yi4uNzhiZDNkNDliOTBlNzllOTdjMzg4
ZDA4Njc4NTdjN2JlYWMwYTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCkBAIC0yNTA4LDcgKzI1MDgsNyBAQCAtICh2b2lkKV9sb2FkRGF0YTooTlNE
YXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1l
OgogICAgIGlmIChiYXNlVVJMKQogICAgICAgICBiYXNlVVJMID0gW2Jhc2VVUkwgYWJzb2x1dGVV
UkxdOwogICAgIGVsc2UgewotICAgICAgICBiYXNlVVJMID0gYmxhbmtVUkwoKTsKKyAgICAgICAg
YmFzZVVSTCA9IFdURjo6YmxhbmtVUkwoKTsKICAgICAgICAgcmVzcG9uc2VVUkwgPSBjcmVhdGVV
bmlxdWVXZWJEYXRhVVJMKCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
Lm1tCmluZGV4IDc1NGNjY2MxYWYyODA2NTU4Y2VmOTZiODhjYzZlNjg3MzNjYTIyYTYuLmY1MTRi
ODQwNTRjMjFhOTM3M2JkZTdmNWI5YTQwMWQ4ZGVmYjM0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIubW0KQEAgLTI1NiwxNyArMjU2LDE3IEBAIC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlv
bkFuaW1hdGlvbkNvbnRyb2xsZXI+KV9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcgogICAgIE5T
VVJMICp1cmwgPSBfaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBOU1N0cmlu
ZyAqYWJzb2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKICAgICBpZiAodXJs
ICYmIF9oaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSkgewotICAgICAgICBpZiAocHJvdG9jb2xJ
cyhhYnNvbHV0ZVVSTFN0cmluZywgIm1haWx0byIpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3Rv
Y29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJtYWlsdG8iKSkgewogICAgICAgICAgICAgX3R5cGUg
PSBXZWJJbW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxm
IF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAocHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgInRlbCIpKSB7CisgICAg
ICAgIGlmIChXVEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJ0ZWwiKSkgewogICAg
ICAgICAgICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25UZWxMaW5rOwogICAgICAgICAgICAg
cmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShh
YnNvbHV0ZVVSTFN0cmluZykpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZh
bWlseShhYnNvbHV0ZVVSTFN0cmluZykpIHsKICAgICAgICAgICAgIF90eXBlID0gV2ViSW1tZWRp
YXRlQWN0aW9uTGlua1ByZXZpZXc7CiAKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1Jh
bmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4IGEwOTlj
NDZkZTcyNjk3ZGNkZjk1M2YxYTQxYjliNzQwYzIwMDUwNGMuLjkwMDM4MmNmOGI4MDBlYjFkNTE1
OTE4NWRlMmYzODMzYjBjNjZlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlBERlZpZXcubW0KQEAgLTYyLDkgKzYyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91
c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJh
cy5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
ZXh0ZXJuICJDIiB7CiAgICAgYm9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3RoaW5nKENH
Q29udGV4dFJlZiBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IDg1YWZmYzFiY2EwZDg3ODMzYjQ0OTYy
MmVhMWRhYTMyYWEwYzY0OWEuLjVmY2Y5ZjZhZmUwNTFiYjJmN2NjZjEzZTMyN2I0NWE1NTY3ODhi
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3Jp
cHREZWJ1Z2dlci5tbQpAQCAtMzksOCArMzksOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5k
b3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01X
aW5kb3cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcmlw
dENvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggMGU3YzVkN2U5MmUyOGIyZWZlNjJm
YTdjZTNhZDkxMmE0N2YwOTNkOC4uYjYyZjJjMzUyYTNiMDFiZWUyNzgzMDhlOWI3ODllYTkwNWFl
ZjY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQ
YWdlOwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgVGV4dEluZGljYXRvcjsKLWNsYXNzIFVSTDsK
IHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZv
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxw
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAK
aW5kZXggNmFmMzE1MTMxNjUxOGEyY2Y1NjI4ODgxYjQ4NWMyMjMzMGNjODA5Ny4uNzQ3MWExMTZj
NzMyZGJlZjhmZmYxMTBjM2QxMWJjMzZjODllOGI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNs
dWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKaW5kZXggNjZkZWU4YTQwNDYw
ZjkyNWM0OGY1OWVmNzdkOGY5MzA0NjA2OGQ0Ny4uODIwYjYyMTM2YmM4Y2QwZDMxM2ZjYzA3NGZl
YTNjYzVhMmFlYzRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hh
bGxpbmdIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdI
ZWxwZXJzLmgKQEAgLTMwLDE1ICszMCwxNCBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0Nv
cmVGb3VuZGF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBJbnRSZWN0
OwotICAgIGNsYXNzIFVSTDsKK2NsYXNzIEludFJlY3Q7CiB9CiAKIGNsYXNzIE1hcnNoYWxsaW5n
SGVscGVycwogewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgQlNUUlRvS1VSTChC
U1RSKTsKLSAgICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29uc3QgV2ViQ29yZTo6VVJMJik7Cisg
ICAgc3RhdGljIFVSTCBCU1RSVG9LVVJMKEJTVFIpOworICAgIHN0YXRpYyBCU1RSIFVSTFRvQlNU
Uihjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgQ0ZVUkxSZWYgUGF0aFN0cmluZ1RvRmlsZUNGVVJM
UmVmKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIEZpbGVDRlVS
TFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKTsKICAgICBzdGF0aWMgQ0ZVUkxSZWYg
QlNUUlRvQ0ZVUkxSZWYoQlNUUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGYyNDM2MDNjZTY3MTVkOGYxZjA4OGRlYWYy
OWFlMDA3MWQ4ZTk0NjguLjljZGNjMTQ1YjcxOTk5Y2RhNjk4NDE0ZTUyZmUyMmMzN2E4OTdiODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFi
YXNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgK
aW5kZXggMDEzNzA4ZWJkNzFmOTgzNzA1NDlhNDQ2NDExYmZhNGM3ZmQ5MzBhZC4uYWNjMGUxZmJh
NzQ2NDI5NDQxYmI5YWQ2NGZkYmNlMjUwZDJkYjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBGcmFtZTsKICAg
ICBjbGFzcyBJbnRTaXplOwotICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBQbHVnaW5EYXRhYmFz
ZUNsaWVudDsKICAgICBjbGFzcyBQbHVnaW5QYWNrYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4IGMzZTQ5
ZjQ0MTk2NTQ2MTBlZmQ0ZGM1ZjVlYmQ5YWIwOTFjMDZlMTUuLjgxNGUyYmI2ZGMzOTFmYzJmZmEx
YTk1YjY5ZTQ2ZDQ1ODBjMDM2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNp
bmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi9XaW5kb3dzRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0
cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVh
bS5oCmluZGV4IGY2MjhjY2QzZDVhNDU5MjZlNTM3MDM1MmQ4NmRjOWE3NTM1NThlNzEuLmMxYjlm
ODdhYzRlNjIyZmJiMmUyZTIwNWQxNjQ1OWMwYzE5NGU3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMzIsMTAgKzMyLDEwIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGI0ZTkxZjZl
MTJiM2JiOWIyYTM5ZDhiYThmMDJhOTQyMDQwNWJkMzAuLjdjZmM3YTlhODJlNzJjOTEyZjVkYjk5
OWNmYjM3YmY5Y2YxYTlmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlldy5oCkBAIC02MCw3ICs2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKICAgICBjbGFzcyBLZXlib2FyZEV2ZW50OwogICAgIGNs
YXNzIE1vdXNlRXZlbnQ7Ci0gICAgY2xhc3MgVVJMOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogICAgIGNsYXNzIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW47CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDIwM2QxNTY1ZTI1ODYxNzNjYTI1NjFhNTQ1YTM4
ZTYwZTc1YzhkODIuLmM5ZGU0OWIzY2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkxNThiZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBXZWJDb250
ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93
bmxvYWRVUkwoY29uc3QgVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUo
Y29uc3QgV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9u
YXJ5KFdlYkNvcmU6OkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFdURjo6
U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUu
Y3BwCmluZGV4IDY0MzUwNzY3ZjkzNDAyNmQwOWMwZmE4Yjg4ZGNjZGQzODk0MmVkMDcuLmNjMDM4
Y2VmZDkxNWY0NTE2ZDU4N2JhZjEwOWE1YWQ2NDdhMjAxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVs
ZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5j
bHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKaW5kZXggZjBmMWQ5MmYyZGIyNWI3NDQy
ODc3NTI0NjJhZmJhNGJjMWQxYzdmMS4uODI5NmM4Y2NiNjg4N2QzNDU0OGQ1YTY0YzY4Njc3MjZh
NzQ2MDc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUu
aApAQCAtMzgsNyArMzgsNiBAQCBpbnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb25QcmVz
ZW50ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgVVJM
OwogfQogCiBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlIDogcHVibGljIFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCAzOWNkMWMxNjc5YWRkZDIwNWJiMDdlODNmYTY5MjA5ODUzMjg1NzM2Li4zMmE5ZjBiYzMxNDAy
OTkxYjg5MjQ5ODAyNzk1NjNkZGUyMjg4OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjoKICAgICB2b2lkIGRpc3Bh
dGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJM
JiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGlu
dGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hE
aWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJl
cGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBvdmVycmlkZTsKQEAgLTE0MCw4ICsxNDAsOCBAQCBjbGFz
cyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dCwgcHVibGljIFdlYkNvcmU6OgogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQ
YWdlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRGV0
ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYsIGNvbnN0IFVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0
IFVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CkBAIC0xNTQsMTIgKzE1
NCwxMiBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAgYm9vbCBzaG91bGRGYWxsQmFj
ayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0
cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgV1RGOjpT
dHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAgICAgUmVmPFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXImKSBvdmVycmlkZSB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVS
TCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShX
ZWJDb3JlOjpDYWNoZWRGcmFtZSopIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29t
bWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgb3ZlcnJpZGU7CkBA
IC0xODUsMTUgKzE4NSwxNSBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAgYm9vbCBj
YW5DYWNoZVBhZ2UoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5h
bWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCYsCisgICAgUmVmUHRyPFdlYkNvcmU6
OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwg
V2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJp
bmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQg
bWFyZ2luSGVpZ2h0KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVh
dGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1h
bnVhbGx5KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Jiwg
Y29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6
OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlk
ZTsKICAgICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlIHsg
fQogICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Jikgb3ZlcnJp
ZGU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFy
YW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIG92ZXJyaWRl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25z
dCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcykgb3ZlcnJpZGU7CiAKLSAgICBXZWJD
b3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6
Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7CiAgICAgV1RGOjpTdHJpbmcgb3ZlcnJpZGVN
ZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDBjNGZiMDQyNGQwMWVhMTE1ZDI3ZWNlNzJl
MTkwMzg3NmU1YzFlNTkuLmJlMjRjYjhhNTY4NTljZDQzY2UxOWYwYTE3YmJmODFkYTdjOTlmMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00NSwxMSArNDUsMTEgQEAgY2xhc3Mg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2ll
cywgcHJpdmF0ZSBXZWJDb3IKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3Jl
YXRlQmxvYlJlZ2lzdHJ5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAg
ICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBX
ZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25z
dCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJp
ZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCAxYTQ1YWI4ZGUy
ODIzN2NmZGViNmYzOWRlMGYxNzRlZWI1ZDgyM2VmLi5kMzEwZDI5MTAwODcwMDllODliYWZlZjVm
MGUwMTI3NjE5NGRkZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTg0
LDcgKzg0LDcgQEAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92
aWRlcjo6cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWcKICAgICByZXR1cm4gb3V0UGx1Z2lu
czsKIH0KIAotVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRl
cjo6d2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgY29uc3QgV2ViQ29y
ZTo6VVJMJikKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlk
ZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYp
CiB7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRl
bnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbk5hbWVzOwogICAgIHJldHVybiBwbHVnaW5JbmZvKHBh
Z2UsIHN1cHBvcnRlZFBsdWdpbk5hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5k
ZXggODAxYmNiN2I0NjJkY2NkZGZjNzY1MmI2NGFmMDZmODYwZmZjNTVmYi4uMTBmNzY2ZTA2MDQ0
ZDE1OWIwYTFjZDkzOTQ5MjFlNzYxMmQ1NzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiBwcml2YXRlOgogICAgIHZvaWQg
cmVmcmVzaFBsdWdpbnMoKSBmaW5hbDsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4g
cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwgY29uc3Qg
V2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHdl
YlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwgY29uc3QgVVJMJikgZmluYWw7CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJD
b3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0
cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKSBmaW5h
bDsKICAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5r
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0
ZWRMaW5rU3RvcmUuaAppbmRleCA2YTdiOTkyMmMzYTM5MTUyMmMzZGEwNDdlNGEwNjk3M2I0MDRk
MTEwLi44YmVkZTllMjU4MTkxODMyMDI3MGVhYjY1Mjc0YTdhOTA2ZGI1OGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlz
aXRlZExpbmtTdG9yZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdlYlZpc2l0ZWRMaW5rU3Rv
cmUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZSB7CiBwcml2YXRlOgog
ICAgIFdlYlZpc2l0ZWRMaW5rU3RvcmUoKTsKIAotICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJD
b3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJM
JiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJp
bmdIYXNoLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
VVJMKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UmLCBX
ZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcG9wdWxhdGVW
aXNpdGVkTGlua3NJZk5lZWRlZChXZWJDb3JlOjpQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGE2ODJjNjI3NTBlMTFmNTIxNTY3MjFmM2Q4Mjgy
ZDU3ZTBmODA2ZDIuLmI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC00Myw3ICs0Myw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuaAppbmRleCA4NDg4NWYyNGZiODM0
YTJkZmNhODJlZWI3OWUxOWM3MTkxMDRhNDcyLi40ZjYxMTFlMjNiMmMyZTA3ZTBhZTRhZmFkNThl
YTUwZWQxYTMyYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3du
bG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmgKQEAgLTM4
LDcgKzM4LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgVVJM
OwogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
ICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNTIsMTMgKzUxLDEzIEBAIGNsYXNzIFdl
YkRvd25sb2FkCiAjZW5kaWYKIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNy
ZWF0ZUluc3RhbmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7
CisgICAgc3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJbnN0YW5jZShjb25zdCBVUkwmLCBJV2Vi
RG93bmxvYWREZWxlZ2F0ZSopOwogICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRlSW5zdGFu
Y2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgSVdlYkRvd25sb2FkRGVsZWdh
dGUqKTsKICAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKCk7CiBwcml2YXRl
OgogICAgIFdlYkRvd25sb2FkKCk7CiAgICAgdm9pZCBpbml0KFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7Ci0gICAgdm9pZCBpbml0KGNv
bnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAgdm9pZCBpbml0
KGNvbnN0IFVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CiAgICAgfldlYkRvd25sb2FkKCk7
CiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IGNkZjhjYWQ2YTM2OTZlZWJhY2U2MmY0
ZTU3ODRjZWU0YmVmMWQ5ZTkuLjI3YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQwZTFhYzUwYWQ3
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0
eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5
QmFnLmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3Vs
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ltYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
bmRlck9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IGRiZWE2OThhNTc1MDIx
MmE1MDY1MGU3ODM5MTY5ZDBhNWUxYjM3NTQuLmM0ZDA4MzYyZGFkNWU4MzkzZThkZmY4MzFjMjU5
ODFhMmM3N2ZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1l
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtMzQsOSArMzQs
OSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHNhbC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBj
bGFzcyBERUNMU1BFQ19VVUlEKCJ7QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1QTQwRTYzNTFE
fSIpIFdlYkZyYW1lIDogcHVibGljCiAgICAgSFJFU1VMVCBtYXRjaExhYmVsc0FnYWluc3RFbGVt
ZW50KGNvbnN0IEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElET01FbGVtZW50KiBhZ2FpbnN0
RWxlbWVudCwgQlNUUiogcmVzdWx0KTsKICAgICBIUkVTVUxUIGNhblByb3ZpZGVEb2N1bWVudFNv
dXJjZShib29sKiByZXN1bHQpOwogCi0gICAgV2ViQ29yZTo6VVJMIHVybCgpIGNvbnN0OworICAg
IFVSTCB1cmwoKSBjb25zdDsKIAogICAgIFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsKICAgICB2
b2lkIHNldFdlYlZpZXcoV2ViVmlldyopOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIERFQ0xT
UEVDX1VVSUQoIntBMzY3NjM5OC00NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9IikgV2ViRnJh
bWUgOiBwdWJsaWMKICAgICBjbGFzcyBXZWJGcmFtZVByaXZhdGU7CiAgICAgV2ViRnJhbWVQcml2
YXRlKiBkOwogICAgIGJvb2wgbV9xdWlja1JlZGlyZWN0Q29taW5nIHsgZmFsc2UgfTsKLSAgICBX
ZWJDb3JlOjpVUkwgbV9vcmlnaW5hbFJlcXVlc3RVUkw7CisgICAgVVJMIG1fb3JpZ2luYWxSZXF1
ZXN0VVJMOwogICAgIGJvb2wgbV9pblByaW50aW5nTW9kZSB7IGZhbHNlIH07CiAKICAgICBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4gbV9wYWdlUmVjdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykhpc3RvcnkuY3BwCmluZGV4IDIyYjA4NDZhOTA2Yjc4Mjg2NTZiOGQ5NTdjMTBhMGRmYWZmOGIz
MDEuLjAyMzM4NGNlOTZmMTA5NDljZGQ1OWY3NzRhODE0NWViYmVhN2I3YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAKICNpbmNsdWRl
ICJXZWJWaXNpdGVkTGlua1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRo
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5LmgKaW5kZXggMTdhZmY5MjgyN2QxZDEwOWI1M2U5Y2RjYzZjZTQ5YzhiZTNl
NzBlNS4uNjkzNzRkZjAyMDFkODk4Zjc3ZDZiMTIxOThjNjc1ZGNlNDgxODA4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuaApAQCAtMzMsOCArMzMsNyBAQAogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBVUkw7Ci0gICAg
Y2xhc3MgUGFnZUdyb3VwOworY2xhc3MgUGFnZUdyb3VwOwogfQogCiAvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCkBAIC03OCw3ICs3Nyw3IEBAIGNsYXNzIFdlYkhpc3RvcnkgOiBwdWJsaWMgSVdlYkhp
c3RvcnksIHB1YmxpYyBJV2ViSGlzdG9yeVByaXZhdGUgewogCiAgICAgLy8gV2ViSGlzdG9yeQog
ICAgIHN0YXRpYyBXZWJIaXN0b3J5KiBzaGFyZWRIaXN0b3J5KCk7Ci0gICAgdm9pZCB2aXNpdGVk
VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9vbCBpbmNyZWFzZVZp
c2l0Q291bnQpOworICAgIHZvaWQgdmlzaXRlZFVSTChjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0
cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1
cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENvdW50KTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rc1Rv
VmlzaXRlZExpbmtTdG9yZShXZWJWaXNpdGVkTGlua1N0b3JlJik7CiAKICAgICBDT01QdHI8SVdl
Ykhpc3RvcnlJdGVtPiBpdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggODQzNzYy
MDFkMDdlYjNmZWY1ZWIyZDlhNzIxNzZkMzE3Zjk5MTIyZS4uYTg1NTlhNWZkMjI3Y2JkMmIxN2Vh
ZjI4NWVhNjM5NWVhZmY4YTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnlJdGVtLmNwcApAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5
SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVz
b3VyY2UuY3BwCmluZGV4IGIyOTJkZGU3ZGNjZWY2MmZjYTczYjBjNGNiNGJhYjJhZGM1YmZmYjAu
Ljk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIC8vIFdlYlJlc291cmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZWJSZXNvdXJj
ZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpCitXZWJSZXNvdXJjZTo6V2ViUmVz
b3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGZyYW1lTmFtZSkKICAgICA6IG1fZGF0YShkYXRhKQogICAgICwgbV91cmwo
dXJsKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5oCmluZGV4IGI4YzdkY2NiMDM3NDlhYjc4NzNlMzdmZmEyOWYyNTJjNjUzYmViYTUu
LjRkZjNlMGMxMTUwNDY1MGE5ZjJiMDFjMjE3MWUyMWZjMjFhMGI5OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMjgsMTcgKzI4LDE3IEBACiAKICNpbmNsdWRlICJX
ZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBjbGFzcyBX
ZWJSZXNvdXJjZSA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgogICAgIHN0YXRpYyBX
ZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogcHJvdGVjdGVkOgotICAgIFdl
YlJlc291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBX
VEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKTsKKyAgICBXZWJSZXNvdXJjZShJU3RyZWFt
KiBkYXRhLCBjb25zdCBXVEY6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYg
ZnJhbWVOYW1lKTsKICAgICB+V2ViUmVzb3VyY2UoKTsKIAogcHVibGljOgpAQCAtNTgsNyArNTgs
NyBAQCBjbGFzcyBXZWJSZXNvdXJjZSA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHJpdmF0ZToK
ICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIENPTVB0cjxJU3RyZWFtPiBtX2RhdGE7
Ci0gICAgV2ViQ29yZTo6VVJMIG1fdXJsOworICAgIFdURjo6VVJMIG1fdXJsOwogICAgIFdURjo6
U3RyaW5nIG1fbWltZVR5cGU7CiAgICAgV1RGOjpTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwog
ICAgIFdURjo6U3RyaW5nIG1fZnJhbWVOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDgxYjI2OWZjNDIwYzU5Y2M2ZWY1ZDk5MmZjNzZj
YzQ5YjBlYTBmYjguLjk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3N2YwY2QwNjAwMjQ2YTEwMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5E
YXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJV
UkxSZXNwb25zZS5jcHAKaW5kZXggNDU3NmMyMjI1YzgzNTdmMzA2NzA2NzNjMTg4MDVkMzM4ZjQ4
MmJiNC4uMmQ4ZjA1Y2Y0YjMyOWU3OTJhNmNmNGMzNWJmZDk0YjQ0NDZiNjQ2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBA
CiAjZW5kaWYKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1
ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBXZWJVUkxS
ZXNwb25zZSogV2ViVVJMUmVzcG9uc2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxS
ZXNwb25zZSogaW5zdGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFu
IGh0dHAgcmVzcG9uc2UgLSBzbyBpdCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJm
YWNlCi0gICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6
OlVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFu
Y2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8i
KSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAg
cmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggYmQxMjY3NThhNTFjYzM1MzhmOWFjOTUz
N2NmYjFmYzdkZmRhZTM4OC4uNDgxMjM4NDcxM2M4Yjk5ZGE1Y2JhNWI2M2YyNTQ0NDlmZTUwYzY0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuaAppbmRleCAzY2ZkNjY3NjhlYjMyN2FlYWRjN2EwOWU0ZDI3Y2Vh
MjQ5NDhmZDdlLi4xYjcyYmJlODI3MzRjZTgzMzYyYTcyYzkwZWMyYjhmMDZlNThmZjQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5oCkBAIC00NjMsNyArNDYzLDcgQEAgY2xhc3MgV2ViVmll
dwogCiAgICAgLy8gQ29udmVuaWVudCB0byBiZSBhYmxlIHRvIHZpb2xhdGUgdGhlIHJ1bGVzIG9m
IENPTSBoZXJlIGZvciBlYXN5IG1vdmVtZW50IHRvIHRoZSBmcmFtZS4KICAgICBXZWJGcmFtZSog
dG9wTGV2ZWxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lOyB9Ci0gICAgY29uc3Qg
V1RGOjpTdHJpbmcmIHVzZXJBZ2VudEZvcktVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpOwor
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiB1c2VyQWdlbnRGb3JLVVJMKGNvbnN0IFVSTCYgdXJsKTsK
IAogICAgIHN0YXRpYyBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCBjbGFzcyBXZWJWaWV3CiAgICAgYm9v
bCBvbkdldE9iamVjdChXUEFSQU0sIExQQVJBTSwgTFJFU1VMVCYpIGNvbnN0OwogICAgIHN0YXRp
YyBTVERNRVRIT0RJTVAgQWNjZXNzaWJsZU9iamVjdEZyb21XaW5kb3coSFdORCwgRFdPUkQgb2Jq
ZWN0SUQsIFJFRklJRCwgdm9pZCoqIHBwT2JqZWN0KTsKIAotICAgIHZvaWQgZG93bmxvYWRVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKTsK
IAogICAgIHZvaWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCk7CiAgICAg
dm9pZCBzZXRSb290Q2hpbGRMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTBjOTU3NTgwYmM2
ODE0YzNiNmRlZGNiMjYyZmJlM2M4NzU5MjhlZi4uMWI0NTIxNjYwYWY3YWU2ZWExNzNmZGUzZjA5
N2I2ZThjNGM3OTU4NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3Jl
IHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHA6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpjcmVhdGVVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9G
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNoZWNrUmVsYXRpdmVVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVUkxE
aWZmZXJlbmNlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlm
ZmVyZW5jZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdl
bnRRdWlya3MuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpvcmln
aW5hbERhdGFBc1N0cmluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp1c2VyVmlzaWJsZVN0
cmluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpsaXRlcmFsVVJMKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW06CisgICAgICAgIChURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVz
dC5tbToKKyAgICAgICAgKGxpdGVyYWxVUkwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tOgorICAgICAgICAoLVtMb2Fk
SW52YWxpZFVSTFdlYkZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZFdpdGhFcnJvcjpmb3JGcmFtZTpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9TU0xLZXlHZW5lcmF0b3IubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vUGxh
dGZvcm1VdGlsaXRpZXNXaW4uY3BwOgorCiAyMDE4LTEwLTAzICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJsZSBzZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3Vu
ZGFyaWVzRW5hYmxlZCBieSBkZWZhdWx0IGluIFdlYktpdExlZ2FjeQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKaW5k
ZXggNThlNjlkMGRmNjMwNTk3YTEwZGIyZTljOTZhMmQ4ZGRjZGFhN2M2OS4uMTg4YjhiZGUwYzVm
MzQ5ZWRjOWY0MjVjZjkwODNjYzc3NjhkMDcwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC0zOCwxMCAr
MzgsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05GQS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTkZB
VG9ERkEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZEluZm8uaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMRmlsdGVyUGFyc2VyLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBiOTI4MzI0ZjM1OThk
ZGI0NjE3YTFkZWViODgyNjM2MGM2NWE0MjA1Li5hYWQxNmI4NjA0MTc5Y2E0M2E5NzczNzk1ODU0
YjU3NTc3M2FmYzlhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJXVEZT
dHJpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9VUkwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VSTC5jcHAKaW5kZXggNzM1MzRjODE3MzNlYmE0NTJmMzJmZDlmODIxNzFiYTliYTU0YjZiYi4u
ZGMzMWI0N2JkMDc4NjhhZWRjYWZmOTdmNTY1NmQ4M2Y3ODlkODMyMSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKQEAgLTI1LDExICsyNSw5IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCkBAIC03Myw4ICs3MSw3IEBAIFRFU1RfRihVUkxUZXN0LCBVUkxDb25z
dHJ1Y3RvckNvbnN0Q2hhcikKIAogc3RhdGljIFVSTCBjcmVhdGVVUkwoY29uc3QgY2hhciogdXJs
QXNTdHJpbmcpCiB7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxBc1N0cmluZyk7Ci0gICAgcmV0
dXJuIHBhcnNlci5yZXN1bHQoKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgdXJsQXNTdHJpbmcpOwog
fTsKIAogVEVTVF9GKFVSTFRlc3QsIFVSTFByb3RvY29sSG9zdEFuZFBvcnQpCkBAIC0zMTcsMjAg
KzMxNCwyMCBAQCBURVNUX0YoVVJMVGVzdCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQp
CiAKIFRFU1RfRihVUkxUZXN0LCBQcm90b2NvbElzSW5IVFRQRmFtaWx5KQogewotICAgIEVYUEVD
VF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KHt9KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoIiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgiYSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWls
eSgiYWIiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiYyIp
KTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZCIpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZGUiKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlZiIpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZGVmZyIpKTsKLSAgICBFWFBFQ1RfVFJV
RShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwOiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJv
dG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cCIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90b2NvbElz
SW5IVFRQRmFtaWx5KCJodHRwczoiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhU
VFBGYW1pbHkoImh0dHBzIikpOwotICAgIEVYUEVDVF9UUlVFKHByb3RvY29sSXNJbkhUVFBGYW1p
bHkoImh0dHBzOi8vIUAjJCVeJiooKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KHsgfSkpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoIiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCJhIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoImFiIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHko
ImFiYyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJh
YmNkIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFi
Y2RlIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFi
Y2RlZiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJh
YmNkZWZnIikpOworICAgIEVYUEVDVF9UUlVFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgi
aHR0cDoiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgi
aHR0cCIpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0
dHBzOiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJo
dHRwcyIpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0
dHBzOi8vIUAjJCVeJiooKSIpKTsKIH0KIAogVEVTVF9GKFVSTFRlc3QsIEhvc3RJc0lQQWRkcmVz
cykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJz
ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAK
aW5kZXggM2UxMDU5MmEwM2QwYWIwMWUyYzE2NmE0NTNlYWFlZWMxZmEwMzljMS4uMWM0ZGNkZDA1
ZTIxZDdiNWZkN2FiN2RmZTg1ZDhmMDVjMWFjOGE3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYQogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogCi0g
ICAgRVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7
CisgICAgRVhQRUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVu
dCh1cmwpKTsKIAogICAgIGlmICh0ZXN0VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAgICAgIHJl
dHVybjsKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogICAgIAot
ICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkp
OworICAgIEVYUEVDVF9UUlVFKFdURjo6VVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3Rl
bnQodXJsKSk7CiAgICAgCiAgICAgaWYgKHRlc3RUYWJzID09IFRlc3RUYWJzOjpObykKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVy
ZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZp
ZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnN0cmluZywgdXJsLnN0cmluZygp
KSk7CiAgICAgCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNp
c3RlbnQodXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFsVmFs
dWVzQ29uc2lzdGVudCh1cmwpKTsKICAgICAKICAgICBpZiAodGVzdFRhYnMgPT0gVGVzdFRhYnM6
Ok5vKQogICAgICAgICByZXR1cm47CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgY2hl
Y2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGIKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZyYWdt
ZW50SWRlbnRpZmllcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuc3RyaW5nLCB1
cmwuc3RyaW5nKCkpKTsKICAgICAKLSAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6OmludGVybmFs
VmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OlVSTFBhcnNlcjo6
aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwogICAgIAogICAgIGlmICh0ZXN0VGFicyA9
PSBUZXN0VGFiczo6Tm8pCiAgICAgICAgIHJldHVybjsKQEAgLTIxMyw4ICsyMTMsNyBAQCBzdGF0
aWMgdm9pZCBzaG91bGRGYWlsKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VTdHJpbmcpCiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBw
YXJ0cywgVGVzdFRhYnMgdGVzdFRhYnMgPSBUZXN0VGFiczo6WWVzKQogewotICAgIFVSTFBhcnNl
ciBwYXJzZXIodXJsU3RyaW5nLCB7IH0sIGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9IHBhcnNl
ci5yZXN1bHQoKTsKKyAgICBhdXRvIHVybCA9IFVSTCh7IH0sIHVybFN0cmluZywgZW5jb2Rpbmcp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwpAQCAtMjM4LDkgKzIzNyw3IEBA
IHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0
RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zCiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IFRleHRF
bmNvZGluZyogZW5jb2RpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGFicyB0
ZXN0VGFicyA9IFRlc3RUYWJzOjpZZXMpCiB7Ci0gICAgVVJMUGFyc2VyIGJhc2VQYXJzZXIoYmFz
ZVVSTFN0cmluZywgeyB9LCBlbmNvZGluZyk7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxTdHJp
bmcsIGJhc2VQYXJzZXIucmVzdWx0KCksIGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9IHBhcnNl
ci5yZXN1bHQoKTsKKyAgICBhdXRvIHVybCA9IFVSTChVUkwoeyB9LCBiYXNlVVJMU3RyaW5nKSwg
dXJsU3RyaW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2ws
IHVybC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVz
ZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50
UXVpcmtzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRR
dWlya3MuY3BwCmluZGV4IDRjODAzMmI5MzZjZmUzYTU5MWYyMDJlZjBlMGVhMWRmMGVmN2Q3Yjcu
LjBjNWU2Mzc3OWJhN2UwMWZhNjg5YjcwOWQzYWY3ZmU1MThmNzAwNDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBA
IC0yNSw4ICsyNSw4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuY3BwCmluZGV4IDc2YjEwMzU3NWNhNDI1Y2UzZmU1OGRhMzEzNmIwZWVjMGQ2ZDNmMWUuLjMw
MGIxM2NiY2ExMGMyMWIzMDdlZWUzMTE0ZGUwMGZiZjBmZTAyZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQuY3BwCkBAIC0yNCw5ICsyNCw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Zb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tCmluZGV4IDZm
ZmQ3ZGFjYjNmYzAyMTJhNDA0ZDg1NmIzMThjOTM2OWY4OWZlOTYuLmI2NDBiMTBiZmYyZjAxOWI3
MjcyNDNhN2M2MDA4NTFhZGFmZDc1ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1VSTEV4dHJhcy5tbQpAQCAtMjUsOCArMjUsOCBAQAogCiAj
aW1wb3J0ICJjb25maWcuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMu
aD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJh
cy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKQEAgLTUwLDE3ICs1MCwxNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZGF0YUFzU3Ry
aW5nKE5TRGF0YSAqZGF0YSkKIAogc3RhdGljIGNvbnN0IGNoYXIqIG9yaWdpbmFsRGF0YUFzU3Ry
aW5nKE5TVVJMICpVUkwpCiB7Ci0gICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXZWJDb3JlOjpvcmln
aW5hbFVSTERhdGEoVVJMKSk7CisgICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXVEY6Om9yaWdpbmFs
VVJMRGF0YShVUkwpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJWaXNpYmxlU3RyaW5n
KE5TVVJMICpVUkwpCiB7Ci0gICAgcmV0dXJuIFtXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyhV
UkwpIFVURjhTdHJpbmddOworICAgIHJldHVybiBbV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhVUkwp
IFVURjhTdHJpbmddOwogfQogCiBzdGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29uc3QgY2hhciog
bGl0ZXJhbCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEobGl0ZXJhbEFzRGF0
YShsaXRlcmFsKSwgbmlsKTsKKyAgICByZXR1cm4gV1RGOjpVUkxXaXRoRGF0YShsaXRlcmFsQXNE
YXRhKGxpdGVyYWwpLCBuaWwpOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhcykKQEAgLTEy
Nyw4ICsxMjcsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19EaXZpc2lvblNpZ24pCiAgICAg
Ly8gU2VsZWN0ZWQgdGhlIGRpdmlzaW9uIHNpZ24gYXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1BU0NJ
SSBjaGFyYWN0ZXIgdGhhdCBpcyBhbGxvd2VkIGluIGhvc3QgbmFtZXMsIHNpbmNlIGl0J3MgYSBs
b29rYWxpa2UgY2hhcmFjdGVyLgogCiAgICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9u
ZSB1c2VkIHdoZW4gdHlwaW5nIGluIGEgVVJMLgotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3Np
dGUueG4tLWNvbW90aGVyc2l0ZS1ramIub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV2ViQ29y
ZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJz
aXRlLm9yZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNc
eEI3b3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdlYkNvcmU6OlVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwp
KSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS54bi0tY29tb3RoZXJzaXRlLWtqYi5v
cmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJo
dHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNU
X1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJs
ZVN0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMz
XHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIg
dG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3Bv
bnNlcy4KICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRl
Lm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbVx4
QzNceEI3b3RoZXJzaXRlLm9yZyIpKSk7CkBAIC0xMzcsMTcgKzEzNywxNyBAQCBURVNUKFdlYkNv
cmUsIFVSTEV4dHJhc19EaXZpc2lvblNpZ24pCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0
ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRlcmFsVVJM
KCJodHRwOi8vc2l0ZS5jb20lQzMlQjdvdGhlcnNpdGUub3JnIikpKTsKIAogICAgIC8vIFNlcGFy
YXRlIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1lIG9uIGl0cyBvd24u
Ci0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLnhuLS1jb21vdGhlcnNpdGUta2piLm9yZyIsIFtXZWJD
b3JlOjplbmNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIikgVVRG
OFN0cmluZ10pOwotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5v
cmciLCBbV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRl
Lm9yZyIpIFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUueG4tLWNvbW90aGVy
c2l0ZS1ramIub3JnIiwgW1dURjo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3Ro
ZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tXHhD
M1x4QjdvdGhlcnNpdGUub3JnIiwgW1dURjo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNc
eEI3b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAotVEVTVChXZWJDb3JlLCBVUkxF
eHRyYXNfU29saWR1cykKK1RFU1QoV1RGLCBVUkxFeHRyYXNfU29saWR1cykKIHsKICAgICAvLyBT
ZWxlY3RlZCBmdWxsIHdpZHRoIHNvbGlkdXMsIHdoaWNoIGxvb2tzIGxpa2UgdGhlIHNvbGlkdXMs
IHdoaWNoIGlzIHRoZSBjaGFyYWN0ZXIgdGhhdCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgaG9z
dCBuYW1lLgogCiAgICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1c2VkIHdoZW4g
dHlwaW5nIGluIGEgVVJMLgotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tL290aGVy
c2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVk
U3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIsIG5pbCkp
KTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgdXNl
clZpc2libGVTdHJpbmcoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9z
aXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NU
UkVRKCJodHRwOi8vc2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5n
KFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4
Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5j
b20vb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBl
ZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwp
KSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJM
cyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFB
c1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUu
b3JnIikpKTsKQEAgLTE1Niw4ICsxNTYsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19Tb2xp
ZHVzKQogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJUVGJUJDJThGb3RoZXJzaXRl
Lm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVFRiVC
QyU4Rm90aGVyc2l0ZS5vcmciKSkpOwogCiAgICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25zIHRoYXQg
ZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5hbWUgb24gaXRzIG93bi4KLSAgICBFWFBFQ1RfU1RSRVEo
InNpdGUuY29tL290aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRl
LmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7Ci0gICAgRVhQRUNU
X1NUUkVRKCJzaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhvc3ROYW1l
KEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAg
IEVYUEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmVuY29kZUhvc3RO
YW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwor
ICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmRlY29kZUhv
c3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10p
OwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKQEAgLTE2NSw4ICsxNjUsOCBA
QCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKICAgICAvLyBTZWxlY3RlZCBpZGVvZ3Jh
cGhpYyBzcGFjZSwgd2hpY2ggbG9va3MgbGlrZSB0aGUgQVNDSUkgc3BhY2UsIHdoaWNoIGlzIG5v
dCBhbGxvd2VkIHVuZXNjYXBlZC4KIAogICAgIC8vIENvZGUgcGF0aCBzaW1pbGFyIHRvIHRoZSBv
bmUgdXNlZCB3aGVuIHR5cGluZyBpbiBhIFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9z
aXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJz
aXRlLm9yZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90
aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVk
U3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkp
KTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCBv
cmlnaW5hbERhdGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v
c2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9T
VFJFUSgiaHR0cDovL3NpdGUuY29tJTIwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5n
KFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4
MG90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8g
dGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNl
cy4KICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0
ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb21c
eEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIikpKTsKQEAgLTE3NSwzMSArMTc1LDMxIEBAIFRFU1Qo
V2ViQ29yZSwgVVJMRXh0cmFzX1NwYWNlKQogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUu
Y29tJUUzJTgwJTgwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwo
Imh0dHA6Ly9zaXRlLmNvbSVFMyU4MCU4MG90aGVyc2l0ZS5vcmciKSkpOwogCiAgICAgLy8gU2Vw
YXJhdGUgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5hbWUgb24gaXRzIG93
bi4KLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tIG90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6
ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4
U3RyaW5nXSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0
ZS5vcmciLCBbV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90
aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbSBv
dGhlcnNpdGUub3JnIiwgW1dURjo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4
MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNv
bVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBbV1RGOjpkZWNvZGVIb3N0TmFtZShAInNpdGUu
Y29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAogVEVTVChX
ZWJDb3JlLCBVUkxFeHRyYXNfRmlsZSkKIHsKLSAgICBFWFBFQ1RfU1RSRVEoImZpbGU6Ly8vJUUy
JTk4JTgzIiwgW1tXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTovLy/imIMi
LCBuaWwpIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJm
aWxlOi8vLyVFMiU5OCU4MyIsIFtbV1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTov
Ly/imIMiLCBuaWwpIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSk7CiB9CiAKIFRFU1QoV2Vi
Q29yZSwgVVJMRXh0cmFzX1BhcnNpbmdFcnJvcikKIHsKICAgICAvLyBFeHBlY3QgSUROIGZhaWx1
cmUuCi0gICAgTlNVUkwgKnVybCA9IFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJo
dHRwOi8v76O/LmNvbSIsIG5pbCk7CisgICAgTlNVUkwgKnVybCA9IFdURjo6VVJMV2l0aFVzZXJU
eXBlZFN0cmluZyhAImh0dHA6Ly/vo78uY29tIiwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwg
PT0gbmlsKTsKIAotICAgIE5TU3RyaW5nICplbmNvZGVkSG9zdE5hbWUgPSBXZWJDb3JlOjplbmNv
ZGVIb3N0TmFtZShAImh0dHA6Ly/vo78uY29tIik7CisgICAgTlNTdHJpbmcgKmVuY29kZWRIb3N0
TmFtZSA9IFdURjo6ZW5jb2RlSG9zdE5hbWUoQCJodHRwOi8v76O/LmNvbSIpOwogICAgIEVYUEVD
VF9UUlVFKGVuY29kZWRIb3N0TmFtZSA9PSBuaWwpOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4
dHJhc19OaWwpCiB7Ci0gICAgTlNVUkwgKnVybDEgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVk
U3RyaW5nKG5pbCwgbmlsKTsKKyAgICBOU1VSTCAqdXJsMSA9IFdURjo6VVJMV2l0aFVzZXJUeXBl
ZFN0cmluZyhuaWwsIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUodXJsMSA9PSBuaWwpOwogCi0gICAg
TlNVUkwgKnVybDIgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChu
aWwsIG5pbCk7CisgICAgTlNVUkwgKnVybDIgPSBXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdE
ZXByZWNhdGVkKG5pbCwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwyID09IG5pbCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tCmluZGV4IDUwNWFmMzU3ZTVkMTAxZDE3NmI1
MjNkMTU1YTYyOTRiYmU4ZjdmZGYuLjkwZDQ2MTBjNzQxMDk5ZmFlNGE2MGJlOTc3NjVjYzNkN2Iw
ZWNkNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Mb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbQpAQCAtMzAsOSArMzAsOSBA
QAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgotI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaD4KIAogc3RhdGljIGJvb2wgaXNEb25lOwogc3RhdGljIGludCBw
cm92aXNpb25hbExvYWRDb3VudDsKQEAgLTExMCw3ICsxMTAsNyBAQCBURVNUKFdLV2ViVmlldywg
TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdGcm9tUHJvdmlzaW9uYWxMb2FkRXJyb3JCYWNrVG9CYWNr
KQogICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OwogCiAgICAgICAgIGNoYXIgbGl0ZXJhbFtdID0gImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tPD4v
IjsKLSAgICAgICAgTlNVUkwqIHRhcmdldFVSTCA9IFdlYkNvcmU6OlVSTFdpdGhEYXRhKFtOU0Rh
dGEgZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBuaWwpOwor
ICAgICAgICBOU1VSTCogdGFyZ2V0VVJMID0gV1RGOjpVUkxXaXRoRGF0YShbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6bGl0ZXJhbCBsZW5ndGg6c3RybGVuKGxpdGVyYWwpXSwgbmlsKTsKICAgICAgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0YXJnZXRV
UkxdXTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDp0YXJnZXRVUkxdXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQppbmRleCBh
Yzk4YzE5NjQ0MGFiN2I1NTA4NGM5NWQ3OGQwOWZlN2ZjNzk3ZTNjLi5lYWE1NWNhYzY3ZjhlODQ0
MTQzMjdkNGRhZTMyNjA5NjQ1ZDk1YmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQpA
QCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlldy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29h
L05TVVJMRXh0cmFzLmg+CiAKIHN0YXRpYyBib29sIGRpZEZpbmlzaFRlc3Q7CiBzdGF0aWMgYm9v
bCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkOwpAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgY29uc3Qg
Y2hhciBsaXRlcmFsW10gPSAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb208Pi8iOwogCiBzdGF0aWMg
TlNVUkwgKmxpdGVyYWxVUkwoY29uc3QgY2hhciogbGl0ZXJhbCkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0
cmxlbihsaXRlcmFsKV0sIG5pbCk7CisgICAgcmV0dXJuIFdURjo6VVJMV2l0aERhdGEoW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CiB9
CiAKIEBpbnRlcmZhY2UgTG9hZEludmFsaWRVUkxOYXZpZ2F0aW9uQWN0aW9uRGVsZWdhdGUgOiBO
U09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAppbmRleCBi
MDUxNDUyNGY3MjU5MWY2Y2I1MDI5MTEwMzFiN2JmYThhM2FmYTA3Li4xYmFhZTk1YWMwNjIzMWZi
ZmIyOWE4YmExNDE4Nzc3MmI1YWYzYWQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAKQEAgLTIyLDgg
KzIyLDggQEAKIAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJW
aWV3VGVzdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRl
IDxnbGliL2dzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAK
IHN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0KaW5kZXggOGQ1
NGNhNmUxOWUwZDY5OTYyYTVmMTUzMjM1NDJhZWYyMDM1NzVkMS4uODZiN2IzYzRhOTk4NjMwZDI4
NWU1MTc5NWZjOGFkNjk4MWNmYzkyNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQpAQCAtMjYsMTAgKzI2LDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0j
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
TmF2aWdhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgog
CiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hUZXN0Owogc3RhdGljIGJvb2wgZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZDsKQEAgLTUxLDcgKzUxLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKICAgICBF
WFBFQ1RfRVEoZXJyb3IuY29kZSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMKTsKIAogICAgIHN0
YXRpYyBjaGFyIGxpdGVyYWxbXSA9ICJodHRwczovL3d3dy5leGFtcGxlLmNvbSQvIjsKLSAgICBO
U1VSTCAqZmFpbGVkVVJMID0gV2ViQ29yZTo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5
dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CisgICAgTlNVUkwgKmZh
aWxlZFVSTCA9IFdURjo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwg
bGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUoW2Vycm9yLnVz
ZXJJbmZvW0AiTlNFcnJvckZhaWxpbmdVUkxLZXkiXSBpc0VxdWFsOmZhaWxlZFVSTF0pOwogCiAg
ICAgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW0KaW5kZXggZGRlOGM3ZDAxZGE2NzgwNDE5
NWM3ZjQxZTI5MTFhNzg5YzcwMmM1Mi4uYWMxYmY3ZGI2Yzk4YjAyZDI1NTI2NTk3MmJjMjk5ZGEw
Yzk4N2VkZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5
R2VuZXJhdG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NTTEtleUdl
bmVyYXRvci5tbQpAQCAtMjksOSArMjksOSBAQAogI2ltcG9ydCA8U2VjdXJpdHkvU2VjQXNuMVRl
bXBsYXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NTTEtleUdlbmVyYXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC02OSw3ICs2OSw3IEBAIGNvbnN0IFNlY0FzbjFU
ZW1wbGF0ZSBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VUZW1wbGF0ZVtdIHsKICAgICB7IDAs
IDAsIDAsIDAgfQogfTsKIAotY29uc3QgV2ViQ29yZTo6VVJMIHVybCA9IFdlYkNvcmU6OlVSTChX
ZWJDb3JlOjpVUkwoKSwgImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iKTsKK2NvbnN0IFVSTCB1cmwg
PSBVUkwoVVJMKCksICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIik7CiAKIGNsYXNzIFNTTEtleUdl
bmVyYXRvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5kZXggOGY3NTVj
MzJjOGMyZTJlMGQzNzlkM2U1ZjA3Y2M2YjliZGNjMTg2NS4uOTE3Y2JlYmNlZTU2YzdjMTc2NDgy
MGZjYmQxZDBiOGYzNDkwNjU0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4v
UGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Bs
YXRmb3JtVXRpbGl0aWVzV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8U2hs
d2FwaS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351523</attachid>
            <date>2018-10-03 08:36:48 -0700</date>
            <delta_ts>2018-11-30 16:16:32 -0800</delta_ts>
            <desc>Add Linux support</desc>
            <filename>bug-190234-20181004003646.patch</filename>
            <type>text/plain</type>
            <size>1278751</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUxNWRmNGRlNGZhMDAyZmM1NDRhODAz
MGNiNjQ4ZmM1NTYyMzU0MzAuLjkzZjVkNDFhZmZjNDdkOGRmYmQxN2IxYWRjNTFhZjYwODNiZTZi
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTgtMTAtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUg
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAg
ICAgICAgKiB3dGYvVVJMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgICogd3Rm
L1VSTC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmguCisgICAg
ICAgICogd3RmL1VSTEhhc2guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTEhhc2guaC4KKyAgICAgICAgKFdURjo6VVJMSGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6
OlVSTEhhc2g6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvVVJMUGFyc2VyLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAuCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KToKKyAgICAgICAgKFdURjo6VVJMUGFy
c2VyOjpwYXJzZUF1dGhvcml0eSk6CisgICAgICAgICogd3RmL1VSTFBhcnNlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmguCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpyZXN1bHQp
OgorICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4dHJhcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAuCisgICAgICAgICogd3RmL2NmL0NG
VVJMRXh0cmFzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVS
TEV4dHJhcy5oLgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAuCisgICAgICAgICogd3RmL2NvY29hL05T
VVJMRXh0cmFzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRy
YXMubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0uCisgICAgICAgIChXVEY6OmlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIp
OgorICAgICAgICAoV1RGOjppc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdU
Rjo6aXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjppc0xv
b2thbGlrZUNoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OndoaXRlTGlzdElETlNjcmlwdCk6Cisg
ICAgICAgIChXVEY6OnJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKToKKyAgICAgICAgKFdURjo6
YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KToKKyAgICAgICAgKFdURjo6aXNTZWNv
bmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyk6CisgICAgICAgIChXVEY6OmlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjphbGxDaGFyYWN0ZXJzQWxs
b3dlZEJ5VExEUnVsZXMpOgorICAgICAgICAoV1RGOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6Cisg
ICAgICAgIChXVEY6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChX
VEY6Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChXVEY6OmRlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKToKKyAgICAgICAgKFdURjo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFu
Z2UpOgorICAgICAgICAoV1RGOjpkZWNvZGVIb3N0TmFtZSk6CisgICAgICAgIChXVEY6OmVuY29k
ZUhvc3ROYW1lKToKKyAgICAgICAgKFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyk6
CisgICAgICAgIChXVEY6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKToKKyAgICAgICAg
KFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcpOgorICAgICAgICAoV1RGOjphcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6CisgICAgICAgIChXVEY6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKToKKyAgICAgICAgKFdURjo6bWFwSG9zdE5hbWVz
KToKKyAgICAgICAgKFdURjo6c3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOgorICAgICAgICAo
V1RGOjpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOgorICAgICAg
ICAoV1RGOjpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIpOgorICAgICAgICAoV1RGOjpV
UkxXaXRoRGF0YSk6CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKToKKyAg
ICAgICAgKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyk6CisgICAgICAgIChXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKToKKyAgICAgICAgKFdURjo6aGFzUXVlc3Rpb25N
YXJrT25seVF1ZXJ5U3RyaW5nKToKKyAgICAgICAgKFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5
cGUpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENo
YXJhY3Rlcik6CisgICAgICAgIChXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6CisgICAgICAg
IChXVEY6Om9yaWdpbmFsVVJMRGF0YSk6CisgICAgICAgIChXVEY6OmNyZWF0ZVN0cmluZ1dpdGhF
c2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KToKKyAgICAgICAgKFdURjo6aXNVc2VyVmlzaWJsZVVSTCk6CisgICAgICAgIChXVEY6OnJhbmdl
T2ZVUkxTY2hlbWUpOgorICAgICAgICAoV1RGOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6CisgICAg
ICAgICogd3RmL2NvY29hL1VSTENvY29hLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VSTE1hYy5tbS4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOgorICAgICAg
ICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2xpYi9HVW5p
cXVlUHRyU291cC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0dVbmlxdWVQdHJTb3VwLmguCisgICAgICAgICogd3RmL2dsaWIvVVJMU291cC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwLgor
CiAyMDE4LTEwLTAzICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4K
IAogICAgICAgICAtV3VudXNlZC12YXJpYWJsZSBpbiBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xs
YWJsZUFyZWFTZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyOWMwZGZlMTY3ODlkNmFlNTNmNmRjN2JiOGQzYjMx
MjM0ZDI1OTQ5Li44ZTU5ZTMzMTgzODViYzQ4MWNlYWQxNGVkMmUzZDI5NTgwOWVmNDY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQxIEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3Jl
IHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QSBVUkwgaXMgYSBsb3ctbGV2ZWwgY29uY2VwdCB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbiBvdGhl
ciBjbGFzc2VzIGluIFdlYkNvcmUuCisgICAgICAgIFdlIGFyZSBzdGFydGluZyB0byB1c2UgVVJM
cyBpbiBKYXZhU2NyaXB0Q29yZSBmb3IgbW9kdWxlcy4KKyAgICAgICAgSSBuZWVkIFVSTCBhbmQg
VVJMUGFyc2VyIGluIGEgcGxhY2Ugd2l0aCBmZXdlciBkZXBlbmRlbmNpZXMgZm9yIHJkYXI6Ly9w
cm9ibGVtLzQ0MTE5Njk2CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vz
c2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNo
YW50RXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRv
ci5jcHA6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAg
ICAqIE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRh
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oOgorICAgICAgICAqIE1v
ZHVsZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5o
OgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oOgorICAgICAg
ICAqIE1vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBT
b3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9k
dWxlTG9hZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTTWFwTGlrZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UmVhZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
RmluYWwuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKiBjb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRl
bnNpb25SdWxlc0ZvclBpbmdMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjphcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1
ZS5oOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBjc3MvU3R5
bGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3Nz
L1N0eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gpOgor
ICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+Ojpjb25z
dHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21z
Lmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXI6OnNldERhdGFGcm9tSXRlbUxpc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpjb21wbGV0ZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
ZW5zdXJlVGVtcGxhdGVEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXJsRm9yQmluZGluZ3MgY29uc3QpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzSmF2YVNjcmlw
dFVSTEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICogZG9tL0lubGluZVN0eWxlU2hlZXRPd25l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZXJDb250ZXh0Rm9yRWxlbWVudCk6CisgICAg
ICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YmFzZVVSSSBjb25z
dCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5o
OgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZG9t
L1NlY3VyaXR5Q29udGV4dC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTCk6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRRdW90ZWRVUkxBdHRy
aWJ1dGVWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmg6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250
ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6
OnJlYWRXZWJBcmNoaXZlKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgICog
ZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU3VicmVzb3VyY2VV
UkxBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1
cCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHA6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaDoKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JVUkwuY3BwOgor
ICAgICAgICAqIGZpbGVhcGkvQmxvYlVSTC5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgor
ICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkv
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUu
aDoKKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgICogaHRtbC9ET01V
UkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvRE9NVVJMLmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVuVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbik6CisgICAg
ICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V1RGOjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3Vt
ZW50PFdlYkNvcmU6OlVSTD46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKToKKyAgICAgICAgKiBodG1sL0ltYWdl
Qml0bWFwLmg6CisgICAgICAgICogaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmg6CisgICAg
ICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBodG1sL1B1YmxpY1VS
TE1hbmFnZXIuaDoKKyAgICAgICAgKiBodG1sL1VSTElucHV0VHlwZS5jcHA6CisgICAgICAgICog
aHRtbC9VUkxSZWdpc3RyeS5oOgorICAgICAgICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6VVJMU2VhcmNoUGFyYW1zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6dG9TdHJpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9tQXNzb2NpYXRlZFVSTCk6CisgICAgICAgICog
aHRtbC9VUkxVdGlscy5oOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldEhvc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldFBvcnQpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNlbWljb2xvblNlcGFyYXRlZFZhbHVlQ29udGFpbnNKYXZhU2Ny
aXB0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2Vu
KToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbik6CisgICAgICAgIChXZWJDb3Jl
OjpYU1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVk
aXRvcjo6ZmlsdGVySW5wdXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpm
aWx0ZXJCdXR0b25Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjplcmFzZURh
bmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmlzTGlrZWx5U2FmZVJlc291cmNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRp
dG9yLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYik6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9D
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5IGNvbnN0KToKKyAgICAgICAg
KiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Np
b24uaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OnJlY2VpdmVkRmlyc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpj
b250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlV2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlz
dG9yeUNvbnRyb2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0pOgorICAgICAg
ICAqIGxvYWRlci9MaW5rTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0xvYWRUaW1pbmcuaDoK
KyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvTWl4
ZWRDb250ZW50Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVj
a2VyOjpjaGVja0Zvcm1Gb3JNaXhlZENvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9N
aXhlZENvbnRlbnRDaGVja2VyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2hvdWxkU2No
ZWR1bGVOYXZpZ2F0aW9uIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVk
dWxlci5oOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZEluZm8uaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlVGltaW5nLmg6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAqIGxv
YWRlci9TdWJmcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5o
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL01hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZl
c3RQYXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0
aW9uKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW06CisgICAgICAgICogcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAqIHBhZ2Uv
Q29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JF
bmFibGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNzKToKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9IaXN0b3J5Lmg6CisgICAg
ICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6dXJs
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAq
IHBhZ2UvTG9jYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdl
L1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5oOgorICAgICAg
ICAqIHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHA6CisgICAgICAgICogcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2Vj
dXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6
CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlPcmlnaW5EYXRhLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAg
ICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIpOgorICAgICAg
ICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5o
OgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9Tb2NrZXRQcm92
aWRlci5oOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oOgorICAgICAgICAq
IHBhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250
ZW50VVJMUGF0dGVybi5oOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5oOgorICAgICAgICAq
IHBhZ2UvVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBwYWdlL1Zpc2l0ZWRMaW5rU3RvcmUu
aDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAg
KiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Lmg6CisgICAgICAgICogcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaDoKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9EcmFnRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MaW5rSWNvbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y2FuRXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0VVJMKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1By
b21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TU0xLZXlHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNo
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmg6CisgICAgICAgICog
cGxhdGZvcm0vU291cmNlc1NvdXAudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vVXNlckFnZW50UXVpcmtzLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9Vc2VyQWdlbnRHTGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFn
Z2VkU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKHdlYktpdE1lZGlhU3JjU2V0VXJpKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFn
SW1hZ2VHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzUGxh
aW5UZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9z
dE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW06Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjppc0Fy
bWVuaWFuTG9va2FsaWtlQ2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omlz
QXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNB
U0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6aXNMb29rYWxpa2VDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d2hp
dGVMaXN0SUROU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJRE5TY3Jp
cHRXaGl0ZUxpc3RGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFsbENoYXJhY3Rl
cnNJbklETlNjcmlwdFdoaXRlTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1Nl
Y29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6YWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Om1hcEhvc3ROYW1lV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
ZW5jb2RlSG9zdE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFJhbmdl
c1RoYXROZWVkTWFwcGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFu
Z2VzVGhhdE5lZWRFbmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0
UmFuZ2VzVGhhdE5lZWREZWNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjphcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjptYXBIb3N0TmFtZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
c3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpVUkxXaXRoRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVS
TFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Omhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3Rlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxCeVJlbW92aW5nVXNlckluZm8pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6b3JpZ2luYWxVUkxEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjppc1VzZXJWaXNpYmxlVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnJhbmdlT2ZVUkxTY2hlbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9va3NMaWtl
QWJzb2x1dGVVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JQYXJ0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVx
dWVzdCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Q
cm94eVNlcnZlckN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vQlN0cmluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya3VwVG9DRkhUTUwp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQXR0YWNobWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjpzb3VyY2VVUkkgY29uc3QpOgorICAg
ICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmg6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRv
Q29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVu
dENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9y
dC5jcHA6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5Lmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5o
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleS5oOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIHhtbC9Y
TUxIdHRwUmVxdWVzdC5oOgorCiAyMDE4LTEwLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgSDI2NCBzaW11bGNhc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjZm
ZGRhNjU2NDJjZjVlNWFlMjFlZmZhYjEyMzBhYmFlODNjMGU0ZC4uY2YwMzc0NDRjYmIwYjdmYmQ0
YWNkOWJkNDEyOGMwMjNjNjE2ZDE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzODMgQEAKKzIwMTgt
MTAtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJM
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmg6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtMb2FkQ2hlY2tlcjo6c2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OnVybCBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpwcmVjb25uZWN0VG8pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0Ojpsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24pOgorICAg
ICAgICAoV2ViS2l0Ojpsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1NvY2tldFN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0U3RyZWFtLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZl
UmVjb3Jkcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6U3RhdGlzdGljczo6cmVjb3JkUmV0cmlldmVkQ2FjaGVkRW50cnkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3RpY3M6OnJlY29yZFJldmFsaWRhdGlvblN1Y2Nlc3Mp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VJbmZv
OjpmaXJzdFBhcnR5Rm9yQ29va2llcyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhcHR1cmU6OlJlcXVlc3Q6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZXNwb25zZTo6b3BlcmF0b3Ig
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYXB0dXJlOjpFcnJvcjo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6TWFuYWdlcjo6ZmluZEJlc3RG
dXp6eU1hdGNoKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6OmZ1
enp5TWF0Y2hVUkxzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6
OnVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYXB0dXJlOjpSZXNvdXJjZTo6dXJsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
cHR1cmU6OlJlc291cmNlOjpxdWVyeVBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAg
ICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2ZUNo
YWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpvcGVuQ0ZVUkxSZWYpOgor
ICAgICAgICAoV2ViS2l0OjpyZXBsYWNlZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRV
Ukxfb3B0aW9uc19jb25maWd1cmF0aW9uX2Vycm9yKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQ
SVVSTC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTDo6
ZXF1YWxzKToKKyAgICAgICAgKEFQSTo6VVJMOjpVUkwpOgorICAgICAgICAoQVBJOjpVUkw6OnVy
bCBjb25zdCk6CisgICAgICAgIChBUEk6OlVSTDo6cGFyc2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaDoKKyAgICAg
ICAgKEFQSTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzVVJMIGNvbnN0KToKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2MvV0tVUkxSZXNwb25zZS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0Yu
bW06CisgICAgICAgIChXS1VSTENyZWF0ZVdpdGhDRlVSTCk6CisgICAgICAgIChXS1VSTENvcHlD
RlVSTCk6CisgICAgICAgICogU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHA6CisgICAgICAg
ICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJj
aGl2ZVJlc291cmNlOjpXZWJBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFNoYXJlZC9Bc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XS05TVVJMRXh0
cmFzLm1tOgorICAgICAgICAoLVtOU1VSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSk6
CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uU3RhdGUuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1Jc0luU2FtZURvY3VtZW50IGNvbnN0
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkVy
cm9ycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHA6CisgICAg
ICAgICogU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAoSVBDOjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXJy
b3JzR3RrLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVSTCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OnRha2VS
ZWRpcmVjdENoYWluKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAg
ICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGVudFJ1bGVMaXN0
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2Fk
UG9saWN5IGNvbnN0KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdl
YkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0Zv
bGRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcDoKKyAgICAg
ICAgKEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNl
clN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoQVBJOjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVV
bmlxdWVVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChmaWxlUGF0aHNGcm9tRmlsZVVSTHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhV
c2VyRGF0YSk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAoV0tQ
YWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VHcm91cC5jcHA6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0KToK
KyAgICAgICAgKFdLUGFnZUdyb3VwQWRkVXNlclNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVu
dFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1Zl
cnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hhc0hhZFVz
ZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
R3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NH
cmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NT
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRv
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IF9p
bml0V2l0aFNvdXJjZTppbmplY3Rpb25UaW1lOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVs
aXN0OmxlZ2FjeUJsYWNrbGlzdDphc3NvY2lhdGVkVVJMOnVzZXJDb250ZW50V29ybGQ6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6Zm9y
VVJMU2NoZW1lOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIHVybFNjaGVt
ZUhhbmRsZXJGb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
cHBsaWNhdGlvbk1hbmlmZXN0Lm1tOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
IGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgrW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgYXBw
bGljYXRpb25NYW5pZmVzdEZyb21KU09OOm1hbmlmZXN0VVJMOmRvY3VtZW50VVJMOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06CisgICAgICAg
ICgtW19XS1VzZXJTdHlsZVNoZWV0IGluaXRXaXRoU291cmNlOmZvck1haW5GcmFtZU9ubHk6bGVn
YWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDpiYXNlVVJMOnVzZXJDb250ZW50V29ybGQ6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAo
d2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9jb29raWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2xvYWRfcGxhaW5fdGV4dCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6c2hvd1BheW1lbnRVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFJlcXVlc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNo
b3dQYXltZW50VUkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246Om5hdmlnYXRlQnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6ZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5lZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3
ZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRlbnRSdWxl
TGlzdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5n
UmVzdWx0Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6U2Fm
ZUJyb3dzaW5nUmVzdWx0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmll
d0NvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKC1bX1dLUHJldmlld0NvbnRyb2xsZXJEYXRh
U291cmNlIGZpbmlzaDpdKToKKyAgICAgICAgKFdlYktpdDo6U3lzdGVtUHJldmlld0NvbnRyb2xs
ZXI6OmZpbmlzaCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpV
SURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OnJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcyk6
CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjaGVja1VzZXJNZWRpYVBl
cm1pc3Npb25Gb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZy
YW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5tbToKKyAgICAgICAgKC1bV0tSZWxvYWRGcmFtZUVy
cm9yUmVjb3ZlcnlBdHRlbXB0ZXIgYXR0ZW1wdFJlY292ZXJ5XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Ondy
aXRlVG9VUkxGb3JGaWxlUHJvbWlzZVByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6
c2V0UmVkaXJlY3RDaGFpbik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnJlZGly
ZWN0Q2hhaW4gY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0
ZTo6ZGlkU2FtZURvY3VtZW50Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkU3RhdGU6OnNldFVucmVhY2hhYmxlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRnJhbWVM
b2FkU3RhdGUuaDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OnVybCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpwcm92aXNpb25hbFVSTCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjp1bnJlYWNoYWJsZVVSTCBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OndyaXRlQmxvYlRvRmlsZVBhdGgp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VMb2FkU3RhdGU6Omhhc09ubHlTZWN1cmVDb250ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVn
aW5Qcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL1NhZmVCcm93c2luZ1Jl
c3VsdC5oOgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1bHQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6dXJsIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6dXJsIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVQcm94eTo6cHJvdmlzaW9uYWxVUkwgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZVByb3h5Ojp1bnJlYWNoYWJsZVVSTCBjb25zdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9u
YWxVUkxGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
Ojpwcm9jZXNzRGlkVGVybWluYXRlT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dGcmFtZU5hdmln
YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbToKKyAg
ICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBfY3JlYXRlU2hlZXRXaXRoRWxlbWVudEFj
dGlvbnM6c2hvd0xpbmtUaXRsZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVl
dEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoVVJMOnJlY3Q6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX3ByZXNlbnRlZFZpZXdDb250cm9sbGVyRm9yUHJldmlld0l0ZW1Db250cm9sbGVy
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1t
OgorICAgICAgICAoLVtXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRob3Jp
emF0aW9uR3JhbnRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3
Lm1tOgorICAgICAgICAoLVtXS0xlZ2FjeVBERlZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hh
cmVFbGVtZW50V2l0aFVSTDpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tQREZW
aWV3Lm1tOgorICAgICAgICAoLVtXS1BERlZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVF
bGVtZW50V2l0aFVSTDpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVl
bi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoLVtXS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyIF91cGRhdGVMb2NhdGlvbkluZm9dKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
S0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlciBfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXJdKToKKyAgICAgICAgKiBV
SVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvcjo6c2hvd1BheW1lbnRVSSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVNZXJjaGFudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
TG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnRGb3JVUkwgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHA6CisgICAgICAgIChXS0J1
bmRsZUZyYW1lQWxsb3dzRm9sbG93aW5nTGluayk6CisgICAgICAgIChXS0J1bmRsZUZyYW1lQ29w
eVN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKToKKyAgICAgICAgKFdLQnVuZGxl
RnJhbWVDb3B5TUlNRVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlUGFnZUhhc0xvY2FsRGF0YUZvclVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcDoKKyAgICAgICAgKGNv
bnZlcnRUb1VURjhTdHJpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRv
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU29ja2V0U3RyZWFtOjpXZWJTb2NrZXRTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y2xpY2tlZExp
bmspOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybVVSTFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVS
TFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJv
dmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZp
c2libGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyBjb25zdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGb3JjZVVuaXZlcnNhbEFj
Y2Vzc0Zyb21Mb2NhbFVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW06
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xpbmsgY29uc3QpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFVSTEluRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2VuZENTUFZpb2xhdGlvblJlcG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFk
ZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJpbnRPcGVyYXRpb25HdGs6OmZyYW1lVVJMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQWN0aXZl
UGFnZXMpOgorCiAyMDE4LTEwLTAzICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdh
bGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIEVuYWJsZSBNU0UgYnkgZGVmYXVsdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwppbmRleCAxNGM2MjBhYWFiMWI3YTE1Njg1NWRjZDdhNjM4YTYwZDM4ZWQx
MzU4Li4zZjkyMjNiYjdkMTdlYjBkMjE1NzMwNzVmYTM3MGM0NzNmYzQ5NGJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTEwLTAzICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJD
b3JlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAyMDE4LTEw
LTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFN3
aXRjaGluZyB0byBkaXNjcmV0ZSBHUFUgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIFVJIHByb2Nlc3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBkM2I2YzkyZWU3ZGFkMDg2Njg4ODdkNjll
ZWEyNDk2OTcwZTc4MWI3Li44ODg1ZmI2NzFhNWI2NDFiOTUyMzc3ODJhYzVhZjUyZjJkMWZmODk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM3IEBACisyMDE4LTEw
LTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NQXR0ci5tbToKKyAgICAgICAgKiBET00v
RE9NQmxvYi5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTQ2hhcnNldFJ1bGUubW06CisgICAgICAg
ICogRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW06CisgICAgICAgICogRE9NL0RPTUNTU01lZGlhUnVs
ZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTUGFnZVJ1bGUubW06CisgICAgICAgICogRE9NL0RP
TUNTU1ByaW1pdGl2ZVZhbHVlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NSdWxlLm1tOgorICAg
ICAgICAqIERPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tOgorICAgICAgICAqIERPTS9ET01D
U1NTdHlsZVJ1bGUubW06CisgICAgICAgICogRE9NL0RPTUNTU1N0eWxlU2hlZXQubW06CisgICAg
ICAgICogRE9NL0RPTUNTU1ZhbHVlLm1tOgorICAgICAgICAqIERPTS9ET01DaGFyYWN0ZXJEYXRh
Lm1tOgorICAgICAgICAqIERPTS9ET01Db3VudGVyLm1tOgorICAgICAgICAqIERPTS9ET01Eb2N1
bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NRG9jdW1lbnRUeXBlLm1tOgorICAgICAgICAqIERPTS9ET01FdmVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NRmlsZS5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEFuY2hvckVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tOgorICAgICAgICAq
IERPTS9ET01IVE1MQXJlYUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCUkVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEJvZHlF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTENhbnZhc0VsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxD
b2xsZWN0aW9uLm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRGl2RWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTERvY3VtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEVtYmVkRWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEZvbnRF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRm9ybUVsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGcmFt
ZVNldEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxIUkVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEhl
YWRpbmdFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSHRtbEVsZW1lbnQubW06Cisg
ICAgICAgICogRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MSW1hZ2VFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MSW5wdXRFbGVtZW50Lm1t
OgorICAgICAgICAqIERPTS9ET01IVE1MTElFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MTGFiZWxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9E
T01IVE1MTWFwRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1hcnF1ZWVFbGVtZW50
Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAqIERP
TS9ET01IVE1MTWV0YUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxNb2RFbGVtZW50
Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MT0xpc3RFbGVtZW50Lm1tOgorICAgICAgICAqIERP
TS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9wdEdyb3Vw
RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9wdGlvbkVsZW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbToKKyAgICAgICAgKiBET00vRE9N
SFRNTFBhcmFncmFwaEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxQYXJhbUVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxTY3JpcHRFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MU2VsZWN0
RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbToKKyAgICAg
ICAgKiBET00vRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RP
TUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVDb2xF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01IVE1MVGFibGVSb3dFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
VGFibGVTZWN0aW9uRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRpdGxlRWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NS2V5Ym9hcmRFdmVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NTWVkaWFMaXN0Lm1tOgorICAgICAgICAqIERPTS9ET01N
b3VzZUV2ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01NdXRhdGlvbkV2ZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01OYW1lZE5vZGVNYXAubW06CisgICAgICAgICogRE9NL0RPTVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5tbToKKyAgICAgICAgKiBET00vRE9NUmFuZ2UubW06CisgICAgICAgICogRE9N
L0RPTVN0eWxlU2hlZXQubW06CisgICAgICAgICogRE9NL0RPTVRleHQubW06CisgICAgICAgICog
RE9NL0RPTVRleHRFdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NVG9rZW5MaXN0Lm1tOgorICAg
ICAgICAqIERPTS9ET01VSUV2ZW50Lm1tOgorICAgICAgICAqIERPTS9ET01YUGF0aFJlc3VsdC5t
bToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAqIE1pc2Mv
V2ViTlNVUkxFeHRyYXMubW06CisgICAgICAgICgtW05TVVJMIF93ZWJfdXNlclZpc2libGVTdHJp
bmddKToKKyAgICAgICAgKC1bTlNVUkwgX3dlYl9VUkxCeVJlbW92aW5nVXNlckluZm9dKToKKyAg
ICAgICAgKC1bTlNVUkwgX3dlYl9kYXRhRm9yVVJMQ29tcG9uZW50VHlwZTpdKToKKyAgICAgICAg
KC1bTlNVUkwgX3dlYl9zY2hlbWVEYXRhXSk6CisgICAgICAgICgtW05TVVJMIF93ZWJfaG9zdERh
dGFdKToKKyAgICAgICAgKiBNaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAg
ICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAoV2ViTmV0
c2NhcGVQbHVnaW5TdHJlYW06OnNldFJlcXVlc3RVUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudDo6c2hvd1BheW1lbnRVSSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkluZm9Qcm92aWRlci5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbklu
Zm9Qcm92aWRlci5tbToKKyAgICAgICAgKFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJs
ZVBsdWdpbkluZm8pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaDoKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICogV2ViVmlldy9XZWJG
cmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2xvYWREYXRhOk1JTUVUeXBlOnRleHRFbmNv
ZGluZ05hbWU6YmFzZVVSTDp1bnJlYWNoYWJsZVVSTDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIgX2RlZmF1bHRBbmltYXRpb25Db250cm9sbGVyXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJQREZWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdn
ZXIubW06CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKwogMjAxOC0xMC0w
MyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBFbmFibGUgc2Vs
ZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQgYnkgZGVmYXVsdCBpbiBXZWJLaXRM
ZWdhY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBlYzgyZDQ5YWNmZmI3OTE0NWFm
MzNjNDI1OTNhM2MwYWViNGFkZThiLi5lNmZlNmNkN2JhYzBiNTlmMDk5ZTQwNTJmZDg0MmU1YTBi
YzZiNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIw
MTgtMTAtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1hcnNoYWxsaW5nSGVscGVycy5jcHA6Cisg
ICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5E
YXRhYmFzZS5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oOgorICAgICAg
ICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAgICAqIFBsdWdpbnMvUGx1
Z2luU3RyZWFtLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViUGx1Z2luSW5mb1By
b3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlz
aXRlZExpbmtTdG9yZS5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAq
IFdlYkRvd25sb2FkLmg6CisgICAgICAgICogV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoKKyAg
ICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYkhpc3RvcnkuY3BwOgorICAgICAgICAq
IFdlYkhpc3RvcnkuaDoKKyAgICAgICAgKiBXZWJIaXN0b3J5SXRlbS5jcHA6CisgICAgICAgICog
V2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OldlYlJlc291cmNlKToKKyAg
ICAgICAgKiBXZWJSZXNvdXJjZS5oOgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoK
KyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJVUkxSZXNwb25zZTo6
Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6
CisgICAgICAgICogV2ViVmlldy5oOgorCiAyMDE4LTEwLTAyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFBhcnNlZFVSTFN0cmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2NmMjk0NmE5
ZGE1ZmM4NjBmMzU4Y2QzMGVjOWIzNjhmNTBkNmY2OS4uOGU1ZmNlZGZiNTFhNTI2Y2U3ZWU0ZDE4
MWRjOGUwNzkwNjUxNjBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC03Niw2ICs3NiwxMiBAQAogCQk1MzExQkQ1MzFFQTcxQ0FEMDA1MjUyODEgLyogU2ln
bmFscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzExQkQ1MTFFQTcxQ0FEMDA1MjUyODEgLyogU2lnbmFscy5jcHAgKi87IH07CiAJCTUzMTFCRDVD
MUVBODIyRjkwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTFCRDVCMUVBODIyRjkwMDUyNTI4MSAvKiBU
aHJlYWRNZXNzYWdlLmNwcCAqLzsgfTsKIAkJNTM1MzRGMkExRUMwRTEwRTAwMTQxQjJGIC8qIE1h
Y2hFeGNlcHRpb25zLmRlZnMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzUzNEYyOTFFQzBFMTBFMDAxNDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChDbGllbnQsIFNlcnZlciwgKTsgfTsgfTsKKwkJ
NUMxRjA1OTMyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUYwNTkxMjE2NDM1NkIwMDM5MzAy
QyAvKiBDRlVSTEV4dHJhcy5jcHAgKi87IH07CisJCTVDMUYwNTk1MjE2NDM3QjMwMDM5MzAyQyAv
KiBVUkxDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzFGMDU5NDIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwICovOyB9OworCQk1Q0MwRUU3
NTIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTczMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQ
YXJzZXIuY3BwICovOyB9OworCQk1Q0MwRUU3NjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTc0MjE2
MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwICovOyB9OworCQk1Q0MwRUU4OTIxNjJCQzIyMDBBMUE4
NDIgLyogVVJMQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0MwRUU4NjIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0gKi87IH07CisJ
CTVDQzBFRThBMjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzBFRTg4MjE2MkJDMjIwMEExQTg0
MiAvKiBOU1VSTEV4dHJhcy5tbSAqLzsgfTsKIAkJNzBBOTkzRkUxQUQ3MTUxMzAwRkE2MTVCIC8q
IFN5bWJvbFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwQTk5M0ZDMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAg
Ki87IH07CiAJCTcwRUNBNjBEMUIwMjQyNjgwMDQ0OTczOSAvKiBBdG9taWNTdHJpbmdJbXBsLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjBB
MUIwMjQyNjgwMDQ0OTczOSAvKiBBdG9taWNTdHJpbmdJbXBsLmNwcCAqLzsgfTsKIAkJN0EwNTA5
M0YxRkI5RENDNTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EwNTA5M0UxRkI5RENDNTAwQjMzRkI4IC8qIEpT
T05WYWx1ZXMuY3BwICovOyB9OwpAQCAtMzcyLDcgKzM3OCwxOSBAQAogCQk1NTMwNzFDOTFDNDA0
MjcyMDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRpbnlMUlVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3
RjgyQzFEOTRCOTk3MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVCNDMzODNBNUQwQjQ2M0M5NDMzRDkzMyAvKiBJbmRl
eE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleE1hcC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZV
UkxFeHRyYXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0ZVUkxF
eHRyYXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzFGMDU5MjIxNjQzNTZC
MDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ0ZVUkxFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMxRjA1OTQy
MTY0MzdCMzAwMzkzMDJDIC8qIFVSTENGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFVSTENGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMxRjA1
OTcyMTY0Mzk5NDAwMzkzMDJDIC8qIFVSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVVJMSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzdDODhE
MzFEMEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVuaXF1ZVJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0Mw
RUU3MTIxNjI5RjE4MDBBMUE4NDIgLyogVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3MjIxNjI5
RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVSTFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3MzIx
NjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVSTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQzBFRTc0MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNDMEVFNzcyMTYyQTAxMDAwQTFBODQyIC8qIFVSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVJMSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
Q0MwRUU4NjIxNjJCQzIyMDBBMUE4NDIgLyogVVJMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVUkxDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNDMEVFODcyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TVVJMRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDQzBFRTg4MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5TVVJMRXh0cmFzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I2MjE0Njg5Qjg2MDBFNzhCNzYg
LyogbGliV1RGLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYldURi5hOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDI0N0I2RTE0Njg5QzQ3MDBFNzhC
NzYgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I3MDE0Njg5QzQ3MDBFNzhCNzYgLyogRGVidWdS
ZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyMCw5ICs3MzgsMTIgQEAKIAkJMkNERUQwRjAx
ODExNUMzRjAwNERCQTcwIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuY3Bw
ICovLAorCQkJCTVDMUYwNTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5oICovLAog
CQkJCUMyQkNGQzQxMUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNwcCAqLywKIAkJCQky
Q0RFRDBFRTE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCAqLywKIAkJCQkxQUZERTY0
NzE5NTIwMUMzMDBDNDhGRkEgLyogVHlwZUNhc3RzQ0YuaCAqLywKKwkJCQk1QzFGMDU5NDIxNjQz
N0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMTMxLDYgKzExNTIsMTIgQEAKIAkJCQlFMzAwRTUy
MTIwM0Q2NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLywKIAkJCQk1QzdDODhEMzFEMEEz
QTBBMDA5RDJGNkQgLyogVW5pcXVlUmVmLmggKi8sCiAJCQkJQ0Q3NjAwRkYxRjkwQTNDQTAwMDI2
RTI2IC8qIFVuc2FmZVBvaW50ZXIuaCAqLywKKwkJCQk1Q0MwRUU3NDIxNjI5RjE5MDBBMUE4NDIg
LyogVVJMLmNwcCAqLywKKwkJCQk1Q0MwRUU3MTIxNjI5RjE4MDBBMUE4NDIgLyogVVJMLmggKi8s
CisJCQkJNUMxRjA1OTcyMTY0Mzk5NDAwMzkzMDJDIC8qIFVSTEhhc2guaCAqLywKKwkJCQk1Q0Mw
RUU3NzIxNjJBMDEwMDBBMUE4NDIgLyogVVJMSGFzaC5oICovLAorCQkJCTVDQzBFRTczMjE2MjlG
MTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuY3BwICovLAorCQkJCTVDQzBFRTcyMjE2MjlGMTkwMEEx
QTg0MiAvKiBVUkxQYXJzZXIuaCAqLywKIAkJCQk3QUZFQzZCMDFFQjIyQjU5MDBEQURFMzYgLyog
VVVJRC5jcHAgKi8sCiAJCQkJN0FGRUM2QUUxRUIyMkFDNjAwREFERTM2IC8qIFVVSUQuaCAqLywK
IAkJCQlBOEE0NzM2RjE1MUE4MjVCMDA0MTIzRkYgLyogVmFsdWVDaGVjay5oICovLApAQCAtMTM1
NCw3ICsxMzgxLDEwIEBACiAJCQkJQThBNDcyQzUxNTFBODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJl
YWRDb2NvYS5tbSAqLywKIAkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9v
dHByaW50Q29jb2EuY3BwICovLAogCQkJCUFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1v
cnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSAqLywKKwkJCQk1Q0MwRUU4NzIxNjJCQzIyMDBBMUE4
NDIgLyogTlNVUkxFeHRyYXMuaCAqLywKKwkJCQk1Q0MwRUU4ODIxNjJCQzIyMDBBMUE4NDIgLyog
TlNVUkxFeHRyYXMubW0gKi8sCiAJCQkJQTMwRDQxMkMxRjBERTBCQTAwQjcxOTU0IC8qIFNvZnRM
aW5raW5nLmggKi8sCisJCQkJNUNDMEVFODYyMTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29hLm1t
ICovLAogCQkJCUU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwpAQCAtMTQ4MSw2ICsxNTExLDcgQEAKIAkJCQlB
OEE0NzM4QjE1MUE4MjVCMDA0MTIzRkYgLyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCURDRUUyMjAxMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQUMxNTFBODI1QjAwNDEyM0ZGIC8qIGNhY2hlZC1wb3dl
cnMuY2MgaW4gU291cmNlcyAqLywKKwkJCQk1QzFGMDU5MzIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZV
UkxFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOEExREM5N0JBQjAwNEExRDNG
IC8qIENsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MDE1MUE4MjVCMDA0
MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDYz
MTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvcklDVS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1
MzIsNiArMTU2Myw3IEBACiAJCQkJQUQ4OUI2QkExRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRUMxNTFBODI1
QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIy
OEMxREM5N0JBQjAwNEExRDNGIC8qIE1vbm90b25pY1RpbWUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNUNDMEVFOEEyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjcxNTFBODI1QjAwNDEyM0ZGIC8qIE9TQWxsb2NhdG9y
UG9zaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjkxNTFBODI1QjAwNDEyM0ZGIC8q
IE9TUmFuZG9tU291cmNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTU4NSw2ICsxNjE3LDEwIEBA
CiAJCQkJNTMxMUJENUMxRUE4MjJGOTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY2NkIyOTAxREM5N0JBQjAwNEExRDNGIC8qIFRpbWVXaXRoRHluYW1p
Y0Nsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcwNzVGNTFGQkY1M0NEMDA0ODlB
RjAgLyogVGltaW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDMEVFNzYyMTYyOUYx
OTAwQTFBODQyIC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzFGMDU5NTIxNjQzN0Iz
MDAzOTMwMkMgLyogVVJMQ0YuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDMEVFODkyMTYyQkMy
MjAwQTFBODQyIC8qIFVSTENvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNUNDMEVFNzUyMTYy
OUYxOTAwQTFBODQyIC8qIFVSTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzE4MUM4
RjFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQzE4MUM5MTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQzE4MUM5MzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRl
clVURjE2LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCAzOWNjMTk5
OTY5MjVhMTJkYzM0ZGUwNzM0YjlmMjk2ZWRhNDdjZjQwLi4yODkyMWJjOGQyNGY0OWUzNWYxZjM3
NzZiN2FjNmU3NDgyOTRjMWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMjQwLDYgKzI0MCw5
IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBUaW55UHRyU2V0LmgKICAgICBUcmlTdGF0
ZS5oCiAgICAgVHlwZUNhc3RzLmgKKyAgICBVUkwuaAorICAgIFVSTEhhc2guaAorICAgIFVSTFBh
cnNlci5oCiAgICAgVVVJRC5oCiAgICAgVW5hbGlnbmVkQWNjZXNzLmgKICAgICBVbmV4cGVjdGVk
LmgKQEAgLTM5Miw2ICszOTUsOCBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBUaHJlYWRpbmcuY3Bw
CiAgICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcAogICAgIFRpbWluZ1Njb3BlLmNwcAor
ICAgIFVSTC5jcHAKKyAgICBVUkxQYXJzZXIuY3BwCiAgICAgVVVJRC5jcHAKICAgICBXVEZBc3Nl
cnRpb25zLmNwcAogICAgIFdhbGxUaW1lLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Rm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IGVlNTFjNzMyMThmMWZm
YjllNTI1MGI2NWZkNWJmNTM4ODI3YWZlZTIuLjRiZWY4MTBjYzEwODY3MmQ5ODI5NjhjYjU5MzVi
YTI0MDI3MDY0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgU3RyaW5nVmll
dzsKIGNsYXNzIFRleHRQb3NpdGlvbjsKIGNsYXNzIFRleHRTdHJlYW07CiBjbGFzcyBVbmlxdWVk
U3RyaW5nSW1wbDsKK2NsYXNzIFVSTDsKIGNsYXNzIFdhbGxUaW1lOwogCiBzdHJ1Y3QgRmFzdE1h
bGxvYzsKQEAgLTEwOSw2ICsxMTAsNyBAQCB1c2luZyBXVEY6OlN0cmluZ0ltcGw7CiB1c2luZyBX
VEY6OlN0cmluZ1ZpZXc7CiB1c2luZyBXVEY6OlRleHRQb3NpdGlvbjsKIHVzaW5nIFdURjo6VGV4
dFN0cmVhbTsKK3VzaW5nIFdURjo6VVJMOwogdXNpbmcgV1RGOjpWYXJpYW50OwogdXNpbmcgV1RG
OjpWZWN0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNDY5MDNjMzY0MjljZWI3
MjZhMTExOTMzYWUyZmIzNTA0ODhkZjIyNS4uNDFjODk1NDkxODgyOWM3ZTA3ZWZlYzhkYTk1NzFh
NjY2ZjY4MjUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTYsNiArNiw3IEBAIGxp
c3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogICAgIGdsaWIvR1JlZlB0ci5oCiAgICAgZ2xp
Yi9HVHlwZWRlZnMuaAogICAgIGdsaWIvR1VuaXF1ZVB0ci5oCisgICAgZ2xpYi9HVW5pcXVlUHRy
U291cC5oCiAgICAgZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaAogICAgIGdsaWIvV1RGR1R5
cGUuaAogCkBAIC0yMSw2ICsyMiw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgZ2xp
Yi9HTGliVXRpbGl0aWVzLmNwcAogICAgIGdsaWIvR1JlZlB0ci5jcHAKICAgICBnbGliL1J1bkxv
b3BHTGliLmNwcAorICAgIGdsaWIvVVJMU291cC5jcHAKIAogICAgIGxpbnV4L0N1cnJlbnRQcm9j
ZXNzTWVtb3J5U3RhdHVzLmNwcAogICAgIGxpbnV4L01lbW9yeUZvb3RwcmludExpbnV4LmNwcApA
QCAtMzcsOSArMzksMTEgQEAgbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUwogICAgICR7R0xJQl9H
SU9fTElCUkFSSUVTfQogICAgICR7R0xJQl9HT0JKRUNUX0xJQlJBUklFU30KICAgICAke0dMSUJf
TElCUkFSSUVTfQorICAgICR7TElCU09VUF9MSUJSQVJJRVN9CiAgICAgJHtaTElCX0xJQlJBUklF
U30KICkKIAogbGlzdChBUFBFTkQgV1RGX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
JHtHTElCX0lOQ0xVREVfRElSU30KKyAgICAke0xJQlNPVVBfSU5DTFVERV9ESVJTfQogKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBmNGQ1MjZlNTcxYjkzMjI5NGVhYTM0MjlhMzQwNDkx
MGU3MTkxNDIxLi5hMDE4ZjkyOWVmNTUyZWUyNDIxMTU2NWYxYTc5ZWYwYjNjM2U1NjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtOCwxMCArOCwxMiBAQCBsaXN0KEFQUEVORCBXVEZf
TElCUkFSSUVTCiApCiAKIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUworICAgIGNmL0NG
VVJMRXh0cmFzLmgKICAgICBjZi9UeXBlQ2FzdHNDRi5oCiAKICAgICBjb2NvYS9FbnRpdGxlbWVu
dHMuaAogICAgIGNvY29hL01hY2hTZW5kUmlnaHQuaAorICAgIGNvY29hL05TVVJMRXh0cmFzLmgK
ICAgICBjb2NvYS9Tb2Z0TGlua2luZy5oCiAKICAgICBkYXJ3aW4vV2Vha0xpbmtpbmcuaApAQCAt
MzgsOCArNDAsMTAgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBTY2hlZHVsZVBhaXJD
Ri5jcHAKICAgICBTY2hlZHVsZVBhaXJNYWMubW0KIAorICAgIGNmL0NGVVJMRXh0cmFzLmNwcAog
ICAgIGNmL0xhbmd1YWdlQ0YuY3BwCiAgICAgY2YvUnVuTG9vcENGLmNwcAorICAgIGNmL1VSTENG
LmNwcAogCiAgICAgY29jb2EvQXV0b2RyYWluZWRQb29sLmNwcAogICAgIGNvY29hL0NQVVRpbWVD
b2NvYS5jcHAKQEAgLTQ4LDYgKzUyLDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBj
b2NvYS9NYWluVGhyZWFkQ29jb2EubW0KICAgICBjb2NvYS9NZW1vcnlGb290cHJpbnRDb2NvYS5j
cHAKICAgICBjb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQorICAgIGNvY29hL05T
VVJMRXh0cmFzLm1tCisgICAgY29jb2EvVVJMQ29jb2EubW0KICAgICBjb2NvYS9Xb3JrUXVldWVD
b2NvYS5jcHAKIAogICAgIG1hYy9EZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA3NTJiNTk5MzE0OGYxMTEwYTI5M2M5ZGE5ZTI4YWRl
ZjA4ZmVlNDBjLi5hMDJkYTUyNzhlZWVhYjhkYjgwMGJjOGY5NmY4OWZiOTcyZjNlMWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtNCw2ICs0LDcgQEAgbGlzdChBUFBFTkQgV1RGX1BV
QkxJQ19IRUFERVJTCiAgICAgZ2xpYi9HUmVmUHRyLmgKICAgICBnbGliL0dUeXBlZGVmcy5oCiAg
ICAgZ2xpYi9HVW5pcXVlUHRyLmgKKyAgICBnbGliL0dVbmlxdWVQdHJTb3VwLmgKICAgICBnbGli
L1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oCiAgICAgZ2xpYi9XVEZHVHlwZS5oCiAKQEAgLTE5LDYg
KzIwLDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnbGliL0dMaWJVdGlsaXRpZXMu
Y3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCisgICAg
Z2xpYi9VUkxTb3VwLmNwcAogCiAgICAgbGludXgvQ3VycmVudFByb2Nlc3NNZW1vcnlTdGF0dXMu
Y3BwCiAgICAgbGludXgvTWVtb3J5Rm9vdHByaW50TGludXguY3BwCkBAIC0zNSw5ICszNywxMSBA
QCBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCiAgICAgJHtHTElCX0dJT19MSUJSQVJJRVN9CiAg
ICAgJHtHTElCX0dPQkpFQ1RfTElCUkFSSUVTfQogICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAg
JHtMSUJTT1VQX0xJQlJBUklFU30KICAgICAke1pMSUJfTElCUkFSSUVTfQogKQogCiBsaXN0KEFQ
UEVORCBXVEZfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0dMSUJfSU5DTFVERV9E
SVJTfQorICAgICR7TElCU09VUF9JTkNMVURFX0RJUlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNt
YWtlCmluZGV4IDQ2ODUxOTZjZWE2MmRjMDZkNWJhNjMwMDIxMmMyNzg5MDkxZTlhZDcuLjY4MzU5
OWIxMDczMmUyZjgwM2NkOTEwNTk2ZWQ0MjgxODEzYzg3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2lu
LmNtYWtlCkBAIC0yMCwxMSArMjAsMTUgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKIAogaWYg
KFVTRV9DRikKICAgICBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKKyAgICAgICAgY2Yv
Q0ZVUkxFeHRyYXMuaAogICAgICAgICBjZi9UeXBlQ2FzdHNDRi5oCiAKICAgICAgICAgdGV4dC9j
Zi9UZXh0QnJlYWtJdGVyYXRvckNGLmgKICAgICApCiAgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKKyAgICAgICAgY2YvQ0ZVUkxFeHRyYXMuY3BwCisgICAgICAgIGNmL1VSTENGLmNwcAorCiAg
ICAgICAgIHRleHQvY2YvQXRvbWljU3RyaW5nSW1wbENGLmNwcAogICAgICAgICB0ZXh0L2NmL1N0
cmluZ0NGLmNwcAogICAgICAgICB0ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk0MzQ1YWVlNzUzMzNiY2Y4N2MxNmEzNWNkN2MwMWQ1MGMwMDVlOWYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0wLDAgKzEsMTEwOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNy0yMDA4LCAyMDExLTIwMTMsIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgorCisjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VVUlE
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJl
cnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgorCisvLyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVz
ZSBvZiB0aGUgKyBvcGVyYXRvciBvbiBTdHJpbmcuCisvLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRp
bWl6ZSB0aGF0IG9wZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQorLy8gc28gbWFueSBhbGxv
Y2F0aW9ucywgb3IgY2hhbmdlIHRoaXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgorCisK
K25hbWVzcGFjZSBXVEYgeworCit0eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IENoYXJCdWZmZXI7
Cit0eXBlZGVmIFZlY3RvcjxVQ2hhciwgNTEyPiBVQ2hhckJ1ZmZlcjsKKworc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGludmFsaWRQb3J0TnVtYmVyID0gMHhGRkZGOworCisvLyBDb3BpZXMgdGhlIHNv
dXJjZSB0byB0aGUgZGVzdGluYXRpb24sIGFzc3VtaW5nIGFsbCB0aGUgc291cmNlIGNoYXJhY3Rl
cnMgYXJlCisvLyBBU0NJSS4gVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBtdXN0IGJlIGxhcmdlIGVu
b3VnaC4gTnVsbCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkCisvLyBpbiB0aGUgc291cmNlIHN0cmlu
ZywgYW5kIG5vIGF0dGVtcHQgaXMgbWFkZSB0byBudWxsLXRlcm1pbmF0ZSB0aGUgcmVzdWx0Lgor
c3RhdGljIHZvaWQgY29weUFTQ0lJKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjaGFyKiBkZXN0KQor
eworICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
c3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBtZW1jcHkoZGVzdCwgc3RyaW5nLmNoYXJhY3RlcnM4
KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBz
cmMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBzdHJp
bmcubGVuZ3RoKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
CisgICAgICAgICAgICBkZXN0W2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3JjW2ldKTsKKyAgICB9
Cit9CisKK3ZvaWQgVVJMOjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX2lzVmFsaWQgPSBmYWxzZTsK
KyAgICBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBmYWxzZTsKKyAgICBtX2Nhbm5vdEJlQUJh
c2VVUkwgPSBmYWxzZTsKKyAgICBtX3NjaGVtZUVuZCA9IDA7CisgICAgbV91c2VyU3RhcnQgPSAw
OworICAgIG1fdXNlckVuZCA9IDA7CisgICAgbV9wYXNzd29yZEVuZCA9IDA7CisgICAgbV9ob3N0
RW5kID0gMDsKKyAgICBtX3BvcnRMZW5ndGggPSAwOworICAgIG1fcGF0aEVuZCA9IDA7CisgICAg
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSAwOworICAgIG1fcXVlcnlFbmQgPSAwOworfQorCitVUkw6
OlVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFVSTFRl
eHRFbmNvZGluZyogZW5jb2RpbmcpCit7CisgICAgVVJMUGFyc2VyIHBhcnNlcihyZWxhdGl2ZSwg
YmFzZSwgZW5jb2RpbmcpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCitzdGF0
aWMgYm9vbCBzaG91bGRUcmltRnJvbVVSTChVQ2hhciBjKQoreworICAgIC8vIEJyb3dzZXJzIGln
bm9yZSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wKKyAgICAvLyBjaGFy
YWN0ZXJzIGZyb20gVVJMcy4gIE5vdGUgdGhhdCBjIGlzIGFuICp1bnNpZ25lZCogY2hhciBoZXJl
CisgICAgLy8gc28gdGhpcyBjb21wYXJpc29uIHNob3VsZCBvbmx5IGNhdGNoIGNvbnRyb2wgY2hh
cmFjdGVycy4KKyAgICByZXR1cm4gYyA8PSAnICc7Cit9CisKK1VSTCBVUkw6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0Cit7CisgICAgVVJMIHJlc3VsdCA9ICp0aGlzOworICAgIHJlc3VsdC5tX3N0cmlu
ZyA9IHJlc3VsdC5tX3N0cmluZy5pc29sYXRlZENvcHkoKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitTdHJpbmcgVVJMOjpsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFo
YXNQYXRoKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHVuc2lnbmVkIGVuZCA9
IG1fcGF0aEVuZCAtIDE7CisgICAgaWYgKG1fc3RyaW5nW2VuZF0gPT0gJy8nKQorICAgICAgICAt
LWVuZDsKKworICAgIHNpemVfdCBzdGFydCA9IG1fc3RyaW5nLnJldmVyc2VGaW5kKCcvJywgZW5k
KTsKKyAgICBpZiAoc3RhcnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9ob3N0RW5kICsgbV9w
b3J0TGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICsrc3RhcnQ7CisKKyAg
ICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpOworfQor
CitTdHJpbmdWaWV3IFVSTDo6cHJvdG9jb2woKSBjb25zdAoreworICAgIHJldHVybiBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV9zY2hlbWVFbmQpOworfQorCitTdHJpbmdWaWV3
IFVSTDo6aG9zdCgpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgc3RhcnQgPSBob3N0U3RhcnQoKTsK
KyAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBtX2hvc3RF
bmQgLSBzdGFydCk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTDo6cG9ydCgpIGNv
bnN0Cit7CisgICAgaWYgKCFtX3BvcnRMZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBib29sIG9rID0gZmFsc2U7CisgICAgdW5zaWduZWQgbnVtYmVyOworICAgIGlm
IChtX3N0cmluZy5pczhCaXQoKSkKKyAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0
cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzOCgpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3Ro
IC0gMSwgJm9rKTsKKyAgICBlbHNlCisgICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRT
dHJpY3QobV9zdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5n
dGggLSAxLCAmb2spOworICAgIGlmICghb2sgfHwgbnVtYmVyID4gc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MTZfdD46Om1heCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJl
dHVybiBudW1iZXI7Cit9CisKK1N0cmluZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKK3sKKyAg
ICBpZiAoYXV0byBwb3J0ID0gdGhpcy0+cG9ydCgpKQorICAgICAgICByZXR1cm4gbWFrZVN0cmlu
Zyhob3N0KCksICc6Jywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvcnQudmFsdWUoKSkpOworICAg
IHJldHVybiBob3N0KCkudG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFVSTDo6cHJvdG9jb2xIb3N0
QW5kUG9ydCgpIGNvbnN0Cit7CisgICAgU3RyaW5nIHJlc3VsdCA9IG1fc3RyaW5nLnN1YnN0cmlu
ZygwLCBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpOworCisgICAgaWYgKG1fcGFzc3dvcmRFbmQg
LSBtX3VzZXJTdGFydCA+IDApIHsKKyAgICAgICAgY29uc3QgaW50IGFsbG93Rm9yVHJhaWxpbmdB
dFNpZ24gPSAxOworICAgICAgICByZXN1bHQucmVtb3ZlKG1fdXNlclN0YXJ0LCBtX3Bhc3N3b3Jk
RW5kIC0gbV91c2VyU3RhcnQgKyBhbGxvd0ZvclRyYWlsaW5nQXRTaWduKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgU3RyaW5nIGRlY29kZUVzY2FwZVNlcXVlbmNl
c0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyBpbnB1dCkKK3sKKyAgICBhdXRvIGlucHV0TGVuZ3Ro
ID0gaW5wdXQubGVuZ3RoKCk7CisgICAgaWYgKCFpbnB1dExlbmd0aCkKKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CisgICAgVmVjdG9yPExDaGFyPiBwZXJjZW50RGVjb2RlZDsKKyAgICBw
ZXJjZW50RGVjb2RlZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlucHV0TGVuZ3RoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5wdXRMZW5ndGg7ICsraSkgeworICAgICAgICBpZiAo
aW5wdXRbaV0gPT0gJyUnCisgICAgICAgICAgICAmJiBpbnB1dExlbmd0aCA+IDIKKyAgICAgICAg
ICAgICYmIGkgPCBpbnB1dExlbmd0aCAtIDIKKyAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdp
dChpbnB1dFtpICsgMV0pCisgICAgICAgICAgICAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSAr
IDJdKSkgeworICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKHRvQVND
SUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOworICAgICAgICAgICAgaSAr
PSAyOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBlcmNlbnREZWNvZGVkLnVuY2hlY2tl
ZEFwcGVuZChpbnB1dFtpXSk7CisgICAgfQorICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHBl
cmNlbnREZWNvZGVkLmRhdGEoKSwgcGVyY2VudERlY29kZWQuc2l6ZSgpKTsKK30KKworU3RyaW5n
IFVSTDo6dXNlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zy
b21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBt
X3VzZXJFbmQgLSBtX3VzZXJTdGFydCkpOworfQorCitTdHJpbmcgVVJMOjpwYXNzKCkgY29uc3QK
K3sKKyAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJM
KFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3Jk
RW5kIC0gbV91c2VyRW5kIC0gMSkpOworfQorCitTdHJpbmcgVVJMOjplbmNvZGVkVXNlcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2Vy
RW5kIC0gbV91c2VyU3RhcnQpOworfQorCitTdHJpbmcgVVJMOjplbmNvZGVkUGFzcygpIGNvbnN0
Cit7CisgICAgaWYgKG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyRW5kKQorICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNlckVuZCArIDEs
IG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKTsKK30KKworU3RyaW5nIFVSTDo6ZnJhZ21l
bnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0ZyYWdtZW50SWRlbnRpZmllcigp
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3Ry
aW5nKG1fcXVlcnlFbmQgKyAxKTsKK30KKworYm9vbCBVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmll
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSAh
PSBtX3F1ZXJ5RW5kOworfQorCitTdHJpbmcgVVJMOjpiYXNlQXNTdHJpbmcoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3N0cmluZy5sZWZ0KG1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKK30KKworI2lm
ICFVU0UoQ0YpCisKK1N0cmluZyBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKK3sKKyAgICBp
ZiAoIWlzVmFsaWQoKSB8fCAhaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5n
VmlldyhwYXRoKCkpKTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBOREVCVUcKKworc3RhdGljIGlu
bGluZSB2b2lkIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcpCit7Cit9CisKKyNlbHNl
CisKK3N0YXRpYyB2b2lkIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcgcHJvdG9jb2wp
Cit7CisgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IGRvbid0IG5lZWQgdGhpcyBmdW5jdGlvbiBh
bnkgbW9yZS4KKyAgICAvLyBUaGUgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCBmdW5jdGlvbiBh
c3NlcnRzIHRoYXQgcGFzc2VkLWluIGNoYXJhY3RlcnMKKyAgICAvLyBhcmUgb25lcyBpdCBjYW4g
aGFuZGxlOyB0aGUgb2xkZXIgY29kZSBkaWQgbm90IGFuZCByZWxpZWQgb24gdGhlc2UgY2hlY2tz
LgorICAgIGZvciAoYXV0byBjaGFyYWN0ZXIgOiBwcm90b2NvbC5jb2RlVW5pdHMoKSkgeworICAg
ICAgICBBU1NFUlQoaXNBU0NJSShjaGFyYWN0ZXIpKTsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rl
ciA+ICcgJyk7CisgICAgICAgIEFTU0VSVCghaXNBU0NJSVVwcGVyKGNoYXJhY3RlcikpOworICAg
ICAgICBBU1NFUlQodG9BU0NJSUxvd2VyVW5jaGVja2VkKGNoYXJhY3RlcikgPT0gY2hhcmFjdGVy
KTsKKyAgICB9Cit9CisKKyNlbmRpZgorCitzdGF0aWMgTG9jayBkZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZ0xvY2s7CisKK3VzaW5nIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBG
b3JUZXN0aW5nID0gSGFzaE1hcDxTdHJpbmcsIHVpbnQxNl90PjsKK3N0YXRpYyBEZWZhdWx0UG9y
dEZvclByb3RvY29sTWFwRm9yVGVzdGluZyomIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JU
ZXN0aW5nKCkKK3sKKyAgICBzdGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcqIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXA7CisgICAgcmV0dXJuIGRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2xNYXA7Cit9CisKK3N0YXRpYyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVz
dGluZyYgZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAg
IERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcCA9IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7CisgICAgaWYg
KCFkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwKQorICAgICAgICBkZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwID0gbmV3IERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nOworICAgIHJl
dHVybiAqZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKK30KKwordm9pZCByZWdpc3RlckRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xGb3JUZXN0aW5nKHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhkZWZhdWx0UG9ydEZvclBy
b3RvY29sTWFwRm9yVGVzdGluZ0xvY2spOworICAgIGVuc3VyZURlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXBGb3JUZXN0aW5nKCkuYWRkKHByb3RvY29sLCBwb3J0KTsKK30KKwordm9pZCBjbGVhckRl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAg
aWYgKGF1dG8qIG1hcCA9IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkpCisg
ICAgICAgIG1hcC0+Y2xlYXIoKTsKK30KKworc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVs
dFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKQoreworICAgIGlmIChhdXRvKiBv
dmVycmlkZU1hcCA9IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkpIHsKKyAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9y
VGVzdGluZ0xvY2spOworICAgICAgICBBU1NFUlQob3ZlcnJpZGVNYXApOyAvLyBObyBuZWVkIHRv
IG51bGwgY2hlY2sgYWdhaW4gaGVyZSBzaW5jZSBvdmVycmlkZU1hcCBjYW5ub3QgYmVjb21lIG51
bGwgYWZ0ZXIgYmVpbmcgbm9uLW51bGwuCisgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBvdmVycmlk
ZU1hcC0+ZmluZChwcm90b2NvbC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgICAgICBp
ZiAoaXRlcmF0b3IgIT0gb3ZlcnJpZGVNYXAtPmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0
ZXJhdG9yLT52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRG
b3JQcm90b2NvbChwcm90b2NvbCk7Cit9CisKK2Jvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29s
KHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpCit7CisgICAgcmV0dXJuIGRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wocHJvdG9jb2wpID09IHBvcnQ7Cit9CisKK2Jvb2wgVVJMOjpwcm90
b2NvbElzKGNvbnN0IGNoYXIqIHByb3RvY29sKSBjb25zdAoreworICAgIGFzc2VydFByb3RvY29s
SXNHb29kKFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29s
KSwgc3RybGVuKHByb3RvY29sKSkpOworCisgICAgLy8gSmF2YVNjcmlwdCBVUkxzIGFyZSAidmFs
aWQiIGFuZCBzaG91bGQgYmUgZXhlY3V0ZWQgZXZlbiBpZiBVUkwgZGVjaWRlcyB0aGV5IGFyZSBp
bnZhbGlkLgorICAgIC8vIFRoZSBmcmVlIGZ1bmN0aW9uIHByb3RvY29sSXNKYXZhU2NyaXB0KCkg
c2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gCisgICAgQVNTRVJUKCFlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShTdHJpbmdWaWV3KHByb3RvY29sKSwgImphdmFzY3JpcHQiKSk7CisKKyAgICBp
ZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG8gdGhlIGNv
bXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoIXByb3Rv
Y29sW2ldIHx8ICFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fc3RyaW5nW2ldLCBwcm90b2Nv
bFtpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiAhcHJv
dG9jb2xbbV9zY2hlbWVFbmRdOyAvLyBXZSBzaG91bGQgaGF2ZSBjb25zdW1lZCBhbGwgY2hhcmFj
dGVycyBpbiB0aGUgYXJndW1lbnQuCit9CisKK2Jvb2wgVVJMOjpwcm90b2NvbElzKFN0cmluZ1Zp
ZXcgcHJvdG9jb2wpIGNvbnN0Cit7CisgICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QocHJvdG9jb2wp
OworCisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICBpZiAobV9zY2hlbWVFbmQgIT0gcHJvdG9jb2wubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0
cmluZyBvYmplY3QuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NoZW1lRW5kOyAr
K2kpIHsKKyAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fc3RyaW5nW2ld
LCBwcm90b2NvbFtpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitTdHJpbmcgVVJMOjpxdWVyeSgpIGNvbnN0Cit7CisgICAgaWYgKG1f
cXVlcnlFbmQgPT0gbV9wYXRoRW5kKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBy
ZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVuZCArIDEsIG1fcXVlcnlFbmQgLSAobV9w
YXRoRW5kICsgMSkpOyAKK30KKworU3RyaW5nIFVSTDo6cGF0aCgpIGNvbnN0Cit7CisgICAgdW5z
aWduZWQgcG9ydEVuZCA9IG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKKyAgICByZXR1cm4gbV9z
dHJpbmcuc3Vic3RyaW5nKHBvcnRFbmQsIG1fcGF0aEVuZCAtIHBvcnRFbmQpOworfQorCitib29s
IFVSTDo6c2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiBzKQoreworICAgIC8vIEZpcmVmb3ggYW5k
IElFIHJlbW92ZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCAnOicuCisgICAgc2l6ZV90IHNl
cGFyYXRvclBvc2l0aW9uID0gcy5maW5kKCc6Jyk7CisgICAgU3RyaW5nIG5ld1Byb3RvY29sID0g
cy5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yUG9zaXRpb24pOworICAgIGF1dG8gY2Fub25pY2FsaXpl
ZCA9IFVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUobmV3UHJvdG9jb2wpOworICAg
IGlmICghY2Fub25pY2FsaXplZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFt
X2lzVmFsaWQpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCpjYW5vbmlj
YWxpemVkLCAiOiIsIG1fc3RyaW5nKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1h
a2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkp
KTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
c3RhdGljIGJvb2wgaXNBbGxBU0NJSShTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBpZiAoc3Ry
aW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmlu
Zy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgIHJldHVybiBjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOworfQor
ICAgIAorLy8gQXBwZW5kcyB0aGUgcHVueWNvZGVkIGhvc3RuYW1lIGlkZW50aWZpZWQgYnkgdGhl
IGdpdmVuIHN0cmluZyBhbmQgbGVuZ3RoIHRvCisvLyB0aGUgb3V0cHV0IGJ1ZmZlci4gVGhlIHJl
c3VsdCB3aWxsIG5vdCBiZSBudWxsIHRlcm1pbmF0ZWQuCisvLyBSZXR1cm4gdmFsdWUgb2YgZmFs
c2UgbWVhbnMgZXJyb3IgaW4gZW5jb2RpbmcuCitzdGF0aWMgYm9vbCBhcHBlbmRFbmNvZGVkSG9z
dG5hbWUoVUNoYXJCdWZmZXImIGJ1ZmZlciwgU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgLy8g
TmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCisgICAg
Ly8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSUROIGVuY29k
aW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgorICAgIGNvbnN0IHVuc2lnbmVkIGhv
c3RuYW1lQnVmZmVyTGVuZ3RoID0gMjA0ODsKKyAgICAKKyAgICBpZiAoc3RyaW5nLmxlbmd0aCgp
ID4gaG9zdG5hbWVCdWZmZXJMZW5ndGggfHwgaXNBbGxBU0NJSShzdHJpbmcpKSB7CisgICAgICAg
IGFwcGVuZChidWZmZXIsIHN0cmluZyk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKKyAgICBVQ2hhciBob3N0bmFtZUJ1ZmZlcltob3N0bmFtZUJ1ZmZlckxlbmd0aF07CisgICAg
VUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKKyAgICBVSUROQUluZm8gcHJvY2Vzc2lu
Z0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOworICAgIGludDMyX3QgbnVtQ2hhcmFj
dGVyc0NvbnZlcnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZVUkxQYXJzZXI6OmludGVybmF0aW9u
YWxEb21haW5OYW1lVHJhbnNjb2RlcigpLAorICAgICAgICBzdHJpbmcudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCksIHN0cmluZy5sZW5ndGgoKSwgaG9zdG5hbWVCdWZmZXIsIGhvc3RuYW1lQnVmZmVy
TGVuZ3RoLCAmcHJvY2Vzc2luZ0RldGFpbHMsICZlcnJvcik7CisgICAgCisgICAgaWYgKFVfU1VD
Q0VTUyhlcnJvcikgJiYgIXByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgeworICAgICAgICBidWZm
ZXIuYXBwZW5kKGhvc3RuYW1lQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordW5zaWduZWQg
VVJMOjpob3N0U3RhcnQoKSBjb25zdAoreworICAgIHJldHVybiAobV9wYXNzd29yZEVuZCA9PSBt
X3VzZXJTdGFydCkgPyBtX3Bhc3N3b3JkRW5kIDogbV9wYXNzd29yZEVuZCArIDE7Cit9CisKK3Zv
aWQgVVJMOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgcykKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjb2xvbkluZGV4ID0gcy5maW5kKCc6Jyk7Cisg
ICAgaWYgKGNvbG9uSW5kZXggIT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKworICAgIFVD
aGFyQnVmZmVyIGVuY29kZWRIb3N0TmFtZTsKKyAgICBpZiAoIWFwcGVuZEVuY29kZWRIb3N0bmFt
ZShlbmNvZGVkSG9zdE5hbWUsIHMpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgYm9vbCBz
bGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
c2NoZW1lRW5kICsgMSk7CisgICAgCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1
aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsKKyAgICBpZiAoc2xhc2hT
bGFzaE5lZWRlZCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhv
c3ROYW1lLnNpemUoKSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLnN1YnN0cmluZyht
X2hvc3RFbmQpKTsKKworICAgIFVSTFBhcnNlciBwYXJzZXIoYnVpbGRlci50b1N0cmluZygpKTsK
KyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKwordm9pZCBVUkw6OnJlbW92ZVBvcnQo
KQoreworICAgIGlmICghbV9wb3J0TGVuZ3RoKQorICAgICAgICByZXR1cm47CisgICAgVVJMUGFy
c2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9ob3N0RW5k
KSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIG1fcG9ydExlbmd0
aCkpKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKwordm9pZCBVUkw6OnNldFBv
cnQodW5zaWduZWQgc2hvcnQgaSkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYm9vbCBjb2xvbk5lZWRlZCA9ICFtX3BvcnRMZW5ndGg7CisgICAgdW5zaWdu
ZWQgcG9ydFN0YXJ0ID0gKGNvbG9uTmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0RW5kICsgMSk7
CisKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZyku
bGVmdChwb3J0U3RhcnQpLCAoY29sb25OZWVkZWQgPyAiOiIgOiAiIiksIFN0cmluZzo6bnVtYmVy
KGkpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVu
Z3RoKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6c2V0
SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCkKK3sKKyAgICBpZiAoIW1faXNW
YWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nVmlldyBob3N0TmFtZShob3N0QW5k
UG9ydCk7CisgICAgU3RyaW5nVmlldyBwb3J0OworICAgIAorICAgIGF1dG8gY29sb25JbmRleCA9
IGhvc3ROYW1lLmZpbmQoJzonKTsKKyAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkgewor
ICAgICAgICBwb3J0ID0gaG9zdE5hbWUuc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxKTsKKyAgICAg
ICAgYm9vbCBvazsKKyAgICAgICAgaW50IHBvcnRJbnQgPSBwb3J0LnRvSW50U3RyaWN0KG9rKTsK
KyAgICAgICAgaWYgKCFvayB8fCBwb3J0SW50IDwgMCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgaG9zdE5hbWUgPSBob3N0TmFtZS5zdWJzdHJpbmcoMCwgY29sb25JbmRleCk7CisgICAg
fQorCisgICAgaWYgKGhvc3ROYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
VUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOworICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3Ru
YW1lKGVuY29kZWRIb3N0TmFtZSwgaG9zdE5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBi
b29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9zY2hlbWVFbmQgKyAxKTsKKworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBi
dWlsZGVyLmFwcGVuZChtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSk7CisgICAgaWYgKHNsYXNo
U2xhc2hOZWVkZWQpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLy8iKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5kYXRhKCksIGVuY29kZWRI
b3N0TmFtZS5zaXplKCkpKTsKKyAgICBpZiAoIXBvcnQuaXNFbXB0eSgpKSB7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChwb3J0KTsK
KyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCkpOworCisgICAgVVJMUGFyc2VyIHBhcnNlcihidWls
ZGVyLnRvU3RyaW5nKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCitzdGF0
aWMgU3RyaW5nIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZyYgaW5wdXQsIGJv
b2woKnNob3VsZEVuY29kZSkoVUNoYXIpKQoreworICAgIGF1dG8gZW5jb2RlID0gW3Nob3VsZEVu
Y29kZV0gKGNvbnN0IFN0cmluZyYgaW5wdXQpIHsKKyAgICAgICAgQ1N0cmluZyB1dGY4ID0gaW5w
dXQudXRmOCgpOworICAgICAgICBhdXRvKiBkYXRhID0gdXRmOC5kYXRhKCk7CisgICAgICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYXV0byBsZW5ndGggPSB1dGY4Lmxlbmd0aCgp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHsKKyAgICAg
ICAgICAgIGF1dG8gYyA9IGRhdGFbal07CisgICAgICAgICAgICBpZiAoc2hvdWxkRW5jb2RlKGMp
KSB7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyUnKTsKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKSk7CisgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYykpOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYyk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICB9OworCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAg
IGlmIChVTkxJS0VMWShzaG91bGRFbmNvZGUoaW5wdXRbaV0pKSkKKyAgICAgICAgICAgIHJldHVy
biBlbmNvZGUoaW5wdXQpOworICAgIH0KKyAgICByZXR1cm4gaW5wdXQ7Cit9CisKK3ZvaWQgVVJM
OjpzZXRVc2VyKGNvbnN0IFN0cmluZyYgdXNlcikKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IE5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3Qg
YmUgZW5jb2RlZCBhbmQgZXNjYXBlZCB0byBtYXRjaCBwYXJzZSgpIGV4cGVjdGF0aW9ucywKKyAg
ICAvLyBhbmQgdG8gYXZvaWQgY2hhbmdpbmcgbW9yZSB0aGFuIGp1c3QgdGhlIHVzZXIgbG9naW4u
CisKKyAgICB1bnNpZ25lZCBlbmQgPSBtX3VzZXJFbmQ7CisgICAgaWYgKCF1c2VyLmlzRW1wdHko
KSkgeworICAgICAgICBTdHJpbmcgdSA9IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHVzZXIsIFVS
TFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KTsKKyAgICAgICAgaWYgKG1fdXNlclN0YXJ0
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpKQorICAgICAgICAgICAg
dSA9ICIvLyIgKyB1OworICAgICAgICAvLyBBZGQgJ0AnIGlmIHdlIGRpZG4ndCBoYXZlIG9uZSBi
ZWZvcmUuCisgICAgICAgIGlmIChlbmQgPT0gbV9ob3N0RW5kIHx8IChlbmQgPT0gbV9wYXNzd29y
ZEVuZCAmJiBtX3N0cmluZ1tlbmRdICE9ICdAJykpCisgICAgICAgICAgICB1LmFwcGVuZCgnQCcp
OworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmlu
ZykubGVmdChtX3VzZXJTdGFydCksIHUsIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhl
bmQpKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1c2VyIG5vciBwYXNz
d29yZC4KKyAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIGVuZCAhPSBt
X2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsK
KyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1v
biBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KKyAgICAgICAg
aWYgKG1fdXNlclN0YXJ0ICE9IGVuZCkgeworICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlciht
YWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyU3RhcnQpLCBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOworICAgICAgICAgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVVJMOjpzZXRQYXNzKGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIHVuc2lnbmVkIGVuZCA9IG1fcGFzc3dvcmRFbmQ7CisgICAgaWYgKCFwYXNz
d29yZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgU3RyaW5nIHAgPSAiOiIgKyBwZXJjZW50RW5jb2Rl
Q2hhcmFjdGVycyhwYXNzd29yZCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpICsg
IkAiOworICAgICAgICBpZiAobV91c2VyRW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Nj
aGVtZUVuZCArIDEpKQorICAgICAgICAgICAgcCA9ICIvLyIgKyBwOworICAgICAgICAvLyBFYXQg
dGhlIGV4aXN0aW5nICdAJyBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gYWRkIG91ciBvd24uCisgICAg
ICAgIGlmIChlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQorICAgICAg
ICAgICAgZW5kICs9IDE7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJp
bmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIHAsIFN0cmluZ1ZpZXcobV9zdHJpbmcp
LnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1
c2VyIG5vciBwYXNzd29yZC4KKyAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IG1fdXNlckVuZCAm
JiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQorICAgICAgICAgICAg
ZW5kICs9IDE7CisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJl
bWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2Uu
CisgICAgICAgIGlmIChtX3VzZXJFbmQgIT0gZW5kKSB7CisgICAgICAgICAgICBVUkxQYXJzZXIg
cGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJFbmQpLCBT
dHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOworICAgICAgICAgICAgKnRoaXMg
PSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVVJMOjpzZXRG
cmFnbWVudElkZW50aWZpZXIoU3RyaW5nVmlldyBpZGVudGlmaWVyKQoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogT3B0aW1pemUgdGhlIGNh
c2Ugd2hlcmUgdGhlIGlkZW50aWZpZXIgYWxyZWFkeSBoYXBwZW5zIHRvIGJlIGVxdWFsIHRvIHdo
YXQgd2FzIHBhc3NlZD8KKyAgICAvLyBGSVhNRTogSXMgaXQgY29ycmVjdCB0byBkbyB0aGlzIHdp
dGhvdXQgZW5jb2RpbmcgYW5kIGVzY2FwaW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJzPworICAgICp0
aGlzID0gVVJMUGFyc2VyIHsgbWFrZVN0cmluZyhTdHJpbmdWaWV3IHsgbV9zdHJpbmcgfS5zdWJz
dHJpbmcoMCwgbV9xdWVyeUVuZCksICcjJywgaWRlbnRpZmllcikgfS5yZXN1bHQoKTsKK30KKwor
dm9pZCBVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpCit7CisgICAgaWYgKCFtX2lzVmFs
aWQpIHsKKyAgICAgICAgQVNTRVJUKCFtX3F1ZXJ5RW5kKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAobV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZCkK
KyAgICAgICAgbV9zdHJpbmcgPSBtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpOworfQorCit2b2lk
IFVSTDo6cmVtb3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZpZXIoKQoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQo
bV9wYXRoRW5kKTsKKyAgICBtX3F1ZXJ5RW5kID0gbV9wYXRoRW5kOworfQorCit2b2lkIFVSTDo6
c2V0UXVlcnkoY29uc3QgU3RyaW5nJiBxdWVyeSkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6ICcjJyBhbmQgbm9uLUFTQ0lJIGNoYXJhY3Rl
cnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkLgorICAgIC8vIFVzdWFsbHksIHRoZSBxdWVy
eSBpcyBlbmNvZGVkIHVzaW5nIGRvY3VtZW50IGVuY29kaW5nLCBub3QgVVRGLTgsIGJ1dCB3ZSBk
b24ndCBoYXZlCisgICAgLy8gYWNjZXNzIHRvIHRoZSBkb2N1bWVudCBpbiB0aGlzIGZ1bmN0aW9u
LgorICAgIC8vIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2MTE3NgorICAgIGlmICgocXVlcnkuaXNF
bXB0eSgpIHx8IHF1ZXJ5WzBdICE9ICc/JykgJiYgIXF1ZXJ5LmlzTnVsbCgpKSB7CisgICAgICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1f
cGF0aEVuZCksICI/IiwgcXVlcnksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3F1
ZXJ5RW5kKSkpOworICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmlu
ZykubGVmdChtX3BhdGhFbmQpLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5n
KG1fcXVlcnlFbmQpKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAgIH0K
KworfQorCit2b2lkIFVSTDo6c2V0UGF0aChjb25zdCBTdHJpbmcmIHMpCit7CisgICAgaWYgKCFt
X2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBwYXRoID0gczsKKyAgICBp
ZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0aFswXSAhPSAnLycpCisgICAgICAgIHBhdGggPSAiLyIg
KyBwYXRoOworCisgICAgYXV0byBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24gPSBbXSAoVUNoYXIg
Y2hhcmFjdGVyKSB7CisgICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJz8nIHx8IGNoYXJhY3Rl
ciA9PSAnIyc7CisgICAgfTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5n
VmlldyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpLCBwZXJjZW50RW5j
b2RlQ2hhcmFjdGVycyhwYXRoLCBxdWVzdGlvbk1hcmtPck51bWJlclNpZ24pLCBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9wYXRoRW5kKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJl
c3VsdCgpOworfQorCitib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3Qg
VVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgaWYgKGEubV9xdWVyeUVuZCAhPSBiLm1fcXVl
cnlFbmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1bnNpZ25lZCBxdWVyeUxlbmd0aCA9
IGEubV9xdWVyeUVuZDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcXVlcnlMZW5ndGg7
ICsraSkKKyAgICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBlcXVhbEln
bm9yaW5nUXVlcnlBbmRGcmFnbWVudChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAg
ICBpZiAoYS5wYXRoRW5kKCkgIT0gYi5wYXRoRW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB1bnNpZ25lZCBwYXRoRW5kID0gYS5wYXRoRW5kKCk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHBhdGhFbmQ7ICsraSkgeworICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBi
LnN0cmluZygpW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJM
JiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgaWYgKGEubV9zY2hlbWVFbmQgIT0gYi5tX3NjaGVt
ZUVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQgaG9zdFN0YXJ0QSA9
IGEuaG9zdFN0YXJ0KCk7CisgICAgdW5zaWduZWQgaG9zdExlbmd0aEEgPSBhLm1faG9zdEVuZCAt
IGhvc3RTdGFydEE7CisgICAgdW5zaWduZWQgaG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7Cisg
ICAgdW5zaWduZWQgaG9zdExlbmd0aEIgPSBiLm1faG9zdEVuZCAtIGIuaG9zdFN0YXJ0KCk7Cisg
ICAgaWYgKGhvc3RMZW5ndGhBICE9IGhvc3RMZW5ndGhCKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBDaGVjayB0aGUgc2NoZW1lCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGEubV9zY2hlbWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0
cmluZygpW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEFu
ZCB0aGUgaG9zdAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytp
KSB7CisgICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygp
W2hvc3RTdGFydEIgKyBpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpZiAoYS5wb3J0KCkgIT0gYi5wb3J0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiBhLCBjb25z
dCBVUkwmIGIpCit7CisgICAgdW5zaWduZWQgaG9zdFN0YXJ0QSA9IGEuaG9zdFN0YXJ0KCk7Cisg
ICAgdW5zaWduZWQgaG9zdExlbmd0aEEgPSBhLm1faG9zdEVuZCAtIGhvc3RTdGFydEE7CisgICAg
dW5zaWduZWQgaG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7CisgICAgdW5zaWduZWQgaG9zdExl
bmd0aEIgPSBiLm1faG9zdEVuZCAtIGhvc3RTdGFydEI7CisgICAgaWYgKGhvc3RMZW5ndGhBICE9
IGhvc3RMZW5ndGhCKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgaG9zdExlbmd0aEE7ICsraSkgeworICAgICAgICBpZiAoYS5zdHJpbmcoKVto
b3N0U3RhcnRBICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVVJM
Ojppc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAoreworICAgIGlm
IChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGRvbWFpbi5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gaG9zdCA9IHRoaXMt
Pmhvc3QoKTsKKyAgICBpZiAoIWhvc3QuZW5kc1dpdGgoZG9tYWluKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIGhvc3QubGVuZ3RoKCkgPT0gZG9tYWluLmxlbmd0aCgpIHx8
IGhvc3RbaG9zdC5sZW5ndGgoKSAtIGRvbWFpbi5sZW5ndGgoKSAtIDFdID09ICcuJzsKK30KKwor
U3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBpbnB1dCkK
K3sKKyAgICByZXR1cm4gcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoaW5wdXQsIFVSTFBhcnNlcjo6
aXNJblVzZXJJbmZvRW5jb2RlU2V0KTsKK30KKworYm9vbCBVUkw6OmlzSGllcmFyY2hpY2FsKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IEFTU0VSVChtX3N0cmluZ1ttX3NjaGVtZUVuZF0gPT0gJzonKTsKKyAgICByZXR1cm4gbV9zdHJp
bmdbbV9zY2hlbWVFbmQgKyAxXSA9PSAnLyc7Cit9CisKK3ZvaWQgVVJMOjpjb3B5VG9CdWZmZXIo
VmVjdG9yPGNoYXIsIDUxMj4mIGJ1ZmZlcikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhpcyB0
aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHN0
cmluZyEKKyAgICAvLyBUaGF0J3MgZmluZSBmb3IgYSB2YWxpZCBVUkwsIHdoaWNoIGlzIGFsbCBB
U0NJSSwgYnV0IG5vdCBmb3IgaW52YWxpZCBVUkxzLgorICAgIGJ1ZmZlci5yZXNpemUobV9zdHJp
bmcubGVuZ3RoKCkpOworICAgIGNvcHlBU0NJSShtX3N0cmluZywgYnVmZmVyLmRhdGEoKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzPgorYm9vbCBwcm90b2NvbElzSW50ZXJu
YWwoY29uc3QgU3RyaW5nQ2xhc3MmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpCit7CisgICAg
Ly8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4K
KyAgICBhc3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihwcm90b2NvbCksIHN0cmxlbihwcm90b2NvbCkpKTsKKyAgICBib29sIGlzTGVh
ZGluZyA9IHRydWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgaiA9IDA7IHVybFtpXTsgKytp
KSB7CisgICAgICAgIC8vIFNraXAgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJh
Y3RlcnMuCisgICAgICAgIGlmIChpc0xlYWRpbmcgJiYgc2hvdWxkVHJpbUZyb21VUkwodXJsW2ld
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpc0xlYWRpbmcgPSBmYWxzZTsKKwor
ICAgICAgICAvLyBTa2lwIGFueSB0YWJzIGFuZCBuZXdsaW5lcy4KKyAgICAgICAgaWYgKHVybFtp
XSA9PSAnXHQnIHx8IHVybFtpXSA9PSAnXHInIHx8IHVybFtpXSA9PSAnXG4nKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFwcm90b2NvbFtqXSkKKyAgICAgICAgICAgIHJl
dHVybiB1cmxbaV0gPT0gJzonOworICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1
YWwodXJsW2ldLCBwcm90b2NvbFtqXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgKytqOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgcHJv
dG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpCit7CisgICAg
cmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbCh1cmwsIHByb3RvY29sKTsKK30KKworaW5saW5lIGJv
b2wgVVJMOjpwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBjaGFyKiBwcm90
b2NvbCkKK3sKKyAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzSW50ZXJuYWwoc3RyaW5nLCBwcm90
b2NvbCk7Cit9CisKKyNpZm5kZWYgTkRFQlVHCisKK3ZvaWQgVVJMOjpwcmludCgpIGNvbnN0Cit7
CisgICAgcHJpbnRmKCIlc1xuIiwgbV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Cit9CisKKyNlbmRp
ZgorCitTdHJpbmcgVVJMOjpzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdAoreworICAg
IFVSTCByZWZlcnJlcigqdGhpcyk7CisgICAgcmVmZXJyZXIuc2V0VXNlcihTdHJpbmcoKSk7Cisg
ICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmcoKSk7CisgICAgcmVmZXJyZXIucmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIHJlZmVycmVyLnN0cmluZygpOworfQorCitib29s
IFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdAoreworICAgIC8vIEluY2x1ZGluZyBmZWVkIGhlcmUg
bWlnaHQgYmUgYSBiYWQgaWRlYSBzaW5jZSBkcmFnIGFuZCBkcm9wIHVzZXMgdGhpcyBjaGVjawor
ICAgIC8vIGFuZCBpbmNsdWRpbmcgZmVlZCB3b3VsZCBhbGxvdyBmZWVkcyB0byBwb3RlbnRpYWxs
eSBsZXQgc29tZW9uZSdzIGJsb2cKKyAgICAvLyByZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgY2xp
cGJvYXJkIG9uIGEgZHJhZywgZXZlbiB3aXRob3V0IGEgZHJvcC4KKyAgICAvLyBMaWtld2lzZSB3
aXRoIHVzaW5nIHRoZSBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc0xvY2FsKCkgZnVuY3Rp
b24uCisgICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKK30KKworYm9vbCBwcm90b2NvbElz
SmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0lu
dGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKK30KKworYm9vbCBwcm90b2NvbElzSmF2YVNjcmlw
dChTdHJpbmdWaWV3IHVybCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwg
ImphdmFzY3JpcHQiKTsKK30KKworYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0
cmluZyYgdXJsKQoreworICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgpOworICAgIC8vIERv
IHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCisgICAg
cmV0dXJuIGxlbmd0aCA+PSA1CisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
dXJsWzBdLCAnaCcpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzFd
LCAndCcpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzJdLCAndCcp
CisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzNdLCAncCcpCisgICAg
ICAgICYmICh1cmxbNF0gPT0gJzonIHx8IChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFs0
XSwgJ3MnKSAmJiBsZW5ndGggPj0gNiAmJiB1cmxbNV0gPT0gJzonKSk7Cit9CisKK2NvbnN0IFVS
TCYgYmxhbmtVUkwoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0Js
YW5rVVJMKFVSTCgpLCAiYWJvdXQ6YmxhbmsiKTsKKyAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7
Cit9CisKK2Jvb2wgVVJMOjppc0JsYW5rVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvdG9j
b2xJcygiYWJvdXQiKTsKK30KKworYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKK3sK
KyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKKworICAgIC8v
IFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZlIGEgcG9ydCwgcmV0dXJuIGVhcmx5IGZvciB0aGUg
Im5vIHBvcnQiIGNhc2UuCisgICAgaWYgKCFwb3J0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0
aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KKyAgICAvLyBTZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9y
Zy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4K
KyAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgYmxvY2tlZFBvcnRMaXN0W10gPSB7CisgICAgICAg
IDEsICAgIC8vIHRjcG11eAorICAgICAgICA3LCAgICAvLyBlY2hvCisgICAgICAgIDksICAgIC8v
IGRpc2NhcmQKKyAgICAgICAgMTEsICAgLy8gc3lzdGF0CisgICAgICAgIDEzLCAgIC8vIGRheXRp
bWUKKyAgICAgICAgMTUsICAgLy8gbmV0c3RhdAorICAgICAgICAxNywgICAvLyBxb3RkCisgICAg
ICAgIDE5LCAgIC8vIGNoYXJnZW4KKyAgICAgICAgMjAsICAgLy8gRlRQLWRhdGEKKyAgICAgICAg
MjEsICAgLy8gRlRQLWNvbnRyb2wKKyAgICAgICAgMjIsICAgLy8gU1NICisgICAgICAgIDIzLCAg
IC8vIHRlbG5ldAorICAgICAgICAyNSwgICAvLyBTTVRQCisgICAgICAgIDM3LCAgIC8vIHRpbWUK
KyAgICAgICAgNDIsICAgLy8gbmFtZQorICAgICAgICA0MywgICAvLyBuaWNuYW1lCisgICAgICAg
IDUzLCAgIC8vIGRvbWFpbgorICAgICAgICA3NywgICAvLyBwcml2LXJqcworICAgICAgICA3OSwg
ICAvLyBmaW5nZXIKKyAgICAgICAgODcsICAgLy8gdHR5bGluaworICAgICAgICA5NSwgICAvLyBz
dXBkdXAKKyAgICAgICAgMTAxLCAgLy8gaG9zdHJpYW1lCisgICAgICAgIDEwMiwgIC8vIGlzby10
c2FwCisgICAgICAgIDEwMywgIC8vIGdwcGl0bnAKKyAgICAgICAgMTA0LCAgLy8gYWNyLW5lbWEK
KyAgICAgICAgMTA5LCAgLy8gUE9QMgorICAgICAgICAxMTAsICAvLyBQT1AzCisgICAgICAgIDEx
MSwgIC8vIHN1bnJwYworICAgICAgICAxMTMsICAvLyBhdXRoCisgICAgICAgIDExNSwgIC8vIFNG
VFAKKyAgICAgICAgMTE3LCAgLy8gdXVjcC1wYXRoCisgICAgICAgIDExOSwgIC8vIG5udHAKKyAg
ICAgICAgMTIzLCAgLy8gTlRQCisgICAgICAgIDEzNSwgIC8vIGxvYy1zcnYgLyBlcG1hcAorICAg
ICAgICAxMzksICAvLyBuZXRiaW9zCisgICAgICAgIDE0MywgIC8vIElNQVAyCisgICAgICAgIDE3
OSwgIC8vIEJHUAorICAgICAgICAzODksICAvLyBMREFQCisgICAgICAgIDQ2NSwgIC8vIFNNVFAr
U1NMCisgICAgICAgIDUxMiwgIC8vIHByaW50IC8gZXhlYworICAgICAgICA1MTMsICAvLyBsb2dp
bgorICAgICAgICA1MTQsICAvLyBzaGVsbAorICAgICAgICA1MTUsICAvLyBwcmludGVyCisgICAg
ICAgIDUyNiwgIC8vIHRlbXBvCisgICAgICAgIDUzMCwgIC8vIGNvdXJpZXIKKyAgICAgICAgNTMx
LCAgLy8gQ2hhdAorICAgICAgICA1MzIsICAvLyBuZXRuZXdzCisgICAgICAgIDU0MCwgIC8vIFVV
Q1AKKyAgICAgICAgNTQ4LCAgLy8gYWZwb3ZlcnRjcCBbQXBwbGUgYWRkaXRpb25dCisgICAgICAg
IDU1NiwgIC8vIHJlbW90ZWZzCisgICAgICAgIDU2MywgIC8vIE5OVFArU1NMCisgICAgICAgIDU4
NywgIC8vIEVTTVRQCisgICAgICAgIDYwMSwgIC8vIHN5c2xvZy1jb25uCisgICAgICAgIDYzNiwg
IC8vIExEQVArU1NMCisgICAgICAgIDk5MywgIC8vIElNQVArU1NMCisgICAgICAgIDk5NSwgIC8v
IFBPUDMrU1NMCisgICAgICAgIDIwNDksIC8vIE5GUworICAgICAgICAzNjU5LCAvLyBhcHBsZS1z
YXNsIC8gUGFzc3dvcmRTZXJ2ZXIgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA0MDQ1LCAvLyBs
b2NrZAorICAgICAgICA0MTkwLCAvLyBNYW5hZ2VTaWV2ZSBbQXBwbGUgYWRkaXRpb25dCisgICAg
ICAgIDYwMDAsIC8vIFgxMQorICAgICAgICA2NjY1LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBh
ZGRpdGlvbl0KKyAgICAgICAgNjY2NiwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25d
CisgICAgICAgIDY2NjcsIC8vIFN0YW5kYXJkIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAgICAg
IDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2NjY5LCAv
LyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY3OSwgLy8gQWx0ZXJu
YXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtB
cHBsZSBhZGRpdGlvbl0KKyAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxv
Y2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCisgICAgfTsKKworICAgIC8vIElmIHRoZSBwb3J0
IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgorICAgIEFTU0VSVChz
dGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2Nr
ZWRQb3J0TGlzdCkpKTsKKyAgICBpZiAoIXN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJs
b2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCksIHBvcnQudmFsdWUoKSkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZv
ciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgorICAgIGlmICgocG9ydC52YWx1ZSgpID09IDIx
IHx8IHBvcnQudmFsdWUoKSA9PSAyMikgJiYgdXJsLnByb3RvY29sSXMoImZ0cCIpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEFsbG93IGFueSBwb3J0IG51bWJlciBpbiBhIGZpbGUg
VVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIgaXMgaWdub3JlZC4KKyAgICBpZiAodXJsLnByb3Rv
Y29sSXMoImZpbGUiKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK1N0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQorewor
ICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiZGF0YSIpKTsKKworICAgIC8vIEZJ
WE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9yIHdoZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBm
aXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVyPworICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUg
d2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRoYXQgY2FzZS4gTm90IHN1cmUgdGhhdCdz
IGNvcnJlY3QuCisgICAgYXV0byBpbmRleCA9IHVybC5maW5kKCc7JywgNSk7CisgICAgaWYgKGlu
ZGV4ID09IG5vdEZvdW5kKQorICAgICAgICBpbmRleCA9IHVybC5maW5kKCcsJywgNSk7CisgICAg
aWYgKGluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4g
b2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUgaXQgc291bmQgbGlrZSB0aGlzIHNob3VsZCBiZSBy
ZXR1cm5pbmcgdGV4dC9wbGFpbi4KKyAgICAgICAgLy8gQnV0IHdlIGhhdmUgYmVlbiByZXR1cm5p
bmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNvbWUgdGltZSwgc28gbm90IGNoYW5naW5nIGl0cyBi
ZWhhdmlvciBhdCB0aGlzIHRpbWUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAg
IH0KKyAgICBpZiAoaW5kZXggPT0gNSkKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOwor
ICAgIEFTU0VSVChpbmRleCA+PSA1KTsKKyAgICByZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRl
eCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Cit9CisKK1N0cmluZyBVUkw6OnN0cmlu
Z0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Cit7CisgICAg
aWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0cmluZygp
OworCisgICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBz
dHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7Cit9CisKK1VSTCBVUkw6OmZha2VVUkxXaXRo
UmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXJ0KQoreworICAgIHJldHVybiBV
UkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKK30KKworVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxl
U3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIHJldHVybiBVUkwoVVJM
KCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJsKQoreworICAgIHRzIDw8IHVybC5zdHJpbmco
KTsKKyAgICByZXR1cm4gdHM7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoU09V
UCkKK3N0YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAg
YXV0byBjb3VudCA9IDA7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3Bs
aXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicpKSB7CisgICAgICAgIGlmIChjb3VudCA+PSA0KQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0g
b2N0ZXQubGVuZ3RoKCk7CisgICAgICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCA+IDMpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byB2YWx1ZSA9IDA7CisgICAgICAg
IGZvciAoYXV0byBpID0gMHU7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgY29uc3Qg
YXV0byBkaWdpdCA9IG9jdGV0W2ldOworCisgICAgICAgICAgICAvLyBQcm9oaWJpdCBsZWFkaW5n
IHplcm9lcy4KKyAgICAgICAgICAgIGlmIChkaWdpdCA+ICc5JyB8fCBkaWdpdCA8ICghaSAmJiBs
ZW5ndGggPiAxID8gJzEnIDogJzAnKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgICAgIHZhbHVlID0gMTAgKiB2YWx1ZSArIChkaWdpdCAtICcwJyk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAodmFsdWUgPiAyNTUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgY291bnQrKzsKKyAgICB9CisKKyAgICByZXR1cm4gKGNvdW50ID09IDQpOwor
fQorCitzdGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAg
IGVudW0gU2tpcFN0YXRlIHsgTm9uZSwgV2lsbFNraXAsIFNraXBwaW5nLCBTa2lwcGVkLCBGaW5h
bCB9OworICAgIGF1dG8gc2tpcFN0YXRlID0gTm9uZTsKKyAgICBhdXRvIGNvdW50ID0gMDsKKwor
ICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50
cmllcygnOicpKSB7CisgICAgICAgIGlmIChjb3VudCA+PSA4IHx8IHNraXBTdGF0ZSA9PSBGaW5h
bCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCBhdXRvIGxlbmd0
aCA9IGhleHRldC5sZW5ndGgoKTsKKyAgICAgICAgaWYgKCFsZW5ndGgpIHsKKyAgICAgICAgICAg
IC8vIDo6IG1heSBiZSB1c2VkIGFueXdoZXJlIHRvIHNraXAgMSB0byA4IGhleHRldHMsIGJ1dCBv
bmx5IG9uY2UuCisgICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IFNraXBwZWQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09IE5v
bmUpCisgICAgICAgICAgICAgICAgc2tpcFN0YXRlID0gIWNvdW50ID8gV2lsbFNraXAgOiBTa2lw
cGluZzsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkKKyAgICAg
ICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGluZzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBXaWxsU2tpcCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoc2tpcFN0YXRlID09IFNraXBwaW5nKQorICAg
ICAgICAgICAgc2tpcFN0YXRlID0gU2tpcHBlZDsKKworICAgICAgICBpZiAobGVuZ3RoID4gNCkg
eworICAgICAgICAgICAgLy8gQW4gSVB2NCBhZGRyZXNzIG1heSBiZSB1c2VkIGluIHBsYWNlIG9m
IHRoZSBmaW5hbCB0d28gaGV4dGV0cy4KKyAgICAgICAgICAgIGlmICgoc2tpcFN0YXRlID09IE5v
bmUgJiYgY291bnQgIT0gNikgfHwgKHNraXBTdGF0ZSA9PSBTa2lwcGVkICYmIGNvdW50ID49IDYp
IHx8ICFpc0lQdjRBZGRyZXNzKGhleHRldCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvIGNvZGVVbml0IDogaGV4dGV0
LmNvZGVVbml0cygpKSB7CisgICAgICAgICAgICAvLyBJUHY2IGFsbG93cyBsZWFkaW5nIHplcm9l
cy4KKyAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGNvZGVVbml0KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBjb3VudCsrOworICAg
IH0KKworICAgIHJldHVybiAoY291bnQgPT0gOCAmJiBza2lwU3RhdGUgPT0gTm9uZSkgfHwgc2tp
cFN0YXRlID09IFNraXBwZWQgfHwgc2tpcFN0YXRlID09IEZpbmFsOworfQorCitib29sIFVSTDo6
aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKK3sKKyAgICBpZiAoaG9zdC5maW5kKCc6
JykgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBpc0lQdjRBZGRyZXNzKGhvc3QpOworCisg
ICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaCBiL1NvdXJjZS9XVEYvd3Rm
L1VSTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJkNzNiYzcwNTZmYTM0NWJlZGUwYThjMjU4MWE4MDNkYTc1YjA5
OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuaApAQCAtMCwwICsxLDM5
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgVVNFKENGKQordHlwZWRlZiBj
b25zdCBzdHJ1Y3QgX19DRlVSTCogQ0ZVUkxSZWY7CisjZW5kaWYKKworI2lmIFVTRShTT1VQKQor
I2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CisjZW5kaWYKKworI2lmIFVTRShG
T1VOREFUSU9OKQorT0JKQ19DTEFTUyBOU1VSTDsKKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsK
K2NsYXNzIFRleHRTdHJlYW07CisKK2NsYXNzIFVSTFRleHRFbmNvZGluZyB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB+VVJMVGV4dEVuY29kaW5nKCkgeyB9OworfTsKKwor
c3RydWN0IFVSTEhhc2g7CisKK2NsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBVUkwgeworcHVibGlj
OgorICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgor
ICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9CisKKyAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKSB7IH0KKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorCisgICAgLy8gUmVzb2x2
ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQs
IHRoZQorICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkg
Y2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCisgICAgLy8gbnVsbCBvciBlbXB0eSwgaW4g
d2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMKKyAgICAv
LyBhYnNvbHV0ZS4KKyAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRo
aXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAorICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5r
IGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMKKyAgICAv
LyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4KKyAgICBV
UkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0
RW5jb2RpbmcqID0gbnVsbHB0cik7CisKKyAgICBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRp
dmVQYXJ0KGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lz
dGVtUGF0aChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVm
ZXJyZXIoKSBjb25zdDsKKworICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3Vs
ZCBiZSBoYXJtb25pemVkIHNvIHRoYXQgcGFzc2luZyBhCisgICAgLy8gYmFzZSBvZiBudWxsIG9y
IHRoZSBlbXB0eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQorICAgIC8vIHN0
YW5kYXJkIFN0cmluZyBjb25zdHJ1Y3Rvci4KKworICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBI
ZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIKKyAgICAvLyB0
aHJlYWQuIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRh
YmxlLCB0aGVyZSdzCisgICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xh
dGVkQ29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCisgICAgVVJMIGlzb2xhdGVkQ29w
eSgpIGNvbnN0OworCisgICAgYm9vbCBpc051bGwoKSBjb25zdDsKKyAgICBib29sIGlzRW1wdHko
KSBjb25zdDsKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4KKyAgICAvLyBO
b24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQuCisgICAgYm9v
bCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQor
CisgICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2Fs
KCk7IH0KKyAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7CisKKyAgICBjb25zdCBTdHJp
bmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisKKyAgICBTdHJpbmcgc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0
OworCisgICAgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcgaG9z
dCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKKyAg
ICBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKKyAgICBTdHJpbmcgcHJvdG9jb2xIb3N0QW5k
UG9ydCgpIGNvbnN0OworICAgIFN0cmluZyB1c2VyKCkgY29uc3Q7CisgICAgU3RyaW5nIHBhc3Mo
KSBjb25zdDsKKyAgICBTdHJpbmcgcGF0aCgpIGNvbnN0OworICAgIFN0cmluZyBsYXN0UGF0aENv
bXBvbmVudCgpIGNvbnN0OworICAgIFN0cmluZyBxdWVyeSgpIGNvbnN0OworICAgIFN0cmluZyBm
cmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKKyAgICBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmll
cigpIGNvbnN0OworCisgICAgYm9vbCBoYXNVc2VybmFtZSgpIGNvbnN0OworICAgIGJvb2wgaGFz
UGFzc3dvcmQoKSBjb25zdDsKKyAgICBib29sIGhhc1F1ZXJ5KCkgY29uc3Q7CisgICAgYm9vbCBo
YXNGcmFnbWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0OworCisgICAgLy8g
VW5saWtlIHVzZXIoKSBhbmQgcGFzcygpLCB0aGVzZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVz
Y2FwZSBzZXF1ZW5jZXMuCisgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJv
dW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0
ZXJzLgorICAgIFN0cmluZyBlbmNvZGVkVXNlcigpIGNvbnN0OworICAgIFN0cmluZyBlbmNvZGVk
UGFzcygpIGNvbnN0OworCisgICAgU3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OworCisgICAg
U3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCisgICAg
Ly8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXIt
Y2FzZS4KKyAgICBib29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OworICAgIGJvb2wg
cHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBib29sIHByb3RvY29sSXNCbG9iKCkg
Y29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9CisgICAgYm9vbCBwcm90b2NvbElz
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQorICAgIGJvb2wgcHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0OworICAgIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25z
dDsKKyAgICBib29sIGlzQmxhbmtVUkwoKSBjb25zdDsKKyAgICBib29sIGNhbm5vdEJlQUJhc2VV
UkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJlQUJhc2VVUkw7IH0KKworICAgIGJvb2wgaXNN
YXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKKworICAgIGJvb2wgc2V0UHJvdG9j
b2woY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOworCisg
ICAgdm9pZCByZW1vdmVQb3J0KCk7CisgICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsK
KworICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgorICAg
IHZvaWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIHNldFVzZXIo
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOworCisgICAg
Ly8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUg
cmVzdWx0aW5nIHBhdGgKKyAgICAvLyB3aWxsIGJlICIvIi4KKyAgICB2b2lkIHNldFBhdGgoY29u
c3QgU3RyaW5nJik7CisKKyAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlv
biBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAorICAgIC8vIGZvciB5b3UuIFNl
dHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0
aGUKKyAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVy
eSwgcGFzcyBhIG51bGwgc3RyaW5nLgorICAgIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7
CisKKyAgICB2b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKKyAgICB2b2lk
IHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOworCisgICAgdm9pZCByZW1vdmVRdWVyeUFuZEZy
YWdtZW50SWRlbnRpZmllcigpOworCisgICAgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0
cmluZ1ZpZXcpOworCisgICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7CisgICAgdW5zaWdu
ZWQgcGF0aEVuZCgpIGNvbnN0OworICAgIHVuc2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgpIGNv
bnN0OworCisgICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0cmlu
ZygpOyB9CisKKyNpZiBVU0UoQ0YpCisgICAgVVJMKENGVVJMUmVmKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShTT1VQKQor
ICAgIFVSTChTb3VwVVJJKik7CisgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBjcmVhdGVTb3VwVVJJ
KCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFVSTChOU1VSTCop
OworICAgIG9wZXJhdG9yIE5TVVJMKigpIGNvbnN0OworI2VuZGlmCisjaWZkZWYgX19PQkpDX18K
KyAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQorI2Vu
ZGlmCisKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9pZCBwcmludCgpIGNvbnN0OworI2VuZGlmCisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFVSTCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxVUkw+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IFVSTFBhcnNlcjsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBzdGF0aWMgYm9vbCBwcm90
b2NvbElzKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIGNvcHlUb0J1ZmZl
cihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdDsKKyAgICB1bnNpZ25lZCBob3N0U3Rh
cnQoKSBjb25zdDsKKworICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbEln
bm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworICAgIGZy
aWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKKyAgICBTdHJpbmcg
bV9zdHJpbmc7CisKKyAgICB1bnNpZ25lZCBtX2lzVmFsaWQgOiAxOworICAgIHVuc2lnbmVkIG1f
cHJvdG9jb2xJc0luSFRUUEZhbWlseSA6IDE7CisgICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNl
VVJMIDogMTsKKworICAgIC8vIFRoaXMgaXMgb3V0IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRz
IGJldHRlci4gVGhlIHBvcnQgaXMgYWZ0ZXIgdGhlIGhvc3QuCisgICAgdW5zaWduZWQgbV9wb3J0
TGVuZ3RoIDogMzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGgg
PSAoMSA8PCAzKSAtIDE7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVt
ZUxlbmd0aCA9ICgxIDw8IDI2KSAtIDE7CisgICAgdW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsK
KyAgICB1bnNpZ25lZCBtX3VzZXJTdGFydDsKKyAgICB1bnNpZ25lZCBtX3VzZXJFbmQ7CisgICAg
dW5zaWduZWQgbV9wYXNzd29yZEVuZDsKKyAgICB1bnNpZ25lZCBtX2hvc3RFbmQ7CisgICAgdW5z
aWduZWQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgdW5zaWduZWQgbV9wYXRoRW5kOworICAg
IHVuc2lnbmVkIG1fcXVlcnlFbmQ7Cit9OworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09
IHNpemVvZihTdHJpbmcpICsgOCAqIHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkg
c21hbGwiKTsKKwordGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Cit2b2lkIFVSTDo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3N0cmluZzsKK30KKwor
dGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Citib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFVSTCYgdXJsKQoreworICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNv
ZGVyKTsKKyAgICBpZiAoIW9wdGlvbmFsVVJMKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
dXJsID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyBzdHJpbmc7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzdHJpbmcpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBV
UkwoVVJMKCksIHN0cmluZyk7Cit9CisKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdu
b3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudChjb25zdCBVUkwm
LCBjb25zdCBVUkwmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKK1dURl9FWFBPUlRf
UFJJVkFURSBjb25zdCBVUkwmIGJsYW5rVVJMKCk7CisKKy8vIEZ1bmN0aW9ucyB0byBkbyBVUkwg
b3BlcmF0aW9ucyBvbiBzdHJpbmdzLgorLy8gVGhlc2UgYXJlIG9wZXJhdGlvbnMgdGhhdCBhcmVu
J3QgZmFzdGVyIG9uIGEgcGFyc2VkIFVSTC4KKy8vIFRoZXNlIGFyZSBhbHNvIGRpZmZlcmVudCBm
cm9tIHRoZSBVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCByZXF1aXJlIHRoZSBzdHJp
bmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgorLy8gVGhpcyBpcyBlc3BlY2lhbGx5
IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vzc2Fy
aWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgVVJMLgorCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
cm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVy
bCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdW
aWV3IHVybCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5
KGNvbnN0IFN0cmluZyYgdXJsKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBwcm90b2NvbCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3Qg
cG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwb3J0
QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVy
IGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJl
Z2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbGVhckRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7CisKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKworV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKKworLy8gRklY
TUU6IFRoaXMgaXMgYSB3cm9uZyBjb25jZXB0IHRvIGV4cG9zZSwgZGlmZmVyZW50IHBhcnRzIG9m
IGEgVVJMIG5lZWQgZGlmZmVyZW50IGVzY2FwaW5nIHBlciB0aGUgVVJMIFN0YW5kYXJkLgorV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0
IFN0cmluZyYpOworCisvLyBJbmxpbmVzLgorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIHJldHVybiBhLnN0cmluZygpID09IGIuc3Ry
aW5nKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBT
dHJpbmcmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5nKCkgPT0gYjsKK30KKworaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICByZXR1
cm4gYSA9PSBiLnN0cmluZygpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVS
TCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIHJldHVybiBhLnN0cmluZygpICE9IGIuc3RyaW5n
KCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiBhLCBjb25zdCBTdHJp
bmcmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYjsKK30KKworaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICByZXR1cm4g
YSAhPSBiLnN0cmluZygpOworfQorCisvLyBJbmxpbmUgdmVyc2lvbnMgb2Ygc29tZSBub24tR29v
Z2xlVVJMIGZ1bmN0aW9ucyBzbyB3ZSBjYW4gZ2V0IGlubGluaW5nCisvLyB3aXRob3V0IGhhdmlu
ZyB0byBoYXZlIGEgbG90IG9mIHVnbHkgaWZkZWZzIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLgor
CitpbmxpbmUgYm9vbCBVUkw6OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5n
LmlzTnVsbCgpOworfQorCitpbmxpbmUgYm9vbCBVUkw6OmlzRW1wdHkoKSBjb25zdAoreworICAg
IHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBib29sIFVSTDo6aXNWYWxp
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNWYWxpZDsKK30KKworaW5saW5lIGJvb2wgVVJM
OjpoYXNQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXRoRW5kICE9IG1faG9zdEVuZCAr
IG1fcG9ydExlbmd0aDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpoYXNVc2VybmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fdXNlckVuZCA+IG1fdXNlclN0YXJ0OworfQorCitpbmxpbmUgYm9v
bCBVUkw6Omhhc1Bhc3N3b3JkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXNzd29yZEVuZCA+
IChtX3VzZXJFbmQgKyAxKTsKK30KKworaW5saW5lIGJvb2wgVVJMOjpoYXNRdWVyeSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcXVlcnlFbmQgPiBtX3BhdGhFbmQ7Cit9CisKK2lubGluZSBib29s
IFVSTDo6aGFzRnJhZ21lbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9z
dHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kOworfQorCitpbmxpbmUgYm9vbCBVUkw6OnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSBjb25zdAoreworICAgIHJldHVybiBtX3Byb3RvY29sSXNJbkhU
VFBGYW1pbHk7Cit9CisKK2lubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhTdGFydCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKK30KKworaW5saW5lIHVuc2ln
bmVkIFVSTDo6cGF0aEVuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGF0aEVuZDsKK30KKwor
aW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Cit9CisKK1dURl9FWFBPUlRfUFJJVkFURSBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7CisK
K3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFVSTD47Cit0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPFVSTD47CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvVVJMSGFzaC5oIGIvU291cmNlL1dURi93dGYvVVJMSGFzaC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQwMmZhM2RjY2Y2NjEwMGZjODUwODY2ZWMzNTQ3YTNhODZkZjliZTMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFVSTEhhc2hfaAor
I2RlZmluZSBVUkxIYXNoX2gKKworI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgVVJMSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgVVJMJiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4ga2V5LnN0cmluZygpLmlt
cGwoKS0+aGFzaCgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVSTCYg
YSwgY29uc3QgVVJMJiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2g6OmVxdWFs
KGEuc3RyaW5nKCksIGIuc3RyaW5nKCkpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCisvLyBVUkxIYXNo
IGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9yIFN0cmluZwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8VVJMPiB7CisgICAgdXNpbmcgSGFzaCA9IFVSTEhhc2g7Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBIYXNoVHJhaXRzPFVSTD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8VVJMPiB7IH07
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVVJMSGFzaF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2Vy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MDlkNGI4MWY5ODIzM2FkNGE5OTY5NWIzZTlkYTM0Y2IxY2U2Yzc1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcApAQCAtMCww
ICsxLDI5MjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMUGFyc2VyLmg+CisKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxtdXRl
eD4KKyNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+CisjaW5jbHVkZSA8dW5pY29kZS91dGY4Lmg+
CisjaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKyNkZWZp
bmUgVVJMX1BBUlNFUl9ERUJVR0dJTkcgMAorCisjaWYgVVJMX1BBUlNFUl9ERUJVR0dJTkcKKyNk
ZWZpbmUgVVJMX1BBUlNFUl9MT0coLi4uKSBXVEZMb2dBbHdheXMoX19WQV9BUkdTX18pCisjZWxz
ZQorI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pCisjZW5kaWYKKyAgICAKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+CitjbGFzcyBDb2RlUG9pbnRJdGVyYXRvciB7CitwdWJsaWM6
CisgICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcigpIHsgfQorICAgIEFMV0FZU19J
TkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogYmVnaW4sIGNvbnN0
IENoYXJhY3RlclR5cGUqIGVuZCkKKyAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQorICAgICAgICAs
IG1fZW5kKGVuZCkKKyAgICB7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgQ29kZVBv
aW50SXRlcmF0b3IoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIGJlZ2luLCBjb25zdCBDb2RlUG9p
bnRJdGVyYXRvciYgZW5kKQorICAgICAgICA6IENvZGVQb2ludEl0ZXJhdG9yKGJlZ2luLm1fYmVn
aW4sIGVuZC5tX2JlZ2luKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGVuZC5tX2JlZ2luID49IGJl
Z2luLm1fYmVnaW4pOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIgb3Bl
cmF0b3IqKCkgY29uc3Q7CisgICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvciYgb3Bl
cmF0b3IrKygpOworCisgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYmVn
aW4gPT0gb3RoZXIubV9iZWdpbgorICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7
CisgICAgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAg
ICAKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3ImIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9iZWdpbiA9IG90aGVy
Lm1fYmVnaW47CisgICAgICAgIG1fZW5kID0gb3RoZXIubV9lbmQ7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgYXRFbmQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fYmVnaW4gPD0gbV9lbmQpOworICAgICAgICByZXR1cm4gbV9i
ZWdpbiA+PSBtX2VuZDsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29k
ZVVuaXRzU2luY2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogcmVmZXJlbmNlKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fYmVnaW4gPj0gcmVmZXJlbmNlKTsKKyAgICAgICAgcmV0dXJuIG1f
YmVnaW4gLSByZWZlcmVuY2U7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29k
ZVVuaXRzU2luY2UoY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGNvZGVVbml0c1NpbmNlKG90aGVyLm1fYmVnaW4pOworICAgIH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogbV9iZWdpbiB7IG51bGxwdHIg
fTsKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2VuZCB7IG51bGxwdHIgfTsKK307CisKK3Rl
bXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46
Om9wZXJhdG9yKigpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICByZXR1cm4g
Km1fYmVnaW47Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgYXV0byBDb2RlUG9pbnRJ
dGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKysoKSAtPiBDb2RlUG9pbnRJdGVyYXRvciYKK3sKKyAg
ICBtX2JlZ2luKys7CisgICAgcmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNf
SU5MSU5FIFVDaGFyMzIgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+OjpvcGVyYXRvciooKSBjb25z
dAoreworICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgVUNoYXIzMiBjOworICAgIFUxNl9HRVQo
bV9iZWdpbiwgMCwgMCwgbV9lbmQgLSBtX2JlZ2luLCBjKTsKKyAgICByZXR1cm4gYzsKK30KKwor
dGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPjo6
b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgoreworICAgIHVuc2lnbmVkIGkgPSAw
OworICAgIHNpemVfdCBsZW5ndGggPSBtX2VuZCAtIG1fYmVnaW47CisgICAgVTE2X0ZXRF8xKG1f
YmVnaW4sIGksIGxlbmd0aCk7CisgICAgbV9iZWdpbiArPSBpOworICAgIHJldHVybiAqdGhpczsK
K30KKyAgICAKK0FMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgYXBwZW5kQ29kZVBvaW50KFZlY3Rv
cjxVQ2hhcj4mIGRlc3RpbmF0aW9uLCBVQ2hhcjMyIGNvZGVQb2ludCkKK3sKKyAgICBpZiAoVV9J
U19CTVAoY29kZVBvaW50KSkgeworICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoc3RhdGljX2Nh
c3Q8VUNoYXI+KGNvZGVQb2ludCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRlc3Rp
bmF0aW9uLnJlc2VydmVDYXBhY2l0eShkZXN0aW5hdGlvbi5zaXplKCkgKyAyKTsKKyAgICBkZXN0
aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X0xFQUQoY29kZVBvaW50KSk7CisgICAgZGVzdGlu
YXRpb24udW5jaGVja2VkQXBwZW5kKFUxNl9UUkFJTChjb2RlUG9pbnQpKTsKK30KKworZW51bSBV
UkxDaGFyYWN0ZXJDbGFzcyB7CisgICAgVXNlckluZm8gPSAweDEsCisgICAgRGVmYXVsdCA9IDB4
MiwKKyAgICBGb3JiaWRkZW5Ib3N0ID0gMHg0LAorICAgIFF1ZXJ5UGVyY2VudCA9IDB4OCwKKyAg
ICBTbGFzaFF1ZXN0aW9uT3JIYXNoID0gMHgxMCwKKyAgICBWYWxpZFNjaGVtZSA9IDB4MjAsCit9
OworCitzdGF0aWMgY29uc3QgdWludDhfdCBjaGFyYWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7Cisg
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8g
MHgwCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MgorICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgzCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4NQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg2
CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDcKKyAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4OAorICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4OQorICAgIFVzZXJJbmZv
IHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4QQorICAgIFVz
ZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhCCisgICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEMKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweEQKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4RQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCwgLy8gMHhGCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDEwCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDExCisg
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEyCisgICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEzCisgICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE0CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweDE1CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDE2CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE3
CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE4CisgICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE5CisgICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFBCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDFCCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDFDCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAw
eDFECisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFFCisgICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFGCisgICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyAnCisgICAgMCwg
Ly8gJyEnCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAnIicKKyAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNo
IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyMnCisgICAgMCwgLy8gJyQnCisgICAgRm9yYmlkZGVuSG9z
dCwgLy8gJyUnCisgICAgMCwgLy8gJyYnCisgICAgMCwgLy8gJ1wnJworICAgIDAsIC8vICcoJwor
ICAgIDAsIC8vICcpJworICAgIDAsIC8vICcqJworICAgIFZhbGlkU2NoZW1lLCAvLyAnKycKKyAg
ICAwLCAvLyAnLCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJy0nCisgICAgVmFsaWRTY2hlbWUsIC8v
ICcuJworICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3Qs
IC8vICcvJworICAgIFZhbGlkU2NoZW1lLCAvLyAnMCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzEn
CisgICAgVmFsaWRTY2hlbWUsIC8vICcyJworICAgIFZhbGlkU2NoZW1lLCAvLyAnMycKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJzQnCisgICAgVmFsaWRTY2hlbWUsIC8vICc1JworICAgIFZhbGlkU2No
ZW1lLCAvLyAnNicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzcnCisgICAgVmFsaWRTY2hlbWUsIC8v
ICc4JworICAgIFZhbGlkU2NoZW1lLCAvLyAnOScKKyAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhv
c3QsIC8vICc6JworICAgIFVzZXJJbmZvLCAvLyAnOycKKyAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnPCcKKyAgICBVc2VySW5mbywgLy8g
Jz0nCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9z
dCwgLy8gJz4nCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8
IEZvcmJpZGRlbkhvc3QsIC8vICc/JworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8g
J0AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdBJworICAgIFZhbGlkU2NoZW1lLCAvLyAnQicKKyAg
ICBWYWxpZFNjaGVtZSwgLy8gJ0MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdEJworICAgIFZhbGlk
U2NoZW1lLCAvLyAnRScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0YnCisgICAgVmFsaWRTY2hlbWUs
IC8vICdHJworICAgIFZhbGlkU2NoZW1lLCAvLyAnSCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0kn
CisgICAgVmFsaWRTY2hlbWUsIC8vICdKJworICAgIFZhbGlkU2NoZW1lLCAvLyAnSycKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJ0wnCisgICAgVmFsaWRTY2hlbWUsIC8vICdNJworICAgIFZhbGlkU2No
ZW1lLCAvLyAnTicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ08nCisgICAgVmFsaWRTY2hlbWUsIC8v
ICdQJworICAgIFZhbGlkU2NoZW1lLCAvLyAnUScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1InCisg
ICAgVmFsaWRTY2hlbWUsIC8vICdTJworICAgIFZhbGlkU2NoZW1lLCAvLyAnVCcKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJ1UnCisgICAgVmFsaWRTY2hlbWUsIC8vICdWJworICAgIFZhbGlkU2NoZW1l
LCAvLyAnVycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1gnCisgICAgVmFsaWRTY2hlbWUsIC8vICdZ
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnWicKKyAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3Qs
IC8vICdbJworICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhv
c3QsIC8vICdcXCcKKyAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICddJworICAgIFVz
ZXJJbmZvLCAvLyAnXicKKyAgICAwLCAvLyAnXycKKyAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8v
ICdgJworICAgIFZhbGlkU2NoZW1lLCAvLyAnYScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2InCisg
ICAgVmFsaWRTY2hlbWUsIC8vICdjJworICAgIFZhbGlkU2NoZW1lLCAvLyAnZCcKKyAgICBWYWxp
ZFNjaGVtZSwgLy8gJ2UnCisgICAgVmFsaWRTY2hlbWUsIC8vICdmJworICAgIFZhbGlkU2NoZW1l
LCAvLyAnZycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2gnCisgICAgVmFsaWRTY2hlbWUsIC8vICdp
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnaicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2snCisgICAg
VmFsaWRTY2hlbWUsIC8vICdsJworICAgIFZhbGlkU2NoZW1lLCAvLyAnbScKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ24nCisgICAgVmFsaWRTY2hlbWUsIC8vICdvJworICAgIFZhbGlkU2NoZW1lLCAv
LyAncCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3EnCisgICAgVmFsaWRTY2hlbWUsIC8vICdyJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAncycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3QnCisgICAgVmFs
aWRTY2hlbWUsIC8vICd1JworICAgIFZhbGlkU2NoZW1lLCAvLyAndicKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJ3cnCisgICAgVmFsaWRTY2hlbWUsIC8vICd4JworICAgIFZhbGlkU2NoZW1lLCAvLyAn
eScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3onCisgICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAn
eycKKyAgICBVc2VySW5mbywgLy8gJ3wnCisgICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAnfScK
KyAgICAwLCAvLyAnficKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4N0YKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4ODAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODEKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4ODIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODMKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4ODQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
ODYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODgK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEEKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OEIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEMKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OEQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEUKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OEYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTAKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OTEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTIKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OTMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTQKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OTUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTYKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OTcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OTkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUIK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUQKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OUUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUYKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QTAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTEKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QTIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTMKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QTQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTUKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QTYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTcKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QTgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTkKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QUEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QUMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUUK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjAKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QjEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjIKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QjMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjQKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QjUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjYKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QjcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjgKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QjkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkEKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QkIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkMKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QkQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QkYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzEK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzMKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QzQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzUKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QzYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzcKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QzgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzkKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4Q0EKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0IKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4Q0MKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0QKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4Q0UKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0YKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RDAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RDIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDQK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDYKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RDcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDgKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RDkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REEKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4REIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REMKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4REQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REUKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4REYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTAKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RTEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTIKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RTMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RTUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTcK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTkKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RUEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUIKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RUMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUQKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RUUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUYKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RjAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjEKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RjIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjMKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RjQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjUKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RjYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RjgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkEK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkMKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RkQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkUKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RkYKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRyb2woQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweDFGOyB9Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzQzBDb250cm9sT3JT
cGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MjA7
IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGlj
IGJvb2wgaXNUYWJPck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNo
YXJhY3RlciA8PSAweEQgJiYgY2hhcmFjdGVyID49IDB4OSAmJiBjaGFyYWN0ZXIgIT0gMHhCICYm
IGNoYXJhY3RlciAhPSAweEM7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblNpbXBsZUVuY29kZVNldChDaGFyYWN0ZXJUeXBl
IGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3RSB8fCBpc0MwQ29udHJvbChjaGFy
YWN0ZXIpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBib29sIGlzSW5EZWZhdWx0RW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVy
KSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFj
dGVyXSAmIERlZmF1bHQ7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZ
U19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5jb2RlU2V0KENoYXJhY3RlclR5cGUg
Y2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFi
bGVbY2hhcmFjdGVyXSAmIFVzZXJJbmZvOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzUGVyY2VudE9yTm9uQVNDSUkoQ2hhcmFj
dGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuICFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgY2hhcmFj
dGVyID09ICclJzsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goQ2hhcmFjdGVyVHlwZSBjaGFy
YWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXFwnICYmIGNoYXJhY3RlckNsYXNzVGFibGVb
Y2hhcmFjdGVyXSAmIFNsYXNoUXVlc3Rpb25Pckhhc2g7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNWYWxpZFNjaGVtZUNoYXJh
Y3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICd6JyAm
JiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBWYWxpZFNjaGVtZTsgfQordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0Zv
cmJpZGRlbkhvc3RDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNo
YXJhY3RlciA8PSAnXScgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgRm9yYmlk
ZGVuSG9zdDsgfQorQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBzaG91bGRQZXJjZW50RW5jb2Rl
UXVlcnlCeXRlKHVpbnQ4X3QgYnl0ZSwgY29uc3QgYm9vbCYgdXJsSXNTcGVjaWFsKQoreworICAg
IGlmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2J5dGVdICYgUXVlcnlQZXJjZW50KQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoYnl0ZSA9PSAnXCcnICYmIHVybElzU3BlY2lhbCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFVSTFBhcnNlcjo6
aXNJblVzZXJJbmZvRW5jb2RlU2V0KFVDaGFyIGMpCit7CisgICAgcmV0dXJuIFdURjo6aXNJblVz
ZXJJbmZvRW5jb2RlU2V0KGMpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
LCBVUkxQYXJzZXI6OlJlcG9ydFN5bnRheFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24+
CitBTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphZHZhbmNlKENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pCit7CisgICAgKytp
dGVyYXRvcjsKKyAgICB3aGlsZSAoVU5MSUtFTFkoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJP
ck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAgICAgaWYgKHJlcG9ydFN5bnRheFZpb2xhdGlv
biA9PSBSZXBvcnRTeW50YXhWaW9sYXRpb246OlllcykKKyAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICAgICAgKytpdGVy
YXRvcjsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29s
IFVSTFBhcnNlcjo6dGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50
YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5
bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICByZXR1cm4gaXRlcmF0b3IuYXRFbmQo
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUg
Ym9vbCBVUkxQYXJzZXI6OmlzV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8ICFp
c0FTQ0lJQWxwaGEoKml0ZXJhdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFu
Y2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwor
ICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCppdGVyYXRvciA9PSAnOicpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChVTkxJS0VM
WSgqaXRlcmF0b3IgPT0gJ3wnKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVm
ZmVyKFVDaGFyMzIgY29kZVBvaW50KQoreworICAgIEFTU0VSVChpc0FTQ0lJKGNvZGVQb2ludCkp
OworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCisgICAgICAgIG1f
YXNjaWlCdWZmZXIuYXBwZW5kKGNvZGVQb2ludCk7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBV
UkxQYXJzZXI6OmFwcGVuZFRvQVNDSUlCdWZmZXIoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6
ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24p
KQorICAgICAgICBtX2FzY2lpQnVmZmVyLmFwcGVuZChjaGFyYWN0ZXJzLCBsZW5ndGgpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OmFwcGVu
ZFdpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRl
cmF0b3IpCit7CisgICAgQVNTRVJUKGlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSk7Cisg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigqaXRlcmF0b3IpOworICAgIGFkdmFuY2UoaXRlcmF0b3Ip
OworICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7CisgICAgQVNTRVJUKCppdGVyYXRvciA9
PSAnOicgfHwgKml0ZXJhdG9yID09ICd8Jyk7CisgICAgaWYgKCppdGVyYXRvciA9PSAnfCcpCisg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignOicpOworICAgIGFkdmFuY2UoaXRlcmF0b3IpOworfQorCitib29sIFVSTFBhcnNlcjo6Y29w
eUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJiBiYXNlKQoreworICAgIGlmIChiYXNl
LnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLm1faG9z
dEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoIDwgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAg
ICAgIGlmIChiYXNlLm1fc3RyaW5nLmlzOEJpdCgpKSB7CisgICAgICAgICAgICBjb25zdCBMQ2hh
ciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnM4KCk7CisgICAgICAgICAgICBDb2Rl
UG9pbnRJdGVyYXRvcjxMQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3Bv
cnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOworICAgICAgICAg
ICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5k
V2luZG93c0RyaXZlTGV0dGVyKGMpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc3QgVUNoYXIqIGJl
Z2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgICAgIENvZGVQb2lu
dEl0ZXJhdG9yPFVDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExl
bmd0aCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgICAgICBp
ZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRXaW5k
b3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OnNob3VsZENvcHlGaWxl
VVJMKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIGlm
ICghaXNXaW5kb3dzRHJpdmVMZXR0ZXIoaXRlcmF0b3IpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFk
dmFuY2UoaXRlcmF0b3IpOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuICFpc1NsYXNoUXVlc3Rpb25Pckhh
c2goKml0ZXJhdG9yKTsKK30KKworc3RhdGljIHZvaWQgcGVyY2VudEVuY29kZUJ5dGUodWludDhf
dCBieXRlLCBWZWN0b3I8TENoYXI+JiBidWZmZXIpCit7CisgICAgYnVmZmVyLmFwcGVuZCgnJScp
OworICAgIGJ1ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0ZSkpOwor
ICAgIGJ1ZmZlci5hcHBlbmQobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0ZSkpOworfQor
Cit2b2lkIFVSTFBhcnNlcjo6cGVyY2VudEVuY29kZUJ5dGUodWludDhfdCBieXRlKQoreworICAg
IEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignJScpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGln
aXQoYnl0ZSkpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0FTQ0lJSGV4
RGlnaXQoYnl0ZSkpOworfQorCitjb25zdCBjaGFyIHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBl
cmNlbnRFbmNvZGVkWzEwXSA9ICIlRUYlQkYlQkQiOworY29uc3Qgc2l6ZV90IHJlcGxhY2VtZW50
Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoID0gc2l6ZW9mKHJlcGxhY2VtZW50Q2hh
cmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkKSAtIDE7CisKK3RlbXBsYXRlPGJvb2woKmlzSW5Db2Rl
U2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgdm9p
ZCBVUkxQYXJzZXI6OnV0ZjhQZXJjZW50RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkp
OworICAgIFVDaGFyMzIgY29kZVBvaW50ID0gKml0ZXJhdG9yOworICAgIGlmIChMSUtFTFkoaXNB
U0NJSShjb2RlUG9pbnQpKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkoaXNJbkNvZGVTZXQoY29k
ZVBvaW50KSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAg
ICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShjb2RlUG9pbnQpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29kZVBvaW50KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzSW5Db2RlU2V0KGNvZGVQb2ludCks
ICJpc0luQ29kZVNldCBzaG91bGQgYWx3YXlzIHJldHVybiB0cnVlIGZvciBub24tQVNDSUkgY2hh
cmFjdGVycyIpOworICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgCisgICAgaWYg
KCFVX0lTX1VOSUNPREVfQ0hBUihjb2RlUG9pbnQpKSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQsIHJlcGxhY2VtZW50
Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKKyAgICBpbnQzMl90
IG9mZnNldCA9IDA7CisgICAgVThfQVBQRU5EX1VOU0FGRShidWZmZXIsIG9mZnNldCwgY29kZVBv
aW50KTsKKyAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBvZmZzZXQ7ICsraSkKKyAgICAgICAg
cGVyY2VudEVuY29kZUJ5dGUoYnVmZmVyW2ldKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OnV0ZjhRdWVyeUVuY29k
ZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7Cisg
ICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKKyAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICpp
dGVyYXRvcjsKKyAgICBpZiAoTElLRUxZKGlzQVNDSUkoY29kZVBvaW50KSkpIHsKKyAgICAgICAg
aWYgKFVOTElLRUxZKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoY29kZVBvaW50LCBtX3Vy
bElzU3BlY2lhbCkpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwor
ICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBvaW50KTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvZGVQb2ludCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAK
KyAgICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKGNvZGVQb2ludCkpIHsKKyAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCwgcmVw
bGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgdWludDhfdCBidWZmZXJbVThfTUFYX0xFTkdUSF07CisgICAgaW50
MzJfdCBvZmZzZXQgPSAwOworICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQsIGNv
ZGVQb2ludCk7CisgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgb2Zmc2V0OyArK2kpIHsKKyAg
ICAgICAgYXV0byBieXRlID0gYnVmZmVyW2ldOworICAgICAgICBpZiAoc2hvdWxkUGVyY2VudEVu
Y29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCisgICAgICAgICAgICBwZXJjZW50
RW5jb2RlQnl0ZShieXRlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcihieXRlKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Cit2b2lkIFVSTFBhcnNlcjo6ZW5jb2RlTm9uVVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hh
cj4mIHNvdXJjZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nJiBlbmNvZGluZywgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgYXV0byBlbmNvZGVkID0gZW5j
b2RpbmcuZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3KHNvdXJjZS5kYXRhKCksIHNvdXJj
ZS5zaXplKCkpKTsKKyAgICBhdXRvKiBkYXRhID0gZW5jb2RlZC5kYXRhKCk7CisgICAgc2l6ZV90
IGxlbmd0aCA9IGVuY29kZWQuc2l6ZSgpOworICAgIAorICAgIGlmICghbGVuZ3RoID09ICFpdGVy
YXRvci5hdEVuZCgpKSB7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoOyBp
IDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKKyAg
ICAgICAgdWludDhfdCBieXRlID0gZGF0YVtpXTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGJ5dGUg
IT0gKml0ZXJhdG9yKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChVTkxJS0VMWShzaG91
bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkpIHsKKyAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGJ5dGUpOworICAgICAgICArK2l0
ZXJhdG9yOworICAgIH0KKyAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJPck5l
d2xpbmUoKml0ZXJhdG9yKSkKKyAgICAgICAgKytpdGVyYXRvcjsKKyAgICBBU1NFUlQoKGkgPT0g
bGVuZ3RoKSA9PSBpdGVyYXRvci5hdEVuZCgpKTsKKyAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytp
KSB7CisgICAgICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgICAgIHVp
bnQ4X3QgYnl0ZSA9IGRhdGFbaV07CisgICAgICAgIGlmIChzaG91bGRQZXJjZW50RW5jb2RlUXVl
cnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkKKyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVC
eXRlKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KGJ5dGUpOworICAgIH0KK30KKworc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMUGFyc2VyOjpk
ZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgc2NoZW1lKQoreworICAgIHN0YXRpYyBj
b25zdCB1aW50MTZfdCBmdHBQb3J0ID0gMjE7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGdv
cGhlclBvcnQgPSA3MDsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgaHR0cFBvcnQgPSA4MDsK
KyAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgaHR0cHNQb3J0ID0gNDQzOworICAgIHN0YXRpYyBj
b25zdCB1aW50MTZfdCB3c1BvcnQgPSA4MDsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qgd3Nz
UG9ydCA9IDQ0MzsKKyAgICAKKyAgICBhdXRvIGxlbmd0aCA9IHNjaGVtZS5sZW5ndGgoKTsKKyAg
ICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzd2l0Y2gg
KHNjaGVtZVswXSkgeworICAgIGNhc2UgJ3cnOgorICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewor
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKKyAgICAg
ICAgICAgICAgICByZXR1cm4gd3NQb3J0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycKKyAg
ICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVy
biB3c3NQb3J0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIGNhc2UgJ2gn
OgorICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgeworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAg
ICBpZiAoc2NoZW1lWzFdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAn
dCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnKQorICAgICAgICAgICAgICAg
IHJldHVybiBodHRwUG9ydDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgIGNhc2UgNToKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAg
ICAgICAgJiYgc2NoZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9
PSAncCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQorICAgICAgICAgICAg
ICAgIHJldHVybiBodHRwc1BvcnQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgfQorICAgIGNhc2UgJ2cnOgorICAgICAgICBpZiAobGVuZ3RoID09IDYKKyAgICAgICAgICAg
ICYmIHNjaGVtZVsxXSA9PSAnbycKKyAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcKKyAg
ICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnaCcKKyAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9
PSAnZScKKyAgICAgICAgICAgICYmIHNjaGVtZVs1XSA9PSAncicpCisgICAgICAgICAgICByZXR1
cm4gZ29waGVyUG9ydDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBjYXNlICdm
JzoKKyAgICAgICAgaWYgKGxlbmd0aCA9PSAzCisgICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0g
J3QnCisgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnKQorICAgICAgICAgICAgcmV0dXJu
IGZ0cFBvcnQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK2VudW0gY2xhc3MgU2NoZW1l
IHsKKyAgICBXUywKKyAgICBXU1MsCisgICAgRmlsZSwKKyAgICBGVFAsCisgICAgR29waGVyLAor
ICAgIEhUVFAsCisgICAgSFRUUFMsCisgICAgTm9uU3BlY2lhbAorfTsKKworQUxXQVlTX0lOTElO
RSBzdGF0aWMgU2NoZW1lIHNjaGVtZShTdHJpbmdWaWV3IHNjaGVtZSkKK3sKKyAgICBhdXRvIGxl
bmd0aCA9IHNjaGVtZS5sZW5ndGgoKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICBzd2l0Y2ggKHNjaGVtZVswXSkgeworICAgIGNhc2Ug
J2YnOgorICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgeworICAgICAgICBjYXNlIDM6CisgICAgICAg
ICAgICBpZiAoc2NoZW1lWzFdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9
PSAncCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6RlRQOworICAgICAgICAgICAg
cmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAg
aWYgKHNjaGVtZVsxXSA9PSAnaScKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ2wn
CisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdlJykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gU2NoZW1lOjpGaWxlOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lh
bDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNp
YWw7CisgICAgICAgIH0KKyAgICBjYXNlICdnJzoKKyAgICAgICAgaWYgKGxlbmd0aCA9PSA2Cisg
ICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0gJ28nCisgICAgICAgICAgICAmJiBzY2hlbWVbMl0g
PT0gJ3AnCisgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCisgICAgICAgICAgICAmJiBz
Y2hlbWVbNF0gPT0gJ2UnCisgICAgICAgICAgICAmJiBzY2hlbWVbNV0gPT0gJ3InKQorICAgICAg
ICAgICAgcmV0dXJuIFNjaGVtZTo6R29waGVyOworICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25T
cGVjaWFsOworICAgIGNhc2UgJ2gnOgorICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgeworICAgICAg
ICBjYXNlIDQ6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JworICAgICAgICAgICAg
ICAgICYmIHNjaGVtZVsyXSA9PSAndCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0g
J3AnKQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkhUVFA7CisgICAgICAgICAgICBy
ZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICBp
ZiAoc2NoZW1lWzFdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcK
KyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCisgICAgICAgICAgICAgICAgJiYg
c2NoZW1lWzRdID09ICdzJykKKyAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpIVFRQUzsK
KyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICB9CisgICAg
Y2FzZSAndyc6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgMjoKKyAg
ICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiBT
Y2hlbWU6OldTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAg
ICAgY2FzZSAzOgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycKKyAgICAgICAgICAg
ICAgICAmJiBzY2hlbWVbMl0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6
OldTUzsKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICB9
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICB9
Cit9CisKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXpl
U2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGlmIChzY2hlbWUuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFpc0FTQ0lJQWxwaGEo
c2NoZW1lWzBdKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGZvciAoc2l6
ZV90IGkgPSAxOyBpIDwgc2NoZW1lLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGlzQVND
SUlBbHBoYW51bWVyaWMoc2NoZW1lW2ldKSB8fCBzY2hlbWVbaV0gPT0gJysnIHx8IHNjaGVtZVtp
XSA9PSAnLScgfHwgc2NoZW1lW2ldID09ICcuJykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBzY2hlbWUuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKK30KKworYm9vbCBVUkxQYXJzZXI6OmlzU3BlY2lhbFNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZUFyZykKK3sKKyAgICByZXR1cm4gc2NoZW1lKHNjaGVt
ZUFyZykgIT0gU2NoZW1lOjpOb25TcGVjaWFsOworfQorCitlbnVtIGNsYXNzIFVSTFBhcnNlcjo6
VVJMUGFydCB7CisgICAgU2NoZW1lRW5kLAorICAgIFVzZXJTdGFydCwKKyAgICBVc2VyRW5kLAor
ICAgIFBhc3N3b3JkRW5kLAorICAgIEhvc3RFbmQsCisgICAgUG9ydEVuZCwKKyAgICBQYXRoQWZ0
ZXJMYXN0U2xhc2gsCisgICAgUGF0aEVuZCwKKyAgICBRdWVyeUVuZCwKK307CisKK3NpemVfdCBV
UkxQYXJzZXI6OnVybExlbmd0aFVudGlsUGFydChjb25zdCBVUkwmIHVybCwgVVJMUGFydCBwYXJ0
KQoreworICAgIHN3aXRjaCAocGFydCkgeworICAgIGNhc2UgVVJMUGFydDo6UXVlcnlFbmQ6Cisg
ICAgICAgIHJldHVybiB1cmwubV9xdWVyeUVuZDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhdGhFbmQ6
CisgICAgICAgIHJldHVybiB1cmwubV9wYXRoRW5kOworICAgIGNhc2UgVVJMUGFydDo6UGF0aEFm
dGVyTGFzdFNsYXNoOgorICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwor
ICAgIGNhc2UgVVJMUGFydDo6UG9ydEVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX2hvc3RFbmQg
KyB1cmwubV9wb3J0TGVuZ3RoOworICAgIGNhc2UgVVJMUGFydDo6SG9zdEVuZDoKKyAgICAgICAg
cmV0dXJuIHVybC5tX2hvc3RFbmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKKyAg
ICAgICAgcmV0dXJuIHVybC5tX3Bhc3N3b3JkRW5kOworICAgIGNhc2UgVVJMUGFydDo6VXNlckVu
ZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3VzZXJFbmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpVc2Vy
U3RhcnQ6CisgICAgICAgIHJldHVybiB1cmwubV91c2VyU3RhcnQ7CisgICAgY2FzZSBVUkxQYXJ0
OjpTY2hlbWVFbmQ6CisgICAgICAgIHJldHVybiB1cmwubV9zY2hlbWVFbmQ7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFVSTFBhcnNl
cjo6Y29weUFTQ0lJU3RyaW5nVW50aWwoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHNpemVfdCBsZW5n
dGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDw9IHN0cmluZy5sZW5ndGgoKSk7Cisg
ICAgaWYgKHN0cmluZy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX2Fz
Y2lpQnVmZmVyLmlzRW1wdHkoKSk7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcihzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVy
czE2KCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIFVDaGFyIGMgPSBjaGFyYWN0ZXJzW2ldOworICAgICAgICAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXNBU0NJSShjKSk7CisgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKGMpOworICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OmNvcHlVUkxQYXJ0c1VudGlsKGNvbnN0
IFVSTCYgYmFzZSwgVVJMUGFydCBwYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0IFVSTFRleHRFbmNvZGluZyomIG5vblVURjhRdWVyeUVu
Y29kaW5nKQoreworICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisKKyAgICBtX2FzY2lp
QnVmZmVyLmNsZWFyKCk7CisgICAgY29weUFTQ0lJU3RyaW5nVW50aWwoYmFzZS5tX3N0cmluZywg
dXJsTGVuZ3RoVW50aWxQYXJ0KGJhc2UsIHBhcnQpKTsKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAg
ICBjYXNlIFVSTFBhcnQ6OlF1ZXJ5RW5kOgorICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gYmFz
ZS5tX3F1ZXJ5RW5kOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBh
dGhFbmQ6CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGJhc2UubV9wYXRoRW5kOworICAgICAg
ICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaDoKKyAg
ICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1fcGF0aEFmdGVyTGFzdFNs
YXNoOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Cisg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IGJhc2UubV9wb3J0TGVuZ3RoOworICAgICAgICBG
QUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6Okhvc3RFbmQ6CisgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IGJhc2UubV9ob3N0RW5kOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNl
IFVSTFBhcnQ6OlBhc3N3b3JkRW5kOgorICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gYmFz
ZS5tX3Bhc3N3b3JkRW5kOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6
OlVzZXJFbmQ6CisgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGJhc2UubV91c2VyRW5kOworICAg
ICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlVzZXJTdGFydDoKKyAgICAgICAg
bV91cmwubV91c2VyU3RhcnQgPSBiYXNlLm1fdXNlclN0YXJ0OworICAgICAgICBGQUxMVEhST1VH
SDsKKyAgICBjYXNlIFVSTFBhcnQ6OlNjaGVtZUVuZDoKKyAgICAgICAgbV91cmwubV9pc1ZhbGlk
ID0gYmFzZS5tX2lzVmFsaWQ7CisgICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWls
eSA9IGJhc2UubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OworICAgICAgICBtX3VybC5tX3NjaGVt
ZUVuZCA9IGJhc2UubV9zY2hlbWVFbmQ7CisgICAgfQorICAgIHN3aXRjaCAoc2NoZW1lKFN0cmlu
Z1ZpZXcobV9hc2NpaUJ1ZmZlci5kYXRhKCksIG1fdXJsLm1fc2NoZW1lRW5kKSkpIHsKKyAgICBj
YXNlIFNjaGVtZTo6V1M6CisgICAgY2FzZSBTY2hlbWU6OldTUzoKKyAgICAgICAgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIFNjaGVtZTo6RmlsZToKKyAgICAgICAgbV91cmxJc0Zp
bGUgPSB0cnVlOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFNjaGVtZTo6RlRQOgor
ICAgIGNhc2UgU2NoZW1lOjpHb3BoZXI6CisgICAgY2FzZSBTY2hlbWU6OkhUVFA6CisgICAgY2Fz
ZSBTY2hlbWU6OkhUVFBTOgorICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIFNjaGVtZTo6Tm9uU3BlY2lhbDoKKyAgICAgICAgbV91cmxJc1Nw
ZWNpYWwgPSBmYWxzZTsKKyAgICAgICAgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitz
dGF0aWMgY29uc3QgY2hhciBkb3RBU0NJSUNvZGVbMl0gPSB7JzInLCAnZSd9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6
aXNTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBj
KQoreworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
KmMgPT0gJy4nKSB7CisgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4
VmlvbGF0aW9uOjpObz4oYyk7CisgICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1
ZXN0aW9uT3JIYXNoKCpjKTsKKyAgICB9CisgICAgaWYgKCpjICE9ICclJykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uOjpObz4oYyk7CisgICAgaWYgKGMuYXRFbmQoKSB8fCAqYyAhPSBkb3RBU0NJSUNvZGVbMF0p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9y
dFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0p
IHsKKyAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246
Ok5vPihjKTsKKyAgICAgICAgcmV0dXJuIGMuYXRFbmQoKSB8fCBpc1NsYXNoUXVlc3Rpb25Pckhh
c2goKmMpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFyc2VyOjppc0RvdWJsZURv
dFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCit7CisgICAg
aWYgKGMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqYyA9PSAnLicp
IHsKKyAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246
Ok5vPihjKTsKKyAgICAgICAgcmV0dXJuIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAg
fQorICAgIGlmICgqYyAhPSAnJScpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNl
PENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOworICAgIGlmIChj
LmF0RW5kKCkgfHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihj
KTsKKyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHRv
QVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKSB7CisgICAgICAgIGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgICAgIHJldHVy
biBpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6Y29u
c3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
JiBjKQoreworICAgIEFTU0VSVChpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpKTsKKyAgICBpZiAo
KmMgPT0gJy4nKSB7CisgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgIGlmICghYy5hdEVuZCgp
KSB7CisgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpCisgICAgICAgICAg
ICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBU1NF
UlQoKmMgPT0gJz8nIHx8ICpjID09ICcjJyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgICBBU1NFUlQoKmMgPT0gJyUnKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgQVNT
RVJUKCpjID09IGRvdEFTQ0lJQ29kZVswXSk7CisgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAg
IEFTU0VSVCh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSk7CisgICAgICAgIGFk
dmFuY2UoYyk7CisgICAgICAgIGlmICghYy5hdEVuZCgpKSB7CisgICAgICAgICAgICBpZiAoKmMg
PT0gJy8nIHx8ICpjID09ICdcXCcpCisgICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlQoKmMgPT0gJz8nIHx8ICpjID09ICcj
Jyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Cit2b2lkIFVSTFBhcnNlcjo6Y29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBjKQoreworICAgIEFTU0VSVChpc0RvdWJsZURvdFBh
dGhTZWdtZW50KGMpKTsKKyAgICBpZiAoKmMgPT0gJy4nKQorICAgICAgICBhZHZhbmNlKGMpOwor
ICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoKmMgPT0gJyUnKTsKKyAgICAgICAgYWR2YW5jZShj
KTsKKyAgICAgICAgQVNTRVJUKCpjID09IGRvdEFTQ0lJQ29kZVswXSk7CisgICAgICAgIGFkdmFu
Y2UoYyk7CisgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsx
XSk7CisgICAgICAgIGFkdmFuY2UoYyk7CisgICAgfQorICAgIGNvbnN1bWVTaW5nbGVEb3RQYXRo
U2VnbWVudChjKTsKK30KKworYm9vbCBVUkxQYXJzZXI6OnNob3VsZFBvcFBhdGgodW5zaWduZWQg
bmV3UGF0aEFmdGVyTGFzdFNsYXNoKQoreworICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xh
dGlvbik7CisgICAgaWYgKCFtX3VybElzRmlsZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBBU1NFUlQobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPD0gbV9hc2NpaUJ1ZmZlci5zaXpl
KCkpOworICAgIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjb21wb25lbnRUb1BvcCgmbV9hc2Np
aUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdLCAmbV9hc2NpaUJ1ZmZlclswXSArIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKKyAgICBpZiAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID09
IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDEgJiYgaXNXaW5kb3dzRHJp
dmVMZXR0ZXIoY29tcG9uZW50VG9Qb3ApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpwb3BQYXRoKCkKK3sKKyAgICBBU1NFUlQo
bV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOworICAgIGlmIChtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA+IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDEpIHsKKyAgICAg
ICAgYXV0byBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCAtIDE7CisgICAgICAgIGlmIChtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0g
PT0gJy8nKQorICAgICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07CisgICAgICAgIHdo
aWxlIChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3Bv
cnRMZW5ndGggJiYgbV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdICE9ICcvJykK
KyAgICAgICAgICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaC0tOworICAgICAgICBuZXdQYXRoQWZ0
ZXJMYXN0U2xhc2grKzsKKyAgICAgICAgaWYgKHNob3VsZFBvcFBhdGgobmV3UGF0aEFmdGVyTGFz
dFNsYXNoKSkKKyAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbmV3UGF0
aEFmdGVyTGFzdFNsYXNoOworICAgIH0KKyAgICBtX2FzY2lpQnVmZmVyLnJlc2l6ZShtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Cit2b2lkIFVSTFBhcnNlcjo6c3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBpZiAobV9kaWRTZWVTeW50YXhW
aW9sYXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiA9
IHRydWU7CisgICAgCisgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKKyAgICBz
aXplX3QgY29kZVVuaXRzVG9Db3B5ID0gaXRlcmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBDaGFyYWN0ZXJUeXBlKj4obV9pbnB1dEJlZ2luKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoY29kZVVuaXRzVG9Db3B5IDw9IG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOworICAg
IG1fYXNjaWlCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZVVuaXRzVG9Db3B5OyArK2kpIHsKKyAgICAg
ICAgQVNTRVJUKGlzQVNDSUkobV9pbnB1dFN0cmluZ1tpXSkpOworICAgICAgICBtX2FzY2lpQnVm
ZmVyLnVuY2hlY2tlZEFwcGVuZChtX2lucHV0U3RyaW5nW2ldKTsKKyAgICB9Cit9CisKK3ZvaWQg
VVJMUGFyc2VyOjpmYWlsdXJlKCkKK3sKKyAgICBtX3VybC5pbnZhbGlkYXRlKCk7CisgICAgbV91
cmwubV9zdHJpbmcgPSBtX2lucHV0U3RyaW5nOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OmNoZWNrTG9jYWxob3N0Q29kZVBvaW50KENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgVUNoYXIzMiBjb2RlUG9pbnQp
Cit7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkgfHwgdG9BU0NJSUxvd2VyKCppdGVyYXRvcikg
IT0gY29kZVBvaW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0
ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBh
cnNlcjo6aXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVy
YXRvcikKK3sKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbCcp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2lu
dChpdGVyYXRvciwgJ28nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tM
b2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdjJykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYScpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRv
ciwgJ2wnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RD
b2RlUG9pbnQoaXRlcmF0b3IsICdoJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbycpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ3MnKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQo
aXRlcmF0b3IsICd0JykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXRlcmF0
b3IuYXRFbmQoKTsKK30KKworYm9vbCBVUkxQYXJzZXI6OmlzTG9jYWxob3N0KFN0cmluZ1ZpZXcg
dmlldykKK3sKKyAgICBpZiAodmlldy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGlzQXRMb2Nh
bGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+KHZpZXcuY2hhcmFjdGVyczgoKSwgdmlldy5j
aGFyYWN0ZXJzOCgpICsgdmlldy5sZW5ndGgoKSkpOworICAgIHJldHVybiBpc0F0TG9jYWxob3N0
KENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPih2aWV3LmNoYXJhY3RlcnMxNigpLCB2aWV3LmNoYXJh
Y3RlcnMxNigpICsgdmlldy5sZW5ndGgoKSkpOworfQorCitBTFdBWVNfSU5MSU5FIFN0cmluZ1Zp
ZXcgVVJMUGFyc2VyOjpwYXJzZWREYXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgp
Cit7CisgICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkgeworICAgICAg
ICBBU1NFUlQoc3RhcnQgKyBsZW5ndGggPD0gbV9hc2NpaUJ1ZmZlci5zaXplKCkpOworICAgICAg
ICByZXR1cm4gU3RyaW5nVmlldyhtX2FzY2lpQnVmZmVyLmRhdGEoKSArIHN0YXJ0LCBsZW5ndGgp
OworICAgIH0KKyAgICBBU1NFUlQoc3RhcnQgKyBsZW5ndGggPD0gbV9pbnB1dFN0cmluZy5sZW5n
dGgoKSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9pbnB1dFN0cmluZykuc3Vic3RyaW5nKHN0
YXJ0LCBsZW5ndGgpOworfQorCitBTFdBWVNfSU5MSU5FIFVDaGFyIFVSTFBhcnNlcjo6cGFyc2Vk
RGF0YVZpZXcoc2l6ZV90IHBvc2l0aW9uKQoreworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5
bnRheFZpb2xhdGlvbikpCisgICAgICAgIHJldHVybiBtX2FzY2lpQnVmZmVyW3Bvc2l0aW9uXTsK
KyAgICByZXR1cm4gbV9pbnB1dFN0cmluZ1twb3NpdGlvbl07Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIHNpemVfdCBVUkxQYXJzZXI6OmN1cnJl
bnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0
b3IpCit7CisgICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAg
ICAgcmV0dXJuIG1fYXNjaWlCdWZmZXIuc2l6ZSgpOworICAgIAorICAgIHJldHVybiBpdGVyYXRv
ci5jb2RlVW5pdHNTaW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IENoYXJhY3RlclR5cGUqPiht
X2lucHV0QmVnaW4pKTsKK30KKworVVJMUGFyc2VyOjpVUkxQYXJzZXIoY29uc3QgU3RyaW5nJiBp
bnB1dCwgY29uc3QgVVJMJiBiYXNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIG5vblVURjhRdWVy
eUVuY29kaW5nKQorICAgIDogbV9pbnB1dFN0cmluZyhpbnB1dCkKK3sKKyAgICBpZiAoaW5wdXQu
aXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmICFiYXNlLm1fY2Fubm90
QmVBQmFzZVVSTCkgeworICAgICAgICAgICAgbV91cmwgPSBiYXNlOworICAgICAgICAgICAgbV91
cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChpbnB1dC5pczhCaXQoKSkgeworICAgICAgICBtX2lucHV0QmVn
aW4gPSBpbnB1dC5jaGFyYWN0ZXJzOCgpOworICAgICAgICBwYXJzZShpbnB1dC5jaGFyYWN0ZXJz
OCgpLCBpbnB1dC5sZW5ndGgoKSwgYmFzZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIG1faW5wdXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnMxNigpOworICAg
ICAgICBwYXJzZShpbnB1dC5jaGFyYWN0ZXJzMTYoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5v
blVURjhRdWVyeUVuY29kaW5nKTsKKyAgICB9CisKKyAgICBBU1NFUlQoIW1fdXJsLm1faXNWYWxp
ZAorICAgICAgICB8fCBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiA9PSAobV91cmwuc3RyaW5nKCkg
IT0gaW5wdXQpCisgICAgICAgIHx8IChpbnB1dC5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQzBD
b250cm9sT3JTcGFjZT4oKQorICAgICAgICAgICAgJiYgbV91cmwubV9zdHJpbmcgPT0gYmFzZS5t
X3N0cmluZy5sZWZ0KGJhc2UubV9xdWVyeUVuZCkpKTsKKyAgICBBU1NFUlQoaW50ZXJuYWxWYWx1
ZXNDb25zaXN0ZW50KG1fdXJsKSk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGlmICghbV9k
aWRTZWVTeW50YXhWaW9sYXRpb24pIHsKKyAgICAgICAgLy8gRm9yY2UgYSBzeW50YXggdmlvbGF0
aW9uIGF0IHRoZSBiZWdpbm5pbmcgdG8gbWFrZSBzdXJlIHdlIGdldCB0aGUgc2FtZSByZXN1bHQu
CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygiICIsIGlucHV0KSwgYmFzZSwg
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICBVUkwgcGFyc2VkID0gcGFyc2VyLnJlc3Vs
dCgpOworICAgICAgICBpZiAocGFyc2VkLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIEFTU0VSVChh
bGxWYWx1ZXNFcXVhbChwYXJzZXIucmVzdWx0KCksIG1fdXJsKSk7CisgICAgfQorI2VuZGlmCit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6cGFy
c2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogaW5wdXQsIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgVVJMJiBiYXNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIG5vblVURjhRdWVyeUVuY29kaW5n
KQoreworICAgIFVSTF9QQVJTRVJfTE9HKCJQYXJzaW5nIFVSTCA8JXM+IGJhc2UgPCVzPiIsIFN0
cmluZyhpbnB1dCwgbGVuZ3RoKS51dGY4KCkuZGF0YSgpLCBiYXNlLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIG1fdXJsID0geyB9OworICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1w
dHkoKSk7CisKKyAgICBWZWN0b3I8VUNoYXI+IHF1ZXJ5QnVmZmVyOworCisgICAgdW5zaWduZWQg
ZW5kSW5kZXggPSBsZW5ndGg7CisgICAgd2hpbGUgKFVOTElLRUxZKGVuZEluZGV4ICYmIGlzQzBD
b250cm9sT3JTcGFjZShpbnB1dFtlbmRJbmRleCAtIDFdKSkpIHsKKyAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGlucHV0LCBpbnB1dCkpOwor
ICAgICAgICBlbmRJbmRleC0tOworICAgIH0KKyAgICBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiBjKGlucHV0LCBpbnB1dCArIGVuZEluZGV4KTsKKyAgICBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiBhdXRob3JpdHlPckhvc3RCZWdpbjsKKyAgICBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiBxdWVyeUJlZ2luOworICAgIHdoaWxlIChVTkxJS0VMWSghYy5h
dEVuZCgpICYmIGlzQzBDb250cm9sT3JTcGFjZSgqYykpKSB7CisgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgKytjOworICAgIH0KKyAgICBhdXRvIGJlZ2luQWZ0ZXJDb250cm9s
QW5kU3BhY2UgPSBjOworCisgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAg
ICBTY2hlbWVTdGFydCwKKyAgICAgICAgU2NoZW1lLAorICAgICAgICBOb1NjaGVtZSwKKyAgICAg
ICAgU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHksCisgICAgICAgIFBhdGhPckF1dGhvcml0eSwK
KyAgICAgICAgUmVsYXRpdmUsCisgICAgICAgIFJlbGF0aXZlU2xhc2gsCisgICAgICAgIFNwZWNp
YWxBdXRob3JpdHlTbGFzaGVzLAorICAgICAgICBTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hl
cywKKyAgICAgICAgQXV0aG9yaXR5T3JIb3N0LAorICAgICAgICBIb3N0LAorICAgICAgICBGaWxl
LAorICAgICAgICBGaWxlU2xhc2gsCisgICAgICAgIEZpbGVIb3N0LAorICAgICAgICBQYXRoU3Rh
cnQsCisgICAgICAgIFBhdGgsCisgICAgICAgIENhbm5vdEJlQUJhc2VVUkxQYXRoLAorICAgICAg
ICBVVEY4UXVlcnksCisgICAgICAgIE5vblVURjhRdWVyeSwKKyAgICAgICAgRnJhZ21lbnQsCisg
ICAgfTsKKworI2RlZmluZSBMT0dfU1RBVEUoeCkgVVJMX1BBUlNFUl9MT0coIlN0YXRlICVzLCBj
b2RlIHBvaW50ICVjLCBwYXJzZWQgZGF0YSA8JXM+IHNpemUgJXp1IiwgeCwgKmMsIHBhcnNlZERh
dGFWaWV3KDAsIGN1cnJlbnRQb3NpdGlvbihjKSkudXRmOCgpLmRhdGEoKSwgY3VycmVudFBvc2l0
aW9uKGMpKQorI2RlZmluZSBMT0dfRklOQUxfU1RBVEUoeCkgVVJMX1BBUlNFUl9MT0coIkZpbmFs
IFN0YXRlOiAlcyIsIHgpCisKKyAgICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpTY2hlbWVTdGFydDsK
KyAgICB3aGlsZSAoIWMuYXRFbmQoKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5l
d2xpbmUoKmMpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAg
ICAgKytjOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBzd2l0
Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgU3RhdGU6OlNjaGVtZVN0YXJ0OgorICAgICAgICAg
ICAgTE9HX1NUQVRFKCJTY2hlbWVTdGFydCIpOworICAgICAgICAgICAgaWYgKGlzQVNDSUlBbHBo
YSgqYykpIHsKKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKCpjKSkp
CisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqYykpOworICAgICAgICAgICAgICAg
IGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgeworICAgICAgICAg
ICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAgICAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRl
ckNvbnRyb2xBbmRTcGFjZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNjaGVtZTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlNjaGVtZToKKyAgICAgICAgICAg
IExPR19TVEFURSgiU2NoZW1lIik7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFNjaGVtZUNoYXJh
Y3RlcigqYykpIHsKKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKCpj
KSkpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqYykpOworICAgICAgICAgICAg
fSBlbHNlIGlmICgqYyA9PSAnOicpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBzY2hlbWVF
bmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgaWYgKHNjaGVtZUVuZCA+
IFVSTDo6bWF4U2NoZW1lTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBtX3VybC5tX3NjaGVtZUVuZCA9IHNjaGVtZUVuZDsKKyAgICAgICAgICAgICAgICBT
dHJpbmdWaWV3IHVybFNjaGVtZSA9IHBhcnNlZERhdGFWaWV3KDAsIG1fdXJsLm1fc2NoZW1lRW5k
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAg
ICAgICAgc3dpdGNoIChzY2hlbWUodXJsU2NoZW1lKSkgeworICAgICAgICAgICAgICAgIGNhc2Ug
U2NoZW1lOjpGaWxlOgorICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIG1fdXJsSXNGaWxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKKyAgICAgICAgICAgICAgICAgICAgKytjOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6V1M6
CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OldTUzoKKyAgICAgICAgICAgICAgICAgICAg
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBtX3Vy
bElzU3BlY2lhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLnByb3RvY29s
SXModXJsU2NoZW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNw
ZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hl
czsKKyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6SFRUUDoKKyAgICAgICAgICAgICAgICBjYXNl
IFNjaGVtZTo6SFRUUFM6CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJc0lu
SFRUUEZhbWlseSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAg
ICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpGVFA6CisgICAgICAgICAgICAgICAgY2FzZSBTY2hl
bWU6OkdvcGhlcjoKKyAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5wcm90b2NvbElzKHVybFNjaGVtZSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhv
cml0eTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM7CisgICAgICAgICAgICAgICAg
ICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBTY2hlbWU6Ok5vblNwZWNpYWw6CisgICAgICAgICAgICAgICAgICAgIG5vblVURjhRdWVyeUVu
Y29kaW5nID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBtYXliZVNsYXNoID0g
YzsKKyAgICAgICAgICAgICAgICAgICAgYWR2YW5jZShtYXliZVNsYXNoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFtYXliZVNsYXNoLmF0RW5kKCkgJiYgKm1heWJlU2xhc2ggPT0gJy8nKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjID0gbWF5YmVTbGFzaDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlBhdGhPckF1dGhvcml0eTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCgqYyA9PSAnLycpOworICAgICAgICAgICAgICAgICAgICAgICAgKytjOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24o
Yyk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICArK2M7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNz
d29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgbV91
cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fY2Fubm90QmVBQmFzZVVSTCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpOb1NjaGVtZTsKKyAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xB
bmRTcGFjZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7CisgICAgICAgICAg
ICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6Ok5vU2NoZW1lOworICAgICAgICAgICAgICAgIGMgPSBiZWdpbkFmdGVyQ29udHJvbEFuZFNw
YWNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3Rh
dGU6Ok5vU2NoZW1lOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJOb1NjaGVtZSIpOworICAgICAg
ICAgICAgaWYgKCFiYXNlLmlzVmFsaWQoKSB8fCAoYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwgJiYg
KmMgIT0gJyMnKSkgeworICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYmFzZS5tX2Nhbm5vdEJl
QUJhc2VVUkwgJiYgKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50
aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFiYXNlLnByb3Rv
Y29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZl
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29w
eVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6U2NoZW1lRW5kLCBjLCBub25VVEY4UXVlcnlF
bmNvZGluZyk7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OgorICAgICAgICAgICAgTE9HX1NU
QVRFKCJTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSIpOworICAgICAgICAgICAgaWYgKCpjID09
ICcvJykgeworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAg
ICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsK
KyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZVNsYXNoOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgorICAgICAg
ICAgICAgTE9HX1NUQVRFKCJQYXRoT3JBdXRob3JpdHkiKTsKKyAgICAgICAgICAgIGlmICgqYyA9
PSAnLycpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OworICAgICAgICAgICAg
ICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJy
ZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBj
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkRGF0
YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgPT0gJy8nKTsKKyAgICAgICAgICAgICAgICBt
X3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAgICAg
ICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFN0YXRlOjpSZWxhdGl2ZToKKyAgICAgICAgICAgIExPR19TVEFURSgiUmVsYXRpdmUi
KTsKKyAgICAgICAgICAgIHN3aXRjaCAoKmMpIHsKKyAgICAgICAgICAgIGNhc2UgJy8nOgorICAg
ICAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0
aXZlU2xhc2g7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAnPyc6CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwo
YmFzZSwgVVJMUGFydDo6UGF0aEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKKyAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7CisgICAgICAgICAg
ICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgJyMnOgorICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGls
KGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOworICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29weVVS
TFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4
UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbihjKSAm
JiBwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSAhPSAnLycpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgorICAgICAgICAgICAgTE9HX1NUQVRF
KCJSZWxhdGl2ZVNsYXNoIik7CisgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdc
XCcpIHsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRz
VW50aWwoYmFzZSwgVVJMUGFydDo6U2NoZW1lRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7
CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOi8vIiwgMyk7CisgICAgICAg
ICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsKKyAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9z
aXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9y
SG9zdDsKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29w
eVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAg
ICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJhc2UubV9ob3N0RW5kICsg
YmFzZS5tX3BvcnRMZW5ndGggKyAxOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBh
dGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0
ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNp
YWxBdXRob3JpdHlTbGFzaGVzIik7CisgICAgICAgICAgICBpZiAoTElLRUxZKCpjID09ICcvJyB8
fCAqYyA9PSAnXFwnKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnXFwn
KSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMp
OworICAgICAgICAgICAgICAgIGlmIChMSUtFTFkoIWMuYXRFbmQoKSAmJiAoKmMgPT0gJy8nIHx8
ICpjID09ICdcXCcpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0g
J1xcJykpCisgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAg
ICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignLycpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignLycpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoIi8vIiwgMik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczoKKyAg
ICAgICAgICAgIExPR19TVEFURSgiU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMiKTsKKyAg
ICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAg
IHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0
aW9uKGMpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsK
KyAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0
OgorICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiQXV0aG9yaXR5
T3JIb3N0Iik7CisgICAgICAgICAgICAgICAgaWYgKCpjID09ICdAJykgeworICAgICAgICAgICAg
ICAgICAgICBhdXRvIGxhc3RBdCA9IGM7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZmluZExh
c3RBdCA9IGM7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICghZmluZExhc3RBdC5hdEVuZCgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBVUkxfUEFSU0VSX0xPRygiRmluZGluZyBsYXN0
IEA6ICVjIiwgKmZpbmRMYXN0QXQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmaW5k
TGFzdEF0ID09ICdAJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QXQgPSBmaW5k
TGFzdEF0OworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1NsYXNoID0gKmZpbmRMYXN0
QXQgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqZmluZExhc3RBdCA9PSAnXFwnKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NsYXNoIHx8ICpmaW5kTGFzdEF0ID09ICc/JyB8
fCAqZmluZExhc3RBdCA9PSAnIycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgICArK2ZpbmRMYXN0QXQ7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGxhc3RBdCkpOworICAgICAg
ICAgICAgICAgICAgICBjID0gbGFzdEF0OworICAgICAgICAgICAgICAgICAgICBhZHZhbmNlKGMp
OworICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Okhvc3Q7CisgICAgICAgICAgICAgICAgICAgIG1f
aG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBib29sIGlzU2xhc2ggPSAq
YyA9PSAnLycgfHwgKG1fdXJsSXNTcGVjaWFsICYmICpjID09ICdcXCcpOworICAgICAgICAgICAg
ICAgIGlmIChpc1NsYXNoIHx8ICpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBpdGVyYXRvciA9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXJh
dG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lh
bCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNl
ckVuZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1f
dXNlckVuZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1f
dXJsLm1fdXNlckVuZDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihhdXRob3JpdHlP
ckhvc3RCZWdpbik7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5k
ID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhv
c3RBbmRQb3J0KGl0ZXJhdG9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1
cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlzU2xh
c2gpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzUGVyY2VudE9yTm9uQVND
SUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9
IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRF
bmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6SG9zdDoKKyAg
ICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkhvc3QiKTsKKyAgICAg
ICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJz8n
IHx8ICpjID09ICcjJykgeworICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGMpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJy
ZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJKCpj
KSkKKyAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVl
OworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZpbGU6CisgICAgICAg
ICAgICBMT0dfU1RBVEUoIkZpbGUiKTsKKyAgICAgICAgICAgIHN3aXRjaCAoKmMpIHsKKyAgICAg
ICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Cisg
ICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgICAgICBjYXNlICcvJzoKKyAgICAg
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6RmlsZVNsYXNoOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJz8nOgorICAgICAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFz
ZS5wcm90b2NvbElzKCJmaWxlIikpIHsKKyAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRz
VW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwor
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7CisgICAgICAgICAg
ICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8/IiwgNCk7CisgICAgICAgICAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9z
aXRpb24oYykgLSAyOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcXVlcnlCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
Ok5vblVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAnIyc6CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwor
ICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZp
bGUiKSkgeworICAgICAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQ
YXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIyIsIDQpOworICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAt
IDI7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwor
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1f
dXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVl
cnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAg
KytjOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2Uu
aXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpICYmIHNob3VsZENvcHlGaWxlVVJM
KGMpKQorICAgICAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0
OjpQYXRoQWZ0ZXJMYXN0U2xhc2gsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigi
Ly8vIiwgMyk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVu
dFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9y
dExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNX
aW5kb3dzRHJpdmVMZXR0ZXIoYykpCisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRXaW5k
b3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZVNsYXNoOgorICAg
ICAgICAgICAgTE9HX1NUQVRFKCJGaWxlU2xhc2giKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFko
KmMgPT0gJy8nIHx8ICpjID09ICdcXCcpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCpjID09ICdcXCcpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAg
IGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50
UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OworICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OworICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAg
ICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOworICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkZpbGVIb3N0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcigiLy8iLCAyKTsKKyAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3Vy
cmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgaWYg
KGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93
c0RyaXZlTGV0dGVyKGMpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAgICAgfSBlbHNlIGlmIChjb3B5
QmFzZVdpbmRvd3NEcml2ZUxldHRlcihiYXNlKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgNDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQg
KyAxOworICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFN0YXRlOjpGaWxlSG9zdDoKKyAgICAgICAgICAgIGRvIHsKKyAgICAg
ICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGVIb3N0Iik7CisgICAgICAgICAgICAgICAgaWYgKGlz
U2xhc2hRdWVzdGlvbk9ySGFzaCgqYykpIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCB3aW5k
b3dzUXVpcmsgPSB0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAg
ICAgICAgICAgICAgICAgICBpZiAod2luZG93c1F1aXJrKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93c1F1aXJr
IHx8IGF1dGhvcml0eU9ySG9zdEJlZ2luID09IGMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVCh3aW5kb3dzUXVpcmsgfHwgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMp
IC0gMSkgPT0gJy8nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9
PSAnPycpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8/Iiwg
Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICcjJykp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLyMiLCAyKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVl
cnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNl
SG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JI
b3N0QmVnaW4sIGMpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyht
X3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3Jk
RW5kKSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLnNocmluayhtX3VybC5tX3Bhc3N3
b3JkRW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0
aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGhTdGFydDsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpc1Bl
cmNlbnRPck5vbkFTQ0lJKCpjKSkKKyAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2Vu
dE9yTm9uQVNDSUkgPSB0cnVlOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIH0g
d2hpbGUgKCFjLmF0RW5kKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3Rh
dGU6OlBhdGhTdGFydDoKKyAgICAgICAgICAgIExPR19TVEFURSgiUGF0aFN0YXJ0Iik7CisgICAg
ICAgICAgICBpZiAoKmMgIT0gJy8nICYmICpjICE9ICdcXCcpIHsKKyAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRo
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlBhdGg6CisgICAgICAg
ICAgICBMT0dfU1RBVEUoIlBhdGgiKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKG1f
dXJsSXNTcGVjaWFsICYmICpjID09ICdcXCcpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKG1fdXJsSXNTcGVjaWFsICYmICpjID09ICdcXCcpKQorICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShjdXJyZW50UG9zaXRp
b24oYykgJiYgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgPT0gJy8nKSkg
eworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0RvdWJsZURvdFBhdGhTZWdtZW50KGMp
KSkgeworICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChjKTsKKyAgICAgICAgICAgICAg
ICAgICAgcG9wUGF0aCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzU2luZ2xlRG90UGF0aFNlZ21l
bnQoYykpKSB7CisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KGMpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoKmMgPT0gJz8nKSB7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJz8nKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgaWYgKG5vblVU
RjhRdWVyeUVuY29kaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwor
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhR
dWVyeTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmICgqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJy
ZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fcGF0aEVuZDsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHV0ZjhQZXJj
ZW50RW5jb2RlPGlzSW5EZWZhdWx0RW5jb2RlU2V0PihjKTsKKyAgICAgICAgICAgICsrYzsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0
aDoKKyAgICAgICAgICAgIExPR19TVEFURSgiQ2Fubm90QmVBQmFzZVVSTFBhdGgiKTsKKyAgICAg
ICAgICAgIGlmICgqYyA9PSAnPycpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignPycpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBpZiAobm9uVVRG
OFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7Cisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1
ZXJ5OworICAgICAgICAgICAgfSBlbHNlIGlmICgqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJy8nKSB7
CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAg
ICAgICsrYzsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1
cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
dXRmOFBlcmNlbnRFbmNvZGU8aXNJblNpbXBsZUVuY29kZVNldD4oYyk7CisgICAgICAgICAgICAg
ICAgKytjOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
U3RhdGU6OlVURjhRdWVyeToKKyAgICAgICAgICAgIExPR19TVEFURSgiVVRGOFF1ZXJ5Iik7Cisg
ICAgICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPigpKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAg
ICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKCFub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAg
ICAgICAgICB1dGY4UXVlcnlFbmNvZGUoYyk7CisgICAgICAgICAgICArK2M7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgorICAgICAgICAgICAg
ZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiTm9uVVRGOFF1ZXJ5Iik7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gIT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4oKSk7CisgICAgICAgICAgICAgICAgaWYgKCpjID09ICcjJykgeworICAgICAgICAgICAg
ICAgICAgICBlbmNvZGVOb25VVEY4UXVlcnkocXVlcnlCdWZmZXIsICpub25VVEY4UXVlcnlFbmNv
ZGluZywgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4ocXVlcnlCZWdpbiwgYykpOwor
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMp
OworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFw
cGVuZENvZGVQb2ludChxdWVyeUJ1ZmZlciwgKmMpOworICAgICAgICAgICAgICAgIGFkdmFuY2Uo
YywgcXVlcnlCZWdpbik7CisgICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpGcmFnbWVudDoKKyAgICAgICAgICAg
IFVSTF9QQVJTRVJfTE9HKCJTdGF0ZSBGcmFnbWVudCIpOworICAgICAgICAgICAgdXRmOFBlcmNl
bnRFbmNvZGU8aXNJblNpbXBsZUVuY29kZVNldD4oYyk7CisgICAgICAgICAgICArK2M7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAoc3RhdGUpIHsK
KyAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJT
Y2hlbWVTdGFydCIpOworICAgICAgICBpZiAoIWN1cnJlbnRQb3NpdGlvbihjKSAmJiBiYXNlLmlz
VmFsaWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwpIHsKKyAgICAgICAgICAgIG1fdXJs
ID0gYmFzZTsKKyAgICAgICAgICAgIG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZhaWx1cmUoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgU3RhdGU6OlNjaGVtZToKKyAgICAgICAgTE9HX0ZJTkFMX1NU
QVRFKCJTY2hlbWUiKTsKKyAgICAgICAgZmFpbHVyZSgpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBTdGF0ZTo6Tm9TY2hlbWU6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiTm9TY2hlbWUi
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0YXRl
OjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJT
cGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSIpOworICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChi
YXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpQYXRoT3JBdXRob3JpdHk6CisgICAgICAgIExPR19G
SU5BTF9TVEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7CisgICAgICAgIEFTU0VSVChtX3VybC5tX3Vz
ZXJTdGFydCk7CisgICAgICAgIEFTU0VSVChtX3VybC5tX3VzZXJTdGFydCA9PSBjdXJyZW50UG9z
aXRpb24oYykpOworICAgICAgICBBU1NFUlQocGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9u
KGMpIC0gMSkgPT0gJy8nKTsKKyAgICAgICAgbV91cmwubV91c2VyU3RhcnQtLTsKKyAgICAgICAg
bV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGFz
c3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAg
ICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwor
ICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAg
ICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZToKKyAgICAgICAgTE9HX0ZJTkFM
X1NUQVRFKCJSZWxhdGl2ZSIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlU2xhc2g6CisgICAgICAgIExPR19GSU5BTF9TVEFU
RSgiUmVsYXRpdmVTbGFzaCIpOworICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQ
YXJ0OjpQb3J0RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBt
X3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOworICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgbV91cmwubV9x
dWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczoKKyAgICAgICAgTE9HX0ZJTkFM
X1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcyIpOworICAgICAgICBtX3VybC5tX3VzZXJT
dGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Cisg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3Jp
dHlJZ25vcmVTbGFzaGVzOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3Jp
dHlJZ25vcmVTbGFzaGVzIik7CisgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0eU9ySG9zdDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJBdXRob3JpdHlPckhvc3QiKTsKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBv
c2l0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVu
ZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgaWYgKGF1dGhvcml0eU9ySG9zdEJlZ2luLmF0
RW5kKCkpIHsKKyAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OworICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owor
ICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIH0gZWxzZSBpZiAoIXBhcnNlSG9zdEFuZFBv
cnQoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7CisgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobV91cmxJ
c1NwZWNpYWwpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIG1fdXJs
Lm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U3RhdGU6Okhvc3Q6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiSG9zdCIpOworICAgICAgICBp
ZiAoIXBhcnNlSG9zdEFuZFBvcnQoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7CisgICAgICAgICAg
ICBmYWlsdXJlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYg
KG1fdXJsSXNTcGVjaWFsKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCAr
IG1fdXJsLm1fcG9ydExlbmd0aDsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3Bh
dGhFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OkZpbGU6CisgICAgICAgIExP
R19GSU5BTF9TVEFURSgiRmlsZSIpOworICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFz
ZS5wcm90b2NvbElzKCJmaWxlIikpIHsKKyAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJh
c2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyIsIDMpOworICAgICAgICBtX3VybC5tX3VzZXJT
dGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgbV91cmwubV9w
YXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVl
cnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTdGF0ZTo6RmlsZVNsYXNoOgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGVTbGFz
aCIpOworICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgIG1fdXJsLm1fdXNlclN0
YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpICsgMTsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cigiLy8iLCAyKTsKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1f
cG9ydExlbmd0aCA9IDA7CisgICAgICAgIGlmIChjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihi
YXNlKSkgeworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAg
ICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBt
X3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OkZpbGVI
b3N0OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGVIb3N0Iik7CisgICAgICAgIGlmICh0
YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4o
YXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKQorICAgICAgICAgICAgJiYgaXNXaW5kb3dzRHJpdmVM
ZXR0ZXIoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignLycpOworICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9y
SG9zdEJlZ2luKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3Vy
cmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKGF1dGhvcml0eU9ySG9zdEJlZ2luID09IGMpIHsKKyAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKKyAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMp
IC0gMTsKKyAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owor
ICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAg
ICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIG1fdXJsLm1f
cXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKKyAgICAg
ICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgaWYgKGlzTG9jYWxob3N0KHBhcnNlZERh
dGFWaWV3KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJlbnRQb3NpdGlvbihjKSAtIG1fdXJsLm1f
cGFzc3dvcmRFbmQpKSkgeworICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91cmwu
bV9wYXNzd29yZEVuZCk7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9z
aXRpb24oYyk7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICB9
CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAx
OworICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsK
KyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpQYXRoU3RhcnQ6CisgICAgICAgIExPR19G
SU5BTF9TVEFURSgiUGF0aFN0YXJ0Iik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgY2FzZSBTdGF0ZTo6UGF0aDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQ
YXRoIik7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAg
ICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6CisgICAgICAgIExPR19GSU5B
TF9TVEFURSgiQ2Fubm90QmVBQmFzZVVSTFBhdGgiKTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwu
bV9wYXRoRW5kOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpVVEY4UXVlcnk6Cisg
ICAgICAgIExPR19GSU5BTF9TVEFURSgiVVRGOFF1ZXJ5Iik7CisgICAgICAgIEFTU0VSVChxdWVy
eUJlZ2luID09IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOworICAgICAgICBt
X3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFN0YXRlOjpOb25VVEY4UXVlcnk6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiTm9u
VVRGOFF1ZXJ5Iik7CisgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+KCkpOworICAgICAgICBlbmNvZGVOb25VVEY4UXVlcnkocXVlcnlC
dWZmZXIsICpub25VVEY4UXVlcnlFbmNvZGluZywgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4ocXVlcnlCZWdpbiwgYykpOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVu
dFBvc2l0aW9uKGMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpGcmFnbWVudDoK
KyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGcmFnbWVudCIpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBpZiAoTElLRUxZKCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpIHsKKyAgICAg
ICAgbV91cmwubV9zdHJpbmcgPSBtX2lucHV0U3RyaW5nOworICAgICAgICBBU1NFUlQobV9hc2Np
aUJ1ZmZlci5pc0VtcHR5KCkpOworICAgIH0gZWxzZQorICAgICAgICBtX3VybC5tX3N0cmluZyA9
IFN0cmluZzo6YWRvcHQoV1RGTW92ZShtX2FzY2lpQnVmZmVyKSk7CisgICAgbV91cmwubV9pc1Zh
bGlkID0gdHJ1ZTsKKyAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2VkIFVSTCA8JXM+IiwgbV91cmwu
bV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6cGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKFVOTElLRUxZKGl0ZXJhdG9yLmF0
RW5kKCkpKSB7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgICAgIG1f
dXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIG1fdXJs
Lm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkgeworICAg
ICAgICBpZiAoKml0ZXJhdG9yID09ICc6JykgeworICAgICAgICAgICAgbV91cmwubV91c2VyRW5k
ID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGF1dG8gaXRlcmF0b3JB
dENvbG9uID0gaXRlcmF0b3I7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAg
Ym9vbCB0YWJPck5ld2xpbmVBZnRlckNvbG9uID0gZmFsc2U7CisgICAgICAgICAgICB3aGlsZSAo
VU5MSUtFTFkoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkp
IHsKKyAgICAgICAgICAgICAgICB0YWJPck5ld2xpbmVBZnRlckNvbG9uID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFVO
TElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGl0ZXJhdG9yQXRDb2xvbik7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVu
ZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgICAgICAgICBpZiAobV91cmwubV91c2VyRW5k
ID4gbV91cmwubV91c2VyU3RhcnQpCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJ0AnKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAodGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbikKKyAgICAgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oaXRlcmF0b3JBdENvbG9uKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJzonKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHV0ZjhQ
ZXJjZW50RW5jb2RlPFdURjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0PihpdGVyYXRvcik7CisgICAg
fQorICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgYWR2YW5jZShpdGVyYXRvcikpCisgICAg
ICAgIHV0ZjhQZXJjZW50RW5jb2RlPFdURjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0PihpdGVyYXRv
cik7CisgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7
CisgICAgaWYgKCFtX3VybC5tX3VzZXJFbmQpCisgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1f
dXJsLm1fcGFzc3dvcmRFbmQ7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignQCcpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OmFw
cGVuZE51bWJlclRvQVNDSUlCdWZmZXIoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpCit7Cisg
ICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMgKyAxXTsKKyAgICBM
Q2hhciogZW5kID0gc3RkOjplbmQoYnVmKTsKKyAgICBMQ2hhciogcCA9IGVuZDsKKyAgICBkbyB7
CisgICAgICAgICotLXAgPSAobnVtYmVyICUgMTApICsgJzAnOworICAgICAgICBudW1iZXIgLz0g
MTA7CisgICAgfSB3aGlsZSAobnVtYmVyKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHAsIGVu
ZCAtIHApOworfQorCit2b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyBh
ZGRyZXNzKQoreworICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVz
cyA+PiAyNCk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOworICAgIGFwcGVuZE51bWJl
clRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAxNik7CisgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignLicpOworICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRk
cmVzcyA+PiA4KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5kTnVt
YmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzKTsKK30KKyAgICAKK3N0YXRpYyBzaXpl
X3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRy
ZXNzLCBzaXplX3QgYmVnaW4pCit7CisgICAgc2l6ZV90IGVuZCA9IGJlZ2luOworICAgIGZvciAo
OyBlbmQgPCA4OyBlbmQrKykgeworICAgICAgICBpZiAoYWRkcmVzc1tlbmRdKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBlbmQgLSBiZWdpbjsKK30KKworc3RhdGljIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShjb25zdCBzdGQ6OmFy
cmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
bG9uZ2VzdDsKKyAgICBzaXplX3QgbG9uZ2VzdExlbmd0aCA9IDA7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHplcm9TZXF1ZW5j
ZUxlbmd0aChhZGRyZXNzLCBpKTsKKyAgICAgICAgaWYgKGxlbmd0aCkgeworICAgICAgICAgICAg
aWYgKGxlbmd0aCA+IDEgJiYgKCFsb25nZXN0IHx8IGxvbmdlc3RMZW5ndGggPCBsZW5ndGgpKSB7
CisgICAgICAgICAgICAgICAgbG9uZ2VzdCA9IGk7CisgICAgICAgICAgICAgICAgbG9uZ2VzdExl
bmd0aCA9IGxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgKz0gbGVuZ3RoOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBsb25nZXN0OworfQorCit2b2lkIFVSTFBhcnNl
cjo6c2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKQoreworICAgIGJvb2wgcHJpbnRl
ZCA9IGZhbHNlOworICAgIGlmIChhdXRvIG5pYmJsZTAgPSBwaWVjZSA+PiAxMikgeworICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0
KG5pYmJsZTApKTsKKyAgICAgICAgcHJpbnRlZCA9IHRydWU7CisgICAgfQorICAgIGF1dG8gbmli
YmxlMSA9IHBpZWNlID4+IDggJiAweEY7CisgICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMSkgewor
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhl
eERpZ2l0KG5pYmJsZTEpKTsKKyAgICAgICAgcHJpbnRlZCA9IHRydWU7CisgICAgfQorICAgIGF1
dG8gbmliYmxlMiA9IHBpZWNlID4+IDQgJiAweEY7CisgICAgaWYgKHByaW50ZWQgfHwgbmliYmxl
MikKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVND
SUlIZXhEaWdpdChuaWJibGUyKSk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJs
ZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChwaWVjZSAmIDB4RikpOworfQorCit2b2lkIFVSTFBh
cnNlcjo6c2VyaWFsaXplSVB2NihVUkxQYXJzZXI6OklQdjZBZGRyZXNzIGFkZHJlc3MpCit7Cisg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignWycpOworICAgIGF1dG8gY29tcHJlc3NQb2ludGVyID0g
ZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7CisgICAgZm9yIChzaXplX3QgcGllY2Ug
PSAwOyBwaWVjZSA8IDg7IHBpZWNlKyspIHsKKyAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAm
JiBjb21wcmVzc1BvaW50ZXIudmFsdWUoKSA9PSBwaWVjZSkgeworICAgICAgICAgICAgQVNTRVJU
KCFhZGRyZXNzW3BpZWNlXSk7CisgICAgICAgICAgICBpZiAocGllY2UpCisgICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjo6IiwgMik7CisgICAgICAgICAgICB3aGlsZSAo
cGllY2UgPCA4ICYmICFhZGRyZXNzW3BpZWNlXSkKKyAgICAgICAgICAgICAgICBwaWVjZSsrOwor
ICAgICAgICAgICAgaWYgKHBpZWNlID09IDgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgc2VyaWFsaXplSVB2NlBpZWNlKGFkZHJlc3NbcGllY2VdKTsKKyAgICAg
ICAgaWYgKHBpZWNlIDwgNykKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsK
KyAgICB9CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignXScpOworfQorCitlbnVtIGNsYXNzIFVS
TFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yIHsKKyAgICBGYWlsdXJlLAorICAgIE92ZXJm
bG93LAorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0V4cGVjdGVkPHVp
bnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJz
ZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGJv
b2wmIGRpZFNlZVN5bnRheFZpb2xhdGlvbikKK3sKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWlu
dDhfdCB7CisgICAgICAgIFVua25vd25CYXNlLAorICAgICAgICBEZWNpbWFsLAorICAgICAgICBP
Y3RhbE9ySGV4LAorICAgICAgICBPY3RhbCwKKyAgICAgICAgSGV4LAorICAgIH07CisgICAgU3Rh
dGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93bkJhc2U7CisgICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVj
b3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsKKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0
ZXJhdG9yID09ICcuJykKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBh
cnNpbmdFcnJvcjo6RmFpbHVyZSk7CisgICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7Cisg
ICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBkaWRT
ZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOworICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJy4n
KSB7CisgICAgICAgICAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7CisgICAgICAg
ICAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNo
IChzdGF0ZSkgeworICAgICAgICBjYXNlIFN0YXRlOjpVbmtub3duQmFzZToKKyAgICAgICAgICAg
IGlmIChVTkxJS0VMWSgqaXRlcmF0b3IgPT0gJzAnKSkgeworICAgICAgICAgICAgICAgICsraXRl
cmF0b3I7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6T2N0YWxPckhleDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OkRlY2ltYWw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6T2N0
YWxPckhleDoKKyAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7CisgICAg
ICAgICAgICBpZiAoKml0ZXJhdG9yID09ICd4JyB8fCAqaXRlcmF0b3IgPT0gJ1gnKSB7CisgICAg
ICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpI
ZXg7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpPY3RhbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0
YXRlOjpEZWNpbWFsOgorICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKTsKKyAgICAgICAgICAgIHZhbHVlICo9IDEwOworICAgICAgICAgICAgdmFs
dWUgKz0gKml0ZXJhdG9yIC0gJzAnOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhh
c092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQ
djRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOworICAgICAgICAgICAgKytpdGVyYXRvcjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpPY3RhbDoKKyAgICAgICAg
ICAgIEFTU0VSVChkaWRTZWVTeW50YXhWaW9sYXRpb24pOworICAgICAgICAgICAgaWYgKCppdGVy
YXRvciA8ICcwJyB8fCAqaXRlcmF0b3IgPiAnNycpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CisgICAgICAgICAg
ICB2YWx1ZSAqPSA4OworICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOworICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZs
b3cpOworICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFN0YXRlOjpIZXg6CisgICAgICAgICAgICBBU1NFUlQoZGlkU2VlU3ludGF4VmlvbGF0
aW9uKTsKKyAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KCppdGVyYXRvcikpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6
RmFpbHVyZSk7CisgICAgICAgICAgICB2YWx1ZSAqPSAxNjsKKyAgICAgICAgICAgIHZhbHVlICs9
IHRvQVNDSUlIZXhWYWx1ZSgqaXRlcmF0b3IpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZh
bHVlLmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOworICAgICAgICAgICAgKytpdGVy
YXRvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVCgh
dmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKKyAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Cit9
CisKK0FMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQ2NF90IHBvdzI1NihzaXplX3QgZXhwb25lbnQp
Cit7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwb25lbnQgPD0gNCk7CisgICAgdWludDY0X3QgdmFs
dWVzWzVdID0gezEsIDI1NiwgMjU2ICogMjU2LCAyNTYgKiAyNTYgKiAyNTYsIDI1NnVsbCAqIDI1
NiAqIDI1NiAqIDI1NiB9OworICAgIHJldHVybiB2YWx1ZXNbZXhwb25lbnRdOworfQorCitlbnVt
IGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvciB7CisgICAgRmFpbHVyZSwKKyAgICBO
b3RJUHY0LAorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZp
b2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0V4cGVjdGVkPFVSTFBhcnNlcjo6SVB2
NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQ
djRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9s
YXRpb24+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uLCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBWZWN0b3I8RXhwZWN0ZWQ8dWlu
dDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiwgND4gaXRlbXM7CisgICAg
Ym9vbCBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSBmYWxzZTsKKyAgICBpZiAoIWl0ZXJhdG9yLmF0
RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOworICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQo
KSkgeworICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkgeworICAgICAgICAg
ICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICsraXRlcmF0b3I7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXRlbXMuc2l6
ZSgpID49IDQpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdF
cnJvcjo6Tm90SVB2NCk7CisgICAgICAgIGl0ZW1zLmFwcGVuZChwYXJzZUlQdjRQaWVjZShpdGVy
YXRvciwgZGlkU2VlU3ludGF4VmlvbGF0aW9uKSk7CisgICAgICAgIGlmICghaXRlcmF0b3IuYXRF
bmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKSB7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAg
ICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZSBpZiAoKml0ZXJhdG9yID09ICcuJykKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpIHx8ICFpdGVtcy5zaXplKCkgfHwgaXRlbXMuc2l6ZSgp
ID4gNCkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5v
dElQdjQpOworICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7CisgICAgICAgIGlm
ICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJz
aW5nRXJyb3I6Ok5vdElQdjQpOworICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBp
dGVtcykgeworICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09
IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CisgICAgfQorICAgIGlmIChp
dGVtcy5zaXplKCkgPiAxKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMu
c2l6ZSgpIC0gMTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoaXRlbXNbaV0udmFsdWUoKSA+IDI1
NSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJv
cjo6RmFpbHVyZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGl0ZW1zW2l0ZW1zLnNpemUo
KSAtIDFdLnZhbHVlKCkgPj0gcG93MjU2KDUgLSBpdGVtcy5zaXplKCkpKQorICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CisKKyAgICBpZiAo
ZGlkU2VlU3ludGF4VmlvbGF0aW9uKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JG
b3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDog
aXRlbXMpIHsKKyAgICAgICAgaWYgKGl0ZW0udmFsdWUoKSA+IDI1NSkKKyAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICB9
CisKKyAgICBpZiAoVU5MSUtFTFkoaXRlbXMuc2l6ZSgpICE9IDQpKQorICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisKKyAgICBJUHY0
QWRkcmVzcyBpcHY0ID0gaXRlbXMudGFrZUxhc3QoKS52YWx1ZSgpOworICAgIGZvciAoc2l6ZV90
IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgaXRlbXMuc2l6ZSgpOyArK2NvdW50ZXIpCisgICAgICAg
IGlwdjQgKz0gaXRlbXNbY291bnRlcl0udmFsdWUoKSAqIHBvdzI1NigzIC0gY291bnRlcik7Cisg
ICAgcmV0dXJuIGlwdjQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2
NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7CisgICAgaWYg
KGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgdWlu
dDMyX3QgcGllY2UgPSAwOworICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7CisgICAgc2l6
ZV90IGRpZ2l0Q291bnQgPSAwOworICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgeworICAg
ICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgKytkaWdpdENvdW50OworICAgICAgICBpZiAoIXBpZWNlICYm
ICppdGVyYXRvciA9PSAnMCcpIHsKKyAgICAgICAgICAgIGlmIChsZWFkaW5nWmVyb3MpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGxlYWRpbmdaZXJv
cyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0g
JzAnKQorICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKKyAgICAgICAgcGllY2UgPSBw
aWVjZSAqIDEwICsgKml0ZXJhdG9yIC0gJzAnOworICAgICAgICBpZiAocGllY2UgPiAyNTUpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhZHZhbmNlPENoYXJhY3Rl
clR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICAgICAgaWYg
KGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCppdGVy
YXRvciA9PSAnLicpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKHBpZWNlICYm
IGxlYWRpbmdaZXJvcykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4g
cGllY2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlv
bmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0lu
c2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7Cisg
ICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0
OyArK2kpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBpZWNlID0gcGFy
c2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKKyAgICAgICAgICAgIGFkZHJlc3MgPSAo
YWRkcmVzcyA8PCA4KSArIHBpZWNlLnZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmIChpIDwgMykgeworICAgICAgICAgICAg
aWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4nKQorICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJl
cG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICAgICAgfSBlbHNlIGlmICgh
aXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
fQorICAgIEFTU0VSVChpdGVyYXRvci5hdEVuZCgpKTsKKyAgICByZXR1cm4gYWRkcmVzczsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8VVJMUGFy
c2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+IGMpCit7CisgICAgQVNTRVJUKCpjID09ICdbJyk7CisgICAgY29u
c3QgYXV0byBob3N0QmVnaW4gPSBjOworICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICBp
ZiAoYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgSVB2NkFk
ZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19OworICAgIHNpemVfdCBw
aWVjZVBvaW50ZXIgPSAwOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb21wcmVzc1BvaW50
ZXI7CisKKyAgICBpZiAoKmMgPT0gJzonKSB7CisgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2lu
KTsKKyAgICAgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIGlmICgqYyAhPSAnOicpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CisgICAgICAgICsrcGllY2VQb2lu
dGVyOworICAgICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7CisgICAgfQorICAg
IAorICAgIHdoaWxlICghYy5hdEVuZCgpKSB7CisgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0g
OCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmICgqYyA9PSAn
OicpIHsKKyAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsK
KyAgICAgICAgICAgICsrcGllY2VQb2ludGVyOworICAgICAgICAgICAgY29tcHJlc3NQb2ludGVy
ID0gcGllY2VQb2ludGVyOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2lu
dGVyIDwgNikpIHsKKyAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBp
cHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPT0gNSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaG9zdEJlZ2luKTsKKyAgICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRl
cisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgPj4gMTY7CisgICAgICAgICAgICAgICAgYWRkcmVz
c1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpICYgMHhGRkZGOworICAgICAg
ICAgICAgICAgIGMgPSB7IH07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgdWludDE2X3QgdmFsdWUgPSAwOworICAgICAgICBzaXplX3Qg
bGVuZ3RoID0gMDsKKyAgICAgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKKyAgICAgICAg
Zm9yICg7IGxlbmd0aCA8IDQ7IGxlbmd0aCsrKSB7CisgICAgICAgICAgICBpZiAoYy5hdEVuZCgp
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGln
aXQoKmMpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGlzQVNDSUlV
cHBlcigqYykpCisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Cisg
ICAgICAgICAgICBpZiAoKmMgPT0gJzAnICYmICFsZW5ndGgpCisgICAgICAgICAgICAgICAgbGVh
ZGluZ1plcm9zID0gdHJ1ZTsKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgKiAweDEwICsgdG9B
U0NJSUhleFZhbHVlKCpjKTsKKyAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKFVOTElLRUxZKCh2YWx1ZSAmJiBsZWFkaW5n
WmVyb3MpIHx8ICghdmFsdWUgJiYgbGVuZ3RoID4gMSkpKQorICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGhvc3RCZWdpbik7CisKKyAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSB2
YWx1ZTsKKyAgICAgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAocGllY2VQb2ludGVyID09IDggfHwgKmMgIT0gJzonKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOworICAgIH0KKyAg
ICAKKyAgICBpZiAoIWMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAKKyAgICBpZiAoY29tcHJlc3NQb2ludGVyKSB7CisgICAgICAgIHNpemVfdCBzd2FwcyA9IHBp
ZWNlUG9pbnRlciAtIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpOworICAgICAgICBwaWVjZVBvaW50
ZXIgPSA3OworICAgICAgICB3aGlsZSAoc3dhcHMpCisgICAgICAgICAgICBzdGQ6OnN3YXAoYWRk
cmVzc1twaWVjZVBvaW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2ludGVyLnZhbHVlKCkgKyBz
d2Fwcy0tIC0gMV0pOworICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9IDgpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcG9zc2li
bGVDb21wcmVzc1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKKyAg
ICBpZiAocG9zc2libGVDb21wcmVzc1BvaW50ZXIpCisgICAgICAgIHBvc3NpYmxlQ29tcHJlc3NQ
b2ludGVyLnZhbHVlKCkrKzsKKyAgICBpZiAoVU5MSUtFTFkoY29tcHJlc3NQb2ludGVyICE9IHBv
c3NpYmxlQ29tcHJlc3NQb2ludGVyKSkKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdp
bik7CisgICAgCisgICAgcmV0dXJuIGFkZHJlc3M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CitVUkxQYXJzZXI6OkxDaGFyQnVmZmVyIFVSTFBhcnNlcjo6cGVyY2VudERl
Y29kZShjb25zdCBMQ2hhciogaW5wdXQsIHNpemVfdCBsZW5ndGgsIGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9u
KQoreworICAgIExDaGFyQnVmZmVyIG91dHB1dDsKKyAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShsZW5ndGgpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07CisgICAgICAgIGlmIChi
eXRlICE9ICclJykKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Cisg
ICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKKyAgICAgICAg
ICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQo
aW5wdXRbaSArIDJdKSkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRv
ckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICBvdXRwdXQudW5j
aGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkp
OworICAgICAgICAgICAgICAgIGkgKz0gMjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICB9CisgICAgcmV0dXJu
IG91dHB1dDsKK30KKyAgICAKK1VSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJj
ZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBMQ2hh
ckJ1ZmZlciBvdXRwdXQ7CisgICAgb3V0cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3Ro
KTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAg
ICAgIHVpbnQ4X3QgYnl0ZSA9IGlucHV0W2ldOworICAgICAgICBpZiAoYnl0ZSAhPSAnJScpCisg
ICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgICAgICBlbHNlIGlm
IChsZW5ndGggPiAyICYmIGkgPCBsZW5ndGggLSAyKSB7CisgICAgICAgICAgICBpZiAoaXNBU0NJ
SUhleERpZ2l0KGlucHV0W2kgKyAxXSkgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAyXSkp
IHsKKyAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1
ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOworICAgICAgICAgICAgICAgIGkgKz0gMjsK
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBl
bmQoYnl0ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFw
cGVuZChieXRlKTsKKyAgICB9CisgICAgcmV0dXJuIG91dHB1dDsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OkxDaGFyQnVmZmVy
PiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25zdCBDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Q
b3NpdGlvbikKK3sKKyAgICBMQ2hhckJ1ZmZlciBhc2NpaTsKKyAgICBpZiAoZG9tYWluLmlzQWxs
QVNDSUkoKSkgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0gZG9tYWluLmxlbmd0aCgpOworICAg
ICAgICBpZiAoZG9tYWluLmlzOEJpdCgpKSB7CisgICAgICAgICAgICBjb25zdCBMQ2hhciogY2hh
cmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzOCgpOworICAgICAgICAgICAgYXNjaWkucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJ
VXBwZXIoY2hhcmFjdGVyc1tpXSkpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgICAgICAgICAgICAg
YXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgICAgIGFzY2lpLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJ
SVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAgICAgICAg
IGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBhc2NpaTsKKyAgICB9CisgICAg
CisgICAgY29uc3Qgc2l6ZV90IG1heERvbWFpbkxlbmd0aCA9IDY0OworICAgIFVDaGFyIGhvc3Ru
YW1lQnVmZmVyW21heERvbWFpbkxlbmd0aF07CisgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVS
T19FUlJPUjsKKyAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lO
SVRJQUxJWkVSOworICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5hX25h
bWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwgU3RyaW5nVmll
dyhkb21haW4pLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBkb21haW4ubGVuZ3RoKCksIGhvc3Ru
YW1lQnVmZmVyLCBtYXhEb21haW5MZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsK
KyAgICBBU1NFUlQobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA8PSBzdGF0aWNfY2FzdDxpbnQzMl90
PihtYXhEb21haW5MZW5ndGgpKTsKKworICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9j
ZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKKyAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwg
bnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsgKytpKSB7CisgICAgICAgICAgICBBU1NFUlQoaXNBU0NJ
SShob3N0bmFtZUJ1ZmZlcltpXSkpOworICAgICAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIo
aG9zdG5hbWVCdWZmZXJbaV0pKTsKKyAgICAgICAgfQorICAgICAgICBhc2NpaS5hcHBlbmQoaG9z
dG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOworICAgICAgICBpZiAoZG9tYWlu
ICE9IFN0cmluZ1ZpZXcoYXNjaWkuZGF0YSgpLCBhc2NpaS5zaXplKCkpKQorICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAg
ICAgICByZXR1cm4gYXNjaWk7CisgICAgfQorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisK
K2Jvb2wgVVJMUGFyc2VyOjpoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IFVSTFBhcnNl
cjo6TENoYXJCdWZmZXImIGFzY2lpRG9tYWluKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXNjaWlEb21haW4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9z
dENvZGVQb2ludChhc2NpaURvbWFpbltpXSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgorYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiYgaXRlcmF0b3IpCit7CisgICAgQVNTRVJUKCppdGVyYXRvciA9PSAnOicpOworICAg
IGF1dG8gY29sb25JdGVyYXRvciA9IGl0ZXJhdG9yOworICAgIGFkdmFuY2UoaXRlcmF0b3IsIGNv
bG9uSXRlcmF0b3IpOworICAgIHVpbnQzMl90IHBvcnQgPSAwOworICAgIGlmIChVTkxJS0VMWShp
dGVyYXRvci5hdEVuZCgpKSkgeworICAgICAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0gY3VycmVu
dFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
b2xvbkl0ZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHNpemVfdCBk
aWdpdENvdW50ID0gMDsKKyAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOworICAgIGZvciAo
OyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgeworICAgICAgICBpZiAoVU5MSUtFTFko
aXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjb2xvbkl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIGlmIChpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkgeworICAgICAgICAgICAgaWYgKCppdGVy
YXRvciA9PSAnMCcgJiYgIWRpZ2l0Q291bnQpCisgICAgICAgICAgICAgICAgbGVhZGluZ1plcm9z
ID0gdHJ1ZTsKKyAgICAgICAgICAgICsrZGlnaXRDb3VudDsKKyAgICAgICAgICAgIHBvcnQgPSBw
b3J0ICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgICAgICBpZiAocG9ydCA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmIChwb3J0ICYmIGxlYWRpbmdaZXJvcykKKyAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGNvbG9uSXRlcmF0b3IpOworICAgIAorICAgIGlmICghcG9ydCAmJiBkaWdpdENvdW50ID4gMSkK
KyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworCisgICAgQVNTRVJUKHBv
cnQgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKKyAgICBpZiAoVU5MSUtFTFkoZGVm
YXVsdFBvcnRGb3JQcm90b2NvbChwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCkp
ID09IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSkpCisgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjb2xvbkl0ZXJhdG9yKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignOicpOworICAgICAgICBBU1NFUlQocG9ydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQx
Nl90Pjo6bWF4KCkpOworICAgICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQxNl90
PihzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOworICAgIH0KKworICAgIHVuc2lnbmVkIHBv
cnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOworICAgIHJldHVybiB0cnVlOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OnBhcnNl
SG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7
CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoKml0ZXJhdG9yID09ICc6JykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaXRl
cmF0b3IgPT0gJ1snKSB7CisgICAgICAgIGF1dG8gaXB2NkVuZCA9IGl0ZXJhdG9yOworICAgICAg
ICB3aGlsZSAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCAhPSAnXScpCisgICAgICAgICAg
ICArK2lwdjZFbmQ7CisgICAgICAgIGlmIChpcHY2RW5kLmF0RW5kKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjZIb3N0KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGl0ZXJhdG9yLCBpcHY2RW5kKSkpIHsKKyAg
ICAgICAgICAgIHNlcmlhbGl6ZUlQdjYoYWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgICAgIGlm
ICghaXB2NkVuZC5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgYWR2YW5jZShpcHY2RW5kKTsK
KyAgICAgICAgICAgICAgICBpZiAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCA9PSAnOicp
IHsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9u
KGlwdjZFbmQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGlwdjZFbmQp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBj
dXJyZW50UG9zaXRpb24oaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpZiAoIW1fdXJsSXNTcGVjaWFsKSB7CisgICAgICAgIGZvciAoOyAhaXRl
cmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlz
VGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRl
cmF0b3IpICYmICppdGVyYXRvciAhPSAnJScpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGl0
ZXJhdG9yKTsKKyAgICAgICAgfQorICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9z
aXRpb24oaXRlcmF0b3IpOworICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOworICAgIH0KKyAg
ICAKKyAgICBpZiAoTElLRUxZKCFtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSkpIHsKKyAgICAg
ICAgYXV0byBob3N0SXRlcmF0b3IgPSBpdGVyYXRvcjsKKyAgICAgICAgZm9yICg7ICFpdGVyYXRv
ci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUo
Kml0ZXJhdG9yKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICgq
aXRlcmF0b3IgPT0gJzonKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYg
KGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRI
b3N0KGhvc3RJdGVyYXRvciwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaG9zdEl0
ZXJhdG9yLCBpdGVyYXRvcikpOworICAgICAgICBpZiAoYWRkcmVzcykgeworICAgICAgICAgICAg
c2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGlmIChpdGVyYXRv
ci5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOworICAgICAgICB9CisgICAgICAgIGlmIChhZGRyZXNz
LmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgZm9yICg7IGhvc3RJdGVyYXRvciAhPSBpdGVyYXRvcjsgKytob3N0
SXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaG9z
dEl0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEl0ZXJh
dG9yKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoKmhvc3RJdGVyYXRvcikpKQorICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0SXRlcmF0b3IpOworICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmhvc3RJdGVyYXRvcikpOworICAgICAgICB9Cisg
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAg
ICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VQ
b3J0KGhvc3RJdGVyYXRvcik7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50
UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7CisgICAgICAgIG1fdXJsLm1f
cG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKKyAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGl0ZXJhdG9yOworICAgIAorICAgIExDaGFy
QnVmZmVyIHV0ZjhFbmNvZGVkOworICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVy
YXRvcikgeworICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkp
IHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJKCppdGVyYXRvcikp
KQorICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisKKyAgICAgICAgaWYg
KCFVX0lTX1VOSUNPREVfQ0hBUigqaXRlcmF0b3IpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKKyAgICAgICAgaW50MzJf
dCBvZmZzZXQgPSAwOworICAgICAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCAq
aXRlcmF0b3IpOworICAgICAgICB1dGY4RW5jb2RlZC5hcHBlbmQoYnVmZmVyLCBvZmZzZXQpOwor
ICAgIH0KKyAgICBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUodXRm
OEVuY29kZWQuZGF0YSgpLCB1dGY4RW5jb2RlZC5zaXplKCksIGhvc3RCZWdpbik7CisgICAgU3Ry
aW5nIGRvbWFpbiA9IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJj
ZW50RGVjb2RlZC5zaXplKCkpOworICAgIGlmIChkb21haW4uaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcocGVyY2VudERlY29kZWQu
ZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpKQorICAgICAgICBzeW50YXhWaW9sYXRpb24o
aG9zdEJlZ2luKTsKKyAgICBhdXRvIGFzY2lpRG9tYWluID0gZG9tYWluVG9BU0NJSSgqZG9tYWlu
LmltcGwoKSwgaG9zdEJlZ2luKTsKKyAgICBpZiAoIWFzY2lpRG9tYWluIHx8IGhhc0ZvcmJpZGRl
bkhvc3RDb2RlUG9pbnQoYXNjaWlEb21haW4udmFsdWUoKSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW5WYWx1ZSA9IGFzY2lpRG9tYWluLnZhbHVl
KCk7CisgICAgY29uc3QgTENoYXIqIGFzY2lpRG9tYWluQ2hhcmFjdGVycyA9IGFzY2lpRG9tYWlu
VmFsdWUuZGF0YSgpOworCisgICAgYXV0byBhZGRyZXNzID0gcGFyc2VJUHY0SG9zdChob3N0QmVn
aW4sIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPihhc2NpaURvbWFpblZhbHVlLmJlZ2luKCksIGFz
Y2lpRG9tYWluVmFsdWUuZW5kKCkpKTsKKyAgICBpZiAoYWRkcmVzcykgeworICAgICAgICBzZXJp
YWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1
cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7
CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Cisg
ICAgfQorICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVy
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihhc2Np
aURvbWFpbkNoYXJhY3RlcnMsIGFzY2lpRG9tYWluVmFsdWUuc2l6ZSgpKTsKKyAgICBtX3VybC5t
X2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgIGlmICghaXRlcmF0b3Iu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gMDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RkOjpvcHRpb25hbDxT
dHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQoreworICAg
IGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CisgICAgaWYgKHV0Zjgu
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgYXV0byBwZXJjZW50
RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHV0
ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
cGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOworfQorCisvLyBo
dHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsZW5jb2RlZC1wYXJzZXIKK2F1
dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+IFVS
TEVuY29kZWRGb3JtCit7CisgICAgVVJMRW5jb2RlZEZvcm0gb3V0cHV0OworICAgIGZvciAoU3Ry
aW5nVmlldyBieXRlcyA6IGlucHV0LnNwbGl0KCcmJykpIHsKKyAgICAgICAgYXV0byBlcXVhbElu
ZGV4ID0gYnl0ZXMuZmluZCgnPScpOworICAgICAgICBpZiAoZXF1YWxJbmRleCA9PSBub3RGb3Vu
ZCkgeworICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy50b1N0cmlu
ZygpLnJlcGxhY2UoJysnLCAweDIwKSk7CisgICAgICAgICAgICBpZiAobmFtZSkKKyAgICAgICAg
ICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShi
eXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgy
MCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGZvcm1VUkxEZWNvZGUoYnl0ZXMuc3Vic3Ry
aW5nKGVxdWFsSW5kZXggKyAxKS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7CisgICAg
ICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSkKKyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5k
KHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52YWx1ZSgpIH0pOworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiBvdXRwdXQ7Cit9CisKK3N0YXRpYyB2b2lkIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3Jt
KGNvbnN0IFN0cmluZyYgaW5wdXQsIFZlY3RvcjxMQ2hhcj4mIG91dHB1dCkKK3sKKyAgICBhdXRv
IHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOworICAgIGNvbnN0IGNoYXIqIGRh
dGEgPSB1dGY4LmRhdGEoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHV0ZjgubGVuZ3Ro
KCk7ICsraSkgeworICAgICAgICBjb25zdCBjaGFyIGJ5dGUgPSBkYXRhW2ldOworICAgICAgICBp
ZiAoYnl0ZSA9PSAweDIwKQorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgweDJCKTsKKyAgICAg
ICAgZWxzZSBpZiAoYnl0ZSA9PSAweDJBCisgICAgICAgICAgICB8fCBieXRlID09IDB4MkQKKyAg
ICAgICAgICAgIHx8IGJ5dGUgPT0gMHgyRQorICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHgzMCAm
JiBieXRlIDw9IDB4MzkpCisgICAgICAgICAgICB8fCAoYnl0ZSA+PSAweDQxICYmIGJ5dGUgPD0g
MHg1QSkKKyAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHg1RgorICAgICAgICAgICAgfHwgKGJ5dGUg
Pj0gMHg2MSAmJiBieXRlIDw9IDB4N0EpKSAvLyBGSVhNRTogUHV0IHRoZXNlIGluIHRoZSBjaGFy
YWN0ZXJDbGFzc1RhYmxlIHRvIGF2b2lkIGJyYW5jaGVzLgorICAgICAgICAgICAgb3V0cHV0LmFw
cGVuZChieXRlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUo
Ynl0ZSwgb3V0cHV0KTsKKyAgICB9Cit9CisgICAgCitTdHJpbmcgVVJMUGFyc2VyOjpzZXJpYWxp
emUoY29uc3QgVVJMRW5jb2RlZEZvcm0mIHR1cGxlcykKK3sKKyAgICBpZiAodHVwbGVzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxMQ2hhcj4gb3V0cHV0Owor
ICAgIGZvciAoYXV0byYgdHVwbGUgOiB0dXBsZXMpIHsKKyAgICAgICAgaWYgKCFvdXRwdXQuaXNF
bXB0eSgpKQorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgnJicpOworICAgICAgICBzZXJpYWxp
emVVUkxFbmNvZGVkRm9ybSh0dXBsZS5rZXksIG91dHB1dCk7CisgICAgICAgIG91dHB1dC5hcHBl
bmQoJz0nKTsKKyAgICAgICAgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0odHVwbGUudmFsdWUsIG91
dHB1dCk7CisgICAgfQorICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUob3V0cHV0KSk7
Cit9CisKK2NvbnN0IFVJRE5BJiBVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJh
bnNjb2RlcigpCit7CisgICAgc3RhdGljIFVJRE5BKiBlbmNvZGVyOworICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewor
ICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOworICAgICAgICAvLyBXYXJu
aW5nOiBQbGVhc2UgY29udGFjdCBhIFdlYktpdEdUSysgZGV2ZWxvcGVyIGlmIGNoYW5naW5nIHRo
ZXNlIGZsYWdzLgorICAgICAgICAvLyBUaGV5IHNob3VsZCBiZSBzeW5jZWQgd2l0aCBlcGh5X3Vy
aV9kZWNvZGUoKSBpbiBlcGh5LXVyaS1oZWxwZXJzLmMuCisgICAgICAgIGVuY29kZXIgPSB1aWRu
YV9vcGVuVVRTNDYoVUlETkFfQ0hFQ0tfQklESSB8IFVJRE5BX0NIRUNLX0NPTlRFWFRKIHwgVUlE
TkFfTk9OVFJBTlNJVElPTkFMX1RPX1VOSUNPREUgfCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9f
QVNDSUksICZlcnJvcik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmNvZGVyKTsKKyAgICB9KTsKKyAgICByZXR1cm4g
KmVuY29kZXI7Cit9CisKK2Jvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwm
IGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVk
ICVkICVzIiwKKyAgICAgICAgYS5tX2lzVmFsaWQsCisgICAgICAgIGEubV9jYW5ub3RCZUFCYXNl
VVJMLAorICAgICAgICBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKKyAgICAgICAgYS5tX3Nj
aGVtZUVuZCwKKyAgICAgICAgYS5tX3VzZXJTdGFydCwKKyAgICAgICAgYS5tX3VzZXJFbmQsCisg
ICAgICAgIGEubV9wYXNzd29yZEVuZCwKKyAgICAgICAgYS5tX2hvc3RFbmQsCisgICAgICAgIGEu
bV9ob3N0RW5kICsgYS5tX3BvcnRMZW5ndGgsCisgICAgICAgIGEubV9wYXRoQWZ0ZXJMYXN0U2xh
c2gsCisgICAgICAgIGEubV9wYXRoRW5kLAorICAgICAgICBhLm1fcXVlcnlFbmQsCisgICAgICAg
IGEubV9zdHJpbmcudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgYi5tX2lzVmFsaWQsCisgICAgICAg
IGIubV9jYW5ub3RCZUFCYXNlVVJMLAorICAgICAgICBiLm1fcHJvdG9jb2xJc0luSFRUUEZhbWls
eSwKKyAgICAgICAgYi5tX3NjaGVtZUVuZCwKKyAgICAgICAgYi5tX3VzZXJTdGFydCwKKyAgICAg
ICAgYi5tX3VzZXJFbmQsCisgICAgICAgIGIubV9wYXNzd29yZEVuZCwKKyAgICAgICAgYi5tX2hv
c3RFbmQsCisgICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5ndGgsCisgICAgICAgIGIu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCisgICAgICAgIGIubV9wYXRoRW5kLAorICAgICAgICBiLm1f
cXVlcnlFbmQsCisgICAgICAgIGIubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1
cm4gYS5tX3N0cmluZyA9PSBiLm1fc3RyaW5nCisgICAgICAgICYmIGEubV9pc1ZhbGlkID09IGIu
bV9pc1ZhbGlkCisgICAgICAgICYmIGEubV9jYW5ub3RCZUFCYXNlVVJMID09IGIubV9jYW5ub3RC
ZUFCYXNlVVJMCisgICAgICAgICYmIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID09IGIubV9w
cm90b2NvbElzSW5IVFRQRmFtaWx5CisgICAgICAgICYmIGEubV9zY2hlbWVFbmQgPT0gYi5tX3Nj
aGVtZUVuZAorICAgICAgICAmJiBhLm1fdXNlclN0YXJ0ID09IGIubV91c2VyU3RhcnQKKyAgICAg
ICAgJiYgYS5tX3VzZXJFbmQgPT0gYi5tX3VzZXJFbmQKKyAgICAgICAgJiYgYS5tX3Bhc3N3b3Jk
RW5kID09IGIubV9wYXNzd29yZEVuZAorICAgICAgICAmJiBhLm1faG9zdEVuZCA9PSBiLm1faG9z
dEVuZAorICAgICAgICAmJiBhLm1fcG9ydExlbmd0aCA9PSBiLm1fcG9ydExlbmd0aAorICAgICAg
ICAmJiBhLm1fcGF0aEFmdGVyTGFzdFNsYXNoID09IGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gKKyAg
ICAgICAgJiYgYS5tX3BhdGhFbmQgPT0gYi5tX3BhdGhFbmQKKyAgICAgICAgJiYgYS5tX3F1ZXJ5
RW5kID09IGIubV9xdWVyeUVuZDsKK30KKworYm9vbCBVUkxQYXJzZXI6OmludGVybmFsVmFsdWVz
Q29uc2lzdGVudChjb25zdCBVUkwmIHVybCkKK3sKKyAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5k
IDw9IHVybC5tX3VzZXJTdGFydAorICAgICAgICAmJiB1cmwubV91c2VyU3RhcnQgPD0gdXJsLm1f
dXNlckVuZAorICAgICAgICAmJiB1cmwubV91c2VyRW5kIDw9IHVybC5tX3Bhc3N3b3JkRW5kCisg
ICAgICAgICYmIHVybC5tX3Bhc3N3b3JkRW5kIDw9IHVybC5tX2hvc3RFbmQKKyAgICAgICAgJiYg
dXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGggPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoCisgICAgICAgICYmIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSB1cmwubV9wYXRoRW5k
CisgICAgICAgICYmIHVybC5tX3BhdGhFbmQgPD0gdXJsLm1fcXVlcnlFbmQKKyAgICAgICAgJiYg
dXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1fc3RyaW5nLmxlbmd0aCgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5oIGIvU291cmNl
L1dURi93dGYvVVJMUGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWUyNWI1NDAyMjM0MGE5ZTg4YmVkOGNj
ZjE3MDAzOTI3NzdmZTcyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTFBh
cnNlci5oCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgorCitzdHJ1Y3QgVUlETkE7CisKK25hbWVzcGFjZSBXVEYgewor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjbGFzcyBDb2RlUG9pbnRJdGVyYXRv
cjsKKworY2xhc3MgVVJMUGFyc2VyIHsKK3B1YmxpYzoKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgYWxsVmFsdWVzRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGludGVybmFsVmFsdWVzQ29uc2lzdGVudChj
b25zdCBVUkwmKTsKKyAgICAKKyAgICB1c2luZyBVUkxFbmNvZGVkRm9ybSA9IFZlY3RvcjxXVEY6
OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgVVJMRW5jb2RlZEZvcm0gcGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBzZXJpYWxpemUoY29uc3QgVVJMRW5j
b2RlZEZvcm0mKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBpc1NwZWNp
YWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1heWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0
IFN0cmluZyYgc2NoZW1lKTsKKworICAgIHN0YXRpYyBjb25zdCBVSUROQSYgaW50ZXJuYXRpb25h
bERvbWFpbk5hbWVUcmFuc2NvZGVyKCk7CisgICAgc3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5j
b2RlU2V0KFVDaGFyKTsKKworcHJpdmF0ZToKKyAgICBVUkxQYXJzZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgVVJMJiA9IHsgfSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiA9IG51bGxwdHIpOworICAg
IFVSTCByZXN1bHQoKSB7IHJldHVybiBtX3VybDsgfQorCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CisgICAgZnJp
ZW5kIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5n
Vmlldyk7CisgICAgZnJpZW5kIGNsYXNzIFVSTDsKKworICAgIFVSTCBtX3VybDsKKyAgICBWZWN0
b3I8TENoYXI+IG1fYXNjaWlCdWZmZXI7CisgICAgYm9vbCBtX3VybElzU3BlY2lhbCB7IGZhbHNl
IH07CisgICAgYm9vbCBtX3VybElzRmlsZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hvc3RIYXNQ
ZXJjZW50T3JOb25BU0NJSSB7IGZhbHNlIH07CisgICAgU3RyaW5nIG1faW5wdXRTdHJpbmc7Cisg
ICAgY29uc3Qgdm9pZCogbV9pbnB1dEJlZ2luIHsgbnVsbHB0ciB9OworCisgICAgYm9vbCBtX2Rp
ZFNlZVN5bnRheFZpb2xhdGlvbiB7IGZhbHNlIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgZGVmYXVsdElubGluZUJ1ZmZlclNpemUgPSAyMDQ4OworICAgIHVzaW5nIExDaGFyQnVmZmVy
ID0gVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT47CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUq
LCBjb25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTFRleHRFbmNvZGlu
ZyopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2VBdXRo
b3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gYm9vbCBwYXJzZVBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKwor
ICAgIHZvaWQgZmFpbHVyZSgpOworICAgIGVudW0gY2xhc3MgUmVwb3J0U3ludGF4VmlvbGF0aW9u
IHsgTm8sIFllcyB9OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9y
dFN5bnRheFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9s
YXRpb246Olllcz4KKyAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGl0ZXJhdG9yKSB7IGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgcmVwb3J0U3ludGF4Vmlv
bGF0aW9uPihpdGVyYXRvciwgaXRlcmF0b3IpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uID0gUmVwb3J0U3ludGF4VmlvbGF0aW9u
OjpZZXM+CisgICAgdm9pZCBhZHZhbmNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
JiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3lu
dGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGJvb2wgdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHN5
bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNQZXJjZW50RW5jb2Rl
ZERvdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gYm9vbCBpc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlz
RG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgc2hvdWxkQ29weUZpbGVV
UkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGJvb2wgY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBVQ2hhcjMyKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4pOworICAgIGJvb2wgaXNMb2NhbGhvc3QoU3RyaW5nVmlldyk7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb25zdW1lU2luZ2xlRG90UGF0aFNl
Z21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc2l6ZV90IGN1cnJlbnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+
IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlKTsKKyAg
ICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lk
IHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8TENo
YXJCdWZmZXI+IGRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYsIGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBMQ2hhckJ1ZmZlciBwZXJjZW50
RGVjb2RlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgc3Rh
dGljIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlu
cHV0KTsKKyAgICBzdGF0aWMgYm9vbCBoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IExD
aGFyQnVmZmVyJik7CisgICAgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90KTsKKyAgICB2
b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoVUNoYXIzMik7CisgICAgdm9pZCBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IHNpemUpIHsgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFyYWN0ZXJzKSwgc2l6ZSk7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGVuY29kZU5vblVURjhR
dWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYs
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB2b2lkIGNvcHlBU0NJSVN0
cmluZ1VudGlsKGNvbnN0IFN0cmluZyYsIHNpemVfdCBsZW5ndGgpOworICAgIGJvb2wgY29weUJh
c2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJik7CisgICAgU3RyaW5nVmlldyBwYXJzZWRE
YXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpOworICAgIFVDaGFyIHBhcnNlZERh
dGFWaWV3KHNpemVfdCBwb3NpdGlvbik7CisKKyAgICB1c2luZyBJUHY0QWRkcmVzcyA9IHVpbnQz
Ml90OworICAgIHZvaWQgc2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyk7CisgICAgZW51bSBjbGFz
cyBJUHY0UGFyc2luZ0Vycm9yOworICAgIGVudW0gY2xhc3MgSVB2NFBpZWNlUGFyc2luZ0Vycm9y
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24s
IHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPElQdjRBZGRyZXNzLCBJUHY0UGFyc2lu
Z0Vycm9yPiBwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGVGb3JTeW50YXhWaW9sYXRpb24+JiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4p
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPHVpbnQzMl90
LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gcGFyc2VJUHY0UGllY2UoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBib29sJiBzeW50YXhWaW9sYXRpb24pOworICAg
IHVzaW5nIElQdjZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFy
c2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJ
UHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRk
cmVzcz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4pOworICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsK
KyAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOworCisgICAgZW51bSBjbGFzcyBV
UkxQYXJ0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29weVVS
TFBhcnRzVW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyomKTsKKyAgICBzdGF0
aWMgc2l6ZV90IHVybExlbmd0aFVudGlsUGFydChjb25zdCBVUkwmLCBVUkxQYXJ0KTsKKyAgICB2
b2lkIHBvcFBhdGgoKTsKKyAgICBib29sIHNob3VsZFBvcFBhdGgodW5zaWduZWQpOworfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwIGIvU291cmNl
L1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2NjY1YThkMGZmYjk2MzQ5
MjA2NDUzMTcwNWJjMWNiOTMzYmI3OGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9jZi9DRlVSTEV4dHJhcy5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDRlVSTEV4dHJhcy5oIgorCisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7
CisKK1JldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplLCBDRlVSTFJlZiBiYXNlVVJMKQoreworICAgIC8vIE5PVEU6IFdl
IHVzZSBVVEYtOCBoZXJlIHNpbmNlIHRoaXMgZW5jb2RpbmcgaXMgdXNlZCB3aGVuIGNvbXB1dGlu
ZyBzdHJpbmdzIHdoZW4gcmV0dXJuaW5nIFVSTCBjb21wb25lbnRzCisgICAgLy8gKGUuZyBjYWxs
cyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50
IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAorICAgIC8vIGNvdWxkIGVpdGhlciBi
ZSBhIG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZmZXJlbnQgZW5jb2RpbmcsIGxp
a2UgU2hpZnQtSklTLCBzbyB3ZSBmYWxsIGJhY2sKKyAgICAvLyBvbnRvIHVzaW5nIElTTyBMYXRp
bi0xIGluIHRob3NlIGNhc2VzLgorICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVzdWx0ID0gYWRv
cHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBiYXNlVVJM
LCB0cnVlKSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZV
UkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJ
bnQ4Kj4oZGF0YSksIHNpemUsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBiYXNlVVJMLCB0
cnVlKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJl
ZiB1cmwsIFVSTENoYXJCdWZmZXImIHJlc3VsdCkKK3sKKyAgICBDRkluZGV4IGJ5dGVzTGVuZ3Ro
ID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIDAsIDApOworICAgIHJlc3VsdC5yZXNpemUoYnl0ZXNMZW5n
dGgpOworICAgIENGSW5kZXggZmluYWxMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgcmVpbnRl
cnByZXRfY2FzdDxVSW50OCo+KHJlc3VsdC5kYXRhKCkpLCBieXRlc0xlbmd0aCk7CisgICAgQVNT
RVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5ndGgpOworfQor
Cit2b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmIHVybCwgQ1N0cmluZyYgcmVzdWx0KQoreworICAg
IENGSW5kZXggYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7CisgICAgY2hh
ciogYnl0ZXM7CisgICAgcmVzdWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChieXRlc0xl
bmd0aCwgYnl0ZXMpOworICAgIENGSW5kZXggZmluYWxMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVy
bCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KGJ5dGVzKSwgYnl0ZXNMZW5ndGgpOworICAgIEFT
U0VSVF9VTlVTRUQoZmluYWxMZW5ndGgsIGZpbmFsTGVuZ3RoID09IGJ5dGVzTGVuZ3RoKTsKK30K
KworYm9vbCBpc0NGVVJMU2FtZU9yaWdpbihDRlVSTFJlZiBjZlVSTCwgY29uc3QgVVJMJiB1cmwp
Cit7CisgICAgQVNTRVJUKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOworCisgICAgaWYg
KHVybC5oYXNVc2VybmFtZSgpIHx8IHVybC5oYXNQYXNzd29yZCgpKQorICAgICAgICByZXR1cm4g
cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybCwgVVJMIHsgY2ZVUkwgfSk7CisKKyAgICBV
UkxDaGFyQnVmZmVyIGJ5dGVzOworICAgIGdldFVSTEJ5dGVzKGNmVVJMLCBieXRlcyk7CisgICAg
U3RyaW5nVmlldyBjZlVSTFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihi
eXRlcy5kYXRhKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnl0ZXMuc2l6ZSgpKSB9OworCisg
ICAgaWYgKCF1cmwuaGFzUGF0aCgpKQorICAgICAgICByZXR1cm4gU3RyaW5nVmlldyB7IHVybC5z
dHJpbmcoKSB9ID09IGNmVVJMU3RyaW5nOworCisgICAgYXV0byB1cmxXaXRob3V0UGF0aCA9IFN0
cmluZ1ZpZXcgeyB1cmwuc3RyaW5nKCkgfS5zdWJzdHJpbmcoMCwgdXJsLnBhdGhTdGFydCgpICsg
MSk7CisgICAgcmV0dXJuIGNmVVJMU3RyaW5nLnN0YXJ0c1dpdGgodXJsV2l0aG91dFBhdGgpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oIGIvU291
cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWM0OWMzZjM3ZjY1MDBl
OTYzYWVkNWIwNGQwOThmMzg1MWYwZWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvY2YvQ0ZVUkxFeHRyYXMuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDRlVSTEV4dHJhc19oCisjZGVmaW5lIENGVVJMRXh0cmFzX2gKKworI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFVSTDsKK3R5cGVkZWYgVmVjdG9yPGNo
YXIsIDUxMj4gVVJMQ2hhckJ1ZmZlcjsKKworV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxD
RlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QsIENGVVJM
UmVmIGJhc2VVUkwgPSAwKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGdldFVSTEJ5dGVzKENG
VVJMUmVmLCBVUkxDaGFyQnVmZmVyJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRVUkxC
eXRlcyhDRlVSTFJlZiwgQ1N0cmluZyYpOworCitib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJM
UmVmLCBjb25zdCBVUkwmKTsKKworfQorCisjZW5kaWYgLy8gQ0ZVUkxFeHRyYXNfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwIGIvU291cmNlL1dURi93dGYvY2YvVVJM
Q0YuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg5NTkxZTJiMzg0ZWJiMjA2ZDUyMjI3ZWM5Y2JmOWU3NWQ5NTgy
NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAKQEAgLTAs
MCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgor
CisjaW5jbHVkZSAiQ0ZVUkxFeHRyYXMuaCIKKyNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9DRlVSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK1VSTDo6VVJMKENGVVJMUmVmIHVybCkKK3sKKyAgICBp
ZiAoIXVybCkgeworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPwor
ICAgIENTdHJpbmcgdXJsQnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7Cisg
ICAgVVJMUGFyc2VyIHBhcnNlcih1cmxCeXRlcy5kYXRhKCkpOworICAgICp0aGlzID0gcGFyc2Vy
LnJlc3VsdCgpOworfQorCisjaWYgIVVTRShGT1VOREFUSU9OKQorUmV0YWluUHRyPENGVVJMUmVm
PiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQg
dGhpcyByZXR1cm4gZm9yIGludmFsaWQgVVJMcz8KKyAgICAvLyBDdXJyZW50bHkgaXQgdGhyb3dz
IGF3YXkgdGhlIGhpZ2ggYnl0ZXMgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBpbiB0
aGF0IGNhc2UsCisgICAgLy8gd2hpY2ggaXMgY2xlYXJseSB3cm9uZy4KKyAgICBVUkxDaGFyQnVm
ZmVyIGJ1ZmZlcjsKKyAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsKKyAgICBhdXRvIGNmVVJMID0g
Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworCisg
ICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZV
UkwuZ2V0KCksICp0aGlzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
Y2ZVUkw7Cit9CisjZW5kaWYKKworU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAor
eworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkwgPSBjcmVhdGVDRlVSTCgpOworICAgIGlm
ICghY2ZVUkwpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworI2lmIFBMQVRGT1JNKFdJTikK
KyAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlOwor
I2Vsc2UKKyAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHls
ZTsKKyNlbmRpZgorICAgIHJldHVybiBhZG9wdENGKENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKGNm
VVJMLmdldCgpLCBwYXRoU3R5bGUpKS5nZXQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJM
RXh0cmFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM0MzJlNGIzM2QyNDg3ZGI3MGZmNGQzOWIwYmQ0M2U5Zjg5
YWExYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFz
LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAx
MiwgMjAxNCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworQGNsYXNzIE5TU3RyaW5nOworQGNsYXNz
IE5TVVJMOworCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5n
ICp1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAq
VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAqLCBOU1VSTCAqYmFzZVVSTCk7IC8vIFJl
dHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwg
KlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhOU1VSTCAqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1N0
cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwg
bWVhbnMgZXJyb3IuCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1l
KE5TU3RyaW5nICopOyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgorV1RGX0VY
UE9SVF9QUklWQVRFIE5TVVJMICpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21w
b25lbnQoTlNVUkwgKiwgQ0ZVUkxDb21wb25lbnRUeXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBO
U1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICosIE5TVVJMICpiYXNlVVJMKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBOU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBOU0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICosIENGVVJMQ29tcG9u
ZW50VHlwZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJp
bmdEZXByZWNhdGVkKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsKKworTlNSYW5nZSByYW5n
ZU9mVVJMU2NoZW1lKE5TU3RyaW5nICopOworV1RGX0VYUE9SVF9QUklWQVRFIEJPT0wgaXNVc2Vy
VmlzaWJsZVVSTChOU1N0cmluZyAqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBCT09MIGxvb2tzTGlr
ZUFic29sdXRlVVJMKE5TU3RyaW5nICopOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dURi93dGYv
Y29jb2EvTlNVUkxFeHRyYXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTZmYzhmMTY4ZGUwNTZjNWIyYTI5NzIx
ZjBiZDdiOWY2ZjEyMzQ0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29h
L05TVVJMRXh0cmFzLm1tCkBAIC0wLDAgKzEsMTIzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCAiTlNVUkxFeHRy
YXMuaCIKKworI2ltcG9ydCAiQ0ZVUkxFeHRyYXMuaCIKKyNpbXBvcnQgIlVSTFBhcnNlci5oIgor
I2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvSGV4TnVtYmVyLmg+CisjaW1w
b3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHVuaWNvZGUvdWNoYXIuaD4KKyNpbXBv
cnQgPHVuaWNvZGUvdWlkbmEuaD4KKyNpbXBvcnQgPHVuaWNvZGUvdXNjcmlwdC5oPgorCisvLyBO
ZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KKy8vIEZv
ciBob3N0IG5hbWVzIGJpZ2dlciB0aGFuIHRoaXMsIHdlIHdvbid0IGRvIElETiBlbmNvZGluZywg
d2hpY2ggaXMgYWxtb3N0IGNlcnRhaW5seSBPSy4KKyNkZWZpbmUgSE9TVF9OQU1FX0JVRkZFUl9M
RU5HVEggMjA0OAorI2RlZmluZSBVUkxfQllURVNfQlVGRkVSX0xFTkdUSCAyMDQ4CisKK3R5cGVk
ZWYgdm9pZCAoKiBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbikoTlNTdHJpbmcgKiwgTlNSYW5n
ZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYpOworCitzdGF0aWMgdWludDMyX3QgSUROU2Ny
aXB0V2hpdGVMaXN0WyhVU0NSSVBUX0NPREVfTElNSVQgKyAzMSkgLyAzMl07CisKK25hbWVzcGFj
ZSBXVEYgeworCitzdGF0aWMgYm9vbCBpc0FybWVuaWFuTG9va2FsaWtlQ2hhcmFjdGVyKFVDaGFy
MzIgY29kZVBvaW50KQoreworICAgIHJldHVybiBjb2RlUG9pbnQgPT0gMHgwNTQ4IHx8IGNvZGVQ
b2ludCA9PSAweDA1NEQgfHwgY29kZVBvaW50ID09IDB4MDU3OCB8fCBjb2RlUG9pbnQgPT0gMHgw
NTdEOworfQorCitzdGF0aWMgYm9vbCBpc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKFVDaGFyMzIg
Y29kZVBvaW50KQoreworICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAg
VVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQoY29kZVBvaW50LCAmZXJyb3Ip
OworICAgIGlmIChlcnJvciAhPSBVX1pFUk9fRVJST1IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJn
b3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNjcmlwdHM6ICVkIiwgZXJyb3Ip
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHNjcmlwdCA9PSBV
U0NSSVBUX0FSTUVOSUFOOworfQorCisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGlubGluZSBib29sIGlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKENoYXJhY3RlclR5
cGUgY2hhckNvZGUpCit7CisgICAgaWYgKCFpc0FTQ0lJRGlnaXRPclB1bmN0dWF0aW9uKGNoYXJD
b2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhpbmdzIHRoZSBVUkwgUGFy
c2VyIHJlamVjdHM6CisgICAgc3dpdGNoIChjaGFyQ29kZSkgeworICAgIGNhc2UgJyMnOgorICAg
IGNhc2UgJyUnOgorICAgIGNhc2UgJy8nOgorICAgIGNhc2UgJzonOgorICAgIGNhc2UgJz8nOgor
ICAgIGNhc2UgJ0AnOgorICAgIGNhc2UgJ1snOgorICAgIGNhc2UgJ1xcJzoKKyAgICBjYXNlICdd
JzoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KK30KKworCisKK3N0YXRpYyBCT09MIGlzTG9va2FsaWtlQ2hhcmFjdGVyKHN0
ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQsIFVDaGFyMzIgY2hhckNvZGUp
Cit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiB0cmVhdHMgdGhlIGZvbGxvd2luZyBhcyB1bnNhZmUs
IGxvb2thbGlrZSBjaGFyYWN0ZXJzOgorICAgIC8vIGFueSBub24tcHJpbnRhYmxlIGNoYXJhY3Rl
ciwgYW55IGNoYXJhY3RlciBjb25zaWRlcmVkIGFzIHdoaXRlc3BhY2UsCisgICAgLy8gYW55IGln
bm9yYWJsZSBjaGFyYWN0ZXIsIGFuZCBlbW9qaSBjaGFyYWN0ZXJzIHJlbGF0ZWQgdG8gbG9ja3Mu
CisgICAgCisgICAgLy8gV2UgYWxzbyBjb25zaWRlcmVkIHRoZSBjaGFyYWN0ZXJzIGluIE1vemls
bGEncyBibGFja2xpc3QgPGh0dHA6Ly9rYi5tb3ppbGxhemluZS5vcmcvTmV0d29yay5JRE4uYmxh
Y2tsaXN0X2NoYXJzPi4KKworICAgIC8vIFNvbWUgb2YgdGhlIGNoYXJhY3RlcnMgaGVyZSB3aWxs
IG5ldmVyIGFwcGVhciBvbmNlIElDVSBoYXMgZW5jb2RlZC4KKyAgICAvLyBGb3IgZXhhbXBsZSwg
SUNVIHRyYW5zZm9ybXMgbW9zdCBzcGFjZXMgaW50byBhbiBBU0NJSSBzcGFjZSBhbmQgbW9zdAor
ICAgIC8vIHNsYXNoZXMgaW50byBhbiBBU0NJSSBzb2xpZHVzLiBCdXQgb25lIG9mIHRoZSB0d28g
Y2FsbGVycyB1c2VzIHRoaXMKKyAgICAvLyBvbiBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBub3QgYmVl
biBwcm9jZXNzZWQgYnkgSUNVLCBzbyB0aGV5IGFyZSBuZWVkZWQgaGVyZS4KKyAgICAKKyAgICBp
ZiAoIXVfaXNwcmludChjaGFyQ29kZSkgfHwgdV9pc1VXaGl0ZVNwYWNlKGNoYXJDb2RlKSB8fCB1
X2hhc0JpbmFyeVByb3BlcnR5KGNoYXJDb2RlLCBVQ0hBUl9ERUZBVUxUX0lHTk9SQUJMRV9DT0RF
X1BPSU5UKSkKKyAgICAgICAgcmV0dXJuIFlFUzsKKyAgICAKKyAgICBzd2l0Y2ggKGNoYXJDb2Rl
KSB7CisgICAgICAgIGNhc2UgMHgwMEJDOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIg
Ki8KKyAgICAgICAgY2FzZSAweDAwQkQ6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRiAqLwor
ICAgICAgICBjYXNlIDB4MDBCRTogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTICov
CisgICAgICAgIGNhc2UgMHgwMEVEOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRF
ICovCisgICAgICAgIGNhc2UgMHgwMUMzOiAvKiBMQVRJTiBMRVRURVIgUkVUUk9GTEVYIENMSUNL
ICovCisgICAgICAgIGNhc2UgMHgwMjUxOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgQUxQSEEgKi8K
KyAgICAgICAgY2FzZSAweDAyNjE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgRyAqLwor
ICAgICAgICBjYXNlIDB4MDJEMDogLyogTU9ESUZJRVIgTEVUVEVSIFRSSUFOR1VMQVIgQ09MT04g
Ki8KKyAgICAgICAgY2FzZSAweDAzMzU6IC8qIENPTUJJTklORyBTSE9SVCBTVFJPS0UgT1ZFUkxB
WSAqLworICAgICAgICBjYXNlIDB4MDMzNzogLyogQ09NQklOSU5HIFNIT1JUIFNPTElEVVMgT1ZF
UkxBWSAqLworICAgICAgICBjYXNlIDB4MDMzODogLyogQ09NQklOSU5HIExPTkcgU09MSURVUyBP
VkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwNTg5OiAvKiBBUk1FTklBTiBGVUxMIFNUT1AgKi8K
KyAgICAgICAgY2FzZSAweDA1QjQ6IC8qIEhFQlJFVyBQT0lOVCBISVJJUSAqLworICAgICAgICBj
YXNlIDB4MDVCQzogLyogSEVCUkVXIFBPSU5UIERBR0VTSCBPUiBNQVBJUSAqLworICAgICAgICBj
YXNlIDB4MDVDMzogLyogSEVCUkVXIFBVTkNUVUFUSU9OIFNPRiBQQVNVUSAqLworICAgICAgICBj
YXNlIDB4MDVGNDogLyogSEVCUkVXIFBVTkNUVUFUSU9OIEdFUlNIQVlJTSAqLworICAgICAgICBj
YXNlIDB4MDYwOTogLyogQVJBQklDLUlORElDIFBFUiBNSUxMRSBTSUdOICovCisgICAgICAgIGNh
c2UgMHgwNjBBOiAvKiBBUkFCSUMtSU5ESUMgUEVSIFRFTiBUSE9VU0FORCBTSUdOICovCisgICAg
ICAgIGNhc2UgMHgwNjUwOiAvKiBBUkFCSUMgS0FTUkEgKi8KKyAgICAgICAgY2FzZSAweDA2NjA6
IC8qIEFSQUJJQyBJTkRJQyBESUdJVCBaRVJPICovCisgICAgICAgIGNhc2UgMHgwNjZBOiAvKiBB
UkFCSUMgUEVSQ0VOVCBTSUdOICovCisgICAgICAgIGNhc2UgMHgwNkQ0OiAvKiBBUkFCSUMgRlVM
TCBTVE9QICovCisgICAgICAgIGNhc2UgMHgwNkYwOiAvKiBFWFRFTkRFRCBBUkFCSUMgSU5ESUMg
RElHSVQgWkVSTyAqLworICAgICAgICBjYXNlIDB4MDcwMTogLyogU1lSSUFDIFNVUFJBTElORUFS
IEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MDcwMjogLyogU1lSSUFDIFNVQkxJTkVBUiBG
VUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDA3MDM6IC8qIFNZUklBQyBTVVBSQUxJTkVBUiBD
T0xPTiAqLworICAgICAgICBjYXNlIDB4MDcwNDogLyogU1lSSUFDIFNVQkxJTkVBUiBDT0xPTiAq
LworICAgICAgICBjYXNlIDB4MTczNTogLyogUEhJTElQUElORSBTSU5HTEUgUFVOQ1RVQVRJT04g
Ki8KKyAgICAgICAgY2FzZSAweDFEMDQ6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEMg
Ki8KKyAgICAgICAgY2FzZSAweDFEMEY6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE8g
Ki8KKyAgICAgICAgY2FzZSAweDFEMUM6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFUg
Ki8KKyAgICAgICAgY2FzZSAweDFEMjA6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFYg
Ki8KKyAgICAgICAgY2FzZSAweDFEMjE6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFcg
Ki8KKyAgICAgICAgY2FzZSAweDFEMjI6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFog
Ki8KKyAgICAgICAgY2FzZSAweDFFQ0Q6IC8qIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9U
IEJFTE9XICovCisgICAgICAgIGNhc2UgMHgyMDEwOiAvKiBIWVBIRU4gKi8KKyAgICAgICAgY2Fz
ZSAweDIwMTE6IC8qIE5PTi1CUkVBS0lORyBIWVBIRU4gKi8KKyAgICAgICAgY2FzZSAweDIwMjQ6
IC8qIE9ORSBET1QgTEVBREVSICovCisgICAgICAgIGNhc2UgMHgyMDI3OiAvKiBIWVBIRU5BVElP
TiBQT0lOVCAqLworICAgICAgICBjYXNlIDB4MjAzOTogLyogU0lOR0xFIExFRlQtUE9JTlRJTkcg
QU5HTEUgUVVPVEFUSU9OIE1BUksgKi8KKyAgICAgICAgY2FzZSAweDIwM0E6IC8qIFNJTkdMRSBS
SUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4MjA0
MTogLyogQ0FSRVQgSU5TRVJUSU9OIFBPSU5UICovCisgICAgICAgIGNhc2UgMHgyMDQ0OiAvKiBG
UkFDVElPTiBTTEFTSCAqLworICAgICAgICBjYXNlIDB4MjA1MjogLyogQ09NTUVSQ0lBTCBNSU5V
UyBTSUdOICovCisgICAgICAgIGNhc2UgMHgyMTUzOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFRI
SVJEICovCisgICAgICAgIGNhc2UgMHgyMTU0OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIFRISVJE
UyAqLworICAgICAgICBjYXNlIDB4MjE1NTogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSCAq
LworICAgICAgICBjYXNlIDB4MjE1NjogLyogVlVMR0FSIEZSQUNUSU9OIFRXTyBGSUZUSFMgKi8K
KyAgICAgICAgY2FzZSAweDIxNTc6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBGSUZUSFMgKi8K
KyAgICAgICAgY2FzZSAweDIxNTg6IC8qIFZVTEdBUiBGUkFDVElPTiBGT1VSIEZJRlRIUyAqLwor
ICAgICAgICBjYXNlIDB4MjE1OTogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBTSVhUSCAqLworICAg
ICAgICBjYXNlIDB4MjE1QTogLyogVlVMR0FSIEZSQUNUSU9OIEZJVkUgU0lYVEhTICovCisgICAg
ICAgIGNhc2UgMHgyMTVCOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEVJR0hUICovCisgICAgICAg
IGNhc2UgMHgyMTVDOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRUlHSFRIUyAqLworICAgICAg
ICBjYXNlIDB4MjE1RDogLyogVlVMR0FSIEZSQUNUSU9OIEZJVkUgRUlHSFRIUyAqLworICAgICAg
ICBjYXNlIDB4MjE1RTogLyogVlVMR0FSIEZSQUNUSU9OIFNFVkVOIEVJR0hUSFMgKi8KKyAgICAg
ICAgY2FzZSAweDIxNUY6IC8qIEZSQUNUSU9OIE5VTUVSQVRPUiBPTkUgKi8KKyAgICAgICAgY2Fz
ZSAweDIyMTI6IC8qIE1JTlVTIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDIyMTU6IC8qIERJVklT
SU9OIFNMQVNIICovCisgICAgICAgIGNhc2UgMHgyMjE2OiAvKiBTRVQgTUlOVVMgKi8KKyAgICAg
ICAgY2FzZSAweDIyMzY6IC8qIFJBVElPICovCisgICAgICAgIGNhc2UgMHgyMzNGOiAvKiBBUEwg
RlVOQ1RJT05BTCBTWU1CT0wgU0xBU0ggQkFSICovCisgICAgICAgIGNhc2UgMHgyM0FFOiAvKiBJ
TlRFR1JBTCBFWFRFTlNJT04gKi8KKyAgICAgICAgY2FzZSAweDI0NEE6IC8qIE9DUiBET1VCTEUg
QkFDS1NMQVNIICovCisgICAgICAgIGNhc2UgMHgyNTcxOiAvKiBEaXNwbGF5VHlwZTo6Qm94IERS
QVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQgKi8KKyAgICAg
ICAgY2FzZSAweDI1NzI6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09O
QUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVCAqLworICAgICAgICBjYXNlIDB4MjlGNjogLyog
U09MSURVUyBXSVRIIE9WRVJCQVIgKi8KKyAgICAgICAgY2FzZSAweDI5Rjg6IC8qIEJJRyBTT0xJ
RFVTICovCisgICAgICAgIGNhc2UgMHgyQUZCOiAvKiBUUklQTEUgU09MSURVUyBCSU5BUlkgUkVM
QVRJT04gKi8KKyAgICAgICAgY2FzZSAweDJBRkQ6IC8qIERPVUJMRSBTT0xJRFVTIE9QRVJBVE9S
ICovCisgICAgICAgIGNhc2UgMHgyRkYwOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFS
QUNURVIgTEVGVCBUTyBSSUdIVCAqLworICAgICAgICBjYXNlIDB4MkZGMTogLyogSURFT0dSQVBI
SUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEFCT1ZFIFRPIEJFTE9XICovCisgICAgICAgIGNhc2Ug
MHgyRkYyOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgTEVGVCBUTyBNSURE
TEUgQU5EIFJJR0hUICovCisgICAgICAgIGNhc2UgMHgyRkYzOiAvKiBJREVPR1JBUEhJQyBERVND
UklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gTUlERExFIEFORCBCRUxPVyAqLworICAgICAgICBj
YXNlIDB4MkZGNDogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEZVTEwgU1VS
Uk9VTkQgKi8KKyAgICAgICAgY2FzZSAweDJGRjU6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9O
IENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEFCT1ZFICovCisgICAgICAgIGNhc2UgMHgyRkY2OiAv
KiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBCRUxPVyAq
LworICAgICAgICBjYXNlIDB4MkZGNzogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFD
VEVSIFNVUlJPVU5EIEZST00gTEVGVCAqLworICAgICAgICBjYXNlIDB4MkZGODogLyogSURFT0dS
QVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gVVBQRVIgTEVGVCAqLwor
ICAgICAgICBjYXNlIDB4MkZGOTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVS
IFNVUlJPVU5EIEZST00gVVBQRVIgUklHSFQgKi8KKyAgICAgICAgY2FzZSAweDJGRkE6IC8qIElE
RU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIExPV0VSIExFRlQg
Ki8KKyAgICAgICAgY2FzZSAweDJGRkI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJB
Q1RFUiBPVkVSTEFJRCAqLworICAgICAgICBjYXNlIDB4MzAwMjogLyogSURFT0dSQVBISUMgRlVM
TCBTVE9QICovCisgICAgICAgIGNhc2UgMHgzMDA4OiAvKiBMRUZUIEFOR0xFIEJSQUNLRVQgKi8K
KyAgICAgICAgY2FzZSAweDMwMTQ6IC8qIExFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLwor
ICAgICAgICBjYXNlIDB4MzAxNTogLyogUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLwor
ICAgICAgICBjYXNlIDB4MzAzMzogLyogVkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSyBVUFBFUiBI
QUxGICovCisgICAgICAgIGNhc2UgMHgzMDM1OiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJL
IExPV0VSIEhBTEYgKi8KKyAgICAgICAgY2FzZSAweDMyMUQ6IC8qIFBBUkVOVEhFU0laRUQgS09S
RUFOIENIQVJBQ1RFUiBPSkVPTiAqLworICAgICAgICBjYXNlIDB4MzIxRTogLyogUEFSRU5USEVT
SVpFRCBLT1JFQU4gQ0hBUkFDVEVSIE8gSFUgKi8KKyAgICAgICAgY2FzZSAweDMzQUU6IC8qIFNR
VUFSRSBSQUQgT1ZFUiBTICovCisgICAgICAgIGNhc2UgMHgzM0FGOiAvKiBTUVVBUkUgUkFEIE9W
RVIgUyBTUVVBUkVEICovCisgICAgICAgIGNhc2UgMHgzM0M2OiAvKiBTUVVBUkUgQyBPVkVSIEtH
ICovCisgICAgICAgIGNhc2UgMHgzM0RGOiAvKiBTUVVBUkUgQSBPVkVSIE0gKi8KKyAgICAgICAg
Y2FzZSAweDA1Qjk6IC8qIEhFQlJFVyBQT0lOVCBIT0xBTSAqLworICAgICAgICBjYXNlIDB4MDVC
QTogLyogSEVCUkVXIFBPSU5UIEhPTEFNIEhBU0VSIEZPUiBWQVYgKi8KKyAgICAgICAgY2FzZSAw
eDA1QzE6IC8qIEhFQlJFVyBQT0lOVCBTSElOIERPVCAqLworICAgICAgICBjYXNlIDB4MDVDMjog
LyogSEVCUkVXIFBPSU5UIFNJTiBET1QgKi8KKyAgICAgICAgY2FzZSAweDA1QzQ6IC8qIEhFQlJF
VyBNQVJLIFVQUEVSIERPVCAqLworICAgICAgICBjYXNlIDB4QTczMTogLyogTEFUSU4gTEVUVEVS
IFNNQUxMIENBUElUQUwgUyAqLworICAgICAgICBjYXNlIDB4QTc3MTogLyogTEFUSU4gU01BTEwg
TEVUVEVSIERVTSAqLworICAgICAgICBjYXNlIDB4QTc4OTogLyogTU9ESUZJRVIgTEVUVEVSIENP
TE9OICovCisgICAgICAgIGNhc2UgMHhGRTE0OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVS
VElDQUwgU0VNSUNPTE9OICovCisgICAgICAgIGNhc2UgMHhGRTE1OiAvKiBQUkVTRU5UQVRJT04g
Rk9STSBGT1IgVkVSVElDQUwgRVhDTEFNQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4RkUz
RjogLyogUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQU5HTEUgQlJBQ0tFVCAq
LworICAgICAgICBjYXNlIDB4RkU1RDogLyogU01BTEwgTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFD
S0VUICovCisgICAgICAgIGNhc2UgMHhGRTVFOiAvKiBTTUFMTCBSSUdIVCBUT1JUT0lTRSBTSEVM
TCBCUkFDS0VUICovCisgICAgICAgIGNhc2UgMHhGRjBFOiAvKiBGVUxMV0lEVEggRlVMTCBTVE9Q
ICovCisgICAgICAgIGNhc2UgMHhGRjBGOiAvKiBGVUxMIFdJRFRIIFNPTElEVVMgKi8KKyAgICAg
ICAgY2FzZSAweEZGNjE6IC8qIEhBTEZXSURUSCBJREVPR1JBUEhJQyBGVUxMIFNUT1AgKi8KKyAg
ICAgICAgY2FzZSAweEZGRkM6IC8qIE9CSkVDVCBSRVBMQUNFTUVOVCBDSEFSQUNURVIgKi8KKyAg
ICAgICAgY2FzZSAweEZGRkQ6IC8qIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAqLworICAgICAgICBj
YXNlIDB4MUY1MEY6IC8qIExPQ0sgV0lUSCBJTksgUEVOICovCisgICAgICAgIGNhc2UgMHgxRjUx
MDogLyogQ0xPU0VEIExPQ0sgV0lUSCBLRVkgKi8KKyAgICAgICAgY2FzZSAweDFGNTExOiAvKiBL
RVkgKi8KKyAgICAgICAgY2FzZSAweDFGNTEyOiAvKiBMT0NLICovCisgICAgICAgIGNhc2UgMHgx
RjUxMzogLyogT1BFTiBMT0NLICovCisgICAgICAgICAgICByZXR1cm4gWUVTOworICAgICAgICBj
YXNlIDB4MDMwNzogLyogQ09NQklOSU5HIERPVCBBQk9WRSAqLworICAgICAgICAgICAgcmV0dXJu
IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDIzNyAvKiBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVT
UyBKICovCisgICAgICAgICAgICAgICAgfHwgcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMTMxIC8q
IExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEkgKi8KKyAgICAgICAgICAgICAgICB8fCBwcmV2
aW91c0NvZGVQb2ludCA9PSAweDA1RDU7IC8qIEhFQlJFVyBMRVRURVIgVkFWICovCisgICAgICAg
IGNhc2UgMHgwNTQ4OiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBWTyAqLworICAgICAgICBj
YXNlIDB4MDU0RDogLyogQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0VIICovCisgICAgICAgIGNh
c2UgMHgwNTc4OiAvKiBBUk1FTklBTiBTTUFMTCBMRVRURVIgVk8gKi8KKyAgICAgICAgY2FzZSAw
eDA1N0Q6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBTRUggKi8KKyAgICAgICAgICAgIHJldHVy
biBwcmV2aW91c0NvZGVQb2ludAorICAgICAgICAgICAgICAgICYmICFpc0FTQ0lJRGlnaXRPclZh
bGlkSG9zdENoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgpKQorICAgICAgICAgICAg
ICAgICYmICFpc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVl
KCkpOworICAgICAgICBjYXNlICcuJzoKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0NvZGVQb2ludAorICAgICAgICAg
ICAgICAgICYmIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQu
dmFsdWUoKSkKKyAgICAgICAgICAgICAgICAmJiAhKGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIo
Y2hhckNvZGUpIHx8IGlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKGNoYXJDb2RlKSk7
CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3aGl0ZUxpc3RJRE5TY3JpcHQoY29uc3QgY2hhciog
c2NyaXB0TmFtZSkKK3sKKyAgICBpbnQzMl90IHNjcmlwdCA9IHVfZ2V0UHJvcGVydHlWYWx1ZUVu
dW0oVUNIQVJfU0NSSVBULCBzY3JpcHROYW1lKTsKKyAgICBpZiAoc2NyaXB0ID49IDAgJiYgc2Ny
aXB0IDwgVVNDUklQVF9DT0RFX0xJTUlUKSB7CisgICAgICAgIHNpemVfdCBpbmRleCA9IHNjcmlw
dCAvIDMyOworICAgICAgICB1aW50MzJfdCBtYXNrID0gMSA8PCAoc2NyaXB0ICUgMzIpOworICAg
ICAgICBJRE5TY3JpcHRXaGl0ZUxpc3RbaW5kZXhdIHw9IG1hc2s7CisgICAgfQorfQorCitzdGF0
aWMgQk9PTCByZWFkSUROU2NyaXB0V2hpdGVMaXN0RmlsZShOU1N0cmluZyAqZmlsZW5hbWUpCit7
CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgRklMRSAqZmls
ZSA9IGZvcGVuKFtmaWxlbmFtZSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dLCAiciIpOworICAg
IGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIE5POworICAgIAorICAgIC8vIFJlYWQgYSB3b3Jk
IGF0IGEgdGltZS4KKyAgICAvLyBBbGxvdyBjb21tZW50cywgc3RhcnRpbmcgd2l0aCAjIGNoYXJh
Y3RlciB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgorICAgIHdoaWxlICgxKSB7CisgICAgICAgIC8v
IFNraXAgYSBjb21tZW50IGlmIHByZXNlbnQuCisgICAgICAgIGlmIChmc2NhbmYoZmlsZSwgIiAj
JSpbXlxuXHJdJSpbXG5ccl0iKSA9PSBFT0YpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
CisgICAgICAgIC8vIFJlYWQgYSBzY3JpcHQgbmFtZSBpZiBwcmVzZW50LgorICAgICAgICBjaGFy
IHdvcmRbMzNdOworICAgICAgICBpbnQgcmVzdWx0ID0gZnNjYW5mKGZpbGUsICIgJTMyW14jIFx0
XG5ccl0lKlteIyBcdFxuXHJdICIsIHdvcmQpOworICAgICAgICBpZiAocmVzdWx0ID09IEVPRikK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAxKSB7
CisgICAgICAgICAgICAvLyBHb3QgYSB3b3JkLCBtYXAgdG8gc2NyaXB0IGNvZGUgYW5kIHB1dCBp
dCBpbnRvIHRoZSBhcnJheS4KKyAgICAgICAgICAgIHdoaXRlTGlzdElETlNjcmlwdCh3b3JkKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBmY2xvc2UoZmlsZSk7CisgICAgcmV0dXJuIFlFUzsKK30K
Kworc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KGNvbnN0IFVD
aGFyICpidWZmZXIsIGludDMyX3QgbGVuZ3RoKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNl
X3QgZmxhZzsKKyAgICBkaXNwYXRjaF9vbmNlKCZmbGFnLCBeeworICAgICAgICAvLyBSZWFkIHdo
aXRlIGxpc3QgZnJvbSBsaWJyYXJ5LgorICAgICAgICBOU0FycmF5ICpkaXJzID0gTlNTZWFyY2hQ
YXRoRm9yRGlyZWN0b3JpZXNJbkRvbWFpbnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU0FsbERvbWFp
bnNNYXNrLCBZRVMpOworICAgICAgICBpbnQgbnVtRGlycyA9IFtkaXJzIGNvdW50XTsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1EaXJzOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChy
ZWFkSUROU2NyaXB0V2hpdGVMaXN0RmlsZShbW2RpcnMgb2JqZWN0QXRJbmRleDppXSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJRE5TY3JpcHRXaGl0ZUxpc3QudHh0Il0pKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBjaGFyKiBkZWZh
dWx0SUROU2NyaXB0V2hpdGVMaXN0WzIwXSA9IHsKKyAgICAgICAgICAgICJDb21tb24iLAorICAg
ICAgICAgICAgIkluaGVyaXRlZCIsCisgICAgICAgICAgICAiQXJhYmljIiwKKyAgICAgICAgICAg
ICJBcm1lbmlhbiIsCisgICAgICAgICAgICAiQm9wb21vZm8iLAorICAgICAgICAgICAgIkNhbmFk
aWFuX0Fib3JpZ2luYWwiLAorICAgICAgICAgICAgIkRldmFuYWdhcmkiLAorICAgICAgICAgICAg
IkRlc2VyZXQiLAorICAgICAgICAgICAgIkd1amFyYXRpIiwKKyAgICAgICAgICAgICJHdXJtdWto
aSIsCisgICAgICAgICAgICAiSGFuZ3VsIiwKKyAgICAgICAgICAgICJIYW4iLAorICAgICAgICAg
ICAgIkhlYnJldyIsCisgICAgICAgICAgICAiSGlyYWdhbmEiLAorICAgICAgICAgICAgIkthdGFr
YW5hX09yX0hpcmFnYW5hIiwKKyAgICAgICAgICAgICJLYXRha2FuYSIsCisgICAgICAgICAgICAi
TGF0aW4iLAorICAgICAgICAgICAgIlRhbWlsIiwKKyAgICAgICAgICAgICJUaGFpIiwKKyAgICAg
ICAgICAgICJZaSIsCisgICAgICAgIH07CisgICAgICAgIGZvciAoY29uc3QgY2hhciogc2NyaXB0
TmFtZSA6IGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3QpCisgICAgICAgICAgICB3aGl0ZUxpc3RJ
RE5TY3JpcHQoc2NyaXB0TmFtZSk7CisgICAgfSk7CisgICAgCisgICAgaW50MzJfdCBpID0gMDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50OworICAgIHdoaWxl
IChpIDwgbGVuZ3RoKSB7CisgICAgICAgIFVDaGFyMzIgYzsKKyAgICAgICAgVTE2X05FWFQoYnVm
ZmVyLCBpLCBsZW5ndGgsIGMpCisgICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJS
T1I7CisgICAgICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9IHVzY3JpcHRfZ2V0U2NyaXB0KGMsICZl
cnJvcik7CisgICAgICAgIGlmIChlcnJvciAhPSBVX1pFUk9fRVJST1IpIHsKKyAgICAgICAgICAg
IExPR19FUlJPUigiZ290IElDVSBlcnJvciB3aGlsZSB0cnlpbmcgdG8gbG9vayBhdCBzY3JpcHRz
OiAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoc2NyaXB0IDwgMCkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJnb3QgbmVnYXRpdmUg
bnVtYmVyIGZvciBzY3JpcHQgY29kZSBmcm9tIElDVTogJWQiLCBzY3JpcHQpOworICAgICAgICAg
ICAgcmV0dXJuIE5POworICAgICAgICB9CisgICAgICAgIGlmIChzY3JpcHQgPj0gVVNDUklQVF9D
T0RFX0xJTUlUKQorICAgICAgICAgICAgcmV0dXJuIE5POworCisgICAgICAgIHNpemVfdCBpbmRl
eCA9IHNjcmlwdCAvIDMyOworICAgICAgICB1aW50MzJfdCBtYXNrID0gMSA8PCAoc2NyaXB0ICUg
MzIpOworICAgICAgICBpZiAoIShJRE5TY3JpcHRXaGl0ZUxpc3RbaW5kZXhdICYgbWFzaykpCisg
ICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAgIAorICAgICAgICBpZiAoaXNMb29rYWxpa2VD
aGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQsIGMpKQorICAgICAgICAgICAgcmV0dXJuIE5POwor
ICAgICAgICBwcmV2aW91c0NvZGVQb2ludCA9IGM7CisgICAgfQorICAgIHJldHVybiBZRVM7Cit9
CisKK3N0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMo
Y29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgsIGNvbnN0IFdURjo6RnVuY3Rpb248
Ym9vbChVQ2hhcik+JiBjaGFyYWN0ZXJJc0FsbG93ZWQpCit7CisgICAgQVNTRVJUKGxlbmd0aCA+
IDApOworCisgICAgZm9yIChpbnQzMl90IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IC0taSkgewor
ICAgICAgICBVQ2hhciBjaCA9IGJ1ZmZlcltpXTsKKyAgICAgICAgCisgICAgICAgIGlmIChjaGFy
YWN0ZXJJc0FsbG93ZWQoY2gpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAg
ICAgICAvLyBPbmx5IGNoZWNrIHRoZSBzZWNvbmQgbGV2ZWwgZG9tYWluLiBMb3dlciBsZXZlbCBy
ZWdpc3RyYXJzIG1heSBoYXZlIGRpZmZlcmVudCBydWxlcy4KKyAgICAgICAgaWYgKGNoID09ICcu
JykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2RlZmluZSBDSEVDS19SVUxFU19JRl9TVUZG
SVhfTUFUQ0hFUyhzdWZmaXgsIGZ1bmN0aW9uKSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyBj
b25zdCBpbnQzMl90IHN1ZmZpeExlbmd0aCA9IHNpemVvZihzdWZmaXgpIC8gc2l6ZW9mKHN1ZmZp
eFswXSk7IFwKKyAgICAgICAgaWYgKGxlbmd0aCA+IHN1ZmZpeExlbmd0aCAmJiAwID09IG1lbWNt
cChidWZmZXIgKyBsZW5ndGggLSBzdWZmaXhMZW5ndGgsIHN1ZmZpeCwgc2l6ZW9mKHN1ZmZpeCkp
KSBcCisgICAgICAgICAgICByZXR1cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlU
TERSdWxlcyhidWZmZXIsIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgZnVuY3Rpb24pOyBcCisgICAg
fQorCitzdGF0aWMgYm9vbCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKFVDaGFyIGNoKQor
eworICAgIC8vIE9ubHkgbW9kZXJuIFJ1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMg
YXJlIGFsbG93ZWQuCisgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8
fCBjaCA9PSAweDA0NTEgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Cit9CisKK3N0
YXRpYyBCT09MIGFsbENoYXJhY3RlcnNBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVm
ZmVyLCBpbnQzMl90IGxlbmd0aCkKK3sKKyAgICAvLyBTa2lwIHRyYWlsaW5nIGRvdCBmb3Igcm9v
dCBkb21haW4uCisgICAgaWYgKGJ1ZmZlcltsZW5ndGggLSAxXSA9PSAnLicpCisgICAgICAgIGxl
bmd0aC0tOworCisgICAgLy8gaHR0cDovL2NjdGxkLnJ1L2ZpbGVzL3BkZi9kb2NzL3J1bGVzX3J1
LXJmLnBkZgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1JGW10gPSB7CisgICAgICAg
ICcuJywKKyAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAg
ICAgMHgwNDQ0ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKKyAgICB9OworICAgIENIRUNL
X1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljUkYsIGlzUnVzc2lhbkRvbWFpbk5hbWVD
aGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDovL3J1c25hbWVzLnJ1L3J1bGVzLnBsCisgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUlVTW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAg
MHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDQzLCAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgVQorICAgICAgICAweDA0NDEgIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBFUworICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3ly
aWxsaWNSVVMsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDov
L3J1LmZhaXRpZC5vcmcvcHJvamVjdHMvbW9zY293L2RvY3VtZW50cy9tb3NrdmEvaWRuCisgICAg
c3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTU9TS1ZBW10gPSB7CisgICAgICAgICcuJywKKyAg
ICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNF
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAgICAgICAweDA0NDEsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBFUworICAgICAgICAweDA0M0EsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBLQQorICAgICAgICAweDA0MzIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBWRQorICAgICAg
ICAweDA0MzAgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgfTsKKyAgICBDSEVDS19S
VUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY01PU0tWQSwgaXNSdXNzaWFuRG9tYWluTmFt
ZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vd3d3LmRvdGRldGkucnUvZm9ydXNlci9kb2Nz
L3JlZ3J1bGVzLnBocAorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY0RFVElbXSA9IHsK
KyAgICAgICAgJy4nLAorICAgICAgICAweDA0MzQsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBE
RQorICAgICAgICAweDA0MzUsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBJRQorICAgICAgICAw
eDA0NDIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgICAgICAweDA0MzggIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBJCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhf
TUFUQ0hFUyhjeXJpbGxpY0RFVEksIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisg
ICAgLy8gaHR0cDovL2NvcmVuaWMub3JnIC0gcnVsZXMgbm90IHB1Ymxpc2hlZC4gVGhlIHdvcmQg
aXMgUnVzc2lhbiwgc28gb25seSBhbGxvd2luZyBSdXNzaWFuIGF0IHRoaXMgdGltZSwKKyAgICAv
LyBhbHRob3VnaCB3ZSBtYXkgbmVlZCB0byByZXZpc2UgdGhlIGNoZWNrcyBpZiB0aGlzIGVuZHMg
dXAgYmVpbmcgdXNlZCB3aXRoIG90aGVyIGxhbmd1YWdlcyBzcG9rZW4gaW4gUnVzc2lhLgorICAg
IHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY09OTEFZTltdID0geworICAgICAgICAnLicsCisg
ICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAgICAgMHgwNDNE
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICAgICAgMHgwNDNCLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRUwKKyAgICAgICAgMHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgQQorICAgICAgICAweDA0MzksIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCisg
ICAgICAgIDB4MDQzRCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCisgICAgfTsKKyAgICBD
SEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY09OTEFZTiwgaXNSdXNzaWFuRG9t
YWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBzYW1lIGFz
IGFib3ZlLgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1NBWVRbXSA9IHsKKyAgICAg
ICAgJy4nLAorICAgICAgICAweDA0NDEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUworICAg
ICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzOSwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKKyAgICAgICAgMHgwNDQyICAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgVEUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9N
QVRDSEVTKGN5cmlsbGljU0FZVCwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAg
ICAvLyBodHRwOi8vcGlyLm9yZy9wcm9kdWN0cy9vcHItZG9tYWluLyAtIHJ1bGVzIG5vdCBwdWJs
aXNoZWQuIEFjY29yZGluZyB0byB0aGUgcmVnaXN0cnkgc2l0ZSwKKyAgICAvLyB0aGUgaW50ZW5k
ZWQgYXVkaWVuY2UgaXMgIlJ1c3NpYW4gYW5kIG90aGVyIFNsYXZpYy1zcGVha2luZyBtYXJrZXRz
Ii4KKyAgICAvLyBDaHJvbWUgYXBwZWFycyB0byBvbmx5IGFsbG93IFJ1c3NpYW4sIHNvIHN0aWNr
aW5nIHdpdGggdGhhdCBmb3Igbm93LgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY09S
R1tdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIE8KKyAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAg
ICAgICAgMHgwNDMzICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCisgICAgfTsKKyAgICBD
SEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY09SRywgaXNSdXNzaWFuRG9tYWlu
TmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vY2N0bGQuYnkvcnVsZXMuaHRtbAorICAg
IHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY0JFTFtdID0geworICAgICAgICAnLicsCisgICAg
ICAgIDB4MDQzMSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCisgICAgICAgIDB4MDQzNSwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCisgICAgICAgIDB4MDQzQiAgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEVMCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hF
UyhjeXJpbGxpY0JFTCwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gUnVzc2lhbiBhbmQgQnll
bG9ydXNzaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAg
ICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8
fCBjaCA9PSAweDA0NTYgfHwgY2ggPT0gMHgwNDVFIHx8IGNoID09IDB4MjAxOSB8fCBpc0FTQ0lJ
RGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly93d3cubmlj
Lmt6L2RvY3MvcG9yeWFkb2tfdm5lZHJlbml5YV9rYXpfcnUucGRmCisgICAgc3RhdGljIGNvbnN0
IFVDaGFyIGN5cmlsbGljS0FaW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDlCLCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKKyAgICAgICAgMHgwNDMw
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQorICAgICAgICAweDA0MzcgIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBaRQorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENI
RVMoY3lyaWxsaWNLQVosIFtdKFVDaGFyIGNoKSB7CisgICAgICAgIC8vIEthemFraCBsZXR0ZXJz
LCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAw
eDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEQ5IHx8
IGNoID09IDB4MDQ5MyB8fCBjaCA9PSAweDA0OUIgfHwgY2ggPT0gMHgwNEEzIHx8IGNoID09IDB4
MDRFOSB8fCBjaCA9PSAweDA0QjEgfHwgY2ggPT0gMHgwNEFGIHx8IGNoID09IDB4MDRCQiB8fCBj
aCA9PSAweDA0NTYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisK
KyAgICAvLyBodHRwOi8vdWFuaWMubmV0L2RvY3MvZG9jdW1lbnRzLXVrci9SdWxlcyUyMG9mJTIw
VUtSX3Y0LjAucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljVUtSW10gPSB7Cisg
ICAgICAgICcuJywKKyAgICAgICAgMHgwNDQzLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQor
ICAgICAgICAweDA0M0EsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICAgICAweDA0
NDAgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNf
SUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNVS1IsIFtdKFVDaGFyIGNoKSB7CisgICAgICAgIC8v
IFJ1c3NpYW4gYW5kIFVrcmFpbmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxs
b3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBj
aCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNDkxIHx8IGNoID09IDB4MDQwNCB8fCBjaCA9PSAweDA0
NTYgfHwgY2ggPT0gMHgwNDU3IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAg
IH0pOworCisgICAgLy8gaHR0cDovL3d3dy5ybmlkcy5ycy9kYXRhL0RPS1VNRU5USS9pZG4tc3Ji
LXBvbGljeS10ZXJtc29mdXNlLXYxLjQtZW5nLnBkZgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBj
eXJpbGxpY1NSQltdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIEVTCisgICAgICAgIDB4MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEVSCisgICAgICAgIDB4MDQzMSAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCisgICAg
fTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1NSQiwgW10oVUNo
YXIgY2gpIHsKKyAgICAgICAgLy8gU2VyYmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBh
cmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDM4
KSB8fCAoY2ggPj0gMHgwNDNBICYmIGNoIDw9IDB4MDQ0OCkgfHwgY2ggPT0gMHgwNDUyIHx8IGNo
ID09IDB4MDQ1OCB8fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1
QiB8fCBjaCA9PSAweDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAg
fSk7CisKKyAgICAvLyBodHRwOi8vbWFybmV0Lm1rL2RvYy9wcmF2aWxuaWstbWstbWtkLnBkZgor
ICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY01LRFtdID0geworICAgICAgICAnLicsCisg
ICAgICAgIDB4MDQzQywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCisgICAgICAgIDB4MDQz
QSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCisgICAgICAgIDB4MDQzNCAgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIERFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFU
Q0hFUyhjeXJpbGxpY01LRCwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gTWFjZWRvbmlhbiBs
ZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChj
aCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDM4KSB8fCAoY2ggPj0gMHgwNDNBICYmIGNoIDw9IDB4
MDQ0OCkgfHwgY2ggPT0gMHgwNDUzIHx8IGNoID09IDB4MDQ1NSB8fCBjaCA9PSAweDA0NTggfHwg
Y2ggPT0gMHgwNDU5IHx8IGNoID09IDB4MDQ1QSB8fCBjaCA9PSAweDA0NUMgfHwgY2ggPT0gMHgw
NDVGIHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8g
aHR0cHM6Ly93d3cubW9uLm1uL2NzLworICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY01P
TltdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzQywgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEVNCisgICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAg
ICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICB9OworICAgIENI
RUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9OLCBbXShVQ2hhciBjaCkgewor
ICAgICAgICAvLyBNb25nb2xpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93
ZWQuCisgICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2gg
PT0gMHgwNDUxIHx8IGNoID09IDB4MDRFOSB8fCBjaCA9PSAweDA0QUYgfHwgaXNBU0NJSURpZ2l0
KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBOb3QgYSBrbm93biB0b3AgbGV2
ZWwgZG9tYWluIHdpdGggc3BlY2lhbCBydWxlcy4KKyAgICByZXR1cm4gTk87Cit9CisKKy8vIFJl
dHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgbm8gbWFwcGluZyBpcyBuZWNlc3NhcnkuCisvLyBJZiBt
YWtlU3RyaW5nIGlzIE5PLCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHNlbGYg
dG8gaW5kaWNhdGUgbWFwcGluZyBpcyBuZWNlc3NhcnkuCisvLyBJZiBtYWtlU3RyaW5nIGlzIFlF
UywgdGhlbiByZXR1cm4gdmFsdWUgaXMgZWl0aGVyIG5pbCBvciB0aGUgbWFwcGVkIHN0cmluZy4K
K3N0YXRpYyBOU1N0cmluZyAqbWFwSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywg
TlNSYW5nZSByYW5nZSwgQk9PTCBlbmNvZGUsIEJPT0wgbWFrZVN0cmluZywgQk9PTCAqZXJyb3Ip
Cit7CisgICAgaWYgKHJhbmdlLmxlbmd0aCA+IEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RIKQorICAg
ICAgICByZXR1cm4gbmlsOworICAgIAorICAgIGlmICghW3N0cmluZyBsZW5ndGhdKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIAorICAgIFVDaGFyIHNvdXJjZUJ1ZmZlcltIT1NUX05BTUVfQlVG
RkVSX0xFTkdUSF07CisgICAgVUNoYXIgZGVzdGluYXRpb25CdWZmZXJbSE9TVF9OQU1FX0JVRkZF
Ul9MRU5HVEhdOworICAgIAorICAgIGlmIChlbmNvZGUgJiYgW3N0cmluZyByYW5nZU9mU3RyaW5n
OkAiJSIgb3B0aW9uczpOU0xpdGVyYWxTZWFyY2ggcmFuZ2U6cmFuZ2VdLmxvY2F0aW9uICE9IE5T
Tm90Rm91bmQpIHsKKyAgICAgICAgTlNTdHJpbmcgKnN1YnN0cmluZyA9IFtzdHJpbmcgc3Vic3Ry
aW5nV2l0aFJhbmdlOnJhbmdlXTsKKyAgICAgICAgc3Vic3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVh
c2UoQ0ZVUkxDcmVhdGVTdHJpbmdCeVJlcGxhY2luZ1BlcmNlbnRFc2NhcGVzKG51bGxwdHIsIChD
RlN0cmluZ1JlZilzdWJzdHJpbmcsIENGU1RSKCIiKSkpOworICAgICAgICBpZiAoc3Vic3RyaW5n
KSB7CisgICAgICAgICAgICBzdHJpbmcgPSBzdWJzdHJpbmc7CisgICAgICAgICAgICByYW5nZSA9
IE5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgaW50IGxlbmd0aCA9IHJhbmdlLmxlbmd0aDsKKyAgICBbc3RyaW5nIGdldENoYXJhY3Rl
cnM6c291cmNlQnVmZmVyIHJhbmdlOnJhbmdlXTsKKyAgICAKKyAgICBVRXJyb3JDb2RlIHVlcnJv
ciA9IFVfWkVST19FUlJPUjsKKyAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBVSURO
QV9JTkZPX0lOSVRJQUxJWkVSOworICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9
IChlbmNvZGUgPyB1aWRuYV9uYW1lVG9BU0NJSSA6IHVpZG5hX25hbWVUb1VuaWNvZGUpKCZVUkxQ
YXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpLCBzb3VyY2VCdWZmZXIs
IGxlbmd0aCwgZGVzdGluYXRpb25CdWZmZXIsIEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RILCAmcHJv
Y2Vzc2luZ0RldGFpbHMsICZ1ZXJyb3IpOworICAgIGlmIChsZW5ndGggJiYgKFVfRkFJTFVSRSh1
ZXJyb3IpIHx8IHByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykpIHsKKyAgICAgICAgKmVycm9yID0g
WUVTOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICAKKyAgICBpZiAobnVtQ2hhcmFj
dGVyc0NvbnZlcnRlZCA9PSBsZW5ndGggJiYgIW1lbWNtcChzb3VyY2VCdWZmZXIsIGRlc3RpbmF0
aW9uQnVmZmVyLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICAKKyAgICBpZiAoIWVuY29kZSAmJiAhYWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVM
aXN0KGRlc3RpbmF0aW9uQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKSAmJiAhYWxsQ2hh
cmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGRlc3RpbmF0aW9uQnVmZmVyLCBudW1DaGFyYWN0ZXJz
Q29udmVydGVkKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gbWFrZVN0
cmluZyA/IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczpkZXN0aW5hdGlvbkJ1ZmZlciBs
ZW5ndGg6bnVtQ2hhcmFjdGVyc0NvbnZlcnRlZF0gOiBzdHJpbmc7Cit9CisKK3N0YXRpYyBCT09M
IGhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1Jhbmdl
IHJhbmdlLCBCT09MICplcnJvcikKK3sKKyAgICByZXR1cm4gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uo
c3RyaW5nLCByYW5nZSwgTk8sIE5PLCBlcnJvcikgIT0gbmlsOworfQorIAorc3RhdGljIEJPT0wg
aG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2Ug
cmFuZ2UsIEJPT0wgKmVycm9yKQoreworICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShz
dHJpbmcsIHJhbmdlLCBZRVMsICBOTywgZXJyb3IpICE9IG5pbDsKK30KKworc3RhdGljIE5TU3Ry
aW5nICpkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJh
bmdlKQoreworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhv
c3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIE5PLCBZRVMsICZlcnJvcik7CisgICAgaWYg
KGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6
IGhvc3Q7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UoTlNT
dHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSkKK3sKKyAgICBCT09MIGVycm9yID0gTk87Cisg
ICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBZ
RVMsIFlFUywgJmVycm9yKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKK30KKworTlNTdHJpbmcgKmRlY29kZUhv
c3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgQk9PTCBlcnJvciA9IE5POworICAgIE5T
U3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgw
LCBbc3RyaW5nIGxlbmd0aF0pLCBOTywgWUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQor
CitOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09M
IGVycm9yID0gTk87CisgICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShz
dHJpbmcsIE5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSksIFlFUywgWUVTLCAmZXJyb3Ip
OworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gIWhvc3Qg
PyBzdHJpbmcgOiBob3N0OworfQorCitzdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRN
YXBwaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4mIGFycmF5LCBCT09MIGVuY29kZSkKK3sKKyAgICAvLyBHZW5lcmFsbHksIHdlIHdh
bnQgdG8gb3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIG9uZSBob3N0IG5hbWUg
dGhhdCBkb2VzIG5vdCBuZWVkIG1hcHBpbmcuCisgICAgLy8gVGhlcmVmb3JlLCB3ZSB1c2Ugbmls
IHRvIGluZGljYXRlIG5vIG1hcHBpbmcgaGVyZSBhbmQgYW4gZW1wdHkgYXJyYXkgdG8gaW5kaWNh
dGUgZXJyb3IuCisKKyAgICBCT09MIGVycm9yID0gTk87CisgICAgQk9PTCBuZWVkc01hcHBpbmcg
PSBlbmNvZGUgPyBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwg
JmVycm9yKSA6IGhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCAm
ZXJyb3IpOworICAgIGlmICghZXJyb3IgJiYgIW5lZWRzTWFwcGluZykKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIGlmICghYXJyYXkpCisgICAgICAgIGFycmF5ID0gYWRvcHROUyhbTlNNdXRh
YmxlQXJyYXkgbmV3XSk7CisKKyAgICBpZiAoIWVycm9yKQorICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOnJhbmdlXV07Cit9CisKK3N0YXRpYyB2b2lkIGNv
bGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFu
Z2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQoreworICAgIHJldHVybiBjb2xs
ZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmluZywgcmFuZ2UsIGFycmF5LCBZRVMpOworfQor
CitzdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWREZWNvZGluZyhOU1N0cmluZyAqc3Ry
aW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKK3sK
KyAgICByZXR1cm4gY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhzdHJpbmcsIHJhbmdlLCBh
cnJheSwgTk8pOworfQorCitzdGF0aWMgdm9pZCBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub01haWxU
b1VSTFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBm
LCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKK3sKKyAgICAvLyBJbiBhIG1haWx0
bzogVVJMLCBob3N0IG5hbWVzIGNvbWUgYWZ0ZXIgYSAnQCcgY2hhcmFjdGVyIGFuZCBlbmQgd2l0
aCBhICc+JyBvciAnLCcgb3IgJz8nIGNoYXJhY3Rlci4KKyAgICAvLyBTa2lwIHF1b3RlZCBzdHJp
bmdzIHNvIHRoYXQgY2hhcmFjdGVycyBpbiB0aGVtIGRvbid0IGNvbmZ1c2UgdXMuCisgICAgLy8g
V2hlbiB3ZSBmaW5kIGEgJz8nIGNoYXJhY3Rlciwgd2UgYXJlIHBhc3QgdGhlIHBhcnQgb2YgdGhl
IFVSTCB0aGF0IGNvbnRhaW5zIGhvc3QgbmFtZXMuCisgICAgCisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3ROYW1lT3JTdHJpbmdTdGFydENo
YXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0
cmluZzpAIlwiQD8iXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hh
cmFjdGVyU2V0Pj4gaG9zdE5hbWVFbmRDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJh
Y3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCI+LD8iXTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gcXVvdGVkU3RyaW5nQ2hhcmFjdGVy
cyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAi
XCJcXCJdOworICAgIAorICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IFtzdHJpbmcgbGVuZ3Ro
XTsKKyAgICBOU1JhbmdlIHJlbWFpbmluZyA9IE5TTWFrZVJhbmdlKDAsIHN0cmluZ0xlbmd0aCk7
CisgICAgCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgLy8gRmluZCBzdGFydCBvZiBob3N0IG5h
bWUgb3Igb2YgcXVvdGVkIHN0cmluZy4KKyAgICAgICAgTlNSYW5nZSBob3N0TmFtZU9yU3RyaW5n
U3RhcnQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhvc3ROYW1lT3JTdHJpbmdT
dGFydENoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107Cisg
ICAgICAgIGlmIChob3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1bmljaGFyIGMgPSBbc3RyaW5nIGNoYXJh
Y3RlckF0SW5kZXg6aG9zdE5hbWVPclN0cmluZ1N0YXJ0LmxvY2F0aW9uXTsKKyAgICAgICAgcmVt
YWluaW5nLmxvY2F0aW9uID0gTlNNYXhSYW5nZShob3N0TmFtZU9yU3RyaW5nU3RhcnQpOworICAg
ICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWluaW5nLmxvY2F0aW9u
OworICAgICAgICAKKyAgICAgICAgaWYgKGMgPT0gJz8nKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKKyAgICAgICAgaWYgKGMgPT0gJ0AnKSB7CisgICAgICAgICAgICAvLyBGaW5kIGVu
ZCBvZiBob3N0IG5hbWUuCisgICAgICAgICAgICB1bnNpZ25lZCBob3N0TmFtZVN0YXJ0ID0gcmVt
YWluaW5nLmxvY2F0aW9uOworICAgICAgICAgICAgTlNSYW5nZSBob3N0TmFtZUVuZCA9IFtzdHJp
bmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdE5hbWVFbmRDaGFyYWN0ZXJzLmdldCgpLmdl
dCgpIG9wdGlvbnM6MCByYW5nZTpyZW1haW5pbmddOworICAgICAgICAgICAgQk9PTCBkb25lOwor
ICAgICAgICAgICAgaWYgKGhvc3ROYW1lRW5kLmxvY2F0aW9uID09IE5TTm90Rm91bmQpIHsKKyAg
ICAgICAgICAgICAgICBob3N0TmFtZUVuZC5sb2NhdGlvbiA9IHN0cmluZ0xlbmd0aDsKKyAgICAg
ICAgICAgICAgICBkb25lID0gWUVTOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICByZW1haW5pbmcubG9jYXRpb24gPSBob3N0TmFtZUVuZC5sb2NhdGlvbjsKKyAgICAgICAg
ICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWluaW5nLmxvY2F0
aW9uOworICAgICAgICAgICAgICAgIGRvbmUgPSBOTzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgLy8gUHJvY2VzcyBob3N0IG5hbWUgcmFuZ2UuCisgICAgICAgICAg
ICBmKHN0cmluZywgTlNNYWtlUmFuZ2UoaG9zdE5hbWVTdGFydCwgaG9zdE5hbWVFbmQubG9jYXRp
b24gLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoZG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvLyBTa2lwIHF1b3RlZCBzdHJpbmcuCisgICAgICAgICAgICBBU1NFUlQoYyA9PSAn
IicpOworICAgICAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgICAgICBOU1JhbmdlIGVz
Y2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21T
ZXQ6cXVvdGVkU3RyaW5nQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVt
YWluaW5nXTsKKyAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5k
LmxvY2F0aW9uID09IE5TTm90Rm91bmQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgICAgIGMgPSBbc3RyaW5nIGNoYXJhY3RlckF0SW5kZXg6ZXNjYXBlZENoYXJh
Y3Rlck9yU3RyaW5nRW5kLmxvY2F0aW9uXTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmcubG9j
YXRpb24gPSBOU01heFJhbmdlKGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCk7CisgICAgICAg
ICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xlbmd0aCAtIHJlbWFpbmluZy5sb2Nh
dGlvbjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgdGhl
IGVuZCBvZiB0aGUgc3RyaW5nLCB0aGVuIGJyZWFrIGZyb20gdGhlIHN0cmluZyBsb29wIGJhY2sg
dG8gdGhlIGhvc3QgbmFtZSBsb29wLgorICAgICAgICAgICAgICAgIGlmIChjID09ICciJykKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgLy8gU2tpcCBlc2NhcGVkIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICBBU1NFUlQoYyA9
PSAnXFwnKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlbWFpbmluZy5sZW5ndGgpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlv
biArPSAxOworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggLT0gMTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgYXBwbHlIb3N0TmFtZUZ1
bmN0aW9uVG9VUkxTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywgU3RyaW5nUmFuZ2VBcHBsaWVyRnVu
Y3Rpb24gZiwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCit7CisgICAgLy8gRmlu
ZCBob3N0bmFtZXMuIFRvbyBiYWQgd2UgY2FuJ3QgdXNlIGFueSByZWFsIFVSTC1wYXJzaW5nIGNv
ZGUgdG8gZG8gdGhpcywKKyAgICAvLyBidXQgd2UgaGF2ZSB0byBkbyBpdCBiZWZvcmUgZG9pbmcg
YWxsIHRoZSAlLWVzY2FwaW5nLCBhbmQgdGhpcyBpcyB0aGUgb25seQorICAgIC8vIGNvZGUgd2Ug
aGF2ZSB0aGF0IHBhcnNlcyBtYWlsdG8gVVJMcyBhbnl3YXkuCisgICAgCisgICAgLy8gTWF5YmUg
d2Ugc2hvdWxkIGltcGxlbWVudCB0aGlzIHVzaW5nIGEgY2hhcmFjdGVyIGJ1ZmZlciBpbnN0ZWFk
PworICAgIAorICAgIGlmIChwcm90b2NvbElzKHN0cmluZywgIm1haWx0byIpKSB7CisgICAgICAg
IGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvTWFpbFRvVVJMU3RyaW5nKHN0cmluZywgZiwgYXJyYXkp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIEZpbmQgdGhlIGhvc3QgbmFt
ZSBpbiBhIGhpZXJhcmNoaWNhbCBVUkwuCisgICAgLy8gSXQgY29tZXMgYWZ0ZXIgYSAiOi8vIiBz
ZXF1ZW5jZSwgd2l0aCBzY2hlbWUgY2hhcmFjdGVycyBwcmVjZWRpbmcuCisgICAgLy8gSWYgZW5k
cyB3aXRoIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBvciBhICI6IiwgIi8iLCBvciBhICI/Ii4KKyAg
ICAvLyBJZiB0aGVyZSBpcyBhICJAIiBjaGFyYWN0ZXIsIHRoZSBob3N0IHBhcnQgaXMganVzdCB0
aGUgcGFydCBhZnRlciB0aGUgIkAiLgorICAgIE5TUmFuZ2Ugc2VwYXJhdG9yUmFuZ2UgPSBbc3Ry
aW5nIHJhbmdlT2ZTdHJpbmc6QCI6Ly8iXTsKKyAgICBpZiAoc2VwYXJhdG9yUmFuZ2UubG9jYXRp
b24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIC8vIENoZWNrIHRo
YXQgYWxsIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSA6Ly8gYXJlIHZhbGlkIHNjaGVtZSBjaGFyYWN0
ZXJzLgorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+
PiBub25TY2hlbWVDaGFyYWN0ZXJzID0gW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRo
Q2hhcmFjdGVyc0luU3RyaW5nOkAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLS4iXSBpbnZlcnRlZFNldF07CisgICAgaWYgKFtz
dHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6bm9uU2NoZW1lQ2hhcmFjdGVycy5nZXQoKS5n
ZXQoKSBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgc2VwYXJhdG9yUmFuZ2UubG9jYXRp
b24pXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
dW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0cmluZyBsZW5ndGhdOworICAgIAorICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBob3N0VGVybWluYXRv
cnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpA
IjovPyMiXTsKKyAgICAKKyAgICAvLyBTdGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLgorICAgIHVu
c2lnbmVkIGF1dGhvcml0eVN0YXJ0ID0gTlNNYXhSYW5nZShzZXBhcmF0b3JSYW5nZSk7CisgICAg
CisgICAgLy8gRmluZCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIuCisgICAgTlNSYW5nZSBob3N0TmFt
ZVRlcm1pbmF0b3IgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhvc3RUZXJtaW5h
dG9ycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoYXV0aG9yaXR5U3Rh
cnQsIHN0cmluZ0xlbmd0aCAtIGF1dGhvcml0eVN0YXJ0KV07CisgICAgdW5zaWduZWQgaG9zdE5h
bWVFbmQgPSBob3N0TmFtZVRlcm1pbmF0b3IubG9jYXRpb24gPT0gTlNOb3RGb3VuZCA/IHN0cmlu
Z0xlbmd0aCA6IGhvc3ROYW1lVGVybWluYXRvci5sb2NhdGlvbjsKKyAgICAKKyAgICAvLyBGaW5k
ICJAIiBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBob3N0IG5hbWUuCisgICAgTlNSYW5nZSB1c2VySW5m
b1Rlcm1pbmF0b3IgPSBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCJAIiBvcHRpb25zOjAgcmFuZ2U6
TlNNYWtlUmFuZ2UoYXV0aG9yaXR5U3RhcnQsIGhvc3ROYW1lRW5kIC0gYXV0aG9yaXR5U3RhcnQp
XTsKKyAgICB1bnNpZ25lZCBob3N0TmFtZVN0YXJ0ID0gdXNlckluZm9UZXJtaW5hdG9yLmxvY2F0
aW9uID09IE5TTm90Rm91bmQgPyBhdXRob3JpdHlTdGFydCA6IE5TTWF4UmFuZ2UodXNlckluZm9U
ZXJtaW5hdG9yKTsKKyAgICAKKyAgICByZXR1cm4gZihzdHJpbmcsIE5TTWFrZVJhbmdlKGhvc3RO
YW1lU3RhcnQsIGhvc3ROYW1lRW5kIC0gaG9zdE5hbWVTdGFydCksIGFycmF5KTsKK30KKworc3Rh
dGljIFJldGFpblB0cjxOU1N0cmluZz4gbWFwSG9zdE5hbWVzKE5TU3RyaW5nICpzdHJpbmcsIEJP
T0wgZW5jb2RlKQoreworICAgIC8vIEdlbmVyYWxseSwgd2Ugd2FudCB0byBvcHRpbWl6ZSBmb3Ig
dGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhvc3QgbmFtZSB0aGF0IGRvZXMgbm90IG5lZWQg
bWFwcGluZy4KKyAgICAKKyAgICBpZiAoZW5jb2RlICYmIFtzdHJpbmcgY2FuQmVDb252ZXJ0ZWRU
b0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ10pCisgICAgICAgIHJldHVybiBzdHJpbmc7
CisgICAgCisgICAgLy8gTWFrZSBhIGxpc3Qgb2YgcmFuZ2VzIHRoYXQgYWN0dWFsbHkgbmVlZCBt
YXBwaW5nLgorICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gaG9zdE5hbWVSYW5nZXM7Cisg
ICAgU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiA9IGVuY29kZSA/IGNvbGxlY3RSYW5nZXNU
aGF0TmVlZEVuY29kaW5nIDogY29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2Rpbmc7CisgICAgYXBw
bHlIb3N0TmFtZUZ1bmN0aW9uVG9VUkxTdHJpbmcoc3RyaW5nLCBmLCBob3N0TmFtZVJhbmdlcyk7
CisgICAgaWYgKCFob3N0TmFtZVJhbmdlcykKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKworICAg
IGlmICghW2hvc3ROYW1lUmFuZ2VzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAK
KyAgICAvLyBEbyB0aGUgbWFwcGluZy4KKyAgICBhdXRvIG11dGFibGVDb3B5ID0gYWRvcHROUyhb
c3RyaW5nIG11dGFibGVDb3B5XSk7CisgICAgdW5zaWduZWQgaSA9IFtob3N0TmFtZVJhbmdlcyBj
b3VudF07CisgICAgd2hpbGUgKGktLSkgeworICAgICAgICBOU1JhbmdlIGhvc3ROYW1lUmFuZ2Ug
PSBbW2hvc3ROYW1lUmFuZ2VzIG9iamVjdEF0SW5kZXg6aV0gcmFuZ2VWYWx1ZV07CisgICAgICAg
IE5TU3RyaW5nICptYXBwZWRIb3N0TmFtZSA9IGVuY29kZSA/IGVuY29kZUhvc3ROYW1lV2l0aFJh
bmdlKHN0cmluZywgaG9zdE5hbWVSYW5nZSkgOiBkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZShzdHJp
bmcsIGhvc3ROYW1lUmFuZ2UpOworICAgICAgICBbbXV0YWJsZUNvcHkgcmVwbGFjZUNoYXJhY3Rl
cnNJblJhbmdlOmhvc3ROYW1lUmFuZ2Ugd2l0aFN0cmluZzptYXBwZWRIb3N0TmFtZV07CisgICAg
fQorICAgIHJldHVybiBtdXRhYmxlQ29weTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU1N0cmlu
Zz4gc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBh
dXRvIHRyaW1tZWQgPSBhZG9wdE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsKKyAgICBDRlN0cmlu
Z1RyaW1XaGl0ZXNwYWNlKChfX2JyaWRnZSBDRk11dGFibGVTdHJpbmdSZWYpdHJpbW1lZC5nZXQo
KSk7CisgICAgcmV0dXJuIHRyaW1tZWQ7Cit9CisKK05TVVJMICpVUkxCeVRydW5jYXRpbmdPbmVD
aGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlIGNv
bXBvbmVudCkKK3sKKyAgICBpZiAoIVVSTCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAg
ICBDRlJhbmdlIGZyYWdSZyA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRn
ZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwgbnVsbHB0cik7CisgICAgaWYgKGZyYWdSZy5sb2Nh
dGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFVSTDsKKworICAgIFZlY3RvcjxV
SW50OCwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IHVybEJ5dGVzKFVSTF9CWVRFU19CVUZGRVJf
TEVOR1RIKTsKKyAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2Ug
Q0ZVUkxSZWYpVVJMLCB1cmxCeXRlcy5kYXRhKCksIHVybEJ5dGVzLnNpemUoKSk7CisgICAgaWYg
KG51bUJ5dGVzID09IC0xKSB7CisgICAgICAgIG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19i
cmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAgICAgICAgdXJsQnl0ZXMuZ3Jvdyhu
dW1CeXRlcyk7CisgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwg
dXJsQnl0ZXMuZGF0YSgpLCBudW1CeXRlcyk7CisgICAgfQorCisgICAgQ0ZVUkxSZWYgcmVzdWx0
ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcu
bG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpOworICAgIGlmICgh
cmVzdWx0KQorICAgICAgICByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1
cmxCeXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBudWxscHRyKTsKKyAgICAgICAgCisgICAgcmV0dXJuIHJlc3VsdCA/IENGQnJpZGdp
bmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7Cit9CisKK3N0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmlu
Z1Jlc291cmNlU3BlY2lmaWVyKE5TVVJMICpVUkwpCit7CisgICAgcmV0dXJuIFVSTEJ5VHJ1bmNh
dGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChVUkwsIGtDRlVSTENvbXBvbmVudFJlc291
cmNlU3BlY2lmaWVyKTsKK30KKworTlNVUkwgKlVSTFdpdGhEYXRhKE5TRGF0YSAqZGF0YSwgTlNV
UkwgKmJhc2VVUkwpCit7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IAorICAgIE5TVVJMICpyZXN1bHQgPSBuaWw7CisgICAgc2l6ZV90IGxlbmd0aCA9IFtkYXRhIGxl
bmd0aF07CisgICAgaWYgKGxlbmd0aCA+IDApIHsKKyAgICAgICAgLy8gd29yayBhcm91bmQgPHJk
YXI6Ly80NDcwNzcxPjogQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyguLiwgVFJVRSkg
ZG9lc24ndCByZW1vdmUgbm9uLXBhdGggY29tcG9uZW50cy4KKyAgICAgICAgYmFzZVVSTCA9IFVS
TEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihiYXNlVVJMKTsKKyAgICAgICAgCisgICAgICAg
IGNvbnN0IFVJbnQ4ICpieXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IFVJbnQ4Kj4oW2RhdGEgYnl0
ZXNdKTsKKyAgICAgICAgCisgICAgICAgIC8vIENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0
ZXMgd291bGQgY29tcGxhaW4gdG8gY29uc29sZSBpZiB3ZSBwYXNzZWQgYSBwYXRoIHRvIGl0Lgor
ICAgICAgICBpZiAoYnl0ZXNbMF0gPT0gJy8nICYmICFiYXNlVVJMKQorICAgICAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICAgICAgCisgICAgICAgIC8vIE5PVEU6IFdlIHVzZSBVVEYtOCBoZXJlIHNp
bmNlIHRoaXMgZW5jb2RpbmcgaXMgdXNlZCB3aGVuIGNvbXB1dGluZyBzdHJpbmdzIHdoZW4gcmV0
dXJuaW5nIFVSTCBjb21wb25lbnRzCisgICAgICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBh
dGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVU
Ri04IHNlcXVlbmNlcywgd2hpY2gKKyAgICAgICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9y
bWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBzaGlmdC1q
aXMsIHNvIHdlIGZhbGwgYmFjaworICAgICAgICAvLyBvbnRvIHVzaW5nIElTTyBMYXRpbiAxIGlu
IHRob3NlIGNhc2VzLgorICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENy
ZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlFUykpOworICAgICAg
ICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENG
VVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NG
U3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChfX2JyaWRnZSBDRlVSTFJlZiliYXNlVVJMLCBZRVMp
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIi
XTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CitzdGF0aWMgTlNEYXRhICpkYXRhV2l0aFVzZXJU
eXBlZFN0cmluZyhOU1N0cmluZyAqc3RyaW5nKQoreworICAgIE5TRGF0YSAqdXNlclR5cGVkRGF0
YSA9IFtzdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAg
IEFTU0VSVCh1c2VyVHlwZWREYXRhKTsKKyAgICAKKyAgICBjb25zdCBVSW50OCogaW5CeXRlcyA9
IHN0YXRpY19jYXN0PGNvbnN0IFVJbnQ4ICo+KFt1c2VyVHlwZWREYXRhIGJ5dGVzXSk7CisgICAg
aW50IGluTGVuZ3RoID0gW3VzZXJUeXBlZERhdGEgbGVuZ3RoXTsKKyAgICBpZiAoIWluTGVuZ3Ro
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIGNoYXIqIG91dEJ5dGVzID0gc3RhdGlj
X2Nhc3Q8Y2hhciAqPihtYWxsb2MoaW5MZW5ndGggKiAzKSk7IC8vIGxhcmdlIGVub3VnaCB0byAl
LWVzY2FwZSBldmVyeSBjaGFyYWN0ZXIKKyAgICBjaGFyKiBwID0gb3V0Qnl0ZXM7CisgICAgaW50
IG91dExlbmd0aCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbkxlbmd0aDsgaSsrKSB7
CisgICAgICAgIFVJbnQ4IGMgPSBpbkJ5dGVzW2ldOworICAgICAgICBpZiAoYyA8PSAweDIwIHx8
IGMgPj0gMHg3ZikgeworICAgICAgICAgICAgKnArKyA9ICclJzsKKyAgICAgICAgICAgICpwKysg
PSB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKKyAgICAgICAgICAgICpwKysgPSBsb3dl
ck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKKyAgICAgICAgICAgIG91dExlbmd0aCArPSAzOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKnArKyA9IGM7CisgICAgICAgICAgICBvdXRM
ZW5ndGgrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gW05TRGF0YSBkYXRh
V2l0aEJ5dGVzTm9Db3B5Om91dEJ5dGVzIGxlbmd0aDpvdXRMZW5ndGhdOyAvLyBhZG9wdHMgb3V0
Qnl0ZXMKK30KKworTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmlu
ZywgTlNVUkwgKm5zVVJMKQoreworICAgIGlmICghc3RyaW5nKQorICAgICAgICByZXR1cm4gbmls
OworCisgICAgYXV0byBtYXBwZWRTdHJpbmcgPSBtYXBIb3N0TmFtZXMoc3RyaW5nQnlUcmltbWlu
Z1doaXRlc3BhY2Uoc3RyaW5nKS5nZXQoKSwgWUVTKTsKKyAgICBpZiAoIW1hcHBlZFN0cmluZykK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIC8vIExldCdzIGNoZWNrIHdoZXRoZXIgdGhlIFVS
TCBpcyBib2d1cy4KKyAgICBVUkwgdXJsIHsgVVJMIHsgbnNVUkwgfSwgbWFwcGVkU3RyaW5nLmdl
dCgpIH07CisgICAgaWYgKCF1cmwuY3JlYXRlQ0ZVUkwoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg2MDU3CisgICAgLy8gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIHVybC5jcmVhdGVDRlVSTCBp
bnN0ZWFkIG9mIHVzaW5nIGRpcmVjdGx5IENGVVJMIHBhcnNpbmcgcm91dGluZXMuCisgICAgTlNE
YXRhICpkYXRhID0gZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcobWFwcGVkU3RyaW5nLmdldCgpKTsK
KyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJd
OworCisgICAgcmV0dXJuIFVSTFdpdGhEYXRhKGRhdGEsIG5zVVJMKTsKK30KKworTlNVUkwgKlVS
TFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKE5TU3RyaW5nICpzdHJpbmcsIE5TVVJMICpV
UkwpCit7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU1VS
TCAqcmVzdWx0ID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhzdHJpbmcsIFVSTCk7CisgICAgaWYg
KCFyZXN1bHQpIHsKKyAgICAgICAgTlNEYXRhICpyZXN1bHREYXRhID0gZGF0YVdpdGhVc2VyVHlw
ZWRTdHJpbmcoc3RyaW5nKTsKKyAgICAgICAgaWYgKCFyZXN1bHREYXRhKQorICAgICAgICAgICAg
cmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07CisgICAgICAgIHJlc3VsdCA9IFVSTFdp
dGhEYXRhKHJlc3VsdERhdGEsIFVSTCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworc3RhdGljIEJPT0wgaGFzUXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKE5TVVJMICpVUkwp
Cit7CisgICAgQ0ZSYW5nZSByYW5nZVdpdGhTZXBhcmF0b3JzOworICAgIENGVVJMR2V0Qnl0ZVJh
bmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGtDRlVSTENvbXBvbmVudFF1
ZXJ5LCAmcmFuZ2VXaXRoU2VwYXJhdG9ycyk7CisgICAgaWYgKHJhbmdlV2l0aFNlcGFyYXRvcnMu
bG9jYXRpb24gIT0ga0NGTm90Rm91bmQgJiYgcmFuZ2VXaXRoU2VwYXJhdG9ycy5sZW5ndGggPT0g
MSkKKyAgICAgICAgcmV0dXJuIFlFUzsKKworICAgIHJldHVybiBOTzsKK30KKworTlNEYXRhICpk
YXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29t
cG9uZW50VHlwZSkKK3sKKyAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RI
PiBhbGxCeXRlc0J1ZmZlcihVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7CisgICAgQ0ZJbmRleCBi
eXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYWxsQnl0
ZXNCdWZmZXIuZGF0YSgpLCBhbGxCeXRlc0J1ZmZlci5zaXplKCkpOworICAgIGlmIChieXRlc0Zp
bGxlZCA9PSAtMSkgeworICAgICAgICBDRkluZGV4IGJ5dGVzVG9BbGxvY2F0ZSA9IENGVVJMR2V0
Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7CisgICAgICAgIGFsbEJ5
dGVzQnVmZmVyLmdyb3coYnl0ZXNUb0FsbG9jYXRlKTsKKyAgICAgICAgYnl0ZXNGaWxsZWQgPSBD
RlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGFsbEJ5dGVzQnVmZmVyLmRhdGEo
KSwgYnl0ZXNUb0FsbG9jYXRlKTsKKyAgICB9CisgICAgCisgICAgY29uc3QgQ0ZVUkxDb21wb25l
bnRUeXBlIGNvbXBsZXRlVVJMID0gKENGVVJMQ29tcG9uZW50VHlwZSktMTsKKyAgICBDRlJhbmdl
IHJhbmdlOworICAgIGlmIChjb21wb25lbnRUeXBlICE9IGNvbXBsZXRlVVJMKSB7CisgICAgICAg
IHJhbmdlID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVm
KVVSTCwgY29tcG9uZW50VHlwZSwgbnVsbHB0cik7CisgICAgICAgIGlmIChyYW5nZS5sb2NhdGlv
biA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgcmFuZ2UubG9jYXRpb24gPSAwOworICAgICAgICByYW5nZS5sZW5ndGggPSBieXRl
c0ZpbGxlZDsKKyAgICB9CisgICAgCisgICAgTlNEYXRhICpjb21wb25lbnREYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmFsbEJ5dGVzQnVmZmVyLmRhdGEoKSArIHJhbmdlLmxvY2F0aW9uIGxl
bmd0aDpyYW5nZS5sZW5ndGhdOyAKKyAgICAKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpieXRl
cyA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oW2NvbXBvbmVudERhdGEgYnl0
ZXNdKTsKKyAgICBOU011dGFibGVEYXRhICpyZXN1bHREYXRhID0gW05TTXV0YWJsZURhdGEgZGF0
YV07CisgICAgLy8gTk9URTogYWRkIGxlYWRpbmcgJz8nIHRvIHF1ZXJ5IHN0cmluZ3Mgbm9uLXpl
cm8gbGVuZ3RoIHF1ZXJ5IHN0cmluZ3MuCisgICAgLy8gTk9URTogcmV0YWluIHF1ZXN0aW9uLW1h
cmsgb25seSBxdWVyeSBzdHJpbmdzLgorICAgIGlmIChjb21wb25lbnRUeXBlID09IGtDRlVSTENv
bXBvbmVudFF1ZXJ5KSB7CisgICAgICAgIGlmIChyYW5nZS5sZW5ndGggPiAwIHx8IGhhc1F1ZXN0
aW9uTWFya09ubHlRdWVyeVN0cmluZyhVUkwpKQorICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBw
ZW5kQnl0ZXM6Ij8iIGxlbmd0aDoxXTsgICAgCisgICAgfQorICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcmFuZ2UubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gYnl0ZXNb
aV07CisgICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICBj
aGFyIGVzY2FwZWRbM107CisgICAgICAgICAgICBlc2NhcGVkWzBdID0gJyUnOworICAgICAgICAg
ICAgZXNjYXBlZFsxXSA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAg
ICAgZXNjYXBlZFsyXSA9IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAg
ICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0ZXM6ZXNjYXBlZCBsZW5ndGg6M107ICAgIAorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgY2hhciBiWzFdOworICAgICAgICAgICAgYlswXSA9IGM7
CisgICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczpiIGxlbmd0aDoxXTsgICAgCisg
ICAgICAgIH0gICAgICAgICAgICAgICAKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdERh
dGE7Cit9CisKK3N0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVl
bnRDaGFyYWN0ZXIoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudCkKK3sK
KyAgICBDRlJhbmdlIHJhbmdlID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJp
ZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50LCAwKTsKKyAgICBpZiAocmFuZ2UubG9jYXRpb24g
PT0ga0NGTm90Rm91bmQpCisgICAgICAgIHJldHVybiBVUkw7CisgICAgCisgICAgLy8gUmVtb3Zl
IG9uZSBzdWJzZXF1ZW50IGNoYXJhY3Rlci4KKyAgICByYW5nZS5sZW5ndGgrKzsKKworICAgIFZl
Y3RvcjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IGJ1ZmZlcihVUkxfQllURVNfQlVG
RkVSX0xFTkdUSCk7CisgICAgQ0ZJbmRleCBudW1CeXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJp
ZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgaWYg
KG51bUJ5dGVzID09IC0xKSB7CisgICAgICAgIG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19i
cmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAgICAgICAgYnVmZmVyLmdyb3cobnVt
Qnl0ZXMpOworICAgICAgICBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1
ZmZlci5kYXRhKCksIG51bUJ5dGVzKTsKKyAgICB9CisgICAgVUludDgqIHVybEJ5dGVzID0gYnVm
ZmVyLmRhdGEoKTsKKyAgICAgICAgCisgICAgaWYgKG51bUJ5dGVzIDwgcmFuZ2UubG9jYXRpb24p
CisgICAgICAgIHJldHVybiBVUkw7CisgICAgaWYgKG51bUJ5dGVzIDwgcmFuZ2UubG9jYXRpb24g
KyByYW5nZS5sZW5ndGgpCisgICAgICAgIHJhbmdlLmxlbmd0aCA9IG51bUJ5dGVzIC0gcmFuZ2Uu
bG9jYXRpb247CisgICAgICAgIAorICAgIG1lbW1vdmUodXJsQnl0ZXMgKyByYW5nZS5sb2NhdGlv
biwgdXJsQnl0ZXMgKyByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCwgbnVtQnl0ZXMgLSBy
YW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCk7CisgICAgCisgICAgQ0ZVUkxSZWYgcmVzdWx0
ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFu
Z2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpOworICAgIGlmICghcmVz
dWx0KQorICAgICAgICByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxC
eXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4x
LCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAKKyAgICByZXR1cm4gcmVzdWx0ID8gQ0ZCcmlk
Z2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKK30KKworTlNVUkwgKlVSTEJ5UmVtb3ZpbmdVc2Vy
SW5mbyhOU1VSTCAqVVJMKQoreworICAgIHJldHVybiBVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5k
U3Vic2VxdWVudENoYXJhY3RlcihVUkwsIGtDRlVSTENvbXBvbmVudFVzZXJJbmZvKTsKK30KKwor
TlNEYXRhICpvcmlnaW5hbFVSTERhdGEoTlNVUkwgKlVSTCkKK3sKKyAgICBVSW50OCAqYnVmZmVy
ID0gKFVJbnQ4ICopbWFsbG9jKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4
IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZm
ZXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBpZiAoYnl0ZXNGaWxsZWQgPT0gLTEp
IHsKKyAgICAgICAgQ0ZJbmRleCBieXRlc1RvQWxsb2NhdGUgPSBDRlVSTEdldEJ5dGVzKChfX2Jy
aWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICBidWZmZXIgPSAoVUludDgg
KilyZWFsbG9jKGJ1ZmZlciwgYnl0ZXNUb0FsbG9jYXRlKTsKKyAgICAgICAgYnl0ZXNGaWxsZWQg
PSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlciwgYnl0ZXNUb0Fs
bG9jYXRlKTsKKyAgICAgICAgQVNTRVJUKGJ5dGVzRmlsbGVkID09IGJ5dGVzVG9BbGxvY2F0ZSk7
CisgICAgfQorICAgIAorICAgIC8vIGJ1ZmZlciBpcyBhZG9wdGVkIGJ5IHRoZSBOU0RhdGEKKyAg
ICBOU0RhdGEgKmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6YnVmZmVyIGxlbmd0
aDpieXRlc0ZpbGxlZCBmcmVlV2hlbkRvbmU6WUVTXTsKKyAgICAKKyAgICBOU1VSTCAqYmFzZVVS
TCA9IChfX2JyaWRnZSBOU1VSTCAqKUNGVVJMR2V0QmFzZVVSTCgoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMKTsKKyAgICBpZiAoYmFzZVVSTCkKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsVVJMRGF0YShV
UkxXaXRoRGF0YShkYXRhLCBiYXNlVVJMKSk7CisgICAgcmV0dXJuIGRhdGE7Cit9CisKK3N0YXRp
YyBDRlN0cmluZ1JlZiBjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoQ0ZT
dHJpbmdSZWYgc3RyaW5nKQoreworICAgIENGSW5kZXggbGVuZ3RoID0gQ0ZTdHJpbmdHZXRMZW5n
dGgoc3RyaW5nKTsKKyAgICBWZWN0b3I8VUNoYXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBz
b3VyY2VCdWZmZXIobGVuZ3RoKTsKKyAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBD
RlJhbmdlTWFrZSgwLCBsZW5ndGgpLCBzb3VyY2VCdWZmZXIuZGF0YSgpKTsKKyAgICAKKyAgICBW
ZWN0b3I8VUNoYXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBvdXRCdWZmZXI7CisgICAgCisg
ICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludDsKKyAgICBDRkluZGV4
IGkgPSAwOworICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7CisgICAgICAgIFVDaGFyMzIgYzsKKyAg
ICAgICAgVTE2X05FWFQoc291cmNlQnVmZmVyLCBpLCBsZW5ndGgsIGMpCisgICAgICAgIAorICAg
ICAgICBpZiAoaXNMb29rYWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQsIGMpKSB7Cisg
ICAgICAgICAgICB1aW50OF90IHV0ZjhCdWZmZXJbNF07CisgICAgICAgICAgICBDRkluZGV4IG9m
ZnNldCA9IDA7CisgICAgICAgICAgICBVQm9vbCBmYWlsdXJlID0gZmFsc2U7CisgICAgICAgICAg
ICBVOF9BUFBFTkQodXRmOEJ1ZmZlciwgb2Zmc2V0LCA0LCBjLCBmYWlsdXJlKQorICAgICAgICAg
ICAgQVNTRVJUKCFmYWlsdXJlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChDRklu
ZGV4IGogPSAwOyBqIDwgb2Zmc2V0OyArK2opIHsKKyAgICAgICAgICAgICAgICBvdXRCdWZmZXIu
YXBwZW5kKCclJyk7CisgICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCh1cHBlck5pYmJs
ZVRvQVNDSUlIZXhEaWdpdCh1dGY4QnVmZmVyW2pdKSk7CisgICAgICAgICAgICAgICAgb3V0QnVm
ZmVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1dGY4QnVmZmVyW2pdKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBVQ2hhciB1dGYxNkJ1
ZmZlclsyXTsKKyAgICAgICAgICAgIENGSW5kZXggb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIFVC
b29sIGZhaWx1cmUgPSBmYWxzZTsKKyAgICAgICAgICAgIFUxNl9BUFBFTkQodXRmMTZCdWZmZXIs
IG9mZnNldCwgMiwgYywgZmFpbHVyZSkKKyAgICAgICAgICAgIEFTU0VSVCghZmFpbHVyZSk7Cisg
ICAgICAgICAgICBmb3IgKENGSW5kZXggaiA9IDA7IGogPCBvZmZzZXQ7ICsraikKKyAgICAgICAg
ICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKHV0ZjE2QnVmZmVyW2pdKTsKKyAgICAgICAgfQorICAg
ICAgICBwcmV2aW91c0NvZGVQb2ludCA9IGM7CisgICAgfQorICAgIAorICAgIHJldHVybiBDRlN0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIG91dEJ1ZmZlci5kYXRhKCksIG91dEJ1
ZmZlci5zaXplKCkpOworfQorCitOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcoTlNVUkwgKlVS
TCkKK3sKKyAgICBOU0RhdGEgKmRhdGEgPSBvcmlnaW5hbFVSTERhdGEoVVJMKTsKKyAgICBjb25z
dCB1bnNpZ25lZCBjaGFyICpiZWZvcmUgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oW2RhdGEgYnl0ZXNdKTsKKyAgICBpbnQgbGVuZ3RoID0gW2RhdGEgbGVuZ3RoXTsKKyAgICAK
KyAgICBib29sIG1heU5lZWRIb3N0TmFtZURlY29kaW5nID0gZmFsc2U7CisgICAgCisgICAgY29u
c3QgdW5zaWduZWQgY2hhciAqcCA9IGJlZm9yZTsKKyAgICBpbnQgYnVmZmVyTGVuZ3RoID0gKGxl
bmd0aCAqIDMpICsgMTsKKyAgICBWZWN0b3I8Y2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+
IGFmdGVyKGJ1ZmZlckxlbmd0aCk7IC8vIGxhcmdlIGVub3VnaCB0byAlLWVzY2FwZSBldmVyeSBj
aGFyYWN0ZXIKKyAgICBjaGFyICpxID0gYWZ0ZXIuZGF0YSgpOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcFtpXTsKKyAg
ICAgICAgLy8gdW5lc2NhcGUgZXNjYXBlIHNlcXVlbmNlcyB0aGF0IGluZGljYXRlIGJ5dGVzIGdy
ZWF0ZXIgdGhhbiAweDdmCisgICAgICAgIGlmIChjID09ICclJyAmJiAoaSArIDEgPCBsZW5ndGgg
JiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDFdKSkgJiYgaSArIDIgPCBsZW5ndGggJiYgaXNBU0NJ
SUhleERpZ2l0KHBbaSArIDJdKSkgeworICAgICAgICAgICAgYXV0byB1ID0gdG9BU0NJSUhleFZh
bHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7CisgICAgICAgICAgICBpZiAodSA+IDB4N2YpIHsKKyAg
ICAgICAgICAgICAgICAvLyB1bmVzY2FwZQorICAgICAgICAgICAgICAgICpxKysgPSB1OworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBkbyBub3QgdW5lc2NhcGUKKyAg
ICAgICAgICAgICAgICAqcSsrID0gcFtpXTsKKyAgICAgICAgICAgICAgICAqcSsrID0gcFtpICsg
MV07CisgICAgICAgICAgICAgICAgKnErKyA9IHBbaSArIDJdOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaSArPSAyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKnErKyA9IGM7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciAieG4tLSIgaW4gYW4gZWZm
aWNpZW50LCBub24tY2FzZS1zZW5zaXRpdmUsIHdheS4KKyAgICAgICAgICAgIGlmIChjID09ICct
JyAmJiBpID49IDMgJiYgIW1heU5lZWRIb3N0TmFtZURlY29kaW5nICYmIChxWy00XSB8IDB4MjAp
ID09ICd4JyAmJiAocVstM10gfCAweDIwKSA9PSAnbicgJiYgcVstMl0gPT0gJy0nKQorICAgICAg
ICAgICAgICAgIG1heU5lZWRIb3N0TmFtZURlY29kaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAqcSA9ICdcMCc7CisgICAgCisgICAgLy8gQ2hlY2sgc3RyaW5nIHRvIHNlZSBpZiBp
dCBjYW4gYmUgY29udmVydGVkIHRvIGRpc3BsYXkgdXNpbmcgVVRGLTggIAorICAgIFJldGFpblB0
cjxOU1N0cmluZz4gcmVzdWx0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFmdGVy
LmRhdGEoKV07CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgLy8gQ291bGQgbm90IGNvbnZl
cnQgdG8gVVRGLTguCisgICAgICAgIC8vIENvbnZlcnQgY2hhcmFjdGVycyBncmVhdGVyIHRoYW4g
MHg3ZiB0byBlc2NhcGUgc2VxdWVuY2VzLgorICAgICAgICAvLyBTaGlmdCBjdXJyZW50IHN0cmlu
ZyB0byB0aGUgZW5kIG9mIHRoZSBidWZmZXIKKyAgICAgICAgLy8gdGhlbiB3ZSB3aWxsIGNvcHkg
YmFjayBieXRlcyB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAKKyAgICAgICAgLy8gYXMgd2Ug
Y29udmVydC4KKyAgICAgICAgaW50IGFmdGVybGVuZ3RoID0gcSAtIGFmdGVyLmRhdGEoKTsKKyAg
ICAgICAgY2hhciAqcCA9IGFmdGVyLmRhdGEoKSArIGJ1ZmZlckxlbmd0aCAtIGFmdGVybGVuZ3Ro
IC0gMTsKKyAgICAgICAgbWVtbW92ZShwLCBhZnRlci5kYXRhKCksIGFmdGVybGVuZ3RoICsgMSk7
IC8vIGNvcGllcyB0cmFpbGluZyAnXDAnCisgICAgICAgIGNoYXIgKnEgPSBhZnRlci5kYXRhKCk7
CisgICAgICAgIHdoaWxlICgqcCkgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKnA7
CisgICAgICAgICAgICBpZiAoYyA+IDB4N2YpIHsKKyAgICAgICAgICAgICAgICAqcSsrID0gJyUn
OworICAgICAgICAgICAgICAgICpxKysgPSB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsK
KyAgICAgICAgICAgICAgICAqcSsrID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAqcSsrID0gKnA7CisgICAgICAgICAg
ICBwKys7CisgICAgICAgIH0KKyAgICAgICAgKnEgPSAnXDAnOworICAgICAgICByZXN1bHQgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YWZ0ZXIuZGF0YSgpXTsKKyAgICB9CisgICAg
CisgICAgaWYgKG1heU5lZWRIb3N0TmFtZURlY29kaW5nKSB7CisgICAgICAgIC8vIEZJWE1FOiBJ
cyBpdCBnb29kIHRvIGlnbm9yZSB0aGUgZmFpbHVyZSBvZiBtYXBIb3N0TmFtZXMgYW5kIGtlZXAg
cmVzdWx0IGludGFjdD8KKyAgICAgICAgYXV0byBtYXBwZWRSZXN1bHQgPSBtYXBIb3N0TmFtZXMo
cmVzdWx0LmdldCgpLCBOTyk7CisgICAgICAgIGlmIChtYXBwZWRSZXN1bHQpCisgICAgICAgICAg
ICByZXN1bHQgPSBtYXBwZWRSZXN1bHQ7CisgICAgfQorCisgICAgcmVzdWx0ID0gW3Jlc3VsdCBw
cmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKKyAgICByZXR1cm4gQ0ZCcmlk
Z2luZ1JlbGVhc2UoY3JlYXRlU3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKChfX2Jy
aWRnZSBDRlN0cmluZ1JlZilyZXN1bHQuZ2V0KCkpKTsKK30KKworQk9PTCBpc1VzZXJWaXNpYmxl
VVJMKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgQk9PTCB2YWxpZCA9IFlFUzsKKyAgICAvLyBn
ZXQgYnVmZmVyCisgICAgCisgICAgY2hhciBzdGF0aWNfYnVmZmVyWzEwMjRdOworICAgIGNvbnN0
IGNoYXIgKnA7CisgICAgQk9PTCBzdWNjZXNzID0gQ0ZTdHJpbmdHZXRDU3RyaW5nKChfX2JyaWRn
ZSBDRlN0cmluZ1JlZilzdHJpbmcsIHN0YXRpY19idWZmZXIsIDEwMjMsIGtDRlN0cmluZ0VuY29k
aW5nVVRGOCk7CisgICAgcCA9IHN1Y2Nlc3MgPyBzdGF0aWNfYnVmZmVyIDogW3N0cmluZyBVVEY4
U3RyaW5nXTsKKyAgICAKKyAgICBpbnQgbGVuZ3RoID0gc3RybGVuKHApOworICAgIAorICAgIC8v
IGNoZWNrIGZvciBjaGFyYWN0ZXJzIDw9IDB4MjAgb3IgPj0weDdmLCAlLWVzY2FwZSBzZXF1ZW5j
ZXMgb2YgJTdmLCBhbmQgeG4tLSwgdGhlc2UKKyAgICAvLyBhcmUgdGhlIHRoaW5ncyB0aGF0IHdp
bGwgbGVhZCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nIHRvIGFjdHVhbGx5IGNoYW5nZSB0aGluZ3Mu
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25l
ZCBjaGFyIGMgPSBwW2ldOworICAgICAgICAvLyBlc2NhcGUgY29udHJvbCBjaGFyYWN0ZXJzLCBz
cGFjZSwgYW5kIGRlbGV0ZQorICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPT0gMHg3Zikgewor
ICAgICAgICAgICAgdmFsaWQgPSBOTzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVs
c2UgaWYgKGMgPT0gJyUnICYmIChpICsgMSA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtp
ICsgMV0pKSAmJiBpICsgMiA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7
CisgICAgICAgICAgICBhdXRvIHUgPSB0b0FTQ0lJSGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJd
KTsKKyAgICAgICAgICAgIGlmICh1ID4gMHg3ZikgeworICAgICAgICAgICAgICAgIHZhbGlkID0g
Tk87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ICs9IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayBmb3IgInhuLS0i
IGluIGFuIGVmZmljaWVudCwgbm9uLWNhc2Utc2Vuc2l0aXZlLCB3YXkuCisgICAgICAgICAgICBp
ZiAoYyA9PSAnLScgJiYgaSA+PSAzICYmIChwW2kgLSAzXSB8IDB4MjApID09ICd4JyAmJiAocFtp
IC0gMl0gfCAweDIwKSA9PSAnbicgJiYgcFtpIC0gMV0gPT0gJy0nKSB7CisgICAgICAgICAgICAg
ICAgdmFsaWQgPSBOTzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdmFsaWQ7Cit9CisKK05TUmFuZ2UgcmFu
Z2VPZlVSTFNjaGVtZShOU1N0cmluZyAqc3RyaW5nKQoreworICAgIE5TUmFuZ2UgY29sb24gPSBb
c3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCI6Il07CisgICAgaWYgKGNvbG9uLmxvY2F0aW9uICE9IE5T
Tm90Rm91bmQgJiYgY29sb24ubG9jYXRpb24gPiAwKSB7CisgICAgICAgIE5TUmFuZ2Ugc2NoZW1l
ID0gezAsIGNvbG9uLmxvY2F0aW9ufTsKKyAgICAgICAgLyoKKyAgICAgICAgIFRoaXMgc3R1ZmYg
aXMgdmVyeSBleHBlbnNpdmUuICAxMC0xNSBtc2VjIG9uIGEgMngxLjJHSHouICBJZiBub3QgY2Fj
aGVkIGl0IHN3YW1wcworICAgICAgICAgZXZlcnl0aGluZyBlbHNlIHdoZW4gYWRkaW5nIGl0ZW1z
IHRvIHRoZSBhdXRvY29tcGxldGUgREIuICBNYWtlcyBtZSB3b25kZXIgaWYgd2UKKyAgICAgICAg
IGV2ZW4gbmVlZCB0byBlbmZvcmNlIHRoZSBjaGFyYWN0ZXIgc2V0IGhlcmUuCisgICAgICAgICAq
LworICAgICAgICBOU1N0cmluZyAqYWNjZXB0YWJsZUNoYXJhY3RlcnMgPSBAIkFCQ0RFRkdISUpL
TE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky4tIjsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+
IEludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQoW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRX
aXRoQ2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0p
OworICAgICAgICBOU1JhbmdlIGlsbGVnYWxzID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJv
bVNldDpJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0LmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5n
ZTpzY2hlbWVdOworICAgICAgICBpZiAoaWxsZWdhbHMubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkK
KyAgICAgICAgICAgIHJldHVybiBzY2hlbWU7CisgICAgfQorICAgIHJldHVybiBOU01ha2VSYW5n
ZShOU05vdEZvdW5kLCAwKTsKK30KKworQk9PTCBsb29rc0xpa2VBYnNvbHV0ZVVSTChOU1N0cmlu
ZyAqc3RyaW5nKQoreworICAgIC8vIFRyaW0gd2hpdGVzcGFjZSBiZWNhdXNlIF93ZWJfVVJMV2l0
aFN0cmluZyBhbGxvd3Mgd2hpdGVzcGFjZS4KKyAgICByZXR1cm4gcmFuZ2VPZlVSTFNjaGVtZShz
dHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShzdHJpbmcpLmdldCgpKS5sb2NhdGlvbiAhPSBOU05v
dEZvdW5kOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29h
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRkNTFmYWRiYjY4ZDY0NzZkMGNhNDYwNjg0YTk3MmI4YzUzNTBkYWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpAQCAt
MCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8d3RmL1VSTC5oPgorCisjaW1w
b3J0ICJDRlVSTEV4dHJhcy5oIgorI2ltcG9ydCAiTlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQgPHd0
Zi9PYmpjUnVudGltZUV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTFBhcnNlci5oPgorI2ltcG9y
dCA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitAaW50ZXJmYWNlIE5TU3RyaW5nIChXVEZOU1VSTEV4
dHJhcykKKy0gKEJPT0wpX3dlYl9sb29rc0xpa2VJUEFkZHJlc3M7CitAZW5kCisKK25hbWVzcGFj
ZSBXVEYgeworCitVUkw6OlVSTChOU1VSTCAqdXJsKQoreworICAgIGlmICghdXJsKSB7CisgICAg
ICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1F
OiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/CisgICAgQ1N0cmluZyB1cmxC
eXRlczsKKyAgICBXVEY6OmdldFVSTEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZil1cmwsIHVybEJ5
dGVzKTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKHVybEJ5dGVzLmRhdGEoKSk7CisgICAgKnRoaXMg
PSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK1VSTDo6b3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0Cit7
CisgICAgLy8gQ3JlYXRpbmcgYSB0b2xsLWZyZWUgYnJpZGdlZCBDRlVSTCBiZWNhdXNlIGNyZWF0
aW9uIHdpdGggTlNVUkwgbWV0aG9kcyB3b3VsZCBub3QgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHN0
cmluZy4KKyAgICAvLyBXZSdsbCBuZWVkIGZpZGVsaXR5IHdoZW4gcm91bmQtdHJpcHBpbmcgdmlh
IENGVVJMR2V0Qnl0ZXMoKS4KKyAgICByZXR1cm4gY3JlYXRlQ0ZVUkwoKS5icmlkZ2luZ0F1dG9y
ZWxlYXNlKCk7Cit9CisKK1JldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNv
bnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IGlmIChpc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gV2UgdXNlIHRoZSB0b2xsLWZyZWUgYnJpZGdl
IGJldHdlZW4gTlNVUkwgYW5kIENGVVJMIHRvIGNyZWF0ZSBhIENGVVJMUmVmIHN1cHBvcnRpbmcg
Ym90aCBlbXB0eSBhbmQgbnVsbCB2YWx1ZXMuCisgICAgICAgIHJldHVybiAoX19icmlkZ2UgQ0ZV
UkxSZWYpYWRvcHROUyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiJdKS5nZXQoKTsK
KyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOworCisgICAgLy8gRmFzdCBw
YXRoIGlmIHRoZSBpbnB1dCBkYXRhIGlzIDgtYml0IHRvIGF2b2lkIGNvcHlpbmcgaW50byBhIHRl
bXBvcmFyeSBidWZmZXIuCisgICAgaWYgKExJS0VMWShtX3N0cmluZy5pczhCaXQoKSkpCisgICAg
ICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSksIG1fc3RyaW5nLmxlbmd0aCgpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgLy8gU2xvd2VyIHBhdGguCisgICAgICAgIFdURjo6VVJMQ2hh
ckJ1ZmZlciBidWZmZXI7CisgICAgICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOworICAgICAgICBj
ZlVSTCA9IFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOworICAgIH0KKworICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIVdU
Rjo6aXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gY2ZVUkw7Cit9CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFk
ZHJlc3MoU3RyaW5nVmlldyBob3N0KQoreworICAgIHJldHVybiBbaG9zdC5jcmVhdGVOU1N0cmlu
Z1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkgX3dlYl9sb29rc0xpa2VJUEFkZHJlc3NdOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI0ZmIzNGY4NmYy
NGE0NjIxZTBmOTA2NzA2Nzc1Zjk0ODE4NTk5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogIENv
cHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBVU0UoU09VUCkKKworI2luY2x1ZGUgPGxp
YnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKworbmFtZXNw
YWNlIFdURiB7CisKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2Zy
ZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVl
KQorV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3Nh
Z2VfaGVhZGVyc19mcmVlKQorV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cEJ1ZmZlciwgc291
cF9idWZmZXJfZnJlZSkKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVU0UoU09V
UCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9nbGliL1VSTFNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1ZGJjN2UxN2I4Mzg5MTljNTBj
ZmZmYmQ2YjQ1Y2Y4Y2IzYjg5YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9n
bGliL1VSTFNvdXAuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKFNPVVApCisKKyNpbmNsdWRlIDxsaWJz
b3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNl
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K1VSTDo6VVJMKFNvdXBVUkkqIHNvdXBVUkkpCit7CisgICAgaWYgKCFzb3VwVVJJKSB7CisgICAg
ICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IHVybFN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcoc291cFVSSSwgRkFMU0UpKTsK
KyAgICBVUkxQYXJzZXIgcGFyc2VyKFN0cmluZzo6ZnJvbVVURjgodXJsU3RyaW5nLmdldCgpKSk7
CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7CisKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gTW90aXZhdGVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zODk1Ni4gbGlic291cAorICAgIC8vIGRvZXMgbm90IGFkZCB0
aGUgcGFzc3dvcmQgdG8gdGhlIFVSTCB3aGVuIGNhbGxpbmcKKyAgICAvLyBzb3VwX3VyaV90b19z
dHJpbmcsIGFuZCB0aHVzIHRoZSByZXF1ZXN0cyBhcmUgbm90IHByb3Blcmx5CisgICAgLy8gYnVp
bHQuIEZpeGluZyBzb3VwX3VyaV90b19zdHJpbmcgaXMgYSBuby1ubyBhcyB0aGUgbWFpbnRhaW5l
ciBkb2VzCisgICAgLy8gbm90IHdhbnQgdG8gYnJlYWsgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZp
b3VzIGltcGxlbWVudGF0aW9ucworICAgIGlmIChzb3VwVVJJLT5wYXNzd29yZCkKKyAgICAgICAg
c2V0UGFzcyhTdHJpbmc6OmZyb21VVEY4KHNvdXBVUkktPnBhc3N3b3JkKSk7Cit9CisKK0dVbmlx
dWVQdHI8U291cFVSST4gVVJMOjpjcmVhdGVTb3VwVVJJKCkgY29uc3QKK3sKKyAgICBpZiAoIWlz
VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gR1VuaXF1ZVB0
cjxTb3VwVVJJPihzb3VwX3VyaV9uZXcoc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworfQorCiti
b29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKK3sKKyAgICByZXR1cm4g
IWhvc3QuaXNFbXB0eSgpICYmIGdfaG9zdG5hbWVfaXNfaXBfYWRkcmVzcyhob3N0LnV0ZjgoKS5k
YXRhKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaAppbmRleCBkMGI5MDM4
ZjgyNjQ3YmUwYTE1ZjVjZWE0ZjgwMTk2MWY2NzJmMjliLi43ZWMzOTgyZTExMGI3YWY3MzE0OWFl
OWFlYzU1MWIwZDAzNmIxNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKQEAgLTQ4LDcgKzQ4LDYgQEAgY2xhc3MgUGF5bWVudDsK
IGNsYXNzIFBheW1lbnRDb250YWN0OwogY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yOwogY2xhc3Mg
UGF5bWVudE1ldGhvZDsKLWNsYXNzIFVSTDsKIGVudW0gY2xhc3MgUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXM7CiBzdHJ1Y3QgQXBwbGVQYXlMaW5lSXRlbTsKIHN0cnVjdCBBcHBsZVBheVBheW1l
bnRSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oCmluZGV4IGIwNzU5Y2RhMThj
MDNjNzNkYjBiZDFkY2Y4NDUzMWIyNGI1MmQwOWQuLjNhYTIyZjViODJkNmMyYzE4MGVjZTgxNDU4
NWQ4NTEwODk0YjFiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmgKQEAgLTI4LDcg
KzI4LDcgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29vcmRpbmF0b3IuY3BwCmluZGV4IGJkNTUzNGMyZGY5MTI1ODdkZDI3Nzg5MjI5OGJkN2Q0MWU3
YTlhZmMuLmUzNzMzNTdjYzA3ZmVhNTlkZTk3ZWM1NWQ1Yzg4OTNkMDYzODY0ZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRv
ci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cy5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oIgogI2luY2x1ZGUg
IlBheW1lbnRTZXNzaW9uLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCmluZGV4IGQ0NjUyY2ZlZDUwZmZjMWQy
ZjZiNjJiNWU0YmRkMGY5Mjg2M2Q0NTYuLmE1NDcxNTQ5NzNjMDFmOGJlYTVkMWRjYTEyMTVkOWQ0
NDllMDAxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50Q29vcmRpbmF0b3IuaApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBQYXltZW50Q29udGFj
dDsKIGNsYXNzIFBheW1lbnRNZXJjaGFudFNlc3Npb247CiBjbGFzcyBQYXltZW50TWV0aG9kOwog
Y2xhc3MgUGF5bWVudFNlc3Npb247Ci1jbGFzcyBVUkw7CiBlbnVtIGNsYXNzIFBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzOwogc3RydWN0IFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Owogc3Ry
dWN0IFBheW1lbnRNZXRob2RVcGRhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAppbmRleCBlOTE1Y2Ex
NmRiNDAyNDM4ZDhiZDgwMDE5ZGFkZTliMzY3NzAzZDE3Li5lNzdmMmNhOThmYWZjNTUzNGU0ZjYw
ZThjZjkwNDA2MGQyOGIxM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTM0LDcgKzM0LDYg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsK
LWNsYXNzIFVSTDsKIHN0cnVjdCBQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdDsKIHN0cnVjdCBQ
YXltZW50TWV0aG9kVXBkYXRlOwogc3RydWN0IFNoaXBwaW5nQ29udGFjdFVwZGF0ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaAppbmRleCAw
YTM1MDdlMjYwZTc0NjdlMGFjMGQzMWM5NDkzNzU0YTMzZmYyYTY0Li44ZjdhNGI2NTBmMGI5MmY4
MTVmOWI1ZDVjY2UxNzlhN2Q1MjkxMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5oCkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgUGF5bWVudDsKIGNsYXNzIFBheW1lbnRDb250YWN0OwogY2xhc3MgUGF5bWVu
dE1ldGhvZDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgUGF5bWVudFNlc3Npb24gOiBwdWJsaWMgdmly
dHVhbCBQYXltZW50U2Vzc2lvbkJhc2UgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1h
bmlmZXN0LmgKaW5kZXggOTk4Yjc4NDYwY2M4N2VkMzhlOTE4NmYwOGZkMjk5N2M2M2Y4OWQ3Mi4u
YjJmMWI0OWYzZWIzYTNlZTgwYTRmYjMyOWY2OWU4YmY4ZTUxYTk4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBw
bGljYXRpb25NYW5pZmVzdC5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9i
ZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAppbmRleCBlNjg5NmU3ODc4YjJjMmIxMGY2NjEzY2Ri
OTg1ZDBiNmUyNThkOTRhLi40ODk3NmQyYTM1MmUyMGRlNDE0YTZiZjk4ZTU2NmVlNDcwNDc1ZTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFj
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNv
bi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhU
VFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggZjc5MmY1YTEwMTA0NmVmMTEwMDBh
NzExYjYxNDE5MTMxYzI4NWY0My4uMTBjODRlNTdmMzMzY2UzMWEzMDM1YmY4NmQ3ZWZkMDYyYjkx
OTMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJSZWFk
YWJsZVN0cmVhbUNodW5rLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXgg
NjdkZTJlNTQ2MmJmM2RjNmFiODBjMjRhMzE4YzQwNTRmY2Y5MmNhNS4uNDAxMWIzNzM4Yzk3OWJi
OTc4YWRmZGNmY2JhODU0Y2FlOGM1ZGZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkZldGNoQm9keUNv
bnN1bWVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgKaW5kZXggZTM2
NDRhODc1MTk1OTdmNjRlNTNmM2NjZGFjNzQ0MDM5NzYwMDIzZC4uNmYzZGZlMzZmMDUzODk5MTQ3
YzRlYWRlZmNlMDJkNDMyZjk5OTNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oCkBAIC0yNyw3ICsy
Nyw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIAotI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lz
dHJ5LmNwcAppbmRleCAyZTgyYzMyNjE4NjVkN2E5ODg4YTVjMmM2Yjg1NzU0YjQyY2JhNDU5Li45
OGM2NjNiNmZjNmRiZGEyOTM2YTdkYTI2ODk2ZGYwMDMyMzNiZGI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3Ry
eS5jcHAKQEAgLTM1LDkgKzM1LDkgQEAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW5j
bHVkZSAiTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCmluZGV4IDJi
ODk0ZTBjYTQzYmU0MWI1YjEwZjRkMTk4OTEzNDM0ODc5MjgzMDYuLjAzMzY3NGYyNmQzNDU4NTlh
NGFhMWNkYTEyMGU2ZDg4NDE1NDZkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCkBAIC0zOCw3ICszOCw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTWVkaWFTb3Vy
Y2U7CiAKIGNsYXNzIE1lZGlhU291cmNlUmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0
cnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLmNwcAppbmRleCA3ZTIyMTUwMjQwOGZiYzQ5MWU4NzA2Njk3Njg2NzllYmUwMDQzNDYyLi44
YWMxNDU3OTUwYTc5MTg5ZDNhY2QyZDA3MDU2NmEyMTg3YmNmYWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtNDEsNyAr
NDEsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3Ry
eS5jcHAKaW5kZXggZDY5ZGNjZjg2ZTM4YWEzZjczY2NhNzE5ZGYxYjllYmZmYjJjMjAwOC4uNjQx
NWZmYWJhNWM5YTg0ODEzNGU1MjIzMzRkZDNhNjAxZWMyYmYyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnku
Y3BwCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1
ZGUgIk1lZGlhU3RyZWFtLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaAppbmRleCBhMjY3
ZjExMDBiZTE3YzJhMGIyOWEyMjFlM2IxNjljOTc3NGFhMjJkLi5mNmQyM2QyZDc5MGYwZDRmMjc1
MTA1YmI0MDZiMTllM2NlMGU0OTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaApAQCAtMzYsNyArMzYsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFT
dHJlYW1Qcml2YXRlOwotY2xhc3MgVVJMOwogCiBjbGFzcyBNZWRpYVN0cmVhbVJlZ2lzdHJ5IGZp
bmFsIDogcHVibGljIFVSTFJlZ2lzdHJ5IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGls
c0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMv
TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50LmgKaW5kZXggYjYyZDlhZmE4ZWFlNWI0ZjZmZTM0
YjRjNThjZGI0ZmRjY2Q2NWEwNi4uNDcwNjczYTA5ZTk1ZjAzMGY1ZWVhYzQyMzk4Njk2ZmExMDQz
ZTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50
dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50
LmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShOQVZJR0FUT1JfQ09OVEVOVF9VVElM
UykKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IGZm
MGRjNTRkYWYxZTUwMjM4YWZhMzVmMTMyODllNWI4M2UyYjJiOWMuLmZlZGExYTEzYWVkMjFjNDRi
YWQzMzg5NjI5YTcyNTNmOTJiMWM5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNs
dWRlICJOb3RpZmljYXRpb25EaXJlY3Rpb24uaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJt
aXNzaW9uLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9N
ZXJjaGFudFZhbGlkYXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oCmluZGV4IGIwOTNkM2E1ZmZjOTU2NzEy
ZWM5MTBkNGNmYTEyMjcxZTI4YTliYWEuLjIwNzc5Y2VkZDI2ZjZiOTQ3MTEzODQ0ZmQ5NjFmYmY4
YmIwMDY0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmgKQEAgLTI4LDcgKzI4LDcg
QEAKICNpZiBFTkFCTEUoUEFZTUVOVF9SRVFVRVNUKQogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdC5oCmluZGV4IGUzYmQ3ZTUzMmNmMjNmMjU3NjY2NTRlMTBjMzQ1ZGNiY2Mz
NDA4NzIuLjNkMTg4MWM1NTdiN2QzNzY4ZDQzM2IwODZlMmY3ZjRhNzk5ZGQ5MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1
ZXN0LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJQYXltZW50TWV0aG9kQ2hhbmdlRXZl
bnQuaCIKICNpbmNsdWRlICJQYXltZW50T3B0aW9ucy5oIgogI2luY2x1ZGUgIlBheW1lbnRSZXNw
b25zZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCmluZGV4IDZiNTU0MmUw
ODkwMDdkOWE0OTcwNGYyZmIzY2Y0Mzk4YTBmYjRlMGMuLmVmZWFmMDBjOWUzNThlZDY4MTU1YjU4
YTExYWQ0NzI1NTYxZTAyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIFJlbmRlclN0
eWxlOwogY2xhc3MgUmVuZGVyVHJlZVBvc2l0aW9uOwogY2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBT
aGFkb3dSb290OwotY2xhc3MgVVJMOwogCiBjbGFzcyBQbHVnaW5SZXBsYWNlbWVudCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFBsdWdpblJlcGxhY2VtZW50PiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA3NjBhNGU3MTE0Zjc0
NzU4MjIzYWRkMWZiMGY4NTZkNmU4NWQzMGNlLi40ZWYwYjRkZGUwMTc1NGZkN2JkNjg5MjJhNDU1
ZDkzNjdlY2I4NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmgKQEAgLTcxLDcgKzcxLDYgQEAgY2xhc3MgT3NjaWxsYXRvck5vZGU7CiBjbGFz
cyBQYW5uZXJOb2RlOwogY2xhc3MgUGVyaW9kaWNXYXZlOwogY2xhc3MgU2NyaXB0UHJvY2Vzc29y
Tm9kZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFdhdmVTaGFwZXJOb2RlOwogCiAvLyBBdWRpb0NvbnRl
eHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9O
b2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRl
eCBjYTQwNmFmNGM2ZjUyMjUxZjlmNmNjYThjNDVkNDQzYWJiOGQ5ODU3Li5hODVkZmQ3NzQ0Y2Q0
NzlhYjEyM2QzMzI3MTFlZThmMjNkMTAxZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aApAQCAtNDAsNyArNDAsNiBAQCBjbGFzcyBBcnJheUJ1ZmZlcjsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQmxvYjsKLWNsYXNzIFVSTDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKIGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXgg
OTAxMjFmNzBkMzA4ODBjMmEwMmY5NjU4MGFlMDU3MjhmYjhiZGRjOC4uNTA0M2M0OTQyMzVkMDcw
ODU1MDZhYWJkY2UzYmM0ZDBiODRiYmMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJUaW1lci5oIgot
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggNzQyN2JiNTU3MDc1ZWRhODhmYmQ2NjEy
MWU3ZDkwYTNmMTljZGQzNC4uMWIxOWVkYWI0YzlhNmYzODEyZjcxMzBiNzZhNmI5NTM3YzVjNzVl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4K
ICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
aAppbmRleCBjZjJiZDdhYzBhZjFiMjc0ZDk4M2JkNmJmY2YyNGUzODFkMTIyM2U3Li5lOTZmODYw
MmE4N2E5MzUyNjk2OTY3NjVjODBlNzMwMmNmNzM3ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC0zMSw3
ICszMSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDgxMmY4YTAyZDMwYTE2
ODNjZTk0Njg0Zjg3MTAyMGU2YmJiOTlkMTguLjM4OTVlNDQ5Njc1MDdjNWVlOTljYzIyZjQzZTcy
MWYyOTEzNzVmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBA
IC0zOSw3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZQppbmRleCA5NDMzOTg0NzU3ZTFiNGM5MTQ1ZTgwYjdkMjI3MWY5ZTI0YTI3NDBi
Li4wNjhiNWMyNjIzYzQxMDBjOTdlNjczMmNiNTI3MWMzMWQwZWRkYzdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQpAQCAtMTg3LDcgKzE4Nyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKICAgICBwbGF0Zm9y
bS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5tbQogCi0gICAgcGxhdGZvcm0vY2Yv
Q0ZVUkxFeHRyYXMuY3BwCiAgICAgcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogICAgIHBs
YXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAgIHBsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmNwcApAQCAtMTk1LDcgKzE5NCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcAogICAgIHBsYXRm
b3JtL2NmL1J1bkxvb3BPYnNlcnZlci5jcHAKICAgICBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAKLSAgICBwbGF0Zm9ybS9jZi9VUkxDRi5jcHAKIAogICAgIHBsYXRmb3JtL2NvY29hL0Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvQ29y
ZVZpZGVvU29mdExpbmsuY3BwCkBAIC0zOTksNyArMzk3LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWFjL1N1ZGRlblRlcm1pbmF0aW9uLm1tCiAgICAgcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCi0g
ICAgcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9Vc2VyQWN0aXZpdHlN
YWMubW0KICAgICBwbGF0Zm9ybS9tYWMvVmFsaWRhdGlvbkJ1YmJsZU1hYy5tbQogICAgIHBsYXRm
b3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bVdpbi5jbWFrZQppbmRleCBhMjRhOTE5NTM2MGEzYzViNDYwZDYyOGUyZjg0NGVkMDE5MTlmZDcy
Li42NTg2YjAyNDYxYTQ3MjE3ZWYwOGQ1ZWMwYjNjZGMzMTY2NjExM2YwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybVdpbi5jbWFrZQpAQCAtMjUwLDEyICsyNTAsMTAgQEAgaWYgKFVTRV9DRikKICAgICBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAgICAgbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAKIAotICAgICAgICBwbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKICAg
ICAgICAgcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9L
ZXllZERlY29kZXJDRi5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
CiAgICAgICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotICAgICAgICBwbGF0Zm9y
bS9jZi9VUkxDRi5jcHAKIAogICAgICAgICBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldp
bi5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBmYzI4OGIwMTM5MWQ3NTJiMjRkYzlmYWU3MWVmZjBm
MGViOGJlNWFmLi42MjE5MWMwMmUzNTM3MmQ3NmIzMTdmMjc0ZjVhODM1ZTY3MzA2ODFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtMTUzNSw4ICsxNTM1LDYgQEAgcGxhdGZvcm0vVGhlbWUuY3BwCiBwbGF0
Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAogcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcAogcGxh
dGZvcm0vVGltZXIuY3BwCi1wbGF0Zm9ybS9VUkwuY3BwCi1wbGF0Zm9ybS9VUkxQYXJzZXIuY3Bw
CiBwbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3BwCiBwbGF0Zm9ybS9XZWJDb3JlQ3Jvc3NUaHJlYWRD
b3BpZXIuY3BwCiBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDU4MTM2YTkzOGM0ZTg4OTAyYWQ1NGFmZjFkMTE1MjhmZmFjNjEzYTguLmZi
OWQ5MjAxNDYyYTJmMWViNDZjYzBiYWE1MWIzYTU2ODY4MGI0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dApAQCAtMTc4LDcgKzE3OCw2IEBAIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Np
b25NYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmNwcAogcGxhdGZvcm0v
YXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAogCi1wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAK
IHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKIHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNG
LmNwcAogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xODYsNyArMTg1LDYgQEAg
cGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9NZWRp
YUFjY2Vzc2liaWxpdHlTb2Z0TGluay5jcHAKIHBsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5j
cHAKIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotcGxhdGZvcm0vY2YvVVJMQ0YuY3Bw
CiAKIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tIEBu
by11bmlmeQogcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCkBAIC00NTgsNyAr
NDU2LDYgQEAgcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQogcGxhdGZvcm0vbWFjL1N1
ZGRlblRlcm1pbmF0aW9uLm1tCiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KIHBsYXRmb3JtL21h
Yy9UaHJlYWRDaGVjay5tbSBAbm8tdW5pZnkKLXBsYXRmb3JtL21hYy9VUkxNYWMubW0KIHBsYXRm
b3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0KIHBsYXRmb3JtL21hYy9Vc2VyQWdlbnRNYWMubW0K
IHBsYXRmb3JtL21hYy9WYWxpZGF0aW9uQnViYmxlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDM0NDRlZWU2NTYzOWY1
ZTY3OWQ5Njg3MzBjYjM5MzkzOGRkYzBhMC4uOWE4ODMyYjViZTQyODZlZTY2ZGY0YWU5MTQwYTcy
ZTM0NGQ2NzljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTg0MSw3ICsxODQxLDYgQEAKIAkJNUM0MzA0QjAxOTFBQzkwODAw
MEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QUQxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNo
YWRlclRleHR1cmVMT0QuY3BwICovOyB9OwogCQk1QzQzMDRCMTE5MUFDOTA4MDAwRTJCQzAgLyog
RVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVM
T0QuaCAqLzsgfTsKIAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4
dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM0MzA0QjQxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9
OwotCQk1QzZFNjU0MzFENUNFRkJGMDBGNzg2MkUgLyogVVJMUGFyc2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzZFNjU0MDFENUNFREM5MDBGNzg2
MkUgLyogVVJMUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNUM3Qzg4RDgxRDBGMUY0QTAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzdDODhENzFE
MEYxRjJCMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzhDNjAwOTIxMjc2Qjg3MDA4MkY4OEYgLyog
U2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzhDNjAwNzIxMjc2QjBGMDA4MkY4OEYgLyogU2hvdWxkU2tp
cFNhZmVCcm93c2luZ0NoZWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNUNBMURFQzYxRjcxRjFDNzAwRTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVs
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBMURF
QzQxRjcxRTY4NzAwRTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xOTE3LDcgKzE5MTYsNiBAQAogCQk2
NTZEMzc0ODBBREJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzMwMEFEQkE1REUwMEE0
NTU0RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTY1N0FGQUZDMjAwNDdBMjkwMDUwOTQ2NCAvKiBTcGVjdHJl
R2FkZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTdBRkFGODIwMDQ3ODk5MDA1MDk0NjQgLyogU3BlY3RyZUdhZGdldC5oICovOyB9OwogCQk2NTg0
MzY4NjBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUz
IC8qIEZyYW1lTG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkzOTIzNjA5QUU0MzQ2
MDAyQzUzMUYgLyogVVJMLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNjU5QTdEMTMwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTlBN0QxMjBC
NkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTlEREM4MzA5RTE5OEJBMDAxQkYzQzYgLyog
SlNEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjU5RERDODEwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUEyMTQ2ODA5N0EzMjkxMDBC
OTA1MEEgLyogUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVBMjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzgwNSw3ICszODAzLDYgQEAKIAkJ
QkNCQjhBQjkxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNTEzRjFBRkIwMDA3MzRERjAg
LyogUE9ESW50ZXJ2YWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlCQ0JCOEFCQTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWxUcmVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNjEz
RjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWxUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCQjhBQkIxM0YxQUZCMDAwNzM0REYwIC8q
IFBPRFJlZEJsYWNrVHJlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNCQjhBQjcxM0YxQUZCMDAwNzM0REYwIC8qIFBPRFJlZEJsYWNrVHJlZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDQkQyMUFC
MEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQkZC
NTNEMERDRDI5Q0YwMDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JGQjUzQjBEQ0QyOUNGMDAxOUIzRTUgLyog
SlNXaW5kb3dQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUJDQzBFODc2MUJGRTcwRTkwMDhGN0Y1MCAvKiBIVE1MUGljdHVyZUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzBFODc0
MUJGRTcwRTkwMDhGN0Y1MCAvKiBIVE1MUGljdHVyZUVsZW1lbnQuaCAqLzsgfTsKIAkJQkNDNUJF
MDEwQzBFOTMxMTAwMTFDMkRCIC8qIEpTQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDNUJERkYwQzBFOTMxMTAwMTFDMkRCIC8q
IEpTQ1NTU3R5bGVTaGVldC5oICovOyB9OwpAQCAtNDY2OSw3ICs0NjY2LDYgQEAKIAkJRTFBMTQ3
MDgxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUExNDcwNzExMTAyQjE1MDBF
RUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCAqLzsgfTsKIAkJRTFBMzE2MkQxMzRC
QzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMzE2MkIxMzRCQzMyRDAwN0M5
QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQTY0M0YyMEVDMDk3MjUwMDc3OTY2OCAv
KiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUE2NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0
Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCUUxQThFNTY3MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBOEU1NjUxNzU1MkIyQTAw
NzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTFBREVDQkYwRTc2QUNGMTAwNEExQTVFIC8qIE1lc3NhZ2VQb3J0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFERUNC
RDBFNzZBQ0YxMDA0QTFBNUUgLyogTWVzc2FnZVBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUFERUNDRTBFNzZBRDhCMDA0QTFBNUUgLyog
TWVzc2FnZUNoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxQURFQ0NDMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oICovOyB9
OwogCQlFMUFERUREQTBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBREVERDgwRTc2QkQ5MzAw
NEExQTVFIC8qIEpTTWVzc2FnZVBvcnQuaCAqLzsgfTsKQEAgLTYxMTYsNyArNjExMiw2IEBACiAJ
CTFBOTI3RkNGMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBucGFwaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTky
N0ZEMDE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IG5wcnVudGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QTkyN0ZEMTE0MTZBMTVCMDAzQTgzQzggLyogbnB0eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBucHR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFB
OTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVVJMQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQUE4NEYwMjE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsQ29udHJvbGxlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbENvbnRyb2xsZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTg0RjAzMTQzQkE3QkQwMDUxRDE1MyAvKiBT
Y3JvbGxDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9s
bENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBQUREQTExNERC
NDA5RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04NzQwLDggKzg3MzUsNiBAQAogCQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyog
U29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM2ODhBQTAxRDM4MDUwOTAwMEI1NEZBIC8qIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2
ODhBQTIxRDM4MTI2RjAwMEI1NEZBIC8qIFNvY2tldFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNUM2RTY1M0YxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxQYXJzZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzZFNjU0MDFENUNFREM5MDBGNzg2MkUgLyog
VVJMUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTFBhcnNlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzdDODhENzFEMEYxRjJCMDA5RDJGNkQg
LyogU29ja2V0UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29j
a2V0UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4QzYwMDcyMTI3
NkIwRjAwODJGODhGIC8qIFNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaG91bGRTa2lwU2FmZUJyb3dzaW5nQ2hlY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5N0EzMzYxRjVGN0E2NTAwMTA1MjA3IC8qIFJl
Y3RFZGdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWN0RWRnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4OTUsOCArODg4OCw2IEBACiAJCTY1N0FG
QUZBMjAwNDc4OUEwMDUwOTQ2NCAvKiBTcGVjdHJlR2FkZ2V0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBTcGVjdHJlR2FkZ2V0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjU3QUZBRkIyMDA0Nzg5QTAwNTA5NDY0IC8qIFNwZWN0cmVHYWRnZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlY3RyZUdhZGdldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRS
ZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZUxvYWRSZXF1
ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1OTM5MjM1MDlBRTQzNDYwMDJD
NTMxRiAvKiBVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVS
TC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1OTM5MjM2MDlBRTQzNDYwMDJD
NTMxRiAvKiBVUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYgLyog
VVJMTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVSTE1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5QTdEMTIwQjZEQjREOTAwMTE1
NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdWJzdGl0dXRlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTlEREM4
MDA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMjkwNyw3ICsxMjg5OCw2IEBACiAJCUJDQkI4QUI1MTNGMUFGQjAwMDczNERGMCAv
KiBQT0RJbnRlcnZhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQT0RJbnRl
cnZhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JCOEFCNjEzRjFBRkIwMDA3
MzRERjAgLyogUE9ESW50ZXJ2YWxUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBPREludGVydmFsVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JC
OEFCNzEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBPRFJlZEJsYWNrVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2luZG93UHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JGQjUzQjBEQ0QyOUNGMDAxOUIzRTUgLyog
SlNXaW5kb3dQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dpbmRv
d1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQzBFODczMUJGRTcwRTkw
MDhGN0Y1MCAvKiBIVE1MUGljdHVyZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSFRNTFBpY3R1cmVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0MjUyLDggKzE0MjQyLDYgQEAKIAkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4
NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRD
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlw
dENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRkMwRUMw
OTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVS
TEV4dHJhcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRlVSTEV4
dHJhcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQThFNTY1MTc1NTJCMkEw
MDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDRlVSTEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVBODE0
RTlFMjdEMDA0NDlFMTMgLyogRmlsZUxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZp
bGVMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQjcxNEU5RTM1
ODAwNDQ5RTEzIC8qIEZpbGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMUFCMUVCQjE0RTlFMzdBMDA0NDlFMTMgLyogRmlsZUVycm9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBGaWxlRXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyMzQsOCAr
MTYyMjIsNiBAQAogCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUUxQThFNTY0MTc1NTJCMkEwMDc0
ODhFNyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8sCi0JCQkJRTFBOEU1NjUxNzU1MkIyQTAwNzQ4OEU3
IC8qIENGVVJMRXh0cmFzLmggKi8sCiAJCQkJNTE2MDMwNkIwQ0M0MzYyMzAwQzhBQzI1IC8qIEZp
bGVTeXN0ZW1DRi5jcHAgKi8sCiAJCQkJNTE3QTYzQkYxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVk
RGVjb2RlckNGLmNwcCAqLywKIAkJCQk1MTdBNjNDMDFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWRE
ZWNvZGVyQ0YuaCAqLywKQEAgLTE2MjQ3LDcgKzE2MjMzLDYgQEAKIAkJCQkyRDc2QkI4MzE5NDU2
RjgxMDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmNwcCAqLywKIAkJCQkyRDc2QkI4MDE5NDU2
MzI0MDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmggKi8sCiAJCQkJNTEyREQ4RTIwRDkxRTJC
NDAwMEY4OUVFIC8qIFNoYXJlZEJ1ZmZlckNGLmNwcCAqLywKLQkJCQkxQTk4OTU2QTBBQTc4Rjgw
MDA1RUY1RUYgLyogVVJMQ0YuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDY5OSwxMSArMjQ2ODQsNiBAQAogCQkJCTE4NUJDRjI3
MEYzMjc5Q0UwMDBFQTI2MiAvKiBUaHJlYWRUaW1lcnMuaCAqLywKIAkJCQk5MzMwOUVBMTA5OUVC
NzhDMDA1NkU1ODEgLyogVGltZXIuY3BwICovLAogCQkJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1
NSAvKiBUaW1lci5oICovLAotCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuY3Bw
ICovLAotCQkJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLywKLQkJCQlCQ0JE
MjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovLAotCQkJCTVDNkU2NTNGMUQ1Q0VE
QzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovLAotCQkJCTVDNkU2NTQwMUQ1Q0VEQzkwMEY3
ODYyRSAvKiBVUkxQYXJzZXIuaCAqLywKIAkJCQk4NjgxNjBEMTE4NzY2OUM0MDAyMUU3OUQgLyog
VXNlckFjdGl2aXR5LmNwcCAqLywKIAkJCQk4NjgxNjBEMjE4NzY2OUM0MDAyMUU3OUQgLyogVXNl
ckFjdGl2aXR5LmggKi8sCiAJCQkJQTNBRjlEODIyMDMyNTMyNDAwNkNBRDA2IC8qIFVzZXJBZ2Vu
dC5oICovLApAQCAtMjc0NzYsNyArMjc0NTYsNiBAQAogCQkJCUNEMzE4NjIzMTk5RjFFMkEwMDMw
QTBGNyAvKiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREU1OTU5NzFCRjI2RTIxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2Jq
Qy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUZBOTA0Q0ExNzhFNjFGNTAwNEM4QTJEIC8qIENlcnRp
ZmljYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTFBOEU1NjcxNzU1MkIyQTAwNzQ4OEU3
IC8qIENGVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTM2RkQxNTE2Qzc4MjY1MDBG
ODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2OURE
MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTVGRkYxMkIwMjY3NjAwQzFBMzU5IC8qIENoYW5uZWxNZXJnZXJOb2RlLmggaW4g
SGVhZGVycyAqLywKQEAgLTMwOTE2LDExICszMDg5NSw4IEBACiAJCQkJRTRBRkNGQTUwREFGMjlB
MzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwODZGRTk4MDlE
NTNBQUIwMDVCQzc0RCAvKiBVbmxpbmtDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDE3
NjJFMDE3NjY4NkQ5MDBEODM2QTggLyogVXBTYW1wbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk2
NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjc3
MjYwNTFBNURGNkYyMDAzQzI0REQgLyogVVJMRmlsdGVyUGFyc2VyLmggaW4gSGVhZGVycyAqLywK
LQkJCQlCQ0JEMjFBQjBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjU1QjNEREUxMjUxRjEyRDAwM0VGMjY5IC8qIFVSTElucHV0VHlwZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNUM2RTY1NDMxRDVDRUZCRjAwRjc4NjJFIC8qIFVSTFBhcnNlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0NDMjg5REYxQUEwRkU1RDAwOUE5Q0UzIC8qIFVSTFJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0MzdBMjFENTdCM0ZFMDBBQjg1RUEgLyogVVJMVXRpbHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjc2M0JGMTY2ODlCRkIwMDJGQ0FDQiAvKiBVc2VyQWN0
aW9uRWxlbWVudFNldC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oCmluZGV4IGYzZTM0NmJlYTdl
MThiZWQyYjg5OTA2NzRiNmUyMmZjNGEwMjVjYzIuLjYyY2Q1NGE4NGFiNGE1ZjAyZmFjN2I3MjVm
NjBkN2U4YWQxMmMyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIERlZmVy
cmVkUHJvbWlzZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CiBj
bGFzcyBNb2R1bGVGZXRjaFBhcmFtZXRlcnM7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIENhY2hlZE1v
ZHVsZVNjcmlwdExvYWRlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlZE1vZHVsZVNj
cmlwdExvYWRlcj4sIHByaXZhdGUgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCmluZGV4
IDUyMmIyZmZjMDQzMmMxODk0YTQ1YzAyYjY5NTllOWU2MGE4NDM1NmUuLmQ1MzkxYzY5N2Q3Y2Y0
ZjZmNWQ0MDc5Y2EyNzJlZjc3ZWE5Y2FiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRTY3JpcHQ7CiBjbGFzcyBEb2N1bWVudDsKLWNsYXNz
IFVSTDsKIAogY2xhc3MgQ2FjaGVkU2NyaXB0RmV0Y2hlciA6IHB1YmxpYyBKU0M6OlNjcmlwdEZl
dGNoZXIgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAppbmRleCA4ODY5ZGIxZjlhMzJkZGMzZDIwNWM4ZmY4NWQyMjk0MDE5ZDI5
YjMxLi5kNmM3OWNkMjBhZDU3MTI4YWQ3ZTY3OTZiNWUxZjY0MTYxZDQxYzE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTg5LDcg
KzU4OSw3IEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBFeGNlCiAKIGJvb2wgU2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBVUkwmIHVybCwgU2hvdWxkUmVwbGFjZURv
Y3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVS
TCkKIHsKLSAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCisgICAgaWYgKCFXVEY6
OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmICghbV9mcmFtZS5wYWdlKCkgfHwgIW1fZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPmFsbG93SmF2YVNjcmlwdFVSTHMobV9mcmFtZS5kb2N1bWVudCgpLT51cmwo
KSwgZXZlbnRIYW5kbGVyUG9zaXRpb24oKS5tX2xpbmUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGY3YzA4MjRlMDZjYzcxNDY5YzA3MGQ2
ODhlNDI2ODI0YzljM2M0ZjAuLjZlOWRkY2EwOGRlMGY2ODE4YTA3Njc1YmFhNmY0YWU0ZGVlZWJi
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
QEAgLTYwLDcgKzYwLDYgQEAgY2xhc3MgTG9hZGFibGVNb2R1bGVTY3JpcHQ7CiBjbGFzcyBNb2R1
bGVGZXRjaFBhcmFtZXRlcnM7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogY2xhc3MgU2VjdXJp
dHlPcmlnaW47Ci1jbGFzcyBVUkw7CiBjbGFzcyBXaWRnZXQ7CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0
YWlsczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9k
dWxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2Fk
ZXIuaAppbmRleCA5MWZmOTljMTUwY2ZiYzhmYjZlYTcwZjVmNTA0MmM3YWExZTQzNDRiLi5hNjA2
NmY0Y2UzOTk5OTZjNjU0ZGI2MDNjMGE0NzI0ZGQwODQwMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaApAQCAtMjcsMTAgKzI3LDEwIEBA
CiAKICNpbmNsdWRlICJDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRl
ICJVUkxIYXNoLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCmluZGV4IDU2ZWU2OTBkZTg0MTU5YTU3YzQy
OGE5MDczOWIyMDU2ZmZkZGJmZDYuLmI3ZDdlYjkzY2JhY2I3NGE4MWMwMDdlNWVmMDk4MTIyNWJj
OWE5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJj
ZUNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2Rl
LmgKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogI2luY2x1
ZGUgIkNhY2hlZFNjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHRTb3VyY2VQ
cm92aWRlci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nv
dXJjZUNvZGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Tb3VyY2VQcm92aWRlci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
ZDExYjQyZTZlN2U3NTQ3MDQyNzQzMzgxM2MzNTk4YzQwMDBlODk0ZC4uNWYzZWE3M2Y5NzY0MTIw
MDVmYzM5MjdiMDZlMTFiNmI1MTgyM2ZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ1MzIsNyArNDUzMiw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgaWYgKE5lZWRzSW1wbGVtZW50YXRpb25DbGFz
cygkaW50ZXJmYWNlKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9t
SGVhcFNuYXBzaG90fSkgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPEphdmFTY3JpcHRD
b3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4iKTsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIpOwotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
VVJMLmgiKTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjx3dGYvVVJMLmg+Iik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmhlYXBTbmFwc2hvdChK
U0NlbGwqIGNlbGwsIEhlYXBTbmFwc2hvdEJ1aWxkZXImIGJ1aWxkZXIpXG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwpA
QCAtNDU0NCw3ICs0NTQ0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAK
ICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24pIHsKLSAgICAgICAgJGltcGxJbmNsdWRl
c3siVVJMLmgifSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEg
IkRPTVN0cmluZyI7CisgICAgICAgICRpbXBsSW5jbHVkZXN7Ijx3dGYvVVJMLmg+In0gPSAxIGlm
ICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJET01TdHJpbmciOwogICAg
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgPX4gL15IVE1MXHcqQ29sbGVjdGlvbiQvIG9yICRpbnRl
cmZhY2VOYW1lIGVxICJSYWRpb05vZGVMaXN0IikgewogICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siSlNOb2RlLmgifSA9IDE7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJOb2RlLmgifSA9
IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNJbnRlcmZhY2VOYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCmluZGV4IDExNzk1ODc1MzUxYmYyZTM2M2M5MTRlZGQ3
NDEzNTFiNzQyYTI5YWMuLjZkOWJkMTdiNmQxNTRlMGJmMGE2ZmY4YjAxYjAwMWQzMzU2ZGZlNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0lu
dGVyZmFjZU5hbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJK
U0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU01hcExpa2UuY3BwCmluZGV4IDZkN2ZhYTJiNzdkYWQ2YTQ3M2QwOWNhNmZm
MjliMzg5NmM1YzRhMmIuLjA3OWM2NjYyOTRhZWVjYTgyNzRhZTJiY2U1ZWZlNGVhNzdiMTZiNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01h
cExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U01hcExpa2UuY3BwCkBAIC0zMSwxMyArMzEsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlv
bi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlr
ZS5jcHAKaW5kZXggMDA4ZGNlYmE0MmM2ZDRjNmZiMmM5YTkxM2ZmYjZkMzNmZDBmMWM4My4uOTdk
NGYzYWI0ZmExNjAyYWU0OTBhZTg2Yzk2ZTBjMzg0NzhiZjkzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1h
cExpa2UuY3BwCkBAIC0zMSwxMyArMzEsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcAppbmRleCA2MjkxNmQzNmJiNTVhNjkzMjI2MmZmYTU1ZGMyNGNlNmVlM2JlODYz
Li40ZDlmMTQyYzU0NDMyODFlNThmZmNiMDU1NjRlNWNkY2JmYzRkNTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
U25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q0VSZWFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENFUmVhY3Rpb25zLmNwcAppbmRleCA2NDA2YmU5OTkwM2QxNGMxYjE3MTA4YjhmYTNk
MTI5MmUxZmM5MDcwLi40YTAyNzkzNmI5ZGI5OTM2MGJmZGQ3OGE5N2I2YjM1ZDY0Njg2Y2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q0VSZWFjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKQEAgLTM0LDEyICszNCwxMiBAQAogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
Zmllci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyLmNwcAppbmRleCBhZGFkMDQ5YjE0YzRhYTVmMjVhZWFkOTQ2MGIxYzJiZmE2MTky
MjRlLi4zNDJhMGRmOGQxZTI4MzUyODRiYzM2YmU2MWRiYmJmMjdiYjI4ZDBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCkBAIC0zMCwxMiArMzAsMTIg
QEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCmluZGV4IDQ2MWM0
ZDk2YTVmMzkwZGM4ZjE5MDA5NWNiNzQ1NjRhNzEwN2E3MjIuLjNhZDhjMjM3OTNhN2E2OWI4MzM0
ZGY1YmQ3NTQzMjNmZDlhYWI3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKQEAgLTM3LDEy
ICszNywxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNO
b2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCAxZGIwYTMyZDU1ZTVjYjdjMGY5
NGM4NWYyYWZjOWM5ODJiMmViMDBkLi4wMDhiNWU4OTc2ODY5NWYyNWM4MzNiYTM0NjAxZDRiZTU3
ZDBlMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5jcHAKQEAgLTI3LDEyICsyNywxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5zLmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAppbmRleCBlMWY5
ZjE3MGE2Y2Q3MjNkYmU5NTU4NGRjZjVmYWQwNDI0MmNlZTg4Li5hOTQ1NGU5YmE2YjkzODA0YTNl
OTA1OTRlOWE3MGU2MGNkNmExYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKQEAgLTI2LDEy
ICsyNiwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKaW5k
ZXggNzZjNDBmYjA0NTc5NTAzZWE1YjUyYzQ3ZTA0OTYwZGIyMTk5OWYzYS4uOTVkNzY3MDQ3Mzg4
ZTM4YzAxMDA0Mjk1ZDhjZjEzNDU2YmQ0NGJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTQxLDEy
ICs0MSwxMiBAQAogI2luY2x1ZGUgIkpTRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3Qu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnJhbWVUcmFjZXJzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCmluZGV4IDg3
YjM1M2M1YjU5ODU4OWQ1OTAyYjcwZTY0ZjM5MDcyMWZhOTJjOTMuLjEyN2ZhYTk2N2QyYWM1MzZl
NDZhYjkzZGJmNTZmZDUyNTRmZTE5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Zy5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNTVkZWE4ZWVhYjA3Zjc1MDVmMWE2YmRm
Y2MyNDFiNjcxY2JkZWE1Ni4uNDVkYzE5MjcwNDliZTI3MjA1NTJhOThiN2RmMjM1YjBmNWExNWJk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMzAsMTEgKzMwLDEx
IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuY3BwCmluZGV4IDMwOGUzNGYwMDFhYzJkOGIzNTNlODA1MWQ4ZWM1MWJiYWRkNmVlMGEu
LjcxZTNiZjM3NTQ0MjllYzdhN2NjY2E4MzU1MWQzOTI4OGFjMWVlZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNl
cHRpb24uY3BwCmluZGV4IDIzOGE0OGY3YzY1ZjBkM2NiNmYxZTAzZjdhMjllOWU4MjllYmNiY2Yu
LmQzMmMwNGNjNTBlZWRmMjY5ZWQ4MDFkNjkxMjNmNmI1MDU0MDQ3MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNl
cHRpb24uY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggMzQyMzhiYzVk
MjEzZWM0OTlmYmU1YTI1NWM1NjE4ZjMwNjg1YjJkYy4uYWMyYmViYjJkOTMyNGExYTJjMmFkZDZh
MTYwZDM3Yzc3NWMyM2I4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNu
YXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2xvYmFsT2JqZWN0LmNwcAppbmRleCA3MWI4YmRkZjY4ZGFlY2M3M2UyMjFjZTgzZDY2
MDczYzczOGI0ZWM4Li5iMjBiODNjN2JlOWU1YjM3YjljYzU3NTg2NjNlMTc4NTU4NWUzOTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkK
ICNpbmNsdWRlICJUZXN0R2xvYmFsT2JqZWN0QnVpbHRpbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCA2NjA3OGJkNmNiNTExZTFk
MmY0Njg4ODI1ODJhN2Y5MWZiYzA2YmM5Li41Nzg5MjUzN2JlODc4MzI0YTVkZGU4ZjZkMWM1OTJj
MWI5NjJiNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIuY3BwCkBAIC0yNywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5k
ZXggNjIwM2NjMGI5ODczOTI0NzdhMWQ5YmY3YjU3MGNiZTM3YzEwZTM0Zi4uMzU1YWRjZDkwYWVm
Y2Y1OTVkMDdlZDU0NmU0Y2FhYjIwYjNlZTI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI3LDEzICsyNywxMyBA
QAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAppbmRleCAzZmRjNTYwNDAzNTBlMTMyMWRiMjQ2OTdiNzI3MjU1
N2RkMWE5MDhkLi43Njk2NzNhZmJiNGU2MjAxZDk0YzMyYTg0Y2YyNDllZTYwMzg4ZmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApA
QCAtMjksMTMgKzI5LDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA0
YzY0YzE5ZWI4NTgyNjAyOWY2MGI5MjViMzE5ZTExYTcwM2Q5NGY3Li42NGEzNzg5OWE5ZDkwN2Zj
ODUyOTk4NmIzZDA0OTFiZjcwNzg2NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMzQs
MTIgKzM0LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpIHx8IEVOQUJMRShDb25kaXRpb24yKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnRTdHJpbmdzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlLmNwcAppbmRleCA1NWZmZDY3YTE1MGZlMzJjNWVkYTM1ZTMyZDI0NmY2OTMyZThlYmFh
Li5jZmYzMmZmMGViM2FkZGE3N2ZlOTQ2M2EyYTRmOTljZTY1OGI0OTcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKQEAgLTI4LDEyICsy
OCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCmlu
ZGV4IDk3OWMwZjhjYzViYWQ4NDZmMDk2MWNiZGEyNjRlMGNiNzZjMTgzMGMuLmFjMWU4ZTdmOWVm
ODI5Mjc4ZTI0NTg0NWE2NjIzMWE1ZmNiY2FiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcApAQCAt
MjgsMTMgKzI4LDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcAppbmRleCA1MGFkYThjYWYwZWU2ZDAyYmFkYTgwMWIwYjY5OGFlZTk1OWQ5MzYw
Li4wMGZhZjlmMDU3M2ZkMDA3NWRlOGRlNTE0OWU4ZWI1MDg3NGM5NGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggMzE4N2QyZGFm
M2Q2ZTcyMWU3ZTAwODVmMjdjY2IyMmYyYjQxZGFmOS4uM2ZlYmQxY2RlYzQwZWNlZmJhMzJiY2Zj
NDM2MzI0MzUxNWNlNmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTI4LDEzICsyOCwxMyBAQAogI2lu
Y2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJv
cGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggZDI3MTk0ZTgzZTZhYzc3
NjUzMWE5ZGI3NzMwZjA1NzRjMmRmYWUxZC4uZTA1ZDY1NTQ2YmZhMTEzNmEwODY0Mjk1ODQ3MmNm
NTBjYTJkNTM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAK
ICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGIxZjM2ZDczZTAzNWFmZTc4
ZWZlOTMyYjE0ZGY5M2NlZmZiYTRkZjIuLmUwMTViMTc4YTc2NTM4ZjgxOWU1M2FmZTdjNWZiYmE3
NDE4NGNhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVk
ZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDkyOThhMTc2MGMwODM1
MjY2YzQyZWI2NjQ4NjRiZjY0NDgyYzdiMzAuLmYxYTg0YThiYWQ5YTVkNjA1YTEwZTQ5ZDljNWM0
MjczZDk5Mjg3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTI5
LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCA1N2Q2N2MyMzRlMjZiNGRk
ZDA5NDdlNDAyZWY4OWI0NTAyYjZkZDQzLi44NjJiNDU5ZmJiMjFkN2QxMDEyNTY5NWY1YTBlYWVm
ZWQ3NTRmNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAKaW5kZXggZDBmY2QyZjJiOTAzMjQ5NWI0YjY1OGJlOWIzMWI3ZmU1NWEwODg2YS4uYzEwNWYx
NWRiYWY4NWRiZjNmZTQ0MzNiYTdhODA1NWE4NDJmYWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yOCwxMiArMjgs
MTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCAyNTE0MTBiNWZhZWY3MDA0YzAx
MTY2NjZmY2U4ZTFlOTBhMzM3OWE5Li42NDEzOWM4ZjZiMjBiYjM0YjYyMzZkNjIwNDFjN2U2ZDAy
OWQ4YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
Zmllci5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgi
CiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNo
b3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRl
eCAyNzU4Y2ExMGExNDEyYzQxMzliMzI1ODRmM2NmOTJiNDAzYWJiMDE0Li5kNjE0YmNlNDIxZmUz
NGM2ZmJlNjc4YmQzN2U1MzJkNTJkMjc2NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTI4LDEzICsyOCwxMyBAQAog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
UHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3Bw
CmluZGV4IGNhMmJmNjEyYWNiYzJmZDRlMDQ0YTE1OWE3NjQ2N2U1YWFjYWI5YjIuLmVhNGM1Y2Qy
N2Y4ODc5ZDE3OWViYmI5MTUzZGY5OTM4MTBiZTc2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJDYWxsV2l0aC5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIu
Y3BwCmluZGV4IDkxMjBmNGJlN2YyMWI3OGQyYzliZmYyZGIxNzI1YTk0OTc0YmZjZDEuLjZlNDBk
ZWYzZDQ0YmEzN2Y3NjQwMDk5MTI4OWFmYzEwZTI5YjdiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDNiYjdkM2I3ZTEyZjgyOWM4OGMzNDRiYWJkYjQ4Njgy
MmY1N2NiYTIuLmQzOTI0Y2JhNjA4NmNmOTA4NDZiZjExMDg1MDkzNDIwMThlNDMzNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTI5
LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBjYmQ1ZDMxYTYyNjdlYTFlZTI1ZGUwOTE0
ZDYxNDY4YmZjZDkyNWI1Li5jN2EzYzZhOWQ1OTVkZmU2NzJjYzcyYWJkZGUwM2VmZTZjODMyOGZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAg
LTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCA5ZmNi
ZjY5N2I2MzlhZTAzZGRjMGViYjIwODNjZTc5OWY3Mzg4MzUzLi45OGVjMTNkYzJlNzllZjVmZGE2
NGJmNzJkNzQzZjFiY2YzOWU0MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAKaW5kZXggYjhhOWZhZGU4NWI0ZTk4N2M3MDUyYTAyOWE5ZGQ4ZmNkYTZk
MzI1MC4uZGRkZmY4Y2NkNzI1OWIzNzQ1YTY2Y2M3ZGJlNmFhZmZmODA5ZTZhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjksMTIg
KzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRleCAxNzE0Nzc1NTBiMGMzODQ1OTU2
MmY2YTc1YzJlODNkODMxNWRiOTI0Li5iNjYxZjUzY2QyODcwODg4M2ExMWM4YzIwNWU3MDQ4MDk1
MzE3ZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlv
bi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNu
YXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ci5jcHAKaW5kZXggMTAzZjkxYzFiYWEyYWEzOWYxZTM5OWFhZmVjZTU4MTE5MTExNmRlZS4uYzM1
ZmY4OTZjNDhkOGJiMjg3ODIzYmRmMGE0NjA3YTFiM2RhODcwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
LmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IGZjMTIyYTJl
MmJiZjg3YmExNGIxNmY3MDc5OWU2YzI4MGYxZTRjNGQuLjlmMTBkNjRlZTVhMGQxMzE5YjhjY2Y4
OTRkYTkwYzhhYzE4YTE4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCmluZGV4IDQ4MDdiMzY1NTMzMThl
MDQyYTliNjdiNDQ0MDgxMTlkNjg0ZWQxZGUuLmM2MGRjYWI2MzU5NTk3ZGI0Zjg4MGVkZjQwNDBh
YzgzNDM1YTgyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5j
bHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGlucy5jcHAKaW5kZXggZGQ1MTkzMDczM2I2Y2RhYTQ5ZTFmNjg1NmI2YjcxZjFlMTE3Y2Fk
ZS4uNDBiOTgxZTM0NDEwNTdkN2NiYjdmZWUxNzBlZTUzY2I5MDMwMTc3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTMwLDEyICsz
MCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggZGU5NmQzYjhjYmYy
MDEyOGIzOTYzNWRiMzZlMDY4NGU5Zjg2NjdjNi4uMmIyZGVkNGMyYzY4OGFmNDQzZjRhOTdjMGZk
NDliMTI2MDAwNjVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3Ry
dWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAppbmRleCAwY2E1ZGJkZTBjOTczNGUzOTgxZWMxMWMxZTc1ZTc4ODlhYmI3
YmJmLi45ZjI1NGI0N2ViOTllZTk5MGQ3NTdjZDI3Mjg4ZWM4YTBiODk3MTU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cApAQCAtNzcsNyArNzcsNiBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5UHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CkBAIC05MSw2ICs5MCw3IEBA
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcAppbmRleCBlYWYwOTJhZjNmM2E3MWU5ZDNjNGNmNjAxMWJmZDkxOTJhYjIxYjVhLi4xYWRi
NzAyMTJmNDUxY2NlODViMDhjZGEwMzZmZTQ3ODA4OWMzOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNs
dWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKaW5kZXggMDU4MTQzYmExNGJiNGVi
MjI0MDljOGQyODQ3Mzc1M2Q4NGYwM2U3Zi4uYjA1NTY2ODU5NmJjNmYyN2M4MmM3MTZmZDIzNGU1
ZDgwYWE4YTRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUg
IkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JdGVyYXRvck9wZXJhdGlvbnMuaD4KQEAgLTM3LDYgKzM2LDcgQEAKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcAppbmRleCAwZGI3NzRhZjEyNWY1ZDE4NTBmNzlhNjE3MTQ3NWUxMzdhYjdjZDYxLi5jMWE2
MzQzMGFjMGQ4YWMxM2JiYTRjNGE3NDM5NDkwMThjNzExZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVn
aW5JbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKaW5kZXggMjgzNjI0NzNhNzA5ZjU5NjQ2YmJlYjYw
NGJlM2RhMTExYTBhOGNlZC4uYmVjNTdkNTUxN2Q1YjA5YzhkMjBhMGFkZTQyOTdjZjBhZThkZmNl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFBsdWdpbkludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKQEAgLTI3LDEyICsyNywxMiBA
QAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNQbHVnaW5FbGVt
ZW50RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50LmNwcAppbmRleCA4YjBmNTFlZDMxOTQxYzg0YWViMjRhMzczYmU5YjE3
YzA3Zjc2M2Q3Li43YTI1ODk4NjcxNDYzMGEzMDUzYmM3NDgxYTVkZTBmZWYxYmQ3OThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApAQCAtMzQsMTEgKzM0
LDExIEBACiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXphdGlvbi5jcHAKaW5kZXggZTNjMWNjMjU5YTFkMjc4NzlhMjY3ZDlmNDQ1OGQ1ZDQ4OWE2ODc5
Mi4uNzhkMWM0MWM0MjhjMDFlMWY3NWY2ZTkxYTY0YWViMzA1YzBhNTI1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemF0aW9uLmNwcApAQCAtMzYsMTMgKzM2LDEzIEBACiAjaW5jbHVkZSAiSlNUZXN0
U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuaCIKICNpbmNsdWRlICJKU1Rlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdEZpbmFsLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5o
ZXJpdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAppbmRleCA5NjM2OGYzZTZm
N2JmZmE4ZTFhN2VmYmZlN2Y1MDYzZjY0NmRiZGE3Li4xMzNlZGEwMmU2NDAxNjNmYzliZTY1NDM0
ODIwZmI5MjVmMDRjMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1
ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
YXRpb25Jbmhlcml0LmNwcAppbmRleCAzN2Y2NTRkZGZjZDdjMTViNzhlYjY3MWM0YWFjNjc4NWQ1
NDAwYmI3Li5hZDUzMWIyMGI3NGJjNmQyNTk1NjkxODJlYWVmYzUzMTFjZjhlMDkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXphdGlvbkluaGVyaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKQEAgLTI5LDEyICsyOSwxMiBA
QAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbC5jcHAKaW5kZXggNWU4NjkxMGFiNTIwODhlMzE3NzkzNjQ5ZDRjNjA3MmFj
NGU3MmI5NC4uYTFhYzJkMDEwZTUxYzQ4MzdjMGYwYjU0NjIyODAzNGFkMGRiODRlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0RmluYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcApAQCAtMjks
MTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggMzQyZWQxYWE1MGI0
Njg2OGJmYjM5MTY2YWUwZjgzZDA4YzY4MDJhOC4uZGY3ZGZiOGY5NjFkOTRmZThlMjRmMDFkMjQx
ZmIyNGY2YTk0ZmFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTM3LDEzICszNywxMyBAQAogI2luY2x1ZGUgIkpT
TWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5j
bHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNBcnJheS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllci5jcHAKaW5kZXggZmYyY2FkMmNhZmZjOWFkZjFhZmZhNTNjZGYwOTc3Y2ZjODNl
ODcxNS4uNTI0MmJiOGJhYWM2ZmM4Y2ExNDA0MDYwZjE1MGJiMWRkN2MwMTVkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9w
ZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bi5jcHAKaW5kZXggODllZGZiNGQ1NGZmY2UyOTMxMmU5ZGMzNzBhMjkwNGU4NjM4OTQ4Zi4uN2Nh
ZTI0MzllZjYyN2I2YzI2NjE3Mzk0YjkxY2M4YjgwNGZmMDU1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCkBAIC0yOCwxMiAr
MjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCmluZGV4IGIxNmI2ZmI0YmQxNGUyNGQyZGFlMGY0NGJh
YmVhNjRkODQ3MDBmNDQuLjUwYTQ2ZjYxNGY5ODQ4Yjc2OTI4NWUxNjM4OTA3M2MxMjkxNTdmZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAK
QEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCmluZGV4
IDVhNTRhYzE0M2NiMjc5MzY0ZTY0NmMzMzM0YjBjYmMxN2FlODM0MzUuLjBhMzNhZjM3OGEyYjEy
MTlmMjkyODRkYzg5ZTE2ZDM4YjcyNDc3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCkBAIC0yOCwxMiArMjgs
MTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0
cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAppbmRleCBmMjUxOGE3MWVkNjg2
MWM1YThjYWY2YmViMzRjNWZjZjZiZDMwZGVmLi40OTA0OTE3NGUwMzZmNWYxODA2MjQ0YzNmMmVi
ZDE5ZTE2OTYyZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVk
ZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlLmNwcAppbmRleCA4MTIzNzJiNGQ0ZWU3MGM0MjNhMjg0MzM0NjUxZDExNThlYWFj
ZTU5Li5jOWM1MjY5OGI4MmQzZmZmMjdkMjM0NGZkZGI1NTQzZDA5MmNhNDA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCkBAIC0y
OSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRl
QXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKaW5kZXggMzkxN2I0ZDkyOTZi
YTUyM2RjMTMwNzA2MTljZjRjZWQzOGE4M2ZiMS4uNzVlYzM4YWRiOGZlODg5MzA0NjAzNTM0NmI1
NjQ0NmQ3YjJiNjJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RP
TU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggMWU2MTNhYWIwNjUyNGFmNTU2MDYzM2Q4ODIy
NDk3ZmQxYzAxZTBhMi4uMTg2YTQxNmRhODczYTY0ZTVkZjVjNjZlYmJmZDA5MDFhY2U1ZGQyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAKICNpbmNsdWRlICJKU1Rl
c3RTdWJPYmouaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNB
cnJheS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kLmNwcAppbmRleCA3MjQwNzE1NmViZDYyNjg2YTEzNGIwMWE0ZTQwY2Q1MTE2
Yjc1OWRmLi5kMGVhYmEwOWZkMTJlZWFmNWExMzdhMmFiNGRjMjQwYjk5N2I3Njk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRJ
bmZvLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
IlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTE5NCw3ICsxOTQsNyBAQCBCbG9j
a2VkU3RhdHVzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNp
b25SdWxlc0ZvckxvYWQoY29ucwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6Ok1ha2VIVFRQUzogewogICAgICAgICAgICAgaWYg
KCh1cmwucHJvdG9jb2xJcygiaHR0cCIpIHx8IHVybC5wcm90b2NvbElzKCJ3cyIpKQotICAgICAg
ICAgICAgICAgICYmICghdXJsLnBvcnQoKSB8fCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJs
LnBvcnQoKS52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpKQorICAgICAgICAgICAgICAgICYmICgh
dXJsLnBvcnQoKSB8fCBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZh
bHVlKCksIHVybC5wcm90b2NvbCgpKSkpCiAgICAgICAgICAgICAgICAgd2lsbE1ha2VIVFRQUyA9
IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjQ0LDcgKzI0NCw3IEBA
IEJsb2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudEV4
dGVuc2lvblJ1bGVzRm9yUGluZ0xvYWQoCiAgICAgICAgICAgICB3aWxsQmxvY2tDb29raWVzID0g
dHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpNYWtlSFRUUFM6Ci0gICAgICAgICAgICBpZiAoKHVybC5wcm90b2NvbElz
KCJodHRwIikgfHwgdXJsLnByb3RvY29sSXMoIndzIikpICYmICghdXJsLnBvcnQoKSB8fCBpc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBvcnQoKS52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkp
KQorICAgICAgICAgICAgaWYgKCh1cmwucHJvdG9jb2xJcygiaHR0cCIpIHx8IHVybC5wcm90b2Nv
bElzKCJ3cyIpKSAmJiAoIXVybC5wb3J0KCkgfHwgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wodXJsLnBvcnQoKS52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpKQogICAgICAgICAgICAgICAg
IHdpbGxNYWtlSFRUUFMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3I6CkBA
IC0yNzUsMTIgKzI3NSwxMiBAQCB2b2lkIGFwcGx5QmxvY2tlZFN0YXR1c1RvUmVxdWVzdChjb25z
dCBCbG9ja2VkU3RhdHVzJiBzdGF0dXMsIFBhZ2UqIHBhZ2UsIFJlc291cgogICAgIGlmIChzdGF0
dXMubWFkZUhUVFBTKSB7CiAgICAgICAgIGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwgPSByZXF1ZXN0
LnVybCgpOwogICAgICAgICBBU1NFUlQob3JpZ2luYWxVUkwucHJvdG9jb2xJcygiaHR0cCIpKTsK
LSAgICAgICAgQVNTRVJUKCFvcmlnaW5hbFVSTC5wb3J0KCkgfHwgaXNEZWZhdWx0UG9ydEZvclBy
b3RvY29sKG9yaWdpbmFsVVJMLnBvcnQoKS52YWx1ZSgpLCBvcmlnaW5hbFVSTC5wcm90b2NvbCgp
KSk7CisgICAgICAgIEFTU0VSVCghb3JpZ2luYWxVUkwucG9ydCgpIHx8IFdURjo6aXNEZWZhdWx0
UG9ydEZvclByb3RvY29sKG9yaWdpbmFsVVJMLnBvcnQoKS52YWx1ZSgpLCBvcmlnaW5hbFVSTC5w
cm90b2NvbCgpKSk7CiAKICAgICAgICAgVVJMIG5ld1VSTCA9IG9yaWdpbmFsVVJMOwogICAgICAg
ICBuZXdVUkwuc2V0UHJvdG9jb2woImh0dHBzIik7CiAgICAgICAgIGlmIChvcmlnaW5hbFVSTC5w
b3J0KCkpCi0gICAgICAgICAgICBuZXdVUkwuc2V0UG9ydChkZWZhdWx0UG9ydEZvclByb3RvY29s
KCJodHRwcyIpLnZhbHVlKCkpOworICAgICAgICAgICAgbmV3VVJMLnNldFBvcnQoV1RGOjpkZWZh
dWx0UG9ydEZvclByb3RvY29sKCJodHRwcyIpLnZhbHVlKCkpOwogICAgICAgICByZXF1ZXN0LnNl
dFVSTChuZXdVUkwpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKaW5kZXggYTI5NmZm
OTdmYmNmZWM5MGI1YTYwY2ZlYzNjODBjNDBlOGU0MTgzMy4uMzRjZmFjYTUwMWZkM2M3MmM5NjY3
ZThmNGI3MGRlMjc3YWFjNWM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKQEAgLTM3LDcgKzM3
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIAogc3RydWN0IFJlc291cmNlTG9hZEluZm87
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggNWQzODZhZmRmYjI5NzNmNjk2MDI3MWNmMzY3OTEy
YTFlMzc3NDNlNC4uMzZjN2M2NGRjYjg0MjcwMjQ2MzBmMGY3OTE2MzFiNzc4ZGRhOTg3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTIwLDEyICsyMCwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnRpZXMuaAppbmRleCAzZjRiNjVhYjcyODhkZDBmM2IxNjFiYTQxYmQ1MDVkZjJlMzc1NTBj
Li4zNDIxNjNkYjUwMzYzNjIwNDgzZWJkMDJiM2JjYzkyZmRjNmEyODFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydGllcy5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIENTU1N0eWxlRGVj
bGFyYXRpb247CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENvbG9yOwogY2xhc3MgSW1t
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOwotY2xhc3MgVVJMOwogY2xhc3MgTXV0YWJsZVN0eWxlUHJv
cGVydGllczsKIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIFN0
eWxlZEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA0ZTQ4YzMwNGE1
NzcxMWUzZjc3NDg2ZjNjOTY3NjJkNjRmZTFiMTA2Li4yMGNmY2Q3MTE1MjViM2ZkYzAzNDA4ZmNl
MjU2M2M0NjE0M2JlZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTU3LDcg
KzU3LDYgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBVUkw7CiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFzcyBL
ZXlmcmFtZVZhbHVlOwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
aGVldC5oCmluZGV4IGU4YjViZmM1NjI4N2E0ZDk4MjhlODkzZDg1NzljYmE4YjhlZWJjYzIuLmJh
YjRlNjI3OTQ3YjZlZTg1ZDg0OTk1YzNmZDAyMzQyMThkNDM4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXQuaApAQCAtMzAsNyArMzAsNiBAQCBjbGFzcyBDU1NJbXBvcnRSdWxlOwogY2xhc3MgTWVk
aWFMaXN0OwogY2xhc3MgTm9kZTsKIGNsYXNzIFN0eWxlU2hlZXQ7Ci1jbGFzcyBVUkw7CiAKIGNs
YXNzIFN0eWxlU2hlZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVNoZWV0PiB7CiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKaW5kZXggMmMyYmQxMTdhZTBh
NWIyM2RmMjUwMTRiOWU1YjkzMTA3ZDk1OGE0NS4uZDExMjA5ODRmNWY0NDdhN2QyZmI0MTdlZmM4
MWNmOTU2ZDlhYTNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaApA
QCAtMjIsMTAgKzIyLDEwIEBACiAKICNpbmNsdWRlICJDU1NQYXJzZXJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiQ2FjaGVQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hh
c2guaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKaW5k
ZXggMWVmNzcxMWZkMGNiZGI1MTUyMGZmZGFkODYyMzc3Nzc2ODkyZDI2NC4uZGJkMjM3NzUzNGE0
Yzk4NzU5OWFlMWJjYTRmOGEzNzJjNWQ1ZGEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJDb250ZXh0LmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkNT
U1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlICJVUkwu
aCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgzLDcg
KzgzLDcgQEAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgc3RyaWN0Q1NT
UGFyc2VyQ29udGV4dCgpOwogc3RydWN0IENTU1BhcnNlckNvbnRleHRIYXNoIHsKICAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBrZXkpCiAgICAgewotICAg
ICAgICBhdXRvIGhhc2ggPSBVUkxIYXNoOjpoYXNoKGtleS5iYXNlVVJMKTsKKyAgICAgICAgYXV0
byBoYXNoID0gV1RGOjpVUkxIYXNoOjpoYXNoKGtleS5iYXNlVVJMKTsKICAgICAgICAgaWYgKCFr
ZXkuY2hhcnNldC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBoYXNoIF49IFN0cmluZ0hhc2g6Omhh
c2goa2V5LmNoYXJzZXQpOwogICAgICAgICB1bnNpZ25lZCBiaXRzID0ga2V5LmlzSFRNTERvY3Vt
ZW50ICAgICAgICAgICAgICAgICAgPDwgMApAQCAtMTE1LDcgKzExNSw3IEBAIHN0cnVjdCBDU1NQ
YXJzZXJDb250ZXh0SGFzaCB7CiAKIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3Qg
SGFzaFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0PiA6IEdlbmVyaWNIYXNoVHJhaXRz
PFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+IHsKLSAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3RE
ZWxldGVkVmFsdWUoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCYgc2xvdCkgeyBuZXcgKE5vdE51
bGwsICZzbG90LmJhc2VVUkwpIFdlYkNvcmU6OlVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSk7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6Q1NT
UGFyc2VyQ29udGV4dCYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LmJhc2VVUkwpIFVSTChX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRW
YWx1ZShjb25zdCBXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUuYmFzZVVSTC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAgICAgc3RhdGljIFdlYkNv
cmU6OkNTU1BhcnNlckNvbnRleHQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OkNTU1Bh
cnNlckNvbnRleHQoV2ViQ29yZTo6SFRNTFN0YW5kYXJkTW9kZSk7IH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAppbmRleCA4NzFkNTk5MWI1NzZiYjMw
ZjQ2NTg3ODExODczZGFmNmZhNThiY2E0Li4yNTc1YzBkZjJiODdjNTkwNWY3ZGJjMmNlNmZjYzM1
NGZiN2E5N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
cklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21z
LmgKQEAgLTM1LDggKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFVSTDsKICAgICAKIC8vIFNwYWNlIGNoYXJhY3RlcnMg
YXMgZGVmaW5lZCBieSB0aGUgQ1NTIHNwZWNpZmljYXRpb24uCiAvLyBodHRwOi8vd3d3LnczLm9y
Zy9UUi9jc3MzLXN5bnRheC8jd2hpdGVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNw
cAppbmRleCA2ZDM5ZGE0NTVkNDJmMzM4MmRjNzQyNWRhZDgwMDdiZmQ2NzA3YjllLi42MGUzYjdj
ZTY5YmY5ODA4NDY1MTE3YzhhNjQzODYzOWIxNzQ1MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVyLmNwcApAQCAtNDMsMTAgKzQzLDEwIEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RhdGljUGFzdGVi
b2FyZC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1ZGUgIldlYkNvbnRlbnRSZWFk
ZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCIKICNpbmNsdWRl
ICJtYXJrdXAuaCIKKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjU1LDcg
KzI1NSw3IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0ZW1MaXN0KGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIGlmICh0eXBlID09ICJ0ZXh0L2h0
bWwiKQogICAgICAgICBzYW5pdGl6ZWREYXRhID0gc2FuaXRpemVNYXJrdXAoZGF0YSk7CiAgICAg
ZWxzZSBpZiAodHlwZSA9PSAidGV4dC91cmktbGlzdCIpIHsKLSAgICAgICAgYXV0byB1cmwgPSBV
UkxQYXJzZXIoZGF0YSkucmVzdWx0KCk7CisgICAgICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgZGF0
YSk7CiAgICAgICAgIGlmICh1cmwuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2FuaXRpemVkRGF0
YSA9IHVybC5zdHJpbmcoKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gInRleHQvcGxhaW4iKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZjU4ZWIyZTU5Y2IwZDhiMTFjYjVhNTY0MmMwMWU0
MWZiYmVjOGRlZi4uODcyNGU4MTE0YmIyMTRiNTAyY2VjYTk4YWM2ZjBjMjc3ZDI5Y2VhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMTM2LDcgKzMxMzYsNyBAQCB2b2lkIERvY3VtZW50
Ojpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgcwogCiB2b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgVVJMJiB1cmwpCiB7Ci0g
ICAgY29uc3QgVVJMJiBuZXdVUkwgPSB1cmwuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IHVybDsK
KyAgICBjb25zdCBVUkwmIG5ld1VSTCA9IHVybC5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkg
OiB1cmw7CiAgICAgaWYgKG5ld1VSTCA9PSBtX3VybCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0z
NDI2LDcgKzM0MjYsNyBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0
cmluZyYgZXF1aXYsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbAogICAgICAgICAgICAgICAg
IGNvbXBsZXRlZFVSTCA9IG1fdXJsOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IGNvbXBsZXRlZFVSTCA9IGNvbXBsZXRlVVJMKHVybFN0cmluZyk7Ci0gICAgICAgICAgICBpZiAo
IXByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlZFVSTCkpCisgICAgICAgICAgICBpZiAoIVdU
Rjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKICAgICAgICAgICAgICAgICBm
cmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVkaXJlY3QoKnRoaXMsIGRlbGF5
LCBjb21wbGV0ZWRVUkwpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgU3Ry
aW5nIG1lc3NhZ2UgPSAiUmVmdXNlZCB0byByZWZyZXNoICIgKyBtX3VybC5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSArICIgdG8gYSBqYXZhc2NyaXB0OiBVUkwiOwpAQCAtNDg4OCw3
ICs0ODg4LDcgQEAgVVJMIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgVVJMJiBiYXNlVVJMT3ZlcnJpZGUpIGNvbnN0CiAgICAgLy8gU2VlIGFsc28gW0NTU11T
dHlsZVNoZWV0Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKQogICAgIGlmICh1cmwuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBVUkwoKTsKLSAgICBjb25zdCBVUkwmIGJhc2VVUkwgPSAoKGJh
c2VVUkxPdmVycmlkZS5pc0VtcHR5KCkgfHwgYmFzZVVSTE92ZXJyaWRlID09IGJsYW5rVVJMKCkp
ICYmIHBhcmVudERvY3VtZW50KCkpID8gcGFyZW50RG9jdW1lbnQoKS0+YmFzZVVSTCgpIDogYmFz
ZVVSTE92ZXJyaWRlOworICAgIGNvbnN0IFVSTCYgYmFzZVVSTCA9ICgoYmFzZVVSTE92ZXJyaWRl
LmlzRW1wdHkoKSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0gV1RGOjpibGFua1VSTCgpKSAmJiBwYXJl
bnREb2N1bWVudCgpKSA/IHBhcmVudERvY3VtZW50KCktPmJhc2VVUkwoKSA6IGJhc2VVUkxPdmVy
cmlkZTsKICAgICBpZiAoIW1fZGVjb2RlcikKICAgICAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1
cmwpOwogICAgIHJldHVybiBVUkwoYmFzZVVSTCwgdXJsLCBtX2RlY29kZXItPmVuY29kaW5nRm9y
VVJMUGFyc2luZygpKTsKQEAgLTcxNjIsOSArNzE2Miw5IEBAIERvY3VtZW50JiBEb2N1bWVudDo6
ZW5zdXJlVGVtcGxhdGVEb2N1bWVudCgpCiAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PERvY3Vt
ZW50Jj4oKmRvY3VtZW50KTsKIAogICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQotICAgICAgICBt
X3RlbXBsYXRlRG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBibGFua1VS
TCgpKTsKKyAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUo
bnVsbHB0ciwgV1RGOjpibGFua1VSTCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fdGVtcGxhdGVE
b2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgYmxhbmtVUkwoKSk7CisgICAgICAg
IG1fdGVtcGxhdGVEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgV1RGOjpibGFu
a1VSTCgpKTsKIAogICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0Q29udGV4dERvY3VtZW50KGNv
bnRleHREb2N1bWVudCgpKTsKICAgICBtX3RlbXBsYXRlRG9jdW1lbnQtPnNldFRlbXBsYXRlRG9j
dW1lbnRIb3N0KHRoaXMpOyAvLyBiYWxhbmNlZCBpbiBkdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBhNzk2YjQ5MDdjMTIxNThjMDZiZmE2MjUzMWQ4ZjE3ZWNlMGFhYzQyLi4xZDljZjg0NDgz
YzRlMWJiMzlhZTI5NzM0NjQ3M2ExY2U2MzM1YmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
NjcxLDcgKzY3MSw3IEBAIGNsYXNzIERvY3VtZW50CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJik7
Ci0gICAgY29uc3QgVVJMJiB1cmxGb3JCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmlz
RW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsRm9yQmlu
ZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3VybC5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkg
OiBtX3VybDsgfQogCiAgICAgLy8gVG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY29uY2VwdHMgcmVs
YXRlIHRvIG9uZSBhbm90aGVyLCBwbGVhc2Ugc2VlIHRoZQogICAgIC8vIGNvbW1lbnRzIHN1cnJv
dW5kaW5nIHRoZWlyIGRlY2xhcmF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGQ5MWZl
NDMxNWU2MjZmMTQwZGM2OGJlNTk1N2Y2YTA0ZDZmNDYwMDcuLjhiMzdiOWZmMzJmNmM4YTU5OGFm
MjZlZWFhMDI4MDU2YTM0YzQ1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE3MTksNyAr
MTcxOSw3IEBAIGJvb2wgRWxlbWVudDo6aXNFdmVudEhhbmRsZXJBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAKIGJvb2wgRWxlbWVudDo6aXNKYXZhU2NyaXB0VVJM
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogewotICAgIHJldHVy
biBpc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUudmFsdWUoKSkpOworICAgIHJl
dHVybiBpc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpICYmIFdURjo6cHJvdG9jb2xJc0phdmFTY3Jp
cHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZS52YWx1ZSgpKSk7
CiB9CiAKIHZvaWQgRWxlbWVudDo6c3RyaXBTY3JpcHRpbmdBdHRyaWJ1dGVzKFZlY3RvcjxBdHRy
aWJ1dGU+JiBhdHRyaWJ1dGVWZWN0b3IpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCmluZGV4IDhlZWMyNmE5ZDU0NGUxMzg0NmQ4YTQwNDM5NjVm
Y2Q3MDVlMjA0NzAuLmMyN2ZkZTQ4ZDY2MGJkNTlkYzYyZmE0M2JjYWQ2NWI0YmFiMDU2ZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC01MCw3
ICs1MCw3IEBAIHN0YXRpYyBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHRGb3JFbGVtZW50
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgYXV0byogc2hhZG93Um9vdCA9IGVsZW1l
bnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKTsKICAgICAvLyBVc2VyIGFnZW50IHNoYWRvdyB0cmVl
cyBjYW4ndCBjb250YWluIGRvY3VtZW50LXJlbGF0aXZlIFVSTHMuIFVzZSBibGFuayBVUkwgYXMg
YmFzZSBhbGxvd2luZyBjcm9zcy1kb2N1bWVudCBzaGFyaW5nLgotICAgIGF1dG8mIGJhc2VVUkwg
PSBzaGFkb3dSb290ICYmIHNoYWRvd1Jvb3QtPm1vZGUoKSA9PSBTaGFkb3dSb290TW9kZTo6VXNl
ckFnZW50ID8gYmxhbmtVUkwoKSA6IGVsZW1lbnQuZG9jdW1lbnQoKS5iYXNlVVJMKCk7CisgICAg
YXV0byYgYmFzZVVSTCA9IHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRv
d1Jvb3RNb2RlOjpVc2VyQWdlbnQgPyBXVEY6OmJsYW5rVVJMKCkgOiBlbGVtZW50LmRvY3VtZW50
KCkuYmFzZVVSTCgpOwogCiAgICAgQ1NTUGFyc2VyQ29udGV4dCByZXN1bHQgPSBDU1NQYXJzZXJD
b250ZXh0IHsgZWxlbWVudC5kb2N1bWVudCgpLCBiYXNlVVJMLCBlbGVtZW50LmRvY3VtZW50KCku
Y2hhcmFjdGVyU2V0V2l0aFVURjhGYWxsYmFjaygpIH07CiAgICAgaWYgKHNoYWRvd1Jvb3QgJiYg
c2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKaW5kZXggYTUyMDJkNWM1ZGFjZWU4Mjg5NmM0ZTAzNzI3NDcxNTdmOTg2MTk4My4uZjNk
ZTcwMWQ2ZDRiYTg0NTYxNzJmNjY0M2M2MWY5NTE0YWUzNGE2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApA
QCAtMTM0OCw3ICsxMzQ4LDcgQEAgRG9jdW1lbnQqIE5vZGU6Om93bmVyRG9jdW1lbnQoKSBjb25z
dAogY29uc3QgVVJMJiBOb2RlOjpiYXNlVVJJKCkgY29uc3QKIHsKICAgICBhdXRvJiB1cmwgPSBk
b2N1bWVudCgpLmJhc2VVUkwoKTsKLSAgICByZXR1cm4gdXJsLmlzTnVsbCgpID8gYmxhbmtVUkwo
KSA6IHVybDsKKyAgICByZXR1cm4gdXJsLmlzTnVsbCgpID8gV1RGOjpibGFua1VSTCgpIDogdXJs
OwogfQogCiBib29sIE5vZGU6OmlzRXF1YWxOb2RlKE5vZGUqIG90aGVyKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggNTJkYTZkMTFhMDEwZmY0M2EzNjk1NTVhZjc3OTk0NjFiY2EyYTU4Yi4uMTI0Mzlk
NzhkMzVjNGMyODIxYTcyNTRkMDMyMTQ1MDM1ZmI0N2Y5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zMSwx
MSArMzEsMTEgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUg
IlN0eWxlVmFsaWRpdHkuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKLSNpbmNsdWRlICJVUkxI
YXNoLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiAvLyBUaGlzIG5lZWRzIHRvIGJlIGhl
cmUgYmVjYXVzZSBEb2N1bWVudC5oIGFsc28gZGVwZW5kcyBvbiBpdC4KICNkZWZpbmUgRFVNUF9O
T0RFX1NUQVRJU1RJQ1MgMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKaW5kZXggYTYxZGFk
NDVlOWU0NDRmYTMyMmU1OTgyMmI0ZThlNmIxZThmNmRiNy4uNjI0NTRlNzkzY2IxMzM0ZjY0Y2Nm
M2JlMjA5NWQzM2NhOWE3MmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCkBAIC0z
NSw3ICszNSw2IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdDsK
IGNsYXNzIFBlbmRpbmdTY3JpcHQ7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwotY2xhc3MgVVJM
OwogCiBjbGFzcyBTY3JpcHRFbGVtZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDNiZGZjYzgwZGJlNmU2YWRhZDU4NzdkMWZl
ZTMwMTEyNzM3NmQ1NjMuLjRiMjNmNDdmN2RlM2RiZTBkZmNjYTRiYWMyN2YwNDUyNjlmZjgwMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNjgs
NyArNjgsNiBAQCBjbGFzcyBSZWplY3RlZFByb21pc2VUcmFja2VyOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKLWNs
YXNzIFVSTDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIGNsYXNzIFNlcnZpY2VXb3Jr
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKaW5kZXggOWYyMTVmYmExYjUzZjI1
NjE1Y2MwZGEzY2M3MzQyMDUwMTI1YWNhNS4uYzBjYzhlMjExMDlkNjNiZjRhMzJlOWI1YTdjNGYx
OTVhNDgwNzBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaApAQCAtMzcsNyAr
MzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNz
IFNlY3VyaXR5T3JpZ2luUG9saWN5OwogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5OwotY2xh
c3MgVVJMOwogCiBlbnVtIFNhbmRib3hGbGFnIHsKICAgICAvLyBTZWUgaHR0cDovL3d3dy53aGF0
d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jYXR0ci1pZnJhbWUtc2FuZGJveCBm
b3IgYSBsaXN0IG9mIHRoZSBzYW5kYm94IGZsYWdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IGI3ZjNlOGMxM2IyOTZjOTYxMjExYWZhOGJkMDJmOTA1OTNjOTMxMTcuLjY4OGRhNmZh
YWQ4NjJlOTk0YTcyNzlmM2FkZmI0Njk0YTM5MjI3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKQEAgLTE1MTAsOSArMTUxMCw5IEBAIHZvaWQgRWRpdG9yOjpjb3B5VVJMKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkCiAgICAg
cGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkVVJMKTsKIH0KIAotUGFzdGVib2FyZFdyaXRlckRh
dGE6OlVSTCBFZGl0b3I6OnBhc3RlYm9hcmRXcml0ZXJVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdGl0bGUpCitQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMRGF0YSBFZGl0b3I6OnBh
c3RlYm9hcmRXcml0ZXJVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7
Ci0gICAgUGFzdGVib2FyZFdyaXRlckRhdGE6OlVSTCByZXN1bHQ7CisgICAgUGFzdGVib2FyZFdy
aXRlckRhdGE6OlVSTERhdGEgcmVzdWx0OwogCiAgICAgcmVzdWx0LnVybCA9IHVybDsKICAgICBy
ZXN1bHQudGl0bGUgPSB0aXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDZmZjI4NjZi
MTQ4ZmRmNGZmOTIwNWNkM2RmZjk0ZWQwMmJlYzk1M2IuLmZjMjU0MDMyMjkyMWRmMmZiZTc2MWVj
NjY5YjQzNjEyODI4NjM3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMTcwLDcgKzE3
MCw3IEBAIGNsYXNzIEVkaXRvciB7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlVUkwo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgdm9pZCBjb3B5VVJMKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmKTsKLSAgICBQYXN0ZWJvYXJk
V3JpdGVyRGF0YTo6VVJMIHBhc3RlYm9hcmRXcml0ZXJVUkwoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSk7CisgICAgUGFzdGVib2FyZFdyaXRlckRhdGE6OlVSTERhdGEgcGFzdGVib2Fy
ZFdyaXRlclVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICNpZiAhUExBVEZP
Uk0oSU9TKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weUltYWdlKGNvbnN0IEhpdFRlc3RS
ZXN1bHQmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJr
dXBBY2N1bXVsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmNwcAppbmRleCA0NWFlZTU5NGM1NzFkYTZlZmU3NDA1NDgxZGRhMTJjZjM3OTFkM2Q0Li5h
NWRjMGVkMjZmYjg2MGE3ODIwZTIwMjc3YzAwNTc0OTI5YjU1MGM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SFRNTFRlbXBsYXRlRWxlbWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJYTGlu
a05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgpAQCAtMjMyLDcgKzIzMiw3IEBAIHZv
aWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFF1b3RlZFVSTEF0dHJpYnV0ZVZhbHVlKFN0cmlu
Z0J1aWxkZXImIHJlc3VsdCwgY29uCiAgICAgY29uc3QgU3RyaW5nIHJlc29sdmVkVVJMU3RyaW5n
ID0gcmVzb2x2ZVVSTElmTmVlZGVkKGVsZW1lbnQsIGF0dHJpYnV0ZS52YWx1ZSgpKTsKICAgICBV
Q2hhciBxdW90ZUNoYXIgPSAnIic7CiAgICAgU3RyaW5nIHN0cmlwcGVkVVJMU3RyaW5nID0gcmVz
b2x2ZWRVUkxTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgaWYgKHByb3RvY29sSXNKYXZh
U2NyaXB0KHN0cmlwcGVkVVJMU3RyaW5nKSkgeworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZh
U2NyaXB0KHN0cmlwcGVkVVJMU3RyaW5nKSkgewogICAgICAgICAvLyBtaW5pbWFsIGVzY2FwaW5n
IGZvciBqYXZhc2NyaXB0IHVybHMKICAgICAgICAgaWYgKHN0cmlwcGVkVVJMU3RyaW5nLmNvbnRh
aW5zKCciJykpIHsKICAgICAgICAgICAgIGlmIChzdHJpcHBlZFVSTFN0cmluZy5jb250YWlucygn
XCcnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmgKaW5k
ZXggZjI1ZmFhZTM3NTcwNjExZTdkZjIyOWVlOGFmMTMzZjQ1ZGFhZjdmNC4uMTUwNGY2ZjM0Zjdl
MTVmY2EyYzcwYjQ0Mzc2YTE2ODhjNGY1N2Y3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3MgRWxlbWVudDsK
IGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBSYW5nZTsKLWNs
YXNzIFVSTDsKIAogZW51bSBEYXRhRGV0ZWN0b3JUeXBlcyB7CiAgICAgRGF0YURldGVjdG9yVHlw
ZU5vbmUgPSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0K
aW5kZXggYWJlM2RiM2YzYTk2ZWQxNGI2NDBjOWFmNDQ5MzNmMmQyMzExYjNhOC4uZTMxMjlhYjJm
YTUxNTc0NTBjOGRhZGRjZDU1ZGQ3NjE1MTQxNzVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC01MiwxMSArNTIsMTEgQEAKICNpbXBvcnQgIlNl
dHRpbmdzLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1wb3J0ICJXZWJDb250ZW50UmVhZGVyLmgi
Ci0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNl
U2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1
dGVkCiAKIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOworICAgIHJldHVy
biBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KaW5kZXggYzVhODhmM2FkNWFmNGJkYWNlMTM2NDA4OTBkN2NhMDk5ZDRiZjIzNi4uZDU3
ZjFhZTU2MzE0ZDI5YzI4MzBjMWQyYzRiNzJlMDQ3ZjBkMzk5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTU0
LDcgKzU0LDYgQEAKICNpbXBvcnQgIlNldHRpbmdzLmgiCiAjaW1wb3J0ICJTb2NrZXRQcm92aWRl
ci5oIgogI2ltcG9ydCAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW1wb3J0
ICJVUkxQYXJzZXIuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQXJj
aGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2
ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVyLmgiCkBAIC02Miw2ICs2MSw3IEBACiAjaW1wb3J0
ICJtYXJrdXAuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIu
aD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJMb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlLmgiCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250
ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKIAog
ICAgICAgICBhdXRvIG5hbWUgPSBpbWFnZS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6YWx0QXR0cik7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG5hbWUgPSBVUkxQYXJzZXIgeyByZXNvdXJjZVVSTFN0cmluZyB9LnJlc3VsdCgpLmxh
c3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAgICAgICBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VV
UkxTdHJpbmcpLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHko
KSkKICAgICAgICAgICAgIG5hbWUgPSBBdG9taWNTdHJpbmcoIm1lZGlhIik7CiAKQEAgLTMwNiw3
ICszMDYsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMo
RnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAocmVzb3VyY2Ug
PT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGF1dG8gbmFtZSA9IFVSTFBhcnNlciB7IHJlc291cmNlVVJMU3RyaW5nIH0ucmVzdWx0KCku
bGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgYXV0byBuYW1lID0gVVJMKHsgfSwgcmVzb3Vy
Y2VVUkxTdHJpbmcpLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIG5hbWUgPSBBdG9taWNTdHJpbmcoImZpbGUiKTsKIApAQCAtNTE4
LDcgKzUxOCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgU3RyaW5nIHNhbml0aXplZE1hcmt1cCA9IHNhbml0aXplTWFy
a3VwV2l0aEFyY2hpdmUoZnJhbWUsICpmcmFtZS5kb2N1bWVudCgpLCAqcmVzdWx0LCBtc29MaXN0
UXVpcmtzRm9yTWFya3VwKCksIFsmXSAoY29uc3QgU3RyaW5nJiB0eXBlKSB7CiAgICAgICAgIHJl
dHVybiBmcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSk7
CiAgICAgfSk7Ci0gICAgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1l
LmRvY3VtZW50KCksIHNhbml0aXplZE1hcmt1cCwgYmxhbmtVUkwoKSwgRGlzYWxsb3dTY3JpcHRp
bmdBbmRQbHVnaW5Db250ZW50KTsKKyAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1h
cmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgc2FuaXRpemVkTWFya3VwLCBXVEY6OmJsYW5rVVJMKCks
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CiAKICAgICBpZiAoIWZyYWdtZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KaW5kZXggZjFjZDUzYzllMzM4ZDFhYWFmNTMwYTkwODExOGZmZTA4OGIyODI0Zi4uNDYy
MmY4NjZiZDIwNjExODVmMzI5NTVlZTdlNzliZTFkNjkyZjI1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtNTIsMTEgKzUyLDExIEBACiAjaW1wb3J0ICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW1wb3J0ICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbXBv
cnQgIldlYkNvbnRlbnRSZWFkZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgog
I2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAu
aCIKICNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KICNpbXBvcnQgPHBhbC9zeXN0ZW0vU291bmQu
aD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTI1Myw3ICsyNTMsNyBAQCBTdHJpbmcgRWRpdG9yOjpwbGFpblRleHRGcm9tUGFz
dGVib2FyZChjb25zdCBQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0KQogICAgIC8vIEZJWE1FOiBJ
dCdzIG5vdCBjbGVhciB0aGlzIGlzIDEwMCUgY29ycmVjdCBzaW5jZSB3ZSBrbm93IC1bTlNVUkwg
VVJMV2l0aFN0cmluZzpdIGRvZXMgbm90IGhhbmRsZQogICAgIC8vIGFsbCB0aGUgc2FtZSBjYXNl
cyB3ZSBoYW5kbGUgd2VsbCBpbiB0aGUgVVJMIGNvZGUgZm9yIGNyZWF0aW5nIGFuIE5TVVJMLgog
ICAgIGlmICh0ZXh0LmlzVVJMKQotICAgICAgICBzdHJpbmcgPSB1c2VyVmlzaWJsZVN0cmluZyhb
TlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsKKyAgICAgICAgc3RyaW5nID0gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsKIAogICAgIC8vIEZJ
WE1FOiBXVEYgc2hvdWxkIG9mZmVyIGEgbm9uLU1hYy1zcGVjaWZpYyB3YXkgdG8gY29udmVydCBz
dHJpbmcgdG8gcHJlY29tcG9zZWQgZm9ybSBzbyB3ZSBjYW4gZG8gaXQgZm9yIGFsbCBwbGF0Zm9y
bXMuCiAgICAgcmV0dXJuIFsoTlNTdHJpbmcgKilzdHJpbmcgcHJlY29tcG9zZWRTdHJpbmdXaXRo
Q2Fub25pY2FsTWFwcGluZ107CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBFZGl0b3I6OndyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VF
bGVtZW4KICAgICBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCA9IGltYWdl
SW5XZWJBcmNoaXZlRm9ybWF0KGltYWdlRWxlbWVudCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnVy
bC51cmwgPSB1cmw7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwotICAg
IHBhc3RlYm9hcmRJbWFnZS51cmwudXNlclZpc2libGVGb3JtID0gdXNlclZpc2libGVTdHJpbmco
cGFzdGVib2FyZEltYWdlLnVybC51cmwpOworICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXNlclZp
c2libGVGb3JtID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhwYXN0ZWJvYXJkSW1hZ2UudXJsLnVy
bCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNv
dXJjZUJ1ZmZlcigpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gY2Fj
aGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCmluZGV4IDE3MjllMGQ5Mjg2Mjk2ZTA0NDc1MGVmZTg3NzZmNTA3ZGEzYjUxMjkuLmZmMWU1
NWI3OWM5Y2NjNzQyNTYzNjU0ZWMyZDcxNjQ3NjA4ZjM5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKQEAgLTc0LDExICs3NCwxMSBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5o
IgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5o
IgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMu
aCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIHJl
bW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBmcmFn
bWVudCwgV1RGOjpGdW5jdAogICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRl
IDogZWxlbWVudC5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgd29uJ3Qgd29yayBmb3Igc3Jjc2V0LgogICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXR0
cmlidXRlQ29udGFpbnNVUkwoYXR0cmlidXRlKSAmJiAhYXR0cmlidXRlLnZhbHVlKCkuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICAgICAgVVJMIHVybCA9IFVSTFBhcnNlciB7IGF0dHJpYnV0ZS52
YWx1ZSgpIH0ucmVzdWx0KCk7CisgICAgICAgICAgICAgICAgVVJMIHVybCh7IH0sIGF0dHJpYnV0
ZS52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlVVJMKHVybCkpCiAg
ICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNUb1JlbW92ZS5hcHBlbmQoeyBlbGVtZW50LCBh
dHRyaWJ1dGUubmFtZSgpIH0pOwogICAgICAgICAgICAgfQpAQCAtMTAzNiw3ICsxMDM2LDcgQEAg
UmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYKIAogICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3Vw
LCBmYWtlQm9keS5wdHIoKSwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAgcmVzdG9yZUF0dGFj
aG1lbnRFbGVtZW50c0luRnJhZ21lbnQoZnJhZ21lbnQpOwotICAgIGlmICghYmFzZVVSTC5pc0Vt
cHR5KCkgJiYgYmFzZVVSTCAhPSBibGFua1VSTCgpICYmIGJhc2VVUkwgIT0gZG9jdW1lbnQuYmFz
ZVVSTCgpKQorICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBXVEY6OmJs
YW5rVVJMKCkgJiYgYmFzZVVSTCAhPSBkb2N1bWVudC5iYXNlVVJMKCkpCiAgICAgICAgIGNvbXBs
ZXRlVVJMcyhmcmFnbWVudC5wdHIoKSwgYmFzZVVSTCk7CiAKICAgICByZXR1cm4gZnJhZ21lbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCAwYjgzMTRiODE1NGQyMDg1ZWExMjg0YzYyNzM2
Yjk1MDUyMjlmODJkLi4yMjQ4NmNlMmM4YWQ1ZWNkNTc0YjI4MTRkMGZiY2NmZDI0Mjc4NzgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3MgRG9jdW1lbnRG
cmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxFbGVtZW50
OwotY2xhc3MgVVJMOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBRdWFsaWZpZWRO
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IDYz
YjFlMGU1NzQxMWQwNjMzYzQxOThmNGFlMDkzNTNhMDM1NTEyN2UuLjczYTM2NTIyODc5OWMxNmI5
YTk4OGQ5YTExODllMGNmOTM4MGZlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKIAogI2luY2x1ZGUgIkZpbGVTdHJlYW0u
aCIKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9NZXNzYWdl
UXVldWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCmluZGV4IDRmMGU3YjI3
NzcxN2ExOWNjMjcwZGYyZTk2M2FiZWVmOTNmM2YzNTMuLjYyY2FmZmUyZDk4YWQxZDVkMTBmNGVk
Njg4MTdkYTkwNDk0ZWExNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5
bmNGaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJl
YW0uaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVT
dHJlYW1DbGllbnQ7CiBjbGFzcyBGaWxlU3RyZWFtOwotY2xhc3MgVVJMOwogCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBBc3luY0ZpbGVTdHJlYW0gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApp
bmRleCAyMDEzOWM0YzEyYTE0OTNlMDUzOGRjOWFiOTUxNjNiMTQ5OGNmOTYyLi45MGQ0NjU2OTk3
MzAxMjU4ZWU4NjgyOGU5YWI2MDc4YWMzZjg5YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAt
MzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlByb3BlcnR5QmFnLmgiCiAjaW5jbHVkZSAi
U2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKaW5kZXggYzZkZmVlNjU1MDE1M2UyYmY0ODhhMjdj
YzVhZThlMjBlOThlMDQ2MS4uMTQ2YzBkYjA0OWQ3MTU0OGQwZmMyZDg4OWU0NmJiNmY1NTY0OWFl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNp
bmNsdWRlICJCbG9iVVJMLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvVVVJRC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaApp
bmRleCAzNTllYWFmN2YyYTI2NjdiOGIyMmY3YTM1MDMyYTE1NzFkNjcyMGM0Li4zZDBhZTExYzEw
MzllMzQ4NGUwZWRmNzAwOTc3N2JmMmViZjliZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2JVUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwu
aApAQCAtMzAsNyArMzAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZS5oCmluZGV4IDU3NWYwZTc2ZDA5YTlkM2U1N2YyNThhZWNiZWYzMWYzNjBhNDhkZjAuLmRh
MmU4YmNhMzUyY2EzZmM3ZWM3Y2I0NTYyZDc5YmJiNzI4YmYwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZS5oCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJM
OwotCiBjbGFzcyBGaWxlIGZpbmFsIDogcHVibGljIEJsb2IgewogcHVibGljOgogICAgIHN0cnVj
dCBQcm9wZXJ0eUJhZyA6IEJsb2JQcm9wZXJ0eUJhZyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlckxvYWRlci5oCmluZGV4IGYzZGM2YzQ3OGM5ODAwNGE3YjEzNDBjMzI5ZWQ2ODgw
OGI3MjE4ZjAuLjFmNzc3OGU4ODllMzkzZDdmYjk2OTQ0M2NlOGViZTIxMjc0ZDRhMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCkBAIC0zMiw3ICszMiw3IEBA
CiAKICNpbmNsdWRlICJCbG9iUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGaWxlRXJyb3Iu
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVGV4
dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1Ro
cmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5oCmluZGV4IDQyNDZkN2VlYTBiMGU3M2I1MDlmYmM4MGQyNDFlMWNmZjk2
MjA5YzIuLmE5Yzc5ZmUyMjkyZjg5NWIzMWM2MGY3NTY3ZmZkMDQ5M2ZlZGM4MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBAIC0zNiw3
ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2JQYXJ0OwotY2xhc3Mg
VVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFRocmVhZGFibGVCbG9iUmVnaXN0
cnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCmluZGV4IGUwYmU1NzFhMjkwNjgz
MjViYTE3ZWNmM2ViZGZlYjg2YjZiZDgxOTguLjI5OGY3ODI4MzFhNjk2OTg2MzhmYzU5MmQyZjYz
MDU0NjNhMzA0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKQEAgLTI2LDcg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNjcmlwdENhY2hlZEZy
YW1lRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9I
aXN0b3J5SXRlbS5oCmluZGV4IGU3MmI1ODkzOTQ5ODFlY2VjNDEwN2Y2ZDYyYjc3YzlkNzQzODM1
MWQuLjIwYTM5NzMzZjg1MzNhOTAzNGU2NTZiYTdmN2FiMGEwNTQ4MmY0YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTU0LDcgKzU0LDYgQEAgY2xhc3MgRm9ybURhdGE7
CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEltYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQcnVuaW5nUmVhc29uOwogCiBXRUJDT1JFX0VYUE9S
VCBleHRlcm4gdm9pZCAoKm5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCkoSGlzdG9yeUl0ZW0qKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVVJMLmNwcAppbmRleCBhNzdiY2Q3MDcyM2YzY2Y5Y2ExMTY4MmU0NDZlZGZl
ODdkODEzOGY4Li4wYTA4YjU5NDY4NjU3MzJmMjhkYTMwZmI3ZjYzY2E0ZDMxNGVhOTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9ET01VUkwuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxET01V
Ukw+PiBET01VUkw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgRE9NVVJMJiBiYXNl
KQogCiBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9NVVJMOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiB1cmwpCiB7Ci0gICAgVVJMIGJhc2VVUkwgeyBibGFua1VSTCgpIH07CisgICAgVVJMIGJhc2VV
UkwgeyBXVEY6OmJsYW5rVVJMKCkgfTsKICAgICBVUkwgY29tcGxldGVVUkwgeyBiYXNlVVJMLCB1
cmwgfTsKICAgICBpZiAoIWNvbXBsZXRlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKaW5kZXggNTkwMjVjMmZiOTZm
MDI5OWFkOTE3ZTYxN2IyOTExYzMxYWI5MWQzNC4uZDMxM2Q3YTQ0NGQ4ZWE1NTM0ZjAwM2Y0NDUw
ZmRkYTBkNDYzNTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFV0aWxzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAK
aW5kZXggOWI5OWEzNDczMDk3MmQ0ZGQ3OTljMDgxYTBmOThmNjM3N2FiNWFkMC4uMzA0OGI0OTBm
YTUzZjNmZDQxNTFlMDIxMDQzNmM2NGZhOTQ3MTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKQEAgLTM3LDggKzM3LDggQEAKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdWJm
cmFtZUxvYWRlci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2Vk
KGNvbnN0IFVSTCYgY29tcGxldGVVUkwpIGNvbnN0CiAgICAgaWYgKGNvbXBsZXRlVVJMLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3Jp
cHQoY29tcGxldGVVUkwpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29t
cGxldGVVUkwpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gY29udGVudERvYyA9IHRoaXMt
PmNvbnRlbnREb2N1bWVudCgpOwogICAgICAgICBpZiAoY29udGVudERvYyAmJiAhU2NyaXB0Q29u
dHJvbGxlcjo6Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4oY29udGVudERvYy0+ZnJhbWUoKSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSFRNTEZy
YW1lRWxlbWVudEJhc2U6Om9wZW5VUkwoTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNr
Rm9yd2FyZExpc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fVVJMLmlzRW1wdHkoKSkK
LSAgICAgICAgbV9VUkwgPSBibGFua1VSTCgpLnN0cmluZygpOworICAgICAgICBtX1VSTCA9IFdU
Rjo6YmxhbmtVUkwoKS5zdHJpbmcoKTsKIAogICAgIFJlZlB0cjxGcmFtZT4gcGFyZW50RnJhbWUg
PSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFwYXJlbnRGcmFtZSkKQEAgLTE3OSw3ICsx
NzksNyBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbihjb25zdCBTdHJp
bmcmIHN0cikKIAogdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TG9jYXRpb24oSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG5ld0xvY2F0aW9uKQogewotICAgIGlmIChw
cm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobmV3
TG9jYXRpb24pKSkgeworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhuZXdMb2NhdGlvbikpKSB7CiAgICAgICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgY29udGVudERv
Y3VtZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMjMyYjNkY2IzMDMxODg5ZGM4MjZmOTg3ZDJiZDZmYjA4
NzU4ZTliNS4uYjFjY2Q3NTU3NTAwZmExYWI3NjBlMTI0MDAyM2EzYTllZmE2ZDM3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3Mg
SWNvbjsKIGNsYXNzIElucHV0VHlwZTsKIGNsYXNzIExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZl
cjsKIGNsYXNzIFJhZGlvQnV0dG9uR3JvdXBzOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgRGF0ZVRp
bWVDaG9vc2VyUGFyYW1ldGVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgK
aW5kZXggNTEwZjRjZmI2MzZkOWRhMTFlMjU4ZjllZTNhNDJmZWQ2ZWZkMzZjZC4uNjgyOGY5MzQz
YjU3MjQwOTVkYjYwMjE3NDI2ODc2NTQwNzBjZGY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5oCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRE9NVG9rZW5MaXN0OwogY2xhc3MgSFRNTExpbmtFbGVtZW50OwotY2xhc3MgVVJMOwogc3Ry
dWN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFz
cyBFdmVudFNlbmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDljMDliMDk0ODM5OTU1MTE1ODNkYjUxMjVkM2VjN2M3MzRjZGM2MGIuLjc3ZDBjYmZiN2Q0
ODA0YjcyMWIyM2Q0NDNlMDdiMDc2ZmM0NjliNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtMTY4LDggKzE2OCw4IEBACiAKIG5hbWVzcGFjZSBXVEYgewog
dGVtcGxhdGUgPD4KLXN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpVUkw+IHsKLSAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQorc3RydWN0IExvZ0Fy
Z3VtZW50PFVSTD4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVVJMJiB1cmwp
CiAgICAgewogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gNTEyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggMzIxM2M0NGFkYmYyOGYyNzBiNTI2
MGRjYTEzMDU1ZGU4YWE0M2Q5Yi4uOWU1YzI3Nzc3ZDY5M2U0ZjY0YmVmMWI3MzEyNTgzOTVjNGFk
MjMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
Y3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojppc0lt
YWdlVHlwZSgpCiBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFsbG93ZWRUb0xvYWRGcmFt
ZVVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVUkwgY29tcGxldGVVUkwgPSBkb2N1bWVu
dCgpLmNvbXBsZXRlVVJMKHVybCk7Ci0gICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIHByb3RvY29s
SXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKSAmJiAhZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigp
LmNhbkFjY2Vzcyhjb250ZW50RG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgaWYg
KGNvbnRlbnRGcmFtZSgpICYmIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwp
ICYmICFkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuY2FuQWNjZXNzKGNvbnRlbnREb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biBkb2N1bWVudCgpLmZyYW1lKCktPmlzVVJMQWxsb3dlZChjb21wbGV0ZVVSTCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlQml0bWFwLmgKaW5kZXggMjdhNDg5ZDRmNjU3YjZlNjlkYzRlOTlmOWQ0ZGM5
YjY5ZDdiY2M3Ny4uMTIwMGI4NzgxNjQ2ZjYxYTZmNzBjNDZiOTliY2M4ZWZjZjY1YWQxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaApAQCAtNDQsNyArNDQsNiBAQCBjbGFzcyBJbnRSZWN0
OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFBlbmRpbmdJbWFnZUJpdG1hcDsKIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgSW1hZ2VCaXRtYXBPcHRpb25z
OwogCiBjbGFzcyBJbWFnZUJpdG1hcCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBS
ZWZDb3VudGVkPEltYWdlQml0bWFwPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFn
bWVudFVSSVBhcnNlci5oCmluZGV4IDdjNzczNmMzNGViY2Y2NGQ5NDU2MDNkY2Q4NjM5MzllOGRi
MzdlNGMuLjEwYTJhMGQwZjUyMjRiMDUwYWQ1YzdmNGQxZDY1NmFmZWU4M2M3ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCkBAIC0yNywxNCArMjcs
MTIgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgTWVk
aWFGcmFnbWVudFVSSVBhcnNlciBmaW5hbCB7CiBwdWJsaWM6CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAppbmRleCBjZjE4NmMwYmE0MDBlMmEzYzIzMDRjYzc5
ZmZhZGJhOGFmM2FhMzYxLi43M2I1NDczNTc4ZTNiMGIzMWVhZjk1ZGE0MGMyMGFjMDk5YzA3MzY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2
LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIu
aCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVVJM
UmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKaW5kZXggZTMyNjU0NWRjY2I0OWJmYTZjNWFmZjky
M2EyYzVlMGMwZmE3NzVhNC4uZTY5ZGU0ZWQ4YzgzYmI4YThkYzRkMzY2ODYyMmNkM2ZkZDUzN2U3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKQEAgLTMzLDcgKzMzLDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdpc3RyeTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcAppbmRleCA2Y2EwYWMxYTIwMTNjZjZkNWQ4
ZGM1YzBlYTAzYjIxMTc5MmYxOTVlLi42M2JiM2NjMjYwMWEwNDNkMTQ5YzQ1YTI5ZWMxOGRhMTQw
YjVhZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwCkBAIC0zNiw3ICszNiw3
IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5h
bWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFJlZ2lzdHJ5LmgKaW5kZXggYmQ3NzJjZTVmMTdhNmI4N2RjMmY0NjI1YjcxYmUwMTEwM2Mz
Nzc0My4uODIyM2JiZDA3NTkwZGRhY2NlOWZkMTYwNGUzYWMwYmMwMTVmNjRhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVVJMUmVnaXN0cnkuaApAQCAtMzQsNyArMzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVVJMUmVnaXN0
cnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcAppbmRleCAzMGU4NTky
NGE3ODUyMGQ2NTkyMDkxYWQyZDMzYzA0MjBjZmVkZDQzLi40ZTdmYmFlZmRmMGE0MTZjYzY1NGFh
NzNkNTliN2JlODBiNDFkMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNl
YXJjaFBhcmFtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMu
Y3BwCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpbmNsdWRlICJVUkxTZWFyY2hQYXJhbXMuaCIKIAog
I2luY2x1ZGUgIkRPTVVSTC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgorI2luY2x1ZGUgPHd0
Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBVUkxTZWFyY2hQYXJhbXM6
OlVSTFNlYXJjaFBhcmFtcyhjb25zdCBTdHJpbmcmIGluaXQsIERPTVVSTCogYXNzb2NpYXRlZFVS
TCkKICAgICA6IG1fYXNzb2NpYXRlZFVSTChhc3NvY2lhdGVkVVJMKQotICAgICwgbV9wYWlycyhp
bml0LnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJp
bmdWaWV3KGluaXQpLnN1YnN0cmluZygxKSkgOiBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZv
cm0oaW5pdCkpCisgICAgLCBtX3BhaXJzKGluaXQuc3RhcnRzV2l0aCgnPycpID8gV1RGOjpVUkxQ
YXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhpbml0KS5zdWJzdHJpbmcoMSkp
IDogV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oaW5pdCkpCiB7CiB9CiAKQEAg
LTEzMywyMCArMTMzLDIwIEBAIHZvaWQgVVJMU2VhcmNoUGFyYW1zOjpyZW1vdmUoY29uc3QgU3Ry
aW5nJiBuYW1lKQogCiBTdHJpbmcgVVJMU2VhcmNoUGFyYW1zOjp0b1N0cmluZygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOworICAgIHJldHVybiBX
VEY6OlVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpOwogfQogCiB2b2lkIFVSTFNlYXJjaFBh
cmFtczo6dXBkYXRlVVJMKCkKIHsKICAgICBpZiAobV9hc3NvY2lhdGVkVVJMKQotICAgICAgICBt
X2Fzc29jaWF0ZWRVUkwtPnNldFF1ZXJ5KFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpKTsK
KyAgICAgICAgbV9hc3NvY2lhdGVkVVJMLT5zZXRRdWVyeShXVEY6OlVSTFBhcnNlcjo6c2VyaWFs
aXplKG1fcGFpcnMpKTsKIH0KIAogdm9pZCBVUkxTZWFyY2hQYXJhbXM6OnVwZGF0ZUZyb21Bc3Nv
Y2lhdGVkVVJMKCkKIHsKICAgICBBU1NFUlQobV9hc3NvY2lhdGVkVVJMKTsKICAgICBTdHJpbmcg
c2VhcmNoID0gbV9hc3NvY2lhdGVkVVJMLT5zZWFyY2goKTsKLSAgICBtX3BhaXJzID0gc2VhcmNo
LnN0YXJ0c1dpdGgoJz8nKSA/IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdW
aWV3KHNlYXJjaCkuc3Vic3RyaW5nKDEpKSA6IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9y
bShzZWFyY2gpOworICAgIG1fcGFpcnMgPSBzZWFyY2guc3RhcnRzV2l0aCgnPycpID8gV1RGOjpV
UkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhzZWFyY2gpLnN1YnN0cmlu
ZygxKSkgOiBXVEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShzZWFyY2gpOwogfQog
CiBzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gVVJMU2Vh
cmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1VSTFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKaW5kZXggYTA3
YzA4MTRmMTFlMTcxMTg0NTAzZTZhYTZhYWFkNmMwNDdkNDc1YS4uNjU2YWJmYmRhMGJkYmNlMzkz
Yjg4Y2M1MjM0NGI5Y2Q2MTZlNzZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9V
UkxVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaApAQCAtMTc0LDcg
KzE3NCw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICAgICAgICAgIC8vIHJlcXVpcmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAiIGlmIGl0IGlz
IHNldCB0byBlbXB0eSBzdHJpbmcuCiAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFs
dWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvciArIDEpICsgJzAnKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3Rv
Y29sKCkpKQorICAgICAgICAgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBv
cnQsIHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQo
dmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgcG9ydEVuZCkp
OwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldFBvcnQoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBp
dCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nLgogICAgIC8vIEZJWE1FOiBodHRwOi8vdXJsLnNwZWMu
d2hhdHdnLm9yZy8gZG9lc24ndCBhcHBlYXIgdG8gcmVxdWlyZSB0aGlzOyB0ZXN0IHdoYXQgYnJv
d3NlcnMgZG8KICAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50KCk7Ci0gICAgaWYgKGlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgaWYgKFdU
Rjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKICAgICAg
ICAgdXJsLnJlbW92ZVBvcnQoKTsKICAgICBlbHNlCiAgICAgICAgIHVybC5zZXRQb3J0KHBvcnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCBjMzQ2MTAyMTVlNTY5ZmU3YWExMTljYTUyMTZhN2Q4M2UxNTU2MjI5
Li5kNzcyM2VkZGVkZmFjODVhZWQ5ODNjNWE1NDFkNGMwMDIyZDM1Zjk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcApA
QCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRt
YXAuaCIKICNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDgxY2I1NWQ3N2UzMTgwNTY0NDcwNzc3N2ExZTI5OTU2
ZjQ0M2Y2NTguLjk4ZWM0NjJlZmViMzk1YjlhN2U5YzM5OTcwMThlYWFkNWVmN2ZjNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBIVE1M
SW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEltYWdlQml0bWFw
OwotY2xhc3MgVVJMOwogY2xhc3MgV2ViR0xPYmplY3Q7CiAKIGNsYXNzIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggNjc0ZGViYzY5OGRiOWI3MDAy
ZWI0MDUyMzM1YjllNmRiODFiNjRhMy4uNDIzMDkyNjhlOWJkZDA5NWFjOWJmMTZhZDlmNzMzMmEz
NzFjZDViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkRlY2ltYWwuaCIKICNpbmNs
dWRlICJRdWFsaWZpZWROYW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8bGltaXRz
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9kdG9hLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggNzE5MjhjN2NlYThlMTRmMDQ0ZGU0OWY5
ZDAxMzg0NzMwYWFhMmNlYi4uNjEwNGJlMzkyYmNlMzFjNjNjYTFlZjI0YWUxMmVlYjEzMTk1NWMw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTI0NCw3
ICsyNDQsNyBAQCBzdGF0aWMgYm9vbCBpc1NlbWljb2xvblNlcGFyYXRlZEF0dHJpYnV0ZShjb25z
dCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlKQogc3RhdGljIGJvb2wgc2VtaWNvbG9u
U2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoU3RyaW5nVmlldyBzZW1pY29sb25T
ZXBhcmF0ZWRWYWx1ZSkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBzZW1pY29sb25TZXBhcmF0
ZWRWYWx1ZS5zcGxpdCgnOycpKSB7Ci0gICAgICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh2
YWx1ZSkpCisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHZhbHVlKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC00NDYs
OSArNDQ2LDkgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbihjb25zdCBGaWx0
ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFs
c2U7CiAgICAgaWYgKG1fd2FzU2NyaXB0VGFnRm91bmRJblJlcXVlc3QpIHsKLSAgICAgICAgZGlk
QmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNyY0F0dHIs
IGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7
Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1
ZXN0LCBTVkdOYW1lczo6aHJlZkF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25T
dHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNl
QXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBYTGlua05hbWVzOjpocmVmQXR0ciwgYmxhbmtV
UkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAg
ICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNy
Y0F0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtl
QXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZklu
amVjdGVkKHJlcXVlc3QsIFNWR05hbWVzOjpocmVmQXR0ciwgV1RGOjpibGFua1VSTCgpLnN0cmlu
ZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAgICBkaWRCbG9j
a1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgWExpbmtOYW1lczo6
aHJlZkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNM
aWtlQXR0cmlidXRlKTsKICAgICB9CiAKICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHQ7CkBAIC00
NjEsNyArNDYxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihjb25zdCBG
aWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0g
ZmFsc2U7CiAgICAgaWYgKGlzQ29udGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRTbmlwcGV0
Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VB
dHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGRhdGFBdHRyLCBibGFua1VSTCgpLnN0cmluZygp
LCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAgICBkaWRCbG9ja1Nj
cmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZGF0YUF0dHIsIFdURjo6
YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsK
ICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVl
c3QsIHR5cGVBdHRyKTsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJ
ZkluamVjdGVkKHJlcXVlc3QsIGNsYXNzaWRBdHRyKTsKICAgICB9CkBAIC00ODEsNyArNDgxLDcg
QEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVx
dWVzdCYgcmVxdWVzdCkKICAgICBpZiAoIUhUTUxQYXJhbUVsZW1lbnQ6OmlzVVJMUGFyYW1ldGVy
KFN0cmluZyhuYW1lQXR0cmlidXRlLnZhbHVlKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVBdHRyLCBi
bGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOwor
ICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVBdHRyLCBX
VEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0
ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihjb25zdCBGaWx0ZXJU
b2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC00OTIsNyArNDkyLDcgQEAgYm9vbCBYU1NBdWRpdG9y
OjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAg
ICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29udGFpbmVkSW5SZXF1
ZXN0KGNhbm9uaWNhbGl6ZWRTbmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsKICAgICAgICAg
ZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGNvZGVB
dHRyLCBTdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKLSAgICAg
ICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNy
Y0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJp
YnV0ZSk7CisgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3Rl
ZChyZXF1ZXN0LCBzcmNBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25T
dHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiAgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNl
QXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCB0eXBlQXR0cik7CiAgICAgfQogICAgIHJldHVy
biBkaWRCbG9ja1NjcmlwdDsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZp
bHRlckZvcm1Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNT
RVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFT
U0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGZvcm1UYWcpKTsKIAotICAgIHJldHVybiBlcmFz
ZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJp
bmcoKSk7CisgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBhY3Rp
b25BdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiBib29sIFhTU0F1ZGl0b3I6
OmZpbHRlcklucHV0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQpAQCAt
NTUyLDcgKzU1Miw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVySW5wdXRUb2tlbihjb25zdCBG
aWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3Qu
dG9rZW4sIGlucHV0VGFnKSk7CiAKLSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9u
U3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5q
ZWN0ZWQocmVxdWVzdCwgZm9ybWFjdGlvbkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwg
VHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKIH0KIAogYm9vbCBYU1NBdWRpdG9y
OjpmaWx0ZXJCdXR0b25Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBA
IC01NjAsNyArNTYwLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tlbihjb25z
dCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVl
c3QudG9rZW4sIGJ1dHRvblRhZykpOwogCi0gICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmpl
Y3RlZChyZXF1ZXN0LCBmb3JtYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNh
dGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJ
ZkluamVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5n
KCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVk
aXRvcjo6ZXJhc2VEYW5nZXJvdXNBdHRyaWJ1dGVzSWZJbmplY3RlZChjb25zdCBGaWx0ZXJUb2tl
blJlcXVlc3QmIHJlcXVlc3QpCkBAIC01NzMsNyArNTczLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpl
cmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRlclRva2VuUmVxdWVz
dCYgcmUKICAgICAgICAgYm9vbCBpc0lubGluZUV2ZW50SGFuZGxlciA9IGlzTmFtZU9mSW5saW5l
RXZlbnRIYW5kbGVyKGF0dHJpYnV0ZS5uYW1lKTsKICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxk
IGJlIGJldHRlciBpZiB3ZSBkaWRuJ3QgY3JlYXRlIGEgbmV3IFN0cmluZyBmb3IgZXZlcnkgYXR0
cmlidXRlIGluIHRoZSBkb2N1bWVudC4KICAgICAgICAgU3RyaW5nIHN0cmlwcGVkVmFsdWUgPSBz
dHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoU3RyaW5nKGF0dHJpYnV0ZS52YWx1ZSkp
OwotICAgICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lubGluZUV2
ZW50SGFuZGxlciAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcHBlZFZhbHVlKSkgfHwgKGlz
U2VtaWNvbG9uU2VwYXJhdGVkQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgc2VtaWNvbG9uU2VwYXJh
dGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwoc3RyaXBwZWRWYWx1ZSkpOworICAgICAgICBi
b29sIHZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lubGluZUV2ZW50SGFuZGxlciAm
JiBXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwcGVkVmFsdWUpKSB8fCAoaXNTZW1pY29s
b25TZXBhcmF0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlKSAmJiBzZW1pY29sb25TZXBhcmF0ZWRWYWx1
ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTChzdHJpcHBlZFZhbHVlKSk7CiAgICAgICAgIGlmICghaXNJ
bmxpbmVFdmVudEhhbmRsZXIgJiYgIXZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghaXNDb250YWluZWRJblJlcXVlc3QoY2Fub25p
Y2FsaXplKHNuaXBwZXRGcm9tQXR0cmlidXRlKHJlcXVlc3QsIGF0dHJpYnV0ZSksIFRydW5jYXRp
b25TdHlsZTo6U2NyaXB0TGlrZUF0dHJpYnV0ZSkpKQpAQCAtNzI3LDcgKzcyNyw3IEBAIGJvb2wg
WFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAg
Ly8gR2l2ZSBlbXB0eSBVUkxzIGFuZCBhYm91dDpibGFuayBhIHBhc3MuIE1ha2luZyBhIHJlc291
cmNlVVJMIGZyb20gYW4KICAgICAvLyBlbXB0eSBzdHJpbmcgYmVsb3cgd2lsbCBsaWtlbHkgbGF0
ZXIgZmFpbCB0aGUgIm5vIHF1ZXJ5IGFyZ3MgdGVzdCIgYXMKICAgICAvLyBpdCBpbmhlcml0cyB0
aGUgZG9jdW1lbnQncyBxdWVyeSBhcmdzLgotICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVybCA9
PSBibGFua1VSTCgpLnN0cmluZygpKQorICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVybCA9PSBX
VEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8g
SWYgdGhlIHJlc291cmNlIGlzIGxvYWRlZCBmcm9tIHRoZSBzYW1lIGhvc3QgYXMgdGhlIGVuY2xv
c2luZyBwYWdlLCBpdCdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgKaW5k
ZXggZGM4MmFkZDdjN2Y1YmRkYTNjYWI1MzRkZmFhMTA5YmZkMTkwYmMyNy4uMTJlYzk4YzA5MmZm
NjUwNGNkZTUzZmZmOTM2ODFlMDI1MTEwMDUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiSFRNTFRva2VuLmgi
CiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSAiU3VmZml4VHJlZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGlu
Zy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0
ZS5oCmluZGV4IDY3YTMyZWQ5MzBkN2Q5ZGQ0ZGFjNDA4OTIyMGJkZjNmMmFkNzZlODcuLjYwNTE1
OWIyZmFmYTRjZjg3MWFlNjU2ZjEwYWY0M2YwMDFlOTNmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwCmluZGV4IGM3MzRkYTJiZWFlMTM4NDUyN2Q3NzJhZTliZTE4YjM3ZjU0NDVjOGIuLjI2YWI2
ZGY5NTI0YTRlNjk4MTQ4ODE1MjVlZGM4N2Y2NjA4NmI4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0zMTEsNyArMzEx
LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmtpbGxUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCwgYm9vbCBzaG91bGRQcmVwZW5kVG9LaWwKIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhv
c3Q6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBpZiAoV2ViQ29yZTo6
cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNj
cmlwdCh1cmwpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9jbGllbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5k
ZXggZGRlMjEyMmNjZWQwMGE4ZTMyMGNmNDQwOThmYWQwNjY1NzY0Nzk3MC4uOGMzNzJmYWFmN2Vk
OGVlZDM5OGI1YTZjZDdlNTRmYThmNmVlYzQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtODgsNyArODgsNiBAQCBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFz
cyBTaGFkb3dSb290OwogY2xhc3MgVGltZXJCYXNlOwotY2xhc3MgVVJMOwogI2lmIEVOQUJMRShX
RUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4
IDMzMzEwNzgxY2FhYjViNTE1MmQ2MWZjNTY2NjhhNDljYzM1MjQ0YzYuLjdjNjc0NDYxMjA1NzA3
OThjYWZkNzgwMTVmYWQ5OWQ2MDg3MzE0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTY2LDcg
KzY2LDcgQEAKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHRS
ZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldlYlNvY2tl
dC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRG
cmFtZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggNjRkMGUwNDU4MDI1OTVmZjMwNWM5YTM2YzExMjJk
MTY2NDM3OGM5NC4uYjY4NTkwZjFiODQwODgyODRhOGE1NWZjNzVkMGU1NTlkNDkwOWJkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRS
ZXNvdXJjZURlY29kZXI7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXZWJTb2NrZXQ7CiAKIHN0cnVjdCBX
ZWJTb2NrZXRGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDY3MDlmNTJiZTAzNDMyYjJjNTVlYjk0NzFiYzRj
MGRiMjVkMDg2YzcuLjcyZjYzYmQ4OTYyNWI2MjY5Y2JmN2E2M2YxMjUyMTVmNDE1NzViNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3Mg
UGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVS
TDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRleCA3Mjg4
Y2ZmZTRjZjJlOGZlYmViMGM2MTBkNDZiN2VjYWZiYzY1ZjRkLi41ZTA0MGM5NTRkNGI1MTRhMTQ5
MDNjMDcyMDcwYmVjZGUwNjBjYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw2IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBVUkw7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
QXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxp
Y2F0aW9uTWFuaWZlc3RMb2FkZXIuaAppbmRleCA4YjY0MzFhYjQyMmYyY2I2Yzk0OGQ4Y2Y4ZWJi
NTUxMTcxMTdkZGJhLi4xYjBmNzYwZDJlY2ViZDVjMjhlZjVjMmVjNDJlZGExMmYwM2YzYmViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
LmgKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCiAj
aW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29va2llSmFyLmgKaW5kZXggNWZhNzA1ZDhhODVmZjE1ODY4OTA2NWZjOGJjZDg4
YjNmYzk4YjRlNC4uYjliOWYzNzQ5NzQzZWQ0OGY3MzhhM2ZkOGU3MmE2OWE0ZDAwOWU3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFVSTDsKIHN0cnVjdCBDb29raWU7CiBz
dHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAppbmRleCBkMmIwOWJkNWRiNTY3
NmMwMWFiZjgyM2QzZjA3MjJhNzcwZWE1NDBiLi4yYWYzZDRhMWM1MjA5MTI5M2RlMWM0ODNhMmZj
MTczYWM2NmVhMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZS5oCmluZGV4IGRjMDcxMzBhMWIxNDY1M2JkMWRmNWJlZWU5ODgwOWUzYjcy
ZWZiZTMuLjk2NWRlNmY4YTA3YmRjNzhjMDhlMGYxYzJlNzIxOWUxZWRhNDA0NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGUuaApAQCAtMjcsOSArMjcsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VS
TEhhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDY2
ZmQ2YTg2YTg0NWFkNGRmMWIwZTA1YmNhZDc1YzIwMzIzNDgxY2EuLmRhNmIyYWJlMTEzOGQ4ZjQx
YTMwYWJjN2QxOTc2NGI4ODdmNmQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcApAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAg
ICAgICAgIHN3aXRjaCAoc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY2FzZSBTaG91bGRDb250
aW51ZTo6Rm9yU3VzcGVuc2lvbjoKICAgICAgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9u
IGJ5IG5hdmlnYXRpbmcgZm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNl
dHVwIHRvIG5hdmlnYXRlIGJhY2sgdG8gcmVzdW1lLgotICAgICAgICAgICAgcmVxdWVzdCA9IHsg
YmxhbmtVUkwoKSB9OworICAgICAgICAgICAgcmVxdWVzdCA9IHsgV1RGOjpibGFua1VSTCgpIH07
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Tm86CiAg
ICAgICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwpAQCAtMTY2Nyw3ICsxNjY3
LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAobV9yZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSAmJiAhZnJhbWVM
b2FkZXIoKS0+c3RhdGVNYWNoaW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKSB7
Ci0gICAgICAgIG1fcmVxdWVzdC5zZXRVUkwoYmxhbmtVUkwoKSk7CisgICAgICAgIG1fcmVxdWVz
dC5zZXRVUkwoV1RGOjpibGFua1VSTCgpKTsKICAgICAgICAgaWYgKGlzTG9hZGluZ01haW5SZXNv
dXJjZSgpKQogICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlzcGF0Y2hEaWRD
aGFuZ2VQcm92aXNpb25hbFVSTCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKaW5kZXggYWM5NDhjY2RhZGQwYWExYzVlMWJlN2EwMWVhMTYwOTAxYzFmYTM3NC4u
ZTlmNTAzY2M2ZjYzNGVlMTAzNjdhZGE3ODdkMTY2MjEwNmMxMmI0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTIzNCw3ICsyMzQsNyBAQCBjbGFzcyBEb2N1bWVu
dExvYWRlcgogICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIHVybEZvckhpc3RvcnkoKTsgfQogICAgIHZvaWQgc2V0Q2xpZW50UmVk
aXJlY3RTb3VyY2VGb3JIaXN0b3J5KGNvbnN0IFN0cmluZyYgY2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5KSB7IG1fY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gY2xpZW50UmVk
aXJlY3RTb3VyY2VGb3JIaXN0b3J5OyB9CiAgICAgCi0gICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0
U291cmNlRm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuICh1cmxGb3JIaXN0b3J5KCkgPT0gdXJs
KCkgfHwgdXJsKCkgPT0gYmxhbmtVUkwoKSkgPyBTdHJpbmcoKSA6IHVybEZvckhpc3RvcnkoKS5z
dHJpbmcoKTsgfSAvLyBudWxsIGlmIG5vIHNlcnZlciByZWRpcmVjdCBvY2N1cnJlZC4KKyAgICBT
dHJpbmcgc2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gKHVy
bEZvckhpc3RvcnkoKSA9PSB1cmwoKSB8fCB1cmwoKSA9PSBXVEY6OmJsYW5rVVJMKCkpID8gU3Ry
aW5nKCkgOiB1cmxGb3JIaXN0b3J5KCkuc3RyaW5nKCk7IH0gLy8gbnVsbCBpZiBubyBzZXJ2ZXIg
cmVkaXJlY3Qgb2NjdXJyZWQuCiAgICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0RGVzdGluYXRpb25G
b3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gdXJsKCk7IH0KIAogICAgIGJvb2wgZGlkQ3JlYXRl
R2xvYmFsSGlzdG9yeUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWRDcmVhdGVHbG9iYWxIaXN0
b3J5RW50cnk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggMzg1
ZmI2NDA3YmE0MTliYmI4NjY3Y2JjNTA5OTdjMWIwZDRiZjIxNC4uMzA0OGM1OWU1NzUxMzdkODVl
MGE5OWNlOTJjNTBlM2RlN2JhZjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3Jp
dGVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Gb3JtU3VibWlzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmgKaW5kZXggNGNkZjQ4Yjc3YzZkMDVlMmU2NTU3OWE0MzIxNDgzMDhkODQ4ZWJjOS4uZjlhY2Nm
MTcyMTViYjA2YTZmODk2NmNmMDIxNzk5YmVkNThlM2QxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Zvcm1TdWJtaXNzaW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkZvcm1TdGF0
ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYjNhZTZhYjBlM2Q0OWEwZGI2MTM3NWEzYzdkY2Zk
MjgyMDQ0NDhkMi4uOWQwMjk3YjFiNDc1N2QyOGIzMDNhYzBiZDM4NmY5YzYzMjc1MDM5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lv
bikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlw
dChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNj
cmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKICAgICAgICAgaWYgKCFtX2ZyYW1lLmRvY3Vt
ZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Zvcm1BY3Rpb24oVVJMKHN1Ym1p
c3Npb24tPmFjdGlvbigpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faXNFeGVj
dXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7CkBAIC02OTksNyArNjk5LDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIGlmICghcGFyc2VIVFRQUmVm
cmVzaChkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6UmVmcmVzaCksIGRlbGF5LCB1cmxTdHJpbmcpKQogICAgICAgICByZXR1cm47CiAgICAg
YXV0byBjb21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gZG9jdW1lbnQudXJsKCkg
OiBkb2N1bWVudC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwotICAgIGlmICghcHJvdG9jb2xJc0ph
dmFTY3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICBpZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3Jp
cHQoY29tcGxldGVkVVJMKSkKICAgICAgICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCku
c2NoZWR1bGVSZWRpcmVjdChkb2N1bWVudCwgZGVsYXksIGNvbXBsZXRlZFVSTCk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIGF1dG8gbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJlc2ggIiArIGRvY3Vt
ZW50LnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0byBhIGphdmFz
Y3JpcHQ6IFVSTCI7CkBAIC0zMzU1LDcgKzMzNTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250
aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZQogCiAgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2Fy
ZCB0byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sg
dG8gcmVzdW1lLgogICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6
OkZvclN1c3BlbnNpb24pCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIt
PndpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KHsgYmxhbmtVUkwoKSB9
KTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+d2lsbENvbnRpbnVl
TWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBXVEY6OmJsYW5rVVJMKCkgfSk7CiAKICAg
ICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3Vy
Y2Uoc2hvdWxkQ29udGludWUpOwogICAgIH07CkBAIC0zOTA2LDcgKzM5MDYsNyBAQCBSZWZQdHI8
RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyRnJhbWUsIEZyYW1lJiBsb29rdXBGcmFt
ZSwgRnJhbWVMb2FkUmVxdQogICAgIGNyZWF0ZWQgPSBmYWxzZTsKIAogICAgIC8vIEZJWE1FOiBQ
cm92aWRlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgb3BlbmVy
J3MgZG9jdW1lbnQuCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCkudXJsKCkpICYmICFvcGVuZXJGcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhvcGVuZXJGcmFtZS5kb2N1bWVudCgp
LT51cmwoKSwgeyB9KSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKSAmJiAhb3BlbmVyRnJhbWUuZG9jdW1lbnQoKS0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SmF2YVNjcmlwdFVSTHMob3BlbmVyRnJhbWUuZG9j
dW1lbnQoKS0+dXJsKCksIHsgfSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYg
KCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZXF1ZXN0LmZyYW1lTmFtZSgpLCAiX2JsYW5rIikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMWI5MTFhMmI3ZDI5MjJiYTM2Njk1ZDRkOTI2MzA0
MGY1MGYyZmYzZi4uOTA0ZWQ5NjJmNzk3OTNjODNlY2I3ZDgxNWY0NTA2ZmZjODUwYTVjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEwMCw3ICsxMDAs
NiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKLWNsYXNzIFVSTDsKIGNsYXNz
IFdpZGdldDsKIAogZW51bSBjbGFzcyBQb2xpY3lEZWNpc2lvbk1vZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA5ZmJhODM1YTQ1NTI5ZWVjOTE5
MDBjMmYzYjJlYjUwYjcxODg4NGQ4Li41MGJkMTM4ZjAyZTM0YjE0YTM5MTllMzY3ZWQ3ODFiZGJj
NzliYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAK
QEAgLTYxNSw3ICs2MTUsNyBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJyZW50SXRlbVNo
b3VsZEJlUmVwbGFjZWQoKSBjb25zdAogICAgIC8vICAiSWYgdGhlIGJyb3dzaW5nIGNvbnRleHQn
cyBzZXNzaW9uIGhpc3RvcnkgY29udGFpbnMgb25seSBvbmUgRG9jdW1lbnQsCiAgICAgLy8gICBh
bmQgdGhhdCB3YXMgdGhlIGFib3V0OmJsYW5rIERvY3VtZW50IGNyZWF0ZWQgd2hlbiB0aGUgYnJv
d3NpbmcgY29udGV4dAogICAgIC8vICAgd2FzIGNyZWF0ZWQsIHRoZW4gdGhlIG5hdmlnYXRpb24g
bXVzdCBiZSBkb25lIHdpdGggcmVwbGFjZW1lbnQgZW5hYmxlZC4iCi0gICAgcmV0dXJuIG1fY3Vy
cmVudEl0ZW0gJiYgIW1fcHJldmlvdXNJdGVtICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9j
dXJyZW50SXRlbS0+dXJsU3RyaW5nKCksIGJsYW5rVVJMKCkpOworICAgIHJldHVybiBtX2N1cnJl
bnRJdGVtICYmICFtX3ByZXZpb3VzSXRlbSAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fY3Vy
cmVudEl0ZW0tPnVybFN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkpOwogfQogCiB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjpjbGVhclByZXZpb3VzSXRlbSgpCkBAIC02NTQsOSArNjU0LDkgQEAgdm9p
ZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiAg
ICAgLy8gTGF0ZXIgd2UgbWF5IHdhbnQgdG8gbGVhcm4gdG8gbGl2ZSB3aXRoIG5pbCBmb3IgVVJM
LgogICAgIC8vIFNlZSBidWcgMzM2ODIzNiBhbmQgcmVsYXRlZCBidWdzIGZvciBtb3JlIGluZm9y
bWF0aW9uLgogICAgIGlmICh1cmwuaXNFbXB0eSgpKSAKLSAgICAgICAgdXJsID0gYmxhbmtVUkwo
KTsKKyAgICAgICAgdXJsID0gV1RGOjpibGFua1VSTCgpOwogICAgIGlmIChvcmlnaW5hbFVSTC5p
c0VtcHR5KCkpCi0gICAgICAgIG9yaWdpbmFsVVJMID0gYmxhbmtVUkwoKTsKKyAgICAgICAgb3Jp
Z2luYWxVUkwgPSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgCiAgICAgU3RyaW5nV2l0aERpcmVjdGlv
biB0aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuaAppbmRleCAwMWQxZWZjMzE1YTViMDJkMDY5OWU5YWM0NWRmZDEzNjg3OGY0YWIxLi41
NGQ3MjIzMTBkOGRmZjkyMWYxZTlkZTA1NDViZDllMWM2MjA5NDdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9MaW5rTG9hZGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBMaW5rUHJlbG9hZFJlc291cmNlQ2xp
ZW50OwogCiBzdHJ1Y3QgTGlua1JlbEF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Mb2FkVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZFRpbWlu
Zy5oCmluZGV4IDczZjllZjk0YWZkNjI1NWQ1YTNmNTc0NTgyZDMwYTY0ZjIxZDE0NjQuLmZlYTdj
NDFmY2U2MDI1MjZlMzZhYThlZGI2ZWFiNDY1Njk4NThjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Mb2FkVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xv
YWRUaW1pbmcuaApAQCAtMjUsMTMgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsK
LQogY2xhc3MgTG9hZFRpbWluZyB7CiBwdWJsaWM6CiAgICAgU2Vjb25kcyBzZWNvbmRzU2luY2VT
dGFydFRpbWUoTW9ub3RvbmljVGltZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJT
dHJhdGVneS5oCmluZGV4IDU5Njc4MmM2NTdjYWM1MDgyY2FmZTFjZTRiMWMxNmZmYjlhNjhkNGQu
LjI4NWU2ODA5Y2U0NWUyMjEyNDQ0NjlmZjk1NWFlNTVlZmRlYjUxNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC01MSw3ICs1MSw2IEBAIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFN1YnJlc291cmNlTG9hZGVyOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgRmV0Y2hPcHRpb25z
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKaW5k
ZXggMDUwY2I3OWVhNjU3N2Q1M2EwMzM1MjA2YmQ0NjBlYTQ0NzNmMjM3Ny4uZmFkZTAxYjdjMWQw
YmVjODQ2MzY3ZmY1YTYyN2Q5M2RmMWYwOWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgTWl4ZWRD
b250ZW50Q2hlY2tlcjo6Y2hlY2tGb3JtRm9yTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luJiBz
ZWN1cml0eU9yaWdpCiB7CiAgICAgLy8gVW5jb25kaXRpb25hbGx5IGFsbG93IGphdmFzY3JpcHQ6
IFVSTHMgYXMgZm9ybSBhY3Rpb25zIGFzIHNvbWUgcGFnZXMgZG8gdGhpcyBhbmQgaXQgZG9lcyBu
b3QgaW50cm9kdWNlCiAgICAgLy8gYSBtaXhlZCBjb250ZW50IGlzc3VlLgotICAgIGlmIChwcm90
b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0
KHVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaXNNaXhlZENvbnRlbnQoc2VjdXJp
dHlPcmlnaW4sIHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRD
b250ZW50Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNr
ZXIuaAppbmRleCBhMjZhODU3OTdkM2E4Y2IwYzI5MzNkZjI0Nzc2YjY5NWI3MGQ0NDM0Li41ZmRm
ZmY4MGEzMTg3NDM3MTgzODg5MGI1ZTI0MDRlYTAwOWYxMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgKQEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50OwotY2xh
c3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIE1peGVkQ29udGVudENoZWNr
ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmlu
ZGV4IGE4ZjgwYmUxMzgyMDdkYzdhYTZjNmMxNDY5NzNkMGRiOWU0YjliMWMuLjg4ZTcwNTE2ZDZj
ZTkzZDM2ZWM4M2FiMmM4ZDQzYjdmYzQ1ZGEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTM2Niw3ICszNjYsNyBAQCBpbmxpbmUgYm9v
bCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQor
ICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIHJldHVybiBOYXZpZ2F0aW9uRGlzYWJsZXI6OmlzTmF2aWdhdGlvbkFsbG93ZWQo
bV9mcmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
aAppbmRleCAwNDU5MzE4MTkxNzY0OWJiMjk4NzUzNTVlMzM4NzIwNzM1NDMyMTk0Li42ZmJlMmE1
YjNkYmM5NmZjYmQ0NTA5MjU1OTc4NGU4ZGQwY2Q2YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3MgRm9ybVN1
Ym1pc3Npb247CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFNjaGVkdWxlZE5hdmlnYXRpb247CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgTmF2aWdhdGlvblNjaGVkdWxl
ciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRleCAxNTQ4OWRjZjA0
YmYxZGVkNzg4NmVmOGMwODYxN2RkYmMxM2Q5YTE4Li42ZGVlZjQ1MTY5YTllNWNhMzBhOWYyZjgz
MzQyMzc5ZDM5OWIxZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKQEAgLTQwLDcg
KzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiAKIGVudW0gY2xhc3MgVmlvbGF0aW9uUmVwb3J0VHlwZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZEluZm8uaAppbmRleCA5YjYzMzBlZDQ3YmFjNjZkZWEyMmI4NGUxOWNm
MWQwMGIwNmEyM2MxLi4xYzEyM2QwNmY3YWQ2NzUyMjlkNmM1ZTAxZjkyNTFhNjhiMTYyMjViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKQEAgLTI2LDcgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXgg
N2JkZmM0OGY1ZDQwNTliZTZhYjhiYjlhMjVlYjA4MzUwZTg5MDE5OS4uMTI3MjNiMzQyY2I1YzI2
NTJmM2UxNGFkNGFjM2MyZDFjNDBmNmZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgU3Ry
aW5nJiBkb21haW5JCiAgICAgYXV0byBvcGVuZXJQcmltYXJ5RG9tYWluID0gcHJpbWFyeURvbWFp
bihvcGVuZXJVcmwpOwogICAgIGlmIChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgIT0gb3Bl
bmVyUHJpbWFyeURvbWFpbgogICAgICAgICAmJiAhb3BlbmVyRG9jdW1lbnQuaGFzUmVxdWVzdGVk
UGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24oZG9tYWluSW5OZWVk
T2ZTdG9yYWdlQWNjZXNzKQotICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShvcGVu
ZXJVcmwuc3RyaW5nKCksIGJsYW5rVVJMKCkpKSB7CisgICAgICAgICYmICFlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG9wZW5lclVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSkgewogICAgICAg
ICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyUHJpbWFyeURvbWFpbik7CiAgICAg
ICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVzdHMgc2luY2UgdGhl
eSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJEb2N1bWVudC5zZXRI
YXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbihk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCBhZTJjYWUyNzgwOTE3NTU4M2YyZWJiNDMzNjVhMTAx
OWExNDcxMDg3Li4yYWJmYzUwMzM0YzE3ZDg5ZTJiNmZmYmRjMzhhMzgyYTFmMTA2ZTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtNDcsNyAr
NDcsNiBAQCBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiAK
IHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAppbmRleCBmOTRkNmZkMTllNzc0NmRmNWU2ODNh
OTU3ZjBmZDk5YTc3MmQzMjFhLi4wODI0NjlkYTEyYTA0MGIzMThjNDJhZjNjNjc0Y2Q4MGMwZmQ2
ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmgKQEAgLTI2LDEwICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYW52YXNB
Y3Rpdml0eVJlY29yZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291
bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlv
blNldC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDZiYTU1
MjZjMGFmNTZlOTYyMzU2MWRiNDdjZDFiYWZmODEzMTk2Y2MuLmEwYjdkODQ5ODUwMmIwZTcyMzdh
ZjFhMDFhMjFiNmJkN2E5NTg5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBj
bGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcmV2aWV3TG9hZGVyOwotY2xhc3MgVVJM
OwogCiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9h
ZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKaW5kZXggNmM5YWNiMTkzYTY3MDIzYmI1ZGMzNmJh
YzRkYTdlNzk4ODM0NDNiZS4uN2VmOGRiYzg1MTRkY2VjZmYxYjA3ZjQ1MDM3MDM3ZjhlODg0ODgy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKQEAgLTI4LDcgKzI4LDcg
QEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRNZXRyaWNz
LmgiCiAjaW5jbHVkZSAiU2VydmVyVGltaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IDVkN2QzOGMzYjA3MjNiNzE4NjA5YWQ4N2IxMGU3
NTIxNjRkZTg3MzYuLjU1YTE2ODQ4MzFiZDAxZjZlMGM0YTYxZmM3Yjc3YmI1NzdlZDg4MmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtNzcsMTQgKzc3LDE0
IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1l
bnQmIG93bmVyRWxlbWVudCwgY29uc3QgU3RyCiAgICAgLy8gU3VwcG9ydCBmb3IgPGZyYW1lIHNy
Yz0iamF2YXNjcmlwdDpzdHJpbmciPgogICAgIFVSTCBzY3JpcHRVUkw7CiAgICAgVVJMIHVybDsK
LSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkgeworICAgIGlmIChXVEY6
OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpIHsKICAgICAgICAgc2NyaXB0VVJMID0g
Y29tcGxldGVVUkwodXJsU3RyaW5nKTsgLy8gY29tcGxldGVVUkwoKSBlbmNvZGVzIHRoZSBVUkwu
Ci0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdURjo6YmxhbmtVUkwo
KTsKICAgICB9IGVsc2UKICAgICAgICAgdXJsID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsKIAog
ICAgIGlmIChzaG91bGRDb252ZXJ0SW52YWxpZFVSTHNUb0JsYW5rKCkgJiYgIXVybC5pc1ZhbGlk
KCkpCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdURjo6YmxhbmtV
UkwoKTsKIAogICAgIGJvb2wgaGFzRXhpc3RpbmdGcmFtZSA9IG93bmVyRWxlbWVudC5jb250ZW50
RnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWUgPSBsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKG93bmVy
RWxlbWVudCwgdXJsLCBmcmFtZU5hbWUsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0
KTsKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhU
TUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBTdHIKICAgICAvLyBJZiB3
ZSBjcmVhdGUgYSBuZXcgc3ViZnJhbWUgdGhlbiBhbiBlbXB0eSBkb2N1bWVudCBpcyBsb2FkZWQg
aW50byBpdCBzeW5jaHJvbm91c2x5IGFuZCBtYXkKICAgICAvLyBjYXVzZSBzY3JpcHQgZXhlY3V0
aW9uIChzYXksIHZpYSBhIERPTSBsb2FkIGV2ZW50IGhhbmRsZXIpIHRoYXQgY2FuIGRvIGFueXRo
aW5nLCBpbmNsdWRpbmcKICAgICAvLyBuYXZpZ2F0aW5nIHRoZSBzdWJmcmFtZS4gV2Ugb25seSB3
YW50IHRvIGV2YWx1YXRlIHNjcmlwdFVSTCBpZiB0aGUgZnJhbWUgaGFzIG5vdCBiZWVuIG5hdmln
YXRlZC4KLSAgICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKS0+b3JpZ2luYWxVUkwoKSA9PSBibGFua1VSTCgpKTsKKyAgICBib29sIGNhbkV4
ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChmcmFtZS0+bG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxV
UkwoKSA9PSBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGlmICghc2NyaXB0VVJMLmlzRW1wdHkoKSAm
JiBjYW5FeGVjdXRlU2NyaXB0ICYmIG93bmVyRWxlbWVudC5pc1VSTEFsbG93ZWQoc2NyaXB0VVJM
KSkKICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoc2NyaXB0
VVJMKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAppbmRleCA0ODk2ZDYy
ZjQ1ZjFmODFkOTBkZTc0MDJlMjA5NzA0MWE2ZWIwNjRjLi4yY2FhZTljYTYwOThhNzUzM2MzMDkz
ODk2ZGMyMDMxMjZlNjg5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
ZnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIu
aApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFzcyBI
VE1MTWVkaWFFbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVudDsKIGNsYXNzIElu
dFNpemU7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXaWRnZXQ7CiAKIC8vIFRoaXMgaXMgYSBzbGlnaHQg
bWlzbm9tZXIuIEl0IGhhbmRsZXMgdGhlIGhpZ2hlciBsZXZlbCBsb2dpYyBvZiBsb2FkaW5nIGJv
dGggc3ViZnJhbWVzIGFuZCBwbHVnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURh
dGEuaAppbmRleCBmMTAxMzUxNTk3MTk4MTgyOWM2MTAxOTE3NTJiOTFhZjllYzdmYjc1Li43MDU2
MzIxMzNkZjhlZjg1NjU5ODUyODdlNDEwNjBiMWRiMzc5NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlLmgKaW5kZXggNWRmNWY2MDE3Y2U0YzAzYjc4OGJlOThiZWI3YjZlMTdi
YjA0MGI2ZS4uNjEzMTdiNTMxY2NjMWIwNjI5YjIxZGJmMGE2N2NjZmVlYTZjZjQ2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCkBA
IC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKLWNsYXNzIFVSTDsKIAogdXNpbmcgRmFsbGJhY2tVUkxWZWN0b3IgPSBWZWN0b3I8
c3RkOjpwYWlyPFVSTCwgVVJMPj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCBhYmFhNzNlMTRhYjRiOGM3
YWJhYjEwODhkZDhjMjM4ZTY5ZTJiNDFlLi40N2Q4OTM0YmE5OTE0YTVhNTZkMTE0NmE3OTdlZGVi
ODRkZjJkYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0yNywxMCArMjcsMTAgQEAKIAogI2luY2x1ZGUg
IkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRPTUFwcGxpY2F0
aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IGYyZmIxZjc4MzJiY2Q4MDQ2MmJjYWIw
OGNlYmE3ZDEyNWI4NWEyNDMuLjBkMTMwYTQ1ZjhhZjNiNDk5MDQyMTA1Yjk2MTAzOWZmNWZiZjM0
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKaW5kZXggODFjMjMyMWYzMzk5YzMwNDAzMzc3NmQ5MjZkOGUzMDAzYjZlNDFh
NS4uMDQwZDhiN2FkNmEwOTFlYjFjOWU0MzViNWUwYzM0MDFmOTNhZTI1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24u
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
RGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaAppbmRleCA0OGNiZjg4ZTVkODkwMzcxMTM2MTg5NWNhMWMxMzJhNjQwYzdk
OTA0Li42OGMzNjFlNTJiNDJkOTFkMzYxZTljYzgyOTBlZjM1YzM1MDE1MmI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3Mg
QXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdG9y
YWdlSURKb3VybmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L01hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5p
ZmVzdFBhcnNlci5jcHAKaW5kZXggY2I0ODE1ODVmNGEwZGMzNjg5YzhlODE1ZTcwNmNhMjRjNDI2
MDAxNS4uODQ0NjlmOGFkNGE5NGE4NDYyZTc2ZjNkOTEwYzMyZThiMTQxMjE5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC0y
Nyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKIAogI2luY2x1ZGUgIlRl
eHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi91bmlj
b2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL01hbmlmZXN0UGFyc2VyLmgKaW5kZXggZTc4MTA4OTNhMjA2OTBhY2U2M2FlYzNlYzg4ZTYw
ZWFmNjJmYzc4MC4uOGZlNDBhNjRlNDQ5MGFhYzgyN2E2MWRiMGY0MDQ3YzFlZTg2MGIxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKQEAg
LTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIHN0
cnVjdCBNYW5pZmVzdCB7CiAgICAgVmVjdG9yPFVSTD4gb25saW5lV2hpdGVsaXN0ZWRVUkxzOwog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBsaWNpdFVSTHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgKaW5kZXgg
MzdkZjY4YjM2NmNmZjg1MzliOTVjODIzZjJlOTEyNGQzNWVhOTkzOC4uZTQ2MGI2OWMyYWVkNWQy
NzlkZDU0YTBkZjlhZjAxMGI5NGJjNzdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaApAQCAtMzcsNyAr
MzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmU7CiBjbGFzcyBBcmNo
aXZlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcAppbmRleCAwYzU4NDUyMmFiOWM2NGI3ZjdmNTQ0Njc5ZGNiZTU3ZjZkZjc4MjYy
Li4xNjI4MTFjMTJmYWFjYzNlYTAxYTI5MDU3MDhhMjE0NTU1YmNkY2MwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApA
QCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxP
YmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkxIYXNoLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgpAQCAtNTEsNiArNTAsNyBAQAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTU2NSw3ICs1NjUsNyBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlv
bihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4g
aWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQg
KHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0
cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lk
dGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVc
IiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCku
dXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKLSAgICBhdXRvIGlmcmFtZVJlc291cmNl
ID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBibGFu
a1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOworICAgIGF1dG8gaWZyYW1l
UmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVyKGlmcmFtZU1hcmt1
cCksIFdURjo6YmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFN0cmluZygpKTsKIAog
ICAgIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7CiAgICAg
c3ViZnJhbWVBcmNoaXZlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNWUxZTNmMWQzY2Qx
NGE0NmEyNzQ5YTQ4YTE5MzljYTJkNjM4OGI0Yy4uOGY1ZGQyMDYxNzRmZjQ4NmY0MTJjZWRmODEy
YTk4MGRkNjNkYzUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCkBAIC00NywxMSArNDcsMTEgQEAKICNpbmNsdWRlICJTY2hlbWVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VM
b2FkZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmgKaW5kZXggMDc3N2IxNzcyNGU5YjA1Y2VmNWVkNTRhM2FlZmMxZDEx
NDY3ZjRkNy4uMTBmNjljNmExMDUyOWYxZmQ5MTFhMWQwNzRlZjAzMDljMGY1Y2JiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgK
QEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNs
YXNzIEltYWdlTG9hZGVyOwogY2xhc3MgU2V0dGluZ3M7Ci1jbGFzcyBVUkw7CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogdXNpbmcgUmVzb3VyY2VFcnJvck9yID0gRXhwZWN0ZWQ8VCwgUmVzb3Vy
Y2VFcnJvcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U3R5bGVTaGVldENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0
eWxlU2hlZXRDbGllbnQuaAppbmRleCBkZjQ2YmUyZDM3N2U0YzFkZTE4MmFkYWYxNGQ3MzlhMWY5
N2NkYzAyLi4zOGJiMTk5OTAwODdjOGQ2NjYxZjM2YTM2NjlkNGM5YWUzMzQ4MTcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50
LmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVk
Q1NTU3R5bGVTaGVldDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkU3R5bGVTaGVldENsaWVu
dCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGQ3MTY3OThhNGNlMWQ5N2Q2MWQzMTNl
OTUxOGI3ZGMyMjY5ZjcwNWMuLjJmY2JkMzE5ODVhNDc1YTMwZmYxNzdmNjMyOTQ2MjJmMDEyNTI5
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC00MSw3
ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSAgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsK
LWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkxvYWRlci5oCmluZGV4IDZhYTU1Mzc0Zjc4YjY2NzdmNTcwOWEyYmQ5ZGNiNzE0YzE4
ZmZkZmEuLjM0YTBmMzJiNGY1ZThkZjlhNmMwM2VmNTc0MThmYzZhYTg1MWQzNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2lu
Y2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFj
L0xvYWRlck5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJO
U1VSTEV4dHJhcy5tbQppbmRleCBmOTEwZWQ1YmRlMjQ5YmEzMWI4YTU4M2ZjNTQxZWY3YWFjY2Mz
Y2MwLi5jYmUwMDA0ODA2Y2M1ODc0MjNkOGRlYjBlZTQ4NGEwMWY3ZTA2ZjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KQEAgLTMwLDExICsz
MCwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMb2FkZXJOU1VSTEV4dHJhcy5o
IgogCi0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgot
I2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW1wb3J0ICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCBjMTM5
MDc2OGVmODY1ZjI2NjQxZTlhOTM0OGU2ZTY2MGRiMDcyZGVhLi45MTZkM2Y1MTFiOTY1M2Q4NGNl
N2FiM2YxNTExZjBiYjczNWI2YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2lu
Y2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgIlZUVEN1
ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmlu
ZGV4IGI1MTdiNTJlNzlkODg0ZDBlNzY4NjUwYTYxM2ZmNzQ5ODIyNDVmNGEuLmE1NTBkNWIwYjc5
YTk0MTg3N2EzZmJmNTQ5Njc0Y2RiMzNlZWJjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaApAQCAtMzgyLDcgKzM4Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIENocm9tZUNsaWVu
dCB7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIHsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgeyB9OworICAgIHZpcnR1
YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJMJiwgY29uc3QgSGFz
aFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIHsgfTsKIAogI2lmIFBMQVRGT1JNKFdJ
TikKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IGFmN2NhOTI2NGE0ZjJmODVlOTQw
YzliZDFkNDAxNmRmYTA5OTJjYzAuLmI4NzUwNWEwNTA1NzllM2JmMTM4NTAyYTVlZmY0YTQ1NTJl
ZDFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtMjYsNyArMjYsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDVlN2MzNWM5NzcxOGQ4
OGY4NDFiZjQxODA0NTI0OTRhZDhmNzUxOTIuLjg4OWVlOTk3NjEyOGQxYTk2NjdlMGE1MGEzNDhl
NTEyYmU2ODcwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKQEAg
LTMxLDI5ICszMSwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBGcmFt
ZTsKLSAgICBjbGFzcyBVUkw7Ci0KLSAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVudCB7Ci0gICAg
cHVibGljOgotICAgICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgpID0gZGVmYXVsdDsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOwotICAgICAg
ICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJsKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKikgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgPSAwOwot
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpID0gMDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0b3BT
cGVha2luZygpID0gMDsKK2NsYXNzIEZyYW1lOworCitjbGFzcyBDb250ZXh0TWVudUNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29udGV4dE1lbnVDbGllbnQoKSA9IGRlZmF1bHQ7Cisg
ICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOworICAgIAorICAgIHZp
cnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxv
b2tVcEluRGljdGlvbmFyeShGcmFtZSopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2lu
ZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSA9IDA7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7CiAjZW5kaWYKIAogI2lmIFVTRShB
Q0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzaG93Q29u
dGV4dE1lbnUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpID0gMDsK
ICNlbmRpZgotICAgIH07Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCA2ODEyNmJhOTZl
OGJmMTdlNzY4OTNlMWViYWFjZjU0OTQwZjJmYmM3Li5hM2U1ZWFlODk0ZDY0Mjc2MzdkZDg0NWVk
YWFkZTcxYzYxNTFjMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuY3BwCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJv
bGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0Rvd25s
b2FkSW1hZ2VUb0Rpc2s6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgaWYgKFdlYkNv
cmU6OnByb3RvY29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJM
KCksICJmaWxlIikpCisgICAgICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKG1fY29udGV4dC5o
aXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVSTCgpLCAiZmlsZSIpKQogICAgICAgICAgICAg
ICAgIHNob3VsZEVuYWJsZSA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKQEAg
LTEzNTEsNyArMTM1MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5h
YmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgICAg
IGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRWaWRlb1RvRGlzaygpKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRN
ZW51SXRlbVRhZ0Rvd25sb2FkQXVkaW9Ub0Rpc2soKSk7Ci0gICAgICAgICAgICBpZiAoV2ViQ29y
ZTo6cHJvdG9jb2xJcyhtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlSW1hZ2VVUkwo
KSwgImZpbGUiKSkKKyAgICAgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMobV9jb250ZXh0Lmhp
dFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksICJmaWxlIikpCiAgICAgICAgICAgICAg
ICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlwYm9hcmQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKaW5kZXggN2JkZTFjYmI4YjYzNzFlN2E3YTA4YmE1NTFlODU2YjgxOTJm
NjBmYy4uMWQ2ZGQ3Y2E3Yjg4ZjhmOTNhOWMyNDlkNDlhZTE3NTdmOTAzMDRiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAjaW5jbHVkZSAiU3R5bGVS
ZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdWRkZW5UZXJt
aW5hdGlvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc3VhbFZpZXdwb3J0Lmgi
CiAjaW5jbHVkZSAiV2ViS2l0UG9pbnQuaCIKQEAgLTIyMTUsNyArMjIxNSw3IEBAIFN0cmluZyBE
T01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0IERPTVdpbmRvdyYg
YWN0aXZlV2luZG93LCBJCiAKIGJvb2wgRE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNjZXNz
KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAg
ICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCisgICAgaWYgKCFXVEY6OnBy
b3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIElmIHRoaXMgRE9NV2luZG93IGlzbid0IGN1cnJlbnRseSBhY3RpdmUgaW4gdGhlIEZy
YW1lLCB0aGVuIHRoZXJlJ3Mgbm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
aW5kZXggYTEwZGFiMzNmYjcyMDBkZjFhNDIwYzM0MjhlNWY3YjM5NmZjY2Q2Zi4uZTAxMDhhN2Jl
YjNhYWJjNGQxMmE3ZTgzYWE5NzkxZGQyZTEzMTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAKQEAgLTEwNjksNyArMTA2OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6
OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0
aW9uCiAgICAgICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQpCiAgICAgICAgICAg
ICAgICAgc3JjLmVkaXRvcigpLmNvcHlVUkwobGlua1VSTCwgdGV4dENvbnRlbnRXaXRoU2ltcGxp
ZmllZFdoaXRlU3BhY2UsIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFVSTChzcmMuZWRp
dG9yKCkucGFzdGVib2FyZFdyaXRlclVSTChsaW5rVVJMLCB0ZXh0Q29udGVudFdpdGhTaW1wbGlm
aWVkV2hpdGVTcGFjZSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNl
dFVSTERhdGEoc3JjLmVkaXRvcigpLnBhc3RlYm9hcmRXcml0ZXJVUkwobGlua1VSTCwgdGV4dENv
bnRlbnRXaXRoU2ltcGxpZmllZFdoaXRlU3BhY2UpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFzdGVib2FyZCBhbHNvIGNvbnRhaW5zIHRydXN0d29y
dGh5IGxpbmsgZGF0YQogICAgICAgICAgICAgLy8gYnV0IGRvbid0IG92ZXJ3cml0ZSBtb3JlIGdl
bmVyYWwgcGFzdGVib2FyZCB0eXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApp
bmRleCBjMDJkNWM4MDE2YzY1YjNkNWVmOTM1NmM4MmJlN2Q1NzJiOTc5YTk0Li44NDM1MjgzY2Rm
Y2IxMWE4NjJkOWZjY2M2NmYzMDQzZjJjNTdhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5j
bHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuaAppbmRleCAzNzkyYTkxMjZmMWQzMGFmZmUzN2JlMWMyYTZkYWM3ODIx
NmE3MjlhLi41OGE0YzM4NzQ5ZTk1MGI0NzhjZjg3MDY4YTI2MzkzMTBhZGVmMDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Pci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
ICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggZTg4NmI5MGZjMDgxYmE3YjNmMzBl
YzM0MTRiMmZjYmJlOWVmMTVhNS4uYTAyMTVmYTc3NDIzODUyYWJiNTQxMTBhNzI5NzE2YjkzNGU5
MzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtODksNyArODksNiBAQCBjbGFzcyBSZW5kZXJXaWRn
ZXQ7CiBjbGFzcyBTY3JpcHRDb250cm9sbGVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFz
cyBTZXR0aW5nczsKLWNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNzIFdp
ZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMjQwZTY0NTczN2E0Yzc4Y2Y1MmQ3
MWQ4ZDI4NTcwYTAzYjg0ZjlhZi4uODRjNjIwMTBmNjZlOTNjMmVhYWVlZDQzY2Q3ZjI0MDU1MmNk
ZGI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxGcmFtZU93
bmVyRWxlbWVudDsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVuZGVyQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAppbmRleCAwNWZlMmIzZjY3MGRlMmZmYjViMGQ2
YTkwZDhkNzRmOTJhODQ2NTcyLi43ZjM1ZjRkNzAxMDU1N2ZjNTk5YTIxYWRkZTY2MmEzNTk0YjZi
MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7Ci1jbGFzcyBVUkw7CiAKIGNs
YXNzIEhpc3RvcnkgZmluYWwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291
bnRlZDxIaXN0b3J5PiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Mb2NhdGlvbi5jcHAKaW5kZXggN2I5OGEwNjM2YzQ5MzZjZDZmZDYyOTQwMTIyY2FjYzlh
ODU4Njc2Ni4uODBhNmVkOTJiMDdhYjc5ZTAwZjUxYTc1YTgyMDI3NGNlYzU5NjUzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2NhdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVkdWxl
ci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw3ICs1MCw3IEBA
IGlubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogCiAgICAgY29uc3QgVVJM
JiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAoIXVybC5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybiBibGFua1VSTCgpOyAvLyBVc2UgImFib3V0OmJsYW5rIiB3aGls
ZSB0aGUgcGFnZSBpcyBzdGlsbCBsb2FkaW5nIChiZWZvcmUgd2UgaGF2ZSBhIGZyYW1lKS4KKyAg
ICAgICAgcmV0dXJuIFdURjo6YmxhbmtVUkwoKTsgLy8gVXNlICJhYm91dDpibGFuayIgd2hpbGUg
dGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdlIGhhdmUgYSBmcmFtZSkuCiAKICAg
ICByZXR1cm4gdXJsOwogfQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgTG9jYXRpb246OnJlbG9h
ZChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh0YXJnZXREb2N1bWVudC51cmwoKSkpCisgICAgaWYg
KFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodGFyZ2V0RG9jdW1lbnQudXJsKCkpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVS
ZWZyZXNoKGFjdGl2ZURvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAppbmRleCBiYjdkMmQx
ZDMzZWVmZjZjOWQxNjY2YWIwMDEwMTc4MzJhNGYyYWY4Li4wMzRjZThiNmVmY2Y3MmMwYTdlZDRi
ZWUwMGZlMGVlYzk0YjE0NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCkBAIC0zNyw3ICszNyw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRnJhbWU7
Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIExvY2F0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwg
cHVibGljIFJlZkNvdW50ZWQ8TG9jYXRpb24+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAyNGI0MWRlM2Q2MWZhMTY4MTg4MjFlZDMwY2Q3ZTdi
OTRmNjgwZDcxLi5iMmI5YWU2ZTU5NTg3MjdlYmU0M2ZjYzBkODJkMGEzYTdkMjA4MWJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaApAQCAtMTM1LDcgKzEzNSw2IEBAIGNsYXNzIFNldHRpbmdzOwogY2xhc3MgU29j
a2V0UHJvdmlkZXI7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyOwotY2xhc3MgVVJMOwogY2xhc3MgVXNlckNvbnRlbnRQcm92aWRlcjsKIGNs
YXNzIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9i
c2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IDNiNmUxODI5ZTI4
YzM1YTM5ZTRhMTZiNWYwODhlNjFjM2M0NmVkOGEuLmZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRj
MmQxODBhZjQ5YmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTMw
LDExICszMCwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL1VSTEhhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlLmgKaW5kZXggMjRhYjk0YmNhMjk1Y2NhZmIwYTY1MWE2MjcwYjI4Nzk0NWViYTk5
MS4uM2E4NjM0YWI2MzdhOTE0MmE3MjUwM2Y5YTg4YTUyNmY3OWUwYTliZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2UuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBQZXJmb3JtYW5jZVRpbWlu
ZzsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBVc2VyVGltaW5nOwog
CiBjbGFzcyBQZXJmb3JtYW5jZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlcmZvcm1hbmNl
PiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlUmVzb3VyY2VUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmNwcAppbmRleCA1NzUzMzU4MGMzMDIxZWFlNjZkZTMxOTA4OWQ4ZTRiMWJj
MTAzZjlkLi43YjdkODdhNDU4ZmJhMGU3MzlkMmM0MjA5Y2Y4MjQyYmJkODc0OTA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlJlc291cmNlVGltaW5nLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggMjI5ZWZmODQzODU0YjIwNjgwZDRh
MzlkYzUxYzAwNzJhNzY0OWU5My4uMDIwZTA5MmI5OGY4YzgzZmQ4YTViM2Y0MzMyYzI0NmIzZWM1
ODc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKIAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNjaGVtZVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJUZXh0RW5j
b2RpbmcuaCIKQEAgLTE0OCw3ICsxNDgsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmln
aW4oY29uc3QgVVJMJiB1cmwpCiAgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0cyBhcyBtX2Rh
dGEuaG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KICAgICBtX2RvbWFpbiA9IG1fZGF0
YS5ob3N0OwogCi0gICAgaWYgKG1fZGF0YS5wb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bChtX2RhdGEucG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQorICAgIGlmIChtX2RhdGEu
cG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2RhdGEucG9ydC52YWx1ZSgp
LCBtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICBtX2RhdGEucG9ydCA9IHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmlnaW5zIGNhbiBsb2Fk
IGxvY2FsIHJlc291cmNlcy4KQEAgLTUxNiw3ICs1MTYsNyBAQCBSZWY8U2VjdXJpdHlPcmlnaW4+
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3Ry
aW5nJgogewogICAgIFN0cmluZyBkZWNvZGVkSG9zdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNl
cyhob3N0KTsKICAgICBhdXRvIG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsg
IjovLyIgKyBob3N0ICsgIi8iKSk7Ci0gICAgaWYgKHBvcnQgJiYgIWlzRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQorICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVs
dFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wpKQogICAgICAgICBvcmlnaW4tPm1fZGF0
YS5wb3J0ID0gcG9ydDsKICAgICByZXR1cm4gb3JpZ2luOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5oCmluZGV4IDVhZGY1MDE3NDliMDljMjkzZTU5YmE0MDQ1NmY3NjdjYjU2ZTA4
ZTEuLmI5M2QwZmFmMjM1YTdmZTM1NDc2NTA5ZjZlNDM3ZDU0NDA1Y2MxMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTM0LDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6CiAgICAgZW51bSBQ
b2xpY3kgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggY2Vm
ZmVhMzJiMDg0YzU2MzEyNGYyMGI3YzVmZTI4ZjE0OTA0MDQ3NS4uMjc3NjJlYTIxZDZkMjA2NWU5
ZGQwMTQ2ZGI5NzliMzMyZWM0NTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCmluZGV4IGVlMjU3MmM1YTlhNjQ0
Mzk1N2E1ZjNmNzUzZjQ2ZTJmYmE5MjIzNDAuLmUwMTQ4YTJkMDVkOTliMGRkZGYwNmEyM2QyNDZk
NTM0NTJjYjJjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5IYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaApA
QCAtMjgsNyArMjgsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAppbmRl
eCAxNTNlZGQ4MTlkMTI1NTU1NTY4ODc2NTY2ZGUzMWY5OGI2YzA1NTNiLi40MjM0MTgyODBlYTJl
ZTNjOWJmZGZjOTFjZDEyN2I5NjhlYjFlMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
UG9saWN5LmNwcApAQCAtMzEsMTEgKzMxLDExIEBACiAKICNpbmNsdWRlICJPcmlnaW5BY2Nlc3NF
bnRyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6c2hv
dWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKGNvbnN0IFVSTCYgdXJsKQogICAgIC8v
CiAgICAgLy8gTm90ZTogV2UgZ2VuZXJhbGl6ZSB0aGlzIHRvIGludmFsaWQgVVJMcyBiZWNhdXNl
IHdlIHRyZWF0IHN1Y2ggVVJMcyBhcyBhYm91dDpibGFuay4KICAgICAvLwotICAgIHJldHVybiB1
cmwuaXNFbXB0eSgpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnN0cmluZygpLCBibGFu
a1VSTCgpKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5nKCksICJh
Ym91dDpzcmNkb2MiKTsKKyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKHVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNkb2MiKTsKIH0KIAogdm9p
ZCBTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KExvY2FsTG9hZFBvbGljeSBwb2xp
Y3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggY2QzN2NhM2FkMmRmZGJk
N2U2NzIzNTFmYTU0M2VlZjQ5ZTgyYjRmNC4uNTMzYjFkNGZiZGFkNTJlMzhmMWZkMzVhMmY2YTA3
ZDQ4MDA4YjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGlj
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaApAQCAtMzQsNyAr
MzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNs
YXNzIFVSTDsKIAogY2xhc3MgU2VjdXJpdHlQb2xpY3kgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3NCYXNlLmgKaW5kZXggYWE4MDRjZGIwODRlMGQ2YTNmZDNkZWViNmY2MWQ1NTQzYWYz
NDFiMS4uOTg2Nzc2Y2EzZGI1ZGE4ZjhlMWE2YmE4Nzc5ZmRlZWE3MjgzYjliMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzQmFzZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiU3RvcmFn
ZU1hcC5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldyaXRpbmdNb2Rl
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8
dW5pY29kZS91c2NyaXB0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCAyNzlmMDMzYTI2
NDgxM2MyMWFkZjkwY2ZhNmMzNjU4YWMzODQzZjIzLi5jOGIxMmEzOTcxYjY2MmY4MDc4ZjNjYTY4
ZjUwZTYxZjlhN2Y4YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTI0LDcgKzI0LDcg
QEAKICAqLwogCiAjcHJhZ21hIG9uY2UKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0
UHJvdmlkZXIuaAppbmRleCBkMTk3OTc3YWZlYjgyMGFhNDEyZTJjMzRmYTU0NzIxNjM4NDkwZTcy
Li45ZThjMDAzYmZmNTFlMWE1Y2M5NmQyZTQ3M2U3YWVlZWVkYmRhOGZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Tb2NrZXRQcm92aWRlci5oCkBAIC0zNCw3ICszNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5k
bGU7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7Ci1jbGFzcyBVUkw7CiAKIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIFNvY2tldFByb3ZpZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNvY2tldFByb3ZpZGVyPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRQcm92aWRlci5oCmluZGV4IDI4ZGZiMzJhMDc2ZTY1MTJlY2Y5MjRmMDE0NTIyMGVlYWU0
OWM0NzIuLmZhNjkyMDM0ZGJhZTVmZDc5ZmU4MTk3ODlhNzMyMWViZTRiMGRlZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCkBAIC00Miw3ICs0Miw2IEBAIGNs
YXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgUGFnZTsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIGNsYXNzIFVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3I7CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXgg
YjliODExNTgyN2I3OGY1MjczMDk1YzJjM2UxNTE4YmY0M2Y0M2U5MC4uZjM3M2NmMzdiMjRjNTBm
YzIxZGM2ZGM0NzFhYjA4ZWQ0ZWM1MDkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRleCA5MzNm
NjlkNmM1YTYwZTZlZDcyOGJhMDgwZWVlODRmNTQ4MGRmMmQ2Li45M2Y2NTgxMmRhYzVkZThhZDVm
Y2RiNjcwZDhkMmY5ZTg2OTc4MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJDb250ZW50VVJMUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBVUkw7Ci0KIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybiB7CiBwdWJsaWM6CiAg
ICAgVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkgOiBtX2ludmFsaWQodHJ1ZSksIG1fbWF0Y2hTdWJk
b21haW5zKGZhbHNlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNj
cmlwdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKaW5kZXggODUxMGMxZjMz
OTkwMWU5OTVmMzIwY2NjOWJmNzE5YjJlNDlhZTQyNy4uNTJjMTJmM2M2OTY2MzAyYWFlZjQ1NWI4
ZmVmYmM5OWViZGE1ODRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2Ny
aXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKQEAgLTI1LDcgKzI1
LDcgQEAKICAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgIlVzZXJDb250ZW50VHlwZXMuaCIKICNpbmNsdWRlICJVc2VyU2Ny
aXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJT
dHlsZVNoZWV0LmgKaW5kZXggNjhmMTBhODJhZGY4OThmMjUyYzQxNTU5Y2IxNjc4YWVjOGM1MDg0
MS4uYzQ3NDc2N2U3Yzk4YmI0OGE4ODNjYjczYjY5ODkwNWY2MDFkNzYwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAtMjUsNyArMjUsNyBAQAogIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNl
ckNvbnRlbnRUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc2l0
ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCmlu
ZGV4IDQzYzM1MTM3MmQ2MThiNjgxMDliMGZiOGNjZDY5ZmM4NWY4YmRkNzguLjI2ZDY1MGRiYTc0
ZGM1MDJjZjkzMDlhM2YzZDFjMDVkYTZiNjQ5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRl
ZExpbmtTdG9yZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlw
ZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogY2xhc3MgUGFnZTsKLWNsYXNzIFVSTDsK
IAogY2xhc3MgVmlzaXRlZExpbmtTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpc2l0ZWRMaW5r
U3RvcmU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgKaW5kZXggNWI1OTJmZDgyOGY5N2Y5NGMyM2FlMzM0OTY4YTVhYjQ3ZDk2
YzE2My4uZTAyYTdhYjZjNTliZmNmNWI5OWU2NDhmZmM2YzdlMjU0NGNmZmUzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTU2LDcg
KzU2LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVGV4dEVuY29kaW5nOwotY2xhc3Mg
VVJMOwogc3RydWN0IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKIAogdHlwZWRlZiBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+PiBD
U1BEaXJlY3RpdmVMaXN0VmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaAppbmRleCBlYjRmZTg3YzI5ZjFjYWIxMThi
ZDFiMGRiZTY3NjNjYjEwNGYzMjMwLi44ZTA1MTgyNjQxNDA2ZjJjYzhjYWEyZGM1NmFlMzM2MDYz
NGU2YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lDbGllbnQuaApAQCAtMzIsNyArMzIsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGb3JtRGF0YTsKLWNsYXNzIFVSTDsKIAogc3RydWN0IENTUEluZm8gewogICAg
IFN0cmluZyBkb2N1bWVudFVSSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAppbmRleCAyOTA3MjUw
ZjBlYjFkYzRmZDA4ZmIyMDcyYzY4MzM3YjI4ZDdiMDI2Li5kZDUxMzAwZWMzYjAwMzMxZjMzYmQw
MjczN2ExNThjMmFhYzYyMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCkBAIC0zMCw3ICsz
MCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2luY2x1ZGUg
IkNvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oIgogI2luY2x1ZGUgIkNv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZS5jcHAKaW5kZXggOTRiNGNjMTNjMGY2ZTQ1YmRhNGY1ZDgzYjRkMThlNzczMDNmNDM2Yy4uZWIy
MTk1YTIwNGE0YzZiZWE0N2E0NzA4NDEzYmMwYjdlNmYzNDlkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCkBA
IC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAwLDE0ICsxMDAsMTQg
QEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnBvcnRNYXRjaGVzKGNvbnN0IFVS
TCYgdXJsKSBjb25zdAogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAoKG1fcG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0
LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29sSXMoImh0dHBzIikp
IHx8IChwb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksICJodHRw
cyIpKSkpCisgICAgaWYgKChtX3BvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
bV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29sSXMoImh0
dHBzIikpIHx8IChwb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFs
dWUoKSwgImh0dHBzIikpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIXBvcnQp
Ci0gICAgICAgIHJldHVybiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCks
IHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9ydEZvclBy
b3RvY29sKG1fcG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSk7CiAKICAgICBpZiAoIW1fcG9y
dCkKLSAgICAgICAgcmV0dXJuIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCks
IHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9ydEZvclBy
b3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpOwogCiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2UuaAppbmRleCA0ZWVhYmIwMTM2NTI1MWI2ZDg5NjMzY2E5NjgwZDAxNWYyMzEw
NmFhLi5hMmRiNTA0Mzg5OGYyZTY5NDdiYzdiMGEyZGQ2NDQzYWI1MTQzOGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Uu
aApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50
U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwog
CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNw
cAppbmRleCAxYjQzMzEyNjYwMGE1MDFmOTVmNWU2M2I0MmRkNGNkZGRkOTU3OWIyLi4yNmRhOTEx
NTM3NjRhZmY3MDQ4Njc4ZTYyN2Y3MmZjNGM3OTgxZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNw
cApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlRl
eHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0LmgKaW5kZXggOWY2M2MzMDA2YTBjYTdmMmUzMzk5NDgwMWI1NDJjMzY2Njhj
MmU1NC4uNWZjZjNiMmVhZTRhOWU1Zjg0ODEwYmQ1M2M0NTU1MjQ0MDc3MjZmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3QuaApAQCAtMzYsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDb250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIENvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
RGlyZWN0aXZlLmNwcAppbmRleCBjMmJmMWQ0NWE1NWY1NzdmYTJkM2ZiNjAwYjJhYzlmM2ZmMGNh
MWU0Li4xYjA5MmI4NGZkMGJmN2Q2NmY4ZTFhYWZlMGYxYmFjNTMzNmFlNjVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
RGlyZWN0aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5j
bHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCmluZGV4IGI5YTlkMDBkNWJk
MmZkYTlmYTdmYTE0ZWI5MTcxYWM4NjEyODU3YjguLjRiOGUxYWFlNmI0NzcwZWVkOTY3ODFiNmRi
ZjY2YWJhMWUxMjU1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCkBAIC0yMywxNCArMjMsMTMgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcl9oCi0jZGVmaW5lIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcl9oCisj
cHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogT0JKQ19DTEFTUyBOU0NvZGVyOwpAQCAtNzcsNSArNzYsMyBAQCBjbGFzcyBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIgewogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotCi0jZW5kaWYgLy8gQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRN
ZW51SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKaW5k
ZXggNDc2YTNjMzZiOTViZGIxODdiYjU4OTMyZTAwM2JkMTFlZjMyYjQwNi4uMWIwZjc0NTBiNDU3
MmQ1NmE5MTNlNWMxZTdhYTU3Mzk4NDk0OGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGV4dE1lbnVJdGVtLmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb250ZXh0TWVudTsKIGNsYXNzIEltYWdlOwotY2xhc3MgVVJMOwogCiBlbnVtIENv
bnRleHRNZW51QWN0aW9uIHsKICAgICBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ29va2llLmgKaW5kZXggYjIxMjI0ZjFjYjlhMGRhOWFmNTg2YWI5YjA0ZjM5MTI1
NzZlY2Q5NC4uOGNiYTRkZjU5MzExNmMzZjIzZDJiNGJkYTRjZDNiM2RmNzkyNzk3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29va2llLmgKQEAgLTI2LDggKzI2LDggQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Nvb2tpZXNTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0
cmF0ZWd5LmgKaW5kZXggYjQzOTc4Njg3ODEwOTVkMGMwOWE5OTZkMjQwNGEyZjRlOWQ5OTlkYi4u
OWIwZDVhNjhkOTJjOGU1NWFkOWQwZjlhYjMzOGY5NTE3NjI5ZDc3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKQEAgLTMzLDcgKzMzLDYgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwotY2xhc3MgVVJMOwog
CiBzdHJ1Y3QgQ29va2llOwogc3RydWN0IFNhbWVTaXRlSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnRGF0YS5oCmluZGV4IDFhNGE0NWY4MDVjYzUwNmFiOWYxOTFmODA2MTU3ODcwNGZmNDkyMDYu
LmU5MzA5NWZjN2IyYTBiMTM2ZDQ2NjE2ZDAyMjBjY2ViYTM5OWEwMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0RhdGEuaApAQCAtNTYsOCArNTYsNiBAQCB0eXBlZGVmIHZvaWQqIERyYWdEYXRh
UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogZW51bSBEcmFnQXBw
bGljYXRpb25GbGFncyB7CiAgICAgRHJhZ0FwcGxpY2F0aW9uTm9uZSA9IDAsCiAgICAgRHJhZ0Fw
cGxpY2F0aW9uSXNNb2RhbCA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4
IGJlNWI0YzljMmE0NzA0YTFkYjkxMTJjNGNlOTRlYWM0M2YxNWQ2ZjkuLmYzMmE2ODQ1YTY4NWM1
YTBjMjFkYWY5MmMxZmMwZmVmNGE1MDAyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFn
ZS5oCkBAIC01Nyw3ICs1Nyw2IEBAIGNsYXNzIEltYWdlOwogY2xhc3MgSW50UmVjdDsKIGNsYXNz
IE5vZGU7CiBjbGFzcyBSYW5nZTsKLWNsYXNzIFVSTDsKIAogI2lmIFBMQVRGT1JNKElPUykKIHR5
cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IERyYWdJbWFnZVJlZjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTdHJlYW0uaAppbmRleCA5NjdkZWRjN2JhNmVjZjQyOTJkZjE5Y2ZjMTg4NTFkMTY2
YjNhYTVmLi5iMmFhMjg0NDc5ZjdiMTIyNmViZjdhYWE5YjdmZGNhYzMwYzMzNzYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCkBAIC0zNSw4ICszNSw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiAvLyBBbGwgbWV0aG9kcyBhcmUgc3luY2hyb25v
dXMuCiBjbGFzcyBGaWxlU3RyZWFtIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xpbmtJY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSWNv
bi5oCmluZGV4IDI4MTc1NDYwMzU5YWRmZjdhMGNmMmZlMWViN2ZmNDEzNGM1NzdlNTkuLjg5ZTJm
ODk2OWJiNTI2YTM2NGRiNmI5MGUzMGE5Yjc3MWNkZTU4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGlua0ljb24uaApAQCAtMjYsOSArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJM
aW5rSWNvblR5cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCA3MzdhMzkwNDI1N2RlNjQzYmMwZDlh
Yjk5YmMyNjRhMzE0ZmQ2ZmY3Li41NTVlYzI4MmU0YmI2NmU1ZjlkMTExMjBiOTc2MWE3MjVlYmMz
ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtMzAsNyArMzAs
NyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCisj
aW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50Q29kZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC00
Nyw3ICs0Nyw3IEBAIGJvb2wgUGFzdGVib2FyZDo6aXNTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdy
aXRlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogYm9vbCBQYXN0ZWJvYXJkOjpjYW5FeHBvc2VVUkxU
b0RPTVdoZW5QYXN0ZWJvYXJkQ29udGFpbnNGaWxlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
IHsKLSAgICBhdXRvIHVybCA9IFVSTFBhcnNlciB7IHVybFN0cmluZyB9LnJlc3VsdCgpOworICAg
IFVSTCB1cmwoeyB9LCB1cmxTdHJpbmcpOwogICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzQmxvYigpIHx8IHVybC5wcm90b2NvbElzRGF0YSgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggMjA2MzVhYjAyOTRm
Mjk5N2UyOGZiZmZkNTA5ODY5NDhhOTliNjAzMC4uYTJiYTJiNzYwMGRkNGViYTI2OGY2MjljZGQx
OTE0MTM4ODFiZDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMjcs
MTAgKzI3LDEwIEBACiAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJQYXN0ZWJv
YXJkSXRlbUluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggOTlkOGRkZmZhZTAwZWFjZTFhNjMyY2IwZDNmNTM4
MWEyM2ZhMzY1Yy4uYTViMzY1MGEwYmJjMGFmODhmOWFmNzQ0NDA4ZGVhZTk5NjBkYTlmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMzLDcg
KzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBTZWxlY3Rp
b25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogc3RydWN0IFBhc3RlYm9h
cmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVS
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNw
cAppbmRleCAzZDJkY2VlZDdjNTZlODcwOTY3ODk4MDdhNjdiZWUyZWQwMzI5MjdmLi5lMjU2OTA3
NGVlNWEyYjNlZjZjMjBlOGJlNDhkZmU3NTdhODA2OWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZv
aWQgUGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFBsYWluVGV4dChQbGFpblRleHQgcGxhaW5UZXh0
KQogICAgIG1fcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpOwogfQogCi12b2lkIFBhc3Rl
Ym9hcmRXcml0ZXJEYXRhOjpzZXRVUkwoVVJMIHVybCkKK3ZvaWQgUGFzdGVib2FyZFdyaXRlckRh
dGE6OnNldFVSTERhdGEoVVJMRGF0YSB1cmwpCiB7CiAgICAgQVNTRVJUKCFtX3VybCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IGQ1
M2ZkNzJmZjVlNmM0NGUwYTE2ZTc3ZjM5MWRhZmNkODQ2NTAyMGEuLjVmNDc1OTJiMTAxOTUxMTkx
MTc5NzY4OGU3ODU1MGY0OGJiZWQ1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNjYsOCArNjYsOCBAQCBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBm
aW5hbCB7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+JiBwbGFpblRleHQoKSBj
b25zdCB7IHJldHVybiBtX3BsYWluVGV4dDsgfQogICAgIHZvaWQgc2V0UGxhaW5UZXh0KFBsYWlu
VGV4dCk7CiAKLSAgICBzdHJ1Y3QgVVJMIHsKLSAgICAgICAgV2ViQ29yZTo6VVJMIHVybDsKKyAg
ICBzdHJ1Y3QgVVJMRGF0YSB7CisgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyB0aXRs
ZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFN0cmluZyB1c2VyVmlzaWJsZUZvcm07CkBA
IC03NiwxNSArNzYsMTUgQEAgY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogI2Vu
ZGlmCiAgICAgfTsKIAotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMPiYgdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmw7IH0KLSAgICB2b2lkIHNldFVSTChVUkwpOworICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8VVJMRGF0YT4mIHVybERhdGEoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAg
IHZvaWQgc2V0VVJMRGF0YShVUkxEYXRhKTsKIAogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29udGVudD4mIHdlYkNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbnRlbnQ7IH0KICAg
ICB2b2lkIHNldFdlYkNvbnRlbnQoV2ViQ29udGVudCk7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpv
cHRpb25hbDxQbGFpblRleHQ+IG1fcGxhaW5UZXh0OwotICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBt
X3VybDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTERhdGE+IG1fdXJsOwogICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29udGVudD4gbV93ZWJDb250ZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA4ZTEzYmY0ZDg0MTQxM2JmMWMxMTdkZWM5
ZWZmODVjNDgyNGI4OGVmLi5lMGEyMTMzMzc0NmNkZjk0ZGQ3MGU5NWUzZjYyZWQwZDc4MjAwMDU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAt
NDgsNyArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIFNl
bGVjdGlvbkRhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgUGFz
dGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21p
c2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0
YWNobWVudEluZm8uaAppbmRleCBkYmVjZmMxYjNiMTZkN2Y1ZTAzMDhlMTEwYWNkYTExMDJjYjQy
MDdlLi5hOTU4YzJmMGFiMmQ5ZjFmMzc2NjJhN2EwYjYwMmJlMzEzNDMwN2I1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMSw3
ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNs
YXNzIFVSTDsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogICAgIFVSTCBibG9i
VVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAppbmRleCAwNzY3
MjM4NmY2OGVhYTk4MWZlN2M1OTdjMDVmNjFlZjhlNjczY2U0Li5jMmJkOGQ2ZTlkM2FhOTNlMjQ2
MDI0ODYyYzFmM2IyMmY0NWE0ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TU0xLZXlHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlH
ZW5lcmF0b3IuaApAQCAtMzEsOCArMzEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFVSTDsKLQogLy8gUmV0dXJucyBzdHJpbmdzIHJlcHJlc2VudGluZyBrZXkgc2l6ZXMgdGhh
dCBtYXkgYmUgdXNlZAogLy8gZm9yIHRoZSA8a2V5Z2VuPiB0YWcuIFRoZSBmaXJzdCBzdHJpbmcg
aXMgZGlzcGxheWVkIGFzIHRoZSBkZWZhdWx0CiAvLyBrZXkgc2l6ZSBpbiB0aGUgPGtleWdlbj4g
bWVudS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAppbmRleCA5
NDlkZTYzYWVmMDZjZmNmYWYwYzAyZDI0YzZhYzQ0ZTY2ZmUwYjk3Li43N2Y2YzM5MmE5MTdmMGM5
MTcyNjY1YTc2MThlNjcwNDM4YzRlNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2No
ZW1lUmVnaXN0cnkuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAj
aW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAj
aW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgpAQCAtNTUxLDcgKzU1MSw3IEBAIGJvb2wgU2NoZW1l
UmVnaXN0cnk6OmlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIAog
Ym9vbCBTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1l
KQogewotICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIChhbGxCdWlsdGluU2NoZW1lcygp
LmNvbnRhaW5zKHNjaGVtZSkgfHwgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoc2NoZW1lKSk7
CisgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgKGFsbEJ1aWx0aW5TY2hlbWVzKCkuY29u
dGFpbnMoc2NoZW1lKSB8fCBXVEY6OlVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKHNjaGVtZSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCmluZGV4IGUyYWFlMmYzMDQ1NzM1NWY0ODllZWM0YWI0ZWNmMWNlN2QzZTQ1MmYu
LmY4NjhjMmMwMWQ2YjEwZWNmMzY0YjFhNmZmZTNkZDQyZjVmNTIyODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC00MCw3ICs0MCw3IEBACiAjZW5kaWYKIAogI2lm
IFVTRShTT1VQKQotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCisjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0clNvdXAuaD4KICNlbmRpZgogCiAjaWYgVVNFKEdMSUIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCmluZGV4IDBjYzVmNjg3ZDYyMWVm
ZTdlYWJhYzRkYmY5ZTU0NTQ3YTQ4ZGNlMTguLmFmYjc1N2NiZTQwMjJmZWRmYzQ3OTNlYWJjMjU2
OWU4NjBlOTU5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0
cmluZ0hhc2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hh
c2guY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U2hhcmVkU3RyaW5nSGFzaC5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmgKaW5kZXggNzMyNDYxN2JhNDk2
YTA2NjNiZmQ1M2RlYzRhNDQzZDk3NjkzOWU4ZS4uMzYwM2NmMGYyZTdmOTIxNGIzZTI1M2Y1NDc5
ZDljYjM0NmIyN2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
U3RyaW5nSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hh
c2guaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVS
TDsKLQogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdIYXNoOwogCiAvLyBVc2UgdGhlIGxv
dyAzMi1iaXRzIG9mIHRoZSA2NC1iaXQgU2hhcmVkU3RyaW5nSGFzaCBhcyB0aGUga2V5IGZvciBI
YXNoU2V0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3Vw
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dAppbmRleCBjMDJl
NDllNGU1MWVmNzQ5MzFmNzBkZDg2NTVkMzRkZTJkNjNlNDhiLi4yZTg1NmE5ODAwYzMzN2E0MDUz
MTY1MmM3MDRmM2UyZmI2ZmQzMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1Nv
dXAudHh0CkBAIC00MSw0ICs0MSwzIEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9XZWJLaXRTb3Vw
UmVxdWVzdEdlbmVyaWMuY3BwCiAKIHBsYXRmb3JtL3NvdXAvUHVibGljU3VmZml4U291cC5jcHAK
IHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKLXBsYXRmb3JtL3NvdXAvVVJMU291
cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiZGI0Njg2OTU4ZjMwMDA5MzMzNDQzMTg5NDc3YTlkNDVmNGY1ZDg4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTA5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxMS0yMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVS
TC5oIgotCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNs
dWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRl
IDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgotCi0vLyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVzZSBvZiB0aGUgKyBv
cGVyYXRvciBvbiBTdHJpbmcuCi0vLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRpbWl6ZSB0aGF0IG9w
ZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQotLy8gc28gbWFueSBhbGxvY2F0aW9ucywgb3Ig
Y2hhbmdlIHRoaXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgotCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLXR5cGVkZWYgVmVjdG9yPGNoYXIsIDUx
Mj4gQ2hhckJ1ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOwot
Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7Ci0KLS8v
IENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBz
b3VyY2UgY2hhcmFjdGVycyBhcmUKLS8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11
c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKLS8vIGluIHRo
ZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRl
IHRoZSByZXN1bHQuCi1zdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGNoYXIqIGRlc3QpCi17Ci0gICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG1lbWNweShkZXN0LCBzdHJp
bmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
Y29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgc2l6ZV90
IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPihz
cmNbaV0pOwotICAgIH0KLX0KLQotdm9pZCBVUkw6OmludmFsaWRhdGUoKQotewotICAgIG1faXNW
YWxpZCA9IGZhbHNlOwotICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOwotICAg
IG1fY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOwotICAgIG1fc2NoZW1lRW5kID0gMDsKLSAgICBt
X3VzZXJTdGFydCA9IDA7Ci0gICAgbV91c2VyRW5kID0gMDsKLSAgICBtX3Bhc3N3b3JkRW5kID0g
MDsKLSAgICBtX2hvc3RFbmQgPSAwOwotICAgIG1fcG9ydExlbmd0aCA9IDA7Ci0gICAgbV9wYXRo
RW5kID0gMDsKLSAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7Ci0gICAgbV9xdWVyeUVuZCA9
IDA7Ci19Ci0KLVVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2
ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKLXsKLSAgICBVUkxQYXJzZXIgcGFy
c2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7Ci19Ci0KLXN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCi17Ci0gICAg
Ly8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJv
bAotICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4gKnVuc2ln
bmVkKiBjaGFyIGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9ubHkgY2F0
Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBjIDw9ICcgJzsKLX0KLQotVVJMIFVS
TDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICBVUkwgcmVzdWx0ID0gKnRoaXM7Ci0gICAg
cmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLVN0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QK
LXsKLSAgICBpZiAoIWhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAg
dW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKLSAgICBpZiAobV9zdHJpbmdbZW5kXSA9PSAn
LycpCi0gICAgICAgIC0tZW5kOwotCi0gICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcucmV2ZXJz
ZUZpbmQoJy8nLCBlbmQpOwotICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
KytzdGFydDsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0
YXJ0ICsgMSk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7Ci19
Ci0KLVN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBzdGFydCA9
IGhvc3RTdGFydCgpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmco
c3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKLX0KLQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4g
VVJMOjpwb3J0KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcG9ydExlbmd0aCkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBu
dW1iZXI7Ci0gICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICBudW1iZXIgPSBjaGFy
YWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RFbmQgKyAx
LCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwotICAgIGVsc2UKLSAgICAgICAgbnVtYmVyID0gY2hh
cmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9zdEVuZCAr
IDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBudW1iZXIgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQotU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQo
KSBjb25zdAotewotICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkpCi0gICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9ydC52
YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOwotfQotCi1TdHJpbmcgVVJM
Ojpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKLXsKLSAgICBTdHJpbmcgcmVzdWx0ID0gbV9z
dHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7Ci0KLSAgICBpZiAo
bV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgewotICAgICAgICBjb25zdCBpbnQgYWxs
b3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7Ci0gICAgICAgIHJlc3VsdC5yZW1vdmUobV91c2VyU3Rh
cnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdBdFNpZ24p
OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZGVjb2Rl
RXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0KQotewotICAgIGF1
dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAoIWlucHV0TGVuZ3RoKQot
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBWZWN0b3I8TENoYXI+IHBlcmNlbnRE
ZWNvZGVkOwotICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXRM
ZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsgKytpKSB7
Ci0gICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKLSAgICAgICAgICAgICYmIGlucHV0TGVuZ3Ro
ID4gMgotICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgotICAgICAgICAgICAgJiYg
aXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKLSAgICAgICAgICAgICYmIGlzQVNDSUlIZXhE
aWdpdChpbnB1dFtpICsgMl0pKSB7Ci0gICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51bmNoZWNr
ZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7Ci0g
ICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcGVyY2VudERl
Y29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKLSAgICB9Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkp
OwotfQotCi1TdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZGVjb2RlRXNj
YXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmco
bV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Ci19Ci0KLVN0cmluZyBVUkw6
OnBhc3MoKSBjb25zdAotewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNl
c0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNlckVuZCAr
IDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Ci19Ci0KLVN0cmluZyBVUkw6OmVu
Y29kZWRVc2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fdXNl
clN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Ci19Ci0KLVN0cmluZyBVUkw6OmVuY29k
ZWRQYXNzKCkgY29uc3QKLXsKLSAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJFbmQpCi0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmco
bV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOwotfQotCi1TdHJp
bmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAotewotICAgIGlmICghaGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBt
X3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwotfQotCi1ib29sIFVSTDo6aGFzRnJh
Z21lbnRJZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3Ry
aW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Ci19Ci0KLVN0cmluZyBVUkw6OmJhc2VBc1N0cmlu
ZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xh
c2gpOwotfQotCi0jaWYgIVVTRShDRikKLQotU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBj
b25zdAotewotICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBh
cnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOwotfQotCi0jZW5kaWYKLQotI2lmZGVmIE5ERUJV
RwotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldykK
LXsKLX0KLQotI2Vsc2UKLQotc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5n
VmlldyBwcm90b2NvbCkKLXsKLSAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0
aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgotICAgIC8vIFRoZSBpc0FTQ0lJQWxwaGFDYXNlbGVzc0Vx
dWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVycwotICAgIC8vIGFy
ZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3QgYW5kIHJlbGllZCBv
biB0aGVzZSBjaGVja3MuCi0gICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHByb3RvY29sLmNvZGVV
bml0cygpKSB7Ci0gICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOwotICAgICAgICBB
U1NFUlQoY2hhcmFjdGVyID4gJyAnKTsKLSAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoY2hh
cmFjdGVyKSk7Ci0gICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVy
KSA9PSBjaGFyYWN0ZXIpOwotICAgIH0KLX0KLQotI2VuZGlmCi0KLXN0YXRpYyBMb2NrIGRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKLQotdXNpbmcgRGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+Owotc3Rh
dGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcoKQotewotICAgIHN0YXRpYyBEZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKLSAgICByZXR1cm4g
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKLX0KLQotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJv
dG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVz
dGluZygpCi17Ci0gICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZh
dWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcoKTsKLSAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCi0gICAgICAgIGRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3Rpbmc7Ci0gICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOwotfQotCi12b2lk
IHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkKLXsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgZW5zdXJlRGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQpOwotfQot
Ci12b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQotewotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmdMb2NrKTsKLSAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmcoKSkKLSAgICAgICAgbWFwLT5jbGVhcigpOwotfQotCi1zdGQ6Om9wdGlvbmFsPHVp
bnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCi17Ci0g
ICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcoKSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgICAgIEFTU0VSVChvdmVycmlkZU1hcCk7
IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRlTWFwIGNh
bm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KLSAgICAgICAgYXV0byBpdGVy
YXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENvcHlpbmco
KSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCi0gICAgICAg
ICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotICAgIH0KLSAgICByZXR1cm4gVVJMUGFyc2Vy
OjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKLX0KLQotYm9vbCBpc0RlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAg
ICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsKLX0KLQot
Ym9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Ci17Ci0gICAg
YXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7Ci0KLSAgICAvLyBKYXZhU2NyaXB0
IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVSTCBkZWNp
ZGVzIHRoZXkgYXJlIGludmFsaWQuCi0gICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJvdG9jb2xJ
c0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKLSAgICBBU1NFUlQoIWVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2YXNjcmlw
dCIpKTsKLQotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0
LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAg
ICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJp
bmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZlIGNvbnN1
bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KLX0KLQotYm9vbCBVUkw6OnByb3Rv
Y29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKLXsKLSAgICBhc3NlcnRQcm90b2NvbElz
R29vZChwcm90b2NvbCk7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAotICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5sZW5ndGgoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBt
YWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9zY2hlbWVFbmQ7ICsraSkgewotICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1
YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBVUkw6OnF1ZXJ5KCkgY29uc3QK
LXsKLSAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCi0gICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsgMSwgbV9x
dWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAotfQotCi1TdHJpbmcgVVJMOjpwYXRoKCkgY29u
c3QKLXsKLSAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOwot
ICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0gcG9ydEVu
ZCk7Ci19Ci0KLWJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAg
Ly8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4K
LSAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKLSAgICBTdHJpbmcg
bmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0gICAgYXV0
byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQ
cm90b2NvbCk7Ci0gICAgaWYgKCFjYW5vbmljYWxpemVkKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VT
dHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKLSAgICAgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFVSTFBh
cnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vic3RyaW5n
KG1fc2NoZW1lRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3RyaW5nKQot
ewotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQXJl
QWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgcmV0
dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5s
ZW5ndGgoKSk7Ci19Ci0gICAgCi0vLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRl
bnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KLS8vIHRoZSBvdXRwdXQg
YnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KLS8vIFJldHVy
biB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KLXN0YXRpYyBib29sIGFw
cGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3IHN0cmlu
ZykKLXsKLSAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29k
ZWQgbmFtZS4KLSAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24n
dCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0gICAgY29u
c3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OwotICAgIAotICAgIGlmIChz
dHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJKHN0cmlu
ZykpIHsKLSAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIAotICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVy
TGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgIFVJRE5B
SW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7Ci0gICAgaW50
MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVSTFBhcnNl
cjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCi0gICAgICAgIHN0cmluZy51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1ZmZlciwg
aG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKLSAgICAK
LSAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSB7
Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252
ZXJ0ZWQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi11bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX3Bh
c3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3b3JkRW5k
ICsgMTsKLX0KLQotdm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQotewotICAgIGlm
ICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGNvbG9uSW5kZXggPSBz
LmZpbmQoJzonKTsKLSAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOwotICAgIGlmICghYXBwZW5k
RW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCi0gICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOwot
ICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
Ii8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0
YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJp
bmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwotCi0gICAgVVJMUGFyc2VyIHBhcnNlcihidWlsZGVy
LnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12b2lkIFVS
TDo6cmVtb3ZlUG9ydCgpCi17Ci0gICAgaWYgKCFtX3BvcnRMZW5ndGgpCi0gICAgICAgIHJldHVy
bjsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZyku
bGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5k
ICsgbV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi12
b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQotewotICAgIGlmICghbV9pc1ZhbGlk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9ydExlbmd0
aDsKLSAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBt
X2hvc3RFbmQgKyAxKTsKLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwg
U3RyaW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RF
bmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0K
LXZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQotewot
ICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmdWaWV3IGhv
c3ROYW1lKGhvc3RBbmRQb3J0KTsKLSAgICBTdHJpbmdWaWV3IHBvcnQ7Ci0gICAgCi0gICAgYXV0
byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOwotICAgIGlmIChjb2xvbkluZGV4ICE9
IG5vdEZvdW5kKSB7Ci0gICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRl
eCArIDEpOwotICAgICAgICBib29sIG9rOwotICAgICAgICBpbnQgcG9ydEludCA9IHBvcnQudG9J
bnRTdHJpY3Qob2spOwotICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xv
bkluZGV4KTsKLSAgICB9Ci0KLSAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7Ci0gICAgaWYgKCFhcHBl
bmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwotCi0gICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpKTsK
LSAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIvLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3ROYW1lLmRh
dGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAgIGlmICghcG9ydC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHBvcnQpOwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7Ci0KLSAgICBVUkxQYXJz
ZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29uc3QgU3Ry
aW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCi17Ci0gICAgYXV0byBlbmNv
ZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgewotICAgICAgICBDU3Ry
aW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7Ci0gICAgICAgIGF1dG8qIGRhdGEgPSB1dGY4LmRhdGEo
KTsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBhdXRvIGxlbmd0aCA9
IHV0ZjgubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7
IGorKykgewotICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKLSAgICAgICAgICAgIGlmIChz
aG91bGRFbmNvZGUoYykpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScpOwot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0
KGMpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdChjKSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChjKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OwotICAgIH07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aCgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1dFtpXSkpKQotICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7Ci0gICAgfQotICAgIHJldHVybiBpbnB1dDsK
LX0KLQotdm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQotewotICAgIGlmICgh
bV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNo
YXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhw
ZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0
aGUgdXNlciBsb2dpbi4KLQotICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKLSAgICBpZiAo
IXVzZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29kZUNoYXJh
Y3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwotICAgICAgICBp
ZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkp
Ci0gICAgICAgICAgICB1ID0gIi8vIiArIHU7Ci0gICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlk
bid0IGhhdmUgb25lIGJlZm9yZS4KLSAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVu
ZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKLSAgICAgICAgICAg
IHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJp
bmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyhtX3N0cmlu
Zykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVy
IHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRF
bmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKLSAgICAgICAg
ICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBl
eHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hh
bmdlLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7Ci0gICAgICAgICAgICBVUkxQ
YXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJT
dGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICAg
ICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBV
Ukw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKLXsKLSAgICBpZiAoIW1faXNWYWxp
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29yZEVuZDsK
LSAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgcCA9ICI6IiAr
IHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5m
b0VuY29kZVNldCkgKyAiQCI7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICBwID0gIi8vIiArIHA7Ci0g
ICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQg
b3VyIG93bi4KLSAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9
PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlciht
YWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwgU3RyaW5n
VmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cg
aGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyU3RhcnQg
PT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcp
Ci0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJz
ZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8g
bWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKLSAgICAgICAg
ICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0
KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7Ci0gICAg
ICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
dm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZpZXIpCi17
Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBP
cHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBlbnMgdG8g
YmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPwotICAgIC8vIEZJWE1FOiBJcyBpdCBjb3JyZWN0
IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJIGNoYXJh
Y3RlcnM/Ci0gICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgeyBt
X3N0cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVyKSB9LnJl
c3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKLXsKLSAg
ICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkg
PiBtX3F1ZXJ5RW5kKQotICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9xdWVyeUVu
ZCk7Ci19Ci0KLXZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpCi17
Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RyaW5nID0g
bV9zdHJpbmcubGVmdChtX3BhdGhFbmQpOwotICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhFbmQ7Ci19
Ci0KLXZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQotewotICAgIGlmICgh
bV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogJyMnIGFuZCBub24t
QVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCi0gICAgLy8gVXN1
YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBV
VEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGlu
IHRoaXMgZnVuY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2Ci0gICAg
aWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxs
KCkpIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9z
dHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7Ci0gICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJp
bmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVz
dWx0KCk7Ci0gICAgfQotCi19Ci0KLXZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykK
LXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIHBh
dGggPSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKLSAgICAg
ICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0KLSAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVtYmVyU2ln
biA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAn
PycgfHwgY2hhcmFjdGVyID09ICcjJzsKLSAgICB9OwotICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9ydExlbmd0
aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVtYmVyU2ln
biksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Ci0gICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBpZiAoYS5tX3F1ZXJ5
RW5kICE9IGIubV9xdWVyeUVuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVk
IHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBxdWVyeUxlbmd0aDsgKytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmlu
ZygpW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwgY29uc3Qg
VVJMJiBiKQotewotICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0
cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVF
cXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBpZiAoYS5tX3NjaGVtZUVu
ZCAhPSBiLm1fc2NoZW1lRW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1bnNpZ25l
ZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9
IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5o
b3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gYi5o
b3N0U3RhcnQoKTsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmlu
ZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgLy8gQW5kIHRoZSBob3N0Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhv
c3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGld
ICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgaG9zdHNBcmVFcXVhbChjb25z
dCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5o
b3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9z
dFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1
bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKLSAgICBpZiAo
aG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7Ci0gICAgICAgIGlm
IChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFydEIgKyBp
XSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pIGNv
bnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIXBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0
byBob3N0ID0gdGhpcy0+aG9zdCgpOwotICAgIGlmICghaG9zdC5lbmRzV2l0aChkb21haW4pKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9PSBkb21h
aW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgpIC0gMV0g
PT0gJy4nOwotfQotCi1TdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBT
dHJpbmcmIGlucHV0KQotewotICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhpbnB1
dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOwotfQotCi1ib29sIFVSTDo6aXNI
aWVyYXJjaGljYWwoKSBjb25zdAotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9PSAnOicpOwotICAg
IHJldHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKLX0KLQotdm9pZCBVUkw6
OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAotewotICAgIC8v
IEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUgY2hhcmFj
dGVycyBpbiB0aGUgc3RyaW5nIQotICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlkIFVSTCwg
d2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCi0gICAgYnVmZmVy
LnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZm
ZXIuZGF0YSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Ci1ib29sIHBy
b3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90
b2NvbCkKLXsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBz
dHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29sKSkpOwot
ICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBqID0g
MDsgdXJsW2ldOyArK2kpIHsKLSAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5k
IGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91bGRUcmlt
RnJvbVVSTCh1cmxbaV0pKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlzTGVhZGlu
ZyA9IGZhbHNlOwotCi0gICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVzLgotICAg
ICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ldID09ICdc
bicpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIXByb3RvY29sW2pdKQot
ICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7Ci0gICAgICAgIGlmICghaXNBU0NJSUFs
cGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICArK2o7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90
b2NvbCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9jb2wpOwot
fQotCi1pbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNv
bnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzSW50
ZXJuYWwoc3RyaW5nLCBwcm90b2NvbCk7Ci19Ci0KLSNpZm5kZWYgTkRFQlVHCi0KLXZvaWQgVVJM
OjpwcmludCgpIGNvbnN0Ci17Ci0gICAgcHJpbnRmKCIlc1xuIiwgbV9zdHJpbmcudXRmOCgpLmRh
dGEoKSk7Ci19Ci0KLSNlbmRpZgotCi1TdHJpbmcgVVJMOjpzdHJpcHBlZEZvclVzZUFzUmVmZXJy
ZXIoKSBjb25zdAotewotICAgIFVSTCByZWZlcnJlcigqdGhpcyk7Ci0gICAgcmVmZXJyZXIuc2V0
VXNlcihTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmcoKSk7Ci0gICAgcmVm
ZXJyZXIucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIHJlZmVycmVyLnN0
cmluZygpOwotfQotCi1ib29sIFVSTDo6aXNMb2NhbEZpbGUoKSBjb25zdAotewotICAgIC8vIElu
Y2x1ZGluZyBmZWVkIGhlcmUgbWlnaHQgYmUgYSBiYWQgaWRlYSBzaW5jZSBkcmFnIGFuZCBkcm9w
IHVzZXMgdGhpcyBjaGVjawotICAgIC8vIGFuZCBpbmNsdWRpbmcgZmVlZCB3b3VsZCBhbGxvdyBm
ZWVkcyB0byBwb3RlbnRpYWxseSBsZXQgc29tZW9uZSdzIGJsb2cKLSAgICAvLyByZWFkIHRoZSBj
b250ZW50cyBvZiB0aGUgY2xpcGJvYXJkIG9uIGEgZHJhZywgZXZlbiB3aXRob3V0IGEgZHJvcC4K
LSAgICAvLyBMaWtld2lzZSB3aXRoIHVzaW5nIHRoZSBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRV
UkxBc0xvY2FsKCkgZnVuY3Rpb24uCi0gICAgcmV0dXJuIHByb3RvY29sSXMoImZpbGUiKTsKLX0K
LQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBy
ZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotYm9vbCBw
cm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCkKLXsKLSAgICByZXR1cm4gcHJvdG9j
b2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSW5I
VFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxl
bmd0aCgpOwotICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0
cmluZyBvYmplY3QuCi0gICAgcmV0dXJuIGxlbmd0aCA+PSA1Ci0gICAgICAgICYmIGlzQVNDSUlB
bHBoYUNhc2VsZXNzRXF1YWwodXJsWzBdLCAnaCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwodXJsWzFdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwodXJsWzJdLCAndCcpCi0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
dXJsWzNdLCAncCcpCi0gICAgICAgICYmICh1cmxbNF0gPT0gJzonIHx8IChpc0FTQ0lJQWxwaGFD
YXNlbGVzc0VxdWFsKHVybFs0XSwgJ3MnKSAmJiBsZW5ndGggPj0gNiAmJiB1cmxbNV0gPT0gJzon
KSk7Ci19Ci0KLWNvbnN0IFVSTCYgYmxhbmtVUkwoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJvdXQ6YmxhbmsiKTsKLSAgICByZXR1
cm4gc3RhdGljQmxhbmtVUkw7Ci19Ci0KLWJvb2wgVVJMOjppc0JsYW5rVVJMKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gcHJvdG9jb2xJcygiYWJvdXQiKTsKLX0KLQotYm9vbCBwb3J0QWxsb3dlZChj
b25zdCBVUkwmIHVybCkKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJs
LnBvcnQoKTsKLQotICAgIC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZlIGEgcG9ydCwgcmV0
dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBvcnQiIGNhc2UuCi0gICAgaWYgKCFwb3J0KQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hlcyB0
aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KLSAgICAvLyBTZWUgaHR0
cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgYmxvY2tlZFBvcnRM
aXN0W10gPSB7Ci0gICAgICAgIDEsICAgIC8vIHRjcG11eAotICAgICAgICA3LCAgICAvLyBlY2hv
Ci0gICAgICAgIDksICAgIC8vIGRpc2NhcmQKLSAgICAgICAgMTEsICAgLy8gc3lzdGF0Ci0gICAg
ICAgIDEzLCAgIC8vIGRheXRpbWUKLSAgICAgICAgMTUsICAgLy8gbmV0c3RhdAotICAgICAgICAx
NywgICAvLyBxb3RkCi0gICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KLSAgICAgICAgMjAsICAgLy8g
RlRQLWRhdGEKLSAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKLSAgICAgICAgMjIsICAgLy8g
U1NICi0gICAgICAgIDIzLCAgIC8vIHRlbG5ldAotICAgICAgICAyNSwgICAvLyBTTVRQCi0gICAg
ICAgIDM3LCAgIC8vIHRpbWUKLSAgICAgICAgNDIsICAgLy8gbmFtZQotICAgICAgICA0MywgICAv
LyBuaWNuYW1lCi0gICAgICAgIDUzLCAgIC8vIGRvbWFpbgotICAgICAgICA3NywgICAvLyBwcml2
LXJqcwotICAgICAgICA3OSwgICAvLyBmaW5nZXIKLSAgICAgICAgODcsICAgLy8gdHR5bGluawot
ICAgICAgICA5NSwgICAvLyBzdXBkdXAKLSAgICAgICAgMTAxLCAgLy8gaG9zdHJpYW1lCi0gICAg
ICAgIDEwMiwgIC8vIGlzby10c2FwCi0gICAgICAgIDEwMywgIC8vIGdwcGl0bnAKLSAgICAgICAg
MTA0LCAgLy8gYWNyLW5lbWEKLSAgICAgICAgMTA5LCAgLy8gUE9QMgotICAgICAgICAxMTAsICAv
LyBQT1AzCi0gICAgICAgIDExMSwgIC8vIHN1bnJwYwotICAgICAgICAxMTMsICAvLyBhdXRoCi0g
ICAgICAgIDExNSwgIC8vIFNGVFAKLSAgICAgICAgMTE3LCAgLy8gdXVjcC1wYXRoCi0gICAgICAg
IDExOSwgIC8vIG5udHAKLSAgICAgICAgMTIzLCAgLy8gTlRQCi0gICAgICAgIDEzNSwgIC8vIGxv
Yy1zcnYgLyBlcG1hcAotICAgICAgICAxMzksICAvLyBuZXRiaW9zCi0gICAgICAgIDE0MywgIC8v
IElNQVAyCi0gICAgICAgIDE3OSwgIC8vIEJHUAotICAgICAgICAzODksICAvLyBMREFQCi0gICAg
ICAgIDQ2NSwgIC8vIFNNVFArU1NMCi0gICAgICAgIDUxMiwgIC8vIHByaW50IC8gZXhlYwotICAg
ICAgICA1MTMsICAvLyBsb2dpbgotICAgICAgICA1MTQsICAvLyBzaGVsbAotICAgICAgICA1MTUs
ICAvLyBwcmludGVyCi0gICAgICAgIDUyNiwgIC8vIHRlbXBvCi0gICAgICAgIDUzMCwgIC8vIGNv
dXJpZXIKLSAgICAgICAgNTMxLCAgLy8gQ2hhdAotICAgICAgICA1MzIsICAvLyBuZXRuZXdzCi0g
ICAgICAgIDU0MCwgIC8vIFVVQ1AKLSAgICAgICAgNTQ4LCAgLy8gYWZwb3ZlcnRjcCBbQXBwbGUg
YWRkaXRpb25dCi0gICAgICAgIDU1NiwgIC8vIHJlbW90ZWZzCi0gICAgICAgIDU2MywgIC8vIE5O
VFArU1NMCi0gICAgICAgIDU4NywgIC8vIEVTTVRQCi0gICAgICAgIDYwMSwgIC8vIHN5c2xvZy1j
b25uCi0gICAgICAgIDYzNiwgIC8vIExEQVArU1NMCi0gICAgICAgIDk5MywgIC8vIElNQVArU1NM
Ci0gICAgICAgIDk5NSwgIC8vIFBPUDMrU1NMCi0gICAgICAgIDIwNDksIC8vIE5GUwotICAgICAg
ICAzNjU5LCAvLyBhcHBsZS1zYXNsIC8gUGFzc3dvcmRTZXJ2ZXIgW0FwcGxlIGFkZGl0aW9uXQot
ICAgICAgICA0MDQ1LCAvLyBsb2NrZAotICAgICAgICA0MTkwLCAvLyBNYW5hZ2VTaWV2ZSBbQXBw
bGUgYWRkaXRpb25dCi0gICAgICAgIDYwMDAsIC8vIFgxMQotICAgICAgICA2NjY1LCAvLyBBbHRl
cm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2NiwgLy8gQWx0ZXJuYXRlIElS
QyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjcsIC8vIFN0YW5kYXJkIElSQyBbQXBwbGUg
YWRkaXRpb25dCi0gICAgICAgIDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9u
XQotICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAg
ICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2
Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgaW52YWxpZFBvcnROdW1i
ZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCi0gICAgfTsKLQot
ICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93
IGl0LgotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlz
dCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKLSAgICBpZiAoIXN0ZDo6YmluYXJ5X3Nl
YXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlz
dCksIHBvcnQudmFsdWUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gQWxsb3cg
cG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgotICAgIGlmICgo
cG9ydC52YWx1ZSgpID09IDIxIHx8IHBvcnQudmFsdWUoKSA9PSAyMikgJiYgdXJsLnByb3RvY29s
SXMoImZ0cCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEFsbG93IGFueSBwb3J0
IG51bWJlciBpbiBhIGZpbGUgVVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIgaXMgaWdub3JlZC4K
LSAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGUiKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0
IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiZGF0
YSIpKTsKLQotICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9yIHdoZW4gdGhl
IFVSTCBoYXMgYSBjb21tYSBmaXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVyPwotICAgIC8vIEN1
cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRoYXQgY2Fz
ZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJlY3QuCi0gICAgYXV0byBpbmRleCA9IHVybC5maW5kKCc7
JywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBpbmRleCA9IHVybC5m
aW5kKCcsJywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUgaXQgc291bmQgbGlr
ZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcgdGV4dC9wbGFpbi4KLSAgICAgICAgLy8gQnV0IHdl
IGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNvbWUgdGltZSwgc28g
bm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBhdCB0aGlzIHRpbWUuCi0gICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwotICAgIH0KLSAgICBpZiAoaW5kZXggPT0gNSkKLSAgICAgICAgcmV0dXJu
ICJ0ZXh0L3BsYWluIl9zOwotICAgIEFTU0VSVChpbmRleCA+PSA1KTsKLSAgICByZXR1cm4gdXJs
LnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci19Ci0K
LVN0cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5n
dGgpIGNvbnN0Ci17Ci0gICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkKLSAgICAg
ICAgcmV0dXJuIHN0cmluZygpOwotCi0gICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8g
MiAtIDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7Ci19Ci0KLVVS
TCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXJ0
KQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKLX0KLQotVVJMIFVS
TDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotewot
ICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7Ci19Ci0KLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJsKQotewotICAg
IHRzIDw8IHVybC5zdHJpbmcoKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLSNpZiAhUExBVEZPUk0o
Q09DT0EpICYmICFVU0UoU09VUCkKLXN0YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3RyaW5nVmll
dyBzdHJpbmcpCi17Ci0gICAgYXV0byBjb3VudCA9IDA7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8g
b2N0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicpKSB7Ci0gICAgICAg
IGlmIChjb3VudCA+PSA0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGNv
bnN0IGF1dG8gbGVuZ3RoID0gb2N0ZXQubGVuZ3RoKCk7Ci0gICAgICAgIGlmICghbGVuZ3RoIHx8
IGxlbmd0aCA+IDMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgYXV0byB2
YWx1ZSA9IDA7Ci0gICAgICAgIGZvciAoYXV0byBpID0gMHU7IGkgPCBsZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgY29uc3QgYXV0byBkaWdpdCA9IG9jdGV0W2ldOwotCi0gICAgICAgICAgICAv
LyBQcm9oaWJpdCBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmIChkaWdpdCA+ICc5JyB8
fCBkaWdpdCA8ICghaSAmJiBsZW5ndGggPiAxID8gJzEnIDogJzAnKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHZhbHVlID0gMTAgKiB2YWx1ZSArIChkaWdp
dCAtICcwJyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodmFsdWUgPiAyNTUpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgY291bnQrKzsKLSAgICB9Ci0KLSAgICByZXR1
cm4gKGNvdW50ID09IDQpOwotfQotCi1zdGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNzKFN0cmluZ1Zp
ZXcgc3RyaW5nKQotewotICAgIGVudW0gU2tpcFN0YXRlIHsgTm9uZSwgV2lsbFNraXAsIFNraXBw
aW5nLCBTa2lwcGVkLCBGaW5hbCB9OwotICAgIGF1dG8gc2tpcFN0YXRlID0gTm9uZTsKLSAgICBh
dXRvIGNvdW50ID0gMDsKLQotICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQgOiBzdHJpbmcuc3Bs
aXRBbGxvd2luZ0VtcHR5RW50cmllcygnOicpKSB7Ci0gICAgICAgIGlmIChjb3VudCA+PSA4IHx8
IHNraXBTdGF0ZSA9PSBGaW5hbCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICBjb25zdCBhdXRvIGxlbmd0aCA9IGhleHRldC5sZW5ndGgoKTsKLSAgICAgICAgaWYgKCFsZW5n
dGgpIHsKLSAgICAgICAgICAgIC8vIDo6IG1heSBiZSB1c2VkIGFueXdoZXJlIHRvIHNraXAgMSB0
byA4IGhleHRldHMsIGJ1dCBvbmx5IG9uY2UuCi0gICAgICAgICAgICBpZiAoc2tpcFN0YXRlID09
IFNraXBwZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBp
ZiAoc2tpcFN0YXRlID09IE5vbmUpCi0gICAgICAgICAgICAgICAgc2tpcFN0YXRlID0gIWNvdW50
ID8gV2lsbFNraXAgOiBTa2lwcGluZzsKLSAgICAgICAgICAgIGVsc2UgaWYgKHNraXBTdGF0ZSA9
PSBXaWxsU2tpcCkKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGluZzsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBXaWxs
U2tpcCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoc2tpcFN0YXRl
ID09IFNraXBwaW5nKQotICAgICAgICAgICAgc2tpcFN0YXRlID0gU2tpcHBlZDsKLQotICAgICAg
ICBpZiAobGVuZ3RoID4gNCkgewotICAgICAgICAgICAgLy8gQW4gSVB2NCBhZGRyZXNzIG1heSBi
ZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBmaW5hbCB0d28gaGV4dGV0cy4KLSAgICAgICAgICAgIGlm
ICgoc2tpcFN0YXRlID09IE5vbmUgJiYgY291bnQgIT0gNikgfHwgKHNraXBTdGF0ZSA9PSBTa2lw
cGVkICYmIGNvdW50ID49IDYpIHx8ICFpc0lQdjRBZGRyZXNzKGhleHRldCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRv
IGNvZGVVbml0IDogaGV4dGV0LmNvZGVVbml0cygpKSB7Ci0gICAgICAgICAgICAvLyBJUHY2IGFs
bG93cyBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGNv
ZGVVbml0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjb3VudCsrOwotICAgIH0KLQotICAgIHJldHVybiAoY291bnQgPT0gOCAmJiBza2lwU3Rh
dGUgPT0gTm9uZSkgfHwgc2tpcFN0YXRlID09IFNraXBwZWQgfHwgc2tpcFN0YXRlID09IEZpbmFs
OwotfQotCi1ib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKLXsKLSAg
ICBpZiAoaG9zdC5maW5kKCc6JykgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBpc0lQdjRB
ZGRyZXNzKGhvc3QpOwotCi0gICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7Ci19Ci0jZW5k
aWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2YwZTM4YTcxYjYxYjRmZGE4MTZiNzRkNTMzOTM1ZGY0MzFi
NjZkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0
IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKLSNlbmRpZgotCi0jaWYgVVNFKFNPVVApCi0jaW5j
bHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKLSNlbmRpZgotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi1P
QkpDX0NMQVNTIE5TVVJMOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgVGV4dFN0
cmVhbTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkxUZXh0RW5jb2Rpbmcg
ewotcHVibGljOgotICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBhcnNp
bmcoU3RyaW5nVmlldykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgflVSTFRleHRFbmNvZGluZygp
IHsgfTsKLX07Ci0KLXN0cnVjdCBVUkxIYXNoOwotCi1jbGFzcyBVUkwgewotcHVibGljOgotICAg
IC8vIEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgotICAgIFVS
TCgpIHsgaW52YWxpZGF0ZSgpOyB9Ci0KLSAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7
IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3Ry
aW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAgLy8gUmVzb2x2ZXMgdGhl
IHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQot
ICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFj
ZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2gg
Y2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMKLSAgICAvLyBhYnNv
bHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3
YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdv
dWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMKLSAgICAvLyB0aGUg
c2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4KLSAgICBXRUJDT1JF
X0VYUE9SVCBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25z
dCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJp
bmcmKTsKLQotICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdDsKLQot
ICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBoYXJtb25pemVkIHNv
IHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBlbXB0eSBzdHJpbmcg
Z2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8vIHN0YW5kYXJkIFN0cmluZyBjb25z
dHJ1Y3Rvci4KLQotICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91
IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIKLSAgICAvLyB0aHJlYWQuIFNpbmNlIHRoZSB1
bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzCi0gICAg
Ly8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29weSgpIG92ZXIgcGxh
aW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIGlzb2xhdGVkQ29weSgp
IGNvbnN0OwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29sIGlzRW1wdHkoKSBj
b25zdDsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4KLSAgICAvLyBOb24t
aGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQuCi0gICAgYm9vbCBj
YW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQotCi0g
ICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7
IH0KLSAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBTdHJpbmcm
IHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9
IDEwMjQpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBwcm90b2NvbCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBh
c3MoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aCgpIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotCi0gICAgYm9vbCBoYXNVc2VybmFtZSgp
IGNvbnN0OwotICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKLSAgICBib29sIGhhc1F1ZXJ5
KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGF0
aCgpIGNvbnN0OwotCi0gICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygpLCB0aGVzZSBmdW5j
dGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAgLy8gVGhpcyBpcyBuZWNl
c3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5nIGRvZXNu
J3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNv
ZGVkVXNlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVkUGFzcygp
IGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0
OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7Ci0K
LSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMgdGhl
IHNhbWUgYXMgdGhlIG51bGwtCi0gICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVudC4gVGhl
IGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBy
b3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OwotICAgIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdW
aWV3KSBjb25zdDsKLSAgICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3QgeyByZXR1cm4gcHJv
dG9jb2xJcygiYmxvYiIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQmxhbmtVUkwoKSBjb25zdDsKLSAgICBib29sIGNh
bm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJlQUJhc2VVUkw7IH0KLQot
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmKSBj
b25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5n
Jik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwotCi0gICAgdm9pZCByZW1vdmVQ
b3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKLQotICAgIC8vIElucHV0
IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgotICAgIHZvaWQgc2V0SG9zdEFu
ZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHNldFVzZXIoY29uc3QgU3RyaW5nJik7
Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOwotCi0gICAgLy8gSWYgeW91IHBhc3Mg
YW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5nIHBhdGgK
LSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBhdGgoY29u
c3QgU3RyaW5nJik7Ci0KLSAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlv
biBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAotICAgIC8vIGZvciB5b3UuIFNl
dHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0
aGUKLSAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVy
eSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UXVlcnko
Y29uc3QgU3RyaW5nJik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZyYWdtZW50SWRl
bnRpZmllcihTdHJpbmdWaWV3KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUZyYWdt
ZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVRdWVyeUFu
ZEZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wg
aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOwotCi0gICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkg
Y29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCgpIGNvbnN0OwotICAgIHVuc2lnbmVkIHBhdGhB
ZnRlckxhc3RTbGFzaCgpIGNvbnN0OwotCi0gICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNv
bnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0KLSNpZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBP
UlQgVVJMKENGVVJMUmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShTT1VQKQotICAgIFVSTChT
b3VwVVJJKik7Ci0gICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBjcmVhdGVTb3VwVVJJKCkgY29uc3Q7
Ci0jZW5kaWYKLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIFVSTChO
U1VSTCopOwotICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TVVJMKigpIGNvbnN0OwotI2Vu
ZGlmCi0jaWZkZWYgX19PQkpDX18KLSAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJl
dHVybiBzdHJpbmcoKTsgfQotI2VuZGlmCi0KLSNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBwcmlu
dCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVyJik7Ci0KLXByaXZh
dGU6Ci0gICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNlcjsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGludmFsaWRhdGUoKTsKLSAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYs
IGNvbnN0IGNoYXIqKTsKLSAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYg
YnVmZmVyKSBjb25zdDsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKLQotICAgIFdF
QkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wg
cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29u
c3QgVVJMJik7Ci0KLSAgICBTdHJpbmcgbV9zdHJpbmc7Ci0KLSAgICB1bnNpZ25lZCBtX2lzVmFs
aWQgOiAxOwotICAgIHVuc2lnbmVkIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA6IDE7Ci0gICAg
dW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDogMTsKLQotICAgIC8vIFRoaXMgaXMgb3V0IG9m
IG9yZGVyIHRvIGFsaWduIHRoZSBiaXRzIGJldHRlci4gVGhlIHBvcnQgaXMgYWZ0ZXIgdGhlIGhv
c3QuCi0gICAgdW5zaWduZWQgbV9wb3J0TGVuZ3RoIDogMzsKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG1heFBvcnRMZW5ndGggPSAoMSA8PCAzKSAtIDE7Ci0KLSAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG1heFNjaGVtZUxlbmd0aCA9ICgxIDw8IDI2KSAtIDE7Ci0gICAgdW5z
aWduZWQgbV9zY2hlbWVFbmQgOiAyNjsKLSAgICB1bnNpZ25lZCBtX3VzZXJTdGFydDsKLSAgICB1
bnNpZ25lZCBtX3VzZXJFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXNzd29yZEVuZDsKLSAgICB1bnNp
Z25lZCBtX2hvc3RFbmQ7Ci0gICAgdW5zaWduZWQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAg
dW5zaWduZWQgbV9wYXRoRW5kOwotICAgIHVuc2lnbmVkIG1fcXVlcnlFbmQ7Ci19OwotCi1zdGF0
aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVvZihTdHJpbmcpICsgOCAqIHNpemVvZih1bnNp
Z25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwiKTsKLQotdGVtcGxhdGUgPGNsYXNzIEVuY29k
ZXI+Ci12b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5j
b2RlciA8PCBtX3N0cmluZzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1ib29sIFVS
TDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYgdXJsKQotewotICAgIGF1dG8gb3B0aW9u
YWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsKLSAgICBpZiAoIW9wdGlvbmFsVVJMKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdXJsID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLXN0ZDo6b3B0aW9u
YWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFN0cmluZyBzdHJp
bmc7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIHJldHVybiBVUkwoVVJMKCksIHN0cmluZyk7Ci19Ci0KLVdFQkNPUkVf
RVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBj
b25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJh
Z21lbnQoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3Rv
Y29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVf
RVhQT1JUIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLQotV0VC
Q09SRV9FWFBPUlQgY29uc3QgVVJMJiBibGFua1VSTCgpOwotCi0vLyBGdW5jdGlvbnMgdG8gZG8g
VVJMIG9wZXJhdGlvbnMgb24gc3RyaW5ncy4KLS8vIFRoZXNlIGFyZSBvcGVyYXRpb25zIHRoYXQg
YXJlbid0IGZhc3RlciBvbiBhIHBhcnNlZCBVUkwuCi0vLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJl
bnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9ucyBpbiB0aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZSB0aGUg
c3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5kIHBhcnNhYmxlIFVSTC4KLS8vIFRoaXMgaXMgZXNwZWNp
YWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2YWxpZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBuZWNl
c3NhcmlseSBjb25zaWRlcmVkIHZhbGlkIGJ5IFVSTC4KLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBw
cm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7Ci1XRUJD
T1JFX0VYUE9SVCBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsK
LWJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpOwotV0VCQ09SRV9FWFBP
UlQgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsKLQotc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHBy
b3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVp
bnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBw
b3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5l
dmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCi0KLVdFQkNPUkVfRVhQT1JUIHZvaWQgcmVn
aXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJEZWZhdWx0UG9y
dEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwotCi1ib29sIGlzVmFsaWRQcm90b2NvbChjb25z
dCBTdHJpbmcmKTsKLQotU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1
cmwpOwotCi0vLyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3NlLCBkaWZm
ZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRoZSBVUkwg
U3RhbmRhcmQuCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVl
bmNlcyhjb25zdCBTdHJpbmcmKTsKLQotLy8gSW5saW5lcy4KLQotaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJpbmco
KSA9PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYg
YSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpID09IGI7Ci19Ci0K
LWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCi17
Ci0gICAgcmV0dXJuIGEgPT0gYi5zdHJpbmcoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJpbmcoKSAh
PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwg
Y29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpICE9IGI7Ci19Ci0KLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCi17Ci0g
ICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKLX0KLQotLy8gSW5saW5lIHZlcnNpb25zIG9mIHNv
bWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxpbmluZwotLy8gd2l0
aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVm
aW5pdGlvbi4KLQotaW5saW5lIGJvb2wgVVJMOjppc051bGwoKSBjb25zdAotewotICAgIHJldHVy
biBtX3N0cmluZy5pc051bGwoKTsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjppc0VtcHR5KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOwotfQotCi1pbmxpbmUgYm9vbCBV
Ukw6OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQ7Ci19Ci0KLWlubGlu
ZSBib29sIFVSTDo6aGFzUGF0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBt
X2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzVXNlcm5h
bWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZXJFbmQgPiBtX3VzZXJTdGFydDsKLX0KLQot
aW5saW5lIGJvb2wgVVJMOjpoYXNQYXNzd29yZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFz
c3dvcmRFbmQgPiAobV91c2VyRW5kICsgMSk7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUXVl
cnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3F1ZXJ5RW5kID4gbV9wYXRoRW5kOwotfQotCi1p
bmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1Zh
bGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpID4gbV9xdWVyeUVuZDsKLX0KLQotaW5saW5lIGJvb2wg
VVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcm90
b2NvbElzSW5IVFRQRmFtaWx5OwotfQotCi1pbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoU3RhcnQo
KSBjb25zdAotewotICAgIHJldHVybiBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19Ci0KLWlu
bGluZSB1bnNpZ25lZCBVUkw6OnBhdGhFbmQoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhdGhF
bmQ7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFzdFNsYXNoOwotfQotCi1XVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZh
dWx0SGFzaDxXZWJDb3JlOjpVUkw+OwotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJD
b3JlOjpVUkw+OwotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9VUkxIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZDBhYjk2ZGEzNWQzMWFjOGRiNGViNGRh
YmQzZjRlMTU5MmI4MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMSGFzaC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaWZuZGVmIFVSTEhhc2hfaAotI2RlZmluZSBVUkxIYXNoX2gKLQotI2luY2x1ZGUgIlVS
TC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgc3RydWN0IFVSTEhh
c2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCktPmhhc2goKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3Qg
VVJMJiBiKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwo
YS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29u
c3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAgIH07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIFVSTEhhc2gg
aXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nCi10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0
SGFzaDxXZWJDb3JlOjpVUkw+IHsKLSAgICB1c2luZyBIYXNoID0gV2ViQ29yZTo6VVJMSGFzaDsK
LX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6VVJMPiA6IFNpbXBs
ZUNsYXNzSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+IHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RG
Ci0KLSNlbmRpZiAvLyBVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2JhYzQ5ZDliNjVkZThiMTA0ZDVhNmY3
NWIyNTgwYjhiODkyYzZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwyOTI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNs
dWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlIDxhcnJheT4KLSNpbmNs
dWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8dW5pY29k
ZS91dHlwZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jZGVmaW5lIFVSTF9QQVJTRVJf
REVCVUdHSU5HIDAKLQotI2lmIFVSTF9QQVJTRVJfREVCVUdHSU5HCi0jZGVmaW5lIFVSTF9QQVJT
RVJfTE9HKC4uLikgTE9HKFVSTFBhcnNlciwgX19WQV9BUkdTX18pCi0jZWxzZQotI2RlZmluZSBV
UkxfUEFSU0VSX0xPRyguLi4pCi0jZW5kaWYKLSAgICAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1jbGFzcyBDb2RlUG9pbnRJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgQUxXQVlT
X0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcigpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgQ29kZVBv
aW50SXRlcmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSogYmVnaW4sIGNvbnN0IENoYXJhY3RlclR5
cGUqIGVuZCkKLSAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQotICAgICAgICAsIG1fZW5kKGVuZCkK
LSAgICB7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3Io
Y29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIGJlZ2luLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYg
ZW5kKQotICAgICAgICA6IENvZGVQb2ludEl0ZXJhdG9yKGJlZ2luLm1fYmVnaW4sIGVuZC5tX2Jl
Z2luKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGVuZC5tX2JlZ2luID49IGJlZ2luLm1fYmVnaW4p
OwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIgb3BlcmF0b3IqKCkgY29u
c3Q7Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwot
Ci0gICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZVBvaW50SXRlcmF0
b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIu
bV9iZWdpbgotICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7Ci0gICAgfQotICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAgICAKLSAgICBBTFdB
WVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgQ29kZVBvaW50SXRl
cmF0b3ImIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9iZWdpbiA9IG90aGVyLm1fYmVnaW47Ci0g
ICAgICAgIG1fZW5kID0gb3RoZXIubV9lbmQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgYXRFbmQoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fYmVnaW4gPD0gbV9lbmQpOwotICAgICAgICByZXR1cm4gbV9iZWdpbiA+PSBtX2Vu
ZDsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2luY2Uo
Y29uc3QgQ2hhcmFjdGVyVHlwZSogcmVmZXJlbmNlKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fYmVnaW4gPj0gcmVmZXJlbmNlKTsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4gLSByZWZl
cmVuY2U7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2luY2Uo
Y29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIGNvZGVVbml0c1NpbmNlKG90aGVyLm1fYmVnaW4pOwotICAgIH0KLSAgICAKLXByaXZhdGU6
Ci0gICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogbV9iZWdpbiB7IG51bGxwdHIgfTsKLSAgICBjb25z
dCBDaGFyYWN0ZXJUeXBlKiBtX2VuZCB7IG51bGxwdHIgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLUFM
V0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKigp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFhdEVuZCgpKTsKLSAgICByZXR1cm4gKm1fYmVnaW47Ci19
Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgYXV0byBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hh
cj46Om9wZXJhdG9yKysoKSAtPiBDb2RlUG9pbnRJdGVyYXRvciYKLXsKLSAgICBtX2JlZ2luKys7
Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIFVDaGFy
MzIgQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+OjpvcGVyYXRvciooKSBjb25zdAotewotICAgIEFT
U0VSVCghYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjOwotICAgIFUxNl9HRVQobV9iZWdpbiwgMCwg
MCwgbV9lbmQgLSBtX2JlZ2luLCBjKTsKLSAgICByZXR1cm4gYzsKLX0KLQotdGVtcGxhdGU8Pgot
QUxXQVlTX0lOTElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPjo6b3BlcmF0b3IrKygp
IC0+IENvZGVQb2ludEl0ZXJhdG9yJgotewotICAgIHVuc2lnbmVkIGkgPSAwOwotICAgIHNpemVf
dCBsZW5ndGggPSBtX2VuZCAtIG1fYmVnaW47Ci0gICAgVTE2X0ZXRF8xKG1fYmVnaW4sIGksIGxl
bmd0aCk7Ci0gICAgbV9iZWdpbiArPSBpOwotICAgIHJldHVybiAqdGhpczsKLX0KLSAgICAKLUFM
V0FZU19JTkxJTkUgc3RhdGljIHZvaWQgYXBwZW5kQ29kZVBvaW50KFZlY3RvcjxVQ2hhcj4mIGRl
c3RpbmF0aW9uLCBVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBpZiAoVV9JU19CTVAoY29kZVBv
aW50KSkgewotICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNv
ZGVQb2ludCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGRlc3RpbmF0aW9uLnJlc2Vy
dmVDYXBhY2l0eShkZXN0aW5hdGlvbi5zaXplKCkgKyAyKTsKLSAgICBkZXN0aW5hdGlvbi51bmNo
ZWNrZWRBcHBlbmQoVTE2X0xFQUQoY29kZVBvaW50KSk7Ci0gICAgZGVzdGluYXRpb24udW5jaGVj
a2VkQXBwZW5kKFUxNl9UUkFJTChjb2RlUG9pbnQpKTsKLX0KLQotZW51bSBVUkxDaGFyYWN0ZXJD
bGFzcyB7Ci0gICAgVXNlckluZm8gPSAweDEsCi0gICAgRGVmYXVsdCA9IDB4MiwKLSAgICBGb3Ji
aWRkZW5Ib3N0ID0gMHg0LAotICAgIFF1ZXJ5UGVyY2VudCA9IDB4OCwKLSAgICBTbGFzaFF1ZXN0
aW9uT3JIYXNoID0gMHgxMCwKLSAgICBWYWxpZFNjaGVtZSA9IDB4MjAsCi19OwotCi1zdGF0aWMg
Y29uc3QgdWludDhfdCBjaGFyYWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7Ci0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHgwCi0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEKLSAgICBVc2VySW5mbyB8IERl
ZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MgotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1
ZXJ5UGVyY2VudCwgLy8gMHgzCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NQot
ICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg2Ci0gICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDcKLSAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4OAotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4OQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4QQotICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweEMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQg
fCBGb3JiaWRkZW5Ib3N0LCAvLyAweEQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQsIC8vIDB4RQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8g
MHhGCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEwCi0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDExCi0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEyCi0gICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAweDEzCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDE0Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDE1Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE2Ci0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE3Ci0gICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE4Ci0gICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE5Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweDFBCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDFCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFD
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFECi0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFFCi0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFGCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJyAnCi0gICAgMCwgLy8gJyEnCi0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAnIicKLSAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVu
SG9zdCwgLy8gJyMnCi0gICAgMCwgLy8gJyQnCi0gICAgRm9yYmlkZGVuSG9zdCwgLy8gJyUnCi0g
ICAgMCwgLy8gJyYnCi0gICAgMCwgLy8gJ1wnJwotICAgIDAsIC8vICcoJwotICAgIDAsIC8vICcp
JwotICAgIDAsIC8vICcqJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnKycKLSAgICAwLCAvLyAnLCcK
LSAgICBWYWxpZFNjaGVtZSwgLy8gJy0nCi0gICAgVmFsaWRTY2hlbWUsIC8vICcuJwotICAgIFVz
ZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICcvJwotICAg
IFZhbGlkU2NoZW1lLCAvLyAnMCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzEnCi0gICAgVmFsaWRT
Y2hlbWUsIC8vICcyJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMycKLSAgICBWYWxpZFNjaGVtZSwg
Ly8gJzQnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc1JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnNicK
LSAgICBWYWxpZFNjaGVtZSwgLy8gJzcnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc4JwotICAgIFZh
bGlkU2NoZW1lLCAvLyAnOScKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICc6Jwot
ICAgIFVzZXJJbmZvLCAvLyAnOycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnPCcKLSAgICBVc2VySW5mbywgLy8gJz0nCi0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJz4nCi0g
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhv
c3QsIC8vICc/JwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ0AnCi0gICAgVmFs
aWRTY2hlbWUsIC8vICdBJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnQicKLSAgICBWYWxpZFNjaGVt
ZSwgLy8gJ0MnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdEJwotICAgIFZhbGlkU2NoZW1lLCAvLyAn
RScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0YnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdHJwotICAg
IFZhbGlkU2NoZW1lLCAvLyAnSCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0knCi0gICAgVmFsaWRT
Y2hlbWUsIC8vICdKJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSycKLSAgICBWYWxpZFNjaGVtZSwg
Ly8gJ0wnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdNJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnTicK
LSAgICBWYWxpZFNjaGVtZSwgLy8gJ08nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdQJwotICAgIFZh
bGlkU2NoZW1lLCAvLyAnUScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1InCi0gICAgVmFsaWRTY2hl
bWUsIC8vICdTJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnVCcKLSAgICBWYWxpZFNjaGVtZSwgLy8g
J1UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdWJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnVycKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJ1gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdZJwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnWicKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICdbJwotICAg
IFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICdcXCcK
LSAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICddJwotICAgIFVzZXJJbmZvLCAvLyAn
XicKLSAgICAwLCAvLyAnXycKLSAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8vICdgJwotICAgIFZh
bGlkU2NoZW1lLCAvLyAnYScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2InCi0gICAgVmFsaWRTY2hl
bWUsIC8vICdjJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnZCcKLSAgICBWYWxpZFNjaGVtZSwgLy8g
J2UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdmJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnZycKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJ2gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdpJwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnaicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2snCi0gICAgVmFsaWRTY2hlbWUs
IC8vICdsJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnbScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ24n
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICdvJwotICAgIFZhbGlkU2NoZW1lLCAvLyAncCcKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ3EnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdyJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAncycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3QnCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICd1JwotICAgIFZhbGlkU2NoZW1lLCAvLyAndicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3cnCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICd4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAneScKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ3onCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAneycKLSAgICBVc2Vy
SW5mbywgLy8gJ3wnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAnfScKLSAgICAwLCAvLyAn
ficKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4N0YKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODAK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODIKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4ODMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODQKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4ODUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODYKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4ODcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODgKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4ODkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEEKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OEIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEMKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OEQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEUKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OEYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTMK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTUKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTcKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTkKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUIKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUQKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUYKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTEKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTYK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTgKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUEKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUMKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUUKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjAKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QjEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjIKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjQKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QjUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjkK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkIKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QkMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkQKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QkUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkYKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QzAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzEKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QzIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzMKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QzQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzUKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QzYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzcKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QzgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
Q0EKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0IKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0MK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0QKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0UKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0YKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDAKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RDEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDIKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RDMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDQKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RDUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDYKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RDcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDgKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RDkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REEKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4REIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
REQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REYK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTEKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTMKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTUKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTcKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTkKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUIKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUQKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RjAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjIK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjQKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RjUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjYKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RjcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjgKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkEKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkMKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkUKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RkYKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRyb2woQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsg
cmV0dXJuIGNoYXJhY3RlciA8PSAweDFGOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzQzBDb250cm9sT3JTcGFjZShDaGFyYWN0
ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MjA7IH0KLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNUYWJP
ck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAw
eEQgJiYgY2hhcmFjdGVyID49IDB4OSAmJiBjaGFyYWN0ZXIgIT0gMHhCICYmIGNoYXJhY3RlciAh
PSAweEM7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUg
c3RhdGljIGJvb2wgaXNJblNpbXBsZUVuY29kZVNldChDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rlcikg
eyByZXR1cm4gY2hhcmFjdGVyID4gMHg3RSB8fCBpc0MwQ29udHJvbChjaGFyYWN0ZXIpOyB9Ci10
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29s
IGlzSW5EZWZhdWx0RW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBj
aGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIERlZmF1
bHQ7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3Rh
dGljIGJvb2wgaXNJblVzZXJJbmZvRW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7
IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVy
XSAmIFVzZXJJbmZvOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBib29sIGlzUGVyY2VudE9yTm9uQVNDSUkoQ2hhcmFjdGVyVHlwZSBjaGFy
YWN0ZXIpIHsgcmV0dXJuICFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09ICclJzsg
fQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMg
Ym9vbCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0
dXJuIGNoYXJhY3RlciA8PSAnXFwnICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAm
IFNsYXNoUXVlc3Rpb25Pckhhc2g7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNWYWxpZFNjaGVtZUNoYXJhY3RlcihDaGFyYWN0
ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICd6JyAmJiBjaGFyYWN0ZXJD
bGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBWYWxpZFNjaGVtZTsgfQotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0ZvcmJpZGRlbkhvc3RD
b2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAn
XScgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0ZXJdICYgRm9yYmlkZGVuSG9zdDsgfQot
QUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKHVp
bnQ4X3QgYnl0ZSwgY29uc3QgYm9vbCYgdXJsSXNTcGVjaWFsKQotewotICAgIGlmIChjaGFyYWN0
ZXJDbGFzc1RhYmxlW2J5dGVdICYgUXVlcnlQZXJjZW50KQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBpZiAoYnl0ZSA9PSAnXCcnICYmIHVybElzU3BlY2lhbCkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZv
RW5jb2RlU2V0KFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmlzSW5Vc2VySW5mb0Vu
Y29kZVNldChjKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgVVJMUGFy
c2VyOjpSZXBvcnRTeW50YXhWaW9sYXRpb24gcmVwb3J0U3ludGF4VmlvbGF0aW9uPgotQUxXQVlT
X0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQotewotICAgICsraXRlcmF0b3I7
Ci0gICAgd2hpbGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5l
KCppdGVyYXRvcikpKSB7Ci0gICAgICAgIGlmIChyZXBvcnRTeW50YXhWaW9sYXRpb24gPT0gUmVw
b3J0U3ludGF4VmlvbGF0aW9uOjpZZXMpCi0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRl
cmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICsraXRlcmF0b3I7Ci0g
ICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJz
ZXI6OnRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9s
YXRpb246Ok5vPihpdGVyYXRvcik7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgVVJM
UGFyc2VyOjppc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCAhaXNBU0NJSUFs
cGhhKCppdGVyYXRvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJh
Y3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICBpZiAo
aXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgqaXRlcmF0
b3IgPT0gJzonKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoVU5MSUtFTFkoKml0ZXJh
dG9yID09ICd8JykpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hh
cjMyIGNvZGVQb2ludCkKLXsKLSAgICBBU1NFUlQoaXNBU0NJSShjb2RlUG9pbnQpKTsKLSAgICBp
ZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAgICBtX2FzY2lpQnVm
ZmVyLmFwcGVuZChjb2RlUG9pbnQpOwotfQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2Vy
OjphcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5n
dGgpCi17Ci0gICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKLSAgICAg
ICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjphcHBlbmRXaW5kb3dz
RHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQot
ewotICAgIEFTU0VSVChpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikpOwotICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoKml0ZXJhdG9yKTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLSAgICBB
U1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwotICAgIEFTU0VSVCgqaXRlcmF0b3IgPT0gJzonIHx8
ICppdGVyYXRvciA9PSAnfCcpOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJ3wnKQotICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsK
LSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmNvcHlCYXNlV2lu
ZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVSTCYgYmFzZSkKLXsKLSAgICBpZiAoYmFzZS5wcm90b2Nv
bElzKCJmaWxlIikpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5tX2hvc3RFbmQgKyBi
YXNlLm1fcG9ydExlbmd0aCA8IGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICBpZiAo
YmFzZS5tX3N0cmluZy5pczhCaXQoKSkgewotICAgICAgICAgICAgY29uc3QgTENoYXIqIGJlZ2lu
ID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAgQ29kZVBvaW50SXRl
cmF0b3I8TENoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3Ro
ICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIGlmIChp
c1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NE
cml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9IGJh
c2UubV9zdHJpbmcuY2hhcmFjdGVyczE2KCk7Ci0gICAgICAgICAgICBDb2RlUG9pbnRJdGVyYXRv
cjxVQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggKyAx
LCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAgICAgaWYgKGlzV2lu
ZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZl
TGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRDb3B5RmlsZVVSTChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoIWlzV2lu
ZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlKGl0
ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgYWR2YW5jZShpdGVyYXRvcik7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiAhaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCppdGVy
YXRvcik7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSwg
VmVjdG9yPExDaGFyPiYgYnVmZmVyKQotewotICAgIGJ1ZmZlci5hcHBlbmQoJyUnKTsKLSAgICBi
dWZmZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLSAgICBidWZm
ZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLX0KLQotdm9pZCBV
UkxQYXJzZXI6OnBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSkKLXsKLSAgICBBU1NFUlQo
bV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyUnKTsK
LSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUp
KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5
dGUpKTsKLX0KLQotY29uc3QgY2hhciByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5j
b2RlZFsxMF0gPSAiJUVGJUJGJUJEIjsKLWNvbnN0IHNpemVfdCByZXBsYWNlbWVudENoYXJhY3Rl
clVURjhQZXJjZW50RW5jb2RlZExlbmd0aCA9IHNpemVvZihyZXBsYWNlbWVudENoYXJhY3RlclVU
RjhQZXJjZW50RW5jb2RlZCkgLSAxOwotCi10ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNo
YXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFy
c2VyOjp1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKLSAgICBV
Q2hhcjMyIGNvZGVQb2ludCA9ICppdGVyYXRvcjsKLSAgICBpZiAoTElLRUxZKGlzQVNDSUkoY29k
ZVBvaW50KSkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzSW5Db2RlU2V0KGNvZGVQb2ludCkp
KSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAg
cGVyY2VudEVuY29kZUJ5dGUoY29kZVBvaW50KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvZGVQb2ludCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0luQ29kZVNldChjb2RlUG9pbnQpLCAiaXNJbkNv
ZGVTZXQgc2hvdWxkIGFsd2F5cyByZXR1cm4gdHJ1ZSBmb3Igbm9uLUFTQ0lJIGNoYXJhY3RlcnMi
KTsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgIAotICAgIGlmICghVV9JU19V
TklDT0RFX0NIQVIoY29kZVBvaW50KSkgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJl
cGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkLCByZXBsYWNlbWVudENoYXJhY3Rl
clVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Ci0gICAgdWludDhfdCBidWZmZXJbVThfTUFYX0xFTkdUSF07Ci0gICAgaW50MzJfdCBvZmZzZXQg
PSAwOwotICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQsIGNvZGVQb2ludCk7Ci0g
ICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgb2Zmc2V0OyArK2kpCi0gICAgICAgIHBlcmNlbnRF
bmNvZGVCeXRlKGJ1ZmZlcltpXSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UXVlcnlFbmNvZGUoY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQotewotICAgIEFTU0VS
VCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRlcmF0b3I7
Ci0gICAgaWYgKExJS0VMWShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7Ci0gICAgICAgIGlmIChVTkxJ
S0VMWShzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGNvZGVQb2ludCwgbV91cmxJc1NwZWNp
YWwpKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAg
ICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgCi0gICAgaWYg
KCFVX0lTX1VOSUNPREVfQ0hBUihjb2RlUG9pbnQpKSB7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQsIHJlcGxhY2VtZW50
Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwotICAgIGludDMyX3Qgb2Zm
c2V0ID0gMDsKLSAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCBjb2RlUG9pbnQp
OwotICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytpKSB7Ci0gICAgICAgIGF1
dG8gYnl0ZSA9IGJ1ZmZlcltpXTsKLSAgICAgICAgaWYgKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVy
eUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQotICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5
dGUoYnl0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Ynl0ZSk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9p
ZCBVUkxQYXJzZXI6OmVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3Vy
Y2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGF1dG8gZW5jb2RlZCA9IGVuY29kaW5nLmVu
Y29kZUZvclVSTFBhcnNpbmcoU3RyaW5nVmlldyhzb3VyY2UuZGF0YSgpLCBzb3VyY2Uuc2l6ZSgp
KSk7Ci0gICAgYXV0byogZGF0YSA9IGVuY29kZWQuZGF0YSgpOwotICAgIHNpemVfdCBsZW5ndGgg
PSBlbmNvZGVkLnNpemUoKTsKLSAgICAKLSAgICBpZiAoIWxlbmd0aCA9PSAhaXRlcmF0b3IuYXRF
bmQoKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIHNpemVfdCBpID0gMDsKLSAgICBmb3IgKDsgaSA8IGxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgICAgIHVp
bnQ4X3QgYnl0ZSA9IGRhdGFbaV07Ci0gICAgICAgIGlmIChVTkxJS0VMWShieXRlICE9ICppdGVy
YXRvcikpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2Vu
dEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpKSB7Ci0gICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKLSAgICAgICAgKytpdGVyYXRvcjsK
LSAgICB9Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCpp
dGVyYXRvcikpCi0gICAgICAgICsraXRlcmF0b3I7Ci0gICAgQVNTRVJUKChpID09IGxlbmd0aCkg
PT0gaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgewotICAg
ICAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAgICB1aW50OF90IGJ5
dGUgPSBkYXRhW2ldOwotICAgICAgICBpZiAoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShi
eXRlLCBtX3VybElzU3BlY2lhbCkpCi0gICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShieXRl
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsK
LSAgICB9Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBv
cnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKLXsKLSAgICBzdGF0aWMgY29uc3QgdWlu
dDE2X3QgZnRwUG9ydCA9IDIxOwotICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBnb3BoZXJQb3J0
ID0gNzA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBQb3J0ID0gODA7Ci0gICAgc3Rh
dGljIGNvbnN0IHVpbnQxNl90IGh0dHBzUG9ydCA9IDQ0MzsKLSAgICBzdGF0aWMgY29uc3QgdWlu
dDE2X3Qgd3NQb3J0ID0gODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IHdzc1BvcnQgPSA0
NDM7Ci0gICAgCi0gICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYgKCFs
ZW5ndGgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgc3dpdGNoIChzY2hlbWVb
MF0pIHsKLSAgICBjYXNlICd3JzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAg
Y2FzZSAyOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHdzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAgICAgICAg
ICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gd3NzUG9y
dDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICBjYXNlICdoJzoKLSAgICAg
ICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKHNj
aGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAg
ICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKLSAgICAgICAgICAgICAgICByZXR1cm4g
aHR0cFBvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBjYXNl
IDU6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAgICAgICYm
IHNjaGVtZVsyXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCi0g
ICAgICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1
cm4gaHR0cHNQb3J0OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLSAg
ICBjYXNlICdnJzoKLSAgICAgICAgaWYgKGxlbmd0aCA9PSA2Ci0gICAgICAgICAgICAmJiBzY2hl
bWVbMV0gPT0gJ28nCi0gICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnCi0gICAgICAgICAg
ICAmJiBzY2hlbWVbM10gPT0gJ2gnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ2UnCi0g
ICAgICAgICAgICAmJiBzY2hlbWVbNV0gPT0gJ3InKQotICAgICAgICAgICAgcmV0dXJuIGdvcGhl
clBvcnQ7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgY2FzZSAnZic6Ci0gICAg
ICAgIGlmIChsZW5ndGggPT0gMwotICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICd0JwotICAg
ICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJykKLSAgICAgICAgICAgIHJldHVybiBmdHBQb3J0
OwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotfQotCi1lbnVtIGNsYXNzIFNjaGVtZSB7Ci0gICAg
V1MsCi0gICAgV1NTLAotICAgIEZpbGUsCi0gICAgRlRQLAotICAgIEdvcGhlciwKLSAgICBIVFRQ
LAotICAgIEhUVFBTLAotICAgIE5vblNwZWNpYWwKLX07Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGlj
IFNjaGVtZSBzY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpCi17Ci0gICAgYXV0byBsZW5ndGggPSBz
Y2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBTY2hlbWU6
Ok5vblNwZWNpYWw7Ci0gICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKLSAgICBjYXNlICdmJzoKLSAg
ICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgaWYg
KHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnKQot
ICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkZUUDsKLSAgICAgICAgICAgIHJldHVybiBT
Y2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmIChzY2hl
bWVbMV0gPT0gJ2knCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdsJwotICAgICAg
ICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnZScpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNj
aGVtZTo6RmlsZTsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAg
ICAgICB9Ci0gICAgY2FzZSAnZyc6Ci0gICAgICAgIGlmIChsZW5ndGggPT0gNgotICAgICAgICAg
ICAgJiYgc2NoZW1lWzFdID09ICdvJwotICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJwot
ICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJwotICAgICAgICAgICAgJiYgc2NoZW1lWzRd
ID09ICdlJwotICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKLSAgICAgICAgICAgIHJl
dHVybiBTY2hlbWU6OkdvcGhlcjsKLSAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsK
LSAgICBjYXNlICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSA0
OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBz
Y2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpIVFRQOwotICAgICAgICAgICAgcmV0dXJuIFNj
aGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgaWYgKHNjaGVt
ZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVs0
XSA9PSAncycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRUUFM7Ci0gICAgICAg
ICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQotICAgIGNhc2UgJ3cn
OgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAg
ICBpZiAoc2NoZW1lWzFdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpX
UzsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGNhc2Ug
MzoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAgICAgICAgICAgICAgJiYg
c2NoZW1lWzJdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpXU1M7Ci0g
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgfQotfQotCi1z
dGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShj
b25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGlmICghaXNBU0NJSUFscGhhKHNjaGVtZVsw
XSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0g
MTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmIChpc0FTQ0lJQWxwaGFu
dW1lcmljKHNjaGVtZVtpXSkgfHwgc2NoZW1lW2ldID09ICcrJyB8fCBzY2hlbWVbaV0gPT0gJy0n
IHx8IHNjaGVtZVtpXSA9PSAnLicpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NoZW1lLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY29u
c3QgU3RyaW5nJiBzY2hlbWVBcmcpCi17Ci0gICAgcmV0dXJuIHNjaGVtZShzY2hlbWVBcmcpICE9
IFNjaGVtZTo6Tm9uU3BlY2lhbDsKLX0KLQotZW51bSBjbGFzcyBVUkxQYXJzZXI6OlVSTFBhcnQg
ewotICAgIFNjaGVtZUVuZCwKLSAgICBVc2VyU3RhcnQsCi0gICAgVXNlckVuZCwKLSAgICBQYXNz
d29yZEVuZCwKLSAgICBIb3N0RW5kLAotICAgIFBvcnRFbmQsCi0gICAgUGF0aEFmdGVyTGFzdFNs
YXNoLAotICAgIFBhdGhFbmQsCi0gICAgUXVlcnlFbmQsCi19OwotCi1zaXplX3QgVVJMUGFyc2Vy
Ojp1cmxMZW5ndGhVbnRpbFBhcnQoY29uc3QgVVJMJiB1cmwsIFVSTFBhcnQgcGFydCkKLXsKLSAg
ICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBjYXNlIFVSTFBhcnQ6OlF1ZXJ5RW5kOgotICAgICAgICBy
ZXR1cm4gdXJsLm1fcXVlcnlFbmQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgotICAgICAg
ICByZXR1cm4gdXJsLm1fcGF0aEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RT
bGFzaDoKLSAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICBjYXNl
IFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9ob3N0RW5kICsgdXJsLm1f
cG9ydExlbmd0aDsKLSAgICBjYXNlIFVSTFBhcnQ6Okhvc3RFbmQ6Ci0gICAgICAgIHJldHVybiB1
cmwubV9ob3N0RW5kOwotICAgIGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6Ci0gICAgICAgIHJl
dHVybiB1cmwubV9wYXNzd29yZEVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlVzZXJFbmQ6Ci0gICAg
ICAgIHJldHVybiB1cmwubV91c2VyRW5kOwotICAgIGNhc2UgVVJMUGFydDo6VXNlclN0YXJ0Ogot
ICAgICAgICByZXR1cm4gdXJsLm1fdXNlclN0YXJ0OwotICAgIGNhc2UgVVJMUGFydDo6U2NoZW1l
RW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBVUkxQYXJzZXI6OmNvcHlB
U0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQotewot
ICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSBzdHJpbmcubGVuZ3RoKCkpOwotICAgIGlmIChz
dHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9hc2NpaUJ1ZmZl
ci5pc0VtcHR5KCkpOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICBVQ2hhciBjID0gY2hhcmFjdGVyc1tpXTsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGlzQVNDSUkoYykpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihjKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KLXZvaWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJh
c2UsIFVSTFBhcnQgcGFydCwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
IGl0ZXJhdG9yLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqJiBub25VVEY4UXVlcnlFbmNvZGluZykK
LXsKLSAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotCi0gICAgbV9hc2NpaUJ1ZmZlci5j
bGVhcigpOwotICAgIGNvcHlBU0NJSVN0cmluZ1VudGlsKGJhc2UubV9zdHJpbmcsIHVybExlbmd0
aFVudGlsUGFydChiYXNlLCBwYXJ0KSk7Ci0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgY2FzZSBV
UkxQYXJ0OjpRdWVyeUVuZDoKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGJhc2UubV9xdWVy
eUVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgot
ICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBiYXNlLm1fcGF0aEVuZDsKLSAgICAgICAgRkFMTFRI
Uk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6Ci0gICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAg
ICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgotICAgICAgICBt
X3VybC5tX3BvcnRMZW5ndGggPSBiYXNlLm1fcG9ydExlbmd0aDsKLSAgICAgICAgRkFMTFRIUk9V
R0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgotICAgICAgICBtX3VybC5tX2hvc3RFbmQg
PSBiYXNlLm1faG9zdEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0
OjpQYXNzd29yZEVuZDoKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IGJhc2UubV9wYXNz
d29yZEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyRW5k
OgotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBiYXNlLm1fdXNlckVuZDsKLSAgICAgICAgRkFM
TFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyU3RhcnQ6Ci0gICAgICAgIG1fdXJsLm1f
dXNlclN0YXJ0ID0gYmFzZS5tX3VzZXJTdGFydDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAg
Y2FzZSBVUkxQYXJ0OjpTY2hlbWVFbmQ6Ci0gICAgICAgIG1fdXJsLm1faXNWYWxpZCA9IGJhc2Uu
bV9pc1ZhbGlkOwotICAgICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBiYXNl
Lm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsKLSAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBi
YXNlLm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBzd2l0Y2ggKHNjaGVtZShTdHJpbmdWaWV3KG1f
YXNjaWlCdWZmZXIuZGF0YSgpLCBtX3VybC5tX3NjaGVtZUVuZCkpKSB7Ci0gICAgY2FzZSBTY2hl
bWU6OldTOgotICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgIG5vblVURjhRdWVyeUVuY29k
aW5nID0gbnVsbHB0cjsKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6OkZpbGU6Ci0gICAgICAgIG1fdXJsSXNGaWxlID0gdHJ1
ZTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBTY2hlbWU6OkZUUDoKLSAgICBjYXNl
IFNjaGVtZTo6R29waGVyOgotICAgIGNhc2UgU2NoZW1lOjpIVFRQOgotICAgIGNhc2UgU2NoZW1l
OjpIVFRQUzoKLSAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBTY2hlbWU6Ok5vblNwZWNpYWw6Ci0gICAgICAgIG1fdXJsSXNTcGVjaWFsID0g
ZmFsc2U7Ci0gICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIGNv
bnN0IGNoYXIgZG90QVNDSUlDb2RlWzJdID0geycyJywgJ2UnfTsKLQotdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6OmlzU2luZ2xl
RG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKLXsKLSAg
ICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCpjID09ICcu
JykgewotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlv
bjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hRdWVzdGlvbk9y
SGFzaCgqYyk7Ci0gICAgfQotICAgIGlmICgqYyAhPSAnJScpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+
KGMpOwotICAgIGlmIChjLmF0RW5kKCkgfHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhW
aW9sYXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKSB7Ci0gICAg
ICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7
Ci0gICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKTsK
LSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNEb3VibGVEb3RQYXRoU2Vn
bWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQotewotICAgIGlmIChjLmF0
RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKmMgPT0gJy4nKSB7Ci0gICAg
ICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7
Ci0gICAgICAgIHJldHVybiBpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpOwotICAgIH0KLSAgICBp
ZiAoKmMgIT0gJyUnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0
ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5hdEVuZCgp
IHx8ICpjICE9IGRvdEFTQ0lJQ29kZVswXSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFk
dmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAg
aWYgKGMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICh0b0FTQ0lJTG93
ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkgewotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5
cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4gaXNTaW5n
bGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVTaW5n
bGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsK
LSAgICBBU1NFUlQoaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKSk7Ci0gICAgaWYgKCpjID09ICcu
JykgewotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkgewotICAg
ICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGFk
dmFuY2UoYyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCpjID09
ICc/JyB8fCAqYyA9PSAnIycpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNT
RVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgIEFTU0VSVCgqYyA9
PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBBU1NFUlQo
dG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAgICAgICBhZHZhbmNlKGMp
OwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkgewotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8
fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9p
ZCBVUkxQYXJzZXI6OmNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNEb3VibGVEb3RQYXRoU2VnbWVu
dChjKSk7Ci0gICAgaWYgKCpjID09ICcuJykKLSAgICAgICAgYWR2YW5jZShjKTsKLSAgICBlbHNl
IHsKLSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAg
ICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNlKGMpOwot
ICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAg
ICAgICBhZHZhbmNlKGMpOwotICAgIH0KLSAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQo
Yyk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpzaG91bGRQb3BQYXRoKHVuc2lnbmVkIG5ld1BhdGhB
ZnRlckxhc3RTbGFzaCkKLXsKLSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwot
ICAgIGlmICghbV91cmxJc0ZpbGUpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgQVNTRVJU
KG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKLSAg
ICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gY29tcG9uZW50VG9Qb3AoJm1fYXNjaWlCdWZmZXJb
bmV3UGF0aEFmdGVyTGFzdFNsYXNoXSwgJm1fYXNjaWlCdWZmZXJbMF0gKyBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCk7Ci0gICAgaWYgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9PSBtX3VybC5t
X2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVy
KGNvbXBvbmVudFRvUG9wKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkIFVSTFBhcnNlcjo6cG9wUGF0aCgpCi17Ci0gICAgQVNTRVJUKG1fZGlkU2Vl
U3ludGF4VmlvbGF0aW9uKTsKLSAgICBpZiAobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPiBt
X3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxKSB7Ci0gICAgICAgIGF1dG8g
bmV3UGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggLSAxOwot
ICAgICAgICBpZiAobV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdID09ICcvJykK
LSAgICAgICAgICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaC0tOwotICAgICAgICB3aGlsZSAobmV3
UGF0aEFmdGVyTGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3Ro
ICYmIG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSAhPSAnLycpCi0gICAgICAg
ICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKLSAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNs
YXNoKys7Ci0gICAgICAgIGlmIChzaG91bGRQb3BQYXRoKG5ld1BhdGhBZnRlckxhc3RTbGFzaCkp
Ci0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG5ld1BhdGhBZnRlckxh
c3RTbGFzaDsKLSAgICB9Ci0gICAgbV9hc2NpaUJ1ZmZlci5yZXNpemUobV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2gpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9p
ZCBVUkxQYXJzZXI6OnN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgaWYgKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9u
KQotICAgICAgICByZXR1cm47Ci0gICAgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwot
ICAgIAotICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7Ci0gICAgc2l6ZV90IGNv
ZGVVbml0c1RvQ29weSA9IGl0ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgQ2hhcmFjdGVyVHlwZSo+KG1faW5wdXRCZWdpbikpOwotICAgIFJFTEVBU0VfQVNTRVJU
KGNvZGVVbml0c1RvQ29weSA8PSBtX2lucHV0U3RyaW5nLmxlbmd0aCgpKTsKLSAgICBtX2FzY2lp
QnVmZmVyLnJlc2VydmVDYXBhY2l0eShtX2lucHV0U3RyaW5nLmxlbmd0aCgpKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvZGVVbml0c1RvQ29weTsgKytpKSB7Ci0gICAgICAgIEFTU0VS
VChpc0FTQ0lJKG1faW5wdXRTdHJpbmdbaV0pKTsKLSAgICAgICAgbV9hc2NpaUJ1ZmZlci51bmNo
ZWNrZWRBcHBlbmQobV9pbnB1dFN0cmluZ1tpXSk7Ci0gICAgfQotfQotCi12b2lkIFVSTFBhcnNl
cjo6ZmFpbHVyZSgpCi17Ci0gICAgbV91cmwuaW52YWxpZGF0ZSgpOwotICAgIG1fdXJsLm1fc3Ry
aW5nID0gbV9pbnB1dFN0cmluZzsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KLWJvb2wgVVJMUGFyc2VyOjpjaGVja0xvY2FsaG9zdENvZGVQb2ludChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIFVDaGFyMzIgY29kZVBvaW50KQotewotICAg
IGlmIChpdGVyYXRvci5hdEVuZCgpIHx8IHRvQVNDSUlMb3dlcigqaXRlcmF0b3IpICE9IGNvZGVQ
b2ludCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwg
UmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6Omlz
QXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17
Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2wnKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0
b3IsICdvJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0
Q29kZVBvaW50KGl0ZXJhdG9yLCAnYycpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2EnKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdsJykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50
KGl0ZXJhdG9yLCAnaCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xv
Y2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ28nKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdzJykpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9y
LCAndCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5k
KCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjppc0xvY2FsaG9zdChTdHJpbmdWaWV3IHZpZXcpCi17
Ci0gICAgaWYgKHZpZXcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBpc0F0TG9jYWxob3N0KENv
ZGVQb2ludEl0ZXJhdG9yPExDaGFyPih2aWV3LmNoYXJhY3RlcnM4KCksIHZpZXcuY2hhcmFjdGVy
czgoKSArIHZpZXcubGVuZ3RoKCkpKTsKLSAgICByZXR1cm4gaXNBdExvY2FsaG9zdChDb2RlUG9p
bnRJdGVyYXRvcjxVQ2hhcj4odmlldy5jaGFyYWN0ZXJzMTYoKSwgdmlldy5jaGFyYWN0ZXJzMTYo
KSArIHZpZXcubGVuZ3RoKCkpKTsKLX0KLQotQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IFVSTFBh
cnNlcjo6cGFyc2VkRGF0YVZpZXcoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoKQotewotICAg
IGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpIHsKLSAgICAgICAgQVNTRVJU
KHN0YXJ0ICsgbGVuZ3RoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJu
IFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZlci5kYXRhKCkgKyBzdGFydCwgbGVuZ3RoKTsKLSAgICB9
Ci0gICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOwot
ICAgIHJldHVybiBTdHJpbmdWaWV3KG1faW5wdXRTdHJpbmcpLnN1YnN0cmluZyhzdGFydCwgbGVu
Z3RoKTsKLX0KLQotQUxXQVlTX0lOTElORSBVQ2hhciBVUkxQYXJzZXI6OnBhcnNlZERhdGFWaWV3
KHNpemVfdCBwb3NpdGlvbikKLXsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9s
YXRpb24pKQotICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlcltwb3NpdGlvbl07Ci0gICAgcmV0
dXJuIG1faW5wdXRTdHJpbmdbcG9zaXRpb25dOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzaXplX3QgVVJMUGFyc2VyOjpjdXJyZW50UG9zaXRp
b24oY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQotewot
ICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCi0gICAgICAgIHJldHVy
biBtX2FzY2lpQnVmZmVyLnNpemUoKTsKLSAgICAKLSAgICByZXR1cm4gaXRlcmF0b3IuY29kZVVu
aXRzU2luY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBDaGFyYWN0ZXJUeXBlKj4obV9pbnB1dEJl
Z2luKSk7Ci19Ci0KLVVSTFBhcnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQsIGNv
bnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNvZGlu
ZykKLSAgICA6IG1faW5wdXRTdHJpbmcoaW5wdXQpCi17Ci0gICAgaWYgKGlucHV0LmlzTnVsbCgp
KSB7Ci0gICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJlQUJhc2VV
UkwpIHsKLSAgICAgICAgICAgIG1fdXJsID0gYmFzZTsKLSAgICAgICAgICAgIG1fdXJsLnJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoaW5wdXQuaXM4Qml0KCkpIHsKLSAgICAgICAgbV9pbnB1dEJlZ2luID0gaW5w
dXQuY2hhcmFjdGVyczgoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczgoKSwgaW5w
dXQubGVuZ3RoKCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1dC5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgcGFy
c2UoaW5wdXQuY2hhcmFjdGVyczE2KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVl
cnlFbmNvZGluZyk7Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX3VybC5tX2lzVmFsaWQKLSAgICAg
ICAgfHwgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPT0gKG1fdXJsLnN0cmluZygpICE9IGlucHV0
KQotICAgICAgICB8fCAoaW5wdXQuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0MwQ29udHJvbE9y
U3BhY2U+KCkKLSAgICAgICAgICAgICYmIG1fdXJsLm1fc3RyaW5nID09IGJhc2UubV9zdHJpbmcu
bGVmdChiYXNlLm1fcXVlcnlFbmQpKSk7Ci0gICAgQVNTRVJUKGludGVybmFsVmFsdWVzQ29uc2lz
dGVudChtX3VybCkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpZiAoIW1fZGlkU2VlU3lu
dGF4VmlvbGF0aW9uKSB7Ci0gICAgICAgIC8vIEZvcmNlIGEgc3ludGF4IHZpb2xhdGlvbiBhdCB0
aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0LgotICAgICAg
ICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoIiAiLCBpbnB1dCksIGJhc2UsIG5vblVURjhR
dWVyeUVuY29kaW5nKTsKLSAgICAgICAgVVJMIHBhcnNlZCA9IHBhcnNlci5yZXN1bHQoKTsKLSAg
ICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBBU1NFUlQoYWxsVmFsdWVz
RXF1YWwocGFyc2VyLnJlc3VsdCgpLCBtX3VybCkpOwotICAgIH0KLSNlbmRpZgotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0
IENoYXJhY3RlclR5cGUqIGlucHV0LCBjb25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYg
YmFzZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNvZGluZykKLXsKLSAg
ICBVUkxfUEFSU0VSX0xPRygiUGFyc2luZyBVUkwgPCVzPiBiYXNlIDwlcz4iLCBTdHJpbmcoaW5w
dXQsIGxlbmd0aCkudXRmOCgpLmRhdGEoKSwgYmFzZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBtX3VybCA9IHsgfTsKLSAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwot
Ci0gICAgVmVjdG9yPFVDaGFyPiBxdWVyeUJ1ZmZlcjsKLQotICAgIHVuc2lnbmVkIGVuZEluZGV4
ID0gbGVuZ3RoOwotICAgIHdoaWxlIChVTkxJS0VMWShlbmRJbmRleCAmJiBpc0MwQ29udHJvbE9y
U3BhY2UoaW5wdXRbZW5kSW5kZXggLSAxXSkpKSB7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihpbnB1dCwgaW5wdXQpKTsKLSAgICAgICAg
ZW5kSW5kZXgtLTsKLSAgICB9Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
YyhpbnB1dCwgaW5wdXQgKyBlbmRJbmRleCk7Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4gYXV0aG9yaXR5T3JIb3N0QmVnaW47Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4gcXVlcnlCZWdpbjsKLSAgICB3aGlsZSAoVU5MSUtFTFkoIWMuYXRFbmQoKSAm
JiBpc0MwQ29udHJvbE9yU3BhY2UoKmMpKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7
Ci0gICAgICAgICsrYzsKLSAgICB9Ci0gICAgYXV0byBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNl
ID0gYzsKLQotICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKLSAgICAgICAgU2NoZW1l
U3RhcnQsCi0gICAgICAgIFNjaGVtZSwKLSAgICAgICAgTm9TY2hlbWUsCi0gICAgICAgIFNwZWNp
YWxSZWxhdGl2ZU9yQXV0aG9yaXR5LAotICAgICAgICBQYXRoT3JBdXRob3JpdHksCi0gICAgICAg
IFJlbGF0aXZlLAotICAgICAgICBSZWxhdGl2ZVNsYXNoLAotICAgICAgICBTcGVjaWFsQXV0aG9y
aXR5U2xhc2hlcywKLSAgICAgICAgU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMsCi0gICAg
ICAgIEF1dGhvcml0eU9ySG9zdCwKLSAgICAgICAgSG9zdCwKLSAgICAgICAgRmlsZSwKLSAgICAg
ICAgRmlsZVNsYXNoLAotICAgICAgICBGaWxlSG9zdCwKLSAgICAgICAgUGF0aFN0YXJ0LAotICAg
ICAgICBQYXRoLAotICAgICAgICBDYW5ub3RCZUFCYXNlVVJMUGF0aCwKLSAgICAgICAgVVRGOFF1
ZXJ5LAotICAgICAgICBOb25VVEY4UXVlcnksCi0gICAgICAgIEZyYWdtZW50LAotICAgIH07Ci0K
LSNkZWZpbmUgTE9HX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJTdGF0ZSAlcywgY29kZSBwb2lu
dCAlYywgcGFyc2VkIGRhdGEgPCVzPiBzaXplICV6dSIsIHgsICpjLCBwYXJzZWREYXRhVmlldygw
LCBjdXJyZW50UG9zaXRpb24oYykpLnV0ZjgoKS5kYXRhKCksIGN1cnJlbnRQb3NpdGlvbihjKSkK
LSNkZWZpbmUgTE9HX0ZJTkFMX1NUQVRFKHgpIFVSTF9QQVJTRVJfTE9HKCJGaW5hbCBTdGF0ZTog
JXMiLCB4KQotCi0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6U2NoZW1lU3RhcnQ7Ci0gICAgd2hp
bGUgKCFjLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCpj
KSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICsrYzsK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChzdGF0
ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKLSAgICAgICAgICAgIExPR19T
VEFURSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoKmMpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQotICAgICAg
ICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNl
KGMpOwotICAgICAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9s
QW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTY2hlbWU7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAgICAgICBMT0dfU1RB
VEUoIlNjaGVtZSIpOwotICAgICAgICAgICAgaWYgKGlzVmFsaWRTY2hlbWVDaGFyYWN0ZXIoKmMp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQotICAg
ICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmMpKTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgc2NoZW1lRW5kID0gY3Vy
cmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChzY2hlbWVFbmQgPiBVUkw6Om1h
eFNjaGVtZUxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
bV91cmwubV9zY2hlbWVFbmQgPSBzY2hlbWVFbmQ7Ci0gICAgICAgICAgICAgICAgU3RyaW5nVmll
dyB1cmxTY2hlbWUgPSBwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCk7Ci0gICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgICAgIHN3
aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6
RmlsZToKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICBtX3VybElzRmlsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OkZpbGU7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OldTOgotICAgICAg
ICAgICAgICAgIGNhc2UgU2NoZW1lOjpXU1M6Ci0gICAgICAgICAgICAgICAgICAgIG5vblVURjhR
dWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNp
YWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5wcm90b2NvbElzKHVybFNj
aGVtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsUmVs
YXRpdmVPckF1dGhvcml0eTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM7Ci0gICAg
ICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFA6Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6
OkhUVFBTOgotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBGYW1p
bHkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgICAg
ICAgICBjYXNlIFNjaGVtZTo6RlRQOgotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpHb3Bo
ZXI6Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGJhc2UucHJvdG9jb2xJcyh1cmxTY2hlbWUpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOwotICAgICAgICAgICAgICAgICAgICArK2M7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1l
OjpOb25TcGVjaWFsOgotICAgICAgICAgICAgICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9
IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbWF5YmVTbGFzaCA9IGM7Ci0gICAg
ICAgICAgICAgICAgICAgIGFkdmFuY2UobWF5YmVTbGFzaCk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghbWF5YmVTbGFzaC5hdEVuZCgpICYmICptYXliZVNsYXNoID09ICcvJykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYyA9IG1heWJlU2xhc2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpQYXRoT3JBdXRob3JpdHk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoKmMgPT0gJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRp
b24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9z
dEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX2Nhbm5vdEJlQUJhc2VVUkwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
Tm9TY2hlbWU7Ci0gICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhZHZh
bmNlKGMpOwotICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgewotICAgICAgICAgICAgICAgIG1f
YXNjaWlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1Nj
aGVtZTsKLSAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xBbmRTcGFjZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpOb1Nj
aGVtZToKLSAgICAgICAgICAgIExPR19TVEFURSgiTm9TY2hlbWUiKTsKLSAgICAgICAgICAgIGlm
ICghYmFzZS5pc1ZhbGlkKCkgfHwgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpjICE9ICcj
JykpIHsKLSAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJM
ICYmICpjID09ICcjJykgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2Us
IFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghYmFzZS5wcm90b2NvbElzKCJm
aWxlIikpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvcHlVUkxQYXJ0
c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rpbmcp
OwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6RmlsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRl
OjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eToKLSAgICAgICAgICAgIExPR19TVEFURSgiU3Bl
Y2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsK
LSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAg
ICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJy8nKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAg
ICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKLSAgICAgICAgICAgIExP
R19TVEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nKSB7
Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKLSAgICAgICAgICAgICAgICBhZHZh
bmNlKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1
cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV91
c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICAgICAgICAgIG1fdXJs
Lm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlBhdGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
dGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlJlbGF0aXZlIik7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAgICAgICBjYXNlICcvJzoKLSAgICAgICAgICAg
IGNhc2UgJ1xcJzoKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZVNsYXNo
OwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgJz8nOgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVS
TFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAg
ICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAg
ICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9u
VVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlICcjJzoKLSAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBV
UkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1Vu
dGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpOwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24oYykgJiYgcGFyc2Vk
RGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgIT0gJy8nKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKLSAgICAgICAgICAgIExPR19TVEFURSgiUmVsYXRp
dmVTbGFzaCIpOwotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSB7Ci0g
ICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJh
c2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjovLyIsIDMpOwotICAgICAgICAgICAgICAg
IGlmIChtX3VybElzU3BlY2lhbCkKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMp
OwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Ci0g
ICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0
c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsK
LSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9w
b3J0TGVuZ3RoICsgMTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlNwZWNp
YWxBdXRob3JpdHlTbGFzaGVzOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsQXV0aG9y
aXR5U2xhc2hlcyIpOwotICAgICAgICAgICAgaWYgKExJS0VMWSgqYyA9PSAnLycgfHwgKmMgPT0g
J1xcJykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykpCi0gICAg
ICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAg
ICAgICAgICAgICBpZiAoTElLRUxZKCFjLmF0RW5kKCkgJiYgKCpjID09ICcvJyB8fCAqYyA9PSAn
XFwnKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICdcXCcpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCIvLyIsIDIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXM6Ci0gICAgICAgICAg
ICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzIik7Ci0gICAgICAgICAg
ICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsK
LSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Ci0gICAgICAg
ICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0eU9ySG9zdDoKLSAgICAg
ICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkF1dGhvcml0eU9ySG9zdCIp
OwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnQCcpIHsKLSAgICAgICAgICAgICAgICAgICAg
YXV0byBsYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICBhdXRvIGZpbmRMYXN0QXQgPSBj
OwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWZpbmRMYXN0QXQuYXRFbmQoKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgVVJMX1BBUlNFUl9MT0coIkZpbmRpbmcgbGFzdCBAOiAlYyIs
ICpmaW5kTGFzdEF0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZmluZExhc3RBdCA9
PSAnQCcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEF0ID0gZmluZExhc3RBdDsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTbGFzaCA9ICpmaW5kTGFzdEF0ID09ICcv
JyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmZpbmRMYXN0QXQgPT0gJ1xcJyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8fCAqZmluZExhc3RBdCA9PSAnPycgfHwgKmZpbmRM
YXN0QXQgPT0gJyMnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgKytmaW5kTGFzdEF0OwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIHBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBsYXN0QXQpKTsKLSAgICAgICAgICAgICAg
ICAgICAgYyA9IGxhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAg
ICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpIb3N0OwotICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQ
ZXJjZW50T3JOb25BU0NJSSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1NsYXNoID0gKmMgPT0gJy8n
IHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKTsKLSAgICAgICAgICAgICAgICBpZiAo
aXNTbGFzaCB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3Jp
dHlPckhvc3RCZWdpbiwgYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVu
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJFbmQ7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3Vz
ZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVn
aW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9y
dChpdGVyYXRvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc1NsYXNoKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJKCpjKSkK
LSAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Okhvc3Q6Ci0gICAgICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJIb3N0Iik7Ci0gICAgICAgICAgICAg
ICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCpjID09ICc/JyB8fCAqYyA9
PSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCi0gICAg
ICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAgICAgICAgICAgTE9H
X1NUQVRFKCJGaWxlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAgICAgICBj
YXNlICdcXCc6Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAg
ICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OkZpbGVTbGFzaDsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlICc/JzoKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9j
b2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJh
c2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOwotICAgICAgICAgICAgICAgICAg
ICArK2M7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcigiLy8vPyIsIDQpOwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMp
IC0gMjsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwu
bV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1
ZXJ5QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4
UXVlcnk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgJyMnOgotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAg
ICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsK
LSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVl
cnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyMiLCA0KTsKLSAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAyOwotICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFy
dCArIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OwotICAgICAgICAgICAgICAgICsrYzsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFsaWQo
KSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSAmJiBzaG91bGRDb3B5RmlsZVVSTChjKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEFm
dGVyTGFzdFNsYXNoLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyIsIDMp
OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlv
bihjKSAtIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGgg
PSAwOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1f
dXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzV2luZG93c0Ry
aXZlTGV0dGVyKGMpKQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZl
TGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAgICAgICAg
IExPR19TVEFURSgiRmlsZVNsYXNoIik7Ci0gICAgICAgICAgICBpZiAoTElLRUxZKCpjID09ICcv
JyB8fCAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAn
XFwnKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNl
KGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9u
KGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
LSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAg
IGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpGaWxlSG9zdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoIi8vIiwgMik7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3Np
dGlvbihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAg
ICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIGlmIChpc1dpbmRv
d3NEcml2ZUxldHRlcihjKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxl
dHRlcihjKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1f
dXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY29weUJhc2VXaW5k
b3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBt
X3VybC5tX3VzZXJTdGFydCArIDQ7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAg
ICAgTE9HX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICAgICAgICAgIGlmIChpc1NsYXNoUXVl
c3Rpb25Pckhhc2goKmMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgd2luZG93c1F1aXJr
ID0gdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICYm
IGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvd3NRdWlyaykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyayB8fCBhdXRo
b3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
d2luZG93c1F1aXJrIHx8IHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09
ICcvJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJz8nKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvPyIsIDIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcXVlcnlCZWdpbiA9IGM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRG
OFF1ZXJ5OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnIycpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8jIiwgMik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQ
b3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2lu
LCBjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoaXNMb2NhbGhvc3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9w
YXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91cmwubV9wYXNzd29yZEVuZCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRp
b24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JO
b25BU0NJSSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFT
Q0lJID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICB9IHdoaWxlICgh
Yy5hdEVuZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpQYXRo
U3RhcnQ6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAgICAgICAg
aWYgKCpjICE9ICcvJyAmJiAqYyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3Vy
cmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpQYXRoOgotICAgICAgICAgICAgTE9H
X1NUQVRFKCJQYXRoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8IChtX3VybElzU3Bl
Y2lhbCAmJiAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtX3Vy
bElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAg
ICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoY3VycmVudFBvc2l0aW9uKGMpICYm
IHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJykpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAg
ICBjb25zdW1lRG91YmxlRG90UGF0aFNlZ21lbnQoYyk7Ci0gICAgICAgICAgICAgICAgICAgIHBv
cFBhdGgoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpKSkg
ewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKCpjID09ICc/JykgewotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7
Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlF
bmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKmMg
PT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhF
bmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1dGY4UGVyY2VudEVuY29k
ZTxpc0luRGVmYXVsdEVuY29kZVNldD4oYyk7Ci0gICAgICAgICAgICArK2M7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6Ci0gICAg
ICAgICAgICBMT0dfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAgICAgICBp
ZiAoKmMgPT0gJz8nKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVu
dFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsK
LSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVu
Y29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1f
cXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcvJykgewotICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICArK2M7
Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9z
aXRpb24oYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHV0ZjhQZXJj
ZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAgICAgICAgICsrYzsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpV
VEY4UXVlcnk6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlVURjhRdWVyeSIpOwotICAgICAgICAg
ICAgQVNTRVJUKHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4o
KSk7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIEFTU0VSVCghbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAg
dXRmOFF1ZXJ5RW5jb2RlKGMpOwotICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKLSAgICAgICAgICAgIGRvIHsKLSAg
ICAgICAgICAgICAgICBMT0dfU1RBVEUoIk5vblVURjhRdWVyeSIpOwotICAgICAgICAgICAgICAg
IEFTU0VSVChxdWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkp
OwotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAg
ZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAg
ICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhcHBlbmRDb2Rl
UG9pbnQocXVlcnlCdWZmZXIsICpjKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMsIHF1ZXJ5
QmVnaW4pOwotICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAgICAgICAgICBVUkxfUEFS
U0VSX0xPRygiU3RhdGUgRnJhZ21lbnQiKTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2Rl
PGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMpOwotICAgICAgICAgICAgKytjOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgY2Fz
ZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU2NoZW1lU3Rh
cnQiKTsKLSAgICAgICAgaWYgKCFjdXJyZW50UG9zaXRpb24oYykgJiYgYmFzZS5pc1ZhbGlkKCkg
JiYgIWJhc2UubV9jYW5ub3RCZUFCYXNlVVJMKSB7Ci0gICAgICAgICAgICBtX3VybCA9IGJhc2U7
Ci0gICAgICAgICAgICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIFN0YXRlOjpTY2hlbWU6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU2No
ZW1lIik7Ci0gICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgU3Rh
dGU6Ok5vU2NoZW1lOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5vU2NoZW1lIik7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2FzZSBTdGF0ZTo6U3BlY2lh
bFJlbGF0aXZlT3JBdXRob3JpdHk6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbFJl
bGF0aXZlT3JBdXRob3JpdHkiKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJM
UGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgotICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIlBhdGhPckF1dGhvcml0eSIpOwotICAgICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQp
OwotICAgICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQgPT0gY3VycmVudFBvc2l0aW9uKGMp
KTsKLSAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEp
ID09ICcvJyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0LS07Ci0gICAgICAgIG1fdXJsLm1f
dXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1f
dXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgi
UmVsYXRpdmUiKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBj
YXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlJlbGF0
aXZlU2xhc2giKTsKLSAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9y
dEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9o
b3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
dGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgi
U3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKLSAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBt
X3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3Jl
U2xhc2hlczoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3Jl
U2xhc2hlcyIpOwotICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiQXV0aG9y
aXR5T3JIb3N0Iik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihh
dXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJFbmQ7Ci0gICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdpbi5hdEVuZCgpKSB7
Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAg
ICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAg
ICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICB9IGVsc2UgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhv
cml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFs
KSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhF
bmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOwotICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0
RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOwotICAgICAgICB9Ci0gICAgICAgIG1fdXJsLm1fcGF0
aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBtX3VybC5tX3F1ZXJ5
RW5kID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpI
b3N0OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkhvc3QiKTsKLSAgICAgICAgaWYgKCFwYXJz
ZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgZmFpbHVy
ZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX3VybElz
U3BlY2lhbCkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5t
X3BvcnRMZW5ndGg7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwu
bV9wYXRoRW5kOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGaWxlOgotICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIkZpbGUiKTsKLSAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9j
b2xJcygiZmlsZSIpKSB7Ci0gICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQ
YXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCIvLy8iLCAzKTsKLSAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBj
dXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3Rh
dGU6OkZpbGVTbGFzaDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlU2xhc2giKTsKLSAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1
cnJlbnRQb3NpdGlvbihjKSArIDE7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwg
Mik7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAg
ICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5n
dGggPSAwOwotICAgICAgICBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsK
LSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0OwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91
c2VyU3RhcnQgKyAxOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGaWxlSG9zdDoKLSAg
ICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlSG9zdCIpOwotICAgICAgICBpZiAodGFrZXNUd29B
ZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0
eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAgICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1
dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhv
cml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsK
LSAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdp
bik7Ci0gICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3Np
dGlvbihjKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoOwotICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIGlmIChhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0g
ICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAg
ICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5k
ID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAgICAgICBm
YWlsdXJlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzeW50
YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgIGlmIChpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyht
X3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3Jk
RW5kKSkpIHsKLSAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dv
cmRFbmQpOwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMp
OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgfQotICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAg
ICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAg
IG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aFN0YXJ0OgotICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIlBhdGhTdGFydCIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIGNhc2UgU3RhdGU6OlBhdGg6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiUGF0aCIpOwot
ICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgIG1f
dXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRoOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUo
IkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVu
ZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgotICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIlVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiA9
PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAgICAgbV91cmwubV9x
dWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
dGF0ZTo6Tm9uVVRGOFF1ZXJ5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIk5vblVURjhRdWVy
eSIpOwotICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPigpKTsKLSAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAq
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1
ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAgICAg
IExPR19GSU5BTF9TVEFURSgiRnJhZ21lbnQiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g
ICAgaWYgKExJS0VMWSghbV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKSB7Ci0gICAgICAgIG1fdXJs
Lm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLSAgICAgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIu
aXNFbXB0eSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV91cmwubV9zdHJpbmcgPSBTdHJpbmc6
OmFkb3B0KFdURk1vdmUobV9hc2NpaUJ1ZmZlcikpOwotICAgIG1fdXJsLm1faXNWYWxpZCA9IHRy
dWU7Ci0gICAgVVJMX1BBUlNFUl9MT0coIlBhcnNlZCBVUkwgPCVzPiIsIG1fdXJsLm1fc3RyaW5n
LnV0ZjgoKS5kYXRhKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgot
dm9pZCBVUkxQYXJzZXI6OnBhcnNlQXV0aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+IGl0ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkg
ewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyRW5kOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZv
ciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgYWR2YW5jZShpdGVyYXRvcikpIHsKLSAgICAgICAgaWYg
KCppdGVyYXRvciA9PSAnOicpIHsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJl
bnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAgICBhdXRvIGl0ZXJhdG9yQXRDb2xvbiA9
IGl0ZXJhdG9yOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJvb2wgdGFi
T3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IGZhbHNlOwotICAgICAgICAgICAgd2hpbGUgKFVOTElLRUxZ
KCFpdGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAg
ICAgICAgICAgICAgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShp
dGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVy
YXRvckF0Q29sb24pOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdXJsLm1fdXNlckVuZCA+IG1fdXJs
Lm1fdXNlclN0YXJ0KQotICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdA
Jyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKHRhYk9yTmV3bGluZUFmdGVyQ29sb24pCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGl0ZXJhdG9yQXRDb2xvbik7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6
Jyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB1dGY4UGVyY2VudEVu
Y29kZTxXZWJDb3JlOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKLSAgICB9Ci0g
ICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkKLSAgICAgICAg
dXRmOFBlcmNlbnRFbmNvZGU8V2ViQ29yZTo6aXNJblVzZXJJbmZvRW5jb2RlU2V0PihpdGVyYXRv
cik7Ci0gICAgbV91cmwubV9wYXNzd29yZEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7
Ci0gICAgaWYgKCFtX3VybC5tX3VzZXJFbmQpCi0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1f
dXJsLm1fcGFzc3dvcmRFbmQ7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignQCcpOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmFw
cGVuZE51bWJlclRvQVNDSUlCdWZmZXIoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpCi17Ci0g
ICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMgKyAxXTsKLSAgICBM
Q2hhciogZW5kID0gc3RkOjplbmQoYnVmKTsKLSAgICBMQ2hhciogcCA9IGVuZDsKLSAgICBkbyB7
Ci0gICAgICAgICotLXAgPSAobnVtYmVyICUgMTApICsgJzAnOwotICAgICAgICBudW1iZXIgLz0g
MTA7Ci0gICAgfSB3aGlsZSAobnVtYmVyKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHAsIGVu
ZCAtIHApOwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyBh
ZGRyZXNzKQotewotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVz
cyA+PiAyNCk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVuZE51bWJl
clRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAxNik7Ci0gICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignLicpOwotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRk
cmVzcyA+PiA4KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7Ci0gICAgYXBwZW5kTnVt
YmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzKTsKLX0KLSAgICAKLXN0YXRpYyBzaXpl
X3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRy
ZXNzLCBzaXplX3QgYmVnaW4pCi17Ci0gICAgc2l6ZV90IGVuZCA9IGJlZ2luOwotICAgIGZvciAo
OyBlbmQgPCA4OyBlbmQrKykgewotICAgICAgICBpZiAoYWRkcmVzc1tlbmRdKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBlbmQgLSBiZWdpbjsKLX0KLQotc3RhdGljIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShjb25zdCBzdGQ6OmFy
cmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
bG9uZ2VzdDsKLSAgICBzaXplX3QgbG9uZ2VzdExlbmd0aCA9IDA7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCA4OyBpKyspIHsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHplcm9TZXF1ZW5j
ZUxlbmd0aChhZGRyZXNzLCBpKTsKLSAgICAgICAgaWYgKGxlbmd0aCkgewotICAgICAgICAgICAg
aWYgKGxlbmd0aCA+IDEgJiYgKCFsb25nZXN0IHx8IGxvbmdlc3RMZW5ndGggPCBsZW5ndGgpKSB7
Ci0gICAgICAgICAgICAgICAgbG9uZ2VzdCA9IGk7Ci0gICAgICAgICAgICAgICAgbG9uZ2VzdExl
bmd0aCA9IGxlbmd0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkgKz0gbGVuZ3RoOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsb25nZXN0OwotfQotCi12b2lkIFVSTFBhcnNl
cjo6c2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKQotewotICAgIGJvb2wgcHJpbnRl
ZCA9IGZhbHNlOwotICAgIGlmIChhdXRvIG5pYmJsZTAgPSBwaWVjZSA+PiAxMikgewotICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0
KG5pYmJsZTApKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQotICAgIGF1dG8gbmli
YmxlMSA9IHBpZWNlID4+IDggJiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMSkgewot
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhl
eERpZ2l0KG5pYmJsZTEpKTsKLSAgICAgICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQotICAgIGF1
dG8gbmliYmxlMiA9IHBpZWNlID4+IDQgJiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwgbmliYmxl
MikKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVND
SUlIZXhEaWdpdChuaWJibGUyKSk7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJs
ZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChwaWVjZSAmIDB4RikpOwotfQotCi12b2lkIFVSTFBh
cnNlcjo6c2VyaWFsaXplSVB2NihVUkxQYXJzZXI6OklQdjZBZGRyZXNzIGFkZHJlc3MpCi17Ci0g
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignWycpOwotICAgIGF1dG8gY29tcHJlc3NQb2ludGVyID0g
ZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7Ci0gICAgZm9yIChzaXplX3QgcGllY2Ug
PSAwOyBwaWVjZSA8IDg7IHBpZWNlKyspIHsKLSAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAm
JiBjb21wcmVzc1BvaW50ZXIudmFsdWUoKSA9PSBwaWVjZSkgewotICAgICAgICAgICAgQVNTRVJU
KCFhZGRyZXNzW3BpZWNlXSk7Ci0gICAgICAgICAgICBpZiAocGllY2UpCi0gICAgICAgICAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjo6IiwgMik7Ci0gICAgICAgICAgICB3aGlsZSAo
cGllY2UgPCA4ICYmICFhZGRyZXNzW3BpZWNlXSkKLSAgICAgICAgICAgICAgICBwaWVjZSsrOwot
ICAgICAgICAgICAgaWYgKHBpZWNlID09IDgpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgc2VyaWFsaXplSVB2NlBpZWNlKGFkZHJlc3NbcGllY2VdKTsKLSAgICAg
ICAgaWYgKHBpZWNlIDwgNykKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsK
LSAgICB9Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignXScpOwotfQotCi1lbnVtIGNsYXNzIFVS
TFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yIHsKLSAgICBGYWlsdXJlLAotICAgIE92ZXJm
bG93LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVjdGVkPHVp
bnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJz
ZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGJv
b2wmIGRpZFNlZVN5bnRheFZpb2xhdGlvbikKLXsKLSAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWlu
dDhfdCB7Ci0gICAgICAgIFVua25vd25CYXNlLAotICAgICAgICBEZWNpbWFsLAotICAgICAgICBP
Y3RhbE9ySGV4LAotICAgICAgICBPY3RhbCwKLSAgICAgICAgSGV4LAotICAgIH07Ci0gICAgU3Rh
dGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93bkJhc2U7Ci0gICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVj
b3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsKLSAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0
ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBh
cnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7Ci0g
ICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7Ci0gICAgICAgICAgICBkaWRT
ZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJy4n
KSB7Ci0gICAgICAgICAgICBBU1NFUlQoIXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNo
IChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRlOjpVbmtub3duQmFzZToKLSAgICAgICAgICAg
IGlmIChVTkxJS0VMWSgqaXRlcmF0b3IgPT0gJzAnKSkgewotICAgICAgICAgICAgICAgICsraXRl
cmF0b3I7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6T2N0YWxPckhleDsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OkRlY2ltYWw7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6T2N0
YWxPckhleDoKLSAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7Ci0gICAg
ICAgICAgICBpZiAoKml0ZXJhdG9yID09ICd4JyB8fCAqaXRlcmF0b3IgPT0gJ1gnKSB7Ci0gICAg
ICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpI
ZXg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpPY3RhbDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0
YXRlOjpEZWNpbWFsOgotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKTsKLSAgICAgICAgICAgIHZhbHVlICo9IDEwOwotICAgICAgICAgICAgdmFs
dWUgKz0gKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhh
c092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQ
djRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpPY3RhbDoKLSAgICAgICAg
ICAgIEFTU0VSVChkaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgICAgICAgICAgaWYgKCppdGVy
YXRvciA8ICcwJyB8fCAqaXRlcmF0b3IgPiAnNycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgICAg
ICB2YWx1ZSAqPSA4OwotICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwotICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZs
b3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFN0YXRlOjpIZXg6Ci0gICAgICAgICAgICBBU1NFUlQoZGlkU2VlU3ludGF4VmlvbGF0
aW9uKTsKLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KCppdGVyYXRvcikpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6
RmFpbHVyZSk7Ci0gICAgICAgICAgICB2YWx1ZSAqPSAxNjsKLSAgICAgICAgICAgIHZhbHVlICs9
IHRvQVNDSUlIZXhWYWx1ZSgqaXRlcmF0b3IpOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZh
bHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVy
YXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIEFTU0VSVCgh
dmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Ci19
Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQ2NF90IHBvdzI1NihzaXplX3QgZXhwb25lbnQp
Ci17Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXhwb25lbnQgPD0gNCk7Ci0gICAgdWludDY0X3QgdmFs
dWVzWzVdID0gezEsIDI1NiwgMjU2ICogMjU2LCAyNTYgKiAyNTYgKiAyNTYsIDI1NnVsbCAqIDI1
NiAqIDI1NiAqIDI1NiB9OwotICAgIHJldHVybiB2YWx1ZXNbZXhwb25lbnRdOwotfQotCi1lbnVt
IGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvciB7Ci0gICAgRmFpbHVyZSwKLSAgICBO
b3RJUHY0LAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZp
b2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVjdGVkPFVSTFBhcnNlcjo6SVB2
NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQ
djRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9s
YXRpb24+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uLCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBWZWN0b3I8RXhwZWN0ZWQ8dWlu
dDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiwgND4gaXRlbXM7Ci0gICAg
Ym9vbCBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSBmYWxzZTsKLSAgICBpZiAoIWl0ZXJhdG9yLmF0
RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQo
KSkgewotICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkgewotICAgICAgICAg
ICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICsraXRlcmF0b3I7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXRlbXMuc2l6
ZSgpID49IDQpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdF
cnJvcjo6Tm90SVB2NCk7Ci0gICAgICAgIGl0ZW1zLmFwcGVuZChwYXJzZUlQdjRQaWVjZShpdGVy
YXRvciwgZGlkU2VlU3ludGF4VmlvbGF0aW9uKSk7Ci0gICAgICAgIGlmICghaXRlcmF0b3IuYXRF
bmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICArK2l0ZXJhdG9yOwotICAg
ICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICAgICAg
ZWxzZSBpZiAoKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpIHx8ICFpdGVtcy5zaXplKCkgfHwgaXRlbXMuc2l6ZSgp
ID4gNCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5v
dElQdjQpOwotICAgIGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgIGlm
ICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJz
aW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBp
dGVtcykgewotICAgICAgICBpZiAoIWl0ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09
IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpCi0gICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgfQotICAgIGlmIChp
dGVtcy5zaXplKCkgPiAxKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMu
c2l6ZSgpIC0gMTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoaXRlbXNbaV0udmFsdWUoKSA+IDI1
NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJv
cjo6RmFpbHVyZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGl0ZW1zW2l0ZW1zLnNpemUo
KSAtIDFdLnZhbHVlKCkgPj0gcG93MjU2KDUgLSBpdGVtcy5zaXplKCkpKQotICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0KLSAgICBpZiAo
ZGlkU2VlU3ludGF4VmlvbGF0aW9uKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JG
b3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDog
aXRlbXMpIHsKLSAgICAgICAgaWYgKGl0ZW0udmFsdWUoKSA+IDI1NSkKLSAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICB9
Ci0KLSAgICBpZiAoVU5MSUtFTFkoaXRlbXMuc2l6ZSgpICE9IDQpKQotICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0KLSAgICBJUHY0
QWRkcmVzcyBpcHY0ID0gaXRlbXMudGFrZUxhc3QoKS52YWx1ZSgpOwotICAgIGZvciAoc2l6ZV90
IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgaXRlbXMuc2l6ZSgpOyArK2NvdW50ZXIpCi0gICAgICAg
IGlwdjQgKz0gaXRlbXNbY291bnRlcl0udmFsdWUoKSAqIHBvdzI1NigzIC0gY291bnRlcik7Ci0g
ICAgcmV0dXJuIGlwdjQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1z
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2
NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgaWYg
KGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgdWlu
dDMyX3QgcGllY2UgPSAwOwotICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7Ci0gICAgc2l6
ZV90IGRpZ2l0Q291bnQgPSAwOwotICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewotICAg
ICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgKytkaWdpdENvdW50OwotICAgICAgICBpZiAoIXBpZWNlICYm
ICppdGVyYXRvciA9PSAnMCcpIHsKLSAgICAgICAgICAgIGlmIChsZWFkaW5nWmVyb3MpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGxlYWRpbmdaZXJv
cyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0g
JzAnKQotICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgcGllY2UgPSBw
aWVjZSAqIDEwICsgKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICBpZiAocGllY2UgPiAyNTUpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlPENoYXJhY3Rl
clR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAgICAgaWYg
KGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKCppdGVy
YXRvciA9PSAnLicpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKHBpZWNlICYm
IGxlYWRpbmdaZXJvcykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4g
cGllY2U7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGQ6Om9wdGlv
bmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0lu
c2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0g
ICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0
OyArK2kpIHsKLSAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBpZWNlID0gcGFy
c2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKLSAgICAgICAgICAgIGFkZHJlc3MgPSAo
YWRkcmVzcyA8PCA4KSArIHBpZWNlLnZhbHVlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmIChpIDwgMykgewotICAgICAgICAgICAg
aWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4nKQotICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJl
cG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAgICAgfSBlbHNlIGlmICgh
aXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
fQotICAgIEFTU0VSVChpdGVyYXRvci5hdEVuZCgpKTsKLSAgICByZXR1cm4gYWRkcmVzczsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0ZDo6b3B0aW9uYWw8VVJMUGFy
c2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+IGMpCi17Ci0gICAgQVNTRVJUKCpjID09ICdbJyk7Ci0gICAgY29u
c3QgYXV0byBob3N0QmVnaW4gPSBjOwotICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICBp
ZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgSVB2NkFk
ZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19OwotICAgIHNpemVfdCBw
aWVjZVBvaW50ZXIgPSAwOwotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb21wcmVzc1BvaW50
ZXI7Ci0KLSAgICBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2lu
KTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgICAgIGlmICgqYyAhPSAnOicpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7Ci0gICAgICAgICsrcGllY2VQb2lu
dGVyOwotICAgICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7Ci0gICAgfQotICAg
IAotICAgIHdoaWxlICghYy5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0g
OCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICgqYyA9PSAn
OicpIHsKLSAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsK
LSAgICAgICAgICAgICsrcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29tcHJlc3NQb2ludGVy
ID0gcGllY2VQb2ludGVyOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2lu
dGVyIDwgNikpIHsKLSAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBp
cHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPT0gNSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRl
cisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgPj4gMTY7Ci0gICAgICAgICAgICAgICAgYWRkcmVz
c1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpICYgMHhGRkZGOwotICAgICAg
ICAgICAgICAgIGMgPSB7IH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgdWludDE2X3QgdmFsdWUgPSAwOwotICAgICAgICBzaXplX3Qg
bGVuZ3RoID0gMDsKLSAgICAgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKLSAgICAgICAg
Zm9yICg7IGxlbmd0aCA8IDQ7IGxlbmd0aCsrKSB7Ci0gICAgICAgICAgICBpZiAoYy5hdEVuZCgp
KQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGln
aXQoKmMpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGlzQVNDSUlV
cHBlcigqYykpCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0g
ICAgICAgICAgICBpZiAoKmMgPT0gJzAnICYmICFsZW5ndGgpCi0gICAgICAgICAgICAgICAgbGVh
ZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgKiAweDEwICsgdG9B
U0NJSUhleFZhbHVlKCpjKTsKLSAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKFVOTElLRUxZKCh2YWx1ZSAmJiBsZWFkaW5n
WmVyb3MpIHx8ICghdmFsdWUgJiYgbGVuZ3RoID4gMSkpKQotICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSB2
YWx1ZTsKLSAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBpZiAocGllY2VQb2ludGVyID09IDggfHwgKmMgIT0gJzonKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwotICAgIH0KLSAg
ICAKLSAgICBpZiAoIWMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAKLSAgICBpZiAoY29tcHJlc3NQb2ludGVyKSB7Ci0gICAgICAgIHNpemVfdCBzd2FwcyA9IHBp
ZWNlUG9pbnRlciAtIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpOwotICAgICAgICBwaWVjZVBvaW50
ZXIgPSA3OwotICAgICAgICB3aGlsZSAoc3dhcHMpCi0gICAgICAgICAgICBzdGQ6OnN3YXAoYWRk
cmVzc1twaWVjZVBvaW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2ludGVyLnZhbHVlKCkgKyBz
d2Fwcy0tIC0gMV0pOwotICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9IDgpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcG9zc2li
bGVDb21wcmVzc1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKLSAg
ICBpZiAocG9zc2libGVDb21wcmVzc1BvaW50ZXIpCi0gICAgICAgIHBvc3NpYmxlQ29tcHJlc3NQ
b2ludGVyLnZhbHVlKCkrKzsKLSAgICBpZiAoVU5MSUtFTFkoY29tcHJlc3NQb2ludGVyICE9IHBv
c3NpYmxlQ29tcHJlc3NQb2ludGVyKSkKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdp
bik7Ci0gICAgCi0gICAgcmV0dXJuIGFkZHJlc3M7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+Ci1VUkxQYXJzZXI6OkxDaGFyQnVmZmVyIFVSTFBhcnNlcjo6cGVyY2VudERl
Y29kZShjb25zdCBMQ2hhciogaW5wdXQsIHNpemVfdCBsZW5ndGgsIGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9u
KQotewotICAgIExDaGFyQnVmZmVyIG91dHB1dDsKLSAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShsZW5ndGgpOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07Ci0gICAgICAgIGlmIChi
eXRlICE9ICclJykKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0g
ICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKLSAgICAgICAg
ICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQo
aW5wdXRbaSArIDJdKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRv
ckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICBvdXRwdXQudW5j
aGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkp
OwotICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAgcmV0dXJu
IG91dHB1dDsKLX0KLSAgICAKLVVSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJj
ZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBMQ2hh
ckJ1ZmZlciBvdXRwdXQ7Ci0gICAgb3V0cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3Ro
KTsKLSAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgIHVpbnQ4X3QgYnl0ZSA9IGlucHV0W2ldOwotICAgICAgICBpZiAoYnl0ZSAhPSAnJScpCi0g
ICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOwotICAgICAgICBlbHNlIGlm
IChsZW5ndGggPiAyICYmIGkgPCBsZW5ndGggLSAyKSB7Ci0gICAgICAgICAgICBpZiAoaXNBU0NJ
SUhleERpZ2l0KGlucHV0W2kgKyAxXSkgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAyXSkp
IHsKLSAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1
ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgICAgIGkgKz0gMjsK
LSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBl
bmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFw
cGVuZChieXRlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OkxDaGFyQnVmZmVy
PiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25zdCBDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Q
b3NpdGlvbikKLXsKLSAgICBMQ2hhckJ1ZmZlciBhc2NpaTsKLSAgICBpZiAoZG9tYWluLmlzQWxs
QVNDSUkoKSkgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0gZG9tYWluLmxlbmd0aCgpOwotICAg
ICAgICBpZiAoZG9tYWluLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBMQ2hhciogY2hh
cmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAgYXNjaWkucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJ
VXBwZXIoY2hhcmFjdGVyc1tpXSkpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICAgICAgICAg
YXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAgIGFzY2lpLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJ
SVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICAgICAgICAg
IGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhc2NpaTsKLSAgICB9Ci0gICAg
Ci0gICAgY29uc3Qgc2l6ZV90IG1heERvbWFpbkxlbmd0aCA9IDY0OwotICAgIFVDaGFyIGhvc3Ru
YW1lQnVmZmVyW21heERvbWFpbkxlbmd0aF07Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVS
T19FUlJPUjsKLSAgICBVSUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lO
SVRJQUxJWkVSOwotICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5hX25h
bWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwgU3RyaW5nVmll
dyhkb21haW4pLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBkb21haW4ubGVuZ3RoKCksIGhvc3Ru
YW1lQnVmZmVyLCBtYXhEb21haW5MZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsK
LSAgICBBU1NFUlQobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA8PSBzdGF0aWNfY2FzdDxpbnQzMl90
PihtYXhEb21haW5MZW5ndGgpKTsKLQotICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9j
ZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKLSAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwg
bnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsgKytpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXNBU0NJ
SShob3N0bmFtZUJ1ZmZlcltpXSkpOwotICAgICAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIo
aG9zdG5hbWVCdWZmZXJbaV0pKTsKLSAgICAgICAgfQotICAgICAgICBhc2NpaS5hcHBlbmQoaG9z
dG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAgICBpZiAoZG9tYWlu
ICE9IFN0cmluZ1ZpZXcoYXNjaWkuZGF0YSgpLCBhc2NpaS5zaXplKCkpKQotICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAg
ICAgICByZXR1cm4gYXNjaWk7Ci0gICAgfQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0K
LWJvb2wgVVJMUGFyc2VyOjpoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IFVSTFBhcnNl
cjo6TENoYXJCdWZmZXImIGFzY2lpRG9tYWluKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXNjaWlEb21haW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9z
dENvZGVQb2ludChhc2NpaURvbWFpbltpXSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgotYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKCppdGVyYXRvciA9PSAnOicpOwotICAg
IGF1dG8gY29sb25JdGVyYXRvciA9IGl0ZXJhdG9yOwotICAgIGFkdmFuY2UoaXRlcmF0b3IsIGNv
bG9uSXRlcmF0b3IpOwotICAgIHVpbnQzMl90IHBvcnQgPSAwOwotICAgIGlmIChVTkxJS0VMWShp
dGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0gY3VycmVu
dFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgICAgICBSRUxF
QVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihj
b2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHNpemVfdCBk
aWdpdENvdW50ID0gMDsKLSAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOwotICAgIGZvciAo
OyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBpZiAoVU5MSUtFTFko
aXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkgewotICAgICAgICAgICAgaWYgKCppdGVy
YXRvciA9PSAnMCcgJiYgIWRpZ2l0Q291bnQpCi0gICAgICAgICAgICAgICAgbGVhZGluZ1plcm9z
ID0gdHJ1ZTsKLSAgICAgICAgICAgICsrZGlnaXRDb3VudDsKLSAgICAgICAgICAgIHBvcnQgPSBw
b3J0ICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7Ci0gICAgICAgICAgICBpZiAocG9ydCA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGlmIChwb3J0ICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGNvbG9uSXRlcmF0b3IpOwotICAgIAotICAgIGlmICghcG9ydCAmJiBkaWdpdENvdW50ID4gMSkK
LSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotCi0gICAgQVNTRVJUKHBv
cnQgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKTsKLSAgICBpZiAoVU5MSUtFTFkoZGVm
YXVsdFBvcnRGb3JQcm90b2NvbChwYXJzZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCkp
ID09IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSkpCi0gICAgICAgIHN5bnRheFZpb2xhdGlv
bihjb2xvbkl0ZXJhdG9yKTsKLSAgICBlbHNlIHsKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignOicpOwotICAgICAgICBBU1NFUlQocG9ydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQx
Nl90Pjo6bWF4KCkpOwotICAgICAgICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQxNl90
PihzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHBv
cnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwot
ICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKLSAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVuZ3RoOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnBhcnNl
SG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17
Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoKml0ZXJhdG9yID09ICc6JykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgqaXRl
cmF0b3IgPT0gJ1snKSB7Ci0gICAgICAgIGF1dG8gaXB2NkVuZCA9IGl0ZXJhdG9yOwotICAgICAg
ICB3aGlsZSAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCAhPSAnXScpCi0gICAgICAgICAg
ICArK2lwdjZFbmQ7Ci0gICAgICAgIGlmIChpcHY2RW5kLmF0RW5kKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjZIb3N0KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGl0ZXJhdG9yLCBpcHY2RW5kKSkpIHsKLSAg
ICAgICAgICAgIHNlcmlhbGl6ZUlQdjYoYWRkcmVzcy52YWx1ZSgpKTsKLSAgICAgICAgICAgIGlm
ICghaXB2NkVuZC5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZShpcHY2RW5kKTsK
LSAgICAgICAgICAgICAgICBpZiAoIWlwdjZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCA9PSAnOicp
IHsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9u
KGlwdjZFbmQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGlwdjZFbmQp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBj
dXJyZW50UG9zaXRpb24oaXB2NkVuZCk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBpZiAoIW1fdXJsSXNTcGVjaWFsKSB7Ci0gICAgICAgIGZvciAoOyAhaXRl
cmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlz
VGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRl
cmF0b3IpICYmICppdGVyYXRvciAhPSAnJScpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGl0
ZXJhdG9yKTsKLSAgICAgICAgfQotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9z
aXRpb24oaXRlcmF0b3IpOwotICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgIH0KLSAg
ICAKLSAgICBpZiAoTElLRUxZKCFtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSkpIHsKLSAgICAg
ICAgYXV0byBob3N0SXRlcmF0b3IgPSBpdGVyYXRvcjsKLSAgICAgICAgZm9yICg7ICFpdGVyYXRv
ci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUo
Kml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICgq
aXRlcmF0b3IgPT0gJzonKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYg
KGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRI
b3N0KGhvc3RJdGVyYXRvciwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaG9zdEl0
ZXJhdG9yLCBpdGVyYXRvcikpOwotICAgICAgICBpZiAoYWRkcmVzcykgewotICAgICAgICAgICAg
c2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkpOwotICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRv
ci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChhZGRyZXNz
LmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgZm9yICg7IGhvc3RJdGVyYXRvciAhPSBpdGVyYXRvcjsgKytob3N0
SXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaG9z
dEl0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEl0ZXJh
dG9yKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoKmhvc3RJdGVyYXRvcikpKQotICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0SXRlcmF0b3IpOwotICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmhvc3RJdGVyYXRvcikpOwotICAgICAgICB9Ci0g
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAg
ICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyc2VQ
b3J0KGhvc3RJdGVyYXRvcik7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50
UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgICAgICBSRUxFQVNFX0FT
U0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAgICAgIG1fdXJsLm1f
cG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAg
ICAKLSAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGl0ZXJhdG9yOwotICAgIAotICAgIExDaGFy
QnVmZmVyIHV0ZjhFbmNvZGVkOwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVy
YXRvcikgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkp
IHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJKCppdGVyYXRvcikp
KQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAgICAgaWYg
KCFVX0lTX1VOSUNPREVfQ0hBUigqaXRlcmF0b3IpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKLSAgICAgICAgaW50MzJf
dCBvZmZzZXQgPSAwOwotICAgICAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCAq
aXRlcmF0b3IpOwotICAgICAgICB1dGY4RW5jb2RlZC5hcHBlbmQoYnVmZmVyLCBvZmZzZXQpOwot
ICAgIH0KLSAgICBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUodXRm
OEVuY29kZWQuZGF0YSgpLCB1dGY4RW5jb2RlZC5zaXplKCksIGhvc3RCZWdpbik7Ci0gICAgU3Ry
aW5nIGRvbWFpbiA9IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJj
ZW50RGVjb2RlZC5zaXplKCkpOwotICAgIGlmIChkb21haW4uaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcocGVyY2VudERlY29kZWQu
ZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpKQotICAgICAgICBzeW50YXhWaW9sYXRpb24o
aG9zdEJlZ2luKTsKLSAgICBhdXRvIGFzY2lpRG9tYWluID0gZG9tYWluVG9BU0NJSSgqZG9tYWlu
LmltcGwoKSwgaG9zdEJlZ2luKTsKLSAgICBpZiAoIWFzY2lpRG9tYWluIHx8IGhhc0ZvcmJpZGRl
bkhvc3RDb2RlUG9pbnQoYXNjaWlEb21haW4udmFsdWUoKSkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW5WYWx1ZSA9IGFzY2lpRG9tYWluLnZhbHVl
KCk7Ci0gICAgY29uc3QgTENoYXIqIGFzY2lpRG9tYWluQ2hhcmFjdGVycyA9IGFzY2lpRG9tYWlu
VmFsdWUuZGF0YSgpOwotCi0gICAgYXV0byBhZGRyZXNzID0gcGFyc2VJUHY0SG9zdChob3N0QmVn
aW4sIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPihhc2NpaURvbWFpblZhbHVlLmJlZ2luKCksIGFz
Y2lpRG9tYWluVmFsdWUuZW5kKCkpKTsKLSAgICBpZiAoYWRkcmVzcykgewotICAgICAgICBzZXJp
YWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1
cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7
Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0g
ICAgfQotICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVy
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihhc2Np
aURvbWFpbkNoYXJhY3RlcnMsIGFzY2lpRG9tYWluVmFsdWUuc2l6ZSgpKTsKLSAgICBtX3VybC5t
X2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgIGlmICghaXRlcmF0b3Iu
YXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gMDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RkOjpvcHRpb25hbDxT
dHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQotewotICAg
IGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7Ci0gICAgaWYgKHV0Zjgu
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBwZXJjZW50
RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHV0
ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
cGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotfQotCi0vLyBo
dHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsZW5jb2RlZC1wYXJzZXIKLWF1
dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+IFVS
TEVuY29kZWRGb3JtCi17Ci0gICAgVVJMRW5jb2RlZEZvcm0gb3V0cHV0OwotICAgIGZvciAoU3Ry
aW5nVmlldyBieXRlcyA6IGlucHV0LnNwbGl0KCcmJykpIHsKLSAgICAgICAgYXV0byBlcXVhbElu
ZGV4ID0gYnl0ZXMuZmluZCgnPScpOwotICAgICAgICBpZiAoZXF1YWxJbmRleCA9PSBub3RGb3Vu
ZCkgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy50b1N0cmlu
ZygpLnJlcGxhY2UoJysnLCAweDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFtZSkKLSAgICAgICAg
ICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShi
eXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgy
MCkpOwotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGZvcm1VUkxEZWNvZGUoYnl0ZXMuc3Vic3Ry
aW5nKGVxdWFsSW5kZXggKyAxKS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7Ci0gICAg
ICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5k
KHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52YWx1ZSgpIH0pOwotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBvdXRwdXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3Jt
KGNvbnN0IFN0cmluZyYgaW5wdXQsIFZlY3RvcjxMQ2hhcj4mIG91dHB1dCkKLXsKLSAgICBhdXRv
IHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOwotICAgIGNvbnN0IGNoYXIqIGRh
dGEgPSB1dGY4LmRhdGEoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHV0ZjgubGVuZ3Ro
KCk7ICsraSkgewotICAgICAgICBjb25zdCBjaGFyIGJ5dGUgPSBkYXRhW2ldOwotICAgICAgICBp
ZiAoYnl0ZSA9PSAweDIwKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgweDJCKTsKLSAgICAg
ICAgZWxzZSBpZiAoYnl0ZSA9PSAweDJBCi0gICAgICAgICAgICB8fCBieXRlID09IDB4MkQKLSAg
ICAgICAgICAgIHx8IGJ5dGUgPT0gMHgyRQotICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHgzMCAm
JiBieXRlIDw9IDB4MzkpCi0gICAgICAgICAgICB8fCAoYnl0ZSA+PSAweDQxICYmIGJ5dGUgPD0g
MHg1QSkKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHg1RgotICAgICAgICAgICAgfHwgKGJ5dGUg
Pj0gMHg2MSAmJiBieXRlIDw9IDB4N0EpKSAvLyBGSVhNRTogUHV0IHRoZXNlIGluIHRoZSBjaGFy
YWN0ZXJDbGFzc1RhYmxlIHRvIGF2b2lkIGJyYW5jaGVzLgotICAgICAgICAgICAgb3V0cHV0LmFw
cGVuZChieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUo
Ynl0ZSwgb3V0cHV0KTsKLSAgICB9Ci19Ci0gICAgCi1TdHJpbmcgVVJMUGFyc2VyOjpzZXJpYWxp
emUoY29uc3QgVVJMRW5jb2RlZEZvcm0mIHR1cGxlcykKLXsKLSAgICBpZiAodHVwbGVzLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3RvcjxMQ2hhcj4gb3V0cHV0Owot
ICAgIGZvciAoYXV0byYgdHVwbGUgOiB0dXBsZXMpIHsKLSAgICAgICAgaWYgKCFvdXRwdXQuaXNF
bXB0eSgpKQotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgnJicpOwotICAgICAgICBzZXJpYWxp
emVVUkxFbmNvZGVkRm9ybSh0dXBsZS5rZXksIG91dHB1dCk7Ci0gICAgICAgIG91dHB1dC5hcHBl
bmQoJz0nKTsKLSAgICAgICAgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0odHVwbGUudmFsdWUsIG91
dHB1dCk7Ci0gICAgfQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUob3V0cHV0KSk7
Ci19Ci0KLWNvbnN0IFVJRE5BJiBVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJh
bnNjb2RlcigpCi17Ci0gICAgc3RhdGljIFVJRE5BKiBlbmNvZGVyOwotICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewot
ICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgICAgICAvLyBXYXJu
aW5nOiBQbGVhc2UgY29udGFjdCBhIFdlYktpdEdUSysgZGV2ZWxvcGVyIGlmIGNoYW5naW5nIHRo
ZXNlIGZsYWdzLgotICAgICAgICAvLyBUaGV5IHNob3VsZCBiZSBzeW5jZWQgd2l0aCBlcGh5X3Vy
aV9kZWNvZGUoKSBpbiBlcGh5LXVyaS1oZWxwZXJzLmMuCi0gICAgICAgIGVuY29kZXIgPSB1aWRu
YV9vcGVuVVRTNDYoVUlETkFfQ0hFQ0tfQklESSB8IFVJRE5BX0NIRUNLX0NPTlRFWFRKIHwgVUlE
TkFfTk9OVFJBTlNJVElPTkFMX1RPX1VOSUNPREUgfCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9f
QVNDSUksICZlcnJvcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikp
OwotICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmNvZGVyKTsKLSAgICB9KTsKLSAgICByZXR1cm4g
KmVuY29kZXI7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwm
IGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVk
ICVkICVzIiwKLSAgICAgICAgYS5tX2lzVmFsaWQsCi0gICAgICAgIGEubV9jYW5ub3RCZUFCYXNl
VVJMLAotICAgICAgICBhLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKLSAgICAgICAgYS5tX3Nj
aGVtZUVuZCwKLSAgICAgICAgYS5tX3VzZXJTdGFydCwKLSAgICAgICAgYS5tX3VzZXJFbmQsCi0g
ICAgICAgIGEubV9wYXNzd29yZEVuZCwKLSAgICAgICAgYS5tX2hvc3RFbmQsCi0gICAgICAgIGEu
bV9ob3N0RW5kICsgYS5tX3BvcnRMZW5ndGgsCi0gICAgICAgIGEubV9wYXRoQWZ0ZXJMYXN0U2xh
c2gsCi0gICAgICAgIGEubV9wYXRoRW5kLAotICAgICAgICBhLm1fcXVlcnlFbmQsCi0gICAgICAg
IGEubV9zdHJpbmcudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgYi5tX2lzVmFsaWQsCi0gICAgICAg
IGIubV9jYW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBiLm1fcHJvdG9jb2xJc0luSFRUUEZhbWls
eSwKLSAgICAgICAgYi5tX3NjaGVtZUVuZCwKLSAgICAgICAgYi5tX3VzZXJTdGFydCwKLSAgICAg
ICAgYi5tX3VzZXJFbmQsCi0gICAgICAgIGIubV9wYXNzd29yZEVuZCwKLSAgICAgICAgYi5tX2hv
c3RFbmQsCi0gICAgICAgIGIubV9ob3N0RW5kICsgYi5tX3BvcnRMZW5ndGgsCi0gICAgICAgIGIu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGIubV9wYXRoRW5kLAotICAgICAgICBiLm1f
cXVlcnlFbmQsCi0gICAgICAgIGIubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICByZXR1
cm4gYS5tX3N0cmluZyA9PSBiLm1fc3RyaW5nCi0gICAgICAgICYmIGEubV9pc1ZhbGlkID09IGIu
bV9pc1ZhbGlkCi0gICAgICAgICYmIGEubV9jYW5ub3RCZUFCYXNlVVJMID09IGIubV9jYW5ub3RC
ZUFCYXNlVVJMCi0gICAgICAgICYmIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID09IGIubV9w
cm90b2NvbElzSW5IVFRQRmFtaWx5Ci0gICAgICAgICYmIGEubV9zY2hlbWVFbmQgPT0gYi5tX3Nj
aGVtZUVuZAotICAgICAgICAmJiBhLm1fdXNlclN0YXJ0ID09IGIubV91c2VyU3RhcnQKLSAgICAg
ICAgJiYgYS5tX3VzZXJFbmQgPT0gYi5tX3VzZXJFbmQKLSAgICAgICAgJiYgYS5tX3Bhc3N3b3Jk
RW5kID09IGIubV9wYXNzd29yZEVuZAotICAgICAgICAmJiBhLm1faG9zdEVuZCA9PSBiLm1faG9z
dEVuZAotICAgICAgICAmJiBhLm1fcG9ydExlbmd0aCA9PSBiLm1fcG9ydExlbmd0aAotICAgICAg
ICAmJiBhLm1fcGF0aEFmdGVyTGFzdFNsYXNoID09IGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gKLSAg
ICAgICAgJiYgYS5tX3BhdGhFbmQgPT0gYi5tX3BhdGhFbmQKLSAgICAgICAgJiYgYS5tX3F1ZXJ5
RW5kID09IGIubV9xdWVyeUVuZDsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmludGVybmFsVmFsdWVz
Q29uc2lzdGVudChjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5k
IDw9IHVybC5tX3VzZXJTdGFydAotICAgICAgICAmJiB1cmwubV91c2VyU3RhcnQgPD0gdXJsLm1f
dXNlckVuZAotICAgICAgICAmJiB1cmwubV91c2VyRW5kIDw9IHVybC5tX3Bhc3N3b3JkRW5kCi0g
ICAgICAgICYmIHVybC5tX3Bhc3N3b3JkRW5kIDw9IHVybC5tX2hvc3RFbmQKLSAgICAgICAgJiYg
dXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5ndGggPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoCi0gICAgICAgICYmIHVybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSB1cmwubV9wYXRoRW5k
Ci0gICAgICAgICYmIHVybC5tX3BhdGhFbmQgPD0gdXJsLm1fcXVlcnlFbmQKLSAgICAgICAgJiYg
dXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1fc3RyaW5nLmxlbmd0aCgpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmNjViZWIwMjRjOTgwMzIyYTZlMDUzOWE1YmZlODQ3YWU5MTBjZmFi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiVVJMLmgiCi0j
aW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotc3Ry
dWN0IFVJRE5BOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IGNsYXNzIENvZGVQb2ludEl0ZXJhdG9yOwotCi1jbGFzcyBVUkxQYXJzZXIg
ewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFVSTFBhcnNlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7Ci0gICAg
VVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQoY29uc3QgVVJM
Jik7Ci0gICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBT
dHJpbmc+PiBVUkxFbmNvZGVkRm9ybTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVVJMRW5j
b2RlZEZvcm0gcGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KTsKLSAgICBzdGF0aWMgU3Ry
aW5nIHNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYpOwotCi0gICAgc3RhdGljIGNvbnN0
IFVJRE5BJiBpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKLSAgICBzdGF0aWMg
Ym9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgaXNTcGVjaWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1heWJlQ2Fub25pY2Fs
aXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3
KTsKLSAgICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90
b2NvbChTdHJpbmdWaWV3KTsKLQotICAgIFVSTCBtX3VybDsKLSAgICBWZWN0b3I8TENoYXI+IG1f
YXNjaWlCdWZmZXI7Ci0gICAgYm9vbCBtX3VybElzU3BlY2lhbCB7IGZhbHNlIH07Ci0gICAgYm9v
bCBtX3VybElzRmlsZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hvc3RIYXNQZXJjZW50T3JOb25B
U0NJSSB7IGZhbHNlIH07Ci0gICAgU3RyaW5nIG1faW5wdXRTdHJpbmc7Ci0gICAgY29uc3Qgdm9p
ZCogbV9pbnB1dEJlZ2luIHsgbnVsbHB0ciB9OwotCi0gICAgYm9vbCBtX2RpZFNlZVN5bnRheFZp
b2xhdGlvbiB7IGZhbHNlIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdElu
bGluZUJ1ZmZlclNpemUgPSAyMDQ4OwotICAgIHVzaW5nIExDaGFyQnVmZmVyID0gVmVjdG9yPExD
aGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT47Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqLCBjb25zdCB1bnNp
Z25lZCBsZW5ndGgsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyopOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2VBdXRob3JpdHkoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGJvb2wgcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJz
ZVBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLQotICAgIHZvaWQgZmFp
bHVyZSgpOwotICAgIGVudW0gY2xhc3MgUmVwb3J0U3ludGF4VmlvbGF0aW9uIHsgTm8sIFllcyB9
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9sYXRpb246Olllcz4K
LSAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJh
dG9yKSB7IGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgcmVwb3J0U3ludGF4VmlvbGF0aW9uPihpdGVy
YXRvciwgaXRlcmF0b3IpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwg
UmVwb3J0U3ludGF4VmlvbGF0aW9uID0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXM+Ci0gICAg
dm9pZCBhZHZhbmNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9u
UG9zaXRpb24pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgdGFr
ZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHN5bnRheFZpb2xhdGlv
bihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNQZXJjZW50RW5jb2RlZERvdChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gYm9vbCBpc1dpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBp
c1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzRG91YmxlRG90UGF0
aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgc2hvdWxkQ29weUZpbGVVUkwoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IGJvb2wgY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mLCBVQ2hhcjMyKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBib29sIGlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4p
OwotICAgIGJvb2wgaXNMb2NhbGhvc3QoU3RyaW5nVmlldyk7Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHZvaWQgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90
IGN1cnJlbnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYp
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+IHZvaWQgYXBwZW5k
TnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlKTsKLSAgICB0ZW1wbGF0ZTxi
b29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQg
dXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVyeUVu
Y29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8TENoYXJCdWZmZXI+IGRv
bWFpblRvQVNDSUkoU3RyaW5nSW1wbCYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlKGNvbnN0
IExDaGFyKiwgc2l6ZV90LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
aXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgc3RhdGljIExDaGFyQnVm
ZmVyIHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QpOwotICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KTsKLSAgICBz
dGF0aWMgYm9vbCBoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IExDaGFyQnVmZmVyJik7
Ci0gICAgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90KTsKLSAgICB2b2lkIGFwcGVuZFRv
QVNDSUlCdWZmZXIoVUNoYXIzMik7Ci0gICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0
IGNoYXIqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBMQ2hh
ciogY2hhcmFjdGVycywgc2l6ZV90IHNpemUpIHsgYXBwZW5kVG9BU0NJSUJ1ZmZlcihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFyYWN0ZXJzKSwgc2l6ZSk7IH0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGVuY29kZU5vblVURjhRdWVyeShjb25zdCBW
ZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYsIENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB2b2lkIGNvcHlBU0NJSVN0cmluZ1VudGlsKGNv
bnN0IFN0cmluZyYsIHNpemVfdCBsZW5ndGgpOwotICAgIGJvb2wgY29weUJhc2VXaW5kb3dzRHJp
dmVMZXR0ZXIoY29uc3QgVVJMJik7Ci0gICAgU3RyaW5nVmlldyBwYXJzZWREYXRhVmlldyhzaXpl
X3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpOwotICAgIFVDaGFyIHBhcnNlZERhdGFWaWV3KHNpemVf
dCBwb3NpdGlvbik7Ci0KLSAgICB1c2luZyBJUHY0QWRkcmVzcyA9IHVpbnQzMl90OwotICAgIHZv
aWQgc2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyk7Ci0gICAgZW51bSBjbGFzcyBJUHY0UGFyc2lu
Z0Vycm9yOwotICAgIGVudW0gY2xhc3MgSVB2NFBpZWNlUGFyc2luZ0Vycm9yOwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24sIHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IEV4cGVjdGVkPElQdjRBZGRyZXNzLCBJUHY0UGFyc2luZ0Vycm9yPiBwYXJz
ZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhW
aW9sYXRpb24+JiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6
OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4gcGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4mLCBib29sJiBzeW50YXhWaW9sYXRpb24pOwotICAgIHVzaW5nIElQdjZB
ZGRyZXNzID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGllY2VJbnNp
ZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4gcGFyc2VJ
UHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwot
ICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsKLSAgICB2b2lkIHNl
cmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOwotCi0gICAgZW51bSBjbGFzcyBVUkxQYXJ0OwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29weVVSTFBhcnRzVW50aWwo
Y29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyomKTsKLSAgICBzdGF0aWMgc2l6ZV90IHVy
bExlbmd0aFVudGlsUGFydChjb25zdCBVUkwmLCBVUkxQYXJ0KTsKLSAgICB2b2lkIHBvcFBhdGgo
KTsKLSAgICBib29sIHNob3VsZFBvcFBhdGgodW5zaWduZWQpOwotfTsKLQotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Vc2VyQWdlbnQuaAppbmRleCA0MTgxZWMxM2JmZjhmNGUyYWE4Mjk1ZTFiZmI3ZWZl
NTllZDA4MWUzLi5jMzQ0ODQ4NmVlN2MyYWVhY2FhZWJlYmY1YTBlYjcxODNkYzZlZmY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzYsNyArMzYsNiBAQCBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0
cmluZyYgYXBwbGljYQogU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRT
dHJpbmcoKTsKIFN0cmluZyB1c2VyQWdlbnRCdW5kbGVWZXJzaW9uKCk7CiAjZWxzZQotY2xhc3Mg
VVJMOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3Ry
aW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBlbXB0eVN0cmluZygpLCBjb25zdCBTdHJpbmcmIGFwcGxp
Y2F0aW9uVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCkpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0
YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKaW5kZXggMjMyZTVjZTU3ZGIwNWRiMzhiNDlkZDljMDIx
YTFiYzk5YzAzODVjYi4uNDliNTg5MjBhN2FlYjc3MzJkNjU3MzI3NTU5MzQ3N2ExODZiMGIwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0yNyw3
ICsyNyw3IEBACiAjaW5jbHVkZSAiVXNlckFnZW50UXVpcmtzLmgiCiAKICNpbmNsdWRlICJQdWJs
aWNTdWZmaXguaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50UXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWly
a3MuaAppbmRleCBiZjEwY2UyMzJkOTFkNDMxYmNiNmQ0YTcxYTUxZGQ0ZGRlOGZiODhhLi5kYzc3
ZDRlODUwZWY5MDlkNGIwMDU2ZDdjOWE3ZTFhZDQ1ZmRkOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgVXNlckFnZW50UXVpcmtzIHsKIHB1Ymxp
YzoKICAgICBlbnVtIFVzZXJBZ2VudFF1aXJrIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0NGVVJMRXh0cmFzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNiNDNiYzdh
MDdiODBhZTRiYWEzNWZkYjczMzVhYzNiYTc2NDQxNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4
dHJhcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0KLSNpbmNsdWRlICJV
UkwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCi17Ci0gICAgLy8gTk9URTog
V2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0
aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKLSAgICAvLyAoZS5nIGNh
bGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9sZXJh
bnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgLy8gY291bGQgZWl0aGVy
IGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywg
bGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjawotICAgIC8vIG9udG8gdXNpbmcgSVNPIExh
dGluLTEgaW4gdGhvc2UgY2FzZXMuCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXN1bHQgPSBh
ZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGJhc2VV
UkwsIHRydWUpKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihD
RlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGJhc2VVUkws
IHRydWUpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIGdldFVSTEJ5dGVzKENGVVJM
UmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQotewotICAgIENGSW5kZXggYnl0ZXNMZW5n
dGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7Ci0gICAgcmVzdWx0LnJlc2l6ZShieXRlc0xl
bmd0aCk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCByZWlu
dGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVuZ3RoKTsKLSAgICBB
U1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRlc0xlbmd0aCk7Ci19
Ci0KLXZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiByZXN1bHQpCi17Ci0g
ICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKLSAgICBj
aGFyKiBieXRlczsKLSAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGJ5dGVz
TGVuZ3RoLCBieXRlcyk7Ci0gICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXMo
dXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7Ci0gICAg
QVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5ndGgpOwot
fQotCi1ib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25zdCBVUkwmIHVy
bCkKLXsKLSAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7Ci0KLSAgICBp
ZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCi0gICAgICAgIHJldHVy
biBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsKLQotICAg
IFVSTENoYXJCdWZmZXIgYnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5dGVzKTsKLSAg
ICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5zaXplKCkpIH07Ci0K
LSAgICBpZiAoIXVybC5oYXNQYXRoKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmdWaWV3IHsgdXJs
LnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7Ci0KLSAgICBhdXRvIHVybFdpdGhvdXRQYXRoID0g
U3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwucGF0aFN0YXJ0KCkg
KyAxKTsKLSAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxXaXRob3V0UGF0aCk7
Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0
cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmQ1NzA2NjBkYTZhYTk4ZDEyMjg2NDA3OGZlZDdkZDZl
Nzc5ZWY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDRlVSTEV4dHJhc19oCi0jZGVmaW5l
IENGVVJMRXh0cmFzX2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBVUkw7Ci10eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IFVSTENoYXJCdWZm
ZXI7Ci0KLVdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9t
QnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VVUkwgPSAwKTsKLVdFQkNP
UkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKLVdF
QkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYsIENTdHJpbmcmKTsKLQotYm9v
bCBpc0NGVVJMU2FtZU9yaWdpbihDRlVSTFJlZiwgY29uc3QgVVJMJik7Ci0KLX0KLQotI2VuZGlm
IC8vIENGVVJMRXh0cmFzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L1VSTENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI2NDFlZDJkOWJlYzEzZDZhMTc3OGY2MzY2MmY5YjY2
N2E5NzFjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkwuaCIKLQotI2lu
Y2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0K
LSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgi
Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6OlVSTChDRlVSTFJlZiB1cmwp
Ci17Ci0gICAgaWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBV
UkwgaGVyZT8KLSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHVybCwgdXJs
Qnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsKLSAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0
cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdo
YXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/Ci0gICAgLy8gQ3VycmVudGx5
IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBz
dHJpbmcgaW4gdGhhdCBjYXNlLAotICAgIC8vIHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCi0gICAg
VVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0gICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7Ci0gICAgYXV0
byBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKLQotICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWlzQ0ZVUkxTYW1l
T3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgcmV0dXJuIGNmVVJMOwotfQotI2VuZGlmCi0KLVN0cmluZyBVUkw6OmZpbGVTeXN0ZW1QYXRo
KCkgY29uc3QKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gY3JlYXRlQ0ZVUkwo
KTsKLSAgICBpZiAoIWNmVVJMKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSNpZiBQTEFU
Rk9STShXSU4pCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NGVVJMV2luZG93c1Bh
dGhTdHlsZTsKLSNlbHNlCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlID0ga0NGVVJMUE9T
SVhQYXRoU3R5bGU7Ci0jZW5kaWYKLSAgICByZXR1cm4gYWRvcHRDRihDRlVSTENvcHlGaWxlU3lz
dGVtUGF0aChjZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7Ci19Ci0KLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5oCmluZGV4IDIxMDZjMmJhOWI4NmFjMDIwYjQwNzAxMGU5MTMyMzliZDQy
NTkwZWYuLmE0ZTc2MmU3ODYzOWRkNmM2M2NjMjZlODY5NzA5YTU5N2NhNDEwOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXJfaAotI2RlZmluZSBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcl9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGVudEZpbHRlci5oIgogI2luY2x1ZGUgPG9i
amMvTlNPYmpDUnVudGltZS5oPgpAQCAtMzksOCArMzgsNiBAQCBPQkpDX0NMQVNTIE5TRGF0YTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIE5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ29udGVudEZpbHRlciB7
CiAgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cj4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKTsKIApA
QCAtNjksNSArNjYsMyBAQCBjbGFzcyBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlciBmaW5h
bCA6IHB1YmxpYyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXJfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCBlOTQ0MWZmY2RlYjg2ZTYyOGJiZTU0ZjdjOTY1
ZDg2NjgwNjExNDU1Li5kZTFkYWRiYjkzYmRlMmFmZmIwMmQzYjY2OWJiYmIwYTdkYWFiYjdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW1wb3J0
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxv
YmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTkVGaWx0ZXJTb3VyY2VTUEku
aD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2lt
cG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIFNPRlRfTElOS19GUkFNRVdP
UktfT1BUSU9OQUwoTmV0d29ya0V4dGVuc2lvbik7CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBO
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY28KIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RVUkwgeyBVUkwoKSwg
bW9kaWZpZWRSZXF1ZXN0VVJMU3RyaW5nLmdldCgpIH07CiAgICAgaWYgKCFtb2RpZmllZFJlcXVl
c3RVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQgVVJMIHN0
cmluZyAlQCB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVzdFVSTFN0cmluZy5n
ZXQoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQgVVJMIHN0cmluZyAlQCB0byBh
ICBVUkwuXG4iLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcuZ2V0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NT
TEtleUdlbmVyYXRvckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TU0xL
ZXlHZW5lcmF0b3JHTGliLmNwcAppbmRleCA5NDUwNmY1N2E0NzVlMWVjNTY3ZmI2OGZkY2FkYjRk
MjBjMjJmMmJmLi40MWY0OGQ3MTYxZTdmMjk2NWMxNTU4NWZmMDA4ZmMyOTMwOTJjMzkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NTTEtleUdlbmVyYXRvckdMaWIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xp
Yi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggMTYy
MWE4ODVlODcwNGNhODQ4MzIwZjYyNTFjMDZmOTIxYjE4OWQ4OC4uYTNiYTRlNDZkYzI4Mzk1ZDg1
MmNlOGZiNjhjNzBiNTc5OWUyNzcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiVXNlckFnZW50LmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJVc2VyQWdlbnRRdWlya3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
CiAjaWYgT1MoVU5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuY3BwCmluZGV4IGIwY2E0M2Q1NWM0NWNiNTBkNzMwZjg5
MmUxN2Q4MDg2OWNjZDQ5NjEuLmQzNWViMTZiYTUyYWQwM2YwN2E0ZWZlZDA0MWJmYmU4ODQwMzM2
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdn
ZWRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFRhZ2dlZFNldHRpbmdzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5ncy5oIgogCisjaW5jbHVkZSA8d3RmL0hhc2hl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNDk3ZDJjNzlmZDJjYjA4ZmMzZDBjY2Jm
OGY4ZWEyMjczYzQzMTAxYy4uYWU4YTkzZjRmMWE0ODhjZWFiOGIzMWI0ODVjYmFhOGIyYjg1YmZl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKQEAgLTY1LDYgKzY1LDEyIEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciBVSW50ODsK
ICNlbmRpZgogI2VuZGlmCiAKKy8vIFgxMSBoZWFkZXIgZGVmaW5lcyAiTm9uZSIgYXMgY29uc3Rh
bnQgaW4gbWFjcm8gYW5kIGJyZWFrZXMgdGhlIFBhaW50SW52YWxpZGF0aW9uUmVhc29ucyBlbnVt
J3MgIk5vbmUiLgorLy8gQXMgYSB3b3JrYXJvdW5kLCB3ZSBleHBsaWNpdGx5IHVuZGVmIFgxMSdz
IE5vbmUgaGVyZS4KKyNpZiBkZWZpbmVkKE5vbmUpCisjdW5kZWYgTm9uZQorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShXSU5HREkpCkBAIC04NSw3ICs5MSw2IEBAIGNs
YXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIGNsYXNzIEltYWdlQnVmZmVyOwog
Y2xhc3MgSW50UmVjdDsKIGNsYXNzIFJvdW5kZWRSZWN0OwotY2xhc3MgVVJMOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBQYXRoOwogY2xhc3MgVGV4dFJ1bjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBkNmIwYzY1ZmJmNTdkOWM3ZGVh
MTk2MDgwMjliYzJhNjAxNDU3OGIxLi5iYzM4OTE0NDg5ZTMyZDMyOGE1NGQ0MjFlNTdkYjdmMzE1
OGYzM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBA
IC0zNSwxMCArMzUsMTAgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDVmMjIwYmU0ZWYwNmYzZmMxZTc5MzQ5ZmRlYjMz
MGVkOTFlNzRhYzkuLjFlMzBmMzQ2OWU0YWI3OTg0NDE0YzJiZmQ4ZmFlNjRlMThhMDBhYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtNjgsNyArNjgsNiBA
QCBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHRJbXBsOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogc3RydWN0IExl
bmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRl
cyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNlcyBhbmltYXRp
b24gZnJhbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VP
YnNlcnZlci5oCmluZGV4IDgyNjljYzRlZGMzN2NlNWY0ZGMxNjVmYmQ0ZDYxYzM2OThhNDI3ZmUu
LmYyODMyM2MyNTViMWQwYTAxNDM1MWM5MzQyNzNkYTAxYzVhZjg1YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTIzLDggKzIz
LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgSW1hZ2VPYnNlcnZlcl9oCi0j
ZGVmaW5lIEltYWdlT2JzZXJ2ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbWFnZVR5
cGVzLmgiCiAKQEAgLTMyLDcgKzMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJ
bWFnZTsKIGNsYXNzIEludFJlY3Q7Ci1jbGFzcyBVUkw7CiAKIC8vIEludGVyZmFjZSBmb3Igbm90
aWZpY2F0aW9uIGFib3V0IGNoYW5nZXMgdG8gYW4gaW1hZ2UsIGluY2x1ZGluZyBkZWNvZGluZywK
IC8vIGRyYXdpbmcsIGFuZCBhbmltYXRpbmcuCkBAIC01NCw1ICs1MiwzIEBAIGNsYXNzIEltYWdl
T2JzZXJ2ZXIgewogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA0ODhmOTQ1ZmRjM2QwMDBkYmZhYTMz
N2Q0NjVlNWZiMmVmYWFiNDM4Li5mZDRhMWZlMmRkODdiZjljMDhlY2FiYjEwZjNlZjM3NDI5NGIx
ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKICNp
bmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYv
U3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aAppbmRleCAwOTAxMDEyMjk5ZWJjNDFjMmNhODRlMTllOTUxZTAyNDc4ODY5NThlLi45ODBkNjBl
ZTUwZDUwYmMyNmEwMDMwNWUwM2U1MWI0ZDQ0Y2M5ZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEltYWdlU291cmNlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiB7CiAgICAgZnJpZW5kIGNs
YXNzIEJpdG1hcEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKaW5kZXggNDYyYTcyNjYwNTg0NzEyM2U4N2I3NDk1NWY0ZjE2OGZmODJmYTZm
MC4uMDYwMTQ2ZDNhYzcxMGZlMWM0ZDc4YTMwODEwNjkzYmJmYThiMTFjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MCw3ICs0MCw3
IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAKaW5kZXggNTkxNWE3NzMxNmVkOGEwMzBhNGU2ZDNhZDc0MTA0YzE3OGNhZDlkMi4u
M2UxZDI3MGU2NGU3ODVkYWE3MTk1NWRkNGFhZmU0MDMyZjllYjY1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTM5
LDcgKzM5LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1UaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRGF0YVZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpA
QCAtNDksNiArNDgsNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGU4MjQ0OWE1MGZjYzhl
OWI4MTdmYzc3ZTJhYTNhMDE5NWY2YTEyMjYuLjFkYmM1Y2Q4OGE3YTA4YTUwYzM5OTlhMDAyZWU0
N2I3NWYyMWY3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtNDUsOSArNDUsOSBAQAogI2luY2x1
ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllcldp
bi5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlv
bi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpbmNs
dWRlIDxBVkZvdW5kYXRpb25DRi9BVkNGUGxheWVySXRlbS5oPgogI2lmIEhBVkUoQVZGT1VOREFU
SU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA3
ZDQ5ZDRlMTBjOWU1MTY1YmNlYWUyNTE2M2Q5NmFkYWFmYmQ3YzFiLi42ZTQxMTdlNWVhMzlhOGUw
OWVmYzVkOTE0NDhmNzY2ZjVhYWUzYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU5
LDcgKzU5LDYgQEAKICNpbXBvcnQgIlRleHRFbmNvZGluZy5oIgogI2ltcG9ydCAiVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24uaCIKICNpbXBvcnQgIlRleHR1cmVDYWNoZUNWLmgiCi0jaW1wb3J0ICJV
UkwuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMuaCIKICNpbXBv
cnQgIlZpZGVvVGV4dHVyZUNvcGllckNWLmgiCiAjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakMuaCIKQEAgLTgxLDYgKzgwLDcgQEAKICNpbXBvcnQgPHd0Zi9MaXN0SGFzaFNldC5oPgog
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
I2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5k
ZXggNWY4NTcwYjEyMTcwNWE2YmE5MTUwNmUzMWJlZDk3ZjY0Nzg4Y2Y2Zi4uNzZiZWYwNzNkOTcy
ZWMxNzA3MjBkNmRlZTJhZTkwMDFmM2EyNmU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lmIFVTRShDQUlSTykKIAogI2luY2x1ZGUgIkFmZmlu
ZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkNhaXJvT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRJbXBsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYmQyYTczYTM0ZmFhMWRi
ZTE1OTIyZWMzYjFjMTFhZDExYjU2ZjY1Ny4uNjhlYzMxZWRkYTBkYTkwZWY4MTYxYjg5NjdjNDc0
OGE4MDMwMjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBACiAjaW5j
bHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjk3MDNlMjFlYjIxNTcw
ZjEwM2U1NDJiNWU1NDQzYWIzODY4OWU3NC4uYzUzM2EyZGU0M2IwY2IyMTg2NzMwMmVmODYwODhi
YzRmNjM2YThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIgogI2lu
Y2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC00Nyw2ICs0Niw3IEBACiAj
aW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKaW5kZXggNGYxZjhhYjAzOGI3ODMzYmVhZTI4OTBhMmNhZTQ1NTk4ZGZiMmE3Ni4uZDE1YzJh
NTBkNzJjNTNlM2EwOTVlMDYyYjFjMzQwOWZlZWYyNmQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtMzksNyAr
MzksNiBAQAogI2luY2x1ZGUgIlBsYXliYWNrUGlwZWxpbmUuaCIKICNpbmNsdWRlICJTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKICNp
bmNsdWRlIDxmbm1hdGNoLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIu
Y3BwCmluZGV4IGY3YmQ0NzczYmZkNWM1NjdlODAxZmIwNzE3OGViOGZkODYxYjdkNDAuLjk2OWE0
MjI0NDJlNTgzZDNlZDFhZjdjZmU0M2QyOWU0MmFhOWViNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02MzUsNyArNjM1LDcg
QEAgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFTcmNTZXRVcmkoR3N0VVJJSGFuZGxlciogaGFuZGxlciwg
Y29uc3QgZ2NoYXIqIHVyaSwgR0Vycm9yKioKICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQog
Ci0gICAgV2ViQ29yZTo6VVJMIHVybChXZWJDb3JlOjpVUkwoKSwgdXJpKTsKKyAgICBVUkwgdXJs
KFVSTCgpLCB1cmkpOwogCiAgICAgcHJpdi0+bG9jYXRpb24gPSBHVW5pcXVlUHRyPGdjaGFyPihn
X3N0cmR1cCh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdTVF9PQkpFQ1RfVU5M
T0NLKHNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09WVFRDdWUuY3BwCmluZGV4IGQwM2Y1ZjdmY2VhM2M4ZjE3Mzc3MTZhNDM1ZjllNjY2MDEy
YTVmMTguLjllYzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQyODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCkBA
IC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiSVNPVlRUQ3VlLmgiCiAKICNpbmNsdWRlICJMb2dn
aW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGF0YVZp
ZXcuaD4KICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogdXNpbmcgSlNDOjpEYXRhVmlldzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAK
aW5kZXggNWVhY2UxMDg4NjY3YzIyOWI1YWZjMzllYzkzNjg3ZTBkNDVhNTJmYi4uNDQ4MTczMTU3
NWFlNDA5NDk1NGM3Njk1ZmRkNzVlN2EwNTVjOGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGly
ZWN0MkQuY3BwCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDxkMmQxZWZmZWN0cy5oPgog
I2luY2x1ZGUgPGR3cml0ZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI3ByYWdtYSB3YXJu
aW5nIChkaXNhYmxlIDogNDc1NikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJh
Z0ltYWdlR3RrLmNwcAppbmRleCAzM2Y0ZmUzYTQyZjA1ZjJkNmI5M2RiMGZhZGE4Nzg0M2U5Yjcw
MjY4Li5mN2QxODRmNjdlOGFjMzU2NTUzMzUxNTNlMWNlNTU4YWUxOGU5N2UxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAtMjMsOSArMjMsOSBA
QAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSAi
VGV4dEluZGljYXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAj
aW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHAKaW5kZXggYTRhYjYxMGE3M2ZmMWFjOTE0OTBkZGMyMDA4YzQ4OGQ0MmM5MDBmMC4uNzFhMDBh
MzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1
ZGUgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5o
IgogI2luY2x1ZGUgIlNlbGVjdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bs
YXRmb3JtUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxh
dGZvcm1QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBmMzA4YzJiYjdlNTM2OTFkYTM0YzZlYmQwYjM0
ZWQxMWJlYjJmYjY0Li44MTQzZmFmYzM3YzFiYzQ4YTRjMGRlOGRmMTA5NmQ3MjM4ZTY1MDFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJk
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJv
YXJkR3RrLmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIu
aCIKICNpbmNsdWRlICJTZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCBkYTUxZGEwOWFkMTI3NDhjZjc5YTUwZjZjMzM0OTll
NTBhYTM1Yzg3Li4xYjg1OGVmOWRlZTU3YzIwNmJhM2UwYzczYWFkOGE4NjY5NmI4MjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTE5LDkgKzE5
LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQppbmRleCA5ZjY5MTRlYzQ4MWYxZGNhYWRhNzVkZjk2ZDFkNTcwMjU1ZmY3
MTUyLi40ZDY2OWYwMWExMzU5ZGE4YTQ3MzQ1ZWMzYzMyN2FkYjIzOWE5OTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMzUsMTAgKzM1LDEw
IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgi
CiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmlu
Z0V4dHJhcy5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNl
cy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCiBAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoTlNBdHRyaWJ1dGVkU3RyaW5nS2l0
QWRkaXRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZGE3ZjYyMTc3YWM4NTk2MDUzMTAxYjViODkxODJlMDIx
YTliMjZkYy4uZDdhZDQyNWRhYWI0NmY4MWI2OTk5Mzk4NzgzY2MyNTFmZTgyYmRiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tCkBAIC0zMiw5ICszMiw3IEBACiAjaW1wb3J0ICJJbWFnZS5oIgogI2ltcG9ydCAiUGFzdGVi
b2FyZC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBv
cnQgIlVUSVV0aWxpdGllcy5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1w
b3J0ICJXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2Vy
dmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUNvbG9yLmg+CkBA
IC00NCw2ICs0Miw4IEBACiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9y
dCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9y
dCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjZGVmaW5lIFBBU1RFQk9BUkRfU1VQUE9SVFNf
SVRFTV9QUk9WSURFUlMgKFBMQVRGT1JNKElPUykgJiYgIShQTEFURk9STShXQVRDSE9TKSB8fCBQ
TEFURk9STShBUFBMRVRWKSkpCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAg
IGF1dG8mIHBhc3RlYm9hcmRVUkwgPSBwYXN0ZWJvYXJkSW1hZ2UudXJsOwogICAgIGlmIChOU1VS
TCAqbnNVUkwgPSBwYXN0ZWJvYXJkVVJMLnVybCkgewogI2lmIE5TVVJMX1NVUFBPUlRTX1RJVExF
Ci0gICAgICAgIG5zVVJMLl90aXRsZSA9IHBhc3RlYm9hcmRVUkwudGl0bGUuaXNFbXB0eSgpID8g
dXNlclZpc2libGVTdHJpbmcocGFzdGVib2FyZFVSTC51cmwpIDogKE5TU3RyaW5nICopcGFzdGVi
b2FyZFVSTC50aXRsZTsKKyAgICAgICAgbnNVUkwuX3RpdGxlID0gcGFzdGVib2FyZFVSTC50aXRs
ZS5pc0VtcHR5KCkgPyBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRVUkwudXJsKSA6
IChOU1N0cmluZyAqKXBhc3RlYm9hcmRVUkwudGl0bGU7CiAjZW5kaWYKICAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0Om5zVVJMXTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgKaW5kZXggNDlkODExZDUxNDBj
OGZkMGFmMDE2MjlkOGQwYzFjOWU5ZTk5NGYxNy4uMGE2ZWZhZWYzZTg2MWVmNTlmZDQyODljZWY5
MTFjNzc4ZGE3MGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1
aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2suaApA
QCAtMzUsOCArMzUsNiBAQCBPQkpDX0NMQVNTIE5TVVJMUmVxdWVzdDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIFdFQkNPUkVfRVhQT1JUIE5TU2V0ICpRTFByZXZpZXdH
ZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUUxQ
cmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICopOwogV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAq
LCBOU1N0cmluZyAqbWltZVR5cGUsIE5TRGF0YSAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBkY2U3MzMzMWU3N2E4NzQ2OGI2NzExN2M0MzRiNGIw
YjgyMzJhOWViLi43MTZjMzY2NmI5YzRiY2U3MTM2MWY0YzA1MzgxZGMzYTlhM2JkMTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0zNiw2ICszNiw3
IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCA8
d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxN
b2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CkBAIC0yMTAsNyArMjExLDcg
QEAgU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgLy8gRklYTUU6IEl0
J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdlIGtub3cgLVtOU1VSTCBV
UkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxsIHRoZSBzYW1lIGNhc2Vz
IHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRpbmcgYW4gTlNVUkwuCiAg
ICAgaWYgKHRleHQuaXNVUkwpCi0gICAgICAgIHJldHVybiB1c2VyVmlzaWJsZVN0cmluZyhbTlNV
UkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsKKyAgICAgICAgcmV0dXJuIFdURjo6dXNlclZpc2li
bGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CiAKICAgICAvLyBGSVhNRTog
V1RGIHNob3VsZCBvZmZlciBhIG5vbi1NYWMtc3BlY2lmaWMgd2F5IHRvIGNvbnZlcnQgc3RyaW5n
IHRvIHByZWNvbXBvc2VkIGZvcm0gc28gd2UgY2FuIGRvIGl0IGZvciBhbGwgcGxhdGZvcm1zLgog
ICAgIHJldHVybiBbKE5TU3RyaW5nICopc3RyaW5nIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9u
aWNhbE1hcHBpbmddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Ry
YWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMu
bW0KaW5kZXggMjAxY2IzMzhiYmQ3ZGM3NTNiMzM1YTMwMDYyYzJiOTEyNmIxMTk0OS4uOWQ4YmI4
N2Y5YmUxN2JhMzU3MjQ3ZTA1NjljZTQ2NWZhNjY2YzFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC00MSwxMiArNDEsMTIgQEAKICNpbXBvcnQg
IlBhZ2UuaCIKICNpbXBvcnQgIlN0cmluZ1RydW5jYXRvci5oIgogI2ltcG9ydCAiVGV4dEluZGlj
YXRvci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJLaXROU0ltYWdlRXh0cmFzLmgi
CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9Db3JlVGV4dFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9VUkxGb3JtYXR0
aW5nU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2lmICFIQVZFKFVSTF9GT1JNQVRUSU5HKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTMwMAogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09QVElPTkFM
KExpbmtQcmVzZW50YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lz
dGVtTWFjLm1tCmluZGV4IDA3MWQwYzkxMTc3OTRlNjAzOGQ5OGFhZDU2ZmU5NmZmOGY0ODE1MzMu
LjhlZDc1MWE3ZWMwZTVkMGJhZjc3NGY5ODYxMGFjYjA0NWNkMmIwMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCkBAIC0yOCw4ICsyOCw4IEBACiAK
ICNpZiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2lt
cG9ydCA8cGFsL3NwaS9tYWMvTWV0YWRhdGFTUEkuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVS
TChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHIKIHsKICAg
ICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBl
ZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKLSAgICAgICAgdXJsU3RyaW5nID0gdXNl
clZpc2libGVTdHJpbmcoVVJMQnlSZW1vdmluZ1VzZXJJbmZvKHVybCkpOworICAgICAgICB1cmxT
dHJpbmcgPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMQnlSZW1vdmluZ1VzZXJJbmZv
KHVybCkpOwogICAgIGVsc2UKICAgICAgICAgdXJsU3RyaW5nID0gbWV0YWRhdGFVUkxTdHJpbmc7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXgg
M2MzNjdkYTQ4NDBjMGU0MmQzYTRhOTVjNzA2MTE1NTk2MTEzNDc2Mi4uOGE1YzI3NGNhNjRjMzkw
MjAwN2U4NzQ2YTQzZjViZmMzNjBkZGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTM3LDcgKzM3LDYgQEAKICNpbXBvcnQgIlBsYXRmb3Jt
UGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJT
aGFyZWRCdWZmZXIuaCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgPHBhbC9z
cGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC00NSw2ICs0NCw3IEBACiAjaW1wb3J0IDx3dGYv
UHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2ltcG9ydCA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRX
cml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bQppbmRleCA2YTI4ZmU2MmFjZWNkNTcyNjU4ZDAzM2QwY2Q5YzFhYzMxZWUwZTNkLi4wZmU1MDVk
ZTU1YzY2MTY0OGYwNTlkYTliN2ZhZTJhMDc3ZmM2MjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtNjMsMTAgKzYzLDEwIEBAIFJl
dGFpblB0cjxpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4+IGNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIo
Y29uc3QgUGFzdGVib2FyZFdyaXRlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoYXV0byYg
dXJsID0gZGF0YS51cmwoKSkgewotICAgICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmwtPnVybDsK
LSAgICAgICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nID0gdXJsLT51c2VyVmlzaWJsZUZv
cm07Ci0gICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IChOU1N0cmluZyAqKXVybC0+dGl0bGU7Cisg
ICAgaWYgKGF1dG8mIHVybERhdGEgPSBkYXRhLnVybERhdGEoKSkgeworICAgICAgICBOU1VSTCAq
Y29jb2FVUkwgPSB1cmxEYXRhLT51cmw7CisgICAgICAgIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0
cmluZyA9IHVybERhdGEtPnVzZXJWaXNpYmxlRm9ybTsKKyAgICAgICAgTlNTdHJpbmcgKnRpdGxl
ID0gKE5TU3RyaW5nICopdXJsRGF0YS0+dGl0bGU7CiAgICAgICAgIGlmICghdGl0bGUubGVuZ3Ro
KSB7CiAgICAgICAgICAgICB0aXRsZSA9IGNvY29hVVJMLnBhdGgubGFzdFBhdGhDb21wb25lbnQ7
CiAgICAgICAgICAgICBpZiAoIXRpdGxlLmxlbmd0aCkKQEAgLTc0LDcgKzc0LDcgQEAgUmV0YWlu
UHRyPGlkIDxOU1Bhc3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2FyZFdyaXRlcihjb25z
dCBQYXN0ZWJvYXJkV3JpdGUKICAgICAgICAgfQogCiAgICAgICAgIC8vIFdlYlVSTHNXaXRoVGl0
bGVzUGJvYXJkVHlwZS4KLSAgICAgICAgYXV0byBwYXRocyA9IGFkb3B0TlMoW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6QFsgQFsgY29jb2FVUkwuYWJzb2x1dGVTdHJpbmcgXSBdLCBA
WyB1cmwtPnRpdGxlLnN0cmlwV2hpdGVTcGFjZSgpIF0sIG5pbF0pOworICAgICAgICBhdXRvIHBh
dGhzID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpAWyBAWyBjb2Nv
YVVSTC5hYnNvbHV0ZVN0cmluZyBdIF0sIEBbIHVybERhdGEtPnRpdGxlLnN0cmlwV2hpdGVTcGFj
ZSgpIF0sIG5pbF0pOwogICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0UHJvcGVydHlMaXN0OnBh
dGhzLmdldCgpIGZvclR5cGU6dG9VVEkoQCJXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUiKS5n
ZXQoKV07CiAKICAgICAgICAgLy8gTlNVUkxQYm9hcmRUeXBlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggYjFkZmZi
NmNiN2U2NDI1NzQxYmQwYzZjMGU1M2I0ZWZkY2ZkYjE3MS4uMGNiMWRkOGI5MzBhMDY1YjdjMDgw
MTVjYTJlMGNlNWRiZDViMmI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbXBv
cnQgIkNvbG9yTWFjLmgiCiAjaW1wb3J0ICJMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oIgogI2lt
cG9ydCAiUGFzdGVib2FyZC5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZm
ZXIuaCIKICNpbXBvcnQgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2ltcG9ydCA8d3RmL0xpc3RI
YXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUHVibGljU3VmZml4TWFjLm1tCmluZGV4IDIzMDM4MTdmM2IyMTRmYWM1NGZlMGY0ZTI2
ZDA0OTMzM2I1MTA0MzUuLjAxOTZiNDE2ZWQ0MjViMTcwMGViY2U5YzBiYzFkYzhiNjYzMTM4Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQpA
QCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKIAotI2lt
cG9ydCAiVVJMLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgPHBh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1wb3J0IDx3
dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Myw3
ICs2Myw3IEBAIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGNvbnN0IFN0cmlu
ZyYgZG9tYWluKQogCiBTdHJpbmcgZGVjb2RlSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBkb21haW4p
CiB7Ci0gICAgcmV0dXJuIGRlY29kZUhvc3ROYW1lKChOU1N0cmluZyAqKShkb21haW4pKTsKKyAg
ICByZXR1cm4gV1RGOjpkZWNvZGVIb3N0TmFtZShkb21haW4pOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQppbmRleCBmYzQw
YWExOWIwNGMzYWUzNDcxODAyNzYzZjdkZjM4OWE3MjI4YzlkLi5iZDlkYTBkZDg2YWNjZDFkODRh
NmMzZmVkYTBiNDEyYTI2YWRmNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KQEAgLTI5LDEzICsyOSwxMyBAQAogI2lmIFBMQVRG
T1JNKE1BQykKIAogI2ltcG9ydCAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2ltcG9ydCAiVVJMLmgi
CiAjaW1wb3J0IDxTZWN1cml0eS9TZWNBc24xQ29kZXIuaD4KICNpbXBvcnQgPFNlY3VyaXR5L1Nl
Y0FzbjFUZW1wbGF0ZXMuaD4KICNpbXBvcnQgPFNlY3VyaXR5L1NlY0VuY29kZVRyYW5zZm9ybS5o
PgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9y
dCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5
U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVVJMTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjVjMWRlN2IwMjgz
Y2QwZGJkYmE1NmNhMTZmYWZjNWYzOWM1OGI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0K
KysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
VVJMLmgiCi0KLSNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJVUkxQYXJzZXIuaCIK
LSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgotI2ltcG9ydCA8d3RmL09iamNSdW50aW1l
RXh0cmFzLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLUBpbnRlcmZhY2UgTlNT
dHJpbmcgKFdlYkNvcmVOU1VSTEV4dHJhcykKLS0gKEJPT0wpX3dlYl9sb29rc0xpa2VJUEFkZHJl
c3M7Ci1AZW5kCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwoTlNVUkwgKnVybCkK
LXsKLSAgICBpZiAoIXVybCkgewotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBiYXNlIFVS
TCBoZXJlPwotICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXMoKF9fYnJpZGdl
IENGVVJMUmVmKXVybCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMu
ZGF0YSgpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotVVJMOjpvcGVyYXRv
ciBOU1VSTCAqKCkgY29uc3QKLXsKLSAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlkZ2Vk
IENGVVJMIGJlY2F1c2UgY3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdvdWxkIG5vdCBwcmVz
ZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5nLgotICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxpdHkgd2hl
biByb3VuZC10cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgotICAgIHJldHVybiBjcmVhdGVD
RlVSTCgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKLX0KLQotUmV0YWluUHRyPENGVVJMUmVmPiBV
Ukw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICAvLyBXZSB1c2Ug
dGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEg
Q0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KLSAgICAgICAg
cmV0dXJuIChfX2JyaWRnZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRo
U3RyaW5nOkAiIl0pLmdldCgpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZV
Ukw7Ci0KLSAgICAvLyBGYXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMgOC1iaXQgdG8gYXZv
aWQgY29weWluZyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KLSAgICBpZiAoTElLRUxZKG1fc3Ry
aW5nLmlzOEJpdCgpKSkKLSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSksIG1fc3Ry
aW5nLmxlbmd0aCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gU2xvd2VyIHBhdGguCi0gICAg
ICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOwotICAgICAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsK
LSAgICAgICAgY2ZVUkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7Ci0gICAgfQotCi0gICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAm
JiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICByZXR1cm4gY2ZVUkw7Ci19Ci0KLWJvb2wgVVJMOjpob3N0SXNJUEFk
ZHJlc3MoU3RyaW5nVmlldyBob3N0KQotewotICAgIHJldHVybiBbaG9zdC5jcmVhdGVOU1N0cmlu
Z1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkgX3dlYl9sb29rc0xpa2VJUEFkZHJlc3NdOwotfQotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0
cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmgK
aW5kZXggZmUxMDY4MTM0NWY1N2YzZjQxZjRkMGRhNzJjZTYxNjFkYmIwNjk0OC4uMWMwNzMyOWJl
OWViYjZmYjBhMjNjNWQyN2NkYTgwMmM0ZTgwMWUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaApAQCAtMjYsMjkgKzI2LDEwIEBACiAg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLUBjbGFzcyBOU1N0cmluZzsKIEBjbGFzcyBOU1VSTDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqdXNlclZpc2libGVT
dHJpbmcoTlNVUkwgKik7CiBXRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlDYW5vbmljYWxpemlu
Z1VSTChOU1VSTCAqKTsKLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3Ry
aW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBt
ZWFucyBlcnJvci4KLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8o
TlNVUkwgKik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhS
YW5nZShOU1N0cmluZyAqLCBOU1JhbmdlLCBCT09MKiBlcnJvcik7Ci1XRUJDT1JFX0VYUE9SVCBC
T09MIGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlLCBC
T09MKiBlcnJvcik7Ci1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWVXaXRo
UmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMg
ZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2Uo
TlNTdHJpbmcgKiwgTlNSYW5nZSk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3Iu
Ci1XRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8v
IFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmlu
ZyAqZW5jb2RlSG9zdE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVh
bnMgZXJyb3IuCi1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFj
dGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICosIENGVVJMQ29tcG9uZW50VHlwZSk7Ci1XRUJDT1JF
X0VYUE9SVCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICosIE5TVVJMICpiYXNlVVJMKTsKLVdF
QkNPUkVfRVhQT1JUIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOwotV0VCQ09SRV9F
WFBPUlQgTlNEYXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAqLCBDRlVSTENvbXBv
bmVudFR5cGUpOwotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdE
ZXByZWNhdGVkKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsKLQotTlNSYW5nZSByYW5nZU9m
VVJMU2NoZW1lKE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBpc1VzZXJWaXNpYmxl
VVJMKE5TU3RyaW5nICopOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBsb29rc0xpa2VBYnNvbHV0ZVVS
TChOU1N0cmluZyAqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KaW5kZXggY2UxYzk1NjNi
MGI1OWNhOTY0NTkzYWM2ZGM5OTdkNGM0NDYwYWEwYi4uMDQ0YzQyOTBkZGZlNWY1MDk4Mzg5MTgz
YThiYjQ5YWU0NzRhODBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBAIC0yNyw3ICsyNyw2IEBACiAgKi8KIAogI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJVUkxQYXJzZXIuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4
dHJhcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0
Zi9GdW5jdGlvbi5oPgpAQCAtMzksOTk5ICszOCw4IEBACiAjaW1wb3J0IDx1bmljb2RlL3VpZG5h
Lmg+CiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQuaD4KIAotLy8gTmVlZHMgdG8gYmUgYmlnIGVu
b3VnaCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCi0vLyBGb3IgaG9zdCBuYW1lcyBiaWdn
ZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBj
ZXJ0YWlubHkgT0suCi0jZGVmaW5lIEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RIIDIwNDgKLSNkZWZp
bmUgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEggMjA0OAotCi10eXBlZGVmIHZvaWQgKCogU3RyaW5n
UmFuZ2VBcHBsaWVyRnVuY3Rpb24pKE5TU3RyaW5nICosIE5TUmFuZ2UsIFJldGFpblB0cjxOU011
dGFibGVBcnJheT4mKTsKLQotc3RhdGljIHVpbnQzMl90IElETlNjcmlwdFdoaXRlTGlzdFsoVVND
UklQVF9DT0RFX0xJTUlUICsgMzEpIC8gMzJdOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBib29sIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIoVUNoYXIzMiBjb2RlUG9pbnQp
Ci17Ci0gICAgcmV0dXJuIGNvZGVQb2ludCA9PSAweDA1NDggfHwgY29kZVBvaW50ID09IDB4MDU0
RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQb2ludCA9PSAweDA1N0Q7Ci19Ci0KLXN0
YXRpYyBib29sIGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoVUNoYXIzMiBjb2RlUG9pbnQpCi17
Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBVU2NyaXB0Q29kZSBz
Y3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjb2RlUG9pbnQsICZlcnJvcik7Ci0gICAgaWYgKGVy
cm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICBMT0dfRVJST1IoImdvdCBJQ1UgZXJyb3Ig
d2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBlcnJvcik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2NyaXB0ID09IFVTQ1JJUFRfQVJNRU5J
QU47Ci19Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wg
aXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSBjaGFyQ29kZSkK
LXsKLSAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24oY2hhckNvZGUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGluZ3MgdGhlIFVSTCBQYXJzZXIgcmVqZWN0czoK
LSAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7Ci0gICAgY2FzZSAnIyc6Ci0gICAgY2FzZSAnJSc6Ci0g
ICAgY2FzZSAnLyc6Ci0gICAgY2FzZSAnOic6Ci0gICAgY2FzZSAnPyc6Ci0gICAgY2FzZSAnQCc6
Ci0gICAgY2FzZSAnWyc6Ci0gICAgY2FzZSAnXFwnOgotICAgIGNhc2UgJ10nOgotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
fQotCi0KLQotc3RhdGljIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0ZXIoc3RkOjpvcHRpb25hbDxV
Q2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjaGFyQ29kZSkKLXsKLSAgICAvLyBU
aGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVuc2FmZSwgbG9va2FsaWtlIGNo
YXJhY3RlcnM6Ci0gICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hhcmFjdGVyLCBhbnkgY2hhcmFj
dGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKLSAgICAvLyBhbnkgaWdub3JhYmxlIGNoYXJh
Y3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBsb2Nrcy4KLSAgICAKLSAgICAv
LyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4gTW96aWxsYSdzIGJsYWNrbGlz
dCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklETi5ibGFja2xpc3RfY2hhcnM+
LgotCi0gICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVycyBoZXJlIHdpbGwgbmV2ZXIgYXBwZWFy
IG9uY2UgSUNVIGhhcyBlbmNvZGVkLgotICAgIC8vIEZvciBleGFtcGxlLCBJQ1UgdHJhbnNmb3Jt
cyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNlIGFuZCBtb3N0Ci0gICAgLy8gc2xhc2hl
cyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUgb2YgdGhlIHR3byBjYWxsZXJzIHVzZXMg
dGhpcwotICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBoYXZlIG5vdCBiZWVuIHByb2Nlc3NlZCBi
eSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgotICAgIAotICAgIGlmICghdV9pc3ByaW50
KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hhckNvZGUpIHx8IHVfaGFzQmluYXJ5UHJv
cGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQpKQotICAg
ICAgICByZXR1cm4gWUVTOwotICAgIAotICAgIHN3aXRjaCAoY2hhckNvZGUpIHsKLSAgICAgICAg
Y2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUiAqLwotICAgICAgICBj
YXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGICovCi0gICAgICAgIGNhc2Ug
MHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMgKi8KLSAgICAgICAgY2Fz
ZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUgKi8KLSAgICAgICAg
Y2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBSRVRST0ZMRVggQ0xJQ0sgKi8KLSAgICAgICAg
Y2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBBTFBIQSAqLwotICAgICAgICBjYXNl
IDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBHICovCi0gICAgICAgIGNhc2Ug
MHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJQU5HVUxBUiBDT0xPTiAqLwotICAgICAgICBj
YXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JUIFNUUk9LRSBPVkVSTEFZICovCi0gICAgICAg
IGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQgU09MSURVUyBPVkVSTEFZICovCi0gICAg
ICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9WRVJMQVkgKi8KLSAg
ICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZVTEwgU1RPUCAqLwotICAgICAgICBjYXNl
IDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICovCi0gICAgICAgIGNhc2UgMHgwNUJDOiAv
KiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRICovCi0gICAgICAgIGNhc2UgMHgwNUMzOiAv
KiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRICovCi0gICAgICAgIGNhc2UgMHgwNUY0OiAv
KiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICovCi0gICAgICAgIGNhc2UgMHgwNjA5OiAv
KiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2MEE6IC8q
IEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2
NTA6IC8qIEFSQUJJQyBLQVNSQSAqLwotICAgICAgICBjYXNlIDB4MDY2MDogLyogQVJBQklDIElO
RElDIERJR0lUIFpFUk8gKi8KLSAgICAgICAgY2FzZSAweDA2NkE6IC8qIEFSQUJJQyBQRVJDRU5U
IFNJR04gKi8KLSAgICAgICAgY2FzZSAweDA2RDQ6IC8qIEFSQUJJQyBGVUxMIFNUT1AgKi8KLSAg
ICAgICAgY2FzZSAweDA2RjA6IC8qIEVYVEVOREVEIEFSQUJJQyBJTkRJQyBESUdJVCBaRVJPICov
Ci0gICAgICAgIGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMgU1VQUkFMSU5FQVIgRlVMTCBTVE9QICov
Ci0gICAgICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMgU1VCTElORUFSIEZVTEwgU1RPUCAqLwot
ICAgICAgICBjYXNlIDB4MDcwMzogLyogU1lSSUFDIFNVUFJBTElORUFSIENPTE9OICovCi0gICAg
ICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJQUMgU1VCTElORUFSIENPTE9OICovCi0gICAgICAgIGNh
c2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQVU5DVFVBVElPTiAqLwotICAgICAgICBj
YXNlIDB4MUQwNDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgQyAqLwotICAgICAgICBj
YXNlIDB4MUQwRjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTyAqLwotICAgICAgICBj
YXNlIDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVSAqLwotICAgICAgICBj
YXNlIDB4MUQyMDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgViAqLwotICAgICAgICBj
YXNlIDB4MUQyMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVyAqLwotICAgICAgICBj
YXNlIDB4MUQyMjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgWiAqLwotICAgICAgICBj
YXNlIDB4MUVDRDogLyogTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1QgQkVMT1cgKi8KLSAg
ICAgICAgY2FzZSAweDIwMTA6IC8qIEhZUEhFTiAqLwotICAgICAgICBjYXNlIDB4MjAxMTogLyog
Tk9OLUJSRUFLSU5HIEhZUEhFTiAqLwotICAgICAgICBjYXNlIDB4MjAyNDogLyogT05FIERPVCBM
RUFERVIgKi8KLSAgICAgICAgY2FzZSAweDIwMjc6IC8qIEhZUEhFTkFUSU9OIFBPSU5UICovCi0g
ICAgICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJ
T04gTUFSSyAqLwotICAgICAgICBjYXNlIDB4MjAzQTogLyogU0lOR0xFIFJJR0hULVBPSU5USU5H
IEFOR0xFIFFVT1RBVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHgyMDQxOiAvKiBDQVJFVCBJ
TlNFUlRJT04gUE9JTlQgKi8KLSAgICAgICAgY2FzZSAweDIwNDQ6IC8qIEZSQUNUSU9OIFNMQVNI
ICovCi0gICAgICAgIGNhc2UgMHgyMDUyOiAvKiBDT01NRVJDSUFMIE1JTlVTIFNJR04gKi8KLSAg
ICAgICAgY2FzZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgVEhJUkQgKi8KLSAgICAg
ICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08gVEhJUkRTICovCi0gICAgICAg
IGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEZJRlRIICovCi0gICAgICAgIGNh
c2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRIUyAqLwotICAgICAgICBjYXNl
IDB4MjE1NzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRIUyAqLwotICAgICAgICBjYXNl
IDB4MjE1ODogLyogVlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhTICovCi0gICAgICAgIGNhc2Ug
MHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIICovCi0gICAgICAgIGNhc2UgMHgy
MTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhUSFMgKi8KLSAgICAgICAgY2FzZSAweDIx
NUI6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFQgKi8KLSAgICAgICAgY2FzZSAweDIxNUM6
IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTVE
OiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTVF
OiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1
RjogLyogRlJBQ1RJT04gTlVNRVJBVE9SIE9ORSAqLwotICAgICAgICBjYXNlIDB4MjIxMjogLyog
TUlOVVMgU0lHTiAqLwotICAgICAgICBjYXNlIDB4MjIxNTogLyogRElWSVNJT04gU0xBU0ggKi8K
LSAgICAgICAgY2FzZSAweDIyMTY6IC8qIFNFVCBNSU5VUyAqLwotICAgICAgICBjYXNlIDB4MjIz
NjogLyogUkFUSU8gKi8KLSAgICAgICAgY2FzZSAweDIzM0Y6IC8qIEFQTCBGVU5DVElPTkFMIFNZ
TUJPTCBTTEFTSCBCQVIgKi8KLSAgICAgICAgY2FzZSAweDIzQUU6IC8qIElOVEVHUkFMIEVYVEVO
U0lPTiAqLwotICAgICAgICBjYXNlIDB4MjQ0QTogLyogT0NSIERPVUJMRSBCQUNLU0xBU0ggKi8K
LSAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQg
RElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLwotICAgICAgICBjYXNlIDB4MjU3
MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBVUFBFUiBMRUZU
IFRPIExPV0VSIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyOUY2OiAvKiBTT0xJRFVTIFdJVEgg
T1ZFUkJBUiAqLwotICAgICAgICBjYXNlIDB4MjlGODogLyogQklHIFNPTElEVVMgKi8KLSAgICAg
ICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFSWSBSRUxBVElPTiAqLwotICAg
ICAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BFUkFUT1IgKi8KLSAgICAgICAg
Y2FzZSAweDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRP
IFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyRkYxOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElP
TiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KLSAgICAgICAgY2FzZSAweDJGRjI6IC8qIElE
RU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIE1JRERMRSBBTkQgUklHSFQg
Ki8KLSAgICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJB
Q1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICovCi0gICAgICAgIGNhc2UgMHgyRkY0OiAv
KiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVMTCBTVVJST1VORCAqLwotICAg
ICAgICBjYXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNV
UlJPVU5EIEZST00gQUJPVkUgKi8KLSAgICAgICAgY2FzZSAweDJGRjY6IC8qIElERU9HUkFQSElD
IERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJFTE9XICovCi0gICAgICAgIGNh
c2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQg
RlJPTSBMRUZUICovCi0gICAgICAgIGNhc2UgMHgyRkY4OiAvKiBJREVPR1JBUEhJQyBERVNDUklQ
VElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZUICovCi0gICAgICAgIGNhc2Ug
MHgyRkY5OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJP
TSBVUFBFUiBSSUdIVCAqLwotICAgICAgICBjYXNlIDB4MkZGQTogLyogSURFT0dSQVBISUMgREVT
Q1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIgTEVGVCAqLwotICAgICAgICBj
YXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIE9WRVJMQUlE
ICovCi0gICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVPR1JBUEhJQyBGVUxMIFNUT1AgKi8KLSAg
ICAgICAgY2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUgQlJBQ0tFVCAqLwotICAgICAgICBjYXNl
IDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAgIGNhc2Ug
MHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAgIGNhc2Ug
MHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQUEVSIEhBTEYgKi8KLSAgICAg
ICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgTE9XRVIgSEFMRiAq
LwotICAgICAgICBjYXNlIDB4MzIxRDogLyogUEFSRU5USEVTSVpFRCBLT1JFQU4gQ0hBUkFDVEVS
IE9KRU9OICovCi0gICAgICAgIGNhc2UgMHgzMjFFOiAvKiBQQVJFTlRIRVNJWkVEIEtPUkVBTiBD
SEFSQUNURVIgTyBIVSAqLwotICAgICAgICBjYXNlIDB4MzNBRTogLyogU1FVQVJFIFJBRCBPVkVS
IFMgKi8KLSAgICAgICAgY2FzZSAweDMzQUY6IC8qIFNRVUFSRSBSQUQgT1ZFUiBTIFNRVUFSRUQg
Ki8KLSAgICAgICAgY2FzZSAweDMzQzY6IC8qIFNRVUFSRSBDIE9WRVIgS0cgKi8KLSAgICAgICAg
Y2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9WRVIgTSAqLwotICAgICAgICBjYXNlIDB4MDVCOTog
LyogSEVCUkVXIFBPSU5UIEhPTEFNICovCi0gICAgICAgIGNhc2UgMHgwNUJBOiAvKiBIRUJSRVcg
UE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZBViAqLwotICAgICAgICBjYXNlIDB4MDVDMTogLyogSEVC
UkVXIFBPSU5UIFNISU4gRE9UICovCi0gICAgICAgIGNhc2UgMHgwNUMyOiAvKiBIRUJSRVcgUE9J
TlQgU0lOIERPVCAqLwotICAgICAgICBjYXNlIDB4MDVDNDogLyogSEVCUkVXIE1BUksgVVBQRVIg
RE9UICovCi0gICAgICAgIGNhc2UgMHhBNzMxOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRB
TCBTICovCi0gICAgICAgIGNhc2UgMHhBNzcxOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgRFVNICov
Ci0gICAgICAgIGNhc2UgMHhBNzg5OiAvKiBNT0RJRklFUiBMRVRURVIgQ09MT04gKi8KLSAgICAg
ICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBTRU1JQ09M
T04gKi8KLSAgICAgICAgY2FzZSAweEZFMTU6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJU
SUNBTCBFWENMQU1BVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHhGRTNGOiAvKiBQUkVTRU5U
QVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFDS0VUICovCi0gICAgICAgIGNh
c2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KLSAgICAg
ICAgY2FzZSAweEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8K
LSAgICAgICAgY2FzZSAweEZGMEU6IC8qIEZVTExXSURUSCBGVUxMIFNUT1AgKi8KLSAgICAgICAg
Y2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09MSURVUyAqLwotICAgICAgICBjYXNlIDB4RkY2
MTogLyogSEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwgU1RPUCAqLwotICAgICAgICBjYXNlIDB4
RkZGQzogLyogT0JKRUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAqLwotICAgICAgICBjYXNlIDB4
RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCi0gICAgICAgIGNhc2UgMHgxRjUwRjog
LyogTE9DSyBXSVRIIElOSyBQRU4gKi8KLSAgICAgICAgY2FzZSAweDFGNTEwOiAvKiBDTE9TRUQg
TE9DSyBXSVRIIEtFWSAqLwotICAgICAgICBjYXNlIDB4MUY1MTE6IC8qIEtFWSAqLwotICAgICAg
ICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sgKi8KLSAgICAgICAgY2FzZSAweDFGNTEzOiAvKiBPUEVO
IExPQ0sgKi8KLSAgICAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgICAgIGNhc2UgMHgwMzA3OiAv
KiBDT01CSU5JTkcgRE9UIEFCT1ZFICovCi0gICAgICAgICAgICByZXR1cm4gcHJldmlvdXNDb2Rl
UG9pbnQgPT0gMHgwMjM3IC8qIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogKi8KLSAgICAg
ICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAxMzEgLyogTEFUSU4gU01BTEwg
TEVUVEVSIERPVExFU1MgSSAqLwotICAgICAgICAgICAgICAgIHx8IHByZXZpb3VzQ29kZVBvaW50
ID09IDB4MDVENTsgLyogSEVCUkVXIExFVFRFUiBWQVYgKi8KLSAgICAgICAgY2FzZSAweDA1NDg6
IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPICovCi0gICAgICAgIGNhc2UgMHgwNTREOiAv
KiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUggKi8KLSAgICAgICAgY2FzZSAweDA1Nzg6IC8q
IEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLwotICAgICAgICBjYXNlIDB4MDU3RDogLyogQVJN
RU5JQU4gU01BTEwgTEVUVEVSIFNFSCAqLwotICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29k
ZVBvaW50Ci0gICAgICAgICAgICAgICAgJiYgIWlzQVNDSUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFj
dGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCi0gICAgICAgICAgICAgICAgJiYgIWlzQXJt
ZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUoKSk7Ci0gICAgICAg
IGNhc2UgJy4nOgotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50Ci0gICAgICAgICAgICAgICAgJiYgaXNB
cm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgpKQotICAg
ICAgICAgICAgICAgICYmICEoaXNBcm1lbmlhblNjcmlwdENoYXJhY3RlcihjaGFyQ29kZSkgfHwg
aXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoY2hhckNvZGUpKTsKLSAgICB9Ci19Ci0K
LXN0YXRpYyB2b2lkIHdoaXRlTGlzdElETlNjcmlwdChjb25zdCBjaGFyKiBzY3JpcHROYW1lKQot
ewotICAgIGludDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9wZXJ0eVZhbHVlRW51bShVQ0hBUl9TQ1JJ
UFQsIHNjcmlwdE5hbWUpOwotICAgIGlmIChzY3JpcHQgPj0gMCAmJiBzY3JpcHQgPCBVU0NSSVBU
X0NPREVfTElNSVQpIHsKLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc2NyaXB0IC8gMzI7Ci0gICAg
ICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7Ci0gICAgICAgIElETlNjcmlw
dFdoaXRlTGlzdFtpbmRleF0gfD0gbWFzazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBCT09MIHJlYWRJ
RE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpmaWxlbmFtZSkKLXsKLSAgICBpZiAoIWZp
bGVuYW1lKQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICBGSUxFICpmaWxlID0gZm9wZW4oW2Zp
bGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICJyIik7Ci0gICAgaWYgKCFmaWxlKQot
ICAgICAgICByZXR1cm4gTk87Ci0gICAgCi0gICAgLy8gUmVhZCBhIHdvcmQgYXQgYSB0aW1lLgot
ICAgIC8vIEFsbG93IGNvbW1lbnRzLCBzdGFydGluZyB3aXRoICMgY2hhcmFjdGVyIHRvIHRoZSBl
bmQgb2YgdGhlIGxpbmUuCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgLy8gU2tpcCBhIGNvbW1l
bnQgaWYgcHJlc2VudC4KLSAgICAgICAgaWYgKGZzY2FuZihmaWxlLCAiICMlKlteXG5ccl0lKltc
blxyXSIpID09IEVPRikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgLy8g
UmVhZCBhIHNjcmlwdCBuYW1lIGlmIHByZXNlbnQuCi0gICAgICAgIGNoYXIgd29yZFszM107Ci0g
ICAgICAgIGludCByZXN1bHQgPSBmc2NhbmYoZmlsZSwgIiAlMzJbXiMgXHRcblxyXSUqW14jIFx0
XG5ccl0gIiwgd29yZCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gRU9GKQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVzdWx0ID09IDEpIHsKLSAgICAgICAgICAg
IC8vIEdvdCBhIHdvcmQsIG1hcCB0byBzY3JpcHQgY29kZSBhbmQgcHV0IGl0IGludG8gdGhlIGFy
cmF5LgotICAgICAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHdvcmQpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGZjbG9zZShmaWxlKTsKLSAgICByZXR1cm4gWUVTOwotfQotCi1zdGF0aWMgQk9P
TCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29uc3QgVUNoYXIgKmJ1ZmZlciwg
aW50MzJfdCBsZW5ndGgpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBmbGFnOwotICAg
IGRpc3BhdGNoX29uY2UoJmZsYWcsIF57Ci0gICAgICAgIC8vIFJlYWQgd2hpdGUgbGlzdCBmcm9t
IGxpYnJhcnkuCi0gICAgICAgIE5TQXJyYXkgKmRpcnMgPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rv
cmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxsRG9tYWluc01hc2ssIFlFUyk7
Ci0gICAgICAgIGludCBudW1EaXJzID0gW2RpcnMgY291bnRdOwotICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG51bURpcnM7IGkrKykgewotICAgICAgICAgICAgaWYgKHJlYWRJRE5TY3JpcHRX
aGl0ZUxpc3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGNoYXIqIGRlZmF1bHRJRE5TY3JpcHRX
aGl0ZUxpc3RbMjBdID0gewotICAgICAgICAgICAgIkNvbW1vbiIsCi0gICAgICAgICAgICAiSW5o
ZXJpdGVkIiwKLSAgICAgICAgICAgICJBcmFiaWMiLAotICAgICAgICAgICAgIkFybWVuaWFuIiwK
LSAgICAgICAgICAgICJCb3BvbW9mbyIsCi0gICAgICAgICAgICAiQ2FuYWRpYW5fQWJvcmlnaW5h
bCIsCi0gICAgICAgICAgICAiRGV2YW5hZ2FyaSIsCi0gICAgICAgICAgICAiRGVzZXJldCIsCi0g
ICAgICAgICAgICAiR3VqYXJhdGkiLAotICAgICAgICAgICAgIkd1cm11a2hpIiwKLSAgICAgICAg
ICAgICJIYW5ndWwiLAotICAgICAgICAgICAgIkhhbiIsCi0gICAgICAgICAgICAiSGVicmV3IiwK
LSAgICAgICAgICAgICJIaXJhZ2FuYSIsCi0gICAgICAgICAgICAiS2F0YWthbmFfT3JfSGlyYWdh
bmEiLAotICAgICAgICAgICAgIkthdGFrYW5hIiwKLSAgICAgICAgICAgICJMYXRpbiIsCi0gICAg
ICAgICAgICAiVGFtaWwiLAotICAgICAgICAgICAgIlRoYWkiLAotICAgICAgICAgICAgIllpIiwK
LSAgICAgICAgfTsKLSAgICAgICAgZm9yIChjb25zdCBjaGFyKiBzY3JpcHROYW1lIDogZGVmYXVs
dElETlNjcmlwdFdoaXRlTGlzdCkKLSAgICAgICAgICAgIHdoaXRlTGlzdElETlNjcmlwdChzY3Jp
cHROYW1lKTsKLSAgICB9KTsKLSAgICAKLSAgICBpbnQzMl90IGkgPSAwOwotICAgIHN0ZDo6b3B0
aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgd2hpbGUgKGkgPCBsZW5ndGgp
IHsKLSAgICAgICAgVUNoYXIzMiBjOwotICAgICAgICBVMTZfTkVYVChidWZmZXIsIGksIGxlbmd0
aCwgYykKLSAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICAgICAg
VVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQoYywgJmVycm9yKTsKLSAgICAg
ICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJn
b3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNjcmlwdHM6ICVkIiwgZXJyb3Ip
OwotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICB9Ci0gICAgICAgIGlmIChzY3JpcHQg
PCAwKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoImdvdCBuZWdhdGl2ZSBudW1iZXIgZm9yIHNj
cmlwdCBjb2RlIGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7Ci0gICAgICAgICAgICByZXR1cm4gTk87
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNjcmlwdCA+PSBVU0NSSVBUX0NPREVfTElNSVQpCi0g
ICAgICAgICAgICByZXR1cm4gTk87Ci0KLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc2NyaXB0IC8g
MzI7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7Ci0gICAgICAg
IGlmICghKElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gJiBtYXNrKSkKLSAgICAgICAgICAgIHJl
dHVybiBOTzsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3RlcihwcmV2
aW91c0NvZGVQb2ludCwgYykpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0gICAgICAgIHByZXZp
b3VzQ29kZVBvaW50ID0gYzsKLSAgICB9Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotc3RhdGljIGJv
b2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBVQ2hhciog
YnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKFVDaGFyKT4m
IGNoYXJhY3RlcklzQWxsb3dlZCkKLXsKLSAgICBBU1NFUlQobGVuZ3RoID4gMCk7Ci0KLSAgICBm
b3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIFVDaGFy
IGNoID0gYnVmZmVyW2ldOwotICAgICAgICAKLSAgICAgICAgaWYgKGNoYXJhY3RlcklzQWxsb3dl
ZChjaCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIE9ubHkg
Y2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExvd2VyIGxldmVsIHJlZ2lzdHJhcnMgbWF5
IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgotICAgICAgICBpZiAoY2ggPT0gJy4nKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOwotfQotCi0jZGVmaW5lIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKHN1
ZmZpeCwgZnVuY3Rpb24pIFwKLSAgICB7IFwKLSAgICAgICAgc3RhdGljIGNvbnN0IGludDMyX3Qg
c3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yoc3VmZml4WzBdKTsgXAotICAg
ICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYmIDAgPT0gbWVtY21wKGJ1ZmZlciArIGxl
bmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXplb2Yoc3VmZml4KSkpIFwKLSAgICAgICAg
ICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGJ1ZmZl
ciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlvbik7IFwKLSAgICB9Ci0KLXN0YXRpYyBi
b29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNoYXIgY2gpCi17Ci0gICAgLy8gT25s
eSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4K
LSAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1
MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLX0KLQotc3RhdGljIEJPT0wgYWxs
Q2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFyKiBidWZmZXIsIGludDMyX3Qg
bGVuZ3RoKQotewotICAgIC8vIFNraXAgdHJhaWxpbmcgZG90IGZvciByb290IGRvbWFpbi4KLSAg
ICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFdID09ICcuJykKLSAgICAgICAgbGVuZ3RoLS07Ci0KLSAg
ICAvLyBodHRwOi8vY2N0bGQucnUvZmlsZXMvcGRmL2RvY3MvcnVsZXNfcnUtcmYucGRmCi0gICAg
c3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAg
ICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0NDQgIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBFRgotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VG
RklYX01BVENIRVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0K
LSAgICAvLyBodHRwOi8vcnVzbmFtZXMucnUvcnVsZXMucGwKLSAgICBzdGF0aWMgY29uc3QgVUNo
YXIgY3lyaWxsaWNSVVNbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0NDAsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBVCi0gICAgICAgIDB4MDQ0MSAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0g
ICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1JVUywgaXNS
dXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vcnUuZmFpdGlkLm9y
Zy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2YS9pZG4KLSAgICBzdGF0aWMgY29uc3Qg
VUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0M0Ms
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAweDA0M0UsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IEVTCi0gICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAg
IDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCi0gICAgICAgIDB4MDQzMCAgLy8g
Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJ
WF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZBLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsK
LQotICAgIC8vIGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9mb3J1c2VyL2RvY3MvcmVncnVsZXMucGhw
Ci0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljREVUSVtdID0gewotICAgICAgICAnLics
Ci0gICAgICAgIDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCi0gICAgICAgIDB4
MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCi0gICAgICAgIDB4MDQ0MiwgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIFRFCi0gICAgICAgIDB4MDQzOCAgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEkKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmls
bGljREVUSSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8v
Y29yZW5pYy5vcmcgLSBydWxlcyBub3QgcHVibGlzaGVkLiBUaGUgd29yZCBpcyBSdXNzaWFuLCBz
byBvbmx5IGFsbG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0aW1lLAotICAgIC8vIGFsdGhvdWdoIHdl
IG1heSBuZWVkIHRvIHJldmlzZSB0aGUgY2hlY2tzIGlmIHRoaXMgZW5kcyB1cCBiZWluZyB1c2Vk
IHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBSdXNzaWEuCi0gICAgc3RhdGljIGNvbnN0
IFVDaGFyIGN5cmlsbGljT05MQVlOW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNF
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0M0QsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBFTgotICAgICAgICAweDA0M0IsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBFTAotICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAgICAg
IDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKLSAgICAgICAgMHgwNDNE
ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT05MQVlOLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFj
dGVyKTsKLQotICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHNhbWUgYXMgYWJvdmUuCi0gICAg
c3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU0FZVFtdID0gewotICAgICAgICAnLicsCi0gICAg
ICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4MDQzMCwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICAgICAgMHgwNDM5LCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgU0hPUlQgSQotICAgICAgICAweDA0NDIgIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBURQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxs
aWNTQVlULCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9w
aXIub3JnL3Byb2R1Y3RzL29wci1kb21haW4vIC0gcnVsZXMgbm90IHB1Ymxpc2hlZC4gQWNjb3Jk
aW5nIHRvIHRoZSByZWdpc3RyeSBzaXRlLAotICAgIC8vIHRoZSBpbnRlbmRlZCBhdWRpZW5jZSBp
cyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xhdmljLXNwZWFraW5nIG1hcmtldHMiLgotICAgIC8vIENo
cm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lhbiwgc28gc3RpY2tpbmcgd2l0aCB0aGF0
IGZvciBub3cuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT1JHW10gPSB7Ci0gICAg
ICAgICcuJywKLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAg
ICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDA0MzMg
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVy
KTsKLQotICAgIC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxlcy5odG1sCi0gICAgc3RhdGljIGNvbnN0
IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDMxLCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICAgICAgMHgwNDM1LCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgSUUKLSAgICAgICAgMHgwNDNCICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
RUwKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljQkVM
LCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBSdXNzaWFuIGFuZCBCeWVsb3J1c3NpYW4gbGV0
dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2gg
Pj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09IDB4MDQ1
NiB8fCBjaCA9PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwg
Y2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gaHR0cDovL3d3dy5uaWMua3ovZG9jcy9wb3J5
YWRva192bmVkcmVuaXlhX2thel9ydS5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxs
aWNLQVpbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0OUIsIC8vIENZUklMTElDIFNN
QUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDA0MzAsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBBCi0gICAgICAgIDB4MDQzNyAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IFpFCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0tB
WiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gS2F6YWtoIGxldHRlcnMsIGRpZ2l0cyBhbmQg
ZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8
PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0RDkgfHwgY2ggPT0gMHgwNDkz
IHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09
IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0gMHgwNEJCIHx8IGNoID09IDB4MDQ1NiB8
fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIGh0dHA6
Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1bGVzJTIwb2YlMjBVS1JfdjQuMC5wZGYK
LSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNVS1JbXSA9IHsKLSAgICAgICAgJy4nLAot
ICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCi0gICAgICAgIDB4MDQz
QSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAgIDB4MDQ0MCAgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIEVSCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFU
Q0hFUyhjeXJpbGxpY1VLUiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gUnVzc2lhbiBhbmQg
VWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAg
ICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8
fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAw
eDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAv
LyBodHRwOi8vd3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1FTlRJL2lkbi1zcmItcG9saWN5LXRlcm1z
b2Z1c2UtdjEuNC1lbmcucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU1JCW10g
PSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgRVMKLSAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKLSAgICAg
ICAgMHgwNDMxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICB9OwotICAgIENIRUNL
X1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU1JCLCBbXShVQ2hhciBjaCkgewotICAg
ICAgICAvLyBTZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgot
ICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAw
eDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTIgfHwgY2ggPT0gMHgwNDU4IHx8
IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0gMHgwNDVCIHx8IGNoID09IDB4
MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8v
IGh0dHA6Ly9tYXJuZXQubWsvZG9jL3ByYXZpbG5pay1tay1ta2QucGRmCi0gICAgc3RhdGljIGNv
bnN0IFVDaGFyIGN5cmlsbGljTUtEW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDND
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KLSAgICAgICAgMHgwNDNBLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwNDM0ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgREUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGlj
TUtELCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBNYWNlZG9uaWFuIGxldHRlcnMsIGRpZ2l0
cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAm
JiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9
PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1IHx8IGNoID09IDB4MDQ1OCB8fCBjaCA9PSAweDA0NTkg
fHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8fCBjaCA9PSAweDA0NUYgfHwgaXNBU0NJ
SURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwczovL3d3dy5t
b24ubW4vY3MvCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTU9OW10gPSB7Ci0gICAg
ICAgICcuJywKLSAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KLSAg
ICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDA0M0Qg
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZf
U1VGRklYX01BVENIRVMoY3lyaWxsaWNNT04sIFtdKFVDaGFyIGNoKSB7Ci0gICAgICAgIC8vIE1v
bmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICAgICAg
cmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwg
Y2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRBRiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09
ICctJzsKLSAgICB9KTsKLQotICAgIC8vIE5vdCBhIGtub3duIHRvcCBsZXZlbCBkb21haW4gd2l0
aCBzcGVjaWFsIHJ1bGVzLgotICAgIHJldHVybiBOTzsKLX0KLQotLy8gUmV0dXJuIHZhbHVlIG9m
IG5pbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1ha2VTdHJpbmcgaXMg
Tk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwgb3Igc2VsZiB0byBpbmRpY2F0ZSBt
YXBwaW5nIGlzIG5lY2Vzc2FyeS4KLS8vIElmIG1ha2VTdHJpbmcgaXMgWUVTLCB0aGVuIHJldHVy
biB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBwZWQgc3RyaW5nLgotc3RhdGljIE5TU3Ry
aW5nICptYXBIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdl
LCBCT09MIGVuY29kZSwgQk9PTCBtYWtlU3RyaW5nLCBCT09MICplcnJvcikKLXsKLSAgICBpZiAo
cmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgCi0gICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgCi0gICAgVUNoYXIgc291cmNlQnVmZmVyW0hPU1RfTkFNRV9CVUZGRVJfTEVOR1RIXTsK
LSAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NUX05BTUVfQlVGRkVSX0xFTkdUSF07Ci0g
ICAgCi0gICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCIlIiBvcHRpb25z
Ok5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkgewot
ICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6
cmFuZ2VdOwotICAgICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0
ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgKENGU3RyaW5nUmVmKXN1
YnN0cmluZywgQ0ZTVFIoIiIpKSk7Ci0gICAgICAgIGlmIChzdWJzdHJpbmcpIHsKLSAgICAgICAg
ICAgIHN0cmluZyA9IHN1YnN0cmluZzsKLSAgICAgICAgICAgIHJhbmdlID0gTlNNYWtlUmFuZ2Uo
MCwgW3N0cmluZyBsZW5ndGhdKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpbnQgbGVu
Z3RoID0gcmFuZ2UubGVuZ3RoOwotICAgIFtzdHJpbmcgZ2V0Q2hhcmFjdGVyczpzb3VyY2VCdWZm
ZXIgcmFuZ2U6cmFuZ2VdOwotICAgIAotICAgIFVFcnJvckNvZGUgdWVycm9yID0gVV9aRVJPX0VS
Uk9SOwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElB
TElaRVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gKGVuY29kZSA/IHVp
ZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5pY29kZSkoJlVSTFBhcnNlcjo6aW50ZXJu
YXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksIHNvdXJjZUJ1ZmZlciwgbGVuZ3RoLCBkZXN0
aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgsICZwcm9jZXNzaW5nRGV0YWls
cywgJnVlcnJvcik7Ci0gICAgaWYgKGxlbmd0aCAmJiAoVV9GQUlMVVJFKHVlcnJvcikgfHwgcHJv
Y2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkgewotICAgICAgICAqZXJyb3IgPSBZRVM7Ci0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgfQotICAgIAotICAgIGlmIChudW1DaGFyYWN0ZXJzQ29udmVydGVk
ID09IGxlbmd0aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZlciwgZGVzdGluYXRpb25CdWZmZXIsIGxl
bmd0aCAqIHNpemVvZihVQ2hhcikpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlm
ICghZW5jb2RlICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoZGVzdGluYXRp
b25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpICYmICFhbGxDaGFyYWN0ZXJzQWxsb3dl
ZEJ5VExEUnVsZXMoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBtYWtlU3RyaW5nID8gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0aW9uQnVmZmVyIGxlbmd0aDpudW1DaGFy
YWN0ZXJzQ29udmVydGVkXSA6IHN0cmluZzsKLX0KLQotQk9PTCBob3N0TmFtZU5lZWRzRGVjb2Rp
bmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCAqZXJyb3Ip
Ci17Ci0gICAgcmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIE5PLCBO
TywgZXJyb3IpICE9IG5pbDsKLX0KLSAKLUJPT0wgaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJh
bmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQotewotICAg
IHJldHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBZRVMsICBOTywgZXJy
b3IpICE9IG5pbDsKLX0KLQotTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3Ry
aW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAg
IE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgTk8s
IFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
cmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcgKmVuY29kZUhvc3RO
YW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgQk9P
TCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uo
c3RyaW5nLCByYW5nZSwgWUVTLCBZRVMsICZlcnJvcik7Ci0gICAgaWYgKGVycm9yKQotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Ci19Ci0KLU5T
U3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQotewotICAgIEJPT0wgZXJy
b3IgPSBOTzsKLSAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmlu
ZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgTk8sIFlFUywgJmVycm9yKTsKLSAg
ICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3Ry
aW5nIDogaG9zdDsKLX0KLQotTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJp
bmcpCi17Ci0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9z
dE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pLCBZ
RVMsIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9zdDsKLX0KLQotc3RhdGljIHZvaWQgY29sbGVj
dFJhbmdlc1RoYXROZWVkTWFwcGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSwgQk9PTCBlbmNvZGUpCi17Ci0gICAgLy8g
R2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGVyZSBp
cyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3QgbmVlZCBtYXBwaW5nLgotICAgIC8vIFRoZXJl
Zm9yZSwgd2UgdXNlIG5pbCB0byBpbmRpY2F0ZSBubyBtYXBwaW5nIGhlcmUgYW5kIGFuIGVtcHR5
IGFycmF5IHRvIGluZGljYXRlIGVycm9yLgotCi0gICAgQk9PTCBlcnJvciA9IE5POwotICAgIEJP
T0wgbmVlZHNNYXBwaW5nID0gZW5jb2RlID8gaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdl
KHN0cmluZywgcmFuZ2UsICZlcnJvcikgOiBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2Uo
c3RyaW5nLCByYW5nZSwgJmVycm9yKTsKLSAgICBpZiAoIWVycm9yICYmICFuZWVkc01hcHBpbmcp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIWFycmF5KQotICAgICAgICBhcnJheSA9
IGFkb3B0TlMoW05TTXV0YWJsZUFycmF5IG5ld10pOwotCi0gICAgaWYgKCFlcnJvcikKLSAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpyYW5nZV1dOwotfQot
Ci1zdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyhOU1N0cmluZyAqc3Ry
aW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKLXsK
LSAgICByZXR1cm4gY29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyhzdHJpbmcsIHJhbmdlLCBh
cnJheSwgWUVTKTsKLX0KLQotc3RhdGljIHZvaWQgY29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2Rp
bmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiYgYXJyYXkpCi17Ci0gICAgcmV0dXJuIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmco
c3RyaW5nLCByYW5nZSwgYXJyYXksIE5PKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbHlIb3N0TmFt
ZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywgU3RyaW5nUmFuZ2VB
cHBsaWVyRnVuY3Rpb24gZiwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCi17Ci0g
ICAgLy8gSW4gYSBtYWlsdG86IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVyIGEgJ0AnIGNoYXJh
Y3RlciBhbmQgZW5kIHdpdGggYSAnPicgb3IgJywnIG9yICc/JyBjaGFyYWN0ZXIuCi0gICAgLy8g
U2tpcCBxdW90ZWQgc3RyaW5ncyBzbyB0aGF0IGNoYXJhY3RlcnMgaW4gdGhlbSBkb24ndCBjb25m
dXNlIHVzLgotICAgIC8vIFdoZW4gd2UgZmluZCBhICc/JyBjaGFyYWN0ZXIsIHdlIGFyZSBwYXN0
IHRoZSBwYXJ0IG9mIHRoZSBVUkwgdGhhdCBjb250YWlucyBob3N0IG5hbWVzLgotICAgIAotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBob3N0TmFt
ZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdp
dGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJcIkA/Il07Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3ROYW1lRW5kQ2hhcmFjdGVycyA9IFtOU0No
YXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiPiw/Il07Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IHF1b3Rl
ZFN0cmluZ0NoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJh
Y3RlcnNJblN0cmluZzpAIlwiXFwiXTsKLSAgICAKLSAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGgg
PSBbc3RyaW5nIGxlbmd0aF07Ci0gICAgTlNSYW5nZSByZW1haW5pbmcgPSBOU01ha2VSYW5nZSgw
LCBzdHJpbmdMZW5ndGgpOwotICAgIAotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIC8vIEZpbmQg
c3RhcnQgb2YgaG9zdCBuYW1lIG9yIG9mIHF1b3RlZCBzdHJpbmcuCi0gICAgICAgIE5TUmFuZ2Ug
aG9zdE5hbWVPclN0cmluZ1N0YXJ0ID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpo
b3N0TmFtZU9yU3RyaW5nU3RhcnRDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5n
ZTpyZW1haW5pbmddOwotICAgICAgICBpZiAoaG9zdE5hbWVPclN0cmluZ1N0YXJ0LmxvY2F0aW9u
ID09IE5TTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdW5pY2hhciBj
ID0gW3N0cmluZyBjaGFyYWN0ZXJBdEluZGV4Omhvc3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlv
bl07Ci0gICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoaG9zdE5hbWVPclN0
cmluZ1N0YXJ0KTsKLSAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xlbmd0aCAtIHJl
bWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09ICc/JykKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIGlmIChjID09ICdAJykgewotICAgICAg
ICAgICAgLy8gRmluZCBlbmQgb2YgaG9zdCBuYW1lLgotICAgICAgICAgICAgdW5zaWduZWQgaG9z
dE5hbWVTdGFydCA9IHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAgIE5TUmFuZ2UgaG9z
dE5hbWVFbmQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Omhvc3ROYW1lRW5kQ2hh
cmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5nXTsKLSAgICAgICAg
ICAgIEJPT0wgZG9uZTsKLSAgICAgICAgICAgIGlmIChob3N0TmFtZUVuZC5sb2NhdGlvbiA9PSBO
U05vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgaG9zdE5hbWVFbmQubG9jYXRpb24gPSBzdHJp
bmdMZW5ndGg7Ci0gICAgICAgICAgICAgICAgZG9uZSA9IFlFUzsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gaG9zdE5hbWVFbmQubG9j
YXRpb247Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0cmluZ0xlbmd0aCAt
IHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICBkb25lID0gTk87Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFByb2Nlc3MgaG9zdCBuYW1lIHJh
bmdlLgotICAgICAgICAgICAgZihzdHJpbmcsIE5TTWFrZVJhbmdlKGhvc3ROYW1lU3RhcnQsIGhv
c3ROYW1lRW5kLmxvY2F0aW9uIC0gaG9zdE5hbWVTdGFydCksIGFycmF5KTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgaWYgKGRvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5nLgotICAgICAgICAg
ICAgQVNTRVJUKGMgPT0gJyInKTsKLSAgICAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAg
ICAgICAgTlNSYW5nZSBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBbc3RyaW5nIHJhbmdl
T2ZDaGFyYWN0ZXJGcm9tU2V0OnF1b3RlZFN0cmluZ0NoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0
aW9uczowIHJhbmdlOnJlbWFpbmluZ107Ci0gICAgICAgICAgICAgICAgaWYgKGVzY2FwZWRDaGFy
YWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBjID0gW3N0cmluZyBjaGFyYWN0ZXJBdElu
ZGV4OmVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZC5sb2NhdGlvbl07Ci0gICAgICAgICAgICAg
ICAgcmVtYWluaW5nLmxvY2F0aW9uID0gTlNNYXhSYW5nZShlc2NhcGVkQ2hhcmFjdGVyT3JTdHJp
bmdFbmQpOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGgg
LSByZW1haW5pbmcubG9jYXRpb247Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
Ly8gSWYgd2UgYXJlIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgdGhlbiBicmVhayBmcm9tIHRoZSBz
dHJpbmcgbG9vcCBiYWNrIHRvIHRoZSBob3N0IG5hbWUgbG9vcC4KLSAgICAgICAgICAgICAgICBp
ZiAoYyA9PSAnIicpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIC8vIFNraXAgZXNjYXBlZCBjaGFyYWN0ZXIuCi0gICAgICAgICAg
ICAgICAgQVNTRVJUKGMgPT0gJ1xcJyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZW1haW5pbmcu
bGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBy
ZW1haW5pbmcubG9jYXRpb24gKz0gMTsKLSAgICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3Ro
IC09IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lk
IGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIFN0cmlu
Z1JhbmdlQXBwbGllckZ1bmN0aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5
KQotewotICAgIC8vIEZpbmQgaG9zdG5hbWVzLiBUb28gYmFkIHdlIGNhbid0IHVzZSBhbnkgcmVh
bCBVUkwtcGFyc2luZyBjb2RlIHRvIGRvIHRoaXMsCi0gICAgLy8gYnV0IHdlIGhhdmUgdG8gZG8g
aXQgYmVmb3JlIGRvaW5nIGFsbCB0aGUgJS1lc2NhcGluZywgYW5kIHRoaXMgaXMgdGhlIG9ubHkK
LSAgICAvLyBjb2RlIHdlIGhhdmUgdGhhdCBwYXJzZXMgbWFpbHRvIFVSTHMgYW55d2F5LgotICAg
IAotICAgIC8vIE1heWJlIHdlIHNob3VsZCBpbXBsZW1lbnQgdGhpcyB1c2luZyBhIGNoYXJhY3Rl
ciBidWZmZXIgaW5zdGVhZD8KLSAgICAKLSAgICBpZiAocHJvdG9jb2xJcyhzdHJpbmcsICJtYWls
dG8iKSkgewotICAgICAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyhz
dHJpbmcsIGYsIGFycmF5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICAvLyBG
aW5kIHRoZSBob3N0IG5hbWUgaW4gYSBoaWVyYXJjaGljYWwgVVJMLgotICAgIC8vIEl0IGNvbWVz
IGFmdGVyIGEgIjovLyIgc2VxdWVuY2UsIHdpdGggc2NoZW1lIGNoYXJhY3RlcnMgcHJlY2VkaW5n
LgotICAgIC8vIElmIGVuZHMgd2l0aCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgYSAiOiIsICIv
Iiwgb3IgYSAiPyIuCi0gICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFjdGVyLCB0aGUgaG9z
dCBwYXJ0IGlzIGp1c3QgdGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KLSAgICBOU1JhbmdlIHNlcGFy
YXRvclJhbmdlID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiOi8vIl07Ci0gICAgaWYgKHNlcGFy
YXRvclJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICAvLyBDaGVjayB0aGF0IGFsbCBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgOi8vIGFyZSB2YWxp
ZCBzY2hlbWUgY2hhcmFjdGVycy4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TQ2hhcmFjdGVyU2V0Pj4gbm9uU2NoZW1lQ2hhcmFjdGVycyA9IFtbTlNDaGFyYWN0ZXJTZXQg
Y2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIkFCQ0RFRkdISUpLTE1OT1BRUlNU
VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky0uIl0gaW52ZXJ0ZWRT
ZXRdOwotICAgIGlmIChbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0Om5vblNjaGVtZUNo
YXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAsIHNlcGFy
YXRvclJhbmdlLmxvY2F0aW9uKV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IFtzdHJpbmcgbGVuZ3RoXTsK
LSAgICAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0
Pj4gaG9zdFRlcm1pbmF0b3JzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFy
YWN0ZXJzSW5TdHJpbmc6QCI6Lz8jIl07Ci0gICAgCi0gICAgLy8gU3RhcnQgYWZ0ZXIgdGhlIHNl
cGFyYXRvci4KLSAgICB1bnNpZ25lZCBhdXRob3JpdHlTdGFydCA9IE5TTWF4UmFuZ2Uoc2VwYXJh
dG9yUmFuZ2UpOwotICAgIAotICAgIC8vIEZpbmQgdGVybWluYXRpbmcgY2hhcmFjdGVyLgotICAg
IE5TUmFuZ2UgaG9zdE5hbWVUZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJv
bVNldDpob3N0VGVybWluYXRvcnMuZ2V0KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJh
bmdlKGF1dGhvcml0eVN0YXJ0LCBzdHJpbmdMZW5ndGggLSBhdXRob3JpdHlTdGFydCldOwotICAg
IHVuc2lnbmVkIGhvc3ROYW1lRW5kID0gaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uID09IE5T
Tm90Rm91bmQgPyBzdHJpbmdMZW5ndGggOiBob3N0TmFtZVRlcm1pbmF0b3IubG9jYXRpb247Ci0g
ICAgCi0gICAgLy8gRmluZCAiQCIgZm9yIHRoZSBzdGFydCBvZiB0aGUgaG9zdCBuYW1lLgotICAg
IE5TUmFuZ2UgdXNlckluZm9UZXJtaW5hdG9yID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiQCIg
b3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKGF1dGhvcml0eVN0YXJ0LCBob3N0TmFtZUVuZCAt
IGF1dGhvcml0eVN0YXJ0KV07Ci0gICAgdW5zaWduZWQgaG9zdE5hbWVTdGFydCA9IHVzZXJJbmZv
VGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8gYXV0aG9yaXR5U3RhcnQgOiBOU01h
eFJhbmdlKHVzZXJJbmZvVGVybWluYXRvcik7Ci0gICAgCi0gICAgcmV0dXJuIGYoc3RyaW5nLCBO
U01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZCAtIGhvc3ROYW1lU3RhcnQpLCBh
cnJheSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IG1hcEhvc3ROYW1lcyhOU1N0
cmluZyAqc3RyaW5nLCBCT09MIGVuY29kZSkKLXsKLSAgICAvLyBHZW5lcmFsbHksIHdlIHdhbnQg
dG8gb3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIG9uZSBob3N0IG5hbWUgdGhh
dCBkb2VzIG5vdCBuZWVkIG1hcHBpbmcuCi0gICAgCi0gICAgaWYgKGVuY29kZSAmJiBbc3RyaW5n
IGNhbkJlQ29udmVydGVkVG9FbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddKQotICAgICAg
ICByZXR1cm4gc3RyaW5nOwotICAgIAotICAgIC8vIE1ha2UgYSBsaXN0IG9mIHJhbmdlcyB0aGF0
IGFjdHVhbGx5IG5lZWQgbWFwcGluZy4KLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGhv
c3ROYW1lUmFuZ2VzOwotICAgIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYgPSBlbmNvZGUg
PyBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRFbmNvZGluZyA6IGNvbGxlY3RSYW5nZXNUaGF0TmVlZERl
Y29kaW5nOwotICAgIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKHN0cmluZywgZiwg
aG9zdE5hbWVSYW5nZXMpOwotICAgIGlmICghaG9zdE5hbWVSYW5nZXMpCi0gICAgICAgIHJldHVy
biBzdHJpbmc7Ci0KLSAgICBpZiAoIVtob3N0TmFtZVJhbmdlcyBjb3VudF0pCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgCi0gICAgLy8gRG8gdGhlIG1hcHBpbmcuCi0gICAgYXV0byBtdXRhYmxl
Q29weSA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwotICAgIHVuc2lnbmVkIGkgPSBb
aG9zdE5hbWVSYW5nZXMgY291bnRdOwotICAgIHdoaWxlIChpLS0pIHsKLSAgICAgICAgTlNSYW5n
ZSBob3N0TmFtZVJhbmdlID0gW1tob3N0TmFtZVJhbmdlcyBvYmplY3RBdEluZGV4OmldIHJhbmdl
VmFsdWVdOwotICAgICAgICBOU1N0cmluZyAqbWFwcGVkSG9zdE5hbWUgPSBlbmNvZGUgPyBlbmNv
ZGVIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIGhvc3ROYW1lUmFuZ2UpIDogZGVjb2RlSG9zdE5h
bWVXaXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKTsKLSAgICAgICAgW211dGFibGVDb3B5
IHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpob3N0TmFtZVJhbmdlIHdpdGhTdHJpbmc6bWFwcGVk
SG9zdE5hbWVdOwotICAgIH0KLSAgICByZXR1cm4gbXV0YWJsZUNvcHk7Ci19Ci0KLXN0YXRpYyBS
ZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKE5TU3RyaW5nICpz
dHJpbmcpCi17Ci0gICAgYXV0byB0cmltbWVkID0gYWRvcHROUyhbc3RyaW5nIG11dGFibGVDb3B5
XSk7Ci0gICAgQ0ZTdHJpbmdUcmltV2hpdGVzcGFjZSgoX19icmlkZ2UgQ0ZNdXRhYmxlU3RyaW5n
UmVmKXRyaW1tZWQuZ2V0KCkpOwotICAgIHJldHVybiB0cmltbWVkOwotfQotCi1OU1VSTCAqVVJM
QnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICpVUkwsIENGVVJM
Q29tcG9uZW50VHlwZSBjb21wb25lbnQpCi17Ci0gICAgaWYgKCFVUkwpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgCi0gICAgQ0ZSYW5nZSBmcmFnUmcgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNv
bXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIG51bGxwdHIpOwotICAg
IGlmIChmcmFnUmcubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgIHJldHVybiBVUkw7
Ci0KLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiB1cmxCeXRlcyhV
UkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBudW1CeXRlcyA9IENGVVJMR2V0
Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCB1cmxCeXRlcy5z
aXplKCkpOwotICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBudW1CeXRlcyA9IENG
VVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Ci0gICAgICAg
IHVybEJ5dGVzLmdyb3cobnVtQnl0ZXMpOwotICAgICAgICBDRlVSTEdldEJ5dGVzKChfX2JyaWRn
ZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOwotICAgIH0KLQotICAg
IENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVz
LmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxs
cHRyKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRo
Qnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZT
dHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgIAotICAgIHJldHVybiBy
ZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOwotfQotCi1zdGF0aWMgTlNV
UkwgKlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihOU1VSTCAqVVJMKQotewotICAgIHJl
dHVybiBVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoVVJMLCBrQ0ZV
UkxDb21wb25lbnRSZXNvdXJjZVNwZWNpZmllcik7Ci19Ci0KLU5TVVJMICpVUkxXaXRoRGF0YShO
U0RhdGEgKmRhdGEsIE5TVVJMICpiYXNlVVJMKQotewotICAgIGlmICghZGF0YSkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICAKLSAgICBOU1VSTCAqcmVzdWx0ID0gbmlsOwotICAgIHNpemVfdCBs
ZW5ndGggPSBbZGF0YSBsZW5ndGhdOwotICAgIGlmIChsZW5ndGggPiAwKSB7Ci0gICAgICAgIC8v
IHdvcmsgYXJvdW5kIDxyZGFyOi8vNDQ3MDc3MT46IENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRo
Qnl0ZXMoLi4sIFRSVUUpIGRvZXNuJ3QgcmVtb3ZlIG5vbi1wYXRoIGNvbXBvbmVudHMuCi0gICAg
ICAgIGJhc2VVUkwgPSBVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoYmFzZVVSTCk7Ci0g
ICAgICAgIAotICAgICAgICBjb25zdCBVSW50OCAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBV
SW50OCo+KFtkYXRhIGJ5dGVzXSk7Ci0gICAgICAgIAotICAgICAgICAvLyBDRlVSTENyZWF0ZUFi
c29sdXRlVVJMV2l0aEJ5dGVzIHdvdWxkIGNvbXBsYWluIHRvIGNvbnNvbGUgaWYgd2UgcGFzc2Vk
IGEgcGF0aCB0byBpdC4KLSAgICAgICAgaWYgKGJ5dGVzWzBdID09ICcvJyAmJiAhYmFzZVVSTCkK
LSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICAvLyBOT1RFOiBXZSB1
c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hlbiBjb21wdXRpbmcg
c3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAgICAgICAvLyAoZS5nIGNh
bGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9sZXJh
bnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgICAgIC8vIGNvdWxkIGVp
dGhlciBiZSBhIG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZmZXJlbnQgZW5jb2Rp
bmcsIGxpa2Ugc2hpZnQtamlzLCBzbyB3ZSBmYWxsIGJhY2sKLSAgICAgICAgLy8gb250byB1c2lu
ZyBJU08gTGF0aW4gMSBpbiB0aG9zZSBjYXNlcy4KLSAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2lu
Z1JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBieXRlcywg
bGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBDRlVSTFJlZiliYXNlVVJM
LCBZRVMpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXN1bHQgPSBDRkJy
aWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5
dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoX19icmlkZ2UgQ0ZVUkxS
ZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFtOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotc3RhdGljIE5TRGF0
YSAqZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICBOU0Rh
dGEgKnVzZXJUeXBlZERhdGEgPSBbc3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXTsKLSAgICBBU1NFUlQodXNlclR5cGVkRGF0YSk7Ci0gICAgCi0gICAgY29uc3Qg
VUludDgqIGluQnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBVSW50OCAqPihbdXNlclR5cGVkRGF0
YSBieXRlc10pOwotICAgIGludCBpbkxlbmd0aCA9IFt1c2VyVHlwZWREYXRhIGxlbmd0aF07Ci0g
ICAgaWYgKCFpbkxlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBjaGFyKiBv
dXRCeXRlcyA9IHN0YXRpY19jYXN0PGNoYXIgKj4obWFsbG9jKGluTGVuZ3RoICogMykpOyAvLyBs
YXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0gICAgY2hhciogcCA9IG91
dEJ5dGVzOwotICAgIGludCBvdXRMZW5ndGggPSAwOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
aW5MZW5ndGg7IGkrKykgewotICAgICAgICBVSW50OCBjID0gaW5CeXRlc1tpXTsKLSAgICAgICAg
aWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKLSAgICAgICAgICAgICpwKysgPSAnJSc7Ci0g
ICAgICAgICAgICAqcCsrID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAg
ICAgICAqcCsrID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICBv
dXRMZW5ndGggKz0gMzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpwKysgPSBjOwot
ICAgICAgICAgICAgb3V0TGVuZ3RoKys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0
dXJuIFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpvdXRCeXRlcyBsZW5ndGg6b3V0TGVuZ3Ro
XTsgLy8gYWRvcHRzIG91dEJ5dGVzCi19Ci0KLU5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5n
KE5TU3RyaW5nICpzdHJpbmcsIE5TVVJMICpuc1VSTCkKLXsKLSAgICBpZiAoIXN0cmluZykKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGF1dG8gbWFwcGVkU3RyaW5nID0gbWFwSG9zdE5hbWVz
KHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCksIFlFUyk7Ci0gICAgaWYg
KCFtYXBwZWRTdHJpbmcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAvLyBMZXQncyBjaGVj
ayB3aGV0aGVyIHRoZSBVUkwgaXMgYm9ndXMuCi0gICAgVVJMIHVybCB7IFVSTCB7IG5zVVJMIH0s
IG1hcHBlZFN0cmluZy5nZXQoKSB9OwotICAgIGlmICghdXJsLmNyZWF0ZUNGVVJMKCkpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NjA1NwotICAgIC8vIFdlIHNob3VsZCBiZSBhYmxlIHRvIHVzZSB1
cmwuY3JlYXRlQ0ZVUkwgaW5zdGVhZCBvZiB1c2luZyBkaXJlY3RseSBDRlVSTCBwYXJzaW5nIHJv
dXRpbmVzLgotICAgIE5TRGF0YSAqZGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKG1hcHBl
ZFN0cmluZy5nZXQoKSk7Ci0gICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gW05TVVJMIFVS
TFdpdGhTdHJpbmc6QCIiXTsKLQotICAgIHJldHVybiBVUkxXaXRoRGF0YShkYXRhLCBuc1VSTCk7
Ci19Ci0KLU5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChOU1N0cmluZyAq
c3RyaW5nLCBOU1VSTCAqVVJMKQotewotICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4g
bmlsOwotCi0gICAgTlNVUkwgKnJlc3VsdCA9IFVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoc3RyaW5n
LCBVUkwpOwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIE5TRGF0YSAqcmVzdWx0RGF0YSA9
IGRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZyk7Ci0gICAgICAgIGlmICghcmVzdWx0RGF0
YSkKLSAgICAgICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwotICAgICAg
ICByZXN1bHQgPSBVUkxXaXRoRGF0YShyZXN1bHREYXRhLCBVUkwpOwotICAgIH0KLQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBCT09MIGhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0
cmluZyhOU1VSTCAqVVJMKQotewotICAgIENGUmFuZ2UgcmFuZ2VXaXRoU2VwYXJhdG9yczsKLSAg
ICBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBr
Q0ZVUkxDb21wb25lbnRRdWVyeSwgJnJhbmdlV2l0aFNlcGFyYXRvcnMpOwotICAgIGlmIChyYW5n
ZVdpdGhTZXBhcmF0b3JzLmxvY2F0aW9uICE9IGtDRk5vdEZvdW5kICYmIHJhbmdlV2l0aFNlcGFy
YXRvcnMubGVuZ3RoID09IDEpCi0gICAgICAgIHJldHVybiBZRVM7Ci0KLSAgICByZXR1cm4gTk87
Ci19Ci0KLU5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKlVSTCwgQ0ZVUkxD
b21wb25lbnRUeXBlIGNvbXBvbmVudFR5cGUpCi17Ci0gICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllU
RVNfQlVGRkVSX0xFTkdUSD4gYWxsQnl0ZXNCdWZmZXIoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgp
OwotICAgIENGSW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVS
TFJlZilVUkwsIGFsbEJ5dGVzQnVmZmVyLmRhdGEoKSwgYWxsQnl0ZXNCdWZmZXIuc2l6ZSgpKTsK
LSAgICBpZiAoYnl0ZXNGaWxsZWQgPT0gLTEpIHsKLSAgICAgICAgQ0ZJbmRleCBieXRlc1RvQWxs
b2NhdGUgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDAp
OwotICAgICAgICBhbGxCeXRlc0J1ZmZlci5ncm93KGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAg
IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBhbGxC
eXRlc0J1ZmZlci5kYXRhKCksIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgfQotICAgIAotICAgIGNv
bnN0IENGVVJMQ29tcG9uZW50VHlwZSBjb21wbGV0ZVVSTCA9IChDRlVSTENvbXBvbmVudFR5cGUp
LTE7Ci0gICAgQ0ZSYW5nZSByYW5nZTsKLSAgICBpZiAoY29tcG9uZW50VHlwZSAhPSBjb21wbGV0
ZVVSTCkgewotICAgICAgICByYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChf
X2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudFR5cGUsIG51bGxwdHIpOwotICAgICAgICBp
ZiAocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4gbmls
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJhbmdlLmxvY2F0aW9uID0gMDsKLSAgICAgICAgcmFu
Z2UubGVuZ3RoID0gYnl0ZXNGaWxsZWQ7Ci0gICAgfQotICAgIAotICAgIE5TRGF0YSAqY29tcG9u
ZW50RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczphbGxCeXRlc0J1ZmZlci5kYXRhKCkgKyBy
YW5nZS5sb2NhdGlvbiBsZW5ndGg6cmFuZ2UubGVuZ3RoXTsgCi0gICAgCi0gICAgY29uc3QgdW5z
aWduZWQgY2hhciAqYnl0ZXMgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtj
b21wb25lbnREYXRhIGJ5dGVzXSk7Ci0gICAgTlNNdXRhYmxlRGF0YSAqcmVzdWx0RGF0YSA9IFtO
U011dGFibGVEYXRhIGRhdGFdOwotICAgIC8vIE5PVEU6IGFkZCBsZWFkaW5nICc/JyB0byBxdWVy
eSBzdHJpbmdzIG5vbi16ZXJvIGxlbmd0aCBxdWVyeSBzdHJpbmdzLgotICAgIC8vIE5PVEU6IHJl
dGFpbiBxdWVzdGlvbi1tYXJrIG9ubHkgcXVlcnkgc3RyaW5ncy4KLSAgICBpZiAoY29tcG9uZW50
VHlwZSA9PSBrQ0ZVUkxDb21wb25lbnRRdWVyeSkgewotICAgICAgICBpZiAocmFuZ2UubGVuZ3Ro
ID4gMCB8fCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoVVJMKSkKLSAgICAgICAgICAg
IFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOiI/IiBsZW5ndGg6MV07ICAgIAotICAgIH0KLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IHJhbmdlLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVk
IGNoYXIgYyA9IGJ5dGVzW2ldOwotICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPj0gMHg3Zikg
ewotICAgICAgICAgICAgY2hhciBlc2NhcGVkWzNdOwotICAgICAgICAgICAgZXNjYXBlZFswXSA9
ICclJzsKLSAgICAgICAgICAgIGVzY2FwZWRbMV0gPSB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdp
dChjKTsKLSAgICAgICAgICAgIGVzY2FwZWRbMl0gPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdp
dChjKTsKLSAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmVzY2FwZWQgbGVuZ3Ro
OjNdOyAgICAKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNoYXIgYlsxXTsKLSAgICAg
ICAgICAgIGJbMF0gPSBjOwotICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0ZXM6YiBs
ZW5ndGg6MV07ICAgIAotICAgICAgICB9ICAgICAgICAgICAgICAgCi0gICAgfQotICAgIAotICAg
IHJldHVybiByZXN1bHREYXRhOwotfQotCi1zdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdDb21w
b25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlw
ZSBjb21wb25lbnQpCi17Ci0gICAgQ0ZSYW5nZSByYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9y
Q29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwgMCk7Ci0gICAgaWYg
KHJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQotICAgICAgICByZXR1cm4gVVJMOwotICAg
IAotICAgIC8vIFJlbW92ZSBvbmUgc3Vic2VxdWVudCBjaGFyYWN0ZXIuCi0gICAgcmFuZ2UubGVu
Z3RoKys7Ci0KLSAgICBWZWN0b3I8VUludDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBidWZm
ZXIoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwotICAgIENGSW5kZXggbnVtQnl0ZXMgPSBDRlVS
TEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOwotICAgIGlmIChudW1CeXRlcyA9PSAtMSkgewotICAgICAgICBudW1CeXRlcyA9IENG
VVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Ci0gICAgICAg
IGJ1ZmZlci5ncm93KG51bUJ5dGVzKTsKLSAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2Ug
Q0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBudW1CeXRlcyk7Ci0gICAgfQotICAgIFVJbnQ4
KiB1cmxCeXRlcyA9IGJ1ZmZlci5kYXRhKCk7Ci0gICAgICAgIAotICAgIGlmIChudW1CeXRlcyA8
IHJhbmdlLmxvY2F0aW9uKQotICAgICAgICByZXR1cm4gVVJMOwotICAgIGlmIChudW1CeXRlcyA8
IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKQotICAgICAgICByYW5nZS5sZW5ndGggPSBu
dW1CeXRlcyAtIHJhbmdlLmxvY2F0aW9uOwotICAgICAgICAKLSAgICBtZW1tb3ZlKHVybEJ5dGVz
ICsgcmFuZ2UubG9jYXRpb24sIHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5n
dGgsIG51bUJ5dGVzIC0gcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpOwotICAgIAotICAg
IENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVz
LCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRy
KTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0
ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdF
bmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgCi0gICAgcmV0dXJu
IHJlc3VsdCA/IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7Ci19Ci0KLU5TVVJMICpV
UkxCeVJlbW92aW5nVXNlckluZm8oTlNVUkwgKlVSTCkKLXsKLSAgICByZXR1cm4gVVJMQnlSZW1v
dmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoVVJMLCBrQ0ZVUkxDb21wb25lbnRV
c2VySW5mbyk7Ci19Ci0KIE5TVVJMICpVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKE5TVVJMICpVUkwp
CiB7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VS
TFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOlVSTF0pOwpAQCAtMTA0OSwyMDMgKzU3LDQgQEAg
TlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoTlNVUkwgKlVSTCkKICAgICByZXR1cm4gW1tu
ZXdVUkwgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLU5TRGF0YSAqb3JpZ2luYWxVUkxEYXRh
KE5TVVJMICpVUkwpCi17Ci0gICAgVUludDggKmJ1ZmZlciA9IChVSW50OCAqKW1hbGxvYyhVUkxf
QllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBieXRlc0ZpbGxlZCA9IENGVVJMR2V0
Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLCBVUkxfQllURVNfQlVGRkVSX0xF
TkdUSCk7Ci0gICAgaWYgKGJ5dGVzRmlsbGVkID09IC0xKSB7Ci0gICAgICAgIENGSW5kZXggYnl0
ZXNUb0FsbG9jYXRlID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxs
cHRyLCAwKTsKLSAgICAgICAgYnVmZmVyID0gKFVJbnQ4ICopcmVhbGxvYyhidWZmZXIsIGJ5dGVz
VG9BbGxvY2F0ZSk7Ci0gICAgICAgIGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlk
Z2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIsIGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgICAgIEFTU0VS
VChieXRlc0ZpbGxlZCA9PSBieXRlc1RvQWxsb2NhdGUpOwotICAgIH0KLSAgICAKLSAgICAvLyBi
dWZmZXIgaXMgYWRvcHRlZCBieSB0aGUgTlNEYXRhCi0gICAgTlNEYXRhICpkYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzTm9Db3B5OmJ1ZmZlciBsZW5ndGg6Ynl0ZXNGaWxsZWQgZnJlZVdoZW5E
b25lOllFU107Ci0gICAgCi0gICAgTlNVUkwgKmJhc2VVUkwgPSAoX19icmlkZ2UgTlNVUkwgKilD
RlVSTEdldEJhc2VVUkwoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCk7Ci0gICAgaWYgKGJhc2VVUkwp
Ci0gICAgICAgIHJldHVybiBvcmlnaW5hbFVSTERhdGEoVVJMV2l0aERhdGEoZGF0YSwgYmFzZVVS
TCkpOwotICAgIHJldHVybiBkYXRhOwotfQotCi1zdGF0aWMgQ0ZTdHJpbmdSZWYgY3JlYXRlU3Ry
aW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKENGU3RyaW5nUmVmIHN0cmluZykKLXsKLSAg
ICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7Ci0gICAgVmVjdG9y
PFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gc291cmNlQnVmZmVyKGxlbmd0aCk7Ci0g
ICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwg
c291cmNlQnVmZmVyLmRhdGEoKSk7Ci0gICAgCi0gICAgVmVjdG9yPFVDaGFyLCBVUkxfQllURVNf
QlVGRkVSX0xFTkdUSD4gb3V0QnVmZmVyOwotICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIz
Mj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgQ0ZJbmRleCBpID0gMDsKLSAgICB3aGlsZSAoaSA8
IGxlbmd0aCkgewotICAgICAgICBVQ2hhcjMyIGM7Ci0gICAgICAgIFUxNl9ORVhUKHNvdXJjZUJ1
ZmZlciwgaSwgbGVuZ3RoLCBjKQotICAgICAgICAKLSAgICAgICAgaWYgKGlzTG9va2FsaWtlQ2hh
cmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LCBjKSkgewotICAgICAgICAgICAgdWludDhfdCB1dGY4
QnVmZmVyWzRdOwotICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOwotICAgICAgICAgICAg
VUJvb2wgZmFpbHVyZSA9IGZhbHNlOwotICAgICAgICAgICAgVThfQVBQRU5EKHV0ZjhCdWZmZXIs
IG9mZnNldCwgNCwgYywgZmFpbHVyZSkKLSAgICAgICAgICAgIEFTU0VSVCghZmFpbHVyZSk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8IG9mZnNldDsg
KytqKSB7Ci0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCgnJScpOwotICAgICAgICAg
ICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1
ZmZlcltqXSkpOwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQobG93ZXJOaWJibGVU
b0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgVUNoYXIgdXRmMTZCdWZmZXJbMl07Ci0gICAgICAgICAgICBD
RkluZGV4IG9mZnNldCA9IDA7Ci0gICAgICAgICAgICBVQm9vbCBmYWlsdXJlID0gZmFsc2U7Ci0g
ICAgICAgICAgICBVMTZfQVBQRU5EKHV0ZjE2QnVmZmVyLCBvZmZzZXQsIDIsIGMsIGZhaWx1cmUp
Ci0gICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOwotICAgICAgICAgICAgZm9yIChDRkluZGV4
IGogPSAwOyBqIDwgb2Zmc2V0OyArK2opCi0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVu
ZCh1dGYxNkJ1ZmZlcltqXSk7Ci0gICAgICAgIH0KLSAgICAgICAgcHJldmlvdXNDb2RlUG9pbnQg
PSBjOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVy
cyhudWxscHRyLCBvdXRCdWZmZXIuZGF0YSgpLCBvdXRCdWZmZXIuc2l6ZSgpKTsKLX0KLQotTlNT
dHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCi17Ci0gICAgTlNEYXRhICpkYXRh
ID0gb3JpZ2luYWxVUkxEYXRhKFVSTCk7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmVmb3Jl
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KFtkYXRhIGJ5dGVzXSk7Ci0gICAg
aW50IGxlbmd0aCA9IFtkYXRhIGxlbmd0aF07Ci0gICAgCi0gICAgYm9vbCBtYXlOZWVkSG9zdE5h
bWVEZWNvZGluZyA9IGZhbHNlOwotICAgIAotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSBi
ZWZvcmU7Ci0gICAgaW50IGJ1ZmZlckxlbmd0aCA9IChsZW5ndGggKiAzKSArIDE7Ci0gICAgVmVj
dG9yPGNoYXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBhZnRlcihidWZmZXJMZW5ndGgpOyAv
LyBsYXJnZSBlbm91Z2ggdG8gJS1lc2NhcGUgZXZlcnkgY2hhcmFjdGVyCi0gICAgY2hhciAqcSA9
IGFmdGVyLmRhdGEoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07Ci0gICAgICAgIC8vIHVuZXNjYXBlIGVzY2Fw
ZSBzZXF1ZW5jZXMgdGhhdCBpbmRpY2F0ZSBieXRlcyBncmVhdGVyIHRoYW4gMHg3ZgotICAgICAg
ICBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kg
KyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAyXSkpIHsK
LSAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAxXSwgcFtpICsgMl0p
OwotICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7Ci0gICAgICAgICAgICAgICAgLy8gdW5lc2Nh
cGUKLSAgICAgICAgICAgICAgICAqcSsrID0gdTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgLy8gZG8gbm90IHVuZXNjYXBlCi0gICAgICAgICAgICAgICAgKnErKyA9IHBb
aV07Ci0gICAgICAgICAgICAgICAgKnErKyA9IHBbaSArIDFdOwotICAgICAgICAgICAgICAgICpx
KysgPSBwW2kgKyAyXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpxKysgPSBjOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICAvLyBDaGVjayBmb3IgInhuLS0iIGluIGFuIGVmZmljaWVudCwgbm9uLWNhc2Utc2Vuc2l0
aXZlLCB3YXkuCi0gICAgICAgICAgICBpZiAoYyA9PSAnLScgJiYgaSA+PSAzICYmICFtYXlOZWVk
SG9zdE5hbWVEZWNvZGluZyAmJiAocVstNF0gfCAweDIwKSA9PSAneCcgJiYgKHFbLTNdIHwgMHgy
MCkgPT0gJ24nICYmIHFbLTJdID09ICctJykKLSAgICAgICAgICAgICAgICBtYXlOZWVkSG9zdE5h
bWVEZWNvZGluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgKnEgPSAnXDAnOwotICAg
IAotICAgIC8vIENoZWNrIHN0cmluZyB0byBzZWUgaWYgaXQgY2FuIGJlIGNvbnZlcnRlZCB0byBk
aXNwbGF5IHVzaW5nIFVURi04ICAKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHJlc3VsdCA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOwotICAgIGlmICghcmVz
dWx0KSB7Ci0gICAgICAgIC8vIENvdWxkIG5vdCBjb252ZXJ0IHRvIFVURi04LgotICAgICAgICAv
LyBDb252ZXJ0IGNoYXJhY3RlcnMgZ3JlYXRlciB0aGFuIDB4N2YgdG8gZXNjYXBlIHNlcXVlbmNl
cy4KLSAgICAgICAgLy8gU2hpZnQgY3VycmVudCBzdHJpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYnVm
ZmVyCi0gICAgICAgIC8vIHRoZW4gd2Ugd2lsbCBjb3B5IGJhY2sgYnl0ZXMgdG8gdGhlIHN0YXJ0
IG9mIHRoZSBidWZmZXIgCi0gICAgICAgIC8vIGFzIHdlIGNvbnZlcnQuCi0gICAgICAgIGludCBh
ZnRlcmxlbmd0aCA9IHEgLSBhZnRlci5kYXRhKCk7Ci0gICAgICAgIGNoYXIgKnAgPSBhZnRlci5k
YXRhKCkgKyBidWZmZXJMZW5ndGggLSBhZnRlcmxlbmd0aCAtIDE7Ci0gICAgICAgIG1lbW1vdmUo
cCwgYWZ0ZXIuZGF0YSgpLCBhZnRlcmxlbmd0aCArIDEpOyAvLyBjb3BpZXMgdHJhaWxpbmcgJ1ww
JwotICAgICAgICBjaGFyICpxID0gYWZ0ZXIuZGF0YSgpOwotICAgICAgICB3aGlsZSAoKnApIHsK
LSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpwOwotICAgICAgICAgICAgaWYgKGMgPiAw
eDdmKSB7Ci0gICAgICAgICAgICAgICAgKnErKyA9ICclJzsKLSAgICAgICAgICAgICAgICAqcSsr
ID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICAgICAgKnErKyA9
IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgKnErKyA9ICpwOwotICAgICAgICAgICAgcCsrOwotICAgICAgICB9Ci0gICAg
ICAgICpxID0gJ1wwJzsKLSAgICAgICAgcmVzdWx0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4
U3RyaW5nOmFmdGVyLmRhdGEoKV07Ci0gICAgfQotICAgIAotICAgIGlmIChtYXlOZWVkSG9zdE5h
bWVEZWNvZGluZykgewotICAgICAgICAvLyBGSVhNRTogSXMgaXQgZ29vZCB0byBpZ25vcmUgdGhl
IGZhaWx1cmUgb2YgbWFwSG9zdE5hbWVzIGFuZCBrZWVwIHJlc3VsdCBpbnRhY3Q/Ci0gICAgICAg
IGF1dG8gbWFwcGVkUmVzdWx0ID0gbWFwSG9zdE5hbWVzKHJlc3VsdC5nZXQoKSwgTk8pOwotICAg
ICAgICBpZiAobWFwcGVkUmVzdWx0KQotICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVkUmVzdWx0
OwotICAgIH0KLQotICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fu
b25pY2FsTWFwcGluZ107Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0ZVN0cmlu
Z1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzdWx0
LmdldCgpKSk7Ci19Ci0KLUJPT0wgaXNVc2VyVmlzaWJsZVVSTChOU1N0cmluZyAqc3RyaW5nKQot
ewotICAgIEJPT0wgdmFsaWQgPSBZRVM7Ci0gICAgLy8gZ2V0IGJ1ZmZlcgotICAgIAotICAgIGNo
YXIgc3RhdGljX2J1ZmZlclsxMDI0XTsKLSAgICBjb25zdCBjaGFyICpwOwotICAgIEJPT0wgc3Vj
Y2VzcyA9IENGU3RyaW5nR2V0Q1N0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc3RyaW5nLCBz
dGF0aWNfYnVmZmVyLCAxMDIzLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpOwotICAgIHAgPSBzdWNj
ZXNzID8gc3RhdGljX2J1ZmZlciA6IFtzdHJpbmcgVVRGOFN0cmluZ107Ci0gICAgCi0gICAgaW50
IGxlbmd0aCA9IHN0cmxlbihwKTsKLSAgICAKLSAgICAvLyBjaGVjayBmb3IgY2hhcmFjdGVycyA8
PSAweDIwIG9yID49MHg3ZiwgJS1lc2NhcGUgc2VxdWVuY2VzIG9mICU3ZiwgYW5kIHhuLS0sIHRo
ZXNlCi0gICAgLy8gYXJlIHRoZSB0aGluZ3MgdGhhdCB3aWxsIGxlYWQgX3dlYl91c2VyVmlzaWJs
ZVN0cmluZyB0byBhY3R1YWxseSBjaGFuZ2UgdGhpbmdzLgotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcFtpXTsKLSAgICAg
ICAgLy8gZXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVycywgc3BhY2UsIGFuZCBkZWxldGUKLSAgICAg
ICAgaWYgKGMgPD0gMHgyMCB8fCBjID09IDB4N2YpIHsKLSAgICAgICAgICAgIHZhbGlkID0gTk87
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChjID09ICclJyAmJiAoaSAr
IDEgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDFdKSkgJiYgaSArIDIgPCBsZW5n
dGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDJdKSkgewotICAgICAgICAgICAgYXV0byB1ID0g
dG9BU0NJSUhleFZhbHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7Ci0gICAgICAgICAgICBpZiAodSA+
IDB4N2YpIHsKLSAgICAgICAgICAgICAgICB2YWxpZCA9IE5POwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBhbiBlZmZpY2llbnQsIG5vbi1j
YXNlLXNlbnNpdGl2ZSwgd2F5LgotICAgICAgICAgICAgaWYgKGMgPT0gJy0nICYmIGkgPj0gMyAm
JiAocFtpIC0gM10gfCAweDIwKSA9PSAneCcgJiYgKHBbaSAtIDJdIHwgMHgyMCkgPT0gJ24nICYm
IHBbaSAtIDFdID09ICctJykgewotICAgICAgICAgICAgICAgIHZhbGlkID0gTk87Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0g
ICAgcmV0dXJuIHZhbGlkOwotfQotCi1OU1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcg
KnN0cmluZykKLXsKLSAgICBOU1JhbmdlIGNvbG9uID0gW3N0cmluZyByYW5nZU9mU3RyaW5nOkAi
OiJdOwotICAgIGlmIChjb2xvbi5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIGNvbG9uLmxvY2F0
aW9uID4gMCkgewotICAgICAgICBOU1JhbmdlIHNjaGVtZSA9IHswLCBjb2xvbi5sb2NhdGlvbn07
Ci0gICAgICAgIC8qCi0gICAgICAgICBUaGlzIHN0dWZmIGlzIHZlcnkgZXhwZW5zaXZlLiAgMTAt
MTUgbXNlYyBvbiBhIDJ4MS4yR0h6LiAgSWYgbm90IGNhY2hlZCBpdCBzd2FtcHMKLSAgICAgICAg
IGV2ZXJ5dGhpbmcgZWxzZSB3aGVuIGFkZGluZyBpdGVtcyB0byB0aGUgYXV0b2NvbXBsZXRlIERC
LiAgTWFrZXMgbWUgd29uZGVyIGlmIHdlCi0gICAgICAgICBldmVuIG5lZWQgdG8gZW5mb3JjZSB0
aGUgY2hhcmFjdGVyIHNldCBoZXJlLgotICAgICAgICAgKi8KLSAgICAgICAgTlNTdHJpbmcgKmFj
Y2VwdGFibGVDaGFyYWN0ZXJzID0gQCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsuLSI7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBJbnZlcnNlU2NoZW1lQ2hhcmFjdGVy
U2V0KFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzph
Y2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52ZXJ0ZWRTZXRdKTsKLSAgICAgICAgTlNSYW5nZSBpbGxl
Z2FscyA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6SW52ZXJzZVNjaGVtZUNoYXJh
Y3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsKLSAgICAgICAgaWYg
KGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4gc2No
ZW1lOwotICAgIH0KLSAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7Ci19Ci0K
LUJPT0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICAvLyBU
cmltIHdoaXRlc3BhY2UgYmVjYXVzZSBfd2ViX1VSTFdpdGhTdHJpbmcgYWxsb3dzIHdoaXRlc3Bh
Y2UuCi0gICAgcmV0dXJuIHJhbmdlT2ZVUkxTY2hlbWUoc3RyaW5nQnlUcmltbWluZ1doaXRlc3Bh
Y2Uoc3RyaW5nKS5nZXQoKSkubG9jYXRpb24gIT0gTlNOb3RGb3VuZDsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgKaW5kZXggYzk5Y2Iz
ODM3OGMxOWFiODJjZTkxZThiZjAyMzdhYjc3Mjg3OTExYS4uNjMzMTc4ZTRlZWFiNWVhMzE5MzYy
MTAxMGU3NThjYjM0MjBjODE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5oCkBA
IC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlICJSVENCdW5kbGVQb2xpY3kuaCIKICNpbmNsdWRl
ICJSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaAppbmRleCBiNzAyNjc0
ODI0NjlkNTg3NWVmYjVmNzQ5NGQxYmY3YWM0MmM4OWUxLi4zODBkMzczMWIwYTE1M2FiYjljMjI3
MGJmZWU3NjgwZjAzYjNiOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgKQEAg
LTIzLDYgKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI3ByYWdtYSBvbmNlCisKICNp
bmNsdWRlIDxDb3JlVmlkZW8vQ29yZVZpZGVvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaAppbmRleCA2MjhmOTM5YTMw
NWNjZjc0NjY5ZTZiY2JhYmMwZjU5MTc5NTYzNzg2Li4wNDFjMjlhMzEyZjA5ODE3ZjhlY2YxNzM2
MTYxM2NhZDJmZDZmNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JQYXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UGFydC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCmluZGV4IDlmZjYw
MGNhYzU5M2QzNTk0NWMxMGVhMTE0NTM3NGRiYzk3MjgwMTMuLjQ3NGEwZjJmOGJiYTFjYjFmOTYz
Y2NjOTk0NGYyZTc5ZGFiYzFkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIEJs
b2JSZWdpc3RyeTsKLWNsYXNzIFVSTDsKIAogV0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lzdHJ5JiBi
bG9iUmVnaXN0cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCAyNGZlY2M5NWE0MTk2MGIxM2RkODc0ODE1MTBlYzI3
OGE4YjFlZjI0Li5jNjkxZTViNjcwMDdlZGEyZTJmZjhiYjYyMjZhMDBhMzAwNTE0ZjY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
aApAQCAtMzMsMTQgKzMzLDEzIEBACiAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUg
IkJsb2JSZWdpc3RyeS5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVz
b3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5k
ZXggNjE4MmJlNTZjNDI2MDVkNTBlYTI5ZDJkN2JlMTAyMTdkYmY2MjEwOS4uYzk0ZTM5NDk0Yjhl
MzI2ZGI0YTEyYTI3MjAxYTQ2MjM4ZGUxOGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMzksNyArMzks
NyBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJz
LmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFJhbmdlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0
SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDI0OWEwMDM2MWJlZmFjM2M4YWIzMzlh
ZDg3N2U4NzFmNGJmZTU5MzIuLjMyYTZmNTdjMGEyMTk2MDQ3Yzc0MzliMDkzOWRmZTJjZDBjMzY5
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAgLTI3LDggKzI3LDggQEAKIAog
I2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAppbmRleCBlNWYzMDRi
YmNlNWQwMTk2OTkxZjVjZDljZTJlMGYyMjEyY2FlNmEwLi4yYzU0MzQzODVmMTg1ZTgyZTI5MTYx
YjhmYzQ3ZmU5OTAxMzk0N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1
ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Np
b24uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBQTEFU
Rk9STShJT1MpCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCmluZGV4IDVjYWNjMDU2
MzFjMTY4MGQxZDk0MjdkNzc4OTUyOWYzYjE4ZDMwN2QuLjdkZGM0ZmU1NWJiMWJlMmY2OTIwMDA4
MGMzNGYzNGJhYmQ1MGVkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAogICovCiAKLSNpZm5kZWYgQ3JlZGVudGlhbFN0b3JhZ2VfaAotI2RlZmluZSBDcmVkZW50
aWFsU3RvcmFnZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNp
bmNsdWRlICJQcm90ZWN0aW9uU3BhY2VIYXNoLmgiCkBAIC0zNSw3ICszNCw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogCiBj
bGFzcyBDcmVkZW50aWFsU3RvcmFnZSB7CkBAIC03MCw1ICs2OCwzIEBAIGNsYXNzIENyZWRlbnRp
YWxTdG9yYWdlIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENy
ZWRlbnRpYWxTdG9yYWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggM2Y0ZmIxYWQ4ODRhNzgyYmRjNjE0ZmQzOTRmZTc3
NzFhYmE1NGE0Zi4uNDYwNWJlYTBhN2ExNmQxM2E1ZDJjMGU5MDZmYmFlOTBjZGQ0NjIyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5j
cHAKQEAgLTMwLDkgKzMwLDkgQEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggNzI1ODI0NzEyOWNiYmFhMmM4NWZjM2I0
OWNmZGI2NjgwZDJiZDc1ZC4uOTc0ZDljZWJlYjE5NTE4OGI1Yzg0NjkyYWEwZjViMjZiYTk5MGNk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29k
ZXIuaApAQCAtMjMsOSArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgRGF0YVVSTERlY29kZXJfaAotI2RlZmluZSBEYXRhVVJMRGVjb2Rl
cl9oCi0KKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0zOCw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogbmFtZXNwYWNlIERhdGFVUkxE
ZWNvZGVyIHsKIApAQCAtNjEsNSArNTgsMyBAQCB2b2lkIGRlY29kZShjb25zdCBVUkwmLCBjb25z
dCBTY2hlZHVsZUNvbnRleHQmLCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYmKTsKIH0KIAogfQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRl
eCBlOGM3ZDk4YTA3NWI2NmRkMDU0Mjg3OWI1OTE2NGMwZDQ2ZjZhNzI2Li5iYmFhZGUxODViNzlm
NTRmOGMwNzA3NTM5NjMyMTY2MzQ2ZWMyZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oCkBAIC0yMCw5ICsyMCw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUHJveHlTZXJ2ZXIuaAppbmRleCAxMDNkOWE5NmJiZGM2MTUyYTYxYjdkMTYxZmU0MDkw
YmE1YmMzYTA1Li41Mjc4OWI1YmRkOGRhYjM5N2IzNjlhYWMxNThjMjY3NzIxODc3ZGU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oCkBAIC0yMywx
NSArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFByb3h5U2VydmVyX2gKLSNkZWZpbmUgUHJveHlTZXJ2ZXJfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTmV0d29ya2lu
Z0NvbnRleHQ7CiAKIC8vIFJlcHJlc2VudHMgYSBzaW5nbGUgcHJveHkgc2VydmVyLgpAQCAtNzUs
NSArNzMsMyBAQCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVy
c0ZvclVSTChjb25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b1N0cmluZyhjb25z
dCBWZWN0b3I8UHJveHlTZXJ2ZXI+Jik7CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBQcm94eVNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggNzYzMzE4YzJlMTE0NzM2MjM2ZWMz
ZDEzNmM3YzRhODc4ZGRjYjJmMy4uZTBiZjA0YjhhYzhmMDBiMzkzOTc5MWViZmQwMDg3ZWNiOTBk
Yjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VFcnJvckJhc2UuaApAQCAtMjYsNyArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCA0OTE0MzRkOGZhNTNmMTkw
ZTU0NTNlYjlmMzk0ZTQwN2RkNmMxM2JmLi40NmFmNTY3MTNkODk4YzNhN2ZiZDc5OGFhNTBmZWFh
NjU0Nzg0OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIENvbXBsZXRp
b25ICiAgICAgaWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAgYXV0byB1cmwgPSBy
ZXNwb25zZS51cmwoKTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVy
bC5wb3J0KCk7Ci0gICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
cG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKKyAgICAgICAgaWYgKHBvcnQgJiYgIVdU
Rjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkp
KSB7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0g
IkNhbmNlbGxlZCBsb2FkIGZyb20gJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKCkgKyAiJyBiZWNhdXNlIGl0IGlzIHVzaW5nIEhUVFAvMC45LiI7CiAgICAgICAgICAgICBk
LT5tX2NsaWVudC0+ZGlkRmFpbCh0aGlzLCB7IFN0cmluZygpLCAwLCB1cmwsIG1lc3NhZ2UgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgK
aW5kZXggMDFhODZlMzU5YjFmZDBmMmVhZjQ1NjhhYTcyODY0MGMzMmI3NmY3OC4uNjVmMzBmOTVk
YjYwNTRhNWQwMWIyOWYyNDY4YjU5ZTk3MzcyNGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtNzcsNyArNzcsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENy
ZWRlbnRpYWw7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIFVSTDsKIGNsYXNzIE5ldHdvcmtpbmdDb250
ZXh0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaAppbmRleCBkNmVkYjZkNjE4YWRjM2JjY2UyM2YwMWZiOTdmZjEzOTk3YTZmYWMyLi4zZTEw
YmVmNDkxMDdkMTM3ODE3Y2I5OTMyOTg1MjE3NWJiOGQ0MGMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC00
NCw3ICs0NCw2IEBAIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlh
bDsKLWNsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlSGFu
ZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGZmNTgzNjE3NGVh
Yjk1OTUyOGEyMDdiZmJhYWI2MDAzOWQ5YjUwMzMuLmZiNDYzNjM1MjJhN2ZlYzI1MjdkY2M0ZDEy
NzVlZGEzZjc2MzMwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFJlc291
cmNlUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByCiAgICAgICAgIHJlcXVlc3QubV9odHRwSGVhZGVyRmllbGRzLnJl
bW92ZShIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAgICAgfQogCi0gICAgaWYgKHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCku
cHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJl
ZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0ICYmICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgJiYgV1RG
Ojpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQogICAgICAgICBy
ZXF1ZXN0LmNsZWFySFRUUFJlZmVycmVyKCk7CiAKICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmgKaW5kZXggM2FmNDM1MjY5ZmUxZmNlMDM3Nzg1ZmQyNWExZTBjYmJmZDc5MGYzNS4uZTdjMWM0
MDljM2I5YjY0ZWE3YjRlMzc4NzgzNDM5NTQyYTRhZDBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTMxLDcg
KzMxLDcgQEAKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuaAppbmRleCBkOGZjYzE0MzFiNTBiYzdhYjY3ZjFkMTk2OGI5MWNl
NzBlYTE2MWVmLi4wZTU1YzFjZWZmMmFlN2MzNzFmNjBlNmVjMzRhODE1Yjc4YTgyMTNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5oCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRS
YW5nZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29j
a2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggYjU5YmRiYTBiNDEyOTVjZWUzODUzZjZmZWEyMmFiYzI0
ZWNkYmYyNS4uNmQxZmQxYTgzMDk5Mzk4OTRiNDllYTg0Yjc3YTU5ZjExN2Q4YTAyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZS5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKaW5kZXgg
YmEzNDBmZjg4ZDYyMDNiNzEyNTIwOWE4NTAyM2QzNDlkZjM1ZjJkZi4uNGY4ZTQzMjJhYzU3MWQ3
NzcxM2QxMDE0Mzc0MDQ1ZmY2ZGNjZmNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTMw
LDExICszMCwxMSBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJU
aW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGZhMDRjOGI3MDk5Y2JhZWI2ZTVmNGMxNWIxNzQ1
MjY3NDA5YjNhZDcuLmY4ZWJiMDZjY2QwNTZlMzUwZWQwMGYwYjkyNWZkYWFjZmZkZTRkOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC00MiwxMiArNDIsMTIgQEAKICNp
bmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgogI2luY2x1ZGUgIkNvb2tp
ZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NmL0NG
TmV0d29ya1NQSS5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYvU29mdExp
bmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0
c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmlu
ZGV4IGI1YzZhOGQ2YzMyZmZkYmQ5MGIyMTAwNDJiOTQ3MTQ3NDNhMGM1NGIuLjJhYjM0OTcyMTZh
YzVhYTg3NmUwMDRlN2E3ZDU2YThlNDhkZWM0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApAQCAtMjYsNyAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVyLmgiCiAK
LSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAKaW5kZXggYmEzNjA1YmJkMWQ0NmY5N2RlMjgzOGYzOTgzNzg5MmY5
OTUyMmI2OC4uZDQxNmY2MTUxNGVmMWZmMDIzMTFkNWMyZDEwMzVlZmQ1NDFlOTQzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJv
ckNGLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZFcnJvci5oPgog
I2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KICNpbmNsdWRlIDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA4OTQ4NWEzMWY1NDQ1
YTVjODllOTNiODEzYzkxMDgxYTc0YTQ5MTljLi4wZWFkZTE1OTljZTU4YmI2NDBmMmQxMjEzYWM0
MzYwMjE0NzNhODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAg
LTMxLDExICszMSwxMSBAQAogI2ltcG9ydCAiQ29va2llU3RvcmFnZU9ic2VydmVyLmgiCiAjaW1w
b3J0ICJDb29raWVzU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlNhbWVTaXRlSW5mby5oIgotI2ltcG9y
dCAiVVJMLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2lt
cG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogQGludGVyZmFjZSBOU1VSTCAoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJs
LmgKaW5kZXggZTBiMjFjYzEzNzc0OGE4ZTE2Mjc0ODMyNjA3YzE4ZDdhNDgxNjBmZS4uYjk2MTRi
ZmYwMDc5ODRjYTVmMjIxOGUwYjY1OWFhZjJmNGEyZDYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oCkBAIC0yNSw3ICsy
NSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOwogCiBzdHJ1Y3QgQ29va2llOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmxEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNl
LmNwcAppbmRleCA1ZTg0NTRhYTU0YWY2ZjcxYWNmYWU3ZTkzNjI0MDdjMjE0MTc1MTg1Li5jMmQw
NTFlMzc5M2Y1YThlODY4YTRlNzlkZmUxNjQ2NTY3NTE3YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERh
dGFiYXNlLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5LmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3Bw
CmluZGV4IDY1MDAzOGQzOTQxMmM3Y2EwMzg0M2Q4YWM5M2YxNDY2YTRlODdjODIuLjM5ZTc3YmY3
ZDQ2MGZmNzZhYTc3ZmNhNjFjYjI2MTNiMWE3NTU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMjksOSArMjks
OSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZVV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVVdGlsLmgKaW5kZXggYTg5YzlhYjdiOTYyNjI0NDgzMjYyNTI1NDcwZjFhNGRjYzlmZjM3
Mi4uNjE4ZGY3Yjg4ZTQyOWVmNzY0ZTEyYjI2N2M3NGFkZmExYWU5ZWM4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oCkBAIC0yNCw4
ICsyNCw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXggMzczMjYwMTc5Yjg4
NmYxZWVkYTA2ODEzOWYwMDY4NGExNGFmMDc3NS4uZjhkNjgxMDgwMWVmYmFkZDlkNDEwMDIyOTRh
ZGEzOTlhMDk2NTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaW5jbHVkZSAiQ3Vy
bFByb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlICJDdXJsU1NMSGFuZGxlLmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TZWNv
bmRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaApp
bmRleCBhNjFjNmVjMjI2MmQyZTM4Nzk5MjcyNGI2ZGNjNWY2OTRkMTE2NjQ5Li5mMzVmNDFiNTFm
NTg5NmY2ZjczMzY2MDU1MjQ5YzMwYmEzOTViM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaApAQCAtMjUs
NyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2RlZmluZSBr
Q1VSTEFVVEhfRElHRVNUX0lFICAgICgoKHVuc2lnbmVkIGxvbmcpIDEpIDw8IDQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc3BvbnNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc3BvbnNlLmgKaW5k
ZXggMzczNjYxYmQzNWFmY2U2NjdhZTFiYjM1NzdhNmMwOWRjMTQ0ZmE0ZC4uZTYxMWZmYzRmYjE1
NDFmNGNmZDEzMjg3MmNiYzFkNWRjM2Q5M2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2UuaApAQCAtMjUsNyArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5j
cHAKaW5kZXggZTExMGFkMTY0OTEwNWVjNmIwMDNiMTk5MDM2YWQ4YThlNzA0NzcxNC4uMWJkMjFl
Y2VhYmZmN2U3OTIwMGFmODJjY2QwOWMyYTg4NzE4OWUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25DdXJsLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2
ZXJDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNl
cnZlckN1cmwuY3BwCmluZGV4IGNkYTQ0OTkzZjYzNGIyNDQ0YTYxZGNhZjk3NDAxZTlmMjYwMmYw
YjAuLjE4ZjUwOGI2ZTQ4NjgyYThmYzcwMGQxZjY3ZDdhOTZlMDkzZWQ0YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1
cmwuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBVU0UoQ1VSTCkKIAotI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCBjZmM0OGZmYTI1ZmQ4MGZkYjhk
NzFmYTdjMzg5M2QzZTg2YTQ1NzdhLi4wNzEwY2FlZTI1MDNjMWYzZjM4MDhlMjA0MzcwNTg4Mjdl
ZDM2ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTM5LDkg
KzM5LDkgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJy
b3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggMmVjZjQyOGMwYWI1MTRhY2Uw
YzAxYzVmNGQxNjI5OGNlYTIxNjA3My4uZGNiZGUzNDhlYjQ3N2MyYTFiNWFiZTRhYjU5MzU5Mzk4
ZTJhYzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogCi0jaW1wb3J0ICJVUkwuaCIKICNp
bXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIEBpbnRlcmZhY2UgTlNFcnJvciAoV2ViRXh0cmFzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJT
b3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNv
dXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZkYzYzNzQxMmUxOGJhNzI1Zjc0
ODNlYzMyNmUxMjQ5YTg4YTE2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0
clNvdXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBHVW5pcXVlUHRyU291cF9o
Ci0jZGVmaW5lIEdVbmlxdWVQdHJTb3VwX2gKLQotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgot
I2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLVdU
Rl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2ZyZWUpCi1XVEZfREVGSU5F
X0dQVFJfREVMRVRFUihTb3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVlKQotV1RGX0RFRklORV9H
UFRSX0RFTEVURVIoU291cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3NhZ2VfaGVhZGVyc19mcmVl
KQotV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cEJ1ZmZlciwgc291cF9idWZmZXJfZnJlZSkK
LQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwCmluZGV4IGU0ODNhYTYzMTZjZTZjNWQ2YzhmM2U2NTVkNTVkZDFlZWIwNDYzY2Yu
LjAzZDE1NmU1ZWQ2ZThjMWY1OTA5NTZhOGJkODQwZThhM2QxMGU0N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25T
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkNv
b2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgiCi0jaW5j
bHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgpA
QCAtNDEsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKICNpZiBVU0UoTElCU0VDUkVU
KQogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKaW5kZXggNGMyNzdjM2Qy
MTY3YWNjNTQ0MTFmOTYwM2UzNTE5MDAxNzMzYjRhZC4uOWM5OWY4OTVkYjRkYjdjODExY2E1MGY1
MTFkM2Q0ZmIyNWM3MTZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAog
I2lmIFVTRShTT1VQKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggNjM3MzRj
Njc0YzUyZWU5NWRjNmM5ZTQyMWM0NjYwZjQxODQwMGJhYS4uZmI3MTgxM2EzNzU5MDljMGE3YTJm
NTQ1NzRhODExYWVkZGIzZmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTMzLDcgKzMz
LDYgQEAKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNl
cnMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgpAQCAtNTgsNiArNTcsNyBAQAogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNv
dXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
LmgKaW5kZXggMzhlM2E4ZWU2OTY4MTFmZDViYTc4YjRiMzBjMmMwMWEzOWZmNWI1Zi4uNzQ3MmFk
MjM4YjMzNGE5NTA5MDFlZGU5MDE1ODMyNjViM2Y5YmM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApAQCAtMjcs
OSArMjcsOSBAQAogI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RfaAogI2RlZmluZSBSZXNvdXJjZVJl
cXVlc3RfaAogCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3RCYXNlLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3Rm
L2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0U291cC5jcHAKaW5kZXggNThjZmE3NzYxNDRjODRhMDkwZDM2MjJkZjIyMjc0MjE4Zjc5
MWJiNi4uZWQyNjk0MDFlYmJmZjRkZDYzOGVmOGVmYzFlMGVkODY5MjJmNDZmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZVJlcXVlc3RTb3VwLmNwcApAQCAtMjQsMTEgKzI0LDExIEBACiAKICNpbmNsdWRlICJCbG9iRGF0
YS5oIgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKLSNpbmNsdWRlICJHVW5pcXVlUHRy
U291cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYktpdFNvdXBS
ZXF1ZXN0R2VuZXJpYy5oIgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAppbmRleCA5Y2RkZGI4
N2UzNzU5NWEyYmJhZDY1MTAyMDQ1ZjZmYTc0MmI0ZTQyLi41YWY5NDczZjM3NzI4NjExMzFiYWU3
MTc3YjM0MzE5YTVjMmRiMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5j
cHAKQEAgLTQxLDkgKzQxLDkgQEAKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2lu
Y2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlNvdXBOZXR3b3Jr
U2Vzc2lvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNs
dWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
UnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDEzZWNi
NWIwZjc2M2MyMDFjZjE3YTQxNjEyYTczZjA5YThmNWEwNzguLjYwMDRkMTdmNzZhMDNhOTBlMzM4
YTkwZTNjNTQ1YjUyZjUxOWM3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zMSw3ICsz
MSw2IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRl
IDxnbGliL2dzdGRpby5oPgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgPHBhbC9jcnlwdG8v
Q3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBOZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGQxZTlkOWNlNWIyODlkMTRjYzZjMTY1OTNiZjRh
ZDA2NzgyN2U1M2EuLjViNWZmNzk3NzM0NzE1MTk2MWE0NWMzNDk3ZWEyZjU1MTM0NGIxYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29y
a1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291
cE5ldHdvcmtTZXNzaW9uLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgVVJM
Owogc3RydWN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5nczsKIAogY2xhc3MgU291cE5ldHdvcmtT
ZXNzaW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvVVJMU291
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2RiYTMyODY5NWZmY2IyNmYzODdiNjcyYWE5Mzg3Mzcy
YjJlOTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiVVJMLmgiCi0KLSNpbmNsdWRlICJVUkxQ
YXJzZXIuaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwoU291cFVSSSogc291
cFVSSSkKLXsKLSAgICBpZiAoIXNvdXBVUkkpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5nKHNv
dXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwotICAgIFVSTFBhcnNlciBwYXJzZXIo
U3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0KCkpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5y
ZXN1bHQoKTsKLQotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4
OTU2LiBsaWJzb3VwCi0gICAgLy8gZG9lcyBub3QgYWRkIHRoZSBwYXNzd29yZCB0byB0aGUgVVJM
IHdoZW4gY2FsbGluZwotICAgIC8vIHNvdXBfdXJpX3RvX3N0cmluZywgYW5kIHRodXMgdGhlIHJl
cXVlc3RzIGFyZSBub3QgcHJvcGVybHkKLSAgICAvLyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3Rv
X3N0cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMKLSAgICAvLyBub3Qgd2Fu
dCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRpb25zCi0g
ICAgaWYgKHNvdXBVUkktPnBhc3N3b3JkKQotICAgICAgICBzZXRQYXNzKFN0cmluZzo6ZnJvbVVU
Rjgoc291cFVSSS0+cGFzc3dvcmQpKTsKLX0KLQotR1VuaXF1ZVB0cjxTb3VwVVJJPiBVUkw6OmNy
ZWF0ZVNvdXBVUkkoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBHVW5pcXVlUHRyPFNvdXBVUkk+KHNvdXBfdXJpX25l
dyhzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci19Ci0KLWJvb2wgVVJMOjpob3N0SXNJUEFkZHJl
c3MoU3RyaW5nVmlldyBob3N0KQotewotICAgIHJldHVybiAhaG9zdC5pc0VtcHR5KCkgJiYgZ19o
b3N0bmFtZV9pc19pcF9hZGRyZXNzKGhvc3QudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0RW5jb2RpbmcuaAppbmRleCA3N2M1Mjg4ZmQwY2UwNTk4NjRlZjgxMjNlMDA3MmJiN2MzNTcy
M2RiLi43ZDAzZjg2M2QwZGY0OWQyZjc5YzdjM2E2ZDEzODJjZjQxNjgxMGU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKQEAgLTI1LDEzICsyNSwxMyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC90ZXh0
L1VuZW5jb2RhYmxlSGFuZGxpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4
dEVuY29kaW5nIDogcHVibGljIFVSTFRleHRFbmNvZGluZyB7CitjbGFzcyBUZXh0RW5jb2Rpbmcg
OiBwdWJsaWMgV1RGOjpVUkxUZXh0RW5jb2RpbmcgewogcHVibGljOgogICAgIFRleHRFbmNvZGlu
ZygpID0gZGVmYXVsdDsKICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0RW5jb2RpbmcoY29uc3QgY2hh
ciogbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKaW5kZXggYmFl
MWJlYWFhYTM3YWRlMzAzYjA4ZjM0ODk0OTI0OTAxODY0NzljYS4uMGY0NmM1ZGNhYjI5YjdiNDYz
YmI2ZWNkMzFiMGViM2I3NThjMjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0JTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3Ry
aW5nLmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkJTdHJpbmcuaCIKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0JTdHJpbmcuaAppbmRleCAxZmJlMDJjMTU4N2MxMjliOGQ1MDUwMmU2NDYwNGU3ODZjZTgyYTJh
Li4xODRiNTUxZDQ4ZTljMjMxZWEwMmE3ODc1NmZlOTZmZWQzZTU2NjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKQEAgLTQwLDggKzQwLDYgQEAgdHlwZWRlZiBfTnVsbF90
ZXJtaW5hdGVkXyB3Y2hhcl90KiBCU1RSOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBj
bGFzcyBVUkw7Ci0KICAgICBjbGFzcyBCU3RyaW5nIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEJT
dHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggNmZmODllYzE4MGQ1ODM1YzU5MTQwZmM2YTM4N2Y0N2Ix
MjViMGEzMi4uNzkwYTgyZjhiNjcxMTAwYTE2MmU1M2VkODk3OTdjZDkwNzhlZmZmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dp
bi5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGllc1dp
bi5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUg
PHNobG9iai5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3aW5pbmV0Lmg+IC8v
IGZvciBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSAogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBtYXJrdXBUb0NGSFRNTChjb25zdCBTdHJpbmcm
IG1hcmt1cCwgY29uc3QgU3RyaW5nJiBzcmNVUkwsIFZlY3RvcjxjaGFyPiYgcmUKICAgICBjb25z
dCBjaGFyKiBzdGFydE1hcmt1cCA9ICI8SFRNTD5cbjxCT0RZPlxuPCEtLVN0YXJ0RnJhZ21lbnQt
LT5cbiI7CiAgICAgY29uc3QgY2hhciogZW5kTWFya3VwID0gIlxuPCEtLUVuZEZyYWdtZW50LS0+
XG48L0JPRFk+XG48L0hUTUw+IjsKIAotICAgIENTdHJpbmcgc291cmNlVVJMVVRGOCA9IHNyY1VS
TCA9PSBibGFua1VSTCgpID8gIiIgOiBzcmNVUkwudXRmOCgpOworICAgIENTdHJpbmcgc291cmNl
VVJMVVRGOCA9IHNyY1VSTCA9PSBXVEY6OmJsYW5rVVJMKCkgPyAiIiA6IHNyY1VSTC51dGY4KCk7
CiAgICAgQ1N0cmluZyBtYXJrdXBVVEY4ID0gbWFya3VwLnV0ZjgoKTsKIAogICAgIC8vIGNhbGN1
bGF0ZSBvZmZzZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkVXRpbGl0aWVzV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkVXRpbGl0aWVzV2luLmgKaW5kZXggNWNkOWUwZTc1NzMxM2ZmMDIyOWE2Y2ZiYThlZDY0OTBh
ODFhZmUyOC4uYzM3ZjNlMmRlMTk2MWU2YTEzMDQ1NDc3Y2NhODY5MjY0ZjAzMjViOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4u
aApAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKLWNsYXNzIFVSTDsKIAogSEdMT0JBTCBjcmVhdGVH
bG9iYWxEYXRhKGNvbnN0IFN0cmluZyYpOwogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0
IFZlY3RvcjxjaGFyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdJbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
V2luLmNwcAppbmRleCAxZGZhNTBiNTMyZGQ4YjVhZjY2Njc1Zjg0NDlmZTU0MTkxMTc0ZWZmLi5h
NmI2NzJmYzcyN2ZlODM3OWEyZDBmN2UwNDYwNzE2OTYwY2ZiYjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3Iu
aCIKICNpbmNsdWRlICJUZXh0SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVUZXh0UmVuZGVyZXIuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmlu
Z0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwNjk5Nzk5MDYzMWU1
YzM0MzY0NzE4YWU2YWIxNzY1OTRjZGYzNjlkLi5kNTk2N2E1ODIwYzk3YWUyOGM2MjVhNTBkODAz
OGUwMGVlMjVkZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1
ZGUgIlJlbmRlckltYWdlLmgiCkBAIC00OSw2ICs0OCw3IEBACiAjaW5jbHVkZSAiVGV4dEVuY29k
aW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAibWFy
a3VwLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1ZpZXcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5kZXggMGI2YzQyZWUy
ZDA4MTY4YmVkZWZjOGYzZDBmOWVhZTZlMWE2YmY1OC4uZjA0MGIwYWY5NmYzYjhiYmQ5ZjU0OTMy
OTMxMmI4ZjRmNzA2OWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKQEAgLTIw
LDEwICsyMCwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgK
aW5kZXggZDA3NzdiMzQ1MGMzYTAyMGFlZmQ0M2E3MjNjYzZjYjEzM2RlYWUwYi4uMzMyZjI4NTMx
ZDM4OGNmZTJjM2Q1OGE5NGMzZjI2MTdkY2I5MTY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1l
bnQ7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBV
Ukw7CiAKIGVudW0gY2xhc3MgSGl0VGVzdFByb2dyZXNzIHsgU3RvcCwgQ29udGludWUgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCmluZGV4IGVk
MzMzNWUxMzc0ZDhmNzIyOTI1MmQ1NGNlMDY3Y2MzODQ3NjgxYmQuLjc0NjdmZjM4NjU2ODJiOGJl
NjNiYjY3ZGViZDcxOWE0YzhiN2UzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQXR0YWNobWVudC5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJGcmFtZVNl
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUg
IlJlbmRlclRoZW1lLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKaW5kZXggOTk5OTZlMDFlZDA3MWFm
NTg3MWExZGExNjZjNjMxNDlhMTNiNGU3NC4uNzIyMWRmY2I3ZGRkZTU5MDM5Mjc2YWRkYzlmMzli
ZGEyZDc4OTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIHZvaWQgU1ZHSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2ZW50KCkKIFN0cmlu
ZyBTVkdJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
KSBjb25zdAogewogICAgIFVSTCBiYXNlID0gZWxlbWVudCgpLmJhc2VVUkkoKTsKLSAgICBpZiAo
YmFzZSAhPSBibGFua1VSTCgpKQorICAgIGlmIChiYXNlICE9IFdURjo6YmxhbmtVUkwoKSkKICAg
ICAgICAgcmV0dXJuIFVSTChiYXNlLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMo
YXR0cmlidXRlKSkuc3RyaW5nKCk7CiAgICAgcmV0dXJuIGVsZW1lbnQoKS5kb2N1bWVudCgpLmNv
bXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAKaW5kZXggNjg1MDRhYTg0ZjI2
Y2IxOTNmZjM1ZmEwOGIwYTRmNmQxZTU1ZmMyYy4uZGExM2I3N2I2ZjNkMWI4MjgzZGNhOTk4OGQ4
ODc2ZGQzNmUxNWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVy
ZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAKQEAg
LTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVPd25lclByb3h5LmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA4
N2UyODIzZjllNzFiNjdiZDQ4MWU4ZTg4NDExYmFkMDAxMjY0Yjk4Li5jZDNmZDBkMWUyNTlkYWI0
ZTMzYTY5YWI2YWQxODQ2ZDlhZTVlMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaApAQCAtMjcsNyArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbWFn
ZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUu
aAppbmRleCAzZjViYzNhNzU2ZTY4NzkxYmFjOGQzNjgzYjZjM2MxNjc0NmQ5ZTQyLi4zMmU3MjJi
ZmEyNzM0NTRjNGI1YTExNGVmODA5NjQzNzUyMzRmODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKQEAgLTMzLDcgKzMzLDYgQEAgY2xhc3MgTGF5b3V0
U2l6ZTsKIGNsYXNzIFNWR0ltYWdlOwogY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CiBjbGFz
cyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFNWR0ltYWdlQ2FjaGUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCA2OTgwNmJlNjc3MDNlMmU5NDlmMzQx
ZDVjOTg2YTg1ZWEyZDdlMjRmLi40Y2ZjZThkNGIwMzc4NTc5MTQyMjY3YWE2YjgwODc2NzEyNmIw
NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDI2NmM2Zjg2MDBmMWU1ZmRlYWI5MDBkNWNhYmYw
YjY4YmE0NWY3MjAuLmUyMGY3YjY3YjRlN2VhMDk5OTVhOTQwZTliNmRkMTU1YjExZTg4ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lk
IEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgICAgICAg
ICAgYmFja2luZy0+c2V0VGlsZVNpemVVcGRhdGVEZWxheURpc2FibGVkRm9yVGVzdGluZyhmYWxz
ZSk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6Y2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
Rm9yVGVzdGluZygpOworICAgIFdURjo6Y2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9y
VGVzdGluZygpOwogICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhWZWN0b3I8U3Ry
aW5nPigpKTsKICAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFVzZXNP
dmVybGF5U2Nyb2xsYmFycyhmYWxzZSk7CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNl
dHRpbmdzOjpzZXRVc2VzTW9ja1Njcm9sbEFuaW1hdG9yKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMubW0KaW5kZXggNmZjZGNiZWRkM2Y3ZGE0Y2M1NDIwYTkzNjczNDI5NDFhNWMx
MTQ5Ny4uN2M1YjdhZDg0MmQ5OThmZTYxYTAxNDIzMDUyYzBhMWU2MGI5MzNmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMubW0KQEAgLTMyLDggKzMyLDggQEAKICNpbXBvcnQgIkV2ZW50
SGFuZGxlci5oIgogI2ltcG9ydCAiSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiUmFuZ2UuaCIK
LSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5n
Lmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogI2lmIFBMQVRGT1JNKElP
UykKIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogU3RyaW5nIEludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcoY29uc3Qg
RE9NVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVy
bC5ocmVmKCkpOworICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybC5ocmVmKCkp
OwogfQogCiBib29sIEludGVybmFsczo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggNjQ4
ZmJkMjZmYWMzNmE2NWM5OTU3YzUxMTU3ODg3NjQ2ZjJkYzI2Mi4uNTExODFkYWU3MmUxM2UyYmJk
MTUzZTgxMWMxNDM2NGQxY2Q4YTE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRl
cjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2UKIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RVUkwgeyByZXF1ZXN0LnVybCgpLCBtb2RpZmll
ZFJlcXVlc3RVUkxTdHJpbmcgfTsKICAgICBpZiAoIW1vZGlmaWVkUmVxdWVzdFVSTC5pc1ZhbGlk
KCkpIHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJNb2NrQ29udGVudEZpbHRlciBm
YWlsZWQgdG8gY29udmVydCAlcyB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVz
dFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVy
aW5nLCAiTW9ja0NvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgJXMgdG8gYSAgVVJMLlxu
IiwgbW9kaWZpZWRSZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1l
bnRDb29yZGluYXRvci5jcHAKaW5kZXggOWI2ZTk1ZTIxNTQ4MzBjMDAwM2Q2ZTIxODAwM2FjZWFh
MjJmZWQ1MS4uNDkyOWU4YWUzZDE5ZGM4ZWIxMzUwYWQ1ZTE1YzA1MTNmMTY4MTMwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBA
IC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiTW9ja1BheW1lbnRNZXRob2QuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9q
cy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJD
b3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IGQyNDEyMDZhMjhkZDVmNjQ3MGRhOWZiODRlOWVkNGZj
NzRjMjg3YjAuLjU4MDlmMGJlZGYwZTdhMDcxNzI4ZDA5ZWI5Mjk3NDdjNGI0ZWUwN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAg
LTM5LDEyICszOSwxMiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTV0NvbnRleHRN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVk
ZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgorI2luY2x1ZGUgPHd0
Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiB1c2luZyBu
YW1lc3BhY2UgSlNDOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFj
dFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCmluZGV4
IDkwMGMyY2I0MDQ2MmEwZWJlMzcwMjhhMzc1YTYzM2ZlYWY5NTM0ZjEuLjAzMjFjMmM3ZmVkMjU2
NjI4ZmYyNmNlZDkxM2FlYjhhZmMzMGUwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3Ry
YWN0V29ya2VyLmgKQEAgLTM1LDggKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBVUkw7Ci0KIGNsYXNzIEFic3RyYWN0V29ya2VyIDogcHVibGljIFJlZkNvdW50ZWQ8QWJz
dHJhY3RXb3JrZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6
CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5oCmluZGV4IDViOWEwYmUzNjljMjk5YzBmYjc1NDEwNzhmYzc2NTZkNmRl
NzllYzEuLjI4MmRkMDZiYzMzOGExZTA2OWE1YmQ0NmQ4NjNmYzMyOWQwYmE0MWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlw
dENvbnRyb2xsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZVByb3h5LmgKaW5kZXggMzZiZDAwNzA3ZDBhNjhkYjMwNzYyNzJiYTY1ZjMwYTNhOTI3ZjFl
Ny4uODU4NWE1YmZmOTNiMDQ2NjVkZTUzMjFlZDMyYjkyZmZhOTc2YTE3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKQEAgLTQyLDcgKzQy
LDYgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXb3Jr
ZXI7CiAKIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2VyIGNvbnRleHQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKaW5kZXggZGY0MzcxYWUy
M2MzMDMwNmVhN2JmNjQwZDI3ZjllMTRiOTc1ZTRiMi4uYTFkM2VhNzU3NmU3ZWEzNGE2NGNiOTE1
NDdkZTc2YWNmNTE4YmRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5z
cGVjdG9yUHJveHkuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJUaHJlYWQu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oCmluZGV4IDUzYzc3NjE1
Njc1NWI3MDZiOWQyNDkzNzE2YTgxMjUyN2ZjYTM1ZjguLjkyY2ZjYzc3MDZmMDM0ZTU3YjlmODJl
OWJhMjdiYTNhNTFhMDlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9u
LmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggZTU3YzMyM2NkZTll
NmY0ZjgwYWY5YjI1YjJjZmUxZWUyZTczNzRkOS4uMDRhNDFjMjFjYjJmNzUzMWZkZTYxOWU0ZDY3
ZGQ1NjQ0OTA1Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5oCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRl
ckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCAxYzZhYTE2NWI1OTE4NzE0N2M4YmE4MDk1NjFi
MzAzMTVjODRiMGI3Li44NGYxMWUyNmVlYzZiZjkyMWJiMDY1M2EyYjk1OTIzNzZjNDNjM2MxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTb2NrZXRQcm92aWRlci5o
IgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGQ3MTQxMjQ4NWE5NjkwNDlhZGI0OTY1
OTc0ZGJlOTFmNWVlMTkxODkuLjNkYzU0ZjZjNDczZGIzNzY3NTI1ZDFjYTQxMDNkNWQ2YTU2Yzk2
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtMzksNyArMzksNiBA
QCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vdGlmaWNh
dGlvbkNsaWVudDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaAppbmRl
eCA5YjliY2M4YTIyZjlkNzY3MTI5ODk3ZWMwMWYzN2IyYTU1MjFiN2VkLi43YjIzOWYzMDdkYTcx
ZTE1NmQ4N2JhMjM1M2I1MWIxYTMzMzVmZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlckRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU1ZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudERhdGEuaAppbmRleCAxNDNkN2Q5ZTA0NWQ1NGUxMWE4YzZlZDlhYzE0ZTM3YjE1NmEw
NTI5Li5mOTkxZjMyY2U2ZDNhOWIyNTdhNTYxMmI0NjM2NWE2NzlhZTJkMTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dERhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4
IDQwZDQwZGFkYTBiMThmMjJhODgzN2NiOTc2OGE0YTk5NmUyZTZiZDIuLjhkYjljNDE2YmRmNzNj
Njg2YWVmMTU4ZDY0ZDYxMDA0MmZlOGVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTQ4LDkg
KzQ4LDkgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0
Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBDT05UQUlORVJfUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBDT05UQUlORVJfUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
CmluZGV4IDNiZTk1MDQyNWVhNzgwY2ZmZDViYmVlNzg1ZmE0NTMyYWY5NGEzZDcuLjRkNjIwODg5
ZjkzNGE3ZWZhMjYwYjMyMDliNGUxNzZiMDJhYjBkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAg
LTI5LDExICsyOSwxMSBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRl
ICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgPHBhbC9TZXNz
aW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0
YS5oCmluZGV4IDcyOGMzN2NmZTYyYTVmZTU2MGFiNmM0ZWIxODY0ZjA0NDRjZjkzNmUuLmNlMzYx
ZDNmM2QwZjM4NzNhODZkYzhhOTM4YmFmMDNmMWQxNjRhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCkBAIC0yOSw3ICsyOSw3
IEBACiAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmgKaW5kZXggMDg3MGJiNmVmNjAyOTg0NWNkNGE5YjZkZTIzMDBhODgzY2FhMWMyMi4uOTNjMmRm
NmZmMGQyZjM5OGU4NDEyNjhiZTE5NjY0ZjdhOWNlNjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKQEAgLTM0LDcg
KzM0LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCmlu
ZGV4IDFjM2Q3NDZiMjNkYjkzZTM1NmYyMmU2MzEyMGIxY2Q0ZjRjZGIwYzkuLmJjZGQ4YzQ2OTI3
ZGM0MDA2MGIwZGVmOWRlYmVlNWVlYTVlZjE3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKKyNpbmNsdWRl
IDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleS5oCmluZGV4IDcxMGY0MTJiNDcyZDhmMTc0MmUwYmVlNDhkNTAyYmU4OWE5YTAzOTku
LmU2YWY3MzMxYzdiOTU0MzlkNTM5OGE5YThjMzdlMzQ3NmI4ZmRmNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDIsNyAr
MTAyLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXlIYXNoIHsKIHRlbXBs
YXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5PiB7CiAgICAgc3RhdGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXk6OmVtcHR5S2V5KCk7IH0KIAotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRW
YWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHNsb3Qu
c2V0U2NvcGUoV2ViQ29yZTo6VVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9CisgICAgc3Rh
dGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29wZShVUkwoSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnNjb3BlKCku
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAppbmRleCA1MDUyMGI2YTE0MWIxODNmMDQ4ZGU2MDkzMjlmOWNjODFmMjU0ODcwLi42
MjYxN2NiODdhMTBjMTVjNTIzOGUwYzBjYWE3NjdmMmJlOGFjODJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkZvcm1EYXRhLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2Fk
ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmNwcAppbmRleCBhY2Q2NWU5YzgwYTA2N2YyNzJhNThlMWQ5NzM1YzExZmU2NTEy
YTk0Li4xZmI0MTVlMmQyZDA4NjUzZWZjYTI3MWJlOWM4ZjBlYWU0NTRmZjM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuaAppbmRleCBkZTIyYzc5ZjhlOGQwZTJiODE3MjRmNjUxMTFhOWYxMGE1ZDIwMzY5
Li4zMjEwZTMyOTllNmZjYjgzMmZjMzljOGVkNmNhOGU2Njc4YmM2YmMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmgKQEAgLTQwLDcgKzQwLDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBVUkw7CiBzdHJ1Y3QgQ29va2llOwogfQogCkBAIC03OCw5ICs3Nyw5IEBAIGNsYXNzIFdlYkNv
b2tpZU1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjCiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6
OlNlc3Npb25JRCwgV2FsbFRpbWUsIENhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBzZXRDb29raWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENhbGxiYWNrSUQpOwotICAg
IHZvaWQgc2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1
bWVudFVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
bWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEFsbENvb2tpZXMoUEFM
OjpTZXNzaW9uSUQsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2llcyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29r
aWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQg
cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OwogICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZTNkZTlkOGNmYWI5ZmQ1ZjZmYjY4YTJj
MDcxMDI2MmE4NTVkYzQ0OC4uMGIxZmQ1NTllMGJlYjI2ZTAwMzc5NDM0YWRhZTRlNWM5ZTQ3ZGFh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI5LDkgKzI5LDkgQEAK
ICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiAg
ICAgdm9pZCBTZXRDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29y
ZTo6Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9p
ZCBTZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVu
dFVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBTZXRDb29raWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cywgVVJMIHVybCwgVVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgdm9pZCBHZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRDb29raWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxl
dGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2ll
IGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1l
IHRpbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1t
CmluZGV4IGMyYjE0N2M1ZjcyMWI5NTQwNzQ1YjY0OGQyMGJiY2I3Mjg0NzFhYmUuLjZlOTAyOGRi
NWM5OTdiZDJhMzFmZWUxOGEzM2MxMjRiN2ZmMTQyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3Vz
dG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCkBA
IC0zNCw4ICszNCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRF
bmNvZGluZy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTlNVUkxDb25uZWN0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBiNjc2NjE0OWVl
ZDExZTljMjhiMGUxNDMzYWU2ZGVjMGFkNWQ2OTk3Li40ZTBmN2ZhN2RlNjgzYmNhMTI2NTg4ZDFj
NDEyM2NkNWJhZmE0MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBAIC03MCw3ICs3MCw3
IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1
cmwpOwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5l
Y3Rpb25DaGVjaykKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogewog
ICAgIC8vIFRoZSBjb25uZWN0aW9uIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBpZiBOZXR3b3JrUHJv
Y2VzcyBwcmV2b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJlYXNvbi4KICAgICBCbG9iRm9yQ29ubmVj
dGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5k
KGNvbm5lY3Rpb24pOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29ya0Nvbm5lY3Rpb25U
CiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQogCi12b2lkIE5ldHdvcmtCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQordm9pZCBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJM
LCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBt
YXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgTmV0d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQg
Zm9yIGFueSByZWFzb24uCiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0
ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKQEAgLTExMyw3
ICsxMTMsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNs
aWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKgogICAgIG1hcEl0ZXJhdG9yLT52YWx1
ZS5hZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxv
YlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwpCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9i
VVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwm
IHVybCkKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYg
TmV0d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9yIGFueSByZWFzb24uCiAgICAgQmxv
YkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5l
Y3Rpb24uZmluZChjb25uZWN0aW9uKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIE5ldHdvcmtC
bG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKiBjb25uZQogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5yZW1vdmUodXJsKTsKIH0KIAotdWlu
dDY0X3QgTmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQordWludDY0X3Qg
TmV0d29ya0Jsb2JSZWdpc3RyeTo6YmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9ibG9ic0ZvckNv
bm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbikgfHwgIW1fYmxvYnNGb3JDb25uZWN0aW9uLmZp
bmQoY29ubmVjdGlvbiktPnZhbHVlLmNvbnRhaW5zKHVybCkpCiAgICAgICAgIHJldHVybiAwOwpA
QCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6Y29ubmVjdGlvblRv
V2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQCiAgICAgbV9ibG9ic0Zv
ckNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwogfQogCi1WZWN0b3I8UmVmUHRyPEJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVzSW5CbG9iKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCkKK1ZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JS
ZWdpc3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9ibG9ic0ZvckNvbm5lY3Rpb24u
Y29udGFpbnMoJmNvbm5lY3Rpb24pIHx8ICFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKCZjb25u
ZWN0aW9uKS0+dmFsdWUuY29udGFpbnModXJsKSkKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Js
b2JSZWdpc3RyeS5oCmluZGV4IGMxOWE2NTllMGVmNDU1YmIxMDg4YmNmODVjMjlmZGVhYzkzNzI2
MzkuLjkwNmI5ZThhNTJmZTRjZmEwMjY2Y2Q5NzFkNzE4Y2UyYzkyNTU0NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9i
UmVnaXN0cnkuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZTsKQEAgLTQ2LDI1ICs0NiwyNSBAQCBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3Jr
QmxvYlJlZ2lzdHJ5KTsKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CiAgICAgc3RhdGljIE5l
dHdvcmtCbG9iUmVnaXN0cnkmIHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCByZWdpc3RlckZpbGVC
bG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29y
ZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29u
bmVjdGlvbkNoZWNrKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQp
OwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB1aW50NjRfdCBibG9iU2l6ZShOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQg
cmVnaXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJs
b2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayk7CisgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcm
IGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29u
c3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsK
KyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiwgY29uc3QgVVJMJik7CisgICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFy
eUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZCAoY29u
c3QgVmVjdG9yPFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCB3cml0
ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5n
JiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYgY29tcGxldGlvbkhhbmRsZXIp
OworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JVUkwsIGNvbnN0
IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKTsKIAogICAgIHZvaWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBXZWJDb3JlOjpV
UkwmKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+
IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgVVJMJik7
CisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxl
c0luQmxvYihjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICB+TmV0d29ya0Jsb2JSZWdpc3Ry
eSgpOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiwgSGFzaFNldDxXZWJDb3JlOjpVUkw+PiBCbG9iRm9yQ29ubmVjdGlvbk1hcDsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBIYXNoU2V0PFVSTD4+
IEJsb2JGb3JDb25uZWN0aW9uTWFwOwogICAgIEJsb2JGb3JDb25uZWN0aW9uTWFwIG1fYmxvYnNG
b3JDb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGQwMzc4N2Zi
NGEyNWQ0OWFlYzNlZTY3NzViODc1YmY4YjIwMzAzOTMuLmY1ODRiYzQ2NjA4NTFjMDBhZmFhYmUx
NWZiYjA5OWFhMjlhNmRjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE1MCwzMiAr
MTUwLDMyIEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDogcHVibGljIFJl
ZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByCiAgICAgdm9pZCByZW1vdmVMb2FkSWRl
bnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICB2b2lkIHBhZ2VMb2FkQ29tcGxl
dGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCk7CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291
cmNlTG9hZElkZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJl
Y2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJl
Y3RVUkwpOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9h
ZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnREb3du
bG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lkIGNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qg
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAg
IHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBTdHJpbmcmIGNvb2tp
ZVN0cmluZywgYm9vbCYgc2VjdXJlQ29va2llc0FjY2Vzc2VkKTsKLSAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYg
Y29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQpOworICAgIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29sJiByZXN1
bHQpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcywgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wmIHNlY3VyZUNvb2tpZXNBY2Nl
c3NlZCk7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2
b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNj
ZXNzZWQpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAK
LSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJM
JiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNo
ZWNrKTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPFdl
YkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGJv
b2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKTsKICAgICB2b2lkIHByZXJlZ2lzdGVyU2Fu
ZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVCYWNrZWRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsK
LSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVC
YWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
c3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7Ci0gICAgdm9pZCBibG9iU2l6ZShj
b25zdCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7Ci0gICAgdm9pZCB1bnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBj
b25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsK
KyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
c3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CisgICAgdm9pZCBibG9iU2l6ZShj
b25zdCBVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxv
YlVSTChjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIp
OwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25zdCBXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RGF0YUtleSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9p
ZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpOwogCi0gICAg
dm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oV2ViQ29yZTo6VVJMJiYsIFBBTDo6U2Vzc2lvbklELCBT
dHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90KTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldFN0
cmVhbShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0
X3QpOwogICAgIHZvaWQgZGVzdHJveVNvY2tldFN0cmVhbSh1aW50NjRfdCk7CiAgICAgCiAgICAg
dm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA3NzNkOWQ4ZTEwMzNiNjJlNDgxMzNi
OTYyMGI2MjliZjc4ODZmZWFkLi45ZWZlYTU3NTRiNGRjY2Y2MzNiMWU0MzA0ZGJhMzc0NGQ3ZGEz
ZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0
LDI4ICszNCwyOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJp
bmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKLSAgICBTZXRDb29raWVzRnJvbURPTShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcs
IGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAgICBTZXRDb29raWVzRnJvbURPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3Ry
aW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJv
b2wgZW5hYmxlZCkKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVt
IFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAo
U3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKQotICAgIEdl
dFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQ
YXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6
OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpCi0g
ICAgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIHVy
bCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bSBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBj
b29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykKKyAgICBHZXRSYXdDb29r
aWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIC0+IChWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAgIERlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogCi0gICAgUmVnaXN0
ZXJGaWxlQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUp
Ci0gICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFZlY3RvcjxXZWJDb3JlOjpC
bG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9i
VVJMRnJvbVVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMLCBib29sIHNo
b3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjaykKKyAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1
cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNp
b25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVy
bCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlw
ZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmwsIFVSTCBzcmNVUkwsIGJvb2wg
c2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogICAgIFByZXJlZ2lzdGVyU2FuZGJveEV4dGVu
c2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJsb2IoVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhz
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4dGVuc2lvbkhhbmRsZXMp
Ci0gICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoV2ViQ29yZTo6VVJMIHVy
bCwgV2ViQ29yZTo6VVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29u
dGVudFR5cGUpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoV2ViQ29yZTo6VVJMIHVybCwg
V2ViQ29yZTo6VVJMIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5y
ZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCkKLSAgICBCbG9iU2l6ZShXZWJDb3JlOjpV
UkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkKKyAgICBSZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChVUkwgdXJsLCBVUkwgc3JjVVJMLCBTdHJpbmcgZmlsZUJhY2tlZFBh
dGgsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGb3JTbGljZShVUkwg
dXJsLCBVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKKyAgICBVbnJlZ2lz
dGVyQmxvYlVSTChVUkwgdXJsKQorICAgIEJsb2JTaXplKFVSTCB1cmwpIC0+ICh1aW50NjRfdCBy
ZXN1bHRTaXplKQogICAgIFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFZlY3RvcjxTdHJpbmc+
IGJsb2JVUkxzLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcikKIAogICAgIFN0b3JlRGVyaXZl
ZERhdGFUb0NhY2hlKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhS2V5IGtleSwgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCiAKICAgICBTZXRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAotICAgIENyZWF0ZVNvY2tldFN0cmVh
bShXZWJDb3JlOjpVUkwgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNo
ZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICBDcmVhdGVTb2NrZXRTdHJlYW0o
VVJMIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24s
IHVpbnQ2NF90IGlkZW50aWZpZXIpCiAKICAgICBFbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwCmluZGV4IGNmNGU2NGQ1MDNmMWE5ZWUwYmRjNWUwZDUyOGM0N2YyOTQyOWE2NDEu
LjA1OWExMzAxNDNiYTVmM2E3ZTBkMWViMWIxNDY2ZmE5MWZhMGI5OTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTEwNiw3ICsx
MDYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDbwogICAgIGlmIChyZXNwb25zZS5pc0hUVFAw
OSgpKSB7CiAgICAgICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwotICAgICAgICBpZiAocG9ydCAm
JiAhaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkp
KSB7CisgICAgICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChw
b3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoeyBTdHJpbmcoKSwgMCwgdXJs
LCAiQ2FuY2VsbGVkIGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGgoKSArICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIiB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmlu
ZGV4IDY1ZWFiYjJiZjNiNTlkMmZkNDdhYTQxMjY1ZGZmNjk5NDhiMzgwZGIuLmQ3M2E2ZWE2ZmYx
MmMzMDRiZmE3NGJhYjk1YmU2YWVlZTY2Yjg5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNDgsOSArNDgsOSBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMTc5N2Q3ZTAyNWEwNGRk
MjNjZTQ5N2M4MTFhZjI4MWEyNTk3MTI1ZC4uODQ2Y2I0ZDNhZDNiYzk1YTBhZWUxYmJlZTA2MDZk
MjMxNDVjMWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcjsKIAogY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogcHVibGljOgotICAgIE5ldHdvcmtMb2FkQ2hl
Y2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBXZWJDb3Jl
OjpVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVm
bGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlKTsKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoV2ViQ29y
ZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcm
JiByZWZlcnJlciwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBm
YWxzZSk7CiAgICAgfk5ldHdvcmtMb2FkQ2hlY2tlcigpOwogCiAgICAgdXNpbmcgUmVxdWVzdE9y
RXJyb3IgPSBFeHBlY3RlZDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3I+OwpAQCAtNjksMTQgKzY5LDE0IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKIAogICAgIHZvaWQg
c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyYmIGhlYWRlcnMpIHsgbV9jc3BSZXNwb25zZUhlYWRlcnMgPSBXVEZNb3ZlKGhl
YWRlcnMpOyB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICB2b2lkIHNldENv
bnRlbnRFeHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6OlVSTCYmIG1haW5Eb2N1bWVudFVSTCwg
c3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiBpZGVudGlmaWVy
KQorICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3Vt
ZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlk
ZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5Eb2N1bWVudFVSTCA9IFdURk1vdmUobWFp
bkRvY3VtZW50VVJMKTsKICAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
ID0gaWRlbnRpZmllcjsKICAgICB9CiAjZW5kaWYKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0
IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3N0b3JlZENyZWRlbnRp
YWxzUG9saWN5OyB9CiAKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZEluZm9ybWF0aW9uIHRha2VO
ZXR3b3JrTG9hZEluZm9ybWF0aW9uKCkgeyByZXR1cm4gV1RGTW92ZShtX2xvYWRJbmZvcm1hdGlv
bik7IH0KQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogCiAgICAgdm9pZCBjb250aW51
ZUNoZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhh
bmRsZXImJik7CiAKLSAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNrKGNvbnN0IFdlYkNvcmU6
OlVSTCYpIGNvbnN0OworICAgIGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2soY29uc3QgVVJMJikg
Y29uc3Q7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsK
ICAgICB2b2lkIGNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKQEAgLTExOCwxMSArMTE4LDExIEBAIGNs
YXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9h
ZENoZWNrZXI+IHsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQ7CiAgICAgV2ViQ29yZTo6SFRUUEhl
YWRlck1hcCBtX29yaWdpbmFsUmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBmb3IgQ09SUyBjaGVj
a3MuCiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX2ZpcnN0UmVxdWVzdEhlYWRlcnM7IC8v
IE5lZWRlZCBmb3IgQ09SUyBjaGVja3MuCi0gICAgV2ViQ29yZTo6VVJMIG1fdXJsOworICAgIFVS
TCBtX3VybDsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwog
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzPiBtX2NzcFJlc3BvbnNlSGVhZGVyczsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQotICAgIFdlYkNvcmU6OlVSTCBtX21haW5Eb2N1bWVudFVSTDsKKyAgICBVUkwgbV9tYWlu
RG9jdW1lbnRVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIApAQCAt
MTMxLDcgKzEzMSw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKICAgICBib29sIG1faXNTaW1wbGVSZXF1ZXN0
IHsgdHJ1ZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIHNpemVfdCBtX3JlZGlyZWN0Q291
bnQgeyAwIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fcHJldmlvdXNVUkw7CisgICAgVVJMIG1fcHJl
dmlvdXNVUkw7CiAgICAgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5IG1fcHJlZmxpZ2h0UG9saWN5
OwogICAgIFN0cmluZyBtX2RudEhlYWRlclZhbHVlOwogICAgIFN0cmluZyBtX3JlZmVycmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCBlYjg4NjY0ODEzOWNjN2I3NTllNzJjNjgxODI4MGI1ZDA0NzEwOWUwLi4wNmMxYjNhZDRlYWU0
Y2Q3ZDQyZDI5MDQ0NTUyOGE5OTRjY2E5MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNzYsMTMgKzc2LDEzIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNs
dWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2
aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJz
ZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAjZW5kaWYKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBXZWJDb3JlOjpV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBo
YW5kbGVGb3JXcml0aW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpCit2b2lkIE5ldHdvcmtQcm9jZXNz
Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZUZvcldyaXRpbmcsIHVpbnQ2NF90IHJl
cXVlc3RJRCkKIHsKICAgICBhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZShXVEZNb3ZlKGhhbmRsZUZvcldyaXRpbmcpKTsKICAgICBpZiAoIWV4dGVuc2lvbikgewpAQCAt
MTAwOCw3ICsxMDA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVTdG9yYWdlUGFy
YW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF8KICAgICAgICAgY2FsbGJh
Y2soU3RyaW5nIHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0sIHF1b3RhKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCiB7CiAjaWYg
RU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CmluZGV4IGZiMzc3M2QxZWZlMWQzNDIxNmQ2YWVmY2U0ODUzZWM3ODk5ZGE1NGMuLmFhYWRiMTMz
Yzc5ZmZhMTFjMGNmNjgyMzAyZTdiZDBhMGU2MWQzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTY1LDcgKzY1LDYgQEAgY2xhc3MgUHJv
dGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFNXU2VydmVyOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiBlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5Owogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogc3RydWN0IFNlY3Vy
aXR5T3JpZ2luRGF0YTsKQEAgLTE3Miw3ICsxNzEsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6
IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQKICAg
ICB1c2luZyBDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHF1b3RhKT47CiAgICAgdm9pZCBjYWNoZVN0
b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2Fs
bGJhY2smJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBXZWJDb3JlOjpVUkwmLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8o
Y29uc3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9n
Q29va2llSW5mb3JtYXRpb247IH0KQEAgLTI5Myw3ICsyOTIsNyBAQCBjbGFzcyBOZXR3b3JrUHJv
Y2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGll
bnQKICAgICB2b2lkIHN5bmNBbGxDb29raWVzKCk7CiAgICAgdm9pZCBkaWRTeW5jQWxsQ29va2ll
cygpOwogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIHVpbnQ2NF90
IHJlcXVlc3RJRCk7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIHVpbnQ2NF90IHJl
cXVlc3RJRCk7CiAKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldElnbm9yZVRMU0Vycm9ycyhi
b29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFjNzNiZWQ0MmUyZDQ1YTdjZThjMWZjNDRiM2M3NmYy
YmIyYTllYmUuLjc4ZjljYjI5ODZkMzA0YzViMDJlZjgzNWI3MTk3MjBjNDMwZTIzYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtNzcsOSArNzcsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkR2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXMo
dWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
IGV4dGVuc2lvbnMpCiAjZW5kaWYKIAotICAgIFdyaXRlQmxvYlRvRmlsZVBhdGgoV2ViQ29yZTo6
VVJMIGJsb2JVUkwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBoYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgV3JpdGVCbG9iVG9GaWxlUGF0aChV
UkwgYmxvYlVSTCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IGhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIFByZWNvbm5lY3RUbyhXZWJDb3Jl
OjpVUkwgdXJsLCBlbnVtIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5KTsKKyAgICBQcmVjb25uZWN0VG8oVVJMIHVybCwgZW51bSBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFVwZGF0ZVByZXZhbGVudERv
bWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxT
dHJpbmc+IGRvbWFpbnNUb0Jsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QsIHVpbnQ2NF90IGNv
bnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkNjM3MzhhZWVjOGEzNTM1ZDA5
NjEwMzY5ZTc4NjQ5MWIxZTlkMmY5Li4yNzQzZTEyOWM4NzlmNmIwYzI1YzIxMWJhMDA4OTM5Nzhh
M2EwYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNz
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIDogcHVibGljIE5ldHdvcmtMb2FkUGFyYW1l
dGVycyB7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IGZyYW1l
QW5jZXN0b3JPcmlnaW5zOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBX
ZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMOworICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CiAg
ICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGQx
YzY4ODllYTY0OGNjYWNmMDhhYzE0YmU3YjZjNTJjYTNiMDNkMzYuLjQzYWVkNTQ2ZGVmNjBlOGFk
Y2NlZmMxMzlhNzJmODZhZmY3NWRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk3Niw3ICs5NzYsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25z
dAogICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKCJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwg
b3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpj
cmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2lu
YWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50aWZp
ZXIoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihjb25z
dCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tl
ZENvb2tpZUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dl
ZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSk7CiAKQEAg
LTEwMDMsNyArMTAwMyw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlv
bihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPCiAjdW5kZWYgTE9DQUxf
TE9HX0lGX0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRl
cm5hbChjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3Rh
dGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVs
LCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBp
ZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExv
Z0Nvb2tpZUluZm9ybWF0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhZmIwZTljNzk1NjYzZWFiMDVl
YzRhZjRmMzgyNTRiNzdmYWVjMWRhLi5mODc0ZjhkYmE2ZTljNWU1NjEwZjczNGQzNGNkNDc2MDFi
MDRhODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIgZmluYWwKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRpYyBib29sIHNob3VsZExvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oY29uc3Qg
U3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmll
cik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAg
LTEzNCw3ICsxMzQsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZmluYWwKICAgICB2
b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYpOwogICAg
IHZvaWQgY29udGludWVQcm9jZXNzaW5nQ2FjaGVkRW50cnlBZnRlckRpZFJlY2VpdmVSZXNwb25z
ZShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogCi0gICAgYm9vbCBzaG91
bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJD
b3JlOjpVUkwmKTsKKyAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25z
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9h
ZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKIAogICAgIGVudW0gY2xhc3MgRmlyc3RMb2FkIHsgTm8sIFllcyB9OwpA
QCAtMTY5LDcgKzE2OSw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBmaW5hbAogCiAg
ICAgLy8gQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAgdm9pZCBhZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVk
IGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydChXZWJDb3JlOjpV
UkwmJiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRDU1BW
aW9sYXRpb25SZXBvcnQoVVJMJiYsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAg
ICAgdm9pZCBlbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXZWJDb3JlOjpTZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpIGZpbmFsOwogCiAgICAgdm9pZCBsb2dT
bG93Q2FjaGVSZXRyaWV2ZUlmTmVlZGVkKGNvbnN0IE5ldHdvcmtDYWNoZTo6Q2FjaGU6OlJldHJp
ZXZlSW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldFN0cmVhbS5jcHAKaW5kZXggNDJkMzZiYzRjYzNmZTQzMmYzNTI0YzgzYjBjOWY4ODRl
OGQ3NDQzYy4uYzVhNjJjNjhmZTlkYTY1NmU0MjMzZmJkMTM2OWEyYzY2MWUyOWE0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0u
Y3BwCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1SZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gTmV0d29ya1NvY2tldFN0cmVh
bTo6Y3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYg
YXVkaXREYXRhKQorUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtTb2NrZXRTdHJlYW06
OmNyZWF0ZShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU29ja2V0U3RyZWFtKFdURk1vdmUo
dXJsKSwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBpZGVudGlmaWVyLCBjb25uZWN0
aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXggOTA2ZTU4ZWJmNTc0MjVkNjgz
NzcwODkxNjg1ZmRhYmQyYTgzN2JjOC4uMzI2ODcxNmY0NDY5YzA5OTNmMjU5N2QwOWNiZTE1ODhl
NmYyM2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0U3RyZWFtLmgKQEAgLTM5LDE0ICszOSwxMyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOwotY2xh
c3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1NvY2tldFN0
cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRTdHJlYW0+LCBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmLCBQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25u
ZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIHN0
YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFVSTCYmLCBQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25u
ZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogICAgIH5O
ZXR3b3JrU29ja2V0U3RyZWFtKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtNjcsNyArNjYsNyBAQCBjbGFzcyBOZXR3
b3JrU29ja2V0U3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1NvY2tldFN0cmVhbT4s
IHB1YmxpYyBJUEM6OgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZp
bmFsOwogCi0gICAgTmV0d29ya1NvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwmJiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6
Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAg
ICBOZXR3b3JrU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29y
ZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogCiAgICAgdWludDY0X3QgbV9pZGVu
dGlmaWVyOwogICAgIElQQzo6Q29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDlmMGM2Yjg2YjQyMGY0NTViZmZjMmRlNmI5
NGViZTdjOGJlMTQzYTAuLmQ0NTQzZjIzNWI5MDQ3YzU3MDljODFmZmRhMzg2MWM1OWY3ODQyNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTM2LDcgKzM2LDYg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIGNs
YXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNTEsNyArNTAsNyBAQCBjbGFzcyBQaW5nTG9hZCBmaW5hbCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxQaW5nTG9hZD4sIHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQwogcHJpdmF0ZToKICAgICB+
UGluZ0xvYWQoKTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgY3VycmVudFVSTCgpIGNvbnN0
OworICAgIGNvbnN0IFVSTCYgY3VycmVudFVSTCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3Q7CiAKICAgICB2
b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMmNhNjYy
NWQxYzAwZTZkMjdkNTI1ODg2MTcyMWZjYzUwYjUzNGI1NS4uOWQxNzAzNzg5NGY1YjUxMTAzOGRl
MDZiYWQwOWRkN2Y2MzRjN2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aApAQCAtOTAsOCArOTAsOCBAQCBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24gOiBwdWJsaWMg
V2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6OgogICAgIHZvaWQgc3Rh
cnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2Vi
Q29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwgU3RyaW5nJiYgcmVm
ZXJyZXIpOwogICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7CiAKLSAgICB2b2lk
IG1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7Ci0gICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKHVp
bnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVu
dFVSTCk7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdpc3RyYXRpb25N
YXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpOworICAgIHZvaWQgZ2V0UmVnaXN0cmF0
aW9ucyh1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRV
UkwpOwogCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyPiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDA2
MTk1YjhhZDE5NDYxOGNkZmY2ZmZlOWQ1NzVlOWYzYTQ0NGE3ZWQuLjI5NGJkNTk5ZDQwYmNjMjEx
ODRkOTdkN2FkNTBjYmM4YzMwMWEyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsOSArMzYsOSBAQCBtZXNzYWdlcyAtPiBX
ZWJTV1NlcnZlckNvbm5lY3Rpb24gewogCiAgICAgRGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21p
c2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBrZXkpCiAKLSAgICBNYXRj
aFJlZ2lzdHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRl
bnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFdl
YkNvcmU6OlVSTCBjbGllbnRVUkwpCi0gICAgV2hlblJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90
IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkK
LSAgICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJl
cXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9y
aWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKKyAgICBNYXRjaFJlZ2lzdHJhdGlvbih1aW50
NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGllbnRVUkwpCisgICAg
V2hlblJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJl
cXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9y
aWdpbiwgVVJMIGNsaWVudFVSTCkKKyAgICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZp
Y2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKICAgICBSZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BP
cmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBj
b250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogICAgIFVucmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBkODZhYjYw
OTM5Nzc2NWM1YmJmYTc5MzU0YTExNWI3Yzc0OTFkMjdlLi42MTE2OTJkMTk0OTk3MmZlYjFlM2Nl
ODViODhiODU4NTU5ZmU2NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAg
bWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKICAgICBGaW5kQ2xp
ZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpOwogICAg
IE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFp
bSh1aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgU2V0U2NyaXB0UmVzb3Vy
Y2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6
VVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgV2ViQ29yZTo6VVJMIHJlc3BvbnNlVVJMLCBT
dHJpbmcgbWltZVR5cGUpOworICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQs
IFVSTCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVUeXBlKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA1NWEwOGJjMDhjMDhkMWQ4
YThhYzg2MjI4ZGY2NTAxYTkxNTlhODdhLi5iMTliZmQxMDA1NzI2NzY0MjE2NzAwZjViMzg0YzZi
ZWVmMTQzMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBF
bmdpbmU6OnJldHJpZXZlQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiYgb3IKIH0KIAogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpVUkwmJiB1cmwsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGZyb20oc2Vz
c2lvbklELCBbY2FjaGVJZGVudGlmaWVyLCB1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAgICAgIGVuZ2lu
ZS5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHVybCksIFdURk1vdmUo
Y2FsbGJhY2spKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNo
ZXMoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZQog
ICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBVUkwmJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNo
ZShjYWNoZUlkZW50aWZpZXIsIFt1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA4YzJlOGNjZTE0ZDgx
MjkwOTdmNzFhYzIxZTI2ZTM2MWZkNmQ2ODMzLi43ZTE0MjI1YmVlNTBhOTc3YjVmYzkyNTE0NjU0
NjdiYjM0ZDgzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgRW5n
aW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEVu
Z2luZT4gewogICAgIHN0YXRpYyB2b2lkIHJlbW92ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVy
Q2FsbGJhY2smJik7CiAgICAgc3RhdGljIHZvaWQgcmV0cmlldmVDYWNoZXMoUEFMOjpTZXNzaW9u
SUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwogCi0gICAgc3RhdGlj
IHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0Nh
bGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBwdXRSZWNvcmRzKFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29y
ZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogCkBAIC0xMDQsNyAr
MTA0LDcgQEAgY2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPEVuZ2luZT4gewogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRh
dGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNlbnRhdGlvbigpOwog
Ci0gICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsK
KyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYm
LCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwogICAgIHZvaWQg
cHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCmluZGV4IDdmYjZl
MDgxOGVjMjQxNTk1ZjgyYzY3NzJjODRiNWUzMjBjZjc2MTUuLjg5ODAxOGU0ZWEzN2ZiMTJmYjYz
MmIxOTJmZThhZWExYzcxNDY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKQEAgLTQ1LDcg
KzQ1LDcgQEAgc3RydWN0IFJlY29yZEluZm9ybWF0aW9uIHsKIAogICAgIHVpbnQ2NF90IHNpemUg
eyAwIH07CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgYm9vbCBo
YXNWYXJ5U3RhciB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFyeUhl
YWRlcnM7CiB9OwpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBDYWNoZSB7CiAgICAgY29uc3QgU3Ry
aW5nJiB1bmlxdWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVOYW1lOyB9CiAgICAgYm9v
bCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OlVuaW5pdGlhbGl6
ZWQ7IH0KIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZXRy
aWV2ZVJlY29yZHMoY29uc3QgVVJMJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHND
YWxsYmFjayYmKTsKICAgICBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvIGluZm8o
KSBjb25zdCB7IHJldHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07IH0KIAogICAgIHZvaWQg
cHV0KFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKQEAgLTk0LDggKzk0
LDggQEAgY2xhc3MgQ2FjaGUgewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERlY29kZWRSZWNv
cmQ+IGRlY29kZVJlY29yZEhlYWRlcihjb25zdCBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29y
ZCYpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNG
cm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZv
cm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAg
IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFVSTCYpOwor
ICAgIGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0
IFVSTCYpIGNvbnN0OwogICAgIFJlY29yZEluZm9ybWF0aW9uJiBhZGRSZWNvcmQoVmVjdG9yPFJl
Y29yZEluZm9ybWF0aW9uPiosIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQm
KTsKIAogICAgIHZvaWQgc3RvcmVSZWNvcmRzKFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnND
YWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCmluZGV4IDI5
YjM4YjFhMmUzZWJiNDExNzcyYTJhZWFhYmRjZWZiM2NkNGRlNzMuLmM2MmNiM2FiODU3NDhhNWIw
Yzg5ZTU3YjE1Y2YxYzA1NmQ4NzEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcQogICAgIH0p
OwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jk
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCkKK3ZvaWQgQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVVJMJiYgdXJsKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
UmVjb3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hlICUiIFBSSXU2NCwgcmVxdWVzdElkZW50aWZp
ZXIsIGNhY2hlSWRlbnRpZmllcik7CiAgICAgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoc2Vzc2lv
bklELCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVm
KG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVy
XShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24uaAppbmRleCBiYzg4MGY1ZWI1ODlhZWRjZmVlNDVhMjM0MTgzOGIyNTNkYmE2MTA0Li42YTNk
ZGM2M2QyYTA4ODVjYTRjNTE0MjVlNTZjM2E1Y2M5NjgzYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dAogICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZW1vdmVSZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlcyhQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlmaWVyLCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mJiwgdWludDY0X3QgdXBkYXRlQ291bnRlcik7CiAKLSAgICB2b2lkIHJl
dHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYpOworICAgIHZvaWQgcmV0
cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGlu
Z1JlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9u
SUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGUzMTA3ZTIw
MTQ2ZDU5MDAzYjIwNmIxZGVkZjZmODYzY2I4YzU1ZWUuLjYwZTM5YWEyYzQwNWRjYzk4YWFhOTIw
MDk0YWUxMGQ4ZWFiNTQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbiB7CiAgICAgQ2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbik7CiAgICAgRW5naW5lUmVwcmVzZW50YXRpb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcik7CiAK
LSAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwg
dXJsKTsKKyAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwgdXJs
KTsKICAgICBEZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkNhY2hlUXVlcnlP
cHRpb25zIG9wdGlvbnMpOwogICAgIFB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBW
ZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3JkKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4
IGYxNWFkNmJkMGFkYzhjNzM1OGMxYTk0OTk4MGQ4NDA5ZTYyODMzYTQuLjAxN2FkNjNlMmM5ZWI3
MzM0NWM1NzYxZDlhYTQ3YmRmZjY5ZTMzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCBhMTU1ZTlmMmUzYWUxMzgx
NDQzYTRhMGNlMGIyNDA3NTdlNGE2OWViLi5kMDY2YTg5NWI5NDA1ODFkZWE4Y2MxM2JhNDQyMzQ1
NzllNTZkZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI5NCw3ICsyOTQsNyBA
QCBzdGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9zdGljS2V5KFVz
ZURlY2lzaW9uIGRlY2lzaW9uKQogCiB2b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENh
Y2hlZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVXNlRGVjaXNpb24gZGVjaXNpb24pCiB7Ci0g
ICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTCByZXF1
ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAoZGVjaXNpb24gPT0gVXNlRGVjaXNpb246
OlVzZSkgewogICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQ
YWdlSUQgJSIgUFJJdTY0ICI6ICVzIGlzIGluIHRoZSBjYWNoZSBhbmQgaXMgdXNlZCIsIHdlYlBh
Z2VJRCwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIE5ldHdv
cmtQcm9jZXNzOjpzaW5nbGV0b24oKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQod2Vi
UGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5ldHdvcmtDYWNoZUtleSgp
LCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJldHJpZXZhbEtleSgpLCBXZWJDb3Jl
OjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MsIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6WWVz
KTsKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENh
Y2hlZEVudHJ5KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksCiAKIHZvaWQgU3Rh
dGlzdGljczo6cmVjb3JkUmV2YWxpZGF0aW9uU3VjY2Vzcyh1aW50NjRfdCB3ZWJQYWdlSUQsIGNv
bnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7
Ci0gICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTCBy
ZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdv
cmtQcm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIHdhcyBzdWNjZXNzZnVsbHkgcmV2
YWxpZGF0ZWQiLCB3ZWJQYWdlSUQsIHJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OwogCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFJlc3VsdCh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0
d29ya0NhY2hlS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6cmV2YWxpZGF0
aW5nS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0UGFzcywgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlOjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCmlu
ZGV4IGVmMjUyYTFjN2I5YzZiZDU2ODA5NzMwYzJkMDQ5MzM1MzFmMDRjOWIuLjQzOTIxYTAwMjRl
OTdkZDM2ZjBkMjIxODUxZWM0YWU5ODc2MWExNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291
cmNlc0VudHJ5LmgKQEAgLTIzLDE1ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnlf
aAotI2RlZmluZSBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeV9oCisjcHJhZ21hIG9uY2UK
IAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKIAog
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFt
ZXNwYWNlIE5ldHdvcmtDYWNoZSB7CkBAIC01MCw3ICs0OSw3IEBAIGNsYXNzIFN1YnJlc291cmNl
SW5mbyB7CiAgICAgV2FsbFRpbWUgZmlyc3RTZWVuKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFNl
ZW47IH0KIAogICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhbnNp
ZW50OyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNv
bnN0IHsgQVNTRVJUKCFtX2lzVHJhbnNpZW50KTsgcmV0dXJuIG1fZmlyc3RQYXJ0eUZvckNvb2tp
ZXM7IH0KKyAgICBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QgeyBBU1NF
UlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQogICAg
IGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyBB
U1NFUlQoIW1faXNUcmFuc2llbnQpOyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVyczsgfQogICAgIFdl
YkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KCkgY29uc3QgeyBBU1NFUlQoIW1f
aXNUcmFuc2llbnQpOyByZXR1cm4gbV9wcmlvcml0eTsgfQogCkBAIC02NSw3ICs2NCw3IEBAIGNs
YXNzIFN1YnJlc291cmNlSW5mbyB7CiAgICAgV2FsbFRpbWUgbV9maXJzdFNlZW47CiAgICAgYm9v
bCBtX2lzVHJhbnNpZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTYW1lU2l0ZSB7IGZhbHNl
IH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CisgICAgVVJMIG1f
Zmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX3JlcXVl
c3RIZWFkZXJzOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7
CiB9OwpAQCAtMTA3LDQgKzEwNiwzIEBAIGNsYXNzIFN1YnJlc291cmNlc0VudHJ5IHsKIH0gLy8g
bmFtZXNwYWNlIE5ldHdvcmtDYWNoZQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfQ0FDSEVf
U1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQotI2VuZGlmIC8vIE5ldHdvcmtDYWNoZVN1YnJlc291
cmNlc0VudHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcAppbmRleCA5NjYxNjhiNGUwNzgxMjQ4
ZTU1NjgxZmY0Yjc3N2U2ZTE2MDMwOTQ1Li5iMWMwZmIxMTFiZDViZDYxMTQ4OTk4YjRiOTdhN2Yw
ZjNlM2NhMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1
cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL0JyaWdhbmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODEs
OCArODEsNyBAQCBSZXF1ZXN0OjpSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIAogUmVxdWVzdDo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
KCkgY29uc3QKIHsKLSAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKHVybCk7Ci0gICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocGFyc2VyLnJlc3VsdCgpLCByZWZlcnJlciwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k+KHBvbGljeSkp
OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFVSTCh7IH0sIHVybCksIHJl
ZmVycmVyLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4o
cG9saWN5KSk7CiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKG1ldGhvZCk7CiAKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpCkBAIC0xMTgsOCArMTE3LDcgQEAgUmVzcG9u
c2U6OlJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
CiBSZXNwb25zZTo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0CiB7
Ci0gICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcih1cmwpOwotICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UocGFyc2VyLnJlc3VsdCgpLCBtaW1lVHlwZSwgZXhwZWN0ZWRM
ZW5ndGgsIHRleHRFbmNvZGluZ05hbWUpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UoVVJMKHsgfSwgdXJsKSwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5j
b2RpbmdOYW1lKTsKICAgICByZXNwb25zZS5zZXRIVFRQVmVyc2lvbih2ZXJzaW9uKTsKICAgICBy
ZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOwogICAgIHJlc3BvbnNlLnNldEhUVFBT
dGF0dXNUZXh0KHJlYXNvbik7CkBAIC0xNTIsOCArMTUwLDcgQEAgRXJyb3I6OkVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiBFcnJvcjo6b3BlcmF0b3IgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvcigpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNl
cihmYWlsaW5nVVJMKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKGRvbWFpbiwg
ZXJyb3JDb2RlLCBwYXJzZXIucmVzdWx0KCksIGxvY2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlPih0eXBlKSk7CisgICAgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBlcnJvcihkb21haW4sIGVycm9yQ29kZSwgVVJMKHsgfSwgZmFpbGluZ1VS
TCksIGxvY2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yOjpUeXBlPih0eXBlKSk7CiAKICAgICByZXR1cm4gZXJyb3I7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVy
ZU1hbmFnZXIuY3BwCmluZGV4IDI3Njg5ZWUzYjcyMzk4ZDg1MTIwZjczNjM1N2MwMDcyNDIyODll
OGUuLmQ1NjVhNGVhMzc3MWU0NjM3OTczZjcxOWNhMTk4YTI4YzU1N2UwZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3Jr
Q2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpbmNsdWRlICJOZXR3b3Jr
Q2FwdHVyZUxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRl
IDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE0Niw3ICsxNDYs
NyBAQCBSZXNvdXJjZSogTWFuYWdlcjo6ZmluZEJlc3RGdXp6eU1hdGNoKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogICAgIFJlc291cmNlKiBiZXN0TWF0Y2ggPSBu
dWxscHRyOwogICAgIGludCBiZXN0U2NvcmUgPSBrTWluTWF0Y2g7Ci0gICAgY29uc3QgYXV0byYg
cmVxdWVzdFBhcmFtZXRlcnMgPSBXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZv
cm0odXJsLnF1ZXJ5KCkpOworICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RQYXJhbWV0ZXJzID0gV1RG
OjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkpOwogICAgIGZvciAo
YXV0byBpUmVzb3VyY2UgPSBsb3dlcjsgaVJlc291cmNlICE9IHVwcGVyOyArK2lSZXNvdXJjZSkg
ewogICAgICAgICBpbnQgdGhpc1Njb3JlID0gZnV6enlNYXRjaFVSTHModXJsLCByZXF1ZXN0UGFy
YW1ldGVycywgaVJlc291cmNlLT51cmwoKSwgaVJlc291cmNlLT5xdWVyeVBhcmFtZXRlcnMoKSk7
CiAgICAgICAgIC8vIFRPRE86IENvbnNpZGVyIGlnbm9yaW5nIGFueSBtYXRjaGVzIDwgMCBhcyBi
ZWluZyB0b28gZGlmZmVyZW50LgpAQCAtMTY1LDcgKzE2NSw3IEBAIFJlc291cmNlKiBNYW5hZ2Vy
OjpmaW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogLy8gVE9ETzogQ29udmVydCB0byBhbiBpbnRlcmZhY2UgYmFzZWQgb24gUmVzb3VyY2VS
ZXF1ZXN0IHNvIHRoYXQgd2UgY2FuIGRvCiAvLyBkZWVwZXIgbWF0Y2hpbmcuCiAKLWludCBNYW5h
Z2VyOjpmdXp6eU1hdGNoVVJMcyhjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0
IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkxQYXJzZXI6
OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpCitpbnQgTWFuYWdlcjo6ZnV6enlN
YXRjaFVSTHMoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXVEY6OlVSTFBhcnNlcjo6VVJM
RW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBVUkwmIHJlc291cmNlVVJMLCBj
b25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNlUGFyYW1ldGVycykK
IHsKICAgICAvLyBUT0RPOiBjb25zaWRlciByZXF1aXJpbmcgdGhhdCBhbnkgdHJhaWxpbmcgc3Vm
Zml4ZXMgKGUuZy4sICIuanMiLAogICAgIC8vICIucG5nIiwgIi5jc3MiLCAiLmh0bWwiLCBldGMu
KSBzaG91bGQgYmUgYW4gZXhhY3QgbWF0Y2guCkBAIC00MTksNyArNDE5LDcgQEAgU3RyaW5nIE1h
bmFnZXI6Omhhc2hUb1BhdGgoY29uc3QgU3RyaW5nJiBoYXNoKQogICAgIHJldHVybiBwYXRoOwog
fQogCi1TdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwpCitTdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21h
aW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHVybC5wcm90b2NvbEhvc3RBbmRQb3J0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
cHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKaW5kZXggM2M2YjUwMTBkYTIzNDFlNjgyY2Ix
Y2EyNDAxYTA2NjBmMzljNzQxYS4uYzM2ODE2YzlhODlhMWM3ZWZhZDEwNGYxYjAzOTA4ODM2ZGNh
N2YzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05l
dHdvcmtDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5j
bHVkZSA8V2ViQ29yZS9GaWxlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04Miw3ICs4Miw3IEBAIGNs
YXNzIE1hbmFnZXIgewogICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgb3BlbkNhY2hlRmlsZShjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUpOwogCiAgICAgU3Ry
aW5nIHJlcXVlc3RUb1BhdGgoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAg
c3RhdGljIFN0cmluZyB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbihjb25zdCBXZWJDb3JlOjpV
UkwmKTsKKyAgICBzdGF0aWMgU3RyaW5nIHVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0
IFVSTCYpOwogCiBwcml2YXRlOgogICAgIE1hbmFnZXIoKSA9IGRlZmF1bHQ7CkBAIC05MCw3ICs5
MCw3IEBAIGNsYXNzIE1hbmFnZXIgewogCiAgICAgUmVzb3VyY2UqIGZpbmRFeGFjdE1hdGNoKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIFJlc291cmNlKiBmaW5kQmVzdEZ1
enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgaW50IGZ1enp5
TWF0Y2hVUkxzKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6
VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVxdWVzdFBhcmFtZXRlcnMsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgcmVzb3VyY2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2Rl
ZEZvcm0mIHJlc291cmNlUGFyYW1ldGVycyk7CisgICAgaW50IGZ1enp5TWF0Y2hVUkxzKGNvbnN0
IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiBy
ZXF1ZXN0UGFyYW1ldGVycywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCwgY29uc3QgV1RGOjpVUkxQ
YXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpOwogCiAgICAgdm9pZCBs
b2FkUmVzb3VyY2VzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcAppbmRleCA3MDRj
MGQ2YWQ0ZjY2YTBjM2NhYjNiYWYzZTk5NTYxZDg4ODRmMDQ1Li5mM2RjMjNjNTcwNjk0ZWYzYmJm
MjViYmJhMzIzNTFjZDgwZjc0MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIFJlc291cmNlOjpSZXNvdXJjZShjb25zdCBTdHJpbmcmIGV2ZW50Rmls
ZVBhdGgpCiB7CiB9CiAKLWNvbnN0IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6OnVybCgpCitjb25z
dCBVUkwmIFJlc291cmNlOjp1cmwoKQogewogICAgIGlmICghbV91cmwuaXNWYWxpZCgpKSB7CiAg
ICAgICAgIGF1dG8gZXZlbnRzID0gZXZlbnRTdHJlYW0oKTsKQEAgLTUyLDggKzUyLDcgQEAgY29u
c3QgV2ViQ29yZTo6VVJMJiBSZXNvdXJjZTo6dXJsKCkKICAgICAgICAgICAgIERFQlVHX0xPR19F
UlJPUigiRXZlbnQgc3RyZWFtIGRvZXMgbm90IGhhdmUgYSByZXF1ZXN0U2VudCBldmVudDogZmls
ZSA9ICIgU1RSSU5HX1NQRUNJRklFUiwgREVCVUdfU1RSKG1fZXZlbnRGaWxlUGF0aCkpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gcmVxdWVzdFNlbnRFdmVudCA9IFdURjo6Z2V0
PFJlcXVlc3RTZW50RXZlbnQ+KCpldmVudCk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkxQYXJz
ZXIgcGFyc2VyKHJlcXVlc3RTZW50RXZlbnQucmVxdWVzdC51cmwpOwotICAgICAgICAgICAgbV91
cmwgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgICAgICBtX3VybCA9IFVSTCh7IH0sIHJlcXVl
c3RTZW50RXZlbnQucmVxdWVzdC51cmwpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02OCwxMCAr
NjcsMTAgQEAgY29uc3QgU3RyaW5nJiBSZXNvdXJjZTo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21h
aW4oKQogICAgIHJldHVybiBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluOwogfQogCi1XZWJD
b3JlOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpxdWVyeVBhcmFtZXRlcnMo
KQorV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIFJlc291cmNlOjpxdWVyeVBhcmFtZXRl
cnMoKQogewogICAgIGlmICghbV9xdWVyeVBhcmFtZXRlcnMpCi0gICAgICAgIG1fcXVlcnlQYXJh
bWV0ZXJzID0gV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHVybCgpLnF1
ZXJ5KCkpOworICAgICAgICBtX3F1ZXJ5UGFyYW1ldGVycyA9IFdURjo6VVJMUGFyc2VyOjpwYXJz
ZVVSTEVuY29kZWRGb3JtKHVybCgpLnF1ZXJ5KCkpOwogCiAgICAgcmV0dXJuICptX3F1ZXJ5UGFy
YW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCmluZGV4IDc1NzZjMGQ1ZTAwODQ4
OTE2MmMxOGM5NjYwNGZlM2EzODdmMzllNWUuLmQ0OTNmNGE0YTM1YWQ4ZWE2Y2RiMmRkOGUwMjVk
NjkwYzU4OTI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaApAQCAtMjksOSArMjksOSBA
QAogCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1cmVFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IG5hbWVzcGFjZSBOZXR3b3JrQ2FwdHVyZSB7CkBAIC01NSwxNiArNTUsMTYgQEAgY2xhc3MgUmVz
b3VyY2UgewogcHVibGljOgogICAgIFJlc291cmNlKGNvbnN0IFN0cmluZyYgZXZlbnRGaWxlUGF0
aCk7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpOworICAgIGNvbnN0IFVSTCYgdXJs
KCk7CiAgICAgY29uc3QgU3RyaW5nJiB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbigpOwotICAg
IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0gcXVlcnlQYXJhbWV0ZXJzKCk7Cisg
ICAgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIHF1ZXJ5UGFyYW1ldGVycygpOwogICAg
IEV2ZW50U3RyZWFtIGV2ZW50U3RyZWFtKCk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZXZl
bnRGaWxlUGF0aDsKLSAgICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAg
IFN0cmluZyBtX3VybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluOwotICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybT4gbV9xdWVyeVBhcmFtZXRlcnM7Cisg
ICAgc3RkOjpvcHRpb25hbDxXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0+IG1fcXVlcnlQ
YXJhbWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhcHR1cmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCmluZGV4IGU1YWY0ZjgzZjFiNTAxYjhiM2Q4YTFiYzU3YzlkNzM5MDVmYzk5MTcu
LjgwYjE0MDM0NzdhNTM5YjZhMGQxY2JiOWE0ZWFiOGJlNWZlM2RkZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAg
fQogICAgIAogICAgIC8vIFNob3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBm
cm9tIGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1zZWN1cmUgb25lLgotICAgIGlmIChtX3Nob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJv
dG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVy
cmVyKCksICJodHRwcyIpKQorICAgIGlmIChtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXVEY6
OnByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikpCiAgICAgICAgIHJl
cXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAKICAgICBjb25zdCBhdXRvJiB1cmwgPSBy
ZXF1ZXN0LnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDdmMThjMDU2ZjFhMDVkMmY5MDEw
ZTRhYjg3NTFlMTM0N2M4MmE2ZWIuLjI3MDU5MjVkODczMDhiOGEyYTY0NzAyOWRmZDc4Yzc2OTVm
MWRkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTQ2LDEyICs0NiwxMiBAQAogI2ltcG9ydCA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNw
b25zZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVVUkxSZXNwb25zZS5oPgogI2ltcG9y
dCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJp
dmlsZWdlLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKQEAgLTM0OCw3ICszNDgsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAq
KXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlkUmVjZQogICAgICAgICAg
ICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpDcmVkZW50aWFsUGVy
c2lzdGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgpKSB7CiAKICAgICAgICAgICAgICAgICBXZWJDb3JlOjpD
cmVkZW50aWFsIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVk
ZW50aWFsLnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwot
ICAgICAgICAgICAgICAgIFdlYkNvcmU6OlVSTCB1cmxUb1N0b3JlOworICAgICAgICAgICAgICAg
IFVSTCB1cmxUb1N0b3JlOwogICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAgICAgICAg
ICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVS
ZXNwb25zZSgpLnVybCgpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9u
ID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Q
cm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9j
ZXNzTWFjLm1tCmluZGV4IDQwMmVjMWRlMDE5NjJmMGNjZjQyMDQyOTU3MjM3OTFmN2M2NTcyYTAu
LmY1Y2MxYzFlMGFjNmRhODQyOTJjNDhiNDcxYjA4Yzg3YmYyOThlZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTIx
NSwxMSArMjE1LDExIEBAIHN0YXRpYyB2b2lkIGNhcmJvbldpbmRvd0hpZGRlbihXaW5kb3dSZWYg
d2luZG93KQogc3RhdGljIGJvb2wgb3BlbkNGVVJMUmVmKENGVVJMUmVmIHVybCwgaW50MzJfdCYg
c3RhdHVzLCBDRlVSTFJlZiogbGF1bmNoZWRVUkwpCiB7CiAgICAgU3RyaW5nIGxhdW5jaGVkVVJM
U3RyaW5nOwotICAgIGlmICghUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkub3BlblVSTChXZWJD
b3JlOjpVUkwodXJsKS5zdHJpbmcoKSwgc3RhdHVzLCBsYXVuY2hlZFVSTFN0cmluZykpCisgICAg
aWYgKCFQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5vcGVuVVJMKFVSTCh1cmwpLnN0cmluZygp
LCBzdGF0dXMsIGxhdW5jaGVkVVJMU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKCFsYXVuY2hlZFVSTFN0cmluZy5pc051bGwoKSAmJiBsYXVuY2hlZFVSTCkKLSAgICAg
ICAgKmxhdW5jaGVkVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBsYXVuY2hlZFVS
TFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7CisgICAgICAgICpsYXVuY2hlZFVSTCA9
IFVSTChVUkwoKSwgbGF1bmNoZWRVUkxTdHJpbmcpLmNyZWF0ZUNGVVJMKCkubGVha1JlZigpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zOTksNyArMzk5LDcgQEAgc3RhdGljIE5TUnVubmlu
Z0FwcGxpY2F0aW9uICpyZXBsYWNlZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxf
b3B0aW9uc18KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpzaW5n
bGV0b24oKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFdlYkNvcmU6OlVSTCh1cmwpLnN0cmluZygp
LCBhcmd1bWVudHMpKSB7CisgICAgaWYgKFBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLmxhdW5j
aEFwcGxpY2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5nKCksIGFyZ3VtZW50cykpIHsKICAgICAg
ICAgaWYgKGVycm9yKQogICAgICAgICAgICAgKmVycm9yID0gbmlsOwogICAgICAgICByZXR1cm4g
bmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IDdiMDFkMGU5MjA1NjI4Y2QzYzAw
MmVmNTdlZjExZTgxNGRjY2NiOTEuLmJiZDQyM2JjZjU3MTVlNGFkNzBiZjUyZGVmOGMyYzMwYzQx
YmYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTIzLDMyICsyMywzMSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJM
X2gKLSNkZWZpbmUgV2ViVVJMX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiAKIGNs
YXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQor
ICAgIHN0YXRpYyBSZWY8QVBJOjpVUkw+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5n
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKHN0cmluZykpOwogICAg
IH0KIAotICAgIHN0YXRpYyBSZWY8VVJMPiBjcmVhdGUoY29uc3QgVVJMKiBiYXNlVVJMLCBjb25z
dCBXVEY6OlN0cmluZyYgcmVsYXRpdmVVUkwpCisgICAgc3RhdGljIFJlZjxBUEk6OlVSTD4gY3Jl
YXRlKGNvbnN0IEFQSTo6VVJMKiBiYXNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgcmVsYXRpdmVV
UkwpCiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwtPnBh
cnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0
aXZlVVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RG
OjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwpOwogICAgICAg
ICBjb25zdCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxTdHJpbmcgPSBhYnNvbHV0ZVVSTC0+c3Ry
aW5nKCk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMKFdURk1vdmUoYWJzb2x1
dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBUEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJzb2x1dGVVUkxTdHJpbmcpKTsKICAg
ICB9CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgp
OyB9CkBAIC01Niw3ICs1NSw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVj
dDo6VHlwZTo6VVJMPiB7CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmc7IH0KIAotICAgIHN0YXRpYyBib29sIGVxdWFscyhjb25zdCBVUkwm
IGEsIGNvbnN0IFVSTCYgYikKKyAgICBzdGF0aWMgYm9vbCBlcXVhbHMoY29uc3QgQVBJOjpVUkwm
IGEsIGNvbnN0IEFQSTo6VVJMJiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGEudXJsKCkgPT0g
Yi51cmwoKTsKICAgICB9CkBAIC0xMDYsMTMgKzEwNSwxMyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMg
T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICB9CiAKLSAgICBVUkwo
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJMLCBjb25zdCBXVEY6OlN0cmlu
ZyYgc3RyaW5nKQorICAgIFVSTChzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpVUkw+IHBhcnNlZFVSTCwg
Y29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCiAg
ICAgICAgICwgbV9wYXJzZWRVUkwoV1RGTW92ZShwYXJzZWRVUkwpKQogICAgIHsKICAgICB9CiAK
LSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0CisgICAgY29uc3QgV1RGOjpVUkwm
IHVybCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElmTmVjZXNzYXJ5KCk7CiAgICAg
ICAgIHJldHVybiAqbV9wYXJzZWRVUkw7CkBAIC0xMjIsMTMgKzEyMSwxMSBAQCBjbGFzcyBVUkwg
OiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAg
aWYgKG1fcGFyc2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3BhcnNlZFVS
TCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPihXZWJDb3JlOjpVUkwoKSwgbV9zdHJp
bmcpOworICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KFdU
Rjo6VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBtX3N0cmluZzsK
LSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpVUkw+IG1fcGFyc2VkVVJMOwor
ICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdURjo6VVJMPiBtX3BhcnNlZFVSTDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVVJMX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRleCA5YjVj
N2Y2NmI0OGI4YTk2YmRkMmRjYmU4OWNhOTBhMTIzZDMwNmFhLi42Njk5NWEwYTg4NTI2YmFjNTNh
YjdkMWNjNTk2MTVhMzIwMjE5ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBBUEkgewogCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFVzZXJDb250ZW50VVJM
UGF0dGVybiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJD
b250CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBtX3BhdHRl
cm4uaG9zdCgpOyB9CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHNjaGVtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGF0dGVybi5zY2hlbWUoKTsgfQogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGF0dGVybi5pc1ZhbGlkKCk7IH07Ci0gICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0IFdU
Rjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdlYkNvcmU6
OlVSTCh7IH0sIHVybCkpOyB9CisgICAgYm9vbCBtYXRjaGVzVVJMKGNvbnN0IFdURjo6U3RyaW5n
JiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdURjo6VVJMKHsgfSwgdXJs
KSk7IH0KICAgICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0
ZXJuLm1hdGNoU3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgcGF0dGVy
blN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggNzM2ZTFmM2U2NjQ1Y2UwZWMy
MTJmNmRiOWY4Nzg0M2Q1Y2QxM2RhNS4uMTQ5OTU2M2UzOWFlN2I5ODZkZTE3MzQ3Njc4ODVmNmFh
ZDkyOGQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3Bw
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRGF0YS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS1VSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJM
UmVzcG9uc2UuY3BwCmluZGV4IGI4YThhOTBiY2QzYzM0NWNkNDc1NjUyNzczMTQzMmNmY2EwMTdj
ODcuLjhmMWZhOWFkNmUzNmU5OGFjNDEzZWJhOWVmOTU1M2NhZDQwNjM4Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCkBAIC0yOCw3ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJBUElVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9jZi9XS1VSTENGLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5t
bQppbmRleCBkZjE5ODNhNjAxNTBkZDdlYWRiYWU4M2QzODgyOGFiYWE3ODBlMGFlLi5iZDkxYTQ1
YjA5YzMxNGVmZjM2MzA1MWNjYjg4MTViZGNiYjZkYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL2NmL1dLVVJMQ0YubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2ltcG9ydCAiV0tBUElD
YXN0LmgiCiAjaW1wb3J0ICJXS05TVVJMLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0NGVVJMRXh0cmFz
Lmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9jZi9DRlVSTEV4dHJh
cy5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQK
QEAgLTU2LDcgKzU2LDcgQEAgV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoQ0ZVUkxSZWYg
Y2ZVUkwpCiAjZW5kaWYKIAogICAgIENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgV2ViQ29yZTo6Z2V0
VVJMQnl0ZXMoY2ZVUkwsIHVybEJ5dGVzKTsKKyAgICBXVEY6OmdldFVSTEJ5dGVzKGNmVVJMLCB1
cmxCeXRlcyk7CiAKICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSSh1cmxCeXRlcy5k
YXRhKCkpOwogfQpAQCAtNjksNSArNjksNSBAQCBDRlVSTFJlZiBXS1VSTENvcHlDRlVSTChDRkFs
bG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVSTFJlZikKICAgICAvLyBVVEYtOCB3
aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0IFdlYktpdCBjbGllbnRzIG1pZ2h0IGV4
cGVjdC4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gV2ViS2l0Ojp0b0ltcGwoVVJMUmVmKS0+c3Ry
aW5nKCkudXRmOCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpLCAwKS5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5sZW5ndGgo
KSwgMCkubGVha1JlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCA5ZmU1OTU3MjA0Y2M3OTkzZWJjMDg4ODhiZDFm
ODkzMWVhNGViMDAxLi4zMWY2MWNlN2VhZjhiOWE5OWNiYWFkN2RkMDUzNzVkYTgxYTI1YmM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0
LmNwcApAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3QuaCIKIAog
I2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9H
VW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwCmluZGV4IGQyNDU1ODkzNmNm
NDYwNzU1NTcxMmExNmM5NGZkNDYxZWMwOThhMjMuLjI4N2VlZmQ0ZDljY2Y0MDAzNjczZGU5N2I4
OGQzYzJkNjNjMjM0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGli
L1dlYktpdFVSSVJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRVUklSZXNwb25zZS5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJXZWJL
aXRVUklSZXNwb25zZS5oIgogCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kx
OG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGRj
MGY5MGYwZjM4NTFhYmYxMDA0ODRiYTU3M2FlNGFmOGU4MGIyMzIuLmJjMmZlNDllMzBhYTM4MmI0
MjNiNTRkYjJiYWQ3MmJiN2Y5N2VlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTMwLDggKzMwLDggQEAKIAogI2luY2x1ZGUgIkFQSURh
dGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ2
LDggKzQ2LDggQEAgUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJjaGl2ZVJlc291cmNlOjpj
cmVhdGUoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBhcmMKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJBcmNoaXZlUmVzb3VyY2UoV1RGTW92ZShhcmNoaXZlUmVzb3VyY2UpKSk7CiB9CiAK
LVdlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6RGF0YSogZGF0YSwg
Y29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nKQotICAgIDogbV9hcmNoaXZlUmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpj
cmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKSwg
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBVUkwpLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5n
LCBTdHJpbmcoKSkpCitXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShBUEk6
OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZykKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hp
dmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRh
dGEtPnNpemUoKSksIFdURjo6VVJMKFdURjo6VVJMKCksIHVybCksIE1JTUVUeXBlLCB0ZXh0RW5j
b2RpbmcsIFN0cmluZygpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmgKaW5kZXggNDMzNjM4Yjk0OGRmMDk3OGFiM2MxYmQxYmExYTNi
NzQxZGRmYTZhZi4uZDg2ZGM0YWI3NTBiZjgxY2Y5ZTM2NDNhZTY2OTRmY2IzMjQ3ZjI1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCkBAIC0z
MSw3ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0
cnVjdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIGJv
b2wgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIHsgZmFsc2UgfTsKICAgICBib29s
IGlzQXV0b2ZpbGxhYmxlVXNlcm5hbWVGaWVsZCB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6VVJM
IHJlcHJlc2VudGluZ1BhZ2VVUkw7CisgICAgVVJMIHJlcHJlc2VudGluZ1BhZ2VVUkw7CiAgICAg
V2ViQ29yZTo6QXV0b2ZpbGxGaWVsZE5hbWUgYXV0b2ZpbGxGaWVsZE5hbWUgeyBXZWJDb3JlOjpB
dXRvZmlsbEZpZWxkTmFtZTo6Tm9uZSB9OwogICAgIFN0cmluZyBwbGFjZWhvbGRlcjsKICAgICBT
dHJpbmcgbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05T
VVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5t
bQppbmRleCAwMTg4Zjc0Nzk4MmE5NDBhNDhhYjg2ZjgyODhhYWIwMDZkZmQxMWQ3Li41MTliOWQ4
M2VkNzY2MWRjNmQ4N2Q2MjllN2M4Yzg1NWIwZWYyYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW0KQEAgLTI2LDEzICsyNiwxMSBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUv
Q0ZVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CisjaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQogQGltcGxlbWVudGF0aW9uIE5TVVJMIChXS0V4dHJhcykKIAogKyAoaW5z
dGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcKQEAg
LTUwLDcgKzQ4LDcgQEAgKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29u
c3QgU3RyaW5nJilzdHJpbmcgcmVsYXRpdmVUb1VSTDooTlNVUkwKIC0gKFN0cmluZylfd2ViX29y
aWdpbmFsRGF0YUFzV1RGU3RyaW5nCiB7CiAgICAgQ1N0cmluZyBvcmlnaW5hbERhdGE7Ci0gICAg
Z2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXNlbGYsIG9yaWdpbmFsRGF0YSk7CisgICAg
V1RGOjpnZXRVUkxCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpc2VsZiwgb3JpZ2luYWxEYXRhKTsK
ICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChvcmlnaW5hbERhdGEpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IDlkY2Y2ZjJlMWQ3MTUzM2FkNjQ1ZGY2M2RiZjI0
MjI2NTc4NGI4YWYuLjUzY2UyZDFhZjA2ZDI1MWM4MDU1YmQyYWQ1MjdmYWE0Njc2ZWU5YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3Rh
dGUgewogc3RydWN0IFNlc3Npb25TdGF0ZSB7CiAgICAgQmFja0ZvcndhcmRMaXN0U3RhdGUgYmFj
a0ZvcndhcmRMaXN0U3RhdGU7CiAgICAgdWludDY0X3QgcmVuZGVyVHJlZVNpemU7Ci0gICAgV2Vi
Q29yZTo6VVJMIHByb3Zpc2lvbmFsVVJMOworICAgIFVSTCBwcm92aXNpb25hbFVSTDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBkZjk3MzUwZTAzMGM5ODIzNWJhM2JhZTRhZDVjYjA1
NjVjOTRlNjc1Li5hOTE5NjkyZjY5YzIzYjcxMzM1NjY1OWFkMzA0NWQwM2YwZmU5OWUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAt
MjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKIAogI2lu
Y2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTA0LDggKzEwNCw4IEBAIGJvb2wgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9jdW1lbnQoY29uc3QgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYKICAgICBpZiAobWFpbkZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhIHx8IG90
aGVyTWFpbkZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhKQogICAgICAgICByZXR1cm4gbWFpbkZy
YW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlciA9PSBvdGhlck1haW5GcmFtZVN0YXRlLmRv
Y3VtZW50U2VxdWVuY2VOdW1iZXI7CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsID0gV2ViQ29yZTo6
VVJMKHsgfSwgbWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKLSAgICBXZWJDb3JlOjpVUkwgb3Ro
ZXJVUkwgPSBXZWJDb3JlOjpVUkwoeyB9LCBvdGhlck1haW5GcmFtZVN0YXRlLnVybFN0cmluZyk7
CisgICAgVVJMIHVybCA9IFVSTCh7IH0sIG1haW5GcmFtZVN0YXRlLnVybFN0cmluZyk7CisgICAg
VVJMIG90aGVyVVJMID0gVVJMKHsgfSwgb3RoZXJNYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcpOwog
CiAgICAgaWYgKCh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgfHwgb3RoZXJVUkwuaGFzRnJh
Z21lbnRJZGVudGlmaWVyKCkpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJs
LCBvdGhlclVSTCkpCiAgICAgICAgIHJldHVybiBtYWluRnJhbWVTdGF0ZS5kb2N1bWVudFNlcXVl
bmNlTnVtYmVyID09IG90aGVyTWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGU1MDdiZjg3NTliMTE3ODkwODZlNTBkN2YwNmM1N2RkODM4MGE0ZjYuLjM5NWVhNzU4ZDAzYzFh
MDcxNjBhNmIzNWZmZWRhZTI4MmY5YjgwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzcsMTEgKzc3LDExIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9X
aW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAppbmRleCAzZWViNDQyZTMyN2RjNzkxMmI0M2M0OTYzNmE2NTc0Y2Y5YmM0NmNl
Li45NTQ1MGY0MTFjN2ZiYTAzYzFlZDc2MTA1OWZkYmEzM2JhMDJlNWExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtOTMsNyArOTMsNiBAQCBj
bGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBjbGFzcyBUZXh0Q2hlY2tp
bmdSZXF1ZXN0RGF0YTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgVXNlclN0
eWxlU2hlZXQ7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0aW9uczsKIHN0cnVj
dCBDb21wb3NpdGlvblVuZGVybGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkVycm9ycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKaW5kZXggMjdk
MTRlMzFiMzEwODY2YzZmMTM2ZTNhZDhhYWZmODhlMjNiMzg0Mi4uN2Q2MDBjNmQyM2I1NWRjYzM5
NjMwOTkwNDA3Y2U3NDQ0NDZjYjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKQEAgLTI4
LDcgKzI4LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTQ4LDE4ICs0NywxOCBAQCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlcwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5
cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFVSTCYpOwogCiAjaWYgVVNFKFNPVVApCi1XZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFdURjo6U3RyaW5nJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2Fk
TmV0d29ya0Vycm9yKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7CiBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBkb3dubG9hZERlc3Rp
bmF0aW9uRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdURjo6
U3RyaW5nJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLVdlYkNvcmU6OlJlc291cmNl
RXJyb3IgcHJpbnRFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYp
OwotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJvcihjb25zdCBXZWJD
b3JlOjpVUkwmKTsKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJp
bnQoY29uc3QgV2ViQ29yZTo6VVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHByaW50RXJy
b3IoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJy
b3IgcHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgVVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGNvbnN0IFVSTCYpOwogI2VuZGlmCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0
VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dERhdGEuY3BwCmluZGV4IDE3OWNhNGJlMzdiZWQwZTNkY2NiNWQzMjYzZjNmMDY5YjA1MjU1NWIu
LmMxY2ZjY2YwNWY4NDIwYWMzYjljMjRkYzU3Zjk4NWY3MjI2MzdjNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL05vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVj
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCBlM2YzMDU2NjY4NjMwYTRiNWFmZWI5ODRj
OWRlNGRlZGU1MDE1YzBiLi4yZWQ3NzQ0YjA4ZGY4ZmJlOWFjNzJmZDQ3NDc2NGUxY2U2ZDcyNzhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcApAQCAt
MzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNv
ZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ0ZVUkxFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
c3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKICNpZiBVU0UoRk9VTkRBVElPTikKQEAgLTU5OSw4
ICs1OTksOCBAQCB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDRlVSTFJlZiB1cmwpCiAg
ICAgaWYgKGJhc2VVUkwpCiAgICAgICAgIGVuY29kZShlbmNvZGVyLCBiYXNlVVJMKTsKIAotICAg
IFVSTENoYXJCdWZmZXIgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7
CisgICAgV1RGOjpVUkxDaGFyQnVmZmVyIHVybEJ5dGVzOworICAgIFdURjo6Z2V0VVJMQnl0ZXMo
dXJsLCB1cmxCeXRlcyk7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXJsQnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMu
c2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IGRhdGFSZWZlcmVuY2U7CiB9CkBAIC02MzEsNyArNjMx
LDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPENGVVJMUmVmPiYg
cmVzdWx0KQogICAgIH0KICNlbmRpZgogCi0gICAgcmVzdWx0ID0gY3JlYXRlQ0ZVUkxGcm9tQnVm
ZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJ5dGVzLmRhdGEoKSksIHVybEJ5
dGVzLnNpemUoKSwgYmFzZVVSTC5nZXQoKSk7CisgICAgcmVzdWx0ID0gV1RGOjpjcmVhdGVDRlVS
TEZyb21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJsQnl0ZXMuZGF0YSgp
KSwgdXJsQnl0ZXMuc2l6ZSgpLCBiYXNlVVJMLmdldCgpKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwCmluZGV4IGU5ZDky
MzkzYzdkNWM2YjNhYmYzZjlmNDRhMDdmNDFhMDA4NDYwZTguLjZhMGRmNTRjMzc0NDVkZjY0Y2M1
ZDNiNGJiNjEwZWMxZjNjMDY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9XZWJFcnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJv
cnNHdGsuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAKICNp
bmNsdWRlICJBUElFcnJvci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4
IDNkMDg2ODlmZTE3NmRkN2E2MTcyYTEzN2MwNTgzZGNlYTczNzJmNjMuLmMxYWI4NWZkNDQxYmMx
MjgwNzU0NjYwOTQwOTY4ZjczNmE4ZjY2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCkBAIC0z
Myw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VsZWN0aW9uUmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDgg
KzYwLDggQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIHsKICAgICBi
b29sIHByZXZlbnRUZXh0SW50ZXJhY3Rpb24geyBmYWxzZSB9OwogI2VuZGlmCiAgICAgV2ViQ29y
ZTo6RmxvYXRQb2ludCBhZGp1c3RlZFBvaW50Rm9yTm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRz
OwotICAgIFdlYkNvcmU6OlVSTCB1cmw7Ci0gICAgV2ViQ29yZTo6VVJMIGltYWdlVVJMOworICAg
IFVSTCB1cmw7CisgICAgVVJMIGltYWdlVVJMOwogICAgIFN0cmluZyB0aXRsZTsKICAgICBTdHJp
bmcgaWRBdHRyaWJ1dGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKaW5kZXggYmIwZDFj
YjYzZDQxZjJlN2JjMzZiYTlmNWQ1ZGFlNWU0MDgxMTU5Mi4uOTBmZGU3ZDA0YjI3MzA1YTQ2NDM2
MTQxYmRiNzdlMTAwNGJkZDA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElIVFRQQ29va2llU3RvcmUuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKIHN0cnVjdCBDb29r
aWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNw
cAppbmRleCA2OGI4N2Q4ODdmZTYzNDJmMGY1MWM5NDMxMmVhMGY0YmNlMTJiZjZhLi45MzJiNjI2
Nzc3ZjBhZjBhYjU0ZjY0N2JkODFiZmY0Nzg0MzljN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTmF2
aWdhdGlvbjo6c2V0Q3VycmVudFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUHJv
Y2Vzc0lkZW50aWZpZXIKICAgICBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lkZW50aWZpZXIgPSBw
cm9jZXNzSWRlbnRpZmllcjsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlv
blVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgTmF2aWdhdGlvbjo6YXBwZW5kUmVk
aXJlY3Rpb25VUkwoY29uc3QgV1RGOjpVUkwmIHVybCkKIHsKICAgICBpZiAobV9yZWRpcmVjdENo
YWluLmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHVybCkKICAgICAgICAg
bV9yZWRpcmVjdENoYWluLmFwcGVuZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uLmgKaW5kZXggOTdlZTk2ZGRkNmU0N2ExOWFjZGMyZjI4NDhmN2E3NjI5
N2JkZDFmMi4uZWQwMjk0ZDgyODdlY2Q4NjZiYTZlOTNiODFjNTNmMGI0NGI4NDlkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCkBAIC03Nyw4ICs3Nyw4
IEBAIGNsYXNzIE5hdmlnYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5h
dmlnYXRpb24+IHsKICAgICBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZyb21JdGVt
KCkgY29uc3QgeyByZXR1cm4gbV9mcm9tSXRlbS5nZXQoKTsgfQogICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVMb2FkVHlwZT4gYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGU7IH0KIAotICAgIHZvaWQgYXBwZW5k
UmVkaXJlY3Rpb25VUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVjdG9yPFdlYkNvcmU6
OlVSTD4gdGFrZVJlZGlyZWN0Q2hhaW4oKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVkaXJlY3RDaGFp
bik7IH0KKyAgICB2b2lkIGFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0IFdURjo6VVJMJik7Cisg
ICAgVmVjdG9yPFdURjo6VVJMPiB0YWtlUmVkaXJlY3RDaGFpbigpIHsgcmV0dXJuIFdURk1vdmUo
bV9yZWRpcmVjdENoYWluKTsgfQogCiAgICAgdm9pZCBzZXRXYXNVc2VySW5pdGlhdGVkKGJvb2wg
dmFsdWUpIHsgbV93YXNVc2VySW5pdGlhdGVkID0gdmFsdWU7IH0KICAgICBib29sIHdhc1VzZXJJ
bml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJJbml0aWF0ZWQ7IH0KQEAgLTExNCw3
ICsxMTQsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpU
eXBlOjpOYXZpZ2F0aW9uPiB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2lu
YWxSZXF1ZXN0OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0
OwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IG1fY3VycmVu
dFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllcjsKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBtX3Jl
ZGlyZWN0Q2hhaW47CisgICAgVmVjdG9yPFdURjo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAg
Ym9vbCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3Nob3VsZEZvcmNl
RG93bmxvYWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1JlZGlyZWN0IHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCmlu
ZGV4IGVlY2JmZjRhMmEzZWQ5MGY0NDQwOGNjZDZjYWYyOWRlOThkOTUyZDcuLjMwODcxYzdhMDk1
NTRkNWNiOGE3ZWQ0YWI4MmNiYjE0OGNkZTc4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaApAQCAtMzEsNyArMzEsNyBAQAogI2lu
Y2x1ZGUgIkFQSVVzZXJJbml0aWF0ZWRBY3Rpb24uaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0
aW9uRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBBUEkg
ewogCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24gZmluYWwgOiBwdWJs
aWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+CiAgICAgc3RkOjpv
cHRpb25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90
YXJnZXRGcmFtZU5hbWU7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQotICAgIGNvbnN0IFdlYkNvcmU6
OlVSTCYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5hbFVSTC5pc051bGwo
KSA/IG1fb3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KKyAgICBjb25zdCBXVEY6OlVS
TCYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiAhbV9vcmlnaW5hbFVSTC5pc051bGwoKSA/
IG1fb3JpZ2luYWxVUkwgOiBtX3JlcXVlc3QudXJsKCk7IH0KIAogICAgIFdlYkNvcmU6Ok5hdmln
YXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0
aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZTsgfQogICAgIFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVy
cyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlm
aWVyczsgfQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIGZpbmFsIDog
cHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uPgogICAgIE5h
dmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFt
ZU5hdmlnYXRpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKFdl
YktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpG
cmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6
b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBz
aG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0
aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKKyAgICBO
YXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyog
dGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdp
bmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rp
b24+JiYgdXNlckluaXRpYXRlZEFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZp
Z2F0aW9uKQogICAgICAgICA6IG1fc291cmNlRnJhbWUoc291cmNlRnJhbWUpCiAgICAgICAgICwg
bV90YXJnZXRGcmFtZSh0YXJnZXRGcmFtZSkKICAgICAgICAgLCBtX3RhcmdldEZyYW1lTmFtZSh0
YXJnZXRGcmFtZU5hbWUpCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24g
ZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+
CiAgICAgewogICAgIH0KIAotICAgIE5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBBUEk6OkZyYW1lSW5mbyogc291cmNl
RnJhbWUsIEFQSTo6RnJhbWVJbmZvKiB0YXJnZXRGcmFtZSwgc3RkOjpvcHRpb25hbDxXVEY6OlN0
cmluZz4gdGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5r
cywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKKyAg
ICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5m
byogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFt
ZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9y
aWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRB
Y3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKICAgICAgICAgOiBOYXZpZ2F0aW9uQWN0aW9u
KFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZSwgdGFyZ2V0RnJhbWUs
IHRhcmdldEZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxVUkwsIHNob3VsZE9w
ZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aW9uKSwgbnVsbHB0cikKICAgICB7
CiAgICAgfQpAQCAtODksNyArODksNyBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIGZpbmFsIDog
cHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uQWN0aW9uPgogICAgIHN0
ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IG1fdGFyZ2V0RnJhbWVOYW1lOwogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBXZWJDb3JlOjpVUkwgbV9vcmlnaW5h
bFVSTDsKKyAgICBXVEY6OlVSTCBtX29yaWdpbmFsVVJMOwogCiAgICAgYm9vbCBtX3Nob3VsZE9w
ZW5BcHBMaW5rczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQ2xpZW50LmgKaW5kZXggNmFkODMzYTYwOTk1Yjg5OWExYjExYzcxYWU5OWM0OTU3YWMy
NzI5MC4uOGU5NDRiN2RlYzRkOWU1ZGU3NGE3NDFjMmFhZWQ3OTk4MzIwMDM5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC05
Nyw3ICs5Nyw3IEBAIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgewogCiAgICAgdmlydHVhbCBSZWZQ
dHI8RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1
cm4gbnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U3RyaW5nPiBzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0IFJlZlB0cjxTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdl
YkNvcmU6OlVSTCYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxTdHJp
bmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPFN0cmluZz4mIGNoYWxsZW5n
ZVN0cmluZywgY29uc3QgV1RGOjpVUkwmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiB1dGkpIHsgfQpAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIE5hdmlnYXRpb25DbGll
bnQgewogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwg
dm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJDb3JlOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgV1RGOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiYpIHsgfTsKICAgICAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICAgICB2aXJ0dWFsIGJvb2wgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdJbihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYpIHsgcmV0dXJuIGZhbHNlOyB9CkBA
IC0xMjYsOCArMTI2LDggQEAgY2xhc3MgTmF2aWdhdGlvbkNsaWVudCB7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShXRUJHTCkKLSAgICB2aXJ0dWFsIHZvaWQgd2ViR0xMb2FkUG9saWN5KFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7
IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0Ny
ZWF0aW9uKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25z
dCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxv
d0NyZWF0aW9uKTsgfQorICAgIHZpcnR1YWwgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21w
bGV0aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlv
bik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBs
ZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9u
KTsgfQogI2VuZGlmCiAgICAgCiAgICAgdmlydHVhbCBib29sIHdpbGxHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYsIGJvb2wgaW5QYWdlQ2FjaGUsIE9iamVjdCopIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGJhMjkwZTA4OTdiOWM3
MjdhZjY5NjgyZjI4ZmYzMzQ1MTk1ZDkxNjIuLjgzZGEyOWNjNTJmYzg3MzA5Y2ZjNjVmNDZkNzAx
MTBmMTI5NDY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
SUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
CkBAIC0xNDAsNyArMTQwLDcgQEAgY2xhc3MgVUlDbGllbnQgewogICAgIHZpcnR1YWwgYm9vbCBj
YW5SdW5Nb2RhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1
bk1vZGFsKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2F2
ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0
IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBE
YXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBEYXRhJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGlubmVkU3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCmluZGV4IDc1ODRlNjMx
MjEwMmI1YjBjNTAwN2VhOWI4OGNhYzc4M2I5ZTE0NmMuLjQwMjJlZmRjYjk3YTUwOWY2ZTBlZjg5
NWRjYjY3Mzg2NmFhOWY1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclNjcmlwdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAKLVdl
YkNvcmU6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCitXVEY6OlVSTCBVc2Vy
U2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50
aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U2NyaXB0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCmlu
ZGV4IDE3YTQwOTA5ODk3Zjc0NGI1MDVhMDQ5MmFjNTA4YzQwNTBiMTMxYzUuLjAzMzMyODIwYjE2
MDExNDkxNDAzNjE4YjYzN2YzM2RhODE0YjE4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVzZXJTY3JpcHQuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQVBJVXNlclNjcmlwdF9oCi0jZGVm
aW5lIEFQSVVzZXJTY3JpcHRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3Qu
aCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0zNSw3ICszNCw3IEBAIG5h
bWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpVc2VyU2NyaXB0PiwgcHVibGljIElkZW50aWZpZWQ8VXNlclNjcmlw
dD4gewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwo
KTsKKyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKIAogICAgIHN0YXRp
YyBSZWY8VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCwg
QVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIGNs
YXNzIFVzZXJTY3JpcHQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVz
ZXJTY3JpcHQ+LCBwdWJsaWMgSWRlCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlm
IC8vIEFQSVVzZXJTY3JpcHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVc2VyU3R5bGVTaGVldC5jcHAKaW5kZXggMWQ1OTViYjE1ODhkOWY3ZDVkNDhmZDkyMWNkMWRk
OTY2YjNmODZhZi4uM2VhNDYxZmUxYTE1NmM2YTlkNTg5NTg0MDM3ZmUzODdjMjkwN2YwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3Bw
CkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1XZWJDb3JlOjpVUkwgVXNl
clN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKK1dURjo6VVJMIFVzZXJTdHlsZVNoZWV0
OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVT
aGVldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgK
aW5kZXggZDg1NmY3YTUyZjliNTA0ZTBmYTQyM2VhOWEzYjZlMTU3MTQ1MWVkZS4uNzViYjk1YWZl
YWM4ZjhmMWU4MjIzMzVmMjkzZTk4Mzg3YjVkNzYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSVVzZXJTdHls
ZVNoZWV0X2gKLSNkZWZpbmUgQVBJVXNlclN0eWxlU2hlZXRfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBA
IC0zNSw3ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU3R5bGVTaGVldCBm
aW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclN0eWxlU2hlZXQ+LCBw
dWJsaWMgSWRlbnRpZmllZDxVc2VyU3R5bGVTaGVldD4gewogcHVibGljOgotICAgIHN0YXRpYyBX
ZWJDb3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKKyAgICBzdGF0aWMgV1RGOjpVUkwgZ2Vu
ZXJhdGVVbmlxdWVVUkwoKTsKIAogICAgIHN0YXRpYyBSZWY8VXNlclN0eWxlU2hlZXQ+IGNyZWF0
ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpVc2VyQ29udGVu
dFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIGNsYXNzIFVzZXJTdHlsZVNo
ZWV0IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyU3R5bGVTaGVl
dD4sIHB1CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8vIEFQSVVzZXJTdHls
ZVNoZWV0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXggNmU3OTY2MjU1MmI5ZjY4MDUyMDI5
NGViYjlkNzRlYmFiZDgzMjY1MC4uNGEwZmZjNDJlNTk0MWMzMDZiY2ZmYmY4OGNlMTVhY2M3MDk5
YjVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRl
ICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtNDgsNyAr
NDgsNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzRnJvbUZpbGVVUkxzKGNvbnN0
IEFQSTo6QXJyYXkmIGZpbGVVUkxzKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7CiAgICAgICAgIEFQSTo6VVJMKiBhcGlVUkwgPSBmaWxlVVJMcy5hdDxBUEk6OlVSTD4o
aSk7CiAgICAgICAgIGlmIChhcGlVUkwpCi0gICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVja2Vk
QXBwZW5kKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmls
ZVN5c3RlbVBhdGgoKSk7CisgICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVja2VkQXBwZW5kKFVS
TChVUkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGZpbGVQYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCmluZGV4IGNjMmRmOWI1NzFhMTE3OGVjZjU3ZjZkZTZmYWEzOGRhZTVhYzYxMTAuLjJjYjk2
YTMyNTBkZDNkMGM0YTdhMTM0YzliOWM4YTY4MjAyZTFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgV0tQYWdlTG9h
ZFBsYWluVGV4dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0
U3RyaW5nUmVmCiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YShX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmLCBXS1R5cGVS
ZWYgdXNlckRhdGFSZWYpCiB7Ci0gICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJp
bmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBibGFua1VSTCgpLnN0cmluZygpLCB1c2VyRGF0YVJlZik7
CisgICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWlu
Il9zLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIHVzZXJEYXRhUmVmKTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJlZiB3ZWJB
cmNoaXZlRGF0YVJlZikKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xp
ZW50CiAKICAgICAgICAgICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHBhZ2Uu
cHJvY2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2Vy
R2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRPcGVu
QXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3VyY2VGcmFtZUluZm8tPnJlcXVlc3QoKS51cmwo
KSwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGFwaU5hdmln
YXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51
bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgV2ViQ29yZTo6VVJMKCksIHNob3VsZE9w
ZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNy
ZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigp
LCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgVVJMKCks
IHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKIAog
ICAgICAgICAgICAgICAgIGF1dG8gYXBpV2luZG93RmVhdHVyZXMgPSBBUEk6OldpbmRvd0ZlYXR1
cmVzOjpjcmVhdGUod2luZG93RmVhdHVyZXMpOwogCkBAIC0xOTQ1LDcgKzE5NDUsNyBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlD
bGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgbV9jbGllbnQucnVuTW9kYWwodG9BUEko
JnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSogcGFnZSwg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKSBmaW5h
bAorICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVBy
b3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBBUEk6OkRhdGEmIGRhdGEpIGZp
bmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuc2F2ZURhdGFUb0ZpbGVJ
bkRvd25sb2Fkc0ZvbGRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTg1LDcgKzIx
ODUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAgcmV0dXJuIEFQSTo6
RGF0YTo6Y3JlYXRlKG1hc3RlcktleS5kYXRhKCksIG1hc3RlcktleS5zaXplKCkpOwogICAgICAg
ICB9CiAKLSAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNv
bnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwpIG92ZXJyaWRlCisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYgcGFnZSwgdW5zaWduZWQga2V5
U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNv
bnN0IFVSTCYgdXJsKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGll
bnQuY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZykKICAgICAgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNvcHlTaWduZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2VTdHJpbmcodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKaW5kZXgg
MzkwZTEyMDc0N2VhZTg5Y2ZkOWZlZTY5ZGFjZWNiNmRlMDc5NWVjNS4uMDM3NzQxMGVhN2U2N2U2
YjA5MTBjZmJjMDVhOWIzMmY1OGNiNDNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZUdyb3VwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdLUGFnZUdyb3Vw
QWRkVXNlclN0eWxlU2hlZXQoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS1N0cmluZ1Jl
ZiBzb3VyYwogICAgIGF1dG8gd2hpdGVsaXN0ID0gdG9JbXBsKHdoaXRlbGlzdGVkVVJMUGF0dGVy
bnMpOwogICAgIGF1dG8gYmxhY2tsaXN0ID0gdG9JbXBsKGJsYWNrbGlzdGVkVVJMUGF0dGVybnMp
OwogCi0gICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0ID0gQVBJOjpV
c2VyU3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgc291cmNlLCAo
YmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29yZTo6
VVJMKFdlYkNvcmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlzdCA/IHdoaXRlbGlz
dC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNr
bGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZl
bCB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIFJlZjxBUEk6
OlVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCA9IEFQSTo6VXNlclN0eWxlU2hlZXQ6OmNy
ZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgKGJhc2VVUkxTdHJpbmcuaXNF
bXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZykpLCB3
aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigp
LCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5n
PigpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpLCBXZWJDb3Jl
OjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3Js
ZCgpKTsKIAogICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIo
KS5hZGRVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldC5nZXQoKSk7CiB9CkBAIC05OCw3ICs5
OCw3IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZiwgV0tTdHJpbmdSZWYgc291cmNlUmVmCiAgICAgYXV0byB3aGl0ZWxpc3QgPSB0b0lt
cGwod2hpdGVsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgYXV0byBibGFja2xpc3QgPSB0b0ltcGwo
YmxhY2tsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgCi0gICAgYXV0byB1cmwgPSBiYXNlVVJMU3Ry
aW5nLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIGF1dG8gdXJsID0gYmFzZVVSTFN0cmluZy5p
c0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiAgVVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKTsK
ICAgICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2VyU2NyaXB0ID0gQVBJOjpVc2VyU2NyaXB0Ojpj
cmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwgV1RGTW92ZSh1cmwp
LCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5n
PigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3Ry
aW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCB0b1VzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpIH0sIEFQSTo6VXNlckNvbnRlbnRX
b3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250
ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQodXNlclNjcmlwdC5nZXQoKSwgSW5qZWN0VXNl
clNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCA2N2E1NDIzZWE1
ZWQ1N2ExZThiZjlkYWQ4MzIwZTA0ZGJhZjczMWI0Li4zODVkY2JjZDg2Mzc2ODYyNjcyZjZlODQ3
MDRkNTdkZWY3ODI1YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQxLDggKzQxLDggQEAKICNpbmNs
dWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNv
cmQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURhdGFTdG9yZUdldFR5cGVJRCgpCiB7CkBAIC05
NSw3ICs5NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgc3RvcmUtPnNldFByZXZhbGVu
dFJlc291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+
c2V0TGFzdFNlZW4oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY29tcGxldGlv
bkhhbmRsZXJdIHsKKyAgICBzdG9yZS0+c2V0TGFzdFNlZW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAg
ICAgfSk7CiB9CkBAIC0xMjEsMTEgKzEyMSwxMSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YQog
ICAgIH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291
cmNlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIHN0b3JlLT5z
ZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UKLSAgICAgICAgc3Rv
cmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgICAgICB9
KTsKIH0KQEAgLTEzOSwxMSArMTM5LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYKICAgICB9
CiAKICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5zZXRWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPnNl
dFZlcnlQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5z
dHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UKLSAgICAgICAg
c3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhh
bmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhh
bmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgICAg
ICB9KTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhUwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPmlzUHJldmFsZW50UmVzb3VyY2UoV2Vi
Q29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgIHN0
b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUHJldmFsZW50UmVzb3VyY2Up
IHsKICAgICAgICAgY2FsbGJhY2soaXNQcmV2YWxlbnRSZXNvdXJjZSwgY29udGV4dCk7CiAgICAg
fSk7CiB9CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2Up
IHsKKyAgICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5
UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVz
b3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihX
S1dlYnNpdGVEYXRhU3RvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc3RvcmUt
PmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJM
KCksIFdlYktpdDo6dG9JbXBsKHN1YnJlc291cmNlSG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6
VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXIpIHsKKyAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxi
YWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewogICAgICAgICBjYWxs
YmFjayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwog
fQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNz
UmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihXS1dlYnNpdGVEYXRhU3RvcmVSCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+
c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKHRv
cEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0
ZXJlZEFzU3ViRnJhbWVVbmRlcikgeworICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1l
VW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJGcmFtZUhvc3QpLT5zdHJpbmcoKSks
IFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29u
dGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlciwgY29udGV4dCk7CiAgICAg
fSk7CiB9CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJl
Y3RlZEZyb20pLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgeworICAgIHN0b3JlLT5pc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJl
Y3RlZEZyb20pLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGly
ZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJl
ZEFzUmVkaXJlY3RpbmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1JlZGly
ZWN0aW5nVG8sIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjM1LDExICsyMzUsMTEgQEAgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZgogICAgIH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3Rv
cmUtPmxvZ1VzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0g
eworICAgICAgICBzdG9yZS0+bG9nVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiAgICAg
ZWxzZQotICAgICAgICBzdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyVXNlckludGVyYWN0aW9u
KFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNv
bXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0
KTsKICAgICAgICAgfSk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5oYXNIYWRVc2VySW50
ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlckludGVyYWN0
aW9uKSB7CisgICAgc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNI
YWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFkVXNlckludGVyYWN0
aW9uLCBjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0
b3JlLT5zZXRHcmFuZGZhdGhlcmVkKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUpOworICAgIHN0b3JlLT5zZXRHcmFuZGZh
dGhlcmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUp
OwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZEZ1
bmN0aW9uIGNhbGxiYWNrKQpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aGFzSGFkVXNlckludGVy
YWN0aW9uKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJlZCkgewor
ICAgIHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhl
cmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29udGV4dCk7CiAgICAg
fSk7CiB9CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG8KICAgICBp
ZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0U3ViZnJhbWVVbmRl
clRvcEZyYW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6
OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygp
KSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNl
VW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpCkBAIC0yOTQsNyArMjk0
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGEKICAgICBpZiAoIXN0b3JlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhv
c3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RU
byhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBX
S1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhX
S1dlYnNpdGVEYXRhU3RvCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChX
ZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygp
KSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVm
IGhvc3RSZWRpcmVjdGVkRnJvbSkKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNp
dGVEYXRhUwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBzdG9y
ZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV2ViQ29yZTo6VVJMKFdlYkNvcmU6
OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygp
KSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkpOwogfQogCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYg
aG9zdFJlZGlyZWN0ZWRUbykKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0
b3JlUgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBzdG9yZS0+
c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpKTsKKyAgICBz
dG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJl
Y3RlZFRvKS0+c3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRG
cm9tKQpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yCiAgICAgaWYg
KCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHN0b3JlLT5zZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKKyAgICBzdG9yZS0+c2V0
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJv
bSktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggYTgwNmJkZWMyZTJkNDgyM2Iy
ZjFlOTJlZDEzM2U3MTM2NWRlZjY2NC4uYzg1ODAzM2FlNTkxYjNhMjIzOWIwMWYxYjliMGYzOWZk
ZmJiNDBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
SFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMzAsMTAgKzMwLDEwIEBACiAKICNpbXBvcnQgIkhU
VFBDb29raWVBY2NlcHRQb2xpY3kuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29va2llLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4K
ICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogc3RhdGljIE5T
QXJyYXk8TlNIVFRQQ29va2llICo+ICpjb3JlQ29va2llc1RvTlNDb29raWVzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb3JlQ29va2llcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCmluZGV4IDljZjY2ODFhYWIzOTFjMzVi
NjM3OTA3YjExMTA4NmY4Mjc5NzZkNWEuLjhlMGM3MjEyODY4MjgyMTE5ZjJmODlmMjk1MDY1YWY0
ZDJmZWEwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJTY3JpcHQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlclNjcmlwdC5tbQpAQCAtOTUsNyArOTUsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRo
U291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbgog
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYs
IFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBXZWJDb3JlOjpVUkwo
YXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJ
Ojp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29y
ZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCAq
dXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpj
b25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2Ny
aXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3Ry
aW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5Qmxh
Y2tsaXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25U
aW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDog
V2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29u
dGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpp
bmRleCAzMWYyYTkzNmQ5YWY5MWY5ZTBiZmI5NjZlYTBiZmFkZmM5OTg5MDVmLi4wN2FlNzg0Yjc1
MzNjMjNmNmNkNjRhMDU2NTk0NGFjNTViNDM0NjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpA
QCAtNDQsOCArNDQsOCBAQAogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TZXR0aW5ncy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbXBvcnQg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDc4LDcgKzQ3OCw3
IEBAIC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4p
dXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAgICAgaWYgKFtXS1dlYlZpZXcgaGFuZGxlc1VS
TFNjaGVtZTp1cmxTY2hlbWVdKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlk
QXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBhIFVSTCBzY2hlbWUgdGhhdCBXS1dl
YlZpZXcgaGFuZGxlcyBuYXRpdmVseSIsIHVybFNjaGVtZV07CiAKLSAgICBhdXRvIGNhbm9uaWNh
bFNjaGVtZSA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJs
U2NoZW1lKTsKKyAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdURjo6VVJMUGFyc2VyOjptYXli
ZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOwogICAgIGlmICghY2Fub25pY2FsU2NoZW1l
KQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24g
Zm9ybWF0OkAiJyVAJyBpcyBub3QgYSB2YWxpZCBVUkwgc2NoZW1lIiwgdXJsU2NoZW1lXTsKIApA
QCAtNDkwLDcgKzQ5MCw3IEBAIC0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJM
U2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlCiAKIC0gKGlkIDxXS1VS
TFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6KE5TU3RyaW5nICop
dXJsU2NoZW1lCiB7Ci0gICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJDb3JlOjpVUkxQYXJz
ZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAgYXV0byBjYW5vbmlj
YWxTY2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJsU2No
ZW1lKTsKICAgICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW0KaW5kZXggYzY0OWZmNmNiY2VhNWExZGE0NWYzNjBiZTUzOWM3ZGJjNDkyODMy
Ni4uNTA2ZmI1YmY2NzRmYzNhZDk2ZWUzYTAyOWI3YWNkM2NmOGEzNDA4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCkBAIC0zOCw5ICszOCw5IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGVsZW1ldHJ5LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW1wb3J0
ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYktpdC9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Lmg+CiAjaW1w
b3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogQGltcGxlbWVudGF0
aW9uIFdLV2Vic2l0ZURhdGFTdG9yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCmluZGV4IDNlZGQ4
NTMxYTA5OGIwNGYyNDM3ZDdkZTViODU0MGYzZjYwZWNmNzIuLmRmZWQwYTliZTE3NTM3MjJiNjU0
MDc3MWM4N2IzNjVhYjZkZjA5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC01NCw5ICs1
NCw5IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIK
ICAgICAgICAgV1RGOjpTdHJpbmcobmFtZSksCiAgICAgICAgIFdURjo6U3RyaW5nKHNob3J0TmFt
ZSksCiAgICAgICAgIFdURjo6U3RyaW5nKGRlc2NyaXB0aW9uKSwKLSAgICAgICAgV2ViQ29yZTo6
VVJMKHNjb3BlVVJMKSwKKyAgICAgICAgVVJMKHNjb3BlVVJMKSwKICAgICAgICAgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6RGlzcGxheT4oZGlzcGxheSksCi0gICAg
ICAgIFdlYkNvcmU6OlVSTChzdGFydFVSTCkKKyAgICAgICAgVVJMKHN0YXJ0VVJMKQogICAgIH07
CiAKICAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6QXBwbGljYXRpb25N
YW5pZmVzdD4oc2VsZiwgV1RGTW92ZShjb3JlQXBwbGljYXRpb25NYW5pZmVzdCkpOwpAQCAtODMs
NyArODMsNyBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWFDb2RlcgogCiAr
IChfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOihO
U1N0cmluZyAqKWpzb24gbWFuaWZlc3RVUkw6KE5TVVJMICopbWFuaWZlc3RVUkwgZG9jdW1lbnRV
Ukw6KE5TVVJMICopZG9jdW1lbnRVUkwKIHsKLSAgICBhdXRvIG1hbmlmZXN0ID0gV2ViQ29yZTo6
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2UoV1RGOjpTdHJpbmcoanNvbiksIFdlYkNv
cmU6OlVSTChtYW5pZmVzdFVSTCksIFdlYkNvcmU6OlVSTChkb2N1bWVudFVSTCkpOworICAgIGF1
dG8gbWFuaWZlc3QgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZShX
VEY6OlN0cmluZyhqc29uKSwgVVJMKG1hbmlmZXN0VVJMKSwgVVJMKGRvY3VtZW50VVJMKSk7CiAg
ICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0OjpjcmVhdGUobWFuaWZl
c3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IGU2ZjA5MGZmNWQ0MTM3YzY1ODljZWU4ZmNhODM1
MDEzYjhhNmRlM2QuLjYxNDUyMzJhMGQ4ZTdmMWE4ZDcyZGFkNzEzNzdiYTVjNzRiYjg0ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVT
aGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0
eWxlU2hlZXQubW0KQEAgLTcwLDcgKzcwLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291
cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW4KICAg
ICAvLyBGSVhNRTogSW4gdGhlIEFQSSB0ZXN0LCB3ZSBjYW4gdXNlIGdlbmVyYXRlVW5pcXVlVVJM
IGJlbG93IGJlZm9yZSB0aGUgQVBJOjpPYmplY3QgY29uc3RydWN0b3IgaGFzIGRvbmUgdGhpcy4u
LiB3aGVyZSBzaG91bGQgdGhpcyByZWFsbHkgYmU/CiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2Vi
S2l0MigpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
dHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IFdURjo6U3RyaW5nKHNv
dXJjZSksIHsgV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2lu
YWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlz
dCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25s
eSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxG
cmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+
X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8
QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6
OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpTdHJpbmcoW2Jhc2VVUkwgX3dlYl9vcmln
aW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVs
aXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFs
bEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29udGVudFdvcmxk
LT5fdXNlckNvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGE3Mjlm
YWI5YTc5ZTFkY2QxNTRmNDMwOTFkMTdmNGVkYzgwZGYzYjQuLjY3NGE1ZGIwNDNjOGE2MGYzNjIw
YWE3YmEwMThjMWY5ODVlZGY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5z
YWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogLy8gRm9yIG1ldGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8gc3VwcG9y
dCBBUEkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgLSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbnRlcm5h
bGx5CiAjZGVmaW5lIEFTU0VSVF9OT1RfU1lOQ19USFJFQUQoKSBBU1NFUlQoIW1fc3luY1RocmVh
ZFJ1bm5pbmcgfHwgIUlTX0lDT05fU1lOQ19USFJFQUQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKaW5kZXgg
ZGU4MmZkYWI1YzdmOTUzZmE1YmNhZjQwN2Q5YzY2Y2IxODUyMjdlMy4uN2E5NDI5MTlkZGY4YzRm
MmEzYjE2ZGE3NjcwMTRiMmMyYzE1NGZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKQEAgLTMyMSw3ICsz
MjEsNyBAQCB2b2lkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2llcyhXZWJLaXRDb29r
aWVNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBnY2hhcgogCiAgICAgLy8gQ29va2llcyBhcmUgcmVh
ZC93cml0dGVuIGZyb20vdG8gdGhlIHNhbWUgU1FMaXRlIGRhdGFiYXNlIG9uIGRpc2sgcmVnYXJk
bGVzcwogICAgIC8vIG9mIHRoZSBwcm9jZXNzIHdlIGFjY2VzcyB0aGVtIGZyb20sIHNvIGp1c3Qg
dXNlIHRoZSBmaXJzdCBwcm9jZXNzIHBvb2wuCi0gICAgcHJvY2Vzc1Bvb2xzWzBdLT5zdXBwbGVt
ZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0Q29va2llcyhzZXNzaW9uSUQsIFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSwgW3Rhc2sgPSBX
VEZNb3ZlKHRhc2spXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgQ2Fs
bGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIHByb2Nlc3NQb29sc1swXS0+c3VwcGxlbWVu
dDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZXMoc2Vzc2lvbklELCBVUkwoVVJM
KCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJy
b3IpIHsKICAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsK
ICAgICAgICAgICAgIC8vIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGluIGNhc2VzIHdoZXJlIHRoZSB3
ZWIgcHJvY2VzcyBpcyBub3QgYXZhaWxhYmxlLAogICAgICAgICAgICAgLy8gY29uc2lkZXIgdGhl
IG9wZXJhdGlvbiAiY2FuY2VsbGVkIiBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHRoZSBjbGll
bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
aWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCBjZDAyNmU0ZjhlOTFhN2FiZmIxOWJj
YzMwYjBhMTIzNThmMjdkZTUwLi4zN2U2Y2NhMGNlYmNlOTE0NzMwZTNjNmQ0MjVjNWZlZjc3ZmI0
ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
aWxlQ2hvb3NlclJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNs
dWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5
T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3Vy
aXR5T3JpZ2luLmNwcAppbmRleCAzYmNjMjEyMzY3ODU5MzZhNzcxMjk3ZTZlMzk4ZDI4MGRmYjZi
ODAyLi44ODMzNmIzZGM0Njg0OTg4YWM3N2QxNjlkYTZhNTk1ZTYxZTU5ZTU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlP
cmlnaW4uY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlPcmln
aW4uaCIKIAogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogLyoqCkBAIC0xMTAsNyArMTEwLDcgQEAgV2ViS2l0U2VjdXJpdHlP
cmlnaW4qIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoY29uc3QgZ2NoYXIqIHVy
aSkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCh1cmksIG51bGxwdHIpOwogCi0gICAgcmV0
dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkp
KSk7CisgICAgcmV0dXJuIHdlYmtpdFNlY3VyaXR5T3JpZ2luQ3JlYXRlKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CiB9
CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VUlDbGllbnQuY3BwCmluZGV4IDAyNzU0MzEyN2FlZTFiMDg2ZDAzNjE1MWQxMThjZmM3OTY2NmE0
MmUuLjk2ZjllZTExODJhMjQyM2I5MTYzZGMzYWYwODIxNmIzZTkxODliNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAg
ICAgdm9pZCBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJ
bmZvPiYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1
ZXN0LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAg
IHsKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51
c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tl
bklkZW50aWZpZXIpOwotICAgICAgICBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uIG5hdmlnYXRpb25B
Y3Rpb24oQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0
aW9uRGF0YSksIGZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZNb3Zl
KHJlc291cmNlUmVxdWVzdCksIFdlYkNvcmU6OlVSTCB7IH0sIGZhbHNlLCBXVEZNb3ZlKHVzZXJJ
bml0aWF0ZWRBY3Rpdml0eSkpKTsKKyAgICAgICAgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiBuYXZp
Z2F0aW9uQWN0aW9uKEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdh
dGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwg
V1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBVUkwgeyB9LCBmYWxzZSwgV1RGTW92ZSh1c2VySW5p
dGlhdGVkQWN0aXZpdHkpKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYmtpdFdlYlZp
ZXdDcmVhdGVOZXdQYWdlKG1fd2ViVmlldywgd2luZG93RmVhdHVyZXMsICZuYXZpZ2F0aW9uQWN0
aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4IDkxNjc0YWMyODhmN2U3
OGY0NTFlOTU5M2QzYTU1NDhmZjU5ODg4OWYuLjA3YjU4YWQzMjNkNTQ1OGM5MDM2NjNkYjgzMGU5
NGJlN2U1ZDg4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAK
ICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdl
YlZpZXcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dV
bmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5j
bHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVu
TG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDBmYTRhMThmODljOGM1MWE0NTQw
Nzc4ZjVhZTI3YmVhODdkN2I1ZjEuLjIzNDg1OTY2M2QxZjJjNzgwODk4ZjA2MGY0MDE0OTg4ZTc4
NmI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlZpZXcuY3BwCkBAIC02NiwxMiArNjYsMTIgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0UHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HVW5p
cXVlUHRyU291cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAg
LTI2NDcsNyArMjY0Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfcGxhaW5fdGV4dChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogcGxhaW5UCiAgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2Zh
aWwocGxhaW5UZXh0KTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9hZERhdGEoeyByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwbGFpblRleHQpLCBwbGFpblRleHQgPyBzdHJsZW4o
cGxhaW5UZXh0KSA6IDAgfSwgInRleHQvcGxhaW4iX3MsICJVVEYtOCJfcywgYmxhbmtVUkwoKS5z
dHJpbmcoKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YSh7IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHBsYWluVGV4dCksIHBsYWluVGV4dCA/IHN0cmxlbihwbGFpblRl
eHQpIDogMCB9LCAidGV4dC9wbGFpbiJfcywgIlVURi04Il9zLCBXVEY6OmJsYW5rVVJMKCkuc3Ry
aW5nKCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcAppbmRleCBiYmQ1MTZlNzI5NjIzMzdiZGRmZWNkMGM1NmQzOTgxNDgzM2Q4YTc0Li5i
N2U2MzMwZWFlYjJlMjAyMmU2MjNmM2E2OGVjMWJjMTdhYTM3NzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5j
bHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5LmNwcAppbmRleCA3ODBhMTVlOTZkM2MzNjI0NmJiNWQ1YTQxYzcxMjdiMmFiZGQx
MzFjLi4yZjA2NjA4NmQ5OTJmYzMwZmFmNmM3OTQwYWNlZjJmZGZjYzg1M2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDUsMTEgKzEwNSwxMSBAQCB2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKGNvbnN0IFN0cmluZyYgb3JpZ2luYXRp
bmdVUkxTdHJpbgogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmF0aW5nOwogCi0gICAgV2Vi
Q29yZTo6VVJMIG9yaWdpbmF0aW5nVVJMKFdlYkNvcmU6OlVSTCgpLCBvcmlnaW5hdGluZ1VSTFN0
cmluZyk7CisgICAgVVJMIG9yaWdpbmF0aW5nVVJMKFVSTCgpLCBvcmlnaW5hdGluZ1VSTFN0cmlu
Zyk7CiAKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBsaW5rSWNvblVSTHM7CisgICAgVmVjdG9y
PFVSTD4gbGlua0ljb25VUkxzOwogICAgIGZvciAoY29uc3QgYXV0byYgbGlua0ljb25VUkxTdHJp
bmcgOiBsaW5rSWNvblVSTFN0cmluZ3MpCi0gICAgICAgIGxpbmtJY29uVVJMcy5hcHBlbmQoV2Vi
Q29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBsaW5rSWNvblVSTFN0cmluZykpOworICAgICAgICBs
aW5rSWNvblVSTHMuYXBwZW5kKFVSTChVUkwoKSwgbGlua0ljb25VUkxTdHJpbmcpKTsKIAogICAg
IHBsYXRmb3JtU2hvd1BheW1lbnRVSShvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxzLCBwYXlt
ZW50UmVxdWVzdCwgW3RoaXNdKGJvb2wgcmVzdWx0KSB7CiAgICAgICAgIEFTU0VSVChtX3N0YXRl
ID09IFN0YXRlOjpBY3RpdmF0aW5nKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpCiAgICAgZGlkUmVh
Y2hGaW5hbFN0YXRlKCk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZh
bGlkYXRlTWVyY2hhbnQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYgdXJsKQogewogICAg
IEFTU0VSVChtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlID09IE1lcmNoYW50VmFsaWRhdGlvblN0
YXRlOjpJZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggMDg1MDE5ZGEwNmUz
MmZiMGY0ZWM1ODk5MTUzNTQ4NmZlYmE3ZjhkYS4uZWRlN2E3MGNmMjEzNTk0ODgwYTY4ZjUwZGE3
Y2Y5Y2YxODU0NjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC00Myw3ICs0Myw2
IEBAIGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKIGNsYXNzIFBheW1lbnRN
ZXJjaGFudFNlc3Npb247CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogfQogCiBP
QkpDX0NMQVNTIE5TT2JqZWN0OwpAQCAtNjEsNyArNjAsNyBAQCBjbGFzcyBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5N
YWtlVwogICAgIH5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwogCiAgICAgdm9pZCBkaWRD
YW5jZWxQYXltZW50U2Vzc2lvbigpOwotICAgIHZvaWQgdmFsaWRhdGVNZXJjaGFudChjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJik7CiAg
ICAgdm9pZCBkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmKTsKICAg
ICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpOwogICAgIHZvaWQgZGlkU2VsZWN0
U2hpcHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0Jik7CkBAIC05OSw3
ICs5OCw3IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXCiAgICAgYm9vbCBwbGF0Zm9ybUNhbk1h
a2VQYXltZW50cygpOwogICAgIHZvaWQgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZl
Q2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21h
aW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
ICAgICB2b2lkIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1l
bnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdCYsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpOworICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2lu
YXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVNZXJjaGFu
dFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAg
IHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAgICAgdm9pZCBwbGF0
Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4IDE1OWFjMTkyNDYyYjQ5ZjdmOTQ2ZmM0NmE2
ZTk4ZjkyNmJiY2I5NmMuLjRlMGYyMmI3YWRmNTEwNDE5ZmU2MGFjOWJhNGVhNTQ4OWRiYWNhMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKQEAgLTMx
LDE1ICszMSwxMSBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAjaW1w
b3J0IDx3dGYvQmxvY2tQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwot
fQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OwogCi1SZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gdG9Q
S1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2lu
YXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CitSZXRhaW5QdHI8UEtQ
YXltZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVS
TCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jik7CiAKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KaW5kZXggYTRlZWNjYjA5
MWJmMGI0MGNmYjBjMDUzMjgyMjU2OTMxYjA3MzRjNS4uZGY1YjlkYTdkZGRiZmI1NjVhNThhYmRl
MjllZDMzMzc0MWI1M2ZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQb29s
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKIFNPRlRfTElOS19Q
UklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChQYXNzS2l0KQpAQCAtNTExLDcgKzUxMSw3IEBAIHN0
YXRpYyBQS1BheW1lbnRSZXF1ZXN0QVBJVHlwZSB0b0FQSVR5cGUoV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3Q6CiB9CiAjZW5kaWYKIAotUmV0YWluUHRyPFBLUGF5bWVudFJl
cXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVS
TD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3QmIHBheW1lbnRSZXF1ZXN0KQorUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQ
YXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29uc3QgVVJMJiBvcmln
aW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQogewogICAg
IGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRSZXF1ZXN0SW5zdGFuY2UoKSBp
bml0XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lv
cy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCBi
MTBkOTJlMzhiMGMxNzUzMzAwMjgyZWI3ZDU4MGUyYzIzNmNmYTg5Li4xN2I3ZjJmODlhMThiNzgw
NmEyZTk2YzY0ZTA4ZGIxZmYyODZjNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5SU9TLm1tCkBAIC00MSw3ICs0MSw3IEBAIFNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQ
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVu
dFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3Rv
cjxVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdD
b250cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlDbGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkv
bWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4
IDc0MTU5MzgzZjE5NTQyN2RiOTc2MGE4YzAxZWM3MDY3YTY3YzZmOTUuLjI1MTQ5NTBlNWQwMjQ2
MDNlMDU3MWFiYjAzNmY3OTEyOTMwZDE2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlNYWMubW0KQEAgLTQxLDcgKzQxLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKFBhc3NL
aXQsIFBLRXh0ZW5zaW9uUGF5bWVudEF1dGhvcml6YXRpb25VSUV4dGVuc2lvblBvaW50TmFtZSwK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJM
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBX
ZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RGOjpGdW5j
dGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0
aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJD
b3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RGOjpGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghUGFzc0tpdExp
YnJhcnkoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uY3BwCmluZGV4IGY2M2JiMmJhZmViOThkZTQzNWVmYjVmNWNkNTNkZTQwYzQ3NmNiZTEu
LmExMjI4NzRjMWYwNTA1MjhmNjdiNDUxM2FhN2RiNDI0OWYxNmEwMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uY3BwCkBAIC00NCwxMCArNDQsMTAgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lz
dHJ5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoY29uc3QgU3RyaW5nJiBoYW5k
bGUsIGNvbnN0IFMKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5E
X0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ3BhZ2VMb2FkU3RyYXRl
Z3knIGlzIGludmFsaWQuIik7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBh
Z2VMb2FkVGltZW91dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxv
YWRUaW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKLSAgICBwYWdlLT5sb2FkUmVx
dWVzdChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHVybCkpOworICAgIHBhZ2UtPmxvYWRS
ZXF1ZXN0KFVSTChVUkwoKSwgdXJsKSk7CiAgICAgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRl
T25QYWdlKCpwYWdlLCBwYWdlTG9hZFN0cmF0ZWd5LnZhbHVlKCksIHBhZ2VMb2FkVGltZW91dCwg
V1RGTW92ZShjYWxsYmFjaykpOwogfQogCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBzdGF0aWMgU3Ry
aW5nIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQoU3RyaW5nIGRvbWFpbikKICAgICBp
ZiAoZG9tYWluWzBdICE9ICcuJykgewogICAgICAgICAvLyBSRkMgMjk2NTogSWYgYW4gZXhwbGlj
aXRseSBzcGVjaWZpZWQgdmFsdWUgZG9lcyBub3Qgc3RhcnQgd2l0aCBhIGRvdCwgdGhlIHVzZXIg
YWdlbnQgc3VwcGxpZXMgYSBsZWFkaW5nIGRvdC4KICAgICAgICAgLy8gQXNzdW1lIHRoYXQgYW55
IGhvc3QgdGhhdCBlbmRzIHdpdGggYSBkaWdpdCBpcyB0cnlpbmcgdG8gYmUgYW4gSVAgYWRkcmVz
cy4KLSAgICAgICAgaWYgKCFXZWJDb3JlOjpVUkw6Omhvc3RJc0lQQWRkcmVzcyhkb21haW4pKQor
ICAgICAgICBpZiAoIVVSTDo6aG9zdElzSVBBZGRyZXNzKGRvbWFpbikpCiAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVN0cmluZygnLicsIGRvbWFpbik7CiAgICAgfQogICAgIApAQCAtMTMwMCw3ICsx
MzAwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKGNvbnN0
IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLAogICAgIGlmICghcGFnZSkKICAgICAgICAg
QVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAg
V2ViQ29yZTo6VVJMIGFjdGl2ZVVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgcGFn
ZS0+cGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKTsKKyAgICBVUkwgYWN0aXZlVVJMID0gVVJM
KFVSTCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOwogICAgIEFTU0VSVChh
Y3RpdmVVUkwuaXNWYWxpZCgpKTsKIAogICAgIFdlYkNvcmU6OkNvb2tpZSBjb29raWU7CkBAIC0x
MzU3LDcgKzEzNTcsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVBbGxDb29r
aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaQogICAgIGlmICghcGFnZSkK
ICAgICAgICAgU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7
CiAKLSAgICBXZWJDb3JlOjpVUkwgYWN0aXZlVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOworICAgIFVSTCBhY3RpdmVV
UkwgPSBVUkwoVVJMKCksIHBhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVVUkwoKSk7CiAgICAg
QVNTRVJUKGFjdGl2ZVVSTC5pc1ZhbGlkKCkpOwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5
KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5h
Z2VyUHJveHk+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9E
b3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tCmluZGV4IDZmZjFiNDc4MzIzOTJiZDAzMjU2MjFlNTA1ZmIwNGE3NGY0NTY1ZmYu
LjFkNmU3MTg4NDViMTQ4NWUwYjI2NjZiOWFmMWVmOTMxNjAyMDQwMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC0yMTMsNyArMjEz
LDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sJiwgRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3Rl
bVByZXZpZXdEb3dubG9hZCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gZG93bmxv
YWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKSkgewogICAgICAgICAgICAgTlNVUkwgKmRlc3RpbmF0
aW9uVVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDooTlNTdHJpbmcgKilkb3dubG9hZFByb3h5
LmRlc3RpbmF0aW9uRmlsZW5hbWUoKV07Ci0gICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2
aWV3Q29udHJvbGxlcigpLT5maW5pc2goV2ViQ29yZTo6VVJMKGRlc3RpbmF0aW9uVVJMKSk7Cisg
ICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigpLT5maW5pc2goVVJM
KGRlc3RpbmF0aW9uVVJMKSk7CiAgICAgICAgIH0KICAgICAgICAgcmVsZWFzZUFjdGl2aXR5VG9r
ZW5JZk5lY2Vzc2FyeShkb3dubG9hZFByb3h5KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA0NTk4NWY1
MGU0YmZlNzAyNWFjZGE4ZjYyZTU1ZDk4Y2FkMzQ1YmJjLi4wNTU2ZWNjYTMyNDgwZTlkMjY3NDVh
ZTdiMTk0ZDBlNWM5ZTZjYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTE2LDcgKzExNiw3IEBAIGNsYXNzIE5hdmlnYXRpb25T
dGF0ZSBmaW5hbCA6IHByaXZhdGUgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgewogCiAgICAgICAg
IFJlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmKSBvdmVy
cmlkZTsKIAotICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0
IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJM
Jikgb3ZlcnJpZGU7CisgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwg
Y29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBv
dmVycmlkZTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKQEAgLTEyNCw4ICsxMjQsOCBA
QCBjbGFzcyBOYXZpZ2F0aW9uU3RhdGUgZmluYWwgOiBwcml2YXRlIFBhZ2VMb2FkU3RhdGU6Ok9i
c2VydmVyIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICB2b2lkIHdlYkdM
TG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYpIGNvbnN0IGZpbmFsOwot
ICAgICAgICB2b2lkIHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2Vi
UGFnZVByb3h5JiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCByZXNvbHZlV2Vi
R0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmluYWw7CiAgICAgICAg
IGJvb2wgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2VQcm94eSYsIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mLCBib29sIGluUGFnZUNhY2hlLCBBUEk6Ok9iamVjdCopIGZpbmFsOwog
ICAgICAgICBib29sIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnSW4oV2ViUGFnZVByb3h5JiwgQVBJ
OjpEaWN0aW9uYXJ5JikgZmluYWw7CiAgICAgICAgIGJvb2wgZGlkQmxvY2tJbnNlY3VyZVBsdWdp
blZlcnNpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7CkBAIC0xMzMs
NyArMTMzLDcgQEAgY2xhc3MgTmF2aWdhdGlvblN0YXRlIGZpbmFsIDogcHJpdmF0ZSBQYWdlTG9h
ZFN0YXRlOjpPYnNlcnZlciB7CiAgICAgICAgIGJvb2wgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
KFdlYlBhZ2VQcm94eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBjb25zdCBWZWN0b3I8UmVm
PFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICAgICAgdm9p
ZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6VVJM
JiYsIFZlY3RvcjxTdHJpbmc+JiYsIFZlY3RvcjxTdHJpbmc+JiYpIGZpbmFsOworICAgICAgICB2
b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkmLCBVUkwmJiwgVmVj
dG9yPFN0cmluZz4mJiwgVmVjdG9yPFN0cmluZz4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpOYXZp
Z2F0aW9uQWN0aW9uPiYmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZShXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0aW9uUmVz
cG9uc2U+JiYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBhNWIwODdjZmYzMDhiZjE0MGFmODViZGFkZDM5
ZmJmNjk5MTA3OWE3Li40MjA3NzM5YWIwZTBmMDRiNTI3Y2M5Zjc3ZDViODQwMTAxM2Y1OGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CkBAIC03MCw5ICs3MCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdlbmVyYXRvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjaWYgSEFWRShBUFBfTElOS1MpCiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CkBAIC0zOTIsNyArMzkyLDcgQEAgaW5saW5lIFdl
YkNvcmU6OldlYkdMTG9hZFBvbGljeSB0b1dlYkNvcmVXZWJHTExvYWRQb2xpY3koX1dLV2ViR0xM
b2FkUG9saWN5IHBvbGkKICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOwog
fQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9s
aWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGNvbnN0Cit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2Fk
UG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5
JiwgY29uc3QgV2ViCiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAordm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFn
ZVByb3h5JiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBpZiAo
IW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVz
b2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
ZWJHTEFsbG93Q3JlYXRpb24pOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdl
YlBhZ2VQCiAgICAgfQogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OlVS
TCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+
JiYgbm90aWZpY2F0aW9ucykKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5JiwgVVJMJiYgdXJsLCBW
ZWN0b3I8U3RyaW5nPiYmIGxpc3RJZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4mJiBub3RpZmlj
YXRpb25zKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdVUkxDb250ZW50UnVsZUxpc3RJZGVudGlmaWVyc05vdGlmaWNhdGlv
bnMpCiAgICAgICAgIHJldHVybjsKQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJQYWdl
UHJveHkmCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFdlYkNvcmU6OlVSTCB1cmwoV2ViQ29yZTo6VVJMKCksIHVybFN0cmluZyk7CisgICAgVVJM
IHVybChVUkwoKSwgdXJsU3RyaW5nKTsKIAogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlKSBfd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOnVybCBk
ZWxheTpkZWxheV07CiB9CkBAIC05NzIsNyArOTcyLDcgQEAgUmVmUHRyPEFQSTo6RGF0YT4gTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFn
ZVAKICAgICByZXR1cm4gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhkYXRhKTsKIH0K
IAotUmVmUHRyPEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmIHBhZ2UsIHVu
c2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdl
U3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1JlZlB0cjxBUEk6OlN0cmluZz4gTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0
IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgLy8gV2ViS2l0VGVzdFJ1bm5lciB1c2VzIEMgQVBJLiBIZW5jZSwgbm8gU1BJIGlzIHBy
b3ZpZGVkIHRvIG92ZXJyaWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24uCiAgICAgcmV0dXJuIEFQ
STo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwgdXJsKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdSZXN1bHRD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3Vs
dENvY29hLm1tCmluZGV4IDA4N2FjNjU0OTMzM2ExNDBhZjUzOWVhNDA0Yjk2ZmExZWVjZjM0OTQu
LjA0ZGZkNWQ0NGQ2ZTQ4MzExZGRjMmYyZmU3NDE2OWY0NDhjNWIzMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29h
Lm1tCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIEhBVkUoU0FG
RV9CUk9XU0lORykKLVNhZmVCcm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNv
cmU6OlVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorU2FmZUJyb3dz
aW5nUmVzdWx0OjpTYWZlQnJvd3NpbmdSZXN1bHQoVVJMJiYgdXJsLCBTU0JTZXJ2aWNlTG9va3Vw
UmVzdWx0ICpyZXN1bHQpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX3Byb3Zp
ZGVyKFtyZXN1bHQgcHJvdmlkZXJdKQogICAgICwgbV9pc1BoaXNoaW5nKFtyZXN1bHQgaXNQaGlz
aGluZ10pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCBhN2RhZDQ4MTUyNjFhOThjNmMx
MWQzNDQ4ZjNkYjIxODEzMWE2MmRhLi45OGJkYzI3OTY0YTU2OWE3Nzk4YzE5YzdiNWFhYzJjNzRl
NmQ1OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTEwNSw3ICsxMDUsNyBAQCAt
ICh2b2lkKXNldFByb2dyZXNzOihmbG9hdClwcm9ncmVzcwogICAgICAgICBbX2l0ZW0gc2V0UHJl
dmlld0l0ZW1Qcm92aWRlclByb2dyZXNzOkAocHJvZ3Jlc3MpXTsKIH0KIAotLSAodm9pZClmaW5p
c2g6KFdlYkNvcmU6OlVSTCl1cmwKKy0gKHZvaWQpZmluaXNoOihVUkwpdXJsCiB7CiAgICAgaWYg
KHNlbGYuY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHNlbGYuY29tcGxldGlvbkhhbmRsZXIo
KE5TVVJMKil1cmwsIG5pbCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcjo6dXBkYXRlUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCiAgICAgICAgIFttX3Fs
UHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlIHNldFByb2dyZXNzOnByb2dyZXNzXTsKIH0KIAot
dm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmluaXNoKFdlYkNvcmU6OlVSTCB1cmwpCit2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2goVVJMIHVybCkKIHsKICAgICBpZiAo
bV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSkKICAgICAgICAgW21fcWxQcmV2aWV3Q29u
dHJvbGxlckRhdGFTb3VyY2UgZmluaXNoOnVybF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmgKaW5kZXggMzNmMGE5YzJjZDI2MTI1NzFlMjg2ZDU3NjczZWI3MDQw
NGQwMDFiMi4uNmNmYjQ0M2E5NTg4NjU1NmYwOTg2MDg3MDQ0ZTQyMDI2ZDNmYTlhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTE5LDcgKzExOSw3
IEBAIGNsYXNzIFVJRGVsZWdhdGUgewogICAgICAgICB2b2lkIHRvb2xiYXJzQXJlVmlzaWJsZShX
ZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICAgICAgYm9v
bCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRFeGNl
ZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdlYlBhZ2VQcm94eSYs
IFdLUmVzb3VyY2VMaW1pdCkgZmluYWw7Ci0gICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRv
d25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CisgICAg
ICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBj
b25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpE
YXRhJikgZmluYWw7CiAjZW5kaWYKICAgICAgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpT
ZWN1cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5JikgZmluYWw7CiAgICAgICAgIGJvb2wgY2hlY2tVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5
T3JpZ2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1By
b3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQppbmRleCAzZWNlODIwZWQ0YjMxNjQzNjkzZjUyMjQ3ZWRhZDljNjhiODFmZjYwLi5mOTE3YWE1
ZjdhMTE4YjIyZDhlYjIyNTU4MzRjNmM5Y2NjZGNkYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTUxLDggKzUxLDggQEAKICNpbXBvcnQgIl9X
S0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRlc3RSZXN1bHRJbnRlcm5h
bC5oIgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVE
ZXZpY2UuaD4KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpj
cmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZvPgogCiAg
ICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlh
dGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZp
ZXIpOwogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoc291cmNl
RnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpOwotICAgIGF1dG8gYXBp
TmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUo
bmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0
ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgV2ViQ29yZTo6VVJMKCksIHNob3VsZE9wZW5B
cHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAgICBhdXRvIGFwaU5h
dmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5h
dmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6
Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdU
Rk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICBhdXRvIGFwaVdpbmRvd0ZlYXR1
cmVzID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzKTsKIApAQCAt
Nzg3LDcgKzc4Nyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNob3dQYWdlKFdlYlBh
Z2VQcm94eSopCiAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3Nob3dX
ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogICAgIAotdm9pZCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkq
LCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRh
JiBkYXRhKQordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25s
b2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiBvcmlnaW5hdGlu
Z1VSTCwgQVBJOjpEYXRhJiBkYXRhKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVP
cmlnaW5hdGluZ1VSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtODY1LDggKzg2NSw4IEBAIHN0YXRp
YyB2b2lkIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlcyhjb25zdCBXZWJG
cmFtZVByb3h5JiBmcmFtZSwKICAgICB9KTsKIAogICAgIGNvbnN0IFdlYkZyYW1lUHJveHkqIG1h
aW5GcmFtZSA9IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCk7Ci0gICAgV2ViQ29yZTo6VVJMIHJl
cXVlc3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJhbWUudXJsKCkpOwotICAgIFdlYkNvcmU6
OlVSTCBtYWluRnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOworICAg
IFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIGZyYW1lLnVybCgpKTsKKyAgICBVUkwgbWFpbkZy
YW1lVVJMKFVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKIAogICAgIF9XS0NhcHR1cmVEZXZpY2Vz
IGRldmljZXMgPSAwOwogICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzQXVkaW9DYXB0dXJlKCkpCkBA
IC05NzMsOCArOTczLDggQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2hlY2tVc2VyTWVk
aWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSwKIAogICAgIFdLV2ViVmll
dyAqd2ViVmlldyA9IG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXc7CiAgICAgY29uc3QgV2ViRnJhbWVQ
cm94eSogbWFpbkZyYW1lID0gZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKTsKLSAgICBXZWJDb3Jl
OjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBmcmFtZS51cmwoKSk7Ci0gICAg
V2ViQ29yZTo6VVJMIG1haW5GcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgbWFpbkZyYW1lLT51cmwo
KSk7CisgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgZnJhbWUudXJsKCkpOworICAgIFVS
TCBtYWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogCiAgICAgYXV0byBkZWNp
c2lvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkKE5TU3RyaW5nICosIEJPT0wpPjo6ZnJvbUNhbGxh
YmxlKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oTlNTdHJpbmcgKnNhbHQs
IEJPT0wgYXV0aG9yaXplZCkgewogICAgICAgICBwcm90ZWN0ZWRSZXF1ZXN0LT5zZXRVc2VyTWVk
aWFBY2Nlc3NJbmZvKFN0cmluZyhzYWx0KSwgYXV0aG9yaXplZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVt
cHRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJv
clJlY292ZXJ5QXR0ZW1wdGVyLm1tCmluZGV4IDVmOTlhZWM4NWRhNzUyNGJhMDQxZTc1ZWIwODAx
NzM5OTA0OWIyMTIuLmFlNTc2NWU0OGU3MWI4N2ZmNjBkMTQwNWMzYzdhMzM3MjUxNWNhMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJv
clJlY292ZXJ5QXR0ZW1wdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCkBAIC02OSw3ICs2OSw3IEBA
IC0gKEJPT0wpYXR0ZW1wdFJlY292ZXJ5CiAgICAgaWYgKCF3ZWJGcmFtZVByb3h5KQogICAgICAg
ICByZXR1cm4gTk87CiAKLSAgICB3ZWJGcmFtZVByb3h5LT5sb2FkVVJMKFdlYkNvcmU6OlVSTChX
ZWJDb3JlOjpVUkwoKSwgX3VybFN0cmluZykpOworICAgIHdlYkZyYW1lUHJveHktPmxvYWRVUkwo
VVJMKFVSTCgpLCBfdXJsU3RyaW5nKSk7CiAgICAgcmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbQppbmRleCBhZTY0NzA3ZGExNTFjMjJiYzM4MzlkYWI0YWY3ZTc0MDE0ZTAyMjBlLi41ZmQ1
YjkwY2Q0OWRiNDdkOGU3YzMwNmZjNDg2YjNiZTMxMmQ4MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpA
QCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkSXRlbUluZm8uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNWFhZGNm
NjdkMTVlMGZmNGE3NzQxYjg1ZTlkZTI3YTQ5NzIyMjlmMi4uYmNiZjUzNzZiMWEzZWJlYjQ3Zjgz
YjMyODM4ZDIxNGRkNzBiNzFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KQEAgLTQwNjYsNyArNDA2Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6Ondy
aXRlVG9VUkxGb3JGaWxlUHJvbWlzZVByb3ZpZGVyKE5TRmlsZVByb21pc2VQcm92aWRlciAqcHJv
dmlkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpVUkwgYmxvYlVSTCB7
IGluZm8uYmxvYlVSTCB9OworICAgIFVSTCBibG9iVVJMIHsgaW5mby5ibG9iVVJMIH07CiAgICAg
aWYgKGJsb2JVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYktp
dFVua25vd25FcnJvcigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggZTA3YWFjODk2MDM4MTU2
MWE3MmNhNTRiNzU1NzM5Mjc5ODVlMzQwYy4uNDc3MzZmMDZkZjgyODY4ZmUzYmNiZGNkMDgxMGNl
ZWNmZGQ2ZGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQ
cm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NSw4ICs3NCw4
IEBAIGNsYXNzIERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpEb3dubG9hZD4sIHB1YmxpCiAgICAgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGlu
Z1BhZ2UoKSBjb25zdDsKICAgICB2b2lkIHNldE9yaWdpbmF0aW5nUGFnZShXZWJQYWdlUHJveHkq
KTsKIAotICAgIHZvaWQgc2V0UmVkaXJlY3RDaGFpbihWZWN0b3I8V2ViQ29yZTo6VVJMPiYmIHJl
ZGlyZWN0Q2hhaW4pIHsgbV9yZWRpcmVjdENoYWluID0gV1RGTW92ZShyZWRpcmVjdENoYWluKTsg
fQotICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiByZWRpcmVjdENoYWluKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWRpcmVjdENoYWluOyB9CisgICAgdm9pZCBzZXRSZWRpcmVjdENoYWluKFZl
Y3RvcjxVUkw+JiYgcmVkaXJlY3RDaGFpbikgeyBtX3JlZGlyZWN0Q2hhaW4gPSBXVEZNb3ZlKHJl
ZGlyZWN0Q2hhaW4pOyB9CisgICAgY29uc3QgVmVjdG9yPFVSTD4mIHJlZGlyZWN0Q2hhaW4oKSBj
b25zdCB7IHJldHVybiBtX3JlZGlyZWN0Q2hhaW47IH0KIAogICAgIHZvaWQgc2V0V2FzVXNlcklu
aXRpYXRlZChib29sIHZhbHVlKSB7IG1fd2FzVXNlckluaXRpYXRlZCA9IHZhbHVlOyB9CiAgICAg
Ym9vbCB3YXNVc2VySW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNVc2VySW5pdGlhdGVk
OyB9CkBAIC0xMjYsNyArMTI1LDcgQEAgY2xhc3MgRG93bmxvYWRQcm94eSA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRvd25sb2FkPiwgcHVibGkKICAgICB1aW50
NjRfdCBtX2J5dGVzTG9hZGVkIHsgMCB9OwogCiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1f
b3JpZ2luYXRpbmdQYWdlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IG1fcmVkaXJlY3RDaGFp
bjsKKyAgICBWZWN0b3I8VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9vbCBtX3dhc1VzZXJJ
bml0aWF0ZWQgeyB0cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxv
YWRTdGF0ZS5jcHAKaW5kZXggOWZlM2M3NjU2MWIyNTU3MTZhNDViYmEzOGZlOTk1YTAwNTk3N2Zm
Yi4uNzJmNGY3MjQ1NWE3ZWI4YTY1YjllNTI3ZTU1YTFmODIxYWNlMDhmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcApAQCAtMzIsNyArMzIsNyBAQCBGcmFt
ZUxvYWRTdGF0ZTo6fkZyYW1lTG9hZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0
ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lk
IEZyYW1lTG9hZFN0YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkK
IHsKICAgICBBU1NFUlQobV9wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwogCkBAIC00MCw3ICs0
MCw3IEBAIHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsKQogICAgIG1fcHJvdmlzaW9uYWxVUkwgPSB1cmw7CiB9CiAKLXZv
aWQgRnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwpOwogCkBAIC04MSwxMiAr
ODEsMTIgQEAgdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkRmFpbExvYWQoKQogICAgIG1fc3RhdGUg
PSBTdGF0ZTo6RmluaXNoZWQ7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1
bWVudE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2Fk
U3RhdGU6OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBtX3VybCA9IHVybDsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6c2V0VW5yZWFjaGFibGVV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCkKK3ZvaWQgRnJhbWVMb2FkU3Rh
dGU6OnNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwpCiB7CiAgICAg
bV9sYXN0VW5yZWFjaGFibGVVUkwgPSBtX3VucmVhY2hhYmxlVVJMOwogICAgIG1fdW5yZWFjaGFi
bGVVUkwgPSB1bnJlYWNoYWJsZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0ZyYW1lTG9hZFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRT
dGF0ZS5oCmluZGV4IDk4YzMyNWU4NDQzNmVkYWU0ZGNmNjM5ZDE0MDc2ZGE5ODM1MzZjMTIuLmM2
NTAwMDNmZmI1ZjBiNjg4NWMxM2YzMjZiZDJmYjRmZDI2YzlkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzksMjkgKzM5LDI5IEBAIGNsYXNzIEZyYW1lTG9hZFN0
YXRlIHsKICAgICAgICAgRmluaXNoZWQKICAgICB9OwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2
b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYpOwogICAgIHZv
aWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWlsTG9hZCgpOwogCi0g
ICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7
CisgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgVVJMJik7CiAKICAg
ICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICBjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgY29uc3QgV2ViQ29y
ZTo6VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7
IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29u
c3QgVVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7
IH0KIAotICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0g
ICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
dW5yZWFjaGFibGVVUkw7IH0KKyAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYp
OworICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3VucmVh
Y2hhYmxlVVJMOyB9CiAKIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpGaW5p
c2hlZCB9OwotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKLSAgICBXZWJDb3JlOjpVUkwgbV9wcm92
aXNpb25hbFVSTDsKLSAgICBXZWJDb3JlOjpVUkwgbV91bnJlYWNoYWJsZVVSTDsKLSAgICBXZWJD
b3JlOjpVUkwgbV9sYXN0VW5yZWFjaGFibGVVUkw7CisgICAgVVJMIG1fdXJsOworICAgIFVSTCBt
X3Byb3Zpc2lvbmFsVVJMOworICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOworICAgIFVSTCBtX2xh
c3RVbnJlYWNoYWJsZVVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggMGU5MjE4MzMyN2FiZjg3YWJiNjIwNjcwN2U2YWU1OGE2NTZhYjViNC4uMTgxYTll
MjRhZTVlZjY3NmQ2OThhNmY0MjVkZTk5N2Q1ODM4OGVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01
MzYsNyArNTM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc0RpZFJl
c3VtZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzRGlk
UmVzdW1lKCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndyaXRlQmxvYlRv
RmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAg
IGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCmluZGV4IDI1NTg5N2U3ZTgyNWUxN2I4M2U4YjE0NjRiNDgwOTE3NTZlYTMwMDcuLjRkYmJi
NmZlZTA2MmZmNWUwOGJmMTNjMDc3MzE1MjA4ZTk5NTM0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMyw4
ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBOZXR3b3JrUHJvY2Vzc1Byb3h5X2gKLSNkZWZpbmUgTmV0d29ya1Byb2Nlc3NQcm94eV9o
CisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNs
dWRlICJDaGlsZFByb2Nlc3NQcm94eS5oIgpAQCAtNDksNyArNDgsNiBAQCBjbGFzcyBQcm90ZWN0
aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBs
ZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVVJMOwogc3RydWN0IFNlY3VyaXR5T3Jp
Z2luRGF0YTsKIH0KIApAQCAtODcsNyArODUsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5
IGZpbmFsIDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJvdAog
ICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCi0gICAgdm9p
ZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYg
cGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9p
ZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CiAKICAgICB2b2lkIHByb2Nl
c3NSZWFkeVRvU3VzcGVuZCgpOwogICAgIApAQCAtMjAzLDUgKzIwMSwzIEBAIGNsYXNzIE5ldHdv
cmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzUHJveHksIHByaXZhdGUg
UHJvY2Vzc1Rocm90CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIE5l
dHdvcmtQcm9jZXNzUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUxvYWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRl
LmNwcAppbmRleCAxNzU5ZjhhNDkzNjdkMDUyZTVmY2FlNTE3M2RhMjY3MjUzOTdmNjYwLi4yZWQx
MDc1YzYwMGViZGRlYTVlNGZmNTRmYWE5MWRkZDVmNWJlMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcApAQCAtMjA2LDkgKzIwNiw5IEBAIGJvb2wgUGFnZUxv
YWRTdGF0ZTo6aGFzT25seVNlY3VyZUNvbnRlbnQoY29uc3QgRGF0YSYgZGF0YSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGRhdGEuc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFs
KQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhkYXRhLnByb3Zpc2lvbmFsVVJM
LCAiaHR0cHMiKTsKKyAgICAgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJcyhkYXRhLnByb3Zpc2lv
bmFsVVJMLCAiaHR0cHMiKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzKGRhdGEu
dXJsLCAiaHR0cHMiKTsKKyAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzKGRhdGEudXJsLCAiaHR0
cHMiKTsKIH0KIAogYm9vbCBQYWdlTG9hZFN0YXRlOjpoYXNPbmx5U2VjdXJlQ29udGVudCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbklu
Zm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5jcHAKaW5kZXggMjMxMDc1YWMzNTk5YmFkMWQxOWFkNGQ3YzQyZmM3MmZmOThjZGEwMy4u
NTEzMmI4M2JmYWFhYTEzZjQ3NmE2NjM2NTFjZDM2MjAwNjY0YWVmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMzEs
MTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW4uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luSW5mb1N0b3JlLmgKaW5kZXggNmU5ZWVmYzhmNWY0MzhhZTg5YTJmMjVhYzg4MmI1NTA3ZmVl
MWIzNC4uNTU1OTdmMzQ0YmY1MTM5YjlmNTY3M2MzMGY4OGM3MjgxNTdhZjk5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oCkBAIC0z
MSwxMCArMzEsNiBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFBsdWdpbkluZm9TdG9yZTsKQEAgLTUzLDcgKzQ5LDcgQEAgY2xhc3MgUGx1Z2luSW5mb1N0
b3JlIHsKICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZvciBhIHBsdWctaW4gdGhhdCBjYW4gaGFu
ZGxlIHRoZSBnaXZlbiBNSU1FIHR5cGUuCiAgICAgLy8gSWYgdGhlIE1JTUUgdHlwZSBpcyBudWxs
LCB0aGUgZmlsZSBleHRlbnNpb24gb2YgdGhlIGdpdmVuIHVybCB3aWxsIGJlIHVzZWQgdG8gaW5m
ZXIgdGhlCiAgICAgLy8gcGx1Zy1pbiB0eXBlLiBJbiB0aGF0IGNhc2UsIG1pbWVUeXBlIHdpbGwg
YmUgZmlsbGVkIGluIHdpdGggdGhlIHJpZ2h0IE1JTUUgdHlwZS4KLSAgICBQbHVnaW5Nb2R1bGVJ
bmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2Vi
Q29yZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzID0gV2ViQ29yZTo6UGx1Z2luRGF0
YTo6QWxsUGx1Z2lucyk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luKFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5U
eXBlcyA9IFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpOwogCiAgICAgLy8gUmV0dXJu
cyB0aGUgaW5mbyBmb3IgdGhlIHBsdWctaW4gd2l0aCB0aGUgZ2l2ZW4gYnVuZGxlIGlkZW50aWZp
ZXIuCiAgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luV2l0aEJ1bmRsZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKTsKQEAgLTYzLDcgKzU5LDcgQEAgY2xhc3Mg
UGx1Z2luSW5mb1N0b3JlIHsKIAogICAgIHN0YXRpYyBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGRl
ZmF1bHRMb2FkUG9saWN5Rm9yUGx1Z2luKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKIAotICAg
IGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBwbHVnaW5VUkwsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgcGFnZVVSTCk7CisgICAgYm9vbCBpc1N1cHBvcnRlZFBsdWdpbihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHBsdWdpblVSTCwgY29uc3QgU3RyaW5nJiBm
cmFtZVVSTFN0cmluZywgY29uc3QgVVJMJiBwYWdlVVJMKTsKICAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2lu
SWRlbnRpZmllcnMoKTsKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBsdWdpbihTdHJpbmcmJiBtYXRj
aGluZ0RvbWFpbiwgU3RyaW5nJiYgaWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmc+JiYgbWltZVR5
cGVzLCBIYXNoU2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7CiAgICAgdm9pZCBjbGVhclN1cHBvcnRl
ZFBsdWdpbnMoKSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9IHN0ZDo6bnVsbG9wdDsgfQpAQCAtMTA0
LDcgKzEwMCw3IEBAIGNsYXNzIFBsdWdpbkluZm9TdG9yZSB7CiAgICAgICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtaW1lVHlwZXM7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBleHRlbnNpb25zOwogICAg
IH07Ci0gICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3VwcG9ydGVkUGx1
Z2luJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBwbHVnaW5V
UkwpOworICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0IFN1cHBvcnRlZFBs
dWdpbiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1Z2luVVJMKTsKIAog
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbj4+IG1fc3VwcG9ydGVkUGx1
Z2luczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21h
Yy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggZDkwZjBhOWVhMDc0ZjZmNWY5
MWJkYmFhNjY3YmUwMjIyZTU4MjczOS4uZmFlY2YzMWRmNzk1ZDMxNjM4NjQ5ZDIyNDM4MDdjZjk3
NWIyYzU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMv
UGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMzQsMTIgKzM0LDEyIEBACiAj
aW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBUmVtb3Rl
TGF5ZXJTZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPGNydF9leHRlcm5zLmg+CiAjaW1wb3J0IDxtYWNoLW8v
ZHlsZC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHNw
YXduLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBAaW50ZXJmYWNlIFdLUGxhY2Vo
b2xkZXJNb2RhbFdpbmRvdyA6IE5TV2luZG93IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2FmZUJyb3dzaW5nUmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
YWZlQnJvd3NpbmdSZXN1bHQuaAppbmRleCA3OTNiZjRiYTRhZjczZGEyMGJkOTU3YTRiZmMwMzEy
NWRmM2M3Nzc2Li4zNDIyMDQ3YWIyMDgwYjY5YmNiYjhkMzM4MzhhNzJkOGNhZTk5NmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaApAQCAtMjUsOCAr
MjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgU1NCU2VydmljZUxvb2t1cFJlc3Vs
dDsKQEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFNhZmVCcm93
c2luZ1Jlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNhZmVCcm93c2luZ1Jlc3VsdD4gewogcHVi
bGljOgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLSAgICBzdGF0aWMgUmVmPFNhZmVCcm93c2lu
Z1Jlc3VsdD4gY3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3Vs
dCAqcmVzdWx0KQorICAgIHN0YXRpYyBSZWY8U2FmZUJyb3dzaW5nUmVzdWx0PiBjcmVhdGUoVVJM
JiYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTYWZlQnJvd3NpbmdSZXN1bHQoV1RGTW92ZSh1cmwpLCByZXN1
bHQpKTsKICAgICB9CiAjZW5kaWYKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0
IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQogICAgIGNvbnN0IFN0cmluZyYgcHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3By
b3ZpZGVyOyB9CiAgICAgYm9vbCBpc1BoaXNoaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BoaXNo
aW5nOyB9CiAgICAgYm9vbCBpc01hbHdhcmUoKSBjb25zdCB7IHJldHVybiBtX2lzTWFsd2FyZTsg
fQpAQCAtNTAsOSArNTAsOSBAQCBjbGFzcyBTYWZlQnJvd3NpbmdSZXN1bHQgOiBwdWJsaWMgUmVm
Q291bnRlZDxTYWZlQnJvd3NpbmdSZXN1bHQ+IHsKIAogcHJpdmF0ZToKICNpZiBIQVZFKFNBRkVf
QlJPV1NJTkcpCi0gICAgU2FmZUJyb3dzaW5nUmVzdWx0KFdlYkNvcmU6OlVSTCYmLCBTU0JTZXJ2
aWNlTG9va3VwUmVzdWx0ICopOworICAgIFNhZmVCcm93c2luZ1Jlc3VsdChVUkwmJiwgU1NCU2Vy
dmljZUxvb2t1cFJlc3VsdCAqKTsKICNlbmRpZgotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKKyAg
ICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fcHJvdmlkZXI7CiAgICAgYm9vbCBtX2lzUGhpc2hp
bmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc01hbHdhcmUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggOGJjNGE3NTNm
YTc2NzNkNDExYjliNGNmNWI1NDQyOTc5ZDY5MzIwNC4uMmVhNzlmODJkMTM5ZTFkYjVlMjcxODFl
NDI1YzllZWUxNTE4ZTIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5k
ZWRQYWdlUHJveHkuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9EZWJ1
Z1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCmluZGV4IDk0OWM4ZGY3MjFlZDllZDM1YTdkYTY4
ZWM3Y2Y5MTI3OWVmOTBhMzEuLjI2OWQwYzMyZmIzMjA4NGI1N2U3ZDE2YjBjY2YyNWNlZjc0Zjlj
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRy
b2xsZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnRyb2xsZXI7CkBA
IC01MCw3ICs1MCw3IEBAIGNsYXNzIFN5c3RlbVByZXZpZXdDb250cm9sbGVyIHsKIAogICAgIHZv
aWQgc3RhcnQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwogICAgIHZvaWQgdXBkYXRlUHJvZ3Jlc3MoZmxvYXQpOwotICAgIHZvaWQgZmluaXNoKFdlYkNv
cmU6OlVSTCk7CisgICAgdm9pZCBmaW5pc2goVVJMKTsKICAgICB2b2lkIGNhbmNlbCgpOwogICAg
IHZvaWQgZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggZTMzMTY3YTg5
NTBjMTY4ZjAxYzAzMmNlYjllNWY4Zjk4MWU1MTM4MC4uOWYyNDBkMzAyMWVkZjg2YzdjYWVkN2U4
MTQ1OTUxZGVkMzI2MGUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
Q29va2llTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmgKQEAgLTcxLDEwICs3MSwxMCBAQCBjbGFzcyBXZWJDb29raWVNYW5h
Z2VyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb29r
aWVNYQogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9u
SUQsIFdhbGxUaW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAK
ICAgICB2b2lkIHNldENvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2ll
JiwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgc2V0
Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwg
RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgc2V0Q29v
a2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25z
dCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgRnVuY3Rpb248dm9pZChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CiAKICAgICB2b2lkIGdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9u
SUQsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZ2V0Q29va2ll
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgRnVuY3Rpb248dm9pZCAoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgdm9pZCBzZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBIVFRQQ29va2llQWNjZXB0UG9s
aWN5LCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBn
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChI
VFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggMjk3YWE4YWYzMjU1YjBkYWY0YzQ3
M2FlNzczZTcwZGFjNjliNDVjOC4uNDk3YjIzMTdiN2RjZjE2NmY3MWRjNDAwZTVmZjc4ZmQwZWEx
ZGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtODAsMTQg
KzgwLDE0IEBAIGNsYXNzIFdlYkZyYW1lUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpGcmFtZT4gewogCiAgICAgRnJhbWVMb2FkU3RhdGUmIGZyYW1lTG9h
ZFN0YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZTsgfQogCi0gICAgdm9pZCBsb2FkVVJM
KGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgbG9hZFVSTChjb25zdCBVUkwmKTsKICAg
ICB2b2lkIHN0b3BMb2FkaW5nKCkgY29uc3Q7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7IH0KLSAgICBjb25zdCBX
ZWJDb3JlOjpVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRT
dGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVybCgpOyB9CisgICAgY29uc3QgVVJMJiBwcm92aXNpb25h
bFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUucHJvdmlzaW9uYWxVUkwoKTsg
fQogCi0gICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAg
ICBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CisgICAgdm9pZCBzZXRVbnJlYWNoYWJs
ZVVSTChjb25zdCBVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CiAKICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9NSU1FVHlwZTsgfQogICAgIGJv
b2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNQbHVn
aW5Eb2N1bWVudDsgfQpAQCAtMTA4LDEzICsxMDgsMTMgQEAgY2xhc3MgV2ViRnJhbWVQcm94eSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkZyYW1lPiB7CiAgICAg
dm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0YShBUEk6OlVSTCos
IEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAot
ICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3Qg
V2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBV
UkwmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZChjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKICAgICB2
b2lkIGRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgV2ViQ2VydGlmaWNh
dGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50KTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWQoKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkKCk7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOyAvLyBlZy4gYW5jaG9yIG5hdmlnYXRp
b24sIHNlc3Npb24gc3RhdGUgY2hhbmdlLgorICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbihjb25zdCBVUkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRl
IGNoYW5nZS4KICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBv
bGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgVmVjdG9yPFJlZjxTYWZlQnJv
d3NpbmdSZXN1bHQ+PiYmKT4mJiwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDg0NDIwYTEz
NTc0OWM0OWYyM2Q4ZTJjNDkwYzhkZDk0NzZjZDMzN2YuLjU1NGU3NDQ4ZWM0YWNmODY5NzNkMjZi
OWRhMDBhZDFjNjNiY2Q5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVj
dG9yUHJveHkuaApAQCAtNTAsMTAgKzUwLDYgQEAgT0JKQ19DTEFTUyBXS0luc3BlY3RvclZpZXdD
b250cm9sbGVyOwogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNlbmRpZgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJG
cmFtZVByb3h5OwpAQCAtMTUxLDcgKzE0Nyw3IEBAIGNsYXNzIFdlYkluc3BlY3RvclByb3h5CiAg
ICAgc3RhdGljIFN0cmluZyBpbnNwZWN0b3JQYWdlVVJMKCk7CiAgICAgc3RhdGljIFN0cmluZyBp
bnNwZWN0b3JUZXN0UGFnZVVSTCgpOwogICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yQmFzZVVS
TCgpOwotICAgIHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdEluc3BlY3RvclBhZ2UoY29uc3QgV2Vi
Q29yZTo6VVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShj
b25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtV2luZG93V2lk
dGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1XaW5kb3dIZWlnaHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkuY3BwCmluZGV4IDNhNTk0YmI3YjRhMjYwYjk0YjA4ZmZjYmVkYzJhZWNhY2U5
NDFhZDcuLjAyODEyY2Y3ZmJlN2I0ZTU2ZjI3NTc5MmVmMjk0MGQ5ZWVmZDg2YTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIK
ICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggNDIyZjI2YWVhMTg0OGE0MDlhODI4N2MzMjY1NjViM2YzZWQx
MzdjMC4uODg2YmMyYmQxMzNjNjM5YTBkMGNlNGE3ZGZlOGUzYzZiNDA2Nzc0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTMsMTMgKzE1MywxMyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dElu
ZGljYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9V
UkxQYXJzZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJl
YW0uaD4KIApAQCAtMTA3MSw3ICsxMDcxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKIAog
ICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAot
ICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwg
IWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IGJsYW5rVVJMKCkuc3RyaW5nKCkpOworICAg
IG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJh
c2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSk7CiAK
ICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKQEAg
LTEwOTIsNyArMTA5Miw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6
bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgcmV0dXJuIFdU
Rk1vdmUobmF2aWdhdGlvbik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRl
SFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTdHJpbmcmIGVu
Y29kaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
dW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgYm9vbCBmb3JTYWZlQnJvd3Np
bmcpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEs
IGJvb2wgZm9yU2FmZUJyb3dzaW5nKQogewogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBp
biB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8g
bm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxv
YWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCkBA
IC0xMTQxLDcgKzExNDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRh
KEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogICAgICAgICByZWF0
dGFjaFRvV2ViUHJvY2VzcygpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRT
dGF0ZS50cmFuc2FjdGlvbigpOwotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVx
dWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgbV9wYWdlTG9h
ZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBXVEY6OmJsYW5rVVJM
KCkuc3RyaW5nKCkpOwogCiAgICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAg
bG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsKQEAgLTExNjAsNyArMTE2MCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25z
dCBTdHJpbmcmIHVybCwgSW50UG9pCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlm
IChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghaXNWYWxpZCgpKQpAQCAtMzUwNiw3ICszNTA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKICAgICBtX25hdmln
YXRpb25TdGF0ZS0+ZGlkRGVzdHJveU5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJiB1cmwsIFdlYkNv
cmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCwgVVJMJiYgdW5yZWFjaGFi
bGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC0zNjA0LDcgKzM2MDQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlEKQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENhbmNlbENsaWVudFJlZGly
ZWN0KCp0aGlzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFs
VVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIFdlYkNvcmU6OlVSTCYmIHVy
bCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBVUkwmJiB1cmwpCiB7CiAgICAgUGFnZUNsaWVudFBy
b3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtMzg3NCw3ICszODc0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBl
LCBXZWJDb3JlOjpVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI0
MSw3ICs0MjQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJDb3JlOjpVUkwm
JiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90
aWZpY2F0aW9ucykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRp
b24oVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5n
PiYmIG5vdGlmaWNhdGlvbnMpCiB7CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZW50UnVs
ZUxpc3ROb3RpZmljYXRpb24oKnRoaXMsIFdURk1vdmUodXJsKSwgV1RGTW92ZShpZGVudGlmaWVy
cyksIFdURk1vdmUobm90aWZpY2F0aW9ucykpOwogfQpAQCAtNTk1Miw3ICs1OTUyLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uIHJlYXNvbikKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAobV9wcm9jZXNzLT5pc1Vu
ZGVyTWVtb3J5UHJlc3N1cmUoKSkgewotICAgICAgICBTdHJpbmcgZG9tYWluID0gV2ViQ29yZTo6
dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihXZWJDb3JlOjpVUkwoeyB9LCBjdXJyZW50VVJM
KCkpLmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIGRvbWFpbiA9IFdlYkNvcmU6
OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oVVJMKHsgfSwgY3VycmVudFVSTCgpKS5ob3N0
KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aEVuaGFuY2VkUHJpdmFjeShXZWJDb3JlOjpEaWFn
bm9zdGljTG9nZ2luZ0tleXM6OmRvbWFpbkNhdXNpbmdKZXRzYW1LZXkoKSwgZG9tYWluLCBXZWJD
b3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB9CkBAIC03MDMxLDcgKzcwMzEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3Jh
cHBlZEtleSwgYm9vbCYgc3VjYwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25z
dCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFN0cmlu
ZyYgcmVzdWx0KQordm9pZCBXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3Ry
aW5nLCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgUGFnZUNsaWVudFBy
b3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNzY3Niw5ICs3Njc2LDkgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRs
ZXI+JiYgaGFuZGxlciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgYXV0byBjYW5vbmlj
YWxpemVkU2NoZW1lID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUp
OworICAgIGF1dG8gY2Fub25pY2FsaXplZFNjaGVtZSA9IFdURjo6VVJMUGFyc2VyOjptYXliZUNh
bm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUpOwogICAgIEFTU0VSVChjYW5vbmljYWxpemVkU2NoZW1l
KTsKLSAgICBBU1NFUlQoIVVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKGNhbm9uaWNhbGl6ZWRT
Y2hlbWUudmFsdWUoKSkpOworICAgIEFTU0VSVCghV1RGOjpVUkxQYXJzZXI6OmlzU3BlY2lhbFNj
aGVtZShjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKIAogICAgIGF1dG8gc2NoZW1lUmVz
dWx0ID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lLmFkZChjYW5vbmljYWxpemVkU2NoZW1l
LnZhbHVlKCksIGhhbmRsZXIuZ2V0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoc2NoZW1lUmVzdWx0
LCBzY2hlbWVSZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IGU2NmM1NGE4YTMyNTgzYmJmNzhiMGI3M2Y3YWQ5YTNjZWNjYzY1NTguLmVl
ZGE3MTViNzAxYzE4YWE1ZjMyMzVhY2NmODdiZjc4ZTNjOTFiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04Myw3ICs4Myw2IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2luZy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9V
UkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4K
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBA
IC05NSw2ICs5NCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDY0LDcgKzQ2NCw3IEBAIGNsYXNzIFdlYlBh
Z2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+
CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2No
ZW1lcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gbG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcm
IHJlc291cmNlRGlyZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsK
ICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwot
ICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxs
cHRyLCBib29sIGZvclNhZmVCcm93c2luZyA9IGZhbHNlKTsKKyAgICB2b2lkIGxvYWRBbHRlcm5h
dGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgZW5jb2Rpbmcs
IGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhID0gbnVsbHB0ciwgYm9vbCBmb3JTYWZlQnJvd3NpbmcgPSBmYWxzZSk7CiAg
ICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRD
bGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwg
V2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogCkBAIC0xMDY0LDggKzEwNjQsOCBAQCBj
bGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpQYWdlPgogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3Qg
U3RyaW5nJiByZXN1bHQpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBl
LCBXZWJDb3JlOjpVUkwmJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJik7Ci0gICAgdm9pZCBz
YXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUs
IFdlYkNvcmU6OlVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KTsKKyAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nJiYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIFN0cmluZyYmIG1pbWVUeXBlLCBVUkwmJiBvcmlnaW5hdGluZ1VSTCwg
QVBJOjpEYXRhJik7CisgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3Ry
aW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIFVSTCYmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNhdmVQREZU
b1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25SYXcoY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmlu
ZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcm
IHBkZlVVSUQpOwogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhO
YXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBj
b25zdCBTdHJpbmcmIHBkZlVVSUQpOwpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgY2xhc3MgV2ViUGFn
ZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4K
ICAgICB2b2lkIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBib29sJiBz
dWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0
cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3Vs
dCk7CisgICAgdm9pZCBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQg
a2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiwg
U3RyaW5nJiByZXN1bHQpOwogCiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVj
dCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMsIFdURjo6RnVu
Y3Rpb248dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CiAKQEAgLTEzNDYsNyArMTM0Niw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9p
ZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKICNlbmRpZgogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6
OlVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3Vj
Y2Vzcyk+JiYpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmIGJsb2JV
UkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmKTsK
IAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgcHJlZmVyZW5jZXNTdG9yZSgpIGNvbnN0OwogCkBA
IC0xNDExLDE3ICsxNDExLDE3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBkaWRDcmVhdGVTdWJm
cmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENyZWF0ZVdpbmRvdyh1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiYpOwogCi0gICAgdm9p
ZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6OlVSTCYmIHVucmVhY2hh
YmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYm
LCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSk7
CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQpOwotICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmKTsKKyAgICB2b2lk
IGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0
cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9v
bCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwg
Y29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAg
ICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEm
KTsKLSAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmln
YXRpb25UeXBlLCBXZWJDb3JlOjpVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBVUkwm
JiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZU1haW5Eb2N1bWVudCh1aW50
NjRfdCBmcmFtZUlEKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE0NDgsMTEg
KzE0NDgsMTEgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9v
bCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7
CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGJl
Z2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lclByb3h5Jik7CisgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVS
TCYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCiAgICAgdm9pZCB3aWxsU3VibWl0
Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBjb25zdCBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVlcywgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICAgICAgCi0gICAgdm9pZCBjb250ZW50
UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYgaWRl
bnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7CisgICAgdm9pZCBjb250
ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oVVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmll
cnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7CiAKICAgICAvLyBIaXN0b3J5IGNs
aWVudAogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2
aWdhdGlvbkRhdGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwpAQCAtMTQ3Myw4ICsxNDczLDgg
QEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6UGFnZT4KICAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1
aW50MzJfdCBvcGFxdWVQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1
Z2luc1BhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcGFnZVVSTFN0cmluZyk7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29y
ZTo6VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxh
eWVkUmVwbHkmJik7Ci0gICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6
VVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6
RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7Cisg
ICAgdm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOwogI2VuZGlm
IC8vIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xiYXJzQXJlVmlzaWJsZShib29sIHRv
b2xiYXJzQXJlVmlzaWJsZSk7CiAgICAgdm9pZCBnZXRUb29sYmFyc0FyZVZpc2libGUoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHkmJik7
CkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQgc2V0UGx1Z2luQ29t
cGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlm
aWVyLCB1aW50NjRfdCBjb21wbGV4VGV4dElucHV0U3RhdGUpOwogI2VuZGlmCiAKLSAgICBib29s
IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJM
JiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgYm9vbCBtYXliZUluaXRpYWxpemVT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYpOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIHZvaWQgdG9n
Z2xlU21hcnRJbnNlcnREZWxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlZmJiNGIxZjg3YzQ3OGZiMDM4MzI2Yjk5NDAy
N2YyMmE3ODBkNWE0Li5jMGQ3ZDgyMTI1NGMzZTdiYTlmYjAzZDllN2Y1YThmMWQ2ZjRlYWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0zNCw4ICszNCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgVW5hdmFp
bGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IHBsdWdpblVuYXZhaWxhYmlsaXR5UmVh
c29uLCBTdHJpbmcgbWltZVR5cGUsIFN0cmluZyBwbHVnaW5VUkxTdHJpbmcsIFN0cmluZyBwbHVn
aW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgU3RyaW5nIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcg
cGFnZVVSTFN0cmluZykKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMIHVybCkg
LT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKLSAgICBSZXNvbHZlV2ViR0xQb2xpY3lG
b3JVUkwoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQK
KyAgICBXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkg
RGVsYXllZAorICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMy
X3QgbG9hZFBvbGljeSkgRGVsYXllZAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICBEaWRD
aGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoc3RydWN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyBhdHRyaWJ1dGVzKQogICAgIERpZFJlY2VpdmVFdmVudCh1aW50MzJfdCB0eXBlLCBib29sIGhh
bmRsZWQpCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIERpZENyZWF0ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6R2xv
YmFsV2luZG93SWRlbnRpZmllciB3aW5kb3dJZGVudGlmaWVyKQogCiAgICAgIyBGcmFtZSBsb2Fk
IG1lc3NhZ2VzCi0gICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6
OlVSTCB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgVVJMIHVybCwgVVJMIHVucmVhY2hhYmxlVVJMLCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKQogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAg
ICAgV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyB1cmwsIGRvdWJsZSBkZWxheSkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1
cmwpCisgICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwpCiAgICAgRGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJp
bmcgcHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1
c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJl
Q29udGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGYWlsTG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKQEAgLTE0NSw3ICsx
NDUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQogICAgIERpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRGV0ZWN0WFNTRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCB1aW50MzJfdCB0eXBlLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKQorICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5cGUsIFVSTCB1cmws
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ2hhbmdlTWFpbkRvY3VtZW50KHVp
bnQ2NF90IGZyYW1lSUQpOwogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmln
YXRpb25JRCkKIApAQCAtNDI3LDcgKzQyNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAgICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVj
ZW50U2VhcmNoPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5h
bWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiByZXN1bHQpCiAKLSAgICBTYXZl
UERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBXZWJD
b3JlOjpVUkwgb3JpZ2luYXRpbmdVUkwsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFNh
dmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUsIFVS
TCBvcmlnaW5hdGluZ1VSTCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBTYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFw
cGxpY2F0aW9uKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJM
U3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIHBkZlVVSUQpCkBAIC00ODcs
NyArNDg3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIERpZFJlc2lnbklu
cHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZShXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQogCi0gICAgQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYkNvcmU6OlVSTCB1cmws
IFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiBub3RpZmljYXRpb25z
KQorICAgIENvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihVUkwgdXJsLCBWZWN0b3I8U3RyaW5n
PiBpZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9ucykKIAogI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCiAgICAgQWRkUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0X3QgY29udGV4dElkKQpAQCAtNTQ2LDYgKzU0
Niw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RvcERpc3BsYXlMaW5rKHVu
c2lnbmVkIG9ic2VydmVySUQpCiAjZW5kaWYKIAotICAgIFNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFsbGVuZ2VTdHJpbmcs
IFdlYkNvcmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQorICAgIFNpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFsbGVu
Z2VTdHJpbmcsIFVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggODE3NWEzYzY4NWY3NDI3ZjE1NDE0
OTVhZjIxNTA5YWM5OGMxZjE3ZS4uMGEwMmUzYmQ3MTg4ZGRlMDA1NzAyNjZkMDhiMjFiNWQzNzg3
NzkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAt
ODYsNyArODYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Np
b25JRC5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CkBAIC05NCw2ICs5Myw3IEBACiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2Uu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCmluZGV4IDE0NDQyOGI2ZjA5ZGM5YjVlZjcxNzU1N2Y2NDQ0Y2FlZGU1
NGEwYzEuLmIxZTRjNWQxY2M0OTIxMDEyMTYzNWU4N2FiYjc5NjdkMzQxZDVmMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjM0LDcgKzIzNCw3IEBAIGNs
YXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6UHJvY2Vzc1BvCiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VX
b3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hl
bWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9p
ZCBwcmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBwcmVj
b25uZWN0VG9TZXJ2ZXIoY29uc3QgVVJMJik7CiAKICAgICBWaXNpdGVkTGlua1N0b3JlJiB2aXNp
dGVkTGlua1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlLmdldCgpOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDllODQ0Y2Ri
NWU2ZjI5YmQ4YTRkMzE1Y2VmZmRiNmRjYzE4MTE5MzIuLmFkMjczYTIyODhlZTM4OWI2NmY0ODU4
ZDJlNDYxYTUxOWVkOTEzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9z
dGljTG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcxNiw3ICs3MTYsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2go
KQogI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAgICAgaWYgKHBhZ2VzLnNpemUoKSA9
PSAxKSB7CiAgICAgICAgIGF1dG8mIHBhZ2UgPSAqcGFnZXNbMF07Ci0gICAgICAgIFN0cmluZyBk
b21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdlYkNvcmU6OlVSTCh7IH0sIHBh
Z2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIFN0cmluZyBkb21h
aW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFVSTCh7IH0sIHBhZ2UuY3VycmVudFVS
TCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHBhZ2UubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5
KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6ZG9tYWluQ2F1c2luZ0NyYXNoS2V5KCks
IGRvbWFpbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBlMGE2N2NiNzg5ZGZmNmQyMGFhNWI5
NWRhNjAxZmMzZjlmYzJlOGM2Li4xMjZhZDI2YjY2MDljMjIyNmRlYzk4NmI1NTJkNTI3ZGFlNDIw
ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNTcs
NyArNTcsNiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogc3RydWN0IFBsdWdpbkluZm87
CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQpAQCAtMTQ2LDEwICsxNDUsMTAgQEAgY2xh
c3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVz
cG9uc2l2ZW5lc3NUaW1lcjo6Q2wKIAogICAgIHZvaWQgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxl
UmVhZFNhbmRib3hFeHRlbnNpb24oKSB7IG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJv
eEV4dGVuc2lvbiA9IHRydWU7IH0KICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
Y29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMKGNvbnN0
IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgaGFzQXNzdW1lZFJlYWRBY2Nlc3NUb1VS
TChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQ
cm9jZXNzKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQ
cm9jZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZy
b21XZWJQcm9jZXNzKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgZnVsbEtleWJvYXJk
QWNjZXNzRW5hYmxlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAzMTc4MzZiNDJmZjY3
NGU1N2I0Y2JlYWVlODcxZGYxMzQ3ZWU3NWY0Li5mOGQ5Mjg0NWE2M2ZhMmIzOWIxN2IxZWJlODli
MTcxNWZhN2JhNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RlYnVnTW9kZShib29sIHZhbAogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxl
bnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c3VibWl0VGVsZW1ldHJ5KCkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdl
YkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDZjNDEwZmE0
YTk1YTNjMDA4ZDU3YjIzZjZjODMxZDllY2QwNDA3ZDAuLjU4MWEyYWU5MThiZTc0OWY2YTNhMzRj
MDYyOGE1MDQ1NGE0N2JiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00MSw3ICs0MSw2IEBAIGNs
YXNzIFdvcmtRdWV1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwotY2xhc3MgVVJMOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiB9CiAKQEAg
LTg0LDI4ICs4MywyOCBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmlu
YWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUmVzbwogCiAgICAgdm9pZCBhcHBs
aWNhdGlvbldpbGxUZXJtaW5hdGUoKTsKIAotICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNv
bnN0IFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHBhZ2VVUkwsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwp
OwotICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihj
b25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgV2ViQ29y
ZTo6VVJMJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGxv
Z0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiwgY29uc3QgVVJMJiBwYWdlVVJM
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJM
KTsKKyAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJM
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0hhZFVzZXJJbnRl
cmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFVSTCYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJl
c291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBpc1Zl
cnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRl
cihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRv
cEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVn
aXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YkZyYW1lLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhjb25zdCBXZWJDb3JlOjpV
UkwmIGhvc3RSZWRpcmVjdGVkRnJvbSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0UmVkaXJlY3Rl
ZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNsZWFyUHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Ym9vbCk7Ci0gICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVy
VG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJmcmFtZSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJM
JiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29u
c3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFt
ZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJv
bShjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhv
c3ROYW1lUmVkaXJlY3RlZEZyb20pOwotICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVj
dFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29uc3QgV2ViQ29yZTo6
VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBpc1ByZXZhbGVu
dFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
ICAgIHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNl
VW5kZXIoY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiB0b3BGcmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZy
YW1lVW5kZXIoY29uc3QgVVJMJiBzdWJGcmFtZSwgY29uc3QgVVJMJiB0b3BGcmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGly
ZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0IFVSTCYgaG9zdFJl
ZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBj
bGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIGJvb2wpOworICAg
IHZvaWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0
IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVS
TCYgdG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNv
bnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwor
ICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiBzdWJy
ZXNvdXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRGcm9tKTsKKyAgICB2b2lkIHNl
dFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNv
bnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBVUkwmIGhv
c3ROYW1lUmVkaXJlY3RlZEZyb20pOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1Vw
ZGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29r
aWVCbG9ja2luZ1VwZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b0Jsb2NrLCBTaG91bGRDbGVhckZpcnN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2NoZWR1bGVDbGVhckJsb2NraW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTMy
LDcgKzEzMSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBmaW5hbCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJSZXNvCiAgICAgdm9pZCByZXNldFBhcmFt
ZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAg
IHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiAgICAgdm9pZCBzZXRTdGF0aXN0aWNz
VGVzdGluZ0NhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxs
YmFjaykgeyBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsg
fQogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCmlu
ZGV4IDc5OTI2M2VhYzRhMmMyODgyNDY0ZDllZmFlYTQ2YTg0MzE0OWRhNWYuLjVmNGEzYTVkMTg0
M2ViYTJiMTQwMjY3MjEwYTQwNDg5ZTdjOTk3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKQEAgLTMyLDEwICsz
MiwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
YXRoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBEcmFnU291cmNlU3RhdGUgewogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGE7CiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXRoPiB2aXNpYmxlUGF0aDsKICAgICBTdHJpbmcg
bGlua1RpdGxlOwotICAgIFdlYkNvcmU6OlVSTCBsaW5rVVJMOworICAgIFVSTCBsaW5rVVJMOwog
ICAgIGJvb2wgcG9zc2libHlOZWVkc0RyYWdQcmV2aWV3VXBkYXRlIHsgdHJ1ZSB9OwogCiAgICAg
TlNJbnRlZ2VyIGl0ZW1JZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQppbmRleCBiYjY2MzQ3NTI1
ZjE4ODcxMDA3Y2U1MDRiZWI5MjI0NTljOTBlMWNhLi5lMzQ2MGY0MTVkMGI4NjhiZGYzYzI5MjVm
YzQzOGI1N2U3ZmY5MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpAQCAtNDEsMTAgKzQxLDEwIEBACiAjaW1wb3J0
IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3Ry
aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAj
aW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVu
dHMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4K
IApAQCAtMzA0LDcgKzMwNCw3IEBAIC0gKHZvaWQpX2NyZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rp
b25zOihOU0FycmF5ICopYWN0aW9ucyBzaG93TGlua1RpdGxlOihCT09MKXNoCiAgICAgICAgIGlm
IChpc0phdmFTY3JpcHRVUkwpCiAgICAgICAgICAgICB0aXRsZVN0cmluZyA9IFdFQl9VSV9TVFJJ
TkdfS0VZKCJKYXZhU2NyaXB0IiwgIkphdmFTY3JpcHQgQWN0aW9uIFNoZWV0IFRpdGxlIiwgIlRp
dGxlIGZvciBhY3Rpb24gc2hlZXQgZm9yIEphdmFTY3JpcHQgbGluayIpOwogICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV2ViQ29yZTo6dXNlclZpc2libGVTdHJpbmco
dGFyZ2V0VVJMKTsKKyAgICAgICAgICAgIHRpdGxlU3RyaW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0
cmluZyh0YXJnZXRVUkwpOwogICAgICAgICAgICAgdGl0bGVJc1VSTCA9IFlFUzsKICAgICAgICAg
fQogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjAxYzRmNmEzYzU0ZTk5YzcxNjU1Nzhi
YWU3MjJmMzhlY2I4ZTU4Yy4uNTMxNmJjM2QwNmM5MmE2ZTcyNzRkYjgxMmM0YjljZjIxMTk1MTdh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04Nyw3ICs4Nyw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1No
YXJlRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJM
RXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQv
V2ViU2VsZWN0aW9uUmVjdC5oPiAvLyBGSVhNRTogV0syIHNob3VsZCBub3QgaW5jbHVkZSBXZWJL
aXQgaGVhZGVycyEKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC05
OCw2ICs5Nyw3IEBACiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9T
b2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAog
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC00ODk1LDkgKzQ4OTUsOSBAQCAtICh2b2lkKWFj
dGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IG9w
ZW5FbGVtZW50QXRMbwogLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVl
dEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXRoVVJMOihOU1VSTCAqKXVybCBy
ZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAgaWYgKF90ZXh0U2VsZWN0aW9uQXNzaXN0
YW50KQotICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6
dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOworICAgICAgICBb
X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6V1RGOjp1c2VyVmlzaWJs
ZVN0cmluZyh1cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CiAgICAgZWxzZSBpZiAoX3dlYlNl
bGVjdGlvbkFzc2lzdGFudCkKLSAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1No
YXJlU2hlZXRGb3I6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3Rd
OworICAgICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpXVEY6
OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKIH0KIAogI2lm
IEhBVkUoQVBQX0xJTktTKQpAQCAtNjE4Nyw3ICs2MTg3LDcgQEAgLSAoVUlWaWV3Q29udHJvbGxl
ciAqKV9wcmVzZW50ZWRWaWV3Q29udHJvbGxlckZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQ
cmV2aWUKIAogICAgIE5TVVJMICp0YXJnZXRVUkwgPSBjb250cm9sbGVyLnByZXZpZXdEYXRhW1VJ
UHJldmlld0RhdGFMaW5rXTsKICAgICBVUkwgY29yZVRhcmdldFVSTCA9IHRhcmdldFVSTDsKLSAg
ICBib29sIGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0VtcHR5
KCkgJiYgKFdlYkNvcmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29yZVRhcmdldFVSTCkgfHwg
V2ViQ29yZTo6cHJvdG9jb2xJcyhjb3JlVGFyZ2V0VVJMLCAiZGF0YSIpKTsKKyAgICBib29sIGlz
VmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0VtcHR5KCkgJiYgKFdU
Rjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShjb3JlVGFyZ2V0VVJMKSB8fCBXVEY6OnByb3RvY29s
SXMoY29yZVRhcmdldFVSTCwgImRhdGEiKSk7CiAKICAgICBpZiAoW19wcmV2aWV3SXRlbUNvbnRy
b2xsZXIgdHlwZV0gPT0gVUlQcmV2aWV3SXRlbVR5cGVMaW5rKSB7CiAgICAgICAgIF9oaWdobGln
aHRMb25nUHJlc3NDYW5DbGljayA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggYmRjYzU3MTBmYzdm
NDk2NWYzYzk4ZGUxNzE2MTM1OWZhNzM1NzU4Mi4uNWFhY2M1ZWU5MDQ1YWFmZGMxNmEzNjM1YTFl
YmY0MWE5MjRhNDQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC00MSwxMyArNDEsMTMgQEAKICNpbXBv
cnQgIl9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIl9XS0dl
b2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlv
blBvc2l0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0
Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQ
dHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
Ly8gRklYTUU6IFJlbW92ZSB1c2Ugb2YgV2ViS2l0MSBmcm9tIFdlYktpdDIKICNpbXBvcnQgPFdl
YktpdC9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg+CkBAIC0xODQsNyArMTg0
LDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAKICAgICAgICAg
aWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJ
RGVsZWdhdGVQcml2YXRlPj4oW3JlcXVlc3QudmlldyBVSURlbGVnYXRlXSk7CiAgICAgICAgIGlm
IChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVl
c3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOild
KSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVS
TCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CisgICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1l
VVJMKFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8
V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgq
cmVxdWVzdC5mcmFtZS5nZXQoKSwgKnJlcXVlc3Qub3JpZ2luLmdldCgpKSk7CiAgICAgICAgICAg
ICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0g
V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwg
QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6
ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwogICAgICAgICAgICAgV0tXZWJWaWV3ICp2aWV3RnJv
bVJlcXVlc3QgPSByZXF1ZXN0LnZpZXcuZ2V0KCk7CkBAIC0yMDAsOCArMjAwLDggQEAgLSAodm9p
ZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZFJlcXVlc3RHZW9s
b2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6aXNNYWluRnJhbWU6bWFpbkZyYW1lVVJMOildKSB7
CiAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9IHJl
cXVlc3QuZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgICAgICAgICBib29sIGlzTWFp
bkZyYW1lID0gcmVxdWVzdC5mcmFtZSA9PSBtYWluRnJhbWU7Ci0gICAgICAgICAgICBXZWJDb3Jl
OjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwo
KSk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVSTCgp
LCBtYWluRnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJM
KCksIHJlcXVlc3QuZnJhbWUtPnVybCgpKTsKKyAgICAgICAgICAgIFVSTCBtYWluRnJhbWVVUkwo
VVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogICAgICAgICAgICAgcmVxdWlyZXNVc2VyQXV0aG9y
aXphdGlvbiA9IFt1aURlbGVnYXRlIF93ZWJWaWV3OnJlcXVlc3Qudmlldy5nZXQoKQogICAgICAg
ICAgICAgICAgICBzaG91bGRSZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOnJl
cXVlc3RGcmFtZVVSTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlzTWFpbkZyYW1lOmlzTWFpbkZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLTGVnYWN5UERGVmlldy5tbQppbmRleCBkMzhmMzFjODE1ZjNjOWYzZTk4ZGE1MmU1
NGZiODg4ODRlZDBhNDMwLi5hZWEwZDZkMzlmNjJkNzFkOTY3NDQ2ZTY4MjI3ZWJkN2YyODNhZDE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW0K
QEAgLTQzLDExICs0MywxMSBAQAogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5
cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9M
b2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2Jq
Q1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIC8vIEFsbCBvZiBV
SVBERlBhZ2UqIGFyZSBkZXByZWNhdGVkLCBzbyBqdXN0IGlnbm9yZSBkZXByZWNhdGVkIGRlY2xh
cmF0aW9ucwogLy8gaW4gdGhpcyBmaWxlIHVudGlsIHdlIHN3aXRjaCBvZmYgdGhlbS4KQEAgLTc3
OSw3ICs3NzksNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0
QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50QXRMbwogLSAodm9pZClhY3Rpb25TaGVl
dEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1l
bnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAg
X3dlYlNlbGVjdGlvbkFzc2lzdGFudCA9IGFkb3B0TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50
IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwotICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50
IHNob3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJl
Y3Q6Ym91bmRpbmdSZWN0XTsKKyAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVT
aGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0
XTsKICAgICBfd2ViU2VsZWN0aW9uQXNzaXN0YW50ID0gbmlsOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBkZmY0YzZjYmYwMDMyZTE1NWNiY2I5MWYx
M2FiZmIzZGMyMzQwMWVhLi5jZjRlOGE3MzMzNGZmNTdjMjZkY2YxNTJkMjM3NGNhZThkYmNjZjY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KQEAgLTM4LDExICsz
OCwxMSBAQAogI2ltcG9ydCAiX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCIKICNp
bXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxF
eHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0
ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIEBpbnRlcmZhY2UgV0tQ
REZWaWV3ICgpIDxQREZIb3N0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSwgV0tBY3Rpb25TaGVldEFz
c2lzdGFudERlbGVnYXRlPgogQGVuZApAQCAtNDk3LDcgKzQ5Nyw3IEBAIC0gKHZvaWQpYWN0aW9u
U2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgb3BlbkVs
ZW1lbnRBdExvCiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNz
aXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdGhVUkw6KE5TVVJMICopdXJsIHJlY3Q6
KENHUmVjdClib3VuZGluZ1JlY3QKIHsKICAgICBhdXRvIHNlbGVjdGlvbkFzc2lzdGFudCA9IGFk
b3B0TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6W19ob3N0
Vmlld0NvbnRyb2xsZXIgdmlld11dKTsKLSAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFy
ZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRp
bmdSZWN0XTsKKyAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOldURjo6
dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOwogfQogCiAjaWYg
SEFWRShBUFBfTElOS1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
ZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
cklPUy5tbQppbmRleCA0ZWRkOTRiZWJjZGRiNTA0MGIwMDk0ZmM0ODdhNTUyNmU2OTI1MGZlLi4y
NjU4YjM2M2I0MTFhM2JiZmI2ZDRkZDZkM2VkYTRkMWFhYjIxY2VlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVu
L1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KQEAgLTQ1LDEyICs0NSwxMiBAQAog
I2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0
cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0
d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1N0cmluZ1NQSS5oPgogI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L1VSTEZvcm1hdHRpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9y
dCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3Vy
aXR5U1BJLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC05NDEsNyArOTQxLDcgQEAg
LSAodm9pZClfdXBkYXRlTG9jYXRpb25JbmZvCiAgICAgaWYgKExpbmtQcmVzZW50YXRpb25MaWJy
YXJ5KCkpCiAgICAgICAgIGRvbWFpbiA9IFt1cmwgX2xwX3NpbXBsaWZpZWREaXNwbGF5U3RyaW5n
XTsKICAgICBlbHNlCi0gICAgICAgIGRvbWFpbiA9IHVzZXJWaXNpYmxlU3RyaW5nKHVybCk7Cisg
ICAgICAgIGRvbWFpbiA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKICNlbmRpZgogCiAg
ICAgTlNTdHJpbmcgKnRleHQgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IDE3ZjY2YjcxNzc5
YzA1NDljZjY4YWUyODE2NTgxOGE3MjlkNjYzZmUuLjlmNjc4NTg3NmU2OWM3YjY0ZGQyMTAyODUw
ZTBmNTYwNGQ4ZTRiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9M
ZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0xMTMzLDcgKzExMzMsNyBAQCBi
b29sIGRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90
IHNpemUsIFNlc3Npb25TdGF0ZSYgcwogICAgIH0KIAogICAgIGlmIChhdXRvIHByb3Zpc2lvbmFs
VVJMU3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShzZXNzaW9uU3RhdGVEaWN0aW9uYXJ5LCBwcm92aXNpb25hbFVSTEtleSkpKSB7Ci0gICAg
ICAgIHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgcHJvdmlzaW9uYWxVUkxTdHJpbmcpOworICAgICAgICBzZXNzaW9uU3RhdGUucHJvdmlz
aW9uYWxVUkwgPSBVUkwoVVJMKCksIHByb3Zpc2lvbmFsVVJMU3RyaW5nKTsKICAgICAgICAgaWYg
KCFzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IGY4NzIwNzA2NGM3YmU1
MWVhZWJiMjdhMDMxZDQ5MDUxMTJiMzg4ZjQuLjRhYWZkZmYzZGVhOGNmOTQyZDAwYTQwYzdiNzRh
N2YxM2M2YzZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0lt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzgsMTMgKzM4LDEzIEBACiAj
aW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvR2Vv
bWV0cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0RhdGFEZXRl
Y3RvcnNTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0xvb2t1cFNQSS5oPgogI2ltcG9ydCA8
cGFsL3NwaS9tYWMvTlNNZW51U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1BvcG92ZXJT
UEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL1F1aWNrTG9va01hY1NQSS5oPgogI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIFNPRlRfTElOS19GUkFN
RVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6LCBRdWlja0xvb2tVSSkKIFNPRlRfTElOS19DTEFTUyhR
dWlja0xvb2tVSSwgUUxQcmV2aWV3TWVudUl0ZW0pCkBAIC0yNzYsMTcgKzI3NiwxNyBAQCAtIChp
ZCA8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilfZGVmYXVsdEFuaW1hdGlv
bkNvbnRyb2xsZXIKIAogICAgIFN0cmluZyBhYnNvbHV0ZUxpbmtVUkwgPSBoaXRUZXN0UmVzdWx0
LT5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICBpZiAoIWFic29sdXRlTGlua1VSTC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMoYWJzb2x1dGVMaW5rVVJMLCAibWFp
bHRvIikpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJt
YWlsdG8iKSkgewogICAgICAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVBY3Rpb25NYWlsdG9M
aW5rOwogICAgICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0
YURldGVjdGVkTGlua107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9j
b2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJ0ZWwiKSkgeworICAgICAgICBpZiAoV1RGOjpwcm90b2Nv
bElzKGFic29sdXRlTGlua1VSTCwgInRlbCIpKSB7CiAgICAgICAgICAgICBfdHlwZSA9IGtXS0lt
bWVkaWF0ZUFjdGlvblRlbExpbms7CiAgICAgICAgICAgICByZXR1cm4gW3NlbGYgX2FuaW1hdGlv
bkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rXTsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGFic29sdXRlTGlua1VSTCkpIHsKKyAg
ICAgICAgaWYgKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShhYnNvbHV0ZUxpbmtVUkwpKSB7
CiAgICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvbkxpbmtQcmV2aWV3OwogCiAg
ICAgICAgICAgICBRTFByZXZpZXdNZW51SXRlbSAqaXRlbSA9IFtOU01lbnVJdGVtIHN0YW5kYXJk
UXVpY2tMb29rTWVudUl0ZW1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKaW5kZXggZWU4NjI3ZTJjMzVkNTRmNzhkOWFlNDg4
YTI4YWIyZWRlZDRjMTJmOC4uNGQyZGIwNDkwZWU4YjI0OTFkZTE1ZTYzMDQwNmMxODc0ZGEwMWRl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclBy
b3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9y
UHJveHlXaW4uY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5o
IgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJBUElQYWdlQ29u
ZmlndXJhdGlvbi5oIgotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCiAjaW5jbHVkZSAiUGFnZUNs
aWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKICNp
bmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKQEAgLTQ0LDYgKzQzLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1dlYkNvcmVJbnN0YW5jZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVz
c2FnZUJyb2FkY2FzdGVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZS5oPgorI2luY2x1ZGUg
PHd0Zi9jZi9DRlVSTEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmNwcAppbmRleCAyMDlhODVkZWEzYjYzMGQyN2MxYzIxMjUxNTU2ZGNjMGM1YTgyYjk3
Li41NTY5ZGYyZWE4NTVkMTVjNWFlNDcxNDlhNTFhYjRjMmI0NjM3YWMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXltZW50Q29vcmRp
bmF0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvcjo6b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRl
bnRpZmllciwgYwogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6T3BlblBheW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5h
bWUsIHJlcGx5SUQpKTsKIH0KIAotYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnNob3dQYXlt
ZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQorYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0
b3I6OnNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9y
PFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQogewogICAgIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29u
VVJMU3RyaW5nczsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxpbmtJY29uVVJMIDogbGlua0ljb25V
UkxzKQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpwYXlt
ZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQoKQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6
dmFsaWRhdGVNZXJjaGFudChjb25zdCBTdHJpbmcmIHZhbGlkYXRpb25VUkxTdHJpbmcpCiB7Ci0g
ICAgcGF5bWVudENvb3JkaW5hdG9yKCkudmFsaWRhdGVNZXJjaGFudChXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIHZhbGlkYXRpb25VUkxTdHJpbmcpKTsKKyAgICBwYXltZW50Q29vcmRpbmF0
b3IoKS52YWxpZGF0ZU1lcmNoYW50KFVSTChVUkwoKSwgdmFsaWRhdGlvblVSTFN0cmluZykpOwog
fQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6ZGlkQXV0aG9yaXplUGF5bWVudChjb25z
dCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IGU0ODg3
Y2M4OGFiMWYxOWZiZGE5OWYzYzBiMmM4YWVkMWRiM2EwNDQuLjAyMTJkNmFkYmJiOTA1MWZiMWJi
NDY5NmQ1ZDlhODI5NTFhZjI0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTYwLDcgKzYwLDcg
QEAgY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBh
eW1lbnRDb29yZGluYXRvckNsaWVudCwgcHIKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92
ZXJyaWRlOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpG
dW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBX
ZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYg
bGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dCYpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0
aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxl
dGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lv
biYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAppbmRleCAzZjI3MTIzMmQ2M2U0YTRmNzc0NWVmMjhjNjRlYWU1NTM4YzRiN2I5
Li43ZmU5MzM0YmE0ZjM1OWM3MmIwZDkxZDU1NDJhNzE2NDQ2MmU2ZGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uCiAg
ICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OkNhY2hlcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwgdXBkYXRl
Q291bnRlciksIDApOwogfQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0
cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBjb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmV0cmll
dmVSZWNvcmRzKG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVy
LCB1cmwpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNo
ZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Q2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDQ4MGVkZGQ5YjRlNTE1YzRi
NGFhZTZkNGM2ZDk0MjU4ZmNiZTI1MmIuLmQyZTBkZjJkODYwOTIyYTNiMWUzNTZiZTkyMWU3ODAx
OTg2ZGM3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nh
Y2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBX
ZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24gewogICAgIHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkb1JldHJp
ZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKSBmaW5hbDsKIAotICAgIHZvaWQgZG9S
ZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgdm9pZCBkb1JldHJp
ZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBjb25zdCBVUkwmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRp
b24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlv
bnMmJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDUwNzEz
MTNlYzYyNTMwN2M0MGI1YjQwMTBmNzBjNjFjNzUwNDE1ZDcuLjlkNjFlOTFjZWFmYzAwNjE0OWU3
MDMyYjg5ZWZmZmJmNWRhMWM1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJl
Z2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmws
IFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3Qg
VVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9u
SGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxv
YlJlZ2lzdHJ5UHJveHkuaAppbmRleCBiMDU0ODliOGEyM2JjNzkwYjk1ZTZlYzlmMGQ1YzgyZWQw
OWY4NzNjLi5hNGM1ZjY4NGFkNWYxNjM0N2IwNzA3OTE4NWY3N2E5YWI3YjAwYTk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5
LmgKQEAgLTMxLDEzICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJl
Z2lzdHJ5UHJveHkgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1Ymxp
YzoKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgUmVm
PFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdp
c3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRl
OwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPFdl
YkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9y
PFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VS
TCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBs
b25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rp
b248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMDhkZGJiZWE3MmJkZTdhNjg2Y2U3NWM0
ZjRmYzk4NjhjNmFmYjQ4OS4uODAxMmE4NGY0YzgzODg4MDI2MzY3MTkwNjBkNDg1NGE2NGYwNDBj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oCkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTUsNyBA
QCBjbGFzcyBQYWdlTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50
KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVj
dCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERh
dGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViS2l0OjpXZWJQYWdlJiwg
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpP
YmplY3Q+JikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBS
ZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CkBAIC05Niw3ICs5NSw3IEBAIGNsYXNzIFBhZ2VMb2Fk
ZXJDbGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBmZWF0dXJlc1VzZWRJblBhZ2UoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYpIHsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYp
IHsgfQotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50Rm9yVVJMKFdlYktpdDo6V2Vi
RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCB7IHJldHVybiBXVEY6OlN0cmluZygp
OyB9CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViS2l0OjpXZWJG
cmFtZSYsIGNvbnN0IFdURjo6VVJMJikgY29uc3QgeyByZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQog
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMo
KSBjb25zdCB7IHJldHVybiAwOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmlu
ZGV4IDRjMGM2YWVkMzg5OWQ4YjI4N2NjMTEwZWIwNzk3NmZmMTRjNzFhZTMuLjA0NjBlYzYzZjA3
OGFkZjVkY2VhYmMzMGVlODI3NjNjZDNmNTg1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFt
ZS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUxh
eWVyVHJlZUFzVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmKQogCiBib29sIFdLQnVuZGxl
RnJhbWVBbGxvd3NGb2xsb3dpbmdMaW5rKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJM
UmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93
aW5nTGluayhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikp
KTsKKyAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+YWxsb3dzRm9sbG93aW5nTGluayhVUkwo
VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1lSGFu
ZGxlc1BhZ2VTY2FsZUdlc3R1cmUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKQEAgLTIxNywx
MiArMjE3LDEyIEBAIGJvb2wgV0tCdW5kbGVGcmFtZUdldERvY3VtZW50QmFja2dyb3VuZENvbG9y
KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIGRvdWJsZSoKIAogV0tTdHJpbmdSZWYgV0tCdW5k
bGVGcmFtZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lUmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVk
QVBJKHRvSW1wbChmcmFtZVJlZiktPnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJM
KFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKKyAg
ICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5hbWVG
b3JSZXNvdXJjZVdpdGhVUkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOwogfQog
CiBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJM
KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKLSAgICByZXR1
cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhV
UkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOwor
ICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5taW1lVHlwZUZvclJlc291
cmNlV2l0aFVSTChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKSk7CiB9CiAKIGJvb2wg
V0tCdW5kbGVGcmFtZUNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzKFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDA3ZDAyNDI0MzZiZDQxNDU4
MDJjYjE1OWUzYjBkOTcwMTRmM2EzMDguLjllOWEyYjFkNTI4NmUxNGZjNDQ2OGJjMTAwMmQ1YWE3
NjY2MjVmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02Niw5ICs2Niw5IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJMYXllckNvbXBvc2l0b3IuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBA
IC00MjUsNyArNDI1LDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxl
UGFnZUhhc0xvY2FsRGF0YUZvclVSTChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYg
dXJsUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVS
TChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKKyAg
ICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5oYXNMb2NhbERhdGFGb3JVUkwoVVJMKFVSTCgpLCB0
b1dURlN0cmluZyh1cmxSZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVQYWdlQ2FuSGFuZGxlUmVx
dWVzdChXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3Ry
aW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcAppbmRleCBiNWUxNjU3YTBkMjFmNmMxYzk3YmI5
MDM4ZmQ0YTUwMTk5YmNmMWFkLi43MTU3NDlhNDkyMzljMzFhYWI3ZmMxYWVkZDAyNjIzZTE0ZThh
YWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcu
Y3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29u
dmVydFRvVVRGOFN0cmluZy5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNSw3ICszNSw3IEBAIGdjaGFyKiBjb252ZXJ0VG9V
VEY4U3RyaW5nKFdURjo6U3RyaW5nIGNvbnN0JiBzKQogICAgIHJldHVybiBnX3N0cmR1cChzLnV0
ZjgoKS5kYXRhKCkpOwogfQogCi1nY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpV
UkwgY29uc3QmIHMpCitnY2hhciogY29udmVydFRvVVRGOFN0cmluZyhVUkwgY29uc3QmIHMpCiB7
CiAgICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcocy5zdHJpbmcoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
Q29udmVydFRvVVRGOFN0cmluZy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuaAppbmRleCBlNDk0MTEzYTNm
OGZmNmU5YzRkYmU2OGFmOWYxZDhhMmUyMjJmZWM5Li5jMzcyNTM1OWI4OTM0N2MxZjg4OTZhZGM1
YmNhYjRiNmE0NDk2YzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmluZy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9V
VEY4U3RyaW5nLmgKQEAgLTIzLDEzICsyMyw5IEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIHR5cGVkZWYgY2hhciBn
Y2hhcjsKIAogZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV1RGOjpTdHJpbmcgY29uc3QmIHMp
OwotZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6VVJMIGNvbnN0JiBzKTsKK2dj
aGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFVSTCBjb25zdCYgcyk7CiAKICNlbmRpZiAvKiBDb252
ZXJ0VG9VVEY4U3RyaW5nX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdC5jcHAKaW5kZXggMWJiMGJhMTYwMzcyOGJjMmZjOTI0OTdhY2IwMTM2YmI5OTkwNTcyYi4u
MDgzMTc0ZTVlZDIxZjk4Mzk3M2IyNmM3ZDdjOGM0ODhlMTAyYzIyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCA0OTM1NjYxZWUyNDg4ZjYzODAxNGU4NjlkZDhmMTEy
MDlhNDhiODEwLi4wMWRkOTkwNzljYjU0ZmI2MzM1ZWNmYTNlMzczMzVlZTFiNjViZjczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNCw3ICsz
NCw2IEBACiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIGNsYXNzIFN0cmluZzsKLWNs
YXNzIFVSTDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxv
YWRlckNsaWVudEJhc2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50VjAsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYxLCBXS0J1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnRWMiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjMsIFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudFY0LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNSwgV0tCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50VjYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY3LCBXS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnRWOCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Vjk+IFZlcnNpb25zOwpAQCAtNDgsNyAr
NDcsNyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJ
OjpDbGllbnQ8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZQogICAgIGV4cGxpY2l0IEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudChjb25zdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKik7
CiAKICAgICB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxM
b2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAg
IHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAK
ICAgICBib29sIHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2UmLCBJbmplY3Rl
ZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBX
ZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKQEAgLTg3LDcgKzg2LDcg
QEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xp
ZW50PFdLQnVuZGxlUGFnZUxvYWRlckNsaWUKIAogICAgIHZvaWQgZmVhdHVyZXNVc2VkSW5QYWdl
KFdlYlBhZ2UmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+Jikgb3ZlcnJpZGU7CiAKLSAgICBX
VEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViRnJhbWUmLCBjb25zdCBXZWJDb3JlOjpVUkwm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2ViRnJh
bWUmLCBjb25zdCBVUkwmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkxheW91dE1p
bGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcygpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFn
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZTJhNjk3OGZlMjgzYWQ1M2MzNDhiZjA3MDdh
YjY4ZGY3ZDk2MjM2Mi4uOTAzYzZkMDEyYzFkYjI4OGZiYTIzOGI1NzhiZDA2NTYzNDQ4ZDgxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlh
Q2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAxMjc4YzFi
NDQzZmFkN2JmYTcxZjEwZjJiNGYyODY4NmI2ZTAzNDRmLi42NWNmNDIzYWIxNjgyNzI1YWZkOTRh
MzE0YmUxNDdiODNlYTlmMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9p
ZCBXZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJ
ZGVudGlmaWVyLCBSZXNvdXJjZUUKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShl
cnJvciksIFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
cHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQ
cmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNv
bnN0IFVSTCYgdXJsLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgdWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBnZW5lcmF0ZUxvYWRJZGVu
dGlmaWVyKCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFu
ZGxlcnMuYWRkKHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuaAppbmRleCBlMDQwZDA3NTVjNzk0ZGJkNzFlYTljNTU4ODQyYTA2NWM1MmRm
NWRlLi4xYzJmYjNmMTFlNDVlM2I3ZWE4ODI5NjNmYTFjYTA5M2Q4ZTZlMTY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgK
QEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgV2ViTG9hZGVyU3RyYXRlZ3kgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kgewogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXImLCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJl
Y3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYg
cmVkaXJlY3RVUkwpIGZpbmFsOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVk
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCkgZmluYWw7
CiAgICAgCiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJDb3JlOjpSZXNvdXJjZUxv
YWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpIGZpbmFsOwogCkBAIC02NSw3ICs2NSw3IEBAIGNs
YXNzIFdlYkxvYWRlclN0cmF0ZWd5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0
ZWd5IHsKICAgICB2b2lkIHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJl
cXVlc3RIZWFkZXJzLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0
X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpG
cmFtZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9p
ZCBwcmVjb25uZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25u
ZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAogICAgIHZvaWQg
c3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiBib2R5SGFzaCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0UHJvdmlkZXIuaAppbmRleCAwMjQ0ZTVmMmM4ODYyMDUzMTc2OTllY2ZkMWUx
YTFiMjNjN2ZkOTk4Li42OWI3ZmEzYjQxNmY0ZWYzOTZhZWFkZTRjMTIwODRiYjM1MmIxMTg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFBy
b3ZpZGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJT
b2NrZXRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRQcm92aWRlciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTb2NrZXRQcm92aWRlcj4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRQcm92aWRlcik7IH0KLSAgICBSZWY8V2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbikgZmluYWw7CisgICAgUmVmPFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0
IFVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pIGZpbmFsOwogICAgIHZpcnR1YWwg
fldlYlNvY2tldFByb3ZpZGVyKCkgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCA3YTBiOWUzMTJlYjk5
ZDQ3YWM1MmRlZTlkZTRhYTY4ZWFmNTRkNzQ3Li4xZDVlMjI5YWMyM2RhMzA4N2U0NmQ5MzU1NjVh
YWE0ZDY3YjVhMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmPFdlYlNvY2tldFN0
cmVhbT4gV2ViU29ja2V0U3RyZWFtOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRTdHJlYW0odXJsLCBj
bGllbnQsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbikpOwogfQogCi1XZWJTb2NrZXRT
dHJlYW06OldlYlNvY2tldFN0cmVhbShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbikKK1dlYlNvY2tldFN0cmVhbTo6V2ViU29j
a2V0U3RyZWFtKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hl
UGFydGl0aW9uKQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0uaAppbmRleCAzZmViNmE2MzVmZmU5ZTc5MjMxZDMyYjUxYzYz
ZmI3Mjg3N2Q5OWUzLi4zODlhMGI5OGI3NTk4Y2M2NjhiZThkYjQ1ZjE3MTFiOGZlOGY3NzBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29j
a2V0U3RyZWFtIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlLCBwdWJsaWMgSWRl
bnRpZmllZDxXZWJTb2NrZXRTdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNv
Y2tldFN0cmVhbT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRp
YWxQYXJ0aXRpb24pOworICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0U3RyZWFtPiBjcmVhdGUoY29u
c3QgVVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CiAgICAgc3RhdGljIHZvaWQg
bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiAgICAgc3RhdGljIFdlYlNvY2tldFN0cmVhbSogc3Ry
ZWFtV2l0aElkZW50aWZpZXIodWludDY0X3QpOwogICAgIApAQCAtNzMsNyArNzMsNyBAQCBjbGFz
cyBXZWJTb2NrZXRTdHJlYW0gOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIsCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgZmluYWw7CiAKLSAgICBXZWJTb2NrZXRTdHJlYW0oY29uc3QgV2ViQ29yZTo6VVJMJiwgV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CisgICAgV2ViU29ja2V0U3RyZWFtKGNvbnN0IFVS
TCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOwogICAgIH5XZWJTb2NrZXRTdHJlYW0o
KTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkQW1vdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCmluZGV4IDAwM2QyN2ExMDE4Nzk4ODlkYWE2NmZhYTBjNmQ5OTNlOTE2MGUxMGYuLmM2
YTUwNjkxNzQwYTVkYjNlNjVmMTk3NTcxYjdiZDQwMDViYjcxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAKQEAgLTM4LDggKzM4LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJN
YXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8dXRpbGl0
eT4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShVTklYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXgg
YmNiM2Q3ZmI3NzdkMTMxYzdmMjQ3NmY2NWIxNTJmMDQzOTAxNDZkNy4uNzRhODRlOTI3Y2Y1YTdk
ZjYyMjM2Y2Y0YTliZmZiOTU1MTIzOWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0xMzks
NyArMTM5LDcgQEAgY2xhc3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJsaWMgUGx1Z2luIHsKIAogICAg
IHZvaWQgc2V0SXNQbGF5aW5nQXVkaW8oYm9vbCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyUmVkaXJl
Y3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkws
IGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKKyAg
ICB2b2lkIHJlZ2lzdGVyUmVkaXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25zdCBVUkwm
IHJlcXVlc3RVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRp
b25EYXRhKTsKICAgICB2b2lkIHVybFJlZGlyZWN0UmVzcG9uc2Uodm9pZCogbm90aWZ5RGF0YSwg
Ym9vbCBhbGxvdyk7CiAKICAgICAvLyBNZW1iZXIgZnVuY3Rpb25zIGZvciBjYWxsaW5nIGludG8g
dGhlIHBsdWctaW4uCkBAIC0yMDQsMTMgKzIwNCwxMyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6
IHB1YmxpYyBQbHVnaW4gewogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90
IHJlcXVlc3RJRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVx
dWVzdElELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0
ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNw
b25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURp
ZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBy
ZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAorICAgIHZvaWQgc3RyZWFtV2lsbFNl
bmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYg
cmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdh
c0NhbmNlbGxlZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLCAKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IDQwNzQwNzhkN2E4ZmI1MzhjZmY0N2RjMWFkYTRm
OWQyMGI3MGQyMmYuLmJiNmE1YjA4YzdjY2U1ZGRlZDg5OTM2MGY3YWI4MzQwZjAzOTVlNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgTmV0c2NhcGVQbHVnaW47CkBAIC01NSw4ICs1MSw4IEBAIGNsYXNzIE5ldHNjYXBlUGx1
Z2luU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHsKICAg
ICB1aW50NjRfdCBzdHJlYW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtSUQ7IH0KICAgICBj
b25zdCBOUFN0cmVhbSogbnBTdHJlYW0oKSBjb25zdCB7IHJldHVybiAmbV9ucFN0cmVhbTsgfQog
Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJM
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJl
c3BvbnNlU3RhdHVzKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCisgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlZGlyZWN0UmVz
cG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBlNThkZTJjNzYwZGRiMTRjMTJjNGNiZmJmNzVjZTky
ZjVhYjhlMDFhLi42ODYyZTMwNGZlZGI4NWI3ODYzNDcwMGI5ZDZiMzVhNmMzYzIwY2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBA
IC0xMzUsMTIgKzEzNSwxMiBAQCBjbGFzcyBQREZQbHVnaW4gZmluYWwgOiBwdWJsaWMgUGx1Z2lu
LCBwcml2YXRlIFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhIHsKICAgICB2b2lkIGZyYW1lRGlkRmlu
aXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVEaWRG
YWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIHZv
aWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5n
JiByZXN1bHQpIGZpbmFsOwotICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9Ci0gICAgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFz
dE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFk
ZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIHN0
cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0
VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsg
fQorICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxh
c3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVh
ZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBz
dHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCBzdHJlYW1JRCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0
cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgZmluYWw7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMy
X3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgs
IHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5h
bWUpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmlu
aXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdh
c0NhbmNlbGxlZCkgZmluYWw7CkBAIC0zMDYsNyArMzA2LDcgQEAgY2xhc3MgUERGUGx1Z2luIGZp
bmFsIDogcHVibGljIFBsdWdpbiwgcHJpdmF0ZSBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSB7CiAK
ICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNvcmU6OlVSTCBtX3NvdXJj
ZVVSTDsKKyAgICBVUkwgbV9zb3VyY2VVUkw7CiAKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxl
bmFtZTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gbV9kYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNzFi
OGNmODMzNDNjNmNmODUyYTBkMDk3MjgzOGRmZmFkMjcwNmM4YS4uZTRjZDY1MzU2MTE2MjQ2YmZh
NjhmNzRiMTZiNDMxNTY4ZDc5NzViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xNzAyLDcgKzE3MDIsNyBAQCBib29sIFBE
RlBsdWdpbjo6aGFuZGxlc1BhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiB2b2lkIFBERlBsdWdpbjo6
Y2xpY2tlZExpbmsoTlNVUkwgKnVybCkKIHsKICAgICBVUkwgY29yZVVSTCA9IHVybDsKLSAgICBp
ZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoY29yZVVSTCkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJ
c0phdmFTY3JpcHQoY29yZVVSTCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFt
ZSA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaAppbmRleCA4NzZmNmNlNDhlY2NiNjA2MzM5NDc2YTY2NjFmMjZmNGY5MGFh
NDcyLi5hYWJkNWU1MDUxYmVjMjlmNTUxMTU3MzgwNjFhNmE2MDhlZjIzMTI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjMsMTYgKzIzLDE1IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbHVnaW5f
aAotI2RlZmluZSBQbHVnaW5faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Zp
bmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTUzLDE1ICs1
MiwxNSBAQCBjbGFzcyBEZWNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xh
c3MgQWZmaW5lVHJhbnNmb3JtOwotICAgIGNsYXNzIEZsb2F0UG9pbnQ7Ci0gICAgY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OwotICAgIGNsYXNzIEludFBvaW50OwotICAgIGNsYXNzIEludFJlY3Q7Ci0g
ICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBGbG9hdFBvaW50OwotICAgIGNsYXNzIFNjcm9s
bGJhcjsKLSAgICBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07Citj
bGFzcyBGbG9hdFBvaW50OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW50UG9pbnQ7
CitjbGFzcyBJbnRSZWN0OworY2xhc3MgSW50U2l6ZTsKK2NsYXNzIEZsb2F0UG9pbnQ7CitjbGFz
cyBTY3JvbGxiYXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtODIsNyArODEsNyBAQCBlbnVtIFBsdWdpblR5cGUgewogY2xhc3MgUGx1Z2luIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogcHVibGljOgogICAgIHN0cnVjdCBQ
YXJhbWV0ZXJzIHsKLSAgICAgICAgV2ViQ29yZTo6VVJMIHVybDsKKyAgICAgICAgVVJMIHVybDsK
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZh
bHVlczsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwpAQCAtMTY3LDEwICsxNjYsMTAgQEAgY2xh
c3MgUGx1Z2luIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogICAgIHZp
cnR1YWwgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBTdHJpbmcmIHJlc3VsdCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBh
IHN0cmVhbSBtYXkgc2VuZCBhbiBIVFRQIHJlcXVlc3QuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVh
bVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VT
dGF0dXNDb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXNDb2RlKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUg
cGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgs
IAorICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRo
ZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE4Myw3ICsxODIs
NyBAQCBjbGFzcyBQbHVnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7
CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wg
d2FzQ2FuY2VsbGVkKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBt
YW51YWwgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFs
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYg
cmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCisgICAgdmlydHVhbCB2b2lkIG1h
bnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50
MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3Ry
ZWFtIGRpZCByZWNlaXZlIGRhdGEuCkBAIC0zMjMsNSArMzIyLDMgQEAgY2xhc3MgUGx1Z2luIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJLaXQ6OlRvVmFsdWVUeXBlTmFtZSkgXAogc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYktpdDo6UGx1Z2luJiBwbHVnaW4pIHsgcmV0dXJuIHBsdWdpbi50eXBlKCkgPT0g
V2ViS2l0OjpTcGVjaWZpY1BsdWdpblR5cGU7IH0gXAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQotCi0jZW5kaWYgLy8gUGx1Z2luX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAppbmRleCBhNWM2ZmEwNDNjMzYyMjY5NDFj
OGQyMTQ3YjIxMjA4ZWMyZjI5NDc1Li5hMWY4MDdlMWU1NTA3MjNlZmVlYTE3NzEzM2I4MWRmZjRk
MTc2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luQ29udHJvbGxlci5oCkBAIC00Myw3ICs0Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNl
OwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGRjNDIxMWQwMGVkODkxMGQz
NDdkOGYwY2ExYjc1M2M2YjJlNmVhMWQuLmU2YWIzZWQ5YjAzMmZlMDRjMDJkZjVjNjg5MmU0N2Q0
ZTY5ZDRhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuaApAQCAtODcsMTIgKzg3LDEyIEBAIGNsYXNzIFBsdWdpblByb3h5IDogcHVibGljIFBs
dWdpbiB7CiAgICAgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElE
KSBvdmVycmlkZTsKICAgICB2b2lkIGZyYW1lRGlkRmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJv
b2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlw
dCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKLSAg
ICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBp
bnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJM
LCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVl
c3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiBy
ZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25z
ZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBv
dmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFt
SUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwg
Ym9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0
cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURp
ZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwo
Ym9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBmMDc1MmJkOTgyYTE1M2JhZDRiMjkyNDVm
MTAzMjE5NzBlYjNhYzkxLi4zY2FhYWM5YWMxY2QzZGJkNmJmNDZmZWM1ZDcxZjE0MWRmNDViMzk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cApAQCAtMTE2Myw3ICsxMTYzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtVVJMUmVxdWVz
dChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIFJlZjxQbHVnaW5WaWV3PiBwcm90ZWN0KCp0aGlz
KTsKIAogICAgIC8vIEZpcnN0LCBjaGVjayBpZiB0aGlzIGlzIGEgamF2YXNjcmlwdDogdXJsLgot
ICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChyZXF1ZXN0LT5yZXF1ZXN0KCkudXJsKCkpKSB7
CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVy
bCgpKSkgewogICAgICAgICBwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QocmVxdWVzdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIFBsdWdpblZp
ZXc6OnBlcmZvcm1GcmFtZUxvYWRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAKIHZv
aWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJl
cXVlc3QpCiB7Ci0gICAgQVNTRVJUKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVl
c3QoKS51cmwoKSkpOworICAgIEFTU0VSVChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVl
c3QtPnJlcXVlc3QoKS51cmwoKSkpOwogCiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fcGx1
Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1By
b3ZpZGVyLmNwcAppbmRleCA1YzUxYzQ1ZjY0MDlkZWVkZDU1ZTkzYzBmZDk4OGI3Yzg3M2Q4MzFh
Li4zZjcwYjFlODdiOWFmZThmM2YwNjVhNDE5Y2NkYjk1MmNlZmZjZTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92
aWRlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBWZWN0b3I8UGx1Z2luSW5mbz4gV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyOjpwbHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIHN0ZDo6b3B0aW9uYWw8VgogI2Vu
ZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogfQogCi1WZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQ
YWdlJiBwYWdlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK1ZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFBhZ2Um
IHBhZ2UsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVy
czsKICAgICBhdXRvIHBsdWdpbnMgPSBwbHVnaW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklk
ZW50aWZpZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5kZXggMWJiYWQ1YTc5ZmIxMWVjNjgwNzQ5NDdk
MDA3YzNjZDU2ZTU4MTlkZC4uODQ2NDJkN2ZjMDExZjhjYWNmNjQxYmIxYWVlOGYyODIzOTNjMDdl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiAg
ICAgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4gcGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBj
b25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4gd2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFs
OwogICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAyYmZhZWU0NzZlMWY0YmNjY2Ri
MjY2MGZlNWQ4ZTY2YmQ2NzRhM2Q3Li5kY2Q2ZGE1ODA2YmIzMzJjMjRmZmVjODUxOGVlNTA5NmNi
YWU3ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtNzksMTMgKzc5LDEzIEBAIGNsYXNzIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rp
b24sIHB1YmxpYyBJCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudERhdGEmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYpIGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsK
IAotICAgIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9u
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbihXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdp
c3RyYXRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGRpZE1hdGNoUmVnaXN0cmF0aW9u
KHVpbnQ2NF90IG1hdGNoUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpOwogICAgIHZvaWQgZGlkR2V0UmVnaXN0
cmF0aW9ucyh1aW50NjRfdCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpOwotICAgIHZvaWQgd2hlblJlZ2lzdHJh
dGlvblJlYWR5KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0
IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIHdoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lz
dHJhdGlvblJlYWR5Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RyYXRpb25SZWFk
eSh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YSYmKTsKIAotICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyhXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMLCBHZXRS
ZWdpc3RyYXRpb25zQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25z
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGll
bnRVUkwsIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGlk
UmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApp
bmRleCBlODczZmZmZDJhOGM3MDFhZTg2OTA1Y2U5ZTU3MDRmMWE3YjljOWI0Li5kOTc5NDY5OWM5
MWRjNWQ3NTZkYzMzYmRiMjU0NWM1ZjVkYzA0MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmgKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q28KICAgICB2
b2lkIG1hdGNoQWxsKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgV2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xhaW0oV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CiAgICAgdm9pZCBza2lwV2FpdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgRnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNjcmlwdFJl
c291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2Ny
aXB0JikgZmluYWw7CisgICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYpIGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3Nh
Z2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IDAzNzAxMDZlOTJmMWZiMmE0
YWJkODUxMTE2YzcyNjJmZTQ1NDAwZmIuLjYyNmY2MWE1MGE2NDU5ZDQ5NTY3ZDY4YmZlY2JhODc3
YmJhNmFiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTU3LDEwICs1Nywx
MCBAQCBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6VXNlckNvbnRlbnRQcm92aWRlciwgcHJpdgogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIgaWRlbnRpZmllcigpIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9p
ZCBhZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBXZWJDb3JlOjpVc2Vy
U2NyaXB0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgcmVtb3ZlVXNl
clNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IFVSTCYpOwog
ICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwog
ICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRX
aXRoVVJMKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsK
KyAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkJiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldHMoSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBmOTM2NjdhZTQ4ZTlkNzgxZjMyZjI2YTEw
YTNhNTJmN2NmYThjMzE2Li41YTQ2ZWY4MDdkNzAxNzNlOWZjMTgzMzI3ZDc2MWJmYjI1Y2M4ZDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTE4Myw3ICsxMTgzLDcgQEAgYm9vbCBXZWJD
aHJvbWVDbGllbnQ6OnVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBw
ZWRLZXksIFZlY3RvcjwKIAogI2VuZGlmCiAKLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0
IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QK
K1N0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBj
b25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGlmICghV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1f
cGFnZS5wYWdlSUQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMDk0OGY2N2FiZWMxNGQ4NGU2
ZGY1NTY0MjcxZWQ2ZTEzZDk0MjRjZS4uM2ZlZTBjYjAxYjM2ZGI4NmY2ZjNhZjAzOTNjYWEzYTE1
ZjM1ZDAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjEzLDcgKzIxMyw3IEBAIGNsYXNzIFdl
YkNocm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAg
IHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSBmaW5hbDsKICAgICBib29sIGFk
anVzdExheWVyRmx1c2hUaHJvdHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRl
OjpGbGFncykgZmluYWw7CiAKLSAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmlu
Zz4+JikgZmluYWw7CisgICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3Qg
VVJMJiwgY29uc3QgSGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIGZpbmFsOwog
CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1
cnNvcigpIGZpbmFsIHsgfQpAQCAtMzI1LDcgKzMyNSw3IEBAIGNsYXNzIFdlYkNocm9tZUNsaWVu
dCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewogICAgIGJvb2wgdW53cmFw
Q3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0
IGZpbmFsOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJp
bmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBT
dHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAKICNpZiBF
TkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKICAgICB2
b2lkIGhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApp
bmRleCBjZWMzMTQyYjE2ZTM1ZDAwMmNmYzhjNDJmNGU3ODFiODJlYmU4NThjLi41ZDhlN2Q2ZDBm
YTUxYTEwNTFkODBjYTE3NjZlZTM3N2ZiY2YzY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7CiBwcml2YXRlOgogICAgIHZvaWQgY29udGV4
dE1lbnVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwm
KSBvdmVycmlkZTsKICAgICB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJh
bWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFt
ZSopIG92ZXJyaWRlOwogICAgIGJvb2wgaXNTcGVha2luZygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmgKaW5kZXggOWY3ZDdmYzUwYjZlYzhhZWU1NmJiMjU5YjczMzQwYzQwZDkzNjcyNy4uMWFkNGMz
ZGUyY2I3ZDM4ZTYyNjJjMTk3YWFiMjRjY2E2ZmVkYTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC01
MCw3ICs1MCw3IEBAIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0Ns
aWVudCB7CiAgICAgdm9pZCBkaWRDb25jbHVkZUVkaXREcmFnKCkgb3ZlcnJpZGU7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBX
ZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJh
bWUqKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3ll
ZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYzIzNTM5
NTM1MzJiMDc3NzAyMjA1NzNmMmRmMzZiOGNjMzY2ZjdhYy4uY2E5ZTYzN2JjNTk3ZWE2MjlhMTZm
MjA3MTBhNDRiNWYxNGUzNWFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC0xNzk2LDcgKzE3OTYsNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd1Njcmlw
dChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykKICAgICByZXR1cm4gIXBsdWdpblZpZXcgfHwgIXBs
dWdpblZpZXctPnNob3VsZEFsbG93U2NyaXB0aW5nKCk7CiB9CiAKLWJvb2wgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKQorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRm9yY2VV
bml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFn
ZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGMxYjljZDBmOTQzMzI3OWNkZDg0YzBjOTVmYTgxYjk4
NGU1ZjU0ZTguLjNjNzE2Njg1MGIyNTE1NjZkNWU0NDBlZTNmNTkzN2NiOWNjZjcwMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05NywxMyArOTcsMTMgQEAgY2xhc3MgV2ViRnJh
bWVMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQg
ewogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKmRldGVj
dGlvblJlc3VsdHMpIGZpbmFsOwogI2VuZGlmCiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZU1h
aW5Eb2N1bWVudCgpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQo
Y29uc3QgV2ViQ29yZTo6VVJMJiBjdXJyZW50VXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIG5ld1Vy
bCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxDaGFuZ2VEb2N1bWVudChjb25zdCBVUkwm
IGN1cnJlbnRVcmwsIGNvbnN0IFVSTCYgbmV3VXJsKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0
Y2hEaWREaXNwYXRjaE9ubG9hZEV2ZW50cygpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBmaW5hbDsKICAgICB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkwoKSBmaW5hbDsKICAgICB2b2lkIGRpc3Bh
dGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBmaW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoV2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2
YWwsIFdhbGxUaW1lIGZpcmVEYXRlKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZp
cmVEYXRlKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5Q
YWdlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBm
aW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpIGZpbmFs
OwpAQCAtMTU1LDggKzE1NSw4IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBib29sIHNob3VsZEdvVG9I
aXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0IGZpbmFsOwogCiAgICAgdm9p
ZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSdW5JbnNl
Y3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpVUkwm
KSBmaW5hbDsKLSAgICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29s
IGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7CisgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRl
bnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7
CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOwpAQCAt
MTg5LDkgKzE4OSw5IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAgICAgdm9pZCB1cGRh
dGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciYpIGZpbmFsOwog
Ci0gICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJD
b3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikgZmluYWw7CiAgICAgCi0gICAg
U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5KCkgY29uc3QgZmluYWw7CiAKQEAgLTIxMCwyMCArMjEwLDIwIEBAIGNs
YXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50IHsKICAgICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKIAotICAgIFJlZlB0cjxXZWJD
b3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2lu
SGVpZ2h0KSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVt
ZW50JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBt
YXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgZmluYWw7CiAKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6
OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1h
bnVhbGx5KSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4o
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29u
c3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBmaW5hbDsKICAgICB2b2lkIHJlY3JlYXRl
UGx1Z2luKFdlYkNvcmU6OldpZGdldCopIGZpbmFsOwogICAgIHZvaWQgcmVkaXJlY3REYXRhVG9Q
bHVnaW4oV2ViQ29yZTo6V2lkZ2V0JikgZmluYWw7CiAgICAgCiAjaWYgRU5BQkxFKFdFQkdMKQot
ICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOwor
ICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwm
KSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdM
UG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmIC8vIEVOQUJMRShX
RUJHTCkKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRn
ZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50Jiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1O
YW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBmaW5hbDsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFzZVVS
TCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcykgZmluYWw7CiAgICAgCi0gICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5
cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgZmluYWw7CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29u
dGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CiAgICAg
U3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGRpc3Bh
dGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYp
IGZpbmFsOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKIAogICAgIGJvb2wgYWxs
b3dTY3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIGZpbmFsOwogCi0gICAgYm9vbCBzaG91
bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBm
aW5hbDsKKyAgICBib29sIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNv
bnN0IFVSTCYpIGZpbmFsOwogCiAgICAgUmVmPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKaW5kZXggZTk3NzNlYTc4MGEzMzJhZTU5ZjAyNzhhZTgzYTMwNzZkZDI3
OTc2ZS4uMWQzZWVlNzk4M2NlZWMyMTEwYzJmODU3YTMyYjRlZTVjNmUxZjI5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTYwLDkgKzYwLDkgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NhbWVTaXRlSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFj
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3ViZnJhbWVMb2FkZXIuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQXRv
bWljcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNs
dWRlICJTdHJpbmdVdGlsaXRpZXMuaCIKQEAgLTM2NCw3ICszNjQsNyBAQCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChpbgogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7CiB9CiAK
LVdlYkNvcmU6OlVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2Fy
ZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUp
CitVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQogewogICAg
IFN0cmluZyB1cmxTdHJpbmc7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
UmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5n
LCB0aXRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDZlZWMwOWIx
ZWQyMmI5YWQwNjhlM2Y2OTI0YjU5MjU3NDUxNWQxNDYuLjc2YTgxMGFmZDNlMGZmNTA3OTNiNWRm
MTVjZWVjODNhMjRhMTRhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ3
LDEzICs0NywxMyBAQCBjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29y
ZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3Jl
OjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9y
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRP
TShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
V2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJs
ZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAg
ICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6
OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29s
IGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0
ZWJvYXJkU3RyYXRlZ3kKICNpZiBQTEFURk9STShJT1MpCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNz
IFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdp
ZXMsIHByaXZhdGUgV2ViQ29yCiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKLSAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7
CisgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlk
ZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBs
YXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHBy
aXZhdGUgV2ViQ29yCiAgICAgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAg
IFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwotICAgIFdlYkNvcmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CisgICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKIAogICAgIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9u
ZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQppbmRleCAzYmQ3ZDFmYmIzOGNiMjA5YWZkYjcxZGViMThiOWQ5MWVkZDkxMzBmLi5hZTU5
NTJkMDhlNjQ5NzYxNjBjOGEzNDQ5NGI0YWQ2MGJhYTk3MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFn
Q2xpZW50TWFjLm1tCkBAIC00OCw4ICs0OCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9h
cmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVySW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U3RyaW5nVHJ1bmNhdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5o
PgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJM
RXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgpAQCAt
MTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgaWYgKHRpdGxlLmlz
RW1wdHkoKSkgewogICAgICAgICB0aXRsZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAg
ICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgdGl0bGUgPSB1c2VyVmlzaWJs
ZVN0cmluZygoTlNVUkwgKil1cmwpOworICAgICAgICAgICAgdGl0bGUgPSBXVEY6OnVzZXJWaXNp
YmxlU3RyaW5nKHVybCk7CiAgICAgfQogCiAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFy
Y2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZWxlbWVudCk7CkBAIC0xNjYsNyArMTY2
LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICAgICAgICAgIGZpbGVuYW1lID0gZG93
bmxvYWRGaWxlbmFtZTsKICAgICB9CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIGltYWdlSGFu
ZGxlLCBpbWFnZVNpemUsIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCBTdHJpbmcoW1tyZXNw
b25zZSBVUkxdIGFic29sdXRlU3RyaW5nXSksIHVzZXJWaXNpYmxlU3RyaW5nKChOU1VSTCAqKXVy
bCksIGFyY2hpdmVIYW5kbGUsIGFyY2hpdmVTaXplKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNldFByb21pc2VkRGF0YUZvckltYWdlKHBhc3RlYm9hcmROYW1l
LCBpbWFnZUhhbmRsZSwgaW1hZ2VTaXplLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgU3Ry
aW5nKFtbcmVzcG9uc2UgVVJMXSBhYnNvbHV0ZVN0cmluZ10pLCBXVEY6OnVzZXJWaXNpYmxlU3Ry
aW5nKHVybCksIGFyY2hpdmVIYW5kbGUsIGFyY2hpdmVTaXplKSk7CiB9CiAKICNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDFmOTBj
NGE1NzQwZjQxNTA5ZDhlODViMTlkNGEwN2U4MDA0M2EyNTQuLjNkMWZmODQ5MDMxMTExMTUxY2Ey
ZTg3YzhjNGU3MDdjMmYxMzM5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1t
CkBAIC00MCw3ICs0MCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oCmluZGV4IDA5MjNlNDYwOTU5YjBm
MzRhOTQyZWQ5MjRmMDQ0YzUzZjg0YzMzZTYuLjE3ZmE4ZWNjYTc4YmE4YWMyNzY4MTY1M2E3ZDJl
N2ZkZDcwZmUyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaApAQCAtNDEsNyArNDEsNyBA
QCBjbGFzcyBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3Jl
OjpWaXNpdGVkTGlua1N0b3JlICwgcHJpdgogICAgIGV4cGxpY2l0IFZpc2l0ZWRMaW5rVGFibGVD
b250cm9sbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRl
ZExpbmtTdG9yZS4KLSAgICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNv
cmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlz
aXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJM
JiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3Ry
aW5nSGFzaCkgb3ZlcnJpZGU7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAyNTYwNzY5
ZmJlNGI1YjM3YzEyZDJlN2UxODQyZDAxYzNlOTE0NGVmLi5jMzI4OTdiM2I4ZTJiNWMxNjkyNGVl
OWUzMDI0NDY2NDY5MGMyNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCkBAIC01MDksNyArNTA5LDcgQEAgdW5zaWduZWQgV2ViRnJhbWU6OnBl
bmRpbmdVbmxvYWRDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKLWJv
b2wgV2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwp
IGNvbnN0Citib29sIFdlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFVSTCYgdXJs
KSBjb25zdAogewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggMmUwM2Yy
YmQ1NTYyNTQ0ZDY3OGYxYTgzYTk1MzhjY2ZlNGEzNDY4Yi4uZWI4MTM2YWI3NzEwYTRlZDEzMGU2
Nzk4MDFiOTUwZDllY2E1OGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oCkBAIC01Myw3ICs1Myw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZy
YW1lT3duZXJFbGVtZW50OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3Mg
VVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwNiw3ICsxMDUsNyBAQCBjbGFzcyBX
ZWJGcmFtZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRs
ZUZyYW1lPiB7CiAgICAgLy8gV0tCdW5kbGVGcmFtZSBBUEkgYW5kIFNQSSBmdW5jdGlvbnMKICAg
ICBib29sIGlzTWFpbkZyYW1lKCkgY29uc3Q7CiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAg
ICBXZWJDb3JlOjpVUkwgdXJsKCkgY29uc3Q7CisgICAgVVJMIHVybCgpIGNvbnN0OwogICAgIFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKICAgICBTdHJp
bmcgaW5uZXJUZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3Q7CkBAIC0x
NDEsMTEgKzE0MCwxMSBAQCBjbGFzcyBXZWJGcmFtZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUZyYW1lPiB7CiAgICAgCiAgICAgdW5zaWduZWQgcGVu
ZGluZ1VubG9hZENvdW50KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBhbGxvd3NGb2xsb3dpbmdM
aW5rKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIGJvb2wgYWxsb3dzRm9sbG93aW5n
TGluayhjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIFN0cmluZyBwcm92aXNpb25hbFVSTCgpIGNv
bnN0OwotICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25z
dCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKLSAgICBTdHJpbmcgbWltZVR5cGVGb3JSZXNvdXJjZVdp
dGhVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZp
bGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIFN0cmluZyBt
aW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQg
c2V0VGV4dERpcmVjdGlvbihjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyMmI4MDkwMTEyOTc2MjgwZGIzZmVmMjE4
OGUyZTdiOGFiZWQ5NGQ5Li4wMjk1NjA1YTE0ZDgzYjllOWY5ODZmZGI4ZDY0NGI1M2RlNzI5N2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
MTI1Nyw3ICsxMjU3LDcgQEAgdm9pZCBXZWJQYWdlOjpzZW5kQ2xvc2UoKQogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Q2xvc2VQYWdlKGZhbHNlKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6bG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMJiYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQor
dm9pZCBXZWJQYWdlOjpsb2FkVVJMSW5GcmFtZShVUkwmJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQp
CiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTEzMjAsNyArMTMyMCw3IEBAIHZvaWQg
V2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBw
bGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMu
ZGF0YS5zaXplKCkpOwotICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0
cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5i
YXNlVVJMU3RyaW5nKTsKKyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxT
dHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1l
dGVycy5iYXNlVVJMU3RyaW5nKTsKICAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2
aWdhdGlvbklELCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBl
LCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1l
dGVycy51c2VyRGF0YSk7CiB9CiAKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHZvaWQgV2ViUGFnZTo6
bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQog
ewogICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsK
IAotICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5
KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5n
KTsKKyAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0
eSgpID8gV1RGOjpibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJM
U3RyaW5nKTsKICAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBsb2FkUGFyYW1ldGVycy51bnJlYWNo
YWJsZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRl
cnMudW5yZWFjaGFibGVVUkxTdHJpbmcpOwogICAgIFVSTCBwcm92aXNpb25hbExvYWRFcnJvclVS
TCA9IGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nLmlzRW1wdHko
KSA/IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJv
clVSTFN0cmluZyk7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEo
KSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKQEAgLTMzNzMsNyArMzM3Myw3IEBAIHZv
aWQgV2ViUGFnZTo6YWRkQ29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJRCwgTWVzc2FnZVNv
dXJjZSBtZXNzYWdlU291cmNlLCBNCiAgICAgICAgIGZyYW1lLT5hZGRDb25zb2xlTWVzc2FnZSht
ZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJRCk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6c2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcG9y
dERhdGEpCit2b2lkIFdlYlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgVVJMJiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXBv
cnREYXRhKQogewogICAgIGF1dG8gcmVwb3J0ID0gcmVwb3J0RGF0YS50YWtlRGF0YSgpOwogICAg
IGlmICghcmVwb3J0KQpAQCAtNTg3NCwxNCArNTg3NCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmltYWdl
T3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogdm9p
ZCBXZWJQYWdlOjphZGRVc2VyU2NyaXB0KFN0cmluZyYmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdElu
amVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKLSAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVz
ZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVSTChXZWJDb3JlOjpibGFua1VSTCgpKSwgVmVj
dG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRG
cmFtZXMgfTsKKyAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNv
dXJjZSksIFVSTChXVEY6OmJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3Ry
aW5nPigpLCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCiAgICAgbV91c2VyQ29u
dGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6
bm9ybWFsV29ybGQoKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclN0
eWxlU2hlZXQgdXNlclN0eWxlU2hlZXR7IHNvdXJjZSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVj
dG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHls
ZVVzZXJMZXZlbCB9OworICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0
IHtzb3VyY2UsIFdURjo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9OwogCiAgICAgbV91c2Vy
Q29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0KEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ6Om5vcm1hbFdvcmxkKCksIFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNTBhYjRmZWQ5ZTRh
NmNkNDMxMzQ1Mjc2NmI4OTgwZDg3NWNjZjg4Li40YjVkOWQ4OGZlNWY5YmY5ZDQ4YzdlM2JiOTNk
Njg4NTc0ZmRjMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC0xNTksNyArMTU5LDYgQEAgY2xhc3MgU2VsZWN0aW9uUmVjdDsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVz
dDsKLWNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWND
bGlja1R5cGUgOiBpbnQ4X3Q7CkBAIC0zMTYsNyArMzE1LDcgQEAgY2xhc3MgV2ViUGFnZSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJs
aWMgSVAKICNlbmRpZgogCiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFt
ZUlELCBNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90
IHJlcXVlc3RJRCA9IDApOwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYmKTsKKyAgICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgVVJMJiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJik7CiAg
ICAgdm9pZCBlbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudCh1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpOwogCiAg
ICAgLy8gLS0gQ2FsbGVkIGJ5IHRoZSBEcmF3aW5nQXJlYS4KQEAgLTMzNCw5ICszMzMsOSBAQCBj
bGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
QnVuZGxlUGFnZT4sIHB1YmxpYyBJUAogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRl
bnQoY29uc3QgV2ViRnJhbWUmKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoV2ViRnJhbWUqKTsK
ICAgICB2b2lkIHNob3coKTsKLSAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVS
TCYpIGNvbnN0OwotICAgIFN0cmluZyB1c2VyQWdlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3Jl
OjpVUkwmKSBjb25zdDsKLSAgICBTdHJpbmcgcGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgV2ViQ29y
ZTo6VVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsK
KyAgICBTdHJpbmcgdXNlckFnZW50KFdlYkZyYW1lKiwgY29uc3QgVVJMJikgY29uc3Q7CisgICAg
U3RyaW5nIHBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIFdlYkNvcmU6
OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCk7CiAKICAgICB2b2lkIGRpZEluc2VydE1l
bnVFbGVtZW50KFdlYkNvcmU6OkhUTUxNZW51RWxlbWVudCYpOwpAQCAtNDE5LDggKzQxOCw4IEBA
IGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAg
ICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBj
b25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAg
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29u
c3QgVVJMJik7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGlj
eUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgCiAgICAgZW51bSBj
bGFzcyBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHsgTm8sIFllcyB9OwpAQCAtNjg1LDcgKzY4
NCw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRl
eHRNZW51QXRQb2ludEluV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYK
IAotICAgIGJvb2wgaGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAg
IGJvb2wgaGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wg
Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAt
OTQzLDcgKzk0Miw3IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgTlNEaWN0aW9uYXJ5
ICpkYXRhRGV0ZWN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YURldGVjdGlvbkNv
bnRleHQuZ2V0KCk7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgV2ViQ29yZTo6
VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBz
aXplKTsKKyAgICB2b2lkIHNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCBzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6
ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKQEAgLTExNTksNyArMTE1OCw3IEBAIGNsYXNzIFdl
YlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQ
YWdlPiwgcHVibGljIElQCiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsK
IAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZ05hbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgbG9hZERhdGFJ
bXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0
IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYpOwog
CiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKQEAgLTExOTcsNyArMTE5Niw3
IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgc3RhdGljIGJvb2wgc2Nyb2xsKFdlYkNv
cmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51
bGFyaXR5KTsKICAgICBzdGF0aWMgYm9vbCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpTY3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0
eSk7CiAKLSAgICB2b2lkIGxvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCYmLCB1aW50NjRfdCBm
cmFtZUlEKTsKKyAgICB2b2lkIGxvYWRVUkxJbkZyYW1lKFVSTCYmLCB1aW50NjRfdCBmcmFtZUlE
KTsKIAogICAgIGVudW0gY2xhc3MgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07
CiAgICAgdm9pZCByZXN0b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGU+JiwgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QsIFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5OjpPdmVyd3JpdGVFeGlzdGluZ0l0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZDc1YWNlZWEw
ZTAwMDIzYWIyMTliMjkxMzllMzYyMjZhZjljNmM3Ni4uMjdjYWEyN2NlNTcxZTIyYWEwODE5NmEy
MmM2NzJiNDU4YjAzZGE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yOCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRy
YXdzQmFja2dyb3VuZCkKIAogICAgIEFkZENvbnNvbGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQs
IGVudW0gTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBlbnVtIE1lc3NhZ2VMZXZlbCBtZXNz
YWdlTGV2ZWwsIFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgU2VuZENT
UFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpVUkwgcmVwb3J0VVJM
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCisgICAgU2VuZENTUFZpb2xhdGlv
blJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlIHJlcG9ydERhdGEpCiAgICAgRW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZl
bnQodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVu
dDo6SW5pdCBldmVudEluaXQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE0Myw3ICsxNDMs
NyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHb1RvQmFja0Zv
cndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQsIGVudW0gV2ViQ29yZTo6RnJhbWVM
b2FkVHlwZSBiYWNrRm9yd2FyZFR5cGUsIGVudW0gV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCkKICAgICBUcnlSZXN0b3JlU2Ny
b2xsUG9zaXRpb24oKQogCi0gICAgTG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMIHVybCwgdWlu
dDY0X3QgZnJhbWVJRCkKKyAgICBMb2FkVVJMSW5GcmFtZShVUkwgdXJsLCB1aW50NjRfdCBmcmFt
ZUlEKQogICAgIExvYWRSZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzKQogICAgIExvYWREYXRhKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxv
YWRQYXJhbWV0ZXJzKQogICAgIExvYWRBbHRlcm5hdGVIVE1MKHN0cnVjdCBXZWJLaXQ6OkxvYWRQ
YXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXgg
ZTU4ZTlmMWRkN2IwNzdmNTYxY2E1MWM5MmZlZjcxNWIwYWUxNDI5ZC4uNzM1NjZhMTMzODVkZTNh
YWM2NDZmYjk0OTZiZGRhZmNiNWFmNDZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCkBA
IC00MCw5ICs0MCw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpbnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxndGsv
Z3RrLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCkBAIC00
NTQsMTMgKzQ1NCwxMyBAQCBib29sIFdlYlByaW50T3BlcmF0aW9uR3RrOjpjdXJyZW50UGFnZUlz
TGFzdFBhZ2VPZlNoZWV0KCkgY29uc3QKICAgICByZXR1cm4gKG1fbnVtYmVyVXAgPCAyIHx8ICEo
KG1fcGFnZVBvc2l0aW9uICsgMSkgJSBtX251bWJlclVwKSB8fCBtX3BhZ2VQb3NpdGlvbiA9PSBt
X251bWJlck9mUGFnZXNUb1ByaW50IC0gMSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBXZWJQcmludE9w
ZXJhdGlvbkd0azo6ZnJhbWVVUkwoKSBjb25zdAorVVJMIFdlYlByaW50T3BlcmF0aW9uR3RrOjpm
cmFtZVVSTCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3ByaW50Q29udGV4dCkKLSAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OlVSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX3ByaW50Q29udGV4dC0+ZnJhbWUo
KS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKLSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIg
PyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBXZWJDb3JlOjpVUkwoKTsKKyAgICByZXR1cm4gZG9j
dW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKTsKIH0KIAogdm9pZCBX
ZWJQcmludE9wZXJhdGlvbkd0azo6cm90YXRlUGFnZUlmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9u
R3RrLmgKaW5kZXggYjI2MmRmMzRjODA1ZmFhY2RmMjAwNzgxZGI3YWFmZTA0MmU3ZjUyNC4uYjdl
MTQ0NDI5NGIyNTEyN2Q0NTJmMTJhNDhiMmZhZTg5NTgyMGY5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9u
R3RrLmgKQEAgLTQwLDcgKzQwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a1BhZ2VSYW5nZSBHdGtQ
YWdlUmFuZ2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQcmludENvbnRleHQ7CiBjbGFz
cyBSZXNvdXJjZUVycm9yOwotY2xhc3MgVVJMOwogfTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC05Nyw3ICs5Niw3IEBAIGNsYXNzIFdlYlByaW50T3BlcmF0aW9uR3RrIDogcHVibGljIFJlZkNv
dW50ZWQ8V2ViUHJpbnRPcGVyYXRpb25HdGs+IHsKICAgICB2b2lkIHByaW50UGFnZXNEb25lKCk7
CiAgICAgdm9pZCBwcmludERvbmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAg
IHZvaWQgc2VuZFByaW50RmluaXNoZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwot
ICAgIFdlYkNvcmU6OlVSTCBmcmFtZVVSTCgpIGNvbnN0OworICAgIFVSTCBmcmFtZVVSTCgpIGNv
bnN0OwogCiAgICAgV2ViUGFnZSogbV93ZWJQYWdlOwogICAgIEdSZWZQdHI8R3RrUHJpbnRTZXR0
aW5ncz4gbV9wcmludFNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IGJlZDI4N2RmYWM5Yjk0NGU0MzQyOGYyMjQ3MzMxNjBmMjc0MDYxZWQuLjQ0YWZl
ZWMyMGYxZWIxN2MyMjU4YjNjNjMyYTE5MzA2OWJmYjQxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTExNCwxMiArMTE0LDEyIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRv
ci5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJp
dmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVt
VHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAKICNpZiAhT1MoV0lORE9XUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGRiYzU3OWI5OTVmMTli
YzMyOTUxY2M4MDJlNjVhN2ZmODdhMjgxNDIuLjYyZjM5MDU3ZTEyZGQzMjA1ZjkwMzUyNTdhZTE0
OTBkZWE2YTM2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbQpAQCAtNjAsNyArNjAsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Nj
cm9sbGVySW1wRGV0YWlscy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8YWxnb3JpdGhtPgogI2lt
cG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpAQCAt
NzEsNiArNzAsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJLmg+CiAjaW1wb3J0IDxzdGRp
by5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJ
T1MpCiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLmgiCkBAIC00MzYs
NyArNDM2LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoTlNVUkwgKm9yaWdpbkFzVVJMID0gb3JpZ2lu
KCpwYWdlKSkKLSAgICAgICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRPYmplY3Q6dXNlclZpc2li
bGVTdHJpbmcob3JpZ2luQXNVUkwpXTsKKyAgICAgICAgICAgIFthY3RpdmVQYWdlVVJMcyBhZGRP
YmplY3Q6V1RGOjp1c2VyVmlzaWJsZVN0cmluZyhvcmlnaW5Bc1VSTCldOwogICAgIH0KIAogICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVf
UFJJT1JJVFlfREVGQVVMVCwgMCksIFthY3RpdmVQYWdlVVJMc10gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCmluZGV4IDZiNGE2NmJmYTM4ZjA1MzJhMGNiZWE1OTAxNDIzZGE1NWZmZDg4
NjAuLjNiNWFiYTIzMzgwNDQxMTM4NzhjZTA4YWMyMGJkMGYyZDU3NjA5N2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291
cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTM1LDkgKzM1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtU3RyYXRlZ2llcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
U2V0Rm9yU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgK
aW5kZXggOGE1NmE5ZTc5OWZhMWZmODI0OWYwMTQwY2FkMzgxYTVlMmFjYTgzYi4uZWRmNjUxZmE2
ZGZiY2EzMThhOGY2ZjIwN2Y0YjY0OWFkZTFiZjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlciBmaW5h
bCA6IHB1YmxpYyBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSB7CiAKICAgICB2b2lkIHJlbW92ZShX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGlu
ZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwotICAgIHZvaWQgY3Jvc3NP
cmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiByZWRpcmVjdFVSTCkgZmluYWw7CisgICAgdm9pZCBjcm9zc09yaWdpblJlZGly
ZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBVUkwmIHJlZGlyZWN0
VVJMKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNvcmU6
OlJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFdlYkNvcmU6OlJlc291cmNl
TG9hZFByaW9yaXR5OjpWZXJ5TG93KSBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVx
dWVzdHMoKSBmaW5hbDsKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKIAogICAgIHZv
aWQgc3RhcnRQaW5nTG9hZChXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9w
dGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogCi0gICAgdm9pZCBw
cmVjb25uZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOworICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVy
JiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5l
Y3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKIAogICAgIHZvaWQgc3RvcmVEZXJpdmVkRGF0
YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWwgeyB9CiAKQEAgLTExOCw3ICsxMTgsNyBA
QCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
TG9hZGVyU3RyYXRlZ3kgewogICAgICAgICBGaW5kT25seQogICAgIH07CiAgICAgCi0gICAgSG9z
dEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENyZWF0ZUhvc3RQ
b2xpY3kgPSBGaW5kT25seSk7CisgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0
IFVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CiAgICAgdm9pZCBzZXJ2ZVBlbmRp
bmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0
eSk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJp
bmdIYXNoPiBIb3N0TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUF0dHIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQppbmRl
eCBlOGY3NmYxNjRlMDY1ZjgwMjhlOWE2ZjY3ZWEzNWQ1MmViN2VjODc1Li4yMTZiYTY1NDgwNzFj
NjZkMWE1YTYwNGQ5Y2RhZGMzYWNiMjk5ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQXR0ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQXR0ci5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkF0
dHIqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCmluZGV4IDRlNmVkYzU2YTYzZmY0Y2E3Y2Y0
YjQ2Y2UxYzc3MjQ4MzkxMTNjNmUuLmRlNTkxM2NhMTg2MDBjOGVkM2M5NTJiMWE5NjlkN2VlZWRi
NzUyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCkBAIC0zMSwxMCAr
MzEsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbQppbmRleCBkMWI1ZWFiZDc1ZDZmYWI2
YzdjY2M3ZDY2YWZmMjNkNGMyMTIwMWQ0Li43YmZmZmRjMjFkYmEwODk3ZjY2ZmU1YWUxNDU1M2M1
ZWM1MzdiZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NT
Q2hhcnNldFJ1bGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0No
YXJzZXRSdWxlLm1tCkBAIC0zMCw5ICszMCw5IEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVy
cy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiBAaW1wbGVtZW50YXRpb24gRE9NQ1NTQ2hhcnNldFJ1bGUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQppbmRleCA4
ODA0ZjI0NTAwYmQ2ZThlZjdjMmI2MGU0NzA2N2U2YzkyZDNlMDAzLi5jNTE3OGFlMjAxODRjNjJm
YjNkYTBhZGZlNjg3ZTQzZDRhZTUyYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYUxpc3QuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkNTU0ltcG9ydFJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTTWVkaWFSdWxlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU01l
ZGlhUnVsZS5tbQppbmRleCAxNTlhOWE0OTQ5ODdiZDU0NTE5Y2JkNjJlNDMwOTAxYTdkMGM4Yzll
Li5lYjVkY2YyMmY3Y2ZiOGM2MTY3OTk3OWE1YTMyNDgyNTNmOWY5ZTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0KQEAgLTM1LDkgKzM1LDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVk
aWFMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NNZWRpYVJ1bGUqPihyZWludGVycHJldF9jYXN0PFdl
YkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTUGFnZVJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQ1NTUGFnZVJ1bGUubW0KaW5kZXggZjM2MjIzMWNlNWJjZmQ2ZGVhNjVmMTFkMzE0
YzQxYmRjOWY5MzQyOS4uYjZiYzI3ODA5OWY4MjQ3NzE3YjJmOWI3MjkxYmY5M2JmZTgxNTE0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQYWdlUnVsZS5tbQpAQCAt
MzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1BhZ2VSdWxlKj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmluZGV4
IDM1YTg5MzQ5YzMyMTI4YmY5MzcyNWI2NmZhYzQ2NjY0ODhkNmUwNTguLjA1NWVhOWVjNGFiNWE1
MTIzOTc2OGMzZjc3YjllMDM2OTllNzk3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNp
bXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6RGVwcmVjYXRlZENTU09NVmFsdWUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCmluZGV4IGQ0OGNiM2Y5MjI5
ZGRiMmJkNjNkZDk5ZjA5MWZkNWJjNWM2NTJkMGYuLmExMmIwZThjOGYwNzc3MDE2OGU5OGNiN2Fh
NzU1MWQ3YWZkNWIyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01DU1NSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxl
Lm1tCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
T2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0
aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRp
b24ubW0KaW5kZXggMmQ5ZmVmZmZjMTU0MDBkOTg3MzMxMzNjOGEzNzRmMWQ2ZTkzOGVmOC4uYjNi
MDdmMzM5ODY4NmRlZGJkMGRkMmM5MjQ2NDE5YTFlY2ZkNzY2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KQEAgLTM2
LDEwICszNiwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbio+KF9pbnRlcm5hbCkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZVJ1bGUubW0KaW5kZXgg
OGE0Y2ZmMzBjZGQ1NTMxMmY3ZGQ0MjdlNTEyMWEwNjYxZDEwYjkwOS4uMmFlMTkxM2IyZTQzZjgz
MTJmZWI0MDg0MmFhOGY5N2UwZmI0ZjY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQ1NTU3R5bGVSdWxlLm1tCkBAIC0zNCw5ICszNCw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6Q1NTU3R5bGVSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NS
dWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUNTU1N0eWxlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTU3R5bGVTaGVldC5tbQppbmRleCA4YzI0MDYwMTZjMGVhNWNlYmFlZWFkZDZkZmQ5OTU5NzE1
MTA4OGFkLi4yNjlmMDI0OGM3YzYwMTQwZTQ3NGI4ODQwN2IwMGEzODAwNjVmZmI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQpAQCAtMzYs
OSArMzYsOSBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNv
cmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqPihyZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6OlN0eWxlU2hlZXQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0KaW5kZXggMGM2ZTA3NGQ4ZjNkMTUwNTAwMDkx
YjExMWRkOTk4N2M4OGFhNzM4Zi4uYjc3ZDRiODcyMDY1OTYzMDhjNzMyZjhhZjM0YzE2MTQ4OWY2
MjFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbQpAQCAt
MzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRy
YXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01WYWx1ZSo+KF9pbnRlcm5hbCkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRh
dGEubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQpp
bmRleCA4YzNiNGQ0YTU4MmZlOTQ3YTBjMzhkMDY0ZjlhMTI5MWI1OTljOWMzLi5iMzBlOTU3OTQw
ZWQ5NjY1NzViYzYzNDk0NGU3YTkxNjBlNTI5MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1w
b3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9DaGFyYWN0ZXJEYXRhLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDaGFyYWN0
ZXJEYXRhKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQppbmRleCAyZDFlNTY1N2Vh
MmQ2NjhkMjAwNWI1M2M0ODU5ZWRkOWQ1MmY4YmY4Li4zMDg3MDFlNWI0ODE4Njc0NzMyM2MxOGRl
ZWQ0ZTQzMGFkYWMyYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ291bnRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRl
ci5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Db3VudGVyKj4o
X2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
RG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0K
aW5kZXggYWQ1NTg1MjlhYmI3ODNhODFkM2Y5ODMyZmM0M2Y5YWJjM2EyM2E1MC4uM2IwNGQzOTMz
ZDI0YWFlMzMzNWJkODdiODEwNjlmNGNjZTdiZDYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtODIsMTIgKzgyLDEyIEBACiAjaW1wb3J0IDxXZWJD
b3JlL1RleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdl
YkNvcmUvVHJlZVdhbGtlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aEV4
cHJlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhOU1Jlc29sdmVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1hQYXRoUmVzdWx0Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KaW5k
ZXggOTZkMDMyOWI0OWFlNjE1YjcxZWZhYTRjMDViMjY5MTFkZTg1YzE3ZC4uMmVlMmNmODRjNjM5
NDhjMDAwMmY4YTY1ZDhjZDY2OWE3Njc5ZDI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNp
bXBvcnQgPFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Eb2N1bWVudFR5cGUubW0KaW5kZXggZTIwMTE3NmE5MmRjNjY2NDBjZDUwMWVmN2VjMjBh
Y2Q4NDY0YWY5Mi4uN2IyZTAzZWM1MjFjZGYwNzQwMzI2NTkwMGU2ZDNjYjA2MzQyYTNkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRUeXBlLm1tCkBAIC0z
Miw5ICszMiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL05hbWVkTm9kZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRUeXBlKj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUV2ZW50Lm1tCmluZGV4IDYwY2RiNmU1N2Y1YmUxNzYwZjRkOTE1ZDM4YWU0
YTMzNTU3NTE3Y2QuLjJkNjE1NGIxZTA2NDZkOGEzMWMwYzAzMGVjZTYzMzNmYjUxNmMwODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FdmVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRXZlbnQubW0KQEAgLTMzLDEwICszMywxMCBA
QAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2Rl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNv
cmU6OkV2ZW50Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NRmlsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxl
Lm1tCmluZGV4IGVkYTg3ZmZmMWM0ZTRiNWE5YTg3YzZkYjhiNDAyYWM0YjI0YjI4N2YuLmZkYzU0
MTNiOWE1ZjQ2YjllZGE1ZmMwYTdiMzZhZTVmODVkM2RiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01GaWxlLm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Zp
bGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZpbGUq
PihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0KaW5k
ZXggNDQ2MGYyN2M2ZGZkZDMwNjU2MGMxMjRkOWQ3OTk0MWM4ZDVjODUyZC4uYzZjMDFiZDdhNjk2
MTc3MGNlOGZmMThlNTc2YzEwOTg1ZWZmNDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MQW5jaG9yRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tCmluZGV4IGE4NDU0MmRhNDdkNjQ0ZGMz
NjJlOGZkMWRmYjUyZDA2YjIxM2E2NGEuLjI2YjhkM2M1OGJlYmQyZDdkNWRiMmU4ZGNjY2UyNjlh
MGY5NWJjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
QXBwbGV0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEFwcGxldEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpI
VE1MQXBwbGV0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRl
cm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
QXJlYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFyZWFF
bGVtZW50Lm1tCmluZGV4IGM0YWIyMzIwMjc1N2VmYzIyNmQzNDdlNTBhMjEwZGQ0M2UxMjA1MmUu
LmI5YWNhODk2YTRjMDkxNzY4Y2ZhMDMxOGI2YzZiN2EwN2VkNTc1NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBcmVhRWxlbWVudC5tbQpAQCAtMzQsOSAr
MzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQlJFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KaW5kZXggY2Y1YjNlMDg4NDEzOWM5OGU0
Yjc4Y2IzNzhkZjFhNjdjNDM1OThiOC4uNDMyNDY0YjhkZDJkNTYyNjMxMDE4OGM3MTgwNzI4NTkx
NjMzOTM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxC
UkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVs
ZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQlJFbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQubW0KaW5k
ZXggNTE0YjcwOTFiNDNkMTIyNzcyZDA3MGM3N2U2YTExZGY0ODAwNmMxMy4uYWZlM2I2OTkzYjYz
ODZkNzM5ZTE0Y2ZjYTNiN2M5ZGY2OTQxZTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTEJhc2VFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTEJhc2VFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5tbQppbmRleCBhOTljMGI2MjM4MWYyNTFjMjFl
ODA3Njg1ZmI5MzUwMzA2NzExYTRkLi4yNjMzYzgwZjcyNGQ4Nzk0NGRlYmY5MDhmMDM5MmZlN2Jm
Y2RhNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJh
c2VGb250RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEJhc2VGb250RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MVW5rbm93bkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkhUTUxVbmtub3duRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTEJvZHlFbGVtZW50Lm1tCmluZGV4IDY5NTI5M2I0MjQ2M2ZiZTY2Mjg3YjA2NDc2NGVm
NjlkZmU1OGY3MDQuLmRmNjEyMDg2NmM2YmM2MmM0MTIyMzM5N2ZmMWNiMzBjNmE2ZjQ0NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5t
bQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbQppbmRl
eCA5OGFhMjdjNTYyNzVjNTQzY2Q0ZDllMmZiYjI3YzE4ZGI5ZDgyYWI1Li43Yzc1OTVkMzE0ODMw
MzJjZmFlYmZlNDAxYzE3MzIxY2I5ZGJkNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxCdXR0b25FbGVtZW50Lm1tCkBAIC0zNiw5ICszNiw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL05hbWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlz
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdl
YkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTENhbnZhc0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTENhbnZhc0VsZW1lbnQubW0KaW5kZXggMGZkNjBhNmRhOGFhYWFiZTc0
ZDJiZDJiZDk0NzliODE0YmQ5NjM1MS4uMThiMzEzZWI0NGFjMDM2YjAzN2Y1OGE5NDIzNTc2OWJl
ZGQxMDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxD
YW52YXNFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
Q2FudmFzRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHJpbmdBZGFwdG9ycy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTENhbnZhc0VsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihf
aW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTENvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENv
bGxlY3Rpb24ubW0KaW5kZXggZTM0NDA5OGNiNDhlMmQzOTBmNTQwYmMxZDUwZTY5NzNjYzQzZDdm
MS4uYWFjMTg1NDlkM2Q4YjQ3ODEzYmMxNTRiMWNhNWM0MTE3M2I1MzZkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ29sbGVjdGlvbi5tbQpAQCAtMzUsMTAg
KzM1LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9k
ZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6SFRNTENvbGxlY3Rpb24qPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRGl2RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRGl2RWxlbWVudC5tbQppbmRleCAyOTM2YWZhYzAyNTMx
ODU4ZDFmYjhhOTRkMjcyZmZmOTVjZTk0OWRkLi45Y2IwM2EwMTE5NmI3ZjQ0MTU0NTI3YTdjNWMy
NTViN2QzYWU5Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTERpdkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxEaXZFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxO
YW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TERpdkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3Vt
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEb2N1bWVudC5tbQpp
bmRleCAwMzc1YTNjZjRmZDY3MWY2MzM2ZmJiMzdjOWJiN2M5YWVmMDE3NjNkLi44OGQxNDJlYWRh
ODQxMTM3MDUwMTQ4ZmNlNGVjODc1ZjAyMjdiN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MRG9jdW1lbnQubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQg
PFdlYkNvcmUvSFRNTERvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpIVE1MRG9jdW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEVsZW1lbnQubW0KaW5kZXggYTVlMGNkMzE5MTNiZDM4NzMyNjYzNWU3OTM1ZjRhYTg5ODE5YzZm
MC4uMmZlMjRjNzA3NDk3ODg3MjUwODRmMzY2ZjkwYjlkODQ0OTc2ODA1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbGVtZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRWxlbWVudC5tbQpAQCAtMzYsOSArMzYsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
RXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRW1iZWRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0KaW5kZXggNmI4MmJlMDhlODIxNjZjMzE5
NDBhMzQ4ZWNmOTcyNTgyNTljYzlkMC4uMGQ2ZDg4MTQ3MWE4MTVlMjAzYTBjNDU0ZDBkNzY2YTYw
OWQ3ZTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxF
bWJlZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxF
bWJlZEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5h
bWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
RW1iZWRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVs
ZFNldEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxk
U2V0RWxlbWVudC5tbQppbmRleCBlYTkyYTAxOWE1MDY1Njk1YzY0NDZhZGE0OTM5NWY2ZmEzYWUy
NjY2Li4xZmQ0ZDgwYmM3MThjOTU2YTM1ZDZjOGJjMGEwN2ZiMDJhOTk2YzgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5t
bQpAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRpdHlT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MRm9udEVsZW1lbnQubW0KaW5kZXggODBkZTQ5MDU0OTI0ODAzM2Ez
MmJmY2EwMzhiM2FmNzcxOWM2ZmI3Ni4uOTEwZThmN2Q0NjZmMWRlM2E3OGVjZDMyZmQ4NzcxYmI3
ZTg0ODJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxG
b250RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZv
bnRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1l
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZv
bnRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9ybUVsZW1lbnQu
bW0KaW5kZXggYmZkZTFkYWQ4MTRlZGRjYmVhNzY1N2FmYjc4Y2QzNGY3YmVkZDU2Zi4uZTg2MjZi
YTM1YWEzMzdmNGI0YzdjZmExYmQ4MzNiOTVmZWVlNzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQppbmRleCA2MDBmNDRmODliYzQzOTk3ZGM0
MGUwMDZkMjZjYzM1MmUzODFhYWYxLi5lYjVjNTVhYzJiNjdhZjRkZWViZGY2MTVhMzc0ZTI1NzNl
YjMzYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZy
YW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZy
YW1lRWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFt
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxG
cmFtZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZyYW1l
U2V0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVT
ZXRFbGVtZW50Lm1tCmluZGV4IGYyZjIwN2YwNTI0OTdjMjE5N2I3NDM0NzdjM2NiYjMxMjZmZmM5
OGEuLjY5Yjk1YTA2Zjc4ZDg4Njg0MGUzNjYwNmI3NzE1YzI5MDYxNjQxNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1t
CkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KaW5kZXggYjI1
NzhhYTJkZjNlZTg5MDA4NTYxMmZjMjE3NzM1ODM1MjY1Yjc2ZC4uYTcyNmJkYzFlMDIyN2FiMjZj
ZjAwOWI3MzY3MzQxODdmZTQwMmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MSFJFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxIZWFkRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVh
ZEVsZW1lbnQubW0KaW5kZXggYmVmMzlhZTU3MDZmOTQ5YWNkMjdmNDFiNWQwYmIyN2VlZTJmZDJh
Ny4uOWNhNGI4ODBiMWFhYWJhZDhjMzBhOWViMWQ2ZTQwZTMzMGJlZDgyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhlYWRFbGVtZW50Lm1tCkBAIC0zMSw5
ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEhlYWRFbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZGluZ0VsZW1lbnQubW0KaW5kZXggODExYmIx
ODA0ODg2MWY4YjE3MTJjOTM1NmMxZDgyNzZkMDExMzE4OS4uYTJkZmI2YTNlYzFlYjA1YzhjYjMx
MTEyMjIwNDZhMDAyYzc5ZGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTEhlYWRpbmdFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SFRNTEhlYWRpbmdFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MSHRtbEVsZW1lbnQubW0KaW5kZXggMjg3Y2U3Zjk0ZmYyZTljOTY1ZjM1ZmRlNDMz
NTBjZDRhYjNjYmMxZi4uZWJjM2NmZTc0ODYxNDI2MzNkMzM5MjZkNWRlMTNlNTlmZWMxOGNhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEh0bWxFbGVtZW50
Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEh0bWxFbGVtZW50
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1tCmlu
ZGV4IGYzODJjOWVmOGUwOTY5MjNhNjMwZTVkYmJkNTk3MjY3ZjFlMTY5ZGYuLmUzMjFiNGY3NmQy
MTZlMjNhM2Q5ZmEwNDNjY2VmNzg4YWMzN2E3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTElGcmFtZUVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MSW1hZ2VFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0KaW5kZXggZmM5MTk1M2NlY2MyY2FlZWU3
NjJiMzQ1NDIwMjQxYmJmOWIzNzE1MS4uZWJhNGVjOTIzMTZjMzljZTAxMzRjZGIwMDVkMTYwOTNi
MDMyMmRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJ
bWFnZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJ
bWFnZUVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVz
dFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRl
cm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
SW5wdXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1
dEVsZW1lbnQubW0KaW5kZXggODM2MzczNWQ5NDc0YTg2YmE4YTgwNWUwZjFhM2ViYTZmODRkNGJj
ZC4uZDczN2E1NTdlOWEzZWMwMzUzNTNjNTEyNjkwZGJlNzhlYjBlODQ3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KQEAgLTY0
LDkgKzY0LDkgQEAgQGVuZAogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMSUVsZW1lbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExJRWxlbWVudC5tbQppbmRleCAyNjlkMWE1
NGFkZDhjZTJiZDRmZWFmNmE0MmE2Mzk4MjA4NWZlZGEwLi5hM2NmM2ZhOGRiZmE4Y2VhZDdhMjlm
YTk4YzI3N2E4NGQ5YmYwZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTExJRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTExJRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkhUTUxMSUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJu
YWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExh
YmVsRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxF
bGVtZW50Lm1tCmluZGV4IDUxZjU2MGMwOTc5MTg5M2FlNjZkYzU1MmQyZjk2OTdkMmZiZjAyODEu
LjgxMzkwMDBlYWVhNGNhN2QwZWU5MmI1ODBmNGNmMDgwMTdhMTE2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tCkBAIC0zNSw5
ICszNSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExhYmVsRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbQppbmRleCA5MzQzY2E2
ZTlkZmFmNzM3ODA2NTdjZjU0MmFlMTIyNTQ1MmQ4YjBjLi5kNGYxZjM2YzVmMjRiMTk0YTkyYzgy
YjEwY2RiYTFkOGUxMGU2MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxMZWdlbmRFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dl
dFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6SFRNTExlZ2VuZEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTExpbmtFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxMaW5rRWxlbWVudC5tbQppbmRleCAyMGY0YzAxNTE1ZGViNjBlZTRkYjM3OWEwMDVlNTI3
NzliOWM1MjIwLi41Njg3YzQ1YmJhMGZhYzc0YjU0Yzk0ODVkOThhZTQ5ZThmNzM1YjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGlua0VsZW1lbnQubW0K
QEAgLTM2LDkgKzM2LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU3R5bGVTaGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tCmluZGV4IGI5MjFi
M2E1MGVkMDUxNTAzZjNkNzdjNDUwYmQzOTcxNmFkNGM5NjAuLjJjYzkwY2Y4NjM0ZTM5NmRkMDFm
NGEwYzExZjA2MTBlY2Q2MGU4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MTWFwRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTE1hcEVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MTWFwRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MTWFycXVlZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE1hcnF1ZWVFbGVtZW50Lm1tCmluZGV4IDYxYWI0YzYyMzMzZjk1NmUwNzI0MzYyNzcyZmMxZmZm
Y2E0NmEyMzguLjk2MjNlZGIxNmFjMDk5YjQxZGM5NjM4NzU5MDQ0YjQ3MWI5MGJjZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxl
bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0K
aW5kZXggNWJjNzQ1NmY2MGNmNzYxMmI1MDZlYmZkM2RjODlmYTQ3YWVjYTQ2Ny4uNzgzYTVhMTVl
OWRlMWM3NWU3NGRiODk1MmI0MTk5MjAxYTk0MzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZWRpYUVsZW1lbnQubW0KQEAgLTM4LDkgKzM4LDkgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaW1lUmFuZ2VzLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MTWV0YUVsZW1lbnQubW0KaW5kZXggOTk4NzAwMmFmN2NiZTNkMTRkNjdj
ZjhjNGYzYjgxZGUzZDNiZjI2Yy4uNzhlZDZlOTNjZGZhYTViOGM5NWY3NzJmMjAzZjM4NDRkODBl
OTllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRh
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1ldGFF
bGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE1ldGFF
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tCmlu
ZGV4IGQ4ODVmY2ZkMDgwMzZjNzM4MjkyZTAwNzA3MjFlZTVmODJlMzcxOWEuLjYwZjllNDVjN2Ix
ZTM0YmMwNjJlNmE0ZWIzMTI3NGFmNDY1YjI1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MTW9kRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTE1vZEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpIVE1MTW9kRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MT0xpc3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxPTGlzdEVsZW1lbnQubW0KaW5kZXggYTMyYzJkOGJjOTcxMjE3MDdiNmUwZTM3OGU3
NDUxNTIyYzU1ODczMC4uYjdmYTU5YjZlNjY5NWY2NmM4OTY5YjFmYTQwNWU4ZTRhMWRlYWVlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1l
bnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE9MaXN0RWxlbWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE9M
aXN0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0
RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxl
bWVudC5tbQppbmRleCA3YWI3M2Y1NzI5NDMwZDNiZjIwMjdlZGJjNWU0NjEwMzE0YmRjYTE1Li5k
YjIzNmQ4Yjk1ODZiOGI3MmFjOGU4OGNjZGYyYjQ5MGFiZWRiNjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9iamVjdEVsZW1lbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tCkBAIC0zNyw5
ICszNyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFBy
aXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
I2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Kj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQppbmRl
eCA0ZTUxNWRhZjU1YmI3Y2M1Y2MwMzhiYjUyNDA0YjZlZWYxYjU1Y2RiLi4xNzcxYzJlZmUzMTg2
MmQ3YjE1NTllMGQxMjQ3NTNmMTNmMzcwMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdEdyb3VwRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MT3B0R3JvdXBFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Kj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tCmluZGV4IGZk
ZWM1NGVlMWQ2NDc4MWU2NmU4ODMzNGM1MmNmNTQxOGJjNzkzZGYuLjE0NTM1MWQ5YjZmZWUzZTNi
MTJhZjMxZjA0YmMzMDM3ZmRhNzc5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MT3B0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTE9wdGlvbkVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTE9wdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KaW5kZXggZjc3MGE4
YTE0ZDVhODNkNzY5NWU0MzcxOWVlMWFmNGRjYjY2NGNhMS4uMzkxMjEwMTU2MWY1ZmZkZjg5NDFl
OWE3MWJmYmU0YjgyOGY4NGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCkBAIC0zNSwxMCArMzUsMTAgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZhcmlhbnQuaD4KIAogI2RlZmluZSBJTVBM
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uKj4oX2ludGVy
bmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJh
Z3JhcGhFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJh
Z3JhcGhFbGVtZW50Lm1tCmluZGV4IDZjNTExZTkxNjY0Y2U5MjNjYzkyODRhMjU1YTExZTZhNzkz
YjNmZDQuLjFhNTQzYjNmZDNlNmZlNzI4MjQ2YjJiYThjMTJmZjI2NDBmNjYwNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUGFyYWdyYXBoRWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFncmFwaEVsZW1l
bnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBhcmFncmFwaEVs
ZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhU
TUxQYXJhZ3JhcGhFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxQYXJhbUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBh
cmFtRWxlbWVudC5tbQppbmRleCA1ZmIwY2VjMjdmYjcwOTdmMDkxNWVlNWNkZmM0MThhODFjNTk0
ZmU4Li5lZGE2NTMyYzVkMmE3ZWZlZmMxNDliMGI3NjZhZTlkYjhkYmM5MTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbQpAQCAt
MzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MUGFyYW1FbGVtZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbQppbmRl
eCAzNzQ5YzE4MDMzMGZiMGUzNWNkNTQ1OTExYzA5ZTc3NDU4NzVhZmQwLi5iY2Q3ODY2Y2Q3NmM3
M2VhYzY0NGUwNGY4NDM3ZTUwMzBmNWEyZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFF1b3RlRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MUXVvdGVFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhl
Y1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MUXVvdGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTY3JpcHRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxTY3JpcHRFbGVtZW50Lm1tCmluZGV4IDMzNDRkNTQ4ODg0OWMx
NGM5MWM1YTY5M2U3OWFkN2U2NzBlMDlmZjQuLmU0YWMwMTc4MDJkYTI1MTRmNGNkZmU3ZGQ3Yzky
MDQ5YmRhYjAxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MU2NyaXB0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFNjcmlwdEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
SFRNTFNjcmlwdEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxTZWxlY3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxTZWxlY3RFbGVtZW50Lm1tCmluZGV4IDc1ODE0MWRlM2ZiN2Y1YWJmNmUyYTI4ZmE2
YWVhMTQ2NThjNjY5NjIuLmJjZmJlY2FjZDM4NDkxZmE3YmM5OTU0YjNkZTkwMzAyZjkxYTY2YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2VsZWN0RWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNlbGVjdEVs
ZW1lbnQubW0KQEAgLTQ0LDkgKzQ0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQq
PihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50Lm1tCmluZGV4
IGE0NTI3ODIwODBiYjYzOWM0ZTY3ZjQ1NzlmOTM5NDY1NjhjNWNmMTAuLjgwNzZhMzM4ZWUxZGMz
MGFmMWMyOGE3NDg1ZWI2NDdkOGVlMzdhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MU3R5bGVFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlU2hlZXQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNv
cmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0KaW5kZXggYTc4MTFiZDY4
YjM4OGI4ZDczMzFkNDUzYzk2Mjg2MDhhNWEzNmUzNy4uNDgzZjk0ZjEzZmJhZDE1OTdlNjczNmFm
NzZjYTRjMGYxMDZlZTg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
ZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQq
PihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
bW0KaW5kZXggZGQzMDE2YjNhYTYzYTRmOWIwMzE0NDA3NWYwNWU1YTk4MDU1OGVlMC4uOWFkOTE0
NmU4NGEyNzgwNjk5YmNhNzNkNTQ3Y2JjYTgyNTBjM2U1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbQpAQCAtMzEs
OSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDZWxsRWxlbWVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVt
ZW50Lm1tCmluZGV4IGFmMjY3MTRkODRmMzBhYWRjYWUxNDJiZTg0NmQ2NmNlNmUzNWU0MGEuLmM5
ZDk4Y2E1MTRlMWFiYTdiMGVmNDg5YzNkYWYyYmU3OWM3MTJkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tCkBAIC0z
MSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZUNvbEVsZW1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNvbEVs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1t
CmluZGV4IDRjNjhjNGI2YjRjYTVkNmYxZjYxMGVjNWFjMDdmYTZkMzQ3MzIwYzkuLmJlZGRhZjUw
ZmFhYWI0YzJkMzZmYTVkMTI4ZDAzMTY1ZjIwNGI3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVFbGVtZW50Lm1tCkBAIC0zOSw5ICszOSw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50Kj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQppbmRl
eCAyNDA5NmE4ZDk5NDdmZDdiN2EyNGZkMTY1NzMxM2E5ODQwOTkzOGNjLi4zZGZlZGMzM2VmY2Mx
NWFhZTE0ZDQ0MTFmZmVlNzA2NzczZDY4YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlUm93RWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVSb3dFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50Kj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
Lm1tCmluZGV4IDk4YjE5ZmEzMTU0MDM0ZGFkOWY2MzBiMzQzMjIyODgyODM0ZjMxODguLmMzMmMy
ZTcwMjczNDNkNDcwOTMwYTY3NzNiMjk4ODhlZDRmNmZlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0K
QEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxUaXRsZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRp
dGxlRWxlbWVudC5tbQppbmRleCAyNDg2Zjc3YzNhNWU3NTA0MjcxMDJhZDI3ZTI4MmI2YjY1YjRl
ZmU5Li4yODM5MTcxNzg1NTk5ZjkyODU4NGFkNTIxNThlMGYwNWQzNDEyMGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbQpAQCAt
MzAsOSArMzAsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGl0bGVFbGVtZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGl0bGVFbGVtZW50
Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbQppbmRl
eCBmOThmOGU4NTJiZDQ3YTE2MjkyYjk3MzQwOTAxNTcyOGU0NWYzM2ExLi5mY2Y5MDU0YWIwZjEy
MTY3YWVlMjA2Y2FkOGFkYTFkMTM5MDdhM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFVMaXN0RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MVUxpc3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhl
Y1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVUxpc3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5tbQppbmRleCAzMzU4MDY1MDM5Mjg3MTli
OTViMGY3MTY3ZjI3MWE5MDFlODVjMTE5Li40NTdlYWZiYTBkMGNlNTJkMDNmNTUwZjA0NzhiMzRi
MDhlODczZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TFZpZGVvRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
VmlkZW9FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUtleWJvYXJkRXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9h
cmRFdmVudC5tbQppbmRleCAzZmQ4ZmNlMzY0NjZmMzdhYjlhMTk0YzBhMzBjMWMzYzQwNTJmNjNj
Li4yYzAxZjNlNjEwNTUyNjk3ZTQ1MTM3OTRkYjEzOWEzNzlkMzJjNzU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbQpAQCAtMzMsOSArMzMs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9L
ZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZp
bmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tCmluZGV4IDllODE2N2ExNmE0NGIzMTM3YjIzZWRiMWE4
ZWVkNDU5NDlkMjdkOTguLjg2NTFmYzk3YjQ4NzExNWUyZDRjZGQ3NzE0OTBkZjNmZDAwYTVkYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbQpAQCAtMzMs
MTAgKzMzLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL01lZGlhTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpNZWRpYUxpc3QqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZlbnQubW0KaW5kZXggZjY1NmE4YWRlNTUzNWE5
MGU4N2FiY2FhYjlkODA3OTk2M2E4MTIwNi4uOTVmMjIzNWQ0NTcyZmIzOTZkNjI0YzM5ZmM1MDY5
YjMwOTZkYzM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1v
dXNlRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNlRXZl
bnQubW0KQEAgLTM2LDkgKzM2LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+
CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3VzZUV2ZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NdXRhdGlvbkV2ZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9uRXZlbnQubW0KaW5kZXggMGY0ZWYxNjc1YTFj
MDNhODdhMTBkNjFlM2ZiNzExYWFmMTFjNzZiZC4uMmZiZjQyMmFlODVkOTljNjY4MGEwZWQ1OGNk
YmEzMjdmN2VkOGZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TU11dGF0aW9uRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11
dGF0aW9uRXZlbnQubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTXV0YXRp
b25FdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNdXRhdGlv
bkV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCmluZGV4
IDU2ODE5MzMyYmI2NzQyZTFlZmVkZDAxZTJjNzUzMzU3N2Q3MWUzZjguLjI5MTgxOTA5MGU1ZTI1
MDM1M2IzMDc0YWY5NmJkMjM4ZmRiOGQ1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01OYW1lZE5vZGVNYXAubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTU5hbWVkTm9kZU1hcC5tbQpAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVkTm9kZU1hcC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
YW1lZE5vZGVNYXAqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tCmluZGV4IDlhZGM0MGIwOGFi
YmM4NzcxYjNjOGI4YmRmZWUwMTlmYzgxY2UzMjUuLjIwMGU4MmEzMTAzYTY3MWQwNjE1NzExMmM3
ZGM5NzI0YTU1NmUyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5
bGVTaGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVJhbmdlLm1tCmluZGV4IGYyODliM2EyNmU4YTRmNTY2YjY3MjRmYjhkNjE1MTE1
OGJkYjYyZTguLmVmMmMzNTgwOWIwYjY3NjNiNDc3NDU2MThjM2IyOTU2MDZkOTk5OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmFuZ2UubW0KQEAgLTM0LDEwICszNCwxMCBAQAog
I2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlJhbmdl
Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NU3R5bGVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNo
ZWV0Lm1tCmluZGV4IDdhMWE0YTg3ZmM2ZWYyNDlhY2I5ZDA3ZGUyNTRiZGIyYjBhM2M5MzMuLjBl
ODc4NWM3ZDJjMDY3YzQ4NDcyMWVkNTM3ODc0ZDdjNTVjYjBhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tCkBAIC0zNiwxMCArMzYsMTAgQEAKICNp
bXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlN0
eWxlU2hlZXQqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01UZXh0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQu
bW0KaW5kZXggMzBlN2RhM2MwYzk4OTczZDQxMjVhNjdlZGRjZDI2ZDljZWU3NWNiNS4uZjczMGFk
NmRlYmFmYTA1YmUzNzI0NDBmOTZlNjAxYWVmZjRkZjdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVRleHQubW0KQEAgLTMwLDkgKzMwLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCmluZGV4IGM1MDI2ZWI0YjJmODYw
MTMzMjg3YjlmMmUwNThhNzYxZmIyNDIwNGYuLmNhMDZmZDdjMGZmMGUwMDFiOWU4ODQwNmQwYmE3
ZWFjY2E0MTRhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01U
ZXh0RXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVu
dC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UZXh0RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRFdmVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVRva2VuTGlzdC5tbQppbmRleCBkYjhmNTVjZTA3YWE2NGZk
OTI5YTVmNWY4M2ZmMGNiY2NkZDc3NDY4Li45YzRhYTg5NjMwZDc4MTQ0NDJiMTNjNmJjMjVjOGU0
YjdmOTZiYjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9r
ZW5MaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3Qu
bW0KQEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVP
YmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RE9NVG9rZW5MaXN0Kj4oX2ludGVybmFsKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2ZW50Lm1tCmluZGV4IDE3MzI0MzE5
MGEzMmIxNWM0N2ZmZmUwMDJiM2JhNjE2N2IxNzc4ZGIuLmY4MmNmNThhN2VkNGFiYjk0Zjg4NWYw
ZWU0YWZmYmMzZjlkZTAxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01VSUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUV2
ZW50Lm1tCkBAIC0zNCw5ICszNCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVUlF
dmVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VUlFdmVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0KaW5kZXggYTFlZjU3M2Y4ZGQy
YzEwYjY4NmMxMTk1MDlhNzAyNDJkN2NmNTJhZi4uZGFjZjFkODZkZjhlNzNjMWJiMDQ0Y2RkYThi
NDkxNTFhNGJmZmZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVhQYXRoUmVzdWx0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0
aFJlc3VsdC5tbQpAQCAtMzEsMTEgKzMxLDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhSZXN1bHQuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6WFBhdGhSZXN1bHQqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmluZGV4IDhmMTdjM2FmODlmMmIy
NzRhYjQ3NTQ1ZWE5ZjllYWFhNmM5ZWNkZmMuLmIyYjRhZThhMzFjODM1MTFkOTA3NTEwZDA4YWE4
MGJhMDAxODE4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
V2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9X
ZWJIaXN0b3J5SXRlbS5tbQpAQCAtNDcsMTMgKzQ3LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0lt
YWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0
IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1w
b3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFU
Rk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5T
VVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJh
cy5tbQppbmRleCBmM2JhYWVhMmZhMTEzZDhlNDc3Y2Y2MzA4MzVlMDc4YWQ0MGE3Y2E4Li5lZDI4
NGI0NjdiODRiYjZmZDg1ZTA0YTQzNzg3NmNkZTRhNmU5YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KQEAgLTMzLDE0ICszMywxNSBAQAog
I2ltcG9ydCAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCiAjaW1wb3J0ICJXZWJOU0RhdGFFeHRy
YXMuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2FkZXJOU1VSTEV4dHJhcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJM
RXh0cmFzLmg+Ci0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09iamNS
dW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx1bmlj
b2RlL3VzY3JpcHQuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYv
T2JqY1J1bnRpbWVFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9j
b2NvYS9OU1VSTEV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5h
bWVzcGFjZSBXVEY7CkBAIC0xMDksNyArMTEwLDcgQEAgLSAoTlNTdHJpbmcgKilfd2ViX29yaWdp
bmFsRGF0YUFzU3RyaW5nCiAKIC0gKE5TU3RyaW5nICopX3dlYl91c2VyVmlzaWJsZVN0cmluZwog
ewotICAgIHJldHVybiB1c2VyVmlzaWJsZVN0cmluZyhzZWxmKTsKKyAgICByZXR1cm4gV1RGOjp1
c2VyVmlzaWJsZVN0cmluZyhzZWxmKTsKIH0KIAogLSAoQk9PTClfd2ViX2lzRW1wdHkKQEAgLTEz
OSw3ICsxNDAsNyBAQCAtIChOU1VSTCAqKV93ZWJraXRfVVJMQnlSZW1vdmluZ0ZyYWdtZW50CiAK
IC0gKE5TVVJMICopX3dlYl9VUkxCeVJlbW92aW5nVXNlckluZm8KIHsKLSAgICByZXR1cm4gVVJM
QnlSZW1vdmluZ1VzZXJJbmZvKHNlbGYpOworICAgIHJldHVybiBXVEY6OlVSTEJ5UmVtb3ZpbmdV
c2VySW5mbyhzZWxmKTsKIH0KIAogLSAoQk9PTClfd2Via2l0X2lzSmF2YVNjcmlwdFVSTApAQCAt
MTc1LDE3ICsxNzYsMTcgQEAgLShOU0RhdGEgKilfd2ViX3NjaGVtZVNlcGFyYXRvcldpdGhvdXRD
b2xvbgogCiAtKE5TRGF0YSAqKV93ZWJfZGF0YUZvclVSTENvbXBvbmVudFR5cGU6KENGVVJMQ29t
cG9uZW50VHlwZSljb21wb25lbnRUeXBlCiB7Ci0gICAgcmV0dXJuIGRhdGFGb3JVUkxDb21wb25l
bnRUeXBlKHNlbGYsIGNvbXBvbmVudFR5cGUpOworICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxD
b21wb25lbnRUeXBlKHNlbGYsIGNvbXBvbmVudFR5cGUpOwogfQogCiAtKE5TRGF0YSAqKV93ZWJf
c2NoZW1lRGF0YQogewotICAgIHJldHVybiBkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBr
Q0ZVUkxDb21wb25lbnRTY2hlbWUpOworICAgIHJldHVybiBXVEY6OmRhdGFGb3JVUkxDb21wb25l
bnRUeXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudFNjaGVtZSk7CiB9CiAKIC0oTlNEYXRhICopX3dl
Yl9ob3N0RGF0YQogewotICAgIE5TRGF0YSAqcmVzdWx0ID0gZGF0YUZvclVSTENvbXBvbmVudFR5
cGUoc2VsZiwga0NGVVJMQ29tcG9uZW50SG9zdCk7CisgICAgTlNEYXRhICpyZXN1bHQgPSBXVEY6
OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGtDRlVSTENvbXBvbmVudEhvc3QpOwogICAg
IE5TRGF0YSAqc2NoZW1lID0gW3NlbGYgX3dlYl9zY2hlbWVEYXRhXTsKICAgICAvLyBUYWtlIG9m
ZiBsb2NhbGhvc3QgZm9yIGZpbGUKICAgICBpZiAoW3NjaGVtZSBfd2ViX2lzQ2FzZUluc2Vuc2l0
aXZlRXF1YWxUb0NTdHJpbmc6ImZpbGUiXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbQppbmRleCBlOWVkNWNi
ZWIyOTVkMDZkYWFkOTY5NTcyMmEzNGYzZWVlNTU2NjhkLi5iNzI2NTgzZjk3NGNkZGY3NjYxN2Yy
YWQxOGQzOThmNDAzYjkxM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbQpAQCAtMjQsOCArMjQsOCBAQAog
CiAjaW1wb3J0ICJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKIAotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggYWM3YTRiYjMxOGM1NWY5MzU5Yzk4
ZTBhOGJmOTZkMWU2ZTQ0MzYzNi4uODgzYjkyMDcyMDdlMjQ4ZGQ0N2EzMGJjMGM3NjIxZTcwNjhi
N2MzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNTgs
NyArNTgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9Qcm94eVNlcnZlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyR2VzdHVy
ZUluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ucHJ1bnRpbWVfaW1wbC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9ydW50aW1lX29iamVjdC5oPgpAQCAtNjYsNiArNjUsNyBAQAogI2ltcG9ydCA8
dXRpbGl0eT4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1Jl
ZkNvdW50ZWRMZWFrQ291bnRlci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiBleHRlcm4gIkMiIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAw
ZTE4OThmMDMwNTk5NzA0M2U2NGY2YTI5YWY2ZmNkM2Y5OWM1ZmE3Li4yYmM5NzhkMzQwM2Y3M2Yx
YzA2M2RmMjUyMzQzYzViODNlYzEzMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC03Miw3ICs3
Miw3IEBAIGNsYXNzIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0+CiAKICAgICB2b2lkIGNhbmNlbExvYWRBbmREZXN0cm95
U3RyZWFtV2l0aEVycm9yKE5TRXJyb3IgKik7CiAKLSAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29u
c3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7
IH0KKyAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29uc3QgVVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVx
dWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0KIAogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0
b3AoKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbSA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPgogICAgIGJvb2wgd2Fu
dHNBbGxTdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
RGF0YT4gbV9kZWxpdmVyeURhdGE7Ci0gICAgV2ViQ29yZTo6VVJMIG1fcmVxdWVzdFVSTDsKKyAg
ICBVUkwgbV9yZXF1ZXN0VVJMOwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9yZXNwb25zZVVSTDsK
ICAgICBDU3RyaW5nIG1fbWltZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMWE3MGJjZWI2
NWRmNTcxMmY2NTA1NmEyNGY0ZTk5NTkyMjMxY2I2Zi4uMDRkMjQ2ODE3ODUzNjFlYjgxNjBhMzc1
MjM4YmE4ZTQ4ZTk0YzY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIyNyw3ICsyMjcsNyBAQCBj
bGFzcyBXZWJDaHJvbWVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKICAg
ICB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5n
JiwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKICNl
bmRpZgogCi0gICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNp
Z25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBX
ZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFs
bGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViVmlldyAqbV93
ZWJWaWV3OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCA1ODc4NGI5OTc5NmViYTBiNzkzMWQ3
ZTJhNzhmODVlNTdhMmZhMTE4Li45ZTUxMjUzMDUxMjRlNGZhMmFlNjMyNWRlMDIzNmE4MTIyODEx
ZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBT
dHJpbmcmIG5hbWUsCiAKICNlbmRpZgogCi1TdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBT
dHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CitT
dHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmco
dW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZ0ZvcldlYlZpZXc6KTsKICAgICBpZiAoW1ttX3dl
YlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oCmluZGV4IDhiMjAzNjRiYjY3YTkxNzI3OGIyOTUzZmM1MTc5YTEyZGQz
NjZkZGQuLjE4ODVmMDMxMzEzNWI4MTdiMzBmOTQ1Nzc3ZDhlMjRiMTUzOWJmOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVu
dUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudAogCiAgICAgdm9pZCBj
b250ZXh0TWVudURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb3dubG9hZFVSTChj
b25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0
IFVSTCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3Jl
OjpGcmFtZSopIG92ZXJyaWRlOwogICAgIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6
OkZyYW1lKikgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1NwZWFraW5nKCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IGFmNzgxNGI5Njk2N2U5ZDg1ZjU5NDFkNGFmYWIz
MDI0NzU2Y2YzMjUuLjYxNjMwNDkwMTk5NmYxNTdmYzdlOThhMGU3YWIwYTBlODdlYzk5ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC01NCw5ICs1NCw5IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1JlbmRlck9iamVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTVByaXZhdGUuaD4KICNpbXBv
cnQgPHBhbC9zcGkvbWFjL05TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEkuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCA0
ZTgxZDM3MDg0OGY5ZTQ0YTQwZjUwNDBiYzlhZDhhMzdjY2FkOGUwLi44NDdhNzNiMTdhNDYxN2Jk
NTRhOGQyOGE5MjNjMWQ0YTYzYmRkMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBA
IGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAKICAg
ICB2b2lkIGJlZ2luRHJhZyhXZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29yZTo6RnJhbWUmLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEb3duUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBtb3VzZURyYWdnZWRQb3NpdGlvbiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRlY2xhcmVBbmRX
cml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVt
ZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUq
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbmNsdWRl
RWRpdERyYWcoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CmluZGV4IDc3MTgyZDIwZWJiYjM5MDcyMWFmYjgyZTU5NGUyMTlhMGI0NDBkNGQuLmZmNmQxNDFm
ZTNkODljYTk1YjUwZDU4ZDc3ZGU0Njk2YTJjNTZkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaApAQCAtMTA3LDcgKzEwNyw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVi
bGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2b2lkIGRpc3BhdGNoRGlkRGlz
cGF0Y2hPbmxvYWRFdmVudHMoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRj
aERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFs
LCBXYWxsVGltZSBmaXJlRGF0ZSkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJl
RGF0ZSkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFn
ZSgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgZmlu
YWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsK
QEAgLTE1OSw4ICsxNTksOCBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5
SXRlbUZvclBhZ2UoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVu
dCgpIGZpbmFsOwotICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7Ci0gICAgdm9pZCBkaWREZXRl
Y3RYU1MoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFs
OworICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiwgY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwg
Ym9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5h
bDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBXZWJG
cmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAK
ICAgICBib29sIHNob3VsZEZhbGxCYWNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKIAotICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBm
aW5hbDsKKyAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgZmluYWw7CiAgICAg
CiAgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRG
cmFtZSopIGZpbmFsOwogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZy
YW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgZmluYWw7CkBAIC0yMDYsMzAgKzIwNiwzMCBAQCBj
bGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudCB7CiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExv
YWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBmaW5hbCB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUo
Y29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYp
IGZpbmFsOworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVj
dGlvbiYsIGNvbnN0IFVSTCYpIGZpbmFsOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwg
V2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJD
b3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLAogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYg
cmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJn
aW5IZWlnaHQpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdp
bihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBj
b25zdCBXZWJDb3JlOjpVUkwmLAorICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBs
dWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQm
LCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCkgZmluYWw7CiAg
ICAgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBmaW5hbDsKICAgICB2b2lk
IHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZpbmFsOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVS
TChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExv
YWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNv
bnN0IGZpbmFsOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVS
TChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kg
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlm
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1M
QXBwbGV0RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwKICAgICAgICAgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFy
YW1WYWx1ZXMpIGZpbmFsOwogICAgIAotICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9i
amVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBt
aW1lVHlwZSkgZmluYWw7CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29u
dGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbDsK
ICAgICBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIAog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9N
V3JhcHBlcldvcmxkJikgZmluYWw7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBzaG91
bGRMb2FkTWVkaWFFbGVtZW50VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgc2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9i
amVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTI0Miw3ICsyNDIsNyBAQCBjbGFzcyBXZWJG
cmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAK
ICAgICBSZWY8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2lu
Z0NvbnRleHQoKSBmaW5hbDsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25z
dCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNob3VsZFBhaW50QnJva2Vu
SW1hZ2UoY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAg
ICBSZWZQdHI8V2ViQ29yZTo6UHJldmlld0xvYWRlckNsaWVudD4gY3JlYXRlUHJldmlld0xvYWRl
ckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDI4MjEyNDI3MjMyZDIzMTkzYjI4MWNj
MTVhZjIwYzIxYmQ5OWFmNzUuLmVmZTlhMzRiYzViN2Y1OTUwZjcyY2JiZWYxYTlkMjUxZWZkYTk2
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKICAgICBXZWJW
aWV3KiB2aWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBEb2N1bWVudExv
YWRlciogbG9hZGVyID0gY29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9y
eSgpID09IGJsYW5rVVJMKCkpCisgICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IFdU
Rjo6YmxhbmtVUkwoKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggZmQ0Y2Q0YzRiMzZkOGJmZjRiY2U1N2JmMTVl
ZDZmODlmNGVjZDU4MC4uMDc3ZDAxNGQzZTUzNWM3YThhYmIzNDY4ZTFkNjU0ZTlmZTliZTI3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcg
QEAgY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OlBheW1lbnRDb29yZGluYXRvckNsaWUKICAgICBib29sIGNhbk1ha2VQYXltZW50cygpIG92
ZXJyaWRlOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6
RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAg
IGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBV
UkwmLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVN
ZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRv
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudC5tbQppbmRleCAzMzQ5M2JkOWYxNjBiZGE4YWFjNWRhZmZm
YTU5MmE1NjBmYTk5MjgyLi4zMGUwNmNhZjkzMWFlMDY2YzM2OWI3MzUxMTNkOWM0OGE3YmRjMGQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
YXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC0yNyw4ICsy
Nyw4IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCi0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKQog
ewpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6b3Bl
blBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLAogICAgIH0pOwogfQog
Ci1ib29sIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6c2hvd1BheW1lbnRVSShjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYsIGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikKK2Jvb2wgV2ViUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50OjpzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+Jiwg
Y29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKQogewogICAgIHJl
dHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggNzM5Yzk1MWY2
YmQ3ZmY1NWYyOTkyYWRmZjNhNTA5YTZjZTEwMDU5NC4uNGVhMWFkZDNlMTIzN2UwMmU1MDA5YzEx
ZmQ1YWI3ZTJhMmMzOTM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ4LDEz
ICs0OCwxMyBAQCBjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6
UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcgogICAgIFdlYkNvcmU6OkJsb2JSZWdp
c3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpD
b29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9N
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2ll
c0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6
OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1
ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJv
YXJkU3RyYXRlZ3kKICNpZiBQTEFURk9STShJT1MpCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFdl
YlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMs
IHByaXZhdGUgV2ViQ29yCiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKLSAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Cisg
ICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3Jl
OjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFdlYlBsYXRm
b3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZh
dGUgV2ViQ29yCiAgICAgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdl
YkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwotICAgIFdlYkNvcmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CisgICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKIAogICAgIGxvbmcgd3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
VmVjdG9yPFN0cmluZz4gdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGJkNzU4MWZhNTA0ODFjOTg5N2M5YTFmY2RkMzIx
OTBmNjdmMDZiNDUuLmY1MGIwZWIzYmM0NzBlYjkxMjg1YTA1ZmRkMmQ0ZDM0NDZlMjUxNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTIzOSw3ICsyMzksNyBAQCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpbgogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQogCi1XZWJDb3JlOjpVUkwgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQorVVJMIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4LCB0aXRsZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZv
UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkluZm9Qcm92aWRlci5oCmluZGV4IGQxYWI1NTExODRjMGE1ZjY0OTk0MGQ4ZTkyN2JkODRl
NTI5YzdmZjAuLjUyNWVlMmZjZGVlYTE2YzVjNmY5ZGZlODEzNWVkN2QxYzVlYmJkMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbklu
Zm9Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFdlYlBsdWdp
bkluZm9Qcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5JbmZvUHJvdmlkZXIg
ewogcHJpdmF0ZToKICAgICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7CiAgICAgVmVj
dG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZp
bmFsOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5m
byhXZWJDb3JlOjpQYWdlJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2Um
LCBjb25zdCBVUkwmKSBmaW5hbDsKIAogICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcigpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkluZm9Qcm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5tbQppbmRleCBlMzRlYzczZTU0ZmJkOTU0MTY4ZmZj
YTU1MmU0ZjM2YmM5NWY1NDRiLi5iMDZkYTZmMGYwYzM1N2IwMGJhODc0OTFjYjE3YmZkMmZhOTRl
MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbHVnaW5JbmZvUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLm1tCkBAIC03NCw3ICs3NCw3IEBAIFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbklu
Zm8oV2ViQ29yZTo6UGFnZSYgcGFnCiAgICAgcmV0dXJuIHBsdWdpbnM7CiB9CiAKLVZlY3RvcjxX
ZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVn
aW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYpCitWZWN0b3I8
V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1
Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBjb25zdCBVUkwmKQogewogICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5J
ZGVudGlmaWVyczsKICAgICByZXR1cm4gcGx1Z2luSW5mbyhwYWdlLCBzdXBwb3J0ZWRQbHVnaW5J
ZGVudGlmaWVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDRlNGMxM2RmYjczYWI2NGFl
ZTk3ZDdhMzczOTUxM2FlNDkyNDI5ZmMuLmQ5YTA3ZWVjNTc4MzMyNjkwOTY4YjQ3OTRkMTVmMjVi
ZDc5NTExYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKaW5kZXggYWVmNGZjNTJhYWU0MTJm
M2U2YzRlY2Y0MDM5NWI0M2U4N2NjOTQ2Yy4uMjBlZTUxODc5NDU1OTcyYWI0YjAzYzQ2MmFlMzFm
Mzk0OWVjOTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaApAQCAtNDQsNyArNDQsNyBAQCBj
bGFzcyBXZWJWaXNpdGVkTGlua1N0b3JlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlZpc2l0ZWRM
aW5rU3RvcmUgewogcHJpdmF0ZToKICAgICBXZWJWaXNpdGVkTGlua1N0b3JlKCk7CiAKLSAgICBi
b29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hh
c2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRy
aWJ1dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdl
JiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBB
dG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNpdGVk
TGluayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzSWZOZWVkZWQoV2ViQ29yZTo6UGFnZSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
CmluZGV4IDYxMTc5ZmY4ODFlMzU1ODJjNTc5NjliNzY1ZGUzNjhhNjZjMjRiYTMuLjFlMjI1OTFi
MDI3MjcyM2VkMjI5NDNkY2JjMjNhMjZmZTk1ZTJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTU1LDcgKzU1LDYgQEAKICNp
bXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVVJMUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYktpdExl
Z2FjeS9ET01IVE1MLmg+CkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV2ViUERGVmll
d0lPUy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5k
ZXggMzdiMzNjODEwODQwMmJlY2Y3ZTU0NTcwNTZjNGQ2MzcxYzIyMDQ2Yi4uNzhiZDNkNDliOTBl
NzllOTdjMzg4ZDA4Njc4NTdjN2JlYWMwYTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yNTA4LDcgKzI1MDgsNyBAQCAtICh2b2lkKV9sb2Fk
RGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5j
b2RpbmdOYW1lOgogICAgIGlmIChiYXNlVVJMKQogICAgICAgICBiYXNlVVJMID0gW2Jhc2VVUkwg
YWJzb2x1dGVVUkxdOwogICAgIGVsc2UgewotICAgICAgICBiYXNlVVJMID0gYmxhbmtVUkwoKTsK
KyAgICAgICAgYmFzZVVSTCA9IFdURjo6YmxhbmtVUkwoKTsKICAgICAgICAgcmVzcG9uc2VVUkwg
PSBjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLm1tCmluZGV4IDc1NGNjY2MxYWYyODA2NTU4Y2VmOTZiODhjYzZlNjg3MzNjYTIy
YTYuLmY1MTRiODQwNTRjMjFhOTM3M2JkZTdmNWI5YTQwMWQ4ZGVmYjM0MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTI1NiwxNyArMjU2LDE3IEBAIC0gKGlkIDxOU0ltbWVk
aWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KV9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxl
cgogICAgIE5TVVJMICp1cmwgPSBfaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAg
ICBOU1N0cmluZyAqYWJzb2x1dGVVUkxTdHJpbmcgPSBbdXJsIGFic29sdXRlU3RyaW5nXTsKICAg
ICBpZiAodXJsICYmIF9oaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSkgewotICAgICAgICBpZiAo
cHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgIm1haWx0byIpKSB7CisgICAgICAgIGlmIChX
VEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJtYWlsdG8iKSkgewogICAgICAgICAg
ICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25NYWlsdG9MaW5rOwogICAgICAgICAgICAgcmV0
dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAocHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgInRlbCIp
KSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJ0ZWwi
KSkgewogICAgICAgICAgICAgX3R5cGUgPSBXZWJJbW1lZGlhdGVBY3Rpb25UZWxMaW5rOwogICAg
ICAgICAgICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVk
TGlua107CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRU
UEZhbWlseShhYnNvbHV0ZVVSTFN0cmluZykpIHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJ
c0luSFRUUEZhbWlseShhYnNvbHV0ZVVSTFN0cmluZykpIHsKICAgICAgICAgICAgIF90eXBlID0g
V2ViSW1tZWRpYXRlQWN0aW9uTGlua1ByZXZpZXc7CiAKICAgICAgICAgICAgIFJlZlB0cjxSYW5n
ZT4gbGlua1JhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpfaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmlu
ZGV4IGEwOTljNDZkZTcyNjk3ZGNkZjk1M2YxYTQxYjliNzQwYzIwMDUwNGMuLjkwMDM4MmNmOGI4
MDBlYjFkNTE1OTE4NWRlMmYzODMzYjBjNjZlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAgLTYyLDkgKzYyLDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9y
eU1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0
cmluZ0V4dHJhcy5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogZXh0ZXJuICJDIiB7CiAgICAgYm9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U21v
b3RoaW5nKENHQ29udGV4dFJlZiBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IDg1YWZmYzFiY2EwZDg3
ODMzYjQ0OTYyMmVhMWRhYTMyYWEwYzY0OWEuLjVmY2Y5ZjZhZmUwNTFiYjJmN2NjZjEzZTMyN2I0
NWE1NTY3ODhiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtMzksOCArMzksOCBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9ET01XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSlNET01XaW5kb3cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggMGU3YzVkN2U5MmUy
OGIyZWZlNjJmYTdjZTNhZDkxMmE0N2YwOTNkOC4uYjYyZjJjMzUyYTNiMDFiZWUyNzgzMDhlOWI3
ODllYTkwNWFlZjY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7
CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgVGV4dEluZGljYXRvcjsKLWNs
YXNzIFVSTDsKIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0cnVjdCBEaWN0aW9uYXJ5
UG9wdXBJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hh
bGxpbmdIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVs
cGVycy5jcHAKaW5kZXggNmFmMzE1MTMxNjUxOGEyY2Y1NjI4ODgxYjQ4NWMyMjMzMGNjODA5Ny4u
NzQ3MWExMTZjNzMyZGJlZjhmZmYxMTBjM2QxMWJjMzZjODllOGI4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCkBAIC0yOCw5ICsyOCw5IEBA
CiAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJl
Y3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5o
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKaW5kZXggNjZk
ZWU4YTQwNDYwZjkyNWM0OGY1OWVmNzdkOGY5MzA0NjA2OGQ0Ny4uODIwYjYyMTM2YmM4Y2QwZDMx
M2ZjYzA3NGZlYTNjYzVhMmFlYzRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFy
c2hhbGxpbmdIZWxwZXJzLmgKQEAgLTMwLDE1ICszMCwxNCBAQAogI2luY2x1ZGUgPENvcmVGb3Vu
ZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFz
cyBJbnRSZWN0OwotICAgIGNsYXNzIFVSTDsKK2NsYXNzIEludFJlY3Q7CiB9CiAKIGNsYXNzIE1h
cnNoYWxsaW5nSGVscGVycwogewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgQlNU
UlRvS1VSTChCU1RSKTsKLSAgICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29uc3QgV2ViQ29yZTo6
VVJMJik7CisgICAgc3RhdGljIFVSTCBCU1RSVG9LVVJMKEJTVFIpOworICAgIHN0YXRpYyBCU1RS
IFVSTFRvQlNUUihjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgQ0ZVUkxSZWYgUGF0aFN0cmluZ1Rv
RmlsZUNGVVJMUmVmKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgc3RhdGljIFdURjo6U3RyaW5n
IEZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKTsKICAgICBzdGF0aWMg
Q0ZVUkxSZWYgQlNUUlRvQ0ZVUkxSZWYoQlNUUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGYyNDM2MDNjZTY3MTVkOGYx
ZjA4OGRlYWYyOWFlMDA3MWQ4ZTk0NjguLjljZGNjMTQ1YjcxOTk5Y2RhNjk4NDE0ZTUyZmUyMmMz
N2E4OTdiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJQbHVnaW5QYWNr
YWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURB
VEFfQ0FDSEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmgKaW5kZXggMDEzNzA4ZWJkNzFmOTgzNzA1NDlhNDQ2NDExYmZhNGM3ZmQ5MzBhZC4u
YWNjMGUxZmJhNzQ2NDI5NDQxYmI5YWQ2NGZkYmNlMjUwZDJkYjcxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtMzgsNyArMzgs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBG
cmFtZTsKICAgICBjbGFzcyBJbnRTaXplOwotICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBQbHVn
aW5EYXRhYmFzZUNsaWVudDsKICAgICBjbGFzcyBQbHVnaW5QYWNrYWdlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmlu
ZGV4IGMzZTQ5ZjQ0MTk2NTQ2MTBlZmQ0ZGM1ZjVlYmQ5YWIwOTFjMDZlMTUuLjgxNGUyYmI2ZGMz
OTFmYzJmZmExYTk1YjY5ZTQ2ZDQ1ODBjMDM2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0yOSw3ICsyOSw3
IEBACiAKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFy
U3RyaW5nRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblN0cmVhbS5oCmluZGV4IGY2MjhjY2QzZDVhNDU5MjZlNTM3MDM1MmQ4NmRjOWE3NTM1NThl
NzEuLmMxYjlmODdhYzRlNjIyZmJiMmUyZTIwNWQxNjQ1OWMwYzE5NGU3YjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMzIsMTAgKzMy
LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRl
cm5hbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4
IGI0ZTkxZjZlMTJiM2JiOWIyYTM5ZDhiYThmMDJhOTQyMDQwNWJkMzAuLjdjZmM3YTlhODJlNzJj
OTEyZjVkYjk5OWNmYjM3YmY5Y2YxYTlmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC02MCw3ICs2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKICAgICBjbGFzcyBLZXlib2FyZEV2ZW50
OwogICAgIGNsYXNzIE1vdXNlRXZlbnQ7Ci0gICAgY2xhc3MgVVJMOwogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogICAgIGNsYXNzIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW47CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDIwM2QxNTY1ZTI1ODYxNzNjYTI1
NjFhNTQ1YTM4ZTYwZTc1YzhkODIuLmM5ZGU0OWIzY2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkx
NThiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFz
cyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVu
dCB7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdp
dGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9va1Vw
SW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNv
bnN0IFdURjo6U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25z
RGVsZWdhdGUuY3BwCmluZGV4IDY0MzUwNzY3ZjkzNDAyNmQwOWMwZmE4Yjg4ZGNjZGQzODk0MmVk
MDcuLmNjMDM4Y2VmZDkxNWY0NTE2ZDU4N2JhZjEwOWE1YWQ2NDdhMjAxMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCkBAIC0zMyw3ICszMyw3
IEBACiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9w
Tm90aWZpY2F0aW9uc0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKaW5kZXggZjBmMWQ5MmYy
ZGIyNWI3NDQyODc3NTI0NjJhZmJhNGJjMWQxYzdmMS4uODI5NmM4Y2NiNjg4N2QzNDU0OGQ1YTY0
YzY4Njc3MjZhNzQ2MDc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25z
RGVsZWdhdGUuaApAQCAtMzgsNyArMzgsNiBAQCBpbnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmlj
YXRpb25QcmVzZW50ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50Owot
Y2xhc3MgVVJMOwogfQogCiBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlIDog
cHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCAzOWNkMWMxNjc5YWRkZDIwNWJiMDdlODNmYTY5MjA5ODUzMjg1NzM2Li4zMmE5
ZjBiYzMxNDAyOTkxYjg5MjQ5ODAyNzk1NjNkZGUyMjg4OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjoKICAgICB2
b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwg
ZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNw
YXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBvdmVycmlkZTsKQEAgLTE0MCw4ICsxNDAs
OCBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9y
eUl0ZW1Gb3JQYWdlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQ
YWdlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRGV0ZWN0
WFNTKGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsKIAogICAg
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9j
a2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CkBAIC0x
NTQsMTIgKzE1NCwxMiBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAgICAgYm9vbCBzaG91
bGRGYWxsQmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAg
ICBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7Cisg
ICAgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAgICAgUmVm
PFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92
ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXImKSBvdmVycmlkZSB7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYs
IGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNo
ZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNp
dGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgb3Zl
cnJpZGU7CkBAIC0xODUsMTUgKzE4NSwxNSBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogCiAg
ICAgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxXZWJD
b3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpT
dHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCYsCisgICAgUmVmUHRy
PFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKICAgICAgICAgY29uc3Qg
V1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldp
ZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQ
bHVnSW5FbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJv
b2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBj
cmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5F
bGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5
KSBvdmVycmlkZTsKICAgICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92
ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0
Jikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxl
bWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMp
IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRX
aWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50
JiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcykgb3ZlcnJpZGU7CiAK
LSAgICBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOworICAg
IFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYs
IGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7CiAgICAgV1RGOjpTdHJpbmcg
b3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hE
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDBjNGZiMDQyNGQwMWVhMTE1
ZDI3ZWNlNzJlMTkwMzg3NmU1YzFlNTkuLmJlMjRjYjhhNTY4NTljZDQzY2UxOWYwYTE3YmJmODFk
YTdjOTlmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00NSwxMSArNDUsMTEg
QEAgY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3Jt
U3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3IKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkJsb2JSZWdp
c3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3Ry
YXRlZ3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcm
KTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNG
cm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7Ci0gICAgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2ll
cykgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nv
b2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRleCAx
YTQ1YWI4ZGUyODIzN2NmZGViNmYzOWRlMGYxNzRlZWI1ZDgyM2VmLi5kMzEwZDI5MTAwODcwMDll
ODliYWZlZjVmMGUwMTI3NjE5NGRkZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5j
cHAKQEAgLTg0LDcgKzg0LDcgQEAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdp
bkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWcKICAgICByZXR1cm4g
b3V0UGx1Z2luczsKIH0KIAotVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbklu
Zm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgY29u
c3QgV2ViQ29yZTo6VVJMJikKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNv
bnN0IFVSTCYpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbk5hbWVzOwogICAgIHJldHVybiBwbHVn
aW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbk5hbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyLmgKaW5kZXggODAxYmNiN2I0NjJkY2NkZGZjNzY1MmI2NGFmMDZmODYwZmZjNTVmYi4uMTBm
NzY2ZTA2MDQ0ZDE1OWIwYTFjZDkzOTQ5MjFlNzYxMmQ1NzkyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlciB7CiBwcml2YXRlOgog
ICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBmaW5hbDsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1
Z2luSW5mbz4gcGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8
V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2Um
aSwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmaSwgY29uc3QgVVJMJikg
ZmluYWw7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBv
bGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3Qs
IGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3Ry
aW5nKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZp
c2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAppbmRleCA2YTdiOTkyMmMzYTM5MTUyMmMzZGEwNDdlNGEw
Njk3M2I0MDRkMTEwLi44YmVkZTllMjU4MTkxODMyMDI3MGVhYjY1Mjc0YTdhOTA2ZGI1OGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNp
dGVkTGlua1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdlYlZpc2l0
ZWRMaW5rU3RvcmUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZSB7CiBw
cml2YXRlOgogICAgIFdlYlZpc2l0ZWRMaW5rU3RvcmUoKTsKIAotICAgIGJvb2wgaXNMaW5rVmlz
aXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpT
aGFyZWRTdHJpbmdIYXNoLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYg
YXR0cmlidXRlVVJMKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6
OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
cG9wdWxhdGVWaXNpdGVkTGlua3NJZk5lZWRlZChXZWJDb3JlOjpQYWdlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGE2ODJjNjI3NTBlMTFmNTIxNTY3
MjFmM2Q4MjgyZDU3ZTBmODA2ZDIuLmI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRl
ZjAzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC00
Myw3ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3du
bG9hZC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuaAppbmRleCA4NDg4
NWYyNGZiODM0YTJkZmNhODJlZWI3OWUxOWM3MTkxMDRhNDcyLi40ZjYxMTFlMjNiMmMyZTA3ZTBh
ZTRhZmFkNThlYTUwZWQxYTMyYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2Fk
LmgKQEAgLTM4LDcgKzM4LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
Y2xhc3MgVVJMOwogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNTIsMTMgKzUxLDEzIEBA
IGNsYXNzIFdlYkRvd25sb2FkCiAjZW5kaWYKIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViRG93
bmxvYWQqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERl
bGVnYXRlKik7CisgICAgc3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJbnN0YW5jZShjb25zdCBV
UkwmLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOwogICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3Jl
YXRlSW5zdGFuY2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgSVdlYkRvd25s
b2FkRGVsZWdhdGUqKTsKICAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKCk7
CiBwcml2YXRlOgogICAgIFdlYkRvd25sb2FkKCk7CiAgICAgdm9pZCBpbml0KFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7Ci0gICAgdm9p
ZCBpbml0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAg
dm9pZCBpbml0KGNvbnN0IFVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CiAgICAgfldlYkRv
d25sb2FkKCk7CiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IGNkZjhjYWQ2YTM2OTZl
ZWJhY2U2MmY0ZTU3ODRjZWU0YmVmMWQ5ZTkuLjI3YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQw
ZTFhYzUwYWQ3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1l
bnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVu
dFByb3BlcnR5QmFnLmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSGl0
VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ltYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1JlbmRlck9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IGRiZWE2
OThhNTc1MDIxMmE1MDY1MGU3ODM5MTY5ZDBhNWUxYjM3NTQuLmM0ZDA4MzYyZGFkNWU4MzkzZThk
ZmY4MzFjMjU5ODFhMmM3N2ZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAt
MzQsOSArMzQsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVXaW4uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5k
bGVDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHNhbC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5MCw3ICsx
OTAsNyBAQCBjbGFzcyBERUNMU1BFQ19VVUlEKCJ7QTM2NzYzOTgtNDQ4NS00YTlkLTg3REMtQ0I1
QTQwRTYzNTFEfSIpIFdlYkZyYW1lIDogcHVibGljCiAgICAgSFJFU1VMVCBtYXRjaExhYmVsc0Fn
YWluc3RFbGVtZW50KGNvbnN0IEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElET01FbGVtZW50
KiBhZ2FpbnN0RWxlbWVudCwgQlNUUiogcmVzdWx0KTsKICAgICBIUkVTVUxUIGNhblByb3ZpZGVE
b2N1bWVudFNvdXJjZShib29sKiByZXN1bHQpOwogCi0gICAgV2ViQ29yZTo6VVJMIHVybCgpIGNv
bnN0OworICAgIFVSTCB1cmwoKSBjb25zdDsKIAogICAgIFdlYlZpZXcqIHdlYlZpZXcoKSBjb25z
dDsKICAgICB2b2lkIHNldFdlYlZpZXcoV2ViVmlldyopOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGNs
YXNzIERFQ0xTUEVDX1VVSUQoIntBMzY3NjM5OC00NDg1LTRhOWQtODdEQy1DQjVBNDBFNjM1MUR9
IikgV2ViRnJhbWUgOiBwdWJsaWMKICAgICBjbGFzcyBXZWJGcmFtZVByaXZhdGU7CiAgICAgV2Vi
RnJhbWVQcml2YXRlKiBkOwogICAgIGJvb2wgbV9xdWlja1JlZGlyZWN0Q29taW5nIHsgZmFsc2Ug
fTsKLSAgICBXZWJDb3JlOjpVUkwgbV9vcmlnaW5hbFJlcXVlc3RVUkw7CisgICAgVVJMIG1fb3Jp
Z2luYWxSZXF1ZXN0VVJMOwogICAgIGJvb2wgbV9pblByaW50aW5nTW9kZSB7IGZhbHNlIH07CiAK
ICAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gbV9wYWdlUmVjdHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDIyYjA4NDZhOTA2Yjc4Mjg2NTZiOGQ5NTdjMTBh
MGRmYWZmOGIzMDEuLjAyMzM4NGNlOTZmMTA5NDljZGQ1OWY3NzRhODE0NWViYmVhN2I3YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAK
ICNpbmNsdWRlICJXZWJWaXNpdGVkTGlua1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3Rm
L0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmgKaW5kZXggMTdhZmY5MjgyN2QxZDEwOWI1M2U5Y2RjYzZj
ZTQ5YzhiZTNlNzBlNS4uNjkzNzRkZjAyMDFkODk4Zjc3ZDZiMTIxOThjNjc1ZGNlNDgxODA4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuaApAQCAtMzMsOCArMzMsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBV
Ukw7Ci0gICAgY2xhc3MgUGFnZUdyb3VwOworY2xhc3MgUGFnZUdyb3VwOwogfQogCiAvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCkBAIC03OCw3ICs3Nyw3IEBAIGNsYXNzIFdlYkhpc3RvcnkgOiBwdWJs
aWMgSVdlYkhpc3RvcnksIHB1YmxpYyBJV2ViSGlzdG9yeVByaXZhdGUgewogCiAgICAgLy8gV2Vi
SGlzdG9yeQogICAgIHN0YXRpYyBXZWJIaXN0b3J5KiBzaGFyZWRIaXN0b3J5KCk7Ci0gICAgdm9p
ZCB2aXNpdGVkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRs
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9vbCBp
bmNyZWFzZVZpc2l0Q291bnQpOworICAgIHZvaWQgdmlzaXRlZFVSTChjb25zdCBVUkwmLCBjb25z
dCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiBodHRwTWV0aG9kLCBib29s
IHdhc0ZhaWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENvdW50KTsKICAgICB2b2lkIGFkZFZpc2l0
ZWRMaW5rc1RvVmlzaXRlZExpbmtTdG9yZShXZWJWaXNpdGVkTGlua1N0b3JlJik7CiAKICAgICBD
T01QdHI8SVdlYkhpc3RvcnlJdGVtPiBpdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5n
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5
SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5k
ZXggODQzNzYyMDFkMDdlYjNmZWY1ZWIyZDlhNzIxNzZkMzE3Zjk5MTIyZS4uYTg1NTlhNWZkMjI3
Y2JkMmIxN2VhZjI4NWVhNjM5NWVhZmY4YTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
QlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IGIyOTJkZGU3ZGNjZWY2MmZjYTczYjBjNGNiNGJhYjJh
ZGM1YmZmYjAuLjk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIFdlYlJlc291cmNlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1X
ZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpCitXZWJSZXNvdXJj
ZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3Qg
V1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSkKICAgICA6IG1fZGF0YShkYXRhKQogICAg
ICwgbV91cmwodXJsKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGI4YzdkY2NiMDM3NDlhYjc4NzNlMzdmZmEyOWYyNTJj
NjUzYmViYTUuLjRkZjNlMGMxMTUwNDY1MGE5ZjJiMDFjMjE3MWUyMWZjMjFhMGI5OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMjgsMTcgKzI4LDE3IEBACiAKICNp
bmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBjbGFzcyBXZWJSZXNvdXJjZSA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgogICAg
IHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogcHJvdGVjdGVk
OgotICAgIFdlYlJlc291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
LCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0RW5j
b2RpbmdOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKTsKKyAgICBXZWJSZXNvdXJj
ZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXVEY6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBXVEY6
OlN0cmluZyYgZnJhbWVOYW1lKTsKICAgICB+V2ViUmVzb3VyY2UoKTsKIAogcHVibGljOgpAQCAt
NTgsNyArNTgsNyBAQCBjbGFzcyBXZWJSZXNvdXJjZSA6IHB1YmxpYyBJV2ViUmVzb3VyY2Ugewog
cHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIENPTVB0cjxJU3RyZWFt
PiBtX2RhdGE7Ci0gICAgV2ViQ29yZTo6VVJMIG1fdXJsOworICAgIFdURjo6VVJMIG1fdXJsOwog
ICAgIFdURjo6U3RyaW5nIG1fbWltZVR5cGU7CiAgICAgV1RGOjpTdHJpbmcgbV90ZXh0RW5jb2Rp
bmdOYW1lOwogICAgIFdURjo6U3RyaW5nIG1fZnJhbWVOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDgxYjI2OWZjNDIwYzU5Y2M2ZWY1
ZDk5MmZjNzZjYzQ5YjBlYTBmYjguLjk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3N2YwY2QwNjAwMjQ2
YTEwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3Jp
Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggNDU3NmMyMjI1YzgzNTdmMzA2NzA2NzNjMTg4
MDVkMzM4ZjQ4MmJiNC4uMmQ4ZjA1Y2Y0YjMyOWU3OTJhNmNmNGMzNWJmZDk0YjQ0NDZiNjQ2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtNDAsMTIg
KzQwLDEyIEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPHNobG9iai5o
PgogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTIyNyw3ICsyMjcsNyBA
QCBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9uc2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAg
ICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAv
LyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBpdCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9u
c2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNl
KFdlYkNvcmU6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7Cisg
ICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwg
Imh0dHA6Ly8iKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVm
KCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggYmQxMjY3NThhNTFjYzM1
MzhmOWFjOTUzN2NmYjFmYzdkZmRhZTM4OC4uNDgxMjM4NDcxM2M4Yjk5ZGE1Y2JhNWI2M2YyNTQ0
NDlmZTUwYzY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2Vy
Q29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0
RExMLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAppbmRleCAzY2ZkNjY3NjhlYjMyN2FlYWRjN2Ew
OWU0ZDI3Y2VhMjQ5NDhmZDdlLi4xYjcyYmJlODI3MzRjZTgzMzYyYTcyYzkwZWMyYjhmMDZlNThm
ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCkBAIC00NjMsNyArNDYzLDcgQEAgY2xh
c3MgV2ViVmlldwogCiAgICAgLy8gQ29udmVuaWVudCB0byBiZSBhYmxlIHRvIHZpb2xhdGUgdGhl
IHJ1bGVzIG9mIENPTSBoZXJlIGZvciBlYXN5IG1vdmVtZW50IHRvIHRoZSBmcmFtZS4KICAgICBX
ZWJGcmFtZSogdG9wTGV2ZWxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lOyB9Ci0g
ICAgY29uc3QgV1RGOjpTdHJpbmcmIHVzZXJBZ2VudEZvcktVUkwoY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpOworICAgIGNvbnN0IFdURjo6U3RyaW5nJiB1c2VyQWdlbnRGb3JLVVJMKGNvbnN0IFVS
TCYgdXJsKTsKIAogICAgIHN0YXRpYyBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCBjbGFzcyBXZWJWaWV3
CiAgICAgYm9vbCBvbkdldE9iamVjdChXUEFSQU0sIExQQVJBTSwgTFJFU1VMVCYpIGNvbnN0Owog
ICAgIHN0YXRpYyBTVERNRVRIT0RJTVAgQWNjZXNzaWJsZU9iamVjdEZyb21XaW5kb3coSFdORCwg
RFdPUkQgb2JqZWN0SUQsIFJFRklJRCwgdm9pZCoqIHBwT2JqZWN0KTsKIAotICAgIHZvaWQgZG93
bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkb3dubG9hZFVSTChjb25z
dCBVUkwmKTsKIAogICAgIHZvaWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29u
KCk7CiAgICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTBj
OTU3NTgwYmM2ODE0YzNiNmRlZGNiMjYyZmJlM2M4NzU5MjhlZi4uNTc5ZGE1YTE0YTMwOWVmOTE5
MDE3YzgzYzU0NmJmMGMzZTUwMmU5YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTEwLTAzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBVUkwgZnJv
bSBXZWJDb3JlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMu
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFy
c2VyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y2hlY2tVUkxEaWZmZXJlbmNlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0
aXZlVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Vc2VyQWdlbnRRdWlya3MuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW06CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpvcmlnaW5hbERhdGFBc1N0cmluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp1c2Vy
VmlzaWJsZVN0cmluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpsaXRlcmFsVVJMKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW06CisgICAgICAgIChURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlk
VVJMUmVxdWVzdC5tbToKKyAgICAgICAgKGxpdGVyYWxVUkwpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tOgorICAgICAg
ICAoLVtMb2FkSW52YWxpZFVSTFdlYkZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZFdpdGhFcnJvcjpmb3JGcmFtZTpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UpOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXQu
cHk6CisgICAgICAgIChfX2xsZGJfaW5pdF9tb2R1bGUpOgorICAgICAgICAoV1RGVVJMX1N1bW1h
cnlQcm92aWRlcik6CisgICAgICAgIChXVEZVUkxQcm92aWRlcik6CisgICAgICAgIChXZWJDb3Jl
VVJMX1N1bW1hcnlQcm92aWRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlVVJMUHJvdmlk
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZVVSTFByb3ZpZGVyLl9faW5pdF9fKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmVVUkxQcm92aWRlci50b19zdHJpbmcpOiBEZWxldGVkLgor
CiAyMDE4LTEwLTAzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IEVuYWJsZSBzZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCBieSBkZWZhdWx0
IGluIFdlYktpdExlZ2FjeQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggNThlNjlkMGRmNjMwNTk3YTEwZGIy
ZTljOTZhMmQ4ZGRjZGFhN2M2OS4uMTg4YjhiZGUwYzVmMzQ5ZWRjOWY0MjVjZjkwODNjYzc3Njhk
MDcwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRl
bnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC0zOCwxMCArMzgsMTAgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL05GQS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTkZBVG9ERkEuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlTG9hZEluZm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVVJMRmlsdGVyUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmNwcAppbmRleCBiOTI4MzI0ZjM1OThkZGI0NjE3YTFkZWViODgyNjM2MGM2NWE0
MjA1Li5hYWQxNmI4NjA0MTc5Y2E0M2E5NzczNzk1ODU0YjU3NTc3M2FmYzlhIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAK
QEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKaW5kZXggNzM1MzRjODE3
MzNlYmE0NTJmMzJmZDlmODIxNzFiYTliYTU0YjZiYi4uZGMzMWI0N2JkMDc4NjhhZWRjYWZmOTdm
NTY1NmQ4M2Y3ODlkODMyMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VSTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VS
TC5jcHAKQEAgLTI1LDExICsyNSw5IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC03Myw4
ICs3MSw3IEBAIFRFU1RfRihVUkxUZXN0LCBVUkxDb25zdHJ1Y3RvckNvbnN0Q2hhcikKIAogc3Rh
dGljIFVSTCBjcmVhdGVVUkwoY29uc3QgY2hhciogdXJsQXNTdHJpbmcpCiB7Ci0gICAgVVJMUGFy
c2VyIHBhcnNlcih1cmxBc1N0cmluZyk7Ci0gICAgcmV0dXJuIHBhcnNlci5yZXN1bHQoKTsKKyAg
ICByZXR1cm4gVVJMKHsgfSwgdXJsQXNTdHJpbmcpOwogfTsKIAogVEVTVF9GKFVSTFRlc3QsIFVS
TFByb3RvY29sSG9zdEFuZFBvcnQpCkBAIC0zMTcsMjAgKzMxNCwyMCBAQCBURVNUX0YoVVJMVGVz
dCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpCiAKIFRFU1RfRihVUkxUZXN0LCBQcm90
b2NvbElzSW5IVFRQRmFtaWx5KQogewotICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KHt9KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoIiIp
KTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYSIpKTsKLSAgICBF
WFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWIiKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiYyIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJv
dG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZCIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgiYWJjZGUiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhU
VFBGYW1pbHkoImFiY2RlZiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZh
bWlseSgiYWJjZGVmZyIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90b2NvbElzSW5IVFRQRmFtaWx5
KCJodHRwOiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0
cCIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwczoiKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzIikpOwotICAg
IEVYUEVDVF9UUlVFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzOi8vIUAjJCVeJiooKSIp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KHsgfSkpOwor
ICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoIiIpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhIikpOworICAgIEVYUEVD
VF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiIikpOworICAgIEVYUEVDVF9G
QUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiYyIpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNkIikpOworICAgIEVYUEVDVF9GQUxT
RShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlIikpOworICAgIEVYUEVDVF9GQUxT
RShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlZiIpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNkZWZnIikpOworICAgIEVYUEVDVF9U
UlVFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cDoiKSk7CisgICAgRVhQRUNUX0ZB
TFNFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cCIpKTsKKyAgICBFWFBFQ1RfVFJV
RShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzOiIpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwcyIpKTsKKyAgICBFWFBFQ1RfVFJV
RShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBzOi8vIUAjJCVeJiooKSIpKTsKIH0K
IAogVEVTVF9GKFVSTFRlc3QsIEhvc3RJc0lQQWRkcmVzcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKaW5kZXggM2UxMDU5MmEwM2QwYWIwMWUy
YzE2NmE0NTNlYWFlZWMxZmEwMzljMS4uMWM0ZGNkZDA1ZTIxZDdiNWZkN2FiN2RmZTg1ZDhmMDVj
MWFjOGE3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VS
TFBhcnNlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBh
cnNlci5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTEwMiw3ICsxMDIs
NyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3Qg
RXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZy
YWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFyc2Vy
OjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpV
UkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKIAogICAgIGlmICh0ZXN0
VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAgICAgIHJldHVybjsKQEAgLTEyOSw3ICsxMjksNyBA
QCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdt
ZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogICAgIAotICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNl
cjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOworICAgIEVYUEVDVF9UUlVFKFdURjo6
VVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CiAgICAgCiAgICAgaWYg
KHRlc3RUYWJzID09IFRlc3RUYWJzOjpObykKICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDcgKzE1
OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNO
ZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzTmV3LnN0cmluZywgdXJsLnN0cmluZygpKSk7CiAgICAgCi0gICAgRVhQRUNUX1RS
VUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CisgICAgRVhQRUNU
X1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKICAg
ICAKICAgICBpZiAodGVzdFRhYnMgPT0gVGVzdFRhYnM6Ok5vKQogICAgICAgICByZXR1cm47CkBA
IC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2Vz
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGIKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHNOZXcuc3RyaW5nLCB1cmwuc3RyaW5nKCkpKTsKICAgICAKLSAg
ICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsK
KyAgICBFWFBFQ1RfVFJVRShXVEY6OlVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50
KHVybCkpOwogICAgIAogICAgIGlmICh0ZXN0VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAgICAg
IHJldHVybjsKQEAgLTIxMyw4ICsyMTMsNyBAQCBzdGF0aWMgdm9pZCBzaG91bGRGYWlsKGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VTdHJpbmcpCiAKIHN0YXRpYyB2
b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2Rpbmcq
IGVuY29kaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRhYnMgdGVzdFRhYnMg
PSBUZXN0VGFiczo6WWVzKQogewotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsU3RyaW5nLCB7IH0s
IGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBhdXRvIHVy
bCA9IFVSTCh7IH0sIHVybFN0cmluZywgZW5jb2RpbmcpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwg
dXJsLnBhc3MoKSkpOwpAQCAtMjM4LDkgKzIzNyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25z
CiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcsIGNvbnN0
IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGFicyB0ZXN0VGFicyA9IFRlc3RUYWJzOjpZZXMp
CiB7Ci0gICAgVVJMUGFyc2VyIGJhc2VQYXJzZXIoYmFzZVVSTFN0cmluZywgeyB9LCBlbmNvZGlu
Zyk7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxTdHJpbmcsIGJhc2VQYXJzZXIucmVzdWx0KCks
IGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICBhdXRvIHVy
bCA9IFVSTChVUkwoeyB9LCBiYXNlVVJMU3RyaW5nKSwgdXJsU3RyaW5nLCBlbmNvZGluZyk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVybC5wcm90b2NvbCgpKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCmluZGV4IDRjODAzMmI5
MzZjZmUzYTU5MWYyMDJlZjBlMGVhMWRmMGVmN2Q3YjcuLjBjNWU2Mzc3OWJhN2UwMWZhNjg5Yjcw
OWQzYWY3ZmU1MThmNzAwNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0yNSw4ICsyNSw4IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VyQWdlbnQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDc2YjEwMzU3NWNh
NDI1Y2UzZmU1OGRhMzEzNmIwZWVjMGQ2ZDNmMWUuLjMwMGIxM2NiY2ExMGMyMWIzMDdlZWUzMTE0
ZGUwMGZiZjBmZTAyZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC0yNCw5ICsy
NCw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tCmluZGV4IDZmZmQ3ZGFjYjNmYzAyMTJhNDA0ZDg1NmIz
MThjOTM2OWY4OWZlOTYuLmI2NDBiMTBiZmYyZjAxOWI3MjcyNDNhN2M2MDA4NTFhZGFmZDc1ZTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxF
eHRyYXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1VS
TEV4dHJhcy5tbQpAQCAtMjUsOCArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKQEAgLTUwLDE3ICs1MCwx
NyBAQCBzdGF0aWMgY29uc3QgY2hhciogZGF0YUFzU3RyaW5nKE5TRGF0YSAqZGF0YSkKIAogc3Rh
dGljIGNvbnN0IGNoYXIqIG9yaWdpbmFsRGF0YUFzU3RyaW5nKE5TVVJMICpVUkwpCiB7Ci0gICAg
cmV0dXJuIGRhdGFBc1N0cmluZyhXZWJDb3JlOjpvcmlnaW5hbFVSTERhdGEoVVJMKSk7CisgICAg
cmV0dXJuIGRhdGFBc1N0cmluZyhXVEY6Om9yaWdpbmFsVVJMRGF0YShVUkwpKTsKIH0KIAogc3Rh
dGljIGNvbnN0IGNoYXIqIHVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCiB7Ci0gICAgcmV0
dXJuIFtXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyhVUkwpIFVURjhTdHJpbmddOworICAgIHJl
dHVybiBbV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhVUkwpIFVURjhTdHJpbmddOwogfQogCiBzdGF0
aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29uc3QgY2hhciogbGl0ZXJhbCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6VVJMV2l0aERhdGEobGl0ZXJhbEFzRGF0YShsaXRlcmFsKSwgbmlsKTsKKyAgICBy
ZXR1cm4gV1RGOjpVUkxXaXRoRGF0YShsaXRlcmFsQXNEYXRhKGxpdGVyYWwpLCBuaWwpOwogfQog
CiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhcykKQEAgLTEyNyw4ICsxMjcsOCBAQCBURVNUKFdlYkNv
cmUsIFVSTEV4dHJhc19EaXZpc2lvblNpZ24pCiAgICAgLy8gU2VsZWN0ZWQgdGhlIGRpdmlzaW9u
IHNpZ24gYXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1BU0NJSSBjaGFyYWN0ZXIgdGhhdCBpcyBhbGxv
d2VkIGluIGhvc3QgbmFtZXMsIHNpbmNlIGl0J3MgYSBsb29rYWxpa2UgY2hhcmFjdGVyLgogCiAg
ICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1c2VkIHdoZW4gdHlwaW5nIGluIGEg
VVJMLgotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUueG4tLWNvbW90aGVyc2l0ZS1ramIu
b3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmlu
ZyhAImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAgICBF
WFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIHVzZXJW
aXNpYmxlU3RyaW5nKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0
ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJo
dHRwOi8vc2l0ZS54bi0tY29tb3RoZXJzaXRlLWtqYi5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmlu
ZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290
aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21c
eEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwp
KSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJM
cyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEo
Imh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3Ry
aW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpKSk7
CkBAIC0xMzcsMTcgKzEzNywxNyBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19EaXZpc2lvblNp
Z24pCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5v
cmciLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb20lQzMlQjdv
dGhlcnNpdGUub3JnIikpKTsKIAogICAgIC8vIFNlcGFyYXRlIGZ1bmN0aW9ucyB0aGF0IGRlYWwg
d2l0aCBqdXN0IGEgaG9zdCBuYW1lIG9uIGl0cyBvd24uCi0gICAgRVhQRUNUX1NUUkVRKCJzaXRl
LnhuLS1jb21vdGhlcnNpdGUta2piLm9yZyIsIFtXZWJDb3JlOjplbmNvZGVIb3N0TmFtZShAInNp
dGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwotICAgIEVYUEVDVF9T
VFJFUSgic2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZGVjb2RlSG9z
dE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoInNpdGUueG4tLWNvbW90aGVyc2l0ZS1ramIub3JnIiwgW1dURjo6ZW5j
b2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmdd
KTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgW1dU
Rjo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVURjhT
dHJpbmddKTsKIH0KIAotVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfU29saWR1cykKK1RFU1QoV1RG
LCBVUkxFeHRyYXNfU29saWR1cykKIHsKICAgICAvLyBTZWxlY3RlZCBmdWxsIHdpZHRoIHNvbGlk
dXMsIHdoaWNoIGxvb2tzIGxpa2UgdGhlIHNvbGlkdXMsIHdoaWNoIGlzIHRoZSBjaGFyYWN0ZXIg
dGhhdCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgaG9zdCBuYW1lLgogCiAgICAgLy8gQ29kZSBw
YXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1c2VkIHdoZW4gdHlwaW5nIGluIGEgVVJMLgotICAgIEVY
UEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tL290aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFB
c1N0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29t
XHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0
dHA6Ly9zaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmcoV2ViQ29yZTo6
VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVy
c2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20vb3Ro
ZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0
cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7
CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIHVzZXJW
aXNpYmxlU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNv
bVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhz
IHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBI
VFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJD
XHg4Rm90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRw
Oi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikpKTsKQEAgLTE1Niw4ICsxNTYs
OCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19Tb2xpZHVzKQogICAgIEVYUEVDVF9TVFJFUSgi
aHR0cDovL3NpdGUuY29tJUVGJUJDJThGb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5n
KGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVFRiVCQyU4Rm90aGVyc2l0ZS5vcmciKSkpOwog
CiAgICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5h
bWUgb24gaXRzIG93bi4KLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tL290aGVyc2l0ZS5vcmci
LCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0
ZS5vcmciKSBVVEY4U3RyaW5nXSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbS9vdGhlcnNp
dGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZv
dGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb20v
b3RoZXJzaXRlLm9yZyIsIFtXVEY6OmVuY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4
OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5j
b20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmRlY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhC
Q1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwogfQogCiBURVNUKFdlYkNvcmUsIFVS
TEV4dHJhc19TcGFjZSkKQEAgLTE2NSw4ICsxNjUsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJh
c19TcGFjZSkKICAgICAvLyBTZWxlY3RlZCBpZGVvZ3JhcGhpYyBzcGFjZSwgd2hpY2ggbG9va3Mg
bGlrZSB0aGUgQVNDSUkgc3BhY2UsIHdoaWNoIGlzIG5vdCBhbGxvd2VkIHVuZXNjYXBlZC4KIAog
ICAgIC8vIENvZGUgcGF0aCBzaW1pbGFyIHRvIHRoZSBvbmUgdXNlZCB3aGVuIHR5cGluZyBpbiBh
IFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmci
LCBvcmlnaW5hbERhdGFBc1N0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAi
aHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKLSAgICBF
WFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJs
ZVN0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29t
XHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0
dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXVEY6
OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhl
cnNpdGUub3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJTIw
b3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0
cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBuaWwpKSk7
CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBm
b3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEoImh0
dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0
cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3Jn
IikpKTsKQEAgLTE3NSwzMSArMTc1LDMxIEBAIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX1NwYWNl
KQogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJUUzJTgwJTgwb3RoZXJzaXRlLm9y
ZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVFMyU4MCU4
MG90aGVyc2l0ZS5vcmciKSkpOwogCiAgICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25zIHRoYXQgZGVh
bCB3aXRoIGp1c3QgYSBob3N0IG5hbWUgb24gaXRzIG93bi4KLSAgICBFWFBFQ1RfU1RSRVEoInNp
dGUuY29tIG90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNv
bVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7Ci0gICAgRVhQRUNUX1NU
UkVRKCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZGVjb2Rl
SG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5n
XSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbSBvdGhlcnNpdGUub3JnIiwgW1dURjo6ZW5j
b2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3Ry
aW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5v
cmciLCBbV1RGOjpkZWNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRl
Lm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAogVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfRmlsZSkK
IHsKLSAgICBFWFBFQ1RfU1RSRVEoImZpbGU6Ly8vJUUyJTk4JTgzIiwgW1tXZWJDb3JlOjpVUkxX
aXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTovLy/imIMiLCBuaWwpIGFic29sdXRlU3RyaW5nXSBV
VEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJmaWxlOi8vLyVFMiU5OCU4MyIsIFtbV1RG
OjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTovLy/imIMiLCBuaWwpIGFic29sdXRlU3Ry
aW5nXSBVVEY4U3RyaW5nXSk7CiB9CiAKIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX1BhcnNpbmdF
cnJvcikKIHsKICAgICAvLyBFeHBlY3QgSUROIGZhaWx1cmUuCi0gICAgTlNVUkwgKnVybCA9IFdl
YkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v76O/LmNvbSIsIG5pbCk7Cisg
ICAgTlNVUkwgKnVybCA9IFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly/vo78u
Y29tIiwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwgPT0gbmlsKTsKIAotICAgIE5TU3RyaW5n
ICplbmNvZGVkSG9zdE5hbWUgPSBXZWJDb3JlOjplbmNvZGVIb3N0TmFtZShAImh0dHA6Ly/vo78u
Y29tIik7CisgICAgTlNTdHJpbmcgKmVuY29kZWRIb3N0TmFtZSA9IFdURjo6ZW5jb2RlSG9zdE5h
bWUoQCJodHRwOi8v76O/LmNvbSIpOwogICAgIEVYUEVDVF9UUlVFKGVuY29kZWRIb3N0TmFtZSA9
PSBuaWwpOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19OaWwpCiB7Ci0gICAgTlNVUkwg
KnVybDEgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKG5pbCwgbmlsKTsKKyAgICBO
U1VSTCAqdXJsMSA9IFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhuaWwsIG5pbCk7CiAgICAg
RVhQRUNUX1RSVUUodXJsMSA9PSBuaWwpOwogCi0gICAgTlNVUkwgKnVybDIgPSBXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChuaWwsIG5pbCk7CisgICAgTlNVUkwgKnVy
bDIgPSBXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKG5pbCwgbmlsKTsKICAg
ICBFWFBFQ1RfVFJVRSh1cmwyID09IG5pbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRBbHRlcm5hdGVIVE1MU3Ry
aW5nLm1tCmluZGV4IDUwNWFmMzU3ZTVkMTAxZDE3NmI1MjNkMTU1YTYyOTRiYmU4ZjdmZGYuLjkw
ZDQ2MTBjNzQxMDk5ZmFlNGE2MGJlOTc3NjVjYzNkN2IwZWNkNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkQWx0ZXJu
YXRlSFRNTFN0cmluZy5tbQpAQCAtMzAsOSArMzAsOSBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNV
UkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAog
c3RhdGljIGJvb2wgaXNEb25lOwogc3RhdGljIGludCBwcm92aXNpb25hbExvYWRDb3VudDsKQEAg
LTExMCw3ICsxMTAsNyBAQCBURVNUKFdLV2ViVmlldywgTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdG
cm9tUHJvdmlzaW9uYWxMb2FkRXJyb3JCYWNrVG9CYWNrKQogICAgICAgICBbd2ViVmlldyBzZXRO
YXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgICAgIGNoYXIgbGl0ZXJh
bFtdID0gImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tPD4vIjsKLSAgICAgICAgTlNVUkwqIHRhcmdl
dFVSTCA9IFdlYkNvcmU6OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRlcmFs
IGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBuaWwpOworICAgICAgICBOU1VSTCogdGFyZ2V0VVJM
ID0gV1RGOjpVUkxXaXRoRGF0YShbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bGl0ZXJhbCBsZW5ndGg6
c3RybGVuKGxpdGVyYWwpXSwgbmlsKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0YXJnZXRVUkxdXTsKICAgICAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0YXJnZXRVUkxdXTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52
YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQppbmRleCBhYzk4YzE5NjQ0MGFiN2I1NTA4NGM5NWQ3
OGQwOWZlN2ZjNzk3ZTNjLi5lYWE1NWNhYzY3ZjhlODQ0MTQzMjdkNGRhZTMyNjA5NjQ1ZDk1YmFj
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJ
bnZhbGlkVVJMUmVxdWVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQpAQCAtMjgsMTAgKzI4LDEwIEBACiAjaWYg
V0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0
aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIHN0YXRp
YyBib29sIGRpZEZpbmlzaFRlc3Q7CiBzdGF0aWMgYm9vbCBkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
OwpAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgY29uc3QgY2hhciBsaXRlcmFsW10gPSAiaHR0cHM6
Ly93d3cuZXhhbXBsZS5jb208Pi8iOwogCiBzdGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29uc3Qg
Y2hhciogbGl0ZXJhbCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEoW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7Cisg
ICAgcmV0dXJuIFdURjo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwg
bGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CiB9CiAKIEBpbnRlcmZhY2UgTG9hZEludmFs
aWRVUkxOYXZpZ2F0aW9uQWN0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGU+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdENvb2tpZU1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAppbmRleCBiMDUxNDUyNGY3MjU5MWY2Y2I1MDI5MTEw
MzFiN2JmYThhM2FmYTA3Li4xYmFhZTk1YWMwNjIzMWZiZmIyOWE4YmExNDE4Nzc3MmI1YWYzYWQx
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENv
b2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0Q29va2llTWFuYWdlci5jcHAKQEAgLTIyLDggKzIyLDggQEAKIAogI2luY2x1ZGUgIldl
YktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgorI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVy
KiBrU2VydmVyOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9M
b2FkSW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9M
b2FkSW52YWxpZFVSTFJlcXVlc3QubW0KaW5kZXggOGQ1NGNhNmUxOWUwZDY5OTYyYTVmMTUzMjM1
NDJhZWYyMDM1NzVkMS4uODZiN2IzYzRhOTk4NjMwZDI4NWU1MTc5NWZjOGFkNjk4MWNmYzkyNyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRVUkxS
ZXF1ZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlk
VVJMUmVxdWVzdC5tbQpAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVO
U1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvblByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBzdGF0aWMgYm9vbCBkaWRGaW5pc2hU
ZXN0Owogc3RhdGljIGJvb2wgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZDsKQEAgLTUxLDcgKzUxLDcg
QEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZhaWxQcm92aXNpb25hbExv
YWRXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgV2Vi
S2l0RXJyb3JDYW5ub3RTaG93VVJMKTsKIAogICAgIHN0YXRpYyBjaGFyIGxpdGVyYWxbXSA9ICJo
dHRwczovL3d3dy5leGFtcGxlLmNvbSQvIjsKLSAgICBOU1VSTCAqZmFpbGVkVVJMID0gV2ViQ29y
ZTo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxl
bihsaXRlcmFsKV0sIG5pbCk7CisgICAgTlNVUkwgKmZhaWxlZFVSTCA9IFdURjo6VVJMV2l0aERh
dGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0s
IG5pbCk7CiAgICAgRVhQRUNUX1RSVUUoW2Vycm9yLnVzZXJJbmZvW0AiTlNFcnJvckZhaWxpbmdV
UkxLZXkiXSBpc0VxdWFsOmZhaWxlZFVSTF0pOwogCiAgICAgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xL
ZXlHZW5lcmF0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5l
cmF0b3IubW0KaW5kZXggZGRlOGM3ZDAxZGE2NzgwNDE5NWM3ZjQxZTI5MTFhNzg5YzcwMmM1Mi4u
YWMxYmY3ZGI2Yzk4YjAyZDI1NTI2NTk3MmJjMjk5ZGEwYzk4N2VkZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5R2VuZXJhdG9yLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NTTEtleUdlbmVyYXRvci5tbQpAQCAtMjksOSArMjks
OSBAQAogI2ltcG9ydCA8U2VjdXJpdHkvU2VjQXNuMVRlbXBsYXRlcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdlbmVyYXRv
ci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0
Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgog
CkBAIC02OSw3ICs2OSw3IEBAIGNvbnN0IFNlY0FzbjFUZW1wbGF0ZSBzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VUZW1wbGF0ZVtdIHsKICAgICB7IDAsIDAsIDAsIDAgfQogfTsKIAotY29uc3Qg
V2ViQ29yZTo6VVJMIHVybCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgImh0dHA6Ly93
d3cud2Via2l0Lm9yZy8iKTsKK2NvbnN0IFVSTCB1cmwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3
LndlYmtpdC5vcmcvIik7CiAKIGNsYXNzIFNTTEtleUdlbmVyYXRvclRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dp
bi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0
Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5kZXggOGY3NTVjMzJjOGMyZTJlMGQzNzlkM2U1ZjA3Y2M2
YjliZGNjMTg2NS4uMDU2YmZmNzc4Mjk1MjhiMTI5MGYxMmUzOWFiMjM4YjBmNjg2OGI4NiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcApA
QCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8U2hsd2FwaS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC01Miw3ICs1Miw3IEBAIFdLU3RyaW5nUmVmIGNy
ZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpCiBXS1VSTFJlZiBjcmVhdGVVUkxGb3JSZXNvdXJjZShj
b25zdCBjaGFyKiByZXNvdXJjZSwgY29uc3QgY2hhciogZXh0ZW5zaW9uKQogewogICAgIFN0cmlu
ZyBmaWxlbmFtZSA9IFN0cmluZzo6Zm9ybWF0KCIuLlxcLi5cXC4uXFxUb29sc1xcVGVzdFdlYktp
dEFQSVxcVGVzdHNcXFdlYktpdFxcJXMuJXMiLCByZXNvdXJjZSwgZXh0ZW5zaW9uKTsKLSAgICBh
dXRvIHVybCA9IFdlYkNvcmU6OlVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCks
IGZpbGVuYW1lKSk7CisgICAgYXV0byB1cmwgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGgoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURp
cmVjdG9yeSgpLCBmaWxlbmFtZSkpOwogICAgIHJldHVybiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0
cmluZyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L2xsZGIvbGxkYl93ZWJraXQucHkgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0LnB5CmluZGV4IDMw
OGFjZGVjOWQzNjgzMmE4MWE0ZjMyNTJkMmU0NGVmYmQyMThmYTUuLjllYTg0MDk3NWUyZTFiZjVi
YjQ4YjMwZTI4ZDQ2ZTlkNmY4MDI5ZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2xsZGIvbGxkYl93ZWJr
aXQucHkKKysrIGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdC5weQpAQCAtNDYsNyArNDYsNyBAQCBk
ZWYgX19sbGRiX2luaXRfbW9kdWxlKGRlYnVnZ2VyLCBkaWN0KToKICAgICBkZWJ1Z2dlci5IYW5k
bGVDb21tYW5kKCd0eXBlIHN1bW1hcnkgYWRkIC0tZXhwYW5kIC1GIGxsZGJfd2Via2l0LldURk1l
ZGlhVGltZV9TdW1tYXJ5UHJvdmlkZXIgV1RGOjpNZWRpYVRpbWUnKQogICAgIGRlYnVnZ2VyLkhh
bmRsZUNvbW1hbmQoJ3R5cGUgc3VtbWFyeSBhZGQgLS1leHBhbmQgLUYgbGxkYl93ZWJraXQuV1RG
T3B0aW9uU2V0X1N1bW1hcnlQcm92aWRlciAteCAiXldURjo6T3B0aW9uU2V0PC4rPiQiJykKIAot
ICAgIGRlYnVnZ2VyLkhhbmRsZUNvbW1hbmQoJ3R5cGUgc3VtbWFyeSBhZGQgLUYgbGxkYl93ZWJr
aXQuV2ViQ29yZVVSTF9TdW1tYXJ5UHJvdmlkZXIgV2ViQ29yZTo6VVJMJykKKyAgICBkZWJ1Z2dl
ci5IYW5kbGVDb21tYW5kKCd0eXBlIHN1bW1hcnkgYWRkIC1GIGxsZGJfd2Via2l0LldURlVSTF9T
dW1tYXJ5UHJvdmlkZXIgV1RGOjpVUkwnKQogICAgIGRlYnVnZ2VyLkhhbmRsZUNvbW1hbmQoJ3R5
cGUgc3VtbWFyeSBhZGQgLUYgbGxkYl93ZWJraXQuV2ViQ29yZUNvbG9yX1N1bW1hcnlQcm92aWRl
ciBXZWJDb3JlOjpDb2xvcicpCiAKICAgICBkZWJ1Z2dlci5IYW5kbGVDb21tYW5kKCd0eXBlIHN1
bW1hcnkgYWRkIC1GIGxsZGJfd2Via2l0LldlYkNvcmVMYXlvdXRVbml0X1N1bW1hcnlQcm92aWRl
ciBXZWJDb3JlOjpMYXlvdXRVbml0JykKQEAgLTEzNCw4ICsxMzQsOCBAQCBkZWYgV2ViQ29yZUNv
bG9yX1N1bW1hcnlQcm92aWRlcih2YWxvYmosIGRpY3QpOgogICAgIHJldHVybiAieyAlcyB9IiAl
IHByb3ZpZGVyLnRvX3N0cmluZygpCiAKIAotZGVmIFdlYkNvcmVVUkxfU3VtbWFyeVByb3ZpZGVy
KHZhbG9iaiwgZGljdCk6Ci0gICAgcHJvdmlkZXIgPSBXZWJDb3JlVVJMUHJvdmlkZXIodmFsb2Jq
LCBkaWN0KQorZGVmIFdURlVSTF9TdW1tYXJ5UHJvdmlkZXIodmFsb2JqLCBkaWN0KToKKyAgICBw
cm92aWRlciA9IFdURlVSTFByb3ZpZGVyKHZhbG9iaiwgZGljdCkKICAgICByZXR1cm4gInsgJXMg
fSIgJSBwcm92aWRlci50b19zdHJpbmcoKQogCiAKQEAgLTU3Miw4ICs1NzIsOCBAQCBkZWYgZ2V0
X2hlaWdodChzZWxmKToKICAgICAgICAgcmV0dXJuIFdlYkNvcmVGbG9hdFNpemVQcm92aWRlcihz
ZWxmLnZhbG9iai5HZXRDaGlsZE1lbWJlcldpdGhOYW1lKCdtX3NpemUnKSwgZGljdCkuZ2V0X2hl
aWdodCgpCiAKIAotY2xhc3MgV2ViQ29yZVVSTFByb3ZpZGVyOgotICAgICJQcmludCBhIFdlYkNv
cmU6OlVSTCIKK2NsYXNzIFdURlVSTFByb3ZpZGVyOgorICAgICJQcmludCBhIFdURjo6VVJMIgog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWxvYmosIGRpY3QpOgogICAgICAgICBzZWxmLnZhbG9i
aiA9IHZhbG9iagogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356258</attachid>
            <date>2018-11-30 16:16:35 -0800</date>
            <delta_ts>2018-11-30 17:35:15 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-190234-20181130161634.patch</filename>
            <type>text/plain</type>
            <size>1314270</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwZTZkMzI3YzcxODJlYThkOTYyNjhm
YzJhZjQ3M2RkMjk1MjI1MWIuLjRhZjI1MmJhNTg5NmVlYTYxMjdkMGUzMTZjOTI4OTI3MGY1YjQy
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTgtMTEtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUg
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAg
ICAgICAgKiB3dGYvVVJMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgICogd3Rm
L1VSTC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmguCisgICAg
ICAgICogd3RmL1VSTEhhc2guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTEhhc2guaC4KKyAgICAgICAgKFdURjo6VVJMSGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6
OlVSTEhhc2g6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvVVJMUGFyc2VyLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAuCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KToKKyAgICAgICAgKFdURjo6VVJMUGFy
c2VyOjpwYXJzZUF1dGhvcml0eSk6CisgICAgICAgICogd3RmL1VSTFBhcnNlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmguCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpyZXN1bHQp
OgorICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4dHJhcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAuCisgICAgICAgICogd3RmL2NmL0NG
VVJMRXh0cmFzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVS
TEV4dHJhcy5oLgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAuCisgICAgICAgICogd3RmL2NvY29hL05T
VVJMRXh0cmFzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRy
YXMubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0uCisgICAgICAgIChXVEY6OmlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIp
OgorICAgICAgICAoV1RGOjppc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdU
Rjo6aXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjppc0xv
b2thbGlrZUNoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OndoaXRlTGlzdElETlNjcmlwdCk6Cisg
ICAgICAgIChXVEY6OnJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKToKKyAgICAgICAgKFdURjo6
YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KToKKyAgICAgICAgKFdURjo6aXNTZWNv
bmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyk6CisgICAgICAgIChXVEY6OmlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjphbGxDaGFyYWN0ZXJzQWxs
b3dlZEJ5VExEUnVsZXMpOgorICAgICAgICAoV1RGOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6Cisg
ICAgICAgIChXVEY6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChX
VEY6Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChXVEY6OmRlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKToKKyAgICAgICAgKFdURjo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFu
Z2UpOgorICAgICAgICAoV1RGOjpkZWNvZGVIb3N0TmFtZSk6CisgICAgICAgIChXVEY6OmVuY29k
ZUhvc3ROYW1lKToKKyAgICAgICAgKFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyk6
CisgICAgICAgIChXVEY6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKToKKyAgICAgICAg
KFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcpOgorICAgICAgICAoV1RGOjphcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6CisgICAgICAgIChXVEY6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKToKKyAgICAgICAgKFdURjo6bWFwSG9zdE5hbWVz
KToKKyAgICAgICAgKFdURjo6c3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOgorICAgICAgICAo
V1RGOjpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOgorICAgICAg
ICAoV1RGOjpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIpOgorICAgICAgICAoV1RGOjpV
UkxXaXRoRGF0YSk6CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKToKKyAg
ICAgICAgKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyk6CisgICAgICAgIChXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKToKKyAgICAgICAgKFdURjo6aGFzUXVlc3Rpb25N
YXJrT25seVF1ZXJ5U3RyaW5nKToKKyAgICAgICAgKFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5
cGUpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENo
YXJhY3Rlcik6CisgICAgICAgIChXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6CisgICAgICAg
IChXVEY6Om9yaWdpbmFsVVJMRGF0YSk6CisgICAgICAgIChXVEY6OmNyZWF0ZVN0cmluZ1dpdGhF
c2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KToKKyAgICAgICAgKFdURjo6aXNVc2VyVmlzaWJsZVVSTCk6CisgICAgICAgIChXVEY6OnJhbmdl
T2ZVUkxTY2hlbWUpOgorICAgICAgICAoV1RGOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6CisgICAg
ICAgICogd3RmL2NvY29hL1VSTENvY29hLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VSTE1hYy5tbS4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOgorICAgICAg
ICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2xpYi9HVW5p
cXVlUHRyU291cC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0dVbmlxdWVQdHJTb3VwLmguCisgICAgICAgICogd3RmL2dsaWIvVVJMU291cC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwLgor
CiAyMDE4LTExLTMwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vdmUgVVNFX0NGTkVUV09SS19JR05PUkVfSFNUUyB0byBpdHMgcHJvcGVyIHBsYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMWU3ZmQ2YTk2NTMwOTc0N2E5MmUxNTU3ZGMzODRlNzEzYzVmOGY3OS4uODU3
NzkxZTVmZjM2NzBmMzczMTM5NGFmNmYwN2MwZGY5NGRmODJjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU1NyBAQAorMjAxOC0xMS0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgVVJMIGlzIGEgbG93
LWxldmVsIGNvbmNlcHQgdGhhdCBkb2VzIG5vdCBkZXBlbmQgb24gb3RoZXIgY2xhc3NlcyBpbiBX
ZWJDb3JlLgorICAgICAgICBXZSBhcmUgc3RhcnRpbmcgdG8gdXNlIFVSTHMgaW4gSmF2YVNjcmlw
dENvcmUgZm9yIG1vZHVsZXMuCisgICAgICAgIEkgbmVlZCBVUkwgYW5kIFVSTFBhcnNlciBpbiBh
IHBsYWNlIHdpdGggZmV3ZXIgZGVwZW5kZW5jaWVzIGZvciByZGFyOi8vcHJvYmxlbS80NDExOTY5
NgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmg6CisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHA6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL25hdmlnYXRv
cmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oOgorICAgICAgICAqIE1vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL3Bs
dWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Lmg6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4u
Y21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFj
ZU5hbWUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2Uu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlr
ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURP
TU9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGguY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEdldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRp
b25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbkltcGxlbWVudGVkQXMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQ
aW5nTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6YXBwbHlCbG9j
a2VkU3RhdHVzVG9SZXF1ZXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoK
KyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29u
dGVudHMuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHRIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6
SGFzaFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0Pjo6Y29uc3RydWN0RGVsZXRlZFZh
bHVlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOgorICAgICAgICAq
IGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpz
ZXREYXRhRnJvbUl0ZW1MaXN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cHJvY2Vzc0h0dHBFcXVpdik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29tcGxl
dGVVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZVRlbXBsYXRl
RG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnVybEZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc0phdmFTY3JpcHRVUkxBdHRyaWJ1dGUg
Y29uc3QpOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VyQ29udGV4dEZvckVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmJhc2VVUkkgY29uc3QpOgorICAgICAgICAq
IGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBk
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRl
eHQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnBhc3RlYm9hcmRXcml0ZXJVUkwpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6
CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUpOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVzZXJW
aXNpYmxlU3RyaW5nKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2
ZSk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpwbGFpblRleHRGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21NYXJrdXApOgorICAgICAgICAq
IGVkaXRpbmcvbWFya3VwLmg6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3Bw
OgorICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmg6CisgICAgICAgICogZmlsZWFw
aS9CbG9iLmg6CisgICAgICAgICogZmlsZWFwaS9CbG9iVVJMLmNwcDoKKyAgICAgICAgKiBmaWxl
YXBpL0Jsb2JVUkwuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKiBmaWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuaDoKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmg6CisgICAgICAgICog
aGlzdG9yeS9IaXN0b3J5SXRlbS5oOgorICAgICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVVSTDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6YXJjaGl2ZVJlc291cmNlVVJMKToKKyAgICAgICAg
KiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
cmFtZUVsZW1lbnRCYXNlOjppc1VSTEFsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZyYW1lRWxlbWVudEJhc2U6Om9wZW5VUkwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZy
YW1lRWxlbWVudEJhc2U6OnNldExvY2F0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFVSTD46
OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6VVJMPjo6dG9T
dHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjphbGxvd2VkVG9M
b2FkRnJhbWVVUkwpOgorICAgICAgICAqIGh0bWwvSW1hZ2VCaXRtYXAuaDoKKyAgICAgICAgKiBo
dG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1h
bmFnZXIuY3BwOgorICAgICAgICAqIGh0bWwvUHVibGljVVJMTWFuYWdlci5oOgorICAgICAgICAq
IGh0bWwvVVJMSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1sL1VSTFJlZ2lzdHJ5Lmg6Cisg
ICAgICAgICogaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJM
U2VhcmNoUGFyYW1zOjpVUkxTZWFyY2hQYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6VVJMU2Vh
cmNoUGFyYW1zOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxTZWFyY2hQ
YXJhbXM6OnVwZGF0ZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxTZWFyY2hQYXJhbXM6OnVw
ZGF0ZUZyb21Bc3NvY2lhdGVkVVJMKToKKyAgICAgICAgKiBodG1sL1VSTFV0aWxzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpVUkxVdGlsczxUPjo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpV
UkxVdGlsczxUPjo6c2V0UG9ydCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2Vt
aWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyU2NyaXB0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
WFNTQXVkaXRvcjo6ZmlsdGVyT2JqZWN0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVk
aXRvcjo6ZmlsdGVyUGFyYW1Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpm
aWx0ZXJFbWJlZFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlckZv
cm1Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJJbnB1dFRva2Vu
KToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlckJ1dHRvblRva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlc0lmSW5q
ZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3Vy
Y2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaDoKKyAgICAgICAgKiBodG1s
L3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
SG9zdDo6b3BlbkluTmV3VGFiKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50Lmg6CisgICAg
ICAgICogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29va2llSmFyLmg6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5oOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmg6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXJ2ZXJSZWRpcmVj
dFNvdXJjZUZvckhpc3RvcnkgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5oOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0
Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6Y3VycmVu
dEl0ZW1TaG91bGRCZVJlcGxhY2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlD
b250cm9sbGVyOjppbml0aWFsaXplSXRlbSk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvTG9hZFRpbWluZy5oOgorICAgICAgICAqIGxvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1peGVkQ29udGVudENoZWNrZXI6OmNoZWNrRm9ybUZvck1peGVk
Q29udGVudCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24gY29uc3Qp
OgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmg6CisgICAgICAgICogbG9h
ZGVyL1BpbmdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9i
c2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZVRpbWluZy5oOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1l
KToKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
U3Vic3RpdHV0ZURhdGEuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9pY29uL0lj
b25Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tOgor
ICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9DbGllbnRPcmlnaW4uaDoK
KyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aXNJbnNlY3VyZVNjcmlw
dEFjY2Vzcyk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2Uv
SGlzdG9yeS5oOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYXRpb246OnVybCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cmVs
b2FkKToKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmg6CisgICAgICAgICogcGFnZS9QYWdlLmg6
CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvUGVyZm9y
bWFuY2UuaDoKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwOgor
ICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5IYXNoLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJv
bU93bmVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFn
ZS9TZXR0aW5nc0Jhc2UuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YS5oOgorICAgICAgICAq
IHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50UHJvdmlk
ZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6CisgICAgICAg
ICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaDoKKyAgICAgICAgKiBwYWdlL1VzZXJTY3Jp
cHQuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAgICogcGFnZS9W
aXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Lmg6
CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5o
OgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnBvcnRNYXRjaGVz
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Uu
aDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNw
cDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0Lmg6
CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVj
dGl2ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmg6CisgICAgICAgICogcGxh
dGZvcm0vQ29va2llLmg6CisgICAgICAgICogcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmg6CisgICAgICAgICogcGxhdGZv
cm0vTGlua0ljb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNhbkV4cG9zZVVSTFRvRE9NV2hlblBhc3RlYm9hcmRD
b250YWluc0ZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFz
dGVib2FyZFdyaXRlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZFdyaXRl
ckRhdGE6OnNldFVSTERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZFdyaXRlckRh
dGE6OnNldFVSTCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRl
ckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZv
cm0vU1NMS2V5R2VuZXJhdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OmlzQnVpbHRpblNjaGVtZSk6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
U2hhcmVkU3RyaW5nSGFzaC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFz
aC5oOgorICAgICAgICAqIHBsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9Vc2VyQWdlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NTTEtleUdlbmVyYXRvckdMaWIuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oLgorICAgICAgICAoV2ViQ29yZTo6
Z2V0U3VwcG9ydGVkS2V5U2l6ZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdM
aWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2Jz
ZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Vi
S2l0TWVkaWFTcmNTZXRVcmkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09W
VFRDdWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHREaXJlY3QyRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0Rh
dGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgICogcGxh
dGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzZXRNZXRhZGF0YVVSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QdWJs
aWNTdWZmaXhNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVIb3N0TmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXJtZW5pYW5Mb29rYWxp
a2VDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBcm1lbmlhblNjcmlw
dENoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0FTQ0lJRGlnaXRPclZh
bGlkSG9zdENoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0xvb2thbGlr
ZUNoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp3aGl0ZUxpc3RJRE5TY3Jp
cHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmVhZElETlNjcmlwdFdoaXRlTGlzdEZp
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0
V2hpdGVMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzU2Vjb25kTGV2ZWxEb21h
aW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNS
dXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjph
bGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6bWFwSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aG9z
dE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjplbmNvZGVIb3N0TmFtZVdpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpk
ZWNvZGVIb3N0TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplbmNvZGVIb3N0TmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBw
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVu
Y29kaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RSYW5nZXNUaGF0TmVl
ZERlY29kaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5SG9zdE5hbWVGdW5j
dGlvblRvTWFpbFRvVVJMU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om1hcEhvc3ROYW1lcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdCeVRyaW1t
aW5nV2hpdGVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxCeVRydW5jYXRp
bmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVSTFdpdGhEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRhdGFXaXRo
VXNlclR5cGVkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBl
ZFN0cmluZ0RlcHJlY2F0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aGFzUXVlc3Rp
b25NYXJrT25seVF1ZXJ5U3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRhdGFG
b3JVUkxDb21wb25lbnRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTEJ5UmVt
b3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpvcmlnaW5hbFVSTERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
U3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omlz
VXNlclZpc2libGVVUkwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmFuZ2VPZlVSTFNj
aGVtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9D
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3Jl
ZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVzdCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpjb29raWVzRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVK
YXJDdXJsRGF0YWJhc2U6OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphckN1cmxEYXRhYmFzZTo6c2V0Q29va2llc0Zyb21IVFRQUmVzcG9uc2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyQ3VybERhdGFiYXNlOjpjb29raWVzRm9y
RE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckN1cmxEYXRhYmFzZTo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llSmFyQ3VybERhdGFiYXNlOjpjb29raWVzRW5hYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb29raWVKYXJDdXJsRGF0YWJhc2U6OmdldFJhd0Nvb2tpZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29va2llSmFyQ3VybERhdGFiYXNlOjpkZWxldGVDb29raWUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyQ3VybERhdGFiYXNlOjpnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJDdXJsRGF0YWJhc2U6
OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llSmFyQ3VybERhdGFiYXNlOjpkZWxldGVBbGxDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb2tpZUphckN1cmxEYXRhYmFzZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9CU3Ry
aW5nLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQlN0cmluZy5oOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWFya3VwVG9DRkhUTUwpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICogcGx1Z2lucy9Q
bHVnaW5EYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0lt
YWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjpzb3VyY2VV
UkkgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZUNhY2hlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcp
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogdGVz
dGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5o
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlcklu
c3BlY3RvclByb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgor
ICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHhtbC9Y
TUxIdHRwUmVxdWVzdC5oOgorCiAyMDE4LTExLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgImF1dG8gZmlsbCIgd2l0aCAiQXV0b0Zp
bGwiIGluIHNvbWUgbG9jYWxpemFibGUgc3RyaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4YjBiYTExNGRkMjBk
MzFiOTgwMTczNzdjMmNiMGU5MGQxNDFmZDc0Li5iNWJlNzNhMjRiZTkxM2VjM2JiYTRkMjQxMDRh
YWRhNWRmZjQzZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzNCBAQAorMjAxOC0xMS0zMCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUg
VVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVz
c2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29h
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1h
bmFnZXI6OnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdE
b3dubG9hZDo6cHVibGlzaFByb2dyZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpw
dWJsaXNoUHJvZ3Jlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29y
a0Jsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JS
ZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxv
YlJlZ2lzdHJ5OjpibG9iU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0
cnk6OmZpbGVzSW5CbG9iKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpzZXRDb250ZW50RXh0
ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6
dXJsIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnB1Ymxpc2hEb3dubG9hZFByb2dyZXNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxvZ0Js
b2NrZWRDb29raWVJbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmxvZ0Nvb2tpZUluZm9y
bWF0aW9uSW50ZXJuYWwpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdp
bmU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdGF0aXN0aWNzOjpyZWNvcmRSZXRyaWV2
ZWRDYWNoZWRFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RhdGlzdGlj
czo6cmVjb3JkUmV2YWxpZGF0aW9uU3VjY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZUluZm86OmZpcnN0UGFydHlGb3JDb29raWVzIGNvbnN0
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6UmVxdWVzdDo6b3BlcmF0b3Ig
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhcHR1cmU6OlJlc3BvbnNlOjpvcGVyYXRvciBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6OkVycm9yOjpvcGVyYXRvciBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYXB0dXJlOjpNYW5hZ2VyOjpmaW5kQmVzdEZ1enp5TWF0Y2gpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FwdHVyZTo6TWFuYWdlcjo6ZnV6enlNYXRjaFVSTHMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FwdHVyZTo6TWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6OlJlc291cmNlOjp1cmwp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6UmVzb3VyY2U6OnF1ZXJ5UGFyYW1l
dGVycyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJl
c291cmNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRl
bGVnYXRlIFVSTFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW06
CisgICAgICAgIChXZWJLaXQ6Om9wZW5DRlVSTFJlZik6CisgICAgICAgIChXZWJLaXQ6OnJlcGxh
Y2VkTlNXb3Jrc3BhY2VfbGF1bmNoQXBwbGljYXRpb25BdFVSTF9vcHRpb25zX2NvbmZpZ3VyYXRp
b25fZXJyb3IpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVVJMLmg6CisgICAgICAgIChBUEk6
OlVSTDo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6VVJMOjplcXVhbHMpOgorICAgICAgICAoQVBJ
OjpVUkw6OlVSTCk6CisgICAgICAgIChBUEk6OlVSTDo6dXJsIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6VVJMOjpwYXJzZVVSTElmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oOgorICAgICAgICAoQVBJOjpVc2VyQ29udGVudFVS
TFBhdHRlcm46Om1hdGNoZXNVUkwgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1VS
TFJlcXVlc3QuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbToKKyAgICAgICAgKFdLVVJMQ3Jl
YXRlV2l0aENGVVJMKToKKyAgICAgICAgKFdLVVJMQ29weUNGVVJMKToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9n
bGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2
ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hp
dmVSZXNvdXJjZSk6CisgICAgICAgICogU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmg6
CisgICAgICAgICogU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW06CisgICAgICAgICgtW05T
VVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKToKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25TdGF0ZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9jdW1lbnQgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViRXJyb3JzLmg6CisgICAgICAgICogU2hh
cmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvY2YvQXJndW1l
bnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZSk6CisgICAgICAgIChJUEM6OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwOgorICAgICAgICAq
IFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmFwcGVu
ZFJlZGlyZWN0aW9uVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24u
aDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6dGFrZVJlZGlyZWN0Q2hhaW4pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9u
Q2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorICAgICAgICAoQVBJ
OjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24pOgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpyZXNvbHZlV2ViR0xMb2FkUG9saWN5IGNvbnN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJ
Q2xpZW50OjpzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwOgorICAgICAgICAoQVBJOjpVc2VyU2NyaXB0Ojpn
ZW5lcmF0ZVVuaXF1ZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHA6CisgICAg
ICAgIChBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKGZpbGVQYXRoc0Zy
b21GaWxlVVJMcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAg
ICAgIChXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VVSUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNs
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcDoKKyAgICAg
ICAgKFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV0tQYWdlR3JvdXBB
ZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTGFzdFNlZW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVn
aXN0ZXJlZEFzU3ViRnJhbWVVbmRlcik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9y
aWdpbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAg
ICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0VG8pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRU
UENvb2tpZVN0b3JlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2Ny
aXB0Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlv
blRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFz
c29jaWF0ZWRVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaG93U2FmZUJyb3dz
aW5nV2FybmluZzpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
aG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhUaXRsZTp3YXJuaW5nOmRldGFpbHM6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNj
aGVtZUhhbmRsZXI6Zm9yVVJMU2NoZW1lOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIHVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRp
b25NYW5pZmVzdCBpbml0V2l0aENvZGVyOl0pOgorICAgICAgICAoK1tfV0tBcHBsaWNhdGlvbk1h
bmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjptYW5pZmVzdFVSTDpkb2N1bWVudFVS
TDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1t
OgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJh
bWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YmFzZVVSTDp1c2VyQ29udGVu
dFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2llcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAg
KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3Bs
YWluX3RleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnNob3dQYXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2Eu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvbWFj
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OmRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6d2ViR0xMb2FkUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpyZXNvbHZlV2ViR0xMb2FkUG9saWN5IGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpj
b250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFBlcmZv
cm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nUmVzdWx0Q29jb2EubW06IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgu
CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5nUmVzdWx0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpyZXBvcnRBbkVycm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6
bWFsd2FyZURldGFpbHNVUkwpOgorICAgICAgICAoV2ViS2l0OjpzYWZlQnJvd3NpbmdEZXRhaWxz
VGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5pbmc6OlNhZmVCcm93c2lu
Z1dhcm5pbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJv
bGxlckNvY29hLm1tOgorICAgICAgICAoLVtfV0tQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2Ug
ZmluaXNoOl0pOgorICAgICAgICAoV2ViS2l0OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6Zmlu
aXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVn
YXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKToKKyAgICAgICAg
KFdlYktpdDo6cmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lv
bkZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJv
clJlY292ZXJ5QXR0ZW1wdGVyLm1tOgorICAgICAgICAoLVtXS1JlbG9hZEZyYW1lRXJyb3JSZWNv
dmVyeUF0dGVtcHRlciBhdHRlbXB0UmVjb3ZlcnldKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dL
U2FmZUJyb3dzaW5nV2FybmluZy5tbToKKyAgICAgICAgKC1bV0tTYWZlQnJvd3NpbmdXYXJuaW5n
IGluaXRXaXRoRnJhbWU6c2FmZUJyb3dzaW5nV2FybmluZzpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2hvd1NhZmVCcm93c2luZ1dhcm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
d3JpdGVUb1VSTEZvckZpbGVQcm9taXNlUHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJv
eHk6OnB1Ymxpc2hQcm9ncmVzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldFJlZGlyZWN0
Q2hhaW4pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpyZWRpcmVjdENoYWluIGNv
bnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVE
b2N1bWVudE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpz
ZXRVbnJlYWNoYWJsZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmg6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjp1cmwgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6c2V0VVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkU3RhdGU6OnByb3Zpc2lvbmFsVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkU3RhdGU6OnVucmVhY2hhYmxlVVJMIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OnNob3dTYWZlQnJvd3NpbmdXYXJu
aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6Omhhc09ubHlTZWN1cmVDb250ZW50KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL1NhZmVC
cm93c2luZ1Jlc3VsdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlci5oLgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1
bHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6dXJsIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nUmVzdWx0Ojpwcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6aXNQaGlzaGluZyBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6aXNNYWx3YXJlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nUmVzdWx0Ojppc1Vud2FudGVkU29mdHdh
cmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1bHQ6OmlzS25vd25U
b0JlVW5zYWZlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2FmZUJyb3dzaW5nV2Fybmlu
Zy5oOgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdXYXJuaW5nOjpjcmVhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5Ojp1cmwgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZVByb3h5Ojpwcm92aXNpb25hbFVSTCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lUHJveHk6OnVucmVhY2hhYmxlVVJMIGNvbnN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRo
TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0
ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRpbnVl
TmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VVJMU2NoZW1lSGFu
ZGxlckZvclNjaGVtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnRyeVByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5h
dGVPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzaG93
U2FmZUJyb3dzaW5nV2FybmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNo
ZWV0QXNzaXN0YW50Lm1tOgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IF9jcmVh
dGVTaGVldFdpdGhFbGVtZW50QWN0aW9uczpzaG93TGlua1RpdGxlOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6cmVjdDpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJGb3JQ
cmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0xlZ2FjeVBERlZpZXcubW06CisgICAgICAgICgtW1dLTGVnYWN5UERGVmlldyBhY3Rp
b25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoVVJMOnJlY3Q6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dLUERGVmlldyBhY3Rpb25T
aGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoVVJMOnJlY3Q6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06
CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgX3VwZGF0ZUxvY2F0aW9u
SW5mb10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5n
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZGVjb2RlTGVnYWN5U2Vzc2lvblN0YXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OnNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpzaG93UGF5bWVudFVJKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZU1lcmNoYW50KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBh
Z2VMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudEZvclVSTCBjb25zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcDoKKyAgICAgICAgKFdL
QnVuZGxlRnJhbWVBbGxvd3NGb2xsb3dpbmdMaW5rKToKKyAgICAgICAgKFdLQnVuZGxlRnJhbWVD
b3B5U3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwpOgorICAgICAgICAoV0tCdW5k
bGVGcmFtZUNvcHlNSU1FVHlwZUZvclJlc291cmNlV2l0aFVSTCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tC
dW5kbGVQYWdlSGFzTG9jYWxEYXRhRm9yVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwOgorICAgICAgICAo
Y29udmVydFRvVVRGOFN0cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFn
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0
VG8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTb2NrZXRTdHJlYW06OldlYlNvY2tldFN0cmVhbSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjbGlja2Vk
TGluayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwZXJmb3JtVVJM
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0
VVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Q
cm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2Vi
VmlzaWJsZVBsdWdpbkluZm8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVn
aW5JbmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNs
aWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nIGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hv
dWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5r
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmxvYWRVUkxJbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZERh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmR1bXBIaXN0b3J5Rm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRk
VXNlclN0eWxlU2hlZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFtZVVSTCBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnNlbmRQcmV3YXJtSW5mb3JtYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjphY3RpdmVQYWdlc09yaWdpbnMpOgorCiAyMDE4LTExLTMw
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgVVNF
X0NGTkVUV09SS19JR05PUkVfSFNUUyB0byBpdHMgcHJvcGVyIHBsYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCmluZGV4IDg3NzA3MjkyYzQ5Y2NkZGMzODk1MjgwMjRkYjljYjdlOWZkNGI5ZWIuLjI0ZDY2
YjhmYzkzY2M4ODk2OTY1MmUxZDMxMTc5ZDBkODY1NDM4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMTEtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUgdG8gV1RG
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisKIDIwMTgtMTEtMjYgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gUmVkdWNlIHRo
ZSB1c2Ugb2YgV0tTSSBsaWJyYXJ5IGNhbGxzOiBDb3JlQW5pbWF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNTBlMDFhZDliMDVmMDA0MDE0MzBiNWZkZTU4YWU0N2E4MDQ1NDgz
Yy4uOWFhMzIzNmYyNDFiMDVlZDNmNWEyZTJmODQzM2EwMGVlMjkzN2M1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxOC0xMS0zMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZy
b20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRE9NL0RPTUF0dHIubW06CisgICAgICAgICogRE9NL0RPTUJsb2IubW06Cisg
ICAgICAgICogRE9NL0RPTUNTU0NoYXJzZXRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NJ
bXBvcnRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NNZWRpYVJ1bGUubW06CisgICAgICAg
ICogRE9NL0RPTUNTU1BhZ2VSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NQcmltaXRpdmVW
YWx1ZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTUnVsZS5tbToKKyAgICAgICAgKiBET00vRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbi5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVSdWxlLm1t
OgorICAgICAgICAqIERPTS9ET01DU1NTdHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9ET01D
U1NWYWx1ZS5tbToKKyAgICAgICAgKiBET00vRE9NQ2hhcmFjdGVyRGF0YS5tbToKKyAgICAgICAg
KiBET00vRE9NQ291bnRlci5tbToKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3Vt
ZW50VHlwZS5tbToKKyAgICAgICAgKiBET00vRE9NRXZlbnQubW06CisgICAgICAgICogRE9NL0RP
TUZpbGUubW06CisgICAgICAgICogRE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEFy
ZWFFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQlJFbGVtZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01IVE1MQmFzZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCYXNl
Rm9udEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhU
TUxDYW52YXNFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQ29sbGVjdGlvbi5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTERpdkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhU
TUxEb2N1bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEVsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGaWVs
ZFNldEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
RnJhbWVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1t
OgorICAgICAgICAqIERPTS9ET01IVE1MSFJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MSGVhZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9E
T01IVE1MSUZyYW1lRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEltYWdlRWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTElucHV0RWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTExJRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTExhYmVsRWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxMaW5rRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1hcEVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTE1lZGlhRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1ldGFF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MTW9kRWxlbWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTE9MaXN0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9iamVj
dEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW06Cisg
ICAgICAgICogRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MT3B0aW9uc0NvbGxlY3Rpb24ubW06CisgICAgICAgICogRE9NL0RPTUhUTUxQYXJhZ3JhcGhF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MUGFyYW1FbGVtZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01IVE1MUXVvdGVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MU2Ny
aXB0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW06Cisg
ICAgICAgICogRE9NL0RPTUhUTUxTdHlsZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhU
TUxUYWJsZUNhcHRpb25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVDZWxs
RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRN
TFRhYmxlUm93RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxWaWRl
b0VsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUtleWJvYXJkRXZlbnQubW06CisgICAgICAg
ICogRE9NL0RPTU1lZGlhTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9NTW91c2VFdmVudC5tbToK
KyAgICAgICAgKiBET00vRE9NTXV0YXRpb25FdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTmFt
ZWROb2RlTWFwLm1tOgorICAgICAgICAqIERPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW06
CisgICAgICAgICogRE9NL0RPTVJhbmdlLm1tOgorICAgICAgICAqIERPTS9ET01TdHlsZVNoZWV0
Lm1tOgorICAgICAgICAqIERPTS9ET01UZXh0Lm1tOgorICAgICAgICAqIERPTS9ET01UZXh0RXZl
bnQubW06CisgICAgICAgICogRE9NL0RPTVRva2VuTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9N
VUlFdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NWFBhdGhSZXN1bHQubW06CisgICAgICAgICog
SGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFz
Lm1tOgorICAgICAgICAoLVtOU1VSTCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nXSk6CisgICAgICAg
ICgtW05TVVJMIF93ZWJfVVJMQnlSZW1vdmluZ1VzZXJJbmZvXSk6CisgICAgICAgICgtW05TVVJM
IF93ZWJfZGF0YUZvclVSTENvbXBvbmVudFR5cGU6XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJf
c2NoZW1lRGF0YV0pOgorICAgICAgICAoLVtOU1VSTCBfd2ViX2hvc3REYXRhXSk6CisgICAgICAg
ICogTWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW06CisgICAgICAgICogUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAqIFBsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpzZXRSZXF1ZXN0VVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06Cisg
ICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
ZyBjb25zdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQubW06CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JD
bGllbnQ6OnNob3dQYXltZW50VUkpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlk
ZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW06
CisgICAgICAgIChXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAg
ICAgICgtW1dlYkZyYW1lIF9sb2FkRGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VV
Ukw6dW5yZWFjaGFibGVVUkw6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
IF9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERG
Vmlldy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisKIDIwMTgtMTEtMjggIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgZGVhZCBj
b2RlIGZyb20gYW4gZWFybGllciBhdHRlbXB0IGF0IGltcGxlbWVudGluZyBzYWZlIGJyb3dzaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNzAyNDJiNDQ5OGZhMjA0YjdmNjU1ODJh
ZTg3OGRmYTNhMTNjNWM3MS4uNjY5NjNhMGMzYjdhZTVmMjI0MTM1MTllNDZkZmE3MGQyNzRmZWQz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE4LTEx
LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBlcnMuY3BwOgorICAgICAg
ICAqIE1hcnNoYWxsaW5nSGVscGVycy5oOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaDoKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblN0
cmVhbS5oOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHA6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYlBsdWdpbkluZm9Qcm92aWRl
cjo6d2ViVmlzaWJsZVBsdWdpbkluZm8pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkluZm9Qcm92aWRlci5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRM
aW5rU3RvcmUuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKiBXZWJE
b3dubG9hZC5oOgorICAgICAgICAqIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHA6CisgICAgICAg
ICogV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJIaXN0b3J5LmNwcDoKKyAgICAgICAgKiBXZWJI
aXN0b3J5Lmg6CisgICAgICAgICogV2ViSGlzdG9yeUl0ZW0uY3BwOgorICAgICAgICAqIFdlYlJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpXZWJSZXNvdXJjZSk6CisgICAgICAg
ICogV2ViUmVzb3VyY2UuaDoKKyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5jcHA6CisgICAg
ICAgICogV2ViVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViVVJMUmVzcG9uc2U6OmNyZWF0
ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAg
ICAgICAqIFdlYlZpZXcuaDoKKwogMjAxOC0xMS0yOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBkZWFkIGNvZGUgZnJvbSBhbiBl
YXJsaWVyIGF0dGVtcHQgYXQgaW1wbGVtZW50aW5nIHNhZmUgYnJvd3NpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY3ZjU1MDlhNGIwZGJlNDc0NDg4MTk2
OTI5MDRhNmUxMTNiZWI5NDAuLmEyMjM5NDkwZDExMmRjYTQ2YTVhYTRiY2RlZDM1ZmRiY2FhZWM5
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzIsNiAr
NzIsMTIgQEAKIAkJNTMxMUJENTMxRUE3MUNBRDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENTExRUE3MUNB
RDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwICovOyB9OwogCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUy
ODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzExQkQ1QjFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5j
cHAgKi87IH07CiAJCTUzNTM0RjJBMUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5k
ZWZzIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1MzRG
MjkxRUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRpb25zLmRlZnMgKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoQ2xpZW50LCBTZXJ2ZXIsICk7IH07IH07CisJCTVDMUYwNTkzMjE2NDM1
NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRy
YXMuY3BwICovOyB9OworCQk1QzFGMDU5NTIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxRjA1OTQyMTY0
MzdCMzAwMzkzMDJDIC8qIFVSTENGLmNwcCAqLzsgfTsKKwkJNUNDMEVFNzUyMTYyOUYxOTAwQTFB
ODQyIC8qIFVSTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0MwRUU3MzIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmNwcCAqLzsg
fTsKKwkJNUNDMEVFNzYyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0MwRUU3NDIxNjI5RjE5MDBBMUE4NDIg
LyogVVJMLmNwcCAqLzsgfTsKKwkJNUNDMEVFODkyMTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29h
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVF
ODYyMTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29hLm1tICovOyB9OworCQk1Q0MwRUU4QTIxNjJC
QzIyMDBBMUE4NDIgLyogTlNVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0MwRUU4ODIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRy
YXMubW0gKi87IH07CiAJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3Ry
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5
OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OwogCQk3MEVD
QTYwRDFCMDI0MjY4MDA0NDk3MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwQTFCMDI0MjY4MDA0NDk3
MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAgKi87IH07CiAJCTdBMDUwOTNGMUZCOURDQzUwMEIz
M0ZCOCAvKiBKU09OVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBMDUwOTNFMUZCOURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmNwcCAq
LzsgfTsKQEAgLTM1OSw3ICszNjUsMTkgQEAKIAkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8q
IFRpbnlMUlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW55TFJV
Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU5N0Y4MkMxRDk0Qjk5NzAw
NjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3luY2hyb25pemVkRml4ZWRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QjQzMzgzQTVEMEI0NjNDOTQzM0Q5MzMgLyogSW5kZXhNYXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZXhNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUMxRjA1OTEyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENGVVJMRXh0cmFzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMxRjA1OTIyMTY0MzU2QjAwMzkzMDJDIC8qIENG
VVJMRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENGVVJMRXh0cmFz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMUYwNTk0MjE2NDM3QjMwMDM5MzAy
QyAvKiBVUkxDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxD
Ri5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMUYwNTk3MjE2NDM5OTQwMDM5
MzAyQyAvKiBVUkxIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTEhh
c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQy
RjZEIC8qIFVuaXF1ZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlx
dWVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzEyMTYyOUYxODAw
QTFBODQyIC8qIFVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzIyMTYyOUYxOTAwQTFBODQyIC8q
IFVSTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxQYXJzZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzMyMTYyOUYxOTAwQTFBODQy
IC8qIFVSTFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBV
UkxQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3NDIxNjI5
RjE5MDBBMUE4NDIgLyogVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTc3MjE2MkEw
MTAwMEExQTg0MiAvKiBVUkxIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVSTEhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFODYyMTYyQkMy
MjAwQTFBODQyIC8qIFVSTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVVJMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBF
RTg3MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOU1VSTEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0MwRUU4ODIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRyYXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOU1VSTEV4dHJhcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdCNjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFy
OyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQyNDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUQyNDdCNzAxNDY4OUM0NzAwRTc4Qjc2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02OTcsOSArNzE1LDEyIEBACiAJCTJDREVEMEYwMTgxMTVDM0YwMDREQkE3
MCAvKiBjZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NUMxRjA1OTEyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLywKKwkJCQk1QzFG
MDU5MjIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuaCAqLywKIAkJCQlDMkJDRkM0MTFG
NjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi8sCiAJCQkJMkNERUQwRUUxODExNUMz
ODAwNERCQTcwIC8qIFJ1bkxvb3BDRi5jcHAgKi8sCiAJCQkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4
RkZBIC8qIFR5cGVDYXN0c0NGLmggKi8sCisJCQkJNUMxRjA1OTQyMTY0MzdCMzAwMzkzMDJDIC8q
IFVSTENGLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMTEwNiw2ICsxMTI3LDEyIEBACiAJCQkJRTMwMEU1MjEyMDNENjQ1RjAwREE3
OUJFIC8qIFVuaXF1ZUFycmF5LmggKi8sCiAJCQkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8q
IFVuaXF1ZVJlZi5oICovLAogCQkJCUNENzYwMEZGMUY5MEEzQ0EwMDAyNkUyNiAvKiBVbnNhZmVQ
b2ludGVyLmggKi8sCisJCQkJNUNDMEVFNzQyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgKi8s
CisJCQkJNUNDMEVFNzEyMTYyOUYxODAwQTFBODQyIC8qIFVSTC5oICovLAorCQkJCTVDMUYwNTk3
MjE2NDM5OTQwMDM5MzAyQyAvKiBVUkxIYXNoLmggKi8sCisJCQkJNUNDMEVFNzcyMTYyQTAxMDAw
QTFBODQyIC8qIFVSTEhhc2guaCAqLywKKwkJCQk1Q0MwRUU3MzIxNjI5RjE5MDBBMUE4NDIgLyog
VVJMUGFyc2VyLmNwcCAqLywKKwkJCQk1Q0MwRUU3MjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFy
c2VyLmggKi8sCiAJCQkJN0FGRUM2QjAxRUIyMkI1OTAwREFERTM2IC8qIFVVSUQuY3BwICovLAog
CQkJCTdBRkVDNkFFMUVCMjJBQzYwMERBREUzNiAvKiBVVUlELmggKi8sCiAJCQkJQThBNDczNkYx
NTFBODI1QjAwNDEyM0ZGIC8qIFZhbHVlQ2hlY2suaCAqLywKQEAgLTEzMjgsNyArMTM1NSwxMCBA
QAogCQkJCUE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gKi8s
CiAJCQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNw
cCAqLywKIAkJCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5k
bGVyQ29jb2EubW0gKi8sCisJCQkJNUNDMEVFODcyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0
cmFzLmggKi8sCisJCQkJNUNDMEVFODgyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1t
ICovLAogCQkJCUEzMEQ0MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovLAor
CQkJCTVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSAqLywKIAkJCQlFNEEw
QUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovLAogCQkJKTsKIAkJ
CXBhdGggPSBjb2NvYTsKQEAgLTE0MTgsNiArMTQ0OCw3IEBACiAJCQkJQThBNDczOEIxNTFBODI1
QjAwNDEyM0ZGIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEQ0VFMjIwMTFD
RUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3M0FDMTUxQTgyNUIwMDQxMjNGRiAvKiBjYWNoZWQtcG93ZXJzLmNjIGluIFNvdXJj
ZXMgKi8sCisJCQkJNUMxRjA1OTMyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNjZCMjhBMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxh
dG9yRGVmYXVsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIz
RkYgLyogQ29sbGF0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNDY5LDYgKzE1MDAsNyBA
QAogCQkJCUFEODlCNkJBMUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJD
b2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0VDMTUxQTgyNUIwMDQxMjNGRiAvKiBN
ZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZCMjhDMURDOTdCQUIwMDRB
MUQzRiAvKiBNb25vdG9uaWNUaW1lLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQzBFRThBMjE2
MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
M0Y0MTUxQTgyNUIwMDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1MjMsNiArMTU1NSwxMCBAQAogCQkJCTUzMTFCRDVD
MUVBODIyRjkwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNjZCMjkwMURDOTdCQUIwMDRBMUQzRiAvKiBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3MDc1RjUxRkJGNTNDRDAwNDg5QUYwIC8qIFRpbWluZ1Nj
b3BlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQzBFRTc2MjE2MjlGMTkwMEExQTg0MiAvKiBV
UkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUMxRjA1OTUyMTY0MzdCMzAwMzkzMDJDIC8qIFVS
TENGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQzBFRTg5MjE2MkJDMjIwMEExQTg0MiAvKiBV
UkxDb2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDQzBFRTc1MjE2MjlGMTkwMEExQTg0MiAv
KiBVUkxQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMxODFDOEYxRDMwN0FCODAwRjVG
QTE2IC8qIFVUZXh0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMxODFDOTExRDMw
N0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUMxODFDOTMxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNjNjNzA3MDFmMDhkY2NmMWU0YjMz
NzllZGI5MmM2NjBlZTdhNjc5ZC4uY2VlMWNjZTFlNTcxODRkMTNiZDJjZDUxOWVmNmEyMGRmZmIx
YTk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI0MCw2ICsyNDAsOSBAQCBzZXQoV1RGX1BV
QkxJQ19IRUFERVJTCiAgICAgVGlueVB0clNldC5oCiAgICAgVHJpU3RhdGUuaAogICAgIFR5cGVD
YXN0cy5oCisgICAgVVJMLmgKKyAgICBVUkxIYXNoLmgKKyAgICBVUkxQYXJzZXIuaAogICAgIFVV
SUQuaAogICAgIFVuYWxpZ25lZEFjY2Vzcy5oCiAgICAgVW5leHBlY3RlZC5oCkBAIC0zOTQsNiAr
Mzk3LDggQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgVGhyZWFkaW5nLmNwcAogICAgIFRpbWVXaXRo
RHluYW1pY0Nsb2NrVHlwZS5jcHAKICAgICBUaW1pbmdTY29wZS5jcHAKKyAgICBVUkwuY3BwCisg
ICAgVVJMUGFyc2VyLmNwcAogICAgIFVVSUQuY3BwCiAgICAgV1RGQXNzZXJ0aW9ucy5jcHAKICAg
ICBXYWxsVGltZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1Nv
dXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCA1ZmRiNTkyOGY4N2E2YTVmZmQ1MmNkNDBjMmRl
MTgzZjRiOGRjZjI4Li5iODM5OTdjODNhMmMwYmMxZDdlOGUyZDFkOGZhNDVkZTM1ODM1MmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYv
Rm9yd2FyZC5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIFN0cmluZ1ZpZXc7CiBjbGFzcyBUZXh0
UG9zaXRpb247CiBjbGFzcyBUZXh0U3RyZWFtOwogY2xhc3MgVW5pcXVlZFN0cmluZ0ltcGw7Citj
bGFzcyBVUkw7CiBjbGFzcyBXYWxsVGltZTsKIAogc3RydWN0IEZhc3RNYWxsb2M7CkBAIC0xMTIs
NiArMTEzLDcgQEAgdXNpbmcgV1RGOjpTdHJpbmdJbXBsOwogdXNpbmcgV1RGOjpTdHJpbmdWaWV3
OwogdXNpbmcgV1RGOjpUZXh0UG9zaXRpb247CiB1c2luZyBXVEY6OlRleHRTdHJlYW07Cit1c2lu
ZyBXVEY6OlVSTDsKIHVzaW5nIFdURjo6VmFyaWFudDsKIHVzaW5nIFdURjo6VmVjdG9yOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDY5NmExYmFiZDYyY2IwMWY3NjI5YmJlOTJiZThm
NDkzMzQ5NjBiNjIuLjAwNmZjMjJkNjE2MmU1MjQzNzEzZTRhZGE1ZDRkODRhNWQzM2RhZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02LDYgKzYsNyBAQCBsaXN0KEFQUEVORCBXVEZf
UFVCTElDX0hFQURFUlMKICAgICBnbGliL0dSZWZQdHIuaAogICAgIGdsaWIvR1R5cGVkZWZzLmgK
ICAgICBnbGliL0dVbmlxdWVQdHIuaAorICAgIGdsaWIvR1VuaXF1ZVB0clNvdXAuaAogICAgIGds
aWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmgKICAgICBnbGliL1dURkdUeXBlLmgKICkKQEAgLTI1
LDYgKzI2LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnbGliL0dMaWJVdGlsaXRp
ZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCisg
ICAgZ2xpYi9VUkxTb3VwLmNwcAogCiAgICAgdGV4dC91bml4L1RleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1VVbml4LmNwcAogCkBAIC01MCw5ICs1MiwxMSBAQCBsaXN0KEFQUEVORCBXVEZfTElC
UkFSSUVTCiAgICAgJHtHTElCX0dJT19MSUJSQVJJRVN9CiAgICAgJHtHTElCX0dPQkpFQ1RfTElC
UkFSSUVTfQogICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAgJHtMSUJTT1VQX0xJQlJBUklFU30K
ICAgICAke1pMSUJfTElCUkFSSUVTfQogKQogCiBsaXN0KEFQUEVORCBXVEZfU1lTVEVNX0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICR7TElCU09VUF9J
TkNMVURFX0RJUlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5j
bWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGQ5YmQ0OGY3YTVk
M2MyN2VlZjdjMDBlMTg3MGI4OGM3YjE0ZjYxOTkuLjQ3OTVmOGZhNGNhZWYyM2VlMWE4YzM4MjVk
ZDZkOWNhODg5NGMyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNt
YWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC04LDEwICs4LDEy
IEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICkKIAogbGlzdChBUFBFTkQgV1RGX1BVQkxJ
Q19IRUFERVJTCisgICAgY2YvQ0ZVUkxFeHRyYXMuaAogICAgIGNmL1R5cGVDYXN0c0NGLmgKIAog
ICAgIGNvY29hL0VudGl0bGVtZW50cy5oCiAgICAgY29jb2EvTWFjaFNlbmRSaWdodC5oCisgICAg
Y29jb2EvTlNVUkxFeHRyYXMuaAogICAgIGNvY29hL1NvZnRMaW5raW5nLmgKIAogICAgIGRhcndp
bi9XZWFrTGlua2luZy5oCkBAIC0zNyw4ICszOSwxMCBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNF
UwogICAgIFNjaGVkdWxlUGFpckNGLmNwcAogICAgIFNjaGVkdWxlUGFpck1hYy5tbQogCisgICAg
Y2YvQ0ZVUkxFeHRyYXMuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAgICBjZi9SdW5Mb29w
Q0YuY3BwCisgICAgY2YvVVJMQ0YuY3BwCiAKICAgICBjb2NvYS9BdXRvZHJhaW5lZFBvb2wuY3Bw
CiAgICAgY29jb2EvQ1BVVGltZUNvY29hLmNwcApAQCAtNDcsNiArNTEsOCBAQCBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUwogICAgIGNvY29hL01haW5UaHJlYWRDb2NvYS5tbQogICAgIGNvY29hL01l
bW9yeUZvb3RwcmludENvY29hLmNwcAogICAgIGNvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNv
Y29hLm1tCisgICAgY29jb2EvTlNVUkxFeHRyYXMubW0KKyAgICBjb2NvYS9VUkxDb2NvYS5tbQog
ICAgIGNvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAogCiAgICAgbWFjL0RlcHJlY2F0ZWRTeW1ib2xz
VXNlZEJ5U2FmYXJpLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5j
bWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDc1MmI1OTkzMTQ4
ZjExMTBhMjkzYzlkYTllMjhhZGVmMDhmZWU0MGMuLmEwMmRhNTI3OGVlZWFiOGRiODAwYmM4Zjk2
Zjg5ZmI5NzJmM2UxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNt
YWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC00LDYgKzQsNyBA
QCBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICBnbGliL0dSZWZQdHIuaAogICAg
IGdsaWIvR1R5cGVkZWZzLmgKICAgICBnbGliL0dVbmlxdWVQdHIuaAorICAgIGdsaWIvR1VuaXF1
ZVB0clNvdXAuaAogICAgIGdsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmgKICAgICBnbGliL1dU
RkdUeXBlLmgKIApAQCAtMTksNiArMjAsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAg
IGdsaWIvR0xpYlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3BwCiAgICAgZ2xpYi9S
dW5Mb29wR0xpYi5jcHAKKyAgICBnbGliL1VSTFNvdXAuY3BwCiAKICAgICBsaW51eC9DdXJyZW50
UHJvY2Vzc01lbW9yeVN0YXR1cy5jcHAKICAgICBsaW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5j
cHAKQEAgLTM1LDkgKzM3LDExIEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICAgICAke0dM
SUJfR0lPX0xJQlJBUklFU30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJRVN9CiAgICAgJHtH
TElCX0xJQlJBUklFU30KKyAgICAke0xJQlNPVVBfTElCUkFSSUVTfQogICAgICR7WkxJQl9MSUJS
QVJJRVN9CiApCiAKIGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CisgICAgJHtMSUJTT1VQX0lOQ0xVREVfRElSU30KICkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggNWYyMjc1YTViZGZmNGU4YTFlMTNlNmI3NDY3
OGRkNjY2NDRmMjlmOC4uMmI4YjVmODI3MGViNWYyNDY3NjA3MmRkMTI0NTc2ZGE5MzAxZjBlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTIyLDExICsyMiwxNSBAQCBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUwogCiBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNf
SEVBREVSUworICAgICAgICBjZi9DRlVSTEV4dHJhcy5oCiAgICAgICAgIGNmL1R5cGVDYXN0c0NG
LmgKIAogICAgICAgICB0ZXh0L2NmL1RleHRCcmVha0l0ZXJhdG9yQ0YuaAogICAgICkKICAgICBs
aXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKKyAgICAg
ICAgY2YvVVJMQ0YuY3BwCisKICAgICAgICAgdGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3Bw
CiAgICAgICAgIHRleHQvY2YvU3RyaW5nQ0YuY3BwCiAgICAgICAgIHRleHQvY2YvU3RyaW5nSW1w
bENGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1VSTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNlMTdjZDlkZTkyMWQ2YzlhNjIxNmNhZjdlODhkMmI0
NmM3ZjM1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTAs
MCArMSwxMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LTIwMDgsIDIwMTEt
MjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKyNpbmNsdWRlICJVUkxQYXJz
ZXIuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKKy8vIEZJWE1FOiBUaGlzIGZp
bGUgbWFrZXMgdG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJhdG9yIG9uIFN0cmluZy4KKy8vIFdl
IGVpdGhlciBoYXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0b3Igc28gaXQgZG9lc24ndCBpbnZv
bHZlCisvLyBzbyBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFuZ2UgdGhpcyB0byB1c2UgU3RyaW5n
QnVmZmVyIGluc3RlYWQuCisKKworbmFtZXNwYWNlIFdURiB7CisKK3R5cGVkZWYgVmVjdG9yPGNo
YXIsIDUxMj4gQ2hhckJ1ZmZlcjsKK3R5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVm
ZmVyOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7
CisKKy8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxs
IHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKKy8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVm
ZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKKy8v
IGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVy
bWluYXRlIHRoZSByZXN1bHQuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGNoYXIqIGRlc3QpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIG1lbWNweShkZXN0
LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAg
c2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxj
aGFyPihzcmNbaV0pOworICAgIH0KK30KKwordm9pZCBVUkw6OmludmFsaWRhdGUoKQoreworICAg
IG1faXNWYWxpZCA9IGZhbHNlOworICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNl
OworICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOworICAgIG1fc2NoZW1lRW5kID0gMDsK
KyAgICBtX3VzZXJTdGFydCA9IDA7CisgICAgbV91c2VyRW5kID0gMDsKKyAgICBtX3Bhc3N3b3Jk
RW5kID0gMDsKKyAgICBtX2hvc3RFbmQgPSAwOworICAgIG1fcG9ydExlbmd0aCA9IDA7CisgICAg
bV9wYXRoRW5kID0gMDsKKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7CisgICAgbV9xdWVy
eUVuZCA9IDA7Cit9CisKK1VSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiBy
ZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKK3sKKyAgICBVUkxQYXJz
ZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CisgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Cit9CisKK3N0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCit7
CisgICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQg
Y29udHJvbAorICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4g
KnVuc2lnbmVkKiBjaGFyIGhlcmUKKyAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9u
bHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgorICAgIHJldHVybiBjIDw9ICcgJzsKK30KKwor
VVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBVUkwgcmVzdWx0ID0gKnRoaXM7
CisgICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkg
Y29uc3QKK3sKKyAgICBpZiAoIWhhc1BhdGgoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKKyAgICBpZiAobV9zdHJpbmdbZW5k
XSA9PSAnLycpCisgICAgICAgIC0tZW5kOworCisgICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcu
cmV2ZXJzZUZpbmQoJy8nLCBlbmQpOworICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgKytzdGFydDsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVu
ZCAtIHN0YXJ0ICsgMSk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVu
ZCk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBz
dGFydCA9IGhvc3RTdGFydCgpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKK30KKworc3RkOjpvcHRpb25hbDx1aW50
MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcG9ydExlbmd0aCkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICB1bnNp
Z25lZCBudW1iZXI7CisgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBudW1iZXIg
PSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RF
bmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOworICAgIGVsc2UKKyAgICAgICAgbnVtYmVy
ID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9z
dEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7CisgICAgaWYgKCFvayB8fCBudW1iZXIg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG51bWJlcjsKK30KKworU3RyaW5nIFVSTDo6aG9zdEFu
ZFBvcnQoKSBjb25zdAoreworICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkpCisgICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cG9ydC52YWx1ZSgpKSk7CisgICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOworfQorCitTdHJp
bmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKK3sKKyAgICBTdHJpbmcgcmVzdWx0
ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7CisKKyAg
ICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgeworICAgICAgICBjb25zdCBp
bnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7CisgICAgICAgIHJlc3VsdC5yZW1vdmUobV91
c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdB
dFNpZ24pOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBTdHJpbmcg
ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0KQorewor
ICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBpZiAoIWlucHV0TGVu
Z3RoKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBWZWN0b3I8TENoYXI+IHBl
cmNlbnREZWNvZGVkOworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
aW5wdXRMZW5ndGgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsg
KytpKSB7CisgICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKKyAgICAgICAgICAgICYmIGlucHV0
TGVuZ3RoID4gMgorICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgorICAgICAgICAg
ICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKKyAgICAgICAgICAgICYmIGlzQVND
SUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51
bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJd
KSk7CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGVy
Y2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKKyAgICB9CisgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5z
aXplKCkpOworfQorCitTdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVj
b2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Cit9CisKK1N0cmlu
ZyBVUkw6OnBhc3MoKSBjb25zdAoreworICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVu
ZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNl
cXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNl
ckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Cit9CisKK1N0cmluZyBV
Ukw6OmVuY29kZWRVc2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5n
KG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Cit9CisKK1N0cmluZyBVUkw6
OmVuY29kZWRQYXNzKCkgY29uc3QKK3sKKyAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJF
bmQpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJz
dHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOworfQor
CitTdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICghaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJl
dHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOworfQorCitib29sIFVSTDo6
aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkICYm
IG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Cit9CisKK1N0cmluZyBVUkw6OmJhc2VB
c1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJM
YXN0U2xhc2gpOworfQorCisjaWYgIVVTRShDRikKKworU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBh
dGgoKSBjb25zdAoreworICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2Vz
RnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOworfQorCisjZW5kaWYKKworI2lmZGVm
IE5ERUJVRworCitzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5n
VmlldykKK3sKK30KKworI2Vsc2UKKworc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2Qo
U3RyaW5nVmlldyBwcm90b2NvbCkKK3sKKyAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3Qg
bmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgorICAgIC8vIFRoZSBpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVycworICAg
IC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3QgYW5kIHJl
bGllZCBvbiB0aGVzZSBjaGVja3MuCisgICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHByb3RvY29s
LmNvZGVVbml0cygpKSB7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOworICAg
ICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsKKyAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBw
ZXIoY2hhcmFjdGVyKSk7CisgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hh
cmFjdGVyKSA9PSBjaGFyYWN0ZXIpOworICAgIH0KK30KKworI2VuZGlmCisKK3N0YXRpYyBMb2Nr
IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKKwordXNpbmcgRGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+
Oworc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIHN0YXRpYyBEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKKyAgICBy
ZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKK30KKworc3RhdGljIERlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
Rm9yVGVzdGluZygpCit7CisgICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmcq
JiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmcoKTsKKyAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCisgICAgICAg
IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3Rpbmc7CisgICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOworfQor
Cit2b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3Qg
cG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgZW5zdXJl
RGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQp
OworfQorCit2b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQor
eworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmdMb2NrKTsKKyAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKSkKKyAgICAgICAgbWFwLT5jbGVhcigpOworfQorCitzdGQ6Om9wdGlv
bmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wp
Cit7CisgICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmcoKSkgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgICAgIEFTU0VSVChvdmVycmlk
ZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRl
TWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KKyAgICAgICAgYXV0
byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENv
cHlpbmcoKSk7CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCisg
ICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gVVJM
UGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKK30KKworYm9vbCBpc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkK
K3sKKyAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsK
K30KKworYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Cit7
CisgICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7CisKKyAgICAvLyBKYXZh
U2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVS
TCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCisgICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJv
dG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKKyAgICBBU1NFUlQo
IWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2
YXNjcmlwdCIpKTsKKworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcg
b2JqZWN0LgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7
CisgICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
bV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZl
IGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KK30KKworYm9vbCBVUkw6
OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKK3sKKyAgICBhc3NlcnRQcm90
b2NvbElzR29vZChwcm90b2NvbCk7CisKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5sZW5ndGgo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0
aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBVUkw6OnF1ZXJ5KCkg
Y29uc3QKK3sKKyAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsg
MSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAorfQorCitTdHJpbmcgVVJMOjpwYXRo
KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVu
Z3RoOworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0g
cG9ydEVuZCk7Cit9CisKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCit7
CisgICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0
ICc6Jy4KKyAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKKyAgICBT
dHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Cisg
ICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVt
ZShuZXdQcm90b2NvbCk7CisgICAgaWYgKCFjYW5vbmljYWxpemVkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
KG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKKyAgICAgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fc2NoZW1lRW5kKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAg
IHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3Ry
aW5nKQoreworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Cisg
ICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0
cmluZy5sZW5ndGgoKSk7Cit9CisgICAgCisvLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5h
bWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KKy8vIHRoZSBv
dXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KKy8v
IFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KK3N0YXRpYyBi
b29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3
IHN0cmluZykKK3sKKyAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSURO
LWVuY29kZWQgbmFtZS4KKyAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3
ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCisg
ICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OworICAgIAorICAg
IGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJ
KHN0cmluZykpIHsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1l
QnVmZmVyTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOworICAg
IFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7Cisg
ICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVS
TFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCisgICAgICAgIHN0
cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1
ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsK
KyAgICAKKyAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJy
b3JzKSB7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3Rl
cnNDb252ZXJ0ZWQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit1bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3
b3JkRW5kICsgMTsKK30KKwordm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQorewor
ICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbG9uSW5k
ZXggPSBzLmZpbmQoJzonKTsKKyAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOworICAgIGlmICgh
YXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKKyAgICAKKyAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQo
KSkpOworICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQorICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIi8vIik7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5h
bWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
bV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOworCisgICAgVVJMUGFyc2VyIHBhcnNlcihi
dWlsZGVyLnRvU3RyaW5nKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCit2
b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCit7CisgICAgaWYgKCFtX3BvcnRMZW5ndGgpCisgICAgICAg
IHJldHVybjsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9o
b3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwor
fQorCit2b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9y
dExlbmd0aDsKKyAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RF
bmQgOiBtX2hvc3RFbmQgKyAxKTsKKworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhT
dHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6
ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyht
X2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Cit9CisKK3ZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0
KQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmdW
aWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKKyAgICBTdHJpbmdWaWV3IHBvcnQ7CisgICAgCisg
ICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOworICAgIGlmIChjb2xvbklu
ZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29s
b25JbmRleCArIDEpOworICAgICAgICBib29sIG9rOworICAgICAgICBpbnQgcG9ydEludCA9IHBv
cnQudG9JbnRTdHJpY3Qob2spOworICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygw
LCBjb2xvbkluZGV4KTsKKyAgICB9CisKKyAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7CisgICAgaWYg
KCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOworCisgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0
KCkpKTsKKyAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIvLyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3RO
YW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOworICAgIGlmICghcG9ydC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHBvcnQpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7CisKKyAgICBV
UkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Cit9CisKK3N0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29u
c3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCit7CisgICAgYXV0
byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgeworICAgICAg
ICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSB1dGY4
LmRhdGEoKTsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBhdXRvIGxl
bmd0aCA9IHV0ZjgubGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBs
ZW5ndGg7IGorKykgeworICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKKyAgICAgICAgICAg
IGlmIChzaG91bGRFbmNvZGUoYykpIHsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
JScpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChjKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOworICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0
aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1dFtpXSkp
KQorICAgICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7CisgICAgfQorICAgIHJldHVybiBp
bnB1dDsKK30KKwordm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQoreworICAg
IGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogTm9uLUFT
Q0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNl
KCkgZXhwZWN0YXRpb25zLAorICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4g
anVzdCB0aGUgdXNlciBsb2dpbi4KKworICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKKyAg
ICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29k
ZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOworICAg
ICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5k
ICsgMSkpCisgICAgICAgICAgICB1ID0gIi8vIiArIHU7CisgICAgICAgIC8vIEFkZCAnQCcgaWYg
d2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KKyAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQg
fHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKKyAgICAg
ICAgICAgIHUuYXBwZW5kKCdAJyk7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBu
ZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFz
c3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKKyAg
ICAgICAgICAgIGVuZCArPSAxOworICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGlu
IHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtl
IGEgY2hhbmdlLgorICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7CisgICAgICAgICAg
ICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdCht
X3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7CisgICAg
ICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoIW1f
aXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29y
ZEVuZDsKKyAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmcgcCA9
ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5V
c2VySW5mb0VuY29kZVNldCkgKyAiQCI7CisgICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisgICAgICAgICAgICBwID0gIi8vIiAr
IHA7CisgICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0
byBhZGQgb3VyIG93bi4KKyAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdb
ZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgVVJMUGFyc2VyIHBh
cnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3
ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2Vy
U3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9
PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29p
bmcgdG8gbWFrZSBhIGNoYW5nZS4KKyAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKKyAg
ICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5n
KS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7
CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZp
ZXIpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJ
WE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBl
bnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPworICAgIC8vIEZJWE1FOiBJcyBpdCBj
b3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJ
IGNoYXJhY3RlcnM/CisgICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1Zp
ZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVy
KSB9LnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkK
K3sKKyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVu
Z3RoKCkgPiBtX3F1ZXJ5RW5kKQorICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9x
dWVyeUVuZCk7Cit9CisKK3ZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmll
cigpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3Ry
aW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQpOworICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhF
bmQ7Cit9CisKK3ZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQoreworICAg
IGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogJyMnIGFu
ZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCisgICAg
Ly8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2Rpbmcs
IG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKKyAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3Vt
ZW50IGluIHRoaXMgZnVuY3Rpb24uCisgICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2
CisgICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnku
aXNOdWxsKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJl
c3VsdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7CisgICAgfQorCit9CisKK3ZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmlu
ZyYgcykKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3Ry
aW5nIHBhdGggPSBzOworICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykK
KyAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7CisKKyAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3Rl
ciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKKyAgICB9OworICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9y
dExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Cisg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK2Jvb2wgZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5t
X3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVu
c2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQorICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBi
LnN0cmluZygpW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwg
Y29uc3QgVVJMJiBiKQoreworICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7CisgICAgICAgIGlm
IChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIHByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5tX3Nj
aGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1
bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVu
Z3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRC
ID0gYi5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5k
IC0gYi5ob3N0U3RhcnQoKTsKKyAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7CisgICAgICAgIGlmIChh
LnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgLy8gQW5kIHRoZSBob3N0CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKKyAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0
QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgaG9zdHNBcmVFcXVh
bChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRB
ID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5k
IC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsK
KyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKKyAg
ICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7CisgICAg
ICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFy
dEIgKyBpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21h
aW4pIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBp
ZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOworICAgIGlmICghaG9zdC5lbmRzV2l0aChkb21h
aW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9
PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgp
IC0gMV0gPT0gJy4nOworfQorCitTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhj
b25zdCBTdHJpbmcmIGlucHV0KQoreworICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVy
cyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOworfQorCitib29sIFVS
TDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9PSAnOicp
OworICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKK30KKwordm9p
ZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUg
Y2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQorICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlk
IFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCisgICAg
YnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgY29weUFTQ0lJKG1fc3RyaW5n
LCBidWZmZXIuZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Citi
b29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFy
KiBwcm90b2NvbCkKK3sKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBh
IG5ldyBzdHJpbmcgb2JqZWN0LgorICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXco
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29s
KSkpOworICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBqID0gMDsgdXJsW2ldOyArK2kpIHsKKyAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3Bh
Y2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91
bGRUcmltRnJvbVVSTCh1cmxbaV0pKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlz
TGVhZGluZyA9IGZhbHNlOworCisgICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVz
LgorICAgICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ld
ID09ICdcbicpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIXByb3RvY29s
W2pdKQorICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7CisgICAgICAgIGlmICghaXNB
U0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICArK2o7CisgICAgfQorICAgIAorICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFy
KiBwcm90b2NvbCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9j
b2wpOworfQorCitpbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQoreworICAgIHJldHVybiBXVEY6OnByb3RvY29sSXNJ
bnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsKK30KKworI2lmbmRlZiBOREVCVUcKKwordm9pZCBV
Ukw6OnByaW50KCkgY29uc3QKK3sKKyAgICBwcmludGYoIiVzXG4iLCBtX3N0cmluZy51dGY4KCku
ZGF0YSgpKTsKK30KKworI2VuZGlmCisKK1N0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZl
cnJlcigpIGNvbnN0Cit7CisgICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKKyAgICByZWZlcnJlci5z
ZXRVc2VyKFN0cmluZygpKTsKKyAgICByZWZlcnJlci5zZXRQYXNzKFN0cmluZygpKTsKKyAgICBy
ZWZlcnJlci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gcmVmZXJyZXIu
c3RyaW5nKCk7Cit9CisKK2Jvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0Cit7CisgICAgLy8g
SW5jbHVkaW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVhIHNpbmNlIGRyYWcgYW5kIGRy
b3AgdXNlcyB0aGlzIGNoZWNrCisgICAgLy8gYW5kIGluY2x1ZGluZyBmZWVkIHdvdWxkIGFsbG93
IGZlZWRzIHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxvZworICAgIC8vIHJlYWQgdGhl
IGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBldmVuIHdpdGhvdXQgYSBkcm9w
LgorICAgIC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVh
dFVSTEFzTG9jYWwoKSBmdW5jdGlvbi4KKyAgICByZXR1cm4gcHJvdG9jb2xJcygiZmlsZSIpOwor
fQorCitib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKQoreworICAg
IHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29s
IHByb3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKQoreworICAgIHJldHVybiBwcm90
b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29sIHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgYXV0byBsZW5ndGggPSB1cmwu
bGVuZ3RoKCk7CisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcg
c3RyaW5nIG9iamVjdC4KKyAgICByZXR1cm4gbGVuZ3RoID49IDUKKyAgICAgICAgJiYgaXNBU0NJ
SUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMF0sICdoJykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhh
Q2FzZWxlc3NFcXVhbCh1cmxbMV0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxl
c3NFcXVhbCh1cmxbMl0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVh
bCh1cmxbM10sICdwJykKKyAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwgKGlzQVNDSUlBbHBo
YUNhc2VsZXNzRXF1YWwodXJsWzRdLCAncycpICYmIGxlbmd0aCA+PSA2ICYmIHVybFs1XSA9PSAn
OicpKTsKK30KKworY29uc3QgVVJMJiBibGFua1VSTCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayIpOworICAgIHJl
dHVybiBzdGF0aWNCbGFua1VSTDsKK30KKworYm9vbCBVUkw6OnByb3RvY29sSXNBYm91dCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHByb3RvY29sSXMoImFib3V0Iik7Cit9CisKK2Jvb2wgcG9ydEFs
bG93ZWQoY29uc3QgVVJMJiB1cmwpCit7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9y
dCA9IHVybC5wb3J0KCk7CisKKyAgICAvLyBTaW5jZSBtb3N0IFVSTHMgZG9uJ3QgaGF2ZSBhIHBv
cnQsIHJldHVybiBlYXJseSBmb3IgdGhlICJubyBwb3J0IiBjYXNlLgorICAgIGlmICghcG9ydCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBUaGlzIGJsb2NrZWQgcG9ydCBsaXN0IG1h
dGNoZXMgdGhlIHBvcnQgYmxvY2tpbmcgdGhhdCBNb3ppbGxhIGltcGxlbWVudHMuCisgICAgLy8g
U2VlIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbmV0bGliL1BvcnRCYW5uaW5nLmh0
bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGJsb2Nr
ZWRQb3J0TGlzdFtdID0geworICAgICAgICAxLCAgICAvLyB0Y3BtdXgKKyAgICAgICAgNywgICAg
Ly8gZWNobworICAgICAgICA5LCAgICAvLyBkaXNjYXJkCisgICAgICAgIDExLCAgIC8vIHN5c3Rh
dAorICAgICAgICAxMywgICAvLyBkYXl0aW1lCisgICAgICAgIDE1LCAgIC8vIG5ldHN0YXQKKyAg
ICAgICAgMTcsICAgLy8gcW90ZAorICAgICAgICAxOSwgICAvLyBjaGFyZ2VuCisgICAgICAgIDIw
LCAgIC8vIEZUUC1kYXRhCisgICAgICAgIDIxLCAgIC8vIEZUUC1jb250cm9sCisgICAgICAgIDIy
LCAgIC8vIFNTSAorICAgICAgICAyMywgICAvLyB0ZWxuZXQKKyAgICAgICAgMjUsICAgLy8gU01U
UAorICAgICAgICAzNywgICAvLyB0aW1lCisgICAgICAgIDQyLCAgIC8vIG5hbWUKKyAgICAgICAg
NDMsICAgLy8gbmljbmFtZQorICAgICAgICA1MywgICAvLyBkb21haW4KKyAgICAgICAgNzcsICAg
Ly8gcHJpdi1yanMKKyAgICAgICAgNzksICAgLy8gZmluZ2VyCisgICAgICAgIDg3LCAgIC8vIHR0
eWxpbmsKKyAgICAgICAgOTUsICAgLy8gc3VwZHVwCisgICAgICAgIDEwMSwgIC8vIGhvc3RyaWFt
ZQorICAgICAgICAxMDIsICAvLyBpc28tdHNhcAorICAgICAgICAxMDMsICAvLyBncHBpdG5wCisg
ICAgICAgIDEwNCwgIC8vIGFjci1uZW1hCisgICAgICAgIDEwOSwgIC8vIFBPUDIKKyAgICAgICAg
MTEwLCAgLy8gUE9QMworICAgICAgICAxMTEsICAvLyBzdW5ycGMKKyAgICAgICAgMTEzLCAgLy8g
YXV0aAorICAgICAgICAxMTUsICAvLyBTRlRQCisgICAgICAgIDExNywgIC8vIHV1Y3AtcGF0aAor
ICAgICAgICAxMTksICAvLyBubnRwCisgICAgICAgIDEyMywgIC8vIE5UUAorICAgICAgICAxMzUs
ICAvLyBsb2Mtc3J2IC8gZXBtYXAKKyAgICAgICAgMTM5LCAgLy8gbmV0YmlvcworICAgICAgICAx
NDMsICAvLyBJTUFQMgorICAgICAgICAxNzksICAvLyBCR1AKKyAgICAgICAgMzg5LCAgLy8gTERB
UAorICAgICAgICA0MjcsICAvLyBTTFAgKEFsc28gdXNlZCBieSBBcHBsZSBGaWxpbmcgUHJvdG9j
b2wpCisgICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCisgICAgICAgIDUxMiwgIC8vIHByaW50IC8g
ZXhlYworICAgICAgICA1MTMsICAvLyBsb2dpbgorICAgICAgICA1MTQsICAvLyBzaGVsbAorICAg
ICAgICA1MTUsICAvLyBwcmludGVyCisgICAgICAgIDUyNiwgIC8vIHRlbXBvCisgICAgICAgIDUz
MCwgIC8vIGNvdXJpZXIKKyAgICAgICAgNTMxLCAgLy8gQ2hhdAorICAgICAgICA1MzIsICAvLyBu
ZXRuZXdzCisgICAgICAgIDU0MCwgIC8vIFVVQ1AKKyAgICAgICAgNTQ4LCAgLy8gYWZwb3ZlcnRj
cCBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDU1NiwgIC8vIHJlbW90ZWZzCisgICAgICAgIDU2
MywgIC8vIE5OVFArU1NMCisgICAgICAgIDU4NywgIC8vIEVTTVRQCisgICAgICAgIDYwMSwgIC8v
IHN5c2xvZy1jb25uCisgICAgICAgIDYzNiwgIC8vIExEQVArU1NMCisgICAgICAgIDk5MywgIC8v
IElNQVArU1NMCisgICAgICAgIDk5NSwgIC8vIFBPUDMrU1NMCisgICAgICAgIDIwNDksIC8vIE5G
UworICAgICAgICAzNjU5LCAvLyBhcHBsZS1zYXNsIC8gUGFzc3dvcmRTZXJ2ZXIgW0FwcGxlIGFk
ZGl0aW9uXQorICAgICAgICA0MDQ1LCAvLyBsb2NrZAorICAgICAgICA0MTkwLCAvLyBNYW5hZ2VT
aWV2ZSBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDYwMDAsIC8vIFgxMQorICAgICAgICA2NjY1
LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2NiwgLy8gQWx0
ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2NjcsIC8vIFN0YW5kYXJkIElS
QyBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxl
IGFkZGl0aW9uXQorICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlv
bl0KKyAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9uXQor
ICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgaW52YWxp
ZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCisg
ICAgfTsKKworICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxp
c3QsIGFsbG93IGl0LgorICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJsb2Nr
ZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKKyAgICBpZiAoIXN0ZDo6
YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2Nr
ZWRQb3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgor
ICAgIGlmICgocG9ydC52YWx1ZSgpID09IDIxIHx8IHBvcnQudmFsdWUoKSA9PSAyMikgJiYgdXJs
LnByb3RvY29sSXMoImZ0cCIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEFsbG93
IGFueSBwb3J0IG51bWJlciBpbiBhIGZpbGUgVVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIgaXMg
aWdub3JlZC4KKyAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGUiKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBtaW1lVHlwZUZyb21EYXRh
VVJMKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwo
dXJsLCAiZGF0YSIpKTsKKworICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9y
IHdoZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVyPwor
ICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGlu
IHRoYXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJlY3QuCisgICAgYXV0byBpbmRleCA9IHVy
bC5maW5kKCc7JywgNSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICBpbmRl
eCA9IHVybC5maW5kKCcsJywgNSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUgaXQg
c291bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcgdGV4dC9wbGFpbi4KKyAgICAgICAg
Ly8gQnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNvbWUg
dGltZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBhdCB0aGlzIHRpbWUuCisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOworICAgIH0KKyAgICBpZiAoaW5kZXggPT0gNSkKKyAgICAg
ICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOworICAgIEFTU0VSVChpbmRleCA+PSA1KTsKKyAgICBy
ZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCk7Cit9CisKK1N0cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNp
Z25lZCBsZW5ndGgpIGNvbnN0Cit7CisgICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0
aCkKKyAgICAgICAgcmV0dXJuIHN0cmluZygpOworCisgICAgcmV0dXJuIHN0cmluZygpLmxlZnQo
bGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7
Cit9CisKK1VSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVs
YXRpdmVQYXJ0KQoreworICAgIHJldHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8i
ICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKK30K
KworVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQoreworICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7Cit9
CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJs
KQoreworICAgIHRzIDw8IHVybC5zdHJpbmcoKTsKKyAgICByZXR1cm4gdHM7Cit9CisKKyNpZiAh
UExBVEZPUk0oQ09DT0EpICYmICFVU0UoU09VUCkKK3N0YXRpYyBib29sIGlzSVB2NEFkZHJlc3Mo
U3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYXV0byBjb3VudCA9IDA7CisKKyAgICBmb3IgKGNv
bnN0IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicpKSB7
CisgICAgICAgIGlmIChjb3VudCA+PSA0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gb2N0ZXQubGVuZ3RoKCk7CisgICAgICAgIGlmICgh
bGVuZ3RoIHx8IGxlbmd0aCA+IDMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgYXV0byB2YWx1ZSA9IDA7CisgICAgICAgIGZvciAoYXV0byBpID0gMHU7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgY29uc3QgYXV0byBkaWdpdCA9IG9jdGV0W2ldOworCisgICAg
ICAgICAgICAvLyBQcm9oaWJpdCBsZWFkaW5nIHplcm9lcy4KKyAgICAgICAgICAgIGlmIChkaWdp
dCA+ICc5JyB8fCBkaWdpdCA8ICghaSAmJiBsZW5ndGggPiAxID8gJzEnIDogJzAnKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHZhbHVlID0gMTAgKiB2YWx1
ZSArIChkaWdpdCAtICcwJyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodmFsdWUgPiAyNTUp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY291bnQrKzsKKyAgICB9CisK
KyAgICByZXR1cm4gKGNvdW50ID09IDQpOworfQorCitzdGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNz
KFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGVudW0gU2tpcFN0YXRlIHsgTm9uZSwgV2lsbFNr
aXAsIFNraXBwaW5nLCBTa2lwcGVkLCBGaW5hbCB9OworICAgIGF1dG8gc2tpcFN0YXRlID0gTm9u
ZTsKKyAgICBhdXRvIGNvdW50ID0gMDsKKworICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQgOiBz
dHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnOicpKSB7CisgICAgICAgIGlmIChjb3Vu
dCA+PSA4IHx8IHNraXBTdGF0ZSA9PSBGaW5hbCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IGhleHRldC5sZW5ndGgoKTsKKyAgICAgICAg
aWYgKCFsZW5ndGgpIHsKKyAgICAgICAgICAgIC8vIDo6IG1heSBiZSB1c2VkIGFueXdoZXJlIHRv
IHNraXAgMSB0byA4IGhleHRldHMsIGJ1dCBvbmx5IG9uY2UuCisgICAgICAgICAgICBpZiAoc2tp
cFN0YXRlID09IFNraXBwZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgICAgICBpZiAoc2tpcFN0YXRlID09IE5vbmUpCisgICAgICAgICAgICAgICAgc2tpcFN0YXRl
ID0gIWNvdW50ID8gV2lsbFNraXAgOiBTa2lwcGluZzsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNr
aXBTdGF0ZSA9PSBXaWxsU2tpcCkKKyAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGlu
ZzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNraXBTdGF0
ZSA9PSBXaWxsU2tpcCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAo
c2tpcFN0YXRlID09IFNraXBwaW5nKQorICAgICAgICAgICAgc2tpcFN0YXRlID0gU2tpcHBlZDsK
KworICAgICAgICBpZiAobGVuZ3RoID4gNCkgeworICAgICAgICAgICAgLy8gQW4gSVB2NCBhZGRy
ZXNzIG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBmaW5hbCB0d28gaGV4dGV0cy4KKyAgICAg
ICAgICAgIGlmICgoc2tpcFN0YXRlID09IE5vbmUgJiYgY291bnQgIT0gNikgfHwgKHNraXBTdGF0
ZSA9PSBTa2lwcGVkICYmIGNvdW50ID49IDYpIHx8ICFpc0lQdjRBZGRyZXNzKGhleHRldCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBza2lwU3RhdGUgPSBG
aW5hbDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChj
b25zdCBhdXRvIGNvZGVVbml0IDogaGV4dGV0LmNvZGVVbml0cygpKSB7CisgICAgICAgICAgICAv
LyBJUHY2IGFsbG93cyBsZWFkaW5nIHplcm9lcy4KKyAgICAgICAgICAgIGlmICghaXNBU0NJSUhl
eERpZ2l0KGNvZGVVbml0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKworICAgICAgICBjb3VudCsrOworICAgIH0KKworICAgIHJldHVybiAoY291bnQgPT0gOCAm
JiBza2lwU3RhdGUgPT0gTm9uZSkgfHwgc2tpcFN0YXRlID09IFNraXBwZWQgfHwgc2tpcFN0YXRl
ID09IEZpbmFsOworfQorCitib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9z
dCkKK3sKKyAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVy
biBpc0lQdjRBZGRyZXNzKGhvc3QpOworCisgICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7
Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9VUkwuaCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3N2EwNjcyYTYz
OWJiZjcwYzNlY2U3NTNmYzFhNTMxYWMwM2RlNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9VUkwuaApAQCAtMCwwICsxLDM5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCisjaWYgVVNFKENGKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTCogQ0ZVUkxSZWY7
CisjZW5kaWYKKworI2lmIFVTRShTT1VQKQorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJT
b3VwLmg+CisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKQorT0JKQ19DTEFTUyBOU1VSTDsK
KyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRTdHJlYW07CisKK2NsYXNzIFVS
TFRleHRFbmNvZGluZyB7CitwdWJsaWM6CisgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gZW5j
b2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB+VVJM
VGV4dEVuY29kaW5nKCkgeyB9OworfTsKKworc3RydWN0IFVSTEhhc2g7CisKK2NsYXNzIFdURl9F
WFBPUlRfUFJJVkFURSBVUkwgeworcHVibGljOgorICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGlj
aCBjb250YWlucyBhIG51bGwgc3RyaW5nLgorICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9CisK
KyAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3Ry
aW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KKyAgICBib29sIGlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQorCisgICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBn
aXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQorICAgIC8vIFVSTFRleHRFbmNvZGluZyBp
cyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJl
CisgICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdp
bGwgYmUgaW50ZXJwcmV0ZWQgYXMKKyAgICAvLyBhYnNvbHV0ZS4KKyAgICAvLyBGSVhNRTogSWYg
dGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAor
ICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBh
bGwgaW52YWxpZCBiYXNlIFVSTHMKKyAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwg
YW5kIGVtcHR5IGJhc2UgVVJMcy4KKyAgICBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJp
bmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7CisKKyAgICBz
dGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYpOworICAgIHN0
YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmKTsKKworICAg
IFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdDsKKworICAgIC8vIEZJWE1F
OiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBoYXJtb25pemVkIHNvIHRoYXQgcGFzc2lu
ZyBhCisgICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBlbXB0eSBzdHJpbmcgZ2l2ZXMgdGhlIHNh
bWUgcmVzdWx0IGFzIHRoZQorICAgIC8vIHN0YW5kYXJkIFN0cmluZyBjb25zdHJ1Y3Rvci4KKwor
ICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNl
IGEgVVJMIG9uIGFub3RoZXIKKyAgICAvLyB0aHJlYWQuIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0
cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzCisgICAgLy8gbm8gb3RoZXIg
cmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2ln
bm1lbnQuCisgICAgVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0OworCisgICAgYm9vbCBpc051bGwo
KSBjb25zdDsKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKKyAgICBib29sIGlzVmFsaWQoKSBj
b25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQg
cG9ydCBmb3IgdGhlIFVSTC4KKyAgICAvLyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2
ZSBhIGhvc3QgYW5kIHBvcnQuCisgICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyBy
ZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQorCisgICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNv
bnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KKyAgICBib29sIGlzSGllcmFyY2hpY2Fs
KCkgY29uc3Q7CisKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nOyB9CisKKyAgICBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVu
c2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OworCisgICAgU3RyaW5nVmlldyBwcm90b2NvbCgp
IGNvbnN0OworICAgIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKKyAgICBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsK
KyAgICBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0OworICAgIFN0cmluZyB1c2Vy
KCkgY29uc3Q7CisgICAgU3RyaW5nIHBhc3MoKSBjb25zdDsKKyAgICBTdHJpbmcgcGF0aCgpIGNv
bnN0OworICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OworICAgIFN0cmluZyBx
dWVyeSgpIGNvbnN0OworICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKKyAg
ICBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworCisgICAgYm9vbCBoYXNVc2Vy
bmFtZSgpIGNvbnN0OworICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKKyAgICBib29sIGhh
c1F1ZXJ5KCkgY29uc3Q7CisgICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OworICAgIGJvb2wg
aGFzUGF0aCgpIGNvbnN0OworCisgICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygpLCB0aGVz
ZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCisgICAgLy8gVGhpcyBp
cyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5n
IGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgorICAgIFN0cmluZyBlbmNvZGVkVXNlcigp
IGNvbnN0OworICAgIFN0cmluZyBlbmNvZGVkUGFzcygpIGNvbnN0OworCisgICAgU3RyaW5nIGJh
c2VBc1N0cmluZygpIGNvbnN0OworCisgICAgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7
CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMg
dGhlIHNhbWUgYXMgdGhlIG51bGwtCisgICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVudC4g
VGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KKyAgICBib29sIHByb3RvY29sSXMoY29u
c3QgY2hhciopIGNvbnN0OworICAgIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsK
KyAgICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiYmxv
YiIpOyB9CisgICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29s
SXMoImRhdGEiKTsgfQorICAgIFdURl9FWFBPUlQgYm9vbCBwcm90b2NvbElzQWJvdXQoKSBjb25z
dDsKKyAgICBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKKyAgICBib29sIGlzQmxhbmtVUkwoKSBjb25z
dDsKKyAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJl
QUJhc2VVUkw7IH0KKworICAgIGJvb2wgaXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmKSBj
b25zdDsKKworICAgIGJvb2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBz
ZXRIb3N0KGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCByZW1vdmVQb3J0KCk7CisgICAgdm9p
ZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKKworICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5j
b20iIG9yICJmb28uY29tOjgwMDAiLgorICAgIHZvaWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3Ry
aW5nJik7CisKKyAgICB2b2lkIHNldFVzZXIoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRQ
YXNzKGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBm
b3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5nIHBhdGgKKyAgICAvLyB3aWxsIGJl
ICIvIi4KKyAgICB2b2lkIHNldFBhdGgoY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBUaGUgcXVl
cnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBi
ZSBhZGRlZAorICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBz
dHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKKyAgICAvLyBVUkwgKHdpdGggbm90aGluZyBh
ZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgorICAgIHZv
aWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIHNldEZyYWdtZW50SWRlbnRp
ZmllcihTdHJpbmdWaWV3KTsKKyAgICB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwor
CisgICAgdm9pZCByZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOworCisgICAgc3Rh
dGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcpOworCisgICAgdW5zaWduZWQgcGF0
aFN0YXJ0KCkgY29uc3Q7CisgICAgdW5zaWduZWQgcGF0aEVuZCgpIGNvbnN0OworICAgIHVuc2ln
bmVkIHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0OworCisgICAgb3BlcmF0b3IgY29uc3QgU3Ry
aW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CisKKyNpZiBVU0UoQ0YpCisgICAgVVJM
KENGVVJMUmVmKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7
CisjZW5kaWYKKworI2lmIFVTRShTT1VQKQorICAgIFVSTChTb3VwVVJJKik7CisgICAgR1VuaXF1
ZVB0cjxTb3VwVVJJPiBjcmVhdGVTb3VwVVJJKCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShG
T1VOREFUSU9OKQorICAgIFVSTChOU1VSTCopOworICAgIG9wZXJhdG9yIE5TVVJMKigpIGNvbnN0
OworI2VuZGlmCisjaWZkZWYgX19PQkpDX18KKyAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25z
dCB7IHJldHVybiBzdHJpbmcoKTsgfQorI2VuZGlmCisKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9p
ZCBwcmludCgpIGNvbnN0OworI2VuZGlmCisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOworICAgIHRlbXBsYXRlIDxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVyJik7CisK
K3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNlcjsKKyAgICB2b2lkIGludmFsaWRh
dGUoKTsKKyAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNo
YXIqKTsKKyAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBj
b25zdDsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKKworICAgIGZyaWVuZCBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYpOworICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
cm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisgICAg
ZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwg
Y29uc3QgVVJMJik7CisKKyAgICBTdHJpbmcgbV9zdHJpbmc7CisKKyAgICB1bnNpZ25lZCBtX2lz
VmFsaWQgOiAxOworICAgIHVuc2lnbmVkIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA6IDE7Cisg
ICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNlVVJMIDogMTsKKworICAgIC8vIFRoaXMgaXMgb3V0
IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRzIGJldHRlci4gVGhlIHBvcnQgaXMgYWZ0ZXIgdGhl
IGhvc3QuCisgICAgdW5zaWduZWQgbV9wb3J0TGVuZ3RoIDogMzsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGggPSAoMSA8PCAzKSAtIDE7CisKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVtZUxlbmd0aCA9ICgxIDw8IDI2KSAtIDE7CisgICAg
dW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsKKyAgICB1bnNpZ25lZCBtX3VzZXJTdGFydDsKKyAg
ICB1bnNpZ25lZCBtX3VzZXJFbmQ7CisgICAgdW5zaWduZWQgbV9wYXNzd29yZEVuZDsKKyAgICB1
bnNpZ25lZCBtX2hvc3RFbmQ7CisgICAgdW5zaWduZWQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Cisg
ICAgdW5zaWduZWQgbV9wYXRoRW5kOworICAgIHVuc2lnbmVkIG1fcXVlcnlFbmQ7Cit9OworCitz
dGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09IHNpemVvZihTdHJpbmcpICsgOCAqIHNpemVvZih1
bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkgc21hbGwiKTsKKwordGVtcGxhdGUgPGNsYXNzIEVu
Y29kZXI+Cit2b2lkIFVSTDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2RlciA8PCBtX3N0cmluZzsKK30KKwordGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Citib29s
IFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVSTCYgdXJsKQoreworICAgIGF1dG8gb3B0
aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIW9wdGlvbmFsVVJMKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdXJsID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwpOwor
ICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0
aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyBz
dHJpbmc7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHJldHVybiBVUkwoVVJMKCksIHN0cmluZyk7Cit9CisKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5n
UXVlcnlBbmRGcmFnbWVudChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBV
UkwmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwg
Y29uc3QgVVJMJik7CisKK1dURl9FWFBPUlRfUFJJVkFURSBjb25zdCBVUkwmIGJsYW5rVVJMKCk7
CisKKy8vIEZ1bmN0aW9ucyB0byBkbyBVUkwgb3BlcmF0aW9ucyBvbiBzdHJpbmdzLgorLy8gVGhl
c2UgYXJlIG9wZXJhdGlvbnMgdGhhdCBhcmVuJ3QgZmFzdGVyIG9uIGEgcGFyc2VkIFVSTC4KKy8v
IFRoZXNlIGFyZSBhbHNvIGRpZmZlcmVudCBmcm9tIHRoZSBVUkwgZnVuY3Rpb25zIGluIHRoYXQg
dGhleSBkb24ndCByZXF1aXJlIHRoZSBzdHJpbmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUg
VVJMLgorLy8gVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFz
Y3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vzc2FyaWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgVVJMLgor
CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBjaGFyKiBwcm90b2NvbCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElz
SmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
cm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsKKworV1RGX0VY
UE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2woU3RyaW5nVmlldyBwcm90b2NvbCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2ts
aXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCisK
K1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZv
clRlc3RpbmcodWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBjbGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5n
KCk7CisKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJp
bmcmKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNv
bnN0IFN0cmluZyYgdXJsKTsKKworLy8gRklYTUU6IFRoaXMgaXMgYSB3cm9uZyBjb25jZXB0IHRv
IGV4cG9zZSwgZGlmZmVyZW50IHBhcnRzIG9mIGEgVVJMIG5lZWQgZGlmZmVyZW50IGVzY2FwaW5n
IHBlciB0aGUgVVJMIFN0YW5kYXJkLgorV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBlbmNvZGVX
aXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOworCisvLyBJbmxpbmVzLgorCitp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAg
IHJldHVybiBhLnN0cmluZygpID09IGIuc3RyaW5nKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIpCit7CisgICAgcmV0dXJuIGEuc3Ry
aW5nKCkgPT0gYjsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEs
IGNvbnN0IFVSTCYgYikKK3sKKyAgICByZXR1cm4gYSA9PSBiLnN0cmluZygpOworfQorCitpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIHJl
dHVybiBhLnN0cmluZygpICE9IGIuc3RyaW5nKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5n
KCkgIT0gYjsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNv
bnN0IFVSTCYgYikKK3sKKyAgICByZXR1cm4gYSAhPSBiLnN0cmluZygpOworfQorCisvLyBJbmxp
bmUgdmVyc2lvbnMgb2Ygc29tZSBub24tR29vZ2xlVVJMIGZ1bmN0aW9ucyBzbyB3ZSBjYW4gZ2V0
IGlubGluaW5nCisvLyB3aXRob3V0IGhhdmluZyB0byBoYXZlIGEgbG90IG9mIHVnbHkgaWZkZWZz
IGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLgorCitpbmxpbmUgYm9vbCBVUkw6OmlzTnVsbCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOworfQorCitpbmxpbmUgYm9vbCBV
Ukw6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7Cit9
CisKK2lubGluZSBib29sIFVSTDo6aXNWYWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNW
YWxpZDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpoYXNQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wYXRoRW5kICE9IG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKK30KKworaW5saW5lIGJv
b2wgVVJMOjpoYXNVc2VybmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXNlckVuZCA+IG1f
dXNlclN0YXJ0OworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc1Bhc3N3b3JkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wYXNzd29yZEVuZCA+IChtX3VzZXJFbmQgKyAxKTsKK30KKworaW5saW5l
IGJvb2wgVVJMOjpoYXNRdWVyeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcXVlcnlFbmQgPiBt
X3BhdGhFbmQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6aGFzRnJhZ21lbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kOwor
fQorCitpbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7Cit9CisKK2lubGluZSB1bnNpZ25l
ZCBVUkw6OnBhdGhTdGFydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faG9zdEVuZCArIG1fcG9y
dExlbmd0aDsKK30KKworaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aEVuZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcGF0aEVuZDsKK30KKworaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aEFmdGVy
TGFzdFNsYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Cit9
CisKK1dURl9FWFBPUlRfUFJJVkFURSBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgY29uc3QgVVJMJik7CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNo
PFVSTD47Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFVSTD47CisKK30gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMSGFzaC5oIGIvU291cmNlL1dU
Ri93dGYvVVJMSGFzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMmZhM2RjY2Y2NjEwMGZjODUwODY2ZWMzNTQ3
YTNhODZkZjliZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmgK
QEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIFVSTEhhc2hfaAorI2RlZmluZSBVUkxIYXNoX2gKKworI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgVVJMSGFz
aCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVVJMJiBrZXkpCisgICAgeworICAg
ICAgICByZXR1cm4ga2V5LnN0cmluZygpLmltcGwoKS0+aGFzaCgpOworICAgIH0KKworICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZ0hhc2g6OmVxdWFsKGEuc3RyaW5nKCksIGIuc3RyaW5nKCkpOworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gZmFsc2U7Cit9OworCisvLyBVUkxIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9yIFN0cmlu
ZwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJMPiB7CisgICAgdXNpbmcgSGFzaCA9
IFVSTEhhc2g7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFVSTD4gOiBTaW1w
bGVDbGFzc0hhc2hUcmFpdHM8VVJMPiB7IH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5k
aWYgLy8gVVJMSGFzaF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3Bw
IGIvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDlkNGI4MWY5ODIz
M2FkNGE5OTY5NWIzZTlkYTM0Y2IxY2U2Yzc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvVVJMUGFyc2VyLmNwcApAQCAtMCwwICsxLDI5MjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CisKKyNpbmNs
dWRlIDxhcnJheT4KKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+
CisjaW5jbHVkZSA8dW5pY29kZS91dGY4Lmg+CisjaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKKyNkZWZpbmUgVVJMX1BBUlNFUl9ERUJVR0dJTkcgMAorCisj
aWYgVVJMX1BBUlNFUl9ERUJVR0dJTkcKKyNkZWZpbmUgVVJMX1BBUlNFUl9MT0coLi4uKSBXVEZM
b2dBbHdheXMoX19WQV9BUkdTX18pCisjZWxzZQorI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4p
CisjZW5kaWYKKyAgICAKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitjbGFzcyBD
b2RlUG9pbnRJdGVyYXRvciB7CitwdWJsaWM6CisgICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJ
dGVyYXRvcigpIHsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3Qg
Q2hhcmFjdGVyVHlwZSogYmVnaW4sIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCkKKyAgICAgICAg
OiBtX2JlZ2luKGJlZ2luKQorICAgICAgICAsIG1fZW5kKGVuZCkKKyAgICB7CisgICAgfQorICAg
IAorICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ29kZVBvaW50SXRl
cmF0b3ImIGJlZ2luLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgZW5kKQorICAgICAgICA6IENv
ZGVQb2ludEl0ZXJhdG9yKGJlZ2luLm1fYmVnaW4sIGVuZC5tX2JlZ2luKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGVuZC5tX2JlZ2luID49IGJlZ2luLm1fYmVnaW4pOworICAgIH0KKyAgICAKKyAg
ICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgQUxXQVlTX0lO
TElORSBDb2RlUG9pbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOworCisgICAgQUxXQVlTX0lOTElO
RSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9iZWdpbgorICAgICAgICAg
ICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7CisgICAgfQorICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2lu
dEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKQorICAg
IHsKKyAgICAgICAgbV9iZWdpbiA9IG90aGVyLm1fYmVnaW47CisgICAgICAgIG1fZW5kID0gb3Ro
ZXIubV9lbmQ7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgYXRFbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYmVnaW4gPD0g
bV9lbmQpOworICAgICAgICByZXR1cm4gbV9iZWdpbiA+PSBtX2VuZDsKKyAgICB9CisgICAgCisg
ICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2luY2UoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogcmVmZXJlbmNlKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYmVnaW4gPj0gcmVm
ZXJlbmNlKTsKKyAgICAgICAgcmV0dXJuIG1fYmVnaW4gLSByZWZlcmVuY2U7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2luY2UoY29uc3QgQ29kZVBvaW50SXRl
cmF0b3ImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvZGVVbml0c1NpbmNl
KG90aGVyLm1fYmVnaW4pOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgY29uc3QgQ2hhcmFj
dGVyVHlwZSogbV9iZWdpbiB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBt
X2VuZCB7IG51bGxwdHIgfTsKK307CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgVUNoYXIz
MiBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKigpIGNvbnN0Cit7CisgICAgQVNT
RVJUKCFhdEVuZCgpKTsKKyAgICByZXR1cm4gKm1fYmVnaW47Cit9CisKK3RlbXBsYXRlPD4KK0FM
V0FZU19JTkxJTkUgYXV0byBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKysoKSAt
PiBDb2RlUG9pbnRJdGVyYXRvciYKK3sKKyAgICBtX2JlZ2luKys7CisgICAgcmV0dXJuICp0aGlz
OworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIFVDaGFyMzIgQ29kZVBvaW50SXRlcmF0
b3I8VUNoYXI+OjpvcGVyYXRvciooKSBjb25zdAoreworICAgIEFTU0VSVCghYXRFbmQoKSk7Cisg
ICAgVUNoYXIzMiBjOworICAgIFUxNl9HRVQobV9iZWdpbiwgMCwgMCwgbV9lbmQgLSBtX2JlZ2lu
LCBjKTsKKyAgICByZXR1cm4gYzsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBhdXRv
IENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJh
dG9yJgoreworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIHNpemVfdCBsZW5ndGggPSBtX2VuZCAt
IG1fYmVnaW47CisgICAgVTE2X0ZXRF8xKG1fYmVnaW4sIGksIGxlbmd0aCk7CisgICAgbV9iZWdp
biArPSBpOworICAgIHJldHVybiAqdGhpczsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgc3RhdGlj
IHZvaWQgYXBwZW5kQ29kZVBvaW50KFZlY3RvcjxVQ2hhcj4mIGRlc3RpbmF0aW9uLCBVQ2hhcjMy
IGNvZGVQb2ludCkKK3sKKyAgICBpZiAoVV9JU19CTVAoY29kZVBvaW50KSkgeworICAgICAgICBk
ZXN0aW5hdGlvbi5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNvZGVQb2ludCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGRlc3RpbmF0aW9uLnJlc2VydmVDYXBhY2l0eShkZXN0aW5h
dGlvbi5zaXplKCkgKyAyKTsKKyAgICBkZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X0xF
QUQoY29kZVBvaW50KSk7CisgICAgZGVzdGluYXRpb24udW5jaGVja2VkQXBwZW5kKFUxNl9UUkFJ
TChjb2RlUG9pbnQpKTsKK30KKworZW51bSBVUkxDaGFyYWN0ZXJDbGFzcyB7CisgICAgVXNlcklu
Zm8gPSAweDEsCisgICAgRGVmYXVsdCA9IDB4MiwKKyAgICBGb3JiaWRkZW5Ib3N0ID0gMHg0LAor
ICAgIFF1ZXJ5UGVyY2VudCA9IDB4OCwKKyAgICBTbGFzaFF1ZXN0aW9uT3JIYXNoID0gMHgxMCwK
KyAgICBWYWxpZFNjaGVtZSA9IDB4MjAsCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBjaGFy
YWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHgwCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDEKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4MgorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgz
CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDQKKyAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NQorICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg2CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweDcKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQs
IC8vIDB4OAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRl
bkhvc3QsIC8vIDB4OQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZv
cmJpZGRlbkhvc3QsIC8vIDB4QQorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhCCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEMK
KyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAv
LyAweEQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4RQorICAg
IFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhGCisgICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEwCisgICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAweDExCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDEyCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDEzCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE0Cisg
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE1CisgICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE2CisgICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE3CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweDE4CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDE5CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFB
CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFCCisgICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFDCisgICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFECisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDFFCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDFGCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9y
YmlkZGVuSG9zdCwgLy8gJyAnCisgICAgMCwgLy8gJyEnCisgICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAnIicKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJyMnCisgICAg
MCwgLy8gJyQnCisgICAgRm9yYmlkZGVuSG9zdCwgLy8gJyUnCisgICAgMCwgLy8gJyYnCisgICAg
MCwgLy8gJ1wnJworICAgIDAsIC8vICcoJworICAgIDAsIC8vICcpJworICAgIDAsIC8vICcqJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnKycKKyAgICAwLCAvLyAnLCcKKyAgICBWYWxpZFNjaGVtZSwg
Ly8gJy0nCisgICAgVmFsaWRTY2hlbWUsIC8vICcuJworICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVz
dGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICcvJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
MCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzEnCisgICAgVmFsaWRTY2hlbWUsIC8vICcyJworICAg
IFZhbGlkU2NoZW1lLCAvLyAnMycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzQnCisgICAgVmFsaWRT
Y2hlbWUsIC8vICc1JworICAgIFZhbGlkU2NoZW1lLCAvLyAnNicKKyAgICBWYWxpZFNjaGVtZSwg
Ly8gJzcnCisgICAgVmFsaWRTY2hlbWUsIC8vICc4JworICAgIFZhbGlkU2NoZW1lLCAvLyAnOScK
KyAgICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICc6JworICAgIFVzZXJJbmZvLCAvLyAn
OycKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0
LCAvLyAnPCcKKyAgICBVc2VySW5mbywgLy8gJz0nCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJz4nCisgICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgU2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICc/JworICAgIFVz
ZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ0AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdBJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnQicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0MnCisgICAgVmFs
aWRTY2hlbWUsIC8vICdEJworICAgIFZhbGlkU2NoZW1lLCAvLyAnRScKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJ0YnCisgICAgVmFsaWRTY2hlbWUsIC8vICdHJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
SCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0knCisgICAgVmFsaWRTY2hlbWUsIC8vICdKJworICAg
IFZhbGlkU2NoZW1lLCAvLyAnSycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0wnCisgICAgVmFsaWRT
Y2hlbWUsIC8vICdNJworICAgIFZhbGlkU2NoZW1lLCAvLyAnTicKKyAgICBWYWxpZFNjaGVtZSwg
Ly8gJ08nCisgICAgVmFsaWRTY2hlbWUsIC8vICdQJworICAgIFZhbGlkU2NoZW1lLCAvLyAnUScK
KyAgICBWYWxpZFNjaGVtZSwgLy8gJ1InCisgICAgVmFsaWRTY2hlbWUsIC8vICdTJworICAgIFZh
bGlkU2NoZW1lLCAvLyAnVCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1UnCisgICAgVmFsaWRTY2hl
bWUsIC8vICdWJworICAgIFZhbGlkU2NoZW1lLCAvLyAnVycKKyAgICBWYWxpZFNjaGVtZSwgLy8g
J1gnCisgICAgVmFsaWRTY2hlbWUsIC8vICdZJworICAgIFZhbGlkU2NoZW1lLCAvLyAnWicKKyAg
ICBVc2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICdbJworICAgIFVzZXJJbmZvIHwgU2xhc2hR
dWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICdcXCcKKyAgICBVc2VySW5mbyB8IEZv
cmJpZGRlbkhvc3QsIC8vICddJworICAgIFVzZXJJbmZvLCAvLyAnXicKKyAgICAwLCAvLyAnXycK
KyAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8vICdgJworICAgIFZhbGlkU2NoZW1lLCAvLyAnYScK
KyAgICBWYWxpZFNjaGVtZSwgLy8gJ2InCisgICAgVmFsaWRTY2hlbWUsIC8vICdjJworICAgIFZh
bGlkU2NoZW1lLCAvLyAnZCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2UnCisgICAgVmFsaWRTY2hl
bWUsIC8vICdmJworICAgIFZhbGlkU2NoZW1lLCAvLyAnZycKKyAgICBWYWxpZFNjaGVtZSwgLy8g
J2gnCisgICAgVmFsaWRTY2hlbWUsIC8vICdpJworICAgIFZhbGlkU2NoZW1lLCAvLyAnaicKKyAg
ICBWYWxpZFNjaGVtZSwgLy8gJ2snCisgICAgVmFsaWRTY2hlbWUsIC8vICdsJworICAgIFZhbGlk
U2NoZW1lLCAvLyAnbScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ24nCisgICAgVmFsaWRTY2hlbWUs
IC8vICdvJworICAgIFZhbGlkU2NoZW1lLCAvLyAncCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3En
CisgICAgVmFsaWRTY2hlbWUsIC8vICdyJworICAgIFZhbGlkU2NoZW1lLCAvLyAncycKKyAgICBW
YWxpZFNjaGVtZSwgLy8gJ3QnCisgICAgVmFsaWRTY2hlbWUsIC8vICd1JworICAgIFZhbGlkU2No
ZW1lLCAvLyAndicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3cnCisgICAgVmFsaWRTY2hlbWUsIC8v
ICd4JworICAgIFZhbGlkU2NoZW1lLCAvLyAneScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3onCisg
ICAgVXNlckluZm8gfCBEZWZhdWx0LCAvLyAneycKKyAgICBVc2VySW5mbywgLy8gJ3wnCisgICAg
VXNlckluZm8gfCBEZWZhdWx0LCAvLyAnfScKKyAgICAwLCAvLyAnficKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4N0YKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODAKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4ODEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODIKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4ODMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
ODUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODcK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODkKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OEEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEIKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OEMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEQKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OEUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEYKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OTAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTEKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OTIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTMKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OTQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTUKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OTYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OTgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUEK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUMKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OUQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUUKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OUYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTAKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QTEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTIKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QTMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTQKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QTUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTYKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QTcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTgKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QTkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QUIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUQK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUYKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QjAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjEKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QjIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjMKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QjQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjUKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QjYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjcKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QjgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjkKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QkEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkIKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QkMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QkUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzAK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzIKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QzMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzQKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QzUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzYKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QzcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzgKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QzkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0EKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4Q0IKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0MKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4Q0QKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0UKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4Q0YKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RDEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDMK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDUKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RDYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDcKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RDgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDkKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4REEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REIKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4REMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REQKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4REUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REYKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RTAKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTEKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RTIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RTQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTYK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTgKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RTkKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUEKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RUIKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUMKKyAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RUQKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUUKKyAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RUYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjAKKyAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RjEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjIKKyAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RjMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjQKKyAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RjUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjYKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RjcKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjgKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjkK
KyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkEKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkIKKyAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RkMKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkQKKyAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RkUKKyAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkYKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wg
aXNDMENvbnRyb2woQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8
PSAweDFGOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBib29sIGlzQzBDb250cm9sT3JTcGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rlcikg
eyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MjA7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNUYWJPck5ld2xpbmUoQ2hhcmFjdGVy
VHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweEQgJiYgY2hhcmFjdGVyID49
IDB4OSAmJiBjaGFyYWN0ZXIgIT0gMHhCICYmIGNoYXJhY3RlciAhPSAweEM7IH0KK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblNp
bXBsZUVuY29kZVNldChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVy
ID4gMHg3RSB8fCBpc0MwQ29udHJvbChjaGFyYWN0ZXIpOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5EZWZhdWx0RW5jb2Rl
U2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8
IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIERlZmF1bHQ7IH0KK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblVzZXJJ
bmZvRW5jb2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIg
PiAweDdFIHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFVzZXJJbmZvOyB9Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29s
IGlzUGVyY2VudE9yTm9uQVNDSUkoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuICFp
c0FTQ0lJKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09ICclJzsgfQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1NsYXNoUXVlc3Rp
b25Pckhhc2goQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAn
XFwnICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFNsYXNoUXVlc3Rpb25Pckhh
c2g7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3Rh
dGljIGJvb2wgaXNWYWxpZFNjaGVtZUNoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rlcikg
eyByZXR1cm4gY2hhcmFjdGVyIDw9ICd6JyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rl
cl0gJiBWYWxpZFNjaGVtZTsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoQ2hhcmFjdGVy
VHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXScgJiYgY2hhcmFjdGVyQ2xh
c3NUYWJsZVtjaGFyYWN0ZXJdICYgRm9yYmlkZGVuSG9zdDsgfQorQUxXQVlTX0lOTElORSBzdGF0
aWMgYm9vbCBzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKHVpbnQ4X3QgYnl0ZSwgY29uc3Qg
Ym9vbCYgdXJsSXNTcGVjaWFsKQoreworICAgIGlmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2J5dGVd
ICYgUXVlcnlQZXJjZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoYnl0ZSA9PSAn
XCcnICYmIHVybElzU3BlY2lhbCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KFVDaGFyIGMp
Cit7CisgICAgcmV0dXJuIFdURjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KGMpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBVUkxQYXJzZXI6OlJlcG9ydFN5bnRheFZpb2xh
dGlvbiByZXBvcnRTeW50YXhWaW9sYXRpb24+CitBTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2Vy
OjphZHZhbmNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgY29u
c3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4Vmlv
bGF0aW9uUG9zaXRpb24pCit7CisgICAgKytpdGVyYXRvcjsKKyAgICB3aGlsZSAoVU5MSUtFTFko
IWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAg
ICAgaWYgKHJlcG9ydFN5bnRheFZpb2xhdGlvbiA9PSBSZXBvcnRTeW50YXhWaW9sYXRpb246Olll
cykKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlv
blBvc2l0aW9uKTsKKyAgICAgICAgKytpdGVyYXRvcjsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6dGFrZXNUd29BZHZhbmNlc1Vu
dGlsRW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAg
IGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5j
ZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Cisg
ICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZh
bmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsK
KyAgICByZXR1cm4gaXRlcmF0b3IuYXRFbmQoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6OmlzV2luZG93c0RyaXZl
TGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAg
IGlmIChpdGVyYXRvci5hdEVuZCgpIHx8ICFpc0FTQ0lJQWxwaGEoKml0ZXJhdG9yKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4
VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0b3IgPT0gJ3wnKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQg
VVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKFVDaGFyMzIgY29kZVBvaW50KQoreworICAg
IEFTU0VSVChpc0FTQ0lJKGNvZGVQb2ludCkpOworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5
bnRheFZpb2xhdGlvbikpCisgICAgICAgIG1fYXNjaWlCdWZmZXIuYXBwZW5kKGNvZGVQb2ludCk7
Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFwcGVuZFRvQVNDSUlCdWZmZXIo
Y29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoVU5MSUtF
TFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQorICAgICAgICBtX2FzY2lpQnVmZmVyLmFwcGVu
ZChjaGFyYWN0ZXJzLCBsZW5ndGgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgordm9pZCBVUkxQYXJzZXI6OmFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7CisgICAgQVNTRVJUKGlzV2luZG93
c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigqaXRlcmF0
b3IpOworICAgIGFkdmFuY2UoaXRlcmF0b3IpOworICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQo
KSk7CisgICAgQVNTRVJUKCppdGVyYXRvciA9PSAnOicgfHwgKml0ZXJhdG9yID09ICd8Jyk7Cisg
ICAgaWYgKCppdGVyYXRvciA9PSAnfCcpCisgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRv
cik7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOworICAgIGFkdmFuY2UoaXRlcmF0b3Ip
OworfQorCitib29sIFVSTFBhcnNlcjo6Y29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3Qg
VVJMJiBiYXNlKQoreworICAgIGlmIChiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoIDwgYmFz
ZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGlmIChiYXNlLm1fc3RyaW5nLmlzOEJpdCgp
KSB7CisgICAgICAgICAgICBjb25zdCBMQ2hhciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJh
Y3RlcnM4KCk7CisgICAgICAgICAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gYyhiZWdpbiAr
IGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9z
dHJpbmcubGVuZ3RoKCkpOworICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMp
KSB7CisgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgY29uc3QgVUNoYXIqIGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJz
MTYoKTsKKyAgICAgICAgICAgIENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPiBjKGJlZ2luICsgYmFz
ZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmlu
Zy5sZW5ndGgoKSk7CisgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsK
KyAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9v
bCBVUkxQYXJzZXI6OnNob3VsZENvcHlGaWxlVVJMKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+IGl0ZXJhdG9yKQoreworICAgIGlmICghaXNXaW5kb3dzRHJpdmVMZXR0ZXIoaXRlcmF0
b3IpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2UoaXRlcmF0b3IpOworICAgIGlmIChpdGVy
YXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBhZHZhbmNlKGl0ZXJhdG9y
KTsKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuICFpc1NsYXNoUXVlc3Rpb25Pckhhc2goKml0ZXJhdG9yKTsKK30KKworc3RhdGljIHZv
aWQgcGVyY2VudEVuY29kZUJ5dGUodWludDhfdCBieXRlLCBWZWN0b3I8TENoYXI+JiBidWZmZXIp
Cit7CisgICAgYnVmZmVyLmFwcGVuZCgnJScpOworICAgIGJ1ZmZlci5hcHBlbmQodXBwZXJOaWJi
bGVUb0FTQ0lJSGV4RGlnaXQoYnl0ZSkpOworICAgIGJ1ZmZlci5hcHBlbmQobG93ZXJOaWJibGVU
b0FTQ0lJSGV4RGlnaXQoYnl0ZSkpOworfQorCit2b2lkIFVSTFBhcnNlcjo6cGVyY2VudEVuY29k
ZUJ5dGUodWludDhfdCBieXRlKQoreworICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlv
bik7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignJScpOworICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0ZSkpOworICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0ZSkpOworfQorCitjb25zdCBjaGFy
IHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkWzEwXSA9ICIlRUYlQkYlQkQi
OworY29uc3Qgc2l6ZV90IHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVu
Z3RoID0gc2l6ZW9mKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkKSAtIDE7
CisKK3RlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OnV0ZjhQZXJjZW50RW5jb2Rl
KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAg
ICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOworICAgIFVDaGFyMzIgY29kZVBvaW50ID0gKml0
ZXJhdG9yOworICAgIGlmIChMSUtFTFkoaXNBU0NJSShjb2RlUG9pbnQpKSkgeworICAgICAgICBp
ZiAoVU5MSUtFTFkoaXNJbkNvZGVTZXQoY29kZVBvaW50KSkpIHsKKyAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShjb2Rl
UG9pbnQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Y29kZVBvaW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGlzSW5Db2RlU2V0KGNvZGVQb2ludCksICJpc0luQ29kZVNldCBzaG91bGQgYWx3YXlzIHJl
dHVybiB0cnVlIGZvciBub24tQVNDSUkgY2hhcmFjdGVycyIpOworICAgIHN5bnRheFZpb2xhdGlv
bihpdGVyYXRvcik7CisgICAgCisgICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUihjb2RlUG9pbnQp
KSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4
UGVyY2VudEVuY29kZWQsIHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVu
Z3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICB1aW50OF90IGJ1ZmZlcltV
OF9NQVhfTEVOR1RIXTsKKyAgICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAgVThfQVBQRU5EX1VO
U0FGRShidWZmZXIsIG9mZnNldCwgY29kZVBvaW50KTsKKyAgICBmb3IgKGludDMyX3QgaSA9IDA7
IGkgPCBvZmZzZXQ7ICsraSkKKyAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnVmZmVyW2ldKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgdm9p
ZCBVUkxQYXJzZXI6OnV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7CisgICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsK
KyAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVyYXRvcjsKKyAgICBpZiAoTElLRUxZKGlzQVND
SUkoY29kZVBvaW50KSkpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZFBlcmNlbnRFbmNv
ZGVRdWVyeUJ5dGUoY29kZVBvaW50LCBtX3VybElzU3BlY2lhbCkpKSB7CisgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUo
Y29kZVBvaW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKGNvZGVQb2ludCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgc3ludGF4
VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAKKyAgICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKGNv
ZGVQb2ludCkpIHsKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihyZXBsYWNlbWVudENoYXJh
Y3RlclVURjhQZXJjZW50RW5jb2RlZCwgcmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVu
Y29kZWRMZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdWludDhfdCBidWZm
ZXJbVThfTUFYX0xFTkdUSF07CisgICAgaW50MzJfdCBvZmZzZXQgPSAwOworICAgIFU4X0FQUEVO
RF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQsIGNvZGVQb2ludCk7CisgICAgZm9yIChpbnQzMl90IGkg
PSAwOyBpIDwgb2Zmc2V0OyArK2kpIHsKKyAgICAgICAgYXV0byBieXRlID0gYnVmZmVyW2ldOwor
ICAgICAgICBpZiAoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3Bl
Y2lhbCkpCisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShieXRlKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6ZW5jb2RlTm9u
VVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIHNvdXJjZSwgY29uc3QgVVJMVGV4dEVuY29k
aW5nJiBlbmNvZGluZywgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3Ip
Cit7CisgICAgYXV0byBlbmNvZGVkID0gZW5jb2RpbmcuZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJp
bmdWaWV3KHNvdXJjZS5kYXRhKCksIHNvdXJjZS5zaXplKCkpKTsKKyAgICBhdXRvKiBkYXRhID0g
ZW5jb2RlZC5kYXRhKCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IGVuY29kZWQuc2l6ZSgpOworICAg
IAorICAgIGlmICghbGVuZ3RoID09ICFpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihpdGVyYXRvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
c2l6ZV90IGkgPSAwOworICAgIGZvciAoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQVNT
RVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKKyAgICAgICAgdWludDhfdCBieXRlID0gZGF0YVtpXTsK
KyAgICAgICAgaWYgKFVOTElLRUxZKGJ5dGUgIT0gKml0ZXJhdG9yKSkgeworICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGlmIChVTkxJS0VMWShzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGJ5dGUs
IG1fdXJsSXNTcGVjaWFsKSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRv
cik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGJ5dGUpOworICAgICAgICArK2l0ZXJhdG9yOworICAgIH0KKyAgICB3aGlsZSAoIWl0
ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkKKyAgICAgICAgKytp
dGVyYXRvcjsKKyAgICBBU1NFUlQoKGkgPT0gbGVuZ3RoKSA9PSBpdGVyYXRvci5hdEVuZCgpKTsK
KyAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIEFTU0VSVChtX2RpZFNlZVN5
bnRheFZpb2xhdGlvbik7CisgICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGRhdGFbaV07CisgICAgICAg
IGlmIChzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkK
KyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ5dGUpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGJ5dGUpOworICAgIH0KK30KKworc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1Zp
ZXcgc2NoZW1lKQoreworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBmdHBQb3J0ID0gMjE7Cisg
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGdvcGhlclBvcnQgPSA3MDsKKyAgICBzdGF0aWMgY29u
c3QgdWludDE2X3QgaHR0cFBvcnQgPSA4MDsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgaHR0
cHNQb3J0ID0gNDQzOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCB3c1BvcnQgPSA4MDsKKyAg
ICBzdGF0aWMgY29uc3QgdWludDE2X3Qgd3NzUG9ydCA9IDQ0MzsKKyAgICAKKyAgICBhdXRvIGxl
bmd0aCA9IHNjaGVtZS5sZW5ndGgoKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBzd2l0Y2ggKHNjaGVtZVswXSkgeworICAgIGNhc2UgJ3cnOgor
ICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgeworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBp
ZiAoc2NoZW1lWzFdID09ICdzJykKKyAgICAgICAgICAgICAgICByZXR1cm4gd3NQb3J0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAg
ICAgaWYgKHNjaGVtZVsxXSA9PSAncycKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0g
J3MnKQorICAgICAgICAgICAgICAgIHJldHVybiB3c3NQb3J0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIGNhc2UgJ2gnOgorICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewor
ICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JworICAgICAg
ICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVb
M10gPT0gJ3AnKQorICAgICAgICAgICAgICAgIHJldHVybiBodHRwUG9ydDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGNhc2UgNToKKyAgICAgICAgICAgIGlmIChz
Y2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JworICAg
ICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcKKyAgICAgICAgICAgICAgICAmJiBzY2hl
bWVbNF0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiBodHRwc1BvcnQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgIGNhc2UgJ2cnOgorICAgICAgICBp
ZiAobGVuZ3RoID09IDYKKyAgICAgICAgICAgICYmIHNjaGVtZVsxXSA9PSAnbycKKyAgICAgICAg
ICAgICYmIHNjaGVtZVsyXSA9PSAncCcKKyAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnaCcK
KyAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAnZScKKyAgICAgICAgICAgICYmIHNjaGVtZVs1
XSA9PSAncicpCisgICAgICAgICAgICByZXR1cm4gZ29waGVyUG9ydDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBjYXNlICdmJzoKKyAgICAgICAgaWYgKGxlbmd0aCA9PSAzCisg
ICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAmJiBzY2hlbWVbMl0g
PT0gJ3AnKQorICAgICAgICAgICAgcmV0dXJuIGZ0cFBvcnQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB9Cit9CisKK2VudW0gY2xhc3MgU2NoZW1lIHsKKyAgICBXUywKKyAgICBXU1MsCisgICAgRmls
ZSwKKyAgICBGVFAsCisgICAgR29waGVyLAorICAgIEhUVFAsCisgICAgSFRUUFMsCisgICAgTm9u
U3BlY2lhbAorfTsKKworQUxXQVlTX0lOTElORSBzdGF0aWMgU2NoZW1lIHNjaGVtZShTdHJpbmdW
aWV3IHNjaGVtZSkKK3sKKyAgICBhdXRvIGxlbmd0aCA9IHNjaGVtZS5sZW5ndGgoKTsKKyAgICBp
ZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICBzd2l0
Y2ggKHNjaGVtZVswXSkgeworICAgIGNhc2UgJ2YnOgorICAgICAgICBzd2l0Y2ggKGxlbmd0aCkg
eworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JworICAg
ICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFNjaGVtZTo6RlRQOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAg
ICAgICAgY2FzZSA0OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAnaScKKyAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ2wnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNd
ID09ICdlJykKKyAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpGaWxlOworICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIH0KKyAgICBjYXNlICdnJzoK
KyAgICAgICAgaWYgKGxlbmd0aCA9PSA2CisgICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0gJ28n
CisgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnCisgICAgICAgICAgICAmJiBzY2hlbWVb
M10gPT0gJ2gnCisgICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ2UnCisgICAgICAgICAgICAm
JiBzY2hlbWVbNV0gPT0gJ3InKQorICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6R29waGVyOwor
ICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgIGNhc2UgJ2gnOgorICAgICAg
ICBzd2l0Y2ggKGxlbmd0aCkgeworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICBpZiAoc2No
ZW1lWzFdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKKyAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnKQorICAgICAgICAgICAgICAgIHJldHVybiBT
Y2hlbWU6OkhUVFA7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAg
ICAgICBjYXNlIDU6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JworICAgICAgICAg
ICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10g
PT0gJ3AnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdzJykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gU2NoZW1lOjpIVFRQUzsKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5v
blNwZWNpYWw7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpO
b25TcGVjaWFsOworICAgICAgICB9CisgICAgY2FzZSAndyc6CisgICAgICAgIHN3aXRjaCAobGVu
Z3RoKSB7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3Mn
KQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OldTOworICAgICAgICAgICAgcmV0dXJu
IFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgaWYgKHNj
aGVtZVsxXSA9PSAncycKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3MnKQorICAg
ICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OldTUzsKKyAgICAgICAgICAgIHJldHVybiBTY2hl
bWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gU2No
ZW1lOjpOb25TcGVjaWFsOworICAgICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICB9Cit9CisKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBV
UkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQor
eworICAgIGlmIChzY2hlbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgaWYgKCFpc0FTQ0lJQWxwaGEoc2NoZW1lWzBdKSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgc2NoZW1lLmxlbmd0aCgp
OyArK2kpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYW51bWVyaWMoc2NoZW1lW2ldKSB8fCBz
Y2hlbWVbaV0gPT0gJysnIHx8IHNjaGVtZVtpXSA9PSAnLScgfHwgc2NoZW1lW2ldID09ICcuJykK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IH0KKworICAgIHJldHVybiBzY2hlbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKK30KKwor
Ym9vbCBVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZUFyZykK
K3sKKyAgICByZXR1cm4gc2NoZW1lKHNjaGVtZUFyZykgIT0gU2NoZW1lOjpOb25TcGVjaWFsOwor
fQorCitlbnVtIGNsYXNzIFVSTFBhcnNlcjo6VVJMUGFydCB7CisgICAgU2NoZW1lRW5kLAorICAg
IFVzZXJTdGFydCwKKyAgICBVc2VyRW5kLAorICAgIFBhc3N3b3JkRW5kLAorICAgIEhvc3RFbmQs
CisgICAgUG9ydEVuZCwKKyAgICBQYXRoQWZ0ZXJMYXN0U2xhc2gsCisgICAgUGF0aEVuZCwKKyAg
ICBRdWVyeUVuZCwKK307CisKK3NpemVfdCBVUkxQYXJzZXI6OnVybExlbmd0aFVudGlsUGFydChj
b25zdCBVUkwmIHVybCwgVVJMUGFydCBwYXJ0KQoreworICAgIHN3aXRjaCAocGFydCkgeworICAg
IGNhc2UgVVJMUGFydDo6UXVlcnlFbmQ6CisgICAgICAgIHJldHVybiB1cmwubV9xdWVyeUVuZDsK
KyAgICBjYXNlIFVSTFBhcnQ6OlBhdGhFbmQ6CisgICAgICAgIHJldHVybiB1cmwubV9wYXRoRW5k
OworICAgIGNhc2UgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoOgorICAgICAgICByZXR1cm4g
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgIGNhc2UgVVJMUGFydDo6UG9ydEVuZDoKKyAg
ICAgICAgcmV0dXJuIHVybC5tX2hvc3RFbmQgKyB1cmwubV9wb3J0TGVuZ3RoOworICAgIGNhc2Ug
VVJMUGFydDo6SG9zdEVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX2hvc3RFbmQ7CisgICAgY2Fz
ZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3Bhc3N3b3JkRW5k
OworICAgIGNhc2UgVVJMUGFydDo6VXNlckVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3VzZXJF
bmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpVc2VyU3RhcnQ6CisgICAgICAgIHJldHVybiB1cmwubV91
c2VyU3RhcnQ7CisgICAgY2FzZSBVUkxQYXJ0OjpTY2hlbWVFbmQ6CisgICAgICAgIHJldHVybiB1
cmwubV9zY2hlbWVFbmQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiAwOworfQorCit2b2lkIFVSTFBhcnNlcjo6Y29weUFTQ0lJU3RyaW5nVW50aWwoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIHNpemVfdCBsZW5ndGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobGVu
Z3RoIDw9IHN0cmluZy5sZW5ndGgoKSk7CisgICAgaWYgKHN0cmluZy5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7CisgICAgaWYg
KHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihzdHJpbmcuY2hh
cmFjdGVyczgoKSwgbGVuZ3RoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIFVDaGFyIGMgPSBjaGFyYWN0ZXJz
W2ldOworICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXNBU0NJ
SShjKSk7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGMpOworICAgICAgICB9Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgordm9pZCBVUkxQYXJz
ZXI6OmNvcHlVUkxQYXJ0c1VudGlsKGNvbnN0IFVSTCYgYmFzZSwgVVJMUGFydCBwYXJ0LCBjb25z
dCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0IFVSTFRl
eHRFbmNvZGluZyomIG5vblVURjhRdWVyeUVuY29kaW5nKQoreworICAgIHN5bnRheFZpb2xhdGlv
bihpdGVyYXRvcik7CisKKyAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7CisgICAgY29weUFTQ0lJ
U3RyaW5nVW50aWwoYmFzZS5tX3N0cmluZywgdXJsTGVuZ3RoVW50aWxQYXJ0KGJhc2UsIHBhcnQp
KTsKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAgICBjYXNlIFVSTFBhcnQ6OlF1ZXJ5RW5kOgorICAg
ICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gYmFzZS5tX3F1ZXJ5RW5kOworICAgICAgICBGQUxMVEhS
T1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhdGhFbmQ6CisgICAgICAgIG1fdXJsLm1fcGF0aEVu
ZCA9IGJhc2UubV9wYXRoRW5kOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBh
cnQ6OlBhdGhBZnRlckxhc3RTbGFzaDoKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBiYXNlLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBGQUxMVEhST1VHSDsKKyAg
ICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IGJh
c2UubV9wb3J0TGVuZ3RoOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6
Okhvc3RFbmQ6CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGJhc2UubV9ob3N0RW5kOworICAg
ICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhc3N3b3JkRW5kOgorICAgICAg
ICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gYmFzZS5tX3Bhc3N3b3JkRW5kOworICAgICAgICBGQUxM
VEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlVzZXJFbmQ6CisgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IGJhc2UubV91c2VyRW5kOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVS
TFBhcnQ6OlVzZXJTdGFydDoKKyAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBiYXNlLm1fdXNl
clN0YXJ0OworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFVSTFBhcnQ6OlNjaGVtZUVu
ZDoKKyAgICAgICAgbV91cmwubV9pc1ZhbGlkID0gYmFzZS5tX2lzVmFsaWQ7CisgICAgICAgIG1f
dXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGJhc2UubV9wcm90b2NvbElzSW5IVFRQRmFt
aWx5OworICAgICAgICBtX3VybC5tX3NjaGVtZUVuZCA9IGJhc2UubV9zY2hlbWVFbmQ7CisgICAg
fQorICAgIHN3aXRjaCAoc2NoZW1lKFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZlci5kYXRhKCksIG1f
dXJsLm1fc2NoZW1lRW5kKSkpIHsKKyAgICBjYXNlIFNjaGVtZTo6V1M6CisgICAgY2FzZSBTY2hl
bWU6OldTUzoKKyAgICAgICAgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAg
ICBtX3VybElzU3BlY2lhbCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFNjaGVt
ZTo6RmlsZToKKyAgICAgICAgbV91cmxJc0ZpbGUgPSB0cnVlOworICAgICAgICBGQUxMVEhST1VH
SDsKKyAgICBjYXNlIFNjaGVtZTo6RlRQOgorICAgIGNhc2UgU2NoZW1lOjpHb3BoZXI6CisgICAg
Y2FzZSBTY2hlbWU6OkhUVFA6CisgICAgY2FzZSBTY2hlbWU6OkhUVFBTOgorICAgICAgICBtX3Vy
bElzU3BlY2lhbCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFNjaGVtZTo6Tm9u
U3BlY2lhbDoKKyAgICAgICAgbV91cmxJc1NwZWNpYWwgPSBmYWxzZTsKKyAgICAgICAgbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgY29uc3QgY2hhciBkb3RBU0NJSUNvZGVb
Ml0gPSB7JzInLCAnZSd9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxX
QVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQoreworICAgIGlmIChjLmF0RW5kKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmMgPT0gJy4nKSB7CisgICAgICAgIGFkdmFuY2U8
Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgICAgIHJl
dHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKTsKKyAgICB9CisgICAg
aWYgKCpjICE9ICclJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFj
dGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgaWYgKGMuYXRFbmQo
KSB8fCAqYyAhPSBkb3RBU0NJSUNvZGVbMF0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBh
ZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOworICAg
IGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAodG9BU0NJSUxv
d2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pIHsKKyAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJU
eXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICAgICAgcmV0dXJuIGMuYXRF
bmQoKSB8fCBpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5MSU5F
IGJvb2wgVVJMUGFyc2VyOjppc0RvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+IGMpCit7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJU
eXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICAgICAgcmV0dXJuIGlzU2lu
Z2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAgfQorICAgIGlmICgqYyAhPSAnJScpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZp
b2xhdGlvbjo6Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkgfHwgKmMgIT0gZG90QVNDSUlDb2Rl
WzBdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBS
ZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2Rl
WzFdKSB7CisgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uOjpObz4oYyk7CisgICAgICAgIHJldHVybiBpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6Y29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBjKQoreworICAgIEFTU0VSVChpc1NpbmdsZURv
dFBhdGhTZWdtZW50KGMpKTsKKyAgICBpZiAoKmMgPT0gJy4nKSB7CisgICAgICAgIGFkdmFuY2Uo
Yyk7CisgICAgICAgIGlmICghYy5hdEVuZCgpKSB7CisgICAgICAgICAgICBpZiAoKmMgPT0gJy8n
IHx8ICpjID09ICdcXCcpCisgICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlQoKmMgPT0gJz8nIHx8ICpjID09ICcjJyk7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoKmMgPT0gJyUnKTsKKyAgICAg
ICAgYWR2YW5jZShjKTsKKyAgICAgICAgQVNTRVJUKCpjID09IGRvdEFTQ0lJQ29kZVswXSk7Cisg
ICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXIoKmMpID09IGRv
dEFTQ0lJQ29kZVsxXSk7CisgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgIGlmICghYy5hdEVu
ZCgpKSB7CisgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpCisgICAgICAg
ICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBB
U1NFUlQoKmMgPT0gJz8nIHx8ICpjID09ICcjJyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6Y29uc3VtZURv
dWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBjKQor
eworICAgIEFTU0VSVChpc0RvdWJsZURvdFBhdGhTZWdtZW50KGMpKTsKKyAgICBpZiAoKmMgPT0g
Jy4nKQorICAgICAgICBhZHZhbmNlKGMpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoKmMg
PT0gJyUnKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgQVNTRVJUKCpjID09IGRvdEFT
Q0lJQ29kZVswXSk7CisgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgIEFTU0VSVCh0b0FTQ0lJ
TG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSk7CisgICAgICAgIGFkdmFuY2UoYyk7CisgICAg
fQorICAgIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKK30KKworYm9vbCBVUkxQYXJz
ZXI6OnNob3VsZFBvcFBhdGgodW5zaWduZWQgbmV3UGF0aEFmdGVyTGFzdFNsYXNoKQoreworICAg
IEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgaWYgKCFtX3VybElzRmlsZSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBBU1NFUlQobV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPD0gbV9hc2NpaUJ1ZmZlci5zaXplKCkpOworICAgIENvZGVQb2ludEl0ZXJhdG9yPExD
aGFyPiBjb21wb25lbnRUb1BvcCgmbV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hd
LCAmbV9hc2NpaUJ1ZmZlclswXSArIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKKyAgICBp
ZiAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID09IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9y
dExlbmd0aCArIDEgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoY29tcG9uZW50VG9Qb3ApKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVVJMUGFyc2Vy
Ojpwb3BQYXRoKCkKK3sKKyAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOworICAg
IGlmIChtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA+IG1fdXJsLm1faG9zdEVuZCArIG1fdXJs
Lm1fcG9ydExlbmd0aCArIDEpIHsKKyAgICAgICAgYXV0byBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCAtIDE7CisgICAgICAgIGlmIChtX2FzY2lpQnVm
ZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0gPT0gJy8nKQorICAgICAgICAgICAgbmV3UGF0aEFm
dGVyTGFzdFNsYXNoLS07CisgICAgICAgIHdoaWxlIChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPiBt
X3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggJiYgbV9hc2NpaUJ1ZmZlcltuZXdQ
YXRoQWZ0ZXJMYXN0U2xhc2hdICE9ICcvJykKKyAgICAgICAgICAgIG5ld1BhdGhBZnRlckxhc3RT
bGFzaC0tOworICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2grKzsKKyAgICAgICAgaWYgKHNo
b3VsZFBvcFBhdGgobmV3UGF0aEFmdGVyTGFzdFNsYXNoKSkKKyAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gbmV3UGF0aEFmdGVyTGFzdFNsYXNoOworICAgIH0KKyAgICBt
X2FzY2lpQnVmZmVyLnJlc2l6ZShtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6c3ludGF4Vmlv
bGF0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikK
K3sKKyAgICBpZiAobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7CisgICAgCisgICAgQVNTRVJUKG1fYXNj
aWlCdWZmZXIuaXNFbXB0eSgpKTsKKyAgICBzaXplX3QgY29kZVVuaXRzVG9Db3B5ID0gaXRlcmF0
b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBDaGFyYWN0ZXJUeXBlKj4o
bV9pbnB1dEJlZ2luKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29kZVVuaXRzVG9Db3B5IDw9IG1f
aW5wdXRTdHJpbmcubGVuZ3RoKCkpOworICAgIG1fYXNjaWlCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5
KG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29k
ZVVuaXRzVG9Db3B5OyArK2kpIHsKKyAgICAgICAgQVNTRVJUKGlzQVNDSUkobV9pbnB1dFN0cmlu
Z1tpXSkpOworICAgICAgICBtX2FzY2lpQnVmZmVyLnVuY2hlY2tlZEFwcGVuZChtX2lucHV0U3Ry
aW5nW2ldKTsKKyAgICB9Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpmYWlsdXJlKCkKK3sKKyAgICBt
X3VybC5pbnZhbGlkYXRlKCk7CisgICAgbV91cmwubV9zdHJpbmcgPSBtX2lucHV0U3RyaW5nOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OmNo
ZWNrTG9jYWxob3N0Q29kZVBvaW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvciwgVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkg
fHwgdG9BU0NJSUxvd2VyKCppdGVyYXRvcikgIT0gY29kZVBvaW50KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246
Ok5vPihpdGVyYXRvcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6aXNBdExvY2FsaG9zdChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBpZiAoIWNoZWNrTG9jYWxo
b3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbCcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ28nKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdj
JykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBv
aW50KGl0ZXJhdG9yLCAnYScpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVj
a0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2wnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdoJykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJh
dG9yLCAnbycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9z
dENvZGVQb2ludChpdGVyYXRvciwgJ3MnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICd0JykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gaXRlcmF0b3IuYXRFbmQoKTsKK30KKworYm9vbCBVUkxQYXJz
ZXI6OmlzTG9jYWxob3N0KFN0cmluZ1ZpZXcgdmlldykKK3sKKyAgICBpZiAodmlldy5pczhCaXQo
KSkKKyAgICAgICAgcmV0dXJuIGlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+
KHZpZXcuY2hhcmFjdGVyczgoKSwgdmlldy5jaGFyYWN0ZXJzOCgpICsgdmlldy5sZW5ndGgoKSkp
OworICAgIHJldHVybiBpc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPih2aWV3
LmNoYXJhY3RlcnMxNigpLCB2aWV3LmNoYXJhY3RlcnMxNigpICsgdmlldy5sZW5ndGgoKSkpOwor
fQorCitBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXcgVVJMUGFyc2VyOjpwYXJzZWREYXRhVmlldyhz
aXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKFVOTElLRUxZKG1fZGlkU2Vl
U3ludGF4VmlvbGF0aW9uKSkgeworICAgICAgICBBU1NFUlQoc3RhcnQgKyBsZW5ndGggPD0gbV9h
c2NpaUJ1ZmZlci5zaXplKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhtX2FzY2lpQnVm
ZmVyLmRhdGEoKSArIHN0YXJ0LCBsZW5ndGgpOworICAgIH0KKyAgICBBU1NFUlQoc3RhcnQgKyBs
ZW5ndGggPD0gbV9pbnB1dFN0cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXco
bV9pbnB1dFN0cmluZykuc3Vic3RyaW5nKHN0YXJ0LCBsZW5ndGgpOworfQorCitBTFdBWVNfSU5M
SU5FIFVDaGFyIFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXcoc2l6ZV90IHBvc2l0aW9uKQorewor
ICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCisgICAgICAgIHJldHVy
biBtX2FzY2lpQnVmZmVyW3Bvc2l0aW9uXTsKKyAgICByZXR1cm4gbV9pbnB1dFN0cmluZ1twb3Np
dGlvbl07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5M
SU5FIHNpemVfdCBVUkxQYXJzZXI6OmN1cnJlbnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7CisgICAgaWYgKFVOTElLRUxZKG1fZGlk
U2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAgICAgcmV0dXJuIG1fYXNjaWlCdWZmZXIuc2l6ZSgp
OworICAgIAorICAgIHJldHVybiBpdGVyYXRvci5jb2RlVW5pdHNTaW5jZShyZWludGVycHJldF9j
YXN0PGNvbnN0IENoYXJhY3RlclR5cGUqPihtX2lucHV0QmVnaW4pKTsKK30KKworVVJMUGFyc2Vy
OjpVUkxQYXJzZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwgY29uc3QgVVJMJiBiYXNlLCBjb25zdCBV
UkxUZXh0RW5jb2RpbmcqIG5vblVURjhRdWVyeUVuY29kaW5nKQorICAgIDogbV9pbnB1dFN0cmlu
ZyhpbnB1dCkKK3sKKyAgICBpZiAoaW5wdXQuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKGJhc2Uu
aXNWYWxpZCgpICYmICFiYXNlLm1fY2Fubm90QmVBQmFzZVVSTCkgeworICAgICAgICAgICAgbV91
cmwgPSBiYXNlOworICAgICAgICAgICAgbV91cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChpbnB1dC5pczhC
aXQoKSkgeworICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1dC5jaGFyYWN0ZXJzOCgpOworICAg
ICAgICBwYXJzZShpbnB1dC5jaGFyYWN0ZXJzOCgpLCBpbnB1dC5sZW5ndGgoKSwgYmFzZSwgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1faW5wdXRCZWdpbiA9
IGlucHV0LmNoYXJhY3RlcnMxNigpOworICAgICAgICBwYXJzZShpbnB1dC5jaGFyYWN0ZXJzMTYo
KSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICB9CisK
KyAgICBBU1NFUlQoIW1fdXJsLm1faXNWYWxpZAorICAgICAgICB8fCBtX2RpZFNlZVN5bnRheFZp
b2xhdGlvbiA9PSAobV91cmwuc3RyaW5nKCkgIT0gaW5wdXQpCisgICAgICAgIHx8IChpbnB1dC5p
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQzBDb250cm9sT3JTcGFjZT4oKQorICAgICAgICAgICAg
JiYgbV91cmwubV9zdHJpbmcgPT0gYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9xdWVyeUVuZCkp
KTsKKyAgICBBU1NFUlQoaW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KG1fdXJsKSk7CisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorICAgIGlmICghbV9kaWRTZWVTeW50YXhWaW9sYXRpb24pIHsKKyAgICAg
ICAgLy8gRm9yY2UgYSBzeW50YXggdmlvbGF0aW9uIGF0IHRoZSBiZWdpbm5pbmcgdG8gbWFrZSBz
dXJlIHdlIGdldCB0aGUgc2FtZSByZXN1bHQuCisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFr
ZVN0cmluZygiICIsIGlucHV0KSwgYmFzZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAg
ICBVUkwgcGFyc2VkID0gcGFyc2VyLnJlc3VsdCgpOworICAgICAgICBpZiAocGFyc2VkLmlzVmFs
aWQoKSkKKyAgICAgICAgICAgIEFTU0VSVChhbGxWYWx1ZXNFcXVhbChwYXJzZXIucmVzdWx0KCks
IG1fdXJsKSk7CisgICAgfQorI2VuZGlmCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogaW5wdXQs
IGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVVJMJiBiYXNlLCBjb25zdCBVUkxUZXh0RW5j
b2RpbmcqIG5vblVURjhRdWVyeUVuY29kaW5nKQoreworICAgIFVSTF9QQVJTRVJfTE9HKCJQYXJz
aW5nIFVSTCA8JXM+IGJhc2UgPCVzPiIsIFN0cmluZyhpbnB1dCwgbGVuZ3RoKS51dGY4KCkuZGF0
YSgpLCBiYXNlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIG1fdXJsID0geyB9OworICAg
IEFTU0VSVChtX2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7CisKKyAgICBWZWN0b3I8VUNoYXI+IHF1
ZXJ5QnVmZmVyOworCisgICAgdW5zaWduZWQgZW5kSW5kZXggPSBsZW5ndGg7CisgICAgd2hpbGUg
KFVOTElLRUxZKGVuZEluZGV4ICYmIGlzQzBDb250cm9sT3JTcGFjZShpbnB1dFtlbmRJbmRleCAt
IDFdKSkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KGlucHV0LCBpbnB1dCkpOworICAgICAgICBlbmRJbmRleC0tOworICAgIH0KKyAg
ICBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKGlucHV0LCBpbnB1dCArIGVuZElu
ZGV4KTsKKyAgICBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBhdXRob3JpdHlPckhv
c3RCZWdpbjsKKyAgICBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBxdWVyeUJlZ2lu
OworICAgIHdoaWxlIChVTkxJS0VMWSghYy5hdEVuZCgpICYmIGlzQzBDb250cm9sT3JTcGFjZSgq
YykpKSB7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgKytjOworICAgIH0K
KyAgICBhdXRvIGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2UgPSBjOworCisgICAgZW51bSBjbGFz
cyBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBTY2hlbWVTdGFydCwKKyAgICAgICAgU2NoZW1l
LAorICAgICAgICBOb1NjaGVtZSwKKyAgICAgICAgU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHks
CisgICAgICAgIFBhdGhPckF1dGhvcml0eSwKKyAgICAgICAgUmVsYXRpdmUsCisgICAgICAgIFJl
bGF0aXZlU2xhc2gsCisgICAgICAgIFNwZWNpYWxBdXRob3JpdHlTbGFzaGVzLAorICAgICAgICBT
cGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcywKKyAgICAgICAgQXV0aG9yaXR5T3JIb3N0LAor
ICAgICAgICBIb3N0LAorICAgICAgICBGaWxlLAorICAgICAgICBGaWxlU2xhc2gsCisgICAgICAg
IEZpbGVIb3N0LAorICAgICAgICBQYXRoU3RhcnQsCisgICAgICAgIFBhdGgsCisgICAgICAgIENh
bm5vdEJlQUJhc2VVUkxQYXRoLAorICAgICAgICBVVEY4UXVlcnksCisgICAgICAgIE5vblVURjhR
dWVyeSwKKyAgICAgICAgRnJhZ21lbnQsCisgICAgfTsKKworI2RlZmluZSBMT0dfU1RBVEUoeCkg
VVJMX1BBUlNFUl9MT0coIlN0YXRlICVzLCBjb2RlIHBvaW50ICVjLCBwYXJzZWQgZGF0YSA8JXM+
IHNpemUgJXp1IiwgeCwgKmMsIHBhcnNlZERhdGFWaWV3KDAsIGN1cnJlbnRQb3NpdGlvbihjKSku
dXRmOCgpLmRhdGEoKSwgY3VycmVudFBvc2l0aW9uKGMpKQorI2RlZmluZSBMT0dfRklOQUxfU1RB
VEUoeCkgVVJMX1BBUlNFUl9MT0coIkZpbmFsIFN0YXRlOiAlcyIsIHgpCisKKyAgICBTdGF0ZSBz
dGF0ZSA9IFN0YXRlOjpTY2hlbWVTdGFydDsKKyAgICB3aGlsZSAoIWMuYXRFbmQoKSkgeworICAg
ICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKmMpKSkgeworICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgKytjOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgU3Rh
dGU6OlNjaGVtZVN0YXJ0OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJTY2hlbWVTdGFydCIpOwor
ICAgICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYSgqYykpIHsKKyAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoaXNBU0NJSVVwcGVyKCpjKSkpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlM
b3dlcigqYykpOworICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAg
aWYgKGMuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFy
KCk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAgICAg
ICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xBbmRTcGFjZTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OlNjaGVtZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
U3RhdGU6OlNjaGVtZToKKyAgICAgICAgICAgIExPR19TVEFURSgiU2NoZW1lIik7CisgICAgICAg
ICAgICBpZiAoaXNWYWxpZFNjaGVtZUNoYXJhY3RlcigqYykpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKCpjKSkpCisgICAgICAgICAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVND
SUlMb3dlcigqYykpOworICAgICAgICAgICAgfSBlbHNlIGlmICgqYyA9PSAnOicpIHsKKyAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBzY2hlbWVFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAg
ICAgICAgICAgICAgaWYgKHNjaGVtZUVuZCA+IFVSTDo6bWF4U2NoZW1lTGVuZ3RoKSB7CisgICAg
ICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX3VybC5tX3NjaGVtZUVuZCA9IHNj
aGVtZUVuZDsKKyAgICAgICAgICAgICAgICBTdHJpbmdWaWV3IHVybFNjaGVtZSA9IHBhcnNlZERh
dGFWaWV3KDAsIG1fdXJsLm1fc2NoZW1lRW5kKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChzY2hlbWUodXJsU2NoZW1l
KSkgeworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpGaWxlOgorICAgICAgICAgICAgICAg
ICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsSXNG
aWxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKKyAg
ICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIFNjaGVtZTo6V1M6CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6
OldTUzoKKyAgICAgICAgICAgICAgICAgICAgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRy
OworICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChiYXNlLnByb3RvY29sSXModXJsU2NoZW1lKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OworICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczsKKyAgICAgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6
SFRUUDoKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6SFRUUFM6CisgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpGVFA6
CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkdvcGhlcjoKKyAgICAgICAgICAgICAgICAg
ICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5w
cm90b2NvbElzKHVybFNjaGVtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eTsKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0
eVNsYXNoZXM7CisgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6Ok5vblNwZWNpYWw6CisgICAgICAg
ICAgICAgICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBtYXliZVNsYXNoID0gYzsKKyAgICAgICAgICAgICAgICAgICAgYWR2YW5j
ZShtYXliZVNsYXNoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXliZVNsYXNoLmF0RW5k
KCkgJiYgKm1heWJlU2xhc2ggPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gbWF5YmVT
bGFzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGhPckF1dGhv
cml0eTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgqYyA9PSAnLycpOworICAgICAg
ICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91
c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owor
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5t
X3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fY2Fubm90QmVBQmFz
ZVVSTCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpDYW5u
b3RCZUFCYXNlVVJMUGF0aDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIo
KTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKKyAgICAgICAgICAg
ICAgICBjID0gYmVnaW5BZnRlckNvbnRyb2xBbmRTcGFjZTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICBp
ZiAoYy5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwor
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAgICAgICAgICAgICAg
IGMgPSBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6Ok5vU2NoZW1lOgorICAgICAgICAgICAgTE9H
X1NUQVRFKCJOb1NjaGVtZSIpOworICAgICAgICAgICAgaWYgKCFiYXNlLmlzVmFsaWQoKSB8fCAo
YmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwgJiYgKmMgIT0gJyMnKSkgeworICAgICAgICAgICAgICAg
IGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwgJiYgKmMgPT0gJyMnKSB7CisgICAg
ICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMs
IG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpG
cmFnbWVudDsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7CisgICAg
ICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKCFiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6
U2NoZW1lRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0
aG9yaXR5OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0
eSIpOworICAgICAgICAgICAgaWYgKCpjID09ICcvJykgeworICAgICAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAg
ICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVj
aWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsKKyAgICAgICAgICAgICAgICAgICAgKytjOworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpS
ZWxhdGl2ZVNsYXNoOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6UmVsYXRpdmU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0
ZTo6UGF0aE9yQXV0aG9yaXR5OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoT3JBdXRob3Jp
dHkiKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0
aG9yaXR5T3JIb3N0OworICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICAg
ICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAg
ICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQocGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkg
PT0gJy8nKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3Np
dGlvbihjKSAtIDE7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OworICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OworICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCAr
IDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZToKKyAgICAg
ICAgICAgIExPR19TVEFURSgiUmVsYXRpdmUiKTsKKyAgICAgICAgICAgIHN3aXRjaCAoKmMpIHsK
KyAgICAgICAgICAgIGNhc2UgJy8nOgorICAgICAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlU2xhc2g7CisgICAgICAgICAgICAgICAgKytj
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnPyc6CisgICAgICAg
ICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEVuZCwgYywgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jz8nKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgaWYgKG5vblVURjhR
dWVyeUVuY29kaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVy
eTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJyMnOgorICAgICAg
ICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBu
b25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignIycpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAg
ICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UGF0
aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAg
ICAgaWYgKGN1cnJlbnRQb3NpdGlvbihjKSAmJiBwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRp
b24oYykgLSAxKSAhPSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignLycpOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNs
YXNoOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJSZWxhdGl2ZVNsYXNoIik7CisgICAgICAgICAg
ICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpIHsKKyAgICAgICAgICAgICAgICArK2M7Cisg
ICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6U2NoZW1lRW5k
LCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcigiOi8vIiwgMyk7CisgICAgICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKQor
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3Jl
U2xhc2hlczsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbV91
cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKKyAgICAgICAgICAgICAgICAgICAgYXV0
aG9yaXR5T3JIb3N0QmVnaW4gPSBjOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6
UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IGJhc2UubV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggKyAxOworICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM6Cisg
ICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzIik7CisgICAgICAg
ICAgICBpZiAoTElLRUxZKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkgeworICAgICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnXFwnKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsK
KyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgICAgIGlmIChMSUtFTFko
IWMuYXRFbmQoKSAmJiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpKSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykpCisgICAgICAgICAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3Jl
U2xhc2hlczsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpTcGVjaWFs
QXV0aG9yaXR5SWdub3JlU2xhc2hlczoKKyAgICAgICAgICAgIExPR19TVEFURSgiU3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXMiKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMg
PT0gJ1xcJykgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAg
ICAgICAgICArK2M7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fdXJs
Lm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkF1dGhvcml0eU9ySG9zdDsKKyAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhv
c3RCZWdpbiA9IGM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OgorICAgICAgICAgICAgZG8geworICAgICAgICAg
ICAgICAgIExPR19TVEFURSgiQXV0aG9yaXR5T3JIb3N0Iik7CisgICAgICAgICAgICAgICAgaWYg
KCpjID09ICdAJykgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGxhc3RBdCA9IGM7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gZmluZExhc3RBdCA9IGM7CisgICAgICAgICAgICAgICAgICAg
IHdoaWxlICghZmluZExhc3RBdC5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBV
UkxfUEFSU0VSX0xPRygiRmluZGluZyBsYXN0IEA6ICVjIiwgKmZpbmRMYXN0QXQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCpmaW5kTGFzdEF0ID09ICdAJykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsYXN0QXQgPSBmaW5kTGFzdEF0OworICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc1NsYXNoID0gKmZpbmRMYXN0QXQgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAm
JiAqZmluZExhc3RBdCA9PSAnXFwnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Ns
YXNoIHx8ICpmaW5kTGFzdEF0ID09ICc/JyB8fCAqZmluZExhc3RBdCA9PSAnIycpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICArK2Zp
bmRMYXN0QXQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcGFy
c2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JI
b3N0QmVnaW4sIGxhc3RBdCkpOworICAgICAgICAgICAgICAgICAgICBjID0gbGFzdEF0OworICAg
ICAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgICAgICAgICBhdXRob3Jp
dHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Okhv
c3Q7CisgICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBib29sIGlzU2xhc2ggPSAqYyA9PSAnLycgfHwgKG1fdXJsSXNTcGVjaWFsICYm
ICpjID09ICdcXCcpOworICAgICAgICAgICAgICAgIGlmIChpc1NsYXNoIHx8ICpjID09ICc/JyB8
fCAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IGN1cnJlbnRQb3NpdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGl0ZXJhdG9yKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIWlzU2xhc2gpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgaWYgKGlzUGVyY2VudE9yTm9uQVNDSUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBt
X2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IHRydWU7CisgICAgICAgICAgICAgICAgKytjOwor
ICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTdGF0ZTo6SG9zdDoKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAg
ICBMT0dfU1RBVEUoIkhvc3QiKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpj
ID09ICc/JyB8fCAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhv
c3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9z
dEJlZ2luLCBjKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAoKmMgPT0gJz8nIHx8ICpjID09ICcjJykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJKCpjKSkKKyAgICAgICAgICAgICAgICAgICAgbV9ob3N0
SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVlOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAg
ICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU3RhdGU6OkZpbGU6CisgICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGUiKTsKKyAgICAg
ICAgICAgIHN3aXRjaCAoKmMpIHsKKyAgICAgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7Cisg
ICAgICAgICAgICBjYXNlICcvJzoKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KCcvJyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZVNsYXNoOworICAgICAg
ICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Jz8nOgorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAg
ICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEVuZCwg
Yywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCc/Jyk7CisgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8/
IiwgNCk7CisgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgbV91
cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAyOworICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAg
ICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAg
ICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5
RW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5Owor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnIyc6CisgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFs
aWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5
RW5jb2RpbmcpOworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcigiLy8vIyIsIDQpOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJT
dGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDI7CisgICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7
CisgICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygi
ZmlsZSIpICYmIHNob3VsZENvcHlGaWxlVVJMKGMpKQorICAgICAgICAgICAgICAgICAgICBjb3B5
VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2gsIGMsIG5vblVU
RjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIiwgMyk7CisgICAgICAgICAgICAgICAgICAg
IG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpCisgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBTdGF0ZTo6RmlsZVNsYXNoOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlU2xhc2gi
KTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICdcXCcpKQorICAgICAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignLycpOworICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAg
bV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAg
bV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91
cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgIG1f
dXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4g
PSBjOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGVIb3N0OworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGMpOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8iLCAyKTsKKyAgICAgICAg
ICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAg
ICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91
cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwu
bV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRM
ZW5ndGggPSAwOworICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOworICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihiYXNlKSkg
eworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgNDsK
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6UGF0aDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpGaWxlSG9z
dDoKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGVIb3N0
Iik7CisgICAgICAgICAgICAgICAgaWYgKGlzU2xhc2hRdWVzdGlvbk9ySGFzaCgqYykpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYm9vbCB3aW5kb3dzUXVpcmsgPSB0YWtlc1R3b0FkdmFuY2VzVW50
aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVn
aW4sIGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIo
YXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93c1F1
aXJrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYXV0aG9yaXR5
T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignLycpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVy
KGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBpZiAod2luZG93c1F1aXJrIHx8IGF1dGhvcml0eU9ySG9zdEJlZ2luID09IGMp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh3aW5kb3dzUXVpcmsgfHwgcGFyc2Vk
RGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgPT0gJy8nKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnPycpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8/IiwgMik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKytjOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNv
ZGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1
ZXJ5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRp
b24oYykgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCpjID09ICcjJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcigiLyMiLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVu
dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShp
c0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9z
aXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2FzY2lp
QnVmZmVyLnNocmluayhtX3VybC5tX3Bhc3N3b3JkRW5kKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlBhdGhTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJKCpjKSkKKyAgICAgICAg
ICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVlOworICAgICAgICAg
ICAgICAgICsrYzsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlBhdGhTdGFydDoKKyAgICAgICAgICAgIExP
R19TVEFURSgiUGF0aFN0YXJ0Iik7CisgICAgICAgICAgICBpZiAoKmMgIT0gJy8nICYmICpjICE9
ICdcXCcpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU3RhdGU6OlBhdGg6CisgICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGgiKTsKKyAgICAg
ICAgICAgIGlmICgqYyA9PSAnLycgfHwgKG1fdXJsSXNTcGVjaWFsICYmICpjID09ICdcXCcpKSB7
CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fdXJsSXNTcGVjaWFsICYmICpjID09ICdc
XCcpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICsrYzsKKyAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChVTkxJS0VMWShjdXJyZW50UG9zaXRpb24oYykgJiYgcGFyc2VkRGF0YVZpZXcoY3VycmVu
dFBvc2l0aW9uKGMpIC0gMSkgPT0gJy8nKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShpc0RvdWJsZURvdFBhdGhTZWdtZW50KGMpKSkgeworICAgICAgICAgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVEb3VibGVEb3RQYXRo
U2VnbWVudChjKTsKKyAgICAgICAgICAgICAgICAgICAgcG9wUGF0aCgpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYykpKSB7CisgICAgICAgICAgICAgICAgICAg
IHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3VtZVNpbmdsZURv
dFBhdGhTZWdtZW50KGMpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKmMgPT0gJz8nKSB7CisgICAg
ICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKKyAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7CisgICAgICAgICAg
ICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0
YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5EZWZhdWx0RW5jb2RlU2V0
PihjKTsKKyAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDoKKyAgICAgICAgICAgIExPR19TVEFURSgiQ2Fu
bm90QmVBQmFzZVVSTFBhdGgiKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnPycpIHsKKyAgICAg
ICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOworICAgICAgICAgICAgICAgICsrYzsK
KyAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcXVlcnlCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6Ok5vblVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAgfSBlbHNlIGlmICgq
YyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9z
aXRpb24oYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0
aEVuZDsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoKmMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJblNpbXBsZUVu
Y29kZVNldD4oYyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlVURjhRdWVyeToKKyAgICAgICAgICAg
IExPR19TVEFURSgiVVRGOFF1ZXJ5Iik7CisgICAgICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiA9
PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKKyAgICAgICAgICAgIGlmICgq
YyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBv
c2l0aW9uKGMpOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKCFu
b25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICB1dGY4UXVlcnlFbmNvZGUoYyk7Cisg
ICAgICAgICAgICArK2M7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6
Tm9uVVRGOFF1ZXJ5OgorICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIExPR19TVEFU
RSgiTm9uVVRGOFF1ZXJ5Iik7CisgICAgICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gIT0g
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAgICAgICAgICAgICAgaWYg
KCpjID09ICcjJykgeworICAgICAgICAgICAgICAgICAgICBlbmNvZGVOb25VVEY4UXVlcnkocXVl
cnlCdWZmZXIsICpub25VVEY4UXVlcnlFbmNvZGluZywgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4ocXVlcnlCZWdpbiwgYykpOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3F1
ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGFwcGVuZENvZGVQb2ludChxdWVyeUJ1ZmZlciwgKmMp
OworICAgICAgICAgICAgICAgIGFkdmFuY2UoYywgcXVlcnlCZWdpbik7CisgICAgICAgICAgICB9
IHdoaWxlICghYy5hdEVuZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0
YXRlOjpGcmFnbWVudDoKKyAgICAgICAgICAgIFVSTF9QQVJTRVJfTE9HKCJTdGF0ZSBGcmFnbWVu
dCIpOworICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJblNpbXBsZUVuY29kZVNldD4o
Yyk7CisgICAgICAgICAgICArK2M7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoK
KyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTY2hlbWVTdGFydCIpOworICAgICAgICBpZiAoIWN1
cnJlbnRQb3NpdGlvbihjKSAmJiBiYXNlLmlzVmFsaWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJlQUJh
c2VVUkwpIHsKKyAgICAgICAgICAgIG1fdXJsID0gYmFzZTsKKyAgICAgICAgICAgIG1fdXJsLnJl
bW92ZUZyYWdtZW50SWRlbnRpZmllcigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RhdGU6OlNj
aGVtZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTY2hlbWUiKTsKKyAgICAgICAgZmFpbHVy
ZSgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0ZTo6Tm9TY2hlbWU6CisgICAgICAg
IExPR19GSU5BTF9TVEFURSgiTm9TY2hlbWUiKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eToK
KyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSIpOwor
ICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpQYXRo
T3JBdXRob3JpdHk6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7
CisgICAgICAgIEFTU0VSVChtX3VybC5tX3VzZXJTdGFydCk7CisgICAgICAgIEFTU0VSVChtX3Vy
bC5tX3VzZXJTdGFydCA9PSBjdXJyZW50UG9zaXRpb24oYykpOworICAgICAgICBBU1NFUlQocGFy
c2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgPT0gJy8nKTsKKyAgICAgICAgbV91
cmwubV91c2VyU3RhcnQtLTsKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
KyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1f
dXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpS
ZWxhdGl2ZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJSZWxhdGl2ZSIpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlU2xh
c2g6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiUmVsYXRpdmVTbGFzaCIpOworICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQb3J0RW5kLCBjLCBub25VVEY4UXVlcnlF
bmNvZGluZyk7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRM
ZW5ndGggKyAxOworICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaDsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5
U2xhc2hlczoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5U2xhc2hl
cyIpOworICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAg
ICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJs
Lm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7
CisgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7
CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBt
X3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzIik7CisgICAgICAgIGZh
aWx1cmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0eU9ySG9z
dDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJBdXRob3JpdHlPckhvc3QiKTsKKyAgICAgICAg
bV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsK
KyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAg
aWYgKGF1dGhvcml0eU9ySG9zdEJlZ2luLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIG1fdXJsLm1f
dXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wYXNzd29y
ZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwor
ICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAg
IH0gZWxzZSBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7Cisg
ICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCAr
IG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5n
dGg7CisgICAgICAgIH0KKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3Vy
bC5tX3BhdGhFbmQ7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6Okhvc3Q6CisgICAgICAgIExPR19GSU5B
TF9TVEFURSgiSG9zdCIpOworICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoYXV0aG9yaXR5
T3JIb3N0QmVnaW4pKSB7CisgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKSB7CisgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3Vy
bC5tX3BvcnRMZW5ndGggKyAxOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aDsKKyAgICAgICAg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIG1f
dXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU3RhdGU6OkZpbGU6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRmlsZSIpOworICAgICAg
ICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKKyAgICAg
ICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25V
VEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyIs
IDMpOworICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7
CisgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBt
X3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGgg
PSAwOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0
YXJ0ICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6RmlsZVNsYXNoOgorICAgICAg
ICBMT0dfRklOQUxfU1RBVEUoIkZpbGVTbGFzaCIpOworICAgICAgICBzeW50YXhWaW9sYXRpb24o
Yyk7CisgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpICsgMTsK
KyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8iLCAyKTsKKyAgICAgICAgbV91cmwubV91
c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgIGlmIChj
b3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihiYXNlKSkgeworICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX3VzZXJTdGFydCArIDQ7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAg
IG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBt
X3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgU3RhdGU6OkZpbGVIb3N0OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUo
IkZpbGVIb3N0Iik7CisgICAgICAgIGlmICh0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKQorICAg
ICAgICAgICAgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7
CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgYXBwZW5kV2lu
ZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAg
ICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGF1dGhvcml0eU9y
SG9zdEJlZ2luID09IGMpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgIG1fdXJsLm1fdXNl
clN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAg
ICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCAr
IDE7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKKyAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFw
YXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0
eU9ySG9zdEJlZ2luLCBjKSkpIHsKKyAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAg
ICAgaWYgKGlzTG9jYWxob3N0KHBhcnNlZERhdGFWaWV3KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1
cnJlbnRQb3NpdGlvbihjKSAtIG1fdXJsLm1fcGFzc3dvcmRFbmQpKSkgeworICAgICAgICAgICAg
bV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91cmwubV9wYXNzd29yZEVuZCk7CisgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSAwOworICAgICAgICB9CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKKyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX2hvc3RF
bmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOworICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRl
OjpQYXRoU3RhcnQ6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiUGF0aFN0YXJ0Iik7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBTdGF0ZTo6UGF0aDoK
KyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJQYXRoIik7CisgICAgICAgIG1fdXJsLm1fcGF0aEVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFz
ZVVSTFBhdGg6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiQ2Fubm90QmVBQmFzZVVSTFBhdGgi
KTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAg
ICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFN0YXRlOjpVVEY4UXVlcnk6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiVVRGOFF1
ZXJ5Iik7CisgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luID09IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KCkpOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpOb25VVEY4UXVlcnk6Cisg
ICAgICAgIExPR19GSU5BTF9TVEFURSgiTm9uVVRGOFF1ZXJ5Iik7CisgICAgICAgIEFTU0VSVChx
dWVyeUJlZ2luICE9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOworICAgICAg
ICBlbmNvZGVOb25VVEY4UXVlcnkocXVlcnlCdWZmZXIsICpub25VVEY4UXVlcnlFbmNvZGluZywg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4ocXVlcnlCZWdpbiwgYykpOworICAgICAg
ICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFN0YXRlOjpGcmFnbWVudDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGcmFn
bWVudCIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoTElLRUxZKCFtX2RpZFNl
ZVN5bnRheFZpb2xhdGlvbikpIHsKKyAgICAgICAgbV91cmwubV9zdHJpbmcgPSBtX2lucHV0U3Ry
aW5nOworICAgICAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOworICAgIH0gZWxz
ZQorICAgICAgICBtX3VybC5tX3N0cmluZyA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShtX2FzY2lp
QnVmZmVyKSk7CisgICAgbV91cmwubV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICBVUkxfUEFSU0VSX0xP
RygiUGFyc2VkIFVSTCA8JXM+IiwgbV91cmwubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6cGFyc2VB
dXRob3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7Cisg
ICAgaWYgKFVOTElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7CisgICAgICAgIHN5bnRheFZpb2xh
dGlvbihpdGVyYXRvcik7CisgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlv
bihpdGVyYXRvcik7CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJF
bmQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgp
OyBhZHZhbmNlKGl0ZXJhdG9yKSkgeworICAgICAgICBpZiAoKml0ZXJhdG9yID09ICc6Jykgewor
ICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgICAgIGF1dG8gaXRlcmF0b3JBdENvbG9uID0gaXRlcmF0b3I7CisgICAgICAgICAg
ICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYm9vbCB0YWJPck5ld2xpbmVBZnRlckNvbG9uID0g
ZmFsc2U7CisgICAgICAgICAgICB3aGlsZSAoVU5MSUtFTFkoIWl0ZXJhdG9yLmF0RW5kKCkgJiYg
aXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgICAgICB0YWJPck5ld2xp
bmVBZnRlckNvbG9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7Cisg
ICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yQXRDb2xvbik7CisgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAg
ICAgICAgICBpZiAobV91cmwubV91c2VyRW5kID4gbV91cmwubV91c2VyU3RhcnQpCisgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJ0AnKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGFiT3JOZXdsaW5lQWZ0ZXJD
b2xvbikKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JBdENvbG9uKTsK
KyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPFdURjo6aXNJblVzZXJJbmZv
RW5jb2RlU2V0PihpdGVyYXRvcik7CisgICAgfQorICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQo
KTsgYWR2YW5jZShpdGVyYXRvcikpCisgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPFdURjo6aXNJ
blVzZXJJbmZvRW5jb2RlU2V0PihpdGVyYXRvcik7CisgICAgbV91cmwubV9wYXNzd29yZEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgaWYgKCFtX3VybC5tX3VzZXJFbmQpCisg
ICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fcGFzc3dvcmRFbmQ7CisgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignQCcpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVn
ZXJUeXBlPgordm9pZCBVUkxQYXJzZXI6OmFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIoVW5zaWdu
ZWRJbnRlZ2VyVHlwZSBudW1iZXIpCit7CisgICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZElu
dGVnZXJUeXBlKSAqIDMgKyAxXTsKKyAgICBMQ2hhciogZW5kID0gc3RkOjplbmQoYnVmKTsKKyAg
ICBMQ2hhciogcCA9IGVuZDsKKyAgICBkbyB7CisgICAgICAgICotLXAgPSAobnVtYmVyICUgMTAp
ICsgJzAnOworICAgICAgICBudW1iZXIgLz0gMTA7CisgICAgfSB3aGlsZSAobnVtYmVyKTsKKyAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHAsIGVuZCAtIHApOworfQorCit2b2lkIFVSTFBhcnNlcjo6
c2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyBhZGRyZXNzKQoreworICAgIGFwcGVuZE51bWJlclRv
QVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAyNCk7CisgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignLicpOworICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVz
cyA+PiAxNik7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOworICAgIGFwcGVuZE51bWJl
clRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiA4KTsKKyAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCcuJyk7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRy
ZXNzKTsKK30KKyAgICAKK3N0YXRpYyBzaXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNvbnN0IHN0
ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzLCBzaXplX3QgYmVnaW4pCit7CisgICAgc2l6
ZV90IGVuZCA9IGJlZ2luOworICAgIGZvciAoOyBlbmQgPCA4OyBlbmQrKykgeworICAgICAgICBp
ZiAoYWRkcmVzc1tlbmRdKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBl
bmQgLSBiZWdpbjsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2Vz
dFplcm9TZXF1ZW5jZShjb25zdCBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKK3sK
KyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbG9uZ2VzdDsKKyAgICBzaXplX3QgbG9uZ2VzdExl
bmd0aCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAgICAg
c2l6ZV90IGxlbmd0aCA9IHplcm9TZXF1ZW5jZUxlbmd0aChhZGRyZXNzLCBpKTsKKyAgICAgICAg
aWYgKGxlbmd0aCkgeworICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgKCFsb25nZXN0IHx8
IGxvbmdlc3RMZW5ndGggPCBsZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgbG9uZ2VzdCA9IGk7
CisgICAgICAgICAgICAgICAgbG9uZ2VzdExlbmd0aCA9IGxlbmd0aDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGkgKz0gbGVuZ3RoOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBs
b25nZXN0OworfQorCit2b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90
IHBpZWNlKQoreworICAgIGJvb2wgcHJpbnRlZCA9IGZhbHNlOworICAgIGlmIChhdXRvIG5pYmJs
ZTAgPSBwaWVjZSA+PiAxMikgeworICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmli
YmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTApKTsKKyAgICAgICAgcHJpbnRlZCA9
IHRydWU7CisgICAgfQorICAgIGF1dG8gbmliYmxlMSA9IHBpZWNlID4+IDggJiAweEY7CisgICAg
aWYgKHByaW50ZWQgfHwgbmliYmxlMSkgeworICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxv
d2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTEpKTsKKyAgICAgICAgcHJp
bnRlZCA9IHRydWU7CisgICAgfQorICAgIGF1dG8gbmliYmxlMiA9IHBpZWNlID4+IDQgJiAweEY7
CisgICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMikKKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChuaWJibGUyKSk7CisgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChwaWVj
ZSAmIDB4RikpOworfQorCit2b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NihVUkxQYXJzZXI6
OklQdjZBZGRyZXNzIGFkZHJlc3MpCit7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignWycpOwor
ICAgIGF1dG8gY29tcHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVz
cyk7CisgICAgZm9yIChzaXplX3QgcGllY2UgPSAwOyBwaWVjZSA8IDg7IHBpZWNlKyspIHsKKyAg
ICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBjb21wcmVzc1BvaW50ZXIudmFsdWUoKSA9PSBw
aWVjZSkgeworICAgICAgICAgICAgQVNTRVJUKCFhZGRyZXNzW3BpZWNlXSk7CisgICAgICAgICAg
ICBpZiAocGllY2UpCisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIjo6
IiwgMik7CisgICAgICAgICAgICB3aGlsZSAocGllY2UgPCA4ICYmICFhZGRyZXNzW3BpZWNlXSkK
KyAgICAgICAgICAgICAgICBwaWVjZSsrOworICAgICAgICAgICAgaWYgKHBpZWNlID09IDgpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2VyaWFsaXplSVB2NlBp
ZWNlKGFkZHJlc3NbcGllY2VdKTsKKyAgICAgICAgaWYgKHBpZWNlIDwgNykKKyAgICAgICAgICAg
IGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICB9CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignXScpOworfQorCitlbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9y
IHsKKyAgICBGYWlsdXJlLAorICAgIE92ZXJmbG93LAorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK0V4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBh
cnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGJvb2wmIGRpZFNlZVN5bnRheFZpb2xhdGlvbikKK3sK
KyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIFVua25vd25CYXNlLAor
ICAgICAgICBEZWNpbWFsLAorICAgICAgICBPY3RhbE9ySGV4LAorICAgICAgICBPY3RhbCwKKyAg
ICAgICAgSGV4LAorICAgIH07CisgICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93bkJhc2U7
CisgICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsKKyAgICBp
ZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CisgICAgd2hp
bGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRl
cmF0b3IpKSB7CisgICAgICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOworICAg
ICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJy4nKSB7CisgICAgICAgICAgICBBU1NFUlQoIXZhbHVl
Lmhhc092ZXJmbG93ZWQoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7
CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBjYXNlIFN0YXRl
OjpVbmtub3duQmFzZToKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0b3IgPT0gJzAn
KSkgeworICAgICAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6T2N0YWxPckhleDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkRlY2ltYWw7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTdGF0ZTo6T2N0YWxPckhleDoKKyAgICAgICAgICAgIGRpZFNlZVN5
bnRheFZpb2xhdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09ICd4JyB8
fCAqaXRlcmF0b3IgPT0gJ1gnKSB7CisgICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIZXg7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpEZWNpbWFsOgorICAgICAgICAgICAgaWYg
KCFpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgICAgIHZh
bHVlICo9IDEwOworICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOworICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cp
OworICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFN0YXRlOjpPY3RhbDoKKyAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhWaW9sYXRp
b24pOworICAgICAgICAgICAgaWYgKCppdGVyYXRvciA8ICcwJyB8fCAqaXRlcmF0b3IgPiAnNycp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdF
cnJvcjo6RmFpbHVyZSk7CisgICAgICAgICAgICB2YWx1ZSAqPSA4OworICAgICAgICAgICAgdmFs
dWUgKz0gKml0ZXJhdG9yIC0gJzAnOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhh
c092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQ
djRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOworICAgICAgICAgICAgKytpdGVyYXRvcjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpIZXg6CisgICAgICAgICAg
ICBBU1NFUlQoZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICAgICAgICAgIGlmICghaXNBU0NJ
SUhleERpZ2l0KCppdGVyYXRvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CisgICAgICAgICAgICB2YWx1ZSAq
PSAxNjsKKyAgICAgICAgICAgIHZhbHVlICs9IHRvQVNDSUlIZXhWYWx1ZSgqaXRlcmF0b3IpOwor
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3Zl
cmZsb3cpOworICAgICAgICAgICAgKytpdGVyYXRvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKKyAgICBy
ZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Cit9CisKK0FMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQ2
NF90IHBvdzI1NihzaXplX3QgZXhwb25lbnQpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwb25l
bnQgPD0gNCk7CisgICAgdWludDY0X3QgdmFsdWVzWzVdID0gezEsIDI1NiwgMjU2ICogMjU2LCAy
NTYgKiAyNTYgKiAyNTYsIDI1NnVsbCAqIDI1NiAqIDI1NiAqIDI1NiB9OworICAgIHJldHVybiB2
YWx1ZXNbZXhwb25lbnRdOworfQorCitlbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBhcnNpbmdF
cnJvciB7CisgICAgRmFpbHVyZSwKKyAgICBOb3RJUHY0LAorfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KK0V4cGVjdGVkPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2NFBhcnNp
bmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24+JiBpdGVyYXRvckZvclN5bnRheFZpb2xh
dGlvblBvc2l0aW9uLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikK
K3sKKyAgICBWZWN0b3I8RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFy
c2luZ0Vycm9yPiwgND4gaXRlbXM7CisgICAgYm9vbCBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSBm
YWxzZTsKKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwor
ICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICBpZiAoaXNUYWJPck5ld2xp
bmUoKml0ZXJhdG9yKSkgeworICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1
ZTsKKyAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoaXRlbXMuc2l6ZSgpID49IDQpCisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgICAgIGl0ZW1z
LmFwcGVuZChwYXJzZUlQdjRQaWVjZShpdGVyYXRvciwgZGlkU2VlU3ludGF4VmlvbGF0aW9uKSk7
CisgICAgICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKSB7Cisg
ICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkp
CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0
aW9uUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZSBpZiAoKml0ZXJhdG9yID09ICcuJykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90
SVB2NCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpIHx8ICFp
dGVtcy5zaXplKCkgfHwgaXRlbXMuc2l6ZSgpID4gNCkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOworICAgIGZvciAoY29uc3QgYXV0byYg
aXRlbSA6IGl0ZW1zKSB7CisgICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVy
cm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKQorICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOworICAgIH0KKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBpdGVtcykgeworICAgICAgICBpZiAoIWl0ZW0uaGFz
X3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZs
b3cpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6
RmFpbHVyZSk7CisgICAgfQorICAgIGlmIChpdGVtcy5zaXplKCkgPiAxKSB7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpIC0gMTsgaSsrKSB7CisgICAgICAgICAg
ICBpZiAoaXRlbXNbaV0udmFsdWUoKSA+IDI1NSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgaWYgKGl0ZW1zW2l0ZW1zLnNpemUoKSAtIDFdLnZhbHVlKCkgPj0gcG93MjU2KDUgLSBp
dGVtcy5zaXplKCkpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdF
cnJvcjo6RmFpbHVyZSk7CisKKyAgICBpZiAoZGlkU2VlU3ludGF4VmlvbGF0aW9uKQorICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKKyAgICAgICAgaWYgKGl0ZW0udmFs
dWUoKSA+IDI1NSkKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICB9CisKKyAgICBpZiAoVU5MSUtFTFkoaXRlbXMuc2l6
ZSgpICE9IDQpKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9s
YXRpb25Qb3NpdGlvbik7CisKKyAgICBJUHY0QWRkcmVzcyBpcHY0ID0gaXRlbXMudGFrZUxhc3Qo
KS52YWx1ZSgpOworICAgIGZvciAoc2l6ZV90IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgaXRlbXMu
c2l6ZSgpOyArK2NvdW50ZXIpCisgICAgICAgIGlwdjQgKz0gaXRlbXNbY291bnRlcl0udmFsdWUo
KSAqIHBvdzI1NigzIC0gY291bnRlcik7CisgICAgcmV0dXJuIGlwdjQ7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJz
ZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYgaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgdWludDMyX3QgcGllY2UgPSAwOworICAgIGJvb2wgbGVh
ZGluZ1plcm9zID0gZmFsc2U7CisgICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOworICAgIHdoaWxl
ICghaXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0
b3IpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgKytkaWdpdENv
dW50OworICAgICAgICBpZiAoIXBpZWNlICYmICppdGVyYXRvciA9PSAnMCcpIHsKKyAgICAgICAg
ICAgIGlmIChsZWFkaW5nWmVyb3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0gJzAnKQorICAgICAgICAgICAgbGVhZGluZ1plcm9z
ID0gdHJ1ZTsKKyAgICAgICAgcGllY2UgPSBwaWVjZSAqIDEwICsgKml0ZXJhdG9yIC0gJzAnOwor
ICAgICAgICBpZiAocGllY2UgPiAyNTUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6
Tm8+KGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnLicpCisgICAgICAgICAgICBicmVh
azsKKyAgICB9CisgICAgaWYgKHBpZWNlICYmIGxlYWRpbmdaZXJvcykKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcGllY2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVS
TFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9IDA7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyArK2kpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IHBpZWNlID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0ZXJhdG9y
KSkKKyAgICAgICAgICAgIGFkZHJlc3MgPSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZhbHVlKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IGlmIChpIDwgMykgeworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGlmICgqaXRlcmF0b3Ig
IT0gJy4nKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAg
ICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJh
dG9yKTsKKyAgICAgICAgfSBlbHNlIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIEFTU0VSVChpdGVyYXRvci5hdEVuZCgp
KTsKKyAgICByZXR1cm4gYWRkcmVzczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KK3N0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpw
YXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCit7CisgICAg
QVNTRVJUKCpjID09ICdbJyk7CisgICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBjOworICAgIGFk
dmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgSVB2NkFkZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwgMCwgMCwg
MCwgMCwgMCwgMH19OworICAgIHNpemVfdCBwaWVjZVBvaW50ZXIgPSAwOworICAgIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBjb21wcmVzc1BvaW50ZXI7CisKKyAgICBpZiAoKmMgPT0gJzonKSB7Cisg
ICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAgaWYgKGMuYXRFbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmICgqYyAhPSAnOicpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhZHZhbmNlKGMsIGhvc3RC
ZWdpbik7CisgICAgICAgICsrcGllY2VQb2ludGVyOworICAgICAgICBjb21wcmVzc1BvaW50ZXIg
PSBwaWVjZVBvaW50ZXI7CisgICAgfQorICAgIAorICAgIHdoaWxlICghYy5hdEVuZCgpKSB7Cisg
ICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIGlmICgqYyA9PSAnOicpIHsKKyAgICAgICAgICAgIGlmIChjb21wcmVz
c1BvaW50ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAgICAgICsrcGllY2VQb2ludGVyOwor
ICAgICAgICAgICAgY29tcHJlc3NQb2ludGVyID0gcGllY2VQb2ludGVyOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2IHx8IChj
b21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2ludGVyIDwgNikpIHsKKyAgICAgICAgICAgIGlmIChz
dGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJ
bnNpZGVJUHY2KGMpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBw
aWVjZVBvaW50ZXIgPT0gNSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKyAgICAgICAg
ICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgPj4g
MTY7CisgICAgICAgICAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVz
cy52YWx1ZSgpICYgMHhGRkZGOworICAgICAgICAgICAgICAgIGMgPSB7IH07CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdWludDE2X3Qg
dmFsdWUgPSAwOworICAgICAgICBzaXplX3QgbGVuZ3RoID0gMDsKKyAgICAgICAgYm9vbCBsZWFk
aW5nWmVyb3MgPSBmYWxzZTsKKyAgICAgICAgZm9yICg7IGxlbmd0aCA8IDQ7IGxlbmd0aCsrKSB7
CisgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKmMpKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcigqYykpCisgICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisgICAgICAgICAgICBpZiAoKmMgPT0gJzAnICYmICFs
ZW5ndGgpCisgICAgICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKKyAgICAgICAgICAg
IHZhbHVlID0gdmFsdWUgKiAweDEwICsgdG9BU0NJSUhleFZhbHVlKCpjKTsKKyAgICAgICAgICAg
IGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYg
KFVOTElLRUxZKCh2YWx1ZSAmJiBsZWFkaW5nWmVyb3MpIHx8ICghdmFsdWUgJiYgbGVuZ3RoID4g
MSkpKQorICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisKKyAgICAgICAg
YWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSB2YWx1ZTsKKyAgICAgICAgaWYgKGMuYXRFbmQoKSkK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDggfHwgKmMg
IT0gJzonKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYWR2YW5j
ZShjLCBob3N0QmVnaW4pOworICAgIH0KKyAgICAKKyAgICBpZiAoIWMuYXRFbmQoKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAKKyAgICBpZiAoY29tcHJlc3NQb2ludGVyKSB7
CisgICAgICAgIHNpemVfdCBzd2FwcyA9IHBpZWNlUG9pbnRlciAtIGNvbXByZXNzUG9pbnRlci52
YWx1ZSgpOworICAgICAgICBwaWVjZVBvaW50ZXIgPSA3OworICAgICAgICB3aGlsZSAoc3dhcHMp
CisgICAgICAgICAgICBzdGQ6OnN3YXAoYWRkcmVzc1twaWVjZVBvaW50ZXItLV0sIGFkZHJlc3Nb
Y29tcHJlc3NQb2ludGVyLnZhbHVlKCkgKyBzd2Fwcy0tIC0gMV0pOworICAgIH0gZWxzZSBpZiAo
cGllY2VQb2ludGVyICE9IDgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gcG9zc2libGVDb21wcmVzc1BvaW50ZXIgPSBmaW5kTG9uZ2Vz
dFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKKyAgICBpZiAocG9zc2libGVDb21wcmVzc1BvaW50ZXIp
CisgICAgICAgIHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyLnZhbHVlKCkrKzsKKyAgICBpZiAoVU5M
SUtFTFkoY29tcHJlc3NQb2ludGVyICE9IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKSkKKyAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisgICAgCisgICAgcmV0dXJuIGFkZHJlc3M7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitVUkxQYXJzZXI6OkxDaGFy
QnVmZmVyIFVSTFBhcnNlcjo6cGVyY2VudERlY29kZShjb25zdCBMQ2hhciogaW5wdXQsIHNpemVf
dCBsZW5ndGgsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRv
ckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQoreworICAgIExDaGFyQnVmZmVyIG91dHB1dDsK
KyAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgIAorICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdWludDhfdCBieXRl
ID0gaW5wdXRbaV07CisgICAgICAgIGlmIChieXRlICE9ICclJykKKyAgICAgICAgICAgIG91dHB1
dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYg
aSA8IGxlbmd0aCAtIDIpIHsKKyAgICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRb
aSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgeworICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsK
KyAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShp
bnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOworICAgICAgICAgICAgICAgIGkgKz0gMjsKKyAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQo
Ynl0ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVu
ZChieXRlKTsKKyAgICB9CisgICAgcmV0dXJuIG91dHB1dDsKK30KKyAgICAKK1VSTFBhcnNlcjo6
TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwg
c2l6ZV90IGxlbmd0aCkKK3sKKyAgICBMQ2hhckJ1ZmZlciBvdXRwdXQ7CisgICAgb3V0cHV0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGlucHV0W2ldOwor
ICAgICAgICBpZiAoYnl0ZSAhPSAnJScpCisgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBw
ZW5kKGJ5dGUpOworICAgICAgICBlbHNlIGlmIChsZW5ndGggPiAyICYmIGkgPCBsZW5ndGggLSAy
KSB7CisgICAgICAgICAgICBpZiAoaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkgJiYgaXNB
U0NJSUhleERpZ2l0KGlucHV0W2kgKyAyXSkpIHsKKyAgICAgICAgICAgICAgICBvdXRwdXQudW5j
aGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkp
OworICAgICAgICAgICAgICAgIGkgKz0gMjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICB9CisgICAgcmV0dXJu
IG91dHB1dDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRp
b25hbDxVUkxQYXJzZXI6OkxDaGFyQnVmZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVNDSUkoU3Ry
aW5nSW1wbCYgZG9tYWluLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
aXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikKK3sKKyAgICBMQ2hhckJ1ZmZlciBh
c2NpaTsKKyAgICBpZiAoZG9tYWluLmlzQWxsQVNDSUkoKSkgeworICAgICAgICBzaXplX3QgbGVu
Z3RoID0gZG9tYWluLmxlbmd0aCgpOworICAgICAgICBpZiAoZG9tYWluLmlzOEJpdCgpKSB7Cisg
ICAgICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzOCgp
OworICAgICAgICAgICAgYXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQorICAgICAg
ICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Q
b3NpdGlvbik7CisgICAgICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlM
b3dlcihjaGFyYWN0ZXJzW2ldKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0ZXJzMTYo
KTsKKyAgICAgICAgICAgIGFzY2lpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkKKyAgICAg
ICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9u
UG9zaXRpb24pOworICAgICAgICAgICAgICAgIGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0b0FTQ0lJ
TG93ZXIoY2hhcmFjdGVyc1tpXSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHJldHVybiBhc2NpaTsKKyAgICB9CisgICAgCisgICAgY29uc3Qgc2l6ZV90IG1heERvbWFpbkxl
bmd0aCA9IDY0OworICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW21heERvbWFpbkxlbmd0aF07Cisg
ICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKKyAgICBVSUROQUluZm8gcHJvY2Vz
c2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOworICAgIGludDMyX3QgbnVtQ2hh
cmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFsRG9tYWlu
TmFtZVRyYW5zY29kZXIoKSwgU3RyaW5nVmlldyhkb21haW4pLnVwY29udmVydGVkQ2hhcmFjdGVy
cygpLCBkb21haW4ubGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVyLCBtYXhEb21haW5MZW5ndGgsICZw
cm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKKyAgICBBU1NFUlQobnVtQ2hhcmFjdGVyc0NvbnZl
cnRlZCA8PSBzdGF0aWNfY2FzdDxpbnQzMl90PihtYXhEb21haW5MZW5ndGgpKTsKKworICAgIGlm
IChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKKyAgICAg
ICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsgKytpKSB7
CisgICAgICAgICAgICBBU1NFUlQoaXNBU0NJSShob3N0bmFtZUJ1ZmZlcltpXSkpOworICAgICAg
ICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoaG9zdG5hbWVCdWZmZXJbaV0pKTsKKyAgICAgICAg
fQorICAgICAgICBhc2NpaS5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252
ZXJ0ZWQpOworICAgICAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcoYXNjaWkuZGF0YSgpLCBh
c2NpaS5zaXplKCkpKQorICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3lu
dGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICByZXR1cm4gYXNjaWk7CisgICAgfQorICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK2Jvb2wgVVJMUGFyc2VyOjpoYXNGb3JiaWRkZW5I
b3N0Q29kZVBvaW50KGNvbnN0IFVSTFBhcnNlcjo6TENoYXJCdWZmZXImIGFzY2lpRG9tYWluKQor
eworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXNjaWlEb21haW4uc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbltpXSkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OnBhcnNlUG9y
dChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7CisgICAgQVNT
RVJUKCppdGVyYXRvciA9PSAnOicpOworICAgIGF1dG8gY29sb25JdGVyYXRvciA9IGl0ZXJhdG9y
OworICAgIGFkdmFuY2UoaXRlcmF0b3IsIGNvbG9uSXRlcmF0b3IpOworICAgIHVpbnQzMl90IHBv
cnQgPSAwOworICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgeworICAgICAgICB1
bnNpZ25lZCBwb3J0TGVuZ3RoID0gY3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3IpIC0gbV91
cmwubV9ob3N0RW5kOworICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6
bWF4UG9ydExlbmd0aCk7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7
CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHNpemVfdCBkaWdpdENvdW50ID0gMDsKKyAgICBib29sIGxlYWRp
bmdaZXJvcyA9IGZhbHNlOworICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRv
cikgeworICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsK
KyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKml0ZXJhdG9y
KSkgeworICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnMCcgJiYgIWRpZ2l0Q291bnQpCisg
ICAgICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKKyAgICAgICAgICAgICsrZGlnaXRD
b3VudDsKKyAgICAgICAgICAgIHBvcnQgPSBwb3J0ICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7Cisg
ICAgICAgICAgICBpZiAocG9ydCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChwb3J0ICYmIGxlYWRpbmdaZXJv
cykKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgIAorICAgIGlm
ICghcG9ydCAmJiBkaWdpdENvdW50ID4gMSkKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9u
SXRlcmF0b3IpOworCisgICAgQVNTRVJUKHBvcnQgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBv
cnQpKTsKKyAgICBpZiAoVU5MSUtFTFkoZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwYXJzZWREYXRh
VmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCkpID09IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0
KSkpCisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOworICAgICAgICBBU1NFUlQocG9ydCA8
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOworICAgICAgICBhcHBlbmRO
dW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQxNl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkp
OworICAgIH0KKworICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRl
cmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOworICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGgg
PD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBwb3J0TGVu
Z3RoOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgorYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICgqaXRlcmF0b3IgPT0gJ1snKSB7CisgICAgICAgIGF1dG8g
aXB2NkVuZCA9IGl0ZXJhdG9yOworICAgICAgICB3aGlsZSAoIWlwdjZFbmQuYXRFbmQoKSAmJiAq
aXB2NkVuZCAhPSAnXScpCisgICAgICAgICAgICArK2lwdjZFbmQ7CisgICAgICAgIGlmIChpcHY2
RW5kLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChhdXRv
IGFkZHJlc3MgPSBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
KGl0ZXJhdG9yLCBpcHY2RW5kKSkpIHsKKyAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjYoYWRkcmVz
cy52YWx1ZSgpKTsKKyAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpKSB7CisgICAgICAg
ICAgICAgICAgYWR2YW5jZShpcHY2RW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlwdjZFbmQu
YXRFbmQoKSAmJiAqaXB2NkVuZCA9PSAnOicpIHsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcGFyc2VQb3J0KGlwdjZFbmQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXB2NkVuZCk7CisgICAg
ICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1
cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fdXJsSXNTcGVj
aWFsKSB7CisgICAgICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewor
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Cisg
ICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0g
JzonKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlz
Rm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpICYmICppdGVyYXRvciAhPSAnJScpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5j
b2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKKyAgICAgICAgfQorICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICBpZiAo
aXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwYXJz
ZVBvcnQoaXRlcmF0b3IpOworICAgIH0KKyAgICAKKyAgICBpZiAoTElLRUxZKCFtX2hvc3RIYXNQ
ZXJjZW50T3JOb25BU0NJSSkpIHsKKyAgICAgICAgYXV0byBob3N0SXRlcmF0b3IgPSBpdGVyYXRv
cjsKKyAgICAgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAg
ICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRl
cmF0b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRIb3N0KGhvc3RJdGVyYXRvciwgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4oaG9zdEl0ZXJhdG9yLCBpdGVyYXRvcikpOworICAgICAgICBp
ZiAoYWRkcmVzcykgeworICAgICAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZhbHVlKCkp
OworICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9y
KTsKKyAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3IpOworICAg
ICAgICB9CisgICAgICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6
RmFpbHVyZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yICg7IGhvc3RJ
dGVyYXRvciAhPSBpdGVyYXRvcjsgKytob3N0SXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGlmIChV
TkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaG9zdEl0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaG9zdEl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIo
Kmhvc3RJdGVyYXRvcikpKQorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0SXRl
cmF0b3IpOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93ZXIoKmhv
c3RJdGVyYXRvcikpOworICAgICAgICB9CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJl
bnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0RW5kKCkp
CisgICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGhvc3RJdGVyYXRvcik7CisgICAgICAgIHVu
c2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91cmwubV9o
b3N0RW5kOworICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6bWF4UG9y
dExlbmd0aCk7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9
IGl0ZXJhdG9yOworICAgIAorICAgIExDaGFyQnVmZmVyIHV0ZjhFbmNvZGVkOworICAgIGZvciAo
OyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgeworICAgICAgICBpZiAoVU5MSUtFTFko
aXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihob3N0QmVnaW4pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKFVO
TElLRUxZKCFpc0FTQ0lJKCppdGVyYXRvcikpKQorICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGhvc3RCZWdpbik7CisKKyAgICAgICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUigqaXRlcmF0b3Ip
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1aW50OF90IGJ1ZmZlcltVOF9N
QVhfTEVOR1RIXTsKKyAgICAgICAgaW50MzJfdCBvZmZzZXQgPSAwOworICAgICAgICBVOF9BUFBF
TkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCAqaXRlcmF0b3IpOworICAgICAgICB1dGY4RW5jb2Rl
ZC5hcHBlbmQoYnVmZmVyLCBvZmZzZXQpOworICAgIH0KKyAgICBMQ2hhckJ1ZmZlciBwZXJjZW50
RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUodXRmOEVuY29kZWQuZGF0YSgpLCB1dGY4RW5jb2RlZC5z
aXplKCksIGhvc3RCZWdpbik7CisgICAgU3RyaW5nIGRvbWFpbiA9IFN0cmluZzo6ZnJvbVVURjgo
cGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOworICAgIGlmIChk
b21haW4uaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZG9tYWluICE9
IFN0cmluZ1ZpZXcocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkp
KQorICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKyAgICBhdXRvIGFzY2lpRG9t
YWluID0gZG9tYWluVG9BU0NJSSgqZG9tYWluLmltcGwoKSwgaG9zdEJlZ2luKTsKKyAgICBpZiAo
IWFzY2lpRG9tYWluIHx8IGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlEb21haW4udmFs
dWUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBMQ2hhckJ1ZmZlciYgYXNjaWlEb21h
aW5WYWx1ZSA9IGFzY2lpRG9tYWluLnZhbHVlKCk7CisgICAgY29uc3QgTENoYXIqIGFzY2lpRG9t
YWluQ2hhcmFjdGVycyA9IGFzY2lpRG9tYWluVmFsdWUuZGF0YSgpOworCisgICAgYXV0byBhZGRy
ZXNzID0gcGFyc2VJUHY0SG9zdChob3N0QmVnaW4sIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPihh
c2NpaURvbWFpblZhbHVlLmJlZ2luKCksIGFzY2lpRG9tYWluVmFsdWUuZW5kKCkpKTsKKyAgICBp
ZiAoYWRkcmVzcykgeworICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7Cisg
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAg
ICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7CisgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5n
dGggPSAwOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgfQorICAgIGlmIChhZGRyZXNzLmVycm9yKCkg
PT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihhc2NpaURvbWFpbkNoYXJhY3RlcnMsIGFzY2lpRG9tYWlu
VmFsdWUuc2l6ZSgpKTsKKyAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRl
cmF0b3IpOworICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNl
UG9ydChpdGVyYXRvcik7CisgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29k
ZShTdHJpbmdWaWV3IGlucHV0KQoreworICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0
Q29udmVyc2lvbik7CisgICAgaWYgKHV0ZjguaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgYXV0byBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7Cisg
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50
RGVjb2RlZC5zaXplKCkpOworfQorCisvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2Nv
bmNlcHQtdXJsZW5jb2RlZC1wYXJzZXIKK2F1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRG
b3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+IFVSTEVuY29kZWRGb3JtCit7CisgICAgVVJMRW5jb2Rl
ZEZvcm0gb3V0cHV0OworICAgIGZvciAoU3RyaW5nVmlldyBieXRlcyA6IGlucHV0LnNwbGl0KCcm
JykpIHsKKyAgICAgICAgYXV0byBlcXVhbEluZGV4ID0gYnl0ZXMuZmluZCgnPScpOworICAgICAg
ICBpZiAoZXF1YWxJbmRleCA9PSBub3RGb3VuZCkgeworICAgICAgICAgICAgYXV0byBuYW1lID0g
Zm9ybVVSTERlY29kZShieXRlcy50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7CisgICAg
ICAgICAgICBpZiAobmFtZSkKKyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52
YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
YXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJbmRleCku
dG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOworICAgICAgICAgICAgYXV0byB2YWx1ZSA9
IGZvcm1VUkxEZWNvZGUoYnl0ZXMuc3Vic3RyaW5nKGVxdWFsSW5kZXggKyAxKS50b1N0cmluZygp
LnJlcGxhY2UoJysnLCAweDIwKSk7CisgICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSkKKyAg
ICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52YWx1ZSgp
IH0pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK3N0YXRpYyB2
b2lkIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3JtKGNvbnN0IFN0cmluZyYgaW5wdXQsIFZlY3RvcjxM
Q2hhcj4mIG91dHB1dCkKK3sKKyAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZl
cnNpb24pOworICAgIGNvbnN0IGNoYXIqIGRhdGEgPSB1dGY4LmRhdGEoKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHV0ZjgubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBjb25zdCBjaGFy
IGJ5dGUgPSBkYXRhW2ldOworICAgICAgICBpZiAoYnl0ZSA9PSAweDIwKQorICAgICAgICAgICAg
b3V0cHV0LmFwcGVuZCgweDJCKTsKKyAgICAgICAgZWxzZSBpZiAoYnl0ZSA9PSAweDJBCisgICAg
ICAgICAgICB8fCBieXRlID09IDB4MkQKKyAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgyRQorICAg
ICAgICAgICAgfHwgKGJ5dGUgPj0gMHgzMCAmJiBieXRlIDw9IDB4MzkpCisgICAgICAgICAgICB8
fCAoYnl0ZSA+PSAweDQxICYmIGJ5dGUgPD0gMHg1QSkKKyAgICAgICAgICAgIHx8IGJ5dGUgPT0g
MHg1RgorICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHg2MSAmJiBieXRlIDw9IDB4N0EpKSAvLyBG
SVhNRTogUHV0IHRoZXNlIGluIHRoZSBjaGFyYWN0ZXJDbGFzc1RhYmxlIHRvIGF2b2lkIGJyYW5j
aGVzLgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChieXRlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnl0ZSwgb3V0cHV0KTsKKyAgICB9Cit9CisgICAg
CitTdHJpbmcgVVJMUGFyc2VyOjpzZXJpYWxpemUoY29uc3QgVVJMRW5jb2RlZEZvcm0mIHR1cGxl
cykKK3sKKyAgICBpZiAodHVwbGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIFZlY3RvcjxMQ2hhcj4gb3V0cHV0OworICAgIGZvciAoYXV0byYgdHVwbGUgOiB0dXBsZXMp
IHsKKyAgICAgICAgaWYgKCFvdXRwdXQuaXNFbXB0eSgpKQorICAgICAgICAgICAgb3V0cHV0LmFw
cGVuZCgnJicpOworICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS5rZXksIG91
dHB1dCk7CisgICAgICAgIG91dHB1dC5hcHBlbmQoJz0nKTsKKyAgICAgICAgc2VyaWFsaXplVVJM
RW5jb2RlZEZvcm0odHVwbGUudmFsdWUsIG91dHB1dCk7CisgICAgfQorICAgIHJldHVybiBTdHJp
bmc6OmFkb3B0KFdURk1vdmUob3V0cHV0KSk7Cit9CisKK2NvbnN0IFVJRE5BJiBVUkxQYXJzZXI6
OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpCit7CisgICAgc3RhdGljIFVJRE5B
KiBlbmNvZGVyOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9a
RVJPX0VSUk9SOworICAgICAgICAvLyBXYXJuaW5nOiBQbGVhc2UgY29udGFjdCBhIFdlYktpdEdU
SysgZGV2ZWxvcGVyIGlmIGNoYW5naW5nIHRoZXNlIGZsYWdzLgorICAgICAgICAvLyBUaGV5IHNo
b3VsZCBiZSBzeW5jZWQgd2l0aCBlcGh5X3VyaV9kZWNvZGUoKSBpbiBlcGh5LXVyaS1oZWxwZXJz
LmMuCisgICAgICAgIGVuY29kZXIgPSB1aWRuYV9vcGVuVVRTNDYoVUlETkFfQ0hFQ0tfQklESSB8
IFVJRE5BX0NIRUNLX0NPTlRFWFRKIHwgVUlETkFfTk9OVFJBTlNJVElPTkFMX1RPX1VOSUNPREUg
fCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fQVNDSUksICZlcnJvcik7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmNv
ZGVyKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKmVuY29kZXI7Cit9CisKK2Jvb2wgVVJMUGFyc2Vy
OjphbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBVUkxf
UEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNcbiVkICVk
ICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzIiwKKyAgICAgICAgYS5tX2lzVmFsaWQs
CisgICAgICAgIGEubV9jYW5ub3RCZUFCYXNlVVJMLAorICAgICAgICBhLm1fcHJvdG9jb2xJc0lu
SFRUUEZhbWlseSwKKyAgICAgICAgYS5tX3NjaGVtZUVuZCwKKyAgICAgICAgYS5tX3VzZXJTdGFy
dCwKKyAgICAgICAgYS5tX3VzZXJFbmQsCisgICAgICAgIGEubV9wYXNzd29yZEVuZCwKKyAgICAg
ICAgYS5tX2hvc3RFbmQsCisgICAgICAgIGEubV9ob3N0RW5kICsgYS5tX3BvcnRMZW5ndGgsCisg
ICAgICAgIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCisgICAgICAgIGEubV9wYXRoRW5kLAorICAg
ICAgICBhLm1fcXVlcnlFbmQsCisgICAgICAgIGEubV9zdHJpbmcudXRmOCgpLmRhdGEoKSwKKyAg
ICAgICAgYi5tX2lzVmFsaWQsCisgICAgICAgIGIubV9jYW5ub3RCZUFCYXNlVVJMLAorICAgICAg
ICBiLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKKyAgICAgICAgYi5tX3NjaGVtZUVuZCwKKyAg
ICAgICAgYi5tX3VzZXJTdGFydCwKKyAgICAgICAgYi5tX3VzZXJFbmQsCisgICAgICAgIGIubV9w
YXNzd29yZEVuZCwKKyAgICAgICAgYi5tX2hvc3RFbmQsCisgICAgICAgIGIubV9ob3N0RW5kICsg
Yi5tX3BvcnRMZW5ndGgsCisgICAgICAgIGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCisgICAgICAg
IGIubV9wYXRoRW5kLAorICAgICAgICBiLm1fcXVlcnlFbmQsCisgICAgICAgIGIubV9zdHJpbmcu
dXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4gYS5tX3N0cmluZyA9PSBiLm1fc3RyaW5nCisg
ICAgICAgICYmIGEubV9pc1ZhbGlkID09IGIubV9pc1ZhbGlkCisgICAgICAgICYmIGEubV9jYW5u
b3RCZUFCYXNlVVJMID09IGIubV9jYW5ub3RCZUFCYXNlVVJMCisgICAgICAgICYmIGEubV9wcm90
b2NvbElzSW5IVFRQRmFtaWx5ID09IGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5CisgICAgICAg
ICYmIGEubV9zY2hlbWVFbmQgPT0gYi5tX3NjaGVtZUVuZAorICAgICAgICAmJiBhLm1fdXNlclN0
YXJ0ID09IGIubV91c2VyU3RhcnQKKyAgICAgICAgJiYgYS5tX3VzZXJFbmQgPT0gYi5tX3VzZXJF
bmQKKyAgICAgICAgJiYgYS5tX3Bhc3N3b3JkRW5kID09IGIubV9wYXNzd29yZEVuZAorICAgICAg
ICAmJiBhLm1faG9zdEVuZCA9PSBiLm1faG9zdEVuZAorICAgICAgICAmJiBhLm1fcG9ydExlbmd0
aCA9PSBiLm1fcG9ydExlbmd0aAorICAgICAgICAmJiBhLm1fcGF0aEFmdGVyTGFzdFNsYXNoID09
IGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gKKyAgICAgICAgJiYgYS5tX3BhdGhFbmQgPT0gYi5tX3Bh
dGhFbmQKKyAgICAgICAgJiYgYS5tX3F1ZXJ5RW5kID09IGIubV9xdWVyeUVuZDsKK30KKworYm9v
bCBVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmIHVybCkKK3sK
KyAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kIDw9IHVybC5tX3VzZXJTdGFydAorICAgICAgICAm
JiB1cmwubV91c2VyU3RhcnQgPD0gdXJsLm1fdXNlckVuZAorICAgICAgICAmJiB1cmwubV91c2Vy
RW5kIDw9IHVybC5tX3Bhc3N3b3JkRW5kCisgICAgICAgICYmIHVybC5tX3Bhc3N3b3JkRW5kIDw9
IHVybC5tX2hvc3RFbmQKKyAgICAgICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5tX3BvcnRMZW5n
dGggPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoCisgICAgICAgICYmIHVybC5tX3BhdGhBZnRl
ckxhc3RTbGFzaCA8PSB1cmwubV9wYXRoRW5kCisgICAgICAgICYmIHVybC5tX3BhdGhFbmQgPD0g
dXJsLm1fcXVlcnlFbmQKKyAgICAgICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1fc3RyaW5n
Lmxlbmd0aCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1VSTFBhcnNlci5oIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWUyNWI1NDAyMjM0MGE5ZTg4YmVkOGNjZjE3MDAzOTI3NzdmZTcyYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5oCkBAIC0wLDAgKzEsMTM2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCitzdHJ1Y3Qg
VUlETkE7CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBjbGFzcyBDb2RlUG9pbnRJdGVyYXRvcjsKKworY2xhc3MgVVJMUGFyc2VyIHsKK3B1Ymxp
YzoKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgYWxsVmFsdWVzRXF1YWwoY29u
c3QgVVJMJiwgY29uc3QgVVJMJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGludGVybmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmKTsKKyAgICAKKyAgICB1c2luZyBV
UkxFbmNvZGVkRm9ybSA9IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVJMRW5jb2RlZEZvcm0gcGFyc2VVUkxF
bmNvZGVkRm9ybShTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0
cmluZyBzZXJpYWxpemUoY29uc3QgVVJMRW5jb2RlZEZvcm0mKTsKKworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBpc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1h
eWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKworICAgIHN0YXRp
YyBjb25zdCBVSUROQSYgaW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCk7CisgICAg
c3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5jb2RlU2V0KFVDaGFyKTsKKworcHJpdmF0ZToKKyAg
ICBVUkxQYXJzZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiA9IHsgfSwgY29uc3QgVVJMVGV4
dEVuY29kaW5nKiA9IG51bGxwdHIpOworICAgIFVSTCByZXN1bHQoKSB7IHJldHVybiBtX3VybDsg
fQorCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJv
dG9jb2woU3RyaW5nVmlldyk7CisgICAgZnJpZW5kIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CisgICAgZnJpZW5kIGNsYXNzIFVSTDsK
KworICAgIFVSTCBtX3VybDsKKyAgICBWZWN0b3I8TENoYXI+IG1fYXNjaWlCdWZmZXI7CisgICAg
Ym9vbCBtX3VybElzU3BlY2lhbCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3VybElzRmlsZSB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSB7IGZhbHNlIH07Cisg
ICAgU3RyaW5nIG1faW5wdXRTdHJpbmc7CisgICAgY29uc3Qgdm9pZCogbV9pbnB1dEJlZ2luIHsg
bnVsbHB0ciB9OworCisgICAgYm9vbCBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiB7IGZhbHNlIH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdElubGluZUJ1ZmZlclNpemUgPSAy
MDQ4OworICAgIHVzaW5nIExDaGFyQnVmZmVyID0gVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5l
QnVmZmVyU2l6ZT47CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lk
IHBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqLCBjb25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0
IFVSTCYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHZvaWQgcGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgcGFy
c2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZVBvcnQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKworICAgIHZvaWQgZmFpbHVyZSgpOworICAgIGVudW0g
Y2xhc3MgUmVwb3J0U3ludGF4VmlvbGF0aW9uIHsgTm8sIFllcyB9OworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbiByZXBvcnRTeW50YXhW
aW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9sYXRpb246Olllcz4KKyAgICB2b2lkIGFkdmFuY2Uo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKSB7IGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgcmVwb3J0U3ludGF4VmlvbGF0aW9uPihpdGVyYXRvciwgaXRlcmF0b3IpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uID0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXM+CisgICAgdm9pZCBhZHZhbmNlKENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgdGFrZXNUd29BZHZhbmNlc1VudGls
RW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IGJvb2wgaXNQZXJjZW50RW5jb2RlZERvdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1dp
bmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1NpbmdsZURvdFBhdGhTZWdt
ZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzRG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IGJvb2wgc2hvdWxkQ29weUZpbGVVUkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgY2hlY2tM
b2NhbGhvc3RDb2RlUG9pbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBVQ2hh
cjMyKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQXRMb2Nh
bGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIGJvb2wgaXNMb2Nh
bGhvc3QoU3RyaW5nVmlldyk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
dm9pZCBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNv
bnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5kV2lu
ZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IGN1cnJlbnRQb3NpdGlvbihj
b25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZl
cihVbnNpZ25lZEludGVnZXJUeXBlKTsKKyAgICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCko
VUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUo
Y29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8TENoYXJCdWZmZXI+IGRvbWFpblRvQVNDSUkoU3RyaW5n
SW1wbCYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZv
clN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBj
b25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhW
aW9sYXRpb25Qb3NpdGlvbik7CisgICAgc3RhdGljIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUo
Y29uc3QgTENoYXIqLCBzaXplX3QpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KTsKKyAgICBzdGF0aWMgYm9vbCBoYXNGb3Ji
aWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IExDaGFyQnVmZmVyJik7CisgICAgdm9pZCBwZXJjZW50
RW5jb2RlQnl0ZSh1aW50OF90KTsKKyAgICB2b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoVUNoYXIz
Mik7CisgICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwor
ICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6
ZV90IHNpemUpIHsgYXBwZW5kVG9BU0NJSUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihjaGFyYWN0ZXJzKSwgc2l6ZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiB2b2lkIGVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3Vy
Y2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyYsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KTsKKyAgICB2b2lkIGNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmluZyYsIHNpemVf
dCBsZW5ndGgpOworICAgIGJvb2wgY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJM
Jik7CisgICAgU3RyaW5nVmlldyBwYXJzZWREYXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBs
ZW5ndGgpOworICAgIFVDaGFyIHBhcnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlvbik7CisKKyAg
ICB1c2luZyBJUHY0QWRkcmVzcyA9IHVpbnQzMl90OworICAgIHZvaWQgc2VyaWFsaXplSVB2NChJ
UHY0QWRkcmVzcyk7CisgICAgZW51bSBjbGFzcyBJUHY0UGFyc2luZ0Vycm9yOworICAgIGVudW0g
Y2xhc3MgSVB2NFBpZWNlUGFyc2luZ0Vycm9yOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24sIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVj
dGVkPElQdjRBZGRyZXNzLCBJUHY0UGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRIb3N0KGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24+JiwgQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IEV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdF
cnJvcj4gcGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBi
b29sJiBzeW50YXhWaW9sYXRpb24pOworICAgIHVzaW5nIElQdjZBZGRyZXNzID0gc3RkOjphcnJh
eTx1aW50MTZfdCwgOD47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rk
OjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQ
djYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHZvaWQgc2VyaWFsaXpl
SVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsKKyAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFk
ZHJlc3MpOworCisgICAgZW51bSBjbGFzcyBVUkxQYXJ0OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHZvaWQgY29weVVSTFBhcnRzVW50aWwoY29uc3QgVVJMJiBiYXNlLCBV
UkxQYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGNvbnN0IFVS
TFRleHRFbmNvZGluZyomKTsKKyAgICBzdGF0aWMgc2l6ZV90IHVybExlbmd0aFVudGlsUGFydChj
b25zdCBVUkwmLCBVUkxQYXJ0KTsKKyAgICB2b2lkIHBvcFBhdGgoKTsKKyAgICBib29sIHNob3Vs
ZFBvcFBhdGgodW5zaWduZWQpOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Y2YvQ0ZVUkxFeHRyYXMuY3BwIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI2NjY1YThkMGZmYjk2MzQ5MjA2NDUzMTcwNWJjMWNiOTMzYmI3OGQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKQEAgLTAsMCAr
MSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDRlVS
TEV4dHJhcy5oIgorCisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1JldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRl
Q0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplLCBDRlVSTFJlZiBi
YXNlVVJMKQoreworICAgIC8vIE5PVEU6IFdlIHVzZSBVVEYtOCBoZXJlIHNpbmNlIHRoaXMgZW5j
b2RpbmcgaXMgdXNlZCB3aGVuIGNvbXB1dGluZyBzdHJpbmdzIHdoZW4gcmV0dXJuaW5nIFVSTCBj
b21wb25lbnRzCisgICAgLy8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRo
aXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3
aGljaAorICAgIC8vIGNvdWxkIGVpdGhlciBiZSBhIG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMg
aW4gYSBkaWZmZXJlbnQgZW5jb2RpbmcsIGxpa2UgU2hpZnQtSklTLCBzbyB3ZSBmYWxsIGJhY2sK
KyAgICAvLyBvbnRvIHVzaW5nIElTTyBMYXRpbi0xIGluIHRob3NlIGNhc2VzLgorICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0
aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCBiYXNlVVJMLCB0cnVlKSk7CisgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcygw
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSksIHNpemUsIGtDRlN0cmluZ0Vu
Y29kaW5nSVNPTGF0aW4xLCBiYXNlVVJMLCB0cnVlKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwordm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiB1cmwsIFVSTENoYXJCdWZmZXImIHJlc3VsdCkK
K3sKKyAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIDAsIDApOwor
ICAgIHJlc3VsdC5yZXNpemUoYnl0ZXNMZW5ndGgpOworICAgIENGSW5kZXggZmluYWxMZW5ndGgg
PSBDRlVSTEdldEJ5dGVzKHVybCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KHJlc3VsdC5kYXRh
KCkpLCBieXRlc0xlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxM
ZW5ndGggPT0gYnl0ZXNMZW5ndGgpOworfQorCit2b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmIHVy
bCwgQ1N0cmluZyYgcmVzdWx0KQoreworICAgIENGSW5kZXggYnl0ZXNMZW5ndGggPSBDRlVSTEdl
dEJ5dGVzKHVybCwgMCwgMCk7CisgICAgY2hhciogYnl0ZXM7CisgICAgcmVzdWx0ID0gQ1N0cmlu
Zzo6bmV3VW5pbml0aWFsaXplZChieXRlc0xlbmd0aCwgYnl0ZXMpOworICAgIENGSW5kZXggZmlu
YWxMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KGJ5
dGVzKSwgYnl0ZXNMZW5ndGgpOworICAgIEFTU0VSVF9VTlVTRUQoZmluYWxMZW5ndGgsIGZpbmFs
TGVuZ3RoID09IGJ5dGVzTGVuZ3RoKTsKK30KKworYm9vbCBpc0NGVVJMU2FtZU9yaWdpbihDRlVS
TFJlZiBjZlVSTCwgY29uc3QgVVJMJiB1cmwpCit7CisgICAgQVNTRVJUKHVybC5wcm90b2NvbElz
SW5IVFRQRmFtaWx5KCkpOworCisgICAgaWYgKHVybC5oYXNVc2VybmFtZSgpIHx8IHVybC5oYXNQ
YXNzd29yZCgpKQorICAgICAgICByZXR1cm4gcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVy
bCwgVVJMIHsgY2ZVUkwgfSk7CisKKyAgICBVUkxDaGFyQnVmZmVyIGJ5dGVzOworICAgIGdldFVS
TEJ5dGVzKGNmVVJMLCBieXRlcyk7CisgICAgU3RyaW5nVmlldyBjZlVSTFN0cmluZyB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihieXRlcy5kYXRhKCkpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oYnl0ZXMuc2l6ZSgpKSB9OworCisgICAgaWYgKCF1cmwuaGFzUGF0aCgpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9ID09IGNmVVJMU3RyaW5nOworCisg
ICAgYXV0byB1cmxXaXRob3V0UGF0aCA9IFN0cmluZ1ZpZXcgeyB1cmwuc3RyaW5nKCkgfS5zdWJz
dHJpbmcoMCwgdXJsLnBhdGhTdGFydCgpICsgMSk7CisgICAgcmV0dXJuIGNmVVJMU3RyaW5nLnN0
YXJ0c1dpdGgodXJsV2l0aG91dFBhdGgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9jZi9DRlVSTEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYWM0OWMzZjM3ZjY1MDBlOTYzYWVkNWIwNGQwOThmMzg1MWYwZWZjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuaApAQCAtMCwwICsx
LDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDRlVSTEV4dHJhc19oCisjZGVmaW5lIENGVVJM
RXh0cmFzX2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2Ns
YXNzIFVSTDsKK3R5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gVVJMQ2hhckJ1ZmZlcjsKKworV1RG
X0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVy
KGNvbnN0IGNoYXIqLCBzaXplX3QsIENGVVJMUmVmIGJhc2VVUkwgPSAwKTsKK1dURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmLCBVUkxDaGFyQnVmZmVyJik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgQ1N0cmluZyYpOworCiti
b29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmLCBjb25zdCBVUkwmKTsKKworfQorCisjZW5k
aWYgLy8gQ0ZVUkxFeHRyYXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvVVJMQ0Yu
Y3BwIGIvU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NTkxZTJiMzg0
ZWJiMjA2ZDUyMjI3ZWM5Y2JmOWU3NWQ5NTgyNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9jZi9VUkxDRi5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisjaW5jbHVkZSAiQ0ZVUkxFeHRyYXMuaCIKKyNp
bmNsdWRlICJVUkxQYXJzZXIuaCIKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlVSTC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1VSTDo6
VVJMKENGVVJMUmVmIHVybCkKK3sKKyAgICBpZiAoIXVybCkgeworICAgICAgICBpbnZhbGlkYXRl
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9L
IHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPworICAgIENTdHJpbmcgdXJsQnl0ZXM7CisgICAgZ2V0
VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7CisgICAgVVJMUGFyc2VyIHBhcnNlcih1cmxCeXRlcy5k
YXRhKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCisjaWYgIVVTRShGT1VO
REFUSU9OKQorUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKK3sK
KyAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgdGhpcyByZXR1cm4gZm9yIGludmFsaWQgVVJMcz8K
KyAgICAvLyBDdXJyZW50bHkgaXQgdGhyb3dzIGF3YXkgdGhlIGhpZ2ggYnl0ZXMgb2YgdGhlIGNo
YXJhY3RlcnMgaW4gdGhlIHN0cmluZyBpbiB0aGF0IGNhc2UsCisgICAgLy8gd2hpY2ggaXMgY2xl
YXJseSB3cm9uZy4KKyAgICBVUkxDaGFyQnVmZmVyIGJ1ZmZlcjsKKyAgICBjb3B5VG9CdWZmZXIo
YnVmZmVyKTsKKyAgICBhdXRvIGNmVVJMID0gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOworCisgICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSAmJiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gY2ZVUkw7Cit9CisjZW5kaWYKKworU3RyaW5nIFVS
TDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAoreworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZV
UkwgPSBjcmVhdGVDRlVSTCgpOworICAgIGlmICghY2ZVUkwpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUg
PSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlOworI2Vsc2UKKyAgICBDRlVSTFBhdGhTdHlsZSBwYXRo
U3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsKKyNlbmRpZgorICAgIHJldHVybiBhZG9wdENG
KENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKGNmVVJMLmdldCgpLCBwYXRoU3R5bGUpKS5nZXQoKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMuaCBi
L1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM0MzJlNGIz
M2QyNDg3ZGI3MGZmNGQzOWIwYmQ0M2U5Zjg5YWExYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxMiwgMjAxNCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworQGNsYXNzIE5TU3RyaW5nOworQGNsYXNzIE5TVVJMOworCituYW1lc3BhY2UgV1RGIHsKKwor
V1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmlu
ZyAqLCBOU1VSTCAqYmFzZVVSTCk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3Iu
CitXVEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhOU1VSTCAq
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcg
Kik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCitXVEZfRVhQT1JUX1BSSVZB
VEUgTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5TU3RyaW5nICopOyAvLyBSZXR1cm4gdmFsdWUg
b2YgbmlsIG1lYW5zIGVycm9yLgorV1RGX0VYUE9SVF9QUklWQVRFIE5TVVJMICpVUkxCeVRydW5j
YXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwgKiwgQ0ZVUkxDb21wb25lbnRU
eXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICosIE5T
VVJMICpiYXNlVVJMKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU0RhdGEgKm9yaWdpbmFsVVJMRGF0
YShOU1VSTCAqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU0RhdGEgKmRhdGFGb3JVUkxDb21wb25l
bnRUeXBlKE5TVVJMICosIENGVVJMQ29tcG9uZW50VHlwZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
TlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKE5TU3RyaW5nICosIE5TVVJM
ICpiYXNlVVJMKTsKKworTlNSYW5nZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICopOworV1RG
X0VYUE9SVF9QUklWQVRFIEJPT0wgaXNVc2VyVmlzaWJsZVVSTChOU1N0cmluZyAqKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBCT09MIGxvb2tzTGlrZUFic29sdXRlVVJMKE5TU3RyaW5nICopOworCit9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJM
RXh0cmFzLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTM1ZTQyZGI1YTBlMzQ0NGIyODU3ZDNlZjE2OTgwN2MyOTUzZWEzMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCkBAIC0wLDAgKzEsMTIz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgorI2ltcG9ydCAiTlNVUkxFeHRyYXMuaCIKKworI2ltcG9ydCAiQ0ZVUkxFeHRyYXMu
aCIKKyNpbXBvcnQgIlVSTFBhcnNlci5oIgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CisjaW1w
b3J0IDx3dGYvSGV4TnVtYmVyLmg+CisjaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBv
cnQgPHVuaWNvZGUvdWNoYXIuaD4KKyNpbXBvcnQgPHVuaWNvZGUvdWlkbmEuaD4KKyNpbXBvcnQg
PHVuaWNvZGUvdXNjcmlwdC5oPgorCisvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQg
YW4gSUROLWVuY29kZWQgbmFtZS4KKy8vIEZvciBob3N0IG5hbWVzIGJpZ2dlciB0aGFuIHRoaXMs
IHdlIHdvbid0IGRvIElETiBlbmNvZGluZywgd2hpY2ggaXMgYWxtb3N0IGNlcnRhaW5seSBPSy4K
KyNkZWZpbmUgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEggMjA0OAorI2RlZmluZSBVUkxfQllURVNf
QlVGRkVSX0xFTkdUSCAyMDQ4CisKK3R5cGVkZWYgdm9pZCAoKiBTdHJpbmdSYW5nZUFwcGxpZXJG
dW5jdGlvbikoTlNTdHJpbmcgKiwgTlNSYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYp
OworCitzdGF0aWMgdWludDMyX3QgSUROU2NyaXB0V2hpdGVMaXN0WyhVU0NSSVBUX0NPREVfTElN
SVQgKyAzMSkgLyAzMl07CisKK25hbWVzcGFjZSBXVEYgeworCitzdGF0aWMgYm9vbCBpc0FybWVu
aWFuTG9va2FsaWtlQ2hhcmFjdGVyKFVDaGFyMzIgY29kZVBvaW50KQoreworICAgIHJldHVybiBj
b2RlUG9pbnQgPT0gMHgwNTQ4IHx8IGNvZGVQb2ludCA9PSAweDA1NEQgfHwgY29kZVBvaW50ID09
IDB4MDU3OCB8fCBjb2RlUG9pbnQgPT0gMHgwNTdEOworfQorCitzdGF0aWMgYm9vbCBpc0FybWVu
aWFuU2NyaXB0Q2hhcmFjdGVyKFVDaGFyMzIgY29kZVBvaW50KQoreworICAgIFVFcnJvckNvZGUg
ZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9n
ZXRTY3JpcHQoY29kZVBvaW50LCAmZXJyb3IpOworICAgIGlmIChlcnJvciAhPSBVX1pFUk9fRVJS
T1IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBs
b29rIGF0IHNjcmlwdHM6ICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgcmV0dXJuIHNjcmlwdCA9PSBVU0NSSVBUX0FSTUVOSUFOOworfQorCisKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlEaWdpdE9yVmFs
aWRIb3N0Q2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhckNvZGUpCit7CisgICAgaWYgKCFpc0FT
Q0lJRGlnaXRPclB1bmN0dWF0aW9uKGNoYXJDb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gVGhpbmdzIHRoZSBVUkwgUGFyc2VyIHJlamVjdHM6CisgICAgc3dpdGNoIChjaGFy
Q29kZSkgeworICAgIGNhc2UgJyMnOgorICAgIGNhc2UgJyUnOgorICAgIGNhc2UgJy8nOgorICAg
IGNhc2UgJzonOgorICAgIGNhc2UgJz8nOgorICAgIGNhc2UgJ0AnOgorICAgIGNhc2UgJ1snOgor
ICAgIGNhc2UgJ1xcJzoKKyAgICBjYXNlICddJzoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKworCisKK3N0YXRpYyBC
T09MIGlzTG9va2FsaWtlQ2hhcmFjdGVyKHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXND
b2RlUG9pbnQsIFVDaGFyMzIgY2hhckNvZGUpCit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiB0cmVh
dHMgdGhlIGZvbGxvd2luZyBhcyB1bnNhZmUsIGxvb2thbGlrZSBjaGFyYWN0ZXJzOgorICAgIC8v
IGFueSBub24tcHJpbnRhYmxlIGNoYXJhY3RlciwgYW55IGNoYXJhY3RlciBjb25zaWRlcmVkIGFz
IHdoaXRlc3BhY2UsCisgICAgLy8gYW55IGlnbm9yYWJsZSBjaGFyYWN0ZXIsIGFuZCBlbW9qaSBj
aGFyYWN0ZXJzIHJlbGF0ZWQgdG8gbG9ja3MuCisgICAgCisgICAgLy8gV2UgYWxzbyBjb25zaWRl
cmVkIHRoZSBjaGFyYWN0ZXJzIGluIE1vemlsbGEncyBibGFja2xpc3QgPGh0dHA6Ly9rYi5tb3pp
bGxhemluZS5vcmcvTmV0d29yay5JRE4uYmxhY2tsaXN0X2NoYXJzPi4KKworICAgIC8vIFNvbWUg
b2YgdGhlIGNoYXJhY3RlcnMgaGVyZSB3aWxsIG5ldmVyIGFwcGVhciBvbmNlIElDVSBoYXMgZW5j
b2RlZC4KKyAgICAvLyBGb3IgZXhhbXBsZSwgSUNVIHRyYW5zZm9ybXMgbW9zdCBzcGFjZXMgaW50
byBhbiBBU0NJSSBzcGFjZSBhbmQgbW9zdAorICAgIC8vIHNsYXNoZXMgaW50byBhbiBBU0NJSSBz
b2xpZHVzLiBCdXQgb25lIG9mIHRoZSB0d28gY2FsbGVycyB1c2VzIHRoaXMKKyAgICAvLyBvbiBj
aGFyYWN0ZXJzIHRoYXQgaGF2ZSBub3QgYmVlbiBwcm9jZXNzZWQgYnkgSUNVLCBzbyB0aGV5IGFy
ZSBuZWVkZWQgaGVyZS4KKyAgICAKKyAgICBpZiAoIXVfaXNwcmludChjaGFyQ29kZSkgfHwgdV9p
c1VXaGl0ZVNwYWNlKGNoYXJDb2RlKSB8fCB1X2hhc0JpbmFyeVByb3BlcnR5KGNoYXJDb2RlLCBV
Q0hBUl9ERUZBVUxUX0lHTk9SQUJMRV9DT0RFX1BPSU5UKSkKKyAgICAgICAgcmV0dXJuIFlFUzsK
KyAgICAKKyAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7CisgICAgICAgIGNhc2UgMHgwMEJDOiAvKiBW
VUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIgKi8KKyAgICAgICAgY2FzZSAweDAwQkQ6IC8qIFZV
TEdBUiBGUkFDVElPTiBPTkUgSEFMRiAqLworICAgICAgICBjYXNlIDB4MDBCRTogLyogVlVMR0FS
IEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTICovCisgICAgICAgIGNhc2UgMHgwMEVEOiAvKiBMQVRJ
TiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFICovCisgICAgICAgIGNhc2UgMHgwMUMzOiAvKiBM
QVRJTiBMRVRURVIgUkVUUk9GTEVYIENMSUNLICovCisgICAgICAgIGNhc2UgMHgwMjUxOiAvKiBM
QVRJTiBTTUFMTCBMRVRURVIgQUxQSEEgKi8KKyAgICAgICAgY2FzZSAweDAyNjE6IC8qIExBVElO
IFNNQUxMIExFVFRFUiBTQ1JJUFQgRyAqLworICAgICAgICBjYXNlIDB4MDJEMDogLyogTU9ESUZJ
RVIgTEVUVEVSIFRSSUFOR1VMQVIgQ09MT04gKi8KKyAgICAgICAgY2FzZSAweDAzMzU6IC8qIENP
TUJJTklORyBTSE9SVCBTVFJPS0UgT1ZFUkxBWSAqLworICAgICAgICBjYXNlIDB4MDMzNzogLyog
Q09NQklOSU5HIFNIT1JUIFNPTElEVVMgT1ZFUkxBWSAqLworICAgICAgICBjYXNlIDB4MDMzODog
LyogQ09NQklOSU5HIExPTkcgU09MSURVUyBPVkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwNTg5
OiAvKiBBUk1FTklBTiBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDA1QjQ6IC8qIEhFQlJF
VyBQT0lOVCBISVJJUSAqLworICAgICAgICBjYXNlIDB4MDVCQzogLyogSEVCUkVXIFBPSU5UIERB
R0VTSCBPUiBNQVBJUSAqLworICAgICAgICBjYXNlIDB4MDVDMzogLyogSEVCUkVXIFBVTkNUVUFU
SU9OIFNPRiBQQVNVUSAqLworICAgICAgICBjYXNlIDB4MDVGNDogLyogSEVCUkVXIFBVTkNUVUFU
SU9OIEdFUlNIQVlJTSAqLworICAgICAgICBjYXNlIDB4MDYwOTogLyogQVJBQklDLUlORElDIFBF
UiBNSUxMRSBTSUdOICovCisgICAgICAgIGNhc2UgMHgwNjBBOiAvKiBBUkFCSUMtSU5ESUMgUEVS
IFRFTiBUSE9VU0FORCBTSUdOICovCisgICAgICAgIGNhc2UgMHgwNjUwOiAvKiBBUkFCSUMgS0FT
UkEgKi8KKyAgICAgICAgY2FzZSAweDA2NjA6IC8qIEFSQUJJQyBJTkRJQyBESUdJVCBaRVJPICov
CisgICAgICAgIGNhc2UgMHgwNjZBOiAvKiBBUkFCSUMgUEVSQ0VOVCBTSUdOICovCisgICAgICAg
IGNhc2UgMHgwNkQ0OiAvKiBBUkFCSUMgRlVMTCBTVE9QICovCisgICAgICAgIGNhc2UgMHgwNkYw
OiAvKiBFWFRFTkRFRCBBUkFCSUMgSU5ESUMgRElHSVQgWkVSTyAqLworICAgICAgICBjYXNlIDB4
MDcwMTogLyogU1lSSUFDIFNVUFJBTElORUFSIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4
MDcwMjogLyogU1lSSUFDIFNVQkxJTkVBUiBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDA3
MDM6IC8qIFNZUklBQyBTVVBSQUxJTkVBUiBDT0xPTiAqLworICAgICAgICBjYXNlIDB4MDcwNDog
LyogU1lSSUFDIFNVQkxJTkVBUiBDT0xPTiAqLworICAgICAgICBjYXNlIDB4MTczNTogLyogUEhJ
TElQUElORSBTSU5HTEUgUFVOQ1RVQVRJT04gKi8KKyAgICAgICAgY2FzZSAweDFEMDQ6IC8qIExB
VElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEMgKi8KKyAgICAgICAgY2FzZSAweDFEMEY6IC8qIExB
VElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE8gKi8KKyAgICAgICAgY2FzZSAweDFEMUM6IC8qIExB
VElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFUgKi8KKyAgICAgICAgY2FzZSAweDFEMjA6IC8qIExB
VElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFYgKi8KKyAgICAgICAgY2FzZSAweDFEMjE6IC8qIExB
VElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFcgKi8KKyAgICAgICAgY2FzZSAweDFEMjI6IC8qIExB
VElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFogKi8KKyAgICAgICAgY2FzZSAweDFFQ0Q6IC8qIExB
VElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9UIEJFTE9XICovCisgICAgICAgIGNhc2UgMHgyMDEw
OiAvKiBIWVBIRU4gKi8KKyAgICAgICAgY2FzZSAweDIwMTE6IC8qIE5PTi1CUkVBS0lORyBIWVBI
RU4gKi8KKyAgICAgICAgY2FzZSAweDIwMjQ6IC8qIE9ORSBET1QgTEVBREVSICovCisgICAgICAg
IGNhc2UgMHgyMDI3OiAvKiBIWVBIRU5BVElPTiBQT0lOVCAqLworICAgICAgICBjYXNlIDB4MjAz
OTogLyogU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksgKi8KKyAgICAg
ICAgY2FzZSAweDIwM0E6IC8qIFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04g
TUFSSyAqLworICAgICAgICBjYXNlIDB4MjA0MTogLyogQ0FSRVQgSU5TRVJUSU9OIFBPSU5UICov
CisgICAgICAgIGNhc2UgMHgyMDQ0OiAvKiBGUkFDVElPTiBTTEFTSCAqLworICAgICAgICBjYXNl
IDB4MjA1MjogLyogQ09NTUVSQ0lBTCBNSU5VUyBTSUdOICovCisgICAgICAgIGNhc2UgMHgyMTUz
OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFRISVJEICovCisgICAgICAgIGNhc2UgMHgyMTU0OiAv
KiBWVUxHQVIgRlJBQ1RJT04gVFdPIFRISVJEUyAqLworICAgICAgICBjYXNlIDB4MjE1NTogLyog
VlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSCAqLworICAgICAgICBjYXNlIDB4MjE1NjogLyogVlVM
R0FSIEZSQUNUSU9OIFRXTyBGSUZUSFMgKi8KKyAgICAgICAgY2FzZSAweDIxNTc6IC8qIFZVTEdB
UiBGUkFDVElPTiBUSFJFRSBGSUZUSFMgKi8KKyAgICAgICAgY2FzZSAweDIxNTg6IC8qIFZVTEdB
UiBGUkFDVElPTiBGT1VSIEZJRlRIUyAqLworICAgICAgICBjYXNlIDB4MjE1OTogLyogVlVMR0FS
IEZSQUNUSU9OIE9ORSBTSVhUSCAqLworICAgICAgICBjYXNlIDB4MjE1QTogLyogVlVMR0FSIEZS
QUNUSU9OIEZJVkUgU0lYVEhTICovCisgICAgICAgIGNhc2UgMHgyMTVCOiAvKiBWVUxHQVIgRlJB
Q1RJT04gT05FIEVJR0hUICovCisgICAgICAgIGNhc2UgMHgyMTVDOiAvKiBWVUxHQVIgRlJBQ1RJ
T04gVEhSRUUgRUlHSFRIUyAqLworICAgICAgICBjYXNlIDB4MjE1RDogLyogVlVMR0FSIEZSQUNU
SU9OIEZJVkUgRUlHSFRIUyAqLworICAgICAgICBjYXNlIDB4MjE1RTogLyogVlVMR0FSIEZSQUNU
SU9OIFNFVkVOIEVJR0hUSFMgKi8KKyAgICAgICAgY2FzZSAweDIxNUY6IC8qIEZSQUNUSU9OIE5V
TUVSQVRPUiBPTkUgKi8KKyAgICAgICAgY2FzZSAweDIyMTI6IC8qIE1JTlVTIFNJR04gKi8KKyAg
ICAgICAgY2FzZSAweDIyMTU6IC8qIERJVklTSU9OIFNMQVNIICovCisgICAgICAgIGNhc2UgMHgy
MjE2OiAvKiBTRVQgTUlOVVMgKi8KKyAgICAgICAgY2FzZSAweDIyMzY6IC8qIFJBVElPICovCisg
ICAgICAgIGNhc2UgMHgyMzNGOiAvKiBBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU0xBU0ggQkFSICov
CisgICAgICAgIGNhc2UgMHgyM0FFOiAvKiBJTlRFR1JBTCBFWFRFTlNJT04gKi8KKyAgICAgICAg
Y2FzZSAweDI0NEE6IC8qIE9DUiBET1VCTEUgQkFDS1NMQVNIICovCisgICAgICAgIGNhc2UgMHgy
NTcxOiAvKiBEaXNwbGF5VHlwZTo6Qm94IERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIFJJ
R0hUIFRPIExPV0VSIExFRlQgKi8KKyAgICAgICAgY2FzZSAweDI1NzI6IC8qIERpc3BsYXlUeXBl
OjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVCAq
LworICAgICAgICBjYXNlIDB4MjlGNjogLyogU09MSURVUyBXSVRIIE9WRVJCQVIgKi8KKyAgICAg
ICAgY2FzZSAweDI5Rjg6IC8qIEJJRyBTT0xJRFVTICovCisgICAgICAgIGNhc2UgMHgyQUZCOiAv
KiBUUklQTEUgU09MSURVUyBCSU5BUlkgUkVMQVRJT04gKi8KKyAgICAgICAgY2FzZSAweDJBRkQ6
IC8qIERPVUJMRSBTT0xJRFVTIE9QRVJBVE9SICovCisgICAgICAgIGNhc2UgMHgyRkYwOiAvKiBJ
REVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgTEVGVCBUTyBSSUdIVCAqLworICAgICAg
ICBjYXNlIDB4MkZGMTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEFCT1ZF
IFRPIEJFTE9XICovCisgICAgICAgIGNhc2UgMHgyRkYyOiAvKiBJREVPR1JBUEhJQyBERVNDUklQ
VElPTiBDSEFSQUNURVIgTEVGVCBUTyBNSURETEUgQU5EIFJJR0hUICovCisgICAgICAgIGNhc2Ug
MHgyRkYzOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gTUlE
RExFIEFORCBCRUxPVyAqLworICAgICAgICBjYXNlIDB4MkZGNDogLyogSURFT0dSQVBISUMgREVT
Q1JJUFRJT04gQ0hBUkFDVEVSIEZVTEwgU1VSUk9VTkQgKi8KKyAgICAgICAgY2FzZSAweDJGRjU6
IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEFCT1ZF
ICovCisgICAgICAgIGNhc2UgMHgyRkY2OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFS
QUNURVIgU1VSUk9VTkQgRlJPTSBCRUxPVyAqLworICAgICAgICBjYXNlIDB4MkZGNzogLyogSURF
T0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTEVGVCAqLworICAg
ICAgICBjYXNlIDB4MkZGODogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNV
UlJPVU5EIEZST00gVVBQRVIgTEVGVCAqLworICAgICAgICBjYXNlIDB4MkZGOTogLyogSURFT0dS
QVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gVVBQRVIgUklHSFQgKi8K
KyAgICAgICAgY2FzZSAweDJGRkE6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RF
UiBTVVJST1VORCBGUk9NIExPV0VSIExFRlQgKi8KKyAgICAgICAgY2FzZSAweDJGRkI6IC8qIElE
RU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBPVkVSTEFJRCAqLworICAgICAgICBjYXNl
IDB4MzAwMjogLyogSURFT0dSQVBISUMgRlVMTCBTVE9QICovCisgICAgICAgIGNhc2UgMHgzMDA4
OiAvKiBMRUZUIEFOR0xFIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweDMwMTQ6IC8qIExFRlQg
VE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLworICAgICAgICBjYXNlIDB4MzAxNTogLyogUklHSFQg
VE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLworICAgICAgICBjYXNlIDB4MzAzMzogLyogVkVSVElD
QUwgS0FOQSBSRVBFQVQgTUFSSyBVUFBFUiBIQUxGICovCisgICAgICAgIGNhc2UgMHgzMDM1OiAv
KiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIExPV0VSIEhBTEYgKi8KKyAgICAgICAgY2FzZSAw
eDMyMUQ6IC8qIFBBUkVOVEhFU0laRUQgS09SRUFOIENIQVJBQ1RFUiBPSkVPTiAqLworICAgICAg
ICBjYXNlIDB4MzIxRTogLyogUEFSRU5USEVTSVpFRCBLT1JFQU4gQ0hBUkFDVEVSIE8gSFUgKi8K
KyAgICAgICAgY2FzZSAweDMzQUU6IC8qIFNRVUFSRSBSQUQgT1ZFUiBTICovCisgICAgICAgIGNh
c2UgMHgzM0FGOiAvKiBTUVVBUkUgUkFEIE9WRVIgUyBTUVVBUkVEICovCisgICAgICAgIGNhc2Ug
MHgzM0M2OiAvKiBTUVVBUkUgQyBPVkVSIEtHICovCisgICAgICAgIGNhc2UgMHgzM0RGOiAvKiBT
UVVBUkUgQSBPVkVSIE0gKi8KKyAgICAgICAgY2FzZSAweDA1Qjk6IC8qIEhFQlJFVyBQT0lOVCBI
T0xBTSAqLworICAgICAgICBjYXNlIDB4MDVCQTogLyogSEVCUkVXIFBPSU5UIEhPTEFNIEhBU0VS
IEZPUiBWQVYgKi8KKyAgICAgICAgY2FzZSAweDA1QzE6IC8qIEhFQlJFVyBQT0lOVCBTSElOIERP
VCAqLworICAgICAgICBjYXNlIDB4MDVDMjogLyogSEVCUkVXIFBPSU5UIFNJTiBET1QgKi8KKyAg
ICAgICAgY2FzZSAweDA1QzQ6IC8qIEhFQlJFVyBNQVJLIFVQUEVSIERPVCAqLworICAgICAgICBj
YXNlIDB4QTczMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgUyAqLworICAgICAgICBj
YXNlIDB4QTc3MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIERVTSAqLworICAgICAgICBjYXNlIDB4
QTc4OTogLyogTU9ESUZJRVIgTEVUVEVSIENPTE9OICovCisgICAgICAgIGNhc2UgMHhGRTE0OiAv
KiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgU0VNSUNPTE9OICovCisgICAgICAgIGNh
c2UgMHhGRTE1OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgRVhDTEFNQVRJT04g
TUFSSyAqLworICAgICAgICBjYXNlIDB4RkUzRjogLyogUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZF
UlRJQ0FMIExFRlQgQU5HTEUgQlJBQ0tFVCAqLworICAgICAgICBjYXNlIDB4RkU1RDogLyogU01B
TEwgTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCisgICAgICAgIGNhc2UgMHhGRTVFOiAv
KiBTTUFMTCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCisgICAgICAgIGNhc2UgMHhG
RjBFOiAvKiBGVUxMV0lEVEggRlVMTCBTVE9QICovCisgICAgICAgIGNhc2UgMHhGRjBGOiAvKiBG
VUxMIFdJRFRIIFNPTElEVVMgKi8KKyAgICAgICAgY2FzZSAweEZGNjE6IC8qIEhBTEZXSURUSCBJ
REVPR1JBUEhJQyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweEZGRkM6IC8qIE9CSkVDVCBS
RVBMQUNFTUVOVCBDSEFSQUNURVIgKi8KKyAgICAgICAgY2FzZSAweEZGRkQ6IC8qIFJFUExBQ0VN
RU5UIENIQVJBQ1RFUiAqLworICAgICAgICBjYXNlIDB4MUY1MEY6IC8qIExPQ0sgV0lUSCBJTksg
UEVOICovCisgICAgICAgIGNhc2UgMHgxRjUxMDogLyogQ0xPU0VEIExPQ0sgV0lUSCBLRVkgKi8K
KyAgICAgICAgY2FzZSAweDFGNTExOiAvKiBLRVkgKi8KKyAgICAgICAgY2FzZSAweDFGNTEyOiAv
KiBMT0NLICovCisgICAgICAgIGNhc2UgMHgxRjUxMzogLyogT1BFTiBMT0NLICovCisgICAgICAg
ICAgICByZXR1cm4gWUVTOworICAgICAgICBjYXNlIDB4MDMwNzogLyogQ09NQklOSU5HIERPVCBB
Qk9WRSAqLworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDIzNyAv
KiBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKICovCisgICAgICAgICAgICAgICAgfHwgcHJl
dmlvdXNDb2RlUG9pbnQgPT0gMHgwMTMxIC8qIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEkg
Ki8KKyAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDA1RDU7IC8qIEhF
QlJFVyBMRVRURVIgVkFWICovCisgICAgICAgIGNhc2UgMHgwNTQ4OiAvKiBBUk1FTklBTiBDQVBJ
VEFMIExFVFRFUiBWTyAqLworICAgICAgICBjYXNlIDB4MDU0RDogLyogQVJNRU5JQU4gQ0FQSVRB
TCBMRVRURVIgU0VIICovCisgICAgICAgIGNhc2UgMHgwNTc4OiAvKiBBUk1FTklBTiBTTUFMTCBM
RVRURVIgVk8gKi8KKyAgICAgICAgY2FzZSAweDA1N0Q6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRF
UiBTRUggKi8KKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0NvZGVQb2ludAorICAgICAgICAg
ICAgICAgICYmICFpc0FTQ0lJRGlnaXRPclZhbGlkSG9zdENoYXJhY3RlcihwcmV2aW91c0NvZGVQ
b2ludC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICYmICFpc0FybWVuaWFuU2NyaXB0Q2hhcmFj
dGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpOworICAgICAgICBjYXNlICcuJzoKKyAgICAg
ICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBw
cmV2aW91c0NvZGVQb2ludAorICAgICAgICAgICAgICAgICYmIGlzQXJtZW5pYW5Mb29rYWxpa2VD
aGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUoKSkKKyAgICAgICAgICAgICAgICAmJiAh
KGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoY2hhckNvZGUpIHx8IGlzQVNDSUlEaWdpdE9yVmFs
aWRIb3N0Q2hhcmFjdGVyKGNoYXJDb2RlKSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3aGl0
ZUxpc3RJRE5TY3JpcHQoY29uc3QgY2hhciogc2NyaXB0TmFtZSkKK3sKKyAgICBpbnQzMl90IHNj
cmlwdCA9IHVfZ2V0UHJvcGVydHlWYWx1ZUVudW0oVUNIQVJfU0NSSVBULCBzY3JpcHROYW1lKTsK
KyAgICBpZiAoc2NyaXB0ID49IDAgJiYgc2NyaXB0IDwgVVNDUklQVF9DT0RFX0xJTUlUKSB7Cisg
ICAgICAgIHNpemVfdCBpbmRleCA9IHNjcmlwdCAvIDMyOworICAgICAgICB1aW50MzJfdCBtYXNr
ID0gMSA8PCAoc2NyaXB0ICUgMzIpOworICAgICAgICBJRE5TY3JpcHRXaGl0ZUxpc3RbaW5kZXhd
IHw9IG1hc2s7CisgICAgfQorfQorCitzdGF0aWMgQk9PTCByZWFkSUROU2NyaXB0V2hpdGVMaXN0
RmlsZShOU1N0cmluZyAqZmlsZW5hbWUpCit7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAg
cmV0dXJuIE5POworCisgICAgRklMRSAqZmlsZSA9IGZvcGVuKFtmaWxlbmFtZSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb25dLCAiciIpOworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIE5P
OworICAgIAorICAgIC8vIFJlYWQgYSB3b3JkIGF0IGEgdGltZS4KKyAgICAvLyBBbGxvdyBjb21t
ZW50cywgc3RhcnRpbmcgd2l0aCAjIGNoYXJhY3RlciB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgor
ICAgIHdoaWxlICgxKSB7CisgICAgICAgIC8vIFNraXAgYSBjb21tZW50IGlmIHByZXNlbnQuCisg
ICAgICAgIGlmIChmc2NhbmYoZmlsZSwgIiAjJSpbXlxuXHJdJSpbXG5ccl0iKSA9PSBFT0YpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICAgIC8vIFJlYWQgYSBzY3JpcHQgbmFt
ZSBpZiBwcmVzZW50LgorICAgICAgICBjaGFyIHdvcmRbMzNdOworICAgICAgICBpbnQgcmVzdWx0
ID0gZnNjYW5mKGZpbGUsICIgJTMyW14jIFx0XG5ccl0lKlteIyBcdFxuXHJdICIsIHdvcmQpOwor
ICAgICAgICBpZiAocmVzdWx0ID09IEVPRikKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAK
KyAgICAgICAgaWYgKHJlc3VsdCA9PSAxKSB7CisgICAgICAgICAgICAvLyBHb3QgYSB3b3JkLCBt
YXAgdG8gc2NyaXB0IGNvZGUgYW5kIHB1dCBpdCBpbnRvIHRoZSBhcnJheS4KKyAgICAgICAgICAg
IHdoaXRlTGlzdElETlNjcmlwdCh3b3JkKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmY2xvc2Uo
ZmlsZSk7CisgICAgcmV0dXJuIFlFUzsKK30KKworc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVyc0lu
SUROU2NyaXB0V2hpdGVMaXN0KGNvbnN0IFVDaGFyICpidWZmZXIsIGludDMyX3QgbGVuZ3RoKQor
eworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgZmxhZzsKKyAgICBkaXNwYXRjaF9vbmNlKCZm
bGFnLCBeeworICAgICAgICAvLyBSZWFkIHdoaXRlIGxpc3QgZnJvbSBsaWJyYXJ5LgorICAgICAg
ICBOU0FycmF5ICpkaXJzID0gTlNTZWFyY2hQYXRoRm9yRGlyZWN0b3JpZXNJbkRvbWFpbnMoTlNM
aWJyYXJ5RGlyZWN0b3J5LCBOU0FsbERvbWFpbnNNYXNrLCBZRVMpOworICAgICAgICBpbnQgbnVt
RGlycyA9IFtkaXJzIGNvdW50XTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1EaXJz
OyBpKyspIHsKKyAgICAgICAgICAgIGlmIChyZWFkSUROU2NyaXB0V2hpdGVMaXN0RmlsZShbW2Rp
cnMgb2JqZWN0QXRJbmRleDppXSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJRE5T
Y3JpcHRXaGl0ZUxpc3QudHh0Il0pKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBjb25zdCBjaGFyKiBkZWZhdWx0SUROU2NyaXB0V2hpdGVMaXN0WzIwXSA9IHsK
KyAgICAgICAgICAgICJDb21tb24iLAorICAgICAgICAgICAgIkluaGVyaXRlZCIsCisgICAgICAg
ICAgICAiQXJhYmljIiwKKyAgICAgICAgICAgICJBcm1lbmlhbiIsCisgICAgICAgICAgICAiQm9w
b21vZm8iLAorICAgICAgICAgICAgIkNhbmFkaWFuX0Fib3JpZ2luYWwiLAorICAgICAgICAgICAg
IkRldmFuYWdhcmkiLAorICAgICAgICAgICAgIkRlc2VyZXQiLAorICAgICAgICAgICAgIkd1amFy
YXRpIiwKKyAgICAgICAgICAgICJHdXJtdWtoaSIsCisgICAgICAgICAgICAiSGFuZ3VsIiwKKyAg
ICAgICAgICAgICJIYW4iLAorICAgICAgICAgICAgIkhlYnJldyIsCisgICAgICAgICAgICAiSGly
YWdhbmEiLAorICAgICAgICAgICAgIkthdGFrYW5hX09yX0hpcmFnYW5hIiwKKyAgICAgICAgICAg
ICJLYXRha2FuYSIsCisgICAgICAgICAgICAiTGF0aW4iLAorICAgICAgICAgICAgIlRhbWlsIiwK
KyAgICAgICAgICAgICJUaGFpIiwKKyAgICAgICAgICAgICJZaSIsCisgICAgICAgIH07CisgICAg
ICAgIGZvciAoY29uc3QgY2hhciogc2NyaXB0TmFtZSA6IGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxp
c3QpCisgICAgICAgICAgICB3aGl0ZUxpc3RJRE5TY3JpcHQoc2NyaXB0TmFtZSk7CisgICAgfSk7
CisgICAgCisgICAgaW50MzJfdCBpID0gMDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHBy
ZXZpb3VzQ29kZVBvaW50OworICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7CisgICAgICAgIFVDaGFy
MzIgYzsKKyAgICAgICAgVTE2X05FWFQoYnVmZmVyLCBpLCBsZW5ndGgsIGMpCisgICAgICAgIFVF
cnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFVTY3JpcHRDb2RlIHNjcmlw
dCA9IHVzY3JpcHRfZ2V0U2NyaXB0KGMsICZlcnJvcik7CisgICAgICAgIGlmIChlcnJvciAhPSBV
X1pFUk9fRVJST1IpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiZ290IElDVSBlcnJvciB3aGls
ZSB0cnlpbmcgdG8gbG9vayBhdCBzY3JpcHRzOiAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJl
dHVybiBOTzsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2NyaXB0IDwgMCkgeworICAgICAgICAg
ICAgTE9HX0VSUk9SKCJnb3QgbmVnYXRpdmUgbnVtYmVyIGZvciBzY3JpcHQgY29kZSBmcm9tIElD
VTogJWQiLCBzY3JpcHQpOworICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAgICB9CisgICAg
ICAgIGlmIChzY3JpcHQgPj0gVVNDUklQVF9DT0RFX0xJTUlUKQorICAgICAgICAgICAgcmV0dXJu
IE5POworCisgICAgICAgIHNpemVfdCBpbmRleCA9IHNjcmlwdCAvIDMyOworICAgICAgICB1aW50
MzJfdCBtYXNrID0gMSA8PCAoc2NyaXB0ICUgMzIpOworICAgICAgICBpZiAoIShJRE5TY3JpcHRX
aGl0ZUxpc3RbaW5kZXhdICYgbWFzaykpCisgICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAg
IAorICAgICAgICBpZiAoaXNMb29rYWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQsIGMp
KQorICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAgICBwcmV2aW91c0NvZGVQb2ludCA9IGM7
CisgICAgfQorICAgIHJldHVybiBZRVM7Cit9CisKK3N0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxE
b21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBs
ZW5ndGgsIGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChVQ2hhcik+JiBjaGFyYWN0ZXJJc0FsbG93
ZWQpCit7CisgICAgQVNTRVJUKGxlbmd0aCA+IDApOworCisgICAgZm9yIChpbnQzMl90IGkgPSBs
ZW5ndGggLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICBVQ2hhciBjaCA9IGJ1ZmZlcltpXTsK
KyAgICAgICAgCisgICAgICAgIGlmIChjaGFyYWN0ZXJJc0FsbG93ZWQoY2gpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICAvLyBPbmx5IGNoZWNrIHRoZSBzZWNvbmQg
bGV2ZWwgZG9tYWluLiBMb3dlciBsZXZlbCByZWdpc3RyYXJzIG1heSBoYXZlIGRpZmZlcmVudCBy
dWxlcy4KKyAgICAgICAgaWYgKGNoID09ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
I2RlZmluZSBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhzdWZmaXgsIGZ1bmN0aW9uKSBc
CisgICAgeyBcCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IHN1ZmZpeExlbmd0aCA9IHNp
emVvZihzdWZmaXgpIC8gc2l6ZW9mKHN1ZmZpeFswXSk7IFwKKyAgICAgICAgaWYgKGxlbmd0aCA+
IHN1ZmZpeExlbmd0aCAmJiAwID09IG1lbWNtcChidWZmZXIgKyBsZW5ndGggLSBzdWZmaXhMZW5n
dGgsIHN1ZmZpeCwgc2l6ZW9mKHN1ZmZpeCkpKSBcCisgICAgICAgICAgICByZXR1cm4gaXNTZWNv
bmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhidWZmZXIsIGxlbmd0aCAtIHN1ZmZp
eExlbmd0aCwgZnVuY3Rpb24pOyBcCisgICAgfQorCitzdGF0aWMgYm9vbCBpc1J1c3NpYW5Eb21h
aW5OYW1lQ2hhcmFjdGVyKFVDaGFyIGNoKQoreworICAgIC8vIE9ubHkgbW9kZXJuIFJ1c3NpYW4g
bGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisgICAgcmV0dXJuIChjaCA+
PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgaXNBU0NJSURpZ2l0
KGNoKSB8fCBjaCA9PSAnLSc7Cit9CisKK3N0YXRpYyBCT09MIGFsbENoYXJhY3RlcnNBbGxvd2Vk
QnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCkKK3sKKyAgICAv
LyBTa2lwIHRyYWlsaW5nIGRvdCBmb3Igcm9vdCBkb21haW4uCisgICAgaWYgKGJ1ZmZlcltsZW5n
dGggLSAxXSA9PSAnLicpCisgICAgICAgIGxlbmd0aC0tOworCisgICAgLy8gaHR0cDovL2NjdGxk
LnJ1L2ZpbGVzL3BkZi9kb2NzL3J1bGVzX3J1LXJmLnBkZgorICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciBjeXJpbGxpY1JGW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQwLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDQ0ICAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgRUYKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmls
bGljUkYsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDovL3J1
c25hbWVzLnJ1L3J1bGVzLnBsCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUlVTW10g
PSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgRVIKKyAgICAgICAgMHgwNDQzLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQorICAgICAg
ICAweDA0NDEgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUworICAgIH07CisgICAgQ0hFQ0tf
UlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSVVMsIGlzUnVzc2lhbkRvbWFpbk5hbWVD
aGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDovL3J1LmZhaXRpZC5vcmcvcHJvamVjdHMvbW9zY293
L2RvY3VtZW50cy9tb3NrdmEvaWRuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTU9T
S1ZBW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwor
ICAgICAgICAweDA0NDEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUworICAgICAgICAweDA0
M0EsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICAgICAweDA0MzIsIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBWRQorICAgICAgICAweDA0MzAgIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBBCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxp
Y01PU0tWQSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8v
d3d3LmRvdGRldGkucnUvZm9ydXNlci9kb2NzL3JlZ3J1bGVzLnBocAorICAgIHN0YXRpYyBjb25z
dCBVQ2hhciBjeXJpbGxpY0RFVElbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0MzQs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBERQorICAgICAgICAweDA0MzUsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBJRQorICAgICAgICAweDA0NDIsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBURQorICAgICAgICAweDA0MzggIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBJCisgICAgfTsK
KyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0RFVEksIGlzUnVzc2lh
bkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDovL2NvcmVuaWMub3JnIC0gcnVs
ZXMgbm90IHB1Ymxpc2hlZC4gVGhlIHdvcmQgaXMgUnVzc2lhbiwgc28gb25seSBhbGxvd2luZyBS
dXNzaWFuIGF0IHRoaXMgdGltZSwKKyAgICAvLyBhbHRob3VnaCB3ZSBtYXkgbmVlZCB0byByZXZp
c2UgdGhlIGNoZWNrcyBpZiB0aGlzIGVuZHMgdXAgYmVpbmcgdXNlZCB3aXRoIG90aGVyIGxhbmd1
YWdlcyBzcG9rZW4gaW4gUnVzc2lhLgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY09O
TEFZTltdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01B
TEwgTEVUVEVSIE8KKyAgICAgICAgMHgwNDNELCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4K
KyAgICAgICAgMHgwNDNCLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICAgICAgMHgw
NDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQorICAgICAgICAweDA0MzksIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCisgICAgICAgIDB4MDQzRCAgLy8gQ1lSSUxMSUMgU01B
TEwgTEVUVEVSIEVOCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhj
eXJpbGxpY09OTEFZTiwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBo
dHRwOi8vY29yZW5pYy5vcmcgLSBzYW1lIGFzIGFib3ZlLgorICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciBjeXJpbGxpY1NBWVRbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0NDEsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBFUworICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBBCisgICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JU
IEkKKyAgICAgICAgMHgwNDQyICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKKyAgICB9Owor
ICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU0FZVCwgaXNSdXNzaWFu
RG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vcGlyLm9yZy9wcm9kdWN0cy9v
cHItZG9tYWluLyAtIHJ1bGVzIG5vdCBwdWJsaXNoZWQuIEFjY29yZGluZyB0byB0aGUgcmVnaXN0
cnkgc2l0ZSwKKyAgICAvLyB0aGUgaW50ZW5kZWQgYXVkaWVuY2UgaXMgIlJ1c3NpYW4gYW5kIG90
aGVyIFNsYXZpYy1zcGVha2luZyBtYXJrZXRzIi4KKyAgICAvLyBDaHJvbWUgYXBwZWFycyB0byBv
bmx5IGFsbG93IFJ1c3NpYW4sIHNvIHN0aWNraW5nIHdpdGggdGhhdCBmb3Igbm93LgorICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY09SR1tdID0geworICAgICAgICAnLicsCisgICAgICAg
IDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAgICAgMHgwNDQwLCAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDMzICAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgR0hFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhj
eXJpbGxpY09SRywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRw
Oi8vY2N0bGQuYnkvcnVsZXMuaHRtbAorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY0JF
TFtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzMSwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEJFCisgICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCisg
ICAgICAgIDB4MDQzQiAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCisgICAgfTsKKyAgICBD
SEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0JFTCwgW10oVUNoYXIgY2gpIHsK
KyAgICAgICAgLy8gUnVzc2lhbiBhbmQgQnllbG9ydXNzaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQg
ZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8
PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0NTYgfHwgY2ggPT0gMHgwNDVF
IHx8IGNoID09IDB4MjAxOSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9
KTsKKworICAgIC8vIGh0dHA6Ly93d3cubmljLmt6L2RvY3MvcG9yeWFkb2tfdm5lZHJlbml5YV9r
YXpfcnUucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljS0FaW10gPSB7CisgICAg
ICAgICcuJywKKyAgICAgICAgMHgwNDlCLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lU
SCBERVNDRU5ERVIKKyAgICAgICAgMHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQor
ICAgICAgICAweDA0MzcgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBaRQorICAgIH07CisgICAg
Q0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNLQVosIFtdKFVDaGFyIGNoKSB7
CisgICAgICAgIC8vIEthemFraCBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dl
ZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9
PSAweDA0NTEgfHwgY2ggPT0gMHgwNEQ5IHx8IGNoID09IDB4MDQ5MyB8fCBjaCA9PSAweDA0OUIg
fHwgY2ggPT0gMHgwNEEzIHx8IGNoID09IDB4MDRFOSB8fCBjaCA9PSAweDA0QjEgfHwgY2ggPT0g
MHgwNEFGIHx8IGNoID09IDB4MDRCQiB8fCBjaCA9PSAweDA0NTYgfHwgaXNBU0NJSURpZ2l0KGNo
KSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBodHRwOi8vdWFuaWMubmV0L2RvY3Mv
ZG9jdW1lbnRzLXVrci9SdWxlcyUyMG9mJTIwVUtSX3Y0LjAucGRmCisgICAgc3RhdGljIGNvbnN0
IFVDaGFyIGN5cmlsbGljVUtSW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQzLCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQorICAgICAgICAweDA0M0EsIC8vIENZUklMTElDIFNN
QUxMIExFVFRFUiBLQQorICAgICAgICAweDA0NDAgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBF
UgorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNVS1Is
IFtdKFVDaGFyIGNoKSB7CisgICAgICAgIC8vIFJ1c3NpYW4gYW5kIFVrcmFpbmlhbiBsZXR0ZXJz
LCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAw
eDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNDkxIHx8
IGNoID09IDB4MDQwNCB8fCBjaCA9PSAweDA0NTYgfHwgY2ggPT0gMHgwNDU3IHx8IGlzQVNDSUlE
aWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0cDovL3d3dy5ybmlk
cy5ycy9kYXRhL0RPS1VNRU5USS9pZG4tc3JiLXBvbGljeS10ZXJtc29mdXNlLXYxLjQtZW5nLnBk
ZgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1NSQltdID0geworICAgICAgICAnLics
CisgICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgICAgIDB4
MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgICAgIDB4MDQzMSAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEJFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhf
TUFUQ0hFUyhjeXJpbGxpY1NSQiwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gU2VyYmlhbiBs
ZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChj
aCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDM4KSB8fCAoY2ggPj0gMHgwNDNBICYmIGNoIDw9IDB4
MDQ0OCkgfHwgY2ggPT0gMHgwNDUyIHx8IGNoID09IDB4MDQ1OCB8fCBjaCA9PSAweDA0NTkgfHwg
Y2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QiB8fCBjaCA9PSAweDA0NUYgfHwgaXNBU0NJSURp
Z2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBodHRwOi8vbWFybmV0Lm1r
L2RvYy9wcmF2aWxuaWstbWstbWtkLnBkZgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxp
Y01LRFtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzQywgLy8gQ1lSSUxMSUMgU01B
TEwgTEVUVEVSIEVNCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtB
CisgICAgICAgIDB4MDQzNCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCisgICAgfTsKKyAg
ICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY01LRCwgW10oVUNoYXIgY2gp
IHsKKyAgICAgICAgLy8gTWFjZWRvbmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUg
YWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDM4KSB8
fCAoY2ggPj0gMHgwNDNBICYmIGNoIDw9IDB4MDQ0OCkgfHwgY2ggPT0gMHgwNDUzIHx8IGNoID09
IDB4MDQ1NSB8fCBjaCA9PSAweDA0NTggfHwgY2ggPT0gMHgwNDU5IHx8IGNoID09IDB4MDQ1QSB8
fCBjaCA9PSAweDA0NUMgfHwgY2ggPT0gMHgwNDVGIHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2gg
PT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0cHM6Ly93d3cubW9uLm1uL2NzLworICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY01PTltdID0geworICAgICAgICAnLicsCisgICAgICAg
IDB4MDQzQywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCisgICAgICAgIDB4MDQzRSwgLy8g
Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgRU4KKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5
cmlsbGljTU9OLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBNb25nb2xpYW4gbGV0dGVycywg
ZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisgICAgICAgIHJldHVybiAoY2ggPj0gMHgw
NDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09IDB4MDRFOSB8fCBj
aCA9PSAweDA0QUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisK
KyAgICAvLyBOb3QgYSBrbm93biB0b3AgbGV2ZWwgZG9tYWluIHdpdGggc3BlY2lhbCBydWxlcy4K
KyAgICByZXR1cm4gTk87Cit9CisKKy8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgbm8gbWFw
cGluZyBpcyBuZWNlc3NhcnkuCisvLyBJZiBtYWtlU3RyaW5nIGlzIE5PLCB0aGVuIHJldHVybiB2
YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHNlbGYgdG8gaW5kaWNhdGUgbWFwcGluZyBpcyBuZWNlc3Nh
cnkuCisvLyBJZiBtYWtlU3RyaW5nIGlzIFlFUywgdGhlbiByZXR1cm4gdmFsdWUgaXMgZWl0aGVy
IG5pbCBvciB0aGUgbWFwcGVkIHN0cmluZy4KK3N0YXRpYyBOU1N0cmluZyAqbWFwSG9zdE5hbWVX
aXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCBlbmNvZGUsIEJP
T0wgbWFrZVN0cmluZywgQk9PTCAqZXJyb3IpCit7CisgICAgaWYgKHJhbmdlLmxlbmd0aCA+IEhP
U1RfTkFNRV9CVUZGRVJfTEVOR1RIKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIGlm
ICghW3N0cmluZyBsZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIFVDaGFy
IHNvdXJjZUJ1ZmZlcltIT1NUX05BTUVfQlVGRkVSX0xFTkdUSF07CisgICAgVUNoYXIgZGVzdGlu
YXRpb25CdWZmZXJbSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEhdOworICAgIAorICAgIGlmIChlbmNv
ZGUgJiYgW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiJSIgb3B0aW9uczpOU0xpdGVyYWxTZWFyY2gg
cmFuZ2U6cmFuZ2VdLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpIHsKKyAgICAgICAgTlNTdHJpbmcg
KnN1YnN0cmluZyA9IFtzdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnJhbmdlXTsKKyAgICAgICAg
c3Vic3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVTdHJpbmdCeVJlcGxhY2lu
Z1BlcmNlbnRFc2NhcGVzKG51bGxwdHIsIChDRlN0cmluZ1JlZilzdWJzdHJpbmcsIENGU1RSKCIi
KSkpOworICAgICAgICBpZiAoc3Vic3RyaW5nKSB7CisgICAgICAgICAgICBzdHJpbmcgPSBzdWJz
dHJpbmc7CisgICAgICAgICAgICByYW5nZSA9IE5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3Ro
XSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaW50IGxlbmd0aCA9IHJhbmdlLmxlbmd0
aDsKKyAgICBbc3RyaW5nIGdldENoYXJhY3RlcnM6c291cmNlQnVmZmVyIHJhbmdlOnJhbmdlXTsK
KyAgICAKKyAgICBVRXJyb3JDb2RlIHVlcnJvciA9IFVfWkVST19FUlJPUjsKKyAgICBVSUROQUlu
Zm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOworICAgIGludDMy
X3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IChlbmNvZGUgPyB1aWRuYV9uYW1lVG9BU0NJSSA6
IHVpZG5hX25hbWVUb1VuaWNvZGUpKCZVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1l
VHJhbnNjb2RlcigpLCBzb3VyY2VCdWZmZXIsIGxlbmd0aCwgZGVzdGluYXRpb25CdWZmZXIsIEhP
U1RfTkFNRV9CVUZGRVJfTEVOR1RILCAmcHJvY2Vzc2luZ0RldGFpbHMsICZ1ZXJyb3IpOworICAg
IGlmIChsZW5ndGggJiYgKFVfRkFJTFVSRSh1ZXJyb3IpIHx8IHByb2Nlc3NpbmdEZXRhaWxzLmVy
cm9ycykpIHsKKyAgICAgICAgKmVycm9yID0gWUVTOworICAgICAgICByZXR1cm4gbmlsOworICAg
IH0KKyAgICAKKyAgICBpZiAobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9PSBsZW5ndGggJiYgIW1l
bWNtcChzb3VyY2VCdWZmZXIsIGRlc3RpbmF0aW9uQnVmZmVyLCBsZW5ndGggKiBzaXplb2YoVUNo
YXIpKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBpZiAoIWVuY29kZSAmJiAhYWxs
Q2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KGRlc3RpbmF0aW9uQnVmZmVyLCBudW1DaGFy
YWN0ZXJzQ29udmVydGVkKSAmJiAhYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGRlc3Rp
bmF0aW9uQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICAKKyAgICByZXR1cm4gbWFrZVN0cmluZyA/IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczpkZXN0aW5hdGlvbkJ1ZmZlciBsZW5ndGg6bnVtQ2hhcmFjdGVyc0NvbnZlcnRlZF0g
OiBzdHJpbmc7Cit9CisKK3N0YXRpYyBCT09MIGhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5n
ZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MICplcnJvcikKK3sKKyAgICBy
ZXR1cm4gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgTk8sIE5PLCBlcnJvcikg
IT0gbmlsOworfQorIAorc3RhdGljIEJPT0wgaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdl
KE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQoreworICAgIHJl
dHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBZRVMsICBOTywgZXJyb3Ip
ICE9IG5pbDsKK30KKworc3RhdGljIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZShO
U1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQoreworICAgIEJPT0wgZXJyb3IgPSBOTzsK
KyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2Us
IE5PLCBZRVMsICZlcnJvcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAq
ZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSkK
K3sKKyAgICBCT09MIGVycm9yID0gTk87CisgICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFt
ZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBZRVMsIFlFUywgJmVycm9yKTsKKyAgICBpZiAoZXJy
b3IpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9z
dDsKK30KKworTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCit7Cisg
ICAgQk9PTCBlcnJvciA9IE5POworICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRo
UmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pLCBOTywgWUVTLCAm
ZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4g
IWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQorCitOU1N0cmluZyAqZW5jb2RlSG9zdE5hbWUoTlNT
dHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIGVycm9yID0gTk87CisgICAgTlNTdHJpbmcgKmhv
c3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIE5TTWFrZVJhbmdlKDAsIFtzdHJpbmcg
bGVuZ3RoXSksIFlFUywgWUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQorCitzdGF0aWMg
dm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFu
Z2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5LCBCT09MIGVuY29kZSkK
K3sKKyAgICAvLyBHZW5lcmFsbHksIHdlIHdhbnQgdG8gb3B0aW1pemUgZm9yIHRoZSBjYXNlIHdo
ZXJlIHRoZXJlIGlzIG9uZSBob3N0IG5hbWUgdGhhdCBkb2VzIG5vdCBuZWVkIG1hcHBpbmcuCisg
ICAgLy8gVGhlcmVmb3JlLCB3ZSB1c2UgbmlsIHRvIGluZGljYXRlIG5vIG1hcHBpbmcgaGVyZSBh
bmQgYW4gZW1wdHkgYXJyYXkgdG8gaW5kaWNhdGUgZXJyb3IuCisKKyAgICBCT09MIGVycm9yID0g
Tk87CisgICAgQk9PTCBuZWVkc01hcHBpbmcgPSBlbmNvZGUgPyBob3N0TmFtZU5lZWRzRW5jb2Rp
bmdXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgJmVycm9yKSA6IGhvc3ROYW1lTmVlZHNEZWNvZGlu
Z1dpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCAmZXJyb3IpOworICAgIGlmICghZXJyb3IgJiYgIW5l
ZWRzTWFwcGluZykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmICghYXJyYXkpCisgICAg
ICAgIGFycmF5ID0gYWRvcHROUyhbTlNNdXRhYmxlQXJyYXkgbmV3XSk7CisKKyAgICBpZiAoIWVy
cm9yKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOnJh
bmdlXV07Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKE5T
U3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4m
IGFycmF5KQoreworICAgIHJldHVybiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmlu
ZywgcmFuZ2UsIGFycmF5LCBZRVMpOworfQorCitzdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhh
dE5lZWREZWNvZGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKK3sKKyAgICByZXR1cm4gY29sbGVjdFJhbmdlc1RoYXRO
ZWVkTWFwcGluZyhzdHJpbmcsIHJhbmdlLCBhcnJheSwgTk8pOworfQorCitzdGF0aWMgdm9pZCBh
cHBseUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBT
dHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBh
cnJheSkKK3sKKyAgICAvLyBJbiBhIG1haWx0bzogVVJMLCBob3N0IG5hbWVzIGNvbWUgYWZ0ZXIg
YSAnQCcgY2hhcmFjdGVyIGFuZCBlbmQgd2l0aCBhICc+JyBvciAnLCcgb3IgJz8nIGNoYXJhY3Rl
ci4KKyAgICAvLyBTa2lwIHF1b3RlZCBzdHJpbmdzIHNvIHRoYXQgY2hhcmFjdGVycyBpbiB0aGVt
IGRvbid0IGNvbmZ1c2UgdXMuCisgICAgLy8gV2hlbiB3ZSBmaW5kIGEgJz8nIGNoYXJhY3Rlciwg
d2UgYXJlIHBhc3QgdGhlIHBhcnQgb2YgdGhlIFVSTCB0aGF0IGNvbnRhaW5zIGhvc3QgbmFtZXMu
CisgICAgCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNl
dD4+IGhvc3ROYW1lT3JTdHJpbmdTdGFydENoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hh
cmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIlwiQD8iXTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5hbWVFbmRDaGFyYWN0
ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6
QCI+LD8iXTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVy
U2V0Pj4gcXVvdGVkU3RyaW5nQ2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJT
ZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiXCJcXCJdOworICAgIAorICAgIHVuc2lnbmVkIHN0
cmluZ0xlbmd0aCA9IFtzdHJpbmcgbGVuZ3RoXTsKKyAgICBOU1JhbmdlIHJlbWFpbmluZyA9IE5T
TWFrZVJhbmdlKDAsIHN0cmluZ0xlbmd0aCk7CisgICAgCisgICAgd2hpbGUgKDEpIHsKKyAgICAg
ICAgLy8gRmluZCBzdGFydCBvZiBob3N0IG5hbWUgb3Igb2YgcXVvdGVkIHN0cmluZy4KKyAgICAg
ICAgTlNSYW5nZSBob3N0TmFtZU9yU3RyaW5nU3RhcnQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0
ZXJGcm9tU2V0Omhvc3ROYW1lT3JTdHJpbmdTdGFydENoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0
aW9uczowIHJhbmdlOnJlbWFpbmluZ107CisgICAgICAgIGlmIChob3N0TmFtZU9yU3RyaW5nU3Rh
cnQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB1bmljaGFyIGMgPSBbc3RyaW5nIGNoYXJhY3RlckF0SW5kZXg6aG9zdE5hbWVPclN0cmluZ1N0
YXJ0LmxvY2F0aW9uXTsKKyAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gTlNNYXhSYW5nZSho
b3N0TmFtZU9yU3RyaW5nU3RhcnQpOworICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5n
TGVuZ3RoIC0gcmVtYWluaW5nLmxvY2F0aW9uOworICAgICAgICAKKyAgICAgICAgaWYgKGMgPT0g
Jz8nKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKGMgPT0gJ0An
KSB7CisgICAgICAgICAgICAvLyBGaW5kIGVuZCBvZiBob3N0IG5hbWUuCisgICAgICAgICAgICB1
bnNpZ25lZCBob3N0TmFtZVN0YXJ0ID0gcmVtYWluaW5nLmxvY2F0aW9uOworICAgICAgICAgICAg
TlNSYW5nZSBob3N0TmFtZUVuZCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9z
dE5hbWVFbmRDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpyZW1haW5pbmdd
OworICAgICAgICAgICAgQk9PTCBkb25lOworICAgICAgICAgICAgaWYgKGhvc3ROYW1lRW5kLmxv
Y2F0aW9uID09IE5TTm90Rm91bmQpIHsKKyAgICAgICAgICAgICAgICBob3N0TmFtZUVuZC5sb2Nh
dGlvbiA9IHN0cmluZ0xlbmd0aDsKKyAgICAgICAgICAgICAgICBkb25lID0gWUVTOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZW1haW5pbmcubG9jYXRpb24gPSBob3N0
TmFtZUVuZC5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3Ry
aW5nTGVuZ3RoIC0gcmVtYWluaW5nLmxvY2F0aW9uOworICAgICAgICAgICAgICAgIGRvbmUgPSBO
TzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gUHJvY2VzcyBo
b3N0IG5hbWUgcmFuZ2UuCisgICAgICAgICAgICBmKHN0cmluZywgTlNNYWtlUmFuZ2UoaG9zdE5h
bWVTdGFydCwgaG9zdE5hbWVFbmQubG9jYXRpb24gLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZG9uZSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTa2lwIHF1b3RlZCBzdHJpbmcu
CisgICAgICAgICAgICBBU1NFUlQoYyA9PSAnIicpOworICAgICAgICAgICAgd2hpbGUgKDEpIHsK
KyAgICAgICAgICAgICAgICBOU1JhbmdlIGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCA9IFtz
dHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6cXVvdGVkU3RyaW5nQ2hhcmFjdGVycy5nZXQo
KS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5nXTsKKyAgICAgICAgICAgICAgICBpZiAo
ZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGMgPSBbc3RyaW5nIGNo
YXJhY3RlckF0SW5kZXg6ZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kLmxvY2F0aW9uXTsKKyAg
ICAgICAgICAgICAgICByZW1haW5pbmcubG9jYXRpb24gPSBOU01heFJhbmdlKGVzY2FwZWRDaGFy
YWN0ZXJPclN0cmluZ0VuZCk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0
cmluZ0xlbmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAvLyBJZiB3ZSBhcmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCB0aGVuIGJyZWFr
IGZyb20gdGhlIHN0cmluZyBsb29wIGJhY2sgdG8gdGhlIGhvc3QgbmFtZSBsb29wLgorICAgICAg
ICAgICAgICAgIGlmIChjID09ICciJykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gU2tpcCBlc2NhcGVkIGNoYXJhY3Rlci4K
KyAgICAgICAgICAgICAgICBBU1NFUlQoYyA9PSAnXFwnKTsKKyAgICAgICAgICAgICAgICBpZiAo
IXJlbWFpbmluZy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiArPSAxOworICAgICAgICAgICAgICAgIHJlbWFp
bmluZy5sZW5ndGggLT0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor
c3RhdGljIHZvaWQgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9VUkxTdHJpbmcoTlNTdHJpbmcgKnN0
cmluZywgU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiwgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiYgYXJyYXkpCit7CisgICAgLy8gRmluZCBob3N0bmFtZXMuIFRvbyBiYWQgd2UgY2FuJ3Qg
dXNlIGFueSByZWFsIFVSTC1wYXJzaW5nIGNvZGUgdG8gZG8gdGhpcywKKyAgICAvLyBidXQgd2Ug
aGF2ZSB0byBkbyBpdCBiZWZvcmUgZG9pbmcgYWxsIHRoZSAlLWVzY2FwaW5nLCBhbmQgdGhpcyBp
cyB0aGUgb25seQorICAgIC8vIGNvZGUgd2UgaGF2ZSB0aGF0IHBhcnNlcyBtYWlsdG8gVVJMcyBh
bnl3YXkuCisgICAgCisgICAgLy8gTWF5YmUgd2Ugc2hvdWxkIGltcGxlbWVudCB0aGlzIHVzaW5n
IGEgY2hhcmFjdGVyIGJ1ZmZlciBpbnN0ZWFkPworICAgIAorICAgIGlmIChwcm90b2NvbElzKHN0
cmluZywgIm1haWx0byIpKSB7CisgICAgICAgIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvTWFpbFRv
VVJMU3RyaW5nKHN0cmluZywgZiwgYXJyYXkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIC8vIEZpbmQgdGhlIGhvc3QgbmFtZSBpbiBhIGhpZXJhcmNoaWNhbCBVUkwuCisgICAg
Ly8gSXQgY29tZXMgYWZ0ZXIgYSAiOi8vIiBzZXF1ZW5jZSwgd2l0aCBzY2hlbWUgY2hhcmFjdGVy
cyBwcmVjZWRpbmcuCisgICAgLy8gSWYgZW5kcyB3aXRoIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBv
ciBhICI6IiwgIi8iLCBvciBhICI/Ii4KKyAgICAvLyBJZiB0aGVyZSBpcyBhICJAIiBjaGFyYWN0
ZXIsIHRoZSBob3N0IHBhcnQgaXMganVzdCB0aGUgcGFydCBhZnRlciB0aGUgIkAiLgorICAgIE5T
UmFuZ2Ugc2VwYXJhdG9yUmFuZ2UgPSBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCI6Ly8iXTsKKyAg
ICBpZiAoc2VwYXJhdG9yUmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIC8vIENoZWNrIHRoYXQgYWxsIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSA6
Ly8gYXJlIHZhbGlkIHNjaGVtZSBjaGFyYWN0ZXJzLgorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBub25TY2hlbWVDaGFyYWN0ZXJzID0gW1tOU0No
YXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiQUJDREVGR0hJ
SktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLS4i
XSBpbnZlcnRlZFNldF07CisgICAgaWYgKFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6
bm9uU2NoZW1lQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgc2VwYXJhdG9yUmFuZ2UubG9jYXRpb24pXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0cmlu
ZyBsZW5ndGhdOworICAgIAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlND
aGFyYWN0ZXJTZXQ+PiBob3N0VGVybWluYXRvcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVy
U2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIjovPyMiXTsKKyAgICAKKyAgICAvLyBTdGFydCBh
ZnRlciB0aGUgc2VwYXJhdG9yLgorICAgIHVuc2lnbmVkIGF1dGhvcml0eVN0YXJ0ID0gTlNNYXhS
YW5nZShzZXBhcmF0b3JSYW5nZSk7CisgICAgCisgICAgLy8gRmluZCB0ZXJtaW5hdGluZyBjaGFy
YWN0ZXIuCisgICAgTlNSYW5nZSBob3N0TmFtZVRlcm1pbmF0b3IgPSBbc3RyaW5nIHJhbmdlT2ZD
aGFyYWN0ZXJGcm9tU2V0Omhvc3RUZXJtaW5hdG9ycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFu
Z2U6TlNNYWtlUmFuZ2UoYXV0aG9yaXR5U3RhcnQsIHN0cmluZ0xlbmd0aCAtIGF1dGhvcml0eVN0
YXJ0KV07CisgICAgdW5zaWduZWQgaG9zdE5hbWVFbmQgPSBob3N0TmFtZVRlcm1pbmF0b3IubG9j
YXRpb24gPT0gTlNOb3RGb3VuZCA/IHN0cmluZ0xlbmd0aCA6IGhvc3ROYW1lVGVybWluYXRvci5s
b2NhdGlvbjsKKyAgICAKKyAgICAvLyBGaW5kICJAIiBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBob3N0
IG5hbWUuCisgICAgTlNSYW5nZSB1c2VySW5mb1Rlcm1pbmF0b3IgPSBbc3RyaW5nIHJhbmdlT2ZT
dHJpbmc6QCJAIiBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoYXV0aG9yaXR5U3RhcnQsIGhv
c3ROYW1lRW5kIC0gYXV0aG9yaXR5U3RhcnQpXTsKKyAgICB1bnNpZ25lZCBob3N0TmFtZVN0YXJ0
ID0gdXNlckluZm9UZXJtaW5hdG9yLmxvY2F0aW9uID09IE5TTm90Rm91bmQgPyBhdXRob3JpdHlT
dGFydCA6IE5TTWF4UmFuZ2UodXNlckluZm9UZXJtaW5hdG9yKTsKKyAgICAKKyAgICByZXR1cm4g
ZihzdHJpbmcsIE5TTWFrZVJhbmdlKGhvc3ROYW1lU3RhcnQsIGhvc3ROYW1lRW5kIC0gaG9zdE5h
bWVTdGFydCksIGFycmF5KTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gbWFwSG9z
dE5hbWVzKE5TU3RyaW5nICpzdHJpbmcsIEJPT0wgZW5jb2RlKQoreworICAgIC8vIEdlbmVyYWxs
eSwgd2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhv
c3QgbmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGluZy4KKyAgICAKKyAgICBpZiAoZW5jb2Rl
ICYmIFtzdHJpbmcgY2FuQmVDb252ZXJ0ZWRUb0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGlu
Z10pCisgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgCisgICAgLy8gTWFrZSBhIGxpc3Qgb2Yg
cmFuZ2VzIHRoYXQgYWN0dWFsbHkgbmVlZCBtYXBwaW5nLgorICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gaG9zdE5hbWVSYW5nZXM7CisgICAgU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24g
ZiA9IGVuY29kZSA/IGNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nIDogY29sbGVjdFJhbmdl
c1RoYXROZWVkRGVjb2Rpbmc7CisgICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9VUkxTdHJpbmco
c3RyaW5nLCBmLCBob3N0TmFtZVJhbmdlcyk7CisgICAgaWYgKCFob3N0TmFtZVJhbmdlcykKKyAg
ICAgICAgcmV0dXJuIHN0cmluZzsKKworICAgIGlmICghW2hvc3ROYW1lUmFuZ2VzIGNvdW50XSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICAvLyBEbyB0aGUgbWFwcGluZy4KKyAgICBh
dXRvIG11dGFibGVDb3B5ID0gYWRvcHROUyhbc3RyaW5nIG11dGFibGVDb3B5XSk7CisgICAgdW5z
aWduZWQgaSA9IFtob3N0TmFtZVJhbmdlcyBjb3VudF07CisgICAgd2hpbGUgKGktLSkgeworICAg
ICAgICBOU1JhbmdlIGhvc3ROYW1lUmFuZ2UgPSBbW2hvc3ROYW1lUmFuZ2VzIG9iamVjdEF0SW5k
ZXg6aV0gcmFuZ2VWYWx1ZV07CisgICAgICAgIE5TU3RyaW5nICptYXBwZWRIb3N0TmFtZSA9IGVu
Y29kZSA/IGVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgaG9zdE5hbWVSYW5nZSkgOiBk
ZWNvZGVIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIGhvc3ROYW1lUmFuZ2UpOworICAgICAgICBb
bXV0YWJsZUNvcHkgcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOmhvc3ROYW1lUmFuZ2Ugd2l0aFN0
cmluZzptYXBwZWRIb3N0TmFtZV07CisgICAgfQorICAgIHJldHVybiBtdXRhYmxlQ29weTsKK30K
Kworc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2Uo
TlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBhdXRvIHRyaW1tZWQgPSBhZG9wdE5TKFtzdHJpbmcg
bXV0YWJsZUNvcHldKTsKKyAgICBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChfX2JyaWRnZSBDRk11
dGFibGVTdHJpbmdSZWYpdHJpbW1lZC5nZXQoKSk7CisgICAgcmV0dXJuIHRyaW1tZWQ7Cit9CisK
K05TVVJMICpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwg
KlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudCkKK3sKKyAgICBpZiAoIVVSTCkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBDRlJhbmdlIGZyYWdSZyA9IENGVVJMR2V0Qnl0
ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwgbnVs
bHB0cik7CisgICAgaWYgKGZyYWdSZy5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAg
cmV0dXJuIFVSTDsKKworICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+
IHVybEJ5dGVzKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4IG51bUJ5dGVz
ID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCB1cmxCeXRlcy5kYXRhKCks
IHVybEJ5dGVzLnNpemUoKSk7CisgICAgaWYgKG51bUJ5dGVzID09IC0xKSB7CisgICAgICAgIG51
bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAw
KTsKKyAgICAgICAgdXJsQnl0ZXMuZ3JvdyhudW1CeXRlcyk7CisgICAgICAgIENGVVJMR2V0Qnl0
ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCBudW1CeXRlcyk7Cisg
ICAgfQorCisgICAgQ0ZVUkxSZWYgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0
ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgsIG51bGxwdHIpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXN1bHQgPSBDRlVS
TENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlv
biAtIDEsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKTsKKyAgICAgICAgCisg
ICAgcmV0dXJuIHJlc3VsdCA/IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7Cit9CisK
K3N0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKE5TVVJMICpVUkwp
Cit7CisgICAgcmV0dXJuIFVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVu
dChVUkwsIGtDRlVSTENvbXBvbmVudFJlc291cmNlU3BlY2lmaWVyKTsKK30KKworTlNVUkwgKlVS
TFdpdGhEYXRhKE5TRGF0YSAqZGF0YSwgTlNVUkwgKmJhc2VVUkwpCit7CisgICAgaWYgKCFkYXRh
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIE5TVVJMICpyZXN1bHQgPSBuaWw7Cisg
ICAgc2l6ZV90IGxlbmd0aCA9IFtkYXRhIGxlbmd0aF07CisgICAgaWYgKGxlbmd0aCA+IDApIHsK
KyAgICAgICAgLy8gd29yayBhcm91bmQgPHJkYXI6Ly80NDcwNzcxPjogQ0ZVUkxDcmVhdGVBYnNv
bHV0ZVVSTFdpdGhCeXRlcyguLiwgVFJVRSkgZG9lc24ndCByZW1vdmUgbm9uLXBhdGggY29tcG9u
ZW50cy4KKyAgICAgICAgYmFzZVVSTCA9IFVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihi
YXNlVVJMKTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IFVJbnQ4ICpieXRlcyA9IHN0YXRpY19j
YXN0PGNvbnN0IFVJbnQ4Kj4oW2RhdGEgYnl0ZXNdKTsKKyAgICAgICAgCisgICAgICAgIC8vIENG
VVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMgd291bGQgY29tcGxhaW4gdG8gY29uc29sZSBp
ZiB3ZSBwYXNzZWQgYSBwYXRoIHRvIGl0LgorICAgICAgICBpZiAoYnl0ZXNbMF0gPT0gJy8nICYm
ICFiYXNlVVJMKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgCisgICAgICAgIC8v
IE5PVEU6IFdlIHVzZSBVVEYtOCBoZXJlIHNpbmNlIHRoaXMgZW5jb2RpbmcgaXMgdXNlZCB3aGVu
IGNvbXB1dGluZyBzdHJpbmdzIHdoZW4gcmV0dXJuaW5nIFVSTCBjb21wb25lbnRzCisgICAgICAg
IC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBhdGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlz
IG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVURi04IHNlcXVlbmNlcywgd2hpY2gKKyAgICAgICAg
Ly8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZl
cmVudCBlbmNvZGluZywgbGlrZSBzaGlmdC1qaXMsIHNvIHdlIGZhbGwgYmFjaworICAgICAgICAv
LyBvbnRvIHVzaW5nIElTTyBMYXRpbiAxIGluIHRob3NlIGNhc2VzLgorICAgICAgICByZXN1bHQg
PSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxw
dHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJM
UmVmKWJhc2VVUkwsIFlFUykpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJl
c3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMo
bnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChfX2Jy
aWRnZSBDRlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0
ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9Citz
dGF0aWMgTlNEYXRhICpkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAqc3RyaW5nKQor
eworICAgIE5TRGF0YSAqdXNlclR5cGVkRGF0YSA9IFtzdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIEFTU0VSVCh1c2VyVHlwZWREYXRhKTsKKyAgICAK
KyAgICBjb25zdCBVSW50OCogaW5CeXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IFVJbnQ4ICo+KFt1
c2VyVHlwZWREYXRhIGJ5dGVzXSk7CisgICAgaW50IGluTGVuZ3RoID0gW3VzZXJUeXBlZERhdGEg
bGVuZ3RoXTsKKyAgICBpZiAoIWluTGVuZ3RoKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAor
ICAgIGNoYXIqIG91dEJ5dGVzID0gc3RhdGljX2Nhc3Q8Y2hhciAqPihtYWxsb2MoaW5MZW5ndGgg
KiAzKSk7IC8vIGxhcmdlIGVub3VnaCB0byAlLWVzY2FwZSBldmVyeSBjaGFyYWN0ZXIKKyAgICBj
aGFyKiBwID0gb3V0Qnl0ZXM7CisgICAgaW50IG91dExlbmd0aCA9IDA7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBpbkxlbmd0aDsgaSsrKSB7CisgICAgICAgIFVJbnQ4IGMgPSBpbkJ5dGVzW2ld
OworICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPj0gMHg3ZikgeworICAgICAgICAgICAgKnAr
KyA9ICclJzsKKyAgICAgICAgICAgICpwKysgPSB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChj
KTsKKyAgICAgICAgICAgICpwKysgPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKKyAg
ICAgICAgICAgIG91dExlbmd0aCArPSAzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
KnArKyA9IGM7CisgICAgICAgICAgICBvdXRMZW5ndGgrKzsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5Om91dEJ5dGVzIGxlbmd0
aDpvdXRMZW5ndGhdOyAvLyBhZG9wdHMgb3V0Qnl0ZXMKK30KKworTlNVUkwgKlVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNVUkwgKm5zVVJMKQoreworICAgIGlmICgh
c3RyaW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgYXV0byBtYXBwZWRTdHJpbmcgPSBt
YXBIb3N0TmFtZXMoc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2Uoc3RyaW5nKS5nZXQoKSwgWUVT
KTsKKyAgICBpZiAoIW1hcHBlZFN0cmluZykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIC8v
IExldCdzIGNoZWNrIHdoZXRoZXIgdGhlIFVSTCBpcyBib2d1cy4KKyAgICBVUkwgdXJsIHsgVVJM
IHsgbnNVUkwgfSwgbWFwcGVkU3RyaW5nLmdldCgpIH07CisgICAgaWYgKCF1cmwuY3JlYXRlQ0ZV
UkwoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MDU3CisgICAgLy8gV2Ugc2hvdWxkIGJlIGFi
bGUgdG8gdXNlIHVybC5jcmVhdGVDRlVSTCBpbnN0ZWFkIG9mIHVzaW5nIGRpcmVjdGx5IENGVVJM
IHBhcnNpbmcgcm91dGluZXMuCisgICAgTlNEYXRhICpkYXRhID0gZGF0YVdpdGhVc2VyVHlwZWRT
dHJpbmcobWFwcGVkU3RyaW5nLmdldCgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
biBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOworCisgICAgcmV0dXJuIFVSTFdpdGhEYXRhKGRh
dGEsIG5zVVJMKTsKK30KKworTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVk
KE5TU3RyaW5nICpzdHJpbmcsIE5TVVJMICpVUkwpCit7CisgICAgaWYgKCFzdHJpbmcpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBOU1VSTCAqcmVzdWx0ID0gVVJMV2l0aFVzZXJUeXBlZFN0
cmluZyhzdHJpbmcsIFVSTCk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgTlNEYXRhICpy
ZXN1bHREYXRhID0gZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcoc3RyaW5nKTsKKyAgICAgICAgaWYg
KCFyZXN1bHREYXRhKQorICAgICAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
Il07CisgICAgICAgIHJlc3VsdCA9IFVSTFdpdGhEYXRhKHJlc3VsdERhdGEsIFVSTCk7CisgICAg
fQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIEJPT0wgaGFzUXVlc3Rpb25NYXJr
T25seVF1ZXJ5U3RyaW5nKE5TVVJMICpVUkwpCit7CisgICAgQ0ZSYW5nZSByYW5nZVdpdGhTZXBh
cmF0b3JzOworICAgIENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVS
TFJlZilVUkwsIGtDRlVSTENvbXBvbmVudFF1ZXJ5LCAmcmFuZ2VXaXRoU2VwYXJhdG9ycyk7Cisg
ICAgaWYgKHJhbmdlV2l0aFNlcGFyYXRvcnMubG9jYXRpb24gIT0ga0NGTm90Rm91bmQgJiYgcmFu
Z2VXaXRoU2VwYXJhdG9ycy5sZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFlFUzsKKworICAg
IHJldHVybiBOTzsKK30KKworTlNEYXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAq
VVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50VHlwZSkKK3sKKyAgICBWZWN0b3I8VUlu
dDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBhbGxCeXRlc0J1ZmZlcihVUkxfQllURVNfQlVG
RkVSX0xFTkdUSCk7CisgICAgQ0ZJbmRleCBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9f
YnJpZGdlIENGVVJMUmVmKVVSTCwgYWxsQnl0ZXNCdWZmZXIuZGF0YSgpLCBhbGxCeXRlc0J1ZmZl
ci5zaXplKCkpOworICAgIGlmIChieXRlc0ZpbGxlZCA9PSAtMSkgeworICAgICAgICBDRkluZGV4
IGJ5dGVzVG9BbGxvY2F0ZSA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwg
bnVsbHB0ciwgMCk7CisgICAgICAgIGFsbEJ5dGVzQnVmZmVyLmdyb3coYnl0ZXNUb0FsbG9jYXRl
KTsKKyAgICAgICAgYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJl
ZilVUkwsIGFsbEJ5dGVzQnVmZmVyLmRhdGEoKSwgYnl0ZXNUb0FsbG9jYXRlKTsKKyAgICB9Cisg
ICAgCisgICAgY29uc3QgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBsZXRlVVJMID0gKENGVVJMQ29t
cG9uZW50VHlwZSktMTsKKyAgICBDRlJhbmdlIHJhbmdlOworICAgIGlmIChjb21wb25lbnRUeXBl
ICE9IGNvbXBsZXRlVVJMKSB7CisgICAgICAgIHJhbmdlID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JD
b21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50VHlwZSwgbnVsbHB0cik7
CisgICAgICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgICAg
IHJldHVybiBuaWw7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmFuZ2UubG9jYXRpb24gPSAwOwor
ICAgICAgICByYW5nZS5sZW5ndGggPSBieXRlc0ZpbGxlZDsKKyAgICB9CisgICAgCisgICAgTlNE
YXRhICpjb21wb25lbnREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmFsbEJ5dGVzQnVmZmVy
LmRhdGEoKSArIHJhbmdlLmxvY2F0aW9uIGxlbmd0aDpyYW5nZS5sZW5ndGhdOyAKKyAgICAKKyAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIgKj4oW2NvbXBvbmVudERhdGEgYnl0ZXNdKTsKKyAgICBOU011dGFibGVEYXRhICpyZXN1
bHREYXRhID0gW05TTXV0YWJsZURhdGEgZGF0YV07CisgICAgLy8gTk9URTogYWRkIGxlYWRpbmcg
Jz8nIHRvIHF1ZXJ5IHN0cmluZ3Mgbm9uLXplcm8gbGVuZ3RoIHF1ZXJ5IHN0cmluZ3MuCisgICAg
Ly8gTk9URTogcmV0YWluIHF1ZXN0aW9uLW1hcmsgb25seSBxdWVyeSBzdHJpbmdzLgorICAgIGlm
IChjb21wb25lbnRUeXBlID09IGtDRlVSTENvbXBvbmVudFF1ZXJ5KSB7CisgICAgICAgIGlmIChy
YW5nZS5sZW5ndGggPiAwIHx8IGhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyhVUkwpKQor
ICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0ZXM6Ij8iIGxlbmd0aDoxXTsgICAgCisg
ICAgfQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2UubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgdW5zaWduZWQgY2hhciBjID0gYnl0ZXNbaV07CisgICAgICAgIGlmIChjIDw9IDB4MjAgfHwg
YyA+PSAweDdmKSB7CisgICAgICAgICAgICBjaGFyIGVzY2FwZWRbM107CisgICAgICAgICAgICBl
c2NhcGVkWzBdID0gJyUnOworICAgICAgICAgICAgZXNjYXBlZFsxXSA9IHVwcGVyTmliYmxlVG9B
U0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgZXNjYXBlZFsyXSA9IGxvd2VyTmliYmxlVG9B
U0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0ZXM6ZXNj
YXBlZCBsZW5ndGg6M107ICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2hhciBi
WzFdOworICAgICAgICAgICAgYlswXSA9IGM7CisgICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBl
bmRCeXRlczpiIGxlbmd0aDoxXTsgICAgCisgICAgICAgIH0gICAgICAgICAgICAgICAKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHJlc3VsdERhdGE7Cit9CisKK3N0YXRpYyBOU1VSTCAqVVJMQnlS
ZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoTlNVUkwgKlVSTCwgQ0ZVUkxD
b21wb25lbnRUeXBlIGNvbXBvbmVudCkKK3sKKyAgICBDRlJhbmdlIHJhbmdlID0gQ0ZVUkxHZXRC
eXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50LCAw
KTsKKyAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCisgICAgICAgIHJldHVy
biBVUkw7CisgICAgCisgICAgLy8gUmVtb3ZlIG9uZSBzdWJzZXF1ZW50IGNoYXJhY3Rlci4KKyAg
ICByYW5nZS5sZW5ndGgrKzsKKworICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9M
RU5HVEg+IGJ1ZmZlcihVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7CisgICAgQ0ZJbmRleCBudW1C
eXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CisgICAgaWYgKG51bUJ5dGVzID09IC0xKSB7CisgICAgICAgIG51
bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAw
KTsKKyAgICAgICAgYnVmZmVyLmdyb3cobnVtQnl0ZXMpOworICAgICAgICBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlci5kYXRhKCksIG51bUJ5dGVzKTsKKyAgICB9
CisgICAgVUludDgqIHVybEJ5dGVzID0gYnVmZmVyLmRhdGEoKTsKKyAgICAgICAgCisgICAgaWYg
KG51bUJ5dGVzIDwgcmFuZ2UubG9jYXRpb24pCisgICAgICAgIHJldHVybiBVUkw7CisgICAgaWYg
KG51bUJ5dGVzIDwgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpCisgICAgICAgIHJhbmdl
Lmxlbmd0aCA9IG51bUJ5dGVzIC0gcmFuZ2UubG9jYXRpb247CisgICAgICAgIAorICAgIG1lbW1v
dmUodXJsQnl0ZXMgKyByYW5nZS5sb2NhdGlvbiwgdXJsQnl0ZXMgKyByYW5nZS5sb2NhdGlvbiAr
IHJhbmdlLmxlbmd0aCwgbnVtQnl0ZXMgLSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCk7
CisgICAgCisgICAgQ0ZVUkxSZWYgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0
ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIG51bGxwdHIpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXN1bHQgPSBDRlVSTENy
ZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgs
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAK
KyAgICByZXR1cm4gcmVzdWx0ID8gQ0ZCcmlkZ2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKK30K
KworTlNVUkwgKlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhOU1VSTCAqVVJMKQoreworICAgIHJldHVy
biBVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3RlcihVUkwsIGtDRlVS
TENvbXBvbmVudFVzZXJJbmZvKTsKK30KKworTlNEYXRhICpvcmlnaW5hbFVSTERhdGEoTlNVUkwg
KlVSTCkKK3sKKyAgICBVSW50OCAqYnVmZmVyID0gKFVJbnQ4ICopbWFsbG9jKFVSTF9CWVRFU19C
VUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsK
KyAgICBpZiAoYnl0ZXNGaWxsZWQgPT0gLTEpIHsKKyAgICAgICAgQ0ZJbmRleCBieXRlc1RvQWxs
b2NhdGUgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDAp
OworICAgICAgICBidWZmZXIgPSAoVUludDggKilyZWFsbG9jKGJ1ZmZlciwgYnl0ZXNUb0FsbG9j
YXRlKTsKKyAgICAgICAgYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVS
TFJlZilVUkwsIGJ1ZmZlciwgYnl0ZXNUb0FsbG9jYXRlKTsKKyAgICAgICAgQVNTRVJUKGJ5dGVz
RmlsbGVkID09IGJ5dGVzVG9BbGxvY2F0ZSk7CisgICAgfQorICAgIAorICAgIC8vIGJ1ZmZlciBp
cyBhZG9wdGVkIGJ5IHRoZSBOU0RhdGEKKyAgICBOU0RhdGEgKmRhdGEgPSBbTlNEYXRhIGRhdGFX
aXRoQnl0ZXNOb0NvcHk6YnVmZmVyIGxlbmd0aDpieXRlc0ZpbGxlZCBmcmVlV2hlbkRvbmU6WUVT
XTsKKyAgICAKKyAgICBOU1VSTCAqYmFzZVVSTCA9IChfX2JyaWRnZSBOU1VSTCAqKUNGVVJMR2V0
QmFzZVVSTCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMKTsKKyAgICBpZiAoYmFzZVVSTCkKKyAgICAg
ICAgcmV0dXJuIG9yaWdpbmFsVVJMRGF0YShVUkxXaXRoRGF0YShkYXRhLCBiYXNlVVJMKSk7Cisg
ICAgcmV0dXJuIGRhdGE7Cit9CisKK3N0YXRpYyBDRlN0cmluZ1JlZiBjcmVhdGVTdHJpbmdXaXRo
RXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoQ0ZTdHJpbmdSZWYgc3RyaW5nKQoreworICAgIENGSW5k
ZXggbGVuZ3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsKKyAgICBWZWN0b3I8VUNoYXIs
IFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBzb3VyY2VCdWZmZXIobGVuZ3RoKTsKKyAgICBDRlN0
cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBsZW5ndGgpLCBzb3VyY2VC
dWZmZXIuZGF0YSgpKTsKKyAgICAKKyAgICBWZWN0b3I8VUNoYXIsIFVSTF9CWVRFU19CVUZGRVJf
TEVOR1RIPiBvdXRCdWZmZXI7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2
aW91c0NvZGVQb2ludDsKKyAgICBDRkluZGV4IGkgPSAwOworICAgIHdoaWxlIChpIDwgbGVuZ3Ro
KSB7CisgICAgICAgIFVDaGFyMzIgYzsKKyAgICAgICAgVTE2X05FWFQoc291cmNlQnVmZmVyLCBp
LCBsZW5ndGgsIGMpCisgICAgICAgIAorICAgICAgICBpZiAoaXNMb29rYWxpa2VDaGFyYWN0ZXIo
cHJldmlvdXNDb2RlUG9pbnQsIGMpKSB7CisgICAgICAgICAgICB1aW50OF90IHV0ZjhCdWZmZXJb
NF07CisgICAgICAgICAgICBDRkluZGV4IG9mZnNldCA9IDA7CisgICAgICAgICAgICBVQm9vbCBm
YWlsdXJlID0gZmFsc2U7CisgICAgICAgICAgICBVOF9BUFBFTkQodXRmOEJ1ZmZlciwgb2Zmc2V0
LCA0LCBjLCBmYWlsdXJlKQorICAgICAgICAgICAgQVNTRVJUKCFmYWlsdXJlKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgZm9yIChDRkluZGV4IGogPSAwOyBqIDwgb2Zmc2V0OyArK2opIHsK
KyAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKCclJyk7CisgICAgICAgICAgICAgICAg
b3V0QnVmZmVyLmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1dGY4QnVmZmVyW2pd
KSk7CisgICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdCh1dGY4QnVmZmVyW2pdKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBVQ2hhciB1dGYxNkJ1ZmZlclsyXTsKKyAgICAgICAgICAgIENGSW5kZXgg
b2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIFVCb29sIGZhaWx1cmUgPSBmYWxzZTsKKyAgICAgICAg
ICAgIFUxNl9BUFBFTkQodXRmMTZCdWZmZXIsIG9mZnNldCwgMiwgYywgZmFpbHVyZSkKKyAgICAg
ICAgICAgIEFTU0VSVCghZmFpbHVyZSk7CisgICAgICAgICAgICBmb3IgKENGSW5kZXggaiA9IDA7
IGogPCBvZmZzZXQ7ICsraikKKyAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKHV0ZjE2
QnVmZmVyW2pdKTsKKyAgICAgICAgfQorICAgICAgICBwcmV2aW91c0NvZGVQb2ludCA9IGM7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxw
dHIsIG91dEJ1ZmZlci5kYXRhKCksIG91dEJ1ZmZlci5zaXplKCkpOworfQorCitOU1N0cmluZyAq
dXNlclZpc2libGVTdHJpbmcoTlNVUkwgKlVSTCkKK3sKKyAgICBOU0RhdGEgKmRhdGEgPSBvcmln
aW5hbFVSTERhdGEoVVJMKTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiZWZvcmUgPSBzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oW2RhdGEgYnl0ZXNdKTsKKyAgICBpbnQgbGVu
Z3RoID0gW2RhdGEgbGVuZ3RoXTsKKyAgICAKKyAgICBib29sIG1heU5lZWRIb3N0TmFtZURlY29k
aW5nID0gZmFsc2U7CisgICAgCisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCA9IGJlZm9yZTsK
KyAgICBpbnQgYnVmZmVyTGVuZ3RoID0gKGxlbmd0aCAqIDMpICsgMTsKKyAgICBWZWN0b3I8Y2hh
ciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IGFmdGVyKGJ1ZmZlckxlbmd0aCk7IC8vIGxhcmdl
IGVub3VnaCB0byAlLWVzY2FwZSBldmVyeSBjaGFyYWN0ZXIKKyAgICBjaGFyICpxID0gYWZ0ZXIu
ZGF0YSgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
dW5zaWduZWQgY2hhciBjID0gcFtpXTsKKyAgICAgICAgLy8gdW5lc2NhcGUgZXNjYXBlIHNlcXVl
bmNlcyB0aGF0IGluZGljYXRlIGJ5dGVzIGdyZWF0ZXIgdGhhbiAweDdmCisgICAgICAgIGlmIChj
ID09ICclJyAmJiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDFdKSkg
JiYgaSArIDIgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBbaSArIDJdKSkgeworICAgICAg
ICAgICAgYXV0byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSArIDFdLCBwW2kgKyAyXSk7CisgICAg
ICAgICAgICBpZiAodSA+IDB4N2YpIHsKKyAgICAgICAgICAgICAgICAvLyB1bmVzY2FwZQorICAg
ICAgICAgICAgICAgICpxKysgPSB1OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAvLyBkbyBub3QgdW5lc2NhcGUKKyAgICAgICAgICAgICAgICAqcSsrID0gcFtpXTsKKyAg
ICAgICAgICAgICAgICAqcSsrID0gcFtpICsgMV07CisgICAgICAgICAgICAgICAgKnErKyA9IHBb
aSArIDJdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSArPSAyOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgKnErKyA9IGM7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IENoZWNrIGZvciAieG4tLSIgaW4gYW4gZWZmaWNpZW50LCBub24tY2FzZS1zZW5zaXRpdmUsIHdh
eS4KKyAgICAgICAgICAgIGlmIChjID09ICctJyAmJiBpID49IDMgJiYgIW1heU5lZWRIb3N0TmFt
ZURlY29kaW5nICYmIChxWy00XSB8IDB4MjApID09ICd4JyAmJiAocVstM10gfCAweDIwKSA9PSAn
bicgJiYgcVstMl0gPT0gJy0nKQorICAgICAgICAgICAgICAgIG1heU5lZWRIb3N0TmFtZURlY29k
aW5nID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAqcSA9ICdcMCc7CisgICAgCisgICAg
Ly8gQ2hlY2sgc3RyaW5nIHRvIHNlZSBpZiBpdCBjYW4gYmUgY29udmVydGVkIHRvIGRpc3BsYXkg
dXNpbmcgVVRGLTggIAorICAgIFJldGFpblB0cjxOU1N0cmluZz4gcmVzdWx0ID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFmdGVyLmRhdGEoKV07CisgICAgaWYgKCFyZXN1bHQpIHsK
KyAgICAgICAgLy8gQ291bGQgbm90IGNvbnZlcnQgdG8gVVRGLTguCisgICAgICAgIC8vIENvbnZl
cnQgY2hhcmFjdGVycyBncmVhdGVyIHRoYW4gMHg3ZiB0byBlc2NhcGUgc2VxdWVuY2VzLgorICAg
ICAgICAvLyBTaGlmdCBjdXJyZW50IHN0cmluZyB0byB0aGUgZW5kIG9mIHRoZSBidWZmZXIKKyAg
ICAgICAgLy8gdGhlbiB3ZSB3aWxsIGNvcHkgYmFjayBieXRlcyB0byB0aGUgc3RhcnQgb2YgdGhl
IGJ1ZmZlciAKKyAgICAgICAgLy8gYXMgd2UgY29udmVydC4KKyAgICAgICAgaW50IGFmdGVybGVu
Z3RoID0gcSAtIGFmdGVyLmRhdGEoKTsKKyAgICAgICAgY2hhciAqcCA9IGFmdGVyLmRhdGEoKSAr
IGJ1ZmZlckxlbmd0aCAtIGFmdGVybGVuZ3RoIC0gMTsKKyAgICAgICAgbWVtbW92ZShwLCBhZnRl
ci5kYXRhKCksIGFmdGVybGVuZ3RoICsgMSk7IC8vIGNvcGllcyB0cmFpbGluZyAnXDAnCisgICAg
ICAgIGNoYXIgKnEgPSBhZnRlci5kYXRhKCk7CisgICAgICAgIHdoaWxlICgqcCkgeworICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBjID0gKnA7CisgICAgICAgICAgICBpZiAoYyA+IDB4N2YpIHsK
KyAgICAgICAgICAgICAgICAqcSsrID0gJyUnOworICAgICAgICAgICAgICAgICpxKysgPSB1cHBl
ck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKKyAgICAgICAgICAgICAgICAqcSsrID0gbG93ZXJO
aWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICAqcSsrID0gKnA7CisgICAgICAgICAgICBwKys7CisgICAgICAgIH0KKyAgICAgICAgKnEg
PSAnXDAnOworICAgICAgICByZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6
YWZ0ZXIuZGF0YSgpXTsKKyAgICB9CisgICAgCisgICAgaWYgKG1heU5lZWRIb3N0TmFtZURlY29k
aW5nKSB7CisgICAgICAgIC8vIEZJWE1FOiBJcyBpdCBnb29kIHRvIGlnbm9yZSB0aGUgZmFpbHVy
ZSBvZiBtYXBIb3N0TmFtZXMgYW5kIGtlZXAgcmVzdWx0IGludGFjdD8KKyAgICAgICAgYXV0byBt
YXBwZWRSZXN1bHQgPSBtYXBIb3N0TmFtZXMocmVzdWx0LmdldCgpLCBOTyk7CisgICAgICAgIGlm
IChtYXBwZWRSZXN1bHQpCisgICAgICAgICAgICByZXN1bHQgPSBtYXBwZWRSZXN1bHQ7CisgICAg
fQorCisgICAgcmVzdWx0ID0gW3Jlc3VsdCBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxN
YXBwaW5nXTsKKyAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoY3JlYXRlU3RyaW5nV2l0aEVz
Y2FwZWRVbnNhZmVDaGFyYWN0ZXJzKChfX2JyaWRnZSBDRlN0cmluZ1JlZilyZXN1bHQuZ2V0KCkp
KTsKK30KKworQk9PTCBpc1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAg
Qk9PTCB2YWxpZCA9IFlFUzsKKyAgICAvLyBnZXQgYnVmZmVyCisgICAgCisgICAgY2hhciBzdGF0
aWNfYnVmZmVyWzEwMjRdOworICAgIGNvbnN0IGNoYXIgKnA7CisgICAgQk9PTCBzdWNjZXNzID0g
Q0ZTdHJpbmdHZXRDU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilzdHJpbmcsIHN0YXRpY19i
dWZmZXIsIDEwMjMsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7CisgICAgcCA9IHN1Y2Nlc3MgPyBz
dGF0aWNfYnVmZmVyIDogW3N0cmluZyBVVEY4U3RyaW5nXTsKKyAgICAKKyAgICBpbnQgbGVuZ3Ro
ID0gc3RybGVuKHApOworICAgIAorICAgIC8vIGNoZWNrIGZvciBjaGFyYWN0ZXJzIDw9IDB4MjAg
b3IgPj0weDdmLCAlLWVzY2FwZSBzZXF1ZW5jZXMgb2YgJTdmLCBhbmQgeG4tLSwgdGhlc2UKKyAg
ICAvLyBhcmUgdGhlIHRoaW5ncyB0aGF0IHdpbGwgbGVhZCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5n
IHRvIGFjdHVhbGx5IGNoYW5nZSB0aGluZ3MuCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBwW2ldOworICAgICAgICAvLyBl
c2NhcGUgY29udHJvbCBjaGFyYWN0ZXJzLCBzcGFjZSwgYW5kIGRlbGV0ZQorICAgICAgICBpZiAo
YyA8PSAweDIwIHx8IGMgPT0gMHg3ZikgeworICAgICAgICAgICAgdmFsaWQgPSBOTzsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJyUnICYmIChpICsgMSA8IGxl
bmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAmJiBpICsgMiA8IGxlbmd0aCAmJiBp
c0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7CisgICAgICAgICAgICBhdXRvIHUgPSB0b0FTQ0lJ
SGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKKyAgICAgICAgICAgIGlmICh1ID4gMHg3Zikg
eworICAgICAgICAgICAgICAgIHZhbGlkID0gTk87CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvLyBDaGVjayBmb3IgInhuLS0iIGluIGFuIGVmZmljaWVudCwgbm9uLWNhc2Utc2Vu
c2l0aXZlLCB3YXkuCisgICAgICAgICAgICBpZiAoYyA9PSAnLScgJiYgaSA+PSAzICYmIChwW2kg
LSAzXSB8IDB4MjApID09ICd4JyAmJiAocFtpIC0gMl0gfCAweDIwKSA9PSAnbicgJiYgcFtpIC0g
MV0gPT0gJy0nKSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBOTzsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1
cm4gdmFsaWQ7Cit9CisKK05TUmFuZ2UgcmFuZ2VPZlVSTFNjaGVtZShOU1N0cmluZyAqc3RyaW5n
KQoreworICAgIE5TUmFuZ2UgY29sb24gPSBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCI6Il07Cisg
ICAgaWYgKGNvbG9uLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgY29sb24ubG9jYXRpb24gPiAw
KSB7CisgICAgICAgIE5TUmFuZ2Ugc2NoZW1lID0gezAsIGNvbG9uLmxvY2F0aW9ufTsKKyAgICAg
ICAgLyoKKyAgICAgICAgIFRoaXMgc3R1ZmYgaXMgdmVyeSBleHBlbnNpdmUuICAxMC0xNSBtc2Vj
IG9uIGEgMngxLjJHSHouICBJZiBub3QgY2FjaGVkIGl0IHN3YW1wcworICAgICAgICAgZXZlcnl0
aGluZyBlbHNlIHdoZW4gYWRkaW5nIGl0ZW1zIHRvIHRoZSBhdXRvY29tcGxldGUgREIuICBNYWtl
cyBtZSB3b25kZXIgaWYgd2UKKyAgICAgICAgIGV2ZW4gbmVlZCB0byBlbmZvcmNlIHRoZSBjaGFy
YWN0ZXIgc2V0IGhlcmUuCisgICAgICAgICAqLworICAgICAgICBOU1N0cmluZyAqYWNjZXB0YWJs
ZUNoYXJhY3RlcnMgPSBAIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky4tIjsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IEludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQoW1tO
U0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFi
bGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0pOworICAgICAgICBOU1JhbmdlIGlsbGVnYWxzID0g
W3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0
LmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpzY2hlbWVdOworICAgICAgICBpZiAoaWxsZWdh
bHMubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBzY2hlbWU7Cisg
ICAgfQorICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKK30KKworQk9PTCBs
b29rc0xpa2VBYnNvbHV0ZVVSTChOU1N0cmluZyAqc3RyaW5nKQoreworICAgIC8vIFRyaW0gd2hp
dGVzcGFjZSBiZWNhdXNlIF93ZWJfVVJMV2l0aFN0cmluZyBhbGxvd3Mgd2hpdGVzcGFjZS4KKyAg
ICByZXR1cm4gcmFuZ2VPZlVSTFNjaGVtZShzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShzdHJp
bmcpLmdldCgpKS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbSBiL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxNjFjM2FjN2NlNzFh
ZDM0MDAyYjhhZmJmZTQ0ODQyZWY2ODg3NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCA8d3RmL1VSTC5oPgorCisjaW1wb3J0ICJDRlVSTEV4dHJhcy5oIgorI2ltcG9ydCAi
TlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgorI2ltcG9y
dCA8d3RmL1VSTFBhcnNlci5oPgorI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitAaW50
ZXJmYWNlIE5TU3RyaW5nIChXVEZOU1VSTEV4dHJhcykKKy0gKEJPT0wpX3dlYl9sb29rc0xpa2VJ
UEFkZHJlc3M7CitAZW5kCisKK25hbWVzcGFjZSBXVEYgeworCitVUkw6OlVSTChOU1VSTCAqdXJs
KQoreworICAgIGlmICghdXJsKSB7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2Ug
VVJMIGhlcmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAgICBXVEY6OmdldFVSTEJ5dGVzKChf
X2JyaWRnZSBDRlVSTFJlZil1cmwsIHVybEJ5dGVzKTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKHVy
bEJ5dGVzLmRhdGEoKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK1VSTDo6
b3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0Cit7CisgICAgLy8gQ3JlYXRpbmcgYSB0b2xsLWZyZWUg
YnJpZGdlZCBDRlVSTCBiZWNhdXNlIGNyZWF0aW9uIHdpdGggTlNVUkwgbWV0aG9kcyB3b3VsZCBu
b3QgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHN0cmluZy4KKyAgICAvLyBXZSdsbCBuZWVkIGZpZGVs
aXR5IHdoZW4gcm91bmQtdHJpcHBpbmcgdmlhIENGVVJMR2V0Qnl0ZXMoKS4KKyAgICByZXR1cm4g
Y3JlYXRlQ0ZVUkwoKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7Cit9CisKK1JldGFpblB0cjxDRlVS
TFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChpc0VtcHR5KCkpIHsKKyAgICAgICAgLy8g
V2UgdXNlIHRoZSB0b2xsLWZyZWUgYnJpZGdlIGJldHdlZW4gTlNVUkwgYW5kIENGVVJMIHRvIGNy
ZWF0ZSBhIENGVVJMUmVmIHN1cHBvcnRpbmcgYm90aCBlbXB0eSBhbmQgbnVsbCB2YWx1ZXMuCisg
ICAgICAgIHJldHVybiAoX19icmlkZ2UgQ0ZVUkxSZWYpYWRvcHROUyhbW05TVVJMIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpAIiJdKS5nZXQoKTsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IGNmVVJMOworCisgICAgLy8gRmFzdCBwYXRoIGlmIHRoZSBpbnB1dCBkYXRhIGlzIDgtYml0
IHRvIGF2b2lkIGNvcHlpbmcgaW50byBhIHRlbXBvcmFyeSBidWZmZXIuCisgICAgaWYgKExJS0VM
WShtX3N0cmluZy5pczhCaXQoKSkpCisgICAgICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZy
b21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9zdHJpbmcuY2hhcmFjdGVy
czgoKSksIG1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gU2xvd2Vy
IHBhdGguCisgICAgICAgIFdURjo6VVJMQ2hhckJ1ZmZlciBidWZmZXI7CisgICAgICAgIGNvcHlU
b0J1ZmZlcihidWZmZXIpOworICAgICAgICBjZlVSTCA9IFdURjo6Y3JlYXRlQ0ZVUkxGcm9tQnVm
ZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIH0KKworICAgIGlmIChwcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIVdURjo6aXNDRlVSTFNhbWVPcmlnaW4oY2ZVUkwuZ2V0
KCksICp0aGlzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gY2ZVUkw7
Cit9CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQoreworICAg
IHJldHVybiBbaG9zdC5jcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkgX3dlYl9s
b29rc0xpa2VJUEFkZHJlc3NdOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9n
bGliL0dVbmlxdWVQdHJTb3VwLmggYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0dVbmlxdWVQdHJTb3Vw
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGI0ZmIzNGY4NmYyNGE0NjIxZTBmOTA2NzA2Nzc1Zjk0ODE4NTk5Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaApA
QCAtMCwwICsxLDM4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNp
ZiBVU0UoU09VUCkKKworI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9n
bGliL0dVbmlxdWVQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1dURl9ERUZJTkVfR1BUUl9E
RUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihT
b3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVlKQorV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291
cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3NhZ2VfaGVhZGVyc19mcmVlKQorV1RGX0RFRklORV9H
UFRSX0RFTEVURVIoU291cEJ1ZmZlciwgc291cF9idWZmZXJfZnJlZSkKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKKyNlbmRpZiAvLyBVU0UoU09VUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L2dsaWIvVVJMU291cC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1VSTFNvdXAuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU1ZGJjN2UxN2I4Mzg5MTljNTBjZmZmYmQ2YjQ1Y2Y4Y2IzYjg5YWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1VSTFNvdXAuY3BwCkBAIC0wLDAgKzEsNzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
VVNFKFNPVVApCisKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1VSTDo6VVJMKFNvdXBVUkkqIHNvdXBVUkkpCit7
CisgICAgaWYgKCFzb3VwVVJJKSB7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHVybFN0cmluZyhzb3VwX3VyaV90
b19zdHJpbmcoc291cFVSSSwgRkFMU0UpKTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKFN0cmluZzo6
ZnJvbVVURjgodXJsU3RyaW5nLmdldCgpKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
CisKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTW90aXZh
dGVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODk1Ni4gbGli
c291cAorICAgIC8vIGRvZXMgbm90IGFkZCB0aGUgcGFzc3dvcmQgdG8gdGhlIFVSTCB3aGVuIGNh
bGxpbmcKKyAgICAvLyBzb3VwX3VyaV90b19zdHJpbmcsIGFuZCB0aHVzIHRoZSByZXF1ZXN0cyBh
cmUgbm90IHByb3Blcmx5CisgICAgLy8gYnVpbHQuIEZpeGluZyBzb3VwX3VyaV90b19zdHJpbmcg
aXMgYSBuby1ubyBhcyB0aGUgbWFpbnRhaW5lciBkb2VzCisgICAgLy8gbm90IHdhbnQgdG8gYnJl
YWsgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIGltcGxlbWVudGF0aW9ucworICAgIGlmIChz
b3VwVVJJLT5wYXNzd29yZCkKKyAgICAgICAgc2V0UGFzcyhTdHJpbmc6OmZyb21VVEY4KHNvdXBV
UkktPnBhc3N3b3JkKSk7Cit9CisKK0dVbmlxdWVQdHI8U291cFVSST4gVVJMOjpjcmVhdGVTb3Vw
VVJJKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gR1VuaXF1ZVB0cjxTb3VwVVJJPihzb3VwX3VyaV9uZXcoc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSkpOworfQorCitib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmlu
Z1ZpZXcgaG9zdCkKK3sKKyAgICByZXR1cm4gIWhvc3QuaXNFbXB0eSgpICYmIGdfaG9zdG5hbWVf
aXNfaXBfYWRkcmVzcyhob3N0LnV0ZjgoKS5kYXRhKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb24uaAppbmRleCBkMGI5MDM4ZjgyNjQ3YmUwYTE1ZjVjZWE0ZjgwMTk2MWY2NzJm
MjliLi43ZWMzOTgyZTExMGI3YWY3MzE0OWFlOWFlYzU1MWIwZDAzNmIxNDk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKQEAgLTQ4
LDcgKzQ4LDYgQEAgY2xhc3MgUGF5bWVudDsKIGNsYXNzIFBheW1lbnRDb250YWN0OwogY2xhc3Mg
UGF5bWVudENvb3JkaW5hdG9yOwogY2xhc3MgUGF5bWVudE1ldGhvZDsKLWNsYXNzIFVSTDsKIGVu
dW0gY2xhc3MgUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM7CiBzdHJ1Y3QgQXBwbGVQYXlMaW5l
SXRlbTsKIHN0cnVjdCBBcHBsZVBheVBheW1lbnRSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hh
bnRFdmVudC5oCmluZGV4IGIwNzU5Y2RhMThjMDNjNzNkYjBiZDFkY2Y4NDUzMWIyNGI1MmQwOWQu
LjNhYTIyZjViODJkNmMyYzE4MGVjZTgxNDU4NWQ4NTEwODk0YjFiNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRh
dGVNZXJjaGFudEV2ZW50LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IGJkNTUzNGMy
ZGY5MTI1ODdkZDI3Nzg5MjI5OGJkN2Q0MWU3YTlhZmMuLmUzNzMzNTdjYzA3ZmVhNTlkZTk3ZWM1
NWQ1Yzg4OTNkMDYzODY0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNs
dWRlICJQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29y
ZGluYXRvckNsaWVudC5oIgogI2luY2x1ZGUgIlBheW1lbnRTZXNzaW9uLmgiCi0jaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRv
ci5oCmluZGV4IGE2ZjFiNmU3YjIxZTBlYzAwNGE0YjBhYTcyOTQwOWI4M2E3YTM0ZmYuLjViZjcx
ZGFhMjYzNjhmYzgzNGIxNTQwMjJjOWNjMTc2OWExNGJjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaApAQCAtMzgsNyAr
MzgsNiBAQCBjbGFzcyBQYXltZW50Q29udGFjdDsKIGNsYXNzIFBheW1lbnRNZXJjaGFudFNlc3Np
b247CiBjbGFzcyBQYXltZW50TWV0aG9kOwogY2xhc3MgUGF5bWVudFNlc3Npb247Ci1jbGFzcyBV
Ukw7CiBlbnVtIGNsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOwogc3RydWN0IFBheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0Owogc3RydWN0IFBheW1lbnRNZXRob2RVcGRhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRp
bmF0b3JDbGllbnQuaAppbmRleCA4MDE5OGYyNDcxYjM0OGU3MGExMTE2MDdhMzUxYTMyMDcwMDcz
MmIwLi44NWU0ZTRiMDQ0Njg4OTBmNGVjM2M4MDRkNWEyNDczOGU4MTQ0NDZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmgKQEAgLTM4LDcgKzM4LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKLWNsYXNzIFVSTDsKIHN0cnVjdCBQYXltZW50QXV0
aG9yaXphdGlvblJlc3VsdDsKIHN0cnVjdCBQYXltZW50TWV0aG9kVXBkYXRlOwogc3RydWN0IFNo
aXBwaW5nQ29udGFjdFVwZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvUGF5bWVudFNlc3Npb24uaAppbmRleCAwYTM1MDdlMjYwZTc0NjdlMGFjMGQzMWM5NDkzNzU0
YTMzZmYyYTY0Li44ZjdhNGI2NTBmMGI5MmY4MTVmOWI1ZDVjY2UxNzlhN2Q1MjkxMDQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5oCkBA
IC0zNyw3ICszNyw2IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgUGF5bWVudDsKIGNsYXNzIFBh
eW1lbnRDb250YWN0OwogY2xhc3MgUGF5bWVudE1ldGhvZDsKLWNsYXNzIFVSTDsKIAogY2xhc3Mg
UGF5bWVudFNlc3Npb24gOiBwdWJsaWMgdmlydHVhbCBQYXltZW50U2Vzc2lvbkJhc2UgewogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlm
ZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGlj
YXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggZmE0ZWU2MzdhNzllNTRi
MzE2NjFjNGI1MGQxODczYjdmZTk5NzBjMy4uYjJmMWI0OWYzZWIzYTNlZTgwYTRmYjMyOWY2OWU4
YmY4ZTUxYTk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlv
bm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC0yNyw4ICsy
Nyw5IEBACiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAppbmRl
eCBlNjg5NmU3ODc4YjJjMmIxMGY2NjEzY2RiOTg1ZDBiNmUyNThkOTRhLi40ODk3NmQyYTM1MmUy
MGRlNDE0YTZiZjk4ZTU2NmVlNDcwNDc1ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTmF2aWdh
dG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
aW5kZXggZDJhYTdhMmVlN2Y2ZmJkYTE5YzhhZmI4ZTk1NGVhZDUxYWJmNmJmMi4uODczMTBhNmI2
ODY3N2NkOTY2N2RhOTkxMzc1YzNmMWVjZjYxYjRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJKU0ZldGNo
UmVzcG9uc2UuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbUNodW5rLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggNjdkZTJlNTQ2MmJmM2RjNmFiODBjMjRhMzE4YzQw
NTRmY2Y5MmNhNS4uNDAxMWIzNzM4Yzk3OWJiOTc4YWRmZGNmY2JhODU0Y2FlOGM1ZGZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMzEsNyArMzEs
NyBAQAogI2luY2x1ZGUgIkZldGNoQm9keUNvbnN1bWVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJs
ZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
U2Vzc2lvbk1ldGFkYXRhLmgKaW5kZXggZTM2NDRhODc1MTk1OTdmNjRlNTNmM2NjZGFjNzQ0MDM5
NzYwMDIzZC4uNmYzZGZlMzZmMDUzODk5MTQ3YzRlYWRlZmNlMDJkNDMyZjk5OTNmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWV0
YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb25NZXRhZGF0YS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU0VT
U0lPTikKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcAppbmRleCAyZTgyYzMyNjE4NjVkN2E5
ODg4YTVjMmM2Yjg1NzU0YjQyY2JhNDU5Li45OGM2NjNiNmZjNmRiZGEyOTM2YTdkYTI2ODk2ZGYw
MDMyMzNiZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKQEAgLTM1LDkgKzM1LDkgQEAKICNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQogCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2VSZWdpc3RyeS5oCmluZGV4IDJiODk0ZTBjYTQzYmU0MWI1YjEwZjRkMTk4OTEzNDM0
ODc5MjgzMDYuLjAzMzY3NGYyNmQzNDU4NTlhNGFhMWNkYTEyMGU2ZDg4NDE1NDZkODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VSZWdpc3RyeS5oCkBAIC0zOCw3ICszOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgVVJMOwogY2xhc3MgTWVkaWFTb3VyY2U7CiAKIGNsYXNzIE1lZGlhU291cmNlUmVnaXN0
cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAppbmRleCA3ZTIyMTUwMjQwOGZiYzQ5
MWU4NzA2Njk3Njg2NzllYmUwMDQzNDYyLi44YWMxNDU3OTUwYTc5MTg5ZDNhY2QyZDA3MDU2NmEy
MTg3YmNmYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAKaW5kZXggZDY5ZGNjZjg2ZTM4YWEzZjcz
Y2NhNzE5ZGYxYjllYmZmYjJjMjAwOC4uNjQxNWZmYWJhNWM5YTg0ODEzNGU1MjIzMzRkZDNhNjAx
ZWMyYmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtUmVnaXN0cnkuaAppbmRleCBhMjY3ZjExMDBiZTE3YzJhMGIyOWEyMjFlM2IxNjljOTc3
NGFhMjJkLi5mNmQyM2QyZDc5MGYwZDRmMjc1MTA1YmI0MDZiMTllM2NlMGU0OTNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UmVnaXN0cnkuaApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwotY2xhc3MgVVJMOwogCiBj
bGFzcyBNZWRpYVN0cmVhbVJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIFVSTFJlZ2lzdHJ5IHsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9yY29udGVu
dHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50LmgK
aW5kZXggYjYyZDlhZmE4ZWFlNWI0ZjZmZTM0YjRjNThjZGI0ZmRjY2Q2NWEwNi4uNDcwNjczYTA5
ZTk1ZjAzMGY1ZWVhYzQyMzk4Njk2ZmExMDQzZTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMv
TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50LmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVO
QUJMRShOQVZJR0FUT1JfQ09OVEVOVF9VVElMUykKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oCmluZGV4IGZmMGRjNTRkYWYxZTUwMjM4YWZhMzVmMTMyODllNWI4
M2UyYjJiOWMuLmZlZGExYTEzYWVkMjFjNDRiYWQzMzg5NjI5YTcyNTNmOTJiMWM5ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25EaXJlY3Rpb24uaCIK
ICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
LSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV3JpdGlu
Z01vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVu
dC5oCmluZGV4IDlmNmQwNjZmNWJlMGJkN2I2NTlhMDNiOTM4NzMwZjE3MDg4YmYzNzYuLjI5ZmZm
YmYyMGIyODVmOGY1ZTBlNjE5ZDA4NzFkZDY0OTUyNjVkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRh
dGlvbkV2ZW50LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoUEFZTUVOVF9SRVFVRVNU
KQogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oCmluZGV4IDllMjE1ZTVj
MmRhYmU5N2I0NWM4NTk4ODgyMGU1ZjBkMzBiZDFhODYuLjdlYWUxMzdhZDI0NTgyOGI3ZGQ5ODgw
NDY1MmE1ZDA5MTViYzQ2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNs
dWRlICJQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQuaCIKICNpbmNsdWRlICJQYXltZW50T3B0aW9u
cy5oIgogI2luY2x1ZGUgIlBheW1lbnRSZXNwb25zZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1
Z2luUmVwbGFjZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5S
ZXBsYWNlbWVudC5oCmluZGV4IDZiNTU0MmUwODkwMDdkOWE0OTcwNGYyZmIzY2Y0Mzk4YTBmYjRl
MGMuLmVmZWFmMDBjOWUzNThlZDY4MTU1YjU4YTExYWQ0NzI1NTYxZTAyNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCkBAIC00
MCw3ICs0MCw2IEBAIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgUmVuZGVyVHJlZVBvc2l0aW9u
OwogY2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBTaGFkb3dSb290OwotY2xhc3MgVVJMOwogCiBjbGFz
cyBQbHVnaW5SZXBsYWNlbWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdpblJlcGxhY2VtZW50
PiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaAppbmRleCA3NjBhNGU3MTE0Zjc0NzU4MjIzYWRkMWZiMGY4NTZkNmU4NWQzMGNlLi40
ZWYwYjRkZGUwMTc1NGZkN2JkNjg5MjJhNDU1ZDkzNjdlY2I4NmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTcxLDcgKzcxLDYgQEAg
Y2xhc3MgT3NjaWxsYXRvck5vZGU7CiBjbGFzcyBQYW5uZXJOb2RlOwogY2xhc3MgUGVyaW9kaWNX
YXZlOwogY2xhc3MgU2NyaXB0UHJvY2Vzc29yTm9kZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFdhdmVT
aGFwZXJOb2RlOwogCiAvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3
ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBjYTQwNmFmNGM2ZjUyMjUxZjlmNmNjYThjNDVk
NDQzYWJiOGQ5ODU3Li5hODVkZmQ3NzQ0Y2Q0NzlhYjEyM2QzMzI3MTFlZThmMjNkMTAxZDYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNDAsNyArNDAsNiBAQCBjbGFzcyBBcnJh
eUJ1ZmZlcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKLWNsYXNzIFVSTDsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKIGNs
YXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggOTAxMjFmNzBkMzA4ODBjMmEwMmY5NjU4MGFlMDU3
MjhmYjhiZGRjOC4uNTA0M2M0OTQyMzVkMDcwODU1MDZhYWJkY2UzYmM0ZDBiODRiYmMxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMzQs
NyArMzQsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
T3IuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5k
ZXggNzQyN2JiNTU3MDc1ZWRhODhmYmQ2NjEyMWU3ZDkwYTNmMTljZGQzNC4uMWIxOWVkYWI0Yzlh
NmYzODEyZjcxMzBiNzZhNmI5NTM3YzVjNzVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCiAj
aW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAppbmRleCBjZjJiZDdhYzBhZjFiMjc0ZDk4M2Jk
NmJmY2YyNGUzODFkMTIyM2U3Li5lOTZmODYwMmE4N2E5MzUyNjk2OTY3NjVjODBlNzMwMmNmNzM3
ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5oCkBAIC0zMSw3ICszMSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiV2ViU29j
a2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCmluZGV4IDgxMmY4YTAyZDMwYTE2ODNjZTk0Njg0Zjg3MTAyMGU2YmJiOTlkMTguLjM4
OTVlNDQ5Njc1MDdjNWVlOTljYzIyZjQzZTcyMWYyOTEzNzVmZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0zOSw3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNs
YXNzIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjsKIGNsYXNzIFdvcmtl
ckdsb2JhbFNjb3BlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA1YjAzOTg3OGY2YWI5
MTBjZjZhODYzNTA2OWVmYjBiYjRkN2M4OWIyLi43MTc0NmYwNmQ2NTBhOTQ4N2E0NTQxNzk5YThi
Y2YyMDExMmIzOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTg3LDcgKzE4Nyw2
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2F1ZGlvL21hYy9G
RlRGcmFtZU1hYy5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdl
ck1hYy5tbQogCi0gICAgcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwCiAgICAgcGxhdGZvcm0v
Y2YvRmlsZVN5c3RlbUNGLmNwcAogICAgIHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAog
ICAgIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTk1LDcgKzE5NCw2IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NmL01lZGlhQWNjZXNzaWJp
bGl0eVNvZnRMaW5rLmNwcAogICAgIHBsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5jcHAKICAg
ICBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKLSAgICBwbGF0Zm9ybS9jZi9VUkxDRi5j
cHAKIAogICAgIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29h
Lm1tCiAgICAgcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCkBAIC0zOTcsNyAr
Mzk1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWFjL1N1
ZGRlblRlcm1pbmF0aW9uLm1tCiAgICAgcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCiAgICAgcGxh
dGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCi0gICAgcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQogICAg
IHBsYXRmb3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvVmFsaWRh
dGlvbkJ1YmJsZU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlblBsYWNl
aG9sZGVyVmlldy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAxOTMwZWJjMzlhZmY0
NmVlOWRiODIxZjQ1OWZjM2VjZTAxOGU0YmY3Li43MDA0NjgyMWRhODFiNzllZjVmODUxMGU5ZDAx
YjMxZjc2NzUyMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMjQ5LDEyICsyNDks
MTAgQEAgaWYgKFVTRV9DRikKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAg
ICAgbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKIAotICAgICAgICBwbGF0
Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNG
LmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKICAgICAgICAgcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCiAgICAgICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcAotICAgICAgICBwbGF0Zm9ybS9jZi9VUkxDRi5jcHAKIAogICAgICAgICBwbGF0
Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBjZmU0
Njg3ODIyYWJjMzIzMDk5MDRiYTEwMzQzYzhmYTUwOWQxZjMyLi5lNzQ1Y2Q1YTAwOWYwNTUwNGQ4
Y2IyNTUyYTE1ZWY5Yjk1N2UwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTU4NCw4ICsxNTg0LDYg
QEAgcGxhdGZvcm0vVGhlbWUuY3BwCiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAogcGxh
dGZvcm0vVGhyZWFkVGltZXJzLmNwcAogcGxhdGZvcm0vVGltZXIuY3BwCi1wbGF0Zm9ybS9VUkwu
Y3BwCi1wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCiBwbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3BwCiBw
bGF0Zm9ybS9XZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiBwbGF0Zm9ybS9XZWJHTFN0YXRl
VHJhY2tlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNhMzE4ZWFiY2RmZjk4Zjlj
NzY1ODhmYmNmMjZlMjllYmVhYzcwM2IuLjUyYmIyZmMyZDdhOGU4N2Q0MWY5Y2UxNjAxZWQ4MTU3
NDYyMDI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTgwLDcgKzE4MCw2IEBAIHBs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMv
Q0FSaW5nQnVmZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAogCi1w
bGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAK
IHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuY3BwCkBAIC0xODgsNyArMTg3LDYgQEAgcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9NZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5jcHAKIHBs
YXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5jcHAKIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcAotcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCiAKIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tIEBuby11bmlmeQogcGxhdGZvcm0vY29jb2EvQ29yZVZp
ZGVvU29mdExpbmsuY3BwCkBAIC00NjcsNyArNDY1LDYgQEAgcGxhdGZvcm0vbWFjL1N0cmluZ1V0
aWxpdGllcy5tbQogcGxhdGZvcm0vbWFjL1N1ZGRlblRlcm1pbmF0aW9uLm1tCiBwbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW0KIHBsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbSBAbm8tdW5pZnkKLXBs
YXRmb3JtL21hYy9VUkxNYWMubW0KIHBsYXRmb3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0KIHBs
YXRmb3JtL21hYy9Vc2VyQWdlbnRNYWMubW0KIHBsYXRmb3JtL21hYy9WYWxpZGF0aW9uQnViYmxl
TWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggM2UzMjdiMzA3MmUyYWVlNzc3YTUwMzI4NmQwMDgwMTMwN2YzNjMxOS4uOWY0
Yzc0NzdjYjdlNmYzOWIxYzgwNGMyZjdkNTUyZjU1OTM4NDE4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg5Myw3ICsxODkz
LDYgQEAKIAkJNUM0MzA0QjAxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0
QUQxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuY3BwICovOyB9OwogCQk1
QzQzMDRCMTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QUUxOTFBQzkwODAw
MEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCAqLzsgfTsKIAkJNUM0MzA0QjYxOTFBRUY0
NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QjQxOTFBRUY0NjAwMEUyQkMwIC8qIEpT
RVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwotCQk1QzZFNjU0MzFENUNFRkJGMDBGNzg2MkUg
LyogVVJMUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzZFNjU0MDFENUNFREM5MDBGNzg2MkUgLyogVVJMUGFyc2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM3Qzg4RDgxRDBGMUY0QTAw
OUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzdDODhENzFEMEYxRjJCMDA5RDJGNkQgLyogU29ja2V0UHJvdmlk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
Q0ExREVDNjFGNzFGMUM3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ExREVDNDFGNzFFNjg3MDBFNzFC
RDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNUNCMzdGRkYxQzYyRDJBMTAwRjIwMTg4IC8qIFNjcm9sbEFuaW1h
dG9yTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNCMzdGRkQxQzYyRDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5oICovOyB9OwpA
QCAtMTk2OCw3ICsxOTY3LDYgQEAKIAkJNjU2RDM3NDgwQURCQTVERTAwQTQ1NTREIC8qIFN1YnJl
c291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTZEMzczMDBBREJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTdBRkFGQzIw
MDQ3QTI5MDA1MDk0NjQgLyogU3BlY3RyZUdhZGdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU3QUZBRjgyMDA0Nzg5OTAwNTA5NDY0IC8qIFNwZWN0
cmVHYWRnZXQuaCAqLzsgfTsKIAkJNjU4NDM2ODYwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9h
ZFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNjU5MzkyMzgwOUFFNDM0
NjAwMkM1MzFGIC8qIFVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1OUE3RDEzMEI2REI0RDkwMDEx
NTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU5QTdEMTIwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU5
RERDODMwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OUREQzgxMDlFMTk4QkEwMDFCRjNDNiAvKiBK
U0RvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNjVBMjE0NjgwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAv
KiBQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTM4NTksNyArMzg1Nyw2IEBACiAJCUJDQkI4QUI5MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJ
bnRlcnZhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNCQjhBQjUxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCQjhBQkExM0YxQUZCMDAwNzM0
REYwIC8qIFBPREludGVydmFsVHJlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNCQjhBQjYxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsVHJl
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJD
QkI4QUJCMTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4QUI3MTNGMUFGQjAwMDczNERG
MCAvKiBQT0RSZWRCbGFja1RyZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQlCQ0JEMjFBQjBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCRDIxQUEwRTQx
N0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlCQ0JGQjUzRDBEQ0QyOUNGMDAxOUIzRTUgLyogSlNXaW5kb3dQ
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNC
RkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0MwRTg3NjFCRkU3MEU5MDA4RjdG
NTAgLyogSFRNTFBpY3R1cmVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0MwRTg3NDFCRkU3MEU5MDA4RjdGNTAgLyogSFRNTFBpY3R1cmVF
bGVtZW50LmggKi87IH07CiAJCUJDQzVCRTAxMEMwRTkzMTEwMDExQzJEQiAvKiBKU0NTU1N0eWxl
U2hlZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QzVCREZGMEMwRTkzMTEwMDExQzJEQiAvKiBKU0NTU1N0eWxlU2hlZXQuaCAqLzsgfTsKQEAgLTQ3
MzMsNyArNDczMCw2IEBACiAJCUUxQTE0NzA4MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJO
b2RlQWxnb3JpdGhtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFBMTQ3MDcxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmggKi87IH07CiAJCUUxQTMxNjJEMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRT
dHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxQTMxNjJCMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRy
YXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
MUE2NDNGMjBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBNjQzRjEwRUMwOTcy
NTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMUE4RTU2NzE3NTUyQjJBMDA3NDg4RTcg
LyogQ0ZVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxQThFNTY1MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQURFQ0JGMEU3NkFD
RjEwMDRBMUE1RSAvKiBNZXNzYWdlUG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFBREVDQkQwRTc2QUNGMTAwNEExQTVFIC8qIE1lc3NhZ2VQb3J0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFB
REVDQ0UwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFERUNDQzBFNzZBRDhCMDA0QTFBNUUg
LyogTWVzc2FnZUNoYW5uZWwuaCAqLzsgfTsKIAkJRTFBREVEREEwRTc2QkQ5MzAwNEExQTVFIC8q
IEpTTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxQURFREQ4MEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0LmggKi87IH07
CkBAIC02MTgzLDcgKzYxNzksNiBAQAogCQkxQTkyN0ZDRjE0MTZBMTVCMDAzQTgzQzggLyogbnBh
cGkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbnBhcGkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE5MjdGRDAxNDE2QTE1QjAwM0E4M0M4IC8qIG5wcnVudGlt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBucHJ1bnRpbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE5MjdGRDExNDE2QTE1QjAwM0E4M0M4IC8qIG5wdHlw
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbnB0eXBlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQTk4OTU2QTBBQTc4RjgwMDA1RUY1RUYgLyogVVJMQ0Yu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTENGLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBODRGMDIxNDNCQTdCRDAwNTFEMTUzIC8qIFNj
cm9sbENvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTY3JvbGxDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUE4
NEYwMzE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBQUFEREExMTREQjQwOUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg0Myw4ICs4ODM4LDYgQEAKIAkJNUM2
NjhFNjQxRTdDNkMzNTAwRDMyQjNCIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjg4QUEwMUQzODA1MDkwMDBCNTRG
QSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjg4QUEyMUQzODEyNkYwMDBCNTRGQSAvKiBTb2NrZXRQ
cm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRQ
cm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNkU2NTNGMUQ1Q0VE
QzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM2
RTY1NDAxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVUkxQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUM3Qzg4RDcxRDBGMUYyQjAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDOTdBMzM2MUY1RjdBNjUwMDEwNTIwNyAvKiBSZWN0RWRnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdEVkZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDOUI4NjBCMUMyMUUzQzYwMDExMEYzNiAvKiBOZXR3b3JrTG9hZE1l
dHJpY3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3Jr
TG9hZE1ldHJpY3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04OTk3LDggKzg5
OTAsNiBAQAogCQk2NTdBRkFGQTIwMDQ3ODlBMDA1MDk0NjQgLyogU3BlY3RyZUdhZGdldC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3BlY3RyZUdhZGdldC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1N0FGQUZCMjAwNDc4OUEwMDUwOTQ2NCAvKiBTcGVjdHJlR2FkZ2V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWN0cmVHYWRnZXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTg0MzY4NTBBRTAxQjc0MDBFNTM3
NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRnJhbWVMb2FkUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2NTkz
OTIzNTA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2NTkz
OTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5MzkyMzkwOUFF
NDM1QzAwMkM1MzFGIC8qIFVSTE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBVUkxNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUE3
RDEyMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3Vic3RpdHV0ZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNjU5RERDODAwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwMTcsNyArMTMwMDgsNiBAQAogCQlCQ0JCOEFCNTEz
RjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUE9ESW50ZXJ2YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNC
QjhBQjYxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsVHJlZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQT0RJbnRlcnZhbFRyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNCQjhBQjcxM0YxQUZCMDAwNzM0REYwIC8qIFBPRFJlZEJsYWNrVHJlZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQT0RSZWRCbGFja1RyZWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNCRDIxQUEwRTQxN0FENDAwQTA3MEYyIC8qIFVS
TEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMSGFzaC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNX
aW5kb3dQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dp
bmRvd1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCRkI1M0IwRENE
MjlDRjAwMTlCM0U1IC8qIEpTV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNXaW5kb3dQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Q0MwRTg3MzFCRkU3MEU5MDA4RjdGNTAgLyogSFRNTFBpY3R1cmVFbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxQaWN0dXJlRWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUxOCw4ICsxNDUwOCw2IEBACiAJCUUxQTVG
OTlBMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUE2NDNGMTBFQzA5NzI1MDA3Nzk2Njgg
LyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxQTY0M0ZDMEVDMDk3QTAwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUE4RTU2NDE3NTUyQjJB
MDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ0ZVUkxFeHRyYXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlF
MUE4RTU2NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ0ZVUkxFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFBQjFFQTgxNEU5RTI3RDAwNDQ5RTEzIC8qIEZpbGVMaXN0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBGaWxlTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxQUIxRUI3MTRFOUUzNTgwMDQ0OUUxMyAvKiBGaWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQkIxNEU5RTM3QTAwNDQ5RTEzIC8qIEZp
bGVFcnJvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gRmlsZUVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE2NTI1LDggKzE2NTEzLDYgQEAKIAkJMUFFNDJGNjcwQUE0QjhDQjAwQzg2MTJEIC8q
IGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlFMUE4
RTU2NDE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3BwICovLAotCQkJCUUxQThFNTY1
MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oICovLAogCQkJCTUxNjAzMDZCMENDNDM2
MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCTUxN0E2M0JGMUI3NDMxN0Uw
MEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5jcHAgKi8sCiAJCQkJNTE3QTYzQzAxQjc0MzE3RTAw
RTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmggKi8sCkBAIC0xNjUzOCw3ICsxNjUyNCw2IEBACiAJ
CQkJMkQ3NkJCODMxOTQ1NkY4MTAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5jcHAgKi8sCiAJ
CQkJMkQ3NkJCODAxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5oICovLAogCQkJ
CTUxMkREOEUyMEQ5MUUyQjQwMDBGODlFRSAvKiBTaGFyZWRCdWZmZXJDRi5jcHAgKi8sCi0JCQkJ
MUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gY2Y7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjUxMzAsMTEgKzI1MTE1LDYg
QEAKIAkJCQkxODVCQ0YyNzBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggKi8sCiAJ
CQkJOTMzMDlFQTEwOTlFQjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCAqLywKIAkJCQk5MzA1QjI0
QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLywKLQkJCQk2NTkzOTIzNTA5QUU0MzQ2MDAy
QzUzMUYgLyogVVJMLmNwcCAqLywKLQkJCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogVVJM
LmggKi8sCi0JCQkJQkNCRDIxQUEwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCAqLywKLQkJ
CQk1QzZFNjUzRjFENUNFREM5MDBGNzg2MkUgLyogVVJMUGFyc2VyLmNwcCAqLywKLQkJCQk1QzZF
NjU0MDFENUNFREM5MDBGNzg2MkUgLyogVVJMUGFyc2VyLmggKi8sCiAJCQkJODY4MTYwRDExODc2
NjlDNDAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eS5jcHAgKi8sCiAJCQkJODY4MTYwRDIxODc2NjlD
NDAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eS5oICovLAogCQkJCUEzQUY5RDgyMjAzMjUzMjQwMDZD
QUQwNiAvKiBVc2VyQWdlbnQuaCAqLywKQEAgLTI4MDA4LDkgKzI3OTg4LDggQEAKIAkJCQlDRDMx
ODYyMzE5OUYxRTJBMDAzMEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RFNTk1OTcxQkYyNkUyMTAwQTFDQkU4IC8qIENETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVGQTkwNENBMTc4RTYxRjUw
MDRDOEEyRCAvKiBDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAotCQkJCTkxQjhGMEI1
MjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZUluZm9CYXNlLmggaW4gSGVhZGVycyAqLywK
LQkJCQlFMUE4RTU2NzE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUZFMzZGRDE1MTZDNzgyNjUwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0YS5o
IGluIEhlYWRlcnMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkxQjhGMEI1
MjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZUluZm9CYXNlLmggaW4gSGVhZGVycyAqLywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkUzNkZEMTUxNkM3ODI2NTAwRjg4N0Mx
IC8qIENoYW5nZVZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNjlERDE1MDVG
MDc2MDAxQjc0QUMgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEMzE1RkZGMTJCMDI2NzYwMEMxQTM1OSAvKiBDaGFubmVsTWVyZ2VyTm9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwMDIxMkIwMjY3NjAwQzFBMzU5IC8qIENoYW5uZWxTcGxpdHRlck5v
ZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzE1MDYsMTEgKzMxNDg1LDggQEAKIAkJCQlFNEFGQ0ZB
NTBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDA4
NkZFOTgwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZEMTc2MkUwMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTI2NzcyNjA1MUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUJDQkQyMUFCMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNTVCM0RERTEyNTFGMTJEMDAzRUYyNjkgLyogVVJMSW5wdXRUeXBlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk1QzZFNjU0MzFENUNFRkJGMDBGNzg2MkUgLyogVVJMUGFyc2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0MyODlERjFBQTBGRTVEMDA5QTlDRTMgLyogVVJMUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzN0EyMUQ1N0IzRkUwMEFCODVFQSAvKiBV
UkxVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyNzYzQkYxNjY4OUJGQjAwMkZDQUNCIC8q
IFVzZXJBY3Rpb25FbGVtZW50U2V0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKaW5kZXggZjNl
MzQ2YmVhN2UxOGJlZDJiODk5MDY3NGI2ZTIyZmM0YTAyNWNjMi4uNjJjZDU0YTg0YWI0YTVmMDJm
YWM3YjcyNWY2MGQ3ZThhZDEyYzJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xh
c3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBKU0RPTUdsb2JhbE9i
amVjdDsKIGNsYXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKLWNsYXNzIFVSTDsKIAogY2xhc3Mg
Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVk
TW9kdWxlU2NyaXB0TG9hZGVyPiwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRG
ZXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVy
LmgKaW5kZXggNTIyYjJmZmMwNDMyYzE4OTRhNDVjMDJiNjk1OWU5ZTYwYTg0MzU2ZS4uZDUzOTFj
Njk3ZDdjZjRmNmY1ZDQwNzljYTI3MmVmNzdlYTljYWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaApAQCAtMzMsNyArMzMsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERvY3VtZW50
OwotY2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRTY3JpcHRGZXRjaGVyIDogcHVibGljIEpTQzo6
U2NyaXB0RmV0Y2hlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDRhZjM3MWYwZTFhMGVkMTU4NDQ1OWIzNzhjZDUw
NTQxOTU4MGYwODUuLjIxZDFkMzQ3Y2ExZDA3ZTE3YTYyYmE3NmI1YWY3OWIxMjFlMjM1MjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBA
IC01ODksNyArNTg5LDcgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2UKIAogYm9vbCBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRS
ZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZh
U2NyaXB0VVJMKQogewotICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICBp
ZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSB8fCAhbV9mcmFtZS5kb2N1bWVudCgpLT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhtX2ZyYW1lLmRvY3VtZW50
KCktPnVybCgpLCBldmVudEhhbmRsZXJQb3NpdGlvbigpLm1fbGluZSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZjdjMDgyNGUwNmNjNzE0
NjljMDcwZDY4OGU0MjY4MjRjOWMzYzRmMC4uNmU5ZGRjYTA4ZGUwZjY4MThhMDc2NzViYWE2ZjRh
ZTRkZWVlYmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaApAQCAtNjAsNyArNjAsNiBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdDsKIGNs
YXNzIE1vZHVsZUZldGNoUGFyYW1ldGVyczsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIGNsYXNzIFdpZGdldDsKIHN0cnVjdCBFeGNl
cHRpb25EZXRhaWxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1v
ZHVsZUxvYWRlci5oCmluZGV4IDkxZmY5OWMxNTBjZmJjOGZiNmVhNzBmNWY1MDQyYzdhYTFlNDM0
NGIuLmE2MDY2ZjRjZTM5OTk5NmM2NTRkYjYwM2MwYTQ3MjRkZDA4NDAzNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCkBAIC0yNywxMCAr
MjcsMTAgQEAKIAogI2luY2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIgogI2luY2x1
ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgot
I2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVl
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggNTZlZTY5MGRlODQx
NTlhNTdjNDI4YTkwNzM5YjIwNTZmZmRkYmZkNi4uYjdkN2ViOTNjYmFjYjc0YTgxYzAwN2U1ZWYw
OTgxMjI1YmM5YTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNv
dXJjZUNvZGUuaApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0Lmgi
CiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlw
dFNvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NvdXJjZVByb3Zp
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQppbmRleCAzZjZjMDM5MTQ1YzFkZTQwMTdhOTI2MTQwZTAxMWYxZjE5ZjBiYmY2Li42NWU0NTM2
ZmE2ZWExYmQzZjkwZmViNmI5NTg5ODNkYThkN2EyMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDU1MSw3ICs0NTUx
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAoTmVlZHNJbXBsZW1lbnRh
dGlvbkNsYXNzKCRpbnRlcmZhY2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDdXN0b21IZWFwU25hcHNob3R9KSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8SmF2
YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPiIpOwogICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7Ci0gICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCJVUkwuaCIpOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHd0Zi9VUkwuaD4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6aGVhcFNu
YXBzaG90KEpTQ2VsbCogY2VsbCwgSGVhcFNuYXBzaG90QnVpbGRlciYgYnVpbGRlcilcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwp
O1xuIik7CkBAIC00NTYzLDcgKzQ1NjMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgIH0KIAogICAgIGlmICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbikgewotICAgICAgICAkaW1w
bEluY2x1ZGVzeyJVUkwuaCJ9ID0gMSBpZiAkaW5kZXhlZEdldHRlck9wZXJhdGlvbi0+dHlwZS0+
bmFtZSBlcSAiRE9NU3RyaW5nIjsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siPHd0Zi9VUkwuaD4i
fSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmlu
ZyI7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8g
b3IgJGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxpc3QiKSB7CiAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ik5v
ZGUuaCJ9ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKaW5kZXggMTE3OTU4NzUzNTFiZjJlMzYz
YzkxNGVkZDc0MTM1MWI3NDJhMjlhYy4uNmQ5YmQxN2I2ZDE1NGUwYmYwYTZmZjhiMDFiMDAxZDMz
NTZkZmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAogI2lu
Y2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKaW5kZXggNmQ3ZmFhMmI3N2RhZDZhNDcz
ZDA5Y2E2ZmYyOWIzODk2YzVjNGEyYi4uMDc5YzY2NjI5NGFlZWNhODI3NGFlMmJjZTVlZmU0ZWE3
N2IxNmI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTTWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTTWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpTRE9N
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExp
a2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9u
bHlNYXBMaWtlLmNwcAppbmRleCAwMDhkY2ViYTQyYzZkNGM2ZmIyYzlhOTEzZmZiNmQzM2ZkMGYx
YzgzLi45N2Q0ZjNhYjRmYTE2MDJhZTQ5MGFlODZjOTZlMGMzODQ3OGJmOTM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExp
a2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Jl
YWRPbmx5TWFwTGlrZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3Bl
cmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RB
Y3RpdmVET01PYmplY3QuY3BwCmluZGV4IDBmNzE1NGFjNDA0NTNmMzdhOWZiYjFlZDkyOGY2MmU1
NTMwMzFjOGQuLjZjYzIzYWQwMTMxZDExMmYyMmRhOGQ4YWRmMTIwNWJiYjFhZGIxNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3Rp
dmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmluZGV4IDY0MDZiZTk5OTAzZDE0YzFiMTcx
MDhiOGZhM2QxMjkyZTFmYzkwNzAuLjRhMDI3OTM2YjlkYjk5MzYwYmZkZDc4YTk3YjZiMzVkNjQ2
ODZjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXIuY3BwCmluZGV4IGFkYWQwNDliMTRjNGFhNWYyNWFlYWQ5NDYwYjFj
MmJmYTYxOTIyNGUuLjM0MmEwZGY4ZDFlMjgzNTI4NGJjMzZiZTYxZGJiYmYyN2JiMjhkMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKQEAgLTMwLDEy
ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKaW5k
ZXggNDYxYzRkOTZhNWYzOTBkYzhmMTkwMDk1Y2I3NDU2NGE3MTA3YTcyMi4uM2FkOGMyMzc5M2E3
YTY5YjgzMzRkZjViZDc1NDMyM2ZkOWFhYjcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcApA
QCAtMzcsMTIgKzM3LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDFkYjBhMzJkNTVl
NWNiN2MwZjk0Yzg1ZjJhZmM5Yzk4MmIyZWIwMGQuLjAwOGI1ZTg5NzY4Njk1ZjI1YzgzM2JhMzQ2
MDFkNGJlNTdkMGUyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmlu
ZGV4IGUxZjlmMTcwYTZjZDcyM2RiZTk1NTg0ZGNmNWZhZDA0MjQyY2VlODguLmE5NDU0ZTliYTZi
OTM4MDRhM2U5MDU5NGU5YTcwZTYwY2Q2YTFiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApA
QCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90
QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklU
LmNwcAppbmRleCA3NmM0MGZiMDQ1Nzk1MDNlYTViNTJjNDdlMDQ5NjBkYjIxOTk5ZjNhLi45NWQ3
NjcwNDczODhlMzhjMDEwMDQyOTVkOGNmMTM0NTZiZDQ0YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcApA
QCAtNDEsMTIgKzQxLDEyIEBACiAjaW5jbHVkZSAiSlNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNO
b2RlTGlzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRyYWNlcnMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAK
aW5kZXggODdiMzUzYzViNTk4NTg5ZDU5MDJiNzBlNjRmMzkwNzIxZmE5MmM5My4uMTI3ZmFhOTY3
ZDJhYzUzNmU0NmFiOTNkYmY1NmZkNTI1NGZlMTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
QnlTZXR0aW5nLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiSlNUZXN0U3ViT2Jq
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCA1NWRlYThlZWFiMDdmNzUw
NWYxYTZiZGZjYzI0MWI2NzFjYmRlYTU2Li40NWRjMTkyNzA0OWJlMjcyMDU1MmE5OGI3ZGYyMzVi
MGY1YTE1YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0zMCwx
MSArMzAsMTEgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5jcHAKaW5kZXggMzA4ZTM0ZjAwMWFjMmQ4YjM1M2U4MDUxZDhlYzUxYmJh
ZGQ2ZWUwYS4uNzFlM2JmMzc1NDQyOWVjN2E3Y2NjYTgzNTUxZDM5Mjg4YWMxZWVmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
eGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggMjM4YTQ4ZjdjNjVmMGQzY2I2ZjFlMDNmN2EyOWU5ZTgy
OWViY2JjZi4uZDMyYzA0Y2M1MGVlZGYyNjllZDgwMWQ2OTEyM2Y2YjUwNTQwNDcyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2Vw
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCAz
NDIzOGJjNWQyMTNlYzQ5OWZiZTVhMjU1YzU2MThmMzA2ODViMmRjLi5hYzJiZWJiMmQ5MzI0YTFh
MmMyYWRkNmExNjBkMzdjNzc1YzIzYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IDcxYjhiZGRmNjhkYWVjYzczZTIy
MWNlODNkNjYwNzNjNzM4YjRlYzguLmIyMGI4M2M3YmU5ZTViMzdiOWNjNTc1ODY2M2UxNzg1NTg1
ZTM5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAK
ICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBFTkFCTEUoVEVTVF9G
RUFUVVJFKQogI2luY2x1ZGUgIlRlc3RHbG9iYWxPYmplY3RCdWlsdGlucy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDY2MDc4YmQ2
Y2I1MTFlMWQyZjQ2ODg4MjU4MmE3ZjkxZmJjMDZiYzkuLjU3ODkyNTM3YmU4NzgzMjRhNWRkZThm
NmQxYzU5MmMxYjk2MmI3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkpTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAppbmRleCA2MjAzY2MwYjk4NzM5MjQ3N2ExZDliZjdiNTcwY2JlMzdjMTBlMzRmLi4zNTVh
ZGNkOTBhZWZjZjU5NWQwN2VkNTQ2ZTRjYWFiMjBiM2VlMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjcsMTMg
KzI3LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDNmZGM1NjA0MDM1MGUxMzIxZGIyNDY5
N2I3MjcyNTU3ZGQxYTkwOGQuLjc2OTY3M2FmYmI0ZTYyMDFkOTRjMzJhODRjZjI0OWVlNjAzODhm
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwCkBAIC0yOSwxMyArMjksMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90
QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
CmluZGV4IDQwY2Y3Yzk3NzIyYWU3ZWMyNTY5MzE2YjY0OTgzNTU0YWE5MTEwOWQuLjZlYTNmOTc0
NWIyYWI0ODI3NmM1MWFlM2RlYWE0YzFkNTgwOGEyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
CkBAIC0zNCwxMiArMzQsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXN0U3VwcGxlbWVu
dGFsLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgfHwgRU5BQkxFKENvbmRpdGlvbjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogI2luY2x1ZGUgIkpT
RE9NQ29udmVydFN0cmluZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmUuY3BwCmluZGV4IDU1ZmZkNjdhMTUwZmUzMmM1ZWRhMzVlMzJkMjQ2ZjY5
MzJlOGViYWEuLmNmZjMyZmYwZWIzYWRkYTc3ZmU5NDYzYTJhNGY5OWNlNjU4YjQ5NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcApAQCAt
MjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJs
ZS5jcHAKaW5kZXggOTc5YzBmOGNjNWJhZDg0NmYwOTYxY2JkYTI2NGUwY2I3NmMxODMwYy4uYWMx
ZThlN2Y5ZWY4MjkyNzhlMjQ1ODQ1YTY2MjMxYTVmY2JjYWIwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUu
Y3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0
aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDUwYWRhOGNhZjBlZTZkMDJiYWRhODAxYjBiNjk4YWVl
OTU5ZDkzNjAuLjAwZmFmOWYwNTczZmQwMDc1ZGU4ZGU1MTQ5ZThlYjUwODc0Yzk0ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTMwLDEyICsz
MCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCAz
MTg3ZDJkYWYzZDZlNzIxZTdlMDA4NWYyN2NjYjIyZjJiNDFkYWY5Li4zZmViZDFjZGVjNDBlY2Vm
YmEzMmJjZmM0MzYzMjQzNTE1Y2U2YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMjgsMTMgKzI4LDEz
IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBkMjcxOTRl
ODNlNmFjNzc2NTMxYTlkYjc3MzBmMDU3NGMyZGZhZTFkLi5lMDVkNjU1NDZiZmExMTM2YTA4NjQy
OTU4NDcyY2Y1MGNhMmQ1MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEzICsy
OCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggYjFmMzZkNzNl
MDM1YWZlNzhlZmU5MzJiMTRkZjkzY2VmZmJhNGRmMi4uZTAxNWIxNzhhNzY1MzhmODE5ZTUzYWZl
N2M1ZmJiYTc0MTg0Y2EzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTI5OGEx
NzYwYzA4MzUyNjZjNDJlYjY2NDg2NGJmNjQ0ODJjN2IzMC4uZjFhODRhOGJhZDlhNWQ2MDVhMTBl
NDlkOWM1YzQyNzNkOTkyODdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01OYW1lZENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNo
b3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDU3ZDY3YzIz
NGUyNmI0ZGRkMDk0N2U0MDJlZjg5YjQ1MDJiNmRkNDMuLjg2MmI0NTlmYmIyMWQ3ZDEwMTI1Njk1
ZjVhMGVhZWZlZDc1NGY2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcAppbmRleCBkMGZjZDJmMmI5MDMyNDk1YjRiNjU4YmU5YjMxYjdmZTU1YTA4ODZh
Li5jMTA1ZjE1ZGJhZjg1ZGJmM2ZlNDQzM2JhN2E4MDU1YTg0MmZhYTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4
LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDI1MTQxMGI1ZmFl
ZjcwMDRjMDExNjY2NmZjZThlMWU5MGEzMzc5YTkuLjY0MTM5YzhmNmIyMGJiMzRiNjIzNmQ2MjA0
MWM3ZTZkMDI5ZDhhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVy
YXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIu
Y3BwCmluZGV4IDI3NThjYTEwYTE0MTJjNDEzOWIzMjU4NGYzY2Y5MmI0MDNhYmIwMTQuLmQ2MTRi
Y2U0MjFmZTM0YzZmYmU2NzhiZDM3ZTUzMmQ1MmQyNzY0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtMjgsMTMgKzI4
LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aC5jcHAKaW5kZXggY2EyYmY2MTJhY2JjMmZkNGUwNDRhMTU5YTc2NDY3ZTVhYWNhYjliMi4u
ZWE0YzVjZDI3Zjg4NzlkMTc5ZWJiYjkxNTNkZjk5MzgxMGJlNzY0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllci5jcHAKaW5kZXggOTEyMGY0YmU3ZjIxYjc4ZDJjOWJmZjJkYjE3MjVhOTQ5NzRiZmNk
MS4uNmU0MGRlZjNkNDRiYTM3Zjc2NDAwOTkxMjg5YWZjMTBlMjliN2I1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
Tm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIg
QEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggM2JiN2QzYjdlMTJmODI5Yzg4YzM0NGJh
YmRiNDg2ODIyZjU3Y2JhMi4uZDM5MjRjYmE2MDg2Y2Y5MDg0NmJmMTEwODUwOTM0MjAxOGU0MzM2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNw
cApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGNiZDVkMzFhNjI2N2VhMWVl
MjVkZTA5MTRkNjE0NjhiZmNkOTI1YjUuLmM3YTNjNmE5ZDU5NWRmZTY3MmNjNzJhYmRkZTAzZWZl
NmM4MzI4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNu
YXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmlu
ZGV4IDlmY2JmNjk3YjYzOWFlMDNkZGMwZWJiMjA4M2NlNzk5ZjczODgzNTMuLjk4ZWMxM2RjMmU3
OWVmNWZkYTY0YmY3MmQ3NDNmMWJjZjM5ZTQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBiOGE5ZmFkZTg1YjRlOTg3YzcwNTJhMDI5YTlk
ZDhmY2RhNmQzMjUwLi5kZGRmZjhjY2Q3MjU5YjM3NDVhNjZjYzdkYmU2YWFmZmY4MDllNmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBA
IC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDE3MTQ3NzU1MGIw
YzM4NDU5NTYyZjZhNzVjMmU4M2Q4MzE1ZGI5MjQuLmI2NjFmNTNjZDI4NzA4ODgzYTExYzhjMjA1
ZTcwNDgwOTUzMTdmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUgIkpTRE9N
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyLmNwcAppbmRleCAxMDNmOTFjMWJhYTJhYTM5ZjFlMzk5YWFmZWNlNTgxMTkxMTE2
ZGVlLi5jMzVmZjg5NmM0OGQ4YmIyODc4MjNiZGYwYTQ2MDdhMWIzZGE4NzBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXIuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlv
bi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNu
YXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXgg
ZmMxMjJhMmUyYmJmODdiYTE0YjE2ZjcwNzk5ZTZjMjgwZjFlNGM0ZC4uOWYxMGQ2NGVlNWEwZDEz
MTliOGNjZjg5NGRhOTBjOGFjMThhMTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBA
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKaW5kZXggNDgwN2Iz
NjU1MzMxOGUwNDJhOWI2N2I0NDQwODExOWQ2ODRlZDFkZS4uYzYwZGNhYjYzNTk1OTdkYjRmODgw
ZWRmNDA0MGFjODM0MzVhODI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCkBAIC0zMCwxMiArMzAsMTIg
QEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCBkZDUxOTMwNzMzYjZjZGFhNDllMWY2ODU2YjZiNzFm
MWUxMTdjYWRlLi40MGI5ODFlMzQ0MTA1N2Q3Y2JiN2ZlZTE3MGVlNTNjYjkwMzAxNzdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAt
MzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCBkZTk2
ZDNiOGNiZjIwMTI4YjM5NjM1ZGIzNmUwNjg0ZTlmODY2N2M2Li4yYjJkZWQ0YzJjNjg4YWY0NDNm
NGE5N2MwZmQ0OWIxMjYwMDA2NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAK
ICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDNlN2Q3NzRlYjQyOTAwNmU5ZDQwZjY1NTIzZTVj
NGZkY2Y1ZDVlMDcuLjFiZDJmYTFlMDA1YzM0YzhiOGQ2ZTBmZTEzODhhOTgwYmRjNDE0MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC03Nyw3ICs3Nyw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlQcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KQEAgLTkxLDYg
KzkwLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwCmluZGV4IGVhZjA5MmFmM2YzYTcxZTlkM2M0Y2Y2MDExYmZkOTE5MmFiMjFi
NWEuLjFhZGI3MDIxMmY0NTFjY2U4NWIwOGNkYTAzNmZlNDc4MDg5YzM5NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTMyLDEyICszMiwxMiBA
QAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAppbmRleCAwNTgxNDNi
YTE0YmI0ZWIyMjQwOWM4ZDI4NDczNzUzZDg0ZjAzZTdmLi5iMDU1NjY4NTk2YmM2ZjI3YzgyYzcx
NmZkMjM0ZTVkODBhYThhNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgpAQCAtMzcsNiArMzYsNyBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRl
QnVpbHRpbnMuY3BwCmluZGV4IDBkYjc3NGFmMTI1ZjVkMTg1MGY3OWE2MTcxNDc1ZTEzN2FiN2Nk
NjEuLmMxYTYzNDMwYWMwZDhhYzEzYmJhNGM0YTc0Mzk0OTAxOGM3MTFkMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFBsdWdpbkludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAppbmRleCAyODM2MjQ3M2E3MDlmNTk2
NDZiYmViNjA0YmUzZGExMTFhMGE4Y2VkLi5iZWM1N2Q1NTE3ZDViMDljOGQyMGEwYWRlNDI5N2Nm
MGFlOGRmY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcApAQCAtMjcsMTIg
KzI3LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4IDhiMGY1MWVkMzE5NDFjODRhZWIyNGEz
NzNiZTliMTdjMDdmNzYzZDcuLjdhMjU4OTg2NzE0NjMwYTMwNTNiYzc0ODFhNWRlMGZlZjFiZDc5
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCkBAIC0z
NCwxMSArMzQsMTEgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemF0aW9uLmNwcAppbmRleCBlM2MxY2MyNTlhMWQyNzg3OWEyNjdkOWY0NDU4ZDVk
NDg5YTY4NzkyLi43OGQxYzQxYzQyOGMwMWUxZjc1ZjZlOTFhNjRhZWIzMDVjMGE1MjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAKICNpbmNsdWRl
ICJKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oIgogI2luY2x1ZGUgIkpT
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNo
b3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5k
aXJlY3RJbmhlcml0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCmluZGV4IDk2
MzY4ZjNlNmY3YmZmYThlMWE3ZWZiZmU3ZjUwNjNmNjQ2ZGJkYTcuLjEzM2VkYTAyZTY0MDE2M2Zj
OWJlNjU0MzQ4MjBmYjkyNWYwNGMwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcApAQCAtMjYsMTEgKzI2LDExIEBA
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5o
ZXJpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwCmluZGV4IDM3ZjY1NGRkZmNkN2MxNWI3OGViNjcxYzRh
YWM2Nzg1ZDU0MDBiYjcuLmFkNTMxYjIwYjc0YmM2ZDI1OTU2OTE4MmVhZWZjNTMxMWNmOGUwOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcApAQCAtMjksMTIg
KzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcAppbmRleCA1ZTg2OTEwYWI1MjA4OGUzMTc3OTM2NDlk
NGM2MDcyYWM0ZTcyYjk0Li5hMWFjMmQwMTBlNTFjNDgzN2MwZjBiNTQ2MjI4MDM0YWQwZGI4NGU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3Bw
CkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAzNDJl
ZDFhYTUwYjQ2ODY4YmZiMzkxNjZhZTBmODNkMDhjNjgwMmE4Li5kZjdkZmI4Zjk2MWQ5NGZlOGUy
NGYwMWQyNDFmYjI0ZjZhOTRmYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBACiAjaW5j
bHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyLmNwcAppbmRleCBmZjJjYWQyY2FmZmM5YWRmMWFmZmE1M2NkZjA5
NzdjZmM4M2U4NzE1Li41MjQyYmI4YmFhYzZmYzhjYTE0MDQwNjBmMTUwYmIxZGQ3YzAxNWRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUg
IkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uLmNwcAppbmRleCA4OWVkZmI0ZDU0ZmZjZTI5MzEyZTlkYzM3MGEyOTA0ZTg2Mzg5
NDhmLi43Y2FlMjQzOWVmNjI3YjZjMjY2MTczOTRiOTFjYzhiODA0ZmYwNTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKQEAg
LTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKaW5kZXggYjE2YjZmYjRiZDE0ZTI0ZDJk
YWUwZjQ0YmFiZWE2NGQ4NDcwMGY0NC4uNTBhNDZmNjE0Zjk4NDhiNzY5Mjg1ZTE2Mzg5MDczYzEy
OTE1N2ZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
dW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5j
cHAKaW5kZXggNWE1NGFjMTQzY2IyNzkzNjRlNjQ2YzMzMzRiMGNiYzE3YWU4MzQzNS4uMGEzM2Fm
Mzc4YTJiMTIxOWYyOTI4NGRjODllMTZkMzhiNzI0Nzc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKQEAgLTI4
LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25O
YW1lZFRvU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCmluZGV4IGYyNTE4
YTcxZWQ2ODYxYzVhOGNhZjZiZWIzNGM1ZmNmNmJkMzBkZWYuLjQ5MDQ5MTc0ZTAzNmY1ZjE4MDYy
NDRjM2YyZWJkMTllMTY5NjJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGUuY3BwCmluZGV4IDgxMjM3MmI0ZDRlZTcwYzQyM2EyODQzMzQ2NTFk
MTE1OGVhYWNlNTkuLmM5YzUyNjk4YjgyZDNmZmYyN2QyMzQ0ZmRkYjU1NDNkMDkyY2E0MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5j
cHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAppbmRleCAzOTE3
YjRkOTI5NmJhNTIzZGMxMzA3MDYxOWNmNGNlZDM4YTgzZmIxLi43NWVjMzhhZGI4ZmU4ODkzMDQ2
MDM1MzQ2YjU2NDQ2ZDdiMmI2MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1
ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCAxZTYxM2FhYjA2NTI0YWY1NTYw
NjMzZDg4MjI0OTdmZDFjMDFlMGEyLi4xODZhNDE2ZGE4NzNhNjRlNWRmNWM2NmViYmZkMDkwMWFj
ZTVkZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQAogI2luY2x1
ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IDcyNDA3MTU2ZWJkNjI2ODZhMTM0YjAxYTRl
NDBjZDUxMTZiNzU5ZGYuLmQwZWFiYTA5ZmQxMmVlYWY1YTEzN2EyYWI0ZGMyNDBiOTk3Yjc2OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25zQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291
cmNlTG9hZEluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTk0LDcgKzE5NCw3
IEBAIEJsb2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVu
dEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6TWFrZUhUVFBTOiB7CiAgICAgICAg
ICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwgdXJsLnByb3RvY29sSXMoIndzIikp
Ci0gICAgICAgICAgICAgICAgJiYgKCF1cmwucG9ydCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90
b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCisgICAgICAgICAgICAg
ICAgJiYgKCF1cmwucG9ydCgpIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5w
b3J0KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKICAgICAgICAgICAgICAgICB3aWxsTWFr
ZUhUVFBTID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNDQsNyAr
MjQ0LDcgQEAgQmxvY2tlZFN0YXR1cyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3ND
b250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZCgKICAgICAgICAgICAgIHdpbGxCbG9ja0Nv
b2tpZXMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGVudEV4
dGVuc2lvbnM6OkFjdGlvblR5cGU6Ok1ha2VIVFRQUzoKLSAgICAgICAgICAgIGlmICgodXJsLnBy
b3RvY29sSXMoImh0dHAiKSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSkgJiYgKCF1cmwucG9ydCgp
IHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90
b2NvbCgpKSkpCisgICAgICAgICAgICBpZiAoKHVybC5wcm90b2NvbElzKCJodHRwIikgfHwgdXJs
LnByb3RvY29sSXMoIndzIikpICYmICghdXJsLnBvcnQoKSB8fCBXVEY6OmlzRGVmYXVsdFBvcnRG
b3JQcm90b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCiAgICAgICAg
ICAgICAgICAgd2lsbE1ha2VIVFRQUyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxl
Y3RvcjoKQEAgLTI3NSwxMiArMjc1LDEyIEBAIHZvaWQgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1
ZXN0KGNvbnN0IEJsb2NrZWRTdGF0dXMmIHN0YXR1cywgUGFnZSogcGFnZSwgUmVzb3VyCiAgICAg
aWYgKHN0YXR1cy5tYWRlSFRUUFMpIHsKICAgICAgICAgY29uc3QgVVJMJiBvcmlnaW5hbFVSTCA9
IHJlcXVlc3QudXJsKCk7CiAgICAgICAgIEFTU0VSVChvcmlnaW5hbFVSTC5wcm90b2NvbElzKCJo
dHRwIikpOwotICAgICAgICBBU1NFUlQoIW9yaWdpbmFsVVJMLnBvcnQoKSB8fCBpc0RlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgpLnZhbHVlKCksIG9yaWdpbmFsVVJMLnBy
b3RvY29sKCkpKTsKKyAgICAgICAgQVNTRVJUKCFvcmlnaW5hbFVSTC5wb3J0KCkgfHwgV1RGOjpp
c0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wob3JpZ2luYWxVUkwucG9ydCgpLnZhbHVlKCksIG9yaWdp
bmFsVVJMLnByb3RvY29sKCkpKTsKIAogICAgICAgICBVUkwgbmV3VVJMID0gb3JpZ2luYWxVUkw7
CiAgICAgICAgIG5ld1VSTC5zZXRQcm90b2NvbCgiaHR0cHMiKTsKICAgICAgICAgaWYgKG9yaWdp
bmFsVVJMLnBvcnQoKSkKLSAgICAgICAgICAgIG5ld1VSTC5zZXRQb3J0KGRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2woImh0dHBzIikudmFsdWUoKSk7CisgICAgICAgICAgICBuZXdVUkwuc2V0UG9ydChX
VEY6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woImh0dHBzIikudmFsdWUoKSk7CiAgICAgICAgIHJl
cXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAppbmRl
eCBhMjk2ZmY5N2ZiY2ZlYzkwYjVhNjBjZmVjM2M4MGM0MGU4ZTQxODMzLi4zNGNmYWNhNTAxZmQz
YzcyYzk2NjdlOGY0YjcwZGUyNzdhYWM1YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApAQCAt
MzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50TG9hZGVy
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgUmVzb3VyY2VM
b2FkSW5mbzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCBlZjUwZTJkNGY2MzU0MDRmYTE0OGE0
ODUzMGQ3OTI0MTk3NWE2ZGJhLi43ZWRkM2UyMzFhN2MxYjIwYTBiMDFhNDY4ZjUxZDU5NGFmYjk4
NTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMjEsMTIgKzIxLDEyIEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJVUkxIYXNoLmgi
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKaW5kZXggODM5
YTU0NDNmOTE3OGEyMmUzMGI2ZjA4N2IyYzE5OTg2NGNmMzU4Yy4uNTBmNzJlOWJhYzY0YTY4MTg2
ZmY1M2ZiZjYxZjNiYjliMzMxYzIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMu
aApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgQ2Fj
aGVkUmVzb3VyY2U7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIEltbXV0YWJsZVN0eWxlUHJvcGVydGll
czsKLWNsYXNzIFVSTDsKIGNsYXNzIE11dGFibGVTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBTdHlsZWRFbGVtZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggOTgyNDIxNmM4MTM0NjliODk2OGRkNGMxMmEyZTFi
MDdlNDE2ZDc4ZC4uNDM4ZTVjODc3ZmI0M2Y0NGRlNTcyZTZlZGUzZDRjMjBjNDczOGIwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVWaWV3OwotY2xh
c3MgVVJMOwogY2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xhc3MgS2V5ZnJhbWVWYWx1ZTsKIGNsYXNz
IE1lZGlhUXVlcnlFdmFsdWF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaAppbmRleCBlOGI1YmZj
NTYyODdhNGQ5ODI4ZTg5M2Q4NTc5Y2JhOGI4ZWViY2MyLi5iYWI0ZTYyNzk0N2I2ZWU4NWQ4NDk5
NWMzZmQwMjM0MjE4ZDQzODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
aGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKQEAgLTMwLDcgKzMw
LDYgQEAgY2xhc3MgQ1NTSW1wb3J0UnVsZTsKIGNsYXNzIE1lZGlhTGlzdDsKIGNsYXNzIE5vZGU7
CiBjbGFzcyBTdHlsZVNoZWV0OwotY2xhc3MgVVJMOwogCiBjbGFzcyBTdHlsZVNoZWV0IDogcHVi
bGljIFJlZkNvdW50ZWQ8U3R5bGVTaGVldD4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2hlZXRDb250ZW50cy5oCmluZGV4IDJjNzRhZmEzNjU1ZGJkMzFiZDVhZTVjNDc3YjVjZGYx
MzFlMjRhZTEuLjU1MzcxNjIwM2VhOGE1ZjNmNTBkMmUxY2JiMmE0YzcyYzg2OGRhMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKQEAgLTIyLDEwICsyMiwxMCBAQAog
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIkNhY2hlUG9saWN5Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCmluZGV4IDEwODlkMjJkNDFiMThhZTgx
NTAyNmU0MGUwZTAyYmZiYWFjODJkMDcuLjc1OGI2ZWViM2FmYTgwYTg2NTYzY2M0ZWY0MmY5M2Ey
NDljNzBjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4
dC5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCiAjaW5j
bHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVVJMSGFz
aC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Nyw3ICs4Nyw3IEBAIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIHN0cmljdENTU1BhcnNlckNvbnRleHQoKTsKIHN0
cnVjdCBDU1NQYXJzZXJDb250ZXh0SGFzaCB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYga2V5KQogICAgIHsKLSAgICAgICAgYXV0byBoYXNoID0gVVJM
SGFzaDo6aGFzaChrZXkuYmFzZVVSTCk7CisgICAgICAgIGF1dG8gaGFzaCA9IFdURjo6VVJMSGFz
aDo6aGFzaChrZXkuYmFzZVVSTCk7CiAgICAgICAgIGlmICgha2V5LmNoYXJzZXQuaXNFbXB0eSgp
KQogICAgICAgICAgICAgaGFzaCBePSBTdHJpbmdIYXNoOjpoYXNoKGtleS5jaGFyc2V0KTsKICAg
ICAgICAgdW5zaWduZWQgYml0cyA9IGtleS5pc0hUTUxEb2N1bWVudCAgICAgICAgICAgICAgICAg
IDw8IDAKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dEhhc2ggewog
CiBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6
Q1NTUGFyc2VyQ29udGV4dD4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJD
b250ZXh0PiB7Ci0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6
OkNTU1BhcnNlckNvbnRleHQmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdC5iYXNlVVJMKSBX
ZWJDb3JlOjpVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgc3RhdGljIHZv
aWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQmIHNsb3Qp
IHsgbmV3IChOb3ROdWxsLCAmc2xvdC5iYXNlVVJMKSBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWUpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6
Q1NTUGFyc2VyQ29udGV4dCYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmJhc2VVUkwuaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKTsgfQogICAgIHN0YXRpYyBXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0
IGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0KFdlYkNvcmU6
OkhUTUxTdGFuZGFyZE1vZGUpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VySWRpb21zLmgKaW5kZXggODcxZDU5OTFiNTc2YmIzMGY0NjU4NzgxMTg3M2RhZjZmYTU4
YmNhNC4uMjU3NWMwZGYyYjg3YzU5MDVmN2RiYzJjZTZmY2MzNTRmYjdhOTdiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCkBAIC0zNSw4ICszNSw2IEBA
CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBVUkw7CiAgICAgCiAvLyBTcGFjZSBjaGFyYWN0ZXJzIGFzIGRlZmluZWQgYnkgdGhlIENT
UyBzcGVjaWZpY2F0aW9uLgogLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50YXgvI3do
aXRlc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggNmQzOWRhNDU1ZDQy
ZjMzODJkYzc0MjVkYWQ4MDA3YmZkNjcwN2I5ZS4uNjBlM2I3Y2U2OWJmOTgwODQ2NTExN2M4YTY0
Mzg2MzliMTc0NTEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTQzLDEw
ICs0MywxMCBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0YXRpY1Bhc3RlYm9hcmQuaCIKLSNpbmNsdWRlICJV
UkxQYXJzZXIuaCIKICNpbmNsdWRlICJXZWJDb250ZW50UmVhZGVyLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIERhdGFU
cmFuc2Zlcjo6c2V0RGF0YUZyb21JdGVtTGlzdChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgZGF0YSkKICAgICBpZiAodHlwZSA9PSAidGV4dC9odG1sIikKICAgICAgICAgc2FuaXRp
emVkRGF0YSA9IHNhbml0aXplTWFya3VwKGRhdGEpOwogICAgIGVsc2UgaWYgKHR5cGUgPT0gInRl
eHQvdXJpLWxpc3QiKSB7Ci0gICAgICAgIGF1dG8gdXJsID0gVVJMUGFyc2VyKGRhdGEpLnJlc3Vs
dCgpOworICAgICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIGRhdGEpOwogICAgICAgICBpZiAodXJs
LmlzVmFsaWQoKSkKICAgICAgICAgICAgIHNhbml0aXplZERhdGEgPSB1cmwuc3RyaW5nKCk7CiAg
ICAgfSBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L3BsYWluIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IGFiMzg3MGU4ZDM0OTZkZTU5YWI3MmZiMGJlODZhZmJlNjhmMmI0ZDUuLjE2NjE0NDA5
YTM4MTUzYWNlZGViYzU3MTI4YjZlNWUxMTg2ZWI4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtMzE2Nyw3ICszMTY3LDcgQEAgdm9pZCBEb2N1bWVudDo6bG9nRXhjZXB0aW9uVG9Db25z
b2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHMKIAogdm9pZCBE
b2N1bWVudDo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGNvbnN0IFVSTCYgbmV3VVJM
ID0gdXJsLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiB1cmw7CisgICAgY29uc3QgVVJMJiBuZXdV
UkwgPSB1cmwuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogdXJsOwogICAgIGlmIChuZXdV
UkwgPT0gbV91cmwpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzQ1Nyw3ICszNDU3LDcgQEAgdm9p
ZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdihjb25zdCBTdHJpbmcmIGVxdWl2LCBjb25zdCBT
dHJpbmcmIGNvbnRlbnQsIGJvb2wKICAgICAgICAgICAgICAgICBjb21wbGV0ZWRVUkwgPSBtX3Vy
bDsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjb21wbGV0ZWRVUkwgPSBjb21w
bGV0ZVVSTCh1cmxTdHJpbmcpOwotICAgICAgICAgICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlw
dChjb21wbGV0ZWRVUkwpKQorICAgICAgICAgICAgaWYgKCFXVEY6OnByb3RvY29sSXNKYXZhU2Ny
aXB0KGNvbXBsZXRlZFVSTCkpCiAgICAgICAgICAgICAgICAgZnJhbWUtPm5hdmlnYXRpb25TY2hl
ZHVsZXIoKS5zY2hlZHVsZVJlZGlyZWN0KCp0aGlzLCBkZWxheSwgY29tcGxldGVkVVJMKTsKICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gIlJlZnVz
ZWQgdG8gcmVmcmVzaCAiICsgbV91cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkg
KyAiIHRvIGEgamF2YXNjcmlwdDogVVJMIjsKQEAgLTUwMDYsNyArNTAwNiw3IEBAIFVSTCBEb2N1
bWVudDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFVSTCYgYmFzZVVSTE92
ZXJyaWRlKSBjb25zdAogICAgIC8vIFNlZSBhbHNvIFtDU1NdU3R5bGVTaGVldDo6Y29tcGxldGVV
UkwoY29uc3QgU3RyaW5nJikKICAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
VVJMKCk7Ci0gICAgY29uc3QgVVJMJiBiYXNlVVJMID0gKChiYXNlVVJMT3ZlcnJpZGUuaXNFbXB0
eSgpIHx8IGJhc2VVUkxPdmVycmlkZSA9PSBibGFua1VSTCgpKSAmJiBwYXJlbnREb2N1bWVudCgp
KSA/IHBhcmVudERvY3VtZW50KCktPmJhc2VVUkwoKSA6IGJhc2VVUkxPdmVycmlkZTsKKyAgICBj
b25zdCBVUkwmIGJhc2VVUkwgPSAoKGJhc2VVUkxPdmVycmlkZS5pc0VtcHR5KCkgfHwgYmFzZVVS
TE92ZXJyaWRlID09IFdURjo6YmxhbmtVUkwoKSkgJiYgcGFyZW50RG9jdW1lbnQoKSkgPyBwYXJl
bnREb2N1bWVudCgpLT5iYXNlVVJMKCkgOiBiYXNlVVJMT3ZlcnJpZGU7CiAgICAgaWYgKCFtX2Rl
Y29kZXIpCiAgICAgICAgIHJldHVybiBVUkwoYmFzZVVSTCwgdXJsKTsKICAgICByZXR1cm4gVVJM
KGJhc2VVUkwsIHVybCwgbV9kZWNvZGVyLT5lbmNvZGluZ0ZvclVSTFBhcnNpbmcoKSk7CkBAIC03
Mjg4LDkgKzcyODgsOSBAQCBEb2N1bWVudCYgRG9jdW1lbnQ6OmVuc3VyZVRlbXBsYXRlRG9jdW1l
bnQoKQogICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxEb2N1bWVudCY+KCpkb2N1bWVudCk7CiAK
ICAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0g
SFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgYmxhbmtVUkwoKSk7CisgICAgICAgIG1fdGVt
cGxhdGVEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFdURjo6YmxhbmtV
UkwoKSk7CiAgICAgZWxzZQotICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBEb2N1bWVudDo6
Y3JlYXRlKG51bGxwdHIsIGJsYW5rVVJMKCkpOworICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQg
PSBEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFdURjo6YmxhbmtVUkwoKSk7CiAKICAgICBtX3Rl
bXBsYXRlRG9jdW1lbnQtPnNldENvbnRleHREb2N1bWVudChjb250ZXh0RG9jdW1lbnQoKSk7CiAg
ICAgbV90ZW1wbGF0ZURvY3VtZW50LT5zZXRUZW1wbGF0ZURvY3VtZW50SG9zdCh0aGlzKTsgLy8g
YmFsYW5jZWQgaW4gZHRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMjk4YmE5ZTMxZmU1ZjE0
OTZkMGNhOTU0NmNmZjNkMmY1NTU1YTJmNS4uNGQwNmU2MDcwMGVkNzVjZGE1NjBlM2E1NTEzZDU1
MTA1NjcxYzhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTY4MSw3ICs2ODEsNyBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9
CiAgICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJik7Ci0gICAgY29uc3QgVVJMJiB1cmxGb3JCaW5k
aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBtX3Vy
bDsgfQorICAgIGNvbnN0IFVSTCYgdXJsRm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3Vy
bC5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiBtX3VybDsgfQogCiAgICAgLy8gVG8gdW5k
ZXJzdGFuZCBob3cgdGhlc2UgY29uY2VwdHMgcmVsYXRlIHRvIG9uZSBhbm90aGVyLCBwbGVhc2Ug
c2VlIHRoZQogICAgIC8vIGNvbW1lbnRzIHN1cnJvdW5kaW5nIHRoZWlyIGRlY2xhcmF0aW9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDg4MjA3ZTU0ZjgwZDc1YjE0Njg4MWE0MmRmMThjOTg1
Njk5OTI0ZTMuLjVhMTVhNjlkNmNkMDc3NDAwZWQ3MmY2YjY3YjdiYTRlMTViNmRkOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTE3MjAsNyArMTcyMCw3IEBAIGJvb2wgRWxlbWVudDo6aXNF
dmVudEhhbmRsZXJBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAK
IGJvb2wgRWxlbWVudDo6aXNKYXZhU2NyaXB0VVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYg
YXR0cmlidXRlKSBjb25zdAogewotICAgIHJldHVybiBpc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUp
ICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyhhdHRyaWJ1dGUudmFsdWUoKSkpOworICAgIHJldHVybiBpc1VSTEF0dHJpYnV0ZShhdHRyaWJ1
dGUpICYmIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKGF0dHJpYnV0ZS52YWx1ZSgpKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c3RyaXBT
Y3JpcHRpbmdBdHRyaWJ1dGVzKFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVWZWN0b3IpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCmluZGV4
IGNhNTMxZjAzNjRjNTA4ZmU5YjU4MGFlNmMwNzAyZDgzOGMxYTlhNmYuLjkyMjIzM2Q2OTkwZWFl
OTk3MGE3M2I2NjVjZjUyNzk4YjY1NWFkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBDU1NQYXJzZXJD
b250ZXh0IHBhcnNlckNvbnRleHRGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7
CiAgICAgYXV0byogc2hhZG93Um9vdCA9IGVsZW1lbnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKTsK
ICAgICAvLyBVc2VyIGFnZW50IHNoYWRvdyB0cmVlcyBjYW4ndCBjb250YWluIGRvY3VtZW50LXJl
bGF0aXZlIFVSTHMuIFVzZSBibGFuayBVUkwgYXMgYmFzZSBhbGxvd2luZyBjcm9zcy1kb2N1bWVu
dCBzaGFyaW5nLgotICAgIGF1dG8mIGJhc2VVUkwgPSBzaGFkb3dSb290ICYmIHNoYWRvd1Jvb3Qt
Pm1vZGUoKSA9PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50ID8gYmxhbmtVUkwoKSA6IGVsZW1l
bnQuZG9jdW1lbnQoKS5iYXNlVVJMKCk7CisgICAgYXV0byYgYmFzZVVSTCA9IHNoYWRvd1Jvb3Qg
JiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQgPyBXVEY6
OmJsYW5rVVJMKCkgOiBlbGVtZW50LmRvY3VtZW50KCkuYmFzZVVSTCgpOwogCiAgICAgQ1NTUGFy
c2VyQ29udGV4dCByZXN1bHQgPSBDU1NQYXJzZXJDb250ZXh0IHsgZWxlbWVudC5kb2N1bWVudCgp
LCBiYXNlVVJMLCBlbGVtZW50LmRvY3VtZW50KCkuY2hhcmFjdGVyU2V0V2l0aFVURjhGYWxsYmFj
aygpIH07CiAgICAgaWYgKHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRv
d1Jvb3RNb2RlOjpVc2VyQWdlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZGUwNTY5ZDVhZjUwZDk2
NDhjYzIwODNlMDgxZjgwMGMyODkzZGE2Yi4uMDdjMmY2NWQwZWI0NGQ1N2QwYjI5MTI0ZjI1OTIw
MjVjMjgwZTdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTM1MCw3ICsxMzUwLDcgQEAgRG9jdW1l
bnQqIE5vZGU6Om93bmVyRG9jdW1lbnQoKSBjb25zdAogY29uc3QgVVJMJiBOb2RlOjpiYXNlVVJJ
KCkgY29uc3QKIHsKICAgICBhdXRvJiB1cmwgPSBkb2N1bWVudCgpLmJhc2VVUkwoKTsKLSAgICBy
ZXR1cm4gdXJsLmlzTnVsbCgpID8gYmxhbmtVUkwoKSA6IHVybDsKKyAgICByZXR1cm4gdXJsLmlz
TnVsbCgpID8gV1RGOjpibGFua1VSTCgpIDogdXJsOwogfQogCiBib29sIE5vZGU6OmlzRXF1YWxO
b2RlKE5vZGUqIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNTJkYTZkMTFhMDEwZmY0M2Ez
Njk1NTVhZjc3OTk0NjFiY2EyYTU4Yi4uMTI0MzlkNzhkMzVjNGMyODIxYTcyNTRkMDMyMTQ1MDM1
ZmI0N2Y5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJSZW5k
ZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlN0eWxlVmFsaWRpdHkuaCIKICNpbmNsdWRl
ICJUcmVlU2NvcGUuaCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFz
aC5oPgogCiAvLyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBEb2N1bWVudC5oIGFsc28g
ZGVwZW5kcyBvbiBpdC4KICNkZWZpbmUgRFVNUF9OT0RFX1NUQVRJU1RJQ1MgMApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmgKaW5kZXggYTYxZGFkNDVlOWU0NDRmYTMyMmU1OTgyMmI0ZThlNmIx
ZThmNmRiNy4uNjI0NTRlNzkzY2IxMzM0ZjY0Y2NmM2JlMjA5NWQzM2NhOWE3MmM4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5oCkBAIC0zNSw3ICszNSw2IEBAIGNsYXNzIEVsZW1lbnQ7
CiBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdDsKIGNsYXNzIFBlbmRpbmdTY3JpcHQ7CiBjbGFz
cyBTY3JpcHRTb3VyY2VDb2RlOwotY2xhc3MgVVJMOwogCiBjbGFzcyBTY3JpcHRFbGVtZW50IHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmlu
ZGV4IDc4NTkwNDU4MjNiN2M2MzA1MGFlMDFmMWE2NDViYWQzMGIyZGM3OWIuLmY1ZmMwYmExZGI2
MjcwMDg4ZDQ3Zjc1NDc0NDNjYTAyZWJiNTFlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNjgsNyArNjgsNiBAQCBjbGFzcyBSZWplY3RlZFBy
b21pc2VUcmFja2VyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2VjdXJpdHlPcmln
aW47CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKLWNsYXNzIFVSTDsKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIGNsYXNzIFNlcnZpY2VXb3JrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlD
b250ZXh0LmgKaW5kZXggOWYyMTVmYmExYjUzZjI1NjE1Y2MwZGEzY2M3MzQyMDUwMTI1YWNhNS4u
YzBjYzhlMjExMDlkNjNiZjRhMzJlOWI1YTdjNGYxOTVhNDgwNzBhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TZWN1cml0eUNvbnRleHQuaApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luUG9saWN5OwogY2xh
c3MgQ29udGVudFNlY3VyaXR5UG9saWN5OwotY2xhc3MgVVJMOwogCiBlbnVtIFNhbmRib3hGbGFn
IHsKICAgICAvLyBTZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay8jYXR0ci1pZnJhbWUtc2FuZGJveCBmb3IgYSBsaXN0IG9mIHRoZSBzYW5kYm94IGZs
YWdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGFhNjFiMWViNmQwYWI4ZGZjNjZm
ZWQxODdhMmEyZGRkYjVhZTNmZTQuLmFkY2NmOTRlODg4YmMzOTRlYzFjOGRiOTQyOTBkMTM5YzQy
ZWQ4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTE1MjgsOSArMTUyOCw5IEBA
IHZvaWQgRWRpdG9yOjpjb3B5VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkCiAgICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJk
VVJMKTsKIH0KIAotUGFzdGVib2FyZFdyaXRlckRhdGE6OlVSTCBFZGl0b3I6OnBhc3RlYm9hcmRX
cml0ZXJVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCitQYXN0ZWJvYXJk
V3JpdGVyRGF0YTo6VVJMRGF0YSBFZGl0b3I6OnBhc3RlYm9hcmRXcml0ZXJVUkwoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgUGFzdGVib2FyZFdyaXRlckRhdGE6
OlVSTCByZXN1bHQ7CisgICAgUGFzdGVib2FyZFdyaXRlckRhdGE6OlVSTERhdGEgcmVzdWx0Owog
CiAgICAgcmVzdWx0LnVybCA9IHVybDsKICAgICByZXN1bHQudGl0bGUgPSB0aXRsZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCmluZGV4IDExYzExOTQzZDBiMWMyMGJlNTg0YTU4YWRiMDIwNmUwYjgz
Zjk0YTYuLjg3YjY4NGY5MDNhMzNmZGRiNjYzMDRjZjEzNDg2ZjljODQwNDViZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtMTc2LDcgKzE3Niw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29weVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsK
ICAgICB2b2lkIGNvcHlVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVi
b2FyZCYpOwotICAgIFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkwgcGFzdGVib2FyZFdyaXRlclVS
TChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBQYXN0ZWJvYXJkV3JpdGVy
RGF0YTo6VVJMRGF0YSBwYXN0ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY29weUltYWdlKGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRleCA2MjM2NGRmYWNlOGI2
MDdiYzU2NzdjOTQ4ZjU1MjVkYzIyYTY2MTk2Li4yM2Y2ZTVkMWVjNGI4NWZlZjBlODYxMDRlYzg5
NjAxZWI2ZDBmZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFj
Y3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTlNO
YW1lcy5oIgpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVu
ZFF1b3RlZFVSTEF0dHJpYnV0ZVZhbHVlKFN0cmluZ0J1aWxkZXImIHJlc3VsdCwgY29uCiAgICAg
Y29uc3QgU3RyaW5nIHJlc29sdmVkVVJMU3RyaW5nID0gcmVzb2x2ZVVSTElmTmVlZGVkKGVsZW1l
bnQsIGF0dHJpYnV0ZS52YWx1ZSgpKTsKICAgICBVQ2hhciBxdW90ZUNoYXIgPSAnIic7CiAgICAg
U3RyaW5nIHN0cmlwcGVkVVJMU3RyaW5nID0gcmVzb2x2ZWRVUkxTdHJpbmcuc3RyaXBXaGl0ZVNw
YWNlKCk7Ci0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwcGVkVVJMU3RyaW5nKSkg
eworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwcGVkVVJMU3RyaW5nKSkg
ewogICAgICAgICAvLyBtaW5pbWFsIGVzY2FwaW5nIGZvciBqYXZhc2NyaXB0IHVybHMKICAgICAg
ICAgaWYgKHN0cmlwcGVkVVJMU3RyaW5nLmNvbnRhaW5zKCciJykpIHsKICAgICAgICAgICAgIGlm
IChzdHJpcHBlZFVSTFN0cmluZy5jb250YWlucygnXCcnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmgKaW5kZXggM2EzNGEwOWE1ZmJjZDkyM2FhZTNjOGRi
ODhmNWE2NjhhNzZjOTE0MC4uMWQxMTJkYzY5ODM5ODBiZmQ2ZjZiOTdkZjc4MDBmYmVkNjMzODE3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmgKQEAg
LTQyLDcgKzQyLDYgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEhp
dFRlc3RSZXN1bHQ7CiBjbGFzcyBSYW5nZTsKLWNsYXNzIFVSTDsKIAogZW51bSBEYXRhRGV0ZWN0
b3JUeXBlcyB7CiAgICAgRGF0YURldGVjdG9yVHlwZU5vbmUgPSAwLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYWJlM2RiM2YzYTk2ZWQxNGI2NDBj
OWFmNDQ5MzNmMmQyMzExYjNhOC4uZTMxMjlhYjJmYTUxNTc0NTBjOGRhZGRjZDU1ZGQ3NjE1MTQx
NzVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBA
IC01MiwxMSArNTIsMTEgQEAKICNpbXBvcnQgIlNldHRpbmdzLmgiCiAjaW1wb3J0ICJUZXh0Lmgi
CiAjaW1wb3J0ICJXZWJDb250ZW50UmVhZGVyLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRy
YXMuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJp
YnV0ZWRTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVy
U1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTg0LDcg
KzE4NCw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJp
bmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkCiAKIFN0cmluZyBFZGl0b3I6OnVzZXJW
aXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjp1c2Vy
VmlzaWJsZVN0cmluZyh1cmwpOworICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVy
bCk7CiB9CiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChO
U0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggYWJmYWQ4ZTczODc4NWFj
MTk1Yzg1YWVhYmQ1YTk2MTkzMWE1ZTY5OC4uNDFlZTA1Y2E2OTdhMDM3ODBmNGU5NDkyNjgxMmZj
OGJlZjE2OGE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTU4LDcgKzU4LDYgQEAKICNpbXBvcnQgIlNldHRp
bmdzLmgiCiAjaW1wb3J0ICJTb2NrZXRQcm92aWRlci5oIgogI2ltcG9ydCAiVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW1wb3J0ICJVUkxQYXJzZXIuaCIKICNpbXBvcnQgIlVU
SVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRl
ZFN0cmluZy5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVy
LmgiCkBAIC02Niw2ICs2NSw3IEBACiAjaW1wb3J0ICJtYXJrdXAuaCIKICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNp
bmNsdWRlICJMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgiCkBAIC0zMTMsNyArMzEzLDcg
QEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBm
cmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKIAogICAgICAgICBhdXRvIG5hbWUgPSBpbWFnZS5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6YWx0QXR0cik7CiAgICAg
ICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG5hbWUgPSBVUkxQYXJzZXIgeyBy
ZXNvdXJjZVVSTFN0cmluZyB9LnJlc3VsdCgpLmxhc3RQYXRoQ29tcG9uZW50KCk7CisgICAgICAg
ICAgICBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VVUkxTdHJpbmcpLmxhc3RQYXRoQ29tcG9uZW50
KCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSBBdG9t
aWNTdHJpbmcoIm1lZGlhIik7CiAKQEAgLTMzMSw3ICszMzEsNyBAQCBzdGF0aWMgdm9pZCByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdt
ZW50JiBmcgogICAgICAgICBpZiAocmVzb3VyY2UgPT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbmFtZSA9IFVSTFBhcnNlciB7
IHJlc291cmNlVVJMU3RyaW5nIH0ucmVzdWx0KCkubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAg
ICAgYXV0byBuYW1lID0gVVJMKHsgfSwgcmVzb3VyY2VVUkxTdHJpbmcpLmxhc3RQYXRoQ29tcG9u
ZW50KCk7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSBB
dG9taWNTdHJpbmcoImZpbGUiKTsKIApAQCAtNTQzLDcgKzU0Myw3IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgU3RyaW5n
IHNhbml0aXplZE1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUsICpmcmFt
ZS5kb2N1bWVudCgpLCAqcmVzdWx0LCBtc29MaXN0UXVpcmtzRm9yTWFya3VwKCksIFsmXSAoY29u
c3QgU3RyaW5nJiB0eXBlKSB7CiAgICAgICAgIHJldHVybiBmcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5jYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSk7CiAgICAgfSk7Ci0gICAgZnJhZ21lbnQgPSBj
cmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIHNhbml0aXplZE1hcmt1
cCwgYmxhbmtVUkwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KTsKKyAgICBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgc2Fu
aXRpemVkTWFya3VwLCBXVEY6OmJsYW5rVVJMKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2lu
Q29udGVudCk7CiAKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggZjFjZDUzYzllMzM4ZDFh
YWFmNTMwYTkwODExOGZmZTA4OGIyODI0Zi4uNDYyMmY4NjZiZDIwNjExODVmMzI5NTVlZTdlNzli
ZTFkNjkyZjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAt
NTIsMTEgKzUyLDExIEBACiAjaW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW1w
b3J0ICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbXBvcnQgIldlYkNvbnRlbnRSZWFkZXIuaCIKLSNp
bXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3Ry
aW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKICNpbXBvcnQgPEFwcEtpdC9BcHBLaXQu
aD4KICNpbXBvcnQgPHBhbC9zeXN0ZW0vU291bmQuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VS
TEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI1Myw3ICsyNTMsNyBAQCBT
dHJpbmcgRWRpdG9yOjpwbGFpblRleHRGcm9tUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkUGxh
aW5UZXh0JiB0ZXh0KQogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0aGlzIGlzIDEwMCUg
Y29ycmVjdCBzaW5jZSB3ZSBrbm93IC1bTlNVUkwgVVJMV2l0aFN0cmluZzpdIGRvZXMgbm90IGhh
bmRsZQogICAgIC8vIGFsbCB0aGUgc2FtZSBjYXNlcyB3ZSBoYW5kbGUgd2VsbCBpbiB0aGUgVVJM
IGNvZGUgZm9yIGNyZWF0aW5nIGFuIE5TVVJMLgogICAgIGlmICh0ZXh0LmlzVVJMKQotICAgICAg
ICBzdHJpbmcgPSB1c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmdd
KTsKKyAgICAgICAgc3RyaW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgVVJMV2l0
aFN0cmluZzpzdHJpbmddKTsKIAogICAgIC8vIEZJWE1FOiBXVEYgc2hvdWxkIG9mZmVyIGEgbm9u
LU1hYy1zcGVjaWZpYyB3YXkgdG8gY29udmVydCBzdHJpbmcgdG8gcHJlY29tcG9zZWQgZm9ybSBz
byB3ZSBjYW4gZG8gaXQgZm9yIGFsbCBwbGF0Zm9ybXMuCiAgICAgcmV0dXJuIFsoTlNTdHJpbmcg
KilzdHJpbmcgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107CkBAIC0yNzIs
NyArMjcyLDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2Fy
ZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KICAgICBwYXN0ZWJvYXJkSW1hZ2Uu
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCA9IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KGltYWdlRWxl
bWVudCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC51cmwgPSB1cmw7CiAgICAgcGFzdGVib2Fy
ZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwotICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXNlclZp
c2libGVGb3JtID0gdXNlclZpc2libGVTdHJpbmcocGFzdGVib2FyZEltYWdlLnVybC51cmwpOwor
ICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXNlclZpc2libGVGb3JtID0gV1RGOjp1c2VyVmlzaWJs
ZVN0cmluZyhwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJl
c291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgIHBhc3RlYm9h
cmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5
cGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDYzYmY0NTg0ZmFhOTJhY2Zi
ZDkxNWQzZDJlMTQ2OGNkNDRlOWNlYzMuLjEyNGVhNWIxZGM0NDBkY2VkZmQ4NDQ5YTZjMzMwOGYz
NjRiY2JhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTc0LDExICs3NCwxMSBA
QAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgotI2luY2x1ZGUg
IlVSTC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rp
b24uaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRl
cyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBmcmFnbWVudCwgV1RGOjpGdW5jdAogICAgICAgICBm
b3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogZWxlbWVudC5hdHRyaWJ1dGVzSXRlcmF0
b3IoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgd29uJ3Qgd29yayBmb3Igc3Jjc2V0
LgogICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXR0cmlidXRlQ29udGFpbnNVUkwoYXR0cmlidXRl
KSAmJiAhYXR0cmlidXRlLnZhbHVlKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgVVJM
IHVybCA9IFVSTFBhcnNlciB7IGF0dHJpYnV0ZS52YWx1ZSgpIH0ucmVzdWx0KCk7CisgICAgICAg
ICAgICAgICAgVVJMIHVybCh7IH0sIGF0dHJpYnV0ZS52YWx1ZSgpKTsKICAgICAgICAgICAgICAg
ICBpZiAoc2hvdWxkUmVtb3ZlVVJMKHVybCkpCiAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZXNUb1JlbW92ZS5hcHBlbmQoeyBlbGVtZW50LCBhdHRyaWJ1dGUubmFtZSgpIH0pOwogICAgICAg
ICAgICAgfQpAQCAtMTAyOSw3ICsxMDI5LDcgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYKIAog
ICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCBmYWtlQm9keS5wdHIoKSwgcGFyc2VyQ29u
dGVudFBvbGljeSk7CiAgICAgcmVzdG9yZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQoZnJh
Z21lbnQpOwotICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBibGFua1VS
TCgpICYmIGJhc2VVUkwgIT0gZG9jdW1lbnQuYmFzZVVSTCgpKQorICAgIGlmICghYmFzZVVSTC5p
c0VtcHR5KCkgJiYgYmFzZVVSTCAhPSBXVEY6OmJsYW5rVVJMKCkgJiYgYmFzZVVSTCAhPSBkb2N1
bWVudC5iYXNlVVJMKCkpCiAgICAgICAgIGNvbXBsZXRlVVJMcyhmcmFnbWVudC5wdHIoKSwgYmFz
ZVVSTCk7CiAKICAgICByZXR1cm4gZnJhZ21lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRl
eCAwYjgzMTRiODE1NGQyMDg1ZWExMjg0YzYyNzM2Yjk1MDUyMjlmODJkLi4yMjQ4NmNlMmM4YWQ1
ZWNkNTc0YjI4MTRkMGZiY2NmZDI0Mjc4NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAg
LTQxLDcgKzQxLDYgQEAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxFbGVtZW50OwotY2xhc3MgVVJMOwogY2xhc3MgTm9kZTsK
IGNsYXNzIFBhZ2U7CiBjbGFzcyBRdWFsaWZpZWROYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IDYzYjFlMGU1NzQxMWQwNjMzYzQxOThmNGFlMDkz
NTNhMDM1NTEyN2UuLjczYTM2NTIyODc5OWMxNmI5YTk4OGQ5YTExODllMGNmOTM4MGZlOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTM0LDcgKzM0
LDYgQEAKIAogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtQ2xp
ZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3Rm
L0F1dG9kcmFpbmVkUG9vbC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtNDIsNiAr
NDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Fz
eW5jRmlsZVN0cmVhbS5oCmluZGV4IDRmMGU3YjI3NzcxN2ExOWNjMjcwZGYyZTk2M2FiZWVmOTNm
M2YzNTMuLjYyY2FmZmUyZDk4YWQxZDVkMTBmNGVkNjg4MTdkYTkwNDk0ZWExNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaApAQCAtMzgsNyArMzgsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVTdHJlYW1DbGllbnQ7CiBjbGFzcyBGaWxlU3Ry
ZWFtOwotY2xhc3MgVVJMOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBc3luY0ZpbGVTdHJlYW0g
ewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCAyMDEzOWM0YzEyYTE0OTNlMDUzOGRj
OWFiOTUxNjNiMTQ5OGNmOTYyLi45MGQ0NjU2OTk3MzAxMjU4ZWU4NjgyOGU5YWI2MDc4YWMzZjg5
YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAi
QmxvYlByb3BlcnR5QmFnLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAK
aW5kZXggYzZkZmVlNjU1MDE1M2UyYmY0ODhhMjdjYzVhZThlMjBlOThlMDQ2MS4uMTQ2YzBkYjA0
OWQ3MTU0OGQwZmMyZDg4OWU0NmJiNmY1NTY0OWFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JV
UkwuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJCbG9iVVJMLmgiCiAKLSNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAppbmRleCAzNTllYWFmN2YyYTI2NjdiOGIyMmY3
YTM1MDMyYTE1NzFkNjcyMGM0Li4zZDBhZTExYzEwMzllMzQ4NGUwZWRmNzAwOTc3N2JmMmViZjli
ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCmluZGV4IDU3NWYwZTc2ZDA5YTlk
M2U1N2YyNThhZWNiZWYzMWYzNjBhNDhkZjAuLmRhMmU4YmNhMzUyY2EzZmM3ZWM3Y2I0NTYyZDc5
YmJiNzI4YmYwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCkBAIC0zMyw4ICszMyw2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiBjbGFzcyBGaWxlIGZpbmFsIDogcHVi
bGljIEJsb2IgewogcHVibGljOgogICAgIHN0cnVjdCBQcm9wZXJ0eUJhZyA6IEJsb2JQcm9wZXJ0
eUJhZyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCmluZGV4IGYz
ZGM2YzQ3OGM5ODAwNGE3YjEzNDBjMzI5ZWQ2ODgwOGI3MjE4ZjAuLjFmNzc3OGU4ODllMzkzZDdm
Yjk2OTQ0M2NlOGViZTIxMjc0ZDRhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlckxvYWRlci5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJCbG9iUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IDQyNDZk
N2VlYTBiMGU3M2I1MDlmYmM4MGQyNDFlMWNmZjk2MjA5YzIuLmE5Yzc5ZmUyMjkyZjg5NWIzMWM2
MGY3NTY3ZmZkMDQ5M2ZlZGM4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBAIC0zNiw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEJsb2JQYXJ0OwotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiAKIGNsYXNzIFRocmVhZGFibGVCbG9iUmVnaXN0cnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5oCmluZGV4IGJmOTljYTQ2ODY0NTY1OWI0ZjgxMzU1MTQ4ZjJhOTkyZmVkOWIxOTQu
LmRiZGJhZjMxZjc1NTcwNTkzZDcyM2VjOGIyYmZiMTllNmM4YTIxNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZEZyYW1lLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgIlNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCmluZGV4IDZkY2M2NDcx
NmYwMmQ5NGJkYzJiMTdkZDlkMWYxODA3N2FkZTExYWQuLjhhZjk4ZTRjOTgyZjM5YjBhNjZiZDZm
NjE1MjU3ZTJjMDAxNjc0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlz
dG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAg
LTU0LDcgKzU0LDYgQEAgY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNz
IEltYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQ
cnVuaW5nUmVhc29uOwogCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCAoKm5vdGlmeUhpc3Rv
cnlJdGVtQ2hhbmdlZCkoSGlzdG9yeUl0ZW0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAppbmRleCBh
NzdiY2Q3MDcyM2YzY2Y5Y2ExMTY4MmU0NDZlZGZlODdkODEzOGY4Li4wYTA4YjU5NDY4NjU3MzJm
MjhkYTMwZmI3ZjYzY2E0ZDMxNGVhOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVVSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCkBAIC02Myw3
ICs2Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxET01VUkw+PiBET01VUkw6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgRE9NVVJMJiBiYXNlKQogCiBFeGNlcHRpb25PcjxSZWY8RE9NVVJM
Pj4gRE9NVVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgVVJMIGJhc2VVUkwg
eyBibGFua1VSTCgpIH07CisgICAgVVJMIGJhc2VVUkwgeyBXVEY6OmJsYW5rVVJMKCkgfTsKICAg
ICBVUkwgY29tcGxldGVVUkwgeyBiYXNlVVJMLCB1cmwgfTsKICAgICBpZiAoIWNvbXBsZXRlVVJM
LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVVJMLmgKaW5kZXggNTkwMjVjMmZiOTZmMDI5OWFkOTE3ZTYxN2IyOTExYzMxYWI5MWQz
NC4uZDMxM2Q3YTQ0NGQ4ZWE1NTM0ZjAwM2Y0NDUwZmRkYTBkNDYzNTIwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVVSTC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbk9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIlVSTFV0aWxzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCBlZWI2OTI3N2RjYjFjMTljOGVi
ZGZjYWI1YjhmYjY3YjA0MmE0MTQ1Li44Y2VkMDEyMjFhNWU1ZjhhYWFmYjMxM2JjN2IzOWQyZmJj
ZDdkOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwCkBAIC0zOCwxMCArMzgsMTAgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgot
I2luY2x1ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1ZGUgPHBhbC9GaWxlU2l6ZUZvcm1hdHRlci5o
PgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNp
bmNsdWRlICJVVElVdGlsaXRpZXMuaCIKQEAgLTg4LDcgKzg4LDcgQEAgY29uc3QgU3RyaW5nJiBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmdldEF0dGFjaG1lbnRJZGVudGlmaWVyKEhUTUxJbWFnZUVs
ZW1lbnQmIGkKIAogVVJMIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXJjaGl2ZVJlc291cmNlVVJM
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc291cmNlVVJMID0gVVJM
UGFyc2VyKCJhcHBsZXdlYmRhdGE6Ly9hdHRhY2htZW50LyJfcykucmVzdWx0KCk7CisgICAgYXV0
byByZXNvdXJjZVVSTCA9IFVSTCh7IH0sICJhcHBsZXdlYmRhdGE6Ly9hdHRhY2htZW50LyJfcyk7
CiAgICAgcmVzb3VyY2VVUkwuc2V0UGF0aChpZGVudGlmaWVyKTsKICAgICByZXR1cm4gcmVzb3Vy
Y2VVUkw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3Bw
CmluZGV4IDliOTlhMzQ3MzA5NzJkNGRkNzk5YzA4MWEwZjk4ZjYzNzdhYjVhZDAuLjMwNDhiNDkw
ZmE1M2YzZmQ0MTUxZTAyMTA0MzZjNjRmYTk0NzE0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCkBAIC0zNyw4ICszNyw4IEBACiAjaW5jbHVkZSAi
U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3Vi
ZnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmlzVVJMQWxsb3dl
ZChjb25zdCBVUkwmIGNvbXBsZXRlVVJMKSBjb25zdAogICAgIGlmIChjb21wbGV0ZVVSTC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2Ny
aXB0KGNvbXBsZXRlVVJMKSkgeworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KGNv
bXBsZXRlVVJMKSkgewogICAgICAgICBSZWZQdHI8RG9jdW1lbnQ+IGNvbnRlbnREb2MgPSB0aGlz
LT5jb250ZW50RG9jdW1lbnQoKTsKICAgICAgICAgaWYgKGNvbnRlbnREb2MgJiYgIVNjcmlwdENv
bnRyb2xsZXI6OmNhbkFjY2Vzc0Zyb21DdXJyZW50T3JpZ2luKGNvbnRlbnREb2MtPmZyYW1lKCkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEhUTUxG
cmFtZUVsZW1lbnRCYXNlOjpvcGVuVVJMKExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFj
a0ZvcndhcmRMaXN0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX1VSTC5pc0VtcHR5KCkp
Ci0gICAgICAgIG1fVVJMID0gYmxhbmtVUkwoKS5zdHJpbmcoKTsKKyAgICAgICAgbV9VUkwgPSBX
VEY6OmJsYW5rVVJMKCkuc3RyaW5nKCk7CiAKICAgICBSZWZQdHI8RnJhbWU+IHBhcmVudEZyYW1l
ID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghcGFyZW50RnJhbWUpCkBAIC0xNzksNyAr
MTc5LDcgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TG9jYXRpb24oY29uc3QgU3Ry
aW5nJiBzdHIpCiAKIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldExvY2F0aW9uKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBuZXdMb2NhdGlvbikKIHsKLSAgICBpZiAo
cHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKG5l
d0xvY2F0aW9uKSkpIHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobmV3TG9jYXRpb24pKSkgewogICAgICAgICBpZiAo
IUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIGNvbnRlbnRE
b2N1bWVudCgpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCmluZGV4IDczMzdjMjJhZDAwOWNhNzYzNzEyZGYwNDI4OGE4ZjJm
YTZiNGU3YjcuLmFjNTBkMzZlMjIyNmI0MTJjYWY1ODRiYTEwNTBkOWE5OWIwN2M3ZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNz
IEljb247CiBjbGFzcyBJbnB1dFR5cGU7CiBjbGFzcyBMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXI7CiBjbGFzcyBSYWRpb0J1dHRvbkdyb3VwczsKLWNsYXNzIFVSTDsKIAogc3RydWN0IERhdGVU
aW1lQ2hvb3NlclBhcmFtZXRlcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5o
CmluZGV4IDUxMGY0Y2ZiNjM2ZDlkYTExZTI1OGY5ZWUzYTQyZmVkNmVmZDM2Y2QuLjY4MjhmOTM0
M2I1NzI0MDk1ZGI2MDIxNzQyNjg3NjU0MDcwY2RmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuaApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIERPTVRva2VuTGlzdDsKIGNsYXNzIEhUTUxMaW5rRWxlbWVudDsKLWNsYXNzIFVSTDsKIHN0
cnVjdCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xh
c3MgRXZlbnRTZW5kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCBmNmMyNGIzYTE5NmVjMTMyNGE0YjJiOWVlNzZiMWUxOTllMDAyOGI0Li4wZDUyN2Y2ZTlm
MjI4YmUxYjM4ODFiNTBiYTVmMWYwZjBhZWIwMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTE3MCw4ICsxNzAsOCBAQAogCiBuYW1lc3BhY2UgV1RGIHsK
IHRlbXBsYXRlIDw+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6VVJMPiB7Ci0gICAgc3Rh
dGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3N0cnVjdCBMb2dB
cmd1bWVudDxVUkw+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFVSTCYgdXJs
KQogICAgIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZyA9IDUxMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IDMyMTNjNDRhZGJmMjhmMjcwYjUy
NjBkY2ExMzA1NWRlOGFhNDNkOWIuLjllNWMyNzc3N2Q2OTNlNGY2NGJlZjFiNzMxMjU4Mzk1YzRh
ZDIzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6aXNJ
bWFnZVR5cGUoKQogYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjphbGxvd2VkVG9Mb2FkRnJh
bWVVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgVVJMIGNvbXBsZXRlVVJMID0gZG9jdW1l
bnQoKS5jb21wbGV0ZVVSTCh1cmwpOwotICAgIGlmIChjb250ZW50RnJhbWUoKSAmJiBwcm90b2Nv
bElzSmF2YVNjcmlwdChjb21wbGV0ZVVSTCkgJiYgIWRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4o
KS5jYW5BY2Nlc3MoY29udGVudERvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgIGlm
IChjb250ZW50RnJhbWUoKSAmJiBXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJM
KSAmJiAhZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzcyhjb250ZW50RG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gZG9jdW1lbnQoKS5mcmFtZSgpLT5pc1VSTEFsbG93ZWQoY29tcGxldGVVUkwpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUJpdG1hcC5oCmluZGV4IDI3YTQ4OWQ0ZjY1N2I2ZTY5ZGM0ZTk5ZjlkNGRj
OWI2OWQ3YmNjNzcuLjEyMDBiODc4MTY0NmY2MWE2ZjcwYzQ2Yjk5YmNjOGVmY2Y2NWFkMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3MgSW50UmVj
dDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBQZW5kaW5nSW1hZ2VCaXRtYXA7CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgVVJMOwogc3RydWN0IEltYWdlQml0bWFwT3B0aW9u
czsKIAogY2xhc3MgSW1hZ2VCaXRtYXAgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMg
UmVmQ291bnRlZDxJbWFnZUJpdG1hcD4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJh
Z21lbnRVUklQYXJzZXIuaAppbmRleCA3Yzc3MzZjMzRlYmNmNjRkOTQ1NjAzZGNkODYzOTM5ZThk
YjM3ZTRjLi4xMGEyYTBkMGY1MjI0YjA1MGFkNWM3ZjRkMWQ2NTZhZmVlODNjN2U1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaApAQCAtMjcsMTQgKzI3
LDEyIEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNzIE1l
ZGlhRnJhZ21lbnRVUklQYXJzZXIgZmluYWwgewogcHVibGljOgogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKaW5kZXggY2YxODZjMGJhNDAwZTJhM2MyMzA0Y2M3
OWZmYWRiYThhZjNhYTM2MS4uNzNiNTQ3MzU3OGUzYjBiMzFlYWY5NWRhNDBjMjBhYzA5OWMwNzM2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC0yNiw3ICsy
Niw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2Vy
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVS
TFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oCmluZGV4IGUzMjY1NDVkY2NiNDliZmE2YzVhZmY5
MjNhMmM1ZTBjMGZhNzc1YTQuLmU2OWRlNGVkOGM4M2JiOGE4ZGM0ZDM2Njg2MjJjZDNmZGQ1Mzdl
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oCkBAIC0zMyw3ICszMyw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVVJMUmVnaXN0cnk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAKaW5kZXggNmNhMGFjMWEyMDEzY2Y2ZDVk
OGRjNWMwZWEwM2IyMTE3OTJmMTk1ZS4uNjNiYjNjYzI2MDFhMDQzZDE0OWM0NWEyOWVjMThkYTE0
MGI1YWQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcApAQCAtMzYsNyArMzYs
NyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVO
YW1lcy5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9VUkxSZWdpc3RyeS5oCmluZGV4IGJkNzcyY2U1ZjE3YTZiODdkYzJmNDYyNWI3MWJlMDExMDNj
Mzc3NDMuLjgyMjNiYmQwNzU5MGRkYWNjZTlmZDE2MDRlM2FjMGJjMDE1ZjY0YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1VSTFJlZ2lzdHJ5LmgKQEAgLTM0LDcgKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFVSTFJlZ2lz
dHJ5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKaW5kZXggMzBlODU5
MjRhNzg1MjBkNjU5MjA5MWFkMmQzM2MwNDIwY2ZlZGQ0My4uNGU3ZmJhZWZkZjBhNDE2Y2M2NTRh
YTczZDU5YjdiZTgwYjQxZDBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxT
ZWFyY2hQYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1z
LmNwcApAQCAtMjYsMTMgKzI2LDEzIEBACiAjaW5jbHVkZSAiVVJMU2VhcmNoUGFyYW1zLmgiCiAK
ICNpbmNsdWRlICJET01VUkwuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMUGFyc2VyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVVJMU2VhcmNoUGFyYW1z
OjpVUkxTZWFyY2hQYXJhbXMoY29uc3QgU3RyaW5nJiBpbml0LCBET01VUkwqIGFzc29jaWF0ZWRV
UkwpCiAgICAgOiBtX2Fzc29jaWF0ZWRVUkwoYXNzb2NpYXRlZFVSTCkKLSAgICAsIG1fcGFpcnMo
aW5pdC5zdGFydHNXaXRoKCc/JykgPyBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3Ry
aW5nVmlldyhpbml0KS5zdWJzdHJpbmcoMSkpIDogVVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRG
b3JtKGluaXQpKQorICAgICwgbV9wYWlycyhpbml0LnN0YXJ0c1dpdGgoJz8nKSA/IFdURjo6VVJM
UGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcoaW5pdCkuc3Vic3RyaW5nKDEp
KSA6IFdURjo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKGluaXQpKQogewogfQogCkBA
IC0xMzMsMjAgKzEzMywyMCBAQCB2b2lkIFVSTFNlYXJjaFBhcmFtczo6cmVtb3ZlKGNvbnN0IFN0
cmluZyYgbmFtZSkKIAogU3RyaW5nIFVSTFNlYXJjaFBhcmFtczo6dG9TdHJpbmcoKSBjb25zdAog
ewotICAgIHJldHVybiBVUkxQYXJzZXI6OnNlcmlhbGl6ZShtX3BhaXJzKTsKKyAgICByZXR1cm4g
V1RGOjpVUkxQYXJzZXI6OnNlcmlhbGl6ZShtX3BhaXJzKTsKIH0KIAogdm9pZCBVUkxTZWFyY2hQ
YXJhbXM6OnVwZGF0ZVVSTCgpCiB7CiAgICAgaWYgKG1fYXNzb2NpYXRlZFVSTCkKLSAgICAgICAg
bV9hc3NvY2lhdGVkVVJMLT5zZXRRdWVyeShVUkxQYXJzZXI6OnNlcmlhbGl6ZShtX3BhaXJzKSk7
CisgICAgICAgIG1fYXNzb2NpYXRlZFVSTC0+c2V0UXVlcnkoV1RGOjpVUkxQYXJzZXI6OnNlcmlh
bGl6ZShtX3BhaXJzKSk7CiB9CiAKIHZvaWQgVVJMU2VhcmNoUGFyYW1zOjp1cGRhdGVGcm9tQXNz
b2NpYXRlZFVSTCgpCiB7CiAgICAgQVNTRVJUKG1fYXNzb2NpYXRlZFVSTCk7CiAgICAgU3RyaW5n
IHNlYXJjaCA9IG1fYXNzb2NpYXRlZFVSTC0+c2VhcmNoKCk7Ci0gICAgbV9wYWlycyA9IHNlYXJj
aC5zdGFydHNXaXRoKCc/JykgPyBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5n
VmlldyhzZWFyY2gpLnN1YnN0cmluZygxKSkgOiBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZv
cm0oc2VhcmNoKTsKKyAgICBtX3BhaXJzID0gc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSA/IFdURjo6
VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcoc2VhcmNoKS5zdWJzdHJp
bmcoMSkpIDogV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oc2VhcmNoKTsKIH0K
IAogc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IFVSTFNl
YXJjaFBhcmFtczo6SXRlcmF0b3I6Om5leHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCmluZGV4IGEw
N2MwODE0ZjExZTE3MTE4NDUwM2U2YWE2YWFhZDZjMDQ3ZDQ3NWEuLjY1NmFiZmJkYTBiZGJjZTM5
M2I4OGNjNTIzNDRiOWNkNjE2ZTc2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VVJMVXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKQEAgLTE3NCw3
ICsxNzQsNyBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUp
CiAgICAgICAgICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBpdCBp
cyBzZXQgdG8gZW1wdHkgc3RyaW5nLgogICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZh
bHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IgKyAxKSArICcwJyk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90
b2NvbCgpKSkKKyAgICAgICAgICAgIGlmIChXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChw
b3J0LCB1cmwucHJvdG9jb2woKSkpCiAgICAgICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0
KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHBvcnRFbmQp
KTsKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFVSTFV0aWxzPFQ+OjpzZXRQb3J0KGNvbnN0IFN0
cmluZyYgdmFsdWUpCiAgICAgLy8gcmVxdWlyZXMgc2V0dGluZyB0aGUgcG9ydCB0byAiMCIgaWYg
aXQgaXMgc2V0IHRvIGVtcHR5IHN0cmluZy4KICAgICAvLyBGSVhNRTogaHR0cDovL3VybC5zcGVj
LndoYXR3Zy5vcmcvIGRvZXNuJ3QgYXBwZWFyIHRvIHJlcXVpcmUgdGhpczsgdGVzdCB3aGF0IGJy
b3dzZXJzIGRvCiAgICAgdW5zaWduZWQgcG9ydCA9IHZhbHVlLnRvVUludCgpOwotICAgIGlmIChp
c0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQorICAgIGlmIChX
VEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkpCiAgICAg
ICAgIHVybC5yZW1vdmVQb3J0KCk7CiAgICAgZWxzZQogICAgICAgICB1cmwuc2V0UG9ydChwb3J0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggMzM2MTQzOGYxZWYyMzM2OTlkMGVkYTM1MjFjMDU2ZGU2N2JhZWQy
NS4uNzA0YjQxZmZiZTcxNzk3ZWY4NjVkZDk3MmM5ZTUxNTkxYTZkZmZlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlQml0
bWFwLmgiCiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCBmZjQ3OWRlYTA1NDM5ODY5MDk1ODNkOTU0ZmM3ZjY2
MTkzNGVjZGFhLi43YWY0M2ZjODE0YzlkZDgxNGQxYzFjNDVmNGVkNmFjOGNhMTkwM2M2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50OwogY2xhc3MgSFRN
TEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBJbWFnZUJpdG1h
cDsKLWNsYXNzIFVSTDsKIGNsYXNzIFdlYkdMT2JqZWN0OwogCiBjbGFzcyBDYW52YXNSZW5kZXJp
bmdDb250ZXh0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IDY3NGRlYmM2OThkYjliNzAw
MmViNDA1MjMzNWI5ZTZkYjgxYjY0YTMuLjQyMzA5MjY4ZTliZGQwOTVhYzliZjE2YWQ5ZjczMzJh
MzcxY2Q1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpbmNsdWRlICJEZWNpbWFsLmgiCiAjaW5j
bHVkZSAiUXVhbGlmaWVkTmFtZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGxpbWl0
cz4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvZHRvYS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IDFjMmU0ZDlhNWU5MjdmZWM3NWIwOTYy
ZGRkZGI2NmRkZjhiNGZmYTEuLmQ2MzU3NDdjMWYwNjMyYWUzNDVkNjVkZDFhNWU1MzBmZWU3MGFk
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC0yNDQs
NyArMjQ0LDcgQEAgc3RhdGljIGJvb2wgaXNTZW1pY29sb25TZXBhcmF0ZWRBdHRyaWJ1dGUoY29u
c3QgSFRNTFRva2VuOjpBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKIHN0YXRpYyBib29sIHNlbWljb2xv
blNlcGFyYXRlZFZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMKFN0cmluZ1ZpZXcgc2VtaWNvbG9u
U2VwYXJhdGVkVmFsdWUpCiB7CiAgICAgZm9yIChhdXRvIHZhbHVlIDogc2VtaWNvbG9uU2VwYXJh
dGVkVmFsdWUuc3BsaXQoJzsnKSkgewotICAgICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQo
dmFsdWUpKQorICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCh2YWx1ZSkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDQw
LDkgKzQ0MCw5IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU2NyaXB0VG9rZW4oY29uc3QgRmls
dGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGZh
bHNlOwogICAgIGlmIChtX3dhc1NjcmlwdFRhZ0ZvdW5kSW5SZXF1ZXN0KSB7Ci0gICAgICAgIGRp
ZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBzcmNBdHRy
LCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUp
OwotICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVx
dWVzdCwgU1ZHTmFtZXM6OmhyZWZBdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9u
U3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOwotICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFz
ZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIGJsYW5r
VVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CisgICAg
ICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBz
cmNBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlr
ZUF0dHJpYnV0ZSk7CisgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJ
bmplY3RlZChyZXF1ZXN0LCBTVkdOYW1lczo6aHJlZkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJp
bmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxv
Y2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIFhMaW5rTmFtZXM6
OmhyZWZBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3Jj
TGlrZUF0dHJpYnV0ZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGRpZEJsb2NrU2NyaXB0OwpAQCAt
NDU1LDcgKzQ1NSw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyT2JqZWN0VG9rZW4oY29uc3Qg
RmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9
IGZhbHNlOwogICAgIGlmIChpc0NvbnRhaW5lZEluUmVxdWVzdChjYW5vbmljYWxpemVkU25pcHBl
dEZvclRhZ05hbWUocmVxdWVzdCkpKSB7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNl
QXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBkYXRhQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmco
KSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tT
Y3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGRhdGFBdHRyLCBXVEY6
OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7
CiAgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1
ZXN0LCB0eXBlQXR0cik7CiAgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRl
SWZJbmplY3RlZChyZXF1ZXN0LCBjbGFzc2lkQXR0cik7CiAgICAgfQpAQCAtNDc1LDcgKzQ3NSw3
IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyUGFyYW1Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJl
cXVlc3QmIHJlcXVlc3QpCiAgICAgaWYgKCFIVE1MUGFyYW1FbGVtZW50Ojppc1VSTFBhcmFtZXRl
cihTdHJpbmcobmFtZUF0dHJpYnV0ZS52YWx1ZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHZhbHVlQXR0ciwg
YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsK
KyAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHZhbHVlQXR0ciwg
V1RGOjpibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1
dGUpOwogfQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4oY29uc3QgRmlsdGVy
VG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNDg2LDcgKzQ4Niw3IEBAIGJvb2wgWFNTQXVkaXRv
cjo6ZmlsdGVyRW1iZWRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAg
ICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwogICAgIGlmIChpc0NvbnRhaW5lZEluUmVx
dWVzdChjYW5vbmljYWxpemVkU25pcHBldEZvclRhZ05hbWUocmVxdWVzdCkpKSB7CiAgICAgICAg
IGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBjb2Rl
QXR0ciwgU3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7Ci0gICAg
ICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBz
cmNBdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRy
aWJ1dGUpOworICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0
ZWQocmVxdWVzdCwgc3JjQXR0ciwgV1RGOjpibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9u
U3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOwogICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFz
ZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdHlwZUF0dHIpOwogICAgIH0KICAgICByZXR1
cm4gZGlkQmxvY2tTY3JpcHQ7CkBAIC01MzgsNyArNTM4LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpm
aWx0ZXJGb3JtVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogICAgIEFT
U0VSVChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBB
U1NFUlQoaGFzTmFtZShyZXF1ZXN0LnRva2VuLCBmb3JtVGFnKSk7CiAKLSAgICByZXR1cm4gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGFjdGlvbkF0dHIsIGJsYW5rVVJMKCkuc3Ry
aW5nKCkpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgYWN0
aW9uQXR0ciwgV1RGOjpibGFua1VSTCgpLnN0cmluZygpKTsKIH0KIAogYm9vbCBYU1NBdWRpdG9y
OjpmaWx0ZXJJbnB1dFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKQEAg
LTU0Niw3ICs1NDYsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlcklucHV0VG9rZW4oY29uc3Qg
RmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZShyZXF1ZXN0
LnRva2VuLCBpbnB1dFRhZykpOwogCi0gICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3Rl
ZChyZXF1ZXN0LCBmb3JtYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlv
blN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZklu
amVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCks
IFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRv
cjo6ZmlsdGVyQnV0dG9uVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQpA
QCAtNTU0LDcgKzU1NCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQnV0dG9uVG9rZW4oY29u
c3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogICAgIEFTU0VSVChyZXF1ZXN0LnRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZShyZXF1
ZXN0LnRva2VuLCBidXR0b25UYWcpKTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5q
ZWN0ZWQocmVxdWVzdCwgZm9ybWFjdGlvbkF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5j
YXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CisgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRl
SWZJbmplY3RlZChyZXF1ZXN0LCBmb3JtYWN0aW9uQXR0ciwgV1RGOjpibGFua1VSTCgpLnN0cmlu
ZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOwogfQogCiBib29sIFhTU0F1
ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlc0lmSW5qZWN0ZWQoY29uc3QgRmlsdGVyVG9r
ZW5SZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNTY3LDcgKzU2Nyw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6
ZXJhc2VEYW5nZXJvdXNBdHRyaWJ1dGVzSWZJbmplY3RlZChjb25zdCBGaWx0ZXJUb2tlblJlcXVl
c3QmIHJlCiAgICAgICAgIGJvb2wgaXNJbmxpbmVFdmVudEhhbmRsZXIgPSBpc05hbWVPZklubGlu
ZUV2ZW50SGFuZGxlcihhdHRyaWJ1dGUubmFtZSk7CiAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3Vs
ZCBiZSBiZXR0ZXIgaWYgd2UgZGlkbid0IGNyZWF0ZSBhIG5ldyBTdHJpbmcgZm9yIGV2ZXJ5IGF0
dHJpYnV0ZSBpbiB0aGUgZG9jdW1lbnQuCiAgICAgICAgIFN0cmluZyBzdHJpcHBlZFZhbHVlID0g
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKFN0cmluZyhhdHRyaWJ1dGUudmFsdWUp
KTsKLSAgICAgICAgYm9vbCB2YWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTCA9ICghaXNJbmxpbmVF
dmVudEhhbmRsZXIgJiYgcHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBwZWRWYWx1ZSkpIHx8IChp
c1NlbWljb2xvblNlcGFyYXRlZEF0dHJpYnV0ZShhdHRyaWJ1dGUpICYmIHNlbWljb2xvblNlcGFy
YXRlZFZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMKHN0cmlwcGVkVmFsdWUpKTsKKyAgICAgICAg
Ym9vbCB2YWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTCA9ICghaXNJbmxpbmVFdmVudEhhbmRsZXIg
JiYgV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcHBlZFZhbHVlKSkgfHwgKGlzU2VtaWNv
bG9uU2VwYXJhdGVkQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgc2VtaWNvbG9uU2VwYXJhdGVkVmFs
dWVDb250YWluc0phdmFTY3JpcHRVUkwoc3RyaXBwZWRWYWx1ZSkpOwogICAgICAgICBpZiAoIWlz
SW5saW5lRXZlbnRIYW5kbGVyICYmICF2YWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVSTCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIWlzQ29udGFpbmVkSW5SZXF1ZXN0KGNhbm9u
aWNhbGl6ZShzbmlwcGV0RnJvbUF0dHJpYnV0ZShyZXF1ZXN0LCBhdHRyaWJ1dGUpLCBUcnVuY2F0
aW9uU3R5bGU6OlNjcmlwdExpa2VBdHRyaWJ1dGUpKSkKQEAgLTczMiw3ICs3MzIsNyBAQCBib29s
IFhTU0F1ZGl0b3I6OmlzTGlrZWx5U2FmZVJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKQogICAg
IC8vIEdpdmUgZW1wdHkgVVJMcyBhbmQgYWJvdXQ6YmxhbmsgYSBwYXNzLiBNYWtpbmcgYSByZXNv
dXJjZVVSTCBmcm9tIGFuCiAgICAgLy8gZW1wdHkgc3RyaW5nIGJlbG93IHdpbGwgbGlrZWx5IGxh
dGVyIGZhaWwgdGhlICJubyBxdWVyeSBhcmdzIHRlc3QiIGFzCiAgICAgLy8gaXQgaW5oZXJpdHMg
dGhlIGRvY3VtZW50J3MgcXVlcnkgYXJncy4KLSAgICBpZiAodXJsLmlzRW1wdHkoKSB8fCB1cmwg
PT0gYmxhbmtVUkwoKS5zdHJpbmcoKSkKKyAgICBpZiAodXJsLmlzRW1wdHkoKSB8fCB1cmwgPT0g
V1RGOjpibGFua1VSTCgpLnN0cmluZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IElmIHRoZSByZXNvdXJjZSBpcyBsb2FkZWQgZnJvbSB0aGUgc2FtZSBob3N0IGFzIHRoZSBlbmNs
b3NpbmcgcGFnZSwgaXQncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
WFNTQXVkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCmlu
ZGV4IDM4ZWIwNTUzYzkzYTg5YjUzZmQzMjg5ZGU0ODg0ODkzYWUwZmUwYjkuLjZjZWI4NDM4Zjc0
YjY3Y2MxMGM5ZDNkZmJmZGUyYzZkOGViMmM0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxUb2tlbi5o
IgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgIlN1ZmZpeFRyZWUuaCIKICNpbmNsdWRlICJUZXh0RW5jb2Rp
bmcuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdh
dGUuaAppbmRleCA2N2EzMmVkOTMwZDdkOWRkNGRhYzQwODkyMjBiZGYzZjJhZDc2ZTg3Li42MDUx
NTliMmZhZmE0Y2Y4NzFhZTY1NmYxMGFmNDNmMDAxZTkzZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaApAQCAtMjYsNyArMjYsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcAppbmRleCA5ZjkzMjk0YjY0MjNkODYxYmVjNzgyYzkwYWM5Y2I1N2QzODJlZWFjLi44NzRm
Mzg0YzNhM2Y3YzE0Y2M0YWMzNmEyYTFmMDhhOGM1OWVjODYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtMzE4LDcgKzMx
OCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpraWxsVGV4dChjb25zdCBTdHJpbmcm
IHRleHQsIGJvb2wgc2hvdWxkUHJlcGVuZFRvS2lsCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgaWYgKFdlYkNvcmU6
OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFT
Y3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2xpZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmlu
ZGV4IDVkMmZiM2Q1NjJiNjBhYmY0NTBkMGZhMmE0ZjAzYWEwZWY5NGQ1ODIuLmI5YTQyZTZmYzA5
OGI2MzRiZDhiMzhhNzAyZTRkODI5NTc5NzY3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTg4LDcgKzg4LDYgQEAg
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xh
c3MgU2hhZG93Um9vdDsKIGNsYXNzIFRpbWVyQmFzZTsKLWNsYXNzIFVSTDsKICNpZiBFTkFCTEUo
V0VCR0wpCiBjbGFzcyBXZWJHTFByb2dyYW07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRl
eCAxMmE0ZTYyYmYxZmFmZDMwOGJjZTVlMDIzMjEyYmM1OTNiZjZkOThmLi4yMjMwOTkzZDIzMmRk
ZDU1NDcyZTZkOWM4MTg1MTAwZTg4NTA1OWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC02OCw3
ICs2OCw3IEBACiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJUZXh0
UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgot
I2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXZWJTb2Nr
ZXQuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
RnJhbWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDUyMzk0MjJhMDJiN2Y4YjU5MTZhNTUxNTllZWI5
ZDQ0MzAzMGM1ZDcuLjY1NzM1ZmUyMDk0NzYyNjlkYWYzYWQyY2I0ZmQ5ZjMyNjY0ZGFhY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuaApAQCAtNTgsNyArNTgsNiBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0
UmVzb3VyY2VEZWNvZGVyOwotY2xhc3MgVVJMOwogY2xhc3MgV2ViU29ja2V0OwogCiBzdHJ1Y3Qg
V2ViU29ja2V0RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBiNDA3NjM1YzQ3OTZiOTNiNmY3Zjc4NWNhMDA4
OTkyYzUwMmIwMGU0Li5lMWExZGE5OWYyNDQ4NzllZTMxMTc1YWMzMzE0MDE3MDI0NWExZTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmgKQEAgLTQ5LDcgKzQ5LDYgQEAgY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNz
IFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBV
Ukw7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXggNzI4
OGNmZmU0Y2YyZThmZWJlYjBjNjEwZDQ2YjdlY2FmYmM2NWY0ZC4uNWUwNDBjOTU0ZDRiNTE0YTE0
OTAzYzA3MjA3MGJlY2RlMDYwY2JkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApAQCAtMzQsNyArMzQsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYWdlOwotY2xhc3MgVVJMOwogCiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKaW5kZXggOGI2NDMxYWI0MjJmMmNiNmM5NDhkOGNmOGVi
YjU1MTE3MTE3ZGRiYS4uMWIwZjc2MGQyZWNlYmQ1YzI4ZWY1YzJlYzQyZWRhMTJmMDNmM2JlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRl
ci5oCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25NYW5pZmVzdC5oIgog
I2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDVmYTcwNWQ4YTg1ZmYxNTg2ODkwNjVmYzhiY2Q4
OGIzZmM5OGI0ZTQuLmI5YjlmMzc0OTc0M2VkNDhmNzM4YTNmZDhlNzJhNjlhNGQwMDllN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgQ29va2llOwog
c3RydWN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKaW5kZXggZDJiMDliZDVkYjU2
NzZjMDFhYmY4MjNkM2YwNzIyYTc3MGVhNTQwYi4uMmFmM2Q0YTFjNTIwOTEyOTNkZTFjNDgzYTJm
YzE3M2FjNjZlYTI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2wuaApAQCAtNDAsNyArNDAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGUuaAppbmRleCBkYzA3MTMwYTFiMTQ2NTNiZDFkZjViZWVlOTg4MDllM2I3
MmVmYmUzLi45NjVkZTZmOGEwN2JkYzc4YzA4ZTBmMWMyZTcyMTllMWVkYTQwNDczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlLmgKQEAgLTI3LDkgKzI3LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAy
YzMyMGFlNTFiYTQ5Zjc2MGVkYmMxNmEzYzhlZjA4YmMyOWI2OGExLi5mNmZmYjEzZmY1OTdlZTI0
MjExZjFkNDlmMTYwYmJiYjdiOGRkZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKQEAgLTYzNiw3ICs2MzYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwog
ICAgICAgICBzd2l0Y2ggKHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgIGNhc2UgU2hvdWxkQ29u
dGludWU6OkZvclN1c3BlbnNpb246CiAgICAgICAgICAgICAvLyBXZSBoYW5kbGUgc3VzcGVuc2lv
biBieSBuYXZpZ2F0aW5nIGZvcndhcmQgdG8gYWJvdXQ6YmxhbmssIHdoaWNoIGxlYXZlcyB1cyBz
ZXR1cCB0byBuYXZpZ2F0ZSBiYWNrIHRvIHJlc3VtZS4KLSAgICAgICAgICAgIHJlcXVlc3QgPSB7
IGJsYW5rVVJMKCkgfTsKKyAgICAgICAgICAgIHJlcXVlc3QgPSB7IFdURjo6YmxhbmtVUkwoKSB9
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU2hvdWxkQ29udGludWU6Ok5vOgog
ICAgICAgICAgICAgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKQEAgLTE2ODIsNyArMTY4
Miw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fcmVxdWVzdC51cmwoKS5pc0VtcHR5KCkgJiYgIWZyYW1l
TG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkg
ewotICAgICAgICBtX3JlcXVlc3Quc2V0VVJMKGJsYW5rVVJMKCkpOworICAgICAgICBtX3JlcXVl
c3Quc2V0VVJMKFdURjo6YmxhbmtVUkwoKSk7CiAgICAgICAgIGlmIChpc0xvYWRpbmdNYWluUmVz
b3VyY2UoKSkKICAgICAgICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmRpc3BhdGNoRGlk
Q2hhbmdlUHJvdmlzaW9uYWxVUkwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCmluZGV4IGVjM2FjYWJiY2UxZTQ3YmE2N2E0MzI2ZGZiYzYyNTY0MGNlMTYyZjIu
LmE2MmZmNDQyOGI0YzAwYzc0NDJjMTczN2RiZjBmYzA4MTRiMGVjNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAg
IFN0cmluZyBjbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIHVybEZvckhpc3RvcnkoKTsgfQogICAgIHZvaWQgc2V0Q2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5KGNvbnN0IFN0cmluZyYgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KSB7
IG1fY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gY2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5OyB9CiAgICAgCi0gICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0U291cmNlRm9ySGlz
dG9yeSgpIGNvbnN0IHsgcmV0dXJuICh1cmxGb3JIaXN0b3J5KCkgPT0gdXJsKCkgfHwgdXJsKCkg
PT0gYmxhbmtVUkwoKSkgPyBTdHJpbmcoKSA6IHVybEZvckhpc3RvcnkoKS5zdHJpbmcoKTsgfSAv
LyBudWxsIGlmIG5vIHNlcnZlciByZWRpcmVjdCBvY2N1cnJlZC4KKyAgICBTdHJpbmcgc2VydmVy
UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gKHVybEZvckhpc3Rvcnko
KSA9PSB1cmwoKSB8fCB1cmwoKSA9PSBXVEY6OmJsYW5rVVJMKCkpID8gU3RyaW5nKCkgOiB1cmxG
b3JIaXN0b3J5KCkuc3RyaW5nKCk7IH0gLy8gbnVsbCBpZiBubyBzZXJ2ZXIgcmVkaXJlY3Qgb2Nj
dXJyZWQuCiAgICAgU3RyaW5nIHNlcnZlclJlZGlyZWN0RGVzdGluYXRpb25Gb3JIaXN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gdXJsKCk7IH0KIAogICAgIGJvb2wgZGlkQ3JlYXRlR2xvYmFsSGlzdG9y
eUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggMzg1ZmI2NDA3YmE0MTli
YmI4NjY3Y2JjNTA5OTdjMWIwZDRiZjIxNC4uMzA0OGM1OWU1NzUxMzdkODVlMGE5OWNlOTJjNTBl
M2RlN2JhZjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3Jp
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTI4
LDcgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKaW5kZXggNGNk
ZjQ4Yjc3YzZkMDVlMmU2NTU3OWE0MzIxNDgzMDhkODQ4ZWJjOS4uZjlhY2NmMTcyMTViYjA2YTZm
ODk2NmNmMDIxNzk5YmVkNThlM2QxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Zvcm1TdWJtaXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggYjBkMjhhOTE3ZTA0N2RlNmY2NTIyMGFjN2Q0YTUwMGUyZWIxMmFjMy4u
YzE0NTgwZmEyNTNlOWU0ZTI4MWE3ZTk5Mzk4YjcxM2IzM2I2NmEzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMTksMTMgKzExOSwxMyBAQAogI2luY2x1ZGUgIlN1
YmZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVXNl
ckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIK
ICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2Vy
LmgiCiAjaW5jbHVkZSA8ZG9tL1NjcmlwdERpc2FsbG93ZWRTY29wZS5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1p
dEZvcm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3Npb24pCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoc3VibWlzc2lvbi0+YWN0aW9u
KCkpKSB7CisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoc3VibWlzc2lvbi0+YWN0
aW9uKCkpKSB7CiAgICAgICAgIGlmICghbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKS0+YWxsb3dGb3JtQWN0aW9uKFVSTChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1B
Y3Rpb24gPSB0cnVlOwpAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2Vp
dmVkRmlyc3REYXRhKCkKICAgICBpZiAoIXBhcnNlSFRUUFJlZnJlc2goZG9jdW1lbnRMb2FkZXIu
cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJlZnJlc2gpLCBkZWxh
eSwgdXJsU3RyaW5nKSkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gY29tcGxldGVkVVJMID0g
dXJsU3RyaW5nLmlzRW1wdHkoKSA/IGRvY3VtZW50LnVybCgpIDogZG9jdW1lbnQuY29tcGxldGVV
UkwodXJsU3RyaW5nKTsKLSAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlZFVS
TCkpCisgICAgaWYgKCFXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlZFVSTCkpCiAg
ICAgICAgIG1fZnJhbWUubmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVkaXJlY3QoZG9j
dW1lbnQsIGRlbGF5LCBjb21wbGV0ZWRVUkwpOwogICAgIGVsc2UgewogICAgICAgICBhdXRvIG1l
c3NhZ2UgPSAiUmVmdXNlZCB0byByZWZyZXNoICIgKyBkb2N1bWVudC51cmwoKS5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICIgdG8gYSBqYXZhc2NyaXB0OiBVUkwiOwpAQCAtMTU1
OCw3ICsxNTU4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcihE
b2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHQKIAogICAgIC8vIE9ubHkgdGhl
IGZpcnN0IGlmcmFtZSBuYXZpZ2F0aW9uIG9yIHRoZSBmaXJzdCBpZnJhbWUgbmF2aWdhdGlvbiBh
ZnRlciBhYm91dDpibGFuayBzaG91bGQgYmUgcmVwb3J0ZWQuCiAgICAgLy8gaHR0cHM6Ly93d3cu
dzMub3JnL1RSL3Jlc291cmNlLXRpbWluZy0yLyNyZXNvdXJjZXMtaW5jbHVkZWQtaW4tdGhlLXBl
cmZvcm1hbmNlcmVzb3VyY2V0aW1pbmctaW50ZXJmYWNlCi0gICAgaWYgKG1fc2hvdWxkUmVwb3J0
UmVzb3VyY2VUaW1pbmdUb1BhcmVudEZyYW1lICYmICFtX3ByZXZpb3VzVVJMLmlzTnVsbCgpICYm
IG1fcHJldmlvdXNVUkwgIT0gYmxhbmtVUkwoKSkKKyAgICBpZiAobV9zaG91bGRSZXBvcnRSZXNv
dXJjZVRpbWluZ1RvUGFyZW50RnJhbWUgJiYgIW1fcHJldmlvdXNVUkwuaXNOdWxsKCkgJiYgbV9w
cmV2aW91c1VSTCAhPSBXVEY6OmJsYW5rVVJMKCkpCiAgICAgICAgIG1fc2hvdWxkUmVwb3J0UmVz
b3VyY2VUaW1pbmdUb1BhcmVudEZyYW1lID0gZmFsc2U7CiAKICAgICAvLyBMb2cgbWFpbiBmcmFt
ZSBuYXZpZ2F0aW9uIHR5cGVzLgpAQCAtMzM3NSw3ICszMzc1LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWUKICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCB1c2luZyBhIEJhY2svRm9yd2Fy
ZCBsb2FkIHRvIGxvYWQgYWJvdXQgYmxhbmsgd291bGQgY2F1c2UgdGhlIGN1cnJlbnQgSGlzdG9y
eUl0ZW0ncyB1cmwgdG8gYmUKICAgICAgICAgICAgIC8vIG92ZXJ3cml0dGVuIHdpdGggJ2Fib3V0
OmJsYW5rJywgd2hpY2ggd2UgZG8gbm90IHdhbnQuCiAgICAgICAgICAgICBtX2xvYWRUeXBlID0g
RnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ7Ci0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXItPndpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0KHsgYmxh
bmtVUkwoKSB9KTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+d2ls
bENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBXVEY6OmJsYW5rVVJMKCkg
fSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0
YXJ0TG9hZGluZ01haW5SZXNvdXJjZShzaG91bGRDb250aW51ZSk7CkBAIC0zOTI3LDcgKzM5Mjcs
NyBAQCBSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSYgb3BlbmVyRnJhbWUsIEZyYW1l
JiBsb29rdXBGcmFtZSwgRnJhbWVMb2FkUmVxdQogICAgIGNyZWF0ZWQgPSBmYWxzZTsKIAogICAg
IC8vIEZJWE1FOiBQcm92aWRlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIHdpdGggcmVzcGVjdCB0
byB0aGUgb3BlbmVyJ3MgZG9jdW1lbnQuCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpICYmICFvcGVuZXJGcmFtZS5kb2N1bWVudCgp
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhvcGVuZXJGcmFt
ZS5kb2N1bWVudCgpLT51cmwoKSwgeyB9KSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNj
cmlwdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKSAmJiAhb3BlbmVyRnJhbWUuZG9j
dW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SmF2YVNjcmlwdFVSTHMob3Bl
bmVyRnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIHsgfSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgaWYgKCFyZXF1ZXN0LmZyYW1lTmFtZSgpLmlzRW1wdHkoKSAmJiAhZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShyZXF1ZXN0LmZyYW1lTmFtZSgpLCAiX2JsYW5rIikpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOTljMzgyYTY2ODYyNDE5ZDYy
YTQzYTgxYjZkY2Q0MGI2YzNkYTAyMS4uNjc5ZDc3M2MxZDllM2Y0NDk1YWIyZGNlMDYzM2VhNDI3
MDAyNDk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTEwMCw3ICsxMDAsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKLWNsYXNz
IFVSTDsKIGNsYXNzIFdpZGdldDsKIAogZW51bSBjbGFzcyBMb2NrQmFja0ZvcndhcmRMaXN0IDog
Ym9vbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4
IDc2Yzk0YjI0ZmViOGJlYTJmMTBkOGQ4NmIwNDdlMDgwZTJlYTU1NGUuLjVmMzhjZGE2OTEzN2U3
ZTFiZWE2NjU4Nzk0YTAxMjllMGU5MmRmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgSGlzdG9yeUNvbnRy
b2xsZXI6OmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCgpIGNvbnN0CiAgICAgLy8gICJJZiB0
aGUgYnJvd3NpbmcgY29udGV4dCdzIHNlc3Npb24gaGlzdG9yeSBjb250YWlucyBvbmx5IG9uZSBE
b2N1bWVudCwKICAgICAvLyAgIGFuZCB0aGF0IHdhcyB0aGUgYWJvdXQ6YmxhbmsgRG9jdW1lbnQg
Y3JlYXRlZCB3aGVuIHRoZSBicm93c2luZyBjb250ZXh0CiAgICAgLy8gICB3YXMgY3JlYXRlZCwg
dGhlbiB0aGUgbmF2aWdhdGlvbiBtdXN0IGJlIGRvbmUgd2l0aCByZXBsYWNlbWVudCBlbmFibGVk
LiIKLSAgICByZXR1cm4gbV9jdXJyZW50SXRlbSAmJiAhbV9wcmV2aW91c0l0ZW0gJiYgZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShtX2N1cnJlbnRJdGVtLT51cmxTdHJpbmcoKSwgYmxhbmtVUkwoKSk7
CisgICAgcmV0dXJuIG1fY3VycmVudEl0ZW0gJiYgIW1fcHJldmlvdXNJdGVtICYmIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UobV9jdXJyZW50SXRlbS0+dXJsU3RyaW5nKCksIFdURjo6YmxhbmtVUkwo
KSk7CiB9CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmNsZWFyUHJldmlvdXNJdGVtKCkKQEAg
LTY1Miw5ICs2NTIsOSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbShI
aXN0b3J5SXRlbSYgaXRlbSkKICAgICAvLyBMYXRlciB3ZSBtYXkgd2FudCB0byBsZWFybiB0byBs
aXZlIHdpdGggbmlsIGZvciBVUkwuCiAgICAgLy8gU2VlIGJ1ZyAzMzY4MjM2IGFuZCByZWxhdGVk
IGJ1Z3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgaWYgKHVybC5pc0VtcHR5KCkpIAotICAg
ICAgICB1cmwgPSBibGFua1VSTCgpOworICAgICAgICB1cmwgPSBXVEY6OmJsYW5rVVJMKCk7CiAg
ICAgaWYgKG9yaWdpbmFsVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgb3JpZ2luYWxVUkwgPSBibGFu
a1VSTCgpOworICAgICAgICBvcmlnaW5hbFVSTCA9IFdURjo6YmxhbmtVUkwoKTsKICAgICAKICAg
ICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRpdGxlID0gZG9jdW1lbnRMb2FkZXItPnRpdGxlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCmluZGV4IDAxZDFlZmMzMTVhNWIwMmQwNjk5ZTlh
YzQ1ZGZkMTM2ODc4ZjRhYjEuLjU0ZDcyMjMxMGQ4ZGZmOTIxZjFlOWRlMDU0NWJkOWUxYzYyMDk0
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaApAQCAtNDEsNyArNDEsNiBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFVSTDsKIGNsYXNzIExp
bmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ7CiAKIHN0cnVjdCBMaW5rUmVsQXR0cmlidXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRUaW1pbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Mb2FkVGltaW5nLmgKaW5kZXggNzNmOWVmOTRhZmQ2MjU1ZDVhM2Y1NzQ1ODJk
MzBhNjRmMjFkMTQ2NC4uZmVhN2M0MWZjZTYwMjUyNmUzNmFhOGVkYjZlYWI0NjU2OTg1OGM4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRUaW1pbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTG9hZFRpbWluZy5oCkBAIC0yNSwxMyArMjUsMTIgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Nb25v
dG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgVVJMOwotCiBjbGFzcyBMb2FkVGltaW5nIHsKIHB1YmxpYzoKICAgICBT
ZWNvbmRzIHNlY29uZHNTaW5jZVN0YXJ0VGltZShNb25vdG9uaWNUaW1lKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5kZXggNTk2NzgyYzY1N2NhYzUwODJjYWZl
MWNlNGIxYzE2ZmZiOWE2OGQ0ZC4uMjg1ZTY4MDljZTQ1ZTIyMTI0NDQ2OWZmOTU1YWU1NWVmZGVi
NTE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUx
LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBVUkw7CiAK
IHN0cnVjdCBGZXRjaE9wdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENv
bnRlbnRDaGVja2VyLmNwcAppbmRleCAwNTBjYjc5ZWE2NTc3ZDUzYTAzMzUyMDZiZDQ2MGVhNDQ3
M2YyMzc3Li5mYWRlMDFiN2MxZDBiZWM4NDYzNjdmZjVhNjI3ZDkzZGYxZjA5YTE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCkBAIC0xMDgsNyAr
MTA4LDcgQEAgdm9pZCBNaXhlZENvbnRlbnRDaGVja2VyOjpjaGVja0Zvcm1Gb3JNaXhlZENvbnRl
bnQoU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2kKIHsKICAgICAvLyBVbmNvbmRpdGlvbmFs
bHkgYWxsb3cgamF2YXNjcmlwdDogVVJMcyBhcyBmb3JtIGFjdGlvbnMgYXMgc29tZSBwYWdlcyBk
byB0aGlzIGFuZCBpdCBkb2VzIG5vdCBpbnRyb2R1Y2UKICAgICAvLyBhIG1peGVkIGNvbnRlbnQg
aXNzdWUuCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCisgICAgaWYgKFdURjo6
cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFp
c01peGVkQ29udGVudChzZWN1cml0eU9yaWdpbiwgdXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCmluZGV4IGEyNmE4NTc5N2QzYThjYjBjMjkzM2RmMjQ3
NzZiNjk1YjcwZDQ0MzQuLjVmZGZmZjgwYTMxODc0MzcxODM4ODkwYjVlMjQwNGVhMDA5ZjExNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaApAQCAtMzcs
NyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJh
bWVMb2FkZXJDbGllbnQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xh
c3MgTWl4ZWRDb250ZW50Q2hlY2tlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvblNjaGVkdWxlci5jcHAKaW5kZXggOGVjYzE0M2Y0MjEzYzk1Zjc5MGVlODNlMzg4MDc1NTM0
Y2I5ODlhNC4uNjE3ZGVkYmZkZmE4NjUxOTNjN2I3MzRkM2JhZDVkZjU1MTEzZDk2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMzY2LDcg
KzM2Niw3IEBAIGlubGluZSBib29sIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNob3VsZFNjaGVkdWxl
TmF2aWdhdGlvbihjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIXNob3VsZFNjaGVk
dWxlTmF2aWdhdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHByb3RvY29s
SXNKYXZhU2NyaXB0KHVybCkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJs
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIE5hdmlnYXRpb25EaXNhYmxlcjo6
aXNOYXZpZ2F0aW9uQWxsb3dlZChtX2ZyYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvblNjaGVkdWxlci5oCmluZGV4IDUzZWY1NTg0NGU2NzQxNDM4MmU2ZGJmZWJkMTlh
NzU2NDJhNDY2YzAuLmI5N2Q5ODY4MTYxOGVhYjYwZmQyNzU4YWQ5ODk5M2IyNDUyNDQ5ODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaApAQCAtNDEsNyAr
NDEsNiBAQCBjbGFzcyBGb3JtU3VibWlzc2lvbjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgU2NoZWR1
bGVkTmF2aWdhdGlvbjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVVJMOwogCiBlbnVt
IGNsYXNzIE5ld0xvYWRJblByb2dyZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUGluZ0xvYWRlci5oCmluZGV4IDE1NDg5ZGNmMDRiZjFkZWQ3ODg2ZWY4YzA4NjE3
ZGRiYzEzZDlhMTguLjZkZWVmNDUxNjlhOWU1Y2EzMGE5ZjJmODMzNDIzNzlkMzk5YjFkYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaApAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRUUEhlYWRl
ck1hcDsKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIAogZW51bSBjbGFzcyBW
aW9sYXRpb25SZXBvcnRUeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
b2xpY3lDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNw
cAppbmRleCA4MzAyNTM5Y2IzNzdiY2ZjNDZjY2YxZDU5ZTE3ZmJmODc4MTNjODAwLi5mNGMxOTFm
YWQ0NTc2NGQ0OWIzMjQyOWYyY2JkNGRjNmJkNWUyY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBQb2xpY3lDaGVja2Vy
OjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UmVzb3UKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246Oklnbm9yZToKICAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIFNob3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAg
IGNhc2UgUG9saWN5QWN0aW9uOjpTdXNwZW5kOgotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KHsgYmxhbmtVUkwoKSB9LCBudWxscHRyLCBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbik7
CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyBXVEY6OmJsYW5rVVJMKCkgfSwgbnVsbHB0
ciwgU2hvdWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pOwogICAgICAgICBjYXNlIFBvbGljeUFj
dGlvbjo6VXNlOgogICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNh
bkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKICAgICAgICAgICAgICAgICBoYW5kbGVVbmltcGxl
bWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5ub3RTaG93VVJMRXJy
b3IocmVxdWVzdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKaW5k
ZXggOWI2MzMwZWQ0N2JhYzY2ZGVhMjJiODRlMTljZjFkMDBiMDZhMjNjMS4uMWMxMjNkMDZmN2Fk
Njc1MjI5ZDZjNWUwMWY5MjUxYTY4YjE2MjI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkSW5mby5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDk1ZDY1OTU2N2VlNjkzYTgzMzcxMzVhNTZm
NWViNWEzYTk5ZmQ5MWEuLmNhMzYwMDUxMTU0YjZkNWYzMGI4Y2JiZjU5NjhkZmIxNTJiY2U5ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcApA
QCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGNvbnN0IFN0cmluZyYgZG9tYWluSQogICAgIGF1dG8gb3Bl
bmVyUHJpbWFyeURvbWFpbiA9IHByaW1hcnlEb21haW4ob3BlbmVyVXJsKTsKICAgICBpZiAoZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9wZW5lclByaW1hcnlEb21haW4KICAgICAgICAg
JiYgIW9wZW5lckRvY3VtZW50Lmhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NX
aXRoVXNlckludGVyYWN0aW9uKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcykKLSAgICAgICAg
JiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uob3BlbmVyVXJsLnN0cmluZygpLCBibGFua1VSTCgp
KSkgeworICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShvcGVuZXJVcmwuc3RyaW5n
KCksIFdURjo6YmxhbmtVUkwoKSkpIHsKICAgICAgICAgbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyQ2FsbGJhY2soZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBvcGVuZXJQYWdl
SUQsIG9wZW5lclByaW1hcnlEb21haW4pOwogICAgICAgICAvLyBSZW1lbWJlciB1c2VyIGludGVy
YWN0aW9uLWJhc2VkIHJlcXVlc3RzIHNpbmNlIHRoZXkgZG9uJ3QgbmVlZCB0byBiZSByZXBlYXRl
ZC4KICAgICAgICAgb3BlbmVyRG9jdW1lbnQuc2V0SGFzUmVxdWVzdGVkUGFnZVNwZWNpZmljU3Rv
cmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24oZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXgg
YWUyY2FlMjc4MDkxNzU1ODNmMmViYjQzMzY1YTEwMTlhMTQ3MTA4Ny4uMmFiZmM1MDMzNGMxN2Q4
OWUyYjZmZmJkYzM4YTM4MmExZjEwNmU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgY2xhc3MgUGFnZTsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmgKaW5kZXggZjJmMDk2MmU4OTZjNzA2NGU1Njc2YmY3YWEyOTUzNWRiNWIzN2Q4ZS4uMTFmYzYz
Y2Y2NjgzYTZlYjhkNGE3OTE3MGM5M2RkNmI3ZWIzODkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCkBAIC0yNiwxMCArMjYsMTAgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FudmFzQWN0aXZpdHlSZWNvcmQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3MTE5MzEwYmQzYmE0MmI2Njc2MmRkMTkzN2YwY2My
YmM1NDYyY2RjLi5jNGQ3OTI3YjY2YmI0N2MwNzVhM2JhMWQ3NTA1YjFkZTdlOWIyNTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtNTIsNyArNTIsNiBAQCBjbGFz
cyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwog
Y2xhc3MgUHJldmlld0xvYWRlcjsKLWNsYXNzIFVSTDsKIAogY2xhc3MgUmVzb3VyY2VMb2FkZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhh
bmRsZUNsaWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5o
CmluZGV4IDZjOWFjYjE5M2E2NzAyM2JiNWRjMzZiYWM0ZGE3ZTc5ODgzNDQzYmUuLjdlZjhkYmM4
NTE0ZGNlY2ZmMWIwN2Y0NTAzNzAzN2Y4ZTg4NDg4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZVRpbWluZy5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiTG9hZFRpbWluZy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlNlcnZlclRpbWlu
Zy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAppbmRl
eCA3MTM4NGQwYjJjMWRiMGRiOWVhYTEwN2M5ODMzZDkzOTY0YTg3ZDllLi43OGNlN2MxZWQ0ZTNm
ZDAzZmI2ZjMyOTFmNzQ0MjBiMjU3NzlhYzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJm
cmFtZUxvYWRlci5jcHAKQEAgLTc3LDE0ICs3NywxNCBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpy
ZXF1ZXN0RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBvd25lckVsZW1lbnQsIGNvbnN0IFN0
cgogICAgIC8vIFN1cHBvcnQgZm9yIDxmcmFtZSBzcmM9ImphdmFzY3JpcHQ6c3RyaW5nIj4KICAg
ICBVUkwgc2NyaXB0VVJMOwogICAgIFVSTCB1cmw7Ci0gICAgaWYgKHByb3RvY29sSXNKYXZhU2Ny
aXB0KHVybFN0cmluZykpIHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1cmxT
dHJpbmcpKSB7CiAgICAgICAgIHNjcmlwdFVSTCA9IGNvbXBsZXRlVVJMKHVybFN0cmluZyk7IC8v
IGNvbXBsZXRlVVJMKCkgZW5jb2RlcyB0aGUgVVJMLgotICAgICAgICB1cmwgPSBibGFua1VSTCgp
OworICAgICAgICB1cmwgPSBXVEY6OmJsYW5rVVJMKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHVy
bCA9IGNvbXBsZXRlVVJMKHVybFN0cmluZyk7CiAKICAgICBpZiAoc2hvdWxkQ29udmVydEludmFs
aWRVUkxzVG9CbGFuaygpICYmICF1cmwuaXNWYWxpZCgpKQotICAgICAgICB1cmwgPSBibGFua1VS
TCgpOworICAgICAgICB1cmwgPSBXVEY6OmJsYW5rVVJMKCk7CiAKICAgICBib29sIGhhc0V4aXN0
aW5nRnJhbWUgPSBvd25lckVsZW1lbnQuY29udGVudEZyYW1lKCk7CiAgICAgRnJhbWUqIGZyYW1l
ID0gbG9hZE9yUmVkaXJlY3RTdWJmcmFtZShvd25lckVsZW1lbnQsIHVybCwgZnJhbWVOYW1lLCBs
b2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCk7CkBAIC05NCw3ICs5NCw3IEBAIGJvb2wg
U3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmIG93bmVy
RWxlbWVudCwgY29uc3QgU3RyCiAgICAgLy8gSWYgd2UgY3JlYXRlIGEgbmV3IHN1YmZyYW1lIHRo
ZW4gYW4gZW1wdHkgZG9jdW1lbnQgaXMgbG9hZGVkIGludG8gaXQgc3luY2hyb25vdXNseSBhbmQg
bWF5CiAgICAgLy8gY2F1c2Ugc2NyaXB0IGV4ZWN1dGlvbiAoc2F5LCB2aWEgYSBET00gbG9hZCBl
dmVudCBoYW5kbGVyKSB0aGF0IGNhbiBkbyBhbnl0aGluZywgaW5jbHVkaW5nCiAgICAgLy8gbmF2
aWdhdGluZyB0aGUgc3ViZnJhbWUuIFdlIG9ubHkgd2FudCB0byBldmFsdWF0ZSBzY3JpcHRVUkwg
aWYgdGhlIGZyYW1lIGhhcyBub3QgYmVlbiBuYXZpZ2F0ZWQuCi0gICAgYm9vbCBjYW5FeGVjdXRl
U2NyaXB0ID0gaGFzRXhpc3RpbmdGcmFtZSB8fCAoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCkgJiYgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFsVVJMKCkg
PT0gYmxhbmtVUkwoKSk7CisgICAgYm9vbCBjYW5FeGVjdXRlU2NyaXB0ID0gaGFzRXhpc3RpbmdG
cmFtZSB8fCAoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgJiYgZnJhbWUtPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFsVVJMKCkgPT0gV1RGOjpibGFua1VSTCgpKTsK
ICAgICBpZiAoIXNjcmlwdFVSTC5pc0VtcHR5KCkgJiYgY2FuRXhlY3V0ZVNjcmlwdCAmJiBvd25l
ckVsZW1lbnQuaXNVUkxBbGxvd2VkKHNjcmlwdFVSTCkpCiAgICAgICAgIGZyYW1lLT5zY3JpcHQo
KS5leGVjdXRlSWZKYXZhU2NyaXB0VVJMKHNjcmlwdFVSTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YmZyYW1lTG9hZGVyLmgKaW5kZXggNDg5NmQ2MmY0NWYxZjgxZDkwZGU3NDAyZTIwOTcwNDFh
NmViMDY0Yy4uMmNhYWU5Y2E2MDk4YTc1MzNjMzA5Mzg5NmRjMjAzMTI2ZTY4OTQ3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKQEAgLTQ1LDcgKzQ1LDYgQEAgY2xhc3Mg
SFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ7CiBjbGFzcyBJbnRTaXplOwotY2xhc3MgVVJMOwogY2xhc3Mg
V2lkZ2V0OwogCiAvLyBUaGlzIGlzIGEgc2xpZ2h0IG1pc25vbWVyLiBJdCBoYW5kbGVzIHRoZSBo
aWdoZXIgbGV2ZWwgbG9naWMgb2YgbG9hZGluZyBib3RoIHN1YmZyYW1lcyBhbmQgcGx1Z2lucy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKaW5kZXggZjEwMTM1MTU5NzE5ODE4
MjljNjEwMTkxNzUyYjkxYWY5ZWM3ZmI3NS4uNzA1NjMyMTMzZGY4ZWY4NTY1OTg1Mjg3ZTQxMDYw
YjFkYjM3OTQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKQEAgLTI3
LDggKzI3LDggQEAKIAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCmluZGV4IDVk
ZjVmNjAxN2NlNGMwM2I3ODhiZTk4YmViN2I2ZTE3YmIwNDBiNmUuLjYxMzE3YjUzMWNjYzFiMDYy
OWIyMWRiZjBhNjdjY2ZlZWE2Y2Y0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaApAQCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBVUkw7CiAKIHVz
aW5nIEZhbGxiYWNrVVJMVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxVUkwsIFVSTD4+OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmgKaW5kZXggYWJhYTczZTE0YWI0YjhjN2FiYWIxMDg4ZGQ4YzIzOGU2OWUyYjQxZS4u
NDdkODkzNGJhOTkxNGE1YTU2ZDExNDZhNzk3ZWRlYjg0ZGYyZGJjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaApA
QCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXIuaCIKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
aAppbmRleCBmMmZiMWY3ODMyYmNkODA0NjJiY2FiMDhjZWJhN2QxMjViODVhMjQzLi4wZDEzMGE0
NWY4YWYzYjQ5OTA0MjEwNWI5NjEwMzlmZjVmYmYzNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtMzEsOCAr
MzEsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDgxYzIzMjFm
MzM5OWMzMDQwMzM3NzZkOTI2ZDhlMzAwM2I2ZTQxYTUuLjA0MGQ4YjdhZDZhMDkxZWIxYzllNDM1
YjVlMGMzNDAxZjkzYWUyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzYsOCArMzYsOCBA
QAogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXggNDhjYmY4
OGU1ZDg5MDM3MTEzNjE4OTVjYTFjMTMyYTY0MGM3ZDkwNC4uNjhjMzYxZTUyYjQyZDkxZDM2MWU5
Y2M4MjkwZWYzNWMzNTAxNTJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTM4LDcgKzM4LDYgQEAg
Y2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OwotY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7
CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3RvcmFnZUlESm91cm5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IGNiNDgx
NTg1ZjRhMGRjMzY4OWM4ZTgxNWU3MDZjYTI0YzQyNjAwMTUuLjg0NDY5ZjhhZDRhOTRhODQ2MmU3
NmYzZDkxMGMzMmU4YjE0MTIxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIk1h
bmlmZXN0UGFyc2VyLmgiCiAKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1ZpZXcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCmluZGV4
IGU3ODEwODkzYTIwNjkwYWNlNjNhZWMzZWM4OGU2MGVhZjYyZmM3ODAuLjhmZTQwYTY0ZTQ0OTBh
YWM4MjdhNjFkYjBmNDA0N2MxZWU4NjBiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCkBAIC0zMCw4ICszMCw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiBzdHJ1Y3QgTWFuaWZlc3QgewogICAgIFZlY3Rv
cjxVUkw+IG9ubGluZVdoaXRlbGlzdGVkVVJMczsKICAgICBIYXNoU2V0PFN0cmluZz4gZXhwbGlj
aXRVUkxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCmluZGV4IDM3ZGY2OGIzNjZjZmY4NTM5Yjk1YzgyM2Yy
ZTkxMjRkMzVlYTk5MzguLmU0NjBiNjljMmFlZDVkMjc5ZGQ1NGEwZGY5YWYwMTBiOTRiYzc3ZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uLmgKQEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBBcmNoaXZlOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3MgVVJMOwog
CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggODYxZTM5OTI2
MTBlMGU1ZmM4ZDkzOTY3MjM1ZGFjZWY0NjE3NTAwZS4uYTMzYTE4NjFhY2UyMjg3ZmVkNzA2NzY0
YjlmNzFiMTVhNTk1NmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTU3LDYgKzU2LDcg
QEAKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCkBAIC02MTEsNyArNjExLDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIC8vIFdy
YXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVk
IGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9y
IGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJh
bWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBc
IiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZy
YW1lPiI7Ci0gICAgYXV0byBpZnJhbWVSZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KHV0ZjhCdWZmZXIoaWZyYW1lTWFya3VwKSwgYmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYt
OCIsIFN0cmluZygpKTsKKyAgICBhdXRvIGlmcmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBXVEY6OmJsYW5rVVJMKCksICJ0ZXh0
L2h0bWwiLCAiVVRGLTgiLCBTdHJpbmcoKSk7CiAKICAgICBWZWN0b3I8UmVmPExlZ2FjeVdlYkFy
Y2hpdmU+PiBzdWJmcmFtZUFyY2hpdmVzOwogICAgIHN1YmZyYW1lQXJjaGl2ZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSgxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCmluZGV4IDVlMWUzZjFkM2NkMTRhNDZhMjc0OWE0OGExOTM5Y2EyZDYzODhi
NGMuLjhmNWRkMjA2MTc0ZmY0ODZmNDEyY2VkZjgxMmE5ODBkZDYzZGM1MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNDcsMTEgKzQ3
LDExIEBACiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDA3
NzdiMTc3MjRlOWIwNWNlZjVlZDU0YTNhZWZjMWQxMTQ2N2Y0ZDcuLjEwZjY5YzZhMTA1MjlmMWZk
OTExYTFkMDc0ZWYwMzA5YzBmNWNiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC01Nyw3ICs1Nyw2IEBAIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbWFnZUxvYWRlcjsKIGNsYXNzIFNl
dHRpbmdzOwotY2xhc3MgVVJMOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHVzaW5nIFJlc291
cmNlRXJyb3JPciA9IEV4cGVjdGVkPFQsIFJlc291cmNlRXJyb3I+OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgKaW5kZXggZGY0
NmJlMmQzNzdlNGMxZGUxODJhZGFmMTRkNzM5YTFmOTdjZGMwMi4uMzhiYjE5OTkwMDg3YzhkNjY2
MWYzNmEzNjY5ZDRjOWFlMzM0ODE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCkBAIC0zMSw3ICszMSw2IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7Ci1jbGFzcyBVUkw7
CiAKIGNsYXNzIENhY2hlZFN0eWxlU2hlZXRDbGllbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VD
bGllbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
aAppbmRleCBkNzE2Nzk4YTRjZTFkOTdkNjFkMzEzZTk1MThiN2RjMjI2OWY3MDVjLi4yZmNiZDMx
OTg1YTQ3NWEzMGZmMTc3ZjYzMjk0NjIyZjAxMjUyOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtNDEsNyArNDEsNiBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAppbmRleCA2YWE1
NTM3NGY3OGI2Njc3ZjU3MDlhMmJkOWRjYjcxNGMxOGZmZGZhLi4zNGEwZjMyYjRmNWU4ZGY5YTZj
MDNlZjU3NDE4ZmM2YWE4NTFkMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxv
YWRlci5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNs
aWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KaW5kZXggZjkxMGVk
NWJkZTI0OWJhMzFiOGE1ODNmYzU0MWVmN2FhY2NjM2NjMC4uY2JlMDAwNDgwNmNjNTg3NDIzZDhk
ZWIwZWU0ODRhMDFmN2UwNmYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21h
Yy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xv
YWRlck5TVVJMRXh0cmFzLm1tCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiTG9hZGVyTlNVUkxFeHRyYXMuaCIKIAotI2ltcG9ydCA8d3RmL0Fzc2VydGlv
bnMuaD4KLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAi
TG9jYWxpemVkU3RyaW5ncy5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9W
ZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggMzZhMjRlNzg4NTg5MzQwZjAxNzdiNzVkMDUyZWUz
YmJhNWVhMGIxMy4uYjc5MjNmNzgzMjIyNmVkNTNmMGM5MWY4ZGVkYTg1ZGI5ZDYzMTYyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVzZXJTdHls
ZVNoZWV0VHlwZXMuaCIKICNpbmNsdWRlICJWVFRDdWUuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA1NjhiNWNkOGUzYTIxOGEyN2JlNTQw
OTVhZjFiYjc5Yjc3ZWIxMzgzLi41N2Y4YTQwYTkxYTY2NGFlMzJlNWU2ZTBjZGIzNGQ2NmQ2OTUy
ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTM4NCw3ICszODQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpIHsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgeyB9OworICAgIHZp
cnR1YWwgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oY29uc3QgVVJMJiwgY29uc3Qg
SGFzaFNldDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpIHsgfTsKIAogI2lmIFBMQVRGT1JN
KFdJTikKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IGFmN2NhOTI2NGE0ZjJmODVl
OTQwYzliZDFkNDAxNmRmYTA5OTJjYzAuLmI4NzUwNWEwNTA1NzllM2JmMTM4NTAyYTVlZmY0YTQ1
NTJlZDFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtMjYsNyArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKLSNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCmluZGV4IDVlN2MzNWM5Nzcx
OGQ4OGY4NDFiZjQxODA0NTI0OTRhZDhmNzUxOTIuLjg4OWVlOTk3NjEyOGQxYTk2NjdlMGE1MGEz
NDhlNTEyYmU2ODcwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgK
QEAgLTMxLDI5ICszMSwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBG
cmFtZTsKLSAgICBjbGFzcyBVUkw7Ci0KLSAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVudCB7Ci0g
ICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgpID0gZGVmYXVs
dDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOwotICAg
ICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJsKSA9
IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKikg
PSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgPSAw
OwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0
b3BTcGVha2luZygpID0gMDsKK2NsYXNzIEZyYW1lOworCitjbGFzcyBDb250ZXh0TWVudUNsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29udGV4dE1lbnVDbGllbnQoKSA9IGRlZmF1bHQ7
CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgPSAwOworICAgIAorICAg
IHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGVh
a2luZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSA9IDA7CiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSA9IDA7CiAjZW5kaWYKIAogI2lmIFVT
RShBQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzaG93
Q29udGV4dE1lbnUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpID0g
MDsKICNlbmRpZgotICAgIH07Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCA2ODEyNmJh
OTZlOGJmMTdlNzY4OTNlMWViYWFjZjU0OTQwZjJmYmM3Li5hM2U1ZWFlODk0ZDY0Mjc2MzdkZDg0
NWVkYWFkZTcxYzYxNTFjMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB2b2lkIENvbnRleHRNZW51Q29u
dHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29u
c3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0Rv
d25sb2FkSW1hZ2VUb0Rpc2s6CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgaWYgKFdl
YkNvcmU6OnByb3RvY29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdl
VVJMKCksICJmaWxlIikpCisgICAgICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKG1fY29udGV4
dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVSTCgpLCAiZmlsZSIpKQogICAgICAgICAg
ICAgICAgIHNob3VsZEVuYWJsZSA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsK
QEAgLTEzNTEsNyArMTM1MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09y
RW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAg
ICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRWaWRlb1RvRGlzaygp
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKGNvbnRl
eHRNZW51SXRlbVRhZ0Rvd25sb2FkQXVkaW9Ub0Rpc2soKSk7Ci0gICAgICAgICAgICBpZiAoV2Vi
Q29yZTo6cHJvdG9jb2xJcyhtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlSW1hZ2VV
UkwoKSwgImZpbGUiKSkKKyAgICAgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMobV9jb250ZXh0
LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksICJmaWxlIikpCiAgICAgICAgICAg
ICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlwYm9hcmQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMGMyN2I2ZDVmMTg2ZjYzMjU1NDg3ZjY4MmYxZjJhMjgz
OTFmYzE1ZS4uMTFjMjc2OWI2YTc5NTNkYjcxNDllZDM1OTAxY2ZmNjc5OThlY2Q3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBACiAjaW5jbHVkZSAiU3R5
bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJTdWRkZW5U
ZXJtaW5hdGlvbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc3VhbFZpZXdwb3J0
LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9pbnQuaCIKQEAgLTIxODYsNyArMjE4Niw3IEBAIFN0cmlu
ZyBET01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0IERPTVdpbmRv
dyYgYWN0aXZlV2luZG93LCBJCiAKIGJvb2wgRE9NV2luZG93Ojppc0luc2VjdXJlU2NyaXB0QWNj
ZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsK
LSAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCisgICAgaWYgKCFXVEY6
OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIC8vIElmIHRoaXMgRE9NV2luZG93IGlzbid0IGN1cnJlbnRseSBhY3RpdmUgaW4gdGhl
IEZyYW1lLCB0aGVuIHRoZXJlJ3Mgbm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKaW5kZXggNzU2MjEzNjUxYzRmNGRiNWY3YjU3M2RmMmQ3ZmQ1ZWVmMDZhNGU2Ni4uOWVlM2Q0
Njg5NjRmYzhkNGY2YTNlNGNiNGRiMDVlMWRiNzIwY2Q2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKQEAgLTEwNjksNyArMTA2OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3Bl
cmF0aW9uCiAgICAgICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQpCiAgICAgICAg
ICAgICAgICAgc3JjLmVkaXRvcigpLmNvcHlVUkwobGlua1VSTCwgdGV4dENvbnRlbnRXaXRoU2lt
cGxpZmllZFdoaXRlU3BhY2UsIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFVSTChzcmMu
ZWRpdG9yKCkucGFzdGVib2FyZFdyaXRlclVSTChsaW5rVVJMLCB0ZXh0Q29udGVudFdpdGhTaW1w
bGlmaWVkV2hpdGVTcGFjZSkpOworICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRh
LnNldFVSTERhdGEoc3JjLmVkaXRvcigpLnBhc3RlYm9hcmRXcml0ZXJVUkwobGlua1VSTCwgdGV4
dENvbnRlbnRXaXRoU2ltcGxpZmllZFdoaXRlU3BhY2UpKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFzdGVib2FyZCBhbHNvIGNvbnRhaW5zIHRydXN0
d29ydGh5IGxpbmsgZGF0YQogICAgICAgICAgICAgLy8gYnV0IGRvbid0IG92ZXJ3cml0ZSBtb3Jl
IGdlbmVyYWwgcGFzdGVib2FyZCB0eXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
aAppbmRleCBjMDJkNWM4MDE2YzY1YjNkNWVmOTM1NmM4MmJlN2Q1NzJiOTc5YTk0Li44NDM1Mjgz
Y2RmY2IxMWE4NjJkOWZjY2M2NmYzMDQzZjJjNTdhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAj
aW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCAzNzkyYTkxMjZmMWQzMGFmZmUzN2JlMWMyYTZkYWM3
ODIxNmE3MjlhLi41OGE0YzM4NzQ5ZTk1MGI0NzhjZjg3MDY4YTI2MzkzMTBhZGVmMDlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Pci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggYjc0N2ZkNmM2ZTQwMzIzNjhj
MDZiN2VjODdjNTY0MDA4YTI3OWQ1My4uOWZhZjI0MzdmNTcyMWU5NmEyNTgyMTI3ZTJlYWUyNjQz
ZGI5YjcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtODksNyArODksNiBAQCBjbGFzcyBSZW5kZXJX
aWRnZXQ7CiBjbGFzcyBTY3JpcHRDb250cm9sbGVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBj
bGFzcyBTZXR0aW5nczsKLWNsYXNzIFVSTDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNz
IFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZTQ0OTc3NjcwZTYxMzQ3Y2Nk
ZmUzZTIzZjFiZjgwZmNkOGUzOGE3ZS4uZDQ1ZTc1ZDU0ZDQ4NmY5MGQ2MGIxMWM4NmE0NmM4ODNh
ZDdjNDAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01Myw3ICs1Myw2IEBAIGNsYXNz
IEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxGcmFt
ZU93bmVyRWxlbWVudDsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xh
c3MgUmVuZGVyQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAppbmRleCA4N2EwZjNkMTc4NzhkMTcxMTEx
ODRhMjY0MjA5MmZjN2ZmNTEwYTAyLi5kNmU5MzRhYjAwMjE5ZDQxYjc3ZjVmOThhYTkxOGVlZDA4
YTA2OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaApAQCAtMzUsNyArMzUsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgSGlzdG9y
eSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEhpc3Rv
cnk+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmNwcAppbmRleCA0ZTQ4N2VjMWVmNTExNjk5Mzg4YmQ3MGQxZTRiYWJiOTk5OTlkOWRkLi4x
NjQwY2ZjMTIzYmEzNzYyYWI1NmMwN2ZjOGUzMTExZjQ3MzJhN2ZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xv
Y2F0aW9uLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDExICs0NywxMSBAQCBMb2NhdGlv
bjo6TG9jYXRpb24oRE9NV2luZG93JiB3aW5kb3cpCiBpbmxpbmUgY29uc3QgVVJMJiBMb2NhdGlv
bjo6dXJsKCkgY29uc3QKIHsKICAgICBpZiAoIWZyYW1lKCkpCi0gICAgICAgIHJldHVybiBibGFu
a1VSTCgpOworICAgICAgICByZXR1cm4gV1RGOjpibGFua1VSTCgpOwogCiAgICAgY29uc3QgVVJM
JiB1cmwgPSBmcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAoIXVybC5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybiBibGFua1VSTCgpOyAvLyBVc2UgImFib3V0OmJsYW5rIiB3aGls
ZSB0aGUgcGFnZSBpcyBzdGlsbCBsb2FkaW5nIChiZWZvcmUgd2UgaGF2ZSBhIGZyYW1lKS4KKyAg
ICAgICAgcmV0dXJuIFdURjo6YmxhbmtVUkwoKTsgLy8gVXNlICJhYm91dDpibGFuayIgd2hpbGUg
dGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdlIGhhdmUgYSBmcmFtZSkuCiAKICAg
ICByZXR1cm4gdXJsOwogfQpAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgTG9jYXRpb246OnJlbG9h
ZChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh0YXJnZXREb2N1bWVudC51cmwoKSkpCisgICAgaWYg
KFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQodGFyZ2V0RG9jdW1lbnQudXJsKCkpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVm
cmVzaChhY3RpdmVEb2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xv
Y2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKaW5kZXggNjk2OTFiYzYx
YTdhZDdjYjhhMGIzYTNhN2ZlZmI5Yjc2ODY3NmRhNi4uODBkNWQ5MGM2YjNiNzNhNTg0OTRiY2U0
OTI2NGZiZGU3MGFkOTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaApAQCAtMzYsNyArMzYsNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5kb3c7Ci1jbGFzcyBVUkw7CiAK
IGNsYXNzIExvY2F0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50
ZWQ8TG9jYXRpb24+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAppbmRleCAzZGJlNTcyY2QzMjkwM2Q1ZmNiZDZjMzdlMDUxYmNlYjEwNzIzZTdlLi5jYjJl
MzhmMzI4OWFiNjg3MTc3NWEwY2ZhYWI3YzI5MjEzZGYzOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAt
MTM2LDcgKzEzNiw2IEBAIGNsYXNzIFNldHRpbmdzOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBj
bGFzcyBTdG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwot
Y2xhc3MgVVJMOwogY2xhc3MgVXNlckNvbnRlbnRQcm92aWRlcjsKIGNsYXNzIFZhbGlkYXRpb25N
ZXNzYWdlQ2xpZW50OwogY2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IDNiNmUxODI5ZTI4YzM1YTM5ZTRhMTZiNWYw
ODhlNjFjM2M0NmVkOGEuLmZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTMwLDExICszMCwxMSBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2gu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKaW5k
ZXggYTYyY2IyZWQ1MmY3ODZlYTJlN2IzZjUyNmQwNzZkMTE5ZmY0YjU4Ny4uOWU1OTg3NjVkY2Vj
YzRhYWVjMjU2YzY2Yjk5NDkzNzdmNDFmZDI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2Uu
aApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBQZXJmb3JtYW5jZVRpbWluZzsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBVc2VyVGltaW5nOwogCiBjbGFzcyBQZXJmb3Jt
YW5jZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlcmZvcm1hbmNlPiwgcHVibGljIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1p
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNw
cAppbmRleCA1NzUzMzU4MGMzMDIxZWFlNjZkZTMxOTA4OWQ4ZTRiMWJjMTAzZjlkLi43YjdkODdh
NDU4ZmJhMGU3MzlkMmM0MjA5Y2Y4MjQyYmJkODc0OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAK
ICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgog
I2luY2x1ZGUgIlJlc291cmNlVGltaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKaW5kZXggZTZkMDczNDE0ODlhZWNmOTZkZTJiNTYwZWRhZDc4MmU0YTEz
NWNmMS4uZDk4YTA2MWU1NTIyMjJhNDA2ZmFhZTBmMWMxMTNjMTJjNjU5NTRmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1
ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKQEAgLTE0
OCw3ICsxNDgsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1
cmwpCiAgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0cyBhcyBtX2RhdGEuaG9zdCwgYnV0IGNh
biBiZSBzZXQgYnkgdGhlIERPTS4KICAgICBtX2RvbWFpbiA9IG1fZGF0YS5ob3N0OwogCi0gICAg
aWYgKG1fZGF0YS5wb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2RhdGEucG9ydC52
YWx1ZSgpLCBtX2RhdGEucHJvdG9jb2wpKQorICAgIGlmIChtX2RhdGEucG9ydCAmJiBXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2RhdGEucG9ydC52YWx1ZSgpLCBtX2RhdGEucHJvdG9j
b2wpKQogICAgICAgICBtX2RhdGEucG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEJ5IGRl
ZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmlnaW5zIGNhbiBsb2FkIGxvY2FsIHJlc291cmNl
cy4KQEAgLTUxNiw3ICs1MTYsNyBAQCBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJgogewogICAgIFN0
cmluZyBkZWNvZGVkSG9zdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKICAgICBh
dXRvIG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsg
Ii8iKSk7Ci0gICAgaWYgKHBvcnQgJiYgIWlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwg
cHJvdG9jb2wpKQorICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bCgqcG9ydCwgcHJvdG9jb2wpKQogICAgICAgICBvcmlnaW4tPm1fZGF0YS5wb3J0ID0gcG9ydDsK
ICAgICByZXR1cm4gb3JpZ2luOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmlu
ZGV4IDVhZGY1MDE3NDliMDljMjkzZTU5YmE0MDQ1NmY3NjdjYjU2ZTA4ZTEuLmI5M2QwZmFmMjM1
YTdmZTM1NDc2NTA5ZjZlNDM3ZDU0NDA1Y2MxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmgKQEAgLTM0LDggKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBVUkw7Ci0KIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6CiAgICAgZW51bSBQb2xpY3kgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggY2VmZmVhMzJiMDg0YzU2MzEy
NGYyMGI3YzVmZTI4ZjE0OTA0MDQ3NS4uMjc3NjJlYTIxZDZkMjA2NWU5ZGQwMTQ2ZGI5NzliMzMy
ZWM0NTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luSGFzaC5oCmluZGV4IGVlMjU3MmM1YTlhNjQ0Mzk1N2E1ZjNmNzUzZjQ2
ZTJmYmE5MjIzNDAuLmUwMTQ4YTJkMDVkOTliMGRkZGYwNmEyM2QyNDZkNTM0NTJjYjJjMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaApAQCAtMjgsNyArMjgsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAppbmRleCAxNTNlZGQ4MTlkMTI1
NTU1NTY4ODc2NTY2ZGUzMWY5OGI2YzA1NTNiLi40MjM0MTgyODBlYTJlZTNjOWJmZGZjOTFjZDEy
N2I5NjhlYjFlMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9s
aWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAt
MzEsMTEgKzMxLDExIEBACiAKICNpbmNsdWRlICJPcmlnaW5BY2Nlc3NFbnRyeS5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xNDIsNyArMTQyLDcgQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNlY3Vy
aXR5T3JpZ2luRnJvbU93bmVyKGNvbnN0IFVSTCYgdXJsKQogICAgIC8vCiAgICAgLy8gTm90ZTog
V2UgZ2VuZXJhbGl6ZSB0aGlzIHRvIGludmFsaWQgVVJMcyBiZWNhdXNlIHdlIHRyZWF0IHN1Y2gg
VVJMcyBhcyBhYm91dDpibGFuay4KICAgICAvLwotICAgIHJldHVybiB1cmwuaXNFbXB0eSgpIHx8
IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnN0cmluZygpLCBibGFua1VSTCgpKSB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNkb2MiKTsK
KyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5z
dHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh1cmwuc3RyaW5nKCksICJhYm91dDpzcmNkb2MiKTsKIH0KIAogdm9pZCBTZWN1cml0eVBvbGlj
eTo6c2V0TG9jYWxMb2FkUG9saWN5KExvY2FsTG9hZFBvbGljeSBwb2xpY3kpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggY2QzN2NhM2FkMmRmZGJkN2U2NzIzNTFmYTU0M2Vl
ZjQ5ZTgyYjRmNC4uNTMzYjFkNGZiZGFkNTJlMzhmMWZkMzVhMmY2YTA3ZDQ4MDA4YjE3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaApAQCAtMzQsNyArMzQsNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVSTDsKIAogY2xh
c3MgU2VjdXJpdHlQb2xpY3kgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5nc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgK
aW5kZXggZmIxNDMxNjE1NDZmZDJmNjM5ZTQwYWUxNjdhMTViNzI1ZjYxMjcxOS4uZDY0NzFjMjRk
OWViYzcwZGE5MzdhZmFiNTliY2JhZDAxZTExOWRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
QmFzZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZU1hcC5oIgogI2luY2x1
ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91c2NyaXB0
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCBhMmZkM2VmMTI0NzJkZDRhMWMzM2FhNDA2
MWY5ZmM0OWY0YjE2MzViLi40NGQwYTMzZjM5M2M4M2E4NWE3ZTM2YTI0ZDg4NmUzZWZiNTdhMWEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjcHJh
Z21hIG9uY2UKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU29j
a2V0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuaAppbmRl
eCBkMTk3OTc3YWZlYjgyMGFhNDEyZTJjMzRmYTU0NzIxNjM4NDkwZTcyLi45ZThjMDAzYmZmNTFl
MWE1Y2M5NmQyZTQ3M2U3YWVlZWVkYmRhOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NvY2tldFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92
aWRlci5oCkBAIC0zNCw3ICszNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CiBjbGFzcyBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQ7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JU
IFNvY2tldFByb3ZpZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvY2tldFByb3Zp
ZGVyPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250
ZW50UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5o
CmluZGV4IDI4ZGZiMzJhMDc2ZTY1MTJlY2Y5MjRmMDE0NTIyMGVlYWU0OWM0NzIuLmZhNjkyMDM0
ZGJhZTVmZDc5ZmU4MTk3ODlhNzMyMWViZTRiMGRlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRQcm92aWRlci5oCkBAIC00Miw3ICs0Miw2IEBAIGNsYXNzIERPTVdyYXBwZXJX
b3JsZDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKLWNsYXNzIFVSTDsKIGNsYXNzIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I7
CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggYjliODExNTgyN2I3OGY1
MjczMDk1YzJjM2UxNTE4YmY0M2Y0M2U5MC4uZjM3M2NmMzdiMjRjNTBmYzIxZGM2ZGM0NzFhYjA4
ZWQ0ZWM1MDkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRleCA5MzNmNjlkNmM1YTYwZTZlZDcy
OGJhMDgwZWVlODRmNTQ4MGRmMmQ2Li45M2Y2NTgxMmRhYzVkZThhZDVmY2RiNjcwZDhkMmY5ZTg2
OTc4MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0
dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgK
QEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0K
IGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybiB7CiBwdWJsaWM6CiAgICAgVXNlckNvbnRlbnRV
UkxQYXR0ZXJuKCkgOiBtX2ludmFsaWQodHJ1ZSksIG1fbWF0Y2hTdWJkb21haW5zKGZhbHNlKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKaW5kZXggODUxMGMxZjMzOTkwMWU5OTVmMzIwY2Nj
OWJmNzE5YjJlNDlhZTQyNy4uNTJjMTJmM2M2OTY2MzAyYWFlZjQ1NWI4ZmVmYmM5OWViZGE1ODRj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKQEAgLTI1LDcgKzI1LDcgQEAKICAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIlVzZXJDb250ZW50VHlwZXMuaCIKICNpbmNsdWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKaW5k
ZXggNjhmMTBhODJhZGY4OThmMjUyYzQxNTU5Y2IxNjc4YWVjOGM1MDg0MS4uYzQ3NDc2N2U3Yzk4
YmI0OGE4ODNjYjczYjY5ODkwNWY2MDFkNzYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxl
U2hlZXQuaApAQCAtMjUsNyArMjUsNyBAQAogIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRUeXBlcy5o
IgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4IDQzYzM1MTM3MmQ2
MThiNjgxMDliMGZiOGNjZDY5ZmM4NWY4YmRkNzguLjI2ZDY1MGRiYTc0ZGM1MDJjZjkzMDlhM2Yz
ZDFjMDVkYTZiNjQ5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExp
bmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCkBA
IC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiB1aW50NjRfdCBT
aGFyZWRTdHJpbmdIYXNoOwogY2xhc3MgUGFnZTsKLWNsYXNzIFVSTDsKIAogY2xhc3MgVmlzaXRl
ZExpbmtTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFZpc2l0ZWRMaW5rU3RvcmU+IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgK
aW5kZXggNWI1OTJmZDgyOGY5N2Y5NGMyM2FlMzM0OTY4YTVhYjQ3ZDk2YzE2My4uZTAyYTdhYjZj
NTliZmNmNWI5OWU2NDhmZmM2YzdlMjU0NGNmZmUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTU2LDcgKzU2LDYgQEAgY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogY2xhc3MgVGV4dEVuY29kaW5nOwotY2xhc3MgVVJMOwogc3RydWN0IENv
bnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+PiBDU1BEaXJlY3RpdmVMaXN0
VmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lDbGllbnQuaAppbmRleCBlYjRmZTg3YzI5ZjFjYWIxMThiZDFiMGRiZTY3NjNjYjEw
NGYzMjMwLi44ZTA1MTgyNjQxNDA2ZjJjYzhjYWEyZGM1NmFlMzM2MDYzNGU2YjFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGll
bnQuaApAQCAtMzIsNyArMzIsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3Jt
RGF0YTsKLWNsYXNzIFVSTDsKIAogc3RydWN0IENTUEluZm8gewogICAgIFN0cmluZyBkb2N1bWVu
dFVSSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAppbmRleCAyOTA3MjUwZjBlYjFkYzRmZDA4ZmIy
MDcyYzY4MzM3YjI4ZDdiMDI2Li5kZDUxMzAwZWMzYjAwMzMxZjMzYmQwMjczN2ExNThjMmFhYzYy
MTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggYTA3
MTBkY2MyYTkxMzRhZjA2OGNjZWY5ODA2YmM5NGUyNmRiZmFkMS4uYzgyZjg1NmMyYzc4MjJkZDY0
NWUzMmIxNzFjZjM0Mzc5ODE1NGFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMSwx
NCArMTAxLDE0IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpwb3J0TWF0Y2hl
cyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBpZiAocG9ydCA9PSBtX3BvcnQpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaWYgKChtX3BvcnQgJiYgaXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKG1fcG9ydC52YWx1ZSgpLCAiaHR0cCIpKSAmJiAoKCFwb3J0ICYmIHVybC5wcm90b2NvbElz
KCJodHRwcyIpKSB8fCAocG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1
ZSgpLCAiaHR0cHMiKSkpKQorICAgIGlmICgobV9wb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKG1fcG9ydC52YWx1ZSgpLCAiaHR0cCIpKSAmJiAoKCFwb3J0ICYmIHVybC5wcm90
b2NvbElzKCJodHRwcyIpKSB8fCAocG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bChwb3J0LnZhbHVlKCksICJodHRwcyIpKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
aWYgKCFwb3J0KQotICAgICAgICByZXR1cm4gaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9y
dC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSk7CisgICAgICAgIHJldHVybiBXVEY6OmlzRGVmYXVs
dFBvcnRGb3JQcm90b2NvbChtX3BvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpOwogCiAgICAg
aWYgKCFtX3BvcnQpCi0gICAgICAgIHJldHVybiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9y
dC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSk7CisgICAgICAgIHJldHVybiBXVEY6OmlzRGVmYXVs
dFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKTsKIAogICAgIHJl
dHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlLmgKaW5kZXggNGVlYWJiMDEzNjUyNTFiNmQ4OTYzM2NhOTY4
MGQwMTVmMjMxMDZhYS4uYTJkYjUwNDM4OThmMmU2OTQ3YmM3YjBhMmRkNjQ0M2FiNTE0MzhkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlLmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ29udGVudFNlY3VyaXR5UG9saWN5OwotY2xhc3MgVVJMOwogc3RydWN0IFNlY3VyaXR5T3Jp
Z2luRGF0YTsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlTGlzdC5jcHAKaW5kZXggMWI0MzMxMjY2MDBhNTAxZjk1ZjVlNjNiNDJkZDRjZGRkZDk1Nzli
Mi4uMjZkYTkxMTUzNzY0YWZmNzA0ODY3OGU2MjdmNzJmYzRjNzk4MWQ1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlTGlzdC5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVOYW1lcy5oIgogI2luY2x1ZGUgIlBhcnNpbmdVdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
QVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdC5oCmluZGV4IDlmNjNjMzAwNmEwY2E3ZjJlMzM5OTQ4MDFi
NTQyYzM2NjY4YzJlNTQuLjVmY2YzYjJlYWU0YTllNWY4NDgxMGJkNTNjNDU1NTI0NDA3NzI2ZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0LmgKQEAgLTM2LDcgKzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5OwotY2xhc3MgVVJMOwogCiBjbGFzcyBD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJl
Y3RpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdERpcmVjdGl2ZS5jcHAKaW5kZXggYzJiZjFkNDVhNTVmNTc3ZmEyZDNmYjYwMGIy
YWM5ZjNmZjBjYTFlNC4uMWIwOTJiODRmZDBiZjdkNjZmOGUxYWFmZTBmMWJhYzUzMzZhZTY1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdERpcmVjdGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAppbmRleCA5
MDQ4ZGJkMWUwOWQ4ZWM3YWJmMzdmOWI3Y2U4ZmZkYmJhYWQ4OGM2Li5mZGYxZmQ3OTIzMWEwMmRm
ZDRkMzRiMGNjMmVhOTQ2YTE5M2I1OTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaApAQCAtMjMsMTQgKzIzLDEzIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJfaAotI2RlZmluZSBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgTlNDb2RlcjsKQEAgLTc3LDUgKzc2LDMgQEAgcHJpdmF0
ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKLQotI2VuZGlmIC8vIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCmluZGV4IDQ3NmEzYzM2Yjk1YmRi
MTg3YmI1ODkzMmUwMDNiZDExZWYzMmI0MDYuLjFiMGY3NDUwYjQ1NzJkNTZhOTEzZTVjMWU3YWE1
NzM5ODQ5NDhkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRN
ZW51SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5o
CkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGV4dE1l
bnU7CiBjbGFzcyBJbWFnZTsKLWNsYXNzIFVSTDsKIAogZW51bSBDb250ZXh0TWVudUFjdGlvbiB7
CiAgICAgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5o
CmluZGV4IGQ1YTAyODhkMGMzM2Q0Y2EzYjAxZTUyODE5YTliNjg1ZTM5Zjc3YTUuLjE2Y2E5NjM5
ZGI0OTc0ZmRlMzRiNzNiNThkNDZkZmQ5MDkxOTE2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tp
ZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db29raWVzU3RyYXRlZ3kuaAppbmRleCA0YzMwNjlhMDIwMTY2YWI3MzVmNDFkODhiYjY4ZjY0
MDIwY2JkZWQ2Li44YTVjNTk0ODMwYzA3ZDYxYzkwMGJiMmVhNzg0ODc4MTQxNzcwYWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaApAQCAtMzIsNyArMzIsNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247Ci1j
bGFzcyBVUkw7CiAKIHN0cnVjdCBDb29raWU7CiBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggMWE0YTQ1ZjgwNWNjNTA2YWI5ZjE5MWY4MDYxNTc4
NzA0ZmY0OTIwNi4uZTkzMDk1ZmM3YjJhMGIxMzZkNDY2MTZkMDIyMGNjZWJhMzk5YTAzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC01Niw4ICs1Niw2IEBAIHR5cGVkZWYgdm9p
ZCogRHJhZ0RhdGFSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiBl
bnVtIERyYWdBcHBsaWNhdGlvbkZsYWdzIHsKICAgICBEcmFnQXBwbGljYXRpb25Ob25lID0gMCwK
ICAgICBEcmFnQXBwbGljYXRpb25Jc01vZGFsID0gMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmgKaW5kZXggYTExM2I0OGMyNDdiODZmYzE4NjdjODY1YWJmNDZkZjQ1NzllYjdmNS4uYjI4
YzVlMDRmNDZjM2QzYTY4MmFjYzVhNGRjMmYyNjk4MjMxZDIwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0ltYWdlLmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgSW1hZ2U7CiBjbGFzcyBJbnRS
ZWN0OwogY2xhc3MgTm9kZTsKIGNsYXNzIFJhbmdlOwotY2xhc3MgVVJMOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIHR5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IERyYWdJbWFnZVJl
ZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAppbmRleCA5NjdkZWRjN2JhNmVjZjQy
OTJkZjE5Y2ZjMTg4NTFkMTY2YjNhYTVmLi5iMmFhMjg0NDc5ZjdiMTIyNmViZjdhYWE5YjdmZGNh
YzMwYzMzNzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCkBAIC0zNSw4ICsz
NSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiAvLyBBbGwgbWV0
aG9kcyBhcmUgc3luY2hyb25vdXMuCiBjbGFzcyBGaWxlU3RyZWFtIHsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MaW5rSWNvbi5oCmluZGV4IDI4MTc1NDYwMzU5YWRmZjdhMGNmMmZlMWViN2Zm
NDEzNGM1NzdlNTkuLjg5ZTJmODk2OWJiNTI2YTM2NGRiNmI5MGUzMGE5Yjc3MWNkZTU4NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGlua0ljb24uaApAQCAtMjYsOSArMjYsOSBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJMaW5rSWNvblR5cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCA3Mzdh
MzkwNDI1N2RlNjQzYmMwZDlhYjk5YmMyNjRhMzE0ZmQ2ZmY3Li41NTVlYzI4MmU0YmI2NmU1Zjlk
MTExMjBiOTc2MWE3MjVlYmMzZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVk
ZSAiVVJMUGFyc2VyLmgiCisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgUGFzdGVib2FyZDo6aXNTYWZlVHlw
ZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogYm9vbCBQYXN0ZWJv
YXJkOjpjYW5FeHBvc2VVUkxUb0RPTVdoZW5QYXN0ZWJvYXJkQ29udGFpbnNGaWxlcyhjb25zdCBT
dHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBhdXRvIHVybCA9IFVSTFBhcnNlciB7IHVybFN0cmlu
ZyB9LnJlc3VsdCgpOworICAgIFVSTCB1cmwoeyB9LCB1cmxTdHJpbmcpOwogICAgIHJldHVybiB1
cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzQmxvYigpIHx8IHVy
bC5wcm90b2NvbElzRGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
aW5kZXggMGQzZTczZWEwODk2M2Q0OTgyYTNmYjQ3MDhkM2VlMjhlNmVmYTYzYS4uYzU5Yjg0MmJh
OTM2NzkyOTY0M2MwMjQ1NDRiZDJmNjdmMjYwNDYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmQuaApAQCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIK
ICNpbmNsdWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggYjE0ZDU0YWE5YTkw
ZGI5NWM5ODllNWQyYWIzOGVmNjIxZjdlNDNiYi4uMWU5Yjg4MGZkMWE1ZTE4NTI1MzBhYjkzNWNj
ZTBkODc1YzYzZDk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29s
b3I7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJM
Owogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBz
dHJ1Y3QgUGFzdGVib2FyZFVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRXcml0ZXJEYXRhLmNwcAppbmRleCAzZDJkY2VlZDdjNTZlODcwOTY3ODk4MDdhNjdiZWUy
ZWQwMzI5MjdmLi5lMjU2OTA3NGVlNWEyYjNlZjZjMjBlOGJlNDhkZmU3NTdhODA2OWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCkBA
IC00OCw3ICs0OCw3IEBAIHZvaWQgUGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFBsYWluVGV4dChQ
bGFpblRleHQgcGxhaW5UZXh0KQogICAgIG1fcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQp
OwogfQogCi12b2lkIFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpzZXRVUkwoVVJMIHVybCkKK3ZvaWQg
UGFzdGVib2FyZFdyaXRlckRhdGE6OnNldFVSTERhdGEoVVJMRGF0YSB1cmwpCiB7CiAgICAgQVNT
RVJUKCFtX3VybCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3Jp
dGVyRGF0YS5oCmluZGV4IGQ1M2ZkNzJmZjVlNmM0NGUwYTE2ZTc3ZjM5MWRhZmNkODQ2NTAyMGEu
LjVmNDc1OTJiMTAxOTUxMTkxMTc5NzY4OGU3ODU1MGY0OGJiZWQ1NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMjUsOCArMjUsOCBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjYsOCArNjYsOCBAQCBwdWJsaWM6CiAg
ICAgY29uc3Qgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+JiBwbGFpblRleHQoKSBjb25zdCB7IHJl
dHVybiBtX3BsYWluVGV4dDsgfQogICAgIHZvaWQgc2V0UGxhaW5UZXh0KFBsYWluVGV4dCk7CiAK
LSAgICBzdHJ1Y3QgVVJMIHsKLSAgICAgICAgV2ViQ29yZTo6VVJMIHVybDsKKyAgICBzdHJ1Y3Qg
VVJMRGF0YSB7CisgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyB0aXRsZTsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgICAgIFN0cmluZyB1c2VyVmlzaWJsZUZvcm07CkBAIC03NiwxNSAr
NzYsMTUgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfTsKIAotICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8VVJMPiYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICB2b2lkIHNldFVSTChV
UkwpOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMRGF0YT4mIHVybERhdGEoKSBjb25zdCB7
IHJldHVybiBtX3VybDsgfQorICAgIHZvaWQgc2V0VVJMRGF0YShVUkxEYXRhKTsKIAogICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29udGVudD4mIHdlYkNvbnRlbnQoKSBjb25zdCB7IHJldHVy
biBtX3dlYkNvbnRlbnQ7IH0KICAgICB2b2lkIHNldFdlYkNvbnRlbnQoV2ViQ29udGVudCk7CiAK
IHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxQbGFpblRleHQ+IG1fcGxhaW5UZXh0OwotICAg
IHN0ZDo6b3B0aW9uYWw8VVJMPiBtX3VybDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTERhdGE+IG1f
dXJsOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29udGVudD4gbV93ZWJDb250ZW50OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3ZTBi
NzZjM2VkMTBiNzI3YmFjYjVhOTYzMDBjYzdhMjg2OTJjMjZmLi5jMzVmMDhlY2Q2NDU4Nzc4Mzk1
ZDgzNWEzNDI2YWJkM2ZjZjVmOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBDb2xvcjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1j
bGFzcyBVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2Fy
ZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCBkYmVjZmMxYjNiMTZkN2Y1
ZTAzMDhlMTEwYWNkYTExMDJjYjQyMDdlLi5hOTU4YzJmMGFiMmQ5ZjFmMzc2NjJhN2EwYjYwMmJl
MzEzNDMwN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRh
Y2htZW50SW5mby5oCkBAIC0zMSw3ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVu
dEluZm8gewogICAgIFVSTCBibG9iVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU1NMS2V5R2VuZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlH
ZW5lcmF0b3IuaAppbmRleCAwNzY3MjM4NmY2OGVhYTk4MWZlN2M1OTdjMDVmNjFlZjhlNjczY2U0
Li5jMmJkOGQ2ZTlkM2FhOTNlMjQ2MDI0ODYyYzFmM2IyMmY0NWE0ODQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaApAQCAtMzEsOCArMzEsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogLy8gUmV0dXJucyBzdHJpbmdzIHJlcHJl
c2VudGluZyBrZXkgc2l6ZXMgdGhhdCBtYXkgYmUgdXNlZAogLy8gZm9yIHRoZSA8a2V5Z2VuPiB0
YWcuIFRoZSBmaXJzdCBzdHJpbmcgaXMgZGlzcGxheWVkIGFzIHRoZSBkZWZhdWx0CiAvLyBrZXkg
c2l6ZSBpbiB0aGUgPGtleWdlbj4gbWVudS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVt
ZVJlZ2lzdHJ5LmNwcAppbmRleCA5NDlkZTYzYWVmMDZjZmNmYWYwYzAyZDI0YzZhYzQ0ZTY2ZmUw
Yjk3Li43N2Y2YzM5MmE5MTdmMGM5MTcyNjY1YTc2MThlNjcwNDM4YzRlNGJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogCi0jaW5j
bHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYv
TG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgpAQCAtNTUxLDcg
KzU1MSw3IEBAIGJvb2wgU2NoZW1lUmVnaXN0cnk6OmlzVXNlckV4dGVuc2lvblNjaGVtZShjb25z
dCBTdHJpbmcmIHNjaGVtZSkKIAogYm9vbCBTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2NoZW1l
KGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYm
IChhbGxCdWlsdGluU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkgfHwgVVJMUGFyc2VyOjppc1Nw
ZWNpYWxTY2hlbWUoc2NoZW1lKSk7CisgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgKGFs
bEJ1aWx0aW5TY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKSB8fCBXVEY6OlVSTFBhcnNlcjo6aXNT
cGVjaWFsU2NoZW1lKHNjaGVtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGUyYWFlMmYzMDQ1NzM1NWY0ODll
ZWM0YWI0ZWNmMWNlN2QzZTQ1MmYuLmY4NjhjMmMwMWQ2YjEwZWNmMzY0YjFhNmZmZTNkZDQyZjVm
NTIyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC00MCw3ICs0
MCw3IEBACiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3Vw
LmgiCisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNlbmRpZgogCiAjaWYg
VVNFKEdMSUIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJp
bmdIYXNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3Bw
CmluZGV4IDBjYzVmNjg3ZDYyMWVmZTdlYWJhYzRkYmY5ZTU0NTQ3YTQ4ZGNlMTguLmFmYjc1N2Ni
ZTQwMjJmZWRmYzQ3OTNlYWJjMjU2OWU4NjBlOTU5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkU3RyaW5nSGFzaC5oIgogCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdWaWV3Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRTdHJpbmdIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNo
LmgKaW5kZXggNzMyNDYxN2JhNDk2YTA2NjNiZmQ1M2RlYzRhNDQzZDk3NjkzOWU4ZS4uMzYwM2Nm
MGYyZTdmOTIxNGIzZTI1M2Y1NDc5ZDljYjM0NmIyN2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogdHlwZWRlZiB1aW50NjRfdCBTaGFyZWRTdHJpbmdI
YXNoOwogCiAvLyBVc2UgdGhlIGxvdyAzMi1iaXRzIG9mIHRoZSA2NC1iaXQgU2hhcmVkU3RyaW5n
SGFzaCBhcyB0aGUga2V5IGZvciBIYXNoU2V0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJj
ZXNTb3VwLnR4dAppbmRleCA5MWI5ZjMwOTkyMGZlNmQ1YmFkZTA4MDM2NTVjMjg0NTkwMzU0ZDE5
Li5kYmFjMzEzNGU4YmIxNzdlMzljNTczYWQ3OTczMzI3MWU4ZDczYzAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC00MSw0ICs0MSwzIEBAIHBsYXRmb3JtL25l
dHdvcmsvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwCiAKIHBsYXRmb3JtL3NvdXAv
UHVibGljU3VmZml4U291cC5jcHAKIHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAK
LXBsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM0NjJiZGVmOGU4YTYxYWZiMDEyYTEwZTI3Y2I2MTM0
ZWRmZDNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxMS0yMDEzLCAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlVSTC5oIgotCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5j
bHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUg
PHd0Zi9VVUlELmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotCi0vLyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRv
byBtdWNoIHVzZSBvZiB0aGUgKyBvcGVyYXRvciBvbiBTdHJpbmcuCi0vLyBXZSBlaXRoZXIgaGF2
ZSB0byBvcHRpbWl6ZSB0aGF0IG9wZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQotLy8gc28g
bWFueSBhbGxvY2F0aW9ucywgb3IgY2hhbmdlIHRoaXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0
ZWFkLgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLXR5
cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFy
LCA1MTI+IFVDaGFyQnVmZmVyOwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnRO
dW1iZXIgPSAweEZGRkY7Ci0KLS8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlv
biwgYXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKLS8vIEFTQ0lJLiBUaGUg
ZGVzdGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMg
YXJlIGFsbG93ZWQKLS8vIGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBt
YWRlIHRvIG51bGwtdGVybWluYXRlIHRoZSByZXN1bHQuCi1zdGF0aWMgdm9pZCBjb3B5QVNDSUko
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRlc3QpCi17Ci0gICAgaWYgKHN0cmluZy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAg
ICAgIG1lbWNweShkZXN0LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsK
LSAgICBlbHNlIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJz
MTYoKTsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGRlc3RbaV0g
PSBzdGF0aWNfY2FzdDxjaGFyPihzcmNbaV0pOwotICAgIH0KLX0KLQotdm9pZCBVUkw6OmludmFs
aWRhdGUoKQotewotICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgIG1fcHJvdG9jb2xJc0luSFRU
UEZhbWlseSA9IGZhbHNlOwotICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOwotICAgIG1f
c2NoZW1lRW5kID0gMDsKLSAgICBtX3VzZXJTdGFydCA9IDA7Ci0gICAgbV91c2VyRW5kID0gMDsK
LSAgICBtX3Bhc3N3b3JkRW5kID0gMDsKLSAgICBtX2hvc3RFbmQgPSAwOwotICAgIG1fcG9ydExl
bmd0aCA9IDA7Ci0gICAgbV9wYXRoRW5kID0gMDsKLSAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9
IDA7Ci0gICAgbV9xdWVyeUVuZCA9IDA7Ci19Ci0KLVVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwg
Y29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykK
LXsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7Ci0gICAg
KnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9t
VVJMKFVDaGFyIGMpCi17Ci0gICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcg
d2hpdGVzcGFjZSBhbmQgY29udHJvbAotICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90
ZSB0aGF0IGMgaXMgYW4gKnVuc2lnbmVkKiBjaGFyIGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBh
cmlzb24gc2hvdWxkIG9ubHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBj
IDw9ICcgJzsKLX0KLQotVVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKLXsKLSAgICBVUkwg
cmVzdWx0ID0gKnRoaXM7Ci0gICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlz
b2xhdGVkQ29weSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cmluZyBVUkw6Omxhc3RQ
YXRoQ29tcG9uZW50KCkgY29uc3QKLXsKLSAgICBpZiAoIWhhc1BhdGgoKSkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotCi0gICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKLSAgICBp
ZiAobV9zdHJpbmdbZW5kXSA9PSAnLycpCi0gICAgICAgIC0tZW5kOwotCi0gICAgc2l6ZV90IHN0
YXJ0ID0gbV9zdHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOwotICAgIGlmIChzdGFydCA8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0gICAgKytzdGFydDsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJz
dHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpwcm90
b2NvbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
ZygwLCBtX3NjaGVtZUVuZCk7Ci19Ci0KLVN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKLXsK
LSAgICB1bnNpZ25lZCBzdGFydCA9IGhvc3RTdGFydCgpOwotICAgIHJldHVybiBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKLX0KLQotc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcG9y
dExlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGJvb2wgb2sgPSBm
YWxzZTsKLSAgICB1bnNpZ25lZCBudW1iZXI7Ci0gICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQot
ICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3Rl
cnM4KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOwotICAgIGVsc2UK
LSAgICAgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0
ZXJzMTYoKSArIG1faG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7Ci0gICAgaWYg
KCFvayB8fCBudW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQotU3Ry
aW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdAotewotICAgIGlmIChhdXRvIHBvcnQgPSB0aGlz
LT5wb3J0KCkpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocG9ydC52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIGhvc3QoKS50b1N0cmlu
ZygpOwotfQotCi1TdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKLXsKLSAg
ICBTdHJpbmcgcmVzdWx0ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9y
dExlbmd0aCk7Ci0KLSAgICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgewot
ICAgICAgICBjb25zdCBpbnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7Ci0gICAgICAgIHJl
c3VsdC5yZW1vdmUobV91c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFs
bG93Rm9yVHJhaWxpbmdBdFNpZ24pOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LXN0YXRpYyBTdHJpbmcgZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdW
aWV3IGlucHV0KQotewotICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAg
ICBpZiAoIWlucHV0TGVuZ3RoKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBW
ZWN0b3I8TENoYXI+IHBlcmNlbnREZWNvZGVkOwotICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoaW5wdXRMZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBpbnB1dExlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKLSAgICAg
ICAgICAgICYmIGlucHV0TGVuZ3RoID4gMgotICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3Ro
IC0gMgotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKLSAgICAg
ICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7Ci0gICAgICAgICAgICBw
ZXJjZW50RGVjb2RlZC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAx
XSwgaW5wdXRbaSArIDJdKSk7Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgcGVyY2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBw
ZXJjZW50RGVjb2RlZC5zaXplKCkpOwotfQotCi1TdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0
KSk7Ci19Ci0KLVN0cmluZyBVUkw6OnBhc3MoKSBjb25zdAotewotICAgIGlmIChtX3Bhc3N3b3Jk
RW5kID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJu
IGRlY29kZUVzY2FwZVNlcXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZyku
c3Vic3RyaW5nKG1fdXNlckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7
Ci19Ci0KLVN0cmluZyBVUkw6OmVuY29kZWRVc2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9z
dHJpbmcuc3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Ci19
Ci0KLVN0cmluZyBVUkw6OmVuY29kZWRQYXNzKCkgY29uc3QKLXsKLSAgICBpZiAobV9wYXNzd29y
ZEVuZCA9PSBtX3VzZXJFbmQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVy
biBtX3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNl
ckVuZCAtIDEpOwotfQotCi1TdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAot
ewotICAgIGlmICghaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOwot
fQotCi1ib29sIFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Ci19Ci0KLVN0
cmluZyBVUkw6OmJhc2VBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxl
ZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi0jaWYgIVVTRShDRikKLQotU3RyaW5nIFVS
TDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xv
Y2FsRmlsZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGVjb2Rl
RXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOwotfQotCi0j
ZW5kaWYKLQotI2lmZGVmIE5ERUJVRwotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9j
b2xJc0dvb2QoU3RyaW5nVmlldykKLXsKLX0KLQotI2Vsc2UKLQotc3RhdGljIHZvaWQgYXNzZXJ0
UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAgICAvLyBGSVhNRTogV2Ug
cHJvYmFibHkgZG9uJ3QgbmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgotICAgIC8vIFRoZSBp
c0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4g
Y2hhcmFjdGVycwotICAgIC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2Rl
IGRpZCBub3QgYW5kIHJlbGllZCBvbiB0aGVzZSBjaGVja3MuCi0gICAgZm9yIChhdXRvIGNoYXJh
Y3RlciA6IHByb3RvY29sLmNvZGVVbml0cygpKSB7Ci0gICAgICAgIEFTU0VSVChpc0FTQ0lJKGNo
YXJhY3RlcikpOwotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsKLSAgICAgICAgQVNT
RVJUKCFpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93
ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSA9PSBjaGFyYWN0ZXIpOwotICAgIH0KLX0KLQotI2VuZGlm
Ci0KLXN0YXRpYyBMb2NrIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsK
LQotdXNpbmcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0
cmluZywgdWludDE2X3Q+Owotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0
aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQotewotICAgIHN0YXRp
YyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcDsKLSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKLX0KLQotc3Rh
dGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9y
dEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpCi17Ci0gICAgRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKTsKLSAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXApCi0gICAgICAgIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmc7Ci0gICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclBy
b3RvY29sTWFwOwotfQotCi12b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRl
c3RpbmcodWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKLXsKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9j
ayk7Ci0gICAgZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQo
cHJvdG9jb2wsIHBvcnQpOwotfQotCi12b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmcoKQotewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsKLSAgICBpZiAoYXV0byogbWFwID0gZGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkKLSAgICAgICAgbWFwLT5jbGVhcigpOwot
fQotCi1zdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmlu
Z1ZpZXcgcHJvdG9jb2wpCi17Ci0gICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgICAg
IEFTU0VSVChvdmVycmlkZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJl
IHNpbmNlIG92ZXJyaWRlTWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVs
bC4KLSAgICAgICAgYXV0byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlk
ZU1hcC0+ZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotICAgIH0K
LSAgICByZXR1cm4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsK
LX0KLQotYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5n
VmlldyBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90
b2NvbCkgPT0gcG9ydDsKLX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJv
dG9jb2wpIGNvbnN0Ci17Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7
Ci0KLSAgICAvLyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVj
dXRlZCBldmVuIGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCi0gICAgLy8gVGhlIGZy
ZWUgZnVuY3Rpb24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFk
LiAKLSAgICBBU1NFUlQoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXco
cHJvdG9jb2wpLCAiamF2YXNjcmlwdCIpKTsKLQotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2lu
ZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Nj
aGVtZUVuZDsgKytpKSB7Ci0gICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBo
YUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8v
IFdlIHNob3VsZCBoYXZlIGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4K
LX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKLXsK
LSAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7Ci0KLSAgICBpZiAoIW1faXNWYWxp
ZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGlmIChtX3NjaGVtZUVuZCAhPSBw
cm90b2NvbC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG8gdGhl
IGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgewotICAgICAgICBpZiAoIWlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmlu
ZyBVUkw6OnF1ZXJ5KCkgY29uc3QKLXsKLSAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQp
Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJp
bmcobV9wYXRoRW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAotfQotCi1T
dHJpbmcgVVJMOjpwYXRoKCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0
RW5kICsgbV9wb3J0TGVuZ3RoOwotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVu
ZCwgbV9wYXRoRW5kIC0gcG9ydEVuZCk7Ci19Ci0KLWJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25z
dCBTdHJpbmcmIHMpCi17Ci0gICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcg
YWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KLSAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZp
bmQoJzonKTsKLSAgICBTdHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0
b3JQb3NpdGlvbik7Ci0gICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNh
bm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbCk7Ci0gICAgaWYgKCFjYW5vbmljYWxpemVkKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBV
UkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcp
KTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXpl
ZCwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOwotICAgICp0aGlzID0gcGFyc2Vy
LnJlc3VsdCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBpc0FsbEFTQ0lJ
KFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAg
IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmlu
Zy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hh
cmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Ci19Ci0gICAgCi0vLyBBcHBlbmRzIHRoZSBw
dW55Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5n
dGggdG8KLS8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwg
dGVybWluYXRlZC4KLS8vIFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNv
ZGluZy4KLXN0YXRpYyBib29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVm
ZmVyLCBTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdo
IHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KLSAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdn
ZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBj
ZXJ0YWlubHkgT0suCi0gICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAy
MDQ4OwotICAgIAotICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0
aCB8fCBpc0FsbEFTQ0lJKHN0cmluZykpIHsKLSAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5n
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIFVDaGFyIGhvc3RuYW1l
QnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9a
RVJPX0VSUk9SOwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9f
SU5JVElBTElaRVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFf
bmFtZVRvQVNDSUkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVy
KCksCi0gICAgICAgIHN0cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0
aCgpLCBob3N0bmFtZUJ1ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0
YWlscywgJmVycm9yKTsKLSAgICAKLSAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vz
c2luZ0RldGFpbHMuZXJyb3JzKSB7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZm
ZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi11bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dv
cmRFbmQgOiBtX3Bhc3N3b3JkRW5kICsgMTsKLX0KLQotdm9pZCBVUkw6OnNldEhvc3QoY29uc3Qg
U3RyaW5nJiBzKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIGNvbG9uSW5kZXggPSBzLmZpbmQoJzonKTsKLSAgICBpZiAoY29sb25JbmRleCAhPSBu
b3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3RO
YW1lOwotICAgIGlmICghYXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3Vz
ZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKLSAgICAK
LSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcu
bGVmdChob3N0U3RhcnQoKSkpOwotICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmll
dyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAg
YnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwotCi0gICAgVVJM
UGFyc2VyIHBhcnNlcihidWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJl
c3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCi17Ci0gICAgaWYgKCFtX3BvcnRM
ZW5ndGgpCi0gICAgICAgIHJldHVybjsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmco
U3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOwotICAgICp0aGlzID0gcGFy
c2VyLnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQot
ewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIGNvbG9u
TmVlZGVkID0gIW1fcG9ydExlbmd0aDsKLSAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25O
ZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xv
bk5lZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Ci19Ci0KLXZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJp
bmcmIGhvc3RBbmRQb3J0KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBTdHJpbmdWaWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKLSAgICBTdHJpbmdWaWV3
IHBvcnQ7Ci0gICAgCi0gICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOwot
ICAgIGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHBvcnQgPSBob3N0TmFt
ZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEpOwotICAgICAgICBib29sIG9rOwotICAgICAgICBp
bnQgcG9ydEludCA9IHBvcnQudG9JbnRTdHJpY3Qob2spOwotICAgICAgICBpZiAoIW9rIHx8IHBv
cnRJbnQgPCAwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBob3N0TmFtZSA9IGhvc3RO
YW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsKLSAgICB9Ci0KLSAgICBpZiAoaG9zdE5hbWUu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9z
dE5hbWU7Ci0gICAgaWYgKCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBo
b3N0TmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9
IG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwot
Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5n
LmxlZnQoaG9zdFN0YXJ0KCkpKTsKLSAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKLSAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIvLyIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1Zp
ZXcoZW5jb2RlZEhvc3ROYW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOwotICAg
IGlmICghcG9ydC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6
Iik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBvcnQpOwotICAgIH0KLSAgICBidWlsZGVyLmFw
cGVuZChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVu
Z3RoKSk7Ci0KLSAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAg
KnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29k
ZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hh
cikpCi17Ci0gICAgYXV0byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBp
bnB1dCkgewotICAgICAgICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7Ci0gICAgICAgIGF1
dG8qIGRhdGEgPSB1dGY4LmRhdGEoKTsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgICAgICBhdXRvIGxlbmd0aCA9IHV0ZjgubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IDA7IGogPCBsZW5ndGg7IGorKykgewotICAgICAgICAgICAgYXV0byBjID0gZGF0YVtq
XTsKLSAgICAgICAgICAgIGlmIChzaG91bGRFbmNvZGUoYykpIHsKLSAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnJScpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVy
TmliYmxlVG9BU0NJSUhleERpZ2l0KGMpKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwotICAgIH07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGlucHV0Lmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVu
Y29kZShpbnB1dFtpXSkpKQotICAgICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7Ci0gICAg
fQotICAgIHJldHVybiBpbnB1dDsKLX0KLQotdm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5n
JiB1c2VyKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVk
IHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFu
Z2luZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KLQotICAgIHVuc2lnbmVkIGVuZCA9
IG1fdXNlckVuZDsKLSAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyB1
ID0gcGVyY2VudEVuY29kZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9F
bmNvZGVTZXQpOwotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAgICAgICB1ID0gIi8vIiArIHU7Ci0gICAgICAg
IC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAgICAgICAgaWYgKGVu
ZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0g
IT0gJ0AnKSkKLSAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIFVSTFBhcnNlciBw
YXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwg
dSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgKnRoaXMg
PSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBp
ZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAobV91
c2VyRW5kID09IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tl
bmRdID09ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3
YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5v
dCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5k
KSB7Ci0gICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyht
X3N0cmluZykubGVmdChtX3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmlu
ZyhlbmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAg
fQotICAgIH0KLX0KLQotdm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkK
LXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQg
ZW5kID0gbV9wYXNzd29yZEVuZDsKLSAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgewotICAg
ICAgICBTdHJpbmcgcCA9ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBV
UkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCkgKyAiQCI7Ci0gICAgICAgIGlmIChtX3Vz
ZXJFbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCi0gICAgICAg
ICAgICBwID0gIi8vIiArIHA7Ci0gICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNl
IHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KLSAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RF
bmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAg
ICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQo
bV91c2VyRW5kKSwgcCwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAg
ICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8g
UmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAg
ICAgICBpZiAobV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYg
bV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8g
V2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJl
IHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlckVu
ZCAhPSBlbmQpIHsKLSAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJp
bmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1
YnN0cmluZyhlbmQpKSk7Ci0gICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAg
ICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJp
bmdWaWV3IGlkZW50aWZpZXIpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmll
ciBhbHJlYWR5IGhhcHBlbnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPwotICAgIC8v
IEZJWE1FOiBJcyBpdCBjb3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNj
YXBpbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnM/Ci0gICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwg
JyMnLCBpZGVudGlmaWVyKSB9LnJlc3VsdCgpOwotfQotCi12b2lkIFVSTDo6cmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICBBU1NFUlQo
IW1fcXVlcnlFbmQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2lzVmFsaWQg
JiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kKQotICAgICAgICBtX3N0cmluZyA9IG1f
c3RyaW5nLmxlZnQobV9xdWVyeUVuZCk7Ci19Ci0KLXZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZy
YWdtZW50SWRlbnRpZmllcigpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQpOwotICAgIG1fcXVl
cnlFbmQgPSBtX3BhdGhFbmQ7Ci19Ci0KLXZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcm
IHF1ZXJ5KQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBGSVhNRTogJyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5k
IGVzY2FwZWQuCi0gICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9j
dW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBhY2Nl
c3MgdG8gdGhlIGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTYxMTc2Ci0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0g
Jz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7Ci0gICAgICAgICp0
aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVSTFBhcnNlciBw
YXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1
ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgfQotCi19Ci0KLXZvaWQgVVJMOjpzZXRQ
YXRoKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgU3RyaW5nIHBhdGggPSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBw
YXRoWzBdICE9ICcvJykKLSAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0KLSAgICBhdXRvIHF1
ZXN0aW9uTWFya09yTnVtYmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKLSAgICAgICAg
cmV0dXJuIGNoYXJhY3RlciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKLSAgICB9OwotICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1f
aG9zdEVuZCArIG1fcG9ydExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1
ZXN0aW9uTWFya09yTnVtYmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyht
X3BhdGhFbmQpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLWJvb2wgZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikK
LXsKLSAgICBpZiAoYS5tX3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHVuc2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQotICAgICAgICBpZiAoYS5z
dHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50
KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIGlmIChhLnBhdGhFbmQoKSAhPSBi
LnBhdGhFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHBhdGhFbmQg
PSBhLnBhdGhFbmQoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytp
KSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIHBy
b3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsK
LSAgICBpZiAoYS5tX3NjaGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICB1bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1
bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNp
Z25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3Ro
QiA9IGIubV9ob3N0RW5kIC0gYi5ob3N0U3RhcnQoKTsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0g
aG9zdExlbmd0aEIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIENoZWNrIHRoZSBz
Y2hlbWUKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7
Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gQW5kIHRoZSBob3N0Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3Ry
aW5nKClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChhLnBvcnQoKSAhPSBiLnBv
cnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICB1bnNp
Z25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3Ro
QSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKLSAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0g
Yi5ob3N0U3RhcnQoKTsKLSAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0g
aG9zdFN0YXJ0QjsKLSAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3Ro
QTsgKytpKSB7Ci0gICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0
cmluZygpW2hvc3RTdGFydEIgKyBpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29u
c3QgU3RyaW5nJiBkb21haW4pIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICBpZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOwotICAgIGlmICghaG9z
dC5lbmRzV2l0aChkb21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
aG9zdC5sZW5ndGgoKSA9PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0g
ZG9tYWluLmxlbmd0aCgpIC0gMV0gPT0gJy4nOwotfQotCi1TdHJpbmcgZW5jb2RlV2l0aFVSTEVz
Y2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIGlucHV0KQotewotICAgIHJldHVybiBwZXJjZW50
RW5jb2RlQ2hhcmFjdGVycyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQp
OwotfQotCi1ib29sIFVSTDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAotewotICAgIGlmICghbV9p
c1ZhbGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQVNTRVJUKG1fc3RyaW5nW21fc2No
ZW1lRW5kXSA9PSAnOicpOwotICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09
ICcvJzsKLX0KLQotdm9pZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVm
ZmVyKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5
dGVzIG9mIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQotICAgIC8vIFRoYXQncyBm
aW5lIGZvciBhIHZhbGlkIFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZh
bGlkIFVSTHMuCi0gICAgYnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgY29w
eUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nQ2xhc3M+Ci1ib29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYg
dXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3
aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNH
b29kKFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwg
c3RybGVuKHByb3RvY29sKSkpOwotICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwLCBqID0gMDsgdXJsW2ldOyArK2kpIHsKLSAgICAgICAgLy8gU2tpcCBs
ZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICAgICAgaWYgKGlz
TGVhZGluZyAmJiBzaG91bGRUcmltRnJvbVVSTCh1cmxbaV0pKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOwotCi0gICAgICAgIC8vIFNraXAgYW55IHRh
YnMgYW5kIG5ld2xpbmVzLgotICAgICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09
ICdccicgfHwgdXJsW2ldID09ICdcbicpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICBpZiAoIXByb3RvY29sW2pdKQotICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7Ci0g
ICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pd
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICArK2o7Ci0gICAgfQotICAg
IAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVy
bmFsKHVybCwgcHJvdG9jb2wpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIHJldHVybiBX
ZWJDb3JlOjpwcm90b2NvbElzSW50ZXJuYWwoc3RyaW5nLCBwcm90b2NvbCk7Ci19Ci0KLSNpZm5k
ZWYgTkRFQlVHCi0KLXZvaWQgVVJMOjpwcmludCgpIGNvbnN0Ci17Ci0gICAgcHJpbnRmKCIlc1xu
IiwgbV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLSNlbmRpZgotCi1TdHJpbmcgVVJMOjpz
dHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdAotewotICAgIFVSTCByZWZlcnJlcigqdGhp
cyk7Ci0gICAgcmVmZXJyZXIuc2V0VXNlcihTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIuc2V0UGFz
cyhTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0g
ICAgcmV0dXJuIHJlZmVycmVyLnN0cmluZygpOwotfQotCi1ib29sIFVSTDo6aXNMb2NhbEZpbGUo
KSBjb25zdAotewotICAgIC8vIEluY2x1ZGluZyBmZWVkIGhlcmUgbWlnaHQgYmUgYSBiYWQgaWRl
YSBzaW5jZSBkcmFnIGFuZCBkcm9wIHVzZXMgdGhpcyBjaGVjawotICAgIC8vIGFuZCBpbmNsdWRp
bmcgZmVlZCB3b3VsZCBhbGxvdyBmZWVkcyB0byBwb3RlbnRpYWxseSBsZXQgc29tZW9uZSdzIGJs
b2cKLSAgICAvLyByZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJkIG9uIGEgZHJhZywg
ZXZlbiB3aXRob3V0IGEgZHJvcC4KLSAgICAvLyBMaWtld2lzZSB3aXRoIHVzaW5nIHRoZSBGcmFt
ZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc0xvY2FsKCkgZnVuY3Rpb24uCi0gICAgcmV0dXJuIHBy
b3RvY29sSXMoImZpbGUiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBT
dHJpbmcmIHVybCkKLXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFz
Y3JpcHQiKTsKLX0KLQotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCkK
LXsKLSAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKLX0K
LQotYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAg
IGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgpOwotICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdp
dGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCi0gICAgcmV0dXJuIGxlbmd0aCA+PSA1
Ci0gICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzBdLCAnaCcpCi0gICAg
ICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzFdLCAndCcpCi0gICAgICAgICYm
IGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzJdLCAndCcpCi0gICAgICAgICYmIGlzQVND
SUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzNdLCAncCcpCi0gICAgICAgICYmICh1cmxbNF0gPT0g
JzonIHx8IChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFs0XSwgJ3MnKSAmJiBsZW5ndGgg
Pj0gNiAmJiB1cmxbNV0gPT0gJzonKSk7Ci19Ci0KLWNvbnN0IFVSTCYgYmxhbmtVUkwoKQotewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJv
dXQ6YmxhbmsiKTsKLSAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7Ci19Ci0KLWJvb2wgVVJMOjpw
cm90b2NvbElzQWJvdXQoKSBjb25zdAotewotICAgIHJldHVybiBwcm90b2NvbElzKCJhYm91dCIp
OwotfQotCi1ib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQotewotICAgIHN0ZDo6b3B0
aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwotCi0gICAgLy8gU2luY2UgbW9zdCBV
UkxzIGRvbid0IGhhdmUgYSBwb3J0LCByZXR1cm4gZWFybHkgZm9yIHRoZSAibm8gcG9ydCIgY2Fz
ZS4KLSAgICBpZiAoIXBvcnQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gVGhpcyBi
bG9ja2VkIHBvcnQgbGlzdCBtYXRjaGVzIHRoZSBwb3J0IGJsb2NraW5nIHRoYXQgTW96aWxsYSBp
bXBsZW1lbnRzLgotICAgIC8vIFNlZSBodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25l
dGxpYi9Qb3J0QmFubmluZy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgIHN0YXRpYyBj
b25zdCB1aW50MTZfdCBibG9ja2VkUG9ydExpc3RbXSA9IHsKLSAgICAgICAgMSwgICAgLy8gdGNw
bXV4Ci0gICAgICAgIDcsICAgIC8vIGVjaG8KLSAgICAgICAgOSwgICAgLy8gZGlzY2FyZAotICAg
ICAgICAxMSwgICAvLyBzeXN0YXQKLSAgICAgICAgMTMsICAgLy8gZGF5dGltZQotICAgICAgICAx
NSwgICAvLyBuZXRzdGF0Ci0gICAgICAgIDE3LCAgIC8vIHFvdGQKLSAgICAgICAgMTksICAgLy8g
Y2hhcmdlbgotICAgICAgICAyMCwgICAvLyBGVFAtZGF0YQotICAgICAgICAyMSwgICAvLyBGVFAt
Y29udHJvbAotICAgICAgICAyMiwgICAvLyBTU0gKLSAgICAgICAgMjMsICAgLy8gdGVsbmV0Ci0g
ICAgICAgIDI1LCAgIC8vIFNNVFAKLSAgICAgICAgMzcsICAgLy8gdGltZQotICAgICAgICA0Miwg
ICAvLyBuYW1lCi0gICAgICAgIDQzLCAgIC8vIG5pY25hbWUKLSAgICAgICAgNTMsICAgLy8gZG9t
YWluCi0gICAgICAgIDc3LCAgIC8vIHByaXYtcmpzCi0gICAgICAgIDc5LCAgIC8vIGZpbmdlcgot
ICAgICAgICA4NywgICAvLyB0dHlsaW5rCi0gICAgICAgIDk1LCAgIC8vIHN1cGR1cAotICAgICAg
ICAxMDEsICAvLyBob3N0cmlhbWUKLSAgICAgICAgMTAyLCAgLy8gaXNvLXRzYXAKLSAgICAgICAg
MTAzLCAgLy8gZ3BwaXRucAotICAgICAgICAxMDQsICAvLyBhY3ItbmVtYQotICAgICAgICAxMDks
ICAvLyBQT1AyCi0gICAgICAgIDExMCwgIC8vIFBPUDMKLSAgICAgICAgMTExLCAgLy8gc3VucnBj
Ci0gICAgICAgIDExMywgIC8vIGF1dGgKLSAgICAgICAgMTE1LCAgLy8gU0ZUUAotICAgICAgICAx
MTcsICAvLyB1dWNwLXBhdGgKLSAgICAgICAgMTE5LCAgLy8gbm50cAotICAgICAgICAxMjMsICAv
LyBOVFAKLSAgICAgICAgMTM1LCAgLy8gbG9jLXNydiAvIGVwbWFwCi0gICAgICAgIDEzOSwgIC8v
IG5ldGJpb3MKLSAgICAgICAgMTQzLCAgLy8gSU1BUDIKLSAgICAgICAgMTc5LCAgLy8gQkdQCi0g
ICAgICAgIDM4OSwgIC8vIExEQVAKLSAgICAgICAgNDI3LCAgLy8gU0xQIChBbHNvIHVzZWQgYnkg
QXBwbGUgRmlsaW5nIFByb3RvY29sKQotICAgICAgICA0NjUsICAvLyBTTVRQK1NTTAotICAgICAg
ICA1MTIsICAvLyBwcmludCAvIGV4ZWMKLSAgICAgICAgNTEzLCAgLy8gbG9naW4KLSAgICAgICAg
NTE0LCAgLy8gc2hlbGwKLSAgICAgICAgNTE1LCAgLy8gcHJpbnRlcgotICAgICAgICA1MjYsICAv
LyB0ZW1wbwotICAgICAgICA1MzAsICAvLyBjb3VyaWVyCi0gICAgICAgIDUzMSwgIC8vIENoYXQK
LSAgICAgICAgNTMyLCAgLy8gbmV0bmV3cwotICAgICAgICA1NDAsICAvLyBVVUNQCi0gICAgICAg
IDU0OCwgIC8vIGFmcG92ZXJ0Y3AgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA1NTYsICAvLyBy
ZW1vdGVmcwotICAgICAgICA1NjMsICAvLyBOTlRQK1NTTAotICAgICAgICA1ODcsICAvLyBFU01U
UAotICAgICAgICA2MDEsICAvLyBzeXNsb2ctY29ubgotICAgICAgICA2MzYsICAvLyBMREFQK1NT
TAotICAgICAgICA5OTMsICAvLyBJTUFQK1NTTAotICAgICAgICA5OTUsICAvLyBQT1AzK1NTTAot
ICAgICAgICAyMDQ5LCAvLyBORlMKLSAgICAgICAgMzY1OSwgLy8gYXBwbGUtc2FzbCAvIFBhc3N3
b3JkU2VydmVyIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNDA0NSwgLy8gbG9ja2QKLSAgICAg
ICAgNDE5MCwgLy8gTWFuYWdlU2lldmUgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2MDAwLCAv
LyBYMTEKLSAgICAgICAgNjY2NSwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0g
ICAgICAgIDY2NjYsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2
NjY3LCAvLyBTdGFuZGFyZCBJUkMgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY4LCAvLyBB
bHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2OSwgLy8gQWx0ZXJuYXRl
IElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NzksIC8vIEFsdGVybmF0ZSBJUkMgU1NM
IFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY5NywgLy8gSVJDK1NTTCBbQXBwbGUgYWRkaXRp
b25dCi0gICAgICAgIGludmFsaWRQb3J0TnVtYmVyLCAvLyBVc2VkIHRvIGJsb2NrIGFsbCBpbnZh
bGlkIHBvcnQgbnVtYmVycwotICAgIH07Ci0KLSAgICAvLyBJZiB0aGUgcG9ydCBpcyBub3QgaW4g
dGhlIGJsb2NrZWQgcG9ydCBsaXN0LCBhbGxvdyBpdC4KLSAgICBBU1NFUlQoc3RkOjppc19zb3J0
ZWQoc3RkOjpiZWdpbihibG9ja2VkUG9ydExpc3QpLCBzdGQ6OmVuZChibG9ja2VkUG9ydExpc3Qp
KSk7Ci0gICAgaWYgKCFzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbihibG9ja2VkUG9ydExp
c3QpLCBzdGQ6OmVuZChibG9ja2VkUG9ydExpc3QpLCBwb3J0LnZhbHVlKCkpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEFsbG93IHBvcnRzIDIxIGFuZCAyMiBmb3IgRlRQIFVSTHMs
IGFzIE1vemlsbGEgZG9lcy4KLSAgICBpZiAoKHBvcnQudmFsdWUoKSA9PSAyMSB8fCBwb3J0LnZh
bHVlKCkgPT0gMjIpICYmIHVybC5wcm90b2NvbElzKCJmdHAiKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAvLyBBbGxvdyBhbnkgcG9ydCBudW1iZXIgaW4gYSBmaWxlIFVSTCwgc2luY2Ug
dGhlIHBvcnQgbnVtYmVyIGlzIGlnbm9yZWQuCi0gICAgaWYgKHVybC5wcm90b2NvbElzKCJmaWxl
IikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJp
bmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBBU1NFUlQo
cHJvdG9jb2xJc0ludGVybmFsKHVybCwgImRhdGEiKSk7Ci0KLSAgICAvLyBGSVhNRTogV2hhdCdz
IHRoZSByaWdodCBiZWhhdmlvciB3aGVuIHRoZSBVUkwgaGFzIGEgY29tbWEgZmlyc3QsIGJ1dCBh
IHNlbWljb2xvbiBsYXRlcj8KLSAgICAvLyBDdXJyZW50bHkgdGhpcyBjb2RlIHdpbGwgYnJlYWsg
YXQgdGhlIHNlbWljb2xvbiBpbiB0aGF0IGNhc2UuIE5vdCBzdXJlIHRoYXQncyBjb3JyZWN0Lgot
ICAgIGF1dG8gaW5kZXggPSB1cmwuZmluZCgnOycsIDUpOwotICAgIGlmIChpbmRleCA9PSBub3RG
b3VuZCkKLSAgICAgICAgaW5kZXggPSB1cmwuZmluZCgnLCcsIDUpOwotICAgIGlmIChpbmRleCA9
PSBub3RGb3VuZCkgewotICAgICAgICAvLyBGSVhNRTogVGhlcmUgd2FzIGFuIG9sZCBjb21tZW50
IGhlcmUgdGhhdCBtYWRlIGl0IHNvdW5kIGxpa2UgdGhpcyBzaG91bGQgYmUgcmV0dXJuaW5nIHRl
eHQvcGxhaW4uCi0gICAgICAgIC8vIEJ1dCB3ZSBoYXZlIGJlZW4gcmV0dXJuaW5nIGVtcHR5IHN0
cmluZyBoZXJlIGZvciBzb21lIHRpbWUsIHNvIG5vdCBjaGFuZ2luZyBpdHMgYmVoYXZpb3IgYXQg
dGhpcyB0aW1lLgotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICB9Ci0gICAgaWYg
KGluZGV4ID09IDUpCi0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiJfczsKLSAgICBBU1NFUlQo
aW5kZXggPj0gNSk7Ci0gICAgcmV0dXJuIHVybC5zdWJzdHJpbmcoNSwgaW5kZXggLSA1KS5jb252
ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotfQotCi1TdHJpbmcgVVJMOjpzdHJpbmdDZW50ZXJFbGxp
cHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoKSBjb25zdAotewotICAgIGlmIChzdHJpbmco
KS5sZW5ndGgoKSA8PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiBzdHJpbmcoKTsKLQotICAgIHJl
dHVybiBzdHJpbmcoKS5sZWZ0KGxlbmd0aCAvIDIgLSAxKSArICIuLi4iICsgc3RyaW5nKCkucmln
aHQobGVuZ3RoIC8gMiAtIDIpOwotfQotCi1VUkwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFy
dChjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGFydCkKLXsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCAi
d2Via2l0LWZha2UtdXJsOi8vIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSArICcvJyAr
IHJlbGF0aXZlUGFydCk7Ci19Ci0KLVVSTCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCAiZmlsZTov
Ly8iICsgZmlsZVBhdGgpOwotfQotCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBVUkwmIHVybCkKLXsKLSAgICB0cyA8PCB1cmwuc3RyaW5nKCk7Ci0gICAgcmV0
dXJuIHRzOwotfQotCi0jaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKFNPVVApCi1zdGF0aWMg
Ym9vbCBpc0lQdjRBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGF1dG8gY291bnQg
PSAwOwotCi0gICAgZm9yIChjb25zdCBhdXRvIG9jdGV0IDogc3RyaW5nLnNwbGl0QWxsb3dpbmdF
bXB0eUVudHJpZXMoJy4nKSkgewotICAgICAgICBpZiAoY291bnQgPj0gNCkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IG9jdGV0Lmxlbmd0
aCgpOwotICAgICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggPiAzKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgIGF1dG8gdmFsdWUgPSAwOwotICAgICAgICBmb3IgKGF1dG8g
aSA9IDB1OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8gZGlnaXQg
PSBvY3RldFtpXTsKLQotICAgICAgICAgICAgLy8gUHJvaGliaXQgbGVhZGluZyB6ZXJvZXMuCi0g
ICAgICAgICAgICBpZiAoZGlnaXQgPiAnOScgfHwgZGlnaXQgPCAoIWkgJiYgbGVuZ3RoID4gMSA/
ICcxJyA6ICcwJykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAg
ICB2YWx1ZSA9IDEwICogdmFsdWUgKyAoZGlnaXQgLSAnMCcpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHZhbHVlID4gMjU1KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IGNvdW50Kys7Ci0gICAgfQotCi0gICAgcmV0dXJuIChjb3VudCA9PSA0KTsKLX0KLQotc3RhdGlj
IGJvb2wgaXNJUHY2QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBlbnVtIFNraXBT
dGF0ZSB7IE5vbmUsIFdpbGxTa2lwLCBTa2lwcGluZywgU2tpcHBlZCwgRmluYWwgfTsKLSAgICBh
dXRvIHNraXBTdGF0ZSA9IE5vbmU7Ci0gICAgYXV0byBjb3VudCA9IDA7Ci0KLSAgICBmb3IgKGNv
bnN0IGF1dG8gaGV4dGV0IDogc3RyaW5nLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJzonKSkg
ewotICAgICAgICBpZiAoY291bnQgPj0gOCB8fCBza2lwU3RhdGUgPT0gRmluYWwpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgY29uc3QgYXV0byBsZW5ndGggPSBoZXh0ZXQu
bGVuZ3RoKCk7Ci0gICAgICAgIGlmICghbGVuZ3RoKSB7Ci0gICAgICAgICAgICAvLyA6OiBtYXkg
YmUgdXNlZCBhbnl3aGVyZSB0byBza2lwIDEgdG8gOCBoZXh0ZXRzLCBidXQgb25seSBvbmNlLgot
ICAgICAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBTa2lwcGVkKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBOb25lKQotICAgICAg
ICAgICAgICAgIHNraXBTdGF0ZSA9ICFjb3VudCA/IFdpbGxTa2lwIDogU2tpcHBpbmc7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChza2lwU3RhdGUgPT0gV2lsbFNraXApCi0gICAgICAgICAgICAgICAg
c2tpcFN0YXRlID0gU2tpcHBpbmc7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
c2tpcFN0YXRlID0gRmluYWw7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChza2lwU3RhdGUgPT0gV2lsbFNraXApCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAgICAgaWYgKHNraXBTdGF0ZSA9PSBTa2lwcGluZykKLSAgICAgICAgICAgIHNr
aXBTdGF0ZSA9IFNraXBwZWQ7Ci0KLSAgICAgICAgaWYgKGxlbmd0aCA+IDQpIHsKLSAgICAgICAg
ICAgIC8vIEFuIElQdjQgYWRkcmVzcyBtYXkgYmUgdXNlZCBpbiBwbGFjZSBvZiB0aGUgZmluYWwg
dHdvIGhleHRldHMuCi0gICAgICAgICAgICBpZiAoKHNraXBTdGF0ZSA9PSBOb25lICYmIGNvdW50
ICE9IDYpIHx8IChza2lwU3RhdGUgPT0gU2tpcHBlZCAmJiBjb3VudCA+PSA2KSB8fCAhaXNJUHY0
QWRkcmVzcyhoZXh0ZXQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICAgICAgc2tpcFN0YXRlID0gRmluYWw7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byBjb2RlVW5pdCA6IGhleHRldC5jb2RlVW5pdHMo
KSkgewotICAgICAgICAgICAgLy8gSVB2NiBhbGxvd3MgbGVhZGluZyB6ZXJvZXMuCi0gICAgICAg
ICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChjb2RlVW5pdCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgY291bnQrKzsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gKGNvdW50ID09IDggJiYgc2tpcFN0YXRlID09IE5vbmUpIHx8IHNraXBTdGF0ZSA9PSBT
a2lwcGVkIHx8IHNraXBTdGF0ZSA9PSBGaW5hbDsKLX0KLQotYm9vbCBVUkw6Omhvc3RJc0lQQWRk
cmVzcyhTdHJpbmdWaWV3IGhvc3QpCi17Ci0gICAgaWYgKGhvc3QuZmluZCgnOicpID09IG5vdEZv
dW5kKQotICAgICAgICByZXR1cm4gaXNJUHY0QWRkcmVzcyhob3N0KTsKLQotICAgIHJldHVybiBp
c0lQdjZBZGRyZXNzKGhvc3QpOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhODE4YmE1
ZGRlNzU5ZmJjZjBlOTA1ZjRhOWY1MTU3ZGI4MTY2MGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwzOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci0jaWYgVVNFKENGKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTCogQ0ZVUkxSZWY7Ci0j
ZW5kaWYKLQotI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCi0jZW5k
aWYKLQotI2lmIFVTRShGT1VOREFUSU9OKQotT0JKQ19DTEFTUyBOU1VSTDsKLSNlbmRpZgotCi1u
YW1lc3BhY2UgV1RGIHsKLWNsYXNzIFRleHRTdHJlYW07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgVVJMVGV4dEVuY29kaW5nIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIFZlY3Rv
cjx1aW50OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIH5VUkxUZXh0RW5jb2RpbmcoKSB7IH07Ci19OwotCi1zdHJ1Y3QgVVJMSGFzaDsK
LQotY2xhc3MgVVJMIHsKLXB1YmxpYzoKLSAgICAvLyBHZW5lcmF0ZXMgYSBVUkwgd2hpY2ggY29u
dGFpbnMgYSBudWxsIHN0cmluZy4KLSAgICBVUkwoKSB7IGludmFsaWRhdGUoKTsgfQotCi0gICAg
ZXhwbGljaXQgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCk7IH0KLQotICAgIC8vIFJlc29sdmVzIHRoZSByZWxhdGl2ZSBVUkwgd2l0aCB0aGUgZ2l2ZW4g
YmFzZSBVUkwuIElmIHByb3ZpZGVkLCB0aGUKLSAgICAvLyBVUkxUZXh0RW5jb2RpbmcgaXMgdXNl
ZCB0byBlbmNvZGUgbm9uLUFTQ0lJIGNoYXJhY2Vycy4gVGhlIGJhc2UgVVJMIGNhbiBiZQotICAg
IC8vIG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHJlbGF0aXZlIFVSTCB3aWxsIGJl
IGludGVycHJldGVkIGFzCi0gICAgLy8gYWJzb2x1dGUuCi0gICAgLy8gRklYTUU6IElmIHRoZSBi
YXNlIFVSTCBpcyBpbnZhbGlkLCB0aGlzIGFsd2F5cyBjcmVhdGVzIGFuIGludmFsaWQKLSAgICAv
LyBVUkwuIEluc3RlYWQgSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gdHJlYXQgYWxsIGlu
dmFsaWQgYmFzZSBVUkxzCi0gICAgLy8gdGhlIHNhbWUgd2F5IHdlIHRyZWF0ZSBudWxsIGFuZCBl
bXB0eSBiYXNlIFVSTHMuCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMKGNvbnN0IFVSTCYgYmFzZSwg
Y29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiA9IG51bGxwdHIp
OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFVSTCBmYWtlVVJMV2l0aFJlbGF0aXZlUGFy
dChjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVVJMIGZpbGVVUkxX
aXRoRmlsZVN5c3RlbVBhdGgoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBTdHJpbmcgc3RyaXBwZWRG
b3JVc2VBc1JlZmVycmVyKCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGFib3ZlIGZ1bmN0
aW9ucyBzaG91bGQgYmUgaGFybW9uaXplZCBzbyB0aGF0IHBhc3NpbmcgYQotICAgIC8vIGJhc2Ug
b2YgbnVsbCBvciB0aGUgZW1wdHkgc3RyaW5nIGdpdmVzIHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUK
LSAgICAvLyBzdGFuZGFyZCBTdHJpbmcgY29uc3RydWN0b3IuCi0KLSAgICAvLyBNYWtlcyBhIGRl
ZXAgY29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIFVSTCBvbiBhbm90aGVy
Ci0gICAgLy8gdGhyZWFkLiBTaW5jZSB0aGUgdW5kZXJseWluZyBTdHJpbmdJbXBsIG9iamVjdHMg
YXJlIGltbXV0YWJsZSwgdGhlcmUncwotICAgIC8vIG5vIG90aGVyIHJlYXNvbiB0byBldmVyIHBy
ZWZlciBpc29sYXRlZENvcHkoKSBvdmVyIHBsYWluIG9sZCBhc3NpZ25tZW50LgotICAgIFdFQkNP
UkVfRVhQT1JUIFVSTCBpc29sYXRlZENvcHkoKSBjb25zdDsKLQotICAgIGJvb2wgaXNOdWxsKCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3Q7Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgeW91IGNhbiBzZXQgdGhlIGhvc3QgYW5kIHBv
cnQgZm9yIHRoZSBVUkwuCi0gICAgLy8gTm9uLWhpZXJhcmNoaWNhbCBVUkxzIGRvbid0IGhhdmUg
YSBob3N0IGFuZCBwb3J0LgotICAgIGJvb2wgY2FuU2V0SG9zdE9yUG9ydCgpIGNvbnN0IHsgcmV0
dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KLQotICAgIGJvb2wgY2FuU2V0UGF0aG5hbWUoKSBjb25z
dCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9Ci0gICAgYm9vbCBpc0hpZXJhcmNoaWNhbCgp
IGNvbnN0OwotCi0gICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZzsgfQotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGggPSAxMDI0KSBjb25zdDsKLQotICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZ1ZpZXcgcHJvdG9jb2woKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmdWaWV3IGhvc3QoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PHVpbnQxNl90PiBwb3J0KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGhvc3RB
bmRQb3J0KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByb3RvY29sSG9zdEFu
ZFBvcnQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdXNlcigpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXNzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHBhdGgoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbGFzdFBh
dGhDb21wb25lbnQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcXVlcnkoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25z
dDsKLQotICAgIGJvb2wgaGFzVXNlcm5hbWUoKSBjb25zdDsKLSAgICBib29sIGhhc1Bhc3N3b3Jk
KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNRdWVyeSgpIGNvbnN0OwotICAgIGJvb2wgaGFzRnJhZ21l
bnQoKSBjb25zdDsKLSAgICBib29sIGhhc1BhdGgoKSBjb25zdDsKLQotICAgIC8vIFVubGlrZSB1
c2VyKCkgYW5kIHBhc3MoKSwgdGhlc2UgZnVuY3Rpb25zIGRvbid0IGRlY29kZSBlc2NhcGUgc2Vx
dWVuY2VzLgotICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBhY2N1cmF0ZSByb3VuZC10cmlw
cGluZywgYmVjYXVzZSBlbmNvZGluZyBkb2Vzbid0IGVuY29kZSAnJScgY2hhcmFjdGVycy4KLSAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZW5jb2RlZFVzZXIoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgZW5jb2RlZFBhc3MoKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBiYXNlQXNTdHJpbmcoKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBmaWxlU3lzdGVtUGF0aCgpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBj
dXJyZW50IFVSTCdzIHByb3RvY29sIGlzIHRoZSBzYW1lIGFzIHRoZSBudWxsLQotICAgIC8vIHRl
cm1pbmF0ZWQgQVNDSUkgYXJndW1lbnQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGxvd2VyLWNhc2Uu
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25zdDsK
LSAgICBib29sIHByb3RvY29sSXMoU3RyaW5nVmlldykgY29uc3Q7Ci0gICAgYm9vbCBwcm90b2Nv
bElzQmxvYigpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImJsb2IiKTsgfQotICAgIGJvb2wg
cHJvdG9jb2xJc0RhdGEoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KLSAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXNBYm91dCgpIGNvbnN0OwotICAgIGJvb2wg
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNMb2NhbEZpbGUoKSBjb25zdDsKLSAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7
IHJldHVybiBtX2Nhbm5vdEJlQUJhc2VVUkw7IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNv
bnN0IFN0cmluZyYpOwotCi0gICAgdm9pZCByZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0
KHVuc2lnbmVkIHNob3J0KTsKLQotICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJm
b28uY29tOjgwMDAiLgotICAgIHZvaWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0K
LSAgICB2b2lkIHNldFVzZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0
IFN0cmluZyYpOwotCi0gICAgLy8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBv
ciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5nIHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBhdGgoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBU
aGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUg
d2lsbCBiZSBhZGRlZAotICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBl
bXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKLSAgICAvLyBVUkwgKHdpdGggbm90
aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3KTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmllcigpOwot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaG9zdElzSVBBZGRyZXNzKFN0cmluZ1Zp
ZXcpOwotCi0gICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0
aEVuZCgpIGNvbnN0OwotICAgIHVuc2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0Owot
Ci0gICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9
Ci0KLSNpZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMKENGVVJMUmVmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0j
ZW5kaWYKLQotI2lmIFVTRShTT1VQKQotICAgIFVSTChTb3VwVVJJKik7Ci0gICAgR1VuaXF1ZVB0
cjxTb3VwVVJJPiBjcmVhdGVTb3VwVVJJKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShGT1VO
REFUSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIFVSTChOU1VSTCopOwotICAgIFdFQkNPUkVfRVhQ
T1JUIG9wZXJhdG9yIE5TVVJMKigpIGNvbnN0OwotI2VuZGlmCi0jaWZkZWYgX19PQkpDX18KLSAg
ICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKTsgfQotI2VuZGlm
Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBwcmludCgpIGNvbnN0OwotI2VuZGlmCi0KLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYs
IFVSTCYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxVUkw+IGRlY29kZShEZWNvZGVyJik7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFVS
TFBhcnNlcjsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKLSAgICBzdGF0
aWMgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKLSAgICB2b2lk
IGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdDsKLSAgICB1bnNp
Z25lZCBob3N0U3RhcnQoKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29s
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVx
dWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBi
b29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci0KLSAgICBTdHJpbmcg
bV9zdHJpbmc7Ci0KLSAgICB1bnNpZ25lZCBtX2lzVmFsaWQgOiAxOwotICAgIHVuc2lnbmVkIG1f
cHJvdG9jb2xJc0luSFRUUEZhbWlseSA6IDE7Ci0gICAgdW5zaWduZWQgbV9jYW5ub3RCZUFCYXNl
VVJMIDogMTsKLQotICAgIC8vIFRoaXMgaXMgb3V0IG9mIG9yZGVyIHRvIGFsaWduIHRoZSBiaXRz
IGJldHRlci4gVGhlIHBvcnQgaXMgYWZ0ZXIgdGhlIGhvc3QuCi0gICAgdW5zaWduZWQgbV9wb3J0
TGVuZ3RoIDogMzsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFBvcnRMZW5ndGgg
PSAoMSA8PCAzKSAtIDE7Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heFNjaGVt
ZUxlbmd0aCA9ICgxIDw8IDI2KSAtIDE7Ci0gICAgdW5zaWduZWQgbV9zY2hlbWVFbmQgOiAyNjsK
LSAgICB1bnNpZ25lZCBtX3VzZXJTdGFydDsKLSAgICB1bnNpZ25lZCBtX3VzZXJFbmQ7Ci0gICAg
dW5zaWduZWQgbV9wYXNzd29yZEVuZDsKLSAgICB1bnNpZ25lZCBtX2hvc3RFbmQ7Ci0gICAgdW5z
aWduZWQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgdW5zaWduZWQgbV9wYXRoRW5kOwotICAg
IHVuc2lnbmVkIG1fcXVlcnlFbmQ7Ci19OwotCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihVUkwpID09
IHNpemVvZihTdHJpbmcpICsgOCAqIHNpemVvZih1bnNpZ25lZCksICJVUkwgc2hvdWxkIHN0YXkg
c21hbGwiKTsKLQotdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+Ci12b2lkIFVSTDo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX3N0cmluZzsKLX0KLQot
dGVtcGxhdGUgPGNsYXNzIERlY29kZXI+Ci1ib29sIFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFVSTCYgdXJsKQotewotICAgIGF1dG8gb3B0aW9uYWxVUkwgPSBVUkw6OmRlY29kZShkZWNv
ZGVyKTsKLSAgICBpZiAoIW9wdGlvbmFsVVJMKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
dXJsID0gV1RGTW92ZSgqb3B0aW9uYWxVUkwpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1w
bGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KLXN0ZDo6b3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQotewotICAgIFN0cmluZyBzdHJpbmc7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzdHJpbmcpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBV
UkwoVVJMKCksIHN0cmluZyk7Ci19Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQ
T1JUIGJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3Qg
VVJMJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaG9zdHNBcmVFcXVh
bChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLQotV0VCQ09SRV9FWFBPUlQgY29uc3QgVVJMJiBi
bGFua1VSTCgpOwotCi0vLyBGdW5jdGlvbnMgdG8gZG8gVVJMIG9wZXJhdGlvbnMgb24gc3RyaW5n
cy4KLS8vIFRoZXNlIGFyZSBvcGVyYXRpb25zIHRoYXQgYXJlbid0IGZhc3RlciBvbiBhIHBhcnNl
ZCBVUkwuCi0vLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJvbSB0aGUgVVJMIGZ1bmN0aW9u
cyBpbiB0aGF0IHRoZXkgZG9uJ3QgcmVxdWlyZSB0aGUgc3RyaW5nIHRvIGJlIGEgdmFsaWQgYW5k
IHBhcnNhYmxlIFVSTC4KLS8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgYmVjYXVzZSB2
YWxpZCBqYXZhc2NyaXB0IFVSTHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaWRlcmVkIHZhbGlk
IGJ5IFVSTC4KLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29s
SXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3Jp
cHQoU3RyaW5nVmlldyB1cmwpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsKLQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVm
YXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcg
cHJvdG9jb2wpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsg
Ly8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNv
dXJjZXMuCi0KLVdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3Rv
Y29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKLVdF
QkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGlu
ZygpOwotCi1ib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKLQotU3RyaW5nIG1p
bWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwotCi0vLyBGSVhNRTogVGhpcyBp
cyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3NlLCBkaWZmZXJlbnQgcGFydHMgb2YgYSBVUkwgbmVl
ZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRoZSBVUkwgU3RhbmRhcmQuCi1XRUJDT1JFX0VYUE9S
VCBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKLQot
Ly8gSW5saW5lcy4KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0
IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOwotfQotCi1p
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewot
ICAgIHJldHVybiBhLnN0cmluZygpID09IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5zdHJp
bmcoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFVS
TCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiLnN0cmluZygpOwotfQotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAg
IHJldHVybiBhLnN0cmluZygpICE9IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgIT0gYi5zdHJpbmco
KTsKLX0KLQotLy8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlv
bnMgc28gd2UgY2FuIGdldCBpbmxpbmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxv
dCBvZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KLQotaW5saW5lIGJvb2wg
VVJMOjppc051bGwoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5pc051bGwoKTsKLX0K
LQotaW5saW5lIGJvb2wgVVJMOjppc0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJp
bmcuaXNFbXB0eSgpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2lzVmFsaWQ7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUGF0aCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7
Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzVXNlcm5hbWUoKSBjb25zdAotewotICAgIHJldHVy
biBtX3VzZXJFbmQgPiBtX3VzZXJTdGFydDsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpoYXNQYXNz
d29yZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFzc3dvcmRFbmQgPiAobV91c2VyRW5kICsg
MSk7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzUXVlcnkoKSBjb25zdAotewotICAgIHJldHVy
biBtX3F1ZXJ5RW5kID4gbV9wYXRoRW5kOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdt
ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fc3RyaW5nLmxlbmd0aCgp
ID4gbV9xdWVyeUVuZDsKLX0KLQotaW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwotfQot
Ci1pbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoU3RhcnQoKSBjb25zdAotewotICAgIHJldHVybiBt
X2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhF
bmQoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhdGhFbmQ7Ci19Ci0KLWlubGluZSB1bnNpZ25l
ZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEFm
dGVyTGFzdFNsYXNoOwotfQotCi1XVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgY29uc3QgVVJMJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNw
YWNlIFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+Owot
dGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+OwotfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQxZDBhYjk2ZGEzNWQzMWFjOGRiNGViNGRhYmQzZjRlMTU5MmI4MWIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMSGFzaC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVSTEhhc2hfaAot
I2RlZmluZSBVUkxIYXNoX2gKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0gICAgc3RydWN0IFVSTEhhc2ggewotICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGtleS5zdHJpbmcoKS5pbXBsKCktPmhhc2goKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIFVSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3Ig
U3RyaW5nCi10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+IHsKLSAg
ICB1c2luZyBIYXNoID0gV2ViQ29yZTo6VVJMSGFzaDsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8V2ViQ29yZTo6VVJMPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJDb3Jl
OjpVUkw+IHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBVUkxIYXNoX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxN2JhYzQ5ZDliNjVkZThiMTA0ZDVhNmY3NWIyNTgwYjhiODkyYzZkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTFBhcnNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTI2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIu
aCIKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKLSNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1
bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi0jZGVmaW5lIFVSTF9QQVJTRVJfREVCVUdHSU5HIDAKLQotI2lmIFVSTF9Q
QVJTRVJfREVCVUdHSU5HCi0jZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4uLikgTE9HKFVSTFBhcnNl
ciwgX19WQV9BUkdTX18pCi0jZWxzZQotI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pCi0jZW5k
aWYKLSAgICAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1jbGFzcyBDb2RlUG9p
bnRJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRv
cigpIHsgfQotICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ2hhcmFj
dGVyVHlwZSogYmVnaW4sIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCkKLSAgICAgICAgOiBtX2Jl
Z2luKGJlZ2luKQotICAgICAgICAsIG1fZW5kKGVuZCkKLSAgICB7Ci0gICAgfQotICAgIAotICAg
IEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3IoY29uc3QgQ29kZVBvaW50SXRlcmF0b3Im
IGJlZ2luLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgZW5kKQotICAgICAgICA6IENvZGVQb2lu
dEl0ZXJhdG9yKGJlZ2luLm1fYmVnaW4sIGVuZC5tX2JlZ2luKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGVuZC5tX2JlZ2luID49IGJlZ2luLm1fYmVnaW4pOwotICAgIH0KLSAgICAKLSAgICBBTFdB
WVNfSU5MSU5FIFVDaGFyMzIgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgQUxXQVlTX0lOTElORSBD
b2RlUG9pbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwotCi0gICAgQUxXQVlTX0lOTElORSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9iZWdpbgotICAgICAgICAgICAgJiYg
bV9lbmQgPT0gb3RoZXIubV9lbmQ7Ci0gICAgfQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJh
dG9yJiBvcGVyYXRvcj0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKQotICAgIHsKLSAg
ICAgICAgbV9iZWdpbiA9IG90aGVyLm1fYmVnaW47Ci0gICAgICAgIG1fZW5kID0gb3RoZXIubV9l
bmQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgYXRFbmQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fYmVnaW4gPD0gbV9lbmQp
OwotICAgICAgICByZXR1cm4gbV9iZWdpbiA+PSBtX2VuZDsKLSAgICB9Ci0gICAgCi0gICAgQUxX
QVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2luY2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogcmVm
ZXJlbmNlKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fYmVnaW4gPj0gcmVmZXJlbmNl
KTsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4gLSByZWZlcmVuY2U7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSBzaXplX3QgY29kZVVuaXRzU2luY2UoY29uc3QgQ29kZVBvaW50SXRlcmF0b3Im
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvZGVVbml0c1NpbmNlKG90aGVy
Lm1fYmVnaW4pOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgY29uc3QgQ2hhcmFjdGVyVHlw
ZSogbV9iZWdpbiB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2VuZCB7
IG51bGxwdHIgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgVUNoYXIzMiBDb2Rl
UG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFh
dEVuZCgpKTsKLSAgICByZXR1cm4gKm1fYmVnaW47Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19J
TkxJTkUgYXV0byBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj46Om9wZXJhdG9yKysoKSAtPiBDb2Rl
UG9pbnRJdGVyYXRvciYKLXsKLSAgICBtX2JlZ2luKys7Ci0gICAgcmV0dXJuICp0aGlzOwotfQot
Ci10ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIFVDaGFyMzIgQ29kZVBvaW50SXRlcmF0b3I8VUNo
YXI+OjpvcGVyYXRvciooKSBjb25zdAotewotICAgIEFTU0VSVCghYXRFbmQoKSk7Ci0gICAgVUNo
YXIzMiBjOwotICAgIFUxNl9HRVQobV9iZWdpbiwgMCwgMCwgbV9lbmQgLSBtX2JlZ2luLCBjKTsK
LSAgICByZXR1cm4gYzsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBhdXRvIENvZGVQ
b2ludEl0ZXJhdG9yPFVDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgot
ewotICAgIHVuc2lnbmVkIGkgPSAwOwotICAgIHNpemVfdCBsZW5ndGggPSBtX2VuZCAtIG1fYmVn
aW47Ci0gICAgVTE2X0ZXRF8xKG1fYmVnaW4sIGksIGxlbmd0aCk7Ci0gICAgbV9iZWdpbiArPSBp
OwotICAgIHJldHVybiAqdGhpczsKLX0KLSAgICAKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQg
YXBwZW5kQ29kZVBvaW50KFZlY3RvcjxVQ2hhcj4mIGRlc3RpbmF0aW9uLCBVQ2hhcjMyIGNvZGVQ
b2ludCkKLXsKLSAgICBpZiAoVV9JU19CTVAoY29kZVBvaW50KSkgewotICAgICAgICBkZXN0aW5h
dGlvbi5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNvZGVQb2ludCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGRlc3RpbmF0aW9uLnJlc2VydmVDYXBhY2l0eShkZXN0aW5hdGlvbi5z
aXplKCkgKyAyKTsKLSAgICBkZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X0xFQUQoY29k
ZVBvaW50KSk7Ci0gICAgZGVzdGluYXRpb24udW5jaGVja2VkQXBwZW5kKFUxNl9UUkFJTChjb2Rl
UG9pbnQpKTsKLX0KLQotZW51bSBVUkxDaGFyYWN0ZXJDbGFzcyB7Ci0gICAgVXNlckluZm8gPSAw
eDEsCi0gICAgRGVmYXVsdCA9IDB4MiwKLSAgICBGb3JiaWRkZW5Ib3N0ID0gMHg0LAotICAgIFF1
ZXJ5UGVyY2VudCA9IDB4OCwKLSAgICBTbGFzaFF1ZXN0aW9uT3JIYXNoID0gMHgxMCwKLSAgICBW
YWxpZFNjaGVtZSA9IDB4MjAsCi19OwotCi1zdGF0aWMgY29uc3QgdWludDhfdCBjaGFyYWN0ZXJD
bGFzc1RhYmxlWzI1Nl0gPSB7Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHgwCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDEKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MgotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgzCi0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDQKLSAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFF1ZXJ5UGVyY2VudCwgLy8gMHg2Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDcKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
OAotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3Qs
IC8vIDB4OQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRl
bkhvc3QsIC8vIDB4QQotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8g
MHhCCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEMKLSAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAweEQK
LSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4RQotICAgIFVzZXJJ
bmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhGCi0gICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEwCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAweDExCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50
LCAvLyAweDEyCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDEz
Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE0Ci0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE1Ci0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDE2Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweDE3Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJj
ZW50LCAvLyAweDE4Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAw
eDE5Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFBCi0gICAg
VXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFCCi0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDFDCi0gICAgVXNlckluZm8gfCBEZWZhdWx0
IHwgUXVlcnlQZXJjZW50LCAvLyAweDFECi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweDFFCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDFGCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVu
SG9zdCwgLy8gJyAnCi0gICAgMCwgLy8gJyEnCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVl
cnlQZXJjZW50LCAvLyAnIicKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQg
fCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJyMnCi0gICAgMCwgLy8g
JyQnCi0gICAgRm9yYmlkZGVuSG9zdCwgLy8gJyUnCi0gICAgMCwgLy8gJyYnCi0gICAgMCwgLy8g
J1wnJwotICAgIDAsIC8vICcoJwotICAgIDAsIC8vICcpJwotICAgIDAsIC8vICcqJwotICAgIFZh
bGlkU2NoZW1lLCAvLyAnKycKLSAgICAwLCAvLyAnLCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJy0n
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICcuJwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlvbk9y
SGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICcvJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMCcKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJzEnCi0gICAgVmFsaWRTY2hlbWUsIC8vICcyJwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnMycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzQnCi0gICAgVmFsaWRTY2hlbWUs
IC8vICc1JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnNicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzcn
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICc4JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnOScKLSAgICBV
c2VySW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICc6JwotICAgIFVzZXJJbmZvLCAvLyAnOycKLSAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAn
PCcKLSAgICBVc2VySW5mbywgLy8gJz0nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gJz4nCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
U2xhc2hRdWVzdGlvbk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICc/JwotICAgIFVzZXJJbmZv
IHwgRm9yYmlkZGVuSG9zdCwgLy8gJ0AnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdBJwotICAgIFZh
bGlkU2NoZW1lLCAvLyAnQicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0MnCi0gICAgVmFsaWRTY2hl
bWUsIC8vICdEJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnRScKLSAgICBWYWxpZFNjaGVtZSwgLy8g
J0YnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdHJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSCcKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJ0knCi0gICAgVmFsaWRTY2hlbWUsIC8vICdKJwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnSycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0wnCi0gICAgVmFsaWRTY2hlbWUs
IC8vICdNJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnTicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ08n
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICdQJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnUScKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ1InCi0gICAgVmFsaWRTY2hlbWUsIC8vICdTJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnVCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1UnCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICdWJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnVycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1gnCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdZJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnWicKLSAgICBVc2Vy
SW5mbyB8IEZvcmJpZGRlbkhvc3QsIC8vICdbJwotICAgIFVzZXJJbmZvIHwgU2xhc2hRdWVzdGlv
bk9ySGFzaCB8IEZvcmJpZGRlbkhvc3QsIC8vICdcXCcKLSAgICBVc2VySW5mbyB8IEZvcmJpZGRl
bkhvc3QsIC8vICddJwotICAgIFVzZXJJbmZvLCAvLyAnXicKLSAgICAwLCAvLyAnXycKLSAgICBV
c2VySW5mbyB8IERlZmF1bHQsIC8vICdgJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnYScKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ2InCi0gICAgVmFsaWRTY2hlbWUsIC8vICdjJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnZCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2UnCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICdmJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnZycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2gnCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdpJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnaicKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ2snCi0gICAgVmFsaWRTY2hlbWUsIC8vICdsJwotICAgIFZhbGlkU2NoZW1l
LCAvLyAnbScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ24nCi0gICAgVmFsaWRTY2hlbWUsIC8vICdv
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAncCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3EnCi0gICAg
VmFsaWRTY2hlbWUsIC8vICdyJwotICAgIFZhbGlkU2NoZW1lLCAvLyAncycKLSAgICBWYWxpZFNj
aGVtZSwgLy8gJ3QnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd1JwotICAgIFZhbGlkU2NoZW1lLCAv
LyAndicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3cnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd4Jwot
ICAgIFZhbGlkU2NoZW1lLCAvLyAneScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3onCi0gICAgVXNl
ckluZm8gfCBEZWZhdWx0LCAvLyAneycKLSAgICBVc2VySW5mbywgLy8gJ3wnCi0gICAgVXNlcklu
Zm8gfCBEZWZhdWx0LCAvLyAnfScKLSAgICAwLCAvLyAnficKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4N0YKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
ODEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODMK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODUKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4ODYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODcKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4ODgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4ODkKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OEEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEIKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OEMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEQKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4OEUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OEYKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4OTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTEKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4OTIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
OTQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTYK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OTgKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4OTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUEKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4OUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUMKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4OUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4OUUKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4OUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTAKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTIKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTQKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QTkK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUIKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QUMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUQKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QUUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QUYKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QjAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjEKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QjIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjMKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QjQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjUKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QjYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjcKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4QjgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QjkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
QkEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkMK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QkUKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4QkYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzAKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4QzEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzIKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4QzMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzQKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4QzUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzYKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4QzcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4QzgKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4QzkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0EKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4Q0IKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0MKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
Q0QKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0UKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4Q0YK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDEKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RDIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDMKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RDQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDUKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RDYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDcKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RDgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RDkKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4REEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REIKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4REMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REQKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4REUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4REYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RTAKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTIK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTQKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RTUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTYKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RTcKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RTgKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RTkKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUEKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RUIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUMKLSAgICBRdWVyeVBlcmNl
bnQsIC8vIDB4RUQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RUUKLSAgICBRdWVyeVBlcmNlbnQs
IC8vIDB4RUYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjAKLSAgICBRdWVyeVBlcmNlbnQsIC8v
IDB4RjEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjIKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4
RjMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjQKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjUK
LSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjYKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjcKLSAg
ICBRdWVyeVBlcmNlbnQsIC8vIDB4RjgKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RjkKLSAgICBR
dWVyeVBlcmNlbnQsIC8vIDB4RkEKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkIKLSAgICBRdWVy
eVBlcmNlbnQsIC8vIDB4RkMKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkQKLSAgICBRdWVyeVBl
cmNlbnQsIC8vIDB4RkUKLSAgICBRdWVyeVBlcmNlbnQsIC8vIDB4RkYKLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENv
bnRyb2woQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweDFG
OyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGlzQzBDb250cm9sT3JTcGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gY2hhcmFjdGVyIDw9IDB4MjA7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNUYWJPck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAweEQgJiYgY2hhcmFjdGVyID49IDB4OSAm
JiBjaGFyYWN0ZXIgIT0gMHhCICYmIGNoYXJhY3RlciAhPSAweEM7IH0KLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblNpbXBsZUVu
Y29kZVNldChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyID4gMHg3
RSB8fCBpc0MwQ29udHJvbChjaGFyYWN0ZXIpOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSW5EZWZhdWx0RW5jb2RlU2V0KENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGNoYXJh
Y3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIERlZmF1bHQ7IH0KLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJblVzZXJJbmZvRW5j
b2RlU2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdF
IHx8IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFVzZXJJbmZvOyB9Ci10ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzUGVy
Y2VudE9yTm9uQVNDSUkoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuICFpc0FTQ0lJ
KGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09ICclJzsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1NsYXNoUXVlc3Rpb25Pckhh
c2goQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXFwnICYm
IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFNsYXNoUXVlc3Rpb25Pckhhc2g7IH0K
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJv
b2wgaXNWYWxpZFNjaGVtZUNoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gY2hhcmFjdGVyIDw9ICd6JyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBW
YWxpZFNjaGVtZTsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA8PSAnXScgJiYgY2hhcmFjdGVyQ2xhc3NUYWJs
ZVtjaGFyYWN0ZXJdICYgRm9yYmlkZGVuSG9zdDsgfQotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9v
bCBzaG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKHVpbnQ4X3QgYnl0ZSwgY29uc3QgYm9vbCYg
dXJsSXNTcGVjaWFsKQotewotICAgIGlmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2J5dGVdICYgUXVl
cnlQZXJjZW50KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoYnl0ZSA9PSAnXCcnICYm
IHVybElzU3BlY2lhbCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KFVDaGFyIGMpCi17Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OmlzSW5Vc2VySW5mb0VuY29kZVNldChjKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgVVJMUGFyc2VyOjpSZXBvcnRTeW50YXhWaW9sYXRp
b24gcmVwb3J0U3ludGF4VmlvbGF0aW9uPgotQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6
YWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xh
dGlvblBvc2l0aW9uKQotewotICAgICsraXRlcmF0b3I7Ci0gICAgd2hpbGUgKFVOTElLRUxZKCFp
dGVyYXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAg
IGlmIChyZXBvcnRTeW50YXhWaW9sYXRpb24gPT0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXMp
Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Q
b3NpdGlvbik7Ci0gICAgICAgICsraXRlcmF0b3I7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnRha2VzVHdvQWR2YW5jZXNVbnRp
bEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBp
ZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8
Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAg
IGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5j
ZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Ci0g
ICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFyc2VyOjppc1dpbmRvd3NEcml2ZUxl
dHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKLXsKLSAgICBp
ZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCAhaXNBU0NJSUFscGhhKCppdGVyYXRvcikpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZp
b2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICBpZiAoVU5MSUtFTFkoKml0ZXJhdG9yID09ICd8JykpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIFVS
TFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyIGNvZGVQb2ludCkKLXsKLSAgICBB
U1NFUlQoaXNBU0NJSShjb2RlUG9pbnQpKTsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50
YXhWaW9sYXRpb24pKQotICAgICAgICBtX2FzY2lpQnVmZmVyLmFwcGVuZChjb2RlUG9pbnQpOwot
fQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJQnVmZmVyKGNv
bnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKFVOTElLRUxZ
KG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKLSAgICAgICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQo
Y2hhcmFjdGVycywgbGVuZ3RoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KLXZvaWQgVVJMUGFyc2VyOjphcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQotewotICAgIEFTU0VSVChpc1dpbmRvd3NE
cml2ZUxldHRlcihpdGVyYXRvcikpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoKml0ZXJhdG9y
KTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLSAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkp
OwotICAgIEFTU0VSVCgqaXRlcmF0b3IgPT0gJzonIHx8ICppdGVyYXRvciA9PSAnfCcpOwotICAg
IGlmICgqaXRlcmF0b3IgPT0gJ3wnKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3Ip
OwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsK
LX0KLQotYm9vbCBVUkxQYXJzZXI6OmNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGNvbnN0IFVS
TCYgYmFzZSkKLXsKLSAgICBpZiAoYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9ydExlbmd0aCA8IGJhc2Uu
bV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICBpZiAoYmFzZS5tX3N0cmluZy5pczhCaXQoKSkg
ewotICAgICAgICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0
ZXJzOCgpOwotICAgICAgICAgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGMoYmVnaW4gKyBi
YXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3Ry
aW5nLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkg
ewotICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczE2
KCk7Ci0gICAgICAgICAgICBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4gYyhiZWdpbiArIGJhc2Uu
bV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcu
bGVuZ3RoKCkpOwotICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0g
ICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wg
VVJMUGFyc2VyOjpzaG91bGRDb3B5RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiBpdGVyYXRvcikKLXsKLSAgICBpZiAoIWlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9y
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0
b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgYWR2YW5jZShpdGVyYXRvcik7
Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiAhaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCppdGVyYXRvcik7Ci19Ci0KLXN0YXRpYyB2b2lk
IHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QgYnl0ZSwgVmVjdG9yPExDaGFyPiYgYnVmZmVyKQot
ewotICAgIGJ1ZmZlci5hcHBlbmQoJyUnKTsKLSAgICBidWZmZXIuYXBwZW5kKHVwcGVyTmliYmxl
VG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLSAgICBidWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9B
U0NJSUhleERpZ2l0KGJ5dGUpKTsKLX0KLQotdm9pZCBVUkxQYXJzZXI6OnBlcmNlbnRFbmNvZGVC
eXRlKHVpbnQ4X3QgYnl0ZSkKLXsKLSAgICBBU1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24p
OwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyUnKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGJ5dGUpKTsKLX0KLQotY29uc3QgY2hhciBy
ZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZFsxMF0gPSAiJUVGJUJGJUJEIjsK
LWNvbnN0IHNpemVfdCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0
aCA9IHNpemVvZihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCkgLSAxOwot
Ci10ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjp1dGY4UGVyY2VudEVuY29kZShj
b25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAg
QVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKLSAgICBVQ2hhcjMyIGNvZGVQb2ludCA9ICppdGVy
YXRvcjsKLSAgICBpZiAoTElLRUxZKGlzQVNDSUkoY29kZVBvaW50KSkpIHsKLSAgICAgICAgaWYg
KFVOTElLRUxZKGlzSW5Db2RlU2V0KGNvZGVQb2ludCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBv
aW50KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNv
ZGVQb2ludCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShpc0luQ29kZVNldChjb2RlUG9pbnQpLCAiaXNJbkNvZGVTZXQgc2hvdWxkIGFsd2F5cyByZXR1
cm4gdHJ1ZSBmb3Igbm9uLUFTQ0lJIGNoYXJhY3RlcnMiKTsKLSAgICBzeW50YXhWaW9sYXRpb24o
aXRlcmF0b3IpOwotICAgIAotICAgIGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkg
ewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBl
cmNlbnRFbmNvZGVkLCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0
aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgdWludDhfdCBidWZmZXJbVThf
TUFYX0xFTkdUSF07Ci0gICAgaW50MzJfdCBvZmZzZXQgPSAwOwotICAgIFU4X0FQUEVORF9VTlNB
RkUoYnVmZmVyLCBvZmZzZXQsIGNvZGVQb2ludCk7Ci0gICAgZm9yIChpbnQzMl90IGkgPSAwOyBp
IDwgb2Zmc2V0OyArK2kpCi0gICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGJ1ZmZlcltpXSk7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHZvaWQg
VVJMUGFyc2VyOjp1dGY4UXVlcnlFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mIGl0ZXJhdG9yKQotewotICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0g
ICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRlcmF0b3I7Ci0gICAgaWYgKExJS0VMWShpc0FTQ0lJ
KGNvZGVQb2ludCkpKSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWShzaG91bGRQZXJjZW50RW5jb2Rl
UXVlcnlCeXRlKGNvZGVQb2ludCwgbV91cmxJc1NwZWNpYWwpKSkgewotICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNv
ZGVQb2ludCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cihjb2RlUG9pbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHN5bnRheFZp
b2xhdGlvbihpdGVyYXRvcik7Ci0gICAgCi0gICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUihjb2Rl
UG9pbnQpKSB7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0
ZXJVVEY4UGVyY2VudEVuY29kZWQsIHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNv
ZGVkTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHVpbnQ4X3QgYnVmZmVy
W1U4X01BWF9MRU5HVEhdOwotICAgIGludDMyX3Qgb2Zmc2V0ID0gMDsKLSAgICBVOF9BUFBFTkRf
VU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCBjb2RlUG9pbnQpOwotICAgIGZvciAoaW50MzJfdCBpID0g
MDsgaSA8IG9mZnNldDsgKytpKSB7Ci0gICAgICAgIGF1dG8gYnl0ZSA9IGJ1ZmZlcltpXTsKLSAg
ICAgICAgaWYgKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNp
YWwpKQotICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnl0ZSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYnl0ZSk7Ci0gICAgfQotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmVuY29kZU5vblVU
RjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFVSTFRleHRFbmNvZGlu
ZyYgZW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQot
ewotICAgIGF1dG8gZW5jb2RlZCA9IGVuY29kaW5nLmVuY29kZUZvclVSTFBhcnNpbmcoU3RyaW5n
Vmlldyhzb3VyY2UuZGF0YSgpLCBzb3VyY2Uuc2l6ZSgpKSk7Ci0gICAgYXV0byogZGF0YSA9IGVu
Y29kZWQuZGF0YSgpOwotICAgIHNpemVfdCBsZW5ndGggPSBlbmNvZGVkLnNpemUoKTsKLSAgICAK
LSAgICBpZiAoIWxlbmd0aCA9PSAhaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIHNp
emVfdCBpID0gMDsKLSAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIEFTU0VS
VCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGRhdGFbaV07Ci0g
ICAgICAgIGlmIChVTkxJS0VMWShieXRlICE9ICppdGVyYXRvcikpIHsKLSAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBt
X3VybElzU3BlY2lhbCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3Ip
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcihieXRlKTsKLSAgICAgICAgKytpdGVyYXRvcjsKLSAgICB9Ci0gICAgd2hpbGUgKCFpdGVy
YXRvci5hdEVuZCgpICYmIGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpCi0gICAgICAgICsraXRl
cmF0b3I7Ci0gICAgQVNTRVJUKChpID09IGxlbmd0aCkgPT0gaXRlcmF0b3IuYXRFbmQoKSk7Ci0g
ICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBBU1NFUlQobV9kaWRTZWVTeW50
YXhWaW9sYXRpb24pOwotICAgICAgICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOwotICAgICAgICBp
ZiAoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCi0g
ICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihieXRlKTsKLSAgICB9Ci19Ci0KLXN0ZDo6b3B0aW9u
YWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3
IHNjaGVtZSkKLXsKLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgZnRwUG9ydCA9IDIxOwotICAg
IHN0YXRpYyBjb25zdCB1aW50MTZfdCBnb3BoZXJQb3J0ID0gNzA7Ci0gICAgc3RhdGljIGNvbnN0
IHVpbnQxNl90IGh0dHBQb3J0ID0gODA7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGh0dHBz
UG9ydCA9IDQ0MzsKLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qgd3NQb3J0ID0gODA7Ci0gICAg
c3RhdGljIGNvbnN0IHVpbnQxNl90IHdzc1BvcnQgPSA0NDM7Ci0gICAgCi0gICAgYXV0byBsZW5n
dGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgc3dpdGNoIChzY2hlbWVbMF0pIHsKLSAgICBjYXNlICd3JzoKLSAg
ICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYg
KHNjaGVtZVsxXSA9PSAncycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHdzUG9ydDsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAg
IGlmIChzY2hlbWVbMV0gPT0gJ3MnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdz
JykKLSAgICAgICAgICAgICAgICByZXR1cm4gd3NzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICBjYXNlICdoJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKLSAg
ICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNd
ID09ICdwJykKLSAgICAgICAgICAgICAgICByZXR1cm4gaHR0cFBvcnQ7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAgICBpZiAoc2No
ZW1lWzFdID09ICd0JwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKLSAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzRdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gaHR0cHNQb3J0OwotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLSAgICBjYXNlICdnJzoKLSAgICAgICAgaWYg
KGxlbmd0aCA9PSA2Ci0gICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0gJ28nCi0gICAgICAgICAg
ICAmJiBzY2hlbWVbMl0gPT0gJ3AnCi0gICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCi0g
ICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ2UnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNV0g
PT0gJ3InKQotICAgICAgICAgICAgcmV0dXJuIGdvcGhlclBvcnQ7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgY2FzZSAnZic6Ci0gICAgICAgIGlmIChsZW5ndGggPT0gMwotICAg
ICAgICAgICAgJiYgc2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICdwJykKLSAgICAgICAgICAgIHJldHVybiBmdHBQb3J0OwotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
fQotfQotCi1lbnVtIGNsYXNzIFNjaGVtZSB7Ci0gICAgV1MsCi0gICAgV1NTLAotICAgIEZpbGUs
Ci0gICAgRlRQLAotICAgIEdvcGhlciwKLSAgICBIVFRQLAotICAgIEhUVFBTLAotICAgIE5vblNw
ZWNpYWwKLX07Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGljIFNjaGVtZSBzY2hlbWUoU3RyaW5nVmll
dyBzY2hlbWUpCi17Ci0gICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVuZ3RoKCk7Ci0gICAgaWYg
KCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgc3dpdGNo
IChzY2hlbWVbMF0pIHsKLSAgICBjYXNlICdmJzoKLSAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsK
LSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnKQotICAgICAgICAgICAgICAgIHJldHVybiBT
Y2hlbWU6OkZUUDsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAg
ICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ2knCi0gICAgICAgICAg
ICAgICAgJiYgc2NoZW1lWzJdID09ICdsJwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9
PSAnZScpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6RmlsZTsKLSAgICAgICAgICAg
IHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICB9Ci0gICAgY2FzZSAnZyc6Ci0g
ICAgICAgIGlmIChsZW5ndGggPT0gNgotICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICdvJwot
ICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJwotICAgICAgICAgICAgJiYgc2NoZW1lWzNd
ID09ICdoJwotICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdlJwotICAgICAgICAgICAgJiYg
c2NoZW1lWzVdID09ICdyJykKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkdvcGhlcjsKLSAg
ICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICBjYXNlICdoJzoKLSAgICAgICAg
c3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKHNjaGVt
ZVsxXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdwJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2No
ZW1lOjpIVFRQOwotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAg
ICAgY2FzZSA1OgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKLSAgICAgICAgICAg
ICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09
ICdwJwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAncycpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6SFRUUFM7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25T
cGVjaWFsOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9u
U3BlY2lhbDsKLSAgICAgICAgfQotICAgIGNhc2UgJ3cnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0
aCkgewotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykK
LSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpXUzsKLSAgICAgICAgICAgIHJldHVybiBT
Y2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChzY2hl
bWVbMV0gPT0gJ3MnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpXU1M7Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1l
OjpOb25TcGVjaWFsOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFNjaGVt
ZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBT
Y2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgfQotfQotCi1zdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJM
UGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsK
LSAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LQotICAgIGlmICghaXNBU0NJSUFscGhhKHNjaGVtZVswXSkpCi0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsg
KytpKSB7Ci0gICAgICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKHNjaGVtZVtpXSkgfHwgc2No
ZW1lW2ldID09ICcrJyB8fCBzY2hlbWVbaV0gPT0gJy0nIHx8IHNjaGVtZVtpXSA9PSAnLicpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9
Ci0KLSAgICByZXR1cm4gc2NoZW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci19Ci0KLWJv
b2wgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWVBcmcpCi17
Ci0gICAgcmV0dXJuIHNjaGVtZShzY2hlbWVBcmcpICE9IFNjaGVtZTo6Tm9uU3BlY2lhbDsKLX0K
LQotZW51bSBjbGFzcyBVUkxQYXJzZXI6OlVSTFBhcnQgewotICAgIFNjaGVtZUVuZCwKLSAgICBV
c2VyU3RhcnQsCi0gICAgVXNlckVuZCwKLSAgICBQYXNzd29yZEVuZCwKLSAgICBIb3N0RW5kLAot
ICAgIFBvcnRFbmQsCi0gICAgUGF0aEFmdGVyTGFzdFNsYXNoLAotICAgIFBhdGhFbmQsCi0gICAg
UXVlcnlFbmQsCi19OwotCi1zaXplX3QgVVJMUGFyc2VyOjp1cmxMZW5ndGhVbnRpbFBhcnQoY29u
c3QgVVJMJiB1cmwsIFVSTFBhcnQgcGFydCkKLXsKLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBj
YXNlIFVSTFBhcnQ6OlF1ZXJ5RW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fcXVlcnlFbmQ7Ci0g
ICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgotICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEVuZDsK
LSAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaDoKLSAgICAgICAgcmV0dXJuIHVy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6Ci0gICAg
ICAgIHJldHVybiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aDsKLSAgICBjYXNlIFVS
TFBhcnQ6Okhvc3RFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9ob3N0RW5kOwotICAgIGNhc2Ug
VVJMUGFydDo6UGFzc3dvcmRFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9wYXNzd29yZEVuZDsK
LSAgICBjYXNlIFVSTFBhcnQ6OlVzZXJFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV91c2VyRW5k
OwotICAgIGNhc2UgVVJMUGFydDo6VXNlclN0YXJ0OgotICAgICAgICByZXR1cm4gdXJsLm1fdXNl
clN0YXJ0OwotICAgIGNhc2UgVVJMUGFydDo6U2NoZW1lRW5kOgotICAgICAgICByZXR1cm4gdXJs
Lm1fc2NoZW1lRW5kOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gMDsKLX0KLQotdm9pZCBVUkxQYXJzZXI6OmNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQotewotICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0
aCA8PSBzdHJpbmcubGVuZ3RoKCkpOwotICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwotICAgIGlmIChz
dHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIGxlbmd0aCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBVQ2hhciBjID0gY2hhcmFjdGVyc1tp
XTsKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzQVNDSUko
YykpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjKTsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgVVJMUGFyc2Vy
Ojpjb3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQgcGFydCwgY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBVUkxUZXh0
RW5jb2RpbmcqJiBub25VVEY4UXVlcnlFbmNvZGluZykKLXsKLSAgICBzeW50YXhWaW9sYXRpb24o
aXRlcmF0b3IpOwotCi0gICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwotICAgIGNvcHlBU0NJSVN0
cmluZ1VudGlsKGJhc2UubV9zdHJpbmcsIHVybExlbmd0aFVudGlsUGFydChiYXNlLCBwYXJ0KSk7
Ci0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgY2FzZSBVUkxQYXJ0OjpRdWVyeUVuZDoKLSAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IGJhc2UubV9xdWVyeUVuZDsKLSAgICAgICAgRkFMTFRIUk9V
R0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXRoRW5kOgotICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBiYXNlLm1fcGF0aEVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0
OjpQYXRoQWZ0ZXJMYXN0U2xhc2g6Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gYmFzZS5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAg
Y2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBiYXNl
Lm1fcG9ydExlbmd0aDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpI
b3N0RW5kOgotICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBiYXNlLm1faG9zdEVuZDsKLSAgICAg
ICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoKLSAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IGJhc2UubV9wYXNzd29yZEVuZDsKLSAgICAgICAgRkFMTFRI
Uk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpVc2VyRW5kOgotICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBiYXNlLm1fdXNlckVuZDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQ
YXJ0OjpVc2VyU3RhcnQ6Ci0gICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gYmFzZS5tX3VzZXJT
dGFydDsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBVUkxQYXJ0OjpTY2hlbWVFbmQ6
Ci0gICAgICAgIG1fdXJsLm1faXNWYWxpZCA9IGJhc2UubV9pc1ZhbGlkOwotICAgICAgICBtX3Vy
bC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBiYXNlLm1fcHJvdG9jb2xJc0luSFRUUEZhbWls
eTsKLSAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBiYXNlLm1fc2NoZW1lRW5kOwotICAgIH0K
LSAgICBzd2l0Y2ggKHNjaGVtZShTdHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpLCBtX3Vy
bC5tX3NjaGVtZUVuZCkpKSB7Ci0gICAgY2FzZSBTY2hlbWU6OldTOgotICAgIGNhc2UgU2NoZW1l
OjpXU1M6Ci0gICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAg
bV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6
OkZpbGU6Ci0gICAgICAgIG1fdXJsSXNGaWxlID0gdHJ1ZTsKLSAgICAgICAgRkFMTFRIUk9VR0g7
Ci0gICAgY2FzZSBTY2hlbWU6OkZUUDoKLSAgICBjYXNlIFNjaGVtZTo6R29waGVyOgotICAgIGNh
c2UgU2NoZW1lOjpIVFRQOgotICAgIGNhc2UgU2NoZW1lOjpIVFRQUzoKLSAgICAgICAgbV91cmxJ
c1NwZWNpYWwgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBTY2hlbWU6Ok5vblNw
ZWNpYWw6Ci0gICAgICAgIG1fdXJsSXNTcGVjaWFsID0gZmFsc2U7Ci0gICAgICAgIG5vblVURjhR
dWVyeUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIgZG90QVNDSUlDb2RlWzJd
ID0geycyJywgJ2UnfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZ
U19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6OmlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKLXsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCpjID09ICcuJykgewotICAgICAgICBhZHZhbmNlPENo
YXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgICAgICByZXR1
cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hRdWVzdGlvbk9ySGFzaCgqYyk7Ci0gICAgfQotICAgIGlm
ICgqYyAhPSAnJScpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3Rl
clR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgIGlmIChjLmF0RW5kKCkg
fHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2
YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKLSAgICBp
ZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHRvQVNDSUlMb3dl
cigqYykgPT0gZG90QVNDSUlDb2RlWzFdKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBjLmF0RW5k
KCkgfHwgaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBi
b29sIFVSTFBhcnNlcjo6aXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiBjKQotewotICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoKmMgPT0gJy4nKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBpc1Npbmds
ZURvdFBhdGhTZWdtZW50KGMpOwotICAgIH0KLSAgICBpZiAoKmMgIT0gJyUnKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9s
YXRpb246Ok5vPihjKTsKLSAgICBpZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29kZVsw
XSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVw
b3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsx
XSkgewotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlv
bjo6Tm8+KGMpOwotICAgICAgICByZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsKLSAgICBBU1NFUlQoaXNTaW5nbGVEb3RQ
YXRoU2VnbWVudChjKSk7Ci0gICAgaWYgKCpjID09ICcuJykgewotICAgICAgICBhZHZhbmNlKGMp
OwotICAgICAgICBpZiAoIWMuYXRFbmQoKSkgewotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8
fCAqYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOwotICAg
ICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCpjID09ICclJyk7Ci0gICAgICAg
IGFkdmFuY2UoYyk7Ci0gICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAg
ICAgICBhZHZhbmNlKGMpOwotICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RB
U0NJSUNvZGVbMV0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBpZiAoIWMuYXRFbmQo
KSkgewotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAgICAgICAg
ICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNT
RVJUKCpjID09ICc/JyB8fCAqYyA9PSAnIycpOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVEb3Vi
bGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKLXsK
LSAgICBBU1NFUlQoaXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSk7Ci0gICAgaWYgKCpjID09ICcu
JykKLSAgICAgICAgYWR2YW5jZShjKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCpjID09
ICclJyk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJ
SUNvZGVbMF0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICBBU1NFUlQodG9BU0NJSUxv
d2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAgICAgICBhZHZhbmNlKGMpOwotICAgIH0K
LSAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7Ci19Ci0KLWJvb2wgVVJMUGFyc2Vy
OjpzaG91bGRQb3BQYXRoKHVuc2lnbmVkIG5ld1BhdGhBZnRlckxhc3RTbGFzaCkKLXsKLSAgICBB
U1NFUlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgIGlmICghbV91cmxJc0ZpbGUpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgQVNTRVJUKG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoIDw9IG1fYXNjaWlCdWZmZXIuc2l6ZSgpKTsKLSAgICBDb2RlUG9pbnRJdGVyYXRvcjxMQ2hh
cj4gY29tcG9uZW50VG9Qb3AoJm1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNsYXNoXSwg
Jm1fYXNjaWlCdWZmZXJbMF0gKyBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCk7Ci0gICAgaWYg
KG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9PSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRM
ZW5ndGggKyAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGNvbXBvbmVudFRvUG9wKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFVSTFBhcnNlcjo6
cG9wUGF0aCgpCi17Ci0gICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICBp
ZiAobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5t
X3BvcnRMZW5ndGggKyAxKSB7Ci0gICAgICAgIGF1dG8gbmV3UGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggLSAxOwotICAgICAgICBpZiAobV9hc2NpaUJ1ZmZl
cltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdID09ICcvJykKLSAgICAgICAgICAgIG5ld1BhdGhBZnRl
ckxhc3RTbGFzaC0tOwotICAgICAgICB3aGlsZSAobmV3UGF0aEFmdGVyTGFzdFNsYXNoID4gbV91
cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICYmIG1fYXNjaWlCdWZmZXJbbmV3UGF0
aEFmdGVyTGFzdFNsYXNoXSAhPSAnLycpCi0gICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xh
c2gtLTsKLSAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoKys7Ci0gICAgICAgIGlmIChzaG91
bGRQb3BQYXRoKG5ld1BhdGhBZnRlckxhc3RTbGFzaCkpCi0gICAgICAgICAgICBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA9IG5ld1BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICB9Ci0gICAgbV9h
c2NpaUJ1ZmZlci5yZXNpemUobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnN5bnRheFZpb2xh
dGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17
Ci0gICAgaWYgKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAg
bV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwotICAgIAotICAgIEFTU0VSVChtX2FzY2lp
QnVmZmVyLmlzRW1wdHkoKSk7Ci0gICAgc2l6ZV90IGNvZGVVbml0c1RvQ29weSA9IGl0ZXJhdG9y
LmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlwZSo+KG1f
aW5wdXRCZWdpbikpOwotICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVVbml0c1RvQ29weSA8PSBtX2lu
cHV0U3RyaW5nLmxlbmd0aCgpKTsKLSAgICBtX2FzY2lpQnVmZmVyLnJlc2VydmVDYXBhY2l0eSht
X2lucHV0U3RyaW5nLmxlbmd0aCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVV
bml0c1RvQ29weTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVChpc0FTQ0lJKG1faW5wdXRTdHJpbmdb
aV0pKTsKLSAgICAgICAgbV9hc2NpaUJ1ZmZlci51bmNoZWNrZWRBcHBlbmQobV9pbnB1dFN0cmlu
Z1tpXSk7Ci0gICAgfQotfQotCi12b2lkIFVSTFBhcnNlcjo6ZmFpbHVyZSgpCi17Ci0gICAgbV91
cmwuaW52YWxpZGF0ZSgpOwotICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWJvb2wgVVJMUGFyc2VyOjpjaGVj
a0xvY2FsaG9zdENvZGVQb2ludChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRl
cmF0b3IsIFVDaGFyMzIgY29kZVBvaW50KQotewotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8
IHRvQVNDSUlMb3dlcigqaXRlcmF0b3IpICE9IGNvZGVQb2ludCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpO
bz4oaXRlcmF0b3IpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OmlzQXRMb2NhbGhvc3QoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9z
dENvZGVQb2ludChpdGVyYXRvciwgJ2wnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdvJykpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYycp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2lu
dChpdGVyYXRvciwgJ2EnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tM
b2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdsJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnaCcpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRv
ciwgJ28nKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RD
b2RlUG9pbnQoaXRlcmF0b3IsICdzJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
IWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAndCcpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7Ci19Ci0KLWJvb2wgVVJMUGFyc2Vy
Ojppc0xvY2FsaG9zdChTdHJpbmdWaWV3IHZpZXcpCi17Ci0gICAgaWYgKHZpZXcuaXM4Qml0KCkp
Ci0gICAgICAgIHJldHVybiBpc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPih2
aWV3LmNoYXJhY3RlcnM4KCksIHZpZXcuY2hhcmFjdGVyczgoKSArIHZpZXcubGVuZ3RoKCkpKTsK
LSAgICByZXR1cm4gaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4odmlldy5j
aGFyYWN0ZXJzMTYoKSwgdmlldy5jaGFyYWN0ZXJzMTYoKSArIHZpZXcubGVuZ3RoKCkpKTsKLX0K
LQotQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXcoc2l6
ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5
bnRheFZpb2xhdGlvbikpIHsKLSAgICAgICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1fYXNj
aWlCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9hc2NpaUJ1ZmZl
ci5kYXRhKCkgKyBzdGFydCwgbGVuZ3RoKTsKLSAgICB9Ci0gICAgQVNTRVJUKHN0YXJ0ICsgbGVu
Z3RoIDw9IG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOwotICAgIHJldHVybiBTdHJpbmdWaWV3KG1f
aW5wdXRTdHJpbmcpLnN1YnN0cmluZyhzdGFydCwgbGVuZ3RoKTsKLX0KLQotQUxXQVlTX0lOTElO
RSBVQ2hhciBVUkxQYXJzZXI6OnBhcnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlvbikKLXsKLSAg
ICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQotICAgICAgICByZXR1cm4g
bV9hc2NpaUJ1ZmZlcltwb3NpdGlvbl07Ci0gICAgcmV0dXJuIG1faW5wdXRTdHJpbmdbcG9zaXRp
b25dOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElO
RSBzaXplX3QgVVJMUGFyc2VyOjpjdXJyZW50UG9zaXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNl
ZVN5bnRheFZpb2xhdGlvbikpCi0gICAgICAgIHJldHVybiBtX2FzY2lpQnVmZmVyLnNpemUoKTsK
LSAgICAKLSAgICByZXR1cm4gaXRlcmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBDaGFyYWN0ZXJUeXBlKj4obV9pbnB1dEJlZ2luKSk7Ci19Ci0KLVVSTFBhcnNlcjo6
VVJMUGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJM
VGV4dEVuY29kaW5nKiBub25VVEY4UXVlcnlFbmNvZGluZykKLSAgICA6IG1faW5wdXRTdHJpbmco
aW5wdXQpCi17Ci0gICAgaWYgKGlucHV0LmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChiYXNlLmlz
VmFsaWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwpIHsKLSAgICAgICAgICAgIG1fdXJs
ID0gYmFzZTsKLSAgICAgICAgICAgIG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoaW5wdXQuaXM4Qml0
KCkpIHsKLSAgICAgICAgbV9pbnB1dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKLSAgICAg
ICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczgoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2UsIG5vblVU
RjhRdWVyeUVuY29kaW5nKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX2lucHV0QmVnaW4gPSBp
bnB1dC5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczE2KCks
IGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgfQotCi0g
ICAgQVNTRVJUKCFtX3VybC5tX2lzVmFsaWQKLSAgICAgICAgfHwgbV9kaWRTZWVTeW50YXhWaW9s
YXRpb24gPT0gKG1fdXJsLnN0cmluZygpICE9IGlucHV0KQotICAgICAgICB8fCAoaW5wdXQuaXNB
bGxTcGVjaWFsQ2hhcmFjdGVyczxpc0MwQ29udHJvbE9yU3BhY2U+KCkKLSAgICAgICAgICAgICYm
IG1fdXJsLm1fc3RyaW5nID09IGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpKSk7
Ci0gICAgQVNTRVJUKGludGVybmFsVmFsdWVzQ29uc2lzdGVudChtX3VybCkpOwotI2lmICFBU1NF
UlRfRElTQUJMRUQKLSAgICBpZiAoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSB7Ci0gICAgICAg
IC8vIEZvcmNlIGEgc3ludGF4IHZpb2xhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3Vy
ZSB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0LgotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VT
dHJpbmcoIiAiLCBpbnB1dCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAg
VVJMIHBhcnNlZCA9IHBhcnNlci5yZXN1bHQoKTsKLSAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlk
KCkpCi0gICAgICAgICAgICBBU1NFUlQoYWxsVmFsdWVzRXF1YWwocGFyc2VyLnJlc3VsdCgpLCBt
X3VybCkpOwotICAgIH0KLSNlbmRpZgotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cGUqIGlucHV0LCBj
b25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVVJMVGV4dEVuY29k
aW5nKiBub25VVEY4UXVlcnlFbmNvZGluZykKLXsKLSAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2lu
ZyBVUkwgPCVzPiBiYXNlIDwlcz4iLCBTdHJpbmcoaW5wdXQsIGxlbmd0aCkudXRmOCgpLmRhdGEo
KSwgYmFzZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX3VybCA9IHsgfTsKLSAgICBB
U1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBxdWVy
eUJ1ZmZlcjsKLQotICAgIHVuc2lnbmVkIGVuZEluZGV4ID0gbGVuZ3RoOwotICAgIHdoaWxlIChV
TkxJS0VMWShlbmRJbmRleCAmJiBpc0MwQ29udHJvbE9yU3BhY2UoaW5wdXRbZW5kSW5kZXggLSAx
XSkpKSB7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPihpbnB1dCwgaW5wdXQpKTsKLSAgICAgICAgZW5kSW5kZXgtLTsKLSAgICB9Ci0gICAg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYyhpbnB1dCwgaW5wdXQgKyBlbmRJbmRl
eCk7Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYXV0aG9yaXR5T3JIb3N0
QmVnaW47Ci0gICAgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gcXVlcnlCZWdpbjsK
LSAgICB3aGlsZSAoVU5MSUtFTFkoIWMuYXRFbmQoKSAmJiBpc0MwQ29udHJvbE9yU3BhY2UoKmMp
KSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICsrYzsKLSAgICB9Ci0g
ICAgYXV0byBiZWdpbkFmdGVyQ29udHJvbEFuZFNwYWNlID0gYzsKLQotICAgIGVudW0gY2xhc3Mg
U3RhdGUgOiB1aW50OF90IHsKLSAgICAgICAgU2NoZW1lU3RhcnQsCi0gICAgICAgIFNjaGVtZSwK
LSAgICAgICAgTm9TY2hlbWUsCi0gICAgICAgIFNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5LAot
ICAgICAgICBQYXRoT3JBdXRob3JpdHksCi0gICAgICAgIFJlbGF0aXZlLAotICAgICAgICBSZWxh
dGl2ZVNsYXNoLAotICAgICAgICBTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcywKLSAgICAgICAgU3Bl
Y2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMsCi0gICAgICAgIEF1dGhvcml0eU9ySG9zdCwKLSAg
ICAgICAgSG9zdCwKLSAgICAgICAgRmlsZSwKLSAgICAgICAgRmlsZVNsYXNoLAotICAgICAgICBG
aWxlSG9zdCwKLSAgICAgICAgUGF0aFN0YXJ0LAotICAgICAgICBQYXRoLAotICAgICAgICBDYW5u
b3RCZUFCYXNlVVJMUGF0aCwKLSAgICAgICAgVVRGOFF1ZXJ5LAotICAgICAgICBOb25VVEY4UXVl
cnksCi0gICAgICAgIEZyYWdtZW50LAotICAgIH07Ci0KLSNkZWZpbmUgTE9HX1NUQVRFKHgpIFVS
TF9QQVJTRVJfTE9HKCJTdGF0ZSAlcywgY29kZSBwb2ludCAlYywgcGFyc2VkIGRhdGEgPCVzPiBz
aXplICV6dSIsIHgsICpjLCBwYXJzZWREYXRhVmlldygwLCBjdXJyZW50UG9zaXRpb24oYykpLnV0
ZjgoKS5kYXRhKCksIGN1cnJlbnRQb3NpdGlvbihjKSkKLSNkZWZpbmUgTE9HX0ZJTkFMX1NUQVRF
KHgpIFVSTF9QQVJTRVJfTE9HKCJGaW5hbCBTdGF0ZTogJXMiLCB4KQotCi0gICAgU3RhdGUgc3Rh
dGUgPSBTdGF0ZTo6U2NoZW1lU3RhcnQ7Ci0gICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKLSAgICAg
ICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCpjKSkpIHsKLSAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFN0YXRl
OjpTY2hlbWVTdGFydDoKLSAgICAgICAgICAgIExPR19TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAg
ICAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93
ZXIoKmMpKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIGlm
IChjLmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigp
OwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAg
ICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpTY2hlbWU7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0
YXRlOjpTY2hlbWU6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlNjaGVtZSIpOwotICAgICAgICAg
ICAgaWYgKGlzVmFsaWRTY2hlbWVDaGFyYWN0ZXIoKmMpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGlzQVNDSUlVcHBlcigqYykpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJ
TG93ZXIoKmMpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJzonKSB7Ci0gICAgICAg
ICAgICAgICAgdW5zaWduZWQgc2NoZW1lRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAg
ICAgICAgICAgIGlmIChzY2hlbWVFbmQgPiBVUkw6Om1heFNjaGVtZUxlbmd0aCkgewotICAgICAg
ICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV91cmwubV9zY2hlbWVFbmQgPSBzY2hl
bWVFbmQ7Ci0gICAgICAgICAgICAgICAgU3RyaW5nVmlldyB1cmxTY2hlbWUgPSBwYXJzZWREYXRh
VmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignOicpOwotICAgICAgICAgICAgICAgIHN3aXRjaCAoc2NoZW1lKHVybFNjaGVtZSkp
IHsKLSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RmlsZToKLSAgICAgICAgICAgICAgICAg
ICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBtX3VybElzRmls
ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7Ci0gICAg
ICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBTY2hlbWU6OldTOgotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpX
U1M6Ci0gICAgICAgICAgICAgICAgICAgIG5vblVURjhRdWVyeUVuY29kaW5nID0gbnVsbHB0cjsK
LSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoYmFzZS5wcm90b2NvbElzKHVybFNjaGVtZSkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eTsKLSAgICAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhU
VFA6Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkhUVFBTOgotICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6RlRQOgot
ICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpHb3BoZXI6Ci0gICAgICAgICAgICAgICAgICAg
IG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJv
dG9jb2xJcyh1cmxTY2hlbWUpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlT
bGFzaGVzOwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgotICAgICAgICAg
ICAgICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7Ci0gICAgICAgICAgICAg
ICAgICAgIGF1dG8gbWF5YmVTbGFzaCA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIGFkdmFuY2Uo
bWF5YmVTbGFzaCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbWF5YmVTbGFzaC5hdEVuZCgp
ICYmICptYXliZVNsYXNoID09ICcvJykgewotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG1heWJlU2xh
c2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoT3JBdXRob3Jp
dHk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoKmMgPT0gJy8nKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNl
clN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91
c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2Nhbm5vdEJlQUJhc2VV
UkwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Q2Fubm90
QmVBQmFzZVVSTFBhdGg7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7
Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7Ci0gICAgICAgICAgICAg
ICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9sQW5kU3BhY2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgaWYg
KGMuYXRFbmQoKSkgewotICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKLSAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICBj
ID0gYmVnaW5BZnRlckNvbnRyb2xBbmRTcGFjZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpOb1NjaGVtZToKLSAgICAgICAgICAgIExPR19T
VEFURSgiTm9TY2hlbWUiKTsKLSAgICAgICAgICAgIGlmICghYmFzZS5pc1ZhbGlkKCkgfHwgKGJh
c2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpjICE9ICcjJykpIHsKLSAgICAgICAgICAgICAgICBm
YWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKGJhc2UubV9jYW5ub3RCZUFCYXNlVVJMICYmICpjID09ICcjJykgewotICAgICAg
ICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBu
b25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJh
Z21lbnQ7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAg
ICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmICghYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNj
aGVtZUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignOicpOwotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhv
cml0eToKLSAgICAgICAgICAgIExPR19TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHki
KTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAg
ICAgICAgICBpZiAoYy5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAoKmMgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lh
bEF1dGhvcml0eUlnbm9yZVNsYXNoZXM7Ci0gICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVs
YXRpdmVTbGFzaDsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlJlbGF0aXZlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6
OlBhdGhPckF1dGhvcml0eToKLSAgICAgICAgICAgIExPR19TVEFURSgiUGF0aE9yQXV0aG9yaXR5
Iik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhv
cml0eU9ySG9zdDsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAg
IG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAg
IGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09
ICcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRp
b24oYykgLSAxOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAx
OwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmU6Ci0gICAgICAg
ICAgICBMT0dfU1RBVEUoIlJlbGF0aXZlIik7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpjKSB7Ci0g
ICAgICAgICAgICBjYXNlICcvJzoKLSAgICAgICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZVNsYXNoOwotICAgICAgICAgICAgICAgICsrYzsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJz8nOgotICAgICAgICAg
ICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMsIG5vblVU
RjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/
Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVl
cnlFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICcjJzoKLSAgICAgICAg
ICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
JyMnKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhB
ZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAg
IGlmIChjdXJyZW50UG9zaXRpb24oYykgJiYgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9u
KGMpIC0gMSkgIT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFz
aDoKLSAgICAgICAgICAgIExPR19TVEFURSgiUmVsYXRpdmVTbGFzaCIpOwotICAgICAgICAgICAg
aWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSB7Ci0gICAgICAgICAgICAgICAgKytjOwotICAg
ICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlNjaGVtZUVuZCwg
Yywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoIjovLyIsIDMpOwotICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNs
YXNoZXM7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Ci0gICAgICAgICAgICAgICAgICAgIGF1dGhv
cml0eU9ySG9zdEJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBv
cnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgotICAg
ICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcyIpOwotICAgICAgICAg
ICAgaWYgKExJS0VMWSgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoKmMgPT0gJ1xcJykpCi0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAgICBpZiAoTElLRUxZKCFj
LmF0RW5kKCkgJiYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKCpjID09ICdcXCcpKQotICAgICAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
LSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eUlnbm9yZVNs
YXNoZXM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXM6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlNwZWNpYWxBdXRo
b3JpdHlJZ25vcmVTbGFzaGVzIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09
ICdcXCcpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAg
ICAgICAgKytjOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Ci0gICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0
QmVnaW4gPSBjOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU3RhdGU6OkF1dGhvcml0eU9ySG9zdDoKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAg
ICAgICBMT0dfU1RBVEUoIkF1dGhvcml0eU9ySG9zdCIpOwotICAgICAgICAgICAgICAgIGlmICgq
YyA9PSAnQCcpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBsYXN0QXQgPSBjOwotICAgICAg
ICAgICAgICAgICAgICBhdXRvIGZpbmRMYXN0QXQgPSBjOwotICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoIWZpbmRMYXN0QXQuYXRFbmQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgVVJM
X1BBUlNFUl9MT0coIkZpbmRpbmcgbGFzdCBAOiAlYyIsICpmaW5kTGFzdEF0KTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgqZmluZExhc3RBdCA9PSAnQCcpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGFzdEF0ID0gZmluZExhc3RBdDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNTbGFzaCA9ICpmaW5kTGFzdEF0ID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYg
KmZpbmRMYXN0QXQgPT0gJ1xcJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTbGFz
aCB8fCAqZmluZExhc3RBdCA9PSAnPycgfHwgKmZpbmRMYXN0QXQgPT0gJyMnKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgKytmaW5k
TGFzdEF0OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNl
QXV0aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9z
dEJlZ2luLCBsYXN0QXQpKTsKLSAgICAgICAgICAgICAgICAgICAgYyA9IGxhc3RBdDsKLSAgICAg
ICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5
T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIb3N0
OwotICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9IGZhbHNl
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgYm9vbCBpc1NsYXNoID0gKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAq
YyA9PSAnXFwnKTsKLSAgICAgICAgICAgICAgICBpZiAoaXNTbGFzaCB8fCAqYyA9PSAnPycgfHwg
KmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYyk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBj
dXJyZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChpdGVyYXRvcikpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKCFpc1NsYXNoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChtX3VybElzU3BlY2lhbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJKCpjKSkKLSAgICAgICAgICAgICAgICAgICAgbV9o
b3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVlOwotICAgICAgICAgICAgICAgICsrYzsKLSAg
ICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgU3RhdGU6Okhvc3Q6Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAg
TE9HX1NUQVRFKCJIb3N0Iik7Ci0gICAgICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9
PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0
QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RC
ZWdpbiwgYykpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAgICAgICAgICAgIG1faG9zdEhh
c1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAg
ICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFN0YXRlOjpGaWxlOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlIik7Ci0gICAgICAg
ICAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgICAgICAgICBjYXNlICdcXCc6Ci0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAg
ICAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
LycpOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGVTbGFzaDsKLSAgICAgICAg
ICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICc/
JzoKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAg
aWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVSTFBhcnQ6OlBhdGhFbmQsIGMs
IG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignPycpOwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vPyIs
IDQpOwotICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJs
Lm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMjsKLSAgICAgICAgICAgICAgICAg
ICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVu
Y29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJyMnOgotICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlk
KCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29w
eVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVu
Y29kaW5nKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoIi8vLyMiLCA0KTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3Rh
cnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAyOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgICAgICAgICAg
ICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZy
YWdtZW50OwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwot
ICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMoImZp
bGUiKSAmJiBzaG91bGRDb3B5RmlsZVVSTChjKSkKLSAgICAgICAgICAgICAgICAgICAgY29weVVS
TFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25VVEY4
UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyIsIDMpOwotICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAgICAgICAgIExPR19TVEFURSgiRmlsZVNsYXNoIik7
Ci0gICAgICAgICAgICBpZiAoTElLRUxZKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkgewotICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnXFwnKSkKLSAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIG1f
dXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIG1f
dXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJs
Lm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3Vy
bC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICBtX3VybC5t
X3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0g
YzsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlSG9zdDsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7Ci0gICAgICAgICAg
ICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAg
ICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJs
Lm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVu
Z3RoID0gMDsKLSAgICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgewotICAg
ICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKLSAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsK
LSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7Ci0g
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlBhdGg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6
Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlSG9zdCIp
OwotICAgICAgICAgICAgICAgIGlmIChpc1NsYXNoUXVlc3Rpb25Pckhhc2goKmMpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGJvb2wgd2luZG93c1F1aXJrID0gdGFrZXNUd29BZHZhbmNlc1VudGls
RW5kKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2lu
LCBjKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1
dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWly
aykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9y
SG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Jy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihh
dXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvd3NRdWlyayB8fCBhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQod2luZG93c1F1aXJrIHx8IHBhcnNlZERh
dGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0gJz8nKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCIvPyIsIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICsrYzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2Rp
bmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVy
eTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9u
KGMpIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChVTkxJS0VMWSgqYyA9PSAnIycpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRv
QVNDSUlCdWZmZXIoIi8jIiwgMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
Y3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNM
b2NhbGhvc3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0
aW9uKGMpIC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1
ZmZlci5zaHJpbmsobV91cmwubV9wYXNzd29yZEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQ
YXRoU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAg
ICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICArK2M7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpQYXRoU3RhcnQ6Ci0gICAgICAgICAgICBMT0df
U1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAgICAgICAgaWYgKCpjICE9ICcvJyAmJiAqYyAhPSAn
XFwnKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFN0YXRlOjpQYXRoOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoIik7Ci0gICAgICAg
ICAgICBpZiAoKmMgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwnKSkgewot
ICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtX3VybElzU3BlY2lhbCAmJiAqYyA9PSAnXFwn
KSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAg
ICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24o
Yyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoY3VycmVudFBvc2l0aW9uKGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQ
b3NpdGlvbihjKSAtIDEpID09ICcvJykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
aXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICBjb25zdW1lRG91YmxlRG90UGF0aFNl
Z21lbnQoYyk7Ci0gICAgICAgICAgICAgICAgICAgIHBvcFBhdGgoKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpKSkgewotICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1bWVTaW5nbGVEb3RQ
YXRoU2VnbWVudChjKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCpjID09ICc/JykgewotICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAg
ICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAg
IG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luRGVmYXVsdEVuY29kZVNldD4o
Yyk7Ci0gICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
dGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIkNhbm5v
dEJlQUJhc2VVUkxQYXRoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJz8nKSB7Ci0gICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0g
ICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRl
OjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMg
PT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0
aW9uKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhF
bmQ7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKCpjID09ICcvJykgewotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNv
ZGVTZXQ+KGMpOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpVVEY4UXVlcnk6Ci0gICAgICAgICAgICBM
T0dfU1RBVEUoIlVURjhRdWVyeSIpOwotICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gPT0g
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7Ci0gICAgICAgICAgICBpZiAoKmMg
PT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3Np
dGlvbihjKTsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVCghbm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgdXRmOFF1ZXJ5RW5jb2RlKGMpOwotICAg
ICAgICAgICAgKytjOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Ok5v
blVURjhRdWVyeToKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUo
Ik5vblVURjhRdWVyeSIpOwotICAgICAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOwotICAgICAgICAgICAgICAgIGlmICgq
YyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAgZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5
QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9xdWVy
eUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBhcHBlbmRDb2RlUG9pbnQocXVlcnlCdWZmZXIsICpjKTsK
LSAgICAgICAgICAgICAgICBhZHZhbmNlKGMsIHF1ZXJ5QmVnaW4pOwotICAgICAgICAgICAgfSB3
aGlsZSAoIWMuYXRFbmQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0
ZTo6RnJhZ21lbnQ6Ci0gICAgICAgICAgICBVUkxfUEFSU0VSX0xPRygiU3RhdGUgRnJhZ21lbnQi
KTsKLSAgICAgICAgICAgIHV0ZjhQZXJjZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGMp
OwotICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6Ci0g
ICAgICAgIExPR19GSU5BTF9TVEFURSgiU2NoZW1lU3RhcnQiKTsKLSAgICAgICAgaWYgKCFjdXJy
ZW50UG9zaXRpb24oYykgJiYgYmFzZS5pc1ZhbGlkKCkgJiYgIWJhc2UubV9jYW5ub3RCZUFCYXNl
VVJMKSB7Ci0gICAgICAgICAgICBtX3VybCA9IGJhc2U7Ci0gICAgICAgICAgICBtX3VybC5yZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFN0YXRlOjpTY2hl
bWU6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU2NoZW1lIik7Ci0gICAgICAgIGZhaWx1cmUo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgU3RhdGU6Ok5vU2NoZW1lOgotICAgICAgICBM
T0dfRklOQUxfU1RBVEUoIk5vU2NoZW1lIik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6Ci0g
ICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHkiKTsKLSAg
ICAgICAgY29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVU
RjhRdWVyeUVuY29kaW5nKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aE9y
QXV0aG9yaXR5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOwot
ICAgICAgICBBU1NFUlQobV91cmwubV91c2VyU3RhcnQpOwotICAgICAgICBBU1NFUlQobV91cmwu
bV91c2VyU3RhcnQgPT0gY3VycmVudFBvc2l0aW9uKGMpKTsKLSAgICAgICAgQVNTRVJUKHBhcnNl
ZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpID09ICcvJyk7Ci0gICAgICAgIG1fdXJs
Lm1fdXNlclN0YXJ0LS07Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0g
ICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6UmVs
YXRpdmU6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiUmVsYXRpdmUiKTsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNo
OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKLSAgICAgICAgY29w
eVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpOwotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVu
Z3RoICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNs
YXNoZXM6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbEF1dGhvcml0eVNsYXNoZXMi
KTsKLSAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAg
ICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwot
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0Owot
ICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczoKLSAgICAgICAgTE9HX0ZJ
TkFMX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcyIpOwotICAgICAgICBmYWls
dXJlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlPckhvc3Q6
Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiQXV0aG9yaXR5T3JIb3N0Iik7Ci0gICAgICAgIG1f
dXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0g
ICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgIGlm
IChhdXRob3JpdHlPckhvc3RCZWdpbi5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICB9
IGVsc2UgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewotICAg
ICAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKSB7Ci0gICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBt
X3VybC5tX3BvcnRMZW5ndGggKyAxOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3Ro
OwotICAgICAgICB9Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwu
bV9wYXRoRW5kOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpIb3N0OgotICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIkhvc3QiKTsKLSAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KGF1dGhvcml0eU9y
SG9zdEJlZ2luKSkgewotICAgICAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX3VybElzU3BlY2lhbCkgewotICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OwotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwu
bV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7Ci0gICAgICAgIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFN0YXRlOjpGaWxlOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGUiKTsKLSAgICAgICAg
aWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAg
ICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8iLCAz
KTsKLSAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwot
ICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91
cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX2hv
c3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0g
MDsKLSAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFy
dCArIDE7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OkZpbGVTbGFzaDoKLSAgICAgICAg
TE9HX0ZJTkFMX1NUQVRFKCJGaWxlU2xhc2giKTsKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSArIDE7Ci0g
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7Ci0gICAgICAgIG1fdXJsLm1fdXNl
ckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBpZiAoY29w
eUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZSkpIHsKLSAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
bV91cmwubV91c2VyU3RhcnQgKyA0OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICBt
X3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFN0YXRlOjpGaWxlSG9zdDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJG
aWxlSG9zdCIpOwotICAgICAgICBpZiAodGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkKLSAgICAg
ICAgICAgICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKSkgewot
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgIGFwcGVuZFdpbmRv
d3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChhdXRob3JpdHlPckhv
c3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJT
dGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAx
OwotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7Ci0gICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghcGFy
c2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlP
ckhvc3RCZWdpbiwgYykpKSB7Ci0gICAgICAgICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
IGlmIChpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJy
ZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpIHsKLSAgICAgICAgICAgIG1f
YXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwotICAgICAgICAgICAgbV91
cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgbV91cmwubV9w
b3J0TGVuZ3RoID0gMDsKLSAgICAgICAgfQotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV9ob3N0RW5k
ICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMTsKLSAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6
UGF0aFN0YXJ0OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlBhdGhTdGFydCIpOwotICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIGNhc2UgU3RhdGU6OlBhdGg6Ci0g
ICAgICAgIExPR19GSU5BTF9TVEFURSgiUGF0aCIpOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5t
X3BhdGhFbmQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VV
UkxQYXRoOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkNhbm5vdEJlQUJhc2VVUkxQYXRoIik7
Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlVURjhRdWVy
eSIpOwotICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPigpKTsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlv
bihjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgotICAg
ICAgICBMT0dfRklOQUxfU1RBVEUoIk5vblVURjhRdWVyeSIpOwotICAgICAgICBBU1NFUlQocXVl
cnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPigpKTsKLSAgICAgICAg
ZW5jb2RlTm9uVVRGOFF1ZXJ5KHF1ZXJ5QnVmZmVyLCAqbm9uVVRGOFF1ZXJ5RW5jb2RpbmcsIENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KHF1ZXJ5QmVnaW4sIGMpKTsKLSAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBTdGF0ZTo6RnJhZ21lbnQ6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiRnJhZ21l
bnQiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKExJS0VMWSghbV9kaWRTZWVT
eW50YXhWaW9sYXRpb24pKSB7Ci0gICAgICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmlu
ZzsKLSAgICAgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgbV91cmwubV9zdHJpbmcgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUobV9hc2NpaUJ1
ZmZlcikpOwotICAgIG1fdXJsLm1faXNWYWxpZCA9IHRydWU7Ci0gICAgVVJMX1BBUlNFUl9MT0co
IlBhcnNlZCBVUkwgPCVzPiIsIG1fdXJsLm1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OnBhcnNlQXV0
aG9yaXR5KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAg
IGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAgICAgICBzeW50YXhWaW9sYXRp
b24oaXRlcmF0b3IpOwotICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24o
aXRlcmF0b3IpOwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyRW5k
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsg
YWR2YW5jZShpdGVyYXRvcikpIHsKLSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpIHsKLSAg
ICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0g
ICAgICAgICAgICBhdXRvIGl0ZXJhdG9yQXRDb2xvbiA9IGl0ZXJhdG9yOwotICAgICAgICAgICAg
KytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJvb2wgdGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbiA9IGZh
bHNlOwotICAgICAgICAgICAgd2hpbGUgKFVOTElLRUxZKCFpdGVyYXRvci5hdEVuZCgpICYmIGlz
VGFiT3JOZXdsaW5lKCppdGVyYXRvcikpKSB7Ci0gICAgICAgICAgICAgICAgdGFiT3JOZXdsaW5l
QWZ0ZXJDb2xvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAg
ICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckF0Q29sb24pOwotICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fdXJsLm1fdXNlckVuZCA+IG1fdXJsLm1fdXNlclN0YXJ0KQotICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdAJyk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHRhYk9yTmV3bGluZUFmdGVyQ29s
b24pCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yQXRDb2xvbik7Ci0g
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxXZWJDb3JlOjppc0luVXNlcklu
Zm9FbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKLSAgICB9Ci0gICAgZm9yICg7ICFpdGVyYXRvci5hdEVu
ZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkKLSAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V2ViQ29y
ZTo6aXNJblVzZXJJbmZvRW5jb2RlU2V0PihpdGVyYXRvcik7Ci0gICAgbV91cmwubV9wYXNzd29y
ZEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgaWYgKCFtX3VybC5tX3VzZXJF
bmQpCi0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fcGFzc3dvcmRFbmQ7Ci0gICAg
YXBwZW5kVG9BU0NJSUJ1ZmZlcignQCcpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25l
ZEludGVnZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIo
VW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpCi17Ci0gICAgTENoYXIgYnVmW3NpemVvZihVbnNp
Z25lZEludGVnZXJUeXBlKSAqIDMgKyAxXTsKLSAgICBMQ2hhciogZW5kID0gc3RkOjplbmQoYnVm
KTsKLSAgICBMQ2hhciogcCA9IGVuZDsKLSAgICBkbyB7Ci0gICAgICAgICotLXAgPSAobnVtYmVy
ICUgMTApICsgJzAnOwotICAgICAgICBudW1iZXIgLz0gMTA7Ci0gICAgfSB3aGlsZSAobnVtYmVy
KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHAsIGVuZCAtIHApOwotfQotCi12b2lkIFVSTFBh
cnNlcjo6c2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyBhZGRyZXNzKQotewotICAgIGFwcGVuZE51
bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiAyNCk7Ci0gICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4o
YWRkcmVzcyA+PiAxNik7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwotICAgIGFwcGVu
ZE51bWJlclRvQVNDSUlCdWZmZXI8dWludDhfdD4oYWRkcmVzcyA+PiA4KTsKLSAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcuJyk7Ci0gICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90
PihhZGRyZXNzKTsKLX0KLSAgICAKLXN0YXRpYyBzaXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNv
bnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzLCBzaXplX3QgYmVnaW4pCi17Ci0g
ICAgc2l6ZV90IGVuZCA9IGJlZ2luOwotICAgIGZvciAoOyBlbmQgPCA4OyBlbmQrKykgewotICAg
ICAgICBpZiAoYWRkcmVzc1tlbmRdKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJl
dHVybiBlbmQgLSBiZWdpbjsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5k
TG9uZ2VzdFplcm9TZXF1ZW5jZShjb25zdCBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVz
cykKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbG9uZ2VzdDsKLSAgICBzaXplX3QgbG9u
Z2VzdExlbmd0aCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyBpKyspIHsKLSAg
ICAgICAgc2l6ZV90IGxlbmd0aCA9IHplcm9TZXF1ZW5jZUxlbmd0aChhZGRyZXNzLCBpKTsKLSAg
ICAgICAgaWYgKGxlbmd0aCkgewotICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgKCFsb25n
ZXN0IHx8IGxvbmdlc3RMZW5ndGggPCBsZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgbG9uZ2Vz
dCA9IGk7Ci0gICAgICAgICAgICAgICAgbG9uZ2VzdExlbmd0aCA9IGxlbmd0aDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGkgKz0gbGVuZ3RoOwotICAgICAgICB9Ci0gICAgfQotICAgIHJl
dHVybiBsb25nZXN0OwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NlBpZWNlKHVp
bnQxNl90IHBpZWNlKQotewotICAgIGJvb2wgcHJpbnRlZCA9IGZhbHNlOwotICAgIGlmIChhdXRv
IG5pYmJsZTAgPSBwaWVjZSA+PiAxMikgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxv
d2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTApKTsKLSAgICAgICAgcHJp
bnRlZCA9IHRydWU7Ci0gICAgfQotICAgIGF1dG8gbmliYmxlMSA9IHBpZWNlID4+IDggJiAweEY7
Ci0gICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMSkgewotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTEpKTsKLSAgICAg
ICAgcHJpbnRlZCA9IHRydWU7Ci0gICAgfQotICAgIGF1dG8gbmliYmxlMiA9IHBpZWNlID4+IDQg
JiAweEY7Ci0gICAgaWYgKHByaW50ZWQgfHwgbmliYmxlMikKLSAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdChuaWJibGUyKSk7Ci0g
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdp
dChwaWVjZSAmIDB4RikpOwotfQotCi12b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NihVUkxQ
YXJzZXI6OklQdjZBZGRyZXNzIGFkZHJlc3MpCi17Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
WycpOwotICAgIGF1dG8gY29tcHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2Uo
YWRkcmVzcyk7Ci0gICAgZm9yIChzaXplX3QgcGllY2UgPSAwOyBwaWVjZSA8IDg7IHBpZWNlKysp
IHsKLSAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBjb21wcmVzc1BvaW50ZXIudmFsdWUo
KSA9PSBwaWVjZSkgewotICAgICAgICAgICAgQVNTRVJUKCFhZGRyZXNzW3BpZWNlXSk7Ci0gICAg
ICAgICAgICBpZiAocGllY2UpCi0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
OicpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoIjo6IiwgMik7Ci0gICAgICAgICAgICB3aGlsZSAocGllY2UgPCA4ICYmICFhZGRyZXNzW3Bp
ZWNlXSkKLSAgICAgICAgICAgICAgICBwaWVjZSsrOwotICAgICAgICAgICAgaWYgKHBpZWNlID09
IDgpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc2VyaWFsaXpl
SVB2NlBpZWNlKGFkZHJlc3NbcGllY2VdKTsKLSAgICAgICAgaWYgKHBpZWNlIDwgNykKLSAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKLSAgICB9Ci0gICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignXScpOwotfQotCi1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2lu
Z0Vycm9yIHsKLSAgICBGYWlsdXJlLAotICAgIE92ZXJmbG93LAotfTsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQ
aWVjZVBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGJvb2wmIGRpZFNlZVN5bnRheFZpb2xhdGlv
bikKLXsKLSAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7Ci0gICAgICAgIFVua25vd25C
YXNlLAotICAgICAgICBEZWNpbWFsLAotICAgICAgICBPY3RhbE9ySGV4LAotICAgICAgICBPY3Rh
bCwKLSAgICAgICAgSGV4LAotICAgIH07Ci0gICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93
bkJhc2U7Ci0gICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsK
LSAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0g
ICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChpc1RhYk9yTmV3bGlu
ZSgqaXRlcmF0b3IpKSB7Ci0gICAgICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVl
OwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJy4nKSB7Ci0gICAgICAgICAgICBBU1NFUlQo
IXZhbHVlLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUudW5zYWZl
R2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNl
IFN0YXRlOjpVbmtub3duQmFzZToKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0b3Ig
PT0gJzAnKSkgewotICAgICAgICAgICAgICAgICsraXRlcmF0b3I7Ci0gICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6T2N0YWxPckhleDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkRlY2ltYWw7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6T2N0YWxPckhleDoKLSAgICAgICAgICAgIGRp
ZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09
ICd4JyB8fCAqaXRlcmF0b3IgPT0gJ1gnKSB7Ci0gICAgICAgICAgICAgICAgKytpdGVyYXRvcjsK
LSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpIZXg7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbDsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpEZWNpbWFsOgotICAgICAgICAg
ICAgaWYgKCFpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICAgICAg
ICAgIHZhbHVlICo9IDEwOwotICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwot
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3Zl
cmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFN0YXRlOjpPY3RhbDoKLSAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhW
aW9sYXRpb24pOwotICAgICAgICAgICAgaWYgKCppdGVyYXRvciA8ICcwJyB8fCAqaXRlcmF0b3Ig
PiAnNycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBh
cnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgICAgICB2YWx1ZSAqPSA4OwotICAgICAgICAg
ICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZh
bHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVy
YXRvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpIZXg6Ci0gICAg
ICAgICAgICBBU1NFUlQoZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKLSAgICAgICAgICAgIGlmICgh
aXNBU0NJSUhleERpZ2l0KCppdGVyYXRvcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgICAgICB2
YWx1ZSAqPSAxNjsKLSAgICAgICAgICAgIHZhbHVlICs9IHRvQVNDSUlIZXhWYWx1ZSgqaXRlcmF0
b3IpOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQaWVjZVBhcnNpbmdFcnJv
cjo6T3ZlcmZsb3cpOwotICAgICAgICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfQotICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsK
LSAgICByZXR1cm4gdmFsdWUudW5zYWZlR2V0KCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGlj
IHVpbnQ2NF90IHBvdzI1NihzaXplX3QgZXhwb25lbnQpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQo
ZXhwb25lbnQgPD0gNCk7Ci0gICAgdWludDY0X3QgdmFsdWVzWzVdID0gezEsIDI1NiwgMjU2ICog
MjU2LCAyNTYgKiAyNTYgKiAyNTYsIDI1NnVsbCAqIDI1NiAqIDI1NiAqIDI1NiB9OwotICAgIHJl
dHVybiB2YWx1ZXNbZXhwb25lbnRdOwotfQotCi1lbnVtIGNsYXNzIFVSTFBhcnNlcjo6SVB2NFBh
cnNpbmdFcnJvciB7Ci0gICAgRmFpbHVyZSwKLSAgICBOb3RJUHY0LAotfTsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbiwgdHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KLUV4cGVjdGVkPFVSTFBhcnNlcjo6SVB2NEFkZHJlc3MsIFVSTFBhcnNlcjo6SVB2
NFBhcnNpbmdFcnJvcj4gVVJMUGFyc2VyOjpwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24+JiBpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVy
YXRvcikKLXsKLSAgICBWZWN0b3I8RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBp
ZWNlUGFyc2luZ0Vycm9yPiwgND4gaXRlbXM7Ci0gICAgYm9vbCBkaWRTZWVTeW50YXhWaW9sYXRp
b24gPSBmYWxzZTsKLSAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcu
JykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQ
djQpOwotICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBpZiAoaXNUYWJP
ck5ld2xpbmUoKml0ZXJhdG9yKSkgewotICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9u
ID0gdHJ1ZTsKLSAgICAgICAgICAgICsraXRlcmF0b3I7Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoaXRlbXMuc2l6ZSgpID49IDQpCi0gICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgICAg
IGl0ZW1zLmFwcGVuZChwYXJzZUlQdjRQaWVjZShpdGVyYXRvciwgZGlkU2VlU3ludGF4VmlvbGF0
aW9uKSk7Ci0gICAgICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4n
KSB7Ci0gICAgICAgICAgICArK2l0ZXJhdG9yOwotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkpCi0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4
VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICAgICAgZWxzZSBpZiAoKml0ZXJhdG9yID09ICcu
JykKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJv
cjo6Tm90SVB2NCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCFpdGVyYXRvci5hdEVuZCgp
IHx8ICFpdGVtcy5zaXplKCkgfHwgaXRlbXMuc2l6ZSgpID4gNCkKLSAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAgIGZvciAoY29uc3Qg
YXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBp
dGVtLmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKQotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKElQdjRQYXJzaW5nRXJyb3I6Ok5vdElQdjQpOwotICAg
IH0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICBpZiAoIWl0
ZW0uaGFzX3ZhbHVlKCkgJiYgaXRlbS5lcnJvcigpID09IElQdjRQaWVjZVBhcnNpbmdFcnJvcjo6
T3ZlcmZsb3cpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdF
cnJvcjo6RmFpbHVyZSk7Ci0gICAgfQotICAgIGlmIChpdGVtcy5zaXplKCkgPiAxKSB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpIC0gMTsgaSsrKSB7Ci0gICAg
ICAgICAgICBpZiAoaXRlbXNbaV0udmFsdWUoKSA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgaWYgKGl0ZW1zW2l0ZW1zLnNpemUoKSAtIDFdLnZhbHVlKCkgPj0gcG93MjU2
KDUgLSBpdGVtcy5zaXplKCkpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBh
cnNpbmdFcnJvcjo6RmFpbHVyZSk7Ci0KLSAgICBpZiAoZGlkU2VlU3ludGF4VmlvbGF0aW9uKQot
ICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlv
bik7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgaWYgKGl0
ZW0udmFsdWUoKSA+IDI1NSkKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZv
clN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICB9Ci0KLSAgICBpZiAoVU5MSUtFTFkoaXRl
bXMuc2l6ZSgpICE9IDQpKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50
YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0KLSAgICBJUHY0QWRkcmVzcyBpcHY0ID0gaXRlbXMudGFr
ZUxhc3QoKS52YWx1ZSgpOwotICAgIGZvciAoc2l6ZV90IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwg
aXRlbXMuc2l6ZSgpOyArK2NvdW50ZXIpCi0gICAgICAgIGlwdjQgKz0gaXRlbXNbY291bnRlcl0u
dmFsdWUoKSAqIHBvdzI1NigzIC0gY291bnRlcik7Ci0gICAgcmV0dXJuIGlwdjQ7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBV
UkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgdWludDMyX3QgcGllY2UgPSAwOwotICAgIGJv
b2wgbGVhZGluZ1plcm9zID0gZmFsc2U7Ci0gICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOwotICAg
IHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgq
aXRlcmF0b3IpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgKytk
aWdpdENvdW50OwotICAgICAgICBpZiAoIXBpZWNlICYmICppdGVyYXRvciA9PSAnMCcpIHsKLSAg
ICAgICAgICAgIGlmIChsZWFkaW5nWmVyb3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0gJzAnKQotICAgICAgICAgICAgbGVhZGlu
Z1plcm9zID0gdHJ1ZTsKLSAgICAgICAgcGllY2UgPSBwaWVjZSAqIDEwICsgKml0ZXJhdG9yIC0g
JzAnOwotICAgICAgICBpZiAocGllY2UgPiAyNTUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnLicpCi0gICAgICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgaWYgKHBpZWNlICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gcGllY2U7Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFkZHJl
c3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgSVB2NEFkZHJlc3MgYWRkcmVzcyA9
IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyArK2kpIHsKLSAgICAgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBpZWNlID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0
ZXJhdG9yKSkKLSAgICAgICAgICAgIGFkZHJlc3MgPSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZh
bHVlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgICAgIGlmIChpIDwgMykgewotICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGlmICgqaXRl
cmF0b3IgIT0gJy4nKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+
KGl0ZXJhdG9yKTsKLSAgICAgICAgfSBlbHNlIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotICAgIEFTU0VSVChpdGVyYXRvci5h
dEVuZCgpKTsKLSAgICByZXR1cm4gYWRkcmVzczsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KLXN0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFy
c2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCi17
Ci0gICAgQVNTRVJUKCpjID09ICdbJyk7Ci0gICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBjOwot
ICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgSVB2NkFkZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH19OwotICAgIHNpemVfdCBwaWVjZVBvaW50ZXIgPSAwOwotICAgIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBjb21wcmVzc1BvaW50ZXI7Ci0KLSAgICBpZiAoKmMgPT0gJzon
KSB7Ci0gICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICAgICAgaWYgKGMuYXRFbmQo
KSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICgqYyAhPSAn
OicpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlKGMs
IGhvc3RCZWdpbik7Ci0gICAgICAgICsrcGllY2VQb2ludGVyOwotICAgICAgICBjb21wcmVzc1Bv
aW50ZXIgPSBwaWVjZVBvaW50ZXI7Ci0gICAgfQotICAgIAotICAgIHdoaWxlICghYy5hdEVuZCgp
KSB7Ci0gICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCkKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgICAgIGlmICgqYyA9PSAnOicpIHsKLSAgICAgICAgICAgIGlmIChj
b21wcmVzc1BvaW50ZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICAgICAgICAgICsrcGllY2VQb2lu
dGVyOwotICAgICAgICAgICAgY29tcHJlc3NQb2ludGVyID0gcGllY2VQb2ludGVyOwotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2
IHx8IChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2ludGVyIDwgNikpIHsKLSAgICAgICAgICAg
IGlmIChzdGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFk
ZHJlc3NJbnNpZGVJUHY2KGMpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRl
ciAmJiBwaWVjZVBvaW50ZXIgPT0gNSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAg
ICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVl
KCkgPj4gMTY7Ci0gICAgICAgICAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0
QWRkcmVzcy52YWx1ZSgpICYgMHhGRkZGOwotICAgICAgICAgICAgICAgIGMgPSB7IH07Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdWlu
dDE2X3QgdmFsdWUgPSAwOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0gMDsKLSAgICAgICAgYm9v
bCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKLSAgICAgICAgZm9yICg7IGxlbmd0aCA8IDQ7IGxlbmd0
aCsrKSB7Ci0gICAgICAgICAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKmMpKQotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcigqYykpCi0gICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJzAn
ICYmICFsZW5ndGgpCi0gICAgICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAg
ICAgICAgIHZhbHVlID0gdmFsdWUgKiAweDEwICsgdG9BU0NJSUhleFZhbHVlKCpjKTsKLSAgICAg
ICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgaWYgKFVOTElLRUxZKCh2YWx1ZSAmJiBsZWFkaW5nWmVyb3MpIHx8ICghdmFsdWUgJiYgbGVu
Z3RoID4gMSkpKQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAg
ICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSB2YWx1ZTsKLSAgICAgICAgaWYgKGMuYXRF
bmQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDgg
fHwgKmMgIT0gJzonKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
YWR2YW5jZShjLCBob3N0QmVnaW4pOwotICAgIH0KLSAgICAKLSAgICBpZiAoIWMuYXRFbmQoKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAKLSAgICBpZiAoY29tcHJlc3NQb2lu
dGVyKSB7Ci0gICAgICAgIHNpemVfdCBzd2FwcyA9IHBpZWNlUG9pbnRlciAtIGNvbXByZXNzUG9p
bnRlci52YWx1ZSgpOwotICAgICAgICBwaWVjZVBvaW50ZXIgPSA3OwotICAgICAgICB3aGlsZSAo
c3dhcHMpCi0gICAgICAgICAgICBzdGQ6OnN3YXAoYWRkcmVzc1twaWVjZVBvaW50ZXItLV0sIGFk
ZHJlc3NbY29tcHJlc3NQb2ludGVyLnZhbHVlKCkgKyBzd2Fwcy0tIC0gMV0pOwotICAgIH0gZWxz
ZSBpZiAocGllY2VQb2ludGVyICE9IDgpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcG9zc2libGVDb21wcmVzc1BvaW50ZXIgPSBmaW5k
TG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKLSAgICBpZiAocG9zc2libGVDb21wcmVzc1Bv
aW50ZXIpCi0gICAgICAgIHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyLnZhbHVlKCkrKzsKLSAgICBp
ZiAoVU5MSUtFTFkoY29tcHJlc3NQb2ludGVyICE9IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKSkK
LSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0gICAgCi0gICAgcmV0dXJuIGFk
ZHJlc3M7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1VUkxQYXJzZXI6
OkxDaGFyQnVmZmVyIFVSTFBhcnNlcjo6cGVyY2VudERlY29kZShjb25zdCBMQ2hhciogaW5wdXQs
IHNpemVfdCBsZW5ndGgsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQotewotICAgIExDaGFyQnVmZmVyIG91
dHB1dDsKLSAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgIAot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdWludDhf
dCBieXRlID0gaW5wdXRbaV07Ci0gICAgICAgIGlmIChieXRlICE9ICclJykKLSAgICAgICAgICAg
IG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA+
IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQo
aW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDJdKSkgewotICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0
aW9uKTsKLSAgICAgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhW
YWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kgKyAyXSkpOwotICAgICAgICAgICAgICAgIGkgKz0g
MjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRB
cHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tl
ZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLSAgICAKLVVSTFBh
cnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBp
bnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBMQ2hhckJ1ZmZlciBvdXRwdXQ7Ci0gICAgb3V0
cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICAKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGlucHV0
W2ldOwotICAgICAgICBpZiAoYnl0ZSAhPSAnJScpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVj
a2VkQXBwZW5kKGJ5dGUpOwotICAgICAgICBlbHNlIGlmIChsZW5ndGggPiAyICYmIGkgPCBsZW5n
dGggLSAyKSB7Ci0gICAgICAgICAgICBpZiAoaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkg
JiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAyXSkpIHsKLSAgICAgICAgICAgICAgICBvdXRw
dXQudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlIZXhWYWx1ZShpbnB1dFtpICsgMV0sIGlucHV0W2kg
KyAyXSkpOwotICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG91dHB1dDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rk
OjpvcHRpb25hbDxVUkxQYXJzZXI6OkxDaGFyQnVmZmVyPiBVUkxQYXJzZXI6OmRvbWFpblRvQVND
SUkoU3RyaW5nSW1wbCYgZG9tYWluLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikKLXsKLSAgICBMQ2hhckJ1
ZmZlciBhc2NpaTsKLSAgICBpZiAoZG9tYWluLmlzQWxsQVNDSUkoKSkgewotICAgICAgICBzaXpl
X3QgbGVuZ3RoID0gZG9tYWluLmxlbmd0aCgpOwotICAgICAgICBpZiAoZG9tYWluLmlzOEJpdCgp
KSB7Ci0gICAgICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0
ZXJzOCgpOwotICAgICAgICAgICAgYXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgp
OwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQot
ICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9s
YXRpb25Qb3NpdGlvbik7Ci0gICAgICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRv
QVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IGRvbWFpbi5jaGFyYWN0
ZXJzMTYoKTsKLSAgICAgICAgICAgIGFzY2lpLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3Ro
KTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcnNbaV0pKSkK
LSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4Vmlv
bGF0aW9uUG9zaXRpb24pOwotICAgICAgICAgICAgICAgIGFzY2lpLnVuY2hlY2tlZEFwcGVuZCh0
b0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBhc2NpaTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3Qgc2l6ZV90IG1heERv
bWFpbkxlbmd0aCA9IDY0OwotICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW21heERvbWFpbkxlbmd0
aF07Ci0gICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBVSUROQUluZm8g
cHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOwotICAgIGludDMyX3Qg
bnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFs
RG9tYWluTmFtZVRyYW5zY29kZXIoKSwgU3RyaW5nVmlldyhkb21haW4pLnVwY29udmVydGVkQ2hh
cmFjdGVycygpLCBkb21haW4ubGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVyLCBtYXhEb21haW5MZW5n
dGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKLSAgICBBU1NFUlQobnVtQ2hhcmFjdGVy
c0NvbnZlcnRlZCA8PSBzdGF0aWNfY2FzdDxpbnQzMl90PihtYXhEb21haW5MZW5ndGgpKTsKLQot
ICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsK
LSAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsg
KytpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXNBU0NJSShob3N0bmFtZUJ1ZmZlcltpXSkpOwot
ICAgICAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoaG9zdG5hbWVCdWZmZXJbaV0pKTsKLSAg
ICAgICAgfQotICAgICAgICBhc2NpaS5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3Rl
cnNDb252ZXJ0ZWQpOwotICAgICAgICBpZiAoZG9tYWluICE9IFN0cmluZ1ZpZXcoYXNjaWkuZGF0
YSgpLCBhc2NpaS5zaXplKCkpKQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9y
Rm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICByZXR1cm4gYXNjaWk7Ci0gICAg
fQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpoYXNGb3Ji
aWRkZW5Ib3N0Q29kZVBvaW50KGNvbnN0IFVSTFBhcnNlcjo6TENoYXJCdWZmZXImIGFzY2lpRG9t
YWluKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXNjaWlEb21haW4uc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbltp
XSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnBh
cnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17Ci0g
ICAgQVNTRVJUKCppdGVyYXRvciA9PSAnOicpOwotICAgIGF1dG8gY29sb25JdGVyYXRvciA9IGl0
ZXJhdG9yOwotICAgIGFkdmFuY2UoaXRlcmF0b3IsIGNvbG9uSXRlcmF0b3IpOwotICAgIHVpbnQz
Ml90IHBvcnQgPSAwOwotICAgIGlmIChVTkxJS0VMWShpdGVyYXRvci5hdEVuZCgpKSkgewotICAg
ICAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0gY3VycmVudFBvc2l0aW9uKGNvbG9uSXRlcmF0b3Ip
IC0gbV91cmwubV9ob3N0RW5kOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9
IFVSTDo6bWF4UG9ydExlbmd0aCk7Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRM
ZW5ndGg7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHNpemVfdCBkaWdpdENvdW50ID0gMDsKLSAgICBib29s
IGxlYWRpbmdaZXJvcyA9IGZhbHNlOwotICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytp
dGVyYXRvcikgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9y
KSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKml0
ZXJhdG9yKSkgewotICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnMCcgJiYgIWRpZ2l0Q291
bnQpCi0gICAgICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgICAgICsr
ZGlnaXRDb3VudDsKLSAgICAgICAgICAgIHBvcnQgPSBwb3J0ICogMTAgKyAqaXRlcmF0b3IgLSAn
MCc7Ci0gICAgICAgICAgICBpZiAocG9ydCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+
OjptYXgoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChwb3J0ICYmIGxlYWRp
bmdaZXJvcykKLSAgICAgICAgc3ludGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgIAot
ICAgIGlmICghcG9ydCAmJiBkaWdpdENvdW50ID4gMSkKLSAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGNvbG9uSXRlcmF0b3IpOwotCi0gICAgQVNTRVJUKHBvcnQgPT0gc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KHBvcnQpKTsKLSAgICBpZiAoVU5MSUtFTFkoZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwYXJz
ZWREYXRhVmlldygwLCBtX3VybC5tX3NjaGVtZUVuZCkpID09IHN0YXRpY19jYXN0PHVpbnQxNl90
Pihwb3J0KSkpCi0gICAgICAgIHN5bnRheFZpb2xhdGlvbihjb2xvbkl0ZXJhdG9yKTsKLSAgICBl
bHNlIHsKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignOicpOwotICAgICAgICBBU1NFUlQo
cG9ydCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOwotICAgICAgICBh
cHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQxNl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4o
cG9ydCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRp
b24oaXRlcmF0b3IpIC0gbV91cmwubV9ob3N0RW5kOwotICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRM
ZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKLSAgICBtX3VybC5tX3BvcnRMZW5ndGggPSBw
b3J0TGVuZ3RoOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5k
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoKml0ZXJhdG9yID09ICc6JykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJ1snKSB7Ci0gICAgICAg
IGF1dG8gaXB2NkVuZCA9IGl0ZXJhdG9yOwotICAgICAgICB3aGlsZSAoIWlwdjZFbmQuYXRFbmQo
KSAmJiAqaXB2NkVuZCAhPSAnXScpCi0gICAgICAgICAgICArK2lwdjZFbmQ7Ci0gICAgICAgIGlm
IChpcHY2RW5kLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlm
IChhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+KGl0ZXJhdG9yLCBpcHY2RW5kKSkpIHsKLSAgICAgICAgICAgIHNlcmlhbGl6ZUlQdjYo
YWRkcmVzcy52YWx1ZSgpKTsKLSAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgYWR2YW5jZShpcHY2RW5kKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlw
djZFbmQuYXRFbmQoKSAmJiAqaXB2NkVuZCA9PSAnOicpIHsKLSAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGlwdjZFbmQpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXB2NkVuZCk7
Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdXJs
SXNTcGVjaWFsKSB7Ci0gICAgICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRv
cikgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikp
KSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgqaXRlcmF0
b3IgPT0gJzonKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludCgqaXRlcmF0b3IpICYmICppdGVyYXRvciAhPSAn
JScpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHV0ZjhQZXJj
ZW50RW5jb2RlPGlzSW5TaW1wbGVFbmNvZGVTZXQ+KGl0ZXJhdG9yKTsKLSAgICAgICAgfQotICAg
ICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBwYXJzZVBvcnQoaXRlcmF0b3IpOwotICAgIH0KLSAgICAKLSAgICBpZiAoTElLRUxZKCFtX2hv
c3RIYXNQZXJjZW50T3JOb25BU0NJSSkpIHsKLSAgICAgICAgYXV0byBob3N0SXRlcmF0b3IgPSBp
dGVyYXRvcjsKLSAgICAgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7
Ci0gICAgICAgICAgICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGlzRm9yYmlkZGVuSG9zdENvZGVQb2lu
dCgqaXRlcmF0b3IpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
ICAgICAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRIb3N0KGhvc3RJdGVyYXRvciwgQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaG9zdEl0ZXJhdG9yLCBpdGVyYXRvcikpOwotICAg
ICAgICBpZiAoYWRkcmVzcykgewotICAgICAgICAgICAgc2VyaWFsaXplSVB2NChhZGRyZXNzLnZh
bHVlKCkpOwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0
ZXJhdG9yKTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAg
ICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXRlcmF0b3Ip
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChhZGRyZXNzLmVycm9yKCkgPT0gSVB2NFBhcnNpbmdF
cnJvcjo6RmFpbHVyZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZm9yICg7
IGhvc3RJdGVyYXRvciAhPSBpdGVyYXRvcjsgKytob3N0SXRlcmF0b3IpIHsKLSAgICAgICAgICAg
IGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaG9zdEl0ZXJhdG9yKSkpIHsKLSAgICAgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJ
VXBwZXIoKmhvc3RJdGVyYXRvcikpKQotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbiho
b3N0SXRlcmF0b3IpOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih0b0FTQ0lJTG93
ZXIoKmhvc3RJdGVyYXRvcikpOwotICAgICAgICB9Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmICghaG9zdEl0ZXJhdG9yLmF0
RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGhvc3RJdGVyYXRvcik7Ci0gICAg
ICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpIC0gbV91
cmwubV9ob3N0RW5kOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3J0TGVuZ3RoIDw9IFVSTDo6
bWF4UG9ydExlbmd0aCk7Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBjb25zdCBhdXRvIGhvc3RC
ZWdpbiA9IGl0ZXJhdG9yOwotICAgIAotICAgIExDaGFyQnVmZmVyIHV0ZjhFbmNvZGVkOwotICAg
IGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICBpZiAoVU5M
SUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihob3N0QmVnaW4pOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
aWYgKFVOTElLRUxZKCFpc0FTQ0lJKCppdGVyYXRvcikpKQotICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGhvc3RCZWdpbik7Ci0KLSAgICAgICAgaWYgKCFVX0lTX1VOSUNPREVfQ0hBUigqaXRl
cmF0b3IpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB1aW50OF90IGJ1ZmZl
cltVOF9NQVhfTEVOR1RIXTsKLSAgICAgICAgaW50MzJfdCBvZmZzZXQgPSAwOwotICAgICAgICBV
OF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCAqaXRlcmF0b3IpOwotICAgICAgICB1dGY4
RW5jb2RlZC5hcHBlbmQoYnVmZmVyLCBvZmZzZXQpOwotICAgIH0KLSAgICBMQ2hhckJ1ZmZlciBw
ZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUodXRmOEVuY29kZWQuZGF0YSgpLCB1dGY4RW5j
b2RlZC5zaXplKCksIGhvc3RCZWdpbik7Ci0gICAgU3RyaW5nIGRvbWFpbiA9IFN0cmluZzo6ZnJv
bVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwotICAg
IGlmIChkb21haW4uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZG9t
YWluICE9IFN0cmluZ1ZpZXcocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5z
aXplKCkpKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLSAgICBhdXRvIGFz
Y2lpRG9tYWluID0gZG9tYWluVG9BU0NJSSgqZG9tYWluLmltcGwoKSwgaG9zdEJlZ2luKTsKLSAg
ICBpZiAoIWFzY2lpRG9tYWluIHx8IGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoYXNjaWlEb21h
aW4udmFsdWUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBMQ2hhckJ1ZmZlciYgYXNj
aWlEb21haW5WYWx1ZSA9IGFzY2lpRG9tYWluLnZhbHVlKCk7Ci0gICAgY29uc3QgTENoYXIqIGFz
Y2lpRG9tYWluQ2hhcmFjdGVycyA9IGFzY2lpRG9tYWluVmFsdWUuZGF0YSgpOwotCi0gICAgYXV0
byBhZGRyZXNzID0gcGFyc2VJUHY0SG9zdChob3N0QmVnaW4sIENvZGVQb2ludEl0ZXJhdG9yPExD
aGFyPihhc2NpaURvbWFpblZhbHVlLmJlZ2luKCksIGFzY2lpRG9tYWluVmFsdWUuZW5kKCkpKTsK
LSAgICBpZiAoYWRkcmVzcykgewotICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUo
KSk7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7
Ci0gICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAgfQotICAgIGlmIChhZGRyZXNzLmVy
cm9yKCkgPT0gSVB2NFBhcnNpbmdFcnJvcjo6RmFpbHVyZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihhc2NpaURvbWFpbkNoYXJhY3RlcnMsIGFzY2lp
RG9tYWluVmFsdWUuc2l6ZSgpKTsKLSAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRp
b24oaXRlcmF0b3IpOwotICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJu
IHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVS
TERlY29kZShTdHJpbmdWaWV3IGlucHV0KQotewotICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0Zjgo
U3RyaWN0Q29udmVyc2lvbik7Ci0gICAgaWYgKHV0ZjguaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBwZXJjZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgo
KSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBw
ZXJjZW50RGVjb2RlZC5zaXplKCkpOwotfQotCi0vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5v
cmcvI2NvbmNlcHQtdXJsZW5jb2RlZC1wYXJzZXIKLWF1dG8gVVJMUGFyc2VyOjpwYXJzZVVSTEVu
Y29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+IFVSTEVuY29kZWRGb3JtCi17Ci0gICAgVVJM
RW5jb2RlZEZvcm0gb3V0cHV0OwotICAgIGZvciAoU3RyaW5nVmlldyBieXRlcyA6IGlucHV0LnNw
bGl0KCcmJykpIHsKLSAgICAgICAgYXV0byBlcXVhbEluZGV4ID0gYnl0ZXMuZmluZCgnPScpOwot
ICAgICAgICBpZiAoZXF1YWxJbmRleCA9PSBub3RGb3VuZCkgewotICAgICAgICAgICAgYXV0byBu
YW1lID0gZm9ybVVSTERlY29kZShieXRlcy50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7
Ci0gICAgICAgICAgICBpZiAobmFtZSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsg
bmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJ
bmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOwotICAgICAgICAgICAgYXV0byB2
YWx1ZSA9IGZvcm1VUkxEZWNvZGUoYnl0ZXMuc3Vic3RyaW5nKGVxdWFsSW5kZXggKyAxKS50b1N0
cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7Ci0gICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1
ZSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52
YWx1ZSgpIH0pOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBvdXRwdXQ7Ci19Ci0KLXN0
YXRpYyB2b2lkIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3JtKGNvbnN0IFN0cmluZyYgaW5wdXQsIFZl
Y3RvcjxMQ2hhcj4mIG91dHB1dCkKLXsKLSAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmlj
dENvbnZlcnNpb24pOwotICAgIGNvbnN0IGNoYXIqIGRhdGEgPSB1dGY4LmRhdGEoKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHV0ZjgubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBjb25z
dCBjaGFyIGJ5dGUgPSBkYXRhW2ldOwotICAgICAgICBpZiAoYnl0ZSA9PSAweDIwKQotICAgICAg
ICAgICAgb3V0cHV0LmFwcGVuZCgweDJCKTsKLSAgICAgICAgZWxzZSBpZiAoYnl0ZSA9PSAweDJB
Ci0gICAgICAgICAgICB8fCBieXRlID09IDB4MkQKLSAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgy
RQotICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHgzMCAmJiBieXRlIDw9IDB4MzkpCi0gICAgICAg
ICAgICB8fCAoYnl0ZSA+PSAweDQxICYmIGJ5dGUgPD0gMHg1QSkKLSAgICAgICAgICAgIHx8IGJ5
dGUgPT0gMHg1RgotICAgICAgICAgICAgfHwgKGJ5dGUgPj0gMHg2MSAmJiBieXRlIDw9IDB4N0Ep
KSAvLyBGSVhNRTogUHV0IHRoZXNlIGluIHRoZSBjaGFyYWN0ZXJDbGFzc1RhYmxlIHRvIGF2b2lk
IGJyYW5jaGVzLgotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChieXRlKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoYnl0ZSwgb3V0cHV0KTsKLSAgICB9Ci19
Ci0gICAgCi1TdHJpbmcgVVJMUGFyc2VyOjpzZXJpYWxpemUoY29uc3QgVVJMRW5jb2RlZEZvcm0m
IHR1cGxlcykKLXsKLSAgICBpZiAodHVwbGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHsg
fTsKLQotICAgIFZlY3RvcjxMQ2hhcj4gb3V0cHV0OwotICAgIGZvciAoYXV0byYgdHVwbGUgOiB0
dXBsZXMpIHsKLSAgICAgICAgaWYgKCFvdXRwdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgb3V0
cHV0LmFwcGVuZCgnJicpOwotICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS5r
ZXksIG91dHB1dCk7Ci0gICAgICAgIG91dHB1dC5hcHBlbmQoJz0nKTsKLSAgICAgICAgc2VyaWFs
aXplVVJMRW5jb2RlZEZvcm0odHVwbGUudmFsdWUsIG91dHB1dCk7Ci0gICAgfQotICAgIHJldHVy
biBTdHJpbmc6OmFkb3B0KFdURk1vdmUob3V0cHV0KSk7Ci19Ci0KLWNvbnN0IFVJRE5BJiBVUkxQ
YXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpCi17Ci0gICAgc3RhdGlj
IFVJRE5BKiBlbmNvZGVyOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBVRXJyb3JDb2RlIGVycm9y
ID0gVV9aRVJPX0VSUk9SOwotICAgICAgICAvLyBXYXJuaW5nOiBQbGVhc2UgY29udGFjdCBhIFdl
YktpdEdUSysgZGV2ZWxvcGVyIGlmIGNoYW5naW5nIHRoZXNlIGZsYWdzLgotICAgICAgICAvLyBU
aGV5IHNob3VsZCBiZSBzeW5jZWQgd2l0aCBlcGh5X3VyaV9kZWNvZGUoKSBpbiBlcGh5LXVyaS1o
ZWxwZXJzLmMuCi0gICAgICAgIGVuY29kZXIgPSB1aWRuYV9vcGVuVVRTNDYoVUlETkFfQ0hFQ0tf
QklESSB8IFVJRE5BX0NIRUNLX0NPTlRFWFRKIHwgVUlETkFfTk9OVFJBTlNJVElPTkFMX1RPX1VO
SUNPREUgfCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fQVNDSUksICZlcnJvcik7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikpOwotICAgICAgICBSRUxFQVNFX0FTU0VS
VChlbmNvZGVyKTsKLSAgICB9KTsKLSAgICByZXR1cm4gKmVuY29kZXI7Ci19Ci0KLWJvb2wgVVJM
UGFyc2VyOjphbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAg
ICBVUkxfUEFSU0VSX0xPRygiJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJXNc
biVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkICVzIiwKLSAgICAgICAgYS5tX2lz
VmFsaWQsCi0gICAgICAgIGEubV9jYW5ub3RCZUFCYXNlVVJMLAotICAgICAgICBhLm1fcHJvdG9j
b2xJc0luSFRUUEZhbWlseSwKLSAgICAgICAgYS5tX3NjaGVtZUVuZCwKLSAgICAgICAgYS5tX3Vz
ZXJTdGFydCwKLSAgICAgICAgYS5tX3VzZXJFbmQsCi0gICAgICAgIGEubV9wYXNzd29yZEVuZCwK
LSAgICAgICAgYS5tX2hvc3RFbmQsCi0gICAgICAgIGEubV9ob3N0RW5kICsgYS5tX3BvcnRMZW5n
dGgsCi0gICAgICAgIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCi0gICAgICAgIGEubV9wYXRoRW5k
LAotICAgICAgICBhLm1fcXVlcnlFbmQsCi0gICAgICAgIGEubV9zdHJpbmcudXRmOCgpLmRhdGEo
KSwKLSAgICAgICAgYi5tX2lzVmFsaWQsCi0gICAgICAgIGIubV9jYW5ub3RCZUFCYXNlVVJMLAot
ICAgICAgICBiLm1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSwKLSAgICAgICAgYi5tX3NjaGVtZUVu
ZCwKLSAgICAgICAgYi5tX3VzZXJTdGFydCwKLSAgICAgICAgYi5tX3VzZXJFbmQsCi0gICAgICAg
IGIubV9wYXNzd29yZEVuZCwKLSAgICAgICAgYi5tX2hvc3RFbmQsCi0gICAgICAgIGIubV9ob3N0
RW5kICsgYi5tX3BvcnRMZW5ndGgsCi0gICAgICAgIGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gsCi0g
ICAgICAgIGIubV9wYXRoRW5kLAotICAgICAgICBiLm1fcXVlcnlFbmQsCi0gICAgICAgIGIubV9z
dHJpbmcudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICByZXR1cm4gYS5tX3N0cmluZyA9PSBiLm1fc3Ry
aW5nCi0gICAgICAgICYmIGEubV9pc1ZhbGlkID09IGIubV9pc1ZhbGlkCi0gICAgICAgICYmIGEu
bV9jYW5ub3RCZUFCYXNlVVJMID09IGIubV9jYW5ub3RCZUFCYXNlVVJMCi0gICAgICAgICYmIGEu
bV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID09IGIubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5Ci0g
ICAgICAgICYmIGEubV9zY2hlbWVFbmQgPT0gYi5tX3NjaGVtZUVuZAotICAgICAgICAmJiBhLm1f
dXNlclN0YXJ0ID09IGIubV91c2VyU3RhcnQKLSAgICAgICAgJiYgYS5tX3VzZXJFbmQgPT0gYi5t
X3VzZXJFbmQKLSAgICAgICAgJiYgYS5tX3Bhc3N3b3JkRW5kID09IGIubV9wYXNzd29yZEVuZAot
ICAgICAgICAmJiBhLm1faG9zdEVuZCA9PSBiLm1faG9zdEVuZAotICAgICAgICAmJiBhLm1fcG9y
dExlbmd0aCA9PSBiLm1fcG9ydExlbmd0aAotICAgICAgICAmJiBhLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID09IGIubV9wYXRoQWZ0ZXJMYXN0U2xhc2gKLSAgICAgICAgJiYgYS5tX3BhdGhFbmQgPT0g
Yi5tX3BhdGhFbmQKLSAgICAgICAgJiYgYS5tX3F1ZXJ5RW5kID09IGIubV9xdWVyeUVuZDsKLX0K
LQotYm9vbCBVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudChjb25zdCBVUkwmIHVy
bCkKLXsKLSAgICByZXR1cm4gdXJsLm1fc2NoZW1lRW5kIDw9IHVybC5tX3VzZXJTdGFydAotICAg
ICAgICAmJiB1cmwubV91c2VyU3RhcnQgPD0gdXJsLm1fdXNlckVuZAotICAgICAgICAmJiB1cmwu
bV91c2VyRW5kIDw9IHVybC5tX3Bhc3N3b3JkRW5kCi0gICAgICAgICYmIHVybC5tX3Bhc3N3b3Jk
RW5kIDw9IHVybC5tX2hvc3RFbmQKLSAgICAgICAgJiYgdXJsLm1faG9zdEVuZCArIHVybC5tX3Bv
cnRMZW5ndGggPD0gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoCi0gICAgICAgICYmIHVybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA8PSB1cmwubV9wYXRoRW5kCi0gICAgICAgICYmIHVybC5tX3BhdGhF
bmQgPD0gdXJsLm1fcXVlcnlFbmQKLSAgICAgICAgJiYgdXJsLm1fcXVlcnlFbmQgPD0gdXJsLm1f
c3RyaW5nLmxlbmd0aCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTFBhcnNlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjViZWIw
MjRjOTgwMzIyYTZlMDUzOWE1YmZlODQ3YWU5MTBjZmFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotc3RydWN0IFVJRE5BOwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQ
b2ludEl0ZXJhdG9yOwotCi1jbGFzcyBVUkxQYXJzZXIgewotcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIFVSTFBhcnNlcihjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBV
UkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7Ci0gICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1f
dXJsOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChj
b25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBp
bnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQoY29uc3QgVVJMJik7Ci0gICAgCi0gICAgdHlwZWRlZiBW
ZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBVUkxFbmNvZGVkRm9ybTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVVJMRW5jb2RlZEZvcm0gcGFyc2VVUkxFbmNvZGVk
Rm9ybShTdHJpbmdWaWV3KTsKLSAgICBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBVUkxF
bmNvZGVkRm9ybSYpOwotCi0gICAgc3RhdGljIGNvbnN0IFVJRE5BJiBpbnRlcm5hdGlvbmFsRG9t
YWluTmFtZVRyYW5zY29kZXIoKTsKLSAgICBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVT
ZXQoVUNoYXIpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTcGVjaWFsU2No
ZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG1heWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYg
c2NoZW1lKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4g
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKLSAgICBmcmllbmQgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKLQotICAg
IFVSTCBtX3VybDsKLSAgICBWZWN0b3I8TENoYXI+IG1fYXNjaWlCdWZmZXI7Ci0gICAgYm9vbCBt
X3VybElzU3BlY2lhbCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3VybElzRmlsZSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSB7IGZhbHNlIH07Ci0gICAgU3Ry
aW5nIG1faW5wdXRTdHJpbmc7Ci0gICAgY29uc3Qgdm9pZCogbV9pbnB1dEJlZ2luIHsgbnVsbHB0
ciB9OwotCi0gICAgYm9vbCBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiB7IGZhbHNlIH07Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdElubGluZUJ1ZmZlclNpemUgPSAyMDQ4Owot
ICAgIHVzaW5nIExDaGFyQnVmZmVyID0gVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVy
U2l6ZT47Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHBhcnNl
KGNvbnN0IENoYXJhY3RlclR5cGUqLCBjb25zdCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTFRleHRFbmNvZGluZyopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgcGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgcGFyc2VIb3N0
QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZVBvcnQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4mKTsKLQotICAgIHZvaWQgZmFpbHVyZSgpOwotICAgIGVudW0gY2xhc3Mg
UmVwb3J0U3ludGF4VmlvbGF0aW9uIHsgTm8sIFllcyB9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRp
b24gPSBSZXBvcnRTeW50YXhWaW9sYXRpb246Olllcz4KLSAgICB2b2lkIGFkdmFuY2UoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKSB7IGFkdmFuY2U8Q2hhcmFjdGVy
VHlwZSwgcmVwb3J0U3ludGF4VmlvbGF0aW9uPihpdGVyYXRvciwgaXRlcmF0b3IpOyB9Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uID0g
UmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXM+Ci0gICAgdm9pZCBhZHZhbmNlKENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgdGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiB2b2lkIHN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGJvb2wgaXNQZXJjZW50RW5jb2RlZERvdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
Pik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1dpbmRvd3NE
cml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1NpbmdsZURvdFBhdGhTZWdtZW50KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBib29sIGlzRG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGJvb2wgc2hvdWxkQ29weUZpbGVVUkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4p
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgY2hlY2tMb2NhbGhv
c3RDb2RlUG9pbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBVQ2hhcjMyKTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQXRMb2NhbGhvc3Qo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIGJvb2wgaXNMb2NhbGhvc3Qo
U3RyaW5nVmlldyk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBj
b25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVE
b3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5kV2luZG93c0Ry
aXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IGN1cnJlbnRQb3NpdGlvbihjb25zdCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFVuc2lnbmVkSW50ZWdlclR5cGU+IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNp
Z25lZEludGVnZXJUeXBlKTsKLSAgICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIz
MiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0ZDo6b3B0aW9uYWw8TENoYXJCdWZmZXI+IGRvbWFpblRvQVNDSUkoU3RyaW5nSW1wbCYs
IGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBjb25zdCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRp
b25Qb3NpdGlvbik7Ci0gICAgc3RhdGljIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGUoY29uc3Qg
TENoYXIqLCBzaXplX3QpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZm9ybVVS
TERlY29kZShTdHJpbmdWaWV3IGlucHV0KTsKLSAgICBzdGF0aWMgYm9vbCBoYXNGb3JiaWRkZW5I
b3N0Q29kZVBvaW50KGNvbnN0IExDaGFyQnVmZmVyJik7Ci0gICAgdm9pZCBwZXJjZW50RW5jb2Rl
Qnl0ZSh1aW50OF90KTsKLSAgICB2b2lkIGFwcGVuZFRvQVNDSUlCdWZmZXIoVUNoYXIzMik7Ci0g
ICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHZv
aWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IHNp
emUpIHsgYXBwZW5kVG9BU0NJSUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihj
aGFyYWN0ZXJzKSwgc2l6ZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiB2b2lkIGVuY29kZU5vblVURjhRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNv
bnN0IFVSTFRleHRFbmNvZGluZyYsIENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsK
LSAgICB2b2lkIGNvcHlBU0NJSVN0cmluZ1VudGlsKGNvbnN0IFN0cmluZyYsIHNpemVfdCBsZW5n
dGgpOwotICAgIGJvb2wgY29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJik7Ci0g
ICAgU3RyaW5nVmlldyBwYXJzZWREYXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgp
OwotICAgIFVDaGFyIHBhcnNlZERhdGFWaWV3KHNpemVfdCBwb3NpdGlvbik7Ci0KLSAgICB1c2lu
ZyBJUHY0QWRkcmVzcyA9IHVpbnQzMl90OwotICAgIHZvaWQgc2VyaWFsaXplSVB2NChJUHY0QWRk
cmVzcyk7Ci0gICAgZW51bSBjbGFzcyBJUHY0UGFyc2luZ0Vycm9yOwotICAgIGVudW0gY2xhc3Mg
SVB2NFBpZWNlUGFyc2luZ0Vycm9yOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGVGb3JTeW50YXhWaW9sYXRpb24sIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEV4cGVjdGVkPElQ
djRBZGRyZXNzLCBJUHY0UGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRIb3N0KGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGVGb3JTeW50YXhWaW9sYXRpb24+JiwgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEV4cGVjdGVkPHVpbnQzMl90LCBVUkxQYXJzZXI6OklQdjRQaWVjZVBhcnNpbmdFcnJvcj4g
cGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBib29sJiBz
eW50YXhWaW9sYXRpb24pOwotICAgIHVzaW5nIElQdjZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50
MTZfdCwgOD47Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRp
b25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHZvaWQgc2VyaWFsaXplSVB2NlBp
ZWNlKHVpbnQxNl90IHBpZWNlKTsKLSAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3Mp
OwotCi0gICAgZW51bSBjbGFzcyBVUkxQYXJ0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHZvaWQgY29weVVSTFBhcnRzVW50aWwoY29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0
LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGNvbnN0IFVSTFRleHRF
bmNvZGluZyomKTsKLSAgICBzdGF0aWMgc2l6ZV90IHVybExlbmd0aFVudGlsUGFydChjb25zdCBV
UkwmLCBVUkxQYXJ0KTsKLSAgICB2b2lkIHBvcFBhdGgoKTsKLSAgICBib29sIHNob3VsZFBvcFBh
dGgodW5zaWduZWQpOwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVXNlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAppbmRl
eCA0MTgxZWMxM2JmZjhmNGUyYWE4Mjk1ZTFiZmI3ZWZlNTllZDA4MWUzLi5jMzQ0ODQ4NmVlN2My
YWVhY2FhZWJlYmY1YTBlYjcxODNkYzZlZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Vc2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnQuaApAQCAtMzYsNyArMzYsNiBAQCBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2Vy
QWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYQogU3RyaW5nIHN5
c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKIFN0cmluZyB1c2VyQWdl
bnRCdW5kbGVWZXJzaW9uKCk7CiAjZWxzZQotY2xhc3MgVVJMOwogCiBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUgPSBl
bXB0eVN0cmluZygpLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVmVyc2lvbiA9IGVtcHR5U3Ry
aW5nKCkpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKGNv
bnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50
UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAK
aW5kZXggMjMyZTVjZTU3ZGIwNWRiMzhiNDlkZDljMDIxYTFiYzk5YzAzODVjYi4uNDliNTg5MjBh
N2FlYjc3MzJkNjU3MzI3NTU5MzQ3N2ExODZiMGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiVXNl
ckFnZW50UXVpcmtzLmgiCiAKICNpbmNsdWRlICJQdWJsaWNTdWZmaXguaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaAppbmRleCBiZjEwY2UyMzJkOTFk
NDMxYmNiNmQ0YTcxYTUxZGQ0ZGRlOGZiODhhLi5kYzc3ZDRlODUwZWY5MDlkNGIwMDU2ZDdjOWE3
ZTFhZDQ1ZmRkOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnRRdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3Mu
aApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsK
LQogY2xhc3MgVXNlckFnZW50UXVpcmtzIHsKIHB1YmxpYzoKICAgICBlbnVtIFVzZXJBZ2VudFF1
aXJrIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNiNDNiYzdhMDdiODBhZTRiYWEzNWZkYjczMzVhYzNi
YTc2NDQxNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkNGVVJMRXh0cmFzLmgiCi0KLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmV0YWluUHRyPENGVVJMUmVm
PiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENG
VVJMUmVmIGJhc2VVUkwpCi17Ci0gICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2Ug
dGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5p
bmcgVVJMIGNvbXBvbmVudHMKLSAgICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93
ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1
ZW5jZXMsIHdoaWNoCi0gICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBv
ciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZh
bGwgYmFjawotICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCi0g
ICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1
dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBz
aXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGJhc2VVUkwsIHRydWUpKTsKLSAgICBpZiAoIXJl
c3VsdCkKLSAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0
aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NG
U3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGJhc2VVUkwsIHRydWUpKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi12b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYg
cmVzdWx0KQotewotICAgIENGSW5kZXggYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwg
MCwgMCk7Ci0gICAgcmVzdWx0LnJlc2l6ZShieXRlc0xlbmd0aCk7Ci0gICAgQ0ZJbmRleCBmaW5h
bExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVz
dWx0LmRhdGEoKSksIGJ5dGVzTGVuZ3RoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3Ro
LCBmaW5hbExlbmd0aCA9PSBieXRlc0xlbmd0aCk7Ci19Ci0KLXZvaWQgZ2V0VVJMQnl0ZXMoQ0ZV
UkxSZWYgdXJsLCBDU3RyaW5nJiByZXN1bHQpCi17Ci0gICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9
IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKLSAgICBjaGFyKiBieXRlczsKLSAgICByZXN1bHQg
PSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGJ5dGVzTGVuZ3RoLCBieXRlcyk7Ci0gICAgQ0ZJ
bmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJ
bnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0
aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5ndGgpOwotfQotCi1ib29sIGlzQ0ZVUkxTYW1lT3Jp
Z2luKENGVVJMUmVmIGNmVVJMLCBjb25zdCBVUkwmIHVybCkKLXsKLSAgICBBU1NFUlQodXJsLnBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7Ci0KLSAgICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwg
dXJsLmhhc1Bhc3N3b3JkKCkpCi0gICAgICAgIHJldHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsKLQotICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7Ci0g
ICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5dGVzKTsKLSAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5n
IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihieXRlcy5zaXplKCkpIH07Ci0KLSAgICBpZiAoIXVybC5oYXNQYXRoKCkp
Ci0gICAgICAgIHJldHVybiBTdHJpbmdWaWV3IHsgdXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJp
bmc7Ci0KLSAgICBhdXRvIHVybFdpdGhvdXRQYXRoID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmco
KSB9LnN1YnN0cmluZygwLCB1cmwucGF0aFN0YXJ0KCkgKyAxKTsKLSAgICByZXR1cm4gY2ZVUkxT
dHJpbmcuc3RhcnRzV2l0aCh1cmxXaXRob3V0UGF0aCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
ZmQ1NzA2NjBkYTZhYTk4ZDEyMjg2NDA3OGZlZDdkZDZlNzc5ZWY1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0NGVVJMRXh0cmFzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBDRlVSTEV4dHJhc19oCi0jZGVmaW5lIENGVVJMRXh0cmFzX2gKLQotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkw7Ci10eXBl
ZGVmIFZlY3RvcjxjaGFyLCA1MTI+IFVSTENoYXJCdWZmZXI7Ci0KLVdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXpl
X3QsIENGVVJMUmVmIGJhc2VVUkwgPSAwKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJMQnl0
ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VVJM
Qnl0ZXMoQ0ZVUkxSZWYsIENTdHJpbmcmKTsKLQotYm9vbCBpc0NGVVJMU2FtZU9yaWdpbihDRlVS
TFJlZiwgY29uc3QgVVJMJik7Ci0KLX0KLQotI2VuZGlmIC8vIENGVVJMRXh0cmFzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzMzNjZhMjBkM2M1ZGE0NzA4OGZhOThmYjU0ZjhlOWM2ZWY4OGM5ZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9VUkxDRi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJVUkwuaCIKLQotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0j
aW5jbHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgotI2VuZGlmCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotVVJMOjpVUkwoQ0ZVUkxSZWYgdXJsKQotewotICAgIGlmICghdXJs
KSB7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/Ci0gICAgQ1N0
cmluZyB1cmxCeXRlczsKLSAgICBnZXRVUkxCeXRlcyh1cmwsIHVybEJ5dGVzKTsKLSAgICBVUkxQ
YXJzZXIgcGFyc2VyKHVybEJ5dGVzLmRhdGEoKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7Ci19Ci0KLSNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6
Y3JlYXRlQ0ZVUkwoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJl
dHVybiBmb3IgaW52YWxpZCBVUkxzPwotICAgIC8vIEN1cnJlbnRseSBpdCB0aHJvd3MgYXdheSB0
aGUgaGlnaCBieXRlcyBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGluIHRoYXQgY2Fz
ZSwKLSAgICAvLyB3aGljaCBpcyBjbGVhcmx5IHdyb25nLgotICAgIFVSTENoYXJCdWZmZXIgYnVm
ZmVyOwotICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOwotICAgIGF1dG8gY2ZVUkwgPSBjcmVhdGVD
RlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0KLSAgICBpZiAo
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5nZXQo
KSwgKnRoaXMpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBjZlVSTDsK
LX0KLSNlbmRpZgotCi1TdHJpbmcgVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0Ci17Ci0gICAg
UmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTCA9IGNyZWF0ZUNGVVJMKCk7Ci0gICAgaWYgKCFjZlVS
TCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0jaWYgUExBVEZPUk0oV0lOKQotICAgIENG
VVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGU7Ci0jZWxzZQot
ICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOwotI2Vu
ZGlmCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgoY2ZVUkwuZ2V0
KCksIHBhdGhTdHlsZSkpLmdldCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaApp
bmRleCAyMTA2YzJiYTliODZhYzAyMGI0MDcwMTBlOTEzMjM5YmQ0MjU5MGVmLi5hNGU3NjJlNzg2
MzlkZDZjNjNjYzI2ZTg2OTcwOWE1OTdjYTQxMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyX2gKLSNkZWZpbmUg
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRlIDxvYmpjL05TT2JqQ1J1bnRpbWUu
aD4KQEAgLTM5LDggKzM4LDYgQEAgT0JKQ19DTEFTUyBOU0RhdGE7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgVVJMOwotCiBjbGFzcyBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogICAgIGZyaWVuZCBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CiAKQEAgLTY5LDUgKzY2LDMgQEAg
cHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5k
ZXggZTliZmMwNzllMDIxNzdhY2I3MGZhODkyZjRmYTJkOTE1NjQyOGZmYy4uNDcwNWVkMTVhNWM1
OGM0MTFjNDlmMzRmYWY3M2VlYjMwN2IyYzk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
bW0KQEAgLTM0LDEwICszNCwxMCBAQAogI2ltcG9ydCAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2lt
cG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIu
aCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL05FRmlsdGVyU291cmNlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90aHJlYWRzL0JpbmFyeVNl
bWFwaG9yZS5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKE5ldHdvcmtFeHRlbnNp
b24pOwpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvCiAKICAgICBV
UkwgbW9kaWZpZWRSZXF1ZXN0VVJMIHsgVVJMKCksIG1vZGlmaWVkUmVxdWVzdFVSTFN0cmluZy5n
ZXQoKSB9OwogICAgIGlmICghbW9kaWZpZWRSZXF1ZXN0VVJMLmlzVmFsaWQoKSkgewotICAgICAg
ICBMT0coQ29udGVudEZpbHRlcmluZywgIk5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZh
aWxlZCB0byBjb252ZXJ0IG1vZGlmaWVkIFVSTCBzdHJpbmcgJUAgdG8gYSBXZWJDb3JlOjpVUkwu
XG4iLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcuZ2V0KCkpOworICAgICAgICBMT0coQ29udGVu
dEZpbHRlcmluZywgIk5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZhaWxlZCB0byBjb252
ZXJ0IG1vZGlmaWVkIFVSTCBzdHJpbmcgJUAgdG8gYSAgVVJMLlxuIiwgbW9kaWZpZWRSZXF1ZXN0
VVJMU3RyaW5nLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TU0xLZXlHZW5lcmF0b3JHTGliLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xpYi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDFmNDhkNzE2MWU3ZjI5NjVjMTU1ODVmZjAwOGZjMjkzMDkyYzM5MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU1NMS2V5R2VuZXJhdG9yR0xp
Yi5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IE1p
Y2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyh1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiB7IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCmluZGV4IDE2
MjFhODg1ZTg3MDRjYTg0ODMyMGY2MjUxYzA2ZjkyMWIxODlkODguLmEzYmE0ZTQ2ZGMyODM5NWQ4
NTJjZThmYjY4YzcwYjU3OTllMjc3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9Vc2VyQWdlbnRHTGliLmNwcApAQCAtMjcsOSArMjcsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudC5oIgogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiVXNlckFnZW50UXVpcmtzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAogI2lmIE9TKFVOSVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGQyYjM5YjNkYjRhOWM1YjQ3Y2M5YzNmZDY5NWNmZWY3
NTNmMzU5MmEuLmY5YWZlOGU2MDYwMGVlMjc2YmMwMDMwNDU4M2UyNGFiZjQwMmNmMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CkBAIC02NSw2ICs2NSwxMiBAQCB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVUludDg7CiAjZW5kaWYK
ICNlbmRpZgogCisvLyBYMTEgaGVhZGVyIGRlZmluZXMgIk5vbmUiIGFzIGNvbnN0YW50IGluIG1h
Y3JvIGFuZCBicmVha2VzIHRoZSBQYWludEludmFsaWRhdGlvblJlYXNvbnMgZW51bSdzICJOb25l
Ii4KKy8vIEFzIGEgd29ya2Fyb3VuZCwgd2UgZXhwbGljaXRseSB1bmRlZiBYMTEncyBOb25lIGhl
cmUuCisjaWYgZGVmaW5lZChOb25lKQorI3VuZGVmIE5vbmUKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICNpZiBVU0UoV0lOR0RJKQpAQCAtODEsNyArODcsNiBAQCBjbGFzcyBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBSb3VuZGVkUmVjdDsKLWNsYXNzIFVSTDsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEOwogY2xhc3MgUGF0aDsKIGNsYXNzIFRleHRSdW47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNGYwNzdkNWI5OTJmNDFmODBkZDQxYzBhOTcy
ZTVhODdhZmZiOTE0Ny4uZTQ0YTYxZTIyNGNhMTE5NGQwOTE4ZDQ0NDNiZWE3YzFlN2U0YTBlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMzUsMTAg
KzM1LDEwIEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNWR0lt
YWdlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAppbmRleCA0NjRkZDY3YjRhZTBhZWEzYmI3MTYzMjJjZTEwMWZiMDgzZjk0
M2NjLi42NWNiMDhlYWIwMDcyNzJlNjI2NTJhZTIwMDFlZjExZjFhMmJhZmFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTY4LDcgKzY4LDYgQEAgY2xhc3Mg
RmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
SW1wbDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIHN0cnVjdCBMZW5ndGg7CiAK
IC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVz
dHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1l
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2Jz
ZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIu
aAppbmRleCA4MjY5Y2M0ZWRjMzdjZTVmNGRjMTY1ZmJkNGQ2MWMzNjk4YTQyN2ZlLi5mMjgzMjNj
MjU1YjFkMGEwMTQzNTFjOTM0MjczZGEwMWM1YWY4NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEltYWdlT2JzZXJ2ZXJfaAotI2RlZmluZSBJ
bWFnZU9ic2VydmVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgog
CkBAIC0zMiw3ICszMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2U7CiBj
bGFzcyBJbnRSZWN0OwotY2xhc3MgVVJMOwogCiAvLyBJbnRlcmZhY2UgZm9yIG5vdGlmaWNhdGlv
biBhYm91dCBjaGFuZ2VzIHRvIGFuIGltYWdlLCBpbmNsdWRpbmcgZGVjb2RpbmcsCiAvLyBkcmF3
aW5nLCBhbmQgYW5pbWF0aW5nLgpAQCAtNTQsNSArNTIsMyBAQCBwdWJsaWM6CiB9OwogCiB9Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCmluZGV4IDMxZmM4MTgyOThiZTI1OGE4NzY0YzZhY2Y0Y2ZjY2Y2YzFlMWY1MmYuLjY4
ZDEyYTEzODg4YzQyMTg4NGVlZDBiMTE4Yzk5OGVjNTg2NWQ5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTMwLDExICszMCwx
MSBAQAogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3Rm
L0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgVVNFKERJUkVDVDJEKQogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmgKaW5kZXggMDkwMTAxMjI5OWViYzQxYzJjYTg0ZTE5ZTk1MWUwMjQ3ODg2OTU4ZS4uOTgw
ZDYwZWU1MGQ1MGJjMjZhMDAzMDVlMDNlNTFiNGQ0NGNjOWU0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0zOCw3ICszOCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcEltYWdlOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwogY2xhc3MgSW1hZ2VEZWNvZGVyOwotY2xhc3MgVVJMOwogCiBjbGFzcyBJbWFnZVNvdXJj
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVu
ZCBjbGFzcyBCaXRtYXBJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCmluZGV4IGJlOWQxNTBjNTk3OTdmNjNkMzdiYjEwYzQyNjg0NDE3OWY5
ZTA0NGMuLmMyODE2YmRkMjc3YTIyNTI4MDViZGIxNTgyY2NiYmQ2NzE2NDAzYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDAsNyAr
NDAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW5IYXNoLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uY3BwCmluZGV4IDQ2ODlhNTUxMzdiNzIzNGIyNjE5NmJiNGZhMDVkNDZiMDgwM2Y4
OTMuLmI5NmQ4NWYwMjk4Yzc5OGNkZTU0MzdhYjFkYTEyZWVlM2JjNzBhZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCkBA
IC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0RhdGFWaWV3Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcElubGluZXMu
aD4KQEAgLTQ5LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBmNWE5ZTdmYWFi
ZjZhZjI1NTg5ZjJiZGFiYzcyZjY2YWNkMDVhYmJhLi5iOGNiODUwNmI5OTg3ZmIwNTJhY2U5ODE0
ZGUzYmZhNmMxMGRkNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTQ1LDkgKzQ1LDkgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5
ZXJXaW4uaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHBhbC9hdmZvdW5k
YXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAj
aW5jbHVkZSA8QVZGb3VuZGF0aW9uQ0YvQVZDRlBsYXllckl0ZW0uaD4KICNpZiBIQVZFKEFWRk9V
TkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5k
ZXggMTc4NWI1YTg1OWNiNjk5NDdmOGYzMmU5ZmE1ZmJkY2UzNTQ0ODRiNy4uMmEwNTYwYjQzODQz
YmZlNTRkYmVlNzIzYTExNTRiOGNjODliZWRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBA
IC01OSw3ICs1OSw2IEBACiAjaW1wb3J0ICJUZXh0RW5jb2RpbmcuaCIKICNpbXBvcnQgIlRleHRU
cmFja1JlcHJlc2VudGF0aW9uLmgiCiAjaW1wb3J0ICJUZXh0dXJlQ2FjaGVDVi5oIgotI2ltcG9y
dCAiVVJMLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDLmgiCiAj
aW1wb3J0ICJWaWRlb1RleHR1cmVDb3BpZXJDVi5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZh
dGVBVkZPYmpDLmgiCkBAIC04MSw2ICs4MCw3IEBACiAjaW1wb3J0IDx3dGYvTGlzdEhhc2hTZXQu
aD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDQ3OTI5
ZTZkMzA1MWQzZjc5YThhMjE5ZDhlNDdjMDhlMzFiMDQ4Y2UuLjhhZGY4MDE0ZGY1OTYyMWZhMDQ5
YTg0NzcyYWQ0Yjg0MjVmNjc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTQxLDEwICs0MSwx
MCBAQAogI2luY2x1ZGUgIlNoYWRvd0JsdXIuaCIKICNpbmNsdWRlICJTdWJpbWFnZUNhY2hlV2l0
aFRpbWVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKICNkZWZpbmUgVVNFX0RSQVdfUEFUSF9E
SVJFQ1QgKFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggYjQxZGE4N2ViYTZmZWE5OTYyMjk1
OTJkZDIwOGUzMzdlMjRiZDU2YS4uOTQ3NjhkYzFhOTJhMmY2NGJmMmNlMjEyNjg4MTRhYTI5YTA5
ZjZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUg
PGdsaWIuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC00Nyw2ICs0Niw3IEBACiAjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5k
ZXggYmI5M2FkNzI4OGY0ZjkzZmJmNDU4OTQ4Nzc4OTc5MWY2MmNhNGMyZS4uYjYzZTVkZWVlNzJj
OTVjNDlkODU2ZGM1NDcwYmFhYjNmNjE0OWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtMzksNyArMzksNiBA
QAogI2luY2x1ZGUgIlBsYXliYWNrUGlwZWxpbmUuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRl
IDxmbm1hdGNoLmg+CkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCmlu
ZGV4IGY3YmQ0NzczYmZkNWM1NjdlODAxZmIwNzE3OGViOGZkODYxYjdkNDAuLjk2OWE0MjI0NDJl
NTgzZDNlZDFhZjdjZmU0M2QyOWU0MmFhOWViNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02MzUsNyArNjM1LDcgQEAgZ2Jv
b2xlYW4gd2ViS2l0TWVkaWFTcmNTZXRVcmkoR3N0VVJJSGFuZGxlciogaGFuZGxlciwgY29uc3Qg
Z2NoYXIqIHVyaSwgR0Vycm9yKioKICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQogCi0gICAg
V2ViQ29yZTo6VVJMIHVybChXZWJDb3JlOjpVUkwoKSwgdXJpKTsKKyAgICBVUkwgdXJsKFVSTCgp
LCB1cmkpOwogCiAgICAgcHJpdi0+bG9jYXRpb24gPSBHVW5pcXVlUHRyPGdjaGFyPihnX3N0cmR1
cCh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNv
dXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09W
VFRDdWUuY3BwCmluZGV4IGQwM2Y1ZjdmY2VhM2M4ZjE3Mzc3MTZhNDM1ZjllNjY2MDEyYTVmMTgu
LjllYzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQyODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCkBAIC0yNyw5
ICsyNyw5IEBACiAjaW5jbHVkZSAiSVNPVlRUQ3VlLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGF0YVZpZXcuaD4K
ICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNp
bmcgSlNDOjpEYXRhVmlldzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXgg
YjhmNjViNDc2M2IzZjQ4ZGYxNjgxMzI4ZGI5YTkzYjA4NTUzOWQ3OS4uZWFmM2QyNWNmYmZmMmZj
ZmJjMDFlZGRmMTU1NTY3ZTIzY2Y4N2EwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQu
Y3BwCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDxkMmQxZWZmZWN0cy5oPgogI2luY2x1
ZGUgPGR3cml0ZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI3ByYWdtYSB3YXJuaW5nIChk
aXNhYmxlIDogNDc1NikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0RyYWdJbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdl
R3RrLmNwcAppbmRleCAzM2Y0ZmUzYTQyZjA1ZjJkNmI5M2RiMGZhZGE4Nzg0M2U5YjcwMjY4Li5m
N2QxODRmNjdlOGFjMzU2NTUzMzUxNTNlMWNlNTU4YWUxOGU5N2UxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAtMjMsOSArMjMsOSBAQAogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSAiVGV4dElu
ZGljYXRvci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVk
ZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5k
ZXggYTRhYjYxMGE3M2ZmMWFjOTE0OTBkZGMyMDA4YzQ4OGQ0MmM5MDBmMC4uNzFhMDBhMzBjMGZh
ZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIlBh
c3RlYm9hcmRTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2lu
Y2x1ZGUgIlNlbGVjdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3Jt
UGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCBmMzA4YzJiYjdlNTM2OTFkYTM0YzZlYmQwYjM0ZWQxMWJl
YjJmYjY0Li44MTQzZmFmYzM3YzFiYzQ4YTRjMGRlOGRmMTA5NmQ3MjM4ZTY1MDFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3Rr
LmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKICNp
bmNsdWRlICJTZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Nl
bGVjdGlvbkRhdGEuaAppbmRleCBkYTUxZGEwOWFkMTI3NDhjZjc5YTUwZjZjMzM0OTllNTBhYTM1
Yzg3Li4xYjg1OGVmOWRlZTU3YzIwNmJhM2UwYzczYWFkOGE4NjY5NmI4MjBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTE5LDkgKzE5LDkgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQppbmRleCBiNDhiNzM0OWZhZWM1Y2FhNDUzNGJiYzk0NDI4OTM4ZDVkNjM4YWJmLi45
MGZiM2Y2MDE1ZTg5Y2E2ZTU1MDNlYzVkZTAzMjFiZTMzMjI5NWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMzUsMTAgKzM1LDEwIEBACiAj
aW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1w
b3J0ICJVVElVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJh
cy5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBA
aW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoTlNBdHRyaWJ1dGVkU3RyaW5nS2l0QWRkaXRp
b25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0KaW5kZXggOTc5NGZkMzNiZDcxZDhlNjNjODE3YjNkNWU1MWJhM2FkOTdiYjk5
NS4uYjA0OTE0NzYzOTNmMDNiMDgwMGQ0NzA5OWNmZmMzNzMxYjNkYmNkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBA
IC0zMiw5ICszMiw3IEBACiAjaW1wb3J0ICJJbWFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5o
IgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlVU
SVV0aWxpdGllcy5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMv
TW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUNvbG9yLmg+CkBAIC00NCw2
ICs0Miw4IEBACiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogCiAjZGVmaW5lIFBBU1RFQk9BUkRfU1VQUE9SVFNfSVRFTV9Q
Uk9WSURFUlMgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmICEoUExBVEZPUk0oV0FUQ0hPUykgfHwg
UExBVEZPUk0oQVBQTEVUVikpKQpAQCAtNDIwLDcgKzQyMCw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAg
ICBhdXRvJiBwYXN0ZWJvYXJkVVJMID0gcGFzdGVib2FyZEltYWdlLnVybDsKICAgICBpZiAoTlNV
UkwgKm5zVVJMID0gcGFzdGVib2FyZFVSTC51cmwpIHsKICNpZiBOU1VSTF9TVVBQT1JUU19USVRM
RQotICAgICAgICBuc1VSTC5fdGl0bGUgPSBwYXN0ZWJvYXJkVVJMLnRpdGxlLmlzRW1wdHkoKSA/
IHVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRVUkwudXJsKSA6IChOU1N0cmluZyAqKXBhc3Rl
Ym9hcmRVUkwudGl0bGU7CisgICAgICAgIG5zVVJMLl90aXRsZSA9IHBhc3RlYm9hcmRVUkwudGl0
bGUuaXNFbXB0eSgpID8gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhwYXN0ZWJvYXJkVVJMLnVybCkg
OiAoTlNTdHJpbmcgKilwYXN0ZWJvYXJkVVJMLnRpdGxlOwogI2VuZGlmCiAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDpuc1VSTF07CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5oCmluZGV4IDQ5ZDgxMWQ1MTQw
YzhmZDBhZjAxNjI5ZDhkMGMxYzllOWU5OTRmMTcuLjBhNmVmYWVmM2U4NjFlZjU5ZmQ0Mjg5Y2Vm
OTExYzc3OGRhNzBjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9R
dWlja0xvb2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmgK
QEAgLTM1LDggKzM1LDYgQEAgT0JKQ19DTEFTUyBOU1VSTFJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiBXRUJDT1JFX0VYUE9SVCBOU1NldCAqUUxQcmV2aWV3
R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVFM
UHJldmlld0NvbnZlcnRlckZvclVSTChOU1VSTCAqKTsKIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0
cjxOU1VSTFJlcXVlc3Q+IHJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQoTlNVUkwg
KiwgTlNTdHJpbmcgKm1pbWVUeXBlLCBOU0RhdGEgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0RhdGFNYWMubW0KaW5kZXggMTVhYzA2MTYyMzFlMmUxYjlhOTdlNzUwYzdmNzlk
MzMxYjhhNmU1MC4uNjRlNDg5NDM5MzEzMmZkMzMxNjY2NGExOGNiOTdjNWQxNzhhYTIzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpAQCAtMzYsNiArMzYs
NyBAQAogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0ICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQg
PHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNp
bXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KQEAgLTIxMCw3
ICsyMTEsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkgY29uc3QKICAgICAvLyBG
SVhNRTogSXQncyBub3QgY2xlYXIgdGhpcyBpcyAxMDAlIGNvcnJlY3Qgc2luY2Ugd2Uga25vdyAt
W05TVVJMIFVSTFdpdGhTdHJpbmc6XSBkb2VzIG5vdCBoYW5kbGUKICAgICAvLyBhbGwgdGhlIHNh
bWUgY2FzZXMgd2UgaGFuZGxlIHdlbGwgaW4gdGhlIFVSTCBjb2RlIGZvciBjcmVhdGluZyBhbiBO
U1VSTC4KICAgICBpZiAodGV4dC5pc1VSTCkKLSAgICAgICAgcmV0dXJuIHVzZXJWaXNpYmxlU3Ry
aW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworICAgICAgICByZXR1cm4gV1RGOjp1
c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsKIAogICAgIC8v
IEZJWE1FOiBXVEYgc2hvdWxkIG9mZmVyIGEgbm9uLU1hYy1zcGVjaWZpYyB3YXkgdG8gY29udmVy
dCBzdHJpbmcgdG8gcHJlY29tcG9zZWQgZm9ybSBzbyB3ZSBjYW4gZG8gaXQgZm9yIGFsbCBwbGF0
Zm9ybXMuCiAgICAgcmV0dXJuIFsoTlNTdHJpbmcgKilzdHJpbmcgcHJlY29tcG9zZWRTdHJpbmdX
aXRoQ2Fub25pY2FsTWFwcGluZ107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJ
bWFnZU1hYy5tbQppbmRleCA5YzMwZjc5Yzg0ZDNjN2Q4NjVkNDExNTUzOTEzNjdjOGY0NDRhNmRh
Li5iY2JiYWM1MGYzNGViNzFmYzVkY2Y4NzM5ZTRlZTgxOTQ2Yjk3YmQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KQEAgLTQxLDEyICs0MSwxMiBAQAog
I2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW1wb3J0ICJU
ZXh0SW5kaWNhdG9yLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIldlYktpdE5TSW1hZ2VF
eHRyYXMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1VS
TEZvcm1hdHRpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjaWYgIUhBVkUoVVJMX0ZPUk1BVFRJTkcpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktf
T1BUSU9OQUwoTGlua1ByZXNlbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0ZpbGVTeXN0ZW1NYWMubW0KaW5kZXggMDcxZDBjOTExNzc5NGU2MDM4ZDk4YWFkNTZmZTk2ZmY4
ZjQ4MTUzMy4uOGVkNzUxYTdlYzBlNWQwYmFmNzc0Zjk4NjEwYWNiMDQ1Y2QyYjAwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTI4LDggKzI4
LDggQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFz
LmgiCiAjaW1wb3J0IDxwYWwvc3BpL21hYy9NZXRhZGF0YVNQSS5oPgorI2ltcG9ydCA8d3RmL2Nv
Y29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEZpbGVTeXN0ZW06OnNldE1l
dGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0
cgogewogICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAgaWYgKE5TVVJMICp1cmwgPSBVUkxXaXRo
VXNlclR5cGVkU3RyaW5nKG1ldGFkYXRhVVJMU3RyaW5nLCBuaWwpKQotICAgICAgICB1cmxTdHJp
bmcgPSB1c2VyVmlzaWJsZVN0cmluZyhVUkxCeVJlbW92aW5nVXNlckluZm8odXJsKSk7CisgICAg
ICAgIHVybFN0cmluZyA9IFdURjo6dXNlclZpc2libGVTdHJpbmcoV1RGOjpVUkxCeVJlbW92aW5n
VXNlckluZm8odXJsKSk7CiAgICAgZWxzZQogICAgICAgICB1cmxTdHJpbmcgPSBtZXRhZGF0YVVS
TFN0cmluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQppbmRleCA0M2Q3ZGZkZTZhZWYxODk5MWRjODdjZDBiOWZkOGFlYTNjNDVkNDkxLi41MTUyMGRj
YmJlYTU5MjE4NWMzMjY3MDJjYmE2OWZlODhiNGQ0ZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMzcsNyArMzcsNiBAQAogI2ltcG9ydCAi
UGxhdGZvcm1QYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNp
bXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJVVElVdGls
aXRpZXMuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgogI2ltcG9y
dCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KQEAgLTQ1LDYgKzQ0LDcgQEAKICNpbXBv
cnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAj
aW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW1wb3J0IDx3dGYvdW5pY29kZS9DaGFyYWN0
ZXJOYW1lcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
V3JpdGVyLm1tCmluZGV4IDZhMjhmZTYyYWNlY2Q1NzI2NThkMDMzZDBjZDljMWFjMzFlZTBlM2Qu
LjBmZTUwNWRlNTVjNjYxNjQ4ZjA1OWRhOWI3ZmFlMmEwNzdmYzYyM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC02MywxMCArNjMs
MTAgQEAgUmV0YWluUHRyPGlkIDxOU1Bhc3RlYm9hcmRXcml0aW5nPj4gY3JlYXRlUGFzdGVib2Fy
ZFdyaXRlcihjb25zdCBQYXN0ZWJvYXJkV3JpdGUKICAgICAgICAgfQogICAgIH0KIAotICAgIGlm
IChhdXRvJiB1cmwgPSBkYXRhLnVybCgpKSB7Ci0gICAgICAgIE5TVVJMICpjb2NvYVVSTCA9IHVy
bC0+dXJsOwotICAgICAgICBOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcgPSB1cmwtPnVzZXJW
aXNpYmxlRm9ybTsKLSAgICAgICAgTlNTdHJpbmcgKnRpdGxlID0gKE5TU3RyaW5nICopdXJsLT50
aXRsZTsKKyAgICBpZiAoYXV0byYgdXJsRGF0YSA9IGRhdGEudXJsRGF0YSgpKSB7CisgICAgICAg
IE5TVVJMICpjb2NvYVVSTCA9IHVybERhdGEtPnVybDsKKyAgICAgICAgTlNTdHJpbmcgKnVzZXJW
aXNpYmxlU3RyaW5nID0gdXJsRGF0YS0+dXNlclZpc2libGVGb3JtOworICAgICAgICBOU1N0cmlu
ZyAqdGl0bGUgPSAoTlNTdHJpbmcgKil1cmxEYXRhLT50aXRsZTsKICAgICAgICAgaWYgKCF0aXRs
ZS5sZW5ndGgpIHsKICAgICAgICAgICAgIHRpdGxlID0gY29jb2FVUkwucGF0aC5sYXN0UGF0aENv
bXBvbmVudDsKICAgICAgICAgICAgIGlmICghdGl0bGUubGVuZ3RoKQpAQCAtNzQsNyArNzQsNyBA
QCBSZXRhaW5QdHI8aWQgPE5TUGFzdGVib2FyZFdyaXRpbmc+PiBjcmVhdGVQYXN0ZWJvYXJkV3Jp
dGVyKGNvbnN0IFBhc3RlYm9hcmRXcml0ZQogICAgICAgICB9CiAKICAgICAgICAgLy8gV2ViVVJM
c1dpdGhUaXRsZXNQYm9hcmRUeXBlLgotICAgICAgICBhdXRvIHBhdGhzID0gYWRvcHROUyhbW05T
QXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpAWyBAWyBjb2NvYVVSTC5hYnNvbHV0ZVN0cmlu
ZyBdIF0sIEBbIHVybC0+dGl0bGUuc3RyaXBXaGl0ZVNwYWNlKCkgXSwgbmlsXSk7CisgICAgICAg
IGF1dG8gcGF0aHMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOkBb
IEBbIGNvY29hVVJMLmFic29sdXRlU3RyaW5nIF0gXSwgQFsgdXJsRGF0YS0+dGl0bGUuc3RyaXBX
aGl0ZVNwYWNlKCkgXSwgbmlsXSk7CiAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRQcm9wZXJ0
eUxpc3Q6cGF0aHMuZ2V0KCkgZm9yVHlwZTp0b1VUSShAIldlYlVSTHNXaXRoVGl0bGVzUGJvYXJk
VHlwZSIpLmdldCgpXTsKIAogICAgICAgICAvLyBOU1VSTFBib2FyZFR5cGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRl
eCBiMWRmZmI2Y2I3ZTY0MjU3NDFiZDBjNmMwZTUzYjRlZmRjZmRiMTcxLi4wY2IxZGQ4YjkzMGEw
NjViN2MwODAxNWNhMmUwY2U1ZGJkNWIyYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTMyLDEwICszMiwxMCBA
QAogI2ltcG9ydCAiQ29sb3JNYWMuaCIKICNpbXBvcnQgIkxlZ2FjeU5TUGFzdGVib2FyZFR5cGVz
LmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlNo
YXJlZEJ1ZmZlci5oIgogI2ltcG9ydCA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW1wb3J0IDx3
dGYvTGlzdEhhc2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KaW5kZXggY2QxY2M3MzhkNmEyOTEwYTg0
M2VkNzQ2ZWRhOTFhOTM3YjU4NmU5Zi4uNjY4ZGNlMDlmYWNlNTU4ODczYmJlYjg1ZGQwNDk3YmE1
ZDM0NGRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1
ZmZpeE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4
TWFjLm1tCkBAIC0yOCwxMSArMjgsMTEgQEAKIAogI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJ
U1QpCiAKLSNpbXBvcnQgIlVSTC5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAj
aW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
KyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTgwLDcgKzgwLDcgQEAgU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4o
Y29uc3QgU3RyaW5nJiBkb21haW4pCiAKIFN0cmluZyBkZWNvZGVIb3N0TmFtZShjb25zdCBTdHJp
bmcmIGRvbWFpbikKIHsKLSAgICByZXR1cm4gZGVjb2RlSG9zdE5hbWUoKE5TU3RyaW5nICopKGRv
bWFpbikpOworICAgIHJldHVybiBXVEY6OmRlY29kZUhvc3ROYW1lKGRvbWFpbik7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1t
CmluZGV4IGZjNDBhYTE5YjA0YzNhZTM0NzE4MDI3NjNmN2RmMzg5YTcyMjhjOWQuLmJkOWRhMGRk
ODZhY2NkMWQ4NGE2YzNmZWRhMGI0MTJhMjZhZGY2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQpAQCAtMjksMTMgKzI5LDEzIEBA
CiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW1w
b3J0ICJVUkwuaCIKICNpbXBvcnQgPFNlY3VyaXR5L1NlY0FzbjFDb2Rlci5oPgogI2ltcG9ydCA8
U2VjdXJpdHkvU2VjQXNuMVRlbXBsYXRlcy5oPgogI2ltcG9ydCA8U2VjdXJpdHkvU2VjRW5jb2Rl
VHJhbnNmb3JtLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1Njb3BlLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29j
b2EvU2VjdXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9VUkxNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYz
MTJmODI0OGU4NDgyYzg4MDNiYjhjNzg2YzczN2M0NzZlODQ4ZjIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1VSTE1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJVUkwuaCIKLQotI2ltcG9ydCAiQ0ZVUkxFeHRyYXMuaCIKLSNpbXBvcnQgIlVS
TFBhcnNlci5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCi0jaW1wb3J0IDx3dGYv
T2JqQ1J1bnRpbWVFeHRyYXMuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotQGlu
dGVyZmFjZSBOU1N0cmluZyAoV2ViQ29yZU5TVVJMRXh0cmFzKQotLSAoQk9PTClfd2ViX2xvb2tz
TGlrZUlQQWRkcmVzczsKLUBlbmQKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6OlVSTChO
U1VSTCAqdXJsKQotewotICAgIGlmICghdXJsKSB7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdu
b3JlIGJhc2UgVVJMIGhlcmU/Ci0gICAgQ1N0cmluZyB1cmxCeXRlczsKLSAgICBnZXRVUkxCeXRl
cygoX19icmlkZ2UgQ0ZVUkxSZWYpdXJsLCB1cmxCeXRlcyk7Ci0gICAgVVJMUGFyc2VyIHBhcnNl
cih1cmxCeXRlcy5kYXRhKCkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotfQotCi1V
Ukw6Om9wZXJhdG9yIE5TVVJMICooKSBjb25zdAotewotICAgIC8vIENyZWF0aW5nIGEgdG9sbC1m
cmVlIGJyaWRnZWQgQ0ZVUkwgYmVjYXVzZSBjcmVhdGlvbiB3aXRoIE5TVVJMIG1ldGhvZHMgd291
bGQgbm90IHByZXNlcnZlIHRoZSBvcmlnaW5hbCBzdHJpbmcuCi0gICAgLy8gV2UnbGwgbmVlZCBm
aWRlbGl0eSB3aGVuIHJvdW5kLXRyaXBwaW5nIHZpYSBDRlVSTEdldEJ5dGVzKCkuCi0gICAgcmV0
dXJuIGNyZWF0ZUNGVVJMKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwotfQotCi1SZXRhaW5QdHI8
Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAotewotICAgIGlmIChpc051bGwoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoaXNFbXB0eSgpKSB7Ci0gICAgICAg
IC8vIFdlIHVzZSB0aGUgdG9sbC1mcmVlIGJyaWRnZSBiZXR3ZWVuIE5TVVJMIGFuZCBDRlVSTCB0
byBjcmVhdGUgYSBDRlVSTFJlZiBzdXBwb3J0aW5nIGJvdGggZW1wdHkgYW5kIG51bGwgdmFsdWVz
LgotICAgICAgICByZXR1cm4gKF9fYnJpZGdlIENGVVJMUmVmKWFkb3B0TlMoW1tOU1VSTCBhbGxv
Y10gaW5pdFdpdGhTdHJpbmc6QCIiXSkuZ2V0KCk7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENG
VVJMUmVmPiBjZlVSTDsKLQotICAgIC8vIEZhc3QgcGF0aCBpZiB0aGUgaW5wdXQgZGF0YSBpcyA4
LWJpdCB0byBhdm9pZCBjb3B5aW5nIGludG8gYSB0ZW1wb3JhcnkgYnVmZmVyLgotICAgIGlmIChM
SUtFTFkobV9zdHJpbmcuaXM4Qml0KCkpKQotICAgICAgICBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJv
bUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJz
OCgpKSwgbV9zdHJpbmcubGVuZ3RoKCkpOwotICAgIGVsc2UgewotICAgICAgICAvLyBTbG93ZXIg
cGF0aC4KLSAgICAgICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0gICAgICAgIGNvcHlUb0J1ZmZl
cihidWZmZXIpOwotICAgICAgICBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICBpZiAocHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpICYmICFpc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBjZlVSTDsKLX0KLQotYm9vbCBVUkw6
Omhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCi17Ci0gICAgcmV0dXJuIFtob3N0LmNy
ZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSBfd2ViX2xvb2tzTGlrZUlQQWRkcmVz
c107Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlTlNVUkxFeHRyYXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMuaAppbmRleCBmZTEwNjgxMzQ1ZjU3ZjNmNDFmNGQwZGE3MmNlNjE2MWRiYjA2OTQ4
Li4xYzA3MzI5YmU5ZWJiNmZiMGEyM2M1ZDI3Y2RhODAyYzRlODAxZTE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oCkBAIC0yNiwyOSAr
MjYsMTAgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotQGNsYXNzIE5TU3RyaW5nOwogQGNsYXNzIE5T
VVJMOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICp1
c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqKTsKIFdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeUNh
bm9uaWNhbGl6aW5nVVJMKE5TVVJMICopOwotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTFdpdGhV
c2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOyAvLyBSZXR1cm4gdmFs
dWUgb2YgbmlsIG1lYW5zIGVycm9yLgotV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTEJ5UmVtb3Zp
bmdVc2VySW5mbyhOU1VSTCAqKTsKLVdFQkNPUkVfRVhQT1JUIEJPT0wgaG9zdE5hbWVOZWVkc0Rl
Y29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICosIE5TUmFuZ2UsIEJPT0wqIGVycm9yKTsKLVdFQkNP
UkVfRVhQT1JUIEJPT0wgaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICos
IE5TUmFuZ2UsIEJPT0wqIGVycm9yKTsKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpkZWNvZGVI
b3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlKTsgLy8gUmV0dXJuIHZhbHVlIG9m
IG5pbCBtZWFucyBlcnJvci4KLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICplbmNvZGVIb3N0TmFt
ZVdpdGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBt
ZWFucyBlcnJvci4KLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0
cmluZyAqKTsgLy8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KLVdFQkNPUkVfRVhQ
T1JUIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsgLy8gUmV0dXJuIHZhbHVl
IG9mIG5pbCBtZWFucyBlcnJvci4KLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxCeVRydW5jYXRp
bmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwgKiwgQ0ZVUkxDb21wb25lbnRUeXBl
KTsKLVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKiwgTlNVUkwgKmJh
c2VVUkwpOwotV0VCQ09SRV9FWFBPUlQgTlNEYXRhICpvcmlnaW5hbFVSTERhdGEoTlNVUkwgKik7
Ci1XRUJDT1JFX0VYUE9SVCBOU0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICos
IENGVVJMQ29tcG9uZW50VHlwZSk7Ci1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMV2l0aFVzZXJU
eXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOwotCi1OU1Jh
bmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGlz
VXNlclZpc2libGVVUkwoTlNTdHJpbmcgKik7Ci1XRUJDT1JFX0VYUE9SVCBCT09MIGxvb2tzTGlr
ZUFic29sdXRlVVJMKE5TU3RyaW5nICopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQppbmRl
eCBlZmE3OGRkYjhiOTUzOWIxOTMxYTc3MjEwZWM2MTc0Mjk3YTcyNzRlLi5kMzY1YjMxNjc3Nzg0
NjM0N2NjZjIzNWI3NjNmYWZmMzMwOTY1N2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTI3LDcgKzI3LDYgQEAKICAqLwog
CiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlVSTFBhcnNlci5oIgogI2ltcG9ydCAiV2Vi
Q29yZU5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgog
I2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CkBAIC0zOSw5OTkgKzM4LDggQEAKICNpbXBvcnQgPHVu
aWNvZGUvdWlkbmEuaD4KICNpbXBvcnQgPHVuaWNvZGUvdXNjcmlwdC5oPgogCi0vLyBOZWVkcyB0
byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KLS8vIEZvciBob3N0
IG5hbWVzIGJpZ2dlciB0aGFuIHRoaXMsIHdlIHdvbid0IGRvIElETiBlbmNvZGluZywgd2hpY2gg
aXMgYWxtb3N0IGNlcnRhaW5seSBPSy4KLSNkZWZpbmUgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgg
MjA0OAotI2RlZmluZSBVUkxfQllURVNfQlVGRkVSX0xFTkdUSCAyMDQ4Ci0KLXR5cGVkZWYgdm9p
ZCAoKiBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbikoTlNTdHJpbmcgKiwgTlNSYW5nZSwgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiYpOwotCi1zdGF0aWMgdWludDMyX3QgSUROU2NyaXB0V2hp
dGVMaXN0WyhVU0NSSVBUX0NPREVfTElNSVQgKyAzMSkgLyAzMl07Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIGJvb2wgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihVQ2hhcjMy
IGNvZGVQb2ludCkKLXsKLSAgICByZXR1cm4gY29kZVBvaW50ID09IDB4MDU0OCB8fCBjb2RlUG9p
bnQgPT0gMHgwNTREIHx8IGNvZGVQb2ludCA9PSAweDA1NzggfHwgY29kZVBvaW50ID09IDB4MDU3
RDsKLX0KLQotc3RhdGljIGJvb2wgaXNBcm1lbmlhblNjcmlwdENoYXJhY3RlcihVQ2hhcjMyIGNv
ZGVQb2ludCkKLXsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgIFVT
Y3JpcHRDb2RlIHNjcmlwdCA9IHVzY3JpcHRfZ2V0U2NyaXB0KGNvZGVQb2ludCwgJmVycm9yKTsK
LSAgICBpZiAoZXJyb3IgIT0gVV9aRVJPX0VSUk9SKSB7Ci0gICAgICAgIExPR19FUlJPUigiZ290
IElDVSBlcnJvciB3aGlsZSB0cnlpbmcgdG8gbG9vayBhdCBzY3JpcHRzOiAlZCIsIGVycm9yKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBzY3JpcHQgPT0gVVND
UklQVF9BUk1FTklBTjsKLX0KLQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBp
bmxpbmUgYm9vbCBpc0FTQ0lJRGlnaXRPclZhbGlkSG9zdENoYXJhY3RlcihDaGFyYWN0ZXJUeXBl
IGNoYXJDb2RlKQotewotICAgIGlmICghaXNBU0NJSURpZ2l0T3JQdW5jdHVhdGlvbihjaGFyQ29k
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFRoaW5ncyB0aGUgVVJMIFBhcnNl
ciByZWplY3RzOgotICAgIHN3aXRjaCAoY2hhckNvZGUpIHsKLSAgICBjYXNlICcjJzoKLSAgICBj
YXNlICclJzoKLSAgICBjYXNlICcvJzoKLSAgICBjYXNlICc6JzoKLSAgICBjYXNlICc/JzoKLSAg
ICBjYXNlICdAJzoKLSAgICBjYXNlICdbJzoKLSAgICBjYXNlICdcXCc6Ci0gICAgY2FzZSAnXSc6
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci19Ci0KLQotCi1zdGF0aWMgQk9PTCBpc0xvb2thbGlrZUNoYXJhY3RlcihzdGQ6
Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50LCBVQ2hhcjMyIGNoYXJDb2RlKQot
ewotICAgIC8vIFRoaXMgZnVuY3Rpb24gdHJlYXRzIHRoZSBmb2xsb3dpbmcgYXMgdW5zYWZlLCBs
b29rYWxpa2UgY2hhcmFjdGVyczoKLSAgICAvLyBhbnkgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXIs
IGFueSBjaGFyYWN0ZXIgY29uc2lkZXJlZCBhcyB3aGl0ZXNwYWNlLAotICAgIC8vIGFueSBpZ25v
cmFibGUgY2hhcmFjdGVyLCBhbmQgZW1vamkgY2hhcmFjdGVycyByZWxhdGVkIHRvIGxvY2tzLgot
ICAgIAotICAgIC8vIFdlIGFsc28gY29uc2lkZXJlZCB0aGUgY2hhcmFjdGVycyBpbiBNb3ppbGxh
J3MgYmxhY2tsaXN0IDxodHRwOi8va2IubW96aWxsYXppbmUub3JnL05ldHdvcmsuSUROLmJsYWNr
bGlzdF9jaGFycz4uCi0KLSAgICAvLyBTb21lIG9mIHRoZSBjaGFyYWN0ZXJzIGhlcmUgd2lsbCBu
ZXZlciBhcHBlYXIgb25jZSBJQ1UgaGFzIGVuY29kZWQuCi0gICAgLy8gRm9yIGV4YW1wbGUsIElD
VSB0cmFuc2Zvcm1zIG1vc3Qgc3BhY2VzIGludG8gYW4gQVNDSUkgc3BhY2UgYW5kIG1vc3QKLSAg
ICAvLyBzbGFzaGVzIGludG8gYW4gQVNDSUkgc29saWR1cy4gQnV0IG9uZSBvZiB0aGUgdHdvIGNh
bGxlcnMgdXNlcyB0aGlzCi0gICAgLy8gb24gY2hhcmFjdGVycyB0aGF0IGhhdmUgbm90IGJlZW4g
cHJvY2Vzc2VkIGJ5IElDVSwgc28gdGhleSBhcmUgbmVlZGVkIGhlcmUuCi0gICAgCi0gICAgaWYg
KCF1X2lzcHJpbnQoY2hhckNvZGUpIHx8IHVfaXNVV2hpdGVTcGFjZShjaGFyQ29kZSkgfHwgdV9o
YXNCaW5hcnlQcm9wZXJ0eShjaGFyQ29kZSwgVUNIQVJfREVGQVVMVF9JR05PUkFCTEVfQ09ERV9Q
T0lOVCkpCi0gICAgICAgIHJldHVybiBZRVM7Ci0gICAgCi0gICAgc3dpdGNoIChjaGFyQ29kZSkg
ewotICAgICAgICBjYXNlIDB4MDBCQzogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSICov
Ci0gICAgICAgIGNhc2UgMHgwMEJEOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYgKi8KLSAg
ICAgICAgY2FzZSAweDAwQkU6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUyAqLwot
ICAgICAgICBjYXNlIDB4MDBFRDogLyogTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURSAq
LwotICAgICAgICBjYXNlIDB4MDFDMzogLyogTEFUSU4gTEVUVEVSIFJFVFJPRkxFWCBDTElDSyAq
LwotICAgICAgICBjYXNlIDB4MDI1MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIEFMUEhBICovCi0g
ICAgICAgIGNhc2UgMHgwMjYxOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgU0NSSVBUIEcgKi8KLSAg
ICAgICAgY2FzZSAweDAyRDA6IC8qIE1PRElGSUVSIExFVFRFUiBUUklBTkdVTEFSIENPTE9OICov
Ci0gICAgICAgIGNhc2UgMHgwMzM1OiAvKiBDT01CSU5JTkcgU0hPUlQgU1RST0tFIE9WRVJMQVkg
Ki8KLSAgICAgICAgY2FzZSAweDAzMzc6IC8qIENPTUJJTklORyBTSE9SVCBTT0xJRFVTIE9WRVJM
QVkgKi8KLSAgICAgICAgY2FzZSAweDAzMzg6IC8qIENPTUJJTklORyBMT05HIFNPTElEVVMgT1ZF
UkxBWSAqLwotICAgICAgICBjYXNlIDB4MDU4OTogLyogQVJNRU5JQU4gRlVMTCBTVE9QICovCi0g
ICAgICAgIGNhc2UgMHgwNUI0OiAvKiBIRUJSRVcgUE9JTlQgSElSSVEgKi8KLSAgICAgICAgY2Fz
ZSAweDA1QkM6IC8qIEhFQlJFVyBQT0lOVCBEQUdFU0ggT1IgTUFQSVEgKi8KLSAgICAgICAgY2Fz
ZSAweDA1QzM6IC8qIEhFQlJFVyBQVU5DVFVBVElPTiBTT0YgUEFTVVEgKi8KLSAgICAgICAgY2Fz
ZSAweDA1RjQ6IC8qIEhFQlJFVyBQVU5DVFVBVElPTiBHRVJTSEFZSU0gKi8KLSAgICAgICAgY2Fz
ZSAweDA2MDk6IC8qIEFSQUJJQy1JTkRJQyBQRVIgTUlMTEUgU0lHTiAqLwotICAgICAgICBjYXNl
IDB4MDYwQTogLyogQVJBQklDLUlORElDIFBFUiBURU4gVEhPVVNBTkQgU0lHTiAqLwotICAgICAg
ICBjYXNlIDB4MDY1MDogLyogQVJBQklDIEtBU1JBICovCi0gICAgICAgIGNhc2UgMHgwNjYwOiAv
KiBBUkFCSUMgSU5ESUMgRElHSVQgWkVSTyAqLwotICAgICAgICBjYXNlIDB4MDY2QTogLyogQVJB
QklDIFBFUkNFTlQgU0lHTiAqLwotICAgICAgICBjYXNlIDB4MDZENDogLyogQVJBQklDIEZVTEwg
U1RPUCAqLwotICAgICAgICBjYXNlIDB4MDZGMDogLyogRVhURU5ERUQgQVJBQklDIElORElDIERJ
R0lUIFpFUk8gKi8KLSAgICAgICAgY2FzZSAweDA3MDE6IC8qIFNZUklBQyBTVVBSQUxJTkVBUiBG
VUxMIFNUT1AgKi8KLSAgICAgICAgY2FzZSAweDA3MDI6IC8qIFNZUklBQyBTVUJMSU5FQVIgRlVM
TCBTVE9QICovCi0gICAgICAgIGNhc2UgMHgwNzAzOiAvKiBTWVJJQUMgU1VQUkFMSU5FQVIgQ09M
T04gKi8KLSAgICAgICAgY2FzZSAweDA3MDQ6IC8qIFNZUklBQyBTVUJMSU5FQVIgQ09MT04gKi8K
LSAgICAgICAgY2FzZSAweDE3MzU6IC8qIFBISUxJUFBJTkUgU0lOR0xFIFBVTkNUVUFUSU9OICov
Ci0gICAgICAgIGNhc2UgMHgxRDA0OiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBDICov
Ci0gICAgICAgIGNhc2UgMHgxRDBGOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBPICov
Ci0gICAgICAgIGNhc2UgMHgxRDFDOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBVICov
Ci0gICAgICAgIGNhc2UgMHgxRDIwOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBWICov
Ci0gICAgICAgIGNhc2UgMHgxRDIxOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBXICov
Ci0gICAgICAgIGNhc2UgMHgxRDIyOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBaICov
Ci0gICAgICAgIGNhc2UgMHgxRUNEOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVCBC
RUxPVyAqLwotICAgICAgICBjYXNlIDB4MjAxMDogLyogSFlQSEVOICovCi0gICAgICAgIGNhc2Ug
MHgyMDExOiAvKiBOT04tQlJFQUtJTkcgSFlQSEVOICovCi0gICAgICAgIGNhc2UgMHgyMDI0OiAv
KiBPTkUgRE9UIExFQURFUiAqLwotICAgICAgICBjYXNlIDB4MjAyNzogLyogSFlQSEVOQVRJT04g
UE9JTlQgKi8KLSAgICAgICAgY2FzZSAweDIwMzk6IC8qIFNJTkdMRSBMRUZULVBPSU5USU5HIEFO
R0xFIFFVT1RBVElPTiBNQVJLICovCi0gICAgICAgIGNhc2UgMHgyMDNBOiAvKiBTSU5HTEUgUklH
SFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksgKi8KLSAgICAgICAgY2FzZSAweDIwNDE6
IC8qIENBUkVUIElOU0VSVElPTiBQT0lOVCAqLwotICAgICAgICBjYXNlIDB4MjA0NDogLyogRlJB
Q1RJT04gU0xBU0ggKi8KLSAgICAgICAgY2FzZSAweDIwNTI6IC8qIENPTU1FUkNJQUwgTUlOVVMg
U0lHTiAqLwotICAgICAgICBjYXNlIDB4MjE1MzogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBUSElS
RCAqLwotICAgICAgICBjYXNlIDB4MjE1NDogLyogVlVMR0FSIEZSQUNUSU9OIFRXTyBUSElSRFMg
Ki8KLSAgICAgICAgY2FzZSAweDIxNTU6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRklGVEggKi8K
LSAgICAgICAgY2FzZSAweDIxNTY6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08gRklGVEhTICovCi0g
ICAgICAgIGNhc2UgMHgyMTU3OiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRklGVEhTICovCi0g
ICAgICAgIGNhc2UgMHgyMTU4OiAvKiBWVUxHQVIgRlJBQ1RJT04gRk9VUiBGSUZUSFMgKi8KLSAg
ICAgICAgY2FzZSAweDIxNTk6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgU0lYVEggKi8KLSAgICAg
ICAgY2FzZSAweDIxNUE6IC8qIFZVTEdBUiBGUkFDVElPTiBGSVZFIFNJWFRIUyAqLwotICAgICAg
ICBjYXNlIDB4MjE1QjogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBFSUdIVCAqLwotICAgICAgICBj
YXNlIDB4MjE1QzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIEVJR0hUSFMgKi8KLSAgICAgICAg
Y2FzZSAweDIxNUQ6IC8qIFZVTEdBUiBGUkFDVElPTiBGSVZFIEVJR0hUSFMgKi8KLSAgICAgICAg
Y2FzZSAweDIxNUU6IC8qIFZVTEdBUiBGUkFDVElPTiBTRVZFTiBFSUdIVEhTICovCi0gICAgICAg
IGNhc2UgMHgyMTVGOiAvKiBGUkFDVElPTiBOVU1FUkFUT1IgT05FICovCi0gICAgICAgIGNhc2Ug
MHgyMjEyOiAvKiBNSU5VUyBTSUdOICovCi0gICAgICAgIGNhc2UgMHgyMjE1OiAvKiBESVZJU0lP
TiBTTEFTSCAqLwotICAgICAgICBjYXNlIDB4MjIxNjogLyogU0VUIE1JTlVTICovCi0gICAgICAg
IGNhc2UgMHgyMjM2OiAvKiBSQVRJTyAqLwotICAgICAgICBjYXNlIDB4MjMzRjogLyogQVBMIEZV
TkNUSU9OQUwgU1lNQk9MIFNMQVNIIEJBUiAqLwotICAgICAgICBjYXNlIDB4MjNBRTogLyogSU5U
RUdSQUwgRVhURU5TSU9OICovCi0gICAgICAgIGNhc2UgMHgyNDRBOiAvKiBPQ1IgRE9VQkxFIEJB
Q0tTTEFTSCAqLwotICAgICAgICBjYXNlIDB4MjU3MTogLyogRGlzcGxheVR5cGU6OkJveCBEUkFX
SU5HUyBMSUdIVCBESUFHT05BTCBVUFBFUiBSSUdIVCBUTyBMT1dFUiBMRUZUICovCi0gICAgICAg
IGNhc2UgMHgyNTcyOiAvKiBEaXNwbGF5VHlwZTo6Qm94IERSQVdJTkdTIExJR0hUIERJQUdPTkFM
IFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQgKi8KLSAgICAgICAgY2FzZSAweDI5RjY6IC8qIFNP
TElEVVMgV0lUSCBPVkVSQkFSICovCi0gICAgICAgIGNhc2UgMHgyOUY4OiAvKiBCSUcgU09MSURV
UyAqLwotICAgICAgICBjYXNlIDB4MkFGQjogLyogVFJJUExFIFNPTElEVVMgQklOQVJZIFJFTEFU
SU9OICovCi0gICAgICAgIGNhc2UgMHgyQUZEOiAvKiBET1VCTEUgU09MSURVUyBPUEVSQVRPUiAq
LwotICAgICAgICBjYXNlIDB4MkZGMDogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFD
VEVSIExFRlQgVE8gUklHSFQgKi8KLSAgICAgICAgY2FzZSAweDJGRjE6IC8qIElERU9HUkFQSElD
IERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBCRUxPVyAqLwotICAgICAgICBjYXNlIDB4
MkZGMjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIExFRlQgVE8gTUlERExF
IEFORCBSSUdIVCAqLwotICAgICAgICBjYXNlIDB4MkZGMzogLyogSURFT0dSQVBISUMgREVTQ1JJ
UFRJT04gQ0hBUkFDVEVSIEFCT1ZFIFRPIE1JRERMRSBBTkQgQkVMT1cgKi8KLSAgICAgICAgY2Fz
ZSAweDJGRjQ6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBGVUxMIFNVUlJP
VU5EICovCi0gICAgICAgIGNhc2UgMHgyRkY1OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBD
SEFSQUNURVIgU1VSUk9VTkQgRlJPTSBBQk9WRSAqLwotICAgICAgICBjYXNlIDB4MkZGNjogLyog
SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQkVMT1cgKi8K
LSAgICAgICAgY2FzZSAweDJGRjc6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RF
UiBTVVJST1VORCBGUk9NIExFRlQgKi8KLSAgICAgICAgY2FzZSAweDJGRjg6IC8qIElERU9HUkFQ
SElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIFVQUEVSIExFRlQgKi8KLSAg
ICAgICAgY2FzZSAweDJGRjk6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBT
VVJST1VORCBGUk9NIFVQUEVSIFJJR0hUICovCi0gICAgICAgIGNhc2UgMHgyRkZBOiAvKiBJREVP
R1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMT1dFUiBMRUZUICov
Ci0gICAgICAgIGNhc2UgMHgyRkZCOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNU
RVIgT1ZFUkxBSUQgKi8KLSAgICAgICAgY2FzZSAweDMwMDI6IC8qIElERU9HUkFQSElDIEZVTEwg
U1RPUCAqLwotICAgICAgICBjYXNlIDB4MzAwODogLyogTEVGVCBBTkdMRSBCUkFDS0VUICovCi0g
ICAgICAgIGNhc2UgMHgzMDE0OiAvKiBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KLSAg
ICAgICAgY2FzZSAweDMwMTU6IC8qIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KLSAg
ICAgICAgY2FzZSAweDMwMzM6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgVVBQRVIgSEFM
RiAqLwotICAgICAgICBjYXNlIDB4MzAzNTogLyogVkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSyBM
T1dFUiBIQUxGICovCi0gICAgICAgIGNhc2UgMHgzMjFEOiAvKiBQQVJFTlRIRVNJWkVEIEtPUkVB
TiBDSEFSQUNURVIgT0pFT04gKi8KLSAgICAgICAgY2FzZSAweDMyMUU6IC8qIFBBUkVOVEhFU0la
RUQgS09SRUFOIENIQVJBQ1RFUiBPIEhVICovCi0gICAgICAgIGNhc2UgMHgzM0FFOiAvKiBTUVVB
UkUgUkFEIE9WRVIgUyAqLwotICAgICAgICBjYXNlIDB4MzNBRjogLyogU1FVQVJFIFJBRCBPVkVS
IFMgU1FVQVJFRCAqLwotICAgICAgICBjYXNlIDB4MzNDNjogLyogU1FVQVJFIEMgT1ZFUiBLRyAq
LwotICAgICAgICBjYXNlIDB4MzNERjogLyogU1FVQVJFIEEgT1ZFUiBNICovCi0gICAgICAgIGNh
c2UgMHgwNUI5OiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0gKi8KLSAgICAgICAgY2FzZSAweDA1QkE6
IC8qIEhFQlJFVyBQT0lOVCBIT0xBTSBIQVNFUiBGT1IgVkFWICovCi0gICAgICAgIGNhc2UgMHgw
NUMxOiAvKiBIRUJSRVcgUE9JTlQgU0hJTiBET1QgKi8KLSAgICAgICAgY2FzZSAweDA1QzI6IC8q
IEhFQlJFVyBQT0lOVCBTSU4gRE9UICovCi0gICAgICAgIGNhc2UgMHgwNUM0OiAvKiBIRUJSRVcg
TUFSSyBVUFBFUiBET1QgKi8KLSAgICAgICAgY2FzZSAweEE3MzE6IC8qIExBVElOIExFVFRFUiBT
TUFMTCBDQVBJVEFMIFMgKi8KLSAgICAgICAgY2FzZSAweEE3NzE6IC8qIExBVElOIFNNQUxMIExF
VFRFUiBEVU0gKi8KLSAgICAgICAgY2FzZSAweEE3ODk6IC8qIE1PRElGSUVSIExFVFRFUiBDT0xP
TiAqLwotICAgICAgICBjYXNlIDB4RkUxNDogLyogUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJ
Q0FMIFNFTUlDT0xPTiAqLwotICAgICAgICBjYXNlIDB4RkUxNTogLyogUFJFU0VOVEFUSU9OIEZP
Uk0gRk9SIFZFUlRJQ0FMIEVYQ0xBTUFUSU9OIE1BUksgKi8KLSAgICAgICAgY2FzZSAweEZFM0Y6
IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIEFOR0xFIEJSQUNLRVQgKi8K
LSAgICAgICAgY2FzZSAweEZFNUQ6IC8qIFNNQUxMIExFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tF
VCAqLwotICAgICAgICBjYXNlIDB4RkU1RTogLyogU01BTEwgUklHSFQgVE9SVE9JU0UgU0hFTEwg
QlJBQ0tFVCAqLwotICAgICAgICBjYXNlIDB4RkYwRTogLyogRlVMTFdJRFRIIEZVTEwgU1RPUCAq
LwotICAgICAgICBjYXNlIDB4RkYwRjogLyogRlVMTCBXSURUSCBTT0xJRFVTICovCi0gICAgICAg
IGNhc2UgMHhGRjYxOiAvKiBIQUxGV0lEVEggSURFT0dSQVBISUMgRlVMTCBTVE9QICovCi0gICAg
ICAgIGNhc2UgMHhGRkZDOiAvKiBPQkpFQ1QgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCi0gICAg
ICAgIGNhc2UgMHhGRkZEOiAvKiBSRVBMQUNFTUVOVCBDSEFSQUNURVIgKi8KLSAgICAgICAgY2Fz
ZSAweDFGNTBGOiAvKiBMT0NLIFdJVEggSU5LIFBFTiAqLwotICAgICAgICBjYXNlIDB4MUY1MTA6
IC8qIENMT1NFRCBMT0NLIFdJVEggS0VZICovCi0gICAgICAgIGNhc2UgMHgxRjUxMTogLyogS0VZ
ICovCi0gICAgICAgIGNhc2UgMHgxRjUxMjogLyogTE9DSyAqLwotICAgICAgICBjYXNlIDB4MUY1
MTM6IC8qIE9QRU4gTE9DSyAqLwotICAgICAgICAgICAgcmV0dXJuIFlFUzsKLSAgICAgICAgY2Fz
ZSAweDAzMDc6IC8qIENPTUJJTklORyBET1QgQUJPVkUgKi8KLSAgICAgICAgICAgIHJldHVybiBw
cmV2aW91c0NvZGVQb2ludCA9PSAweDAyMzcgLyogTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1Mg
SiAqLwotICAgICAgICAgICAgICAgIHx8IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDEzMSAvKiBM
QVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJICovCi0gICAgICAgICAgICAgICAgfHwgcHJldmlv
dXNDb2RlUG9pbnQgPT0gMHgwNUQ1OyAvKiBIRUJSRVcgTEVUVEVSIFZBViAqLwotICAgICAgICBj
YXNlIDB4MDU0ODogLyogQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgVk8gKi8KLSAgICAgICAgY2Fz
ZSAweDA1NEQ6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFNFSCAqLwotICAgICAgICBjYXNl
IDB4MDU3ODogLyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFZPICovCi0gICAgICAgIGNhc2UgMHgw
NTdEOiAvKiBBUk1FTklBTiBTTUFMTCBMRVRURVIgU0VIICovCi0gICAgICAgICAgICByZXR1cm4g
cHJldmlvdXNDb2RlUG9pbnQKLSAgICAgICAgICAgICAgICAmJiAhaXNBU0NJSURpZ2l0T3JWYWxp
ZEhvc3RDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUoKSkKLSAgICAgICAgICAgICAg
ICAmJiAhaXNBcm1lbmlhblNjcmlwdENoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgp
KTsKLSAgICAgICAgY2FzZSAnLic6Ci0gICAgICAgICAgICByZXR1cm4gTk87Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQKLSAgICAgICAgICAg
ICAgICAmJiBpc0FybWVuaWFuTG9va2FsaWtlQ2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgJiYgIShpc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKGNo
YXJDb2RlKSB8fCBpc0FTQ0lJRGlnaXRPclZhbGlkSG9zdENoYXJhY3RlcihjaGFyQ29kZSkpOwot
ICAgIH0KLX0KLQotc3RhdGljIHZvaWQgd2hpdGVMaXN0SUROU2NyaXB0KGNvbnN0IGNoYXIqIHNj
cmlwdE5hbWUpCi17Ci0gICAgaW50MzJfdCBzY3JpcHQgPSB1X2dldFByb3BlcnR5VmFsdWVFbnVt
KFVDSEFSX1NDUklQVCwgc2NyaXB0TmFtZSk7Ci0gICAgaWYgKHNjcmlwdCA+PSAwICYmIHNjcmlw
dCA8IFVTQ1JJUFRfQ09ERV9MSU1JVCkgewotICAgICAgICBzaXplX3QgaW5kZXggPSBzY3JpcHQg
LyAzMjsKLSAgICAgICAgdWludDMyX3QgbWFzayA9IDEgPDwgKHNjcmlwdCAlIDMyKTsKLSAgICAg
ICAgSUROU2NyaXB0V2hpdGVMaXN0W2luZGV4XSB8PSBtYXNrOwotICAgIH0KLX0KLQotc3RhdGlj
IEJPT0wgcmVhZElETlNjcmlwdFdoaXRlTGlzdEZpbGUoTlNTdHJpbmcgKmZpbGVuYW1lKQotewot
ICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIEZJTEUgKmZpbGUg
PSBmb3BlbihbZmlsZW5hbWUgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSwgInIiKTsKLSAgICBp
ZiAoIWZpbGUpCi0gICAgICAgIHJldHVybiBOTzsKLSAgICAKLSAgICAvLyBSZWFkIGEgd29yZCBh
dCBhIHRpbWUuCi0gICAgLy8gQWxsb3cgY29tbWVudHMsIHN0YXJ0aW5nIHdpdGggIyBjaGFyYWN0
ZXIgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KLSAgICB3aGlsZSAoMSkgewotICAgICAgICAvLyBT
a2lwIGEgY29tbWVudCBpZiBwcmVzZW50LgotICAgICAgICBpZiAoZnNjYW5mKGZpbGUsICIgIyUq
W15cblxyXSUqW1xuXHJdIikgPT0gRU9GKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAot
ICAgICAgICAvLyBSZWFkIGEgc2NyaXB0IG5hbWUgaWYgcHJlc2VudC4KLSAgICAgICAgY2hhciB3
b3JkWzMzXTsKLSAgICAgICAgaW50IHJlc3VsdCA9IGZzY2FuZihmaWxlLCAiICUzMlteIyBcdFxu
XHJdJSpbXiMgXHRcblxyXSAiLCB3b3JkKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBFT0YpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQgPT0gMSkgewot
ICAgICAgICAgICAgLy8gR290IGEgd29yZCwgbWFwIHRvIHNjcmlwdCBjb2RlIGFuZCBwdXQgaXQg
aW50byB0aGUgYXJyYXkuCi0gICAgICAgICAgICB3aGl0ZUxpc3RJRE5TY3JpcHQod29yZCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgZmNsb3NlKGZpbGUpOwotICAgIHJldHVybiBZRVM7Ci19Ci0K
LXN0YXRpYyBCT09MIGFsbENoYXJhY3RlcnNJbklETlNjcmlwdFdoaXRlTGlzdChjb25zdCBVQ2hh
ciAqYnVmZmVyLCBpbnQzMl90IGxlbmd0aCkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IGZsYWc7Ci0gICAgZGlzcGF0Y2hfb25jZSgmZmxhZywgXnsKLSAgICAgICAgLy8gUmVhZCB3aGl0
ZSBsaXN0IGZyb20gbGlicmFyeS4KLSAgICAgICAgTlNBcnJheSAqZGlycyA9IE5TU2VhcmNoUGF0
aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TTGlicmFyeURpcmVjdG9yeSwgTlNBbGxEb21haW5z
TWFzaywgWUVTKTsKLSAgICAgICAgaW50IG51bURpcnMgPSBbZGlycyBjb3VudF07Ci0gICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtRGlyczsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAocmVh
ZElETlNjcmlwdFdoaXRlTGlzdEZpbGUoW1tkaXJzIG9iamVjdEF0SW5kZXg6aV0gc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSUROU2NyaXB0V2hpdGVMaXN0LnR4dCJdKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgY2hhciogZGVmYXVs
dElETlNjcmlwdFdoaXRlTGlzdFsyMF0gPSB7Ci0gICAgICAgICAgICAiQ29tbW9uIiwKLSAgICAg
ICAgICAgICJJbmhlcml0ZWQiLAotICAgICAgICAgICAgIkFyYWJpYyIsCi0gICAgICAgICAgICAi
QXJtZW5pYW4iLAotICAgICAgICAgICAgIkJvcG9tb2ZvIiwKLSAgICAgICAgICAgICJDYW5hZGlh
bl9BYm9yaWdpbmFsIiwKLSAgICAgICAgICAgICJEZXZhbmFnYXJpIiwKLSAgICAgICAgICAgICJE
ZXNlcmV0IiwKLSAgICAgICAgICAgICJHdWphcmF0aSIsCi0gICAgICAgICAgICAiR3VybXVraGki
LAotICAgICAgICAgICAgIkhhbmd1bCIsCi0gICAgICAgICAgICAiSGFuIiwKLSAgICAgICAgICAg
ICJIZWJyZXciLAotICAgICAgICAgICAgIkhpcmFnYW5hIiwKLSAgICAgICAgICAgICJLYXRha2Fu
YV9Pcl9IaXJhZ2FuYSIsCi0gICAgICAgICAgICAiS2F0YWthbmEiLAotICAgICAgICAgICAgIkxh
dGluIiwKLSAgICAgICAgICAgICJUYW1pbCIsCi0gICAgICAgICAgICAiVGhhaSIsCi0gICAgICAg
ICAgICAiWWkiLAotICAgICAgICB9OwotICAgICAgICBmb3IgKGNvbnN0IGNoYXIqIHNjcmlwdE5h
bWUgOiBkZWZhdWx0SUROU2NyaXB0V2hpdGVMaXN0KQotICAgICAgICAgICAgd2hpdGVMaXN0SURO
U2NyaXB0KHNjcmlwdE5hbWUpOwotICAgIH0pOwotICAgIAotICAgIGludDMyX3QgaSA9IDA7Ci0g
ICAgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludDsKLSAgICB3aGlsZSAo
aSA8IGxlbmd0aCkgewotICAgICAgICBVQ2hhcjMyIGM7Ci0gICAgICAgIFUxNl9ORVhUKGJ1ZmZl
ciwgaSwgbGVuZ3RoLCBjKQotICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9S
OwotICAgICAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjLCAmZXJy
b3IpOwotICAgICAgICBpZiAoZXJyb3IgIT0gVV9aRVJPX0VSUk9SKSB7Ci0gICAgICAgICAgICBM
T0dfRVJST1IoImdvdCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czog
JWQiLCBlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gTk87Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKHNjcmlwdCA8IDApIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiZ290IG5lZ2F0aXZlIG51
bWJlciBmb3Igc2NyaXB0IGNvZGUgZnJvbSBJQ1U6ICVkIiwgc2NyaXB0KTsKLSAgICAgICAgICAg
IHJldHVybiBOTzsKLSAgICAgICAgfQotICAgICAgICBpZiAoc2NyaXB0ID49IFVTQ1JJUFRfQ09E
RV9MSU1JVCkKLSAgICAgICAgICAgIHJldHVybiBOTzsKLQotICAgICAgICBzaXplX3QgaW5kZXgg
PSBzY3JpcHQgLyAzMjsKLSAgICAgICAgdWludDMyX3QgbWFzayA9IDEgPDwgKHNjcmlwdCAlIDMy
KTsKLSAgICAgICAgaWYgKCEoSUROU2NyaXB0V2hpdGVMaXN0W2luZGV4XSAmIG1hc2spKQotICAg
ICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICAKLSAgICAgICAgaWYgKGlzTG9va2FsaWtlQ2hh
cmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LCBjKSkKLSAgICAgICAgICAgIHJldHVybiBOTzsKLSAg
ICAgICAgcHJldmlvdXNDb2RlUG9pbnQgPSBjOwotICAgIH0KLSAgICByZXR1cm4gWUVTOwotfQot
Ci1zdGF0aWMgYm9vbCBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93ZWRCeVRMRFJ1bGVzKGNv
bnN0IFVDaGFyKiBidWZmZXIsIGludDMyX3QgbGVuZ3RoLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJv
b2woVUNoYXIpPiYgY2hhcmFjdGVySXNBbGxvd2VkKQotewotICAgIEFTU0VSVChsZW5ndGggPiAw
KTsKLQotICAgIGZvciAoaW50MzJfdCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAg
ICAgICAgVUNoYXIgY2ggPSBidWZmZXJbaV07Ci0gICAgICAgIAotICAgICAgICBpZiAoY2hhcmFj
dGVySXNBbGxvd2VkKGNoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAg
ICAgLy8gT25seSBjaGVjayB0aGUgc2Vjb25kIGxldmVsIGRvbWFpbi4gTG93ZXIgbGV2ZWwgcmVn
aXN0cmFycyBtYXkgaGF2ZSBkaWZmZXJlbnQgcnVsZXMuCi0gICAgICAgIGlmIChjaCA9PSAnLicp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNkZWZpbmUgQ0hFQ0tfUlVMRVNfSUZfU1VGRklY
X01BVENIRVMoc3VmZml4LCBmdW5jdGlvbikgXAotICAgIHsgXAotICAgICAgICBzdGF0aWMgY29u
c3QgaW50MzJfdCBzdWZmaXhMZW5ndGggPSBzaXplb2Yoc3VmZml4KSAvIHNpemVvZihzdWZmaXhb
MF0pOyBcCi0gICAgICAgIGlmIChsZW5ndGggPiBzdWZmaXhMZW5ndGggJiYgMCA9PSBtZW1jbXAo
YnVmZmVyICsgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBzdWZmaXgsIHNpemVvZihzdWZmaXgpKSkg
XAotICAgICAgICAgICAgcmV0dXJuIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExE
UnVsZXMoYnVmZmVyLCBsZW5ndGggLSBzdWZmaXhMZW5ndGgsIGZ1bmN0aW9uKTsgXAotICAgIH0K
LQotc3RhdGljIGJvb2wgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3RlcihVQ2hhciBjaCkKLXsK
LSAgICAvLyBPbmx5IG1vZGVybiBSdXNzaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFy
ZSBhbGxvd2VkLgotICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwg
Y2ggPT0gMHgwNDUxIHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwotfQotCi1zdGF0
aWMgQk9PTCBhbGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZl
ciwgaW50MzJfdCBsZW5ndGgpCi17Ci0gICAgLy8gU2tpcCB0cmFpbGluZyBkb3QgZm9yIHJvb3Qg
ZG9tYWluLgotICAgIGlmIChidWZmZXJbbGVuZ3RoIC0gMV0gPT0gJy4nKQotICAgICAgICBsZW5n
dGgtLTsKLQotICAgIC8vIGh0dHA6Ly9jY3RsZC5ydS9maWxlcy9wZGYvZG9jcy9ydWxlc19ydS1y
Zi5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNSRltdID0gewotICAgICAgICAn
LicsCi0gICAgICAgIDB4MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgICAg
IDB4MDQ0NCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCi0gICAgfTsKLSAgICBDSEVDS19S
VUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1JGLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hh
cmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9ydXNuYW1lcy5ydS9ydWxlcy5wbAotICAgIHN0YXRp
YyBjb25zdCBVQ2hhciBjeXJpbGxpY1JVU1tdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4
MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgICAgIDB4MDQ0MywgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIFUKLSAgICAgICAgMHgwNDQxICAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgRVMKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmls
bGljUlVTLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9y
dS5mYWl0aWQub3JnL3Byb2plY3RzL21vc2Nvdy9kb2N1bWVudHMvbW9za3ZhL2lkbgotICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY01PU0tWQVtdID0gewotICAgICAgICAnLicsCi0gICAg
ICAgIDB4MDQzQywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCi0gICAgICAgIDB4MDQzRSwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgRVMKLSAgICAgICAgMHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
S0EKLSAgICAgICAgMHgwNDMyLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKLSAgICAgICAg
MHgwNDMwICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQotICAgIH07Ci0gICAgQ0hFQ0tfUlVM
RVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT1NLVkEsIGlzUnVzc2lhbkRvbWFpbk5hbWVD
aGFyYWN0ZXIpOwotCi0gICAgLy8gaHR0cDovL3d3dy5kb3RkZXRpLnJ1L2ZvcnVzZXIvZG9jcy9y
ZWdydWxlcy5waHAKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNERVRJW10gPSB7Ci0g
ICAgICAgICcuJywKLSAgICAgICAgMHgwNDM0LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUK
LSAgICAgICAgMHgwNDM1LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKLSAgICAgICAgMHgw
NDQyLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKLSAgICAgICAgMHgwNDM4ICAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgSQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01B
VENIRVMoY3lyaWxsaWNERVRJLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAg
IC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHJ1bGVzIG5vdCBwdWJsaXNoZWQuIFRoZSB3b3JkIGlz
IFJ1c3NpYW4sIHNvIG9ubHkgYWxsb3dpbmcgUnVzc2lhbiBhdCB0aGlzIHRpbWUsCi0gICAgLy8g
YWx0aG91Z2ggd2UgbWF5IG5lZWQgdG8gcmV2aXNlIHRoZSBjaGVja3MgaWYgdGhpcyBlbmRzIHVw
IGJlaW5nIHVzZWQgd2l0aCBvdGhlciBsYW5ndWFnZXMgc3Bva2VuIGluIFJ1c3NpYS4KLSAgICBz
dGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNPTkxBWU5bXSA9IHsKLSAgICAgICAgJy4nLAotICAg
ICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDQzRCwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCi0gICAgICAgIDB4MDQzQiwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEVMCi0gICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IEEKLSAgICAgICAgMHgwNDM5LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQotICAg
ICAgICAweDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgIH07Ci0gICAgQ0hF
Q0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNPTkxBWU4sIGlzUnVzc2lhbkRvbWFp
bk5hbWVDaGFyYWN0ZXIpOwotCi0gICAgLy8gaHR0cDovL2NvcmVuaWMub3JnIC0gc2FtZSBhcyBh
Ym92ZS4KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNTQVlUW10gPSB7Ci0gICAgICAg
ICcuJywKLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKLSAgICAg
ICAgMHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQotICAgICAgICAweDA0MzksIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCi0gICAgICAgIDB4MDQ0MiAgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIFRFCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFU
Q0hFUyhjeXJpbGxpY1NBWVQsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOwotCi0gICAg
Ly8gaHR0cDovL3Bpci5vcmcvcHJvZHVjdHMvb3ByLWRvbWFpbi8gLSBydWxlcyBub3QgcHVibGlz
aGVkLiBBY2NvcmRpbmcgdG8gdGhlIHJlZ2lzdHJ5IHNpdGUsCi0gICAgLy8gdGhlIGludGVuZGVk
IGF1ZGllbmNlIGlzICJSdXNzaWFuIGFuZCBvdGhlciBTbGF2aWMtc3BlYWtpbmcgbWFya2V0cyIu
Ci0gICAgLy8gQ2hyb21lIGFwcGVhcnMgdG8gb25seSBhbGxvdyBSdXNzaWFuLCBzbyBzdGlja2lu
ZyB3aXRoIHRoYXQgZm9yIG5vdy4KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNPUkdb
XSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBPCi0gICAgICAgIDB4MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAg
ICAgIDB4MDQzMyAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQotICAgIH07Ci0gICAgQ0hF
Q0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNPUkcsIGlzUnVzc2lhbkRvbWFpbk5h
bWVDaGFyYWN0ZXIpOwotCi0gICAgLy8gaHR0cDovL2NjdGxkLmJ5L3J1bGVzLmh0bWwKLSAgICBz
dGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNCRUxbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAg
ICAweDA0MzEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBCRQotICAgICAgICAweDA0MzUsIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBJRQotICAgICAgICAweDA0M0IgIC8vIENZUklMTElDIFNN
QUxMIExFVFRFUiBFTAotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMo
Y3lyaWxsaWNCRUwsIFtdKFVDaGFyIGNoKSB7Ci0gICAgICAgIC8vIFJ1c3NpYW4gYW5kIEJ5ZWxv
cnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICAgICAg
cmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwg
Y2ggPT0gMHgwNDU2IHx8IGNoID09IDB4MDQ1RSB8fCBjaCA9PSAweDIwMTkgfHwgaXNBU0NJSURp
Z2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwOi8vd3d3Lm5pYy5r
ei9kb2NzL3BvcnlhZG9rX3ZuZWRyZW5peWFfa2F6X3J1LnBkZgotICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBjeXJpbGxpY0tBWltdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQ5QiwgLy8g
Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDQzMCwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICAgICAgMHgwNDM3ICAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgWkUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVT
KGN5cmlsbGljS0FaLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBLYXpha2ggbGV0dGVycywg
ZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2ggPj0gMHgw
NDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09IDB4MDREOSB8fCBj
aCA9PSAweDA0OTMgfHwgY2ggPT0gMHgwNDlCIHx8IGNoID09IDB4MDRBMyB8fCBjaCA9PSAweDA0
RTkgfHwgY2ggPT0gMHgwNEIxIHx8IGNoID09IDB4MDRBRiB8fCBjaCA9PSAweDA0QkIgfHwgY2gg
PT0gMHgwNDU2IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0g
ICAgLy8gaHR0cDovL3VhbmljLm5ldC9kb2NzL2RvY3VtZW50cy11a3IvUnVsZXMlMjBvZiUyMFVL
Ul92NC4wLnBkZgotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1VLUltdID0gewotICAg
ICAgICAnLicsCi0gICAgICAgIDB4MDQ0MywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKLSAg
ICAgICAgMHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwNDQw
ICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljVUtSLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBS
dXNzaWFuIGFuZCBVa3JhaW5pYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93
ZWQuCi0gICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2gg
PT0gMHgwNDUxIHx8IGNoID09IDB4MDQ5MSB8fCBjaCA9PSAweDA0MDQgfHwgY2ggPT0gMHgwNDU2
IHx8IGNoID09IDB4MDQ1NyB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9
KTsKLQotICAgIC8vIGh0dHA6Ly93d3cucm5pZHMucnMvZGF0YS9ET0tVTUVOVEkvaWRuLXNyYi1w
b2xpY3ktdGVybXNvZnVzZS12MS40LWVuZy5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3ly
aWxsaWNTUkJbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0NDEsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBFUwotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBFUgotICAgICAgICAweDA0MzEgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBCRQotICAgIH07
Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNTUkIsIFtdKFVDaGFy
IGNoKSB7Ci0gICAgICAgIC8vIFNlcmJpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJl
IGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQzOCkg
fHwgKGNoID49IDB4MDQzQSAmJiBjaCA8PSAweDA0NDgpIHx8IGNoID09IDB4MDQ1MiB8fCBjaCA9
PSAweDA0NTggfHwgY2ggPT0gMHgwNDU5IHx8IGNoID09IDB4MDQ1QSB8fCBjaCA9PSAweDA0NUIg
fHwgY2ggPT0gMHgwNDVGIHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwotICAgIH0p
OwotCi0gICAgLy8gaHR0cDovL21hcm5ldC5tay9kb2MvcHJhdmlsbmlrLW1rLW1rZC5wZGYKLSAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNS0RbXSA9IHsKLSAgICAgICAgJy4nLAotICAg
ICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAweDA0M0Es
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQotICAgICAgICAweDA0MzQgIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBERQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENI
RVMoY3lyaWxsaWNNS0QsIFtdKFVDaGFyIGNoKSB7Ci0gICAgICAgIC8vIE1hY2Vkb25pYW4gbGV0
dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2gg
Pj0gMHgwNDMwICYmIGNoIDw9IDB4MDQzOCkgfHwgKGNoID49IDB4MDQzQSAmJiBjaCA8PSAweDA0
NDgpIHx8IGNoID09IDB4MDQ1MyB8fCBjaCA9PSAweDA0NTUgfHwgY2ggPT0gMHgwNDU4IHx8IGNo
ID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0gMHgwNDVDIHx8IGNoID09IDB4MDQ1
RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIGh0
dHBzOi8vd3d3Lm1vbi5tbi9jcy8KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT05b
XSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBFTQotICAgICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAg
ICAgIDB4MDQzRCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCi0gICAgfTsKLSAgICBDSEVD
S19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY01PTiwgW10oVUNoYXIgY2gpIHsKLSAg
ICAgICAgLy8gTW9uZ29saWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2Vk
LgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09
IDB4MDQ1MSB8fCBjaCA9PSAweDA0RTkgfHwgY2ggPT0gMHgwNEFGIHx8IGlzQVNDSUlEaWdpdChj
aCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gTm90IGEga25vd24gdG9wIGxldmVs
IGRvbWFpbiB3aXRoIHNwZWNpYWwgcnVsZXMuCi0gICAgcmV0dXJuIE5POwotfQotCi0vLyBSZXR1
cm4gdmFsdWUgb2YgbmlsIG1lYW5zIG5vIG1hcHBpbmcgaXMgbmVjZXNzYXJ5LgotLy8gSWYgbWFr
ZVN0cmluZyBpcyBOTywgdGhlbiByZXR1cm4gdmFsdWUgaXMgZWl0aGVyIG5pbCBvciBzZWxmIHRv
IGluZGljYXRlIG1hcHBpbmcgaXMgbmVjZXNzYXJ5LgotLy8gSWYgbWFrZVN0cmluZyBpcyBZRVMs
IHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwgb3IgdGhlIG1hcHBlZCBzdHJpbmcuCi1z
dGF0aWMgTlNTdHJpbmcgKm1hcEhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5T
UmFuZ2UgcmFuZ2UsIEJPT0wgZW5jb2RlLCBCT09MIG1ha2VTdHJpbmcsIEJPT0wgKmVycm9yKQot
ewotICAgIGlmIChyYW5nZS5sZW5ndGggPiBIT1NUX05BTUVfQlVGRkVSX0xFTkdUSCkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoIVtzdHJpbmcgbGVuZ3RoXSkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICAKLSAgICBVQ2hhciBzb3VyY2VCdWZmZXJbSE9TVF9OQU1FX0JVRkZF
Ul9MRU5HVEhdOwotICAgIFVDaGFyIGRlc3RpbmF0aW9uQnVmZmVyW0hPU1RfTkFNRV9CVUZGRVJf
TEVOR1RIXTsKLSAgICAKLSAgICBpZiAoZW5jb2RlICYmIFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpA
IiUiIG9wdGlvbnM6TlNMaXRlcmFsU2VhcmNoIHJhbmdlOnJhbmdlXS5sb2NhdGlvbiAhPSBOU05v
dEZvdW5kKSB7Ci0gICAgICAgIE5TU3RyaW5nICpzdWJzdHJpbmcgPSBbc3RyaW5nIHN1YnN0cmlu
Z1dpdGhSYW5nZTpyYW5nZV07Ci0gICAgICAgIHN1YnN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNl
KENGVVJMQ3JlYXRlU3RyaW5nQnlSZXBsYWNpbmdQZXJjZW50RXNjYXBlcyhudWxscHRyLCAoQ0ZT
dHJpbmdSZWYpc3Vic3RyaW5nLCBDRlNUUigiIikpKTsKLSAgICAgICAgaWYgKHN1YnN0cmluZykg
ewotICAgICAgICAgICAgc3RyaW5nID0gc3Vic3RyaW5nOwotICAgICAgICAgICAgcmFuZ2UgPSBO
U01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pOwotICAgICAgICB9Ci0gICAgfQotICAgIAot
ICAgIGludCBsZW5ndGggPSByYW5nZS5sZW5ndGg7Ci0gICAgW3N0cmluZyBnZXRDaGFyYWN0ZXJz
OnNvdXJjZUJ1ZmZlciByYW5nZTpyYW5nZV07Ci0gICAgCi0gICAgVUVycm9yQ29kZSB1ZXJyb3Ig
PSBVX1pFUk9fRVJST1I7Ci0gICAgVUlETkFJbmZvIHByb2Nlc3NpbmdEZXRhaWxzID0gVUlETkFf
SU5GT19JTklUSUFMSVpFUjsKLSAgICBpbnQzMl90IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPSAo
ZW5jb2RlID8gdWlkbmFfbmFtZVRvQVNDSUkgOiB1aWRuYV9uYW1lVG9Vbmljb2RlKSgmVVJMUGFy
c2VyOjppbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwgc291cmNlQnVmZmVyLCBs
ZW5ndGgsIGRlc3RpbmF0aW9uQnVmZmVyLCBIT1NUX05BTUVfQlVGRkVSX0xFTkdUSCwgJnByb2Nl
c3NpbmdEZXRhaWxzLCAmdWVycm9yKTsKLSAgICBpZiAobGVuZ3RoICYmIChVX0ZBSUxVUkUodWVy
cm9yKSB8fCBwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpKSB7Ci0gICAgICAgICplcnJvciA9IFlF
UzsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG51bUNoYXJhY3Rl
cnNDb252ZXJ0ZWQgPT0gbGVuZ3RoICYmICFtZW1jbXAoc291cmNlQnVmZmVyLCBkZXN0aW5hdGlv
bkJ1ZmZlciwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgCi0gICAgaWYgKCFlbmNvZGUgJiYgIWFsbENoYXJhY3RlcnNJbklETlNjcmlwdFdoaXRlTGlz
dChkZXN0aW5hdGlvbkJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCkgJiYgIWFsbENoYXJh
Y3RlcnNBbGxvd2VkQnlUTERSdWxlcyhkZXN0aW5hdGlvbkJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0Nv
bnZlcnRlZCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgcmV0dXJuIG1ha2VTdHJp
bmcgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6ZGVzdGluYXRpb25CdWZmZXIgbGVu
Z3RoOm51bUNoYXJhY3RlcnNDb252ZXJ0ZWRdIDogc3RyaW5nOwotfQotCi1CT09MIGhvc3ROYW1l
TmVlZHNEZWNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBC
T09MICplcnJvcikKLXsKLSAgICByZXR1cm4gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCBy
YW5nZSwgTk8sIE5PLCBlcnJvcikgIT0gbmlsOwotfQotIAotQk9PTCBob3N0TmFtZU5lZWRzRW5j
b2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCAqZXJy
b3IpCi17Ci0gICAgcmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIFlF
UywgIE5PLCBlcnJvcikgIT0gbmlsOwotfQotCi1OU1N0cmluZyAqZGVjb2RlSG9zdE5hbWVXaXRo
UmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSkKLXsKLSAgICBCT09MIGVycm9y
ID0gTk87Ci0gICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcs
IHJhbmdlLCBOTywgWUVTLCAmZXJyb3IpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OwotfQotCi1OU1N0cmluZyAq
ZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSkK
LXsKLSAgICBCT09MIGVycm9yID0gTk87Ci0gICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFt
ZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBZRVMsIFlFUywgJmVycm9yKTsKLSAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuICFob3N0ID8gc3RyaW5nIDogaG9z
dDsKLX0KLQotTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCi17Ci0g
ICAgQk9PTCBlcnJvciA9IE5POwotICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRo
UmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pLCBOTywgWUVTLCAm
ZXJyb3IpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
IWhvc3QgPyBzdHJpbmcgOiBob3N0OwotfQotCi1OU1N0cmluZyAqZW5jb2RlSG9zdE5hbWUoTlNT
dHJpbmcgKnN0cmluZykKLXsKLSAgICBCT09MIGVycm9yID0gTk87Ci0gICAgTlNTdHJpbmcgKmhv
c3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIE5TTWFrZVJhbmdlKDAsIFtzdHJpbmcg
bGVuZ3RoXSksIFlFUywgWUVTLCAmZXJyb3IpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OwotfQotCi1zdGF0aWMg
dm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFu
Z2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5LCBCT09MIGVuY29kZSkK
LXsKLSAgICAvLyBHZW5lcmFsbHksIHdlIHdhbnQgdG8gb3B0aW1pemUgZm9yIHRoZSBjYXNlIHdo
ZXJlIHRoZXJlIGlzIG9uZSBob3N0IG5hbWUgdGhhdCBkb2VzIG5vdCBuZWVkIG1hcHBpbmcuCi0g
ICAgLy8gVGhlcmVmb3JlLCB3ZSB1c2UgbmlsIHRvIGluZGljYXRlIG5vIG1hcHBpbmcgaGVyZSBh
bmQgYW4gZW1wdHkgYXJyYXkgdG8gaW5kaWNhdGUgZXJyb3IuCi0KLSAgICBCT09MIGVycm9yID0g
Tk87Ci0gICAgQk9PTCBuZWVkc01hcHBpbmcgPSBlbmNvZGUgPyBob3N0TmFtZU5lZWRzRW5jb2Rp
bmdXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgJmVycm9yKSA6IGhvc3ROYW1lTmVlZHNEZWNvZGlu
Z1dpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCAmZXJyb3IpOwotICAgIGlmICghZXJyb3IgJiYgIW5l
ZWRzTWFwcGluZykKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmICghYXJyYXkpCi0gICAg
ICAgIGFycmF5ID0gYWRvcHROUyhbTlNNdXRhYmxlQXJyYXkgbmV3XSk7Ci0KLSAgICBpZiAoIWVy
cm9yKQotICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOnJh
bmdlXV07Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKE5T
U3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4m
IGFycmF5KQotewotICAgIHJldHVybiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmlu
ZywgcmFuZ2UsIGFycmF5LCBZRVMpOwotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhh
dE5lZWREZWNvZGluZyhOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKLXsKLSAgICByZXR1cm4gY29sbGVjdFJhbmdlc1RoYXRO
ZWVkTWFwcGluZyhzdHJpbmcsIHJhbmdlLCBhcnJheSwgTk8pOwotfQotCi1zdGF0aWMgdm9pZCBh
cHBseUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBT
dHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBh
cnJheSkKLXsKLSAgICAvLyBJbiBhIG1haWx0bzogVVJMLCBob3N0IG5hbWVzIGNvbWUgYWZ0ZXIg
YSAnQCcgY2hhcmFjdGVyIGFuZCBlbmQgd2l0aCBhICc+JyBvciAnLCcgb3IgJz8nIGNoYXJhY3Rl
ci4KLSAgICAvLyBTa2lwIHF1b3RlZCBzdHJpbmdzIHNvIHRoYXQgY2hhcmFjdGVycyBpbiB0aGVt
IGRvbid0IGNvbmZ1c2UgdXMuCi0gICAgLy8gV2hlbiB3ZSBmaW5kIGEgJz8nIGNoYXJhY3Rlciwg
d2UgYXJlIHBhc3QgdGhlIHBhcnQgb2YgdGhlIFVSTCB0aGF0IGNvbnRhaW5zIGhvc3QgbmFtZXMu
Ci0gICAgCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNl
dD4+IGhvc3ROYW1lT3JTdHJpbmdTdGFydENoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hh
cmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIlwiQD8iXTsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5hbWVFbmRDaGFyYWN0
ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6
QCI+LD8iXTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVy
U2V0Pj4gcXVvdGVkU3RyaW5nQ2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJT
ZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiXCJcXCJdOwotICAgIAotICAgIHVuc2lnbmVkIHN0
cmluZ0xlbmd0aCA9IFtzdHJpbmcgbGVuZ3RoXTsKLSAgICBOU1JhbmdlIHJlbWFpbmluZyA9IE5T
TWFrZVJhbmdlKDAsIHN0cmluZ0xlbmd0aCk7Ci0gICAgCi0gICAgd2hpbGUgKDEpIHsKLSAgICAg
ICAgLy8gRmluZCBzdGFydCBvZiBob3N0IG5hbWUgb3Igb2YgcXVvdGVkIHN0cmluZy4KLSAgICAg
ICAgTlNSYW5nZSBob3N0TmFtZU9yU3RyaW5nU3RhcnQgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0
ZXJGcm9tU2V0Omhvc3ROYW1lT3JTdHJpbmdTdGFydENoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0
aW9uczowIHJhbmdlOnJlbWFpbmluZ107Ci0gICAgICAgIGlmIChob3N0TmFtZU9yU3RyaW5nU3Rh
cnQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICB1bmljaGFyIGMgPSBbc3RyaW5nIGNoYXJhY3RlckF0SW5kZXg6aG9zdE5hbWVPclN0cmluZ1N0
YXJ0LmxvY2F0aW9uXTsKLSAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uID0gTlNNYXhSYW5nZSho
b3N0TmFtZU9yU3RyaW5nU3RhcnQpOwotICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5n
TGVuZ3RoIC0gcmVtYWluaW5nLmxvY2F0aW9uOwotICAgICAgICAKLSAgICAgICAgaWYgKGMgPT0g
Jz8nKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgaWYgKGMgPT0gJ0An
KSB7Ci0gICAgICAgICAgICAvLyBGaW5kIGVuZCBvZiBob3N0IG5hbWUuCi0gICAgICAgICAgICB1
bnNpZ25lZCBob3N0TmFtZVN0YXJ0ID0gcmVtYWluaW5nLmxvY2F0aW9uOwotICAgICAgICAgICAg
TlNSYW5nZSBob3N0TmFtZUVuZCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9z
dE5hbWVFbmRDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpyZW1haW5pbmdd
OwotICAgICAgICAgICAgQk9PTCBkb25lOwotICAgICAgICAgICAgaWYgKGhvc3ROYW1lRW5kLmxv
Y2F0aW9uID09IE5TTm90Rm91bmQpIHsKLSAgICAgICAgICAgICAgICBob3N0TmFtZUVuZC5sb2Nh
dGlvbiA9IHN0cmluZ0xlbmd0aDsKLSAgICAgICAgICAgICAgICBkb25lID0gWUVTOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZW1haW5pbmcubG9jYXRpb24gPSBob3N0
TmFtZUVuZC5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3Ry
aW5nTGVuZ3RoIC0gcmVtYWluaW5nLmxvY2F0aW9uOwotICAgICAgICAgICAgICAgIGRvbmUgPSBO
TzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gUHJvY2VzcyBo
b3N0IG5hbWUgcmFuZ2UuCi0gICAgICAgICAgICBmKHN0cmluZywgTlNNYWtlUmFuZ2UoaG9zdE5h
bWVTdGFydCwgaG9zdE5hbWVFbmQubG9jYXRpb24gLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoZG9uZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBTa2lwIHF1b3RlZCBzdHJpbmcu
Ci0gICAgICAgICAgICBBU1NFUlQoYyA9PSAnIicpOwotICAgICAgICAgICAgd2hpbGUgKDEpIHsK
LSAgICAgICAgICAgICAgICBOU1JhbmdlIGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCA9IFtz
dHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6cXVvdGVkU3RyaW5nQ2hhcmFjdGVycy5nZXQo
KS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5nXTsKLSAgICAgICAgICAgICAgICBpZiAo
ZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGMgPSBbc3RyaW5nIGNo
YXJhY3RlckF0SW5kZXg6ZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kLmxvY2F0aW9uXTsKLSAg
ICAgICAgICAgICAgICByZW1haW5pbmcubG9jYXRpb24gPSBOU01heFJhbmdlKGVzY2FwZWRDaGFy
YWN0ZXJPclN0cmluZ0VuZCk7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCA9IHN0
cmluZ0xlbmd0aCAtIHJlbWFpbmluZy5sb2NhdGlvbjsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAvLyBJZiB3ZSBhcmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCB0aGVuIGJyZWFr
IGZyb20gdGhlIHN0cmluZyBsb29wIGJhY2sgdG8gdGhlIGhvc3QgbmFtZSBsb29wLgotICAgICAg
ICAgICAgICAgIGlmIChjID09ICciJykKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gU2tpcCBlc2NhcGVkIGNoYXJhY3Rlci4K
LSAgICAgICAgICAgICAgICBBU1NFUlQoYyA9PSAnXFwnKTsKLSAgICAgICAgICAgICAgICBpZiAo
IXJlbWFpbmluZy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiArPSAxOwotICAgICAgICAgICAgICAgIHJlbWFp
bmluZy5sZW5ndGggLT0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQot
c3RhdGljIHZvaWQgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9VUkxTdHJpbmcoTlNTdHJpbmcgKnN0
cmluZywgU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24gZiwgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiYgYXJyYXkpCi17Ci0gICAgLy8gRmluZCBob3N0bmFtZXMuIFRvbyBiYWQgd2UgY2FuJ3Qg
dXNlIGFueSByZWFsIFVSTC1wYXJzaW5nIGNvZGUgdG8gZG8gdGhpcywKLSAgICAvLyBidXQgd2Ug
aGF2ZSB0byBkbyBpdCBiZWZvcmUgZG9pbmcgYWxsIHRoZSAlLWVzY2FwaW5nLCBhbmQgdGhpcyBp
cyB0aGUgb25seQotICAgIC8vIGNvZGUgd2UgaGF2ZSB0aGF0IHBhcnNlcyBtYWlsdG8gVVJMcyBh
bnl3YXkuCi0gICAgCi0gICAgLy8gTWF5YmUgd2Ugc2hvdWxkIGltcGxlbWVudCB0aGlzIHVzaW5n
IGEgY2hhcmFjdGVyIGJ1ZmZlciBpbnN0ZWFkPwotICAgIAotICAgIGlmIChwcm90b2NvbElzKHN0
cmluZywgIm1haWx0byIpKSB7Ci0gICAgICAgIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvTWFpbFRv
VVJMU3RyaW5nKHN0cmluZywgZiwgYXJyYXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IAotICAgIC8vIEZpbmQgdGhlIGhvc3QgbmFtZSBpbiBhIGhpZXJhcmNoaWNhbCBVUkwuCi0gICAg
Ly8gSXQgY29tZXMgYWZ0ZXIgYSAiOi8vIiBzZXF1ZW5jZSwgd2l0aCBzY2hlbWUgY2hhcmFjdGVy
cyBwcmVjZWRpbmcuCi0gICAgLy8gSWYgZW5kcyB3aXRoIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBv
ciBhICI6IiwgIi8iLCBvciBhICI/Ii4KLSAgICAvLyBJZiB0aGVyZSBpcyBhICJAIiBjaGFyYWN0
ZXIsIHRoZSBob3N0IHBhcnQgaXMganVzdCB0aGUgcGFydCBhZnRlciB0aGUgIkAiLgotICAgIE5T
UmFuZ2Ugc2VwYXJhdG9yUmFuZ2UgPSBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCI6Ly8iXTsKLSAg
ICBpZiAoc2VwYXJhdG9yUmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIC8vIENoZWNrIHRoYXQgYWxsIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSA6
Ly8gYXJlIHZhbGlkIHNjaGVtZSBjaGFyYWN0ZXJzLgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBub25TY2hlbWVDaGFyYWN0ZXJzID0gW1tOU0No
YXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiQUJDREVGR0hJ
SktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLS4i
XSBpbnZlcnRlZFNldF07Ci0gICAgaWYgKFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6
bm9uU2NoZW1lQ2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgc2VwYXJhdG9yUmFuZ2UubG9jYXRpb24pXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0cmlu
ZyBsZW5ndGhdOwotICAgIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlND
aGFyYWN0ZXJTZXQ+PiBob3N0VGVybWluYXRvcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVy
U2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIjovPyMiXTsKLSAgICAKLSAgICAvLyBTdGFydCBh
ZnRlciB0aGUgc2VwYXJhdG9yLgotICAgIHVuc2lnbmVkIGF1dGhvcml0eVN0YXJ0ID0gTlNNYXhS
YW5nZShzZXBhcmF0b3JSYW5nZSk7Ci0gICAgCi0gICAgLy8gRmluZCB0ZXJtaW5hdGluZyBjaGFy
YWN0ZXIuCi0gICAgTlNSYW5nZSBob3N0TmFtZVRlcm1pbmF0b3IgPSBbc3RyaW5nIHJhbmdlT2ZD
aGFyYWN0ZXJGcm9tU2V0Omhvc3RUZXJtaW5hdG9ycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFu
Z2U6TlNNYWtlUmFuZ2UoYXV0aG9yaXR5U3RhcnQsIHN0cmluZ0xlbmd0aCAtIGF1dGhvcml0eVN0
YXJ0KV07Ci0gICAgdW5zaWduZWQgaG9zdE5hbWVFbmQgPSBob3N0TmFtZVRlcm1pbmF0b3IubG9j
YXRpb24gPT0gTlNOb3RGb3VuZCA/IHN0cmluZ0xlbmd0aCA6IGhvc3ROYW1lVGVybWluYXRvci5s
b2NhdGlvbjsKLSAgICAKLSAgICAvLyBGaW5kICJAIiBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBob3N0
IG5hbWUuCi0gICAgTlNSYW5nZSB1c2VySW5mb1Rlcm1pbmF0b3IgPSBbc3RyaW5nIHJhbmdlT2ZT
dHJpbmc6QCJAIiBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoYXV0aG9yaXR5U3RhcnQsIGhv
c3ROYW1lRW5kIC0gYXV0aG9yaXR5U3RhcnQpXTsKLSAgICB1bnNpZ25lZCBob3N0TmFtZVN0YXJ0
ID0gdXNlckluZm9UZXJtaW5hdG9yLmxvY2F0aW9uID09IE5TTm90Rm91bmQgPyBhdXRob3JpdHlT
dGFydCA6IE5TTWF4UmFuZ2UodXNlckluZm9UZXJtaW5hdG9yKTsKLSAgICAKLSAgICByZXR1cm4g
ZihzdHJpbmcsIE5TTWFrZVJhbmdlKGhvc3ROYW1lU3RhcnQsIGhvc3ROYW1lRW5kIC0gaG9zdE5h
bWVTdGFydCksIGFycmF5KTsKLX0KLQotc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gbWFwSG9z
dE5hbWVzKE5TU3RyaW5nICpzdHJpbmcsIEJPT0wgZW5jb2RlKQotewotICAgIC8vIEdlbmVyYWxs
eSwgd2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhv
c3QgbmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGluZy4KLSAgICAKLSAgICBpZiAoZW5jb2Rl
ICYmIFtzdHJpbmcgY2FuQmVDb252ZXJ0ZWRUb0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGlu
Z10pCi0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgCi0gICAgLy8gTWFrZSBhIGxpc3Qgb2Yg
cmFuZ2VzIHRoYXQgYWN0dWFsbHkgbmVlZCBtYXBwaW5nLgotICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gaG9zdE5hbWVSYW5nZXM7Ci0gICAgU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24g
ZiA9IGVuY29kZSA/IGNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nIDogY29sbGVjdFJhbmdl
c1RoYXROZWVkRGVjb2Rpbmc7Ci0gICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9VUkxTdHJpbmco
c3RyaW5nLCBmLCBob3N0TmFtZVJhbmdlcyk7Ci0gICAgaWYgKCFob3N0TmFtZVJhbmdlcykKLSAg
ICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAgIGlmICghW2hvc3ROYW1lUmFuZ2VzIGNvdW50XSkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICAvLyBEbyB0aGUgbWFwcGluZy4KLSAgICBh
dXRvIG11dGFibGVDb3B5ID0gYWRvcHROUyhbc3RyaW5nIG11dGFibGVDb3B5XSk7Ci0gICAgdW5z
aWduZWQgaSA9IFtob3N0TmFtZVJhbmdlcyBjb3VudF07Ci0gICAgd2hpbGUgKGktLSkgewotICAg
ICAgICBOU1JhbmdlIGhvc3ROYW1lUmFuZ2UgPSBbW2hvc3ROYW1lUmFuZ2VzIG9iamVjdEF0SW5k
ZXg6aV0gcmFuZ2VWYWx1ZV07Ci0gICAgICAgIE5TU3RyaW5nICptYXBwZWRIb3N0TmFtZSA9IGVu
Y29kZSA/IGVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgaG9zdE5hbWVSYW5nZSkgOiBk
ZWNvZGVIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIGhvc3ROYW1lUmFuZ2UpOwotICAgICAgICBb
bXV0YWJsZUNvcHkgcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOmhvc3ROYW1lUmFuZ2Ugd2l0aFN0
cmluZzptYXBwZWRIb3N0TmFtZV07Ci0gICAgfQotICAgIHJldHVybiBtdXRhYmxlQ29weTsKLX0K
LQotc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2Uo
TlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICBhdXRvIHRyaW1tZWQgPSBhZG9wdE5TKFtzdHJpbmcg
bXV0YWJsZUNvcHldKTsKLSAgICBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKChfX2JyaWRnZSBDRk11
dGFibGVTdHJpbmdSZWYpdHJpbW1lZC5nZXQoKSk7Ci0gICAgcmV0dXJuIHRyaW1tZWQ7Ci19Ci0K
LU5TVVJMICpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwg
KlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudCkKLXsKLSAgICBpZiAoIVVSTCkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBDRlJhbmdlIGZyYWdSZyA9IENGVVJMR2V0Qnl0
ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwgbnVs
bHB0cik7Ci0gICAgaWYgKGZyYWdSZy5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKLSAgICAgICAg
cmV0dXJuIFVSTDsKLQotICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+
IHVybEJ5dGVzKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKLSAgICBDRkluZGV4IG51bUJ5dGVz
ID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCB1cmxCeXRlcy5kYXRhKCks
IHVybEJ5dGVzLnNpemUoKSk7Ci0gICAgaWYgKG51bUJ5dGVzID09IC0xKSB7Ci0gICAgICAgIG51
bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAw
KTsKLSAgICAgICAgdXJsQnl0ZXMuZ3JvdyhudW1CeXRlcyk7Ci0gICAgICAgIENGVVJMR2V0Qnl0
ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCBudW1CeXRlcyk7Ci0g
ICAgfQotCi0gICAgQ0ZVUkxSZWYgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0
ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgsIG51bGxwdHIpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBDRlVS
TENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlv
biAtIDEsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKTsKLSAgICAgICAgCi0g
ICAgcmV0dXJuIHJlc3VsdCA/IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7Ci19Ci0K
LXN0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKE5TVVJMICpVUkwp
Ci17Ci0gICAgcmV0dXJuIFVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVu
dChVUkwsIGtDRlVSTENvbXBvbmVudFJlc291cmNlU3BlY2lmaWVyKTsKLX0KLQotTlNVUkwgKlVS
TFdpdGhEYXRhKE5TRGF0YSAqZGF0YSwgTlNVUkwgKmJhc2VVUkwpCi17Ci0gICAgaWYgKCFkYXRh
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIE5TVVJMICpyZXN1bHQgPSBuaWw7Ci0g
ICAgc2l6ZV90IGxlbmd0aCA9IFtkYXRhIGxlbmd0aF07Ci0gICAgaWYgKGxlbmd0aCA+IDApIHsK
LSAgICAgICAgLy8gd29yayBhcm91bmQgPHJkYXI6Ly80NDcwNzcxPjogQ0ZVUkxDcmVhdGVBYnNv
bHV0ZVVSTFdpdGhCeXRlcyguLiwgVFJVRSkgZG9lc24ndCByZW1vdmUgbm9uLXBhdGggY29tcG9u
ZW50cy4KLSAgICAgICAgYmFzZVVSTCA9IFVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihi
YXNlVVJMKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IFVJbnQ4ICpieXRlcyA9IHN0YXRpY19j
YXN0PGNvbnN0IFVJbnQ4Kj4oW2RhdGEgYnl0ZXNdKTsKLSAgICAgICAgCi0gICAgICAgIC8vIENG
VVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMgd291bGQgY29tcGxhaW4gdG8gY29uc29sZSBp
ZiB3ZSBwYXNzZWQgYSBwYXRoIHRvIGl0LgotICAgICAgICBpZiAoYnl0ZXNbMF0gPT0gJy8nICYm
ICFiYXNlVVJMKQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgCi0gICAgICAgIC8v
IE5PVEU6IFdlIHVzZSBVVEYtOCBoZXJlIHNpbmNlIHRoaXMgZW5jb2RpbmcgaXMgdXNlZCB3aGVu
IGNvbXB1dGluZyBzdHJpbmdzIHdoZW4gcmV0dXJuaW5nIFVSTCBjb21wb25lbnRzCi0gICAgICAg
IC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBhdGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlz
IG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVURi04IHNlcXVlbmNlcywgd2hpY2gKLSAgICAgICAg
Ly8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZl
cmVudCBlbmNvZGluZywgbGlrZSBzaGlmdC1qaXMsIHNvIHdlIGZhbGwgYmFjawotICAgICAgICAv
LyBvbnRvIHVzaW5nIElTTyBMYXRpbiAxIGluIHRob3NlIGNhc2VzLgotICAgICAgICByZXN1bHQg
PSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxw
dHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJM
UmVmKWJhc2VVUkwsIFlFUykpOwotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJl
c3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMo
bnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChfX2Jy
aWRnZSBDRlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0
ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1z
dGF0aWMgTlNEYXRhICpkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAqc3RyaW5nKQot
ewotICAgIE5TRGF0YSAqdXNlclR5cGVkRGF0YSA9IFtzdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgIEFTU0VSVCh1c2VyVHlwZWREYXRhKTsKLSAgICAK
LSAgICBjb25zdCBVSW50OCogaW5CeXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IFVJbnQ4ICo+KFt1
c2VyVHlwZWREYXRhIGJ5dGVzXSk7Ci0gICAgaW50IGluTGVuZ3RoID0gW3VzZXJUeXBlZERhdGEg
bGVuZ3RoXTsKLSAgICBpZiAoIWluTGVuZ3RoKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAot
ICAgIGNoYXIqIG91dEJ5dGVzID0gc3RhdGljX2Nhc3Q8Y2hhciAqPihtYWxsb2MoaW5MZW5ndGgg
KiAzKSk7IC8vIGxhcmdlIGVub3VnaCB0byAlLWVzY2FwZSBldmVyeSBjaGFyYWN0ZXIKLSAgICBj
aGFyKiBwID0gb3V0Qnl0ZXM7Ci0gICAgaW50IG91dExlbmd0aCA9IDA7Ci0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBpbkxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIFVJbnQ4IGMgPSBpbkJ5dGVzW2ld
OwotICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPj0gMHg3ZikgewotICAgICAgICAgICAgKnAr
KyA9ICclJzsKLSAgICAgICAgICAgICpwKysgPSB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChj
KTsKLSAgICAgICAgICAgICpwKysgPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKLSAg
ICAgICAgICAgIG91dExlbmd0aCArPSAzOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
KnArKyA9IGM7Ci0gICAgICAgICAgICBvdXRMZW5ndGgrKzsKLSAgICAgICAgfQotICAgIH0KLSAg
ICAKLSAgICByZXR1cm4gW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5Om91dEJ5dGVzIGxlbmd0
aDpvdXRMZW5ndGhdOyAvLyBhZG9wdHMgb3V0Qnl0ZXMKLX0KLQotTlNVUkwgKlVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNVUkwgKm5zVVJMKQotewotICAgIGlmICgh
c3RyaW5nKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgYXV0byBtYXBwZWRTdHJpbmcgPSBt
YXBIb3N0TmFtZXMoc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2Uoc3RyaW5nKS5nZXQoKSwgWUVT
KTsKLSAgICBpZiAoIW1hcHBlZFN0cmluZykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIC8v
IExldCdzIGNoZWNrIHdoZXRoZXIgdGhlIFVSTCBpcyBib2d1cy4KLSAgICBVUkwgdXJsIHsgVVJM
IHsgbnNVUkwgfSwgbWFwcGVkU3RyaW5nLmdldCgpIH07Ci0gICAgaWYgKCF1cmwuY3JlYXRlQ0ZV
UkwoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MDU3Ci0gICAgLy8gV2Ugc2hvdWxkIGJlIGFi
bGUgdG8gdXNlIHVybC5jcmVhdGVDRlVSTCBpbnN0ZWFkIG9mIHVzaW5nIGRpcmVjdGx5IENGVVJM
IHBhcnNpbmcgcm91dGluZXMuCi0gICAgTlNEYXRhICpkYXRhID0gZGF0YVdpdGhVc2VyVHlwZWRT
dHJpbmcobWFwcGVkU3RyaW5nLmdldCgpKTsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVy
biBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwotCi0gICAgcmV0dXJuIFVSTFdpdGhEYXRhKGRh
dGEsIG5zVVJMKTsKLX0KLQotTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVk
KE5TU3RyaW5nICpzdHJpbmcsIE5TVVJMICpVUkwpCi17Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KLSAgICBOU1VSTCAqcmVzdWx0ID0gVVJMV2l0aFVzZXJUeXBlZFN0
cmluZyhzdHJpbmcsIFVSTCk7Ci0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgTlNEYXRhICpy
ZXN1bHREYXRhID0gZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcoc3RyaW5nKTsKLSAgICAgICAgaWYg
KCFyZXN1bHREYXRhKQotICAgICAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
Il07Ci0gICAgICAgIHJlc3VsdCA9IFVSTFdpdGhEYXRhKHJlc3VsdERhdGEsIFVSTCk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIEJPT0wgaGFzUXVlc3Rpb25NYXJr
T25seVF1ZXJ5U3RyaW5nKE5TVVJMICpVUkwpCi17Ci0gICAgQ0ZSYW5nZSByYW5nZVdpdGhTZXBh
cmF0b3JzOwotICAgIENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KChfX2JyaWRnZSBDRlVS
TFJlZilVUkwsIGtDRlVSTENvbXBvbmVudFF1ZXJ5LCAmcmFuZ2VXaXRoU2VwYXJhdG9ycyk7Ci0g
ICAgaWYgKHJhbmdlV2l0aFNlcGFyYXRvcnMubG9jYXRpb24gIT0ga0NGTm90Rm91bmQgJiYgcmFu
Z2VXaXRoU2VwYXJhdG9ycy5sZW5ndGggPT0gMSkKLSAgICAgICAgcmV0dXJuIFlFUzsKLQotICAg
IHJldHVybiBOTzsKLX0KLQotTlNEYXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAq
VVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50VHlwZSkKLXsKLSAgICBWZWN0b3I8VUlu
dDgsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBhbGxCeXRlc0J1ZmZlcihVUkxfQllURVNfQlVG
RkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9f
YnJpZGdlIENGVVJMUmVmKVVSTCwgYWxsQnl0ZXNCdWZmZXIuZGF0YSgpLCBhbGxCeXRlc0J1ZmZl
ci5zaXplKCkpOwotICAgIGlmIChieXRlc0ZpbGxlZCA9PSAtMSkgewotICAgICAgICBDRkluZGV4
IGJ5dGVzVG9BbGxvY2F0ZSA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwg
bnVsbHB0ciwgMCk7Ci0gICAgICAgIGFsbEJ5dGVzQnVmZmVyLmdyb3coYnl0ZXNUb0FsbG9jYXRl
KTsKLSAgICAgICAgYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJl
ZilVUkwsIGFsbEJ5dGVzQnVmZmVyLmRhdGEoKSwgYnl0ZXNUb0FsbG9jYXRlKTsKLSAgICB9Ci0g
ICAgCi0gICAgY29uc3QgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBsZXRlVVJMID0gKENGVVJMQ29t
cG9uZW50VHlwZSktMTsKLSAgICBDRlJhbmdlIHJhbmdlOwotICAgIGlmIChjb21wb25lbnRUeXBl
ICE9IGNvbXBsZXRlVVJMKSB7Ci0gICAgICAgIHJhbmdlID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JD
b21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50VHlwZSwgbnVsbHB0cik7
Ci0gICAgICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKLSAgICAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmFuZ2UubG9jYXRpb24gPSAwOwot
ICAgICAgICByYW5nZS5sZW5ndGggPSBieXRlc0ZpbGxlZDsKLSAgICB9Ci0gICAgCi0gICAgTlNE
YXRhICpjb21wb25lbnREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmFsbEJ5dGVzQnVmZmVy
LmRhdGEoKSArIHJhbmdlLmxvY2F0aW9uIGxlbmd0aDpyYW5nZS5sZW5ndGhdOyAKLSAgICAKLSAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIgKj4oW2NvbXBvbmVudERhdGEgYnl0ZXNdKTsKLSAgICBOU011dGFibGVEYXRhICpyZXN1
bHREYXRhID0gW05TTXV0YWJsZURhdGEgZGF0YV07Ci0gICAgLy8gTk9URTogYWRkIGxlYWRpbmcg
Jz8nIHRvIHF1ZXJ5IHN0cmluZ3Mgbm9uLXplcm8gbGVuZ3RoIHF1ZXJ5IHN0cmluZ3MuCi0gICAg
Ly8gTk9URTogcmV0YWluIHF1ZXN0aW9uLW1hcmsgb25seSBxdWVyeSBzdHJpbmdzLgotICAgIGlm
IChjb21wb25lbnRUeXBlID09IGtDRlVSTENvbXBvbmVudFF1ZXJ5KSB7Ci0gICAgICAgIGlmIChy
YW5nZS5sZW5ndGggPiAwIHx8IGhhc1F1ZXN0aW9uTWFya09ubHlRdWVyeVN0cmluZyhVUkwpKQot
ICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0ZXM6Ij8iIGxlbmd0aDoxXTsgICAgCi0g
ICAgfQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2UubGVuZ3RoOyBpKyspIHsKLSAgICAg
ICAgdW5zaWduZWQgY2hhciBjID0gYnl0ZXNbaV07Ci0gICAgICAgIGlmIChjIDw9IDB4MjAgfHwg
YyA+PSAweDdmKSB7Ci0gICAgICAgICAgICBjaGFyIGVzY2FwZWRbM107Ci0gICAgICAgICAgICBl
c2NhcGVkWzBdID0gJyUnOwotICAgICAgICAgICAgZXNjYXBlZFsxXSA9IHVwcGVyTmliYmxlVG9B
U0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAgZXNjYXBlZFsyXSA9IGxvd2VyTmliYmxlVG9B
U0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAgW3Jlc3VsdERhdGEgYXBwZW5kQnl0ZXM6ZXNj
YXBlZCBsZW5ndGg6M107ICAgIAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY2hhciBi
WzFdOwotICAgICAgICAgICAgYlswXSA9IGM7Ci0gICAgICAgICAgICBbcmVzdWx0RGF0YSBhcHBl
bmRCeXRlczpiIGxlbmd0aDoxXTsgICAgCi0gICAgICAgIH0gICAgICAgICAgICAgICAKLSAgICB9
Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdERhdGE7Ci19Ci0KLXN0YXRpYyBOU1VSTCAqVVJMQnlS
ZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoTlNVUkwgKlVSTCwgQ0ZVUkxD
b21wb25lbnRUeXBlIGNvbXBvbmVudCkKLXsKLSAgICBDRlJhbmdlIHJhbmdlID0gQ0ZVUkxHZXRC
eXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50LCAw
KTsKLSAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgIHJldHVy
biBVUkw7Ci0gICAgCi0gICAgLy8gUmVtb3ZlIG9uZSBzdWJzZXF1ZW50IGNoYXJhY3Rlci4KLSAg
ICByYW5nZS5sZW5ndGgrKzsKLQotICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9M
RU5HVEg+IGJ1ZmZlcihVUkxfQllURVNfQlVGRkVSX0xFTkdUSCk7Ci0gICAgQ0ZJbmRleCBudW1C
eXRlcyA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgaWYgKG51bUJ5dGVzID09IC0xKSB7Ci0gICAgICAgIG51
bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAw
KTsKLSAgICAgICAgYnVmZmVyLmdyb3cobnVtQnl0ZXMpOwotICAgICAgICBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlci5kYXRhKCksIG51bUJ5dGVzKTsKLSAgICB9
Ci0gICAgVUludDgqIHVybEJ5dGVzID0gYnVmZmVyLmRhdGEoKTsKLSAgICAgICAgCi0gICAgaWYg
KG51bUJ5dGVzIDwgcmFuZ2UubG9jYXRpb24pCi0gICAgICAgIHJldHVybiBVUkw7Ci0gICAgaWYg
KG51bUJ5dGVzIDwgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpCi0gICAgICAgIHJhbmdl
Lmxlbmd0aCA9IG51bUJ5dGVzIC0gcmFuZ2UubG9jYXRpb247Ci0gICAgICAgIAotICAgIG1lbW1v
dmUodXJsQnl0ZXMgKyByYW5nZS5sb2NhdGlvbiwgdXJsQnl0ZXMgKyByYW5nZS5sb2NhdGlvbiAr
IHJhbmdlLmxlbmd0aCwgbnVtQnl0ZXMgLSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCk7
Ci0gICAgCi0gICAgQ0ZVUkxSZWYgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0
ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIG51bGxwdHIpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBDRlVSTENy
ZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgs
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICAK
LSAgICByZXR1cm4gcmVzdWx0ID8gQ0ZCcmlkZ2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKLX0K
LQotTlNVUkwgKlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhOU1VSTCAqVVJMKQotewotICAgIHJldHVy
biBVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENoYXJhY3RlcihVUkwsIGtDRlVS
TENvbXBvbmVudFVzZXJJbmZvKTsKLX0KLQogTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwo
TlNVUkwgKlVSTCkKIHsKICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gYWRv
cHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6VVJMXSk7CkBAIC0xMDQ5LDIw
MyArNTcsNCBAQCBOU1VSTCAqVVJMQnlDYW5vbmljYWxpemluZ1VSTChOU1VSTCAqVVJMKQogICAg
IHJldHVybiBbW25ld1VSTCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAotTlNEYXRhICpvcmln
aW5hbFVSTERhdGEoTlNVUkwgKlVSTCkKLXsKLSAgICBVSW50OCAqYnVmZmVyID0gKFVJbnQ4ICop
bWFsbG9jKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKLSAgICBDRkluZGV4IGJ5dGVzRmlsbGVk
ID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIsIFVSTF9CWVRF
U19CVUZGRVJfTEVOR1RIKTsKLSAgICBpZiAoYnl0ZXNGaWxsZWQgPT0gLTEpIHsKLSAgICAgICAg
Q0ZJbmRleCBieXRlc1RvQWxsb2NhdGUgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJl
ZilVUkwsIG51bGxwdHIsIDApOwotICAgICAgICBidWZmZXIgPSAoVUludDggKilyZWFsbG9jKGJ1
ZmZlciwgYnl0ZXNUb0FsbG9jYXRlKTsKLSAgICAgICAgYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5
dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlciwgYnl0ZXNUb0FsbG9jYXRlKTsKLSAg
ICAgICAgQVNTRVJUKGJ5dGVzRmlsbGVkID09IGJ5dGVzVG9BbGxvY2F0ZSk7Ci0gICAgfQotICAg
IAotICAgIC8vIGJ1ZmZlciBpcyBhZG9wdGVkIGJ5IHRoZSBOU0RhdGEKLSAgICBOU0RhdGEgKmRh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6YnVmZmVyIGxlbmd0aDpieXRlc0ZpbGxl
ZCBmcmVlV2hlbkRvbmU6WUVTXTsKLSAgICAKLSAgICBOU1VSTCAqYmFzZVVSTCA9IChfX2JyaWRn
ZSBOU1VSTCAqKUNGVVJMR2V0QmFzZVVSTCgoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMKTsKLSAgICBp
ZiAoYmFzZVVSTCkKLSAgICAgICAgcmV0dXJuIG9yaWdpbmFsVVJMRGF0YShVUkxXaXRoRGF0YShk
YXRhLCBiYXNlVVJMKSk7Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0KLXN0YXRpYyBDRlN0cmluZ1Jl
ZiBjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoQ0ZTdHJpbmdSZWYgc3Ry
aW5nKQotewotICAgIENGSW5kZXggbGVuZ3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsK
LSAgICBWZWN0b3I8VUNoYXIsIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBzb3VyY2VCdWZmZXIo
bGVuZ3RoKTsKLSAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgw
LCBsZW5ndGgpLCBzb3VyY2VCdWZmZXIuZGF0YSgpKTsKLSAgICAKLSAgICBWZWN0b3I8VUNoYXIs
IFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIPiBvdXRCdWZmZXI7Ci0gICAgCi0gICAgc3RkOjpvcHRp
b25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludDsKLSAgICBDRkluZGV4IGkgPSAwOwotICAg
IHdoaWxlIChpIDwgbGVuZ3RoKSB7Ci0gICAgICAgIFVDaGFyMzIgYzsKLSAgICAgICAgVTE2X05F
WFQoc291cmNlQnVmZmVyLCBpLCBsZW5ndGgsIGMpCi0gICAgICAgIAotICAgICAgICBpZiAoaXNM
b29rYWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQsIGMpKSB7Ci0gICAgICAgICAgICB1
aW50OF90IHV0ZjhCdWZmZXJbNF07Ci0gICAgICAgICAgICBDRkluZGV4IG9mZnNldCA9IDA7Ci0g
ICAgICAgICAgICBVQm9vbCBmYWlsdXJlID0gZmFsc2U7Ci0gICAgICAgICAgICBVOF9BUFBFTkQo
dXRmOEJ1ZmZlciwgb2Zmc2V0LCA0LCBjLCBmYWlsdXJlKQotICAgICAgICAgICAgQVNTRVJUKCFm
YWlsdXJlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yIChDRkluZGV4IGogPSAwOyBq
IDwgb2Zmc2V0OyArK2opIHsKLSAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKCclJyk7
Ci0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhE
aWdpdCh1dGY4QnVmZmVyW2pdKSk7Ci0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZChs
b3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1dGY4QnVmZmVyW2pdKSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBVQ2hhciB1dGYxNkJ1ZmZlclsyXTsKLSAg
ICAgICAgICAgIENGSW5kZXggb2Zmc2V0ID0gMDsKLSAgICAgICAgICAgIFVCb29sIGZhaWx1cmUg
PSBmYWxzZTsKLSAgICAgICAgICAgIFUxNl9BUFBFTkQodXRmMTZCdWZmZXIsIG9mZnNldCwgMiwg
YywgZmFpbHVyZSkKLSAgICAgICAgICAgIEFTU0VSVCghZmFpbHVyZSk7Ci0gICAgICAgICAgICBm
b3IgKENGSW5kZXggaiA9IDA7IGogPCBvZmZzZXQ7ICsraikKLSAgICAgICAgICAgICAgICBvdXRC
dWZmZXIuYXBwZW5kKHV0ZjE2QnVmZmVyW2pdKTsKLSAgICAgICAgfQotICAgICAgICBwcmV2aW91
c0NvZGVQb2ludCA9IGM7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBDRlN0cmluZ0NyZWF0ZVdp
dGhDaGFyYWN0ZXJzKG51bGxwdHIsIG91dEJ1ZmZlci5kYXRhKCksIG91dEJ1ZmZlci5zaXplKCkp
OwotfQotCi1OU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcoTlNVUkwgKlVSTCkKLXsKLSAgICBO
U0RhdGEgKmRhdGEgPSBvcmlnaW5hbFVSTERhdGEoVVJMKTsKLSAgICBjb25zdCB1bnNpZ25lZCBj
aGFyICpiZWZvcmUgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oW2RhdGEgYnl0
ZXNdKTsKLSAgICBpbnQgbGVuZ3RoID0gW2RhdGEgbGVuZ3RoXTsKLSAgICAKLSAgICBib29sIG1h
eU5lZWRIb3N0TmFtZURlY29kaW5nID0gZmFsc2U7Ci0gICAgCi0gICAgY29uc3QgdW5zaWduZWQg
Y2hhciAqcCA9IGJlZm9yZTsKLSAgICBpbnQgYnVmZmVyTGVuZ3RoID0gKGxlbmd0aCAqIDMpICsg
MTsKLSAgICBWZWN0b3I8Y2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IGFmdGVyKGJ1ZmZl
ckxlbmd0aCk7IC8vIGxhcmdlIGVub3VnaCB0byAlLWVzY2FwZSBldmVyeSBjaGFyYWN0ZXIKLSAg
ICBjaGFyICpxID0gYWZ0ZXIuZGF0YSgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcFtpXTsKLSAgICAgICAgLy8gdW5l
c2NhcGUgZXNjYXBlIHNlcXVlbmNlcyB0aGF0IGluZGljYXRlIGJ5dGVzIGdyZWF0ZXIgdGhhbiAw
eDdmCi0gICAgICAgIGlmIChjID09ICclJyAmJiAoaSArIDEgPCBsZW5ndGggJiYgaXNBU0NJSUhl
eERpZ2l0KHBbaSArIDFdKSkgJiYgaSArIDIgPCBsZW5ndGggJiYgaXNBU0NJSUhleERpZ2l0KHBb
aSArIDJdKSkgewotICAgICAgICAgICAgYXV0byB1ID0gdG9BU0NJSUhleFZhbHVlKHBbaSArIDFd
LCBwW2kgKyAyXSk7Ci0gICAgICAgICAgICBpZiAodSA+IDB4N2YpIHsKLSAgICAgICAgICAgICAg
ICAvLyB1bmVzY2FwZQotICAgICAgICAgICAgICAgICpxKysgPSB1OwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAvLyBkbyBub3QgdW5lc2NhcGUKLSAgICAgICAgICAgICAg
ICAqcSsrID0gcFtpXTsKLSAgICAgICAgICAgICAgICAqcSsrID0gcFtpICsgMV07Ci0gICAgICAg
ICAgICAgICAgKnErKyA9IHBbaSArIDJdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaSAr
PSAyOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgKnErKyA9IGM7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIC8vIENoZWNrIGZvciAieG4tLSIgaW4gYW4gZWZmaWNpZW50LCBub24t
Y2FzZS1zZW5zaXRpdmUsIHdheS4KLSAgICAgICAgICAgIGlmIChjID09ICctJyAmJiBpID49IDMg
JiYgIW1heU5lZWRIb3N0TmFtZURlY29kaW5nICYmIChxWy00XSB8IDB4MjApID09ICd4JyAmJiAo
cVstM10gfCAweDIwKSA9PSAnbicgJiYgcVstMl0gPT0gJy0nKQotICAgICAgICAgICAgICAgIG1h
eU5lZWRIb3N0TmFtZURlY29kaW5nID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAqcSA9
ICdcMCc7Ci0gICAgCi0gICAgLy8gQ2hlY2sgc3RyaW5nIHRvIHNlZSBpZiBpdCBjYW4gYmUgY29u
dmVydGVkIHRvIGRpc3BsYXkgdXNpbmcgVVRGLTggIAotICAgIFJldGFpblB0cjxOU1N0cmluZz4g
cmVzdWx0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFmdGVyLmRhdGEoKV07Ci0g
ICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgLy8gQ291bGQgbm90IGNvbnZlcnQgdG8gVVRGLTgu
Ci0gICAgICAgIC8vIENvbnZlcnQgY2hhcmFjdGVycyBncmVhdGVyIHRoYW4gMHg3ZiB0byBlc2Nh
cGUgc2VxdWVuY2VzLgotICAgICAgICAvLyBTaGlmdCBjdXJyZW50IHN0cmluZyB0byB0aGUgZW5k
IG9mIHRoZSBidWZmZXIKLSAgICAgICAgLy8gdGhlbiB3ZSB3aWxsIGNvcHkgYmFjayBieXRlcyB0
byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAKLSAgICAgICAgLy8gYXMgd2UgY29udmVydC4KLSAg
ICAgICAgaW50IGFmdGVybGVuZ3RoID0gcSAtIGFmdGVyLmRhdGEoKTsKLSAgICAgICAgY2hhciAq
cCA9IGFmdGVyLmRhdGEoKSArIGJ1ZmZlckxlbmd0aCAtIGFmdGVybGVuZ3RoIC0gMTsKLSAgICAg
ICAgbWVtbW92ZShwLCBhZnRlci5kYXRhKCksIGFmdGVybGVuZ3RoICsgMSk7IC8vIGNvcGllcyB0
cmFpbGluZyAnXDAnCi0gICAgICAgIGNoYXIgKnEgPSBhZnRlci5kYXRhKCk7Ci0gICAgICAgIHdo
aWxlICgqcCkgewotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKnA7Ci0gICAgICAgICAg
ICBpZiAoYyA+IDB4N2YpIHsKLSAgICAgICAgICAgICAgICAqcSsrID0gJyUnOwotICAgICAgICAg
ICAgICAgICpxKysgPSB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAg
ICAgICAqcSsrID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAqcSsrID0gKnA7Ci0gICAgICAgICAgICBwKys7Ci0gICAg
ICAgIH0KLSAgICAgICAgKnEgPSAnXDAnOwotICAgICAgICByZXN1bHQgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6YWZ0ZXIuZGF0YSgpXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1h
eU5lZWRIb3N0TmFtZURlY29kaW5nKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJcyBpdCBnb29kIHRv
IGlnbm9yZSB0aGUgZmFpbHVyZSBvZiBtYXBIb3N0TmFtZXMgYW5kIGtlZXAgcmVzdWx0IGludGFj
dD8KLSAgICAgICAgYXV0byBtYXBwZWRSZXN1bHQgPSBtYXBIb3N0TmFtZXMocmVzdWx0LmdldCgp
LCBOTyk7Ci0gICAgICAgIGlmIChtYXBwZWRSZXN1bHQpCi0gICAgICAgICAgICByZXN1bHQgPSBt
YXBwZWRSZXN1bHQ7Ci0gICAgfQotCi0gICAgcmVzdWx0ID0gW3Jlc3VsdCBwcmVjb21wb3NlZFN0
cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
Y3JlYXRlU3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilyZXN1bHQuZ2V0KCkpKTsKLX0KLQotQk9PTCBpc1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5n
ICpzdHJpbmcpCi17Ci0gICAgQk9PTCB2YWxpZCA9IFlFUzsKLSAgICAvLyBnZXQgYnVmZmVyCi0g
ICAgCi0gICAgY2hhciBzdGF0aWNfYnVmZmVyWzEwMjRdOwotICAgIGNvbnN0IGNoYXIgKnA7Ci0g
ICAgQk9PTCBzdWNjZXNzID0gQ0ZTdHJpbmdHZXRDU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1Jl
ZilzdHJpbmcsIHN0YXRpY19idWZmZXIsIDEwMjMsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7Ci0g
ICAgcCA9IHN1Y2Nlc3MgPyBzdGF0aWNfYnVmZmVyIDogW3N0cmluZyBVVEY4U3RyaW5nXTsKLSAg
ICAKLSAgICBpbnQgbGVuZ3RoID0gc3RybGVuKHApOwotICAgIAotICAgIC8vIGNoZWNrIGZvciBj
aGFyYWN0ZXJzIDw9IDB4MjAgb3IgPj0weDdmLCAlLWVzY2FwZSBzZXF1ZW5jZXMgb2YgJTdmLCBh
bmQgeG4tLSwgdGhlc2UKLSAgICAvLyBhcmUgdGhlIHRoaW5ncyB0aGF0IHdpbGwgbGVhZCBfd2Vi
X3VzZXJWaXNpYmxlU3RyaW5nIHRvIGFjdHVhbGx5IGNoYW5nZSB0aGluZ3MuCi0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBw
W2ldOwotICAgICAgICAvLyBlc2NhcGUgY29udHJvbCBjaGFyYWN0ZXJzLCBzcGFjZSwgYW5kIGRl
bGV0ZQotICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPT0gMHg3ZikgewotICAgICAgICAgICAg
dmFsaWQgPSBOTzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGMgPT0g
JyUnICYmIChpICsgMSA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAmJiBp
ICsgMiA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7Ci0gICAgICAgICAg
ICBhdXRvIHUgPSB0b0FTQ0lJSGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKLSAgICAgICAg
ICAgIGlmICh1ID4gMHg3ZikgewotICAgICAgICAgICAgICAgIHZhbGlkID0gTk87Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBDaGVjayBmb3IgInhuLS0iIGluIGFuIGVmZmlj
aWVudCwgbm9uLWNhc2Utc2Vuc2l0aXZlLCB3YXkuCi0gICAgICAgICAgICBpZiAoYyA9PSAnLScg
JiYgaSA+PSAzICYmIChwW2kgLSAzXSB8IDB4MjApID09ICd4JyAmJiAocFtpIC0gMl0gfCAweDIw
KSA9PSAnbicgJiYgcFtpIC0gMV0gPT0gJy0nKSB7Ci0gICAgICAgICAgICAgICAgdmFsaWQgPSBO
TzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLSAgICAKLSAgICByZXR1cm4gdmFsaWQ7Ci19Ci0KLU5TUmFuZ2UgcmFuZ2VPZlVSTFNjaGVt
ZShOU1N0cmluZyAqc3RyaW5nKQotewotICAgIE5TUmFuZ2UgY29sb24gPSBbc3RyaW5nIHJhbmdl
T2ZTdHJpbmc6QCI6Il07Ci0gICAgaWYgKGNvbG9uLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYg
Y29sb24ubG9jYXRpb24gPiAwKSB7Ci0gICAgICAgIE5TUmFuZ2Ugc2NoZW1lID0gezAsIGNvbG9u
LmxvY2F0aW9ufTsKLSAgICAgICAgLyoKLSAgICAgICAgIFRoaXMgc3R1ZmYgaXMgdmVyeSBleHBl
bnNpdmUuICAxMC0xNSBtc2VjIG9uIGEgMngxLjJHSHouICBJZiBub3QgY2FjaGVkIGl0IHN3YW1w
cwotICAgICAgICAgZXZlcnl0aGluZyBlbHNlIHdoZW4gYWRkaW5nIGl0ZW1zIHRvIHRoZSBhdXRv
Y29tcGxldGUgREIuICBNYWtlcyBtZSB3b25kZXIgaWYgd2UKLSAgICAgICAgIGV2ZW4gbmVlZCB0
byBlbmZvcmNlIHRoZSBjaGFyYWN0ZXIgc2V0IGhlcmUuCi0gICAgICAgICAqLwotICAgICAgICBO
U1N0cmluZyAqYWNjZXB0YWJsZUNoYXJhY3RlcnMgPSBAIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZX
WFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky4tIjsKLSAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IEludmVyc2VTY2hl
bWVDaGFyYWN0ZXJTZXQoW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVy
c0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0pOwotICAgICAgICBO
U1JhbmdlIGlsbGVnYWxzID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpJbnZlcnNl
U2NoZW1lQ2hhcmFjdGVyU2V0LmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpzY2hlbWVdOwot
ICAgICAgICBpZiAoaWxsZWdhbHMubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKLSAgICAgICAgICAg
IHJldHVybiBzY2hlbWU7Ci0gICAgfQotICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5k
LCAwKTsKLX0KLQotQk9PTCBsb29rc0xpa2VBYnNvbHV0ZVVSTChOU1N0cmluZyAqc3RyaW5nKQot
ewotICAgIC8vIFRyaW0gd2hpdGVzcGFjZSBiZWNhdXNlIF93ZWJfVVJMV2l0aFN0cmluZyBhbGxv
d3Mgd2hpdGVzcGFjZS4KLSAgICByZXR1cm4gcmFuZ2VPZlVSTFNjaGVtZShzdHJpbmdCeVRyaW1t
aW5nV2hpdGVzcGFjZShzdHJpbmcpLmdldCgpKS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaApp
bmRleCBiODYxN2YzOTIyMjI3NzNhMTJiNzQzODE5MzgwNzE0YTUxZDQ3ZTBiLi5hNjlhMGU3OGY1
ODQ3NTFjZmY1MDJmMTYyNGYzY2Y2NmIwNGMzYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRDb25maWd1
cmF0aW9uLmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJSVENCdW5kbGVQb2xpY3kuaCIK
ICNpbmNsdWRlICJSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCIKICNpbmNsdWRlICJSVENQTXV4UG9s
aWN5LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUGFydC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUGFydC5oCmluZGV4IDYyOGY5MzlhMzA1Y2Nm
NzQ2NjllNmJjYmFiYzBmNTkxNzk1NjM3ODYuLjA0MWMyOWEzMTJmMDk4MTdmOGVjZjE3MzYxNjEz
Y2FkMmZkNmY0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0
LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggMDJiZTcxODFk
ZDdlOTVmMTE1MGM1NjZjMTFhZTQ0ZGE3NGQ2ZTljNy4uMmU4OTNiZGNjODhhMzFmYzllYjRhOWYz
NGM5ZGQ3OGI2OWM0OGNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeS5oCkBAIC0zOCw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJl
Z2lzdHJ5OwotY2xhc3MgVVJMOwogCiBXRUJDT1JFX0VYUE9SVCBCbG9iUmVnaXN0cnkmIGJsb2JS
ZWdpc3RyeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5oCmluZGV4IGMxNjE4NDkxMzRhYzU0OTcwMjRhMDFlMjIzYjVlNDVmNTkx
YmQ1NjUuLjE3MmJmMWQ3NWQwMjAxOTNmZmNiZGQyMTYzNjI5MjZiYjZmNWYxMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCkBA
IC0zMywxNCArMzMsMTMgQEAKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiQmxv
YlJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJj
ZUhhbmRsZUNsaWVudDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCA2
MTgyYmU1NmM0MjYwNWQ1MGVhMjlkMmQ3YmUxMDIxN2RiZjYyMTA5Li5jOTRlMzk0OTRiOGUzMjZk
YjRhMTJhMjcyMDFhNDYyMzhkZTE4YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0zOSw3ICszOSw3IEBA
CiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIK
ICNpbmNsdWRlICJQYXJzZWRDb250ZW50UmFuZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKaW5kZXggMjQ5YTAwMzYxYmVmYWMzYzhhYjMzOWFkODc3
ZTg3MWY0YmZlNTkzMi4uMzJhNmY1N2MwYTIxOTYwNDdjNzQzOWIwOTM5ZGZlMmNkMGMzNjllNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0
SGVhZGVyRmllbGRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5j
bHVkZSAiQ29va2llc1N0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiU2FtZVNpdGVJbmZvLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCmluZGV4IDQ1YmI0NzIwMTFh
YzUzNjRhMWRmOGIxYjg5NDIwZjkyOTZmZmE3NDguLmI5YWY0MjJhZWYyZWZhYjQ4YjQ5NDlmOWI2
MzRmNTA5NzA5M2Y4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAi
Q3JlZGVudGlhbFN0b3JhZ2UuaCIKIAogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCmluZGV4IDVjYWNj
MDU2MzFjMTY4MGQxZDk0MjdkNzc4OTUyOWYzYjE4ZDMwN2QuLjdkZGM0ZmU1NWJiMWJlMmY2OTIw
MDA4MGMzNGYzNGJhYmQ1MGVkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKLSNpZm5kZWYgQ3JlZGVudGlhbFN0b3JhZ2VfaAotI2RlZmluZSBDcmVk
ZW50aWFsU3RvcmFnZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIK
ICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VIYXNoLmgiCkBAIC0zNSw3ICszNCw2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwog
CiBjbGFzcyBDcmVkZW50aWFsU3RvcmFnZSB7CkBAIC03MCw1ICs2OCwzIEBAIHByaXZhdGU6CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDcmVkZW50aWFsU3RvcmFn
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29k
ZXIuY3BwCmluZGV4IDNmNGZiMWFkODg0YTc4MmJkYzYxNGZkMzk0ZmU3NzcxYWJhNTRhNGYuLjQ2
MDViZWEwYTdhMTZkMTNhNWQyYzBlOTA2ZmJhZTkwY2RkNDYyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCkBAIC0zMCw5ICsz
MCw5IEBACiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9CYXNlNjQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9EYXRhVVJMRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5oCmluZGV4IDcyNTgyNDcxMjljYmJhYTJjODVmYzNiNDljZmRiNjY4MGQyYmQ3
NWQuLjk3NGQ5Y2ViZWIxOTUxODhiNWM4NDY5MmFhMGY1YjI2YmE5OTBjZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKQEAgLTIzLDkg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIERhdGFVUkxEZWNvZGVyX2gKLSNkZWZpbmUgRGF0YVVSTERlY29kZXJfaAotCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgpAQCAtMzgsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFy
ZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiAKIG5hbWVzcGFjZSBEYXRhVVJMRGVjb2RlciB7CiAKQEAg
LTYxLDUgKzU4LDMgQEAgdm9pZCBkZWNvZGUoY29uc3QgVVJMJiwgY29uc3QgU2NoZWR1bGVDb250
ZXh0JiwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXImJik7CiB9CiAKIH0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggZThjN2Q5OGEwNzVi
NjZkZDA1NDI4NzliNTkxNjRjMGQ0NmY2YTcyNi4uYmJhYWRlMTg1Yjc5ZjU0ZjhjMDcwNzUzOTYz
MjE2NjM0NmVjMmRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaApAQCAtMjAsOSArMjAsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJCbG9iRGF0
YS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2Vy
dmVyLmgKaW5kZXggMTAzZDlhOTZiYmRjNjE1MmE2MWI3ZDE2MWZlNDA5MGJhNWJjM2EwNS4uNTI3
ODliNWJkZDhkYWIzOTdiMzY5YWFjMTU4YzI2NzcyMTg3N2RlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaApAQCAtMjMsMTUgKzIzLDEzIEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQcm94eVNl
cnZlcl9oCi0jZGVmaW5lIFByb3h5U2VydmVyX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogCiAv
LyBSZXByZXNlbnRzIGEgc2luZ2xlIHByb3h5IHNlcnZlci4KQEAgLTc1LDUgKzczLDMgQEAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3Qg
VVJMJik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVmVjdG9yPFByb3h5
U2VydmVyPiYpOwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUHJv
eHlTZXJ2ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUVycm9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUVycm9yQmFzZS5oCmluZGV4IDc2MzMxOGMyZTExNDczNjIzNmVjM2QxMzZjN2M0YTg3OGRk
Y2IyZjMuLmUwYmYwNGI4YWM4ZjAwYjM5Mzk3OTFlYmZkMDA4N2VjYjkwZGI3OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgK
QEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggYWQ3ZGRmZjE3MTI4OTE5OWJmNGMwNmQ3M2Q3ZmVi
YWRjYzkxNDczYi4uZDJlYTlhMTA3ZGU2NzlhYzJhNjVhYjU2ZWMwMDM4NGMxMTNhNmU0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5j
cHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBDb21wbGV0aW9uSAogICAgIGlmIChy
ZXNwb25zZS5pc0hUVFAwOSgpKSB7CiAgICAgICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwotICAg
ICAgICBpZiAocG9ydCAmJiAhaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwg
dXJsLnByb3RvY29sKCkpKSB7CisgICAgICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkgewogICAgICAgICAg
ICAgY2FuY2VsKCk7CiAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJDYW5jZWxsZWQgbG9h
ZCBmcm9tICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVj
YXVzZSBpdCBpcyB1c2luZyBIVFRQLzAuOS4iOwogICAgICAgICAgICAgZC0+bV9jbGllbnQtPmRp
ZEZhaWwodGhpcywgeyBTdHJpbmcoKSwgMCwgdXJsLCBtZXNzYWdlIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDRmMGJkN2U5
Mjk4ZTExOWU2YmZmNDJjNDY4MWRiN2IzODg2YjE3ZmQuLmI1OWFiMjFhYTBhNTQ3ZjVkNTdjNGIw
Mjg4ZWI4YjcyMzY4OWNmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTc3LDcgKzc3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xh
c3MgRnJhbWU7Ci1jbGFzcyBVUkw7CiBjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKIGNsYXNzIFBy
b3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggYzY2
MTllZWJkNWJmZDNiOWViN2E4YmI2YzVkMzM4YzU0ZDk2ZTI0NC4uNzM0M2JkYTU1MDQ3YTIyNGNj
NWFiZDUyZmY5NDU3NmRjMGU4OGY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNDQsNyArNDQsNiBAQCBP
QkpDX0NMQVNTIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7Ci1jbGFzcyBVUkw7
CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCA5YzAyZDJiMWNhMzA4ZWJlZDRiOTY1N2U2
MjRmMzVjMDUyYWI2Zjg1Li42MjVhYzUxZjdlMzljMTllMzJmYmNiNTJkNjJhNzRmZmVjYzFiMjcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBSZXNvdXJjZVJlcXVlc3QgUmVz
b3VyY2VSZXF1ZXN0QmFzZTo6cmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcgogICAgICAgICByZXF1ZXN0Lm1faHR0cEhlYWRlckZpZWxkcy5yZW1vdmUoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRMZW5ndGgpOwogICAgIH0KIAotICAgIGlmIChzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ICYmICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0
dHBzIikgJiYgV2ViQ29yZTo6cHJvdG9jb2xJcyhyZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0
cHMiKSkKKyAgICBpZiAoc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCAm
JiAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpICYmIFdURjo6cHJvdG9jb2xJcyhy
ZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSkKICAgICAgICAgcmVxdWVzdC5jbGVhckhU
VFBSZWZlcnJlcigpOwogCiAgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwocmVx
dWVzdC51cmwoKSwgcmVkaXJlY3RSZXNwb25zZS51cmwoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4IDNkZjMz
YTExMzEwOGU1ZTc0OGIyZDUwYTU2ZTlkZTA4MWYyZWMxNTIuLjMwZDRiMTA2MmRkMDM4ODg0NWU4
NDdjOWNkNjlhYzQ0ZDI5NzE2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5j
bHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAi
SW50UmVjdC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmgKaW5kZXggNmZjYTZiNzUxZjU3ZjA4MWY0M2ExMzQzYjJlNTE1MGNlMmZkNjIxYS4uYWQy
ZmQ1NzkxYTdiZTE3NGY4YmY5ODQ0N2Y5MGU0ZmIxZGY2YjlmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAt
MzEsOCArMzEsOCBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJOZXR3
b3JrTG9hZE1ldHJpY3MuaCIKICNpbmNsdWRlICJQYXJzZWRDb250ZW50UmFuZ2UuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZS5oCmluZGV4IGI1OWJkYmEwYjQxMjk1Y2VlMzg1M2Y2ZmVhMjJhYmMyNGVjZGJmMjUuLjZkMWZk
MWE4MzA5OTM5ODk0YjQ5ZWE4NGI3N2E1OWYxMTdkOGEwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtMzEsOCAr
MzEsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCmluZGV4IDdkNTg3NTdjMjNkNzJi
Y2Q0MWNkNjY4YTFjNjIzOGE3NzM0NThiN2IuLmIzODJhMGQ3ZWRmMTY1NDNjYTNjZjQ3YjNkZTFj
NzcxNWViMTc0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAK
IAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogCiAjaWYgUExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNG
TmV0LmNwcAppbmRleCAwN2RjZjQzNWRmOGI4MmRlMzc1MjdhNDQyZGJiOTZmMzBiYWEwMGUxLi44
MWFiZWQyMTQ1MDQ3OTEwNDA5MWI3ZjQ2NDZlMThjZmY3NWQ0NGIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiAjaW5jbHVkZSAiQ29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCIKICNpbmNsdWRlICJDb29raWVzU3RyYXRlZ3kuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4K
ICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcAppbmRleCAwNzUxNzgzMmZh
YTRiYTRhZTc2ZTlkMzAzZmUzODczODc2YjQ4ZDg4Li42NGNmYzliZWNkYjI2Y2I1M2QwZTE0MTA0
ZWM0ZTFkZmM2OWIyZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZlci5oIgogCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwCmluZGV4IDI4OWU1OTcwNjA2YzlkNDM1YjNhZWNmNzY1NDhiZWE0MzFjZWM2MWMuLmI3Yjk1
MDdhYTM1N2I4NjdjMThmYzA0ZDQ5OTk4YTk5ODZiNzAwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTI4
LDExICsyOCwxMSBAQAogCiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIAotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbmNsdWRlIDxDRk5l
dHdvcmsvQ0ZOZXR3b3JrRXJyb3JzLmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29h
Lm1tCmluZGV4IGUxM2ViMzdjODM5YmQzNWI3MzE3MGZkZWIxMjkzYjY0ZTc5MTY0ZDcuLmMwOTAw
YWViNWQxNmY0MzNlNGU3MTVhOTBkMzA2MWRjNGY1NWQwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMzEsMTEgKzMxLDExIEBACiAjaW1wb3J0ICJDb29raWVT
dG9yYWdlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIkNvb2tpZXNTdHJhdGVneS5oIgogI2ltcG9ydCAi
U2FtZVNpdGVJbmZvLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZO
ZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9y
dCA8d3RmL09wdGlvbmFsLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBA
aW50ZXJmYWNlIE5TVVJMICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMyZDA1MWUzNzkzZjVhOGU4NjhhNGU3OWRmZTE2NDY1Njc1MTdhZmYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERh
dGFiYXNlLmNwcApAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDb29raWVKYXJDdXJsRGF0YWJhc2UuaCIKKworI2lmIFVTRShDVVJMKQorI2luY2x1
ZGUgIkNvb2tpZS5oIgorI2luY2x1ZGUgIkNvb2tpZUphckRCLmgiCisjaW5jbHVkZSAiQ29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Np
b24uaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiB1cmwsIGJvb2wg
Zm9ySFRUUEhlYWRlcikKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGNvb2tpZXM7CisKKyAgICBDb29r
aWVKYXJEQiYgY29va2llSmFyREIgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCk7CisgICAgYXV0
byBzZWFyY2hIVFRQT25seSA9IChmb3JIVFRQSGVhZGVyID8gc3RkOjpudWxsb3B0IDogc3RkOjpv
cHRpb25hbDxib29sPiB7ZmFsc2V9KTsKKyAgICBhdXRvIHNlY3VyZSA9IHVybC5wcm90b2NvbElz
KCJodHRwcyIpID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxib29sPiB7ZmFsc2V9Owor
CisgICAgVmVjdG9yPENvb2tpZT4gcmVzdWx0czsKKyAgICBpZiAoY29va2llSmFyREIuc2VhcmNo
Q29va2llcyh1cmwuc3RyaW5nKCksIHNlYXJjaEhUVFBPbmx5LCBzZWN1cmUsIHN0ZDo6bnVsbG9w
dCwgcmVzdWx0cykpIHsKKyAgICAgICAgZm9yIChhdXRvIHJlc3VsdCA6IHJlc3VsdHMpIHsKKyAg
ICAgICAgICAgIGlmICghY29va2llcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29va2ll
cy5hcHBlbmQoIjsgIik7CisgICAgICAgICAgICBjb29raWVzLmFwcGVuZChyZXN1bHQubmFtZSk7
CisgICAgICAgICAgICBjb29raWVzLmFwcGVuZCgiPSIpOworICAgICAgICAgICAgY29va2llcy5h
cHBlbmQocmVzdWx0LnZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gY29va2ll
cy50b1N0cmluZygpOworfQorCit2b2lkIENvb2tpZUphckN1cmxEYXRhYmFzZTo6c2V0Q29va2ll
c0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQp
OworICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOworICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5
KTsKKworICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJh
c2UoKTsKKyAgICBjb29raWVKYXJEQi5zZXRDb29raWUodXJsLnN0cmluZygpLCB2YWx1ZSwgdHJ1
ZSk7Cit9CisKK3ZvaWQgQ29va2llSmFyQ3VybERhdGFiYXNlOjpzZXRDb29raWVzRnJvbUhUVFBS
ZXNwb25zZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIENvb2tpZUphckRCJiBjb29r
aWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKKyAgICBjb29raWVKYXJEQi5zZXRD
b29raWUodXJsLnN0cmluZygpLCB2YWx1ZSwgZmFsc2UpOworfQorCitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBDb29raWVKYXJDdXJsRGF0YWJhc2U6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAoreworICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKKyAgICBVTlVTRURfUEFSQU0o
cGFnZUlEKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBmaWx0ZXIgc2VjdXJlIGNvb2tp
ZXMgb3V0IGlmIHRoZSBjYWxsZXIgcmVxdWVzdHMgaXQuCisgICAgcmV0dXJuIHsgY29va2llc0Zv
clNlc3Npb24oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07Cit9CisK
K3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmxEYXRhYmFzZTo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYg
dXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAoreworICAgIFVOVVNFRF9Q
QVJBTShmcmFtZUlEKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKKworICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBmaWx0ZXIgc2VjdXJlIGNvb2tpZXMgb3V0IGlmIHRoZSBjYWxsZXIgcmVx
dWVzdHMgaXQuCisgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgZmlyc3RQ
YXJ0eSwgdXJsLCB0cnVlKSwgZmFsc2UgfTsKK30KKworc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
Q29va2llSmFyQ3VybERhdGFiYXNlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25zdAoreworICAgIHJldHVybiBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBoZWFkZXJGaWVsZFByb3h5LmZpcnN0
UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVy
bCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgaGVh
ZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7Cit9CisKK2Jvb2wgQ29va2llSmFy
Q3VybERhdGFiYXNlOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24pIGNvbnN0Cit7CisgICAgcmV0dXJuIHNlc3Npb24uY29va2llRGF0YWJhc2UoKS5p
c0VuYWJsZWQoKTsKK30KKworYm9vbCBDb29raWVKYXJDdXJsRGF0YWJhc2U6OmdldFJhd0Nvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Cit7CisgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwor
ICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOworCisgICAgQ29va2llSmFyREImIGNvb2tpZUphckRC
ID0gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpOworICAgIHJldHVybiBjb29raWVKYXJEQi5zZWFy
Y2hDb29raWVzKGZpcnN0UGFydHkuc3RyaW5nKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIHJhd0Nvb2tpZXMpOworfQorCit2b2lkIENvb2tpZUphckN1cmxEYXRh
YmFzZTo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICBDb29raWVK
YXJEQiYgY29va2llSmFyREIgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCk7CisgICAgY29va2ll
SmFyREIuZGVsZXRlQ29va2llKHVybCwgbmFtZSk7Cit9CisKK3ZvaWQgQ29va2llSmFyQ3VybERh
dGFiYXNlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBIYXNoU2V0PFN0cmluZz4mKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGlt
cGxlbWVudGVkCit9CisKK3ZvaWQgQ29va2llSmFyQ3VybERhdGFiYXNlOjpkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorfQor
Cit2b2lkIENvb2tpZUphckN1cmxEYXRhYmFzZTo6ZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Cit7CisgICAgQ29va2llSmFyREImIGNv
b2tpZUphckRCID0gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpOworICAgIGNvb2tpZUphckRCLmRl
bGV0ZUFsbENvb2tpZXMoKTsKK30KKwordm9pZCBDb29raWVKYXJDdXJsRGF0YWJhc2U6OmRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdh
bGxUaW1lKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDVVJMKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNzk5YzEzNzI4NWY4NzBlZmVjMjg3YjkzZDE2YTE3MjVhY2M2ZmZlMS4uMTI5MjFjN2Y1M2I2
ZjdlMGE0NzlhNWI5OWY5NzllZmI3YzI2NzRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0yOSw5ICsyOSw5IEBA
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJTUUxpdGVGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYv
TW9ub3RvbmljVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShQVUJM
SUNfU1VGRklYX0xJU1QpCiAjaW5jbHVkZSAiUHVibGljU3VmZml4LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaAppbmRleCAwNGRiZTgz
MmY2NjljYjUwZmM3ZmE0OWE4MjE1MGJmZmRlMDMzODUwLi44NGQzOGRmN2UwYmVjNzM0YTgzNDMy
MDkzNDVjZmU4ZDdmODUwZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmgKQEAgLTI0LDggKzI0LDggQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuaAppbmRleCA4MDUyYjgyOGVlYWE1ZTMwYTM0OWNhN2QyZWYyOWVmMGNiYWU2
MjRkLi5lNzQxMDM4ZGM0M2NjMmFlMzZlNjZlZWJjODdmMTY2NTllNDhmZGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaApAQCAt
MjgsMTMgKzI4LDEzIEBACiAKICNpbmNsdWRlICJDdXJsUHJveHlTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIkN1cmxTU0xIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgT1MoV0lORE9XUykKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5oCmluZGV4IDI3YTcwMjEwZGYxOTEzMGQ5NTc3
NTQ5MmUwMWU5NjU0NjRmZWE5MWQuLmFmMzEzNTQ2YzQ0YTMyNzdmMDZiNDg1NGVmMDMwMjdiODU4
MTQ0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUHJveHlTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUHJveHlTZXR0aW5ncy5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjZGVmaW5lIGtDVVJMQVVUSF9ESUdFU1RfSUUgICAgKCgo
dW5zaWduZWQgbG9uZykgMSkgPDwgNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2UuaAppbmRleCAzNzM2NjFiZDM1YWZjZTY2N2FlMWJi
MzU3N2E2YzA5ZGMxNDRmYTRkLi5lNjExZmZjNGZiMTU0MWY0Y2ZkMTMyODcyY2JjMWQ1ZGMzZDkz
ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNwb25zZS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCAyZDY0NWM5ZDczOTI1Zjdl
ZWFkNTQwM2VkNzkwM2IzYzNjMTk3NzAwLi4yNDdhNTI3NWU4NThkOTA5MjBjMTRmMDAxMzI3YmM2
YTMxZWNkNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC0zNiwx
MCArMzYsMTAgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTmV0d29ya2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlVSTC5o
IgogCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKaW5kZXggY2RhNDQ5
OTNmNjM0YjI0NDRhNjFkY2FmOTc0MDFlOWYyNjAyZjBiMC4uMThmNTA4YjZlNDg2ODJhOGZjNzAw
ZDFmNjdkN2E5NmUwOTNlZDRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAK
IAogI2lmIFVTRShDVVJMKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1
cmwuY3BwCmluZGV4IGNmYzQ4ZmZhMjVmZDgwZmRiOGQ3MWZhN2MzODkzZDNlODZhNDU3N2EuLjA3
MTBjYWVlMjUwM2MxZjNmMzgwOGUyMDQzNzA1ODgyN2VkMzZkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3Vy
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDdXJsLmNwcApAQCAtMzksOSArMzksOSBAQAogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9y
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJv
ck1hYy5tbQppbmRleCBkZDYyMGJlYjM2NzRiMWYyMTIzYWE5OWZmNDAzMmZkMDdkYWYxMWU1Li4w
YjU1YTAyYmM1ODY5NmU0MjVjZDZmODdmMGIzMDY3YTQ4OTI2MWI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0K
QEAgLTI2LDExICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJSZXNvdXJj
ZUVycm9yLmgiCiAKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ0ZF
cnJvci5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDx3dGYv
QmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogQGlu
dGVyZmFjZSBOU0Vycm9yIChXZWJFeHRyYXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4NmRjNjM3NDEyZTE4YmE3MjVmNzQ4M2VjMzI2ZTEyNDlhODhhMTZkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oCisrKyAvZGV2L251bGwKQEAg
LTEsMzUgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTAotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqLwotCi0jaWZuZGVmIEdVbmlxdWVQdHJTb3VwX2gKLSNkZWZpbmUgR1VuaXF1ZVB0clNvdXBf
aAotCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1
ZVB0ci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291
cFVSSSwgc291cF91cmlfZnJlZSkKLVdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBDb29raWUs
IHNvdXBfY29va2llX2ZyZWUpCi1XVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwTWVzc2FnZUhl
YWRlcnMsIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2ZyZWUpCi1XVEZfREVGSU5FX0dQVFJfREVMRVRF
UihTb3VwQnVmZmVyLCBzb3VwX2J1ZmZlcl9mcmVlKQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggZTQ4M2FhNjMx
NmNlNmM1ZDZjOGYzZTY1NWQ1NWRkMWVlYjA0NjNjZi4uMDNkMTU2ZTVlZDZlOGMxZjU5MDk1NmE4
YmQ4NDBlOGEzZDEwZTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApA
QCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCIKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9u
LmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CkBAIC00MSw2ICs0MCw3IEBACiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1
ZVB0clNvdXAuaD4KIAogI2lmIFVTRShMSUJTRUNSRVQpCiAjaW5jbHVkZSAiR1JlZlB0ckd0ay5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5
U2VydmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJv
eHlTZXJ2ZXJTb3VwLmNwcAppbmRleCA0YzI3N2MzZDIxNjdhY2M1NDQxMWY5NjAzZTM1MTkwMDE3
MzNiNGFkLi45Yzk5Zjg5NWRiNGRiN2M4MTFjYTUwZjUxMWQzZDRmYjI1YzcxNmEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2
ZXJTb3VwLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgVVNFKFNPVVApCiAKLSNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
SGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCA2MzczNGM2NzRjNTJlZTk1ZGM2YzllNDIxYzQ2NjBm
NDE4NDAwYmFhLi5mYjcxODEzYTM3NTkwOWMwYTdhMmY1NDU3NGE4MTFhZWRkYjNmZDY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiQ3JlZGVu
dGlhbFN0b3JhZ2UuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiR1VuaXF1
ZVB0clNvdXAuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkxvY2FsaXpl
ZFN0cmluZ3MuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCkBAIC01OCw2ICs1Nyw3
IEBACiAjZW5kaWYKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAu
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCAzOGUzYThlZTY5NjgxMWZk
NWJhNzhiNGIzMGMyYzAxYTM5ZmY1YjVmLi43NDcyYWQyMzhiMzM0YTk1MDkwMWVkZTkwMTU4MzI2
NWIzZjliYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCkBAIC0yNyw5ICsyNyw5IEBACiAjaWZuZGVmIFJlc291
cmNlUmVxdWVzdF9oCiAjZGVmaW5lIFJlc291cmNlUmVxdWVzdF9oCiAKLSNpbmNsdWRlICJHVW5p
cXVlUHRyU291cC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdEJhc2UuaCIKICNpbmNsdWRl
IDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCAwOTBk
YzdmZDhlNzExZTgyMzc1Njk3MDJhNjdmY2EwOGI0OGUyMmNkLi4yMjljNTNjZjU3MjAyNzZlNTI1
ZTlhNmZiNmY3NjJiOGZmNThlZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBAIC0yNCwx
MSArMjQsMTEgQEAKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiQmxvYlJlZ2lz
dHJ5SW1wbC5oIgotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiSFRUUFBh
cnNlcnMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgiCisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbFNvdXAuY3BwCmluZGV4IDljZGRkYjg3ZTM3NTk1YTJiYmFkNjUxMDIwNDVmNmZh
NzQyYjRlNDIuLjVhZjk0NzNmMzc3Mjg2MTEzMWJhZTcxNzdiMzQzMTlhNWMyZGIwNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcApAQCAtNDEsOSArNDEsOSBAQAogI2lu
Y2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dV
bmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0
d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMTNlY2I1YjBmNzYzYzIwMWNmMTdhNDE2MTJhNzNm
MDlhOGY1YTA3OC4uNjAwNGQxN2Y3NmEwM2E5MGUzMzhhOTBlM2M1NDViNTJmNTE5Yzc2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3Jr
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUg
IkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNvdXBO
ZXR3b3JrUHJveHlTZXR0aW5ncy5oIgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CkBAIC0zOSw2
ICszOCw3IEBACiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKaW5k
ZXggZDFlOWQ5Y2U1YjI4OWQxNGNjNmMxNjU5M2JmNGFkMDY3ODI3ZTUzYS4uNWI1ZmY3OTc3MzQ3
MTUxOTYxYTQ1YzM0OTdlYTJmNTUxMzQ0YjFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApAQCAtNDQs
NyArNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsK
IGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgU291cE5ldHdvcmtQcm94
eVNldHRpbmdzOwogCiBjbGFzcyBTb3VwTmV0d29ya1Nlc3Npb24gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9VUkxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NvdXAvVVJMU291cC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3
ZGJhMzI4Njk1ZmZjYjI2ZjM4N2I2NzJhYTkzODczNzJiMmU5MWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291
cC9VUkxTb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgVVNFKFNPVVApCi0KLSNp
bmNsdWRlICJVUkwuaCIKLQotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgotI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1VUkw6OlVSTChTb3VwVVJJKiBzb3VwVVJJKQotewotICAgIGlmICghc291cFVS
SSkgewotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBHVW5pcXVlUHRyPGdjaGFyPiB1cmxTdHJpbmcoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkks
IEZBTFNFKSk7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihTdHJpbmc6OmZyb21VVEY4KHVybFN0cmlu
Zy5nZXQoKSkpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotCi0gICAgaWYgKCFpc1Zh
bGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE1vdGl2YXRlZCBieSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg5NTYuIGxpYnNvdXAKLSAgICAvLyBkb2Vz
IG5vdCBhZGQgdGhlIHBhc3N3b3JkIHRvIHRoZSBVUkwgd2hlbiBjYWxsaW5nCi0gICAgLy8gc291
cF91cmlfdG9fc3RyaW5nLCBhbmQgdGh1cyB0aGUgcmVxdWVzdHMgYXJlIG5vdCBwcm9wZXJseQot
ICAgIC8vIGJ1aWx0LiBGaXhpbmcgc291cF91cmlfdG9fc3RyaW5nIGlzIGEgbm8tbm8gYXMgdGhl
IG1haW50YWluZXIgZG9lcwotICAgIC8vIG5vdCB3YW50IHRvIGJyZWFrIGNvbXBhdGliaWxpdHkg
d2l0aCBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbnMKLSAgICBpZiAoc291cFVSSS0+cGFzc3dvcmQp
Ci0gICAgICAgIHNldFBhc3MoU3RyaW5nOjpmcm9tVVRGOChzb3VwVVJJLT5wYXNzd29yZCkpOwot
fQotCi1HVW5pcXVlUHRyPFNvdXBVUkk+IFVSTDo6Y3JlYXRlU291cFVSSSgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJu
IEdVbmlxdWVQdHI8U291cFVSST4oc291cF91cmlfbmV3KHN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
KTsKLX0KLQotYm9vbCBVUkw6Omhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCi17Ci0g
ICAgcmV0dXJuICFob3N0LmlzRW1wdHkoKSAmJiBnX2hvc3RuYW1lX2lzX2lwX2FkZHJlc3MoaG9z
dC51dGY4KCkuZGF0YSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCmluZGV4IDc3YzUy
ODhmZDBjZTA1OTg2NGVmODEyM2UwMDcyYmI3YzM1NzIzZGIuLjdkMDNmODYzZDBkZjQ5ZDJmNzlj
N2MzYTZkMTM4MmNmNDE2ODEwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEVuY29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0RW5jb2RpbmcuaApAQCAtMjUsMTMgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8cGFsL3RleHQvVW5lbmNvZGFibGVIYW5kbGluZy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0RW5jb2RpbmcgOiBwdWJsaWMgVVJMVGV4
dEVuY29kaW5nIHsKK2NsYXNzIFRleHRFbmNvZGluZyA6IHB1YmxpYyBXVEY6OlVSTFRleHRFbmNv
ZGluZyB7CiBwdWJsaWM6CiAgICAgVGV4dEVuY29kaW5nKCkgPSBkZWZhdWx0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFRleHRFbmNvZGluZyhjb25zdCBjaGFyKiBuYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9CU3RyaW5nLmNwcAppbmRleCBiYWUxYmVhYWFhMzdhZGUzMDNiMDhmMzQ4OTQ5
MjQ5MDE4NjQ3OWNhLi4wZjQ2YzVkY2FiMjliN2I0NjNiYjZlY2QzMWIwZWIzYjc1OGMyMjNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCkBAIC0yNiw4ICsyNiw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQlN0cmluZy5oIgogCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5n
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCmluZGV4IDFmYmUwMmMx
NTg3YzEyOWI4ZDUwNTAyZTY0NjA0ZTc4NmNlODJhMmEuLjE4NGI1NTFkNDhlOWMyMzFlYTAyYTc4
NzU2ZmU5NmZlZDNlNTY2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9CU3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuaApA
QCAtNDAsOCArNDAsNiBAQCB0eXBlZGVmIF9OdWxsX3Rlcm1pbmF0ZWRfIHdjaGFyX3QqIEJTVFI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFVSTDsKLQogICAgIGNsYXNzIEJT
dHJpbmcgewogICAgIHB1YmxpYzoKICAgICAgICAgQlN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAppbmRleCA2
ZmY4OWVjMTgwZDU4MzVjNTkxNDBmYzZhMzg3ZjQ3YjEyNWIwYTMyLi43OTBhODJmOGI2NzExMDBh
MTYyZTUzZWQ4OTc5N2NkOTA3OGVmZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAtMjcsMTMgKzI3LDEzIEBA
CiAjaW5jbHVkZSAiQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgiCiAKICNpbmNsdWRlICJEb2N1bWVu
dEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgi
CiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8c2hsb2JqLmg+CiAjaW5jbHVkZSA8c2hs
d2FwaS5oPgogI2luY2x1ZGUgPHdpbmluZXQuaD4gLy8gZm9yIElOVEVSTkVUX01BWF9VUkxfTEVO
R1RICiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTI3Miw3ICsyNzIsNyBAQCB2
b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIHNy
Y1VSTCwgVmVjdG9yPGNoYXI+JiByZQogICAgIGNvbnN0IGNoYXIqIHN0YXJ0TWFya3VwID0gIjxI
VE1MPlxuPEJPRFk+XG48IS0tU3RhcnRGcmFnbWVudC0tPlxuIjsKICAgICBjb25zdCBjaGFyKiBl
bmRNYXJrdXAgPSAiXG48IS0tRW5kRnJhZ21lbnQtLT5cbjwvQk9EWT5cbjwvSFRNTD4iOwogCi0g
ICAgQ1N0cmluZyBzb3VyY2VVUkxVVEY4ID0gc3JjVVJMID09IGJsYW5rVVJMKCkgPyAiIiA6IHNy
Y1VSTC51dGY4KCk7CisgICAgQ1N0cmluZyBzb3VyY2VVUkxVVEY4ID0gc3JjVVJMID09IFdURjo6
YmxhbmtVUkwoKSA/ICIiIDogc3JjVVJMLnV0ZjgoKTsKICAgICBDU3RyaW5nIG1hcmt1cFVURjgg
PSBtYXJrdXAudXRmOCgpOwogCiAgICAgLy8gY2FsY3VsYXRlIG9mZnNldHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaAppbmRleCA1
Y2Q5ZTBlNzU3MzEzZmYwMjI5YTZjZmJhOGVkNjQ5MGE4MWFmZTI4Li5jMzdmM2UyZGUxOTYxZTZh
MTMwNDU0NzdjY2E4NjkyNjRmMDMyNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCkBAIC0zNCw3ICszNCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50
OwotY2xhc3MgVVJMOwogCiBIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgU3RyaW5nJik7
CiBIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgVmVjdG9yPGNoYXI+Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IDFkZmE1MGI1MzJk
ZDhiNWFmNjY2NzVmODQ0OWZlNTQxOTExNzRlZmYuLmE2YjY3MmZjNzI3ZmU4Mzc5YTJkMGY3ZTA0
NjA3MTY5NjBjZmJiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VXaW4uY3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIlN0cmluZ1RydW5jYXRvci5oIgogI2luY2x1ZGUgIlRleHRJbmRpY2F0
b3IuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRleHRSZW5kZXJl
ci5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L3dpbi9HRElPYmplY3QuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwCmluZGV4IDA2OTk3OTkwNjMxZTVjMzQzNjQ3MThhZTZhYjE3NjU5NGNkZjM2
OWQuLmQ1OTY3YTU4MjBjOTdhZTI4YzYyNWE1MGQ4MDM4ZTAwZWUyNWRkMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTQxLDcgKzQxLDYg
QEAKICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKQEAgLTQ5
LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJXZWJDb3Jl
SW5zdGFuY2VIYW5kbGUuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbkRhdGEuaAppbmRleCAwYjZjNDJlZTJkMDgxNjhiZWRlZmM4ZjNkMGY5ZWFlNmUx
YTZiZjU4Li5mMDQwYjBhZjk2ZjNiOGJiZDlmNTQ5MzI5MzEyYjhmNGY3MDY5ZWQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtMjAsMTAgKzIwLDEwIEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCBkMDc3N2IzNDUwYzNhMDIwYWVm
ZDQzYTcyM2NjNmNiMTMzZGVhZTBiLi4zMzJmMjg1MzFkMzg4Y2ZlMmMzZDU4YTk0YzNmMjYxN2Rj
YjkxNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTM4
LDcgKzM4LDYgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIEltYWdlOwogY2xhc3Mg
Tm9kZTsKIGNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIFVSTDsKIAogZW51bSBjbGFzcyBIaXRUZXN0
UHJvZ3Jlc3MgeyBTdG9wLCBDb250aW51ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQXR0YWNobWVudC5jcHAKaW5kZXggZWQzMzM1ZTEzNzRkOGY3MjI5MjUyZDU0Y2Uw
NjdjYzM4NDc2ODFiZC4uNzQ2N2ZmMzg2NTY4MmI4YmU2M2JiNjdkZWJkNzE5YTRjOGI3ZTNjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcApAQCAt
MzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
TG9hZGVyLmNwcAppbmRleCA5OTk5NmUwMWVkMDcxYWY1ODcxYTFkYTE2NmM2MzE0OWExM2I0ZTc0
Li43MjIxZGZjYjdkZGRlNTkwMzkyNzZhZGRjOWYzOWJkYTJkNzg5MDQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBTVkdJbWFnZUxv
YWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogU3RyaW5nIFNWR0ltYWdlTG9hZGVyOjpzb3VyY2VV
UkkoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGUpIGNvbnN0CiB7CiAgICAgVVJMIGJhc2Ug
PSBlbGVtZW50KCkuYmFzZVVSSSgpOwotICAgIGlmIChiYXNlICE9IGJsYW5rVVJMKCkpCisgICAg
aWYgKGJhc2UgIT0gV1RGOjpibGFua1VSTCgpKQogICAgICAgICByZXR1cm4gVVJMKGJhc2UsIHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUpKS5zdHJpbmcoKTsKICAg
ICByZXR1cm4gZWxlbWVudCgpLmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJ
UmVmZXJlbmNlLmNwcAppbmRleCAwODEyNDI4MjFhZWQ4NmY0NWM3NWJjNWRmMjJhMzE2NGJiYTBi
MGVmLi4yMzczY2I0OTc4ZDdkNzcyMmFlMjNiMDg3NDZkZDIyNjE5NDgxYzVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0F0dHJpYnV0
ZU93bmVyUHJveHkuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiWExpbmtOYW1lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDg3ZTI4MjNmOWU3MWI2N2JkNDgxZThlODg0
MTFiYWQwMDEyNjRiOTguLmNkM2ZkMGQxZTI1OWRhYjRlMzNhNjlhYjZhZDE4NDZkOWFlNWUxOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC0yNyw3ICsyNyw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCmluZGV4IDNmNWJjM2E3NTZlNjg3OTFi
YWM4ZDM2ODNiNmMzYzE2NzQ2ZDllNDIuLjMyZTcyMmJmYTI3MzQ1NGM0YjVhMTE0ZWY4MDk2NDM3
NTIzNGY4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUu
aApAQCAtMzMsNyArMzMsNiBAQCBjbGFzcyBMYXlvdXRTaXplOwogY2xhc3MgU1ZHSW1hZ2U7CiBj
bGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIFVS
TDsKIAogY2xhc3MgU1ZHSW1hZ2VDYWNoZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5l
ci5oCmluZGV4IDY5ODA2YmU2NzcwM2UyZTk0OWYzNDFkNWM5ODZhODVlYTJkN2UyNGYuLjRjZmNl
OGQ0YjAzNzg1NzkxNDIyNjdhYTZiODA4NzY3MTI2YjA0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC0zMCw3ICszMCw3
IEBACiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRl
ICJTVkdJbWFnZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggYjExYTMyNTk4YWYyZmRiOGU4MmVmMGM3NGMzYWZlY2NhNzg5N2Q1My4uYmYzMTMzNDY2NGIx
NTEzYzU4ZjQ1OTYwMWZjNjRkODEwYjZmNDM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lz
dGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgICAgICAgICBiYWNraW5nLT5zZXRUaWxlU2l6ZVVw
ZGF0ZURlbGF5RGlzYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsKICAgICB9CiAKLSAgICBXZWJDb3Jl
OjpjbGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7CisgICAgV1RGOjpj
bGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7CiAgICAgb3ZlcnJpZGVV
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKFZlY3RvcjxTdHJpbmc+KCkpOwogICAgIFdlYkNvcmU6OkRl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzKGZhbHNlKTsK
ICAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFVzZXNNb2NrU2Nyb2xs
QW5pbWF0b3IoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMubW0gYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQppbmRleCBlMmY4
OWM1MDYyNWIzODNlMmViYTQ0MDFhNDRmOWMyYWUwOGM4ZjRiLi5iMjQwNGUyNDc4NTMyYmU2MmNi
NDcwZGJjYjAzMjZkYzFjMjRhYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbQpA
QCAtMzIsOCArMzIsOCBAQAogI2ltcG9ydCAiRXZlbnRIYW5kbGVyLmgiCiAjaW1wb3J0ICJIaXRU
ZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJSYW5nZS5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0
cmFzLmgiCiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9O
U1VSTEV4dHJhcy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFNPRlRfTElOS19GUkFN
RVdPUksoVUlLaXQpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3Ry
aW5nIEludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgRE9NVVJMJiB1cmwpCiB7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybC5ocmVmKCkpOworICAgIHJl
dHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybC5ocmVmKCkpOwogfQogCiBib29sIEludGVy
bmFsczo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggNjQ4ZmJkMjZmYWMzNmE2NWM5OTU3
YzUxMTU3ODg3NjQ2ZjJkYzI2Mi4uNTExODFkYWU3MmUxM2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4
YTE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAK
QEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2UKIAogICAgIFVSTCBtb2Rp
ZmllZFJlcXVlc3RVUkwgeyByZXF1ZXN0LnVybCgpLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcg
fTsKICAgICBpZiAoIW1vZGlmaWVkUmVxdWVzdFVSTC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgTE9H
KENvbnRlbnRGaWx0ZXJpbmcsICJNb2NrQ29udGVudEZpbHRlciBmYWlsZWQgdG8gY29udmVydCAl
cyB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVzdFVSTC5zdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTW9ja0NvbnRlbnRG
aWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgJXMgdG8gYSAgVVJMLlxuIiwgbW9kaWZpZWRSZXF1ZXN0
VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAK
aW5kZXggMWE4NDhkODk5YTU4ZWI3MDBlOGI0MDFkY2FjMGZjYjNiMjM0MDc0MC4uZjU2YzQ4NWU0
NDRmODM2MDkyNzI1MTU3NTA2MTA2ZWFmYzA0MjNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0zNCw4ICszNCw4IEBACiAj
aW5jbHVkZSAiTW9ja1BheW1lbnRNZXRob2QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBv
cnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3Bw
CmluZGV4IGQyNDEyMDZhMjhkZDVmNjQ3MGRhOWZiODRlOWVkNGZjNzRjMjg3YjAuLjU4MDlmMGJl
ZGYwZTdhMDcxNzI4ZDA5ZWI5Mjk3NDdjNGI0ZWUwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTM5LDEyICszOSwxMiBAQAog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAj
aW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCmluZGV4IDkwMGMyY2I0MDQ2MmEwZWJl
MzcwMjhhMzc1YTYzM2ZlYWY5NTM0ZjEuLjAzMjFjMmM3ZmVkMjU2NjI4ZmYyNmNlZDkxM2FlYjhh
ZmMzMGUwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3Jr
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKQEAgLTM1
LDggKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGNsYXNz
IEFic3RyYWN0V29ya2VyIDogcHVibGljIFJlZkNvdW50ZWQ8QWJzdHJhY3RXb3JrZXI+LCBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291
bnRlZDo6cmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmlu
ZGV4IDViOWEwYmUzNjljMjk5YzBmYjc1NDEwNzhmYzc2NTZkNmRlNzllYzEuLjI4MmRkMDZiYzMz
OGExZTA2OWE1YmQ0NmQ4NjNmYzMyOWQwYmE0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZUJp
dG1hcC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
dXBwbGVtZW50YWJsZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlICJXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29y
a2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKaW5kZXgg
MzZiZDAwNzA3ZDBhNjhkYjMwNzYyNzJiYTY1ZjMwYTNhOTI3ZjFlNy4uODU4NWE1YmZmOTNiMDQ2
NjVkZTUzMjFlZDMyYjkyZmZhOTc2YTE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKQEAgLTQyLDcgKzQyLDYgQEAgY2xhc3MgU2Vzc2lv
bklEOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnM7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXb3JrZXI7CiAKIC8vIEEgcHJveHkg
dG8gdGFsayB0byB0aGUgd29ya2VyIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckluc3BlY3RvclByb3h5LmgKaW5kZXggZGY0MzcxYWUyM2MzMDMwNmVhN2JmNjQwZDI3
ZjllMTRiOTc1ZTRiMi4uYTFkM2VhNzU3NmU3ZWEzNGE2NGNiOTE1NDdkZTc2YWNmNTE4YmRlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaApAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oCmluZGV4IDUzYzc3NjE1Njc1NWI3MDZiOWQyNDkzNzE2
YTgxMjUyN2ZjYTM1ZjguLjkyY2ZjYzc3MDZmMDM0ZTU3YjlmODJlOWJhMjdiYTNhNTFhMDlmMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmgKQEAgLTI1LDggKzI1LDgg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggZTU3YzMyM2NkZTllNmY0ZjgwYWY5YjI1YjJjZmUx
ZWUyZTczNzRkOS4uMDRhNDFjMjFjYjJmNzUzMWZkZTYxOWU0ZDY3ZGQ1NjQ0OTA1Zjk4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC0zMiwxMSAr
MzIsMTEgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJUaHJlYWRh
YmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcAppbmRleCBmNjA2M2FjNjNhYmIwNjA4MzhkNGNkMDQ5NzQ0NDQ1ZmNhMmE0NDg3Li45Nzk1
NTQzZTFiZmU1ODgwNDlmMzZjMWY5NTcxMmExZjAyYzM2YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1ZGUgIlRocmVh
ZEdsb2JhbERhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5oCmluZGV4IGQ3MTQxMjQ4NWE5NjkwNDlhZGI0OTY1OTc0ZGJlOTFmNWVlMTkxODku
LjNkYzU0ZjZjNDczZGIzNzY3NTI1ZDFjYTQxMDNkNWQ2YTU2Yzk2OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtMzksNyArMzksNiBAQCBjbGFzcyBTZXNzaW9uSUQ7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVyczsKLWNsYXNzIFVSTDsKIGNsYXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaAppbmRleCA5YjliY2M4YTIyZjlkNzY3
MTI5ODk3ZWMwMWYzN2IyYTU1MjFiN2VkLi43YjIzOWYzMDdkYTcxZTE1NmQ4N2JhMjM1M2I1MWIx
YTMzMzVmZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyLmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlckRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAppbmRl
eCAxNDNkN2Q5ZTA0NWQ1NGUxMWE4YzZlZDlhYzE0ZTM3YjE1NmEwNTI5Li5mOTkxZjMyY2U2ZDNh
OWIyNTdhNTYxMmI0NjM2NWE2NzlhZTJkMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtMzAsNyAr
MzAsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
VHlwZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDNiM2E5NjY2MWRhOThiNDli
MmFhNGY2YWE0ZGNmYmQzMzU5ODFkMGIuLjk2OWJkMjBhZDUwZDU5ODc2NmJiMWM0ZWM4ZTE4MDY4
ODI1MWVhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRl
ci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNl
cnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OiIgZm10LCB0aGlzLCAj
I19fVkFfQVJHU19fKQogI2RlZmluZSBDT05UQUlORVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OiIgZm10
LCB0aGlzLCAjI19fVkFfQVJHU19fKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDNiZTk1MDQyNWVh
NzgwY2ZmZDViYmVlNzg1ZmE0NTMyYWY5NGEzZDcuLjRkNjIwODg5ZjkzNGE3ZWZhMjYwYjMyMDli
NGUxNzZiMDJhYjBkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTI5LDExICsyOSwxMSBAQAog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5j
bHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
SGFzaC5oPgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCmluZGV4IDcyOGMzN2Nm
ZTYyYTVmZTU2MGFiNmM0ZWIxODY0ZjA0NDRjZjkzNmUuLmNlMzYxZDNmM2QwZjM4NzNhODZkYzhh
OTM4YmFmMDNmMWQxNjRhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3Jr
ZXJUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKaW5kZXggMDg3MGJiNmVm
NjAyOTg0NWNkNGE5YjZkZTIzMDBhODgzY2FhMWMyMi4uOTNjMmRmNmZmMGQyZjM5OGU4NDEyNjhi
ZTE5NjY0ZjdhOWNlNjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbk9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIK
LSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCmluZGV4IDM4NWE3MDQ3ZmE4Nzk5
OWY2NDM0NjcwMmNjYTA0OGI3Nzk5ZWU4MzMuLmJjMjk3ZGE2NmY1M2Y0YjdiODUxODcwNDU2ZmZi
Y2FiM2RhMGI2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKQEAgLTI5LDcgKzI5
LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCmluZGV4IGM3
Y2I2ZDU2MDBlOTM2OTQ4NjEzOWMzOGI4MjFmMDQ5MTQzMTk5YjUuLmViOWQ3ZmEwMTQ4ZGFlNDEw
ODEwNGI5ZmJjZjQ5ZDdkOTUyMjhjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaApAQCAt
MjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RydWN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXlIYXNoIHsKIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gOiBHZW5lcmljSGFz
aFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiB7CiAgICAgc3Rh
dGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgZW1wdHlWYWx1ZSgpIHsg
cmV0dXJuIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmVtcHR5S2V5KCk7
IH0KIAotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHNsb3Quc2V0U2NvcGUoV2ViQ29yZTo6
VVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3Qp
IHsgc2xvdC5zZXRTY29wZShVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7IH0KICAgICBzdGF0
aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnNjb3BlKCkuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuaAppbmRleCBjY2VjMGRjZWZiODYxOWJkMjU1MmI4M2Y4ZTllNjliNDQ5YmY4YWJhLi4y
N2YxNTRlMWZhNmM5YzFkYTU3OTI1NjQ3YzE4ZDRmNWJjMzliZmYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMzIsMTIgKzMyLDEyIEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIldvcmtlckV2ZW50UXVldWUuaCIKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nv
bnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggYWVhZDFiYzA4ZDlkNDZjMTJjZDM1
Njg0NmQ5NzExMTA3NTAwYTQ4YS4uYjQ4OWRiMzlmZTdhZTdjZWIxN2UyNGRlN2M3YTUyYTlmMDM5
NmY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIK
ICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1
ZGUgPHd0Zi9WYXJpYW50Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKaW5kZXggYWNkNjVlOWM4MGEwNjdm
MjcyYTU4ZTFkOTczNWMxMWZlNjUxMmE5NC4uMWZiNDE1ZTJkMmQwODY1M2VmY2EyNzFiZTljOGYw
ZWFlNDU0ZmYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKaW5kZXggZGUyMmM3OWY4ZThkMGUyYjgx
NzI0ZjY1MTExYTlmMTBhNWQyMDM2OS4uMzIxMGUzMjk5ZTZmY2I4MzJmYzM5YzhlZDZjYThlNjY3
OGJjNmJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nv
b2tpZXMvV2ViQ29va2llTWFuYWdlci5oCkBAIC00MCw3ICs0MCw2IEBACiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwogc3RydWN0IENvb2tpZTsKIH0KIApAQCAtNzgs
OSArNzcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UoUEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgc2V0
Q29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBDYWxsYmFja0lE
KTsKLSAgICB2b2lkIHNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBt
YWluRG9jdW1lbnRVUkwsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2V0Q29va2llcyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25z
dCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRBbGxDb29r
aWVzKFBBTDo6U2Vzc2lvbklELCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldENvb2tpZXMoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIENhbGxiYWNrSUQpOworICAgIHZvaWQg
Z2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgQ2FsbGJhY2tJRCk7CiAKICAg
ICB2b2lkIHBsYXRmb3JtU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0
UG9saWN5KTsKICAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koQ2FsbGJhY2tJRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IGUzZGU5ZDhjZmFiOWZkNWY2
ZmI2OGEyYzA3MTAyNjJhODU1ZGM0NDguLjBiMWZkNTU5ZTBiZWIyNmUwMDM3OTQzNGFkYWU0ZTVj
OWU0N2RhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yOSw5ICsy
OSw5IEBACiAgICAgdm9pZCBEZWxldGVBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIAogICAgIHZvaWQgU2V0Q29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0
IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQot
ICAgIHZvaWQgU2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWlu
RG9jdW1lbnRVUkwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
IGNvb2tpZXMsIFVSTCB1cmwsIFVSTCBtYWluRG9jdW1lbnRVUkwsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIHZvaWQgR2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIHZvaWQgR2V0Q29va2ll
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIHZvaWQgR2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFVSTCB1cmwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHZv
aWQgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6
OkNvb2tpZSBjb29raWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHZvaWQg
RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
YWxsVGltZSB0aW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJD
b2NvYS5tbQppbmRleCBjMmIxNDdjNWY3MjFiOTU0MDc0NWI2NDhkMjBiYmNiNzI4NDcxYWJlLi42
ZTkwMjhkYjVjOTk3YmQyYTMxZmVlMThhMzNjMTI0YjdmZjE0MjlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2Nv
YS5tbQpAQCAtMzQsOCArMzQsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UZXh0RW5jb2RpbmcuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL05TVVJMQ29ubmVjdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRleCBiZGJjOGUxNTI2MDVhZWU3NDcxNWZjMzZm
NDE4MGMzNzBkNTU1YjhlLi5kOGZiZGQxZDM5ZDJlOWFjNTgxYWY3MGQyYmE1ZGZhYjEyMzZmMjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICB2b2lkIHB1Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CisgICAgdm9pZCBwdWJsaXNoUHJvZ3Jlc3MoY29uc3Qg
VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogI2VuZGlmCiAKICAgICBEb3dubG9h
ZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2FkSUQ7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwCmluZGV4IDdkM2ExZDc5ZjZmNzNlZjk2ZWM5Yjk3YTk2OWY5MmViZTRkZDhjMDYu
LjcyY2Q3ZTFmZTcxMjIzZDg5MWQ1MTkzYjdjYWU4ZDlmZjYyNjE4Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxE
b3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhEb3dubG9hZElE
IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnB1
Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgVVJMJiB1
cmwsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7
CiAgICAgaWYgKGF1dG8qIGRvd25sb2FkID0gbV9kb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpKQog
ICAgICAgICBkb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKHVybCwgV1RGTW92ZShzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDgwNzg0MTBkYTMzODgwZGYwYmVh
YzYyYzdlYjUwMjIzNTEwMjY4NDEuLmZiYWQ4ODhlMDc5Y2VhYjZmYTQwMjY5OTNhNGNlMzg0NDk0
ZWQ0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdm9pZCBwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhEb3dubG9hZElELCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CisgICAgdm9pZCBwdWJsaXNoRG93
bmxvYWRQcm9ncmVzcyhEb3dubG9hZElELCBjb25zdCBVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJik7CiAjZW5kaWYKICAgICAKICAgICBEb3dubG9hZCogZG93bmxvYWQoRG93bmxvYWRJ
RCBkb3dubG9hZElEKSB7IHJldHVybiBtX2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5k
aW5nRG93bmxvYWQuY3BwCmluZGV4IGFlYzRkYTIyMzRjODIxZDg4NzdiYzI3ZmE3ODg1ZGUzYTM0
Nzc1NzkuLmEwZjhlNmJmYWJlMjM3YjQyMmFlNTE3YzAyMDQ2ZTZhYjQzMmYyMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGlu
Z0Rvd25sb2FkLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFBlbmRpbmdEb3dubG9hZDo6Y2Fu
Y2VsKCkKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBQZW5kaW5nRG93bmxvYWQ6OnB1
Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbikKK3ZvaWQgUGVuZGluZ0Rvd25sb2FkOjpwdWJsaXNo
UHJvZ3Jlc3MoY29uc3QgVVJMJiB1cmwsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRi
b3hFeHRlbnNpb24pCiB7CiAgICAgQVNTRVJUKCFtX3Byb2dyZXNzVVJMLmlzVmFsaWQoKSk7CiAg
ICAgbV9wcm9ncmVzc1VSTCA9IHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggOTQ0MmVkYmM0MThi
ZmU1YjYwMzdiOTNkNzE2ODQ4ZmMxMGQyNGZkYi4uNTlkMmQwMmM3ZThlZjNlZjdhMDNlMmVkYzI3
ZWM4MmViYzhhNjQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2FuY2VsKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHB1
Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJik7CisgICAgdm9pZCBwdWJsaXNoUHJvZ3Jlc3MoY29uc3QgVVJMJiwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiYpOwogICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPERvd25sb2FkPiYpOwogI2VuZGlmCiAKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBXZWJDb3JlOjpVUkwgbV9wcm9ncmVzc1VSTDsKKyAgICBVUkwg
bV9wcm9ncmVzc1VSTDsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbV9wcm9ncmVzc1Nh
bmRib3hFeHRlbnNpb247CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQppbmRl
eCAyNTE3MTA0MWIyNGM5ODUzZTFkZWE3NTRhYjFiYTJmMjZhYmRkYzQzLi5kMzBlNDc5MmVhMmU5
ZjRhMzY5OGY5N2UxODdlNzc5NmZkMjQ0YTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0K
QEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EZXN0cm95RG93bmxvYWQo
KQogI2VuZGlmCiB9CiAKLXZvaWQgRG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkKK3ZvaWQgRG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyhjb25zdCBVUkwmIHVybCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICNp
ZiBXS19BUElfRU5BQkxFRAogICAgIEFTU0VSVCghbV9wcm9ncmVzcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdp
c3RyeS5jcHAKaW5kZXggYWVlMzlmMDBlZmJhMzMxNGViNmZlOTQ2ZjEwZGZmM2M1MDU1ODU3ZS4u
ZjJjYjQ2N2RjODRlMDdjNDE1ODg5YjE5OGU3ZjZkNzc0ZDI2Yjk1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdAogICAg
IG1hcEl0ZXJhdG9yLT52YWx1ZS5hZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5l
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VS
TCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spCit2b2lkIE5ldHdvcmtCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29u
bmVjdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5
cGFzc0Nvbm5lY3Rpb25DaGVjaykKIHsKICAgICAvLyBUaGUgY29ubmVjdGlvbiBtYXkgbm90IGJl
IHJlZ2lzdGVyZWQgaWYgTmV0d29ya1Byb2Nlc3MgcHJldm91c2x5IGNyYXNoZWQgZm9yIGFueSBy
ZWFzb24uCiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0g
bV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKQEAgLTk3LDcgKzk3LDcgQEAg
dm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJh
Y2tlZChOZXR3b3JrQ29ubmVjdGlvblQKICAgICBtYXBJdGVyYXRvci0+dmFsdWUuYWRkKHVybCk7
CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50
NjRfdCBlbmQpCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNs
aWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQogewog
ICAgIC8vIFRoZSBjb25uZWN0aW9uIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBpZiBOZXR3b3JrUHJv
Y2VzcyBwcmV2b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJlYXNvbi4KICAgICBCbG9iRm9yQ29ubmVj
dGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5k
KGNvbm5lY3Rpb24pOwpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
CiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQogCi12b2lkIE5ldHdvcmtCbG9i
UmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgTmV0d29ya0Jsb2JS
ZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
IGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIFRoZSBjb25uZWN0aW9uIG1h
eSBub3QgYmUgcmVnaXN0ZXJlZCBpZiBOZXR3b3JrUHJvY2VzcyBwcmV2b3VzbHkgY3Jhc2hlZCBm
b3IgYW55IHJlYXNvbi4KICAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRl
cmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pOwpAQCAtMTIyLDcg
KzEyMiw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lCiAgICAgbWFwSXRlcmF0b3ItPnZhbHVl
LnJlbW92ZSh1cmwpOwogfQogCi11aW50NjRfdCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpibG9iU2l6
ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiB1cmwpCit1aW50NjRfdCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpibG9iU2l6ZShOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgaWYgKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5jb250YWlucyhjb25uZWN0aW9uKSB8fCAh
bV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKS0+dmFsdWUuY29udGFpbnModXJs
KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBOZXR3b3JrQmxv
YlJlZ2lzdHJ5Ojpjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlAKICAgICBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvbik7CiB9
CiAKLVZlY3RvcjxSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JSZWdp
c3RyeTo6ZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQorVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYihOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYg
KCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5jb250YWlucygmY29ubmVjdGlvbikgfHwgIW1fYmxvYnNG
b3JDb25uZWN0aW9uLmZpbmQoJmNvbm5lY3Rpb24pLT52YWx1ZS5jb250YWlucyh1cmwpKQogICAg
ICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKaW5kZXggOGJkYWUyMjFkMWUyMGRk
ODY3NDk0YzNmNTM4YjFhODNkYTBiYWQzOC4uNjA2MjVmYTE4MDFjYzQ0YWUzZDQ0MDU4ZDU2ZjEx
NzljYTFjYzI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxl
QVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCkBAIC0yNSwxMCArMjUsMTAgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwpAQCAtNDYsMjUgKzQ2LDI1IEBAIHB1Ymxp
YzoKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CiAgICAgc3RhdGljIE5ldHdvcmtCbG9iUmVn
aXN0cnkmIHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNr
KTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOwotICAgIHZvaWQg
dW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKLSAgICB1aW50NjRfdCBibG9iU2l6ZShOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgcmVnaXN0ZXJGaWxl
QmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJM
LCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayk7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyos
IGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQ
YXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKTsKKyAgICB2b2lkIHVu
cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJM
Jik7CisgICAgdWludDY0X3QgYmxvYlNpemUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
LCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNv
cmU6OlVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25z
dCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIHN1Y2Nlc3MpPiYmKTsKIAogICAgIHZvaWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0Rp
ZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7CiAKLSAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlc0luQmxvYihjb25z
dCBXZWJDb3JlOjpVUkwmKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
Y29uc3QgVVJMJik7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICB+TmV0d29y
a0Jsb2JSZWdpc3RyeSgpOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgSGFzaFNldDxXZWJDb3JlOjpVUkw+PiBCbG9iRm9yQ29ubmVjdGlvbk1h
cDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBI
YXNoU2V0PFVSTD4+IEJsb2JGb3JDb25uZWN0aW9uTWFwOwogICAgIEJsb2JGb3JDb25uZWN0aW9u
TWFwIG1fYmxvYnNGb3JDb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmlu
ZGV4IGJlYzk2Njg1ZTFmYThhM2M5YzBkMDI3NmY3MTlkZWMwYzY5NTgyZTAuLmRmZTQwMGRmZWQy
NmQzNmM5Y2RmOThmMjJjYTNlOWM1MTI0MTRjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTE1MCwzMSArMTUwLDMxIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVMb2FkSWRlbnRp
ZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVk
KHVpbnQ2NF90IHdlYlBhZ2VJRCk7CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291cmNl
TG9hZElkZW50aWZpZXIsIGJvb2wpOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2Vp
dmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RV
UkwpOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElk
ZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnREb3dubG9h
ZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lkIGNvbnZl
cnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFp
blJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIHZv
aWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBTdHJpbmcmIGNvb2tpZVN0
cmluZywgYm9vbCYgc2VjdXJlQ29va2llc0FjY2Vzc2VkKTsKLSAgICB2b2lkIHNldENvb2tpZXNG
cm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYgY29v
a2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQpOworICAgIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29sJiByZXN1bHQp
OwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcywgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wmIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCk7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2b2lk
IGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKTsKLQotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVS
TChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgYm9vbCBz
aG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0
X3QgZW5kKTsKLSAgICB2b2lkIGJsb2JTaXplKGNvbnN0IFdlYkNvcmU6OlVSTCYsIHVpbnQ2NF90
JiByZXN1bHRTaXplKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYpOworICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgU3Ry
aW5nJiBjb29raWVTdHJpbmcsIGJvb2wmIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk7CisgICAgdm9p
ZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKKworICAgIHZvaWQgcmVnaXN0
ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVS
TChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0
aW9uQ2hlY2spOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBh
dGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
Rm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGlu
dDY0X3QgZW5kKTsKKyAgICB2b2lkIGJsb2JTaXplKGNvbnN0IFVSTCYsIHVpbnQ2NF90JiByZXN1
bHRTaXplKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOwogICAgIHZv
aWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAogICAg
IHZvaWQgc3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OkRhdGFLZXkmLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAogICAgIHZvaWQgc2V0Q2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sKTsKIAotICAgIHZvaWQgY3Jl
YXRlU29ja2V0U3RyZWFtKFdlYkNvcmU6OlVSTCYmLCBQQUw6OlNlc3Npb25JRCwgU3RyaW5nIGNh
Y2hlUGFydGl0aW9uLCB1aW50NjRfdCk7CisgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJM
JiYsIFBBTDo6U2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90KTsKICAg
ICB2b2lkIGRlc3Ryb3lTb2NrZXRTdHJlYW0odWludDY0X3QpOwogICAgIAogICAgIHZvaWQgZW5z
dXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNDViMDA3NDI2YTdhNTJmN2MzNjI0ZGY0YmVhZjNh
YjQzYmI1M2RjMS4uOTU5NGVmMjM3NTc2M2JhMDhlM2YyMzNjNjFlYjJiNjlkNTI2OWI1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zNCwyNyArMzQs
MjcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJL
aXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQogICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxv
YWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2Up
CiAKLSAgICBDb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
VVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZv
LCBXZWJDb3JlOjpVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcs
IGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgTGVnYWN5U3luYwotICAgIFNldENvb2tpZXNG
cm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHks
IHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBXZWJDb3JlOjpVUkwg
dXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIFN0cmluZyBjb29raWVTdHJpbmcpCisgICAgQ29va2llc0ZvckRPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcg
Y29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIExlZ2FjeVN5bmMKKyAg
ICBTZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBh
cnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgTGVnYWN5U3luYwotICAgIENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6VVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJ
bmZvLCBXZWJDb3JlOjpVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJp
bmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgTGVnYWN5U3luYwotICAgIEdldFJhd0Nv
b2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwg
c3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6OlVSTCB1
cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIExlZ2FjeVN5
bmMKLSAgICBEZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpV
UkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJv
b2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+
IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIExlZ2Fj
eVN5bmMKKyAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZp
cnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwg
dXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBMZWdhY3lT
eW5jCisgICAgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwg
U3RyaW5nIGNvb2tpZU5hbWUpCiAKLSAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFdlYkNvcmU6OlVS
TCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRl
bnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkwoV2Vi
Q29yZTo6VVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmlu
ZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFdlYkNvcmU6OlVSTCB1
cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNr
KQotICAgIFJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFdlYkNvcmU6OlVSTCB1
cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwsIFN0cmluZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNv
bnRlbnRUeXBlKQotICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFdlYkNvcmU6OlVSTCB1cmws
IFdlYkNvcmU6OlVSTCBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQotICAgIFVu
cmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwpCi0gICAgQmxvYlNpemUoV2ViQ29yZTo6
VVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3VsdFNpemUpIExlZ2FjeVN5bmMKKyAgICBSZWdpc3Rl
ckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdp
c3RlckJsb2JVUkwoVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMs
IFN0cmluZyBjb250ZW50VHlwZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFVSTCB1cmws
IFVSTCBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQorICAgIFJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFVSTCB1cmwsIFVSTCBzcmNVUkwsIFN0cmlu
ZyBmaWxlQmFja2VkUGF0aCwgU3RyaW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKFVSTCB1cmwsIFVSTCBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5k
KQorICAgIFVucmVnaXN0ZXJCbG9iVVJMKFVSTCB1cmwpCisgICAgQmxvYlNpemUoVVJMIHVybCkg
LT4gKHVpbnQ2NF90IHJlc3VsdFNpemUpIExlZ2FjeVN5bmMKICAgICBXcml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+IGZp
bGVOYW1lcykgQXN5bmMKIAogICAgIFN0b3JlRGVyaXZlZERhdGFUb0NhY2hlKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpEYXRhS2V5IGtleSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRh
dGEpCiAKICAgICBTZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKIAotICAgIENyZWF0ZVNvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwgdXJsLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRl
bnRpZmllcikKKyAgICBDcmVhdGVTb2NrZXRTdHJlYW0oVVJMIHVybCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCiAK
ICAgICBFbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCmluZGV4IGNmNGU2NGQ1
MDNmMWE5ZWUwYmRjNWUwZDUyOGM0N2YyOTQyOWE2NDEuLjA1OWExMzAxNDNiYTVmM2E3ZTBkMWVi
MWIxNDY2ZmE5MWZhMGI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVz
cG9uc2VDbwogICAgIGlmIChyZXNwb25zZS5pc0hUVFAwOSgpKSB7CiAgICAgICAgIGF1dG8gdXJs
ID0gcmVzcG9uc2UudXJsKCk7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQg
PSB1cmwucG9ydCgpOwotICAgICAgICBpZiAocG9ydCAmJiAhaXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7CisgICAgICAgIGlmIChwb3J0ICYm
ICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2Nv
bCgpKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25v
cmUpOwogICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ29t
cGxldGVXaXRoRXJyb3IoeyBTdHJpbmcoKSwgMCwgdXJsLCAiQ2FuY2VsbGVkIGxvYWQgZnJvbSAn
IiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQg
aXMgdXNpbmcgSFRUUC8wLjkuIiB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDY1ZWFiYjJiZjNiNTlkMmZkNDdh
YTQxMjY1ZGZmNjk5NDhiMzgwZGIuLmQ3M2E2ZWE2ZmYxMmMzMDRiZmE3NGJhYjk1YmU2YWVlZTY2
Yjg5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmNwcApAQCAtNDgsOSArNDgsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRDaGVja2VyLmgKaW5kZXggOWViYWM4ZjUzOTVmNDJmM2FlNzgxYjdmNTA0YTYyOGU1MWY3YWI4
ZS4uNmJkZTE3Y2NkNjViMWNhZjNiZGE2OTM0YTI4Yzk3NzNjMDkyN2IwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC00Nyw3
ICs0Nyw3IEBAIGNsYXNzIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjsKIAogY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tl
cj4gewogcHVibGljOgotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlv
bnMmJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
V2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBXZWJDb3JlOjpVUkwmJiwgUmVmUHRyPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJl
ZmVycmVyLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNl
KTsKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkhU
VFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwg
V2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBzaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSk7CiAgICAgfk5ldHdvcmtMb2Fk
Q2hlY2tlcigpOwogCiAgICAgdXNpbmcgUmVxdWVzdE9yRXJyb3IgPSBFeHBlY3RlZDxXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+OwpAQCAtNjksMTQgKzY5
LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYmIGhlYWRlcnMpIHsgbV9jc3BS
ZXNwb25zZUhlYWRlcnMgPSBXVEZNb3ZlKGhlYWRlcnMpOyB9CiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKLSAgICB2b2lkIHNldENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKFdlYkNv
cmU6OlVSTCYmIG1haW5Eb2N1bWVudFVSTCwgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQorICAgIHZvaWQgc2V0Q29udGVudEV4dGVuc2lv
bkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBtX21h
aW5Eb2N1bWVudFVSTCA9IFdURk1vdmUobWFpbkRvY3VtZW50VVJMKTsKICAgICAgICAgbV91c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICB9CiAjZW5kaWYK
IAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
KyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3koKSBjb25z
dCB7IHJldHVybiBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5OyB9CiAKICAgICBXZWJDb3JlOjpO
ZXR3b3JrTG9hZEluZm9ybWF0aW9uIHRha2VOZXR3b3JrTG9hZEluZm9ybWF0aW9uKCkgeyByZXR1
cm4gV1RGTW92ZShtX2xvYWRJbmZvcm1hdGlvbik7IH0KQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgY29udGludWVDaGVja2luZ1JlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFZhbGlkYXRpb25IYW5kbGVyJiYpOwogCi0gICAgYm9vbCBkb2VzTm90TmVlZENP
UlNDaGVjayhjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKKyAgICBib29sIGRvZXNOb3ROZWVk
Q09SU0NoZWNrKGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIHZvaWQgY2hlY2tDT1JTUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CiAgICAgdm9p
ZCBjaGVja0NPUlNSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
VmFsaWRhdGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZs
aWdodChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhhbmRsZXImJik7CkBA
IC0xMTgsMTEgKzExOCwxMSBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fZnJhbWVJRDsKICAg
ICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIG1fb3JpZ2luYWxSZXF1ZXN0SGVhZGVyczsgLy8gTmVl
ZGVkIGZvciBDT1JTIGNoZWNrcy4KICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIG1fZmlyc3RS
ZXF1ZXN0SGVhZGVyczsgLy8gTmVlZGVkIGZvciBDT1JTIGNoZWNrcy4KLSAgICBXZWJDb3JlOjpV
UkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4gbV9vcmlnaW47CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IG1fY3NwUmVzcG9uc2VIZWFkZXJzOwogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgV2ViQ29yZTo6VVJMIG1fbWFpbkRvY3VtZW50VVJM
OworICAgIFVSTCBtX21haW5Eb2N1bWVudFVSTDsKICAgICBzdGQ6Om9wdGlvbmFsPFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cjsKICNlbmRpZgogCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNT
aW1wbGVSZXF1ZXN0IHsgdHJ1ZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIHNpemVfdCBt
X3JlZGlyZWN0Q291bnQgeyAwIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fcHJldmlvdXNVUkw7Cisg
ICAgVVJMIG1fcHJldmlvdXNVUkw7CiAgICAgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5IG1fcHJl
ZmxpZ2h0UG9saWN5OwogICAgIFN0cmluZyBtX2RudEhlYWRlclZhbHVlOwogICAgIFN0cmluZyBt
X3JlZmVycmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAppbmRleCBhOTk2ODA5YjA2MzFkMjViOWJlZDQ5MzJiNTMxN2RjNWQ0ZDBjNjk3Li5h
YmQ0Nzg4MThhZGE1NDNmZGI1MDM5ZjhhMDM4ZmI3ZjRmNTc1OTg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNzYsMTMgKzc2LDEz
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFj
a0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAj
ZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiBoYW5kbGVGb3JXcml0aW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d3JpdGVCbG9iVG9G
aWxlUGF0aChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJiBoYW5kbGVGb3JXcml0aW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoaGFuZGxlRm9yV3JpdGluZykpOwogICAgIGlmICgh
ZXh0ZW5zaW9uKSB7CkBAIC04MTYsNyArODE2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2Fu
Y2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQogfQogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhEb3dubG9h
ZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
cHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBVUkwm
IHVybCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkK
IHsKICAgICBkb3dubG9hZE1hbmFnZXIoKS5wdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhkb3dubG9h
ZElELCB1cmwsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogfQpAQCAtMTAzNSw3
ICsxMDM1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVy
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF8KICAgICAgICAgY2FsbGJhY2soU3Ry
aW5nIHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0sIHF1b3RhKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCiB7CiAjaWYgRU5BQkxF
KFNFUlZFUl9QUkVDT05ORUNUKQogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4
IDVkNzk5YjQzMDQ5NTUzYjlkZTM4MDU3MGVkMTU2NWMyM2ZhYjBlOTUuLmU2Nzc4NWM4ZGNlYmVh
MTc3OTZhN2JmMGM0NDBmZGNjMDg3ZGRlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTY2LDcgKzY2LDYgQEAgY2xhc3MgUHJvdGVjdGlv
blNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiBlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IDogYm9vbDsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIHN0cnVjdCBTZWN1
cml0eU9yaWdpbkRhdGE7CkBAIC0xNzIsNyArMTcxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENh
Y2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJiwgdWludDY0X3QgcXVvdGEpPjsKICAgICB2b2lkIGNhY2hlU3RvcmFnZVBhcmFt
ZXRlcnMoUEFMOjpTZXNzaW9uSUQsIENhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFjayYmKTsK
IAotICAgIHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhjb25zdCBVUkwm
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICAgICB2b2lkIHNldFNlc3Np
b25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJv
b2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7
CkBAIC0yNzUsNyArMjc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwog
ICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgdm9pZCBwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhEb3dubG9hZElELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CisgICAgdm9pZCBwdWJsaXNo
RG93bmxvYWRQcm9ncmVzcyhEb3dubG9hZElELCBjb25zdCBVUkwmLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJik7CiAjZW5kaWYKICAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERv
d25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIGNvbnRpbnVl
RGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwgU3RyaW5nIGRlc3Rp
bmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7
CkBAIC0yOTAsNyArMjg5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN5bmNBbGxDb29raWVzKCk7
CiAgICAgdm9pZCBkaWRTeW5jQWxsQ29va2llcygpOwogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0Zp
bGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKIAogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0SWdub3JlVExTRXJyb3JzKGJvb2wp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggZjFlMDQzN2RmZjZjYWFlMTUxOTY5MDAzM2M4YTg4NTRkOWJl
M2UzYy4uNTA3OTVhMjgyMjc5YjEzNjcxNjAwOTFiMjhhZDljNzFiMDNkNWZlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC01MCw3ICs1MCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBSZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1l
RGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCiAgICAgQ2FuY2VsRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElE
IGRvd25sb2FkSUQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUHVibGlzaERvd25sb2FkUHJv
Z3Jlc3MoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCisg
ICAgUHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IFVSTCB1cmwsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpCiAjZW5kaWYKIAogICAgIENvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkK
QEAgLTgwLDkgKzgwLDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIENhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIFByb2Nlc3NEaWRSZXN1bWUo
KQogCi0gICAgV3JpdGVCbG9iVG9GaWxlUGF0aChXZWJDb3JlOjpVUkwgYmxvYlVSTCwgU3RyaW5n
IHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZSkgLT4gKGJvb2wg
c3VjY2VzcykgQXN5bmMKKyAgICBXcml0ZUJsb2JUb0ZpbGVQYXRoKFVSTCBibG9iVVJMLCBTdHJp
bmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlKSAtPiAoYm9v
bCBzdWNjZXNzKSBBc3luYwogCi0gICAgUHJlY29ubmVjdFRvKFdlYkNvcmU6OlVSTCB1cmwsIGVu
dW06Ym9vbCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSk7CisgICAgUHJlY29ubmVjdFRvKFVSTCB1cmwsIGVudW06Ym9vbCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJp
bmc+IGRvbWFpbnNUb0Jsb2NrLCB1aW50NjRfdCBjb250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmgKaW5kZXggZDYzNzM4YWVlYzhhMzUzNWQwOTYxMDM2OWU3ODY0OTFiMWU5ZDJmOS4uMjc0
M2UxMjljODc5ZjZiMGMyNWMyMTFiYTAwODkzOTc4YTNhMGJjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4+IGZyYW1lQW5jZXN0b3JPcmlnaW5zOwogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMOwor
ICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2Vu
ZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJiMWZiNmJhMjkxNGE2MzhiODQ4MjVmNmY1N2FlZWNk
NTFlOTZmMGMuLjgyYTg1NTAxZDJjNWM2N2Y5NWUxMzQxY2ViNzE5MDdlZGViNDJmMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTEwMTMsNyArMTAxMyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpsb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0CiAgICAgbG9nQ29va2llSW5mb3JtYXRpb24o
Ik5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRo
aXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVlc3QoKSksIG9y
aWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwg
ZnJhbWVJRCgpLCBwYWdlSUQoKSwgaWRlbnRpZmllcigpKTsKIH0KIAotc3RhdGljIHZvaWQgbG9n
QmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQq
IGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50
aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
aWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRM
b2dDb29raWVJbmZvcm1hdGlvbihuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsK
IApAQCAtMTA0MCw3ICsxMDQwLDcgQEAgc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9y
bWF0aW9uKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE8KICN1bmRlZiBM
T0NBTF9MT0dfSUZfQUxMT1dFRAogfQogCi1zdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlv
bkludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwg
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Np
b24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIp
CitzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hv
dWxkTG9nQ29va2llSW5mb3JtYXRpb24obmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgp
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCmluZGV4IDJlMmRkZDNjZmI0NzkwMTVhZWE5YmE2Y2FlMGZmMmFiMmJhMWNj
NzkuLmMyZDVkNzc2YjczZmZiNzYwMWRmZTU4ZmYxNjQ5MzQ4Y2ZlOGE4NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApA
QCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRpYyBib29sIHNob3Vs
ZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGlj
IHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgbG9n
Q29va2llSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2Vk
T2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRl
bnRpZmllcik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZUVudHJ5KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4m
Jik7CiAgICAgdm9pZCBjb250aW51ZVByb2Nlc3NpbmdDYWNoZWRFbnRyeUFmdGVyRGlkUmVjZWl2
ZVJlc3BvbnNlKHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5Pik7CiAKLSAgICBi
b29sIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFt
ZU9wdGlvbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAgICAgYm9vbCBzaG91bGRJbnRl
cnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvbnMoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgZW51bSBjbGFzcyBGaXJzdExvYWQgeyBObywg
WWVzIH07CkBAIC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudAogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsb25nKSBmaW5hbDsKLSAg
ICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQoV2ViQ29yZTo6VVJMJiYsIFJlZjxXZWJDb3Jl
OjpGb3JtRGF0YT4mJikgZmluYWw7CisgICAgdm9pZCBzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KFVS
TCYmLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAgIHZvaWQgZW5xdWV1ZVNl
Y3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRp
b25FdmVudDo6SW5pdCYmKSBmaW5hbDsKIAogICAgIHZvaWQgbG9nU2xvd0NhY2hlUmV0cmlldmVJ
Zk5lZWRlZChjb25zdCBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpSZXRyaWV2ZUluZm8mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3Bw
CmluZGV4IDQyZDM2YmM0Y2MzZmU0MzJmMzUyNGM4M2IwYzlmODg0ZThkNzQ0M2MuLmM1YTYyYzY4
ZmU5ZGE2NTZlNDIzM2ZiZDEzNjlhMmM2NjFlMjlhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcApAQCAtMzUsNyArMzUs
NyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVm
PE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShXZWJDb3Jl
OjpVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVk
ZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKK1JlZjxO
ZXR3b3JrU29ja2V0U3RyZWFtPiBOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUoVVJMJiYgdXJs
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRp
dGlvbiwgdWludDY0X3QgaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBT
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTmV0d29ya1NvY2tldFN0cmVhbShXVEZNb3ZlKHVybCksIHNlc3Npb25JRCwg
Y3JlZGVudGlhbFBhcnRpdGlvbiwgaWRlbnRpZmllciwgY29ubmVjdGlvbiwgV1RGTW92ZShhdWRp
dERhdGEpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldFN0cmVhbS5oCmluZGV4IDkwNmU1OGViZjU3NDI1ZDY4Mzc3MDg5MTY4NWZkYWJkMmE4
MzdiYzguLjMyNjg3MTZmNDQ2OWMwOTkzZjI1OTdkMDljYmUxNTg4ZTZmMjNhNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCkBA
IC0zOSwxNCArMzksMTMgQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDsKLWNsYXNzIFVSTDsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW0gOiBwdWJsaWMgUmVm
Q291bnRlZDxOZXR3b3JrU29ja2V0U3RyZWFtPiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtTb2NrZXRTdHJl
YW0+IGNyZWF0ZShXZWJDb3JlOjpVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
Y3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6
OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtT
b2NrZXRTdHJlYW0+IGNyZWF0ZShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
Y3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6
OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKICAgICB+TmV0d29ya1NvY2tldFN0cmVh
bSgpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKQEAgLTY3LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBJUEM6OkNvbm5lY3Rp
b24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbDsKIAotICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0o
V2ViQ29yZTo6VVJMJiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQ
YXJ0aXRpb24sIHVpbnQ2NF90LCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTb3VyY2VBcHBs
aWNhdGlvbkF1ZGl0VG9rZW4mJik7CisgICAgTmV0d29ya1NvY2tldFN0cmVhbShVUkwmJiwgUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3Qs
IElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYm
KTsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBJUEM6OkNvbm5lY3Rpb24mIG1f
Y29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAppbmRleCA5
ZjBjNmI4NmI0MjBmNDU1YmZmYzJkZTZiOTRlYmU3YzhiZTE0M2EwLi5kNDU0M2YyMzViOTA0N2M1
NzA5YzgxZmZkYTM4NjFjNTlmNzg0MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5oCkBAIC0zNiw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
b250ZW50U2VjdXJpdHlQb2xpY3k7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwotY2xhc3MgVVJMOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUxLDcgKzUwLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICB+UGluZ0xvYWQoKTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgY3VycmVudFVS
TCgpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgY3VycmVudFVSTCgpIGNvbnN0OwogICAgIFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3Q7
CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5k
ZXggMmNhNjYyNWQxYzAwZTZkMjdkNTI1ODg2MTcyMWZjYzUwYjUzNGI1NS4uOWQxNzAzNzg5NGY1
YjUxMTAzOGRlMDZiYWQwOWRkN2Y2MzRjN2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uaApAQCAtOTAsOCArOTAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRGZXRj
aChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0
Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJyZXIp
OwogICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIG1hdGNo
UmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGNsaWVudFVSTCk7Ci0gICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90
IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7
CisgICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9y
aWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpOworICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyh1
aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpOwog
CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYm
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyPiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDhhY2Y3OTc5
NGJjY2VjODlkY2E4ODkwZmE2NjAyMzhkZWIyYzIwNTkuLmQ1MzNjMzVjOWI3ZWI0MmM4ODZjZDFj
YTk3OGFjODc1NjhkOWVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsOSArMzYsOSBAQCBtZXNzYWdlcyAtPiBXZWJTV1Nl
cnZlckNvbm5lY3Rpb24gewogCiAgICAgRGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoV2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBrZXkpCiAKLSAgICBNYXRjaFJlZ2lz
dHJhdGlvbih1aW50NjRfdCBzZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmll
ciwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFdlYkNvcmU6
OlVSTCBjbGllbnRVUkwpCi0gICAgV2hlblJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNlcnZp
Y2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKLSAgICBH
ZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJ
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwg
V2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKKyAgICBNYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBz
ZXJ2aWNlUmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIFVSTCBjbGllbnRVUkwpCisgICAgV2hlblJl
Z2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJ
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwg
VVJMIGNsaWVudFVSTCkKKyAgICBHZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHNlcnZpY2VSZWdp
c3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIHRvcE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKICAgICBSZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4s
IHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBjb250cm9s
bGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogICAgIFVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciBpZGVudGlmaWVyKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBkODZhYjYwOTM5Nzc2
NWM1YmJmYTc5MzU0YTExNWI3Yzc0OTFkMjdlLi42MTE2OTJkMTk0OTk3MmZlYjFlM2NlODViODhi
ODU4NTU5ZmU2NGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKICAgICBGaW5kQ2xpZW50QnlJ
ZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpOwogICAgIE1hdGNo
QWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbSh1aW50
NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgU2V0U2NyaXB0UmVzb3VyY2UoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6VVJMIHNj
cmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgV2ViQ29yZTo6VVJMIHJlc3BvbnNlVVJMLCBTdHJpbmcg
bWltZVR5cGUpOworICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVSTCBy
ZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVUeXBlKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCBmNWQxMzYyNjQ2YjFlZWFkMGI1M2M5
NDYzNTZlOTYxOTQ4NThhOTBjLi4yYjllNTQzYjk0NjE1NTRiNDNjZmFhYmJjNzhjNzA3YmNlMmI2
NTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBFbmdpbmU6
OnJldHJpZXZlQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYgb3IKIH0KIAogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwm
JiB1cmwsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCwgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OlJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGZyb20oc2Vzc2lvbklE
LCBbY2FjaGVJZGVudGlmaWVyLCB1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAgICAgIGVuZ2luZS5yZXRy
aWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHVybCksIFdURk1vdmUoY2FsbGJh
Y2spKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZQogICAgIH0p
OwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgV2ViQ29yZTo6VVJMJiYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3Zv
aWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwm
JiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNoZShjYWNo
ZUlkZW50aWZpZXIsIFt1cmwgPSBXVEZNb3ZlKHVybCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKENhY2hlT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVz
dWx0Lmhhc192YWx1ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA4YzJlOGNjZTE0ZDgxMjkwOTdm
NzFhYzIxZTI2ZTM2MWZkNmQ2ODMzLi43ZTE0MjI1YmVlNTBhOTc3YjVmYzkyNTE0NjU0NjdiYjM0
ZDgzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIHJlbW92ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CiAg
ICAgc3RhdGljIHZvaWQgcmV0cmlldmVDYWNoZXMoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYmLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwogCi0gICAgc3RhdGljIHZvaWQgcmV0cmlldmVS
ZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOworICAg
IHN0YXRpYyB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxs
YmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCBwdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVj
b3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFj
ayYmKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9u
SUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpS
ZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYm
KTsKICAgICBTdHJpbmcgcmVwcmVzZW50YXRpb24oKTsKIAotICAgIHZvaWQgcmV0cmlldmVSZWNv
cmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZXRyaWV2ZVJlY29y
ZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICB2b2lkIHB1dFJlY29yZHModWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiwg
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAg
ICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwg
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuaAppbmRleCA3ZmI2ZTA4MThlYzI0MTU5NWY4MmM2NzcyYzg0
YjVlMzIwY2Y3NjE1Li44OTgwMThlNGVhMzdmYjEyZmI2MzJiMTkyZmU4YWVhMWM3MTQ2NTc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBSZWNvcmRJ
bmZvcm1hdGlvbiB7CiAKICAgICB1aW50NjRfdCBzaXplIHsgMCB9OwogCi0gICAgV2ViQ29yZTo6
VVJMIHVybDsKKyAgICBVUkwgdXJsOwogICAgIGJvb2wgaGFzVmFyeVN0YXIgeyBmYWxzZSB9Owog
ICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHZhcnlIZWFkZXJzOwogfTsKQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgdW5pcXVlTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5pcXVlTmFtZTsgfQogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlICE9IFN0YXRlOjpVbmluaXRpYWxpemVkOyB9CiAKLSAgICB2b2lkIHJldHJpZXZlUmVj
b3Jkcyhjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
c0NhbGxiYWNrJiYpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKGNvbnN0IFVSTCYsIFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CiAgICAgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkNhY2hlSW5mbyBpbmZvKCkgY29uc3QgeyByZXR1cm4geyBtX2lkZW50aWZp
ZXIsIG1fbmFtZSB9OyB9CiAKICAgICB2b2lkIHB1dChWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZp
ZXJzQ2FsbGJhY2smJik7CkBAIC05NCw4ICs5NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxEZWNvZGVkUmVjb3JkPiBkZWNvZGVSZWNvcmRIZWFkZXIoY29uc3QgTmV0d29y
a0NhY2hlOjpTdG9yYWdlOjpSZWNvcmQmKTsKIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8UmVjb3Jk
SW5mb3JtYXRpb24+KiByZWNvcmRzRnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBj
b25zdCBWZWN0b3I8UmVjb3JkSW5mb3JtYXRpb24+KiByZWNvcmRzRnJvbVVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKSBjb25zdDsKKyAgICBWZWN0b3I8UmVjb3JkSW5mb3JtYXRpb24+KiByZWNvcmRz
RnJvbVVSTChjb25zdCBVUkwmKTsKKyAgICBjb25zdCBWZWN0b3I8UmVjb3JkSW5mb3JtYXRpb24+
KiByZWNvcmRzRnJvbVVSTChjb25zdCBVUkwmKSBjb25zdDsKICAgICBSZWNvcmRJbmZvcm1hdGlv
biYgYWRkUmVjb3JkKFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qLCBjb25zdCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3JkJik7CiAKICAgICB2b2lkIHN0b3JlUmVjb3JkcyhWZWN0b3I8
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmNwcAppbmRleCA1ZjZlYWM4YTFhZTFkN2U4ZWY1OTg2YjdmN2ExYjQ1MTVhNWQw
ODNkLi4zZTMyNTE3ZTk0YmRmY2YzYmVkYjIxMDNhMTJlOGU0Yzg2YzRjNWRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCByZXEKICAgICB9KTsKIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpV
UkwmJiB1cmwpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVj
b3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCkKIHsKICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJyZXRyaWV2ZVJlY29yZHMgKCUiIFBSSXU2NCAiKSBpbiBjYWNoZSAlIiBQ
Ukl1NjQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIpOwogICAgIEVuZ2luZTo6
cmV0cmlldmVSZWNvcmRzKHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHVybCks
IFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lv
bklELCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jkc09yRXJyb3ImJiByZXN1bHQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgKaW5kZXggYmM4ODBmNWViNTg5YWVkY2ZlZTQ1YTIz
NDE4MzhiMjUzZGJhNjEwNC4uNmEzZGRjNjNkMmEwODg1Y2E0YzUxNDI1ZTU2YzNhNWNjOTY4M2E1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVtb3Zl
UmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBj
YWNoZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJldHJpZXZlQ2FjaGVzSWRlbnRpZmllciwg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpOwogCi0gICAg
dm9pZCByZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmKTsKKyAgICB2
b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMJiYpOwogICAgIHZvaWQgZGVsZXRl
TWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJik7CiAgICAgdm9pZCBwdXRSZWNvcmRzKFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBl
MzEwN2UyMDE0NmQ1OTAwM2IyMDZiMWRlZGY2Zjg2M2NiOGM1NWVlLi42MGUzOWFhMmM0MDVkY2M5
OGFhYTkyMDA5NGFlMTBkOGVhYjU0M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMSw3ICszMSw3IEBAIG1lc3NhZ2VzIC0+IENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24gewogICAgIENsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
c3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pOwogICAgIEVuZ2luZVJlcHJlc2Vu
dGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIpOwogCi0gICAgUmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29y
ZTo6VVJMIHVybCk7CisgICAgUmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
VVJMIHVybCk7CiAgICAgRGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpDYWNo
ZVF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBQdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IHJlY29yZCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aAppbmRleCBiNjZlMzJkMjkwZmU0NDU5ZjMzMDE3ZTc5NzBhMzI1ZjdjZWJmM2U4Li5jMmQwZTk2
NGVmZmRmY2VkMjY4NjU5NDg1Yzc1MWQ1MzhkYjY2NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTM4LDcgKzM4LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTG93UG93ZXJNb2RlTm90aWZpZXI7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKaW5kZXggYTM3ODBjNTVi
YzY0MzU3N2I0ZDA3ODAxZTE0YzUxZTFkMDBhZTQ5NC4uMTY1NzliYTgyMDllYjY1ODU3OGNjMmM0
MzE0MWM5MzUwYzg1NmRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCkBAIC0yOTIsNyAr
MjkyLDcgQEAgc3RhdGljIFN0cmluZyBjYWNoZWRFbnRyeVJldXNlRmFpbHVyZVRvRGlhZ25vc3Rp
Y0tleShVc2VEZWNpc2lvbiBkZWNpc2lvbikKIAogdm9pZCBTdGF0aXN0aWNzOjpyZWNvcmRSZXRy
aWV2ZWRDYWNoZWRFbnRyeSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEtleSYga2V5LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFVzZURlY2lzaW9uIGRlY2lzaW9u
KQogewotICAgIFdlYkNvcmU6OlVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKKyAgICBV
UkwgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7CiAgICAgaWYgKGRlY2lzaW9uID09IFVzZURl
Y2lzaW9uOjpVc2UpIHsKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vz
cykgd2ViUGFnZUlEICUiIFBSSXU2NCAiOiAlcyBpcyBpbiB0aGUgY2FjaGUgYW5kIGlzIHVzZWQi
LCB3ZWJQYWdlSUQsIHJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAg
ICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVz
dWx0KHdlYlBhZ2VJRCwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpuZXR3b3JrQ2Fj
aGVLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXRyaWV2YWxLZXkoKSwg
V2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRQYXNzLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGU6Olllcyk7CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBTdGF0aXN0aWNzOjpyZWNvcmRSZXRy
aWV2ZWRDYWNoZWRFbnRyeSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEtleSYga2V5LAogCiB2
b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldmFsaWRhdGlvblN1Y2Nlc3ModWludDY0X3Qgd2ViUGFn
ZUlELCBjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIFdlYkNvcmU6OlVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKKyAg
ICBVUkwgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7CiAgICAgTE9HKE5ldHdvcmtDYWNoZSwg
IihOZXR3b3JrUHJvY2Vzcykgd2ViUGFnZUlEICUiIFBSSXU2NCAiOiAlcyB3YXMgc3VjY2Vzc2Z1
bGx5IHJldmFsaWRhdGVkIiwgd2ViUGFnZUlELCByZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCku
ZGF0YSgpKTsKIAogICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5sb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQod2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6Om5ldHdvcmtDYWNoZUtleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJl
dmFsaWRhdGluZ0tleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZTo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50
cnkuaAppbmRleCBlZjI1MmExYzdiOWM2YmQ1NjgwOTczMGMyZDA0OTMzNTMxZjA0YzliLi40Mzky
MWEwMDI0ZTk3ZGQzNmYwZDIyMTg1MWVjNGFlOTg3NjFhMTcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dWJyZXNvdXJjZXNFbnRyeS5oCkBAIC0yMywxNSArMjMsMTQgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE5ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5X2gKLSNkZWZpbmUgTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnlfaAorI3ByYWdt
YSBvbmNlCiAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJ
T04pCiAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewpAQCAtNTAsNyArNDksNyBAQCBwdWJsaWM6CiAg
ICAgV2FsbFRpbWUgZmlyc3RTZWVuKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFNlZW47IH0KIAog
ICAgIGJvb2wgaXNUcmFuc2llbnQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhbnNpZW50OyB9Ci0g
ICAgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0IHsgQVNT
RVJUKCFtX2lzVHJhbnNpZW50KTsgcmV0dXJuIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7IH0KKyAg
ICBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QgeyBBU1NFUlQoIW1faXNU
cmFuc2llbnQpOyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQogICAgIGNvbnN0IFdl
YkNvcmU6OkhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyBBU1NFUlQoIW1f
aXNUcmFuc2llbnQpOyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVyczsgfQogICAgIFdlYkNvcmU6OlJl
c291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KCkgY29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2ll
bnQpOyByZXR1cm4gbV9wcmlvcml0eTsgfQogCkBAIC02NSw3ICs2NCw3IEBAIHByaXZhdGU6CiAg
ICAgV2FsbFRpbWUgbV9maXJzdFNlZW47CiAgICAgYm9vbCBtX2lzVHJhbnNpZW50IHsgZmFsc2Ug
fTsKICAgICBib29sIG1faXNTYW1lU2l0ZSB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6VVJMIG1f
Zmlyc3RQYXJ0eUZvckNvb2tpZXM7CisgICAgVVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAg
ICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX3JlcXVlc3RIZWFkZXJzOwogICAgIFdlYkNvcmU6
OlJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7CiB9OwpAQCAtMTA3LDQgKzEwNiwzIEBA
IHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUKIAogI2VuZGlmIC8vIEVOQUJM
RShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKLSNlbmRpZiAvLyBOZXR3
b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHAKaW5kZXgg
OTY2MTY4YjRlMDc4MTI0OGU1NTY4MWZmNGI3NzdlNmUxNjAzMDk0NS4uYjFjMGZiMTExYmQ1YmQ2
MTE0ODk5OGI0Yjk3YTdmMGYzZTNjYTE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcApAQCAt
MzYsOSArMzYsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlc3BvbnNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9CcmlnYW5kLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTgxLDggKzgxLDcgQEAgUmVxdWVzdDo6UmVxdWVzdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAKIFJlcXVlc3Q6Om9wZXJhdG9yIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCgpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNl
cih1cmwpOwotICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHBhcnNlci5yZXN1
bHQoKSwgcmVmZXJyZXIsIHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdENhY2hl
UG9saWN5Pihwb2xpY3kpKTsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChV
UkwoeyB9LCB1cmwpLCByZWZlcnJlciwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3k+KHBvbGljeSkpOwogICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChtZXRo
b2QpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiBoZWFkZXJzKQpAQCAtMTE4LDgg
KzExNyw3IEBAIFJlc3BvbnNlOjpSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIAogUmVzcG9uc2U6Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UoKSBjb25zdAogewotICAgIFdlYkNvcmU6OlVSTFBhcnNlciBwYXJzZXIodXJsKTsKLSAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHBhcnNlci5yZXN1bHQoKSwgbWlt
ZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKFVSTCh7IH0sIHVybCksIG1pbWVUeXBlLCBleHBlY3Rl
ZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgcmVzcG9uc2Uuc2V0SFRUUFZlcnNpb24o
dmVyc2lvbik7CiAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzKTsKICAgICBy
ZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChyZWFzb24pOwpAQCAtMTUyLDggKzE1MCw3IEBAIEVy
cm9yOjpFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogRXJyb3I6
Om9wZXJhdG9yIFdlYkNvcmU6OlJlc291cmNlRXJyb3IoKSBjb25zdAogewotICAgIFdlYkNvcmU6
OlVSTFBhcnNlciBwYXJzZXIoZmFpbGluZ1VSTCk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvcihkb21haW4sIGVycm9yQ29kZSwgcGFyc2VyLnJlc3VsdCgpLCBsb2NhbGl6ZWREZXNj
cmlwdGlvbiwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZT4odHlwZSkp
OworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IoZG9tYWluLCBlcnJvckNvZGUsIFVS
TCh7IH0sIGZhaWxpbmdVUkwpLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZT4odHlwZSkpOwogCiAgICAgcmV0dXJuIGVycm9yOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1
cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCAyNzY4OWVlM2I3MjM5OGQ4NTEyMGY3
MzYzNTdjMDA3MjQyMjg5ZThlLi5kNTY1YTRlYTM3NzFlNDYzNzk3M2Y3MTljYTE5OGEyOGM1NTdl
MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0
d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcApAQCAtMzEsMTIgKzMxLDEyIEBACiAj
aW5jbHVkZSAiTmV0d29ya0NhcHR1cmVMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhcHR1
cmVSZXNvdXJjZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8aXRl
cmF0b3I+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NRDUuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
CkBAIC0xNDYsNyArMTQ2LDcgQEAgUmVzb3VyY2UqIE1hbmFnZXI6OmZpbmRCZXN0RnV6enlNYXRj
aChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAKICAgICBSZXNvdXJj
ZSogYmVzdE1hdGNoID0gbnVsbHB0cjsKICAgICBpbnQgYmVzdFNjb3JlID0ga01pbk1hdGNoOwot
ICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RQYXJhbWV0ZXJzID0gV2ViQ29yZTo6VVJMUGFyc2VyOjpw
YXJzZVVSTEVuY29kZWRGb3JtKHVybC5xdWVyeSgpKTsKKyAgICBjb25zdCBhdXRvJiByZXF1ZXN0
UGFyYW1ldGVycyA9IFdURjo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHVybC5xdWVy
eSgpKTsKICAgICBmb3IgKGF1dG8gaVJlc291cmNlID0gbG93ZXI7IGlSZXNvdXJjZSAhPSB1cHBl
cjsgKytpUmVzb3VyY2UpIHsKICAgICAgICAgaW50IHRoaXNTY29yZSA9IGZ1enp5TWF0Y2hVUkxz
KHVybCwgcmVxdWVzdFBhcmFtZXRlcnMsIGlSZXNvdXJjZS0+dXJsKCksIGlSZXNvdXJjZS0+cXVl
cnlQYXJhbWV0ZXJzKCkpOwogICAgICAgICAvLyBUT0RPOiBDb25zaWRlciBpZ25vcmluZyBhbnkg
bWF0Y2hlcyA8IDAgYXMgYmVpbmcgdG9vIGRpZmZlcmVudC4KQEAgLTE2NSw3ICsxNjUsNyBAQCBS
ZXNvdXJjZSogTWFuYWdlcjo6ZmluZEJlc3RGdXp6eU1hdGNoKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIC8vIFRPRE86IENvbnZlcnQgdG8gYW4gaW50ZXJmYWNlIGJh
c2VkIG9uIFJlc291cmNlUmVxdWVzdCBzbyB0aGF0IHdlIGNhbiBkbwogLy8gZGVlcGVyIG1hdGNo
aW5nLgogCi1pbnQgTWFuYWdlcjo6ZnV6enlNYXRjaFVSTHMoY29uc3QgV2ViQ29yZTo6VVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXF1
ZXN0UGFyYW1ldGVycywgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNvdXJjZVVSTCwgY29uc3QgV2Vi
Q29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVzb3VyY2VQYXJhbWV0ZXJzKQoraW50
IE1hbmFnZXI6OmZ1enp5TWF0Y2hVUkxzKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV1RG
OjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXF1ZXN0UGFyYW1ldGVycywgY29uc3QgVVJM
JiByZXNvdXJjZVVSTCwgY29uc3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXNv
dXJjZVBhcmFtZXRlcnMpCiB7CiAgICAgLy8gVE9ETzogY29uc2lkZXIgcmVxdWlyaW5nIHRoYXQg
YW55IHRyYWlsaW5nIHN1ZmZpeGVzIChlLmcuLCAiLmpzIiwKICAgICAvLyAiLnBuZyIsICIuY3Nz
IiwgIi5odG1sIiwgZXRjLikgc2hvdWxkIGJlIGFuIGV4YWN0IG1hdGNoLgpAQCAtNDE5LDcgKzQx
OSw3IEBAIFN0cmluZyBNYW5hZ2VyOjpoYXNoVG9QYXRoKGNvbnN0IFN0cmluZyYgaGFzaCkKICAg
ICByZXR1cm4gcGF0aDsKIH0KIAotU3RyaW5nIE1hbmFnZXI6OnVybElkZW50aWZ5aW5nQ29tbW9u
RG9tYWluKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQorU3RyaW5nIE1hbmFnZXI6OnVybElkZW50
aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiB1cmwucHJv
dG9jb2xIb3N0QW5kUG9ydCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oCmluZGV4IDNjNmI1
MDEwZGEyMzQxZTY4MmNiMWNhMjQwMWEwNjYwZjM5Yzc0MWEuLmMzNjgxNmM5YTg5YTFjN2VmYWQx
MDRmMWIwMzkwODgzNmRjYTdmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKQEAgLTI5LDgg
KzI5LDggQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
ODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6RmlsZUhhbmRsZSBvcGVuQ2FjaGVG
aWxlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSk7CiAK
ICAgICBTdHJpbmcgcmVxdWVzdFRvUGF0aChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKLSAgICBzdGF0aWMgU3RyaW5nIHVybElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0IFdl
YkNvcmU6OlVSTCYpOworICAgIHN0YXRpYyBTdHJpbmcgdXJsSWRlbnRpZnlpbmdDb21tb25Eb21h
aW4oY29uc3QgVVJMJik7CiAKIHByaXZhdGU6CiAgICAgTWFuYWdlcigpID0gZGVmYXVsdDsKQEAg
LTkwLDcgKzkwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlKiBmaW5kRXhhY3RNYXRjaChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBSZXNvdXJjZSogZmluZEJlc3RG
dXp6eU1hdGNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIGludCBmdXp6
eU1hdGNoVVJMcyhjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6
OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVuY29k
ZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpOworICAgIGludCBmdXp6eU1hdGNoVVJMcyhjb25z
dCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdURjo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYg
cmVxdWVzdFBhcmFtZXRlcnMsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwsIGNvbnN0IFdURjo6VVJM
UGFyc2VyOjpVUkxFbmNvZGVkRm9ybSYgcmVzb3VyY2VQYXJhbWV0ZXJzKTsKIAogICAgIHZvaWQg
bG9hZFJlc291cmNlcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAKaW5kZXggNzA0
YzBkNmFkNGY2NmEwYzNjYWIzYmFmM2U5OTU2MWQ4ODg0ZjA0NS4uZjNkYzIzYzU3MDY5NGVmM2Ji
ZjI1YmJiYTMyMzUxY2Q4MGY3NDA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcApA
QCAtNDEsNyArNDEsNyBAQCBSZXNvdXJjZTo6UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBldmVudEZp
bGVQYXRoKQogewogfQogCi1jb25zdCBXZWJDb3JlOjpVUkwmIFJlc291cmNlOjp1cmwoKQorY29u
c3QgVVJMJiBSZXNvdXJjZTo6dXJsKCkKIHsKICAgICBpZiAoIW1fdXJsLmlzVmFsaWQoKSkgewog
ICAgICAgICBhdXRvIGV2ZW50cyA9IGV2ZW50U3RyZWFtKCk7CkBAIC01Miw4ICs1Miw3IEBAIGNv
bnN0IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6OnVybCgpCiAgICAgICAgICAgICBERUJVR19MT0df
RVJST1IoIkV2ZW50IHN0cmVhbSBkb2VzIG5vdCBoYXZlIGEgcmVxdWVzdFNlbnQgZXZlbnQ6IGZp
bGUgPSAiIFNUUklOR19TUEVDSUZJRVIsIERFQlVHX1NUUihtX2V2ZW50RmlsZVBhdGgpKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRvIHJlcXVlc3RTZW50RXZlbnQgPSBXVEY6Omdl
dDxSZXF1ZXN0U2VudEV2ZW50PigqZXZlbnQpOwotICAgICAgICAgICAgV2ViQ29yZTo6VVJMUGFy
c2VyIHBhcnNlcihyZXF1ZXN0U2VudEV2ZW50LnJlcXVlc3QudXJsKTsKLSAgICAgICAgICAgIG1f
dXJsID0gcGFyc2VyLnJlc3VsdCgpOworICAgICAgICAgICAgbV91cmwgPSBVUkwoeyB9LCByZXF1
ZXN0U2VudEV2ZW50LnJlcXVlc3QudXJsKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNjgsMTAg
KzY3LDEwIEBAIGNvbnN0IFN0cmluZyYgUmVzb3VyY2U6OnVybElkZW50aWZ5aW5nQ29tbW9uRG9t
YWluKCkKICAgICByZXR1cm4gbV91cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbjsKIH0KIAotV2Vi
Q29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSBSZXNvdXJjZTo6cXVlcnlQYXJhbWV0ZXJz
KCkKK1dURjo6VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSBSZXNvdXJjZTo6cXVlcnlQYXJhbWV0
ZXJzKCkKIHsKICAgICBpZiAoIW1fcXVlcnlQYXJhbWV0ZXJzKQotICAgICAgICBtX3F1ZXJ5UGFy
YW1ldGVycyA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybSh1cmwoKS5x
dWVyeSgpKTsKKyAgICAgICAgbV9xdWVyeVBhcmFtZXRlcnMgPSBXVEY6OlVSTFBhcnNlcjo6cGFy
c2VVUkxFbmNvZGVkRm9ybSh1cmwoKS5xdWVyeSgpKTsKIAogICAgIHJldHVybiAqbV9xdWVyeVBh
cmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
cHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaAppbmRleCA3NTc2YzBkNWUwMDg0
ODkxNjJjMThjOTY2MDRmZTNhMzg3ZjM5ZTVlLi5kNDkzZjRhNGEzNWFkOGVhNmNkYjJkZDhlMDI1
ZDY5MGM1ODkyNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
cHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKQEAgLTI5LDkgKzI5LDkg
QEAKIAogI2luY2x1ZGUgIk5ldHdvcmtDYXB0dXJlRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiBuYW1lc3BhY2UgTmV0d29ya0NhcHR1cmUgewpAQCAtNTUsMTYgKzU1LDE2IEBAIHB1YmxpYzoK
IHB1YmxpYzoKICAgICBSZXNvdXJjZShjb25zdCBTdHJpbmcmIGV2ZW50RmlsZVBhdGgpOwogCi0g
ICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCgpOwogICAg
IGNvbnN0IFN0cmluZyYgdXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oKTsKLSAgICBXZWJDb3Jl
OjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtIHF1ZXJ5UGFyYW1ldGVycygpOworICAgIFdURjo6
VVJMUGFyc2VyOjpVUkxFbmNvZGVkRm9ybSBxdWVyeVBhcmFtZXRlcnMoKTsKICAgICBFdmVudFN0
cmVhbSBldmVudFN0cmVhbSgpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2V2ZW50RmlsZVBh
dGg7Ci0gICAgV2ViQ29yZTo6VVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcg
bV91cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbjsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0+IG1fcXVlcnlQYXJhbWV0ZXJzOworICAgIHN0ZDo6
b3B0aW9uYWw8V1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtPiBtX3F1ZXJ5UGFyYW1ldGVy
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYXB0dXJlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQppbmRleCA5NGMyNjIwNGVlZWE0YmFjZTg0YzIxNzVlZTE0ZThmMDA2YzlkZTRjLi42OGMxZDU3
NTkzMjU4MzI1ODA1MTEzZjM2YzdlNWU0ZGE4YWZlNGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
QEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgogICAgIH0KICAgICAK
ICAgICAvLyBTaG91bGQgbm90IHNldCBSZWZlcmVyIGFmdGVyIGEgcmVkaXJlY3QgZnJvbSBhIHNl
Y3VyZSByZXNvdXJjZSB0byBub24tc2VjdXJlIG9uZS4KLSAgICBpZiAobV9zaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ICYmICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMo
Imh0dHBzIikgJiYgV2ViQ29yZTo6cHJvdG9jb2xJcyhyZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAi
aHR0cHMiKSkKKyAgICBpZiAobV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0ICYmICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgJiYgV1RGOjpwcm90b2Nv
bElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQogICAgICAgICByZXF1ZXN0LmNs
ZWFySFRUUFJlZmVycmVyKCk7CiAgICAgCiAgICAgY29uc3QgYXV0byYgdXJsID0gcmVxdWVzdC51
cmwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRleCA3YTE3OWQxMTIxZDk3ZTU0MDY2NWFmYWQ3MDU2
ODUwZjBmMmVmODc1Li43MTMwNGE3Zjk4OWUyMzMzZGYxOTcyM2ZjMzIzYzlmODRjMWNhOWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHMKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBob3N0TmFtZXMpCiB7CiAgICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykg
ewotICAgICAgICBhdXRvIHVybCA9IFdlYkNvcmU6OlVSTCh7IH0sIG1ha2VTdHJpbmcoImh0dHBz
Oi8vIiwgaG9zdE5hbWUpKTsKKyAgICAgICAgYXV0byB1cmwgPSBVUkwoeyB9LCBtYWtlU3RyaW5n
KCJodHRwczovLyIsIGhvc3ROYW1lKSk7CiAgICAgICAgIF9DRk5ldHdvcmtSZXNldEhTVFModXJs
LmNyZWF0ZUNGVVJMKCkuZ2V0KCksIHNlc3Npb24ucGxhdGZvcm1TZXNzaW9uKCkpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCA4ODIxMDdjNDY3Yjg2ZjM3M2MwY2ZiMzFjNGQxZWI3
OTgyODhjZjhhLi5hN2MwMmFlNTBmOGM4ZTY4Nzc2NWEyMmNiMjdmYzk0MWQ2ZWE0MWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCkBAIC00NiwxMiArNDYsMTIgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVVJMUmVzcG9uc2UuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC0zNDgs
NyArMzQ4LDcgQEAgc3RhdGljIE5TVVJMUmVxdWVzdCogdXBkYXRlSWdub3JlU3RyaWN0VHJhbnNw
b3J0U2VjdXJpdHlTZXR0aW5nSWZOZWNlc3NhcnkoTlNVUkwKICAgICAgICAgICAgIGlmIChjcmVk
ZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9y
U2Vzc2lvbiAmJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5pc1Bh
c3N3b3JkQmFzZWQoKSkgewogCiAgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q3JlZGVudGlhbCBu
b25QZXJzaXN0ZW50Q3JlZGVudGlhbChjcmVkZW50aWFsLnVzZXIoKSwgY3JlZGVudGlhbC5wYXNz
d29yZCgpLCBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKLSAgICAgICAgICAg
ICAgICBXZWJDb3JlOjpVUkwgdXJsVG9TdG9yZTsKKyAgICAgICAgICAgICAgICBVUkwgdXJsVG9T
dG9yZTsKICAgICAgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZmFpbHVy
ZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICAgICAgICAg
IHVybFRvU3RvcmUgPSBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51
cmwoKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpp
bmRleCA0MDJlYzFkZTAxOTYyZjBjY2Y0MjA0Mjk1NzIzNzkxZjdjNjU3MmEwLi5mNWNjMWMxZTBh
YzZkYTg0MjkyYzQ4YjQ3MWIwOGM4N2JmMjk4ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0yMTUsMTEgKzIxNSwx
MSBAQCBzdGF0aWMgdm9pZCBjYXJib25XaW5kb3dIaWRkZW4oV2luZG93UmVmIHdpbmRvdykKIHN0
YXRpYyBib29sIG9wZW5DRlVSTFJlZihDRlVSTFJlZiB1cmwsIGludDMyX3QmIHN0YXR1cywgQ0ZV
UkxSZWYqIGxhdW5jaGVkVVJMKQogewogICAgIFN0cmluZyBsYXVuY2hlZFVSTFN0cmluZzsKLSAg
ICBpZiAoIVBsdWdpblByb2Nlc3M6OnNpbmdsZXRvbigpLm9wZW5VUkwoV2ViQ29yZTo6VVJMKHVy
bCkuc3RyaW5nKCksIHN0YXR1cywgbGF1bmNoZWRVUkxTdHJpbmcpKQorICAgIGlmICghUGx1Z2lu
UHJvY2Vzczo6c2luZ2xldG9uKCkub3BlblVSTChVUkwodXJsKS5zdHJpbmcoKSwgc3RhdHVzLCBs
YXVuY2hlZFVSTFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbGF1
bmNoZWRVUkxTdHJpbmcuaXNOdWxsKCkgJiYgbGF1bmNoZWRVUkwpCi0gICAgICAgICpsYXVuY2hl
ZFVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgbGF1bmNoZWRVUkxTdHJpbmcpLmNy
ZWF0ZUNGVVJMKCkubGVha1JlZigpOworICAgICAgICAqbGF1bmNoZWRVUkwgPSBVUkwoVVJMKCks
IGxhdW5jaGVkVVJMU3RyaW5nKS5jcmVhdGVDRlVSTCgpLmxlYWtSZWYoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMzk5LDcgKzM5OSw3IEBAIHN0YXRpYyBOU1J1bm5pbmdBcHBsaWNhdGlv
biAqcmVwbGFjZWROU1dvcmtzcGFjZV9sYXVuY2hBcHBsaWNhdGlvbkF0VVJMX29wdGlvbnNfCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoUGx1Z2luUHJvY2Vzczo6c2luZ2xldG9uKCkubGF1
bmNoQXBwbGljYXRpb25BdFVSTChXZWJDb3JlOjpVUkwodXJsKS5zdHJpbmcoKSwgYXJndW1lbnRz
KSkgeworICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5sYXVuY2hBcHBsaWNhdGlv
bkF0VVJMKFVSTCh1cmwpLnN0cmluZygpLCBhcmd1bWVudHMpKSB7CiAgICAgICAgIGlmIChlcnJv
cikKICAgICAgICAgICAgICplcnJvciA9IG5pbDsKICAgICAgICAgcmV0dXJuIG5pbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElVUkwuaAppbmRleCA3YjAxZDBlOTIwNTYyOGNkM2MwMDJlZjU3ZWYxMWU4
MTRkY2NjYjkxLi5iYmQ0MjNiY2Y1NzE1ZTRhZDcwYmY1MmRlZjhjMmMzMGM0MWJmMGY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCkBAIC0yMywzMiArMjMsMzEgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlVSTF9oCi0jZGVmaW5l
IFdlYlVSTF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVUkwgOiBw
dWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8VVJMPiBjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0aWMg
UmVmPEFQSTo6VVJMPiBjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVSTChzdHJpbmcpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgUmVmPFVSTD4gY3JlYXRlKGNvbnN0IFVSTCogYmFzZVVSTCwgY29uc3QgV1RGOjpTdHJp
bmcmIHJlbGF0aXZlVVJMKQorICAgIHN0YXRpYyBSZWY8QVBJOjpVUkw+IGNyZWF0ZShjb25zdCBB
UEk6OlVSTCogYmFzZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIHJlbGF0aXZlVVJMKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGJhc2VVUkwpOwogICAgICAgICBiYXNlVVJMLT5wYXJzZVVSTElmTmVj
ZXNzYXJ5KCk7Ci0gICAgICAgIGF1dG8gYWJzb2x1dGVVUkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OlVSTD4oKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7Cisg
ICAgICAgIGF1dG8gYWJzb2x1dGVVUkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6VVJMPigqYmFz
ZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKICAgICAgICAgY29uc3QgV1RG
OjpTdHJpbmcmIGFic29sdXRlVVJMU3RyaW5nID0gYWJzb2x1dGVVUkwtPnN0cmluZygpOwogCi0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJz
b2x1dGVVUkxTdHJpbmcpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVBJOjpVUkwo
V1RGTW92ZShhYnNvbHV0ZVVSTCksIGFic29sdXRlVVJMU3RyaW5nKSk7CiAgICAgfQogCiAgICAg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQpAQCAtNTYs
NyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KIAotICAgIHN0YXRpYyBib29sIGVxdWFscyhjb25zdCBV
UkwmIGEsIGNvbnN0IFVSTCYgYikKKyAgICBzdGF0aWMgYm9vbCBlcXVhbHMoY29uc3QgQVBJOjpV
UkwmIGEsIGNvbnN0IEFQSTo6VVJMJiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGEudXJsKCkg
PT0gYi51cmwoKTsKICAgICB9CkBAIC0xMDYsMTMgKzEwNSwxMyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICB9CiAKLSAgICBVUkwoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJM
LCBjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAgIFVSTChzdGQ6OnVuaXF1ZV9wdHI8V1RG
OjpVUkw+IHBhcnNlZFVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBt
X3N0cmluZyhzdHJpbmcpCiAgICAgICAgICwgbV9wYXJzZWRVUkwoV1RGTW92ZShwYXJzZWRVUkwp
KQogICAgIHsKICAgICB9CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0Cisg
ICAgY29uc3QgV1RGOjpVUkwmIHVybCgpIGNvbnN0CiAgICAgewogICAgICAgICBwYXJzZVVSTElm
TmVjZXNzYXJ5KCk7CiAgICAgICAgIHJldHVybiAqbV9wYXJzZWRVUkw7CkBAIC0xMjIsMTMgKzEy
MSwxMSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgaWYgKG1fcGFyc2VkVVJMKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6VVJMPihXZWJDb3JlOjpVUkwoKSwgbV9zdHJpbmcpOworICAgICAgICBtX3BhcnNlZFVS
TCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKICAg
ICB9CiAKICAgICBXVEY6OlN0cmluZyBtX3N0cmluZzsKLSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpVUkw+IG1fcGFyc2VkVVJMOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVf
cHRyPFdURjo6VVJMPiBtX3BhcnNlZFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gVVJMX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElV
c2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRleCA5YjVjN2Y2NmI0OGI4YTk2YmRkMmRjYmU4OWNh
OTBhMTIzZDMwNmFhLi42Njk5NWEwYTg4NTI2YmFjNTNhYjdkMWNjNTk2MTVhMzIwMjE5ZTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVzZXJDb250ZW50VVJMUGF0
dGVybi5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKIAotI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFVSTFBh
dHRlcm4uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXVEY6OlN0cmluZyYgaG9zdCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0dGVybi5ob3N0KCk7IH0KICAgICBjb25zdCBXVEY6OlN0cmluZyYgc2No
ZW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLnNjaGVtZSgpOyB9CiAgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmlzVmFsaWQoKTsgfTsKLSAgICBib29sIG1h
dGNoZXNVUkwoY29uc3QgV1RGOjpTdHJpbmcmIHVybCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJu
Lm1hdGNoZXMoV2ViQ29yZTo6VVJMKHsgfSwgdXJsKSk7IH0KKyAgICBib29sIG1hdGNoZXNVUkwo
Y29uc3QgV1RGOjpTdHJpbmcmIHVybCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1hdGNoZXMo
V1RGOjpVUkwoeyB9LCB1cmwpKTsgfQogICAgIGJvb2wgbWF0Y2hlc1N1YmRvbWFpbnMoKSBjb25z
dCB7IHJldHVybiBtX3BhdHRlcm4ubWF0Y2hTdWJkb21haW5zKCk7IH0KIAogICAgIGNvbnN0IFdU
Rjo6U3RyaW5nJiBwYXR0ZXJuU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3RyaW5n
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcAppbmRleCA3
MzZlMWYzZTY2NDVjZTBlYzIxMmY2ZGI5Zjg3ODQzZDVjZDEzZGE1Li4xNDk5NTYzZTM5YWU3Yjk4
NmRlMTczNDc2Nzg4NWY2YWFkOTI4ZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLVVJMUmVxdWVzdC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJBUElVUkxSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tEYXRhLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAKaW5kZXggYjhhOGE5MGJjZDNjMzQ1Y2Q0NzU2
NTI3NzMxNDMyY2ZjYTAxN2M4Ny4uOGYxZmE5YWQ2ZTM2ZTk4YWM0MTNlYmE5ZWY5NTUzY2FkNDA2
MzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25z
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSVVSTFJlc3BvbnNlLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9jZi9XS1VSTENGLm1tCmluZGV4IGRmMTk4M2E2MDE1MGRkN2VhZGJhZTgzZDM4ODI4YWJh
YTc4MGUwYWUuLmJkOTFhNDViMDljMzE0ZWZmMzYzMDUxY2NiODgxNWJkY2JiNmRiODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQpAQCAtMjgsOCArMjgsOCBAQAog
CiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLTlNVUkwuaCIKLSNpbXBvcnQgPFdl
YkNvcmUvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8
d3RmL2NmL0NGVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNp
ZiBXS19BUElfRU5BQkxFRApAQCAtNTYsNyArNTYsNyBAQCBXS1VSTFJlZiBXS1VSTENyZWF0ZVdp
dGhDRlVSTChDRlVSTFJlZiBjZlVSTCkKICNlbmRpZgogCiAgICAgQ1N0cmluZyB1cmxCeXRlczsK
LSAgICBXZWJDb3JlOjpnZXRVUkxCeXRlcyhjZlVSTCwgdXJsQnl0ZXMpOworICAgIFdURjo6Z2V0
VVJMQnl0ZXMoY2ZVUkwsIHVybEJ5dGVzKTsKIAogICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVk
VVJMQVBJKHVybEJ5dGVzLmRhdGEoKSk7CiB9CkBAIC02OSw1ICs2OSw1IEBAIENGVVJMUmVmIFdL
VVJMQ29weUNGVVJMKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvclJlZiwgV0tVUkxSZWYgVVJMUmVm
KQogICAgIC8vIFVURi04IHdoaWNoIHVzZXMgbGVzcyBtZW1vcnkgYW5kIGlzIHdoYXQgV2ViS2l0
IGNsaWVudHMgbWlnaHQgZXhwZWN0LgogCiAgICAgQ1N0cmluZyBidWZmZXIgPSBXZWJLaXQ6OnRv
SW1wbChVUkxSZWYpLT5zdHJpbmcoKS51dGY4KCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNyZWF0
ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIubGVuZ3RoKCksIDApLmxlYWtS
ZWYoKTsKKyAgICByZXR1cm4gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLmxlbmd0aCgpLCAwKS5sZWFrUmVmKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDlmZTU5NTcyMDRj
Yzc5OTNlYmMwODg4OGJkMWY4OTMxZWE0ZWIwMDEuLjMxZjYxY2U3ZWFmOGI5YTk5Y2JhYWQ3ZGQw
NTM3NWRhODFhMjViYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGli
L1dlYktpdFVSSVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGli
L1dlYktpdFVSSVJlcXVlc3QuY3BwCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSAiV2ViS2l0
VVJJUmVxdWVzdC5oIgogCiAjaW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1s
aWIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXNwb25zZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXNwb25zZS5jcHAK
aW5kZXggZDI0NTU4OTM2Y2Y0NjA3NTU1NzEyYTE2Yzk0ZmQ0NjFlYzA5OGEyMy4uMjg3ZWVmZDRk
OWNjZjQwMDM2NzNkZTk3Yjg4ZDNjMmQ2M2MyMzQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcApAQCAtMjEsOCArMjEsOCBA
QAogI2luY2x1ZGUgIldlYktpdFVSSVJlc3BvbnNlLmgiCiAKICNpbmNsdWRlICJXZWJLaXRVUklS
ZXNwb25zZVByaXZhdGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAj
aW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
U291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJB
cmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVz
b3VyY2UubW0KaW5kZXggZGMwZjkwZjBmMzg1MWFiZjEwMDQ4NGJhNTczYWU0YWY4ZTgwYjIzMi4u
YmMyZmU0OWUzMGFhMzgyYjQyM2I1NGRiMmJhZDcyYmI3Zjk3ZWU3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtMzAsOCArMzAsOCBAQAog
CiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpAQCAtNDYsOCArNDYsOCBAQCBSZWY8V2ViQXJjaGl2ZVJlc291cmNlPiBXZWJB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiYmIGFyYwogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFyY2hpdmVSZXNvdXJjZShXVEZNb3ZlKGFyY2hpdmVS
ZXNvdXJjZSkpKTsKIH0KIAotV2ViQXJjaGl2ZVJlc291cmNlOjpXZWJBcmNoaXZlUmVzb3VyY2Uo
QVBJOjpEYXRhKiBkYXRhLCBjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcpCi0gICAgOiBtX2FyY2hpdmVSZXNvdXJjZShB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLT5ieXRlcygp
LCBkYXRhLT5zaXplKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFVSTCksIE1JTUVU
eXBlLCB0ZXh0RW5jb2RpbmcsIFN0cmluZygpKSkKK1dlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJj
aGl2ZVJlc291cmNlKEFQSTo6RGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKQorICAgIDogbV9hcmNo
aXZlUmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKSwgV1RGOjpVUkwoV1RGOjpVUkwoKSwgdXJsKSwg
TUlNRVR5cGUsIHRleHRFbmNvZGluZywgU3RyaW5nKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaAppbmRleCA5NmEwMGE1N2IzYmI2
MGQzZmI4ZjE4N2UzNDY1YWM5ZDlhMjAxZWM5Li45YjFjM2IwMTQ1ZjgzZjc5NDg1MTc3NGU5NmI4
NTg2YWU3MmQ4ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lucHV0TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdHJ1Y3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gewog
ICAgIGJvb2wgYWNjZXB0c0F1dG9maWxsZWRMb2dpbkNyZWRlbnRpYWxzIHsgZmFsc2UgfTsKICAg
ICBib29sIGlzQXV0b2ZpbGxhYmxlVXNlcm5hbWVGaWVsZCB7IGZhbHNlIH07CiAgICAgYm9vbCBl
bGVtZW50SXNUcmFuc3BhcmVudCB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6VVJMIHJlcHJlc2Vu
dGluZ1BhZ2VVUkw7CisgICAgVVJMIHJlcHJlc2VudGluZ1BhZ2VVUkw7CiAgICAgV2ViQ29yZTo6
QXV0b2ZpbGxGaWVsZE5hbWUgYXV0b2ZpbGxGaWVsZE5hbWUgeyBXZWJDb3JlOjpBdXRvZmlsbEZp
ZWxkTmFtZTo6Tm9uZSB9OwogICAgIFN0cmluZyBwbGFjZWhvbGRlcjsKICAgICBTdHJpbmcgbGFi
ZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFz
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbQppbmRleCAw
MTg4Zjc0Nzk4MmE5NDBhNDhhYjg2ZjgyODhhYWIwMDZkZmQxMWQ3Li41MTliOWQ4M2VkNzY2MWRj
NmQ4N2Q2MjllN2M4Yzg1NWIwZWYyYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dLTlNVUkxFeHRyYXMubW0KQEAgLTI2LDEzICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvQ0ZVUkxFeHRy
YXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1w
b3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQogQGltcGxlbWVudGF0aW9uIE5TVVJMIChXS0V4dHJhcykKIAogKyAoaW5zdGFuY2V0eXBl
KV93ZWJfVVJMV2l0aFdURlN0cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcKQEAgLTUwLDcgKzQ4
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAtIChTdHJpbmcpX3dlYl9vcmlnaW5hbERh
dGFBc1dURlN0cmluZwogewogICAgIENTdHJpbmcgb3JpZ2luYWxEYXRhOwotICAgIGdldFVSTEJ5
dGVzKChfX2JyaWRnZSBDRlVSTFJlZilzZWxmLCBvcmlnaW5hbERhdGEpOworICAgIFdURjo6Z2V0
VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXNlbGYsIG9yaWdpbmFsRGF0YSk7CiAgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgob3JpZ2luYWxEYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
ZXNzaW9uU3RhdGUuaAppbmRleCA1YjA3ZDQ0ZjZjMDc0YzA5M2Q2OTQ5OTA4NzFiZTRjYzJlNmIw
Y2M5Li5mZTgxYTVkODA5NTVlY2U1ZDJjNjI1Zjg5Njk2MmVhOWU2YzMzNmJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TZXNzaW9uU3RhdGUuaApAQCAtMzQsOCArMzQsOCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlzdFN0YXRlIHsKIHN0
cnVjdCBTZXNzaW9uU3RhdGUgewogICAgIEJhY2tGb3J3YXJkTGlzdFN0YXRlIGJhY2tGb3J3YXJk
TGlzdFN0YXRlOwogICAgIHVpbnQ2NF90IHJlbmRlclRyZWVTaXplOwotICAgIFdlYkNvcmU6OlVS
TCBwcm92aXNpb25hbFVSTDsKKyAgICBVUkwgcHJvdmlzaW9uYWxVUkw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRM
aXN0SXRlbS5jcHAKaW5kZXggYTY2NjIzNjllNzlmZjY0MTlhYTg0ZmEzMzk2MjI3MmQwNTQ5NDkw
OC4uZTE4MTI1ZjZkMDFlMTFhYjQxMGY2OTI2YmU1MDRjNzZmYjVmNTc1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKQEAgLTI5LDggKzI5
LDggQEAKICNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTA4LDggKzEwOCw4IEBA
IGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9jdW1lbnQoY29uc3Qg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYKICAgICBpZiAobWFpbkZyYW1lU3RhdGUuc3RhdGVPYmpl
Y3REYXRhIHx8IG90aGVyTWFpbkZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhKQogICAgICAgICBy
ZXR1cm4gbWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlciA9PSBvdGhlck1haW5G
cmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXI7CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJs
ID0gV2ViQ29yZTo6VVJMKHsgfSwgbWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKLSAgICBXZWJD
b3JlOjpVUkwgb3RoZXJVUkwgPSBXZWJDb3JlOjpVUkwoeyB9LCBvdGhlck1haW5GcmFtZVN0YXRl
LnVybFN0cmluZyk7CisgICAgVVJMIHVybCA9IFVSTCh7IH0sIG1haW5GcmFtZVN0YXRlLnVybFN0
cmluZyk7CisgICAgVVJMIG90aGVyVVJMID0gVVJMKHsgfSwgb3RoZXJNYWluRnJhbWVTdGF0ZS51
cmxTdHJpbmcpOwogCiAgICAgaWYgKCh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgfHwgb3Ro
ZXJVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIodXJsLCBvdGhlclVSTCkpCiAgICAgICAgIHJldHVybiBtYWluRnJhbWVTdGF0ZS5k
b2N1bWVudFNlcXVlbmNlTnVtYmVyID09IG90aGVyTWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1
ZW5jZU51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IDk2YWE0ZTk3MjY2NjliNjFiZjQzOTQ4M2RkYWVhZmI4ZDUzMDUzOTAuLjY2
ZmZlOTE5NGIwNDdlMWNmNWU2MDhhMjk3ZmFlNTJmMjg4OTIzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzksMTEgKzc5LDExIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9U
aW1pbmdGdW5jdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXgu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxl
U2hlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAwOTA5YjRkMTljYTA4OTVjNTQzMDVmNWY1NGNk
YTBjMDQ5M2E4ODMxLi4zYTNlYTk5NDkxMDg2OWY1N2NhMjg4NmY5ZjdkZDVjNDhlNzk5MDM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtOTYs
NyArOTYsNiBAQCBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBjbGFz
cyBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4Owog
Y2xhc3MgVXNlclN0eWxlU2hlZXQ7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0
aW9uczsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3Jz
LmgKaW5kZXggMjdkMTRlMzFiMzEwODY2YzZmMTM2ZTNhZDhhYWZmODhlMjNiMzg0Mi4uN2Q2MDBj
NmQyM2I1NWRjYzM5NjMwOTkwNDA3Y2U3NDQ0NDZjYjQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJy
b3JzLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTQ4LDE4ICs0Nywx
OCBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlcwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxI
YW5kbGVMb2FkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFVSTCYpOwogCiAjaWYgVVNF
KFNPVVApCi1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7CitXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGRvd25sb2FkTmV0d29ya0Vycm9yKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7
CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdURjo6U3RyaW5nJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLVdlYkNv
cmU6OlJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
VEY6OlN0cmluZyYpOwotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJv
cihjb25zdCBXZWJDb3JlOjpVUkwmKTsKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW52YWxpZFBh
Z2VSYW5nZVRvUHJpbnQoY29uc3QgV2ViQ29yZTo6VVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKK1dlYkNvcmU6
OlJlc291cmNlRXJyb3IgcHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgVVJMJik7CitXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGNvbnN0IFVSTCYpOwogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IDE3OWNhNGJlMzdiZWQwZTNkY2NiNWQzMjYzZjNm
MDY5YjA1MjU1NWIuLmMxY2ZjY2YwNWY4NDIwYWMzYjljMjRkYzU3Zjk4NWY3MjI2MzdjNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlbmRlck9iamVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCAxMGU3MTU4MWQ0OTA3
M2Y4YTMzNTNmOTY3MGI3MTE1MDhlMzk4ZTk4Li5mOGY3Mjk2NDg2YWU5N2FhZjhlOTYzNWNlMmNk
N2EyYzRiOGZlMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVu
dENvZGVyc0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVy
c0NGLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvQ0ZVUkxFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKICNpZiBVU0UoRk9VTkRBVElP
TikKQEAgLTU5OSw4ICs1OTksOCBAQCB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDRlVS
TFJlZiB1cmwpCiAgICAgaWYgKGJhc2VVUkwpCiAgICAgICAgIGVuY29kZShlbmNvZGVyLCBiYXNl
VVJMKTsKIAotICAgIFVSTENoYXJCdWZmZXIgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXModXJs
LCB1cmxCeXRlcyk7CisgICAgV1RGOjpVUkxDaGFyQnVmZmVyIHVybEJ5dGVzOworICAgIFdURjo6
Z2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXJsQnl0ZXMuZGF0YSgp
KSwgdXJsQnl0ZXMuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IGRhdGFSZWZlcmVuY2U7CiB9CkBA
IC02MzEsNyArNjMxLDcgQEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRy
PENGVVJMUmVmPiYgcmVzdWx0KQogICAgIH0KICNlbmRpZgogCi0gICAgcmVzdWx0ID0gY3JlYXRl
Q0ZVUkxGcm9tQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJ5dGVzLmRh
dGEoKSksIHVybEJ5dGVzLnNpemUoKSwgYmFzZVVSTC5nZXQoKSk7CisgICAgcmVzdWx0ID0gV1RG
OjpjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJs
Qnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6ZSgpLCBiYXNlVVJMLmdldCgpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2Vi
RXJyb3JzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3Bw
CmluZGV4IGU5ZDkyMzkzYzdkNWM2YjNhYmYzZjlmNDRhMDdmNDFhMDA4NDYwZTguLjZhMGRmNTRj
Mzc0NDVkZjY0Y2M1ZDNiNGJiNjEwZWMxZjNjMDY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9XZWJFcnJvcnNHdGsuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViRXJy
b3JzLmgiCiAKICNpbmNsdWRlICJBUElFcnJvci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbi5oCmluZGV4IGNlZTBmMjYyYjFjYmVmOTg2Y2RkM2EzNGE0YWM3NTU0NWEyYzYwNDAuLjRh
MzBhYmZlMmVhMTFmYzIwMDBhODE5ZmRkZjEyZWQ0MjNkMDg1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbi5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uUmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dEluZGljYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTYwLDggKzYwLDggQEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uIHsKICAgICBib29sIHByZXZlbnRUZXh0SW50ZXJhY3Rpb24geyBmYWxzZSB9OwogI2VuZGlm
CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBhZGp1c3RlZFBvaW50Rm9yTm9kZVJlc3BvbmRpbmdU
b0NsaWNrRXZlbnRzOwotICAgIFdlYkNvcmU6OlVSTCB1cmw7Ci0gICAgV2ViQ29yZTo6VVJMIGlt
YWdlVVJMOworICAgIFVSTCB1cmw7CisgICAgVVJMIGltYWdlVVJMOwogICAgIFN0cmluZyB0aXRs
ZTsKICAgICBTdHJpbmcgaWRBdHRyaWJ1dGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
aW5kZXggYmIwZDFjYjYzZDQxZjJlN2JjMzZiYTlmNWQ1ZGFlNWU0MDgxMTU5Mi4uOTBmZGU3ZDA0
YjI3MzA1YTQ2NDM2MTQxYmRiNzdlMTAwNGJkZDA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaApAQCAtMzMsNyArMzMsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsK
IHN0cnVjdCBDb29raWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uLmNwcAppbmRleCBmNWZhM2E1ZDc2MjNjNGM5YWM2YjdhYTMwOTM3MWQzZDVjYjRm
MjZkLi4yNzU0ZTc5NGYyNTA1MzgzMmQ1ZDI2N2UxMjBhYmYwNzQxZTQ3YTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCkBAIC03Niw3ICs3Niw3
IEBAIHZvaWQgTmF2aWdhdGlvbjo6c2V0Q3VycmVudFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUHJvY2Vzc0lkZW50aWZpZXIKICAgICBtX2N1cnJlbnRSZXF1ZXN0UHJvY2Vzc0lk
ZW50aWZpZXIgPSBwcm9jZXNzSWRlbnRpZmllcjsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uOjphcHBl
bmRSZWRpcmVjdGlvblVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgTmF2aWdhdGlv
bjo6YXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3QgV1RGOjpVUkwmIHVybCkKIHsKICAgICBpZiAo
bV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHVy
bCkKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKaW5kZXggMTNiZDFmNDQyNTJkYTFmMzc3ZjZl
NjRlMDQ4ZjlkZTA1MzNjNjI1Zi4uYTlmNjIyODNmNjU4NTJmZTkxMmU3ZDYwNmRhYzBhM2Y5ODMy
OTcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCkBA
IC0xMDIsOCArMTAyLDggQEAgcHVibGljOgogICAgIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogZnJvbUl0ZW0oKSBjb25zdCB7IHJldHVybiBtX2Zyb21JdGVtLmdldCgpOyB9CiAgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUxvYWRUeXBlPiBiYWNrRm9yd2FyZEZyYW1lTG9h
ZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZTsgfQogCi0g
ICAgdm9pZCBhcHBlbmRSZWRpcmVjdGlvblVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBW
ZWN0b3I8V2ViQ29yZTo6VVJMPiB0YWtlUmVkaXJlY3RDaGFpbigpIHsgcmV0dXJuIFdURk1vdmUo
bV9yZWRpcmVjdENoYWluKTsgfQorICAgIHZvaWQgYXBwZW5kUmVkaXJlY3Rpb25VUkwoY29uc3Qg
V1RGOjpVUkwmKTsKKyAgICBWZWN0b3I8V1RGOjpVUkw+IHRha2VSZWRpcmVjdENoYWluKCkgeyBy
ZXR1cm4gV1RGTW92ZShtX3JlZGlyZWN0Q2hhaW4pOyB9CiAKICAgICBib29sIHdhc1VzZXJJbml0
aWF0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fbGFzdE5hdmlnYXRpb25BY3Rpb24udXNlckdlc3R1
cmVUb2tlbklkZW50aWZpZXI7IH0KIApAQCAtMTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IG1fY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmll
cjsKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CisgICAgVmVjdG9y
PFdURjo6VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtPiBtX3RhcmdldEl0ZW07CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4gbV9mcm9tSXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGVlY2JmZjRhMmEzZWQ5MGY0NDQw
OGNjZDZjYWYyOWRlOThkOTUyZDcuLjMwODcxYzdhMDk1NTRkNWNiOGE3ZWQ0YWI4MmNiYjE0OGNk
ZTc4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25BY3Rpb24uaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkFQSVVzZXJJbml0aWF0ZWRB
Y3Rpb24uaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUoKSBj
b25zdCB7IHJldHVybiBtX3RhcmdldEZyYW1lTmFtZTsgfQogCiAgICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9Ci0g
ICAgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0IHsgcmV0dXJuICFtX29y
aWdpbmFsVVJMLmlzTnVsbCgpID8gbV9vcmlnaW5hbFVSTCA6IG1fcmVxdWVzdC51cmwoKTsgfQor
ICAgIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0IHsgcmV0dXJuICFtX29yaWdp
bmFsVVJMLmlzTnVsbCgpID8gbV9vcmlnaW5hbFVSTCA6IG1fcmVxdWVzdC51cmwoKTsgfQogCiAg
ICAgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUoKSBjb25zdCB7IHJldHVy
biBtX25hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlOyB9CiAgICAgV2ViS2l0OjpX
ZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlv
bkFjdGlvbkRhdGEubW9kaWZpZXJzOyB9CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBO
YXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJh
bWVOYXZpZ2F0aW9uLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgTmF2aWdhdGlvbkFjdGlvbihX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6
RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSwgQVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBzdGQ6
Om9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYWxVUkwsIGJvb2wg
c2hvdWxkT3BlbkFwcExpbmtzLCBSZWZQdHI8VXNlckluaXRpYXRlZEFjdGlvbj4mJiB1c2VySW5p
dGlhdGVkQWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24pCisgICAg
TmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSwgQVBJOjpGcmFtZUluZm8q
IHRhcmdldEZyYW1lLCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmln
aW5hbFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0
aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2
aWdhdGlvbikKICAgICAgICAgOiBtX3NvdXJjZUZyYW1lKHNvdXJjZUZyYW1lKQogICAgICAgICAs
IG1fdGFyZ2V0RnJhbWUodGFyZ2V0RnJhbWUpCiAgICAgICAgICwgbV90YXJnZXRGcmFtZU5hbWUo
dGFyZ2V0RnJhbWVOYW1lKQpAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9
CiAKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZy
YW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZy
YW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2Vy
SW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24pCisgICAgTmF2aWdhdGlvbkFj
dGlvbihXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSwgQVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1l
LCBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCwgYm9v
bCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJ
bml0aWF0ZWRBY3Rpb24pCiAgICAgICAgIDogTmF2aWdhdGlvbkFjdGlvbihXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWUsIHRhcmdldEZyYW1lLCB0YXJnZXRGcmFtZU5h
bWUsIFdURk1vdmUocmVxdWVzdCksIG9yaWdpbmFsVVJMLCBzaG91bGRPcGVuQXBwTGlua3MsIFdU
Rk1vdmUodXNlckluaXRpYXRlZEFjdGlvbiksIG51bGxwdHIpCiAgICAgewogICAgIH0KQEAgLTg5
LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFdURjo6U3RyaW5nPiBtX3Rh
cmdldEZyYW1lTmFtZTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
Ci0gICAgV2ViQ29yZTo6VVJMIG1fb3JpZ2luYWxVUkw7CisgICAgV1RGOjpVUkwgbV9vcmlnaW5h
bFVSTDsKIAogICAgIGJvb2wgbV9zaG91bGRPcGVuQXBwTGlua3M7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IGMzZDFhYmZk
ZGU4MjZhZThlZTVjYjcyYWJmN2UxOTYxNGM1MDhmOWEuLmNjZjg2ZDYxZTAxYjlhNTNjNmZmNGI0
NzljN2MwZTdhYWZkZjBjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFJlZlB0cjxEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViS2l0OjpXZWJQYWdlUHJv
eHkmKSB7IHJldHVybiBudWxscHRyOyB9CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdHJpbmc+IHNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIHVu
c2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPFN0cmluZz4mIGNoYWxsZW5nZVN0cmlu
ZywgY29uc3QgV2ViQ29yZTo6VVJMJikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwg
UmVmUHRyPFN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgdW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8U3RyaW5n
PiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXVEY6OlVSTCYpIHsgcmV0dXJuIG51bGxwdHI7IH0K
IAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9CkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgog
ICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBj
b250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3Jl
OjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiYpIHsg
fTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgV1RGOjpVUkwmJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYmLCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiYpIHsgfTsKICAgICAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKICAgICB2aXJ0dWFsIGJvb2wgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdJbihXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYpIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMjcs
OCArMTI3LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdmly
dHVhbCB2b2lkIHdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9s
aWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJD
b3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2Fk
UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgd2ViR0xMb2FkUG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RG
OjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb24pOyB9CisgICAgdmlydHVhbCB2b2lk
IHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6
OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7IH0KICNlbmRpZgogICAgIAogICAg
IHZpcnR1YWwgYm9vbCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBib29sIGluUGFnZUNhY2hl
KSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaAppbmRleCA1YmVlNmJjMmVlYTNmNzQyY2U1YWIxNTAyNDc2YTE2ODYxZTJiMjcxLi4xZDM1
MjcyYzljMmQ0MWQzNzgxMWUyNTg3NWViYTgzZGMxYzE1NDI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBydW5Nb2RhbChXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgfQogCi0gICAg
dmlydHVhbCB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViS2l0OjpXZWJQ
YWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgRGF0YSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzYXZlRGF0YVRvRmls
ZUluRG93bmxvYWRzRm9sZGVyKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgRGF0YSYpIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHBpbm5lZFN0YXRlRGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5
JikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNw
cAppbmRleCA3NTg0ZTYzMTIxMDJiNWIwYzUwMDdlYTliODhjYWM3ODNiOWUxNDZjLi40MDIyZWZk
Y2I5N2E1MDlmNmUwZWY4OTVkY2I2NzM4NjZhYTlmNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBBUEkgewogCi1XZWJDb3JlOjpVUkwgVXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwo
KQorV1RGOjpVUkwgVXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKQogewogICAgIHN0YXRp
YyB1aW50NjRfdCBpZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVVzZXJTY3JpcHQuaAppbmRleCAxN2E0MDkwOTg5N2Y3NDRiNTA1YTA0OTJhYzUwOGM0MDUwYjEz
MWM1Li4wMzMzMjgyMGIxNjAxMTQ5MTQwMzYxOGI2MzdmMzNkYTgxNGIxOGEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKQEAgLTIzLDggKzIzLDcgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSVVz
ZXJTY3JpcHRfaAotI2RlZmluZSBBUElVc2VyU2NyaXB0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgpAQCAt
MzUsNyArMzQsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgVXNlclNjcmlwdCBmaW5hbCA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclNjcmlwdD4sIHB1YmxpYyBJZGVu
dGlmaWVkPFVzZXJTY3JpcHQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViQ29yZTo6VVJMIGdl
bmVyYXRlVW5pcXVlVVJMKCk7CisgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJM
KCk7CiAKICAgICBzdGF0aWMgUmVmPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU2Ny
aXB0IHVzZXJTY3JpcHQsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgewpAQCAt
NTUsNSArNTQsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCi0KLSNlbmRp
ZiAvLyBBUElVc2VyU2NyaXB0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJVXNlclN0eWxlU2hlZXQuY3BwCmluZGV4IDFkNTk1YmIxNTg4ZDlmN2Q1ZDQ4ZmQ5MjFjZDFk
ZDk2NmIzZjg2YWYuLjNlYTQ2MWZlMWExNTZjNmE5ZDU4OTU4NDAzN2ZlMzg3YzI5MDdmMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNw
cApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotV2ViQ29yZTo6VVJMIFVz
ZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCitXVEY6OlVSTCBVc2VyU3R5bGVTaGVl
dDo6Z2VuZXJhdGVVbmlxdWVVUkwoKQogewogICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxl
U2hlZXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5o
CmluZGV4IGQ4NTZmN2E1MmY5YjUwNGUwZmE0MjNlYTlhM2I2ZTE1NzE0NTFlZGUuLjc1YmI5NWFm
ZWFjOGY4ZjFlODIyMzM1ZjI5M2U5ODM4N2I1ZDc2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBUElVc2VyU3R5
bGVTaGVldF9oCi0jZGVmaW5lIEFQSVVzZXJTdHlsZVNoZWV0X2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgpA
QCAtMzUsNyArMzQsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgVXNlclN0eWxlU2hlZXQg
ZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVzZXJTdHlsZVNoZWV0Piwg
cHVibGljIElkZW50aWZpZWQ8VXNlclN0eWxlU2hlZXQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
V2ViQ29yZTo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CisgICAgc3RhdGljIFdURjo6VVJMIGdl
bmVyYXRlVW5pcXVlVVJMKCk7CiAKICAgICBzdGF0aWMgUmVmPFVzZXJTdHlsZVNoZWV0PiBjcmVh
dGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0eWxlU2hlZXQsIEFQSTo6VXNlckNvbnRl
bnRXb3JsZCYgd29ybGQpCiAgICAgewpAQCAtNTUsNSArNTQsMyBAQCBwcml2YXRlOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgQVBJCi0KLSNlbmRpZiAvLyBBUElVc2VyU3R5bGVTaGVldF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuY3BwCmluZGV4IDZlNzk2NjI1NTJiOWY2ODA1MjAyOTRlYmI5ZDc0ZWJhYmQ4
MzI2NTAuLjRhMGZmYzQyZTU5NDFjMzA2YmNmZmJmODhjZTE1YWNjNzA5OWI1Y2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIK
ICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoc0Zyb21GaWxlVVJMcyhjb25zdCBBUEk6OkFycmF5JiBm
aWxlVVJMcykKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBBUEk6OlVSTCogYXBpVVJMID0gZmlsZVVSTHMuYXQ8QVBJOjpVUkw+KGkpOwogICAgICAgICBp
ZiAoYXBpVVJMKQotICAgICAgICAgICAgZmlsZVBhdGhzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIGFwaVVSTC0+c3RyaW5nKCkpLmZpbGVTeXN0ZW1QYXRoKCkp
OworICAgICAgICAgICAgZmlsZVBhdGhzLnVuY2hlY2tlZEFwcGVuZChVUkwoVVJMKCksIGFwaVVS
TC0+c3RyaW5nKCkpLmZpbGVTeXN0ZW1QYXRoKCkpOwogICAgIH0KIAogICAgIHJldHVybiBmaWxl
UGF0aHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBkZGUz
NmJjNDkwNWQ2ODJkMDVmMjg0ODM0ODJkOWRhZjI1MmQ2NWY5Li40ODk3ZjUyYzFmNjJkMTcwMmJh
ODZhYmU1MGY3OTdmYzRiZThkNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFdLUGFnZUxvYWRQbGFpblRleHRTdHJp
bmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHBsYWluVGV4dFN0cmluZ1JlZgogCiB2
b2lkIFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLU3RyaW5nUmVmIHBsYWluVGV4dFN0cmluZ1JlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVm
KQogewotICAgIGxvYWRTdHJpbmcocGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5nUmVmLCAidGV4dC9w
bGFpbiJfcywgYmxhbmtVUkwoKS5zdHJpbmcoKSwgdXNlckRhdGFSZWYpOworICAgIGxvYWRTdHJp
bmcocGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5nUmVmLCAidGV4dC9wbGFpbiJfcywgV1RGOjpibGFu
a1VSTCgpLnN0cmluZygpLCB1c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFdlYkFy
Y2hpdmVEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFSZWYp
CkBAIC0xNDczLDcgKzE0NzMsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VS
ZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogCiAgICAgICAg
ICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2Vy
SW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklk
ZW50aWZpZXIpOwogICAgICAgICAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhv
c3RzQXJlRXF1YWwoc291cmNlRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlc291cmNlUmVx
dWVzdC51cmwoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byBhcGlOYXZpZ2F0aW9uQWN0aW9uID0g
QVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0
YSksIHNvdXJjZUZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZNb3Zl
KHJlc291cmNlUmVxdWVzdCksIFdlYkNvcmU6OlVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdU
Rk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CisgICAgICAgICAgICAgICAgYXV0byBhcGlO
YXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3Rk
OjpudWxsb3B0LCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFVSTCgpLCBzaG91bGRPcGVuQXBw
TGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICAgICAgICAgICAg
ICBhdXRvIGFwaVdpbmRvd0ZlYXR1cmVzID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3JlYXRlKHdp
bmRvd0ZlYXR1cmVzKTsKIApAQCAtMTk0NSw3ICsxOTQ1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tD
bGllbnQKICAgICAgICAgICAgIG1fY2xpZW50LnJ1bk1vZGFsKHRvQVBJKCZwYWdlKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2F2ZURhdGFU
b0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgb3JpZ2luYXRpbmdVUkwsIEFQSTo6RGF0YSYgZGF0YSkgZmluYWwKKyAgICAgICAgdm9p
ZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgQVBJOjpEYXRhJiBkYXRhKSBmaW5hbAogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjE4NSw3ICsyMTg1LDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlTmF2aWdhdGlvbkNsaWUKICAgICAgICAgICAgIHJldHVybiBBUEk6OkRhdGE6OmNyZWF0ZSht
YXN0ZXJLZXkuZGF0YSgpLCBtYXN0ZXJLZXkuc2l6ZSgpKTsKICAgICAgICAgfQogCi0gICAgICAg
IFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdl
YlBhZ2VQcm94eSYgcGFnZSwgdW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJ
OjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBvdmVy
cmlkZQorICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmIHBhZ2UsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29u
c3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkg
b3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNvcHlTaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKHRvSW1wbChtX2NsaWVudC5jb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KHRvQVBJKCZwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCmluZGV4IDM5MGUxMjA3NDdlYWU4
OWNmZDlmZWU2OWRhY2VjYjZkZTA3OTVlYzUuLjAzNzc0MTBlYTdlNjdlNmIwOTEwY2ZiYzA1YTli
MzJmNThjYjQzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VH
cm91cC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNo
ZWV0KFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tTdHJpbmdSZWYgc291cmMKICAgICBh
dXRvIHdoaXRlbGlzdCA9IHRvSW1wbCh3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zKTsKICAgICBhdXRv
IGJsYWNrbGlzdCA9IHRvSW1wbChibGFja2xpc3RlZFVSTFBhdHRlcm5zKTsKIAotICAgIFJlZjxB
UEk6OlVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCA9IEFQSTo6VXNlclN0eWxlU2hlZXQ6
OmNyZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgKGJhc2VVUkxTdHJpbmcu
aXNFbXB0eSgpID8gV2ViQ29yZTo6YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgYmFzZVVSTFN0cmluZykpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVj
dG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5n
VmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMo
aW5qZWN0ZWRGcmFtZXMpLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJOjpVc2Vy
Q29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICBSZWY8QVBJOjpVc2VyU3R5bGVTaGVl
dD4gdXNlclN0eWxlU2hlZXQgPSBBUEk6OlVzZXJTdHlsZVNoZWV0OjpjcmVhdGUoV2ViQ29yZTo6
VXNlclN0eWxlU2hlZXQgeyBzb3VyY2UsIChiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdURjo6
YmxhbmtVUkwoKSA6ICBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpKSwgd2hpdGVsaXN0ID8gd2hp
dGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8g
YmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSwgV2ViQ29yZTo6VXNlclN0eWxlVXNl
ckxldmVsIH0sIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAKICAgICB0
b0ltcGwocGFnZUdyb3VwUmVmKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxl
U2hlZXQodXNlclN0eWxlU2hlZXQuZ2V0KCkpOwogfQpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFdL
UGFnZUdyb3VwQWRkVXNlclNjcmlwdChXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLU3Ry
aW5nUmVmIHNvdXJjZVJlZgogICAgIGF1dG8gd2hpdGVsaXN0ID0gdG9JbXBsKHdoaXRlbGlzdGVk
VVJMUGF0dGVybnMpOwogICAgIGF1dG8gYmxhY2tsaXN0ID0gdG9JbXBsKGJsYWNrbGlzdGVkVVJM
UGF0dGVybnMpOwogICAgIAotICAgIGF1dG8gdXJsID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkg
PyBXZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBiYXNl
VVJMU3RyaW5nKTsKKyAgICBhdXRvIHVybCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RG
OjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZyk7CiAgICAgUmVmPEFQSTo6
VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6
OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUodXJsKSwgd2hpdGVsaXN0ID8g
d2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0
ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgdG9Vc2VyQ29udGVudEluamVjdGVk
RnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdv
cmxkKCkpOwogICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIo
KS5hZGRVc2VyU2NyaXB0KHVzZXJTY3JpcHQuZ2V0KCksIEluamVjdFVzZXJTY3JpcHRJbW1lZGlh
dGVseTo6Tm8pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggMTA1NzdlZTljYzBhNzU4ZDA2ZTUxMDM1
Y2ZjYTBmNzVjOGZmYTQ3Ni4uYTNlMzQ2ODI1NmJiNjcwMDgyOTVmYzEzZjA3MmRmMzc5YjcwMDEy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCkBAIC00MSw4ICs0MSw4IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURh
dGFGZXRjaE9wdGlvbi5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFUeXBlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBXS1R5
cGVJRCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQoKQogewpAQCAtOTUsNyArOTUsNyBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZUZvckRlYnVnTW9kZShXSwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAg
IHN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBj
b21wbGV0aW9uSGFuZGxlcl0geworICAgIHN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRl
YnVnTW9kZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250
ZXh0KTsKICAgICB9KTsKIH0KQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPnNldExhc3RTZWVuKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7Cisg
ICAgc3RvcmUtPnNldExhc3RTZWVuKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVy
XSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAt
MTIxLDExICsxMjEsMTEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGEKICAgICB9CiAKICAgICBp
ZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShXZWJDb3JlOjpV
UkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICBzdG9yZS0+c2V0UHJldmFsZW50UmVz
b3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNv
bnRleHQpOwogICAgICAgICB9KTsKICAgICBlbHNlCi0gICAgICAgIHN0b3JlLT5jbGVhclByZXZh
bGVudFJlc291cmNlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAg
IHN0b3JlLT5jbGVhclByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiB9CkBAIC0xMzks
MTEgKzEzOSwxMSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmCiAgICAgfQogCiAgICAgaWYgKHZh
bHVlKQotICAgICAgICBzdG9yZS0+c2V0VmVyeVByZXZhbGVudFJlc291cmNlKFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIHN0b3JlLT5zZXRWZXJ5UHJldmFsZW50
UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29u
dGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGNvbnRleHQpOwogICAgICAgICB9KTsKICAgICBlbHNlCi0gICAgICAgIHN0b3JlLT5jbGVhclBy
ZXZhbGVudFJlc291cmNlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAg
ICAgIHN0b3JlLT5jbGVhclByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiB9CkBAIC0x
NjksNyArMTY5LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVMKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNh
bGxiYWNrXShib29sIGlzUHJldmFsZW50UmVzb3VyY2UpIHsKKyAgICBzdG9yZS0+aXNQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNh
bGxiYWNrKGlzUHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTgy
LDcgKzE4Miw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzVmVyeVByZXZh
bGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgc3RvcmUtPmlzVmVyeVByZXZhbGVudFJlc291cmNlKFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGlzVmVyeVByZXZhbGVudFJlc291cmNlKSB7CisgICAgc3RvcmUt
PmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzVmVyeVByZXZhbGVudFJlc291
cmNlKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzVmVyeVByZXZhbGVudFJlc291cmNlLCBjb250ZXh0
KTsKICAgICB9KTsKIH0KQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoV0tXZWJzaXRlRGF0YVN0
bwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXIoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChzdWJyZXNvdXJjZUhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKSB7CisgICAgc3Rv
cmUtPmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKHN1YnJlc291cmNlSG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIpIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3Rl
cmVkQXNTdWJyZXNvdXJjZVVuZGVyLCBjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTIwOCw3ICsy
MDgsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1
YkZyYW1lVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgc3RvcmUtPmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YkZyYW1lSG9zdCktPnN0cmluZygpKSwgV2Vi
Q29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5z
dHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1l
VW5kZXIpIHsKKyAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgewogICAgICAgICBjYWxsYmFjayhp
c1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjIx
LDcgKzIyMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJl
ZEFzUmVkaXJlY3RpbmdUbyhXS1dlYnNpdGVEYXRhU3RvcmVSCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3Ry
aW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RS
ZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8pIHsKKyAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNSZWRpcmVj
dGluZ1RvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3Ry
aW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJp
bmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8pIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvLCBjb250
ZXh0KTsKICAgICB9KTsKIH0KQEAgLTIzNSwxMSArMjM1LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYKICAgICB9CiAKICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5sb2dVc2VySW50
ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3Rv
cmUtPmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5z
dHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwogICAgIGVsc2UKLSAgICAgICAg
c3RvcmUtPmNsZWFyVXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5k
bGVyXSB7CisgICAgICAgIHN0b3JlLT5jbGVhclVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0p
OwogfQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0
aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbikgeworICAgIHN0
b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlckludGVyYWN0
aW9uKSB7CiAgICAgICAgIGNhbGxiYWNrKGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgY29udGV4dCk7
CiAgICAgfSk7CiB9CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3IK
ICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0R3JhbmRm
YXRoZXJlZChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSksIHZhbHVlKTsKKyAgICBzdG9yZS0+c2V0R3JhbmRmYXRoZXJlZChVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIHZhbHVlKTsKIH0KIAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWRGdW5jdGlvbiBjYWxsYmFj
aykKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c0dyYW5kZmF0aGVyZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc0dyYW5kZmF0aGVyZWQpIHsKKyAgICBzdG9yZS0+aGFz
SGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJlZCkgewogICAgICAg
ICBjYWxsYmFjayhpc0dyYW5kZmF0aGVyZWQsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjg1
LDcgKzI4NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvCiAgICAgaWYgKCFzdG9yZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmUtPnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJh
bWVIb3N0KS0+c3RyaW5nKCkpKTsKKyAgICBzdG9yZS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOwogfQogCiB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9z
dCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0KQpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bihXS1dlYnNpdGVEYXRhCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c3RvcmUtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkp
KTsKKyAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9z
dFJlZGlyZWN0ZWRUbykKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0
bwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3JlLT5zZXRTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSkpOworICAgIHN0b3Jl
LT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVj
dGVkVG8pLT5zdHJpbmcoKSkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3Rl
ZEZyb20pCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVMKICAgICBp
ZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgc3RvcmUtPnNldFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkpOworICAgIHN0b3Jl
LT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGly
ZWN0ZWRGcm9tKS0+c3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVk
VG8pCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICBpZiAo
IXN0b3JlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgc3RvcmUtPnNldFRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RUbyhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmlu
ZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKQEAgLTMzMCw3
ICszMzAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhU3RvcgogICAgIGlmICghc3RvcmUpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZy
b20oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RS
ZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFRvcEZyYW1lVW5pcXVl
UmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkp
OwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNl
ckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBz
ZWNvbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
SFRUUENvb2tpZVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
SFRUUENvb2tpZVN0b3JlLm1tCmluZGV4IGE4MDZiZGVjMmUyZDQ4MjNiMmYxZTkyZWQxMzNlNzEz
NjVkZWY2NjQuLmM4NTgwMzNhZTU5MWIzYTIyMzliMDFmMWI5YjBmMzlmZGZiYjQwYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9y
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW0KQEAgLTMwLDEwICszMCwxMCBAQAogCiAjaW1wb3J0ICJIVFRQQ29va2llQWNjZXB0
UG9saWN5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0Nvb2tpZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYv
SGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKIHN0YXRpYyBOU0FycmF5PE5TSFRUUENv
b2tpZSAqPiAqY29yZUNvb2tpZXNUb05TQ29va2llcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYgY29yZUNvb2tpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlclNjcmlwdC5tbQppbmRleCA5Y2Y2NjgxYWFiMzkxYzM1YjYzNzkwN2IxMTEwODZm
ODI3OTc2ZDVhLi44ZTBjNzIxMjg2ODI4MjExOWYyZjg5ZjI5NTA2NWFmNGQyZmVhMDljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0K
QEAgLTk1LDcgKzk1LDcgQEAKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJ
OjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgV2ViQ29yZTo6VVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxl
Z2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgQVBJ
Ojp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFp
bkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5q
ZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsK
KyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2Vs
ZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lh
dGVkVVJMKSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3Ry
aW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVj
dGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmpl
Y3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29u
dGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDg4
MTQzNDIwNjYzMmVlNTdjNzIyM2Y4NWUzYTIyZDJjMDQwYzFjMWIuLmFjZDBmY2FiMmU3Zjc2OWI4
ZTg2ZjAyMjExZGZhNDU3MjJhMDBlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTI4Myw3ICsxMjgzLDcgQEAgc3RhdGljIE5TRGlj
dGlvbmFyeSAqZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uRm9yRWRpdG9yU3RhdGUoY29uc3QgV2Vi
S2l0OjpFZGl0b3IKICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBlZGl0b3JTdGF0
ZURpZENoYW5nZTpkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb25Gb3JFZGl0b3JTdGF0ZShfcGFnZS0+
ZWRpdG9yU3RhdGUoKSldOwogfQogCi0tICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZzoo
Y29uc3QgV2ViS2l0OjpTYWZlQnJvd3NpbmdXYXJuaW5nJil3YXJuaW5nIGNvbXBsZXRpb25IYW5k
bGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2Fm
ZUxvYWQsIFdlYkNvcmU6OlVSTD4mJik+JiYpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX3No
b3dTYWZlQnJvd3NpbmdXYXJuaW5nOihjb25zdCBXZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5pbmcm
KXdhcm5pbmcgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmFyaWFu
dDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4mJiljb21wbGV0aW9uSGFuZGxl
cgogewogICAgIF9zYWZlQnJvd3NpbmdXYXJuaW5nID0gYWRvcHROUyhbW1dLU2FmZUJyb3dzaW5n
V2FybmluZyBhbGxvY10gaW5pdFdpdGhGcmFtZTpzZWxmLmJvdW5kcyBzYWZlQnJvd3NpbmdXYXJu
aW5nOndhcm5pbmcgY29tcGxldGlvbkhhbmRsZXI6W3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tX
ZWJWaWV3PihzZWxmKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoYXV0byBzdHJvbmdT
ZWxmID0gd2Vha1NlbGYuZ2V0KCkpCkBAIC00Nzc2LDcgKzQ3NzYsNyBAQCBGT1JfRUFDSF9QUklW
QVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKEZPUldBUkRfQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcp
CiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhUaXRsZTooTlNTdHJpbmcgKil0
aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5pbmcgZGV0YWlsczooTlNBdHRyaWJ1dGVkU3Ry
aW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlcgogewogICAgIGF1dG8gc2FmZUJyb3dzaW5nV2FybmluZyA9IFdlYktpdDo6U2FmZUJy
b3dzaW5nV2FybmluZzo6Y3JlYXRlKHRpdGxlLCB3YXJuaW5nLCBkZXRhaWxzKTsKLSAgICBhdXRv
IHdyYXBwZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSAoVmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgV2ViQ29yZTo6VVJM
PiYmIHZhcmlhbnQpIHsKKyAgICBhdXRvIHdyYXBwZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoVmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVl
VW5zYWZlTG9hZCwgVVJMPiYmIHZhcmlhbnQpIHsKICAgICAgICAgc3dpdGNoT24odmFyaWFudCwg
WyZdIChXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCBjb250aW51ZVVuc2FmZUxvYWQpIHsKICAg
ICAgICAgICAgIHN3aXRjaCAoY29udGludWVVbnNhZmVMb2FkKSB7CiAgICAgICAgICAgICBjYXNl
IFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkOjpZZXM6CkBAIC00Nzg0LDcgKzQ3ODQsNyBAQCBG
T1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKEZPUldBUkRfQUNUSU9OX1RPX1dL
Q09OVEVOVFZJRVcpCiAgICAgICAgICAgICBjYXNlIFdlYktpdDo6Q29udGludWVVbnNhZmVMb2Fk
OjpObzoKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTk8pOwogICAg
ICAgICAgICAgfQotICAgICAgICB9LCBbJl0gKFdlYkNvcmU6OlVSTCkgeworICAgICAgICB9LCBb
Jl0gKFVSTCkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihOTyk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQppbmRleCA5ZGU1ZTU4ZWE2N2Y3N2E3NmQ1YTI0MzY1ZWFjMjI3Zjc4M2JkZjFiLi5kMjg3ZmQ5
NWJkYzc5YmM5NDg2YzNlZDRmODM2ZTZlYzAwMzIwM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQpAQCAtNDQsOCArNDQsOCBAQAogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkxQYXJzZXIuaD4KICNpbXBv
cnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTQ4
Nyw3ICs0ODcsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmRlZmF1bHRBcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQoKQogICAgIGlmIChbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6dXJsU2NoZW1l
XSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9u
IGZvcm1hdDpAIiclQCcgaXMgYSBVUkwgc2NoZW1lIHRoYXQgV0tXZWJWaWV3IGhhbmRsZXMgbmF0
aXZlbHkiLCB1cmxTY2hlbWVdOwogCi0gICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJDb3Jl
OjpVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAgYXV0
byBjYW5vbmljYWxTY2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hl
bWUodXJsU2NoZW1lKTsKICAgICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgW05TRXhj
ZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIiclQCcgaXMg
bm90IGEgdmFsaWQgVVJMIHNjaGVtZSIsIHVybFNjaGVtZV07CiAKQEAgLTQ5OSw3ICs0OTksNyBA
QCBzdGF0aWMgTlNTdHJpbmcgKmRlZmF1bHRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoKQog
CiAtIChpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1l
OihOU1N0cmluZyAqKXVybFNjaGVtZQogewotICAgIGF1dG8gY2Fub25pY2FsU2NoZW1lID0gV2Vi
Q29yZTo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOworICAg
IGF1dG8gY2Fub25pY2FsU2NoZW1lID0gV1RGOjpVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXpl
U2NoZW1lKHVybFNjaGVtZSk7CiAgICAgaWYgKCFjYW5vbmljYWxTY2hlbWUpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggYjA2NWIzNTE4ZjgyOWNlZjM1M2Q3ODFjMWFhMDBh
Njk5NDgwMmQ0NS4uMWQxNTE5NGNiZmJhOWE5ZDZhYTI3NDc5Y2M3YmE1YWU4NmIzYjc1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVy
bmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0lu
dGVybmFsLmgKQEAgLTcyLDEwICs3Miw2IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIHN0cnVjdCBQ
cmludEluZm87CiB9CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQogQGNs
YXNzIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5OwogQGNsYXNzIFdLUGFzc3dvcmRW
aWV3OwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwpAQCAtMTg0LDcgKzE4MCw3IEBAIGNsYXNzIFVS
TDsKIC0gKHZvaWQpX2RpZEludmFsaWRhdGVEYXRhRm9yQXR0YWNobWVudDooQVBJOjpBdHRhY2ht
ZW50JilhdHRhY2htZW50OwogI2VuZGlmCiAKLS0gKHZvaWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJu
aW5nOihjb25zdCBXZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5pbmcmKXdhcm5pbmcgY29tcGxldGlv
bkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVl
VW5zYWZlTG9hZCwgV2ViQ29yZTo6VVJMPiYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZv
aWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nOihjb25zdCBXZWJLaXQ6OlNhZmVCcm93c2luZ1dh
cm5pbmcmKXdhcm5pbmcgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4mJiljb21wbGV0aW9u
SGFuZGxlcjsKIC0gKHZvaWQpX2NsZWFyU2FmZUJyb3dzaW5nV2FybmluZzsKIAogLSAoc3RkOjpv
cHRpb25hbDxCT09MPilfcmVzb2x1dGlvbkZvclNoYXJlU2hlZXRJbW1lZGlhdGVDb21wbGV0aW9u
Rm9yVGVzdGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IGU0MjZhYzM1NmIzYzg2NTAxNmMzYzM5MjFj
ZjRlMDAwZDNkOWM2NTguLjMxMjJkNWRhZjFiYzAzNDNlMDU5MWM4ZWFjZGY5YjIxNGJlMmVmMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQpAQCAtMzgsOSArMzgsOSBAQAogI2ltcG9ydCAiV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlv
bi5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJLaXQvU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
IEBpbXBsZW1lbnRhdGlvbiBXS1dlYnNpdGVEYXRhU3RvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5t
bQppbmRleCAzZWRkODUzMWEwOThiMDRmMjQzN2Q3ZGU1Yjg1NDBmM2Y2MGVjZjcyLi5kZmVkMGE5
YmUxNzUzNzIyYjY1NDA3NzFjODdiMzY1YWI2ZGYwOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5t
bQpAQCAtNTQsOSArNTQsOSBAQAogICAgICAgICBXVEY6OlN0cmluZyhuYW1lKSwKICAgICAgICAg
V1RGOjpTdHJpbmcoc2hvcnROYW1lKSwKICAgICAgICAgV1RGOjpTdHJpbmcoZGVzY3JpcHRpb24p
LAotICAgICAgICBXZWJDb3JlOjpVUkwoc2NvcGVVUkwpLAorICAgICAgICBVUkwoc2NvcGVVUkwp
LAogICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0OjpEaXNw
bGF5PihkaXNwbGF5KSwKLSAgICAgICAgV2ViQ29yZTo6VVJMKHN0YXJ0VVJMKQorICAgICAgICBV
Ukwoc3RhcnRVUkwpCiAgICAgfTsKIAogICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBw
ZXI8QVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0PihzZWxmLCBXVEZNb3ZlKGNvcmVBcHBsaWNhdGlv
bk1hbmlmZXN0KSk7CkBAIC04Myw3ICs4Myw3IEBACiAKICsgKF9XS0FwcGxpY2F0aW9uTWFuaWZl
c3QgKilhcHBsaWNhdGlvbk1hbmlmZXN0RnJvbUpTT046KE5TU3RyaW5nICopanNvbiBtYW5pZmVz
dFVSTDooTlNVUkwgKiltYW5pZmVzdFVSTCBkb2N1bWVudFVSTDooTlNVUkwgKilkb2N1bWVudFVS
TAogewotICAgIGF1dG8gbWFuaWZlc3QgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFy
c2VyOjpwYXJzZShXVEY6OlN0cmluZyhqc29uKSwgV2ViQ29yZTo6VVJMKG1hbmlmZXN0VVJMKSwg
V2ViQ29yZTo6VVJMKGRvY3VtZW50VVJMKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlKFdURjo6U3RyaW5nKGpzb24pLCBVUkwo
bWFuaWZlc3RVUkwpLCBVUkwoZG9jdW1lbnRVUkwpKTsKICAgICByZXR1cm4gd3JhcHBlcihBUEk6
OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmNyZWF0ZShtYW5pZmVzdCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0K
aW5kZXggZTZmMDkwZmY1ZDQxMzdjNjU4OWNlZThmY2E4MzUwMTNiOGE2ZGUzZC4uNjE0NTIzMmEw
ZDhlN2YxYThkNzJkYWQ3MTM3N2JhNWM3NGJiODRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQpAQCAtNzAsNyAr
NzAsNyBAQAogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJh
dGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMg
ZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBiZT8KICAgICBXZWJLaXQ6Oklu
aXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVy
PEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RG
OjpTdHJpbmcoc291cmNlKSwgeyBXZWJDb3JlOjpVUkwoKSwgV1RGOjpTdHJpbmcoW2Jhc2VVUkwg
X3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVn
YWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBmb3JN
YWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJ
bmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sICp1c2VyQ29u
dGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVj
dEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIHsgIFVSTCgpLCBXVEY6OlN0cmluZyhbYmFzZVVS
TCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSkgfSwgQVBJOjp0b1N0cmluZ1ZlY3Rvcihs
ZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZv
ck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6
OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJD
b250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAK
aW5kZXggYTcyOWZhYjlhNzllMWRjZDE1NGY0MzA5MWQxN2Y0ZWRjODBkZjNiNC4uNjc0YTVkYjA0
M2M4YTYwZjM2MjBhYTdiYTAxOGMxZjk4NWVkZjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAvLyBGb3IgbWV0aG9kcyB0aGF0IGFyZSBtZWFu
dCB0byBzdXBwb3J0IEFQSSBmcm9tIHRoZSBtYWluIHRocmVhZCAtIHNob3VsZCBub3QgYmUgY2Fs
bGVkIGludGVybmFsbHkKICNkZWZpbmUgQVNTRVJUX05PVF9TWU5DX1RIUkVBRCgpIEFTU0VSVCgh
bV9zeW5jVGhyZWFkUnVubmluZyB8fCAhSVNfSUNPTl9TWU5DX1RIUkVBRCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2Vy
LmNwcAppbmRleCBkZTgyZmRhYjVjN2Y5NTNmYTViY2FmNDA3ZDljNjZjYjE4NTIyN2UzLi43YTk0
MjkxOWRkZjhjNGYyYTNiMTZkYTc2NzAxNGIyYzJjMTU0ZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcApA
QCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9jb29raWVz
KFdlYktpdENvb2tpZU1hbmFnZXIqIG1hbmFnZXIsIGNvbnN0IGdjaGFyCiAKICAgICAvLyBDb29r
aWVzIGFyZSByZWFkL3dyaXR0ZW4gZnJvbS90byB0aGUgc2FtZSBTUUxpdGUgZGF0YWJhc2Ugb24g
ZGlzayByZWdhcmRsZXNzCiAgICAgLy8gb2YgdGhlIHByb2Nlc3Mgd2UgYWNjZXNzIHRoZW0gZnJv
bSwgc28ganVzdCB1c2UgdGhlIGZpcnN0IHByb2Nlc3MgcG9vbC4KLSAgICBwcm9jZXNzUG9vbHNb
MF0tPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5nZXRDb29raWVzKHNlc3Np
b25JRCwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkp
LCBbdGFzayA9IFdURk1vdmUodGFzayldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBj
b29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgcHJvY2Vzc1Bvb2xzWzBd
LT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0Q29va2llcyhzZXNzaW9u
SUQsIFVSTChVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSwgW3Rhc2sgPSBXVEZNb3ZlKHRh
c2spXShjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSkgewogICAgICAgICAgICAgLy8gVGhpcyBjYW4gb25seSBoYXBwZW4gaW4gY2FzZXMg
d2hlcmUgdGhlIHdlYiBwcm9jZXNzIGlzIG5vdCBhdmFpbGFibGUsCiAgICAgICAgICAgICAvLyBj
b25zaWRlciB0aGUgb3BlcmF0aW9uICJjYW5jZWxsZWQiIGZyb20gdGhlIHBvaW50IG9mIHZpZXcg
b2YgdGhlIGNsaWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCmluZGV4IGNkMDI2ZTRmOGU5
MWE3YWJmYjE5YmNjMzBiMGExMjM1OGYyN2RlNTAuLjM3ZTZjY2EwY2ViY2U5MTQ3MzBlM2M2ZDQy
NWM1ZmVmNzdmYjQ4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcApAQCAtMjcsOCArMjcs
OCBAQAogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGlu
Zy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZH
VHlwZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDNiY2MyMTIzNjc4NTkzNmE3NzEyOTdlNmUz
OThkMjgwZGZiNmI4MDIuLjg4MzM2YjNkYzQ2ODQ5ODhhYzc3ZDE2OWRhNmE1OTVlNjFlNTllNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3Vy
aXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJXZWJLaXRT
ZWN1cml0eU9yaWdpbi5oIgogCiAjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlPcmlnaW5Qcml2YXRl
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAvKioKQEAgLTExMCw3ICsxMTAsNyBAQCBXZWJL
aXRTZWN1cml0eU9yaWdpbiogd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaShjb25z
dCBnY2hhciogdXJpKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHVyaSwgbnVsbHB0cik7
CiAKLSAgICByZXR1cm4gd2Via2l0U2VjdXJpdHlPcmlnaW5DcmVhdGUoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFN0cmluZzo6ZnJv
bVVURjgodXJpKSkpKTsKKyAgICByZXR1cm4gd2Via2l0U2VjdXJpdHlPcmlnaW5DcmVhdGUoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgo
dXJpKSkpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggNThiZDdiZTRiYmM1ZjJmY2UzZWNlZTEzYjY1
MzBkMzUwZWQ4MTViZC4uMWM3Njg4NjkwNzgxZjJhMDljMGM4YjdiNDhmNzhlOGVlZTU1NjkwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xp
ZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlTmV3UGFn
ZShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxBUEk6OkZyYW1lSW5mbz4mJiBmcmFtZUluZm8sIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlc291cmNlUmVxdWVzdCwgV2ViQ29yZTo6V2luZG93
RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKICAgICB7CiAgICAgICAgIGF1dG8gdXNl
ckluaXRpYXRlZEFjdGl2aXR5ID0gcGFnZS5wcm9jZXNzKCkudXNlckluaXRpYXRlZEFjdGl2aXR5
KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICAg
ICAgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiBuYXZpZ2F0aW9uQWN0aW9uKEFQSTo6TmF2aWdhdGlv
bkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm8u
cHRyKCksIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBX
ZWJDb3JlOjpVUkwgeyB9LCBmYWxzZSwgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKSk7
CisgICAgICAgIFdlYktpdE5hdmlnYXRpb25BY3Rpb24gbmF2aWdhdGlvbkFjdGlvbihBUEk6Ok5h
dmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgZnJh
bWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1
ZXN0KSwgVVJMIHsgfSwgZmFsc2UsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSkpOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3ZWJraXRXZWJWaWV3Q3JlYXRlTmV3UGFnZShtX3dl
YlZpZXcsIHdpbmRvd0ZlYXR1cmVzLCAmbmF2aWdhdGlvbkFjdGlvbikpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0LmNwcAppbmRleCA5MTY3NGFjMjg4ZjdlNzhmNDUxZTk1OTNkM2E1NTQ4ZmY1
OTg4ODlmLi4wN2I1OGFkMzIzZDU0NThjOTAzNjYzZGI4MzBlOTRiZTdlNWQ4OGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0LmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcAppbmRleCAwZmE0YTE4Zjg5YzhjNTFhNDU0MDc3OGY1YWUyN2JlYTg3ZDdiNWYx
Li4yMzQ4NTk2NjNkMWYyYzc4MDg5OGYwNjBmNDAxNDk4OGU3ODZiNGY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNjYs
MTIgKzY2LDEyIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDxqc2MvSlNDQ29udGV4dFByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRp
ZmljYXRlSW5mby5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlZlB0ckNhaXJvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxnbGli
L2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9H
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0yNjQ3LDcgKzI2NDcsNyBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgY29uc3QgZ2NoYXIqIHBsYWluVAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHBsYWluVGV4dCk7CiAKLSAg
ICBnZXRQYWdlKHdlYlZpZXcpLmxvYWREYXRhKHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4ocGxhaW5UZXh0KSwgcGxhaW5UZXh0ID8gc3RybGVuKHBsYWluVGV4dCkgOiAwIH0sICJ0
ZXh0L3BsYWluIl9zLCAiVVRGLTgiX3MsIGJsYW5rVVJMKCkuc3RyaW5nKCkpOworICAgIGdldFBh
Z2Uod2ViVmlldykubG9hZERhdGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihw
bGFpblRleHQpLCBwbGFpblRleHQgPyBzdHJsZW4ocGxhaW5UZXh0KSA6IDAgfSwgInRleHQvcGxh
aW4iX3MsICJVVEYtOCJfcywgV1RGOjpibGFua1VSTCgpLnN0cmluZygpKTsKIH0KIAogLyoqCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggYmJkNTE2
ZTcyOTYyMzM3YmRkZmVjZDBjNTZkMzk4MTQ4MzNkOGE3NC4uYjdlNjMzMGVhZWIyZTIwMjJlNjIz
ZjNhNjhlYzFiYzE3YWEzNzc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIldlYktpdFVzZXJDb250
ZW50TWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXgg
YjQ0YjdkYjFlYTgzMmQ3OWJhZTlhNDdhMmM1ODI5MTU5YmZiNjA0Ni4uZWRhZTA4M2U5ZTk4NDVh
NDJhYWRhNjhjMDM1MzIzZDIzNzA0MmJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNw
cApAQCAtMTA2LDExICsxMDYsMTEgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
c2hvd1BheW1lbnRVSShjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW4KIAogICAgIG1f
c3RhdGUgPSBTdGF0ZTo6QWN0aXZhdGluZzsKIAotICAgIFdlYkNvcmU6OlVSTCBvcmlnaW5hdGlu
Z1VSTChXZWJDb3JlOjpVUkwoKSwgb3JpZ2luYXRpbmdVUkxTdHJpbmcpOworICAgIFVSTCBvcmln
aW5hdGluZ1VSTChVUkwoKSwgb3JpZ2luYXRpbmdVUkxTdHJpbmcpOwogCi0gICAgVmVjdG9yPFdl
YkNvcmU6OlVSTD4gbGlua0ljb25VUkxzOworICAgIFZlY3RvcjxVUkw+IGxpbmtJY29uVVJMczsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGxpbmtJY29uVVJMU3RyaW5nIDogbGlua0ljb25VUkxTdHJp
bmdzKQotICAgICAgICBsaW5rSWNvblVSTHMuYXBwZW5kKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpV
UkwoKSwgbGlua0ljb25VUkxTdHJpbmcpKTsKKyAgICAgICAgbGlua0ljb25VUkxzLmFwcGVuZChV
UkwoVVJMKCksIGxpbmtJY29uVVJMU3RyaW5nKSk7CiAKICAgICBwbGF0Zm9ybVNob3dQYXltZW50
VUkob3JpZ2luYXRpbmdVUkwsIGxpbmtJY29uVVJMcywgcGF5bWVudFJlcXVlc3QsIFt0aGlzXShi
b29sIHJlc3VsdCkgewogICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZhdGlu
Zyk7CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKQogICAgIGRpZFJlYWNoRmluYWxTdGF0ZSgpOwogfQog
Ci12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFs
aWRhdGVNZXJjaGFudChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQobV9tZXJjaGFudFZh
bGlkYXRpb25TdGF0ZSA9PSBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6SWRsZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGUwM2M3MGFiOGI5YzIyNTk4MzU0MTE2OTE5Zjc5ZWVh
M2FjOWYxNjcuLjFmYmNkMzQ1NjEzYzA3ZDRlZTkxOWE3ZGU0NTk1ZDBhMjU2Y2VlZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtNDcsNyArNDcsNiBAQCBjbGFzcyBQYXltZW50Owog
Y2xhc3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uOwogY2xh
c3MgUGF5bWVudE1ldGhvZDsKLWNsYXNzIFVSTDsKIH0KIAogT0JKQ19DTEFTUyBOU09iamVjdDsK
QEAgLTY1LDcgKzY0LDcgQEAgcHVibGljOgogICAgIH5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSgpOwogCiAgICAgdm9pZCBkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwotICAgIHZvaWQgdmFs
aWRhdGVNZXJjaGFudChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHZhbGlkYXRlTWVy
Y2hhbnQoY29uc3QgVVJMJik7CiAgICAgdm9pZCBkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFdl
YkNvcmU6OlBheW1lbnQmKTsKICAgICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYp
OwogICAgIHZvaWQgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1l
bnRDb250YWN0Jik7CkBAIC0xMDMsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHBsYXRm
b3JtQ2FuTWFrZVBheW1lbnRzKCk7CiAgICAgdm9pZCBwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dp
dGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpOwogICAgIHZvaWQgcGxhdGZvcm1PcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYg
bWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rp
b248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgcGxhdGZvcm1T
aG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJM
JiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0
ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9u
Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAgICB2
b2lkIHBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKaW5kZXggYmY0MjljODk2NDI4ZTgzNjA5
MDQ5NDc1YWJmYjRkNjljNmFlZjIxNS4uYzRkNzlmZTRjMTJjOWFiODU0ZmJiZDQyNTEzYjc4NTM4
MzA3MmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2Eu
aApAQCAtMzEsMTUgKzMxLDExIEBACiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEku
aD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBVUkw7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xh
c3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk7CiAKLVJldGFpblB0cjxQS1BheW1lbnRSZXF1
ZXN0PiB0b1BLUGF5bWVudFJlcXVlc3QoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJM
cywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKTsKK1JldGFp
blB0cjxQS1BheW1lbnRSZXF1ZXN0PiB0b1BLUGF5bWVudFJlcXVlc3QoV2ViUGFnZVByb3h5Jiwg
Y29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJM
cywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKTsKIAogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQppbmRleCAw
NTZkNWMzZjRhNTM5NGQzY2Y1ZGVkNmQ2ZGI1NGYwZjg2NjRhOTMzLi45ZmNhYjQyOWEyNDBiMDY1
MWYzMDE3MTM1ZTdkMDBiMTRhODM3YmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9ydCAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEzMDApCiBTT0ZUX0xJTktfRlJBTUVXT1JLKENvbnRh
Y3RzKQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRpYyBQS1BheW1lbnRSZXF1ZXN0QVBJVHlwZSB0
b0FQSVR5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6CiB9CiAjZW5k
aWYKIAotUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQ
YWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0KQorUmV0YWlu
UHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmIHdl
YlBhZ2VQcm94eSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4m
IGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmIHBheW1lbnRSZXF1ZXN0KQogewogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbUEFMOjph
bGxvY1BLUGF5bWVudFJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IGY5ZTI4MGQxYzk1NmE2ZDhkZTcyNTQxZmZm
MDk3ZjU4Y2RlYWE4NjguLjVkN2I0M2U3OTM5YzM3ZWYyODRkOTNiY2YwMjY3NjUzZDJhYzAzMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
cHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KQEAgLTM4LDcgKzM4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0
aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RG
OjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9y
aWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25z
dCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RGOjpG
dW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFVJVmlld0Nv
bnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fd2ViUGFnZVByb3h5LnVpQ2xp
ZW50KCkucHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1hYy5tbQppbmRleCBiZDgzMGM2MjQ0ZGRmNTY5YzUxODVkYmU5Yjc1MDM2
MDBjOWM3Yzc2Li4zNzRlZmI1M2ZmNDhkZDhjYmU0ZTg2ZDNhYTY0MjMzYjA2YzBkMDFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC0zNSw3ICszNSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIFdURjo6RnVu
Y3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5h
dGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2Vi
Q29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIFdURjo6RnVuY3Rp
b248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHBheW1lbnRS
ZXF1ZXN0ID0gdG9QS1BheW1lbnRSZXF1ZXN0KG1fd2ViUGFnZVByb3h5LCBvcmlnaW5hdGluZ1VS
TCwgbGlua0ljb25VUkxTdHJpbmdzLCByZXF1ZXN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApp
bmRleCBiYmE3M2RhN2RmMTBmOGRmM2ZkN2FhNTEyYWEzMzVhZDc2MzI2MmEzLi5kZDBjYjQ0Mjcw
NjllMDc0ZmI1ODBiMTFjMmU5YzM5YjFkYmIzOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApA
QCAtNDQsMTAgKzQ0LDEwIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9u
dGVuZFJvdXRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaD4KIApAQCAtNjY5LDcgKzY2OSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246Om5hdmlnYXRlQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBT
CiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKElu
dmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdwYWdlTG9hZFN0cmF0ZWd5JyBpcyBpbnZh
bGlkLiIpOwogICAgIGF1dG8gcGFnZUxvYWRUaW1lb3V0ID0gb3B0aW9uYWxQYWdlTG9hZFRpbWVv
dXQgPyBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKCpvcHRpb25hbFBhZ2VMb2FkVGltZW91dCkg
OiBkZWZhdWx0UGFnZUxvYWRUaW1lb3V0OwogCi0gICAgcGFnZS0+bG9hZFJlcXVlc3QoV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB1cmwpKTsKKyAgICBwYWdlLT5sb2FkUmVxdWVzdChVUkwo
VVJMKCksIHVybCkpOwogICAgIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uUGFnZSgqcGFn
ZSwgcGFnZUxvYWRTdHJhdGVneS52YWx1ZSgpLCBwYWdlTG9hZFRpbWVvdXQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKIH0KIApAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgc3RhdGljIFN0cmluZyBkb21haW5C
eUFkZGluZ0RvdFByZWZpeElmTmVlZGVkKFN0cmluZyBkb21haW4pCiAgICAgaWYgKGRvbWFpblsw
XSAhPSAnLicpIHsKICAgICAgICAgLy8gUkZDIDI5NjU6IElmIGFuIGV4cGxpY2l0bHkgc3BlY2lm
aWVkIHZhbHVlIGRvZXMgbm90IHN0YXJ0IHdpdGggYSBkb3QsIHRoZSB1c2VyIGFnZW50IHN1cHBs
aWVzIGEgbGVhZGluZyBkb3QuCiAgICAgICAgIC8vIEFzc3VtZSB0aGF0IGFueSBob3N0IHRoYXQg
ZW5kcyB3aXRoIGEgZGlnaXQgaXMgdHJ5aW5nIHRvIGJlIGFuIElQIGFkZHJlc3MuCi0gICAgICAg
IGlmICghV2ViQ29yZTo6VVJMOjpob3N0SXNJUEFkZHJlc3MoZG9tYWluKSkKKyAgICAgICAgaWYg
KCFVUkw6Omhvc3RJc0lQQWRkcmVzcyhkb21haW4pKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoJy4nLCBkb21haW4pOwogICAgIH0KICAgICAKQEAgLTEzMTAsNyArMTMxMCw3IEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2tpZShjb25zdCBTdHJpbmcmIGJy
b3dzaW5nQ29udGV4dEhhbmRsZSwKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIFdlYkNvcmU6OlVS
TCBhY3RpdmVVUkwgPSBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHBhZ2UtPnBhZ2VMb2Fk
U3RhdGUoKS5hY3RpdmVVUkwoKSk7CisgICAgVVJMIGFjdGl2ZVVSTCA9IFVSTChVUkwoKSwgcGFn
ZS0+cGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKTsKICAgICBBU1NFUlQoYWN0aXZlVVJMLmlz
VmFsaWQoKSk7CiAKICAgICBXZWJDb3JlOjpDb29raWUgY29va2llOwpAQCAtMTM2Nyw3ICsxMzY3
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyhFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIFNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAgV2Vi
Q29yZTo6VVJMIGFjdGl2ZVVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgcGFnZS0+
cGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKTsKKyAgICBVUkwgYWN0aXZlVVJMID0gVVJMKFVS
TCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZlVVJMKCkpOwogICAgIEFTU0VSVChhY3Rp
dmVVUkwuaXNWYWxpZCgpKTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFu
YWdlciA9IG1fcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5Pigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQpp
bmRleCBjNWE1ZDZiZGYxNzgyZjM0ZGUyNDFkYmFjY2Y1ZGIyODI2MzMzMGYxLi5lOWQ3MjM4NGU0
OTFlOTY3MjFjNjUwNmRkY2EzYjM0Y2MwMzI0MGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQg
RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHkpCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9h
ZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHdl
YlBhZ2UgPSBkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpKSB7Ci0gICAgICAgICAgICBX
ZWJDb3JlOjpVUkwgZGVzdGluYXRpb25VUkwgPSBXZWJDb3JlOjpVUkw6OmZpbGVVUkxXaXRoRmls
ZVN5c3RlbVBhdGgoZG93bmxvYWRQcm94eS5kZXN0aW5hdGlvbkZpbGVuYW1lKCkpOworICAgICAg
ICAgICAgV1RGOjpVUkwgZGVzdGluYXRpb25VUkwgPSBXVEY6OlVSTDo6ZmlsZVVSTFdpdGhGaWxl
U3lzdGVtUGF0aChkb3dubG9hZFByb3h5LmRlc3RpbmF0aW9uRmlsZW5hbWUoKSk7CiAgICAgICAg
ICAgICBpZiAoIWRlc3RpbmF0aW9uVVJMLmZyYWdtZW50SWRlbnRpZmllcigpLmxlbmd0aCgpKQog
ICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uVVJMLnNldEZyYWdtZW50SWRlbnRpZmllcihkb3du
bG9hZFByb3h5LnJlcXVlc3QoKS51cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgICAg
ICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigpLT5maW5pc2goZGVzdGluYXRp
b25VUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUuaAppbmRleCBiMTBkYzg5NWZhZTg0MjI4YmRjNzhkZTRlNjgxNDRhMTFkOTFhMWY5Li5jMDJj
MTU2NGRkZTIyZDZhY2UyYWU1ZDI0ZThjM2QxZGU1MmRjNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTE3LDcgKzExNyw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5
KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogCi0gICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4g
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVk
IGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5n
LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICAgICAgUmVmUHRyPEFQSTo6U3Ry
aW5nPiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiwgdW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VT
dHJpbmcsIGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAg
ICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRl
OwpAQCAtMTI1LDggKzEyNSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICAgICAgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kpPiYmKSBjb25zdCBmaW5hbDsKLSAgICAgICAgdm9pZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmluYWw7CisgICAgICAgIHZv
aWQgd2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmluYWw7Cisg
ICAgICAgIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBV
UkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYp
IGNvbnN0IGZpbmFsOwogICAgICAgICBib29sIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShX
ZWJQYWdlUHJveHkmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgYm9vbCBpblBhZ2VDYWNoZSkg
ZmluYWw7CiAgICAgICAgIGJvb2wgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdJbihXZWJQYWdlUHJv
eHkmLCBBUEk6OkRpY3Rpb25hcnkmKSBmaW5hbDsKICAgICAgICAgYm9vbCBkaWRCbG9ja0luc2Vj
dXJlUGx1Z2luVmVyc2lvbihXZWJQYWdlUHJveHkmLCBBUEk6OkRpY3Rpb25hcnkmKSBmaW5hbDsK
QEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGRpZENoYW5nZUJhY2tG
b3J3YXJkTGlzdChXZWJQYWdlUHJveHkmLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwgY29uc3Qg
VmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4mKSBmaW5hbDsKICNlbmRpZgogCi0g
ICAgICAgIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSYsIFdl
YkNvcmU6OlVSTCYmLCBWZWN0b3I8U3RyaW5nPiYmLCBWZWN0b3I8U3RyaW5nPiYmKSBmaW5hbDsK
KyAgICAgICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5Jiwg
VVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYsIFZlY3RvcjxTdHJpbmc+JiYpIGZpbmFsOwogICAgICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5JiwgUmVm
PEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eT4mJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoV2ViUGFnZVByb3h5JiwgUmVmPEFQSTo6TmF2
aWdhdGlvblJlc3BvbnNlPiYmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggOWM1NDBkNTlhYTBhZTUzYTRh
YzQ4MmJhMDAwYWY3MzlmM2E3N2M5ZC4uZjZmNDJkOTcwNGFlZmIzMGZlMzcxOWEwYjgyOTliNTE5
MDlhM2ZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQpAQCAtNzAsOSArNzAsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9TU0xLZXlHZW5l
cmF0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIEhBVkUoQVBQX0xJTktTKQogI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgpAQCAtMzk3LDcgKzM5Nyw3IEBA
IGlubGluZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgdG9XZWJDb3JlV2ViR0xMb2FkUG9saWN5
KF9XS1dlYkdMTG9hZFBvbGljeSBwb2xpCiAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQWxsb3dD
cmVhdGlvbjsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Ondl
YkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBjb25zdAordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OndlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBjb25zdAogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdXZWJHTExvYWRQb2xpY3lGb3JVUkwpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV2ViR0xBbGxvd0NyZWF0aW9uKTsKQEAgLTQxNCw3ICs0MTQsNyBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5KFdl
YlBhZ2VQcm94eSYsIGNvbnN0IFdlYgogICAgIH0pLmdldCgpXTsKIH0KIAotdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFn
ZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3Zv
aWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpyZXNvbHZlV2ViR0xMb2FkUG9s
aWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1Jlc29sdmVXZWJHTExvYWRQb2xpY3lGb3JVUkwpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV2ViR0xBbGxvd0NyZWF0aW9uKTsKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihXZWJQYWdlUAogICAgIH0KIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OmNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkmLCBX
ZWJDb3JlOjpVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgbGlzdElkZW50aWZpZXJzLCBWZWN0
b3I8U3RyaW5nPiYmIG5vdGlmaWNhdGlvbnMpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSYsIFVS
TCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+
JiYgbm90aWZpY2F0aW9ucykKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdh
dGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3VVJMQ29udGVudFJ1bGVMaXN0SWRlbnRpZmllcnNO
b3RpZmljYXRpb25zKQogICAgICAgICByZXR1cm47CkBAIC03MDQsNyArNzA0LDcgQEAgdm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QoV2ViUGFnZVByb3h5JgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsKFdlYkNvcmU6OlVSTCgpLCB1cmxTdHJpbmcp
OworICAgIFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CiAKICAgICBbc3RhdGljX2Nhc3Q8aWQg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZSkgX3dlYlZp
ZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RU
b1VSTDp1cmwgZGVsYXk6ZGVsYXldOwogfQpAQCAtNzE4LDggKzcxOCw4IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2Vi
UGFnZVByb3h5JiBwCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFdlYkNvcmU6OlVSTCBzb3VyY2VVUkwoV2ViQ29yZTo6VVJMKCksIHNvdXJjZVVS
TFN0cmluZyk7Ci0gICAgV2ViQ29yZTo6VVJMIGRlc3RpbmF0aW9uVVJMKFdlYkNvcmU6OlVSTCgp
LCBkZXN0aW5hdGlvblVSTFN0cmluZyk7CisgICAgVVJMIHNvdXJjZVVSTChVUkwoKSwgc291cmNl
VVJMU3RyaW5nKTsKKyAgICBVUkwgZGVzdGluYXRpb25VUkwoVVJMKCksIGRlc3RpbmF0aW9uVVJM
U3RyaW5nKTsKIAogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dl
YlZpZXcgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVSTDpzb3VyY2VVUkwgdG9VUkw6ZGVz
dGluYXRpb25VUkxdOwogfQpAQCAtOTkyLDcgKzk5Miw3IEBAIFJlZlB0cjxBUEk6OkRhdGE+IE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBh
Z2VQCiAgICAgcmV0dXJuIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoZGF0YSk7CiB9
CiAKLVJlZlB0cjxBUEk6OlN0cmluZz4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1
bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5n
ZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCitSZWZQdHI8QVBJOjpTdHJpbmc+IE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxl
bmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYgcGFnZSwgdW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25z
dCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIC8vIFdlYktpdFRlc3RSdW5uZXIgdXNlcyBDIEFQSS4gSGVuY2UsIG5vIFNQSSBpcyBw
cm92aWRlZCB0byBvdmVycmlkZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uLgogICAgIHJldHVybiBB
UEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+c3RyaW5nKCksIHVybCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nUmVzdWx0
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdSZXN1
bHRDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNGRmZDVkNDRkNmU0ODMxMWRkYzJmMmZlNzQxNjlmNDQ4
YzViMzE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U2FmZUJyb3dzaW5nUmVzdWx0Q29jb2EubW0KQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2FmZUJyb3dzaW5nUmVzdWx0LmgiCisKKyNp
bXBvcnQgIlNhZmVCcm93c2luZ1NQSS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmIEhB
VkUoU0FGRV9CUk9XU0lORykKK1NhZmVCcm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5nUmVzdWx0
KFVSTCYmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorICAgIDogbV91cmwo
V1RGTW92ZSh1cmwpKQorICAgICwgbV9wcm92aWRlcihbcmVzdWx0IHByb3ZpZGVyXSkKKyAgICAs
IG1faXNQaGlzaGluZyhbcmVzdWx0IGlzUGhpc2hpbmddKQorICAgICwgbV9pc01hbHdhcmUoW3Jl
c3VsdCBpc01hbHdhcmVdKQorICAgICwgbV9pc1Vud2FudGVkU29mdHdhcmUoW3Jlc3VsdCBpc1Vu
d2FudGVkU29mdHdhcmVdKQorICAgICwgbV9pc0tub3duVG9CZVVuc2FmZShbcmVzdWx0IGlzS25v
d25Ub0JlVW5zYWZlXSkKK3sKK30KKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KaW5kZXgg
MDM3NWI4M2IyYTdmNTNjNjFhOWZkYzQ2OGViMWI2YWQ1YWQxNzI1Mi4uODI4MWY2YzZkZWUyZjg3
Mjc3ZjNhZDFlOWIzMDNlMDg3M2JiYTQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAtODEsMTQg
KzgxLDE0IEBAIHN0YXRpYyB2b2lkIGFkZExpbmtBbmRSZXBsYWNlKE5TTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmcgKnN0cmluZywgTlNTdHJpbmcgKnRvUmVwCiAgICAgW3N0cmluZyByZXBsYWNlQ2hh
cmFjdGVyc0luUmFuZ2U6W3N0cmluZy5zdHJpbmcgcmFuZ2VPZlN0cmluZzp0b1JlcGxhY2VdIHdp
dGhBdHRyaWJ1dGVkU3RyaW5nOnN0cmluZ1dpdGhMaW5rXTsKIH0KIAotc3RhdGljIE5TVVJMICpy
ZXBvcnRBbkVycm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTU0JTZXJ2aWNlTG9va3Vw
UmVzdWx0ICpyZXN1bHQpCitzdGF0aWMgTlNVUkwgKnJlcG9ydEFuRXJyb3JVUkwoY29uc3QgVVJM
JiB1cmwsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6VVJMKHsgfSwgbWFrZVN0cmluZyhyZXBvcnRBbkVycm9yQmFzZShyZXN1bHQpLCAiJnVy
bD0iLCBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHVybCksICImaGw9IiwgZGVmYXVsdExh
bmd1YWdlKCkpKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgbWFrZVN0cmluZyhyZXBvcnRBbkVycm9y
QmFzZShyZXN1bHQpLCAiJnVybD0iLCBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHVybCks
ICImaGw9IiwgZGVmYXVsdExhbmd1YWdlKCkpKTsKIH0KIAotc3RhdGljIE5TVVJMICptYWx3YXJl
RGV0YWlsc1VSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3Vs
dCAqcmVzdWx0KQorc3RhdGljIE5TVVJMICptYWx3YXJlRGV0YWlsc1VSTChjb25zdCBVUkwmIHVy
bCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpVUkwoeyB9LCBtYWtlU3RyaW5nKG1hbHdhcmVEZXRhaWxzQmFzZShyZXN1bHQpLCAiJnNpdGU9
IiwgdXJsLmhvc3QoKSwgIiZobD0iLCBkZWZhdWx0TGFuZ3VhZ2UoKSkpOworICAgIHJldHVybiBV
UkwoeyB9LCBtYWtlU3RyaW5nKG1hbHdhcmVEZXRhaWxzQmFzZShyZXN1bHQpLCAiJnNpdGU9Iiwg
dXJsLmhvc3QoKSwgIiZobD0iLCBkZWZhdWx0TGFuZ3VhZ2UoKSkpOwogfQogCiBzdGF0aWMgTlNT
dHJpbmcgKnNhZmVCcm93c2luZ1RpdGxlVGV4dChTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1
bHQpCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIE5TU3RyaW5nICpzYWZlQnJvd3NpbmdXYXJu
aW5nVGV4dChTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIFdFQl9V
SV9OU1NUUklORyhAIlRoaXMgd2Vic2l0ZSBtYXkgdHJ5IHRvIHRyaWNrIHlvdSBpbnRvIGluc3Rh
bGxpbmcgc29mdHdhcmUgdGhhdCBoYXJtcyB5b3VyIGJyb3dzaW5nIGV4cGVyaWVuY2UsIGxpa2Ug
Y2hhbmdpbmcgeW91ciBzZXR0aW5ncyB3aXRob3V0IHlvdXIgcGVybWlzc2lvbiBvciBzaG93aW5n
IHlvdSB1bndhbnRlZCBhZHMuIE9uY2UgaW5zdGFsbGVkLCBpdCBtYXkgYmUgZGlmZmljdWx0IHRv
IHJlbW92ZS4iLCAiVW53YW50ZWQgc29mdHdhcmUgd2FybmluZyIpOwogfQogCi1zdGF0aWMgTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc2FmZUJyb3dzaW5nRGV0YWlsc1RleHQoY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKK3N0YXRpYyBO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpzYWZlQnJvd3NpbmdEZXRhaWxzVGV4dChjb25zdCBV
UkwmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQogewogICAgIGlmIChyZXN1
bHQuaXNQaGlzaGluZykgewogICAgICAgICBOU1N0cmluZyAqcGhpc2hpbmdEZXNjcmlwdGlvbiA9
IFdFQl9VSV9OU1NUUklORyhAIldhcm5pbmdzIGFyZSBzaG93biBmb3Igd2Vic2l0ZXMgdGhhdCBo
YXZlIGJlZW4gcmVwb3J0ZWQgYXMgZGVjZXB0aXZlLiBEZWNlcHRpdmUgd2Vic2l0ZXMgdHJ5IHRv
IHRyaWNrIHlvdSBpbnRvIGJlbGlldmluZyB0aGV5IGFyZSBsZWdpdGltYXRlIHdlYnNpdGVzIHlv
dSB0cnVzdC4iLCAiUGhpc2hpbmcgd2FybmluZyBkZXNjcmlwdGlvbiIpOwpAQCAtMTQ5LDcgKzE0
OSw3IEBAIHN0YXRpYyBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpzYWZlQnJvd3NpbmdEZXRh
aWxzVGV4dChjb25zdCBXZWJDb3JlOjpVUkwmIHVyCiAgICAgcmV0dXJuIG1hbHdhcmVPclVud2Fu
dGVkU29mdHdhcmVEZXRhaWxzKFdFQl9VSV9OU1NUUklORyhAIldhcm5pbmdzIGFyZSBzaG93biBm
b3Igd2Vic2l0ZXMgd2hlcmUgaGFybWZ1bCBzb2Z0d2FyZSBoYXMgYmVlbiBkZXRlY3RlZC4gWW91
IGNhbiBjaGVjayAldGhlLXN0YXR1cy1vZi1zaXRlJSBvbiB0aGUgJXNhZmVCcm93c2luZ1Byb3Zp
ZGVyJSBkaWFnbm9zdGljIHBhZ2UuIiwgIlVud2FudGVkIHNvZnR3YXJlIHdhcm5pbmcgZGVzY3Jp
cHRpb24iKSwgQCIldGhlLXN0YXR1cy1vZi1zaXRlJSIsIGZhbHNlKTsKIH0KIAotU2FmZUJyb3dz
aW5nV2FybmluZzo6U2FmZUJyb3dzaW5nV2FybmluZyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwg
U1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorU2FmZUJyb3dzaW5nV2FybmluZzo6U2Fm
ZUJyb3dzaW5nV2FybmluZyhjb25zdCBVUkwmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAq
cmVzdWx0KQogICAgIDogbV90aXRsZShzYWZlQnJvd3NpbmdUaXRsZVRleHQocmVzdWx0KSkKICAg
ICAsIG1fd2FybmluZyhzYWZlQnJvd3NpbmdXYXJuaW5nVGV4dChyZXN1bHQpKQogICAgICwgbV9k
ZXRhaWxzKHNhZmVCcm93c2luZ0RldGFpbHNUZXh0KHVybCwgcmVzdWx0KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJv
bGxlckNvY29hLm1tCmluZGV4IGE3ZGFkNDgxNTI2MWE5OGM2YzExZDM0NDhmM2RiMjE4MTMxYTYy
ZGEuLjk4YmRjMjc5NjRhNTY5YTc3OThjMTljN2I1YWFjMmM3NGU2ZDU5ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0Nv
bnRyb2xsZXJDb2NvYS5tbQpAQCAtMTA1LDcgKzEwNSw3IEBAIFNPRlRfTElOS19DTEFTUyhRdWlj
a0xvb2ssIFFMSXRlbSk7CiAgICAgICAgIFtfaXRlbSBzZXRQcmV2aWV3SXRlbVByb3ZpZGVyUHJv
Z3Jlc3M6QChwcm9ncmVzcyldOwogfQogCi0tICh2b2lkKWZpbmlzaDooV2ViQ29yZTo6VVJMKXVy
bAorLSAodm9pZClmaW5pc2g6KFVSTCl1cmwKIHsKICAgICBpZiAoc2VsZi5jb21wbGV0aW9uSGFu
ZGxlcikKICAgICAgICAgc2VsZi5jb21wbGV0aW9uSGFuZGxlcigoTlNVUkwqKXVybCwgbmlsKTsK
QEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp1cGRhdGVQ
cm9ncmVzcyhmbG9hdCBwcm9ncmVzcykKICAgICAgICAgW21fcWxQcmV2aWV3Q29udHJvbGxlckRh
dGFTb3VyY2Ugc2V0UHJvZ3Jlc3M6cHJvZ3Jlc3NdOwogfQogCi12b2lkIFN5c3RlbVByZXZpZXdD
b250cm9sbGVyOjpmaW5pc2goV2ViQ29yZTo6VVJMIHVybCkKK3ZvaWQgU3lzdGVtUHJldmlld0Nv
bnRyb2xsZXI6OmZpbmlzaChVUkwgdXJsKQogewogICAgIGlmIChtX3FsUHJldmlld0NvbnRyb2xs
ZXJEYXRhU291cmNlKQogICAgICAgICBbbV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBm
aW5pc2g6dXJsXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApp
bmRleCBhNjIzY2M1M2Y1NjJiNThmOWFhZGNlMjc2MzY4NjM2OThiZDA4MmM4Li5jMGRhM2ZmZGEx
MDY4OWZlMTNkMGIzMzY4MDhlYzgyZjkyZjFkYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgdm9pZCB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChi
b29sKT4mJikgZmluYWw7CiAgICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSos
IFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBBUEk6
Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Kikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGls
ZUluRm9yZWdyb3VuZChXZWJQYWdlUHJveHkmLCBXS1Jlc291cmNlTGltaXQpIGZpbmFsOwotICAg
ICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIEFQSTo6RGF0YSYpIGZpbmFsOworICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6
OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6RGF0YSYpIGZpbmFsOwogI2VuZGlmCiAgICAgICAg
IGJvb2wgbmVlZHNGb250QXR0cmlidXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdWlEZWxl
Z2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQ2hhbmdlRm9udEF0dHJpYnV0ZXM7IH0K
ICAgICAgICAgdm9pZCBkaWRDaGFuZ2VGb250QXR0cmlidXRlcyhjb25zdCBXZWJDb3JlOjpGb250
QXR0cmlidXRlcyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0KaW5kZXggNWM3MzQxZWYzMGYyMmQ2M2RlY2NjOTk4ZjEwODY1YmQyNWU2ZDk3My4u
YTU1OWE5YzU4ZmZmYzg4NTA5NWJjNzhjZDY4ODIwZTQ3YWUyODE4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC01Miw4ICs1Miw4IEBACiAjaW1w
b3J0ICJfV0tIaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0
dHJpYnV0ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3
dGYvVVJMLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8QVZGb3VuZGF0
aW9uL0FWQ2FwdHVyZURldmljZS5oPgpAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8QVBJOjpG
cmFtZUluZm8+CiAKICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHBhZ2UucHJvY2Vz
cygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVy
ZVRva2VuSWRlbnRpZmllcik7CiAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNB
cmVFcXVhbChzb3VyY2VGcmFtZUluZm8tPnJlcXVlc3QoKS51cmwoKSwgcmVxdWVzdC51cmwoKSk7
Ci0gICAgYXV0byBhcGlOYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpj
cmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5wdHIo
KSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXZWJDb3JlOjpVUkwo
KSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwor
ICAgIGF1dG8gYXBpTmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8ucHRyKCks
IG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgVVJMKCksIHNob3VsZE9w
ZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKIAogICAgIGF1dG8g
YXBpV2luZG93RmVhdHVyZXMgPSBBUEk6OldpbmRvd0ZlYXR1cmVzOjpjcmVhdGUod2luZG93RmVh
dHVyZXMpOwogCkBAIC03ODksNyArNzg5LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
c2hvd1BhZ2UoV2ViUGFnZVByb3h5KikKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilk
ZWxlZ2F0ZSBfc2hvd1dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlld107CiB9CiAgICAgCi12
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVy
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29u
c3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5n
VVJMLCBBUEk6OkRhdGEmIGRhdGEpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzYXZlRGF0
YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBV
UkwmIG9yaWdpbmF0aW5nVVJMLCBBUEk6OkRhdGEmIGRhdGEpCiB7CiAgICAgaWYgKCFtX3VpRGVs
ZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxlU3VnZ2VzdGVkRmls
ZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMKQogICAgICAgICByZXR1cm47CkBAIC04NjcsOCAr
ODY3LDggQEAgc3RhdGljIHZvaWQgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZp
Y2VzKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLAogICAgIH0pOwogCiAgICAgY29uc3QgV2Vi
RnJhbWVQcm94eSogbWFpbkZyYW1lID0gZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKTsKLSAgICBX
ZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBmcmFtZS51cmwoKSk7
Ci0gICAgV2ViQ29yZTo6VVJMIG1haW5GcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgbWFpbkZyYW1l
LT51cmwoKSk7CisgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChVUkwoKSwgZnJhbWUudXJsKCkpOwor
ICAgIFVSTCBtYWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOwogCiAgICAgX1dL
Q2FwdHVyZURldmljZXMgZGV2aWNlcyA9IDA7CiAgICAgaWYgKHJlcXVlc3QucmVxdWlyZXNBdWRp
b0NhcHR1cmUoKSkKQEAgLTk4NCw4ICs5ODQsOCBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV2ViUGFnZVByb3h5JiBwYWdlLAog
CiAgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gbV91aURlbGVnYXRlLm1fd2ViVmlldzsKICAgICBj
b25zdCBXZWJGcmFtZVByb3h5KiBtYWluRnJhbWUgPSBmcmFtZS5wYWdlKCktPm1haW5GcmFtZSgp
OwotICAgIFdlYkNvcmU6OlVSTCByZXF1ZXN0RnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIGZyYW1l
LnVybCgpKTsKLSAgICBXZWJDb3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBt
YWluRnJhbWUtPnVybCgpKTsKKyAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgpLCBmcmFtZS51
cmwoKSk7CisgICAgVVJMIG1haW5GcmFtZVVSTChVUkwoKSwgbWFpbkZyYW1lLT51cmwoKSk7CiAK
ICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IEJsb2NrUHRyPHZvaWQoTlNTdHJpbmcqLCBCT09M
KT46OmZyb21DYWxsYWJsZShbcHJvdGVjdGVkUmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCldKE5T
U3RyaW5nKiwgQk9PTCBhdXRob3JpemVkKSB7CiAgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPnNl
dFVzZXJNZWRpYUFjY2Vzc0luZm8oYXV0aG9yaXplZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292
ZXJ5QXR0ZW1wdGVyLm1tCmluZGV4IDVmOTlhZWM4NWRhNzUyNGJhMDQxZTc1ZWIwODAxNzM5OTA0
OWIyMTIuLmFlNTc2NWU0OGU3MWI4N2ZmNjBkMTQwNWMzYzdhMzM3MjUxNWNhMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292
ZXJ5QXR0ZW1wdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVs
b2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCkBAIC02OSw3ICs2OSw3IEBACiAgICAg
aWYgKCF3ZWJGcmFtZVByb3h5KQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICB3ZWJGcmFtZVBy
b3h5LT5sb2FkVVJMKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgX3VybFN0cmluZykpOwor
ICAgIHdlYkZyYW1lUHJveHktPmxvYWRVUkwoVVJMKFVSTCgpLCBfdXJsU3RyaW5nKSk7CiAgICAg
cmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaAppbmRleCAwN2UxNDlhZjhjNDYzYjRjMjJmNmUxNDI3
MjlkOWRhOTIwN2RlN2ExLi41NmQ0MDU4NDdkYTc1YmU1MmFjNTE1MmUzN2I2NWZkY2YyODdmNzAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2lu
Z1dhcm5pbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93
c2luZ1dhcm5pbmcuaApAQCAtMzUsMTAgKzM1LDYgQEAKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+
CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFNhZmVCcm93c2luZ1dhcm5pbmc7CiBlbnVtIGNsYXNzIENvbnRp
bnVlVW5zYWZlTG9hZCA6IGJvb2w7CkBAIC01NSwxMSArNTEsMTEgQEAgdXNpbmcgUmVjdFR5cGUg
PSBDR1JlY3Q7CiAjZW5kaWYKIHsKIEBwYWNrYWdlCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWYXJpYW50PFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkLCBXZWJDb3JlOjpVUkw+JiYpPiBf
Y29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWYXJpYW50PFdl
YktpdDo6Q29udGludWVVbnNhZmVMb2FkLCBVUkw+JiYpPiBfY29tcGxldGlvbkhhbmRsZXI7CiAg
ICAgUmVmUHRyPGNvbnN0IFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZz4gX3dhcm5pbmc7CiAg
ICAgV2Vha09iakNQdHI8V0tTYWZlQnJvd3NpbmdUZXh0Vmlldz4gX2RldGFpbHM7CiB9CiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihSZWN0VHlwZSlmcmFtZSBzYWZlQnJvd3NpbmdX
YXJuaW5nOihjb25zdCBXZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5pbmcmKXdhcm5pbmcgY29tcGxl
dGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmFyaWFudDxXZWJLaXQ6OkNvbnRp
bnVlVW5zYWZlTG9hZCwgV2ViQ29yZTo6VVJMPiYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihSZWN0VHlwZSlmcmFtZSBzYWZlQnJvd3NpbmdX
YXJuaW5nOihjb25zdCBXZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5pbmcmKXdhcm5pbmcgY29tcGxl
dGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmFyaWFudDxXZWJLaXQ6OkNvbnRp
bnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJu
aW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJu
aW5nLm1tCmluZGV4IGFmZDQ3ZDA4MGZhMTA2ZjJlYjZlNThjMGRmMTcwMzgzMjAyYmYzZmEuLjYw
OTU2MzRmZTVkZDZmMjU5M2VhZmFmNWYyMTQ5YmU0ZTYzZWQ1YzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW0KQEAg
LTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlNhZmVCcm93
c2luZ1dhcm5pbmcuaCIKICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0xhbmd1YWdlLmg+CiAKQEAgLTIyOSw3ICsyMjksNyBA
QCBzdGF0aWMgdm9pZCBzZXRCYWNrZ3JvdW5kKFZpZXdUeXBlICp2aWV3LCBDb2xvclR5cGUgKmNv
bG9yKQogCiBAaW1wbGVtZW50YXRpb24gV0tTYWZlQnJvd3NpbmdXYXJuaW5nCiAKLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEZyYW1lOihSZWN0VHlwZSlmcmFtZSBzYWZlQnJvd3NpbmdXYXJuaW5n
Oihjb25zdCBXZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5pbmcmKXdhcm5pbmcgY29tcGxldGlvbkhh
bmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5z
YWZlTG9hZCwgV2ViQ29yZTo6VVJMPiYmKT4mJiljb21wbGV0aW9uSGFuZGxlcgorLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KFJlY3RUeXBlKWZyYW1lIHNhZmVCcm93c2luZ1dhcm5pbmc6
KGNvbnN0IFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZyYpd2FybmluZyBjb21wbGV0aW9uSGFu
ZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWYXJpYW50PFdlYktpdDo6Q29udGludWVVbnNh
ZmVMb2FkLCBVUkw+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXSkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQ6Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4
IDU1MmExMmJjMjcxNGY3MjFjZjdhODY3NWMxZTgzMmMzNjBiMDBiNGMuLjE3MTBkZjE5YzQyNjU4
ZjZmNTljN2MxODA3NzcxYWYyMmUyMjNkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmRJdGVtSW5mby5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVm
ZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggNTA1ODIxNjI0NmRkY2YwOTU0
NWJmY2Y3MmZiMWI0NTIwYzA2MjhlMi4uZDgwZWY3OThhMDEwNGQ2MTIwMzg2MjM2NzllOTdjMTY2
NjExYmZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5o
CkBAIC0yMjYsNyArMjI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Vmlld1NjYWxlKENHRmxv
YXQpOwogICAgIENHRmxvYXQgdmlld1NjYWxlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNob3dTYWZl
QnJvd3NpbmdXYXJuaW5nKGNvbnN0IFNhZmVCcm93c2luZ1dhcm5pbmcmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZhcmlhbnQ8Q29udGludWVVbnNhZmVMb2FkLCBXZWJDb3JlOjpVUkw+JiYpPiYm
KTsKKyAgICB2b2lkIHNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFNhZmVCcm93c2luZ1dh
cm5pbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8Q29udGludWVVbnNhZmVMb2Fk
LCBVUkw+JiYpPiYmKTsKICAgICB2b2lkIGNsZWFyU2FmZUJyb3dzaW5nV2FybmluZygpOwogCiAg
ICAgV0tMYXlvdXRNb2RlIGxheW91dE1vZGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNzllZTBhYWEzOTBmZDE2OWU0MTMyMDk4
ZWY2NWI5ZDNjNDQyOWY4OC4uZjgyZGE0YTExOWZkMmJmMDY5NjVjMGEwN2Y3N2Q0NzZkODRlZTIy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTE2MTUsNyArMTYxNSw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnJlc2lnbkZpcnN0UmVzcG9uZGVy
KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2hvd1NhZmVCcm93
c2luZ1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2FybmluZyYgd2FybmluZywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWYXJpYW50PENvbnRpbnVlVW5zYWZlTG9hZCwgV2ViQ29yZTo6VVJMPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViVmlld0ltcGw6OnNob3dTYWZlQnJvd3Np
bmdXYXJuaW5nKGNvbnN0IFNhZmVCcm93c2luZ1dhcm5pbmcmIHdhcm5pbmcsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmFyaWFudDxDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3ZpZXcpCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihDb250aW51ZVVuc2FmZUxvYWQ6Olllcyk7CkBAIC00MTAzLDcgKzQxMDMsNyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjp3cml0ZVRvVVJMRm9yRmlsZVByb21pc2VQcm92aWRlcihOU0Zp
bGVQcm9taXNlUHJvdmlkZXIgKnByb3ZpZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
V2ViQ29yZTo6VVJMIGJsb2JVUkwgeyBpbmZvLmJsb2JVUkwgfTsKKyAgICBVUkwgYmxvYlVSTCB7
IGluZm8uYmxvYlVSTCB9OwogICAgIGlmIChibG9iVVJMLmlzRW1wdHkoKSkgewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih3ZWJLaXRVbmtub3duRXJyb3IoKSk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcAppbmRleCBiMjJlNGYzNDdjZGVjYTcyODc1N2U3ZDcxNDRlZWM2YzhjM2NlZjNiLi43NTEw
MmVlM2IwMDQyNGE0ODA5NDE1ZjM2YjA0ZWQzYjUzY2FkMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0xMDIsNyAr
MTAyLDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpzZXRPcmlnaW5hdGluZ1BhZ2UoV2ViUGFnZVBy
b3h5KiBwYWdlKQogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIERvd25sb2FkUHJveHk6
OnB1Ymxpc2hQcm9ncmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmIFVSTCkKK3ZvaWQgRG93bmxvYWRQ
cm94eTo6cHVibGlzaFByb2dyZXNzKGNvbnN0IFVSTCYgVVJMKQogewogICAgIGlmICghbV9wcm9j
ZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggZjliODI0MzZjZTUxODAwYThkM2QzN2Vm
ODQxMGQ3YzVkZDIzZWE1YS4uZjI0MDQ5OTU3YTJlOGMyNmQ5N2Y1YjU4YWYwNjYxOTM1OGZiZjI2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQcm90ZWN0aW9u
U3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNs
YXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NSw4ICs3NCw4IEBAIHB1Ymxp
YzoKICAgICBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSgpIGNvbnN0OwogICAgIHZvaWQg
c2V0T3JpZ2luYXRpbmdQYWdlKFdlYlBhZ2VQcm94eSopOwogCi0gICAgdm9pZCBzZXRSZWRpcmVj
dENoYWluKFZlY3RvcjxXZWJDb3JlOjpVUkw+JiYgcmVkaXJlY3RDaGFpbikgeyBtX3JlZGlyZWN0
Q2hhaW4gPSBXVEZNb3ZlKHJlZGlyZWN0Q2hhaW4pOyB9Ci0gICAgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlVSTD4mIHJlZGlyZWN0Q2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0Q2hhaW47
IH0KKyAgICB2b2lkIHNldFJlZGlyZWN0Q2hhaW4oVmVjdG9yPFVSTD4mJiByZWRpcmVjdENoYWlu
KSB7IG1fcmVkaXJlY3RDaGFpbiA9IFdURk1vdmUocmVkaXJlY3RDaGFpbik7IH0KKyAgICBjb25z
dCBWZWN0b3I8VVJMPiYgcmVkaXJlY3RDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RD
aGFpbjsgfQogCiAgICAgdm9pZCBzZXRXYXNVc2VySW5pdGlhdGVkKGJvb2wgdmFsdWUpIHsgbV93
YXNVc2VySW5pdGlhdGVkID0gdmFsdWU7IH0KICAgICBib29sIHdhc1VzZXJJbml0aWF0ZWQoKSBj
b25zdCB7IHJldHVybiBtX3dhc1VzZXJJbml0aWF0ZWQ7IH0KQEAgLTk2LDcgKzk1LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHB1Ymxpc2hQcm9n
cmVzcyhjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHB1Ymxpc2hQcm9ncmVzcyhjb25z
dCBVUkwmKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTMwLDcgKzEyOSw3IEBAIHByaXZhdGU6
CiAgICAgdWludDY0X3QgbV9ieXRlc0xvYWRlZCB7IDAgfTsKIAogICAgIFdlYWtQdHI8V2ViUGFn
ZVByb3h5PiBtX29yaWdpbmF0aW5nUGFnZTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBtX3Jl
ZGlyZWN0Q2hhaW47CisgICAgVmVjdG9yPFVSTD4gbV9yZWRpcmVjdENoYWluOwogICAgIGJvb2wg
bV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1ZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRnJhbWVMb2FkU3RhdGUuY3BwCmluZGV4IDlmZTNjNzY1NjFiMjU1NzE2YTQ1YmJhMzhmZTk5
NWEwMDU5NzdmZmIuLjcyZjRmNzI0NTVhN2ViOGE2NWI5ZTUyN2U1NWExZjgyMWFjZTA4ZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAgRnJhbWVMb2FkU3RhdGU6On5GcmFtZUxvYWRTdGF0ZSgpCiB7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYg
dXJsKQordm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKTsKIApA
QCAtNDAsNyArNDAsNyBAQCB2b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKICAgICBtX3Byb3Zpc2lvbmFsVVJMID0gdXJs
OwogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZFN0
YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKTsKIApA
QCAtODEsMTIgKzgxLDEyIEBAIHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZEZhaWxMb2FkKCkKICAg
ICBtX3N0YXRlID0gU3RhdGU6OkZpbmlzaGVkOwogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRlOjpk
aWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lk
IEZyYW1lTG9hZFN0YXRlOjpkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgbV91cmwgPSB1cmw7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OnNldFVu
cmVhY2hhYmxlVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwpCit2b2lkIEZy
YW1lTG9hZFN0YXRlOjpzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
KQogewogICAgIG1fbGFzdFVucmVhY2hhYmxlVVJMID0gbV91bnJlYWNoYWJsZVVSTDsKICAgICBt
X3VucmVhY2hhYmxlVVJMID0gdW5yZWFjaGFibGVVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RnJhbWVMb2FkU3RhdGUuaAppbmRleCBhODlhZDAwMGNjMTA0ODM3NjdmZTlmNTNjYmFmZmM0MDRk
YTI5ZGMwLi5lZDMyOTIwOTI0NjNiNDViOWE5ZWIzMTNjNzY2ODE4M2YwMWFmNTJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM5LDMwICszOSwzMCBAQCBwdWJsaWM6
CiAgICAgICAgIEZpbmlzaGVkCiAgICAgfTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25h
bExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKTsKICAgICB2b2lkIGRp
ZEZhaWxQcm92aXNpb25hbExvYWQoKTsKIAogICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgpOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZCgpOwogICAgIHZvaWQgZGlkRmFpbExvYWQoKTsKIAotICAgIHZv
aWQgZGlkU2FtZURvY3VtZW50Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAg
IHZvaWQgZGlkU2FtZURvY3VtZW50Tm90aWZpY2F0aW9uKGNvbnN0IFVSTCYpOwogCiAgICAgU3Rh
dGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIHZvaWQgc2V0VVJMKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsKSB7IG1fdXJsID0gdXJsOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6
VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0K
KyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgdm9pZCBz
ZXRVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV91cmwgPSB1cmw7IH0KKyAgICBjb25zdCBVUkwmIHBy
b3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbFVSTDsgfQogCi0gICAg
dm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBjb25zdCBX
ZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV91bnJlYWNoYWJs
ZVVSTDsgfQorICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgVVJMJik7CisgICAgY29u
c3QgVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7
IH0KIAogcHJpdmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OkZpbmlzaGVkIH07Ci0g
ICAgV2ViQ29yZTo6VVJMIG1fdXJsOwotICAgIFdlYkNvcmU6OlVSTCBtX3Byb3Zpc2lvbmFsVVJM
OwotICAgIFdlYkNvcmU6OlVSTCBtX3VucmVhY2hhYmxlVVJMOwotICAgIFdlYkNvcmU6OlVSTCBt
X2xhc3RVbnJlYWNoYWJsZVVSTDsKKyAgICBVUkwgbV91cmw7CisgICAgVVJMIG1fcHJvdmlzaW9u
YWxVUkw7CisgICAgVVJMIG1fdW5yZWFjaGFibGVVUkw7CisgICAgVVJMIG1fbGFzdFVucmVhY2hh
YmxlVVJMOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBj
OGVlYmY2YjhlNzQ3NGUwNGI5NDM5YzY1OWJjZDU4ZGNlN2FhYWVjLi5mZDk4NmMyMzVmZWY5MDMy
ZWRlMDcwZWZjNmVlMGQ3NzEwOGE5ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTU2MCw3ICs1NjAs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzRGlkUmVzdW1lKCkKICAg
ICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NEaWRSZXN1bWUoKSwg
MCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aChj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMDk2OWRjOWMxYjVhMWI3NTNjMDhjMDc1M2ZiNWMy
NzQ1NmYwNWM4Yi4uN2U0OTIzODdlODVlMDI0MzkzYmExNmU5NDI1ZGIzOWU2NmM4N2FkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKQEAgLTQ5LDcgKzQ5LDYgQEAgY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwog
fQogCkBAIC04OCw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAjZW5kaWYKIAotICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAg
ICAgdm9pZCBwcm9jZXNzUmVhZHlUb1N1c3BlbmQoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAppbmRleCBlZTg1MmIyNDk5NzdiOGZkNzA3MDJkODg3ODU0MTI3MzA4ZjE5
NGU1Li5kZjZlYzAwNWM0NjhiNDI1YjliZTU1ZjY4MmYwMmVkZTVhYWM2MWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zMywxMSArMzMsMTEgQEAKICNpbmNsdWRlICJX
ZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3JDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIApAQCAtMjE2LDcgKzIxNiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIHNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFNhZmVCcm93c2lu
Z1dhcm5pbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8Q29udGludWVVbnNhZmVM
b2FkLCBXZWJDb3JlOjpVUkw+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25I
YW5kbGVyKENvbnRpbnVlVW5zYWZlTG9hZDo6WWVzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93
U2FmZUJyb3dzaW5nV2FybmluZyhjb25zdCBTYWZlQnJvd3NpbmdXYXJuaW5nJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWYXJpYW50PENvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihDb250aW51ZVVuc2FmZUxvYWQ6Olll
cyk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nKCkgeyB9CiAg
ICAgCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUxvYWRTdGF0ZS5jcHAKaW5kZXggMTc1OWY4YTQ5MzY3ZDA1MmU1ZmNhZTUxNzNkYTI2NzI1Mzk3
ZjY2MC4uMmVkMTA3NWM2MDBlYmRkZWE1ZTRmZjU0ZmFhOTFkZGQ1ZjViZTJjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAKQEAgLTIwNiw5ICsyMDYsOSBAQCBi
b29sIFBhZ2VMb2FkU3RhdGU6Omhhc09ubHlTZWN1cmVDb250ZW50KGNvbnN0IERhdGEmIGRhdGEp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChkYXRhLnN0YXRlID09IFN0YXRlOjpQ
cm92aXNpb25hbCkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OnByb3RvY29sSXMoZGF0YS5wcm92
aXNpb25hbFVSTCwgImh0dHBzIik7CisgICAgICAgIHJldHVybiBXVEY6OnByb3RvY29sSXMoZGF0
YS5wcm92aXNpb25hbFVSTCwgImh0dHBzIik7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9j
b2xJcyhkYXRhLnVybCwgImh0dHBzIik7CisgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJcyhkYXRh
LnVybCwgImh0dHBzIik7CiB9CiAKIGJvb2wgUGFnZUxvYWRTdGF0ZTo6aGFzT25seVNlY3VyZUNv
bnRlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5JbmZvU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5JbmZvU3RvcmUuY3BwCmluZGV4IDIzMTA3NWFjMzU5OWJhZDFkMTlhZDRkN2M0MmZjNzJm
Zjk4Y2RhMDMuLjUxMzJiODNiZmFhYWExM2Y0NzZhNjYzNjUxY2QzNjIwMDY2NGFlZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5j
cHAKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKICNp
bmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oCmluZGV4IDZlOWVlZmM4ZjVmNDM4YWU4OWEyZjI1YWM4
ODJiNTUwN2ZlZTFiMzQuLjU1NTk3ZjM0NGJmNTEzOWI5ZjU2NzNjMzBmODhjNzI4MTU3YWY5OWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuaApAQCAtMzEsMTAgKzMxLDYgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5o
PgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBQbHVnaW5JbmZvU3RvcmU7CkBAIC01Myw3ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZvciBhIHBsdWctaW4gdGhhdCBjYW4gaGFuZGxlIHRo
ZSBnaXZlbiBNSU1FIHR5cGUuCiAgICAgLy8gSWYgdGhlIE1JTUUgdHlwZSBpcyBudWxsLCB0aGUg
ZmlsZSBleHRlbnNpb24gb2YgdGhlIGdpdmVuIHVybCB3aWxsIGJlIHVzZWQgdG8gaW5mZXIgdGhl
CiAgICAgLy8gcGx1Zy1pbiB0eXBlLiBJbiB0aGF0IGNhc2UsIG1pbWVUeXBlIHdpbGwgYmUgZmls
bGVkIGluIHdpdGggdGhlIHJpZ2h0IE1JTUUgdHlwZS4KLSAgICBQbHVnaW5Nb2R1bGVJbmZvIGZp
bmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6
UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzID0gV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxs
UGx1Z2lucyk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luKFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBlcyA9
IFdlYkNvcmU6OlBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpOwogCiAgICAgLy8gUmV0dXJucyB0aGUg
aW5mbyBmb3IgdGhlIHBsdWctaW4gd2l0aCB0aGUgZ2l2ZW4gYnVuZGxlIGlkZW50aWZpZXIuCiAg
ICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luV2l0aEJ1bmRsZUlkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiBidW5kbGVJZGVudGlmaWVyKTsKQEAgLTYzLDcgKzU5LDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgZGVmYXVsdExvYWRQb2xpY3lGb3JQbHVn
aW4oY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwogCi0gICAgYm9vbCBpc1N1cHBvcnRlZFBsdWdp
bihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHBsdWdpblVSTCwg
Y29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBwYWdlVVJM
KTsKKyAgICBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFVSTCYgcGx1Z2luVVJMLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBV
UkwmIHBhZ2VVUkwpOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRl
ZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVycygpOwogICAgIHZv
aWQgYWRkU3VwcG9ydGVkUGx1Z2luKFN0cmluZyYmIG1hdGNoaW5nRG9tYWluLCBTdHJpbmcmJiBp
ZGVudGlmaWVyLCBIYXNoU2V0PFN0cmluZz4mJiBtaW1lVHlwZXMsIEhhc2hTZXQ8U3RyaW5nPiBl
eHRlbnNpb25zKTsKICAgICB2b2lkIGNsZWFyU3VwcG9ydGVkUGx1Z2lucygpIHsgbV9zdXBwb3J0
ZWRQbHVnaW5zID0gc3RkOjpudWxsb3B0OyB9CkBAIC0xMDQsNyArMTAwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgSGFzaFNldDxTdHJpbmc+IG1pbWVUeXBlczsKICAgICAgICAgSGFzaFNldDxTdHJp
bmc+IGV4dGVuc2lvbnM7CiAgICAgfTsKLSAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFBsdWdp
bihjb25zdCBTdXBwb3J0ZWRQbHVnaW4mLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHBsdWdpblVSTCk7CisgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRQbHVn
aW4oY29uc3QgU3VwcG9ydGVkUGx1Z2luJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
VVJMJiBwbHVnaW5VUkwpOwogCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1
Z2luPj4gbV9zdXBwb3J0ZWRQbHVnaW5zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQppbmRl
eCA4N2I1YjhjNjc4ZTU5ZjliZTgwNTlmYWUwNGViYjJiMGFjMTZjNWE1Li44OWZhYjVlY2I2NjZk
MmI0NGZjYzIyMzllYmU1YmE1ZWUxYWM2M2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCkBA
IC0zNCwxMiArMzQsMTIgQEAKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQg
PFF1YXJ0ekNvcmUvQ0FSZW1vdGVMYXllclNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8Y3J0X2V4dGVybnMu
aD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oPgogI2ltcG9ydCA8c3Bhd24uaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdl
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IEBpbnRlcmZhY2UgV0tQbGFjZWhvbGRlck1vZGFsV2luZG93IDogTlNXaW5kb3cgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NhZmVCcm93c2luZ1Jlc3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MjIw
NDdhYjIwODBiNjliY2JiOGQzMzgzOGE3MmQ4Y2FlOTk2YTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJvd3NpbmdSZXN1bHQuaApAQCAtMCwwICsxLDYz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworT0JKQ19DTEFTUyBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0OworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgU2FmZUJyb3dzaW5nUmVzdWx0IDogcHVibGljIFJlZkNvdW50ZWQ8U2Fm
ZUJyb3dzaW5nUmVzdWx0PiB7CitwdWJsaWM6CisjaWYgSEFWRShTQUZFX0JST1dTSU5HKQorICAg
IHN0YXRpYyBSZWY8U2FmZUJyb3dzaW5nUmVzdWx0PiBjcmVhdGUoVVJMJiYgdXJsLCBTU0JTZXJ2
aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTYWZlQnJvd3NpbmdSZXN1bHQoV1RGTW92ZSh1cmwpLCByZXN1bHQpKTsKKyAgICB9Cisj
ZW5kaWYKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAg
Y29uc3QgU3RyaW5nJiBwcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXI7IH0KKyAg
ICBib29sIGlzUGhpc2hpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUGhpc2hpbmc7IH0KKyAgICBi
b29sIGlzTWFsd2FyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYWx3YXJlOyB9CisgICAgYm9vbCBp
c1Vud2FudGVkU29mdHdhcmUoKSBjb25zdCB7IHJldHVybiBtX2lzVW53YW50ZWRTb2Z0d2FyZTsg
fQorICAgIGJvb2wgaXNLbm93blRvQmVVbnNhZmUoKSBjb25zdCB7IHJldHVybiBtX2lzS25vd25U
b0JlVW5zYWZlOyB9CisKK3ByaXZhdGU6CisjaWYgSEFWRShTQUZFX0JST1dTSU5HKQorICAgIFNh
ZmVCcm93c2luZ1Jlc3VsdChVUkwmJiwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqKTsKKyNlbmRp
ZgorICAgIFVSTCBtX3VybDsKKyAgICBTdHJpbmcgbV9wcm92aWRlcjsKKyAgICBib29sIG1faXNQ
aGlzaGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzTWFsd2FyZSB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2lzVW53YW50ZWRTb2Z0d2FyZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzS25vd25U
b0JlVW5zYWZlIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5nV2FybmluZy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5nV2FybmluZy5oCmluZGV4IDYxNmY0Nzhj
YTdlOTQyZjc3ZmM0NGY3ZjExZWM0MDUxZWZmNzlmZTAuLjhkY2IxMjVkNWU3MmNiNmMwNTBjMzky
Y2UxNGYyNTU1M2YxNTI4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nh
ZmVCcm93c2luZ1dhcm5pbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TYWZlQnJv
d3NpbmdXYXJuaW5nLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBTYWZlQnJvd3NpbmdXYXJuaW5nIDogcHVibGljIFJlZkNvdW50ZWQ8U2FmZUJyb3dzaW5n
V2FybmluZz4gewogcHVibGljOgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLSAgICBzdGF0aWMg
UmVmPFNhZmVCcm93c2luZ1dhcm5pbmc+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwg
U1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorICAgIHN0YXRpYyBSZWY8U2FmZUJyb3dz
aW5nV2FybmluZz4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0
ICpyZXN1bHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTYWZlQnJvd3Np
bmdXYXJuaW5nKHVybCwgcmVzdWx0KSk7CiAgICAgfQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6
CiAgICAgCiBwcml2YXRlOgogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKLSAgICBTYWZlQnJvd3Np
bmdXYXJuaW5nKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKik7
CisgICAgU2FmZUJyb3dzaW5nV2FybmluZyhjb25zdCBVUkwmLCBTU0JTZXJ2aWNlTG9va3VwUmVz
dWx0ICopOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2FmZUJyb3dzaW5nV2Fy
bmluZyhTdHJpbmcmJiwgU3RyaW5nJiYsIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5k
ZXggZWJhZGU4OGVhMWI1MmU2M2VkZTRlNzY4NWNhMDhmZjI4MzQ5ZjRkYS4uMTQ5NzM2MTM5M2Q1
MzI4NTNkZDFkZjg2NjZjOGFiNWJhNzBlOTgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCmluZGV4IDk0OWM4ZGY3MjFl
ZDllZDM1YTdkYTY4ZWM3Y2Y5MTI3OWVmOTBhMzEuLjI2OWQwYzMyZmIzMjA4NGI1N2U3ZDE2YjBj
Y2YyNWNlZjc0ZjljMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3Rl
bVByZXZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVt
UHJldmlld0NvbnRyb2xsZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiBPQkpDX0NMQVNTIFFMUHJldmlld0Nv
bnRyb2xsZXI7CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnQoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQg
dXBkYXRlUHJvZ3Jlc3MoZmxvYXQpOwotICAgIHZvaWQgZmluaXNoKFdlYkNvcmU6OlVSTCk7Cisg
ICAgdm9pZCBmaW5pc2goVVJMKTsKICAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZvaWQgZmFpbChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggZTMzMTY3YTg5NTBjMTY4ZjAxYzAz
MmNlYjllNWY4Zjk4MWU1MTM4MC4uOWYyNDBkMzAyMWVkZjg2YzdjYWVkN2U4MTQ1OTUxZGVkMzI2
MGUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5LmgKQEAgLTcxLDEwICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVBbGxDb29r
aWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2FsbFRpbWUsIEZ1bmN0aW9uPHZvaWQg
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAogICAgIHZvaWQgc2V0Q29va2llKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3Vt
ZW50VVJMLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAogICAgIHZv
aWQgZ2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7Ci0gICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGdl
dENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIEZ1bmN0aW9uPHZvaWQoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjb21wbGV0
aW9uSGFuZGxlcik7CiAKICAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpT
ZXNzaW9uSUQsIEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFM
OjpTZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
aAppbmRleCA2MjRkODA2ZjFkYTNhNTI2YTBmZGI1MDAyZDA5YjQ2YzM3MDFjNzczLi42NjIzOGQx
MWJjNzkxZmVkZDhlZWNmZWI3ZWM0NWM3Y2IyMzY4MzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5oCkBAIC04MCwxNCArODAsMTQgQEAgcHVibGljOgogCiAgICAgRnJh
bWVMb2FkU3RhdGUmIGZyYW1lTG9hZFN0YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZTsg
fQogCi0gICAgdm9pZCBsb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgbG9h
ZFVSTChjb25zdCBVUkwmKTsKICAgICB2b2lkIHN0b3BMb2FkaW5nKCkgY29uc3Q7CiAKLSAgICBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUu
dXJsKCk7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9CisgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVybCgpOyB9CisgICAg
Y29uc3QgVVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3Rh
dGUucHJvdmlzaW9uYWxVUkwoKTsgfQogCi0gICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25z
dCBXZWJDb3JlOjpVUkwmKTsKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9Cisg
ICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVu
cmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJs
ZVVSTCgpOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9NSU1FVHlwZTsgfQogICAgIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGFpbnNQbHVnaW5Eb2N1bWVudDsgfQpAQCAtMTA4LDEzICsxMDgsMTMgQEAg
cHVibGljOgogICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6
OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRSZXNvdXJjZURh
dGEoQVBJOjpVUkwqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CiAKLSAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25h
bExvYWQoY29uc3QgVVJMJik7CisgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWQoY29uc3QgVVJMJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKCk7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IFdlYkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCk7CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWlsTG9hZCgpOwotICAgIHZvaWQg
ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsgLy8gZWcuIGFu
Y2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRlIGNoYW5nZS4KKyAgICB2b2lkIGRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb24oY29uc3QgVVJMJik7IC8vIGVnLiBhbmNob3IgbmF2aWdhdGlvbiwg
c2Vzc2lvbiBzdGF0ZSBjaGFuZ2UuCiAgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZShjb25zdCBTdHJp
bmcmKTsKIAogICAgIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgc2V0VXBQb2xpY3lMaXN0
ZW5lclByb3h5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBB
UEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0
cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmKT4mJiwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVz
dWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4
IDczMzRiNGVlZWFkYTEwZjQwYjQ1YzJhM2Q2YTg1ZWU0MjY3MjYzNjUuLjNmZjdmZDQ1ZTU5YjJh
ZWE0ZmVmMzg0YThhMjI2NmQzZjI0M2VjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuaApAQCAtNTMsNyArNTMsNiBAQCBPQkpDX0NMQVNTIFdLSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENlcnRpZmlj
YXRlSW5mbzsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNTcsNyAr
MTU2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yUGFnZVVSTCgpOwog
ICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yVGVzdFBhZ2VVUkwoKTsKICAgICBzdGF0aWMgU3Ry
aW5nIGluc3BlY3RvckJhc2VVUkwoKTsKLSAgICBzdGF0aWMgYm9vbCBpc01haW5PclRlc3RJbnNw
ZWN0b3JQYWdlKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHN0YXRpYyBib29sIGlzTWFpbk9y
VGVzdEluc3BlY3RvclBhZ2UoY29uc3QgVVJMJik7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWluaW11bVdpbmRvd1dpZHRoOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVt
V2luZG93SGVpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAppbmRleCA5ZDJiOWFkNGQ1ZGE5OGQy
MGY3Zjk3YWZjZDQ4MDU0NjUzZTNiYWE3Li44NTc0NjUxNWRhNjdkMTQyYWY3ZGZhZDg4ZGU4YTQ4
YTgzZjYxYzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtMjksNyArMjksNyBAQAogI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDVmZmIyYmZmNmU2NWEyYmMw
MDBjMDE4OWJhZWUwYjNiMThjZTM5ZjYuLjk1N2IzYTQ4ZjE2NmJmY2YyYjMzODJlZjYwMTM5NmI5
MThmYzNhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MTU4LDEzICsxNTgsMTMgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Nob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WYWxpZGF0
aW9uQnViYmxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL1N5c3RlbVRyYWNpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTExNDIsNyArMTE0Miw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgY29uc3QgSVBDCiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRl
LnRyYW5zYWN0aW9uKCk7CiAKLSAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVl
c3RVUkwodHJhbnNhY3Rpb24sICFiYXNlVVJMLmlzRW1wdHkoKSA/IGJhc2VVUkwgOiBibGFua1VS
TCgpLnN0cmluZygpKTsKKyAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RV
UkwodHJhbnNhY3Rpb24sICFiYXNlVVJMLmlzRW1wdHkoKSA/IGJhc2VVUkwgOiBXVEY6OmJsYW5r
VVJMKCkuc3RyaW5nKCkpOwogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJlYXR0YWNo
VG9XZWJQcm9jZXNzKCk7CkBAIC0xMTYxLDcgKzExNjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZERhdGFXaXRoTmF2aWdhdGlvbihBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0
IElQQwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBXZWJDb3JlOjpV
UkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSkKIHsKICAgICAvLyBXaGVuIHRoZSBVSVByb2Nlc3MgaXMgaW4gdGhlIHByb2Nl
c3Mgb2YgaGFuZGxpbmcgYSBmYWlsaW5nIHByb3Zpc2lvbmFsIGxvYWQsIGRvIG5vdCBhdHRlbXB0
IHRvCiAgICAgLy8gc3RhcnQgYSBzZWNvbmQgYWx0ZXJuYXRpdmUgSFRNTCBsb2FkIGFzIHRoaXMg
d2lsbCBwcmV2ZW50IHRoZSBwYWdlIGxvYWQgc3RhdGUgZnJvbSBiZWluZwpAQCAtMTIwOSw3ICsx
MjA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEq
IHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXMKICAgICAgICAgcmVhdHRhY2hUb1dlYlBy
b2Nlc3MoKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNh
Y3Rpb24oKTsKLSAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwodHJh
bnNhY3Rpb24sIGJsYW5rVVJMKCkuc3RyaW5nKCkpOworICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQ
ZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgV1RGOjpibGFua1VSTCgpLnN0cmluZygp
KTsKIAogICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAgIGxvYWRQYXJhbWV0
ZXJzLm5hdmlnYXRpb25JRCA9IDA7CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1
cmwsIEludFBvaQogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAoV1RGOjpwcm90
b2NvbElzSmF2YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWlzVmFs
aWQoKSkKQEAgLTI2NjMsNyArMjY2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5h
dmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSCiAKICAg
ICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBwcmV2aW91c1Byb2Nlc3MgPSBtX3Byb2Nlc3MuY29weVJl
ZigpOwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFtZUlESW5QcmV2aW91c1By
b2Nlc3MgPSBtX21haW5GcmFtZSA/IHN0ZDo6bWFrZV9vcHRpb25hbChtX21haW5GcmFtZS0+ZnJh
bWVJRCgpKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvIG1haW5GcmFtZVVSTCA9IG1fbWFpbkZy
YW1lID8gbV9tYWluRnJhbWUtPnVybCgpIDogV2ViQ29yZTo6VVJMKCk7CisgICAgYXV0byBtYWlu
RnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFpbkZyYW1lLT51cmwoKSA6IFVSTCgpOwogCiAg
ICAgQVNTRVJUKG1fcHJvY2Vzcy5wdHIoKSAhPSBwcm9jZXNzLnB0cigpKTsKIApAQCAtMzY2MCw3
ICszNjYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCkKICAgICBtX25hdmlnYXRpb25TdGF0ZS0+ZGlkRGVzdHJveU5hdmln
YXRpb24obmF2aWdhdGlvbklEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJDb3JlOjpVUkwmJiB1cmwsIFdlYkNvcmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFVSTCYmIHVybCwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkp
OwogCkBAIC0zNzU4LDcgKzM3NTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRpZENhbmNlbENsaWVudFJlZGlyZWN0KCp0aGlzKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QsIFdlYkNvcmU6OlVSTCYmIHVybCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
aGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBV
UkwmJiB1cmwpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVu
dCgpKTsKIApAQCAtNDAzMyw3ICs0MDMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELAogICAg
IH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9w
YXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBXZWJDb3JlOjpVUkwmJiB1cmwsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90
ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDQ0MSw3ICs0NDQxLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZy
YW1lSUQsIGNvbnMKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxl
TGlzdE5vdGlmaWNhdGlvbihXZWJDb3JlOjpVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgaWRl
bnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucykKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5n
PiYmIGlkZW50aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiYmIG5vdGlmaWNhdGlvbnMpCiB7CiAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oKnRoaXMsIFdU
Rk1vdmUodXJsKSwgV1RGTW92ZShpZGVudGlmaWVycyksIFdURk1vdmUobm90aWZpY2F0aW9ucykp
OwogfQpAQCAtNjE1Nyw3ICs2MTU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRU
ZXJtaW5hdGUoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgaWYgKG1fcHJvY2Vzcy0+aXNVbmRlck1lbW9yeVByZXNzdXJlKCkp
IHsKLSAgICAgICAgU3RyaW5nIGRvbWFpbiA9IFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW4oV2ViQ29yZTo6VVJMKHsgfSwgY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmco
KSk7CisgICAgICAgIFN0cmluZyBkb21haW4gPSBXZWJDb3JlOjp0b3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluKFVSTCh7IH0sIGN1cnJlbnRVUkwoKSkuaG9zdCgpLnRvU3RyaW5nKCkpOwogICAg
ICAgICBpZiAoIWRvbWFpbi5pc0VtcHR5KCkpCiAgICAgICAgICAgICBsb2dEaWFnbm9zdGljTWVz
c2FnZVdpdGhFbmhhbmNlZFByaXZhY3koV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpk
b21haW5DYXVzaW5nSmV0c2FtS2V5KCksIGRvbWFpbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpO
byk7CiAgICAgfQpAQCAtNzI0MCw3ICs3MjQwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVud3Jh
cENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIGJvb2wmIHN1Y2MK
IH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxl
bmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VT
dHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5
U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmws
IFN0cmluZyYgcmVzdWx0KQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBh
Z2VDbGllbnQoKSk7CiAKQEAgLTc5MDEsOSArNzkwMSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0UG9pbnRlclVubG9jaygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVUkxTY2hlbWVI
YW5kbGVyRm9yU2NoZW1lKFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVyPiYmIGhhbmRsZXIsIGNvbnN0
IFN0cmluZyYgc2NoZW1lKQogewotICAgIGF1dG8gY2Fub25pY2FsaXplZFNjaGVtZSA9IFVSTFBh
cnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUoc2NoZW1lKTsKKyAgICBhdXRvIGNhbm9uaWNh
bGl6ZWRTY2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUoc2No
ZW1lKTsKICAgICBBU1NFUlQoY2Fub25pY2FsaXplZFNjaGVtZSk7Ci0gICAgQVNTRVJUKCFVUkxQ
YXJzZXI6OmlzU3BlY2lhbFNjaGVtZShjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKKyAg
ICBBU1NFUlQoIVdURjo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY2Fub25pY2FsaXplZFNj
aGVtZS52YWx1ZSgpKSk7CiAKICAgICBhdXRvIHNjaGVtZVJlc3VsdCA9IG1fdXJsU2NoZW1lSGFu
ZGxlcnNCeVNjaGVtZS5hZGQoY2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpLCBoYW5kbGVyLmdl
dCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHNjaGVtZVJlc3VsdCwgc2NoZW1lUmVzdWx0LmlzTmV3
RW50cnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiNzJiMDA2
MDI4OThjOTc3YWNhNWY3ZTI2MDE5YjNhODEyM2Y0MDA4Li40MGUyZDUwYTc2NzY1YTBhYzc4ZGYy
MmVjNmMyMGQ2MTFjNzAyYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtODMsNyArODMsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Rl
eHRHcmFudWxhcml0eS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtOTUsNiArOTQsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTQ3OSw3ICs0NzksNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gbG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgQVBJOjpPYmplY3QqIHVzZXJE
YXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZEZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwotICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhU
TUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29u
c3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxl
VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKKyAgICB2b2lkIGxvYWRBbHRl
cm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEo
QVBJOjpEYXRhKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBu
YXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2Vi
Q29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9p
bnQpOwogCkBAIC0xMDkyLDggKzEwOTIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVBbHRl
cm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCk7CiAjZW5kaWYKIAotICAg
IHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcmJiBzdWdnZXN0ZWRG
aWxlbmFtZSwgU3RyaW5nJiYgbWltZVR5cGUsIFdlYkNvcmU6OlVSTCYmIG9yaWdpbmF0aW5nVVJM
LCBBUEk6OkRhdGEmKTsKLSAgICB2b2lkIHNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihT
dHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgV2ViQ29yZTo6VVJMJiYgb3JpZ2luYXRpbmdVUkws
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRv
d25sb2Fkc0ZvbGRlcihTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nJiYgbWltZVR5
cGUsIFVSTCYmIG9yaWdpbmF0aW5nVVJMLCBBUEk6OkRhdGEmKTsKKyAgICB2b2lkIHNhdmVQREZU
b0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgVVJMJiYg
b3JpZ2luYXRpbmdVUkwsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRp
dmVBcHBsaWNhdGlvblJhdyhjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCk7CiAgICAgdm9pZCBzYXZlUERGVG9U
ZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCk7CkBAIC0xMjA2
LDcgKzEyMDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgYm9vbCYgc3VjY2VlZGVkLCBWZWN0b3I8dWludDhfdD4mKTsKICNlbmRp
ZgogCi0gICAgdm9pZCBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQg
a2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVu
Z2VTdHJpbmcsIGNvbnN0IFVSTCYsIFN0cmluZyYgcmVzdWx0KTsKIAogICAgIHZvaWQgdGFrZVNu
YXBzaG90KFdlYkNvcmU6OkludFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgU25h
cHNob3RPcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCkBAIC0xMzgwLDcgKzEzODAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKICNlbmRpZgogCi0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQ
YXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgYmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5j
dGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0
aChjb25zdCBVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChi
b29sIHN1Y2Nlc3MpPiYmKTsKIAogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgcHJlZmVyZW5jZXNT
dG9yZSgpIGNvbnN0OwogCkBAIC0xNDUwLDE3ICsxNDUwLDE3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENyZWF0
ZVdpbmRvdyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVy
JiYpOwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6
OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB3aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmws
IGRvdWJsZSBkZWxheSwgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAgICAgdm9pZCBk
aWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpOwotICAgIHZv
aWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmKTsKKyAgICB2b2lkIGRpZENoYW5nZVBy
b3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlz
aW9uYWxVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1
c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250
ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2Vy
RGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZh
aWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lk
IGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBX
ZWJDb3JlOjpVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBVUkwmJiwgY29uc3QgVXNl
ckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZU1haW5Eb2N1bWVudCh1aW50NjRfdCBmcmFtZUlE
KTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE0ODYsMTEgKzE0ODYsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB1bmFi
bGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5n
Q2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7
CisgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eSYpOwogCiAgICAgdm9pZCB3aWxsU3VibWl0Rm9ybSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmKTsKICAgICAgICAgCi0gICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3RpZmlj
YXRpb24oV2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3Rv
cjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucyk7CisgICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3Rp
ZmljYXRpb24oVVJMJiYsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJp
bmc+JiYgbm90aWZpY2F0aW9ucyk7CiAKICAgICAvLyBIaXN0b3J5IGNsaWVudAogICAgIHZvaWQg
ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9y
ZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwpAQCAtMTUxMSw4ICsxNTExLDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFxdWVQbHVn
aW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc1BhZ2VVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmlu
Zyk7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFdF
QkdMKQotICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7Ci0gICAg
dm9pZCByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOwor
ICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCByZXNvbHZlV2Vi
R0xQb2xpY3lGb3JVUkwoVVJMJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJH
TFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
ICAgICB2b2lkIHNldFRvb2xiYXJzQXJlVmlzaWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSk7
CiAgICAgdm9pZCBnZXRUb29sYmFyc0FyZVZpc2libGUoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpEZWxheWVkUmVwbHkmJik7CkBAIC0xNzI1LDcgKzE3MjUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVp
bnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB1aW50NjRfdCBjb21wbGV4
VGV4dElucHV0U3RhdGUpOwogI2VuZGlmCiAKLSAgICBib29sIG1heWJlSW5pdGlhbGl6ZVNhbmRi
b3hFeHRlbnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJik7CisgICAgYm9vbCBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KGNvbnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogCiAjaWYgVVNFKEFVVE9N
QVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgppbmRleCA1NjFmNmQwZjBjODU0NjMzM2YyNTcwNzQxYzBjMmE0OTA1MTVkNTdkLi5iODVlZDQ2
NjI2MGNlNzM3ZGRhNDY2ODE0M2U5OWM2YjEzN2RhODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNCw4ICszNCw4IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlj
a2VkKHVpbnQzMl90IHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBTdHJpbmcgbWltZVR5cGUs
IFN0cmluZyBwbHVnaW5VUkxTdHJpbmcsIFN0cmluZyBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0
cmluZywgU3RyaW5nIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcgcGFnZVVSTFN0cmluZykKICNlbmRp
ZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAg
V2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xp
Y3kpIERlbGF5ZWQKLSAgICBSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMIHVy
bCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKKyAgICBXZWJHTFBvbGljeUZvclVS
TChVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVsYXllZAorICAgIFJlc29sdmVX
ZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVsYXll
ZAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICBEaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMoc3RydWN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIERp
ZFJlY2VpdmVFdmVudCh1aW50MzJfdCB0eXBlLCBib29sIGhhbmRsZWQpCkBAIC0xMjUsMTEgKzEy
NSwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZENyZWF0ZVdpbmRvdyh1
aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRlbnRpZmllciB3
aW5kb3dJZGVudGlmaWVyKQogCiAgICAgIyBGcmFtZSBsb2FkIG1lc3NhZ2VzCi0gICAgRGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCB1bnJlYWNoYWJsZVVSTCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMIHVybCwg
VVJMIHVucmVhY2hhYmxlVVJMLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyB1cmwsIGRvdWJsZSBkZWxh
eSwgZW51bTpib29sIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJk
TGlzdCkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQpCi0gICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwpCisgICAgRGlkQ2hhbmdl
UHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFVSTCB1cmwpCiAgICAgRGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxVUkws
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEp
CiAgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRl
ciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0
ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKQEAgLTE0Miw3ICsxNDIsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlUHJveHkgewogICAgIERpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJ1bklu
c2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCiAgICAgRGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2Vi
S2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCB0
eXBlLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5cGUsIFVSTCB1cmwsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCiAgICAgRGlkQ2hhbmdlTWFpbkRvY3VtZW50KHVpbnQ2NF90IGZyYW1lSUQpOwog
ICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKIApAQCAtNDI4
LDcgKzQyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2F2ZVJlY2VudFNl
YXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiBzZWFyY2hJ
dGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUpIC0+IChWZWN0b3I8V2Vi
Q29yZTo6UmVjZW50U2VhcmNoPiByZXN1bHQpIExlZ2FjeVN5bmMKIAotICAgIFNhdmVQREZUb0Zp
bGVJbkRvd25sb2Fkc0ZvbGRlcihTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUsIFdlYkNvcmU6OlVS
TCBvcmlnaW5hdGluZ1VSTCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCisgICAgU2F2ZVBERlRv
RmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgVVJMIG9yaWdp
bmF0aW5nVVJMLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRp
b24oU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcs
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBTdHJpbmcgcGRmVVVJRCkKQEAgLTQ4OCw3ICs0ODgs
NyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgRGlkUmVzaWduSW5wdXRFbGVt
ZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlKFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAK
LSAgICBDb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViQ29yZTo6VVJMIHVybCwgVmVjdG9y
PFN0cmluZz4gaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+IG5vdGlmaWNhdGlvbnMpCisgICAg
Q29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFVSTCB1cmwsIFZlY3RvcjxTdHJpbmc+IGlkZW50
aWZpZXJzLCBWZWN0b3I8U3RyaW5nPiBub3RpZmljYXRpb25zKQogCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQWRkUGxh
eWJhY2tUYXJnZXRQaWNrZXJDbGllbnQodWludDY0X3QgY29udGV4dElkKQpAQCAtNTQ0LDYgKzU0
NCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhRm9ySWRlbnRpZmllcnMoVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMpIC0+IChWZWN0
b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJhbGl6ZWREYXRhKSBMZWdh
Y3lTeW5jCiAjZW5kaWYKIAotICAgIFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1
bnNpZ25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFsbGVuZ2VTdHJpbmcsIFdlYkNvcmU6OlVS
TCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KSBMZWdhY3lTeW5jCisgICAgU2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgU3RyaW5nIGNoYWxsZW5n
ZVN0cmluZywgVVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQpIExlZ2FjeVN5bmMKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFmZmFkNWQ0MmFh
MmJmZDZmYzVhYjQ1Y2EzY2ZlODI2MTE3NDI4NzAuLjVjNGQ3NjhjMGRiNjVlMzU2ZjRhYzFhMDA1
MTFmNjQ4NTRiYTgzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKQEAgLTg3LDcgKzg3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NXYXJtaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUg
PHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgpAQCAtOTUsNiArOTQsNyBAQAogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNz
UHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU2Nv
cGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1l
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0yMzYxLDcgKzIz
NjEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9u
KGNvbnN0IFN0cmluZyYgcmVnaXN0cmFibGVEb21haQogICAgICp2YWx1ZSA9IHByZXdhcm1JbmZv
cm1hdGlvbjsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6dHJ5UHJld2FybVdpdGhEb21haW5J
bmZvcm1hdGlvbihXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
dXJsKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dHJ5UHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlv
bihXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGF1dG8q
IHByZXdhcm1JbmZvcm1hdGlvbiA9IG1fcHJld2FybUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVE
b21haW4uZ2V0KHRvUmVnaXN0cmFibGVEb21haW4odXJsKSk7CiAgICAgaWYgKCFwcmV3YXJtSW5m
b3JtYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA3
ZTE5NjJhYTg3MzRjMjIxZTRjYjM2ODQ1MDI4NTI1MjkzMjIxZjRhLi4wM2RhMzg5MGZmMmVhZmQ0
MWQ3NmYyY2VmOTViMmU5MGQwN2JlMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3Rl
clVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0
cmluZyYpOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6VVJM
Jik7CisgICAgdm9pZCBwcmVjb25uZWN0VG9TZXJ2ZXIoY29uc3QgVVJMJik7CiAKICAgICBWaXNp
dGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlKCkgeyByZXR1cm4gbV92aXNpdGVkTGlua1N0
b3JlLmdldCgpOyB9CiAKQEAgLTU0MSw3ICs1NDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRk
UHJvY2Vzc1RvT3JpZ2luQ2FjaGVTZXQoV2ViUGFnZVByb3h5Jik7CiAgICAgdm9pZCByZW1vdmVQ
cm9jZXNzRnJvbU9yaWdpbkNhY2hlU2V0KFdlYlByb2Nlc3NQcm94eSYpOwogCi0gICAgdm9pZCB0
cnlQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYpOworICAgIHZvaWQgdHJ5UHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihX
ZWJQcm9jZXNzUHJveHkmLCBjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgdXBkYXRlTWF4U3VzcGVu
ZGVkUGFnZUNvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IGUyMDM1ZDAxYmMwYmJhNWRlODljMjZiZGNjZWQ5ZjBmMDExNTEwMDAuLmNj
NzQwMTE2ZmMzZDcwNzg2ZWJmMjJiMTczZDE0Njc4NmE4M2RmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTUsMTAgKzU1LDEwIEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9QcmV3YXJtSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1
YmxpY1N1ZmZpeC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VkZGVuVGVybWluYXRpb24uaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTY5Nyw3ICs2OTcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0
ZU9yRmFpbGVkVG9MYXVuY2goKQogI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAgICAg
aWYgKHBhZ2VzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIGF1dG8mIHBhZ2UgPSAqcGFnZXNbMF07
Ci0gICAgICAgIFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdl
YkNvcmU6OlVSTCh7IH0sIHBhZ2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7Cisg
ICAgICAgIFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFVSTCh7
IH0sIHBhZ2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICgh
ZG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHBhZ2UubG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoRW5oYW5jZWRQcml2YWN5KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6ZG9tYWlu
Q2F1c2luZ0NyYXNoS2V5KCksIGRvbWFpbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCAwMGI2
OGZmMjFlYTBhYzRmYjIxYWMwNWViODU4Njc0ZjA5M2EzM2VmLi5lNDIzNzc5NTBmNjQ2YTYzMzk3
OTAwYjMzM2VhYmEyYTEzNTNiMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaApAQCAtNjEsNyArNjEsNiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwog
c3RydWN0IFBsdWdpbkluZm87CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQpAQCAtMTUx
LDEwICsxNTAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsQWNxdWlyZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbigpIHsgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5k
Ym94RXh0ZW5zaW9uID0gdHJ1ZTsgfQogICAgIHZvaWQgYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVS
TChjb25zdCBTdHJpbmcmKTsKLSAgICBib29sIGhhc0Fzc3VtZWRSZWFkQWNjZXNzVG9VUkwoY29u
c3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgYm9vbCBoYXNBc3N1bWVkUmVhZEFjY2Vzc1Rv
VVJMKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgYm9vbCBjaGVja1VSTFJlY2VpdmVkRnJvbVdl
YlByb2Nlc3MoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBjaGVja1VSTFJlY2VpdmVkRnJvbVdl
YlByb2Nlc3MoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgYm9vbCBjaGVja1VSTFJlY2VpdmVk
RnJvbVdlYlByb2Nlc3MoY29uc3QgVVJMJik7CiAKICAgICBzdGF0aWMgYm9vbCBmdWxsS2V5Ym9h
cmRBY2Nlc3NFbmFibGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDAzNDEyYTdkMTBl
YzNlZTM3NGQwZDM1YzYzNGIwNjBlYjdjMDNjM2YuLjY5YWYzODIzNDc2OTJlYjM3MjZjZWMwNGIy
MjE1MjYyZDBkNmRiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTczLDcgKzE3Myw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlKGJvb2wgdmFsCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZh
bGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzdWJtaXRUZWxlbWV0cnkoKQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1l
UHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFVSTCkKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dGcmFtZU5hdmlnYXRpb24oY29uc3Qg
V2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFVSTCYgcGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNzJkOTkw
ODgzMDA5NDY0Zjc0NWZhMTZlMjZjMTJhOTFiNWQ5ZTg4Yi4uZTkyZTU3ZGU2MGE3YjczOGFhMjcz
ZDIzM2M0NWRmZGNmMTBiNmM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTQxLDcgKzQxLDYgQEAg
Y2xhc3MgV29ya1F1ZXVlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIH0KIApA
QCAtODMsMjggKzgyLDI4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsVGVy
bWluYXRlKCk7CiAKLSAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKTsKLSAgICB2b2lkIGxv
Z1VzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwotICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKLSAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNlY29u
ZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRQcmV2YWxlbnRS
ZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwotICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRp
b24oY29uc3QgV2ViRnJhbWVQcm94eSYsIGNvbnN0IFVSTCYgcGFnZVVSTCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCk7CisgICAgdm9pZCBs
b2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3Qg
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRMYXN0
U2Vlbihjb25zdCBVUkwmLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBV
UkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7
Ci0gICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgaXNWZXJ5UHJldmFsZW50UmVz
b3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7Ci0gICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoY29uc3QgV2ViQ29y
ZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZy
YW1lVW5kZXIoY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJGcmFtZSwgY29uc3QgV2ViQ29yZTo6VVJM
JiB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBp
c1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0UmVkaXJl
Y3RlZEZyb20sIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNl
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAg
dm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wpOwotICAgIHZv
aWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
KGNvbnN0IFdlYkNvcmU6OlVSTCYgc3ViZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJh
bWUpOwotICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdl
YkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwot
ICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVS
TCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8p
OwotICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgV2ViQ29y
ZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0
ZWRGcm9tKTsKLSAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBXZWJD
b3JlOjpVUkwmIHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVS
ZWRpcmVjdGVkVG8pOwotICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29u
c3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhv
c3ROYW1lUmVkaXJlY3RlZEZyb20pOworICAgIHZvaWQgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGlzVmVy
eVByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKGNvbnN0IFVS
TCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgdG9wRnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKGNvbnN0
IFVSTCYgc3ViRnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJhbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKGNvbnN0
IFVSTCYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBjb25zdCBVUkwmIGhvc3RSZWRpcmVjdGVkVG8sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRS
ZXNvdXJjZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgc2V0R3JhbmRmYXRoZXJlZChjb25zdCBVUkwmLCBib29sKTsKKyAgICB2b2lkIGlzR3JhbmRm
YXRoZXJlZChjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1l
LCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIHRvcEZyYW1lKTsK
KyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHN1YnJl
c291cmNlLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0
IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7CisgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0VG8oY29uc3QgVVJMJiB0b3BGcmFtZUhvc3ROYW1lLCBjb25zdCBVUkwmIGhvc3RO
YW1lUmVkaXJlY3RlZFRvKTsKKyAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9t
KGNvbnN0IFVSTCYgdG9wRnJhbWVIb3N0TmFtZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0
ZWRGcm9tKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRh
dGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJCbG9ja2luZ1N0
YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTEyOCw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3Vy
Y2VGb3JEZWJ1Z01vZGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0
IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgCiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjYWxsYmFjaykgeyBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsgfQogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5oCmluZGV4IDA4MzZhMWRhZTIyYTc1NzU1MTBjY2IwNzcxNmU3Nzg1MzgxNzAzZTcuLmIw
MTAyMTc3NDM3ZjNmMjE0OTQ1YTdhMzRlNThhM2RmZTI0MTc0ODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKQEAg
LTMyLDEwICszMiwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QYXRoLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBEcmFnU291cmNlU3RhdGUg
ewogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRv
ckRhdGE7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXRoPiB2aXNpYmxlUGF0aDsKICAg
ICBTdHJpbmcgbGlua1RpdGxlOwotICAgIFdlYkNvcmU6OlVSTCBsaW5rVVJMOworICAgIFVSTCBs
aW5rVVJMOwogICAgIGJvb2wgcG9zc2libHlOZWVkc0RyYWdQcmV2aWV3VXBkYXRlIHsgdHJ1ZSB9
OwogCiAgICAgTlNJbnRlZ2VyIGl0ZW1JZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBjYTQ1YTFkOGJiMTM0
MTBkMjhjODg5OWVjN2NlOTM0ZmQ4NWM4YzQxLi44ZWNlZTE0N2FhMDc4OTFhMmQyMjEwMmQ5NjA1
NDM4OTdiZTQ2NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaApAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVh
clRleHRJbmRpY2F0b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0Rpc21pc3NhbEFuaW1h
dGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jl
c3MoZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzaG93U2FmZUJyb3dzaW5nV2FybmluZyhj
b25zdCBTYWZlQnJvd3NpbmdXYXJuaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWYXJpYW50
PFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkLCBXZWJDb3JlOjpVUkw+JiYpPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFNhZmVCcm93c2luZ1dh
cm5pbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVu
c2FmZUxvYWQsIFVSTD4mJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJTYWZlQnJvd3Np
bmdXYXJuaW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDk2OGZkZTk2
MzI4ZWYxMjZkMzZiODBmZjE4YTVkZTE2MWVjNmExMTEuLjU3YjVhY2VmM2I0ZmE2MzlhMTNmOGZm
MjMwNzA2ZTI0MTlhODBjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTQ3Miw3ICs0NzIsNyBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRl
eHQmIGxheQogewogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93U2FmZUJyb3dzaW5nV2Fy
bmluZyhjb25zdCBTYWZlQnJvd3NpbmdXYXJuaW5nJiB3YXJuaW5nLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQsIFdlYkNvcmU6OlVSTD4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93U2FmZUJy
b3dzaW5nV2FybmluZyhjb25zdCBTYWZlQnJvd3NpbmdXYXJuaW5nJiB3YXJuaW5nLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gd2ViVmlldyA9IG1fd2Vi
Vmlldy5nZXQoKSkKICAgICAgICAgW3dlYlZpZXcgX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nOndh
cm5pbmcgY29tcGxldGlvbkhhbmRsZXI6V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFu
dC5tbQppbmRleCAyZDg2ZTJhMDJlZjQzZTE2YzM5NWY4ZWU1ZjMxYTJlYmNjODdhZTIyLi4yN2Iz
NTkzNTBhMGIyZmM0MzA4NGNjYjk3YzBiZTk2MGQ1ZDA4YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpAQCAtNDEs
MTAgKzQxLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQg
PFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0
aWVzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQg
PHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJh
cy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGhyZWFk
cy9CaW5hcnlTZW1hcGhvcmUuaD4KIApAQCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyBjb25zdCBD
R0Zsb2F0IHByZXNlbnRhdGlvbkVsZW1lbnRSZWN0UGFkZGluZyA9IDE1OwogICAgICAgICBpZiAo
aXNKYXZhU2NyaXB0VVJMKQogICAgICAgICAgICAgdGl0bGVTdHJpbmcgPSBXRUJfVUlfU1RSSU5H
X0tFWSgiSmF2YVNjcmlwdCIsICJKYXZhU2NyaXB0IEFjdGlvbiBTaGVldCBUaXRsZSIsICJUaXRs
ZSBmb3IgYWN0aW9uIHNoZWV0IGZvciBKYXZhU2NyaXB0IGxpbmsiKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICB0aXRsZVN0cmluZyA9IFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHRh
cmdldFVSTCk7CisgICAgICAgICAgICB0aXRsZVN0cmluZyA9IFdURjo6dXNlclZpc2libGVTdHJp
bmcodGFyZ2V0VVJMKTsKICAgICAgICAgICAgIHRpdGxlSXNVUkwgPSBZRVM7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDEyZDY3MTc3NjBjNDkzMzIxMzRmNjRiMzg5
ZjY1NTNhNTc4M2NhM2UuLmU2MTE0YzcyMTk4OGZjZDQyZWI5MTQyNThmNWM0NmRmOGQ1Mjg5ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtOTEsNyArOTEsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9TaGFy
ZURhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4
dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJFdmVudC5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YlNlbGVjdGlvblJlY3QuaD4gLy8gRklYTUU6IFdLMiBzaG91bGQgbm90IGluY2x1ZGUgV2ViS2l0
IGhlYWRlcnMhCiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgpAQCAtMTAy
LDYgKzEwMSw3IEBACiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9T
b2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYv
Y29jb2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAog
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC01MTA1LDcgKzUxMDUsNyBAQCBzdGF0aWMgYm9v
bCBpc0Fzc2lzdGFibGVJbnB1dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAtICh2b2lkKWFjdGlvblNo
ZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxl
bWVudFdpdGhVUkw6KE5TVVJMICopdXJsIHJlY3Q6KENHUmVjdClib3VuZGluZ1JlY3QKIHsKICAg
ICBpZiAoX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQpCi0gICAgICAgIFtfdGV4dFNlbGVjdGlvbkFz
c2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpIGZyb21SZWN0
OmJvdW5kaW5nUmVjdF07CisgICAgICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hh
cmVTaGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdS
ZWN0XTsKIH0KIAogI2lmIEhBVkUoQVBQX0xJTktTKQpAQCAtNjM5Nyw3ICs2Mzk3LDcgQEAgc3Rh
dGljIE5TU3RyaW5nICpwcmV2aWV3SWRlbnRpZmllckZvckVsZW1lbnRBY3Rpb24oX1dLRWxlbWVu
dEFjdGlvbiAqYWN0aW9uKQogCiAgICAgTlNVUkwgKnRhcmdldFVSTCA9IGNvbnRyb2xsZXIucHJl
dmlld0RhdGFbVUlQcmV2aWV3RGF0YUxpbmtdOwogICAgIFVSTCBjb3JlVGFyZ2V0VVJMID0gdGFy
Z2V0VVJMOwotICAgIGJvb2wgaXNWYWxpZFVSTEZvckltYWdlUHJldmlldyA9ICFjb3JlVGFyZ2V0
VVJMLmlzRW1wdHkoKSAmJiAoV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZhbWlseShjb3JlVGFy
Z2V0VVJMKSB8fCBXZWJDb3JlOjpwcm90b2NvbElzKGNvcmVUYXJnZXRVUkwsICJkYXRhIikpOwor
ICAgIGJvb2wgaXNWYWxpZFVSTEZvckltYWdlUHJldmlldyA9ICFjb3JlVGFyZ2V0VVJMLmlzRW1w
dHkoKSAmJiAoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvcmVUYXJnZXRVUkwpIHx8IFdU
Rjo6cHJvdG9jb2xJcyhjb3JlVGFyZ2V0VVJMLCAiZGF0YSIpKTsKIAogICAgIGlmIChbX3ByZXZp
ZXdJdGVtQ29udHJvbGxlciB0eXBlXSA9PSBVSVByZXZpZXdJdGVtVHlwZUxpbmspIHsKICAgICAg
ICAgX2hpZ2hsaWdodExvbmdQcmVzc0NhbkNsaWNrID0gTk87CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCAz
NjFiYzUwMzNiMWU2MDJjMmNiYmVkMGIxZDcxYjM5NjYzMjQzN2UxLi5mNjMzNmZjOWVjN2ZlZGYz
OWZmZmY0NGU3ZmM4NjJhY2FiYTViOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTQxLDEzICs0MSwx
MyBAQAogI2ltcG9ydCAiX1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oIgogI2lt
cG9ydCAiX1dLR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0dlb2xvY2F0aW9uUG9zaXRpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9y
dCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAvLyBGSVhNRTogUmVtb3ZlIHVzZSBvZiBXZWJLaXQxIGZyb20gV2ViS2l0Mgog
I2ltcG9ydCA8V2ViS2l0L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaD4KQEAg
LTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koV0tHZW9s
b2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyLCBibwogCiAgICAgICAgIGlkPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVn
YXRlUHJpdmF0ZT4+KFtyZXF1ZXN0LnZpZXcgVUlEZWxlZ2F0ZV0pOwogICAgICAgICBpZiAoW3Vp
RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0R2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1lOmRlY2lzaW9uSGFuZGxlcjopXSkgewot
ICAgICAgICAgICAgV2ViQ29yZTo6VVJMIHJlcXVlc3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwg
cmVxdWVzdC5mcmFtZS0+dXJsKCkpOworICAgICAgICAgICAgVVJMIHJlcXVlc3RGcmFtZVVSTChV
UkwoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCkpOwogICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJh
bWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKnJlcXVl
c3QuZnJhbWUuZ2V0KCksICpyZXF1ZXN0Lm9yaWdpbi5nZXQoKSkpOwogICAgICAgICAgICAgUmVm
UHRyPFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFdlYktp
dDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKHVpRGVsZWdhdGUsIEBzZWxl
Y3Rvcihfd2ViVmlldzpyZXF1ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOmZyYW1l
OmRlY2lzaW9uSGFuZGxlcjopKTsKICAgICAgICAgICAgIFdLV2ViVmlldyAqdmlld0Zyb21SZXF1
ZXN0ID0gcmVxdWVzdC52aWV3LmdldCgpOwpAQCAtMjAwLDggKzIwMCw4IEBAIHN0YXRpYyB2b2lk
IHNldEVuYWJsZUhpZ2hBY2N1cmFjeShXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlv
bk1hbmFnZXIsIGJvCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZFJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25G
b3JVUkw6aXNNYWluRnJhbWU6bWFpbkZyYW1lVVJMOildKSB7CiAgICAgICAgICAgICBjb25zdCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkqIG1haW5GcmFtZSA9IHJlcXVlc3QuZnJhbWUtPnBhZ2UoKS0+
bWFpbkZyYW1lKCk7CiAgICAgICAgICAgICBib29sIGlzTWFpbkZyYW1lID0gcmVxdWVzdC5mcmFt
ZSA9PSBtYWluRnJhbWU7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkwgcmVxdWVzdEZyYW1lVVJM
KFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7Ci0gICAgICAgICAgICBXZWJD
b3JlOjpVUkwgbWFpbkZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsK
KyAgICAgICAgICAgIFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIHJlcXVlc3QuZnJhbWUtPnVy
bCgpKTsKKyAgICAgICAgICAgIFVSTCBtYWluRnJhbWVVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJs
KCkpOwogICAgICAgICAgICAgcmVxdWlyZXNVc2VyQXV0aG9yaXphdGlvbiA9IFt1aURlbGVnYXRl
IF93ZWJWaWV3OnJlcXVlc3Qudmlldy5nZXQoKQogICAgICAgICAgICAgICAgICBzaG91bGRSZXF1
ZXN0R2VvbG9jYXRpb25BdXRob3JpemF0aW9uRm9yVVJMOnJlcXVlc3RGcmFtZVVSTAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTWFpbkZyYW1lOmlz
TWFpbkZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdh
Y3lQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTGVnYWN5UERGVmll
dy5tbQppbmRleCBkMzhmMzFjODE1ZjNjOWYzZTk4ZGE1MmU1NGZiODg4ODRlZDBhNDMwLi5hZWEw
ZDZkMzlmNjJkNzFkOTY3NDQ2ZTY4MjI3ZWJkN2YyODNhZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW0KQEAgLTQzLDExICs0MywxMSBAQAog
I2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
Zy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQg
PHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIC8vIEFsbCBvZiBVSVBERlBhZ2UqIGFyZSBkZXByZWNh
dGVkLCBzbyBqdXN0IGlnbm9yZSBkZXByZWNhdGVkIGRlY2xhcmF0aW9ucwogLy8gaW4gdGhpcyBm
aWxlIHVudGlsIHdlIHN3aXRjaCBvZmYgdGhlbS4KQEAgLTc3OSw3ICs3NzksNyBAQCBzdGF0aWMg
TlNTdHJpbmdDb21wYXJlT3B0aW9ucyBzdHJpbmdDb21wYXJlT3B0aW9ucyhfV0tGaW5kT3B0aW9u
cyBvcHRpb25zKQogLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFz
c2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0
OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAgX3dlYlNlbGVjdGlvbkFzc2lzdGFudCA9IGFk
b3B0TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0p
OwotICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6
OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKKyAgICBbX3dl
YlNlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3Ry
aW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKICAgICBfd2ViU2VsZWN0aW9uQXNzaXN0
YW50ID0gbmlsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQpp
bmRleCA3YWQ2Yjg3ZDA1YWQzYWY4ZjY0OGQ5YzA0NGJiODgxYTljMGM0MGU2Li40ODVmMDU4MTE3
NmYwNGFmYWEwMzRhNTUzMTdiNTliNTc5NTNhMTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS1BERlZpZXcubW0KQEAgLTQxLDExICs0MSwxMSBAQAogI2ltcG9ydCAiX1dLV2ViVmll
d1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9N
b2JpbGVDb3JlU2VydmljZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgot
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05T
VVJMRXh0cmFzLmg+CiAKIEBpbnRlcmZhY2UgV0tQREZWaWV3ICgpIDxQREZIb3N0Vmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZSwgV0tBY3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlPgogQGVuZApAQCAt
NTE4LDcgKzUxOCw3IEBAIHN0YXRpYyBOU1N0cmluZ0NvbXBhcmVPcHRpb25zIHN0cmluZ0NvbXBh
cmVPcHRpb25zKF9XS0ZpbmRPcHRpb25zIGZpbmRPcHRpb25zKQogLSAodm9pZClhY3Rpb25TaGVl
dEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1l
bnRXaXRoVVJMOihOU1VSTCAqKXVybCByZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0CiB7CiAgICAg
YXV0byBzZWxlY3Rpb25Bc3Npc3RhbnQgPSBhZG9wdE5TKFtbVUlXS1NlbGVjdGlvbkFzc2lzdGFu
dCBhbGxvY10gaW5pdFdpdGhWaWV3OltfaG9zdFZpZXdDb250cm9sbGVyIHZpZXddXSk7Ci0gICAg
W3NlbGVjdGlvbkFzc2lzdGFudCBzaG93U2hhcmVTaGVldEZvcjpXZWJDb3JlOjp1c2VyVmlzaWJs
ZVN0cmluZyh1cmwpIGZyb21SZWN0OmJvdW5kaW5nUmVjdF07CisgICAgW3NlbGVjdGlvbkFzc2lz
dGFudCBzaG93U2hhcmVTaGVldEZvcjpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJl
Y3Q6Ym91bmRpbmdSZWN0XTsKIH0KIAogI2lmIEhBVkUoQVBQX0xJTktTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVu
L1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggOWFiZTdhYzQ1NzViZjJj
ZGY1YmI5YTcyNjRkYmM0MDM0NDgxYTE3MS4uMmJkMWE4ZTJkMWE4YWU4ZGViMTNlMGU0NzQ2MmQx
YzRjYzc5MjYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxz
Y3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
SU9TLm1tCkBAIC00NSwxMiArNDUsMTIgQEAKICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zp
ZXdwb3J0QXJndW1lbnRzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5o
PgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTlNTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQ
SS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9VUkxGb3JtYXR0aW5nU1BJLmg+CiAjaW1wb3J0
IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwpAQCAtOTQ3LDcgKzk0Nyw3IEBAIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBr
QW5pbWF0aW9uRHVyYXRpb24gPSAwLjI7CiAgICAgaWYgKExpbmtQcmVzZW50YXRpb25MaWJyYXJ5
KCkpCiAgICAgICAgIGRvbWFpbiA9IFt1cmwgX2xwX3NpbXBsaWZpZWREaXNwbGF5U3RyaW5nXTsK
ICAgICBlbHNlCi0gICAgICAgIGRvbWFpbiA9IHVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CisgICAg
ICAgIGRvbWFpbiA9IFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKICNlbmRpZgogCiAgICAg
TlNTdHJpbmcgKnRleHQgPSBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IDFkYWMyMDlhZGMwM2Fi
YTkyZTM3NGM1OTE5ODMxNGZkZTFlYzJlM2UuLjVlZThkYmFlNDNmMDBkYTgxMDhkYzc2MWVjODZk
Yzk4MWRkYzE2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdh
Y3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0xMTMzLDcgKzExMzMsNyBAQCBib29s
IGRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IHNp
emUsIFNlc3Npb25TdGF0ZSYgcwogICAgIH0KIAogICAgIGlmIChhdXRvIHByb3Zpc2lvbmFsVVJM
U3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1
ZShzZXNzaW9uU3RhdGVEaWN0aW9uYXJ5LCBwcm92aXNpb25hbFVSTEtleSkpKSB7Ci0gICAgICAg
IHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTCA9IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgcHJvdmlzaW9uYWxVUkxTdHJpbmcpOworICAgICAgICBzZXNzaW9uU3RhdGUucHJvdmlzaW9u
YWxVUkwgPSBVUkwoVVJMKCksIHByb3Zpc2lvbmFsVVJMU3RyaW5nKTsKICAgICAgICAgaWYgKCFz
ZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLmgKaW5kZXggNmJjOGJkZDdkMzE1ODM5NDlhN2MzOTg1YmI0NDg5OWM1MDU0M2Q5
YS4uODdiMzA1ZWRkNjNiNThlNWZjOGQwYmMyODBjODg2NWZmNTRkN2I5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTEwNCw3ICsx
MDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9u
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFNhZmVCcm93c2luZ1dhcm5pbmcm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2FmZUxv
YWQsIFdlYkNvcmU6OlVSTD4mJik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd1NhZmVCcm93
c2luZ1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2FybmluZyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbGVhclNhZmVCcm93c2luZ1dhcm5pbmcoKSBvdmVycmlkZTsKICAg
ICAKICNpZiBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGUzNzRiOTlkYTdkZDViNTAyYzg3YTJhZDY2ZTM2
OTYxNDI3MzAyZjUuLjExMjM1YTEyN2UyNzdhMDE4NzYwMzhjOTc0NmY3ZjhlZDJjY2JhMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0K
QEAgLTQ4OSw3ICs0ODksNyBAQCBSZWY8VmFsaWRhdGlvbkJ1YmJsZT4gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZVZhbGlkYXRpb25CdWJibGUoY29uc3QgU3RyaW5nJiBtZXNzYQogICAgIHJldHVybiBW
YWxpZGF0aW9uQnViYmxlOjpjcmVhdGUobV92aWV3LCBtZXNzYWdlLCBzZXR0aW5ncyk7CiB9CiAK
LXZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFNhZmVC
cm93c2luZ1dhcm5pbmcmIHdhcm5pbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmFyaWFudDxX
ZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgV2ViQ29yZTo6VVJMPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNv
bnN0IFNhZmVCcm93c2luZ1dhcm5pbmcmIHdhcm5pbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoIW1faW1wbCkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKENvbnRpbnVlVW5zYWZlTG9hZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4
IDk5ODM5MDcwOTk1NDRmMmEwZGFlMzFhZDk4YjdhNjI4OGUzOWI1ODkuLjIxZGNkMmZlMjQzNjFi
MWFlNWNiMTg2MzRlYWMwYjM4YTY2NGY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzgs
MTMgKzM4LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBv
cnQgPFdlYkNvcmUvR2VvbWV0cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dElu
ZGljYXRvcldpbmRvdy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9z
cGkvbWFjL0RhdGFEZXRlY3RvcnNTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0xvb2t1cFNQ
SS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNNZW51U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L21hYy9OU1BvcG92ZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL1F1aWNrTG9va01hY1NQ
SS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
IFNPRlRfTElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6LCBRdWlja0xvb2tVSSkKIFNP
RlRfTElOS19DTEFTUyhRdWlja0xvb2tVSSwgUUxQcmV2aWV3TWVudUl0ZW0pCkBAIC0yNzYsMTcg
KzI3NiwxNyBAQCBTT0ZUX0xJTktfQ0xBU1MoUXVpY2tMb29rVUksIFFMUHJldmlld01lbnVJdGVt
KQogCiAgICAgU3RyaW5nIGFic29sdXRlTGlua1VSTCA9IGhpdFRlc3RSZXN1bHQtPmFic29sdXRl
TGlua1VSTCgpOwogICAgIGlmICghYWJzb2x1dGVMaW5rVVJMLmlzRW1wdHkoKSkgewotICAgICAg
ICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJtYWlsdG8iKSkgewor
ICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKGFic29sdXRlTGlua1VSTCwgIm1haWx0byIpKSB7
CiAgICAgICAgICAgICBfdHlwZSA9IGtXS0ltbWVkaWF0ZUFjdGlvbk1haWx0b0xpbms7CiAgICAg
ICAgICAgICByZXR1cm4gW3NlbGYgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRM
aW5rXTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzKGFic29s
dXRlTGlua1VSTCwgInRlbCIpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMoYWJzb2x1
dGVMaW5rVVJMLCAidGVsIikpIHsKICAgICAgICAgICAgIF90eXBlID0ga1dLSW1tZWRpYXRlQWN0
aW9uVGVsTGluazsKICAgICAgICAgICAgIHJldHVybiBbc2VsZiBfYW5pbWF0aW9uQ29udHJvbGxl
ckZvckRhdGFEZXRlY3RlZExpbmtdOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKFdlYkNvcmU6
OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoYWJzb2x1dGVMaW5rVVJMKSkgeworICAgICAgICBpZiAo
V1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGFic29sdXRlTGlua1VSTCkpIHsKICAgICAgICAg
ICAgIF90eXBlID0ga1dLSW1tZWRpYXRlQWN0aW9uTGlua1ByZXZpZXc7CiAKICAgICAgICAgICAg
IFFMUHJldmlld01lbnVJdGVtICppdGVtID0gW05TTWVudUl0ZW0gc3RhbmRhcmRRdWlja0xvb2tN
ZW51SXRlbV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5z
cGVjdG9yUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3Bl
Y3RvclByb3h5V2luLmNwcAppbmRleCAzMTk4MjIwYzIxMjNlZTlmYjc4MjYwYjIyZTU4ZTBiNzhj
MTI4NGZlLi5jYmZlMzBlOWUwYmU4MzIxNTE4MTk2MzU1Zjc3OTgwOGI4MjRmMmY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5j
cHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9u
LmgiCi0jaW5jbHVkZSAiQ0ZVUkxFeHRyYXMuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5o
IgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldl
YlBhZ2VHcm91cC5oIgpAQCAtNDUsNiArNDQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29y
ZUluc3RhbmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRj
YXN0ZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlLmg+CisjaW5jbHVkZSA8d3RmL2NmL0NG
VVJMRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3Bw
CmluZGV4IDc3NDYyNzIyZmNhMWJiMmI0NjBmNDY0OGIyMjAxM2I0ZTNjZTQ5ODYuLjliOGMwMDhk
MTZkNzU4ZjhkZDcxZjU2MDIzMzczYmEwYmQ3M2YzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3Bw
CkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BheW1lbnRDb29yZGluYXRvci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yOjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBj
CiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpPcGVuUGF5bWVudFNldHVwKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgcmVwbHlJ
RCkpOwogfQogCi1ib29sIFdlYlBheW1lbnRDb29yZGluYXRvcjo6c2hvd1BheW1lbnRVSShjb25z
dCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJM
PiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdCYgcGF5bWVudFJlcXVlc3QpCitib29sIFdlYlBheW1lbnRDb29yZGluYXRvcjo6c2hvd1Bh
eW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlu
a0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYg
cGF5bWVudFJlcXVlc3QpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdz
OwogICAgIGZvciAoY29uc3QgYXV0byYgbGlua0ljb25VUkwgOiBsaW5rSWNvblVSTHMpCkBAIC0x
ODYsNyArMTg2LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnBheW1lbnRDb29yZGlu
YXRvckRlc3Ryb3llZCgpCiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZU1l
cmNoYW50KGNvbnN0IFN0cmluZyYgdmFsaWRhdGlvblVSTFN0cmluZykKIHsKLSAgICBwYXltZW50
Q29vcmRpbmF0b3IoKS52YWxpZGF0ZU1lcmNoYW50KFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwo
KSwgdmFsaWRhdGlvblVSTFN0cmluZykpOworICAgIHBheW1lbnRDb29yZGluYXRvcigpLnZhbGlk
YXRlTWVyY2hhbnQoVVJMKFVSTCgpLCB2YWxpZGF0aW9uVVJMU3RyaW5nKSk7CiB9CiAKIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yOjpkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFdlYkNvcmU6
OlBheW1lbnQmIHBheW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZGQ3MmVlMDgxODAwNDIy
ZTVkZjQ0MDRjMTk2MTQxYzlkNDUyNDg4Yy4uZmI3NGQzMGZmOTVmM2Y3MmE1NTRhYTFkMGExZTM1
MTc5N2YyZTg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgY2FuTWFrZVBheW1lbnRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5NYWtl
UGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29u
c3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwg
V1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdV
UkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBz
aG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+
JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25z
dCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hp
cHBpbmdNZXRob2RVcGRhdGU+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGlu
Z0NvbnRhY3RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RV
cGRhdGU+JiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDNmMjcxMjMy
ZDYzZTRhNGY3NzQ1ZWYyOGM2NGVhZTU1MzhjNGI3YjkuLjdmZTkzMzRiYTRmMzU5YzcyYjBkOTFk
NTU0MmE3MTY0NDYyZTZkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTcxLDcgKzcx
LDcgQEAgdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb24KICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Q2FjaGVzKG1fc2Vzc2lvbklELCBy
ZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luLCB1cGRhdGVDb3VudGVyKSwgMCk7CiB9CiAKLXZvaWQg
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNv
cmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpSZXRyaWV2ZVJlY29yZHMobV9zZXNzaW9uSUQsIHJl
cXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHVybCksIDApOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmgKaW5kZXggNDgwZWRkZDliNGU1MTVjNGI0YWFlNmQ0YzZkOTQyNThmY2JlMjUyYi4u
ZDJlMGRmMmQ4NjA5MjJhM2IxZTM1NmJlOTIxZTc4MDE5ODZkYzc1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1JlbW92ZSh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBmaW5hbDsK
ICAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZpbmFs
OwogCi0gICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsK
KyAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIHZvaWQgZG9C
YXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3Jl
OjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRp
b24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
VmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5jcHAKaW5kZXggNzMyNWIyYTZiYjQ4NzcwZGRjODYxNDUyN2U4NTI2NjZhNWY3MGMwOS4uMjRl
MzU1OWNmZjA2OWJkMzE3OTFlZTY1MTc4ZWFmNGU0ZGMwZTQ3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcApAQCAt
MzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJG
aWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBm
aWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBleHRlbnNpb25IYW5kbGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCmluZGV4IGFjNDExYWE5NDM2ZGY2MTZj
MWQzMjU2YmM3ZTNmYmQ3MGQxY2RlY2QuLjZhYmVlMzY3NDhkZmVjYzJjYWQ0NmNjYzIyMmE3NGM1
MTc2ZDg5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAtMzEsMTMgKzMxLDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBCbG9iUmVnaXN0cnlQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9i
UmVnaXN0cnkgewogcHVibGljOgotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmLCBSZWY8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TChjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92
ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCkgb3ZlcnJpZGU7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0
IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChj
b25zdCBVUkwmLCBSZWY8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29u
c3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgb3ZlcnJpZGU7
CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBh
dGhzKT4mJikgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCAwODJiNGM2YmRjYTBjNmYwNDIwZjFl
YTBkZTIwOWQ2NTMxMDdiZDU3Li5jNmU5N2FiMTNkYjA2YjI0MTU0MDU0ZWFiNDE5MjZkNDdmOTFl
YzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmgKQEAgLTM3LDcgKzM3LDYgQEAgY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Niw3ICs1NSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZp
cnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBBUEk6
Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktp
dDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZy
YW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBh
Z2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQpAQCAtOTUs
NyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZlYXR1cmVzVXNlZEluUGFnZShX
ZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JikgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6Oldl
YkZyYW1lJikgeyB9Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnRGb3JVUkwoV2Vi
S2l0OjpXZWJGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IHsgcmV0dXJuIFdURjo6
U3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudEZvclVSTChXZWJL
aXQ6OldlYkZyYW1lJiwgY29uc3QgV1RGOjpVUkwmKSBjb25zdCB7IHJldHVybiBXVEY6OlN0cmlu
ZygpOyB9CiAKICAgICB2aXJ0dWFsIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+
IGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7IHJldHVybiB7IH07IH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVGcmFtZS5jcHAKaW5kZXggYmVmNTJmYTk1NDg2NGJhNDk2MjkwMWE0YjE0ODRmYjA4
MDkzZjdhYi4uNzg1ZDFhNWViOTUzNjJlNDliOGNlNmVlY2Y2YjA5YjI3YmFjOGY2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIFdLU3RyaW5nUmVm
IFdLQnVuZGxlRnJhbWVDb3B5TGF5ZXJUcmVlQXNUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVS
ZWYpCiAKIGJvb2wgV0tCdW5kbGVGcmFtZUFsbG93c0ZvbGxvd2luZ0xpbmsoV0tCdW5kbGVGcmFt
ZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0ltcGwoZnJh
bWVSZWYpLT5hbGxvd3NGb2xsb3dpbmdMaW5rKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
dG9XVEZTdHJpbmcodXJsUmVmKSkpOworICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5hbGxv
d3NGb2xsb3dpbmdMaW5rKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpOwogfQogCiBi
b29sIFdLQnVuZGxlRnJhbWVIYW5kbGVzUGFnZVNjYWxlR2VzdHVyZShXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lUmVmKQpAQCAtMjEwLDEyICsyMTAsMTIgQEAgYm9vbCBXS0J1bmRsZUZyYW1lR2V0RG9j
dW1lbnRCYWNrZ3JvdW5kQ29sb3IoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgZG91YmxlKgog
CiBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weVN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3Vy
Y2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsK
LSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5h
bWVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0
cmluZyh1cmxSZWYpKSkpOworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZnJhbWVSZWYp
LT5zdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChVUkwoVVJMKCksIHRvV1RGU3Ry
aW5nKHVybFJlZikpKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TUlNRVR5
cGVGb3JSZXNvdXJjZVdpdGhVUkwoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYg
dXJsUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5taW1l
VHlwZUZvclJlc291cmNlV2l0aFVSTChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RG
U3RyaW5nKHVybFJlZikpKSk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJl
ZiktPm1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcodXJs
UmVmKSkpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1lQ29udGFpbnNBbnlGb3JtRWxlbWVudHMo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5k
ZXggNzk5MzA1NzM3ZGNhOTUxYmEwYjFmNDhmOWU1NWIxNGM3MjEwOGM4ZC4uOTk1YzVkY2M5NjFl
M2JlNTA2YzA4MWNhYmNmYTZhMzdjZGRjMWU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAKQEAgLTY1LDkgKzY1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9V
UkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1doZWVsRXZlbnRUZXN0VHJpZ2dlci5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFdLQnVuZGxlUGFnZVNl
dEZvb3RlckJhbm5lcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlQmFubmVy
UmVmCiAKIGJvb2wgV0tCdW5kbGVQYWdlSGFzTG9jYWxEYXRhRm9yVVJMKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwYWdlUmVm
KS0+aGFzTG9jYWxEYXRhRm9yVVJMKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgdG9XVEZT
dHJpbmcodXJsUmVmKSkpOworICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0
YUZvclVSTChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1
bmRsZVBhZ2VDYW5IYW5kbGVSZXF1ZXN0KFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCmluZGV4IGI1
ZTE2NTdhMGQyMWY2YzFjOTdiYjkwMzhmZDRhNTAxOTliY2YxYWQuLjcxNTc0OWE0OTIzOWMzMWFh
YjdmYzFhZWRkMDI2MjNlMTRlOGFhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
Q29udmVydFRvVVRGOFN0cmluZy5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCiAKLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM1LDcgKzM1LDcg
QEAgZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV1RGOjpTdHJpbmcgY29uc3QmIHMpCiAgICAg
cmV0dXJuIGdfc3RyZHVwKHMudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWdjaGFyKiBjb252ZXJ0VG9V
VEY4U3RyaW5nKFdlYkNvcmU6OlVSTCBjb25zdCYgcykKK2djaGFyKiBjb252ZXJ0VG9VVEY4U3Ry
aW5nKFVSTCBjb25zdCYgcykKIHsKICAgICByZXR1cm4gY29udmVydFRvVVRGOFN0cmluZyhzLnN0
cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmlu
Zy5oCmluZGV4IGU0OTQxMTNhM2Y4ZmY2ZTljNGRiZTY4YWY5ZjFkOGEyZTIyMmZlYzkuLmMzNzI1
MzU5Yjg5MzQ3YzFmODg5NmFkYzViY2FiNGI2YTQ0OTZjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4
U3RyaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuaApAQCAtMjMsMTMgKzIzLDkgQEAKIAogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsK
LX0KLQogdHlwZWRlZiBjaGFyIGdjaGFyOwogCiBnY2hhciogY29udmVydFRvVVRGOFN0cmluZyhX
VEY6OlN0cmluZyBjb25zdCYgcyk7Ci1nY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3Jl
OjpVUkwgY29uc3QmIHMpOworZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoVVJMIGNvbnN0JiBz
KTsKIAogI2VuZGlmIC8qIENvbnZlcnRUb1VURjhTdHJpbmdfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAppbmRleCAxYmIwYmExNjAzNzI4YmMyZmM5MjQ5
N2FjYjAxMzZiYjk5OTA1NzJiLi4wODMxNzRlNWVkMjFmOTgzOTczYjI2YzdkN2M4YzQ4OGUxMDJj
MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAt
MzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IGVjNWQwMGIwZjdi
OGE4ZjkyODg5OThhZDM5ODFkY2E4MTJiMzcxZTMuLjZkM2U0OTIxZmU5OGRlNzkzNzE5YjE4MGMw
YWYyODEzNmY3NjZmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmgKQEAgLTM0LDcgKzM0LDYgQEAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0
OwogY2xhc3MgU3RyaW5nOwotY2xhc3MgVVJMOwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRU
cmFpdHM8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZT4gewogICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
VjEsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYyLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRW
MywgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjQsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY1
LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Vjcs
IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY4LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWOT4g
VmVyc2lvbnM7CkBAIC00OCw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoY29uc3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFz
ZSopOwogCiAgICAgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3
aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsK
KyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5n
JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBX
ZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBX
ZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKQEAgLTg2LDcgKzg1LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBmZWF0dXJlc1VzZWRJblBhZ2UoV2ViUGFnZSYsIGNvbnN0
IFZlY3RvcjxXVEY6OlN0cmluZz4mKSBvdmVycmlkZTsKIAotICAgIFdURjo6U3RyaW5nIHVzZXJB
Z2VudEZvclVSTChXZWJGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IG92ZXJyaWRl
OworICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudEZvclVSTChXZWJGcmFtZSYsIGNvbnN0IFVSTCYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9u
ZT4gbGF5b3V0TWlsZXN0b25lcygpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZTJhNjk3OGZlMjgzYWQ1M2MzNDhiZjA3MDdhYjY4ZGY3
ZDk2MjM2Mi4uOTAzYzZkMDEyYzFkYjI4OGZiYTIzOGI1NzhiZDA2NTYzNDQ4ZDgxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUv
V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAxMjc4YzFiNDQzZmFk
N2JmYTcxZjEwZjJiNGYyODY4NmI2ZTAzNDRmLi42NWNmNDIzYWIxNjgyNzI1YWZkOTRhMzE0YmUx
NDdiODNlYTlmMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6ZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlm
aWVyLCBSZXNvdXJjZUUKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlcnJvciks
IFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29u
bmVjdFRvKEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmws
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25u
ZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVS
TCYgdXJsLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
UHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
dWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBnZW5lcmF0ZUxvYWRJZGVudGlmaWVy
KCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnMu
YWRkKHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuaAppbmRleCBlMDQwZDA3NTVjNzk0ZGJkNzFlYTljNTU4ODQyYTA2NWM1MmRmNWRlLi4x
YzJmYjNmMTFlNDVlM2I3ZWE4ODI5NjNmYTFjYTA5M2Q4ZTZlMTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTU1
LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXImLCBib29sKSBmaW5hbDsKLSAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNl
aXZlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJl
Y3RVUkwpIGZpbmFsOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyKiwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCkgZmluYWw7CiAgICAg
CiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlv
cml0eSBtaW5pbXVtUHJpb3JpdHkpIGZpbmFsOwogCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RI
ZWFkZXJzLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGlu
Z0xvYWRJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxv
YWRlciYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBwcmVj
b25uZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9u
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAogICAgIHZvaWQgc3RvcmVE
ZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiBib2R5SGFzaCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0UHJvdmlkZXIuaAppbmRleCAwMjQ0ZTVmMmM4ODYyMDUzMTc2OTllY2ZkMWUxYTFiMjNj
N2ZkOTk4Li42OWI3ZmEzYjQxNmY0ZWYzOTZhZWFkZTRjMTIwODRiYjM1MmIxMTg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVy
LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTb2NrZXRQ
cm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRQcm92aWRlciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxXZWJTb2NrZXRQcm92aWRlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJTb2NrZXRQcm92aWRlcik7IH0KLSAgICBSZWY8V2ViQ29yZTo6U29ja2V0
U3RyZWFtSGFuZGxlPiBjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJM
JiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbikgZmluYWw7CisgICAgUmVmPFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYs
IFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pIGZpbmFsOwogICAgIHZpcnR1YWwgfldlYlNv
Y2tldFByb3ZpZGVyKCkgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCA3YTBiOWUzMTJlYjk5ZDQ3YWM1
MmRlZTlkZTRhYTY4ZWFmNTRkNzQ3Li4xZDVlMjI5YWMyM2RhMzA4N2U0NmQ5MzU1NjVhYWE0ZDY3
YjVhMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldFN0cmVhbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmPFdlYlNvY2tldFN0cmVhbT4g
V2ViU29ja2V0U3RyZWFtOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRs
ZUMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRTdHJlYW0odXJsLCBjbGllbnQs
IHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbikpOwogfQogCi1XZWJTb2NrZXRTdHJlYW06
OldlYlNvY2tldFN0cmVhbShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6U29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbikKK1dlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3Ry
ZWFtKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNs
aWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0
aW9uKQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQogICAgICwgbV9jbGll
bnQoY2xpZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRTdHJlYW0uaAppbmRleCAzZmViNmE2MzVmZmU5ZTc5MjMxZDMyYjUxYzYzZmI3Mjg3
N2Q5OWUzLi4zODlhMGI5OGI3NTk4Y2M2NjhiZThkYjQ1ZjE3MTFiOGZlOGY3NzBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaApA
QCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0U3Ry
ZWFtIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLCBwdWJsaWMgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlLCBwdWJsaWMgSWRlbnRpZmll
ZDxXZWJTb2NrZXRTdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlNvY2tldFN0
cmVhbT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0
aXRpb24pOworICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0U3RyZWFtPiBjcmVhdGUoY29uc3QgVVJM
JiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CiAgICAgc3RhdGljIHZvaWQgbmV0d29y
a1Byb2Nlc3NDcmFzaGVkKCk7CiAgICAgc3RhdGljIFdlYlNvY2tldFN0cmVhbSogc3RyZWFtV2l0
aElkZW50aWZpZXIodWludDY0X3QpOwogICAgIApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgog
ICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbDsKICAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsOwogCi0gICAgV2Vi
U29ja2V0U3RyZWFtKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0
aXRpb24pOworICAgIFdlYlNvY2tldFN0cmVhbShjb25zdCBVUkwmLCBXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50
aWFsUGFydGl0aW9uKTsKICAgICB+V2ViU29ja2V0U3RyZWFtKCk7CiAKICAgICBzaXplX3QgbV9i
dWZmZXJlZEFtb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCAwMDNkMjdh
MTAxODc5ODg5ZGFhNjZmYWEwYzZkOTkzZTkxNjBlMTBmLi5jNmE1MDY5MTc0MGE1ZGIzZTY1ZjE5
NzU3MWI3YmQ0MDA1YmI3MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0zOCw4ICsz
OCw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQSGVhZGVyTWFwLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMVUdJTl9BUkNISVRF
Q1RVUkUoVU5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGJjYjNkN2ZiNzc3ZDEzMWM3ZjI0
NzZmNjViMTUyZjA0MzkwMTQ2ZDcuLjc0YTg0ZTkyN2NmNWE3ZGY2MjIzNmNmNGE5YmZmYjk1NTEy
MzlhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0SXNQbGF5aW5nQXVkaW8oYm9vbCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVy
UmVkaXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVl
c3RVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3RpZmljYXRpb25EYXRh
KTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVkaXJlY3QoTmV0c2NhcGVQbHVnaW5TdHJlYW0qLCBjb25z
dCBVUkwmIHJlcXVlc3RVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzLCB2b2lkKiBub3Rp
ZmljYXRpb25EYXRhKTsKICAgICB2b2lkIHVybFJlZGlyZWN0UmVzcG9uc2Uodm9pZCogbm90aWZ5
RGF0YSwgYm9vbCBhbGxvdyk7CiAKICAgICAvLyBNZW1iZXIgZnVuY3Rpb25zIGZvciBjYWxsaW5n
IGludG8gdGhlIHBsdWctaW4uCkBAIC0yMDQsMTMgKzIwNCwxMyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxl
ZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdHJlYW1X
aWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVx
dWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3Rh
dHVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3Ry
ZWFtTGVuZ3RoLAorICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCBy
ZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0
cmVhbUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmlu
aXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1E
aWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJM
JiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKKyAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBv
dmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZp
bmlzaExvYWRpbmcoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCmlu
ZGV4IDQwNzQwNzhkN2E4ZmI1MzhjZmY0N2RjMWFkYTRmOWQyMGI3MGQyMmYuLmJiNmE1YjA4Yzdj
Y2U1ZGRlZDg5OTM2MGY3YWI4MzQwZjAzOTVlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaApAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3Mg
VVJMOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW47CkBA
IC01NSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBzdHJlYW1JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyZWFtSUQ7IH0KICAgICBjb25zdCBOUFN0cmVhbSogbnBTdHJlYW0oKSBjb25z
dCB7IHJldHVybiAmbV9ucFN0cmVhbTsgfQogCi0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29u
c3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0
UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzKTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsCisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgVVJMJiByZXF1ZXN0
VVJMLCBjb25zdCBVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkwsIGludCByZWRpcmVjdFJlc3BvbnNl
U3RhdHVzKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBoZWFkZXJzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBlNThk
ZTJjNzYwZGRiMTRjMTJjNGNiZmJmNzVjZTkyZjVhYjhlMDFhLi42ODYyZTMwNGZlZGI4NWI3ODYz
NDcwMGI5ZDZiMzVhNmMzYzIwY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0xMzUsMTIgKzEzNSwxMiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgZmluYWw7
CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNl
bGxlZCkgZmluYWw7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgZmluYWw7Ci0gICAgdm9pZCBzdHJlYW1XaWxs
U2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVz
dFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVz
KSBmaW5hbCB7IH0KLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFt
TGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUp
IGZpbmFsOworICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNw
b25zZVN0YXR1cykgZmluYWwgeyB9CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1E
aWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIHN0cmVh
bURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKLSAg
ICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwm
IHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmll
ZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhl
YWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOworICAgIHZvaWQg
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RG
OjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRS
ZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CiAgICAgdm9p
ZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxT
dHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKQEAgLTMwNiw3ICszMDYsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7CiAKLSAgICBXZWJDb3Jl
OjpVUkwgbV9zb3VyY2VVUkw7CisgICAgVVJMIG1fc291cmNlVVJMOwogCiAgICAgU3RyaW5nIG1f
c3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IG1fZGF0
YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IGY3OTI3MWQ1MWExNGE4NmU3M2MzMGRiYmI5YmIxNmUzNGFhOTY2ZDkuLmMyY2Jh
MDkwZmJiZGIyZDlhMTkwYjFhZmY4ZmUzNTVjZDZmYzMyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTcyMCw3ICsxNzIw
LDcgQEAgYm9vbCBQREZQbHVnaW46OmhhbmRsZXNQYWdlU2NhbGVGYWN0b3IoKSBjb25zdAogdm9p
ZCBQREZQbHVnaW46OmNsaWNrZWRMaW5rKE5TVVJMICp1cmwpCiB7CiAgICAgVVJMIGNvcmVVUkwg
PSB1cmw7Ci0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KGNvcmVVUkwpKQorICAgIGlmIChX
VEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KGNvcmVVUkwpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBGcmFtZSogZnJhbWUgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggODc2ZjZjZTQ4ZWNjYjYwNjMzOTQ3NmE2
NjYxZjI2ZjRmOTBhYTQ3Mi4uYWFiZDVlNTA1MWJlYzI5ZjU1MTE1NzM4MDYxYTZhNjA4ZWYyMzEy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTIzLDE2
ICsyMywxNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgUGx1Z2luX2gKLSNkZWZpbmUgUGx1Z2luX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxU
eXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CkBAIC01MywxNSArNTIsMTUgQEAgY2xhc3MgRGVjb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKLSAgICBjbGFzcyBGbG9hdFBvaW50Owot
ICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLSAgICBjbGFzcyBJbnRQb2ludDsKLSAgICBjbGFz
cyBJbnRSZWN0OwotICAgIGNsYXNzIEludFNpemU7Ci0gICAgY2xhc3MgRmxvYXRQb2ludDsKLSAg
ICBjbGFzcyBTY3JvbGxiYXI7Ci0gICAgY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOworY2xhc3MgRmxvYXRQb2ludDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2Ns
YXNzIEludFBvaW50OworY2xhc3MgSW50UmVjdDsKK2NsYXNzIEludFNpemU7CitjbGFzcyBGbG9h
dFBvaW50OworY2xhc3MgU2Nyb2xsYmFyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgxLDcgQEAgZW51bSBQbHVnaW5UeXBlIHsKIGNsYXNz
IFBsdWdpbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbHVnaW4+IHsKIHB1YmxpYzoK
ICAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7Ci0gICAgICAgIFdlYkNvcmU6OlVSTCB1cmw7CisgICAg
ICAgIFVSTCB1cmw7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwogICAgICAgICBWZWN0
b3I8U3RyaW5nPiB2YWx1ZXM7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKQEAgLTE2NywxMCAr
MTY2LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0
KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpID0gMDsKIAogICAgIC8v
IFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gbWF5IHNlbmQgYW4gSFRUUCByZXF1ZXN0
LgotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBy
ZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzQ29kZSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVx
dWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzQ29kZSkg
PSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgcmVjZWl2
ZWQgaXRzIEhUVFAgcmVzcG9uc2UuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGRpZCByZWNl
aXZlIGRhdGEuCkBAIC0xODMsNyArMTgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgPSAwOwog
CiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBoYXMgcmVj
ZWl2ZWQgaXRzIEhUVFAgcmVzcG9uc2UuCi0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJf
dCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8g
VGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRh
LgpAQCAtMzIzLDUgKzMyMiwzIEBAIHByaXZhdGU6CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYktpdDo6VG9WYWx1ZVR5cGVOYW1lKSBcCiBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViS2l0OjpQbHVnaW4mIHBsdWdpbikgeyByZXR1cm4gcGx1Z2luLnR5cGUoKSA9PSBXZWJLaXQ6
OlNwZWNpZmljUGx1Z2luVHlwZTsgfSBcCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0K
LSNlbmRpZiAvLyBQbHVnaW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCmluZGV4IGE1YzZmYTA0M2MzNjIyNjk0MWM4ZDIxNDdi
MjEyMDhlYzJmMjk0NzUuLmExZjgwN2UxZTU1MDcyM2VmZWVhMTc3MTMzYjgxZGZmNGQxNzZiMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250
cm9sbGVyLmgKQEAgLTQzLDcgKzQzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSFRU
UEhlYWRlck1hcDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7Ci1jbGFz
cyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggZGM0MjExZDAwZWQ4OTEwZDM0N2Q4ZjBj
YTFiNzUzYzZiMmU2ZWExZC4uZTZhYjNlZDliMDMyZmUwNGMwMmRmNWM2ODkyZTQ3ZDRlNjlkNGFj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
CkBAIC04NywxMiArODcsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZyYW1lRGlkRmluaXNoTG9h
ZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIG92ZXJyaWRlOwogICAgIHZvaWQgZnJhbWVEaWRGYWls
KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5n
JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3Qg
bGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKKyAgICB2
b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92
ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RyZWFtRGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRG
YWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiBy
ZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRU
aW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFk
ZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3RyZWFt
RGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZv
aWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDc1
ODA4YjFiNDViMGVjYzU2ODM5YzNiZmQxMjVjYWVkOWFmNjNlOGUuLjQ0OTVjOTkxMTIyZDA4NDNk
YWIwYzg0ZGE2MGJhNWE3Yzk3YmE2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMTYzLDcgKzExNjMsNyBAQCB2b2lkIFBsdWdp
blZpZXc6OnBlcmZvcm1VUkxSZXF1ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgUmVmPFBs
dWdpblZpZXc+IHByb3RlY3QoKnRoaXMpOwogCiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHRoaXMg
aXMgYSBqYXZhc2NyaXB0OiB1cmwuCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVl
c3QtPnJlcXVlc3QoKS51cmwoKSkpIHsKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlw
dChyZXF1ZXN0LT5yZXF1ZXN0KCkudXJsKCkpKSB7CiAgICAgICAgIHBlcmZvcm1KYXZhU2NyaXB0
VVJMUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMjgsNyAr
MTIyOCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUZyYW1lTG9hZFVSTFJlcXVlc3QoVVJM
UmVxdWVzdCogcmVxdWVzdCkKIAogdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVS
TFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQocHJvdG9jb2xJc0ph
dmFTY3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVybCgpKSk7CisgICAgQVNTRVJUKFdURjo6cHJv
dG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVybCgpKSk7CiAKICAgICBSZWZQ
dHI8RnJhbWU+IGZyYW1lID0gbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCmluZGV4IDVjNTFjNDVmNjQwOWRlZWRk
NTVlOTNjMGZkOTg4YjdjODczZDgzMWEuLjNmNzBiMWU4N2I5YWZlOGYzZjA2NWE0MTljY2RiOTUy
Y2VmZmNlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpbkluZm9Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIFZlY3Rv
cjxQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkluZm8oUGFnZSYgcGFn
ZSwgc3RkOjpvcHRpb25hbDxWCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6
OndlYlZpc2libGVQbHVnaW5JbmZvKFBhZ2UmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
KQorVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2Vi
VmlzaWJsZVBsdWdpbkluZm8oUGFnZSYgcGFnZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IHN1
cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzOwogICAgIGF1dG8gcGx1Z2lucyA9IHBsdWdpbkluZm8o
cGFnZSwgc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAppbmRleCAx
YmJhZDVhNzlmYjExZWM2ODA3NDk0N2QwMDdjM2NkNTZlNTgxOWRkLi44NDY0MmQ3ZmMwMTFmOGNh
Y2Y2NDFiYjFhZWU4ZjI4MjM5M2MwN2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaApAQCAtNDYsNyArNDYs
NyBAQCBwcml2YXRlOgogICAgIFdlYlBsdWdpbkluZm9Qcm92aWRlcigpOwogCiAgICAgVmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFs
OwotICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhX
ZWJDb3JlOjpQYWdlJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBj
b25zdCBVUkwmKSBmaW5hbDsKICAgICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgb3ZlcnJpZGU7CiAK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMmJm
YWVlNDc2ZTFmNGJjY2NkYjI2NjBmZTVkOGU2NmJkNjc0YTNkNy4uZGNkNmRhNTgwNmJiMzMyYzI0
ZmZlYzg1MThlZTUwOTZjYmFlN2Y4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTc5LDEzICs3OSwx
MyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mKSBmaW5hbDsKICAgICB2b2lkIHVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcikgZmluYWw7
CiAKLSAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6VVJMJiBjbGllbnRVUkwsIFJlZ2lzdHJhdGlv
bkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24oV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgUmVn
aXN0cmF0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBkaWRNYXRjaFJlZ2lzdHJhdGlv
bih1aW50NjRfdCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKTsKICAgICB2b2lkIGRpZEdldFJlZ2lz
dHJhdGlvbnModWludDY0X3QgbWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKTsKLSAgICB2b2lkIHdoZW5SZWdpc3Ry
YXRpb25SZWFkeShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCB3aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFdoZW5SZWdp
c3RyYXRpb25SZWFkeUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uUmVh
ZHkodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEmJik7CiAKLSAgICB2b2lkIGdldFJlZ2lzdHJhdGlvbnMoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCwgR2V0
UmVnaXN0cmF0aW9uc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9u
cyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xp
ZW50VVJMLCBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICB2b2lkIGRp
ZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
aW5kZXggZTg3M2ZmZmQyYThjNzAxYWU4NjkwNWNlOWU1NzA0ZjFhN2I5YzliNC4uZDk3OTQ2OTlj
OTFkYzVkNzU2ZGMzM2JkYjI1NDVjNWY1ZGMwNDE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRjaEFsbChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRzTWF0
Y2hBbGxDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsYWltKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAg
IHZvaWQgc2tpcFdhaXRpbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIEZ1bmN0
aW9uPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYpIGZpbmFsOwor
ICAgIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lk
IHNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuaAppbmRleCAxYzliMGY0N2M1YTgyOWQ5MjkxMDdhYzM2ZGY4ODBh
ZmU0YmUxNjNlLi4xNjRmNTc4MmVkYzFmOGUzNGI3N2RlYmM5ZWQ4YjAyOWQ5MDA4ODQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCkBAIC01NywxMCArNTcsMTAgQEAgcHVibGljOgog
ICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQmLCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNl
clNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYpOworICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCYsIGNvbnN0IFVSTCYpOwogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdHMoSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiYpOwotICAg
IHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRXaXRoVVJMKEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0
V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3QgVVJMJik7CiAgICAgdm9p
ZCByZW1vdmVVc2VyU3R5bGVTaGVldHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwogICAg
IHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCAwZDJiZWE0ZjJhZmJlODhjN2JmYTkzM2I3OWZiZmNlZWU2NWFlMmJkLi43MGRkNmU5OWMwNGU5
M2M3ZTIwZjJiNDVhMjQxYjEzMWJmZjYxMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAt
MTE4OSw3ICsxMTg5LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVud3JhcENyeXB0b0tleShj
b25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwKIAogI2VuZGlmCiAKLVN0
cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1
bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0
IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBT
dHJpbmcgcmVzdWx0OwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5n
LCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS5wYWdlSUQoKSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKaW5kZXggZTFhZTg1NzVmM2UzMDI3ZTMwNDgzNjA4ZmY1NGVlMzUxMjA1MDQ1MC4uNTQxNTdh
MDlhODRiZDhjZjhkNjI1YmQ4MDQwN2JlY2UyNGFjMzdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApA
QCAtMjE3LDcgKzIxNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5n
TGF5ZXJGbHVzaCgpIGZpbmFsOwogICAgIGJvb2wgYWRqdXN0TGF5ZXJGbHVzaFRocm90dGxpbmco
V2ViQ29yZTo6TGF5ZXJGbHVzaFRocm90dGxlU3RhdGU6OkZsYWdzKSBmaW5hbDsKIAotICAgIHZv
aWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IEhhc2hTZXQ8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mKSBmaW5hbDsKKyAgICB2b2lkIGNv
bnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihjb25zdCBVUkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6
cGFpcjxTdHJpbmcsIFN0cmluZz4+JikgZmluYWw7CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAg
dm9pZCBzZXRMYXN0U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29yKCkgZmluYWwgeyB9CkBAIC0zMzAs
NyArMzMwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0
b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCi0g
ICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpV
UkwmKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJp
bmcsIGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBoYW5kbGVUZWxlcGhvbmVO
dW1iZXJDbGljayhjb25zdCBTdHJpbmcmIG51bWJlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggY2VjMzE0MmIxNmUzNWQw
MDJjZmM4YzQyZjRlNzgxYjgyZWJlODU4Yy4uNWQ4ZTdkNmQwZmE1MWExMDUxZDgwY2ExNzY2ZWUz
NzdmYmNmM2NiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJy
aWRlOworICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICBi
b29sIGlzU3BlYWtpbmcoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDlmN2Q3ZmM1MGI2
ZWM4YWVlNTZiYjI1OWI3MzM0MGM0MGQ5MzY3MjcuLjFhZDRjM2RlMmNiN2QzOGU2MjYyYzE5N2Fh
YjI0Y2NhNmZlZGE4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkQ29uY2x1ZGVFZGl0RHJhZygpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29y
ZTo6RWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKikg
b3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDg3OWRhNjhkYzli
MGUwMTJkNjg2MTM2ZDRmYjM0YWMwMjM3ZDcwNzMuLjY5NThlMDdjODY0N2QwNGJiZTlhZDU0MmI0
YzAwOWQzOWUyMDE4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNzM5
LDcgKzczOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zCiAgICAgfQogCiAgICAgLy8gRm9y
IHN1c3BlbnNpb24gbG9hZHMgdG8gYWJvdXQ6YmxhbmssIG5vIG5lZWQgdG8gYXNrIHRoZSBTdXNw
ZW5kZWRQYWdlUHJveHkuCi0gICAgaWYgKHJlcXVlc3QudXJsKCkgPT0gYmxhbmtVUkwoKSAmJiB3
ZWJQYWdlLT5pc1N1c3BlbmRlZCgpKSB7CisgICAgaWYgKHJlcXVlc3QudXJsKCkgPT0gV1RGOjpi
bGFua1VSTCgpICYmIHdlYlBhZ2UtPmlzU3VzcGVuZGVkKCkpIHsKICAgICAgICAgZnVuY3Rpb24o
UG9saWN5QWN0aW9uOjpVc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTc5NSw3ICsx
Nzk1LDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YWxsb3dTY3JpcHQoYm9vbCBlbmFi
bGVkUGVyU2V0dGluZ3MpCiAgICAgcmV0dXJuICFwbHVnaW5WaWV3IHx8ICFwbHVnaW5WaWV3LT5z
aG91bGRBbGxvd1NjcmlwdGluZygpOwogfQogCi1ib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpz
aG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCkKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2FsQWNj
ZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAppbmRleCA2YzJjMzJkMmRhN2M2ZjE4MjAzMzc0MGIzYmJmNDQxYzBjY2FhNjNlLi42
MDRkNTZjN2ZmN2FmY2FlYWNmMTA0MGJiYTdjZGEzMTRjMzZhYjljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaApAQCAtOTcsMTMgKzk3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNw
YXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24oTlNBcnJheSAqZGV0ZWN0aW9uUmVzdWx0cykgZmlu
YWw7CiAjZW5kaWYKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTWFpbkRvY3VtZW50KCkgZmlu
YWw7Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxDaGFuZ2VEb2N1bWVudChjb25zdCBXZWJDb3JlOjpV
UkwmIGN1cnJlbnRVcmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbmV3VXJsKSBmaW5hbDsKKyAgICB2
b2lkIGRpc3BhdGNoV2lsbENoYW5nZURvY3VtZW50KGNvbnN0IFVSTCYgY3VycmVudFVybCwgY29u
c3QgVVJMJiBuZXdVcmwpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaERpZERpc3BhdGNoT25s
b2FkRXZlbnRzKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VQcm92aXNpb25hbFVSTCgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGll
bnRSZWRpcmVjdCgpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgV2FsbFRpbWUgZmly
ZURhdGUsIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QpIGZpbmFsOworICAgIHZvaWQgZGlz
cGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSBpbnRlcnZh
bCwgV2FsbFRpbWUgZmlyZURhdGUsIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QpIGZpbmFs
OwogICAgIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSBmaW5hbDsK
ICAgICB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOwogICAgIHZv
aWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CkBAIC0xNTUsOCAr
MTU1LDggQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3Jl
OjpIaXN0b3J5SXRlbSYpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50KCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKLSAgICB2b2lk
IGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFn
ZSkgZmluYWw7CisgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mLCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERldGVjdFhTUyhjb25z
dCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7CiAKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpIGZpbmFsOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOwpAQCAtMTg5LDkgKzE4OSw5IEBAIHBy
aXZhdGU6CiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExv
YWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0VGl0bGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZp
bmFsOworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlv
biYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIAotICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3Qg
V2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBm
aW5hbDsKIAogICAgIFN0cmluZyBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0
IGZpbmFsOwogCkBAIC0yMTAsMjAgKzIxMCwyMCBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQ2Fj
aGVQYWdlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBQQUw6OlNlc3Npb25JRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpIGZpbmFsOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93
bmVyRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpIGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
KSBmaW5hbDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2Vi
Q29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFs
bHkpIGZpbmFsOwogICAgIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgZmlu
YWw7CiAgICAgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQmKSBmaW5h
bDsKICAgICAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOwotICAg
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJikgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJikgY29u
c3QgZmluYWw7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCi0gICAgUmVmUHRyPFdlYkNvcmU6
OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
V2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkws
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUph
dmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBs
ZXRFbGVtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBmaW5hbDsKICAgICAK
LSAgICBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbDsKKyAgICBXZWJDb3Jl
OjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKSBmaW5hbDsKICAgICBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgZmluYWw7CkBAIC0yNDksNyArMjQ5LDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgYWxsb3dTY3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3Mp
IGZpbmFsOwogCi0gICAgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVS
TChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBib29sIHNob3VsZEZvcmNlVW5pdmVy
c2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgUmVmPFdlYkNv
cmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggYjBlMDdlZjNkNDBi
NjM1OTZkZjJlYTFiY2Y4NDVhZDc2M2QwM2QzNi4uZjliMGNlZWY5Y2YwYmZhZjM0ZjY0ZGE4YjMx
NjA3ODQ3MTQyYTBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTYw
LDkgKzYwLDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3RvcmFnZU5hbWVzcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3ViZnJhbWVM
b2FkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
I2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTdHJpbmdVdGlsaXRpZXMuaCIKQEAgLTM2NCw3
ICszNjQsNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbgogICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZl
ci0+ZGF0YSgpKSwgc2l6ZSk7CiB9CiAKLVdlYkNvcmU6OlVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCitVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
VVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0
ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFz
dGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCmluZGV4IDE2YTE4YTk2YmEwZmIwYzcyMzk1Y2NjZGJmYjA4MjA3MTViN2ZkY2Iu
LmQ2OTMzN2I3YTc4MDRiZjE1MzMzNjAzYWNlNzQwODNjNDhhZTA3MWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQ3LDEzICs0NywxMyBAQCBwcml2YXRlOgogICAgIFdlYkNv
cmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAv
LyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBj
b29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2ll
cykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29v
a2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJp
ZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVy
cmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsK
KyAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJD
b3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNjQs
NyArNjQsNyBAQCBwcml2YXRlOgogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFN0cmlu
Z0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRl
OworICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICBWZWN0b3I8V2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgog
ICAgIGxvbmcgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CiAgICAgU3RyaW5nIHVuaXF1ZU5hbWUoKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpDb2xv
ciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJD
b3JlOjpVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAg
IFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAKICAgICBs
b25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIGxvbmcgc2V0VHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggNjNi
NGY1MGFhYTczZjJkYWZiM2ZlM2ZkNmJkYjViNDIwZDc5MzNiOS4uZmZlZTJhNjQ2Y2M2ZTg5ZjI0
MzNmM2E0N2ZlN2Y2NDczNDdhODAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpA
QCAtNDgsOCArNDgsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1JlbmRlckltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0cmluZ1RydW5jYXRv
ci5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIlVJS2l0U1BJLmgiCkBAIC0xMjksNyAr
MTI5LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBpZiAodGl0bGUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIHRpdGxlID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAgICAgIGlm
ICh0aXRsZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0aXRsZSA9IHVzZXJWaXNpYmxlU3RyaW5n
KChOU1VSTCAqKXVybCk7CisgICAgICAgICAgICB0aXRsZSA9IFdURjo6dXNlclZpc2libGVTdHJp
bmcodXJsKTsKICAgICB9CiAKICAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShlbGVtZW50KTsKQEAgLTE2Niw3ICsxNjYsNyBAQCB2
b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgICAgICAgICAgZmlsZW5hbWUgPSBkb3dubG9hZEZp
bGVuYW1lOwogICAgIH0KIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTZXRQcm9taXNlZERhdGFGb3JJbWFnZShwYXN0ZWJvYXJkTmFtZSwgaW1hZ2VIYW5kbGUsIGlt
YWdlU2l6ZSwgZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIFN0cmluZyhbW3Jlc3BvbnNlIFVS
TF0gYWJzb2x1dGVTdHJpbmddKSwgdXNlclZpc2libGVTdHJpbmcoKE5TVVJMICopdXJsKSwgYXJj
aGl2ZUhhbmRsZSwgYXJjaGl2ZVNpemUpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIGltYWdl
SGFuZGxlLCBpbWFnZVNpemUsIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCBTdHJpbmcoW1ty
ZXNwb25zZSBVUkxdIGFic29sdXRlU3RyaW5nXSksIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJs
KSwgYXJjaGl2ZUhhbmRsZSwgYXJjaGl2ZVNpemUpKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KaW5kZXggMWY5MGM0YTU3NDBm
NDE1MDlkOGU4NWIxOWQ0YTA3ZTgwMDQzYTI1NC4uM2QxZmY4NDkwMzExMTExNTFjYTJlODdjOGM0
ZTcwN2MyZjEzMzk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KQEAgLTQw
LDcgKzQwLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
S2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9O
U1VSTEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRl
ZExpbmtUYWJsZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmgKaW5kZXggMDkyM2U0NjA5NTliMGYzNGE5NDJl
ZDkyNGYwNDRjNTNmODRjMzNlNi4uMTdmYThlY2NhNzhiYThhYzI3NjgxNjUzYTdkMmU3ZmRkNzBm
ZTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRl
ZExpbmtUYWJsZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oCkBAIC00MSw3ICs0MSw3IEBAIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIodWludDY0X3QgaWRl
bnRpZmllcik7CiAKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0b3JlLgotICAgIGJvb2wg
aXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0
ZVVSTCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBX
ZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21p
Y1N0cmluZyYgYXR0cmlidXRlVVJMKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5r
KFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoKSBvdmVycmlkZTsKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGVjMmQ0ZTE5OWViN2ZkNDI1NzRiN2VjNzc2MDQ3
OTI1NWFjZDFhZjMuLjIzMzJhNTY5Y2QwNzhjYmIwNTU5OWMyYWUyMjE5OTk5MWRjM2M4NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTUw
OCw3ICs1MDgsNyBAQCB1bnNpZ25lZCBXZWJGcmFtZTo6cGVuZGluZ1VubG9hZENvdW50KCkgY29u
c3QKICAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5wZW5k
aW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKIH0KIAotYm9vbCBXZWJGcmFtZTo6YWxsb3dzRm9s
bG93aW5nTGluayhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QKK2Jvb2wgV2ViRnJhbWU6
OmFsbG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCA5ZDIyMWU3ZDBkMDg3ZjRiOGM3OGMxY2RlMTZk
ZWIzN2M0ZDRhNDNhLi42MTdiMThmMjczMzNlM2IyMGI2OGNhNDM3YzJlMmQwNTI4MTMxMDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTUzLDcg
KzUzLDYgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFz
cyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtMTA1LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICAvLyBXS0J1bmRsZUZyYW1l
IEFQSSBhbmQgU1BJIGZ1bmN0aW9ucwogICAgIGJvb2wgaXNNYWluRnJhbWUoKSBjb25zdDsKICAg
ICBTdHJpbmcgbmFtZSgpIGNvbnN0OwotICAgIFdlYkNvcmU6OlVSTCB1cmwoKSBjb25zdDsKKyAg
ICBVUkwgdXJsKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmlj
YXRlSW5mbygpIGNvbnN0OwogICAgIFN0cmluZyBpbm5lclRleHQoKSBjb25zdDsKICAgICBib29s
IGlzRnJhbWVTZXQoKSBjb25zdDsKQEAgLTEzOSwxMSArMTM4LDExIEBAIHB1YmxpYzoKICAgICAK
ICAgICB1bnNpZ25lZCBwZW5kaW5nVW5sb2FkQ291bnQoKSBjb25zdDsKICAgICAKLSAgICBib29s
IGFsbG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgYm9v
bCBhbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgU3RyaW5nIHBy
b3Zpc2lvbmFsVVJMKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVz
b3VyY2VXaXRoVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwotICAgIFN0cmluZyBtaW1l
VHlwZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKKyAgICBT
dHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgVVJMJikgY29u
c3Q7CisgICAgU3RyaW5nIG1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IFVSTCYpIGNv
bnN0OwogCiAgICAgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKGNvbnN0IFN0cmluZyYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDVmZjI0NjU0
M2Q3OTMxZmNlYThlODljNGE5NWUwM2QwMDU2YWQ5OTUuLjEwOTY4Y2RmNzkyMTczMjJlMzFiZjc2
MWM4YzRlNjBhYmM0NjI0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0xMzA0LDcgKzEzMDQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRDbG9z
ZSgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbG9zZVBhZ2UoZmFsc2UpKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkVVJMSW5GcmFtZShXZWJDb3JlOjpVUkwmJiB1cmwsIHVp
bnQ2NF90IGZyYW1lSUQpCit2b2lkIFdlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKFVSTCYmIHVybCwg
dWludDY0X3QgZnJhbWVJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMTM3MCw3
ICsxMzcwLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YShMb2FkUGFyYW1ldGVycyYmIGxvYWRQ
YXJhbWV0ZXJzKQogICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJh
bWV0ZXJzKTsKIAogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCkp
LCBsb2FkUGFyYW1ldGVycy5kYXRhLnNpemUoKSk7Ci0gICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFy
YW1ldGVycy5iYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCks
IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcpOworICAgIFVSTCBiYXNlVVJMID0gbG9hZFBh
cmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiBVUkwo
VVJMKCksIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcpOwogICAgIGxvYWREYXRhSW1wbChs
b2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbG9hZFBh
cmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSwgYmFzZVVSTCwg
VVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhKTsKIH0KIApAQCAtMTM3OCw3ICsxMzc4LDcg
QEAgdm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBMb2FkUGFyYW1ldGVycyYg
bG9hZFBhcmFtZXRlcnMpCiB7CiAgICAgcGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMo
bG9hZFBhcmFtZXRlcnMpOwogCi0gICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNl
VVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0
ZXJzLmJhc2VVUkxTdHJpbmcpOworICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFz
ZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQ
YXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcpOwogICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IGxvYWRQ
YXJhbWV0ZXJzLnVucmVhY2hhYmxlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVS
TCgpLCBsb2FkUGFyYW1ldGVycy51bnJlYWNoYWJsZVVSTFN0cmluZyk7CiAgICAgVVJMIHByb3Zp
c2lvbmFsTG9hZEVycm9yVVJMID0gbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JV
UkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnBy
b3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nKTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJh
bWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwpAQCAtMTY5
OCw3ICsxNjk4LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OmR1bXBIaXN0b3J5Rm9yVGVzdGluZyhjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSkKICAgICAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAg
ICAgaW50IGJlZ2luID0gLWxpc3QuYmFja0NvdW50KCk7Ci0gICAgaWYgKGxpc3QuaXRlbUF0SW5k
ZXgoYmVnaW4pLT51cmwoKSA9PSBibGFua1VSTCgpKQorICAgIGlmIChsaXN0Lml0ZW1BdEluZGV4
KGJlZ2luKS0+dXJsKCkgPT0gV1RGOjpibGFua1VSTCgpKQogICAgICAgICArK2JlZ2luOwogICAg
IGZvciAoaW50IGkgPSBiZWdpbjsgaSA8PSBzdGF0aWNfY2FzdDxpbnQ+KGxpc3QuZm9yd2FyZENv
dW50KCkpOyArK2kpCiAgICAgICAgIGR1bXBIaXN0b3J5SXRlbSgqbGlzdC5pdGVtQXRJbmRleChp
KSwgOCwgIWksIGJ1aWxkZXIsIGRpcmVjdG9yeSk7CkBAIC0zNTc3LDcgKzM1NzcsNyBAQCB2b2lk
IFdlYlBhZ2U6OmFkZENvbnNvbGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQsIE1lc3NhZ2VTb3Vy
Y2UgbWVzc2FnZVNvdXJjZSwgTQogICAgICAgICBmcmFtZS0+YWRkQ29uc29sZU1lc3NhZ2UobWVz
c2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCByZXF1ZXN0SUQpOwogfQogCi12b2lk
IFdlYlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6VVJMJiByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXBvcnRE
YXRhKQordm9pZCBXZWJQYWdlOjpzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVwb3J0
RGF0YSkKIHsKICAgICBhdXRvIHJlcG9ydCA9IHJlcG9ydERhdGEudGFrZURhdGEoKTsKICAgICBp
ZiAoIXJlcG9ydCkKQEAgLTYwODksMTQgKzYwODksMTQgQEAgdm9pZCBXZWJQYWdlOjppbWFnZU9y
TWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAKIHZvaWQg
V2ViUGFnZTo6YWRkVXNlclNjcmlwdChTdHJpbmcmJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2Vy
U2NyaXB0IHsgV1RGTW92ZShzb3VyY2UpLCBVUkwoV2ViQ29yZTo6YmxhbmtVUkwoKSksIFZlY3Rv
cjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGlvblRpbWUsIGluamVjdGVkRnJh
bWVzIH07CisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0IHsgV1RGTW92ZShzb3Vy
Y2UpLCBVUkwoV1RGOjpibGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKIAogICAgIG1fdXNlckNvbnRl
bnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5v
cm1hbFdvcmxkKCksIFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmFk
ZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewotICAgIFdlYkNvcmU6OlVzZXJTdHls
ZVNoZWV0IHVzZXJTdHlsZVNoZWV0eyBzb3VyY2UsIFdlYkNvcmU6OmJsYW5rVVJMKCksIFZlY3Rv
cjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVV
c2VyTGV2ZWwgfTsKKyAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCB7
c291cmNlLCBXVEY6OmJsYW5rVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+
KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVVc2VyTGV2ZWwgfTsKIAogICAgIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldChJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkOjpub3JtYWxXb3JsZCgpLCBXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYjMyZmM5ODgwZDYyNjg1
MDgyMDU2NmMxNjAyZTY5NDIzODA0NjA5Mi4uMDc0YTA0MWZhNjU4ODMyOTQ3MzBkN2E1ODdlMmU0
MmUzM2YyODFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMTY0LDcgKzE2NCw2IEBAIGNsYXNzIFNlbGVjdGlvblJlY3Q7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7
Ci1jbGFzcyBVUkw7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAKIGVudW0gU3ludGhldGljQ2xp
Y2tUeXBlIDogaW50OF90OwpAQCAtMzIzLDcgKzMyMiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlELCBNZXNzYWdlU291cmNl
LCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHJlcXVlc3RJRCA9IDApOwot
ICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmKTsKKyAgICB2
b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJMJiBy
ZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJik7CiAgICAgdm9pZCBlbnF1ZXVlU2Vj
dXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpOwogCiAgICAgLy8gLS0gQ2FsbGVkIGJ5
IHRoZSBEcmF3aW5nQXJlYS4KQEAgLTM0MSw5ICszNDAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudChjb25zdCBXZWJGcmFtZSYpOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZChXZWJGcmFtZSopOwogICAgIHZvaWQgc2hvdygpOwotICAgIFN0cmluZyB1c2Vy
QWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7Ci0gICAgU3RyaW5nIHVzZXJBZ2VudChX
ZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwotICAgIFN0cmluZyBwbGF0Zm9y
bVVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgdXNlckFn
ZW50KGNvbnN0IFVSTCYpIGNvbnN0OworICAgIFN0cmluZyB1c2VyQWdlbnQoV2ViRnJhbWUqLCBj
b25zdCBVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgcGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgVVJM
JikgY29uc3Q7CiAgICAgV2ViQ29yZTo6S2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1vZGUoKTsK
IAogICAgIHZvaWQgZGlkSW5zZXJ0TWVudUVsZW1lbnQoV2ViQ29yZTo6SFRNTE1lbnVFbGVtZW50
Jik7CkBAIC00MjgsOCArNDI3LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VC
R0wpCi0gICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKFdlYkZy
YW1lKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6OlVSTCYp
OworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChXZWJGcmFt
ZSosIGNvbnN0IFVSTCYpOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSByZXNvbHZlV2Vi
R0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmKTsKICNlbmRpZgogICAgIAogICAg
IGVudW0gY2xhc3MgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCB7IE5vLCBZZXMgfTsKQEAgLTcw
Niw3ICs3MDUsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29udGV4dE1lbnUqIGNvbnRleHRNZW51QXRQ
b2ludEluV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYKIAotICAgIGJv
b2wgaGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgaGFz
TG9jYWxEYXRhRm9yVVJMKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxl
UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtOTY2LDcgKzk2
NSw3IEBAIHB1YmxpYzoKICAgICBOU0RpY3Rpb25hcnkgKmRhdGFEZXRlY3Rpb25Db250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhRGV0ZWN0aW9uQ29udGV4dC5nZXQoKTsgfQogI2VuZGlmCiAK
LSAgICB2b2lkIHNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUpOworICAgIHZvaWQgc2F2ZVBERlRv
RmlsZUluRG93bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNv
bnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxv
bmcgc2l6ZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNhdmVQREZUb1RlbXBv
cmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQp
OwpAQCAtMTE5Miw3ICsxMTkxLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3VyY2VGb3JG
cmFtZShXZWJGcmFtZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdh
dGlvbklELCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNl
VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJik7Cisg
ICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVu
Y29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNv
bnN0IFVzZXJEYXRhJik7CiAKICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZSgpOwpA
QCAtMTIzNiw3ICsxMjM1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzY3JvbGwoV2Vi
Q29yZTo6UGFnZSosIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3Jh
bnVsYXJpdHkpOwogICAgIHN0YXRpYyBib29sIGxvZ2ljYWxTY3JvbGwoV2ViQ29yZTo6UGFnZSos
IFdlYkNvcmU6OlNjcm9sbExvZ2ljYWxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFy
aXR5KTsKIAotICAgIHZvaWQgbG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMJiYsIHVpbnQ2NF90
IGZyYW1lSUQpOworICAgIHZvaWQgbG9hZFVSTEluRnJhbWUoVVJMJiYsIHVpbnQ2NF90IGZyYW1l
SUQpOwogCiAgICAgZW51bSBjbGFzcyBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCB7IE5vLCBZZXMg
fTsKICAgICB2b2lkIHJlc3RvcmVTZXNzaW9uSW50ZXJuYWwoY29uc3QgVmVjdG9yPEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZT4mLCBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCwgV2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6Ok92ZXJ3cml0ZUV4aXN0aW5nSXRlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA3ZjMwMTU0
ODU4NWRlOGYzMGQwNWE1NWMwMjI3OGUwYmYwMjdiNzk2Li40MzIzNjU1OWFmMGZjN2M5Yjk0ZTIx
OWYyZWUwZGMwMGU3NzVkM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI4LDcgKzI4LDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wg
ZHJhd3NCYWNrZ3JvdW5kKQogCiAgICAgQWRkQ29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJ
RCwgZW51bTp1aW50OF90IEpTQzo6TWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBlbnVtOnVp
bnQ4X3QgSlNDOjpNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBTdHJpbmcgbWVzc2FnZSwgdWlu
dDY0X3QgcmVxdWVzdElEKQotICAgIFNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6VVJMIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXBv
cnREYXRhKQorICAgIFNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgVVJM
IHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXBvcnREYXRhKQogICAgIEVucXVl
dWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6
OlNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ6OkluaXQgZXZlbnRJbml0KQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC0xNDgsNyArMTQ4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgR29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tGb3J3YXJk
SXRlbUlELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSBiYWNrRm9yd2FyZFR5
cGUsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkKQogICAgIFRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiAK
LSAgICBMb2FkVVJMSW5GcmFtZShXZWJDb3JlOjpVUkwgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQor
ICAgIExvYWRVUkxJbkZyYW1lKFVSTCB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiAgICAgTG9hZFJl
cXVlc3Qoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCiAgICAg
TG9hZERhdGEoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCiAg
ICAgTG9hZEFsdGVybmF0ZUhUTUwoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBh
cmFtZXRlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCBlNThlOWYxZGQ3YjA3N2Y1
NjFjYTUxYzkyZmVmNzE1YjBhZTE0MjlkLi43MzU2NmExMzM4NWRlM2FhYzY0NmZiOTQ5NmJkZGFm
Y2I1YWY0NmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTQwLDkgKzQwLDkgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dENhaXJvLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QcmludENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRl
IDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKQEAgLTQ1NCwxMyArNDU0LDEzIEBA
IGJvb2wgV2ViUHJpbnRPcGVyYXRpb25HdGs6OmN1cnJlbnRQYWdlSXNMYXN0UGFnZU9mU2hlZXQo
KSBjb25zdAogICAgIHJldHVybiAobV9udW1iZXJVcCA8IDIgfHwgISgobV9wYWdlUG9zaXRpb24g
KyAxKSAlIG1fbnVtYmVyVXApIHx8IG1fcGFnZVBvc2l0aW9uID09IG1fbnVtYmVyT2ZQYWdlc1Rv
UHJpbnQgLSAxKTsKIH0KIAotV2ViQ29yZTo6VVJMIFdlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFt
ZVVSTCgpIGNvbnN0CitVUkwgV2ViUHJpbnRPcGVyYXRpb25HdGs6OmZyYW1lVVJMKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fcHJpbnRDb250ZXh0KQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6VVJM
KCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
KiBkb2N1bWVudExvYWRlciA9IG1fcHJpbnRDb250ZXh0LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpOwotICAgIHJldHVybiBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVy
LT51cmwoKSA6IFdlYkNvcmU6OlVSTCgpOworICAgIHJldHVybiBkb2N1bWVudExvYWRlciA/IGRv
Y3VtZW50TG9hZGVyLT51cmwoKSA6IFVSTCgpOwogfQogCiB2b2lkIFdlYlByaW50T3BlcmF0aW9u
R3RrOjpyb3RhdGVQYWdlSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuaAppbmRleCBiMjYy
ZGYzNGM4MDVmYWFjZGYyMDA3ODFkYjdhYWZlMDQyZTdmNTI0Li5iN2UxNDQ0Mjk0YjI1MTI3ZDQ1
MmYxMmE0OGIyZmFlODk1ODIwZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuaApAQCAtNDAsNyAr
NDAsNiBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrUGFnZVJhbmdlIEd0a1BhZ2VSYW5nZTsKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFByaW50Q29udGV4dDsKIGNsYXNzIFJlc291cmNlRXJyb3I7
Ci1jbGFzcyBVUkw7CiB9OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk3LDcgKzk2LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgcHJpbnRQYWdlc0RvbmUoKTsKICAgICB2b2lkIHByaW50RG9u
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBzZW5kUHJpbnRGaW5p
c2hlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAgV2ViQ29yZTo6VVJMIGZy
YW1lVVJMKCkgY29uc3Q7CisgICAgVVJMIGZyYW1lVVJMKCkgY29uc3Q7CiAKICAgICBXZWJQYWdl
KiBtX3dlYlBhZ2U7CiAgICAgR1JlZlB0cjxHdGtQcmludFNldHRpbmdzPiBtX3ByaW50U2V0dGlu
Z3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNzJmNGRjM2Ex
YTZmZmQzNjk1Y2MxMGRiM2M2MDZkOTUzMmNmMjVlZS4uODMyMjI3NDBlMjUzZGZiY2VkNmIzNDc0
YTA3MzFkNmIzZmJhMGI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cApAQCAtMTE0LDEyICsxMTQsMTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAog
I2lmICFPUyhXSU5ET1dTKQpAQCAtMTQ5OSw3ICsxNDk5LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpw
cm9jZXNzRGlkUmVzdW1lKCkKICNlbmRpZgogfQogCi12b2lkIFdlYlByb2Nlc3M6OnNlbmRQcmV3
YXJtSW5mb3JtYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIFdlYlByb2Nlc3M6
OnNlbmRQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgYXV0byByZWdp
c3RyYWJsZURvbWFpbiA9IHRvUmVnaXN0cmFibGVEb21haW4odXJsKTsKICAgICBpZiAocmVnaXN0
cmFibGVEb21haW4uaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
aW5kZXggZTdhMzI2NTJkN2NmMWQ0MGQ5N2Y4NWMwZTIyMGE3Mjk0MDQyYjU4OS4uZmI3OGU2M2Ey
NzU2ZTIyYjViMzlhZWUxYzRhZjVlOTViYmZjNmNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2Vs
UHJlcGFyZVRvU3VzcGVuZCgpOwogICAgIHZvaWQgcHJvY2Vzc0RpZFJlc3VtZSgpOwogCi0gICAg
dm9pZCBzZW5kUHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZv
aWQgc2VuZFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgaXNKSVRF
bmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCA1ZWQ3ZjEw
YzMxYjU5OGE1ZGYyM2FjZDE2ZGM5NDYwMDZhZjRjNGMyLi5iZGFlNzQ2ZDVkNDhlNTgwZDMzYmE5
ZWNkYTM2MzYxNWY5M2I5ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTYzLDcgKzYzLDYgQEAKICNpbXBvcnQgPFdlYkNv
cmUvTlNTY3JvbGxlckltcERldGFpbHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGVyZm9ybWFuY2VM
b2dnaW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgot
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPGFsZ29yaXRo
bT4KICNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUu
aD4KQEAgLTc0LDYgKzczLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQWNjZXNzaWJpbGl0
eVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNBcHBsaWNhdGlvblNQSS5oPgogI2ltcG9y
dCA8c3RkaW8uaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgIldLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJ
T1MuaCIKQEAgLTQ5NCw3ICs0OTQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk8TlNTdHJp
bmcgKj4+IGFjdGl2ZVBhZ2VzT3JpZ2lucyhjb25zdCBIYXNoTWFwPHVpbnQ2NF90LAogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKE5TVVJMICpvcmlnaW5Bc1VSTCA9IG9yaWdp
bigqcGFnZSkpCi0gICAgICAgICAgICBbYWN0aXZlT3JpZ2lucyBhZGRPYmplY3Q6dXNlclZpc2li
bGVTdHJpbmcob3JpZ2luQXNVUkwpXTsKKyAgICAgICAgICAgIFthY3RpdmVPcmlnaW5zIGFkZE9i
amVjdDpXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKG9yaWdpbkFzVVJMKV07CiAgICAgfQogCiAgICAg
cmV0dXJuIGFjdGl2ZU9yaWdpbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXgg
OTkxODE1MDY0NjQxZTUwOGNkYjI3ZDQzZjU1MjZlOTQzMGE5YTBmOC4uZjdhYmE0ODlhYTI0ZDIz
NjNjZWU5MjMyMTM1M2U5YjdlNzk3NTVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cApAQCAtMzUsOSArMzUsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1N1YnJlc291cmNlTG9hZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggOGE1NmE5
ZTc5OWZhMWZmODI0OWYwMTQwY2FkMzgxYTVlMmFjYTgzYi4uZWRmNjUxZmE2ZGZiY2EzMThhOGY2
ZjIwN2Y0YjY0OWFkZTFiZjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC01NSw3
ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyKikgZmluYWw7CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyJiwgYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2
ZWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0
VVJMKSBmaW5hbDsKKyAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpIGZpbmFsOwogICAgIAog
ICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3Jp
dHkgbWluaW11bVByaW9yaXR5ID0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlZlcnlM
b3cpIGZpbmFsOwogICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygpIGZpbmFsOwpAQCAt
NjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0UGluZ0xvYWQoV2ViQ29yZTo6
RnJhbWUmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVh
ZGVyTWFwJiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgUGluZ0xvYWRDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6OkZyYW1l
TG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHBy
ZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAKICAgICB2b2lkIHN0b3JlRGVyaXZlZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2Vz
dCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGZpbmFsIHsgfQogCkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluZE9u
bHkKICAgICB9OwogICAgIAotICAgIEhvc3RJbmZvcm1hdGlvbiogaG9zdEZvclVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmLCBDcmVhdGVIb3N0UG9saWN5ID0gRmluZE9ubHkpOworICAgIEhvc3RJbmZv
cm1hdGlvbiogaG9zdEZvclVSTChjb25zdCBVUkwmLCBDcmVhdGVIb3N0UG9saWN5ID0gRmluZE9u
bHkpOwogICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoSG9zdEluZm9ybWF0aW9uKiwgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkpOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgSG9zdEluZm9ybWF0aW9uKiwgU3RyaW5nSGFzaD4gSG9zdE1hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01BdHRyLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUF0dHIubW0KaW5kZXggZThmNzZmMTY0ZTA2NWY4MDI4ZTlhNmY2N2VhMzVk
NTJlYjdlYzg3NS4uMjE2YmE2NTQ4MDcxYzY2ZDFhNWE2MDRkOWNkYWRjM2FjYjI5OWVmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUF0dHIubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUF0dHIubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9w
ZXJ0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBdHRyKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUJsb2IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbQpp
bmRleCA0ZTZlZGM1NmE2M2ZmNGNhN2NmNGI0NmNlMWM3NzI0ODM5MTEzYzZlLi5kZTU5MTNjYTE4
NjAwYzhlZDNjOTUyYjFhOTY5ZDdlZWVkYjc1MmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQmxvYi5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5k
bGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpCbG9iKj4oX2ludGVybmFs
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTQ2hhcnNl
dFJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTQ2hhcnNldFJ1bGUu
bW0KaW5kZXggZDFiNWVhYmQ3NWQ2ZmFiNmM3Y2NjN2Q2NmFmZjIzZDRjMjEyMDFkNC4uN2JmZmZk
YzIxZGJhMDg5N2Y2NmZlNWFlMTQ1NTNjNWVjNTM3YmY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0NoYXJzZXRSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbQpAQCAtMzAsOSArMzAsOSBAQAog
I2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogQGltcGxlbWVudGF0aW9u
IERPTUNTU0NoYXJzZXRSdWxlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01DU1NJbXBvcnRSdWxlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUNTU0ltcG9ydFJ1bGUubW0KaW5kZXggODgwNGYyNDUwMGJkNmU4ZWY3YzJiNjBlNDcwNjdlNmM5
MmQzZTAwMy4uYzUxNzhhZTIwMTg0YzYyZmIzZGEwYWRmZTY4N2U0M2Q0YWU1MmMzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUubW0KQEAgLTM1
LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTWVkaWFMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NJbXBvcnRSdWxlKj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU01lZGlhUnVsZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0KaW5kZXggMTU5YTlhNDk0OTg3YmQ1
NDUxOWNiZDYyZTQzMDkwMWE3ZDBjOGM5ZS4uZWI1ZGNmMjJmN2NmYjhjNjE2Nzk5NzlhNWEzMjQ4
MjUzZjlmOWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNT
U01lZGlhUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVk
aWFSdWxlLm1tCkBAIC0zNSw5ICszNSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q1NTTWVkaWFS
dWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxlLm1tCmluZGV4IGYz
NjIyMzFjZTViY2ZkNmRlYTY1ZjExZDMxNGM0MWJkYzlmOTM0MjkuLmI2YmMyNzgwOTlmODI0Nzcx
N2IyZjliNzI5MWJmOTNiZmU4MTUxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NQYWdlUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQ1NTUGFnZVJ1bGUubW0KQEAgLTM0LDkgKzM0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpDU1NQYWdlUnVsZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q1NTUnVsZSo+
KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01DU1NQcmltaXRpdmVWYWx1ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01D
U1NQcmltaXRpdmVWYWx1ZS5tbQppbmRleCAzNWE4OTM0OWMzMjEyOGJmOTM3MjViNjZmYWM0NjY2
NDg4ZDZlMDU4Li4wNTVlYTllYzRhYjVhNTEyMzk3NjhjM2Y3N2I5ZTAzNjk5ZTc5Nzc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVl
Lm1tCkBAIC0zNyw5ICszNyw5IEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RGVwcmVjYXRlZENTU09N
UHJpbWl0aXZlVmFsdWUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkRlcHJlY2F0ZWRDU1NP
TVZhbHVlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1J1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NT
UnVsZS5tbQppbmRleCBkNDhjYjNmOTIyOWRkYjJiZDYzZGQ5OWYwOTFmZDViYzVjNjUyZDBmLi5h
MTJiMGU4YzhmMDc3NzAxNjhlOThjYjdhYTc1NTFkN2FmZDViMjU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW1wb3J0
ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpD
U1NSdWxlKj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tCmluZGV4IDJkOWZlZmZmYzE1NDAwZDk4NzMz
MTMzYzhhMzc0ZjFkNmU5MzhlZjguLmIzYjA3ZjMzOTg2ODZkZWRiZDBkZDJjOTI0NjQxOWExZWNm
ZDc2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHls
ZURlY2xhcmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NT
dHlsZURlY2xhcmF0aW9uLm1tCkBAIC0zNiwxMCArMzYsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlv
bkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1N0eWxlRGVj
bGFyYXRpb24qPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01DU1NTdHlsZVJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTU3R5bGVSdWxlLm1tCmluZGV4IDhhNGNmZjMwY2RkNTUzMTJmN2RkNDI3ZTUxMjFhMDY2
MWQxMGI5MDkuLjJhZTE5MTNiMmU0M2Y4MzEyZmViNDA4NDJhYThmOTdlMGZiNGY2OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZVJ1bGUubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbQpAQCAtMzQs
OSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1N0eWxlUnVsZSo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q1NTUnVsZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZVNoZWV0Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQubW0KaW5kZXggOGMyNDA2MDE2
YzBlYTVjZWJhZWVhZGQ2ZGZkOTk1OTcxNTEwODhhZC4uMjY5ZjAyNDhjN2M2MDE0MGU0NzRiODg0
MDdiMDBhMzgwMDY1ZmZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUNTU1N0eWxlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUNTU1N0eWxlU2hlZXQubW0KQEAgLTM2LDkgKzM2LDkgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhh
bmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpD
U1NTdHlsZVNoZWV0Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpTdHlsZVNoZWV0Kj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNT
U1ZhbHVlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCmlu
ZGV4IDBjNmUwNzRkOGYzZDE1MDUwMDA5MWIxMTFkZDk5ODdjODhhYTczOGYuLmI3N2Q0Yjg3MjA2
NTk2MzA4YzczMmY4YWYzNGMxNjE0ODlmNjIxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NQ1NTVmFsdWUubW0KQEAgLTMxLDEwICszMSwxMCBAQAogI2ltcG9ydCAiRXhjZXB0
aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RGVwcmVjYXRl
ZENTU09NVmFsdWUqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01DaGFyYWN0ZXJEYXRhLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUNoYXJhY3RlckRhdGEubW0KaW5kZXggOGMzYjRkNGE1ODJmZTk0N2EwYzM4ZDA2NGY5
YTEyOTFiNTk5YzljMy4uYjMwZTk1Nzk0MGVkOTY2NTc1YmM2MzQ5NDRlN2E5MTYwZTUyOTJmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRhdGEu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNoYXJhY3RlckRhdGEubW0K
QEAgLTMxLDEwICszMSwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2hhcmFjdGVyRGF0YS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6Q2hhcmFjdGVyRGF0YSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01Db3VudGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNv
dW50ZXIubW0KaW5kZXggMmQxZTU2NTdlYTJkNjY4ZDIwMDViNTNjNDg1OWVkZDlkNTJmOGJmOC4u
MzA4NzAxZTViNDgxODY3NDczMjNjMThkZWVkNGU0MzBhZGFjMmI0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0KQEAgLTMxLDEwICszMSwxMCBAQAogI2ltcG9y
dCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
RGVwcmVjYXRlZENTU09NQ291bnRlcio+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCmluZGV4IGFkNTU4NTI5YWJiNzgzYTgxZDNmOTgzMmZj
NDNmOWFiYzNhMjNhNTAuLjNiMDRkMzkzM2QyNGFhZTMzMzViZDg3YjgxMDY5ZjRjY2U3YmQ2MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQubW0KQEAgLTgyLDEy
ICs4MiwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RyZWVXYWxrZXIuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhFeHByZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1hQ
YXRoTlNSZXNvbHZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aFJlc3VsdC5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NRG9jdW1lbnRGcmFnbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01Eb2N1bWVudEZyYWdtZW50Lm1tCmluZGV4IDk2ZDAzMjliNDlhZTYxNWI3MWVmYWE0YzA1YjI2
OTExZGU4NWMxN2QuLjJlZTJjZjg0YzYzOTQ4YzAwMDJmOGE2NWQ4Y2Q2NjlhNzY3OWQyNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50
Lm1tCkBAIC0zNyw5ICszNyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL05hbWVOb2RlTGlzdC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Ob2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudFR5cGUubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRUeXBlLm1tCmluZGV4IGUyMDEx
NzZhOTJkYzY2NjQwY2Q1MDFlZjdlYzIwYWNkODQ2NGFmOTIuLjdiMmUwM2VjNTIxY2RmMDc0MDMy
NjU5MDBlNmQzY2IwNjM0MmEzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Eb2N1bWVudFR5cGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTURvY3VtZW50VHlwZS5tbQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OYW1lZE5vZGVNYXAuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkRvY3VtZW50VHlwZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRl
cm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FdmVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FdmVudC5tbQppbmRleCA2MGNk
YjZlNTdmNWJlMTc2MGY0ZDkxNWQzOGFlNGEzMzU1NzUxN2NkLi4yZDYxNTRiMWUwNjQ2ZDhhMzFj
MGMwMzBlY2U2MzMzZmI1MTZjMDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2
ZW50Lm1tCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9i
akNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRlcm5hbCkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUZpbGUubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NRmlsZS5tbQppbmRleCBlZGE4N2ZmZjFjNGU0YjVhOWE4N2M2
ZGI4YjQwMmFjNGIyNGIyODdmLi5mZGM1NDEzYjlhNWY0NmI5ZWRhNWZjMGE3YjM2YWU1Zjg1ZDNk
YmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmlsZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRmlsZS5tbQpAQCAtMzEsOSArMzEs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9GaWxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpGaWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpCbG9i
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxBbmNob3JFbGVtZW50Lm1tCmluZGV4IDQ0NjBmMjdjNmRmZGQzMDY1NjBjMTI0ZDlkNzk5
NDFjOGQ1Yzg1MmQuLmM2YzAxYmQ3YTY5NjE3NzBjZThmZjE4ZTU3NmMxMDk4NWVmZjQ5NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQW5jaG9yRWxlbWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1l
bnQubW0KQEAgLTM0LDkgKzM0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQW5jaG9yRWxl
bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXBwbGV0RWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5t
bQppbmRleCBhODQ1NDJkYTQ3ZDY0NGRjMzYyZThmZDFkZmI1MmQwNmIyMTNhNjRhLi4yNmI4ZDNj
NThiZWJkMmQ3ZDVkYjJlOGRjY2NlMjY5YTBmOTViY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFwcGxldEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFyZWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxBcmVhRWxlbWVudC5tbQppbmRleCBjNGFiMjMyMDI3NTdlZmMy
MjZkMzQ3ZTUwYTIxMGRkNDNlMTIwNTJlLi5iOWFjYTg5NmE0YzA5MTc2OGNmYTAzMThiNmM2Yjdh
MDdlZDU3NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEFyZWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
QXJlYUVsZW1lbnQubW0KQEAgLTM0LDkgKzM0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5h
bWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
QXJlYUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwp
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJSRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQlJFbGVtZW50Lm1t
CmluZGV4IGNmNWIzZTA4ODQxMzljOThlNGI3OGNiMzc4ZGYxYTY3YzQzNTk4YjguLjQzMjQ2NGI4
ZGQyZDU2MjYzMTAxODhjNzE4MDcyODU5MTYzMzkzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQlJFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MQlJFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTEJSRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MQmFzZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTEJhc2VFbGVtZW50Lm1tCmluZGV4IDUxNGI3MDkxYjQzZDEyMjc3MmQwNzBjNzdlNmEx
MWRmNDgwMDZjMTMuLmFmZTNiNjk5M2I2Mzg2ZDczOWUxNGNmY2EzYjdjOWRmNjk0MWU2NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5t
bQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxCYXNlRWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUZvbnRFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0K
aW5kZXggYTk5YzBiNjIzODFmMjUxYzIxZTgwNzY4NWZiOTM1MDMwNjcxMWE0ZC4uMjYzM2M4MGY3
MjRkODc5NDRkZWJmOTA4ZjAzOTJmZTdiZmNkYTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0KQEAgLTMxLDkgKzMx
LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFVua25vd25FbGVtZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVW5rbm93bkVsZW1lbnQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJvZHlFbGVtZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbQppbmRleCA2OTUy
OTNiNDI0NjNmYmU2NjI4N2IwNjQ3NjRlZjY5ZGZlNThmNzA0Li5kZjYxMjA4NjZjNmJjNjJjNDEy
MjMzOTdmZjFjYjMwYzZhNmY0NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTEJvZHlFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTEJ1dHRvbkVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEJ1dHRvbkVsZW1lbnQubW0KaW5kZXggOThhYTI3YzU2Mjc1YzU0M2NkNGQ5ZTJmYmIyN2Mx
OGRiOWQ4MmFiNS4uN2M3NTk1ZDMxNDgzMDMyY2ZhZWJmZTQwMWMxNzMyMWNiOWRiZDQyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCdXR0b25FbGVtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVu
dC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9OYW1lTm9kZUxpc3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxCdXR0b25FbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDYW52YXNFbGVtZW50Lm1t
CmluZGV4IDBmZDYwYTZkYThhYWFhYmU3NGQyYmQyYmQ5NDc5YjgxNGJkOTYzNTEuLjE4YjMxM2Vi
NDRhYzAzNmIwMzdmNThhOTQyMzU3NjliZWRkMTA0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ2FudmFzRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTENhbnZhc0VsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3Ry
aW5nQWRhcHRvcnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Kj4ocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1tCmluZGV4IGUzNDQwOThjYjQ4ZTJk
MzkwZjU0MGJjMWQ1MGU2OTczY2M0M2Q3ZjEuLmFhYzE4NTQ5ZDNkOGI0NzgxM2JjMTU0YjFjYTVj
NDExNzNiNTM2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQ29sbGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TENvbGxlY3Rpb24ubW0KQEAgLTM1LDEwICszNSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9Ob2Rl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZp
bmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uKj4oX2ludGVy
bmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERp
dkVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERpdkVsZW1l
bnQubW0KaW5kZXggMjkzNmFmYWMwMjUzMTg1OGQxZmI4YTk0ZDI3MmZmZjk1Y2U5NDlkZC4uOWNi
MDNhMDExOTZiN2Y0NDE1NDUyN2E3YzVjMjU1YjdkM2FlOWNiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEaXZFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRGl2RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxEaXZFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxEb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MRG9jdW1lbnQubW0KaW5kZXggMDM3NWEzY2Y0ZmQ2NzFmNjMzNmZiYjM3Yzli
YjdjOWFlZjAxNzYzZC4uODhkMTQyZWFkYTg0MTEzNzA1MDE0OGZjZTRlYzg3NWYwMjI3YjdkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEb2N1bWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50Lm1tCkBA
IC0zMiw5ICszMiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxEb2N1bWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTERvY3VtZW50Kj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbGVtZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbGVtZW50Lm1tCmluZGV4IGE1ZTBjZDMxOTEzYmQz
ODczMjY2MzVlNzkzNWY0YWE4OTgxOWM2ZjAuLjJmZTI0YzcwNzQ5Nzg4NzI1MDg0ZjM2NmY5MGI5
ZDg0NDk3NjgwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVs
ZW1lbnQubW0KQEAgLTM2LDkgKzM2LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3Vs
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9y
dCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEVs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVtYmVkRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRW1iZWRFbGVtZW50Lm1t
CmluZGV4IDZiODJiZTA4ZTgyMTY2YzMxOTQwYTM0OGVjZjk3MjU4MjU5Y2M5ZDAuLjBkNmQ4ODE0
NzFhODE1ZTIwM2EwYzQ1NGQwZDc2NmE2MDlkN2U3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRW1iZWRFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRW1iZWRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRmllbGRTZXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0KaW5kZXggZWE5MmEwMTlhNTA2
NTY5NWM2NDQ2YWRhNDkzOTVmNmZhM2FlMjY2Ni4uMWZkNGQ4MGJjNzE4Yzk1NmEzNWQ2YzhiYzBh
MDdmYjAyYTk5NmM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxGaWVsZFNldEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxGaWVsZFNldEVsZW1lbnQubW0KQEAgLTM2LDEwICszNiwxMCBAQAogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1ZhbGlkaXR5U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZpZWxkU2V0
RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9udEVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvbnRFbGVtZW50Lm1t
CmluZGV4IDgwZGU0OTA1NDkyNDgwMzNhMzJiZmNhMDM4YjNhZjc3MTljNmZiNzYuLjkxMGU4Zjdk
NDY2ZjFkZTNhNzhlY2QzMmZkODc3MWJiN2U4NDgyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9udEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGb250RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MRm9ybUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tCmluZGV4IGJmZGUxZGFkODE0ZWRkY2JlYTc2NTdh
ZmI3OGNkMzRmN2JlZGQ1NmYuLmU4NjI2YmEzNWFhMzM3ZjRiNGM3Y2ZhMWJkODMzYjk1ZmVlZTc4
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9ybUVs
ZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxl
bWVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGb3JtRWxl
bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVFbGVtZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0K
aW5kZXggNjAwZjQ0Zjg5YmM0Mzk5N2RjNDBlMDA2ZDI2Y2MzNTJlMzgxYWFmMS4uZWI1YzU1YWMy
YjY3YWY0ZGVlYmRmNjE1YTM3NGUyNTczZWIzM2I4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZVNldEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5tbQppbmRleCBmMmYyMDdmMDUyNDk3
YzIxOTdiNzQzNDc3YzNjYmIzMTI2ZmZjOThhLi42OWI5NWEwNmY3OGQ4ODY4NDBlMzY2MDZiNzcx
NWMyOTA2MTY0MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEZyYW1lU2V0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTEZyYW1lU2V0RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxGcmFtZVNldEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEhSRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MSFJFbGVtZW50Lm1tCmluZGV4IGIyNTc4YWEyZGYzZWU4OTAwODU2MTJmYzIxNzczNTgzNTI2
NWI3NmQuLmE3MjZiZGMxZTAyMjdhYjI2Y2YwMDliNzM2NzM0MTg3ZmU0MDJhZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSFJFbGVtZW50Lm1tCkBAIC0zMSw5
ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEhSRWxlbWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEhlYWRFbGVtZW50Lm1tCmluZGV4IGJlZjM5YWU1NzA2Zjk0
OWFjZDI3ZjQxYjVkMGJiMjdlZWUyZmQyYTcuLjljYTRiODgwYjFhYWFiYWQ4YzMwYTllYjFkNmU0
MGUzMzBiZWQ4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MSGVhZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxIZWFkRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
TmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhU
TUxIZWFkRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5h
bCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVh
ZGluZ0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhlYWRp
bmdFbGVtZW50Lm1tCmluZGV4IDgxMWJiMTgwNDg4NjFmOGIxNzEyYzkzNTZjMWQ4Mjc2ZDAxMTMx
ODkuLmEyZGZiNmEzZWMxZWIwNWM4Y2IzMTExMjIyMDQ2YTAwMmM3OWRjOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZGluZ0VsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbQpA
QCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxIZWFkaW5nRWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSHRtbEVsZW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tCmluZGV4IDI4
N2NlN2Y5NGZmMmU5Yzk2NWYzNWZkZTQzMzUwY2Q0YWIzY2JjMWYuLmViYzNjZmU3NDg2MTQyNjMz
ZDMzOTI2ZDVkZTEzZTU5ZmVjMThjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MSHRtbEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkhUTUxIdG1sRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9k
ZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MSUZyYW1lRWxlbWVudC5tbQppbmRleCBmMzgyYzllZjhlMDk2OTIzYTYzMGU1ZGJiZDU5
NzI2N2YxZTE2OWRmLi5lMzIxYjRmNzZkMjE2ZTIzYTNkOWZhMDQzY2NlZjc4OGFjMzdhN2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElGcmFtZUVsZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVt
ZW50Lm1tCkBAIC0zNSw5ICszNSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTElGcmFtZUVs
ZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEltYWdlRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW1hZ2VFbGVtZW50Lm1t
CmluZGV4IGZjOTE5NTNjZWNjMmNhZWVlNzYyYjM0NTQyMDI0MWJiZjliMzcxNTEuLmViYTRlYzky
MzE2YzM5Y2UwMTM0Y2RiMDA1ZDE2MDkzYjAzMjJkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW1hZ2VFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW1hZ2VFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElucHV0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MSW5wdXRFbGVtZW50Lm1tCmluZGV4IDgzNjM3MzVkOTQ3NGE4
NmJhOGE4MDVlMGYxYTNlYmE2Zjg0ZDRiY2QuLmQ3MzdhNTU3ZTlhM2VjMDM1MzUzYzUxMjY5MGRi
ZTc4ZWIwZTg0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MSW5wdXRFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MSW5wdXRFbGVtZW50Lm1tCkBAIC02NCw5ICs2NCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL05v
ZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TExJRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTElFbGVt
ZW50Lm1tCmluZGV4IDI2OWQxYTU0YWRkOGNlMmJkNGZlYWY2YTQyYTYzOTgyMDg1ZmVkYTAuLmEz
Y2YzZmE4ZGJmYThjZWFkN2EyOWZhOThjMjc3YTg0ZDliZjBkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTElFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTElFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTExJRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MTGFiZWxFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxMYWJlbEVsZW1lbnQubW0KaW5kZXggNTFmNTYwYzA5NzkxODkzYWU2NmRj
NTUyZDJmOTY5N2QyZmJmMDI4MS4uODEzOTAwMGVhZWE0Y2E3ZDBlZTkyYjU4MGY0Y2YwODAxN2Ex
MTYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMYWJl
bEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMYWJl
bEVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTGFi
ZWxFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMZWdlbmRF
bGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMZWdlbmRFbGVt
ZW50Lm1tCmluZGV4IDkzNDNjYTZlOWRmYWY3Mzc4MDY1N2NmNTQyYWUxMjI1NDUyZDhiMGMuLmQ0
ZjFmMzZjNWYyNGIxOTRhOTJjODJiMTBjZGJhMWQ4ZTEwZTYzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW0KQEAgLTMzLDkg
KzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZp
bmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTGVnZW5kRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTGlua0VsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tCmluZGV4IDIwZjRjMDE1MTVk
ZWI2MGVlNGRiMzc5YTAwNWU1Mjc3OWI5YzUyMjAuLjU2ODdjNDViYmEwZmFjNzRiNTRjOTQ4NWQ5
OGFlNDllOGY3MzViMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MTGlua0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxMaW5rRWxlbWVudC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MTGlua0VsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE1hcEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcEVs
ZW1lbnQubW0KaW5kZXggYjkyMWIzYTUwZWQwNTE1MDNmM2Q3N2M0NTBiZDM5NzE2YWQ0Yzk2MC4u
MmNjOTBjZjg2MzRlMzk2ZGQwMWY0YTBjMTFmMDYxMGVjZDYwZThmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXBFbGVtZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFwRWxlbWVudC5tbQpAQCAtMzMsOSArMzMs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNYXBFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQubW0KaW5kZXggNjFhYjRjNjIzMzNm
OTU2ZTA3MjQzNjI3NzJmYzFmZmZjYTQ2YTIzOC4uOTYyM2VkYjE2YWMwOTliNDFkYzk2Mzg3NTkw
NDRiNDcxYjkwYmNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxNYXJxdWVlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTE1hcnF1ZWVFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTE1hcnF1ZWVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTE1lZGlhRWxlbWVudC5tbQppbmRleCA1YmM3NDU2ZjYwY2Y3NjEyYjUwNmViZmQzZGM4OWZh
NDdhZWNhNDY3Li43ODNhNWExNWU5ZGUxYzc1ZTc0ZGI4OTUyYjQxOTkyMDFhOTQzN2RkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1lZGlhRWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1lZGlhRWxlbWVudC5t
bQpAQCAtMzgsOSArMzgsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYUVycm9yLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RpbWVSYW5nZXMu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQq
PihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxlbWVudC5tbQppbmRleCA5
OTg3MDAyYWY3Y2JlM2QxNGQ2N2NmOGM0ZjNiODFkZTNkM2JmMjZjLi43OGVkNmU5M2NkZmFhNWI4
Yzk1Zjc3MmYyMDNmMzg0NGQ4MGU5OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MTWV0YUVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQg
PFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
R2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTE1vZEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTE1vZEVsZW1lbnQubW0KaW5kZXggZDg4NWZjZmQwODAzNmM3MzgyOTJlMDA3MDcyMWVlNWY4
MmUzNzE5YS4uNjBmOWU0NWM3YjFlMzRiYzA2MmU2YTRlYjMxMjc0YWY0NjViMjU0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTW9kRWxlbWVudC5tbQpAQCAt
MzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFBy
aXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
I2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNb2RFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPTGlzdEVsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9MaXN0RWxlbWVudC5tbQppbmRleCBhMzJjMmQ4
YmM5NzEyMTcwN2I2ZTBlMzc4ZTc0NTE1MjJjNTU4NzMwLi5iN2ZhNTliNmU2Njk1ZjY2Yzg5Njli
MWZhNDA1ZThlNGExZGVhZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTE9MaXN0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTE9MaXN0RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MT0xpc3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpIVE1MT0xpc3RFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tCmluZGV4IDdhYjczZjU3Mjk0MzBkM2JmMjAyN2Vk
YmM1ZTQ2MTAzMTRiZGNhMTUuLmRiMjM2ZDhiOTU4NmI4YjcyYWM4ZTg4Y2NkZjJiNDkwYWJlZGI2
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9iamVj
dEVsZW1lbnQubW0KQEAgLTM3LDkgKzM3LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3Rh
dGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TE9iamVjdEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJu
YWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9w
dEdyb3VwRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0
R3JvdXBFbGVtZW50Lm1tCmluZGV4IDRlNTE1ZGFmNTViYjdjYzVjYzAzOGJiNTI0MDRiNmVlZjFi
NTVjZGIuLjE3NzFjMmVmZTMxODYyZDdiMTU1OWUwZDEyNDc1M2YxM2YzNzAxZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0R3JvdXBFbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0R3JvdXBFbGVtZW50
Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxPcHRHcm91cEVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxP
cHRHcm91cEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJu
YWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9w
dGlvbkVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlv
bkVsZW1lbnQubW0KaW5kZXggZmRlYzU0ZWUxZDY0NzgxZTY2ZTg4MzM0YzUyY2Y1NDE4YmM3OTNk
Zi4uMTQ1MzUxZDliNmZlZTNlM2IxMmFmMzFmMDRiYzMwMzdmZGE3NzliMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uRWxlbWVudC5tbQpAQCAt
MzMsOSArMzMsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MT3B0aW9uRWxlbWVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVj
dGlvbi5tbQppbmRleCBmNzcwYThhMTRkNWE4M2Q3Njk1ZTQzNzE5ZWUxYWY0ZGNiNjY0Y2ExLi4z
OTEyMTAxNTYxZjVmZmRmODk0MWU5YTcxYmZiZTRiODI4Zjg0YjE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0K
QEAgLTM1LDEwICszNSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJh
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvVmFyaWFu
dC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpIVE1MT3B0aW9u
c0NvbGxlY3Rpb24qPihfaW50ZXJuYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQubW0KaW5kZXggNmM1MTFlOTE2NjRjZTky
M2NjOTI4NGEyNTVhMTFlNmE3OTNiM2ZkNC4uMWE1NDNiM2ZkM2U2ZmU3MjgyNDZiMmJhOGMxMmZm
MjY0MGY2NjA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxQYXJhZ3JhcGhFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MUGFyYWdyYXBoRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFBhcmFncmFwaEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0
PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFtRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MUGFyYW1FbGVtZW50Lm1tCmluZGV4IDVmYjBjZWMyN2ZiNzA5N2Yw
OTE1ZWU1Y2RmYzQxOGE4MWM1OTRmZTguLmVkYTY1MzJjNWQyYTdlZmVmYzE0OWIwYjc2NmFlOWRi
OGRiYzkxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
UGFyYW1FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
UGFyYW1FbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxQ
YXJhbUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxQYXJhbUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihf
aW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFF1b3RlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
UXVvdGVFbGVtZW50Lm1tCmluZGV4IDM3NDljMTgwMzMwZmIwZTM1Y2Q1NDU5MTFjMDllNzc0NTg3
NWFmZDAuLmJjZDc4NjZjZDc2YzczZWFjNjQ0ZTA0Zjg0MzdlNTAzMGY1YTJmODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUXVvdGVFbGVtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUXVvdGVFbGVtZW50Lm1tCkBA
IC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxRdW90ZUVsZW1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxRdW90ZUVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNjcmlwdEVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNjcmlwdEVsZW1lbnQubW0K
aW5kZXggMzM0NGQ1NDg4ODQ5YzE0YzkxYzVhNjkzZTc5YWQ3ZTY3MGUwOWZmNC4uZTRhYzAxNzgw
MmRhMjUxNGY0Y2RmZTdkZDdjOTIwNDliZGFiMDFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTY3JpcHRFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MU2NyaXB0RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MU2NyaXB0RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW0KaW5kZXggNzU4MTQx
ZGUzZmI3ZjVhYmY2ZTJhMjhmYTZhZWExNDY1OGM2Njk2Mi4uYmNmYmVjYWNkMzg0OTFmYTdiYzk5
NTRiM2RlOTAzMDJmOTFhNjZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxTZWxlY3RFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MU2VsZWN0RWxlbWVudC5tbQpAQCAtNDQsOSArNDQsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MU2VsZWN0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MU3R5bGVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxT
dHlsZUVsZW1lbnQubW0KaW5kZXggYTQ1Mjc4MjA4MGJiNjM5YzRlNjdmNDU3OWY5Mzk0NjU2OGM1
Y2YxMC4uODA3NmEzMzhlZTFkYzMwYWYxYzI4YTc0ODVlYjY0N2Q4ZWUzN2FmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTdHlsZUVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTdHlsZUVsZW1lbnQubW0KQEAg
LTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU3R5bGVTaGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDYXB0aW9uRWxlbWVu
dC5tbQppbmRleCBhNzgxMWJkNjhiMzg4YjhkNzMzMWQ0NTNjOTYyODYwOGE1YTM2ZTM3Li40ODNm
OTRmMTNmYmFkMTU5N2U2NzM2YWY3NmNhNGMwZjEwNmVlODljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1t
CkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZUNhcHRpb25FbGVt
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
VGFibGVDYXB0aW9uRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MVGFibGVDZWxsRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MVGFibGVDZWxsRWxlbWVudC5tbQppbmRleCBkZDMwMTZiM2FhNjNhNGY5YjAzMTQ0MDc1ZjA1
ZTVhOTgwNTU4ZWUwLi45YWQ5MTQ2ZTg0YTI3ODA2OTliY2E3M2Q1NDdjYmNhODI1MGMzZTUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNl
bGxFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJs
ZUNlbGxFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9k
ZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MVGFibGVDb2xFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxUYWJsZUNvbEVsZW1lbnQubW0KaW5kZXggYWYyNjcxNGQ4NGYzMGFhZGNhZTE0MmJl
ODQ2ZDY2Y2U2ZTM1ZTQwYS4uYzlkOThjYTUxNGUxYWJhN2IwZWY0ODljM2RhZjJiZTc5YzcxMmQ2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNv
bEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJs
ZUNvbEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRh
YmxlQ29sRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTFRhYmxlQ29sRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9k
ZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MVGFibGVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxUYWJsZUVsZW1lbnQubW0KaW5kZXggNGM2OGM0YjZiNGNhNWQ2ZjFmNjEwZWM1YWMwN2Zh
NmQzNDczMjBjOS4uYmVkZGFmNTBmYWFhYjRjMmQzNmZhNWQxMjhkMDMxNjVmMjA0YjdiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUVsZW1lbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUVsZW1lbnQu
bW0KQEAgLTM5LDkgKzM5LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhU
TUxUYWJsZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJu
YWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRh
YmxlUm93RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFi
bGVSb3dFbGVtZW50Lm1tCmluZGV4IDI0MDk2YThkOTk0N2ZkN2I3YTI0ZmQxNjU3MzEzYTk4NDA5
OTM4Y2MuLjNkZmVkYzMzZWZjYzE1YWFlMTRkNDQxMWZmZWU3MDY3NzNkNjhhODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVSb3dFbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVSb3dFbGVtZW50
Lm1tCkBAIC0zNSw5ICszNSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZVJvd0VsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxU
YWJsZVJvd0VsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJu
YWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQubW0KaW5kZXggOThiMTlmYTMxNTQwMzRkYWQ5ZjYzMGIzNDMy
MjI4ODI4MzRmMzE4OC4uYzMyYzJlNzAyNzM0M2Q0NzA5MzBhNjc3M2IyOTg4OGVkNGY2ZmU3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rp
b25FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MVGFibGVTZWN0aW9uRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0
PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFRpdGxlRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MVGl0bGVFbGVtZW50Lm1tCmluZGV4IDI0ODZmNzdjM2E1ZTc1MDQy
NzEwMmFkMjdlMjgyYjZiNjViNGVmZTkuLjI4MzkxNzE3ODU1OTlmOTI4NTg0YWQ1MjE1OGUwZjA1
ZDM0MTIwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
VGl0bGVFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
VGl0bGVFbGVtZW50Lm1tCkBAIC0zMCw5ICszMCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxU
aXRsZUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxUaXRsZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihf
aW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTFVMaXN0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
VUxpc3RFbGVtZW50Lm1tCmluZGV4IGY5OGY4ZTg1MmJkNDdhMTYyOTJiOTczNDA5MDE1NzI4ZTQ1
ZjMzYTEuLmZjZjkwNTRhYjBmMTIxNjdhZWUyMDZjYWQ4YWRhMWQxMzkwN2EzY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVUxpc3RFbGVtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVUxpc3RFbGVtZW50Lm1tCkBA
IC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxVTGlzdEVsZW1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxVTGlzdEVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFZpZGVvRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVmlkZW9FbGVtZW50Lm1tCmlu
ZGV4IDMzNTgwNjUwMzkyODcxOWI5NWIwZjcxNjdmMjcxYTkwMWU4NWMxMTkuLjQ1N2VhZmJhMGQw
Y2U1MmQwM2Y1NTBmMDQ3OGIzNGIwOGU4NzNkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MVmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MVmlkZW9FbGVtZW50Lm1tCkBAIC0zNCw5ICszNCw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNF
eGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJ
TVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQqPihyZWludGVycHJldF9j
YXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NS2V5Ym9hcmRFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01LZXlib2FyZEV2ZW50Lm1tCmluZGV4IDNmZDhmY2UzNjQ2NmYzN2FiOWEx
OTRjMGEzMGMxYzNjNDA1MmY2M2MuLjJjMDFmM2U2MTA1NTI2OTdlNDUxMzc5NGRiMTM5YTM3OWQz
MmM3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2Fy
ZEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01LZXlib2FyZEV2
ZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OktleWJvYXJk
RXZlbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KaW5kZXggOWU4MTY3
YTE2YTQ0YjMxMzdiMjNlZGIxYThlZWQ0NTk0OWQyN2Q5OC4uODY1MWZjOTdiNDg3MTE1ZTJkNGNk
ZDc3MTQ5MGRmM2ZkMDBhNWRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU1lZGlhTGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
TWVkaWFMaXN0Lm1tCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQ
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
ICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok1lZGlhTGlzdCo+KF9pbnRl
cm5hbCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU1vdXNl
RXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTW91c2VFdmVudC5tbQpp
bmRleCBmNjU2YThhZGU1NTM1YTkwZTg3YWJjYWFiOWQ4MDc5OTYzYTgxMjA2Li45NWYyMjM1ZDQ1
NzJmYjM5NmQ2MjRjMzlmYzUwNjliMzA5NmRjMzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NTW91c2VFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NTW91c2VFdmVudC5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
Ok1vdXNlRXZlbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU11dGF0aW9u
RXZlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTXV0YXRpb25FdmVudC5t
bQppbmRleCAwZjRlZjE2NzVhMWMwM2E4N2ExMGQ2MWUzZmI3MTFhYWYxMWM3NmJkLi4yZmJmNDIy
YWU4NWQ5OWM2NjgwYTBlZDU4Y2RiYTMyN2Y3ZWQ4ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NTXV0YXRpb25FdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NTXV0YXRpb25FdmVudC5tbQpAQCAtMzIsOSArMzIsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9NdXRhdGlvbkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6Ok11dGF0aW9uRXZlbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkV2
ZW50Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTU5hbWVkTm9kZU1hcC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01O
YW1lZE5vZGVNYXAubW0KaW5kZXggNTY4MTkzMzJiYjY3NDJlMWVmZWRkMDFlMmM3NTMzNTc3ZDcx
ZTNmOC4uMjkxODE5MDkwZTVlMjUwMzUzYjMwNzRhZjk2YmQyMzhmZGI4ZDU0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5hbWVkTm9kZU1hcC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCkBAIC0zMiwxMCAr
MzIsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTmFtZWROb2RlTWFwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6Ok5hbWVkTm9kZU1hcCo+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
bW0KaW5kZXggOWFkYzQwYjA4YWJiYzg3NzFiM2M4YjhiZGZlZTAxOWZjODFjZTMyNS4uMjAwZTgy
YTMxMDNhNjcxZDA2MTU3MTEyYzdkYzk3MjRhNTU2ZTJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tCkBAIC0z
Miw5ICszMiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYv
VVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmFuZ2UubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmFuZ2UubW0KaW5kZXggZjI4OWIzYTI2ZThh
NGY1NjZiNjcyNGZiOGQ2MTUxMTU4YmRiNjJlOC4uZWYyYzM1ODA5YjBiNjc2M2I0Nzc0NTYxOGMz
YjI5NTYwNmQ5OTk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVJhbmdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbQpA
QCAtMzQsMTAgKzM0LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6UmFuZ2UqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01TdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVN0eWxlU2hlZXQubW0KaW5kZXggN2ExYTRhODdmYzZlZjI0OWFjYjlkMDdk
ZTI1NGJkYjJiMGEzYzkzMy4uMGU4Nzg1YzdkMmMwNjdjNDg0NzIxZWQ1Mzc4NzRkN2M1NWNiMGE4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxlU2hlZXQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVN0eWxlU2hlZXQubW0KQEAg
LTM2LDEwICszNiwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1N0eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6U3R5bGVTaGVldCo+KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVGV4dC5tbQppbmRleCAzMGU3ZGEzYzBjOTg5NzNkNDEyNWE2N2VkZGNk
MjZkOWNlZTc1Y2I1Li5mNzMwYWQ2ZGViYWZhMDViZTM3MjQ0MGY5NmU2MDFhZWZmNGRmN2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dC5tbQpAQCAtMzAsOSArMzAsOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpUZXh0Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2lu
dGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRl
eHRFdmVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQubW0K
aW5kZXggYzUwMjZlYjRiMmY4NjAxMzMyODdiOWYyZTA1OGE3NjFmYjI0MjA0Zi4uY2EwNmZkN2Mw
ZmYwZTAwMWI5ZTg4NDA2ZDBiYTdlYWNjYTQxNGE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRFdmVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6VGV4dEV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRl
cm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tl
bkxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1tCmlu
ZGV4IGRiOGY1NWNlMDdhYTY0ZmQ5MjlhNWY1ZjgzZmYwY2JjY2RkNzc0NjguLjljNGFhODk2MzBk
NzgxNDQ0MmIxM2M2YmMyNWM4ZTRiN2Y5NmJiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVRva2VuTGlzdC5tbQpAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0ICJFeGNl
cHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpET01Ub2tl
bkxpc3QqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01VSUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZl
bnQubW0KaW5kZXggMTczMjQzMTkwYTMyYjE1YzQ3ZmZmZTAwMmIzYmE2MTY3YjE3NzhkYi4uZjgy
Y2Y1OGE3ZWQ0YWJiOTRmODg1ZjBlZTRhZmZiYzNmOWRlMDFlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQubW0KQEAgLTM0LDkgKzM0LDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgog
I2ltcG9ydCA8V2ViQ29yZS9VSUV2ZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpVSUV2ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpFdmVudCo+KF9pbnRl
cm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0
aFJlc3VsdC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01YUGF0aFJlc3VsdC5t
bQppbmRleCBhMWVmNTczZjhkZDJjMTBiNjg2YzExOTUwOWE3MDI0MmQ3Y2Y1MmFmLi5kYWNmMWQ4
NmRmOGU3M2MxYmIwNDRjZGRhOGI0OTE1MWE0YmZmZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhSZXN1bHQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0aFJlc3VsdC5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpYUGF0aFJlc3VsdCo+KF9pbnRlcm5hbCkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRl
bS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0K
aW5kZXggOTg1ZTQ1ZWY5NTY2ZjViMTI1OGQyODU1ZDk4Y2U3MjIxZGU0YWNjNS4uNDU2MDdkYmM1
Y2Q0NjMxZGI2MzNmZDk4ZDEzZDZkZDhlZTM2Mzg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC00NywxMyArNDcsMTMgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQppbmRleCA4MTU5NzQxYjdkYmI0M2JjYzFi
MTNjNTkyOWMxZDA1YzBlOTdkMDY2Li5jMTNiNzU3MThiMWE0YTdhNWZlZDA5OTVjOWU0NWJmM2M5
YmQzYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJM
RXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRy
YXMubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIldlYkxvY2FsaXphYmxlU3RyaW5ncy5o
IgogI2ltcG9ydCAiV2ViTlNEYXRhRXh0cmFzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJM
UmVxdWVzdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9h
ZGVyTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgpAQCAtNDEsNiArNDAsOCBAQAogI2lt
cG9ydCA8dW5pY29kZS91c2NyaXB0Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lt
cG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1w
b3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2UgV1RGOwpAQCAtMTA5LDcgKzExMCw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXVEY7CiAKIC0gKE5TU3RyaW5nICopX3dlYl91c2VyVmlzaWJsZVN0cmluZwogewotICAgIHJl
dHVybiB1c2VyVmlzaWJsZVN0cmluZyhzZWxmKTsKKyAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJs
ZVN0cmluZyhzZWxmKTsKIH0KIAogLSAoQk9PTClfd2ViX2lzRW1wdHkKQEAgLTEzOSw3ICsxNDAs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiAtIChOU1VSTCAqKV93ZWJfVVJMQnlSZW1vdmlu
Z1VzZXJJbmZvCiB7Ci0gICAgcmV0dXJuIFVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhzZWxmKTsKKyAg
ICByZXR1cm4gV1RGOjpVUkxCeVJlbW92aW5nVXNlckluZm8oc2VsZik7CiB9CiAKIC0gKEJPT0wp
X3dlYmtpdF9pc0phdmFTY3JpcHRVUkwKQEAgLTE3NSwxNyArMTc2LDE3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXVEY7CiAKIC0oTlNEYXRhICopX3dlYl9kYXRhRm9yVVJMQ29tcG9uZW50VHlwZTooQ0ZV
UkxDb21wb25lbnRUeXBlKWNvbXBvbmVudFR5cGUKIHsKLSAgICByZXR1cm4gZGF0YUZvclVSTENv
bXBvbmVudFR5cGUoc2VsZiwgY29tcG9uZW50VHlwZSk7CisgICAgcmV0dXJuIFdURjo6ZGF0YUZv
clVSTENvbXBvbmVudFR5cGUoc2VsZiwgY29tcG9uZW50VHlwZSk7CiB9CiAKIC0oTlNEYXRhICop
X3dlYl9zY2hlbWVEYXRhCiB7Ci0gICAgcmV0dXJuIGRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNl
bGYsIGtDRlVSTENvbXBvbmVudFNjaGVtZSk7CisgICAgcmV0dXJuIFdURjo6ZGF0YUZvclVSTENv
bXBvbmVudFR5cGUoc2VsZiwga0NGVVJMQ29tcG9uZW50U2NoZW1lKTsKIH0KIAogLShOU0RhdGEg
Kilfd2ViX2hvc3REYXRhCiB7Ci0gICAgTlNEYXRhICpyZXN1bHQgPSBkYXRhRm9yVVJMQ29tcG9u
ZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRIb3N0KTsKKyAgICBOU0RhdGEgKnJlc3VsdCA9
IFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwga0NGVVJMQ29tcG9uZW50SG9zdCk7
CiAgICAgTlNEYXRhICpzY2hlbWUgPSBbc2VsZiBfd2ViX3NjaGVtZURhdGFdOwogICAgIC8vIFRh
a2Ugb2ZmIGxvY2FsaG9zdCBmb3IgZmlsZQogICAgIGlmIChbc2NoZW1lIF93ZWJfaXNDYXNlSW5z
ZW5zaXRpdmVFcXVhbFRvQ1N0cmluZzoiZmlsZSJdKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tCmluZGV4IGU5
ZWQ1Y2JlYjI5NWQwNmRhYWQ5Njk1NzIyYTM0ZjNlZWU1NTY2OGQuLmI3MjY1ODNmOTc0Y2RkZjc2
NjE3ZjJhZDE4ZDM5OGY0MDNiOTEzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tCkBAIC0yNCw4ICsyNCw4
IEBACiAKICNpbXBvcnQgIldlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogCi0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCBhYzdhNGJiMzE4YzU1Zjkz
NTljOThlMGE4YmY5NmQxZTZlNDQzNjM2Li44ODNiOTIwNzIwN2UyNDhkZDQ3YTMwYmMwYzc2MjFl
NzA2OGI3YzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBA
IC01OCw3ICs1OCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Byb3h5U2VydmVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJH
ZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL25wcnVudGltZV9pbXBsLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL3J1bnRpbWVfb2JqZWN0Lmg+CkBAIC02Niw2ICs2NSw3IEBACiAjaW1w
b3J0IDx1dGlsaXR5PgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3
dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIGV4dGVybiAiQyIgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCmlu
ZGV4IDBlMTg5OGYwMzA1OTk3MDQzZTY0ZjZhMjlhZjZmY2QzZjk5YzVmYTcuLjJiYzk3OGQzNDAz
ZjczZjFjMDYzZGYyNTIzNDNjNWI4M2VjMTMwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTcy
LDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYW5jZWxMb2FkQW5kRGVzdHJveVN0cmVh
bVdpdGhFcnJvcihOU0Vycm9yICopOwogCi0gICAgdm9pZCBzZXRSZXF1ZXN0VVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYgcmVxdWVzdFVSTCkgeyBtX3JlcXVlc3RVUkwgPSByZXF1ZXN0VVJMOyB9Cisg
ICAgdm9pZCBzZXRSZXF1ZXN0VVJMKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCkgeyBtX3JlcXVlc3RV
UkwgPSByZXF1ZXN0VVJMOyB9CiAKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBzdG9wKCk7
CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHdhbnRzQWxsU3RyZWFtcygp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURhdGE+IG1fZGVsaXZl
cnlEYXRhOwotICAgIFdlYkNvcmU6OlVSTCBtX3JlcXVlc3RVUkw7CisgICAgVVJMIG1fcmVxdWVz
dFVSTDsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fcmVzcG9uc2VVUkw7CiAgICAgQ1N0cmluZyBt
X21pbWVUeXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGM0YjliNjM0ZjdmYjk3YTk4YzA0MzNl
Y2E5MzhmMmU2ZDA2MDk5ZmMuLjU0YTdhYTIyMDY5ZTgwYjhiNDdhYThhMmZlNGJlMzJlYmM2MGZj
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMjksNyArMjI5LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwg
V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBmaW5hbDsKICNlbmRp
ZgogCi0gICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25l
ZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJD
b3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVu
Z2VTdHJpbmcsIGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2ViVmlldyAqbV93ZWJW
aWV3OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCA0NjdlMWNlM2QzMmIwZWQ5ZjJlNzYzZGE1
NzdlMjMyNTc2MDUyNzNkLi43YzI5MGIxMGY3NzU3YTc2YTMzOTE2Y2Y3OGZlYWVjMzM5ZTU2ZjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC0xMTQyLDcgKzExNDIsNyBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJp
bmcmIG5hbWUsCiAKICNlbmRpZgogCi1TdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJp
bmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CitTdHJp
bmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZ0ZvcldlYlZpZXc6KTsKICAgICBpZiAoW1ttX3dlYlZp
ZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oCmluZGV4IDhiMjAzNjRiYjY3YTkxNzI3OGIyOTUzZmM1MTc5YTEyZGQzNjZk
ZGQuLjE4ODVmMDMxMzEzNWI4MTdiMzBmOTQ1Nzc3ZDhlMjRiMTUzOWJmOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNv
bnRleHRNZW51RGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvd25sb2FkVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3Qg
VVJMJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6
OkZyYW1lKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6
RnJhbWUqKSBvdmVycmlkZTsKICAgICBib29sIGlzU3BlYWtpbmcoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggZGI5MDVkOWY0Yzk0NzEzMmFhNmVkYTdiNjEzN2M0
NjVmNmZhMzgyYi4uOTZlZjkyMWZkNjA2ZWNmMDgwZWVkMTMxZDRiOGQ5MTJkNTFmM2ZmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTU0LDkgKzU0LDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvUmVuZGVyT2JqZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvRE9NUHJpdmF0ZS5oPgogI2ltcG9y
dCA8cGFsL3NwaS9tYWMvTlNTaGFyaW5nU2VydmljZVBpY2tlclNQSS5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDRl
ODFkMzcwODQ4ZjllNDRhNDBmNTA0MGJjOWFkOGEzN2NjYWQ4ZTAuLjg0N2E3M2IxN2E0NjE3YmQ1
NGE4ZDI4YTkyM2MxZDRhNjNiZGQxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBiZWdpbkRyYWcoV2ViQ29yZTo6RHJhZ0l0ZW0sIFdlYkNvcmU6
OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRG93blBvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEcmFnZ2VkUG9zaXRpb24sIFdlYkNvcmU6OkRhdGFU
cmFuc2ZlciYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOwogCi0gICAgdm9p
ZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
V2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYsIFdl
YkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1h
Z2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRDb25jbHVkZUVkaXREcmFnKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCA3YmU1ZjVmNWM1NjQwMmU2NGM3Yjk5NzM1NTYyYWFiZjc3ODZh
NTlmLi4xZjE1YjcyMzYzZjk4MmI4ZjEzMzc2OTZlZDQwN2E4MzdiMGU1NGFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlzcGF0Y2hEaWREaXNwYXRjaE9ubG9hZEV2ZW50cygpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBmaW5hbDsKICAg
ICB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBmaW5hbDsKLSAgICB2b2lk
IGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBk
b3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZpcmVEYXRlLCBXZWJDb3JlOjpMb2NrQmFja0Zvcndh
cmRMaXN0KSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dChjb25zdCBVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIFdhbGxUaW1lIGZpcmVEYXRlLCBXZWJDb3Jl
OjpMb2NrQmFja0ZvcndhcmRMaXN0KSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdl
TG9jYXRpb25XaXRoaW5QYWdlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0
ZVdpdGhpblBhZ2UoKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0
aGluUGFnZSgpIGZpbmFsOwpAQCAtMTU4LDggKzE1OCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBz
aG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0mKSBjb25zdCBmaW5hbDsK
IAogICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJikgZmluYWw7Ci0gICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6
VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIGZpbmFsOworICAgIHZvaWQgZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikgZmluYWw7
CisgICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBh
Z2UpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBm
aW5hbDsKQEAgLTE3Niw3ICsxNzYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRGYWxs
QmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKLSAgICBXVEY6OlN0
cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgV1RGOjpTdHJp
bmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGZpbmFsOwogICAgIAogICAgIHZvaWQgc2F2ZVBsYXRm
b3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBmaW5hbDsKICAgICB2
b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRG
cmFtZSopIGZpbmFsOwpAQCAtMjA1LDMwICsyMDUsMzAgQEAgcHJpdmF0ZToKICAgICBSZWY8V2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExv
YWRlciYpIGZpbmFsIHsgfQogCi0gICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJp
bmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgdm9pZCBz
ZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikg
ZmluYWw7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVP
d25lckVsZW1lbnQmLAorICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29u
c3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVy
RWxlbWVudCYsCiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcikgZmluYWw7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYs
Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sKSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVVJMJiwKKyAgICBjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQq
KSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCYp
IGZpbmFsOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGlj
eSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKLSAg
ICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0
IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGlj
eSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNv
bnN0IGZpbmFsOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBw
bGV0RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCwKICAg
ICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIGZpbmFsOwogICAgIAotICAgIFdlYkNvcmU6Ok9i
amVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgZmluYWw7CisgICAgV2ViQ29yZTo6T2JqZWN0Q29u
dGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcm
IG1pbWVUeXBlKSBmaW5hbDsKICAgICBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNv
bnN0IGZpbmFsOwogICAgIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgZmluYWw7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIGJvb2wgc2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNob3VsZExvYWRNZWRpYUVsZW1lbnRV
UkwoY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAogICAgIFJlbW90ZUFYT2JqZWN0
UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbCB7IHJldHVybiAwOyB9CkBAIC0y
NDEsNyArMjQxLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtp
bmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpIGZpbmFsOwogCi0gICAgYm9vbCBz
aG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsK
IAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIFJlZlB0cjxXZWJDb3JlOjpQcmV2aWV3TG9hZGVy
Q2xpZW50PiBjcmVhdGVQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFN0cmluZyYgdXRpKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5k
ZXggNGY3MDBlMDRmOGY3N2RhNWQ4ZGRhZjdhODQxNTI3MTQ5NDMyOTJlNC4uMWU4NDJiYTdmNDQ0
OTRlYjY1NDJlOGU5NTAwYjgyMjFkZjEwMGVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KQEAgLTEwMzMsNyArMTAzMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0
ZUdsb2JhbEhpc3RvcnkoKQogICAgIFdlYlZpZXcqIHZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJh
bWUuZ2V0KCkpOwogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBjb3JlKG1fd2ViRnJhbWUu
Z2V0KCkpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgaWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IGJsYW5rVVJMKCkpCisgICAg
aWYgKGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpID09IFdURjo6YmxhbmtVUkwoKSkKICAgICAgICAg
cmV0dXJuOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgK
aW5kZXggZmQ0Y2Q0YzRiMzZkOGJmZjRiY2U1N2JmMTVlZDZmODlmNGVjZDU4MC4uMDc3ZDAxNGQz
ZTUzNWM3YThhYmIzNDY4ZTFkNjU0ZTlmZTliZTI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENv
b3JkaW5hdG9yQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNh
bk1ha2VQYXltZW50cygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFj
dGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lk
IChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBvcGVuUGF5
bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOworICAgIGJvb2wgc2hv
d1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRl
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9u
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbQppbmRleCAzMzQ5M2Jk
OWYxNjBiZGE4YWFjNWRhZmZmYTU5MmE1NjBmYTk5MjgyLi4zMGUwNmNhZjkzMWFlMDY2YzM2OWI3
MzUxMTNkOWM0OGE3YmRjMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xp
ZW50Lm1tCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCi0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpXZWJQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQoKQogewpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvckNsaWVudDo6b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLAogICAgIH0pOwogfQogCi1ib29sIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6c2hv
d1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJM
PiYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikKK2Jvb2wg
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNv
bnN0IFZlY3RvcjxVUkw+JiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3QmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKaW5kZXggODFmN2M0ZjY5Y2QxMTE0NDAyNzU5Y2VjOTk5ZTkyMzE5NWI3NjNlZi4uMzdlNzE0
Mzg5ZDcwNDY0N2I5MWVlMGQ2NjA3YmQ3ODQ3MGRmNWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3Jl
OjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9y
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRP
TShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
V2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgY29va2llc0VuYWJs
ZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAg
ICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6
OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICBib29s
IGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpQYXN0
ZWJvYXJkU3RyYXRlZ3kKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNjUsNyArNjUsNyBA
QCBwcml2YXRlOgogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgV2ViQ29yZTo6VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIFVS
TCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVy
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIGxvbmcg
Y2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
U3RyaW5nIHVuaXF1ZU5hbWUoKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpDb2xvciBjb2xvcihj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpVUkwg
dXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFVSTCB1cmwo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAKICAgICBsb25nIHdyaXRl
Q3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVz
U2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgb3JpZ2luKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQppbmRleCBiZTUwOTZiOTdmNmNiMWY1MGM0OTM5Y2ExN2U3NjVmODlhMzVlZjA1Li4wMTkyNWVl
ZTgyY2U0MTAwZmQ0MjM3NDkzNzg2OGZjMTU2NGJkNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCkBAIC0yMzksNyArMjM5LDcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW4KICAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGlu
ZGV4LCB0eXBlKTsKIH0KIAotV2ViQ29yZTo6VVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nJiB0aXRsZSkKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9t
UGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmlu
ZyYgdGl0bGUpCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkucmVhZFVSTChpbmRleCwgdGl0bGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaApp
bmRleCBkMWFiNTUxMTg0YzBhNWY2NDk5NDBkOGU5MjdiZDg0ZTUyOWM3ZmYwLi41MjVlZTJmY2Rl
ZWExNmM1YzZmOWRmZTgxMzVlZDdkMWM1ZWJiZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlk
ZXIuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgcmVmcmVz
aFBsdWdpbnMoKSBvdmVycmlkZTsKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1
Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBXZWJD
b3JlOjpVUkwmKSBmaW5hbDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlz
aWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAg
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLm1t
CmluZGV4IGUzNGVjNzNlNTRmYmQ5NTQxNjhmZmNhNTUyZTRmMzZiYzk1ZjU0NGIuLmIwNmRhNmYw
ZjBjMzU3YjAwYmE4NzQ5MWNiMTdiZmQyZmE5NGUzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJv
dmlkZXIubW0KQEAgLTc0LDcgKzc0LDcgQEAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdl
YlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWcKICAgICBy
ZXR1cm4gcGx1Z2luczsKIH0KIAotVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdp
bkluZm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwg
Y29uc3QgV2ViQ29yZTo6VVJMJikKK1ZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVn
aW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2Us
IGNvbnN0IFVSTCYpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2lu
SWRlbnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzOwogICAgIHJldHVybiBwbHVn
aW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmln
aW4ubW0KaW5kZXggYjQzYWFhNzRmZWEyNDJjMTkxZGVlMThkYjRiYTI4ZTVmNjBiOWFkZi4uMDY3
ZjU2Y2RlMzk0MmMyZWE3MWIxZjRiNTJmODcxYTVkNDYxM2NjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmln
aW4ubW0KQEAgLTM0LDcgKzM0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2Vy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5r
U3RvcmUuaAppbmRleCBhZWY0ZmM1MmFhZTQxMmYzZTZjNGVjZjQwMzk1YjQzZTg3Y2M5NDZjLi4y
MGVlNTE4Nzk0NTU5NzJhYjRiMDNjNDYyYWUzMWYzOTQ5ZWM5MTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExp
bmtTdG9yZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViVmlz
aXRlZExpbmtTdG9yZSgpOwogCi0gICAgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2Um
LCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkws
IGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBvdmVycmlkZTsKKyAgICBib29sIGlz
TGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJy
aWRlOwogICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNo
YXJlZFN0cmluZ0hhc2gpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5r
c0lmTmVlZGVkKFdlYkNvcmU6OlBhZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAwZmM5YjkxYWNhYzZiOGRlMTNlMTlhZjgy
Mzc5YmJkYTgyM2ZlOTMzLi42NDViMWIyNGFhMjZiMDE2NjhiOGYxNTJkYjdiMTNjNTcyMzhmNmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCkBAIC01NSw3ICs1NSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnku
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVVSTFJlc3Bv
bnNlLmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvRE9NSFRNTC5oPgpAQCAtNjUsNiArNjQsNyBA
QAogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaW1wb3J0ICJXZWJQREZWaWV3SU9TLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBjMTQ0MDI5OGE4OGUwNjlhNGQxNjIx
YWM4MWUyODNjMjlkOTU4MmNhLi5kOWQ5YTlmNjg2MTJmNGFkNGIwMzYyMjRjODBkY2VmYWYxMjRk
NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAg
LTI1MDgsNyArMjUwOCw3IEBAIHN0YXRpYyBOU1VSTCAqY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgp
CiAgICAgaWYgKGJhc2VVUkwpCiAgICAgICAgIGJhc2VVUkwgPSBbYmFzZVVSTCBhYnNvbHV0ZVVS
TF07CiAgICAgZWxzZSB7Ci0gICAgICAgIGJhc2VVUkwgPSBibGFua1VSTCgpOworICAgICAgICBi
YXNlVVJMID0gV1RGOjpibGFua1VSTCgpOwogICAgICAgICByZXNwb25zZVVSTCA9IGNyZWF0ZVVu
aXF1ZVdlYkRhdGFVUkwoKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIu
bW0KaW5kZXggNzU0Y2NjYzFhZjI4MDY1NThjZWY5NmI4OGNjNmU2ODczM2NhMjJhNi4uZjUxNGI4
NDA1NGMyMWE5MzczYmRlN2Y1YjlhNDAxZDhkZWZiMzQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29u
dHJvbGxlci5tbQpAQCAtMjU2LDE3ICsyNTYsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAgICAgTlNVUkwgKnVybCA9IF9oaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwogICAg
IE5TU3RyaW5nICphYnNvbHV0ZVVSTFN0cmluZyA9IFt1cmwgYWJzb2x1dGVTdHJpbmddOwogICAg
IGlmICh1cmwgJiYgX2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChw
cm90b2NvbElzKGFic29sdXRlVVJMU3RyaW5nLCAibWFpbHRvIikpIHsKKyAgICAgICAgaWYgKFdU
Rjo6cHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgIm1haWx0byIpKSB7CiAgICAgICAgICAg
ICBfdHlwZSA9IFdlYkltbWVkaWF0ZUFjdGlvbk1haWx0b0xpbms7CiAgICAgICAgICAgICByZXR1
cm4gW3NlbGYgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRMaW5rXTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChwcm90b2NvbElzKGFic29sdXRlVVJMU3RyaW5nLCAidGVsIikp
IHsKKyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0ZVVSTFN0cmluZywgInRlbCIp
KSB7CiAgICAgICAgICAgICBfdHlwZSA9IFdlYkltbWVkaWF0ZUFjdGlvblRlbExpbms7CiAgICAg
ICAgICAgICByZXR1cm4gW3NlbGYgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JEYXRhRGV0ZWN0ZWRM
aW5rXTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KGFic29sdXRlVVJMU3RyaW5nKSkgeworICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElz
SW5IVFRQRmFtaWx5KGFic29sdXRlVVJMU3RyaW5nKSkgewogICAgICAgICAgICAgX3R5cGUgPSBX
ZWJJbW1lZGlhdGVBY3Rpb25MaW5rUHJldmlldzsKIAogICAgICAgICAgICAgUmVmUHRyPFJhbmdl
PiBsaW5rUmFuZ2UgPSByYW5nZU9mQ29udGVudHMoKl9oaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KaW5k
ZXggOGIxMGU2ZjFlMDBlYmIzZTQ4ZTFjYWVjMDExZjg0ZmEyMTUzMmY1Ni4uMzIyMWQ2MGM4ZjA5
ZGE4NzQ2ZDc0MDA0Y2IyYWMxYmVkNDQ3NzQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQpAQCAtNjIsOSArNjIsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5
TWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViTlNBdHRyaWJ1dGVkU3Ry
aW5nRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiBleHRlcm4gIkMiIHsKICAgICBib29sIENHQ29udGV4dEdldEFsbG93c0ZvbnRTbW9v
dGhpbmcoQ0dDb250ZXh0UmVmIGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KaW5kZXggODVhZmZjMWJjYTBkODc4
MzNiNDQ5NjIyZWExZGFhMzJhYTBjNjQ5YS4uNWZjZjlmNmFmZTA1MWJiMmY3Y2NmMTNlMzI3YjQ1
YTU1Njc4OGJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJTY3JpcHREZWJ1Z2dlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlNjcmlwdERlYnVnZ2VyLm1tCkBAIC0zOSw4ICszOSw4IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0RPTVdpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0RPTVdpbmRvdy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2NyaXB0Q29udHJvbGxlci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCBhZjE1MmM4Zjc2YTRk
YmJiNjk4MzgxYzUyNWJmYWExNjk0OWM5ZDM2Li41NzljOGQ4ODUwNzI5ZGI3OTNjNjY5ZDc0OTc5
OTNlY2Y2M2Y3N2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgS2V5Ym9hcmRFdmVudDsK
IGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwotY2xh
c3MgVVJMOwogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogc3RydWN0IERpY3Rpb25hcnlQ
b3B1cEluZm87CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFs
bGluZ0hlbHBlcnMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxw
ZXJzLmNwcAppbmRleCA2YWYzMTUxMzE2NTE4YTJjZjU2Mjg4ODFiNDg1YzIyMzMwY2M4MDk3Li43
NDcxYTExNmM3MzJkYmVmOGZmZjExMGMzZDExYmMzNmM4OWU4YjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKQEAgLTI4LDkgKzI4LDkgQEAK
IAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVj
dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaAppbmRleCA4MTE5
ZDQyZjk4NjI3MDMzYjExM2E1NDA4NmQxYjBiZGFlNzhlOTIyLi5jNzZlZDgzYzUyYjYzYTlhYmEz
NjczYjkwN2VlNTE2NDE1ODBjYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NYXJzaGFsbGluZ0hlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJz
aGFsbGluZ0hlbHBlcnMuaApAQCAtMzAsMTUgKzMwLDE0IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ29yZUZvdW5kYXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNz
IEludFJlY3Q7Ci0gICAgY2xhc3MgVVJMOworY2xhc3MgSW50UmVjdDsKIH0KIAogY2xhc3MgTWFy
c2hhbGxpbmdIZWxwZXJzCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkNvcmU6OlVSTCBCU1RS
VG9LVVJMKEJTVFIpOwotICAgIHN0YXRpYyBCU1RSIFVSTFRvQlNUUihjb25zdCBXZWJDb3JlOjpV
UkwmKTsKKyAgICBzdGF0aWMgVVJMIEJTVFJUb0tVUkwoQlNUUik7CisgICAgc3RhdGljIEJTVFIg
VVJMVG9CU1RSKGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBDRlVSTFJlZiBQYXRoU3RyaW5nVG9G
aWxlQ0ZVUkxSZWYoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
RmlsZUNGVVJMUmVmVG9QYXRoU3RyaW5nKENGVVJMUmVmIGZpbGVVUkwpOwogICAgIHN0YXRpYyBD
RlVSTFJlZiBCU1RSVG9DRlVSTFJlZihCU1RSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggZjI0MzYwM2NlNjcxNWQ4ZjFm
MDg4ZGVhZjI5YWUwMDcxZDhlOTQ2OC4uOWNkY2MxNDViNzE5OTljZGE2OTg0MTRlNTJmZTIyYzM3
YTg5N2I4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKQEAgLTI4LDggKzI4LDggQEAKIAogI2luY2x1ZGUgIlBsdWdpblBhY2th
Z2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFU
QV9DQUNIRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0
YWJhc2UuaAppbmRleCAwMTM3MDhlYmQ3MWY5ODM3MDU0OWE0NDY0MTFiZmE0YzdmZDkzMGFkLi5h
Y2MwZTFmYmE3NDY0Mjk0NDFiYjlhZDY0ZmRiY2UyNTBkMmRiNzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCkBAIC0zOCw3ICszOCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBFbGVtZW50OwogICAgIGNsYXNzIEZy
YW1lOwogICAgIGNsYXNzIEludFNpemU7Ci0gICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFBsdWdp
bkRhdGFiYXNlQ2xpZW50OwogICAgIGNsYXNzIFBsdWdpblBhY2thZ2U7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKaW5k
ZXggYzNlNDlmNDQxOTY1NDYxMGVmZDRkYzVmNWViZDlhYjA5MWMwNmUxNS4uODE0ZTJiYjZkYzM5
MWZjMmZmYTFhOTViNjllNDZkNDU4MGMwMzY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJT
dHJpbmdFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luU3RyZWFtLmgKaW5kZXggZjYyOGNjZDNkNWE0NTkyNmU1MzcwMzUyZDg2ZGM5YTc1MzU1OGU3
MS4uYzFiOWY4N2FjNGU2MjJmYmIyZTJlMjA1ZDE2NDU5YzBjMTk0ZTdiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCkBAIC0zMiwxMCArMzIs
MTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbnBydW50aW1lX2ludGVy
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmll
dy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXgg
YjRlOTFmNmUxMmIzYmI5YjJhMzlkOGJhOGYwMmE5NDIwNDA1YmQzMC4uN2NmYzdhOWE4MmU3MmM5
MTJmNWRiOTk5Y2ZiMzdiZjljZjFhOWY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTYwLDcgKzYwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwogICAgIGNsYXNzIEtleWJvYXJkRXZlbnQ7
CiAgICAgY2xhc3MgTW91c2VFdmVudDsKLSAgICBjbGFzcyBVUkw7CiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAgICAgY2xhc3MgUGx1Z2luTWVzc2FnZVRocm90dGxlcldpbjsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggMjAzZDE1NjVlMjU4NjE3M2NhMjU2
MWE1NDVhMzhlNjBlNzVjOGQ4Mi4uYzlkZTQ5YjNjZDE0NTUxNzI4ZmIyZjlkOTZlZjQ5MGU5OTE1
OGJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC0zNSw3ICszNSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURlc3Ryb3llZCgpOwogCi0gICAgdmly
dHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwg
dm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0
aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJ
bkRpY3Rpb25hcnkoV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29u
c3QgV1RGOjpTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNE
ZWxlZ2F0ZS5jcHAKaW5kZXggNjQzNTA3NjdmOTM0MDI2ZDA5YzBmYThiODhkY2NkZDM4OTQyZWQw
Ny4uY2MwMzhjZWZkOTE1ZjQ1MTZkNTg3YmFmMTA5YTVhZDY0N2EyMDEzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaAppbmRleCBmMGYxZDkyZjJk
YjI1Yjc0NDI4Nzc1MjQ2MmFmYmE0YmMxZDFjN2YxLi44Mjk2YzhjY2I2ODg3ZDM0NTQ4ZDVhNjRj
Njg2NzcyNmE3NDYwNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNE
ZWxlZ2F0ZS5oCkBAIC0zOCw3ICszOCw2IEBAIGludGVyZmFjZSBJV2ViRGVza3RvcE5vdGlmaWNh
dGlvblByZXNlbnRlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7Ci1j
bGFzcyBVUkw7CiB9CiAKIGNsYXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUgOiBw
dWJsaWMgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IGE3YTI4OTcyMWY5YjczYjk4ODRkMzNlNmZlNjNlZTc3ZWFlOWU2NGQuLjA4MjJi
ODM1N2IzMDBlMjU2N2VjODdiNDZkN2U3ZTJlNTdlZjA4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtODUsNyArODUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRE
aXNwYXRjaE9ubG9hZEV2ZW50cygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBvdmVycmlkZTsKKzw8PDw8PDwgSEVB
RAogICAgIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgV2FsbFRpbWUgZmlyZURhdGUsIFdlYkNvcmU6Okxv
Y2tCYWNrRm9yd2FyZExpc3QpIG92ZXJyaWRlOworPT09PT09PQorICAgIHZvaWQgZGlzcGF0Y2hX
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgV2Fs
bFRpbWUgZmlyZURhdGUpIG92ZXJyaWRlOworPj4+Pj4+PiBjaGFuZ2VzCiAgICAgdm9pZCBkaXNw
YXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlz
cGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRj
aERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBvdmVycmlkZTsKQEAgLTEzOSw4ICsxNDMsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9y
eUl0ZW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBh
Z2UpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWREZXRlY3RY
U1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIG92ZXJyaWRlOwogCiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2Nr
ZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKQEAgLTE1
MywxMiArMTU3LDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgV1RGOjpTdHJpbmcgdXNl
ckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAgIFdURjo6U3RyaW5nIHVz
ZXJBZ2VudChjb25zdCBVUkwmKSBvdmVycmlkZTsKIAogICAgIFJlZjxXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBvdmVycmlkZTsKICAgICB2b2lk
IHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJikgb3Zl
cnJpZGUgeyB9CiAKLSAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRp
dGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6
Q2FjaGVkRnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZy
b21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIG92ZXJyaWRlOwpAQCAtMTg0LDE1
ICsxODgsMjEgQEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBvdmVy
cmlkZTsKIAorPDw8PDw8PCBIRUFECiAgICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVG
cmFtZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29y
ZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJl
ZmVycmVyKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Jiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5
KSBvdmVycmlkZTsKKz09PT09PT0KKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZy
YW1lKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJh
bWVPd25lckVsZW1lbnQmLAorICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJv
b2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBVUkwm
LCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIG92ZXJyaWRlOworPj4+Pj4+
PiBjaGFuZ2VzCiAgICAgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBvdmVy
cmlkZSB7IH0KICAgICB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCYp
IG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxl
dFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1l
bnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYs
IGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIG92ZXJyaWRlOwogCi0g
ICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZTsKKyAgICBX
ZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBj
b25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOwogICAgIFdURjo6U3RyaW5nIG92
ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpc3BhdGNoRGlk
Q2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAwYzRmYjA0MjRkMDFlYTExNWQy
N2VjZTcyZTE5MDM4NzZlNWMxZTU5Li5iZTI0Y2I4YTU2ODU5Y2Q0M2NlMTlmMGExN2JiZjgxZGE3
Yzk5ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNDUsMTEgKzQ1LDExIEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpCbG9iUmVnaXN0cnkqIGNyZWF0ZUJsb2JS
ZWdpc3RyeSgpOwogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5Ci0gICAgc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJik7CisgICAgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5n
Jik7CiAgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYpOwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcykgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25z
dCBTdHJpbmcmKTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAg
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKaW5kZXggMWE0NWFiOGRlMjgyMzdjZmRl
YjZmMzlkZTBmMTc0ZWViNWQ4MjNlZi4uZDMxMGQyOTEwMDg3MDA5ZTg5YmFmZWY1ZjBlMDEyNzYx
OTRkZGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCkBAIC04NCw3ICs4NCw3
IEBAIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBs
dWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnCiAgICAgcmV0dXJuIG91dFBsdWdpbnM7CiB9CiAK
LVZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZp
c2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYp
CitWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJW
aXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBjb25zdCBVUkwmKQogewogICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+
PiBzdXBwb3J0ZWRQbHVnaW5OYW1lczsKICAgICByZXR1cm4gcGx1Z2luSW5mbyhwYWdlLCBzdXBw
b3J0ZWRQbHVnaW5OYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCmluZGV4IDgwMWJj
YjdiNDYyZGNjZGRmYzc2NTJiNjRhZjA2Zjg2MGZmYzU1ZmIuLjEwZjc2NmUwNjA0NGQxNTliMGEx
Y2Q5Mzk0OTIxZTc2MTJkNTc5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCkBAIC0z
Nyw3ICszNyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygp
IGZpbmFsOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5JbmZvKFdlYkNv
cmU6OlBhZ2UmLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5J
ZGVudGlmaWVyPj4mKSBmaW5hbDsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2Vi
VmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSZpLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBm
aW5hbDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBsdWdpbklu
Zm8oV2ViQ29yZTo6UGFnZSZpLCBjb25zdCBVUkwmKSBmaW5hbDsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgdm9pZCBzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRD
bGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpIGZpbmFsOwogICAgIHZvaWQgY2xl
YXJQbHVnaW5DbGllbnRQb2xpY2llcygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCmlu
ZGV4IDZhN2I5OTIyYzNhMzkxNTIyYzNkYTA0N2U0YTA2OTczYjQwNGQxMTAuLjhiZWRlOWUyNTgx
OTE4MzIwMjcwZWFiNjUyNzRhN2E5MDZkYjU4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJWaXNpdGVkTGlua1N0
b3JlKCk7CiAKLSAgICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6
OlNoYXJlZFN0cmluZ0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRl
ZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5n
SGFzaCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzSWZOZWVkZWQo
V2ViQ29yZTo6UGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNw
cAppbmRleCBhNjgyYzYyNzUwZTExZjUyMTU2NzIxZjNkODI4MmQ1N2UwZjgwNmQyLi5iNDA3M2Ux
MDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUxvYWRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvd25sb2FkLmgKaW5kZXggODQ4ODVmMjRmYjgzNGEyZGZjYTgyZWViNzllMTljNzE5
MTA0YTQ3Mi4uNGY2MTExZTIzYjJjMmUwN2UwYWU0YWZhZDU4ZWE1MGVkMWEzMmM3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5oCkBAIC0zOCw3ICszOCw2IEBACiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBSZXNvdXJj
ZUhhbmRsZTsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKQEAgLTUyLDEzICs1MSwxMyBAQCBjbGFzcyBXZWJEb3dubG9hZAogI2VuZGlmCiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJbnN0YW5jZShjb25zdCBX
ZWJDb3JlOjpVUkwmLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOworICAgIHN0YXRpYyBXZWJEb3du
bG9hZCogY3JlYXRlSW5zdGFuY2UoY29uc3QgVVJMJiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsK
ICAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CiAgICAgc3RhdGljIFdl
YkRvd25sb2FkKiBjcmVhdGVJbnN0YW5jZSgpOwogcHJpdmF0ZToKICAgICBXZWJEb3dubG9hZCgp
OwogICAgIHZvaWQgaW5pdChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBJV2Vi
RG93bmxvYWREZWxlZ2F0ZSopOwotICAgIHZvaWQgaW5pdChjb25zdCBXZWJDb3JlOjpVUkwmLCBJ
V2ViRG93bmxvYWREZWxlZ2F0ZSopOworICAgIHZvaWQgaW5pdChjb25zdCBVUkwmLCBJV2ViRG93
bmxvYWREZWxlZ2F0ZSopOwogICAgIH5XZWJEb3dubG9hZCgpOwogcHVibGljOgogICAgIC8vIElV
bmtub3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJv
cGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5
QmFnLmNwcAppbmRleCBjZGY4Y2FkNmEzNjk2ZWViYWNlNjJmNGU1Nzg0Y2VlNGJlZjFkOWU5Li4y
N2FmMWJhZTY1M2VmZjAyZjY3MDRmN2UzOWFkMGUxYWM1MGFkNzBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTM2LDggKzM2
LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuaAppbmRleCBkYmVhNjk4YTU3NTAyMTJhNTA2NTBlNzgzOTE2OWQwYTVl
MWIzNzU0Li5jNGQwODM2MmRhZDVlODM5M2U4ZGZmODMxYzI1OTgxYTJjNzdmZmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAgLTM0LDkgKzM0LDkgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lV2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDxzYWwuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgIEhSRVNVTFQg
bWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudChjb25zdCBCU1RSKiBsYWJlbHMsIGludCBjTGFiZWxz
LCBJRE9NRWxlbWVudCogYWdhaW5zdEVsZW1lbnQsIEJTVFIqIHJlc3VsdCk7CiAgICAgSFJFU1VM
VCBjYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UoYm9vbCogcmVzdWx0KTsKIAotICAgIFdlYkNvcmU6
OlVSTCB1cmwoKSBjb25zdDsKKyAgICBVUkwgdXJsKCkgY29uc3Q7CiAKICAgICBXZWJWaWV3KiB3
ZWJWaWV3KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXZWJWaWV3KFdlYlZpZXcqKTsKQEAgLTIxMyw3
ICsyMTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgY2xhc3MgV2ViRnJhbWVQcml2YXRlOwogICAgIFdl
YkZyYW1lUHJpdmF0ZSogZDsKICAgICBib29sIG1fcXVpY2tSZWRpcmVjdENvbWluZyB7IGZhbHNl
IH07Ci0gICAgV2ViQ29yZTo6VVJMIG1fb3JpZ2luYWxSZXF1ZXN0VVJMOworICAgIFVSTCBtX29y
aWdpbmFsUmVxdWVzdFVSTDsKICAgICBib29sIG1faW5QcmludGluZ01vZGUgeyBmYWxzZSB9Owog
CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG1fcGFnZVJlY3RzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCAyMmIwODQ2YTkwNmI3ODI4NjU2YjhkOTU3YzEw
YTBkZmFmZjhiMzAxLi4wMjMzODRjZTk2ZjEwOTQ5Y2RkNTlmNzc0YTgxNDVlYmJlYTdiN2E1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtMzYsMTIgKzM2LDEyIEBA
CiAjaW5jbHVkZSAiV2ViVmlzaXRlZExpbmtTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0
cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0
Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgVVNFKENGKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViSGlzdG9yeS5oCmluZGV4IGE1MmM1MWYyYmJkYzNiMDJjOGZiY2I4Mzcx
ZTZmZGViMDRjMTg3MGQuLmI5ZDE3MGEzNmUxMTk5YWEzNzExZTk2OTA2MDRkYzJhOTUwNTI5OTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmgKQEAgLTMzLDggKzMzLDcgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3Mg
VVJMOwotICAgIGNsYXNzIFBhZ2VHcm91cDsKK2NsYXNzIFBhZ2VHcm91cDsKIH0KIAogLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtNzgsNyArNzcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJI
aXN0b3J5CiAgICAgc3RhdGljIFdlYkhpc3RvcnkqIHNoYXJlZEhpc3RvcnkoKTsKLSAgICB2b2lk
IHZpc2l0ZWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxl
LCBjb25zdCBXVEY6OlN0cmluZyYgaHR0cE1ldGhvZCwgYm9vbCB3YXNGYWlsdXJlLCBib29sIGlu
Y3JlYXNlVmlzaXRDb3VudCk7CisgICAgdm9pZCB2aXNpdGVkVVJMKGNvbnN0IFVSTCYsIGNvbnN0
IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV1RGOjpTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wg
d2FzRmFpbHVyZSwgYm9vbCBpbmNyZWFzZVZpc2l0Q291bnQpOwogICAgIHZvaWQgYWRkVmlzaXRl
ZExpbmtzVG9WaXNpdGVkTGlua1N0b3JlKFdlYlZpc2l0ZWRMaW5rU3RvcmUmKTsKIAogICAgIENP
TVB0cjxJV2ViSGlzdG9yeUl0ZW0+IGl0ZW1Gb3JVUkxTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJ
dGVtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRl
eCA4NDM3NjIwMWQwN2ViM2ZlZjVlYjJkOWE3MjE3NmQzMTdmOTkxMjJlLi5hODU1OWE1ZmQyMjdj
YmQyYjE3ZWFmMjg1ZWE2Mzk1ZWFmZjhhNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9C
U3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0hpc3RvcnlJdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggYjI5MmRkZTdkY2NlZjYyZmNhNzNiMGM0Y2I0YmFiMmFk
YzViZmZiMC4uOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtMzQsNyArMzQsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gV2ViUmVzb3VyY2UgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdl
YlJlc291cmNlOjpXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSkKK1dlYlJlc291cmNl
OjpXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXVEY6OlVSTCYgdXJsLCBjb25zdCBX
VEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKQogICAgIDogbV9kYXRhKGRhdGEpCiAgICAg
LCBtX3VybCh1cmwpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlJlc291cmNlLmgKaW5kZXggYjhjN2RjY2IwMzc0OWFiNzg3M2UzN2ZmYTI5ZjI1MmM2
NTNiZWJhNS4uNGRmM2UwYzExNTA0NjUwYTlmMmIwMWMyMTcxZTIxZmMyMWEwYjk4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0yOCwxNyArMjgsMTcgQEAKIAogI2lu
Y2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IGNsYXNzIFdlYlJlc291cmNlIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBwcm90ZWN0ZWQ6
Ci0gICAgV2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmws
IGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpOworICAgIFdlYlJlc291cmNl
KElTdHJlYW0qIGRhdGEsIGNvbnN0IFdURjo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiBmcmFtZU5hbWUpOwogICAgIH5XZWJSZXNvdXJjZSgpOwogCiBwdWJsaWM6CkBAIC01
OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAg
fTsKICAgICBDT01QdHI8SVN0cmVhbT4gbV9kYXRhOwotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsK
KyAgICBXVEY6OlVSTCBtX3VybDsKICAgICBXVEY6OlN0cmluZyBtX21pbWVUeXBlOwogICAgIFdU
Rjo6U3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICBXVEY6OlN0cmluZyBtX2ZyYW1lTmFt
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRl
eCA4MWIyNjlmYzQyMGM1OWNjNmVmNWQ5OTJmYzc2Y2M0OWIwZWEwZmI4Li45NDViODY5MjNmNmIx
ZmNhN2QwYjQ3NzdmMGNkMDYwMDI0NmExMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCmluZGV4IGE2MDgy
YjQ4ZGExZjk5NjJjOTI2NThkMDVlZTI2MjE2MDY5NGI0N2IuLjU2OWI5ODI2NGI0NWI4ODc4YjU4
NzJjMzMxMmZlMTM4NDJjNTIwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxS
ZXNwb25zZS5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxXZWJD
b3JlL0JTdHJpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxzaGxvYmou
aD4KICNpbmNsdWRlIDxzaGx3YXBpLmg+CiAjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yMjgsNyArMjI4LDcg
QEAgV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAg
ICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAg
Ly8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3Bv
bnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25z
ZShXZWJDb3JlOjpVUkwoeyB9LCAiaHR0cDovLyIpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOwor
ICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0s
ICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CiAgICAgaW5zdGFuY2UtPkFkZFJl
ZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IGJkMTI2NzU4YTUxY2Mz
NTM4ZjlhYzk1MzdjZmIxZmM3ZGZkYWUzODguLjQ4MTIzODQ3MTNjOGI5OWRhNWNiYTViNjNmMjU0
NDQ5ZmU1MGM2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJD
b250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIldlYktp
dERMTC5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKaW5kZXggMzYxYmU1M2E5ZjI5ODdmYTYyYTVl
Mjc3OTFiZWMzYzFkMTYwMjQ3Ny4uMTYxN2YxMGE0ZGFkMjQ3MTYyOWEwMTJiMDQ5OGM2NzMzYjkx
NGI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNDYzLDcgKzQ2Myw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIENvbnZlbmllbnQgdG8gYmUgYWJsZSB0byB2aW9sYXRlIHRoZSBydWxl
cyBvZiBDT00gaGVyZSBmb3IgZWFzeSBtb3ZlbWVudCB0byB0aGUgZnJhbWUuCiAgICAgV2ViRnJh
bWUqIHRvcExldmVsRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZTsgfQotICAgIGNv
bnN0IFdURjo6U3RyaW5nJiB1c2VyQWdlbnRGb3JLVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
KTsKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdXNlckFnZW50Rm9yS1VSTChjb25zdCBVUkwmIHVy
bCk7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOwogCkBAIC01MDIsNyArNTAyLDcgQEAgcHVibGljOgogICAgIGJvb2wg
b25HZXRPYmplY3QoV1BBUkFNLCBMUEFSQU0sIExSRVNVTFQmKSBjb25zdDsKICAgICBzdGF0aWMg
U1RETUVUSE9ESU1QIEFjY2Vzc2libGVPYmplY3RGcm9tV2luZG93KEhXTkQsIERXT1JEIG9iamVj
dElELCBSRUZJSUQsIHZvaWQqKiBwcE9iamVjdCk7CiAKLSAgICB2b2lkIGRvd25sb2FkVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJik7CiAK
ICAgICB2b2lkIGZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpOwogICAgIHZv
aWQgc2V0Um9vdENoaWxkTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRhMzFkOWRhYWQzYjdk
MWY4NDdjYWYwMTY3Mjg2OGVhYzNjYjkxZDguLmQyZGZmMjU5OGVhMjMwMGFhY2M3MmNhYzBlODUx
ODcwZWNkNGE0MDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxOC0xMS0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0
byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y3JlYXRlVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpjaGVja1JlbGF0aXZlVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMRGlm
ZmVyZW5jZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTERpZmZl
cmVuY2VzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50
UXVpcmtzLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6b3JpZ2lu
YWxEYXRhQXNTdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dXNlclZpc2libGVTdHJp
bmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bGl0ZXJhbFVSTCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVlc3Qu
bW06CisgICAgICAgIChsaXRlcmFsVVJMKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbToKKyAgICAgICAgKC1bTG9hZElu
dmFsaWRVUkxXZWJGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25hbExv
YWRXaXRoRXJyb3I6Zm9yRnJhbWU6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvU1NMS2V5R2VuZXJhdG9yLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1BsYXRm
b3JtVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0
ZVVSTEZvclJlc291cmNlKToKKyAgICAgICAgKiBsbGRiL2xsZGJfd2Via2l0LnB5OgorICAgICAg
ICAoX19sbGRiX2luaXRfbW9kdWxlKToKKyAgICAgICAgKFdURlVSTF9TdW1tYXJ5UHJvdmlkZXIp
OgorICAgICAgICAoV1RGVVJMUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZVVSTF9TdW1tYXJ5
UHJvdmlkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZVVSTFByb3ZpZGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmVVUkxQcm92aWRlci5fX2luaXRfXyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlVVJMUHJvdmlkZXIudG9fc3RyaW5nKTogRGVsZXRlZC4KKwogMjAxOC0xMS0z
MCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0
cHk6IFVzZSBEZXZpY2VUeXBlIGluc3RlYWQgb2Ygc3RyIHRvIHJlcHJlc2VudCBkZXZpY2UgY2xh
c3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50
RXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVu
dEV4dGVuc2lvbnMuY3BwCmluZGV4IDU4ZTY5ZDBkZjYzMDU5N2ExMGRiMmU5Yzk2YTJkOGRkY2Rh
YTdjNjkuLjE4OGI4YmRlMGM1ZjM0OWVkYzlmNDI1Y2Y5MDgzY2M3NzY4ZDA3MDcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNp
b25zLmNwcApAQCAtMzgsMTAgKzM4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9ORkEuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05GQVRvREZBLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxv
YWRJbmZvLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VS
TEZpbHRlclBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAK
aW5kZXggYjkyODMyNGYzNTk4ZGRiNDYxN2ExZGVlYjg4MjYzNjBjNjVhNDIwNS4uYWFkMTZiODYw
NDE3OWNhNDNhOTc3Mzc5NTg1NGI1NzU3NzNhZmM5YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0yOCw4ICsyOCw4
IEBACiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwCmluZGV4IDczNTM0YzgxNzMzZWJhNDUyZjMyZmQ5
ZjgyMTcxYmE5YmE1NGI2YmIuLmRjMzFiNDdiZDA3ODY4YWVkY2FmZjk3ZjU2NTZkODNmNzg5ZDgz
MjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwCkBAIC0yNSwx
MSArMjUsOSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRp
bGl0aWVzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VS
TFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2Vy
Lmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtNzMsOCArNzEsNyBAQCBURVNU
X0YoVVJMVGVzdCwgVVJMQ29uc3RydWN0b3JDb25zdENoYXIpCiAKIHN0YXRpYyBVUkwgY3JlYXRl
VVJMKGNvbnN0IGNoYXIqIHVybEFzU3RyaW5nKQogewotICAgIFVSTFBhcnNlciBwYXJzZXIodXJs
QXNTdHJpbmcpOwotICAgIHJldHVybiBwYXJzZXIucmVzdWx0KCk7CisgICAgcmV0dXJuIFVSTCh7
IH0sIHVybEFzU3RyaW5nKTsKIH07CiAKIFRFU1RfRihVUkxUZXN0LCBVUkxQcm90b2NvbEhvc3RB
bmRQb3J0KQpAQCAtMzE3LDIwICszMTQsMjAgQEAgVEVTVF9GKFVSTFRlc3QsIEVxdWFsSWdub3Jp
bmdRdWVyeUFuZEZyYWdtZW50KQogCiBURVNUX0YoVVJMVGVzdCwgUHJvdG9jb2xJc0luSFRUUEZh
bWlseSkKIHsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSh7fSkpOwot
ICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCIiKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImEiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoImFiIikpOwotICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElz
SW5IVFRQRmFtaWx5KCJhYmMiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBG
YW1pbHkoImFiY2QiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHko
ImFiY2RlIikpOwotICAgIEVYUEVDVF9GQUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNk
ZWYiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlZmci
KSk7Ci0gICAgRVhQRUNUX1RSVUUocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cDoiKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHAiKSk7Ci0gICAgRVhQ
RUNUX1RSVUUocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0cHM6IikpOwotICAgIEVYUEVDVF9G
QUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwcyIpKTsKLSAgICBFWFBFQ1RfVFJVRShw
cm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwczovLyFAIyQlXiYqKCkiKSk7CisgICAgRVhQRUNU
X0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSh7IH0pKTsKKyAgICBFWFBFQ1RfRkFM
U0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCIiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdU
Rjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpw
cm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90
b2NvbElzSW5IVFRQRmFtaWx5KCJhYmMiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9j
b2xJc0luSFRUUEZhbWlseSgiYWJjZCIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCJhYmNkZSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCJhYmNkZWYiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9j
b2xJc0luSFRUUEZhbWlseSgiYWJjZGVmZyIpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoImh0dHA6IikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoImh0dHAiKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCJodHRwczoiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9j
b2xJc0luSFRUUEZhbWlseSgiaHR0cHMiKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCJodHRwczovLyFAIyQlXiYqKCkiKSk7CiB9CiAKIFRFU1RfRihVUkxU
ZXN0LCBIb3N0SXNJUEFkZHJlc3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9VUkxQYXJzZXIuY3BwCmluZGV4IDNlMTA1OTJhMDNkMGFiMDFlMmMxNjZhNDUzZWFhZWVj
MWZhMDM5YzEuLjFjNGRjZGQwNWUyMWQ3YjVmZDdhYjdkZmU4NWQ4ZjA1YzFhYzhhN2EgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCkBAIC0y
Niw4ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHZv
aWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMm
IHBhcnRzLCBUZXN0VGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuc3RyaW5nLCB1
cmwuc3RyaW5nKCkpKTsKIAotICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1
ZXNDb25zaXN0ZW50KHVybCkpOworICAgIEVYUEVDVF9UUlVFKFdURjo6VVJMUGFyc2VyOjppbnRl
cm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CiAKICAgICBpZiAodGVzdFRhYnMgPT0gVGVzdFRh
YnM6Ok5vKQogICAgICAgICByZXR1cm47CkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIHZvaWQg
Y2hlY2tSZWxhdGl2ZVVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBi
YXNlVVJMU3RyaW4KICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdt
ZW50SWRlbnRpZmllcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuc3RyaW5nLCB1cmwu
c3RyaW5nKCkpKTsKICAgICAKLSAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6OmludGVybmFsVmFs
dWVzQ29uc2lzdGVudCh1cmwpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OlVSTFBhcnNlcjo6aW50
ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwogICAgIAogICAgIGlmICh0ZXN0VGFicyA9PSBU
ZXN0VGFiczo6Tm8pCiAgICAgICAgIHJldHVybjsKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMg
dm9pZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBF
eHBlY3RlZFBhcnRzJiBwYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LmZyYWdtZW50LCB1
cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5z
dHJpbmcsIHVybC5zdHJpbmcoKSkpOwogICAgIAotICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6
aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOworICAgIEVYUEVDVF9UUlVFKFdURjo6VVJM
UGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CiAgICAgCiAgICAgaWYgKHRl
c3RUYWJzID09IFRlc3RUYWJzOjpObykKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3LDcgKzE4Nyw3
IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcu
ZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3LnN0cmluZywgdXJsLnN0cmluZygpKSk7CiAgICAgCi0gICAgRVhQRUNUX1RSVUUo
VVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7CisgICAgRVhQRUNUX1RS
VUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKICAgICAK
ICAgICBpZiAodGVzdFRhYnMgPT0gVGVzdFRhYnM6Ok5vKQogICAgICAgICByZXR1cm47CkBAIC0y
MTMsOCArMjEzLDcgQEAgc3RhdGljIHZvaWQgc2hvdWxkRmFpbChjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiBiYXNlU3RyaW5nKQogCiBzdGF0aWMgdm9pZCBjaGVja1VSTChj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZywgY29u
c3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYWJzIHRlc3RUYWJzID0gVGVzdFRhYnM6Olll
cykKIHsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKHVybFN0cmluZywgeyB9LCBlbmNvZGluZyk7Ci0g
ICAgYXV0byB1cmwgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgYXV0byB1cmwgPSBVUkwoeyB9LCB1
cmxTdHJpbmcsIGVuY29kaW5nKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwg
dXJsLnByb3RvY29sKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNl
cigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsK
QEAgLTIzOCw5ICsyMzcsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZywgY29ucwogCiBzdGF0aWMgdm9p
ZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
U3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRz
JiBwYXJ0cywgVGVzdFRhYnMgdGVzdFRhYnMgPSBUZXN0VGFiczo6WWVzKQogewotICAgIFVSTFBh
cnNlciBiYXNlUGFyc2VyKGJhc2VVUkxTdHJpbmcsIHsgfSwgZW5jb2RpbmcpOwotICAgIFVSTFBh
cnNlciBwYXJzZXIodXJsU3RyaW5nLCBiYXNlUGFyc2VyLnJlc3VsdCgpLCBlbmNvZGluZyk7Ci0g
ICAgYXV0byB1cmwgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgYXV0byB1cmwgPSBVUkwoVVJMKHsg
fSwgYmFzZVVSTFN0cmluZyksIHVybFN0cmluZywgZW5jb2RpbmcpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNz
d29yZCwgdXJsLnBhc3MoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcAppbmRleCA0YzgwMzJiOTM2Y2ZlM2E1OTFmMjAy
ZWYwZTBlYTFkZjBlZjdkN2I3Li4wYzVlNjM3NzliYTdlMDFmYTY4OWI3MDlkM2FmN2ZlNTE4Zjcw
MDQzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFn
ZW50UXVpcmtzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNl
ckFnZW50UXVpcmtzLmNwcApAQCAtMjUsOCArMjUsOCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckFnZW50
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1lvdVR1YmVQbHVn
aW5SZXBsYWNlbWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91
VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCA3NmIxMDM1NzVjYTQyNWNlM2ZlNThkYTMx
MzZiMGVlYzBkNmQzZjFlLi4zMDBiMTNjYmNhMTBjMjFiMzA3ZWVlMzExNGRlMDBmYmYwZmUwMmQx
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtMjQsOSArMjQsOSBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
VVJMRXh0cmFzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1VS
TEV4dHJhcy5tbQppbmRleCA2ZmZkN2RhY2IzZmMwMjEyYTQwNGQ4NTZiMzE4YzkzNjlmODlmZTk2
Li5iNjQwYjEwYmZmMmYwMTliNzI3MjQzYTdjNjAwODUxYWRhZmQ3NWUwIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0KQEAg
LTI1LDggKzI1LDggQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3
dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC01MCwxNyArNTAsMTcgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIGRhdGFBc1N0cmluZyhOU0RhdGEgKmRhdGEpCiAKIHN0YXRpYyBjb25zdCBjaGFy
KiBvcmlnaW5hbERhdGFBc1N0cmluZyhOU1VSTCAqVVJMKQogewotICAgIHJldHVybiBkYXRhQXNT
dHJpbmcoV2ViQ29yZTo6b3JpZ2luYWxVUkxEYXRhKFVSTCkpOworICAgIHJldHVybiBkYXRhQXNT
dHJpbmcoV1RGOjpvcmlnaW5hbFVSTERhdGEoVVJMKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFy
KiB1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqVVJMKQogewotICAgIHJldHVybiBbV2ViQ29yZTo6
dXNlclZpc2libGVTdHJpbmcoVVJMKSBVVEY4U3RyaW5nXTsKKyAgICByZXR1cm4gW1dURjo6dXNl
clZpc2libGVTdHJpbmcoVVJMKSBVVEY4U3RyaW5nXTsKIH0KIAogc3RhdGljIE5TVVJMICpsaXRl
cmFsVVJMKGNvbnN0IGNoYXIqIGxpdGVyYWwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlVSTFdp
dGhEYXRhKGxpdGVyYWxBc0RhdGEobGl0ZXJhbCksIG5pbCk7CisgICAgcmV0dXJuIFdURjo6VVJM
V2l0aERhdGEobGl0ZXJhbEFzRGF0YShsaXRlcmFsKSwgbmlsKTsKIH0KIAogVEVTVChXZWJDb3Jl
LCBVUkxFeHRyYXMpCkBAIC0xMjcsOCArMTI3LDggQEAgVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNf
RGl2aXNpb25TaWduKQogICAgIC8vIFNlbGVjdGVkIHRoZSBkaXZpc2lvbiBzaWduIGFzIGFuIGV4
YW1wbGUgb2YgYSBub24tQVNDSUkgY2hhcmFjdGVyIHRoYXQgaXMgYWxsb3dlZCBpbiBob3N0IG5h
bWVzLCBzaW5jZSBpdCdzIGEgbG9va2FsaWtlIGNoYXJhY3Rlci4KIAogICAgIC8vIENvZGUgcGF0
aCBzaW1pbGFyIHRvIHRoZSBvbmUgdXNlZCB3aGVuIHR5cGluZyBpbiBhIFVSTC4KLSAgICBFWFBF
Q1RfU1RSRVEoImh0dHA6Ly9zaXRlLnhuLS1jb21vdGhlcnNpdGUta2piLm9yZyIsIG9yaWdpbmFs
RGF0YUFzU3RyaW5nKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0
ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJo
dHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhX
ZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhDM1x4Qjdv
dGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUueG4t
LWNvbW90aGVyc2l0ZS1ramIub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV1RGOjpVUkxXaXRo
VXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwg
bmlsKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNp
dGUub3JnIiwgdXNlclZpc2libGVTdHJpbmcoV1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAi
aHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgbmlsKSkpOwogCiAgICAgLy8g
Q29kZSBwYXRocyBzaW1pbGFyIHRvIHRoZSBvbmVzIHVzZWQgZm9yIFVSTHMgZm91bmQgaW4gd2Vi
cGFnZXMgb3IgSFRUUCByZXNwb25zZXMuCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5j
b21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJM
KCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciKSkpOwpAQCAtMTM3LDE3ICsx
MzcsMTcgQEAgVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfRGl2aXNpb25TaWduKQogICAgIEVYUEVD
VF9TVFJFUSgiaHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgdXNlclZpc2li
bGVTdHJpbmcobGl0ZXJhbFVSTCgiaHR0cDovL3NpdGUuY29tJUMzJUI3b3RoZXJzaXRlLm9yZyIp
KSk7CiAKICAgICAvLyBTZXBhcmF0ZSBmdW5jdGlvbnMgdGhhdCBkZWFsIHdpdGgganVzdCBhIGhv
c3QgbmFtZSBvbiBpdHMgb3duLgotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS54bi0tY29tb3RoZXJz
aXRlLWtqYi5vcmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3
b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29t
XHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhvc3ROYW1lKEAic2l0ZS5j
b21ceEMzXHhCN290aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVR
KCJzaXRlLnhuLS1jb21vdGhlcnNpdGUta2piLm9yZyIsIFtXVEY6OmVuY29kZUhvc3ROYW1lKEAi
c2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNU
X1NUUkVRKCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9yZyIsIFtXVEY6OmRlY29kZUhvc3RO
YW1lKEAic2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CiB9CiAK
LVRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX1NvbGlkdXMpCitURVNUKFdURiwgVVJMRXh0cmFzX1Nv
bGlkdXMpCiB7CiAgICAgLy8gU2VsZWN0ZWQgZnVsbCB3aWR0aCBzb2xpZHVzLCB3aGljaCBsb29r
cyBsaWtlIHRoZSBzb2xpZHVzLCB3aGljaCBpcyB0aGUgY2hhcmFjdGVyIHRoYXQgaW5kaWNhdGVz
IHRoZSBlbmQgb2YgdGhlIGhvc3QgbmFtZS4KIAogICAgIC8vIENvZGUgcGF0aCBzaW1pbGFyIHRv
IHRoZSBvbmUgdXNlZCB3aGVuIHR5cGluZyBpbiBhIFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEoImh0
dHA6Ly9zaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV2ViQ29y
ZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90
aGVyc2l0ZS5vcmciLCBuaWwpKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20v
b3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlw
ZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIiwgbmls
KSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tL290aGVyc2l0ZS5vcmciLCBv
cmlnaW5hbERhdGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v
c2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9T
VFJFUSgiaHR0cDovL3NpdGUuY29tL290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhX
VEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZv
dGhlcnNpdGUub3JnIiwgbmlsKSkpOwogCiAgICAgLy8gQ29kZSBwYXRocyBzaW1pbGFyIHRvIHRo
ZSBvbmVzIHVzZWQgZm9yIFVSTHMgZm91bmQgaW4gd2VicGFnZXMgb3IgSFRUUCByZXNwb25zZXMu
CiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUu
b3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcobGl0ZXJhbFVSTCgiaHR0cDovL3NpdGUuY29tXHhF
Rlx4QkNceDhGb3RoZXJzaXRlLm9yZyIpKSk7CkBAIC0xNTYsOCArMTU2LDggQEAgVEVTVChXZWJD
b3JlLCBVUkxFeHRyYXNfU29saWR1cykKICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNv
bSVFRiVCQyU4Rm90aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRlcmFsVVJMKCJo
dHRwOi8vc2l0ZS5jb20lRUYlQkMlOEZvdGhlcnNpdGUub3JnIikpKTsKIAogICAgIC8vIFNlcGFy
YXRlIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1lIG9uIGl0cyBvd24u
Ci0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmVu
Y29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0
cmluZ10pOwotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXZWJD
b3JlOjpkZWNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIp
IFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tL290aGVyc2l0ZS5vcmci
LCBbV1RGOjplbmNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9y
ZyIpIFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tL290aGVyc2l0ZS5v
cmciLCBbV1RGOjpkZWNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRl
Lm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAogVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfU3BhY2Up
CkBAIC0xNjUsOCArMTY1LDggQEAgVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfU3BhY2UpCiAgICAg
Ly8gU2VsZWN0ZWQgaWRlb2dyYXBoaWMgc3BhY2UsIHdoaWNoIGxvb2tzIGxpa2UgdGhlIEFTQ0lJ
IHNwYWNlLCB3aGljaCBpcyBub3QgYWxsb3dlZCB1bmVzY2FwZWQuCiAKICAgICAvLyBDb2RlIHBh
dGggc2ltaWxhciB0byB0aGUgb25lIHVzZWQgd2hlbiB0eXBpbmcgaW4gYSBVUkwuCi0gICAgRVhQ
RUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20lMjBvdGhlcnNpdGUub3JnIiwgb3JpZ2luYWxEYXRh
QXNTdHJpbmcoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNv
bVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBuaWwpKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJo
dHRwOi8vc2l0ZS5jb20lMjBvdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmcoV2ViQ29y
ZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90
aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20l
MjBvdGhlcnNpdGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV1RGOjpVUkxXaXRoVXNlclR5
cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5p
bCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmci
LCB1c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v
c2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgbmlsKSkpOwogCiAgICAgLy8gQ29k
ZSBwYXRocyBzaW1pbGFyIHRvIHRoZSBvbmVzIHVzZWQgZm9yIFVSTHMgZm91bmQgaW4gd2VicGFn
ZXMgb3IgSFRUUCByZXNwb25zZXMuCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb21c
eEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcobGl0ZXJhbFVS
TCgiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIpKSk7CkBAIC0xNzUs
MzEgKzE3NSwzMSBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKICAgICBFWFBFQ1Rf
U1RSRVEoImh0dHA6Ly9zaXRlLmNvbSVFMyU4MCU4MG90aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJs
ZVN0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb20lRTMlODAlODBvdGhlcnNpdGUub3Jn
IikpKTsKIAogICAgIC8vIFNlcGFyYXRlIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBqdXN0IGEg
aG9zdCBuYW1lIG9uIGl0cyBvd24uCi0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbSBvdGhlcnNp
dGUub3JnIiwgW1dlYkNvcmU6OmVuY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEUzXHg4MFx4ODBv
dGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb21c
eEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhvc3ROYW1lKEAic2l0
ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVD
VF9TVFJFUSgic2l0ZS5jb20gb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmVuY29kZUhvc3ROYW1lKEAi
c2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVY
UEVDVF9TVFJFUSgic2l0ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgW1dURjo6ZGVj
b2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3Ry
aW5nXSk7CiB9CiAKIFRFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX0ZpbGUpCiB7Ci0gICAgRVhQRUNU
X1NUUkVRKCJmaWxlOi8vLyVFMiU5OCU4MyIsIFtbV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0
cmluZyhAImZpbGU6Ly8v4piDIiwgbmlsKSBhYnNvbHV0ZVN0cmluZ10gVVRGOFN0cmluZ10pOwor
ICAgIEVYUEVDVF9TVFJFUSgiZmlsZTovLy8lRTIlOTglODMiLCBbW1dURjo6VVJMV2l0aFVzZXJU
eXBlZFN0cmluZyhAImZpbGU6Ly8v4piDIiwgbmlsKSBhYnNvbHV0ZVN0cmluZ10gVVRGOFN0cmlu
Z10pOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19QYXJzaW5nRXJyb3IpCiB7CiAgICAg
Ly8gRXhwZWN0IElETiBmYWlsdXJlLgotICAgIE5TVVJMICp1cmwgPSBXZWJDb3JlOjpVUkxXaXRo
VXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL++jvy5jb20iLCBuaWwpOworICAgIE5TVVJMICp1cmwg
PSBXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8v76O/LmNvbSIsIG5pbCk7CiAg
ICAgRVhQRUNUX1RSVUUodXJsID09IG5pbCk7CiAKLSAgICBOU1N0cmluZyAqZW5jb2RlZEhvc3RO
YW1lID0gV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJodHRwOi8v76O/LmNvbSIpOworICAgIE5T
U3RyaW5nICplbmNvZGVkSG9zdE5hbWUgPSBXVEY6OmVuY29kZUhvc3ROYW1lKEAiaHR0cDovL++j
vy5jb20iKTsKICAgICBFWFBFQ1RfVFJVRShlbmNvZGVkSG9zdE5hbWUgPT0gbmlsKTsKIH0KIAog
VEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfTmlsKQogewotICAgIE5TVVJMICp1cmwxID0gV2ViQ29y
ZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhuaWwsIG5pbCk7CisgICAgTlNVUkwgKnVybDEgPSBX
VEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcobmlsLCBuaWwpOwogICAgIEVYUEVDVF9UUlVFKHVy
bDEgPT0gbmlsKTsKIAotICAgIE5TVVJMICp1cmwyID0gV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBl
ZFN0cmluZ0RlcHJlY2F0ZWQobmlsLCBuaWwpOworICAgIE5TVVJMICp1cmwyID0gV1RGOjpVUkxX
aXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChuaWwsIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUo
dXJsMiA9PSBuaWwpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbQppbmRleCA1
MDVhZjM1N2U1ZDEwMWQxNzZiNTIzZDE1NWE2Mjk0YmJlOGY3ZmRmLi45MGQ0NjEwYzc0MTA5OWZh
ZTRhNjBiZTk3NzY1Y2MzZDdiMGVjZDQ0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcu
bW0KQEAgLTMwLDkgKzMwLDkgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNp
bXBvcnQgIlRlc3QuaCIKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIHN0YXRpYyBib29sIGlz
RG9uZTsKIHN0YXRpYyBpbnQgcHJvdmlzaW9uYWxMb2FkQ291bnQ7CkBAIC0xMTAsNyArMTEwLDcg
QEAgVEVTVChXS1dlYlZpZXcsIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nRnJvbVByb3Zpc2lvbmFs
TG9hZEVycm9yQmFja1RvQmFjaykKICAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgICAgICBjaGFyIGxpdGVyYWxbXSA9ICJodHRwczov
L3d3dy5leGFtcGxlLmNvbTw+LyI7Ci0gICAgICAgIE5TVVJMKiB0YXJnZXRVUkwgPSBXZWJDb3Jl
OjpVUkxXaXRoRGF0YShbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bGl0ZXJhbCBsZW5ndGg6c3RybGVu
KGxpdGVyYWwpXSwgbmlsKTsKKyAgICAgICAgTlNVUkwqIHRhcmdldFVSTCA9IFdURjo6VVJMV2l0
aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFs
KV0sIG5pbCk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6dGFyZ2V0VVJMXV07CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGFyZ2V0VVJMXV07CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEludmFsaWRVUkxSZXF1ZXN0
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVS
TFJlcXVlc3QubW0KaW5kZXggYWM5OGMxOTY0NDBhYjdiNTUwODRjOTVkNzhkMDlmZTdmYzc5N2Uz
Yy4uZWFhNTVjYWM2N2Y4ZTg0NDE0MzI3ZDRkYWUzMjYwOTY0NWQ5NWJhYyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVl
c3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Mb2FkSW52
YWxpZFVSTFJlcXVlc3QubW0KQEAgLTI4LDEwICsyOCwxMCBAQAogI2lmIFdLX0FQSV9FTkFCTEVE
CiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvblByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBzdGF0aWMgYm9vbCBkaWRGaW5p
c2hUZXN0Owogc3RhdGljIGJvb2wgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZDsKQEAgLTM5LDcgKzM5
LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgbGl0ZXJhbFtdID0gImh0dHBzOi8vd3d3LmV4YW1wbGUu
Y29tPD4vIjsKIAogc3RhdGljIE5TVVJMICpsaXRlcmFsVVJMKGNvbnN0IGNoYXIqIGxpdGVyYWwp
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRl
czpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBuaWwpOworICAgIHJldHVybiBXVEY6
OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4o
bGl0ZXJhbCldLCBuaWwpOwogfQogCiBAaW50ZXJmYWNlIExvYWRJbnZhbGlkVVJMTmF2aWdhdGlv
bkFjdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5h
Z2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2ll
TWFuYWdlci5jcHAKaW5kZXggYjA1MTQ1MjRmNzI1OTFmNmNiNTAyOTExMDMxYjdiZmE4YTNhZmEw
Ny4uMWJhYWU5NWFjMDYyMzFmYmZiMjlhOGJhMTQxODc3NzJiNWFmM2FkMSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1h
bmFnZXIuY3BwCkBAIC0yMiw4ICsyMiw4IEBACiAKICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVy
LmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQ
dHJTb3VwLmg+CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9H
VW5pcXVlUHRyU291cC5oPgogCiBzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRVUkxS
ZXF1ZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZEludmFsaWRVUkxS
ZXF1ZXN0Lm1tCmluZGV4IDhkNTRjYTZlMTllMGQ2OTk2MmE1ZjE1MzIzNTQyYWVmMjAzNTc1ZDEu
Ljg2YjdiM2M0YTk5ODYzMGQyODVlNTE3OTVmYzhhZDY5ODFjZmM5MjcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0K
QEAgLTI2LDEwICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29j
b2EvTlNVUkxFeHRyYXMuaD4KIAogc3RhdGljIGJvb2wgZGlkRmluaXNoVGVzdDsKIHN0YXRpYyBi
b29sIGRpZEZhaWxQcm92aXNpb25hbExvYWQ7CkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBib29s
IGRpZEZhaWxQcm92aXNpb25hbExvYWQ7CiAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIFdlYktp
dEVycm9yQ2Fubm90U2hvd1VSTCk7CiAKICAgICBzdGF0aWMgY2hhciBsaXRlcmFsW10gPSAiaHR0
cHM6Ly93d3cuZXhhbXBsZS5jb20kLyI7Ci0gICAgTlNVUkwgKmZhaWxlZFVSTCA9IFdlYkNvcmU6
OlVSTFdpdGhEYXRhKFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4o
bGl0ZXJhbCldLCBuaWwpOworICAgIE5TVVJMICpmYWlsZWRVUkwgPSBXVEY6OlVSTFdpdGhEYXRh
KFtOU0RhdGEgZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBu
aWwpOwogICAgIEVYUEVDVF9UUlVFKFtlcnJvci51c2VySW5mb1tAIk5TRXJyb3JGYWlsaW5nVVJM
S2V5Il0gaXNFcXVhbDpmYWlsZWRVUkxdKTsKIAogICAgIGRpZEZhaWxQcm92aXNpb25hbExvYWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5
R2VuZXJhdG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvU1NMS2V5R2VuZXJh
dG9yLm1tCmluZGV4IGRkZThjN2QwMWRhNjc4MDQxOTVjN2Y0MWUyOTExYTc4OWM3MDJjNTIuLmFj
MWJmN2RiNmM5OGIwMmQyNTUyNjU5NzJiYzI5OWRhMGM5ODdlZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1NTTEtleUdlbmVyYXRvci5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW0KQEAgLTI5LDkgKzI5LDkg
QEAKICNpbXBvcnQgPFNlY3VyaXR5L1NlY0FzbjFUZW1wbGF0ZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TU0xLZXlHZW5lcmF0b3Iu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgog
I2ltcG9ydCA8d3RmL1Njb3BlLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYv
c3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KIApA
QCAtNjksNyArNjksNyBAQCBjb25zdCBTZWNBc24xVGVtcGxhdGUgc2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlVGVtcGxhdGVbXSB7CiAgICAgeyAwLCAwLCAwLCAwIH0KIH07CiAKLWNvbnN0IFdl
YkNvcmU6OlVSTCB1cmwgPSBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksICJodHRwOi8vd3d3
LndlYmtpdC5vcmcvIik7Citjb25zdCBVUkwgdXJsID0gVVJMKFVSTCgpLCAiaHR0cDovL3d3dy53
ZWJraXQub3JnLyIpOwogCiBjbGFzcyBTU0xLZXlHZW5lcmF0b3JUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4v
UGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZv
cm1VdGlsaXRpZXNXaW4uY3BwCmluZGV4IDhmNzU1YzMyYzhjMmUyZTBkMzc5ZDNlNWYwN2NjNmI5
YmRjYzE4NjUuLjA1NmJmZjc3ODI5NTI4YjEyOTBmMTJlMzlhYjIzOGIwZjY4NjhiODYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFNobHdhcGkuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNTIsNyArNTIsNyBAQCBXS1N0cmluZ1JlZiBjcmVh
dGVJbmplY3RlZEJ1bmRsZVBhdGgoKQogV0tVUkxSZWYgY3JlYXRlVVJMRm9yUmVzb3VyY2UoY29u
c3QgY2hhciogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGV4dGVuc2lvbikKIHsKICAgICBTdHJpbmcg
ZmlsZW5hbWUgPSBTdHJpbmc6OmZvcm1hdCgiLi5cXC4uXFwuLlxcVG9vbHNcXFRlc3RXZWJLaXRB
UElcXFRlc3RzXFxXZWJLaXRcXCVzLiVzIiwgcmVzb3VyY2UsIGV4dGVuc2lvbik7Ci0gICAgYXV0
byB1cmwgPSBXZWJDb3JlOjpVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBm
aWxlbmFtZSkpOworICAgIGF1dG8gdXJsID0gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRo
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJl
Y3RvcnkoKSwgZmlsZW5hbWUpKTsKICAgICByZXR1cm4gV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJp
bmcodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9s
bGRiL2xsZGJfd2Via2l0LnB5IGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdC5weQppbmRleCBmNWJi
YzIxNzFjNGU2YjczOTgwNWQ5NTQ2OGM3MzNiYzY1YjRkNDVmLi4yYzU1NDc3M2FjYzQ4NmI5YWQ5
NTIwMDNiNzRkOWEwNWViZmUzYmI4IDEwMDY0NAotLS0gYS9Ub29scy9sbGRiL2xsZGJfd2Via2l0
LnB5CisrKyBiL1Rvb2xzL2xsZGIvbGxkYl93ZWJraXQucHkKQEAgLTQ2LDcgKzQ2LDcgQEAgZGVm
IF9fbGxkYl9pbml0X21vZHVsZShkZWJ1Z2dlciwgZGljdCk6CiAgICAgZGVidWdnZXIuSGFuZGxl
Q29tbWFuZCgndHlwZSBzdW1tYXJ5IGFkZCAtLWV4cGFuZCAtRiBsbGRiX3dlYmtpdC5XVEZNZWRp
YVRpbWVfU3VtbWFyeVByb3ZpZGVyIFdURjo6TWVkaWFUaW1lJykKICAgICBkZWJ1Z2dlci5IYW5k
bGVDb21tYW5kKCd0eXBlIHN1bW1hcnkgYWRkIC0tZXhwYW5kIC1GIGxsZGJfd2Via2l0LldURk9w
dGlvblNldF9TdW1tYXJ5UHJvdmlkZXIgLXggIl5XVEY6Ok9wdGlvblNldDwuKz4kIicpCiAKLSAg
ICBkZWJ1Z2dlci5IYW5kbGVDb21tYW5kKCd0eXBlIHN1bW1hcnkgYWRkIC1GIGxsZGJfd2Via2l0
LldlYkNvcmVVUkxfU3VtbWFyeVByb3ZpZGVyIFdlYkNvcmU6OlVSTCcpCisgICAgZGVidWdnZXIu
SGFuZGxlQ29tbWFuZCgndHlwZSBzdW1tYXJ5IGFkZCAtRiBsbGRiX3dlYmtpdC5XVEZVUkxfU3Vt
bWFyeVByb3ZpZGVyIFdURjo6VVJMJykKICAgICBkZWJ1Z2dlci5IYW5kbGVDb21tYW5kKCd0eXBl
IHN1bW1hcnkgYWRkIC1GIGxsZGJfd2Via2l0LldlYkNvcmVDb2xvcl9TdW1tYXJ5UHJvdmlkZXIg
V2ViQ29yZTo6Q29sb3InKQogCiAgICAgZGVidWdnZXIuSGFuZGxlQ29tbWFuZCgndHlwZSBzdW1t
YXJ5IGFkZCAtRiBsbGRiX3dlYmtpdC5XZWJDb3JlTGF5b3V0VW5pdF9TdW1tYXJ5UHJvdmlkZXIg
V2ViQ29yZTo6TGF5b3V0VW5pdCcpCkBAIC0xMzgsOCArMTM4LDggQEAgZGVmIFdlYkNvcmVDb2xv
cl9TdW1tYXJ5UHJvdmlkZXIodmFsb2JqLCBkaWN0KToKICAgICByZXR1cm4gInsgJXMgfSIgJSBw
cm92aWRlci50b19zdHJpbmcoKQogCiAKLWRlZiBXZWJDb3JlVVJMX1N1bW1hcnlQcm92aWRlcih2
YWxvYmosIGRpY3QpOgotICAgIHByb3ZpZGVyID0gV2ViQ29yZVVSTFByb3ZpZGVyKHZhbG9iaiwg
ZGljdCkKK2RlZiBXVEZVUkxfU3VtbWFyeVByb3ZpZGVyKHZhbG9iaiwgZGljdCk6CisgICAgcHJv
dmlkZXIgPSBXVEZVUkxQcm92aWRlcih2YWxvYmosIGRpY3QpCiAgICAgcmV0dXJuICJ7ICVzIH0i
ICUgcHJvdmlkZXIudG9fc3RyaW5nKCkKIAogCkBAIC02MDAsOCArNjAwLDggQEAgY2xhc3MgV2Vi
Q29yZUZsb2F0UmVjdFByb3ZpZGVyOgogICAgICAgICByZXR1cm4gV2ViQ29yZUZsb2F0U2l6ZVBy
b3ZpZGVyKHNlbGYudmFsb2JqLkdldENoaWxkTWVtYmVyV2l0aE5hbWUoJ21fc2l6ZScpLCBkaWN0
KS5nZXRfaGVpZ2h0KCkKIAogCi1jbGFzcyBXZWJDb3JlVVJMUHJvdmlkZXI6Ci0gICAgIlByaW50
IGEgV2ViQ29yZTo6VVJMIgorY2xhc3MgV1RGVVJMUHJvdmlkZXI6CisgICAgIlByaW50IGEgV1RG
OjpVUkwiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbG9iaiwgZGljdCk6CiAgICAgICAgIHNl
bGYudmFsb2JqID0gdmFsb2JqCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356272</attachid>
            <date>2018-11-30 17:35:17 -0800</date>
            <delta_ts>2018-11-30 17:35:17 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-190234-20181130173516.patch</filename>
            <type>text/plain</type>
            <size>1314248</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwZTZkMzI3YzcxODJlYThkOTYyNjhm
YzJhZjQ3M2RkMjk1MjI1MWIuLjRhZjI1MmJhNTg5NmVlYTYxMjdkMGUzMTZjOTI4OTI3MGY1YjQy
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTgtMTEtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUg
dG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTAyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAg
ICAgICAgKiB3dGYvVVJMLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAuCisgICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2xJcyk6CisgICAgICAgICogd3Rm
L1VSTC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmguCisgICAg
ICAgICogd3RmL1VSTEhhc2guaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTEhhc2guaC4KKyAgICAgICAgKFdURjo6VVJMSGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6
OlVSTEhhc2g6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvVVJMUGFyc2VyLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAuCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6aXNJblVzZXJJbmZvRW5jb2RlU2V0KToKKyAgICAgICAgKFdURjo6VVJMUGFy
c2VyOjpwYXJzZUF1dGhvcml0eSk6CisgICAgICAgICogd3RmL1VSTFBhcnNlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmguCisgICAgICAgIChXVEY6
OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpyZXN1bHQp
OgorICAgICAgICAqIHd0Zi9jZi9DRlVSTEV4dHJhcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAuCisgICAgICAgICogd3RmL2NmL0NG
VVJMRXh0cmFzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVS
TEV4dHJhcy5oLgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAuCisgICAgICAgICogd3RmL2NvY29hL05T
VVJMRXh0cmFzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaC4KKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRy
YXMubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0uCisgICAgICAgIChXVEY6OmlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIp
OgorICAgICAgICAoV1RGOjppc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdU
Rjo6aXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjppc0xv
b2thbGlrZUNoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OndoaXRlTGlzdElETlNjcmlwdCk6Cisg
ICAgICAgIChXVEY6OnJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKToKKyAgICAgICAgKFdURjo6
YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KToKKyAgICAgICAgKFdURjo6aXNTZWNv
bmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyk6CisgICAgICAgIChXVEY6OmlzUnVz
c2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjphbGxDaGFyYWN0ZXJzQWxs
b3dlZEJ5VExEUnVsZXMpOgorICAgICAgICAoV1RGOjptYXBIb3N0TmFtZVdpdGhSYW5nZSk6Cisg
ICAgICAgIChXVEY6Omhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChX
VEY6Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6CisgICAgICAgIChXVEY6OmRlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlKToKKyAgICAgICAgKFdURjo6ZW5jb2RlSG9zdE5hbWVXaXRoUmFu
Z2UpOgorICAgICAgICAoV1RGOjpkZWNvZGVIb3N0TmFtZSk6CisgICAgICAgIChXVEY6OmVuY29k
ZUhvc3ROYW1lKToKKyAgICAgICAgKFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkTWFwcGluZyk6
CisgICAgICAgIChXVEY6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVuY29kaW5nKToKKyAgICAgICAg
KFdURjo6Y29sbGVjdFJhbmdlc1RoYXROZWVkRGVjb2RpbmcpOgorICAgICAgICAoV1RGOjphcHBs
eUhvc3ROYW1lRnVuY3Rpb25Ub01haWxUb1VSTFN0cmluZyk6CisgICAgICAgIChXVEY6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKToKKyAgICAgICAgKFdURjo6bWFwSG9zdE5hbWVz
KToKKyAgICAgICAgKFdURjo6c3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UpOgorICAgICAgICAo
V1RGOjpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOgorICAgICAg
ICAoV1RGOjpVUkxCeVJlbW92aW5nUmVzb3VyY2VTcGVjaWZpZXIpOgorICAgICAgICAoV1RGOjpV
UkxXaXRoRGF0YSk6CisgICAgICAgIChXVEY6OmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKToKKyAg
ICAgICAgKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyk6CisgICAgICAgIChXVEY6OlVSTFdp
dGhVc2VyVHlwZWRTdHJpbmdEZXByZWNhdGVkKToKKyAgICAgICAgKFdURjo6aGFzUXVlc3Rpb25N
YXJrT25seVF1ZXJ5U3RyaW5nKToKKyAgICAgICAgKFdURjo6ZGF0YUZvclVSTENvbXBvbmVudFR5
cGUpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2VxdWVudENo
YXJhY3Rlcik6CisgICAgICAgIChXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6CisgICAgICAg
IChXVEY6Om9yaWdpbmFsVVJMRGF0YSk6CisgICAgICAgIChXVEY6OmNyZWF0ZVN0cmluZ1dpdGhF
c2NhcGVkVW5zYWZlQ2hhcmFjdGVycyk6CisgICAgICAgIChXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KToKKyAgICAgICAgKFdURjo6aXNVc2VyVmlzaWJsZVVSTCk6CisgICAgICAgIChXVEY6OnJhbmdl
T2ZVUkxTY2hlbWUpOgorICAgICAgICAoV1RGOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6CisgICAg
ICAgICogd3RmL2NvY29hL1VSTENvY29hLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VSTE1hYy5tbS4KKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOgorICAgICAg
ICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0KToKKyAgICAgICAgKiB3dGYvZ2xpYi9HVW5p
cXVlUHRyU291cC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0dVbmlxdWVQdHJTb3VwLmguCisgICAgICAgICogd3RmL2dsaWIvVVJMU291cC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwLgor
CiAyMDE4LTExLTMwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vdmUgVVNFX0NGTkVUV09SS19JR05PUkVfSFNUUyB0byBpdHMgcHJvcGVyIHBsYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMWU3ZmQ2YTk2NTMwOTc0N2E5MmUxNTU3ZGMzODRlNzEzYzVmOGY3OS4uODU3
NzkxZTVmZjM2NzBmMzczMTM5NGFmNmYwN2MwZGY5NGRmODJjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU1NyBAQAorMjAxOC0xMS0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgVVJMIGlzIGEgbG93
LWxldmVsIGNvbmNlcHQgdGhhdCBkb2VzIG5vdCBkZXBlbmQgb24gb3RoZXIgY2xhc3NlcyBpbiBX
ZWJDb3JlLgorICAgICAgICBXZSBhcmUgc3RhcnRpbmcgdG8gdXNlIFVSTHMgaW4gSmF2YVNjcmlw
dENvcmUgZm9yIG1vZHVsZXMuCisgICAgICAgIEkgbmVlZCBVUkwgYW5kIFVSTFBhcnNlciBpbiBh
IHBsYWNlIHdpdGggZmV3ZXIgZGVwZW5kZW5jaWVzIGZvciByZGFyOi8vcHJvYmxlbS80NDExOTY5
NgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmg6CisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHA6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL25hdmlnYXRv
cmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oOgorICAgICAgICAqIE1vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL3Bs
dWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Lmg6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4u
Y21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFj
ZU5hbWUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2Uu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlr
ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURP
TU9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGguY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEdldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMu
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRp
b25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHA6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbkltcGxlbWVudGVkQXMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQ
aW5nTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6YXBwbHlCbG9j
a2VkU3RhdHVzVG9SZXF1ZXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoK
KyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29u
dGVudHMuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHRIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6
SGFzaFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0Pjo6Y29uc3RydWN0RGVsZXRlZFZh
bHVlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOgorICAgICAgICAq
IGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpz
ZXREYXRhRnJvbUl0ZW1MaXN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cHJvY2Vzc0h0dHBFcXVpdik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29tcGxl
dGVVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZVRlbXBsYXRl
RG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnVybEZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc0phdmFTY3JpcHRVUkxBdHRyaWJ1dGUg
Y29uc3QpOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VyQ29udGV4dEZvckVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmJhc2VVUkkgY29uc3QpOgorICAgICAgICAq
IGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBk
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRl
eHQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnBhc3RlYm9hcmRXcml0ZXJVUkwpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6
CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFsdWUpOgor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVzZXJW
aXNpYmxlU3RyaW5nKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2
ZSk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpwbGFpblRleHRGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21NYXJrdXApOgorICAgICAgICAq
IGVkaXRpbmcvbWFya3VwLmg6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3Bw
OgorICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmg6CisgICAgICAgICogZmlsZWFw
aS9CbG9iLmg6CisgICAgICAgICogZmlsZWFwaS9CbG9iVVJMLmNwcDoKKyAgICAgICAgKiBmaWxl
YXBpL0Jsb2JVUkwuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKiBmaWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuaDoKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmg6CisgICAgICAgICog
aGlzdG9yeS9IaXN0b3J5SXRlbS5oOgorICAgICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVVSTDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6YXJjaGl2ZVJlc291cmNlVVJMKToKKyAgICAgICAg
KiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
cmFtZUVsZW1lbnRCYXNlOjppc1VSTEFsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZyYW1lRWxlbWVudEJhc2U6Om9wZW5VUkwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZy
YW1lRWxlbWVudEJhc2U6OnNldExvY2F0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFVSTD46
OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6VVJMPjo6dG9T
dHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjphbGxvd2VkVG9M
b2FkRnJhbWVVUkwpOgorICAgICAgICAqIGh0bWwvSW1hZ2VCaXRtYXAuaDoKKyAgICAgICAgKiBo
dG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1h
bmFnZXIuY3BwOgorICAgICAgICAqIGh0bWwvUHVibGljVVJMTWFuYWdlci5oOgorICAgICAgICAq
IGh0bWwvVVJMSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1sL1VSTFJlZ2lzdHJ5Lmg6Cisg
ICAgICAgICogaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJM
U2VhcmNoUGFyYW1zOjpVUkxTZWFyY2hQYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6VVJMU2Vh
cmNoUGFyYW1zOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxTZWFyY2hQ
YXJhbXM6OnVwZGF0ZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxTZWFyY2hQYXJhbXM6OnVw
ZGF0ZUZyb21Bc3NvY2lhdGVkVVJMKToKKyAgICAgICAgKiBodG1sL1VSTFV0aWxzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpVUkxVdGlsczxUPjo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpV
UkxVdGlsczxUPjo6c2V0UG9ydCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2Vt
aWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFTY3JpcHRVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyU2NyaXB0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
WFNTQXVkaXRvcjo6ZmlsdGVyT2JqZWN0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVk
aXRvcjo6ZmlsdGVyUGFyYW1Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpm
aWx0ZXJFbWJlZFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlckZv
cm1Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJJbnB1dFRva2Vu
KToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlckJ1dHRvblRva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlc0lmSW5q
ZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3Vy
Y2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaDoKKyAgICAgICAgKiBodG1s
L3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
SG9zdDo6b3BlbkluTmV3VGFiKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50Lmg6CisgICAg
ICAgICogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29va2llSmFyLmg6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5oOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmg6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlTG9hZEVtcHR5KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXJ2ZXJSZWRpcmVj
dFNvdXJjZUZvckhpc3RvcnkgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5oOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0
Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6Y3VycmVu
dEl0ZW1TaG91bGRCZVJlcGxhY2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlD
b250cm9sbGVyOjppbml0aWFsaXplSXRlbSk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvTG9hZFRpbWluZy5oOgorICAgICAgICAqIGxvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1peGVkQ29udGVudENoZWNrZXI6OmNoZWNrRm9ybUZvck1peGVk
Q29udGVudCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24gY29uc3Qp
OgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmg6CisgICAgICAgICogbG9h
ZGVyL1BpbmdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmg6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9i
c2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZVRpbWluZy5oOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1l
KToKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
U3Vic3RpdHV0ZURhdGEuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9pY29uL0lj
b25Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tOgor
ICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9DbGllbnRPcmlnaW4uaDoK
KyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aXNJbnNlY3VyZVNjcmlw
dEFjY2Vzcyk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2Uv
SGlzdG9yeS5oOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYXRpb246OnVybCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cmVs
b2FkKToKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmg6CisgICAgICAgICogcGFnZS9QYWdlLmg6
CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvUGVyZm9y
bWFuY2UuaDoKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwOgor
ICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5IYXNoLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6c2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJv
bU93bmVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFn
ZS9TZXR0aW5nc0Jhc2UuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YS5oOgorICAgICAgICAq
IHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50UHJvdmlk
ZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6CisgICAgICAg
ICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaDoKKyAgICAgICAgKiBwYWdlL1VzZXJTY3Jp
cHQuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAgICogcGFnZS9W
aXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Lmg6
CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5o
OgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnBvcnRNYXRjaGVz
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Uu
aDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNw
cDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0Lmg6
CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVj
dGl2ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmg6CisgICAgICAgICogcGxh
dGZvcm0vQ29va2llLmg6CisgICAgICAgICogcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmg6CisgICAgICAgICogcGxhdGZv
cm0vTGlua0ljb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNhbkV4cG9zZVVSTFRvRE9NV2hlblBhc3RlYm9hcmRD
b250YWluc0ZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFz
dGVib2FyZFdyaXRlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZFdyaXRl
ckRhdGE6OnNldFVSTERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZFdyaXRlckRh
dGE6OnNldFVSTCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRl
ckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZv
cm0vU1NMS2V5R2VuZXJhdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OmlzQnVpbHRpblNjaGVtZSk6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
U2hhcmVkU3RyaW5nSGFzaC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFz
aC5oOgorICAgICAgICAqIHBsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9Vc2VyQWdlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NTTEtleUdlbmVyYXRvckdMaWIuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oLgorICAgICAgICAoV2ViQ29yZTo6
Z2V0U3VwcG9ydGVkS2V5U2l6ZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdM
aWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2Jz
ZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Vi
S2l0TWVkaWFTcmNTZXRVcmkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09W
VFRDdWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHREaXJlY3QyRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9RdWlja0xvb2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0Rh
dGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgICogcGxh
dGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzZXRNZXRhZGF0YVVSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QdWJs
aWNTdWZmaXhNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVIb3N0TmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXJtZW5pYW5Mb29rYWxp
a2VDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBcm1lbmlhblNjcmlw
dENoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0FTQ0lJRGlnaXRPclZh
bGlkSG9zdENoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0xvb2thbGlr
ZUNoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp3aGl0ZUxpc3RJRE5TY3Jp
cHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmVhZElETlNjcmlwdFdoaXRlTGlzdEZp
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0
V2hpdGVMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzU2Vjb25kTGV2ZWxEb21h
aW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNS
dXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjph
bGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6bWFwSG9zdE5hbWVXaXRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aG9z
dE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Omhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjplbmNvZGVIb3N0TmFtZVdpdGhSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpk
ZWNvZGVIb3N0TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplbmNvZGVIb3N0TmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBw
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RSYW5nZXNUaGF0TmVlZEVu
Y29kaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RSYW5nZXNUaGF0TmVl
ZERlY29kaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5SG9zdE5hbWVGdW5j
dGlvblRvTWFpbFRvVVJMU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5
SG9zdE5hbWVGdW5jdGlvblRvVVJMU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om1hcEhvc3ROYW1lcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdCeVRyaW1t
aW5nV2hpdGVzcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxCeVRydW5jYXRp
bmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlVSTFdpdGhEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRhdGFXaXRo
VXNlclR5cGVkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFdpdGhVc2Vy
VHlwZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBl
ZFN0cmluZ0RlcHJlY2F0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aGFzUXVlc3Rp
b25NYXJrT25seVF1ZXJ5U3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRhdGFG
b3JVUkxDb21wb25lbnRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTEJ5UmVt
b3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpvcmlnaW5hbFVSTERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
U3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omlz
VXNlclZpc2libGVVUkwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmFuZ2VPZlVSTFNj
aGVtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpsb29rc0xpa2VBYnNvbHV0ZVVSTCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9D
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3Jl
ZGVudGlhbFN0b3JhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUHJveHlTZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRpcmVjdGVkUmVxdWVzdCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybERhdGFiYXNlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpjb29raWVzRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVK
YXJDdXJsRGF0YWJhc2U6OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphckN1cmxEYXRhYmFzZTo6c2V0Q29va2llc0Zyb21IVFRQUmVzcG9uc2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyQ3VybERhdGFiYXNlOjpjb29raWVzRm9y
RE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckN1cmxEYXRhYmFzZTo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llSmFyQ3VybERhdGFiYXNlOjpjb29raWVzRW5hYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb29raWVKYXJDdXJsRGF0YWJhc2U6OmdldFJhd0Nvb2tpZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29va2llSmFyQ3VybERhdGFiYXNlOjpkZWxldGVDb29raWUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyQ3VybERhdGFiYXNlOjpnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJDdXJsRGF0YWJhc2U6
OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llSmFyQ3VybERhdGFiYXNlOjpkZWxldGVBbGxDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb2tpZUphckN1cmxEYXRhYmFzZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc3BvbnNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9CU3Ry
aW5nLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQlN0cmluZy5oOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWFya3VwVG9DRkhUTUwpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICogcGx1Z2lucy9Q
bHVnaW5EYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0lt
YWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjpzb3VyY2VV
UkkgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZUNhY2hlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcp
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogdGVz
dGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgICogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5o
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlcklu
c3BlY3RvclByb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleS5oOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgor
ICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHhtbC9Y
TUxIdHRwUmVxdWVzdC5oOgorCiAyMDE4LTExLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgImF1dG8gZmlsbCIgd2l0aCAiQXV0b0Zp
bGwiIGluIHNvbWUgbG9jYWxpemFibGUgc3RyaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4YjBiYTExNGRkMjBk
MzFiOTgwMTczNzdjMmNiMGU5MGQxNDFmZDc0Li5iNWJlNzNhMjRiZTkxM2VjM2JiYTRkMjQxMDRh
YWRhNWRmZjQzZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzNCBAQAorMjAxOC0xMS0zMCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUg
VVJMIGZyb20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVz
c2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29h
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1h
bmFnZXI6OnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdE
b3dubG9hZDo6cHVibGlzaFByb2dyZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpw
dWJsaXNoUHJvZ3Jlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29y
a0Jsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JS
ZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxv
YlJlZ2lzdHJ5OjpibG9iU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0
cnk6OmZpbGVzSW5CbG9iKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpzZXRDb250ZW50RXh0
ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6
dXJsIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnB1Ymxpc2hEb3dubG9hZFByb2dyZXNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxvZ0Js
b2NrZWRDb29raWVJbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmxvZ0Nvb2tpZUluZm9y
bWF0aW9uSW50ZXJuYWwpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdp
bmU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdGF0aXN0aWNzOjpyZWNvcmRSZXRyaWV2
ZWRDYWNoZWRFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RhdGlzdGlj
czo6cmVjb3JkUmV2YWxpZGF0aW9uU3VjY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZUluZm86OmZpcnN0UGFydHlGb3JDb29raWVzIGNvbnN0
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6UmVxdWVzdDo6b3BlcmF0b3Ig
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhcHR1cmU6OlJlc3BvbnNlOjpvcGVyYXRvciBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6OkVycm9yOjpvcGVyYXRvciBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYXB0dXJlOjpNYW5hZ2VyOjpmaW5kQmVzdEZ1enp5TWF0Y2gpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FwdHVyZTo6TWFuYWdlcjo6ZnV6enlNYXRjaFVSTHMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FwdHVyZTo6TWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6OlJlc291cmNlOjp1cmwp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6UmVzb3VyY2U6OnF1ZXJ5UGFyYW1l
dGVycyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJl
c291cmNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRl
bGVnYXRlIFVSTFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW06
CisgICAgICAgIChXZWJLaXQ6Om9wZW5DRlVSTFJlZik6CisgICAgICAgIChXZWJLaXQ6OnJlcGxh
Y2VkTlNXb3Jrc3BhY2VfbGF1bmNoQXBwbGljYXRpb25BdFVSTF9vcHRpb25zX2NvbmZpZ3VyYXRp
b25fZXJyb3IpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVVJMLmg6CisgICAgICAgIChBUEk6
OlVSTDo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6VVJMOjplcXVhbHMpOgorICAgICAgICAoQVBJ
OjpVUkw6OlVSTCk6CisgICAgICAgIChBUEk6OlVSTDo6dXJsIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6VVJMOjpwYXJzZVVSTElmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oOgorICAgICAgICAoQVBJOjpVc2VyQ29udGVudFVS
TFBhdHRlcm46Om1hdGNoZXNVUkwgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1VS
TFJlcXVlc3QuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbToKKyAgICAgICAgKFdLVVJMQ3Jl
YXRlV2l0aENGVVJMKToKKyAgICAgICAgKFdLVVJMQ29weUNGVVJMKToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9n
bGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2
ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hp
dmVSZXNvdXJjZSk6CisgICAgICAgICogU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmg6
CisgICAgICAgICogU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW06CisgICAgICAgICgtW05T
VVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKToKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25TdGF0ZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9jdW1lbnQgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViRXJyb3JzLmg6CisgICAgICAgICogU2hh
cmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvY2YvQXJndW1l
bnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZSk6CisgICAgICAgIChJUEM6OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwOgorICAgICAgICAq
IFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmFwcGVu
ZFJlZGlyZWN0aW9uVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24u
aDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6dGFrZVJlZGlyZWN0Q2hhaW4pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9u
Q2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorICAgICAgICAoQVBJ
OjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24pOgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAg
ICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpyZXNvbHZlV2ViR0xMb2FkUG9saWN5IGNvbnN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJ
Q2xpZW50OjpzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwOgorICAgICAgICAoQVBJOjpVc2VyU2NyaXB0Ojpn
ZW5lcmF0ZVVuaXF1ZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHA6CisgICAg
ICAgIChBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKGZpbGVQYXRoc0Zy
b21GaWxlVVJMcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAg
ICAgIChXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VVSUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNs
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcDoKKyAgICAg
ICAgKFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV0tQYWdlR3JvdXBB
ZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTGFzdFNlZW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVn
aXN0ZXJlZEFzU3ViRnJhbWVVbmRlcik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9y
aWdpbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAg
ICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0VG8pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRU
UENvb2tpZVN0b3JlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2Ny
aXB0Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRoU291cmNlOmluamVjdGlv
blRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmFz
c29jaWF0ZWRVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaG93U2FmZUJyb3dz
aW5nV2FybmluZzpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
aG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhUaXRsZTp3YXJuaW5nOmRldGFpbHM6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNj
aGVtZUhhbmRsZXI6Zm9yVVJMU2NoZW1lOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIHVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRp
b25NYW5pZmVzdCBpbml0V2l0aENvZGVyOl0pOgorICAgICAgICAoK1tfV0tBcHBsaWNhdGlvbk1h
bmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjptYW5pZmVzdFVSTDpkb2N1bWVudFVS
TDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1t
OgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJh
bWVPbmx5OmxlZ2FjeVdoaXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YmFzZVVSTDp1c2VyQ29udGVu
dFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2llcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAg
KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3Bs
YWluX3RleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnNob3dQYXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2Eu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRSZXF1ZXN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvbWFj
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OmRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6d2ViR0xMb2FkUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpyZXNvbHZlV2ViR0xMb2FkUG9saWN5IGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpj
b250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFBlcmZv
cm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nUmVzdWx0Q29jb2EubW06IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgu
CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6U2FmZUJyb3dzaW5nUmVzdWx0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpyZXBvcnRBbkVycm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6
bWFsd2FyZURldGFpbHNVUkwpOgorICAgICAgICAoV2ViS2l0OjpzYWZlQnJvd3NpbmdEZXRhaWxz
VGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5pbmc6OlNhZmVCcm93c2lu
Z1dhcm5pbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJv
bGxlckNvY29hLm1tOgorICAgICAgICAoLVtfV0tQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2Ug
ZmluaXNoOl0pOgorICAgICAgICAoV2ViS2l0OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6Zmlu
aXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVn
YXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKToKKyAgICAgICAg
KFdlYktpdDo6cmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzKToKKyAgICAg
ICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lv
bkZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJv
clJlY292ZXJ5QXR0ZW1wdGVyLm1tOgorICAgICAgICAoLVtXS1JlbG9hZEZyYW1lRXJyb3JSZWNv
dmVyeUF0dGVtcHRlciBhdHRlbXB0UmVjb3ZlcnldKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dL
U2FmZUJyb3dzaW5nV2FybmluZy5tbToKKyAgICAgICAgKC1bV0tTYWZlQnJvd3NpbmdXYXJuaW5n
IGluaXRXaXRoRnJhbWU6c2FmZUJyb3dzaW5nV2FybmluZzpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2hvd1NhZmVCcm93c2luZ1dhcm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
d3JpdGVUb1VSTEZvckZpbGVQcm9taXNlUHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJv
eHk6OnB1Ymxpc2hQcm9ncmVzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldFJlZGlyZWN0
Q2hhaW4pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpyZWRpcmVjdENoYWluIGNv
bnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVE
b2N1bWVudE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpz
ZXRVbnJlYWNoYWJsZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmg6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjp1cmwgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6c2V0VVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkU3RhdGU6OnByb3Zpc2lvbmFsVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkU3RhdGU6OnVucmVhY2hhYmxlVVJMIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OnNob3dTYWZlQnJvd3NpbmdXYXJu
aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6Omhhc09ubHlTZWN1cmVDb250ZW50KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL1NhZmVC
cm93c2luZ1Jlc3VsdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlci5oLgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1
bHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6dXJsIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nUmVzdWx0Ojpwcm92aWRlciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6aXNQaGlzaGluZyBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlNhZmVCcm93c2luZ1Jlc3VsdDo6aXNNYWx3YXJlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6U2FmZUJyb3dzaW5nUmVzdWx0Ojppc1Vud2FudGVkU29mdHdh
cmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdSZXN1bHQ6OmlzS25vd25U
b0JlVW5zYWZlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2FmZUJyb3dzaW5nV2Fybmlu
Zy5oOgorICAgICAgICAoV2ViS2l0OjpTYWZlQnJvd3NpbmdXYXJuaW5nOjpjcmVhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5Ojp1cmwgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZVByb3h5Ojpwcm92aXNpb25hbFVSTCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lUHJveHk6OnVucmVhY2hhYmxlVVJMIGNvbnN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRo
TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0
ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRpbnVl
TmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VVJMU2NoZW1lSGFu
ZGxlckZvclNjaGVtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnRyeVByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5h
dGVPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzaG93
U2FmZUJyb3dzaW5nV2FybmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNo
ZWV0QXNzaXN0YW50Lm1tOgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IF9jcmVh
dGVTaGVldFdpdGhFbGVtZW50QWN0aW9uczpzaG93TGlua1RpdGxlOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhVUkw6cmVjdDpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJlc2VudGVkVmlld0NvbnRyb2xsZXJGb3JQ
cmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0xlZ2FjeVBERlZpZXcubW06CisgICAgICAgICgtW1dLTGVnYWN5UERGVmlldyBhY3Rp
b25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoVVJMOnJlY3Q6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dLUERGVmlldyBhY3Rpb25T
aGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoVVJMOnJlY3Q6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06
CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgX3VwZGF0ZUxvY2F0aW9u
SW5mb10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5n
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZGVjb2RlTGVnYWN5U2Vzc2lvblN0YXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OnNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyIF9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpzaG93UGF5bWVudFVJKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZU1lcmNoYW50KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBh
Z2VMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudEZvclVSTCBjb25zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcDoKKyAgICAgICAgKFdL
QnVuZGxlRnJhbWVBbGxvd3NGb2xsb3dpbmdMaW5rKToKKyAgICAgICAgKFdLQnVuZGxlRnJhbWVD
b3B5U3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwpOgorICAgICAgICAoV0tCdW5k
bGVGcmFtZUNvcHlNSU1FVHlwZUZvclJlc291cmNlV2l0aFVSTCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tC
dW5kbGVQYWdlSGFzTG9jYWxEYXRhRm9yVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwOgorICAgICAgICAo
Y29udmVydFRvVVRGOFN0cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFn
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0
VG8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTb2NrZXRTdHJlYW06OldlYlNvY2tldFN0cmVhbSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjbGlja2Vk
TGluayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwZXJmb3JtVVJM
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0
VVJMUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Q
cm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2Vi
VmlzaWJsZVBsdWdpbkluZm8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVn
aW5JbmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNs
aWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nIGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hv
dWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5r
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmxvYWRVUkxJbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZERh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmR1bXBIaXN0b3J5Rm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRk
VXNlclN0eWxlU2hlZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpmcmFtZVVSTCBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnNlbmRQcmV3YXJtSW5mb3JtYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjphY3RpdmVQYWdlc09yaWdpbnMpOgorCiAyMDE4LTExLTMw
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgVVNF
X0NGTkVUV09SS19JR05PUkVfSFNUUyB0byBpdHMgcHJvcGVyIHBsYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCmluZGV4IDg3NzA3MjkyYzQ5Y2NkZGMzODk1MjgwMjRkYjljYjdlOWZkNGI5ZWIuLjI0ZDY2
YjhmYzkzY2M4ODk2OTY1MmUxZDMxMTc5ZDBkODY1NDM4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMTEtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFVSTCBmcm9tIFdlYkNvcmUgdG8gV1RG
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisKIDIwMTgtMTEtMjYgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gUmVkdWNlIHRo
ZSB1c2Ugb2YgV0tTSSBsaWJyYXJ5IGNhbGxzOiBDb3JlQW5pbWF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNTBlMDFhZDliMDVmMDA0MDE0MzBiNWZkZTU4YWU0N2E4MDQ1NDgz
Yy4uOWFhMzIzNmYyNDFiMDVlZDNmNWEyZTJmODQzM2EwMGVlMjkzN2M1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxOC0xMS0zMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgVVJMIGZy
b20gV2ViQ29yZSB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MDIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRE9NL0RPTUF0dHIubW06CisgICAgICAgICogRE9NL0RPTUJsb2IubW06Cisg
ICAgICAgICogRE9NL0RPTUNTU0NoYXJzZXRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NJ
bXBvcnRSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NNZWRpYVJ1bGUubW06CisgICAgICAg
ICogRE9NL0RPTUNTU1BhZ2VSdWxlLm1tOgorICAgICAgICAqIERPTS9ET01DU1NQcmltaXRpdmVW
YWx1ZS5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTUnVsZS5tbToKKyAgICAgICAgKiBET00vRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbi5tbToKKyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVSdWxlLm1t
OgorICAgICAgICAqIERPTS9ET01DU1NTdHlsZVNoZWV0Lm1tOgorICAgICAgICAqIERPTS9ET01D
U1NWYWx1ZS5tbToKKyAgICAgICAgKiBET00vRE9NQ2hhcmFjdGVyRGF0YS5tbToKKyAgICAgICAg
KiBET00vRE9NQ291bnRlci5tbToKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06CisgICAg
ICAgICogRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW06CisgICAgICAgICogRE9NL0RPTURvY3Vt
ZW50VHlwZS5tbToKKyAgICAgICAgKiBET00vRE9NRXZlbnQubW06CisgICAgICAgICogRE9NL0RP
TUZpbGUubW06CisgICAgICAgICogRE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01IVE1MQXBwbGV0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEFy
ZWFFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQlJFbGVtZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01IVE1MQmFzZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCYXNl
Rm9udEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxCb2R5RWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhU
TUxDYW52YXNFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MQ29sbGVjdGlvbi5tbToK
KyAgICAgICAgKiBET00vRE9NSFRNTERpdkVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhU
TUxEb2N1bWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEVsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGaWVs
ZFNldEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1M
RnJhbWVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1t
OgorICAgICAgICAqIERPTS9ET01IVE1MSFJFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MSGVhZEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5t
bToKKyAgICAgICAgKiBET00vRE9NSFRNTEh0bWxFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9E
T01IVE1MSUZyYW1lRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTEltYWdlRWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTElucHV0RWxlbWVudC5tbToKKyAgICAgICAgKiBE
T00vRE9NSFRNTExJRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTExhYmVsRWxlbWVu
dC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW06CisgICAgICAgICog
RE9NL0RPTUhUTUxMaW5rRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1hcEVsZW1l
bnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxNYXJxdWVlRWxlbWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTE1lZGlhRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE1ldGFF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MTW9kRWxlbWVudC5tbToKKyAgICAgICAg
KiBET00vRE9NSFRNTE9MaXN0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTE9iamVj
dEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW06Cisg
ICAgICAgICogRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01I
VE1MT3B0aW9uc0NvbGxlY3Rpb24ubW06CisgICAgICAgICogRE9NL0RPTUhUTUxQYXJhZ3JhcGhF
bGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MUGFyYW1FbGVtZW50Lm1tOgorICAgICAg
ICAqIERPTS9ET01IVE1MUXVvdGVFbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MU2Ny
aXB0RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFNlbGVjdEVsZW1lbnQubW06Cisg
ICAgICAgICogRE9NL0RPTUhUTUxTdHlsZUVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhU
TUxUYWJsZUNhcHRpb25FbGVtZW50Lm1tOgorICAgICAgICAqIERPTS9ET01IVE1MVGFibGVDZWxs
RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbToKKyAg
ICAgICAgKiBET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRN
TFRhYmxlUm93RWxlbWVudC5tbToKKyAgICAgICAgKiBET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW06CisgICAgICAg
ICogRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUhUTUxWaWRl
b0VsZW1lbnQubW06CisgICAgICAgICogRE9NL0RPTUtleWJvYXJkRXZlbnQubW06CisgICAgICAg
ICogRE9NL0RPTU1lZGlhTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9NTW91c2VFdmVudC5tbToK
KyAgICAgICAgKiBET00vRE9NTXV0YXRpb25FdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NTmFt
ZWROb2RlTWFwLm1tOgorICAgICAgICAqIERPTS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW06
CisgICAgICAgICogRE9NL0RPTVJhbmdlLm1tOgorICAgICAgICAqIERPTS9ET01TdHlsZVNoZWV0
Lm1tOgorICAgICAgICAqIERPTS9ET01UZXh0Lm1tOgorICAgICAgICAqIERPTS9ET01UZXh0RXZl
bnQubW06CisgICAgICAgICogRE9NL0RPTVRva2VuTGlzdC5tbToKKyAgICAgICAgKiBET00vRE9N
VUlFdmVudC5tbToKKyAgICAgICAgKiBET00vRE9NWFBhdGhSZXN1bHQubW06CisgICAgICAgICog
SGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKiBNaXNjL1dlYk5TVVJMRXh0cmFz
Lm1tOgorICAgICAgICAoLVtOU1VSTCBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nXSk6CisgICAgICAg
ICgtW05TVVJMIF93ZWJfVVJMQnlSZW1vdmluZ1VzZXJJbmZvXSk6CisgICAgICAgICgtW05TVVJM
IF93ZWJfZGF0YUZvclVSTENvbXBvbmVudFR5cGU6XSk6CisgICAgICAgICgtW05TVVJMIF93ZWJf
c2NoZW1lRGF0YV0pOgorICAgICAgICAoLVtOU1VSTCBfd2ViX2hvc3REYXRhXSk6CisgICAgICAg
ICogTWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW06CisgICAgICAgICogUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAqIFBsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpzZXRSZXF1ZXN0VVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06Cisg
ICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
ZyBjb25zdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQubW06CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JD
bGllbnQ6OnNob3dQYXltZW50VUkpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlk
ZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW06
CisgICAgICAgIChXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmg6CisgICAgICAgICogV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAg
ICAgICgtW1dlYkZyYW1lIF9sb2FkRGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VV
Ukw6dW5yZWFjaGFibGVVUkw6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVy
IF9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERG
Vmlldy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisKIDIwMTgtMTEtMjggIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgZGVhZCBj
b2RlIGZyb20gYW4gZWFybGllciBhdHRlbXB0IGF0IGltcGxlbWVudGluZyBzYWZlIGJyb3dzaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNzAyNDJiNDQ5OGZhMjA0YjdmNjU1ODJh
ZTg3OGRmYTNhMTNjNWM3MS4uNjY5NjNhMGMzYjdhZTVmMjI0MTM1MTllNDZkZmE3MGQyNzRmZWQz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE4LTEx
LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBlcnMuY3BwOgorICAgICAg
ICAqIE1hcnNoYWxsaW5nSGVscGVycy5oOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaDoKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblN0
cmVhbS5oOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHA6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYlBsdWdpbkluZm9Qcm92aWRl
cjo6d2ViVmlzaWJsZVBsdWdpbkluZm8pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkluZm9Qcm92aWRlci5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRM
aW5rU3RvcmUuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKiBXZWJE
b3dubG9hZC5oOgorICAgICAgICAqIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHA6CisgICAgICAg
ICogV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJIaXN0b3J5LmNwcDoKKyAgICAgICAgKiBXZWJI
aXN0b3J5Lmg6CisgICAgICAgICogV2ViSGlzdG9yeUl0ZW0uY3BwOgorICAgICAgICAqIFdlYlJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpXZWJSZXNvdXJjZSk6CisgICAgICAg
ICogV2ViUmVzb3VyY2UuaDoKKyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5jcHA6CisgICAg
ICAgICogV2ViVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViVVJMUmVzcG9uc2U6OmNyZWF0
ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAg
ICAgICAqIFdlYlZpZXcuaDoKKwogMjAxOC0xMS0yOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBkZWFkIGNvZGUgZnJvbSBhbiBl
YXJsaWVyIGF0dGVtcHQgYXQgaW1wbGVtZW50aW5nIHNhZmUgYnJvd3NpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY3ZjU1MDlhNGIwZGJlNDc0NDg4MTk2
OTI5MDRhNmUxMTNiZWI5NDAuLmEyMjM5NDkwZDExMmRjYTQ2YTVhYTRiY2RlZDM1ZmRiY2FhZWM5
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzIsNiAr
NzIsMTIgQEAKIAkJNTMxMUJENTMxRUE3MUNBRDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENTExRUE3MUNB
RDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwICovOyB9OwogCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUy
ODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzExQkQ1QjFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5j
cHAgKi87IH07CiAJCTUzNTM0RjJBMUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5k
ZWZzIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1MzRG
MjkxRUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRpb25zLmRlZnMgKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoQ2xpZW50LCBTZXJ2ZXIsICk7IH07IH07CisJCTVDMUYwNTkzMjE2NDM1
NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFGMDU5MTIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRy
YXMuY3BwICovOyB9OworCQk1QzFGMDU5NTIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxRjA1OTQyMTY0
MzdCMzAwMzkzMDJDIC8qIFVSTENGLmNwcCAqLzsgfTsKKwkJNUNDMEVFNzUyMTYyOUYxOTAwQTFB
ODQyIC8qIFVSTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0MwRUU3MzIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFyc2VyLmNwcCAqLzsg
fTsKKwkJNUNDMEVFNzYyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0MwRUU3NDIxNjI5RjE5MDBBMUE4NDIg
LyogVVJMLmNwcCAqLzsgfTsKKwkJNUNDMEVFODkyMTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29h
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVF
ODYyMTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29hLm1tICovOyB9OworCQk1Q0MwRUU4QTIxNjJC
QzIyMDBBMUE4NDIgLyogTlNVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0MwRUU4ODIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRy
YXMubW0gKi87IH07CiAJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3Ry
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5
OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OwogCQk3MEVD
QTYwRDFCMDI0MjY4MDA0NDk3MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwQTFCMDI0MjY4MDA0NDk3
MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAgKi87IH07CiAJCTdBMDUwOTNGMUZCOURDQzUwMEIz
M0ZCOCAvKiBKU09OVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBMDUwOTNFMUZCOURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmNwcCAq
LzsgfTsKQEAgLTM1OSw3ICszNjUsMTkgQEAKIAkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8q
IFRpbnlMUlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW55TFJV
Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU5N0Y4MkMxRDk0Qjk5NzAw
NjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3luY2hyb25pemVkRml4ZWRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QjQzMzgzQTVEMEI0NjNDOTQzM0Q5MzMgLyogSW5kZXhNYXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZXhNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUMxRjA1OTEyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENGVVJMRXh0cmFzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMxRjA1OTIyMTY0MzU2QjAwMzkzMDJDIC8qIENG
VVJMRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENGVVJMRXh0cmFz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMUYwNTk0MjE2NDM3QjMwMDM5MzAy
QyAvKiBVUkxDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxD
Ri5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMUYwNTk3MjE2NDM5OTQwMDM5
MzAyQyAvKiBVUkxIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTEhh
c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQy
RjZEIC8qIFVuaXF1ZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlx
dWVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzEyMTYyOUYxODAw
QTFBODQyIC8qIFVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzIyMTYyOUYxOTAwQTFBODQyIC8q
IFVSTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxQYXJzZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFNzMyMTYyOUYxOTAwQTFBODQy
IC8qIFVSTFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBV
UkxQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0MwRUU3NDIxNjI5
RjE5MDBBMUE4NDIgLyogVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBFRTc3MjE2MkEw
MTAwMEExQTg0MiAvKiBVUkxIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVSTEhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDMEVFODYyMTYyQkMy
MjAwQTFBODQyIC8qIFVSTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVVJMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQzBF
RTg3MjE2MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOU1VSTEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0MwRUU4ODIxNjJCQzIyMDBBMUE4NDIgLyogTlNVUkxFeHRyYXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOU1VSTEV4dHJhcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdCNjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFy
OyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQyNDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUQyNDdCNzAxNDY4OUM0NzAwRTc4Qjc2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02OTcsOSArNzE1LDEyIEBACiAJCTJDREVEMEYwMTgxMTVDM0YwMDREQkE3
MCAvKiBjZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NUMxRjA1OTEyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCAqLywKKwkJCQk1QzFG
MDU5MjIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuaCAqLywKIAkJCQlDMkJDRkM0MTFG
NjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi8sCiAJCQkJMkNERUQwRUUxODExNUMz
ODAwNERCQTcwIC8qIFJ1bkxvb3BDRi5jcHAgKi8sCiAJCQkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4
RkZBIC8qIFR5cGVDYXN0c0NGLmggKi8sCisJCQkJNUMxRjA1OTQyMTY0MzdCMzAwMzkzMDJDIC8q
IFVSTENGLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMTEwNiw2ICsxMTI3LDEyIEBACiAJCQkJRTMwMEU1MjEyMDNENjQ1RjAwREE3
OUJFIC8qIFVuaXF1ZUFycmF5LmggKi8sCiAJCQkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8q
IFVuaXF1ZVJlZi5oICovLAogCQkJCUNENzYwMEZGMUY5MEEzQ0EwMDAyNkUyNiAvKiBVbnNhZmVQ
b2ludGVyLmggKi8sCisJCQkJNUNDMEVFNzQyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgKi8s
CisJCQkJNUNDMEVFNzEyMTYyOUYxODAwQTFBODQyIC8qIFVSTC5oICovLAorCQkJCTVDMUYwNTk3
MjE2NDM5OTQwMDM5MzAyQyAvKiBVUkxIYXNoLmggKi8sCisJCQkJNUNDMEVFNzcyMTYyQTAxMDAw
QTFBODQyIC8qIFVSTEhhc2guaCAqLywKKwkJCQk1Q0MwRUU3MzIxNjI5RjE5MDBBMUE4NDIgLyog
VVJMUGFyc2VyLmNwcCAqLywKKwkJCQk1Q0MwRUU3MjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMUGFy
c2VyLmggKi8sCiAJCQkJN0FGRUM2QjAxRUIyMkI1OTAwREFERTM2IC8qIFVVSUQuY3BwICovLAog
CQkJCTdBRkVDNkFFMUVCMjJBQzYwMERBREUzNiAvKiBVVUlELmggKi8sCiAJCQkJQThBNDczNkYx
NTFBODI1QjAwNDEyM0ZGIC8qIFZhbHVlQ2hlY2suaCAqLywKQEAgLTEzMjgsNyArMTM1NSwxMCBA
QAogCQkJCUE4QTQ3MkM1MTUxQTgyNUEwMDQxMjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gKi8s
CiAJCQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNw
cCAqLywKIAkJCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5k
bGVyQ29jb2EubW0gKi8sCisJCQkJNUNDMEVFODcyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0
cmFzLmggKi8sCisJCQkJNUNDMEVFODgyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1t
ICovLAogCQkJCUEzMEQ0MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovLAor
CQkJCTVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSAqLywKIAkJCQlFNEEw
QUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovLAogCQkJKTsKIAkJ
CXBhdGggPSBjb2NvYTsKQEAgLTE0MTgsNiArMTQ0OCw3IEBACiAJCQkJQThBNDczOEIxNTFBODI1
QjAwNDEyM0ZGIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEQ0VFMjIwMTFD
RUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3M0FDMTUxQTgyNUIwMDQxMjNGRiAvKiBjYWNoZWQtcG93ZXJzLmNjIGluIFNvdXJj
ZXMgKi8sCisJCQkJNUMxRjA1OTMyMTY0MzU2QjAwMzkzMDJDIC8qIENGVVJMRXh0cmFzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNjZCMjhBMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxh
dG9yRGVmYXVsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIz
RkYgLyogQ29sbGF0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNDY5LDYgKzE1MDAsNyBA
QAogCQkJCUFEODlCNkJBMUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJD
b2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0VDMTUxQTgyNUIwMDQxMjNGRiAvKiBN
ZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZCMjhDMURDOTdCQUIwMDRB
MUQzRiAvKiBNb25vdG9uaWNUaW1lLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQzBFRThBMjE2
MkJDMjIwMEExQTg0MiAvKiBOU1VSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
M0Y0MTUxQTgyNUIwMDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1MjMsNiArMTU1NSwxMCBAQAogCQkJCTUzMTFCRDVD
MUVBODIyRjkwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNjZCMjkwMURDOTdCQUIwMDRBMUQzRiAvKiBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3MDc1RjUxRkJGNTNDRDAwNDg5QUYwIC8qIFRpbWluZ1Nj
b3BlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQzBFRTc2MjE2MjlGMTkwMEExQTg0MiAvKiBV
UkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUMxRjA1OTUyMTY0MzdCMzAwMzkzMDJDIC8qIFVS
TENGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQzBFRTg5MjE2MkJDMjIwMEExQTg0MiAvKiBV
UkxDb2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDQzBFRTc1MjE2MjlGMTkwMEExQTg0MiAv
KiBVUkxQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMxODFDOEYxRDMwN0FCODAwRjVG
QTE2IC8qIFVUZXh0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMxODFDOTExRDMw
N0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUMxODFDOTMxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNjNjNzA3MDFmMDhkY2NmMWU0YjMz
NzllZGI5MmM2NjBlZTdhNjc5ZC4uY2VlMWNjZTFlNTcxODRkMTNiZDJjZDUxOWVmNmEyMGRmZmIx
YTk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI0MCw2ICsyNDAsOSBAQCBzZXQoV1RGX1BV
QkxJQ19IRUFERVJTCiAgICAgVGlueVB0clNldC5oCiAgICAgVHJpU3RhdGUuaAogICAgIFR5cGVD
YXN0cy5oCisgICAgVVJMLmgKKyAgICBVUkxIYXNoLmgKKyAgICBVUkxQYXJzZXIuaAogICAgIFVV
SUQuaAogICAgIFVuYWxpZ25lZEFjY2Vzcy5oCiAgICAgVW5leHBlY3RlZC5oCkBAIC0zOTQsNiAr
Mzk3LDggQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgVGhyZWFkaW5nLmNwcAogICAgIFRpbWVXaXRo
RHluYW1pY0Nsb2NrVHlwZS5jcHAKICAgICBUaW1pbmdTY29wZS5jcHAKKyAgICBVUkwuY3BwCisg
ICAgVVJMUGFyc2VyLmNwcAogICAgIFVVSUQuY3BwCiAgICAgV1RGQXNzZXJ0aW9ucy5jcHAKICAg
ICBXYWxsVGltZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1Nv
dXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCA1ZmRiNTkyOGY4N2E2YTVmZmQ1MmNkNDBjMmRl
MTgzZjRiOGRjZjI4Li5iODM5OTdjODNhMmMwYmMxZDdlOGUyZDFkOGZhNDVkZTM1ODM1MmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYv
Rm9yd2FyZC5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIFN0cmluZ1ZpZXc7CiBjbGFzcyBUZXh0
UG9zaXRpb247CiBjbGFzcyBUZXh0U3RyZWFtOwogY2xhc3MgVW5pcXVlZFN0cmluZ0ltcGw7Citj
bGFzcyBVUkw7CiBjbGFzcyBXYWxsVGltZTsKIAogc3RydWN0IEZhc3RNYWxsb2M7CkBAIC0xMTIs
NiArMTEzLDcgQEAgdXNpbmcgV1RGOjpTdHJpbmdJbXBsOwogdXNpbmcgV1RGOjpTdHJpbmdWaWV3
OwogdXNpbmcgV1RGOjpUZXh0UG9zaXRpb247CiB1c2luZyBXVEY6OlRleHRTdHJlYW07Cit1c2lu
ZyBXVEY6OlVSTDsKIHVzaW5nIFdURjo6VmFyaWFudDsKIHVzaW5nIFdURjo6VmVjdG9yOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDY5NmExYmFiZDYyY2IwMWY3NjI5YmJlOTJiZThm
NDkzMzQ5NjBiNjIuLjAwNmZjMjJkNjE2MmU1MjQzNzEzZTRhZGE1ZDRkODRhNWQzM2RhZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02LDYgKzYsNyBAQCBsaXN0KEFQUEVORCBXVEZf
UFVCTElDX0hFQURFUlMKICAgICBnbGliL0dSZWZQdHIuaAogICAgIGdsaWIvR1R5cGVkZWZzLmgK
ICAgICBnbGliL0dVbmlxdWVQdHIuaAorICAgIGdsaWIvR1VuaXF1ZVB0clNvdXAuaAogICAgIGds
aWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmgKICAgICBnbGliL1dURkdUeXBlLmgKICkKQEAgLTI1
LDYgKzI2LDcgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnbGliL0dMaWJVdGlsaXRp
ZXMuY3BwCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCisg
ICAgZ2xpYi9VUkxTb3VwLmNwcAogCiAgICAgdGV4dC91bml4L1RleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1VVbml4LmNwcAogCkBAIC01MCw5ICs1MiwxMSBAQCBsaXN0KEFQUEVORCBXVEZfTElC
UkFSSUVTCiAgICAgJHtHTElCX0dJT19MSUJSQVJJRVN9CiAgICAgJHtHTElCX0dPQkpFQ1RfTElC
UkFSSUVTfQogICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAgJHtMSUJTT1VQX0xJQlJBUklFU30K
ICAgICAke1pMSUJfTElCUkFSSUVTfQogKQogCiBsaXN0KEFQUEVORCBXVEZfU1lTVEVNX0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICR7TElCU09VUF9J
TkNMVURFX0RJUlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5j
bWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGQ5YmQ0OGY3YTVk
M2MyN2VlZjdjMDBlMTg3MGI4OGM3YjE0ZjYxOTkuLjQ3OTVmOGZhNGNhZWYyM2VlMWE4YzM4MjVk
ZDZkOWNhODg5NGMyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNt
YWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC04LDEwICs4LDEy
IEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICkKIAogbGlzdChBUFBFTkQgV1RGX1BVQkxJ
Q19IRUFERVJTCisgICAgY2YvQ0ZVUkxFeHRyYXMuaAogICAgIGNmL1R5cGVDYXN0c0NGLmgKIAog
ICAgIGNvY29hL0VudGl0bGVtZW50cy5oCiAgICAgY29jb2EvTWFjaFNlbmRSaWdodC5oCisgICAg
Y29jb2EvTlNVUkxFeHRyYXMuaAogICAgIGNvY29hL1NvZnRMaW5raW5nLmgKIAogICAgIGRhcndp
bi9XZWFrTGlua2luZy5oCkBAIC0zNyw4ICszOSwxMCBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNF
UwogICAgIFNjaGVkdWxlUGFpckNGLmNwcAogICAgIFNjaGVkdWxlUGFpck1hYy5tbQogCisgICAg
Y2YvQ0ZVUkxFeHRyYXMuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAgICBjZi9SdW5Mb29w
Q0YuY3BwCisgICAgY2YvVVJMQ0YuY3BwCiAKICAgICBjb2NvYS9BdXRvZHJhaW5lZFBvb2wuY3Bw
CiAgICAgY29jb2EvQ1BVVGltZUNvY29hLmNwcApAQCAtNDcsNiArNTEsOCBAQCBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUwogICAgIGNvY29hL01haW5UaHJlYWRDb2NvYS5tbQogICAgIGNvY29hL01l
bW9yeUZvb3RwcmludENvY29hLmNwcAogICAgIGNvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNv
Y29hLm1tCisgICAgY29jb2EvTlNVUkxFeHRyYXMubW0KKyAgICBjb2NvYS9VUkxDb2NvYS5tbQog
ICAgIGNvY29hL1dvcmtRdWV1ZUNvY29hLmNwcAogCiAgICAgbWFjL0RlcHJlY2F0ZWRTeW1ib2xz
VXNlZEJ5U2FmYXJpLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdQRS5j
bWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDc1MmI1OTkzMTQ4
ZjExMTBhMjkzYzlkYTllMjhhZGVmMDhmZWU0MGMuLmEwMmRhNTI3OGVlZWFiOGRiODAwYmM4Zjk2
Zjg5ZmI5NzJmM2UxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNt
YWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC00LDYgKzQsNyBA
QCBsaXN0KEFQUEVORCBXVEZfUFVCTElDX0hFQURFUlMKICAgICBnbGliL0dSZWZQdHIuaAogICAg
IGdsaWIvR1R5cGVkZWZzLmgKICAgICBnbGliL0dVbmlxdWVQdHIuaAorICAgIGdsaWIvR1VuaXF1
ZVB0clNvdXAuaAogICAgIGdsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5LmgKICAgICBnbGliL1dU
RkdUeXBlLmgKIApAQCAtMTksNiArMjAsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAg
IGdsaWIvR0xpYlV0aWxpdGllcy5jcHAKICAgICBnbGliL0dSZWZQdHIuY3BwCiAgICAgZ2xpYi9S
dW5Mb29wR0xpYi5jcHAKKyAgICBnbGliL1VSTFNvdXAuY3BwCiAKICAgICBsaW51eC9DdXJyZW50
UHJvY2Vzc01lbW9yeVN0YXR1cy5jcHAKICAgICBsaW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5j
cHAKQEAgLTM1LDkgKzM3LDExIEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKICAgICAke0dM
SUJfR0lPX0xJQlJBUklFU30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJRVN9CiAgICAgJHtH
TElCX0xJQlJBUklFU30KKyAgICAke0xJQlNPVVBfTElCUkFSSUVTfQogICAgICR7WkxJQl9MSUJS
QVJJRVN9CiApCiAKIGxpc3QoQVBQRU5EIFdURl9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CisgICAgJHtMSUJTT1VQX0lOQ0xVREVfRElSU30KICkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggNWYyMjc1YTViZGZmNGU4YTFlMTNlNmI3NDY3
OGRkNjY2NDRmMjlmOC4uMmI4YjVmODI3MGViNWYyNDY3NjA3MmRkMTI0NTc2ZGE5MzAxZjBlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTIyLDExICsyMiwxNSBAQCBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUwogCiBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNf
SEVBREVSUworICAgICAgICBjZi9DRlVSTEV4dHJhcy5oCiAgICAgICAgIGNmL1R5cGVDYXN0c0NG
LmgKIAogICAgICAgICB0ZXh0L2NmL1RleHRCcmVha0l0ZXJhdG9yQ0YuaAogICAgICkKICAgICBs
aXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKKyAgICAg
ICAgY2YvVVJMQ0YuY3BwCisKICAgICAgICAgdGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3Bw
CiAgICAgICAgIHRleHQvY2YvU3RyaW5nQ0YuY3BwCiAgICAgICAgIHRleHQvY2YvU3RyaW5nSW1w
bENGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1VSTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNlMTdjZDlkZTkyMWQ2YzlhNjIxNmNhZjdlODhkMmI0
NmM3ZjM1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTAs
MCArMSwxMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LTIwMDgsIDIwMTEt
MjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKyNpbmNsdWRlICJVUkxQYXJz
ZXIuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKKy8vIEZJWE1FOiBUaGlzIGZp
bGUgbWFrZXMgdG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJhdG9yIG9uIFN0cmluZy4KKy8vIFdl
IGVpdGhlciBoYXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0b3Igc28gaXQgZG9lc24ndCBpbnZv
bHZlCisvLyBzbyBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFuZ2UgdGhpcyB0byB1c2UgU3RyaW5n
QnVmZmVyIGluc3RlYWQuCisKKworbmFtZXNwYWNlIFdURiB7CisKK3R5cGVkZWYgVmVjdG9yPGNo
YXIsIDUxMj4gQ2hhckJ1ZmZlcjsKK3R5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVm
ZmVyOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7
CisKKy8vIENvcGllcyB0aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxs
IHRoZSBzb3VyY2UgY2hhcmFjdGVycyBhcmUKKy8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVm
ZmVyIG11c3QgYmUgbGFyZ2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKKy8v
IGluIHRoZSBzb3VyY2Ugc3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVy
bWluYXRlIHRoZSByZXN1bHQuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGNoYXIqIGRlc3QpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIG1lbWNweShkZXN0
LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgY29uc3QgVUNoYXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAg
c2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxj
aGFyPihzcmNbaV0pOworICAgIH0KK30KKwordm9pZCBVUkw6OmludmFsaWRhdGUoKQoreworICAg
IG1faXNWYWxpZCA9IGZhbHNlOworICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNl
OworICAgIG1fY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlOworICAgIG1fc2NoZW1lRW5kID0gMDsK
KyAgICBtX3VzZXJTdGFydCA9IDA7CisgICAgbV91c2VyRW5kID0gMDsKKyAgICBtX3Bhc3N3b3Jk
RW5kID0gMDsKKyAgICBtX2hvc3RFbmQgPSAwOworICAgIG1fcG9ydExlbmd0aCA9IDA7CisgICAg
bV9wYXRoRW5kID0gMDsKKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7CisgICAgbV9xdWVy
eUVuZCA9IDA7Cit9CisKK1VSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiBy
ZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKK3sKKyAgICBVUkxQYXJz
ZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CisgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Cit9CisKK3N0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCit7
CisgICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQg
Y29udHJvbAorICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMgYW4g
KnVuc2lnbmVkKiBjaGFyIGhlcmUKKyAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIG9u
bHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgorICAgIHJldHVybiBjIDw9ICcgJzsKK30KKwor
VVJMIFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBVUkwgcmVzdWx0ID0gKnRoaXM7
CisgICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N0cmluZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkg
Y29uc3QKK3sKKyAgICBpZiAoIWhhc1BhdGgoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5kIC0gMTsKKyAgICBpZiAobV9zdHJpbmdbZW5k
XSA9PSAnLycpCisgICAgICAgIC0tZW5kOworCisgICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcu
cmV2ZXJzZUZpbmQoJy8nLCBlbmQpOworICAgIGlmIChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgKytzdGFydDsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVu
ZCAtIHN0YXJ0ICsgMSk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVu
ZCk7Cit9CisKK1N0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBz
dGFydCA9IGhvc3RTdGFydCgpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKK30KKworc3RkOjpvcHRpb25hbDx1aW50
MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcG9ydExlbmd0aCkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICB1bnNp
Z25lZCBudW1iZXI7CisgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBudW1iZXIg
PSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBtX2hvc3RF
bmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxLCAmb2spOworICAgIGVsc2UKKyAgICAgICAgbnVtYmVy
ID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9z
dEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEsICZvayk7CisgICAgaWYgKCFvayB8fCBudW1iZXIg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG51bWJlcjsKK30KKworU3RyaW5nIFVSTDo6aG9zdEFu
ZFBvcnQoKSBjb25zdAoreworICAgIGlmIChhdXRvIHBvcnQgPSB0aGlzLT5wb3J0KCkpCisgICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKGhvc3QoKSwgJzonLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cG9ydC52YWx1ZSgpKSk7CisgICAgcmV0dXJuIGhvc3QoKS50b1N0cmluZygpOworfQorCitTdHJp
bmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKK3sKKyAgICBTdHJpbmcgcmVzdWx0
ID0gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIG1faG9zdEVuZCArIG1fcG9ydExlbmd0aCk7CisKKyAg
ICBpZiAobV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ID4gMCkgeworICAgICAgICBjb25zdCBp
bnQgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbiA9IDE7CisgICAgICAgIHJlc3VsdC5yZW1vdmUobV91
c2VyU3RhcnQsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJTdGFydCArIGFsbG93Rm9yVHJhaWxpbmdB
dFNpZ24pOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBTdHJpbmcg
ZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3IGlucHV0KQorewor
ICAgIGF1dG8gaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKKyAgICBpZiAoIWlucHV0TGVu
Z3RoKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBWZWN0b3I8TENoYXI+IHBl
cmNlbnREZWNvZGVkOworICAgIHBlcmNlbnREZWNvZGVkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
aW5wdXRMZW5ndGgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnB1dExlbmd0aDsg
KytpKSB7CisgICAgICAgIGlmIChpbnB1dFtpXSA9PSAnJScKKyAgICAgICAgICAgICYmIGlucHV0
TGVuZ3RoID4gMgorICAgICAgICAgICAgJiYgaSA8IGlucHV0TGVuZ3RoIC0gMgorICAgICAgICAg
ICAgJiYgaXNBU0NJSUhleERpZ2l0KGlucHV0W2kgKyAxXSkKKyAgICAgICAgICAgICYmIGlzQVND
SUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICBwZXJjZW50RGVjb2RlZC51
bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJd
KSk7CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGVy
Y2VudERlY29kZWQudW5jaGVja2VkQXBwZW5kKGlucHV0W2ldKTsKKyAgICB9CisgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5z
aXplKCkpOworfQorCitTdHJpbmcgVVJMOjp1c2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVj
b2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Cit9CisKK1N0cmlu
ZyBVUkw6OnBhc3MoKSBjb25zdAoreworICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVu
ZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRlY29kZUVzY2FwZVNl
cXVlbmNlc0Zyb21QYXJzZWRVUkwoU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fdXNl
ckVuZCArIDEsIG1fcGFzc3dvcmRFbmQgLSBtX3VzZXJFbmQgLSAxKSk7Cit9CisKK1N0cmluZyBV
Ukw6OmVuY29kZWRVc2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5n
KG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCk7Cit9CisKK1N0cmluZyBVUkw6
OmVuY29kZWRQYXNzKCkgY29uc3QKK3sKKyAgICBpZiAobV9wYXNzd29yZEVuZCA9PSBtX3VzZXJF
bmQpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJz
dHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpOworfQor
CitTdHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICghaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJl
dHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEpOworfQorCitib29sIFVSTDo6
aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkICYm
IG1fc3RyaW5nLmxlbmd0aCgpICE9IG1fcXVlcnlFbmQ7Cit9CisKK1N0cmluZyBVUkw6OmJhc2VB
c1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJM
YXN0U2xhc2gpOworfQorCisjaWYgIVVTRShDRikKKworU3RyaW5nIFVSTDo6ZmlsZVN5c3RlbVBh
dGgoKSBjb25zdAoreworICAgIGlmICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2Vz
RnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KHBhdGgoKSkpOworfQorCisjZW5kaWYKKworI2lmZGVm
IE5ERUJVRworCitzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5n
VmlldykKK3sKK30KKworI2Vsc2UKKworc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2Qo
U3RyaW5nVmlldyBwcm90b2NvbCkKK3sKKyAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3Qg
bmVlZCB0aGlzIGZ1bmN0aW9uIGFueSBtb3JlLgorICAgIC8vIFRoZSBpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsIGZ1bmN0aW9uIGFzc2VydHMgdGhhdCBwYXNzZWQtaW4gY2hhcmFjdGVycworICAg
IC8vIGFyZSBvbmVzIGl0IGNhbiBoYW5kbGU7IHRoZSBvbGRlciBjb2RlIGRpZCBub3QgYW5kIHJl
bGllZCBvbiB0aGVzZSBjaGVja3MuCisgICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHByb3RvY29s
LmNvZGVVbml0cygpKSB7CisgICAgICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOworICAg
ICAgICBBU1NFUlQoY2hhcmFjdGVyID4gJyAnKTsKKyAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBw
ZXIoY2hhcmFjdGVyKSk7CisgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hh
cmFjdGVyKSA9PSBjaGFyYWN0ZXIpOworICAgIH0KK30KKworI2VuZGlmCisKK3N0YXRpYyBMb2Nr
IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKKwordXNpbmcgRGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+
Oworc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQoreworICAgIHN0YXRpYyBEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKKyAgICBy
ZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKK30KKworc3RhdGljIERlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
Rm9yVGVzdGluZygpCit7CisgICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmcq
JiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmcoKTsKKyAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCisgICAgICAg
IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBuZXcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3Rpbmc7CisgICAgcmV0dXJuICpkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOworfQor
Cit2b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3Qg
cG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgZW5zdXJl
RGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQp
OworfQorCit2b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQor
eworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmdMb2NrKTsKKyAgICBpZiAoYXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKSkKKyAgICAgICAgbWFwLT5jbGVhcigpOworfQorCitzdGQ6Om9wdGlv
bmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wp
Cit7CisgICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmcoKSkgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgICAgIEFTU0VSVChvdmVycmlk
ZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRl
TWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KKyAgICAgICAgYXV0
byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENv
cHlpbmcoKSk7CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCisg
ICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gVVJM
UGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKK30KKworYm9vbCBpc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCkK
K3sKKyAgICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsK
K30KKworYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Cit7
CisgICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7CisKKyAgICAvLyBKYXZh
U2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVuIGlmIFVS
TCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCisgICAgLy8gVGhlIGZyZWUgZnVuY3Rpb24gcHJv
dG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKKyAgICBBU1NFUlQo
IWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcocHJvdG9jb2wpLCAiamF2
YXNjcmlwdCIpKTsKKworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcg
b2JqZWN0LgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7
CisgICAgICAgIGlmICghcHJvdG9jb2xbaV0gfHwgIWlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
bV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZl
IGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KK30KKworYm9vbCBVUkw6
OnByb3RvY29sSXMoU3RyaW5nVmlldyBwcm90b2NvbCkgY29uc3QKK3sKKyAgICBhc3NlcnRQcm90
b2NvbElzR29vZChwcm90b2NvbCk7CisKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIGlmIChtX3NjaGVtZUVuZCAhPSBwcm90b2NvbC5sZW5ndGgo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0
aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgeworICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwobV9zdHJpbmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBVUkw6OnF1ZXJ5KCkg
Y29uc3QKK3sKKyAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kICsg
MSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAorfQorCitTdHJpbmcgVVJMOjpwYXRo
KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBwb3J0RW5kID0gbV9ob3N0RW5kICsgbV9wb3J0TGVu
Z3RoOworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcocG9ydEVuZCwgbV9wYXRoRW5kIC0g
cG9ydEVuZCk7Cit9CisKK2Jvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCit7
CisgICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0
ICc6Jy4KKyAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKKyAgICBT
dHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Cisg
ICAgYXV0byBjYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVt
ZShuZXdQcm90b2NvbCk7CisgICAgaWYgKCFjYW5vbmljYWxpemVkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
KG1ha2VTdHJpbmcoKmNhbm9uaWNhbGl6ZWQsICI6IiwgbV9zdHJpbmcpKTsKKyAgICAgICAgKnRo
aXMgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygqY2Fub25pY2FsaXplZCwgbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fc2NoZW1lRW5kKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworICAg
IHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBpc0FsbEFTQ0lJKFN0cmluZ1ZpZXcgc3Ry
aW5nKQoreworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Cisg
ICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0
cmluZy5sZW5ndGgoKSk7Cit9CisgICAgCisvLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5h
bWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KKy8vIHRoZSBv
dXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KKy8v
IFJldHVybiB2YWx1ZSBvZiBmYWxzZSBtZWFucyBlcnJvciBpbiBlbmNvZGluZy4KK3N0YXRpYyBi
b29sIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBTdHJpbmdWaWV3
IHN0cmluZykKK3sKKyAgICAvLyBOZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSURO
LWVuY29kZWQgbmFtZS4KKyAgICAvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3
ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCisg
ICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVCdWZmZXJMZW5ndGggPSAyMDQ4OworICAgIAorICAg
IGlmIChzdHJpbmcubGVuZ3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBpc0FsbEFTQ0lJ
KHN0cmluZykpIHsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgc3RyaW5nKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1l
QnVmZmVyTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOworICAg
IFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lORk9fSU5JVElBTElaRVI7Cisg
ICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfbmFtZVRvQVNDSUkoJlVS
TFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksCisgICAgICAgIHN0
cmluZy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpLCBob3N0bmFtZUJ1
ZmZlciwgaG9zdG5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsK
KyAgICAKKyAgICBpZiAoVV9TVUNDRVNTKGVycm9yKSAmJiAhcHJvY2Vzc2luZ0RldGFpbHMuZXJy
b3JzKSB7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3Rl
cnNDb252ZXJ0ZWQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit1bnNpZ25lZCBVUkw6Omhvc3RTdGFydCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IChtX3Bhc3N3b3JkRW5kID09IG1fdXNlclN0YXJ0KSA/IG1fcGFzc3dvcmRFbmQgOiBtX3Bhc3N3
b3JkRW5kICsgMTsKK30KKwordm9pZCBVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQorewor
ICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbG9uSW5k
ZXggPSBzLmZpbmQoJzonKTsKKyAgICBpZiAoY29sb25JbmRleCAhPSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgVUNoYXJCdWZmZXIgZW5jb2RlZEhvc3ROYW1lOworICAgIGlmICgh
YXBwZW5kRW5jb2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgcykpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKTsKKyAgICAKKyAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQo
KSkpOworICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQorICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIi8vIik7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5h
bWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
bV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOworCisgICAgVVJMUGFyc2VyIHBhcnNlcihi
dWlsZGVyLnRvU3RyaW5nKCkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOworfQorCit2
b2lkIFVSTDo6cmVtb3ZlUG9ydCgpCit7CisgICAgaWYgKCFtX3BvcnRMZW5ndGgpCisgICAgICAg
IHJldHVybjsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX2hvc3RFbmQpLCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9o
b3N0RW5kICsgbV9wb3J0TGVuZ3RoKSkpOworICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwor
fQorCit2b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9ydCBpKQoreworICAgIGlmICghbV9p
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGNvbG9uTmVlZGVkID0gIW1fcG9y
dExlbmd0aDsKKyAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RF
bmQgOiBtX2hvc3RFbmQgKyAxKTsKKworICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhT
dHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6
ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyht
X2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKSk7CisgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Cit9CisKK3ZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0
KQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmdW
aWV3IGhvc3ROYW1lKGhvc3RBbmRQb3J0KTsKKyAgICBTdHJpbmdWaWV3IHBvcnQ7CisgICAgCisg
ICAgYXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUuZmluZCgnOicpOworICAgIGlmIChjb2xvbklu
ZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHBvcnQgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29s
b25JbmRleCArIDEpOworICAgICAgICBib29sIG9rOworICAgICAgICBpbnQgcG9ydEludCA9IHBv
cnQudG9JbnRTdHJpY3Qob2spOworICAgICAgICBpZiAoIW9rIHx8IHBvcnRJbnQgPCAwKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygw
LCBjb2xvbkluZGV4KTsKKyAgICB9CisKKyAgICBpZiAoaG9zdE5hbWUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7CisgICAgaWYg
KCFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBob3N0TmFtZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOworCisgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0
KCkpKTsKKyAgICBpZiAoc2xhc2hTbGFzaE5lZWRlZCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIvLyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcoZW5jb2RlZEhvc3RO
YW1lLmRhdGEoKSwgZW5jb2RlZEhvc3ROYW1lLnNpemUoKSkpOworICAgIGlmICghcG9ydC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6Iik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHBvcnQpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKSk7CisKKyAgICBV
UkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Cit9CisKK3N0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMoY29u
c3QgU3RyaW5nJiBpbnB1dCwgYm9vbCgqc2hvdWxkRW5jb2RlKShVQ2hhcikpCit7CisgICAgYXV0
byBlbmNvZGUgPSBbc2hvdWxkRW5jb2RlXSAoY29uc3QgU3RyaW5nJiBpbnB1dCkgeworICAgICAg
ICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSB1dGY4
LmRhdGEoKTsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBhdXRvIGxl
bmd0aCA9IHV0ZjgubGVuZ3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBs
ZW5ndGg7IGorKykgeworICAgICAgICAgICAgYXV0byBjID0gZGF0YVtqXTsKKyAgICAgICAgICAg
IGlmIChzaG91bGRFbmNvZGUoYykpIHsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
JScpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb3dlck5pYmJsZVRv
QVNDSUlIZXhEaWdpdChjKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOworICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0
aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNob3VsZEVuY29kZShpbnB1dFtpXSkp
KQorICAgICAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCk7CisgICAgfQorICAgIHJldHVybiBp
bnB1dDsKK30KKwordm9pZCBVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQoreworICAg
IGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogTm9uLUFT
Q0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNl
KCkgZXhwZWN0YXRpb25zLAorICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4g
anVzdCB0aGUgdXNlciBsb2dpbi4KKworICAgIHVuc2lnbmVkIGVuZCA9IG1fdXNlckVuZDsKKyAg
ICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyB1ID0gcGVyY2VudEVuY29k
ZUNoYXJhY3RlcnModXNlciwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOworICAg
ICAgICBpZiAobV91c2VyU3RhcnQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5k
ICsgMSkpCisgICAgICAgICAgICB1ID0gIi8vIiArIHU7CisgICAgICAgIC8vIEFkZCAnQCcgaWYg
d2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KKyAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQg
fHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKKyAgICAg
ICAgICAgIHUuYXBwZW5kKCdAJyk7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgU3RyaW5nVmlldyht
X3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBu
ZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFz
c3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKKyAg
ICAgICAgICAgIGVuZCArPSAxOworICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGlu
IHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtl
IGEgY2hhbmdlLgorICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7CisgICAgICAgICAg
ICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdCht
X3VzZXJTdGFydCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7CisgICAg
ICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoIW1f
aXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgZW5kID0gbV9wYXNzd29y
ZEVuZDsKKyAgICBpZiAoIXBhc3N3b3JkLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmcgcCA9
ICI6IiArIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhc3N3b3JkLCBVUkxQYXJzZXI6OmlzSW5V
c2VySW5mb0VuY29kZVNldCkgKyAiQCI7CisgICAgICAgIGlmIChtX3VzZXJFbmQgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSkpCisgICAgICAgICAgICBwID0gIi8vIiAr
IHA7CisgICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0
byBhZGQgb3VyIG93bi4KKyAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdb
ZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgVVJMUGFyc2VyIHBh
cnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyRW5kKSwgcCwg
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3
ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgorICAgICAgICBpZiAobV91c2Vy
U3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9
PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29p
bmcgdG8gbWFrZSBhIGNoYW5nZS4KKyAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsKKyAg
ICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5n
KS5sZWZ0KG1fdXNlckVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhlbmQpKSk7
CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihTdHJpbmdWaWV3IGlkZW50aWZp
ZXIpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJ
WE1FOiBPcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaWRlbnRpZmllciBhbHJlYWR5IGhhcHBl
bnMgdG8gYmUgZXF1YWwgdG8gd2hhdCB3YXMgcGFzc2VkPworICAgIC8vIEZJWE1FOiBJcyBpdCBj
b3JyZWN0IHRvIGRvIHRoaXMgd2l0aG91dCBlbmNvZGluZyBhbmQgZXNjYXBpbmcgbm9uLUFTQ0lJ
IGNoYXJhY3RlcnM/CisgICAgKnRoaXMgPSBVUkxQYXJzZXIgeyBtYWtlU3RyaW5nKFN0cmluZ1Zp
ZXcgeyBtX3N0cmluZyB9LnN1YnN0cmluZygwLCBtX3F1ZXJ5RW5kKSwgJyMnLCBpZGVudGlmaWVy
KSB9LnJlc3VsdCgpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkK
K3sKKyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBBU1NFUlQoIW1fcXVlcnlFbmQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVu
Z3RoKCkgPiBtX3F1ZXJ5RW5kKQorICAgICAgICBtX3N0cmluZyA9IG1fc3RyaW5nLmxlZnQobV9x
dWVyeUVuZCk7Cit9CisKK3ZvaWQgVVJMOjpyZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmll
cigpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3Ry
aW5nID0gbV9zdHJpbmcubGVmdChtX3BhdGhFbmQpOworICAgIG1fcXVlcnlFbmQgPSBtX3BhdGhF
bmQ7Cit9CisKK3ZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQoreworICAg
IGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogJyMnIGFu
ZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCisgICAg
Ly8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2Rpbmcs
IG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUKKyAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3Vt
ZW50IGluIHRoaXMgZnVuY3Rpb24uCisgICAgLy8gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2
CisgICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnku
aXNOdWxsKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnJl
c3VsdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmlu
ZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fcGF0aEVuZCksIHF1ZXJ5LCBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKKyAgICAgICAgKnRoaXMgPSBwYXJz
ZXIucmVzdWx0KCk7CisgICAgfQorCit9CisKK3ZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmlu
ZyYgcykKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3Ry
aW5nIHBhdGggPSBzOworICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykK
KyAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7CisKKyAgICBhdXRvIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiA9IFtdIChVQ2hhciBjaGFyYWN0ZXIpIHsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3Rl
ciA9PSAnPycgfHwgY2hhcmFjdGVyID09ICcjJzsKKyAgICB9OworICAgIFVSTFBhcnNlciBwYXJz
ZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1faG9zdEVuZCArIG1fcG9y
dExlbmd0aCksIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKHBhdGgsIHF1ZXN0aW9uTWFya09yTnVt
YmVyU2lnbiksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7Cisg
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Cit9CisKK2Jvb2wgZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5t
X3F1ZXJ5RW5kICE9IGIubV9xdWVyeUVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVu
c2lnbmVkIHF1ZXJ5TGVuZ3RoID0gYS5tX3F1ZXJ5RW5kOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBxdWVyeUxlbmd0aDsgKytpKQorICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBi
LnN0cmluZygpW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVSTCYgYSwg
Y29uc3QgVVJMJiBiKQoreworICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7CisgICAgICAgIGlm
IChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIHByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICBpZiAoYS5tX3Nj
aGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1
bnNpZ25lZCBob3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVu
Z3RoQSA9IGEubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRC
ID0gYi5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5k
IC0gYi5ob3N0U3RhcnQoKTsKKyAgICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKSB7CisgICAgICAgIGlmIChh
LnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgLy8gQW5kIHRoZSBob3N0CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKKyAgICAgICAgaWYgKGEuc3RyaW5nKClbaG9zdFN0YXJ0
QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmIChhLnBvcnQoKSAhPSBiLnBvcnQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgaG9zdHNBcmVFcXVh
bChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRB
ID0gYS5ob3N0U3RhcnQoKTsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQSA9IGEubV9ob3N0RW5k
IC0gaG9zdFN0YXJ0QTsKKyAgICB1bnNpZ25lZCBob3N0U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsK
KyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoQiA9IGIubV9ob3N0RW5kIC0gaG9zdFN0YXJ0QjsKKyAg
ICBpZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKSB7CisgICAg
ICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygpW2hvc3RTdGFy
dEIgKyBpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBVUkw6OmlzTWF0Y2hpbmdEb21haW4oY29uc3QgU3RyaW5nJiBkb21h
aW4pIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBp
ZiAoIXByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byBob3N0ID0gdGhpcy0+aG9zdCgpOworICAgIGlmICghaG9zdC5lbmRzV2l0aChkb21h
aW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaG9zdC5sZW5ndGgoKSA9
PSBkb21haW4ubGVuZ3RoKCkgfHwgaG9zdFtob3N0Lmxlbmd0aCgpIC0gZG9tYWluLmxlbmd0aCgp
IC0gMV0gPT0gJy4nOworfQorCitTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhj
b25zdCBTdHJpbmcmIGlucHV0KQoreworICAgIHJldHVybiBwZXJjZW50RW5jb2RlQ2hhcmFjdGVy
cyhpbnB1dCwgVVJMUGFyc2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQpOworfQorCitib29sIFVS
TDo6aXNIaWVyYXJjaGljYWwoKSBjb25zdAoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fc3RyaW5nW21fc2NoZW1lRW5kXSA9PSAnOicp
OworICAgIHJldHVybiBtX3N0cmluZ1ttX3NjaGVtZUVuZCArIDFdID09ICcvJzsKK30KKwordm9p
ZCBVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUg
Y2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQorICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlk
IFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCisgICAg
YnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7CisgICAgY29weUFTQ0lJKG1fc3RyaW5n
LCBidWZmZXIuZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Citi
b29sIHByb3RvY29sSXNJbnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFy
KiBwcm90b2NvbCkKK3sKKyAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBh
IG5ldyBzdHJpbmcgb2JqZWN0LgorICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXco
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29s
KSkpOworICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBqID0gMDsgdXJsW2ldOyArK2kpIHsKKyAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3Bh
Y2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91
bGRUcmltRnJvbVVSTCh1cmxbaV0pKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlz
TGVhZGluZyA9IGZhbHNlOworCisgICAgICAgIC8vIFNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVz
LgorICAgICAgICBpZiAodXJsW2ldID09ICdcdCcgfHwgdXJsW2ldID09ICdccicgfHwgdXJsW2ld
ID09ICdcbicpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIXByb3RvY29s
W2pdKQorICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7CisgICAgICAgIGlmICghaXNB
U0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbaV0sIHByb3RvY29sW2pdKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICArK2o7CisgICAgfQorICAgIAorICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFy
KiBwcm90b2NvbCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgcHJvdG9j
b2wpOworfQorCitpbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQoreworICAgIHJldHVybiBXVEY6OnByb3RvY29sSXNJ
bnRlcm5hbChzdHJpbmcsIHByb3RvY29sKTsKK30KKworI2lmbmRlZiBOREVCVUcKKwordm9pZCBV
Ukw6OnByaW50KCkgY29uc3QKK3sKKyAgICBwcmludGYoIiVzXG4iLCBtX3N0cmluZy51dGY4KCku
ZGF0YSgpKTsKK30KKworI2VuZGlmCisKK1N0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZl
cnJlcigpIGNvbnN0Cit7CisgICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKKyAgICByZWZlcnJlci5z
ZXRVc2VyKFN0cmluZygpKTsKKyAgICByZWZlcnJlci5zZXRQYXNzKFN0cmluZygpKTsKKyAgICBy
ZWZlcnJlci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gcmVmZXJyZXIu
c3RyaW5nKCk7Cit9CisKK2Jvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0Cit7CisgICAgLy8g
SW5jbHVkaW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVhIHNpbmNlIGRyYWcgYW5kIGRy
b3AgdXNlcyB0aGlzIGNoZWNrCisgICAgLy8gYW5kIGluY2x1ZGluZyBmZWVkIHdvdWxkIGFsbG93
IGZlZWRzIHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxvZworICAgIC8vIHJlYWQgdGhl
IGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBldmVuIHdpdGhvdXQgYSBkcm9w
LgorICAgIC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVh
dFVSTEFzTG9jYWwoKSBmdW5jdGlvbi4KKyAgICByZXR1cm4gcHJvdG9jb2xJcygiZmlsZSIpOwor
fQorCitib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKQoreworICAg
IHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29s
IHByb3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKQoreworICAgIHJldHVybiBwcm90
b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOworfQorCitib29sIHByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgYXV0byBsZW5ndGggPSB1cmwu
bGVuZ3RoKCk7CisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcg
c3RyaW5nIG9iamVjdC4KKyAgICByZXR1cm4gbGVuZ3RoID49IDUKKyAgICAgICAgJiYgaXNBU0NJ
SUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMF0sICdoJykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhh
Q2FzZWxlc3NFcXVhbCh1cmxbMV0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxl
c3NFcXVhbCh1cmxbMl0sICd0JykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVh
bCh1cmxbM10sICdwJykKKyAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwgKGlzQVNDSUlBbHBo
YUNhc2VsZXNzRXF1YWwodXJsWzRdLCAncycpICYmIGxlbmd0aCA+PSA2ICYmIHVybFs1XSA9PSAn
OicpKTsKK30KKworY29uc3QgVVJMJiBibGFua1VSTCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayIpOworICAgIHJl
dHVybiBzdGF0aWNCbGFua1VSTDsKK30KKworYm9vbCBVUkw6OnByb3RvY29sSXNBYm91dCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHByb3RvY29sSXMoImFib3V0Iik7Cit9CisKK2Jvb2wgcG9ydEFs
bG93ZWQoY29uc3QgVVJMJiB1cmwpCit7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9y
dCA9IHVybC5wb3J0KCk7CisKKyAgICAvLyBTaW5jZSBtb3N0IFVSTHMgZG9uJ3QgaGF2ZSBhIHBv
cnQsIHJldHVybiBlYXJseSBmb3IgdGhlICJubyBwb3J0IiBjYXNlLgorICAgIGlmICghcG9ydCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBUaGlzIGJsb2NrZWQgcG9ydCBsaXN0IG1h
dGNoZXMgdGhlIHBvcnQgYmxvY2tpbmcgdGhhdCBNb3ppbGxhIGltcGxlbWVudHMuCisgICAgLy8g
U2VlIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbmV0bGliL1BvcnRCYW5uaW5nLmh0
bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGJsb2Nr
ZWRQb3J0TGlzdFtdID0geworICAgICAgICAxLCAgICAvLyB0Y3BtdXgKKyAgICAgICAgNywgICAg
Ly8gZWNobworICAgICAgICA5LCAgICAvLyBkaXNjYXJkCisgICAgICAgIDExLCAgIC8vIHN5c3Rh
dAorICAgICAgICAxMywgICAvLyBkYXl0aW1lCisgICAgICAgIDE1LCAgIC8vIG5ldHN0YXQKKyAg
ICAgICAgMTcsICAgLy8gcW90ZAorICAgICAgICAxOSwgICAvLyBjaGFyZ2VuCisgICAgICAgIDIw
LCAgIC8vIEZUUC1kYXRhCisgICAgICAgIDIxLCAgIC8vIEZUUC1jb250cm9sCisgICAgICAgIDIy
LCAgIC8vIFNTSAorICAgICAgICAyMywgICAvLyB0ZWxuZXQKKyAgICAgICAgMjUsICAgLy8gU01U
UAorICAgICAgICAzNywgICAvLyB0aW1lCisgICAgICAgIDQyLCAgIC8vIG5hbWUKKyAgICAgICAg
NDMsICAgLy8gbmljbmFtZQorICAgICAgICA1MywgICAvLyBkb21haW4KKyAgICAgICAgNzcsICAg
Ly8gcHJpdi1yanMKKyAgICAgICAgNzksICAgLy8gZmluZ2VyCisgICAgICAgIDg3LCAgIC8vIHR0
eWxpbmsKKyAgICAgICAgOTUsICAgLy8gc3VwZHVwCisgICAgICAgIDEwMSwgIC8vIGhvc3RyaWFt
ZQorICAgICAgICAxMDIsICAvLyBpc28tdHNhcAorICAgICAgICAxMDMsICAvLyBncHBpdG5wCisg
ICAgICAgIDEwNCwgIC8vIGFjci1uZW1hCisgICAgICAgIDEwOSwgIC8vIFBPUDIKKyAgICAgICAg
MTEwLCAgLy8gUE9QMworICAgICAgICAxMTEsICAvLyBzdW5ycGMKKyAgICAgICAgMTEzLCAgLy8g
YXV0aAorICAgICAgICAxMTUsICAvLyBTRlRQCisgICAgICAgIDExNywgIC8vIHV1Y3AtcGF0aAor
ICAgICAgICAxMTksICAvLyBubnRwCisgICAgICAgIDEyMywgIC8vIE5UUAorICAgICAgICAxMzUs
ICAvLyBsb2Mtc3J2IC8gZXBtYXAKKyAgICAgICAgMTM5LCAgLy8gbmV0YmlvcworICAgICAgICAx
NDMsICAvLyBJTUFQMgorICAgICAgICAxNzksICAvLyBCR1AKKyAgICAgICAgMzg5LCAgLy8gTERB
UAorICAgICAgICA0MjcsICAvLyBTTFAgKEFsc28gdXNlZCBieSBBcHBsZSBGaWxpbmcgUHJvdG9j
b2wpCisgICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCisgICAgICAgIDUxMiwgIC8vIHByaW50IC8g
ZXhlYworICAgICAgICA1MTMsICAvLyBsb2dpbgorICAgICAgICA1MTQsICAvLyBzaGVsbAorICAg
ICAgICA1MTUsICAvLyBwcmludGVyCisgICAgICAgIDUyNiwgIC8vIHRlbXBvCisgICAgICAgIDUz
MCwgIC8vIGNvdXJpZXIKKyAgICAgICAgNTMxLCAgLy8gQ2hhdAorICAgICAgICA1MzIsICAvLyBu
ZXRuZXdzCisgICAgICAgIDU0MCwgIC8vIFVVQ1AKKyAgICAgICAgNTQ4LCAgLy8gYWZwb3ZlcnRj
cCBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDU1NiwgIC8vIHJlbW90ZWZzCisgICAgICAgIDU2
MywgIC8vIE5OVFArU1NMCisgICAgICAgIDU4NywgIC8vIEVTTVRQCisgICAgICAgIDYwMSwgIC8v
IHN5c2xvZy1jb25uCisgICAgICAgIDYzNiwgIC8vIExEQVArU1NMCisgICAgICAgIDk5MywgIC8v
IElNQVArU1NMCisgICAgICAgIDk5NSwgIC8vIFBPUDMrU1NMCisgICAgICAgIDIwNDksIC8vIE5G
UworICAgICAgICAzNjU5LCAvLyBhcHBsZS1zYXNsIC8gUGFzc3dvcmRTZXJ2ZXIgW0FwcGxlIGFk
ZGl0aW9uXQorICAgICAgICA0MDQ1LCAvLyBsb2NrZAorICAgICAgICA0MTkwLCAvLyBNYW5hZ2VT
aWV2ZSBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDYwMDAsIC8vIFgxMQorICAgICAgICA2NjY1
LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2NiwgLy8gQWx0
ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2NjcsIC8vIFN0YW5kYXJkIElS
QyBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxl
IGFkZGl0aW9uXQorICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlv
bl0KKyAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9uXQor
ICAgICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgaW52YWxp
ZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCisg
ICAgfTsKKworICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxp
c3QsIGFsbG93IGl0LgorICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJsb2Nr
ZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKKyAgICBpZiAoIXN0ZDo6
YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2Nr
ZWRQb3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgor
ICAgIGlmICgocG9ydC52YWx1ZSgpID09IDIxIHx8IHBvcnQudmFsdWUoKSA9PSAyMikgJiYgdXJs
LnByb3RvY29sSXMoImZ0cCIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEFsbG93
IGFueSBwb3J0IG51bWJlciBpbiBhIGZpbGUgVVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIgaXMg
aWdub3JlZC4KKyAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGUiKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBtaW1lVHlwZUZyb21EYXRh
VVJMKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwo
dXJsLCAiZGF0YSIpKTsKKworICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9y
IHdoZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVyPwor
ICAgIC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGlu
IHRoYXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJlY3QuCisgICAgYXV0byBpbmRleCA9IHVy
bC5maW5kKCc7JywgNSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICBpbmRl
eCA9IHVybC5maW5kKCcsJywgNSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUgaXQg
c291bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcgdGV4dC9wbGFpbi4KKyAgICAgICAg
Ly8gQnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNvbWUg
dGltZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBhdCB0aGlzIHRpbWUuCisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOworICAgIH0KKyAgICBpZiAoaW5kZXggPT0gNSkKKyAgICAg
ICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zOworICAgIEFTU0VSVChpbmRleCA+PSA1KTsKKyAgICBy
ZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCk7Cit9CisKK1N0cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNp
Z25lZCBsZW5ndGgpIGNvbnN0Cit7CisgICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0
aCkKKyAgICAgICAgcmV0dXJuIHN0cmluZygpOworCisgICAgcmV0dXJuIHN0cmluZygpLmxlZnQo
bGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7
Cit9CisKK1VSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVs
YXRpdmVQYXJ0KQoreworICAgIHJldHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8i
ICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKK30K
KworVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQoreworICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7Cit9
CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJs
KQoreworICAgIHRzIDw8IHVybC5zdHJpbmcoKTsKKyAgICByZXR1cm4gdHM7Cit9CisKKyNpZiAh
UExBVEZPUk0oQ09DT0EpICYmICFVU0UoU09VUCkKK3N0YXRpYyBib29sIGlzSVB2NEFkZHJlc3Mo
U3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYXV0byBjb3VudCA9IDA7CisKKyAgICBmb3IgKGNv
bnN0IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicpKSB7
CisgICAgICAgIGlmIChjb3VudCA+PSA0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gb2N0ZXQubGVuZ3RoKCk7CisgICAgICAgIGlmICgh
bGVuZ3RoIHx8IGxlbmd0aCA+IDMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgYXV0byB2YWx1ZSA9IDA7CisgICAgICAgIGZvciAoYXV0byBpID0gMHU7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgY29uc3QgYXV0byBkaWdpdCA9IG9jdGV0W2ldOworCisgICAg
ICAgICAgICAvLyBQcm9oaWJpdCBsZWFkaW5nIHplcm9lcy4KKyAgICAgICAgICAgIGlmIChkaWdp
dCA+ICc5JyB8fCBkaWdpdCA8ICghaSAmJiBsZW5ndGggPiAxID8gJzEnIDogJzAnKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHZhbHVlID0gMTAgKiB2YWx1
ZSArIChkaWdpdCAtICcwJyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodmFsdWUgPiAyNTUp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY291bnQrKzsKKyAgICB9CisK
KyAgICByZXR1cm4gKGNvdW50ID09IDQpOworfQorCitzdGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNz
KFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGVudW0gU2tpcFN0YXRlIHsgTm9uZSwgV2lsbFNr
aXAsIFNraXBwaW5nLCBTa2lwcGVkLCBGaW5hbCB9OworICAgIGF1dG8gc2tpcFN0YXRlID0gTm9u
ZTsKKyAgICBhdXRvIGNvdW50ID0gMDsKKworICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQgOiBz
dHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnOicpKSB7CisgICAgICAgIGlmIChjb3Vu
dCA+PSA4IHx8IHNraXBTdGF0ZSA9PSBGaW5hbCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IGhleHRldC5sZW5ndGgoKTsKKyAgICAgICAg
aWYgKCFsZW5ndGgpIHsKKyAgICAgICAgICAgIC8vIDo6IG1heSBiZSB1c2VkIGFueXdoZXJlIHRv
IHNraXAgMSB0byA4IGhleHRldHMsIGJ1dCBvbmx5IG9uY2UuCisgICAgICAgICAgICBpZiAoc2tp
cFN0YXRlID09IFNraXBwZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgICAgICBpZiAoc2tpcFN0YXRlID09IE5vbmUpCisgICAgICAgICAgICAgICAgc2tpcFN0YXRl
ID0gIWNvdW50ID8gV2lsbFNraXAgOiBTa2lwcGluZzsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNr
aXBTdGF0ZSA9PSBXaWxsU2tpcCkKKyAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGlu
ZzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNraXBTdGF0
ZSA9PSBXaWxsU2tpcCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAo
c2tpcFN0YXRlID09IFNraXBwaW5nKQorICAgICAgICAgICAgc2tpcFN0YXRlID0gU2tpcHBlZDsK
KworICAgICAgICBpZiAobGVuZ3RoID4gNCkgeworICAgICAgICAgICAgLy8gQW4gSVB2NCBhZGRy
ZXNzIG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBmaW5hbCB0d28gaGV4dGV0cy4KKyAgICAg
ICAgICAgIGlmICgoc2tpcFN0YXRlID09IE5vbmUgJiYgY291bnQgIT0gNikgfHwgKHNraXBTdGF0
ZSA9PSBTa2lwcGVkICYmIGNvdW50ID49IDYpIHx8ICFpc0lQdjRBZGRyZXNzKGhleHRldCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBza2lwU3RhdGUgPSBG
aW5hbDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChj
b25zdCBhdXRvIGNvZGVVbml0IDogaGV4dGV0LmNvZGVVbml0cygpKSB7CisgICAgICAgICAgICAv
LyBJUHY2IGFsbG93cyBsZWFkaW5nIHplcm9lcy4KKyAgICAgICAgICAgIGlmICghaXNBU0NJSUhl
eERpZ2l0KGNvZGVVbml0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKworICAgICAgICBjb3VudCsrOworICAgIH0KKworICAgIHJldHVybiAoY291bnQgPT0gOCAm
JiBza2lwU3RhdGUgPT0gTm9uZSkgfHwgc2tpcFN0YXRlID09IFNraXBwZWQgfHwgc2tpcFN0YXRl
ID09IEZpbmFsOworfQorCitib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9z
dCkKK3sKKyAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVy
biBpc0lQdjRBZGRyZXNzKGhvc3QpOworCisgICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7
Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9VUkwuaCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NzllNjliMDk2
YzVmMDVlNzE4YzYzMjlmZmI3ZTZmNzI2N2M4ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9VUkwuaApAQCAtMCwwICsxLDM5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCisjaWYgVVNFKENGKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTCogQ0ZVUkxSZWY7
CisjZW5kaWYKKworI2lmIFVTRShTT1VQKQorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJT
b3VwLmg+CisjZW5kaWYKKworI2lmIFVTRShGT1VOREFUSU9OKQorT0JKQ19DTEFTUyBOU1VSTDsK
KyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFRleHRTdHJlYW07CisKK2NsYXNzIFVS
TFRleHRFbmNvZGluZyB7CitwdWJsaWM6CisgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gZW5j
b2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB+VVJM
VGV4dEVuY29kaW5nKCkgeyB9OworfTsKKworc3RydWN0IFVSTEhhc2g7CisKK2NsYXNzIFdURl9F
WFBPUlRfUFJJVkFURSBVUkwgeworcHVibGljOgorICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGlj
aCBjb250YWlucyBhIG51bGwgc3RyaW5nLgorICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9CisK
KyAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3Ry
aW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KKyAgICBib29sIGlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQorCisgICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBn
aXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQorICAgIC8vIFVSTFRleHRFbmNvZGluZyBp
cyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJl
CisgICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdp
bGwgYmUgaW50ZXJwcmV0ZWQgYXMKKyAgICAvLyBhYnNvbHV0ZS4KKyAgICAvLyBGSVhNRTogSWYg
dGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAor
ICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBh
bGwgaW52YWxpZCBiYXNlIFVSTHMKKyAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwg
YW5kIGVtcHR5IGJhc2UgVVJMcy4KKyAgICBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJp
bmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7CisKKyAgICBz
dGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYpOworICAgIHN0
YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmKTsKKworICAg
IFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdDsKKworICAgIC8vIEZJWE1F
OiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBoYXJtb25pemVkIHNvIHRoYXQgcGFzc2lu
ZyBhCisgICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBlbXB0eSBzdHJpbmcgZ2l2ZXMgdGhlIHNh
bWUgcmVzdWx0IGFzIHRoZQorICAgIC8vIHN0YW5kYXJkIFN0cmluZyBjb25zdHJ1Y3Rvci4KKwor
ICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNl
IGEgVVJMIG9uIGFub3RoZXIKKyAgICAvLyB0aHJlYWQuIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0
cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzCisgICAgLy8gbm8gb3RoZXIg
cmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2ln
bm1lbnQuCisgICAgVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0OworCisgICAgYm9vbCBpc051bGwo
KSBjb25zdDsKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKKyAgICBib29sIGlzVmFsaWQoKSBj
b25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQg
cG9ydCBmb3IgdGhlIFVSTC4KKyAgICAvLyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2
ZSBhIGhvc3QgYW5kIHBvcnQuCisgICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyBy
ZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQorCisgICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNv
bnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KKyAgICBib29sIGlzSGllcmFyY2hpY2Fs
KCkgY29uc3Q7CisKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nOyB9CisKKyAgICBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVu
c2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OworCisgICAgU3RyaW5nVmlldyBwcm90b2NvbCgp
IGNvbnN0OworICAgIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKKyAgICBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsK
KyAgICBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0OworICAgIFN0cmluZyB1c2Vy
KCkgY29uc3Q7CisgICAgU3RyaW5nIHBhc3MoKSBjb25zdDsKKyAgICBTdHJpbmcgcGF0aCgpIGNv
bnN0OworICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OworICAgIFN0cmluZyBx
dWVyeSgpIGNvbnN0OworICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKKyAg
ICBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworCisgICAgYm9vbCBoYXNVc2Vy
bmFtZSgpIGNvbnN0OworICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKKyAgICBib29sIGhh
c1F1ZXJ5KCkgY29uc3Q7CisgICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OworICAgIGJvb2wg
aGFzUGF0aCgpIGNvbnN0OworCisgICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygpLCB0aGVz
ZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCisgICAgLy8gVGhpcyBp
cyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5n
IGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgorICAgIFN0cmluZyBlbmNvZGVkVXNlcigp
IGNvbnN0OworICAgIFN0cmluZyBlbmNvZGVkUGFzcygpIGNvbnN0OworCisgICAgU3RyaW5nIGJh
c2VBc1N0cmluZygpIGNvbnN0OworCisgICAgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29uc3Q7
CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wgaXMg
dGhlIHNhbWUgYXMgdGhlIG51bGwtCisgICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVudC4g
VGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KKyAgICBib29sIHByb3RvY29sSXMoY29u
c3QgY2hhciopIGNvbnN0OworICAgIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsK
KyAgICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiYmxv
YiIpOyB9CisgICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29s
SXMoImRhdGEiKTsgfQorICAgIGJvb2wgcHJvdG9jb2xJc0Fib3V0KCkgY29uc3Q7CisgICAgYm9v
bCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3Q7CisgICAgYm9vbCBpc0xvY2FsRmlsZSgp
IGNvbnN0OworICAgIGJvb2wgaXNCbGFua1VSTCgpIGNvbnN0OworICAgIGJvb2wgY2Fubm90QmVB
QmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fubm90QmVBQmFzZVVSTDsgfQorCisgICAgYm9v
bCBpc01hdGNoaW5nRG9tYWluKGNvbnN0IFN0cmluZyYpIGNvbnN0OworCisgICAgYm9vbCBzZXRQ
cm90b2NvbChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7
CisKKyAgICB2b2lkIHJlbW92ZVBvcnQoKTsKKyAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hv
cnQpOworCisgICAgLy8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIu
CisgICAgdm9pZCBzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0
VXNlcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5nJik7CisK
KyAgICAvLyBJZiB5b3UgcGFzcyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMs
IHRoZSByZXN1bHRpbmcgcGF0aAorICAgIC8vIHdpbGwgYmUgIi8iLgorICAgIHZvaWQgc2V0UGF0
aChjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0aCBhIHF1
ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVkCisgICAgLy8gZm9yIHlv
dS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZlIGEgIj8i
IGluIHRoZQorICAgIC8vIFVSTCAod2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xlYXIgdGhl
IHF1ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcuCisgICAgdm9pZCBzZXRRdWVyeShjb25zdCBTdHJp
bmcmKTsKKworICAgIHZvaWQgc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOworICAg
IHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisKKyAgICB2b2lkIHJlbW92ZVF1ZXJ5
QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7CisKKyAgICBzdGF0aWMgYm9vbCBob3N0SXNJUEFkZHJl
c3MoU3RyaW5nVmlldyk7CisKKyAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25zdDsKKyAgICB1
bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7CisgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNo
KCkgY29uc3Q7CisKKyAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4g
c3RyaW5nKCk7IH0KKworI2lmIFVTRShDRikKKyAgICBVUkwoQ0ZVUkxSZWYpOworICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgVVNFKFNP
VVApCisgICAgVVJMKFNvdXBVUkkqKTsKKyAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IGNyZWF0ZVNv
dXBVUkkoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgVVJMKE5T
VVJMKik7CisgICAgb3BlcmF0b3IgTlNVUkwqKCkgY29uc3Q7CisjZW5kaWYKKyNpZmRlZiBfX09C
SkNfXworICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9
CisjZW5kaWYKKworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIHByaW50KCkgY29uc3Q7CisjZW5k
aWYKKworICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShE
ZWNvZGVyJiwgVVJMJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgVVJMUGFyc2VyOworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIHN0YXRpYyBib29s
IHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOworICAgIHZvaWQgY29weVRv
QnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0OworICAgIHVuc2lnbmVkIGhv
c3RTdGFydCgpIGNvbnN0OworCisgICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Cisg
ICAgZnJpZW5kIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVF
cXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKyAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKworICAgIFN0
cmluZyBtX3N0cmluZzsKKworICAgIHVuc2lnbmVkIG1faXNWYWxpZCA6IDE7CisgICAgdW5zaWdu
ZWQgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKKyAgICB1bnNpZ25lZCBtX2Nhbm5vdEJl
QUJhc2VVUkwgOiAxOworCisgICAgLy8gVGhpcyBpcyBvdXQgb2Ygb3JkZXIgdG8gYWxpZ24gdGhl
IGJpdHMgYmV0dGVyLiBUaGUgcG9ydCBpcyBhZnRlciB0aGUgaG9zdC4KKyAgICB1bnNpZ25lZCBt
X3BvcnRMZW5ndGggOiAzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4UG9ydExl
bmd0aCA9ICgxIDw8IDMpIC0gMTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4
U2NoZW1lTGVuZ3RoID0gKDEgPDwgMjYpIC0gMTsKKyAgICB1bnNpZ25lZCBtX3NjaGVtZUVuZCA6
IDI2OworICAgIHVuc2lnbmVkIG1fdXNlclN0YXJ0OworICAgIHVuc2lnbmVkIG1fdXNlckVuZDsK
KyAgICB1bnNpZ25lZCBtX3Bhc3N3b3JkRW5kOworICAgIHVuc2lnbmVkIG1faG9zdEVuZDsKKyAg
ICB1bnNpZ25lZCBtX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICB1bnNpZ25lZCBtX3BhdGhFbmQ7
CisgICAgdW5zaWduZWQgbV9xdWVyeUVuZDsKK307CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVS
TCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6ZW9mKHVuc2lnbmVkKSwgIlVSTCBzaG91bGQg
c3RheSBzbWFsbCIpOworCit0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgVVJMOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgVVJMOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgVVJMJiB1cmwpCit7CisgICAgYXV0byBvcHRpb25hbFVSTCA9IFVSTDo6ZGVjb2Rl
KGRlY29kZXIpOworICAgIGlmICghb3B0aW9uYWxVUkwpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25hbFVSTCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgU3RyaW5nIHN0cmluZzsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0cmluZykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0
dXJuIFVSTChVUkwoKSwgc3RyaW5nKTsKK30KKworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xIb3N0
QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKKworV1RGX0VY
UE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYmxhbmtVUkwoKTsKKworLy8gRnVuY3Rpb25zIHRvIGRv
IFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCisvLyBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0
IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJMLgorLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVy
ZW50IGZyb20gdGhlIFVSTCBmdW5jdGlvbnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhl
IHN0cmluZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJzYWJsZSBVUkwuCisvLyBUaGlzIGlzIGVzcGVj
aWFsbHkgaW1wb3J0YW50IGJlY2F1c2UgdmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVj
ZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxpZCBieSBVUkwuCisKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KFN0
cmluZ1ZpZXcgdXJsKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJbkhUVFBG
YW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29s
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1aW50
MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29s
IHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYpOyAvLyBCbGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQg
bmV2ZXIgYmUgdXNlZCBmb3IgV2ViIHJlc291cmNlcy4KKworV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNsZWFy
RGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKTsKKworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgaXNWYWxpZFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworCitXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpOworCisv
LyBGSVhNRTogVGhpcyBpcyBhIHdyb25nIGNvbmNlcHQgdG8gZXhwb3NlLCBkaWZmZXJlbnQgcGFy
dHMgb2YgYSBVUkwgbmVlZCBkaWZmZXJlbnQgZXNjYXBpbmcgcGVyIHRoZSBVUkwgU3RhbmRhcmQu
CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMo
Y29uc3QgU3RyaW5nJik7CisKKy8vIElubGluZXMuCisKK2lubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5nKCkgPT0g
Yi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNv
bnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiOworfQorCitpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQoreworICAg
IHJldHVybiBhID09IGIuc3RyaW5nKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYi5z
dHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0
IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiOworfQorCitpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIHJl
dHVybiBhICE9IGIuc3RyaW5nKCk7Cit9CisKKy8vIElubGluZSB2ZXJzaW9ucyBvZiBzb21lIG5v
bi1Hb29nbGVVUkwgZnVuY3Rpb25zIHNvIHdlIGNhbiBnZXQgaW5saW5pbmcKKy8vIHdpdGhvdXQg
aGF2aW5nIHRvIGhhdmUgYSBsb3Qgb2YgdWdseSBpZmRlZnMgaW4gdGhlIGNsYXNzIGRlZmluaXRp
b24uCisKK2lubGluZSBib29sIFVSTDo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
dHJpbmcuaXNOdWxsKCk7Cit9CisKK2lubGluZSBib29sIFVSTDo6aXNFbXB0eSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5saW5lIGJvb2wgVVJMOjpp
c1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkOworfQorCitpbmxpbmUgYm9v
bCBVUkw6Omhhc1BhdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9ob3N0
RW5kICsgbV9wb3J0TGVuZ3RoOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc1VzZXJuYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VyRW5kID4gbV91c2VyU3RhcnQ7Cit9CisKK2lubGlu
ZSBib29sIFVSTDo6aGFzUGFzc3dvcmQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Bhc3N3b3Jk
RW5kID4gKG1fdXNlckVuZCArIDEpOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhhc1F1ZXJ5KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9xdWVyeUVuZCA+IG1fcGF0aEVuZDsKK30KKworaW5saW5l
IGJvb2wgVVJMOjpoYXNGcmFnbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNWYWxpZCAm
JiBtX3N0cmluZy5sZW5ndGgoKSA+IG1fcXVlcnlFbmQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseTsKK30KKworaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aFN0YXJ0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOworfQorCitpbmxpbmUg
dW5zaWduZWQgVVJMOjpwYXRoRW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXRoRW5kOwor
fQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdAorewor
ICAgIHJldHVybiBtX3BhdGhBZnRlckxhc3RTbGFzaDsKK30KKworV1RGX0VYUE9SVF9QUklWQVRF
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBVUkwm
KTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8VVJMPjsKK3RlbXBsYXRlPD4gc3Ry
dWN0IEhhc2hUcmFpdHM8VVJMPjsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkxIYXNoLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDAyZmEzZGNjZjY2MTAwZmM4NTA4NjZlYzM1NDdhM2E4NmRmOWJlMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhhc2guaApAQCAtMCwwICsxLDU4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVVJMSGFz
aF9oCisjZGVmaW5lIFVSTEhhc2hfaAorCisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBVUkxIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBVUkwmIGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiBrZXkuc3RyaW5n
KCkuaW1wbCgpLT5oYXNoKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
VVJMJiBhLCBjb25zdCBVUkwmIGIpCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6
ZXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKKy8vIFVS
TEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5nCit0ZW1wbGF0ZTw+IHN0cnVjdCBE
ZWZhdWx0SGFzaDxVUkw+IHsKKyAgICB1c2luZyBIYXNoID0gVVJMSGFzaDsKK307CisKK3RlbXBs
YXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VVJMPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxVUkw+
IHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVUkxIYXNoX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQ
YXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwOWQ0YjgxZjk4MjMzYWQ0YTk5Njk1YjNlOWRhMzRjYjFj
ZTZjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBA
IC0wLDAgKzEsMjkyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KKworI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUg
PG11dGV4PgorI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3V0
ZjguaD4KKyNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
I2RlZmluZSBVUkxfUEFSU0VSX0RFQlVHR0lORyAwCisKKyNpZiBVUkxfUEFSU0VSX0RFQlVHR0lO
RworI2RlZmluZSBVUkxfUEFSU0VSX0xPRyguLi4pIFdURkxvZ0Fsd2F5cyhfX1ZBX0FSR1NfXykK
KyNlbHNlCisjZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4uLikKKyNlbmRpZgorICAgIAordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2NsYXNzIENvZGVQb2ludEl0ZXJhdG9yIHsKK3B1
YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yKCkgeyB9CisgICAgQUxX
QVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBiZWdpbiwg
Y29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQorICAgICAgICA6IG1fYmVnaW4oYmVnaW4pCisgICAg
ICAgICwgbV9lbmQoZW5kKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSBD
b2RlUG9pbnRJdGVyYXRvcihjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgYmVnaW4sIGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yJiBlbmQpCisgICAgICAgIDogQ29kZVBvaW50SXRlcmF0b3IoYmVnaW4u
bV9iZWdpbiwgZW5kLm1fYmVnaW4pCisgICAgeworICAgICAgICBBU1NFUlQoZW5kLm1fYmVnaW4g
Pj0gYmVnaW4ubV9iZWdpbik7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgVUNoYXIz
MiBvcGVyYXRvciooKSBjb25zdDsKKyAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCk7CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luCisgICAgICAgICAgICAmJiBtX2VuZCA9PSBvdGhlci5t
X2VuZDsKKyAgICB9CisgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3ImIG9wZXJhdG9yPShj
b25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpCisgICAgeworICAgICAgICBtX2JlZ2luID0g
b3RoZXIubV9iZWdpbjsKKyAgICAgICAgbV9lbmQgPSBvdGhlci5tX2VuZDsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBhdEVuZCgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA8PSBtX2VuZCk7CisgICAgICAgIHJldHVy
biBtX2JlZ2luID49IG1fZW5kOworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHNpemVf
dCBjb2RlVW5pdHNTaW5jZShjb25zdCBDaGFyYWN0ZXJUeXBlKiByZWZlcmVuY2UpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV9iZWdpbiA+PSByZWZlcmVuY2UpOworICAgICAgICByZXR1
cm4gbV9iZWdpbiAtIHJlZmVyZW5jZTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHNpemVf
dCBjb2RlVW5pdHNTaW5jZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gY29kZVVuaXRzU2luY2Uob3RoZXIubV9iZWdpbik7CisgICAg
fQorICAgIAorcHJpdmF0ZToKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2JlZ2luIHsgbnVs
bHB0ciB9OworICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIG1fZW5kIHsgbnVsbHB0ciB9OworfTsK
KwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBVQ2hhcjMyIENvZGVQb2ludEl0ZXJhdG9yPExD
aGFyPjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWF0RW5kKCkpOworICAgIHJl
dHVybiAqbV9iZWdpbjsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBhdXRvIENvZGVQ
b2ludEl0ZXJhdG9yPExDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgor
eworICAgIG1fYmVnaW4rKzsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRlPD4KK0FM
V0FZU19JTkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj46Om9wZXJhdG9yKigp
IGNvbnN0Cit7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBVQ2hhcjMyIGM7CisgICAgVTE2
X0dFVChtX2JlZ2luLCAwLCAwLCBtX2VuZCAtIG1fYmVnaW4sIGMpOworICAgIHJldHVybiBjOwor
fQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIGF1dG8gQ29kZVBvaW50SXRlcmF0b3I8VUNo
YXI+OjpvcGVyYXRvcisrKCkgLT4gQ29kZVBvaW50SXRlcmF0b3ImCit7CisgICAgdW5zaWduZWQg
aSA9IDA7CisgICAgc2l6ZV90IGxlbmd0aCA9IG1fZW5kIC0gbV9iZWdpbjsKKyAgICBVMTZfRldE
XzEobV9iZWdpbiwgaSwgbGVuZ3RoKTsKKyAgICBtX2JlZ2luICs9IGk7CisgICAgcmV0dXJuICp0
aGlzOworfQorICAgIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBhcHBlbmRDb2RlUG9pbnQo
VmVjdG9yPFVDaGFyPiYgZGVzdGluYXRpb24sIFVDaGFyMzIgY29kZVBvaW50KQoreworICAgIGlm
IChVX0lTX0JNUChjb2RlUG9pbnQpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLmFwcGVuZChzdGF0
aWNfY2FzdDxVQ2hhcj4oY29kZVBvaW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
ZGVzdGluYXRpb24ucmVzZXJ2ZUNhcGFjaXR5KGRlc3RpbmF0aW9uLnNpemUoKSArIDIpOworICAg
IGRlc3RpbmF0aW9uLnVuY2hlY2tlZEFwcGVuZChVMTZfTEVBRChjb2RlUG9pbnQpKTsKKyAgICBk
ZXN0aW5hdGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X1RSQUlMKGNvZGVQb2ludCkpOworfQorCitl
bnVtIFVSTENoYXJhY3RlckNsYXNzIHsKKyAgICBVc2VySW5mbyA9IDB4MSwKKyAgICBEZWZhdWx0
ID0gMHgyLAorICAgIEZvcmJpZGRlbkhvc3QgPSAweDQsCisgICAgUXVlcnlQZXJjZW50ID0gMHg4
LAorICAgIFNsYXNoUXVlc3Rpb25Pckhhc2ggPSAweDEwLAorICAgIFZhbGlkU2NoZW1lID0gMHgy
MCwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGNoYXJhY3RlckNsYXNzVGFibGVbMjU2XSA9
IHsKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0
LCAvLyAweDAKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MQor
ICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgyCisgICAgVXNlcklu
Zm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDMKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NAorICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5
UGVyY2VudCwgLy8gMHg1CisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAv
LyAweDYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NworICAg
IFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg4CisgICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHg5CisgICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHhBCisg
ICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEIKKyAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4QworICAgIFVzZXJJbmZvIHwgRGVmYXVs
dCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4RAorICAgIFVzZXJJbmZvIHwg
RGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhFCisgICAgVXNlckluZm8gfCBEZWZhdWx0IHwg
UXVlcnlQZXJjZW50LCAvLyAweEYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4MTAKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
MTEKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTIKKyAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTMKKyAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQg
fCBRdWVyeVBlcmNlbnQsIC8vIDB4MTUKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBl
cmNlbnQsIC8vIDB4MTYKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MTcKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTgKKyAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTkKKyAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUEKKyAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUIKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQsIC8vIDB4MUMKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQs
IC8vIDB4MUQKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUUK
KyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUYKKyAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnICcKKyAg
ICAwLCAvLyAnIScKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vICci
JworICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IFNsYXNoUXVlc3Rpb25P
ckhhc2ggfCBGb3JiaWRkZW5Ib3N0LCAvLyAnIycKKyAgICAwLCAvLyAnJCcKKyAgICBGb3JiaWRk
ZW5Ib3N0LCAvLyAnJScKKyAgICAwLCAvLyAnJicKKyAgICAwLCAvLyAnXCcnCisgICAgMCwgLy8g
JygnCisgICAgMCwgLy8gJyknCisgICAgMCwgLy8gJyonCisgICAgVmFsaWRTY2hlbWUsIC8vICcr
JworICAgIDAsIC8vICcsJworICAgIFZhbGlkU2NoZW1lLCAvLyAnLScKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJy4nCisgICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVu
SG9zdCwgLy8gJy8nCisgICAgVmFsaWRTY2hlbWUsIC8vICcwJworICAgIFZhbGlkU2NoZW1lLCAv
LyAnMScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzInCisgICAgVmFsaWRTY2hlbWUsIC8vICczJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnNCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJzUnCisgICAgVmFs
aWRTY2hlbWUsIC8vICc2JworICAgIFZhbGlkU2NoZW1lLCAvLyAnNycKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJzgnCisgICAgVmFsaWRTY2hlbWUsIC8vICc5JworICAgIFVzZXJJbmZvIHwgRm9yYmlk
ZGVuSG9zdCwgLy8gJzonCisgICAgVXNlckluZm8sIC8vICc7JworICAgIFVzZXJJbmZvIHwgRGVm
YXVsdCB8IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vICc8JworICAgIFVzZXJJbmZv
LCAvLyAnPScKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRk
ZW5Ib3N0LCAvLyAnPicKKyAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBTbGFzaFF1ZXN0aW9uT3JI
YXNoIHwgRm9yYmlkZGVuSG9zdCwgLy8gJz8nCisgICAgVXNlckluZm8gfCBGb3JiaWRkZW5Ib3N0
LCAvLyAnQCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0EnCisgICAgVmFsaWRTY2hlbWUsIC8vICdC
JworICAgIFZhbGlkU2NoZW1lLCAvLyAnQycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0QnCisgICAg
VmFsaWRTY2hlbWUsIC8vICdFJworICAgIFZhbGlkU2NoZW1lLCAvLyAnRicKKyAgICBWYWxpZFNj
aGVtZSwgLy8gJ0cnCisgICAgVmFsaWRTY2hlbWUsIC8vICdIJworICAgIFZhbGlkU2NoZW1lLCAv
LyAnSScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ0onCisgICAgVmFsaWRTY2hlbWUsIC8vICdLJwor
ICAgIFZhbGlkU2NoZW1lLCAvLyAnTCcKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ00nCisgICAgVmFs
aWRTY2hlbWUsIC8vICdOJworICAgIFZhbGlkU2NoZW1lLCAvLyAnTycKKyAgICBWYWxpZFNjaGVt
ZSwgLy8gJ1AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdRJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
UicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdUJworICAg
IFZhbGlkU2NoZW1lLCAvLyAnVScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ1YnCisgICAgVmFsaWRT
Y2hlbWUsIC8vICdXJworICAgIFZhbGlkU2NoZW1lLCAvLyAnWCcKKyAgICBWYWxpZFNjaGVtZSwg
Ly8gJ1knCisgICAgVmFsaWRTY2hlbWUsIC8vICdaJworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVu
SG9zdCwgLy8gJ1snCisgICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlk
ZGVuSG9zdCwgLy8gJ1xcJworICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ10nCisg
ICAgVXNlckluZm8sIC8vICdeJworICAgIDAsIC8vICdfJworICAgIFVzZXJJbmZvIHwgRGVmYXVs
dCwgLy8gJ2AnCisgICAgVmFsaWRTY2hlbWUsIC8vICdhJworICAgIFZhbGlkU2NoZW1lLCAvLyAn
YicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2MnCisgICAgVmFsaWRTY2hlbWUsIC8vICdkJworICAg
IFZhbGlkU2NoZW1lLCAvLyAnZScKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ2YnCisgICAgVmFsaWRT
Y2hlbWUsIC8vICdnJworICAgIFZhbGlkU2NoZW1lLCAvLyAnaCcKKyAgICBWYWxpZFNjaGVtZSwg
Ly8gJ2knCisgICAgVmFsaWRTY2hlbWUsIC8vICdqJworICAgIFZhbGlkU2NoZW1lLCAvLyAnaycK
KyAgICBWYWxpZFNjaGVtZSwgLy8gJ2wnCisgICAgVmFsaWRTY2hlbWUsIC8vICdtJworICAgIFZh
bGlkU2NoZW1lLCAvLyAnbicKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ28nCisgICAgVmFsaWRTY2hl
bWUsIC8vICdwJworICAgIFZhbGlkU2NoZW1lLCAvLyAncScKKyAgICBWYWxpZFNjaGVtZSwgLy8g
J3InCisgICAgVmFsaWRTY2hlbWUsIC8vICdzJworICAgIFZhbGlkU2NoZW1lLCAvLyAndCcKKyAg
ICBWYWxpZFNjaGVtZSwgLy8gJ3UnCisgICAgVmFsaWRTY2hlbWUsIC8vICd2JworICAgIFZhbGlk
U2NoZW1lLCAvLyAndycKKyAgICBWYWxpZFNjaGVtZSwgLy8gJ3gnCisgICAgVmFsaWRTY2hlbWUs
IC8vICd5JworICAgIFZhbGlkU2NoZW1lLCAvLyAneicKKyAgICBVc2VySW5mbyB8IERlZmF1bHQs
IC8vICd7JworICAgIFVzZXJJbmZvLCAvLyAnfCcKKyAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8v
ICd9JworICAgIDAsIC8vICd+JworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg3RgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg4MAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg4MgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MworICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg4NAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg4NgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NworICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg4OAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4
QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4Qwor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg4RgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MAorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg5MQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg5MworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg5NQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg5NworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5OAorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg5OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg5QgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5
RAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5Rgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhBMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMworICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhBNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhBNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNworICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhBOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBOQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhBQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBQgorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhBQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhBRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhC
MAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNAorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhCNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNgorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhCNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCOAorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhCOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQQorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhCQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQworICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhCRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCRQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhCRgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhDMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhD
MworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNQor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNworICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhDOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDOQorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhDQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQgorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhDQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhDRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhEMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMQorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhEMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMworICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhENAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhE
NgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOAor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQQorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhEQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQworICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhERAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhERgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMAorICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhFMQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMgorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhFMworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNAorICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhFNQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhFNworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhF
OQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQgor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRAorICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhFRQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRgorICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhGMAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMQorICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhGMgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMworICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhGNAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNQorICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhGNgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNworICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhGOAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGOQorICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhGQQorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQgorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhG
QworICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRAorICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRQor
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRgorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0MwQ29udHJvbChDaGFyYWN0ZXJU
eXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MUY7IH0KK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRy
b2xPclNwYWNlKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0g
MHgyMDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBz
dGF0aWMgYm9vbCBpc1RhYk9yTmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gY2hhcmFjdGVyIDw9IDB4RCAmJiBjaGFyYWN0ZXIgPj0gMHg5ICYmIGNoYXJhY3RlciAhPSAw
eEIgJiYgY2hhcmFjdGVyICE9IDB4QzsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luU2ltcGxlRW5jb2RlU2V0KENoYXJhY3Rl
clR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGlzQzBDb250cm9s
KGNoYXJhY3Rlcik7IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaXNJbkRlZmF1bHRFbmNvZGVTZXQoQ2hhcmFjdGVyVHlwZSBjaGFy
YWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xhc3NUYWJsZVtj
aGFyYWN0ZXJdICYgRGVmYXVsdDsgfQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
QUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoQ2hhcmFjdGVy
VHlwZSBjaGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xh
c3NUYWJsZVtjaGFyYWN0ZXJdICYgVXNlckluZm87IH0KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNQZXJjZW50T3JOb25BU0NJSShD
aGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gIWlzQVNDSUkoY2hhcmFjdGVyKSB8fCBj
aGFyYWN0ZXIgPT0gJyUnOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBib29sIGlzU2xhc2hRdWVzdGlvbk9ySGFzaChDaGFyYWN0ZXJUeXBl
IGNoYXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICdcXCcgJiYgY2hhcmFjdGVyQ2xhc3NU
YWJsZVtjaGFyYWN0ZXJdICYgU2xhc2hRdWVzdGlvbk9ySGFzaDsgfQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1ZhbGlkU2NoZW1l
Q2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0g
J3onICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFZhbGlkU2NoZW1lOyB9Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29s
IGlzRm9yYmlkZGVuSG9zdENvZGVQb2ludChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1
cm4gY2hhcmFjdGVyIDw9ICddJyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBG
b3JiaWRkZW5Ib3N0OyB9CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIHNob3VsZFBlcmNlbnRF
bmNvZGVRdWVyeUJ5dGUodWludDhfdCBieXRlLCBjb25zdCBib29sJiB1cmxJc1NwZWNpYWwpCit7
CisgICAgaWYgKGNoYXJhY3RlckNsYXNzVGFibGVbYnl0ZV0gJiBRdWVyeVBlcmNlbnQpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmIChieXRlID09ICdcJycgJiYgdXJsSXNTcGVjaWFsKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVVJMUGFy
c2VyOjppc0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gV1RGOjpp
c0luVXNlckluZm9FbmNvZGVTZXQoYyk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGUsIFVSTFBhcnNlcjo6UmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZpb2xh
dGlvbj4KK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFkdmFuY2UoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikKK3sKKyAg
ICArK2l0ZXJhdG9yOworICAgIHdoaWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQoKSAmJiBp
c1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICBpZiAocmVwb3J0U3ludGF4Vmlv
bGF0aW9uID09IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6WWVzKQorICAgICAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAr
K2l0ZXJhdG9yOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K2Jvb2wgVVJMUGFyc2VyOjp0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9y
dFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVw
b3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgIHJldHVybiBpdGVyYXRvci5h
dEVuZCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lO
TElORSBib29sIFVSTFBhcnNlcjo6aXNXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkg
fHwgIWlzQVNDSUlBbHBoYSgqaXRlcmF0b3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
YWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRv
cik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoKml0ZXJhdG9yID09ICc6JykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKFVO
TElLRUxZKCppdGVyYXRvciA9PSAnfCcpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFwcGVuZFRvQVND
SUlCdWZmZXIoVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgQVNTRVJUKGlzQVNDSUkoY29kZVBv
aW50KSk7CisgICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAg
ICAgbV9hc2NpaUJ1ZmZlci5hcHBlbmQoY29kZVBvaW50KTsKK30KKworQUxXQVlTX0lOTElORSB2
b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJSUJ1ZmZlcihjb25zdCBjaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xh
dGlvbikpCisgICAgICAgIG1fYXNjaWlCdWZmZXIuYXBwZW5kKGNoYXJhY3RlcnMsIGxlbmd0aCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6
YXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoaXRlcmF0b3Ip
KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCppdGVyYXRvcik7CisgICAgYWR2YW5jZShpdGVy
YXRvcik7CisgICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKKyAgICBBU1NFUlQoKml0ZXJh
dG9yID09ICc6JyB8fCAqaXRlcmF0b3IgPT0gJ3wnKTsKKyAgICBpZiAoKml0ZXJhdG9yID09ICd8
JykKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCc6Jyk7CisgICAgYWR2YW5jZShpdGVyYXRvcik7Cit9CisKK2Jvb2wgVVJMUGFyc2Vy
Ojpjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmIGJhc2UpCit7CisgICAgaWYg
KGJhc2UucHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhc2Uu
bV9ob3N0RW5kICsgYmFzZS5tX3BvcnRMZW5ndGggPCBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsK
KyAgICAgICAgaWYgKGJhc2UubV9zdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0
IExDaGFyKiBiZWdpbiA9IGJhc2UubV9zdHJpbmcuY2hhcmFjdGVyczgoKTsKKyAgICAgICAgICAg
IENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQgKyBiYXNl
Lm1fcG9ydExlbmd0aCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7CisgICAg
ICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAgICAgICBh
cHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hh
ciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAgQ29k
ZVBvaW50SXRlcmF0b3I8VUNoYXI+IGMoYmVnaW4gKyBiYXNlLm1faG9zdEVuZCArIGJhc2UubV9w
b3J0TGVuZ3RoICsgMSwgYmVnaW4gKyBiYXNlLm1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAg
ICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkgeworICAgICAgICAgICAgICAgIGFwcGVu
ZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6c2hvdWxkQ29w
eUZpbGVVUkwoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7Cisg
ICAgaWYgKCFpc1dpbmRvd3NEcml2ZUxldHRlcihpdGVyYXRvcikpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgYWR2YW5jZShpdGVyYXRvcik7CisgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGFkdmFuY2UoaXRlcmF0b3IpOworICAgIGlmIChpdGVyYXRvci5h
dEVuZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gIWlzU2xhc2hRdWVzdGlv
bk9ySGFzaCgqaXRlcmF0b3IpOworfQorCitzdGF0aWMgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1
aW50OF90IGJ5dGUsIFZlY3RvcjxMQ2hhcj4mIGJ1ZmZlcikKK3sKKyAgICBidWZmZXIuYXBwZW5k
KCclJyk7CisgICAgYnVmZmVyLmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChieXRl
KSk7CisgICAgYnVmZmVyLmFwcGVuZChsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChieXRlKSk7
Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90IGJ5dGUpCit7
CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCclJyk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcih1cHBlck5pYmJsZVRvQVNDSUlI
ZXhEaWdpdChieXRlKSk7CisgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihsb3dlck5pYmJsZVRvQVND
SUlIZXhEaWdpdChieXRlKSk7Cit9CisKK2NvbnN0IGNoYXIgcmVwbGFjZW1lbnRDaGFyYWN0ZXJV
VEY4UGVyY2VudEVuY29kZWRbMTBdID0gIiVFRiVCRiVCRCI7Citjb25zdCBzaXplX3QgcmVwbGFj
ZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGggPSBzaXplb2YocmVwbGFjZW1l
bnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQpIC0gMTsKKwordGVtcGxhdGU8Ym9vbCgqaXNJ
bkNvZGVTZXQpKFVDaGFyMzIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElO
RSB2b2lkIFVSTFBhcnNlcjo6dXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIEFTU0VSVCghaXRlcmF0b3IuYXRF
bmQoKSk7CisgICAgVUNoYXIzMiBjb2RlUG9pbnQgPSAqaXRlcmF0b3I7CisgICAgaWYgKExJS0VM
WShpc0FTQ0lJKGNvZGVQb2ludCkpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc0luQ29kZVNl
dChjb2RlUG9pbnQpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgICAgIHBlcmNlbnRFbmNvZGVCeXRlKGNvZGVQb2ludCk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihjb2RlUG9pbnQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXNJbkNvZGVTZXQoY29kZVBv
aW50KSwgImlzSW5Db2RlU2V0IHNob3VsZCBhbHdheXMgcmV0dXJuIHRydWUgZm9yIG5vbi1BU0NJ
SSBjaGFyYWN0ZXJzIik7CisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAKKyAg
ICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKGNvZGVQb2ludCkpIHsKKyAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCwgcmVwbGFj
ZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOworICAgIGlu
dDMyX3Qgb2Zmc2V0ID0gMDsKKyAgICBVOF9BUFBFTkRfVU5TQUZFKGJ1ZmZlciwgb2Zmc2V0LCBj
b2RlUG9pbnQpOworICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IG9mZnNldDsgKytpKQorICAg
ICAgICBwZXJjZW50RW5jb2RlQnl0ZShidWZmZXJbaV0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6dXRmOFF1ZXJ5
RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikK
K3sKKyAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOworICAgIFVDaGFyMzIgY29kZVBvaW50
ID0gKml0ZXJhdG9yOworICAgIGlmIChMSUtFTFkoaXNBU0NJSShjb2RlUG9pbnQpKSkgeworICAg
ICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZShjb2RlUG9pbnQs
IG1fdXJsSXNTcGVjaWFsKSkpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRv
cik7CisgICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShjb2RlUG9pbnQpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29kZVBvaW50KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwor
ICAgIAorICAgIGlmICghVV9JU19VTklDT0RFX0NIQVIoY29kZVBvaW50KSkgeworICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVk
LCByZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZExlbmd0aCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKKyAg
ICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAgVThfQVBQRU5EX1VOU0FGRShidWZmZXIsIG9mZnNl
dCwgY29kZVBvaW50KTsKKyAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBvZmZzZXQ7ICsraSkg
eworICAgICAgICBhdXRvIGJ5dGUgPSBidWZmZXJbaV07CisgICAgICAgIGlmIChzaG91bGRQZXJj
ZW50RW5jb2RlUXVlcnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkKKyAgICAgICAgICAgIHBl
cmNlbnRFbmNvZGVCeXRlKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKGJ5dGUpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjplbmNvZGVOb25VVEY4UXVlcnkoY29uc3QgVmVjdG9y
PFVDaGFyPiYgc291cmNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBhdXRvIGVuY29kZWQg
PSBlbmNvZGluZy5lbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcoc291cmNlLmRhdGEoKSwg
c291cmNlLnNpemUoKSkpOworICAgIGF1dG8qIGRhdGEgPSBlbmNvZGVkLmRhdGEoKTsKKyAgICBz
aXplX3QgbGVuZ3RoID0gZW5jb2RlZC5zaXplKCk7CisgICAgCisgICAgaWYgKCFsZW5ndGggPT0g
IWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9y
ICg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkp
OworICAgICAgICB1aW50OF90IGJ5dGUgPSBkYXRhW2ldOworICAgICAgICBpZiAoVU5MSUtFTFko
Ynl0ZSAhPSAqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0
b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVOTElLRUxZ
KHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKSkgewor
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoYnl0ZSk7CisgICAgICAg
ICsraXRlcmF0b3I7CisgICAgfQorICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSAmJiBpc1Rh
Yk9yTmV3bGluZSgqaXRlcmF0b3IpKQorICAgICAgICArK2l0ZXJhdG9yOworICAgIEFTU0VSVCgo
aSA9PSBsZW5ndGgpID09IGl0ZXJhdG9yLmF0RW5kKCkpOworICAgIGZvciAoOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKKyAgICAg
ICAgdWludDhfdCBieXRlID0gZGF0YVtpXTsKKyAgICAgICAgaWYgKHNob3VsZFBlcmNlbnRFbmNv
ZGVRdWVyeUJ5dGUoYnl0ZSwgbV91cmxJc1NwZWNpYWwpKQorICAgICAgICAgICAgcGVyY2VudEVu
Y29kZUJ5dGUoYnl0ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoYnl0ZSk7CisgICAgfQorfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBVUkxQYXJz
ZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCit7CisgICAgc3Rh
dGljIGNvbnN0IHVpbnQxNl90IGZ0cFBvcnQgPSAyMTsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2
X3QgZ29waGVyUG9ydCA9IDcwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBodHRwUG9ydCA9
IDgwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBodHRwc1BvcnQgPSA0NDM7CisgICAgc3Rh
dGljIGNvbnN0IHVpbnQxNl90IHdzUG9ydCA9IDgwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCB3c3NQb3J0ID0gNDQzOworICAgIAorICAgIGF1dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgp
OworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN3
aXRjaCAoc2NoZW1lWzBdKSB7CisgICAgY2FzZSAndyc6CisgICAgICAgIHN3aXRjaCAobGVuZ3Ro
KSB7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnKQor
ICAgICAgICAgICAgICAgIHJldHVybiB3c1BvcnQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdz
JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHdzc1BvcnQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgY2Fz
ZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgNDoKKyAgICAg
ICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJd
ID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGh0dHBQb3J0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAndCcKKyAgICAg
ICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzNdID09ICdwJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAncycpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGh0dHBzUG9ydDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICB9CisgICAgY2FzZSAnZyc6CisgICAgICAgIGlmIChsZW5ndGggPT0gNgorICAgICAg
ICAgICAgJiYgc2NoZW1lWzFdID09ICdvJworICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdw
JworICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdoJworICAgICAgICAgICAgJiYgc2NoZW1l
WzRdID09ICdlJworICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKKyAgICAgICAgICAg
IHJldHVybiBnb3BoZXJQb3J0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGNh
c2UgJ2YnOgorICAgICAgICBpZiAobGVuZ3RoID09IDMKKyAgICAgICAgICAgICYmIHNjaGVtZVsx
XSA9PSAndCcKKyAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcpCisgICAgICAgICAgICBy
ZXR1cm4gZnRwUG9ydDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KK30KKworZW51bSBjbGFzcyBT
Y2hlbWUgeworICAgIFdTLAorICAgIFdTUywKKyAgICBGaWxlLAorICAgIEZUUCwKKyAgICBHb3Bo
ZXIsCisgICAgSFRUUCwKKyAgICBIVFRQUywKKyAgICBOb25TcGVjaWFsCit9OworCitBTFdBWVNf
SU5MSU5FIHN0YXRpYyBTY2hlbWUgc2NoZW1lKFN0cmluZ1ZpZXcgc2NoZW1lKQoreworICAgIGF1
dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgpOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7CisgICAg
Y2FzZSAnZic6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgMzoKKyAg
ICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzJdID09ICdwJykKKyAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpGVFA7CisgICAgICAg
ICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOworICAgICAgICBjYXNlIDQ6CisgICAgICAg
ICAgICBpZiAoc2NoZW1lWzFdID09ICdpJworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9
PSAnbCcKKyAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2UnKQorICAgICAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6OkZpbGU7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25T
cGVjaWFsOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9u
U3BlY2lhbDsKKyAgICAgICAgfQorICAgIGNhc2UgJ2cnOgorICAgICAgICBpZiAobGVuZ3RoID09
IDYKKyAgICAgICAgICAgICYmIHNjaGVtZVsxXSA9PSAnbycKKyAgICAgICAgICAgICYmIHNjaGVt
ZVsyXSA9PSAncCcKKyAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnaCcKKyAgICAgICAgICAg
ICYmIHNjaGVtZVs0XSA9PSAnZScKKyAgICAgICAgICAgICYmIHNjaGVtZVs1XSA9PSAncicpCisg
ICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpHb3BoZXI7CisgICAgICAgIHJldHVybiBTY2hlbWU6
Ok5vblNwZWNpYWw7CisgICAgY2FzZSAnaCc6CisgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7Cisg
ICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVsz
XSA9PSAncCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6SFRUUDsKKyAgICAgICAg
ICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIGNhc2UgNToKKyAgICAgICAg
ICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCisgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICd0JworICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcKKyAgICAgICAgICAgICAg
ICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQorICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkhU
VFBTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAgICAgIH0K
KyAgICBjYXNlICd3JzoKKyAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAgICAgICAgY2FzZSAy
OgorICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFNjaGVtZTo6V1M7CisgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwor
ICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJworICAgICAg
ICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNj
aGVtZTo6V1NTOworICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7CisgICAg
ICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwor
ICAgIH0KK30KKworc3RkOjpvcHRpb25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6bWF5YmVDYW5vbmlj
YWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVtZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWlzQVNDSUlB
bHBoYShzY2hlbWVbMF0pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgZm9y
IChzaXplX3QgaSA9IDE7IGkgPCBzY2hlbWUubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAo
aXNBU0NJSUFscGhhbnVtZXJpYyhzY2hlbWVbaV0pIHx8IHNjaGVtZVtpXSA9PSAnKycgfHwgc2No
ZW1lW2ldID09ICctJyB8fCBzY2hlbWVbaV0gPT0gJy4nKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJuIHNjaGVt
ZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworfQorCitib29sIFVSTFBhcnNlcjo6aXNTcGVj
aWFsU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lQXJnKQoreworICAgIHJldHVybiBzY2hlbWUo
c2NoZW1lQXJnKSAhPSBTY2hlbWU6Ok5vblNwZWNpYWw7Cit9CisKK2VudW0gY2xhc3MgVVJMUGFy
c2VyOjpVUkxQYXJ0IHsKKyAgICBTY2hlbWVFbmQsCisgICAgVXNlclN0YXJ0LAorICAgIFVzZXJF
bmQsCisgICAgUGFzc3dvcmRFbmQsCisgICAgSG9zdEVuZCwKKyAgICBQb3J0RW5kLAorICAgIFBh
dGhBZnRlckxhc3RTbGFzaCwKKyAgICBQYXRoRW5kLAorICAgIFF1ZXJ5RW5kLAorfTsKKworc2l6
ZV90IFVSTFBhcnNlcjo6dXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYgdXJsLCBVUkxQYXJ0
IHBhcnQpCit7CisgICAgc3dpdGNoIChwYXJ0KSB7CisgICAgY2FzZSBVUkxQYXJ0OjpRdWVyeUVu
ZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3F1ZXJ5RW5kOworICAgIGNhc2UgVVJMUGFydDo6UGF0
aEVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3BhdGhFbmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpQ
YXRoQWZ0ZXJMYXN0U2xhc2g6CisgICAgICAgIHJldHVybiB1cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CisgICAgY2FzZSBVUkxQYXJ0OjpQb3J0RW5kOgorICAgICAgICByZXR1cm4gdXJsLm1faG9z
dEVuZCArIHVybC5tX3BvcnRMZW5ndGg7CisgICAgY2FzZSBVUkxQYXJ0OjpIb3N0RW5kOgorICAg
ICAgICByZXR1cm4gdXJsLm1faG9zdEVuZDsKKyAgICBjYXNlIFVSTFBhcnQ6OlBhc3N3b3JkRW5k
OgorICAgICAgICByZXR1cm4gdXJsLm1fcGFzc3dvcmRFbmQ7CisgICAgY2FzZSBVUkxQYXJ0OjpV
c2VyRW5kOgorICAgICAgICByZXR1cm4gdXJsLm1fdXNlckVuZDsKKyAgICBjYXNlIFVSTFBhcnQ6
OlVzZXJTdGFydDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3VzZXJTdGFydDsKKyAgICBjYXNlIFVS
TFBhcnQ6OlNjaGVtZUVuZDoKKyAgICAgICAgcmV0dXJuIHVybC5tX3NjaGVtZUVuZDsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgVVJM
UGFyc2VyOjpjb3B5QVNDSUlTdHJpbmdVbnRpbChjb25zdCBTdHJpbmcmIHN0cmluZywgc2l6ZV90
IGxlbmd0aCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGggPD0gc3RyaW5nLmxlbmd0aCgp
KTsKKyAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJU
KG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwor
ICAgIGVsc2UgeworICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHN0cmluZy5jaGFy
YWN0ZXJzMTYoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgVUNoYXIgYyA9IGNoYXJhY3RlcnNbaV07CisgICAgICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpc0FTQ0lJKGMpKTsKKyAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoYyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Cit2b2lkIFVSTFBhcnNlcjo6Y29weVVSTFBhcnRzVW50aWwo
Y29uc3QgVVJMJiBiYXNlLCBVUkxQYXJ0IHBhcnQsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvciwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcpCit7CisgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKworICAgIG1f
YXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICBjb3B5QVNDSUlTdHJpbmdVbnRpbChiYXNlLm1fc3Ry
aW5nLCB1cmxMZW5ndGhVbnRpbFBhcnQoYmFzZSwgcGFydCkpOworICAgIHN3aXRjaCAocGFydCkg
eworICAgIGNhc2UgVVJMUGFydDo6UXVlcnlFbmQ6CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQg
PSBiYXNlLm1fcXVlcnlFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFy
dDo6UGF0aEVuZDoKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gYmFzZS5tX3BhdGhFbmQ7Cisg
ICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNo
OgorICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJhc2UubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6UG9ydEVu
ZDoKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gYmFzZS5tX3BvcnRMZW5ndGg7CisgICAg
ICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6SG9zdEVuZDoKKyAgICAgICAgbV91
cmwubV9ob3N0RW5kID0gYmFzZS5tX2hvc3RFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAg
IGNhc2UgVVJMUGFydDo6UGFzc3dvcmRFbmQ6CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQg
PSBiYXNlLm1fcGFzc3dvcmRFbmQ7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJM
UGFydDo6VXNlckVuZDoKKyAgICAgICAgbV91cmwubV91c2VyRW5kID0gYmFzZS5tX3VzZXJFbmQ7
CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6VXNlclN0YXJ0OgorICAg
ICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGJhc2UubV91c2VyU3RhcnQ7CisgICAgICAgIEZBTExU
SFJPVUdIOworICAgIGNhc2UgVVJMUGFydDo6U2NoZW1lRW5kOgorICAgICAgICBtX3VybC5tX2lz
VmFsaWQgPSBiYXNlLm1faXNWYWxpZDsKKyAgICAgICAgbV91cmwubV9wcm90b2NvbElzSW5IVFRQ
RmFtaWx5ID0gYmFzZS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7CisgICAgICAgIG1fdXJsLm1f
c2NoZW1lRW5kID0gYmFzZS5tX3NjaGVtZUVuZDsKKyAgICB9CisgICAgc3dpdGNoIChzY2hlbWUo
U3RyaW5nVmlldyhtX2FzY2lpQnVmZmVyLmRhdGEoKSwgbV91cmwubV9zY2hlbWVFbmQpKSkgewor
ICAgIGNhc2UgU2NoZW1lOjpXUzoKKyAgICBjYXNlIFNjaGVtZTo6V1NTOgorICAgICAgICBub25V
VEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1lOjpGaWxlOgorICAgICAgICBtX3Vy
bElzRmlsZSA9IHRydWU7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgU2NoZW1lOjpG
VFA6CisgICAgY2FzZSBTY2hlbWU6OkdvcGhlcjoKKyAgICBjYXNlIFNjaGVtZTo6SFRUUDoKKyAg
ICBjYXNlIFNjaGVtZTo6SFRUUFM6CisgICAgICAgIG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgU2NoZW1lOjpOb25TcGVjaWFsOgorICAgICAgICBtX3Vy
bElzU3BlY2lhbCA9IGZhbHNlOworICAgICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxw
dHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3N0YXRpYyBjb25zdCBjaGFyIGRvdEFTQ0lJQ29kZVsyXSA9IHsnMicsICdlJ307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitBTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFy
c2VyOjppc1NpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+IGMpCit7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRT
eW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICAgICAgcmV0dXJuIGMuYXRFbmQoKSB8fCBpc1Ns
YXNoUXVlc3Rpb25Pckhhc2goKmMpOworICAgIH0KKyAgICBpZiAoKmMgIT0gJyUnKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhW
aW9sYXRpb246Ok5vPihjKTsKKyAgICBpZiAoYy5hdEVuZCgpIHx8ICpjICE9IGRvdEFTQ0lJQ29k
ZVswXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwg
UmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAgaWYgKGMuYXRFbmQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29k
ZVsxXSkgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gYy5hdEVuZCgpIHx8IGlzU2xhc2hRdWVzdGlv
bk9ySGFzaCgqYyk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6OmlzRG91
YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sK
KyAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCpjID09
ICcuJykgeworICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGMpOworICAgICAgICByZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsK
KyAgICB9CisgICAgaWYgKCpjICE9ICclJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFk
dmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CisgICAg
aWYgKGMuYXRFbmQoKSB8fCAqYyAhPSBkb3RBU0NJSUNvZGVbMF0pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6
Tm8+KGMpOworICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVbMV0pIHsKKyAgICAgICAgYWR2YW5j
ZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKKyAgICAgICAg
cmV0dXJuIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2Vy
Ojpjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYykpOworICAg
IGlmICgqYyA9PSAnLicpIHsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYgKCFjLmF0
RW5kKCkpIHsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykKKyAgICAg
ICAgICAgICAgICBhZHZhbmNlKGMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IEFTU0VSVCgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOworICAgICAgICBhZHZhbmNlKGMpOworICAgICAg
ICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAg
ICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKTsKKyAgICAg
ICAgYWR2YW5jZShjKTsKKyAgICAgICAgaWYgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGlm
ICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVCgqYyA9PSAnPycgfHwgKmMg
PT0gJyMnKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpjb25zdW1lRG91YmxlRG90UGF0aFNlZ21lbnQoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGMpCit7CisgICAgQVNTRVJUKGlzRG91Ymxl
RG90UGF0aFNlZ21lbnQoYykpOworICAgIGlmICgqYyA9PSAnLicpCisgICAgICAgIGFkdmFuY2Uo
Yyk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOworICAgICAgICBhZHZh
bmNlKGMpOworICAgICAgICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKKyAgICAgICAg
YWR2YW5jZShjKTsKKyAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlD
b2RlWzFdKTsKKyAgICAgICAgYWR2YW5jZShjKTsKKyAgICB9CisgICAgY29uc3VtZVNpbmdsZURv
dFBhdGhTZWdtZW50KGMpOworfQorCitib29sIFVSTFBhcnNlcjo6c2hvdWxkUG9wUGF0aCh1bnNp
Z25lZCBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gpCit7CisgICAgQVNTRVJUKG1fZGlkU2VlU3ludGF4
VmlvbGF0aW9uKTsKKyAgICBpZiAoIW1fdXJsSXNGaWxlKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIEFTU0VSVChtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA8PSBtX2FzY2lpQnVmZmVy
LnNpemUoKSk7CisgICAgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+IGNvbXBvbmVudFRvUG9wKCZt
X2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0sICZtX2FzY2lpQnVmZmVyWzBdICsg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOworICAgIGlmIChuZXdQYXRoQWZ0ZXJMYXN0U2xh
c2ggPT0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSAmJiBpc1dpbmRv
d3NEcml2ZUxldHRlcihjb21wb25lbnRUb1BvcCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBVUkxQYXJzZXI6OnBvcFBhdGgoKQoreworICAgIEFT
U0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgaWYgKG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoID4gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsgMSkgewor
ICAgICAgICBhdXRvIG5ld1BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoIC0gMTsKKyAgICAgICAgaWYgKG1fYXNjaWlCdWZmZXJbbmV3UGF0aEFmdGVyTGFzdFNs
YXNoXSA9PSAnLycpCisgICAgICAgICAgICBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2gtLTsKKyAgICAg
ICAgd2hpbGUgKG5ld1BhdGhBZnRlckxhc3RTbGFzaCA+IG1fdXJsLm1faG9zdEVuZCArIG1fdXJs
Lm1fcG9ydExlbmd0aCAmJiBtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFzaF0gIT0g
Jy8nKQorICAgICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07CisgICAgICAgIG5ld1Bh
dGhBZnRlckxhc3RTbGFzaCsrOworICAgICAgICBpZiAoc2hvdWxkUG9wUGF0aChuZXdQYXRoQWZ0
ZXJMYXN0U2xhc2gpKQorICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBu
ZXdQYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgfQorICAgIG1fYXNjaWlCdWZmZXIucmVzaXplKG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpzeW50YXhWaW9sYXRpb24oY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQoreworICAgIGlmIChtX2RpZFNlZVN5
bnRheFZpb2xhdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGlkU2VlU3ludGF4VmlvbGF0
aW9uID0gdHJ1ZTsKKyAgICAKKyAgICBBU1NFUlQobV9hc2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwor
ICAgIHNpemVfdCBjb2RlVW5pdHNUb0NvcHkgPSBpdGVyYXRvci5jb2RlVW5pdHNTaW5jZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IENoYXJhY3RlclR5cGUqPihtX2lucHV0QmVnaW4pKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChjb2RlVW5pdHNUb0NvcHkgPD0gbV9pbnB1dFN0cmluZy5sZW5ndGgoKSk7
CisgICAgbV9hc2NpaUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkobV9pbnB1dFN0cmluZy5sZW5ndGgo
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlVW5pdHNUb0NvcHk7ICsraSkgewor
ICAgICAgICBBU1NFUlQoaXNBU0NJSShtX2lucHV0U3RyaW5nW2ldKSk7CisgICAgICAgIG1fYXNj
aWlCdWZmZXIudW5jaGVja2VkQXBwZW5kKG1faW5wdXRTdHJpbmdbaV0pOworICAgIH0KK30KKwor
dm9pZCBVUkxQYXJzZXI6OmZhaWx1cmUoKQoreworICAgIG1fdXJsLmludmFsaWRhdGUoKTsKKyAg
ICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJpbmc7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6Y2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBVQ2hhcjMyIGNvZGVQ
b2ludCkKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSB8fCB0b0FTQ0lJTG93ZXIoKml0ZXJh
dG9yKSAhPSBjb2RlUG9pbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZHZhbmNlPENo
YXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wg
VVJMUGFyc2VyOjppc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
IGl0ZXJhdG9yKQoreworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3Is
ICdsJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29k
ZVBvaW50KGl0ZXJhdG9yLCAnbycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFj
aGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2MnKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdhJykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0
ZXJhdG9yLCAnbCcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2Fs
aG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2gnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdvJykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAn
cycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQ
b2ludChpdGVyYXRvciwgJ3QnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBp
dGVyYXRvci5hdEVuZCgpOworfQorCitib29sIFVSTFBhcnNlcjo6aXNMb2NhbGhvc3QoU3RyaW5n
VmlldyB2aWV3KQoreworICAgIGlmICh2aWV3LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gaXNB
dExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4odmlldy5jaGFyYWN0ZXJzOCgpLCB2
aWV3LmNoYXJhY3RlcnM4KCkgKyB2aWV3Lmxlbmd0aCgpKSk7CisgICAgcmV0dXJuIGlzQXRMb2Nh
bGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+KHZpZXcuY2hhcmFjdGVyczE2KCksIHZpZXcu
Y2hhcmFjdGVyczE2KCkgKyB2aWV3Lmxlbmd0aCgpKSk7Cit9CisKK0FMV0FZU19JTkxJTkUgU3Ry
aW5nVmlldyBVUkxQYXJzZXI6OnBhcnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6ZV90IGxl
bmd0aCkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKSB7Cisg
ICAgICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSBtX2FzY2lpQnVmZmVyLnNpemUoKSk7Cisg
ICAgICAgIHJldHVybiBTdHJpbmdWaWV3KG1fYXNjaWlCdWZmZXIuZGF0YSgpICsgc3RhcnQsIGxl
bmd0aCk7CisgICAgfQorICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSBtX2lucHV0U3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhtX2lucHV0U3RyaW5nKS5zdWJzdHJp
bmcoc3RhcnQsIGxlbmd0aCk7Cit9CisKK0FMV0FZU19JTkxJTkUgVUNoYXIgVVJMUGFyc2VyOjpw
YXJzZWREYXRhVmlldyhzaXplX3QgcG9zaXRpb24pCit7CisgICAgaWYgKFVOTElLRUxZKG1fZGlk
U2VlU3ludGF4VmlvbGF0aW9uKSkKKyAgICAgICAgcmV0dXJuIG1fYXNjaWlCdWZmZXJbcG9zaXRp
b25dOworICAgIHJldHVybiBtX2lucHV0U3RyaW5nW3Bvc2l0aW9uXTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0FMV0FZU19JTkxJTkUgc2l6ZV90IFVSTFBhcnNlcjo6
Y3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pKQor
ICAgICAgICByZXR1cm4gbV9hc2NpaUJ1ZmZlci5zaXplKCk7CisgICAgCisgICAgcmV0dXJuIGl0
ZXJhdG9yLmNvZGVVbml0c1NpbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlw
ZSo+KG1faW5wdXRCZWdpbikpOworfQorCitVUkxQYXJzZXI6OlVSTFBhcnNlcihjb25zdCBTdHJp
bmcmIGlucHV0LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcpCisgICAgOiBtX2lucHV0U3RyaW5nKGlucHV0KQoreworICAgIGlmIChp
bnB1dC5pc051bGwoKSkgeworICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYgIWJhc2UubV9j
YW5ub3RCZUFCYXNlVVJMKSB7CisgICAgICAgICAgICBtX3VybCA9IGJhc2U7CisgICAgICAgICAg
ICBtX3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKGlucHV0LmlzOEJpdCgpKSB7CisgICAgICAgIG1faW5w
dXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnM4KCk7CisgICAgICAgIHBhcnNlKGlucHV0LmNoYXJh
Y3RlcnM4KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9pbnB1dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVyczE2KCk7
CisgICAgICAgIHBhcnNlKGlucHV0LmNoYXJhY3RlcnMxNigpLCBpbnB1dC5sZW5ndGgoKSwgYmFz
ZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAgIH0KKworICAgIEFTU0VSVCghbV91cmwubV9p
c1ZhbGlkCisgICAgICAgIHx8IG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uID09IChtX3VybC5zdHJp
bmcoKSAhPSBpbnB1dCkKKyAgICAgICAgfHwgKGlucHV0LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8
aXNDMENvbnRyb2xPclNwYWNlPigpCisgICAgICAgICAgICAmJiBtX3VybC5tX3N0cmluZyA9PSBi
YXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5kKSkpOworICAgIEFTU0VSVChpbnRlcm5h
bFZhbHVlc0NvbnNpc3RlbnQobV91cmwpKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgaWYg
KCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikgeworICAgICAgICAvLyBGb3JjZSBhIHN5bnRheCB2
aW9sYXRpb24gYXQgdGhlIGJlZ2lubmluZyB0byBtYWtlIHN1cmUgd2UgZ2V0IHRoZSBzYW1lIHJl
c3VsdC4KKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCIgIiwgaW5wdXQpLCBi
YXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgIFVSTCBwYXJzZWQgPSBwYXJzZXIu
cmVzdWx0KCk7CisgICAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKQorICAgICAgICAgICAgQVNT
RVJUKGFsbFZhbHVlc0VxdWFsKHBhcnNlci5yZXN1bHQoKSwgbV91cmwpKTsKKyAgICB9CisjZW5k
aWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2Vy
OjpwYXJzZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBpbnB1dCwgY29uc3QgdW5zaWduZWQgbGVuZ3Ro
LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogbm9uVVRGOFF1ZXJ5RW5j
b2RpbmcpCit7CisgICAgVVJMX1BBUlNFUl9MT0coIlBhcnNpbmcgVVJMIDwlcz4gYmFzZSA8JXM+
IiwgU3RyaW5nKGlucHV0LCBsZW5ndGgpLnV0ZjgoKS5kYXRhKCksIGJhc2Uuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgbV91cmwgPSB7IH07CisgICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIu
aXNFbXB0eSgpKTsKKworICAgIFZlY3RvcjxVQ2hhcj4gcXVlcnlCdWZmZXI7CisKKyAgICB1bnNp
Z25lZCBlbmRJbmRleCA9IGxlbmd0aDsKKyAgICB3aGlsZSAoVU5MSUtFTFkoZW5kSW5kZXggJiYg
aXNDMENvbnRyb2xPclNwYWNlKGlucHV0W2VuZEluZGV4IC0gMV0pKSkgeworICAgICAgICBzeW50
YXhWaW9sYXRpb24oQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaW5wdXQsIGlucHV0
KSk7CisgICAgICAgIGVuZEluZGV4LS07CisgICAgfQorICAgIENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+IGMoaW5wdXQsIGlucHV0ICsgZW5kSW5kZXgpOworICAgIENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+IGF1dGhvcml0eU9ySG9zdEJlZ2luOworICAgIENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IHF1ZXJ5QmVnaW47CisgICAgd2hpbGUgKFVOTElLRUxZ
KCFjLmF0RW5kKCkgJiYgaXNDMENvbnRyb2xPclNwYWNlKCpjKSkpIHsKKyAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGMpOworICAgICAgICArK2M7CisgICAgfQorICAgIGF1dG8gYmVnaW5BZnRlckNv
bnRyb2xBbmRTcGFjZSA9IGM7CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7Cisg
ICAgICAgIFNjaGVtZVN0YXJ0LAorICAgICAgICBTY2hlbWUsCisgICAgICAgIE5vU2NoZW1lLAor
ICAgICAgICBTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSwKKyAgICAgICAgUGF0aE9yQXV0aG9y
aXR5LAorICAgICAgICBSZWxhdGl2ZSwKKyAgICAgICAgUmVsYXRpdmVTbGFzaCwKKyAgICAgICAg
U3BlY2lhbEF1dGhvcml0eVNsYXNoZXMsCisgICAgICAgIFNwZWNpYWxBdXRob3JpdHlJZ25vcmVT
bGFzaGVzLAorICAgICAgICBBdXRob3JpdHlPckhvc3QsCisgICAgICAgIEhvc3QsCisgICAgICAg
IEZpbGUsCisgICAgICAgIEZpbGVTbGFzaCwKKyAgICAgICAgRmlsZUhvc3QsCisgICAgICAgIFBh
dGhTdGFydCwKKyAgICAgICAgUGF0aCwKKyAgICAgICAgQ2Fubm90QmVBQmFzZVVSTFBhdGgsCisg
ICAgICAgIFVURjhRdWVyeSwKKyAgICAgICAgTm9uVVRGOFF1ZXJ5LAorICAgICAgICBGcmFnbWVu
dCwKKyAgICB9OworCisjZGVmaW5lIExPR19TVEFURSh4KSBVUkxfUEFSU0VSX0xPRygiU3RhdGUg
JXMsIGNvZGUgcG9pbnQgJWMsIHBhcnNlZCBkYXRhIDwlcz4gc2l6ZSAlenUiLCB4LCAqYywgcGFy
c2VkRGF0YVZpZXcoMCwgY3VycmVudFBvc2l0aW9uKGMpKS51dGY4KCkuZGF0YSgpLCBjdXJyZW50
UG9zaXRpb24oYykpCisjZGVmaW5lIExPR19GSU5BTF9TVEFURSh4KSBVUkxfUEFSU0VSX0xPRygi
RmluYWwgU3RhdGU6ICVzIiwgeCkKKworICAgIFN0YXRlIHN0YXRlID0gU3RhdGU6OlNjaGVtZVN0
YXJ0OworICAgIHdoaWxlICghYy5hdEVuZCgpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc1Rh
Yk9yTmV3bGluZSgqYykpKSB7CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAg
ICAgICAgICArK2M7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAg
IHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lU3RhcnQ6CisgICAg
ICAgICAgICBMT0dfU1RBVEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgICAgICBpZiAoaXNBU0NJ
SUFscGhhKCpjKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBwZXIo
KmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7CisgICAgICAgICAg
ICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAgICAgIGMgPSBiZWdp
bkFmdGVyQ29udHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6U2NoZW1lOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9TY2hlbWU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgorICAgICAg
ICAgICAgTE9HX1NUQVRFKCJTY2hlbWUiKTsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkU2NoZW1l
Q2hhcmFjdGVyKCpjKSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJVXBw
ZXIoKmMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodG9BU0NJSUxvd2VyKCpjKSk7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKCpjID09ICc6JykgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNj
aGVtZUVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAoc2NoZW1l
RW5kID4gVVJMOjptYXhTY2hlbWVMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbHVy
ZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIG1fdXJsLm1fc2NoZW1lRW5kID0gc2NoZW1lRW5kOworICAgICAgICAgICAg
ICAgIFN0cmluZ1ZpZXcgdXJsU2NoZW1lID0gcGFyc2VkRGF0YVZpZXcoMCwgbV91cmwubV9zY2hl
bWVFbmQpOworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHNjaGVtZSh1cmxTY2hlbWUpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBTY2hlbWU6OkZpbGU6CisgICAgICAgICAgICAgICAgICAgIG1fdXJsSXNTcGVjaWFsID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmxJc0ZpbGUgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlOworICAgICAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1l
OjpXUzoKKyAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6V1NTOgorICAgICAgICAgICAgICAg
ICAgICBub25VVEY4UXVlcnlFbmNvZGluZyA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAg
IG1fdXJsSXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UucHJv
dG9jb2xJcyh1cmxTY2hlbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlT
bGFzaGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpIVFRQOgorICAgICAgICAgICAgICAg
IGNhc2UgU2NoZW1lOjpIVFRQUzoKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wcm90b2Nv
bElzSW5IVFRQRmFtaWx5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7
CisgICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OkZUUDoKKyAgICAgICAgICAgICAgICBjYXNl
IFNjaGVtZTo6R29waGVyOgorICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLnByb3RvY29sSXModXJsU2NoZW1lKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9y
QXV0aG9yaXR5OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczsKKyAgICAgICAgICAg
ICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIFNjaGVtZTo6Tm9uU3BlY2lhbDoKKyAgICAgICAgICAgICAgICAgICAgbm9uVVRGOFF1
ZXJ5RW5jb2RpbmcgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBhdXRvIG1heWJlU2xh
c2ggPSBjOworICAgICAgICAgICAgICAgICAgICBhZHZhbmNlKG1heWJlU2xhc2gpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIW1heWJlU2xhc2guYXRFbmQoKSAmJiAqbWF5YmVTbGFzaCA9PSAn
LycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBtYXliZVNsYXNoOworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OworICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKCpjID09ICcvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICArK2M7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3Np
dGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0g
Y3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9jYW5ub3RCZUFCYXNlVVJMID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkNhbm5vdEJlQUJhc2VVUkxQYXRoOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6Ok5vU2NoZW1lOworICAgICAgICAgICAgICAgIGMgPSBiZWdpbkFmdGVyQ29u
dHJvbEFuZFNwYWNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgIGlmIChjLmF0RW5kKCkpIHsKKyAgICAg
ICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6Tm9TY2hlbWU7CisgICAgICAgICAgICAgICAgYyA9IGJlZ2luQWZ0ZXJDb250cm9s
QW5kU3BhY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBTdGF0ZTo6Tm9TY2hlbWU6CisgICAgICAgICAgICBMT0dfU1RBVEUoIk5vU2NoZW1lIik7Cisg
ICAgICAgICAgICBpZiAoIWJhc2UuaXNWYWxpZCgpIHx8IChiYXNlLm1fY2Fubm90QmVBQmFzZVVS
TCAmJiAqYyAhPSAnIycpKSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChiYXNlLm1fY2Fu
bm90QmVBQmFzZVVSTCAmJiAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICBjb3B5VVJMUGFy
dHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rpbmcp
OworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAg
ICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWJhc2Uu
cHJvdG9jb2xJcygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVs
YXRpdmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5vblVURjhR
dWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKKyAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZpbGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTdGF0ZTo6U3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHk6CisgICAgICAgICAgICBM
T0dfU1RBVEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgICAgICBpZiAo
KmMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwor
ICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKGMuYXRFbmQo
KSkgeworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCpjID09ICcv
JykgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFz
aGVzOworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0aXZlU2xhc2g7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpQYXRoT3JBdXRob3JpdHk6Cisg
ICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhPckF1dGhvcml0eSIpOworICAgICAgICAgICAgaWYg
KCpjID09ICcvJykgeworICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsK
KyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7CisgICAgICAg
ICAgICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdp
biA9IGM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChwYXJz
ZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICAgICAg
ICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAg
ICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAg
ICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJSZWxh
dGl2ZSIpOworICAgICAgICAgICAgc3dpdGNoICgqYykgeworICAgICAgICAgICAgY2FzZSAnLyc6
CisgICAgICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
UmVsYXRpdmVTbGFzaDsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlICc/JzoKKyAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNV
bnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignPycpOworICAgICAgICAgICAgICAg
ICsrYzsKKyAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAnIyc6CisgICAgICAgICAgICAgICAgY29weVVSTFBhcnRz
VW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsK
KyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgKytjOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBj
b3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2gsIGMsIG5v
blVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9u
KGMpICYmIHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEpICE9ICcvJykgewor
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAg
ICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRo
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlU2xhc2g6CisgICAgICAgICAgICBMT0df
U1RBVEUoIlJlbGF0aXZlU2xhc2giKTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMg
PT0gJ1xcJykgeworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBjb3B5VVJM
UGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpTY2hlbWVFbmQsIGMsIG5vblVURjhRdWVyeUVuY29k
aW5nKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCI6Ly8iLCAzKTsKKyAg
ICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNpYWwpCisgICAgICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9y
aXR5T3JIb3N0OworICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQb3J0RW5kLCBjLCBub25VVEY4UXVl
cnlFbmNvZGluZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwor
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gYmFzZS5tX2hvc3RF
bmQgKyBiYXNlLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0
ZTo6UGF0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczoKKyAgICAgICAgICAgIExPR19TVEFURSgi
U3BlY2lhbEF1dGhvcml0eVNsYXNoZXMiKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoKmMgPT0g
Jy8nIHx8ICpjID09ICdcXCcpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09
ICdcXCcpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAg
ICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIGFkdmFu
Y2UoYyk7CisgICAgICAgICAgICAgICAgaWYgKExJS0VMWSghYy5hdEVuZCgpICYmICgqYyA9PSAn
LycgfHwgKmMgPT0gJ1xcJykpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgq
YyA9PSAnXFwnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcigiLy8iLCAyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVzOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlJZ25vcmVTbGFzaGVz
OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlcyIp
OworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSB7CisgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50
UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXR5T3JI
b3N0OworICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpBdXRob3JpdHlP
ckhvc3Q6CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJBdXRo
b3JpdHlPckhvc3QiKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJ0AnKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gbGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBm
aW5kTGFzdEF0ID0gYzsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFmaW5kTGFzdEF0LmF0
RW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFVSTF9QQVJTRVJfTE9HKCJGaW5kaW5n
IGxhc3QgQDogJWMiLCAqZmluZExhc3RBdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KmZpbmRMYXN0QXQgPT0gJ0AnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RBdCA9
IGZpbmRMYXN0QXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU2xhc2ggPSAqZmlu
ZExhc3RBdCA9PSAnLycgfHwgKG1fdXJsSXNTcGVjaWFsICYmICpmaW5kTGFzdEF0ID09ICdcXCcp
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmZpbmRMYXN0QXQgPT0g
Jz8nIHx8ICpmaW5kTGFzdEF0ID09ICcjJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrZmluZExhc3RBdDsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJzZUF1dGhvcml0eShDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgbGFzdEF0KSk7Cisg
ICAgICAgICAgICAgICAgICAgIGMgPSBsYXN0QXQ7CisgICAgICAgICAgICAgICAgICAgIGFkdmFu
Y2UoYyk7CisgICAgICAgICAgICAgICAgICAgIGF1dGhvcml0eU9ySG9zdEJlZ2luID0gYzsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6SG9zdDsKKyAgICAgICAgICAgICAgICAg
ICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJvb2wgaXNTbGFz
aCA9ICpjID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJyk7CisgICAgICAg
ICAgICAgICAgaWYgKGlzU2xhc2ggfHwgKmMgPT0gJz8nIHx8ICpjID09ICcjJykgeworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpOworICAgICAgICAgICAgICAgICAgICBpZiAo
aXRlcmF0b3IuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdXJsSXNT
cGVjaWFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJyZW50UG9zaXRpb24o
Yyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwu
bV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91
cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3Ro
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGF1dGhv
cml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBh
cnNlSG9zdEFuZFBvcnQoaXRlcmF0b3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgh
aXNTbGFzaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV91cmxJc1NwZWNp
YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JO
b25BU0NJSSgqYykpCisgICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFT
Q0lJID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9IHdoaWxlICgh
Yy5hdEVuZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpIb3N0
OgorICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiSG9zdCIpOwor
ICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJz8nIHx8ICpjID09ICcjJykg
eworICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgqYyA9
PSAnPycgfHwgKmMgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcv
Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzUGVyY2VudE9yTm9uQVND
SUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJSSA9
IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRF
bmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZToKKyAg
ICAgICAgICAgIExPR19TVEFURSgiRmlsZSIpOworICAgICAgICAgICAgc3dpdGNoICgqYykgewor
ICAgICAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgIGNhc2UgJy8nOgor
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpGaWxlU2xhc2g7CisgICAgICAgICAgICAgICAgKytjOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnPyc6CisgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAm
JiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgICAgICAgICBjb3B5VVJM
UGFydHNVbnRpbChiYXNlLCBVUkxQYXJ0OjpQYXRoRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKKyAgICAg
ICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLz8iLCA0KTsKKyAgICAgICAgICAgICAg
ICAgICAgKytjOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJl
bnRQb3NpdGlvbihjKSAtIDI7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9
IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3Jk
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9z
dEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAg
ICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBT
dGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpVVEY4UXVlcnk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
Yyk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJ
cygiZmlsZSIpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2Us
IFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJyMnKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8jIiwgNCk7
CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9u
KGMpIC0gMjsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91
c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9
IDA7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91
cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQg
PSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKKyAgICAgICAgICAg
ICAgICArK2M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBpZiAo
YmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikgJiYgc2hvdWxkQ29weUZp
bGVVUkwoYykpCisgICAgICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2UsIFVS
TFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOworICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCIvLy8iLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBj
dXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNz
d29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICAgICAgICAgIGlm
IChpc1dpbmRvd3NEcml2ZUxldHRlcihjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZFdpbmRvd3NEcml2ZUxldHRlcihjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpGaWxlU2xhc2g6
CisgICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGVTbGFzaCIpOworICAgICAgICAgICAgaWYgKExJ
S0VMWSgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoKmMgPT0gJ1xcJykpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAg
ICAgICAgYWR2YW5jZShjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1
cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7CisgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAg
ICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7CisgICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RmlsZUhvc3Q7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKCIvLyIsIDIpOworICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQg
PSBjdXJyZW50UG9zaXRpb24oYykgLSAxOworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAg
ICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRX
aW5kb3dzRHJpdmVMZXR0ZXIoYyk7CisgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGNvcHlCYXNlV2luZG93c0RyaXZlTGV0dGVyKGJhc2UpKSB7CisgICAgICAgICAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVy
TGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyA0OworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJT
dGFydCArIDE7CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZpbGVIb3N0OgorICAgICAgICAgICAgZG8gewor
ICAgICAgICAgICAgICAgIExPR19TVEFURSgiRmlsZUhvc3QiKTsKKyAgICAgICAgICAgICAgICBp
ZiAoaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKSkgeworICAgICAgICAgICAgICAgICAgICBib29s
IHdpbmRvd3NRdWlyayA9IHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7
CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3dzUXVpcmspIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0QmVnaW4p
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3dz
UXVpcmsgfHwgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHdpbmRvd3NRdWlyayB8fCBwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRp
b24oYykgLSAxKSA9PSAnLycpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KCpjID09ICc/JykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigi
Lz8iLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OlVURjhRdWVyeTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMgPT0g
JyMnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvIyIsIDIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKSAt
IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgh
cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3Jp
dHlPckhvc3RCZWdpbiwgYykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzTG9jYWxob3N0KHBhcnNlZERhdGFW
aWV3KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJlbnRQb3NpdGlvbihjKSAtIG1fdXJsLm1fcGFz
c3dvcmRFbmQpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihj
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1f
cGFzc3dvcmRFbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0g
Y3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aFN0YXJ0OworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KGlzUGVyY2VudE9yTm9uQVNDSUkoKmMpKQorICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQ
ZXJjZW50T3JOb25BU0NJSSA9IHRydWU7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAg
ICAgfSB3aGlsZSAoIWMuYXRFbmQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBTdGF0ZTo6UGF0aFN0YXJ0OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJQYXRoU3RhcnQiKTsK
KyAgICAgICAgICAgIGlmICgqYyAhPSAnLycgJiYgKmMgIT0gJ1xcJykgeworICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlBhdGg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdGF0ZTo6UGF0aDoKKyAg
ICAgICAgICAgIExPR19TVEFURSgiUGF0aCIpOworICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8
fCAobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkobV91cmxJc1NwZWNpYWwgJiYgKmMgPT0gJ1xcJykpCisgICAgICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFVOTElLRUxZKGN1cnJlbnRQ
b3NpdGlvbihjKSAmJiBwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSA9PSAn
LycpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzRG91YmxlRG90UGF0aFNlZ21l
bnQoYykpKSB7CisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KGMpOworICAgICAgICAg
ICAgICAgICAgICBwb3BQYXRoKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNTaW5nbGVEb3RQYXRo
U2VnbWVudChjKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwor
ICAgICAgICAgICAgICAgICAgICBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICgqYyA9PSAnPycpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignPycpOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBpZiAo
bm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9
IGM7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
VVRGOFF1ZXJ5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCpjID09ICcjJykgeworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0g
bV91cmwubV9wYXRoRW5kOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdXRm
OFBlcmNlbnRFbmNvZGU8aXNJbkRlZmF1bHRFbmNvZGVTZXQ+KGMpOworICAgICAgICAgICAgKytj
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkNhbm5vdEJlQUJhc2VV
UkxQYXRoOgorICAgICAgICAgICAgTE9HX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0aCIpOwor
ICAgICAgICAgICAgaWYgKCpjID09ICc/JykgeworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0
aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCc/Jyk7CisgICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGlmIChu
b25VVEY4UXVlcnlFbmNvZGluZykgeworICAgICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0g
YzsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpV
VEY4UXVlcnk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCpjID09ICcjJykgeworICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAg
ICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAgICAgICAgICAgfSBlbHNlIGlmICgqYyA9PSAn
LycpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAg
ICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB1dGY4UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2RlU2V0PihjKTsKKyAgICAgICAg
ICAgICAgICArK2M7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBTdGF0ZTo6VVRGOFF1ZXJ5OgorICAgICAgICAgICAgTE9HX1NUQVRFKCJVVEY4UXVlcnki
KTsKKyAgICAgICAgICAgIEFTU0VSVChxdWVyeUJlZ2luID09IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+KCkpOworICAgICAgICAgICAgaWYgKCpjID09ICcjJykgeworICAgICAgICAg
ICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoIW5vblVURjhRdWVyeUVuY29kaW5nKTsK
KyAgICAgICAgICAgIHV0ZjhRdWVyeUVuY29kZShjKTsKKyAgICAgICAgICAgICsrYzsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlOjpOb25VVEY4UXVlcnk6CisgICAgICAg
ICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJOb25VVEY4UXVlcnkiKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiAhPSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPigpKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJyMnKSB7CisgICAgICAg
ICAgICAgICAgICAgIGVuY29kZU5vblVURjhRdWVyeShxdWVyeUJ1ZmZlciwgKm5vblVURjhRdWVy
eUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBj
KSk7CisgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRp
b24oYyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYXBwZW5kQ29kZVBvaW50KHF1ZXJ5QnVmZmVyLCAqYyk7CisgICAgICAgICAgICAgICAgYWR2
YW5jZShjLCBxdWVyeUJlZ2luKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6OkZyYWdtZW50OgorICAgICAg
ICAgICAgVVJMX1BBUlNFUl9MT0coIlN0YXRlIEZyYWdtZW50Iik7CisgICAgICAgICAgICB1dGY4
UGVyY2VudEVuY29kZTxpc0luU2ltcGxlRW5jb2RlU2V0PihjKTsKKyAgICAgICAgICAgICsrYzsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgc3dpdGNoIChzdGF0
ZSkgeworICAgIGNhc2UgU3RhdGU6OlNjaGVtZVN0YXJ0OgorICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIlNjaGVtZVN0YXJ0Iik7CisgICAgICAgIGlmICghY3VycmVudFBvc2l0aW9uKGMpICYmIGJh
c2UuaXNWYWxpZCgpICYmICFiYXNlLm1fY2Fubm90QmVBQmFzZVVSTCkgeworICAgICAgICAgICAg
bV91cmwgPSBiYXNlOworICAgICAgICAgICAgbV91cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVy
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZmFpbHVyZSgpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGF0ZTo6U2NoZW1lOgorICAgICAgICBMT0dfRklO
QUxfU1RBVEUoIlNjaGVtZSIpOworICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIFN0YXRlOjpOb1NjaGVtZToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJOb1Nj
aGVtZSIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2Ug
U3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OgorICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5Iik7CisgICAgICAgIGNvcHlVUkxQYXJ0c1Vu
dGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlBhdGhPckF1dGhvcml0eToKKyAgICAgICAg
TE9HX0ZJTkFMX1NUQVRFKCJQYXRoT3JBdXRob3JpdHkiKTsKKyAgICAgICAgQVNTRVJUKG1fdXJs
Lm1fdXNlclN0YXJ0KTsKKyAgICAgICAgQVNTRVJUKG1fdXJsLm1fdXNlclN0YXJ0ID09IGN1cnJl
bnRQb3NpdGlvbihjKSk7CisgICAgICAgIEFTU0VSVChwYXJzZWREYXRhVmlldyhjdXJyZW50UG9z
aXRpb24oYykgLSAxKSA9PSAnLycpOworICAgICAgICBtX3VybC5tX3VzZXJTdGFydC0tOworICAg
ICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwu
bV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsK
KyAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCAr
IDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
OworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlOgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIlJlbGF0aXZlIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgY2FzZSBTdGF0ZTo6UmVsYXRpdmVTbGFzaDoKKyAgICAgICAgTE9HX0ZJTkFM
X1NUQVRFKCJSZWxhdGl2ZVNsYXNoIik7CisgICAgICAgIGNvcHlVUkxQYXJ0c1VudGlsKGJhc2Us
IFVSTFBhcnQ6OlBvcnRFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7CisgICAgICAgIG1f
dXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBtX3Vy
bC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzOgorICAgICAgICBMT0df
RklOQUxfU1RBVEUoIlNwZWNpYWxBdXRob3JpdHlTbGFzaGVzIik7CisgICAgICAgIG1fdXJsLm1f
dXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQg
PSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OworICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFy
dDsKKyAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3Vy
bC5tX3VzZXJTdGFydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6U3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXM6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiU3BlY2lhbEF1
dGhvcml0eUlnbm9yZVNsYXNoZXMiKTsKKyAgICAgICAgZmFpbHVyZSgpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OgorICAgICAgICBMT0dfRklOQUxf
U1RBVEUoIkF1dGhvcml0eU9ySG9zdCIpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBjdXJy
ZW50UG9zaXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOworICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICBpZiAoYXV0aG9yaXR5T3JIb3N0QmVn
aW4uYXRFbmQoKSkgeworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAg
ICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgfSBlbHNlIGlmICghcGFyc2VIb3N0
QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIGZhaWx1cmUoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICht
X3VybElzU3BlY2lhbCkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAg
bV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoICsg
MTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9
IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aDsKKyAgICAgICAgfQorICAgICAg
ICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAg
bV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTdGF0ZTo6SG9zdDoKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJIb3N0Iik7CisgICAg
ICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAg
ICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBpZiAobV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9ob3N0
RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOworICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCA9IG1fdXJsLm1fcGF0aEVuZDsKKyAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJs
Lm1fcGF0aEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6RmlsZToKKyAgICAg
ICAgTE9HX0ZJTkFMX1NUQVRFKCJGaWxlIik7CisgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAm
JiBiYXNlLnByb3RvY29sSXMoImZpbGUiKSkgeworICAgICAgICAgICAgY29weVVSTFBhcnRzVW50
aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
KyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIiwgMyk7CisgICAgICAgIG1fdXJsLm1f
dXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7CisgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgIG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOworICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFN0YXRlOjpGaWxlU2xhc2g6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRmls
ZVNsYXNoIik7CisgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgbV91cmwubV91
c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYykgKyAxOworICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCIvLyIsIDIpOworICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJT
dGFydDsKKyAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owor
ICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKGNvcHlCYXNlV2luZG93c0RyaXZlTGV0
dGVyKGJhc2UpKSB7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsg
NDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6
RmlsZUhvc3Q6CisgICAgICAgIExPR19GSU5BTF9TVEFURSgiRmlsZUhvc3QiKTsKKyAgICAgICAg
aWYgKHRha2VzVHdvQWR2YW5jZXNVbnRpbEVuZChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpCisgICAgICAgICAgICAmJiBpc1dpbmRvd3NE
cml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbikpIHsKKyAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihhdXRob3JpdHlPckhvc3RCZWdpbik7CisgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCcvJyk7CisgICAgICAgICAgICBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9y
aXR5T3JIb3N0QmVnaW4pOworICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAoYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykgeworICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignLycpOworICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRp
b24oYykgLSAxOworICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7CisgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CisgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKKyAgICAg
ICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBtX3VybC5tX3BhdGhB
ZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKKyAgICAgICAgICAgIG1fdXJs
Lm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAgbV91
cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKSkgewor
ICAgICAgICAgICAgZmFpbHVyZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICBpZiAoaXNMb2NhbGhvc3QocGFy
c2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9uKGMpIC0gbV91
cmwubV9wYXNzd29yZEVuZCkpKSB7CisgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLnNocmluayht
X3VybC5tX3Bhc3N3b3JkRW5kKTsKKyAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAg
ICAgIH0KKyAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAgICBtX3VybC5t
X3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0
aCArIDE7CisgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoOworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2g7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlBhdGhTdGFydDoKKyAgICAgICAg
TE9HX0ZJTkFMX1NUQVRFKCJQYXRoU3RhcnQiKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBjYXNlIFN0YXRlOjpQYXRoOgorICAgICAgICBMT0dfRklOQUxfU1RB
VEUoIlBhdGgiKTsKKyAgICAgICAgbV91cmwubV9wYXRoRW5kID0gY3VycmVudFBvc2l0aW9uKGMp
OworICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoRW5kOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDoKKyAgICAgICAgTE9H
X0ZJTkFMX1NUQVRFKCJDYW5ub3RCZUFCYXNlVVJMUGF0aCIpOworICAgICAgICBtX3VybC5tX3Bh
dGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBt
X3VybC5tX3BhdGhFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlVURjhRdWVy
eToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJVVEY4UXVlcnkiKTsKKyAgICAgICAgQVNTRVJU
KHF1ZXJ5QmVnaW4gPT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAg
ICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgU3RhdGU6Ok5vblVURjhRdWVyeToKKyAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJOb25VVEY4UXVlcnkiKTsKKyAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gIT0gQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oKSk7CisgICAgICAgIGVuY29kZU5vblVURjhRdWVyeShx
dWVyeUJ1ZmZlciwgKm5vblVURjhRdWVyeUVuY29kaW5nLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPihxdWVyeUJlZ2luLCBjKSk7CisgICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBj
dXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OkZyYWdt
ZW50OgorICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZyYWdtZW50Iik7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGlmIChMSUtFTFkoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkgewor
ICAgICAgICBtX3VybC5tX3N0cmluZyA9IG1faW5wdXRTdHJpbmc7CisgICAgICAgIEFTU0VSVCht
X2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fdXJsLm1fc3Ry
aW5nID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKG1fYXNjaWlCdWZmZXIpKTsKKyAgICBtX3VybC5t
X2lzVmFsaWQgPSB0cnVlOworICAgIFVSTF9QQVJTRVJfTE9HKCJQYXJzZWQgVVJMIDwlcz4iLCBt
X3VybC5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KK3ZvaWQgVVJMUGFyc2VyOjpwYXJzZUF1dGhvcml0eShDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBpZiAoVU5MSUtFTFkoaXRlcmF0
b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKKyAgICAg
ICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAg
bV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7IGFkdmFuY2UoaXRlcmF0b3IpKSB7
CisgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKSB7CisgICAgICAgICAgICBtX3VybC5tX3Vz
ZXJFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgYXV0byBpdGVy
YXRvckF0Q29sb24gPSBpdGVyYXRvcjsKKyAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAg
ICAgICBib29sIHRhYk9yTmV3bGluZUFmdGVyQ29sb24gPSBmYWxzZTsKKyAgICAgICAgICAgIHdo
aWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRFbmQoKSAmJiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0
b3IpKSkgeworICAgICAgICAgICAgICAgIHRhYk9yTmV3bGluZUFmdGVyQ29sb24gPSB0cnVlOwor
ICAgICAgICAgICAgICAgICsraXRlcmF0b3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoaXRlcmF0b3IuYXRFbmQoKSkpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JBdENvbG9uKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3
b3JkRW5kID0gbV91cmwubV91c2VyRW5kOworICAgICAgICAgICAgICAgIGlmIChtX3VybC5tX3Vz
ZXJFbmQgPiBtX3VybC5tX3VzZXJTdGFydCkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignQCcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICh0YWJPck5ld2xpbmVBZnRlckNvbG9uKQorICAgICAgICAgICAgICAg
IHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckF0Q29sb24pOworICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignOicpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
dXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0ZXJhdG9yKTsK
KyAgICB9CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkK
KyAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8V1RGOjppc0luVXNlckluZm9FbmNvZGVTZXQ+KGl0
ZXJhdG9yKTsKKyAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJh
dG9yKTsKKyAgICBpZiAoIW1fdXJsLm1fdXNlckVuZCkKKyAgICAgICAgbV91cmwubV91c2VyRW5k
ID0gbV91cmwubV9wYXNzd29yZEVuZDsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdAJyk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+Cit2b2lkIFVSTFBhcnNl
cjo6YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlcikK
K3sKKyAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2lnbmVkSW50ZWdlclR5cGUpICogMyArIDFdOwor
ICAgIExDaGFyKiBlbmQgPSBzdGQ6OmVuZChidWYpOworICAgIExDaGFyKiBwID0gZW5kOworICAg
IGRvIHsKKyAgICAgICAgKi0tcCA9IChudW1iZXIgJSAxMCkgKyAnMCc7CisgICAgICAgIG51bWJl
ciAvPSAxMDsKKyAgICB9IHdoaWxlIChudW1iZXIpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
cCwgZW5kIC0gcCk7Cit9CisKK3ZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY0KElQdjRBZGRy
ZXNzIGFkZHJlc3MpCit7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90Pihh
ZGRyZXNzID4+IDI0KTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5k
TnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzID4+IDE2KTsKKyAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCcuJyk7CisgICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90
PihhZGRyZXNzID4+IDgpOworICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy4nKTsKKyAgICBhcHBl
bmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQ4X3Q+KGFkZHJlc3MpOworfQorICAgIAorc3RhdGlj
IHNpemVfdCB6ZXJvU2VxdWVuY2VMZW5ndGgoY29uc3Qgc3RkOjphcnJheTx1aW50MTZfdCwgOD4m
IGFkZHJlc3MsIHNpemVfdCBiZWdpbikKK3sKKyAgICBzaXplX3QgZW5kID0gYmVnaW47CisgICAg
Zm9yICg7IGVuZCA8IDg7IGVuZCsrKSB7CisgICAgICAgIGlmIChhZGRyZXNzW2VuZF0pCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGVuZCAtIGJlZ2luOworfQorCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNvbnN0IHN0
ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzKQoreworICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBsb25nZXN0OworICAgIHNpemVfdCBsb25nZXN0TGVuZ3RoID0gMDsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0gemVyb1Nl
cXVlbmNlTGVuZ3RoKGFkZHJlc3MsIGkpOworICAgICAgICBpZiAobGVuZ3RoKSB7CisgICAgICAg
ICAgICBpZiAobGVuZ3RoID4gMSAmJiAoIWxvbmdlc3QgfHwgbG9uZ2VzdExlbmd0aCA8IGxlbmd0
aCkpIHsKKyAgICAgICAgICAgICAgICBsb25nZXN0ID0gaTsKKyAgICAgICAgICAgICAgICBsb25n
ZXN0TGVuZ3RoID0gbGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSArPSBsZW5n
dGg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxvbmdlc3Q7Cit9CisKK3ZvaWQgVVJM
UGFyc2VyOjpzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGllY2UpCit7CisgICAgYm9vbCBw
cmludGVkID0gZmFsc2U7CisgICAgaWYgKGF1dG8gbmliYmxlMCA9IHBpZWNlID4+IDEyKSB7Cisg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJSGV4
RGlnaXQobmliYmxlMCkpOworICAgICAgICBwcmludGVkID0gdHJ1ZTsKKyAgICB9CisgICAgYXV0
byBuaWJibGUxID0gcGllY2UgPj4gOCAmIDB4RjsKKyAgICBpZiAocHJpbnRlZCB8fCBuaWJibGUx
KSB7CisgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFT
Q0lJSGV4RGlnaXQobmliYmxlMSkpOworICAgICAgICBwcmludGVkID0gdHJ1ZTsKKyAgICB9Cisg
ICAgYXV0byBuaWJibGUyID0gcGllY2UgPj4gNCAmIDB4RjsKKyAgICBpZiAocHJpbnRlZCB8fCBu
aWJibGUyKQorICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9Mb3dlcmNh
c2VBU0NJSUhleERpZ2l0KG5pYmJsZTIpKTsKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2Vy
TmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHBpZWNlICYgMHhGKSk7Cit9CisKK3ZvaWQg
VVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2KFVSTFBhcnNlcjo6SVB2NkFkZHJlc3MgYWRkcmVzcykK
K3sKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdbJyk7CisgICAgYXV0byBjb21wcmVzc1BvaW50
ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKKyAgICBmb3IgKHNpemVfdCBw
aWVjZSA9IDA7IHBpZWNlIDwgODsgcGllY2UrKykgeworICAgICAgICBpZiAoY29tcHJlc3NQb2lu
dGVyICYmIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpID09IHBpZWNlKSB7CisgICAgICAgICAgICBB
U1NFUlQoIWFkZHJlc3NbcGllY2VdKTsKKyAgICAgICAgICAgIGlmIChwaWVjZSkKKyAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOjoiLCAyKTsKKyAgICAgICAgICAgIHdo
aWxlIChwaWVjZSA8IDggJiYgIWFkZHJlc3NbcGllY2VdKQorICAgICAgICAgICAgICAgIHBpZWNl
Kys7CisgICAgICAgICAgICBpZiAocGllY2UgPT0gOCkKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBzZXJpYWxpemVJUHY2UGllY2UoYWRkcmVzc1twaWVjZV0pOwor
ICAgICAgICBpZiAocGllY2UgPCA3KQorICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcign
OicpOworICAgIH0KKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCddJyk7Cit9CisKK2VudW0gY2xh
c3MgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3IgeworICAgIEZhaWx1cmUsCisgICAg
T3ZlcmZsb3csCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorRXhwZWN0
ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6
OnBhcnNlSVB2NFBpZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRv
ciwgYm9vbCYgZGlkU2VlU3ludGF4VmlvbGF0aW9uKQoreworICAgIGVudW0gY2xhc3MgU3RhdGUg
OiB1aW50OF90IHsKKyAgICAgICAgVW5rbm93bkJhc2UsCisgICAgICAgIERlY2ltYWwsCisgICAg
ICAgIE9jdGFsT3JIZXgsCisgICAgICAgIE9jdGFsLAorICAgICAgICBIZXgsCisgICAgfTsKKyAg
ICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpVbmtub3duQmFzZTsKKyAgICBDaGVja2VkPHVpbnQzMl90
LCBSZWNvcmRPdmVyZmxvdz4gdmFsdWUgPSAwOworICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSAm
JiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBp
ZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkp
IHsKKyAgICAgICAgaWYgKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpIHsKKyAgICAgICAgICAg
IGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7CisgICAgICAgICAgICArK2l0ZXJhdG9yOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCppdGVyYXRvciA9
PSAnLicpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKKyAgICAgICAgfQorICAgICAgICBz
d2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgU3RhdGU6OlVua25vd25CYXNlOgorICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKCppdGVyYXRvciA9PSAnMCcpKSB7CisgICAgICAgICAgICAgICAg
KytpdGVyYXRvcjsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbE9ySGV4Owor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGUg
PSBTdGF0ZTo6RGVjaW1hbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0YXRl
OjpPY3RhbE9ySGV4OgorICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0gdHJ1ZTsK
KyAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJ3gnIHx8ICppdGVyYXRvciA9PSAnWCcpIHsK
KyAgICAgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6OkhleDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6Ok9jdGFsOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU3RhdGU6OkRlY2ltYWw6CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0
b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGllY2VQYXJz
aW5nRXJyb3I6OkZhaWx1cmUpOworICAgICAgICAgICAgdmFsdWUgKj0gMTA7CisgICAgICAgICAg
ICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFs
dWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICArK2l0ZXJh
dG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3RhdGU6Ok9jdGFsOgorICAg
ICAgICAgICAgQVNTRVJUKGRpZFNlZVN5bnRheFZpb2xhdGlvbik7CisgICAgICAgICAgICBpZiAo
Kml0ZXJhdG9yIDwgJzAnIHx8ICppdGVyYXRvciA+ICc3JykKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICAg
ICAgICAgIHZhbHVlICo9IDg7CisgICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7
CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpP
dmVyZmxvdyk7CisgICAgICAgICAgICArK2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU3RhdGU6OkhleDoKKyAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhW
aW9sYXRpb24pOworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKml0ZXJhdG9yKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKTsKKyAgICAgICAgICAgIHZhbHVlICo9IDE2OworICAgICAgICAgICAgdmFs
dWUgKz0gdG9BU0NJSUhleFZhbHVlKCppdGVyYXRvcik7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7CisgICAgICAgICAgICAr
K2l0ZXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNT
RVJUKCF2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpOworICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQo
KTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDY0X3QgcG93MjU2KHNpemVfdCBleHBv
bmVudCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChleHBvbmVudCA8PSA0KTsKKyAgICB1aW50NjRf
dCB2YWx1ZXNbNV0gPSB7MSwgMjU2LCAyNTYgKiAyNTYsIDI1NiAqIDI1NiAqIDI1NiwgMjU2dWxs
ICogMjU2ICogMjU2ICogMjU2IH07CisgICAgcmV0dXJuIHZhbHVlc1tleHBvbmVudF07Cit9CisK
K2VudW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yIHsKKyAgICBGYWlsdXJlLAor
ICAgIE5vdElQdjQsCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlRm9yU3lu
dGF4VmlvbGF0aW9uLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorRXhwZWN0ZWQ8VVJMUGFyc2Vy
OjpJUHY0QWRkcmVzcywgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yPiBVUkxQYXJzZXI6OnBh
cnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZvclN5bnRh
eFZpb2xhdGlvbj4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24sIENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQoreworICAgIFZlY3RvcjxFeHBlY3Rl
ZDx1aW50MzJfdCwgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3I+LCA0PiBpdGVtczsK
KyAgICBib29sIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IGZhbHNlOworICAgIGlmICghaXRlcmF0
b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgd2hpbGUgKCFpdGVyYXRvci5h
dEVuZCgpKSB7CisgICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7CisgICAg
ICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOworICAgICAgICAgICAgKytpdGVy
YXRvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChpdGVt
cy5zaXplKCkgPj0gNCkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFy
c2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAgaXRlbXMuYXBwZW5kKHBhcnNlSVB2NFBpZWNl
KGl0ZXJhdG9yLCBkaWRTZWVTeW50YXhWaW9sYXRpb24pKTsKKyAgICAgICAgaWYgKCFpdGVyYXRv
ci5hdEVuZCgpICYmICppdGVyYXRvciA9PSAnLicpIHsKKyAgICAgICAgICAgICsraXRlcmF0b3I7
CisgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlIGlmICgqaXRlcmF0b3IgPT0gJy4nKQorICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgfHwgIWl0ZW1zLnNpemUoKSB8fCBpdGVtcy5z
aXplKCkgPiA0KQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJv
cjo6Tm90SVB2NCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsKKyAgICAg
ICAgaWYgKCFpdGVtLmhhc192YWx1ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0UGllY2VQYXJz
aW5nRXJyb3I6OkZhaWx1cmUpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2
NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7CisgICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgaXRl
bSA6IGl0ZW1zKSB7CisgICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVtLmVycm9y
KCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdykKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKyAgICB9CisgICAg
aWYgKGl0ZW1zLnNpemUoKSA+IDEpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBp
dGVtcy5zaXplKCkgLSAxOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpdGVtc1tpXS52YWx1ZSgp
ID4gMjU1KQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2lu
Z0Vycm9yOjpGYWlsdXJlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaXRlbXNbaXRlbXMu
c2l6ZSgpIC0gMV0udmFsdWUoKSA+PSBwb3cyNTYoNSAtIGl0ZW1zLnNpemUoKSkpCisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKKworICAg
IGlmIChkaWRTZWVTeW50YXhWaW9sYXRpb24pCisgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVy
YXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0
ZW0gOiBpdGVtcykgeworICAgICAgICBpZiAoaXRlbS52YWx1ZSgpID4gMjU1KQorICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwor
ICAgIH0KKworICAgIGlmIChVTkxJS0VMWShpdGVtcy5zaXplKCkgIT0gNCkpCisgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKworICAg
IElQdjRBZGRyZXNzIGlwdjQgPSBpdGVtcy50YWtlTGFzdCgpLnZhbHVlKCk7CisgICAgZm9yIChz
aXplX3QgY291bnRlciA9IDA7IGNvdW50ZXIgPCBpdGVtcy5zaXplKCk7ICsrY291bnRlcikKKyAg
ICAgICAgaXB2NCArPSBpdGVtc1tjb3VudGVyXS52YWx1ZSgpICogcG93MjU2KDMgLSBjb3VudGVy
KTsKKyAgICByZXR1cm4gaXB2NDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNp
ZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB1aW50MzJfdCBwaWVjZSA9IDA7CisgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKKyAg
ICBzaXplX3QgZGlnaXRDb3VudCA9IDA7CisgICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7
CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCppdGVyYXRvcikpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgICAgICArK2RpZ2l0Q291bnQ7CisgICAgICAgIGlmICghcGll
Y2UgJiYgKml0ZXJhdG9yID09ICcwJykgeworICAgICAgICAgICAgaWYgKGxlYWRpbmdaZXJvcykK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgbGVhZGlu
Z1plcm9zID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXBpZWNlICYmICppdGVyYXRv
ciA9PSAnMCcpCisgICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICBwaWVj
ZSA9IHBpZWNlICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7CisgICAgICAgIGlmIChwaWVjZSA+IDI1
NSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgICAg
ICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAo
Kml0ZXJhdG9yID09ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocGll
Y2UgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJl
dHVybiBwaWVjZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6
b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjRBZGRy
ZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikK
K3sKKyAgICBJUHY0QWRkcmVzcyBhZGRyZXNzID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDQ7ICsraSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGllY2Ug
PSBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoaXRlcmF0b3IpKQorICAgICAgICAgICAgYWRkcmVz
cyA9IChhZGRyZXNzIDw8IDgpICsgcGllY2UudmFsdWUoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKGkgPCAzKSB7CisgICAgICAg
ICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgaWYgKCppdGVyYXRvciAhPSAnLicpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgICAgICB9IGVsc2Ug
aWYgKCFpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9CisgICAgQVNTRVJUKGl0ZXJhdG9yLmF0RW5kKCkpOworICAgIHJldHVybiBhZGRyZXNz
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxV
UkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3sKKyAgICBBU1NFUlQoKmMgPT0gJ1snKTsKKyAg
ICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7CisgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwor
ICAgIGlmIChjLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBJ
UHY2QWRkcmVzcyBhZGRyZXNzID0ge3swLCAwLCAwLCAwLCAwLCAwLCAwLCAwfX07CisgICAgc2l6
ZV90IHBpZWNlUG9pbnRlciA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNvbXByZXNz
UG9pbnRlcjsKKworICAgIGlmICgqYyA9PSAnOicpIHsKKyAgICAgICAgYWR2YW5jZShjLCBob3N0
QmVnaW4pOworICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgaWYgKCpjICE9ICc6JykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKKyAgICAgICAgKytwaWVj
ZVBvaW50ZXI7CisgICAgICAgIGNvbXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRlcjsKKyAgICB9
CisgICAgCisgICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKHBpZWNlUG9pbnRl
ciA9PSA4KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCpj
ID09ICc6JykgeworICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlcikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVn
aW4pOworICAgICAgICAgICAgKytwaWVjZVBvaW50ZXI7CisgICAgICAgICAgICBjb21wcmVzc1Bv
aW50ZXIgPSBwaWVjZVBvaW50ZXI7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDYgfHwgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVj
ZVBvaW50ZXIgPCA2KSkgeworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8SVB2NEFkZHJl
c3M+IGlwdjRBZGRyZXNzID0gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoYykpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA9PSA1KQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOworICAgICAgICAgICAgICAgIGFkZHJlc3NbcGllY2VQ
b2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSA+PiAxNjsKKyAgICAgICAgICAgICAgICBh
ZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgJiAweEZGRkY7Cisg
ICAgICAgICAgICAgICAgYyA9IHsgfTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICB1aW50MTZfdCB2YWx1ZSA9IDA7CisgICAgICAgIHNp
emVfdCBsZW5ndGggPSAwOworICAgICAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOworICAg
ICAgICBmb3IgKDsgbGVuZ3RoIDwgNDsgbGVuZ3RoKyspIHsKKyAgICAgICAgICAgIGlmIChjLmF0
RW5kKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlI
ZXhEaWdpdCgqYykpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoaXNB
U0NJSVVwcGVyKCpjKSkKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2lu
KTsKKyAgICAgICAgICAgIGlmICgqYyA9PSAnMCcgJiYgIWxlbmd0aCkKKyAgICAgICAgICAgICAg
ICBsZWFkaW5nWmVyb3MgPSB0cnVlOworICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAqIDB4MTAg
KyB0b0FTQ0lJSGV4VmFsdWUoKmMpOworICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4p
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoVU5MSUtFTFkoKHZhbHVlICYmIGxl
YWRpbmdaZXJvcykgfHwgKCF2YWx1ZSAmJiBsZW5ndGggPiAxKSkpCisgICAgICAgICAgICBzeW50
YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKworICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisr
XSA9IHZhbHVlOworICAgICAgICBpZiAoYy5hdEVuZCgpKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCB8fCAqYyAhPSAnOicpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CisgICAg
fQorICAgIAorICAgIGlmICghYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIAorICAgIGlmIChjb21wcmVzc1BvaW50ZXIpIHsKKyAgICAgICAgc2l6ZV90IHN3YXBz
ID0gcGllY2VQb2ludGVyIC0gY29tcHJlc3NQb2ludGVyLnZhbHVlKCk7CisgICAgICAgIHBpZWNl
UG9pbnRlciA9IDc7CisgICAgICAgIHdoaWxlIChzd2FwcykKKyAgICAgICAgICAgIHN0ZDo6c3dh
cChhZGRyZXNzW3BpZWNlUG9pbnRlci0tXSwgYWRkcmVzc1tjb21wcmVzc1BvaW50ZXIudmFsdWUo
KSArIHN3YXBzLS0gLSAxXSk7CisgICAgfSBlbHNlIGlmIChwaWVjZVBvaW50ZXIgIT0gOCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBw
b3NzaWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFkZHJlc3Mp
OworICAgIGlmIChwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikKKyAgICAgICAgcG9zc2libGVDb21w
cmVzc1BvaW50ZXIudmFsdWUoKSsrOworICAgIGlmIChVTkxJS0VMWShjb21wcmVzc1BvaW50ZXIg
IT0gcG9zc2libGVDb21wcmVzc1BvaW50ZXIpKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9z
dEJlZ2luKTsKKyAgICAKKyAgICByZXR1cm4gYWRkcmVzczsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KK1VSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2VyOjpwZXJj
ZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9z
aXRpb24pCit7CisgICAgTENoYXJCdWZmZXIgb3V0cHV0OworICAgIG91dHB1dC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgeworICAgICAgICB1aW50OF90IGJ5dGUgPSBpbnB1dFtpXTsKKyAgICAgICAg
aWYgKGJ5dGUgIT0gJyUnKQorICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRl
KTsKKyAgICAgICAgZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpIDwgbGVuZ3RoIC0gMikgeworICAg
ICAgICAgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pICYmIGlzQVNDSUlIZXhE
aWdpdChpbnB1dFtpICsgMl0pKSB7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0
ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgICAgICAgICAgICAgIG91dHB1
dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSAr
IDJdKSk7CisgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOworICAgIH0KKyAgICBy
ZXR1cm4gb3V0cHV0OworfQorICAgIAorVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciBVUkxQYXJzZXI6
OnBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAg
IExDaGFyQnVmZmVyIG91dHB1dDsKKyAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShs
ZW5ndGgpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07CisgICAgICAgIGlmIChieXRlICE9ICcl
JykKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7CisgICAgICAgIGVs
c2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKKyAgICAgICAgICAgIGlmIChp
c0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSAr
IDJdKSkgeworICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhl
eFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7CisgICAgICAgICAgICAgICAgaSAr
PSAyOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tl
ZEFwcGVuZChieXRlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvdXRwdXQudW5jaGVj
a2VkQXBwZW5kKGJ5dGUpOworICAgIH0KKyAgICByZXR1cm4gb3V0cHV0OworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6TENoYXJC
dWZmZXI+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiBkb21haW4sIGNvbnN0
IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xh
dGlvblBvc2l0aW9uKQoreworICAgIExDaGFyQnVmZmVyIGFzY2lpOworICAgIGlmIChkb21haW4u
aXNBbGxBU0NJSSgpKSB7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBkb21haW4ubGVuZ3RoKCk7
CisgICAgICAgIGlmIChkb21haW4uaXM4Qml0KCkpIHsKKyAgICAgICAgICAgIGNvbnN0IExDaGFy
KiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnM4KCk7CisgICAgICAgICAgICBhc2NpaS5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlz
QVNDSUlVcHBlcihjaGFyYWN0ZXJzW2ldKSkpCisgICAgICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICAgICAgICAg
ICAgICBhc2NpaS51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUxvd2VyKGNoYXJhY3RlcnNbaV0pKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAgYXNjaWku
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShp
c0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQorICAgICAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgICAgICAg
ICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFzY2lpOworICAgIH0K
KyAgICAKKyAgICBjb25zdCBzaXplX3QgbWF4RG9tYWluTGVuZ3RoID0gNjQ7CisgICAgVUNoYXIg
aG9zdG5hbWVCdWZmZXJbbWF4RG9tYWluTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVycm9yID0g
VV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJRE5BX0lO
Rk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlk
bmFfbmFtZVRvQVNDSUkoJmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpLCBTdHJp
bmdWaWV3KGRvbWFpbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGRvbWFpbi5sZW5ndGgoKSwg
aG9zdG5hbWVCdWZmZXIsIG1heERvbWFpbkxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmZXJy
b3IpOworICAgIEFTU0VSVChudW1DaGFyYWN0ZXJzQ29udmVydGVkIDw9IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG1heERvbWFpbkxlbmd0aCkpOworCisgICAgaWYgKFVfU1VDQ0VTUyhlcnJvcikgJiYg
IXByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgeworICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7
IGkgPCBudW1DaGFyYWN0ZXJzQ29udmVydGVkOyArK2kpIHsKKyAgICAgICAgICAgIEFTU0VSVChp
c0FTQ0lJKGhvc3RuYW1lQnVmZmVyW2ldKSk7CisgICAgICAgICAgICBBU1NFUlQoIWlzQVNDSUlV
cHBlcihob3N0bmFtZUJ1ZmZlcltpXSkpOworICAgICAgICB9CisgICAgICAgIGFzY2lpLmFwcGVu
ZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CisgICAgICAgIGlmIChk
b21haW4gIT0gU3RyaW5nVmlldyhhc2NpaS5kYXRhKCksIGFzY2lpLnNpemUoKSkpCisgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7
CisgICAgICAgIHJldHVybiBhc2NpaTsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
K30KKworYm9vbCBVUkxQYXJzZXI6Omhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29uc3QgVVJM
UGFyc2VyOjpMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW4pCit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhc2NpaURvbWFpbi5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoaXNGb3JiaWRk
ZW5Ib3N0Q29kZVBvaW50KGFzY2lpRG9tYWluW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6cGFyc2VQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlQoKml0ZXJhdG9yID09ICc6Jyk7
CisgICAgYXV0byBjb2xvbkl0ZXJhdG9yID0gaXRlcmF0b3I7CisgICAgYWR2YW5jZShpdGVyYXRv
ciwgY29sb25JdGVyYXRvcik7CisgICAgdWludDMyX3QgcG9ydCA9IDA7CisgICAgaWYgKFVOTElL
RUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7CisgICAgICAgIHVuc2lnbmVkIHBvcnRMZW5ndGggPSBj
dXJyZW50UG9zaXRpb24oY29sb25JdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKKyAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgc2l6
ZV90IGRpZ2l0Q291bnQgPSAwOworICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7CisgICAg
Zm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIGlmIChVTkxJ
S0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgeworICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKSB7CisgICAgICAgICAgICBpZiAo
Kml0ZXJhdG9yID09ICcwJyAmJiAhZGlnaXRDb3VudCkKKyAgICAgICAgICAgICAgICBsZWFkaW5n
WmVyb3MgPSB0cnVlOworICAgICAgICAgICAgKytkaWdpdENvdW50OworICAgICAgICAgICAgcG9y
dCA9IHBvcnQgKiAxMCArICppdGVyYXRvciAtICcwJzsKKyAgICAgICAgICAgIGlmIChwb3J0ID4g
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgaWYgKHBvcnQgJiYgbGVhZGluZ1plcm9zKQorICAgICAgICBzeW50YXhWaW9s
YXRpb24oY29sb25JdGVyYXRvcik7CisgICAgCisgICAgaWYgKCFwb3J0ICYmIGRpZ2l0Q291bnQg
PiAxKQorICAgICAgICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7CisKKyAgICBBU1NF
UlQocG9ydCA9PSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOworICAgIGlmIChVTkxJS0VM
WShkZWZhdWx0UG9ydEZvclByb3RvY29sKHBhcnNlZERhdGFWaWV3KDAsIG1fdXJsLm1fc2NoZW1l
RW5kKSkgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKSkKKyAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGNvbG9uSXRlcmF0b3IpOworICAgIGVsc2UgeworICAgICAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKCc6Jyk7CisgICAgICAgIEFTU0VSVChwb3J0IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDE2X3Q+OjptYXgoKSk7CisgICAgICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXI8dWlu
dDE2X3Q+KHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSk7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgcG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RF
bmQ7CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRMZW5ndGgp
OworICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6
cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRv
cikKK3sKKyAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCppdGVyYXRvciA9PSAnWycpIHsKKyAgICAgICAgYXV0byBpcHY2RW5kID0gaXRlcmF0b3I7Cisg
ICAgICAgIHdoaWxlICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2RW5kICE9ICddJykKKyAgICAg
ICAgICAgICsraXB2NkVuZDsKKyAgICAgICAgaWYgKGlwdjZFbmQuYXRFbmQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IHBhcnNlSVB2Nkhv
c3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaXRlcmF0b3IsIGlwdjZFbmQpKSkg
eworICAgICAgICAgICAgc2VyaWFsaXplSVB2NihhZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAg
ICAgaWYgKCFpcHY2RW5kLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGlwdjZF
bmQpOworICAgICAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2RW5kID09
ICc6JykgeworICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9z
aXRpb24oaXB2NkVuZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVBvcnQoaXB2
NkVuZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVu
ZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3Bv
cnRMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlwdjZFbmQp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmICghbV91cmxJc1NwZWNpYWwpIHsKKyAgICAgICAgZm9yICg7
ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50
KCppdGVyYXRvcikgJiYgKml0ZXJhdG9yICE9ICclJykpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJblNpbXBsZUVuY29kZVNl
dD4oaXRlcmF0b3IpOworICAgICAgICB9CisgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJl
bnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKSB7Cisg
ICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAg
fQorICAgIAorICAgIGlmIChMSUtFTFkoIW1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJKSkgewor
ICAgICAgICBhdXRvIGhvc3RJdGVyYXRvciA9IGl0ZXJhdG9yOworICAgICAgICBmb3IgKDsgIWl0
ZXJhdG9yLmF0RW5kKCk7ICsraXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGlmIChpc1RhYk9yTmV3
bGluZSgqaXRlcmF0b3IpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
aWYgKCppdGVyYXRvciA9PSAnOicpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBpZiAoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KCppdGVyYXRvcikpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGF1dG8gYWRkcmVzcyA9IHBhcnNl
SVB2NEhvc3QoaG9zdEl0ZXJhdG9yLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiho
b3N0SXRlcmF0b3IsIGl0ZXJhdG9yKSk7CisgICAgICAgIGlmIChhZGRyZXNzKSB7CisgICAgICAg
ICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgICAgICBtX3VybC5t
X2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOworICAgICAgICAgICAgaWYgKGl0
ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAw
OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFk
ZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKDsgaG9zdEl0ZXJhdG9yICE9IGl0ZXJhdG9yOyAr
K2hvc3RJdGVyYXRvcikgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JOZXdsaW5l
KCpob3N0SXRlcmF0b3IpKSkgeworICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0
SXRlcmF0b3IpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqaG9zdEl0ZXJhdG9yKSkpCisgICAg
ICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RJdGVyYXRvcik7CisgICAgICAgICAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqaG9zdEl0ZXJhdG9yKSk7CisgICAgICAg
IH0KKyAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsK
KyAgICAgICAgaWYgKCFob3N0SXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBw
YXJzZVBvcnQoaG9zdEl0ZXJhdG9yKTsKKyAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0aCA9IGN1
cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKKyAgICAgICAgbV91
cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIAorICAgIGNvbnN0IGF1dG8gaG9zdEJlZ2luID0gaXRlcmF0b3I7CisgICAgCisgICAg
TENoYXJCdWZmZXIgdXRmOEVuY29kZWQ7CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyAr
K2l0ZXJhdG9yKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0
b3IpKSkgeworICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKml0ZXJhdG9yID09ICc6JykK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUkoKml0ZXJh
dG9yKSkpCisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKKworICAgICAg
ICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKCppdGVyYXRvcikpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOworICAgICAgICBp
bnQzMl90IG9mZnNldCA9IDA7CisgICAgICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZz
ZXQsICppdGVyYXRvcik7CisgICAgICAgIHV0ZjhFbmNvZGVkLmFwcGVuZChidWZmZXIsIG9mZnNl
dCk7CisgICAgfQorICAgIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29k
ZSh1dGY4RW5jb2RlZC5kYXRhKCksIHV0ZjhFbmNvZGVkLnNpemUoKSwgaG9zdEJlZ2luKTsKKyAg
ICBTdHJpbmcgZG9tYWluID0gU3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCks
IHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CisgICAgaWYgKGRvbWFpbi5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhwZXJjZW50RGVj
b2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSkpCisgICAgICAgIHN5bnRheFZpb2xh
dGlvbihob3N0QmVnaW4pOworICAgIGF1dG8gYXNjaWlEb21haW4gPSBkb21haW5Ub0FTQ0lJKCpk
b21haW4uaW1wbCgpLCBob3N0QmVnaW4pOworICAgIGlmICghYXNjaWlEb21haW4gfHwgaGFzRm9y
YmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbi52YWx1ZSgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIExDaGFyQnVmZmVyJiBhc2NpaURvbWFpblZhbHVlID0gYXNjaWlEb21haW4u
dmFsdWUoKTsKKyAgICBjb25zdCBMQ2hhciogYXNjaWlEb21haW5DaGFyYWN0ZXJzID0gYXNjaWlE
b21haW5WYWx1ZS5kYXRhKCk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRIb3N0KGhv
c3RCZWdpbiwgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+KGFzY2lpRG9tYWluVmFsdWUuYmVnaW4o
KSwgYXNjaWlEb21haW5WYWx1ZS5lbmQoKSkpOworICAgIGlmIChhZGRyZXNzKSB7CisgICAgICAg
IHNlcmlhbGl6ZUlQdjQoYWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5k
KCkpIHsKKyAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9y
KTsKKyAgICB9CisgICAgaWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpG
YWlsdXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KGFzY2lpRG9tYWluQ2hhcmFjdGVycywgYXNjaWlEb21haW5WYWx1ZS5zaXplKCkpOworICAgIG1f
dXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CisgICAgaWYgKCFpdGVy
YXRvci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsKKyAgICBt
X3VybC5tX3BvcnRMZW5ndGggPSAwOworICAgIHJldHVybiB0cnVlOworfQorCitzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCit7
CisgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJzaW9uKTsKKyAgICBpZiAo
dXRmOC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBhdXRvIHBl
cmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7Cit9CisK
Ky8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmxlbmNvZGVkLXBhcnNl
cgorYXV0byBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyBpbnB1dCkg
LT4gVVJMRW5jb2RlZEZvcm0KK3sKKyAgICBVUkxFbmNvZGVkRm9ybSBvdXRwdXQ7CisgICAgZm9y
IChTdHJpbmdWaWV3IGJ5dGVzIDogaW5wdXQuc3BsaXQoJyYnKSkgeworICAgICAgICBhdXRvIGVx
dWFsSW5kZXggPSBieXRlcy5maW5kKCc9Jyk7CisgICAgICAgIGlmIChlcXVhbEluZGV4ID09IG5v
dEZvdW5kKSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVjb2RlKGJ5dGVzLnRv
U3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKKyAgICAgICAgICAgIGlmIChuYW1lKQorICAg
ICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIGVtcHR5U3RyaW5nKCkg
fSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVj
b2RlKGJ5dGVzLnN1YnN0cmluZygwLCBlcXVhbEluZGV4KS50b1N0cmluZygpLnJlcGxhY2UoJysn
LCAweDIwKSk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gZm9ybVVSTERlY29kZShieXRlcy5z
dWJzdHJpbmcoZXF1YWxJbmRleCArIDEpLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsK
KyAgICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVlKQorICAgICAgICAgICAgICAgIG91dHB1dC5h
cHBlbmQoeyBuYW1lLnZhbHVlKCksIHZhbHVlLnZhbHVlKCkgfSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworc3RhdGljIHZvaWQgc2VyaWFsaXplVVJMRW5jb2Rl
ZEZvcm0oY29uc3QgU3RyaW5nJiBpbnB1dCwgVmVjdG9yPExDaGFyPiYgb3V0cHV0KQoreworICAg
IGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CisgICAgY29uc3QgY2hh
ciogZGF0YSA9IHV0ZjguZGF0YSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXRmOC5s
ZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IGNoYXIgYnl0ZSA9IGRhdGFbaV07CisgICAg
ICAgIGlmIChieXRlID09IDB4MjApCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDB4MkIpOwor
ICAgICAgICBlbHNlIGlmIChieXRlID09IDB4MkEKKyAgICAgICAgICAgIHx8IGJ5dGUgPT0gMHgy
RAorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDJFCisgICAgICAgICAgICB8fCAoYnl0ZSA+PSAw
eDMwICYmIGJ5dGUgPD0gMHgzOSkKKyAgICAgICAgICAgIHx8IChieXRlID49IDB4NDEgJiYgYnl0
ZSA8PSAweDVBKQorICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDVGCisgICAgICAgICAgICB8fCAo
Ynl0ZSA+PSAweDYxICYmIGJ5dGUgPD0gMHg3QSkpIC8vIEZJWE1FOiBQdXQgdGhlc2UgaW4gdGhl
IGNoYXJhY3RlckNsYXNzVGFibGUgdG8gYXZvaWQgYnJhbmNoZXMuCisgICAgICAgICAgICBvdXRw
dXQuYXBwZW5kKGJ5dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwZXJjZW50RW5jb2Rl
Qnl0ZShieXRlLCBvdXRwdXQpOworICAgIH0KK30KKyAgICAKK1N0cmluZyBVUkxQYXJzZXI6OnNl
cmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYgdHVwbGVzKQoreworICAgIGlmICh0dXBsZXMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPExDaGFyPiBvdXRw
dXQ7CisgICAgZm9yIChhdXRvJiB0dXBsZSA6IHR1cGxlcykgeworICAgICAgICBpZiAoIW91dHB1
dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCcmJyk7CisgICAgICAgIHNl
cmlhbGl6ZVVSTEVuY29kZWRGb3JtKHR1cGxlLmtleSwgb3V0cHV0KTsKKyAgICAgICAgb3V0cHV0
LmFwcGVuZCgnPScpOworICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBsZS52YWx1
ZSwgb3V0cHV0KTsKKyAgICB9CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShvdXRw
dXQpKTsKK30KKworY29uc3QgVUlETkEmIFVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5h
bWVUcmFuc2NvZGVyKCkKK3sKKyAgICBzdGF0aWMgVUlETkEqIGVuY29kZXI7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7CisgICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIC8v
IFdhcm5pbmc6IFBsZWFzZSBjb250YWN0IGEgV2ViS2l0R1RLKyBkZXZlbG9wZXIgaWYgY2hhbmdp
bmcgdGhlc2UgZmxhZ3MuCisgICAgICAgIC8vIFRoZXkgc2hvdWxkIGJlIHN5bmNlZCB3aXRoIGVw
aHlfdXJpX2RlY29kZSgpIGluIGVwaHktdXJpLWhlbHBlcnMuYy4KKyAgICAgICAgZW5jb2RlciA9
IHVpZG5hX29wZW5VVFM0NihVSUROQV9DSEVDS19CSURJIHwgVUlETkFfQ0hFQ0tfQ09OVEVYVEog
fCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fVU5JQ09ERSB8IFVJRE5BX05PTlRSQU5TSVRJT05B
TF9UT19BU0NJSSwgJmVycm9yKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoVV9TVUNDRVNTKGVy
cm9yKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuY29kZXIpOworICAgIH0pOworICAgIHJl
dHVybiAqZW5jb2RlcjsKK30KKworYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFsKGNvbnN0
IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIFVSTF9QQVJTRVJfTE9HKCIlZCAlZCAlZCAl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlc1xuJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJXMiLAorICAgICAgICBhLm1faXNWYWxpZCwKKyAgICAgICAgYS5tX2Nhbm5vdEJl
QUJhc2VVUkwsCisgICAgICAgIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAorICAgICAgICBh
Lm1fc2NoZW1lRW5kLAorICAgICAgICBhLm1fdXNlclN0YXJ0LAorICAgICAgICBhLm1fdXNlckVu
ZCwKKyAgICAgICAgYS5tX3Bhc3N3b3JkRW5kLAorICAgICAgICBhLm1faG9zdEVuZCwKKyAgICAg
ICAgYS5tX2hvc3RFbmQgKyBhLm1fcG9ydExlbmd0aCwKKyAgICAgICAgYS5tX3BhdGhBZnRlckxh
c3RTbGFzaCwKKyAgICAgICAgYS5tX3BhdGhFbmQsCisgICAgICAgIGEubV9xdWVyeUVuZCwKKyAg
ICAgICAgYS5tX3N0cmluZy51dGY4KCkuZGF0YSgpLAorICAgICAgICBiLm1faXNWYWxpZCwKKyAg
ICAgICAgYi5tX2Nhbm5vdEJlQUJhc2VVUkwsCisgICAgICAgIGIubV9wcm90b2NvbElzSW5IVFRQ
RmFtaWx5LAorICAgICAgICBiLm1fc2NoZW1lRW5kLAorICAgICAgICBiLm1fdXNlclN0YXJ0LAor
ICAgICAgICBiLm1fdXNlckVuZCwKKyAgICAgICAgYi5tX3Bhc3N3b3JkRW5kLAorICAgICAgICBi
Lm1faG9zdEVuZCwKKyAgICAgICAgYi5tX2hvc3RFbmQgKyBiLm1fcG9ydExlbmd0aCwKKyAgICAg
ICAgYi5tX3BhdGhBZnRlckxhc3RTbGFzaCwKKyAgICAgICAgYi5tX3BhdGhFbmQsCisgICAgICAg
IGIubV9xdWVyeUVuZCwKKyAgICAgICAgYi5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKKworICAg
IHJldHVybiBhLm1fc3RyaW5nID09IGIubV9zdHJpbmcKKyAgICAgICAgJiYgYS5tX2lzVmFsaWQg
PT0gYi5tX2lzVmFsaWQKKyAgICAgICAgJiYgYS5tX2Nhbm5vdEJlQUJhc2VVUkwgPT0gYi5tX2Nh
bm5vdEJlQUJhc2VVUkwKKyAgICAgICAgJiYgYS5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPT0g
Yi5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkKKyAgICAgICAgJiYgYS5tX3NjaGVtZUVuZCA9PSBi
Lm1fc2NoZW1lRW5kCisgICAgICAgICYmIGEubV91c2VyU3RhcnQgPT0gYi5tX3VzZXJTdGFydAor
ICAgICAgICAmJiBhLm1fdXNlckVuZCA9PSBiLm1fdXNlckVuZAorICAgICAgICAmJiBhLm1fcGFz
c3dvcmRFbmQgPT0gYi5tX3Bhc3N3b3JkRW5kCisgICAgICAgICYmIGEubV9ob3N0RW5kID09IGIu
bV9ob3N0RW5kCisgICAgICAgICYmIGEubV9wb3J0TGVuZ3RoID09IGIubV9wb3J0TGVuZ3RoCisg
ICAgICAgICYmIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gYi5tX3BhdGhBZnRlckxhc3RTbGFz
aAorICAgICAgICAmJiBhLm1fcGF0aEVuZCA9PSBiLm1fcGF0aEVuZAorICAgICAgICAmJiBhLm1f
cXVlcnlFbmQgPT0gYi5tX3F1ZXJ5RW5kOworfQorCitib29sIFVSTFBhcnNlcjo6aW50ZXJuYWxW
YWx1ZXNDb25zaXN0ZW50KGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVybiB1cmwubV9zY2hl
bWVFbmQgPD0gdXJsLm1fdXNlclN0YXJ0CisgICAgICAgICYmIHVybC5tX3VzZXJTdGFydCA8PSB1
cmwubV91c2VyRW5kCisgICAgICAgICYmIHVybC5tX3VzZXJFbmQgPD0gdXJsLm1fcGFzc3dvcmRF
bmQKKyAgICAgICAgJiYgdXJsLm1fcGFzc3dvcmRFbmQgPD0gdXJsLm1faG9zdEVuZAorICAgICAg
ICAmJiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aCA8PSB1cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2gKKyAgICAgICAgJiYgdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IHVybC5tX3Bh
dGhFbmQKKyAgICAgICAgJiYgdXJsLm1fcGF0aEVuZCA8PSB1cmwubV9xdWVyeUVuZAorICAgICAg
ICAmJiB1cmwubV9xdWVyeUVuZCA8PSB1cmwubV9zdHJpbmcubGVuZ3RoKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmggYi9T
b3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTI1YjU0MDIyMzQwYTllODhi
ZWQ4Y2NmMTcwMDM5Mjc3N2ZlNzJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
VVJMUGFyc2VyLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKK3N0cnVjdCBVSUROQTsKKworbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNsYXNzIENvZGVQb2ludEl0
ZXJhdG9yOworCitjbGFzcyBVUkxQYXJzZXIgeworcHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaW50ZXJuYWxWYWx1ZXNDb25zaXN0
ZW50KGNvbnN0IFVSTCYpOworICAgIAorICAgIHVzaW5nIFVSTEVuY29kZWRGb3JtID0gVmVjdG9y
PFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj47CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBVUkxFbmNvZGVkRm9ybSBwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBV
UkxFbmNvZGVkRm9ybSYpOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlz
U3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF5YmVDYW5vbmljYWxpemVTY2hlbWUo
Y29uc3QgU3RyaW5nJiBzY2hlbWUpOworCisgICAgc3RhdGljIGNvbnN0IFVJRE5BJiBpbnRlcm5h
dGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBpc0luVXNlcklu
Zm9FbmNvZGVTZXQoVUNoYXIpOworCitwcml2YXRlOgorICAgIFVSTFBhcnNlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7
CisgICAgVVJMIHJlc3VsdCgpIHsgcmV0dXJuIG1fdXJsOyB9CisKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3KTsKKyAg
ICBmcmllbmQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChT
dHJpbmdWaWV3KTsKKyAgICBmcmllbmQgY2xhc3MgVVJMOworCisgICAgVVJMIG1fdXJsOworICAg
IFZlY3RvcjxMQ2hhcj4gbV9hc2NpaUJ1ZmZlcjsKKyAgICBib29sIG1fdXJsSXNTcGVjaWFsIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fdXJsSXNGaWxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1faG9z
dEhhc1BlcmNlbnRPck5vbkFTQ0lJIHsgZmFsc2UgfTsKKyAgICBTdHJpbmcgbV9pbnB1dFN0cmlu
ZzsKKyAgICBjb25zdCB2b2lkKiBtX2lucHV0QmVnaW4geyBudWxscHRyIH07CisKKyAgICBib29s
IG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uIHsgZmFsc2UgfTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZSA9IDIwNDg7CisgICAgdXNpbmcgTENoYXJC
dWZmZXIgPSBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPjsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2UoY29uc3QgQ2hhcmFjdGVy
VHlwZSosIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVVJMJiwgY29uc3QgVVJMVGV4dEVu
Y29kaW5nKik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBwYXJz
ZUF1dGhvcml0eShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBib29sIHBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYp
OworCisgICAgdm9pZCBmYWlsdXJlKCk7CisgICAgZW51bSBjbGFzcyBSZXBvcnRTeW50YXhWaW9s
YXRpb24geyBObywgWWVzIH07CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwg
UmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZpb2xhdGlvbiA9IFJlcG9ydFN5bnRh
eFZpb2xhdGlvbjo6WWVzPgorICAgIHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3IpIHsgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCByZXBvcnRTeW50
YXhWaW9sYXRpb24+KGl0ZXJhdG9yLCBpdGVyYXRvcik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9s
YXRpb246Olllcz4KKyAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4mLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JG
b3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gYm9vbCB0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZv
aWQgc3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1BlcmNlbnRF
bmNvZGVkRG90KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzV2luZG93c0RyaXZlTGV0dGVyKENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBib29sIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJv
b2wgaXNEb3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
Pik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBzaG91bGRDb3B5
RmlsZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBjaGVja0xvY2FsaG9zdENvZGVQb2ludChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIFVDaGFyMzIpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPik7CisgICAgYm9vbCBpc0xvY2FsaG9zdChTdHJpbmdWaWV3KTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVTaW5nbGVEb3RQ
YXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29uc3VtZURvdWJsZURvdFBhdGhTZWdt
ZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzaXplX3QgY3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2Vy
VHlwZT4gdm9pZCBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdlclR5cGUp
OworICAgIHRlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gdm9pZCB1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHZvaWQgdXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25h
bDxMQ2hhckJ1ZmZlcj4gZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRp
b24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExDaGFyQnVmZmVyIHBl
cmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAg
ICBzdGF0aWMgTENoYXJCdWZmZXIgcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCk7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBmb3JtVVJMRGVjb2RlKFN0cmluZ1Zp
ZXcgaW5wdXQpOworICAgIHN0YXRpYyBib29sIGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29u
c3QgTENoYXJCdWZmZXImKTsKKyAgICB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QpOwor
ICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyKTsKKyAgICB2b2lkIGFwcGVuZFRv
QVNDSUlCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmRUb0FT
Q0lJQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNoYXJhY3RlcnMpLCBzaXpl
KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgZW5jb2RlTm9u
VVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIHNvdXJjZSwgY29uc3QgVVJMVGV4dEVuY29k
aW5nJiwgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHZvaWQgY29weUFT
Q0lJU3RyaW5nVW50aWwoY29uc3QgU3RyaW5nJiwgc2l6ZV90IGxlbmd0aCk7CisgICAgYm9vbCBj
b3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmKTsKKyAgICBTdHJpbmdWaWV3IHBh
cnNlZERhdGFWaWV3KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCk7CisgICAgVUNoYXIgcGFy
c2VkRGF0YVZpZXcoc2l6ZV90IHBvc2l0aW9uKTsKKworICAgIHVzaW5nIElQdjRBZGRyZXNzID0g
dWludDMyX3Q7CisgICAgdm9pZCBzZXJpYWxpemVJUHY0KElQdjRBZGRyZXNzKTsKKyAgICBlbnVt
IGNsYXNzIElQdjRQYXJzaW5nRXJyb3I7CisgICAgZW51bSBjbGFzcyBJUHY0UGllY2VQYXJzaW5n
RXJyb3I7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xh
dGlvbiwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8SVB2NEFkZHJlc3MsIElQdjRQ
YXJzaW5nRXJyb3I+IHBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbj4mLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8dWlu
dDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRQaWVjZShD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xhdGlvbik7
CisgICAgdXNpbmcgSVB2NkFkZHJlc3MgPSBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PjsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQdjZBZGRyZXNz
PiBwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBw
YXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQ
djRBZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPik7CisgICAgdm9pZCBzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGll
Y2UpOworICAgIHZvaWQgc2VyaWFsaXplSVB2NihJUHY2QWRkcmVzcyk7CisKKyAgICBlbnVtIGNs
YXNzIFVSTFBhcnQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBj
b3B5VVJMUGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQsIGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYpOworICAg
IHN0YXRpYyBzaXplX3QgdXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYsIFVSTFBhcnQpOwor
ICAgIHZvaWQgcG9wUGF0aCgpOworICAgIGJvb2wgc2hvdWxkUG9wUGF0aCh1bnNpZ25lZCk7Cit9
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY2NjVhOGQwZmZi
OTYzNDkyMDY0NTMxNzA1YmMxY2I5MzNiYjc4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCisKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKworUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUsIENGVVJMUmVmIGJhc2VVUkwpCit7CisgICAgLy8gTk9U
RTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29t
cHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAvLyAoZS5n
IGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9s
ZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCisgICAgLy8gY291bGQgZWl0
aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGlu
ZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjaworICAgIC8vIG9udG8gdXNpbmcgSVNP
IExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCisgICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXN1bHQg
PSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGJh
c2VVUkwsIHRydWUpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRD
RihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGJhc2VV
UkwsIHRydWUpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIGdldFVSTEJ5dGVzKENG
VVJMUmVmIHVybCwgVVJMQ2hhckJ1ZmZlciYgcmVzdWx0KQoreworICAgIENGSW5kZXggYnl0ZXNM
ZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7CisgICAgcmVzdWx0LnJlc2l6ZShieXRl
c0xlbmd0aCk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCBy
ZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0LmRhdGEoKSksIGJ5dGVzTGVuZ3RoKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRlc0xlbmd0aCk7
Cit9CisKK3ZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBDU3RyaW5nJiByZXN1bHQpCit7
CisgICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKKyAg
ICBjaGFyKiBieXRlczsKKyAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGJ5
dGVzTGVuZ3RoLCBieXRlcyk7CisgICAgQ0ZJbmRleCBmaW5hbExlbmd0aCA9IENGVVJMR2V0Qnl0
ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7Cisg
ICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5ndGggPT0gYnl0ZXNMZW5ndGgp
OworfQorCitib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmIGNmVVJMLCBjb25zdCBVUkwm
IHVybCkKK3sKKyAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CisKKyAg
ICBpZiAodXJsLmhhc1VzZXJuYW1lKCkgfHwgdXJsLmhhc1Bhc3N3b3JkKCkpCisgICAgICAgIHJl
dHVybiBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBVUkwgeyBjZlVSTCB9KTsKKwor
ICAgIFVSTENoYXJCdWZmZXIgYnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIGJ5dGVzKTsK
KyAgICBTdHJpbmdWaWV3IGNmVVJMU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KGJ5dGVzLmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihieXRlcy5zaXplKCkpIH07
CisKKyAgICBpZiAoIXVybC5oYXNQYXRoKCkpCisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3IHsg
dXJsLnN0cmluZygpIH0gPT0gY2ZVUkxTdHJpbmc7CisKKyAgICBhdXRvIHVybFdpdGhvdXRQYXRo
ID0gU3RyaW5nVmlldyB7IHVybC5zdHJpbmcoKSB9LnN1YnN0cmluZygwLCB1cmwucGF0aFN0YXJ0
KCkgKyAxKTsKKyAgICByZXR1cm4gY2ZVUkxTdHJpbmcuc3RhcnRzV2l0aCh1cmxXaXRob3V0UGF0
aCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhYzQ5YzNmMzdm
NjUwMGU5NjNhZWQ1YjA0ZDA5OGYzODUxZjBlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIENGVVJMRXh0cmFzX2gKKyNkZWZpbmUgQ0ZVUkxFeHRyYXNfaAorCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVVJMOwordHlwZWRlZiBWZWN0
b3I8Y2hhciwgNTEyPiBVUkxDaGFyQnVmZmVyOworCitXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWlu
UHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwg
Q0ZVUkxSZWYgYmFzZVVSTCA9IDApOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0VVJMQnl0
ZXMoQ0ZVUkxSZWYsIFVSTENoYXJCdWZmZXImKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGdl
dFVSTEJ5dGVzKENGVVJMUmVmLCBDU3RyaW5nJik7CisKK2Jvb2wgaXNDRlVSTFNhbWVPcmlnaW4o
Q0ZVUkxSZWYsIGNvbnN0IFVSTCYpOworCit9CisKKyNlbmRpZiAvLyBDRlVSTEV4dHJhc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9j
Zi9VUkxDRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk1OTFlMmIzODRlYmIyMDZkNTIyMjdlYzljYmY5ZTc1
ZDk1ODI1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcApA
QCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisKKyNpbmNsdWRlICJDRlVSTEV4dHJhcy5oIgorI2luY2x1ZGUgIlVSTFBhcnNlci5oIgor
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworVVJMOjpVUkwoQ0ZVUkxSZWYgdXJsKQorewor
ICAgIGlmICghdXJsKSB7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhl
cmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAgICBnZXRVUkxCeXRlcyh1cmwsIHVybEJ5dGVz
KTsKKyAgICBVUkxQYXJzZXIgcGFyc2VyKHVybEJ5dGVzLmRhdGEoKSk7CisgICAgKnRoaXMgPSBw
YXJzZXIucmVzdWx0KCk7Cit9CisKKyNpZiAhVVNFKEZPVU5EQVRJT04pCitSZXRhaW5QdHI8Q0ZV
UkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBXaGF0IHNo
b3VsZCB0aGlzIHJldHVybiBmb3IgaW52YWxpZCBVUkxzPworICAgIC8vIEN1cnJlbnRseSBpdCB0
aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5n
IGluIHRoYXQgY2FzZSwKKyAgICAvLyB3aGljaCBpcyBjbGVhcmx5IHdyb25nLgorICAgIFVSTENo
YXJCdWZmZXIgYnVmZmVyOworICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOworICAgIGF1dG8gY2ZV
UkwgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CisKKyAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NGVVJMU2FtZU9yaWdp
bihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBjZlVSTDsKK30KKyNlbmRpZgorCitTdHJpbmcgVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNv
bnN0Cit7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTCA9IGNyZWF0ZUNGVVJMKCk7Cisg
ICAgaWYgKCFjZlVSTCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisjaWYgUExBVEZPUk0o
V0lOKQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5
bGU7CisjZWxzZQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0
aFN0eWxlOworI2VuZGlmCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBh
dGgoY2ZVUkwuZ2V0KCksIHBhdGhTdHlsZSkpLmdldCgpOworfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TlNVUkxFeHRyYXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQzMmU0YjMzZDI0ODdkYjcwZmY0ZDM5YjBiZDQz
ZTlmODlhYTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxF
eHRyYXMuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3
LCAyMDEyLCAyMDE0IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAY2xhc3MgTlNTdHJpbmc7CitA
Y2xhc3MgTlNVUkw7CisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQT1JUX1BSSVZBVEUgTlNT
dHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopOworV1RGX0VYUE9SVF9QUklWQVRFIE5T
VVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICosIE5TVVJMICpiYXNlVVJMKTsg
Ly8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBO
U1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICopOworV1RGX0VYUE9SVF9QUklWQVRF
IE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsgLy8gUmV0dXJuIHZhbHVlIG9m
IG5pbCBtZWFucyBlcnJvci4KK1dURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAqZW5jb2RlSG9z
dE5hbWUoTlNTdHJpbmcgKik7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3IuCitX
VEZfRVhQT1JUX1BSSVZBVEUgTlNVUkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9y
ZUNvbXBvbmVudChOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOworV1RGX0VYUE9SVF9QUklW
QVRFIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKiwgTlNVUkwgKmJhc2VVUkwpOworV1RGX0VY
UE9SVF9QUklWQVRFIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOworV1RGX0VYUE9S
VF9QUklWQVRFIE5TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKiwgQ0ZVUkxD
b21wb25lbnRUeXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBOU1VSTCAqVVJMV2l0aFVzZXJUeXBl
ZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKiwgTlNVUkwgKmJhc2VVUkwpOworCitOU1Jhbmdl
IHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgQk9PTCBp
c1VzZXJWaXNpYmxlVVJMKE5TU3RyaW5nICopOworV1RGX0VYUE9SVF9QUklWQVRFIEJPT0wgbG9v
a3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcgKik7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzVlNDJkYjVhMGUzNDQ0YjI4
NTdkM2VmMTY5ODA3YzI5NTNlYTMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
Y29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTAsMCArMSwxMjM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0ICJOU1VS
TEV4dHJhcy5oIgorCisjaW1wb3J0ICJDRlVSTEV4dHJhcy5oIgorI2ltcG9ydCAiVVJMUGFyc2Vy
LmgiCisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi9IZXhOdW1iZXIuaD4K
KyNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgor
I2ltcG9ydCA8dW5pY29kZS91aWRuYS5oPgorI2ltcG9ydCA8dW5pY29kZS91c2NyaXB0Lmg+CisK
Ky8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2RlZCBuYW1lLgor
Ly8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSUROIGVuY29k
aW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgorI2RlZmluZSBIT1NUX05BTUVfQlVG
RkVSX0xFTkdUSCAyMDQ4CisjZGVmaW5lIFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIIDIwNDgKKwor
dHlwZWRlZiB2b2lkICgqIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uKShOU1N0cmluZyAqLCBO
U1JhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+Jik7CisKK3N0YXRpYyB1aW50MzJfdCBJ
RE5TY3JpcHRXaGl0ZUxpc3RbKFVTQ1JJUFRfQ09ERV9MSU1JVCArIDMxKSAvIDMyXTsKKworbmFt
ZXNwYWNlIFdURiB7CisKK3N0YXRpYyBib29sIGlzQXJtZW5pYW5Mb29rYWxpa2VDaGFyYWN0ZXIo
VUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgcmV0dXJuIGNvZGVQb2ludCA9PSAweDA1NDggfHwg
Y29kZVBvaW50ID09IDB4MDU0RCB8fCBjb2RlUG9pbnQgPT0gMHgwNTc4IHx8IGNvZGVQb2ludCA9
PSAweDA1N0Q7Cit9CisKK3N0YXRpYyBib29sIGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoVUNo
YXIzMiBjb2RlUG9pbnQpCit7CisgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsK
KyAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjb2RlUG9pbnQsICZl
cnJvcik7CisgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgeworICAgICAgICBMT0dfRVJS
T1IoImdvdCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBl
cnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gc2NyaXB0
ID09IFVTQ1JJUFRfQVJNRU5JQU47Cit9CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2hhcmFj
dGVyVHlwZSBjaGFyQ29kZSkKK3sKKyAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24o
Y2hhckNvZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGluZ3MgdGhlIFVS
TCBQYXJzZXIgcmVqZWN0czoKKyAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7CisgICAgY2FzZSAnIyc6
CisgICAgY2FzZSAnJSc6CisgICAgY2FzZSAnLyc6CisgICAgY2FzZSAnOic6CisgICAgY2FzZSAn
Pyc6CisgICAgY2FzZSAnQCc6CisgICAgY2FzZSAnWyc6CisgICAgY2FzZSAnXFwnOgorICAgIGNh
c2UgJ10nOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorfQorCisKKworc3RhdGljIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0
ZXIoc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjaGFy
Q29kZSkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVu
c2FmZSwgbG9va2FsaWtlIGNoYXJhY3RlcnM6CisgICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hh
cmFjdGVyLCBhbnkgY2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKKyAgICAvLyBh
bnkgaWdub3JhYmxlIGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBs
b2Nrcy4KKyAgICAKKyAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4g
TW96aWxsYSdzIGJsYWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklE
Ti5ibGFja2xpc3RfY2hhcnM+LgorCisgICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVycyBoZXJl
IHdpbGwgbmV2ZXIgYXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgorICAgIC8vIEZvciBleGFt
cGxlLCBJQ1UgdHJhbnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNlIGFuZCBt
b3N0CisgICAgLy8gc2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUgb2YgdGhl
IHR3byBjYWxsZXJzIHVzZXMgdGhpcworICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBoYXZlIG5v
dCBiZWVuIHByb2Nlc3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgorICAgIAor
ICAgIGlmICghdV9pc3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hhckNvZGUp
IHx8IHVfaGFzQmluYXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxF
X0NPREVfUE9JTlQpKQorICAgICAgICByZXR1cm4gWUVTOworICAgIAorICAgIHN3aXRjaCAoY2hh
ckNvZGUpIHsKKyAgICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVB
UlRFUiAqLworICAgICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxG
ICovCisgICAgICAgIGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRF
UlMgKi8KKyAgICAgICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEgg
QUNVVEUgKi8KKyAgICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBSRVRST0ZMRVgg
Q0xJQ0sgKi8KKyAgICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBBTFBI
QSAqLworICAgICAgICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBH
ICovCisgICAgICAgIGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJQU5HVUxBUiBD
T0xPTiAqLworICAgICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JUIFNUUk9LRSBP
VkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQgU09MSURV
UyBPVkVSTEFZICovCisgICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcgTE9ORyBTT0xJ
RFVTIE9WRVJMQVkgKi8KKyAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFOIEZVTEwgU1RP
UCAqLworICAgICAgICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICovCisgICAg
ICAgIGNhc2UgMHgwNUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRICovCisgICAg
ICAgIGNhc2UgMHgwNUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRICovCisgICAg
ICAgIGNhc2UgMHgwNUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICovCisgICAg
ICAgIGNhc2UgMHgwNjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04gKi8KKyAgICAg
ICAgY2FzZSAweDA2MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5EIFNJR04gKi8K
KyAgICAgICAgY2FzZSAweDA2NTA6IC8qIEFSQUJJQyBLQVNSQSAqLworICAgICAgICBjYXNlIDB4
MDY2MDogLyogQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KKyAgICAgICAgY2FzZSAweDA2NkE6
IC8qIEFSQUJJQyBQRVJDRU5UIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDA2RDQ6IC8qIEFSQUJJ
QyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDA2RjA6IC8qIEVYVEVOREVEIEFSQUJJQyBJ
TkRJQyBESUdJVCBaRVJPICovCisgICAgICAgIGNhc2UgMHgwNzAxOiAvKiBTWVJJQUMgU1VQUkFM
SU5FQVIgRlVMTCBTVE9QICovCisgICAgICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMgU1VCTElO
RUFSIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4MDcwMzogLyogU1lSSUFDIFNVUFJBTElO
RUFSIENPTE9OICovCisgICAgICAgIGNhc2UgMHgwNzA0OiAvKiBTWVJJQUMgU1VCTElORUFSIENP
TE9OICovCisgICAgICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQVU5DVFVB
VElPTiAqLworICAgICAgICBjYXNlIDB4MUQwNDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgQyAqLworICAgICAgICBjYXNlIDB4MUQwRjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgTyAqLworICAgICAgICBjYXNlIDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgVSAqLworICAgICAgICBjYXNlIDB4MUQyMDogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgViAqLworICAgICAgICBjYXNlIDB4MUQyMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgVyAqLworICAgICAgICBjYXNlIDB4MUQyMjogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElU
QUwgWiAqLworICAgICAgICBjYXNlIDB4MUVDRDogLyogTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lU
SCBET1QgQkVMT1cgKi8KKyAgICAgICAgY2FzZSAweDIwMTA6IC8qIEhZUEhFTiAqLworICAgICAg
ICBjYXNlIDB4MjAxMTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLworICAgICAgICBjYXNlIDB4
MjAyNDogLyogT05FIERPVCBMRUFERVIgKi8KKyAgICAgICAgY2FzZSAweDIwMjc6IC8qIEhZUEhF
TkFUSU9OIFBPSU5UICovCisgICAgICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVGVC1QT0lO
VElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4MjAzQTogLyogU0lO
R0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLICovCisgICAgICAgIGNhc2Ug
MHgyMDQxOiAvKiBDQVJFVCBJTlNFUlRJT04gUE9JTlQgKi8KKyAgICAgICAgY2FzZSAweDIwNDQ6
IC8qIEZSQUNUSU9OIFNMQVNIICovCisgICAgICAgIGNhc2UgMHgyMDUyOiAvKiBDT01NRVJDSUFM
IE1JTlVTIFNJR04gKi8KKyAgICAgICAgY2FzZSAweDIxNTM6IC8qIFZVTEdBUiBGUkFDVElPTiBP
TkUgVEhJUkQgKi8KKyAgICAgICAgY2FzZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08g
VEhJUkRTICovCisgICAgICAgIGNhc2UgMHgyMTU1OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEZJ
RlRIICovCisgICAgICAgIGNhc2UgMHgyMTU2OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRI
UyAqLworICAgICAgICBjYXNlIDB4MjE1NzogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRI
UyAqLworICAgICAgICBjYXNlIDB4MjE1ODogLyogVlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhT
ICovCisgICAgICAgIGNhc2UgMHgyMTU5OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIICov
CisgICAgICAgIGNhc2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhUSFMgKi8K
KyAgICAgICAgY2FzZSAweDIxNUI6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFQgKi8KKyAg
ICAgICAgY2FzZSAweDIxNUM6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhTICovCisg
ICAgICAgIGNhc2UgMHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTICovCisg
ICAgICAgIGNhc2UgMHgyMTVFOiAvKiBWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRIUyAqLwor
ICAgICAgICBjYXNlIDB4MjE1RjogLyogRlJBQ1RJT04gTlVNRVJBVE9SIE9ORSAqLworICAgICAg
ICBjYXNlIDB4MjIxMjogLyogTUlOVVMgU0lHTiAqLworICAgICAgICBjYXNlIDB4MjIxNTogLyog
RElWSVNJT04gU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDIyMTY6IC8qIFNFVCBNSU5VUyAqLwor
ICAgICAgICBjYXNlIDB4MjIzNjogLyogUkFUSU8gKi8KKyAgICAgICAgY2FzZSAweDIzM0Y6IC8q
IEFQTCBGVU5DVElPTkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KKyAgICAgICAgY2FzZSAweDIzQUU6
IC8qIElOVEVHUkFMIEVYVEVOU0lPTiAqLworICAgICAgICBjYXNlIDB4MjQ0QTogLyogT0NSIERP
VUJMRSBCQUNLU0xBU0ggKi8KKyAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlUeXBlOjpC
b3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLwor
ICAgICAgICBjYXNlIDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBE
SUFHT05BTCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUICovCisgICAgICAgIGNhc2UgMHgyOUY2
OiAvKiBTT0xJRFVTIFdJVEggT1ZFUkJBUiAqLworICAgICAgICBjYXNlIDB4MjlGODogLyogQklH
IFNPTElEVVMgKi8KKyAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFS
WSBSRUxBVElPTiAqLworICAgICAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BF
UkFUT1IgKi8KKyAgICAgICAgY2FzZSAweDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9O
IENIQVJBQ1RFUiBMRUZUIFRPIFJJR0hUICovCisgICAgICAgIGNhc2UgMHgyRkYxOiAvKiBJREVP
R1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KKyAgICAgICAg
Y2FzZSAweDJGRjI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRP
IE1JRERMRSBBTkQgUklHSFQgKi8KKyAgICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9HUkFQSElD
IERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICovCisgICAg
ICAgIGNhc2UgMHgyRkY0OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVM
TCBTVVJST1VORCAqLworICAgICAgICBjYXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJ
UFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQUJPVkUgKi8KKyAgICAgICAgY2FzZSAweDJG
RjY6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJF
TE9XICovCisgICAgICAgIGNhc2UgMHgyRkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBD
SEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMRUZUICovCisgICAgICAgIGNhc2UgMHgyRkY4OiAvKiBJ
REVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZU
ICovCisgICAgICAgIGNhc2UgMHgyRkY5OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFS
QUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBSSUdIVCAqLworICAgICAgICBjYXNlIDB4MkZGQTog
LyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIg
TEVGVCAqLworICAgICAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04g
Q0hBUkFDVEVSIE9WRVJMQUlEICovCisgICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVPR1JBUEhJ
QyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUgQlJBQ0tF
VCAqLworICAgICAgICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VU
ICovCisgICAgICAgIGNhc2UgMHgzMDE1OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VU
ICovCisgICAgICAgIGNhc2UgMHgzMDMzOiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQ
UEVSIEhBTEYgKi8KKyAgICAgICAgY2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFU
IE1BUksgTE9XRVIgSEFMRiAqLworICAgICAgICBjYXNlIDB4MzIxRDogLyogUEFSRU5USEVTSVpF
RCBLT1JFQU4gQ0hBUkFDVEVSIE9KRU9OICovCisgICAgICAgIGNhc2UgMHgzMjFFOiAvKiBQQVJF
TlRIRVNJWkVEIEtPUkVBTiBDSEFSQUNURVIgTyBIVSAqLworICAgICAgICBjYXNlIDB4MzNBRTog
LyogU1FVQVJFIFJBRCBPVkVSIFMgKi8KKyAgICAgICAgY2FzZSAweDMzQUY6IC8qIFNRVUFSRSBS
QUQgT1ZFUiBTIFNRVUFSRUQgKi8KKyAgICAgICAgY2FzZSAweDMzQzY6IC8qIFNRVUFSRSBDIE9W
RVIgS0cgKi8KKyAgICAgICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9WRVIgTSAqLworICAg
ICAgICBjYXNlIDB4MDVCOTogLyogSEVCUkVXIFBPSU5UIEhPTEFNICovCisgICAgICAgIGNhc2Ug
MHgwNUJBOiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0gSEFTRVIgRk9SIFZBViAqLworICAgICAgICBj
YXNlIDB4MDVDMTogLyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCisgICAgICAgIGNhc2UgMHgw
NUMyOiAvKiBIRUJSRVcgUE9JTlQgU0lOIERPVCAqLworICAgICAgICBjYXNlIDB4MDVDNDogLyog
SEVCUkVXIE1BUksgVVBQRVIgRE9UICovCisgICAgICAgIGNhc2UgMHhBNzMxOiAvKiBMQVRJTiBM
RVRURVIgU01BTEwgQ0FQSVRBTCBTICovCisgICAgICAgIGNhc2UgMHhBNzcxOiAvKiBMQVRJTiBT
TUFMTCBMRVRURVIgRFVNICovCisgICAgICAgIGNhc2UgMHhBNzg5OiAvKiBNT0RJRklFUiBMRVRU
RVIgQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZP
UiBWRVJUSUNBTCBTRU1JQ09MT04gKi8KKyAgICAgICAgY2FzZSAweEZFMTU6IC8qIFBSRVNFTlRB
VElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFWENMQU1BVElPTiBNQVJLICovCisgICAgICAgIGNhc2Ug
MHhGRTNGOiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFD
S0VUICovCisgICAgICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxM
IEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZFNUU6IC8qIFNNQUxMIFJJR0hUIFRPUlRPSVNF
IFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZGMEU6IC8qIEZVTExXSURUSCBGVUxM
IFNUT1AgKi8KKyAgICAgICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09MSURVUyAqLwor
ICAgICAgICBjYXNlIDB4RkY2MTogLyogSEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwgU1RPUCAq
LworICAgICAgICBjYXNlIDB4RkZGQzogLyogT0JKRUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAq
LworICAgICAgICBjYXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCisgICAg
ICAgIGNhc2UgMHgxRjUwRjogLyogTE9DSyBXSVRIIElOSyBQRU4gKi8KKyAgICAgICAgY2FzZSAw
eDFGNTEwOiAvKiBDTE9TRUQgTE9DSyBXSVRIIEtFWSAqLworICAgICAgICBjYXNlIDB4MUY1MTE6
IC8qIEtFWSAqLworICAgICAgICBjYXNlIDB4MUY1MTI6IC8qIExPQ0sgKi8KKyAgICAgICAgY2Fz
ZSAweDFGNTEzOiAvKiBPUEVOIExPQ0sgKi8KKyAgICAgICAgICAgIHJldHVybiBZRVM7CisgICAg
ICAgIGNhc2UgMHgwMzA3OiAvKiBDT01CSU5JTkcgRE9UIEFCT1ZFICovCisgICAgICAgICAgICBy
ZXR1cm4gcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMjM3IC8qIExBVElOIFNNQUxMIExFVFRFUiBE
T1RMRVNTIEogKi8KKyAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAx
MzEgLyogTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSSAqLworICAgICAgICAgICAgICAgIHx8
IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExFVFRFUiBWQVYgKi8KKyAg
ICAgICAgY2FzZSAweDA1NDg6IC8qIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPICovCisgICAg
ICAgIGNhc2UgMHgwNTREOiAvKiBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUggKi8KKyAgICAg
ICAgY2FzZSAweDA1Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLworICAgICAgICBj
YXNlIDB4MDU3RDogLyogQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNFSCAqLworICAgICAgICAgICAg
cmV0dXJuIHByZXZpb3VzQ29kZVBvaW50CisgICAgICAgICAgICAgICAgJiYgIWlzQVNDSUlEaWdp
dE9yVmFsaWRIb3N0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCisgICAgICAg
ICAgICAgICAgJiYgIWlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQu
dmFsdWUoKSk7CisgICAgICAgIGNhc2UgJy4nOgorICAgICAgICAgICAgcmV0dXJuIE5POworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50CisgICAg
ICAgICAgICAgICAgJiYgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQ
b2ludC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICYmICEoaXNBcm1lbmlhblNjcmlwdENoYXJh
Y3RlcihjaGFyQ29kZSkgfHwgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoY2hhckNv
ZGUpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdoaXRlTGlzdElETlNjcmlwdChjb25zdCBj
aGFyKiBzY3JpcHROYW1lKQoreworICAgIGludDMyX3Qgc2NyaXB0ID0gdV9nZXRQcm9wZXJ0eVZh
bHVlRW51bShVQ0hBUl9TQ1JJUFQsIHNjcmlwdE5hbWUpOworICAgIGlmIChzY3JpcHQgPj0gMCAm
JiBzY3JpcHQgPCBVU0NSSVBUX0NPREVfTElNSVQpIHsKKyAgICAgICAgc2l6ZV90IGluZGV4ID0g
c2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3JpcHQgJSAzMik7
CisgICAgICAgIElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gfD0gbWFzazsKKyAgICB9Cit9CisK
K3N0YXRpYyBCT09MIHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKE5TU3RyaW5nICpmaWxlbmFt
ZSkKK3sKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBGSUxF
ICpmaWxlID0gZm9wZW4oW2ZpbGVuYW1lIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICJyIik7
CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gTk87CisgICAgCisgICAgLy8gUmVhZCBh
IHdvcmQgYXQgYSB0aW1lLgorICAgIC8vIEFsbG93IGNvbW1lbnRzLCBzdGFydGluZyB3aXRoICMg
Y2hhcmFjdGVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgICAgd2hpbGUgKDEpIHsKKyAgICAg
ICAgLy8gU2tpcCBhIGNvbW1lbnQgaWYgcHJlc2VudC4KKyAgICAgICAgaWYgKGZzY2FuZihmaWxl
LCAiICMlKlteXG5ccl0lKltcblxyXSIpID09IEVPRikKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAKKyAgICAgICAgLy8gUmVhZCBhIHNjcmlwdCBuYW1lIGlmIHByZXNlbnQuCisgICAgICAg
IGNoYXIgd29yZFszM107CisgICAgICAgIGludCByZXN1bHQgPSBmc2NhbmYoZmlsZSwgIiAlMzJb
XiMgXHRcblxyXSUqW14jIFx0XG5ccl0gIiwgd29yZCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0g
RU9GKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBpZiAocmVzdWx0ID09
IDEpIHsKKyAgICAgICAgICAgIC8vIEdvdCBhIHdvcmQsIG1hcCB0byBzY3JpcHQgY29kZSBhbmQg
cHV0IGl0IGludG8gdGhlIGFycmF5LgorICAgICAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0KHdv
cmQpOworICAgICAgICB9CisgICAgfQorICAgIGZjbG9zZShmaWxlKTsKKyAgICByZXR1cm4gWUVT
OworfQorCitzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRXaGl0ZUxpc3QoY29u
c3QgVUNoYXIgKmJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCit7CisgICAgc3RhdGljIGRpc3BhdGNo
X29uY2VfdCBmbGFnOworICAgIGRpc3BhdGNoX29uY2UoJmZsYWcsIF57CisgICAgICAgIC8vIFJl
YWQgd2hpdGUgbGlzdCBmcm9tIGxpYnJhcnkuCisgICAgICAgIE5TQXJyYXkgKmRpcnMgPSBOU1Nl
YXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJhcnlEaXJlY3RvcnksIE5TQWxs
RG9tYWluc01hc2ssIFlFUyk7CisgICAgICAgIGludCBudW1EaXJzID0gW2RpcnMgY291bnRdOwor
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bURpcnM7IGkrKykgeworICAgICAgICAgICAg
aWYgKHJlYWRJRE5TY3JpcHRXaGl0ZUxpc3RGaWxlKFtbZGlycyBvYmplY3RBdEluZGV4OmldIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklETlNjcmlwdFdoaXRlTGlzdC50eHQiXSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0IGNoYXIq
IGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3RbMjBdID0geworICAgICAgICAgICAgIkNvbW1vbiIs
CisgICAgICAgICAgICAiSW5oZXJpdGVkIiwKKyAgICAgICAgICAgICJBcmFiaWMiLAorICAgICAg
ICAgICAgIkFybWVuaWFuIiwKKyAgICAgICAgICAgICJCb3BvbW9mbyIsCisgICAgICAgICAgICAi
Q2FuYWRpYW5fQWJvcmlnaW5hbCIsCisgICAgICAgICAgICAiRGV2YW5hZ2FyaSIsCisgICAgICAg
ICAgICAiRGVzZXJldCIsCisgICAgICAgICAgICAiR3VqYXJhdGkiLAorICAgICAgICAgICAgIkd1
cm11a2hpIiwKKyAgICAgICAgICAgICJIYW5ndWwiLAorICAgICAgICAgICAgIkhhbiIsCisgICAg
ICAgICAgICAiSGVicmV3IiwKKyAgICAgICAgICAgICJIaXJhZ2FuYSIsCisgICAgICAgICAgICAi
S2F0YWthbmFfT3JfSGlyYWdhbmEiLAorICAgICAgICAgICAgIkthdGFrYW5hIiwKKyAgICAgICAg
ICAgICJMYXRpbiIsCisgICAgICAgICAgICAiVGFtaWwiLAorICAgICAgICAgICAgIlRoYWkiLAor
ICAgICAgICAgICAgIllpIiwKKyAgICAgICAgfTsKKyAgICAgICAgZm9yIChjb25zdCBjaGFyKiBz
Y3JpcHROYW1lIDogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKKyAgICAgICAgICAgIHdoaXRl
TGlzdElETlNjcmlwdChzY3JpcHROYW1lKTsKKyAgICB9KTsKKyAgICAKKyAgICBpbnQzMl90IGkg
PSAwOworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7CisgICAg
d2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgVUNoYXIzMiBjOworICAgICAgICBVMTZfTkVY
VChidWZmZXIsIGksIGxlbmd0aCwgYykKKyAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVS
T19FUlJPUjsKKyAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQo
YywgJmVycm9yKTsKKyAgICAgICAgaWYgKGVycm9yICE9IFVfWkVST19FUlJPUikgeworICAgICAg
ICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWluZyB0byBsb29rIGF0IHNj
cmlwdHM6ICVkIiwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAgICB9Cisg
ICAgICAgIGlmIChzY3JpcHQgPCAwKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoImdvdCBuZWdh
dGl2ZSBudW1iZXIgZm9yIHNjcmlwdCBjb2RlIGZyb20gSUNVOiAlZCIsIHNjcmlwdCk7CisgICAg
ICAgICAgICByZXR1cm4gTk87CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNjcmlwdCA+PSBVU0NS
SVBUX0NPREVfTElNSVQpCisgICAgICAgICAgICByZXR1cm4gTk87CisKKyAgICAgICAgc2l6ZV90
IGluZGV4ID0gc2NyaXB0IC8gMzI7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSAxIDw8IChzY3Jp
cHQgJSAzMik7CisgICAgICAgIGlmICghKElETlNjcmlwdFdoaXRlTGlzdFtpbmRleF0gJiBtYXNr
KSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0xvb2th
bGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykpCisgICAgICAgICAgICByZXR1cm4g
Tk87CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKKyAgICB9CisgICAgcmV0dXJuIFlF
UzsKK30KKworc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERS
dWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5j
dGlvbjxib29sKFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKK3sKKyAgICBBU1NFUlQobGVu
Z3RoID4gMCk7CisKKyAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1p
KSB7CisgICAgICAgIFVDaGFyIGNoID0gYnVmZmVyW2ldOworICAgICAgICAKKyAgICAgICAgaWYg
KGNoYXJhY3RlcklzQWxsb3dlZChjaCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
CisgICAgICAgIC8vIE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExvd2VyIGxl
dmVsIHJlZ2lzdHJhcnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgorICAgICAgICBpZiAoY2gg
PT0gJy4nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisjZGVmaW5lIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKKyAgICB7IFwKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGludDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yo
c3VmZml4WzBdKTsgXAorICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYmIDAgPT0g
bWVtY21wKGJ1ZmZlciArIGxlbmd0aCAtIHN1ZmZpeExlbmd0aCwgc3VmZml4LCBzaXplb2Yoc3Vm
Zml4KSkpIFwKKyAgICAgICAgICAgIHJldHVybiBpc1NlY29uZExldmVsRG9tYWluTmFtZUFsbG93
ZWRCeVRMRFJ1bGVzKGJ1ZmZlciwgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBmdW5jdGlvbik7IFwK
KyAgICB9CisKK3N0YXRpYyBib29sIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIoVUNoYXIg
Y2gpCit7CisgICAgLy8gT25seSBtb2Rlcm4gUnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRh
c2hlcyBhcmUgYWxsb3dlZC4KKyAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0
NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKK30K
Kworc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVzKGNvbnN0IFVDaGFy
KiBidWZmZXIsIGludDMyX3QgbGVuZ3RoKQoreworICAgIC8vIFNraXAgdHJhaWxpbmcgZG90IGZv
ciByb290IGRvbWFpbi4KKyAgICBpZiAoYnVmZmVyW2xlbmd0aCAtIDFdID09ICcuJykKKyAgICAg
ICAgbGVuZ3RoLS07CisKKyAgICAvLyBodHRwOi8vY2N0bGQucnUvZmlsZXMvcGRmL2RvY3MvcnVs
ZXNfcnUtcmYucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljUkZbXSA9IHsKKyAg
ICAgICAgJy4nLAorICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgor
ICAgICAgICAweDA0NDQgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgorICAgIH07CisgICAg
Q0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSRiwgaXNSdXNzaWFuRG9tYWlu
TmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vcnVzbmFtZXMucnUvcnVsZXMucGwKKyAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNSVVNbXSA9IHsKKyAgICAgICAgJy4nLAorICAg
ICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICAgICAweDA0NDMs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBVCisgICAgICAgIDB4MDQ0MSAgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEVTCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hF
UyhjeXJpbGxpY1JVUywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBo
dHRwOi8vcnUuZmFpdGlkLm9yZy9wcm9qZWN0cy9tb3Njb3cvZG9jdW1lbnRzL21vc2t2YS9pZG4K
KyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT1NLVkFbXSA9IHsKKyAgICAgICAgJy4n
LAorICAgICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQorICAgICAgICAw
eDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEtBCisgICAgICAgIDB4MDQzMiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCisg
ICAgICAgIDB4MDQzMCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICB9OworICAgIENI
RUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljTU9TS1ZBLCBpc1J1c3NpYW5Eb21h
aW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly93d3cuZG90ZGV0aS5ydS9mb3J1c2Vy
L2RvY3MvcmVncnVsZXMucGhwCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljREVUSVtd
ID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzNCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIERFCisgICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCisgICAg
ICAgIDB4MDQ0MiwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCisgICAgICAgIDB4MDQzOCAg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NV
RkZJWF9NQVRDSEVTKGN5cmlsbGljREVUSSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7
CisKKyAgICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBydWxlcyBub3QgcHVibGlzaGVkLiBUaGUg
d29yZCBpcyBSdXNzaWFuLCBzbyBvbmx5IGFsbG93aW5nIFJ1c3NpYW4gYXQgdGhpcyB0aW1lLAor
ICAgIC8vIGFsdGhvdWdoIHdlIG1heSBuZWVkIHRvIHJldmlzZSB0aGUgY2hlY2tzIGlmIHRoaXMg
ZW5kcyB1cCBiZWluZyB1c2VkIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIHNwb2tlbiBpbiBSdXNzaWEu
CisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljT05MQVlOW10gPSB7CisgICAgICAgICcu
JywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAgICAgICAw
eDA0M0QsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICAgICAweDA0M0IsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBFTAorICAgICAgICAweDA0MzAsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBBCisgICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JU
IEkKKyAgICAgICAgMHgwNDNEICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICB9Owor
ICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT05MQVlOLCBpc1J1c3Np
YW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHNh
bWUgYXMgYWJvdmUuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljU0FZVFtdID0gewor
ICAgICAgICAnLicsCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVT
CisgICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICAgICAgMHgw
NDM5LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQorICAgICAgICAweDA0NDIgIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VG
RklYX01BVENIRVMoY3lyaWxsaWNTQVlULCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsK
KworICAgIC8vIGh0dHA6Ly9waXIub3JnL3Byb2R1Y3RzL29wci1kb21haW4vIC0gcnVsZXMgbm90
IHB1Ymxpc2hlZC4gQWNjb3JkaW5nIHRvIHRoZSByZWdpc3RyeSBzaXRlLAorICAgIC8vIHRoZSBp
bnRlbmRlZCBhdWRpZW5jZSBpcyAiUnVzc2lhbiBhbmQgb3RoZXIgU2xhdmljLXNwZWFraW5nIG1h
cmtldHMiLgorICAgIC8vIENocm9tZSBhcHBlYXJzIHRvIG9ubHkgYWxsb3cgUnVzc2lhbiwgc28g
c3RpY2tpbmcgd2l0aCB0aGF0IGZvciBub3cuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljT1JHW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgTworICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBF
UgorICAgICAgICAweDA0MzMgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKKyAgICB9Owor
ICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljT1JHLCBpc1J1c3NpYW5E
b21haW5OYW1lQ2hhcmFjdGVyKTsKKworICAgIC8vIGh0dHA6Ly9jY3RsZC5ieS9ydWxlcy5odG1s
CisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljQkVMW10gPSB7CisgICAgICAgICcuJywK
KyAgICAgICAgMHgwNDMxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKyAgICAgICAgMHgw
NDM1LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKyAgICAgICAgMHgwNDNCICAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9N
QVRDSEVTKGN5cmlsbGljQkVMLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBSdXNzaWFuIGFu
ZCBCeWVsb3J1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisg
ICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgw
NDUxIHx8IGNoID09IDB4MDQ1NiB8fCBjaCA9PSAweDA0NUUgfHwgY2ggPT0gMHgyMDE5IHx8IGlz
QVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0cDovL3d3
dy5uaWMua3ovZG9jcy9wb3J5YWRva192bmVkcmVuaXlhX2thel9ydS5wZGYKKyAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgY3lyaWxsaWNLQVpbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0
OUIsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgICAgICAw
eDA0MzAsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzNyAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhf
TUFUQ0hFUyhjeXJpbGxpY0tBWiwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8gS2F6YWtoIGxl
dHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNo
ID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0
RDkgfHwgY2ggPT0gMHgwNDkzIHx8IGNoID09IDB4MDQ5QiB8fCBjaCA9PSAweDA0QTMgfHwgY2gg
PT0gMHgwNEU5IHx8IGNoID09IDB4MDRCMSB8fCBjaCA9PSAweDA0QUYgfHwgY2ggPT0gMHgwNEJC
IHx8IGNoID09IDB4MDQ1NiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9
KTsKKworICAgIC8vIGh0dHA6Ly91YW5pYy5uZXQvZG9jcy9kb2N1bWVudHMtdWtyL1J1bGVzJTIw
b2YlMjBVS1JfdjQuMC5wZGYKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNVS1JbXSA9
IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0NDMsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBVCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCisgICAgICAg
IDB4MDQ0MCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgfTsKKyAgICBDSEVDS19S
VUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1VLUiwgW10oVUNoYXIgY2gpIHsKKyAgICAg
ICAgLy8gUnVzc2lhbiBhbmQgVWtyYWluaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFy
ZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYp
IHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0OTEgfHwgY2ggPT0gMHgwNDA0IHx8IGNoID09
IDB4MDQ1NiB8fCBjaCA9PSAweDA0NTcgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7
CisgICAgfSk7CisKKyAgICAvLyBodHRwOi8vd3d3LnJuaWRzLnJzL2RhdGEvRE9LVU1FTlRJL2lk
bi1zcmItcG9saWN5LXRlcm1zb2Z1c2UtdjEuNC1lbmcucGRmCisgICAgc3RhdGljIGNvbnN0IFVD
aGFyIGN5cmlsbGljU1JCW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQxLCAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDMxICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUK
KyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU1JCLCBb
XShVQ2hhciBjaCkgeworICAgICAgICAvLyBTZXJiaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFz
aGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAw
eDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2ggPD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTIg
fHwgY2ggPT0gMHgwNDU4IHx8IGNoID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0g
MHgwNDVCIHx8IGNoID09IDB4MDQ1RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsK
KyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly9tYXJuZXQubWsvZG9jL3ByYXZpbG5pay1tay1ta2Qu
cGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljTUtEW10gPSB7CisgICAgICAgICcu
JywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAgICAg
MHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyAgICAgICAgMHgwNDM0ICAvLyBD
WVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJ
WF9NQVRDSEVTKGN5cmlsbGljTUtELCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBNYWNlZG9u
aWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1
cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0MzgpIHx8IChjaCA+PSAweDA0M0EgJiYgY2gg
PD0gMHgwNDQ4KSB8fCBjaCA9PSAweDA0NTMgfHwgY2ggPT0gMHgwNDU1IHx8IGNoID09IDB4MDQ1
OCB8fCBjaCA9PSAweDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QyB8fCBjaCA9
PSAweDA0NUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAg
ICAvLyBodHRwczovL3d3dy5tb24ubW4vY3MvCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljTU9OW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
TworICAgICAgICAweDA0M0QgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgIH07Cisg
ICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT04sIFtdKFVDaGFyIGNo
KSB7CisgICAgICAgIC8vIE1vbmdvbGlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUg
YWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8
fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEU5IHx8IGNoID09IDB4MDRBRiB8fCBpc0FTQ0lJ
RGlnaXQoY2gpIHx8IGNoID09ICctJzsKKyAgICB9KTsKKworICAgIC8vIE5vdCBhIGtub3duIHRv
cCBsZXZlbCBkb21haW4gd2l0aCBzcGVjaWFsIHJ1bGVzLgorICAgIHJldHVybiBOTzsKK30KKwor
Ly8gUmV0dXJuIHZhbHVlIG9mIG5pbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KKy8v
IElmIG1ha2VTdHJpbmcgaXMgTk8sIHRoZW4gcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBuaWwgb3Ig
c2VsZiB0byBpbmRpY2F0ZSBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KKy8vIElmIG1ha2VTdHJpbmcg
aXMgWUVTLCB0aGVuIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHRoZSBtYXBwZWQgc3Ry
aW5nLgorc3RhdGljIE5TU3RyaW5nICptYXBIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3Ry
aW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MIGVuY29kZSwgQk9PTCBtYWtlU3RyaW5nLCBCT09MICpl
cnJvcikKK3sKKyAgICBpZiAocmFuZ2UubGVuZ3RoID4gSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgp
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgVUNoYXIgc291cmNlQnVmZmVyW0hPU1RfTkFN
RV9CVUZGRVJfTEVOR1RIXTsKKyAgICBVQ2hhciBkZXN0aW5hdGlvbkJ1ZmZlcltIT1NUX05BTUVf
QlVGRkVSX0xFTkdUSF07CisgICAgCisgICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZT
dHJpbmc6QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24g
IT0gTlNOb3RGb3VuZCkgeworICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBz
dWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VdOworICAgICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5n
UmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMobnVsbHB0
ciwgKENGU3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7CisgICAgICAgIGlmIChzdWJz
dHJpbmcpIHsKKyAgICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKKyAgICAgICAgICAgIHJh
bmdlID0gTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBpbnQgbGVuZ3RoID0gcmFuZ2UubGVuZ3RoOworICAgIFtzdHJpbmcgZ2V0Q2hh
cmFjdGVyczpzb3VyY2VCdWZmZXIgcmFuZ2U6cmFuZ2VdOworICAgIAorICAgIFVFcnJvckNvZGUg
dWVycm9yID0gVV9aRVJPX0VSUk9SOworICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9
IFVJRE5BX0lORk9fSU5JVElBTElaRVI7CisgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVy
dGVkID0gKGVuY29kZSA/IHVpZG5hX25hbWVUb0FTQ0lJIDogdWlkbmFfbmFtZVRvVW5pY29kZSko
JlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCksIHNvdXJjZUJ1
ZmZlciwgbGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZlciwgSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEgs
ICZwcm9jZXNzaW5nRGV0YWlscywgJnVlcnJvcik7CisgICAgaWYgKGxlbmd0aCAmJiAoVV9GQUlM
VVJFKHVlcnJvcikgfHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzKSkgeworICAgICAgICAqZXJy
b3IgPSBZRVM7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIAorICAgIGlmIChudW1D
aGFyYWN0ZXJzQ29udmVydGVkID09IGxlbmd0aCAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZlciwgZGVz
dGluYXRpb25CdWZmZXIsIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIAorICAgIGlmICghZW5jb2RlICYmICFhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRX
aGl0ZUxpc3QoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpICYmICFh
bGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoZGVzdGluYXRpb25CdWZmZXIsIG51bUNoYXJh
Y3RlcnNDb252ZXJ0ZWQpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJldHVybiBt
YWtlU3RyaW5nID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOmRlc3RpbmF0aW9uQnVm
ZmVyIGxlbmd0aDpudW1DaGFyYWN0ZXJzQ29udmVydGVkXSA6IHN0cmluZzsKK30KKworc3RhdGlj
IEJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5T
UmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQoreworICAgIHJldHVybiBtYXBIb3N0TmFtZVdpdGhS
YW5nZShzdHJpbmcsIHJhbmdlLCBOTywgTk8sIGVycm9yKSAhPSBuaWw7Cit9CisgCitzdGF0aWMg
Qk9PTCBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNS
YW5nZSByYW5nZSwgQk9PTCAqZXJyb3IpCit7CisgICAgcmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJh
bmdlKHN0cmluZywgcmFuZ2UsIFlFUywgIE5PLCBlcnJvcikgIT0gbmlsOworfQorCitzdGF0aWMg
TlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFu
Z2UgcmFuZ2UpCit7CisgICAgQk9PTCBlcnJvciA9IE5POworICAgIE5TU3RyaW5nICpob3N0ID0g
bWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgTk8sIFlFUywgJmVycm9yKTsKKyAg
ICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICFob3N0ID8gc3Ry
aW5nIDogaG9zdDsKK30KKworc3RhdGljIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdpdGhSYW5n
ZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQoreworICAgIEJPT0wgZXJyb3IgPSBO
TzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFu
Z2UsIFlFUywgWUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQorCitOU1N0cmluZyAqZGVj
b2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIGVycm9yID0gTk87Cisg
ICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIE5TTWFrZVJh
bmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSksIE5PLCBZRVMsICZlcnJvcik7CisgICAgaWYgKGVycm9y
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7
Cit9CisKK05TU3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQoreworICAg
IEJPT0wgZXJyb3IgPSBOTzsKKyAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJh
bmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgWUVTLCBZRVMsICZl
cnJvcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAh
aG9zdCA/IHN0cmluZyA6IGhvc3Q7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0
TmVlZE1hcHBpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiYgYXJyYXksIEJPT0wgZW5jb2RlKQoreworICAgIC8vIEdlbmVyYWxseSwg
d2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhvc3Qg
bmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGluZy4KKyAgICAvLyBUaGVyZWZvcmUsIHdlIHVz
ZSBuaWwgdG8gaW5kaWNhdGUgbm8gbWFwcGluZyBoZXJlIGFuZCBhbiBlbXB0eSBhcnJheSB0byBp
bmRpY2F0ZSBlcnJvci4KKworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBCT09MIG5lZWRzTWFw
cGluZyA9IGVuY29kZSA/IGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShzdHJpbmcsIHJh
bmdlLCAmZXJyb3IpIDogaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKHN0cmluZywgcmFu
Z2UsICZlcnJvcik7CisgICAgaWYgKCFlcnJvciAmJiAhbmVlZHNNYXBwaW5nKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgYXJyYXkgPSBhZG9wdE5TKFtO
U011dGFibGVBcnJheSBuZXddKTsKKworICAgIGlmICghZXJyb3IpCisgICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKK30KKworc3RhdGljIHZv
aWQgY29sbGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5n
ZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCit7CisgICAgcmV0dXJu
IGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIFlFUyk7
Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZERlY29kaW5nKE5TU3RyaW5n
ICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5
KQoreworICAgIHJldHVybiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmluZywgcmFu
Z2UsIGFycmF5LCBOTyk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRv
TWFpbFRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0
aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQoreworICAgIC8vIEluIGEg
bWFpbHRvOiBVUkwsIGhvc3QgbmFtZXMgY29tZSBhZnRlciBhICdAJyBjaGFyYWN0ZXIgYW5kIGVu
ZCB3aXRoIGEgJz4nIG9yICcsJyBvciAnPycgY2hhcmFjdGVyLgorICAgIC8vIFNraXAgcXVvdGVk
IHN0cmluZ3Mgc28gdGhhdCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29uZnVzZSB1cy4KKyAg
ICAvLyBXaGVuIHdlIGZpbmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFzdCB0aGUgcGFydCBv
ZiB0aGUgVVJMIHRoYXQgY29udGFpbnMgaG9zdCBuYW1lcy4KKyAgICAKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5hbWVPclN0cmluZ1N0
YXJ0Q2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVy
c0luU3RyaW5nOkAiXCJAPyJdOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
TlNDaGFyYWN0ZXJTZXQ+PiBob3N0TmFtZUVuZENoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQg
Y2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIj4sPyJdOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBxdW90ZWRTdHJpbmdDaGFy
YWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJp
bmc6QCJcIlxcIl07CisgICAgCisgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0cmluZyBs
ZW5ndGhdOworICAgIE5TUmFuZ2UgcmVtYWluaW5nID0gTlNNYWtlUmFuZ2UoMCwgc3RyaW5nTGVu
Z3RoKTsKKyAgICAKKyAgICB3aGlsZSAoMSkgeworICAgICAgICAvLyBGaW5kIHN0YXJ0IG9mIGhv
c3QgbmFtZSBvciBvZiBxdW90ZWQgc3RyaW5nLgorICAgICAgICBOU1JhbmdlIGhvc3ROYW1lT3JT
dHJpbmdTdGFydCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdE5hbWVPclN0
cmluZ1N0YXJ0Q2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5n
XTsKKyAgICAgICAgaWYgKGhvc3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlvbiA9PSBOU05vdEZv
dW5kKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuaWNoYXIgYyA9IFtzdHJpbmcg
Y2hhcmFjdGVyQXRJbmRleDpob3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRpb25dOworICAgICAg
ICByZW1haW5pbmcubG9jYXRpb24gPSBOU01heFJhbmdlKGhvc3ROYW1lT3JTdHJpbmdTdGFydCk7
CisgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9j
YXRpb247CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnPycpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgICAgICBpZiAoYyA9PSAnQCcpIHsKKyAgICAgICAgICAgIC8vIEZp
bmQgZW5kIG9mIGhvc3QgbmFtZS4KKyAgICAgICAgICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQg
PSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAgICAgICBOU1JhbmdlIGhvc3ROYW1lRW5kID0g
W3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpob3N0TmFtZUVuZENoYXJhY3RlcnMuZ2V0
KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107CisgICAgICAgICAgICBCT09MIGRv
bmU7CisgICAgICAgICAgICBpZiAoaG9zdE5hbWVFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkg
eworICAgICAgICAgICAgICAgIGhvc3ROYW1lRW5kLmxvY2F0aW9uID0gc3RyaW5nTGVuZ3RoOwor
ICAgICAgICAgICAgICAgIGRvbmUgPSBZRVM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IGhvc3ROYW1lRW5kLmxvY2F0aW9uOworICAg
ICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcu
bG9jYXRpb247CisgICAgICAgICAgICAgICAgZG9uZSA9IE5POworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBQcm9jZXNzIGhvc3QgbmFtZSByYW5nZS4KKyAgICAg
ICAgICAgIGYoc3RyaW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZC5s
b2NhdGlvbiAtIGhvc3ROYW1lU3RhcnQpLCBhcnJheSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGlmIChkb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KKyAgICAgICAgICAgIEFTU0VSVChj
ID09ICciJyk7CisgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgIE5TUmFu
Z2UgZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVy
RnJvbVNldDpxdW90ZWRTdHJpbmdDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5n
ZTpyZW1haW5pbmddOworICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hhcmFjdGVyT3JTdHJp
bmdFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICAgICAgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRleDplc2NhcGVk
Q2hhcmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb25dOworICAgICAgICAgICAgICAgIHJlbWFpbmlu
Zy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kKTsKKyAg
ICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWluaW5n
LmxvY2F0aW9uOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIElmIHdlIGFy
ZSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUgc3RyaW5nIGxvb3Ag
YmFjayB0byB0aGUgaG9zdCBuYW1lIGxvb3AuCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyIn
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgIEFTU0VS
VChjID09ICdcXCcpOworICAgICAgICAgICAgICAgIGlmICghcmVtYWluaW5nLmxlbmd0aCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxv
Y2F0aW9uICs9IDE7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCAtPSAxOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhcHBseUhvc3RO
YW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJpbmdSYW5nZUFwcGxp
ZXJGdW5jdGlvbiBmLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKK3sKKyAgICAv
LyBGaW5kIGhvc3RuYW1lcy4gVG9vIGJhZCB3ZSBjYW4ndCB1c2UgYW55IHJlYWwgVVJMLXBhcnNp
bmcgY29kZSB0byBkbyB0aGlzLAorICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGRvIGl0IGJlZm9yZSBk
b2luZyBhbGwgdGhlICUtZXNjYXBpbmcsIGFuZCB0aGlzIGlzIHRoZSBvbmx5CisgICAgLy8gY29k
ZSB3ZSBoYXZlIHRoYXQgcGFyc2VzIG1haWx0byBVUkxzIGFueXdheS4KKyAgICAKKyAgICAvLyBN
YXliZSB3ZSBzaG91bGQgaW1wbGVtZW50IHRoaXMgdXNpbmcgYSBjaGFyYWN0ZXIgYnVmZmVyIGlu
c3RlYWQ/CisgICAgCisgICAgaWYgKHByb3RvY29sSXMoc3RyaW5nLCAibWFpbHRvIikpIHsKKyAg
ICAgICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoc3RyaW5nLCBmLCBh
cnJheSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gRmluZCB0aGUgaG9z
dCBuYW1lIGluIGEgaGllcmFyY2hpY2FsIFVSTC4KKyAgICAvLyBJdCBjb21lcyBhZnRlciBhICI6
Ly8iIHNlcXVlbmNlLCB3aXRoIHNjaGVtZSBjaGFyYWN0ZXJzIHByZWNlZGluZy4KKyAgICAvLyBJ
ZiBlbmRzIHdpdGggdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiLCAiLyIsIG9yIGEgIj8i
LgorICAgIC8vIElmIHRoZXJlIGlzIGEgIkAiIGNoYXJhY3RlciwgdGhlIGhvc3QgcGFydCBpcyBq
dXN0IHRoZSBwYXJ0IGFmdGVyIHRoZSAiQCIuCisgICAgTlNSYW5nZSBzZXBhcmF0b3JSYW5nZSA9
IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjovLyJdOworICAgIGlmIChzZXBhcmF0b3JSYW5nZS5s
b2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgLy8gQ2hl
Y2sgdGhhdCBhbGwgY2hhcmFjdGVycyBiZWZvcmUgdGhlIDovLyBhcmUgdmFsaWQgc2NoZW1lIGNo
YXJhY3RlcnMuCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3Rl
clNldD4+IG5vblNjaGVtZUNoYXJhY3RlcnMgPSBbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNl
dFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSstLiJdIGludmVydGVkU2V0XTsKKyAgICBp
ZiAoW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpub25TY2hlbWVDaGFyYWN0ZXJzLmdl
dCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBzZXBhcmF0b3JSYW5nZS5s
b2NhdGlvbildLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07CisgICAgCisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3RUZXJt
aW5hdG9ycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3Ry
aW5nOkAiOi8/IyJdOworICAgIAorICAgIC8vIFN0YXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuCisg
ICAgdW5zaWduZWQgYXV0aG9yaXR5U3RhcnQgPSBOU01heFJhbmdlKHNlcGFyYXRvclJhbmdlKTsK
KyAgICAKKyAgICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICBOU1JhbmdlIGhv
c3ROYW1lVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdFRl
cm1pbmF0b3JzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZShhdXRob3Jp
dHlTdGFydCwgc3RyaW5nTGVuZ3RoIC0gYXV0aG9yaXR5U3RhcnQpXTsKKyAgICB1bnNpZ25lZCBo
b3N0TmFtZUVuZCA9IGhvc3ROYW1lVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8g
c3RyaW5nTGVuZ3RoIDogaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uOworICAgIAorICAgIC8v
IEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KKyAgICBOU1JhbmdlIHVz
ZXJJbmZvVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIkAiIG9wdGlvbnM6MCBy
YW5nZTpOU01ha2VSYW5nZShhdXRob3JpdHlTdGFydCwgaG9zdE5hbWVFbmQgLSBhdXRob3JpdHlT
dGFydCldOworICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQgPSB1c2VySW5mb1Rlcm1pbmF0b3Iu
bG9jYXRpb24gPT0gTlNOb3RGb3VuZCA/IGF1dGhvcml0eVN0YXJ0IDogTlNNYXhSYW5nZSh1c2Vy
SW5mb1Rlcm1pbmF0b3IpOworICAgIAorICAgIHJldHVybiBmKHN0cmluZywgTlNNYWtlUmFuZ2Uo
aG9zdE5hbWVTdGFydCwgaG9zdE5hbWVFbmQgLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkpOworfQor
CitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBtYXBIb3N0TmFtZXMoTlNTdHJpbmcgKnN0cmlu
ZywgQk9PTCBlbmNvZGUpCit7CisgICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXpl
IGZvciB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3Qg
bmVlZCBtYXBwaW5nLgorICAgIAorICAgIGlmIChlbmNvZGUgJiYgW3N0cmluZyBjYW5CZUNvbnZl
cnRlZFRvRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXSkKKyAgICAgICAgcmV0dXJuIHN0
cmluZzsKKyAgICAKKyAgICAvLyBNYWtlIGEgbGlzdCBvZiByYW5nZXMgdGhhdCBhY3R1YWxseSBu
ZWVkIG1hcHBpbmcuCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBob3N0TmFtZVJhbmdl
czsKKyAgICBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmID0gZW5jb2RlID8gY29sbGVjdFJh
bmdlc1RoYXROZWVkRW5jb2RpbmcgOiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWREZWNvZGluZzsKKyAg
ICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhzdHJpbmcsIGYsIGhvc3ROYW1lUmFu
Z2VzKTsKKyAgICBpZiAoIWhvc3ROYW1lUmFuZ2VzKQorICAgICAgICByZXR1cm4gc3RyaW5nOwor
CisgICAgaWYgKCFbaG9zdE5hbWVSYW5nZXMgY291bnRdKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIAorICAgIC8vIERvIHRoZSBtYXBwaW5nLgorICAgIGF1dG8gbXV0YWJsZUNvcHkgPSBhZG9w
dE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsKKyAgICB1bnNpZ25lZCBpID0gW2hvc3ROYW1lUmFu
Z2VzIGNvdW50XTsKKyAgICB3aGlsZSAoaS0tKSB7CisgICAgICAgIE5TUmFuZ2UgaG9zdE5hbWVS
YW5nZSA9IFtbaG9zdE5hbWVSYW5nZXMgb2JqZWN0QXRJbmRleDppXSByYW5nZVZhbHVlXTsKKyAg
ICAgICAgTlNTdHJpbmcgKm1hcHBlZEhvc3ROYW1lID0gZW5jb2RlID8gZW5jb2RlSG9zdE5hbWVX
aXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKSA6IGRlY29kZUhvc3ROYW1lV2l0aFJhbmdl
KHN0cmluZywgaG9zdE5hbWVSYW5nZSk7CisgICAgICAgIFttdXRhYmxlQ29weSByZXBsYWNlQ2hh
cmFjdGVyc0luUmFuZ2U6aG9zdE5hbWVSYW5nZSB3aXRoU3RyaW5nOm1hcHBlZEhvc3ROYW1lXTsK
KyAgICB9CisgICAgcmV0dXJuIG11dGFibGVDb3B5OworfQorCitzdGF0aWMgUmV0YWluUHRyPE5T
U3RyaW5nPiBzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShOU1N0cmluZyAqc3RyaW5nKQorewor
ICAgIGF1dG8gdHJpbW1lZCA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOworICAgIENG
U3RyaW5nVHJpbVdoaXRlc3BhY2UoKF9fYnJpZGdlIENGTXV0YWJsZVN0cmluZ1JlZil0cmltbWVk
LmdldCgpKTsKKyAgICByZXR1cm4gdHJpbW1lZDsKK30KKworTlNVUkwgKlVSTEJ5VHJ1bmNhdGlu
Z09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5
cGUgY29tcG9uZW50KQoreworICAgIGlmICghVVJMKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IAorICAgIENGUmFuZ2UgZnJhZ1JnID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9f
YnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50LCBudWxscHRyKTsKKyAgICBpZiAoZnJhZ1Jn
LmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICByZXR1cm4gVVJMOworCisgICAgVmVj
dG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gdXJsQnl0ZXMoVVJMX0JZVEVTX0JV
RkZFUl9MRU5HVEgpOworICAgIENGSW5kZXggbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2Jy
aWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgdXJsQnl0ZXMuc2l6ZSgpKTsKKyAg
ICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICB1cmxCeXRlcy5n
cm93KG51bUJ5dGVzKTsKKyAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCB1cmxCeXRlcy5kYXRhKCksIG51bUJ5dGVzKTsKKyAgICB9CisKKyAgICBDRlVSTFJlZiBy
ZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZy
YWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxw
dHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2Rp
bmdJU09MYXRpbjEsIG51bGxwdHIpOworICAgICAgICAKKyAgICByZXR1cm4gcmVzdWx0ID8gQ0ZC
cmlkZ2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKK30KKworc3RhdGljIE5TVVJMICpVUkxCeVJl
bW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKK3sKKyAgICByZXR1cm4gVVJMQnlU
cnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KFVSTCwga0NGVVJMQ29tcG9uZW50
UmVzb3VyY2VTcGVjaWZpZXIpOworfQorCitOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRh
LCBOU1VSTCAqYmFzZVVSTCkKK3sKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgCisgICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsKKyAgICBzaXplX3QgbGVuZ3RoID0gW2Rh
dGEgbGVuZ3RoXTsKKyAgICBpZiAobGVuZ3RoID4gMCkgeworICAgICAgICAvLyB3b3JrIGFyb3Vu
ZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKC4uLCBU
UlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21wb25lbnRzLgorICAgICAgICBiYXNlVVJM
ID0gVVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKGJhc2VVUkwpOworICAgICAgICAKKyAg
ICAgICAgY29uc3QgVUludDggKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDgqPihbZGF0
YSBieXRlc10pOworICAgICAgICAKKyAgICAgICAgLy8gQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdp
dGhCeXRlcyB3b3VsZCBjb21wbGFpbiB0byBjb25zb2xlIGlmIHdlIHBhc3NlZCBhIHBhdGggdG8g
aXQuCisgICAgICAgIGlmIChieXRlc1swXSA9PSAnLycgJiYgIWJhc2VVUkwpCisgICAgICAgICAg
ICByZXR1cm4gbmlsOworICAgICAgICAKKyAgICAgICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhl
cmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hl
biByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKKyAgICAgICAgLy8gKGUuZyBjYWxscyB0byBOU1VS
TCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVn
YWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAorICAgICAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBt
YWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIHNo
aWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCisgICAgICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGlu
IDEgaW4gdGhvc2UgY2FzZXMuCisgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENG
VVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Cisg
ICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2luZ1JlbGVh
c2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBieXRlcywgbGVuZ3Ro
LCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkws
IFlFUykpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAIiJdOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KK3N0YXRpYyBOU0RhdGEgKmRhdGFXaXRo
VXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNEYXRhICp1c2VyVHlw
ZWREYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107
CisgICAgQVNTRVJUKHVzZXJUeXBlZERhdGEpOworICAgIAorICAgIGNvbnN0IFVJbnQ4KiBpbkJ5
dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDggKj4oW3VzZXJUeXBlZERhdGEgYnl0ZXNdKTsK
KyAgICBpbnQgaW5MZW5ndGggPSBbdXNlclR5cGVkRGF0YSBsZW5ndGhdOworICAgIGlmICghaW5M
ZW5ndGgpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgY2hhciogb3V0Qnl0ZXMgPSBz
dGF0aWNfY2FzdDxjaGFyICo+KG1hbGxvYyhpbkxlbmd0aCAqIDMpKTsgLy8gbGFyZ2UgZW5vdWdo
IHRvICUtZXNjYXBlIGV2ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIqIHAgPSBvdXRCeXRlczsKKyAg
ICBpbnQgb3V0TGVuZ3RoID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGluTGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgVUludDggYyA9IGluQnl0ZXNbaV07CisgICAgICAgIGlmIChjIDw9IDB4
MjAgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICAqcCsrID0gJyUnOworICAgICAgICAgICAg
KnArKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgKnArKyA9
IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOworICAgICAgICAgICAgb3V0TGVuZ3RoICs9
IDM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAg
IG91dExlbmd0aCsrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXNOb0NvcHk6b3V0Qnl0ZXMgbGVuZ3RoOm91dExlbmd0aF07IC8vIGFkb3B0
cyBvdXRCeXRlcworfQorCitOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAq
c3RyaW5nLCBOU1VSTCAqbnNVUkwpCit7CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICBhdXRvIG1hcHBlZFN0cmluZyA9IG1hcEhvc3ROYW1lcyhzdHJpbmdCeVRy
aW1taW5nV2hpdGVzcGFjZShzdHJpbmcpLmdldCgpLCBZRVMpOworICAgIGlmICghbWFwcGVkU3Ry
aW5nKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgLy8gTGV0J3MgY2hlY2sgd2hldGhlciB0
aGUgVVJMIGlzIGJvZ3VzLgorICAgIFVSTCB1cmwgeyBVUkwgeyBuc1VSTCB9LCBtYXBwZWRTdHJp
bmcuZ2V0KCkgfTsKKyAgICBpZiAoIXVybC5jcmVhdGVDRlVSTCgpKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODYwNTcKKyAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgdXJsLmNyZWF0ZUNG
VVJMIGluc3RlYWQgb2YgdXNpbmcgZGlyZWN0bHkgQ0ZVUkwgcGFyc2luZyByb3V0aW5lcy4KKyAg
ICBOU0RhdGEgKmRhdGEgPSBkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhtYXBwZWRTdHJpbmcuZ2V0
KCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiIl07CisKKyAgICByZXR1cm4gVVJMV2l0aERhdGEoZGF0YSwgbnNVUkwpOworfQorCitOU1VS
TCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKnN0cmluZywgTlNV
UkwgKlVSTCkKK3sKKyAgICBpZiAoIXN0cmluZykKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IE5TVVJMICpyZXN1bHQgPSBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZywgVVJMKTsKKyAg
ICBpZiAoIXJlc3VsdCkgeworICAgICAgICBOU0RhdGEgKnJlc3VsdERhdGEgPSBkYXRhV2l0aFVz
ZXJUeXBlZFN0cmluZyhzdHJpbmcpOworICAgICAgICBpZiAoIXJlc3VsdERhdGEpCisgICAgICAg
ICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKKyAgICAgICAgcmVzdWx0ID0g
VVJMV2l0aERhdGEocmVzdWx0RGF0YSwgVVJMKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitzdGF0aWMgQk9PTCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoTlNVUkwg
KlVSTCkKK3sKKyAgICBDRlJhbmdlIHJhbmdlV2l0aFNlcGFyYXRvcnM7CisgICAgQ0ZVUkxHZXRC
eXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwga0NGVVJMQ29tcG9u
ZW50UXVlcnksICZyYW5nZVdpdGhTZXBhcmF0b3JzKTsKKyAgICBpZiAocmFuZ2VXaXRoU2VwYXJh
dG9ycy5sb2NhdGlvbiAhPSBrQ0ZOb3RGb3VuZCAmJiByYW5nZVdpdGhTZXBhcmF0b3JzLmxlbmd0
aCA9PSAxKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgcmV0dXJuIE5POworfQorCitOU0Rh
dGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlw
ZSBjb21wb25lbnRUeXBlKQoreworICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9M
RU5HVEg+IGFsbEJ5dGVzQnVmZmVyKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRklu
ZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBh
bGxCeXRlc0J1ZmZlci5kYXRhKCksIGFsbEJ5dGVzQnVmZmVyLnNpemUoKSk7CisgICAgaWYgKGJ5
dGVzRmlsbGVkID09IC0xKSB7CisgICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZV
UkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKKyAgICAgICAg
YWxsQnl0ZXNCdWZmZXIuZ3JvdyhieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBieXRlc0ZpbGxl
ZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYWxsQnl0ZXNCdWZmZXIu
ZGF0YSgpLCBieXRlc1RvQWxsb2NhdGUpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBDRlVSTENv
bXBvbmVudFR5cGUgY29tcGxldGVVUkwgPSAoQ0ZVUkxDb21wb25lbnRUeXBlKS0xOworICAgIENG
UmFuZ2UgcmFuZ2U7CisgICAgaWYgKGNvbXBvbmVudFR5cGUgIT0gY29tcGxldGVVUkwpIHsKKyAg
ICAgICAgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCBjb21wb25lbnRUeXBlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJhbmdlLmxv
Y2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9IGVs
c2UgeworICAgICAgICByYW5nZS5sb2NhdGlvbiA9IDA7CisgICAgICAgIHJhbmdlLmxlbmd0aCA9
IGJ5dGVzRmlsbGVkOworICAgIH0KKyAgICAKKyAgICBOU0RhdGEgKmNvbXBvbmVudERhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6YWxsQnl0ZXNCdWZmZXIuZGF0YSgpICsgcmFuZ2UubG9jYXRp
b24gbGVuZ3RoOnJhbmdlLmxlbmd0aF07IAorICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbY29tcG9uZW50RGF0
YSBieXRlc10pOworICAgIE5TTXV0YWJsZURhdGEgKnJlc3VsdERhdGEgPSBbTlNNdXRhYmxlRGF0
YSBkYXRhXTsKKyAgICAvLyBOT1RFOiBhZGQgbGVhZGluZyAnPycgdG8gcXVlcnkgc3RyaW5ncyBu
b24temVybyBsZW5ndGggcXVlcnkgc3RyaW5ncy4KKyAgICAvLyBOT1RFOiByZXRhaW4gcXVlc3Rp
b24tbWFyayBvbmx5IHF1ZXJ5IHN0cmluZ3MuCisgICAgaWYgKGNvbXBvbmVudFR5cGUgPT0ga0NG
VVJMQ29tcG9uZW50UXVlcnkpIHsKKyAgICAgICAgaWYgKHJhbmdlLmxlbmd0aCA+IDAgfHwgaGFz
UXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKFVSTCkpCisgICAgICAgICAgICBbcmVzdWx0RGF0
YSBhcHBlbmRCeXRlczoiPyIgbGVuZ3RoOjFdOyAgICAKKyAgICB9CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCByYW5nZS5sZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBi
eXRlc1tpXTsKKyAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKKyAgICAgICAg
ICAgIGNoYXIgZXNjYXBlZFszXTsKKyAgICAgICAgICAgIGVzY2FwZWRbMF0gPSAnJSc7CisgICAg
ICAgICAgICBlc2NhcGVkWzFdID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7CisgICAg
ICAgICAgICBlc2NhcGVkWzJdID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7CisgICAg
ICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczplc2NhcGVkIGxlbmd0aDozXTsgICAgCisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGFyIGJbMV07CisgICAgICAgICAgICBiWzBd
ID0gYzsKKyAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmIgbGVuZ3RoOjFdOyAg
ICAKKyAgICAgICAgfSAgICAgICAgICAgICAgIAorICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVz
dWx0RGF0YTsKK30KKworc3RhdGljIE5TVVJMICpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vi
c2VxdWVudENoYXJhY3RlcihOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50
KQoreworICAgIENGUmFuZ2UgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIDApOworICAgIGlmIChyYW5nZS5sb2Nh
dGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICAKKyAgICAvLyBS
ZW1vdmUgb25lIHN1YnNlcXVlbnQgY2hhcmFjdGVyLgorICAgIHJhbmdlLmxlbmd0aCsrOworCisg
ICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYnVmZmVyKFVSTF9CWVRF
U19CVUZGRVJfTEVOR1RIKTsKKyAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAg
ICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKKyAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOworICAgICAgICBidWZmZXIuZ3Jv
dyhudW1CeXRlcyk7CisgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVS
TCwgYnVmZmVyLmRhdGEoKSwgbnVtQnl0ZXMpOworICAgIH0KKyAgICBVSW50OCogdXJsQnl0ZXMg
PSBidWZmZXIuZGF0YSgpOworICAgICAgICAKKyAgICBpZiAobnVtQnl0ZXMgPCByYW5nZS5sb2Nh
dGlvbikKKyAgICAgICAgcmV0dXJuIFVSTDsKKyAgICBpZiAobnVtQnl0ZXMgPCByYW5nZS5sb2Nh
dGlvbiArIHJhbmdlLmxlbmd0aCkKKyAgICAgICAgcmFuZ2UubGVuZ3RoID0gbnVtQnl0ZXMgLSBy
YW5nZS5sb2NhdGlvbjsKKyAgICAgICAgCisgICAgbWVtbW92ZSh1cmxCeXRlcyArIHJhbmdlLmxv
Y2F0aW9uLCB1cmxCeXRlcyArIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoLCBudW1CeXRl
cyAtIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKTsKKyAgICAKKyAgICBDRlVSTFJlZiBy
ZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMg
LSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7CisgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIs
IHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09M
YXRpbjEsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIAorICAgIHJldHVybiByZXN1bHQgPyBD
RkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworfQorCitOU1VSTCAqVVJMQnlSZW1vdmlu
Z1VzZXJJbmZvKE5TVVJMICpVUkwpCit7CisgICAgcmV0dXJuIFVSTEJ5UmVtb3ZpbmdDb21wb25l
bnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKFVSTCwga0NGVVJMQ29tcG9uZW50VXNlckluZm8pOwor
fQorCitOU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqVVJMKQoreworICAgIFVJbnQ4ICpi
dWZmZXIgPSAoVUludDggKiltYWxsb2MoVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOworICAgIENG
SW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZilVUkws
IGJ1ZmZlciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOworICAgIGlmIChieXRlc0ZpbGxlZCA9
PSAtMSkgeworICAgICAgICBDRkluZGV4IGJ5dGVzVG9BbGxvY2F0ZSA9IENGVVJMR2V0Qnl0ZXMo
KF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7CisgICAgICAgIGJ1ZmZlciA9IChV
SW50OCAqKXJlYWxsb2MoYnVmZmVyLCBieXRlc1RvQWxsb2NhdGUpOworICAgICAgICBieXRlc0Zp
bGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYnVmZmVyLCBieXRl
c1RvQWxsb2NhdGUpOworICAgICAgICBBU1NFUlQoYnl0ZXNGaWxsZWQgPT0gYnl0ZXNUb0FsbG9j
YXRlKTsKKyAgICB9CisgICAgCisgICAgLy8gYnVmZmVyIGlzIGFkb3B0ZWQgYnkgdGhlIE5TRGF0
YQorICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpidWZmZXIg
bGVuZ3RoOmJ5dGVzRmlsbGVkIGZyZWVXaGVuRG9uZTpZRVNdOworICAgIAorICAgIE5TVVJMICpi
YXNlVVJMID0gKF9fYnJpZGdlIE5TVVJMICopQ0ZVUkxHZXRCYXNlVVJMKChfX2JyaWRnZSBDRlVS
TFJlZilVUkwpOworICAgIGlmIChiYXNlVVJMKQorICAgICAgICByZXR1cm4gb3JpZ2luYWxVUkxE
YXRhKFVSTFdpdGhEYXRhKGRhdGEsIGJhc2VVUkwpKTsKKyAgICByZXR1cm4gZGF0YTsKK30KKwor
c3RhdGljIENGU3RyaW5nUmVmIGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVy
cyhDRlN0cmluZ1JlZiBzdHJpbmcpCit7CisgICAgQ0ZJbmRleCBsZW5ndGggPSBDRlN0cmluZ0dl
dExlbmd0aChzdHJpbmcpOworICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5H
VEg+IHNvdXJjZUJ1ZmZlcihsZW5ndGgpOworICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVycyhzdHJp
bmcsIENGUmFuZ2VNYWtlKDAsIGxlbmd0aCksIHNvdXJjZUJ1ZmZlci5kYXRhKCkpOworICAgIAor
ICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEg+IG91dEJ1ZmZlcjsKKyAg
ICAKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50OworICAgIENG
SW5kZXggaSA9IDA7CisgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgVUNoYXIzMiBj
OworICAgICAgICBVMTZfTkVYVChzb3VyY2VCdWZmZXIsIGksIGxlbmd0aCwgYykKKyAgICAgICAg
CisgICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludCwgYykp
IHsKKyAgICAgICAgICAgIHVpbnQ4X3QgdXRmOEJ1ZmZlcls0XTsKKyAgICAgICAgICAgIENGSW5k
ZXggb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIFVCb29sIGZhaWx1cmUgPSBmYWxzZTsKKyAgICAg
ICAgICAgIFU4X0FQUEVORCh1dGY4QnVmZmVyLCBvZmZzZXQsIDQsIGMsIGZhaWx1cmUpCisgICAg
ICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3Ig
KENGSW5kZXggaiA9IDA7IGogPCBvZmZzZXQ7ICsraikgeworICAgICAgICAgICAgICAgIG91dEJ1
ZmZlci5hcHBlbmQoJyUnKTsKKyAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKHVwcGVy
TmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZmZXJbal0pKTsKKyAgICAgICAgICAgICAgICBv
dXRCdWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZmZXJbal0p
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFVDaGFyIHV0
ZjE2QnVmZmVyWzJdOworICAgICAgICAgICAgQ0ZJbmRleCBvZmZzZXQgPSAwOworICAgICAgICAg
ICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOworICAgICAgICAgICAgVTE2X0FQUEVORCh1dGYxNkJ1
ZmZlciwgb2Zmc2V0LCAyLCBjLCBmYWlsdXJlKQorICAgICAgICAgICAgQVNTRVJUKCFmYWlsdXJl
KTsKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8IG9mZnNldDsgKytqKQorICAg
ICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXRmMTZCdWZmZXJbal0pOworICAgICAgICB9
CisgICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgb3V0QnVmZmVyLmRhdGEoKSwg
b3V0QnVmZmVyLnNpemUoKSk7Cit9CisKK05TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VS
TCAqVVJMKQoreworICAgIE5TRGF0YSAqZGF0YSA9IG9yaWdpbmFsVVJMRGF0YShVUkwpOworICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJlZm9yZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihbZGF0YSBieXRlc10pOworICAgIGludCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOwor
ICAgIAorICAgIGJvb2wgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSBmYWxzZTsKKyAgICAKKyAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gYmVmb3JlOworICAgIGludCBidWZmZXJMZW5ndGgg
PSAobGVuZ3RoICogMykgKyAxOworICAgIFZlY3RvcjxjaGFyLCBVUkxfQllURVNfQlVGRkVSX0xF
TkdUSD4gYWZ0ZXIoYnVmZmVyTGVuZ3RoKTsgLy8gbGFyZ2UgZW5vdWdoIHRvICUtZXNjYXBlIGV2
ZXJ5IGNoYXJhY3RlcgorICAgIGNoYXIgKnEgPSBhZnRlci5kYXRhKCk7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBwW2ld
OworICAgICAgICAvLyB1bmVzY2FwZSBlc2NhcGUgc2VxdWVuY2VzIHRoYXQgaW5kaWNhdGUgYnl0
ZXMgZ3JlYXRlciB0aGFuIDB4N2YKKyAgICAgICAgaWYgKGMgPT0gJyUnICYmIChpICsgMSA8IGxl
bmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAmJiBpICsgMiA8IGxlbmd0aCAmJiBp
c0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7CisgICAgICAgICAgICBhdXRvIHUgPSB0b0FTQ0lJ
SGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKKyAgICAgICAgICAgIGlmICh1ID4gMHg3Zikg
eworICAgICAgICAgICAgICAgIC8vIHVuZXNjYXBlCisgICAgICAgICAgICAgICAgKnErKyA9IHU7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGRvIG5vdCB1bmVzY2Fw
ZQorICAgICAgICAgICAgICAgICpxKysgPSBwW2ldOworICAgICAgICAgICAgICAgICpxKysgPSBw
W2kgKyAxXTsKKyAgICAgICAgICAgICAgICAqcSsrID0gcFtpICsgMl07CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcSsr
ID0gYzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBh
biBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgorICAgICAgICAgICAgaWYgKGMg
PT0gJy0nICYmIGkgPj0gMyAmJiAhbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgJiYgKHFbLTRdIHwg
MHgyMCkgPT0gJ3gnICYmIChxWy0zXSB8IDB4MjApID09ICduJyAmJiBxWy0yXSA9PSAnLScpCisg
ICAgICAgICAgICAgICAgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSB0cnVlOworICAgICAgICB9
CisgICAgfQorICAgICpxID0gJ1wwJzsKKyAgICAKKyAgICAvLyBDaGVjayBzdHJpbmcgdG8gc2Vl
IGlmIGl0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gZGlzcGxheSB1c2luZyBVVEYtOCAgCisgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiByZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6
YWZ0ZXIuZGF0YSgpXTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAvLyBDb3VsZCBub3Qg
Y29udmVydCB0byBVVEYtOC4KKyAgICAgICAgLy8gQ29udmVydCBjaGFyYWN0ZXJzIGdyZWF0ZXIg
dGhhbiAweDdmIHRvIGVzY2FwZSBzZXF1ZW5jZXMuCisgICAgICAgIC8vIFNoaWZ0IGN1cnJlbnQg
c3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgorICAgICAgICAvLyB0aGVuIHdlIHdpbGwg
Y29weSBiYWNrIGJ5dGVzIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIAorICAgICAgICAvLyBh
cyB3ZSBjb252ZXJ0LgorICAgICAgICBpbnQgYWZ0ZXJsZW5ndGggPSBxIC0gYWZ0ZXIuZGF0YSgp
OworICAgICAgICBjaGFyICpwID0gYWZ0ZXIuZGF0YSgpICsgYnVmZmVyTGVuZ3RoIC0gYWZ0ZXJs
ZW5ndGggLSAxOworICAgICAgICBtZW1tb3ZlKHAsIGFmdGVyLmRhdGEoKSwgYWZ0ZXJsZW5ndGgg
KyAxKTsgLy8gY29waWVzIHRyYWlsaW5nICdcMCcKKyAgICAgICAgY2hhciAqcSA9IGFmdGVyLmRh
dGEoKTsKKyAgICAgICAgd2hpbGUgKCpwKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMg
PSAqcDsKKyAgICAgICAgICAgIGlmIChjID4gMHg3ZikgeworICAgICAgICAgICAgICAgICpxKysg
PSAnJSc7CisgICAgICAgICAgICAgICAgKnErKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0
KGMpOworICAgICAgICAgICAgICAgICpxKysgPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChj
KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICpxKysgPSAqcDsKKyAgICAg
ICAgICAgIHArKzsKKyAgICAgICAgfQorICAgICAgICAqcSA9ICdcMCc7CisgICAgICAgIHJlc3Vs
dCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOworICAgIH0K
KyAgICAKKyAgICBpZiAobWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcpIHsKKyAgICAgICAgLy8gRklY
TUU6IElzIGl0IGdvb2QgdG8gaWdub3JlIHRoZSBmYWlsdXJlIG9mIG1hcEhvc3ROYW1lcyBhbmQg
a2VlcCByZXN1bHQgaW50YWN0PworICAgICAgICBhdXRvIG1hcHBlZFJlc3VsdCA9IG1hcEhvc3RO
YW1lcyhyZXN1bHQuZ2V0KCksIE5PKTsKKyAgICAgICAgaWYgKG1hcHBlZFJlc3VsdCkKKyAgICAg
ICAgICAgIHJlc3VsdCA9IG1hcHBlZFJlc3VsdDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBbcmVz
dWx0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOworICAgIHJldHVybiBD
RkJyaWRnaW5nUmVsZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMo
KF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSkpOworfQorCitCT09MIGlzVXNlclZp
c2libGVVUkwoTlNTdHJpbmcgKnN0cmluZykKK3sKKyAgICBCT09MIHZhbGlkID0gWUVTOworICAg
IC8vIGdldCBidWZmZXIKKyAgICAKKyAgICBjaGFyIHN0YXRpY19idWZmZXJbMTAyNF07CisgICAg
Y29uc3QgY2hhciAqcDsKKyAgICBCT09MIHN1Y2Nlc3MgPSBDRlN0cmluZ0dldENTdHJpbmcoKF9f
YnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZywgc3RhdGljX2J1ZmZlciwgMTAyMywga0NGU3RyaW5n
RW5jb2RpbmdVVEY4KTsKKyAgICBwID0gc3VjY2VzcyA/IHN0YXRpY19idWZmZXIgOiBbc3RyaW5n
IFVURjhTdHJpbmddOworICAgIAorICAgIGludCBsZW5ndGggPSBzdHJsZW4ocCk7CisgICAgCisg
ICAgLy8gY2hlY2sgZm9yIGNoYXJhY3RlcnMgPD0gMHgyMCBvciA+PTB4N2YsICUtZXNjYXBlIHNl
cXVlbmNlcyBvZiAlN2YsIGFuZCB4bi0tLCB0aGVzZQorICAgIC8vIGFyZSB0aGUgdGhpbmdzIHRo
YXQgd2lsbCBsZWFkIF93ZWJfdXNlclZpc2libGVTdHJpbmcgdG8gYWN0dWFsbHkgY2hhbmdlIHRo
aW5ncy4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIHVu
c2lnbmVkIGNoYXIgYyA9IHBbaV07CisgICAgICAgIC8vIGVzY2FwZSBjb250cm9sIGNoYXJhY3Rl
cnMsIHNwYWNlLCBhbmQgZGVsZXRlCisgICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA9PSAweDdm
KSB7CisgICAgICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0gZWxzZSBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdp
dChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAy
XSkpIHsKKyAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhWYWx1ZShwW2kgKyAxXSwgcFtp
ICsgMl0pOworICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7CisgICAgICAgICAgICAgICAgdmFs
aWQgPSBOTzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGkgKz0gMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciAi
eG4tLSIgaW4gYW4gZWZmaWNpZW50LCBub24tY2FzZS1zZW5zaXRpdmUsIHdheS4KKyAgICAgICAg
ICAgIGlmIChjID09ICctJyAmJiBpID49IDMgJiYgKHBbaSAtIDNdIHwgMHgyMCkgPT0gJ3gnICYm
IChwW2kgLSAyXSB8IDB4MjApID09ICduJyAmJiBwW2kgLSAxXSA9PSAnLScpIHsKKyAgICAgICAg
ICAgICAgICB2YWxpZCA9IE5POworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB2YWxpZDsKK30KKworTlNSYW5n
ZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAgTlNSYW5nZSBjb2xv
biA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjoiXTsKKyAgICBpZiAoY29sb24ubG9jYXRpb24g
IT0gTlNOb3RGb3VuZCAmJiBjb2xvbi5sb2NhdGlvbiA+IDApIHsKKyAgICAgICAgTlNSYW5nZSBz
Y2hlbWUgPSB7MCwgY29sb24ubG9jYXRpb259OworICAgICAgICAvKgorICAgICAgICAgVGhpcyBz
dHVmZiBpcyB2ZXJ5IGV4cGVuc2l2ZS4gIDEwLTE1IG1zZWMgb24gYSAyeDEuMkdIei4gIElmIG5v
dCBjYWNoZWQgaXQgc3dhbXBzCisgICAgICAgICBldmVyeXRoaW5nIGVsc2Ugd2hlbiBhZGRpbmcg
aXRlbXMgdG8gdGhlIGF1dG9jb21wbGV0ZSBEQi4gIE1ha2VzIG1lIHdvbmRlciBpZiB3ZQorICAg
ICAgICAgZXZlbiBuZWVkIHRvIGVuZm9yY2UgdGhlIGNoYXJhY3RlciBzZXQgaGVyZS4KKyAgICAg
ICAgICovCisgICAgICAgIE5TU3RyaW5nICphY2NlcHRhYmxlQ2hhcmFjdGVycyA9IEAiQUJDREVG
R0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkr
Li0iOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVy
U2V0Pj4gSW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldChbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3Rl
clNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGludmVydGVk
U2V0XSk7CisgICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBbc3RyaW5nIHJhbmdlT2ZDaGFyYWN0
ZXJGcm9tU2V0OkludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQuZ2V0KCkuZ2V0KCkgb3B0aW9uczow
IHJhbmdlOnNjaGVtZV07CisgICAgICAgIGlmIChpbGxlZ2Fscy5sb2NhdGlvbiA9PSBOU05vdEZv
dW5kKQorICAgICAgICAgICAgcmV0dXJuIHNjaGVtZTsKKyAgICB9CisgICAgcmV0dXJuIE5TTWFr
ZVJhbmdlKE5TTm90Rm91bmQsIDApOworfQorCitCT09MIGxvb2tzTGlrZUFic29sdXRlVVJMKE5T
U3RyaW5nICpzdHJpbmcpCit7CisgICAgLy8gVHJpbSB3aGl0ZXNwYWNlIGJlY2F1c2UgX3dlYl9V
UkxXaXRoU3RyaW5nIGFsbG93cyB3aGl0ZXNwYWNlLgorICAgIHJldHVybiByYW5nZU9mVVJMU2No
ZW1lKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0KCkpLmxvY2F0aW9uICE9
IE5TTm90Rm91bmQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvVVJM
Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE2MWMzYWM3Y2U3MWFkMzQwMDJiOGFmYmZlNDQ4NDJlZjY4
ODc1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1t
CkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0IDx3dGYvVVJMLmg+CisK
KyNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCisjaW1wb3J0ICJOU1VSTEV4dHJhcy5oIgorI2ltcG9y
dCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvVVJMUGFyc2VyLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK0BpbnRlcmZhY2UgTlNTdHJpbmcgKFdURk5T
VVJMRXh0cmFzKQorLSAoQk9PTClfd2ViX2xvb2tzTGlrZUlQQWRkcmVzczsKK0BlbmQKKworbmFt
ZXNwYWNlIFdURiB7CisKK1VSTDo6VVJMKE5TVVJMICp1cmwpCit7CisgICAgaWYgKCF1cmwpIHsK
KyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
RklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KKyAgICBDU3RyaW5n
IHVybEJ5dGVzOworICAgIFdURjo6Z2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXVybCwg
dXJsQnl0ZXMpOworICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMuZGF0YSgpKTsKKyAgICAq
dGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKK30KKworVVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29u
c3QKK3sKKyAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlkZ2VkIENGVVJMIGJlY2F1c2Ug
Y3JlYXRpb24gd2l0aCBOU1VSTCBtZXRob2RzIHdvdWxkIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2lu
YWwgc3RyaW5nLgorICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxpdHkgd2hlbiByb3VuZC10cmlwcGlu
ZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgorICAgIHJldHVybiBjcmVhdGVDRlVSTCgpLmJyaWRnaW5n
QXV0b3JlbGVhc2UoKTsKK30KKworUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJM
KCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBi
cmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9y
dGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KKyAgICAgICAgcmV0dXJuIChfX2JyaWRn
ZSBDRlVSTFJlZilhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl0pLmdl
dCgpOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7CisKKyAgICAvLyBG
YXN0IHBhdGggaWYgdGhlIGlucHV0IGRhdGEgaXMgOC1iaXQgdG8gYXZvaWQgY29weWluZyBpbnRv
IGEgdGVtcG9yYXJ5IGJ1ZmZlci4KKyAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpKSkK
KyAgICAgICAgY2ZVUkwgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVuZ3Ro
KCkpOworICAgIGVsc2UgeworICAgICAgICAvLyBTbG93ZXIgcGF0aC4KKyAgICAgICAgV1RGOjpV
UkxDaGFyQnVmZmVyIGJ1ZmZlcjsKKyAgICAgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7CisgICAg
ICAgIGNmVVJMID0gV1RGOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CisgICAgfQorCisgICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAm
JiAhV1RGOjppc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjZlVSTDsKK30KKworYm9vbCBVUkw6Omhvc3RJ
c0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCit7CisgICAgcmV0dXJuIFtob3N0LmNyZWF0ZU5T
U3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSBfd2ViX2xvb2tzTGlrZUlQQWRkcmVzc107Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaCBi
L1NvdXJjZS9XVEYvd3RmL2dsaWIvR1VuaXF1ZVB0clNvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjRmYjM0
Zjg2ZjI0YTQ2MjFlMGY5MDY3MDY3NzVmOTQ4MTg1OTk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIFVTRShTT1VQKQorCisjaW5jbHVk
ZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cFVSSSwgc291cF91
cmlfZnJlZSkKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBDb29raWUsIHNvdXBfY29va2ll
X2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwTWVzc2FnZUhlYWRlcnMsIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQnVmZmVy
LCBzb3VwX2J1ZmZlcl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVT
RShTT1VQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9VUkxTb3VwLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL2dsaWIvVVJMU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkYmM3ZTE3YjgzODkx
OWM1MGNmZmZiZDZiNDVjZjhjYjNiODlhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL2dsaWIvVVJMU291cC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoU09VUCkKKworI2luY2x1ZGUg
PGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
UGFyc2VyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworVVJMOjpVUkwoU291cFVSSSogc291cFVSSSkKK3sKKyAgICBpZiAoIXNvdXBVUkkpIHsK
KyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxT
RSkpOworICAgIFVSTFBhcnNlciBwYXJzZXIoU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0
KCkpKTsKKyAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKKworICAgIGlmICghaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNb3RpdmF0ZWQgYnkgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTU2LiBsaWJzb3VwCisgICAgLy8gZG9lcyBub3Qg
YWRkIHRoZSBwYXNzd29yZCB0byB0aGUgVVJMIHdoZW4gY2FsbGluZworICAgIC8vIHNvdXBfdXJp
X3RvX3N0cmluZywgYW5kIHRodXMgdGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkKKyAgICAv
LyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWlu
dGFpbmVyIGRvZXMKKyAgICAvLyBub3Qgd2FudCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGgg
cHJldmlvdXMgaW1wbGVtZW50YXRpb25zCisgICAgaWYgKHNvdXBVUkktPnBhc3N3b3JkKQorICAg
ICAgICBzZXRQYXNzKFN0cmluZzo6ZnJvbVVURjgoc291cFVSSS0+cGFzc3dvcmQpKTsKK30KKwor
R1VuaXF1ZVB0cjxTb3VwVVJJPiBVUkw6OmNyZWF0ZVNvdXBVUkkoKSBjb25zdAoreworICAgIGlm
ICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBHVW5p
cXVlUHRyPFNvdXBVUkk+KHNvdXBfdXJpX25ldyhzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Cit9
CisKK2Jvb2wgVVJMOjpob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyBob3N0KQoreworICAgIHJl
dHVybiAhaG9zdC5pc0VtcHR5KCkgJiYgZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGhvc3QudXRm
OCgpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCmluZGV4IGQw
YjkwMzhmODI2NDdiZTBhMTVmNWNlYTRmODAxOTYxZjY3MmYyOWIuLjdlYzM5ODJlMTEwYjdhZjcz
MTQ5YWU5YWVjNTUxYjBkMDM2YjE0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaApAQCAtNDgsNyArNDgsNiBAQCBjbGFzcyBQYXlt
ZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0b3I7CiBj
bGFzcyBQYXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czsKIHN0cnVjdCBBcHBsZVBheUxpbmVJdGVtOwogc3RydWN0IEFwcGxlUGF5
UGF5bWVudFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmgKaW5kZXggYjA3NTlj
ZGExOGMwM2M3M2RiMGJkMWRjZjg0NTMxYjI0YjUyZDA5ZC4uM2FhMjJmNWI4MmQ2YzJjMTgwZWNl
ODE0NTg1ZDg1MTA4OTRiMWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaApAQCAt
MjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbmNsdWRlICJFdmVudC5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggYmQ1NTM0YzJkZjkxMjU4N2RkMjc3ODkyMjk4YmQ3
ZDQxZTdhOWFmYy4uZTM3MzM1N2NjMDdmZWE1OWRlOTdlYzU1ZDVjODg5M2QwNjM4NjRkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzLmgiCiAjaW5jbHVkZSAiUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5j
bHVkZSAiUGF5bWVudFNlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggYTZmMWI2ZTdiMjFl
MGVjMDA0YTRiMGFhNzI5NDA5YjgzYTdhMzRmZi4uNWJmNzFkYWEyNjM2OGZjODM0YjE1NDAyMmM5
Y2MxNzY5YTE0YmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5oCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIFBheW1lbnRD
b250YWN0OwogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKIGNsYXNzIFBheW1lbnRNZXRo
b2Q7CiBjbGFzcyBQYXltZW50U2Vzc2lvbjsKLWNsYXNzIFVSTDsKIGVudW0gY2xhc3MgUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXM7CiBzdHJ1Y3QgUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ7
CiBzdHJ1Y3QgUGF5bWVudE1ldGhvZFVwZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmluZGV4IDgw
MTk4ZjI0NzFiMzQ4ZTcwYTExMTYwN2EzNTFhMzIwNzAwNzMyYjAuLjg1ZTRlNGIwNDQ2ODg5MGY0
ZWMzYzgwNGQ1YTI0NzM4ZTgxNDQ0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaApAQCAtMzgsNyAr
MzgsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNz
aW9uOwotY2xhc3MgVVJMOwogc3RydWN0IFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Owogc3Ry
dWN0IFBheW1lbnRNZXRob2RVcGRhdGU7CiBzdHJ1Y3QgU2hpcHBpbmdDb250YWN0VXBkYXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5oCmlu
ZGV4IDBhMzUwN2UyNjBlNzQ2N2UwYWMwZDMxYzk0OTM3NTRhMzNmZjJhNjQuLjhmN2E0YjY1MGYw
YjkyZjgxNWY5YjVkNWNjZTE3OWE3ZDUyOTEwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmgKQEAgLTM3LDcgKzM3LDYgQEAgY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBQYXltZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQ
YXltZW50TWV0aG9kOwotY2xhc3MgVVJMOwogCiBjbGFzcyBQYXltZW50U2Vzc2lvbiA6IHB1Ymxp
YyB2aXJ0dWFsIFBheW1lbnRTZXNzaW9uQmFzZSB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVz
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0
aW9uTWFuaWZlc3QuaAppbmRleCBmYTRlZTYzN2E3OWU1NGIzMTY2MWM0YjUwZDE4NzNiN2ZlOTk3
MGMzLi5iMmYxYjQ5ZjNlYjNhM2VlODBhNGZiMzI5ZjY5ZThiZjhlNTFhOThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25N
YW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVz
dC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTI3LDggKzI3LDkgQEAKIAogI2lmIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9F
bnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCmluZGV4IGU2ODk2ZTc4NzhiMmMyYjEwZjY2
MTNjZGI5ODVkMGI2ZTI1OGQ5NGEuLjQ4OTc2ZDJhMzUyZTIwZGU0MTRhNmJmOThlNTY2ZWU0NzA0
NzVlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRv
ckJlYWNvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9y
QmVhY29uLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBkMmFhN2EyZWU3ZjZmYmRh
MTljOGFmYjhlOTU0ZWFkNTFhYmY2YmYyLi44NzMxMGE2YjY4Njc3Y2Q5NjY3ZGE5OTEzNzVjM2Yx
ZWNmNjFiNGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApA
QCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUg
IlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApp
bmRleCA2N2RlMmU1NDYyYmYzZGM2YWI4MGMyNGEzMThjNDA1NGZjZjkyY2E1Li40MDExYjM3Mzhj
OTc5YmI5NzhhZGZkY2ZjYmE4NTRjYWU4YzVkZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiRmV0Y2hC
b2R5Q29uc3VtZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uTWV0YWRhdGEuaAppbmRl
eCBlMzY0NGE4NzUxOTU5N2Y2NGU1M2YzY2NkYWM3NDQwMzk3NjAwMjNkLi42ZjNkZmUzNmYwNTM4
OTkxNDdjNGVhZGVmY2UwMmQ0MzJmOTk5M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25NZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbk1ldGFkYXRhLmgKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
UmVnaXN0cnkuY3BwCmluZGV4IDJlODJjMzI2MTg2NWQ3YTk4ODhhNWMyYzZiODU3NTRiNDJjYmE0
NTkuLjk4YzY2M2I2ZmM2ZGJkYTI5MzZhN2RhMjY4OTZkZjAwMzIzM2JkYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJl
Z2lzdHJ5LmNwcApAQCAtMzUsOSArMzUsOSBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAK
ICNpbmNsdWRlICJNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKaW5k
ZXggMmI4OTRlMGNhNDNiZTQxYjViMTBmNGQxOTg5MTM0MzQ4NzkyODMwNi4uMDMzNjc0ZjI2ZDM0
NTg1OWE0YWExY2RhMTIwZTZkODg0MTU0NmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKQEAgLTM4LDcg
KzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBNZWRp
YVNvdXJjZTsKIAogY2xhc3MgTWVkaWFTb3VyY2VSZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBVUkxS
ZWdpc3RyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwCmluZGV4IDdlMjIxNTAyNDA4ZmJjNDkxZTg3MDY2OTc2ODY3OWViZTAwNDM0
NjIuLjhhYzE0NTc5NTBhNzkxODlkM2FjZDJkMDcwNTY2YTIxODdiY2ZhZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC00
MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlVSTC5o
IgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJl
Z2lzdHJ5LmNwcAppbmRleCBkNjlkY2NmODZlMzhhYTNmNzNjY2E3MTlkZjFiOWViZmZiMmMyMDA4
Li42NDE1ZmZhYmE1YzlhODQ4MTM0ZTUyMjMzNGRkM2E2MDFlYzJiZjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdp
c3RyeS5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCmluZGV4
IGEyNjdmMTEwMGJlMTdjMmEwYjI5YTIyMWUzYjE2OWM5Nzc0YWEyMmQuLmY2ZDIzZDJkNzkwZjBk
NGYyNzUxMDViYjQwNmIxOWUzY2UwZTQ5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCkBAIC0zNiw3ICsz
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW07CiBjbGFzcyBN
ZWRpYVN0cmVhbVByaXZhdGU7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIE1lZGlhU3RyZWFtUmVnaXN0
cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVu
dFV0aWxzQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1
dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAppbmRleCBiNjJkOWFmYThlYWU1YjRm
NmZlMzRiNGM1OGNkYjRmZGNjZDY1YTA2Li40NzA2NzNhMDllOTVmMDMwZjVlZWFjNDIzOTg2OTZm
YTEwNDNlMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNv
bnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHND
bGllbnQuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKE5BVklHQVRPUl9DT05URU5U
X1VUSUxTKQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5k
ZXggZmYwZGM1NGRhZjFlNTAyMzhhZmEzNWYxMzI4OWU1YjgzZTJiMmI5Yy4uZmVkYTFhMTNhZWQy
MWM0NGJhZDMzODk2MjlhNzI1M2Y5MmIxYzllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMzgsNyArMzgsNyBAQAog
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blBlcm1pc3Npb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L01lcmNoYW50VmFsaWRhdGlvbkV2ZW50LmgKaW5kZXggOWY2ZDA2NmY1YmUw
YmQ3YjY1OWEwM2I5Mzg3MzBmMTcwODhiZjM3Ni4uMjlmZmZiZjIwYjI4NWY4ZjVlMGU2MTlkMDg3
MWRkNjQ5NTI2NWQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuaApAQCAtMjgsNyAr
MjgsNyBAQAogI2lmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKICNpbmNsdWRlICJFdmVudC5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXF1ZXN0LmgKaW5kZXggOWUyMTVlNWMyZGFiZTk3YjQ1Yzg1OTg4ODIwZTVm
MGQzMGJkMWE4Ni4uN2VhZTEzN2FkMjQ1ODI4YjdkZDk4ODA0NjUyYTVkMDkxNWJjNDY2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlcXVlc3QuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRNZXRob2RDaGFu
Z2VFdmVudC5oIgogI2luY2x1ZGUgIlBheW1lbnRPcHRpb25zLmgiCiAjaW5jbHVkZSAiUGF5bWVu
dFJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKaW5kZXggNmI1
NTQyZTA4OTAwN2Q5YTQ5NzA0ZjJmYjNjZjQzOThhMGZiNGUwYy4uZWZlYWYwMGM5ZTM1OGVkNjgx
NTViNThhMTFhZDQ3MjU1NjFlMDI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgUmVu
ZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJUcmVlUG9zaXRpb247CiBjbGFzcyBTZXR0aW5nczsKIGNs
YXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIFBsdWdpblJlcGxhY2VtZW50IDog
cHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luUmVwbGFjZW1lbnQ+IHsKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDc2MGE0ZTcx
MTRmNzQ3NTgyMjNhZGQxZmIwZjg1NmQ2ZTg1ZDMwY2UuLjRlZjBiNGRkZTAxNzU0ZmQ3YmQ2ODky
MmE0NTVkOTM2N2VjYjg2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaApAQCAtNzEsNyArNzEsNiBAQCBjbGFzcyBPc2NpbGxhdG9yTm9kZTsK
IGNsYXNzIFBhbm5lck5vZGU7CiBjbGFzcyBQZXJpb2RpY1dhdmU7CiBjbGFzcyBTY3JpcHRQcm9j
ZXNzb3JOb2RlOwotY2xhc3MgVVJMOwogY2xhc3MgV2F2ZVNoYXBlck5vZGU7CiAKIC8vIEF1ZGlv
Q29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBB
dWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
CmluZGV4IGNhNDA2YWY0YzZmNTIyNTFmOWY2Y2NhOGM0NWQ0NDNhYmI4ZDk4NTcuLmE4NWRmZDc3
NDRjZDQ3OWFiMTIzZDMzMjcxMWVlOGYyM2QxMDFkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCkBAIC00MCw3ICs0MCw2IEBAIGNsYXNzIEFycmF5QnVmZmVyOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBCbG9iOwotY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENs
aWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApp
bmRleCA5MDEyMWY3MGQzMDg4MGMyYTAyZjk2NTgwYWUwNTcyOGZiOGJkZGM4Li41MDQzYzQ5NDIz
NWQwNzA4NTUwNmFhYmRjZTNiYzRkMGI4NGJiYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldl
YlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA3NDI3YmI1NTcwNzVlZGE4OGZi
ZDY2MTIxZTdkOTBhM2YxOWNkZDM0Li4xYjE5ZWRhYjRjOWE2ZjM4MTJmNzEzMGI3NmE2Yjk1Mzdj
NWM3NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNDQsNyArNDQsNyBAQAogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlw
ZS5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oCmluZGV4IGNmMmJkN2FjMGFmMWIyNzRkOTgzYmQ2YmZjZjI0ZTM4MWQxMjIzZTcuLmU5
NmY4NjAyYTg3YTkzNTI2OTY5Njc2NWM4MGU3MzAyY2Y3MzdlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAg
LTMxLDcgKzMxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29va2llUmVxdWVzdEhl
YWRlckZpZWxkUHJveHkuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlNvY2tldEV4dGVu
c2lvbkRpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3Iu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggODEyZjhhMDJk
MzBhMTY4M2NlOTQ2ODRmODcxMDIwZTZiYmI5OWQxOC4uMzg5NWU0NDk2NzUwN2M1ZWU5OWNjMjJm
NDNlNzIxZjI5MTM3NWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmgKQEAgLTM5LDcgKzM5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IDViMDM5ODc4ZjZhYjkxMGNmNmE4NjM1MDY5ZWZiMGJiNGQ3
Yzg5YjIuLjcxNzQ2ZjA2ZDY1MGE5NDg3YTQ1NDE3OTlhOGJjZjIwMTEyYjM5NjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0xODcsNyArMTg3LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAogICAgIHBs
YXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLm1tCiAKLSAgICBwbGF0Zm9y
bS9jZi9DRlVSTEV4dHJhcy5jcHAKICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAg
ICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwCkBAIC0xOTUsNyArMTk0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCiAgICAg
cGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgcGxhdGZvcm0vY29j
b2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2Nv
YS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKQEAgLTM5Nyw3ICszOTUsNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0KICAg
ICBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2su
bW0KLSAgICBwbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL1VzZXJBY3Rp
dml0eU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9WYWxpZGF0aW9uQnViYmxlTWFjLm1tCiAgICAg
cGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtV2luLmNtYWtlCmluZGV4IDE5MzBlYmMzOWFmZjQ2ZWU5ZGI4MjFmNDU5ZmMzZWNlMDE4
ZTRiZjcuLjcwMDQ2ODIxZGE4MWI3OWVmNWY4NTEwZTlkMDFiMzFmNzY3NTIxYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNDksMTIgKzI0OSwxMCBAQCBpZiAoVVNFX0NGKQogICAg
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBsb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcAogCi0gICAgICAgIHBsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNw
cAogICAgICAgICBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2NmL0tleWVkRGVjb2RlckNGLmNwcAogICAgICAgICBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAKICAgICAgICAgcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCi0gICAgICAgIHBs
YXRmb3JtL2NmL1VSTENGLmNwcAogCiAgICAgICAgIHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0
ZUNGV2luLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGNmZTQ2ODc4MjJhYmMzMjMwOTkwNGJhMTAz
NDNjOGZhNTA5ZDFmMzIuLmU3NDVjZDVhMDA5ZjA1NTA0ZDhjYjI1NTJhMTVlZjliOTU3ZTAyNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xNTg0LDggKzE1ODQsNiBAQCBwbGF0Zm9ybS9UaGVtZS5jcHAK
IHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCiBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3Bw
CiBwbGF0Zm9ybS9UaW1lci5jcHAKLXBsYXRmb3JtL1VSTC5jcHAKLXBsYXRmb3JtL1VSTFBhcnNl
ci5jcHAKIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAKIHBsYXRmb3JtL1dlYkNvcmVDcm9zc1Ro
cmVhZENvcGllci5jcHAKIHBsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggM2EzMThlYWJjZGZmOThmOWM3NjU4OGZiY2YyNmUyOWViZWFjNzAz
Yi4uNTJiYjJmYzJkN2E4ZTg3ZDQxZjljZTE2MDFlZDgxNTc0NjIwMjljZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC0xODAsNyArMTgwLDYgQEAgcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2Vzc2lvbk1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuY3BwCiBwbGF0
Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCiAKLXBsYXRmb3JtL2NmL0NGVVJMRXh0cmFz
LmNwcAogcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAogcGxhdGZvcm0vY2YvS2V5ZWREZWNv
ZGVyQ0YuY3BwCiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTE4OCw3ICsxODcs
NiBAQCBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKIHBsYXRmb3JtL2Nm
L01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcAogcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2Vy
dmVyLmNwcAogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCi1wbGF0Zm9ybS9jZi9VUkxD
Ri5jcHAKIAogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2Eu
bW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKQEAgLTQ2
Nyw3ICs0NjUsNiBAQCBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCiBwbGF0Zm9ybS9t
YWMvU3VkZGVuVGVybWluYXRpb24ubW0KIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQogcGxhdGZv
cm0vbWFjL1RocmVhZENoZWNrLm1tIEBuby11bmlmeQotcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQog
cGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQogcGxhdGZvcm0vbWFjL1VzZXJBZ2VudE1h
Yy5tbQogcGxhdGZvcm0vbWFjL1ZhbGlkYXRpb25CdWJibGVNYWMubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZTMyN2IzMDcy
ZTJhZWU3NzdhNTAzMjg2ZDAwODAxMzA3ZjM2MzE5Li45ZjRjNzQ3N2NiN2U2ZjM5YjFjODA0YzJm
N2Q1NTJmNTU5Mzg0MTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODkzLDcgKzE4OTMsNiBAQAogCQk1QzQzMDRCMDE5MUFD
OTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRDE5MUFDOTA4MDAwRTJCQzAgLyog
RVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgKi87IH07CiAJCTVDNDMwNEIxMTkxQUM5MDgwMDBFMkJD
MCAvKiBFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRBRTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4
dHVyZUxPRC5oICovOyB9OwogCQk1QzQzMDRCNjE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFk
ZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzQzMDRCNDE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmgg
Ki87IH07Ci0JCTVDNkU2NTQzMUQ1Q0VGQkYwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNkU2NTQwMUQ1Q0VEQzkw
MEY3ODYyRSAvKiBVUkxQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4
OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQTFERUM2MUY3MUYxQzcwMEU3MUJE
MyAvKiBIVFRQSGVhZGVyRmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQTFERUM0MUY3MUU2ODcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0Iz
N0ZGRjFDNjJEMkExMDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzN0ZGRDFDNjJEMjc4MDBGMjAx
ODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggKi87IH07CkBAIC0xOTY4LDcgKzE5NjcsNiBAQAog
CQk2NTZEMzc0ODBBREJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkQzNzMwMEFEQkE1REUw
MEE0NTU0RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1N0FGQUZDMjAwNDdBMjkwMDUwOTQ2NCAvKiBTcGVj
dHJlR2FkZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NTdBRkFGODIwMDQ3ODk5MDA1MDk0NjQgLyogU3BlY3RyZUdhZGdldC5oICovOyB9OwogCQk2
NTg0MzY4NjBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4NDM2ODUwQUUwMUI3NDAwRTUz
NzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkzOTIzNjA5QUU0
MzQ2MDAyQzUzMUYgLyogVVJMLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNjU5QTdEMTMwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTlBN0Qx
MjBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTlEREM4MzA5RTE5OEJBMDAxQkYzQzYg
LyogSlNEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU5RERDODEwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUEyMTQ2ODA5N0EzMjkx
MDBCOTA1MEEgLyogUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjVBMjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzg1OSw3ICszODU3LDYgQEAK
IAkJQkNCQjhBQjkxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNTEzRjFBRkIwMDA3MzRE
RjAgLyogUE9ESW50ZXJ2YWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQ0JCOEFCQTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWxUcmVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFC
NjEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWxUcmVlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCQjhBQkIxM0YxQUZCMDAwNzM0REYw
IC8qIFBPRFJlZEJsYWNrVHJlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNCQjhBQjcxM0YxQUZCMDAwNzM0REYwIC8qIFBPRFJlZEJsYWNrVHJlZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDQkQy
MUFCMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFz
aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJD
QkZCNTNEMERDRDI5Q0YwMDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JGQjUzQjBEQ0QyOUNGMDAxOUIzRTUg
LyogSlNXaW5kb3dQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDQzBFODc2MUJGRTcwRTkwMDhGN0Y1MCAvKiBIVE1MUGljdHVyZUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzBF
ODc0MUJGRTcwRTkwMDhGN0Y1MCAvKiBIVE1MUGljdHVyZUVsZW1lbnQuaCAqLzsgfTsKIAkJQkND
NUJFMDEwQzBFOTMxMTAwMTFDMkRCIC8qIEpTQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDNUJERkYwQzBFOTMxMTAwMTFDMkRC
IC8qIEpTQ1NTU3R5bGVTaGVldC5oICovOyB9OwpAQCAtNDczMyw3ICs0NzMwLDYgQEAKIAkJRTFB
MTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUExNDcwNzExMTAyQjE1
MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCAqLzsgfTsKIAkJRTFBMzE2MkQx
MzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMzE2MkIxMzRCQzMyRDAw
N0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxQTY0M0YyMEVDMDk3MjUwMDc3OTY2
OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUE2NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCUUxQThFNTY3MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBOEU1NjUxNzU1MkIy
QTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBREVDQkYwRTc2QUNGMTAwNEExQTVFIC8qIE1lc3NhZ2VQ
b3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUFE
RUNCRDBFNzZBQ0YxMDA0QTFBNUUgLyogTWVzc2FnZVBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUFERUNDRTBFNzZBRDhCMDA0QTFBNUUg
LyogTWVzc2FnZUNoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxQURFQ0NDMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oICov
OyB9OwogCQlFMUFERUREQTBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBREVERDgwRTc2QkQ5
MzAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnQuaCAqLzsgfTsKQEAgLTYxODMsNyArNjE3OSw2IEBA
CiAJCTFBOTI3RkNGMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBucGFwaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QTkyN0ZEMDE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IG5wcnVudGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQTkyN0ZEMTE0MTZBMTVCMDAzQTgzQzggLyogbnB0eXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBucHR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVVJMQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQUE4NEYwMjE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsQ29udHJvbGxlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbENvbnRyb2xsZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTg0RjAzMTQzQkE3QkQwMDUxRDE1MyAv
KiBTY3JvbGxDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cm9sbENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBQUREQTEx
NERCNDA5RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04ODQzLDggKzg4MzgsNiBAQAogCQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0Ig
LyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUM2ODhBQTAxRDM4MDUwOTAwMEI1NEZBIC8qIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUM2ODhBQTIxRDM4MTI2RjAwMEI1NEZBIC8qIFNvY2tldFByb3ZpZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFByb3ZpZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM2RTY1M0YxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxQYXJzZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzZFNjU0MDFENUNFREM5MDBGNzg2MkUg
LyogVVJMUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTFBhcnNl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzdDODhENzFEMEYxRjJCMDA5RDJG
NkQgLyogU29ja2V0UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U29ja2V0UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5N0EzMzYx
RjVGN0E2NTAwMTA1MjA3IC8qIFJlY3RFZGdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWN0RWRnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5Qjg2
MEIxQzIxRTNDNjAwMTEwRjM2IC8qIE5ldHdvcmtMb2FkTWV0cmljcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtMb2FkTWV0cmljcy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5OTcsOCArODk5MCw2IEBACiAJCTY1N0FGQUZBMjAw
NDc4OUEwMDUwOTQ2NCAvKiBTcGVjdHJlR2FkZ2V0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBTcGVjdHJlR2FkZ2V0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU3QUZB
RkIyMDA0Nzg5QTAwNTA5NDY0IC8qIFNwZWN0cmVHYWRnZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3BlY3RyZUdhZGdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZUxvYWRSZXF1ZXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAv
KiBVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAv
KiBVUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogVVJMTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVSTE1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5QTdEMTIwQjZEQjREOTAwMTE1NUIzIC8q
IFN1YnN0aXR1dGVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJz
dGl0dXRlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTlEREM4MDA5RTE5
OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMzAxNyw3ICsxMzAwOCw2IEBACiAJCUJDQkI4QUI1MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJ
bnRlcnZhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQT0RJbnRlcnZhbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JCOEFCNjEzRjFBRkIwMDA3MzRERjAg
LyogUE9ESW50ZXJ2YWxUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBP
REludGVydmFsVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JCOEFCNzEz
RjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBPRFJlZEJsYWNrVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU1dpbmRvd1Byb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2luZG93UHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JGQjUzQjBEQ0QyOUNGMDAxOUIzRTUgLyogSlNXaW5k
b3dQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dpbmRvd1Byb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQzBFODczMUJGRTcwRTkwMDhGN0Y1
MCAvKiBIVE1MUGljdHVyZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTFBpY3R1cmVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE0NTE4LDggKzE0NTA4LDYgQEAKIAkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8q
IEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9s
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdENvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRkMwRUMwOTdBMDAw
Nzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJh
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRlVSTEV4dHJhcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQThFNTY1MTc1NTJCMkEwMDc0ODhF
NyAvKiBDRlVSTEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRlVS
TEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVBODE0RTlFMjdE
MDA0NDlFMTMgLyogRmlsZUxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVMaXN0
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQjcxNEU5RTM1ODAwNDQ5
RTEzIC8qIEZpbGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUFCMUVCQjE0RTlFMzdBMDA0NDlFMTMgLyogRmlsZUVycm9yLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxl
RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1MjUsOCArMTY1MTMs
NiBAQAogCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAv
KiBDRlVSTEV4dHJhcy5jcHAgKi8sCi0JCQkJRTFBOEU1NjUxNzU1MkIyQTAwNzQ4OEU3IC8qIENG
VVJMRXh0cmFzLmggKi8sCiAJCQkJNTE2MDMwNkIwQ0M0MzYyMzAwQzhBQzI1IC8qIEZpbGVTeXN0
ZW1DRi5jcHAgKi8sCiAJCQkJNTE3QTYzQkYxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRGVjb2Rl
ckNGLmNwcCAqLywKIAkJCQk1MTdBNjNDMDFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWREZWNvZGVy
Q0YuaCAqLywKQEAgLTE2NTM4LDcgKzE2NTI0LDYgQEAKIAkJCQkyRDc2QkI4MzE5NDU2RjgxMDBD
RkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmNwcCAqLywKIAkJCQkyRDc2QkI4MDE5NDU2MzI0MDBD
RkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmggKi8sCiAJCQkJNTEyREQ4RTIwRDkxRTJCNDAwMEY4
OUVFIC8qIFNoYXJlZEJ1ZmZlckNGLmNwcCAqLywKLQkJCQkxQTk4OTU2QTBBQTc4RjgwMDA1RUY1
RUYgLyogVVJMQ0YuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0yNTEzMCwxMSArMjUxMTUsNiBAQAogCQkJCTE4NUJDRjI3MEYzMjc5
Q0UwMDBFQTI2MiAvKiBUaHJlYWRUaW1lcnMuaCAqLywKIAkJCQk5MzMwOUVBMTA5OUVCNzhDMDA1
NkU1ODEgLyogVGltZXIuY3BwICovLAogCQkJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBU
aW1lci5oICovLAotCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuY3BwICovLAot
CQkJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLywKLQkJCQlCQ0JEMjFBQTBF
NDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovLAotCQkJCTVDNkU2NTNGMUQ1Q0VEQzkwMEY3
ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovLAotCQkJCTVDNkU2NTQwMUQ1Q0VEQzkwMEY3ODYyRSAv
KiBVUkxQYXJzZXIuaCAqLywKIAkJCQk4NjgxNjBEMTE4NzY2OUM0MDAyMUU3OUQgLyogVXNlckFj
dGl2aXR5LmNwcCAqLywKIAkJCQk4NjgxNjBEMjE4NzY2OUM0MDAyMUU3OUQgLyogVXNlckFjdGl2
aXR5LmggKi8sCiAJCQkJQTNBRjlEODIyMDMyNTMyNDAwNkNBRDA2IC8qIFVzZXJBZ2VudC5oICov
LApAQCAtMjgwMDgsOSArMjc5ODgsOCBAQAogCQkJCUNEMzE4NjIzMTk5RjFFMkEwMDMwQTBGNyAv
KiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREU1
OTU5NzFCRjI2RTIxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUZBOTA0Q0ExNzhFNjFGNTAwNEM4QTJEIC8qIENlcnRpZmljYXRl
SW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTFCOEYwQjUyMTk1M0Q2NTAwMEMyQjAwIC8qIENl
cnRpZmljYXRlSW5mb0Jhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUUxQThFNTY3MTc1NTJCMkEw
MDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUzNkZEMTUxNkM3
ODI2NTAwRjg4N0MxIC8qIENoYW5nZVZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOTFCOEYwQjUyMTk1M0Q2NTAwMEMyQjAwIC8qIENl
cnRpZmljYXRlSW5mb0Jhc2UuaCBpbiBIZWFkZXJzICovLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGRTM2RkQxNTE2Qzc4MjY1MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2OUREMTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VW
ZXJzaW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTVGRkYxMkIwMjY3NjAwQzFB
MzU5IC8qIENoYW5uZWxNZXJnZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAwMjEy
QjAyNjc2MDBDMUEzNTkgLyogQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMTUwNiwxMSArMzE0ODUsOCBAQAogCQkJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBV
bml0QmV6aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDg2RkU5ODA5RDUzQUFCMDA1QkM3NEQg
LyogVW5saW5rQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQxNzYyRTAxNzY2ODZEOTAw
RDgzNkE4IC8qIFVwU2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNjU5MzkyMzgwOUFFNDM0
NjAwMkM1MzFGIC8qIFVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY3NzI2MDUxQTVERjZGMjAw
M0MyNEREIC8qIFVSTEZpbHRlclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNCRDIxQUIw
RTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzRERF
MTI1MUYxMkQwMDNFRjI2OSAvKiBVUkxJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTVD
NkU2NTQzMUQ1Q0VGQkYwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDQzI4OURGMUFBMEZFNUQwMDlBOUNFMyAvKiBVUkxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNENDM3QTIxRDU3QjNGRTAwQUI4NUVBIC8qIFVSTFV0aWxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzI3NjNCRjE2Njg5QkZCMDAyRkNBQ0IgLyogVXNlckFjdGlvbkVsZW1lbnRTZXQu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAppbmRleCBmM2UzNDZiZWE3ZTE4YmVkMmI4OTkwNjc0
YjZlMjJmYzRhMDI1Y2MyLi42MmNkNTRhODRhYjRhNWYwMmZhYzdiNzI1ZjYwZDdlOGFkMTJjMmNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXIuaApAQCAtNDAsNyArNDAsNiBAQCBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIEpTRE9NR2xvYmFsT2JqZWN0OwogY2xhc3MgTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzOwotY2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHRMb2Fk
ZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI+LCBw
cml2YXRlIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaAppbmRleCA1MjJiMmZmYzA0MzJj
MTg5NGE0NWMwMmI2OTU5ZTllNjBhODQzNTZlLi5kNTM5MWM2OTdkN2NmNGY2ZjVkNDA3OWNhMjcy
ZWY3N2VhOWNhYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNo
ZWRTY3JpcHRGZXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVk
U2NyaXB0RmV0Y2hlci5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ2FjaGVkU2NyaXB0OwogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBVUkw7CiAKIGNsYXNz
IENhY2hlZFNjcmlwdEZldGNoZXIgOiBwdWJsaWMgSlNDOjpTY3JpcHRGZXRjaGVyIHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAK
aW5kZXggNGFmMzcxZjBlMWEwZWQxNTg0NDU5YjM3OGNkNTA1NDE5NTgwZjA4NS4uMjFkMWQzNDdj
YTFkMDdlMTdhNjJiYTc2YjVhZjc5YjEyMWUyMzUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU4OSw3ICs1ODksNyBAQCBKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRXhjZQogCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkph
dmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNj
cmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCiB7Ci0gICAgaWYg
KCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmICghV1RGOjpwcm90b2NvbElzSmF2
YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fZnJhbWUu
cGFnZSgpIHx8ICFtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5h
bGxvd0phdmFTY3JpcHRVUkxzKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIGV2ZW50SGFuZGxl
clBvc2l0aW9uKCkubV9saW5lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaAppbmRleCBmN2MwODI0ZTA2Y2M3MTQ2OWMwNzBkNjg4ZTQyNjgyNGM5YzNj
NGYwLi42ZTlkZGNhMDhkZTBmNjgxOGEwNzY3NWJhYTZmNGFlNGRlZWViYmViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC02MCw3ICs2MCw2
IEBAIGNsYXNzIExvYWRhYmxlTW9kdWxlU2NyaXB0OwogY2xhc3MgTW9kdWxlRmV0Y2hQYXJhbWV0
ZXJzOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xh
c3MgVVJMOwogY2xhc3MgV2lkZ2V0Owogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKaW5kZXggOTFm
Zjk5YzE1MGNmYmM4ZmI2ZWE3MGY1ZjUwNDJjN2FhMWU0MzQ0Yi4uYTYwNjZmNGNlMzk5OTk2YzY1
NGRiNjAzYzBhNDcyNGRkMDg0MDM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKQEAgLTI3LDEwICsyNywxMCBAQAogCiAjaW5jbHVkZSAi
Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVVJMSGFzaC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2gu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFNvdXJjZUNvZGUuaAppbmRleCA1NmVlNjkwZGU4NDE1OWE1N2M0MjhhOTA3MzliMjA1NmZm
ZGRiZmQ2Li5iN2Q3ZWI5M2NiYWNiNzRhODFjMDA3ZTVlZjA5ODEyMjViYzlhOTdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCkBAIC0zNCwxMCAr
MzQsMTAgQEAKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRlICJDYWNoZWRTY3Jp
cHRGZXRjaGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCIKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Tb3VyY2VDb2RlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlUHJvdmlkZXIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQ
b3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDNmNmMwMzkxNDVjMWRl
NDAxN2E5MjYxNDBlMDExZjFmMTlmMGJiZjYuLjY1ZTQ1MzZmYTZlYTFiZDNmOTBmZWI2Yjk1ODk4
M2RhOGQ3YTIzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC00NTUxLDcgKzQ1NTEsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgIGlmIChOZWVkc0ltcGxlbWVudGF0aW9uQ2xhc3MoJGludGVyZmFjZSkg
JiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUhlYXBTbmFwc2hvdH0p
IHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNo
b3RCdWlsZGVyLmg+Iik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiKTsKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlVSTC5oIik7CisgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8d3RmL1VSTC5oPiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpoZWFwU25hcHNob3QoSlNDZWxsKiBjZWxsLCBI
ZWFwU25hcHNob3RCdWlsZGVyJiBidWlsZGVyKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKQEAgLTQ1NjMsNyArNDU2
Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRpbmRl
eGVkR2V0dGVyT3BlcmF0aW9uKSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IlVSTC5oIn0gPSAx
IGlmICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJET01TdHJpbmciOwor
ICAgICAgICAkaW1wbEluY2x1ZGVzeyI8d3RmL1VSTC5oPiJ9ID0gMSBpZiAkaW5kZXhlZEdldHRl
ck9wZXJhdGlvbi0+dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKICAgICAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lID1+IC9eSFRNTFx3KkNvbGxlY3Rpb24kLyBvciAkaW50ZXJmYWNlTmFtZSBlcSAi
UmFkaW9Ob2RlTGlzdCIpIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTTm9kZS5oIn0g
PSAxOwogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siTm9kZS5oIn0gPSAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZh
Y2VOYW1lLmNwcAppbmRleCAxMTc5NTg3NTM1MWJmMmUzNjNjOTE0ZWRkNzQxMzUxYjc0MmEyOWFj
Li42ZDliZDE3YjZkMTU0ZTBiZjBhNmZmOGIwMWIwMDFkMzM1NmRmZTZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZh
Y2VOYW1lLmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
TWFwTGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNN
YXBMaWtlLmNwcAppbmRleCA2ZDdmYWEyYjc3ZGFkNmE0NzNkMDljYTZmZjI5YjM4OTZjNWM0YTJi
Li4wNzljNjY2Mjk0YWVlY2E4Mjc0YWUyYmNlNWVmZTRlYTc3YjE2YjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcApA
QCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFt
ZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwCmluZGV4IDAw
OGRjZWJhNDJjNmQ0YzZmYjJjOWE5MTNmZmI2ZDMzZmQwZjFjODMuLjk3ZDRmM2FiNGZhMTYwMmFl
NDkwYWU4NmM5NmUwYzM4NDc4YmY5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcApAQCAt
MzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5k
ZXggMGY3MTU0YWM0MDQ1M2YzN2E5ZmJiMWVkOTI4ZjYyZTU1MzAzMWM4ZC4uNmNjMjNhZDAxMzFk
MTEyZjIyZGE4ZDhhZGYxMjA1YmJiMWFkYjE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAKQEAgLTMzLDEyICszMywxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0
aW9ucy5jcHAKaW5kZXggNjQwNmJlOTk5MDNkMTRjMWIxNzEwOGI4ZmEzZDEyOTJlMWZjOTA3MC4u
NGEwMjc5MzZiOWRiOTkzNjBiZmRkNzhhOTdiNmIzNWQ2NDY4NmNhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnMuY3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJD
YWNoZS5oIgogI2luY2x1ZGUgIkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAK
aW5kZXggYWRhZDA0OWIxNGM0YWE1ZjI1YWVhZDk0NjBiMWMyYmZhNjE5MjI0ZS4uMzQyYTBkZjhk
MWUyODM1Mjg0YmMzNmJlNjFkYmJiZjI3YmIyOGQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAi
SlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAppbmRleCA0NjFjNGQ5NmE1ZjM5MGRjOGYx
OTAwOTVjYjc0NTY0YTcxMDdhNzIyLi4zYWQ4YzIzNzkzYTdhNjliODMzNGRmNWJkNzU0MzIzZmQ5
YWFiNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggMWRiMGEzMmQ1NWU1Y2I3YzBmOTRjODVmMmFmYzljOTgy
YjJlYjAwZC4uMDA4YjVlODk3Njg2OTVmMjVjODMzYmEzNDYwMWQ0YmU1N2QwZTI0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
CkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bv
aW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKaW5kZXggZTFmOWYxNzBhNmNkNzIzZGJl
OTU1ODRkY2Y1ZmFkMDQyNDJjZWU4OC4uYTk0NTRlOWJhNmI5MzgwNGEzZTkwNTk0ZTlhNzBlNjBj
ZDZhMWI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCkBAIC0yNiwxMiArMjYsMTIgQEAKICNp
bmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCmluZGV4IDc2YzQwZmIwNDU3
OTUwM2VhNWI1MmM0N2UwNDk2MGRiMjE5OTlmM2EuLjk1ZDc2NzA0NzM4OGUzOGMwMTAwNDI5NWQ4
Y2YxMzQ1NmJkNDRiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCkBAIC00MSwxMiArNDEsMTIgQEAKICNp
bmNsdWRlICJKU0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0ZyYW1lVHJhY2Vycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkQnlTZXR0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAppbmRleCA4N2IzNTNjNWI1OTg1ODlk
NTkwMmI3MGU2NGYzOTA3MjFmYTkyYzkzLi4xMjdmYWE5NjdkMmFjNTM2ZTQ2YWI5M2RiZjU2ZmQ1
MjU0ZmUxOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCkBAIC0zMSwx
MyArMzEsMTMgQEAKICNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
U25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwCmluZGV4IDU1ZGVhOGVlYWIwN2Y3NTA1ZjFhNmJkZmNjMjQxYjY3MWNiZGVh
NTYuLjQ1ZGMxOTI3MDQ5YmUyNzIwNTUyYTk4YjdkZjIzNWIwZjVhMTViZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMwLDExICszMCwxMSBAQAogI2luY2x1ZGUg
IkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRl
eCAzMDhlMzRmMDAxYWMyZDhiMzUzZTgwNTFkOGVjNTFiYmFkZDZlZTBhLi43MWUzYmYzNzU0NDI5
ZWM3YTdjY2NhODM1NTFkMzkyODhhYzFlZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAK
QEAgLTMyLDEyICszMiwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5j
bHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRl
eCAyMzhhNDhmN2M2NWYwZDNjYjZmMWUwM2Y3YTI5ZTllODI5ZWJjYmNmLi5kMzJjMDRjYzUwZWVk
ZjI2OWVkODAxZDY5MTIzZjZiNTA1NDA0NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAt
MjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IDM0MjM4YmM1ZDIxM2VjNDk5ZmJlNWEy
NTVjNTYxOGYzMDY4NWIyZGMuLmFjMmJlYmIyZDkzMjRhMWEyYzJhZGQ2YTE2MGQzN2M3NzVjMjNi
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTI4LDEy
ICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9i
amVjdC5jcHAKaW5kZXggNzFiOGJkZGY2OGRhZWNjNzNlMjIxY2U4M2Q2NjA3M2M3MzhiNGVjOC4u
YjIwYjgzYzdiZTllNWIzN2I5Y2M1NzU4NjYzZTE3ODU1ODVlMzkyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEds
b2JhbE9iamVjdC5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KIAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAjaW5jbHVkZSAiVGVz
dEdsb2JhbE9iamVjdEJ1aWx0aW5zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggNjYwNzhiZDZjYjUxMWUxZDJmNDY4ODgyNTgyYTdm
OTFmYmMwNmJjOS4uNTc4OTI1MzdiZTg3ODMyNGE1ZGRlOGY2ZDFjNTkyYzFiOTYyYjcyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAt
MjcsMTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVp
bGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4IDYyMDNjYzBiOTg3
MzkyNDc3YTFkOWJmN2I1NzBjYmUzN2MxMGUzNGYuLjM1NWFkY2Q5MGFlZmNmNTk1ZDA3ZWQ1NDZl
NGNhYWIyMGIzZWUyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yNywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJK
U0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFt
ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAKaW5kZXggM2ZkYzU2MDQwMzUwZTEzMjFkYjI0Njk3YjcyNzI1NTdkZDFhOTA4ZC4uNzY5
NjczYWZiYjRlNjIwMWQ5NGMzMmE4NGNmMjQ5ZWU2MDM4OGZlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTI5LDEzICsyOSwx
MyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1By
b3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggNDBjZjdjOTc3MjJhZTdl
YzI1NjkzMTZiNjQ5ODM1NTRhYTkxMTA5ZC4uNmVhM2Y5NzQ1YjJhYjQ4Mjc2YzUxYWUzZGVhYTRj
MWQ1ODA4YTI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTM0LDEyICszNCwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIlRlc3RTdXBwbGVtZW50YWwuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikgfHwgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKaW5k
ZXggNTVmZmQ2N2ExNTBmZTMyYzVlZGEzNWUzMmQyNDZmNjkzMmU4ZWJhYS4uY2ZmMzJmZjBlYjNh
ZGRhNzdmZTk0NjNhMmE0Zjk5Y2U2NThiNDk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNs
dWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAppbmRleCA5NzljMGY4Y2M1
YmFkODQ2ZjA5NjFjYmRhMjY0ZTBjYjc2YzE4MzBjLi5hYzFlOGU3ZjllZjgyOTI3OGUyNDU4NDVh
NjYyMzFhNWZjYmNhYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKQEAgLTI4LDEzICsyOCwxMyBA
QAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5k
ZXggNTBhZGE4Y2FmMGVlNmQwMmJhZGE4MDFiMGI2OThhZWU5NTlkOTM2MC4uMDBmYWY5ZjA1NzNm
ZDAwNzVkZThkZTUxNDllOGViNTA4NzRjOTRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDMxODdkMmRhZjNkNmU3MjFlN2UwMDg1
ZjI3Y2NiMjJmMmI0MWRhZjkuLjNmZWJkMWNkZWM0MGVjZWZiYTMyYmNmYzQzNjMyNDM1MTVjZTZi
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRlICJKU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4IGQyNzE5NGU4M2U2YWM3NzY1MzFhOWRiNzczMGYw
NTc0YzJkZmFlMWQuLmUwNWQ2NTU0NmJmYTExMzZhMDg2NDI5NTg0NzJjZjUwY2EyZDUzNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjgsMTMgKzI4LDEzIEBACiAjaW5jbHVkZSAiSlNE
T01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVB
cnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBiMWYzNmQ3M2UwMzVhZmU3OGVmZTkzMmIxNGRmOTNj
ZWZmYmE0ZGYyLi5lMDE1YjE3OGE3NjUzOGY4MTllNTNhZmU3YzVmYmJhNzQxODRjYTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
U25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA5Mjk4YTE3NjBjMDgzNTI2NmM0MmViNjY0ODY0
YmY2NDQ4MmM3YjMwLi5mMWE4NGE4YmFkOWE1ZDYwNWExMGU0OWQ5YzVjNDI3M2Q5OTI4N2UxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAK
ICNpbmNsdWRlICJKU0RPTU5hbWVkQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggNTdkNjdjMjM0ZTI2YjRkZGQwOTQ3ZTQwMmVmODli
NDUwMmI2ZGQ0My4uODYyYjQ1OWZiYjIxZDdkMTAxMjU2OTVmNWEwZWFlZmVkNzU0ZjZmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKQEAgLTI4
LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxk
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4IGQwZmNk
MmYyYjkwMzI0OTViNGI2NThiZTliMzFiN2ZlNTVhMDg4NmEuLmMxMDVmMTVkYmFmODVkYmYzZmU0
NDMzYmE3YTgwNTVhODQyZmFhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllci5jcHAKaW5kZXggMjUxNDEwYjVmYWVmNzAwNGMwMTE2NjY2ZmNlOGUxZTkw
YTMzNzlhOS4uNjQxMzljOGY2YjIwYmIzNGI2MjM2ZDYyMDQxYzdlNmQwMjlkOGE3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0y
OSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggMjc1OGNhMTBhMTQx
MmM0MTM5YjMyNTg0ZjNjZjkyYjQwM2FiYjAxNC4uZDYxNGJjZTQyMWZlMzRjNmZiZTY3OGJkMzdl
NTMyZDUyZDI3NjQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRlICJKU0RP
TUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAppbmRleCBjYTJiZjYx
MmFjYmMyZmQ0ZTA0NGExNTlhNzY0NjdlNWFhY2FiOWIyLi5lYTRjNWNkMjdmODg3OWQxNzllYmJi
OTE1M2RmOTkzODEwYmU3NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGguY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRs
aW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
U25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCA5MTIw
ZjRiZTdmMjFiNzhkMmM5YmZmMmRiMTcyNWE5NDk3NGJmY2QxLi42ZTQwZGVmM2Q0NGJhMzdmNzY0
MDA5OTEyODlhZmMxMGUyOWI3YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllci5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
LmNwcAppbmRleCAzYmI3ZDNiN2UxMmY4MjljODhjMzQ0YmFiZGI0ODY4MjJmNTdjYmEyLi5kMzky
NGNiYTYwODZjZjkwODQ2YmYxMTA4NTA5MzQyMDE4ZTQzMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllci5jcHAKaW5kZXggY2JkNWQzMWE2MjY3ZWExZWUyNWRlMDkxNGQ2MTQ2OGJmY2Q5MjVi
NS4uYzdhM2M2YTlkNTk1ZGZlNjcyY2M3MmFiZGRlMDNlZmU2YzgzMjhmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIg
QEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggOWZjYmY2OTdiNjM5YWUwM2Rk
YzBlYmIyMDgzY2U3OTlmNzM4ODM1My4uOThlYzEzZGMyZTc5ZWY1ZmRhNjRiZjcyZDc0M2YxYmNm
MzllNDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CmluZGV4IGI4YTlmYWRlODViNGU5ODdjNzA1MmEwMjlhOWRkOGZjZGE2ZDMyNTAuLmRkZGZmOGNj
ZDcyNTliMzc0NWE2NmNjN2RiZTZhYWZmZjgwOWU2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2lu
Y2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlci5jcHAKaW5kZXggMTcxNDc3NTUwYjBjMzg0NTk1NjJmNmE3NWMyZTgzZDgz
MTVkYjkyNC4uYjY2MWY1M2NkMjg3MDg4ODNhMTFjOGMyMDVlNzA0ODA5NTMxN2YxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApA
QCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCmluZGV4IDEw
M2Y5MWMxYmFhMmFhMzlmMWUzOTlhYWZlY2U1ODExOTExMTZkZWUuLmMzNWZmODk2YzQ4ZDhiYjI4
NzgyM2JkZjBhNDYwN2ExYjNkYTg3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKQEAgLTMwLDEz
ICszMCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCBmYzEyMmEyZTJiYmY4N2JhMTRiMTZm
NzA3OTllNmMyODBmMWU0YzRkLi45ZjEwZDY0ZWU1YTBkMTMxOWI4Y2NmODk0ZGE5MGM4YWMxOGEx
ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnMuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAppbmRleCA0ODA3YjM2NTUzMzE4ZTA0MmE5YjY3YjQ0NDA4
MTE5ZDY4NGVkMWRlLi5jNjBkY2FiNjM1OTU5N2RiNGY4ODBlZGY0MDQwYWM4MzQzNWE4MjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcy5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3Bl
cmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCmlu
ZGV4IGRkNTE5MzA3MzNiNmNkYWE0OWUxZjY4NTZiNmI3MWYxZTExN2NhZGUuLjQwYjk4MWUzNDQx
MDU3ZDdjYmI3ZmVlMTcwZWU1M2NiOTAzMDE3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKICNpbmNs
dWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IGRlOTZkM2I4Y2JmMjAxMjhiMzk2MzVkYjM2
ZTA2ODRlOWY4NjY3YzYuLjJiMmRlZDRjMmM2ODhhZjQ0M2Y0YTk3YzBmZDQ5YjEyNjAwMDY1YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9kZS5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
aW5kZXggM2U3ZDc3NGViNDI5MDA2ZTlkNDBmNjU1MjNlNWM0ZmRjZjVkNWUwNy4uMWJkMmZhMWUw
MDVjMzRjOGI4ZDZlMGZlMTM4OGE5ODBiZGM0MTQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTc3LDcgKzc3
LDYgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheVByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgpAQCAtOTEsNiArOTAsNyBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggZWFm
MDkyYWYzZjNhNzFlOWQzYzRjZjYwMTFiZmQ5MTkyYWIyMWI1YS4uMWFkYjcwMjEyZjQ1MWNjZTg1
YjA4Y2RhMDM2ZmU0NzgwODljMzk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNl
cHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCmluZGV4IDA1ODE0M2JhMTRiYjRlYjIyNDA5YzhkMjg0NzM3
NTNkODRmMDNlN2YuLmIwNTU2Njg1OTZiYzZmMjdjODJjNzE2ZmQyMzRlNWQ4MGFhOGE0YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSXRlcmF0
b3JPcGVyYXRpb25zLmg+CkBAIC0zNyw2ICszNiw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggMGRi
Nzc0YWYxMjVmNWQxODUwZjc5YTYxNzE0NzVlMTM3YWI3Y2Q2MS4uYzFhNjM0MzBhYzBkOGFjMTNi
YmE0YzRhNzQzOTQ5MDE4YzcxMWQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcApAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwU25hcHNob3RCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuY3BwCmluZGV4IDI4MzYyNDczYTcwOWY1OTY0NmJiZWI2MDRiZTNkYTExMWEwYThj
ZWQuLmJlYzU3ZDU1MTdkNWIwOWM4ZDIwYTBhZGU0Mjk3Y2YwYWU4ZGZjZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRl
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dC5jcHAKaW5kZXggOGIwZjUxZWQzMTk0MWM4NGFlYjI0YTM3M2JlOWIxN2MwN2Y3NjNkNy4uN2Ey
NTg5ODY3MTQ2MzBhMzA1M2JjNzQ4MWE1ZGUwZmVmMWJkNzk4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKQEAgLTM0LDExICszNCwxMSBAQAogI2luY2x1
ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCmlu
ZGV4IGUzYzFjYzI1OWExZDI3ODc5YTI2N2Q5ZjQ0NThkNWQ0ODlhNjg3OTIuLjc4ZDFjNDFjNDI4
YzAxZTFmNzVmNmU5MWE2NGFlYjMwNWMwYTUyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlv
bi5jcHAKQEAgLTM2LDEzICszNiwxMyBAQAogI2luY2x1ZGUgIkpTVGVzdFNlcmlhbGl6YXRpb25J
bmRpcmVjdEluaGVyaXRhbmNlLmgiCiAjaW5jbHVkZSAiSlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXRGaW5hbC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
T2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0
aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKaW5kZXggOTYzNjhmM2U2ZjdiZmZhOGUxYTdlZmJm
ZTdmNTA2M2Y2NDZkYmRhNy4uMTMzZWRhMDJlNjQwMTYzZmM5YmU2NTQzNDgyMGZiOTI1ZjA0YzBh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0
SW5oZXJpdGFuY2UuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5j
cHAKaW5kZXggMzdmNjU0ZGRmY2Q3YzE1Yjc4ZWI2NzFjNGFhYzY3ODVkNTQwMGJiNy4uYWQ1MzFi
MjBiNzRiYzZkMjU5NTY5MTgyZWFlZmM1MzExY2Y4ZTA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJK
U0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29u
c3RydWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwu
Y3BwCmluZGV4IDVlODY5MTBhYjUyMDg4ZTMxNzc5MzY0OWQ0YzYwNzJhYzRlNzJiOTQuLmExYWMy
ZDAxMGU1MWM0ODM3YzBmMGI1NDYyMjgwMzRhZDBkYjg0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dEZpbmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDM0MmVkMWFhNTBiNDY4NjhiZmIzOTE2NmFl
MGY4M2QwOGM2ODAyYTguLmRmN2RmYjhmOTYxZDk0ZmU4ZTI0ZjAxZDI0MWZiMjRmNmE5NGZhZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Lmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNu
YXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3Bw
CmluZGV4IGZmMmNhZDJjYWZmYzlhZGYxYWZmYTUzY2RmMDk3N2NmYzgzZTg3MTUuLjUyNDJiYjhi
YWFjNmZjOGNhMTQwNDA2MGYxNTBiYjFkZDdjMDE1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
LmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCmluZGV4IDg5
ZWRmYjRkNTRmZmNlMjkzMTJlOWRjMzcwYTI5MDRlODYzODk0OGYuLjdjYWUyNDM5ZWY2MjdiNmMy
NjYxNzM5NGI5MWNjOGI4MDRmZjA1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5j
bHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uLmNwcAppbmRleCBiMTZiNmZiNGJkMTRlMjRkMmRhZTBmNDRiYWJlYTY0ZDg0NzAwZjQ0
Li41MGE0NmY2MTRmOTg0OGI3NjkyODVlMTYzODkwNzNjMTI5MTU3ZmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJO
YW1lZE9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCkBAIC0yOCwxMiArMjgs
MTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBzaG90QnVpbGRlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAppbmRleCA1YTU0YWMxNDNjYjI3
OTM2NGU2NDZjMzMzNGIwY2JjMTdhZTgzNDM1Li4wYTMzYWYzNzhhMmIxMjE5ZjI5Mjg0ZGM4OWUx
NmQzOGI3MjQ3NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVk
ZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKaW5kZXggZjI1MThhNzFlZDY4NjFjNWE4Y2FmNmJlYjM0
YzVmY2Y2YmQzMGRlZi4uNDkwNDkxNzRlMDM2ZjVmMTgwNjI0NGMzZjJlYmQxOWUxNjk2MmU0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZy5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
U25hcHNob3RCdWlsZGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAK
aW5kZXggODEyMzcyYjRkNGVlNzBjNDIzYTI4NDMzNDY1MWQxMTU4ZWFhY2U1OS4uYzljNTI2OThi
ODJkM2ZmZjI3ZDIzNDRmZGRiNTU0M2QwOTJjYTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcApAQCAtMjksMTIgKzI5LDEyIEBA
CiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCmluZGV4IDM5MTdiNGQ5Mjk2YmE1MjNkYzEzMDcwNjE5
Y2Y0Y2VkMzhhODNmYjEuLjc1ZWMzOGFkYjhmZTg4OTMwNDYwMzUzNDZiNTY0NDZkN2IyYjYyZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
dW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwCmluZGV4IDFlNjEzYWFiMDY1MjRhZjU1NjA2MzNkODgyMjQ5N2ZkMWMwMWUwYTIu
LjE4NmE0MTZkYTg3M2E2NGU1ZGY1YzY2ZWJiZmQwOTAxYWNlNWRkMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBACiAjaW5jbHVkZSAiSlNUZXN0U3ViT2JqLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcFNuYXBz
aG90QnVpbGRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5j
cHAKaW5kZXggNzI0MDcxNTZlYmQ2MjY4NmExMzRiMDFhNGU0MGNkNTExNmI3NTlkZi4uZDBlYWJh
MDlmZDEyZWVhZjVhMTM3YTJhYjRkYzI0MGI5OTdiNzY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJVc2VyQ29udGVudENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xOTQsNyArMTk0LDcgQEAgQmxvY2tlZFN0YXR1cyBDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2Fk
KGNvbnMKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpNYWtlSFRUUFM6IHsKICAgICAgICAgICAgIGlmICgodXJsLnByb3RvY29s
SXMoImh0dHAiKSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSkKLSAgICAgICAgICAgICAgICAmJiAo
IXVybC5wb3J0KCkgfHwgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5wb3J0KCkudmFsdWUo
KSwgdXJsLnByb3RvY29sKCkpKSkKKyAgICAgICAgICAgICAgICAmJiAoIXVybC5wb3J0KCkgfHwg
V1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBvcnQoKS52YWx1ZSgpLCB1cmwucHJv
dG9jb2woKSkpKQogICAgICAgICAgICAgICAgIHdpbGxNYWtlSFRUUFMgPSB0cnVlOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI0NCw3ICsyNDQsNyBAQCBCbG9ja2VkU3RhdHVz
IENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0Zv
clBpbmdMb2FkKAogICAgICAgICAgICAgd2lsbEJsb2NrQ29va2llcyA9IHRydWU7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
TWFrZUhUVFBTOgotICAgICAgICAgICAgaWYgKCh1cmwucHJvdG9jb2xJcygiaHR0cCIpIHx8IHVy
bC5wcm90b2NvbElzKCJ3cyIpKSAmJiAoIXVybC5wb3J0KCkgfHwgaXNEZWZhdWx0UG9ydEZvclBy
b3RvY29sKHVybC5wb3J0KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKKyAgICAgICAgICAg
IGlmICgodXJsLnByb3RvY29sSXMoImh0dHAiKSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSkgJiYg
KCF1cmwucG9ydCgpIHx8IFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5wb3J0KCku
dmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKICAgICAgICAgICAgICAgICB3aWxsTWFrZUhUVFBT
ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9yOgpAQCAtMjc1LDEyICsyNzUs
MTIgQEAgdm9pZCBhcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QoY29uc3QgQmxvY2tlZFN0YXR1
cyYgc3RhdHVzLCBQYWdlKiBwYWdlLCBSZXNvdXIKICAgICBpZiAoc3RhdHVzLm1hZGVIVFRQUykg
ewogICAgICAgICBjb25zdCBVUkwmIG9yaWdpbmFsVVJMID0gcmVxdWVzdC51cmwoKTsKICAgICAg
ICAgQVNTRVJUKG9yaWdpbmFsVVJMLnByb3RvY29sSXMoImh0dHAiKSk7Ci0gICAgICAgIEFTU0VS
VCghb3JpZ2luYWxVUkwucG9ydCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChvcmlnaW5h
bFVSTC5wb3J0KCkudmFsdWUoKSwgb3JpZ2luYWxVUkwucHJvdG9jb2woKSkpOworICAgICAgICBB
U1NFUlQoIW9yaWdpbmFsVVJMLnBvcnQoKSB8fCBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bChvcmlnaW5hbFVSTC5wb3J0KCkudmFsdWUoKSwgb3JpZ2luYWxVUkwucHJvdG9jb2woKSkpOwog
CiAgICAgICAgIFVSTCBuZXdVUkwgPSBvcmlnaW5hbFVSTDsKICAgICAgICAgbmV3VVJMLnNldFBy
b3RvY29sKCJodHRwcyIpOwogICAgICAgICBpZiAob3JpZ2luYWxVUkwucG9ydCgpKQotICAgICAg
ICAgICAgbmV3VVJMLnNldFBvcnQoZGVmYXVsdFBvcnRGb3JQcm90b2NvbCgiaHR0cHMiKS52YWx1
ZSgpKTsKKyAgICAgICAgICAgIG5ld1VSTC5zZXRQb3J0KFdURjo6ZGVmYXVsdFBvcnRGb3JQcm90
b2NvbCgiaHR0cHMiKS52YWx1ZSgpKTsKICAgICAgICAgcmVxdWVzdC5zZXRVUkwobmV3VVJMKTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCmluZGV4IGEyOTZmZjk3ZmJjZmVjOTBiNWE2
MGNmZWMzYzgwYzQwZThlNDE4MzMuLjM0Y2ZhY2E1MDFmZDNjNzJjOTY2N2U4ZjRiNzBkZTI3N2Fh
YzVjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7Ci1jbGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZS5oCmluZGV4IGVmNTBlMmQ0ZjYzNTQwNGZhMTQ4YTQ4NTMwZDc5MjQxOTc1YTZkYmEuLjdl
ZGQzZTIzMWE3YzFiMjBhMGIwMWE0NjhmNTFkNTk0YWZiOTg1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZS5oCkBAIC0yMSwxMiArMjEsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHlOYW1lcy5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAppbmRleCA4MzlhNTQ0M2Y5MTc4YTIyZTMwYjZmMDg3
YjJjMTk5ODY0Y2YzNThjLi41MGY3MmU5YmFjNjRhNjgxODZmZjUzZmJmNjFmM2JiOWIzMzFjMjM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCkBAIC0zOCw3ICszOCw2IEBAIGNs
YXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENv
bG9yOwogY2xhc3MgSW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOwotY2xhc3MgVVJMOwogY2xhc3Mg
TXV0YWJsZVN0eWxlUHJvcGVydGllczsKIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbjsKIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApp
bmRleCA5ODI0MjE2YzgxMzQ2OWI4OTY4ZGQ0YzEyYTJlMWIwN2U0MTZkNzhkLi40MzhlNWM4Nzdm
YjQzZjQ0ZGU1NzJlNmVkZTNkNGMyMGM0NzM4YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmgKQEAgLTU4LDcgKzU4LDYgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBVUkw7CiBjbGFzcyBLZXlmcmFt
ZUxpc3Q7CiBjbGFzcyBLZXlmcmFtZVZhbHVlOwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTaGVldC5oCmluZGV4IGU4YjViZmM1NjI4N2E0ZDk4MjhlODkzZDg1Nzlj
YmE4YjhlZWJjYzIuLmJhYjRlNjI3OTQ3YjZlZTg1ZDg0OTk1YzNmZDAyMzQyMThkNDM4MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXQuaApAQCAtMzAsNyArMzAsNiBAQCBjbGFzcyBDU1NJbXBvcnRS
dWxlOwogY2xhc3MgTWVkaWFMaXN0OwogY2xhc3MgTm9kZTsKIGNsYXNzIFN0eWxlU2hlZXQ7Ci1j
bGFzcyBVUkw7CiAKIGNsYXNzIFN0eWxlU2hlZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVNo
ZWV0PiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKaW5k
ZXggMmM3NGFmYTM2NTVkYmQzMWJkNWFlNWM0NzdiNWNkZjEzMWUyNGFlMS4uNTUzNzE2MjAzZWE4
YTVmM2Y1MGQyZTFjYmIyYTRjNzJjODY4ZGEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNo
ZWV0Q29udGVudHMuaApAQCAtMjIsMTAgKzIyLDEwIEBACiAKICNpbmNsdWRlICJDU1NQYXJzZXJD
b250ZXh0LmgiCiAjaW5jbHVkZSAiQ2FjaGVQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZ0hhc2guaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJDb250ZXh0LmgKaW5kZXggMTA4OWQyMmQ0MWIxOGFlODE1MDI2ZTQwZTBlMDJiZmJhYWM4MmQw
Ny4uNzU4YjZlZWIzYWZhODBhODY1NjNjYzRlZjQyZjkzYTI0OWM3MGNmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKQEAgLTI3LDkgKzI3LDkgQEAK
IAogI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIK
LSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTEhh
c2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTg3LDcgKzg3LDcgQEAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYgc3RyaWN0Q1NTUGFyc2VyQ29udGV4dCgpOwogc3RydWN0IENTU1BhcnNlckNvbnRleHRI
YXNoIHsKICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBr
ZXkpCiAgICAgewotICAgICAgICBhdXRvIGhhc2ggPSBVUkxIYXNoOjpoYXNoKGtleS5iYXNlVVJM
KTsKKyAgICAgICAgYXV0byBoYXNoID0gV1RGOjpVUkxIYXNoOjpoYXNoKGtleS5iYXNlVVJMKTsK
ICAgICAgICAgaWYgKCFrZXkuY2hhcnNldC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBoYXNoIF49
IFN0cmluZ0hhc2g6Omhhc2goa2V5LmNoYXJzZXQpOwogICAgICAgICB1bnNpZ25lZCBiaXRzID0g
a2V5LmlzSFRNTERvY3VtZW50ICAgICAgICAgICAgICAgICAgPDwgMApAQCAtMTIxLDcgKzEyMSw3
IEBAIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0SGFzaCB7CiAKIG5hbWVzcGFjZSBXVEYgewogdGVt
cGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0PiA6IEdl
bmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQ+IHsKLSAgICBzdGF0aWMg
dm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCYgc2xv
dCkgeyBuZXcgKE5vdE51bGwsICZzbG90LmJhc2VVUkwpIFdlYkNvcmU6OlVSTChXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFs
dWUoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dCYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90
LmJhc2VVUkwpIFVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KICAgICBzdGF0aWMg
Ym9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0JiB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUuYmFzZVVSTC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAg
ICAgc3RhdGljIFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJu
IFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHQoV2ViQ29yZTo6SFRNTFN0YW5kYXJkTW9kZSk7IH0K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9t
cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAppbmRleCA4
NzFkNTk5MWI1NzZiYjMwZjQ2NTg3ODExODczZGFmNmZhNThiY2E0Li4yNTc1YzBkZjJiODdjNTkw
NWY3ZGJjMmNlNmZjYzM1NGZiN2E5N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VySWRpb21zLmgKQEAgLTM1LDggKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvQVNDSUlD
VHlwZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFVSTDsKICAgICAKIC8vIFNw
YWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBieSB0aGUgQ1NTIHNwZWNpZmljYXRpb24uCiAvLyBo
dHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5bnRheC8jd2hpdGVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcAppbmRleCA2ZDM5ZGE0NTVkNDJmMzM4MmRjNzQyNWRhZDgwMDdiZmQ2
NzA3YjllLi42MGUzYjdjZTY5YmY5ODA4NDY1MTE3YzhhNjQzODYzOWIxNzQ1MTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtNDMsMTAgKzQzLDEwIEBACiAjaW5jbHVkZSAi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiU3RhdGljUGFzdGVib2FyZC5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1ZGUg
IldlYkNvbnRlbnRSZWFkZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFk
ZXIuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREYXRhRnJvbUl0
ZW1MaXN0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIGlmICh0
eXBlID09ICJ0ZXh0L2h0bWwiKQogICAgICAgICBzYW5pdGl6ZWREYXRhID0gc2FuaXRpemVNYXJr
dXAoZGF0YSk7CiAgICAgZWxzZSBpZiAodHlwZSA9PSAidGV4dC91cmktbGlzdCIpIHsKLSAgICAg
ICAgYXV0byB1cmwgPSBVUkxQYXJzZXIoZGF0YSkucmVzdWx0KCk7CisgICAgICAgIGF1dG8gdXJs
ID0gVVJMKHsgfSwgZGF0YSk7CiAgICAgICAgIGlmICh1cmwuaXNWYWxpZCgpKQogICAgICAgICAg
ICAgc2FuaXRpemVkRGF0YSA9IHVybC5zdHJpbmcoKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0g
InRleHQvcGxhaW4iKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYWIzODcwZThkMzQ5NmRl
NTlhYjcyZmIwYmU4NmFmYmU2OGYyYjRkNS4uMTY2MTQ0MDlhMzgxNTNhY2VkZWJjNTcxMjhiNmU1
ZTExODZlYjhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMTY3LDcgKzMxNjcsNyBA
QCB2b2lkIERvY3VtZW50Ojpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgcwogCiB2b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3Qg
VVJMJiB1cmwpCiB7Ci0gICAgY29uc3QgVVJMJiBuZXdVUkwgPSB1cmwuaXNFbXB0eSgpID8gYmxh
bmtVUkwoKSA6IHVybDsKKyAgICBjb25zdCBVUkwmIG5ld1VSTCA9IHVybC5pc0VtcHR5KCkgPyBX
VEY6OmJsYW5rVVJMKCkgOiB1cmw7CiAgICAgaWYgKG5ld1VSTCA9PSBtX3VybCkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0zNDU3LDcgKzM0NTcsNyBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzSHR0
cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbAog
ICAgICAgICAgICAgICAgIGNvbXBsZXRlZFVSTCA9IG1fdXJsOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGNvbXBsZXRlZFVSTCA9IGNvbXBsZXRlVVJMKHVybFN0cmluZyk7Ci0g
ICAgICAgICAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlZFVSTCkpCisgICAg
ICAgICAgICBpZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKICAg
ICAgICAgICAgICAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVkaXJl
Y3QoKnRoaXMsIGRlbGF5LCBjb21wbGV0ZWRVUkwpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiUmVmdXNlZCB0byByZWZyZXNoICIgKyBtX3Vy
bC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICIgdG8gYSBqYXZhc2NyaXB0OiBV
UkwiOwpAQCAtNTAwNiw3ICs1MDA2LDcgQEAgVVJMIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgVVJMJiBiYXNlVVJMT3ZlcnJpZGUpIGNvbnN0CiAgICAgLy8g
U2VlIGFsc28gW0NTU11TdHlsZVNoZWV0Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKQogICAg
IGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBVUkwoKTsKLSAgICBjb25zdCBVUkwm
IGJhc2VVUkwgPSAoKGJhc2VVUkxPdmVycmlkZS5pc0VtcHR5KCkgfHwgYmFzZVVSTE92ZXJyaWRl
ID09IGJsYW5rVVJMKCkpICYmIHBhcmVudERvY3VtZW50KCkpID8gcGFyZW50RG9jdW1lbnQoKS0+
YmFzZVVSTCgpIDogYmFzZVVSTE92ZXJyaWRlOworICAgIGNvbnN0IFVSTCYgYmFzZVVSTCA9ICgo
YmFzZVVSTE92ZXJyaWRlLmlzRW1wdHkoKSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0gV1RGOjpibGFu
a1VSTCgpKSAmJiBwYXJlbnREb2N1bWVudCgpKSA/IHBhcmVudERvY3VtZW50KCktPmJhc2VVUkwo
KSA6IGJhc2VVUkxPdmVycmlkZTsKICAgICBpZiAoIW1fZGVjb2RlcikKICAgICAgICAgcmV0dXJu
IFVSTChiYXNlVVJMLCB1cmwpOwogICAgIHJldHVybiBVUkwoYmFzZVVSTCwgdXJsLCBtX2RlY29k
ZXItPmVuY29kaW5nRm9yVVJMUGFyc2luZygpKTsKQEAgLTcyODgsOSArNzI4OCw5IEBAIERvY3Vt
ZW50JiBEb2N1bWVudDo6ZW5zdXJlVGVtcGxhdGVEb2N1bWVudCgpCiAgICAgICAgIHJldHVybiBj
b25zdF9jYXN0PERvY3VtZW50Jj4oKmRvY3VtZW50KTsKIAogICAgIGlmIChpc0hUTUxEb2N1bWVu
dCgpKQotICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShu
dWxscHRyLCBibGFua1VSTCgpKTsKKyAgICAgICAgbV90ZW1wbGF0ZURvY3VtZW50ID0gSFRNTERv
Y3VtZW50OjpjcmVhdGUobnVsbHB0ciwgV1RGOjpibGFua1VSTCgpKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgYmxhbmtV
UkwoKSk7CisgICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUobnVs
bHB0ciwgV1RGOjpibGFua1VSTCgpKTsKIAogICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0Q29u
dGV4dERvY3VtZW50KGNvbnRleHREb2N1bWVudCgpKTsKICAgICBtX3RlbXBsYXRlRG9jdW1lbnQt
PnNldFRlbXBsYXRlRG9jdW1lbnRIb3N0KHRoaXMpOyAvLyBiYWxhbmNlZCBpbiBkdG9yLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCAyOThiYTllMzFmZTVmMTQ5NmQwY2E5NTQ2Y2ZmM2QyZjU1NTVh
MmY1Li40ZDA2ZTYwNzAwZWQ3NWNkYTU2MGUzYTU1MTNkNTUxMDU2NzFjOGQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtNjgxLDcgKzY4MSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KICAgICB2b2lkIHNldFVSTChjb25z
dCBVUkwmKTsKLSAgICBjb25zdCBVUkwmIHVybEZvckJpbmRpbmdzKCkgY29uc3QgeyByZXR1cm4g
bV91cmwuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1
cmxGb3JCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKSA/IFdURjo6Ymxh
bmtVUkwoKSA6IG1fdXJsOyB9CiAKICAgICAvLyBUbyB1bmRlcnN0YW5kIGhvdyB0aGVzZSBjb25j
ZXB0cyByZWxhdGUgdG8gb25lIGFub3RoZXIsIHBsZWFzZSBzZWUgdGhlCiAgICAgLy8gY29tbWVu
dHMgc3Vycm91bmRpbmcgdGhlaXIgZGVjbGFyYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggODgyMDdlNTRmODBkNzViMTQ2ODgxYTQyZGYxOGM5ODU2OTk5MjRlMy4uNWExNWE2OWQ2Y2Qw
Nzc0MDBlZDcyZjZiNjdiN2JhNGUxNWI2ZGQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
MTcyMCw3ICsxNzIwLDcgQEAgYm9vbCBFbGVtZW50Ojppc0V2ZW50SGFuZGxlckF0dHJpYnV0ZShj
b25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKIAogYm9vbCBFbGVtZW50Ojppc0phdmFT
Y3JpcHRVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgcHJvdG9jb2xJc0phdmFTY3Jp
cHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZS52YWx1ZSgpKSk7
CisgICAgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSkgJiYgV1RGOjpwcm90b2NvbElz
SmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlLnZh
bHVlKCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzdHJpcFNjcmlwdGluZ0F0dHJpYnV0ZXMoVmVj
dG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXggY2E1MzFmMDM2NGM1MDhmZTliNTgw
YWU2YzA3MDJkODM4YzFhOWE2Zi4uOTIyMjMzZDY5OTBlYWU5OTcwYTczYjY2NWNmNTI3OThiNjU1
YWQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dEZv
ckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBzaGFkb3dSb290
ID0gZWxlbWVudC5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIC8vIFVzZXIgYWdlbnQgc2hh
ZG93IHRyZWVzIGNhbid0IGNvbnRhaW4gZG9jdW1lbnQtcmVsYXRpdmUgVVJMcy4gVXNlIGJsYW5r
IFVSTCBhcyBiYXNlIGFsbG93aW5nIGNyb3NzLWRvY3VtZW50IHNoYXJpbmcuCi0gICAgYXV0byYg
YmFzZVVSTCA9IHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jvb3RN
b2RlOjpVc2VyQWdlbnQgPyBibGFua1VSTCgpIDogZWxlbWVudC5kb2N1bWVudCgpLmJhc2VVUkwo
KTsKKyAgICBhdXRvJiBiYXNlVVJMID0gc2hhZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkg
PT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCA/IFdURjo6YmxhbmtVUkwoKSA6IGVsZW1lbnQu
ZG9jdW1lbnQoKS5iYXNlVVJMKCk7CiAKICAgICBDU1NQYXJzZXJDb250ZXh0IHJlc3VsdCA9IENT
U1BhcnNlckNvbnRleHQgeyBlbGVtZW50LmRvY3VtZW50KCksIGJhc2VVUkwsIGVsZW1lbnQuZG9j
dW1lbnQoKS5jaGFyYWN0ZXJTZXRXaXRoVVRGOEZhbGxiYWNrKCkgfTsKICAgICBpZiAoc2hhZG93
Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCBkZTA1NjlkNWFmNTBkOTY0OGNjMjA4M2UwODFmODAwYzI4OTNk
YTZiLi4wN2MyZjY1ZDBlYjQ0ZDU3ZDBiMjkxMjRmMjU5MjAyNWMyODBlN2Q4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC0xMzUwLDcgKzEzNTAsNyBAQCBEb2N1bWVudCogTm9kZTo6b3duZXJEb2N1bWVu
dCgpIGNvbnN0CiBjb25zdCBVUkwmIE5vZGU6OmJhc2VVUkkoKSBjb25zdAogewogICAgIGF1dG8m
IHVybCA9IGRvY3VtZW50KCkuYmFzZVVSTCgpOwotICAgIHJldHVybiB1cmwuaXNOdWxsKCkgPyBi
bGFua1VSTCgpIDogdXJsOworICAgIHJldHVybiB1cmwuaXNOdWxsKCkgPyBXVEY6OmJsYW5rVVJM
KCkgOiB1cmw7CiB9CiAKIGJvb2wgTm9kZTo6aXNFcXVhbE5vZGUoTm9kZSogb3RoZXIpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAppbmRleCA1MmRhNmQxMWEwMTBmZjQzYTM2OTU1NWFmNzc5OTQ2MWJjYTJhNThi
Li4xMjQzOWQ3OGQzNWM0YzI4MjFhNzI1NGQwMzIxNDUwMzVmYjQ3ZjlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
QEAgLTMxLDExICszMSwxMSBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAj
aW5jbHVkZSAiU3R5bGVWYWxpZGl0eS5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgotI2luY2x1
ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIC8vIFRoaXMgbmVlZHMg
dG8gYmUgaGVyZSBiZWNhdXNlIERvY3VtZW50LmggYWxzbyBkZXBlbmRzIG9uIGl0LgogI2RlZmlu
ZSBEVU1QX05PREVfU1RBVElTVElDUyAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAppbmRl
eCBhNjFkYWQ0NWU5ZTQ0NGZhMzIyZTU5ODIyYjRlOGU2YjFlOGY2ZGI3Li42MjQ1NGU3OTNjYjEz
MzRmNjRjY2YzYmUyMDk1ZDMzY2E5YTcyYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50
LmgKQEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIExvYWRhYmxlTW9kdWxl
U2NyaXB0OwogY2xhc3MgUGVuZGluZ1NjcmlwdDsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7Ci1j
bGFzcyBVUkw7CiAKIGNsYXNzIFNjcmlwdEVsZW1lbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggNzg1OTA0NTgyM2I3YzYzMDUw
YWUwMWYxYTY0NWJhZDMwYjJkYzc5Yi4uZjVmYzBiYTFkYjYyNzAwODhkNDdmNzU0NzQ0M2NhMDJl
YmI1MWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CkBAIC02OCw3ICs2OCw2IEBAIGNsYXNzIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNvY2tldFByb3Zp
ZGVyOwotY2xhc3MgVVJMOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogY2xhc3MgU2Vy
dmljZVdvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAppbmRleCA5ZjIxNWZi
YTFiNTNmMjU2MTVjYzBkYTNjYzczNDIwNTAxMjVhY2E1Li5jMGNjOGUyMTEwOWQ2M2JmNGEzMmU5
YjVhN2M0ZjE5NWE0ODA3MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJp
dHlDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCkBA
IC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW5Qb2xpY3k7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xp
Y3k7Ci1jbGFzcyBVUkw7CiAKIGVudW0gU2FuZGJveEZsYWcgewogICAgIC8vIFNlZSBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNhdHRyLWlmcmFtZS1z
YW5kYm94IGZvciBhIGxpc3Qgb2YgdGhlIHNhbmRib3ggZmxhZ3MuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggYWE2MWIxZWI2ZDBhYjhkZmM2NmZlZDE4N2EyYTJkZGRiNWFlM2ZlNC4u
YWRjY2Y5NGU4ODhiYzM5NGVjMWM4ZGI5NDI5MGQxMzljNDJlZDg2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtMTUyOCw5ICsxNTI4LDkgQEAgdm9pZCBFZGl0b3I6OmNvcHlVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3RlYm9h
cmQKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRVUkwpOwogfQogCi1QYXN0ZWJvYXJk
V3JpdGVyRGF0YTo6VVJMIEVkaXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK1Bhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkxEYXRhIEVk
aXRvcjo6cGFzdGVib2FyZFdyaXRlclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0
aXRsZSkKIHsKLSAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6VVJMIHJlc3VsdDsKKyAgICBQYXN0
ZWJvYXJkV3JpdGVyRGF0YTo6VVJMRGF0YSByZXN1bHQ7CiAKICAgICByZXN1bHQudXJsID0gdXJs
OwogICAgIHJlc3VsdC50aXRsZSA9IHRpdGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXgg
MTFjMTE5NDNkMGIxYzIwYmU1ODRhNThhZGIwMjA2ZTBiODNmOTRhNi4uODdiNjg0ZjkwM2EzM2Zk
ZGI2NjMwNGNmMTM0ODZmOWM4NDA0NWJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0x
NzYsNyArMTc2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VVJM
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHZvaWQgY29weVVSTChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJik7Ci0gICAgUGFzdGVib2Fy
ZFdyaXRlckRhdGE6OlVSTCBwYXN0ZWJvYXJkV3JpdGVyVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgdGl0bGUpOworICAgIFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpVUkxEYXRhIHBhc3RlYm9h
cmRXcml0ZXJVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5SW1hZ2UoY29uc3Qg
SGl0VGVzdFJlc3VsdCYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3Vw
QWNjdW11bGF0b3IuY3BwCmluZGV4IDYyMzY0ZGZhY2U4YjYwN2JjNTY3N2M5NDhmNTUyNWRjMjJh
NjYxOTYuLjIzZjZlNWQxZWM0Yjg1ZmVmMGU4NjEwNGVjODk2MDFlYjZkMGZkZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0zNSw3ICszNSw3
IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1
ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCkBAIC0yOTUsNyArMjk1
LDcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUXVvdGVkVVJMQXR0cmlidXRlVmFs
dWUoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb24KICAgICBjb25zdCBTdHJpbmcgcmVzb2x2ZWRV
UkxTdHJpbmcgPSByZXNvbHZlVVJMSWZOZWVkZWQoZWxlbWVudCwgYXR0cmlidXRlLnZhbHVlKCkp
OwogICAgIFVDaGFyIHF1b3RlQ2hhciA9ICciJzsKICAgICBTdHJpbmcgc3RyaXBwZWRVUkxTdHJp
bmcgPSByZXNvbHZlZFVSTFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBpZiAocHJvdG9j
b2xJc0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcpKSB7CisgICAgaWYgKFdURjo6cHJvdG9j
b2xJc0phdmFTY3JpcHQoc3RyaXBwZWRVUkxTdHJpbmcpKSB7CiAgICAgICAgIC8vIG1pbmltYWwg
ZXNjYXBpbmcgZm9yIGphdmFzY3JpcHQgdXJscwogICAgICAgICBpZiAoc3RyaXBwZWRVUkxTdHJp
bmcuY29udGFpbnMoJyInKSkgewogICAgICAgICAgICAgaWYgKHN0cmlwcGVkVVJMU3RyaW5nLmNv
bnRhaW5zKCdcJycpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
YXRhRGV0ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24uaAppbmRleCAzYTM0YTA5YTVmYmNkOTIzYWFlM2M4ZGI4OGY1YTY2OGE3NmM5MTQwLi4xZDEx
MmRjNjk4Mzk4MGJmZDZmNmI5N2RmNzgwMGZiZWQ2MzM4MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaApAQCAtNDIsNyArNDIsNiBAQCBjbGFzcyBF
bGVtZW50OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIFJh
bmdlOwotY2xhc3MgVVJMOwogCiBlbnVtIERhdGFEZXRlY3RvclR5cGVzIHsKICAgICBEYXRhRGV0
ZWN0b3JUeXBlTm9uZSA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbQppbmRleCBhYmUzZGIzZjNhOTZlZDE0YjY0MGM5YWY0NDkzM2YyZDIzMTFiM2E4Li5l
MzEyOWFiMmZhNTE1NzQ1MGM4ZGFkZGNkNTVkZDc2MTUxNDE3NWQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTUyLDExICs1MiwxMSBAQAogI2lt
cG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIldlYkNvbnRlbnRS
ZWFkZXIuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAibWFya3Vw
LmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHd0Zi9C
bG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBFZGl0b3I6
OnJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcg
KmF0dHJpYnV0ZWQKIAogU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJM
JiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7Cisg
ICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAogUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3Ry
aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbQppbmRleCBhYmZhZDhlNzM4Nzg1YWMxOTVjODVhZWFiZDVhOTYxOTMxYTVl
Njk4Li40MWVlMDVjYTY5N2EwMzc4MGY0ZTk0OTI2ODEyZmM4YmVmMTY4YTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bQpAQCAtNTgsNyArNTgsNiBAQAogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvY2tl
dFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIK
LSNpbXBvcnQgIlVSTFBhcnNlci5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJX
ZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIuaCIKQEAgLTY2LDYgKzY1LDcgQEAK
ICNpbXBvcnQgIm1hcmt1cC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRT
dHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VS
TFBhcnNlci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIkxvY2FsRGVmYXVsdFN5
c3RlbUFwcGVhcmFuY2UuaCIKQEAgLTMxMyw3ICszMTMsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogCiAgICAgICAgIGF1dG8gbmFtZSA9IGltYWdlLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjphbHRBdHRyKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgbmFtZSA9IFVSTFBhcnNlciB7IHJlc291cmNlVVJMU3RyaW5nIH0ucmVz
dWx0KCkubGFzdFBhdGhDb21wb25lbnQoKTsKKyAgICAgICAgICAgIG5hbWUgPSBVUkwoeyB9LCBy
ZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYgKG5hbWUu
aXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygibWVkaWEiKTsKIApA
QCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRh
Y2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChy
ZXNvdXJjZSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgYXV0byBuYW1lID0gVVJMUGFyc2VyIHsgcmVzb3VyY2VVUkxTdHJpbmcgfS5y
ZXN1bHQoKS5sYXN0UGF0aENvbXBvbmVudCgpOworICAgICAgICBhdXRvIG5hbWUgPSBVUkwoeyB9
LCByZXNvdXJjZVVSTFN0cmluZykubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYgKG5h
bWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9IEF0b21pY1N0cmluZygiZmlsZSIpOwog
CkBAIC01NDMsNyArNTQzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2
ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBTdHJpbmcgc2FuaXRpemVkTWFya3VwID0gc2Fu
aXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgKmZyYW1lLmRvY3VtZW50KCksICpyZXN1bHQs
IG1zb0xpc3RRdWlya3NGb3JNYXJrdXAoKSwgWyZdIChjb25zdCBTdHJpbmcmIHR5cGUpIHsKICAg
ICAgICAgcmV0dXJuIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhblNob3dNSU1FVHlwZUFzSFRN
TCh0eXBlKTsKICAgICB9KTsKLSAgICBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1
cCgqZnJhbWUuZG9jdW1lbnQoKSwgc2FuaXRpemVkTWFya3VwLCBibGFua1VSTCgpLCBEaXNhbGxv
d1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOworICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBzYW5pdGl6ZWRNYXJrdXAsIFdURjo6Ymxh
bmtVUkwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KTsKIAogICAgIGlmICgh
ZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbQppbmRleCBmMWNkNTNjOWUzMzhkMWFhYWY1MzBhOTA4MTE4ZmZlMDg4YjI4
MjRmLi40NjIyZjg2NmJkMjA2MTE4NWYzMjk1NWVlN2U3OWJlMWQ2OTJmMjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC01MiwxMSArNTIsMTEgQEAKICNpbXBv
cnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5o
IgogI2ltcG9ydCAiV2ViQ29udGVudFJlYWRlci5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0
cmFzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQg
Im1hcmt1cC5oIgogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8cGFsL3N5c3Rl
bS9Tb3VuZC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMjUzLDcgKzI1Myw3IEBAIFN0cmluZyBFZGl0b3I6OnBsYWluVGV4
dEZyb21QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgLy8g
RklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdlIGtub3cg
LVtOU1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCiAgICAgLy8gYWxsIHRoZSBz
YW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRpbmcgYW4g
TlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCi0gICAgICAgIHN0cmluZyA9IHVzZXJWaXNpYmxl
U3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworICAgICAgICBzdHJpbmcgPSBX
VEY6OnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOwogCiAg
ICAgLy8gRklYTUU6IFdURiBzaG91bGQgb2ZmZXIgYSBub24tTWFjLXNwZWNpZmljIHdheSB0byBj
b252ZXJ0IHN0cmluZyB0byBwcmVjb21wb3NlZCBmb3JtIHNvIHdlIGNhbiBkbyBpdCBmb3IgYWxs
IHBsYXRmb3Jtcy4KICAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21wb3NlZFN0
cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIEVkaXRv
cjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50
JiBpbWFnZUVsZW1lbgogICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0
ID0gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoaW1hZ2VFbGVtZW50KTsKICAgICBwYXN0ZWJvYXJk
SW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxlID0gdGl0
bGU7Ci0gICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSB1c2VyVmlzaWJs
ZVN0cmluZyhwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCk7CisgICAgcGFzdGVib2FyZEltYWdlLnVy
bC51c2VyVmlzaWJsZUZvcm0gPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRJbWFn
ZS51cmwudXJsKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1h
Z2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5
cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKaW5kZXggNjNiZjQ1ODRmYWE5MmFjZmJkOTE1ZDNkMmUxNDY4Y2Q0NGU5Y2Vj
My4uMTI0ZWE1YjFkYzQ0MGRjZWRmZDg0NDlhNmMzMzA4ZjM2NGJjYmFkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcApAQCAtNzQsMTEgKzc0LDExIEBACiAjaW5jbHVkZSAiU3R5bGVQcm9w
ZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwZWRFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVVJM
UGFyc2VyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlZpc2li
bGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTYyLDcgKzE2Miw3IEBA
IHZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50
PiYmIGZyYWdtZW50LCBXVEY6OkZ1bmN0CiAgICAgICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBh
dHRyaWJ1dGUgOiBlbGVtZW50LmF0dHJpYnV0ZXNJdGVyYXRvcigpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGZvciBzcmNzZXQuCiAgICAgICAgICAgICBpZiAoZWxl
bWVudC5hdHRyaWJ1dGVDb250YWluc1VSTChhdHRyaWJ1dGUpICYmICFhdHRyaWJ1dGUudmFsdWUo
KS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBVUkwgdXJsID0gVVJMUGFyc2VyIHsgYXR0
cmlidXRlLnZhbHVlKCkgfS5yZXN1bHQoKTsKKyAgICAgICAgICAgICAgICBVUkwgdXJsKHsgfSwg
YXR0cmlidXRlLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZW1vdmVVUkwo
dXJsKSkKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlc1RvUmVtb3ZlLmFwcGVuZCh7IGVs
ZW1lbnQsIGF0dHJpYnV0ZS5uYW1lKCkgfSk7CiAgICAgICAgICAgICB9CkBAIC0xMDI5LDcgKzEw
MjksNyBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJgogCiAgICAgZnJhZ21lbnQtPnBhcnNlSFRN
TChtYXJrdXAsIGZha2VCb2R5LnB0cigpLCBwYXJzZXJDb250ZW50UG9saWN5KTsKICAgICByZXN0
b3JlQXR0YWNobWVudEVsZW1lbnRzSW5GcmFnbWVudChmcmFnbWVudCk7Ci0gICAgaWYgKCFiYXNl
VVJMLmlzRW1wdHkoKSAmJiBiYXNlVVJMICE9IGJsYW5rVVJMKCkgJiYgYmFzZVVSTCAhPSBkb2N1
bWVudC5iYXNlVVJMKCkpCisgICAgaWYgKCFiYXNlVVJMLmlzRW1wdHkoKSAmJiBiYXNlVVJMICE9
IFdURjo6YmxhbmtVUkwoKSAmJiBiYXNlVVJMICE9IGRvY3VtZW50LmJhc2VVUkwoKSkKICAgICAg
ICAgY29tcGxldGVVUkxzKGZyYWdtZW50LnB0cigpLCBiYXNlVVJMKTsKIAogICAgIHJldHVybiBm
cmFnbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCmluZGV4IDBiODMxNGI4MTU0ZDIwODVlYTEy
ODRjNjI3MzZiOTUwNTIyOWY4MmQuLjIyNDg2Y2UyYzhhZDVlY2Q1NzRiMjgxNGQwZmJjY2ZkMjQy
Nzg3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaApAQCAtNDEsNyArNDEsNiBAQCBjbGFzcyBE
b2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRN
TEVsZW1lbnQ7Ci1jbGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNzIFF1
YWxpZmllZE5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAK
aW5kZXggNjNiMWUwZTU3NDExZDA2MzNjNDE5OGY0YWUwOTM1M2EwMzU1MTI3ZS4uNzNhMzY1MjI4
Nzk5YzE2YjlhOTg4ZDlhMTE4OWUwY2Y5MzgwZmU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtMzQsNyArMzQsNiBAQAogCiAjaW5jbHVkZSAiRmls
ZVN0cmVhbS5oIgogI2luY2x1ZGUgIkZpbGVTdHJlYW1DbGllbnQuaCIKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC00Miw2ICs0MSw3IEBACiAjaW5jbHVkZSA8d3Rm
L01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVT
dHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXgg
NGYwZTdiMjc3NzE3YTE5Y2MyNzBkZjJlOTYzYWJlZWY5M2YzZjM1My4uNjJjYWZmZTJkOThhZDFk
NWQxMGY0ZWQ2ODgxN2RhOTA0OTRlYTE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5oCkBAIC0zOCw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRmlsZVN0cmVhbUNsaWVudDsKIGNsYXNzIEZpbGVTdHJlYW07Ci1jbGFzcyBVUkw7CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIEFzeW5jRmlsZVN0cmVhbSB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5oCmluZGV4IDIwMTM5YzRjMTJhMTQ5M2UwNTM4ZGM5YWI5NTE2M2IxNDk4Y2Y5NjIuLjkw
ZDQ2NTY5OTczMDEyNThlZTg2ODI4ZTlhYjYwNzhhYzNmODlhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJCbG9iUHJvcGVydHlCYWcuaCIKICNp
bmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFu
dC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAppbmRleCBjNmRmZWU2NTUwMTUzZTJi
ZjQ4OGEyN2NjNWFlOGUyMGU5OGUwNDYxLi4xNDZjMGRiMDQ5ZDcxNTQ4ZDBmYzJkODg5ZTQ2YmI2
ZjU1NjQ5YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAKIAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9V
VUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
YlVSTC5oCmluZGV4IDM1OWVhYWY3ZjJhMjY2N2I4YjIyZjdhMzUwMzJhMTU3MWQ2NzIwYzQuLjNk
MGFlMTFjMTAzOWUzNDg0ZTBlZGY3MDA5Nzc3YmYyZWJmOWJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYlVSTC5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmgKaW5kZXggNTc1ZjBlNzZkMDlhOWQzZTU3ZjI1OGFlY2JlZjMxZjM2MGE0
OGRmMC4uZGEyZThiY2EzNTJjYTNmYzdlYzdjYjQ1NjJkNzliYmI3MjhiZjA1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmgKQEAgLTMzLDggKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBVUkw7Ci0KIGNsYXNzIEZpbGUgZmluYWwgOiBwdWJsaWMgQmxvYiB7CiBwdWJsaWM6CiAg
ICAgc3RydWN0IFByb3BlcnR5QmFnIDogQmxvYlByb3BlcnR5QmFnIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggZjNkYzZjNDc4Yzk4MDA0YTdiMTM0MGMz
MjllZDY4ODA4YjcyMThmMC4uMWY3Nzc4ZTg4OWUzOTNkN2ZiOTY5NDQzY2U4ZWJlMjEyNzRkNGEw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKQEAgLTMyLDcg
KzMyLDcgQEAKIAogI2luY2x1ZGUgIkJsb2JSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkZp
bGVFcnJvci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKaW5kZXggNDI0NmQ3ZWVhMGIwZTczYjUwOWZiYzgwZDI0
MWUxY2ZmOTYyMDljMi4uYTljNzlmZTIyOTJmODk1YjMxYzYwZjc1NjdmZmQwNDkzZmVkYzgzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgK
QEAgLTM2LDcgKzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYlBhcnQ7
Ci1jbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZy
YW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKaW5kZXggYmY5OWNh
NDY4NjQ1NjU5YjRmODEzNTUxNDhmMmE5OTJmZWQ5YjE5NC4uZGJkYmFmMzFmNzU1NzA1OTNkNzIz
ZWM4YjJiZmIxOWU2YzhhMjE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9D
YWNoZWRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaApA
QCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
LSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0hpc3RvcnlJdGVtLmgKaW5kZXggNmRjYzY0NzE2ZjAyZDk0YmRjMmIxN2RkOWQxZjE4
MDc3YWRlMTFhZC4uOGFmOThlNGM5ODJmMzliMGE2NmJkNmY2MTUyNTdlMmMwMDE2NzQwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaApAQCAtNTQsNyArNTQsNiBAQCBjbGFzcyBG
b3JtRGF0YTsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7Ci1jbGFzcyBVUkw7CiBlbnVtIGNsYXNzIFBydW5pbmdSZWFzb247CiAKIFdFQkNP
UkVfRVhQT1JUIGV4dGVybiB2b2lkICgqbm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKShIaXN0b3J5
SXRlbSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCmluZGV4IGE3N2JjZDcwNzIzZjNjZjljYTExNjgy
ZTQ0NmVkZmU4N2Q4MTM4ZjguLjBhMDhiNTk0Njg2NTczMmYyOGRhMzBmYjdmNjNjYTRkMzE0ZWE5
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgRXhjZXB0aW9uT3I8
UmVmPERPTVVSTD4+IERPTVVSTDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBET01V
UkwmIGJhc2UpCiAKIEV4Y2VwdGlvbk9yPFJlZjxET01VUkw+PiBET01VUkw6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIHVybCkKIHsKLSAgICBVUkwgYmFzZVVSTCB7IGJsYW5rVVJMKCkgfTsKKyAgICBV
UkwgYmFzZVVSTCB7IFdURjo6YmxhbmtVUkwoKSB9OwogICAgIFVSTCBjb21wbGV0ZVVSTCB7IGJh
c2VVUkwsIHVybCB9OwogICAgIGlmICghY29tcGxldGVVUkwuaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTVVSTC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAppbmRleCA1OTAy
NWMyZmI5NmYwMjk5YWQ5MTdlNjE3YjI5MTFjMzFhYjkxZDM0Li5kMzEzZDdhNDQ0ZDhlYTU1MzRm
MDAzZjQ0NTBmZGRhMGQ0NjM1MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVVSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKQEAgLTI3LDcgKzI3LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVVJMVXRpbHMuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwCmluZGV4IGVlYjY5Mjc3ZGNiMWMxOWM4ZWJkZmNhYjViOGZiNjdiMDQyYTQxNDUu
LjhjZWQwMTIyMWE1ZTVmOGFhYWZiMzEzYmM3YjM5ZDJmYmNkN2Q5MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTM4LDEwICszOCwxMCBA
QAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZW5kZXJBdHRhY2ht
ZW50LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVJMUGFyc2VyLmgi
CiAjaW5jbHVkZSA8cGFsL0ZpbGVTaXplRm9ybWF0dGVyLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQ
YXJzZXIuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlVUSVV0aWxpdGllcy5o
IgpAQCAtODgsNyArODgsNyBAQCBjb25zdCBTdHJpbmcmIEhUTUxBdHRhY2htZW50RWxlbWVudDo6
Z2V0QXR0YWNobWVudElkZW50aWZpZXIoSFRNTEltYWdlRWxlbWVudCYgaQogCiBVUkwgSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjphcmNoaXZlUmVzb3VyY2VVUkwoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyKQogewotICAgIGF1dG8gcmVzb3VyY2VVUkwgPSBVUkxQYXJzZXIoImFwcGxld2ViZGF0YTov
L2F0dGFjaG1lbnQvIl9zKS5yZXN1bHQoKTsKKyAgICBhdXRvIHJlc291cmNlVVJMID0gVVJMKHsg
fSwgImFwcGxld2ViZGF0YTovL2F0dGFjaG1lbnQvIl9zKTsKICAgICByZXNvdXJjZVVSTC5zZXRQ
YXRoKGlkZW50aWZpZXIpOwogICAgIHJldHVybiByZXNvdXJjZVVSTDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKaW5kZXggOWI5OWEzNDczMDk3MmQ0
ZGQ3OTljMDgxYTBmOThmNjM3N2FiNWFkMC4uMzA0OGI0OTBmYTUzZjNmZDQxNTFlMDIxMDQzNmM2
NGZhOTQ3MTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5jcHAKQEAgLTM3LDggKzM3LDggQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcxLDcgKzcxLDcgQEAgYm9v
bCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYgY29tcGxldGVV
UkwpIGNvbnN0CiAgICAgaWYgKGNvbXBsZXRlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpKSB7Cisg
ICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpKSB7CiAgICAgICAg
IFJlZlB0cjxEb2N1bWVudD4gY29udGVudERvYyA9IHRoaXMtPmNvbnRlbnREb2N1bWVudCgpOwog
ICAgICAgICBpZiAoY29udGVudERvYyAmJiAhU2NyaXB0Q29udHJvbGxlcjo6Y2FuQWNjZXNzRnJv
bUN1cnJlbnRPcmlnaW4oY29udGVudERvYy0+ZnJhbWUoKSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Om9wZW5V
UkwoTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1fVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgbV9VUkwgPSBibGFu
a1VSTCgpLnN0cmluZygpOworICAgICAgICBtX1VSTCA9IFdURjo6YmxhbmtVUkwoKS5zdHJpbmco
KTsKIAogICAgIFJlZlB0cjxGcmFtZT4gcGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7
CiAgICAgaWYgKCFwYXJlbnRGcmFtZSkKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxGcmFt
ZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmIHN0cikKIAogdm9pZCBIVE1M
RnJhbWVFbGVtZW50QmFzZTo6c2V0TG9jYXRpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25z
dCBTdHJpbmcmIG5ld0xvY2F0aW9uKQogewotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChz
dHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobmV3TG9jYXRpb24pKSkgeworICAgIGlm
IChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyhuZXdMb2NhdGlvbikpKSB7CiAgICAgICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgY29udGVudERvY3VtZW50KCkpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5k
ZXggNzMzN2MyMmFkMDA5Y2E3NjM3MTJkZjA0Mjg4YThmMmZhNmI0ZTdiNy4uYWM1MGQzNmUyMjI2
YjQxMmNhZjU4NGJhMTA1MGQ5YTk5YjA3YzdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3MgSWNvbjsKIGNsYXNzIElucHV0VHlw
ZTsKIGNsYXNzIExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKIGNsYXNzIFJhZGlvQnV0dG9u
R3JvdXBzOwotY2xhc3MgVVJMOwogCiBzdHJ1Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVyczsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggNTEwZjRjZmI2MzZkOWRh
MTFlMjU4ZjllZTNhNDJmZWQ2ZWZkMzZjZC4uNjgyOGY5MzQzYjU3MjQwOTVkYjYwMjE3NDI2ODc2
NTQwNzBjZGY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC0zNiw3
ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NVG9rZW5MaXN0OwogY2xh
c3MgSFRNTExpbmtFbGVtZW50OwotY2xhc3MgVVJMOwogc3RydWN0IE1lZGlhUXVlcnlQYXJzZXJD
b250ZXh0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBFdmVudFNlbmRlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGY2YzI0YjNhMTk2ZWMxMzI0
YTRiMmI5ZWU3NmIxZTE5OWUwMDI4YjQuLjBkNTI3ZjZlOWYyMjhiZTFiMzg4MWI1MGJhNWYxZjBm
MGFlYjAwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
MTcwLDggKzE3MCw4IEBACiAKIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGUgPD4KLXN0cnVjdCBM
b2dBcmd1bWVudDxXZWJDb3JlOjpVUkw+IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsKQorc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4geworICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAgewogI2lmICFMT0dfRElT
QUJMRUQKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JM
b2dnaW5nID0gNTEyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKaW5kZXggMzIxM2M0NGFkYmYyOGYyNzBiNTI2MGRjYTEzMDU1ZGU4YWE0M2Q5Yi4u
OWU1YzI3Nzc3ZDY5M2U0ZjY0YmVmMWI3MzEyNTgzOTVjNGFkMjMwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0xNTgsNyArMTU4LDcg
QEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojppc0ltYWdlVHlwZSgpCiBib29sIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OmFsbG93ZWRUb0xvYWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVy
bCkKIHsKICAgICBVUkwgY29tcGxldGVVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7
Ci0gICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRl
VVJMKSAmJiAhZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzcyhjb250ZW50RG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIFdU
Rjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVVUkwpICYmICFkb2N1bWVudCgpLnNlY3Vy
aXR5T3JpZ2luKCkuY2FuQWNjZXNzKGNvbnRlbnREb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBkb2N1bWVudCgpLmZyYW1lKCkt
PmlzVVJMQWxsb3dlZChjb21wbGV0ZVVSTCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlQml0bWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgK
aW5kZXggMjdhNDg5ZDRmNjU3YjZlNjlkYzRlOTlmOWQ0ZGM5YjY5ZDdiY2M3Ny4uMTIwMGI4Nzgx
NjQ2ZjYxYTZmNzBjNDZiOTliY2M4ZWZjZjY1YWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRt
YXAuaApAQCAtNDQsNyArNDQsNiBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNs
YXNzIFBlbmRpbmdJbWFnZUJpdG1hcDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1j
bGFzcyBVUkw7CiBzdHJ1Y3QgSW1hZ2VCaXRtYXBPcHRpb25zOwogCiBjbGFzcyBJbWFnZUJpdG1h
cCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEltYWdlQml0bWFw
PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCmluZGV4
IDdjNzczNmMzNGViY2Y2NGQ5NDU2MDNkY2Q4NjM5MzllOGRiMzdlNGMuLjEwYTJhMGQwZjUyMjRi
MDUwYWQ1YzdmNGQxZDY1NmFmZWU4M2M3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFGcmFnbWVudFVSSVBhcnNlci5oCkBAIC0yNywxNCArMjcsMTIgQEAKIAogI2lmIEVOQUJMRShW
SURFTykKIAotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBm
aW5hbCB7CiBwdWJsaWM6CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1
YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2Vy
LmNwcAppbmRleCBjZjE4NmMwYmE0MDBlMmEzYzIzMDRjYzc5ZmZhZGJhOGFmM2FhMzYxLi43M2I1
NDczNTc4ZTNiMGIzMWVhZjk1ZGE0MGMyMGFjMDk5YzA3MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUHVibGljVVJMTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5h
Z2VyLmgKaW5kZXggZTMyNjU0NWRjY2I0OWJmYTZjNWFmZjkyM2EyYzVlMGMwZmE3NzVhNC4uZTY5
ZGU0ZWQ4YzgzYmI4YThkYzRkMzY2ODYyMmNkM2ZkZDUzN2U3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9QdWJsaWNVUkxNYW5hZ2VyLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdpc3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5w
dXRUeXBlLmNwcAppbmRleCA2Y2EwYWMxYTIwMTNjZjZkNWQ4ZGM1YzBlYTAzYjIxMTc5MmYxOTVl
Li42M2JiM2NjMjYwMWEwNDNkMTQ5YzQ1YTI5ZWMxOGRhMTQwYjVhZDg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxJbnB1dFR5cGUuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTFBh
cnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAiTG9j
YWxpemVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKaW5kZXgg
YmQ3NzJjZTVmMTdhNmI4N2RjMmY0NjI1YjcxYmUwMTEwM2MzNzc0My4uODIyM2JiZDA3NTkwZGRh
Y2NlOWZkMTYwNGUzYWMwYmMwMTVmNjRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9VUkxSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaApA
QCAtMzQsNyArMzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVVJMUmVnaXN0cnk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVVJMU2VhcmNoUGFyYW1zLmNwcAppbmRleCAzMGU4NTkyNGE3ODUyMGQ2NTkyMDkxYWQyZDMz
YzA0MjBjZmVkZDQzLi40ZTdmYmFlZmRmMGE0MTZjYzY1NGFhNzNkNTliN2JlODBiNDFkMGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCkBAIC0yNiwxMyArMjYsMTMg
QEAKICNpbmNsdWRlICJVUkxTZWFyY2hQYXJhbXMuaCIKIAogI2luY2x1ZGUgIkRPTVVSTC5oIgot
I2luY2x1ZGUgIlVSTFBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBVUkxTZWFyY2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhjb25z
dCBTdHJpbmcmIGluaXQsIERPTVVSTCogYXNzb2NpYXRlZFVSTCkKICAgICA6IG1fYXNzb2NpYXRl
ZFVSTChhc3NvY2lhdGVkVVJMKQotICAgICwgbV9wYWlycyhpbml0LnN0YXJ0c1dpdGgoJz8nKSA/
IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KGluaXQpLnN1YnN0cmlu
ZygxKSkgOiBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oaW5pdCkpCisgICAgLCBtX3Bh
aXJzKGluaXQuc3RhcnRzV2l0aCgnPycpID8gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2Rl
ZEZvcm0oU3RyaW5nVmlldyhpbml0KS5zdWJzdHJpbmcoMSkpIDogV1RGOjpVUkxQYXJzZXI6OnBh
cnNlVVJMRW5jb2RlZEZvcm0oaW5pdCkpCiB7CiB9CiAKQEAgLTEzMywyMCArMTMzLDIwIEBAIHZv
aWQgVVJMU2VhcmNoUGFyYW1zOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lKQogCiBTdHJpbmcg
VVJMU2VhcmNoUGFyYW1zOjp0b1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTFBhcnNl
cjo6c2VyaWFsaXplKG1fcGFpcnMpOworICAgIHJldHVybiBXVEY6OlVSTFBhcnNlcjo6c2VyaWFs
aXplKG1fcGFpcnMpOwogfQogCiB2b2lkIFVSTFNlYXJjaFBhcmFtczo6dXBkYXRlVVJMKCkKIHsK
ICAgICBpZiAobV9hc3NvY2lhdGVkVVJMKQotICAgICAgICBtX2Fzc29jaWF0ZWRVUkwtPnNldFF1
ZXJ5KFVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpKTsKKyAgICAgICAgbV9hc3NvY2lhdGVk
VVJMLT5zZXRRdWVyeShXVEY6OlVSTFBhcnNlcjo6c2VyaWFsaXplKG1fcGFpcnMpKTsKIH0KIAog
dm9pZCBVUkxTZWFyY2hQYXJhbXM6OnVwZGF0ZUZyb21Bc3NvY2lhdGVkVVJMKCkKIHsKICAgICBB
U1NFUlQobV9hc3NvY2lhdGVkVVJMKTsKICAgICBTdHJpbmcgc2VhcmNoID0gbV9hc3NvY2lhdGVk
VVJMLT5zZWFyY2goKTsKLSAgICBtX3BhaXJzID0gc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSA/IFVS
TFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3KHNlYXJjaCkuc3Vic3RyaW5n
KDEpKSA6IFVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShzZWFyY2gpOworICAgIG1fcGFp
cnMgPSBzZWFyY2guc3RhcnRzV2l0aCgnPycpID8gV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5j
b2RlZEZvcm0oU3RyaW5nVmlldyhzZWFyY2gpLnN1YnN0cmluZygxKSkgOiBXVEY6OlVSTFBhcnNl
cjo6cGFyc2VVUkxFbmNvZGVkRm9ybShzZWFyY2gpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFdURjo6
S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gVVJMU2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6
bmV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKaW5kZXggYTA3YzA4MTRmMTFlMTcxMTg0NTAzZTZh
YTZhYWFkNmMwNDdkNDc1YS4uNjU2YWJmYmRhMGJkYmNlMzkzYjg4Y2M1MjM0NGI5Y2Q2MTZlNzZl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxVdGlscy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgVVJMVXRp
bHM8VD46OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgICAgIC8vIHJlcXVp
cmVzIHNldHRpbmcgdGhlIHBvcnQgdG8gIjAiIGlmIGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcu
CiAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFy
YXRvciArIDEpICsgJzAnKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChpc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICAgICAg
aWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkK
ICAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNl
cGFyYXRvcikpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0
QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgcG9ydEVuZCkpOwpAQCAtMjM1LDcgKzIzNSw3IEBA
IHZvaWQgVVJMVXRpbHM8VD46OnNldFBvcnQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAvLyBy
ZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBpdCBpcyBzZXQgdG8gZW1wdHkgc3Ry
aW5nLgogICAgIC8vIEZJWE1FOiBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8gZG9lc24ndCBh
cHBlYXIgdG8gcmVxdWlyZSB0aGlzOyB0ZXN0IHdoYXQgYnJvd3NlcnMgZG8KICAgICB1bnNpZ25l
ZCBwb3J0ID0gdmFsdWUudG9VSW50KCk7Ci0gICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bChwb3J0LCB1cmwucHJvdG9jb2woKSkpCisgICAgaWYgKFdURjo6aXNEZWZhdWx0UG9ydEZvclBy
b3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsK
ICAgICBlbHNlCiAgICAgICAgIHVybC5zZXRQb3J0KHBvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAzMzYx
NDM4ZjFlZjIzMzY5OWQwZWRhMzUyMWMwNTZkZTY3YmFlZDI1Li43MDRiNDFmZmJlNzE3OTdlZjg2
NWRkOTcyYzllNTE1OTFhNmRmZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXAuaCIKICNpbmNsdWRlICJPZmZz
Y3JlZW5DYW52YXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmlu
ZGV4IGZmNDc5ZGVhMDU0Mzk4NjkwOTU4M2Q5NTRmYzdmNjYxOTM0ZWNkYWEuLjdhZjQzZmM4MTRj
OWRkODE0ZDFjMWM0NWY0ZWQ2YWM4Y2ExOTAzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTM4LDcgKzM4LDYgQEAg
Y2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3Mg
SFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEltYWdlQml0bWFwOwotY2xhc3MgVVJMOwogY2xhc3Mg
V2ViR0xPYmplY3Q7CiAKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2Ny
aXB0V3JhcHBhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5jcHAKaW5kZXggNjc0ZGViYzY5OGRiOWI3MDAyZWI0MDUyMzM1YjllNmRiODFiNjRh
My4uNDIzMDkyNjhlOWJkZDA5NWFjOWJmMTZhZDlmNzMzMmEzNzFjZDViNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTI3LDkgKzI3
LDkgQEAKIAogI2luY2x1ZGUgIkRlY2ltYWwuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgi
Ci0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ci5jcHAKaW5kZXggMWMyZTRkOWE1ZTkyN2ZlYzc1YjA5NjJkZGRkYjY2ZGRmOGI0ZmZhMS4uZDYz
NTc0N2MxZjA2MzJhZTM0NWQ2NWRkMWE1ZTUzMGZlZTcwYWRlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgYm9v
bCBpc1NlbWljb2xvblNlcGFyYXRlZEF0dHJpYnV0ZShjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0
ZSYgYXR0cmlidXRlKQogc3RhdGljIGJvb2wgc2VtaWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWlu
c0phdmFTY3JpcHRVUkwoU3RyaW5nVmlldyBzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZSkKIHsKICAg
ICBmb3IgKGF1dG8gdmFsdWUgOiBzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZS5zcGxpdCgnOycpKSB7
Ci0gICAgICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh2YWx1ZSkpCisgICAgICAgIGlmIChX
VEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC00NDAsOSArNDQwLDkgQEAgYm9vbCBYU1NB
dWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVl
c3QpCiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKG1fd2FzU2Ny
aXB0VGFnRm91bmRJblJlcXVlc3QpIHsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VB
dHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCks
IFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2Ny
aXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBTVkdOYW1lczo6aHJlZkF0
dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0
ZSk7Ci0gICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChy
ZXF1ZXN0LCBYTGlua05hbWVzOjpocmVmQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNh
dGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0g
ZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNyY0F0dHIsIFdURjo6YmxhbmtVUkwo
KS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKKyAgICAgICAg
ZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIFNWR05h
bWVzOjpocmVmQXR0ciwgV1RGOjpibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6
OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJp
YnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIFdURjo6YmxhbmtV
UkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKICAgICB9
CiAKICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHQ7CkBAIC00NTUsNyArNDU1LDcgQEAgYm9vbCBY
U1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJl
cXVlc3QpCiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29u
dGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRTbmlwcGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkp
IHsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJl
cXVlc3QsIGRhdGFBdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNy
Y0xpa2VBdHRyaWJ1dGUpOworICAgICAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0
ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZGF0YUF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwg
VHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKICAgICAgICAgZGlkQmxvY2tTY3Jp
cHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHR5cGVBdHRyKTsKICAgICAg
ICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGNs
YXNzaWRBdHRyKTsKICAgICB9CkBAIC00NzUsNyArNDc1LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpm
aWx0ZXJQYXJhbVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBp
ZiAoIUhUTUxQYXJhbUVsZW1lbnQ6OmlzVVJMUGFyYW1ldGVyKFN0cmluZyhuYW1lQXR0cmlidXRl
LnZhbHVlKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJp
YnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVBdHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBU
cnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJp
YnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgdmFsdWVBdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5n
KCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVk
aXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3Qp
CkBAIC00ODYsNyArNDg2LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKGNv
bnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICBib29sIGRpZEJsb2NrU2NyaXB0
ID0gZmFsc2U7CiAgICAgaWYgKGlzQ29udGFpbmVkSW5SZXF1ZXN0KGNhbm9uaWNhbGl6ZWRTbmlw
cGV0Rm9yVGFnTmFtZShyZXF1ZXN0KSkpIHsKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGNvZGVBdHRyLCBTdHJpbmcoKSwgVHJ1bmNh
dGlvblN0eWxlOjpTcmNMaWtlQXR0cmlidXRlKTsKLSAgICAgICAgZGlkQmxvY2tTY3JpcHQgfD0g
ZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3Ry
aW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0ZSk7CisgICAgICAgIGRpZEJs
b2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBzcmNBdHRyLCBX
VEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6U3JjTGlrZUF0dHJpYnV0
ZSk7CiAgICAgICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChy
ZXF1ZXN0LCB0eXBlQXR0cik7CiAgICAgfQogICAgIHJldHVybiBkaWRCbG9ja1NjcmlwdDsKQEAg
LTUzOCw3ICs1MzgsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbihjb25zdCBG
aWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3Qu
dG9rZW4sIGZvcm1UYWcpKTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQo
cmVxdWVzdCwgYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgcmV0dXJuIGVy
YXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBhY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJM
KCkuc3RyaW5nKCkpOwogfQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlcklucHV0VG9rZW4oY29u
c3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNTQ2LDcgKzU0Niw3IEBAIGJvb2wg
WFNTQXVkaXRvcjo6ZmlsdGVySW5wdXRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJl
cXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3Rh
cnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGlucHV0VGFnKSk7CiAK
LSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGZvcm1hY3Rpb25B
dHRyLCBibGFua1VSTCgpLnN0cmluZygpLCBUcnVuY2F0aW9uU3R5bGU6OlNyY0xpa2VBdHRyaWJ1
dGUpOworICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgZm9ybWFj
dGlvbkF0dHIsIFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNM
aWtlQXR0cmlidXRlKTsKIH0KIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tlbihj
b25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC01NTQsNyArNTU0LDcgQEAgYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJCdXR0b25Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3Qm
IHJlcXVlc3QpCiAgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGJ1dHRvblRhZykp
OwogCi0gICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBmb3JtYWN0
aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgVHJ1bmNhdGlvblN0eWxlOjpTcmNMaWtlQXR0
cmlidXRlKTsKKyAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGZv
cm1hY3Rpb25BdHRyLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIFRydW5jYXRpb25TdHlsZTo6
U3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZXJhc2VEYW5nZXJvdXNB
dHRyaWJ1dGVzSWZJbmplY3RlZChjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBA
IC01NjcsNyArNTY3LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0
ZXNJZkluamVjdGVkKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmUKICAgICAgICAgYm9vbCBp
c0lubGluZUV2ZW50SGFuZGxlciA9IGlzTmFtZU9mSW5saW5lRXZlbnRIYW5kbGVyKGF0dHJpYnV0
ZS5uYW1lKTsKICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBkaWRu
J3QgY3JlYXRlIGEgbmV3IFN0cmluZyBmb3IgZXZlcnkgYXR0cmlidXRlIGluIHRoZSBkb2N1bWVu
dC4KICAgICAgICAgU3RyaW5nIHN0cmlwcGVkVmFsdWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoU3RyaW5nKGF0dHJpYnV0ZS52YWx1ZSkpOwotICAgICAgICBib29sIHZhbHVl
Q29udGFpbnNKYXZhU2NyaXB0VVJMID0gKCFpc0lubGluZUV2ZW50SGFuZGxlciAmJiBwcm90b2Nv
bElzSmF2YVNjcmlwdChzdHJpcHBlZFZhbHVlKSkgfHwgKGlzU2VtaWNvbG9uU2VwYXJhdGVkQXR0
cmlidXRlKGF0dHJpYnV0ZSkgJiYgc2VtaWNvbG9uU2VwYXJhdGVkVmFsdWVDb250YWluc0phdmFT
Y3JpcHRVUkwoc3RyaXBwZWRWYWx1ZSkpOworICAgICAgICBib29sIHZhbHVlQ29udGFpbnNKYXZh
U2NyaXB0VVJMID0gKCFpc0lubGluZUV2ZW50SGFuZGxlciAmJiBXVEY6OnByb3RvY29sSXNKYXZh
U2NyaXB0KHN0cmlwcGVkVmFsdWUpKSB8fCAoaXNTZW1pY29sb25TZXBhcmF0ZWRBdHRyaWJ1dGUo
YXR0cmlidXRlKSAmJiBzZW1pY29sb25TZXBhcmF0ZWRWYWx1ZUNvbnRhaW5zSmF2YVNjcmlwdFVS
TChzdHJpcHBlZFZhbHVlKSk7CiAgICAgICAgIGlmICghaXNJbmxpbmVFdmVudEhhbmRsZXIgJiYg
IXZhbHVlQ29udGFpbnNKYXZhU2NyaXB0VVJMKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGlmICghaXNDb250YWluZWRJblJlcXVlc3QoY2Fub25pY2FsaXplKHNuaXBwZXRGcm9tQXR0
cmlidXRlKHJlcXVlc3QsIGF0dHJpYnV0ZSksIFRydW5jYXRpb25TdHlsZTo6U2NyaXB0TGlrZUF0
dHJpYnV0ZSkpKQpAQCAtNzMyLDcgKzczMiw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6aXNMaWtlbHlT
YWZlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgLy8gR2l2ZSBlbXB0eSBVUkxzIGFu
ZCBhYm91dDpibGFuayBhIHBhc3MuIE1ha2luZyBhIHJlc291cmNlVVJMIGZyb20gYW4KICAgICAv
LyBlbXB0eSBzdHJpbmcgYmVsb3cgd2lsbCBsaWtlbHkgbGF0ZXIgZmFpbCB0aGUgIm5vIHF1ZXJ5
IGFyZ3MgdGVzdCIgYXMKICAgICAvLyBpdCBpbmhlcml0cyB0aGUgZG9jdW1lbnQncyBxdWVyeSBh
cmdzLgotICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVybCA9PSBibGFua1VSTCgpLnN0cmluZygp
KQorICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVybCA9PSBXVEY6OmJsYW5rVVJMKCkuc3RyaW5n
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgdGhlIHJlc291cmNlIGlzIGxv
YWRlZCBmcm9tIHRoZSBzYW1lIGhvc3QgYXMgdGhlIGVuY2xvc2luZyBwYWdlLCBpdCdzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgKaW5kZXggMzhlYjA1NTNjOTNhODliNTNm
ZDMyODlkZTQ4ODQ4OTNhZTBmZTBiOS4uNmNlYjg0MzhmNzRiNjdjYzEwYzlkM2RmYmZkZTJjNmQ4
ZWIyYzQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaApAQCAtMjcs
NyArMjcsNyBAQAogCiAjaW5jbHVkZSAiSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNl
cnMuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAi
U3VmZml4VHJlZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCmluZGV4IDY3YTMyZWQ5MzBk
N2Q5ZGQ0ZGFjNDA4OTIyMGJkZjNmMmFkNzZlODcuLjYwNTE1OWIyZmFmYTRjZjg3MWFlNjU2ZjEw
YWY0M2YwMDFlOTNmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hT
U0F1ZGl0b3JEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3JEZWxlZ2F0ZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDlmOTMyOTRiNjQy
M2Q4NjFiZWM3ODJjOTBhYzljYjU3ZDM4MmVlYWMuLjg3NGYzODRjM2EzZjdjMTRjYzRhYzM2YTJh
MWYwOGE4YzU5ZWM4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OmtpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzaG91bGRQcmVw
ZW5kVG9LaWwKIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om9wZW5Jbk5ld1RhYihjb25z
dCBTdHJpbmcmIHVybCkKIHsKLSAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0phdmFTY3JpcHQo
dXJsKSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAobV9jbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNWQyZmIzZDU2MmI2MGFiZjQ1
MGQwZmEyYTRmMDNhYTBlZjk0ZDU4Mi4uYjlhNDJlNmZjMDk4YjYzNGJkOGIzOGE3MDJlNGQ4Mjk1
Nzk3Njc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaApAQCAtODgsNyArODgsNiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFkb3dSb290OwogY2xhc3Mg
VGltZXJCYXNlOwotY2xhc3MgVVJMOwogI2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJv
Z3JhbTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDEyYTRlNjJiZjFmYWZkMzA4YmNl
NWUwMjMyMTJiYzU5M2JmNmQ5OGYuLjIyMzA5OTNkMjMyZGRkNTU0NzJlNmQ5YzgxODUxMDBlODg1
MDU5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAKICNpbmNsdWRlICJT
dWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgK
aW5kZXggNTIzOTQyMmEwMmI3ZjhiNTkxNmE1NTE1OWVlYjlkNDQzMDMwYzVkNy4uNjU3MzVmZTIw
OTQ3NjI2OWRhZjNhZDJjYjRmZDlmMzI2NjRkYWFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC01OCw3
ICs1OCw2IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7Ci1jbGFz
cyBVUkw7CiBjbGFzcyBXZWJTb2NrZXQ7CiAKIHN0cnVjdCBXZWJTb2NrZXRGcmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5o
CmluZGV4IGI0MDc2MzVjNDc5NmI5M2I2ZjdmNzg1Y2EwMDg5OTJjNTAyYjAwZTQuLmUxYTFkYTk5
ZjI0NDg3OWVlMzExNzVhYzMzMTQwMTcwMjQ1YTFlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNDksNyArNDks
NiBAQCBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9i
amVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIAogdHlwZWRlZiBTdHJpbmcg
RXJyb3JTdHJpbmc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRleCA3Mjg4Y2ZmZTRjZjJlOGZlYmViMGM2MTBk
NDZiN2VjYWZiYzY1ZjRkLi41ZTA0MGM5NTRkNGI1MTRhMTQ5MDNjMDcyMDcwYmVjZGUwNjBjYmQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvcldv
cmtlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFBhZ2U7Ci1jbGFzcyBVUkw7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIu
aAppbmRleCA4YjY0MzFhYjQyMmYyY2I2Yzk0OGQ4Y2Y4ZWJiNTUxMTcxMTdkZGJhLi4xYjBmNzYw
ZDJlY2ViZDVjMjhlZjVjMmVjNDJlZGExMmYwM2YzYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKQEAgLTMwLDggKzMwLDggQEAK
ICNpbmNsdWRlICJBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgK
aW5kZXggNWZhNzA1ZDhhODVmZjE1ODY4OTA2NWZjOGJjZDg4YjNmYzk4YjRlNC4uYjliOWYzNzQ5
NzQzZWQ0OGY3MzhhM2ZkOGU3MmE2OWE0ZDAwOWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVK
YXIuaApAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1
bWVudDsKLWNsYXNzIFVSTDsKIHN0cnVjdCBDb29raWU7CiBzdHJ1Y3QgQ29va2llUmVxdWVzdEhl
YWRlckZpZWxkUHJveHk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2wuaAppbmRleCBkMmIwOWJkNWRiNTY3NmMwMWFiZjgyM2QzZjA3MjJhNzcw
ZWE1NDBiLi4yYWYzZDRhMWM1MjA5MTI5M2RlMWM0ODNhMmZjMTczYWM2NmVhMjc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCkBAIC00
MCw3ICs0MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBV
Ukw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oCmluZGV4
IGRjMDcxMzBhMWIxNDY1M2JkMWRmNWJlZWU5ODgwOWUzYjcyZWZiZTMuLjk2NWRlNmY4YTA3YmRj
NzhjMDhlMGYxYzJlNzIxOWUxZWRhNDA0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaApAQCAtMjcsOSArMjcs
OSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5o
IgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDJjMzIwYWU1MWJhNDlmNzYwZWRiYzE2
YTNjOGVmMDhiYzI5YjY4YTEuLmY2ZmZiMTNmZjU5N2VlMjQyMTFmMWQ0OWYxNjBiYmJiN2I4ZGRk
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNjM2LDcg
KzYzNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAgICAgICAgIHN3aXRjaCAoc2hvdWxk
Q29udGludWUpIHsKICAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbjoK
ICAgICAgICAgICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2Fy
ZCB0byBhYm91dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sg
dG8gcmVzdW1lLgotICAgICAgICAgICAgcmVxdWVzdCA9IHsgYmxhbmtVUkwoKSB9OworICAgICAg
ICAgICAgcmVxdWVzdCA9IHsgV1RGOjpibGFua1VSTCgpIH07CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Tm86CiAgICAgICAgICAgICBzdG9wTG9hZGlu
Z0ZvclBvbGljeUNoYW5nZSgpOwpAQCAtMTY4Miw3ICsxNjgyLDcgQEAgYm9vbCBEb2N1bWVudExv
YWRlcjo6bWF5YmVMb2FkRW1wdHkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
bV9yZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSAmJiAhZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5l
KCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKSB7Ci0gICAgICAgIG1fcmVxdWVzdC5z
ZXRVUkwoYmxhbmtVUkwoKSk7CisgICAgICAgIG1fcmVxdWVzdC5zZXRVUkwoV1RGOjpibGFua1VS
TCgpKTsKICAgICAgICAgaWYgKGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKQogICAgICAgICAgICAg
ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlzcGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZWMzYWNh
YmJjZTFlNDdiYTY3YTQzMjZkZmJjNjI1NjQwY2UxNjJmMi4uYTYyZmY0NDI4YjRjMDBjNzQ0MmMx
NzM3ZGJmMGZjMDgxNGIwZWM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGNsaWVudFJlZGlyZWN0
RGVzdGluYXRpb25Gb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gdXJsRm9ySGlzdG9yeSgpOyB9
CiAgICAgdm9pZCBzZXRDbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoY29uc3QgU3RyaW5n
JiBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpIHsgbV9jbGllbnRSZWRpcmVjdFNvdXJj
ZUZvckhpc3RvcnkgPSBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7IH0KICAgICAKLSAg
ICBTdHJpbmcgc2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4g
KHVybEZvckhpc3RvcnkoKSA9PSB1cmwoKSB8fCB1cmwoKSA9PSBibGFua1VSTCgpKSA/IFN0cmlu
ZygpIDogdXJsRm9ySGlzdG9yeSgpLnN0cmluZygpOyB9IC8vIG51bGwgaWYgbm8gc2VydmVyIHJl
ZGlyZWN0IG9jY3VycmVkLgorICAgIFN0cmluZyBzZXJ2ZXJSZWRpcmVjdFNvdXJjZUZvckhpc3Rv
cnkoKSBjb25zdCB7IHJldHVybiAodXJsRm9ySGlzdG9yeSgpID09IHVybCgpIHx8IHVybCgpID09
IFdURjo6YmxhbmtVUkwoKSkgPyBTdHJpbmcoKSA6IHVybEZvckhpc3RvcnkoKS5zdHJpbmcoKTsg
fSAvLyBudWxsIGlmIG5vIHNlcnZlciByZWRpcmVjdCBvY2N1cnJlZC4KICAgICBTdHJpbmcgc2Vy
dmVyUmVkaXJlY3REZXN0aW5hdGlvbkZvckhpc3RvcnkoKSBjb25zdCB7IHJldHVybiB1cmwoKTsg
fQogCiAgICAgYm9vbCBkaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnkoKSBjb25zdCB7IHJldHVy
biBtX2RpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRXcml0ZXIuaAppbmRleCAzODVmYjY0MDdiYTQxOWJiYjg2NjdjYmM1MDk5N2MxYjBkNGJm
MjE0Li4zMDQ4YzU5ZTU3NTEzN2Q4NWUwYTk5Y2U5MmM1MGUzZGU3YmFmNjRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAppbmRleCA0Y2RmNDhiNzdjNmQwNWUyZTY1NTc5YTQz
MjE0ODMwOGQ4NDhlYmM5Li5mOWFjY2YxNzIxNWJiMDZhNmY4OTY2Y2YwMjE3OTliZWQ1OGUzZDEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaApAQCAtMzIsNyArMzIsNyBA
QAogCiAjaW5jbHVkZSAiRm9ybVN0YXRlLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5o
IgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBiMGQyOGE5
MTdlMDQ3ZGU2ZjY1MjIwYWM3ZDRhNTAwZTJlYjEyYWMzLi5jMTQ1ODBmYTI1M2U5ZTRlMjgxYTdl
OTkzOThiNzEzYjMzYjY2YTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
QEAgLTExOSwxMyArMTE5LDEzIEBACiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1
cmVzLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlIDxkb20vU2Ny
aXB0RGlzYWxsb3dlZFNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC00MjMs
NyArNDIzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShSZWY8Rm9ybVN1Ym1pc3Np
b24+JiYgc3VibWlzc2lvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwcm90
b2NvbElzSmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKKyAgICBpZiAoV1RGOjpw
cm90b2NvbElzSmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpIHsKICAgICAgICAgaWYg
KCFtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Zvcm1B
Y3Rpb24oVVJMKHN1Ym1pc3Npb24tPmFjdGlvbigpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7CkBAIC03MDEs
NyArNzAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIGlm
ICghcGFyc2VIVFRQUmVmcmVzaChkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmh0dHBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6UmVmcmVzaCksIGRlbGF5LCB1cmxTdHJpbmcpKQogICAgICAg
ICByZXR1cm47CiAgICAgYXV0byBjb21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8g
ZG9jdW1lbnQudXJsKCkgOiBkb2N1bWVudC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwotICAgIGlm
ICghcHJvdG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKKyAgICBpZiAoIVdURjo6cHJv
dG9jb2xJc0phdmFTY3JpcHQoY29tcGxldGVkVVJMKSkKICAgICAgICAgbV9mcmFtZS5uYXZpZ2F0
aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkb2N1bWVudCwgZGVsYXksIGNvbXBsZXRl
ZFVSTCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJl
ZnJlc2ggIiArIGRvY3VtZW50LnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
ICsgIiB0byBhIGphdmFzY3JpcHQ6IFVSTCI7CkBAIC0xNTU4LDcgKzE1NTgsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IEZyYW1lTG9hZFR5cGUgdAogCiAgICAgLy8gT25seSB0aGUgZmlyc3QgaWZyYW1lIG5hdmlnYXRp
b24gb3IgdGhlIGZpcnN0IGlmcmFtZSBuYXZpZ2F0aW9uIGFmdGVyIGFib3V0OmJsYW5rIHNob3Vs
ZCBiZSByZXBvcnRlZC4KICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvcmVzb3VyY2UtdGlt
aW5nLTIvI3Jlc291cmNlcy1pbmNsdWRlZC1pbi10aGUtcGVyZm9ybWFuY2VyZXNvdXJjZXRpbWlu
Zy1pbnRlcmZhY2UKLSAgICBpZiAobV9zaG91bGRSZXBvcnRSZXNvdXJjZVRpbWluZ1RvUGFyZW50
RnJhbWUgJiYgIW1fcHJldmlvdXNVUkwuaXNOdWxsKCkgJiYgbV9wcmV2aW91c1VSTCAhPSBibGFu
a1VSTCgpKQorICAgIGlmIChtX3Nob3VsZFJlcG9ydFJlc291cmNlVGltaW5nVG9QYXJlbnRGcmFt
ZSAmJiAhbV9wcmV2aW91c1VSTC5pc051bGwoKSAmJiBtX3ByZXZpb3VzVVJMICE9IFdURjo6Ymxh
bmtVUkwoKSkKICAgICAgICAgbV9zaG91bGRSZXBvcnRSZXNvdXJjZVRpbWluZ1RvUGFyZW50RnJh
bWUgPSBmYWxzZTsKIAogICAgIC8vIExvZyBtYWluIGZyYW1lIG5hdmlnYXRpb24gdHlwZXMuCkBA
IC0zMzc1LDcgKzMzNzUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5h
dmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICAgICAg
Ly8gRm9yIGV4YW1wbGUsIHVzaW5nIGEgQmFjay9Gb3J3YXJkIGxvYWQgdG8gbG9hZCBhYm91dCBi
bGFuayB3b3VsZCBjYXVzZSB0aGUgY3VycmVudCBIaXN0b3J5SXRlbSdzIHVybCB0byBiZQogICAg
ICAgICAgICAgLy8gb3ZlcndyaXR0ZW4gd2l0aCAnYWJvdXQ6YmxhbmsnLCB3aGljaCB3ZSBkbyBu
b3Qgd2FudC4KICAgICAgICAgICAgIG1fbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpTdGFuZGFy
ZDsKLSAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+d2lsbENvbnRpbnVl
TWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoeyBibGFua1VSTCgpIH0pOworICAgICAgICAg
ICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT53aWxsQ29udGludWVNYWluUmVzb3VyY2VM
b2FkQWZ0ZXJSZWRpcmVjdCh7IFdURjo6YmxhbmtVUkwoKSB9KTsKICAgICAgICAgfQogCiAgICAg
ICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNl
KHNob3VsZENvbnRpbnVlKTsKQEAgLTM5MjcsNyArMzkyNyw3IEBAIFJlZlB0cjxGcmFtZT4gY3Jl
YXRlV2luZG93KEZyYW1lJiBvcGVuZXJGcmFtZSwgRnJhbWUmIGxvb2t1cEZyYW1lLCBGcmFtZUxv
YWRSZXF1CiAgICAgY3JlYXRlZCA9IGZhbHNlOwogCiAgICAgLy8gRklYTUU6IFByb3ZpZGUgbGlu
ZSBudW1iZXIgaW5mb3JtYXRpb24gd2l0aCByZXNwZWN0IHRvIHRoZSBvcGVuZXIncyBkb2N1bWVu
dC4KLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS51cmwoKSkgJiYgIW9wZW5lckZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5hbGxvd0phdmFTY3JpcHRVUkxzKG9wZW5lckZyYW1lLmRvY3VtZW50KCktPnVybCgpLCB7
IH0pKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCkpICYmICFvcGVuZXJGcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhvcGVuZXJGcmFtZS5kb2N1bWVudCgpLT51
cmwoKSwgeyB9KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXJlcXVlc3Qu
ZnJhbWVOYW1lKCkuaXNFbXB0eSgpICYmICFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlcXVlc3Qu
ZnJhbWVOYW1lKCksICJfYmxhbmsiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCA5OWMzODJhNjY4NjI0MTlkNjJhNDNhODFiNmRjZDQwYjZjM2RhMDIx
Li42NzlkNzczYzFkOWUzZjQ0OTVhYjJkY2UwNjMzZWE0MjcwMDI0OTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTAwLDcgKzEwMCw2IEBAIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwotY2xhc3MgVVJMOwogY2xhc3MgV2lkZ2V0Owog
CiBlbnVtIGNsYXNzIExvY2tCYWNrRm9yd2FyZExpc3QgOiBib29sOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggNzZjOTRiMjRmZWI4YmVhMmYxMGQ4
ZDg2YjA0N2UwODBlMmVhNTU0ZS4uNWYzOGNkYTY5MTM3ZTdlMWJlYTY2NTg3OTRhMDEyOWUwZTky
ZGZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBA
IC02MTMsNyArNjEzLDcgQEAgYm9vbCBIaXN0b3J5Q29udHJvbGxlcjo6Y3VycmVudEl0ZW1TaG91
bGRCZVJlcGxhY2VkKCkgY29uc3QKICAgICAvLyAgIklmIHRoZSBicm93c2luZyBjb250ZXh0J3Mg
c2Vzc2lvbiBoaXN0b3J5IGNvbnRhaW5zIG9ubHkgb25lIERvY3VtZW50LAogICAgIC8vICAgYW5k
IHRoYXQgd2FzIHRoZSBhYm91dDpibGFuayBEb2N1bWVudCBjcmVhdGVkIHdoZW4gdGhlIGJyb3dz
aW5nIGNvbnRleHQKICAgICAvLyAgIHdhcyBjcmVhdGVkLCB0aGVuIHRoZSBuYXZpZ2F0aW9uIG11
c3QgYmUgZG9uZSB3aXRoIHJlcGxhY2VtZW50IGVuYWJsZWQuIgotICAgIHJldHVybiBtX2N1cnJl
bnRJdGVtICYmICFtX3ByZXZpb3VzSXRlbSAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fY3Vy
cmVudEl0ZW0tPnVybFN0cmluZygpLCBibGFua1VSTCgpKTsKKyAgICByZXR1cm4gbV9jdXJyZW50
SXRlbSAmJiAhbV9wcmV2aW91c0l0ZW0gJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2N1cnJl
bnRJdGVtLT51cmxTdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKTsKIH0KIAogdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6Y2xlYXJQcmV2aW91c0l0ZW0oKQpAQCAtNjUyLDkgKzY1Miw5IEBAIHZvaWQg
SGlzdG9yeUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogICAg
IC8vIExhdGVyIHdlIG1heSB3YW50IHRvIGxlYXJuIHRvIGxpdmUgd2l0aCBuaWwgZm9yIFVSTC4K
ICAgICAvLyBTZWUgYnVnIDMzNjgyMzYgYW5kIHJlbGF0ZWQgYnVncyBmb3IgbW9yZSBpbmZvcm1h
dGlvbi4KICAgICBpZiAodXJsLmlzRW1wdHkoKSkgCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7
CisgICAgICAgIHVybCA9IFdURjo6YmxhbmtVUkwoKTsKICAgICBpZiAob3JpZ2luYWxVUkwuaXNF
bXB0eSgpKQotICAgICAgICBvcmlnaW5hbFVSTCA9IGJsYW5rVVJMKCk7CisgICAgICAgIG9yaWdp
bmFsVVJMID0gV1RGOjpibGFua1VSTCgpOwogICAgIAogICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24g
dGl0bGUgPSBkb2N1bWVudExvYWRlci0+dGl0bGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmgKaW5kZXggMDFkMWVmYzMxNWE1YjAyZDA2OTllOWFjNDVkZmQxMzY4NzhmNGFiMS4uNTRk
NzIyMzEwZDhkZmY5MjFmMWU5ZGUwNTQ1YmQ5ZTFjNjIwOTQ3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlci5oCkBAIC00MSw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIERvY3VtZW50OwotY2xhc3MgVVJMOwogY2xhc3MgTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVu
dDsKIAogc3RydWN0IExpbmtSZWxBdHRyaWJ1dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTG9hZFRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRUaW1pbmcu
aAppbmRleCA3M2Y5ZWY5NGFmZDYyNTVkNWEzZjU3NDU4MmQzMGE2NGYyMWQxNDY0Li5mZWE3YzQx
ZmNlNjAyNTI2ZTM2YWE4ZWRiNmVhYjQ2NTY5ODU4YzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTG9hZFRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
VGltaW5nLmgKQEAgLTI1LDEzICsyNSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRl
IDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0K
IGNsYXNzIExvYWRUaW1pbmcgewogcHVibGljOgogICAgIFNlY29uZHMgc2Vjb25kc1NpbmNlU3Rh
cnRUaW1lKE1vbm90b25pY1RpbWUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3Ry
YXRlZ3kuaAppbmRleCA1OTY3ODJjNjU3Y2FjNTA4MmNhZmUxY2U0YjFjMTZmZmI5YTY4ZDRkLi4y
ODVlNjgwOWNlNDVlMjIxMjQ0NDY5ZmY5NTVhZTU1ZWZkZWI1MTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNiBAQCBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTdWJyZXNvdXJjZUxvYWRlcjsKLWNsYXNzIFVSTDsKIAogc3RydWN0IEZldGNoT3B0aW9uczsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCmluZGV4
IDA1MGNiNzllYTY1NzdkNTNhMDMzNTIwNmJkNDYwZWE0NDczZjIzNzcuLmZhZGUwMWI3YzFkMGJl
Yzg0NjM2N2ZmNWE2MjdkOTNkZjFmMDlhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIE1peGVkQ29u
dGVudENoZWNrZXI6OmNoZWNrRm9ybUZvck1peGVkQ29udGVudChTZWN1cml0eU9yaWdpbiYgc2Vj
dXJpdHlPcmlnaQogewogICAgIC8vIFVuY29uZGl0aW9uYWxseSBhbGxvdyBqYXZhc2NyaXB0OiBV
UkxzIGFzIGZvcm0gYWN0aW9ucyBhcyBzb21lIHBhZ2VzIGRvIHRoaXMgYW5kIGl0IGRvZXMgbm90
IGludHJvZHVjZQogICAgIC8vIGEgbWl4ZWQgY29udGVudCBpc3N1ZS4KLSAgICBpZiAocHJvdG9j
b2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1
cmwpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWlzTWl4ZWRDb250ZW50KHNlY3VyaXR5
T3JpZ2luLCB1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29u
dGVudENoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2Vy
LmgKaW5kZXggYTI2YTg1Nzk3ZDNhOGNiMGMyOTMzZGYyNDc3NmI2OTViNzBkNDQzNC4uNWZkZmZm
ODBhMzE4NzQzNzE4Mzg4OTBiNWUyNDA0ZWEwMDlmMTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlckNsaWVudDsKLWNsYXNz
IFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBNaXhlZENvbnRlbnRDaGVja2Vy
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAppbmRl
eCA4ZWNjMTQzZjQyMTNjOTVmNzkwZWU4M2UzODgwNzU1MzRjYjk4OWE0Li42MTdkZWRiZmRmYTg2
NTE5M2M3YjczNGQzYmFkNWRmNTUxMTNkOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCkBAIC0zNjYsNyArMzY2LDcgQEAgaW5saW5lIGJvb2wg
TmF2aWdhdGlvblNjaGVkdWxlcjo6c2hvdWxkU2NoZWR1bGVOYXZpZ2F0aW9uKGNvbnN0IFVSTCYg
dXJsKSBjb25zdAogewogICAgIGlmICghc2hvdWxkU2NoZWR1bGVOYXZpZ2F0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAg
ICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICByZXR1cm4gTmF2aWdhdGlvbkRpc2FibGVyOjppc05hdmlnYXRpb25BbGxvd2VkKG1f
ZnJhbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgK
aW5kZXggNTNlZjU1ODQ0ZTY3NDE0MzgyZTZkYmZlYmQxOWE3NTY0MmE0NjZjMC4uYjk3ZDk4Njgx
NjE4ZWFiNjBmZDI3NThhZDk4OTkzYjI0NTI0NDk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCkBAIC00MSw3ICs0MSw2IEBAIGNsYXNzIEZvcm1TdWJt
aXNzaW9uOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBTY2hlZHVsZWROYXZpZ2F0aW9uOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBVUkw7CiAKIGVudW0gY2xhc3MgTmV3TG9hZEluUHJvZ3Jl
c3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BpbmdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgK
aW5kZXggMTU0ODlkY2YwNGJmMWRlZDc4ODZlZjhjMDg2MTdkZGJjMTNkOWExOC4uNmRlZWY0NTE2
OWE5ZTVjYTMwYTlmMmY4MzM0MjM3OWQzOTliMWRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BpbmdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xv
YWRlci5oCkBAIC00MCw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvcm1E
YXRhOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwotY2xhc3MgVVJMOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogCiBlbnVtIGNsYXNzIFZpb2xhdGlvblJlcG9ydFR5cGUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IDgzMDI1MzljYjM3N2Jj
ZmM0NmNjZjFkNTllMTdmYmY4NzgxM2M4MDAuLmY0YzE5MWZhZDQ1NzY0ZDQ5YjMyNDI5ZjJjYmQ0
ZGM2YmQ1ZTJjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAg
LTE3OSw3ICsxNzksNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGlj
eShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdQogICAgICAgICBjYXNlIFBv
bGljeUFjdGlvbjo6SWdub3JlOgogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVs
bHB0ciwgU2hvdWxkQ29udGludWU6Ok5vKTsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlN1
c3BlbmQ6Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyBibGFua1VSTCgpIH0sIG51bGxw
dHIsIFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uKTsKKyAgICAgICAgICAgIHJldHVybiBm
dW5jdGlvbih7IFdURjo6YmxhbmtVUkwoKSB9LCBudWxscHRyLCBTaG91bGRDb250aW51ZTo6Rm9y
U3VzcGVuc2lvbik7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6CiAgICAgICAgICAg
ICBpZiAoIW1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0
KSkgewogICAgICAgICAgICAgICAgIGhhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeShtX2ZyYW1l
LmxvYWRlcigpLmNsaWVudCgpLmNhbm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaAppbmRleCA5YjYzMzBlZDQ3YmFjNjZkZWEy
MmI4NGUxOWNmMWQwMGIwNmEyM2MxLi4xYzEyM2QwNmY3YWQ2NzUyMjlkNmM1ZTAxZjkyNTFhNjhi
MTYyMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5m
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKQEAgLTI2
LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIK
LSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHAKaW5kZXggOTVkNjU5NTY3ZWU2OTNhODMzNzEzNWE1NmY1ZWI1YTNhOTlmZDkxYS4uY2EzNjAw
NTExNTRiNmQ1ZjMwYjhjYmJmNTk2OGRmYjE1MmJjZTllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjI0LDcgKzIyNCw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
Y29uc3QgU3RyaW5nJiBkb21haW5JCiAgICAgYXV0byBvcGVuZXJQcmltYXJ5RG9tYWluID0gcHJp
bWFyeURvbWFpbihvcGVuZXJVcmwpOwogICAgIGlmIChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MgIT0gb3BlbmVyUHJpbWFyeURvbWFpbgogICAgICAgICAmJiAhb3BlbmVyRG9jdW1lbnQuaGFz
UmVxdWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24oZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKQotICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShvcGVuZXJVcmwuc3RyaW5nKCksIGJsYW5rVVJMKCkpKSB7CisgICAgICAgICYmICFlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG9wZW5lclVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgpKSkg
ewogICAgICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhkb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyUHJpbWFyeURvbWFp
bik7CiAgICAgICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVzdHMg
c2luY2UgdGhleSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJEb2N1
bWVudC5zZXRIYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRl
cmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCBhZTJjYWUyNzgwOTE3NTU4M2YyZWJi
NDMzNjVhMTAxOWExNDcxMDg3Li4yYWJmYzUwMzM0YzE3ZDg5ZTJiNmZmYmRjMzhhMzgyYTFmMTA2
ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApA
QCAtNDcsNyArNDcsNiBAQCBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFz
cyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAppbmRleCBmMmYwOTYyZTg5NmM3
MDY0ZTU2NzZiZjdhYTI5NTM1ZGI1YjM3ZDhlLi4xMWZjNjNjZjY2ODNhNmViOGQ0YTc5MTcwYzkz
ZGQ2YjdlYjM4OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmgKQEAgLTI2LDEwICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2Fs
bFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmlu
ZGV4IDcxMTkzMTBiZDNiYTQyYjY2NzYyZGQxOTM3ZjBjYzJiYzU0NjJjZGMuLmM0ZDc5MjdiNjZi
YjQ3YzA3NWEzYmExZDc1MDViMWRlN2U5YjI1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVM
b2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBQcmV2aWV3TG9hZGVyOwot
Y2xhc3MgVVJMOwogCiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJl
c291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKaW5kZXggNmM5YWNiMTkzYTY3MDIz
YmI1ZGMzNmJhYzRkYTdlNzk4ODM0NDNiZS4uN2VmOGRiYzg1MTRkY2VjZmYxYjA3ZjQ1MDM3MDM3
ZjhlODg0ODgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGlt
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmgKQEAgLTI4
LDcgKzI4LDcgQEAKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xv
YWRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiU2VydmVyVGltaW5nLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IDcxMzg0ZDBiMmMxZGIwZGI5ZWFh
MTA3Yzk4MzNkOTM5NjRhODdkOWUuLjc4Y2U3YzFlZDRlM2ZkMDNmYjZmMzI5MWY3NDQyMGIyNTc3
OWFjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtNzcs
MTQgKzc3LDE0IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVP
d25lckVsZW1lbnQmIG93bmVyRWxlbWVudCwgY29uc3QgU3RyCiAgICAgLy8gU3VwcG9ydCBmb3Ig
PGZyYW1lIHNyYz0iamF2YXNjcmlwdDpzdHJpbmciPgogICAgIFVSTCBzY3JpcHRVUkw7CiAgICAg
VVJMIHVybDsKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkgeworICAg
IGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpIHsKICAgICAgICAgc2Ny
aXB0VVJMID0gY29tcGxldGVVUkwodXJsU3RyaW5nKTsgLy8gY29tcGxldGVVUkwoKSBlbmNvZGVz
IHRoZSBVUkwuCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdURjo6
YmxhbmtVUkwoKTsKICAgICB9IGVsc2UKICAgICAgICAgdXJsID0gY29tcGxldGVVUkwodXJsU3Ry
aW5nKTsKIAogICAgIGlmIChzaG91bGRDb252ZXJ0SW52YWxpZFVSTHNUb0JsYW5rKCkgJiYgIXVy
bC5pc1ZhbGlkKCkpCi0gICAgICAgIHVybCA9IGJsYW5rVVJMKCk7CisgICAgICAgIHVybCA9IFdU
Rjo6YmxhbmtVUkwoKTsKIAogICAgIGJvb2wgaGFzRXhpc3RpbmdGcmFtZSA9IG93bmVyRWxlbWVu
dC5jb250ZW50RnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWUgPSBsb2FkT3JSZWRpcmVjdFN1YmZy
YW1lKG93bmVyRWxlbWVudCwgdXJsLCBmcmFtZU5hbWUsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0Zv
cndhcmRMaXN0KTsKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVz
dEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBTdHIKICAg
ICAvLyBJZiB3ZSBjcmVhdGUgYSBuZXcgc3ViZnJhbWUgdGhlbiBhbiBlbXB0eSBkb2N1bWVudCBp
cyBsb2FkZWQgaW50byBpdCBzeW5jaHJvbm91c2x5IGFuZCBtYXkKICAgICAvLyBjYXVzZSBzY3Jp
cHQgZXhlY3V0aW9uIChzYXksIHZpYSBhIERPTSBsb2FkIGV2ZW50IGhhbmRsZXIpIHRoYXQgY2Fu
IGRvIGFueXRoaW5nLCBpbmNsdWRpbmcKICAgICAvLyBuYXZpZ2F0aW5nIHRoZSBzdWJmcmFtZS4g
V2Ugb25seSB3YW50IHRvIGV2YWx1YXRlIHNjcmlwdFVSTCBpZiB0aGUgZnJhbWUgaGFzIG5vdCBi
ZWVuIG5hdmlnYXRlZC4KLSAgICBib29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0Zy
YW1lIHx8IChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxVUkwoKSA9PSBibGFua1VSTCgpKTsKKyAgICBi
b29sIGNhbkV4ZWN1dGVTY3JpcHQgPSBoYXNFeGlzdGluZ0ZyYW1lIHx8IChmcmFtZS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
b3JpZ2luYWxVUkwoKSA9PSBXVEY6OmJsYW5rVVJMKCkpOwogICAgIGlmICghc2NyaXB0VVJMLmlz
RW1wdHkoKSAmJiBjYW5FeGVjdXRlU2NyaXB0ICYmIG93bmVyRWxlbWVudC5pc1VSTEFsbG93ZWQo
c2NyaXB0VVJMKSkKICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVJZkphdmFTY3JpcHRV
Ukwoc2NyaXB0VVJMKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZy
YW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAppbmRl
eCA0ODk2ZDYyZjQ1ZjFmODFkOTBkZTc0MDJlMjA5NzA0MWE2ZWIwNjRjLi4yY2FhZTljYTYwOThh
NzUzM2MzMDkzODk2ZGMyMDMxMjZlNjg5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3ViZnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJh
bWVMb2FkZXIuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7
CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVudDsK
IGNsYXNzIEludFNpemU7Ci1jbGFzcyBVUkw7CiBjbGFzcyBXaWRnZXQ7CiAKIC8vIFRoaXMgaXMg
YSBzbGlnaHQgbWlzbm9tZXIuIEl0IGhhbmRsZXMgdGhlIGhpZ2hlciBsZXZlbCBsb2dpYyBvZiBs
b2FkaW5nIGJvdGggc3ViZnJhbWVzIGFuZCBwbHVnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZURhdGEuaAppbmRleCBmMTAxMzUxNTk3MTk4MTgyOWM2MTAxOTE3NTJiOTFhZjllYzdm
Yjc1Li43MDU2MzIxMzNkZjhlZjg1NjU5ODUyODdlNDEwNjBiMWRiMzc5NDg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKaW5kZXggNWRmNWY2MDE3Y2U0YzAzYjc4OGJlOThi
ZWI3YjZlMTdiYjA0MGI2ZS4uNjEzMTdiNTMxY2NjMWIwNjI5YjIxZGJmMGE2N2NjZmVlYTZjZjQ2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZS5oCkBAIC0zMyw3ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIAogdXNpbmcgRmFsbGJhY2tVUkxWZWN0b3Ig
PSBWZWN0b3I8c3RkOjpwYWlyPFVSTCwgVVJMPj47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCBhYmFhNzNl
MTRhYjRiOGM3YWJhYjEwODhkZDhjMjM4ZTY5ZTJiNDFlLi40N2Q4OTM0YmE5OTE0YTVhNTZkMTE0
NmE3OTdlZGViODRkZjJkYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0yNywxMCArMjcsMTAgQEAKIAog
I2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRP
TUFwcGxpY2F0aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IGYyZmIxZjc4MzJiY2Q4
MDQ2MmJjYWIwOGNlYmE3ZDEyNWI4NWEyNDMuLjBkMTMwYTQ1ZjhhZjNiNDk5MDQyMTA1Yjk2MTAz
OWZmNWZiZjM0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggODFjMjMyMWYzMzk5YzMwNDAzMzc3NmQ5MjZkOGUz
MDAzYjZlNDFhNS4uMDQwZDhiN2FkNmEwOTFlYjFjOWU0MzViNWUwYzM0MDFmOTNhZTI1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiU1FMaXRlVHJh
bnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA0OGNiZjg4ZTVkODkwMzcxMTM2MTg5NWNhMWMx
MzJhNjQwYzdkOTA0Li42OGMzNjFlNTJiNDJkOTFkMzYxZTljYzgyOTBlZjM1YzM1MDE1MmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhv
c3Q7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBTdG9yYWdlSURKb3VybmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggY2I0ODE1ODVmNGEwZGMzNjg5YzhlODE1ZTcw
NmNhMjRjNDI2MDAxNS4uODQ0NjlmOGFkNGE5NGE4NDYyZTc2ZjNkOTEwYzMyZThiMTQxMjE5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIu
Y3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKIAogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUg
PHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKaW5kZXggZTc4MTA4OTNhMjA2OTBhY2U2M2Fl
YzNlYzg4ZTYwZWFmNjJmYzc4MC4uOGZlNDBhNjRlNDQ5MGFhYzgyN2E2MWRiMGY0MDQ3YzFlZTg2
MGIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0
UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBV
Ukw7Ci0KIHN0cnVjdCBNYW5pZmVzdCB7CiAgICAgVmVjdG9yPFVSTD4gb25saW5lV2hpdGVsaXN0
ZWRVUkxzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBsaWNpdFVSTHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
LmgKaW5kZXggMzdkZjY4YjM2NmNmZjg1MzliOTVjODIzZjJlOTEyNGQzNWVhOTkzOC4uZTQ2MGI2
OWMyYWVkNWQyNzlkZDU0YTBkZjlhZjAxMGI5NGJjNzdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaApA
QCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmU7CiBj
bGFzcyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCA4NjFlMzk5MjYxMGUwZTVmYzhkOTM5NjcyMzVkYWNl
ZjQ2MTc1MDBlLi5hMzNhMTg2MWFjZTIyODdmZWQ3MDY3NjRiOWY3MWIxNWE1OTU2ZmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJV
UkxIYXNoLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTcsNiArNTYsNyBAQAogI2luY2x1ZGUgIm1hcmt1cC5o
IgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTYxMSw3ICs2MTEs
NyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJv
bVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1l
bnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIg
ZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93biku
IAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIg
bWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdo
dD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJl
c3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKLSAgICBhdXRvIGlmcmFt
ZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihpZnJhbWVNYXJr
dXApLCBibGFua1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04IiwgU3RyaW5nKCkpOworICAgIGF1
dG8gaWZyYW1lUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVyKGlm
cmFtZU1hcmt1cCksIFdURjo6YmxhbmtVUkwoKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFN0cmlu
ZygpKTsKIAogICAgIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+IHN1YmZyYW1lQXJjaGl2
ZXM7CiAgICAgc3ViZnJhbWVBcmNoaXZlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNWUx
ZTNmMWQzY2QxNGE0NmEyNzQ5YTQ4YTE5MzljYTJkNjM4OGI0Yy4uOGY1ZGQyMDYxNzRmZjQ4NmY0
MTJjZWRmODEyYTk4MGRkNjNkYzUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC00NywxMSArNDcsMTEgQEAKICNpbmNsdWRlICJTY2hl
bWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3Vi
cmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggMDc3N2IxNzcyNGU5YjA1Y2VmNWVkNTRh
M2FlZmMxZDExNDY3ZjRkNy4uMTBmNjljNmExMDUyOWYxZmQ5MTFhMWQwNzRlZjAzMDljMGY1Y2Ji
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIEltYWdlTG9hZGVyOwogY2xhc3MgU2V0dGluZ3M7Ci1jbGFzcyBVUkw7CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdXNpbmcgUmVzb3VyY2VFcnJvck9yID0gRXhwZWN0ZWQ8
VCwgUmVzb3VyY2VFcnJvcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaAppbmRleCBkZjQ2YmUyZDM3N2U0YzFkZTE4MmFkYWYx
NGQ3MzlhMWY5N2NkYzAyLi4zOGJiMTk5OTAwODdjOGQ2NjYxZjM2YTM2NjlkNGM5YWUzMzQ4MTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVl
dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNo
ZWV0Q2xpZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKLWNsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkU3R5bGVT
aGVldENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGQ3MTY3OThhNGNlMWQ5
N2Q2MWQzMTNlOTUxOGI3ZGMyMjY5ZjcwNWMuLjJmY2JkMzE5ODVhNDc1YTMwZmYxNzdmNjMyOTQ2
MjJmMDEyNTI5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5o
CkBAIC00MSw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSAgewogCiBjbGFzcyBDYWNoZWRS
ZXNvdXJjZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkxvYWRlci5oCmluZGV4IDZhYTU1Mzc0Zjc4YjY2NzdmNTcwOWEyYmQ5
ZGNiNzE0YzE4ZmZkZmEuLjM0YTBmMzJiNGY1ZThkZjlhNmMwM2VmNTc0MThmYzZhYTg1MWQzNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAgLTI3LDkgKzI3LDkg
QEAKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21h
Yy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQppbmRleCBmOTEwZWQ1YmRlMjQ5YmEzMWI4YTU4M2ZjNTQx
ZWY3YWFjY2MzY2MwLi5jYmUwMDA0ODA2Y2M1ODc0MjNkOGRlYjBlZTQ4NGEwMWY3ZTA2ZjE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KQEAg
LTMwLDExICszMCwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJMb2FkZXJOU1VS
TEV4dHJhcy5oIgogCi0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL1Zl
Y3Rvci5oPgotI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAj
aW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApp
bmRleCAzNmEyNGU3ODg1ODkzNDBmMDE3N2I3NWQwNTJlZTNiYmE1ZWEwYjEzLi5iNzkyM2Y3ODMy
MjI2ZWQ1M2YwYzkxZjhkZWRhODVkYjlkNjMxNjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNDEsNyArNDEs
NyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50
cy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1
ZGUgIlZUVEN1ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCmluZGV4IDU2OGI1Y2Q4ZTNhMjE4YTI3YmU1NDA5NWFmMWJiNzliNzdlYjEzODMuLjU3
ZjhhNDBhOTFhNjY0YWUzMmU1ZTZlMGNkYjM0ZDY2ZDY5NTJmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaApAQCAtMzg0LDcgKzM4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZVN1ZGRlblRlcm1pbmF0aW9uKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29udGVudFJ1bGVM
aXN0Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IEhhc2hTZXQ8c3RkOjpw
YWlyPFN0cmluZywgU3RyaW5nPj4mKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRSdWxl
TGlzdE5vdGlmaWNhdGlvbihjb25zdCBVUkwmLCBjb25zdCBIYXNoU2V0PHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4+JikgeyB9OwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9p
ZCBzZXRMYXN0U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29yKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xp
ZW50T3JpZ2luLmgKaW5kZXggYWY3Y2E5MjY0YTRmMmY4NWU5NDBjOWJkMWQ0MDE2ZGZhMDk5MmNj
MC4uYjg3NTA1YTA1MDU3OWUzYmYxMzg1MDJhNWVmZjRhNDU1MmVkMWMwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NsaWVudE9yaWdpbi5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q2xpZW50LmgKaW5kZXggNWU3YzM1Yzk3NzE4ZDg4Zjg0MWJmNDE4MDQ1MjQ5NGFk
OGY3NTE5Mi4uODg5ZWU5OTc2MTI4ZDFhOTY2N2UwYTUwYTM0OGU1MTJiZTY4NzA2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzEsMjkgKzMxLDI4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEZyYW1lOwotICAgIGNsYXNzIFVSTDsK
LQotICAgIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZp
cnR1YWwgfkNvbnRleHRNZW51Q2xpZW50KCkgPSBkZWZhdWx0OwotICAgICAgICB2aXJ0dWFsIHZv
aWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKSA9IDA7Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpID0gMDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCBpc1NwZWFraW5nKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3Ry
aW5nJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgPSAwOworY2xh
c3MgRnJhbWU7CisKK2NsYXNzIENvbnRleHRNZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5Db250ZXh0TWVudUNsaWVudCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29u
dGV4dE1lbnVEZXN0cm95ZWQoKSA9IDA7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGRvd25sb2Fk
VVJMKGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aEdvb2dsZShj
b25zdCBGcmFtZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZy
YW1lKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BT
cGVha2luZygpID0gMDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICB2aXJ0dWFsIHZv
aWQgc2VhcmNoV2l0aFNwb3RsaWdodCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0
aFNwb3RsaWdodCgpID0gMDsKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVY
VF9NRU5VUykKLSAgICAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgPSAwOwogI2VuZGlmCi0gICAgfTsKK307
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDY4MTI2YmE5NmU4YmYxN2U3Njg5M2UxZWJhYWNm
NTQ5NDBmMmZiYzcuLmEzZTVlYWU4OTRkNjQyNzYzN2RkODQ1ZWRhYWRlNzFjNjE1MWMxYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTEz
MzYsNyArMTMzNiw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxl
SWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzazoKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJcyhtX2Nv
bnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlSW1hZ2VVUkwoKSwgImZpbGUiKSkKKyAgICAg
ICAgICAgIGlmIChXVEY6OnByb3RvY29sSXMobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNv
bHV0ZUltYWdlVVJMKCksICJmaWxlIikpCiAgICAgICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
ZmFsc2U7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM1MSw3ICsxMzUxLDcgQEAg
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0
TWVudUl0ZW0mIGl0ZW0pIGNvbnN0CiAgICAgICAgICAgICAgICAgaXRlbS5zZXRUaXRsZShjb250
ZXh0TWVudUl0ZW1UYWdEb3dubG9hZFZpZGVvVG9EaXNrKCkpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRB
dWRpb1RvRGlzaygpKTsKLSAgICAgICAgICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElzKG1fY29u
dGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVSTCgpLCAiZmlsZSIpKQorICAgICAg
ICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29s
dXRlSW1hZ2VVUkwoKSwgImZpbGUiKSkKICAgICAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBm
YWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0NvcHlNZWRpYUxpbmtUb0NsaXBib2FyZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRl
eCAwYzI3YjZkNWYxODZmNjMyNTU0ODdmNjgyZjFmMmEyODM5MWZjMTVlLi4xMWMyNzY5YjZhNzk1
M2RiNzE0OWVkMzU5MDFjZmY2Nzk5OGVjZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CkBAIC0xMDEsNyArMTAxLDcgQEAKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVk
ZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlN1ZGRlblRlcm1pbmF0aW9uLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5k
aWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlzdWFsVmlld3BvcnQuaCIKICNpbmNsdWRlICJXZWJLaXRQ
b2ludC5oIgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgU3RyaW5nIERPTVdpbmRvdzo6Y3Jvc3NEb21h
aW5BY2Nlc3NFcnJvck1lc3NhZ2UoY29uc3QgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIEkKIAog
Ym9vbCBET01XaW5kb3c6OmlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoRE9NV2luZG93JiBhY3RpdmVX
aW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAgIGlmICghcHJvdG9jb2xJc0ph
dmFTY3JpcHQodXJsU3RyaW5nKSkKKyAgICBpZiAoIVdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQo
dXJsU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gSWYgdGhpcyBET01X
aW5kb3cgaXNuJ3QgY3VycmVudGx5IGFjdGl2ZSBpbiB0aGUgRnJhbWUsIHRoZW4gdGhlcmUncyBu
bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA3NTYyMTM2NTFjNGY0
ZGI1ZjdiNTczZGYyZDdmZDVlZWYwNmE0ZTY2Li45ZWUzZDQ2ODk2NGZjOGQ0ZjZhM2U0Y2I0ZGIw
NWUxZGI3MjBjZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAt
MTA2OSw3ICsxMDY5LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBz
cmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICAgICAgICAgIGlm
IChtdXN0VXNlTGVnYWN5RHJhZ0NsaWVudCkKICAgICAgICAgICAgICAgICBzcmMuZWRpdG9yKCku
Y29weVVSTChsaW5rVVJMLCB0ZXh0Q29udGVudFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSwgZGF0
YVRyYW5zZmVyLnBhc3RlYm9hcmQoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0VVJMKHNyYy5lZGl0b3IoKS5wYXN0ZWJvYXJkV3Jp
dGVyVVJMKGxpbmtVUkwsIHRleHRDb250ZW50V2l0aFNpbXBsaWZpZWRXaGl0ZVNwYWNlKSk7Cisg
ICAgICAgICAgICAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0VVJMRGF0YShzcmMuZWRpdG9y
KCkucGFzdGVib2FyZFdyaXRlclVSTChsaW5rVVJMLCB0ZXh0Q29udGVudFdpdGhTaW1wbGlmaWVk
V2hpdGVTcGFjZSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gTWFrZSBzdXJl
IHRoZSBwYXN0ZWJvYXJkIGFsc28gY29udGFpbnMgdHJ1c3R3b3J0aHkgbGluayBkYXRhCiAgICAg
ICAgICAgICAvLyBidXQgZG9uJ3Qgb3ZlcndyaXRlIG1vcmUgZ2VuZXJhbCBwYXN0ZWJvYXJkIHR5
cGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IGMwMmQ1YzgwMTZjNjVi
M2Q1ZWY5MzU2YzgyYmU3ZDU3MmI5NzlhOTQuLjg0MzUyODNjZGZjYjExYTg2MmQ5ZmNjYzY2ZjMw
NDNmMmM1N2E5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTI5LDcg
KzI5LDcgQEAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCmlu
ZGV4IDM3OTJhOTEyNmYxZDMwYWZmZTM3YmUxYzJhNmRhYzc4MjE2YTcyOWEuLjU4YTRjMzg3NDll
OTUwYjQ3OGNmODcwNjhhMjYzOTMxMGFkZWYwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuaAppbmRleCBiNzQ3ZmQ2YzZlNDAzMjM2OGMwNmI3ZWM4N2M1NjQwMDhhMjc5ZDUz
Li45ZmFmMjQzN2Y1NzIxZTk2YTI1ODIxMjdlMmVhZTI2NDNkYjliNzFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCkBAIC04OSw3ICs4OSw2IEBAIGNsYXNzIFJlbmRlcldpZGdldDsKIGNsYXNzIFNjcmlwdENv
bnRyb2xsZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNldHRpbmdzOwotY2xhc3Mg
VVJMOwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogY2xhc3MgV2lkZ2V0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAppbmRleCBlNDQ5Nzc2NzBlNjEzNDdjY2RmZTNlMjNmMWJmODBmY2Q4ZTM4YTdl
Li5kNDVlNzVkNTRkNDg2ZjkwZDYwYjExYzg2YTQ2Yzg4M2FkN2M0MDAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKQEAgLTUzLDcgKzUzLDYgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZsb2F0
U2l6ZTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwotY2xhc3Mg
VVJMOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJCb3g7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
SGlzdG9yeS5oCmluZGV4IDg3YTBmM2QxNzg3OGQxNzExMTE4NGEyNjQyMDkyZmM3ZmY1MTBhMDIu
LmQ2ZTkzNGFiMDAyMTlkNDFiNzdmNWY5OGFhOTE4ZWVkMDhhMDY5N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlz
dG9yeS5oCkBAIC0zNSw3ICszNSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERv
Y3VtZW50OwotY2xhc3MgVVJMOwogCiBjbGFzcyBIaXN0b3J5IGZpbmFsIDogcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SGlzdG9yeT4sIHB1YmxpYyBET01XaW5kb3dQ
cm9wZXJ0eSB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCmluZGV4IDRlNDg3ZWMx
ZWY1MTE2OTkzODhiZDcwZDFlNGJhYmI5OTk5OWQ5ZGQuLjE2NDBjZmMxMjNiYTM3NjJhYjU2YzA3
ZmM4ZTMxMTFmNDczMmE3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCkBAIC0zNCw3ICsz
NCw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDcsMTEgKzQ3LDExIEBAIExvY2F0aW9uOjpMb2NhdGlvbihET01XaW5kb3cm
IHdpbmRvdykKIGlubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogewogICAg
IGlmICghZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIGJsYW5rVVJMKCk7CisgICAgICAgIHJldHVy
biBXVEY6OmJsYW5rVVJMKCk7CiAKICAgICBjb25zdCBVUkwmIHVybCA9IGZyYW1lKCktPmRvY3Vt
ZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIGJs
YW5rVVJMKCk7IC8vIFVzZSAiYWJvdXQ6YmxhbmsiIHdoaWxlIHRoZSBwYWdlIGlzIHN0aWxsIGxv
YWRpbmcgKGJlZm9yZSB3ZSBoYXZlIGEgZnJhbWUpLgorICAgICAgICByZXR1cm4gV1RGOjpibGFu
a1VSTCgpOyAvLyBVc2UgImFib3V0OmJsYW5rIiB3aGlsZSB0aGUgcGFnZSBpcyBzdGlsbCBsb2Fk
aW5nIChiZWZvcmUgd2UgaGF2ZSBhIGZyYW1lKS4KIAogICAgIHJldHVybiB1cmw7CiB9CkBAIC0y
NTgsNyArMjU4LDcgQEAgdm9pZCBMb2NhdGlvbjo6cmVsb2FkKERPTVdpbmRvdyYgYWN0aXZlV2lu
ZG93KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2Ny
aXB0KHRhcmdldERvY3VtZW50LnVybCgpKSkKKyAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNj
cmlwdCh0YXJnZXREb2N1bWVudC51cmwoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZyYW1l
LT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWZyZXNoKGFjdGl2ZURvY3VtZW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTG9jYXRpb24uaAppbmRleCA2OTY5MWJjNjFhN2FkN2NiOGEwYjNhM2E3ZmVmYjli
NzY4Njc2ZGE2Li44MGQ1ZDkwYzZiM2I3M2E1ODQ5NGJjZTQ5MjY0ZmJkZTcwYWQ5NTJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2NhdGlvbi5oCkBAIC0zNiw3ICszNiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERPTVdpbmRvdzsKLWNsYXNzIFVSTDsKIAogY2xhc3MgTG9jYXRpb24gOiBwdWJs
aWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxMb2NhdGlvbj4sIHB1YmxpYyBE
T01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDNkYmU1NzJjZDMy
OTAzZDVmY2JkNmMzN2UwNTFiY2ViMTA3MjNlN2UuLmNiMmUzOGYzMjg5YWI2ODcxNzc1YTBjZmFh
YjdjMjkyMTNkZjM4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0xMzYsNyArMTM2LDYgQEAgY2xhc3Mg
U2V0dGluZ3M7CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2U7
CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7Ci1jbGFzcyBVUkw7CiBjbGFzcyBVc2Vy
Q29udGVudFByb3ZpZGVyOwogY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiBjbGFzcyBB
Y3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmgKaW5kZXggM2I2ZTE4MjllMjhjMzVhMzllNGExNmI1ZjA4OGU2MWMzYzQ2ZWQ4YS4uZmYzZTJl
MWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVNlcmlhbGl6ZXIuaApAQCAtMzAsMTEgKzMwLDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlz
dEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAppbmRleCBhNjJjYjJlZDUyZjc4NmVhMmU3
YjNmNTI2ZDA3NmQxMTlmZjRiNTg3Li45ZTU5ODc2NWRjZWNjNGFhZWMyNTZjNjZiOTk0OTM3N2Y0
MWZkMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCkBAIC00OSw3ICs0OSw2IEBAIGNs
YXNzIFBlcmZvcm1hbmNlVGltaW5nOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJl
c291cmNlVGltaW5nOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFVSTDsK
IGNsYXNzIFVzZXJUaW1pbmc7CiAKIGNsYXNzIFBlcmZvcm1hbmNlIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8UGVyZm9ybWFuY2U+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIs
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCmluZGV4IDU3NTMzNTgwYzMwMjFl
YWU2NmRlMzE5MDg5ZDhlNGIxYmMxMDNmOWQuLjdiN2Q4N2E0NThmYmEwZTczOWQyYzQyMDljZjgy
NDJiYmQ4NzQ5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VS
ZXNvdXJjZVRpbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkxvYWRUaW1pbmcu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VUaW1p
bmcuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBl
NmQwNzM0MTQ4OWFlY2Y5NmRlMmI1NjBlZGFkNzgyZTRhMTM1Y2YxLi5kOThhMDYxZTU1MjIyMmE0
MDZmYWFlMGYxYzExM2MxMmM2NTk1NGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5o
IgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgpAQCAtMTQ4LDcgKzE0OCw3IEBAIFNlY3VyaXR5
T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBVUkwmIHVybCkKICAgICAvLyBkb2N1bWVudC5k
b21haW4gc3RhcnRzIGFzIG1fZGF0YS5ob3N0LCBidXQgY2FuIGJlIHNldCBieSB0aGUgRE9NLgog
ICAgIG1fZG9tYWluID0gbV9kYXRhLmhvc3Q7CiAKLSAgICBpZiAobV9kYXRhLnBvcnQgJiYgaXNE
ZWZhdWx0UG9ydEZvclByb3RvY29sKG1fZGF0YS5wb3J0LnZhbHVlKCksIG1fZGF0YS5wcm90b2Nv
bCkpCisgICAgaWYgKG1fZGF0YS5wb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29s
KG1fZGF0YS5wb3J0LnZhbHVlKCksIG1fZGF0YS5wcm90b2NvbCkpCiAgICAgICAgIG1fZGF0YS5w
b3J0ID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gQnkgZGVmYXVsdCwgb25seSBsb2NhbCBTZWN1
cml0eU9yaWdpbnMgY2FuIGxvYWQgbG9jYWwgcmVzb3VyY2VzLgpAQCAtNTE2LDcgKzUxNiw3IEBA
IFJlZjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcm
IHByb3RvY29sLCBjb25zdCBTdHJpbmcmCiB7CiAgICAgU3RyaW5nIGRlY29kZWRIb3N0ID0gZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKGhvc3QpOwogICAgIGF1dG8gb3JpZ2luID0gY3JlYXRlKFVS
TChVUkwoKSwgcHJvdG9jb2wgKyAiOi8vIiArIGhvc3QgKyAiLyIpKTsKLSAgICBpZiAocG9ydCAm
JiAhaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKCpwb3J0LCBwcm90b2NvbCkpCisgICAgaWYgKHBv
cnQgJiYgIVdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKCpwb3J0LCBwcm90b2NvbCkpCiAg
ICAgICAgIG9yaWdpbi0+bV9kYXRhLnBvcnQgPSBwb3J0OwogICAgIHJldHVybiBvcmlnaW47CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggNWFkZjUwMTc0OWIwOWMyOTNl
NTliYTQwNDU2Zjc2N2NiNTZlMDhlMS4uYjkzZDBmYWYyMzVhN2ZlMzU0NzY1MDlmNmU0MzdkNTQ0
MDVjYzEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaApAQCAtMzQsOCArMzQs
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgU2VjdXJp
dHlPcmlnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VjdXJpdHlPcmlnaW4+IHsK
IHB1YmxpYzoKICAgICBlbnVtIFBvbGljeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkRhdGEuaAppbmRleCBjZWZmZWEzMmIwODRjNTYzMTI0ZjIwYjdjNWZlMjhmMTQ5MDQwNDc1
Li4yNzc2MmVhMjFkNmQyMDY1ZTlkZDAxNDZkYjk3OWIzMzJlYzQ1NmMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgK
aW5kZXggZWUyNTcyYzVhOWE2NDQzOTU3YTVmM2Y3NTNmNDZlMmZiYTkyMjM0MC4uZTAxNDhhMmQw
NWQ5OWIwZGRkZjA2YTIzZDI0NmQ1MzQ1MmNiMmMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luSGFzaC5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlQb2xpY3kuY3BwCmluZGV4IDE1M2VkZDgxOWQxMjU1NTU1Njg4NzY1NjZkZTMxZjk4YjZj
MDU1M2IuLjQyMzQxODI4MGVhMmVlM2M5YmZkZmM5MWNkMTI3Yjk2OGViMWUxYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zMSwxMSArMzEsMTEgQEAKIAogI2lu
Y2x1ZGUgIk9yaWdpbkFjY2Vzc0VudHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
LSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29s
IFNlY3VyaXR5UG9saWN5OjpzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIoY29u
c3QgVVJMJiB1cmwpCiAgICAgLy8KICAgICAvLyBOb3RlOiBXZSBnZW5lcmFsaXplIHRoaXMgdG8g
aW52YWxpZCBVUkxzIGJlY2F1c2Ugd2UgdHJlYXQgc3VjaCBVUkxzIGFzIGFib3V0OmJsYW5rLgog
ICAgIC8vCi0gICAgcmV0dXJuIHVybC5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZSh1cmwuc3RyaW5nKCksIGJsYW5rVVJMKCkpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHVybC5zdHJpbmcoKSwgImFib3V0OnNyY2RvYyIpOworICAgIHJldHVybiB1cmwuaXNFbXB0
eSgpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnN0cmluZygpLCBXVEY6OmJsYW5rVVJM
KCkpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHVybC5zdHJpbmcoKSwgImFib3V0
OnNyY2RvYyIpOwogfQogCiB2b2lkIFNlY3VyaXR5UG9saWN5OjpzZXRMb2NhbExvYWRQb2xpY3ko
TG9jYWxMb2FkUG9saWN5IHBvbGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaApp
bmRleCBjZDM3Y2EzYWQyZGZkYmQ3ZTY3MjM1MWZhNTQzZWVmNDllODJiNGY0Li41MzNiMWQ0ZmJk
YWQ1MmUzOGYxZmQzNWEyZjZhMDdkNDgwMDhiMTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5oCkBAIC0zNCw3ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVVJMOwogCiBjbGFzcyBTZWN1cml0eVBvbGljeSB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAppbmRleCBmYjE0MzE2MTU0NmZkMmY2
MzllNDBhZTE2N2ExNWI3MjVmNjEyNzE5Li5kNjQ3MWMyNGQ5ZWJjNzBkYTkzN2FmYWI1OWJjYmFk
MDFlMTE5ZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKQEAgLTM0LDcgKzM0LDcg
QEAKICNpbmNsdWRlICJTdG9yYWdlTWFwLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1l
RmxhZ3MuaD4KICNpbmNsdWRlIDx1bmljb2RlL3VzY3JpcHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YS5oCmluZGV4IGEyZmQzZWYxMjQ3MmRkNGExYzMzYWE0MDYxZjlmYzQ5ZjRiMTYzNWIuLjQ0ZDBh
MzNmMzkzYzgzYTg1YTdlMzZhMjRkODg2ZTNlZmI1N2ExYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaApAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNwcmFnbWEgb25jZQotI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oCmluZGV4IGQxOTc5NzdhZmViODIwYWE0MTJl
MmMzNGZhNTQ3MjE2Mzg0OTBlNzIuLjllOGMwMDNiZmY1MWUxYTVjYzk2ZDJlNDczZTdhZWVlZWRi
ZGE4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKQEAgLTM0LDcgKzM0LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNs
YXNzIFNvY2tldFN0cmVhbUhhbmRsZTsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsK
LWNsYXNzIFVSTDsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU29ja2V0UHJvdmlkZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29ja2V0UHJvdmlkZXI+IHsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKaW5kZXggMjhkZmIzMmEwNzZlNjUx
MmVjZjkyNGYwMTQ1MjIwZWVhZTQ5YzQ3Mi4uZmE2OTIwMzRkYmFlNWZkNzlmZTgxOTc4OWE3MzIx
ZWJlNGIwZGVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFBy
b3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgK
QEAgLTQyLDcgKzQyLDYgQEAgY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnRM
b2FkZXI7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgVVJMOwog
Y2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjsKIGNsYXNzIFVzZXJTY3JpcHQ7CiBj
bGFzcyBVc2VyU3R5bGVTaGVldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmNwcAppbmRleCBiOWI4MTE1ODI3Yjc4ZjUyNzMwOTVjMmMzZTE1MThiZjQzZjQz
ZTkwLi5mMzczY2YzN2IyNGM1MGZjMjFkYzZkYzQ3MWFiMDhlZDRlYzUwOTFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0yNiw5ICsyNiw5
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRVUkxQYXR0ZXJu
LmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJM
UGF0dGVybi5oCmluZGV4IDkzM2Y2OWQ2YzVhNjBlNmVkNzI4YmEwODBlZWU4NGY1NDgwZGYyZDYu
LjkzZjY1ODEyZGFjNWRlOGFkNWZjZGI2NzBkOGQyZjllODY5NzgxZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaApAQCAtMzAsOCArMzAsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuIHsKIHB1YmxpYzoKICAgICBVc2VyQ29udGVudFVSTFBhdHRlcm4oKSA6IG1faW52YWxp
ZCh0cnVlKSwgbV9tYXRjaFN1YmRvbWFpbnMoZmFsc2UpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3Jp
cHQuaAppbmRleCA4NTEwYzFmMzM5OTAxZTk5NWYzMjBjY2M5YmY3MTliMmU0OWFlNDI3Li41MmMx
MmYzYzY5NjYzMDJhYWVmNDU1YjhmZWZiYzk5ZWJkYTU4NGNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJT
Y3JpcHQuaApAQCAtMjUsNyArMjUsNyBAQAogIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiVXNlckNvbnRlbnRUeXBlcy5o
IgogI2luY2x1ZGUgIlVzZXJTY3JpcHRUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAppbmRleCA2OGYxMGE4MmFkZjg5OGYyNTJj
NDE1NTljYjE2NzhhZWM4YzUwODQxLi5jNDc0NzY3ZTdjOThiYjQ4YTg4M2NiNzNiNjk4OTA1ZjYw
MWQ3NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCkBAIC0yNSw3ICsyNSw3
IEBACiAgCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlICJVc2VyQ29udGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclN0eWxl
U2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9W
aXNpdGVkTGlua1N0b3JlLmgKaW5kZXggNDNjMzUxMzcyZDYxOGI2ODEwOWIwZmI4Y2NkNjlmYzg1
ZjhiZGQ3OC4uMjZkNjUwZGJhNzRkYzUwMmNmOTMwOWEzZjNkMWMwNWRhNmI2NDliMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaXNpdGVkTGlua1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9WaXNpdGVkTGlua1N0b3JlLmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIHVpbnQ2NF90IFNoYXJlZFN0cmluZ0hhc2g7CiBjbGFz
cyBQYWdlOwotY2xhc3MgVVJMOwogCiBjbGFzcyBWaXNpdGVkTGlua1N0b3JlIDogcHVibGljIFJl
ZkNvdW50ZWQ8VmlzaXRlZExpbmtTdG9yZT4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCA1YjU5MmZkODI4Zjk3Zjk0
YzIzYWUzMzQ5NjhhNWFiNDdkOTZjMTYzLi5lMDJhN2FiNmM1OWJmY2Y1Yjk5ZTY0OGZmYzZjN2Uy
NTQ0Y2ZmZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuaApAQCAtNTYsNyArNTYsNiBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBU
ZXh0RW5jb2Rpbmc7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xp
ZW50OwogCiB0eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdD4+IENTUERpcmVjdGl2ZUxpc3RWZWN0b3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oCmluZGV4
IGViNGZlODdjMjlmMWNhYjExOGJkMWIwZGJlNjc2M2NiMTA0ZjMyMzAuLjhlMDUxODI2NDE0MDZm
MmNjOGNhYTJkYzU2YWUzMzYwNjM0ZTZiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oCkBAIC0zMiw3ICszMiw2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvcm1EYXRhOwotY2xhc3MgVVJMOwogCiBz
dHJ1Y3QgQ1NQSW5mbyB7CiAgICAgU3RyaW5nIGRvY3VtZW50VVJJOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5oCmluZGV4IDI5MDcyNTBmMGViMWRjNGZkMDhmYjIwNzJjNjgzMzdiMjhkN2IwMjYuLmRk
NTEzMDBlYzNiMDAzMzFmMzNiZDAyNzM3YTE1OGMyYWFjNjIxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0LmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xp
Y3lIYXNoLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0
aXZlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2
ZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAppbmRleCBhMDcxMGRjYzJhOTEzNGFmMDY4Y2NlZjk4
MDZiYzk0ZTI2ZGJmYWQxLi5jODJmODU2YzJjNzgyMmRkNjQ1ZTMyYjE3MWNmMzQzNzk4MTU0YWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDb250ZW50U2Vj
dXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRl
ICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAxLDE0ICsxMDEsMTQgQEAgYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnBvcnRNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25z
dAogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBp
ZiAoKG1fcG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCksICJo
dHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29sSXMoImh0dHBzIikpIHx8IChwb3J0ICYm
IGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksICJodHRwcyIpKSkpCisgICAg
aWYgKChtX3BvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVl
KCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnByb3RvY29sSXMoImh0dHBzIikpIHx8IChw
b3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgImh0dHBz
IikpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIXBvcnQpCi0gICAgICAgIHJl
dHVybiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCksIHVybC5wcm90b2Nv
bCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9y
dC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSk7CiAKICAgICBpZiAoIW1fcG9ydCkKLSAgICAgICAg
cmV0dXJuIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2Nv
bCgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQu
dmFsdWUoKSwgdXJsLnByb3RvY29sKCkpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Uu
aAppbmRleCA0ZWVhYmIwMTM2NTI1MWI2ZDg5NjMzY2E5NjgwZDAxNWYyMzEwNmFhLi5hMmRiNTA0
Mzg5OGYyZTY5NDdiYzdiMGEyZGQ2NDQzYWI1MTQzOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaApAQCAtMzEsNyAr
MzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xp
Y3k7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBjbGFzcyBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAppbmRleCAxYjQz
MzEyNjYwMGE1MDFmOTVmNWU2M2I0MmRkNGNkZGRkOTU3OWIyLi4yNmRhOTExNTM3NjRhZmY3MDQ4
Njc4ZTYyN2Y3MmZjNGM3OTgxZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcApAQCAtMzEsOSAr
MzEsOSBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgi
CiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
LmgKaW5kZXggOWY2M2MzMDA2YTBjYTdmMmUzMzk5NDgwMWI1NDJjMzY2NjhjMmU1NC4uNWZjZjNi
MmVhZTRhOWU1Zjg0ODEwYmQ1M2M0NTU1MjQ0MDc3MjZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaApA
QCAtMzYsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2Vj
dXJpdHlQb2xpY3k7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNw
cAppbmRleCBjMmJmMWQ0NWE1NWY1NzdmYTJkM2ZiNjAwYjJhYzlmM2ZmMGNhMWU0Li4xYjA5MmI4
NGZkMGJmN2Q2NmY4ZTFhYWZlMGYxYmFjNTMzNmFlNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0RGlyZWN0aXZlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCmluZGV4IDkwNDhkYmQxZTA5ZDhlYzdhYmYzN2Y5
YjdjZThmZmRiYmFhZDg4YzYuLmZkZjFmZDc5MjMxYTAyZGZkNGQzNGIwY2MyZWE5NDZhMTkzYjU5
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlci5oCkBAIC0yMywxNCArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cl9oCi0jZGVmaW5lIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcl9oCisjcHJhZ21hIG9uY2UK
IAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAotI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JKQ19DTEFT
UyBOU0NvZGVyOwpAQCAtNzcsNSArNzYsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotCi0jZW5kaWYgLy8g
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29u
dGV4dE1lbnVJdGVtLmgKaW5kZXggNDc2YTNjMzZiOTViZGIxODdiYjU4OTMyZTAwM2JkMTFlZjMy
YjQwNi4uMWIwZjc0NTBiNDU3MmQ1NmE5MTNlNWMxZTdhYTU3Mzk4NDk0OGQxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKQEAgLTMzLDcgKzMzLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZXh0TWVudTsKIGNsYXNzIEltYWdlOwotY2xh
c3MgVVJMOwogCiBlbnVtIENvbnRleHRNZW51QWN0aW9uIHsKICAgICBDb250ZXh0TWVudUl0ZW1U
YWdOb0FjdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKaW5kZXggZDVhMDI4OGQwYzMzZDRj
YTNiMDFlNTI4MTlhOWI2ODVlMzlmNzdhNS4uMTZjYTk2MzlkYjQ5NzRmZGUzNGI3M2I1OGQ0NmRm
ZDkwOTE5MTZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKQEAgLTI2LDcgKzI2LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVz
U3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oCmlu
ZGV4IDRjMzA2OWEwMjAxNjZhYjczNWY0MWQ4OGJiNjhmNjQwMjBjYmRlZDYuLjhhNWM1OTQ4MzBj
MDdkNjFjOTAwYmIyZWE3ODQ4NzgxNDE3NzBhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0Nvb2tpZXNTdHJhdGVneS5oCkBAIC0zMiw3ICszMiw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKLWNsYXNzIFVSTDsKIAogc3RydWN0IENv
b2tpZTsKIHN0cnVjdCBTYW1lU2l0ZUluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApp
bmRleCAxYTRhNDVmODA1Y2M1MDZhYjlmMTkxZjgwNjE1Nzg3MDRmZjQ5MjA2Li5lOTMwOTVmYzdi
MmEwYjEzNmQ0NjYxNmQwMjIwY2NlYmEzOTlhMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdE
YXRhLmgKQEAgLTU2LDggKzU2LDYgQEAgdHlwZWRlZiB2b2lkKiBEcmFnRGF0YVJlZjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIGVudW0gRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgewogICAgIERyYWdBcHBsaWNhdGlvbk5vbmUgPSAwLAogICAgIERyYWdBcHBsaWNhdGlvbklz
TW9kYWwgPSAxLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAppbmRleCBhMTEzYjQ4YzI0
N2I4NmZjMTg2N2M4NjVhYmY0NmRmNDU3OWViN2Y1Li5iMjhjNWUwNGY0NmMzZDNhNjgyYWNjNWE0
ZGMyZjI2OTgyMzFkMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaApAQCAtNTcs
NyArNTcsNiBAQCBjbGFzcyBJbWFnZTsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBOb2RlOwogY2xh
c3MgUmFuZ2U7Ci1jbGFzcyBVUkw7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdHlwZWRl
ZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gRHJhZ0ltYWdlUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN0cmVhbS5oCmluZGV4IDk2N2RlZGM3YmE2ZWNmNDI5MmRmMTljZmMxODg1MWQxNjZiM2Fh
NWYuLmIyYWEyODQ0NzlmN2IxMjI2ZWJmN2FhYTliN2ZkY2FjMzBjMzM3NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKQEAgLTM1LDggKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBVUkw7Ci0KIC8vIEFsbCBtZXRob2RzIGFyZSBzeW5jaHJvbm91cy4K
IGNsYXNzIEZpbGVTdHJlYW0gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGlua0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgK
aW5kZXggMjgxNzU0NjAzNTlhZGZmN2EwY2YyZmUxZWI3ZmY0MTM0YzU3N2U1OS4uODllMmY4OTY5
YmI1MjZhMzY0ZGI2YjkwZTMwYTliNzcxY2RlNTg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGlua0ljb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5r
SWNvbi5oCkBAIC0yNiw5ICsyNiw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxpbmtJ
Y29uVHlwZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDczN2EzOTA0MjU3ZGU2NDNiYzBkOWFiOTli
YzI2NGEzMTRmZDZmZjcuLjU1NWVjMjgyZTRiYjY2ZTVmOWQxMTEyMGI5NzYxYTcyNWViYzNmMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKKyNpbmNs
dWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRDb2RlcnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTQ3LDcg
KzQ3LDcgQEAgYm9vbCBQYXN0ZWJvYXJkOjppc1NhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQogCiBib29sIFBhc3RlYm9hcmQ6OmNhbkV4cG9zZVVSTFRvRE9N
V2hlblBhc3RlYm9hcmRDb250YWluc0ZpbGVzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewot
ICAgIGF1dG8gdXJsID0gVVJMUGFyc2VyIHsgdXJsU3RyaW5nIH0ucmVzdWx0KCk7CisgICAgVVJM
IHVybCh7IH0sIHVybFN0cmluZyk7CiAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkgfHwgdXJsLnByb3RvY29sSXNCbG9iKCkgfHwgdXJsLnByb3RvY29sSXNEYXRhKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCAwZDNlNzNlYTA4OTYzZDQ5
ODJhM2ZiNDcwOGQzZWUyOGU2ZWZhNjNhLi5jNTliODQyYmE5MzY3OTI5NjQzYzAyNDU0NGJkMmY2
N2YyNjA0NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0yNywxMCAr
MjcsMTAgQEAKIAogI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRJ
dGVtSW5mby5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBiMTRkNTRhYTlhOTBkYjk1Yzk4OWU1ZDJhYjM4ZWY2MjFm
N2U0M2JiLi4xZTliODgwZmQxYTVlMTg1MjUzMGFiOTM1Y2NlMGQ4NzVjNjNkOTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzMsNyArMzMs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIFNlbGVjdGlvbkRh
dGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZElt
YWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCmlu
ZGV4IDNkMmRjZWVkN2M1NmU4NzA5Njc4OTgwN2E2N2JlZTJlZDAzMjkyN2YuLmUyNTY5MDc0ZWU1
YTJiM2VmNmMyMGU4YmU0OGRmZTc1N2E4MDY5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkV3JpdGVyRGF0YTo6c2V0UGxhaW5UZXh0KFBsYWluVGV4dCBwbGFpblRleHQpCiAg
ICAgbV9wbGFpblRleHQgPSBXVEZNb3ZlKHBsYWluVGV4dCk7CiB9CiAKLXZvaWQgUGFzdGVib2Fy
ZFdyaXRlckRhdGE6OnNldFVSTChVUkwgdXJsKQordm9pZCBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6
c2V0VVJMRGF0YShVUkxEYXRhIHVybCkKIHsKICAgICBBU1NFUlQoIW1fdXJsKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggZDUzZmQ3
MmZmNWU2YzQ0ZTBhMTZlNzdmMzkxZGFmY2Q4NDY1MDIwYS4uNWY0NzU5MmIxMDE5NTExOTExNzk3
Njg4ZTc4NTUwZjQ4YmJlZDU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC02Niw4ICs2Niw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PFBsYWluVGV4dD4mIHBsYWluVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5UZXh0OyB9CiAg
ICAgdm9pZCBzZXRQbGFpblRleHQoUGxhaW5UZXh0KTsKIAotICAgIHN0cnVjdCBVUkwgewotICAg
ICAgICBXZWJDb3JlOjpVUkwgdXJsOworICAgIHN0cnVjdCBVUkxEYXRhIHsKKyAgICAgICAgVVJM
IHVybDsKICAgICAgICAgU3RyaW5nIHRpdGxlOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAg
U3RyaW5nIHVzZXJWaXNpYmxlRm9ybTsKQEAgLTc2LDE1ICs3NiwxNSBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICB9OwogCi0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxVUkw+JiB1cmwoKSBjb25zdCB7
IHJldHVybiBtX3VybDsgfQotICAgIHZvaWQgc2V0VVJMKFVSTCk7CisgICAgY29uc3Qgc3RkOjpv
cHRpb25hbDxVUkxEYXRhPiYgdXJsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAg
dm9pZCBzZXRVUkxEYXRhKFVSTERhdGEpOwogCiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b250ZW50PiYgd2ViQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29udGVudDsgfQogICAg
IHZvaWQgc2V0V2ViQ29udGVudChXZWJDb250ZW50KTsKIAogcHJpdmF0ZToKICAgICBzdGQ6Om9w
dGlvbmFsPFBsYWluVGV4dD4gbV9wbGFpblRleHQ7Ci0gICAgc3RkOjpvcHRpb25hbDxVUkw+IG1f
dXJsOworICAgIHN0ZDo6b3B0aW9uYWw8VVJMRGF0YT4gbV91cmw7CiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb250ZW50PiBtX3dlYkNvbnRlbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdlMGI3NmMzZWQxMGI3MjdiYWNiNWE5NjMw
MGNjN2EyODY5MmMyNmYuLmMzNWYwOGVjZDY0NTg3NzgzOTVkODM1YTM0MjZhYmQzZmNmNWY4YmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00
OCw3ICs0OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3MgU2Vs
ZWN0aW9uRGF0YTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIHN0cnVjdCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVi
b2FyZEl0ZW1JbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlz
ZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRh
Y2htZW50SW5mby5oCmluZGV4IGRiZWNmYzFiM2IxNmQ3ZjVlMDMwOGUxMTBhY2RhMTEwMmNiNDIw
N2UuLmE5NThjMmYwYWIyZDlmMWYzNzY2MmE3YTBiNjAyYmUzMTM0MzA3YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMxLDcg
KzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xh
c3MgVVJMOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAgICAgVVJMIGJsb2JV
Ukw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NTTEtleUdlbmVyYXRvci5oCmluZGV4IDA3Njcy
Mzg2ZjY4ZWFhOTgxZmU3YzU5N2MwNWY2MWVmOGU2NzNjZTQuLmMyYmQ4ZDZlOWQzYWE5M2UyNDYw
MjQ4NjJjMWYzYjIyZjQ1YTQ4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NTTEtleUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NTTEtleUdl
bmVyYXRvci5oCkBAIC0zMSw4ICszMSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgVVJMOwotCiAvLyBSZXR1cm5zIHN0cmluZ3MgcmVwcmVzZW50aW5nIGtleSBzaXplcyB0aGF0
IG1heSBiZSB1c2VkCiAvLyBmb3IgdGhlIDxrZXlnZW4+IHRhZy4gVGhlIGZpcnN0IHN0cmluZyBp
cyBkaXNwbGF5ZWQgYXMgdGhlIGRlZmF1bHQKIC8vIGtleSBzaXplIGluIHRoZSA8a2V5Z2VuPiBt
ZW51LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCmluZGV4IDk0
OWRlNjNhZWYwNmNmY2ZhZjBjMDJkMjRjNmFjNDRlNjZmZTBiOTcuLjc3ZjZjMzkyYTkxN2YwYzkx
NzI2NjVhNzYxOGU2NzA0MzhjNGU0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hl
bWVSZWdpc3RyeS5jcHAKQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKICNp
bmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICNp
bmNsdWRlICJDb250ZW50RmlsdGVyLmgiCkBAIC01NTEsNyArNTUxLDcgQEAgYm9vbCBTY2hlbWVS
ZWdpc3RyeTo6aXNVc2VyRXh0ZW5zaW9uU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogCiBi
b29sIFNjaGVtZVJlZ2lzdHJ5Ojppc0J1aWx0aW5TY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUp
CiB7Ci0gICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgKGFsbEJ1aWx0aW5TY2hlbWVzKCku
Y29udGFpbnMoc2NoZW1lKSB8fCBVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZShzY2hlbWUpKTsK
KyAgICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiAoYWxsQnVpbHRpblNjaGVtZXMoKS5jb250
YWlucyhzY2hlbWUpIHx8IFdURjo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoc2NoZW1lKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmgKaW5kZXggZTJhYWUyZjMwNDU3MzU1ZjQ4OWVlYzRhYjRlY2YxY2U3ZDNlNDUyZi4u
Zjg2OGMyYzAxZDZiMTBlY2YzNjRiMWE2ZmZlM2RkNDJmNWY1MjI4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTQwLDcgKzQwLDcgQEAKICNlbmRpZgogCiAjaWYg
VVNFKFNPVVApCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKKyNpbmNsdWRlIDx3dGYvZ2xp
Yi9HVW5pcXVlUHRyU291cC5oPgogI2VuZGlmCiAKICNpZiBVU0UoR0xJQikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHAKaW5kZXggMGNjNWY2ODdkNjIxZWZl
N2VhYmFjNGRiZjllNTQ1NDdhNDhkY2UxOC4uYWZiNzU3Y2JlNDAyMmZlZGZjNDc5M2VhYmMyNTY5
ZTg2MGU5NTk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3Ry
aW5nSGFzaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFz
aC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
aGFyZWRTdHJpbmdIYXNoLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guaAppbmRleCA3MzI0NjE3YmE0OTZh
MDY2M2JmZDUzZGVjNGE0NDNkOTc2OTM5ZThlLi4zNjAzY2YwZjJlN2Y5MjE0YjNlMjUzZjU0Nzlk
OWNiMzQ2YjI3YWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRT
dHJpbmdIYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFz
aC5oCkBAIC0zMCw4ICszMCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJM
OwotCiB0eXBlZGVmIHVpbnQ2NF90IFNoYXJlZFN0cmluZ0hhc2g7CiAKIC8vIFVzZSB0aGUgbG93
IDMyLWJpdHMgb2YgdGhlIDY0LWJpdCBTaGFyZWRTdHJpbmdIYXNoIGFzIHRoZSBrZXkgZm9yIEhh
c2hTZXRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAu
dHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CmluZGV4IDkxYjlm
MzA5OTIwZmU2ZDViYWRlMDgwMzY1NWMyODQ1OTAzNTRkMTkuLmRiYWMzMTM0ZThiYjE3N2UzOWM1
NzNhZDc5NzMzMjcxZThkNzNjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKQEAgLTQxLDQgKzQxLDMgQEAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1dlYktpdFNvdXBS
ZXF1ZXN0R2VuZXJpYy5jcHAKIAogcGxhdGZvcm0vc291cC9QdWJsaWNTdWZmaXhTb3VwLmNwcAog
cGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAotcGxhdGZvcm0vc291cC9VUkxTb3Vw
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAxMzQ2MmJkZWY4ZThhNjFhZmIwMTJhMTBlMjdjYjYxMzRlZGZkM2IuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNy0yMDA4LCAyMDExLTIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCi0KLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1
ZGUgPHVuaWNvZGUvdWlkbmEuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUg
PHd0Zi9IZXhOdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1VVSUQuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFt
Lmg+Ci0KLS8vIEZJWE1FOiBUaGlzIGZpbGUgbWFrZXMgdG9vIG11Y2ggdXNlIG9mIHRoZSArIG9w
ZXJhdG9yIG9uIFN0cmluZy4KLS8vIFdlIGVpdGhlciBoYXZlIHRvIG9wdGltaXplIHRoYXQgb3Bl
cmF0b3Igc28gaXQgZG9lc24ndCBpbnZvbHZlCi0vLyBzbyBtYW55IGFsbG9jYXRpb25zLCBvciBj
aGFuZ2UgdGhpcyB0byB1c2UgU3RyaW5nQnVmZmVyIGluc3RlYWQuCi0KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotdHlwZWRlZiBWZWN0b3I8Y2hhciwgNTEy
PiBDaGFyQnVmZmVyOwotdHlwZWRlZiBWZWN0b3I8VUNoYXIsIDUxMj4gVUNoYXJCdWZmZXI7Ci0K
LXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnZhbGlkUG9ydE51bWJlciA9IDB4RkZGRjsKLQotLy8g
Q29waWVzIHRoZSBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9uLCBhc3N1bWluZyBhbGwgdGhlIHNv
dXJjZSBjaGFyYWN0ZXJzIGFyZQotLy8gQVNDSUkuIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIgbXVz
dCBiZSBsYXJnZSBlbm91Z2guIE51bGwgY2hhcmFjdGVycyBhcmUgYWxsb3dlZAotLy8gaW4gdGhl
IHNvdXJjZSBzdHJpbmcsIGFuZCBubyBhdHRlbXB0IGlzIG1hZGUgdG8gbnVsbC10ZXJtaW5hdGUg
dGhlIHJlc3VsdC4KLXN0YXRpYyB2b2lkIGNvcHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmluZywg
Y2hhciogZGVzdCkKLXsKLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgbWVtY3B5KGRlc3QsIHN0cmlu
Zy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAgIGVsc2UgewotICAgICAgICBj
b25zdCBVQ2hhciogc3JjID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICBzaXplX3Qg
bGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAgZGVzdFtpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHNy
Y1tpXSk7Ci0gICAgfQotfQotCi12b2lkIFVSTDo6aW52YWxpZGF0ZSgpCi17Ci0gICAgbV9pc1Zh
bGlkID0gZmFsc2U7Ci0gICAgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID0gZmFsc2U7Ci0gICAg
bV9jYW5ub3RCZUFCYXNlVVJMID0gZmFsc2U7Ci0gICAgbV9zY2hlbWVFbmQgPSAwOwotICAgIG1f
dXNlclN0YXJ0ID0gMDsKLSAgICBtX3VzZXJFbmQgPSAwOwotICAgIG1fcGFzc3dvcmRFbmQgPSAw
OwotICAgIG1faG9zdEVuZCA9IDA7Ci0gICAgbV9wb3J0TGVuZ3RoID0gMDsKLSAgICBtX3BhdGhF
bmQgPSAwOwotICAgIG1fcGF0aEFmdGVyTGFzdFNsYXNoID0gMDsKLSAgICBtX3F1ZXJ5RW5kID0g
MDsKLX0KLQotVVJMOjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZl
LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIGVuY29kaW5nKQotewotICAgIFVSTFBhcnNlciBwYXJz
ZXIocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQo
KTsKLX0KLQotc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgYykKLXsKLSAgICAv
LyBCcm93c2VycyBpZ25vcmUgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9s
Ci0gICAgLy8gY2hhcmFjdGVycyBmcm9tIFVSTHMuICBOb3RlIHRoYXQgYyBpcyBhbiAqdW5zaWdu
ZWQqIGNoYXIgaGVyZQotICAgIC8vIHNvIHRoaXMgY29tcGFyaXNvbiBzaG91bGQgb25seSBjYXRj
aCBjb250cm9sIGNoYXJhY3RlcnMuCi0gICAgcmV0dXJuIGMgPD0gJyAnOwotfQotCi1VUkwgVVJM
Ojppc29sYXRlZENvcHkoKSBjb25zdAotewotICAgIFVSTCByZXN1bHQgPSAqdGhpczsKLSAgICBy
ZXN1bHQubV9zdHJpbmcgPSByZXN1bHQubV9zdHJpbmcuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotU3RyaW5nIFVSTDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAot
ewotICAgIGlmICghaGFzUGF0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICB1
bnNpZ25lZCBlbmQgPSBtX3BhdGhFbmQgLSAxOwotICAgIGlmIChtX3N0cmluZ1tlbmRdID09ICcv
JykKLSAgICAgICAgLS1lbmQ7Ci0KLSAgICBzaXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNl
RmluZCgnLycsIGVuZCk7Ci0gICAgaWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
aG9zdEVuZCArIG1fcG9ydExlbmd0aCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAr
K3N0YXJ0OwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3Rh
cnQgKyAxKTsKLX0KLQotU3RyaW5nVmlldyBVUkw6OnByb3RvY29sKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIG1fc2NoZW1lRW5kKTsKLX0K
LQotU3RyaW5nVmlldyBVUkw6Omhvc3QoKSBjb25zdAotewotICAgIHVuc2lnbmVkIHN0YXJ0ID0g
aG9zdFN0YXJ0KCk7Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhz
dGFydCwgbV9ob3N0RW5kIC0gc3RhcnQpOwotfQotCi1zdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBV
Ukw6OnBvcnQoKSBjb25zdAotewotICAgIGlmICghbV9wb3J0TGVuZ3RoKQotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotCi0gICAgYm9vbCBvayA9IGZhbHNlOwotICAgIHVuc2lnbmVkIG51
bWJlcjsKLSAgICBpZiAobV9zdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIG51bWJlciA9IGNoYXJh
Y3RlcnNUb1VJbnRTdHJpY3QobV9zdHJpbmcuY2hhcmFjdGVyczgoKSArIG1faG9zdEVuZCArIDEs
IG1fcG9ydExlbmd0aCAtIDEsICZvayk7Ci0gICAgZWxzZQotICAgICAgICBudW1iZXIgPSBjaGFy
YWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgbV9ob3N0RW5kICsg
MSwgbV9wb3J0TGVuZ3RoIC0gMSwgJm9rKTsKLSAgICBpZiAoIW9rIHx8IG51bWJlciA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICByZXR1cm4gbnVtYmVyOwotfQotCi1TdHJpbmcgVVJMOjpob3N0QW5kUG9ydCgp
IGNvbnN0Ci17Ci0gICAgaWYgKGF1dG8gcG9ydCA9IHRoaXMtPnBvcnQoKSkKLSAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoaG9zdCgpLCAnOicsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3J0LnZh
bHVlKCkpKTsKLSAgICByZXR1cm4gaG9zdCgpLnRvU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBVUkw6
OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdAotewotICAgIFN0cmluZyByZXN1bHQgPSBtX3N0
cmluZy5zdWJzdHJpbmcoMCwgbV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoKTsKLQotICAgIGlmICht
X3Bhc3N3b3JkRW5kIC0gbV91c2VyU3RhcnQgPiAwKSB7Ci0gICAgICAgIGNvbnN0IGludCBhbGxv
d0ZvclRyYWlsaW5nQXRTaWduID0gMTsKLSAgICAgICAgcmVzdWx0LnJlbW92ZShtX3VzZXJTdGFy
dCwgbV9wYXNzd29yZEVuZCAtIG1fdXNlclN0YXJ0ICsgYWxsb3dGb3JUcmFpbGluZ0F0U2lnbik7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIFN0cmluZyBkZWNvZGVF
c2NhcGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcgaW5wdXQpCi17Ci0gICAgYXV0
byBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwotICAgIGlmICghaW5wdXRMZW5ndGgpCi0g
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIFZlY3RvcjxMQ2hhcj4gcGVyY2VudERl
Y29kZWQ7Ci0gICAgcGVyY2VudERlY29kZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnB1dExl
bmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlucHV0TGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgaWYgKGlucHV0W2ldID09ICclJwotICAgICAgICAgICAgJiYgaW5wdXRMZW5ndGgg
PiAyCi0gICAgICAgICAgICAmJiBpIDwgaW5wdXRMZW5ndGggLSAyCi0gICAgICAgICAgICAmJiBp
c0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKQotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERp
Z2l0KGlucHV0W2kgKyAyXSkpIHsKLSAgICAgICAgICAgIHBlcmNlbnREZWNvZGVkLnVuY2hlY2tl
ZEFwcGVuZCh0b0FTQ0lJSGV4VmFsdWUoaW5wdXRbaSArIDFdLCBpbnB1dFtpICsgMl0pKTsKLSAg
ICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwZXJjZW50RGVj
b2RlZC51bmNoZWNrZWRBcHBlbmQoaW5wdXRbaV0pOwotICAgIH0KLSAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7
Ci19Ci0KLVN0cmluZyBVUkw6OnVzZXIoKSBjb25zdAotewotICAgIHJldHVybiBkZWNvZGVFc2Nh
cGVTZXF1ZW5jZXNGcm9tUGFyc2VkVVJMKFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyht
X3VzZXJTdGFydCwgbV91c2VyRW5kIC0gbV91c2VyU3RhcnQpKTsKLX0KLQotU3RyaW5nIFVSTDo6
cGFzcygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyRW5kKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2Vz
RnJvbVBhcnNlZFVSTChTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV91c2VyRW5kICsg
MSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpKTsKLX0KLQotU3RyaW5nIFVSTDo6ZW5j
b2RlZFVzZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV91c2Vy
U3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KTsKLX0KLQotU3RyaW5nIFVSTDo6ZW5jb2Rl
ZFBhc3MoKSBjb25zdAotewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyht
X3VzZXJFbmQgKyAxLCBtX3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSk7Ci19Ci0KLVN0cmlu
ZyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgaWYgKCFoYXNGcmFnbWVu
dElkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1f
c3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kICsgMSk7Ci19Ci0KLWJvb2wgVVJMOjpoYXNGcmFn
bWVudElkZW50aWZpZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9zdHJp
bmcubGVuZ3RoKCkgIT0gbV9xdWVyeUVuZDsKLX0KLQotU3RyaW5nIFVSTDo6YmFzZUFzU3RyaW5n
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcubGVmdChtX3BhdGhBZnRlckxhc3RTbGFz
aCk7Ci19Ci0KLSNpZiAhVVNFKENGKQotCi1TdHJpbmcgVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNv
bnN0Ci17Ci0gICAgaWYgKCFpc1ZhbGlkKCkgfHwgIWlzTG9jYWxGaWxlKCkpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXNGcm9tUGFy
c2VkVVJMKFN0cmluZ1ZpZXcocGF0aCgpKSk7Ci19Ci0KLSNlbmRpZgotCi0jaWZkZWYgTkRFQlVH
Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBhc3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3KQot
ewotfQotCi0jZWxzZQotCi1zdGF0aWMgdm9pZCBhc3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdW
aWV3IHByb3RvY29sKQotewotICAgIC8vIEZJWE1FOiBXZSBwcm9iYWJseSBkb24ndCBuZWVkIHRo
aXMgZnVuY3Rpb24gYW55IG1vcmUuCi0gICAgLy8gVGhlIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1
YWwgZnVuY3Rpb24gYXNzZXJ0cyB0aGF0IHBhc3NlZC1pbiBjaGFyYWN0ZXJzCi0gICAgLy8gYXJl
IG9uZXMgaXQgY2FuIGhhbmRsZTsgdGhlIG9sZGVyIGNvZGUgZGlkIG5vdCBhbmQgcmVsaWVkIG9u
IHRoZXNlIGNoZWNrcy4KLSAgICBmb3IgKGF1dG8gY2hhcmFjdGVyIDogcHJvdG9jb2wuY29kZVVu
aXRzKCkpIHsKLSAgICAgICAgQVNTRVJUKGlzQVNDSUkoY2hhcmFjdGVyKSk7Ci0gICAgICAgIEFT
U0VSVChjaGFyYWN0ZXIgPiAnICcpOwotICAgICAgICBBU1NFUlQoIWlzQVNDSUlVcHBlcihjaGFy
YWN0ZXIpKTsKLSAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlclVuY2hlY2tlZChjaGFyYWN0ZXIp
ID09IGNoYXJhY3Rlcik7Ci0gICAgfQotfQotCi0jZW5kaWYKLQotc3RhdGljIExvY2sgZGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrOwotCi11c2luZyBEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZyA9IEhhc2hNYXA8U3RyaW5nLCB1aW50MTZfdD47Ci1zdGF0
aWMgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZvclBy
b3RvY29sTWFwRm9yVGVzdGluZygpCi17Ci0gICAgc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXBGb3JUZXN0aW5nKiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOwotICAgIHJldHVybiBk
ZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOwotfQotCi1zdGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcmIGVuc3VyZURlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0
aW5nKCkKLXsKLSAgICBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyomIGRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGlu
ZygpOwotICAgIGlmICghZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcCkKLSAgICAgICAgZGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcCA9IG5ldyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVz
dGluZzsKLSAgICByZXR1cm4gKmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXA7Ci19Ci0KLXZvaWQg
cmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQotewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsKLSAgICBlbnN1cmVEZWZhdWx0
UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpLmFkZChwcm90b2NvbCwgcG9ydCk7Ci19Ci0K
LXZvaWQgY2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpCi17Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGlu
Z0xvY2spOwotICAgIGlmIChhdXRvKiBtYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9y
VGVzdGluZygpKQotICAgICAgICBtYXAtPmNsZWFyKCk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBwcm90b2NvbCkKLXsKLSAg
ICBpZiAoYXV0byogb3ZlcnJpZGVNYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVz
dGluZygpKSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsKLSAgICAgICAgQVNTRVJUKG92ZXJyaWRlTWFwKTsg
Ly8gTm8gbmVlZCB0byBudWxsIGNoZWNrIGFnYWluIGhlcmUgc2luY2Ugb3ZlcnJpZGVNYXAgY2Fu
bm90IGJlY29tZSBudWxsIGFmdGVyIGJlaW5nIG5vbi1udWxsLgotICAgICAgICBhdXRvIGl0ZXJh
dG9yID0gb3ZlcnJpZGVNYXAtPmZpbmQocHJvdG9jb2wudG9TdHJpbmdXaXRob3V0Q29weWluZygp
KTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG92ZXJyaWRlTWFwLT5lbmQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7Ci0gICAgfQotICAgIHJldHVybiBVUkxQYXJzZXI6
OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocHJvdG9jb2wpOwotfQotCi1ib29sIGlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKQotewotICAg
IHJldHVybiBkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKSA9PSBwb3J0OwotfQotCi1i
b29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKLXsKLSAgICBh
c3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihwcm90b2NvbCksIHN0cmxlbihwcm90b2NvbCkpKTsKLQotICAgIC8vIEphdmFTY3JpcHQg
VVJMcyBhcmUgInZhbGlkIiBhbmQgc2hvdWxkIGJlIGV4ZWN1dGVkIGV2ZW4gaWYgVVJMIGRlY2lk
ZXMgdGhleSBhcmUgaW52YWxpZC4KLSAgICAvLyBUaGUgZnJlZSBmdW5jdGlvbiBwcm90b2NvbElz
SmF2YVNjcmlwdCgpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIAotICAgIEFTU0VSVCghZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyhwcm90b2NvbCksICJqYXZhc2NyaXB0
IikpOwotCi0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3Qu
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NoZW1lRW5kOyArK2kpIHsKLSAgICAg
ICAgaWYgKCFwcm90b2NvbFtpXSB8fCAhaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX3N0cmlu
Z1tpXSwgcHJvdG9jb2xbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICByZXR1cm4gIXByb3RvY29sW21fc2NoZW1lRW5kXTsgLy8gV2Ugc2hvdWxkIGhhdmUgY29uc3Vt
ZWQgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIGFyZ3VtZW50LgotfQotCi1ib29sIFVSTDo6cHJvdG9j
b2xJcyhTdHJpbmdWaWV3IHByb3RvY29sKSBjb25zdAotewotICAgIGFzc2VydFByb3RvY29sSXNH
b29kKHByb3RvY29sKTsKLQotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCi0gICAgaWYgKG1fc2NoZW1lRW5kICE9IHByb3RvY29sLmxlbmd0aCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1h
a2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3NjaGVtZUVuZDsgKytpKSB7Ci0gICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVh
bChtX3N0cmluZ1tpXSwgcHJvdG9jb2xbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIFVSTDo6cXVlcnkoKSBjb25zdAot
ewotICAgIGlmIChtX3F1ZXJ5RW5kID09IG1fcGF0aEVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhFbmQgKyAxLCBtX3F1
ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsgCi19Ci0KLVN0cmluZyBVUkw6OnBhdGgoKSBjb25z
dAotewotICAgIHVuc2lnbmVkIHBvcnRFbmQgPSBtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGg7Ci0g
ICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhwb3J0RW5kLCBtX3BhdGhFbmQgLSBwb3J0RW5k
KTsKLX0KLQotYm9vbCBVUkw6OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICAv
LyBGaXJlZm94IGFuZCBJRSByZW1vdmUgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgJzonLgot
ICAgIHNpemVfdCBzZXBhcmF0b3JQb3NpdGlvbiA9IHMuZmluZCgnOicpOwotICAgIFN0cmluZyBu
ZXdQcm90b2NvbCA9IHMuc3Vic3RyaW5nKDAsIHNlcGFyYXRvclBvc2l0aW9uKTsKLSAgICBhdXRv
IGNhbm9uaWNhbGl6ZWQgPSBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKG5ld1By
b3RvY29sKTsKLSAgICBpZiAoIWNhbm9uaWNhbGl6ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0
cmluZygqY2Fub25pY2FsaXplZCwgIjoiLCBtX3N0cmluZykpOwotICAgICAgICAqdGhpcyA9IHBh
cnNlci5yZXN1bHQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgVVJMUGFy
c2VyIHBhcnNlcihtYWtlU3RyaW5nKCpjYW5vbmljYWxpemVkLCBtX3N0cmluZy5zdWJzdHJpbmco
bV9zY2hlbWVFbmQpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIGlzQWxsQVNDSUkoU3RyaW5nVmlldyBzdHJpbmcpCi17
Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVB
bGxBU0NJSShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICByZXR1
cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxl
bmd0aCgpKTsKLX0KLSAgICAKLS8vIEFwcGVuZHMgdGhlIHB1bnljb2RlZCBob3N0bmFtZSBpZGVu
dGlmaWVkIGJ5IHRoZSBnaXZlbiBzdHJpbmcgYW5kIGxlbmd0aCB0bwotLy8gdGhlIG91dHB1dCBi
dWZmZXIuIFRoZSByZXN1bHQgd2lsbCBub3QgYmUgbnVsbCB0ZXJtaW5hdGVkLgotLy8gUmV0dXJu
IHZhbHVlIG9mIGZhbHNlIG1lYW5zIGVycm9yIGluIGVuY29kaW5nLgotc3RhdGljIGJvb2wgYXBw
ZW5kRW5jb2RlZEhvc3RuYW1lKFVDaGFyQnVmZmVyJiBidWZmZXIsIFN0cmluZ1ZpZXcgc3RyaW5n
KQotewotICAgIC8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhbiBJRE4tZW5jb2Rl
ZCBuYW1lLgotICAgIC8vIEZvciBob3N0IG5hbWVzIGJpZ2dlciB0aGFuIHRoaXMsIHdlIHdvbid0
IGRvIElETiBlbmNvZGluZywgd2hpY2ggaXMgYWxtb3N0IGNlcnRhaW5seSBPSy4KLSAgICBjb25z
dCB1bnNpZ25lZCBob3N0bmFtZUJ1ZmZlckxlbmd0aCA9IDIwNDg7Ci0gICAgCi0gICAgaWYgKHN0
cmluZy5sZW5ndGgoKSA+IGhvc3RuYW1lQnVmZmVyTGVuZ3RoIHx8IGlzQWxsQVNDSUkoc3RyaW5n
KSkgewotICAgICAgICBhcHBlbmQoYnVmZmVyLCBzdHJpbmcpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gICAgCi0gICAgVUNoYXIgaG9zdG5hbWVCdWZmZXJbaG9zdG5hbWVCdWZmZXJM
ZW5ndGhdOwotICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7Ci0gICAgVUlETkFJ
bmZvIHByb2Nlc3NpbmdEZXRhaWxzID0gVUlETkFfSU5GT19JTklUSUFMSVpFUjsKLSAgICBpbnQz
Ml90IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPSB1aWRuYV9uYW1lVG9BU0NJSSgmVVJMUGFyc2Vy
OjppbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwKLSAgICAgICAgc3RyaW5nLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVyLCBo
b3N0bmFtZUJ1ZmZlckxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmZXJyb3IpOwotICAgIAot
ICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsK
LSAgICAgICAgYnVmZmVyLmFwcGVuZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZl
cnRlZCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLXVuc2lnbmVkIFVSTDo6aG9zdFN0YXJ0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gKG1fcGFz
c3dvcmRFbmQgPT0gbV91c2VyU3RhcnQpID8gbV9wYXNzd29yZEVuZCA6IG1fcGFzc3dvcmRFbmQg
KyAxOwotfQotCi12b2lkIFVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAgaWYg
KCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY29sb25JbmRleCA9IHMu
ZmluZCgnOicpOwotICAgIGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5kKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBVQ2hhckJ1ZmZlciBlbmNvZGVkSG9zdE5hbWU7Ci0gICAgaWYgKCFhcHBlbmRF
bmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBzKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NjaGVtZUVuZCArIDEpOwotICAgIAotICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSk7Ci0g
ICAgaWYgKHNsYXNoU2xhc2hOZWVkZWQpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
Ly8iKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5kYXRh
KCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpKTsKLSAgICBidWlsZGVyLmFwcGVuZChtX3N0cmlu
Zy5zdWJzdHJpbmcobV9ob3N0RW5kKSk7Ci0KLSAgICBVUkxQYXJzZXIgcGFyc2VyKGJ1aWxkZXIu
dG9TdHJpbmcoKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXZvaWQgVVJM
OjpyZW1vdmVQb3J0KCkKLXsKLSAgICBpZiAoIW1fcG9ydExlbmd0aCkKLSAgICAgICAgcmV0dXJu
OwotICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5s
ZWZ0KG1faG9zdEVuZCksIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hvc3RFbmQg
KyBtX3BvcnRMZW5ndGgpKSk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLXZv
aWQgVVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgY29sb25OZWVkZWQgPSAhbV9wb3J0TGVuZ3Ro
OwotICAgIHVuc2lnbmVkIHBvcnRTdGFydCA9IChjb2xvbk5lZWRlZCA/IG1faG9zdEVuZCA6IG1f
aG9zdEVuZCArIDEpOwotCi0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1Zp
ZXcobV9zdHJpbmcpLmxlZnQocG9ydFN0YXJ0KSwgKGNvbG9uTmVlZGVkID8gIjoiIDogIiIpLCBT
dHJpbmc6Om51bWJlcihpKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVu
ZCArIG1fcG9ydExlbmd0aCkpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQot
dm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQpCi17Ci0g
ICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZ1ZpZXcgaG9z
dE5hbWUoaG9zdEFuZFBvcnQpOwotICAgIFN0cmluZ1ZpZXcgcG9ydDsKLSAgICAKLSAgICBhdXRv
IGNvbG9uSW5kZXggPSBob3N0TmFtZS5maW5kKCc6Jyk7Ci0gICAgaWYgKGNvbG9uSW5kZXggIT0g
bm90Rm91bmQpIHsKLSAgICAgICAgcG9ydCA9IGhvc3ROYW1lLnN1YnN0cmluZyhjb2xvbkluZGV4
ICsgMSk7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIGludCBwb3J0SW50ID0gcG9ydC50b0lu
dFN0cmljdChvayk7Ci0gICAgICAgIGlmICghb2sgfHwgcG9ydEludCA8IDApCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGhvc3ROYW1lID0gaG9zdE5hbWUuc3Vic3RyaW5nKDAsIGNvbG9u
SW5kZXgpOwotICAgIH0KLQotICAgIGlmIChob3N0TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFVDaGFyQnVmZmVyIGVuY29kZWRIb3N0TmFtZTsKLSAgICBpZiAoIWFwcGVu
ZEVuY29kZWRIb3N0bmFtZShlbmNvZGVkSG9zdE5hbWUsIGhvc3ROYW1lKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fc2NoZW1lRW5kICsgMSk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkpOwot
ICAgIGlmIChzbGFzaFNsYXNoTmVlZGVkKQotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
Ii8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0
YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7Ci0gICAgaWYgKCFwb3J0LmlzRW1wdHkoKSkg
ewotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjoiKTsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQocG9ydCk7Ci0gICAgfQotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhtX2hvc3RFbmQgKyBtX3BvcnRMZW5ndGgpKTsKLQotICAgIFVSTFBhcnNl
ciBwYXJzZXIoYnVpbGRlci50b1N0cmluZygpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQo
KTsKLX0KLQotc3RhdGljIFN0cmluZyBwZXJjZW50RW5jb2RlQ2hhcmFjdGVycyhjb25zdCBTdHJp
bmcmIGlucHV0LCBib29sKCpzaG91bGRFbmNvZGUpKFVDaGFyKSkKLXsKLSAgICBhdXRvIGVuY29k
ZSA9IFtzaG91bGRFbmNvZGVdIChjb25zdCBTdHJpbmcmIGlucHV0KSB7Ci0gICAgICAgIENTdHJp
bmcgdXRmOCA9IGlucHV0LnV0ZjgoKTsKLSAgICAgICAgYXV0byogZGF0YSA9IHV0ZjguZGF0YSgp
OwotICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGF1dG8gbGVuZ3RoID0g
dXRmOC5sZW5ndGgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGxlbmd0aDsg
aisrKSB7Ci0gICAgICAgICAgICBhdXRvIGMgPSBkYXRhW2pdOwotICAgICAgICAgICAgaWYgKHNo
b3VsZEVuY29kZShjKSkgewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJyk7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQo
YykpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGMpKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGMpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
Ci0gICAgfTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoKCk7ICsr
aSkgewotICAgICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkRW5jb2RlKGlucHV0W2ldKSkpCi0gICAg
ICAgICAgICByZXR1cm4gZW5jb2RlKGlucHV0KTsKLSAgICB9Ci0gICAgcmV0dXJuIGlucHV0Owot
fQotCi12b2lkIFVSTDo6c2V0VXNlcihjb25zdCBTdHJpbmcmIHVzZXIpCi17Ci0gICAgaWYgKCFt
X2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hh
cmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBl
Y3RhdGlvbnMsCi0gICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IHRo
ZSB1c2VyIGxvZ2luLgotCi0gICAgdW5zaWduZWQgZW5kID0gbV91c2VyRW5kOwotICAgIGlmICgh
dXNlci5pc0VtcHR5KCkpIHsKLSAgICAgICAgU3RyaW5nIHUgPSBwZXJjZW50RW5jb2RlQ2hhcmFj
dGVycyh1c2VyLCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCk7Ci0gICAgICAgIGlm
IChtX3VzZXJTdGFydCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKSkK
LSAgICAgICAgICAgIHUgPSAiLy8iICsgdTsKLSAgICAgICAgLy8gQWRkICdAJyBpZiB3ZSBkaWRu
J3QgaGF2ZSBvbmUgYmVmb3JlLgotICAgICAgICBpZiAoZW5kID09IG1faG9zdEVuZCB8fCAoZW5k
ID09IG1fcGFzc3dvcmRFbmQgJiYgbV9zdHJpbmdbZW5kXSAhPSAnQCcpKQotICAgICAgICAgICAg
dS5hcHBlbmQoJ0AnKTsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyU3RhcnQpLCB1LCBTdHJpbmdWaWV3KG1fc3RyaW5n
KS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIg
dXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0gbV9wYXNzd29yZEVu
ZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQotICAgICAgICAg
ICAgZW5kICs9IDE7Ci0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4
dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBjaGFu
Z2UuCi0gICAgICAgIGlmIChtX3VzZXJTdGFydCAhPSBlbmQpIHsKLSAgICAgICAgICAgIFVSTFBh
cnNlciBwYXJzZXIobWFrZVN0cmluZyhTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0
YXJ0KSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAgICAgICAg
ICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIFVS
TDo6c2V0UGFzcyhjb25zdCBTdHJpbmcmIHBhc3N3b3JkKQotewotICAgIGlmICghbV9pc1ZhbGlk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBlbmQgPSBtX3Bhc3N3b3JkRW5kOwot
ICAgIGlmICghcGFzc3dvcmQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyBwID0gIjoiICsg
cGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGFzc3dvcmQsIFVSTFBhcnNlcjo6aXNJblVzZXJJbmZv
RW5jb2RlU2V0KSArICJAIjsKLSAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9zY2hlbWVFbmQgKyAxKSkKLSAgICAgICAgICAgIHAgPSAiLy8iICsgcDsKLSAg
ICAgICAgLy8gRWF0IHRoZSBleGlzdGluZyAnQCcgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIGFkZCBv
dXIgb3duLgotICAgICAgICBpZiAoZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09
ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1h
a2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3VzZXJFbmQpLCBwLCBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kKSkpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5y
ZXN1bHQoKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBo
YXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmIChtX3VzZXJTdGFydCA9
PSBtX3VzZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykK
LSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNl
IGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBt
YWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyRW5kICE9IGVuZCkgewotICAgICAgICAg
ICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQo
bV91c2VyRW5kKSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCkpKTsKLSAgICAg
ICAgICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12
b2lkIFVSTDo6c2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgaWRlbnRpZmllcikKLXsK
LSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IE9w
dGltaXplIHRoZSBjYXNlIHdoZXJlIHRoZSBpZGVudGlmaWVyIGFscmVhZHkgaGFwcGVucyB0byBi
ZSBlcXVhbCB0byB3aGF0IHdhcyBwYXNzZWQ/Ci0gICAgLy8gRklYTUU6IElzIGl0IGNvcnJlY3Qg
dG8gZG8gdGhpcyB3aXRob3V0IGVuY29kaW5nIGFuZCBlc2NhcGluZyBub24tQVNDSUkgY2hhcmFj
dGVycz8KLSAgICAqdGhpcyA9IFVSTFBhcnNlciB7IG1ha2VTdHJpbmcoU3RyaW5nVmlldyB7IG1f
c3RyaW5nIH0uc3Vic3RyaW5nKDAsIG1fcXVlcnlFbmQpLCAnIycsIGlkZW50aWZpZXIpIH0ucmVz
dWx0KCk7Ci19Ci0KLXZvaWQgVVJMOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKQotewotICAg
IGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIEFTU0VSVCghbV9xdWVyeUVuZCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgoKSA+
IG1fcXVlcnlFbmQpCi0gICAgICAgIG1fc3RyaW5nID0gbV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5k
KTsKLX0KLQotdm9pZCBVUkw6OnJlbW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCkKLXsK
LSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdHJpbmcgPSBt
X3N0cmluZy5sZWZ0KG1fcGF0aEVuZCk7Ci0gICAgbV9xdWVyeUVuZCA9IG1fcGF0aEVuZDsKLX0K
LQotdm9pZCBVUkw6OnNldFF1ZXJ5KGNvbnN0IFN0cmluZyYgcXVlcnkpCi17Ci0gICAgaWYgKCFt
X2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiAnIycgYW5kIG5vbi1B
U0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2RlZCBhbmQgZXNjYXBlZC4KLSAgICAvLyBVc3Vh
bGx5LCB0aGUgcXVlcnkgaXMgZW5jb2RlZCB1c2luZyBkb2N1bWVudCBlbmNvZGluZywgbm90IFVU
Ri04LCBidXQgd2UgZG9uJ3QgaGF2ZQotICAgIC8vIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQgaW4g
dGhpcyBmdW5jdGlvbi4KLSAgICAvLyBodHRwczovL3dlYmtpdC5vcmcvYi8xNjExNzYKLSAgICBp
ZiAoKHF1ZXJ5LmlzRW1wdHkoKSB8fCBxdWVyeVswXSAhPSAnPycpICYmICFxdWVyeS5pc051bGwo
KSkgewotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtX3N0
cmluZykubGVmdChtX3BhdGhFbmQpLCAiPyIsIHF1ZXJ5LCBTdHJpbmdWaWV3KG1fc3RyaW5nKS5z
dWJzdHJpbmcobV9xdWVyeUVuZCkpKTsKLSAgICAgICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLmxlZnQobV9wYXRoRW5kKSwgcXVlcnksIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSkpOwotICAgICAgICAqdGhpcyA9IHBhcnNlci5yZXN1
bHQoKTsKLSAgICB9Ci0KLX0KLQotdm9pZCBVUkw6OnNldFBhdGgoY29uc3QgU3RyaW5nJiBzKQot
ewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgcGF0
aCA9IHM7Ci0gICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGhbMF0gIT0gJy8nKQotICAgICAg
ICBwYXRoID0gIi8iICsgcGF0aDsKLQotICAgIGF1dG8gcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWdu
ID0gW10gKFVDaGFyIGNoYXJhY3RlcikgewotICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09ICc/
JyB8fCBjaGFyYWN0ZXIgPT0gJyMnOwotICAgIH07Ci0gICAgVVJMUGFyc2VyIHBhcnNlcihtYWtl
U3RyaW5nKFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV9ob3N0RW5kICsgbV9wb3J0TGVuZ3Ro
KSwgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMocGF0aCwgcXVlc3Rpb25NYXJrT3JOdW1iZXJTaWdu
KSwgU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1fcGF0aEVuZCkpKTsKLSAgICAqdGhp
cyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIGlmIChhLm1fcXVlcnlF
bmQgIT0gYi5tX3F1ZXJ5RW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQg
cXVlcnlMZW5ndGggPSBhLm1fcXVlcnlFbmQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHF1ZXJ5TGVuZ3RoOyArK2kpCi0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5n
KClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LWJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJMJiBhLCBjb25zdCBV
UkwmIGIpCi17Ci0gICAgaWYgKGEucGF0aEVuZCgpICE9IGIucGF0aEVuZCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgcGF0aEVuZCA9IGEucGF0aEVuZCgpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRoRW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3Ry
aW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVx
dWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIGlmIChhLm1fc2NoZW1lRW5k
ICE9IGIubV9zY2hlbWVFbmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHVuc2lnbmVk
IGhvc3RTdGFydEEgPSBhLmhvc3RTdGFydCgpOwotICAgIHVuc2lnbmVkIGhvc3RMZW5ndGhBID0g
YS5tX2hvc3RFbmQgLSBob3N0U3RhcnRBOwotICAgIHVuc2lnbmVkIGhvc3RTdGFydEIgPSBiLmhv
c3RTdGFydCgpOwotICAgIHVuc2lnbmVkIGhvc3RMZW5ndGhCID0gYi5tX2hvc3RFbmQgLSBiLmhv
c3RTdGFydCgpOwotICAgIGlmIChob3N0TGVuZ3RoQSAhPSBob3N0TGVuZ3RoQikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgdGhlIHNjaGVtZQotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBhLm1fc2NoZW1lRW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGEuc3RyaW5n
KClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICAvLyBBbmQgdGhlIGhvc3QKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaG9z
dExlbmd0aEE7ICsraSkgewotICAgICAgICBpZiAoYS5zdHJpbmcoKVtob3N0U3RhcnRBICsgaV0g
IT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgaWYgKGEucG9ydCgpICE9IGIucG9ydCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0
IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIHVuc2lnbmVkIGhvc3RTdGFydEEgPSBhLmhv
c3RTdGFydCgpOwotICAgIHVuc2lnbmVkIGhvc3RMZW5ndGhBID0gYS5tX2hvc3RFbmQgLSBob3N0
U3RhcnRBOwotICAgIHVuc2lnbmVkIGhvc3RTdGFydEIgPSBiLmhvc3RTdGFydCgpOwotICAgIHVu
c2lnbmVkIGhvc3RMZW5ndGhCID0gYi5tX2hvc3RFbmQgLSBob3N0U3RhcnRCOwotICAgIGlmICho
b3N0TGVuZ3RoQSAhPSBob3N0TGVuZ3RoQikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyArK2kpIHsKLSAgICAgICAgaWYg
KGEuc3RyaW5nKClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGld
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIFVSTDo6aXNNYXRjaGluZ0RvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikgY29u
c3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlm
IChkb21haW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICghcHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRv
IGhvc3QgPSB0aGlzLT5ob3N0KCk7Ci0gICAgaWYgKCFob3N0LmVuZHNXaXRoKGRvbWFpbikpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBob3N0Lmxlbmd0aCgpID09IGRvbWFp
bi5sZW5ndGgoKSB8fCBob3N0W2hvc3QubGVuZ3RoKCkgLSBkb21haW4ubGVuZ3RoKCkgLSAxXSA9
PSAnLic7Ci19Ci0KLVN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0
cmluZyYgaW5wdXQpCi17Ci0gICAgcmV0dXJuIHBlcmNlbnRFbmNvZGVDaGFyYWN0ZXJzKGlucHV0
LCBVUkxQYXJzZXI6OmlzSW5Vc2VySW5mb0VuY29kZVNldCk7Ci19Ci0KLWJvb2wgVVJMOjppc0hp
ZXJhcmNoaWNhbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBBU1NFUlQobV9zdHJpbmdbbV9zY2hlbWVFbmRdID09ICc6Jyk7Ci0gICAg
cmV0dXJuIG1fc3RyaW5nW21fc2NoZW1lRW5kICsgMV0gPT0gJy8nOwotfQotCi12b2lkIFVSTDo6
Y29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0Ci17Ci0gICAgLy8g
RklYTUU6IFRoaXMgdGhyb3dzIGF3YXkgdGhlIGhpZ2ggYnl0ZXMgb2YgYWxsIHRoZSBjaGFyYWN0
ZXJzIGluIHRoZSBzdHJpbmchCi0gICAgLy8gVGhhdCdzIGZpbmUgZm9yIGEgdmFsaWQgVVJMLCB3
aGljaCBpcyBhbGwgQVNDSUksIGJ1dCBub3QgZm9yIGludmFsaWQgVVJMcy4KLSAgICBidWZmZXIu
cmVzaXplKG1fc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBjb3B5QVNDSUkobV9zdHJpbmcsIGJ1ZmZl
ci5kYXRhKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcz4KLWJvb2wgcHJv
dG9jb2xJc0ludGVybmFsKGNvbnN0IFN0cmluZ0NsYXNzJiB1cmwsIGNvbnN0IGNoYXIqIHByb3Rv
Y29sKQotewotICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0
cmluZyBvYmplY3QuCi0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocHJvdG9jb2wpLCBzdHJsZW4ocHJvdG9jb2wpKSk7Ci0g
ICAgYm9vbCBpc0xlYWRpbmcgPSB0cnVlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGogPSAw
OyB1cmxbaV07ICsraSkgewotICAgICAgICAvLyBTa2lwIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQg
Y29udHJvbCBjaGFyYWN0ZXJzLgotICAgICAgICBpZiAoaXNMZWFkaW5nICYmIHNob3VsZFRyaW1G
cm9tVVJMKHVybFtpXSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaXNMZWFkaW5n
ID0gZmFsc2U7Ci0KLSAgICAgICAgLy8gU2tpcCBhbnkgdGFicyBhbmQgbmV3bGluZXMuCi0gICAg
ICAgIGlmICh1cmxbaV0gPT0gJ1x0JyB8fCB1cmxbaV0gPT0gJ1xyJyB8fCB1cmxbaV0gPT0gJ1xu
JykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmICghcHJvdG9jb2xbal0pCi0g
ICAgICAgICAgICByZXR1cm4gdXJsW2ldID09ICc6JzsKLSAgICAgICAgaWYgKCFpc0FTQ0lJQWxw
aGFDYXNlbGVzc0VxdWFsKHVybFtpXSwgcHJvdG9jb2xbal0pKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgICsrajsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3Rv
Y29sKQotewotICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCBwcm90b2NvbCk7Ci19
Ci0KLWlubGluZSBib29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29u
c3QgY2hhciogcHJvdG9jb2wpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnByb3RvY29sSXNJbnRl
cm5hbChzdHJpbmcsIHByb3RvY29sKTsKLX0KLQotI2lmbmRlZiBOREVCVUcKLQotdm9pZCBVUkw6
OnByaW50KCkgY29uc3QKLXsKLSAgICBwcmludGYoIiVzXG4iLCBtX3N0cmluZy51dGY4KCkuZGF0
YSgpKTsKLX0KLQotI2VuZGlmCi0KLVN0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJl
cigpIGNvbnN0Ci17Ci0gICAgVVJMIHJlZmVycmVyKCp0aGlzKTsKLSAgICByZWZlcnJlci5zZXRV
c2VyKFN0cmluZygpKTsKLSAgICByZWZlcnJlci5zZXRQYXNzKFN0cmluZygpKTsKLSAgICByZWZl
cnJlci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICByZXR1cm4gcmVmZXJyZXIuc3Ry
aW5nKCk7Ci19Ci0KLWJvb2wgVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0Ci17Ci0gICAgLy8gSW5j
bHVkaW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVhIHNpbmNlIGRyYWcgYW5kIGRyb3Ag
dXNlcyB0aGlzIGNoZWNrCi0gICAgLy8gYW5kIGluY2x1ZGluZyBmZWVkIHdvdWxkIGFsbG93IGZl
ZWRzIHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxvZwotICAgIC8vIHJlYWQgdGhlIGNv
bnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBldmVuIHdpdGhvdXQgYSBkcm9wLgot
ICAgIC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVS
TEFzTG9jYWwoKSBmdW5jdGlvbi4KLSAgICByZXR1cm4gcHJvdG9jb2xJcygiZmlsZSIpOwotfQot
Ci1ib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIHJl
dHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOwotfQotCi1ib29sIHBy
b3RvY29sSXNKYXZhU2NyaXB0KFN0cmluZ1ZpZXcgdXJsKQotewotICAgIHJldHVybiBwcm90b2Nv
bElzSW50ZXJuYWwodXJsLCAiamF2YXNjcmlwdCIpOwotfQotCi1ib29sIHByb3RvY29sSXNJbkhU
VFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgYXV0byBsZW5ndGggPSB1cmwubGVu
Z3RoKCk7Ci0gICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3Ry
aW5nIG9iamVjdC4KLSAgICByZXR1cm4gbGVuZ3RoID49IDUKLSAgICAgICAgJiYgaXNBU0NJSUFs
cGhhQ2FzZWxlc3NFcXVhbCh1cmxbMF0sICdoJykKLSAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2Fz
ZWxlc3NFcXVhbCh1cmxbMV0sICd0JykKLSAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbCh1cmxbMl0sICd0JykKLSAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1
cmxbM10sICdwJykKLSAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwgKGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwodXJsWzRdLCAncycpICYmIGxlbmd0aCA+PSA2ICYmIHVybFs1XSA9PSAnOicp
KTsKLX0KLQotY29uc3QgVVJMJiBibGFua1VSTCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVSTD4gc3RhdGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayIpOwotICAgIHJldHVy
biBzdGF0aWNCbGFua1VSTDsKLX0KLQotYm9vbCBVUkw6OnByb3RvY29sSXNBYm91dCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHByb3RvY29sSXMoImFib3V0Iik7Ci19Ci0KLWJvb2wgcG9ydEFsbG93
ZWQoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9
IHVybC5wb3J0KCk7Ci0KLSAgICAvLyBTaW5jZSBtb3N0IFVSTHMgZG9uJ3QgaGF2ZSBhIHBvcnQs
IHJldHVybiBlYXJseSBmb3IgdGhlICJubyBwb3J0IiBjYXNlLgotICAgIGlmICghcG9ydCkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBUaGlzIGJsb2NrZWQgcG9ydCBsaXN0IG1hdGNo
ZXMgdGhlIHBvcnQgYmxvY2tpbmcgdGhhdCBNb3ppbGxhIGltcGxlbWVudHMuCi0gICAgLy8gU2Vl
IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbmV0bGliL1BvcnRCYW5uaW5nLmh0bWwg
Zm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGJsb2NrZWRQ
b3J0TGlzdFtdID0gewotICAgICAgICAxLCAgICAvLyB0Y3BtdXgKLSAgICAgICAgNywgICAgLy8g
ZWNobwotICAgICAgICA5LCAgICAvLyBkaXNjYXJkCi0gICAgICAgIDExLCAgIC8vIHN5c3RhdAot
ICAgICAgICAxMywgICAvLyBkYXl0aW1lCi0gICAgICAgIDE1LCAgIC8vIG5ldHN0YXQKLSAgICAg
ICAgMTcsICAgLy8gcW90ZAotICAgICAgICAxOSwgICAvLyBjaGFyZ2VuCi0gICAgICAgIDIwLCAg
IC8vIEZUUC1kYXRhCi0gICAgICAgIDIxLCAgIC8vIEZUUC1jb250cm9sCi0gICAgICAgIDIyLCAg
IC8vIFNTSAotICAgICAgICAyMywgICAvLyB0ZWxuZXQKLSAgICAgICAgMjUsICAgLy8gU01UUAot
ICAgICAgICAzNywgICAvLyB0aW1lCi0gICAgICAgIDQyLCAgIC8vIG5hbWUKLSAgICAgICAgNDMs
ICAgLy8gbmljbmFtZQotICAgICAgICA1MywgICAvLyBkb21haW4KLSAgICAgICAgNzcsICAgLy8g
cHJpdi1yanMKLSAgICAgICAgNzksICAgLy8gZmluZ2VyCi0gICAgICAgIDg3LCAgIC8vIHR0eWxp
bmsKLSAgICAgICAgOTUsICAgLy8gc3VwZHVwCi0gICAgICAgIDEwMSwgIC8vIGhvc3RyaWFtZQot
ICAgICAgICAxMDIsICAvLyBpc28tdHNhcAotICAgICAgICAxMDMsICAvLyBncHBpdG5wCi0gICAg
ICAgIDEwNCwgIC8vIGFjci1uZW1hCi0gICAgICAgIDEwOSwgIC8vIFBPUDIKLSAgICAgICAgMTEw
LCAgLy8gUE9QMwotICAgICAgICAxMTEsICAvLyBzdW5ycGMKLSAgICAgICAgMTEzLCAgLy8gYXV0
aAotICAgICAgICAxMTUsICAvLyBTRlRQCi0gICAgICAgIDExNywgIC8vIHV1Y3AtcGF0aAotICAg
ICAgICAxMTksICAvLyBubnRwCi0gICAgICAgIDEyMywgIC8vIE5UUAotICAgICAgICAxMzUsICAv
LyBsb2Mtc3J2IC8gZXBtYXAKLSAgICAgICAgMTM5LCAgLy8gbmV0YmlvcwotICAgICAgICAxNDMs
ICAvLyBJTUFQMgotICAgICAgICAxNzksICAvLyBCR1AKLSAgICAgICAgMzg5LCAgLy8gTERBUAot
ICAgICAgICA0MjcsICAvLyBTTFAgKEFsc28gdXNlZCBieSBBcHBsZSBGaWxpbmcgUHJvdG9jb2wp
Ci0gICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCi0gICAgICAgIDUxMiwgIC8vIHByaW50IC8gZXhl
YwotICAgICAgICA1MTMsICAvLyBsb2dpbgotICAgICAgICA1MTQsICAvLyBzaGVsbAotICAgICAg
ICA1MTUsICAvLyBwcmludGVyCi0gICAgICAgIDUyNiwgIC8vIHRlbXBvCi0gICAgICAgIDUzMCwg
IC8vIGNvdXJpZXIKLSAgICAgICAgNTMxLCAgLy8gQ2hhdAotICAgICAgICA1MzIsICAvLyBuZXRu
ZXdzCi0gICAgICAgIDU0MCwgIC8vIFVVQ1AKLSAgICAgICAgNTQ4LCAgLy8gYWZwb3ZlcnRjcCBb
QXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDU1NiwgIC8vIHJlbW90ZWZzCi0gICAgICAgIDU2Mywg
IC8vIE5OVFArU1NMCi0gICAgICAgIDU4NywgIC8vIEVTTVRQCi0gICAgICAgIDYwMSwgIC8vIHN5
c2xvZy1jb25uCi0gICAgICAgIDYzNiwgIC8vIExEQVArU1NMCi0gICAgICAgIDk5MywgIC8vIElN
QVArU1NMCi0gICAgICAgIDk5NSwgIC8vIFBPUDMrU1NMCi0gICAgICAgIDIwNDksIC8vIE5GUwot
ICAgICAgICAzNjU5LCAvLyBhcHBsZS1zYXNsIC8gUGFzc3dvcmRTZXJ2ZXIgW0FwcGxlIGFkZGl0
aW9uXQotICAgICAgICA0MDQ1LCAvLyBsb2NrZAotICAgICAgICA0MTkwLCAvLyBNYW5hZ2VTaWV2
ZSBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDYwMDAsIC8vIFgxMQotICAgICAgICA2NjY1LCAv
LyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2NiwgLy8gQWx0ZXJu
YXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjcsIC8vIFN0YW5kYXJkIElSQyBb
QXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFk
ZGl0aW9uXQotICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0K
LSAgICAgICAgNjY3OSwgLy8gQWx0ZXJuYXRlIElSQyBTU0wgW0FwcGxlIGFkZGl0aW9uXQotICAg
ICAgICA2Njk3LCAvLyBJUkMrU1NMIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgaW52YWxpZFBv
cnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCi0gICAg
fTsKLQotICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3Qs
IGFsbG93IGl0LgotICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChzdGQ6OmJlZ2luKGJsb2NrZWRQ
b3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQb3J0TGlzdCkpKTsKLSAgICBpZiAoIXN0ZDo6Ymlu
YXJ5X3NlYXJjaChzdGQ6OmJlZ2luKGJsb2NrZWRQb3J0TGlzdCksIHN0ZDo6ZW5kKGJsb2NrZWRQ
b3J0TGlzdCksIHBvcnQudmFsdWUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8g
QWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgotICAg
IGlmICgocG9ydC52YWx1ZSgpID09IDIxIHx8IHBvcnQudmFsdWUoKSA9PSAyMikgJiYgdXJsLnBy
b3RvY29sSXMoImZ0cCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEFsbG93IGFu
eSBwb3J0IG51bWJlciBpbiBhIGZpbGUgVVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIgaXMgaWdu
b3JlZC4KLSAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGUiKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJM
KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VSVChwcm90b2NvbElzSW50ZXJuYWwodXJs
LCAiZGF0YSIpKTsKLQotICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJpZ2h0IGJlaGF2aW9yIHdo
ZW4gdGhlIFVSTCBoYXMgYSBjb21tYSBmaXJzdCwgYnV0IGEgc2VtaWNvbG9uIGxhdGVyPwotICAg
IC8vIEN1cnJlbnRseSB0aGlzIGNvZGUgd2lsbCBicmVhayBhdCB0aGUgc2VtaWNvbG9uIGluIHRo
YXQgY2FzZS4gTm90IHN1cmUgdGhhdCdzIGNvcnJlY3QuCi0gICAgYXV0byBpbmRleCA9IHVybC5m
aW5kKCc7JywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBpbmRleCA9
IHVybC5maW5kKCcsJywgNSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBUaGVyZSB3YXMgYW4gb2xkIGNvbW1lbnQgaGVyZSB0aGF0IG1hZGUgaXQgc291
bmQgbGlrZSB0aGlzIHNob3VsZCBiZSByZXR1cm5pbmcgdGV4dC9wbGFpbi4KLSAgICAgICAgLy8g
QnV0IHdlIGhhdmUgYmVlbiByZXR1cm5pbmcgZW1wdHkgc3RyaW5nIGhlcmUgZm9yIHNvbWUgdGlt
ZSwgc28gbm90IGNoYW5naW5nIGl0cyBiZWhhdmlvciBhdCB0aGlzIHRpbWUuCi0gICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLSAgICBpZiAoaW5kZXggPT0gNSkKLSAgICAgICAg
cmV0dXJuICJ0ZXh0L3BsYWluIl9zOwotICAgIEFTU0VSVChpbmRleCA+PSA1KTsKLSAgICByZXR1
cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7
Ci19Ci0KLVN0cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25l
ZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkK
LSAgICAgICAgcmV0dXJuIHN0cmluZygpOwotCi0gICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVu
Z3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7Ci19
Ci0KLVVSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYgcmVsYXRp
dmVQYXJ0KQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsg
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8nICsgcmVsYXRpdmVQYXJ0KTsKLX0KLQot
VVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQotewotICAgIHJldHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7Ci19Ci0K
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFVSTCYgdXJsKQot
ewotICAgIHRzIDw8IHVybC5zdHJpbmcoKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KLSNpZiAhUExB
VEZPUk0oQ09DT0EpICYmICFVU0UoU09VUCkKLXN0YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3Ry
aW5nVmlldyBzdHJpbmcpCi17Ci0gICAgYXV0byBjb3VudCA9IDA7Ci0KLSAgICBmb3IgKGNvbnN0
IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicpKSB7Ci0g
ICAgICAgIGlmIChjb3VudCA+PSA0KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIGNvbnN0IGF1dG8gbGVuZ3RoID0gb2N0ZXQubGVuZ3RoKCk7Ci0gICAgICAgIGlmICghbGVu
Z3RoIHx8IGxlbmd0aCA+IDMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
YXV0byB2YWx1ZSA9IDA7Ci0gICAgICAgIGZvciAoYXV0byBpID0gMHU7IGkgPCBsZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgY29uc3QgYXV0byBkaWdpdCA9IG9jdGV0W2ldOwotCi0gICAgICAg
ICAgICAvLyBQcm9oaWJpdCBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmIChkaWdpdCA+
ICc5JyB8fCBkaWdpdCA8ICghaSAmJiBsZW5ndGggPiAxID8gJzEnIDogJzAnKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIHZhbHVlID0gMTAgKiB2YWx1ZSAr
IChkaWdpdCAtICcwJyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodmFsdWUgPiAyNTUpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgY291bnQrKzsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gKGNvdW50ID09IDQpOwotfQotCi1zdGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNzKFN0
cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGVudW0gU2tpcFN0YXRlIHsgTm9uZSwgV2lsbFNraXAs
IFNraXBwaW5nLCBTa2lwcGVkLCBGaW5hbCB9OwotICAgIGF1dG8gc2tpcFN0YXRlID0gTm9uZTsK
LSAgICBhdXRvIGNvdW50ID0gMDsKLQotICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQgOiBzdHJp
bmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnOicpKSB7Ci0gICAgICAgIGlmIChjb3VudCA+
PSA4IHx8IHNraXBTdGF0ZSA9PSBGaW5hbCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgICAgICBjb25zdCBhdXRvIGxlbmd0aCA9IGhleHRldC5sZW5ndGgoKTsKLSAgICAgICAgaWYg
KCFsZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIDo6IG1heSBiZSB1c2VkIGFueXdoZXJlIHRvIHNr
aXAgMSB0byA4IGhleHRldHMsIGJ1dCBvbmx5IG9uY2UuCi0gICAgICAgICAgICBpZiAoc2tpcFN0
YXRlID09IFNraXBwZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
ICAgICBpZiAoc2tpcFN0YXRlID09IE5vbmUpCi0gICAgICAgICAgICAgICAgc2tpcFN0YXRlID0g
IWNvdW50ID8gV2lsbFNraXAgOiBTa2lwcGluZzsKLSAgICAgICAgICAgIGVsc2UgaWYgKHNraXBT
dGF0ZSA9PSBXaWxsU2tpcCkKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBTa2lwcGluZzsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5hbDsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNraXBTdGF0ZSA9
PSBXaWxsU2tpcCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoc2tp
cFN0YXRlID09IFNraXBwaW5nKQotICAgICAgICAgICAgc2tpcFN0YXRlID0gU2tpcHBlZDsKLQot
ICAgICAgICBpZiAobGVuZ3RoID4gNCkgewotICAgICAgICAgICAgLy8gQW4gSVB2NCBhZGRyZXNz
IG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBmaW5hbCB0d28gaGV4dGV0cy4KLSAgICAgICAg
ICAgIGlmICgoc2tpcFN0YXRlID09IE5vbmUgJiYgY291bnQgIT0gNikgfHwgKHNraXBTdGF0ZSA9
PSBTa2lwcGVkICYmIGNvdW50ID49IDYpIHx8ICFpc0lQdjRBZGRyZXNzKGhleHRldCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBza2lwU3RhdGUgPSBGaW5h
bDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChjb25z
dCBhdXRvIGNvZGVVbml0IDogaGV4dGV0LmNvZGVVbml0cygpKSB7Ci0gICAgICAgICAgICAvLyBJ
UHY2IGFsbG93cyBsZWFkaW5nIHplcm9lcy4KLSAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERp
Z2l0KGNvZGVVbml0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LQotICAgICAgICBjb3VudCsrOwotICAgIH0KLQotICAgIHJldHVybiAoY291bnQgPT0gOCAmJiBz
a2lwU3RhdGUgPT0gTm9uZSkgfHwgc2tpcFN0YXRlID09IFNraXBwZWQgfHwgc2tpcFN0YXRlID09
IEZpbmFsOwotfQotCi1ib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkK
LXsKLSAgICBpZiAoaG9zdC5maW5kKCc6JykgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBp
c0lQdjRBZGRyZXNzKGhvc3QpOwotCi0gICAgcmV0dXJuIGlzSVB2NkFkZHJlc3MoaG9zdCk7Ci19
Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE4MThiYTVkZGU3NTlmYmNmMGU5MDVmNGE5ZjUx
NTdkYjgxNjYwYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBVU0UoQ0YpCi10eXBlZGVm
IGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKLSNlbmRpZgotCi0jaWYgVVNFKFNPVVAp
Ci0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKLSNlbmRpZgotCi0jaWYgVVNFKEZPVU5EQVRJ
T04pCi1PQkpDX0NMQVNTIE5TVVJMOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotY2xhc3Mg
VGV4dFN0cmVhbTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVUkxUZXh0RW5j
b2RpbmcgewotcHVibGljOgotICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVS
TFBhcnNpbmcoU3RyaW5nVmlldykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgflVSTFRleHRFbmNv
ZGluZygpIHsgfTsKLX07Ci0KLXN0cnVjdCBVUkxIYXNoOwotCi1jbGFzcyBVUkwgewotcHVibGlj
OgotICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgot
ICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9Ci0KLSAgICBleHBsaWNpdCBVUkwoV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAgLy8gUmVzb2x2
ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQs
IHRoZQotICAgIC8vIFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkg
Y2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0eSwgaW4g
d2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMKLSAgICAv
LyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRo
aXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5r
IGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMKLSAgICAv
LyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4KLSAgICBX
RUJDT1JFX0VYUE9SVCBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZl
LCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KGNvbnN0IFN0cmluZyYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBVUkwgZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25z
dCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25z
dDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNob3VsZCBiZSBoYXJtb25p
emVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxsIG9yIHRoZSBlbXB0eSBz
dHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8vIHN0YW5kYXJkIFN0cmlu
ZyBjb25zdHJ1Y3Rvci4KLQotICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkg
aWYgeW91IG5lZWQgdG8gdXNlIGEgVVJMIG9uIGFub3RoZXIKLSAgICAvLyB0aHJlYWQuIFNpbmNl
IHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdz
Ci0gICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGlzb2xhdGVkQ29weSgpIG92
ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIGlzb2xhdGVk
Q29weSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29sIGlzRW1w
dHkoKSBjb25zdDsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4KLSAgICAv
LyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQuCi0gICAg
Ym9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsg
fQotCi0gICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hp
Y2FsKCk7IH0KLSAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBT
dHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxl
bmd0aCA9IDEwMjQpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBwcm90
b2NvbCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyB1c2VyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHBhc3MoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGF0aCgpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBxdWVyeSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotCi0gICAgYm9vbCBoYXNVc2Vy
bmFtZSgpIGNvbnN0OwotICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKLSAgICBib29sIGhh
c1F1ZXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVudCgpIGNvbnN0OwotICAgIGJvb2wg
aGFzUGF0aCgpIGNvbnN0OwotCi0gICAgLy8gVW5saWtlIHVzZXIoKSBhbmQgcGFzcygpLCB0aGVz
ZSBmdW5jdGlvbnMgZG9uJ3QgZGVjb2RlIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAgLy8gVGhpcyBp
cyBuZWNlc3NhcnkgZm9yIGFjY3VyYXRlIHJvdW5kLXRyaXBwaW5nLCBiZWNhdXNlIGVuY29kaW5n
IGRvZXNuJ3QgZW5jb2RlICclJyBjaGFyYWN0ZXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBlbmNvZGVkVXNlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVk
UGFzcygpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGJhc2VBc1N0cmluZygp
IGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkgY29u
c3Q7Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9jb2wg
aXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCi0gICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1bWVu
dC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHByb3RvY29sSXMoY29uc3QgY2hhciopIGNvbnN0OwotICAgIGJvb2wgcHJvdG9jb2xJcyhT
dHJpbmdWaWV3KSBjb25zdDsKLSAgICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3QgeyByZXR1
cm4gcHJvdG9jb2xJcygiYmxvYiIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
cHJvdG9jb2xJc0Fib3V0KCkgY29uc3Q7Ci0gICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0Owot
ICAgIGJvb2wgY2Fubm90QmVBQmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fubm90QmVBQmFz
ZVVSTDsgfQotCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc01hdGNoaW5nRG9tYWluKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRQcm90b2NvbChj
b25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2
b2lkIHJlbW92ZVBvcnQoKTsKLSAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOwotCi0g
ICAgLy8gSW5wdXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCi0gICAgdm9p
ZCBzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKLQotICAgIHZvaWQgc2V0VXNlcihjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBJ
ZiB5b3UgcGFzcyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1
bHRpbmcgcGF0aAotICAgIC8vIHdpbGwgYmUgIi8iLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0UGF0aChjb25zdCBTdHJpbmcmKTsKLQotICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0
aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVkCi0gICAgLy8g
Zm9yIHlvdS4gU2V0dGluZyB0aGUgcXVlcnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZl
IGEgIj8iIGluIHRoZQotICAgIC8vIFVSTCAod2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xl
YXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVsbCBzdHJpbmcuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRRdWVyeShjb25zdCBTdHJpbmcmKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZ1ZpZXcpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVF1ZXJ5QW5kRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBob3N0SXNJUEFkZHJlc3MoU3RyaW5nVmlldyk7Ci0KLSAgICB1bnNpZ25lZCBw
YXRoU3RhcnQoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7Ci0gICAgdW5z
aWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7Ci0KLSAgICBvcGVyYXRvciBjb25zdCBT
dHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KLQotI2lmIFVTRShDRikKLSAgICBX
RUJDT1JFX0VYUE9SVCBVUkwoQ0ZVUkxSZWYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0
cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKFNPVVAp
Ci0gICAgVVJMKFNvdXBVUkkqKTsKLSAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IGNyZWF0ZVNvdXBV
UkkoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgV0VCQ09SRV9F
WFBPUlQgVVJMKE5TVVJMKik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgTlNVUkwqKCkg
Y29uc3Q7Ci0jZW5kaWYKLSNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9yIE5TU3RyaW5nKigp
IGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0jZW5kaWYKLQotI2lmbmRlZiBOREVCVUcKLSAg
ICB2b2lkIHByaW50KCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgVVJMJik7Ci0gICAgdGVtcGxhdGUg
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFVSTD4gZGVjb2RlKERlY29kZXIm
KTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVVJMUGFyc2VyOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpOwotICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29u
c3QgU3RyaW5nJiwgY29uc3QgY2hhciopOwotICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3Rvcjxj
aGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0OwotICAgIHVuc2lnbmVkIGhvc3RTdGFydCgpIGNvbnN0
OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBm
cmllbmQgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3Qg
VVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZnJpZW5kIGJvb2wgaG9zdHNBcmVFcXVhbChjb25z
dCBVUkwmLCBjb25zdCBVUkwmKTsKLQotICAgIFN0cmluZyBtX3N0cmluZzsKLQotICAgIHVuc2ln
bmVkIG1faXNWYWxpZCA6IDE7Ci0gICAgdW5zaWduZWQgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5
IDogMTsKLSAgICB1bnNpZ25lZCBtX2Nhbm5vdEJlQUJhc2VVUkwgOiAxOwotCi0gICAgLy8gVGhp
cyBpcyBvdXQgb2Ygb3JkZXIgdG8gYWxpZ24gdGhlIGJpdHMgYmV0dGVyLiBUaGUgcG9ydCBpcyBh
ZnRlciB0aGUgaG9zdC4KLSAgICB1bnNpZ25lZCBtX3BvcnRMZW5ndGggOiAzOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgbWF4UG9ydExlbmd0aCA9ICgxIDw8IDMpIC0gMTsKLQotICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4U2NoZW1lTGVuZ3RoID0gKDEgPDwgMjYpIC0g
MTsKLSAgICB1bnNpZ25lZCBtX3NjaGVtZUVuZCA6IDI2OwotICAgIHVuc2lnbmVkIG1fdXNlclN0
YXJ0OwotICAgIHVuc2lnbmVkIG1fdXNlckVuZDsKLSAgICB1bnNpZ25lZCBtX3Bhc3N3b3JkRW5k
OwotICAgIHVuc2lnbmVkIG1faG9zdEVuZDsKLSAgICB1bnNpZ25lZCBtX3BhdGhBZnRlckxhc3RT
bGFzaDsKLSAgICB1bnNpZ25lZCBtX3BhdGhFbmQ7Ci0gICAgdW5zaWduZWQgbV9xdWVyeUVuZDsK
LX07Ci0KLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICog
c2l6ZW9mKHVuc2lnbmVkKSwgIlVSTCBzaG91bGQgc3RheSBzbWFsbCIpOwotCi10ZW1wbGF0ZSA8
Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgVVJMOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
LXsKLSAgICBlbmNvZGVyIDw8IG1fc3RyaW5nOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rl
cj4KLWJvb2wgVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVVJMJiB1cmwpCi17Ci0gICAg
YXV0byBvcHRpb25hbFVSTCA9IFVSTDo6ZGVjb2RlKGRlY29kZXIpOwotICAgIGlmICghb3B0aW9u
YWxVUkwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1cmwgPSBXVEZNb3ZlKCpvcHRpb25h
bFVSTCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgot
c3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAg
U3RyaW5nIHN0cmluZzsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmluZykpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgc3RyaW5nKTsKLX0K
LQotV0VCQ09SRV9FWFBPUlQgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBlcXVhbElnbm9yaW5n
UXVlcnlBbmRGcmFnbWVudChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYp
OwotV0VCQ09SRV9FWFBPUlQgYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYpOwotCi1XRUJDT1JFX0VYUE9SVCBjb25zdCBVUkwmIGJsYW5rVVJMKCk7Ci0KLS8vIEZ1bmN0
aW9ucyB0byBkbyBVUkwgb3BlcmF0aW9ucyBvbiBzdHJpbmdzLgotLy8gVGhlc2UgYXJlIG9wZXJh
dGlvbnMgdGhhdCBhcmVuJ3QgZmFzdGVyIG9uIGEgcGFyc2VkIFVSTC4KLS8vIFRoZXNlIGFyZSBh
bHNvIGRpZmZlcmVudCBmcm9tIHRoZSBVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCBy
ZXF1aXJlIHRoZSBzdHJpbmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgotLy8gVGhp
cyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBh
cmUgbm90IG5lY2Vzc2FyaWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgVVJMLgotCi1XRUJDT1JFX0VY
UE9SVCBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3Rv
Y29sKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3Ry
aW5nJiB1cmwpOwotYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCk7Ci1X
RUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1
cmwpOwotCi1zdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0
cmluZ1ZpZXcgcHJvdG9jb2wpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wodWludDE2X3QgcG9ydCwgU3RyaW5nVmlldyBwcm90b2NvbCk7Ci1XRUJDT1JFX0VY
UE9SVCBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYpOyAvLyBCbGFja2xpc3QgcG9ydHMgdGhh
dCBzaG91bGQgbmV2ZXIgYmUgdXNlZCBmb3IgV2ViIHJlc291cmNlcy4KLQotV0VCQ09SRV9FWFBP
UlQgdm9pZCByZWdpc3RlckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xGb3JUZXN0aW5nKHVpbnQxNl90
IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVh
ckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7Ci0KLWJvb2wgaXNWYWxpZFBy
b3RvY29sKGNvbnN0IFN0cmluZyYpOwotCi1TdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25z
dCBTdHJpbmcmIHVybCk7Ci0KLS8vIEZJWE1FOiBUaGlzIGlzIGEgd3JvbmcgY29uY2VwdCB0byBl
eHBvc2UsIGRpZmZlcmVudCBwYXJ0cyBvZiBhIFVSTCBuZWVkIGRpZmZlcmVudCBlc2NhcGluZyBw
ZXIgdGhlIFVSTCBTdGFuZGFyZC4KLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBlbmNvZGVXaXRoVVJM
RXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwotCi0vLyBJbmxpbmVzLgotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIHJldHVy
biBhLnN0cmluZygpID09IGIuc3RyaW5nKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIpCi17Ci0gICAgcmV0dXJuIGEuc3RyaW5nKCkg
PT0gYjsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0
IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYSA9PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIHJldHVybiBh
LnN0cmluZygpICE9IGIuc3RyaW5nKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIpCi17Ci0gICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0g
YjsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFVS
TCYgYikKLXsKLSAgICByZXR1cm4gYSAhPSBiLnN0cmluZygpOwotfQotCi0vLyBJbmxpbmUgdmVy
c2lvbnMgb2Ygc29tZSBub24tR29vZ2xlVVJMIGZ1bmN0aW9ucyBzbyB3ZSBjYW4gZ2V0IGlubGlu
aW5nCi0vLyB3aXRob3V0IGhhdmluZyB0byBoYXZlIGEgbG90IG9mIHVnbHkgaWZkZWZzIGluIHRo
ZSBjbGFzcyBkZWZpbml0aW9uLgotCi1pbmxpbmUgYm9vbCBVUkw6OmlzTnVsbCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOwotfQotCi1pbmxpbmUgYm9vbCBVUkw6Omlz
RW1wdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7Ci19Ci0KLWlu
bGluZSBib29sIFVSTDo6aXNWYWxpZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faXNWYWxpZDsK
LX0KLQotaW5saW5lIGJvb2wgVVJMOjpoYXNQYXRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9w
YXRoRW5kICE9IG1faG9zdEVuZCArIG1fcG9ydExlbmd0aDsKLX0KLQotaW5saW5lIGJvb2wgVVJM
OjpoYXNVc2VybmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdXNlckVuZCA+IG1fdXNlclN0
YXJ0OwotfQotCi1pbmxpbmUgYm9vbCBVUkw6Omhhc1Bhc3N3b3JkKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9wYXNzd29yZEVuZCA+IChtX3VzZXJFbmQgKyAxKTsKLX0KLQotaW5saW5lIGJvb2wg
VVJMOjpoYXNRdWVyeSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcXVlcnlFbmQgPiBtX3BhdGhF
bmQ7Ci19Ci0KLWlubGluZSBib29sIFVSTDo6aGFzRnJhZ21lbnQoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2lzVmFsaWQgJiYgbV9zdHJpbmcubGVuZ3RoKCkgPiBtX3F1ZXJ5RW5kOwotfQotCi1p
bmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBVUkw6
OnBhdGhTdGFydCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faG9zdEVuZCArIG1fcG9ydExlbmd0
aDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aEVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcGF0aEVuZDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aEFmdGVyTGFzdFNs
YXNoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci19Ci0KLVdU
Rjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBVUkwmKTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLXRlbXBsYXRlPD4g
c3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlVSTD47Ci10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNo
VHJhaXRzPFdlYkNvcmU6OlVSTD47Ci19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTEhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTEhhc2guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFkMGFiOTZkYTM1ZDMx
YWM4ZGI0ZWI0ZGFiZDNmNGUxNTkyYjgxYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpZm5kZWYgVVJMSGFzaF9oCi0jZGVmaW5lIFVSTEhhc2hfaAotCi0j
aW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBz
dHJ1Y3QgVVJMSGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFVSTCYg
a2V5KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5LnN0cmluZygpLmltcGwoKS0+
aGFzaCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVJM
JiBhLCBjb25zdCBVUkwmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmdI
YXNoOjplcXVhbChhLnN0cmluZygpLCBiLnN0cmluZygpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7
Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQot
Ly8gVVJMSGFzaCBpcyB0aGUgZGVmYXVsdCBoYXNoIGZvciBTdHJpbmcKLXRlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlVSTD4gewotICAgIHVzaW5nIEhhc2ggPSBXZWJDb3Jl
OjpVUkxIYXNoOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpV
Ukw+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdlYkNvcmU6OlVSTD4geyB9OwotCi19IC8vIG5h
bWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIFVSTEhhc2hfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TFBhcnNlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YmFjNDlkOWI2NWRl
OGIxMDRkNWE2Zjc1YjI1ODBiOGI4OTJjNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDI5MjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVSTFBhcnNlci5oIgotCi0jaW5jbHVkZSAiTG9nZ2lu
Zy5oIgotI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgotI2luY2x1ZGUgPGFy
cmF5PgotI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KLSNpbmNs
dWRlIDx1bmljb2RlL3V0eXBlcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNkZWZpbmUg
VVJMX1BBUlNFUl9ERUJVR0dJTkcgMAotCi0jaWYgVVJMX1BBUlNFUl9ERUJVR0dJTkcKLSNkZWZp
bmUgVVJMX1BBUlNFUl9MT0coLi4uKSBMT0coVVJMUGFyc2VyLCBfX1ZBX0FSR1NfXykKLSNlbHNl
Ci0jZGVmaW5lIFVSTF9QQVJTRVJfTE9HKC4uLikKLSNlbmRpZgotICAgIAotdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWNsYXNzIENvZGVQb2ludEl0ZXJhdG9yIHsKLXB1YmxpYzoK
LSAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yKCkgeyB9Ci0gICAgQUxXQVlTX0lO
TElORSBDb2RlUG9pbnRJdGVyYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBiZWdpbiwgY29uc3Qg
Q2hhcmFjdGVyVHlwZSogZW5kKQotICAgICAgICA6IG1fYmVnaW4oYmVnaW4pCi0gICAgICAgICwg
bV9lbmQoZW5kKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBDb2RlUG9p
bnRJdGVyYXRvcihjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgYmVnaW4sIGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yJiBlbmQpCi0gICAgICAgIDogQ29kZVBvaW50SXRlcmF0b3IoYmVnaW4ubV9iZWdp
biwgZW5kLm1fYmVnaW4pCi0gICAgewotICAgICAgICBBU1NFUlQoZW5kLm1fYmVnaW4gPj0gYmVn
aW4ubV9iZWdpbik7Ci0gICAgfQotICAgIAotICAgIEFMV0FZU19JTkxJTkUgVUNoYXIzMiBvcGVy
YXRvciooKSBjb25zdDsKLSAgICBBTFdBWVNfSU5MSU5FIENvZGVQb2ludEl0ZXJhdG9yJiBvcGVy
YXRvcisrKCk7Ci0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2Rl
UG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9iZWdp
biA9PSBvdGhlci5tX2JlZ2luCi0gICAgICAgICAgICAmJiBtX2VuZCA9PSBvdGhlci5tX2VuZDsK
LSAgICB9Ci0gICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29kZVBvaW50
SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotICAg
IAotICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBD
b2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpCi0gICAgewotICAgICAgICBtX2JlZ2luID0gb3RoZXIu
bV9iZWdpbjsKLSAgICAgICAgbV9lbmQgPSBvdGhlci5tX2VuZDsKLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBhdEVuZCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBBU1NFUlQobV9iZWdpbiA8PSBtX2VuZCk7Ci0gICAgICAgIHJldHVybiBtX2Jl
Z2luID49IG1fZW5kOwotICAgIH0KLSAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBjb2Rl
VW5pdHNTaW5jZShjb25zdCBDaGFyYWN0ZXJUeXBlKiByZWZlcmVuY2UpIGNvbnN0Ci0gICAgewot
ICAgICAgICBBU1NFUlQobV9iZWdpbiA+PSByZWZlcmVuY2UpOwotICAgICAgICByZXR1cm4gbV9i
ZWdpbiAtIHJlZmVyZW5jZTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBjb2Rl
VW5pdHNTaW5jZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gY29kZVVuaXRzU2luY2Uob3RoZXIubV9iZWdpbik7Ci0gICAgfQotICAg
IAotcHJpdmF0ZToKLSAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBtX2JlZ2luIHsgbnVsbHB0ciB9
OwotICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIG1fZW5kIHsgbnVsbHB0ciB9OwotfTsKLQotdGVt
cGxhdGU8PgotQUxXQVlTX0lOTElORSBVQ2hhcjMyIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPjo6
b3BlcmF0b3IqKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWF0RW5kKCkpOwotICAgIHJldHVybiAq
bV9iZWdpbjsKLX0KLQotdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBhdXRvIENvZGVQb2ludEl0
ZXJhdG9yPExDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgotewotICAg
IG1fYmVnaW4rKzsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBsYXRlPD4KLUFMV0FZU19J
TkxJTkUgVUNoYXIzMiBDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj46Om9wZXJhdG9yKigpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUKCFhdEVuZCgpKTsKLSAgICBVQ2hhcjMyIGM7Ci0gICAgVTE2X0dFVCht
X2JlZ2luLCAwLCAwLCBtX2VuZCAtIG1fYmVnaW4sIGMpOwotICAgIHJldHVybiBjOwotfQotCi10
ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIGF1dG8gQ29kZVBvaW50SXRlcmF0b3I8VUNoYXI+Ojpv
cGVyYXRvcisrKCkgLT4gQ29kZVBvaW50SXRlcmF0b3ImCi17Ci0gICAgdW5zaWduZWQgaSA9IDA7
Ci0gICAgc2l6ZV90IGxlbmd0aCA9IG1fZW5kIC0gbV9iZWdpbjsKLSAgICBVMTZfRldEXzEobV9i
ZWdpbiwgaSwgbGVuZ3RoKTsKLSAgICBtX2JlZ2luICs9IGk7Ci0gICAgcmV0dXJuICp0aGlzOwot
fQotICAgIAotQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBhcHBlbmRDb2RlUG9pbnQoVmVjdG9y
PFVDaGFyPiYgZGVzdGluYXRpb24sIFVDaGFyMzIgY29kZVBvaW50KQotewotICAgIGlmIChVX0lT
X0JNUChjb2RlUG9pbnQpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uLmFwcGVuZChzdGF0aWNfY2Fz
dDxVQ2hhcj4oY29kZVBvaW50KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZGVzdGlu
YXRpb24ucmVzZXJ2ZUNhcGFjaXR5KGRlc3RpbmF0aW9uLnNpemUoKSArIDIpOwotICAgIGRlc3Rp
bmF0aW9uLnVuY2hlY2tlZEFwcGVuZChVMTZfTEVBRChjb2RlUG9pbnQpKTsKLSAgICBkZXN0aW5h
dGlvbi51bmNoZWNrZWRBcHBlbmQoVTE2X1RSQUlMKGNvZGVQb2ludCkpOwotfQotCi1lbnVtIFVS
TENoYXJhY3RlckNsYXNzIHsKLSAgICBVc2VySW5mbyA9IDB4MSwKLSAgICBEZWZhdWx0ID0gMHgy
LAotICAgIEZvcmJpZGRlbkhvc3QgPSAweDQsCi0gICAgUXVlcnlQZXJjZW50ID0gMHg4LAotICAg
IFNsYXNoUXVlc3Rpb25Pckhhc2ggPSAweDEwLAotICAgIFZhbGlkU2NoZW1lID0gMHgyMCwKLX07
Ci0KLXN0YXRpYyBjb25zdCB1aW50OF90IGNoYXJhY3RlckNsYXNzVGFibGVbMjU2XSA9IHsKLSAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAw
eDAKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MQotICAgIFVz
ZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHgyCi0gICAgVXNlckluZm8gfCBE
ZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQsIC8vIDB4NAotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg1Ci0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweDYK
LSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4NwotICAgIFVzZXJJ
bmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHg4Ci0gICAgVXNlckluZm8gfCBEZWZh
dWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHg5Ci0gICAgVXNlckluZm8g
fCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50IHwgRm9yYmlkZGVuSG9zdCwgLy8gMHhBCi0gICAgVXNl
ckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQZXJjZW50LCAvLyAweEIKLSAgICBVc2VySW5mbyB8IERl
ZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4QwotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1
ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vIDB4RAotICAgIFVzZXJJbmZvIHwgRGVmYXVs
dCB8IFF1ZXJ5UGVyY2VudCwgLy8gMHhFCi0gICAgVXNlckluZm8gfCBEZWZhdWx0IHwgUXVlcnlQ
ZXJjZW50LCAvLyAweEYKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8v
IDB4MTAKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTEKLSAg
ICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTIKLSAgICBVc2VySW5m
byB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTMKLSAgICBVc2VySW5mbyB8IERlZmF1
bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVy
eVBlcmNlbnQsIC8vIDB4MTUKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQs
IC8vIDB4MTYKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTcK
LSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTgKLSAgICBVc2Vy
SW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MTkKLSAgICBVc2VySW5mbyB8IERl
ZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUEKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBR
dWVyeVBlcmNlbnQsIC8vIDB4MUIKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNl
bnQsIC8vIDB4MUMKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4
MUQKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUUKLSAgICBV
c2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vIDB4MUYKLSAgICBVc2VySW5mbyB8
IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0LCAvLyAnICcKLSAgICAwLCAv
LyAnIScKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQsIC8vICciJwotICAg
IFVzZXJJbmZvIHwgRGVmYXVsdCB8IFF1ZXJ5UGVyY2VudCB8IFNsYXNoUXVlc3Rpb25Pckhhc2gg
fCBGb3JiaWRkZW5Ib3N0LCAvLyAnIycKLSAgICAwLCAvLyAnJCcKLSAgICBGb3JiaWRkZW5Ib3N0
LCAvLyAnJScKLSAgICAwLCAvLyAnJicKLSAgICAwLCAvLyAnXCcnCi0gICAgMCwgLy8gJygnCi0g
ICAgMCwgLy8gJyknCi0gICAgMCwgLy8gJyonCi0gICAgVmFsaWRTY2hlbWUsIC8vICcrJwotICAg
IDAsIC8vICcsJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnLScKLSAgICBWYWxpZFNjaGVtZSwgLy8g
Jy4nCi0gICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9zdCwg
Ly8gJy8nCi0gICAgVmFsaWRTY2hlbWUsIC8vICcwJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnMScK
LSAgICBWYWxpZFNjaGVtZSwgLy8gJzInCi0gICAgVmFsaWRTY2hlbWUsIC8vICczJwotICAgIFZh
bGlkU2NoZW1lLCAvLyAnNCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJzUnCi0gICAgVmFsaWRTY2hl
bWUsIC8vICc2JwotICAgIFZhbGlkU2NoZW1lLCAvLyAnNycKLSAgICBWYWxpZFNjaGVtZSwgLy8g
JzgnCi0gICAgVmFsaWRTY2hlbWUsIC8vICc5JwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9z
dCwgLy8gJzonCi0gICAgVXNlckluZm8sIC8vICc7JwotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCB8
IFF1ZXJ5UGVyY2VudCB8IEZvcmJpZGRlbkhvc3QsIC8vICc8JwotICAgIFVzZXJJbmZvLCAvLyAn
PScKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBRdWVyeVBlcmNlbnQgfCBGb3JiaWRkZW5Ib3N0
LCAvLyAnPicKLSAgICBVc2VySW5mbyB8IERlZmF1bHQgfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwg
Rm9yYmlkZGVuSG9zdCwgLy8gJz8nCi0gICAgVXNlckluZm8gfCBGb3JiaWRkZW5Ib3N0LCAvLyAn
QCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0EnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdCJwotICAg
IFZhbGlkU2NoZW1lLCAvLyAnQycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ0QnCi0gICAgVmFsaWRT
Y2hlbWUsIC8vICdFJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnRicKLSAgICBWYWxpZFNjaGVtZSwg
Ly8gJ0cnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdIJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnSScK
LSAgICBWYWxpZFNjaGVtZSwgLy8gJ0onCi0gICAgVmFsaWRTY2hlbWUsIC8vICdLJwotICAgIFZh
bGlkU2NoZW1lLCAvLyAnTCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ00nCi0gICAgVmFsaWRTY2hl
bWUsIC8vICdOJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnTycKLSAgICBWYWxpZFNjaGVtZSwgLy8g
J1AnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdRJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnUicKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJ1MnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdUJwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnVScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1YnCi0gICAgVmFsaWRTY2hlbWUs
IC8vICdXJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnWCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ1kn
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICdaJwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwg
Ly8gJ1snCi0gICAgVXNlckluZm8gfCBTbGFzaFF1ZXN0aW9uT3JIYXNoIHwgRm9yYmlkZGVuSG9z
dCwgLy8gJ1xcJwotICAgIFVzZXJJbmZvIHwgRm9yYmlkZGVuSG9zdCwgLy8gJ10nCi0gICAgVXNl
ckluZm8sIC8vICdeJwotICAgIDAsIC8vICdfJwotICAgIFVzZXJJbmZvIHwgRGVmYXVsdCwgLy8g
J2AnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdhJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnYicKLSAg
ICBWYWxpZFNjaGVtZSwgLy8gJ2MnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdkJwotICAgIFZhbGlk
U2NoZW1lLCAvLyAnZScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2YnCi0gICAgVmFsaWRTY2hlbWUs
IC8vICdnJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnaCcKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ2kn
Ci0gICAgVmFsaWRTY2hlbWUsIC8vICdqJwotICAgIFZhbGlkU2NoZW1lLCAvLyAnaycKLSAgICBW
YWxpZFNjaGVtZSwgLy8gJ2wnCi0gICAgVmFsaWRTY2hlbWUsIC8vICdtJwotICAgIFZhbGlkU2No
ZW1lLCAvLyAnbicKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ28nCi0gICAgVmFsaWRTY2hlbWUsIC8v
ICdwJwotICAgIFZhbGlkU2NoZW1lLCAvLyAncScKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3InCi0g
ICAgVmFsaWRTY2hlbWUsIC8vICdzJwotICAgIFZhbGlkU2NoZW1lLCAvLyAndCcKLSAgICBWYWxp
ZFNjaGVtZSwgLy8gJ3UnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd2JwotICAgIFZhbGlkU2NoZW1l
LCAvLyAndycKLSAgICBWYWxpZFNjaGVtZSwgLy8gJ3gnCi0gICAgVmFsaWRTY2hlbWUsIC8vICd5
JwotICAgIFZhbGlkU2NoZW1lLCAvLyAneicKLSAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8vICd7
JwotICAgIFVzZXJJbmZvLCAvLyAnfCcKLSAgICBVc2VySW5mbyB8IERlZmF1bHQsIC8vICd9Jwot
ICAgIDAsIC8vICd+JwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg3RgotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg4MAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MQotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg4MgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4MwotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg4NAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4
NgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4NwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4OAot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4OQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4QQotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg4QgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4QwotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHg4RAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg4RQotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHg4RgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MAotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHg5MQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5MgotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHg5MwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NAotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHg5NQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5NgotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHg5NwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5OAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5
OQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5Qgot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5QwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RAotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHg5RQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHg5RgotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhBMAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMQotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhBMgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBMwotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhBNAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNQotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhBNgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBNwotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhBOAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBOQotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhBQQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBQgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhB
QwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRQot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhBRgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMAotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhCMQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCMgotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhCMwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNAotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhCNQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCNgotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhCNwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCOAotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhCOQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQQotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhCQgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCQwotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhCRAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhCRQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhC
RgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMQot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDMwotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhDNAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNQotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhDNgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDNwotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhDOAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDOQotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhDQQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDQgotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhDQwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRAotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhDRQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhDRgotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhEMAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhE
MgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEMwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENAot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhENgotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhENwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEOAotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhEOQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQQotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhEQgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhEQwotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhERAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhERQotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhERgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMAotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhFMQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFMgotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhFMwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhF
NQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFNwot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFOAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFOQotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhFQQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFQgotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhFQwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRAotICAgIFF1ZXJ5
UGVyY2VudCwgLy8gMHhFRQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhFRgotICAgIFF1ZXJ5UGVy
Y2VudCwgLy8gMHhGMAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMQotICAgIFF1ZXJ5UGVyY2Vu
dCwgLy8gMHhGMgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGMwotICAgIFF1ZXJ5UGVyY2VudCwg
Ly8gMHhGNAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNQotICAgIFF1ZXJ5UGVyY2VudCwgLy8g
MHhGNgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGNwotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhG
OAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGOQotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQQot
ICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQgotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGQwotICAg
IFF1ZXJ5UGVyY2VudCwgLy8gMHhGRAotICAgIFF1ZXJ5UGVyY2VudCwgLy8gMHhGRQotICAgIFF1
ZXJ5UGVyY2VudCwgLy8gMHhGRgotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0MwQ29udHJvbChDaGFyYWN0ZXJUeXBlIGNo
YXJhY3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9IDB4MUY7IH0KLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNDMENvbnRyb2xPclNw
YWNlKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0gMHgyMDsg
fQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMg
Ym9vbCBpc1RhYk9yTmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hh
cmFjdGVyIDw9IDB4RCAmJiBjaGFyYWN0ZXIgPj0gMHg5ICYmIGNoYXJhY3RlciAhPSAweEIgJiYg
Y2hhcmFjdGVyICE9IDB4QzsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0luU2ltcGxlRW5jb2RlU2V0KENoYXJhY3RlclR5cGUg
Y2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPiAweDdFIHx8IGlzQzBDb250cm9sKGNoYXJh
Y3Rlcik7IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUg
c3RhdGljIGJvb2wgaXNJbkRlZmF1bHRFbmNvZGVTZXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIp
IHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xhc3NUYWJsZVtjaGFyYWN0
ZXJdICYgRGVmYXVsdDsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlT
X0lOTElORSBzdGF0aWMgYm9vbCBpc0luVXNlckluZm9FbmNvZGVTZXQoQ2hhcmFjdGVyVHlwZSBj
aGFyYWN0ZXIpIHsgcmV0dXJuIGNoYXJhY3RlciA+IDB4N0UgfHwgY2hhcmFjdGVyQ2xhc3NUYWJs
ZVtjaGFyYWN0ZXJdICYgVXNlckluZm87IH0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNQZXJjZW50T3JOb25BU0NJSShDaGFyYWN0
ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gIWlzQVNDSUkoY2hhcmFjdGVyKSB8fCBjaGFyYWN0
ZXIgPT0gJyUnOyB9Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBib29sIGlzU2xhc2hRdWVzdGlvbk9ySGFzaChDaGFyYWN0ZXJUeXBlIGNoYXJh
Y3RlcikgeyByZXR1cm4gY2hhcmFjdGVyIDw9ICdcXCcgJiYgY2hhcmFjdGVyQ2xhc3NUYWJsZVtj
aGFyYWN0ZXJdICYgU2xhc2hRdWVzdGlvbk9ySGFzaDsgfQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1ZhbGlkU2NoZW1lQ2hhcmFj
dGVyKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVybiBjaGFyYWN0ZXIgPD0gJ3onICYm
IGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFZhbGlkU2NoZW1lOyB9Ci10ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzRm9y
YmlkZGVuSG9zdENvZGVQb2ludChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikgeyByZXR1cm4gY2hh
cmFjdGVyIDw9ICddJyAmJiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NoYXJhY3Rlcl0gJiBGb3JiaWRk
ZW5Ib3N0OyB9Ci1BTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIHNob3VsZFBlcmNlbnRFbmNvZGVR
dWVyeUJ5dGUodWludDhfdCBieXRlLCBjb25zdCBib29sJiB1cmxJc1NwZWNpYWwpCi17Ci0gICAg
aWYgKGNoYXJhY3RlckNsYXNzVGFibGVbYnl0ZV0gJiBRdWVyeVBlcmNlbnQpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGlmIChieXRlID09ICdcJycgJiYgdXJsSXNTcGVjaWFsKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgVVJMUGFyc2VyOjpp
c0luVXNlckluZm9FbmNvZGVTZXQoVUNoYXIgYykKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6aXNJ
blVzZXJJbmZvRW5jb2RlU2V0KGMpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlLCBVUkxQYXJzZXI6OlJlcG9ydFN5bnRheFZpb2xhdGlvbiByZXBvcnRTeW50YXhWaW9sYXRp
b24+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphZHZhbmNlKENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pCi17Ci0gICAg
KytpdGVyYXRvcjsKLSAgICB3aGlsZSAoVU5MSUtFTFkoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNU
YWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgaWYgKHJlcG9ydFN5bnRheFZpb2xh
dGlvbiA9PSBSZXBvcnRTeW50YXhWaW9sYXRpb246OlllcykKLSAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICAgICAgKytp
dGVyYXRvcjsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1i
b29sIFVSTFBhcnNlcjo6dGFrZXNUd29BZHZhbmNlc1VudGlsRW5kKENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRT
eW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9y
dFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKLSAgICByZXR1cm4gaXRlcmF0b3IuYXRF
bmQoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJ
TkUgYm9vbCBVUkxQYXJzZXI6OmlzV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpIHx8
ICFpc0FTQ0lJQWxwaGEoKml0ZXJhdG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGFk
dmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3Ip
OwotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCppdGVyYXRvciA9PSAnOicpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChVTkxJ
S0VMWSgqaXRlcmF0b3IgPT0gJ3wnKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgVVJMUGFyc2VyOjphcHBlbmRUb0FTQ0lJ
QnVmZmVyKFVDaGFyMzIgY29kZVBvaW50KQotewotICAgIEFTU0VSVChpc0FTQ0lJKGNvZGVQb2lu
dCkpOwotICAgIGlmIChVTkxJS0VMWShtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpCi0gICAgICAg
IG1fYXNjaWlCdWZmZXIuYXBwZW5kKGNvZGVQb2ludCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgdm9p
ZCBVUkxQYXJzZXI6OmFwcGVuZFRvQVNDSUlCdWZmZXIoY29uc3QgY2hhciogY2hhcmFjdGVycywg
c2l6ZV90IGxlbmd0aCkKLXsKLSAgICBpZiAoVU5MSUtFTFkobV9kaWRTZWVTeW50YXhWaW9sYXRp
b24pKQotICAgICAgICBtX2FzY2lpQnVmZmVyLmFwcGVuZChjaGFyYWN0ZXJzLCBsZW5ndGgpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmFw
cGVuZFdpbmRvd3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
aXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUKGlzV2luZG93c0RyaXZlTGV0dGVyKGl0ZXJhdG9yKSk7
Ci0gICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigqaXRlcmF0b3IpOwotICAgIGFkdmFuY2UoaXRlcmF0
b3IpOwotICAgIEFTU0VSVCghaXRlcmF0b3IuYXRFbmQoKSk7Ci0gICAgQVNTRVJUKCppdGVyYXRv
ciA9PSAnOicgfHwgKml0ZXJhdG9yID09ICd8Jyk7Ci0gICAgaWYgKCppdGVyYXRvciA9PSAnfCcp
Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignOicpOwotICAgIGFkdmFuY2UoaXRlcmF0b3IpOwotfQotCi1ib29sIFVSTFBhcnNlcjo6
Y29weUJhc2VXaW5kb3dzRHJpdmVMZXR0ZXIoY29uc3QgVVJMJiBiYXNlKQotewotICAgIGlmIChi
YXNlLnByb3RvY29sSXMoImZpbGUiKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLm1f
aG9zdEVuZCArIGJhc2UubV9wb3J0TGVuZ3RoIDwgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7Ci0g
ICAgICAgIGlmIChiYXNlLm1fc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBM
Q2hhciogYmVnaW4gPSBiYXNlLm1fc3RyaW5nLmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgICAgICBD
b2RlUG9pbnRJdGVyYXRvcjxMQ2hhcj4gYyhiZWdpbiArIGJhc2UubV9ob3N0RW5kICsgYmFzZS5t
X3BvcnRMZW5ndGggKyAxLCBiZWdpbiArIGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAg
ICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0gICAgICAgICAgICAgICAgYXBw
ZW5kV2luZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29uc3QgVUNoYXIq
IGJlZ2luID0gYmFzZS5tX3N0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAgIENvZGVQ
b2ludEl0ZXJhdG9yPFVDaGFyPiBjKGJlZ2luICsgYmFzZS5tX2hvc3RFbmQgKyBiYXNlLm1fcG9y
dExlbmd0aCArIDEsIGJlZ2luICsgYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgICAg
ICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRX
aW5kb3dzRHJpdmVMZXR0ZXIoYyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OnNob3VsZENvcHlG
aWxlVVJMKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAg
IGlmICghaXNXaW5kb3dzRHJpdmVMZXR0ZXIoaXRlcmF0b3IpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGFkdmFuY2UoaXRlcmF0b3IpOwotICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKLSAgICBpZiAoaXRlcmF0b3IuYXRF
bmQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuICFpc1NsYXNoUXVlc3Rpb25P
ckhhc2goKml0ZXJhdG9yKTsKLX0KLQotc3RhdGljIHZvaWQgcGVyY2VudEVuY29kZUJ5dGUodWlu
dDhfdCBieXRlLCBWZWN0b3I8TENoYXI+JiBidWZmZXIpCi17Ci0gICAgYnVmZmVyLmFwcGVuZCgn
JScpOwotICAgIGJ1ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0ZSkp
OwotICAgIGJ1ZmZlci5hcHBlbmQobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYnl0ZSkpOwot
fQotCi12b2lkIFVSTFBhcnNlcjo6cGVyY2VudEVuY29kZUJ5dGUodWludDhfdCBieXRlKQotewot
ICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7Ci0gICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignJScpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIodXBwZXJOaWJibGVUb0FTQ0lJSGV4
RGlnaXQoYnl0ZSkpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0FTQ0lJ
SGV4RGlnaXQoYnl0ZSkpOwotfQotCi1jb25zdCBjaGFyIHJlcGxhY2VtZW50Q2hhcmFjdGVyVVRG
OFBlcmNlbnRFbmNvZGVkWzEwXSA9ICIlRUYlQkYlQkQiOwotY29uc3Qgc2l6ZV90IHJlcGxhY2Vt
ZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoID0gc2l6ZW9mKHJlcGxhY2VtZW50
Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkKSAtIDE7Ci0KLXRlbXBsYXRlPGJvb2woKmlzSW5D
b2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUg
dm9pZCBVUkxQYXJzZXI6OnV0ZjhQZXJjZW50RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKLXsKLSAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5k
KCkpOwotICAgIFVDaGFyMzIgY29kZVBvaW50ID0gKml0ZXJhdG9yOwotICAgIGlmIChMSUtFTFko
aXNBU0NJSShjb2RlUG9pbnQpKSkgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNJbkNvZGVTZXQo
Y29kZVBvaW50KSkpIHsKLSAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0g
ICAgICAgICAgICBwZXJjZW50RW5jb2RlQnl0ZShjb2RlUG9pbnQpOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoY29kZVBvaW50KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzSW5Db2RlU2V0KGNvZGVQb2lu
dCksICJpc0luQ29kZVNldCBzaG91bGQgYWx3YXlzIHJldHVybiB0cnVlIGZvciBub24tQVNDSUkg
Y2hhcmFjdGVycyIpOwotICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgCi0gICAg
aWYgKCFVX0lTX1VOSUNPREVfQ0hBUihjb2RlUG9pbnQpKSB7Ci0gICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIocmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWQsIHJlcGxhY2Vt
ZW50Q2hhcmFjdGVyVVRGOFBlcmNlbnRFbmNvZGVkTGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICB1aW50OF90IGJ1ZmZlcltVOF9NQVhfTEVOR1RIXTsKLSAgICBpbnQz
Ml90IG9mZnNldCA9IDA7Ci0gICAgVThfQVBQRU5EX1VOU0FGRShidWZmZXIsIG9mZnNldCwgY29k
ZVBvaW50KTsKLSAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBvZmZzZXQ7ICsraSkKLSAgICAg
ICAgcGVyY2VudEVuY29kZUJ5dGUoYnVmZmVyW2ldKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KLUFMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OnV0ZjhRdWVyeUVu
Y29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCi17
Ci0gICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsKLSAgICBVQ2hhcjMyIGNvZGVQb2ludCA9
ICppdGVyYXRvcjsKLSAgICBpZiAoTElLRUxZKGlzQVNDSUkoY29kZVBvaW50KSkpIHsKLSAgICAg
ICAgaWYgKFVOTElLRUxZKHNob3VsZFBlcmNlbnRFbmNvZGVRdWVyeUJ5dGUoY29kZVBvaW50LCBt
X3VybElzU3BlY2lhbCkpKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3Ip
OwotICAgICAgICAgICAgcGVyY2VudEVuY29kZUJ5dGUoY29kZVBvaW50KTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGNvZGVQb2ludCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yKTsKLSAg
ICAKLSAgICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKGNvZGVQb2ludCkpIHsKLSAgICAgICAgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcihyZXBsYWNlbWVudENoYXJhY3RlclVURjhQZXJjZW50RW5jb2RlZCwg
cmVwbGFjZW1lbnRDaGFyYWN0ZXJVVEY4UGVyY2VudEVuY29kZWRMZW5ndGgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgdWludDhfdCBidWZmZXJbVThfTUFYX0xFTkdUSF07Ci0gICAg
aW50MzJfdCBvZmZzZXQgPSAwOwotICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVyLCBvZmZzZXQs
IGNvZGVQb2ludCk7Ci0gICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgb2Zmc2V0OyArK2kpIHsK
LSAgICAgICAgYXV0byBieXRlID0gYnVmZmVyW2ldOwotICAgICAgICBpZiAoc2hvdWxkUGVyY2Vu
dEVuY29kZVF1ZXJ5Qnl0ZShieXRlLCBtX3VybElzU3BlY2lhbCkpCi0gICAgICAgICAgICBwZXJj
ZW50RW5jb2RlQnl0ZShieXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcihieXRlKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+Ci12b2lkIFVSTFBhcnNlcjo6ZW5jb2RlTm9uVVRGOFF1ZXJ5KGNvbnN0IFZlY3RvcjxV
Q2hhcj4mIHNvdXJjZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nJiBlbmNvZGluZywgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgYXV0byBlbmNvZGVkID0g
ZW5jb2RpbmcuZW5jb2RlRm9yVVJMUGFyc2luZyhTdHJpbmdWaWV3KHNvdXJjZS5kYXRhKCksIHNv
dXJjZS5zaXplKCkpKTsKLSAgICBhdXRvKiBkYXRhID0gZW5jb2RlZC5kYXRhKCk7Ci0gICAgc2l6
ZV90IGxlbmd0aCA9IGVuY29kZWQuc2l6ZSgpOwotICAgIAotICAgIGlmICghbGVuZ3RoID09ICFp
dGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgc2l6ZV90IGkgPSAwOwotICAgIGZvciAo
OyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKCFpdGVyYXRvci5hdEVuZCgpKTsK
LSAgICAgICAgdWludDhfdCBieXRlID0gZGF0YVtpXTsKLSAgICAgICAgaWYgKFVOTElLRUxZKGJ5
dGUgIT0gKml0ZXJhdG9yKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9y
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChVTkxJS0VMWShz
aG91bGRQZXJjZW50RW5jb2RlUXVlcnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkpIHsKLSAg
ICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGJ5dGUpOwotICAgICAgICAr
K2l0ZXJhdG9yOwotICAgIH0KLSAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJP
ck5ld2xpbmUoKml0ZXJhdG9yKSkKLSAgICAgICAgKytpdGVyYXRvcjsKLSAgICBBU1NFUlQoKGkg
PT0gbGVuZ3RoKSA9PSBpdGVyYXRvci5hdEVuZCgpKTsKLSAgICBmb3IgKDsgaSA8IGxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZpb2xhdGlvbik7Ci0gICAgICAg
IHVpbnQ4X3QgYnl0ZSA9IGRhdGFbaV07Ci0gICAgICAgIGlmIChzaG91bGRQZXJjZW50RW5jb2Rl
UXVlcnlCeXRlKGJ5dGUsIG1fdXJsSXNTcGVjaWFsKSkKLSAgICAgICAgICAgIHBlcmNlbnRFbmNv
ZGVCeXRlKGJ5dGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKGJ5dGUpOwotICAgIH0KLX0KLQotc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMUGFyc2Vy
OjpkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgc2NoZW1lKQotewotICAgIHN0YXRp
YyBjb25zdCB1aW50MTZfdCBmdHBQb3J0ID0gMjE7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQxNl90
IGdvcGhlclBvcnQgPSA3MDsKLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgaHR0cFBvcnQgPSA4
MDsKLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgaHR0cHNQb3J0ID0gNDQzOwotICAgIHN0YXRp
YyBjb25zdCB1aW50MTZfdCB3c1BvcnQgPSA4MDsKLSAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qg
d3NzUG9ydCA9IDQ0MzsKLSAgICAKLSAgICBhdXRvIGxlbmd0aCA9IHNjaGVtZS5sZW5ndGgoKTsK
LSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBzd2l0
Y2ggKHNjaGVtZVswXSkgewotICAgIGNhc2UgJ3cnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkg
ewotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gd3NQb3J0OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycK
LSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3MnKQotICAgICAgICAgICAgICAgIHJl
dHVybiB3c3NQb3J0OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIGNhc2Ug
J2gnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNlIDQ6Ci0gICAgICAg
ICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9
PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnKQotICAgICAgICAgICAg
ICAgIHJldHVybiBodHRwUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgICAgIGNhc2UgNToKLSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCi0gICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVsz
XSA9PSAncCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQotICAgICAgICAg
ICAgICAgIHJldHVybiBodHRwc1BvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgfQotICAgIGNhc2UgJ2cnOgotICAgICAgICBpZiAobGVuZ3RoID09IDYKLSAgICAgICAg
ICAgICYmIHNjaGVtZVsxXSA9PSAnbycKLSAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcK
LSAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAnaCcKLSAgICAgICAgICAgICYmIHNjaGVtZVs0
XSA9PSAnZScKLSAgICAgICAgICAgICYmIHNjaGVtZVs1XSA9PSAncicpCi0gICAgICAgICAgICBy
ZXR1cm4gZ29waGVyUG9ydDsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBjYXNl
ICdmJzoKLSAgICAgICAgaWYgKGxlbmd0aCA9PSAzCi0gICAgICAgICAgICAmJiBzY2hlbWVbMV0g
PT0gJ3QnCi0gICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3AnKQotICAgICAgICAgICAgcmV0
dXJuIGZ0cFBvcnQ7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci19Ci0KLWVudW0gY2xhc3MgU2No
ZW1lIHsKLSAgICBXUywKLSAgICBXU1MsCi0gICAgRmlsZSwKLSAgICBGVFAsCi0gICAgR29waGVy
LAotICAgIEhUVFAsCi0gICAgSFRUUFMsCi0gICAgTm9uU3BlY2lhbAotfTsKLQotQUxXQVlTX0lO
TElORSBzdGF0aWMgU2NoZW1lIHNjaGVtZShTdHJpbmdWaWV3IHNjaGVtZSkKLXsKLSAgICBhdXRv
IGxlbmd0aCA9IHNjaGVtZS5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0
dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICBzd2l0Y2ggKHNjaGVtZVswXSkgewotICAgIGNh
c2UgJ2YnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAgICAgICBjYXNlIDM6Ci0gICAg
ICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVsy
XSA9PSAncCcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6RlRQOwotICAgICAgICAg
ICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAg
ICAgaWYgKHNjaGVtZVsxXSA9PSAnaScKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0g
J2wnCi0gICAgICAgICAgICAgICAgJiYgc2NoZW1lWzNdID09ICdlJykKLSAgICAgICAgICAgICAg
ICByZXR1cm4gU2NoZW1lOjpGaWxlOwotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3Bl
Y2lhbDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNw
ZWNpYWw7Ci0gICAgICAgIH0KLSAgICBjYXNlICdnJzoKLSAgICAgICAgaWYgKGxlbmd0aCA9PSA2
Ci0gICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0gJ28nCi0gICAgICAgICAgICAmJiBzY2hlbWVb
Ml0gPT0gJ3AnCi0gICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ2gnCi0gICAgICAgICAgICAm
JiBzY2hlbWVbNF0gPT0gJ2UnCi0gICAgICAgICAgICAmJiBzY2hlbWVbNV0gPT0gJ3InKQotICAg
ICAgICAgICAgcmV0dXJuIFNjaGVtZTo6R29waGVyOwotICAgICAgICByZXR1cm4gU2NoZW1lOjpO
b25TcGVjaWFsOwotICAgIGNhc2UgJ2gnOgotICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewotICAg
ICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAgICAg
ICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10g
PT0gJ3AnKQotICAgICAgICAgICAgICAgIHJldHVybiBTY2hlbWU6OkhUVFA7Ci0gICAgICAgICAg
ICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAg
ICBpZiAoc2NoZW1lWzFdID09ICd0JwotICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAn
dCcKLSAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCi0gICAgICAgICAgICAgICAg
JiYgc2NoZW1lWzRdID09ICdzJykKLSAgICAgICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpIVFRQ
UzsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAgICB9Ci0g
ICAgY2FzZSAndyc6Ci0gICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7Ci0gICAgICAgIGNhc2UgMjoK
LSAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnKQotICAgICAgICAgICAgICAgIHJldHVy
biBTY2hlbWU6OldTOwotICAgICAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAg
ICAgICAgY2FzZSAzOgotICAgICAgICAgICAgaWYgKHNjaGVtZVsxXSA9PSAncycKLSAgICAgICAg
ICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3MnKQotICAgICAgICAgICAgICAgIHJldHVybiBTY2hl
bWU6OldTUzsKLSAgICAgICAgICAgIHJldHVybiBTY2hlbWU6Ok5vblNwZWNpYWw7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gU2NoZW1lOjpOb25TcGVjaWFsOwotICAgICAg
ICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFNjaGVtZTo6Tm9uU3BlY2lhbDsKLSAg
ICB9Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2Fs
aXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmIChzY2hlbWUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaWYgKCFpc0FTQ0lJQWxw
aGEoc2NoZW1lWzBdKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGZvciAo
c2l6ZV90IGkgPSAxOyBpIDwgc2NoZW1lLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKGlz
QVNDSUlBbHBoYW51bWVyaWMoc2NoZW1lW2ldKSB8fCBzY2hlbWVbaV0gPT0gJysnIHx8IHNjaGVt
ZVtpXSA9PSAnLScgfHwgc2NoZW1lW2ldID09ICcuJykKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLQotICAgIHJldHVybiBzY2hlbWUu
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmlzU3BlY2lh
bFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZUFyZykKLXsKLSAgICByZXR1cm4gc2NoZW1lKHNj
aGVtZUFyZykgIT0gU2NoZW1lOjpOb25TcGVjaWFsOwotfQotCi1lbnVtIGNsYXNzIFVSTFBhcnNl
cjo6VVJMUGFydCB7Ci0gICAgU2NoZW1lRW5kLAotICAgIFVzZXJTdGFydCwKLSAgICBVc2VyRW5k
LAotICAgIFBhc3N3b3JkRW5kLAotICAgIEhvc3RFbmQsCi0gICAgUG9ydEVuZCwKLSAgICBQYXRo
QWZ0ZXJMYXN0U2xhc2gsCi0gICAgUGF0aEVuZCwKLSAgICBRdWVyeUVuZCwKLX07Ci0KLXNpemVf
dCBVUkxQYXJzZXI6OnVybExlbmd0aFVudGlsUGFydChjb25zdCBVUkwmIHVybCwgVVJMUGFydCBw
YXJ0KQotewotICAgIHN3aXRjaCAocGFydCkgewotICAgIGNhc2UgVVJMUGFydDo6UXVlcnlFbmQ6
Ci0gICAgICAgIHJldHVybiB1cmwubV9xdWVyeUVuZDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBhdGhF
bmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9wYXRoRW5kOwotICAgIGNhc2UgVVJMUGFydDo6UGF0
aEFmdGVyTGFzdFNsYXNoOgotICAgICAgICByZXR1cm4gdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
OwotICAgIGNhc2UgVVJMUGFydDo6UG9ydEVuZDoKLSAgICAgICAgcmV0dXJuIHVybC5tX2hvc3RF
bmQgKyB1cmwubV9wb3J0TGVuZ3RoOwotICAgIGNhc2UgVVJMUGFydDo6SG9zdEVuZDoKLSAgICAg
ICAgcmV0dXJuIHVybC5tX2hvc3RFbmQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpQYXNzd29yZEVuZDoK
LSAgICAgICAgcmV0dXJuIHVybC5tX3Bhc3N3b3JkRW5kOwotICAgIGNhc2UgVVJMUGFydDo6VXNl
ckVuZDoKLSAgICAgICAgcmV0dXJuIHVybC5tX3VzZXJFbmQ7Ci0gICAgY2FzZSBVUkxQYXJ0OjpV
c2VyU3RhcnQ6Ci0gICAgICAgIHJldHVybiB1cmwubV91c2VyU3RhcnQ7Ci0gICAgY2FzZSBVUkxQ
YXJ0OjpTY2hlbWVFbmQ6Ci0gICAgICAgIHJldHVybiB1cmwubV9zY2hlbWVFbmQ7Ci0gICAgfQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIFVSTFBh
cnNlcjo6Y29weUFTQ0lJU3RyaW5nVW50aWwoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHNpemVfdCBs
ZW5ndGgpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDw9IHN0cmluZy5sZW5ndGgoKSk7
Ci0gICAgaWYgKHN0cmluZy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVCht
X2FzY2lpQnVmZmVyLmlzRW1wdHkoKSk7Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAg
ICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcihzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFj
dGVyczE2KCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIFVDaGFyIGMgPSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICAgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXNBU0NJSShjKSk7Ci0gICAgICAgICAgICBhcHBl
bmRUb0FTQ0lJQnVmZmVyKGMpOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotdm9pZCBVUkxQYXJzZXI6OmNvcHlVUkxQYXJ0c1VudGlsKGNv
bnN0IFVSTCYgYmFzZSwgVVJMUGFydCBwYXJ0LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGNvbnN0IFVSTFRleHRFbmNvZGluZyomIG5vblVURjhRdWVy
eUVuY29kaW5nKQotewotICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0KLSAgICBtX2Fz
Y2lpQnVmZmVyLmNsZWFyKCk7Ci0gICAgY29weUFTQ0lJU3RyaW5nVW50aWwoYmFzZS5tX3N0cmlu
ZywgdXJsTGVuZ3RoVW50aWxQYXJ0KGJhc2UsIHBhcnQpKTsKLSAgICBzd2l0Y2ggKHBhcnQpIHsK
LSAgICBjYXNlIFVSTFBhcnQ6OlF1ZXJ5RW5kOgotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0g
YmFzZS5tX3F1ZXJ5RW5kOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFVSTFBhcnQ6
OlBhdGhFbmQ6Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGJhc2UubV9wYXRoRW5kOwotICAg
ICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBhdGhBZnRlckxhc3RTbGFzaDoK
LSAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBiYXNlLm1fcGF0aEFmdGVyTGFz
dFNsYXNoOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFVSTFBhcnQ6OlBvcnRFbmQ6
Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IGJhc2UubV9wb3J0TGVuZ3RoOwotICAgICAg
ICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFVSTFBhcnQ6Okhvc3RFbmQ6Ci0gICAgICAgIG1fdXJs
Lm1faG9zdEVuZCA9IGJhc2UubV9ob3N0RW5kOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBj
YXNlIFVSTFBhcnQ6OlBhc3N3b3JkRW5kOgotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0g
YmFzZS5tX3Bhc3N3b3JkRW5kOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFVSTFBh
cnQ6OlVzZXJFbmQ6Ci0gICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGJhc2UubV91c2VyRW5kOwot
ICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFVSTFBhcnQ6OlVzZXJTdGFydDoKLSAgICAg
ICAgbV91cmwubV91c2VyU3RhcnQgPSBiYXNlLm1fdXNlclN0YXJ0OwotICAgICAgICBGQUxMVEhS
T1VHSDsKLSAgICBjYXNlIFVSTFBhcnQ6OlNjaGVtZUVuZDoKLSAgICAgICAgbV91cmwubV9pc1Zh
bGlkID0gYmFzZS5tX2lzVmFsaWQ7Ci0gICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJc0luSFRUUEZh
bWlseSA9IGJhc2UubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwotICAgICAgICBtX3VybC5tX3Nj
aGVtZUVuZCA9IGJhc2UubV9zY2hlbWVFbmQ7Ci0gICAgfQotICAgIHN3aXRjaCAoc2NoZW1lKFN0
cmluZ1ZpZXcobV9hc2NpaUJ1ZmZlci5kYXRhKCksIG1fdXJsLm1fc2NoZW1lRW5kKSkpIHsKLSAg
ICBjYXNlIFNjaGVtZTo6V1M6Ci0gICAgY2FzZSBTY2hlbWU6OldTUzoKLSAgICAgICAgbm9uVVRG
OFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOwotICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFNjaGVtZTo6RmlsZToKLSAgICAgICAgbV91cmxJ
c0ZpbGUgPSB0cnVlOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFNjaGVtZTo6RlRQ
OgotICAgIGNhc2UgU2NoZW1lOjpHb3BoZXI6Ci0gICAgY2FzZSBTY2hlbWU6OkhUVFA6Ci0gICAg
Y2FzZSBTY2hlbWU6OkhUVFBTOgotICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRydWU7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIFNjaGVtZTo6Tm9uU3BlY2lhbDoKLSAgICAgICAgbV91cmxJ
c1NwZWNpYWwgPSBmYWxzZTsKLSAgICAgICAgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRy
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci1zdGF0aWMgY29uc3QgY2hhciBkb3RBU0NJSUNvZGVbMl0gPSB7JzInLCAnZSd9OwotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNl
cjo6aXNTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiBjKQotewotICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoKmMgPT0gJy4nKSB7Ci0gICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3lu
dGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFz
aFF1ZXN0aW9uT3JIYXNoKCpjKTsKLSAgICB9Ci0gICAgaWYgKCpjICE9ICclJykKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4Vmlv
bGF0aW9uOjpObz4oYyk7Ci0gICAgaWYgKGMuYXRFbmQoKSB8fCAqYyAhPSBkb3RBU0NJSUNvZGVb
MF0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJl
cG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVb
MV0pIHsKLSAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRp
b246Ok5vPihjKTsKLSAgICAgICAgcmV0dXJuIGMuYXRFbmQoKSB8fCBpc1NsYXNoUXVlc3Rpb25P
ckhhc2goKmMpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFyc2VyOjppc0RvdWJs
ZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCi17Ci0g
ICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgqYyA9PSAn
LicpIHsKLSAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRp
b246Ok5vPihjKTsKLSAgICAgICAgcmV0dXJuIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoYyk7Ci0g
ICAgfQotICAgIGlmICgqYyAhPSAnJScpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhZHZh
bmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwotICAgIGlm
IChjLmF0RW5kKCkgfHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5v
PihjKTsKLSAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2RlWzFdKSB7Ci0gICAgICAgIGFkdmFuY2U8
Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7Ci0gICAgICAgIHJl
dHVybiBpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci12b2lkIFVSTFBhcnNlcjo6
Y29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+JiBjKQotewotICAgIEFTU0VSVChpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpKTsKLSAgICBp
ZiAoKmMgPT0gJy4nKSB7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgIGlmICghYy5hdEVu
ZCgpKSB7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpCi0gICAgICAg
ICAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBB
U1NFUlQoKmMgPT0gJz8nIHx8ICpjID09ICcjJyk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ugewot
ICAgICAgICBBU1NFUlQoKmMgPT0gJyUnKTsKLSAgICAgICAgYWR2YW5jZShjKTsKLSAgICAgICAg
QVNTRVJUKCpjID09IGRvdEFTQ0lJQ29kZVswXSk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAg
ICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSk7Ci0gICAgICAg
IGFkdmFuY2UoYyk7Ci0gICAgICAgIGlmICghYy5hdEVuZCgpKSB7Ci0gICAgICAgICAgICBpZiAo
KmMgPT0gJy8nIHx8ICpjID09ICdcXCcpCi0gICAgICAgICAgICAgICAgYWR2YW5jZShjKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBBU1NFUlQoKmMgPT0gJz8nIHx8ICpjID09
ICcjJyk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+Ci12b2lkIFVSTFBhcnNlcjo6Y29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBjKQotewotICAgIEFTU0VSVChpc0RvdWJsZURv
dFBhdGhTZWdtZW50KGMpKTsKLSAgICBpZiAoKmMgPT0gJy4nKQotICAgICAgICBhZHZhbmNlKGMp
OwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQoKmMgPT0gJyUnKTsKLSAgICAgICAgYWR2YW5j
ZShjKTsKLSAgICAgICAgQVNTRVJUKCpjID09IGRvdEFTQ0lJQ29kZVswXSk7Ci0gICAgICAgIGFk
dmFuY2UoYyk7Ci0gICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29k
ZVsxXSk7Ci0gICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgfQotICAgIGNvbnN1bWVTaW5nbGVEb3RQ
YXRoU2VnbWVudChjKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OnNob3VsZFBvcFBhdGgodW5zaWdu
ZWQgbmV3UGF0aEFmdGVyTGFzdFNsYXNoKQotewotICAgIEFTU0VSVChtX2RpZFNlZVN5bnRheFZp
b2xhdGlvbik7Ci0gICAgaWYgKCFtX3VybElzRmlsZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBBU1NFUlQobV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPD0gbV9hc2NpaUJ1ZmZlci5z
aXplKCkpOwotICAgIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBjb21wb25lbnRUb1BvcCgmbV9h
c2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdLCAmbV9hc2NpaUJ1ZmZlclswXSArIG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKLSAgICBpZiAobmV3UGF0aEFmdGVyTGFzdFNsYXNo
ID09IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDEgJiYgaXNXaW5kb3dz
RHJpdmVMZXR0ZXIoY29tcG9uZW50VG9Qb3ApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgVVJMUGFyc2VyOjpwb3BQYXRoKCkKLXsKLSAgICBBU1NF
UlQobV9kaWRTZWVTeW50YXhWaW9sYXRpb24pOwotICAgIGlmIChtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA+IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDEpIHsKLSAg
ICAgICAgYXV0byBuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaCAtIDE7Ci0gICAgICAgIGlmIChtX2FzY2lpQnVmZmVyW25ld1BhdGhBZnRlckxhc3RTbGFz
aF0gPT0gJy8nKQotICAgICAgICAgICAgbmV3UGF0aEFmdGVyTGFzdFNsYXNoLS07Ci0gICAgICAg
IHdoaWxlIChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPiBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5t
X3BvcnRMZW5ndGggJiYgbV9hc2NpaUJ1ZmZlcltuZXdQYXRoQWZ0ZXJMYXN0U2xhc2hdICE9ICcv
JykKLSAgICAgICAgICAgIG5ld1BhdGhBZnRlckxhc3RTbGFzaC0tOwotICAgICAgICBuZXdQYXRo
QWZ0ZXJMYXN0U2xhc2grKzsKLSAgICAgICAgaWYgKHNob3VsZFBvcFBhdGgobmV3UGF0aEFmdGVy
TGFzdFNsYXNoKSkKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbmV3
UGF0aEFmdGVyTGFzdFNsYXNoOwotICAgIH0KLSAgICBtX2FzY2lpQnVmZmVyLnJlc2l6ZShtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+Ci12b2lkIFVSTFBhcnNlcjo6c3ludGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKLXsKLSAgICBpZiAobV9kaWRTZWVTeW50
YXhWaW9sYXRpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBtX2RpZFNlZVN5bnRheFZpb2xhdGlv
biA9IHRydWU7Ci0gICAgCi0gICAgQVNTRVJUKG1fYXNjaWlCdWZmZXIuaXNFbXB0eSgpKTsKLSAg
ICBzaXplX3QgY29kZVVuaXRzVG9Db3B5ID0gaXRlcmF0b3IuY29kZVVuaXRzU2luY2UocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBDaGFyYWN0ZXJUeXBlKj4obV9pbnB1dEJlZ2luKSk7Ci0gICAgUkVM
RUFTRV9BU1NFUlQoY29kZVVuaXRzVG9Db3B5IDw9IG1faW5wdXRTdHJpbmcubGVuZ3RoKCkpOwot
ICAgIG1fYXNjaWlCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KG1faW5wdXRTdHJpbmcubGVuZ3RoKCkp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZVVuaXRzVG9Db3B5OyArK2kpIHsKLSAg
ICAgICAgQVNTRVJUKGlzQVNDSUkobV9pbnB1dFN0cmluZ1tpXSkpOwotICAgICAgICBtX2FzY2lp
QnVmZmVyLnVuY2hlY2tlZEFwcGVuZChtX2lucHV0U3RyaW5nW2ldKTsKLSAgICB9Ci19Ci0KLXZv
aWQgVVJMUGFyc2VyOjpmYWlsdXJlKCkKLXsKLSAgICBtX3VybC5pbnZhbGlkYXRlKCk7Ci0gICAg
bV91cmwubV9zdHJpbmcgPSBtX2lucHV0U3RyaW5nOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgotYm9vbCBVUkxQYXJzZXI6OmNoZWNrTG9jYWxob3N0Q29kZVBvaW50KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgVUNoYXIzMiBjb2RlUG9p
bnQpCi17Ci0gICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkgfHwgdG9BU0NJSUxvd2VyKCppdGVyYXRv
cikgIT0gY29kZVBvaW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYWR2YW5jZTxDaGFy
YWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1ib29sIFVS
TFBhcnNlcjo6aXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBp
dGVyYXRvcikKLXsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAn
bCcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQ
b2ludChpdGVyYXRvciwgJ28nKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hl
Y2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdjJykpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYScpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVy
YXRvciwgJ2wnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhv
c3RDb2RlUG9pbnQoaXRlcmF0b3IsICdoJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbycpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ3Mn
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9p
bnQoaXRlcmF0b3IsICd0JykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXRl
cmF0b3IuYXRFbmQoKTsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmlzTG9jYWxob3N0KFN0cmluZ1Zp
ZXcgdmlldykKLXsKLSAgICBpZiAodmlldy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGlzQXRM
b2NhbGhvc3QoQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+KHZpZXcuY2hhcmFjdGVyczgoKSwgdmll
dy5jaGFyYWN0ZXJzOCgpICsgdmlldy5sZW5ndGgoKSkpOwotICAgIHJldHVybiBpc0F0TG9jYWxo
b3N0KENvZGVQb2ludEl0ZXJhdG9yPFVDaGFyPih2aWV3LmNoYXJhY3RlcnMxNigpLCB2aWV3LmNo
YXJhY3RlcnMxNigpICsgdmlldy5sZW5ndGgoKSkpOwotfQotCi1BTFdBWVNfSU5MSU5FIFN0cmlu
Z1ZpZXcgVVJMUGFyc2VyOjpwYXJzZWREYXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5n
dGgpCi17Ci0gICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkgewotICAg
ICAgICBBU1NFUlQoc3RhcnQgKyBsZW5ndGggPD0gbV9hc2NpaUJ1ZmZlci5zaXplKCkpOwotICAg
ICAgICByZXR1cm4gU3RyaW5nVmlldyhtX2FzY2lpQnVmZmVyLmRhdGEoKSArIHN0YXJ0LCBsZW5n
dGgpOwotICAgIH0KLSAgICBBU1NFUlQoc3RhcnQgKyBsZW5ndGggPD0gbV9pbnB1dFN0cmluZy5s
ZW5ndGgoKSk7Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9pbnB1dFN0cmluZykuc3Vic3RyaW5n
KHN0YXJ0LCBsZW5ndGgpOwotfQotCi1BTFdBWVNfSU5MSU5FIFVDaGFyIFVSTFBhcnNlcjo6cGFy
c2VkRGF0YVZpZXcoc2l6ZV90IHBvc2l0aW9uKQotewotICAgIGlmIChVTkxJS0VMWShtX2RpZFNl
ZVN5bnRheFZpb2xhdGlvbikpCi0gICAgICAgIHJldHVybiBtX2FzY2lpQnVmZmVyW3Bvc2l0aW9u
XTsKLSAgICByZXR1cm4gbV9pbnB1dFN0cmluZ1twb3NpdGlvbl07Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIHNpemVfdCBVUkxQYXJzZXI6OmN1
cnJlbnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRl
cmF0b3IpCi17Ci0gICAgaWYgKFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKLSAg
ICAgICAgcmV0dXJuIG1fYXNjaWlCdWZmZXIuc2l6ZSgpOwotICAgIAotICAgIHJldHVybiBpdGVy
YXRvci5jb2RlVW5pdHNTaW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IENoYXJhY3RlclR5cGUq
PihtX2lucHV0QmVnaW4pKTsKLX0KLQotVVJMUGFyc2VyOjpVUkxQYXJzZXIoY29uc3QgU3RyaW5n
JiBpbnB1dCwgY29uc3QgVVJMJiBiYXNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIG5vblVURjhR
dWVyeUVuY29kaW5nKQotICAgIDogbV9pbnB1dFN0cmluZyhpbnB1dCkKLXsKLSAgICBpZiAoaW5w
dXQuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKGJhc2UuaXNWYWxpZCgpICYmICFiYXNlLm1fY2Fu
bm90QmVBQmFzZVVSTCkgewotICAgICAgICAgICAgbV91cmwgPSBiYXNlOwotICAgICAgICAgICAg
bV91cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChpbnB1dC5pczhCaXQoKSkgewotICAgICAgICBtX2lucHV0
QmVnaW4gPSBpbnB1dC5jaGFyYWN0ZXJzOCgpOwotICAgICAgICBwYXJzZShpbnB1dC5jaGFyYWN0
ZXJzOCgpLCBpbnB1dC5sZW5ndGgoKSwgYmFzZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIG1faW5wdXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnMxNigpOwot
ICAgICAgICBwYXJzZShpbnB1dC5jaGFyYWN0ZXJzMTYoKSwgaW5wdXQubGVuZ3RoKCksIGJhc2Us
IG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIW1fdXJsLm1faXNW
YWxpZAotICAgICAgICB8fCBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiA9PSAobV91cmwuc3RyaW5n
KCkgIT0gaW5wdXQpCi0gICAgICAgIHx8IChpbnB1dC5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlz
QzBDb250cm9sT3JTcGFjZT4oKQotICAgICAgICAgICAgJiYgbV91cmwubV9zdHJpbmcgPT0gYmFz
ZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9xdWVyeUVuZCkpKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxW
YWx1ZXNDb25zaXN0ZW50KG1fdXJsKSk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGlmICgh
bV9kaWRTZWVTeW50YXhWaW9sYXRpb24pIHsKLSAgICAgICAgLy8gRm9yY2UgYSBzeW50YXggdmlv
bGF0aW9uIGF0IHRoZSBiZWdpbm5pbmcgdG8gbWFrZSBzdXJlIHdlIGdldCB0aGUgc2FtZSByZXN1
bHQuCi0gICAgICAgIFVSTFBhcnNlciBwYXJzZXIobWFrZVN0cmluZygiICIsIGlucHV0KSwgYmFz
ZSwgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICBVUkwgcGFyc2VkID0gcGFyc2VyLnJl
c3VsdCgpOwotICAgICAgICBpZiAocGFyc2VkLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIEFTU0VS
VChhbGxWYWx1ZXNFcXVhbChwYXJzZXIucmVzdWx0KCksIG1fdXJsKSk7Ci0gICAgfQotI2VuZGlm
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci12b2lkIFVSTFBhcnNlcjo6
cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwZSogaW5wdXQsIGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwg
Y29uc3QgVVJMJiBiYXNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIG5vblVURjhRdWVyeUVuY29k
aW5nKQotewotICAgIFVSTF9QQVJTRVJfTE9HKCJQYXJzaW5nIFVSTCA8JXM+IGJhc2UgPCVzPiIs
IFN0cmluZyhpbnB1dCwgbGVuZ3RoKS51dGY4KCkuZGF0YSgpLCBiYXNlLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgIG1fdXJsID0geyB9OwotICAgIEFTU0VSVChtX2FzY2lpQnVmZmVyLmlz
RW1wdHkoKSk7Ci0KLSAgICBWZWN0b3I8VUNoYXI+IHF1ZXJ5QnVmZmVyOwotCi0gICAgdW5zaWdu
ZWQgZW5kSW5kZXggPSBsZW5ndGg7Ci0gICAgd2hpbGUgKFVOTElLRUxZKGVuZEluZGV4ICYmIGlz
QzBDb250cm9sT3JTcGFjZShpbnB1dFtlbmRJbmRleCAtIDFdKSkpIHsKLSAgICAgICAgc3ludGF4
VmlvbGF0aW9uKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGlucHV0LCBpbnB1dCkp
OwotICAgICAgICBlbmRJbmRleC0tOwotICAgIH0KLSAgICBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiBjKGlucHV0LCBpbnB1dCArIGVuZEluZGV4KTsKLSAgICBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiBhdXRob3JpdHlPckhvc3RCZWdpbjsKLSAgICBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBxdWVyeUJlZ2luOwotICAgIHdoaWxlIChVTkxJS0VMWSgh
Yy5hdEVuZCgpICYmIGlzQzBDb250cm9sT3JTcGFjZSgqYykpKSB7Ci0gICAgICAgIHN5bnRheFZp
b2xhdGlvbihjKTsKLSAgICAgICAgKytjOwotICAgIH0KLSAgICBhdXRvIGJlZ2luQWZ0ZXJDb250
cm9sQW5kU3BhY2UgPSBjOwotCi0gICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgewotICAg
ICAgICBTY2hlbWVTdGFydCwKLSAgICAgICAgU2NoZW1lLAotICAgICAgICBOb1NjaGVtZSwKLSAg
ICAgICAgU3BlY2lhbFJlbGF0aXZlT3JBdXRob3JpdHksCi0gICAgICAgIFBhdGhPckF1dGhvcml0
eSwKLSAgICAgICAgUmVsYXRpdmUsCi0gICAgICAgIFJlbGF0aXZlU2xhc2gsCi0gICAgICAgIFNw
ZWNpYWxBdXRob3JpdHlTbGFzaGVzLAotICAgICAgICBTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xh
c2hlcywKLSAgICAgICAgQXV0aG9yaXR5T3JIb3N0LAotICAgICAgICBIb3N0LAotICAgICAgICBG
aWxlLAotICAgICAgICBGaWxlU2xhc2gsCi0gICAgICAgIEZpbGVIb3N0LAotICAgICAgICBQYXRo
U3RhcnQsCi0gICAgICAgIFBhdGgsCi0gICAgICAgIENhbm5vdEJlQUJhc2VVUkxQYXRoLAotICAg
ICAgICBVVEY4UXVlcnksCi0gICAgICAgIE5vblVURjhRdWVyeSwKLSAgICAgICAgRnJhZ21lbnQs
Ci0gICAgfTsKLQotI2RlZmluZSBMT0dfU1RBVEUoeCkgVVJMX1BBUlNFUl9MT0coIlN0YXRlICVz
LCBjb2RlIHBvaW50ICVjLCBwYXJzZWQgZGF0YSA8JXM+IHNpemUgJXp1IiwgeCwgKmMsIHBhcnNl
ZERhdGFWaWV3KDAsIGN1cnJlbnRQb3NpdGlvbihjKSkudXRmOCgpLmRhdGEoKSwgY3VycmVudFBv
c2l0aW9uKGMpKQotI2RlZmluZSBMT0dfRklOQUxfU1RBVEUoeCkgVVJMX1BBUlNFUl9MT0coIkZp
bmFsIFN0YXRlOiAlcyIsIHgpCi0KLSAgICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpTY2hlbWVTdGFy
dDsKLSAgICB3aGlsZSAoIWMuYXRFbmQoKSkgewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUYWJP
ck5ld2xpbmUoKmMpKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAg
ICAgICAgKytjOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBz
d2l0Y2ggKHN0YXRlKSB7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlNjaGVtZVN0YXJ0OgotICAgICAg
ICAgICAgTE9HX1NUQVRFKCJTY2hlbWVTdGFydCIpOwotICAgICAgICAgICAgaWYgKGlzQVNDSUlB
bHBoYSgqYykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVyKCpj
KSkpCi0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqYykpOwotICAgICAgICAgICAg
ICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGMuYXRFbmQoKSkgewotICAgICAg
ICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6Ok5vU2NoZW1lOwotICAgICAgICAgICAgICAgICAgICBjID0gYmVnaW5B
ZnRlckNvbnRyb2xBbmRTcGFjZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlNjaGVtZTsKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vU2NoZW1lOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlNjaGVtZToKLSAgICAgICAg
ICAgIExPR19TVEFURSgiU2NoZW1lIik7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFNjaGVtZUNo
YXJhY3RlcigqYykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSVVwcGVy
KCpjKSkpCi0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqYykpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmICgqYyA9PSAnOicpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBzY2hl
bWVFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgaWYgKHNjaGVtZUVu
ZCA+IFVSTDo6bWF4U2NoZW1lTGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUo
KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBtX3VybC5tX3NjaGVtZUVuZCA9IHNjaGVtZUVuZDsKLSAgICAgICAgICAgICAg
ICBTdHJpbmdWaWV3IHVybFNjaGVtZSA9IHBhcnNlZERhdGFWaWV3KDAsIG1fdXJsLm1fc2NoZW1l
RW5kKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7Ci0gICAgICAg
ICAgICAgICAgc3dpdGNoIChzY2hlbWUodXJsU2NoZW1lKSkgewotICAgICAgICAgICAgICAgIGNh
c2UgU2NoZW1lOjpGaWxlOgotICAgICAgICAgICAgICAgICAgICBtX3VybElzU3BlY2lhbCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsSXNGaWxlID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RmlsZTsKLSAgICAgICAgICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6
V1M6Ci0gICAgICAgICAgICAgICAgY2FzZSBTY2hlbWU6OldTUzoKLSAgICAgICAgICAgICAgICAg
ICAgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICBt
X3VybElzU3BlY2lhbCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLnByb3Rv
Y29sSXModXJsU2NoZW1lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xh
c2hlczsKLSAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIFNjaGVtZTo6SFRUUDoKLSAgICAgICAgICAgICAgICBj
YXNlIFNjaGVtZTo6SFRUUFM6Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwot
ICAgICAgICAgICAgICAgIGNhc2UgU2NoZW1lOjpGVFA6Ci0gICAgICAgICAgICAgICAgY2FzZSBT
Y2hlbWU6OkdvcGhlcjoKLSAgICAgICAgICAgICAgICAgICAgbV91cmxJc1NwZWNpYWwgPSB0cnVl
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5wcm90b2NvbElzKHVybFNjaGVtZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1
dGhvcml0eTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM7Ci0gICAgICAgICAgICAg
ICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBTY2hlbWU6Ok5vblNwZWNpYWw6Ci0gICAgICAgICAgICAgICAgICAgIG5vblVURjhRdWVy
eUVuY29kaW5nID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBtYXliZVNsYXNo
ID0gYzsKLSAgICAgICAgICAgICAgICAgICAgYWR2YW5jZShtYXliZVNsYXNoKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFtYXliZVNsYXNoLmF0RW5kKCkgJiYgKm1heWJlU2xhc2ggPT0gJy8n
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjID0gbWF5YmVTbGFzaDsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGhPckF1dGhvcml0eTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCgqYyA9PSAnLycpOwotICAgICAgICAgICAgICAgICAgICAgICAgKytjOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRp
b24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1
cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9w
YXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAg
bV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fdXJsLm1fY2Fubm90QmVBQmFzZVVSTCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJMUGF0aDsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpOb1NjaGVtZTsKLSAgICAgICAgICAgICAgICBjID0gYmVnaW5BZnRlckNvbnRy
b2xBbmRTcGFjZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICBpZiAoYy5hdEVuZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgbV9hc2NpaUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6Ok5vU2NoZW1lOwotICAgICAgICAgICAgICAgIGMgPSBiZWdpbkFmdGVyQ29udHJvbEFu
ZFNwYWNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U3RhdGU6Ok5vU2NoZW1lOgotICAgICAgICAgICAgTE9HX1NUQVRFKCJOb1NjaGVtZSIpOwotICAg
ICAgICAgICAgaWYgKCFiYXNlLmlzVmFsaWQoKSB8fCAoYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwg
JiYgKmMgIT0gJyMnKSkgewotICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYmFzZS5tX2Nhbm5v
dEJlQUJhc2VVUkwgJiYgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgY29weVVSTFBhcnRz
VW50aWwoYmFzZSwgVVJMUGFydDo6UXVlcnlFbmQsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsK
LSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAg
ICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFiYXNlLnBy
b3RvY29sSXMoImZpbGUiKSkgewotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJlbGF0
aXZlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Y29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6U2NoZW1lRW5kLCBjLCBub25VVEY4UXVl
cnlFbmNvZGluZyk7Ci0gICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7Ci0gICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGaWxlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgU3RhdGU6OlNwZWNpYWxSZWxhdGl2ZU9yQXV0aG9yaXR5OgotICAgICAgICAgICAgTE9H
X1NUQVRFKCJTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSIpOwotICAgICAgICAgICAgaWYgKCpj
ID09ICcvJykgewotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAg
ICAgICAgICAgICAgICBhZHZhbmNlKGMpOwotICAgICAgICAgICAgICAgIGlmIChjLmF0RW5kKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnLycp
IHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hl
czsKLSAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpSZWxhdGl2ZVNsYXNoOwotICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UmVsYXRpdmU7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6UGF0aE9yQXV0aG9yaXR5OgotICAg
ICAgICAgICAgTE9HX1NUQVRFKCJQYXRoT3JBdXRob3JpdHkiKTsKLSAgICAgICAgICAgIGlmICgq
YyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0g
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXR5T3JIb3N0OwotICAgICAgICAg
ICAgICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4g
PSBjOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2Vk
RGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgPT0gJy8nKTsKLSAgICAgICAgICAgICAg
ICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgICAg
ICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAg
ICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAg
ICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAg
IG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZToKLSAgICAgICAgICAgIExPR19TVEFURSgiUmVsYXRp
dmUiKTsKLSAgICAgICAgICAgIHN3aXRjaCAoKmMpIHsKLSAgICAgICAgICAgIGNhc2UgJy8nOgot
ICAgICAgICAgICAgY2FzZSAnXFwnOgotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlJl
bGF0aXZlU2xhc2g7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSAnPyc6Ci0gICAgICAgICAgICAgICAgY29weVVSTFBhcnRzVW50
aWwoYmFzZSwgVVJMUGFydDo6UGF0aEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJz8nKTsKLSAgICAgICAgICAgICAgICAr
K2M7Ci0gICAgICAgICAgICAgICAgaWYgKG5vblVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgJyMnOgotICAgICAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1Vu
dGlsKGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0g
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignIycpOwotICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgY29w
eVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEFmdGVyTGFzdFNsYXNoLCBjLCBub25V
VEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbihj
KSAmJiBwYXJzZWREYXRhVmlldyhjdXJyZW50UG9zaXRpb24oYykgLSAxKSAhPSAnLycpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZVNsYXNoOgotICAgICAgICAgICAgTE9HX1NU
QVRFKCJSZWxhdGl2ZVNsYXNoIik7Ci0gICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09
ICdcXCcpIHsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgY29weVVSTFBh
cnRzVW50aWwoYmFzZSwgVVJMUGFydDo6U2NoZW1lRW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGlu
Zyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOi8vIiwgMyk7Ci0gICAg
ICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFsKQotICAgICAgICAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsKLSAgICAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50
UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0
eU9ySG9zdDsKLSAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
Y29weVVSTFBhcnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UG9ydEVuZCwgYywgbm9uVVRGOFF1ZXJ5
RW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAg
ICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGJhc2UubV9ob3N0RW5k
ICsgYmFzZS5tX3BvcnRMZW5ndGggKyAxOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6
OlBhdGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
dGF0ZTo6U3BlY2lhbEF1dGhvcml0eVNsYXNoZXM6Ci0gICAgICAgICAgICBMT0dfU1RBVEUoIlNw
ZWNpYWxBdXRob3JpdHlTbGFzaGVzIik7Ci0gICAgICAgICAgICBpZiAoTElLRUxZKCpjID09ICcv
JyB8fCAqYyA9PSAnXFwnKSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAn
XFwnKSkKLSAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAg
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBhZHZhbmNl
KGMpOwotICAgICAgICAgICAgICAgIGlmIChMSUtFTFkoIWMuYXRFbmQoKSAmJiAoKmMgPT0gJy8n
IHx8ICpjID09ICdcXCcpKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKmMg
PT0gJ1xcJykpCi0gICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0g
ICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoIi8vIiwgMik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5SWdub3JlU2xhc2hlczoK
LSAgICAgICAgICAgIExPR19TVEFURSgiU3BlY2lhbEF1dGhvcml0eUlnbm9yZVNsYXNoZXMiKTsK
LSAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykgewotICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBv
c2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkF1dGhvcml0eU9ySG9z
dDsKLSAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXR5T3JI
b3N0OgotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIExPR19TVEFURSgiQXV0aG9y
aXR5T3JIb3N0Iik7Ci0gICAgICAgICAgICAgICAgaWYgKCpjID09ICdAJykgewotICAgICAgICAg
ICAgICAgICAgICBhdXRvIGxhc3RBdCA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZmlu
ZExhc3RBdCA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICghZmluZExhc3RBdC5hdEVu
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBVUkxfUEFSU0VSX0xPRygiRmluZGluZyBs
YXN0IEA6ICVjIiwgKmZpbmRMYXN0QXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpm
aW5kTGFzdEF0ID09ICdAJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QXQgPSBm
aW5kTGFzdEF0OwotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1NsYXNoID0gKmZpbmRM
YXN0QXQgPT0gJy8nIHx8IChtX3VybElzU3BlY2lhbCAmJiAqZmluZExhc3RBdCA9PSAnXFwnKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NsYXNoIHx8ICpmaW5kTGFzdEF0ID09ICc/
JyB8fCAqZmluZExhc3RBdCA9PSAnIycpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICArK2ZpbmRMYXN0QXQ7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGxhc3RBdCkpOwotICAg
ICAgICAgICAgICAgICAgICBjID0gbGFzdEF0OwotICAgICAgICAgICAgICAgICAgICBhZHZhbmNl
KGMpOwotICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHlPckhvc3RCZWdpbiA9IGM7Ci0gICAg
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Okhvc3Q7Ci0gICAgICAgICAgICAgICAgICAg
IG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBib29sIGlzU2xhc2gg
PSAqYyA9PSAnLycgfHwgKG1fdXJsSXNTcGVjaWFsICYmICpjID09ICdcXCcpOwotICAgICAgICAg
ICAgICAgIGlmIChpc1NsYXNoIHx8ICpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGl0
ZXJhdG9yLmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3VybElzU3Bl
Y2lhbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZSgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVudFBvc2l0aW9uKGMp
OwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1f
dXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJs
Lm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9
IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IG1fdXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihhdXRob3Jp
dHlPckhvc3RCZWdpbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3Jk
RW5kID0gbV91cmwubV91c2VyRW5kOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJz
ZUhvc3RBbmRQb3J0KGl0ZXJhdG9yKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZh
aWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlz
U2xhc2gpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdXJsSXNTcGVjaWFs
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGlzUGVyY2VudE9yTm9u
QVNDSUkoKmMpKQotICAgICAgICAgICAgICAgICAgICBtX2hvc3RIYXNQZXJjZW50T3JOb25BU0NJ
SSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgfSB3aGlsZSAoIWMu
YXRFbmQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6SG9zdDoK
LSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkhvc3QiKTsKLSAg
ICAgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoKmMgPT0g
Jz8nIHx8ICpjID09ICcjJykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJ
KCpjKSkKLSAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0
cnVlOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5k
KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkZpbGU6Ci0gICAg
ICAgICAgICBMT0dfU1RBVEUoIkZpbGUiKTsKLSAgICAgICAgICAgIHN3aXRjaCAoKmMpIHsKLSAg
ICAgICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7
Ci0gICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgICAgICAgICBjYXNlICcvJzoKLSAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RmlsZVNsYXNoOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJz8nOgotICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYg
YmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29weVVSTFBh
cnRzVW50aWwoYmFzZSwgVVJMUGFydDo6UGF0aEVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2Rpbmcp
OwotICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc/Jyk7Ci0gICAgICAg
ICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvLy8/IiwgNCk7Ci0gICAgICAgICAgICAgICAg
ICAgICsrYzsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50
UG9zaXRpb24oYykgLSAyOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBt
X3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RF
bmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wb3J0
TGVuZ3RoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAobm9uVVRGOFF1ZXJ5RW5jb2RpbmcpIHsKLSAgICAgICAgICAg
ICAgICAgICAgcXVlcnlCZWdpbiA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3Rh
dGU6Ok5vblVURjhRdWVyeTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSAnIyc6Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMp
OwotICAgICAgICAgICAgICAgIGlmIChiYXNlLmlzVmFsaWQoKSAmJiBiYXNlLnByb3RvY29sSXMo
ImZpbGUiKSkgewotICAgICAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBV
UkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAgICAgICAgICAg
ICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcjJyk7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLy8vIyIsIDQpOwot
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihj
KSAtIDI7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAw
OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IG1fdXJs
Lm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0g
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAg
ICAgKytjOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGJh
c2UuaXNWYWxpZCgpICYmIGJhc2UucHJvdG9jb2xJcygiZmlsZSIpICYmIHNob3VsZENvcHlGaWxl
VVJMKGMpKQotICAgICAgICAgICAgICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBVUkxQ
YXJ0OjpQYXRoQWZ0ZXJMYXN0U2xhc2gsIGMsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKLSAgICAg
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cigiLy8vIiwgMyk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3Vy
cmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dv
cmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9o
b3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cG9ydExlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgICAgICAgICBpZiAo
aXNXaW5kb3dzRHJpdmVMZXR0ZXIoYykpCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRX
aW5kb3dzRHJpdmVMZXR0ZXIoYyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZVNsYXNoOgot
ICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlU2xhc2giKTsKLSAgICAgICAgICAgIGlmIChMSUtF
TFkoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKCpjID09ICdcXCcpKQotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7
Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAg
ICAgIGFkdmFuY2UoYyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJy
ZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1f
dXNlclN0YXJ0OwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0gICAg
ICAgICAgICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwotICAgICAgICAgICAgICAgIHN0
YXRlID0gU3RhdGU6OkZpbGVIb3N0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgYXBwZW5k
VG9BU0NJSUJ1ZmZlcigiLy8iLCAyKTsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0g
Y3VycmVudFBvc2l0aW9uKGMpIC0gMTsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1f
dXJsLm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJs
Lm1fdXNlclN0YXJ0OwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2Vy
U3RhcnQ7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAg
aWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGMpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kV2lu
ZG93c0RyaXZlTGV0dGVyKGMpOwotICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAxOwotICAgICAgICAgICAgfSBlbHNlIGlmIChj
b3B5QmFzZVdpbmRvd3NEcml2ZUxldHRlcihiYXNlKSkgewotICAgICAgICAgICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxh
c3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgNDsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3Rh
cnQgKyAxOwotICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpGaWxlSG9zdDoKLSAgICAgICAgICAgIGRvIHsKLSAg
ICAgICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGVIb3N0Iik7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzU2xhc2hRdWVzdGlvbk9ySGFzaCgqYykpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCB3
aW5kb3dzUXVpcmsgPSB0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0QmVnaW4pOwot
ICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93c1F1aXJrKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93c1F1
aXJrIHx8IGF1dGhvcml0eU9ySG9zdEJlZ2luID09IGMpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCh3aW5kb3dzUXVpcmsgfHwgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9u
KGMpIC0gMSkgPT0gJy8nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgq
YyA9PSAnPycpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8/
IiwgMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChub25VVEY4UXVlcnlFbmNvZGluZykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBxdWVyeUJlZ2luID0gYzsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpVVEY4UXVlcnk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICcj
JykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiLyMiLCAyKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYykgLSAx
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1f
cGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1f
cXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoIXBh
cnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0aG9yaXR5
T3JIb3N0QmVnaW4sIGMpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0xvY2FsaG9zdChwYXJzZWREYXRhVmll
dyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3
b3JkRW5kKSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLnNocmluayhtX3VybC5tX3Bh
c3N3b3JkRW5kKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1
cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydExl
bmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGhTdGFydDsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChp
c1BlcmNlbnRPck5vbkFTQ0lJKCpjKSkKLSAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVy
Y2VudE9yTm9uQVNDSUkgPSB0cnVlOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAg
IH0gd2hpbGUgKCFjLmF0RW5kKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U3RhdGU6OlBhdGhTdGFydDoKLSAgICAgICAgICAgIExPR19TVEFURSgiUGF0aFN0YXJ0Iik7Ci0g
ICAgICAgICAgICBpZiAoKmMgIT0gJy8nICYmICpjICE9ICdcXCcpIHsKLSAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignLycpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQ
YXRoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlBhdGg6Ci0gICAg
ICAgICAgICBMT0dfU1RBVEUoIlBhdGgiKTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwg
KG1fdXJsSXNTcGVjaWFsICYmICpjID09ICdcXCcpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKG1fdXJsSXNTcGVjaWFsICYmICpjID09ICdcXCcpKQotICAgICAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZl
cignLycpOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShjdXJyZW50UG9z
aXRpb24oYykgJiYgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9uKGMpIC0gMSkgPT0gJy8n
KSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0RvdWJsZURvdFBhdGhTZWdtZW50
KGMpKSkgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudChjKTsKLSAgICAgICAgICAg
ICAgICAgICAgcG9wUGF0aCgpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzU2luZ2xlRG90UGF0aFNl
Z21lbnQoYykpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAg
ICAgICAgICAgICAgICAgICAgY29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KGMpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpZiAoKmMgPT0gJz8nKSB7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIoJz8nKTsKLSAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgaWYgKG5v
blVURjhRdWVyeUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5QmVnaW4gPSBj
OwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpOb25VVEY4UXVlcnk7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlVU
RjhRdWVyeTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1f
dXJsLm1fcGF0aEVuZDsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHV0ZjhQ
ZXJjZW50RW5jb2RlPGlzSW5EZWZhdWx0RW5jb2RlU2V0PihjKTsKLSAgICAgICAgICAgICsrYzsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpDYW5ub3RCZUFCYXNlVVJM
UGF0aDoKLSAgICAgICAgICAgIExPR19TVEFURSgiQ2Fubm90QmVBQmFzZVVSTFBhdGgiKTsKLSAg
ICAgICAgICAgIGlmICgqYyA9PSAnPycpIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhF
bmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignPycpOwotICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBpZiAobm9u
VVRGOFF1ZXJ5RW5jb2RpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgcXVlcnlCZWdpbiA9IGM7
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok5vblVURjhRdWVyeTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6VVRG
OFF1ZXJ5OwotICAgICAgICAgICAgfSBlbHNlIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAgICAg
ICAgICBtX3VybC5tX3BhdGhFbmQgPSBjdXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAg
ICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKLSAgICAgICAgICAgICAgICBz
dGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gJy8n
KSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAg
ICAgICAgICsrYzsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9
IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJblNpbXBsZUVuY29kZVNldD4oYyk7Ci0gICAgICAgICAg
ICAgICAgKytjOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU3RhdGU6OlVURjhRdWVyeToKLSAgICAgICAgICAgIExPR19TVEFURSgiVVRGOFF1ZXJ5Iik7
Ci0gICAgICAgICAgICBBU1NFUlQocXVlcnlCZWdpbiA9PSBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPigpKTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAnIycpIHsKLSAgICAgICAgICAg
ICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAg
ICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUKCFub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0g
ICAgICAgICAgICB1dGY4UXVlcnlFbmNvZGUoYyk7Ci0gICAgICAgICAgICArK2M7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTdGF0ZTo6Tm9uVVRGOFF1ZXJ5OgotICAgICAgICAg
ICAgZG8gewotICAgICAgICAgICAgICAgIExPR19TVEFURSgiTm9uVVRGOFF1ZXJ5Iik7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5QmVnaW4gIT0gQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4oKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCpjID09ICcjJykgewotICAgICAgICAg
ICAgICAgICAgICBlbmNvZGVOb25VVEY4UXVlcnkocXVlcnlCdWZmZXIsICpub25VVEY4UXVlcnlF
bmNvZGluZywgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4ocXVlcnlCZWdpbiwgYykp
OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9u
KGMpOwotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpGcmFnbWVudDsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGFwcGVuZENvZGVQb2ludChxdWVyeUJ1ZmZlciwgKmMpOwotICAgICAgICAgICAgICAgIGFkdmFu
Y2UoYywgcXVlcnlCZWdpbik7Ci0gICAgICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRlOjpGcmFnbWVudDoKLSAgICAgICAg
ICAgIFVSTF9QQVJTRVJfTE9HKCJTdGF0ZSBGcmFnbWVudCIpOwotICAgICAgICAgICAgdXRmOFBl
cmNlbnRFbmNvZGU8aXNJblNpbXBsZUVuY29kZVNldD4oYyk7Ci0gICAgICAgICAgICArK2M7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN3aXRjaCAoc3RhdGUp
IHsKLSAgICBjYXNlIFN0YXRlOjpTY2hlbWVTdGFydDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJTY2hlbWVTdGFydCIpOwotICAgICAgICBpZiAoIWN1cnJlbnRQb3NpdGlvbihjKSAmJiBiYXNl
LmlzVmFsaWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwpIHsKLSAgICAgICAgICAgIG1f
dXJsID0gYmFzZTsKLSAgICAgICAgICAgIG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGZhaWx1cmUoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgU3RhdGU6OlNjaGVtZToKLSAgICAgICAgTE9HX0ZJTkFM
X1NUQVRFKCJTY2hlbWUiKTsKLSAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBTdGF0ZTo6Tm9TY2hlbWU6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiTm9TY2hl
bWUiKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBjYXNlIFN0
YXRlOjpTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eToKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJTcGVjaWFsUmVsYXRpdmVPckF1dGhvcml0eSIpOwotICAgICAgICBjb3B5VVJMUGFydHNVbnRp
bChiYXNlLCBVUkxQYXJ0OjpRdWVyeUVuZCwgYywgbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpQYXRoT3JBdXRob3JpdHk6Ci0gICAgICAgIExP
R19GSU5BTF9TVEFURSgiUGF0aE9yQXV0aG9yaXR5Iik7Ci0gICAgICAgIEFTU0VSVChtX3VybC5t
X3VzZXJTdGFydCk7Ci0gICAgICAgIEFTU0VSVChtX3VybC5tX3VzZXJTdGFydCA9PSBjdXJyZW50
UG9zaXRpb24oYykpOwotICAgICAgICBBU1NFUlQocGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0
aW9uKGMpIC0gMSkgPT0gJy8nKTsKLSAgICAgICAgbV91cmwubV91c2VyU3RhcnQtLTsKLSAgICAg
ICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1f
cGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9ob3N0RW5k
ID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0g
ICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQgKyAx
OwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsK
LSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpSZWxhdGl2ZToKLSAgICAgICAgTE9HX0ZJ
TkFMX1NUQVRFKCJSZWxhdGl2ZSIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIGNhc2UgU3RhdGU6OlJlbGF0aXZlU2xhc2g6Ci0gICAgICAgIExPR19GSU5BTF9T
VEFURSgiUmVsYXRpdmVTbGFzaCIpOwotICAgICAgICBjb3B5VVJMUGFydHNVbnRpbChiYXNlLCBV
UkxQYXJ0OjpQb3J0RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAgICAgIGFwcGVu
ZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOwotICAgICAgICBtX3Vy
bC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFN0YXRlOjpTcGVjaWFsQXV0aG9yaXR5U2xhc2hlczoKLSAgICAgICAgTE9HX0ZJ
TkFMX1NUQVRFKCJTcGVjaWFsQXV0aG9yaXR5U2xhc2hlcyIpOwotICAgICAgICBtX3VybC5tX3Vz
ZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgbV91cmwubV91c2VyRW5kID0g
bV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5t
X3VzZXJTdGFydDsKLSAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7
Ci0gICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEFm
dGVyTGFzdFNsYXNoID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwu
bV91c2VyU3RhcnQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OlNwZWNpYWxBdXRo
b3JpdHlJZ25vcmVTbGFzaGVzOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIlNwZWNpYWxBdXRo
b3JpdHlJZ25vcmVTbGFzaGVzIik7Ci0gICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgU3RhdGU6OkF1dGhvcml0eU9ySG9zdDoKLSAgICAgICAgTE9HX0ZJTkFMX1NU
QVRFKCJBdXRob3JpdHlPckhvc3QiKTsKLSAgICAgICAgbV91cmwubV91c2VyRW5kID0gY3VycmVu
dFBvc2l0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgbV91cmwubV9wYXNzd29y
ZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKLSAgICAgICAgaWYgKGF1dGhvcml0eU9ySG9zdEJlZ2lu
LmF0RW5kKCkpIHsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAg
ICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXBhcnNlSG9zdEFu
ZFBvcnQoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7Ci0gICAgICAgICAgICBmYWlsdXJlKCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobV91
cmxJc1NwZWNpYWwpIHsKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAg
ICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAgICAgICAgICAgIG1f
dXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aCArIDE7
Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBt
X3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGg7Ci0gICAgICAgIH0KLSAgICAgICAg
bV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgIG1f
dXJsLm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgU3RhdGU6Okhvc3Q6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiSG9zdCIpOwotICAgICAg
ICBpZiAoIXBhcnNlSG9zdEFuZFBvcnQoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7Ci0gICAgICAg
ICAgICBmYWlsdXJlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKG1fdXJsSXNTcGVjaWFsKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0g
ICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGggKyAxOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJsLm1faG9zdEVu
ZCArIG1fdXJsLm1fcG9ydExlbmd0aDsKLSAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBtX3VybC5tX3BhdGhFbmQ7Ci0gICAgICAgIG1fdXJsLm1fcXVlcnlFbmQgPSBtX3VybC5t
X3BhdGhFbmQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OkZpbGU6Ci0gICAgICAg
IExPR19GSU5BTF9TVEFURSgiRmlsZSIpOwotICAgICAgICBpZiAoYmFzZS5pc1ZhbGlkKCkgJiYg
YmFzZS5wcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgICAgIGNvcHlVUkxQYXJ0c1VudGls
KGJhc2UsIFVSTFBhcnQ6OlF1ZXJ5RW5kLCBjLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0g
ICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8vLyIsIDMpOwotICAgICAgICBtX3VybC5tX3Vz
ZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAgIG1fdXJsLm1fdXNlckVu
ZCA9IG1fdXJsLm1fdXNlclN0YXJ0OwotICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91
cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IG1fdXJsLm1fdXNlclN0
YXJ0OwotICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA9IG1fdXJsLm1fdXNlclN0YXJ0ICsgMTsKLSAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIG1fdXJsLm1f
cXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBTdGF0ZTo6RmlsZVNsYXNoOgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGVT
bGFzaCIpOwotICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgIG1fdXJsLm1fdXNl
clN0YXJ0ID0gY3VycmVudFBvc2l0aW9uKGMpICsgMTsKLSAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcigiLy8iLCAyKTsKLSAgICAgICAgbV91cmwubV91c2VyRW5kID0gbV91cmwubV91c2VyU3Rh
cnQ7Ci0gICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsKLSAg
ICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAgIG1fdXJs
Lm1fcG9ydExlbmd0aCA9IDA7Ci0gICAgICAgIGlmIChjb3B5QmFzZVdpbmRvd3NEcml2ZUxldHRl
cihiYXNlKSkgewotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOwotICAgICAg
ICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDQ7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1fdXJs
Lm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OkZp
bGVIb3N0OgotICAgICAgICBMT0dfRklOQUxfU1RBVEUoIkZpbGVIb3N0Iik7Ci0gICAgICAgIGlm
ICh0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4oYXV0aG9yaXR5T3JIb3N0QmVnaW4sIGMpKQotICAgICAgICAgICAgJiYgaXNXaW5kb3dzRHJp
dmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0QmVnaW4pKSB7Ci0gICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOwotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignLycpOwotICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0
eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
Y3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwu
bV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91
cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgaWYgKGF1dGhvcml0eU9ySG9zdEJlZ2luID09IGMpIHsKLSAgICAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBvc2l0aW9u
KGMpIC0gMTsKLSAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0
OwotICAgICAgICAgICAgbV91cmwubV9wYXNzd29yZEVuZCA9IG1fdXJsLm1fdXNlclN0YXJ0Owot
ICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gbV91cmwubV91c2VyU3RhcnQ7Ci0gICAgICAg
ICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBtX3VybC5tX3VzZXJTdGFydCArIDE7Ci0gICAgICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgIG1fdXJs
Lm1fcXVlcnlFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKLSAg
ICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgaWYgKGlzTG9jYWxob3N0KHBhcnNl
ZERhdGFWaWV3KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJlbnRQb3NpdGlvbihjKSAtIG1fdXJs
Lm1fcGFzc3dvcmRFbmQpKSkgewotICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJpbmsobV91
cmwubV9wYXNzd29yZEVuZCk7Ci0gICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJyZW50
UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAg
ICB9Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAgICAgbV91cmwubV9w
YXRoQWZ0ZXJMYXN0U2xhc2ggPSBtX3VybC5tX2hvc3RFbmQgKyBtX3VybC5tX3BvcnRMZW5ndGgg
KyAxOwotICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpQYXRoU3RhcnQ6Ci0gICAgICAgIExP
R19GSU5BTF9TVEFURSgiUGF0aFN0YXJ0Iik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgY2FzZSBTdGF0ZTo6UGF0aDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRF
KCJQYXRoIik7Ci0gICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsK
LSAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEVuZDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBTdGF0ZTo6Q2Fubm90QmVBQmFzZVVSTFBhdGg6Ci0gICAgICAgIExPR19G
SU5BTF9TVEFURSgiQ2Fubm90QmVBQmFzZVVSTFBhdGgiKTsKLSAgICAgICAgbV91cmwubV9wYXRo
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91
cmwubV9wYXRoRW5kOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpVVEY4UXVlcnk6
Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgiVVRGOFF1ZXJ5Iik7Ci0gICAgICAgIEFTU0VSVChx
dWVyeUJlZ2luID09IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOwotICAgICAg
ICBtX3VybC5tX3F1ZXJ5RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFN0YXRlOjpOb25VVEY4UXVlcnk6Ci0gICAgICAgIExPR19GSU5BTF9TVEFURSgi
Tm9uVVRGOFF1ZXJ5Iik7Ci0gICAgICAgIEFTU0VSVChxdWVyeUJlZ2luICE9IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KCkpOwotICAgICAgICBlbmNvZGVOb25VVEY4UXVlcnkocXVl
cnlCdWZmZXIsICpub25VVEY4UXVlcnlFbmNvZGluZywgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4ocXVlcnlCZWdpbiwgYykpOwotICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gY3Vy
cmVudFBvc2l0aW9uKGMpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0YXRlOjpGcmFnbWVu
dDoKLSAgICAgICAgTE9HX0ZJTkFMX1NUQVRFKCJGcmFnbWVudCIpOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0KLSAgICBpZiAoTElLRUxZKCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikpIHsKLSAg
ICAgICAgbV91cmwubV9zdHJpbmcgPSBtX2lucHV0U3RyaW5nOwotICAgICAgICBBU1NFUlQobV9h
c2NpaUJ1ZmZlci5pc0VtcHR5KCkpOwotICAgIH0gZWxzZQotICAgICAgICBtX3VybC5tX3N0cmlu
ZyA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShtX2FzY2lpQnVmZmVyKSk7Ci0gICAgbV91cmwubV9p
c1ZhbGlkID0gdHJ1ZTsKLSAgICBVUkxfUEFSU0VSX0xPRygiUGFyc2VkIFVSTCA8JXM+IiwgbV91
cmwubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci12b2lkIFVSTFBhcnNlcjo6cGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCi17Ci0gICAgaWYgKFVOTElLRUxZKGl0ZXJhdG9y
LmF0RW5kKCkpKSB7Ci0gICAgICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvcik7Ci0gICAgICAg
IG1fdXJsLm1fdXNlckVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIG1f
dXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3VzZXJFbmQ7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBhZHZhbmNlKGl0ZXJhdG9yKSkgewot
ICAgICAgICBpZiAoKml0ZXJhdG9yID09ICc6JykgewotICAgICAgICAgICAgbV91cmwubV91c2Vy
RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgICAgIGF1dG8gaXRlcmF0
b3JBdENvbG9uID0gaXRlcmF0b3I7Ci0gICAgICAgICAgICArK2l0ZXJhdG9yOwotICAgICAgICAg
ICAgYm9vbCB0YWJPck5ld2xpbmVBZnRlckNvbG9uID0gZmFsc2U7Ci0gICAgICAgICAgICB3aGls
ZSAoVU5MSUtFTFkoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9y
KSkpIHsKLSAgICAgICAgICAgICAgICB0YWJPck5ld2xpbmVBZnRlckNvbG9uID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICArK2l0ZXJhdG9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGl0ZXJhdG9yQXRDb2xvbik7Ci0gICAgICAgICAgICAgICAgbV91cmwubV9wYXNzd29y
ZEVuZCA9IG1fdXJsLm1fdXNlckVuZDsKLSAgICAgICAgICAgICAgICBpZiAobV91cmwubV91c2Vy
RW5kID4gbV91cmwubV91c2VyU3RhcnQpCi0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJ0AnKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpZiAodGFiT3JOZXdsaW5lQWZ0ZXJDb2xvbikKLSAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JBdENvbG9uKTsKLSAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoJzonKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHV0
ZjhQZXJjZW50RW5jb2RlPFdlYkNvcmU6OmlzSW5Vc2VySW5mb0VuY29kZVNldD4oaXRlcmF0b3Ip
OwotICAgIH0KLSAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7IGFkdmFuY2UoaXRlcmF0b3Ip
KQotICAgICAgICB1dGY4UGVyY2VudEVuY29kZTxXZWJDb3JlOjppc0luVXNlckluZm9FbmNvZGVT
ZXQ+KGl0ZXJhdG9yKTsKLSAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gY3VycmVudFBvc2l0aW9u
KGl0ZXJhdG9yKTsKLSAgICBpZiAoIW1fdXJsLm1fdXNlckVuZCkKLSAgICAgICAgbV91cmwubV91
c2VyRW5kID0gbV91cmwubV9wYXNzd29yZEVuZDsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdA
Jyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+Ci12b2lkIFVS
TFBhcnNlcjo6YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlIG51
bWJlcikKLXsKLSAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2lnbmVkSW50ZWdlclR5cGUpICogMyAr
IDFdOwotICAgIExDaGFyKiBlbmQgPSBzdGQ6OmVuZChidWYpOwotICAgIExDaGFyKiBwID0gZW5k
OwotICAgIGRvIHsKLSAgICAgICAgKi0tcCA9IChudW1iZXIgJSAxMCkgKyAnMCc7Ci0gICAgICAg
IG51bWJlciAvPSAxMDsKLSAgICB9IHdoaWxlIChudW1iZXIpOwotICAgIGFwcGVuZFRvQVNDSUlC
dWZmZXIocCwgZW5kIC0gcCk7Ci19Ci0KLXZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY0KElQ
djRBZGRyZXNzIGFkZHJlc3MpCi17Ci0gICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50
OF90PihhZGRyZXNzID4+IDI0KTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7Ci0gICAg
YXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1aW50OF90PihhZGRyZXNzID4+IDE2KTsKLSAgICBh
cHBlbmRUb0FTQ0lJQnVmZmVyKCcuJyk7Ci0gICAgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcjx1
aW50OF90PihhZGRyZXNzID4+IDgpOwotICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy4nKTsKLSAg
ICBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyPHVpbnQ4X3Q+KGFkZHJlc3MpOwotfQotICAgIAot
c3RhdGljIHNpemVfdCB6ZXJvU2VxdWVuY2VMZW5ndGgoY29uc3Qgc3RkOjphcnJheTx1aW50MTZf
dCwgOD4mIGFkZHJlc3MsIHNpemVfdCBiZWdpbikKLXsKLSAgICBzaXplX3QgZW5kID0gYmVnaW47
Ci0gICAgZm9yICg7IGVuZCA8IDg7IGVuZCsrKSB7Ci0gICAgICAgIGlmIChhZGRyZXNzW2VuZF0p
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIGVuZCAtIGJlZ2luOwotfQot
Ci1zdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNv
bnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzKQotewotICAgIHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBsb25nZXN0OwotICAgIHNpemVfdCBsb25nZXN0TGVuZ3RoID0gMDsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDg7IGkrKykgewotICAgICAgICBzaXplX3QgbGVuZ3RoID0g
emVyb1NlcXVlbmNlTGVuZ3RoKGFkZHJlc3MsIGkpOwotICAgICAgICBpZiAobGVuZ3RoKSB7Ci0g
ICAgICAgICAgICBpZiAobGVuZ3RoID4gMSAmJiAoIWxvbmdlc3QgfHwgbG9uZ2VzdExlbmd0aCA8
IGxlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICBsb25nZXN0ID0gaTsKLSAgICAgICAgICAgICAg
ICBsb25nZXN0TGVuZ3RoID0gbGVuZ3RoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaSAr
PSBsZW5ndGg7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGxvbmdlc3Q7Ci19Ci0KLXZv
aWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGllY2UpCi17Ci0gICAg
Ym9vbCBwcmludGVkID0gZmFsc2U7Ci0gICAgaWYgKGF1dG8gbmliYmxlMCA9IHBpZWNlID4+IDEy
KSB7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2VyY2FzZUFT
Q0lJSGV4RGlnaXQobmliYmxlMCkpOwotICAgICAgICBwcmludGVkID0gdHJ1ZTsKLSAgICB9Ci0g
ICAgYXV0byBuaWJibGUxID0gcGllY2UgPj4gOCAmIDB4RjsKLSAgICBpZiAocHJpbnRlZCB8fCBu
aWJibGUxKSB7Ci0gICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIobG93ZXJOaWJibGVUb0xvd2Vy
Y2FzZUFTQ0lJSGV4RGlnaXQobmliYmxlMSkpOwotICAgICAgICBwcmludGVkID0gdHJ1ZTsKLSAg
ICB9Ci0gICAgYXV0byBuaWJibGUyID0gcGllY2UgPj4gNCAmIDB4RjsKLSAgICBpZiAocHJpbnRl
ZCB8fCBuaWJibGUyKQotICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKGxvd2VyTmliYmxlVG9M
b3dlcmNhc2VBU0NJSUhleERpZ2l0KG5pYmJsZTIpKTsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHBpZWNlICYgMHhGKSk7Ci19Ci0K
LXZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2KFVSTFBhcnNlcjo6SVB2NkFkZHJlc3MgYWRk
cmVzcykKLXsKLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCdbJyk7Ci0gICAgYXV0byBjb21wcmVz
c1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKLSAgICBmb3IgKHNp
emVfdCBwaWVjZSA9IDA7IHBpZWNlIDwgODsgcGllY2UrKykgewotICAgICAgICBpZiAoY29tcHJl
c3NQb2ludGVyICYmIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpID09IHBpZWNlKSB7Ci0gICAgICAg
ICAgICBBU1NFUlQoIWFkZHJlc3NbcGllY2VdKTsKLSAgICAgICAgICAgIGlmIChwaWVjZSkKLSAg
ICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCc6Jyk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcigiOjoiLCAyKTsKLSAgICAgICAg
ICAgIHdoaWxlIChwaWVjZSA8IDggJiYgIWFkZHJlc3NbcGllY2VdKQotICAgICAgICAgICAgICAg
IHBpZWNlKys7Ci0gICAgICAgICAgICBpZiAocGllY2UgPT0gOCkKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBzZXJpYWxpemVJUHY2UGllY2UoYWRkcmVzc1twaWVj
ZV0pOwotICAgICAgICBpZiAocGllY2UgPCA3KQotICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1
ZmZlcignOicpOwotICAgIH0KLSAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCddJyk7Ci19Ci0KLWVu
dW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3IgewotICAgIEZhaWx1cmUs
Ci0gICAgT3ZlcmZsb3csCi19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgot
RXhwZWN0ZWQ8dWludDMyX3QsIFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBVUkxQ
YXJzZXI6OnBhcnNlSVB2NFBpZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvciwgYm9vbCYgZGlkU2VlU3ludGF4VmlvbGF0aW9uKQotewotICAgIGVudW0gY2xhc3Mg
U3RhdGUgOiB1aW50OF90IHsKLSAgICAgICAgVW5rbm93bkJhc2UsCi0gICAgICAgIERlY2ltYWws
Ci0gICAgICAgIE9jdGFsT3JIZXgsCi0gICAgICAgIE9jdGFsLAotICAgICAgICBIZXgsCi0gICAg
fTsKLSAgICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpVbmtub3duQmFzZTsKLSAgICBDaGVja2VkPHVp
bnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gdmFsdWUgPSAwOwotICAgIGlmICghaXRlcmF0b3IuYXRF
bmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
SVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0
RW5kKCkpIHsKLSAgICAgICAgaWYgKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpIHsKLSAgICAg
ICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICArK2l0ZXJh
dG9yOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCppdGVy
YXRvciA9PSAnLicpIHsKLSAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaGFzT3ZlcmZsb3dlZCgp
KTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKLSAgICAgICAgfQotICAg
ICAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgICAgIGNhc2UgU3RhdGU6OlVua25vd25CYXNlOgot
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKCppdGVyYXRvciA9PSAnMCcpKSB7Ci0gICAgICAgICAg
ICAgICAgKytpdGVyYXRvcjsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpPY3RhbE9y
SGV4OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
c3RhdGUgPSBTdGF0ZTo6RGVjaW1hbDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFN0YXRlOjpPY3RhbE9ySGV4OgotICAgICAgICAgICAgZGlkU2VlU3ludGF4VmlvbGF0aW9uID0g
dHJ1ZTsKLSAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPT0gJ3gnIHx8ICppdGVyYXRvciA9PSAn
WCcpIHsKLSAgICAgICAgICAgICAgICArK2l0ZXJhdG9yOwotICAgICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkhleDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6Ok9jdGFsOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgU3RhdGU6OkRlY2ltYWw6Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgq
aXRlcmF0b3IpKQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGll
Y2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpOwotICAgICAgICAgICAgdmFsdWUgKj0gMTA7Ci0gICAg
ICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7Ci0gICAgICAgICAgICBpZiAoVU5MSUtF
TFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7Ci0gICAgICAgICAgICAr
K2l0ZXJhdG9yOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6Ok9jdGFs
OgotICAgICAgICAgICAgQVNTRVJUKGRpZFNlZVN5bnRheFZpb2xhdGlvbik7Ci0gICAgICAgICAg
ICBpZiAoKml0ZXJhdG9yIDwgJzAnIHx8ICppdGVyYXRvciA+ICc3JykKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsK
LSAgICAgICAgICAgIHZhbHVlICo9IDg7Ci0gICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3Ig
LSAnMCc7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vy
cm9yOjpPdmVyZmxvdyk7Ci0gICAgICAgICAgICArK2l0ZXJhdG9yOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU3RhdGU6OkhleDoKLSAgICAgICAgICAgIEFTU0VSVChkaWRTZWVT
eW50YXhWaW9sYXRpb24pOwotICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoKml0ZXJh
dG9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFy
c2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICAgICAgICAgIHZhbHVlICo9IDE2OwotICAgICAgICAg
ICAgdmFsdWUgKz0gdG9BU0NJSUhleFZhbHVlKCppdGVyYXRvcik7Ci0gICAgICAgICAgICBpZiAo
VU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdyk7Ci0gICAgICAg
ICAgICArK2l0ZXJhdG9yOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgQVNTRVJUKCF2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpOwotICAgIHJldHVybiB2YWx1ZS51bnNh
ZmVHZXQoKTsKLX0KLQotQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDY0X3QgcG93MjU2KHNpemVf
dCBleHBvbmVudCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChleHBvbmVudCA8PSA0KTsKLSAgICB1
aW50NjRfdCB2YWx1ZXNbNV0gPSB7MSwgMjU2LCAyNTYgKiAyNTYsIDI1NiAqIDI1NiAqIDI1Niwg
MjU2dWxsICogMjU2ICogMjU2ICogMjU2IH07Ci0gICAgcmV0dXJuIHZhbHVlc1tleHBvbmVudF07
Ci19Ci0KLWVudW0gY2xhc3MgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yIHsKLSAgICBGYWls
dXJlLAotICAgIE5vdElQdjQsCi19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Rm9yU3ludGF4VmlvbGF0aW9uLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotRXhwZWN0ZWQ8VVJM
UGFyc2VyOjpJUHY0QWRkcmVzcywgVVJMUGFyc2VyOjpJUHY0UGFyc2luZ0Vycm9yPiBVUkxQYXJz
ZXI6OnBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZUZv
clN5bnRheFZpb2xhdGlvbj4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24sIENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQotewotICAgIFZlY3RvcjxF
eHBlY3RlZDx1aW50MzJfdCwgVVJMUGFyc2VyOjpJUHY0UGllY2VQYXJzaW5nRXJyb3I+LCA0PiBp
dGVtczsKLSAgICBib29sIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IGZhbHNlOwotICAgIGlmICgh
aXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgd2hpbGUgKCFpdGVy
YXRvci5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7
Ci0gICAgICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICAgICAg
KytpdGVyYXRvcjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChpdGVtcy5zaXplKCkgPj0gNCkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJ
UHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKLSAgICAgICAgaXRlbXMuYXBwZW5kKHBhcnNlSVB2
NFBpZWNlKGl0ZXJhdG9yLCBkaWRTZWVTeW50YXhWaW9sYXRpb24pKTsKLSAgICAgICAgaWYgKCFp
dGVyYXRvci5hdEVuZCgpICYmICppdGVyYXRvciA9PSAnLicpIHsKLSAgICAgICAgICAgICsraXRl
cmF0b3I7Ci0gICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0g
ICAgICAgICAgICBlbHNlIGlmICgqaXRlcmF0b3IgPT0gJy4nKQotICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpOb3RJUHY0KTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgfHwgIWl0ZW1zLnNpemUoKSB8fCBp
dGVtcy5zaXplKCkgPiA0KQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoSVB2NFBhcnNp
bmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpIHsK
LSAgICAgICAgaWYgKCFpdGVtLmhhc192YWx1ZSgpICYmIGl0ZW0uZXJyb3IoKSA9PSBJUHY0UGll
Y2VQYXJzaW5nRXJyb3I6OkZhaWx1cmUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoSVB2NFBhcnNpbmdFcnJvcjo6Tm90SVB2NCk7Ci0gICAgfQotICAgIGZvciAoY29uc3QgYXV0
byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgIGlmICghaXRlbS5oYXNfdmFsdWUoKSAmJiBpdGVt
LmVycm9yKCkgPT0gSVB2NFBpZWNlUGFyc2luZ0Vycm9yOjpPdmVyZmxvdykKLSAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICB9
Ci0gICAgaWYgKGl0ZW1zLnNpemUoKSA+IDEpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpdGVtcy5zaXplKCkgLSAxOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChpdGVtc1tpXS52
YWx1ZSgpID4gMjU1KQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0
UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoaXRlbXNb
aXRlbXMuc2l6ZSgpIC0gMV0udmFsdWUoKSA+PSBwb3cyNTYoNSAtIGl0ZW1zLnNpemUoKSkpCi0g
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKTsK
LQotICAgIGlmIChkaWRTZWVTeW50YXhWaW9sYXRpb24pCi0gICAgICAgIHN5bnRheFZpb2xhdGlv
bihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICBpZiAoaXRlbS52YWx1ZSgpID4gMjU1KQotICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRp
b24pOwotICAgIH0KLQotICAgIGlmIChVTkxJS0VMWShpdGVtcy5zaXplKCkgIT0gNCkpCi0gICAg
ICAgIHN5bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsK
LQotICAgIElQdjRBZGRyZXNzIGlwdjQgPSBpdGVtcy50YWtlTGFzdCgpLnZhbHVlKCk7Ci0gICAg
Zm9yIChzaXplX3QgY291bnRlciA9IDA7IGNvdW50ZXIgPCBpdGVtcy5zaXplKCk7ICsrY291bnRl
cikKLSAgICAgICAgaXB2NCArPSBpdGVtc1tjb3VudGVyXS52YWx1ZSgpICogcG93MjU2KDMgLSBj
b3VudGVyKTsKLSAgICByZXR1cm4gaXB2NDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KLXN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGll
Y2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikK
LXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICB1aW50MzJfdCBwaWVjZSA9IDA7Ci0gICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxz
ZTsKLSAgICBzaXplX3QgZGlnaXRDb3VudCA9IDA7Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVu
ZCgpKSB7Ci0gICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCppdGVyYXRvcikpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICArK2RpZ2l0Q291bnQ7Ci0gICAgICAgIGlm
ICghcGllY2UgJiYgKml0ZXJhdG9yID09ICcwJykgewotICAgICAgICAgICAgaWYgKGxlYWRpbmda
ZXJvcykKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAg
bGVhZGluZ1plcm9zID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXBpZWNlICYmICpp
dGVyYXRvciA9PSAnMCcpCi0gICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOwotICAgICAg
ICBwaWVjZSA9IHBpZWNlICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7Ci0gICAgICAgIGlmIChwaWVj
ZSA+IDI1NSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGFkdmFu
Y2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwot
ICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBpZiAoKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBp
ZiAocGllY2UgJiYgbGVhZGluZ1plcm9zKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIHJldHVybiBwaWVjZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
LXN0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQ
djRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVy
YXRvcikKLXsKLSAgICBJUHY0QWRkcmVzcyBhZGRyZXNzID0gMDsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDQ7ICsraSkgewotICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
cGllY2UgPSBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoaXRlcmF0b3IpKQotICAgICAgICAgICAg
YWRkcmVzcyA9IChhZGRyZXNzIDw8IDgpICsgcGllY2UudmFsdWUoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgaWYgKGkgPCAzKSB7Ci0g
ICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgICAgICAgICAgaWYgKCppdGVyYXRvciAhPSAnLicpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGFkdmFuY2U8Q2hhcmFj
dGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwotICAgICAgICB9
IGVsc2UgaWYgKCFpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICB9Ci0gICAgQVNTRVJUKGl0ZXJhdG9yLmF0RW5kKCkpOwotICAgIHJldHVybiBh
ZGRyZXNzOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RkOjpvcHRp
b25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKLXsKLSAgICBBU1NFUlQoKmMgPT0gJ1sn
KTsKLSAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7Ci0gICAgYWR2YW5jZShjLCBob3N0QmVn
aW4pOwotICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICBJUHY2QWRkcmVzcyBhZGRyZXNzID0ge3swLCAwLCAwLCAwLCAwLCAwLCAwLCAwfX07Ci0g
ICAgc2l6ZV90IHBpZWNlUG9pbnRlciA9IDA7Ci0gICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNv
bXByZXNzUG9pbnRlcjsKLQotICAgIGlmICgqYyA9PSAnOicpIHsKLSAgICAgICAgYWR2YW5jZShj
LCBob3N0QmVnaW4pOwotICAgICAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCpjICE9ICc6JykKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKLSAgICAgICAg
KytwaWVjZVBvaW50ZXI7Ci0gICAgICAgIGNvbXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRlcjsK
LSAgICB9Ci0gICAgCi0gICAgd2hpbGUgKCFjLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKHBpZWNl
UG9pbnRlciA9PSA4KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
aWYgKCpjID09ICc6JykgewotICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlcikKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAgYWR2YW5jZShjLCBo
b3N0QmVnaW4pOwotICAgICAgICAgICAgKytwaWVjZVBvaW50ZXI7Ci0gICAgICAgICAgICBjb21w
cmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDYgfHwgKGNvbXByZXNzUG9pbnRlciAm
JiBwaWVjZVBvaW50ZXIgPCA2KSkgewotICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8SVB2
NEFkZHJlc3M+IGlwdjRBZGRyZXNzID0gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoYykpIHsK
LSAgICAgICAgICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA9PSA1
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAgICAg
ICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwotICAgICAgICAgICAgICAgIGFkZHJlc3Nb
cGllY2VQb2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSA+PiAxNjsKLSAgICAgICAgICAg
ICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgJiAweEZG
RkY7Ci0gICAgICAgICAgICAgICAgYyA9IHsgfTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB1aW50MTZfdCB2YWx1ZSA9IDA7Ci0gICAg
ICAgIHNpemVfdCBsZW5ndGggPSAwOwotICAgICAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNl
OwotICAgICAgICBmb3IgKDsgbGVuZ3RoIDwgNDsgbGVuZ3RoKyspIHsKLSAgICAgICAgICAgIGlm
IChjLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoIWlz
QVNDSUlIZXhEaWdpdCgqYykpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBp
ZiAoaXNBU0NJSVVwcGVyKCpjKSkKLSAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9z
dEJlZ2luKTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAnMCcgJiYgIWxlbmd0aCkKLSAgICAgICAg
ICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOwotICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAq
IDB4MTAgKyB0b0FTQ0lJSGV4VmFsdWUoKmMpOwotICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0
QmVnaW4pOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoVU5MSUtFTFkoKHZhbHVl
ICYmIGxlYWRpbmdaZXJvcykgfHwgKCF2YWx1ZSAmJiBsZW5ndGggPiAxKSkpCi0gICAgICAgICAg
ICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLQotICAgICAgICBhZGRyZXNzW3BpZWNlUG9p
bnRlcisrXSA9IHZhbHVlOwotICAgICAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCB8fCAqYyAhPSAnOicpCi0gICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7
Ci0gICAgfQotICAgIAotICAgIGlmICghYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIAotICAgIGlmIChjb21wcmVzc1BvaW50ZXIpIHsKLSAgICAgICAgc2l6ZV90
IHN3YXBzID0gcGllY2VQb2ludGVyIC0gY29tcHJlc3NQb2ludGVyLnZhbHVlKCk7Ci0gICAgICAg
IHBpZWNlUG9pbnRlciA9IDc7Ci0gICAgICAgIHdoaWxlIChzd2FwcykKLSAgICAgICAgICAgIHN0
ZDo6c3dhcChhZGRyZXNzW3BpZWNlUG9pbnRlci0tXSwgYWRkcmVzc1tjb21wcmVzc1BvaW50ZXIu
dmFsdWUoKSArIHN3YXBzLS0gLSAxXSk7Ci0gICAgfSBlbHNlIGlmIChwaWVjZVBvaW50ZXIgIT0g
OCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBwb3NzaWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFk
ZHJlc3MpOwotICAgIGlmIChwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikKLSAgICAgICAgcG9zc2li
bGVDb21wcmVzc1BvaW50ZXIudmFsdWUoKSsrOwotICAgIGlmIChVTkxJS0VMWShjb21wcmVzc1Bv
aW50ZXIgIT0gcG9zc2libGVDb21wcmVzc1BvaW50ZXIpKQotICAgICAgICBzeW50YXhWaW9sYXRp
b24oaG9zdEJlZ2luKTsKLSAgICAKLSAgICByZXR1cm4gYWRkcmVzczsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLVVSTFBhcnNlcjo6TENoYXJCdWZmZXIgVVJMUGFyc2Vy
OjpwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCwgY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0
aW9uUG9zaXRpb24pCi17Ci0gICAgTENoYXJCdWZmZXIgb3V0cHV0OwotICAgIG91dHB1dC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7Ci0gICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICB1aW50OF90IGJ5dGUgPSBpbnB1dFtpXTsKLSAg
ICAgICAgaWYgKGJ5dGUgIT0gJyUnKQotICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVu
ZChieXRlKTsKLSAgICAgICAgZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpIDwgbGVuZ3RoIC0gMikg
ewotICAgICAgICAgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChpbnB1dFtpICsgMV0pICYmIGlzQVND
SUlIZXhEaWdpdChpbnB1dFtpICsgMl0pKSB7Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0
aW9uKGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgICAgICAgICAgICAg
IG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5w
dXRbaSArIDJdKSk7Ci0gICAgICAgICAgICAgICAgaSArPSAyOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKGJ5dGUpOwotICAgIH0K
LSAgICByZXR1cm4gb3V0cHV0OwotfQotICAgIAotVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciBVUkxQ
YXJzZXI6OnBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQot
ewotICAgIExDaGFyQnVmZmVyIG91dHB1dDsKLSAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShsZW5ndGgpOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgdWludDhfdCBieXRlID0gaW5wdXRbaV07Ci0gICAgICAgIGlmIChieXRl
ICE9ICclJykKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoYnl0ZSk7Ci0gICAg
ICAgIGVsc2UgaWYgKGxlbmd0aCA+IDIgJiYgaSA8IGxlbmd0aCAtIDIpIHsKLSAgICAgICAgICAg
IGlmIChpc0FTQ0lJSGV4RGlnaXQoaW5wdXRbaSArIDFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoaW5w
dXRbaSArIDJdKSkgewotICAgICAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQodG9B
U0NJSUhleFZhbHVlKGlucHV0W2kgKyAxXSwgaW5wdXRbaSArIDJdKSk7Ci0gICAgICAgICAgICAg
ICAgaSArPSAyOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgb3V0cHV0LnVu
Y2hlY2tlZEFwcGVuZChieXRlKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBvdXRwdXQu
dW5jaGVja2VkQXBwZW5kKGJ5dGUpOwotICAgIH0KLSAgICByZXR1cm4gb3V0cHV0OwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFVSTFBhcnNlcjo6
TENoYXJCdWZmZXI+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiBkb21haW4s
IGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uKQotewotICAgIExDaGFyQnVmZmVyIGFzY2lpOwotICAgIGlmIChk
b21haW4uaXNBbGxBU0NJSSgpKSB7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBkb21haW4ubGVu
Z3RoKCk7Ci0gICAgICAgIGlmIChkb21haW4uaXM4Qml0KCkpIHsKLSAgICAgICAgICAgIGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgICAgICBh
c2NpaS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7Ci0gICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGlzQVNDSUlVcHBlcihjaGFyYWN0ZXJzW2ldKSkpCi0gICAgICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICAg
ICAgICAgICAgICBhc2NpaS51bmNoZWNrZWRBcHBlbmQodG9BU0NJSUxvd2VyKGNoYXJhY3RlcnNb
aV0pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzID0gZG9tYWluLmNoYXJhY3RlcnMxNigpOwotICAgICAgICAgICAg
YXNjaWkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpKQotICAgICAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAg
ICAgICAgICAgICAgYXNjaWkudW5jaGVja2VkQXBwZW5kKHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJz
W2ldKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGFzY2lpOwot
ICAgIH0KLSAgICAKLSAgICBjb25zdCBzaXplX3QgbWF4RG9tYWluTGVuZ3RoID0gNjQ7Ci0gICAg
VUNoYXIgaG9zdG5hbWVCdWZmZXJbbWF4RG9tYWluTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVy
cm9yID0gVV9aRVJPX0VSUk9SOwotICAgIFVJRE5BSW5mbyBwcm9jZXNzaW5nRGV0YWlscyA9IFVJ
RE5BX0lORk9fSU5JVElBTElaRVI7Ci0gICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVk
ID0gdWlkbmFfbmFtZVRvQVNDSUkoJmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2Rlcigp
LCBTdHJpbmdWaWV3KGRvbWFpbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGRvbWFpbi5sZW5n
dGgoKSwgaG9zdG5hbWVCdWZmZXIsIG1heERvbWFpbkxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxz
LCAmZXJyb3IpOwotICAgIEFTU0VSVChudW1DaGFyYWN0ZXJzQ29udmVydGVkIDw9IHN0YXRpY19j
YXN0PGludDMyX3Q+KG1heERvbWFpbkxlbmd0aCkpOwotCi0gICAgaWYgKFVfU1VDQ0VTUyhlcnJv
cikgJiYgIXByb2Nlc3NpbmdEZXRhaWxzLmVycm9ycykgewotICAgICAgICBmb3IgKGludDMyX3Qg
aSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzQ29udmVydGVkOyArK2kpIHsKLSAgICAgICAgICAgIEFT
U0VSVChpc0FTQ0lJKGhvc3RuYW1lQnVmZmVyW2ldKSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWlz
QVNDSUlVcHBlcihob3N0bmFtZUJ1ZmZlcltpXSkpOwotICAgICAgICB9Ci0gICAgICAgIGFzY2lp
LmFwcGVuZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7Ci0gICAgICAg
IGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhhc2NpaS5kYXRhKCksIGFzY2lpLnNpemUoKSkpCi0g
ICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3Np
dGlvbik7Ci0gICAgICAgIHJldHVybiBhc2NpaTsKLSAgICB9Ci0gICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLX0KLQotYm9vbCBVUkxQYXJzZXI6Omhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29u
c3QgVVJMUGFyc2VyOjpMQ2hhckJ1ZmZlciYgYXNjaWlEb21haW4pCi17Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhc2NpaURvbWFpbi5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoaXNG
b3JiaWRkZW5Ib3N0Q29kZVBvaW50KGFzY2lpRG9tYWluW2ldKSkKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Ci1ib29sIFVSTFBhcnNlcjo6cGFyc2VQb3J0KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKLXsKLSAgICBBU1NFUlQoKml0ZXJhdG9yID09
ICc6Jyk7Ci0gICAgYXV0byBjb2xvbkl0ZXJhdG9yID0gaXRlcmF0b3I7Ci0gICAgYWR2YW5jZShp
dGVyYXRvciwgY29sb25JdGVyYXRvcik7Ci0gICAgdWludDMyX3QgcG9ydCA9IDA7Ci0gICAgaWYg
KFVOTElLRUxZKGl0ZXJhdG9yLmF0RW5kKCkpKSB7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnRMZW5n
dGggPSBjdXJyZW50UG9zaXRpb24oY29sb25JdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsK
LSAgICAgICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKLSAgICAgICAgc3ludGF4
VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOwotICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7
Ci0gICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgIGlm
IChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgewotICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKSB7Ci0gICAgICAgICAg
ICBpZiAoKml0ZXJhdG9yID09ICcwJyAmJiAhZGlnaXRDb3VudCkKLSAgICAgICAgICAgICAgICBs
ZWFkaW5nWmVyb3MgPSB0cnVlOwotICAgICAgICAgICAgKytkaWdpdENvdW50OwotICAgICAgICAg
ICAgcG9ydCA9IHBvcnQgKiAxMCArICppdGVyYXRvciAtICcwJzsKLSAgICAgICAgICAgIGlmIChw
b3J0ID4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgaWYgKHBvcnQgJiYgbGVhZGluZ1plcm9zKQotICAgICAgICBzeW50
YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7Ci0gICAgCi0gICAgaWYgKCFwb3J0ICYmIGRpZ2l0
Q291bnQgPiAxKQotICAgICAgICBzeW50YXhWaW9sYXRpb24oY29sb25JdGVyYXRvcik7Ci0KLSAg
ICBBU1NFUlQocG9ydCA9PSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocG9ydCkpOwotICAgIGlmIChV
TkxJS0VMWShkZWZhdWx0UG9ydEZvclByb3RvY29sKHBhcnNlZERhdGFWaWV3KDAsIG1fdXJsLm1f
c2NoZW1lRW5kKSkgPT0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHBvcnQpKSkKLSAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGNvbG9uSXRlcmF0b3IpOwotICAgIGVsc2UgewotICAgICAgICBhcHBlbmRU
b0FTQ0lJQnVmZmVyKCc6Jyk7Ci0gICAgICAgIEFTU0VSVChwb3J0IDw9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDE2X3Q+OjptYXgoKSk7Ci0gICAgICAgIGFwcGVuZE51bWJlclRvQVNDSUlCdWZm
ZXI8dWludDE2X3Q+KHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KSk7Ci0gICAgfQotCi0gICAg
dW5zaWduZWQgcG9ydExlbmd0aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5t
X2hvc3RFbmQ7Ci0gICAgUkVMRUFTRV9BU1NFUlQocG9ydExlbmd0aCA8PSBVUkw6Om1heFBvcnRM
ZW5ndGgpOwotICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IHBvcnRMZW5ndGg7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1ib29sIFVSTFBh
cnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBp
dGVyYXRvcikKLXsKLSAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmICgqaXRlcmF0b3IgPT0gJzonKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCppdGVyYXRvciA9PSAnWycpIHsKLSAgICAgICAgYXV0byBpcHY2RW5kID0gaXRlcmF0
b3I7Ci0gICAgICAgIHdoaWxlICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2RW5kICE9ICddJykK
LSAgICAgICAgICAgICsraXB2NkVuZDsKLSAgICAgICAgaWYgKGlwdjZFbmQuYXRFbmQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGF1dG8gYWRkcmVzcyA9IHBhcnNl
SVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oaXRlcmF0b3IsIGlwdjZF
bmQpKSkgewotICAgICAgICAgICAgc2VyaWFsaXplSVB2NihhZGRyZXNzLnZhbHVlKCkpOwotICAg
ICAgICAgICAgaWYgKCFpcHY2RW5kLmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICBhZHZhbmNl
KGlwdjZFbmQpOwotICAgICAgICAgICAgICAgIGlmICghaXB2NkVuZC5hdEVuZCgpICYmICppcHY2
RW5kID09ICc6JykgewotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBjdXJy
ZW50UG9zaXRpb24oaXB2NkVuZCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVBv
cnQoaXB2NkVuZCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fdXJsLm1f
aG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpcHY2RW5kKTsKLSAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGlw
djZFbmQpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICghbV91cmxJc1NwZWNpYWwpIHsKLSAgICAgICAg
Zm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBpZiAo
VU5MSUtFTFkoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkpIHsKLSAgICAgICAgICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCi0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNGb3JiaWRkZW5Ib3N0Q29k
ZVBvaW50KCppdGVyYXRvcikgJiYgKml0ZXJhdG9yICE9ICclJykpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgdXRmOFBlcmNlbnRFbmNvZGU8aXNJblNpbXBsZUVu
Y29kZVNldD4oaXRlcmF0b3IpOwotICAgICAgICB9Ci0gICAgICAgIG1fdXJsLm1faG9zdEVuZCA9
IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgp
KSB7Ci0gICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7
Ci0gICAgfQotICAgIAotICAgIGlmIChMSUtFTFkoIW1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJ
KSkgewotICAgICAgICBhdXRvIGhvc3RJdGVyYXRvciA9IGl0ZXJhdG9yOwotICAgICAgICBmb3Ig
KDsgIWl0ZXJhdG9yLmF0RW5kKCk7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGlmIChpc1Rh
Yk9yTmV3bGluZSgqaXRlcmF0b3IpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgaWYgKCppdGVyYXRvciA9PSAnOicpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBpZiAoaXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KCppdGVyYXRvcikpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gYWRkcmVzcyA9
IHBhcnNlSVB2NEhvc3QoaG9zdEl0ZXJhdG9yLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPihob3N0SXRlcmF0b3IsIGl0ZXJhdG9yKSk7Ci0gICAgICAgIGlmIChhZGRyZXNzKSB7Ci0g
ICAgICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7Ci0gICAgICAgICAgICBt
X3VybC5tX2hvc3RFbmQgPSBjdXJyZW50UG9zaXRpb24oaXRlcmF0b3IpOwotICAgICAgICAgICAg
aWYgKGl0ZXJhdG9yLmF0RW5kKCkpIHsKLSAgICAgICAgICAgICAgICBtX3VybC5tX3BvcnRMZW5n
dGggPSAwOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlUG9ydChpdGVyYXRvcik7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vycm9yOjpGYWlsdXJlKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBmb3IgKDsgaG9zdEl0ZXJhdG9yICE9IGl0ZXJh
dG9yOyArK2hvc3RJdGVyYXRvcikgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzVGFiT3JO
ZXdsaW5lKCpob3N0SXRlcmF0b3IpKSkgewotICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihob3N0SXRlcmF0b3IpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlVcHBlcigqaG9zdEl0ZXJhdG9yKSkp
Ci0gICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RJdGVyYXRvcik7Ci0gICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKHRvQVNDSUlMb3dlcigqaG9zdEl0ZXJhdG9yKSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJh
dG9yKTsKLSAgICAgICAgaWYgKCFob3N0SXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBwYXJzZVBvcnQoaG9zdEl0ZXJhdG9yKTsKLSAgICAgICAgdW5zaWduZWQgcG9ydExlbmd0
aCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcikgLSBtX3VybC5tX2hvc3RFbmQ7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKHBvcnRMZW5ndGggPD0gVVJMOjptYXhQb3J0TGVuZ3RoKTsKLSAgICAg
ICAgbV91cmwubV9wb3J0TGVuZ3RoID0gcG9ydExlbmd0aDsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotICAgIAotICAgIGNvbnN0IGF1dG8gaG9zdEJlZ2luID0gaXRlcmF0b3I7Ci0gICAg
Ci0gICAgTENoYXJCdWZmZXIgdXRmOEVuY29kZWQ7Ci0gICAgZm9yICg7ICFpdGVyYXRvci5hdEVu
ZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWShpc1RhYk9yTmV3bGluZSgq
aXRlcmF0b3IpKSkgewotICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Ci0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKml0ZXJhdG9yID09
ICc6JykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUko
Kml0ZXJhdG9yKSkpCi0gICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKLQot
ICAgICAgICBpZiAoIVVfSVNfVU5JQ09ERV9DSEFSKCppdGVyYXRvcikpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHVpbnQ4X3QgYnVmZmVyW1U4X01BWF9MRU5HVEhdOwotICAg
ICAgICBpbnQzMl90IG9mZnNldCA9IDA7Ci0gICAgICAgIFU4X0FQUEVORF9VTlNBRkUoYnVmZmVy
LCBvZmZzZXQsICppdGVyYXRvcik7Ci0gICAgICAgIHV0ZjhFbmNvZGVkLmFwcGVuZChidWZmZXIs
IG9mZnNldCk7Ci0gICAgfQotICAgIExDaGFyQnVmZmVyIHBlcmNlbnREZWNvZGVkID0gcGVyY2Vu
dERlY29kZSh1dGY4RW5jb2RlZC5kYXRhKCksIHV0ZjhFbmNvZGVkLnNpemUoKSwgaG9zdEJlZ2lu
KTsKLSAgICBTdHJpbmcgZG9tYWluID0gU3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5k
YXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7Ci0gICAgaWYgKGRvbWFpbi5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhwZXJj
ZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSkpCi0gICAgICAgIHN5bnRh
eFZpb2xhdGlvbihob3N0QmVnaW4pOwotICAgIGF1dG8gYXNjaWlEb21haW4gPSBkb21haW5Ub0FT
Q0lJKCpkb21haW4uaW1wbCgpLCBob3N0QmVnaW4pOwotICAgIGlmICghYXNjaWlEb21haW4gfHwg
aGFzRm9yYmlkZGVuSG9zdENvZGVQb2ludChhc2NpaURvbWFpbi52YWx1ZSgpKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIExDaGFyQnVmZmVyJiBhc2NpaURvbWFpblZhbHVlID0gYXNjaWlE
b21haW4udmFsdWUoKTsKLSAgICBjb25zdCBMQ2hhciogYXNjaWlEb21haW5DaGFyYWN0ZXJzID0g
YXNjaWlEb21haW5WYWx1ZS5kYXRhKCk7Ci0KLSAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRI
b3N0KGhvc3RCZWdpbiwgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+KGFzY2lpRG9tYWluVmFsdWUu
YmVnaW4oKSwgYXNjaWlEb21haW5WYWx1ZS5lbmQoKSkpOwotICAgIGlmIChhZGRyZXNzKSB7Ci0g
ICAgICAgIHNlcmlhbGl6ZUlQdjQoYWRkcmVzcy52YWx1ZSgpKTsKLSAgICAgICAgbV91cmwubV9o
b3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGl0ZXJhdG9yKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9y
LmF0RW5kKCkpIHsKLSAgICAgICAgICAgIG1fdXJsLm1fcG9ydExlbmd0aCA9IDA7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0
ZXJhdG9yKTsKLSAgICB9Ci0gICAgaWYgKGFkZHJlc3MuZXJyb3IoKSA9PSBJUHY0UGFyc2luZ0Vy
cm9yOjpGYWlsdXJlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhcHBlbmRUb0FTQ0lJ
QnVmZmVyKGFzY2lpRG9tYWluQ2hhcmFjdGVycywgYXNjaWlEb21haW5WYWx1ZS5zaXplKCkpOwot
ICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7Ci0gICAgaWYg
KCFpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gcGFyc2VQb3J0KGl0ZXJhdG9yKTsK
LSAgICBtX3VybC5tX3BvcnRMZW5ndGggPSAwOwotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGQ6
Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5w
dXQpCi17Ci0gICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJzaW9uKTsKLSAg
ICBpZiAodXRmOC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBh
dXRvIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKLSAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7
Ci19Ci0KLS8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmxlbmNvZGVk
LXBhcnNlcgotYXV0byBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyBp
bnB1dCkgLT4gVVJMRW5jb2RlZEZvcm0KLXsKLSAgICBVUkxFbmNvZGVkRm9ybSBvdXRwdXQ7Ci0g
ICAgZm9yIChTdHJpbmdWaWV3IGJ5dGVzIDogaW5wdXQuc3BsaXQoJyYnKSkgewotICAgICAgICBh
dXRvIGVxdWFsSW5kZXggPSBieXRlcy5maW5kKCc9Jyk7Ci0gICAgICAgIGlmIChlcXVhbEluZGV4
ID09IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVjb2RlKGJ5
dGVzLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4MjApKTsKLSAgICAgICAgICAgIGlmIChuYW1l
KQotICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIGVtcHR5U3Ry
aW5nKCkgfSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3Jt
VVJMRGVjb2RlKGJ5dGVzLnN1YnN0cmluZygwLCBlcXVhbEluZGV4KS50b1N0cmluZygpLnJlcGxh
Y2UoJysnLCAweDIwKSk7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlID0gZm9ybVVSTERlY29kZShi
eXRlcy5zdWJzdHJpbmcoZXF1YWxJbmRleCArIDEpLnRvU3RyaW5nKCkucmVwbGFjZSgnKycsIDB4
MjApKTsKLSAgICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVlKQotICAgICAgICAgICAgICAgIG91
dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIHZhbHVlLnZhbHVlKCkgfSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgcmV0dXJuIG91dHB1dDsKLX0KLQotc3RhdGljIHZvaWQgc2VyaWFsaXplVVJM
RW5jb2RlZEZvcm0oY29uc3QgU3RyaW5nJiBpbnB1dCwgVmVjdG9yPExDaGFyPiYgb3V0cHV0KQot
ewotICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7Ci0gICAgY29u
c3QgY2hhciogZGF0YSA9IHV0ZjguZGF0YSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dXRmOC5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgYnl0ZSA9IGRhdGFbaV07
Ci0gICAgICAgIGlmIChieXRlID09IDB4MjApCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDB4
MkIpOwotICAgICAgICBlbHNlIGlmIChieXRlID09IDB4MkEKLSAgICAgICAgICAgIHx8IGJ5dGUg
PT0gMHgyRAotICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDJFCi0gICAgICAgICAgICB8fCAoYnl0
ZSA+PSAweDMwICYmIGJ5dGUgPD0gMHgzOSkKLSAgICAgICAgICAgIHx8IChieXRlID49IDB4NDEg
JiYgYnl0ZSA8PSAweDVBKQotICAgICAgICAgICAgfHwgYnl0ZSA9PSAweDVGCi0gICAgICAgICAg
ICB8fCAoYnl0ZSA+PSAweDYxICYmIGJ5dGUgPD0gMHg3QSkpIC8vIEZJWE1FOiBQdXQgdGhlc2Ug
aW4gdGhlIGNoYXJhY3RlckNsYXNzVGFibGUgdG8gYXZvaWQgYnJhbmNoZXMuCi0gICAgICAgICAg
ICBvdXRwdXQuYXBwZW5kKGJ5dGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwZXJjZW50
RW5jb2RlQnl0ZShieXRlLCBvdXRwdXQpOwotICAgIH0KLX0KLSAgICAKLVN0cmluZyBVUkxQYXJz
ZXI6OnNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVkRm9ybSYgdHVwbGVzKQotewotICAgIGlmICh0
dXBsZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgVmVjdG9yPExDaGFy
PiBvdXRwdXQ7Ci0gICAgZm9yIChhdXRvJiB0dXBsZSA6IHR1cGxlcykgewotICAgICAgICBpZiAo
IW91dHB1dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCcmJyk7Ci0gICAg
ICAgIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3JtKHR1cGxlLmtleSwgb3V0cHV0KTsKLSAgICAgICAg
b3V0cHV0LmFwcGVuZCgnPScpOwotICAgICAgICBzZXJpYWxpemVVUkxFbmNvZGVkRm9ybSh0dXBs
ZS52YWx1ZSwgb3V0cHV0KTsKLSAgICB9Ci0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92
ZShvdXRwdXQpKTsKLX0KLQotY29uc3QgVUlETkEmIFVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERv
bWFpbk5hbWVUcmFuc2NvZGVyKCkKLXsKLSAgICBzdGF0aWMgVUlETkEqIGVuY29kZXI7Ci0gICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7Ci0gICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7Ci0gICAg
ICAgIC8vIFdhcm5pbmc6IFBsZWFzZSBjb250YWN0IGEgV2ViS2l0R1RLKyBkZXZlbG9wZXIgaWYg
Y2hhbmdpbmcgdGhlc2UgZmxhZ3MuCi0gICAgICAgIC8vIFRoZXkgc2hvdWxkIGJlIHN5bmNlZCB3
aXRoIGVwaHlfdXJpX2RlY29kZSgpIGluIGVwaHktdXJpLWhlbHBlcnMuYy4KLSAgICAgICAgZW5j
b2RlciA9IHVpZG5hX29wZW5VVFM0NihVSUROQV9DSEVDS19CSURJIHwgVUlETkFfQ0hFQ0tfQ09O
VEVYVEogfCBVSUROQV9OT05UUkFOU0lUSU9OQUxfVE9fVU5JQ09ERSB8IFVJRE5BX05PTlRSQU5T
SVRJT05BTF9UT19BU0NJSSwgJmVycm9yKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoVV9TVUND
RVNTKGVycm9yKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuY29kZXIpOwotICAgIH0pOwot
ICAgIHJldHVybiAqZW5jb2RlcjsKLX0KLQotYm9vbCBVUkxQYXJzZXI6OmFsbFZhbHVlc0VxdWFs
KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIFVSTF9QQVJTRVJfTE9HKCIlZCAl
ZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlc1xuJWQgJWQgJWQgJWQgJWQgJWQgJWQg
JWQgJWQgJWQgJWQgJWQgJXMiLAotICAgICAgICBhLm1faXNWYWxpZCwKLSAgICAgICAgYS5tX2Nh
bm5vdEJlQUJhc2VVUkwsCi0gICAgICAgIGEubV9wcm90b2NvbElzSW5IVFRQRmFtaWx5LAotICAg
ICAgICBhLm1fc2NoZW1lRW5kLAotICAgICAgICBhLm1fdXNlclN0YXJ0LAotICAgICAgICBhLm1f
dXNlckVuZCwKLSAgICAgICAgYS5tX3Bhc3N3b3JkRW5kLAotICAgICAgICBhLm1faG9zdEVuZCwK
LSAgICAgICAgYS5tX2hvc3RFbmQgKyBhLm1fcG9ydExlbmd0aCwKLSAgICAgICAgYS5tX3BhdGhB
ZnRlckxhc3RTbGFzaCwKLSAgICAgICAgYS5tX3BhdGhFbmQsCi0gICAgICAgIGEubV9xdWVyeUVu
ZCwKLSAgICAgICAgYS5tX3N0cmluZy51dGY4KCkuZGF0YSgpLAotICAgICAgICBiLm1faXNWYWxp
ZCwKLSAgICAgICAgYi5tX2Nhbm5vdEJlQUJhc2VVUkwsCi0gICAgICAgIGIubV9wcm90b2NvbElz
SW5IVFRQRmFtaWx5LAotICAgICAgICBiLm1fc2NoZW1lRW5kLAotICAgICAgICBiLm1fdXNlclN0
YXJ0LAotICAgICAgICBiLm1fdXNlckVuZCwKLSAgICAgICAgYi5tX3Bhc3N3b3JkRW5kLAotICAg
ICAgICBiLm1faG9zdEVuZCwKLSAgICAgICAgYi5tX2hvc3RFbmQgKyBiLm1fcG9ydExlbmd0aCwK
LSAgICAgICAgYi5tX3BhdGhBZnRlckxhc3RTbGFzaCwKLSAgICAgICAgYi5tX3BhdGhFbmQsCi0g
ICAgICAgIGIubV9xdWVyeUVuZCwKLSAgICAgICAgYi5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsK
LQotICAgIHJldHVybiBhLm1fc3RyaW5nID09IGIubV9zdHJpbmcKLSAgICAgICAgJiYgYS5tX2lz
VmFsaWQgPT0gYi5tX2lzVmFsaWQKLSAgICAgICAgJiYgYS5tX2Nhbm5vdEJlQUJhc2VVUkwgPT0g
Yi5tX2Nhbm5vdEJlQUJhc2VVUkwKLSAgICAgICAgJiYgYS5tX3Byb3RvY29sSXNJbkhUVFBGYW1p
bHkgPT0gYi5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkKLSAgICAgICAgJiYgYS5tX3NjaGVtZUVu
ZCA9PSBiLm1fc2NoZW1lRW5kCi0gICAgICAgICYmIGEubV91c2VyU3RhcnQgPT0gYi5tX3VzZXJT
dGFydAotICAgICAgICAmJiBhLm1fdXNlckVuZCA9PSBiLm1fdXNlckVuZAotICAgICAgICAmJiBh
Lm1fcGFzc3dvcmRFbmQgPT0gYi5tX3Bhc3N3b3JkRW5kCi0gICAgICAgICYmIGEubV9ob3N0RW5k
ID09IGIubV9ob3N0RW5kCi0gICAgICAgICYmIGEubV9wb3J0TGVuZ3RoID09IGIubV9wb3J0TGVu
Z3RoCi0gICAgICAgICYmIGEubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gYi5tX3BhdGhBZnRlckxh
c3RTbGFzaAotICAgICAgICAmJiBhLm1fcGF0aEVuZCA9PSBiLm1fcGF0aEVuZAotICAgICAgICAm
JiBhLm1fcXVlcnlFbmQgPT0gYi5tX3F1ZXJ5RW5kOwotfQotCi1ib29sIFVSTFBhcnNlcjo6aW50
ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KGNvbnN0IFVSTCYgdXJsKQotewotICAgIHJldHVybiB1cmwu
bV9zY2hlbWVFbmQgPD0gdXJsLm1fdXNlclN0YXJ0Ci0gICAgICAgICYmIHVybC5tX3VzZXJTdGFy
dCA8PSB1cmwubV91c2VyRW5kCi0gICAgICAgICYmIHVybC5tX3VzZXJFbmQgPD0gdXJsLm1fcGFz
c3dvcmRFbmQKLSAgICAgICAgJiYgdXJsLm1fcGFzc3dvcmRFbmQgPD0gdXJsLm1faG9zdEVuZAot
ICAgICAgICAmJiB1cmwubV9ob3N0RW5kICsgdXJsLm1fcG9ydExlbmd0aCA8PSB1cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2gKLSAgICAgICAgJiYgdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoIDw9IHVy
bC5tX3BhdGhFbmQKLSAgICAgICAgJiYgdXJsLm1fcGF0aEVuZCA8PSB1cmwubV9xdWVyeUVuZAot
ICAgICAgICAmJiB1cmwubV9xdWVyeUVuZCA8PSB1cmwubV9zdHJpbmcubGVuZ3RoKCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NWJlYjAyNGM5ODAzMjJhNmUwNTM5YTViZmU4
NDdhZTkxMGNmYWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgotCi1zdHJ1Y3QgVUlETkE7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY2xhc3MgQ29kZVBvaW50SXRlcmF0b3I7Ci0KLWNsYXNz
IFVSTFBhcnNlciB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgVVJMUGFyc2VyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFVSTCYgPSB7IH0sIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxs
cHRyKTsKLSAgICBVUkwgcmVzdWx0KCkgeyByZXR1cm4gbV91cmw7IH0KLQotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGFsbFZhbHVlc0VxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGludGVybmFsVmFsdWVzQ29uc2lzdGVu
dChjb25zdCBVUkwmKTsKLSAgICAKLSAgICB0eXBlZGVmIFZlY3RvcjxXVEY6OktleVZhbHVlUGFp
cjxTdHJpbmcsIFN0cmluZz4+IFVSTEVuY29kZWRGb3JtOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBVUkxFbmNvZGVkRm9ybSBwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcpOwotICAg
IHN0YXRpYyBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IFVSTEVuY29kZWRGb3JtJik7Ci0KLSAgICBz
dGF0aWMgY29uc3QgVUlETkEmIGludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpOwot
ICAgIHN0YXRpYyBib29sIGlzSW5Vc2VySW5mb0VuY29kZVNldChVQ2hhcik7Ci0KLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hl
bWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF5
YmVDYW5vbmljYWxpemVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotCi1wcml2YXRlOgot
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29s
KFN0cmluZ1ZpZXcpOwotICAgIGZyaWVuZCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0
UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcpOwotCi0gICAgVVJMIG1fdXJsOwotICAgIFZlY3Rv
cjxMQ2hhcj4gbV9hc2NpaUJ1ZmZlcjsKLSAgICBib29sIG1fdXJsSXNTcGVjaWFsIHsgZmFsc2Ug
fTsKLSAgICBib29sIG1fdXJsSXNGaWxlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faG9zdEhhc1Bl
cmNlbnRPck5vbkFTQ0lJIHsgZmFsc2UgfTsKLSAgICBTdHJpbmcgbV9pbnB1dFN0cmluZzsKLSAg
ICBjb25zdCB2b2lkKiBtX2lucHV0QmVnaW4geyBudWxscHRyIH07Ci0KLSAgICBib29sIG1fZGlk
U2VlU3ludGF4VmlvbGF0aW9uIHsgZmFsc2UgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZSA9IDIwNDg7Ci0gICAgdXNpbmcgTENoYXJCdWZmZXIg
PSBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPjsKLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwZSos
IGNvbnN0IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVVJMJiwgY29uc3QgVVJMVGV4dEVuY29kaW5n
Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBwYXJzZUF1dGhv
cml0eShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBib29sIHBhcnNlUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotCi0g
ICAgdm9pZCBmYWlsdXJlKCk7Ci0gICAgZW51bSBjbGFzcyBSZXBvcnRTeW50YXhWaW9sYXRpb24g
eyBObywgWWVzIH07Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgUmVwb3J0
U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5bnRheFZpb2xhdGlvbiA9IFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6WWVzPgotICAgIHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiYgaXRlcmF0b3IpIHsgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCByZXBvcnRTeW50YXhWaW9s
YXRpb24+KGl0ZXJhdG9yLCBpdGVyYXRvcik7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb24gPSBSZXBvcnRTeW50YXhWaW9sYXRpb246
Olllcz4KLSAgICB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50
YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gYm9vbCB0YWtlc1R3b0FkdmFuY2VzVW50aWxFbmQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgc3lu
dGF4VmlvbGF0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc1BlcmNlbnRFbmNvZGVk
RG90KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzV2luZG93c0RyaXZlTGV0dGVyKENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBib29sIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNE
b3VibGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBzaG91bGRDb3B5RmlsZVVS
TChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBjaGVja0xvY2FsaG9zdENvZGVQb2ludChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIFVDaGFyMzIpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGJvb2wgaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPik7Ci0gICAgYm9vbCBpc0xvY2FsaG9zdChTdHJpbmdWaWV3KTsKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGNvbnN1bWVTaW5nbGVEb3RQYXRoU2Vn
bWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBzaXplX3QgY3VycmVudFBvc2l0aW9uKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZT4g
dm9pZCBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdlclR5cGUpOwotICAg
IHRlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gdm9pZCB1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQg
dXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxMQ2hh
ckJ1ZmZlcj4gZG9tYWluVG9BU0NJSShTdHJpbmdJbXBsJiwgY29uc3QgQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExDaGFyQnVmZmVyIHBlcmNlbnRE
ZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKLSAgICBzdGF0
aWMgTENoYXJCdWZmZXIgcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCk7Ci0gICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5w
dXQpOwotICAgIHN0YXRpYyBib29sIGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29uc3QgTENo
YXJCdWZmZXImKTsKLSAgICB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QpOwotICAgIHZv
aWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyKTsKLSAgICB2b2lkIGFwcGVuZFRvQVNDSUlC
dWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVy
KGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNoYXJhY3RlcnMpLCBzaXplKTsgfQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgZW5jb2RlTm9uVVRGOFF1
ZXJ5KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIHNvdXJjZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nJiwg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHZvaWQgY29weUFTQ0lJU3Ry
aW5nVW50aWwoY29uc3QgU3RyaW5nJiwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgYm9vbCBjb3B5QmFz
ZVdpbmRvd3NEcml2ZUxldHRlcihjb25zdCBVUkwmKTsKLSAgICBTdHJpbmdWaWV3IHBhcnNlZERh
dGFWaWV3KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgVUNoYXIgcGFyc2VkRGF0
YVZpZXcoc2l6ZV90IHBvc2l0aW9uKTsKLQotICAgIHVzaW5nIElQdjRBZGRyZXNzID0gdWludDMy
X3Q7Ci0gICAgdm9pZCBzZXJpYWxpemVJUHY0KElQdjRBZGRyZXNzKTsKLSAgICBlbnVtIGNsYXNz
IElQdjRQYXJzaW5nRXJyb3I7Ci0gICAgZW51bSBjbGFzcyBJUHY0UGllY2VQYXJzaW5nRXJyb3I7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUZvclN5bnRheFZpb2xhdGlvbiwg
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8SVB2NEFkZHJlc3MsIElQdjRQYXJzaW5n
RXJyb3I+IHBhcnNlSVB2NEhvc3QoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZUZvclN5bnRheFZpb2xhdGlvbj4mLCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gRXhwZWN0ZWQ8dWludDMyX3Qs
IFVSTFBhcnNlcjo6SVB2NFBpZWNlUGFyc2luZ0Vycm9yPiBwYXJzZUlQdjRQaWVjZShDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xhdGlvbik7Ci0gICAg
dXNpbmcgSVB2NkFkZHJlc3MgPSBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PjsKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQdjZBZGRyZXNzPiBwYXJz
ZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUlQ
djRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPElQdjRBZGRy
ZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPik7Ci0gICAgdm9pZCBzZXJpYWxpemVJUHY2UGllY2UodWludDE2X3QgcGllY2UpOwot
ICAgIHZvaWQgc2VyaWFsaXplSVB2NihJUHY2QWRkcmVzcyk7Ci0KLSAgICBlbnVtIGNsYXNzIFVS
TFBhcnQ7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb3B5VVJM
UGFydHNVbnRpbChjb25zdCBVUkwmIGJhc2UsIFVSTFBhcnQsIGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiYpOwotICAgIHN0YXRp
YyBzaXplX3QgdXJsTGVuZ3RoVW50aWxQYXJ0KGNvbnN0IFVSTCYsIFVSTFBhcnQpOwotICAgIHZv
aWQgcG9wUGF0aCgpOwotICAgIGJvb2wgc2hvdWxkUG9wUGF0aCh1bnNpZ25lZCk7Ci19OwotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IDQxODFlYzEzYmZmOGY0ZTJhYTgy
OTVlMWJmYjdlZmU1OWVkMDgxZTMuLmMzNDQ4NDg2ZWU3YzJhZWFjYWFlYmViZjVhMGViNzE4M2Rj
NmVmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNiw3ICszNiw2IEBA
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5h
bWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhCiBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZv
clVzZXJBZ2VudFN0cmluZygpOwogU3RyaW5nIHVzZXJBZ2VudEJ1bmRsZVZlcnNpb24oKTsKICNl
bHNlCi1jbGFzcyBVUkw7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSA9IGVtcHR5U3RyaW5nKCksIGNvbnN0IFN0
cmluZyYgYXBwbGljYXRpb25WZXJzaW9uID0gZW1wdHlTdHJpbmcoKSk7CiBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoY29uc3QgVVJMJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcAppbmRleCAyMzJlNWNlNTdkYjA1ZGIz
OGI0OWRkOWMwMjFhMWJjOTljMDM4NWNiLi40OWI1ODkyMGE3YWViNzczMmQ2NTczMjc1NTkzNDc3
YTE4NmIwYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRR
dWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5j
cHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJVc2VyQWdlbnRRdWlya3MuaCIKIAogI2lu
Y2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Vz
ZXJBZ2VudFF1aXJrcy5oCmluZGV4IGJmMTBjZTIzMmQ5MWQ0MzFiY2I2ZDRhNzFhNTFkZDRkZGU4
ZmI4OGEuLmRjNzdkNGU4NTBlZjkwOWQ0YjAwNTZkN2M5YTdlMWFkNDVmZGQ4ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5oCkBAIC0zMCw4ICszMCw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwotCiBjbGFzcyBVc2VyQWdlbnRRdWly
a3MgewogcHVibGljOgogICAgIGVudW0gVXNlckFnZW50UXVpcmsgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3M2I0M2JjN2EwN2I4MGFlNGJhYTM1ZmRiNzMzNWFjM2JhNzY0NDE3Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0NGVVJMRXh0cmFzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ0ZVUkxFeHRyYXMuaCIKLQot
I2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZl
cihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQ0ZVUkxSZWYgYmFzZVVSTCkKLXsKLSAg
ICAvLyBOT1RFOiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQg
d2hlbiBjb21wdXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAg
IC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBhdGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlz
IG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVURi04IHNlcXVlbmNlcywgd2hpY2gKLSAgICAvLyBj
b3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50
IGVuY29kaW5nLCBsaWtlIFNoaWZ0LUpJUywgc28gd2UgZmFsbCBiYWNrCi0gICAgLy8gb250byB1
c2luZyBJU08gTGF0aW4tMSBpbiB0aG9zZSBjYXNlcy4KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcygwLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSksIHNpemUsIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCwgYmFzZVVSTCwgdHJ1ZSkpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQg
PSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGlu
MSwgYmFzZVVSTCwgdHJ1ZSkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgZ2V0VVJM
Qnl0ZXMoQ0ZVUkxSZWYgdXJsLCBVUkxDaGFyQnVmZmVyJiByZXN1bHQpCi17Ci0gICAgQ0ZJbmRl
eCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKLSAgICByZXN1bHQucmVz
aXplKGJ5dGVzTGVuZ3RoKTsKLSAgICBDRkluZGV4IGZpbmFsTGVuZ3RoID0gQ0ZVUkxHZXRCeXRl
cyh1cmwsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihyZXN1bHQuZGF0YSgpKSwgYnl0ZXNMZW5n
dGgpOwotICAgIEFTU0VSVF9VTlVTRUQoZmluYWxMZW5ndGgsIGZpbmFsTGVuZ3RoID09IGJ5dGVz
TGVuZ3RoKTsKLX0KLQotdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiB1cmwsIENTdHJpbmcmIHJl
c3VsdCkKLXsKLSAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIDAs
IDApOwotICAgIGNoYXIqIGJ5dGVzOwotICAgIHJlc3VsdCA9IENTdHJpbmc6Om5ld1VuaW5pdGlh
bGl6ZWQoYnl0ZXNMZW5ndGgsIGJ5dGVzKTsKLSAgICBDRkluZGV4IGZpbmFsTGVuZ3RoID0gQ0ZV
UkxHZXRCeXRlcyh1cmwsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihieXRlcyksIGJ5dGVzTGVu
Z3RoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExlbmd0aCA9PSBieXRl
c0xlbmd0aCk7Ci19Ci0KLWJvb2wgaXNDRlVSTFNhbWVPcmlnaW4oQ0ZVUkxSZWYgY2ZVUkwsIGNv
bnN0IFVSTCYgdXJsKQotewotICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgp
KTsKLQotICAgIGlmICh1cmwuaGFzVXNlcm5hbWUoKSB8fCB1cmwuaGFzUGFzc3dvcmQoKSkKLSAg
ICAgICAgcmV0dXJuIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCh1cmwsIFVSTCB7IGNmVVJM
IH0pOwotCi0gICAgVVJMQ2hhckJ1ZmZlciBieXRlczsKLSAgICBnZXRVUkxCeXRlcyhjZlVSTCwg
Ynl0ZXMpOwotICAgIFN0cmluZ1ZpZXcgY2ZVUkxTdHJpbmcgeyByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oYnl0ZXMuZGF0YSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ5dGVzLnNp
emUoKSkgfTsKLQotICAgIGlmICghdXJsLmhhc1BhdGgoKSkKLSAgICAgICAgcmV0dXJuIFN0cmlu
Z1ZpZXcgeyB1cmwuc3RyaW5nKCkgfSA9PSBjZlVSTFN0cmluZzsKLQotICAgIGF1dG8gdXJsV2l0
aG91dFBhdGggPSBTdHJpbmdWaWV3IHsgdXJsLnN0cmluZygpIH0uc3Vic3RyaW5nKDAsIHVybC5w
YXRoU3RhcnQoKSArIDEpOwotICAgIHJldHVybiBjZlVSTFN0cmluZy5zdGFydHNXaXRoKHVybFdp
dGhvdXRQYXRoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvQ0ZVUkxFeHRyYXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFz
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZDU3MDY2MGRhNmFhOThkMTIyODY0
MDc4ZmVkN2RkNmU3NzllZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENGVVJMRXh0cmFz
X2gKLSNkZWZpbmUgQ0ZVUkxFeHRyYXNfaAotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFVSTDsKLXR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4g
VVJMQ2hhckJ1ZmZlcjsKLQotV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVh
dGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgQ0ZVUkxSZWYgYmFzZVVSTCA9
IDApOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgVVJMQ2hhckJ1
ZmZlciYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgQ1N0cmlu
ZyYpOwotCi1ib29sIGlzQ0ZVUkxTYW1lT3JpZ2luKENGVVJMUmVmLCBjb25zdCBVUkwmKTsKLQot
fQotCi0jZW5kaWYgLy8gQ0ZVUkxFeHRyYXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvVVJMQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0Yu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzM2NmEyMGQzYzVkYTQ3MDg4ZmE5
OGZiNTRmOGU5YzZlZjg4YzllLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVS
TC5oIgotCi0jaW5jbHVkZSAiQ0ZVUkxFeHRyYXMuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIK
LSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlVSTC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSAiUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VUkw6
OlVSTChDRlVSTFJlZiB1cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0
ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBP
SyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdl
dFVSTEJ5dGVzKHVybCwgdXJsQnl0ZXMpOwotICAgIFVSTFBhcnNlciBwYXJzZXIodXJsQnl0ZXMu
ZGF0YSgpKTsKLSAgICAqdGhpcyA9IHBhcnNlci5yZXN1bHQoKTsKLX0KLQotI2lmICFVU0UoRk9V
TkRBVElPTikKLVJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17
Ci0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/
Ci0gICAgLy8gQ3VycmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBj
aGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAotICAgIC8vIHdoaWNoIGlzIGNs
ZWFybHkgd3JvbmcuCi0gICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0gICAgY29weVRvQnVmZmVy
KGJ1ZmZlcik7Ci0gICAgYXV0byBjZlVSTCA9IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLQotICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkgJiYgIWlzQ0ZVUkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGNmVVJMOwotfQotI2VuZGlmCi0KLVN0cmluZyBV
Ukw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKLXsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNm
VVJMID0gY3JlYXRlQ0ZVUkwoKTsKLSAgICBpZiAoIWNmVVJMKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0KLSNpZiBQTEFURk9STShXSU4pCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxl
ID0ga0NGVVJMV2luZG93c1BhdGhTdHlsZTsKLSNlbHNlCi0gICAgQ0ZVUkxQYXRoU3R5bGUgcGF0
aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7Ci0jZW5kaWYKLSAgICByZXR1cm4gYWRvcHRD
RihDRlVSTENvcHlGaWxlU3lzdGVtUGF0aChjZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7
Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IDIxMDZjMmJhOWI4NmFjMDIw
YjQwNzAxMGU5MTMyMzliZDQyNTkwZWYuLmE0ZTc2MmU3ODYzOWRkNmM2M2NjMjZlODY5NzA5YTU5
N2NhNDEwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaApAQCAtMjMsOCArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXJfaAotI2RlZmluZSBOZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGVudEZpbHRl
ci5oIgogI2luY2x1ZGUgPG9iamMvTlNPYmpDUnVudGltZS5oPgpAQCAtMzksOCArMzgsNiBAQCBP
QkpDX0NMQVNTIE5TRGF0YTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7Ci0K
IGNsYXNzIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZpbmFsIDogcHVibGljIFBsYXRm
b3JtQ29udGVudEZpbHRlciB7CiAgICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlcj4oKTsKIApAQCAtNjksNSArNjYsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCBlOWJmYzA3OWUwMjE3N2FjYjcw
ZmE4OTJmNGZhMmQ5MTU2NDI4ZmZjLi40NzA1ZWQxNWE1YzU4YzQxMWM0OWYzNGZhZjczZWViMzA3
YjJjOTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMzQsMTAgKzM0LDEwIEBA
CiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCAiVVJMLmgiCiAj
aW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTkVGaWx0ZXJT
b3VyY2VTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogI2ltcG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIFNPRlRfTElO
S19GUkFNRVdPUktfT1BUSU9OQUwoTmV0d29ya0V4dGVuc2lvbik7CkBAIC0xMTgsNyArMTE4LDcg
QEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY28KIAogICAgIFVSTCBtb2RpZmllZFJlcXVlc3RVUkwg
eyBVUkwoKSwgbW9kaWZpZWRSZXF1ZXN0VVJMU3RyaW5nLmdldCgpIH07CiAgICAgaWYgKCFtb2Rp
ZmllZFJlcXVlc3RVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5n
LCAiTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZp
ZWQgVVJMIHN0cmluZyAlQCB0byBhIFdlYkNvcmU6OlVSTC5cbiIsIG1vZGlmaWVkUmVxdWVzdFVS
TFN0cmluZy5nZXQoKSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZmFpbGVkIHRvIGNvbnZlcnQgbW9kaWZpZWQgVVJMIHN0cmlu
ZyAlQCB0byBhICBVUkwuXG4iLCBtb2RpZmllZFJlcXVlc3RVUkxTdHJpbmcuZ2V0KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NTTEtleUdlbmVyYXRvckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9TU0xLZXlHZW5lcmF0b3JHTGliLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWY0OGQ3MTYxZTdmMjk2
NWMxNTU4NWZmMDA4ZmMyOTMwOTJjMzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9TU0xLZXlHZW5lcmF0b3JHTGliLmNwcApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVs
QGdtYWlsLmNvbQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIGdldFN1cHBvcnRlZEtleVNp
emVzKFZlY3RvcjxTdHJpbmc+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitTdHJp
bmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBVUkwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHsg
fTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggMTYyMWE4ODVlODcwNGNhODQ4MzIwZjYy
NTFjMDZmOTIxYjE4OWQ4OC4uYTNiYTRlNDZkYzI4Mzk1ZDg1MmNlOGZiNjhjNzBiNTc5OWUyNzcy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3Bw
CkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckFn
ZW50LmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVc2VyQWdlbnRRdWlya3MuaCIK
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgT1MoVU5JWCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggZDJiMzliM2RiNGE5YzViNDdjYzljM2ZkNjk1Y2ZlZjc1M2YzNTkyYS4uZjlhZmU4ZTYwNjAw
ZWUyNzZiYzAwMzA0NTgzZTI0YWJmNDAyY2YzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTY1LDYgKzY1LDEyIEBAIHR5
cGVkZWYgdW5zaWduZWQgY2hhciBVSW50ODsKICNlbmRpZgogI2VuZGlmCiAKKy8vIFgxMSBoZWFk
ZXIgZGVmaW5lcyAiTm9uZSIgYXMgY29uc3RhbnQgaW4gbWFjcm8gYW5kIGJyZWFrZXMgdGhlIFBh
aW50SW52YWxpZGF0aW9uUmVhc29ucyBlbnVtJ3MgIk5vbmUiLgorLy8gQXMgYSB3b3JrYXJvdW5k
LCB3ZSBleHBsaWNpdGx5IHVuZGVmIFgxMSdzIE5vbmUgaGVyZS4KKyNpZiBkZWZpbmVkKE5vbmUp
CisjdW5kZWYgTm9uZQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShX
SU5HREkpCkBAIC04MSw3ICs4Nyw2IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFJvdW5kZWRS
ZWN0OwotY2xhc3MgVVJMOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBQYXRoOwog
Y2xhc3MgVGV4dFJ1bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cAppbmRleCA0ZjA3N2Q1Yjk5MmY0MWY4MGRkNDFjMGE5NzJlNWE4N2FmZmI5MTQ3Li5lNDRhNjFl
MjI0Y2ExMTk0ZDA5MThkNDQ0M2JlYTdjMWU3ZTRhMGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lm
IFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDQ2
NGRkNjdiNGFlMGFlYTNiYjcxNjMyMmNlMTAxZmIwODNmOTQzY2MuLjY1Y2IwOGVhYjAwNzI3MmU2
MjY1MmFlMjAwMWVmMTFmMWEyYmFmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaApAQCAtNjgsNyArNjgsNiBAQCBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwotY2xhc3MgVVJMOwogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5v
dGlmaWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBh
bmQgd2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJhbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCmluZGV4IDgyNjljYzRlZGMzN2Nl
NWY0ZGMxNjVmYmQ0ZDYxYzM2OThhNDI3ZmUuLmYyODMyM2MyNTViMWQwYTAxNDM1MWM5MzQyNzNk
YTAxYzVhZjg1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZU9ic2VydmVyLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpZm5kZWYgSW1hZ2VPYnNlcnZlcl9oCi0jZGVmaW5lIEltYWdlT2JzZXJ2ZXJfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJJbWFnZVR5cGVzLmgiCiAKQEAgLTMyLDcgKzMxLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZTsKIGNsYXNzIEludFJlY3Q7Ci1jbGFzcyBV
Ukw7CiAKIC8vIEludGVyZmFjZSBmb3Igbm90aWZpY2F0aW9uIGFib3V0IGNoYW5nZXMgdG8gYW4g
aW1hZ2UsIGluY2x1ZGluZyBkZWNvZGluZywKIC8vIGRyYXdpbmcsIGFuZCBhbmltYXRpbmcuCkBA
IC01NCw1ICs1MiwzIEBAIHB1YmxpYzoKIH07CiAKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggMzFmYzgxODI5
OGJlMjU4YTg3NjRjNmFjZjRjZmNjZjZjMWUxZjUyZi4uNjhkMTJhMTM4ODhjNDIxODg0ZWVkMGIx
MThjOTk4ZWM1ODY1ZDk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcApAQCAtMzAsMTEgKzMwLDExIEBACiAjaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAj
aW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNp
ZiBVU0UoRElSRUNUMkQpCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCAwOTAxMDEyMjk5
ZWJjNDFjMmNhODRlMTllOTUxZTAyNDc4ODY5NThlLi45ODBkNjBlZTUwZDUwYmMyNmEwMDMwNWUw
M2U1MWI0ZDQ0Y2M5ZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgKQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29k
ZXI7Ci1jbGFzcyBVUkw7CiAKIGNsYXNzIEltYWdlU291cmNlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPEltYWdlU291cmNlPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXgg
YmU5ZDE1MGM1OTc5N2Y2M2QzN2JiMTBjNDI2ODQ0MTc5ZjllMDQ0Yy4uYzI4MTZiZGQyNzdhMjI1
MjgwNWJkYjE1ODJjY2JiZDY3MTY0MDNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKICNp
bmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggNDY4
OWE1NTEzN2I3MjM0YjI2MTk2YmI0ZmEwNWQ0NmIwODAzZjg5My4uYjk2ZDg1ZjAyOThjNzk4Y2Rl
NTQzN2FiMWRhMTJlZWUzYmM3MGFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxDb3JlTWVk
aWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGF0YVZpZXcuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpAQCAtNDksNiArNDgsNyBAQAog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGY1YTllN2ZhYWJmNmFmMjU1ODlmMmJkYWJjNzJmNjZh
Y2QwNWFiYmEuLmI4Y2I4NTA2Yjk5ODdmYjA1MmFjZTk4MTRkZTNiZmE2YzEwZGQ2OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcApAQCAtNDUsOSArNDUsOSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXll
ckNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllcldpbi5oIgogI2luY2x1ZGUgIlRp
bWVSYW5nZXMuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJDb3JlQVZDRlJlc291
cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5k
YXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpbmNsdWRlIDxBVkZvdW5kYXRpb25D
Ri9BVkNGUGxheWVySXRlbS5oPgogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVU
X1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAxNzg1YjVhODU5Y2I2OTk0N2Y4
ZjMyZTlmYTVmYmRjZTM1NDQ4NGI3Li4yYTA1NjBiNDM4NDNiZmU1NGRiZWU3MjNhMTE1NGI4Y2M4
OWJlZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU5LDcgKzU5LDYgQEAKICNpbXBv
cnQgIlRleHRFbmNvZGluZy5oIgogI2ltcG9ydCAiVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCIK
ICNpbXBvcnQgIlRleHR1cmVDYWNoZUNWLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlZp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMuaCIKICNpbXBvcnQgIlZpZGVvVGV4dHVyZUNv
cGllckNWLmgiCiAjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCIKQEAgLTgxLDYg
KzgwLDcgQEAKICNpbXBvcnQgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShBVkZfQ0FQ
VElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggNDc5MjllNmQzMDUxZDNmNzlhOGEyMTlkOGU0
N2MwOGUzMWIwNDhjZS4uOGFkZjgwMTRkZjU5NjIxZmEwNDlhODQ3NzJhZDRiODQyNWY2Nzg4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBACiAjaW5jbHVkZSAiU2hhZG93
Qmx1ci5oIgogI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKICNpbmNsdWRlICJU
aW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBo
aWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KIAogI2RlZmluZSBVU0VfRFJBV19QQVRIX0RJUkVDVCAoUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE0MDApKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBiNDFkYTg3ZWJhNmZlYTk5NjIyOTU5MmRkMjA4ZTMzN2UyNGJkNTZhLi45
NDc2OGRjMWE5MmEyZjY0YmYyY2UyMTI2ODgxNGFhMjlhMDlmNmNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzcsNyArMzcsNiBAQAog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
ICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdz
dC9nc3QuaD4KQEAgLTQ3LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9S
dW5Mb29wU291cmNlUHJpb3JpdHkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCBiYjkzYWQ3Mjg4ZjRmOTNmYmY0
NTg5NDg3Nzg5NzkxZjYyY2E0YzJlLi5iNjNlNWRlZWU3MmM5NWM0OWQ4NTZkYzU0NzBiYWFiM2Y2
MTQ5ZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiUGxheWJhY2tQ
aXBlbGluZS5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaCIKICNp
bmNsdWRlICJUaW1lUmFuZ2VzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIuaCIKIAogI2luY2x1ZGUgPGZubWF0Y2guaD4KQEAgLTUyLDYg
KzUxLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggZjdiZDQ3NzNiZmQ1YzU2N2U4
MDFmYjA3MTc4ZWI4ZmQ4NjFiN2Q0MC4uOTY5YTQyMjQ0MmU1ODNkM2VkMWFmN2NmZTQzZDI5ZTQy
YWE5ZWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdT
dHJlYW1lci5jcHAKQEAgLTYzNSw3ICs2MzUsNyBAQCBnYm9vbGVhbiB3ZWJLaXRNZWRpYVNyY1Nl
dFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpLCBHRXJyb3IqKgog
ICAgICAgICByZXR1cm4gVFJVRTsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsKFdlYkNv
cmU6OlVSTCgpLCB1cmkpOworICAgIFVSTCB1cmwoVVJMKCksIHVyaSk7CiAKICAgICBwcml2LT5s
b2NhdGlvbiA9IEdVbmlxdWVQdHI8Z2NoYXI+KGdfc3RyZHVwKHVybC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKSk7CiAgICAgR1NUX09CSkVDVF9VTkxPQ0soc291cmNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKaW5kZXggZDAzZjVm
N2ZjZWEzYzhmMTczNzcxNmE0MzVmOWU2NjYwMTJhNWYxOC4uOWVjNDA4OTRmMWUyOGEwNWEyMTRj
YjMyMzUxNGY3YjEzOTU1ZDI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJJ
U09WVFRDdWUuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EYXRhVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFs
dWVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiB1c2luZyBKU0M6OkRhdGFWaWV3OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCBiOGY2NWI0NzYzYjNmNDhkZjE2ODEz
MjhkYjlhOTNiMDg1NTM5ZDc5Li5lYWYzZDI1Y2ZiZmYyZmNmYmMwMWVkZGYxNTU1NjdlMjNjZjg3
YTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTMzLDEwICszMywxMCBA
QAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8ZDJkMS5o
PgogI2luY2x1ZGUgPGQyZDFlZmZlY3RzLmg+CiAjaW5jbHVkZSA8ZHdyaXRlLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0NzU2KQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCmluZGV4IDMzZjRmZTNh
NDJmMDVmMmQ2YjkzZGIwZmFkYTg3ODQzZTliNzAyNjguLmY3ZDE4NGY2N2U4YWMzNTY1NTMzNTE1
M2UxY2U1NThhZTE4ZTk3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EcmFnSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFn
SW1hZ2VHdGsuY3BwCkBAIC0yMyw5ICsyMyw5IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlICJUZXh0SW5kaWNhdG9yLmgiCi0jaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxnZGsvZ2RrLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBhNGFiNjEwYTczZmYxYWM5MTQ5
MGRkYzIwMDhjNDg4ZDQyYzkwMGYwLi43MWEwMGEzMGMwZmFlZGQ5YjQwZWM0ZmZhZGYxNzg2Mzhm
MjViODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uRGF0YS5o
IgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1QYXN0ZWJvYXJkR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRHdGsuY3BwCmluZGV4
IGYzMDhjMmJiN2U1MzY5MWRhMzRjNmViZDBiMzRlZDExYmViMmZiNjQuLjgxNDNmYWZjMzdjMWJj
NDhhNGMwZGU4ZGYxMDk2ZDcyMzhlNjUwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRHdGsuY3BwCkBAIC0yMyw4ICsyMyw4IEBA
CiAjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlci5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkRhdGEu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4IGRh
NTFkYTA5YWQxMjc0OGNmNzlhNTBmNmMzMzQ5OWU1MGFhMzVjODcuLjFiODU4ZWY5ZGVlNTdjMjA2
YmEzZTBjNzNhYWQ4YTg2Njk2YjgyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1NlbGVjdGlvbkRhdGEuaApAQCAtMTksOSArMTksOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGI0OGI3MzQ5
ZmFlYzVjYWE0NTM0YmJjOTQ0Mjg5MzhkNWQ2MzhhYmYuLjkwZmIzZjYwMTVlODljYTZlNTUwM2Vj
NWRlMDMyMWJlMzMyMjk1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRl
Z2llcy5oIgogI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2ltcG9ydCAiU2hh
cmVkQnVmZmVyLmgiCi0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0IDxNb2JpbGVD
b3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIEBpbnRlcmZhY2UgTlNBdHRyaWJ1dGVk
U3RyaW5nIChOU0F0dHJpYnV0ZWRTdHJpbmdLaXRBZGRpdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCA5Nzk0
ZmQzM2JkNzFkOGU2M2M4MTdiM2Q1ZTUxYmEzYWQ5N2JiOTk1Li5iMDQ5MTQ3NjM5M2YwM2IwODAw
ZDQ3MDk5Y2ZmYzM3MzFiM2RiY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTMyLDkgKzMyLDcgQEAKICNpbXBv
cnQgIkltYWdlLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZm
ZXIuaCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCi0jaW1wb3J0
ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQuaCIKICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4K
ICNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KQEAgLTQ0LDYgKzQyLDggQEAKICNpbXBvcnQgPHBh
bC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbXBv
cnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3Rm
L2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
ICNkZWZpbmUgUEFTVEVCT0FSRF9TVVBQT1JUU19JVEVNX1BST1ZJREVSUyAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgIShQTEFURk9STShXQVRDSE9TKSB8fCBQTEFURk9STShBUFBMRVRWKSkpCkBA
IC00MjAsNyArNDIwLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIHBhc3RlYm9hcmRVUkwg
PSBwYXN0ZWJvYXJkSW1hZ2UudXJsOwogICAgIGlmIChOU1VSTCAqbnNVUkwgPSBwYXN0ZWJvYXJk
VVJMLnVybCkgewogI2lmIE5TVVJMX1NVUFBPUlRTX1RJVExFCi0gICAgICAgIG5zVVJMLl90aXRs
ZSA9IHBhc3RlYm9hcmRVUkwudGl0bGUuaXNFbXB0eSgpID8gdXNlclZpc2libGVTdHJpbmcocGFz
dGVib2FyZFVSTC51cmwpIDogKE5TU3RyaW5nICopcGFzdGVib2FyZFVSTC50aXRsZTsKKyAgICAg
ICAgbnNVUkwuX3RpdGxlID0gcGFzdGVib2FyZFVSTC50aXRsZS5pc0VtcHR5KCkgPyBXVEY6OnVz
ZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRVUkwudXJsKSA6IChOU1N0cmluZyAqKXBhc3RlYm9h
cmRVUkwudGl0bGU7CiAjZW5kaWYKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkUmVwcmVzZW50aW5nT2JqZWN0Om5zVVJMXTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUXVpY2tMb29rLmgKaW5kZXggNDlkODExZDUxNDBjOGZkMGFmMDE2MjlkOGQwYzFjOWU5
ZTk5NGYxNy4uMGE2ZWZhZWYzZTg2MWVmNTlmZDQyODljZWY5MTFjNzc4ZGE3MGNhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2suaApAQCAtMzUsOCArMzUsNiBAQCBPQkpD
X0NMQVNTIE5TVVJMUmVxdWVzdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7
Ci0KIFdFQkNPUkVfRVhQT1JUIE5TU2V0ICpRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNT
ZXQoKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJM
KE5TVVJMICopOwogV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0
ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqLCBOU1N0cmluZyAqbWltZVR5cGUs
IE5TRGF0YSAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
RGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpp
bmRleCAxNWFjMDYxNjIzMWUyZTFiOWE5N2U3NTBjN2Y3OWQzMzFiOGE2ZTUwLi42NGU0ODk0Mzkz
MTMyZmQzMzE2NjY0YTE4Y2I5N2M1ZDE3OGFhMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbXBv
cnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFz
Lmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZp
Y2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpAQCAtMjEwLDcgKzIxMSw3IEBAIFN0cmluZyBEcmFn
RGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0
aGlzIGlzIDEwMCUgY29ycmVjdCBzaW5jZSB3ZSBrbm93IC1bTlNVUkwgVVJMV2l0aFN0cmluZzpd
IGRvZXMgbm90IGhhbmRsZQogICAgIC8vIGFsbCB0aGUgc2FtZSBjYXNlcyB3ZSBoYW5kbGUgd2Vs
bCBpbiB0aGUgVVJMIGNvZGUgZm9yIGNyZWF0aW5nIGFuIE5TVVJMLgogICAgIGlmICh0ZXh0Lmlz
VVJMKQotICAgICAgICByZXR1cm4gdXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJp
bmc6c3RyaW5nXSk7CisgICAgICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VS
TCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOwogCiAgICAgLy8gRklYTUU6IFdURiBzaG91bGQgb2Zm
ZXIgYSBub24tTWFjLXNwZWNpZmljIHdheSB0byBjb252ZXJ0IHN0cmluZyB0byBwcmVjb21wb3Nl
ZCBmb3JtIHNvIHdlIGNhbiBkbyBpdCBmb3IgYWxsIHBsYXRmb3Jtcy4KICAgICByZXR1cm4gWyhO
U1N0cmluZyAqKXN0cmluZyBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCmluZGV4IDljMzBm
NzljODRkM2M3ZDg2NWQ0MTE1NTM5MTM2N2M4ZjQ0NGE2ZGEuLmJjYmJhYzUwZjM0ZWI3MWZjNWRj
Zjg3MzllNGVlODE5NDZiOTdiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Ry
YWdJbWFnZU1hYy5tbQpAQCAtNDEsMTIgKzQxLDEyIEBACiAjaW1wb3J0ICJQYWdlLmgiCiAjaW1w
b3J0ICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbXBvcnQgIlRleHRJbmRpY2F0b3IuaCIKLSNpbXBv
cnQgIlVSTC5oIgogI2ltcG9ydCAiV2ViS2l0TlNJbWFnZUV4dHJhcy5oIgogI2ltcG9ydCA8cGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQ29yZVRl
eHRTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvVVJMRm9ybWF0dGluZ1NQSS5oPgogI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNpZiAhSEFW
RShVUkxfRk9STUFUVElORykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEzMDAKIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChMaW5rUHJlc2VudGF0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1N
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQppbmRl
eCAwNzFkMGM5MTE3Nzk0ZTYwMzhkOThhYWQ1NmZlOTZmZjhmNDgxNTMzLi44ZWQ3NTFhN2VjMGU1
ZDBiYWY3NzRmOTg2MTBhY2IwNDVjZDJiMDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRmlsZVN5c3RlbU1hYy5tbQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgUExBVEZPUk0o
TUFDKQogCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgPHBhbC9zcGkv
bWFjL01ldGFkYXRhU1BJLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
Miw3ICs1Miw3IEBAIHZvaWQgRmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG1ldGFkYXRhVVJMU3RyCiB7CiAgICAgU3RyaW5nIHVybFN0
cmluZzsKICAgICBpZiAoTlNVUkwgKnVybCA9IFVSTFdpdGhVc2VyVHlwZWRTdHJpbmcobWV0YWRh
dGFVUkxTdHJpbmcsIG5pbCkpCi0gICAgICAgIHVybFN0cmluZyA9IHVzZXJWaXNpYmxlU3RyaW5n
KFVSTEJ5UmVtb3ZpbmdVc2VySW5mbyh1cmwpKTsKKyAgICAgICAgdXJsU3RyaW5nID0gV1RGOjp1
c2VyVmlzaWJsZVN0cmluZyhXVEY6OlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyh1cmwpKTsKICAgICBl
bHNlCiAgICAgICAgIHVybFN0cmluZyA9IG1ldGFkYXRhVVJMU3RyaW5nOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDQzZDdkZmRlNmFlZjE4
OTkxZGM4N2NkMGI5ZmQ4YWVhM2M0NWQ0OTEuLjUxNTIwZGNiYmVhNTkyMTg1YzMyNjcwMmNiYTY5
ZmU4OGI0ZDRkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
TWFjLm1tCkBAIC0zNyw3ICszNyw2IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVBhc3RlYm9hcmQuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgi
Ci0jaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2Vi
TlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgpAQCAtNDUsNiArNDQsNyBAQAogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxl
Z2UuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KICNpbXBvcnQgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggNmEyOGZl
NjJhY2VjZDU3MjY1OGQwMzNkMGNkOWMxYWMzMWVlMGUzZC4uMGZlNTA1ZGU1NWM2NjE2NDhmMDU5
ZGE5YjdmYWUyYTA3N2ZjNjIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTYzLDEwICs2MywxMCBAQCBSZXRhaW5QdHI8aWQgPE5T
UGFzdGVib2FyZFdyaXRpbmc+PiBjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKGNvbnN0IFBhc3RlYm9h
cmRXcml0ZQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGF1dG8mIHVybCA9IGRhdGEudXJs
KCkpIHsKLSAgICAgICAgTlNVUkwgKmNvY29hVVJMID0gdXJsLT51cmw7Ci0gICAgICAgIE5TU3Ry
aW5nICp1c2VyVmlzaWJsZVN0cmluZyA9IHVybC0+dXNlclZpc2libGVGb3JtOwotICAgICAgICBO
U1N0cmluZyAqdGl0bGUgPSAoTlNTdHJpbmcgKil1cmwtPnRpdGxlOworICAgIGlmIChhdXRvJiB1
cmxEYXRhID0gZGF0YS51cmxEYXRhKCkpIHsKKyAgICAgICAgTlNVUkwgKmNvY29hVVJMID0gdXJs
RGF0YS0+dXJsOworICAgICAgICBOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcgPSB1cmxEYXRh
LT51c2VyVmlzaWJsZUZvcm07CisgICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IChOU1N0cmluZyAq
KXVybERhdGEtPnRpdGxlOwogICAgICAgICBpZiAoIXRpdGxlLmxlbmd0aCkgewogICAgICAgICAg
ICAgdGl0bGUgPSBjb2NvYVVSTC5wYXRoLmxhc3RQYXRoQ29tcG9uZW50OwogICAgICAgICAgICAg
aWYgKCF0aXRsZS5sZW5ndGgpCkBAIC03NCw3ICs3NCw3IEBAIFJldGFpblB0cjxpZCA8TlNQYXN0
ZWJvYXJkV3JpdGluZz4+IGNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIoY29uc3QgUGFzdGVib2FyZFdy
aXRlCiAgICAgICAgIH0KIAogICAgICAgICAvLyBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUu
Ci0gICAgICAgIGF1dG8gcGF0aHMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzOkBbIEBbIGNvY29hVVJMLmFic29sdXRlU3RyaW5nIF0gXSwgQFsgdXJsLT50aXRsZS5z
dHJpcFdoaXRlU3BhY2UoKSBdLCBuaWxdKTsKKyAgICAgICAgYXV0byBwYXRocyA9IGFkb3B0TlMo
W1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6QFsgQFsgY29jb2FVUkwuYWJzb2x1dGVT
dHJpbmcgXSBdLCBAWyB1cmxEYXRhLT50aXRsZS5zdHJpcFdoaXRlU3BhY2UoKSBdLCBuaWxdKTsK
ICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFByb3BlcnR5TGlzdDpwYXRocy5nZXQoKSBmb3JU
eXBlOnRvVVRJKEAiV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlIikuZ2V0KCldOwogCiAgICAg
ICAgIC8vIE5TVVJMUGJvYXJkVHlwZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGIxZGZmYjZjYjdlNjQyNTc0MWJk
MGM2YzBlNTNiNGVmZGNmZGIxNzEuLjBjYjFkZDhiOTMwYTA2NWI3YzA4MDE1Y2EyZTBjZTVkYmQ1
YjJiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbQpAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0ICJDb2xvck1hYy5o
IgogI2ltcG9ydCAiTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCIKICNpbXBvcnQgIlBhc3RlYm9h
cmQuaCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0
IDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbXBvcnQgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UHVibGljU3VmZml4TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1
ZmZpeE1hYy5tbQppbmRleCBjZDFjYzczOGQ2YTI5MTBhODQzZWQ3NDZlZGE5MWE5MzdiNTg2ZTlm
Li42NjhkY2UwOWZhY2U1NTg4NzNiYmViODVkZDA0OTdiYTVkMzQ0ZGNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KQEAgLTI4LDExICsyOCwx
MSBAQAogCiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKIAotI2ltcG9ydCAiVVJMLmgi
Ci0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZO
ZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05T
VVJMRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODAsNyArODAsNyBAQCBT
dHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikK
IAogU3RyaW5nIGRlY29kZUhvc3ROYW1lKGNvbnN0IFN0cmluZyYgZG9tYWluKQogewotICAgIHJl
dHVybiBkZWNvZGVIb3N0TmFtZSgoTlNTdHJpbmcgKikoZG9tYWluKSk7CisgICAgcmV0dXJuIFdU
Rjo6ZGVjb2RlSG9zdE5hbWUoZG9tYWluKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KaW5kZXggZmM0MGFhMTliMDRjM2Fl
MzQ3MTgwMjc2M2Y3ZGYzODlhNzIyOGM5ZC4uYmQ5ZGEwZGQ4NmFjY2QxZDg0YTZjM2ZlZGEwYjQx
MmEyNmFkZjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtl
eUdlbmVyYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5
R2VuZXJhdG9yTWFjLm1tCkBAIC0yOSwxMyArMjksMTMgQEAKICNpZiBQTEFURk9STShNQUMpCiAK
ICNpbXBvcnQgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCA8
U2VjdXJpdHkvU2VjQXNuMUNvZGVyLmg+CiAjaW1wb3J0IDxTZWN1cml0eS9TZWNBc24xVGVtcGxh
dGVzLmg+CiAjaW1wb3J0IDxTZWN1cml0eS9TZWNFbmNvZGVUcmFuc2Zvcm0uaD4KICNpbXBvcnQg
PHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1w
b3J0IDx3dGYvU2NvcGUuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9jZi9U
eXBlQ2FzdHNDRi5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogI2lt
cG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvVVJMTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1hYy5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjMxMmY4MjQ4ZTg0ODJjODgwM2JiOGM3
ODZjNzM3YzQ3NmU4NDhmMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlVSTC5oIgotCi0j
aW1wb3J0ICJDRlVSTEV4dHJhcy5oIgotI2ltcG9ydCAiVVJMUGFyc2VyLmgiCi0jaW1wb3J0ICJX
ZWJDb3JlTlNVUkxFeHRyYXMuaCIKLSNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgot
I2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1AaW50ZXJmYWNlIE5TU3RyaW5nIChXZWJD
b3JlTlNVUkxFeHRyYXMpCi0tIChCT09MKV93ZWJfbG9va3NMaWtlSVBBZGRyZXNzOwotQGVuZAot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVVSTDo6VVJMKE5TVVJMICp1cmwpCi17Ci0gICAgaWYg
KCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KLSAg
ICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKChfX2JyaWRnZSBDRlVSTFJlZil1
cmwsIHVybEJ5dGVzKTsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKHVybEJ5dGVzLmRhdGEoKSk7Ci0g
ICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci19Ci0KLVVSTDo6b3BlcmF0b3IgTlNVUkwgKigp
IGNvbnN0Ci17Ci0gICAgLy8gQ3JlYXRpbmcgYSB0b2xsLWZyZWUgYnJpZGdlZCBDRlVSTCBiZWNh
dXNlIGNyZWF0aW9uIHdpdGggTlNVUkwgbWV0aG9kcyB3b3VsZCBub3QgcHJlc2VydmUgdGhlIG9y
aWdpbmFsIHN0cmluZy4KLSAgICAvLyBXZSdsbCBuZWVkIGZpZGVsaXR5IHdoZW4gcm91bmQtdHJp
cHBpbmcgdmlhIENGVVJMR2V0Qnl0ZXMoKS4KLSAgICByZXR1cm4gY3JlYXRlQ0ZVUkwoKS5icmlk
Z2luZ0F1dG9yZWxlYXNlKCk7Ci19Ci0KLVJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVD
RlVSTCgpIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIGlmIChpc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gV2UgdXNlIHRoZSB0b2xsLWZy
ZWUgYnJpZGdlIGJldHdlZW4gTlNVUkwgYW5kIENGVVJMIHRvIGNyZWF0ZSBhIENGVVJMUmVmIHN1
cHBvcnRpbmcgYm90aCBlbXB0eSBhbmQgbnVsbCB2YWx1ZXMuCi0gICAgICAgIHJldHVybiAoX19i
cmlkZ2UgQ0ZVUkxSZWYpYWRvcHROUyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiJd
KS5nZXQoKTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOwotCi0gICAg
Ly8gRmFzdCBwYXRoIGlmIHRoZSBpbnB1dCBkYXRhIGlzIDgtYml0IHRvIGF2b2lkIGNvcHlpbmcg
aW50byBhIHRlbXBvcmFyeSBidWZmZXIuCi0gICAgaWYgKExJS0VMWShtX3N0cmluZy5pczhCaXQo
KSkpCi0gICAgICAgIGNmVVJMID0gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBtX3N0cmluZy5sZW5ndGgo
KSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIFNsb3dlciBwYXRoLgotICAgICAgICBVUkxDaGFy
QnVmZmVyIGJ1ZmZlcjsKLSAgICAgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7Ci0gICAgICAgIGNm
VVJMID0gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OwotICAgIH0KLQotICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWlzQ0ZVUkxT
YW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgcmV0dXJuIGNmVVJMOwotfQotCi1ib29sIFVSTDo6aG9zdElzSVBBZGRyZXNzKFN0cmlu
Z1ZpZXcgaG9zdCkKLXsKLSAgICByZXR1cm4gW2hvc3QuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29w
eWluZygpLmdldCgpIF93ZWJfbG9va3NMaWtlSVBBZGRyZXNzXTsKLX0KLQotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oCmluZGV4IGZlMTA2
ODEzNDVmNTdmM2Y0MWY0ZDBkYTcyY2U2MTYxZGJiMDY5NDguLjFjMDczMjliZTllYmI2ZmIwYTIz
YzVkMjdjZGE4MDJjNGU4MDFlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZU5TVVJMRXh0cmFzLmgKQEAgLTI2LDI5ICsyNiwxMCBAQAogICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1AY2xhc3MgTlNTdHJpbmc7CiBAY2xhc3MgTlNVUkw7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJM
ICopOwogV0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoTlNVUkwg
Kik7Ci1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmlu
ZyAqLCBOU1VSTCAqYmFzZVVSTCk7IC8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMgZXJyb3Iu
Ci1XRUJDT1JFX0VYUE9SVCBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICopOwot
V0VCQ09SRV9FWFBPUlQgQk9PTCBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2UoTlNTdHJp
bmcgKiwgTlNSYW5nZSwgQk9PTCogZXJyb3IpOwotV0VCQ09SRV9FWFBPUlQgQk9PTCBob3N0TmFt
ZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSwgQk9PTCogZXJyb3Ip
OwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3Ry
aW5nICosIE5TUmFuZ2UpOyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgotV0VC
Q09SRV9FWFBPUlQgTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5TU3RyaW5nICos
IE5TUmFuZ2UpOyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgotV0VCQ09SRV9F
WFBPUlQgTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICopOyAvLyBSZXR1cm4gdmFs
dWUgb2YgbmlsIG1lYW5zIGVycm9yLgotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmVuY29kZUhv
c3ROYW1lKE5TU3RyaW5nICopOyAvLyBSZXR1cm4gdmFsdWUgb2YgbmlsIG1lYW5zIGVycm9yLgot
V0VCQ09SRV9FWFBPUlQgTlNVUkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNv
bXBvbmVudChOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOwotV0VCQ09SRV9FWFBPUlQgTlNV
UkwgKlVSTFdpdGhEYXRhKE5TRGF0YSAqLCBOU1VSTCAqYmFzZVVSTCk7Ci1XRUJDT1JFX0VYUE9S
VCBOU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqKTsKLVdFQkNPUkVfRVhQT1JUIE5TRGF0
YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKiwgQ0ZVUkxDb21wb25lbnRUeXBlKTsK
LVdFQkNPUkVfRVhQT1JUIE5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChO
U1N0cmluZyAqLCBOU1VSTCAqYmFzZVVSTCk7Ci0KLU5TUmFuZ2UgcmFuZ2VPZlVSTFNjaGVtZShO
U1N0cmluZyAqKTsKLVdFQkNPUkVfRVhQT1JUIEJPT0wgaXNVc2VyVmlzaWJsZVVSTChOU1N0cmlu
ZyAqKTsKLVdFQkNPUkVfRVhQT1JUIEJPT0wgbG9va3NMaWtlQWJzb2x1dGVVUkwoTlNTdHJpbmcg
Kik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCmluZGV4IGVmYTc4ZGRiOGI5NTM5YjE5MzFh
NzcyMTBlYzYxNzQyOTdhNzI3NGUuLmQzNjViMzE2Nzc3ODQ2MzQ3Y2NmMjM1Yjc2M2ZhZmYzMzA5
NjU3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VS
TEV4dHJhcy5tbQpAQCAtMjcsNyArMjcsNiBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiVVJMUGFyc2VyLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNp
bXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvRnVuY3Rpb24u
aD4KQEAgLTM5LDk5OSArMzgsOCBAQAogI2ltcG9ydCA8dW5pY29kZS91aWRuYS5oPgogI2ltcG9y
dCA8dW5pY29kZS91c2NyaXB0Lmg+CiAKLS8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9s
ZCBhbiBJRE4tZW5jb2RlZCBuYW1lLgotLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhp
cywgd2Ugd29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9L
LgotI2RlZmluZSBIT1NUX05BTUVfQlVGRkVSX0xFTkdUSCAyMDQ4Ci0jZGVmaW5lIFVSTF9CWVRF
U19CVUZGRVJfTEVOR1RIIDIwNDgKLQotdHlwZWRlZiB2b2lkICgqIFN0cmluZ1JhbmdlQXBwbGll
ckZ1bmN0aW9uKShOU1N0cmluZyAqLCBOU1JhbmdlLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
Jik7Ci0KLXN0YXRpYyB1aW50MzJfdCBJRE5TY3JpcHRXaGl0ZUxpc3RbKFVTQ1JJUFRfQ09ERV9M
SU1JVCArIDMxKSAvIDMyXTsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBp
c0FybWVuaWFuTG9va2FsaWtlQ2hhcmFjdGVyKFVDaGFyMzIgY29kZVBvaW50KQotewotICAgIHJl
dHVybiBjb2RlUG9pbnQgPT0gMHgwNTQ4IHx8IGNvZGVQb2ludCA9PSAweDA1NEQgfHwgY29kZVBv
aW50ID09IDB4MDU3OCB8fCBjb2RlUG9pbnQgPT0gMHgwNTdEOwotfQotCi1zdGF0aWMgYm9vbCBp
c0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKFVDaGFyMzIgY29kZVBvaW50KQotewotICAgIFVFcnJv
ckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7Ci0gICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNj
cmlwdF9nZXRTY3JpcHQoY29kZVBvaW50LCAmZXJyb3IpOwotICAgIGlmIChlcnJvciAhPSBVX1pF
Uk9fRVJST1IpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxlIHRyeWlu
ZyB0byBsb29rIGF0IHNjcmlwdHM6ICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHNjcmlwdCA9PSBVU0NSSVBUX0FSTUVOSUFOOwotfQotCi0K
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlEaWdp
dE9yVmFsaWRIb3N0Q2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhckNvZGUpCi17Ci0gICAgaWYg
KCFpc0FTQ0lJRGlnaXRPclB1bmN0dWF0aW9uKGNoYXJDb2RlKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgLy8gVGhpbmdzIHRoZSBVUkwgUGFyc2VyIHJlamVjdHM6Ci0gICAgc3dpdGNo
IChjaGFyQ29kZSkgewotICAgIGNhc2UgJyMnOgotICAgIGNhc2UgJyUnOgotICAgIGNhc2UgJy8n
OgotICAgIGNhc2UgJzonOgotICAgIGNhc2UgJz8nOgotICAgIGNhc2UgJ0AnOgotICAgIGNhc2Ug
J1snOgotICAgIGNhc2UgJ1xcJzoKLSAgICBjYXNlICddJzoKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX0KLQotCi0KLXN0
YXRpYyBCT09MIGlzTG9va2FsaWtlQ2hhcmFjdGVyKHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJl
dmlvdXNDb2RlUG9pbnQsIFVDaGFyMzIgY2hhckNvZGUpCi17Ci0gICAgLy8gVGhpcyBmdW5jdGlv
biB0cmVhdHMgdGhlIGZvbGxvd2luZyBhcyB1bnNhZmUsIGxvb2thbGlrZSBjaGFyYWN0ZXJzOgot
ICAgIC8vIGFueSBub24tcHJpbnRhYmxlIGNoYXJhY3RlciwgYW55IGNoYXJhY3RlciBjb25zaWRl
cmVkIGFzIHdoaXRlc3BhY2UsCi0gICAgLy8gYW55IGlnbm9yYWJsZSBjaGFyYWN0ZXIsIGFuZCBl
bW9qaSBjaGFyYWN0ZXJzIHJlbGF0ZWQgdG8gbG9ja3MuCi0gICAgCi0gICAgLy8gV2UgYWxzbyBj
b25zaWRlcmVkIHRoZSBjaGFyYWN0ZXJzIGluIE1vemlsbGEncyBibGFja2xpc3QgPGh0dHA6Ly9r
Yi5tb3ppbGxhemluZS5vcmcvTmV0d29yay5JRE4uYmxhY2tsaXN0X2NoYXJzPi4KLQotICAgIC8v
IFNvbWUgb2YgdGhlIGNoYXJhY3RlcnMgaGVyZSB3aWxsIG5ldmVyIGFwcGVhciBvbmNlIElDVSBo
YXMgZW5jb2RlZC4KLSAgICAvLyBGb3IgZXhhbXBsZSwgSUNVIHRyYW5zZm9ybXMgbW9zdCBzcGFj
ZXMgaW50byBhbiBBU0NJSSBzcGFjZSBhbmQgbW9zdAotICAgIC8vIHNsYXNoZXMgaW50byBhbiBB
U0NJSSBzb2xpZHVzLiBCdXQgb25lIG9mIHRoZSB0d28gY2FsbGVycyB1c2VzIHRoaXMKLSAgICAv
LyBvbiBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBub3QgYmVlbiBwcm9jZXNzZWQgYnkgSUNVLCBzbyB0
aGV5IGFyZSBuZWVkZWQgaGVyZS4KLSAgICAKLSAgICBpZiAoIXVfaXNwcmludChjaGFyQ29kZSkg
fHwgdV9pc1VXaGl0ZVNwYWNlKGNoYXJDb2RlKSB8fCB1X2hhc0JpbmFyeVByb3BlcnR5KGNoYXJD
b2RlLCBVQ0hBUl9ERUZBVUxUX0lHTk9SQUJMRV9DT0RFX1BPSU5UKSkKLSAgICAgICAgcmV0dXJu
IFlFUzsKLSAgICAKLSAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7Ci0gICAgICAgIGNhc2UgMHgwMEJD
OiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIgKi8KLSAgICAgICAgY2FzZSAweDAwQkQ6
IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRiAqLwotICAgICAgICBjYXNlIDB4MDBCRTogLyog
VlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTICovCi0gICAgICAgIGNhc2UgMHgwMEVEOiAv
KiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFICovCi0gICAgICAgIGNhc2UgMHgwMUMz
OiAvKiBMQVRJTiBMRVRURVIgUkVUUk9GTEVYIENMSUNLICovCi0gICAgICAgIGNhc2UgMHgwMjUx
OiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgQUxQSEEgKi8KLSAgICAgICAgY2FzZSAweDAyNjE6IC8q
IExBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgRyAqLwotICAgICAgICBjYXNlIDB4MDJEMDogLyog
TU9ESUZJRVIgTEVUVEVSIFRSSUFOR1VMQVIgQ09MT04gKi8KLSAgICAgICAgY2FzZSAweDAzMzU6
IC8qIENPTUJJTklORyBTSE9SVCBTVFJPS0UgT1ZFUkxBWSAqLwotICAgICAgICBjYXNlIDB4MDMz
NzogLyogQ09NQklOSU5HIFNIT1JUIFNPTElEVVMgT1ZFUkxBWSAqLwotICAgICAgICBjYXNlIDB4
MDMzODogLyogQ09NQklOSU5HIExPTkcgU09MSURVUyBPVkVSTEFZICovCi0gICAgICAgIGNhc2Ug
MHgwNTg5OiAvKiBBUk1FTklBTiBGVUxMIFNUT1AgKi8KLSAgICAgICAgY2FzZSAweDA1QjQ6IC8q
IEhFQlJFVyBQT0lOVCBISVJJUSAqLwotICAgICAgICBjYXNlIDB4MDVCQzogLyogSEVCUkVXIFBP
SU5UIERBR0VTSCBPUiBNQVBJUSAqLwotICAgICAgICBjYXNlIDB4MDVDMzogLyogSEVCUkVXIFBV
TkNUVUFUSU9OIFNPRiBQQVNVUSAqLwotICAgICAgICBjYXNlIDB4MDVGNDogLyogSEVCUkVXIFBV
TkNUVUFUSU9OIEdFUlNIQVlJTSAqLwotICAgICAgICBjYXNlIDB4MDYwOTogLyogQVJBQklDLUlO
RElDIFBFUiBNSUxMRSBTSUdOICovCi0gICAgICAgIGNhc2UgMHgwNjBBOiAvKiBBUkFCSUMtSU5E
SUMgUEVSIFRFTiBUSE9VU0FORCBTSUdOICovCi0gICAgICAgIGNhc2UgMHgwNjUwOiAvKiBBUkFC
SUMgS0FTUkEgKi8KLSAgICAgICAgY2FzZSAweDA2NjA6IC8qIEFSQUJJQyBJTkRJQyBESUdJVCBa
RVJPICovCi0gICAgICAgIGNhc2UgMHgwNjZBOiAvKiBBUkFCSUMgUEVSQ0VOVCBTSUdOICovCi0g
ICAgICAgIGNhc2UgMHgwNkQ0OiAvKiBBUkFCSUMgRlVMTCBTVE9QICovCi0gICAgICAgIGNhc2Ug
MHgwNkYwOiAvKiBFWFRFTkRFRCBBUkFCSUMgSU5ESUMgRElHSVQgWkVSTyAqLwotICAgICAgICBj
YXNlIDB4MDcwMTogLyogU1lSSUFDIFNVUFJBTElORUFSIEZVTEwgU1RPUCAqLwotICAgICAgICBj
YXNlIDB4MDcwMjogLyogU1lSSUFDIFNVQkxJTkVBUiBGVUxMIFNUT1AgKi8KLSAgICAgICAgY2Fz
ZSAweDA3MDM6IC8qIFNZUklBQyBTVVBSQUxJTkVBUiBDT0xPTiAqLwotICAgICAgICBjYXNlIDB4
MDcwNDogLyogU1lSSUFDIFNVQkxJTkVBUiBDT0xPTiAqLwotICAgICAgICBjYXNlIDB4MTczNTog
LyogUEhJTElQUElORSBTSU5HTEUgUFVOQ1RVQVRJT04gKi8KLSAgICAgICAgY2FzZSAweDFEMDQ6
IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEMgKi8KLSAgICAgICAgY2FzZSAweDFEMEY6
IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE8gKi8KLSAgICAgICAgY2FzZSAweDFEMUM6
IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFUgKi8KLSAgICAgICAgY2FzZSAweDFEMjA6
IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFYgKi8KLSAgICAgICAgY2FzZSAweDFEMjE6
IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFcgKi8KLSAgICAgICAgY2FzZSAweDFEMjI6
IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFogKi8KLSAgICAgICAgY2FzZSAweDFFQ0Q6
IC8qIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9UIEJFTE9XICovCi0gICAgICAgIGNhc2Ug
MHgyMDEwOiAvKiBIWVBIRU4gKi8KLSAgICAgICAgY2FzZSAweDIwMTE6IC8qIE5PTi1CUkVBS0lO
RyBIWVBIRU4gKi8KLSAgICAgICAgY2FzZSAweDIwMjQ6IC8qIE9ORSBET1QgTEVBREVSICovCi0g
ICAgICAgIGNhc2UgMHgyMDI3OiAvKiBIWVBIRU5BVElPTiBQT0lOVCAqLwotICAgICAgICBjYXNl
IDB4MjAzOTogLyogU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksgKi8K
LSAgICAgICAgY2FzZSAweDIwM0E6IC8qIFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9U
QVRJT04gTUFSSyAqLwotICAgICAgICBjYXNlIDB4MjA0MTogLyogQ0FSRVQgSU5TRVJUSU9OIFBP
SU5UICovCi0gICAgICAgIGNhc2UgMHgyMDQ0OiAvKiBGUkFDVElPTiBTTEFTSCAqLwotICAgICAg
ICBjYXNlIDB4MjA1MjogLyogQ09NTUVSQ0lBTCBNSU5VUyBTSUdOICovCi0gICAgICAgIGNhc2Ug
MHgyMTUzOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFRISVJEICovCi0gICAgICAgIGNhc2UgMHgy
MTU0OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIFRISVJEUyAqLwotICAgICAgICBjYXNlIDB4MjE1
NTogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSCAqLwotICAgICAgICBjYXNlIDB4MjE1Njog
LyogVlVMR0FSIEZSQUNUSU9OIFRXTyBGSUZUSFMgKi8KLSAgICAgICAgY2FzZSAweDIxNTc6IC8q
IFZVTEdBUiBGUkFDVElPTiBUSFJFRSBGSUZUSFMgKi8KLSAgICAgICAgY2FzZSAweDIxNTg6IC8q
IFZVTEdBUiBGUkFDVElPTiBGT1VSIEZJRlRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1OTogLyog
VlVMR0FSIEZSQUNUSU9OIE9ORSBTSVhUSCAqLwotICAgICAgICBjYXNlIDB4MjE1QTogLyogVlVM
R0FSIEZSQUNUSU9OIEZJVkUgU0lYVEhTICovCi0gICAgICAgIGNhc2UgMHgyMTVCOiAvKiBWVUxH
QVIgRlJBQ1RJT04gT05FIEVJR0hUICovCi0gICAgICAgIGNhc2UgMHgyMTVDOiAvKiBWVUxHQVIg
RlJBQ1RJT04gVEhSRUUgRUlHSFRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1RDogLyogVlVMR0FS
IEZSQUNUSU9OIEZJVkUgRUlHSFRIUyAqLwotICAgICAgICBjYXNlIDB4MjE1RTogLyogVlVMR0FS
IEZSQUNUSU9OIFNFVkVOIEVJR0hUSFMgKi8KLSAgICAgICAgY2FzZSAweDIxNUY6IC8qIEZSQUNU
SU9OIE5VTUVSQVRPUiBPTkUgKi8KLSAgICAgICAgY2FzZSAweDIyMTI6IC8qIE1JTlVTIFNJR04g
Ki8KLSAgICAgICAgY2FzZSAweDIyMTU6IC8qIERJVklTSU9OIFNMQVNIICovCi0gICAgICAgIGNh
c2UgMHgyMjE2OiAvKiBTRVQgTUlOVVMgKi8KLSAgICAgICAgY2FzZSAweDIyMzY6IC8qIFJBVElP
ICovCi0gICAgICAgIGNhc2UgMHgyMzNGOiAvKiBBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU0xBU0gg
QkFSICovCi0gICAgICAgIGNhc2UgMHgyM0FFOiAvKiBJTlRFR1JBTCBFWFRFTlNJT04gKi8KLSAg
ICAgICAgY2FzZSAweDI0NEE6IC8qIE9DUiBET1VCTEUgQkFDS1NMQVNIICovCi0gICAgICAgIGNh
c2UgMHgyNTcxOiAvKiBEaXNwbGF5VHlwZTo6Qm94IERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQ
UEVSIFJJR0hUIFRPIExPV0VSIExFRlQgKi8KLSAgICAgICAgY2FzZSAweDI1NzI6IC8qIERpc3Bs
YXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBS
SUdIVCAqLwotICAgICAgICBjYXNlIDB4MjlGNjogLyogU09MSURVUyBXSVRIIE9WRVJCQVIgKi8K
LSAgICAgICAgY2FzZSAweDI5Rjg6IC8qIEJJRyBTT0xJRFVTICovCi0gICAgICAgIGNhc2UgMHgy
QUZCOiAvKiBUUklQTEUgU09MSURVUyBCSU5BUlkgUkVMQVRJT04gKi8KLSAgICAgICAgY2FzZSAw
eDJBRkQ6IC8qIERPVUJMRSBTT0xJRFVTIE9QRVJBVE9SICovCi0gICAgICAgIGNhc2UgMHgyRkYw
OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgTEVGVCBUTyBSSUdIVCAqLwot
ICAgICAgICBjYXNlIDB4MkZGMTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVS
IEFCT1ZFIFRPIEJFTE9XICovCi0gICAgICAgIGNhc2UgMHgyRkYyOiAvKiBJREVPR1JBUEhJQyBE
RVNDUklQVElPTiBDSEFSQUNURVIgTEVGVCBUTyBNSURETEUgQU5EIFJJR0hUICovCi0gICAgICAg
IGNhc2UgMHgyRkYzOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUg
VE8gTUlERExFIEFORCBCRUxPVyAqLwotICAgICAgICBjYXNlIDB4MkZGNDogLyogSURFT0dSQVBI
SUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEZVTEwgU1VSUk9VTkQgKi8KLSAgICAgICAgY2FzZSAw
eDJGRjU6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9N
IEFCT1ZFICovCi0gICAgICAgIGNhc2UgMHgyRkY2OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElP
TiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBCRUxPVyAqLwotICAgICAgICBjYXNlIDB4MkZGNzog
LyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTEVGVCAq
LwotICAgICAgICBjYXNlIDB4MkZGODogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFD
VEVSIFNVUlJPVU5EIEZST00gVVBQRVIgTEVGVCAqLwotICAgICAgICBjYXNlIDB4MkZGOTogLyog
SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gVVBQRVIgUklH
SFQgKi8KLSAgICAgICAgY2FzZSAweDJGRkE6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENI
QVJBQ1RFUiBTVVJST1VORCBGUk9NIExPV0VSIExFRlQgKi8KLSAgICAgICAgY2FzZSAweDJGRkI6
IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBPVkVSTEFJRCAqLwotICAgICAg
ICBjYXNlIDB4MzAwMjogLyogSURFT0dSQVBISUMgRlVMTCBTVE9QICovCi0gICAgICAgIGNhc2Ug
MHgzMDA4OiAvKiBMRUZUIEFOR0xFIEJSQUNLRVQgKi8KLSAgICAgICAgY2FzZSAweDMwMTQ6IC8q
IExFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLwotICAgICAgICBjYXNlIDB4MzAxNTogLyog
UklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLwotICAgICAgICBjYXNlIDB4MzAzMzogLyog
VkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSyBVUFBFUiBIQUxGICovCi0gICAgICAgIGNhc2UgMHgz
MDM1OiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIExPV0VSIEhBTEYgKi8KLSAgICAgICAg
Y2FzZSAweDMyMUQ6IC8qIFBBUkVOVEhFU0laRUQgS09SRUFOIENIQVJBQ1RFUiBPSkVPTiAqLwot
ICAgICAgICBjYXNlIDB4MzIxRTogLyogUEFSRU5USEVTSVpFRCBLT1JFQU4gQ0hBUkFDVEVSIE8g
SFUgKi8KLSAgICAgICAgY2FzZSAweDMzQUU6IC8qIFNRVUFSRSBSQUQgT1ZFUiBTICovCi0gICAg
ICAgIGNhc2UgMHgzM0FGOiAvKiBTUVVBUkUgUkFEIE9WRVIgUyBTUVVBUkVEICovCi0gICAgICAg
IGNhc2UgMHgzM0M2OiAvKiBTUVVBUkUgQyBPVkVSIEtHICovCi0gICAgICAgIGNhc2UgMHgzM0RG
OiAvKiBTUVVBUkUgQSBPVkVSIE0gKi8KLSAgICAgICAgY2FzZSAweDA1Qjk6IC8qIEhFQlJFVyBQ
T0lOVCBIT0xBTSAqLwotICAgICAgICBjYXNlIDB4MDVCQTogLyogSEVCUkVXIFBPSU5UIEhPTEFN
IEhBU0VSIEZPUiBWQVYgKi8KLSAgICAgICAgY2FzZSAweDA1QzE6IC8qIEhFQlJFVyBQT0lOVCBT
SElOIERPVCAqLwotICAgICAgICBjYXNlIDB4MDVDMjogLyogSEVCUkVXIFBPSU5UIFNJTiBET1Qg
Ki8KLSAgICAgICAgY2FzZSAweDA1QzQ6IC8qIEhFQlJFVyBNQVJLIFVQUEVSIERPVCAqLwotICAg
ICAgICBjYXNlIDB4QTczMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgUyAqLwotICAg
ICAgICBjYXNlIDB4QTc3MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIERVTSAqLwotICAgICAgICBj
YXNlIDB4QTc4OTogLyogTU9ESUZJRVIgTEVUVEVSIENPTE9OICovCi0gICAgICAgIGNhc2UgMHhG
RTE0OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgU0VNSUNPTE9OICovCi0gICAg
ICAgIGNhc2UgMHhGRTE1OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgRVhDTEFN
QVRJT04gTUFSSyAqLwotICAgICAgICBjYXNlIDB4RkUzRjogLyogUFJFU0VOVEFUSU9OIEZPUk0g
Rk9SIFZFUlRJQ0FMIExFRlQgQU5HTEUgQlJBQ0tFVCAqLwotICAgICAgICBjYXNlIDB4RkU1RDog
LyogU01BTEwgTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAgIGNhc2UgMHhG
RTVFOiAvKiBTTUFMTCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAgICAgIGNh
c2UgMHhGRjBFOiAvKiBGVUxMV0lEVEggRlVMTCBTVE9QICovCi0gICAgICAgIGNhc2UgMHhGRjBG
OiAvKiBGVUxMIFdJRFRIIFNPTElEVVMgKi8KLSAgICAgICAgY2FzZSAweEZGNjE6IC8qIEhBTEZX
SURUSCBJREVPR1JBUEhJQyBGVUxMIFNUT1AgKi8KLSAgICAgICAgY2FzZSAweEZGRkM6IC8qIE9C
SkVDVCBSRVBMQUNFTUVOVCBDSEFSQUNURVIgKi8KLSAgICAgICAgY2FzZSAweEZGRkQ6IC8qIFJF
UExBQ0VNRU5UIENIQVJBQ1RFUiAqLwotICAgICAgICBjYXNlIDB4MUY1MEY6IC8qIExPQ0sgV0lU
SCBJTksgUEVOICovCi0gICAgICAgIGNhc2UgMHgxRjUxMDogLyogQ0xPU0VEIExPQ0sgV0lUSCBL
RVkgKi8KLSAgICAgICAgY2FzZSAweDFGNTExOiAvKiBLRVkgKi8KLSAgICAgICAgY2FzZSAweDFG
NTEyOiAvKiBMT0NLICovCi0gICAgICAgIGNhc2UgMHgxRjUxMzogLyogT1BFTiBMT0NLICovCi0g
ICAgICAgICAgICByZXR1cm4gWUVTOwotICAgICAgICBjYXNlIDB4MDMwNzogLyogQ09NQklOSU5H
IERPVCBBQk9WRSAqLwotICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50ID09IDB4
MDIzNyAvKiBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKICovCi0gICAgICAgICAgICAgICAg
fHwgcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMTMxIC8qIExBVElOIFNNQUxMIExFVFRFUiBET1RM
RVNTIEkgKi8KLSAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAweDA1RDU7
IC8qIEhFQlJFVyBMRVRURVIgVkFWICovCi0gICAgICAgIGNhc2UgMHgwNTQ4OiAvKiBBUk1FTklB
TiBDQVBJVEFMIExFVFRFUiBWTyAqLwotICAgICAgICBjYXNlIDB4MDU0RDogLyogQVJNRU5JQU4g
Q0FQSVRBTCBMRVRURVIgU0VIICovCi0gICAgICAgIGNhc2UgMHgwNTc4OiAvKiBBUk1FTklBTiBT
TUFMTCBMRVRURVIgVk8gKi8KLSAgICAgICAgY2FzZSAweDA1N0Q6IC8qIEFSTUVOSUFOIFNNQUxM
IExFVFRFUiBTRUggKi8KLSAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0NvZGVQb2ludAotICAg
ICAgICAgICAgICAgICYmICFpc0FTQ0lJRGlnaXRPclZhbGlkSG9zdENoYXJhY3RlcihwcmV2aW91
c0NvZGVQb2ludC52YWx1ZSgpKQotICAgICAgICAgICAgICAgICYmICFpc0FybWVuaWFuU2NyaXB0
Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpOwotICAgICAgICBjYXNlICcuJzoK
LSAgICAgICAgICAgIHJldHVybiBOTzsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBwcmV2aW91c0NvZGVQb2ludAotICAgICAgICAgICAgICAgICYmIGlzQXJtZW5pYW5Mb29r
YWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUoKSkKLSAgICAgICAgICAgICAg
ICAmJiAhKGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoY2hhckNvZGUpIHx8IGlzQVNDSUlEaWdp
dE9yVmFsaWRIb3N0Q2hhcmFjdGVyKGNoYXJDb2RlKSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9p
ZCB3aGl0ZUxpc3RJRE5TY3JpcHQoY29uc3QgY2hhciogc2NyaXB0TmFtZSkKLXsKLSAgICBpbnQz
Ml90IHNjcmlwdCA9IHVfZ2V0UHJvcGVydHlWYWx1ZUVudW0oVUNIQVJfU0NSSVBULCBzY3JpcHRO
YW1lKTsKLSAgICBpZiAoc2NyaXB0ID49IDAgJiYgc2NyaXB0IDwgVVNDUklQVF9DT0RFX0xJTUlU
KSB7Ci0gICAgICAgIHNpemVfdCBpbmRleCA9IHNjcmlwdCAvIDMyOwotICAgICAgICB1aW50MzJf
dCBtYXNrID0gMSA8PCAoc2NyaXB0ICUgMzIpOwotICAgICAgICBJRE5TY3JpcHRXaGl0ZUxpc3Rb
aW5kZXhdIHw9IG1hc2s7Ci0gICAgfQotfQotCi1zdGF0aWMgQk9PTCByZWFkSUROU2NyaXB0V2hp
dGVMaXN0RmlsZShOU1N0cmluZyAqZmlsZW5hbWUpCi17Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAg
ICAgICAgcmV0dXJuIE5POwotCi0gICAgRklMRSAqZmlsZSA9IGZvcGVuKFtmaWxlbmFtZSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb25dLCAiciIpOwotICAgIGlmICghZmlsZSkKLSAgICAgICAgcmV0
dXJuIE5POwotICAgIAotICAgIC8vIFJlYWQgYSB3b3JkIGF0IGEgdGltZS4KLSAgICAvLyBBbGxv
dyBjb21tZW50cywgc3RhcnRpbmcgd2l0aCAjIGNoYXJhY3RlciB0byB0aGUgZW5kIG9mIHRoZSBs
aW5lLgotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIC8vIFNraXAgYSBjb21tZW50IGlmIHByZXNl
bnQuCi0gICAgICAgIGlmIChmc2NhbmYoZmlsZSwgIiAjJSpbXlxuXHJdJSpbXG5ccl0iKSA9PSBF
T0YpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAgIC8vIFJlYWQgYSBzY3Jp
cHQgbmFtZSBpZiBwcmVzZW50LgotICAgICAgICBjaGFyIHdvcmRbMzNdOwotICAgICAgICBpbnQg
cmVzdWx0ID0gZnNjYW5mKGZpbGUsICIgJTMyW14jIFx0XG5ccl0lKlteIyBcdFxuXHJdICIsIHdv
cmQpOwotICAgICAgICBpZiAocmVzdWx0ID09IEVPRikKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAKLSAgICAgICAgaWYgKHJlc3VsdCA9PSAxKSB7Ci0gICAgICAgICAgICAvLyBHb3QgYSB3
b3JkLCBtYXAgdG8gc2NyaXB0IGNvZGUgYW5kIHB1dCBpdCBpbnRvIHRoZSBhcnJheS4KLSAgICAg
ICAgICAgIHdoaXRlTGlzdElETlNjcmlwdCh3b3JkKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBm
Y2xvc2UoZmlsZSk7Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotc3RhdGljIEJPT0wgYWxsQ2hhcmFj
dGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KGNvbnN0IFVDaGFyICpidWZmZXIsIGludDMyX3QgbGVu
Z3RoKQotewotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgZmxhZzsKLSAgICBkaXNwYXRjaF9v
bmNlKCZmbGFnLCBeewotICAgICAgICAvLyBSZWFkIHdoaXRlIGxpc3QgZnJvbSBsaWJyYXJ5Lgot
ICAgICAgICBOU0FycmF5ICpkaXJzID0gTlNTZWFyY2hQYXRoRm9yRGlyZWN0b3JpZXNJbkRvbWFp
bnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU0FsbERvbWFpbnNNYXNrLCBZRVMpOwotICAgICAgICBp
bnQgbnVtRGlycyA9IFtkaXJzIGNvdW50XTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1EaXJzOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChyZWFkSUROU2NyaXB0V2hpdGVMaXN0Rmls
ZShbW2RpcnMgb2JqZWN0QXRJbmRleDppXSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJJRE5TY3JpcHRXaGl0ZUxpc3QudHh0Il0pKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICBjb25zdCBjaGFyKiBkZWZhdWx0SUROU2NyaXB0V2hpdGVMaXN0WzIw
XSA9IHsKLSAgICAgICAgICAgICJDb21tb24iLAotICAgICAgICAgICAgIkluaGVyaXRlZCIsCi0g
ICAgICAgICAgICAiQXJhYmljIiwKLSAgICAgICAgICAgICJBcm1lbmlhbiIsCi0gICAgICAgICAg
ICAiQm9wb21vZm8iLAotICAgICAgICAgICAgIkNhbmFkaWFuX0Fib3JpZ2luYWwiLAotICAgICAg
ICAgICAgIkRldmFuYWdhcmkiLAotICAgICAgICAgICAgIkRlc2VyZXQiLAotICAgICAgICAgICAg
Ikd1amFyYXRpIiwKLSAgICAgICAgICAgICJHdXJtdWtoaSIsCi0gICAgICAgICAgICAiSGFuZ3Vs
IiwKLSAgICAgICAgICAgICJIYW4iLAotICAgICAgICAgICAgIkhlYnJldyIsCi0gICAgICAgICAg
ICAiSGlyYWdhbmEiLAotICAgICAgICAgICAgIkthdGFrYW5hX09yX0hpcmFnYW5hIiwKLSAgICAg
ICAgICAgICJLYXRha2FuYSIsCi0gICAgICAgICAgICAiTGF0aW4iLAotICAgICAgICAgICAgIlRh
bWlsIiwKLSAgICAgICAgICAgICJUaGFpIiwKLSAgICAgICAgICAgICJZaSIsCi0gICAgICAgIH07
Ci0gICAgICAgIGZvciAoY29uc3QgY2hhciogc2NyaXB0TmFtZSA6IGRlZmF1bHRJRE5TY3JpcHRX
aGl0ZUxpc3QpCi0gICAgICAgICAgICB3aGl0ZUxpc3RJRE5TY3JpcHQoc2NyaXB0TmFtZSk7Ci0g
ICAgfSk7Ci0gICAgCi0gICAgaW50MzJfdCBpID0gMDsKLSAgICBzdGQ6Om9wdGlvbmFsPFVDaGFy
MzI+IHByZXZpb3VzQ29kZVBvaW50OwotICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7Ci0gICAgICAg
IFVDaGFyMzIgYzsKLSAgICAgICAgVTE2X05FWFQoYnVmZmVyLCBpLCBsZW5ndGgsIGMpCi0gICAg
ICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIFVTY3JpcHRDb2Rl
IHNjcmlwdCA9IHVzY3JpcHRfZ2V0U2NyaXB0KGMsICZlcnJvcik7Ci0gICAgICAgIGlmIChlcnJv
ciAhPSBVX1pFUk9fRVJST1IpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiZ290IElDVSBlcnJv
ciB3aGlsZSB0cnlpbmcgdG8gbG9vayBhdCBzY3JpcHRzOiAlZCIsIGVycm9yKTsKLSAgICAgICAg
ICAgIHJldHVybiBOTzsKLSAgICAgICAgfQotICAgICAgICBpZiAoc2NyaXB0IDwgMCkgewotICAg
ICAgICAgICAgTE9HX0VSUk9SKCJnb3QgbmVnYXRpdmUgbnVtYmVyIGZvciBzY3JpcHQgY29kZSBm
cm9tIElDVTogJWQiLCBzY3JpcHQpOwotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICB9
Ci0gICAgICAgIGlmIChzY3JpcHQgPj0gVVNDUklQVF9DT0RFX0xJTUlUKQotICAgICAgICAgICAg
cmV0dXJuIE5POwotCi0gICAgICAgIHNpemVfdCBpbmRleCA9IHNjcmlwdCAvIDMyOwotICAgICAg
ICB1aW50MzJfdCBtYXNrID0gMSA8PCAoc2NyaXB0ICUgMzIpOwotICAgICAgICBpZiAoIShJRE5T
Y3JpcHRXaGl0ZUxpc3RbaW5kZXhdICYgbWFzaykpCi0gICAgICAgICAgICByZXR1cm4gTk87Ci0g
ICAgICAgIAotICAgICAgICBpZiAoaXNMb29rYWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9p
bnQsIGMpKQotICAgICAgICAgICAgcmV0dXJuIE5POwotICAgICAgICBwcmV2aW91c0NvZGVQb2lu
dCA9IGM7Ci0gICAgfQotICAgIHJldHVybiBZRVM7Ci19Ci0KLXN0YXRpYyBib29sIGlzU2Vjb25k
TGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExEUnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50
MzJfdCBsZW5ndGgsIGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChVQ2hhcik+JiBjaGFyYWN0ZXJJ
c0FsbG93ZWQpCi17Ci0gICAgQVNTRVJUKGxlbmd0aCA+IDApOwotCi0gICAgZm9yIChpbnQzMl90
IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBVQ2hhciBjaCA9IGJ1ZmZl
cltpXTsKLSAgICAgICAgCi0gICAgICAgIGlmIChjaGFyYWN0ZXJJc0FsbG93ZWQoY2gpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICAvLyBPbmx5IGNoZWNrIHRoZSBz
ZWNvbmQgbGV2ZWwgZG9tYWluLiBMb3dlciBsZXZlbCByZWdpc3RyYXJzIG1heSBoYXZlIGRpZmZl
cmVudCBydWxlcy4KLSAgICAgICAgaWYgKGNoID09ICcuJykKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotI2RlZmluZSBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhzdWZmaXgsIGZ1bmN0
aW9uKSBcCi0gICAgeyBcCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IHN1ZmZpeExlbmd0
aCA9IHNpemVvZihzdWZmaXgpIC8gc2l6ZW9mKHN1ZmZpeFswXSk7IFwKLSAgICAgICAgaWYgKGxl
bmd0aCA+IHN1ZmZpeExlbmd0aCAmJiAwID09IG1lbWNtcChidWZmZXIgKyBsZW5ndGggLSBzdWZm
aXhMZW5ndGgsIHN1ZmZpeCwgc2l6ZW9mKHN1ZmZpeCkpKSBcCi0gICAgICAgICAgICByZXR1cm4g
aXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhidWZmZXIsIGxlbmd0aCAt
IHN1ZmZpeExlbmd0aCwgZnVuY3Rpb24pOyBcCi0gICAgfQotCi1zdGF0aWMgYm9vbCBpc1J1c3Np
YW5Eb21haW5OYW1lQ2hhcmFjdGVyKFVDaGFyIGNoKQotewotICAgIC8vIE9ubHkgbW9kZXJuIFJ1
c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgcmV0dXJu
IChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgaXNBU0NJ
SURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci19Ci0KLXN0YXRpYyBCT09MIGFsbENoYXJhY3RlcnNB
bGxvd2VkQnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCkKLXsK
LSAgICAvLyBTa2lwIHRyYWlsaW5nIGRvdCBmb3Igcm9vdCBkb21haW4uCi0gICAgaWYgKGJ1ZmZl
cltsZW5ndGggLSAxXSA9PSAnLicpCi0gICAgICAgIGxlbmd0aC0tOwotCi0gICAgLy8gaHR0cDov
L2NjdGxkLnJ1L2ZpbGVzL3BkZi9kb2NzL3J1bGVzX3J1LXJmLnBkZgotICAgIHN0YXRpYyBjb25z
dCBVQ2hhciBjeXJpbGxpY1JGW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDQwLCAv
LyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKLSAgICAgICAgMHgwNDQ0ICAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgRUYKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVT
KGN5cmlsbGljUkYsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOwotCi0gICAgLy8gaHR0
cDovL3J1c25hbWVzLnJ1L3J1bGVzLnBsCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGlj
UlVTW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBTTUFM
TCBMRVRURVIgRVIKLSAgICAgICAgMHgwNDQzLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQot
ICAgICAgICAweDA0NDEgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUwotICAgIH07Ci0gICAg
Q0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSVVMsIGlzUnVzc2lhbkRvbWFp
bk5hbWVDaGFyYWN0ZXIpOwotCi0gICAgLy8gaHR0cDovL3J1LmZhaXRpZC5vcmcvcHJvamVjdHMv
bW9zY293L2RvY3VtZW50cy9tb3NrdmEvaWRuCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljTU9TS1ZBW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDNDLCAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRU0KLSAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgTwotICAgICAgICAweDA0NDEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUwotICAgICAg
ICAweDA0M0EsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQotICAgICAgICAweDA0MzIsIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBWRQotICAgICAgICAweDA0MzAgIC8vIENZUklMTElDIFNN
QUxMIExFVFRFUiBBCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhj
eXJpbGxpY01PU0tWQSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBo
dHRwOi8vd3d3LmRvdGRldGkucnUvZm9ydXNlci9kb2NzL3JlZ3J1bGVzLnBocAotICAgIHN0YXRp
YyBjb25zdCBVQ2hhciBjeXJpbGxpY0RFVElbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAw
eDA0MzQsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBERQotICAgICAgICAweDA0MzUsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBJRQotICAgICAgICAweDA0NDIsIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBURQotICAgICAgICAweDA0MzggIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBJCi0g
ICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0RFVEksIGlz
UnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOwotCi0gICAgLy8gaHR0cDovL2NvcmVuaWMub3Jn
IC0gcnVsZXMgbm90IHB1Ymxpc2hlZC4gVGhlIHdvcmQgaXMgUnVzc2lhbiwgc28gb25seSBhbGxv
d2luZyBSdXNzaWFuIGF0IHRoaXMgdGltZSwKLSAgICAvLyBhbHRob3VnaCB3ZSBtYXkgbmVlZCB0
byByZXZpc2UgdGhlIGNoZWNrcyBpZiB0aGlzIGVuZHMgdXAgYmVpbmcgdXNlZCB3aXRoIG90aGVy
IGxhbmd1YWdlcyBzcG9rZW4gaW4gUnVzc2lhLgotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJp
bGxpY09OTEFZTltdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIE8KLSAgICAgICAgMHgwNDNELCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgRU4KLSAgICAgICAgMHgwNDNCLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKLSAgICAg
ICAgMHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQotICAgICAgICAweDA0MzksIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCi0gICAgICAgIDB4MDQzRCAgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIEVOCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFU
Q0hFUyhjeXJpbGxpY09OTEFZTiwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAg
ICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBzYW1lIGFzIGFib3ZlLgotICAgIHN0YXRpYyBjb25z
dCBVQ2hhciBjeXJpbGxpY1NBWVRbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0NDEs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUwotICAgICAgICAweDA0MzAsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBBCi0gICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IFNIT1JUIEkKLSAgICAgICAgMHgwNDQyICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKLSAg
ICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU0FZVCwgaXNS
dXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAvLyBodHRwOi8vcGlyLm9yZy9wcm9k
dWN0cy9vcHItZG9tYWluLyAtIHJ1bGVzIG5vdCBwdWJsaXNoZWQuIEFjY29yZGluZyB0byB0aGUg
cmVnaXN0cnkgc2l0ZSwKLSAgICAvLyB0aGUgaW50ZW5kZWQgYXVkaWVuY2UgaXMgIlJ1c3NpYW4g
YW5kIG90aGVyIFNsYXZpYy1zcGVha2luZyBtYXJrZXRzIi4KLSAgICAvLyBDaHJvbWUgYXBwZWFy
cyB0byBvbmx5IGFsbG93IFJ1c3NpYW4sIHNvIHN0aWNraW5nIHdpdGggdGhhdCBmb3Igbm93Lgot
ICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY09SR1tdID0gewotICAgICAgICAnLicsCi0g
ICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KLSAgICAgICAgMHgwNDQw
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKLSAgICAgICAgMHgwNDMzICAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgR0hFCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFU
Q0hFUyhjeXJpbGxpY09SRywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7Ci0KLSAgICAv
LyBodHRwOi8vY2N0bGQuYnkvcnVsZXMuaHRtbAotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJp
bGxpY0JFTFtdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQzMSwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEJFCi0gICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IElFCi0gICAgICAgIDB4MDQzQiAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCi0gICAgfTsK
LSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0JFTCwgW10oVUNoYXIg
Y2gpIHsKLSAgICAgICAgLy8gUnVzc2lhbiBhbmQgQnllbG9ydXNzaWFuIGxldHRlcnMsIGRpZ2l0
cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAm
JiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0NTYgfHwgY2ggPT0g
MHgwNDVFIHx8IGNoID09IDB4MjAxOSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsK
LSAgICB9KTsKLQotICAgIC8vIGh0dHA6Ly93d3cubmljLmt6L2RvY3MvcG9yeWFkb2tfdm5lZHJl
bml5YV9rYXpfcnUucGRmCi0gICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljS0FaW10gPSB7
Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgwNDlCLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
S0EgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgQQotICAgICAgICAweDA0MzcgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBaRQotICAgIH07
Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNLQVosIFtdKFVDaGFy
IGNoKSB7Ci0gICAgICAgIC8vIEthemFraCBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUg
YWxsb3dlZC4KLSAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8
fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEQ5IHx8IGNoID09IDB4MDQ5MyB8fCBjaCA9PSAw
eDA0OUIgfHwgY2ggPT0gMHgwNEEzIHx8IGNoID09IDB4MDRFOSB8fCBjaCA9PSAweDA0QjEgfHwg
Y2ggPT0gMHgwNEFGIHx8IGNoID09IDB4MDRCQiB8fCBjaCA9PSAweDA0NTYgfHwgaXNBU0NJSURp
Z2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwOi8vdWFuaWMubmV0
L2RvY3MvZG9jdW1lbnRzLXVrci9SdWxlcyUyMG9mJTIwVUtSX3Y0LjAucGRmCi0gICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGN5cmlsbGljVUtSW10gPSB7Ci0gICAgICAgICcuJywKLSAgICAgICAgMHgw
NDQzLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQotICAgICAgICAweDA0M0EsIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBLQQotICAgICAgICAweDA0NDAgIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBFUgotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxs
aWNVS1IsIFtdKFVDaGFyIGNoKSB7Ci0gICAgICAgIC8vIFJ1c3NpYW4gYW5kIFVrcmFpbmlhbiBs
ZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICAgICAgcmV0dXJuIChj
aCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgw
NDkxIHx8IGNoID09IDB4MDQwNCB8fCBjaCA9PSAweDA0NTYgfHwgY2ggPT0gMHgwNDU3IHx8IGlz
QVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gaHR0cDovL3d3
dy5ybmlkcy5ycy9kYXRhL0RPS1VNRU5USS9pZG4tc3JiLXBvbGljeS10ZXJtc29mdXNlLXYxLjQt
ZW5nLnBkZgotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1NSQltdID0gewotICAgICAg
ICAnLicsCi0gICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAg
ICAgIDB4MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgICAgIDB4MDQzMSAg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9T
VUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1NSQiwgW10oVUNoYXIgY2gpIHsKLSAgICAgICAgLy8gU2Vy
YmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICAgICAgcmV0
dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDM4KSB8fCAoY2ggPj0gMHgwNDNBICYmIGNo
IDw9IDB4MDQ0OCkgfHwgY2ggPT0gMHgwNDUyIHx8IGNoID09IDB4MDQ1OCB8fCBjaCA9PSAweDA0
NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QiB8fCBjaCA9PSAweDA0NUYgfHwgaXNB
U0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwOi8vbWFy
bmV0Lm1rL2RvYy9wcmF2aWxuaWstbWstbWtkLnBkZgotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBj
eXJpbGxpY01LRFtdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQzQywgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIEVNCi0gICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIEtBCi0gICAgICAgIDB4MDQzNCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCi0gICAg
fTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY01LRCwgW10oVUNo
YXIgY2gpIHsKLSAgICAgICAgLy8gTWFjZWRvbmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hl
cyBhcmUgYWxsb3dlZC4KLSAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgw
NDM4KSB8fCAoY2ggPj0gMHgwNDNBICYmIGNoIDw9IDB4MDQ0OCkgfHwgY2ggPT0gMHgwNDUzIHx8
IGNoID09IDB4MDQ1NSB8fCBjaCA9PSAweDA0NTggfHwgY2ggPT0gMHgwNDU5IHx8IGNoID09IDB4
MDQ1QSB8fCBjaCA9PSAweDA0NUMgfHwgY2ggPT0gMHgwNDVGIHx8IGlzQVNDSUlEaWdpdChjaCkg
fHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gaHR0cHM6Ly93d3cubW9uLm1uL2NzLwot
ICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY01PTltdID0gewotICAgICAgICAnLicsCi0g
ICAgICAgIDB4MDQzQywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCi0gICAgICAgIDB4MDQz
RSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KLSAgICAgICAgMHgwNDNEICAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRU4KLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRD
SEVTKGN5cmlsbGljTU9OLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBNb25nb2xpYW4gbGV0
dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2gg
Pj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09IDB4MDRF
OSB8fCBjaCA9PSAweDA0QUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAg
fSk7Ci0KLSAgICAvLyBOb3QgYSBrbm93biB0b3AgbGV2ZWwgZG9tYWluIHdpdGggc3BlY2lhbCBy
dWxlcy4KLSAgICByZXR1cm4gTk87Ci19Ci0KLS8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVhbnMg
bm8gbWFwcGluZyBpcyBuZWNlc3NhcnkuCi0vLyBJZiBtYWtlU3RyaW5nIGlzIE5PLCB0aGVuIHJl
dHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHNlbGYgdG8gaW5kaWNhdGUgbWFwcGluZyBpcyBu
ZWNlc3NhcnkuCi0vLyBJZiBtYWtlU3RyaW5nIGlzIFlFUywgdGhlbiByZXR1cm4gdmFsdWUgaXMg
ZWl0aGVyIG5pbCBvciB0aGUgbWFwcGVkIHN0cmluZy4KLXN0YXRpYyBOU1N0cmluZyAqbWFwSG9z
dE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCBlbmNv
ZGUsIEJPT0wgbWFrZVN0cmluZywgQk9PTCAqZXJyb3IpCi17Ci0gICAgaWYgKHJhbmdlLmxlbmd0
aCA+IEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RIKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAot
ICAgIGlmICghW3N0cmluZyBsZW5ndGhdKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAg
IFVDaGFyIHNvdXJjZUJ1ZmZlcltIT1NUX05BTUVfQlVGRkVSX0xFTkdUSF07Ci0gICAgVUNoYXIg
ZGVzdGluYXRpb25CdWZmZXJbSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEhdOwotICAgIAotICAgIGlm
IChlbmNvZGUgJiYgW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiJSIgb3B0aW9uczpOU0xpdGVyYWxT
ZWFyY2ggcmFuZ2U6cmFuZ2VdLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpIHsKLSAgICAgICAgTlNT
dHJpbmcgKnN1YnN0cmluZyA9IFtzdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnJhbmdlXTsKLSAg
ICAgICAgc3Vic3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVTdHJpbmdCeVJl
cGxhY2luZ1BlcmNlbnRFc2NhcGVzKG51bGxwdHIsIChDRlN0cmluZ1JlZilzdWJzdHJpbmcsIENG
U1RSKCIiKSkpOwotICAgICAgICBpZiAoc3Vic3RyaW5nKSB7Ci0gICAgICAgICAgICBzdHJpbmcg
PSBzdWJzdHJpbmc7Ci0gICAgICAgICAgICByYW5nZSA9IE5TTWFrZVJhbmdlKDAsIFtzdHJpbmcg
bGVuZ3RoXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaW50IGxlbmd0aCA9IHJhbmdl
Lmxlbmd0aDsKLSAgICBbc3RyaW5nIGdldENoYXJhY3RlcnM6c291cmNlQnVmZmVyIHJhbmdlOnJh
bmdlXTsKLSAgICAKLSAgICBVRXJyb3JDb2RlIHVlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBV
SUROQUluZm8gcHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOwotICAg
IGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IChlbmNvZGUgPyB1aWRuYV9uYW1lVG9B
U0NJSSA6IHVpZG5hX25hbWVUb1VuaWNvZGUpKCZVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21h
aW5OYW1lVHJhbnNjb2RlcigpLCBzb3VyY2VCdWZmZXIsIGxlbmd0aCwgZGVzdGluYXRpb25CdWZm
ZXIsIEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RILCAmcHJvY2Vzc2luZ0RldGFpbHMsICZ1ZXJyb3Ip
OwotICAgIGlmIChsZW5ndGggJiYgKFVfRkFJTFVSRSh1ZXJyb3IpIHx8IHByb2Nlc3NpbmdEZXRh
aWxzLmVycm9ycykpIHsKLSAgICAgICAgKmVycm9yID0gWUVTOwotICAgICAgICByZXR1cm4gbmls
OwotICAgIH0KLSAgICAKLSAgICBpZiAobnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9PSBsZW5ndGgg
JiYgIW1lbWNtcChzb3VyY2VCdWZmZXIsIGRlc3RpbmF0aW9uQnVmZmVyLCBsZW5ndGggKiBzaXpl
b2YoVUNoYXIpKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoIWVuY29kZSAm
JiAhYWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KGRlc3RpbmF0aW9uQnVmZmVyLCBu
dW1DaGFyYWN0ZXJzQ29udmVydGVkKSAmJiAhYWxsQ2hhcmFjdGVyc0FsbG93ZWRCeVRMRFJ1bGVz
KGRlc3RpbmF0aW9uQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAKLSAgICByZXR1cm4gbWFrZVN0cmluZyA/IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczpkZXN0aW5hdGlvbkJ1ZmZlciBsZW5ndGg6bnVtQ2hhcmFjdGVyc0NvbnZl
cnRlZF0gOiBzdHJpbmc7Ci19Ci0KLUJPT0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdl
KE5TU3RyaW5nICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wgKmVycm9yKQotewotICAgIHJl
dHVybiBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBOTywgTk8sIGVycm9yKSAh
PSBuaWw7Ci19Ci0gCi1CT09MIGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShOU1N0cmlu
ZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MICplcnJvcikKLXsKLSAgICByZXR1cm4gbWFw
SG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgWUVTLCAgTk8sIGVycm9yKSAhPSBuaWw7
Ci19Ci0KLU5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5n
LCBOU1JhbmdlIHJhbmdlKQotewotICAgIEJPT0wgZXJyb3IgPSBOTzsKLSAgICBOU1N0cmluZyAq
aG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIE5PLCBZRVMsICZlcnJv
cik7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiAhaG9z
dCA/IHN0cmluZyA6IGhvc3Q7Ci19Ci0KLU5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdpdGhSYW5n
ZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQotewotICAgIEJPT0wgZXJyb3IgPSBO
TzsKLSAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFu
Z2UsIFlFUywgWUVTLCAmZXJyb3IpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OwotfQotCi1OU1N0cmluZyAqZGVj
b2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICBCT09MIGVycm9yID0gTk87Ci0g
ICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIE5TTWFrZVJh
bmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSksIE5PLCBZRVMsICZlcnJvcik7Ci0gICAgaWYgKGVycm9y
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6IGhvc3Q7
Ci19Ci0KLU5TU3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqc3RyaW5nKQotewotICAg
IEJPT0wgZXJyb3IgPSBOTzsKLSAgICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJh
bmdlKHN0cmluZywgTlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSwgWUVTLCBZRVMsICZl
cnJvcik7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiAh
aG9zdCA/IHN0cmluZyA6IGhvc3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0
TmVlZE1hcHBpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiYgYXJyYXksIEJPT0wgZW5jb2RlKQotewotICAgIC8vIEdlbmVyYWxseSwg
d2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhvc3Qg
bmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGluZy4KLSAgICAvLyBUaGVyZWZvcmUsIHdlIHVz
ZSBuaWwgdG8gaW5kaWNhdGUgbm8gbWFwcGluZyBoZXJlIGFuZCBhbiBlbXB0eSBhcnJheSB0byBp
bmRpY2F0ZSBlcnJvci4KLQotICAgIEJPT0wgZXJyb3IgPSBOTzsKLSAgICBCT09MIG5lZWRzTWFw
cGluZyA9IGVuY29kZSA/IGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShzdHJpbmcsIHJh
bmdlLCAmZXJyb3IpIDogaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKHN0cmluZywgcmFu
Z2UsICZlcnJvcik7Ci0gICAgaWYgKCFlcnJvciAmJiAhbmVlZHNNYXBwaW5nKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgaWYgKCFhcnJheSkKLSAgICAgICAgYXJyYXkgPSBhZG9wdE5TKFtO
U011dGFibGVBcnJheSBuZXddKTsKLQotICAgIGlmICghZXJyb3IpCi0gICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKLX0KLQotc3RhdGljIHZv
aWQgY29sbGVjdFJhbmdlc1RoYXROZWVkRW5jb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5n
ZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCi17Ci0gICAgcmV0dXJu
IGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIFlFUyk7
Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZERlY29kaW5nKE5TU3RyaW5n
ICpzdHJpbmcsIE5TUmFuZ2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5
KQotewotICAgIHJldHVybiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmluZywgcmFu
Z2UsIGFycmF5LCBOTyk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRv
TWFpbFRvVVJMU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcsIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0
aW9uIGYsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQotewotICAgIC8vIEluIGEg
bWFpbHRvOiBVUkwsIGhvc3QgbmFtZXMgY29tZSBhZnRlciBhICdAJyBjaGFyYWN0ZXIgYW5kIGVu
ZCB3aXRoIGEgJz4nIG9yICcsJyBvciAnPycgY2hhcmFjdGVyLgotICAgIC8vIFNraXAgcXVvdGVk
IHN0cmluZ3Mgc28gdGhhdCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29uZnVzZSB1cy4KLSAg
ICAvLyBXaGVuIHdlIGZpbmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFzdCB0aGUgcGFydCBv
ZiB0aGUgVVJMIHRoYXQgY29udGFpbnMgaG9zdCBuYW1lcy4KLSAgICAKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5hbWVPclN0cmluZ1N0
YXJ0Q2hhcmFjdGVycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVy
c0luU3RyaW5nOkAiXCJAPyJdOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
TlNDaGFyYWN0ZXJTZXQ+PiBob3N0TmFtZUVuZENoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQg
Y2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIj4sPyJdOwotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBxdW90ZWRTdHJpbmdDaGFy
YWN0ZXJzID0gW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJp
bmc6QCJcIlxcIl07Ci0gICAgCi0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0cmluZyBs
ZW5ndGhdOwotICAgIE5TUmFuZ2UgcmVtYWluaW5nID0gTlNNYWtlUmFuZ2UoMCwgc3RyaW5nTGVu
Z3RoKTsKLSAgICAKLSAgICB3aGlsZSAoMSkgewotICAgICAgICAvLyBGaW5kIHN0YXJ0IG9mIGhv
c3QgbmFtZSBvciBvZiBxdW90ZWQgc3RyaW5nLgotICAgICAgICBOU1JhbmdlIGhvc3ROYW1lT3JT
dHJpbmdTdGFydCA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdE5hbWVPclN0
cmluZ1N0YXJ0Q2hhcmFjdGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5n
XTsKLSAgICAgICAgaWYgKGhvc3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlvbiA9PSBOU05vdEZv
dW5kKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHVuaWNoYXIgYyA9IFtzdHJpbmcg
Y2hhcmFjdGVyQXRJbmRleDpob3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRpb25dOwotICAgICAg
ICByZW1haW5pbmcubG9jYXRpb24gPSBOU01heFJhbmdlKGhvc3ROYW1lT3JTdHJpbmdTdGFydCk7
Ci0gICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9j
YXRpb247Ci0gICAgICAgIAotICAgICAgICBpZiAoYyA9PSAnPycpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIAotICAgICAgICBpZiAoYyA9PSAnQCcpIHsKLSAgICAgICAgICAgIC8vIEZp
bmQgZW5kIG9mIGhvc3QgbmFtZS4KLSAgICAgICAgICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQg
PSByZW1haW5pbmcubG9jYXRpb247Ci0gICAgICAgICAgICBOU1JhbmdlIGhvc3ROYW1lRW5kID0g
W3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpob3N0TmFtZUVuZENoYXJhY3RlcnMuZ2V0
KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnJlbWFpbmluZ107Ci0gICAgICAgICAgICBCT09MIGRv
bmU7Ci0gICAgICAgICAgICBpZiAoaG9zdE5hbWVFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkg
ewotICAgICAgICAgICAgICAgIGhvc3ROYW1lRW5kLmxvY2F0aW9uID0gc3RyaW5nTGVuZ3RoOwot
ICAgICAgICAgICAgICAgIGRvbmUgPSBZRVM7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IGhvc3ROYW1lRW5kLmxvY2F0aW9uOwotICAg
ICAgICAgICAgICAgIHJlbWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcu
bG9jYXRpb247Ci0gICAgICAgICAgICAgICAgZG9uZSA9IE5POwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgCi0gICAgICAgICAgICAvLyBQcm9jZXNzIGhvc3QgbmFtZSByYW5nZS4KLSAgICAg
ICAgICAgIGYoc3RyaW5nLCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZC5s
b2NhdGlvbiAtIGhvc3ROYW1lU3RhcnQpLCBhcnJheSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlmIChkb25lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KLSAgICAgICAgICAgIEFTU0VSVChj
ID09ICciJyk7Ci0gICAgICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgICAgIE5TUmFu
Z2UgZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVy
RnJvbVNldDpxdW90ZWRTdHJpbmdDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5n
ZTpyZW1haW5pbmddOwotICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hhcmFjdGVyT3JTdHJp
bmdFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgICAgICAgICAgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRleDplc2NhcGVk
Q2hhcmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb25dOwotICAgICAgICAgICAgICAgIHJlbWFpbmlu
Zy5sb2NhdGlvbiA9IE5TTWF4UmFuZ2UoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kKTsKLSAg
ICAgICAgICAgICAgICByZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWluaW5n
LmxvY2F0aW9uOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIElmIHdlIGFy
ZSB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUgc3RyaW5nIGxvb3Ag
YmFjayB0byB0aGUgaG9zdCBuYW1lIGxvb3AuCi0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJyIn
KQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgotICAgICAgICAgICAgICAgIEFTU0VS
VChjID09ICdcXCcpOwotICAgICAgICAgICAgICAgIGlmICghcmVtYWluaW5nLmxlbmd0aCkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxv
Y2F0aW9uICs9IDE7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCAtPSAxOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBhcHBseUhvc3RO
YW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJpbmdSYW5nZUFwcGxp
ZXJGdW5jdGlvbiBmLCBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKLXsKLSAgICAv
LyBGaW5kIGhvc3RuYW1lcy4gVG9vIGJhZCB3ZSBjYW4ndCB1c2UgYW55IHJlYWwgVVJMLXBhcnNp
bmcgY29kZSB0byBkbyB0aGlzLAotICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGRvIGl0IGJlZm9yZSBk
b2luZyBhbGwgdGhlICUtZXNjYXBpbmcsIGFuZCB0aGlzIGlzIHRoZSBvbmx5Ci0gICAgLy8gY29k
ZSB3ZSBoYXZlIHRoYXQgcGFyc2VzIG1haWx0byBVUkxzIGFueXdheS4KLSAgICAKLSAgICAvLyBN
YXliZSB3ZSBzaG91bGQgaW1wbGVtZW50IHRoaXMgdXNpbmcgYSBjaGFyYWN0ZXIgYnVmZmVyIGlu
c3RlYWQ/Ci0gICAgCi0gICAgaWYgKHByb3RvY29sSXMoc3RyaW5nLCAibWFpbHRvIikpIHsKLSAg
ICAgICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoc3RyaW5nLCBmLCBh
cnJheSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgLy8gRmluZCB0aGUgaG9z
dCBuYW1lIGluIGEgaGllcmFyY2hpY2FsIFVSTC4KLSAgICAvLyBJdCBjb21lcyBhZnRlciBhICI6
Ly8iIHNlcXVlbmNlLCB3aXRoIHNjaGVtZSBjaGFyYWN0ZXJzIHByZWNlZGluZy4KLSAgICAvLyBJ
ZiBlbmRzIHdpdGggdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiLCAiLyIsIG9yIGEgIj8i
LgotICAgIC8vIElmIHRoZXJlIGlzIGEgIkAiIGNoYXJhY3RlciwgdGhlIGhvc3QgcGFydCBpcyBq
dXN0IHRoZSBwYXJ0IGFmdGVyIHRoZSAiQCIuCi0gICAgTlNSYW5nZSBzZXBhcmF0b3JSYW5nZSA9
IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjovLyJdOwotICAgIGlmIChzZXBhcmF0b3JSYW5nZS5s
b2NhdGlvbiA9PSBOU05vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gQ2hl
Y2sgdGhhdCBhbGwgY2hhcmFjdGVycyBiZWZvcmUgdGhlIDovLyBhcmUgdmFsaWQgc2NoZW1lIGNo
YXJhY3RlcnMuCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3Rl
clNldD4+IG5vblNjaGVtZUNoYXJhY3RlcnMgPSBbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNl
dFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSstLiJdIGludmVydGVkU2V0XTsKLSAgICBp
ZiAoW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpub25TY2hlbWVDaGFyYWN0ZXJzLmdl
dCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBzZXBhcmF0b3JSYW5nZS5s
b2NhdGlvbildLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07Ci0gICAgCi0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3RUZXJt
aW5hdG9ycyA9IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3Ry
aW5nOkAiOi8/IyJdOwotICAgIAotICAgIC8vIFN0YXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuCi0g
ICAgdW5zaWduZWQgYXV0aG9yaXR5U3RhcnQgPSBOU01heFJhbmdlKHNlcGFyYXRvclJhbmdlKTsK
LSAgICAKLSAgICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KLSAgICBOU1JhbmdlIGhv
c3ROYW1lVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdFRl
cm1pbmF0b3JzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZShhdXRob3Jp
dHlTdGFydCwgc3RyaW5nTGVuZ3RoIC0gYXV0aG9yaXR5U3RhcnQpXTsKLSAgICB1bnNpZ25lZCBo
b3N0TmFtZUVuZCA9IGhvc3ROYW1lVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8g
c3RyaW5nTGVuZ3RoIDogaG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uOwotICAgIAotICAgIC8v
IEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KLSAgICBOU1JhbmdlIHVz
ZXJJbmZvVGVybWluYXRvciA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIkAiIG9wdGlvbnM6MCBy
YW5nZTpOU01ha2VSYW5nZShhdXRob3JpdHlTdGFydCwgaG9zdE5hbWVFbmQgLSBhdXRob3JpdHlT
dGFydCldOwotICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQgPSB1c2VySW5mb1Rlcm1pbmF0b3Iu
bG9jYXRpb24gPT0gTlNOb3RGb3VuZCA/IGF1dGhvcml0eVN0YXJ0IDogTlNNYXhSYW5nZSh1c2Vy
SW5mb1Rlcm1pbmF0b3IpOwotICAgIAotICAgIHJldHVybiBmKHN0cmluZywgTlNNYWtlUmFuZ2Uo
aG9zdE5hbWVTdGFydCwgaG9zdE5hbWVFbmQgLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkpOwotfQot
Ci1zdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBtYXBIb3N0TmFtZXMoTlNTdHJpbmcgKnN0cmlu
ZywgQk9PTCBlbmNvZGUpCi17Ci0gICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXpl
IGZvciB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3Qg
bmVlZCBtYXBwaW5nLgotICAgIAotICAgIGlmIChlbmNvZGUgJiYgW3N0cmluZyBjYW5CZUNvbnZl
cnRlZFRvRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXSkKLSAgICAgICAgcmV0dXJuIHN0
cmluZzsKLSAgICAKLSAgICAvLyBNYWtlIGEgbGlzdCBvZiByYW5nZXMgdGhhdCBhY3R1YWxseSBu
ZWVkIG1hcHBpbmcuCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBob3N0TmFtZVJhbmdl
czsKLSAgICBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmID0gZW5jb2RlID8gY29sbGVjdFJh
bmdlc1RoYXROZWVkRW5jb2RpbmcgOiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWREZWNvZGluZzsKLSAg
ICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VSTFN0cmluZyhzdHJpbmcsIGYsIGhvc3ROYW1lUmFu
Z2VzKTsKLSAgICBpZiAoIWhvc3ROYW1lUmFuZ2VzKQotICAgICAgICByZXR1cm4gc3RyaW5nOwot
Ci0gICAgaWYgKCFbaG9zdE5hbWVSYW5nZXMgY291bnRdKQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIAotICAgIC8vIERvIHRoZSBtYXBwaW5nLgotICAgIGF1dG8gbXV0YWJsZUNvcHkgPSBhZG9w
dE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsKLSAgICB1bnNpZ25lZCBpID0gW2hvc3ROYW1lUmFu
Z2VzIGNvdW50XTsKLSAgICB3aGlsZSAoaS0tKSB7Ci0gICAgICAgIE5TUmFuZ2UgaG9zdE5hbWVS
YW5nZSA9IFtbaG9zdE5hbWVSYW5nZXMgb2JqZWN0QXRJbmRleDppXSByYW5nZVZhbHVlXTsKLSAg
ICAgICAgTlNTdHJpbmcgKm1hcHBlZEhvc3ROYW1lID0gZW5jb2RlID8gZW5jb2RlSG9zdE5hbWVX
aXRoUmFuZ2Uoc3RyaW5nLCBob3N0TmFtZVJhbmdlKSA6IGRlY29kZUhvc3ROYW1lV2l0aFJhbmdl
KHN0cmluZywgaG9zdE5hbWVSYW5nZSk7Ci0gICAgICAgIFttdXRhYmxlQ29weSByZXBsYWNlQ2hh
cmFjdGVyc0luUmFuZ2U6aG9zdE5hbWVSYW5nZSB3aXRoU3RyaW5nOm1hcHBlZEhvc3ROYW1lXTsK
LSAgICB9Ci0gICAgcmV0dXJuIG11dGFibGVDb3B5OwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE5T
U3RyaW5nPiBzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShOU1N0cmluZyAqc3RyaW5nKQotewot
ICAgIGF1dG8gdHJpbW1lZCA9IGFkb3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwotICAgIENG
U3RyaW5nVHJpbVdoaXRlc3BhY2UoKF9fYnJpZGdlIENGTXV0YWJsZVN0cmluZ1JlZil0cmltbWVk
LmdldCgpKTsKLSAgICByZXR1cm4gdHJpbW1lZDsKLX0KLQotTlNVUkwgKlVSTEJ5VHJ1bmNhdGlu
Z09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5
cGUgY29tcG9uZW50KQotewotICAgIGlmICghVVJMKQotICAgICAgICByZXR1cm4gbmlsOwotICAg
IAotICAgIENGUmFuZ2UgZnJhZ1JnID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKF9f
YnJpZGdlIENGVVJMUmVmKVVSTCwgY29tcG9uZW50LCBudWxscHRyKTsKLSAgICBpZiAoZnJhZ1Jn
LmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQotICAgICAgICByZXR1cm4gVVJMOwotCi0gICAgVmVj
dG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gdXJsQnl0ZXMoVVJMX0JZVEVTX0JV
RkZFUl9MRU5HVEgpOwotICAgIENGSW5kZXggbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVzKChfX2Jy
aWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgdXJsQnl0ZXMuc2l6ZSgpKTsKLSAg
ICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKLSAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOwotICAgICAgICB1cmxCeXRlcy5n
cm93KG51bUJ5dGVzKTsKLSAgICAgICAgQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYp
VVJMLCB1cmxCeXRlcy5kYXRhKCksIG51bUJ5dGVzKTsKLSAgICB9Ci0KLSAgICBDRlVSTFJlZiBy
ZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZy
YWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7Ci0gICAg
aWYgKCFyZXN1bHQpCi0gICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxw
dHIsIHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2Rp
bmdJU09MYXRpbjEsIG51bGxwdHIpOwotICAgICAgICAKLSAgICByZXR1cm4gcmVzdWx0ID8gQ0ZC
cmlkZ2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKLX0KLQotc3RhdGljIE5TVVJMICpVUkxCeVJl
bW92aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKLXsKLSAgICByZXR1cm4gVVJMQnlU
cnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KFVSTCwga0NGVVJMQ29tcG9uZW50
UmVzb3VyY2VTcGVjaWZpZXIpOwotfQotCi1OU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRh
LCBOU1VSTCAqYmFzZVVSTCkKLXsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgCi0gICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsKLSAgICBzaXplX3QgbGVuZ3RoID0gW2Rh
dGEgbGVuZ3RoXTsKLSAgICBpZiAobGVuZ3RoID4gMCkgewotICAgICAgICAvLyB3b3JrIGFyb3Vu
ZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKC4uLCBU
UlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21wb25lbnRzLgotICAgICAgICBiYXNlVVJM
ID0gVVJMQnlSZW1vdmluZ1Jlc291cmNlU3BlY2lmaWVyKGJhc2VVUkwpOwotICAgICAgICAKLSAg
ICAgICAgY29uc3QgVUludDggKmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDgqPihbZGF0
YSBieXRlc10pOwotICAgICAgICAKLSAgICAgICAgLy8gQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdp
dGhCeXRlcyB3b3VsZCBjb21wbGFpbiB0byBjb25zb2xlIGlmIHdlIHBhc3NlZCBhIHBhdGggdG8g
aXQuCi0gICAgICAgIGlmIChieXRlc1swXSA9PSAnLycgJiYgIWJhc2VVUkwpCi0gICAgICAgICAg
ICByZXR1cm4gbmlsOwotICAgICAgICAKLSAgICAgICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhl
cmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hl
biByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKLSAgICAgICAgLy8gKGUuZyBjYWxscyB0byBOU1VS
TCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVn
YWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAotICAgICAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBt
YWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIHNo
aWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCi0gICAgICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGlu
IDEgaW4gdGhvc2UgY2FzZXMuCi0gICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENG
VVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0g
ICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2luZ1JlbGVh
c2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBieXRlcywgbGVuZ3Ro
LCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkws
IFlFUykpOwotICAgIH0gZWxzZQotICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAIiJdOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLXN0YXRpYyBOU0RhdGEgKmRhdGFXaXRo
VXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCi17Ci0gICAgTlNEYXRhICp1c2VyVHlw
ZWREYXRhID0gW3N0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107
Ci0gICAgQVNTRVJUKHVzZXJUeXBlZERhdGEpOwotICAgIAotICAgIGNvbnN0IFVJbnQ4KiBpbkJ5
dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUludDggKj4oW3VzZXJUeXBlZERhdGEgYnl0ZXNdKTsK
LSAgICBpbnQgaW5MZW5ndGggPSBbdXNlclR5cGVkRGF0YSBsZW5ndGhdOwotICAgIGlmICghaW5M
ZW5ndGgpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgY2hhciogb3V0Qnl0ZXMgPSBz
dGF0aWNfY2FzdDxjaGFyICo+KG1hbGxvYyhpbkxlbmd0aCAqIDMpKTsgLy8gbGFyZ2UgZW5vdWdo
IHRvICUtZXNjYXBlIGV2ZXJ5IGNoYXJhY3RlcgotICAgIGNoYXIqIHAgPSBvdXRCeXRlczsKLSAg
ICBpbnQgb3V0TGVuZ3RoID0gMDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGluTGVuZ3RoOyBp
KyspIHsKLSAgICAgICAgVUludDggYyA9IGluQnl0ZXNbaV07Ci0gICAgICAgIGlmIChjIDw9IDB4
MjAgfHwgYyA+PSAweDdmKSB7Ci0gICAgICAgICAgICAqcCsrID0gJyUnOwotICAgICAgICAgICAg
KnArKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAgKnArKyA9
IGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAgb3V0TGVuZ3RoICs9
IDM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAqcCsrID0gYzsKLSAgICAgICAgICAg
IG91dExlbmd0aCsrOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBbTlNEYXRh
IGRhdGFXaXRoQnl0ZXNOb0NvcHk6b3V0Qnl0ZXMgbGVuZ3RoOm91dExlbmd0aF07IC8vIGFkb3B0
cyBvdXRCeXRlcwotfQotCi1OU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhOU1N0cmluZyAq
c3RyaW5nLCBOU1VSTCAqbnNVUkwpCi17Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICBhdXRvIG1hcHBlZFN0cmluZyA9IG1hcEhvc3ROYW1lcyhzdHJpbmdCeVRy
aW1taW5nV2hpdGVzcGFjZShzdHJpbmcpLmdldCgpLCBZRVMpOwotICAgIGlmICghbWFwcGVkU3Ry
aW5nKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgLy8gTGV0J3MgY2hlY2sgd2hldGhlciB0
aGUgVVJMIGlzIGJvZ3VzLgotICAgIFVSTCB1cmwgeyBVUkwgeyBuc1VSTCB9LCBtYXBwZWRTdHJp
bmcuZ2V0KCkgfTsKLSAgICBpZiAoIXVybC5jcmVhdGVDRlVSTCgpKQotICAgICAgICByZXR1cm4g
bmlsOwotCi0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODYwNTcKLSAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgdXJsLmNyZWF0ZUNG
VVJMIGluc3RlYWQgb2YgdXNpbmcgZGlyZWN0bHkgQ0ZVUkwgcGFyc2luZyByb3V0aW5lcy4KLSAg
ICBOU0RhdGEgKmRhdGEgPSBkYXRhV2l0aFVzZXJUeXBlZFN0cmluZyhtYXBwZWRTdHJpbmcuZ2V0
KCkpOwotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiIl07Ci0KLSAgICByZXR1cm4gVVJMV2l0aERhdGEoZGF0YSwgbnNVUkwpOwotfQotCi1OU1VS
TCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZ0RlcHJlY2F0ZWQoTlNTdHJpbmcgKnN0cmluZywgTlNV
UkwgKlVSTCkKLXsKLSAgICBpZiAoIXN0cmluZykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IE5TVVJMICpyZXN1bHQgPSBVUkxXaXRoVXNlclR5cGVkU3RyaW5nKHN0cmluZywgVVJMKTsKLSAg
ICBpZiAoIXJlc3VsdCkgewotICAgICAgICBOU0RhdGEgKnJlc3VsdERhdGEgPSBkYXRhV2l0aFVz
ZXJUeXBlZFN0cmluZyhzdHJpbmcpOwotICAgICAgICBpZiAoIXJlc3VsdERhdGEpCi0gICAgICAg
ICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKLSAgICAgICAgcmVzdWx0ID0g
VVJMV2l0aERhdGEocmVzdWx0RGF0YSwgVVJMKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi1zdGF0aWMgQk9PTCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoTlNVUkwg
KlVSTCkKLXsKLSAgICBDRlJhbmdlIHJhbmdlV2l0aFNlcGFyYXRvcnM7Ci0gICAgQ0ZVUkxHZXRC
eXRlUmFuZ2VGb3JDb21wb25lbnQoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwga0NGVVJMQ29tcG9u
ZW50UXVlcnksICZyYW5nZVdpdGhTZXBhcmF0b3JzKTsKLSAgICBpZiAocmFuZ2VXaXRoU2VwYXJh
dG9ycy5sb2NhdGlvbiAhPSBrQ0ZOb3RGb3VuZCAmJiByYW5nZVdpdGhTZXBhcmF0b3JzLmxlbmd0
aCA9PSAxKQotICAgICAgICByZXR1cm4gWUVTOwotCi0gICAgcmV0dXJuIE5POwotfQotCi1OU0Rh
dGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlw
ZSBjb21wb25lbnRUeXBlKQotewotICAgIFZlY3RvcjxVSW50OCwgVVJMX0JZVEVTX0JVRkZFUl9M
RU5HVEg+IGFsbEJ5dGVzQnVmZmVyKFVSTF9CWVRFU19CVUZGRVJfTEVOR1RIKTsKLSAgICBDRklu
ZGV4IGJ5dGVzRmlsbGVkID0gQ0ZVUkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBh
bGxCeXRlc0J1ZmZlci5kYXRhKCksIGFsbEJ5dGVzQnVmZmVyLnNpemUoKSk7Ci0gICAgaWYgKGJ5
dGVzRmlsbGVkID09IC0xKSB7Ci0gICAgICAgIENGSW5kZXggYnl0ZXNUb0FsbG9jYXRlID0gQ0ZV
UkxHZXRCeXRlcygoX19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBudWxscHRyLCAwKTsKLSAgICAgICAg
YWxsQnl0ZXNCdWZmZXIuZ3JvdyhieXRlc1RvQWxsb2NhdGUpOwotICAgICAgICBieXRlc0ZpbGxl
ZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgYWxsQnl0ZXNCdWZmZXIu
ZGF0YSgpLCBieXRlc1RvQWxsb2NhdGUpOwotICAgIH0KLSAgICAKLSAgICBjb25zdCBDRlVSTENv
bXBvbmVudFR5cGUgY29tcGxldGVVUkwgPSAoQ0ZVUkxDb21wb25lbnRUeXBlKS0xOwotICAgIENG
UmFuZ2UgcmFuZ2U7Ci0gICAgaWYgKGNvbXBvbmVudFR5cGUgIT0gY29tcGxldGVVUkwpIHsKLSAg
ICAgICAgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMLCBjb21wb25lbnRUeXBlLCBudWxscHRyKTsKLSAgICAgICAgaWYgKHJhbmdlLmxv
Y2F0aW9uID09IGtDRk5vdEZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9IGVs
c2UgewotICAgICAgICByYW5nZS5sb2NhdGlvbiA9IDA7Ci0gICAgICAgIHJhbmdlLmxlbmd0aCA9
IGJ5dGVzRmlsbGVkOwotICAgIH0KLSAgICAKLSAgICBOU0RhdGEgKmNvbXBvbmVudERhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6YWxsQnl0ZXNCdWZmZXIuZGF0YSgpICsgcmFuZ2UubG9jYXRp
b24gbGVuZ3RoOnJhbmdlLmxlbmd0aF07IAotICAgIAotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KmJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbY29tcG9uZW50RGF0
YSBieXRlc10pOwotICAgIE5TTXV0YWJsZURhdGEgKnJlc3VsdERhdGEgPSBbTlNNdXRhYmxlRGF0
YSBkYXRhXTsKLSAgICAvLyBOT1RFOiBhZGQgbGVhZGluZyAnPycgdG8gcXVlcnkgc3RyaW5ncyBu
b24temVybyBsZW5ndGggcXVlcnkgc3RyaW5ncy4KLSAgICAvLyBOT1RFOiByZXRhaW4gcXVlc3Rp
b24tbWFyayBvbmx5IHF1ZXJ5IHN0cmluZ3MuCi0gICAgaWYgKGNvbXBvbmVudFR5cGUgPT0ga0NG
VVJMQ29tcG9uZW50UXVlcnkpIHsKLSAgICAgICAgaWYgKHJhbmdlLmxlbmd0aCA+IDAgfHwgaGFz
UXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKFVSTCkpCi0gICAgICAgICAgICBbcmVzdWx0RGF0
YSBhcHBlbmRCeXRlczoiPyIgbGVuZ3RoOjFdOyAgICAKLSAgICB9Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCByYW5nZS5sZW5ndGg7IGkrKykgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBi
eXRlc1tpXTsKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N2YpIHsKLSAgICAgICAg
ICAgIGNoYXIgZXNjYXBlZFszXTsKLSAgICAgICAgICAgIGVzY2FwZWRbMF0gPSAnJSc7Ci0gICAg
ICAgICAgICBlc2NhcGVkWzFdID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAg
ICAgICAgICBlc2NhcGVkWzJdID0gbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoYyk7Ci0gICAg
ICAgICAgICBbcmVzdWx0RGF0YSBhcHBlbmRCeXRlczplc2NhcGVkIGxlbmd0aDozXTsgICAgCi0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjaGFyIGJbMV07Ci0gICAgICAgICAgICBiWzBd
ID0gYzsKLSAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmIgbGVuZ3RoOjFdOyAg
ICAKLSAgICAgICAgfSAgICAgICAgICAgICAgIAotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVz
dWx0RGF0YTsKLX0KLQotc3RhdGljIE5TVVJMICpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vi
c2VxdWVudENoYXJhY3RlcihOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50
KQotewotICAgIENGUmFuZ2UgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBjb21wb25lbnQsIDApOwotICAgIGlmIChyYW5nZS5sb2Nh
dGlvbiA9PSBrQ0ZOb3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFVSTDsKLSAgICAKLSAgICAvLyBS
ZW1vdmUgb25lIHN1YnNlcXVlbnQgY2hhcmFjdGVyLgotICAgIHJhbmdlLmxlbmd0aCsrOwotCi0g
ICAgVmVjdG9yPFVJbnQ4LCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYnVmZmVyKFVSTF9CWVRF
U19CVUZGRVJfTEVOR1RIKTsKLSAgICBDRkluZGV4IG51bUJ5dGVzID0gQ0ZVUkxHZXRCeXRlcygo
X19icmlkZ2UgQ0ZVUkxSZWYpVVJMLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLSAg
ICBpZiAobnVtQnl0ZXMgPT0gLTEpIHsKLSAgICAgICAgbnVtQnl0ZXMgPSBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIG51bGxwdHIsIDApOwotICAgICAgICBidWZmZXIuZ3Jv
dyhudW1CeXRlcyk7Ci0gICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVS
TCwgYnVmZmVyLmRhdGEoKSwgbnVtQnl0ZXMpOwotICAgIH0KLSAgICBVSW50OCogdXJsQnl0ZXMg
PSBidWZmZXIuZGF0YSgpOwotICAgICAgICAKLSAgICBpZiAobnVtQnl0ZXMgPCByYW5nZS5sb2Nh
dGlvbikKLSAgICAgICAgcmV0dXJuIFVSTDsKLSAgICBpZiAobnVtQnl0ZXMgPCByYW5nZS5sb2Nh
dGlvbiArIHJhbmdlLmxlbmd0aCkKLSAgICAgICAgcmFuZ2UubGVuZ3RoID0gbnVtQnl0ZXMgLSBy
YW5nZS5sb2NhdGlvbjsKLSAgICAgICAgCi0gICAgbWVtbW92ZSh1cmxCeXRlcyArIHJhbmdlLmxv
Y2F0aW9uLCB1cmxCeXRlcyArIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoLCBudW1CeXRl
cyAtIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKTsKLSAgICAKLSAgICBDRlVSTFJlZiBy
ZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMg
LSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cik7Ci0gICAgaWYg
KCFyZXN1bHQpCi0gICAgICAgIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIs
IHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09M
YXRpbjEsIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIAotICAgIHJldHVybiByZXN1bHQgPyBD
RkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOwotfQotCi1OU1VSTCAqVVJMQnlSZW1vdmlu
Z1VzZXJJbmZvKE5TVVJMICpVUkwpCi17Ci0gICAgcmV0dXJuIFVSTEJ5UmVtb3ZpbmdDb21wb25l
bnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKFVSTCwga0NGVVJMQ29tcG9uZW50VXNlckluZm8pOwot
fQotCiBOU1VSTCAqVVJMQnlDYW5vbmljYWxpemluZ1VSTChOU1VSTCAqVVJMKQogewogICAgIFJl
dGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFs
bG9jXSBpbml0V2l0aFVSTDpVUkxdKTsKQEAgLTEwNDksMjAzICs1Nyw0IEBAIE5TVVJMICpVUkxC
eUNhbm9uaWNhbGl6aW5nVVJMKE5TVVJMICpVUkwpCiAgICAgcmV0dXJuIFtbbmV3VVJMIHJldGFp
bl0gYXV0b3JlbGVhc2VdOwogfQogCi1OU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqVVJM
KQotewotICAgIFVJbnQ4ICpidWZmZXIgPSAoVUludDggKiltYWxsb2MoVVJMX0JZVEVTX0JVRkZF
Ul9MRU5HVEgpOwotICAgIENGSW5kZXggYnl0ZXNGaWxsZWQgPSBDRlVSTEdldEJ5dGVzKChfX2Jy
aWRnZSBDRlVSTFJlZilVUkwsIGJ1ZmZlciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEgpOwotICAg
IGlmIChieXRlc0ZpbGxlZCA9PSAtMSkgewotICAgICAgICBDRkluZGV4IGJ5dGVzVG9BbGxvY2F0
ZSA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgbnVsbHB0ciwgMCk7Ci0g
ICAgICAgIGJ1ZmZlciA9IChVSW50OCAqKXJlYWxsb2MoYnVmZmVyLCBieXRlc1RvQWxsb2NhdGUp
OwotICAgICAgICBieXRlc0ZpbGxlZCA9IENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVm
KVVSTCwgYnVmZmVyLCBieXRlc1RvQWxsb2NhdGUpOwotICAgICAgICBBU1NFUlQoYnl0ZXNGaWxs
ZWQgPT0gYnl0ZXNUb0FsbG9jYXRlKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gYnVmZmVyIGlzIGFk
b3B0ZWQgYnkgdGhlIE5TRGF0YQotICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlc05vQ29weTpidWZmZXIgbGVuZ3RoOmJ5dGVzRmlsbGVkIGZyZWVXaGVuRG9uZTpZRVNdOwot
ICAgIAotICAgIE5TVVJMICpiYXNlVVJMID0gKF9fYnJpZGdlIE5TVVJMICopQ0ZVUkxHZXRCYXNl
VVJMKChfX2JyaWRnZSBDRlVSTFJlZilVUkwpOwotICAgIGlmIChiYXNlVVJMKQotICAgICAgICBy
ZXR1cm4gb3JpZ2luYWxVUkxEYXRhKFVSTFdpdGhEYXRhKGRhdGEsIGJhc2VVUkwpKTsKLSAgICBy
ZXR1cm4gZGF0YTsKLX0KLQotc3RhdGljIENGU3RyaW5nUmVmIGNyZWF0ZVN0cmluZ1dpdGhFc2Nh
cGVkVW5zYWZlQ2hhcmFjdGVycyhDRlN0cmluZ1JlZiBzdHJpbmcpCi17Ci0gICAgQ0ZJbmRleCBs
ZW5ndGggPSBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcpOwotICAgIFZlY3RvcjxVQ2hhciwgVVJM
X0JZVEVTX0JVRkZFUl9MRU5HVEg+IHNvdXJjZUJ1ZmZlcihsZW5ndGgpOwotICAgIENGU3RyaW5n
R2V0Q2hhcmFjdGVycyhzdHJpbmcsIENGUmFuZ2VNYWtlKDAsIGxlbmd0aCksIHNvdXJjZUJ1ZmZl
ci5kYXRhKCkpOwotICAgIAotICAgIFZlY3RvcjxVQ2hhciwgVVJMX0JZVEVTX0JVRkZFUl9MRU5H
VEg+IG91dEJ1ZmZlcjsKLSAgICAKLSAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3Vz
Q29kZVBvaW50OwotICAgIENGSW5kZXggaSA9IDA7Ci0gICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsK
LSAgICAgICAgVUNoYXIzMiBjOwotICAgICAgICBVMTZfTkVYVChzb3VyY2VCdWZmZXIsIGksIGxl
bmd0aCwgYykKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0xvb2thbGlrZUNoYXJhY3RlcihwcmV2
aW91c0NvZGVQb2ludCwgYykpIHsKLSAgICAgICAgICAgIHVpbnQ4X3QgdXRmOEJ1ZmZlcls0XTsK
LSAgICAgICAgICAgIENGSW5kZXggb2Zmc2V0ID0gMDsKLSAgICAgICAgICAgIFVCb29sIGZhaWx1
cmUgPSBmYWxzZTsKLSAgICAgICAgICAgIFU4X0FQUEVORCh1dGY4QnVmZmVyLCBvZmZzZXQsIDQs
IGMsIGZhaWx1cmUpCi0gICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBmb3IgKENGSW5kZXggaiA9IDA7IGogPCBvZmZzZXQ7ICsraikgewotICAg
ICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQoJyUnKTsKLSAgICAgICAgICAgICAgICBvdXRC
dWZmZXIuYXBwZW5kKHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KHV0ZjhCdWZmZXJbal0pKTsK
LSAgICAgICAgICAgICAgICBvdXRCdWZmZXIuYXBwZW5kKGxvd2VyTmliYmxlVG9BU0NJSUhleERp
Z2l0KHV0ZjhCdWZmZXJbal0pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIFVDaGFyIHV0ZjE2QnVmZmVyWzJdOwotICAgICAgICAgICAgQ0ZJbmRleCBvZmZz
ZXQgPSAwOwotICAgICAgICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOwotICAgICAgICAgICAg
VTE2X0FQUEVORCh1dGYxNkJ1ZmZlciwgb2Zmc2V0LCAyLCBjLCBmYWlsdXJlKQotICAgICAgICAg
ICAgQVNTRVJUKCFmYWlsdXJlKTsKLSAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBqID0gMDsgaiA8
IG9mZnNldDsgKytqKQotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXRmMTZCdWZm
ZXJbal0pOwotICAgICAgICB9Ci0gICAgICAgIHByZXZpb3VzQ29kZVBvaW50ID0gYzsKLSAgICB9
Ci0gICAgCi0gICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwg
b3V0QnVmZmVyLmRhdGEoKSwgb3V0QnVmZmVyLnNpemUoKSk7Ci19Ci0KLU5TU3RyaW5nICp1c2Vy
VmlzaWJsZVN0cmluZyhOU1VSTCAqVVJMKQotewotICAgIE5TRGF0YSAqZGF0YSA9IG9yaWdpbmFs
VVJMRGF0YShVUkwpOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJlZm9yZSA9IHN0YXRpY19j
YXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihbZGF0YSBieXRlc10pOwotICAgIGludCBsZW5ndGgg
PSBbZGF0YSBsZW5ndGhdOwotICAgIAotICAgIGJvb2wgbWF5TmVlZEhvc3ROYW1lRGVjb2Rpbmcg
PSBmYWxzZTsKLSAgICAKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gYmVmb3JlOwotICAg
IGludCBidWZmZXJMZW5ndGggPSAobGVuZ3RoICogMykgKyAxOwotICAgIFZlY3RvcjxjaGFyLCBV
UkxfQllURVNfQlVGRkVSX0xFTkdUSD4gYWZ0ZXIoYnVmZmVyTGVuZ3RoKTsgLy8gbGFyZ2UgZW5v
dWdoIHRvICUtZXNjYXBlIGV2ZXJ5IGNoYXJhY3RlcgotICAgIGNoYXIgKnEgPSBhZnRlci5kYXRh
KCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICB1bnNp
Z25lZCBjaGFyIGMgPSBwW2ldOwotICAgICAgICAvLyB1bmVzY2FwZSBlc2NhcGUgc2VxdWVuY2Vz
IHRoYXQgaW5kaWNhdGUgYnl0ZXMgZ3JlYXRlciB0aGFuIDB4N2YKLSAgICAgICAgaWYgKGMgPT0g
JyUnICYmIChpICsgMSA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAmJiBp
ICsgMiA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMl0pKSB7Ci0gICAgICAgICAg
ICBhdXRvIHUgPSB0b0FTQ0lJSGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKLSAgICAgICAg
ICAgIGlmICh1ID4gMHg3ZikgewotICAgICAgICAgICAgICAgIC8vIHVuZXNjYXBlCi0gICAgICAg
ICAgICAgICAgKnErKyA9IHU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IC8vIGRvIG5vdCB1bmVzY2FwZQotICAgICAgICAgICAgICAgICpxKysgPSBwW2ldOwotICAgICAg
ICAgICAgICAgICpxKysgPSBwW2kgKyAxXTsKLSAgICAgICAgICAgICAgICAqcSsrID0gcFtpICsg
Ml07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAqcSsrID0gYzsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gQ2hl
Y2sgZm9yICJ4bi0tIiBpbiBhbiBlZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5Lgot
ICAgICAgICAgICAgaWYgKGMgPT0gJy0nICYmIGkgPj0gMyAmJiAhbWF5TmVlZEhvc3ROYW1lRGVj
b2RpbmcgJiYgKHFbLTRdIHwgMHgyMCkgPT0gJ3gnICYmIChxWy0zXSB8IDB4MjApID09ICduJyAm
JiBxWy0yXSA9PSAnLScpCi0gICAgICAgICAgICAgICAgbWF5TmVlZEhvc3ROYW1lRGVjb2Rpbmcg
PSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgICpxID0gJ1wwJzsKLSAgICAKLSAgICAvLyBD
aGVjayBzdHJpbmcgdG8gc2VlIGlmIGl0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gZGlzcGxheSB1c2lu
ZyBVVEYtOCAgCi0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiByZXN1bHQgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6YWZ0ZXIuZGF0YSgpXTsKLSAgICBpZiAoIXJlc3VsdCkgewotICAg
ICAgICAvLyBDb3VsZCBub3QgY29udmVydCB0byBVVEYtOC4KLSAgICAgICAgLy8gQ29udmVydCBj
aGFyYWN0ZXJzIGdyZWF0ZXIgdGhhbiAweDdmIHRvIGVzY2FwZSBzZXF1ZW5jZXMuCi0gICAgICAg
IC8vIFNoaWZ0IGN1cnJlbnQgc3RyaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgotICAgICAg
ICAvLyB0aGVuIHdlIHdpbGwgY29weSBiYWNrIGJ5dGVzIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVm
ZmVyIAotICAgICAgICAvLyBhcyB3ZSBjb252ZXJ0LgotICAgICAgICBpbnQgYWZ0ZXJsZW5ndGgg
PSBxIC0gYWZ0ZXIuZGF0YSgpOwotICAgICAgICBjaGFyICpwID0gYWZ0ZXIuZGF0YSgpICsgYnVm
ZmVyTGVuZ3RoIC0gYWZ0ZXJsZW5ndGggLSAxOwotICAgICAgICBtZW1tb3ZlKHAsIGFmdGVyLmRh
dGEoKSwgYWZ0ZXJsZW5ndGggKyAxKTsgLy8gY29waWVzIHRyYWlsaW5nICdcMCcKLSAgICAgICAg
Y2hhciAqcSA9IGFmdGVyLmRhdGEoKTsKLSAgICAgICAgd2hpbGUgKCpwKSB7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIGMgPSAqcDsKLSAgICAgICAgICAgIGlmIChjID4gMHg3ZikgewotICAg
ICAgICAgICAgICAgICpxKysgPSAnJSc7Ci0gICAgICAgICAgICAgICAgKnErKyA9IHVwcGVyTmli
YmxlVG9BU0NJSUhleERpZ2l0KGMpOwotICAgICAgICAgICAgICAgICpxKysgPSBsb3dlck5pYmJs
ZVRvQVNDSUlIZXhEaWdpdChjKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
ICpxKysgPSAqcDsKLSAgICAgICAgICAgIHArKzsKLSAgICAgICAgfQotICAgICAgICAqcSA9ICdc
MCc7Ci0gICAgICAgIHJlc3VsdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRl
ci5kYXRhKCldOwotICAgIH0KLSAgICAKLSAgICBpZiAobWF5TmVlZEhvc3ROYW1lRGVjb2Rpbmcp
IHsKLSAgICAgICAgLy8gRklYTUU6IElzIGl0IGdvb2QgdG8gaWdub3JlIHRoZSBmYWlsdXJlIG9m
IG1hcEhvc3ROYW1lcyBhbmQga2VlcCByZXN1bHQgaW50YWN0PwotICAgICAgICBhdXRvIG1hcHBl
ZFJlc3VsdCA9IG1hcEhvc3ROYW1lcyhyZXN1bHQuZ2V0KCksIE5PKTsKLSAgICAgICAgaWYgKG1h
cHBlZFJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IG1hcHBlZFJlc3VsdDsKLSAgICB9Ci0K
LSAgICByZXN1bHQgPSBbcmVzdWx0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBp
bmddOwotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBl
ZFVuc2FmZUNoYXJhY3RlcnMoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSkpOwot
fQotCi1CT09MIGlzVXNlclZpc2libGVVUkwoTlNTdHJpbmcgKnN0cmluZykKLXsKLSAgICBCT09M
IHZhbGlkID0gWUVTOwotICAgIC8vIGdldCBidWZmZXIKLSAgICAKLSAgICBjaGFyIHN0YXRpY19i
dWZmZXJbMTAyNF07Ci0gICAgY29uc3QgY2hhciAqcDsKLSAgICBCT09MIHN1Y2Nlc3MgPSBDRlN0
cmluZ0dldENTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZywgc3RhdGljX2J1ZmZl
ciwgMTAyMywga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKLSAgICBwID0gc3VjY2VzcyA/IHN0YXRp
Y19idWZmZXIgOiBbc3RyaW5nIFVURjhTdHJpbmddOwotICAgIAotICAgIGludCBsZW5ndGggPSBz
dHJsZW4ocCk7Ci0gICAgCi0gICAgLy8gY2hlY2sgZm9yIGNoYXJhY3RlcnMgPD0gMHgyMCBvciA+
PTB4N2YsICUtZXNjYXBlIHNlcXVlbmNlcyBvZiAlN2YsIGFuZCB4bi0tLCB0aGVzZQotICAgIC8v
IGFyZSB0aGUgdGhpbmdzIHRoYXQgd2lsbCBsZWFkIF93ZWJfdXNlclZpc2libGVTdHJpbmcgdG8g
YWN0dWFsbHkgY2hhbmdlIHRoaW5ncy4KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBbaV07Ci0gICAgICAgIC8vIGVzY2Fw
ZSBjb250cm9sIGNoYXJhY3RlcnMsIHNwYWNlLCBhbmQgZGVsZXRlCi0gICAgICAgIGlmIChjIDw9
IDB4MjAgfHwgYyA9PSAweDdmKSB7Ci0gICAgICAgICAgICB2YWxpZCA9IE5POwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3Ro
ICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAxXSkpICYmIGkgKyAyIDwgbGVuZ3RoICYmIGlzQVND
SUlIZXhEaWdpdChwW2kgKyAyXSkpIHsKLSAgICAgICAgICAgIGF1dG8gdSA9IHRvQVNDSUlIZXhW
YWx1ZShwW2kgKyAxXSwgcFtpICsgMl0pOwotICAgICAgICAgICAgaWYgKHUgPiAweDdmKSB7Ci0g
ICAgICAgICAgICAgICAgdmFsaWQgPSBOTzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIC8vIENoZWNrIGZvciAieG4tLSIgaW4gYW4gZWZmaWNpZW50LCBub24tY2FzZS1zZW5zaXRp
dmUsIHdheS4KLSAgICAgICAgICAgIGlmIChjID09ICctJyAmJiBpID49IDMgJiYgKHBbaSAtIDNd
IHwgMHgyMCkgPT0gJ3gnICYmIChwW2kgLSAyXSB8IDB4MjApID09ICduJyAmJiBwW2kgLSAxXSA9
PSAnLScpIHsKLSAgICAgICAgICAgICAgICB2YWxpZCA9IE5POwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiB2
YWxpZDsKLX0KLQotTlNSYW5nZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICpzdHJpbmcpCi17
Ci0gICAgTlNSYW5nZSBjb2xvbiA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIjoiXTsKLSAgICBp
ZiAoY29sb24ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCAmJiBjb2xvbi5sb2NhdGlvbiA+IDApIHsK
LSAgICAgICAgTlNSYW5nZSBzY2hlbWUgPSB7MCwgY29sb24ubG9jYXRpb259OwotICAgICAgICAv
KgotICAgICAgICAgVGhpcyBzdHVmZiBpcyB2ZXJ5IGV4cGVuc2l2ZS4gIDEwLTE1IG1zZWMgb24g
YSAyeDEuMkdIei4gIElmIG5vdCBjYWNoZWQgaXQgc3dhbXBzCi0gICAgICAgICBldmVyeXRoaW5n
IGVsc2Ugd2hlbiBhZGRpbmcgaXRlbXMgdG8gdGhlIGF1dG9jb21wbGV0ZSBEQi4gIE1ha2VzIG1l
IHdvbmRlciBpZiB3ZQotICAgICAgICAgZXZlbiBuZWVkIHRvIGVuZm9yY2UgdGhlIGNoYXJhY3Rl
ciBzZXQgaGVyZS4KLSAgICAgICAgICovCi0gICAgICAgIE5TU3RyaW5nICphY2NlcHRhYmxlQ2hh
cmFjdGVycyA9IEAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5ejAxMjM0NTY3ODkrLi0iOwotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0
YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gSW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldChbW05TQ2hh
cmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNo
YXJhY3RlcnNdIGludmVydGVkU2V0XSk7Ci0gICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBbc3Ry
aW5nIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OkludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQuZ2V0
KCkuZ2V0KCkgb3B0aW9uczowIHJhbmdlOnNjaGVtZV07Ci0gICAgICAgIGlmIChpbGxlZ2Fscy5s
b2NhdGlvbiA9PSBOU05vdEZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIHNjaGVtZTsKLSAgICB9
Ci0gICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwotfQotCi1CT09MIGxvb2tz
TGlrZUFic29sdXRlVVJMKE5TU3RyaW5nICpzdHJpbmcpCi17Ci0gICAgLy8gVHJpbSB3aGl0ZXNw
YWNlIGJlY2F1c2UgX3dlYl9VUkxXaXRoU3RyaW5nIGFsbG93cyB3aGl0ZXNwYWNlLgotICAgIHJl
dHVybiByYW5nZU9mVVJMU2NoZW1lKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZyku
Z2V0KCkpLmxvY2F0aW9uICE9IE5TTm90Rm91bmQ7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5oCmluZGV4IGI4NjE3ZjM5MjIyMjc3M2Ex
MmI3NDM4MTkzODA3MTRhNTFkNDdlMGIuLmE2OWEwZTc4ZjU4NDc1MWNmZjUwMmYxNjI0ZjNjZjY2
YjA0YzNjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaApAQCAtMzYsNyArMzYs
NyBAQAogI2luY2x1ZGUgIlJUQ0J1bmRsZVBvbGljeS5oIgogI2luY2x1ZGUgIlJUQ0ljZVRyYW5z
cG9ydFBvbGljeS5oIgogI2luY2x1ZGUgIlJUQ1BNdXhQb2xpY3kuaCIKLSNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JQYXJ0LmgKaW5kZXggNjI4ZjkzOWEzMDVjY2Y3NDY2OWU2YmNiYWJjMGY1OTE3OTU2
Mzc4Ni4uMDQxYzI5YTMxMmYwOTgxN2Y4ZWNmMTczNjE2MTNjYWQyZmQ2ZjRkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUGFydC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaApAQCAtMjUsNyArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnkuaAppbmRleCAwMmJlNzE4MWRkN2U5NWYxMTUwYzU2NmMxMWFlNDRk
YTc0ZDZlOWM3Li4yZTg5M2JkY2M4OGEzMWZjOWViNGE5ZjM0YzlkZDc4YjY5YzQ4Y2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKQEAgLTM4
LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJl
bmNlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnk7Ci1jbGFzcyBVUkw7CiAK
IFdFQkNPUkVfRVhQT1JUIEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKaW5kZXgg
YzE2MTg0OTEzNGFjNTQ5NzAyNGEwMWUyMjNiNWU0NWY1OTFiZDU2NS4uMTcyYmYxZDc1ZDAyMDE5
M2ZmY2JkZDIxNjM2MjkyNmJiNmY1ZjEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKQEAgLTMzLDE0ICszMywxMyBAQAogCiAj
aW5jbHVkZSAiQmxvYkRhdGEuaCIKICNpbmNsdWRlICJCbG9iUmVnaXN0cnkuaCIKLSNpbmNsdWRl
ICJVUkxIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
SGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBj
bGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDYxODJiZTU2YzQyNjA1ZDUwZWEyOWQy
ZDdiZTEwMjE3ZGJmNjIxMDkuLmM5NGUzOTQ5NGI4ZTMyNmRiNGExMmEyNzIwMWE0NjIzOGRlMThj
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291
cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJIVFRQSGVhZGVy
TmFtZXMuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRl
bnRSYW5nZS5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHku
aAppbmRleCAyNDlhMDAzNjFiZWZhYzNjOGFiMzM5YWQ4NzdlODcxZjRiZmU1OTMyLi4zMmE2ZjU3
YzBhMjE5NjA0N2M3NDM5YjA5MzlkZmUyY2QwYzM2OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmll
bGRQcm94eS5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpbmNsdWRlICJDb29raWVzU3RyYXRlZ3ku
aCIKICNpbmNsdWRlICJTYW1lU2l0ZUluZm8uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3Jl
ZGVudGlhbFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsU3RvcmFnZS5jcHAKaW5kZXggNDViYjQ3MjAxMWFjNTM2NGExZGY4YjFiODk0MjBmOTI5
NmZmYTc0OC4uYjlhZjQyMmFlZjJlZmFiNDhiNDk0OWY5YjYzNGY1MDk3MDkzZjg3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFn
ZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgog
CiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRl
ICJXZWJDb3JlVGhyZWFkLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKaW5kZXggNWNhY2MwNTYzMWMxNjgwZDFkOTQyN2Q3Nzg5
NTI5ZjNiMThkMzA3ZC4uN2RkYzRmZTU1YmIxYmUyZjY5MjAwMDgwYzM0ZjM0YmFiZDUwZWRiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3Rv
cmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0
b3JhZ2UuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRl
ZiBDcmVkZW50aWFsU3RvcmFnZV9oCi0jZGVmaW5lIENyZWRlbnRpYWxTdG9yYWdlX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25T
cGFjZUhhc2guaCIKQEAgLTM1LDcgKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBVUkw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKIGNsYXNzIENyZWRlbnRpYWxTdG9y
YWdlIHsKQEAgLTcwLDUgKzY4LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIENyZWRlbnRpYWxTdG9yYWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggM2Y0ZmIxYWQ4
ODRhNzgyYmRjNjE0ZmQzOTRmZTc3NzFhYmE1NGE0Zi4uNDYwNWJlYTBhN2ExNmQxM2E1ZDJjMGU5
MDZmYmFlOTBjZGQ0NjIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKICNpbmNsdWRlICJIVFRQ
UGFyc2Vycy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRFbmNv
ZGluZy5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggNzI1
ODI0NzEyOWNiYmFhMmM4NWZjM2I0OWNmZGI2NjgwZDJiZDc1ZC4uOTc0ZDljZWJlYjE5NTE4OGI1
Yzg0NjkyYWEwZjViMjZiYTk5MGNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtMjMsOSArMjMsNyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRGF0YVVSTERlY29kZXJfaAot
I2RlZmluZSBEYXRhVVJMRGVjb2Rlcl9oCi0KKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0zOCw3ICszNiw2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsK
IAogbmFtZXNwYWNlIERhdGFVUkxEZWNvZGVyIHsKIApAQCAtNjEsNSArNTgsMyBAQCB2b2lkIGRl
Y29kZShjb25zdCBVUkwmLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmLCBEZWNvZGVDb21wbGV0aW9u
SGFuZGxlciYmKTsKIH0KIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaAppbmRleCBlOGM3ZDk4YTA3NWI2NmRkMDU0Mjg3OWI1OTE2NGMwZDQ2
ZjZhNzI2Li5iYmFhZGUxODViNzlmNTRmOGMwNzA3NTM5NjMyMTY2MzQ2ZWMyZGVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0yMCw5ICsyMCw5IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaAppbmRleCAxMDNkOWE5NmJi
ZGM2MTUyYTYxYjdkMTYxZmU0MDkwYmE1YmMzYTA1Li41Mjc4OWI1YmRkOGRhYjM5N2IzNjlhYWMx
NThjMjY3NzIxODc3ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Byb3h5U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
cm94eVNlcnZlci5oCkBAIC0yMywxNSArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFByb3h5U2VydmVyX2gKLSNkZWZpbmUgUHJveHlT
ZXJ2ZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
VVJMOwogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiAKIC8vIFJlcHJlc2VudHMgYSBzaW5nbGUg
cHJveHkgc2VydmVyLgpAQCAtNzUsNSArNzMsMyBAQCBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UHJv
eHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyB0b1N0cmluZyhjb25zdCBWZWN0b3I8UHJveHlTZXJ2ZXI+Jik7CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQcm94eVNlcnZlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXgg
NzYzMzE4YzJlMTE0NzM2MjM2ZWMzZDEzNmM3YzRhODc4ZGRjYjJmMy4uZTBiZjA0YjhhYzhmMDBi
MzkzOTc5MWViZmQwMDg3ZWNiOTBkYjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaApAQCAtMjYsNyArMjYsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApp
bmRleCBhZDdkZGZmMTcxMjg5MTk5YmY0YzA2ZDczZDdmZWJhZGNjOTE0NzNiLi5kMmVhOWExMDdk
ZTY3OWFjMmE2NWFiNTZlYzAwMzg0YzExM2E2ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIENvbXBsZXRpb25ICiAgICAgaWYgKHJlc3BvbnNlLmlzSFRUUDA5KCkpIHsK
ICAgICAgICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKICAgICAgICAgc3RkOjpvcHRpb25h
bDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7Ci0gICAgICAgIGlmIChwb3J0ICYmICFpc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKKyAg
ICAgICAgaWYgKHBvcnQgJiYgIVdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQudmFs
dWUoKSwgdXJsLnByb3RvY29sKCkpKSB7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAg
ICAgIFN0cmluZyBtZXNzYWdlID0gIkNhbmNlbGxlZCBsb2FkIGZyb20gJyIgKyB1cmwuc3RyaW5n
Q2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIGl0IGlzIHVzaW5nIEhUVFAv
MC45LiI7CiAgICAgICAgICAgICBkLT5tX2NsaWVudC0+ZGlkRmFpbCh0aGlzLCB7IFN0cmluZygp
LCAwLCB1cmwsIG1lc3NhZ2UgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggNGYwYmQ3ZTkyOThlMTE5ZTZiZmY0MmM0NjgxZGI3
YjM4ODZiMTdmZC4uYjU5YWIyMWFhMGE1NDdmNWQ1N2M0YjAyODhlYjhiNzIzNjg5Y2ZiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApA
QCAtNzcsNyArNzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIFVSTDsK
IGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBjNjYxOWVlYmQ1YmZkM2I5ZWI3YThiYjZj
NWQzMzhjNTRkOTZlMjQ0Li43MzQzYmRhNTUwNDdhMjI0Y2M1YWJkNTJmZjk0NTc2ZGMwZTg4Zjk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUNsaWVudC5oCkBAIC00NCw3ICs0NCw2IEBAIE9CSkNfQ0xBU1MgTlNDYWNoZWRVUkxS
ZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOwogY2xhc3MgQ3JlZGVudGlhbDsKLWNsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFj
ZTsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwCmluZGV4IDljMDJkMmIxY2EzMDhlYmVkNGI5NjU3ZTYyNGYzNWMwNTJhYjZmODUuLjYyNWFj
NTFmN2UzOWMxOWUzMmZiY2I1MmQ2MmE3NGZmZWNjMWIyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAt
MTUxLDcgKzE1MSw3IEBAIFJlc291cmNlUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZWRp
cmVjdGVkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByCiAgICAgICAgIHJlcXVlc3Qu
bV9odHRwSGVhZGVyRmllbGRzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7
CiAgICAgfQogCi0gICAgaWYgKHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpwcm90
b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ICYmICFyZXF1ZXN0LnVybCgpLnByb3Rv
Y29sSXMoImh0dHBzIikgJiYgV1RGOjpwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCks
ICJodHRwcyIpKQogICAgICAgICByZXF1ZXN0LmNsZWFySFRUUFJlZmVycmVyKCk7CiAKICAgICBp
ZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJl
c3BvbnNlLnVybCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggM2RmMzNhMTEzMTA4ZTVlNzQ4YjJkNTBhNTZl
OWRlMDgxZjJlYzE1Mi4uMzBkNGIxMDYyZGQwMzg4ODQ1ZTg0N2M5Y2Q2OWFjNDRkMjk3MTY2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2lu
Y2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9y
aXR5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAppbmRleCA2ZmNhNmI3NTFm
NTdmMDgxZjQzYTEzNDNiMmU1MTUwY2UyZmQ2MjFhLi5hZDJmZDU3OTFhN2JlMTc0ZjhiZjk4NDQ3
ZjkwZTRmYjFkZjZiOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVk
ZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2lu
Y2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5nZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9NYXJrYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2Fs
bFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggYjU5YmRiYTBiNDEy
OTVjZWUzODUzZjZmZWEyMmFiYzI0ZWNkYmYyNS4uNmQxZmQxYTgzMDk5Mzk4OTRiNDllYTg0Yjc3
YTU5ZjExN2Q4YTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Tb2NrZXRTdHJlYW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC0zMSw4ICszMSw4IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZl
UXVldWVDRk5ldC5jcHAKaW5kZXggN2Q1ODc1N2MyM2Q3MmJjZDQxY2Q2NjhhMWM2MjM4YTc3MzQ1
OGI3Yi4uYjM4MmEwZDdlZGYxNjU0M2NhM2NmNDdiM2RlMWM3NzE1ZWIxNzQ1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZl
UXVldWVDRk5ldC5jcHAKQEAgLTMwLDExICszMCwxMSBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFU
Rk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IDA3ZGNmNDM1
ZGY4YjgyZGUzNzUyN2E0NDJkYmI5NmYzMGJhYTAwZTEuLjgxYWJlZDIxNDUwNDc5MTA0MDkxYjdm
NDY0NmUxOGNmZjc1ZDQ0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBA
IC00MCwxMiArNDAsMTIgQEAKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eS5oIgogI2luY2x1ZGUgIkNvb2tpZXNTdHJhdGVneS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tp
ZXNQcml2Lmg+CiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNp
bmNsdWRlIDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4K
ICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJv
eHlTZXJ2ZXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1By
b3h5U2VydmVyQ0ZOZXQuY3BwCmluZGV4IDA3NTE3ODMyZmFhNGJhNGFlNzZlOWQzMDNmZTM4NzM4
NzZiNDhkODguLjY0Y2ZjOWJlY2RiMjZjYjUzZDBlMTQxMDRlYzRlMWRmYzY5YjJmNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5l
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZl
ckNGTmV0LmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlByb3h5U2VydmVyLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggMjg5ZTU5NzA2MDZj
OWQ0MzViM2FlY2Y3NjU0OGJlYTQzMWNlYzYxYy4uYjdiOTUwN2FhMzU3Yjg2N2MxOGZjMDRkNDk5
OThhOTk4NmI3MDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQogCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZv
dW5kYXRpb24vQ0ZFcnJvci5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMu
aD4KICNpbmNsdWRlIDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXggZTEzZWIzN2M4Mzli
ZDM1YjczMTcwZmRlYjEyOTNiNjRlNzkxNjRkNy4uYzA5MDBhZWI1ZDE2ZjQzM2U0ZTcxNWE5MGQz
MDYxZGM0ZjU1ZDA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBA
IC0zMSwxMSArMzEsMTEgQEAKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VPYnNlcnZlci5oIgogI2lt
cG9ydCAiQ29va2llc1N0cmF0ZWd5LmgiCiAjaW1wb3J0ICJTYW1lU2l0ZUluZm8uaCIKLSNpbXBv
cnQgIlVSTC5oIgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KICNp
bXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIEBpbnRlcmZhY2UgTlNVUkwgKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJD
dXJsRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckN1cmxEYXRhYmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJkMDUxZTM3OTNmNWE4ZTg2OGE0
ZTc5ZGZlMTY0NjU2NzUxN2FmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwCkBAIC0wLDAgKzEs
MTQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvb2tpZUphckN1cmxE
YXRhYmFzZS5oIgorCisjaWYgVVNFKENVUkwpCisjaW5jbHVkZSAiQ29va2llLmgiCisjaW5jbHVk
ZSAiQ29va2llSmFyREIuaCIKKyNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eS5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTdHJp
bmcgY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVybCwgYm9vbCBmb3JIVFRQSGVhZGVyKQoreworICAg
IFN0cmluZ0J1aWxkZXIgY29va2llczsKKworICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9
IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKKyAgICBhdXRvIHNlYXJjaEhUVFBPbmx5ID0gKGZv
ckhUVFBIZWFkZXIgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPGJvb2w+IHtmYWxzZX0p
OworICAgIGF1dG8gc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIikgPyBzdGQ6Om51bGxv
cHQgOiBzdGQ6Om9wdGlvbmFsPGJvb2w+IHtmYWxzZX07CisKKyAgICBWZWN0b3I8Q29va2llPiBy
ZXN1bHRzOworICAgIGlmIChjb29raWVKYXJEQi5zZWFyY2hDb29raWVzKHVybC5zdHJpbmcoKSwg
c2VhcmNoSFRUUE9ubHksIHNlY3VyZSwgc3RkOjpudWxsb3B0LCByZXN1bHRzKSkgeworICAgICAg
ICBmb3IgKGF1dG8gcmVzdWx0IDogcmVzdWx0cykgeworICAgICAgICAgICAgaWYgKCFjb29raWVz
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb29raWVzLmFwcGVuZCgiOyAiKTsKKyAgICAg
ICAgICAgIGNvb2tpZXMuYXBwZW5kKHJlc3VsdC5uYW1lKTsKKyAgICAgICAgICAgIGNvb2tpZXMu
YXBwZW5kKCI9Iik7CisgICAgICAgICAgICBjb29raWVzLmFwcGVuZChyZXN1bHQudmFsdWUpOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjb29raWVzLnRvU3RyaW5nKCk7Cit9CisKK3Zv
aWQgQ29va2llSmFyQ3VybERhdGFiYXNlOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkg
Y29uc3QKK3sKKyAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CisgICAgVU5VU0VEX1BBUkFNKHBh
Z2VJRCk7CisgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOworCisgICAgQ29va2llSmFyREIm
IGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpOworICAgIGNvb2tpZUphckRC
LnNldENvb2tpZSh1cmwuc3RyaW5nKCksIHZhbHVlLCB0cnVlKTsKK30KKwordm9pZCBDb29raWVK
YXJDdXJsRGF0YWJhc2U6OnNldENvb2tpZXNGcm9tSFRUUFJlc3BvbnNlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFs
dWUpIGNvbnN0Cit7CisgICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29r
aWVEYXRhYmFzZSgpOworICAgIGNvb2tpZUphckRCLnNldENvb2tpZSh1cmwuc3RyaW5nKCksIHZh
bHVlLCBmYWxzZSk7Cit9CisKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmxE
YXRhYmFzZTo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0Cit7CisgICAgVU5VU0VE
X1BBUkFNKGZyYW1lSUQpOworICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOworCisgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGZpbHRlciBzZWN1cmUgY29va2llcyBvdXQgaWYgdGhlIGNhbGxlciBy
ZXF1ZXN0cyBpdC4KKyAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCBmaXJz
dFBhcnR5LCB1cmwsIGZhbHNlKSwgZmFsc2UgfTsKK30KKworc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gQ29va2llSmFyQ3VybERhdGFiYXNlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0Cit7CisgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOworICAgIFVO
VVNFRF9QQVJBTShwYWdlSUQpOworCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGZpbHRlciBz
ZWN1cmUgY29va2llcyBvdXQgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyBpdC4KKyAgICByZXR1cm4g
eyBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHRydWUpLCBmYWxz
ZSB9OworfQorCitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsRGF0YWJhc2U6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZp
ZWxkUHJveHkpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKHNlc3Npb24sIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94
eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZy
YW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVT
ZWN1cmVDb29raWVzKTsKK30KKworYm9vbCBDb29raWVKYXJDdXJsRGF0YWJhc2U6OmNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKK3sKKyAg
ICByZXR1cm4gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpLmlzRW5hYmxlZCgpOworfQorCitib29s
IENvb2tpZUphckN1cmxEYXRhYmFzZTo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29u
c3QKK3sKKyAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VJ
RCk7CisKKyAgICBDb29raWVKYXJEQiYgY29va2llSmFyREIgPSBzZXNzaW9uLmNvb2tpZURhdGFi
YXNlKCk7CisgICAgcmV0dXJuIGNvb2tpZUphckRCLnNlYXJjaENvb2tpZXMoZmlyc3RQYXJ0eS5z
dHJpbmcoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgcmF3Q29v
a2llcyk7Cit9CisKK3ZvaWQgQ29va2llSmFyQ3VybERhdGFiYXNlOjpkZWxldGVDb29raWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBuYW1lKSBjb25zdAoreworICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNl
c3Npb24uY29va2llRGF0YWJhc2UoKTsKKyAgICBjb29raWVKYXJEQi5kZWxldGVDb29raWUodXJs
LCBuYW1lKTsKK30KKwordm9pZCBDb29raWVKYXJDdXJsRGF0YWJhc2U6OmdldEhvc3RuYW1lc1dp
dGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYp
IGNvbnN0Cit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKK30KKwordm9pZCBD
b29raWVKYXJDdXJsRGF0YWJhc2U6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdAoreworICAg
IC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCit9CisKK3ZvaWQgQ29va2llSmFyQ3VybERh
dGFiYXNlOjpkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbikgY29uc3QKK3sKKyAgICBDb29raWVKYXJEQiYgY29va2llSmFyREIgPSBzZXNzaW9uLmNv
b2tpZURhdGFiYXNlKCk7CisgICAgY29va2llSmFyREIuZGVsZXRlQWxsQ29va2llcygpOworfQor
Cit2b2lkIENvb2tpZUphckN1cmxEYXRhYmFzZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2lu
Y2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgV2FsbFRpbWUpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVVNFKENVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCA3OTljMTM3Mjg1Zjg3MGVmZWMy
ODdiOTNkMTZhMTcyNWFjYzZmZmUxLi4xMjkyMWM3ZjUzYjZmN2UwYTQ3OWE1Yjk5Zjk3OWVmYjdj
MjY3NGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVKYXJEQi5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIK
LSNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKICNpbmNs
dWRlICJQdWJsaWNTdWZmaXguaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVVdGlsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llVXRpbC5oCmluZGV4IDA0ZGJlODMyZjY2OWNiNTBmYzdmYTQ5YTgyMTUw
YmZmZGUwMzM4NTAuLjg0ZDM4ZGY3ZTBiZWM3MzRhODM0MzIwOTM0NWNmZThkN2Y4NTBlZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGls
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwu
aApAQCAtMjQsOCArMjQsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCmluZGV4IDgw
NTJiODI4ZWVhYTVlMzBhMzQ5Y2E3ZDJlZjI5ZWYwY2JhZTYyNGQuLmU3NDEwMzhkYzQzY2MyYWUz
NmU2NmVlYmM4N2YxNjY1OWU0OGZkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCkBAIC0yOCwxMyArMjgsMTMgQEAKIAogI2lu
Y2x1ZGUgIkN1cmxQcm94eVNldHRpbmdzLmgiCiAjaW5jbHVkZSAiQ3VybFNTTEhhbmRsZS5oIgot
I2luY2x1ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNl
dHRpbmdzLmgKaW5kZXggMjdhNzAyMTBkZjE5MTMwZDk1Nzc1NDkyZTAxZTk2NTQ2NGZlYTkxZC4u
YWYzMTM1NDZjNDRhMzI3N2YwNmI0ODU0ZWYwMzAyN2I4NTgxNDQwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdz
LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNkZWZpbmUga0NVUkxBVVRIX0RJR0VTVF9JRSAgICAoKCh1bnNpZ25lZCBsb25nKSAxKSA8PCA0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNw
b25zZS5oCmluZGV4IDM3MzY2MWJkMzVhZmNlNjY3YWUxYmIzNTc3YTZjMDlkYzE0NGZhNGQuLmU2
MTFmZmM0ZmIxNTQxZjRjZmQxMzI4NzJjYmMxZDVkYzNkOTNmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc3BvbnNlLmgKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwCmluZGV4IDJkNjQ1YzlkNzM5MjVmN2VlYWQ1NDAzZWQ3OTAzYjNjM2MxOTc3
MDAuLjI0N2E1Mjc1ZTg1OGQ5MDkyMGMxNGYwMDEzMjdiYzZhMzFlY2Q0Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKQEAgLTM2LDEwICszNiwxMCBAQAogI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Byb3h5U2VydmVyQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAppbmRleCBjZGE0NDk5M2Y2MzRiMjQ0NGE2MWRjYWY5NzQw
MWU5ZjI2MDJmMGIwLi4xOGY1MDhiNmU0ODY4MmE4ZmM3MDBkMWY2N2Q3YTk2ZTA5M2VkNGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2
ZXJDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJv
eHlTZXJ2ZXJDdXJsLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgVVNFKENVUkwpCiAKLSNp
bmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggY2ZjNDhmZmEy
NWZkODBmZGI4ZDcxZmE3YzM4OTNkM2U4NmE0NTc3YS4uMDcxMGNhZWUyNTAzYzFmM2YzODA4ZTIw
NDM3MDU4ODI3ZWQzNmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3Bw
CkBAIC0zOSw5ICszOSw5IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNvY2tl
dFN0cmVhbUVycm9yLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCi0j
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IGRkNjIwYmVi
MzY3NGIxZjIxMjNhYTk5ZmY0MDMyZmQwN2RhZjExZTUuLjBiNTVhMDJiYzU4Njk2ZTQyNWNkNmY4
N2YwYjMwNjdhNDg5MjYxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtMjYsMTEgKzI2LDExIEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlJlc291cmNlRXJyb3IuaCIKIAotI2ltcG9ydCAi
VVJMLmgiCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBAaW50ZXJmYWNlIE5TRXJyb3IgKFdlYkV4
dHJhcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9H
VW5pcXVlUHRyU291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dV
bmlxdWVQdHJTb3VwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2ZGM2Mzc0MTJl
MThiYTcyNWY3NDgzZWMzMjZlMTI0OWE4OGExNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0dVbmlxdWVQdHJTb3VwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICog
IENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgR1VuaXF1
ZVB0clNvdXBfaAotI2RlZmluZSBHVW5pcXVlUHRyU291cF9oCi0KLSNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0KLW5hbWVzcGFjZSBX
VEYgewotCi1XVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwVVJJLCBzb3VwX3VyaV9mcmVlKQot
V1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cENvb2tpZSwgc291cF9jb29raWVfZnJlZSkKLVdU
Rl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBNZXNzYWdlSGVhZGVycywgc291cF9tZXNzYWdlX2hl
YWRlcnNfZnJlZSkKLVdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBCdWZmZXIsIHNvdXBfYnVm
ZmVyX2ZyZWUpCi0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25T
b3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCBlNDgzYWE2MzE2Y2U2YzVkNmM4ZjNlNjU1ZDU1ZGQx
ZWViMDQ2M2NmLi4wM2QxNTZlNWVkNmU4YzFmNTkwOTU2YThiZDg0MGU4YTNkMTBlNDdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAKICNp
bmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eS5oIgotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAuaD4KQEAgLTQxLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlx
dWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oPgogCiAjaWYgVVNF
KExJQlNFQ1JFVCkKICNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmluZGV4
IDRjMjc3YzNkMjE2N2FjYzU0NDExZjk2MDNlMzUxOTAwMTczM2I0YWQuLjljOTlmODk1ZGI0ZGI3
YzgxMWNhNTBmNTExZDNkNGZiMjVjNzE2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpZiBVU0UoU09VUCkKIAotI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmlu
ZGV4IDYzNzM0YzY3NGM1MmVlOTVkYzZjOWU0MjFjNDY2MGY0MTg0MDBiYWEuLmZiNzE4MTNhMzc1
OTA5YzBhN2EyZjU0NTc0YTgxMWFlZGRiM2ZkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBA
IC0zMyw3ICszMyw2IEBACiAKICNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgogI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUg
Ik1JTUVUeXBlUmVnaXN0cnkuaCIKQEAgLTU4LDYgKzU3LDcgQEAKICNlbmRpZgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGli
L1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdC5oCmluZGV4IDM4ZTNhOGVlNjk2ODExZmQ1YmE3OGI0YjMwYzJjMDFhMzlmZjVi
NWYuLjc0NzJhZDIzOGIzMzRhOTUwOTAxZWRlOTAxNTgzMjY1YjNmOWJjNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
LmgKQEAgLTI3LDkgKzI3LDkgQEAKICNpZm5kZWYgUmVzb3VyY2VSZXF1ZXN0X2gKICNkZWZpbmUg
UmVzb3VyY2VSZXF1ZXN0X2gKIAotI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDA5MGRjN2ZkOGU3MTFlODIzNzU2OTcwMmE2
N2ZjYTA4YjQ4ZTIyY2QuLjIyOWM1M2NmNTcyMDI3NmU1MjVlOWE2ZmI2Zjc2MmI4ZmY1OGVlMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTI0LDExICsyNCwxMSBAQAogCiAjaW5jbHVk
ZSAiQmxvYkRhdGEuaCIKICNpbmNsdWRlICJCbG9iUmVnaXN0cnlJbXBsLmgiCi0jaW5jbHVkZSAi
R1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJX
ZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuaCIKKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
U291cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKaW5k
ZXggOWNkZGRiODdlMzc1OTVhMmJiYWQ2NTEwMjA0NWY2ZmE3NDJiNGU0Mi4uNWFmOTQ3M2YzNzcy
ODYxMTMxYmFlNzE3N2IzNDMxOWE1YzJkYjA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbFNvdXAuY3BwCkBAIC00MSw5ICs0MSw5IEBACiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJy
b3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJT
b3VwTmV0d29ya1Nlc3Npb24uaCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxnaW8vZ2lv
Lmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApp
bmRleCAxM2VjYjViMGY3NjNjMjAxY2YxN2E0MTYxMmE3M2YwOWE4ZjVhMDc4Li42MDA0ZDE3Zjc2
YTAzYTkwZTMzOGE5MGUzYzU0NWI1MmY1MTljNzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApA
QCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIK
ICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtQcm94eVNldHRpbmdzLmgi
CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KQEAgLTM5LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxw
YWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0
clNvdXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAppbmRleCBkMWU5ZDljZTViMjg5ZDE0Y2M2
YzE2NTkzYmY0YWQwNjc4MjdlNTNhLi41YjVmZjc5NzczNDcxNTE5NjFhNDVjMzQ5N2VhMmY1NTEz
NDRiMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U291cE5ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCkBAIC00NCw3ICs0NCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
LWNsYXNzIFVSTDsKIHN0cnVjdCBTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3M7CiAKIGNsYXNzIFNv
dXBOZXR3b3JrU2Vzc2lvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
b3VwL1VSTFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9VUkxTb3VwLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdkYmEzMjg2OTVmZmNiMjZmMzg3YjY3
MmFhOTM4NzM3MmIyZTkxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1VSTFNvdXAuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEg
Uy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBVU0UoU09VUCkKLQotI2luY2x1ZGUgIlVSTC5oIgotCi0jaW5j
bHVkZSAiVVJMUGFyc2VyLmgiCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVVSTDo6VVJMKFNv
dXBVUkkqIHNvdXBVUkkpCi17Ci0gICAgaWYgKCFzb3VwVVJJKSB7Ci0gICAgICAgIGludmFsaWRh
dGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHVy
bFN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcoc291cFVSSSwgRkFMU0UpKTsKLSAgICBVUkxQYXJz
ZXIgcGFyc2VyKFN0cmluZzo6ZnJvbVVURjgodXJsU3RyaW5nLmdldCgpKSk7Ci0gICAgKnRoaXMg
PSBwYXJzZXIucmVzdWx0KCk7Ci0KLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gTW90aXZhdGVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zODk1Ni4gbGlic291cAotICAgIC8vIGRvZXMgbm90IGFkZCB0aGUgcGFzc3dvcmQg
dG8gdGhlIFVSTCB3aGVuIGNhbGxpbmcKLSAgICAvLyBzb3VwX3VyaV90b19zdHJpbmcsIGFuZCB0
aHVzIHRoZSByZXF1ZXN0cyBhcmUgbm90IHByb3Blcmx5Ci0gICAgLy8gYnVpbHQuIEZpeGluZyBz
b3VwX3VyaV90b19zdHJpbmcgaXMgYSBuby1ubyBhcyB0aGUgbWFpbnRhaW5lciBkb2VzCi0gICAg
Ly8gbm90IHdhbnQgdG8gYnJlYWsgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIGltcGxlbWVu
dGF0aW9ucwotICAgIGlmIChzb3VwVVJJLT5wYXNzd29yZCkKLSAgICAgICAgc2V0UGFzcyhTdHJp
bmc6OmZyb21VVEY4KHNvdXBVUkktPnBhc3N3b3JkKSk7Ci19Ci0KLUdVbmlxdWVQdHI8U291cFVS
ST4gVVJMOjpjcmVhdGVTb3VwVVJJKCkgY29uc3QKLXsKLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gR1VuaXF1ZVB0cjxTb3VwVVJJPihz
b3VwX3VyaV9uZXcoc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwotfQotCi1ib29sIFVSTDo6aG9z
dElzSVBBZGRyZXNzKFN0cmluZ1ZpZXcgaG9zdCkKLXsKLSAgICByZXR1cm4gIWhvc3QuaXNFbXB0
eSgpICYmIGdfaG9zdG5hbWVfaXNfaXBfYWRkcmVzcyhob3N0LnV0ZjgoKS5kYXRhKCkpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEVuY29kaW5nLmgKaW5kZXggNzdjNTI4OGZkMGNlMDU5ODY0ZWY4MTIzZTAw
NzJiYjdjMzU3MjNkYi4uN2QwM2Y4NjNkMGRmNDlkMmY3OWM3YzNhNmQxMzgyY2Y0MTY4MTBlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5oCkBAIC0yNSwx
MyArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDxwYWwvdGV4dC9VbmVuY29kYWJsZUhhbmRsaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFRleHRFbmNvZGluZyA6IHB1YmxpYyBVUkxUZXh0RW5jb2RpbmcgeworY2xhc3MgVGV4
dEVuY29kaW5nIDogcHVibGljIFdURjo6VVJMVGV4dEVuY29kaW5nIHsKIHB1YmxpYzoKICAgICBU
ZXh0RW5jb2RpbmcoKSA9IGRlZmF1bHQ7CiAgICAgV0VCQ09SRV9FWFBPUlQgVGV4dEVuY29kaW5n
KGNvbnN0IGNoYXIqIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0JTdHJpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3Bw
CmluZGV4IGJhZTFiZWFhYWEzN2FkZTMwM2IwOGYzNDg5NDkyNDkwMTg2NDc5Y2EuLjBmNDZjNWRj
YWIyOWI3YjQ2M2JiNmVjZDMxYjBlYjNiNzU4YzIyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQlN0cmluZy5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJCU3RyaW5nLmgiCiAKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3aW5k
b3dzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9CU3RyaW5nLmgKaW5kZXggMWZiZTAyYzE1ODdjMTI5YjhkNTA1MDJlNjQ2MDRl
Nzg2Y2U4MmEyYS4uMTg0YjU1MWQ0OGU5YzIzMWVhMDJhNzg3NTZmZTk2ZmVkM2U1NjY2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCkBAIC00MCw4ICs0MCw2IEBAIHR5cGVk
ZWYgX051bGxfdGVybWluYXRlZF8gd2NoYXJfdCogQlNUUjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0gICAgY2xhc3MgVVJMOwotCiAgICAgY2xhc3MgQlN0cmluZyB7CiAgICAgcHVibGljOgog
ICAgICAgICBCU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmluZGV4IDZmZjg5ZWMxODBkNTgzNWM1OTE0MGZj
NmEzODdmNDdiMTI1YjBhMzIuLjc5MGE4MmY4YjY3MTEwMGExNjJlNTNlZDg5Nzk3Y2Q5MDc4ZWZm
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uY3BwCkBAIC0yNywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJDbGlwYm9hcmRV
dGlsaXRpZXNXaW4uaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKLSNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIK
ICNpbmNsdWRlIDxzaGxvYmouaD4KICNpbmNsdWRlIDxzaGx3YXBpLmg+CiAjaW5jbHVkZSA8d2lu
aW5ldC5oPiAvLyBmb3IgSU5URVJORVRfTUFYX1VSTF9MRU5HVEgKICNpbmNsdWRlIDx3dGYvU3Ry
aW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgbWFya3VwVG9DRkhUTUwoY29u
c3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgc3JjVVJMLCBWZWN0b3I8Y2hhcj4mIHJl
CiAgICAgY29uc3QgY2hhciogc3RhcnRNYXJrdXAgPSAiPEhUTUw+XG48Qk9EWT5cbjwhLS1TdGFy
dEZyYWdtZW50LS0+XG4iOwogICAgIGNvbnN0IGNoYXIqIGVuZE1hcmt1cCA9ICJcbjwhLS1FbmRG
cmFnbWVudC0tPlxuPC9CT0RZPlxuPC9IVE1MPiI7CiAKLSAgICBDU3RyaW5nIHNvdXJjZVVSTFVU
RjggPSBzcmNVUkwgPT0gYmxhbmtVUkwoKSA/ICIiIDogc3JjVVJMLnV0ZjgoKTsKKyAgICBDU3Ry
aW5nIHNvdXJjZVVSTFVURjggPSBzcmNVUkwgPT0gV1RGOjpibGFua1VSTCgpID8gIiIgOiBzcmNV
UkwudXRmOCgpOwogICAgIENTdHJpbmcgbWFya3VwVVRGOCA9IG1hcmt1cC51dGY4KCk7CiAKICAg
ICAvLyBjYWxjdWxhdGUgb2Zmc2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCmluZGV4IDVjZDllMGU3NTczMTNmZjAyMjlhNmNm
YmE4ZWQ2NDkwYTgxYWZlMjguLmMzN2YzZTJkZTE5NjFlNmExMzA0NTQ3N2NjYTg2OTI2NGYwMzI1
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRp
bGl0aWVzV2luLmgKQEAgLTM0LDcgKzM0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7Ci1jbGFzcyBVUkw7CiAKIEhHTE9C
QUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBTdHJpbmcmKTsKIEhHTE9CQUwgY3JlYXRlR2xvYmFs
RGF0YShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdJbWFnZVdpbi5jcHAKaW5kZXggMWRmYTUwYjUzMmRkOGI1YWY2NjY3NWY4NDQ5ZmU1NDE5
MTE3NGVmZi4uYTZiNjcyZmM3MjdmZTgzNzlhMmQwZjdlMDQ2MDcxNjk2MGNmYmI4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKQEAgLTM0LDEyICsz
NCwxMiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhXbmREQy5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU3RyaW5n
VHJ1bmNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dEluZGljYXRvci5oIgogI2luY2x1ZGUgIlRleHRS
dW4uaCIKICNpbmNsdWRlICJXZWJDb3JlVGV4dFJlbmRlcmVyLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMDY5
OTc5OTA2MzFlNWMzNDM2NDcxOGFlNmFiMTc2NTk0Y2RmMzY5ZC4uZDU5NjdhNTgyMGM5N2FlMjhj
NjI1YTUwZDgwMzhlMDBlZTI1ZGQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIkhXbmREQy5o
IgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmFuZ2Uu
aCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgpAQCAtNDksNiArNDgsNyBAQAogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIldlYkNvcmVJbnN0YW5jZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2lu
ZG93c0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCmluZGV4
IDBiNmM0MmVlMmQwODE2OGJlZGVmYzhmM2QwZjllYWU2ZTFhNmJmNTguLmYwNDBiMGFmOTZmM2I4
YmJkOWY1NDkzMjkzMTJiOGY0ZjcwNjllZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0
YS5oCkBAIC0yMCwxMCArMjAsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5oCmluZGV4IGQwNzc3YjM0NTBjM2EwMjBhZWZkNDNhNzIzY2M2Y2IxMzNkZWFlMGIu
LjMzMmYyODUzMWQzODhjZmUyYzNkNThhOTRjM2YyNjE3ZGNiOTE2NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBIVE1M
TWVkaWFFbGVtZW50OwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBOb2RlOwogY2xhc3MgU2Nyb2xsYmFy
OwotY2xhc3MgVVJMOwogCiBlbnVtIGNsYXNzIEhpdFRlc3RQcm9ncmVzcyB7IFN0b3AsIENvbnRp
bnVlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRh
Y2htZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNw
cAppbmRleCBlZDMzMzVlMTM3NGQ4ZjcyMjkyNTJkNTRjZTA2N2NjMzg0NzY4MWJkLi43NDY3ZmYz
ODY1NjgyYjhiZTYzYmI2N2RlYmQ3MTlhNGM4YjdlM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVk
ZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQXR0YWNobWVudEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDk5OTk2
ZTAxZWQwNzFhZjU4NzFhMWRhMTY2YzYzMTQ5YTEzYjRlNzQuLjcyMjFkZmNiN2RkZGU1OTAzOTI3
NmFkZGM5ZjM5YmRhMmQ3ODkwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNw
cApAQCAtNDksNyArNDksNyBAQCB2b2lkIFNWR0ltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVu
dCgpCiBTdHJpbmcgU1ZHSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZSkgY29uc3QKIHsKICAgICBVUkwgYmFzZSA9IGVsZW1lbnQoKS5iYXNlVVJJKCk7
Ci0gICAgaWYgKGJhc2UgIT0gYmxhbmtVUkwoKSkKKyAgICBpZiAoYmFzZSAhPSBXVEY6OmJsYW5r
VVJMKCkpCiAgICAgICAgIHJldHVybiBVUkwoYmFzZSwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKGF0dHJpYnV0ZSkpLnN0cmluZygpOwogICAgIHJldHVybiBlbGVtZW50KCkuZG9j
dW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0
cmlidXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJl
bmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCmluZGV4IDA4
MTI0MjgyMWFlZDg2ZjQ1Yzc1YmM1ZGYyMmEzMTY0YmJhMGIwZWYuLjIzNzNjYjQ5NzhkN2Q3NzIy
YWUyM2IwODc0NmRkMjI2MTk0ODFjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVUklSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVu
Y2UuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHQXR0cmlidXRlT3duZXJQcm94eS5oIgotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJYTGlua05hbWVzLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmgKaW5kZXggODdlMjgyM2Y5ZTcxYjY3YmQ0ODFlOGU4ODQxMWJhZDAwMTI2NGI5OC4uY2QzZmQw
ZDFlMjU5ZGFiNGUzM2E2OWFiNmFkMTg0NmQ5YWU1ZTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNhY2hlLmgKaW5kZXggM2Y1YmMzYTc1NmU2ODc5MWJhYzhkMzY4M2I2YzNjMTY3NDZkOWU0
Mi4uMzJlNzIyYmZhMjczNDU0YzRiNWExMTRlZjgwOTY0Mzc1MjM0Zjg2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCkBAIC0zMyw3ICszMyw2IEBAIGNs
YXNzIExheW91dFNpemU7CiBjbGFzcyBTVkdJbWFnZTsKIGNsYXNzIFNWR0ltYWdlRm9yQ29udGFp
bmVyOwogY2xhc3MgUmVuZGVyT2JqZWN0OwotY2xhc3MgVVJMOwogCiBjbGFzcyBTVkdJbWFnZUNh
Y2hlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXggNjk4MDZiZTY3NzAz
ZTJlOTQ5ZjM0MWQ1Yzk4NmE4NWVhMmQ3ZTI0Zi4uNGNmY2U4ZDRiMDM3ODU3OTE0MjI2N2FhNmI4
MDg3NjcxMjZiMDQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJGbG9hdFNp
emUuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIlNWR0ltYWdlLmgiCi0jaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBiMTFhMzI1OThhZjJmZGI4ZTgy
ZWYwYzc0YzNhZmVjY2E3ODk3ZDUzLi5iZjMxMzM0NjY0YjE1MTNjNThmNDU5NjAxZmM2NGQ4MTBi
NmY0MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00NTksNyArNDU5
LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkK
ICAgICAgICAgICAgIGJhY2tpbmctPnNldFRpbGVTaXplVXBkYXRlRGVsYXlEaXNhYmxlZEZvclRl
c3RpbmcoZmFsc2UpOwogICAgIH0KIAotICAgIFdlYkNvcmU6OmNsZWFyRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcoKTsKKyAgICBXVEY6OmNsZWFyRGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcoKTsKICAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
VmVjdG9yPFN0cmluZz4oKSk7CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdz
OjpzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoZmFsc2UpOwogICAgIFdlYkNvcmU6OkRlcHJlY2F0
ZWRHbG9iYWxTZXR0aW5nczo6c2V0VXNlc01vY2tTY3JvbGxBbmltYXRvcihmYWxzZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCmluZGV4IGUyZjg5YzUwNjI1YjM4M2UyZWJhNDQwMWE0
NGY5YzJhZTA4YzhmNGIuLmIyNDA0ZTI0Nzg1MzJiZTYyY2I0NzBkYmNiMDMyNmRjMWMyNGFiZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCkBAIC0zMiw4ICszMiw4IEBACiAjaW1w
b3J0ICJFdmVudEhhbmRsZXIuaCIKICNpbXBvcnQgIkhpdFRlc3RSZXN1bHQuaCIKICNpbXBvcnQg
IlJhbmdlLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgPHd0Zi9T
b2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKQEAgLTQ0LDcg
KzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgSW50ZXJuYWxzOjp1c2VyVmlz
aWJsZVN0cmluZyhjb25zdCBET01VUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6dXNl
clZpc2libGVTdHJpbmcodXJsLmhyZWYoKSk7CisgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVT
dHJpbmcodXJsLmhyZWYoKSk7CiB9CiAKIGJvb2wgSW50ZXJuYWxzOjp1c2VyUHJlZmVyc1JlZHVj
ZWRNb3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmNwcAppbmRleCA2NDhmYmQyNmZhYzM2YTY1Yzk5NTdjNTExNTc4ODc2NDZmMmRjMjYyLi41
MTE4MWRhZTcyZTEzZTJiYmQxNTNlODExYzE0MzY0ZDFjZDhhMTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lk
IE1vY2tDb250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZQogCiAgICAgVVJMIG1vZGlmaWVkUmVxdWVzdFVSTCB7IHJlcXVl
c3QudXJsKCksIG1vZGlmaWVkUmVxdWVzdFVSTFN0cmluZyB9OwogICAgIGlmICghbW9kaWZpZWRS
ZXF1ZXN0VVJMLmlzVmFsaWQoKSkgewotICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIk1v
Y2tDb250ZW50RmlsdGVyIGZhaWxlZCB0byBjb252ZXJ0ICVzIHRvIGEgV2ViQ29yZTo6VVJMLlxu
IiwgbW9kaWZpZWRSZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAg
TE9HKENvbnRlbnRGaWx0ZXJpbmcsICJNb2NrQ29udGVudEZpbHRlciBmYWlsZWQgdG8gY29udmVy
dCAlcyB0byBhICBVUkwuXG4iLCBtb2RpZmllZFJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCAxYTg0OGQ4OTlhNThlYjcw
MGU4YjQwMWRjYWMwZmNiM2IyMzQwNzQwLi5mNTZjNDg1ZTQ0NGY4MzYwOTI3MjUxNTc1MDYxMDZl
YWZjMDQyM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRD
b29yZGluYXRvci5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlICJNb2NrUGF5bWVudE1l
dGhvZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYXltZW50Q29vcmRpbmF0b3Iu
aCIKLSNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggZDI0MTIwNmEyOGRkNWY2
NDcwZGE5ZmI4NGU5ZWQ0ZmM3NGMyODdiMC4uNTgwOWYwYmVkZjBlN2EwNzE3MjhkMDllYjkyOTc0
N2M0YjRlZTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3Jl
VGVzdFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRl
c3RTdXBwb3J0LmNwcApAQCAtMzksMTIgKzM5LDEyIEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaCIKLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVz
dFRyaWdnZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SWRlbnRpZmllcklubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZVRlc3RT
dXBwb3J0IHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3Ry
YWN0V29ya2VyLmgKaW5kZXggOTAwYzJjYjQwNDYyYTBlYmUzNzAyOGEzNzVhNjMzZmVhZjk1MzRm
MS4uMDMyMWMyYzdmZWQyNTY2MjhmZjI2Y2VkOTEzYWViOGFmYzMwZTAzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaApAQCAtMzUsOCArMzUsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVSTDsKLQogY2xhc3MgQWJzdHJhY3RXb3JrZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxBYnN0cmFjdFdvcmtlcj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhIHsKIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggNWI5YTBiZTM2OWMyOTljMGZi
NzU0MTA3OGZjNzY1NmQ2ZGU3OWVjMS4uMjgyZGQwNmJjMzM4YTFlMDY5YTViZDQ2ZDg2M2ZjMzI5
ZDBiYTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApA
QCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCi0jaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVlLmgiCiAjaW5j
bHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaAppbmRleCAzNmJkMDA3MDdkMGE2OGRiMzA3NjI3
MmJhNjVmMzBhM2E5MjdmMWU3Li44NTg1YTViZmY5M2IwNDY2NWRlNTMyMWVkMzJiOTJmZmE5NzZh
MTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJv
eHkuaApAQCAtNDIsNyArNDIsNiBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKLWNsYXNz
IFVSTDsKIGNsYXNzIFdvcmtlcjsKIAogLy8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIg
Y29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVj
dG9yUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHku
aAppbmRleCBkZjQzNzFhZTIzYzMwMzA2ZWE3YmY2NDBkMjdmOWUxNGI5NzVlNGIyLi5hMWQzZWE3
NTc2ZTdlYTM0YTY0Y2I5MTU0N2RlNzZhY2Y1MThiZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1
ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckxvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9u
LmgKaW5kZXggNTNjNzc2MTU2NzU1YjcwNmI5ZDI0OTM3MTZhODEyNTI3ZmNhMzVmOC4uOTJjZmNj
NzcwNmYwMzRlNTdiOWY4MmU5YmEyN2JhM2E1MWEwOWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTG9jYXRpb24uaApAQCAtMjUsOCArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApp
bmRleCBlNTdjMzIzY2RlOWU2ZjRmODBhZjliMjViMmNmZTFlZTJlNzM3NGQ5Li4wNGE0MWMyMWNi
MmY3NTMxZmRlNjE5ZTRkNjdkZDU2NDQ5MDVmOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTMyLDExICszMiwxMSBAQAogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRl
ICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IGY2MDYzYWM2M2Fi
YjA2MDgzOGQ0Y2QwNDk3NDQ0NDVmY2EyYTQ0ODcuLjk3OTU1NDNlMWJmZTU4ODA0OWYzNmMxZjk1
NzEyYTFmMDJjMzZiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IlNvY2tldFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgotI2luY2x1
ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXb3JrZXJHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
IDx1dGlsaXR5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggZDcxNDEy
NDg1YTk2OTA0OWFkYjQ5NjU5NzRkYmU5MWY1ZWUxOTE4OS4uM2RjNTRmNmM0NzNkYjM3Njc1MjVk
MWNhNDEwM2Q1ZDZhNTZjOTY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5o
CkBAIC0zOSw3ICszOSw2IEBAIGNsYXNzIFNlc3Npb25JRDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOwotY2xhc3MgVVJM
OwogY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFz
cyBTb2NrZXRQcm92aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlci5oCmluZGV4IDliOWJjYzhhMjJmOWQ3NjcxMjk4OTdlYzAxZjM3YjJhNTUyMWI3
ZWQuLjdiMjM5ZjMwN2RhNzFlMTU2ZDg3YmEyMzUzYjUxYjFhMzMzNWZmZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaApAQCAtMzEsOSArMzEs
OSBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRGF0YS5oIgotI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IGNsYXNzIEpTVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmluZGV4IDE0M2Q3ZDllMDQ1ZDU0ZTExYThj
NmVkOWFjMTRlMzdiMTU2YTA1MjkuLmY5OTFmMzJjZTZkM2E5YjI1N2E1NjEyYjQ2MzY1YTY3OWFl
MmQxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xp
ZW50VHlwZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAKaW5kZXggM2IzYTk2NjYxZGE5OGI0OWIyYWE0ZjZhYTRkY2ZiZDMzNTk4MWQw
Yi4uOTY5YmQyMGFkNTBkNTk4NzY2YmIxYzRlYzhlMTgwNjg4MjUxZWE1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcApAQCAtNDgsOSArNDgsOSBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRh
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlclRocmVhZC5oIgotI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xP
R19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVwIC0gU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5l
IENPTlRBSU5FUl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNF
X0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwg
IiVwIC0gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmgKaW5kZXggM2JlOTUwNDI1ZWE3ODBjZmZkNWJiZWU3ODVmYTQ1MzJh
Zjk0YTNkNy4uNGQ2MjA4ODlmOTM0YTdlZmEyNjBiMzIwOWI0ZTE3NmIwMmFiMGQyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaApAQCAtMjksMTEgKzI5LDExIEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgotI2luY2x1ZGUg
IlVSTC5oIgotI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJEYXRhLmgKaW5kZXggNzI4YzM3Y2ZlNjJhNWZlNTYwYWI2YzRlYjE4NjRm
MDQ0NGNmOTM2ZS4uY2UzNjFkM2YzZDBmMzg3M2E4NmRjOGE5MzhiYWYwM2YxZDE2NGE1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRh
LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCi0jaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJKb2JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckpvYkRhdGEuaAppbmRleCAwODcwYmI2ZWY2MDI5ODQ1Y2Q0YTliNmRlMjMwMGE4
ODNjYWExYzIyLi45M2MyZGY2ZmYwZDJmMzk4ZTg0MTI2OGJlMTk2NjRmN2E5Y2U2NGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpv
YkRhdGEuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgotI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleS5jcHAKaW5kZXggMzg1YTcwNDdmYTg3OTk5ZjY0MzQ2NzAyY2NhMDQ4Yjc3OTll
ZTgzMy4uYmMyOTdkYTY2ZjUzZjRiN2I4NTE4NzA0NTZmZmJjYWIzZGEwYjZiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVVJM
SGFzaC5oIgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKaW5kZXggYzdjYjZkNTYwMGU5MzY5NDg2MTM5YzM4
YjgyMWYwNDkxNDMxOTliNS4uZWI5ZDdmYTAxNDhkYWU0MTA4MTA0YjlmYmNmNDlkN2Q5NTIyOGM0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleUhhc2ggewogdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IHsKICAgICBzdGF0aWMgV2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZW1wdHlLZXkoKTsgfQogCi0gICAgc3RhdGljIHZvaWQg
Y29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29wZShXZWJDb3JlOjpVUkwoSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKSk7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgc2xvdCkgeyBzbG90LnNldFNjb3BlKFVSTChI
YXNoVGFibGVEZWxldGVkVmFsdWUpKTsgfQogICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVl
KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgcmV0
dXJuIHNsb3Quc2NvcGUoKS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IGNjZWMwZGNl
ZmI4NjE5YmQyNTUyYjgzZjhlOWU2OWI0NDliZjhhYmEuLjI3ZjE1NGUxZmE2YzljMWRhNTc5MjU2
NDdjMThkNGY1YmMzOWJmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5oCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTY3JpcHRT
b3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1
ZS5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lv
bklELmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAppbmRleCBhZWFkMWJjMDhkOWQ0NmMxMmNkMzU2ODQ2ZDk3MTExMDc1MDBhNDhhLi5i
NDg5ZGIzOWZlN2FlN2NlYjE3ZTI0ZGU3YzdhNTJhOWYwMzk2ZjkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkZvcm1EYXRhLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2Fk
ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmNwcAppbmRleCBhY2Q2NWU5YzgwYTA2N2YyNzJhNThlMWQ5NzM1YzExZmU2NTEy
YTk0Li4xZmI0MTVlMmQyZDA4NjUzZWZjYTI3MWJlOWM4ZjBlYWU0NTRmZjM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuaAppbmRleCBkZTIyYzc5ZjhlOGQwZTJiODE3MjRmNjUxMTFhOWYxMGE1ZDIwMzY5
Li4zMjEwZTMyOTllNmZjYjgzMmZjMzljOGVkNmNhOGU2Njc4YmM2YmMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmgKQEAgLTQwLDcgKzQwLDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBVUkw7CiBzdHJ1Y3QgQ29va2llOwogfQogCkBAIC03OCw5ICs3Nyw5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCwgV2Fs
bFRpbWUsIENhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBzZXRDb29raWUoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2V0Q29va2ll
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5Eb2N1bWVudFVSTCwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJM
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIENh
bGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29raWVzKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIHZvaWQgZ2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
bWVzc2FnZXMuaW4KaW5kZXggZTNkZTlkOGNmYWI5ZmQ1ZjZmYjY4YTJjMDcxMDI2MmE4NTVkYzQ0
OC4uMGIxZmQ1NTllMGJlYjI2ZTAwMzc5NDM0YWRhZTRlNWM5ZTQ3ZGFhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI5LDkgKzI5LDkgQEAKICAgICB2b2lkIERlbGV0
ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiAgICAgdm9pZCBTZXRDb29r
aWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tp
ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBTZXRDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywg
V2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBTZXRDb29raWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgVVJMIHVybCwgVVJM
IG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9p
ZCBHZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisg
ICAgdm9pZCBHZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVDb29raWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZp
ZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCmluZGV4IGMyYjE0N2M1
ZjcyMWI5NTQwNzQ1YjY0OGQyMGJiY2I3Mjg0NzFhYmUuLjZlOTAyOGRiNWM5OTdiZDJhMzFmZWUx
OGEzM2MxMjRiN2ZmMTQyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0Nv
Y29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCkBAIC0zNCw4ICszNCw4IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNVUkxDb25uZWN0
aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5oCmluZGV4IGJkYmM4ZTE1MjYwNWFlZTc0NzE1ZmMzNmY0MTgwYzM3MGQ1NTViOGUuLmQ4ZmJk
ZDFkMzlkMmU5YWM1ODFhZjcwZDJiYTVkZmFiMTIzNmYyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtNzUsNyArNzUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1
bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsK
ICAgICB2b2lkIGNhbmNlbCgpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcHVibGlz
aFByb2dyZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
KTsKKyAgICB2b2lkIHB1Ymxpc2hQcm9ncmVzcyhjb25zdCBVUkwmLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJik7CiAjZW5kaWYKIAogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggN2QzYTFk
NzlmNmY3M2VmOTZlYzliOTdhOTY5ZjkyZWJlNGRkOGMwNi4uNzJjZDdlMWZlNzEyMjNkODkxZDUx
OTNiN2NhZThkOWZmNjI2MThjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC0xNjAsNyArMTYw
LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2FkKERvd25sb2FkSUQgZG93
bmxvYWRJRCkKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBEb3dubG9hZE1hbmFnZXI6
OnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6cHVibGlzaERvd25sb2FkUHJvZ3Jlc3Mo
RG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBVUkwmIHVybCwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICAgICBpZiAoYXV0byogZG93bmxv
YWQgPSBtX2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCkpCiAgICAgICAgIGRvd25sb2FkLT5wdWJs
aXNoUHJvZ3Jlc3ModXJsLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmgKaW5kZXggODA3ODQxMGRhMzM4ODBkZjBiZWFjNjJjN2ViNTAyMjM1MTAyNjg0MS4u
ZmJhZDg4OGUwNzljZWFiNmZhNDAyNjk5M2E0Y2UzODQ0OTRlZDQxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChE
b3dubG9hZElEKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHB1Ymxpc2hEb3dubG9h
ZFByb2dyZXNzKERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmKTsKKyAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2Fk
SUQsIGNvbnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKICNlbmRpZgogICAg
IAogICAgIERvd25sb2FkKiBkb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpIHsgcmV0dXJu
IG1fZG93bmxvYWRzLmdldChkb3dubG9hZElEKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKaW5kZXgg
YWVjNGRhMjIzNGM4MjFkODg3N2JjMjdmYTc4ODVkZTNhMzQ3NzU3OS4uYTBmOGU2YmZhYmUyMzdi
NDIyYWU1MTdjMDIwNDZlNmFiNDMyZjIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgUGVuZGluZ0Rvd25sb2FkOjpjYW5jZWwoKQogfQogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi12b2lkIFBlbmRpbmdEb3dubG9hZDo6cHVibGlzaFByb2dyZXNzKGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5z
aW9uKQordm9pZCBQZW5kaW5nRG93bmxvYWQ6OnB1Ymxpc2hQcm9ncmVzcyhjb25zdCBVUkwmIHVy
bCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbikKIHsKICAgICBB
U1NFUlQoIW1fcHJvZ3Jlc3NVUkwuaXNWYWxpZCgpKTsKICAgICBtX3Byb2dyZXNzVVJMID0gdXJs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVu
ZGluZ0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuaAppbmRleCA5NDQyZWRiYzQxOGJmZTViNjAzN2I5M2Q3MTY4NDhmYzEw
ZDI0ZmRiLi41OWQyZDAyYzdlOGVmM2VmN2EwM2UyZWRjMjdlYzgyZWJjOGE2NDI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWwoKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcHVibGlzaFByb2dyZXNzKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKKyAgICB2b2lkIHB1Ymxp
c2hQcm9ncmVzcyhjb25zdCBVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAgICAg
dm9pZCBkaWRCZWNvbWVEb3dubG9hZChjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+Jik7
CiAjZW5kaWYKIApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFdl
YkNvcmU6OlVSTCBtX3Byb2dyZXNzVVJMOworICAgIFVSTCBtX3Byb2dyZXNzVVJMOwogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBtX3Byb2dyZXNzU2FuZGJveEV4dGVuc2lvbjsKICNlbmRp
ZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCmluZGV4IDI1MTcxMDQxYjI0Yzk4NTNlMWRl
YTc1NGFiMWJhMmYyNmFiZGRjNDMuLmQzMGU0NzkyZWEyZTlmNGEzNjk4Zjk3ZTE4N2U3Nzk2ZmQy
NDRhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQpAQCAtOTksNyArOTksNyBAQCB2b2lk
IERvd25sb2FkOjpwbGF0Zm9ybURlc3Ryb3lEb3dubG9hZCgpCiAjZW5kaWYKIH0KIAotdm9pZCBE
b3dubG9hZDo6cHVibGlzaFByb2dyZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9h
ZDo6cHVibGlzaFByb2dyZXNzKGNvbnN0IFVSTCYgdXJsLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewogI2lmIFdLX0FQSV9FTkFCTEVECiAgICAg
QVNTRVJUKCFtX3Byb2dyZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBhZWUzOWYw
MGVmYmEzMzE0ZWI2ZmU5NDZmMTBkZmYzYzUwNTU4NTdlLi5mMmNiNDY3ZGM4NGUwN2M0MTU4ODli
MTk4ZTdmNmQ3NzRkMjZiOTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBAIC03MCw3ICs3
MCw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFk
ZCh1cmwpOwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nv
bm5lY3Rpb25DaGVjaykKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQog
ewogICAgIC8vIFRoZSBjb25uZWN0aW9uIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBpZiBOZXR3b3Jr
UHJvY2VzcyBwcmV2b3VzbHkgY3Jhc2hlZCBmb3IgYW55IHJlYXNvbi4KICAgICBCbG9iRm9yQ29u
bmVjdGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5m
aW5kKGNvbm5lY3Rpb24pOwpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKE5ldHdvcmtDb25uZWN0aW9u
VAogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5hZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxv
YlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKK3ZvaWQgTmV0d29y
a0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VS
TCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCiB7CiAgICAgLy8gVGhlIGNvbm5lY3Rpb24g
bWF5IG5vdCBiZSByZWdpc3RlcmVkIGlmIE5ldHdvcmtQcm9jZXNzIHByZXZvdXNseSBjcmFzaGVk
IGZvciBhbnkgcmVhc29uLgogICAgIEJsb2JGb3JDb25uZWN0aW9uTWFwOjppdGVyYXRvciBtYXBJ
dGVyYXRvciA9IG1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbik7CkBAIC0xMTAs
NyArMTEwLDcgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JT
bGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyoKICAgICBtYXBJdGVyYXRvci0+dmFs
dWUuYWRkKHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJs
b2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKQordm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxv
YlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gbWF5IG5vdCBiZSByZWdpc3RlcmVkIGlm
IE5ldHdvcmtQcm9jZXNzIHByZXZvdXNseSBjcmFzaGVkIGZvciBhbnkgcmVhc29uLgogICAgIEJs
b2JGb3JDb25uZWN0aW9uTWFwOjppdGVyYXRvciBtYXBJdGVyYXRvciA9IG1fYmxvYnNGb3JDb25u
ZWN0aW9uLmZpbmQoY29ubmVjdGlvbik7CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyogY29ubmUKICAgICBtYXBJdGVyYXRvci0+dmFsdWUucmVtb3ZlKHVybCk7CiB9CiAKLXVp
bnQ2NF90IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3VpbnQ2NF90
IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIW1fYmxvYnNGb3JD
b25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb24pIHx8ICFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5m
aW5kKGNvbm5lY3Rpb24pLT52YWx1ZS5jb250YWlucyh1cmwpKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OmNvbm5lY3Rpb25U
b1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUAogICAgIG1fYmxvYnNG
b3JDb25uZWN0aW9uLnJlbW92ZShjb25uZWN0aW9uKTsKIH0KIAotVmVjdG9yPFJlZlB0cjxCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYihOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpCitWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9i
UmVnaXN0cnk6OmZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIW1fYmxvYnNGb3JDb25uZWN0aW9u
LmNvbnRhaW5zKCZjb25uZWN0aW9uKSB8fCAhbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZCgmY29u
bmVjdGlvbiktPnZhbHVlLmNvbnRhaW5zKHVybCkpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JS
ZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtC
bG9iUmVnaXN0cnkuaAppbmRleCA4YmRhZTIyMWQxZTIwZGQ4Njc0OTRjM2Y1MzhiMWE4M2RhMGJh
ZDM4Li42MDYyNWZhMTgwMWNjNDRhZTNkNDQwNThkNTZmMTE3OWNhMWNjMjRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3Ry
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxv
YlJlZ2lzdHJ5LmgKQEAgLTI1LDEwICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U7CkBAIC00NiwyNSArNDYsMjUgQEAgcHVibGljOgogICAgIE5ldHdvcmtCbG9iUmVn
aXN0cnkoKTsKICAgICBzdGF0aWMgTmV0d29ya0Jsb2JSZWdpc3RyeSYgc2luZ2xldG9uKCk7CiAK
LSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VS
TCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spOwotICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgY29uc3Qg
U3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAg
dm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2
NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIHVp
bnQ2NF90IGJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2Vi
Q29yZTo6VVJMJik7CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8
U2FuZGJveEV4dGVuc2lvbj4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBV
UkwmLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29u
bmVjdGlvbkNoZWNrKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50NjRf
dCBzdGFydCwgaW50NjRfdCBlbmQpOworICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBVUkwmKTsKKyAgICB1aW50NjRfdCBibG9i
U2l6ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFVSTCYpOwogICAgIHZv
aWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2
b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiBibG9iVVJMLCBjb25z
dCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4mJik7
CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgYmxvYlVSTCwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOwog
CiAgICAgdm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAg
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJs
b2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBVUkwmKTsKKyAgICBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVzSW5CbG9iKGNv
bnN0IFVSTCYpOwogCiBwcml2YXRlOgogICAgIH5OZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CiAKLSAg
ICB0eXBlZGVmIEhhc2hNYXA8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBIYXNoU2V0
PFdlYkNvcmU6OlVSTD4+IEJsb2JGb3JDb25uZWN0aW9uTWFwOworICAgIHR5cGVkZWYgSGFzaE1h
cDxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIEhhc2hTZXQ8VVJMPj4gQmxvYkZvckNv
bm5lY3Rpb25NYXA7CiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXAgbV9ibG9ic0ZvckNvbm5lY3Rp
b247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYmVjOTY2ODVlMWZhOGEzYzlj
MGQwMjc2ZjcxOWRlYzBjNjk1ODJlMC4uZGZlNDAwZGZlZDI2ZDM2YzljZGY5OGYyMmNhM2U5YzUx
MjQxNGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTUwLDMxICsxNTAsMzEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50
aWZpZXIpOwogICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKTsK
ICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgYm9vbCk7
Ci0gICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFVSTCk7CisgICAgdm9pZCBjcm9zc09y
aWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgVVJMJiBy
ZWRpcmVjdFVSTCk7CiAgICAgdm9pZCBzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3du
bG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZE5hbWUgPSB7IH0pOwogICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCi0gICAgdm9pZCBjb29raWVzRm9yRE9NKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29r
aWVzQWNjZXNzZWQpOwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcywgU3RyaW5nJiBjb29raWVTdHJpbmcsIGJvb2wmIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCk7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY29va2llc0Vu
YWJsZWQoUEFMOjpTZXNzaW9uSUQsIGJvb2wmIHJlc3VsdCk7Ci0gICAgdm9pZCBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBTdHJpbmcmIGNvb2tp
ZVN0cmluZywgYm9vbCYgc2VjdXJlQ29va2llc0FjY2Vzc2VkKTsKLSAgICB2b2lkIGdldFJhd0Nv
b2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwot
Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25D
aGVjayk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5n
JiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOwotICAgIHZvaWQgYmxv
YlNpemUoY29uc3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3QmIHJlc3VsdFNpemUpOwotICAgIHZv
aWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBTdHJpbmcmIGNvb2tpZVN0cmluZywgYm9v
bCYgc2VjdXJlQ29va2llc0FjY2Vzc2VkKTsKKyAgICB2b2lkIGdldFJhd0Nvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAg
IHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUpOworCisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBib29sIHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayk7CisgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwm
IHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSk7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOworICAgIHZvaWQg
YmxvYlNpemUoY29uc3QgVVJMJiwgdWludDY0X3QmIHJlc3VsdFNpemUpOworICAgIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7CiAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRh
VG9DYWNoZShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YUtleSYsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1l
dHJpY3NFbmFibGVkKGJvb2wpOwogCi0gICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oV2ViQ29y
ZTo6VVJMJiYsIFBBTDo6U2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90
KTsKKyAgICB2b2lkIGNyZWF0ZVNvY2tldFN0cmVhbShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIFN0
cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QpOwogICAgIHZvaWQgZGVzdHJveVNvY2tldFN0
cmVhbSh1aW50NjRfdCk7CiAgICAgCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCA0NWIwMDc0MjZhN2E1MmY3YzM2MjRkZjRiZWFmM2FiNDNiYjUzZGMxLi45NTk0ZWYyMzc1
NzYzYmEwOGUzZjIzM2M2MWViMmI2OWQ1MjY5YjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDI3ICszNCwyNyBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3du
bG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5h
bWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVD
b29raWVzKSBMZWdhY3lTeW5jCi0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgU3RyaW5nIGNv
b2tpZVN0cmluZykKKyAgICBDb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
VVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZv
LCBVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlk
QWNjZXNzU2VjdXJlQ29va2llcykgTGVnYWN5U3luYworICAgIFNldENvb2tpZXNGcm9tRE9NKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFN0cmluZyBjb29raWVT
dHJpbmcpCiAgICAgQ29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAo
Ym9vbCBlbmFibGVkKSBMZWdhY3lTeW5jCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFdlYkNvcmU6OlVSTCB1cmws
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1
cmVDb29raWVzKSBMZWdhY3lTeW5jCi0gICAgR2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbywgV2ViQ29yZTo6VVJMIHVybCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSAtPiAoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgTGVnYWN5U3luYwotICAgIERlbGV0ZUNvb2tpZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBjb29raWVO
YW1lKQorICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2Ft
ZVNpdGVJbmZvLCBVUkwgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcs
IGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgTGVnYWN5U3luYworICAgIEdldFJhd0Nvb2tp
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIExlZ2FjeVN5bmMKKyAgICBEZWxldGVDb29raWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAot
ICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5nIHBhdGgsIFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNv
bnRlbnRUeXBlKQotICAgIFJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsLCBWZWN0b3I8
V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQotICAgIFJl
Z2lzdGVyQmxvYlVSTEZyb21VUkwoV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VS
TCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spCi0gICAgUmVnaXN0ZXJCbG9iVVJM
T3B0aW9uYWxseUZpbGVCYWNrZWQoV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VS
TCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJpbmcgY29udGVudFR5cGUpCi0gICAgUmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VSTCwg
aW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCi0gICAgVW5yZWdpc3RlckJsb2JVUkwoV2ViQ29y
ZTo6VVJMIHVybCkKLSAgICBCbG9iU2l6ZShXZWJDb3JlOjpVUkwgdXJsKSAtPiAodWludDY0X3Qg
cmVzdWx0U2l6ZSkgTGVnYWN5U3luYworICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwg
U3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhh
bmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQorICAgIFJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsLCBW
ZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQor
ICAgIFJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoVVJMIHVybCwgVVJMIHNyY1VSTCwgYm9vbCBzaG91
bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spCisgICAgUmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoVVJMIHVybCwgVVJMIHNyY1VSTCwgU3RyaW5nIGZpbGVCYWNrZWRQYXRoLCBTdHJp
bmcgY29udGVudFR5cGUpCisgICAgUmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoVVJMIHVybCwgVVJM
IHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCisgICAgVW5yZWdpc3RlckJsb2JV
UkwoVVJMIHVybCkKKyAgICBCbG9iU2l6ZShVUkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6
ZSkgTGVnYWN5U3luYwogICAgIFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFZlY3RvcjxTdHJp
bmc+IGJsb2JVUkxzKSAtPiAoVmVjdG9yPFN0cmluZz4gZmlsZU5hbWVzKSBBc3luYwogCiAgICAg
U3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGFLZXkga2V5
LCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSkKIAogICAgIFNldENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCi0gICAgQ3JlYXRl
U29ja2V0U3RyZWFtKFdlYkNvcmU6OlVSTCB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
U3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIENyZWF0ZVNv
Y2tldFN0cmVhbShVUkwgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNo
ZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKIAogICAgIEVuc3VyZUxlZ2FjeVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5jcHAKaW5kZXggY2Y0ZTY0ZDUwM2YxYTllZTBiZGM1ZTBkNTI4YzQ3
ZjI5NDI5YTY0MS4uMDU5YTEzMDE0M2JhNWYzYTdlMGQxZWIxYjE0NjZmYTkxZmEwYjk5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcApA
QCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvCiAgICAgaWYgKHJlc3Bv
bnNlLmlzSFRUUDA5KCkpIHsKICAgICAgICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7Ci0gICAgICAg
IGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwu
cHJvdG9jb2woKSkpIHsKKyAgICAgICAgaWYgKHBvcnQgJiYgIVdURjo6aXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAgICAgICBjYW5j
ZWwoKTsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcih7IFN0cmlu
ZygpLCAwLCB1cmwsICJDYW5jZWxsZWQgbG9hZCBmcm9tICciICsgdXJsLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVzZSBpdCBpcyB1c2luZyBIVFRQLzAuOS4iIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5jcHAKaW5kZXggNjVlYWJiMmJmM2I1OWQyZmQ0N2FhNDEyNjVkZmY2OTk0OGIzODBkYi4u
ZDczYTZlYTZmZjEyYzMwNGJmYTc0YmFiOTViZTZhZWVlNjZiODk5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC00
OCw5ICs0OCw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCA5ZWJh
YzhmNTM5NWY0MmYzYWU3ODFiN2Y1MDRhNjI4ZTUxZjdhYjhlLi42YmRlMTdjY2Q2NWIxY2FmM2Jk
YTY5MzRhMjhjOTc3M2MwOTI3YjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyOwogCiBjbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya0xvYWRDaGVja2VyPiB7CiBwdWJsaWM6Ci0gICAgTmV0
d29ya0xvYWRDaGVja2VyKFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFw
JiYsIFdlYkNvcmU6OlVSTCYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdl
YkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgc2hvdWxkQ2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UpOworICAgIE5ldHdvcmtMb2FkQ2hl
Y2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwmJiwg
UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xp
Y3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcyA9IGZhbHNlKTsKICAgICB+TmV0d29ya0xvYWRDaGVja2VyKCk7CiAKICAgICB1c2lu
ZyBSZXF1ZXN0T3JFcnJvciA9IEV4cGVjdGVkPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcj47CkBAIC02OSwxNCArNjksMTQgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRDU1BSZXNwb25zZUhlYWRlcnMoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzJiYgaGVhZGVycykgeyBtX2NzcFJlc3BvbnNlSGVhZGVycyA9IFdURk1v
dmUoaGVhZGVycyk7IH0KICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIHZvaWQg
c2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoV2ViQ29yZTo6VVJMJiYgbWFpbkRvY3VtZW50
VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50
aWZpZXIpCisgICAgdm9pZCBzZXRDb250ZW50RXh0ZW5zaW9uQ29udHJvbGxlcihVUkwmJiBtYWlu
RG9jdW1lbnRVUkwsIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cj4gaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIG1fbWFpbkRvY3VtZW50VVJMID0gV1RGTW92
ZShtYWluRG9jdW1lbnRVUkwpOwogICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIgPSBpZGVudGlmaWVyOwogICAgIH0KICNlbmRpZgogCi0gICAgY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkg
Y29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k7IH0KIAogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkSW5mb3JtYXRpb24g
dGFrZU5ldHdvcmtMb2FkSW5mb3JtYXRpb24oKSB7IHJldHVybiBXVEZNb3ZlKG1fbG9hZEluZm9y
bWF0aW9uKTsgfQpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb250aW51
ZUNoZWNraW5nUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgVmFsaWRhdGlvbkhh
bmRsZXImJik7CiAKLSAgICBib29sIGRvZXNOb3ROZWVkQ09SU0NoZWNrKGNvbnN0IFdlYkNvcmU6
OlVSTCYpIGNvbnN0OworICAgIGJvb2wgZG9lc05vdE5lZWRDT1JTQ2hlY2soY29uc3QgVVJMJikg
Y29uc3Q7CiAgICAgdm9pZCBjaGVja0NPUlNSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGNoZWNrQ09SU1JlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsK
ICAgICB2b2lkIGNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBWYWxpZGF0aW9uSGFuZGxlciYmKTsKQEAgLTExOCwxMSArMTE4LDExIEBAIHBy
aXZhdGU6CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJN
YXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgog
ICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVk
ZWQgZm9yIENPUlMgY2hlY2tzLgotICAgIFdlYkNvcmU6OlVSTCBtX3VybDsKKyAgICBVUkwgbV91
cmw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKICAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cz4gbV9jc3BSZXNwb25zZUhlYWRlcnM7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
LSAgICBXZWJDb3JlOjpVUkwgbV9tYWluRG9jdW1lbnRVUkw7CisgICAgVVJMIG1fbWFpbkRvY3Vt
ZW50VVJMOwogICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cj4gbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiAKQEAgLTEzMSw3
ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1NpbXBsZVJlcXVlc3QgeyB0cnVlIH07
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9j
b250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgc2l6ZV90IG1fcmVkaXJlY3RDb3VudCB7IDAgfTsK
LSAgICBXZWJDb3JlOjpVUkwgbV9wcmV2aW91c1VSTDsKKyAgICBVUkwgbV9wcmV2aW91c1VSTDsK
ICAgICBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3kgbV9wcmVmbGlnaHRQb2xpY3k7CiAgICAgU3Ry
aW5nIG1fZG50SGVhZGVyVmFsdWU7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGE5OTY4MDli
MDYzMWQyNWI5YmVkNDkzMmI1MzE3ZGM1ZDRkMGM2OTcuLmFiZDQ3ODgxOGFkYTU0M2ZkYjUwMzlm
OGEwMzhmYjdmNGY1NzU5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCkBAIC03NiwxMyArNzYsMTMgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5I
YXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9B
bGdvcml0aG1zLmg+CiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgog
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIApAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICNlbmRpZgogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZUZvcldy
aXRpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGhhbmRsZUZv
cldyaXRpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBleHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RG
TW92ZShoYW5kbGVGb3JXcml0aW5nKSk7CiAgICAgaWYgKCFleHRlbnNpb24pIHsKQEAgLTgxNiw3
ICs4MTYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElE
IGRvd25sb2FkSUQpCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwdWJsaXNoRG93bmxvYWRQcm9ncmVz
cyhEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFVSTCYgdXJsLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewogICAgIGRvd25sb2FkTWFuYWdl
cigpLnB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKGRvd25sb2FkSUQsIHVybCwgV1RGTW92ZShzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKSk7CiB9CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0XwogICAgICAgICBjYWxsYmFjayhTdHJpbmcgeyBjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkgfSwgcXVvdGEpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8o
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVj
dFRvKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSkKIHsKICNpZiBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1QpCiAg
ICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNWQ3OTliNDMwNDk1NTNiOWRlMzgw
NTcwZWQxNTY1YzIzZmFiMGU5NS4uZTY3Nzg1YzhkY2ViZWExNzc5NmE3YmYwYzQ0MGZkY2MwODdk
ZGUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aApAQCAtNjYsNyArNjYsNiBAQCBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgU1dTZXJ2ZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFVS
TDsKIGVudW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgOiBib29sOwogc3RydWN0IE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKQEAgLTE3
Miw3ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2FjaGVTdG9yYWdlUGFyYW1ldGVyc0Nh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmLCB1aW50NjRfdCBx
dW90YSk+OwogICAgIHZvaWQgY2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCwg
Q2FjaGVTdG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNrJiYpOwogCi0gICAgdm9pZCBwcmVjb25uZWN0
VG8oY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kp
OworICAgIHZvaWQgcHJlY29ubmVjdFRvKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5KTsKIAogICAgIHZvaWQgc2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbihQQUw6OlNlc3Npb25JRCwgYm9vbCk7CiAgICAgYm9vbCBzZXNzaW9uSXNDb250cm9sbGVk
QnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKQEAgLTI3NSw3ICsyNzQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2Fk
SUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CiAgICAgdm9pZCBjYW5jZWxEb3dubG9h
ZChEb3dubG9hZElEKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHB1Ymxpc2hEb3du
bG9hZFByb2dyZXNzKERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmKTsKKyAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25s
b2FkSUQsIGNvbnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKICNlbmRpZgog
ICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRE
ZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKQEAgLTI5MCw3ICsyODksNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3luY0FsbENvb2tpZXMoKTsKICAgICB2b2lkIGRpZFN5bmNBbGxD
b29raWVzKCk7CiAKLSAgICB2b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQ
YXRoKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAjaWYgVVNFKFNPVVAp
CiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBm
MWUwNDM3ZGZmNmNhYWUxNTE5NjkwMDMzYzhhODg1NGQ5YmUzZTNjLi41MDc5NWEyODIyNzliMTM2
NzE2MDA5MWIyOGFkOWM3MWIwM2Q1ZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTUwLDcgKzUwLDcg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlc3Vt
ZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKICAg
ICBDYW5jZWxEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCkKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICBQdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhXZWJLaXQ6OkRvd25sb2Fk
SUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKKyAgICBQdWJsaXNoRG93bmxvYWRQcm9n
cmVzcyhXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgVVJMIHVybCwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKICNlbmRpZgogCiAg
ICAgQ29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQpAQCAtODAsOSArODAsOSBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2FuY2VsUHJlcGFy
ZVRvU3VzcGVuZCgpCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgpCiAKLSAgICBXcml0ZUJsb2JUb0Zp
bGVQYXRoKFdlYkNvcmU6OlVSTCBibG9iVVJMLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlKSAtPiAoYm9vbCBzdWNjZXNzKSBBc3luYworICAgIFdy
aXRlQmxvYlRvRmlsZVBhdGgoVVJMIGJsb2JVUkwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCiAKLSAg
ICBQcmVjb25uZWN0VG8oV2ViQ29yZTo6VVJMIHVybCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBQcmVjb25u
ZWN0VG8oVVJMIHVybCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQmxvY2ssIHVp
bnQ2NF90IGNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkNjM3MzhhZWVj
OGEzNTM1ZDA5NjEwMzY5ZTc4NjQ5MWIxZTlkMmY5Li4yNzQzZTEyOWM4NzlmNmIwYzI1YzIxMWJh
MDA4OTM5NzhhM2EwYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4g
ZnJhbWVBbmNlc3Rvck9yaWdpbnM7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQot
ICAgIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1lbnRVUkw7CisgICAgVVJMIG1haW5Eb2N1bWVudFVS
TDsKICAgICBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggYmIxZmI2YmEyOTE0YTYzOGI4NDgyNWY2ZjU3YWVlY2Q1MWU5NmYwYy4uODJhODU1MDFkMmM1
YzY3Zjk1ZTEzNDFjZWI3MTkwN2VkZWI0MmYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTAxMyw3ICsx
MDEzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9u
KCkgY29uc3QKICAgICBsb2dDb29raWVJbmZvcm1hdGlvbigiTmV0d29ya1Jlc291cmNlTG9hZGVy
IiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNl
c3Npb24sIG9yaWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRl
SW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCks
IG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBp
ZGVudGlmaWVyKCkpOwogfQogCi1zdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRp
b24oY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIGxv
Z0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lk
KiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFT
U0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDQwLDcgKzEwNDAsNyBA
QCBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkTwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9
CiAKLXN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5n
JiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIGxvZ0Nvb2tp
ZUluZm9ybWF0aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9n
Z2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAg
ICBBU1NFUlQoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlv
bihuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggMmUy
ZGRkM2NmYjQ3OTAxNWFlYTliYTZjYWUwZmYyYWIyYmExY2M3OS4uYzJkNWQ3NzZiNzNmZmI3NjAx
ZGZlNThmZjE2NDkzNDhjZmU4YTg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24o
Y29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1h
dGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbihjb25z
dCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKTsKICNlbmRpZgogCiBw
cml2YXRlOgpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaFdp
bGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiYmKTsKICAgICB2b2lkIGNvbnRpbnVl
UHJvY2Vzc2luZ0NhY2hlZEVudHJ5QWZ0ZXJEaWRSZWNlaXZlUmVzcG9uc2Uoc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+KTsKIAotICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9h
ZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7Cisg
ICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcm
LCBjb25zdCBVUkwmKTsKICAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFu
Y2VzdG9yc09yWEZyYW1lT3B0aW9ucyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CiAKICAgICBlbnVtIGNsYXNzIEZpcnN0TG9hZCB7IE5vLCBZZXMgfTsKQEAgLTE2OSw3ICsxNjks
NyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50CiAgICAg
dm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2VuZENTUFZpb2xhdGlv
blJlcG9ydChXZWJDb3JlOjpVUkwmJiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQoVVJMJiYsIFJlZjxXZWJDb3JlOjpGb3Jt
RGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBlbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25F
dmVudChXZWJDb3JlOjpTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYpIGZpbmFs
OwogCiAgICAgdm9pZCBsb2dTbG93Q2FjaGVSZXRyaWV2ZUlmTmVlZGVkKGNvbnN0IE5ldHdvcmtD
YWNoZTo6Q2FjaGU6OlJldHJpZXZlSW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggNDJkMzZiYzRjYzNmZTQz
MmYzNTI0YzgzYjBjOWY4ODRlOGQ3NDQzYy4uYzVhNjJjNjhmZTlkYTY1NmU0MjMzZmJkMTM2OWEy
YzY2MWUyOWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TmV0d29ya1NvY2tldFN0cmVhbT4g
TmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFdlYkNvcmU6OlVSTCYmIHVybCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2
NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGlj
YXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKQorUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5l
dHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlm
aWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRU
b2tlbiYmIGF1ZGl0RGF0YSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU29j
a2V0U3RyZWFtKFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBp
ZGVudGlmaWVyLCBjb25uZWN0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXgg
OTA2ZTU4ZWJmNTc0MjVkNjgzNzcwODkxNjg1ZmRhYmQyYTgzN2JjOC4uMzI2ODcxNmY0NDY5YzA5
OTNmMjU5N2QwOWNiZTE1ODhlNmYyM2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKQEAgLTM5LDE0ICszOSwxMyBAQCBjbGFz
cyBEYXRhUmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgTmV0d29ya1NvY2tldFN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRT
dHJlYW0+LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFdlYkNvcmU6OlVS
TCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1
aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRp
dFRva2VuJiYpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFVS
TCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1
aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRp
dFRva2VuJiYpOwogICAgIH5OZXR3b3JrU29ja2V0U3RyZWFtKCk7CiAKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtNjcsNyAr
NjYsNyBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGZpbmFsOwogCi0gICAgTmV0d29ya1NvY2tldFN0cmVhbShXZWJDb3JlOjpVUkwmJiwgUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQ
Qzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsK
KyAgICBOZXR3b3JrU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2Vi
Q29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogCiAgICAgdWludDY0X3QgbV9p
ZGVudGlmaWVyOwogICAgIElQQzo6Q29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDlmMGM2Yjg2YjQyMGY0NTViZmZjMmRl
NmI5NGViZTdjOGJlMTQzYTAuLmQ0NTQzZjIzNWI5MDQ3YzU3MDljODFmZmRhMzg2MWM1OWY3ODQy
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTM2LDcgKzM2
LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsK
IGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTEsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIH5QaW5nTG9hZCgpOwog
Ci0gICAgY29uc3QgV2ViQ29yZTo6VVJMJiBjdXJyZW50VVJMKCkgY29uc3Q7CisgICAgY29uc3Qg
VVJMJiBjdXJyZW50VVJMKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdDsKIAogICAgIHZvaWQgd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCAyY2E2NjI1ZDFjMDBlNmQyN2Q1
MjU4ODYxNzIxZmNjNTBiNTM0YjU1Li45ZDE3MDM3ODk0ZjViNTExMDM4ZGUwNmJhZDA5ZGQ3ZjYz
NGM3ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC05MCw4ICs5
MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydEZldGNoKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmLCBTdHJpbmcmJiByZWZlcnJlcik7CiAgICAgdm9pZCBjYW5jZWxGZXRj
aChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyKTsKIAotICAgIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24odWludDY0X3Qg
cmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMKTsK
LSAgICB2b2lkIGdldFJlZ2lzdHJhdGlvbnModWludDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmln
aW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMKTsKKyAgICB2b2lkIG1hdGNoUmVnaXN0
cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVu
dFVSTCk7CisgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1h
dGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
dG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCk7CiAKICAgICB2b2lkIHJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4s
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+Jik7CiAgICAgdm9p
ZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggOGFjZjc5Nzk0YmNjZWM4OWRjYTg4OTBmYTY2MDIz
OGRlYjJjMjA1OS4uZDUzM2MzNWM5YjdlYjQyYzg4NmNkMWNhOTc4YWM4NzU2OGQ5ZWRiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBA
IC0zNiw5ICszNiw5IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVjdGlvbiB7CiAKICAg
ICBEaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5IGtleSkKIAotICAgIE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHNlcnZp
Y2VSZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgV2ViQ29yZTo6VVJMIGNsaWVudFVSTCkKLSAgICBX
aGVuUmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3Qgc2VydmljZVJlZ2lzdHJhdGlvbk1hdGNoUmVx
dWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3Jp
Z2luLCBXZWJDb3JlOjpVUkwgY2xpZW50VVJMKQotICAgIEdldFJlZ2lzdHJhdGlvbnModWludDY0
X3Qgc2VydmljZVJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luLCBXZWJDb3JlOjpVUkwgY2xpZW50VVJM
KQorICAgIE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHNlcnZpY2VSZWdpc3RyYXRpb25NYXRj
aFJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRv
cE9yaWdpbiwgVVJMIGNsaWVudFVSTCkKKyAgICBXaGVuUmVnaXN0cmF0aW9uUmVhZHkodWludDY0
X3Qgc2VydmljZVJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luLCBVUkwgY2xpZW50VVJMKQorICAgIEdl
dFJlZ2lzdHJhdGlvbnModWludDY0X3Qgc2VydmljZVJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElk
ZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luLCBV
UkwgY2xpZW50VVJMKQogICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChzdHJ1Y3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgc3RydWN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhIGRhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIpCiAgICAgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCmluZGV4IGQ4NmFiNjA5Mzk3NzY1YzViYmZhNzkzNTRhMTE1YjdjNzQ5
MWQyN2UuLjYxMTY5MmQxOTQ5OTcyZmViMWUzY2U4NWI4OGI4NTg1NTlmZTY0YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpAQCAtMzUsNyArMzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24gewogICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIgY2xpZW50SWRlbnRpZmllcik7CiAgICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxS
ZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVl
cnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50
aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKLSAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwgc2NyaXB0VVJMLCBTdHJpbmcgc2NyaXB0
LCBXZWJDb3JlOjpVUkwgcmVzcG9uc2VVUkwsIFN0cmluZyBtaW1lVHlwZSk7CisgICAgU2V0U2Ny
aXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
VVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgVVJMIHJlc3BvbnNlVVJMLCBTdHJpbmcgbWlt
ZVR5cGUpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuY3BwCmluZGV4IGY1ZDEzNjI2NDZiMWVlYWQwYjUzYzk0NjM1NmU5NjE5NDg1OGE5MGMuLjJi
OWU1NDNiOTQ2MTU1NGI0M2NmYWFiYmM3OGM3MDdiY2UyYjY1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5j
cHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcgogfQogCiAKLXZv
aWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6OnJldHJp
ZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVVJMJiYgdXJsLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgZnJvbShzZXNzaW9uSUQsIFtjYWNoZUlkZW50aWZpZXIsIHVy
bCA9IFdURk1vdmUodXJsKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5n
aW5lKSBtdXRhYmxlIHsKICAgICAgICAgZW5naW5lLnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50
aWZpZXIsIFdURk1vdmUodXJsKSwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMjQ3LDcgKzI0Nyw3
IEBAIHZvaWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlCiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpy
ZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJiB1
cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6OnJldHJpZXZlUmVj
b3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCwgUmVjb3Jkc0NhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgcmVhZENhY2hlKGNhY2hlSWRlbnRpZmllciwgW3VybCA9IFdU
Rk1vdmUodXJsKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVPckVycm9yJiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5oCmluZGV4IDhjMmU4Y2NlMTRkODEyOTA5N2Y3MWFjMjFlMjZlMzYxZmQ2ZDY4MzMu
LjdlMTQyMjViZWU1MGE5NzdiNWZjOTI1MTQ2NTQ2N2JiMzRkODM1MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
aApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKICAgICBzdGF0aWMgdm9pZCByZXRyaWV2
ZUNhY2hlcyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIHVpbnQ2NF90
IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJh
Y2smJik7CiAKLSAgICBzdGF0aWMgdm9pZCByZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgc3RhdGljIHZvaWQgcmV0cmlldmVS
ZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmLCBX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwogICAgIHN0YXRpYyB2
b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
VmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogICAgIHN0YXRpYyB2b2lk
IGRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9w
dGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJh
Y2smJik7CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJNZW1v
cnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNl
bnRhdGlvbigpOwogCi0gICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpVUkwmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHND
YWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYp
OwogICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKICAgICB2b2lkIGRlbGV0ZU1hdGNoaW5n
UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5o
CmluZGV4IDdmYjZlMDgxOGVjMjQxNTk1ZjgyYzY3NzJjODRiNWUzMjBjZjc2MTUuLjg5ODAxOGU0
ZWEzN2ZiMTJmYjYzMmIxOTJmZThhZWExYzcxNDY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RydWN0IFJlY29yZEluZm9ybWF0aW9uIHsKIAogICAgIHVp
bnQ2NF90IHNpemUgeyAwIH07CiAKLSAgICBXZWJDb3JlOjpVUkwgdXJsOworICAgIFVSTCB1cmw7
CiAgICAgYm9vbCBoYXNWYXJ5U3RhciB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4gdmFyeUhlYWRlcnM7CiB9OwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU3RyaW5nJiB1bmlxdWVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVOYW1lOyB9CiAg
ICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OlVuaW5p
dGlhbGl6ZWQ7IH0KIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgdm9p
ZCByZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZHNDYWxsYmFjayYmKTsKICAgICBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZv
IGluZm8oKSBjb25zdCB7IHJldHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07IH0KIAogICAg
IHZvaWQgcHV0KFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKQEAgLTk0
LDggKzk0LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERlY29kZWRSZWNv
cmQ+IGRlY29kZVJlY29yZEhlYWRlcihjb25zdCBOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OlJlY29y
ZCYpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNG
cm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZv
cm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAg
IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0IFVSTCYpOwor
ICAgIGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIHJlY29yZHNGcm9tVVJMKGNvbnN0
IFVSTCYpIGNvbnN0OwogICAgIFJlY29yZEluZm9ybWF0aW9uJiBhZGRSZWNvcmQoVmVjdG9yPFJl
Y29yZEluZm9ybWF0aW9uPiosIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQm
KTsKIAogICAgIHZvaWQgc3RvcmVSZWNvcmRzKFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnND
YWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCmluZGV4IDVm
NmVhYzhhMWFlMWQ3ZThlZjU5ODZiN2Y3YTFiNDUxNWE1ZDA4M2QuLjNlMzI1MTdlOTRiZGZjZjNi
ZWRiMjEwM2ExMmU4ZTRjODZjNGM1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcQogICAgIH0p
OwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jk
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmIHVybCkKK3ZvaWQgQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVVJMJiYgdXJsKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
UmVjb3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hlICUiIFBSSXU2NCwgcmVxdWVzdElkZW50aWZp
ZXIsIGNhY2hlSWRlbnRpZmllcik7CiAgICAgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMoc2Vzc2lv
bklELCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUodXJsKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVm
KG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVy
XShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24uaAppbmRleCBiYzg4MGY1ZWI1ODlhZWRjZmVlNDVhMjM0MTgzOGIyNTNkYmE2MTA0Li42YTNk
ZGM2M2QyYTA4ODVjYTRjNTE0MjVlNTZjM2E1Y2M5NjgzYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVt
b3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZW1vdmVSZXF1ZXN0SWRlbnRpZmllciwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlmaWVyLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JiwgdWludDY0X3QgdXBkYXRlQ291bnRlcik7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBB
TDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBVUkwmJik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0
aW9ucyYmKTsKICAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGUzMTA3ZTIwMTQ2ZDU5MDAzYjIwNmIx
ZGVkZjZmODYzY2I4YzU1ZWUuLjYwZTM5YWEyYzQwNWRjYzk4YWFhOTIwMDk0YWUxMGQ4ZWFiNTQz
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbiB7CiAgICAgQ2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIG9yaWdpbik7CiAgICAgRW5naW5lUmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcik7CiAKLSAgICBSZXRyaWV2ZVJl
Y29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwgdXJsKTsKKyAgICBSZXRy
aWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwgdXJsKTsKICAgICBEZWxldGVN
YXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnMp
OwogICAgIFB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3JkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGI2NmUzMmQyOTBmZTQ0
NTlmMzMwMTdlNzk3MGEzMjVmN2NlYmYzZTguLmMyZDBlOTY0ZWZmZGZjZWQyNjg2NTk0ODVjNzUx
ZDUzOGRiNjY1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCBhMzc4MGM1NWJjNjQzNTc3YjRkMDc4MDFlMTRjNTFl
MWQwMGFlNDk0Li4xNjU3OWJhODIwOWViNjU4NTc4Y2MyYzQzMTQxYzkzNTBjODU2ZGIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCBzdGF0aWMgU3RyaW5n
IGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9zdGljS2V5KFVzZURlY2lzaW9uIGRlY2lz
aW9uKQogCiB2b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hlZEVudHJ5KHVpbnQ2
NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgVXNlRGVjaXNpb24gZGVjaXNpb24pCiB7Ci0gICAgV2ViQ29yZTo6VVJM
IHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVz
dC51cmwoKTsKICAgICBpZiAoZGVjaXNpb24gPT0gVXNlRGVjaXNpb246OlVzZSkgewogICAgICAg
ICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0
ICI6ICVzIGlzIGluIHRoZSBjYWNoZSBhbmQgaXMgdXNlZCIsIHdlYlBhZ2VJRCwgcmVxdWVzdFVS
TC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5n
bGV0b24oKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFnZUlELCBXZWJDb3Jl
OjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5ldHdvcmtDYWNoZUtleSgpLCBXZWJDb3JlOjpEaWFn
bm9zdGljTG9nZ2luZ0tleXM6OnJldHJpZXZhbEtleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9n
Z2luZ1Jlc3VsdFBhc3MsIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6WWVzKTsKQEAgLTMxMiw3ICsz
MTIsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hlZEVudHJ5KHVpbnQ2
NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksCiAKIHZvaWQgU3RhdGlzdGljczo6cmVjb3Jk
UmV2YWxpZGF0aW9uU3VjY2Vzcyh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEtleSYga2V5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgV2ViQ29yZTo6
VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTCByZXF1ZXN0VVJMID0gcmVx
dWVzdC51cmwoKTsKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQ
YWdlSUQgJSIgUFJJdTY0ICI6ICVzIHdhcyBzdWNjZXNzZnVsbHkgcmV2YWxpZGF0ZWQiLCB3ZWJQ
YWdlSUQsIHJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogCiAgICAgTmV0d29y
a1Byb2Nlc3M6OnNpbmdsZXRvbigpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh3ZWJQ
YWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29ya0NhY2hlS2V5KCks
IFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6cmV2YWxpZGF0aW5nS2V5KCksIFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0UGFzcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZ
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCmluZGV4IGVmMjUyYTFjN2I5
YzZiZDU2ODA5NzMwYzJkMDQ5MzM1MzFmMDRjOWIuLjQzOTIxYTAwMjRlOTdkZDM2ZjBkMjIxODUx
ZWM0YWU5ODc2MWExNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKQEAg
LTIzLDE1ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnlfaAotI2RlZmluZSBOZXR3
b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShO
RVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKIAogI2luY2x1ZGUgIk5ldHdv
cmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtD
YWNoZSB7CkBAIC01MCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBXYWxsVGltZSBmaXJzdFNlZW4o
KSBjb25zdCB7IHJldHVybiBtX2ZpcnN0U2VlbjsgfQogCiAgICAgYm9vbCBpc1RyYW5zaWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNUcmFuc2llbnQ7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpVUkwm
IGZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QgeyBBU1NFUlQoIW1faXNUcmFuc2llbnQpOyBy
ZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQorICAgIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSBjb25zdCB7IEFTU0VSVCghbV9pc1RyYW5zaWVudCk7IHJldHVybiBtX2Zp
cnN0UGFydHlGb3JDb29raWVzOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYg
cmVxdWVzdEhlYWRlcnMoKSBjb25zdCB7IEFTU0VSVCghbV9pc1RyYW5zaWVudCk7IHJldHVybiBt
X3JlcXVlc3RIZWFkZXJzOyB9CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJp
b3JpdHkoKSBjb25zdCB7IEFTU0VSVCghbV9pc1RyYW5zaWVudCk7IHJldHVybiBtX3ByaW9yaXR5
OyB9CiAKQEAgLTY1LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBXYWxsVGltZSBtX2ZpcnN0U2Vl
bjsKICAgICBib29sIG1faXNUcmFuc2llbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1NhbWVT
aXRlIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpVUkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsK
KyAgICBVUkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsKICAgICBXZWJDb3JlOjpIVFRQSGVhZGVy
TWFwIG1fcmVxdWVzdEhlYWRlcnM7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkg
bV9wcmlvcml0eTsKIH07CkBAIC0xMDcsNCArMTA2LDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNw
YWNlIE5ldHdvcmtDYWNoZQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VM
QVRJVkVfUkVWQUxJREFUSU9OKQotI2VuZGlmIC8vIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0Vu
dHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcAppbmRleCA5NjYxNjhiNGUwNzgxMjQ4ZTU1Njgx
ZmY0Yjc3N2U2ZTE2MDMwOTQ1Li5iMWMwZmIxMTFiZDViZDYxMTQ4OTk4YjRiOTdhN2YwZjNlM2Nh
MTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0
d29ya0NhcHR1cmVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
cXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL0JyaWdhbmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODEsOCArODEs
NyBAQCBSZXF1ZXN0OjpSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIAogUmVxdWVzdDo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KCkgY29u
c3QKIHsKLSAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKHVybCk7Ci0gICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocGFyc2VyLnJlc3VsdCgpLCByZWZlcnJlciwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k+KHBvbGljeSkpOworICAg
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFVSTCh7IH0sIHVybCksIHJlZmVycmVy
LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4ocG9saWN5
KSk7CiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKG1ldGhvZCk7CiAKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpCkBAIC0xMTgsOCArMTE3LDcgQEAgUmVzcG9uc2U6OlJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiBSZXNw
b25zZTo6b3BlcmF0b3IgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0CiB7Ci0gICAg
V2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcih1cmwpOwotICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UocGFyc2VyLnJlc3VsdCgpLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgs
IHRleHRFbmNvZGluZ05hbWUpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2UoVVJMKHsgfSwgdXJsKSwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdO
YW1lKTsKICAgICByZXNwb25zZS5zZXRIVFRQVmVyc2lvbih2ZXJzaW9uKTsKICAgICByZXNwb25z
ZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOwogICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNU
ZXh0KHJlYXNvbik7CkBAIC0xNTIsOCArMTUwLDcgQEAgRXJyb3I6OkVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiBFcnJvcjo6b3BlcmF0b3IgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcigpIGNvbnN0CiB7Ci0gICAgV2ViQ29yZTo6VVJMUGFyc2VyIHBhcnNlcihmYWls
aW5nVVJMKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKGRvbWFpbiwgZXJyb3JD
b2RlLCBwYXJzZXIucmVzdWx0KCksIGxvY2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlPih0eXBlKSk7CisgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBlcnJvcihkb21haW4sIGVycm9yQ29kZSwgVVJMKHsgfSwgZmFpbGluZ1VSTCksIGxv
Y2FsaXplZERlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpU
eXBlPih0eXBlKSk7CiAKICAgICByZXR1cm4gZXJyb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFn
ZXIuY3BwCmluZGV4IDI3Njg5ZWUzYjcyMzk4ZDg1MTIwZjczNjM1N2MwMDcyNDIyODllOGUuLmQ1
NjVhNGVhMzc3MWU0NjM3OTczZjcxOWNhMTk4YTI4YzU1N2UwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVy
ZU1hbmFnZXIuY3BwCkBAIC0zMSwxMiArMzEsMTIgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVy
ZUxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDxsaW1p
dHM+CiAjaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBS
ZXNvdXJjZSogTWFuYWdlcjo6ZmluZEJlc3RGdXp6eU1hdGNoKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogICAgIFJlc291cmNlKiBiZXN0TWF0Y2ggPSBudWxscHRy
OwogICAgIGludCBiZXN0U2NvcmUgPSBrTWluTWF0Y2g7Ci0gICAgY29uc3QgYXV0byYgcmVxdWVz
dFBhcmFtZXRlcnMgPSBXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJs
LnF1ZXJ5KCkpOworICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RQYXJhbWV0ZXJzID0gV1RGOjpVUkxQ
YXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0odXJsLnF1ZXJ5KCkpOwogICAgIGZvciAoYXV0byBp
UmVzb3VyY2UgPSBsb3dlcjsgaVJlc291cmNlICE9IHVwcGVyOyArK2lSZXNvdXJjZSkgewogICAg
ICAgICBpbnQgdGhpc1Njb3JlID0gZnV6enlNYXRjaFVSTHModXJsLCByZXF1ZXN0UGFyYW1ldGVy
cywgaVJlc291cmNlLT51cmwoKSwgaVJlc291cmNlLT5xdWVyeVBhcmFtZXRlcnMoKSk7CiAgICAg
ICAgIC8vIFRPRE86IENvbnNpZGVyIGlnbm9yaW5nIGFueSBtYXRjaGVzIDwgMCBhcyBiZWluZyB0
b28gZGlmZmVyZW50LgpAQCAtMTY1LDcgKzE2NSw3IEBAIFJlc291cmNlKiBNYW5hZ2VyOjpmaW5k
QmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
Ly8gVE9ETzogQ29udmVydCB0byBhbiBpbnRlcmZhY2UgYmFzZWQgb24gUmVzb3VyY2VSZXF1ZXN0
IHNvIHRoYXQgd2UgY2FuIGRvCiAvLyBkZWVwZXIgbWF0Y2hpbmcuCiAKLWludCBNYW5hZ2VyOjpm
dXp6eU1hdGNoVVJMcyhjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNv
cmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHJlc291cmNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVu
Y29kZWRGb3JtJiByZXNvdXJjZVBhcmFtZXRlcnMpCitpbnQgTWFuYWdlcjo6ZnV6enlNYXRjaFVS
THMoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXVEY6OlVSTFBhcnNlcjo6VVJMRW5jb2Rl
ZEZvcm0mIHJlcXVlc3RQYXJhbWV0ZXJzLCBjb25zdCBVUkwmIHJlc291cmNlVVJMLCBjb25zdCBX
VEY6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNlUGFyYW1ldGVycykKIHsKICAg
ICAvLyBUT0RPOiBjb25zaWRlciByZXF1aXJpbmcgdGhhdCBhbnkgdHJhaWxpbmcgc3VmZml4ZXMg
KGUuZy4sICIuanMiLAogICAgIC8vICIucG5nIiwgIi5jc3MiLCAiLmh0bWwiLCBldGMuKSBzaG91
bGQgYmUgYW4gZXhhY3QgbWF0Y2guCkBAIC00MTksNyArNDE5LDcgQEAgU3RyaW5nIE1hbmFnZXI6
Omhhc2hUb1BhdGgoY29uc3QgU3RyaW5nJiBoYXNoKQogICAgIHJldHVybiBwYXRoOwogfQogCi1T
dHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwpCitTdHJpbmcgTWFuYWdlcjo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHVybC5wcm90b2NvbEhvc3RBbmRQb3J0KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKaW5kZXggM2M2YjUwMTBkYTIzNDFlNjgyY2IxY2EyNDAx
YTA2NjBmMzljNzQxYS4uYzM2ODE2YzlhODlhMWM3ZWZhZDEwNGYxYjAzOTA4ODM2ZGNhN2YzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtD
YXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSA8
V2ViQ29yZS9GaWxlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
KyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpGaWxlSGFuZGxlIG9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlKTsKIAogICAgIFN0cmluZyByZXF1ZXN0VG9Q
YXRoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHN0YXRpYyBTdHJpbmcg
dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgc3Rh
dGljIFN0cmluZyB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFpbihjb25zdCBVUkwmKTsKIAogcHJp
dmF0ZToKICAgICBNYW5hZ2VyKCkgPSBkZWZhdWx0OwpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRl
OgogCiAgICAgUmVzb3VyY2UqIGZpbmRFeGFjdE1hdGNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwogICAgIFJlc291cmNlKiBmaW5kQmVzdEZ1enp5TWF0Y2goY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgaW50IGZ1enp5TWF0Y2hVUkxzKGNvbnN0IFdlYkNv
cmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVk
Rm9ybSYgcmVxdWVzdFBhcmFtZXRlcnMsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzb3VyY2VVUkws
IGNvbnN0IFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2RlZEZvcm0mIHJlc291cmNlUGFyYW1l
dGVycyk7CisgICAgaW50IGZ1enp5TWF0Y2hVUkxzKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29u
c3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3JtJiByZXF1ZXN0UGFyYW1ldGVycywgY29u
c3QgVVJMJiByZXNvdXJjZVVSTCwgY29uc3QgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRGb3Jt
JiByZXNvdXJjZVBhcmFtZXRlcnMpOwogCiAgICAgdm9pZCBsb2FkUmVzb3VyY2VzKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2Fw
dHVyZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrQ2FwdHVyZVJlc291cmNlLmNwcAppbmRleCA3MDRjMGQ2YWQ0ZjY2YTBjM2NhYjNiYWYz
ZTk5NTYxZDg4ODRmMDQ1Li5mM2RjMjNjNTcwNjk0ZWYzYmJmMjViYmJhMzIzNTFjZDgwZjc0MDkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlc291
cmNlOjpSZXNvdXJjZShjb25zdCBTdHJpbmcmIGV2ZW50RmlsZVBhdGgpCiB7CiB9CiAKLWNvbnN0
IFdlYkNvcmU6OlVSTCYgUmVzb3VyY2U6OnVybCgpCitjb25zdCBVUkwmIFJlc291cmNlOjp1cmwo
KQogewogICAgIGlmICghbV91cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIGF1dG8gZXZlbnRzID0g
ZXZlbnRTdHJlYW0oKTsKQEAgLTUyLDggKzUyLDcgQEAgY29uc3QgV2ViQ29yZTo6VVJMJiBSZXNv
dXJjZTo6dXJsKCkKICAgICAgICAgICAgIERFQlVHX0xPR19FUlJPUigiRXZlbnQgc3RyZWFtIGRv
ZXMgbm90IGhhdmUgYSByZXF1ZXN0U2VudCBldmVudDogZmlsZSA9ICIgU1RSSU5HX1NQRUNJRklF
UiwgREVCVUdfU1RSKG1fZXZlbnRGaWxlUGF0aCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIGF1dG8gcmVxdWVzdFNlbnRFdmVudCA9IFdURjo6Z2V0PFJlcXVlc3RTZW50RXZlbnQ+KCpl
dmVudCk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpVUkxQYXJzZXIgcGFyc2VyKHJlcXVlc3RTZW50
RXZlbnQucmVxdWVzdC51cmwpOwotICAgICAgICAgICAgbV91cmwgPSBwYXJzZXIucmVzdWx0KCk7
CisgICAgICAgICAgICBtX3VybCA9IFVSTCh7IH0sIHJlcXVlc3RTZW50RXZlbnQucmVxdWVzdC51
cmwpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02OCwxMCArNjcsMTAgQEAgY29uc3QgU3RyaW5n
JiBSZXNvdXJjZTo6dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oKQogICAgIHJldHVybiBtX3Vy
bElkZW50aWZ5aW5nQ29tbW9uRG9tYWluOwogfQogCi1XZWJDb3JlOjpVUkxQYXJzZXI6OlVSTEVu
Y29kZWRGb3JtIFJlc291cmNlOjpxdWVyeVBhcmFtZXRlcnMoKQorV1RGOjpVUkxQYXJzZXI6OlVS
TEVuY29kZWRGb3JtIFJlc291cmNlOjpxdWVyeVBhcmFtZXRlcnMoKQogewogICAgIGlmICghbV9x
dWVyeVBhcmFtZXRlcnMpCi0gICAgICAgIG1fcXVlcnlQYXJhbWV0ZXJzID0gV2ViQ29yZTo6VVJM
UGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHVybCgpLnF1ZXJ5KCkpOworICAgICAgICBtX3F1
ZXJ5UGFyYW1ldGVycyA9IFdURjo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKHVybCgp
LnF1ZXJ5KCkpOwogCiAgICAgcmV0dXJuICptX3F1ZXJ5UGFyYW1ldGVyczsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJl
c291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0Nh
cHR1cmVSZXNvdXJjZS5oCmluZGV4IDc1NzZjMGQ1ZTAwODQ4OTE2MmMxOGM5NjYwNGZlM2EzODdm
MzllNWUuLmQ0OTNmNGE0YTM1YWQ4ZWE2Y2RiMmRkOGUwMjVkNjkwYzU4OTI1ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVzb3VyY2UuaApAQCAtMjksOSArMjksOSBAQAogCiAjaW5jbHVkZSAiTmV0d29y
a0NhcHR1cmVFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTFBhcnNlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2Fw
dHVyZSB7CkBAIC01NSwxNiArNTUsMTYgQEAgcHVibGljOgogcHVibGljOgogICAgIFJlc291cmNl
KGNvbnN0IFN0cmluZyYgZXZlbnRGaWxlUGF0aCk7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsKCk7CiAgICAgY29uc3QgU3RyaW5nJiB1cmxJZGVu
dGlmeWluZ0NvbW1vbkRvbWFpbigpOwotICAgIFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMRW5jb2Rl
ZEZvcm0gcXVlcnlQYXJhbWV0ZXJzKCk7CisgICAgV1RGOjpVUkxQYXJzZXI6OlVSTEVuY29kZWRG
b3JtIHF1ZXJ5UGFyYW1ldGVycygpOwogICAgIEV2ZW50U3RyZWFtIGV2ZW50U3RyZWFtKCk7CiAK
IHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZXZlbnRGaWxlUGF0aDsKLSAgICBXZWJDb3JlOjpVUkwg
bV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX3VybElkZW50aWZ5aW5nQ29tbW9u
RG9tYWluOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxFbmNvZGVk
Rm9ybT4gbV9xdWVyeVBhcmFtZXRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlVSTFBhcnNl
cjo6VVJMRW5jb2RlZEZvcm0+IG1fcXVlcnlQYXJhbWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgTmV0d29ya0NhcHR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDk0YzI2MjA0ZWVlYTRi
YWNlODRjMjE3NWVlMTRlOGYwMDZjOWRlNGMuLjY4YzFkNTc1OTMyNTgzMjU4MDUxMTNmMzZjN2U1
ZTRkYThhZmU0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgfQogICAgIAogICAgIC8vIFNob3VsZCBub3Qgc2V0
IFJlZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBmcm9tIGEgc2VjdXJlIHJlc291cmNlIHRvIG5vbi1z
ZWN1cmUgb25lLgotICAgIGlmIChtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QgJiYgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXZWJDb3JlOjpw
cm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgIGlmIChtX3No
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgJiYgIXJlcXVlc3QudXJsKCku
cHJvdG9jb2xJcygiaHR0cHMiKSAmJiBXVEY6OnByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJy
ZXIoKSwgImh0dHBzIikpCiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAg
ICAKICAgICBjb25zdCBhdXRvJiB1cmwgPSByZXF1ZXN0LnVybCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1t
CmluZGV4IDdhMTc5ZDExMjFkOTdlNTQwNjY1YWZhZDcwNTY4NTBmMGYyZWY4NzUuLjcxMzA0YTdm
OTg5ZTIzMzNkZjE5NzIzZmMzMjNjOWY4NGMxY2E5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAg
LTE2NCw3ICsxNjQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRIb3N0TmFtZXNXaXRoSFNU
U0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgcwogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcykKIHsKICAg
ICBmb3IgKGF1dG8mIGhvc3ROYW1lIDogaG9zdE5hbWVzKSB7Ci0gICAgICAgIGF1dG8gdXJsID0g
V2ViQ29yZTo6VVJMKHsgfSwgbWFrZVN0cmluZygiaHR0cHM6Ly8iLCBob3N0TmFtZSkpOworICAg
ICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIG1ha2VTdHJpbmcoImh0dHBzOi8vIiwgaG9zdE5hbWUp
KTsKICAgICAgICAgX0NGTmV0d29ya1Jlc2V0SFNUUyh1cmwuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwg
c2Vzc2lvbi5wbGF0Zm9ybVNlc3Npb24oKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmlu
ZGV4IDg4MjEwN2M0NjdiODZmMzczYzBjZmIzMWM0ZDFlYjc5ODI4OGNmOGEuLmE3YzAyYWU1MGY4
YzhlNjg3NzY1YTIyY2IyN2ZjOTQxZDZlYTQxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTQ2
LDEyICs0NiwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVVUkxSZXNwb25zZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMgTlNV
UkxSZXF1ZXN0KiB1cGRhdGVJZ25vcmVTdHJpY3RUcmFuc3BvcnRTZWN1cml0eVNldHRpbmdJZk5l
Y2Vzc2FyeShOU1VSTAogICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9
PSBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgpKSB7CiAKICAg
ICAgICAgICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsIG5vblBlcnNpc3RlbnRDcmVkZW50aWFs
KGNyZWRlbnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRl
bnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwotICAgICAgICAgICAgICAgIFdlYkNvcmU6OlVSTCB1cmxU
b1N0b3JlOworICAgICAgICAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICAgICAgICAg
IGlmIChhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVz
Q29kZSgpID09IDQwMSkKICAgICAgICAgICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICAgICAgICAg
IGlmIChhdXRvIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IDQwMmVjMWRlMDE5NjJmMGNj
ZjQyMDQyOTU3MjM3OTFmN2M2NTcyYTAuLmY1Y2MxYzFlMGFjNmRhODQyOTJjNDhiNDcxYjA4Yzg3
YmYyOThlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWMubW0KQEAgLTIxNSwxMSArMjE1LDExIEBAIHN0YXRpYyB2b2lkIGNhcmJv
bldpbmRvd0hpZGRlbihXaW5kb3dSZWYgd2luZG93KQogc3RhdGljIGJvb2wgb3BlbkNGVVJMUmVm
KENGVVJMUmVmIHVybCwgaW50MzJfdCYgc3RhdHVzLCBDRlVSTFJlZiogbGF1bmNoZWRVUkwpCiB7
CiAgICAgU3RyaW5nIGxhdW5jaGVkVVJMU3RyaW5nOwotICAgIGlmICghUGx1Z2luUHJvY2Vzczo6
c2luZ2xldG9uKCkub3BlblVSTChXZWJDb3JlOjpVUkwodXJsKS5zdHJpbmcoKSwgc3RhdHVzLCBs
YXVuY2hlZFVSTFN0cmluZykpCisgICAgaWYgKCFQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5v
cGVuVVJMKFVSTCh1cmwpLnN0cmluZygpLCBzdGF0dXMsIGxhdW5jaGVkVVJMU3RyaW5nKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFsYXVuY2hlZFVSTFN0cmluZy5pc051bGwo
KSAmJiBsYXVuY2hlZFVSTCkKLSAgICAgICAgKmxhdW5jaGVkVVJMID0gV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCBsYXVuY2hlZFVSTFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7
CisgICAgICAgICpsYXVuY2hlZFVSTCA9IFVSTChVUkwoKSwgbGF1bmNoZWRVUkxTdHJpbmcpLmNy
ZWF0ZUNGVVJMKCkubGVha1JlZigpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zOTksNyAr
Mzk5LDcgQEAgc3RhdGljIE5TUnVubmluZ0FwcGxpY2F0aW9uICpyZXBsYWNlZE5TV29ya3NwYWNl
X2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0aW9uc18KICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmIChQbHVnaW5Qcm9jZXNzOjpzaW5nbGV0b24oKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFdl
YkNvcmU6OlVSTCh1cmwpLnN0cmluZygpLCBhcmd1bWVudHMpKSB7CisgICAgaWYgKFBsdWdpblBy
b2Nlc3M6OnNpbmdsZXRvbigpLmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5n
KCksIGFyZ3VtZW50cykpIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgKmVycm9y
ID0gbmlsOwogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSVVSTC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCmlu
ZGV4IDdiMDFkMGU5MjA1NjI4Y2QzYzAwMmVmNTdlZjExZTgxNGRjY2NiOTEuLmJiZDQyM2JjZjU3
MTVlNGFkNzBiZjUyZGVmOGMyYzMwYzQxYmYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElVUkwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJM
LmgKQEAgLTIzLDMyICsyMywzMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViVVJMX2gKLSNkZWZpbmUgV2ViVVJMX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVj
dDo6VHlwZTo6VVJMPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxVUkw+IGNyZWF0ZShjb25z
dCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAgIHN0YXRpYyBSZWY8QVBJOjpVUkw+IGNyZWF0ZShj
b25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVVJMKHN0cmluZykpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8VVJMPiBjcmVhdGUo
Y29uc3QgVVJMKiBiYXNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgcmVsYXRpdmVVUkwpCisgICAg
c3RhdGljIFJlZjxBUEk6OlVSTD4gY3JlYXRlKGNvbnN0IEFQSTo6VVJMKiBiYXNlVVJMLCBjb25z
dCBXVEY6OlN0cmluZyYgcmVsYXRpdmVVUkwpCiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZVVS
TCk7CiAgICAgICAgIGJhc2VVUkwtPnBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0
byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VVJMPigqYmFzZVVSTC0+
bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0ZVVS
TCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQo
KSwgcmVsYXRpdmVVUkwpOwogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxT
dHJpbmcgPSBhYnNvbHV0ZVVSTC0+c3RyaW5nKCk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVVJMKFdURk1vdmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwg
YWJzb2x1dGVVUkxTdHJpbmcpKTsKICAgICB9CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CkBAIC01Niw3ICs1NSw3IEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsg
fQogCi0gICAgc3RhdGljIGJvb2wgZXF1YWxzKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQor
ICAgIHN0YXRpYyBib29sIGVxdWFscyhjb25zdCBBUEk6OlVSTCYgYSwgY29uc3QgQVBJOjpVUkwm
IGIpCiAgICAgewogICAgICAgICByZXR1cm4gYS51cmwoKSA9PSBiLnVybCgpOwogICAgIH0KQEAg
LTEwNiwxMyArMTA1LDEzIEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFVSTChzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VVJMPiBwYXJzZWRVUkwsIGNvbnN0IFdURjo6U3RyaW5nJiBz
dHJpbmcpCisgICAgVVJMKHN0ZDo6dW5pcXVlX3B0cjxXVEY6OlVSTD4gcGFyc2VkVVJMLCBjb25z
dCBXVEY6OlN0cmluZyYgc3RyaW5nKQogICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykKICAgICAg
ICAgLCBtX3BhcnNlZFVSTChXVEZNb3ZlKHBhcnNlZFVSTCkpCiAgICAgewogICAgIH0KIAotICAg
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKCkgY29uc3QKKyAgICBjb25zdCBXVEY6OlVSTCYgdXJs
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKICAgICAgICAg
cmV0dXJuICptX3BhcnNlZFVSTDsKQEAgLTEyMiwxMyArMTIxLDExIEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBpZiAobV9wYXJzZWRVUkwpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IG1fcGFyc2VkVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpVUkw+KFdlYkNvcmU6OlVS
TCgpLCBtX3N0cmluZyk7CisgICAgICAgIG1fcGFyc2VkVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxX
VEY6OlVSTD4oV1RGOjpVUkwoKSwgbV9zdHJpbmcpOwogICAgIH0KIAogICAgIFdURjo6U3RyaW5n
IG1fc3RyaW5nOwotICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlVSTD4gbV9w
YXJzZWRVUkw7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpVUkw+IG1fcGFyc2Vk
VVJMOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVUkxfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVzZXJDb250ZW50VVJMUGF0dGVy
bi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5o
CmluZGV4IDliNWM3ZjY2YjQ4YjhhOTZiZGQyZGNiZTg5Y2E5MGExMjNkMzA2YWEuLjY2OTk1YTBh
ODg1MjZiYWM1M2FiN2QxY2M1OTYxNWEzMjAyMTllMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKQEAgLTI3LDggKzI3LDgg
QEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmhv
c3QoKTsgfQogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBzY2hlbWUoKSBjb25zdCB7IHJldHVybiBt
X3BhdHRlcm4uc2NoZW1lKCk7IH0KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X3BhdHRlcm4uaXNWYWxpZCgpOyB9OwotICAgIGJvb2wgbWF0Y2hlc1VSTChjb25zdCBXVEY6OlN0
cmluZyYgdXJsKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4ubWF0Y2hlcyhXZWJDb3JlOjpVUkwo
eyB9LCB1cmwpKTsgfQorICAgIGJvb2wgbWF0Y2hlc1VSTChjb25zdCBXVEY6OlN0cmluZyYgdXJs
KSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4ubWF0Y2hlcyhXVEY6OlVSTCh7IH0sIHVybCkpOyB9
CiAgICAgYm9vbCBtYXRjaGVzU3ViZG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5t
YXRjaFN1YmRvbWFpbnMoKTsgfQogCiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHBhdHRlcm5TdHJp
bmcoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5TdHJpbmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCmluZGV4IDczNmUxZjNlNjY0NWNlMGVjMjEyZjZk
YjlmODc4NDNkNWNkMTNkYTUuLjE0OTk1NjNlMzlhZTdiOTg2ZGUxNzM0NzY3ODg1ZjZhYWQ5Mjhk
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcApAQCAt
MjksNyArMjksNyBAQAogI2luY2x1ZGUgIkFQSVVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXS0RhdGEuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3Bv
bnNlLmNwcAppbmRleCBiOGE4YTkwYmNkM2MzNDVjZDQ3NTY1Mjc3MzE0MzJjZmNhMDE3Yzg3Li44
ZjFmYTlhZDZlMzZlOThhYzQxM2ViYTllZjk1NTNjYWQ0MDYzOGNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAj
aW5jbHVkZSAiQVBJVVJMUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Yv
V0tVUkxDRi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0KaW5k
ZXggZGYxOTgzYTYwMTUwZGQ3ZWFkYmFlODNkMzg4MjhhYmFhNzgwZTBhZS4uYmQ5MWE0NWIwOWMz
MTRlZmYzNjMwNTFjY2I4ODE1YmRjYmI2ZGI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9jZi9XS1VSTENGLm1tCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbXBvcnQgIldLQVBJQ2FzdC5o
IgogI2ltcG9ydCAiV0tOU1VSTC5oIgotI2ltcG9ydCA8V2ViQ29yZS9DRlVSTEV4dHJhcy5oPgog
I2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFdLX0FQSV9FTkFCTEVECkBAIC01
Niw3ICs1Niw3IEBAIFdLVVJMUmVmIFdLVVJMQ3JlYXRlV2l0aENGVVJMKENGVVJMUmVmIGNmVVJM
KQogI2VuZGlmCiAKICAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIFdlYkNvcmU6OmdldFVSTEJ5
dGVzKGNmVVJMLCB1cmxCeXRlcyk7CisgICAgV1RGOjpnZXRVUkxCeXRlcyhjZlVSTCwgdXJsQnl0
ZXMpOwogCiAgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRVUkxBUEkodXJsQnl0ZXMuZGF0YSgp
KTsKIH0KQEAgLTY5LDUgKzY5LDUgQEAgQ0ZVUkxSZWYgV0tVUkxDb3B5Q0ZVUkwoQ0ZBbGxvY2F0
b3JSZWYgYWxsb2NhdG9yUmVmLCBXS1VSTFJlZiBVUkxSZWYpCiAgICAgLy8gVVRGLTggd2hpY2gg
dXNlcyBsZXNzIG1lbW9yeSBhbmQgaXMgd2hhdCBXZWJLaXQgY2xpZW50cyBtaWdodCBleHBlY3Qu
CiAKICAgICBDU3RyaW5nIGJ1ZmZlciA9IFdlYktpdDo6dG9JbXBsKFVSTFJlZiktPnN0cmluZygp
LnV0ZjgoKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5sZW5ndGgoKSwgMCkubGVha1JlZigpOworICAgIHJldHVybiBXVEY6
OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIubGVuZ3RoKCksIDAp
LmxlYWtSZWYoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGli
L1dlYktpdFVSSVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2Vi
S2l0VVJJUmVxdWVzdC5jcHAKaW5kZXggOWZlNTk1NzIwNGNjNzk5M2ViYzA4ODg4YmQxZjg5MzFl
YTRlYjAwMS4uMzFmNjFjZTdlYWY4YjlhOTljYmFhZDdkZDA1Mzc1ZGE4MWEyNWJjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAK
QEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJXZWJLaXRVUklSZXF1ZXN0LmgiCiAKICNpbmNs
dWRlICJXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1
ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9n
bGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9nbGliL1dlYktpdFVSSVJlc3BvbnNlLmNwcAppbmRleCBkMjQ1NTg5MzZjZjQ2MDc1
NTU3MTJhMTZjOTRmZDQ2MWVjMDk4YTIzLi4yODdlZWZkNGQ5Y2NmNDAwMzY3M2RlOTdiODhkM2My
ZDYzYzIzNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRVUklSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2Vi
S2l0VVJJUmVzcG9uc2UuY3BwCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSAiV2ViS2l0VVJJ
UmVzcG9uc2UuaCIKIAogI2luY2x1ZGUgIldlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxp
Yi5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8d3Rm
L2dsaWIvV1RGR1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBkYzBmOTBm
MGYzODUxYWJmMTAwNDg0YmE1NzNhZTRhZjhlODBiMjMyLi5iYzJmZTQ5ZTMwYWEzODJiNDIzYjU0
ZGIyYmFkNzJiYjdmOTdlZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tCkBAIC0zMCw4ICszMCw4IEBACiAKICNpbmNsdWRlICJBUElEYXRhLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBBUEkgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00Niw4ICs0
Niw4IEBAIFJlZjxXZWJBcmNoaXZlUmVzb3VyY2U+IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+JiYgYXJjCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViQXJjaGl2ZVJlc291cmNlKFdURk1vdmUoYXJjaGl2ZVJlc291cmNlKSkpOwogfQogCi1XZWJB
cmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0
IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZykKLSAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNpemUoKSksIFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgVVJMKSwgTUlNRVR5cGUsIHRleHRFbmNvZGluZywgU3Ry
aW5nKCkpKQorV2ViQXJjaGl2ZVJlc291cmNlOjpXZWJBcmNoaXZlUmVzb3VyY2UoQVBJOjpEYXRh
KiBkYXRhLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmcpCisgICAgOiBtX2FyY2hpdmVSZXNvdXJjZShBcmNoaXZlUmVz
b3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLT5ieXRlcygpLCBkYXRhLT5z
aXplKCkpLCBXVEY6OlVSTChXVEY6OlVSTCgpLCB1cmwpLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5n
LCBTdHJpbmcoKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Bc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbi5oCmluZGV4IDk2YTAwYTU3YjNiYjYwZDNmYjhmMTg3ZTM0NjVhYzlkOWEy
MDFlYzkuLjliMWMzYjAxNDVmODNmNzk0ODUxNzc0ZTk2Yjg1ODZhZTcyZDhkMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaApAQCAtMzIsNyAr
MzIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTIzLDcgKzEyMyw3IEBA
IHN0cnVjdCBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiB7CiAgICAgYm9vbCBhY2NlcHRzQXV0b2Zp
bGxlZExvZ2luQ3JlZGVudGlhbHMgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNBdXRvZmlsbGFibGVV
c2VybmFtZUZpZWxkIHsgZmFsc2UgfTsKICAgICBib29sIGVsZW1lbnRJc1RyYW5zcGFyZW50IHsg
ZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpVUkwgcmVwcmVzZW50aW5nUGFnZVVSTDsKKyAgICBVUkwg
cmVwcmVzZW50aW5nUGFnZVVSTDsKICAgICBXZWJDb3JlOjpBdXRvZmlsbEZpZWxkTmFtZSBhdXRv
ZmlsbEZpZWxkTmFtZSB7IFdlYkNvcmU6OkF1dG9maWxsRmllbGROYW1lOjpOb25lIH07CiAgICAg
U3RyaW5nIHBsYWNlaG9sZGVyOwogICAgIFN0cmluZyBsYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tCmluZGV4IDAxODhmNzQ3OTgyYTk0MGE0OGFiODZm
ODI4OGFhYjAwNmRmZDExZDcuLjUxOWI5ZDgzZWQ3NjYxZGM2ZDg3ZDYyOWU3YzhjODU1YjBlZjJi
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbQpAQCAt
MjYsMTMgKzI2LDExIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRy
YXMuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9DRlVSTEV4dHJhcy5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jZi9DRlVSTEV4dHJh
cy5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBAaW1wbGVtZW50YXRpb24g
TlNVUkwgKFdLRXh0cmFzKQogCiArIChpbnN0YW5jZXR5cGUpX3dlYl9VUkxXaXRoV1RGU3RyaW5n
Oihjb25zdCBTdHJpbmcmKXN0cmluZwpAQCAtNTAsNyArNDgsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIC0gKFN0cmluZylfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nCiB7CiAgICAg
Q1N0cmluZyBvcmlnaW5hbERhdGE7Ci0gICAgZ2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVm
KXNlbGYsIG9yaWdpbmFsRGF0YSk7CisgICAgV1RGOjpnZXRVUkxCeXRlcygoX19icmlkZ2UgQ0ZV
UkxSZWYpc2VsZiwgb3JpZ2luYWxEYXRhKTsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChv
cmlnaW5hbERhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNz
aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IDVi
MDdkNDRmNmMwNzRjMDkzZDY5NDk5MDg3MWJlNGNjMmU2YjBjYzkuLmZlODFhNWQ4MDk1NWVjZTVk
MmM2MjVmODk2OTYyZWE5ZTZjMzM2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Nlc3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5o
CkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE0OCw3ICsxNDgsNyBA
QCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGUgewogc3RydWN0IFNlc3Npb25TdGF0ZSB7CiAg
ICAgQmFja0ZvcndhcmRMaXN0U3RhdGUgYmFja0ZvcndhcmRMaXN0U3RhdGU7CiAgICAgdWludDY0
X3QgcmVuZGVyVHJlZVNpemU7Ci0gICAgV2ViQ29yZTo6VVJMIHByb3Zpc2lvbmFsVVJMOworICAg
IFVSTCBwcm92aXNpb25hbFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBhNjY2
MjM2OWU3OWZmNjQxOWFhODRmYTMzOTYyMjcyZDA1NDk0OTA4Li5lMTgxMjVmNmQwMWUxMWFiNDEw
ZjY5MjZiZTUwNGM3NmZiNWY1NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgIlN1c3Bl
bmRlZFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvRGVidWdVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC0xMDgsOCArMTA4LDggQEAgYm9vbCBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjppdGVtSXNJblNhbWVEb2N1bWVudChjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JgogICAgIGlmIChtYWluRnJhbWVTdGF0ZS5zdGF0ZU9iamVjdERhdGEgfHwgb3RoZXJNYWluRnJh
bWVTdGF0ZS5zdGF0ZU9iamVjdERhdGEpCiAgICAgICAgIHJldHVybiBtYWluRnJhbWVTdGF0ZS5k
b2N1bWVudFNlcXVlbmNlTnVtYmVyID09IG90aGVyTWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1
ZW5jZU51bWJlcjsKIAotICAgIFdlYkNvcmU6OlVSTCB1cmwgPSBXZWJDb3JlOjpVUkwoeyB9LCBt
YWluRnJhbWVTdGF0ZS51cmxTdHJpbmcpOwotICAgIFdlYkNvcmU6OlVSTCBvdGhlclVSTCA9IFdl
YkNvcmU6OlVSTCh7IH0sIG90aGVyTWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKKyAgICBVUkwg
dXJsID0gVVJMKHsgfSwgbWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKKyAgICBVUkwgb3RoZXJV
UkwgPSBVUkwoeyB9LCBvdGhlck1haW5GcmFtZVN0YXRlLnVybFN0cmluZyk7CiAKICAgICBpZiAo
KHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSB8fCBvdGhlclVSTC5oYXNGcmFnbWVudElkZW50
aWZpZXIoKSkgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIG90aGVyVVJM
KSkKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIg
PT0gb3RoZXJNYWluRnJhbWVTdGF0ZS5kb2N1bWVudFNlcXVlbmNlTnVtYmVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggOTZhYTRlOTcy
NjY2OWI2MWJmNDM5NDgzZGRhZWFmYjhkNTMwNTM5MC4uNjZmZmU5MTk0YjA0N2UxY2Y1ZTYwOGEy
OTdmYWU1MmYyODg5MjM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCkBAIC03OSwxMSArNzksMTEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Rl
eHRJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWluZ0Z1bmN0aW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU3R5bGVTaGVldC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1
cmVzLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CmluZGV4IDA5MDliNGQxOWNhMDg5NWM1NDMwNWY1ZjU0Y2RhMGMwNDkzYTg4MzEuLjNhM2VhOTk0
OTEwODY5ZjU3Y2EyODg2ZjlmN2RkNWM0OGU3OTkwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC05Niw3ICs5Niw2IEBAIGNsYXNzIFN0aWNr
eVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3RE
YXRhOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsK
LWNsYXNzIFVSTDsKIAogc3RydWN0IENhY2hlUXVlcnlPcHRpb25zOwogc3RydWN0IENvbXBvc2l0
aW9uVW5kZXJsaW5lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3Jz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJvcnMuaAppbmRleCAyN2QxNGUzMWIzMTA4
NjZjNmYxMzZlM2FkOGFhZmY4OGUyM2IzODQyLi43ZDYwMGM2ZDIzYjU1ZGNjMzk2MzA5OTA0MDdj
ZTc0NDQ0NmNiNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJvcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJvcnMuaApAQCAtMjgsNyArMjgsNiBA
QAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IFVSTDsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNDgsMTggKzQ3LDE4IEBAIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgYmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
ZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVy
bmFsRXJyb3IoY29uc3QgV2ViQ29yZTo6VVJMJik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGlu
dGVybmFsRXJyb3IoY29uc3QgVVJMJik7CiAKICNpZiBVU0UoU09VUCkKLVdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZG93bmxvYWROZXR3b3JrRXJyb3IoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
V1RGOjpTdHJpbmcmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgZG93bmxvYWROZXR3b3JrRXJy
b3IoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgZG93bmxvYWRDYW5jZWxsZWRCeVVzZXJFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGRvd25sb2FkRGVzdGluYXRpb25FcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwcmlu
dEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJik7Ci1XZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIHByaW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYp
OwotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdlVG9QcmludChjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBV
UkwmLCBjb25zdCBXVEY6OlN0cmluZyYpOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwcmludGVy
Tm90Rm91bmRFcnJvcihjb25zdCBVUkwmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgaW52YWxp
ZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJik7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAK
aW5kZXggMTc5Y2E0YmUzN2JlZDBlM2RjY2I1ZDMyNjNmM2YwNjliMDUyNTU1Yi4uYzFjZmNjZjA1
Zjg0MjBhYzNiOWMyNGRjNTdmOTg1ZjcyMjYzN2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvTm9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3Vt
ZW50Q29kZXJzQ0YuY3BwCmluZGV4IDEwZTcxNTgxZDQ5MDczZjhhMzM1M2Y5NjcwYjcxMTUwOGUz
OThlOTguLmY4ZjcyOTY0ODZhZTk3YWFmOGU5NjM1Y2UyY2Q3YTJjNGI4ZmUxZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCkBAIC0zMSw5ICszMSw5
IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNp
bmNsdWRlICJFbmNvZGVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9DRlVSTEV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi9jZi9DRlVSTEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9zcGkvY29jb2Ev
U2VjdXJpdHlTUEkuaD4KIAogI2lmIFVTRShGT1VOREFUSU9OKQpAQCAtNTk5LDggKzU5OSw4IEBA
IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIENGVVJMUmVmIHVybCkKICAgICBpZiAoYmFz
ZVVSTCkKICAgICAgICAgZW5jb2RlKGVuY29kZXIsIGJhc2VVUkwpOwogCi0gICAgVVJMQ2hhckJ1
ZmZlciB1cmxCeXRlczsKLSAgICBnZXRVUkxCeXRlcyh1cmwsIHVybEJ5dGVzKTsKKyAgICBXVEY6
OlVSTENoYXJCdWZmZXIgdXJsQnl0ZXM7CisgICAgV1RGOjpnZXRVUkxCeXRlcyh1cmwsIHVybEJ5
dGVzKTsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPih1cmxCeXRlcy5kYXRhKCkpLCB1cmxCeXRlcy5zaXplKCkpOwog
ICAgIGVuY29kZXIgPDwgZGF0YVJlZmVyZW5jZTsKIH0KQEAgLTYzMSw3ICs2MzEsNyBAQCBib29s
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZVUkxSZWY+JiByZXN1bHQpCiAg
ICAgfQogI2VuZGlmCiAKLSAgICByZXN1bHQgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJsQnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6ZSgp
LCBiYXNlVVJMLmdldCgpKTsKKyAgICByZXN1bHQgPSBXVEY6OmNyZWF0ZUNGVVJMRnJvbUJ1ZmZl
cihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih1cmxCeXRlcy5kYXRhKCkpLCB1cmxCeXRl
cy5zaXplKCksIGJhc2VVUkwuZ2V0KCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKaW5kZXggZTlkOTIzOTNjN2Q1YzZi
M2FiZjNmOWY0NGEwN2Y0MWEwMDg0NjBlOC4uNmEwZGY1NGMzNzQ0NWRmNjRjYzVkM2I0YmI2MTBl
YzFmM2MwNjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9y
c0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAK
QEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKIAogI2luY2x1ZGUgIkFQ
SUVycm9yLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxnbGliL2dpMThu
LWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lv
cy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgKaW5kZXggY2VlMGYyNjJi
MWNiZWY5ODZjZGQzYTM0YTRhYzc1NTQ1YTJjNjA0MC4uNGEzMGFiZmUyZWExMWZjMjAwMGE4MTlm
ZGRmMTJlZDQyM2QwODU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0lu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgKQEAgLTMzLDcgKzMzLDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWxl
Y3Rpb25SZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjAsOCArNjAsOCBAQCBz
dHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gewogICAgIGJvb2wgcHJldmVu
dFRleHRJbnRlcmFjdGlvbiB7IGZhbHNlIH07CiAjZW5kaWYKICAgICBXZWJDb3JlOjpGbG9hdFBv
aW50IGFkanVzdGVkUG9pbnRGb3JOb2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHM7Ci0gICAgV2Vi
Q29yZTo6VVJMIHVybDsKLSAgICBXZWJDb3JlOjpVUkwgaW1hZ2VVUkw7CisgICAgVVJMIHVybDsK
KyAgICBVUkwgaW1hZ2VVUkw7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIFN0cmluZyBpZEF0dHJp
YnV0ZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGJvdW5kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaAppbmRleCBiYjBkMWNiNjNkNDFmMmU3
YmMzNmJhOWY1ZDVkYWU1ZTQwODExNTkyLi45MGZkZTdkMDRiMjczMDVhNDY0MzYxNDFiZGI3N2Ux
MDA0YmRkMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRU
UENvb2tpZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yZS5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwogc3RydWN0IENvb2tpZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCmluZGV4IGY1
ZmEzYTVkNzYyM2M0YzlhYzZiN2FhMzA5MzcxZDNkNWNiNGYyNmQuLjI3NTRlNzk0ZjI1MDUzODMy
ZDVkMjY3ZTEyMGFiZjA3NDFlNDdhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTmF2aWdhdGlvbi5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBOYXZpZ2F0aW9uOjpz
ZXRDdXJyZW50UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQcm9jZXNzSWRlbnRp
ZmllcgogICAgIG1fY3VycmVudFJlcXVlc3RQcm9jZXNzSWRlbnRpZmllciA9IHByb2Nlc3NJZGVu
dGlmaWVyOwogfQogCi12b2lkIE5hdmlnYXRpb246OmFwcGVuZFJlZGlyZWN0aW9uVVJMKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsKQordm9pZCBOYXZpZ2F0aW9uOjphcHBlbmRSZWRpcmVjdGlvblVS
TChjb25zdCBXVEY6OlVSTCYgdXJsKQogewogICAgIGlmIChtX3JlZGlyZWN0Q2hhaW4uaXNFbXB0
eSgpIHx8IG1fcmVkaXJlY3RDaGFpbi5sYXN0KCkgIT0gdXJsKQogICAgICAgICBtX3JlZGlyZWN0
Q2hhaW4uYXBwZW5kKHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTmF2aWdhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb24uaAppbmRleCAxM2JkMWY0NDI1MmRhMWYzNzdmNmU2NGUwNDhmOWRlMDUzM2M2MjVmLi5h
OWY2MjI4M2Y2NTg1MmZlOTEyZTdkNjA2ZGFjMGEzZjk4MzI5NzE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKQEAgLTEwMiw4ICsxMDIsOCBAQCBwdWJs
aWM6CiAgICAgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBmcm9tSXRlbSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJvbUl0ZW0uZ2V0KCk7IH0KICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lTG9hZFR5cGU+IGJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlOyB9CiAKLSAgICB2b2lkIGFwcGVuZFJlZGlyZWN0
aW9uVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IHRh
a2VSZWRpcmVjdENoYWluKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlZGlyZWN0Q2hhaW4pOyB9Cisg
ICAgdm9pZCBhcHBlbmRSZWRpcmVjdGlvblVSTChjb25zdCBXVEY6OlVSTCYpOworICAgIFZlY3Rv
cjxXVEY6OlVSTD4gdGFrZVJlZGlyZWN0Q2hhaW4oKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVkaXJl
Y3RDaGFpbik7IH0KIAogICAgIGJvb2wgd2FzVXNlckluaXRpYXRlZCgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9sYXN0TmF2aWdhdGlvbkFjdGlvbi51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcjsgfQog
CkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgbV9vcmlnaW5hbFJlcXVlc3Q7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fY3Vy
cmVudFJlcXVlc3Q7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
cj4gbV9jdXJyZW50UmVxdWVzdFByb2Nlc3NJZGVudGlmaWVyOwotICAgIFZlY3RvcjxXZWJDb3Jl
OjpVUkw+IG1fcmVkaXJlY3RDaGFpbjsKKyAgICBWZWN0b3I8V1RGOjpVUkw+IG1fcmVkaXJlY3RD
aGFpbjsKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IG1fdGFy
Z2V0SXRlbTsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBtX2Zy
b21JdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
QWN0aW9uLmgKaW5kZXggZWVjYmZmNGEyYTNlZDkwZjQ0NDA4Y2NkNmNhZjI5ZGU5OGQ5NTJkNy4u
MzA4NzFjN2EwOTU1NGQ1Y2I4YTdlZDRhYjgyY2JiMTQ4Y2RlNzg3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC0zMSw3ICsz
MSw3IEBACiAjaW5jbHVkZSAiQVBJVXNlckluaXRpYXRlZEFjdGlvbi5oIgogI2luY2x1ZGUgIk5h
dmlnYXRpb25BY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFt
ZXNwYWNlIEFQSSB7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9u
YWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0
RnJhbWVOYW1lOyB9CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpVUkwm
IG9yaWdpbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gIW1fb3JpZ2luYWxVUkwuaXNOdWxsKCkgPyBt
X29yaWdpbmFsVVJMIDogbV9yZXF1ZXN0LnVybCgpOyB9CisgICAgY29uc3QgV1RGOjpVUkwmIG9y
aWdpbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gIW1fb3JpZ2luYWxVUkwuaXNOdWxsKCkgPyBtX29y
aWdpbmFsVVJMIDogbV9yZXF1ZXN0LnVybCgpOyB9CiAKICAgICBXZWJDb3JlOjpOYXZpZ2F0aW9u
VHlwZSBuYXZpZ2F0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRh
dGEubmF2aWdhdGlvblR5cGU7IH0KICAgICBXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcnMgbW9k
aWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnM7
IH0KQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIE5hdmlnYXRpb24qIG1haW5GcmFtZU5h
dmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZU5hdmlnYXRpb24uZ2V0KCk7IH0K
IAogcHJpdmF0ZToKLSAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1l
LCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+
IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJl
ZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktp
dDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFt
ZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0
aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9w
ZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFj
dGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICAgICA6IG1f
c291cmNlRnJhbWUoc291cmNlRnJhbWUpCiAgICAgICAgICwgbV90YXJnZXRGcmFtZSh0YXJnZXRG
cmFtZSkKICAgICAgICAgLCBtX3RhcmdldEZyYW1lTmFtZSh0YXJnZXRGcmFtZU5hbWUpCkBAIC03
OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIE5hdmlnYXRpb25BY3Rp
b24oV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBB
UEk6OkZyYW1lSW5mbyogc291cmNlRnJhbWUsIEFQSTo6RnJhbWVJbmZvKiB0YXJnZXRGcmFtZSwg
c3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmFsVVJMLCBi
b29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNl
ckluaXRpYXRlZEFjdGlvbikKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJj
ZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V1RGOjpT
dHJpbmc+IHRhcmdldEZyYW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgV1RGOjpVUkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywg
UmVmUHRyPFVzZXJJbml0aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbikKICAgICAg
ICAgOiBOYXZpZ2F0aW9uQWN0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3Vy
Y2VGcmFtZSwgdGFyZ2V0RnJhbWUsIHRhcmdldEZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwg
b3JpZ2luYWxVUkwsIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0
aW9uKSwgbnVsbHB0cikKICAgICB7CiAgICAgfQpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IG1fdGFyZ2V0RnJhbWVOYW1lOwogCiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKLSAgICBXZWJDb3JlOjpVUkwgbV9v
cmlnaW5hbFVSTDsKKyAgICBXVEY6OlVSTCBtX29yaWdpbmFsVVJMOwogCiAgICAgYm9vbCBtX3No
b3VsZE9wZW5BcHBMaW5rczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggYzNkMWFiZmRkZTgyNmFlOGVlNWNiNzJhYmY3ZTE5
NjE0YzUwOGY5YS4uY2NmODZkNjFlMDFiOWE1M2M2ZmY0YjQ3OWM3YzBlN2FhZmRmMGM5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5o
CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUmVmUHRyPERhdGE+IHdl
YkNyeXB0b01hc3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIG51bGxwdHI7
IH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPFN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxl
bmdlU3RyaW5nKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgdW5zaWduZWQga2V5U2l6ZUluZGV4LCBj
b25zdCBSZWZQdHI8U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwm
KSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8U3RyaW5nPiBzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCB1bnNpZ25l
ZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNv
bnN0IFdURjo6VVJMJikgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRp
KSB7IH0KQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGxpc3RlbmVyLT51c2Uo
KTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNh
dGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OlVSTCYmLCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mJikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBj
b250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXVEY6OlVS
TCYmLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mJikgeyB9Owog
ICAgIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZpcnR1YWwgYm9vbCBk
aWRGYWlsVG9Jbml0aWFsaXplUGx1Z0luKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgQVBJOjpEaWN0
aW9uYXJ5JikgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTEyNyw4ICsxMjcsOCBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2aXJ0dWFsIHZvaWQgd2ViR0xMb2FkUG9s
aWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6
V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlV2ViR0xMb2Fk
UG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGlj
eTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQorICAgIHZpcnR1YWwgdm9pZCB3ZWJHTExvYWRQb2xp
Y3koV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
Y29uc3QgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdM
QWxsb3dDcmVhdGlvbik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGlj
eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6VVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBj
b25zdCB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xB
bGxvd0NyZWF0aW9uKTsgfQogI2VuZGlmCiAgICAgCiAgICAgdmlydHVhbCBib29sIHdpbGxHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSYsIGJvb2wgaW5QYWdlQ2FjaGUpIHsgcmV0dXJuIGZhbHNlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IDViZWU2YmMyZWVh
M2Y3NDJjZTVhYjE1MDI0NzZhMTY4NjFlMmIyNzEuLjFkMzUyNzJjOWMyZDQxZDM3ODExZTI1ODc1
ZWJhODNkYzFjMTU0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5N
b2RhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFs
KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZURhdGFU
b0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBEYXRhJikg
eyB9CisgICAgdmlydHVhbCB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgY29uc3QgV1RGOjpVUkwmLCBEYXRhJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGlubmVk
U3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCmluZGV4IDc1ODRlNjMxMjEwMmI1
YjBjNTAwN2VhOWI4OGNhYzc4M2I5ZTE0NmMuLjQwMjJlZmRjYjk3YTUwOWY2ZTBlZjg5NWRjYjY3
Mzg2NmFhOWY1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
c2VyU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNj
cmlwdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAKLVdlYkNvcmU6
OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCitXVEY6OlVSTCBVc2VyU2NyaXB0
OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCmluZGV4IDE3
YTQwOTA5ODk3Zjc0NGI1MDVhMDQ5MmFjNTA4YzQwNTBiMTMxYzUuLjAzMzMyODIwYjE2MDExNDkx
NDAzNjE4YjYzN2YzM2RhODE0YjE4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTY3JpcHQuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQVBJVXNlclNjcmlwdF9oCi0jZGVmaW5lIEFQ
SVVzZXJTY3JpcHRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNp
bmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0zNSw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2Jq
ZWN0OjpUeXBlOjpVc2VyU2NyaXB0PiwgcHVibGljIElkZW50aWZpZWQ8VXNlclNjcmlwdD4gewog
cHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKKyAg
ICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKIAogICAgIHN0YXRpYyBSZWY8
VXNlclNjcmlwdD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCwgQVBJOjpV
c2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIHByaXZhdGU6
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8vIEFQSVVzZXJTY3JpcHRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAK
aW5kZXggMWQ1OTViYjE1ODhkOWY3ZDVkNDhmZDkyMWNkMWRkOTY2YjNmODZhZi4uM2VhNDYxZmUx
YTE1NmM2YTlkNTg5NTg0MDM3ZmUzODdjMjkwN2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBBUEkgewogCi1XZWJDb3JlOjpVUkwgVXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRl
VW5pcXVlVVJMKCkKK1dURjo6VVJMIFVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgp
CiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKaW5kZXggZDg1NmY3YTUyZjliNTA0
ZTBmYTQyM2VhOWEzYjZlMTU3MTQ1MWVkZS4uNzViYjk1YWZlYWM4ZjhmMWU4MjIzMzVmMjkzZTk4
Mzg3YjVkNzYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSVVzZXJTdHlsZVNoZWV0X2gKLSNkZWZpbmUgQVBJ
VXNlclN0eWxlU2hlZXRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCkBAIC0zNSw3ICszNCw3IEBAIG5hbWVz
cGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBPYmplY3RJ
bXBsPE9iamVjdDo6VHlwZTo6VXNlclN0eWxlU2hlZXQ+LCBwdWJsaWMgSWRlbnRpZmllZDxVc2Vy
U3R5bGVTaGVldD4gewogcHVibGljOgotICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJhdGVV
bmlxdWVVUkwoKTsKKyAgICBzdGF0aWMgV1RGOjpVUkwgZ2VuZXJhdGVVbmlxdWVVUkwoKTsKIAog
ICAgIHN0YXRpYyBSZWY8VXNlclN0eWxlU2hlZXQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICB7
CkBAIC01NSw1ICs1NCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQot
I2VuZGlmIC8vIEFQSVVzZXJTdHlsZVNoZWV0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKaW5kZXgg
NmU3OTY2MjU1MmI5ZjY4MDUyMDI5NGViYjlkNzRlYmFiZDgzMjY1MC4uNGEwZmZjNDJlNTk0MWMz
MDZiY2ZmYmY4OGNlMTVhY2M3MDk5YjVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKQEAgLTI5
LDcgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZmlsZVBh
dGhzRnJvbUZpbGVVUkxzKGNvbnN0IEFQSTo6QXJyYXkmIGZpbGVVUkxzKQogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEFQSTo6VVJMKiBhcGlVUkwgPSBm
aWxlVVJMcy5hdDxBUEk6OlVSTD4oaSk7CiAgICAgICAgIGlmIChhcGlVUkwpCi0gICAgICAgICAg
ICBmaWxlUGF0aHMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
YXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5c3RlbVBhdGgoKSk7CisgICAgICAgICAgICBmaWxlUGF0
aHMudW5jaGVja2VkQXBwZW5kKFVSTChVUkwoKSwgYXBpVVJMLT5zdHJpbmcoKSkuZmlsZVN5c3Rl
bVBhdGgoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZpbGVQYXRoczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGRkZTM2YmM0OTA1ZDY4MmQwNWYyODQ4MzQ4
MmQ5ZGFmMjUyZDY1ZjkuLjQ4OTdmNTJjMWY2MmQxNzAyYmE4NmFiZTUwZjc5N2ZjNGJlOGQ3MWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQ5LDcgKzI0
OSw3IEBAIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmCiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4
dFN0cmluZ1dpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5U
ZXh0U3RyaW5nUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7Ci0gICAgbG9hZFN0cmluZyhw
YWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBibGFua1VSTCgpLnN0
cmluZygpLCB1c2VyRGF0YVJlZik7CisgICAgbG9hZFN0cmluZyhwYWdlUmVmLCBwbGFpblRleHRT
dHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCksIHVzZXJE
YXRhUmVmKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YVJlZikKQEAgLTE0NzMsNyArMTQ3Myw3IEBA
IHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1Bh
Z2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAKICAgICAgICAgICAgICAgICBhdXRvIHVzZXJJbml0
aWF0ZWRBY3Rpdml0eSA9IHBhZ2UucHJvY2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZp
Z2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgICAg
ICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3VyY2VGcmFt
ZUluZm8tPnJlcXVlc3QoKS51cmwoKSwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKLSAgICAgICAg
ICAgICAgICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246
OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0
cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgV2Vi
Q29yZTo6VVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0
aXZpdHkpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6
Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwg
c291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVz
b3VyY2VSZXF1ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5p
dGlhdGVkQWN0aXZpdHkpKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXBpV2luZG93RmVhdHVy
ZXMgPSBBUEk6OldpbmRvd0ZlYXR1cmVzOjpjcmVhdGUod2luZG93RmVhdHVyZXMpOwogCkBAIC0x
OTQ1LDcgKzE5NDUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgbV9j
bGllbnQucnVuTW9kYWwodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVy
KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwg
QVBJOjpEYXRhJiBkYXRhKSBmaW5hbAorICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJM
LCBBUEk6OkRhdGEmIGRhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9j
bGllbnQuc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcikKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yMTg1LDcgKzIxODUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9u
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAg
ICAgICAgICAgcmV0dXJuIEFQSTo6RGF0YTo6Y3JlYXRlKG1hc3RlcktleS5kYXRhKCksIG1hc3Rl
cktleS5zaXplKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBz
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiBwYWdlLCB1bnNp
Z25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0
cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIG92ZXJyaWRlCisgICAgICAgIFJlZlB0cjxB
UEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94
eSYgcGFnZSwgdW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+
JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYgdXJsKSBvdmVycmlkZQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAobV9jbGllbnQuY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZykKICAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNv
cHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodG9BUEkoJnBhZ2UpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VHcm91cC5jcHAKaW5kZXggMzkwZTEyMDc0N2VhZTg5Y2ZkOWZlZTY5ZGFjZWNiNmRlMDc5
NWVjNS4uMDM3NzQxMGVhN2U2N2U2YjA5MTBjZmJjMDVhOWIzMmY1OGNiNDNlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcApAQCAtNzcsNyArNzcs
NyBAQCB2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQoV0tQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwUmVmLCBXS1N0cmluZ1JlZiBzb3VyYwogICAgIGF1dG8gd2hpdGVsaXN0ID0gdG9JbXBs
KHdoaXRlbGlzdGVkVVJMUGF0dGVybnMpOwogICAgIGF1dG8gYmxhY2tsaXN0ID0gdG9JbXBsKGJs
YWNrbGlzdGVkVVJMUGF0dGVybnMpOwogCi0gICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+IHVz
ZXJTdHlsZVNoZWV0ID0gQVBJOjpVc2VyU3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJT
dHlsZVNoZWV0IHsgc291cmNlLCAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXZWJDb3JlOjpi
bGFua1VSTCgpIDogV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBiYXNlVVJMU3RyaW5nKSks
IHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+
KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJp
bmc+KCksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNv
cmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdv
cmxkKCkpOworICAgIFJlZjxBUEk6OlVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCA9IEFQ
STo6VXNlclN0eWxlU2hlZXQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJj
ZSwgKGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwo
KSwgYmFzZVVSTFN0cmluZykpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9y
KCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVj
dG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5q
ZWN0ZWRGcmFtZXMpLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgQVBJOjpVc2VyQ29u
dGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKIAogICAgIHRvSW1wbChwYWdlR3JvdXBSZWYpLT51
c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldC5n
ZXQoKSk7CiB9CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgV0tQYWdlR3JvdXBBZGRVc2VyU2NyaXB0
KFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tTdHJpbmdSZWYgc291cmNlUmVmCiAgICAg
YXV0byB3aGl0ZWxpc3QgPSB0b0ltcGwod2hpdGVsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgYXV0
byBibGFja2xpc3QgPSB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucyk7CiAgICAgCi0gICAg
YXV0byB1cmwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkg
OiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIGF1dG8g
dXJsID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiAgVVJMKFVS
TCgpLCBiYXNlVVJMU3RyaW5nKTsKICAgICBSZWY8QVBJOjpVc2VyU2NyaXB0PiB1c2VyU2NyaXB0
ID0gQVBJOjpVc2VyU2NyaXB0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURk1vdmUo
c291cmNlKSwgV1RGTW92ZSh1cmwpLCB3aGl0ZWxpc3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVj
dG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5n
VmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGlu
amVjdGlvblRpbWUpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMp
IH0sIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgdG9JbXBsKHBh
Z2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQodXNlclNj
cmlwdC5nZXQoKSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmNwcAppbmRleCAxMDU3N2VlOWNjMGE3NThkMDZlNTEwMzVjZmNhMGY3NWM4ZmZhNDc2Li5hM2Uz
NDY4MjU2YmI2NzAwODI5NWZjMTNmMDcyZGYzNzliNzAwMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAg
LTQxLDggKzQxLDggQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURhdGFTdG9y
ZUdldFR5cGVJRCgpCiB7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdL
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc3RvcmUtPnNldFByZXZhbGVudFJl
c291cmNlRm9yRGVidWdNb2RlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7Cisg
ICAgc3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVy
XSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAt
MTA3LDcgKzEwNyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBzdG9yZS0+c2V0TGFzdFNlZW4oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9
LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBzdG9yZS0+c2V0TGFzdFNlZW4o
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vj
b25kcyB9LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0xMjEsMTEgKzEyMSwxMSBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YQogICAgIH0KIAogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3Rv
cmUtPnNldFByZXZhbGVudFJlc291cmNlKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVy
XSB7CisgICAgICAgIHN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0g
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0pOwog
ICAgIGVsc2UKLSAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6
VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29u
dGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50
UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29u
dGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGNvbnRleHQpOwogICAgICAgICB9KTsKIH0KQEAgLTEzOSwxMSArMTM5LDExIEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNp
dGVEYXRhU3RvcmVSZWYKICAgICB9CiAKICAgICBpZiAodmFsdWUpCi0gICAgICAgIHN0b3JlLT5z
ZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJd
IHsKKyAgICAgICAgc3RvcmUtPnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgICAgIH0p
OwogICAgIGVsc2UKLSAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUtPmNsZWFyUHJldmFs
ZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGNvbnRleHQpOwogICAgICAgICB9KTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RvcmUtPmlz
UHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxl
bnRSZXNvdXJjZSkgeworICAgIHN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29s
IGlzUHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNQcmV2YWxlbnRSZXNv
dXJjZSwgY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzdG9yZS0+
aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNW
ZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKKyAgICBzdG9yZS0+aXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJh
Y2soaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMTk1
LDcgKzE5NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJl
ZEFzU3VicmVzb3VyY2VVbmRlcihXS1dlYnNpdGVEYXRhU3RvCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgc3RvcmUtPmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXZWJD
b3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YnJlc291cmNlSG9zdCkt
PnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0
b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lz
dGVyZWRBc1N1YnJlc291cmNlVW5kZXIpIHsKKyAgICBzdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJy
ZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+
c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VV
bmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIs
IGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihXS1dlYnNpdGVE
YXRhU3RvcmVSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9yZS0+aXNSZWdpc3Rl
cmVkQXNTdWJGcmFtZVVuZGVyKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJM
KCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNh
bGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgeworICAgIHN0b3JlLT5p
c1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJG
cmFtZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNT
dWJGcmFtZVVuZGVyKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVV
bmRlciwgY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vi
c2l0ZURhdGFTdG9yZVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3JlLT5pc1Jl
Z2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChX
ZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygp
KSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykg
eworICAgIHN0b3JlLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxi
YWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgewogICAgICAgICBjYWxsYmFj
ayhpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNvbnRleHQpOwogICAgIH0pOwogfQpAQCAt
MjM1LDExICsyMzUsMTEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFz
SGFkVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZgogICAgIH0KIAogICAgIGlm
ICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPmxvZ1VzZXJJbnRlcmFjdGlvbihXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0
LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICBzdG9yZS0+bG9nVXNlckludGVyYWN0aW9u
KFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNv
bXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0
KTsKICAgICAgICAgfSk7CiAgICAgZWxzZQotICAgICAgICBzdG9yZS0+Y2xlYXJVc2VySW50ZXJh
Y3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+
c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgc3RvcmUt
PmNsZWFyVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICAgICAgfSk7CiB9CkBAIC0yNTIsNyArMjUyLDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rp
b24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJv
b2wgaGFzSGFkVXNlckludGVyYWN0aW9uKSB7CisgICAgc3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFj
dGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0
LCBjYWxsYmFja10oYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJh
Y2soaGFzSGFkVXNlckludGVyYWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTI2Myw3
ICsyNjMsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhl
cmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcgogICAgIGlmICghc3RvcmUpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhlcmVkKFdlYkNvcmU6OlVSTChX
ZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUpOwor
ICAgIHN0b3JlLT5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgdmFsdWUpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3Rh
dGlzdGljc0dyYW5kZmF0aGVyZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
V0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZEZ1bmN0aW9uIGNhbGxiYWNrKQpAQCAtMjc0LDcgKzI3NCw3IEBA
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBz
dG9yZS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29s
IGlzR3JhbmRmYXRoZXJlZCkgeworICAgIHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJh
Y2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRo
ZXJlZCwgY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdL
V2Vic2l0ZURhdGFTdG8KICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
dG9yZS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3Jl
OjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOwor
ICAgIHN0b3JlLT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRv
cEZyYW1lSG9zdCktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFt
ZUhvc3QpCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGEKICAgICBp
ZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lT3JpZ2luKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJL
aXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSkpOworICAgIHN0b3JlLT5zZXRTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0
cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQpAQCAtMzAz
LDcgKzMwMyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvCiAgICAgaWYgKCFzdG9yZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RU
byhXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJl
ZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSk7CiB9
CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKQEAgLTMxMiw3ICszMTIs
NyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhUwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBzdG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20o
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRp
cmVjdGVkRnJvbSktPnN0cmluZygpKSk7CisgICAgc3RvcmUtPnNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSkp
OwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKQEAgLTMyMSw3ICszMjEsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUgogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdlYkNvcmU6
OlVSTChXZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgV2Vi
Q29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRv
KS0+c3RyaW5nKCkpKTsKKyAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpKTsKIH0KIAogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJp
bmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vi
c2l0ZURhdGFTdG9yCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IHN0b3JlLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFdlYkNvcmU6OlVSTChX
ZWJDb3JlOjpVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5n
KCkpKTsKKyAgICBzdG9yZS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5k
ZXggYTgwNmJkZWMyZTJkNDgyM2IyZjFlOTJlZDEzM2U3MTM2NWRlZjY2NC4uYzg1ODAzM2FlNTkx
YjNhMjIzOWIwMWYxYjliMGYzOWZkZmJiNDBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMzAsMTAgKzMw
LDEwIEBACiAKICNpbXBvcnQgIkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKICNpbXBvcnQgPFdl
YkNvcmUvQ29va2llLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09i
akNQdHIuaD4KIAogc3RhdGljIE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpjb3JlQ29va2llc1Rv
TlNDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb3JlQ29va2llcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCmlu
ZGV4IDljZjY2ODFhYWIzOTFjMzViNjM3OTA3YjExMTA4NmY4Mjc5NzZkNWEuLjhlMGM3MjEyODY4
MjgyMTE5ZjJmODlmMjk1MDY1YWY0ZDJmZWEwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQpAQCAtOTUsNyArOTUsNyBAQAogICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
QVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdl
YkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBXZWJDb3JlOjpVUkwoYXNz
b2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0
b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCAqdXNl
ckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25z
dHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0
IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5n
VmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2ts
aXN0KSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1l
KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2Vi
Q29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVu
dFdvcmxkKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggODgxNDM0MjA2NjMyZWU1N2M3MjIzZjg1
ZTNhMjJkMmMwNDBjMWMxYi4uYWNkMGZjYWIyZTdmNzY5YjhlODZmMDIyMTFkZmE0NTcyMmEwMGUx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC0xMjgzLDcgKzEyODMsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5UmVw
cmVzZW50YXRpb25Gb3JFZGl0b3JTdGF0ZShjb25zdCBXZWJLaXQ6OkVkaXRvcgogICAgICAgICBb
dWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIGVkaXRvclN0YXRlRGlkQ2hhbmdlOmRpY3Rpb25hcnlS
ZXByZXNlbnRhdGlvbkZvckVkaXRvclN0YXRlKF9wYWdlLT5lZGl0b3JTdGF0ZSgpKV07CiB9CiAK
LS0gKHZvaWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nOihjb25zdCBXZWJLaXQ6OlNhZmVCcm93
c2luZ1dhcm5pbmcmKXdhcm5pbmcgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgV2ViQ29yZTo6VVJMPiYm
KT4mJiljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmc6
KGNvbnN0IFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZyYpd2FybmluZyBjb21wbGV0aW9uSGFu
ZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWYXJpYW50PFdlYktpdDo6Q29udGludWVVbnNh
ZmVMb2FkLCBVUkw+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgX3NhZmVCcm93c2lu
Z1dhcm5pbmcgPSBhZG9wdE5TKFtbV0tTYWZlQnJvd3NpbmdXYXJuaW5nIGFsbG9jXSBpbml0V2l0
aEZyYW1lOnNlbGYuYm91bmRzIHNhZmVCcm93c2luZ1dhcm5pbmc6d2FybmluZyBjb21wbGV0aW9u
SGFuZGxlcjpbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+KHNlbGYpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKSkK
QEAgLTQ3NzYsNyArNDc3Niw3IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJ
T04oRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVykKIC0gKHZvaWQpX3Nob3dTYWZlQnJv
d3NpbmdXYXJuaW5nV2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5n
ICopd2FybmluZyBkZXRhaWxzOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilkZXRhaWxzIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgYXV0byBz
YWZlQnJvd3NpbmdXYXJuaW5nID0gV2ViS2l0OjpTYWZlQnJvd3NpbmdXYXJuaW5nOjpjcmVhdGUo
dGl0bGUsIHdhcm5pbmcsIGRldGFpbHMpOwotICAgIGF1dG8gd3JhcHBlciA9IFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChWYXJpYW50PFdlYktp
dDo6Q29udGludWVVbnNhZmVMb2FkLCBXZWJDb3JlOjpVUkw+JiYgdmFyaWFudCkgeworICAgIGF1
dG8gd3JhcHBlciA9IFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIChWYXJpYW50PFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkLCBVUkw+JiYgdmFy
aWFudCkgewogICAgICAgICBzd2l0Y2hPbih2YXJpYW50LCBbJl0gKFdlYktpdDo6Q29udGludWVV
bnNhZmVMb2FkIGNvbnRpbnVlVW5zYWZlTG9hZCkgewogICAgICAgICAgICAgc3dpdGNoIChjb250
aW51ZVVuc2FmZUxvYWQpIHsKICAgICAgICAgICAgIGNhc2UgV2ViS2l0OjpDb250aW51ZVVuc2Fm
ZUxvYWQ6OlllczoKQEAgLTQ3ODQsNyArNDc4NCw3IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05U
RU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVykKICAgICAgICAg
ICAgIGNhc2UgV2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQ6Ok5vOgogICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOTyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0s
IFsmXSAoV2ViQ29yZTo6VVJMKSB7CisgICAgICAgIH0sIFsmXSAoVVJMKSB7CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5P
KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCmluZGV4IDlkZTVlNThlYTY3Zjc3
YTc2ZDVhMjQzNjVlYWMyMjdmNzgzYmRmMWIuLmQyODdmZDk1YmRjNzliYzk0ODZjM2VkNGY4MzZl
NmVjMDAzMjAzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC00NCw4ICs0NCw4IEBACiAj
aW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUv
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTFBhcnNlci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyBO
U1N0cmluZyAqZGVmYXVsdEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCgpCiAgICAgaWYgKFtX
S1dlYlZpZXcgaGFuZGxlc1VSTFNjaGVtZTp1cmxTY2hlbWVdKQogICAgICAgICBbTlNFeGNlcHRp
b24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBhIFVS
TCBzY2hlbWUgdGhhdCBXS1dlYlZpZXcgaGFuZGxlcyBuYXRpdmVseSIsIHVybFNjaGVtZV07CiAK
LSAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5v
bmljYWxpemVTY2hlbWUodXJsU2NoZW1lKTsKKyAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdU
Rjo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOwogICAgIGlm
ICghY2Fub25pY2FsU2NoZW1lKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlk
QXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBub3QgYSB2YWxpZCBVUkwgc2NoZW1l
IiwgdXJsU2NoZW1lXTsKIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqZGVm
YXVsdEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCgpCiAKIC0gKGlkIDxXS1VSTFNjaGVtZUhh
bmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1l
CiB7Ci0gICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJDb3JlOjpVUkxQYXJzZXI6Om1heWJl
Q2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAgYXV0byBjYW5vbmljYWxTY2hlbWUg
PSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJsU2NoZW1lKTsKICAg
ICBpZiAoIWNhbm9uaWNhbFNjaGVtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApp
bmRleCBiMDY1YjM1MThmODI5Y2VmMzUzZDc4MWMxYWEwMGE2OTk0ODAyZDQ1Li4xZDE1MTk0Y2Jm
YmE5YTlkNmFhMjc0NzljYzdiYTVhZTg2YjNiNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtNzIsMTAgKzcy
LDYgQEAgY2xhc3MgV2ViUGFnZVByb3h5Owogc3RydWN0IFByaW50SW5mbzsKIH0KIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCiBAY2xhc3MgV0tXZWJWaWV3Q29udGVudFBy
b3ZpZGVyUmVnaXN0cnk7CiBAY2xhc3MgV0tQYXNzd29yZFZpZXc7CiBAY2xhc3MgX1dLRnJhbWVI
YW5kbGU7CkBAIC0xODQsNyArMTgwLDcgQEAgY2xhc3MgVVJMOwogLSAodm9pZClfZGlkSW52YWxp
ZGF0ZURhdGFGb3JBdHRhY2htZW50OihBUEk6OkF0dGFjaG1lbnQmKWF0dGFjaG1lbnQ7CiAjZW5k
aWYKIAotLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmc6KGNvbnN0IFdlYktpdDo6U2Fm
ZUJyb3dzaW5nV2FybmluZyYpd2FybmluZyBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWYXJpYW50PFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkLCBXZWJDb3JlOjpV
Ukw+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dh
cm5pbmc6KGNvbnN0IFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZyYpd2FybmluZyBjb21wbGV0
aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWYXJpYW50PFdlYktpdDo6Q29udGlu
dWVVbnNhZmVMb2FkLCBVUkw+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfY2xl
YXJTYWZlQnJvd3NpbmdXYXJuaW5nOwogCiAtIChzdGQ6Om9wdGlvbmFsPEJPT0w+KV9yZXNvbHV0
aW9uRm9yU2hhcmVTaGVldEltbWVkaWF0ZUNvbXBsZXRpb25Gb3JUZXN0aW5nOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0KaW5kZXggZTQyNmFjMzU2YjNjODY1MDE2YzNjMzkyMWNmNGUwMDBkM2Q5YzY1OC4uMzEyMmQ1
ZGFmMWJjMDM0M2UwNTkxYzhlYWNkZjliMjE0YmUyZWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0z
OCw5ICszOCw5IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW1wb3J0ICJfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYktpdC9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Lmg+CiAjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogQGltcGxlbWVudGF0aW9uIFdLV2Vi
c2l0ZURhdGFTdG9yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCmluZGV4IDNlZGQ4NTMxYTA5OGIw
NGYyNDM3ZDdkZTViODU0MGYzZjYwZWNmNzIuLmRmZWQwYTliZTE3NTM3MjJiNjU0MDc3MWM4N2Iz
NjVhYjZkZjA5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC01NCw5ICs1NCw5IEBACiAg
ICAgICAgIFdURjo6U3RyaW5nKG5hbWUpLAogICAgICAgICBXVEY6OlN0cmluZyhzaG9ydE5hbWUp
LAogICAgICAgICBXVEY6OlN0cmluZyhkZXNjcmlwdGlvbiksCi0gICAgICAgIFdlYkNvcmU6OlVS
TChzY29wZVVSTCksCisgICAgICAgIFVSTChzY29wZVVSTCksCiAgICAgICAgIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OkRpc3BsYXk+KGRpc3BsYXkpLAotICAgICAg
ICBXZWJDb3JlOjpVUkwoc3RhcnRVUkwpCisgICAgICAgIFVSTChzdGFydFVSTCkKICAgICB9Owog
CiAgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OkFwcGxpY2F0aW9uTWFu
aWZlc3Q+KHNlbGYsIFdURk1vdmUoY29yZUFwcGxpY2F0aW9uTWFuaWZlc3QpKTsKQEAgLTgzLDcg
KzgzLDcgQEAKIAogKyAoX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKWFwcGxpY2F0aW9uTWFuaWZl
c3RGcm9tSlNPTjooTlNTdHJpbmcgKilqc29uIG1hbmlmZXN0VVJMOihOU1VSTCAqKW1hbmlmZXN0
VVJMIGRvY3VtZW50VVJMOihOU1VSTCAqKWRvY3VtZW50VVJMCiB7Ci0gICAgYXV0byBtYW5pZmVz
dCA9IFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlKFdURjo6U3RyaW5n
KGpzb24pLCBXZWJDb3JlOjpVUkwobWFuaWZlc3RVUkwpLCBXZWJDb3JlOjpVUkwoZG9jdW1lbnRV
UkwpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdFBh
cnNlcjo6cGFyc2UoV1RGOjpTdHJpbmcoanNvbiksIFVSTChtYW5pZmVzdFVSTCksIFVSTChkb2N1
bWVudFVSTCkpOwogICAgIHJldHVybiB3cmFwcGVyKEFQSTo6QXBwbGljYXRpb25NYW5pZmVzdDo6
Y3JlYXRlKG1hbmlmZXN0KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQppbmRleCBlNmYwOTBmZjVkNDEzN2M2
NTg5Y2VlOGZjYTgzNTAxM2I4YTZkZTNkLi42MTQ1MjMyYTBkOGU3ZjFhOGQ3MmRhZDcxMzc3YmE1
Yzc0YmI4NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVXNlclN0eWxlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCkBAIC03MCw3ICs3MCw3IEBACiAgICAgLy8gRklYTUU6
IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZv
cmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hv
dWxkIHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAot
ICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4o
c2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7IFdl
YkNvcmU6OlVSTCgpLCBXVEY6OlN0cmluZyhbYmFzZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RG
U3RyaW5nXSkgfSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRv
U3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3Jl
OjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzLCBXZWJD
b3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVu
dFdvcmxkKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0
eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291
cmNlKSwgeyAgVVJMKCksIFdURjo6U3RyaW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNX
VEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6
dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNv
cmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdl
YkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250
ZW50V29ybGQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBhNzI5ZmFiOWE3OWUxZGNk
MTU0ZjQzMDkxZDE3ZjRlZGM4MGRmM2I0Li42NzRhNWRiMDQzYzhhNjBmMzYyMGFhN2JhMDE4YzFm
OTg1ZWRmOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU1FM
aXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIC8vIEZvciBtZXRob2RzIHRoYXQgYXJlIG1lYW50IHRvIHN1cHBvcnQgQVBJIGZyb20g
dGhlIG1haW4gdGhyZWFkIC0gc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW50ZXJuYWxseQogI2RlZmlu
ZSBBU1NFUlRfTk9UX1NZTkNfVEhSRUFEKCkgQVNTRVJUKCFtX3N5bmNUaHJlYWRSdW5uaW5nIHx8
ICFJU19JQ09OX1NZTkNfVEhSRUFEKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGRlODJmZGFiNWM3
Zjk1M2ZhNWJjYWY0MDdkOWM2NmNiMTg1MjI3ZTMuLjdhOTQyOTE5ZGRmOGM0ZjJhM2IxNmRhNzY3
MDE0YjJjMmMxNTRmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9p
ZCB3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2Nvb2tpZXMoV2ViS2l0Q29va2llTWFuYWdlciog
bWFuYWdlciwgY29uc3QgZ2NoYXIKIAogICAgIC8vIENvb2tpZXMgYXJlIHJlYWQvd3JpdHRlbiBm
cm9tL3RvIHRoZSBzYW1lIFNRTGl0ZSBkYXRhYmFzZSBvbiBkaXNrIHJlZ2FyZGxlc3MKICAgICAv
LyBvZiB0aGUgcHJvY2VzcyB3ZSBhY2Nlc3MgdGhlbSBmcm9tLCBzbyBqdXN0IHVzZSB0aGUgZmly
c3QgcHJvY2VzcyBwb29sLgotICAgIHByb2Nlc3NQb29sc1swXS0+c3VwcGxlbWVudDxXZWJDb29r
aWVNYW5hZ2VyUHJveHk+KCktPmdldENvb2tpZXMoc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSksIFt0YXNrID0gV1RGTW92ZSh0YXNr
KV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMsIENhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKKyAgICBwcm9jZXNzUG9vbHNbMF0tPnN1cHBsZW1lbnQ8V2ViQ29va2ll
TWFuYWdlclByb3h5PigpLT5nZXRDb29raWVzKHNlc3Npb25JRCwgVVJMKFVSTCgpLCBTdHJpbmc6
OmZyb21VVEY4KHVyaSkpLCBbdGFzayA9IFdURk1vdmUodGFzayldKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiBjb29raWVzLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAg
ICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CiAgICAgICAgICAg
ICAvLyBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpbiBjYXNlcyB3aGVyZSB0aGUgd2ViIHByb2Nlc3Mg
aXMgbm90IGF2YWlsYWJsZSwKICAgICAgICAgICAgIC8vIGNvbnNpZGVyIHRoZSBvcGVyYXRpb24g
ImNhbmNlbGxlZCIgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgY2xpZW50LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVD
aG9vc2VyUmVxdWVzdC5jcHAKaW5kZXggY2QwMjZlNGY4ZTkxYTdhYmZiMTliY2MzMGIwYTEyMzU4
ZjI3ZGU1MC4uMzdlNmNjYTBjZWJjZTkxNDczMGUzYzZkNDI1YzVmZWY3N2ZiNDg1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
aWxlQ2hvb3NlclJlcXVlc3QuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5j
cHAKaW5kZXggM2JjYzIxMjM2Nzg1OTM2YTc3MTI5N2U2ZTM5OGQyODBkZmI2YjgwMi4uODgzMzZi
M2RjNDY4NDk4OGFjNzdkMTY5ZGE2YTU5NWU2MWU1OWU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcApA
QCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luLmgiCiAKICNp
bmNsdWRlICJXZWJLaXRTZWN1cml0eU9yaWdpblByaXZhdGUuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIC8qKgpAQCAtMTEwLDcgKzExMCw3IEBAIFdlYktpdFNlY3VyaXR5T3JpZ2luKiB3ZWJr
aXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKGNvbnN0IGdjaGFyKiB1cmkpCiB7CiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwodXJpLCBudWxscHRyKTsKIAotICAgIHJldHVybiB3ZWJraXRT
ZWN1cml0eU9yaWdpbkNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSkpOworICAgIHJl
dHVybiB3ZWJraXRTZWN1cml0eU9yaWdpbkNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKFVSTChVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSkpOwogfQogCiAvKioKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNw
cAppbmRleCA1OGJkN2JlNGJiYzVmMmZjZTNlY2VlMTNiNjUzMGQzNTBlZDgxNWJkLi4xYzc2ODg2
OTA3ODFmMmEwOWMwYzhiN2I0OGY3OGU4ZWVlNTU2OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC01Myw3ICs1Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwg
UmVmPEFQSTo6RnJhbWVJbmZvPiYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVzb3VyY2VSZXF1ZXN0LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1
cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBmaW5hbAogICAgIHsKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBw
YWdlLnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEu
dXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICBXZWJLaXROYXZpZ2F0aW9uQWN0
aW9uIG5hdmlnYXRpb25BY3Rpb24oQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92
ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIGZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpu
dWxsb3B0LCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFdlYkNvcmU6OlVSTCB7IH0sIGZhbHNl
LCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpKTsKKyAgICAgICAgV2ViS2l0TmF2aWdh
dGlvbkFjdGlvbiBuYXZpZ2F0aW9uQWN0aW9uKEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRl
KFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm8ucHRyKCksIG51bGxwdHIs
IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBVUkwgeyB9LCBmYWxzZSwg
V1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKG1fd2ViVmlldywgd2luZG93RmVhdHVyZXMs
ICZuYXZpZ2F0aW9uQWN0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4
IDkxNjc0YWMyODhmN2U3OGY0NTFlOTU5M2QzYTU1NDhmZjU5ODg4OWYuLjA3YjU4YWQzMjNkNTQ1
OGM5MDM2NjNkYjgzMGU5NGJlN2U1ZDg4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0y
NiwxMCArMjYsMTAgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
R1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVk
ZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
V1RGR1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDBmYTRh
MThmODljOGM1MWE0NTQwNzc4ZjVhZTI3YmVhODdkN2I1ZjEuLjIzNDg1OTY2M2QxZjJjNzgwODk4
ZjA2MGY0MDE0OTg4ZTc4NmI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC02NiwxMiArNjYsMTIgQEAKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGpzYy9KU0NDb250ZXh0
UHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01FeGNl
cHRpb25IYW5kbGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ2xpYi9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KQEAgLTI2NDcsNyArMjY0Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xv
YWRfcGxhaW5fdGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogcGxhaW5U
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAg
IGdfcmV0dXJuX2lmX2ZhaWwocGxhaW5UZXh0KTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9h
ZERhdGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwbGFpblRleHQpLCBwbGFp
blRleHQgPyBzdHJsZW4ocGxhaW5UZXh0KSA6IDAgfSwgInRleHQvcGxhaW4iX3MsICJVVEYtOCJf
cywgYmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YSh7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBsYWluVGV4dCksIHBsYWluVGV4dCA/
IHN0cmxlbihwbGFpblRleHQpIDogMCB9LCAidGV4dC9wbGFpbiJfcywgIlVURi04Il9zLCBXVEY6
OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBiYmQ1MTZlNzI5NjIzMzdiZGRmZWNkMGM1NmQz
OTgxNDgzM2Q4YTc0Li5iN2U2MzMwZWFlYjJlMjAyMmU2MjNmM2E2OGVjMWJjMTdhYTM3NzVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0yOCw3
ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRleCBiNDRiN2RiMWVhODMyZDc5YmFlOWE0
N2EyYzU4MjkxNTliZmI2MDQ2Li5lZGFlMDgzZTllOTg0NWE0MmFhZGE2OGMwMzUzMjNkMjM3MDQy
YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0xMDYsMTEgKzEwNiwxMSBA
QCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKGNvbnN0IFN0
cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbgogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmF0
aW5nOwogCi0gICAgV2ViQ29yZTo6VVJMIG9yaWdpbmF0aW5nVVJMKFdlYkNvcmU6OlVSTCgpLCBv
cmlnaW5hdGluZ1VSTFN0cmluZyk7CisgICAgVVJMIG9yaWdpbmF0aW5nVVJMKFVSTCgpLCBvcmln
aW5hdGluZ1VSTFN0cmluZyk7CiAKLSAgICBWZWN0b3I8V2ViQ29yZTo6VVJMPiBsaW5rSWNvblVS
THM7CisgICAgVmVjdG9yPFVSTD4gbGlua0ljb25VUkxzOwogICAgIGZvciAoY29uc3QgYXV0byYg
bGlua0ljb25VUkxTdHJpbmcgOiBsaW5rSWNvblVSTFN0cmluZ3MpCi0gICAgICAgIGxpbmtJY29u
VVJMcy5hcHBlbmQoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBsaW5rSWNvblVSTFN0cmlu
ZykpOworICAgICAgICBsaW5rSWNvblVSTHMuYXBwZW5kKFVSTChVUkwoKSwgbGlua0ljb25VUkxT
dHJpbmcpKTsKIAogICAgIHBsYXRmb3JtU2hvd1BheW1lbnRVSShvcmlnaW5hdGluZ1VSTCwgbGlu
a0ljb25VUkxzLCBwYXltZW50UmVxdWVzdCwgW3RoaXNdKGJvb2wgcmVzdWx0KSB7CiAgICAgICAg
IEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmF0aW5nKTsKQEAgLTIyNSw3ICsyMjUsNyBA
QCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5jZWxQYXltZW50U2Vzc2lv
bigpCiAgICAgZGlkUmVhY2hGaW5hbFN0YXRlKCk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVS
TCYgdXJsKQogewogICAgIEFTU0VSVChtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlID09IE1lcmNo
YW50VmFsaWRhdGlvblN0YXRlOjpJZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5k
ZXggZTAzYzcwYWI4YjljMjI1OTgzNTQxMTY5MTlmNzllZWEzYWM5ZjE2Ny4uMWZiY2QzNDU2MTNj
MDdkNGVlOTE5YTdkZTQ1OTVkMGEyNTZjZWVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
CkBAIC00Nyw3ICs0Nyw2IEBAIGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50Q29udGFjdDsK
IGNsYXNzIFBheW1lbnRNZXJjaGFudFNlc3Npb247CiBjbGFzcyBQYXltZW50TWV0aG9kOwotY2xh
c3MgVVJMOwogfQogCiBPQkpDX0NMQVNTIE5TT2JqZWN0OwpAQCAtNjUsNyArNjQsNyBAQCBwdWJs
aWM6CiAgICAgfldlYlBheW1lbnRDb29yZGluYXRvclByb3h5KCk7CiAKICAgICB2b2lkIGRpZENh
bmNlbFBheW1lbnRTZXNzaW9uKCk7Ci0gICAgdm9pZCB2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFdl
YkNvcmU6OlVSTCYpOworICAgIHZvaWQgdmFsaWRhdGVNZXJjaGFudChjb25zdCBVUkwmKTsKICAg
ICB2b2lkIGRpZEF1dGhvcml6ZVBheW1lbnQoY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpOwogICAg
IHZvaWQgZGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJik7CiAgICAgdm9pZCBkaWRTZWxlY3RT
aGlwcGluZ0NvbnRhY3QoY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmKTsKQEAgLTEwMyw3
ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcGxhdGZvcm1DYW5NYWtlUGF5bWVudHMoKTsK
ICAgICB2b2lkIHBsYXRmb3JtQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpG
dW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBwbGF0
Zm9ybU9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcik7Ci0gICAgdm9pZCBwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgV2Vi
Q29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxp
bmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2
b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25z
dCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdCYsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNv
bnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKICAgICB2b2lkIHBsYXRmb3Jt
Q29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNo
aXBwaW5nQ29udGFjdFNlbGVjdGlvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBw
aW5nQ29udGFjdFVwZGF0ZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EuaAppbmRleCBiZjQyOWM4OTY0MjhlODM2MDkwNDk0NzVhYmZiNGQ2OWM2YWVmMjE1
Li5jNGQ3OWZlNGMxMmM5YWI4NTRmYmJkNDI1MTNiNzg1MzgzMDcyYWU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCkBAIC0zMSwxNSArMzEsMTEgQEAK
ICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFVSTDsKLX0KLQogbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTsKIAotUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IHRvUEtQYXltZW50UmVxdWVz
dChXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpOworUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+
IHRvUEtQYXltZW50UmVxdWVzdChXZWJQYWdlUHJveHkmLCBjb25zdCBVUkwmIG9yaWdpbmF0aW5n
VVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IDA1NmQ1YzNmNGE1Mzk0ZDNjZjVkZWQ2
ZDZkYjU0ZjBmODY2NGE5MzMuLjlmY2FiNDI5YTI0MGIwNjUxZjMwMTcxMzVlN2QwMGIxNGE4Mzdi
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpA
QCAtMzIsMTAgKzMyLDEwIEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCA8
V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
YXltZW50SGVhZGVycy5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPHBhbC9j
b2NvYS9QYXNzS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49
IDEwMTMwMCkKIFNPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpCkBAIC00NDIsNyArNDQyLDcg
QEAgc3RhdGljIFBLUGF5bWVudFJlcXVlc3RBUElUeXBlIHRvQVBJVHlwZShXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDoKIH0KICNlbmRpZgogCi1SZXRhaW5QdHI8UEtQYXlt
ZW50UmVxdWVzdD4gdG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5
LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QpCitSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4g
dG9QS1BheW1lbnRSZXF1ZXN0KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBjb25zdCBVUkwm
IG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBX
ZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QpCiB7
CiAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdElu
c3RhbmNlKCkgaW5pdF0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
cHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1Mu
bW0KaW5kZXggZjllMjgwZDFjOTU2YTZkOGRlNzI1NDFmZmYwOTdmNThjZGVhYTg2OC4uNWQ3YjQz
ZTc5MzljMzdlZjI4NGQ5M2JjZjAyNjc2NTNkMmFjMDMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5
bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZl
Y3RvcjxVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1Zp
ZXdDb250cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlDbGllbnQoKS5wcmVzZW50aW5nVmlld0Nv
bnRyb2xsZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGVQ
YXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmlu
ZGV4IGJkODMwYzYyNDRkZGY1NjljNTE4NWRiZTliNzUwMzYwMGM5YzdjNzYuLjM3NGVmYjUzZmY0
OGRkOGNiZTRlODZkM2FhNjQyMzNiMDZjMGQwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlNYWMubW0KQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRV
SShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8
VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdCYgcmVxdWVzdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcGF5bWVudFJlcXVlc3QgPSB0b1BLUGF5bWVudFJl
cXVlc3QobV93ZWJQYWdlUHJveHksIG9yaWdpbmF0aW5nVVJMLCBsaW5rSWNvblVSTFN0cmluZ3Ms
IHJlcXVlc3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGJiYTczZGE3ZGYxMGY4ZGYz
ZmQ3YWE1MTJhYTMzNWFkNzYzMjYyYTMuLmRkMGNiNDQyNzA2OWUwNzRmYjU4MGIxMWMyZTljMzli
MWRiYjM5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC00NCwxMCArNDQsMTAgQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1VV
SUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCkBAIC02Njks
NyArNjY5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0Nv
bnRleHQoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFMKICAgICAgICAgQVNZTkNfRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoSW52YWxpZFBhcmFtZXRlciwgIlRoZSBw
YXJhbWV0ZXIgJ3BhZ2VMb2FkU3RyYXRlZ3knIGlzIGludmFsaWQuIik7CiAgICAgYXV0byBwYWdl
TG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCA/IFNlY29uZHM6OmZyb21NaWxs
aXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVv
dXQ7CiAKLSAgICBwYWdlLT5sb2FkUmVxdWVzdChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCks
IHVybCkpOworICAgIHBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgdXJsKSk7CiAgICAgd2Fp
dEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25QYWdlKCpwYWdlLCBwYWdlTG9hZFN0cmF0ZWd5LnZh
bHVlKCksIHBhZ2VMb2FkVGltZW91dCwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCkBAIC0xMjk3
LDcgKzEyOTcsNyBAQCBzdGF0aWMgU3RyaW5nIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVk
ZWQoU3RyaW5nIGRvbWFpbikKICAgICBpZiAoZG9tYWluWzBdICE9ICcuJykgewogICAgICAgICAv
LyBSRkMgMjk2NTogSWYgYW4gZXhwbGljaXRseSBzcGVjaWZpZWQgdmFsdWUgZG9lcyBub3Qgc3Rh
cnQgd2l0aCBhIGRvdCwgdGhlIHVzZXIgYWdlbnQgc3VwcGxpZXMgYSBsZWFkaW5nIGRvdC4KICAg
ICAgICAgLy8gQXNzdW1lIHRoYXQgYW55IGhvc3QgdGhhdCBlbmRzIHdpdGggYSBkaWdpdCBpcyB0
cnlpbmcgdG8gYmUgYW4gSVAgYWRkcmVzcy4KLSAgICAgICAgaWYgKCFXZWJDb3JlOjpVUkw6Omhv
c3RJc0lQQWRkcmVzcyhkb21haW4pKQorICAgICAgICBpZiAoIVVSTDo6aG9zdElzSVBBZGRyZXNz
KGRvbWFpbikpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygnLicsIGRvbWFpbik7CiAg
ICAgfQogICAgIApAQCAtMTMxMCw3ICsxMzEwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6YWRkU2luZ2xlQ29va2llKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLAog
ICAgIGlmICghcGFnZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Io
V2luZG93Tm90Rm91bmQpOwogCi0gICAgV2ViQ29yZTo6VVJMIGFjdGl2ZVVSTCA9IFdlYkNvcmU6
OlVSTChXZWJDb3JlOjpVUkwoKSwgcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFjdGl2ZVVSTCgpKTsK
KyAgICBVUkwgYWN0aXZlVVJMID0gVVJMKFVSTCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0
aXZlVVJMKCkpOwogICAgIEFTU0VSVChhY3RpdmVVUkwuaXNWYWxpZCgpKTsKIAogICAgIFdlYkNv
cmU6OkNvb2tpZSBjb29raWU7CkBAIC0xMzY3LDcgKzEzNjcsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaQogICAgIGlmICghcGFnZSkKICAgICAgICAgU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBXZWJDb3JlOjpVUkwgYWN0aXZlVVJMID0g
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBwYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWN0aXZl
VVJMKCkpOworICAgIFVSTCBhY3RpdmVVUkwgPSBVUkwoVVJMKCksIHBhZ2UtPnBhZ2VMb2FkU3Rh
dGUoKS5hY3RpdmVVUkwoKSk7CiAgICAgQVNTRVJUKGFjdGl2ZVVSTC5pc1ZhbGlkKCkpOwogCiAg
ICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+
c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IGM1YTVkNmJkZjE3ODJmMzRk
ZTI0MWRiYWNjZjVkYjI4MjYzMzMwZjEuLmU5ZDcyMzg0ZTQ5MWU5NjcyMWM2NTA2ZGRjYTNiMzRj
YzAzMjQwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25s
b2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2Fk
Q2xpZW50Lm1tCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmlu
aXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNpZiBV
U0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3
RG93bmxvYWQoKSkgewogICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2FkUHJveHku
b3JpZ2luYXRpbmdQYWdlKCkpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OlVSTCBkZXN0aW5hdGlv
blVSTCA9IFdlYkNvcmU6OlVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChkb3dubG9hZFBy
b3h5LmRlc3RpbmF0aW9uRmlsZW5hbWUoKSk7CisgICAgICAgICAgICBXVEY6OlVSTCBkZXN0aW5h
dGlvblVSTCA9IFdURjo6VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGRvd25sb2FkUHJv
eHkuZGVzdGluYXRpb25GaWxlbmFtZSgpKTsKICAgICAgICAgICAgIGlmICghZGVzdGluYXRpb25V
UkwuZnJhZ21lbnRJZGVudGlmaWVyKCkubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgZGVzdGlu
YXRpb25VUkwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKGRvd25sb2FkUHJveHkucmVxdWVzdCgpLnVy
bCgpLmZyYWdtZW50SWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyKCktPmZpbmlzaChkZXN0aW5hdGlvblVSTCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IGIxMGRjODk1ZmFl
ODQyMjhiZGM3OGRlNGU2ODE0NGExMWQ5MWExZjkuLmMwMmMxNTY0ZGRlMjJkNmFjZTJhZTVkMjRl
OGMzZDFkZTUyZGM3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBS
ZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5Jikgb3ZlcnJp
ZGU7CiAKLSAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiwgdW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBS
ZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYp
IG92ZXJyaWRlOworICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNv
bnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJikgb3Zl
cnJpZGU7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7CkBAIC0xMjUsOCArMTI1LDggQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICB2b2lkIHdlYkdM
TG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYpIGNvbnN0IGZpbmFsOwot
ICAgICAgICB2b2lkIHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2Vi
UGFnZVByb3h5JiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kpPiYmKSBjb25zdCBmaW5hbDsKKyAgICAgICAgdm9pZCByZXNvbHZlV2Vi
R0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJikgY29uc3QgZmluYWw7CiAgICAgICAg
IGJvb2wgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2VQcm94eSYsIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mLCBib29sIGluUGFnZUNhY2hlKSBmaW5hbDsKICAgICAgICAgYm9vbCBk
aWRGYWlsVG9Jbml0aWFsaXplUGx1Z0luKFdlYlBhZ2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYp
IGZpbmFsOwogICAgICAgICBib29sIGRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKFdlYlBh
Z2VQcm94eSYsIEFQSTo6RGljdGlvbmFyeSYpIGZpbmFsOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGJvb2wgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYlBhZ2VQcm94
eSYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBjb25zdCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0+PiYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBjb250ZW50UnVs
ZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6VVJMJiYsIFZlY3RvcjxT
dHJpbmc+JiYsIFZlY3RvcjxTdHJpbmc+JiYpIGZpbmFsOworICAgICAgICB2b2lkIGNvbnRlbnRS
dWxlTGlzdE5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkmLCBVUkwmJiwgVmVjdG9yPFN0cmluZz4m
JiwgVmVjdG9yPFN0cmluZz4mJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9u
PiYmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25S
ZXNwb25zZShXZWJQYWdlUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+JiYsIFJl
ZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQppbmRleCA5YzU0MGQ1OWFhMGFlNTNhNGFjNDgyYmEwMDBhZjczOWYzYTc3Yzlk
Li5mNmY0MmQ5NzA0YWVmYjMwZmUzNzE5YTBiODI5OWI1MTkwOWEzZmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC03MCw5ICs3
MCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdlbmVyYXRvci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VyaWFsaXplZENy
eXB0b0tleVdyYXAuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDx3dGYvQmxv
Y2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjaWYgSEFWRShBUFBfTElOS1MpCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5j
aFNlcnZpY2VzU1BJLmg+CkBAIC0zOTcsNyArMzk3LDcgQEAgaW5saW5lIFdlYkNvcmU6OldlYkdM
TG9hZFBvbGljeSB0b1dlYkNvcmVXZWJHTExvYWRQb2xpY3koX1dLV2ViR0xMb2FkUG9saWN5IHBv
bGkKICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCi12b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5KFdlYlBh
Z2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dl
YkdMTG9hZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJHTEFs
bG93Q3JlYXRpb24pOwpAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
CiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29u
c3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9s
aWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlv
blN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVzb2x2ZVdlYkdMTG9h
ZFBvbGljeUZvclVSTCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJHTEFsbG93Q3Jl
YXRpb24pOwpAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQCiAgICAg
fQogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGVudFJ1
bGVMaXN0Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OlVSTCYmIHVybCwgVmVj
dG9yPFN0cmluZz4mJiBsaXN0SWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+JiYgbm90aWZpY2F0
aW9ucykKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZW50UnVs
ZUxpc3ROb3RpZmljYXRpb24oV2ViUGFnZVByb3h5JiwgVVJMJiYgdXJsLCBWZWN0b3I8U3RyaW5n
PiYmIGxpc3RJZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4mJiBub3RpZmljYXRpb25zKQogewog
ICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndl
YlZpZXdVUkxDb250ZW50UnVsZUxpc3RJZGVudGlmaWVyc05vdGlmaWNhdGlvbnMpCiAgICAgICAg
IHJldHVybjsKQEAgLTcwNCw3ICs3MDQsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmCiAgICAg
aWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6
OlVSTCB1cmwoV2ViQ29yZTo6VVJMKCksIHVybFN0cmluZyk7CisgICAgVVJMIHVybChVUkwoKSwg
dXJsU3RyaW5nKTsKIAogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5t
X3dlYlZpZXcgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOnVybCBkZWxheTpkZWxheV07
CiB9CkBAIC03MTgsOCArNzE4LDggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25D
bGllbnQ6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmIHAKICAgICBpZiAo
IW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6VVJM
IHNvdXJjZVVSTChXZWJDb3JlOjpVUkwoKSwgc291cmNlVVJMU3RyaW5nKTsKLSAgICBXZWJDb3Jl
OjpVUkwgZGVzdGluYXRpb25VUkwoV2ViQ29yZTo6VVJMKCksIGRlc3RpbmF0aW9uVVJMU3RyaW5n
KTsKKyAgICBVUkwgc291cmNlVVJMKFVSTCgpLCBzb3VyY2VVUkxTdHJpbmcpOworICAgIFVSTCBk
ZXN0aW5hdGlvblVSTChVUkwoKSwgZGVzdGluYXRpb25VUkxTdHJpbmcpOwogCiAgICAgW3N0YXRp
Y19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdh
dGUpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRQZXJmb3JtQ2xpZW50
UmVkaXJlY3RGcm9tVVJMOnNvdXJjZVVSTCB0b1VSTDpkZXN0aW5hdGlvblVSTF07CiB9CkBAIC05
OTIsNyArOTkyLDcgQEAgUmVmUHRyPEFQSTo6RGF0YT4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50Ojp3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVAKICAgICByZXR1cm4gQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhkYXRhKTsKIH0KIAotUmVmUHRyPEFQSTo6U3RyaW5n
PiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmIHBhZ2UsIHVuc2lnbmVkIGtleVNpemVJbmRleCwg
Y29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHVybCkKK1JlZlB0cjxBUEk6OlN0cmluZz4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5
JiBwYWdlLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4m
IGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gV2ViS2l0VGVzdFJ1
bm5lciB1c2VzIEMgQVBJLiBIZW5jZSwgbm8gU1BJIGlzIHByb3ZpZGVkIHRvIG92ZXJyaWRlIHRo
ZSBmb2xsb3dpbmcgZnVuY3Rpb24uCiAgICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVhdGUoV2Vi
Q29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hh
bGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwgdXJsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdSZXN1bHRDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1Jlc3VsdENvY29hLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA0ZGZkNWQ0NGQ2ZTQ4MzExZGRjMmYyZmU3NDE2OWY0NDhjNWIzMTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdSZXN1bHRDb2Nv
YS5tbQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJTYWZlQnJvd3NpbmdSZXN1bHQuaCIKKworI2ltcG9ydCAiU2FmZUJyb3dzaW5nU1BJ
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWYgSEFWRShTQUZFX0JST1dTSU5HKQorU2Fm
ZUJyb3dzaW5nUmVzdWx0OjpTYWZlQnJvd3NpbmdSZXN1bHQoVVJMJiYgdXJsLCBTU0JTZXJ2aWNl
TG9va3VwUmVzdWx0ICpyZXN1bHQpCisgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCisgICAgLCBt
X3Byb3ZpZGVyKFtyZXN1bHQgcHJvdmlkZXJdKQorICAgICwgbV9pc1BoaXNoaW5nKFtyZXN1bHQg
aXNQaGlzaGluZ10pCisgICAgLCBtX2lzTWFsd2FyZShbcmVzdWx0IGlzTWFsd2FyZV0pCisgICAg
LCBtX2lzVW53YW50ZWRTb2Z0d2FyZShbcmVzdWx0IGlzVW53YW50ZWRTb2Z0d2FyZV0pCisgICAg
LCBtX2lzS25vd25Ub0JlVW5zYWZlKFtyZXN1bHQgaXNLbm93blRvQmVVbnNhZmVdKQoreworfQor
I2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Nh
ZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQppbmRleCAwMzc1YjgzYjJhN2Y1M2M2MWE5ZmRj
NDY4ZWIxYjZhZDVhZDE3MjUyLi44MjgxZjZjNmRlZTJmODcyNzdmM2FkMWU5YjMwM2UwODczYmJh
NDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3Np
bmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2Fm
ZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC04MSwxNCArODEsMTQgQEAgc3RhdGljIHZvaWQg
YWRkTGlua0FuZFJlcGxhY2UoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBOU1N0
cmluZyAqdG9SZXAKICAgICBbc3RyaW5nIHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpbc3RyaW5n
LnN0cmluZyByYW5nZU9mU3RyaW5nOnRvUmVwbGFjZV0gd2l0aEF0dHJpYnV0ZWRTdHJpbmc6c3Ry
aW5nV2l0aExpbmtdOwogfQogCi1zdGF0aWMgTlNVUkwgKnJlcG9ydEFuRXJyb3JVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKK3N0YXRp
YyBOU1VSTCAqcmVwb3J0QW5FcnJvclVSTChjb25zdCBVUkwmIHVybCwgU1NCU2VydmljZUxvb2t1
cFJlc3VsdCAqcmVzdWx0KQogewotICAgIHJldHVybiBXZWJDb3JlOjpVUkwoeyB9LCBtYWtlU3Ry
aW5nKHJlcG9ydEFuRXJyb3JCYXNlKHJlc3VsdCksICImdXJsPSIsIGVuY29kZVdpdGhVUkxFc2Nh
cGVTZXF1ZW5jZXModXJsKSwgIiZobD0iLCBkZWZhdWx0TGFuZ3VhZ2UoKSkpOworICAgIHJldHVy
biBVUkwoeyB9LCBtYWtlU3RyaW5nKHJlcG9ydEFuRXJyb3JCYXNlKHJlc3VsdCksICImdXJsPSIs
IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXModXJsKSwgIiZobD0iLCBkZWZhdWx0TGFuZ3Vh
Z2UoKSkpOwogfQogCi1zdGF0aWMgTlNVUkwgKm1hbHdhcmVEZXRhaWxzVVJMKGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCitzdGF0aWMgTlNV
UkwgKm1hbHdhcmVEZXRhaWxzVVJMKGNvbnN0IFVSTCYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVz
dWx0ICpyZXN1bHQpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlVSTCh7IH0sIG1ha2VTdHJpbmco
bWFsd2FyZURldGFpbHNCYXNlKHJlc3VsdCksICImc2l0ZT0iLCB1cmwuaG9zdCgpLCAiJmhsPSIs
IGRlZmF1bHRMYW5ndWFnZSgpKSk7CisgICAgcmV0dXJuIFVSTCh7IH0sIG1ha2VTdHJpbmcobWFs
d2FyZURldGFpbHNCYXNlKHJlc3VsdCksICImc2l0ZT0iLCB1cmwuaG9zdCgpLCAiJmhsPSIsIGRl
ZmF1bHRMYW5ndWFnZSgpKSk7CiB9CiAKIHN0YXRpYyBOU1N0cmluZyAqc2FmZUJyb3dzaW5nVGl0
bGVUZXh0KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKQEAgLTExMiw3ICsxMTIsNyBA
QCBzdGF0aWMgTlNTdHJpbmcgKnNhZmVCcm93c2luZ1dhcm5pbmdUZXh0KFNTQlNlcnZpY2VMb29r
dXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gV0VCX1VJX05TU1RSSU5HKEAiVGhpcyB3ZWJz
aXRlIG1heSB0cnkgdG8gdHJpY2sgeW91IGludG8gaW5zdGFsbGluZyBzb2Z0d2FyZSB0aGF0IGhh
cm1zIHlvdXIgYnJvd3NpbmcgZXhwZXJpZW5jZSwgbGlrZSBjaGFuZ2luZyB5b3VyIHNldHRpbmdz
IHdpdGhvdXQgeW91ciBwZXJtaXNzaW9uIG9yIHNob3dpbmcgeW91IHVud2FudGVkIGFkcy4gT25j
ZSBpbnN0YWxsZWQsIGl0IG1heSBiZSBkaWZmaWN1bHQgdG8gcmVtb3ZlLiIsICJVbndhbnRlZCBz
b2Z0d2FyZSB3YXJuaW5nIik7CiB9CiAKLXN0YXRpYyBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
ICpzYWZlQnJvd3NpbmdEZXRhaWxzVGV4dChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgU1NCU2Vy
dmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQorc3RhdGljIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJp
bmcgKnNhZmVCcm93c2luZ0RldGFpbHNUZXh0KGNvbnN0IFVSTCYgdXJsLCBTU0JTZXJ2aWNlTG9v
a3VwUmVzdWx0ICpyZXN1bHQpCiB7CiAgICAgaWYgKHJlc3VsdC5pc1BoaXNoaW5nKSB7CiAgICAg
ICAgIE5TU3RyaW5nICpwaGlzaGluZ0Rlc2NyaXB0aW9uID0gV0VCX1VJX05TU1RSSU5HKEAiV2Fy
bmluZ3MgYXJlIHNob3duIGZvciB3ZWJzaXRlcyB0aGF0IGhhdmUgYmVlbiByZXBvcnRlZCBhcyBk
ZWNlcHRpdmUuIERlY2VwdGl2ZSB3ZWJzaXRlcyB0cnkgdG8gdHJpY2sgeW91IGludG8gYmVsaWV2
aW5nIHRoZXkgYXJlIGxlZ2l0aW1hdGUgd2Vic2l0ZXMgeW91IHRydXN0LiIsICJQaGlzaGluZyB3
YXJuaW5nIGRlc2NyaXB0aW9uIik7CkBAIC0xNDksNyArMTQ5LDcgQEAgc3RhdGljIE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcgKnNhZmVCcm93c2luZ0RldGFpbHNUZXh0KGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXIKICAgICByZXR1cm4gbWFsd2FyZU9yVW53YW50ZWRTb2Z0d2FyZURldGFpbHMoV0VC
X1VJX05TU1RSSU5HKEAiV2FybmluZ3MgYXJlIHNob3duIGZvciB3ZWJzaXRlcyB3aGVyZSBoYXJt
ZnVsIHNvZnR3YXJlIGhhcyBiZWVuIGRldGVjdGVkLiBZb3UgY2FuIGNoZWNrICV0aGUtc3RhdHVz
LW9mLXNpdGUlIG9uIHRoZSAlc2FmZUJyb3dzaW5nUHJvdmlkZXIlIGRpYWdub3N0aWMgcGFnZS4i
LCAiVW53YW50ZWQgc29mdHdhcmUgd2FybmluZyBkZXNjcmlwdGlvbiIpLCBAIiV0aGUtc3RhdHVz
LW9mLXNpdGUlIiwgZmFsc2UpOwogfQogCi1TYWZlQnJvd3NpbmdXYXJuaW5nOjpTYWZlQnJvd3Np
bmdXYXJuaW5nKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0
ICpyZXN1bHQpCitTYWZlQnJvd3NpbmdXYXJuaW5nOjpTYWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0
IFVSTCYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgOiBtX3RpdGxl
KHNhZmVCcm93c2luZ1RpdGxlVGV4dChyZXN1bHQpKQogICAgICwgbV93YXJuaW5nKHNhZmVCcm93
c2luZ1dhcm5pbmdUZXh0KHJlc3VsdCkpCiAgICAgLCBtX2RldGFpbHMoc2FmZUJyb3dzaW5nRGV0
YWlsc1RleHQodXJsLCByZXN1bHQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KaW5kZXggYTdk
YWQ0ODE1MjYxYTk4YzZjMTFkMzQ0OGYzZGIyMTgxMzFhNjJkYS4uOThiZGMyNzk2NGE1NjlhNzc5
OGMxOWM3YjVhYWMyYzc0ZTZkNTlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCkBAIC0x
MDUsNyArMTA1LDcgQEAgU09GVF9MSU5LX0NMQVNTKFF1aWNrTG9vaywgUUxJdGVtKTsKICAgICAg
ICAgW19pdGVtIHNldFByZXZpZXdJdGVtUHJvdmlkZXJQcm9ncmVzczpAKHByb2dyZXNzKV07CiB9
CiAKLS0gKHZvaWQpZmluaXNoOihXZWJDb3JlOjpVUkwpdXJsCistICh2b2lkKWZpbmlzaDooVVJM
KXVybAogewogICAgIGlmIChzZWxmLmNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBzZWxmLmNv
bXBsZXRpb25IYW5kbGVyKChOU1VSTCopdXJsLCBuaWwpOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHZv
aWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnVwZGF0ZVByb2dyZXNzKGZsb2F0IHByb2dyZXNz
KQogICAgICAgICBbbV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBzZXRQcm9ncmVzczpw
cm9ncmVzc107CiB9CiAKLXZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OmZpbmlzaChXZWJD
b3JlOjpVUkwgdXJsKQordm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmluaXNoKFVSTCB1
cmwpCiB7CiAgICAgaWYgKG1fcWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UpCiAgICAgICAg
IFttX3FsUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlIGZpbmlzaDp1cmxdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IGE2MjNjYzUzZjU2MmI1OGY5
YWFkY2UyNzYzNjg2MzY5OGJkMDgyYzguLmMwZGEzZmZkYTEwNjg5ZmUxM2QwYjMzNjgwOGVjODJm
OTJmMWRhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgK
QEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIHRvb2xiYXJzQXJlVmlz
aWJsZShXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICAg
ICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyos
IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBk
aWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdlYlBhZ2VQ
cm94eSYsIFdLUmVzb3VyY2VMaW1pdCkgZmluYWw7Ci0gICAgICAgIHZvaWQgc2F2ZURhdGFUb0Zp
bGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQVBJOjpEYXRhJikgZmluYWw7
CisgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJv
eHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwg
QVBJOjpEYXRhJikgZmluYWw7CiAjZW5kaWYKICAgICAgICAgYm9vbCBuZWVkc0ZvbnRBdHRyaWJ1
dGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdEaWRDaGFuZ2VGb250QXR0cmlidXRlczsgfQogICAgICAgICB2b2lkIGRpZENoYW5n
ZUZvbnRBdHRyaWJ1dGVzKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCA1YzczNDFl
ZjMwZjIyZDYzZGVjY2M5OThmMTA4NjViZDI1ZTZkOTczLi5hNTU5YTljNThmZmZjODg1MDk1YmM3
OGNkNjg4MjBlNDdhZTI4MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KQEAgLTUyLDggKzUyLDggQEAKICNpbXBvcnQgIl9XS0hpdFRlc3RSZXN1bHRJ
bnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlRGV2aWNlLmg+
CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3
UGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxBUEk6OkZyYW1lSW5mbz4KIAogICAgIGF1dG8g
dXNlckluaXRpYXRlZEFjdGl2aXR5ID0gcGFnZS5wcm9jZXNzKCkudXNlckluaXRpYXRlZEFjdGl2
aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICAg
ICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFob3N0c0FyZUVxdWFsKHNvdXJjZUZyYW1lSW5m
by0+cmVxdWVzdCgpLnVybCgpLCByZXF1ZXN0LnVybCgpKTsKLSAgICBhdXRvIGFwaU5hdmlnYXRp
b25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRp
b25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBzdGQ6Om51bGxv
cHQsIFdURk1vdmUocmVxdWVzdCksIFdlYkNvcmU6OlVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3Ms
IFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CisgICAgYXV0byBhcGlOYXZpZ2F0aW9u
QWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0
LCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVz
ZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwogCiAgICAgYXV0byBhcGlXaW5kb3dGZWF0dXJlcyA9IEFQ
STo6V2luZG93RmVhdHVyZXM6OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcyk7CiAKQEAgLTc4OSw3ICs3
ODksNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpzaG93UGFnZShXZWJQYWdlUHJveHkq
KQogICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF9zaG93V2ViVmlldzpt
X3VpRGVsZWdhdGUubV93ZWJWaWV3XTsKIH0KICAgICAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3Qg
V1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIEFQSTo6RGF0YSYgZGF0YSkK
K3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBj
b25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIEFQ
STo6RGF0YSYgZGF0YSkKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3U2F2ZURhdGFUb0ZpbGVTdWdnZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRp
bmdVUkwpCiAgICAgICAgIHJldHVybjsKQEAgLTg2Nyw4ICs4NjcsOCBAQCBzdGF0aWMgdm9pZCBy
ZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXMoY29uc3QgV2ViRnJhbWVQcm94
eSYgZnJhbWUsCiAgICAgfSk7CiAKICAgICBjb25zdCBXZWJGcmFtZVByb3h5KiBtYWluRnJhbWUg
PSBmcmFtZS5wYWdlKCktPm1haW5GcmFtZSgpOwotICAgIFdlYkNvcmU6OlVSTCByZXF1ZXN0RnJh
bWVVUkwoV2ViQ29yZTo6VVJMKCksIGZyYW1lLnVybCgpKTsKLSAgICBXZWJDb3JlOjpVUkwgbWFp
bkZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKKyAgICBVUkwgcmVx
dWVzdEZyYW1lVVJMKFVSTCgpLCBmcmFtZS51cmwoKSk7CisgICAgVVJMIG1haW5GcmFtZVVSTChV
UkwoKSwgbWFpbkZyYW1lLT51cmwoKSk7CiAKICAgICBfV0tDYXB0dXJlRGV2aWNlcyBkZXZpY2Vz
ID0gMDsKICAgICBpZiAocmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpKQpAQCAtOTg0LDgg
Kzk4NCw4IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlz
c2lvbkZvck9yaWdpbihXZWJQYWdlUHJveHkmIHBhZ2UsCiAKICAgICBXS1dlYlZpZXcgKndlYlZp
ZXcgPSBtX3VpRGVsZWdhdGUubV93ZWJWaWV3OwogICAgIGNvbnN0IFdlYkZyYW1lUHJveHkqIG1h
aW5GcmFtZSA9IGZyYW1lLnBhZ2UoKS0+bWFpbkZyYW1lKCk7Ci0gICAgV2ViQ29yZTo6VVJMIHJl
cXVlc3RGcmFtZVVSTChXZWJDb3JlOjpVUkwoKSwgZnJhbWUudXJsKCkpOwotICAgIFdlYkNvcmU6
OlVSTCBtYWluRnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOworICAg
IFVSTCByZXF1ZXN0RnJhbWVVUkwoVVJMKCksIGZyYW1lLnVybCgpKTsKKyAgICBVUkwgbWFpbkZy
YW1lVVJMKFVSTCgpLCBtYWluRnJhbWUtPnVybCgpKTsKIAogICAgIGF1dG8gZGVjaXNpb25IYW5k
bGVyID0gQmxvY2tQdHI8dm9pZChOU1N0cmluZyosIEJPT0wpPjo6ZnJvbUNhbGxhYmxlKFtwcm90
ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KV0oTlNTdHJpbmcqLCBCT09MIGF1dGhvcml6
ZWQpIHsKICAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+c2V0VXNlck1lZGlhQWNjZXNzSW5mbyhh
dXRob3JpemVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
UmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW0KaW5kZXgg
NWY5OWFlYzg1ZGE3NTI0YmEwNDFlNzVlYjA4MDE3Mzk5MDQ5YjIxMi4uYWU1NzY1ZTQ4ZTcxYjg3
ZmY2MGQxNDA1YzNjN2EzMzcyNTE1Y2EyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlB
dHRlbXB0ZXIubW0KQEAgLTY5LDcgKzY5LDcgQEAKICAgICBpZiAoIXdlYkZyYW1lUHJveHkpCiAg
ICAgICAgIHJldHVybiBOTzsKIAotICAgIHdlYkZyYW1lUHJveHktPmxvYWRVUkwoV2ViQ29yZTo6
VVJMKFdlYkNvcmU6OlVSTCgpLCBfdXJsU3RyaW5nKSk7CisgICAgd2ViRnJhbWVQcm94eS0+bG9h
ZFVSTChVUkwoVVJMKCksIF91cmxTdHJpbmcpKTsKICAgICByZXR1cm4gWUVTOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5p
bmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2Fybmlu
Zy5oCmluZGV4IDA3ZTE0OWFmOGM0NjNiNGMyMmY2ZTE0MjcyOWQ5ZGE5MjA3ZGU3YTEuLjU2ZDQw
NTg0N2RhNzViZTUyYWM1MTUyZTM3YjY1ZmRjZjI4N2Y3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5oCkBAIC0zNSwx
MCArMzUsNiBAQAogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KICNlbmRpZgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgU2Fm
ZUJyb3dzaW5nV2FybmluZzsKIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVMb2FkIDogYm9vbDsK
QEAgLTU1LDExICs1MSwxMSBAQCB1c2luZyBSZWN0VHlwZSA9IENHUmVjdDsKICNlbmRpZgogewog
QHBhY2thZ2UKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250
aW51ZVVuc2FmZUxvYWQsIFdlYkNvcmU6OlVSTD4mJik+IF9jb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2FmZUxv
YWQsIFVSTD4mJik+IF9jb21wbGV0aW9uSGFuZGxlcjsKICAgICBSZWZQdHI8Y29uc3QgV2ViS2l0
OjpTYWZlQnJvd3NpbmdXYXJuaW5nPiBfd2FybmluZzsKICAgICBXZWFrT2JqQ1B0cjxXS1NhZmVC
cm93c2luZ1RleHRWaWV3PiBfZGV0YWlsczsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RnJhbWU6KFJlY3RUeXBlKWZyYW1lIHNhZmVCcm93c2luZ1dhcm5pbmc6KGNvbnN0IFdlYktpdDo6
U2FmZUJyb3dzaW5nV2FybmluZyYpd2FybmluZyBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWYXJpYW50PFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkLCBXZWJDb3Jl
OjpVUkw+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RnJhbWU6KFJlY3RUeXBlKWZyYW1lIHNhZmVCcm93c2luZ1dhcm5pbmc6KGNvbnN0IFdlYktpdDo6
U2FmZUJyb3dzaW5nV2FybmluZyYpd2FybmluZyBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWYXJpYW50PFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkLCBVUkw+JiYp
PiYmKWNvbXBsZXRpb25IYW5kbGVyOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW0KaW5kZXggYWZkNDdkMDgw
ZmExMDZmMmViNmU1OGMwZGYxNzAzODMyMDJiZjNmYS4uNjA5NTYzNGZlNWRkNmYyNTkzZWFmYWY1
ZjIxNDliZTRlNjNlZDVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQpAQCAtMjksNyArMjksNyBAQAogI2ltcG9y
dCAiUGFnZUNsaWVudC5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2ltcG9y
dCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3
dGYvTGFuZ3VhZ2UuaD4KIApAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyB2b2lkIHNldEJhY2tn
cm91bmQoVmlld1R5cGUgKnZpZXcsIENvbG9yVHlwZSAqY29sb3IpCiAKIEBpbXBsZW1lbnRhdGlv
biBXS1NhZmVCcm93c2luZ1dhcm5pbmcKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6
KFJlY3RUeXBlKWZyYW1lIHNhZmVCcm93c2luZ1dhcm5pbmc6KGNvbnN0IFdlYktpdDo6U2FmZUJy
b3dzaW5nV2FybmluZyYpd2FybmluZyBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWYXJpYW50PFdlYktpdDo6Q29udGludWVVbnNhZmVMb2FkLCBXZWJDb3JlOjpVUkw+
JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
UmVjdFR5cGUpZnJhbWUgc2FmZUJyb3dzaW5nV2FybmluZzooY29uc3QgV2ViS2l0OjpTYWZlQnJv
d3NpbmdXYXJuaW5nJil3YXJuaW5nIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4mJik+JiYpY29t
cGxldGlvbkhhbmRsZXIKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6
ZnJhbWVdKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkNvbnRpbnVlVW5z
YWZlTG9hZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggNTUyYTEyYmMyNzE0ZjcyMWNmN2E4
Njc1YzFlODMyYzM2MGIwMGI0Yy4uMTcxMGRmMTljNDI2NThmNmY1OWM3YzE4MDc3NzFhZjIyZTIy
M2RjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTMzLDcgKzMzLDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtUGFzdGVi
b2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaAppbmRleCA1MDU4MjE2MjQ2ZGRjZjA5NTQ1YmZjZjcyZmIxYjQ1MjBjMDYyOGUy
Li5kODBlZjc5OGEwMTA0ZDYxMjAzODYyMzY3OWU5N2MxNjY2MTFiZmMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTIyNiw3ICsyMjYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRWaWV3U2NhbGUoQ0dGbG9hdCk7CiAgICAgQ0dGbG9hdCB2aWV3
U2NhbGUoKSBjb25zdDsKIAotICAgIHZvaWQgc2hvd1NhZmVCcm93c2luZ1dhcm5pbmcoY29uc3Qg
U2FmZUJyb3dzaW5nV2FybmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmFyaWFudDxDb250
aW51ZVVuc2FmZUxvYWQsIFdlYkNvcmU6OlVSTD4mJik+JiYpOworICAgIHZvaWQgc2hvd1NhZmVC
cm93c2luZ1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2FybmluZyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmFyaWFudDxDb250aW51ZVVuc2FmZUxvYWQsIFVSTD4mJik+JiYpOwogICAgIHZv
aWQgY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nKCk7CiAKICAgICBXS0xheW91dE1vZGUgbGF5b3V0
TW9kZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQppbmRleCA3OWVlMGFhYTM5MGZkMTY5ZTQxMzIwOThlZjY1YjlkM2M0NDI5Zjg4Li5mODJk
YTRhMTE5ZmQyYmYwNjk2NWMwYTA3Zjc3ZDQ3NmQ4NGVlMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTYxNSw3ICsxNjE1LDcgQEAgYm9v
bCBXZWJWaWV3SW1wbDo6cmVzaWduRmlyc3RSZXNwb25kZXIoKQogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIFdlYlZpZXdJbXBsOjpzaG93U2FmZUJyb3dzaW5nV2FybmluZyhjb25zdCBTYWZl
QnJvd3NpbmdXYXJuaW5nJiB3YXJuaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8
Q29udGludWVVbnNhZmVMb2FkLCBXZWJDb3JlOjpVUkw+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJWaWV3SW1wbDo6c2hvd1NhZmVCcm93c2luZ1dhcm5pbmcoY29uc3QgU2FmZUJy
b3dzaW5nV2FybmluZyYgd2FybmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWYXJpYW50PENv
bnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoIW1fdmlldykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKENvbnRpbnVlVW5z
YWZlTG9hZDo6WWVzKTsKQEAgLTQxMDMsNyArNDEwMyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6Ondy
aXRlVG9VUkxGb3JGaWxlUHJvbWlzZVByb3ZpZGVyKE5TRmlsZVByb21pc2VQcm92aWRlciAqcHJv
dmlkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpVUkwgYmxvYlVSTCB7
IGluZm8uYmxvYlVSTCB9OworICAgIFVSTCBibG9iVVJMIHsgaW5mby5ibG9iVVJMIH07CiAgICAg
aWYgKGJsb2JVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYktp
dFVua25vd25FcnJvcigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IGIyMmU0ZjM0N2Nk
ZWNhNzI4NzU3ZTdkNzE0NGVlYzZjOGMzY2VmM2IuLjc1MTAyZWUzYjAwNDI0YTQ4MDk0MTVmMzZi
MDRlZDNiNTNjYWQxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIERvd25sb2Fk
UHJveHk6OnNldE9yaWdpbmF0aW5nUGFnZShXZWJQYWdlUHJveHkqIHBhZ2UpCiB9CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLXZvaWQgRG93bmxvYWRQcm94eTo6cHVibGlzaFByb2dyZXNzKGNvbnN0
IFdlYkNvcmU6OlVSTCYgVVJMKQordm9pZCBEb3dubG9hZFByb3h5OjpwdWJsaXNoUHJvZ3Jlc3Mo
Y29uc3QgVVJMJiBVUkwpCiB7CiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkuaAppbmRleCBmOWI4MjQzNmNlNTE4MDBhOGQzZDM3ZWY4NDEwZDdjNWRkMjNlYTVhLi5mMjQw
NDk5NTdhMmU4YzI2ZDk3ZjViNThhZjA2NjE5MzU4ZmJmMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTQ1LDcgKzQ1LDYg
QEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgVVJMOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTc1LDggKzc0LDggQEAgcHVibGljOgogICAgIFdlYlBhZ2VQcm94eSog
b3JpZ2luYXRpbmdQYWdlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRPcmlnaW5hdGluZ1BhZ2UoV2Vi
UGFnZVByb3h5Kik7CiAKLSAgICB2b2lkIHNldFJlZGlyZWN0Q2hhaW4oVmVjdG9yPFdlYkNvcmU6
OlVSTD4mJiByZWRpcmVjdENoYWluKSB7IG1fcmVkaXJlY3RDaGFpbiA9IFdURk1vdmUocmVkaXJl
Y3RDaGFpbik7IH0KLSAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgcmVkaXJlY3RDaGFp
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RDaGFpbjsgfQorICAgIHZvaWQgc2V0UmVkaXJl
Y3RDaGFpbihWZWN0b3I8VVJMPiYmIHJlZGlyZWN0Q2hhaW4pIHsgbV9yZWRpcmVjdENoYWluID0g
V1RGTW92ZShyZWRpcmVjdENoYWluKTsgfQorICAgIGNvbnN0IFZlY3RvcjxVUkw+JiByZWRpcmVj
dENoYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdENoYWluOyB9CiAKICAgICB2b2lkIHNl
dFdhc1VzZXJJbml0aWF0ZWQoYm9vbCB2YWx1ZSkgeyBtX3dhc1VzZXJJbml0aWF0ZWQgPSB2YWx1
ZTsgfQogICAgIGJvb2wgd2FzVXNlckluaXRpYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzVXNl
ckluaXRpYXRlZDsgfQpAQCAtOTYsNyArOTUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIHZvaWQgcHVibGlzaFByb2dyZXNzKGNvbnN0IFdlYkNvcmU6OlVS
TCYpOworICAgIHZvaWQgcHVibGlzaFByb2dyZXNzKGNvbnN0IFVSTCYpOwogI2VuZGlmCiAKIHBy
aXZhdGU6CkBAIC0xMzAsNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX2J5dGVz
TG9hZGVkIHsgMCB9OwogCiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1fb3JpZ2luYXRpbmdQ
YWdlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IG1fcmVkaXJlY3RDaGFpbjsKKyAgICBWZWN0
b3I8VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9vbCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0
cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxv
YWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAK
aW5kZXggOWZlM2M3NjU2MWIyNTU3MTZhNDViYmEzOGZlOTk1YTAwNTk3N2ZmYi4uNzJmNGY3MjQ1
NWE3ZWI4YTY1YjllNTI3ZTU1YTFmODIxYWNlMDhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcApAQCAtMzIsNyArMzIsNyBAQCBGcmFtZUxvYWRTdGF0ZTo6
fkZyYW1lTG9hZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZFN0
YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NF
UlQobV9wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwogCkBAIC00MCw3ICs0MCw3IEBAIHZvaWQg
RnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsKQogICAgIG1fcHJvdmlzaW9uYWxVUkwgPSB1cmw7CiB9CiAKLXZvaWQgRnJhbWVMb2Fk
U3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWwpOwogCkBAIC04MSwxMiArODEsMTIgQEAgdm9p
ZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkRmFpbExvYWQoKQogICAgIG1fc3RhdGUgPSBTdGF0ZTo6Rmlu
aXNoZWQ7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFNhbWVEb2N1bWVudE5vdGlmaWNh
dGlvbihjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFNh
bWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX3VybCA9IHVy
bDsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6c2V0VW5yZWFjaGFibGVVUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCkKK3ZvaWQgRnJhbWVMb2FkU3RhdGU6OnNldFVucmVh
Y2hhYmxlVVJMKGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwpCiB7CiAgICAgbV9sYXN0VW5yZWFj
aGFibGVVUkwgPSBtX3VucmVhY2hhYmxlVVJMOwogICAgIG1fdW5yZWFjaGFibGVVUkwgPSB1bnJl
YWNoYWJsZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9h
ZFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5oCmluZGV4
IGE4OWFkMDAwY2MxMDQ4Mzc2N2ZlOWY1M2NiYWZmYzQwNGRhMjlkYzAuLmVkMzI5MjA5MjQ2M2I0
NWI5YTllYjMxM2M3NjY4MTgzZjAxYWY1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJh
bWVMb2FkU3RhdGUuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtMzksMzAgKzM5LDMwIEBAIHB1YmxpYzoKICAgICAgICAgRmluaXNoZWQKICAg
ICB9OwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpV
UkwmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFVSTCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgp
OwogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7
CiAgICAgdm9pZCBkaWRGYWlsTG9hZCgpOwogCi0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROb3Rp
ZmljYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnRO
b3RpZmljYXRpb24oY29uc3QgVVJMJik7CiAKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGU7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9Ci0gICAgdm9pZCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIHsg
bV91cmwgPSB1cmw7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpVUkwmIHByb3Zpc2lvbmFsVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbFVSTDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkg
Y29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICB2b2lkIHNldFVSTChjb25zdCBVUkwmIHVybCkg
eyBtX3VybCA9IHVybDsgfQorICAgIGNvbnN0IFVSTCYgcHJvdmlzaW9uYWxVUkwoKSBjb25zdCB7
IHJldHVybiBtX3Byb3Zpc2lvbmFsVVJMOyB9CiAKLSAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJM
KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFi
bGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3VucmVhY2hhYmxlVVJMOyB9CisgICAgdm9pZCBzZXRV
bnJlYWNoYWJsZVVSTChjb25zdCBVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
KCkgY29uc3QgeyByZXR1cm4gbV91bnJlYWNoYWJsZVVSTDsgfQogCiBwcml2YXRlOgogICAgIFN0
YXRlIG1fc3RhdGUgeyBTdGF0ZTo6RmluaXNoZWQgfTsKLSAgICBXZWJDb3JlOjpVUkwgbV91cmw7
Ci0gICAgV2ViQ29yZTo6VVJMIG1fcHJvdmlzaW9uYWxVUkw7Ci0gICAgV2ViQ29yZTo6VVJMIG1f
dW5yZWFjaGFibGVVUkw7Ci0gICAgV2ViQ29yZTo6VVJMIG1fbGFzdFVucmVhY2hhYmxlVVJMOwor
ICAgIFVSTCBtX3VybDsKKyAgICBVUkwgbV9wcm92aXNpb25hbFVSTDsKKyAgICBVUkwgbV91bnJl
YWNoYWJsZVVSTDsKKyAgICBVUkwgbV9sYXN0VW5yZWFjaGFibGVVUkw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGM4ZWViZjZiOGU3NDc0ZTA0Yjk0Mzlj
NjU5YmNkNThkY2U3YWFhZWMuLmZkOTg2YzIzNWZlZjkwMzJlZGUwNzBlZmM2ZWUwZDc3MTA4YTll
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2VuZFByb2Nlc3NEaWRSZXN1bWUoKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc0RpZFJlc3VtZSgpLCAwKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndyaXRlQmxvYlRvRmls
ZVBhdGgoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRN
ZXNzYWdlKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApp
bmRleCAwOTY5ZGM5YzFiNWExYjc1M2MwOGMwNzUzZmI1YzI3NDU2ZjA1YzhiLi43ZTQ5MjM4N2U4
NWUwMjQzOTNiYTE2ZTk0MjVkYjM5ZTY2Yzg3YWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNDksNyArNDks
NiBAQCBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVt
IGNsYXNzIFNob3VsZFNhbXBsZSA6IGJvb2w7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNz
IFVSTDsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKQEAgLTg4LDcgKzg3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgog
Ci0gICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9p
ZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIHByb2Nlc3NSZWFkeVRv
U3VzcGVuZCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGVl
ODUyYjI0OTk3N2I4ZmQ3MDcwMmQ4ODc4NTQxMjczMDhmMTk0ZTUuLmRmNmVjMDA1YzQ2OGI0MjVi
OWJlNTVmNjgyZjAyZWRlNWFhYzYxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKQEAgLTMzLDExICszMywxMSBAQAogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0VkaXRvckNsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9WYWxpZGF0aW9uQnViYmxlLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC0yMTYsNyAr
MjE2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRTaXpl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1Nh
ZmVCcm93c2luZ1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2FybmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmFyaWFudDxDb250aW51ZVVuc2FmZUxvYWQsIFdlYkNvcmU6OlVSTD4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoQ29udGludWVVbnNhZmVM
b2FkOjpZZXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNv
bnN0IFNhZmVCcm93c2luZ1dhcm5pbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8
Q29udGludWVVbnNhZmVMb2FkLCBVUkw+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKENvbnRpbnVlVW5zYWZlTG9hZDo6WWVzKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhclNhZmVCcm93c2luZ1dhcm5pbmcoKSB7IH0KICAgICAKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAppbmRleCAx
NzU5ZjhhNDkzNjdkMDUyZTVmY2FlNTE3M2RhMjY3MjUzOTdmNjYwLi4yZWQxMDc1YzYwMGViZGRl
YTVlNGZmNTRmYWE5MWRkZDVmNWJlMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
TG9hZFN0YXRlLmNwcApAQCAtMjA2LDkgKzIwNiw5IEBAIGJvb2wgUGFnZUxvYWRTdGF0ZTo6aGFz
T25seVNlY3VyZUNvbnRlbnQoY29uc3QgRGF0YSYgZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKGRhdGEuc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKQotICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhkYXRhLnByb3Zpc2lvbmFsVVJMLCAiaHR0cHMiKTsK
KyAgICAgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJcyhkYXRhLnByb3Zpc2lvbmFsVVJMLCAiaHR0
cHMiKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzKGRhdGEudXJsLCAiaHR0cHMi
KTsKKyAgICByZXR1cm4gV1RGOjpwcm90b2NvbElzKGRhdGEudXJsLCAiaHR0cHMiKTsKIH0KIAog
Ym9vbCBQYWdlTG9hZFN0YXRlOjpoYXNPbmx5U2VjdXJlQ29udGVudCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKaW5k
ZXggMjMxMDc1YWMzNTk5YmFkMWQxOWFkNGQ3YzQyZmM3MmZmOThjZGEwMy4uNTEzMmI4M2JmYWFh
YTEzZjQ3NmE2NjM2NTFjZDM2MjAwNjY0YWVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMzEsMTAgKzMxLDEwIEBA
CiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5
cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYv
TGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3Jl
LmgKaW5kZXggNmU5ZWVmYzhmNWY0MzhhZTg5YTJmMjVhYzg4MmI1NTA3ZmVlMWIzNC4uNTU1OTdm
MzQ0YmY1MTM5YjlmNTY3M2MzMGY4OGM3MjgxNTdhZjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oCkBAIC0zMSwxMCArMzEsNiBA
QAogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLWNsYXNzIFVSTDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBsdWdpbklu
Zm9TdG9yZTsKQEAgLTUzLDcgKzQ5LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhlIGlu
Zm8gZm9yIGEgcGx1Zy1pbiB0aGF0IGNhbiBoYW5kbGUgdGhlIGdpdmVuIE1JTUUgdHlwZS4KICAg
ICAvLyBJZiB0aGUgTUlNRSB0eXBlIGlzIG51bGwsIHRoZSBmaWxlIGV4dGVuc2lvbiBvZiB0aGUg
Z2l2ZW4gdXJsIHdpbGwgYmUgdXNlZCB0byBpbmZlciB0aGUKICAgICAvLyBwbHVnLWluIHR5cGUu
IEluIHRoYXQgY2FzZSwgbWltZVR5cGUgd2lsbCBiZSBmaWxsZWQgaW4gd2l0aCB0aGUgcmlnaHQg
TUlNRSB0eXBlLgotICAgIFBsdWdpbk1vZHVsZUluZm8gZmluZFBsdWdpbihTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpQbHVnaW5EYXRhOjpBbGxvd2VkUGx1
Z2luVHlwZXMgPSBXZWJDb3JlOjpQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKTsKKyAgICBQbHVnaW5N
b2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiwgV2ViQ29y
ZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzID0gV2ViQ29yZTo6UGx1Z2luRGF0YTo6
QWxsUGx1Z2lucyk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZvciB0aGUgcGx1Zy1pbiB3
aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmllci4KICAgICBQbHVnaW5Nb2R1bGVJbmZvIGZp
bmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZp
ZXIpOwpAQCAtNjMsNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGx1Z2luTW9kdWxl
TG9hZFBvbGljeSBkZWZhdWx0TG9hZFBvbGljeUZvclBsdWdpbihjb25zdCBQbHVnaW5Nb2R1bGVJ
bmZvJik7CiAKLSAgICBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcGx1Z2luVVJMLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJM
U3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIHBhZ2VVUkwpOworICAgIGJvb2wgaXNTdXBwb3J0
ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiBwbHVnaW5VUkwsIGNv
bnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFVSTCYgcGFnZVVSTCk7CiAgICAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IHN1
cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKCk7CiAgICAgdm9pZCBhZGRTdXBwb3J0ZWRQbHVnaW4o
U3RyaW5nJiYgbWF0Y2hpbmdEb21haW4sIFN0cmluZyYmIGlkZW50aWZpZXIsIEhhc2hTZXQ8U3Ry
aW5nPiYmIG1pbWVUeXBlcywgSGFzaFNldDxTdHJpbmc+IGV4dGVuc2lvbnMpOwogICAgIHZvaWQg
Y2xlYXJTdXBwb3J0ZWRQbHVnaW5zKCkgeyBtX3N1cHBvcnRlZFBsdWdpbnMgPSBzdGQ6Om51bGxv
cHQ7IH0KQEAgLTEwNCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgICAgICBIYXNoU2V0PFN0cmlu
Zz4gbWltZVR5cGVzOwogICAgICAgICBIYXNoU2V0PFN0cmluZz4gZXh0ZW5zaW9uczsKICAgICB9
OwotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0IFN1cHBvcnRlZFBsdWdp
biYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcGx1Z2luVVJM
KTsKKyAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFBsdWdpbihjb25zdCBTdXBwb3J0ZWRQbHVn
aW4mLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHBsdWdpblVSTCk7CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdXBwb3J0ZWRQbHVnaW4+PiBtX3N1cHBvcnRlZFBsdWdp
bnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMv
UGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCmluZGV4IDg3YjViOGM2NzhlNTlmOWJlODA1
OWZhZTA0ZWJiMmIwYWMxNmM1YTUuLjg5ZmFiNWVjYjY2NmQyYjQ0ZmNjMjIzOWViZTViYTVlZTFh
YzYzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1Bs
dWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KQEAgLTM0LDEyICszNCwxMiBAQAogI2lt
cG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQVJlbW90ZUxh
eWVyU2VydmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxjcnRfZXh0ZXJucy5oPgogI2ltcG9ydCA8bWFjaC1vL2R5
bGQuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxzcGF3
bi5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogQGludGVyZmFjZSBXS1BsYWNlaG9s
ZGVyTW9kYWxXaW5kb3cgOiBOU1dpbmRvdyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NhZmVCcm93c2luZ1Jlc3VsdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Fm
ZUJyb3dzaW5nUmVzdWx0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQyMjA0N2FiMjA4MGI2OWJjYmI4ZDMzODM4
YTcyZDhjYWU5OTZhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NhZmVCcm93c2luZ1Jlc3VsdC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitPQkpDX0NMQVNTIFNTQlNl
cnZpY2VMb29rdXBSZXN1bHQ7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTYWZlQnJv
d3NpbmdSZXN1bHQgOiBwdWJsaWMgUmVmQ291bnRlZDxTYWZlQnJvd3NpbmdSZXN1bHQ+IHsKK3B1
YmxpYzoKKyNpZiBIQVZFKFNBRkVfQlJPV1NJTkcpCisgICAgc3RhdGljIFJlZjxTYWZlQnJvd3Np
bmdSZXN1bHQ+IGNyZWF0ZShVUkwmJiB1cmwsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3Vs
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNhZmVCcm93c2luZ1Jlc3Vs
dChXVEZNb3ZlKHVybCksIHJlc3VsdCkpOworICAgIH0KKyNlbmRpZgorICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBTdHJpbmcmIHByb3ZpZGVy
KCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRlcjsgfQorICAgIGJvb2wgaXNQaGlzaGluZygpIGNv
bnN0IHsgcmV0dXJuIG1faXNQaGlzaGluZzsgfQorICAgIGJvb2wgaXNNYWx3YXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9pc01hbHdhcmU7IH0KKyAgICBib29sIGlzVW53YW50ZWRTb2Z0d2FyZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNVbndhbnRlZFNvZnR3YXJlOyB9CisgICAgYm9vbCBpc0tub3duVG9C
ZVVuc2FmZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNLbm93blRvQmVVbnNhZmU7IH0KKworcHJpdmF0
ZToKKyNpZiBIQVZFKFNBRkVfQlJPV1NJTkcpCisgICAgU2FmZUJyb3dzaW5nUmVzdWx0KFVSTCYm
LCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICopOworI2VuZGlmCisgICAgVVJMIG1fdXJsOworICAg
IFN0cmluZyBtX3Byb3ZpZGVyOworICAgIGJvb2wgbV9pc1BoaXNoaW5nIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faXNNYWx3YXJlIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNVbndhbnRlZFNvZnR3
YXJlIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNLbm93blRvQmVVbnNhZmUgeyBmYWxzZSB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TYWZlQnJvd3NpbmdXYXJuaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
YWZlQnJvd3NpbmdXYXJuaW5nLmgKaW5kZXggNjE2ZjQ3OGNhN2U5NDJmNzdmYzQ0ZjdmMTFlYzQw
NTFlZmY3OWZlMC4uOGRjYjEyNWQ1ZTcyY2I2YzA1MGMzOTJjZTE0ZjI1NTUzZjE1MjgwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2FmZUJyb3dzaW5nV2FybmluZy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NhZmVCcm93c2luZ1dhcm5pbmcuaApAQCAtMjUs
NyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
MzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFNhZmVCcm93c2luZ1dhcm5p
bmcgOiBwdWJsaWMgUmVmQ291bnRlZDxTYWZlQnJvd3NpbmdXYXJuaW5nPiB7CiBwdWJsaWM6CiAj
aWYgSEFWRShTQUZFX0JST1dTSU5HKQotICAgIHN0YXRpYyBSZWY8U2FmZUJyb3dzaW5nV2Fybmlu
Zz4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBTU0JTZXJ2aWNlTG9va3VwUmVzdWx0
ICpyZXN1bHQpCisgICAgc3RhdGljIFJlZjxTYWZlQnJvd3NpbmdXYXJuaW5nPiBjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNhZmVCcm93c2luZ1dhcm5pbmcodXJsLCByZXN1bHQp
KTsKICAgICB9CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAjaWYg
SEFWRShTQUZFX0JST1dTSU5HKQotICAgIFNhZmVCcm93c2luZ1dhcm5pbmcoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqKTsKKyAgICBTYWZlQnJvd3NpbmdXYXJu
aW5nKGNvbnN0IFVSTCYsIFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKik7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBTYWZlQnJvd3NpbmdXYXJuaW5nKFN0cmluZyYmLCBTdHJpbmcm
JiwgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCBlYmFkZTg4ZWExYjUyZTYzZWRl
NGU3Njg1Y2EwOGZmMjgzNDlmNGRhLi4xNDk3MzYxMzkzZDUzMjg1M2RkMWRmODY2NmM4YWI1YmE3
MGU5ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94
eS5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVz
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lz
dGVtUHJldmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVBy
ZXZpZXdDb250cm9sbGVyLmgKaW5kZXggOTQ5YzhkZjcyMWVkOWVkMzVhN2RhNjhlYzdjZjkxMjc5
ZWY5MGEzMS4uMjY5ZDBjMzJmYjMyMDg0YjU3ZTdkMTZiMGNjZjI1Y2VmNzRmOWMyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCkBA
IC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKIE9CSkNfQ0xBU1MgUUxQcmV2aWV3Q29udHJvbGxlcjsKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCB1cGRhdGVQcm9ncmVzcyhmbG9hdCk7
Ci0gICAgdm9pZCBmaW5pc2goV2ViQ29yZTo6VVJMKTsKKyAgICB2b2lkIGZpbmlzaChVUkwpOwog
ICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgdm9pZCBmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuaAppbmRleCBlMzMxNjdhODk1MGMxNjhmMDFjMDMyY2ViOWU1ZjhmOTgxZTUxMzgwLi45
ZjI0MGQzMDIxZWRmODZjN2NhZWQ3ZTgxNDU5NTFkZWQzMjYwZTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApAQCAtNzEsMTAgKzcxLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6
U2Vzc2lvbklELCBXYWxsVGltZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwogCiAgICAgdm9pZCBzZXRDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OkNvb2tpZSYsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2
b2lkIHNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBtYWluRG9jdW1l
bnRVUkwsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lk
IHNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQo
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCiAgICAgdm9pZCBnZXRBbGxDb29raWVzKFBBTDo6
U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIGdl
dENvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIEZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ2V0Q29va2llcyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiwgRnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHZv
aWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAg
IHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgRnVuY3Rpb248
dm9pZCAoSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCmluZGV4IDYyNGQ4MDZmMWRhM2E1
MjZhMGZkYjUwMDJkMDliNDZjMzcwMWM3NzMuLjY2MjM4ZDExYmM3OTFmZWRkOGVlY2ZlYjdlYzQ1
YzdjYjIzNjgzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAg
LTgwLDE0ICs4MCwxNCBAQCBwdWJsaWM6CiAKICAgICBGcmFtZUxvYWRTdGF0ZSYgZnJhbWVMb2Fk
U3RhdGUoKSB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlOyB9CiAKLSAgICB2b2lkIGxvYWRVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBsb2FkVVJMKGNvbnN0IFVSTCYpOwogICAg
IHZvaWQgc3RvcExvYWRpbmcoKSBjb25zdDsKIAotICAgIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJs
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51cmwoKTsgfQotICAgIGNvbnN0IFdl
YkNvcmU6OlVSTCYgcHJvdmlzaW9uYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0
YXRlLnByb3Zpc2lvbmFsVVJMKCk7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7IH0KKyAgICBjb25zdCBVUkwmIHByb3Zpc2lvbmFs
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9
CiAKLSAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAg
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lTG9hZFN0YXRlLnVucmVhY2hhYmxlVVJMKCk7IH0KKyAgICB2b2lkIHNldFVucmVhY2hhYmxl
VVJMKGNvbnN0IFVSTCYpOworICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVucmVhY2hhYmxlVVJMKCk7IH0KIAogICAgIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX01JTUVUeXBlOyB9CiAgICAgYm9v
bCBjb250YWluc1BsdWdpbkRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc1BsdWdp
bkRvY3VtZW50OyB9CkBAIC0xMDgsMTMgKzEwOCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRN
YWluUmVzb3VyY2VEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlRGF0YShBUEk6OlVSTCosIEZ1bmN0aW9u
PHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAotICAgIHZvaWQg
ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6
VVJMJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBV
UkwmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKICAgICB2b2lkIGRpZENv
bW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgV2ViQ2VydGlmaWNhdGVJbmZvJiwg
Ym9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50KTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoKTsK
ICAgICB2b2lkIGRpZEZhaWxMb2FkKCk7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOyAvLyBlZy4gYW5jaG9yIG5hdmlnYXRpb24sIHNlc3Np
b24gc3RhdGUgY2hhbmdlLgorICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25z
dCBVUkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRlIGNoYW5nZS4K
ICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5JiBzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+
JiYpPiYmLCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKaW5kZXggNzMzNGI0ZWVlYWRhMTBmNDBiNDVj
MmEzZDZhODVlZTQyNjcyNjM2NS4uM2ZmN2ZkNDVlNTliMmFlYTRmZWYzODRhOGEyMjY2ZDNmMjQz
ZWM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCkBA
IC01Myw3ICs1Myw2IEBAIE9CSkNfQ0xBU1MgV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlcjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwotY2xhc3MgVVJMOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE1Nyw3ICsxNTYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFN0cmluZyBpbnNwZWN0b3JQYWdlVVJMKCk7CiAgICAgc3RhdGljIFN0cmluZyBpbnNw
ZWN0b3JUZXN0UGFnZVVSTCgpOwogICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yQmFzZVVSTCgp
OwotICAgIHN0YXRpYyBib29sIGlzTWFpbk9yVGVzdEluc3BlY3RvclBhZ2UoY29uc3QgV2ViQ29y
ZTo6VVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShjb25z
dCBVUkwmKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtV2luZG93V2lkdGg7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1XaW5kb3dIZWlnaHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwCmluZGV4IDlkMmI5YWQ0ZDVkYTk4ZDIwZjdmOTdhZmNkNDgwNTQ2NTNlM2Jh
YTcuLjg1NzQ2NTE1ZGE2N2QxNDJhZjdkZmFkODhkZThhNDhhODNmNjFjMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNp
bmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggNWZmYjJiZmY2ZTY1YTJiYzAwMGMwMTg5YmFlZTBiM2IxOGNlMzlm
Ni4uOTU3YjNhNDhmMTY2YmZjZjJiMzM4MmVmNjAxMzk2YjkxOGZjM2EzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTgsMTMgKzE1OCwxMyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGlj
YXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkxQ
YXJzZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgor
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0u
aD4KIApAQCAtMTE0Miw3ICsxMTQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0
aE5hdmlnYXRpb24oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEMKIAogICAg
IGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAotICAg
IG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJh
c2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IGJsYW5rVVJMKCkuc3RyaW5nKCkpOworICAgIG1f
cGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgIWJhc2VV
UkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IFdURjo6YmxhbmtVUkwoKS5zdHJpbmcoKSk7CiAKICAg
ICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKQEAgLTEx
NjEsNyArMTE2MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9u
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDCiAgICAgbV9wcm9jZXNzLT5y
ZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omxv
YWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQordm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
aHRtbERhdGEsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29u
c3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIC8v
IFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxp
bmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNl
Y29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2Ug
bG9hZCBzdGF0ZSBmcm9tIGJlaW5nCkBAIC0xMjA5LDcgKzEyMDksNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6
T2JqZWN0KiB1cwogICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogCiAgICAgYXV0byB0
cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotICAgIG1fcGFnZUxv
YWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwoKS5z
dHJpbmcoKSk7CisgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRy
YW5zYWN0aW9uLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwogCiAgICAgTG9hZFBhcmFtZXRl
cnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0gMDsK
QEAgLTEyMjgsNyArMTIyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgSW50UG9pCiAgICAgaWYgKG1f
aXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChXZWJDb3JlOjpwcm90b2NvbElz
SmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaXNWYWxpZCgpKQpAQCAtMjY2Myw3ICsyNjYz
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhB
UEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFIKIAogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+
IHByZXZpb3VzUHJvY2VzcyA9IG1fcHJvY2Vzcy5jb3B5UmVmKCk7CiAgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8g
c3RkOjptYWtlX29wdGlvbmFsKG1fbWFpbkZyYW1lLT5mcmFtZUlEKCkpIDogc3RkOjpudWxsb3B0
OwotICAgIGF1dG8gbWFpbkZyYW1lVVJMID0gbV9tYWluRnJhbWUgPyBtX21haW5GcmFtZS0+dXJs
KCkgOiBXZWJDb3JlOjpVUkwoKTsKKyAgICBhdXRvIG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1l
ID8gbV9tYWluRnJhbWUtPnVybCgpIDogVVJMKCk7CiAKICAgICBBU1NFUlQobV9wcm9jZXNzLnB0
cigpICE9IHByb2Nlc3MucHRyKCkpOwogCkBAIC0zNjYwLDcgKzM2NjAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRGVzdHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKQogICAg
IG1fbmF2aWdhdGlvblN0YXRlLT5kaWREZXN0cm95TmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmIHVy
bCwgV2ViQ29yZTo6VVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYgdXJsLCBVUkwmJiB1
bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGll
bnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTM3NTgsNyArMzc1OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3QoKnRoaXMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJv
dmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgV2ViQ29yZTo6
VVJMJiYgdXJsKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIFVSTCYmIHVybCkKIHsKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MDMzLDcgKzQw
MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgb3BhcXVlU2FtZURvY3VtZW50TmF2aWdh
dGlvblR5cGUsIFdlYkNvcmU6OlVSTCYmIHVybCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVE
b2N1bWVudE5hdmlnYXRpb25UeXBlLCBVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwog
CkBAIC00NDQxLDcgKzQ0NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFN1Ym1pdEZvcm0o
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgY29ucwogICAgIH0pOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uKFdlYkNv
cmU6OlVSTCYmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBpZGVudGlmaWVycywgVmVjdG9yPFN0cmlu
Zz4mJiBub3RpZmljYXRpb25zKQordm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRSdWxlTGlzdE5v
dGlmaWNhdGlvbihVUkwmJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgaWRlbnRpZmllcnMsIFZlY3Rv
cjxTdHJpbmc+JiYgbm90aWZpY2F0aW9ucykKIHsKICAgICBtX25hdmlnYXRpb25DbGllbnQtPmNv
bnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbigqdGhpcywgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKGlk
ZW50aWZpZXJzKSwgV1RGTW92ZShub3RpZmljYXRpb25zKSk7CiB9CkBAIC02MTU3LDcgKzYxNTcs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24gcmVhc29uKQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
bV9wcm9jZXNzLT5pc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkgewotICAgICAgICBTdHJpbmcgZG9t
YWluID0gV2ViQ29yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihXZWJDb3JlOjpVUkwo
eyB9LCBjdXJyZW50VVJMKCkpLmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIGRv
bWFpbiA9IFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oVVJMKHsgfSwgY3Vy
cmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aEVuaGFuY2VkUHJpdmFj
eShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmRvbWFpbkNhdXNpbmdKZXRzYW1LZXko
KSwgZG9tYWluLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB9CkBAIC03MjQwLDcg
KzcyNDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgd3JhcHBlZEtleSwgYm9vbCYgc3VjYwogfQogI2VuZGlmCiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5
U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQordm9pZCBXZWJQYWdlUHJveHk6OnNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmlu
ZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7CiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNzkw
MSw5ICs3OTAxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkK
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdl
YlVSTFNjaGVtZUhhbmRsZXI+JiYgaGFuZGxlciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0g
ICAgYXV0byBjYW5vbmljYWxpemVkU2NoZW1lID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6
ZVNjaGVtZShzY2hlbWUpOworICAgIGF1dG8gY2Fub25pY2FsaXplZFNjaGVtZSA9IFdURjo6VVJM
UGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUpOwogICAgIEFTU0VSVChjYW5v
bmljYWxpemVkU2NoZW1lKTsKLSAgICBBU1NFUlQoIVVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1l
KGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOworICAgIEFTU0VSVCghV1RGOjpVUkxQYXJz
ZXI6OmlzU3BlY2lhbFNjaGVtZShjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKIAogICAg
IGF1dG8gc2NoZW1lUmVzdWx0ID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lLmFkZChjYW5v
bmljYWxpemVkU2NoZW1lLnZhbHVlKCksIGhhbmRsZXIuZ2V0KCkpOwogICAgIEFTU0VSVF9VTlVT
RUQoc2NoZW1lUmVzdWx0LCBzY2hlbWVSZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGI3MmIwMDYwMjg5OGM5NzdhY2E1ZjdlMjYwMTli
M2E4MTIzZjQwMDguLjQwZTJkNTBhNzY3NjVhMGFjNzhkZjIyZWM2YzIwZDYxMWM3MDJhMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04Myw3ICs4Myw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Rl
eHRDaGVja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5Lmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CkBAIC05NSw2ICs5NCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDc5LDcgKzQ3OSw3
IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93
RXh0ZXJuYWxTY2hlbWVzLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkwsIGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VEaXJlY3RvcnlVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9
IG51bGxwdHIpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWREYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0g
bnVsbHB0cik7Ci0gICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VV
UkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSA9IG51bGxwdHIpOworICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJM
LCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxs
cHRyKTsKICAgICB2b2lkIGxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEqLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICB2b2lkIG5hdmlnYXRlVG9QREZMaW5rV2l0aFNp
bXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVu
dFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCk7CiAKQEAgLTEwOTIsOCArMTA5
Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNv
bnN0IFN0cmluZyYgcmVzdWx0KTsKICNlbmRpZgogCi0gICAgdm9pZCBzYXZlRGF0YVRvRmlsZUlu
RG93bmxvYWRzRm9sZGVyKFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBTdHJpbmcmJiBtaW1l
VHlwZSwgV2ViQ29yZTo6VVJMJiYgb3JpZ2luYXRpbmdVUkwsIEFQSTo6RGF0YSYpOwotICAgIHZv
aWQgc2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBXZWJDb3JlOjpVUkwmJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJik7CisgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0cmluZyYm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBTdHJpbmcmJiBtaW1lVHlwZSwgVVJMJiYgb3JpZ2luYXRpbmdV
UkwsIEFQSTo6RGF0YSYpOworICAgIHZvaWQgc2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVy
KFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBVUkwmJiBvcmlnaW5hdGluZ1VSTCwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzYXZl
UERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uUmF3KGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxT
dHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3QgU3Ry
aW5nJiBwZGZVVUlEKTsKICAgICB2b2lkIHNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5X
aXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKQEAgLTEyMDYsNyArMTIwNiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBib29sJiBz
dWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0
cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3Vs
dCk7CisgICAgdm9pZCBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQg
a2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiwg
U3RyaW5nJiByZXN1bHQpOwogCiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVj
dCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMsIFdURjo6RnVu
Y3Rpb248dm9pZCAoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CiAKQEAgLTEzODAsNyArMTM4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdl
dEFwcGxpY2F0aW9uTWFuaWZlc3QoRnVuY3Rpb248dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwog
I2VuZGlmCiAKLSAgICB2b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJM
JiBibG9iVVJMLCBjb25zdCBTdHJpbmcmIHBhdGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCBzdWNjZXNz
KT4mJik7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgYmxvYlVSTCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYpOwogCiAg
ICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBwcmVmZXJlbmNlc1N0b3JlKCkgY29uc3Q7CiAKQEAgLTE0
NTAsMTcgKzE0NTAsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZVN1YmZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQgZGlkQ3JlYXRlV2luZG93KHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6Okdsb2JhbFdpbmRvd0lkZW50aWZpZXImJik7CiAKLSAgICB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJiwgV2ViQ29yZTo6VVJMJiYgdW5yZWFjaGFibGVVUkws
IGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVSTCYm
IHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
VXNlckRhdGEmKTsKICAgICB2b2lkIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5LCBXZWJDb3Jl
OjpMb2NrQmFja0ZvcndhcmRMaXN0KTsKICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCk7Ci0gICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25h
bFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2Vi
Q29yZTo6VVJMJiYpOworICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lk
IGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRDb21taXRM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1
aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBi
b29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5z
ZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7
CiAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWlu
dDMyX3Qgc2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFdlYkNvcmU6OlVSTCYmLCBjb25zdCBV
c2VyRGF0YSYpOworICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgc2FtZURvY3Vt
ZW50TmF2aWdhdGlvblR5cGUsIFVSTCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlk
Q2hhbmdlTWFpbkRvY3VtZW50KHVpbnQ2NF90IGZyYW1lSUQpOwogCiAgICAgdm9pZCBkaWRSZWNl
aXZlVGl0bGVGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmLCBjb25zdCBV
c2VyRGF0YSYpOwpAQCAtMTQ4NiwxMSArMTQ4NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2Vy
RGF0YSYpOwotICAgIHZvaWQgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBXZWJDb3JlOjpV
UkwmLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmKTsKKyAgICB2b2lkIGJlZ2luU2FmZUJy
b3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CiAK
ICAgICB2b2lkIHdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJj
ZUZyYW1lSUQsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdGV4dEZp
ZWxkVmFsdWVzLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgICAg
ICAKLSAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihXZWJDb3JlOjpVUkwmJiwg
VmVjdG9yPFN0cmluZz4mJiBpZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4mJiBub3RpZmljYXRp
b25zKTsKKyAgICB2b2lkIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbihVUkwmJiwgVmVjdG9y
PFN0cmluZz4mJiBpZGVudGlmaWVycywgVmVjdG9yPFN0cmluZz4mJiBub3RpZmljYXRpb25zKTsK
IAogICAgIC8vIEhpc3RvcnkgY2xpZW50CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0
aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgdWludDY0X3QgZnJhbWVJRCk7
CkBAIC0xNTExLDggKzE1MTEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5hdmFpbGFibGVQbHVn
aW5CdXR0b25DbGlja2VkKHVpbnQzMl90IG9wYXF1ZVBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29u
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZywg
Y29uc3QgU3RyaW5nJiBwbHVnaW5zUGFnZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVS
TFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKTsKICNlbmRpZiAvLyBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCB3ZWJHTFBv
bGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQ
b2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmKTsKLSAgICB2b2lkIHJlc29sdmVXZWJHTFBvbGlj
eUZvclVSTChXZWJDb3JlOjpVUkwmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdl
YkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCB3ZWJHTFBvbGljeUZv
clVSTChVUkwmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRl
bGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwmJiwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVk
UmVwbHkmJik7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgc2V0VG9vbGJhcnNB
cmVWaXNpYmxlKGJvb2wgdG9vbGJhcnNBcmVWaXNpYmxlKTsKICAgICB2b2lkIGdldFRvb2xiYXJz
QXJlVmlzaWJsZShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6
OkRlbGF5ZWRSZXBseSYmKTsKQEAgLTE3MjUsNyArMTcyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUodWludDY0X3QgcGx1Z2luQ29tcGxleFRl
eHRJbnB1dElkZW50aWZpZXIsIHVpbnQ2NF90IGNvbXBsZXhUZXh0SW5wdXRTdGF0ZSk7CiAjZW5k
aWYKIAotICAgIGJvb2wgbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICBib29sIG1h
eWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgVVJMJiwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJik7CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQp
CiAgICAgdm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDU2MWY2ZDBmMGM4NTQ2
MzMzZjI1NzA3NDFjMGMyYTQ5MDUxNWQ1N2QuLmI4NWVkNDY2MjYwY2U3MzdkZGE0NjY4MTQzZTk5
YzZiMTM3ZGE4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5
IHsKICAgICBVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodWludDMyX3QgcGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb24sIFN0cmluZyBtaW1lVHlwZSwgU3RyaW5nIHBsdWdpblVSTFN0cmlu
ZywgU3RyaW5nIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5nLCBTdHJpbmcgZnJhbWVVUkxT
dHJpbmcsIFN0cmluZyBwYWdlVVJMU3RyaW5nKQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJHTFBvbGljeUZvclVSTChXZWJD
b3JlOjpVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVsYXllZAotICAgIFJlc29s
dmVXZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBv
bGljeSkgRGVsYXllZAorICAgIFdlYkdMUG9saWN5Rm9yVVJMKFVSTCB1cmwpIC0+ICh1aW50MzJf
dCBsb2FkUG9saWN5KSBEZWxheWVkCisgICAgUmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFVSTCB1
cmwpIC0+ICh1aW50MzJfdCBsb2FkUG9saWN5KSBEZWxheWVkCiAjZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKQogICAgIERpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhzdHJ1Y3QgV2ViQ29yZTo6Vmll
d3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgRGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90
IHR5cGUsIGJvb2wgaGFuZGxlZCkKQEAgLTEyNSwxMSArMTI1LDExIEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgRGlkQ3JlYXRlV2luZG93KHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVj
dCBXZWJDb3JlOjpHbG9iYWxXaW5kb3dJZGVudGlmaWVyIHdpbmRvd0lkZW50aWZpZXIpCiAKICAg
ICAjIEZyYW1lIGxvYWQgbWVzc2FnZXMKLSAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJM
IHVybCwgV2ViQ29yZTo6VVJMIHVucmVhY2hhYmxlVVJMLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQorICAgIERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwgdXJsLCBVUkwgdW5yZWFjaGFibGVVUkwsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKICAgICBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIHVybCwgZG91YmxlIGRlbGF5LCBlbnVtOmJvb2wgV2ViQ29yZTo6
TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KQogICAgIERpZENhbmNlbENs
aWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKLSAgICBEaWRDaGFuZ2VQcm92
aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6VVJMIHVybCkKKyAgICBEaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMIHVybCkKICAgICBE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFN0cmluZyBwcm92aXNpb25hbFVSTCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRDb21taXRMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgbWlt
ZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBsb2FkVHlwZSwg
V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1Bs
dWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4g
Zm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAg
IERpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQpAQCAtMTQyLDcgKzE0Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
RGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWREZXRl
Y3RYU1NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQotICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5cGUsIFdlYkNvcmU6OlVSTCB1cmws
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMy
X3QgdHlwZSwgVVJMIHVybCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRDaGFu
Z2VNYWluRG9jdW1lbnQodWludDY0X3QgZnJhbWVJRCk7CiAgICAgRGlkRGVzdHJveU5hdmlnYXRp
b24odWludDY0X3QgbmF2aWdhdGlvbklEKQogCkBAIC00MjgsNyArNDI4LDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBTYXZlUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5hbWUsIFZl
Y3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+IHNlYXJjaEl0ZW1zKQogICAgIExvYWRSZWNlbnRT
ZWFyY2hlcyhTdHJpbmcgbmFtZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFyY2g+IHJl
c3VsdCkgTGVnYWN5U3luYwogCi0gICAgU2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFN0
cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgV2ViQ29yZTo6VVJMIG9yaWdpbmF0aW5nVVJMLCBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBTYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIo
U3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBVUkwgb3JpZ2luYXRpbmdVUkwsIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2F2ZVBERlRvVGVtcG9y
YXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihTdHJpbmcgc3VnZ2VzdGVkRmls
ZW5hbWUsIFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGEsIFN0cmluZyBwZGZVVUlEKQpAQCAtNDg4LDcgKzQ4OCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAKICAgICBEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVh
cmFuY2UoV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAotICAgIENvbnRlbnRSdWxlTGlzdE5v
dGlmaWNhdGlvbihXZWJDb3JlOjpVUkwgdXJsLCBWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywg
VmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9ucykKKyAgICBDb250ZW50UnVsZUxpc3ROb3RpZmlj
YXRpb24oVVJMIHVybCwgVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMsIFZlY3RvcjxTdHJpbmc+
IG5vdGlmaWNhdGlvbnMpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAm
JiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVu
dCh1aW50NjRfdCBjb250ZXh0SWQpCkBAIC01NDQsNiArNTQ0LDYgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBTZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhW
ZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycykgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobWVudERhdGE+IHNlcmFsaXplZERhdGEpIExlZ2FjeVN5bmMKICNlbmRpZgogCi0gICAg
U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwg
U3RyaW5nIGNoYWxsZW5nZVN0cmluZywgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1
bHQpIExlZ2FjeVN5bmMKKyAgICBTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBTdHJpbmcgY2hhbGxlbmdlU3RyaW5nLCBVUkwgdXJsKSAtPiAo
U3RyaW5nIHJlc3VsdCkgTGVnYWN5U3luYwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWZmYWQ1ZDQyYWEyYmZkNmZjNWFiNDVjYTNjZmU4MjYx
MTc0Mjg3MC4uNWM0ZDc2OGMwZGI2NWUzNTZmNGFjMWEwMDUxMWY2NDg1NGJhODNlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtODcsNyArODcsNiBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vz
c1dhcm1pbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2lu
Y2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC05
NSw2ICs5NCw3IEBACiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9V
UkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTIzNjEsNyArMjM2MSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiByZWdpc3Ry
YWJsZURvbWFpCiAgICAgKnZhbHVlID0gcHJld2FybUluZm9ybWF0aW9uOwogfQogCi12b2lkIFdl
YlByb2Nlc3NQb29sOjp0cnlQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjp0cnlQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgYXV0byogcHJld2FybUluZm9ybWF0aW9uID0g
bV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5nZXQodG9SZWdpc3RyYWJs
ZURvbWFpbih1cmwpKTsKICAgICBpZiAoIXByZXdhcm1JbmZvcm1hdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDdlMTk2MmFhODczNGMyMjFlNGNiMzY4
NDUwMjg1MjUyOTMyMjFmNGEuLjAzZGEzODkwZmYyZWFmZDQxZDc2ZjJjZWY5NWIyZTkwZDA3YmUw
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjM2LDcg
KzIzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtl
cnNDYW5IYW5kbGUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFz
Q2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIHBy
ZWNvbm5lY3RUb1NlcnZlcihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHByZWNvbm5l
Y3RUb1NlcnZlcihjb25zdCBVUkwmKTsKIAogICAgIFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRM
aW5rU3RvcmUoKSB7IHJldHVybiBtX3Zpc2l0ZWRMaW5rU3RvcmUuZ2V0KCk7IH0KIApAQCAtNTQx
LDcgKzU0MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRQcm9jZXNzVG9PcmlnaW5DYWNoZVNl
dChXZWJQYWdlUHJveHkmKTsKICAgICB2b2lkIHJlbW92ZVByb2Nlc3NGcm9tT3JpZ2luQ2FjaGVT
ZXQoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKLSAgICB2b2lkIHRyeVByZXdhcm1XaXRoRG9tYWluSW5m
b3JtYXRpb24oV2ViUHJvY2Vzc1Byb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9p
ZCB0cnlQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0
IFVSTCYpOwogCiAgICAgdm9pZCB1cGRhdGVNYXhTdXNwZW5kZWRQYWdlQ291bnQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTIwMzVkMDFi
YzBiYmE1ZGU4OWMyNmJkY2NlZDlmMGYwMTE1MTAwMC4uY2M3NDAxMTZmYzNkNzA3ODZlYmYyMmIx
NzNkMTQ2Nzg2YTgzZGZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCkBAIC01NSwxMCArNTUsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByZXdhcm1J
bmZvcm1hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljU3VmZml4Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TdWRkZW5UZXJtaW5hdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlT3JGYWlsZWRUb0xhdW5jaCgpCiAj
aWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKICAgICBpZiAocGFnZXMuc2l6ZSgpID09IDEp
IHsKICAgICAgICAgYXV0byYgcGFnZSA9ICpwYWdlc1swXTsKLSAgICAgICAgU3RyaW5nIGRvbWFp
biA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oV2ViQ29yZTo6VVJMKHsgfSwgcGFnZS5j
dXJyZW50VVJMKCkpLmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIGRvbWFpbiA9
IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oVVJMKHsgfSwgcGFnZS5jdXJyZW50VVJMKCkp
Lmhvc3QoKS50b1N0cmluZygpKTsKICAgICAgICAgaWYgKCFkb21haW4uaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcGFnZS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhFbmhhbmNlZFByaXZhY3koV2Vi
Q29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpkb21haW5DYXVzaW5nQ3Jhc2hLZXkoKSwgZG9t
YWluLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDAwYjY4ZmYyMWVhMGFjNGZiMjFhYzA1ZWI4
NTg2NzRmMDkzYTMzZWYuLmU0MjM3Nzk1MGY2NDZhNjMzOTc5MDBiMzMzZWFiYTJhMTM1M2IxNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC02MSw3ICs2
MSw2IEBAIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKIHN0
cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CkBAIC0xNTEsMTAgKzE1MCwxMCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHdpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9u
KCkgeyBtX21heUhhdmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24gPSB0cnVlOyB9
CiAgICAgdm9pZCBhc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGNvbnN0IFN0cmluZyYpOwotICAg
IGJvb2wgaGFzQXNzdW1lZFJlYWRBY2Nlc3NUb1VSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25z
dDsKKyAgICBib29sIGhhc0Fzc3VtZWRSZWFkQWNjZXNzVG9VUkwoY29uc3QgVVJMJikgY29uc3Q7
CiAKICAgICBib29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcm
KTsKLSAgICBib29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKKyAgICBib29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBV
UkwmKTsKIAogICAgIHN0YXRpYyBib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMDM0MTJhN2QxMGVjM2VlMzc0ZDBkMzVjNjM0YjA2MGVi
N2MwM2MzZi4uNjlhZjM4MjM0NzY5MmViMzcyNmNlYzA0YjIyMTUyNjJkMGQ2ZGI2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCB2
YWwKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNl
dFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zNzUsNyAr
Mzc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVt
ZXRyeSgpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojpsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFVS
TCYgcGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwg
Y29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA3MmQ5OTA4ODMwMDk0NjRmNzQ1ZmExNmUyNmMx
MmE5MWI1ZDllODhiLi5lOTJlNTdkZTYwYTdiNzM4YWEyNzNkMjMzYzQ1ZGZkY2YxMGI2YzcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaApAQCAtNDEsNyArNDEsNiBAQCBjbGFzcyBXb3JrUXVldWU7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVSTDsKIHN0
cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogfQogCkBAIC04MywyOCArODIsMjggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKTsKIAotICAgIHZvaWQg
bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBj
bGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwotICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0
TGFzdFNlZW4oY29uc3QgV2ViQ29yZTo6VVJMJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5
JiwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBVUkwmIHJlZGlyZWN0VVJMKTsKKyAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXJVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFVSTCYsIFNlY29u
ZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRS
ZXNvdXJjZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGlzUHJldmFsZW50
UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7Ci0gICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpV
UkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0
ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBXZWJDb3Jl
OjpVUkwmIHN1YkZyYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZyYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyhjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3RSZWRpcmVjdGVkRnJvbSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBob3N0UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKLSAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCk7Ci0gICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoY29u
c3QgV2ViQ29yZTo6VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAg
dm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBz
dWJmcmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJj
ZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9pZCBzZXRTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOwotICAgIHZvaWQgc2V0
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWVIb3N0
TmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7Ci0gICAgdm9p
ZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZy
YW1lSG9zdE5hbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkRnJvbSk7
CisgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29u
c3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3Qg
VVJMJiB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9p
ZCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoY29uc3QgVVJMJiBzdWJGcmFtZSwgY29uc3Qg
VVJMJiB0b3BGcmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9p
ZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZy
b20sIGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CisgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNv
bnN0IFVSTCYsIGJvb2wpOworICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRl
clRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJhbWUp
OworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYg
c3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgdG9wRnJhbWUpOworICAgIHZvaWQgc2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9z
dE5hbWVSZWRpcmVjdGVkVG8pOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dEZyb20oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0
ZWRGcm9tKTsKKyAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwm
IHRvcEZyYW1lSG9zdE5hbWUsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOworICAg
IHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVVJMJiB0b3BGcmFtZUhv
c3ROYW1lLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZEZyb20pOwogICAgIHZvaWQgc2No
ZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckJsb2NraW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAt
MTI4LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVs
dFZhbHVlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0gICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBX
ZWJDb3JlOjpVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICAKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJh
Y2soV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKSB7IG1fc3Rh
dGlzdGljc1Rlc3RpbmdDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CiAgICAgdm9pZCBs
b2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKaW5kZXggMDgzNmExZGFl
MjJhNzU3NTUxMGNjYjA3NzE2ZTc3ODUzODE3MDNlNy4uYjAxMDIxNzc0MzdmM2YyMTQ5NDVhN2Ez
NGU1OGEzZGZlMjQxNzQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaW1w
b3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGguaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8d3Rm
L0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUy
LDcgKzUyLDcgQEAgc3RydWN0IERyYWdTb3VyY2VTdGF0ZSB7CiAgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gaW5kaWNhdG9yRGF0YTsKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhdGg+IHZpc2libGVQYXRoOwogICAgIFN0cmluZyBsaW5rVGl0bGU7Ci0g
ICAgV2ViQ29yZTo6VVJMIGxpbmtVUkw7CisgICAgVVJMIGxpbmtVUkw7CiAgICAgYm9vbCBwb3Nz
aWJseU5lZWRzRHJhZ1ByZXZpZXdVcGRhdGUgeyB0cnVlIH07CiAKICAgICBOU0ludGVnZXIgaXRl
bUlkZW50aWZpZXIgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCmluZGV4IGNhNDVhMWQ4YmIxMzQxMGQyOGM4ODk5ZWM3Y2U5MzRmZDg1
YzhjNDEuLjhlY2VlMTQ3YWEwNzg5MWEyZDIyMTAyZDk2MDU0Mzg5N2JlNDY1OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMTUs
NyArMTE1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyVGV4dEluZGljYXRvcihXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yV2luZG93RGlzbWlzc2FsQW5pbWF0aW9uKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCkgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIHNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFNhZmVCcm93c2luZ1dhcm5p
bmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZhcmlhbnQ8V2ViS2l0OjpDb250aW51ZVVuc2Fm
ZUxvYWQsIFdlYkNvcmU6OlVSTD4mJik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd1NhZmVC
cm93c2luZ1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2FybmluZyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhclNhZmVCcm93c2luZ1dhcm5pbmcoKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRy
ZWVDb250ZXh0Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggOTY4ZmRlOTYzMjhlZjEyNmQzNmI4MGZmMThhNWRl
MTYxZWM2YTExMS4uNTdiNWFjZWYzYjRmYTYzOWExM2Y4ZmYyMzA3MDZlMjQxOWE4MGNiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpA
QCAtNDcyLDcgKzQ3Miw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5CiB7CiB9CiAKLXZvaWQg
UGFnZUNsaWVudEltcGw6OnNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFNhZmVCcm93c2lu
Z1dhcm5pbmcmIHdhcm5pbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmFyaWFudDxXZWJLaXQ6
OkNvbnRpbnVlVW5zYWZlTG9hZCwgV2ViQ29yZTo6VVJMPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFNh
ZmVCcm93c2luZ1dhcm5pbmcmIHdhcm5pbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmFyaWFu
dDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byB3ZWJWaWV3ID0gbV93ZWJWaWV3LmdldCgpKQogICAgICAgICBb
d2ViVmlldyBfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmc6d2FybmluZyBjb21wbGV0aW9uSGFuZGxl
cjpXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCmluZGV4IDJkODZlMmEwMmVm
NDNlMTZjMzk1ZjhlZTVmMzFhMmViY2M4N2FlMjIuLjI3YjM1OTM1MGEwYjJmYzQzMDg0Y2NiOTdj
MGJlOTYwZDVkMDhiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCkBAIC00MSwxMCArNDEsMTAgQEAKICNpbXBvcnQg
PFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJp
bmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNp
bXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50
cy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgog
CkBAIC0zMDYsNyArMzA2LDcgQEAgc3RhdGljIGNvbnN0IENHRmxvYXQgcHJlc2VudGF0aW9uRWxl
bWVudFJlY3RQYWRkaW5nID0gMTU7CiAgICAgICAgIGlmIChpc0phdmFTY3JpcHRVUkwpCiAgICAg
ICAgICAgICB0aXRsZVN0cmluZyA9IFdFQl9VSV9TVFJJTkdfS0VZKCJKYXZhU2NyaXB0IiwgIkph
dmFTY3JpcHQgQWN0aW9uIFNoZWV0IFRpdGxlIiwgIlRpdGxlIGZvciBhY3Rpb24gc2hlZXQgZm9y
IEphdmFTY3JpcHQgbGluayIpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRpdGxlU3Ry
aW5nID0gV2ViQ29yZTo6dXNlclZpc2libGVTdHJpbmcodGFyZ2V0VVJMKTsKKyAgICAgICAgICAg
IHRpdGxlU3RyaW5nID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh0YXJnZXRVUkwpOwogICAgICAg
ICAgICAgdGl0bGVJc1VSTCA9IFlFUzsKICAgICAgICAgfQogICAgIH0gZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KaW5kZXggMTJkNjcxNzc2MGM0OTMzMjEzNGY2NGIzODlmNjU1M2E1NzgzY2EzZS4uZTYxMTRj
NzIxOTg4ZmNkNDJlYjkxNDI1OGY1YzQ2ZGY4ZDUyODlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC05
MSw3ICs5MSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24u
aD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYkV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2VsZWN0aW9uUmVjdC5oPiAvLyBG
SVhNRTogV0syIHNob3VsZCBub3QgaW5jbHVkZSBXZWJLaXQgaGVhZGVycyEKICNpbXBvcnQgPHBh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CkBAIC0xMDIsNiArMTAxLDcgQEAKICNpbXBvcnQg
PHd0Zi9TZXRGb3JTY29wZS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0
IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgog
I2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKQEAgLTUxMDUsNyArNTEwNSw3IEBAIHN0YXRpYyBib29sIGlzQXNzaXN0YWJsZUlucHV0VHlw
ZShJbnB1dFR5cGUgdHlwZSkKIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9u
U2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0aFVSTDooTlNVUkwgKil1
cmwgcmVjdDooQ0dSZWN0KWJvdW5kaW5nUmVjdAogewogICAgIGlmIChfdGV4dFNlbGVjdGlvbkFz
c2lzdGFudCkKLSAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0
Rm9yOnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6Ym91bmRpbmdSZWN0XTsKKyAgICAg
ICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9yOldURjo6dXNlclZp
c2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOwogfQogCiAjaWYgSEFWRShB
UFBfTElOS1MpCkBAIC02Mzk3LDcgKzYzOTcsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnByZXZpZXdJ
ZGVudGlmaWVyRm9yRWxlbWVudEFjdGlvbihfV0tFbGVtZW50QWN0aW9uICphY3Rpb24pCiAKICAg
ICBOU1VSTCAqdGFyZ2V0VVJMID0gY29udHJvbGxlci5wcmV2aWV3RGF0YVtVSVByZXZpZXdEYXRh
TGlua107CiAgICAgVVJMIGNvcmVUYXJnZXRVUkwgPSB0YXJnZXRVUkw7Ci0gICAgYm9vbCBpc1Zh
bGlkVVJMRm9ySW1hZ2VQcmV2aWV3ID0gIWNvcmVUYXJnZXRVUkwuaXNFbXB0eSgpICYmIChXZWJD
b3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvcmVUYXJnZXRVUkwpIHx8IFdlYkNvcmU6OnBy
b3RvY29sSXMoY29yZVRhcmdldFVSTCwgImRhdGEiKSk7CisgICAgYm9vbCBpc1ZhbGlkVVJMRm9y
SW1hZ2VQcmV2aWV3ID0gIWNvcmVUYXJnZXRVUkwuaXNFbXB0eSgpICYmIChXVEY6OnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoY29yZVRhcmdldFVSTCkgfHwgV1RGOjpwcm90b2NvbElzKGNvcmVUYXJn
ZXRVUkwsICJkYXRhIikpOwogCiAgICAgaWYgKFtfcHJldmlld0l0ZW1Db250cm9sbGVyIHR5cGVd
ID09IFVJUHJldmlld0l0ZW1UeXBlTGluaykgewogICAgICAgICBfaGlnaGxpZ2h0TG9uZ1ByZXNz
Q2FuQ2xpY2sgPSBOTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCmluZGV4IDM2MWJjNTAzM2IxZTYwMmMyY2JiZWQw
YjFkNzFiMzk2NjMyNDM3ZTEuLmY2MzM2ZmM5ZWM3ZmVkZjM5ZmZmZjQ0ZTdmYzg2MmFjYWJhNWI5
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5tbQpAQCAtNDEsMTMgKzQxLDEzIEBACiAjaW1wb3J0ICJfV0tHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmgiCiAjaW1wb3J0ICJfV0tHZW9sb2NhdGlvblBv
c2l0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlvbi5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkdlb2xvY2F0aW9uUG9zaXRp
b24uaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIC8vIEZJWE1FOiBS
ZW1vdmUgdXNlIG9mIFdlYktpdDEgZnJvbSBXZWJLaXQyCiAjaW1wb3J0IDxXZWJLaXQvV2ViR2Vv
bG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oPgpAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRp
YyB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9s
b2NhdGlvbk1hbmFnZXIsIGJvCiAKICAgICAgICAgaWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlE
ZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oW3JlcXVlc3Qu
dmlldyBVSURlbGVnYXRlXSk7CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6YXRpb25G
b3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOildKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpV
UkwgcmVxdWVzdEZyYW1lVVJMKFdlYkNvcmU6OlVSTCgpLCByZXF1ZXN0LmZyYW1lLT51cmwoKSk7
CisgICAgICAgICAgICBVUkwgcmVxdWVzdEZyYW1lVVJMKFVSTCgpLCByZXF1ZXN0LmZyYW1lLT51
cmwoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IHdy
YXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqcmVxdWVzdC5mcmFtZS5nZXQoKSwgKnJlcXVl
c3Qub3JpZ2luLmdldCgpKSk7CiAgICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUodWlEZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RH
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb25Gb3JVUkw6ZnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwog
ICAgICAgICAgICAgV0tXZWJWaWV3ICp2aWV3RnJvbVJlcXVlc3QgPSByZXF1ZXN0LnZpZXcuZ2V0
KCk7CkBAIC0yMDAsOCArMjAwLDggQEAgc3RhdGljIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5
KFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlciwgYm8KICAgICAgICAg
aWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2hv
dWxkUmVxdWVzdEdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkZvclVSTDppc01haW5GcmFtZTptYWlu
RnJhbWVVUkw6KV0pIHsKICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSog
bWFpbkZyYW1lID0gcmVxdWVzdC5mcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICAgICAg
ICAgIGJvb2wgaXNNYWluRnJhbWUgPSByZXF1ZXN0LmZyYW1lID09IG1haW5GcmFtZTsKLSAgICAg
ICAgICAgIFdlYkNvcmU6OlVSTCByZXF1ZXN0RnJhbWVVUkwoV2ViQ29yZTo6VVJMKCksIHJlcXVl
c3QuZnJhbWUtPnVybCgpKTsKLSAgICAgICAgICAgIFdlYkNvcmU6OlVSTCBtYWluRnJhbWVVUkwo
V2ViQ29yZTo6VVJMKCksIG1haW5GcmFtZS0+dXJsKCkpOworICAgICAgICAgICAgVVJMIHJlcXVl
c3RGcmFtZVVSTChVUkwoKSwgcmVxdWVzdC5mcmFtZS0+dXJsKCkpOworICAgICAgICAgICAgVVJM
IG1haW5GcmFtZVVSTChVUkwoKSwgbWFpbkZyYW1lLT51cmwoKSk7CiAgICAgICAgICAgICByZXF1
aXJlc1VzZXJBdXRob3JpemF0aW9uID0gW3VpRGVsZWdhdGUgX3dlYlZpZXc6cmVxdWVzdC52aWV3
LmdldCgpCiAgICAgICAgICAgICAgICAgIHNob3VsZFJlcXVlc3RHZW9sb2NhdGlvbkF1dGhvcml6
YXRpb25Gb3JVUkw6cmVxdWVzdEZyYW1lVVJMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaXNNYWluRnJhbWU6aXNNYWluRnJhbWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0xlZ2FjeVBERlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tMZWdhY3lQREZWaWV3Lm1tCmluZGV4IGQzOGYzMWM4MTVm
M2M5ZjNlOThkYTUyZTU0ZmI4ODg4NGVkMGE0MzAuLmFlYTBkNmQzOWY2MmQ3MWQ5Njc0NDZlNjgy
MjdlYmQ3ZjI4M2FkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0xlZ2FjeVBERlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTGVn
YWN5UERGVmlldy5tbQpAQCAtNDMsMTEgKzQzLDExIEBACiAjaW1wb3J0IDxNb2JpbGVDb3JlU2Vy
dmljZXMvVVRDb3JlVHlwZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9y
dCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4K
IAogLy8gQWxsIG9mIFVJUERGUGFnZSogYXJlIGRlcHJlY2F0ZWQsIHNvIGp1c3QgaWdub3JlIGRl
cHJlY2F0ZWQgZGVjbGFyYXRpb25zCiAvLyBpbiB0aGlzIGZpbGUgdW50aWwgd2Ugc3dpdGNoIG9m
ZiB0aGVtLgpAQCAtNzc5LDcgKzc3OSw3IEBAIHN0YXRpYyBOU1N0cmluZ0NvbXBhcmVPcHRpb25z
IHN0cmluZ0NvbXBhcmVPcHRpb25zKF9XS0ZpbmRPcHRpb25zIG9wdGlvbnMpCiAtICh2b2lkKWFj
dGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNo
YXJlRWxlbWVudFdpdGhVUkw6KE5TVVJMICopdXJsIHJlY3Q6KENHUmVjdClib3VuZGluZ1JlY3QK
IHsKICAgICBfd2ViU2VsZWN0aW9uQXNzaXN0YW50ID0gYWRvcHROUyhbW1VJV0tTZWxlY3Rpb25B
c3Npc3RhbnQgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7Ci0gICAgW193ZWJTZWxlY3Rpb25B
c3Npc3RhbnQgc2hvd1NoYXJlU2hlZXRGb3I6V2ViQ29yZTo6dXNlclZpc2libGVTdHJpbmcodXJs
KSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOworICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IHNo
b3dTaGFyZVNoZWV0Rm9yOldURjo6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3Vu
ZGluZ1JlY3RdOwogICAgIF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgPSBuaWw7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCmluZGV4IDdhZDZiODdkMDVhZDNhZjhm
NjQ4ZDljMDQ0YmI4ODFhOWMwYzQwZTYuLjQ4NWYwNTgxMTc2ZjA0YWZhYTAzNGE1NTMxN2I1OWI1
Nzk1M2ExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQpAQCAt
NDEsMTEgKzQxLDExIEBACiAjaW1wb3J0ICJfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5h
bC5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYv
TWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1dl
YWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KIAogQGludGVy
ZmFjZSBXS1BERlZpZXcgKCkgPFBERkhvc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlLCBXS0FjdGlv
blNoZWV0QXNzaXN0YW50RGVsZWdhdGU+CiBAZW5kCkBAIC01MTgsNyArNTE4LDcgQEAgc3RhdGlj
IE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMgc3RyaW5nQ29tcGFyZU9wdGlvbnMoX1dLRmluZE9wdGlv
bnMgZmluZE9wdGlvbnMpCiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNo
ZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdGhVUkw6KE5TVVJMICopdXJs
IHJlY3Q6KENHUmVjdClib3VuZGluZ1JlY3QKIHsKICAgICBhdXRvIHNlbGVjdGlvbkFzc2lzdGFu
dCA9IGFkb3B0TlMoW1tVSVdLU2VsZWN0aW9uQXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6
W19ob3N0Vmlld0NvbnRyb2xsZXIgdmlld11dKTsKLSAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNo
b3dTaGFyZVNoZWV0Rm9yOldlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCkgZnJvbVJlY3Q6
Ym91bmRpbmdSZWN0XTsKKyAgICBbc2VsZWN0aW9uQXNzaXN0YW50IHNob3dTaGFyZVNoZWV0Rm9y
OldURjo6dXNlclZpc2libGVTdHJpbmcodXJsKSBmcm9tUmVjdDpib3VuZGluZ1JlY3RdOwogfQog
CiAjaWYgSEFWRShBUFBfTElOS1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlcklPUy5tbQppbmRleCA5YWJlN2FjNDU3NWJmMmNkZjViYjlhNzI2NGRiYzQwMzQ0ODFh
MTcxLi4yYmQxYThlMmQxYThhZThkZWIxM2UwZTQ3NDYyZDFjNGNjNzkyNjEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxs
c2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KQEAgLTQ1LDEyICs0NSwx
MiBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2Fs
aXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nm
L0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU1N0cmluZ1NQSS5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL1VSTEZvcm1hdHRpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgor
I2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29h
L1NlY3VyaXR5U1BJLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC05NDcsNyArOTQ3
LDcgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGtBbmltYXRpb25EdXJhdGlvbiA9IDAu
MjsKICAgICBpZiAoTGlua1ByZXNlbnRhdGlvbkxpYnJhcnkoKSkKICAgICAgICAgZG9tYWluID0g
W3VybCBfbHBfc2ltcGxpZmllZERpc3BsYXlTdHJpbmddOwogICAgIGVsc2UKLSAgICAgICAgZG9t
YWluID0gdXNlclZpc2libGVTdHJpbmcodXJsKTsKKyAgICAgICAgZG9tYWluID0gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyh1cmwpOwogI2VuZGlmCiAKICAgICBOU1N0cmluZyAqdGV4dCA9IG5pbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3Rh
dGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25T
dGF0ZUNvZGluZy5jcHAKaW5kZXggMWRhYzIwOWFkYzAzYWJhOTJlMzc0YzU5MTk4MzE0ZmRlMWVj
MmUzZS4uNWVlOGRiYWU0M2YwMGRhODEwOGRjNzYxZWM4NmRjOTgxZGRjMTZkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNv
ZGluZy5jcHAKQEAgLTExMzMsNyArMTEzMyw3IEBAIGJvb2wgZGVjb2RlTGVnYWN5U2Vzc2lvblN0
YXRlKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3Qgc2l6ZSwgU2Vzc2lvblN0YXRlJiBzCiAg
ICAgfQogCiAgICAgaWYgKGF1dG8gcHJvdmlzaW9uYWxVUkxTdHJpbmcgPSBkeW5hbWljX2NmX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHNlc3Npb25TdGF0ZURpY3Rpb25h
cnksIHByb3Zpc2lvbmFsVVJMS2V5KSkpIHsKLSAgICAgICAgc2Vzc2lvblN0YXRlLnByb3Zpc2lv
bmFsVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBwcm92aXNpb25hbFVSTFN0cmlu
Zyk7CisgICAgICAgIHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTCA9IFVSTChVUkwoKSwgcHJv
dmlzaW9uYWxVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIXNlc3Npb25TdGF0ZS5wcm92aXNpb25h
bFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRleCA2YmM4
YmRkN2QzMTU4Mzk0OWE3YzM5ODViYjQ0ODk5YzUwNTQzZDlhLi44N2IzMDVlZGQ2M2I1OGU1ZmM4
ZDBiYzI4MGM4ODY1ZmY1NGQ3YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlu
cHV0Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSBvdmVycmlkZTsKICAgICB2b2lk
IHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2hvd1NhZmVCcm93c2lu
Z1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2FybmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgV2ViQ29yZTo6VVJMPiYmKT4m
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93U2FmZUJyb3dzaW5nV2FybmluZyhjb25zdCBTYWZl
QnJvd3NpbmdXYXJuaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWYXJpYW50PFdlYktpdDo6
Q29udGludWVVbnNhZmVMb2FkLCBVUkw+JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFy
U2FmZUJyb3dzaW5nV2FybmluZygpIG92ZXJyaWRlOwogICAgIAogI2lmIFdLX0FQSV9FTkFCTEVE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0K
aW5kZXggZTM3NGI5OWRhN2RkNWI1MDJjODdhMmFkNjZlMzY5NjE0MjczMDJmNS4uMTEyMzVhMTI3
ZTI3N2EwMTg3NjAzOGM5NzQ2ZjdmOGVkMmNjYmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNDg5LDcgKzQ4OSw3IEBAIFJl
ZjxWYWxpZGF0aW9uQnViYmxlPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlVmFsaWRhdGlvbkJ1YmJs
ZShjb25zdCBTdHJpbmcmIG1lc3NhCiAgICAgcmV0dXJuIFZhbGlkYXRpb25CdWJibGU6OmNyZWF0
ZShtX3ZpZXcsIG1lc3NhZ2UsIHNldHRpbmdzKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2hvd1NhZmVCcm93c2luZ1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2FybmluZyYgd2Fybmlu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWYXJpYW50PFdlYktpdDo6Q29udGludWVVbnNhZmVM
b2FkLCBXZWJDb3JlOjpVUkw+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c2hvd1NhZmVCcm93c2luZ1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2Fybmlu
ZyYgd2FybmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWYXJpYW50PFdlYktpdDo6Q29udGlu
dWVVbnNhZmVMb2FkLCBVUkw+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
bV9pbXBsKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoQ29udGludWVVbnNhZmVM
b2FkOjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1t
ZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
S0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggOTk4MzkwNzA5OTU0NGYyYTBkYWUz
MWFkOThiN2E2Mjg4ZTM5YjU4OS4uMjFkY2QyZmUyNDM2MWIxYWU1Y2IxODYzNGVhYzBiMzhhNjY0
ZjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCkBAIC0zOCwxMyArMzgsMTMgQEAKICNpbXBvcnQg
PFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9HZW9tZXRyeVV0
aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yV2luZG93Lmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvRGF0YURldGVjdG9yc1NQ
SS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTG9va3VwU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L21hYy9OU01lbnVTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TUG9wb3ZlclNQSS5oPgog
I2ltcG9ydCA8cGFsL3NwaS9tYWMvUXVpY2tMb29rTWFjU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09SS19J
Tl9VTUJSRUxMQShRdWFydHosIFF1aWNrTG9va1VJKQogU09GVF9MSU5LX0NMQVNTKFF1aWNrTG9v
a1VJLCBRTFByZXZpZXdNZW51SXRlbSkKQEAgLTI3NiwxNyArMjc2LDE3IEBAIFNPRlRfTElOS19D
TEFTUyhRdWlja0xvb2tVSSwgUUxQcmV2aWV3TWVudUl0ZW0pCiAKICAgICBTdHJpbmcgYWJzb2x1
dGVMaW5rVVJMID0gaGl0VGVzdFJlc3VsdC0+YWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgaWYgKCFh
YnNvbHV0ZUxpbmtVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChXZWJDb3JlOjpwcm90b2Nv
bElzKGFic29sdXRlTGlua1VSTCwgIm1haWx0byIpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3Rv
Y29sSXMoYWJzb2x1dGVMaW5rVVJMLCAibWFpbHRvIikpIHsKICAgICAgICAgICAgIF90eXBlID0g
a1dLSW1tZWRpYXRlQWN0aW9uTWFpbHRvTGluazsKICAgICAgICAgICAgIHJldHVybiBbc2VsZiBf
YW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZExpbmtdOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXMoYWJzb2x1dGVMaW5rVVJMLCAidGVsIikpIHsK
KyAgICAgICAgaWYgKFdURjo6cHJvdG9jb2xJcyhhYnNvbHV0ZUxpbmtVUkwsICJ0ZWwiKSkgewog
ICAgICAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVBY3Rpb25UZWxMaW5rOwogICAgICAgICAg
ICAgcmV0dXJuIFtzZWxmIF9hbmltYXRpb25Db250cm9sbGVyRm9yRGF0YURldGVjdGVkTGlua107
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoV2ViQ29yZTo6cHJvdG9jb2xJc0luSFRUUEZhbWls
eShhYnNvbHV0ZUxpbmtVUkwpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoYWJzb2x1dGVMaW5rVVJMKSkgewogICAgICAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlh
dGVBY3Rpb25MaW5rUHJldmlldzsKIAogICAgICAgICAgICAgUUxQcmV2aWV3TWVudUl0ZW0gKml0
ZW0gPSBbTlNNZW51SXRlbSBzdGFuZGFyZFF1aWNrTG9va01lbnVJdGVtXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCmluZGV4
IDMxOTgyMjBjMjEyM2VlOWZiNzgyNjBiMjJlNThlMGI3OGMxMjg0ZmUuLmNiZmUzMGU5ZTBiZTgz
MjE1MTgxOTYzNTVmNzc5ODA4YjgyNGYyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApAQCAtMzAsNyArMzAsNiBAQAog
I2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQWN0aW9u
LmgiCiAjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKLSNpbmNsdWRlICJDRlVSTEV4
dHJhcy5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCkBAIC00NSw2
ICs0NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSW5zdGFuY2VIYW5kbGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPFdl
YktpdC9XS1BhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvY2YvQ0ZVUkxFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggNzc0NjI3MjJmY2ExYmIy
YjQ2MGY0NjQ4YjIyMDEzYjRlM2NlNDk4Ni4uOWI4YzAwOGQxNmQ3NThmOGRkNzFmNTYwMjMzNzNi
YTBiZDczZjNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGF5bWVudENvb3JkaW5hdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMzEs
NyArMTMxLDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6Om9wZW5QYXltZW50U2V0dXAo
Y29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGMKICAgICBtX3dlYlBhZ2Uuc2VuZChN
ZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Ok9wZW5QYXltZW50U2V0dXAobWVy
Y2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCByZXBseUlEKSk7CiB9CiAKLWJvb2wgV2ViUGF5
bWVudENvb3JkaW5hdG9yOjpzaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2lu
YXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkK
K2Jvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3Jp
Z2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCkKIHsKICAg
ICBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3M7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBsaW5rSWNvblVSTCA6IGxpbmtJY29uVVJMcykKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvcjo6cGF5bWVudENvb3JkaW5hdG9yRGVzdHJveWVkKCkKIAogdm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgU3RyaW5nJiB2
YWxpZGF0aW9uVVJMU3RyaW5nKQogewotICAgIHBheW1lbnRDb29yZGluYXRvcigpLnZhbGlkYXRl
TWVyY2hhbnQoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB2YWxpZGF0aW9uVVJMU3RyaW5n
KSk7CisgICAgcGF5bWVudENvb3JkaW5hdG9yKCkudmFsaWRhdGVNZXJjaGFudChVUkwoVVJMKCks
IHZhbGlkYXRpb25VUkxTdHJpbmcpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6
OmRpZEF1dGhvcml6ZVBheW1lbnQoY29uc3QgV2ViQ29yZTo6UGF5bWVudCYgcGF5bWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuaAppbmRleCBkZDcyZWUwODE4MDA0MjJlNWRmNDQwNGMxOTYxNDFjOWQ0NTI0
ODhjLi5mYjc0ZDMwZmY5NWYzZjcyYTU1NGFhMWQwYTFlMzUxNzk3ZjJlODQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5NYWtlUGF5
bWVudHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJk
KGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5h
bWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJy
aWRlOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKLSAgICBib29sIHNob3dQYXltZW50
VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICBib29sIHNob3dQYXltZW50VUkoY29uc3QgVVJM
JiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2
b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJj
aGFudFNlc3Npb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RT
ZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggM2YyNzEyMzJkNjNlNGE0Zjc3NDVlZjI4YzY0ZWFl
NTUzOGM0YjdiOS4uN2ZlOTMzNGJhNGYzNTljNzJiMGQ5MWQ1NTQyYTcxNjQ0NjJlNmRlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbgogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpDYWNoZXMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBvcmln
aW4sIHVwZGF0ZUNvdW50ZXIpLCAwKTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OlJldHJpZXZlUmVjb3JkcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hl
SWRlbnRpZmllciwgdXJsKSwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA0ODBlZGRk
OWI0ZTUxNWM0YjRhYWU2ZDRjNmQ5NDI1OGZjYmUyNTJiLi5kMmUwZGYyZDg2MDkyMmEzYjFlMzU2
YmU5MjFlNzgwMTk4NmRjNzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Q2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZG9SZXRyaWV2ZUNh
Y2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikgZmluYWw7CiAKLSAgICB2b2lkIGRvUmV0cmll
dmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIHZvaWQgZG9SZXRyaWV2ZVJl
Y29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgY29uc3QgVVJMJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYp
IGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD4mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCA3MzI1YjJhNmJi
NDg3NzBkZGM4NjE0NTI3ZTg1MjY2NmE1ZjcwYzA5Li4yNGUzNTU5Y2ZmMDY5YmQzMTc5MWVlNjUx
NzhlYWY0ZTRkYzBlNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmls
ZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIEJsb2JSZWdpc3Ry
eVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBSZWY8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
Cit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYg
dXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRs
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdp
c3RyeVByb3h5LmgKaW5kZXggYWM0MTFhYTk0MzZkZjYxNmMxZDMyNTZiYzdlM2ZiZDcwZDFjZGVj
ZC4uNmFiZWUzNjc0OGRmZWNjMmNhZDQ2Y2NjMjIyYTc0YzUxNzZkODlkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCkBA
IC0zMSwxMyArMzEsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEJsb2JSZWdpc3Ry
eVByb3h5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0g
ICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFJlZjxXZWJD
b3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
IG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgdW5yZWdp
c3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdp
c3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBvdmVycmlkZTsKLSAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJD
b3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29u
c3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOworICAgIHZv
aWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdp
c3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBs
b25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBsb25nIGxv
bmcgYmxvYlNpemUoY29uc3QgVVJMJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBvdmVycmlkZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oCmluZGV4IDA4MmI0YzZiZGNhMGM2ZjA0MjBmMWVhMGRlMjA5ZDY1MzEwN2JkNTcuLmM2
ZTk3YWIxM2RiMDZiMjQxNTQwNTRlYWI0MTkyNmQ0N2Y5MWVjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtMzcsNyAr
MzcsNiBAQCBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgVVJMOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgflBhZ2VMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bExvYWRVUkxSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0
YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6
OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmpl
Y3QqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUm
LCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CkBAIC05NSw3ICs5NCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZmVhdHVyZXNVc2VkSW5QYWdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0
IFZlY3RvcjxXVEY6OlN0cmluZz4mKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmKSB7IH0KLSAgICB2aXJ0
dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudEZvclVSTChXZWJLaXQ6OldlYkZyYW1lJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJikgY29uc3QgeyByZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQorICAgIHZpcnR1
YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50Rm9yVVJMKFdlYktpdDo6V2ViRnJhbWUmLCBjb25zdCBX
VEY6OlVSTCYpIGNvbnN0IHsgcmV0dXJuIFdURjo6U3RyaW5nKCk7IH0KIAogICAgIHZpcnR1YWwg
T3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbGF5b3V0TWlsZXN0b25lcygpIGNv
bnN0IHsgcmV0dXJuIHsgfTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAppbmRl
eCBiZWY1MmZhOTU0ODY0YmE0OTYyOTAxYTRiMTQ4NGZiMDgwOTNmN2FiLi43ODVkMWE1ZWI5NTM2
MmU0OWI4Y2U2ZWVjZjZiMDliMjdiYWM4ZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUu
Y3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlMYXll
clRyZWVBc1RleHQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKIAogYm9vbCBXS0J1bmRsZUZy
YW1lQWxsb3dzRm9sbG93aW5nTGluayhXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1VSTFJl
ZiB1cmxSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChmcmFtZVJlZiktPmFsbG93c0ZvbGxvd2lu
Z0xpbmsoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7
CisgICAgcmV0dXJuIHRvSW1wbChmcmFtZVJlZiktPmFsbG93c0ZvbGxvd2luZ0xpbmsoVVJMKFVS
TCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVGcmFtZUhhbmRs
ZXNQYWdlU2NhbGVHZXN0dXJlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCkBAIC0yMTAsMTIg
KzIxMCwxMiBAQCBib29sIFdLQnVuZGxlRnJhbWVHZXREb2N1bWVudEJhY2tncm91bmRDb2xvcihX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBkb3VibGUqCiAKIFdLU3RyaW5nUmVmIFdLQnVuZGxl
RnJhbWVDb3B5U3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoV0tCdW5kbGVGcmFt
ZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQ
SSh0b0ltcGwoZnJhbWVSZWYpLT5zdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChX
ZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKSk7CisgICAg
cmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPnN1Z2dlc3RlZEZpbGVuYW1lRm9y
UmVzb3VyY2VXaXRoVVJMKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKIH0KIAog
V0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlNSU1FVHlwZUZvclJlc291cmNlV2l0aFVSTChX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgcmV0dXJu
IHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPm1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJM
KFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKKyAg
ICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+bWltZVR5cGVGb3JSZXNvdXJj
ZVdpdGhVUkwoVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBib29sIFdL
QnVuZGxlRnJhbWVDb250YWluc0FueUZvcm1FbGVtZW50cyhXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA3OTkzMDU3MzdkY2E5NTFiYTBi
MWY0OGY5ZTU1YjE0YzcyMTA4YzhkLi45OTVjNWRjYzk2MWUzYmU1MDZjMDgxY2FiY2ZhNmEzN2Nk
ZGMxZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNjUsOSArNjUsOSBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbkRhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAt
NDM0LDcgKzQzNCw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0Rm9vdGVyQmFubmVyKFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VCYW5uZXJSZWYKIAogYm9vbCBXS0J1bmRsZVBh
Z2VIYXNMb2NhbERhdGFGb3JVUkwoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIHVy
bFJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5oYXNMb2NhbERhdGFGb3JVUkwo
V2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CisgICAg
cmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+aGFzTG9jYWxEYXRhRm9yVVJMKFVSTChVUkwoKSwgdG9X
VEZTdHJpbmcodXJsUmVmKSkpOwogfQogCiBib29sIFdLQnVuZGxlUGFnZUNhbkhhbmRsZVJlcXVl
c3QoV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRGOFN0cmlu
Zy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vQ29udmVydFRvVVRGOFN0cmluZy5jcHAKaW5kZXggYjVlMTY1N2EwZDIxZjZjMWM5N2JiOTAz
OGZkNGE1MDE5OWJjZjFhZC4uNzE1NzQ5YTQ5MjM5YzMxYWFiN2ZjMWFlZGQwMjYyM2UxNGU4YWFl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmNw
cApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnZl
cnRUb1VURjhTdHJpbmcuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzUsNyArMzUsNyBAQCBnY2hhciogY29udmVydFRvVVRG
OFN0cmluZyhXVEY6OlN0cmluZyBjb25zdCYgcykKICAgICByZXR1cm4gZ19zdHJkdXAocy51dGY4
KCkuZGF0YSgpKTsKIH0KIAotZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6VVJM
IGNvbnN0JiBzKQorZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoVVJMIGNvbnN0JiBzKQogewog
ICAgIHJldHVybiBjb252ZXJ0VG9VVEY4U3RyaW5nKHMuc3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0Nv
bnZlcnRUb1VURjhTdHJpbmcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKaW5kZXggZTQ5NDExM2EzZjhm
ZjZlOWM0ZGJlNjhhZjlmMWQ4YTJlMjIyZmVjOS4uYzM3MjUzNTliODkzNDdjMWY4ODk2YWRjNWJj
YWI0YjZhNDQ5NmM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL0NvbnZlcnRUb1VURjhTdHJpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vQ29udmVydFRvVVRG
OFN0cmluZy5oCkBAIC0yMywxMyArMjMsOSBAQAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVVJMOwotfQotCiB0eXBlZGVmIGNoYXIgZ2No
YXI7CiAKIGdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdURjo6U3RyaW5nIGNvbnN0JiBzKTsK
LWdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdlYkNvcmU6OlVSTCBjb25zdCYgcyk7CitnY2hh
ciogY29udmVydFRvVVRGOFN0cmluZyhVUkwgY29uc3QmIHMpOwogCiAjZW5kaWYgLyogQ29udmVy
dFRvVVRGOFN0cmluZ19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQuY3BwCmluZGV4IDFiYjBiYTE2MDM3MjhiYzJmYzkyNDk3YWNiMDEzNmJiOTk5MDU3MmIuLjA4
MzE3NGU1ZWQyMWY5ODM5NzNiMjZjN2Q3YzhjNDg4ZTEwMmMyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggZWM1ZDAwYjBmN2I4YThmOTI4ODk5OGFkMzk4MWRjYTgx
MmIzNzFlMy4uNmQzZTQ5MjFmZTk4ZGU3OTM3MTliMTgwYzBhZjI4MTM2Zjc2NmYxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtMzQsNyArMzQs
NiBAQAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiBjbGFzcyBTdHJpbmc7Ci1jbGFz
cyBVUkw7CiAKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnRCYXNlPiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudFYwLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMSwgV0tCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50VjIsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYzLCBXS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnRWNCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjUsIFdLQnVuZGxlUGFnZUxvYWRlckNs
aWVudFY2LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNywgV0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50VjgsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY5PiBWZXJzaW9uczsKQEAgLTQ4LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dChjb25zdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKik7CiAKICAgICB2b2lkIHdpbGxM
b2FkVVJMUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
QVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2Vi
UGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbExvYWREYXRh
UmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYs
IGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6
T2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6
T2JqZWN0PiYpIG92ZXJyaWRlOwpAQCAtODYsNyArODUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGZlYXR1cmVzVXNlZEluUGFnZShXZWJQYWdlJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYp
IG92ZXJyaWRlOwogCi0gICAgV1RGOjpTdHJpbmcgdXNlckFnZW50Rm9yVVJMKFdlYkZyYW1lJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgV1RGOjpTdHJpbmcgdXNl
ckFnZW50Rm9yVVJMKFdlYkZyYW1lJiwgY29uc3QgVVJMJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBsYXlvdXRNaWxlc3RvbmVzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRl
eCBlMmE2OTc4ZmUyODNhZDUzYzM0OGJmMDcwN2FiNjhkZjdkOTYyMzYyLi45MDNjNmQwMTJjMWRi
Mjg4ZmJhMjM4YjU3OGJkMDY1NjM0NDhkODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDEyNzhjMWI0NDNmYWQ3YmZhNzFmMTBmMmI0ZjI4Njg2YjZl
MDM0NGYuLjY1Y2Y0MjNhYjE2ODI3MjVhZmQ5NGEzMTRiZTE0N2I4M2VhOWYxYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpkaWRGaW5p
c2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIFJlc291cmNlRQogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVycm9yKSwgV1RGTW92ZShyZXNwb25zZSkpOwog
fQogCi12b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXImIGZy
YW1lTG9hZGVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRv
KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgY29uc3QgVVJMJiB1cmwsIFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1aW50NjRfdCBwcmVjb25uZWN0aW9u
SWRlbnRpZmllciA9IGdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fcHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVycy5hZGQocHJlY29ubmVjdGlvbklkZW50
aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IGUwNDBkMDc1
NWM3OTRkYmQ3MWVhOWM1NTg4NDJhMDY1YzUyZGY1ZGUuLjFjMmZiM2YxMWU0NWUzYjdlYTg4Mjk2
M2ZhMWNhMDkzZDhlNmUxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZv
aWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFs
OwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFVSTCkgZmluYWw7CisgICAgdm9p
ZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBj
b25zdCBVUkwmIHJlZGlyZWN0VVJMKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHNlcnZlUGVuZGlu
Z1JlcXVlc3RzKFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSkg
ZmluYWw7CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRQaW5nTG9h
ZChXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGNvbnN0IFdlYkNvcmU6
OkZldGNoT3B0aW9ucyYsIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAg
dm9pZCBkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKIAotICAg
IHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFt
ZUxvYWRlciYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQ
cmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hQ
cmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYpOwogCiAgICAgdm9pZCBzdG9yZURlcml2ZWREYXRhVG9DYWNoZShjb25z
dCBTSEExOjpEaWdlc3QmIGJvZHlIYXNoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFydGl0aW9uLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCmluZGV4
IDAyNDRlNWYyYzg4NjIwNTMxNzY5OWVjZmQxZTFhMWIyM2M3ZmQ5OTguLjY5YjdmYTNiNDE2ZjRl
ZjM5NmFlYWRlNGMxMjA4NGJiMzUyYjExODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlNvY2tldFByb3ZpZGVyIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OlNvY2tldFByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNv
Y2tldFByb3ZpZGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldFBy
b3ZpZGVyKTsgfQotICAgIFJlZjxXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZVNv
Y2tldFN0cmVhbUhhbmRsZShjb25zdCBXZWJDb3JlOjpVUkwmLCBXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFs
UGFydGl0aW9uKSBmaW5hbDsKKyAgICBSZWY8V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlPiBj
cmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBh
cnRpdGlvbikgZmluYWw7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0UHJvdmlkZXIoKSB7IH0KIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uY3BwCmluZGV4IDdhMGI5ZTMxMmViOTlkNDdhYzUyZGVlOWRlNGFhNjhlYWY1NGQ3NDcu
LjFkNWUyMjlhYzIzZGEzMDg3ZTQ2ZDkzNTU2NWFhYTRkNjdiNWEwMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcApAQCAt
NzAsNyArNzAsNyBAQCBSZWY8V2ViU29ja2V0U3RyZWFtPiBXZWJTb2NrZXRTdHJlYW06OmNyZWF0
ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQwogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlNvY2tldFN0cmVhbSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFs
UGFydGl0aW9uKSk7CiB9CiAKLVdlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNs
aWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0
aW9uKQorV2ViU29ja2V0U3RyZWFtOjpXZWJTb2NrZXRTdHJlYW0oY29uc3QgVVJMJiB1cmwsIFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24pCiAgICAgOiBTb2NrZXRTdHJl
YW1IYW5kbGUodXJsLCBjbGllbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCmluZGV4
IDNmZWI2YTYzNWZmZTllNzkyMzFkMzJiNTFjNjNmYjcyODc3ZDk5ZTMuLjM4OWEwYjk4Yjc1OThj
YzY2OGJlOGRiNDVmMTcxMWI4ZmU4Zjc3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTb2NrZXRTdHJlYW0gOiBwdWJsaWMgSVBDOjpNZXNz
YWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpT
b2NrZXRTdHJlYW1IYW5kbGUsIHB1YmxpYyBJZGVudGlmaWVkPFdlYlNvY2tldFN0cmVhbT4gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0U3RyZWFtPiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CisgICAgc3RhdGljIFJl
ZjxXZWJTb2NrZXRTdHJlYW0+IGNyZWF0ZShjb25zdCBVUkwmLCBXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFs
UGFydGl0aW9uKTsKICAgICBzdGF0aWMgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKICAg
ICBzdGF0aWMgV2ViU29ja2V0U3RyZWFtKiBzdHJlYW1XaXRoSWRlbnRpZmllcih1aW50NjRfdCk7
CiAgICAgCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CiAKLSAgICBXZWJTb2NrZXRTdHJlYW0oY29uc3QgV2Vi
Q29yZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CisgICAgV2ViU29ja2V0
U3RyZWFtKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOwogICAgIH5X
ZWJTb2NrZXRTdHJlYW0oKTsKIAogICAgIHNpemVfdCBtX2J1ZmZlcmVkQW1vdW50IHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDAwM2QyN2ExMDE4Nzk4ODlkYWE2NmZhYTBjNmQ5
OTNlOTE2MGUxMGYuLmM2YTUwNjkxNzQwYTVkYjNlNjVmMTk3NTcxYjdiZDQwMDViYjcxYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM4LDggKzM4LDggQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0hUVFBIZWFkZXJNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAj
aW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShVTklYKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmgKaW5kZXggYmNiM2Q3ZmI3NzdkMTMxYzdmMjQ3NmY2NWIxNTJmMDQzOTAxNDZkNy4u
NzRhODRlOTI3Y2Y1YTdkZjYyMjM2Y2Y0YTliZmZiOTU1MTIzOWE4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5oCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJc1BsYXlp
bmdBdWRpbyhib29sKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJSZWRpcmVjdChOZXRzY2FwZVBsdWdp
blN0cmVhbSosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgaW50IHJlZGlyZWN0UmVz
cG9uc2VTdGF0dXMsIHZvaWQqIG5vdGlmaWNhdGlvbkRhdGEpOworICAgIHZvaWQgcmVnaXN0ZXJS
ZWRpcmVjdChOZXRzY2FwZVBsdWdpblN0cmVhbSosIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgaW50
IHJlZGlyZWN0UmVzcG9uc2VTdGF0dXMsIHZvaWQqIG5vdGlmaWNhdGlvbkRhdGEpOwogICAgIHZv
aWQgdXJsUmVkaXJlY3RSZXNwb25zZSh2b2lkKiBub3RpZnlEYXRhLCBib29sIGFsbG93KTsKIAog
ICAgIC8vIE1lbWJlciBmdW5jdGlvbnMgZm9yIGNhbGxpbmcgaW50byB0aGUgcGx1Zy1pbi4KQEAg
LTIwNCwxMyArMjA0LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRp
bmcodWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKICAgICB2b2lkIGZyYW1lRGlkRmFpbCh1
aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYg
cmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJD
b3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCisgICAgdm9pZCBz
dHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVz
dFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwg
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGlt
ZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZFJl
Y2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0
cmVhbUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFt
SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJf
dCBzdHJlYW1MZW5ndGgsIAorICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92
ZXJyaWRlOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggNDA3NDA3OGQ3YThmYjUzOGNm
ZjQ3ZGMxYWRhNGY5ZDIwYjcwZDIyZi4uYmI2YTViMDhjN2NjZTVkZGVkODk5MzYwZjdhYjgzNDBm
MDM5NWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC0zNiwxMCArMzYs
NiBAQAogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBVUkw7Ci19Ci0KIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBOZXRzY2FwZVBsdWdpbjsKQEAgLTU1LDggKzUxLDggQEAgcHVibGlj
OgogICAgIHVpbnQ2NF90IHN0cmVhbUlEKCkgY29uc3QgeyByZXR1cm4gbV9zdHJlYW1JRDsgfQog
ICAgIGNvbnN0IE5QU3RyZWFtKiBucFN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuICZtX25wU3RyZWFt
OyB9CiAKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RSZXNwb25zZVVSTCwgaW50IHJlZGly
ZWN0UmVzcG9uc2VTdGF0dXMpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwKKyAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVkaXJl
Y3RSZXNwb25zZVVSTCwgaW50IHJlZGlyZWN0UmVzcG9uc2VTdGF0dXMpOworICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRU
aW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IGU1OGRlMmM3NjBkZGIxNGMxMmM0Y2JmYmY3
NWNlOTJmNWFiOGUwMWEuLjY4NjJlMzA0ZmVkYjg1Yjc4NjM0NzAwYjlkNmIzNWE2YzNjMjBjZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
LmgKQEAgLTEzNSwxMiArMTM1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBmcmFtZURpZEZpbmlz
aExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKSBmaW5hbDsKICAgICB2b2lkIGZyYW1lRGlkRmFp
bCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lk
IGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYg
cmVzdWx0KSBmaW5hbDsKLSAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIGZpbmFsIHsgfQotICAgIHZvaWQg
c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVy
cywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7CisgICAgdm9pZCBzdHJl
YW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVS
TCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBmaW5hbCB7IH0K
KyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRl
cnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgc3Ry
ZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBp
bnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0
X3Qgc3RyZWFtSUQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJl
YW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90
IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlz
aExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXND
YW5jZWxsZWQpIGZpbmFsOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJD
b3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNvcmU6OlVSTCBtX3NvdXJjZVVSTDsKKyAg
ICBVUkwgbV9zb3VyY2VVUkw7CiAKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKICAg
ICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggZjc5MjcxZDUxYTE0
YTg2ZTczYzMwZGJiYjliYjE2ZTM0YWE5NjZkOS4uYzJjYmEwOTBmYmJkYjJkOWExOTBiMWFmZjhm
ZTM1NWNkNmZjMzI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCkBAIC0xNzIwLDcgKzE3MjAsNyBAQCBib29sIFBERlBsdWdpbjo6
aGFuZGxlc1BhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiB2b2lkIFBERlBsdWdpbjo6Y2xpY2tlZExp
bmsoTlNVUkwgKnVybCkKIHsKICAgICBVUkwgY29yZVVSTCA9IHVybDsKLSAgICBpZiAocHJvdG9j
b2xJc0phdmFTY3JpcHQoY29yZVVSTCkpCisgICAgaWYgKFdURjo6cHJvdG9jb2xJc0phdmFTY3Jp
cHQoY29yZVVSTCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHdlYkZy
YW1lKCktPmNvcmVGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaAppbmRleCA4NzZmNmNlNDhlY2NiNjA2MzM5NDc2YTY2NjFmMjZmNGY5MGFhNDcyLi5hYWJk
NWU1MDUxYmVjMjlmNTUxMTU3MzgwNjFhNmE2MDhlZjIzMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjMsMTYgKzIzLDE1IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbHVnaW5faAotI2RlZmlu
ZSBQbHVnaW5faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25z
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTUzLDE1ICs1MiwxNSBAQCBj
bGFzcyBEZWNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwotICAgIGNsYXNzIEZsb2F0UG9pbnQ7Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwotICAgIGNsYXNzIEludFBvaW50OwotICAgIGNsYXNzIEludFJlY3Q7Ci0gICAgY2xhc3Mg
SW50U2l6ZTsKLSAgICBjbGFzcyBGbG9hdFBvaW50OwotICAgIGNsYXNzIFNjcm9sbGJhcjsKLSAg
ICBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBGbG9h
dFBvaW50OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJ
bnRSZWN0OworY2xhc3MgSW50U2l6ZTsKK2NsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBTY3JvbGxi
YXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIs
NyArODEsNyBAQCBlbnVtIFBsdWdpblR5cGUgewogY2xhc3MgUGx1Z2luIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFBsdWdpbj4gewogcHVibGljOgogICAgIHN0cnVjdCBQYXJhbWV0ZXJz
IHsKLSAgICAgICAgV2ViQ29yZTo6VVJMIHVybDsKKyAgICAgICAgVVJMIHVybDsKICAgICAgICAg
VmVjdG9yPFN0cmluZz4gbmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlczsKICAg
ICAgICAgU3RyaW5nIG1pbWVUeXBlOwpAQCAtMTY3LDEwICsxNjYsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBTdHJpbmcmIHJlc3VsdCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhh
dCBhIHN0cmVhbSBtYXkgc2VuZCBhbiBIVFRQIHJlcXVlc3QuCi0gICAgdmlydHVhbCB2b2lkIHN0
cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJM
JiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9u
c2VTdGF0dXNDb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVz
dCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJl
c3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXNDb2RlKSA9IDA7CiAKICAgICAvLyBUZWxscyB0
aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4K
LSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5n
dGgsIAorICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRl
cnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxz
IHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE4Myw3ICsx
ODIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qg
c3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1
Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25z
ZS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCisgICAg
dmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJl
c3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0
IHRoZSBtYW51YWwgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCkBAIC0zMjMsNSArMzIyLDMgQEAg
cHJpdmF0ZToKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpUb1ZhbHVlVHlw
ZU5hbWUpIFwKIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJLaXQ6OlBsdWdpbiYgcGx1Z2lu
KSB7IHJldHVybiBwbHVnaW4udHlwZSgpID09IFdlYktpdDo6U3BlY2lmaWNQbHVnaW5UeXBlOyB9
IFwKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIFBsdWdpbl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
LmgKaW5kZXggYTVjNmZhMDQzYzM2MjI2OTQxYzhkMjE0N2IyMTIwOGVjMmYyOTQ3NS4uYTFmODA3
ZTFlNTUwNzIzZWZlZWExNzcxMzNiODFkZmY0ZDE3NmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaApAQCAtNDMsNyArNDMs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwogY2xhc3MgSW50
UmVjdDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaAppbmRleCBkYzQyMTFkMDBlZDg5MTBkMzQ3ZDhmMGNhMWI3NTNjNmIyZTZlYTFkLi5lNmFi
M2VkOWIwMzJmZTA0YzAyZGY1YzY4OTJlNDdkNGU2OWQ0YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTg3LDEyICs4NywxMiBAQCBw
cml2YXRlOgogICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJ
RCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBi
b29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3Jp
cHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwg
aW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1
ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYg
cmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJl
YW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9u
c2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVh
bUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQs
IGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKLSAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFt
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1E
aWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWls
KGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNzU4MDhiMWI0NWIwZWNjNTY4MzljM2Jm
ZDEyNWNhZWQ5YWY2M2U4ZS4uNDQ5NWM5OTExMjJkMDg0M2RhYjBjODRkYTYwYmE1YTdjOTdiYTZj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKQEAgLTExNjMsNyArMTE2Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVVSTFJlcXVl
c3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICBSZWY8UGx1Z2luVmlldz4gcHJvdGVjdCgqdGhp
cyk7CiAKICAgICAvLyBGaXJzdCwgY2hlY2sgaWYgdGhpcyBpcyBhIGphdmFzY3JpcHQ6IHVybC4K
LSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQocmVxdWVzdC0+cmVxdWVzdCgpLnVybCgpKSkg
eworICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHJlcXVlc3QtPnJlcXVlc3QoKS51
cmwoKSkpIHsKICAgICAgICAgcGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KHJlcXVlc3QpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTIyOCw3ICsxMjI4LDcgQEAgdm9pZCBQbHVnaW5W
aWV3OjpwZXJmb3JtRnJhbWVMb2FkVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogCiB2
b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdChVUkxSZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIEFTU0VSVChwcm90b2NvbElzSmF2YVNjcmlwdChyZXF1ZXN0LT5yZXF1
ZXN0KCkudXJsKCkpKTsKKyAgICBBU1NFUlQoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChyZXF1
ZXN0LT5yZXF1ZXN0KCkudXJsKCkpKTsKIAogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBtX3Bs
dWdpbkVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Q
cm92aWRlci5jcHAKaW5kZXggNWM1MWM0NWY2NDA5ZGVlZGQ1NWU5M2MwZmQ5ODhiN2M4NzNkODMx
YS4uM2Y3MGIxZTg3YjlhZmU4ZjNmMDY1YTQxOWNjZGI5NTJjZWZmY2U2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJv
dmlkZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgVmVjdG9yPFBsdWdpbkluZm8+IFdlYlBsdWdp
bkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhQYWdlJiBwYWdlLCBzdGQ6Om9wdGlvbmFsPFYKICNl
bmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIH0KIAotVmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbkluZm8o
UGFnZSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCitWZWN0b3I8V2ViQ29yZTo6UGx1
Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQYWdl
JiBwYWdlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmll
cnM7CiAgICAgYXV0byBwbHVnaW5zID0gcGx1Z2luSW5mbyhwYWdlLCBzdXBwb3J0ZWRQbHVnaW5J
ZGVudGlmaWVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCmluZGV4IDFiYmFkNWE3OWZiMTFlYzY4MDc0OTQ3
ZDAwN2MzY2Q1NmU1ODE5ZGQuLjg0NjQyZDdmYzAxMWY4Y2FjZjY0MWJiMWFlZThmMjgyMzkzYzA3
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdp
bkluZm9Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpbkluZm9Qcm92aWRlci5oCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyKCk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4g
cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+JikgZmluYWw7Ci0gICAgVmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2Vi
VmlzaWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsOwogICAg
IHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAyYmZhZWU0NzZlMWY0YmNjY2RiMjY2MGZl
NWQ4ZTY2YmQ2NzRhM2Q3Li5kY2Q2ZGE1ODA2YmIzMzJjMjRmZmVjODUxOGVlNTA5NmNiYWU3Zjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uaApAQCAtNzksMTMgKzc5LDEzIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyPiYpIGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
V2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIHZvaWQgbWF0Y2hSZWdp
c3RyYXRpb24oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCBtYXRjaFJlZ2lzdHJhdGlvbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0
b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRpb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGRpZE1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IG1hdGNoUmVxdWVz
dElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGE+JiYpOwogICAgIHZvaWQgZGlkR2V0UmVnaXN0cmF0aW9ucyh1aW50NjRfdCBtYXRj
aFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGE+JiYpOwotICAgIHZvaWQgd2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50
VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHdo
ZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wT3Jp
Z2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCBjYWxsYmFja0lE
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKTsKIAotICAgIHZvaWQg
Z2V0UmVnaXN0cmF0aW9ucyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4s
IGNvbnN0IFdlYkNvcmU6OlVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdldFJlZ2lzdHJhdGlv
bnNDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblBy
b21pc2UoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBlODczZmZmZDJhOGM3MDFh
ZTg2OTA1Y2U5ZTU3MDRmMWE3YjljOWI0Li5kOTc5NDY5OWM5MWRjNWQ3NTZkYzMzYmRiMjU0NWM1
ZjVkYzA0MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTcyLDcgKzcy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hdGNoQWxsKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25z
JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgY2xhaW0oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBza2lwV2FpdGluZyhXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgRnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsK
LSAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgZmluYWw7CisgICAgdm9pZCBzZXRTY3JpcHRSZXNv
dXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYpIGZpbmFs
OwogCiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWRX
aXRoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCmlu
ZGV4IDFjOWIwZjQ3YzVhODI5ZDkyOTEwN2FjMzZkZjg4MGFmZTRiZTE2M2UuLjE2NGY1NzgyZWRj
MWY4ZTM0Yjc3ZGViYzllZDhiMDI5ZDkwMDg4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLmgKQEAgLTU3LDEwICs1NywxMCBAQCBwdWJsaWM6CiAgICAgVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKICAg
ICB2b2lkIGFkZFVzZXJTY3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdlYkNvcmU6
OlVzZXJTY3JpcHQmJik7Ci0gICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0V2l0aFVSTChJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCByZW1v
dmVVc2VyU2NyaXB0V2l0aFVSTChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiwgY29uc3QgVVJM
Jik7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0cyhJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
Jik7CiAgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
JiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQmJik7Ci0gICAgdm9pZCByZW1vdmVVc2VyU3R5bGVT
aGVldFdpdGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYpOworICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRXaXRoVVJMKEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQmLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0
cyhJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJik7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyQ29u
dGVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDBkMmJlYTRmMmFmYmU4OGM3YmZh
OTMzYjc5ZmJmY2VlZTY1YWUyYmQuLjcwZGQ2ZTk5YzA0ZTkzYzdlMjBmMmI0NWEyNDFiMTMxYmZm
NjExODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMTg5LDcgKzExODksNyBAQCBib29s
IFdlYkNocm9tZUNsaWVudDo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
d3JhcHBlZEtleSwgVmVjdG9yPAogCiAjZW5kaWYKIAotU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwg
Y29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBj
b25zdAorU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJp
bmcsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIFN0cmluZyByZXN1bHQ7CiAgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVuZ2VTdHJpbmcsIHVybCksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZzo6UmVwbHkocmVzdWx0
KSwgbV9wYWdlLnBhZ2VJRCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlMWFlODU3NWYzZTMw
MjdlMzA0ODM2MDhmZjU0ZWUzNTEyMDUwNDUwLi41NDE1N2EwOWE4NGJkOGNmOGQ2MjViZDgwNDA3
YmVjZTI0YWMzN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMTcsNyArMjE3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCkgZmluYWw7CiAg
ICAgYm9vbCBhZGp1c3RMYXllckZsdXNoVGhyb3R0bGluZyhXZWJDb3JlOjpMYXllckZsdXNoVGhy
b3R0bGVTdGF0ZTo6RmxhZ3MpIGZpbmFsOwogCi0gICAgdm9pZCBjb250ZW50UnVsZUxpc3ROb3Rp
ZmljYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgSGFzaFNldDxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiYpIGZpbmFsOworICAgIHZvaWQgY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0
aW9uKGNvbnN0IFVSTCYsIGNvbnN0IEhhc2hTZXQ8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4m
KSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIHNldExhc3RTZXRDdXJzb3JU
b0N1cnJlbnRDdXJzb3IoKSBmaW5hbCB7IH0KQEAgLTMzMCw3ICszMzAsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1
aW50OF90PiYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgc2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5n
JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAg
IFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6
ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJikgY29uc3Qg
ZmluYWw7CiAKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRG
T1JNKE1BQykKICAgICB2b2lkIGhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmlu
ZyYgbnVtYmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuaAppbmRleCBjZWMzMTQyYjE2ZTM1ZDAwMmNmYzhjNDJmNGU3ODFiODJlYmU4
NThjLi41ZDhlN2Q2ZDBmYTUxYTEwNTFkODBjYTE3NjZlZTM3N2ZiY2YzY2IzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG93
bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkb3dubG9h
ZFVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29u
c3QgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGxvb2tVcEluRGljdGlvbmFy
eShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogICAgIGJvb2wgaXNTcGVha2luZygpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggOWY3ZDdmYzUwYjZlYzhhZWU1NmJiMjU5YjczMzQwYzQw
ZDkzNjcyNy4uMWFkNGMzZGUyY2I3ZDM4ZTYyNjJjMTk3YWFiMjRjY2E2ZmVkYTgyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDb25jbHVk
ZUVkaXREcmFnKCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJD
b3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICNlbmRpZgogCiAg
ICAgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggODc5ZGE2OGRjOWIwZTAxMmQ2ODYxMzZkNGZiMzRhYzAy
MzdkNzA3My4uNjk1OGUwN2M4NjQ3ZDA0YmJlOWFkNTQyYjRjMDA5ZDM5ZTIwMThlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC03MzksNyArNzM5LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnMKICAgICB9CiAKICAgICAvLyBGb3Igc3VzcGVuc2lvbiBsb2FkcyB0byBh
Ym91dDpibGFuaywgbm8gbmVlZCB0byBhc2sgdGhlIFN1c3BlbmRlZFBhZ2VQcm94eS4KLSAgICBp
ZiAocmVxdWVzdC51cmwoKSA9PSBibGFua1VSTCgpICYmIHdlYlBhZ2UtPmlzU3VzcGVuZGVkKCkp
IHsKKyAgICBpZiAocmVxdWVzdC51cmwoKSA9PSBXVEY6OmJsYW5rVVJMKCkgJiYgd2ViUGFnZS0+
aXNTdXNwZW5kZWQoKSkgewogICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNzk1LDcgKzE3OTUsNyBAQCBib29sIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjphbGxvd1NjcmlwdChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykKICAgICBy
ZXR1cm4gIXBsdWdpblZpZXcgfHwgIXBsdWdpblZpZXctPnNob3VsZEFsbG93U2NyaXB0aW5nKCk7
CiB9CiAKLWJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2FsQWNj
ZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQorYm9vbCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6c2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAg
ICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDZjMmMzMmQy
ZGE3YzZmMTgyMDMzNzQwYjNiYmY0NDFjMGNjYWE2M2UuLjYwNGQ1NmM3ZmY3YWZjYWVhY2YxMDQw
YmJhN2NkYTMxNGMzNmFiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05Nywx
MyArOTcsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVj
dGlvbihOU0FycmF5ICpkZXRlY3Rpb25SZXN1bHRzKSBmaW5hbDsKICNlbmRpZgogICAgIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VNYWluRG9jdW1lbnQoKSBmaW5hbDsKLSAgICB2b2lkIGRpc3BhdGNo
V2lsbENoYW5nZURvY3VtZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYgY3VycmVudFVybCwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBuZXdVcmwpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2hhbmdl
RG9jdW1lbnQoY29uc3QgVVJMJiBjdXJyZW50VXJsLCBjb25zdCBVUkwmIG5ld1VybCkgZmluYWw7
CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBmaW5hbDsKICAg
ICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZVByb3Zpc2lvbmFsVVJMKCkgZmlu
YWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgZmluYWw7Ci0g
ICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6
VVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSwgV2ViQ29yZTo6TG9ja0Jh
Y2tGb3J3YXJkTGlzdCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSwg
V2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQ
dXNoU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VT
dGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKQEAgLTE1NSw4ICsxNTUsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtJikgY29uc3Qg
ZmluYWw7CiAKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOwotICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYp
IGZpbmFsOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tF
bnRpcmVQYWdlKSBmaW5hbDsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVk
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgZmluYWw7CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JikgZmluYWw7CkBAIC0xODksOSArMTg5LDkgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAg
ICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciYpIGZpbmFsOwogCi0gICAgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRo
RGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgZmluYWw7CisgICAgdm9pZCBzZXRUaXRs
ZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikgZmluYWw7
CiAgICAgCi0gICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsK
KyAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG92
ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3QgZmluYWw7CiAKQEAgLTIxMCwyMCAr
MjEwLDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlcikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVG
cmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93
bmVyRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpIGZpbmFsOwogCi0gICAgUmVmUHRy
PFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBX
ZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29s
IGxvYWRNYW51YWxseSkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRl
UGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVu
dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgZmluYWw7CiAgICAgdm9pZCBy
ZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0
RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZpbmFsOwogICAgIAogI2lmIEVOQUJMRShX
RUJHTCkKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29u
c3QgV2ViQ29yZTo6VVJMJikgY29uc3QgZmluYWw7Ci0gICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9s
aWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBm
aW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29u
c3QgVVJMJikgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29s
dmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpCiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxl
bWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgZmluYWw7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQmLCBjb25zdCBVUkwm
IGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIGZpbmFsOwogICAgIAotICAgIFdlYkNvcmU6Ok9iamVjdENv
bnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpIGZpbmFsOworICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9i
amVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGZpbmFs
OwogICAgIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9p
ZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVy
V29ybGQmKSBmaW5hbDsKQEAgLTI0OSw3ICsyNDksNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBh
bGxvd1NjcmlwdChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgZmluYWw7CiAKLSAgICBib29sIHNo
b3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYp
IGZpbmFsOworICAgIGJvb2wgc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwo
Y29uc3QgVVJMJikgZmluYWw7CiAKICAgICBSZWY8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29u
dGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAppbmRleCBiMGUwN2VmM2Q0MGI2MzU5NmRmMmVhMWJjZjg0NWFkNzYz
ZDAzZDM2Li5mOWIwY2VlZjljZjBiZmFmMzRmNjRkYThiMzE2MDc4NDcxNDJhMGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNjAsOSArNjAsOSBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvU2FtZVNpdGVJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTmFtZXNw
YWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJmcmFtZUxvYWRlci5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9B
dG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2lu
Y2x1ZGUgIlN0cmluZ1V0aWxpdGllcy5oIgpAQCAtMzY0LDcgKzM2NCw3IEBAIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGluCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKIH0K
IAotV2ViQ29yZTo6VVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJv
YXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSkKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCiB7CiAg
ICAgU3RyaW5nIHVybFN0cmluZzsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkOjpSZXBseSh1cmxTdHJp
bmcsIHRpdGxlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMTZhMThh
OTZiYTBmYjBjNzIzOTVjY2NkYmZiMDgyMDcxNWI3ZmRjYi4uZDY5MzM3YjdhNzgwNGJmMTUzMzM2
MDNhY2U3NDA4M2M0OGFlMDcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAt
NDcsMTMgKzQ3LDEzIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5KiBjcmVh
dGVCbG9iUmVnaXN0cnkoKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJh
dGVneQotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICB2b2lk
IHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
V2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOwotICAgIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIG92ZXJyaWRlOwotICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMpIG92ZXJyaWRlOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIGJvb2wgZ2V0UmF3Q29va2ll
cyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVn
eQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAg
ICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJDb3Jl
OjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxGcm9t
UGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmlu
ZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgbG9uZyBjaGFuZ2VDb3VudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgdW5pcXVl
TmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlVSTCB1cmwoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVVJMIHVybChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAogICAgIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCA2M2I0ZjUwYWFhNzNmMmRhZmIzZmUzZmQ2
YmRiNWI0MjBkNzkzM2I5Li5mZmVlMmE2NDZjYzZlODlmMjQzM2YzYTQ3ZmU3ZjY0NzM0N2E4MDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC00OCw4ICs0OCw4IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVySW1hZ2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU3RyaW5nVHJ1bmNhdG9yLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2lt
cG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2ltcG9ydCAiVUlLaXRTUEkuaCIKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFdlYkRyYWdD
bGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBFbGVtZQogICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpIHsKICAgICAgICAgdGl0bGUgPSB1
cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHRpdGxlID0gdXNlclZpc2libGVTdHJpbmcoKE5TVVJMICopdXJsKTsKKyAgICAg
ICAgICAgIHRpdGxlID0gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogICAgIH0KIAogICAg
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGVsZW1lbnQpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVj
bGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1l
CiAgICAgICAgICAgICBmaWxlbmFtZSA9IGRvd25sb2FkRmlsZW5hbWU7CiAgICAgfQogCi0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldFByb21pc2VkRGF0YUZvcklt
YWdlKHBhc3RlYm9hcmROYW1lLCBpbWFnZUhhbmRsZSwgaW1hZ2VTaXplLCBmaWxlbmFtZSwgZXh0
ZW5zaW9uLCB0aXRsZSwgU3RyaW5nKFtbcmVzcG9uc2UgVVJMXSBhYnNvbHV0ZVN0cmluZ10pLCB1
c2VyVmlzaWJsZVN0cmluZygoTlNVUkwgKil1cmwpLCBhcmNoaXZlSGFuZGxlLCBhcmNoaXZlU2l6
ZSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRQcm9taXNl
ZERhdGFGb3JJbWFnZShwYXN0ZWJvYXJkTmFtZSwgaW1hZ2VIYW5kbGUsIGltYWdlU2l6ZSwgZmls
ZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIFN0cmluZyhbW3Jlc3BvbnNlIFVSTF0gYWJzb2x1dGVT
dHJpbmddKSwgV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpLCBhcmNoaXZlSGFuZGxlLCBhcmNo
aXZlU2l6ZSkpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVk
aXRvckNsaWVudE1hYy5tbQppbmRleCAxZjkwYzRhNTc0MGY0MTUwOWQ4ZTg1YjE5ZDRhMDdlODAw
NDNhMjU0Li4zZDFmZjg0OTAzMTExMTE1MWNhMmU4N2M4YzRlNzA3YzJmMTMzOTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRv
ckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQpAQCAtNDAsNyArNDAsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVO
U1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIuaAppbmRleCAwOTIzZTQ2MDk1OWIwZjM0YTk0MmVkOTI0ZjA0NGM1M2Y4NGMzM2U2Li4x
N2ZhOGVjY2E3OGJhOGFjMjc2ODE2NTNhN2QyZTdmZGQ3MGZlMjczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVD
b250cm9sbGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBWaXNp
dGVkTGlua1RhYmxlQ29udHJvbGxlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIAogICAgIC8vIFdl
YkNvcmU6OlZpc2l0ZWRMaW5rU3RvcmUuCi0gICAgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6
OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJh
c2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hh
c2gsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwp
IG92ZXJyaWRlOwogICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSYsIFdlYkNv
cmU6OlNoYXJlZFN0cmluZ0hhc2gpIG92ZXJyaWRlOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
aW5kZXggZWMyZDRlMTk5ZWI3ZmQ0MjU3NGI3ZWM3NzYwNDc5MjU1YWNkMWFmMy4uMjMzMmE1Njlj
ZDA3OGNiYjA1NTk5YzJhZTIyMTk5OTkxZGMzYzg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIHVuc2lnbmVk
IFdlYkZyYW1lOjpwZW5kaW5nVW5sb2FkQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvcmVG
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVy
cygpOwogfQogCi1ib29sIFdlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsKSBjb25zdAorYm9vbCBXZWJGcmFtZTo6YWxsb3dzRm9sbG93aW5nTGluayhj
b25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5o
CmluZGV4IDlkMjIxZTdkMGQwODdmNGI4Yzc4YzFjZGUxNmRlYjM3YzRkNGE0M2EuLjYxN2IxOGYy
NzMzM2UzYjIwYjY4Y2E0MzdjMmUyZDA1MjgxMzEwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtNTMsNyArNTMsNiBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50
UmVjdDsKLWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMDUsNyArMTA0
LDcgQEAgcHVibGljOgogICAgIC8vIFdLQnVuZGxlRnJhbWUgQVBJIGFuZCBTUEkgZnVuY3Rpb25z
CiAgICAgYm9vbCBpc01haW5GcmFtZSgpIGNvbnN0OwogICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7
Ci0gICAgV2ViQ29yZTo6VVJMIHVybCgpIGNvbnN0OworICAgIFVSTCB1cmwoKSBjb25zdDsKICAg
ICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CiAgICAg
U3RyaW5nIGlubmVyVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0OwpA
QCAtMTM5LDExICsxMzgsMTEgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIHBlbmRpbmdV
bmxvYWRDb3VudCgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgYWxsb3dzRm9sbG93aW5nTGluayhj
b25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKKyAgICBib29sIGFsbG93c0ZvbGxvd2luZ0xpbmso
Y29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBTdHJpbmcgcHJvdmlzaW9uYWxVUkwoKSBjb25zdDsK
LSAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJikgY29uc3Q7Ci0gICAgU3RyaW5nIG1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJM
KGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgbWltZVR5
cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICB2b2lkIHNldFRl
eHREaXJlY3Rpb24oY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNWZmMjQ2NTQzZDc5MzFmY2VhOGU4OWM0YTk1ZTAz
ZDAwNTZhZDk5NS4uMTA5NjhjZGY3OTIxNzMyMmUzMWJmNzYxYzhjNGU2MGFiYzQ2MjRiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzMDQs
NyArMTMwNCw3IEBAIHZvaWQgV2ViUGFnZTo6c2VuZENsb3NlKCkKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkNsb3NlUGFnZShmYWxzZSkpOwogfQogCi12b2lkIFdlYlBhZ2U6Omxv
YWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCYmIHVybCwgdWludDY0X3QgZnJhbWVJRCkKK3ZvaWQg
V2ViUGFnZTo6bG9hZFVSTEluRnJhbWUoVVJMJiYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQogewog
ICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZy
YW1lSUQpOwogICAgIGlmICghZnJhbWUpCkBAIC0xMzcwLDcgKzEzNzAsNyBAQCB2b2lkIFdlYlBh
Z2U6OmxvYWREYXRhKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiAgICAgcGxhdGZv
cm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCiAgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEu
c2l6ZSgpKTsKLSAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcu
aXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVS
TFN0cmluZyk7CisgICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5n
LmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMu
YmFzZVVSTFN0cmluZyk7CiAgICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRp
b25JRCwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9h
ZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMu
dXNlckRhdGEpOwogfQogCkBAIC0xMzc4LDcgKzEzNzgsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRB
bHRlcm5hdGVIVE1MKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKIHsKICAg
ICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKLSAg
ICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8g
YmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyk7Cisg
ICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/
IFdURjo6YmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmlu
Zyk7CiAgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVV
UkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVu
cmVhY2hhYmxlVVJMU3RyaW5nKTsKICAgICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwgPSBs
b2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZy5pc0VtcHR5KCkgPyBV
UkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxT
dHJpbmcpOwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCkpLCBs
b2FkUGFyYW1ldGVycy5kYXRhLnNpemUoKSk7CkBAIC0xNjk4LDcgKzE2OTgsNyBAQCBTdHJpbmcg
V2ViUGFnZTo6ZHVtcEhpc3RvcnlGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQog
ICAgIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBpbnQgYmVnaW4gPSAtbGlzdC5i
YWNrQ291bnQoKTsKLSAgICBpZiAobGlzdC5pdGVtQXRJbmRleChiZWdpbiktPnVybCgpID09IGJs
YW5rVVJMKCkpCisgICAgaWYgKGxpc3QuaXRlbUF0SW5kZXgoYmVnaW4pLT51cmwoKSA9PSBXVEY6
OmJsYW5rVVJMKCkpCiAgICAgICAgICsrYmVnaW47CiAgICAgZm9yIChpbnQgaSA9IGJlZ2luOyBp
IDw9IHN0YXRpY19jYXN0PGludD4obGlzdC5mb3J3YXJkQ291bnQoKSk7ICsraSkKICAgICAgICAg
ZHVtcEhpc3RvcnlJdGVtKCpsaXN0Lml0ZW1BdEluZGV4KGkpLCA4LCAhaSwgYnVpbGRlciwgZGly
ZWN0b3J5KTsKQEAgLTM1NzcsNyArMzU3Nyw3IEBAIHZvaWQgV2ViUGFnZTo6YWRkQ29uc29sZU1l
c3NhZ2UodWludDY0X3QgZnJhbWVJRCwgTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBNCiAg
ICAgICAgIGZyYW1lLT5hZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2
ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VuZENTUFZpb2xh
dGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlcG9ydFVS
TCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcG9ydERhdGEpCit2b2lkIFdlYlBhZ2U6OnNl
bmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVVJMJiByZXBvcnRV
UkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXBvcnREYXRhKQogewogICAgIGF1dG8gcmVw
b3J0ID0gcmVwb3J0RGF0YS50YWtlRGF0YSgpOwogICAgIGlmICghcmVwb3J0KQpAQCAtNjA4OSwx
NCArNjA4OSwxNCBAQCB2b2lkIFdlYlBhZ2U6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5n
ZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogdm9pZCBXZWJQYWdlOjphZGRVc2VyU2NyaXB0
KFN0cmluZyYmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmpl
Y3RlZEZyYW1lcywgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGlt
ZSkKIHsKLSAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJj
ZSksIFVSTChXZWJDb3JlOjpibGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0
cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKKyAgICBXZWJDb3JlOjpV
c2VyU2NyaXB0IHVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFVSTChXVEY6OmJsYW5rVVJM
KCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3Rpb25UaW1lLCBp
bmplY3RlZEZyYW1lcyB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJT
Y3JpcHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgV1RGTW92ZSh1
c2VyU2NyaXB0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0
ZWRGcmFtZXMpCiB7Ci0gICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0eWxlU2hlZXR7
IHNvdXJjZSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0
cmluZz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9OworICAgIFdlYkNv
cmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0IHtzb3VyY2UsIFdURjo6YmxhbmtVUkwo
KSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVz
ZXJTdHlsZVVzZXJMZXZlbCB9OwogCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVz
ZXJTdHlsZVNoZWV0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIFdU
Rk1vdmUodXNlclN0eWxlU2hlZXQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCBiMzJmYzk4ODBkNjI2ODUwODIwNTY2YzE2MDJlNjk0MjM4MDQ2
MDkyLi4wNzRhMDQxZmE2NTg4MzI5NDczMGQ3YTU4N2UyZTQyZTMzZjI4MWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNjQsNyArMTY0LDYgQEAg
Y2xhc3MgU2VsZWN0aW9uUmVjdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1
dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKLWNsYXNzIFVSTDsKIGNsYXNzIFZp
c2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4X3Q7CkBAIC0z
MjMsNyArMzIyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKHVpbnQ2NF90IGZyYW1lSUQsIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QgcmVxdWVzdElEID0gMCk7Ci0gICAgdm9pZCBzZW5kQ1NQVmlvbGF0
aW9uUmVwb3J0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVwb3J0VVJM
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYpOworICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJl
cG9ydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmKTsKICAgICB2b2lkIGVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZl
bnQ6OkluaXQmJik7CiAKICAgICAvLyAtLSBDYWxsZWQgYnkgdGhlIERyYXdpbmdBcmVhLgpAQCAt
MzQxLDkgKzM0MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250
ZW50KGNvbnN0IFdlYkZyYW1lJik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKik7
CiAgICAgdm9pZCBzaG93KCk7Ci0gICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpV
UkwmKSBjb25zdDsKLSAgICBTdHJpbmcgdXNlckFnZW50KFdlYkZyYW1lKiwgY29uc3QgV2ViQ29y
ZTo6VVJMJikgY29uc3Q7Ci0gICAgU3RyaW5nIHBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0OworICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3Q7
CisgICAgU3RyaW5nIHVzZXJBZ2VudChXZWJGcmFtZSosIGNvbnN0IFVSTCYpIGNvbnN0OworICAg
IFN0cmluZyBwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKICAgICBXZWJDb3Jl
OjpLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9kZSgpOwogCiAgICAgdm9pZCBkaWRJbnNlcnRN
ZW51RWxlbWVudChXZWJDb3JlOjpIVE1MTWVudUVsZW1lbnQmKTsKQEAgLTQyOCw4ICs0MjcsOCBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpV
UkwmKTsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJik7CisgICAg
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFt
ZSosIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgCiAgICAgZW51bSBjbGFzcyBJbmNsdWRlUG9z
dExheW91dERhdGFIaW50IHsgTm8sIFllcyB9OwpAQCAtNzA2LDcgKzcwNSw3IEBAIHB1YmxpYzoK
ICAgICBXZWJDb250ZXh0TWVudSogY29udGV4dE1lbnVBdFBvaW50SW5XaW5kb3coY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKTsKICNlbmRpZgogCi0gICAgYm9vbCBoYXNMb2NhbERhdGFGb3JVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgYm9vbCBoYXNMb2NhbERhdGFGb3JVUkwoY29uc3Qg
VVJMJik7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOwogCkBAIC05NjYsNyArOTY1LDcgQEAgcHVibGljOgogICAgIE5T
RGljdGlvbmFyeSAqZGF0YURldGVjdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFE
ZXRlY3Rpb25Db250ZXh0LmdldCgpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2F2ZVBERlRvRmls
ZUluRG93bmxvYWRzRm9sZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxvbmcgc2l6ZSk7CisgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIo
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIHZvaWQgc2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhO
YXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCk7CkBAIC0xMTkyLDcgKzExOTEsNyBA
QCBwcml2YXRlOgogCiAgICAgU3RyaW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAg
ICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5j
b2RpbmdOYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwm
IGJhc2VVUkwsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmKTsKIAogICAg
IC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKCk7CkBAIC0xMjM2LDcgKzEyMzUsNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBib29sIHNjcm9sbChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6
U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAgICAgc3RhdGlj
IGJvb2wgbG9naWNhbFNjcm9sbChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsTG9naWNh
bERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwogCi0gICAgdm9pZCBsb2Fk
VVJMSW5GcmFtZShXZWJDb3JlOjpVUkwmJiwgdWludDY0X3QgZnJhbWVJRCk7CisgICAgdm9pZCBs
b2FkVVJMSW5GcmFtZShVUkwmJiwgdWludDY0X3QgZnJhbWVJRCk7CiAKICAgICBlbnVtIGNsYXNz
IFdhc1Jlc3RvcmVkQnlBUElSZXF1ZXN0IHsgTm8sIFllcyB9OwogICAgIHZvaWQgcmVzdG9yZVNl
c3Npb25JbnRlcm5hbChjb25zdCBWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiYsIFdh
c1Jlc3RvcmVkQnlBUElSZXF1ZXN0LCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6T3ZlcndyaXRl
RXhpc3RpbmdJdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDdmMzAxNTQ4NTg1ZGU4ZjMwZDA1YTU1YzAyMjc4
ZTBiZjAyN2I3OTYuLjQzMjM2NTU5YWYwZmM3YzliOTRlMjE5ZjJlZTBkYzAwZTc3NWQzZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgpAQCAtMjgsNyArMjgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBTZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCiAKICAg
ICBBZGRDb25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlELCBlbnVtOnVpbnQ4X3QgSlNDOjpN
ZXNzYWdlU291cmNlIG1lc3NhZ2VTb3VyY2UsIGVudW06dWludDhfdCBKU0M6Ok1lc3NhZ2VMZXZl
bCBtZXNzYWdlTGV2ZWwsIFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAg
U2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpVUkwgcmVw
b3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCisgICAgU2VuZENTUFZp
b2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCiAgICAgRW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0
aW9uRXZlbnQodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRp
b25FdmVudDo6SW5pdCBldmVudEluaXQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE0OCw3
ICsxNDgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHb1Rv
QmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYkNvcmU6OkJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQsIGVudW06dWludDhfdCBX
ZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkVHlwZSwgZW51bTpib29sIFdlYkNvcmU6
OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQp
CiAgICAgVHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAotICAgIExvYWRVUkxJbkZyYW1lKFdl
YkNvcmU6OlVSTCB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCisgICAgTG9hZFVSTEluRnJhbWUoVVJM
IHVybCwgdWludDY0X3QgZnJhbWVJRCkKICAgICBMb2FkUmVxdWVzdChzdHJ1Y3QgV2ViS2l0OjpM
b2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKICAgICBMb2FkRGF0YShzdHJ1Y3QgV2ViS2l0
OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKICAgICBMb2FkQWx0ZXJuYXRlSFRNTChz
dHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVy
YXRpb25HdGsuY3BwCmluZGV4IGU1OGU5ZjFkZDdiMDc3ZjU2MWNhNTFjOTJmZWY3MTViMGFlMTQy
OWQuLjczNTY2YTEzMzg1ZGUzYWFjNjQ2ZmI5NDk2YmRkYWZjYjVhZjQ2YjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50
T3BlcmF0aW9uR3RrLmNwcApAQCAtNDAsOSArNDAsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1Db250ZXh0Q2Fpcm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaW50Q29udGV4dC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dV
bmlxdWVQdHIuaD4KIApAQCAtNDU0LDEzICs0NTQsMTMgQEAgYm9vbCBXZWJQcmludE9wZXJhdGlv
bkd0azo6Y3VycmVudFBhZ2VJc0xhc3RQYWdlT2ZTaGVldCgpIGNvbnN0CiAgICAgcmV0dXJuICht
X251bWJlclVwIDwgMiB8fCAhKChtX3BhZ2VQb3NpdGlvbiArIDEpICUgbV9udW1iZXJVcCkgfHwg
bV9wYWdlUG9zaXRpb24gPT0gbV9udW1iZXJPZlBhZ2VzVG9QcmludCAtIDEpOwogfQogCi1XZWJD
b3JlOjpVUkwgV2ViUHJpbnRPcGVyYXRpb25HdGs6OmZyYW1lVVJMKCkgY29uc3QKK1VSTCBXZWJQ
cmludE9wZXJhdGlvbkd0azo6ZnJhbWVVUkwoKSBjb25zdAogewogICAgIGlmICghbV9wcmludENv
bnRleHQpCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVS
TCgpOwogCiAgICAgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9w
cmludENvbnRleHQtPmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7Ci0gICAgcmV0
dXJuIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogV2ViQ29yZTo6VVJM
KCk7CisgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDog
VVJMKCk7CiB9CiAKIHZvaWQgV2ViUHJpbnRPcGVyYXRpb25HdGs6OnJvdGF0ZVBhZ2VJZk5lZWRl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UHJpbnRPcGVyYXRpb25HdGsuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oCmluZGV4IGIyNjJkZjM0YzgwNWZhYWNkZjIwMDc4MWRi
N2FhZmUwNDJlN2Y1MjQuLmI3ZTE0NDQyOTRiMjUxMjdkNDUyZjEyYTQ4YjJmYWU4OTU4MjBmOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmlu
dE9wZXJhdGlvbkd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oCkBAIC00MCw3ICs0MCw2IEBAIHR5cGVkZWYgc3RydWN0
IF9HdGtQYWdlUmFuZ2UgR3RrUGFnZVJhbmdlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UHJpbnRDb250ZXh0OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFVSTDsKIH07CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtOTcsNyArOTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBw
cmludFBhZ2VzRG9uZSgpOwogICAgIHZvaWQgcHJpbnREb25lKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIHNlbmRQcmludEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKLSAgICBXZWJDb3JlOjpVUkwgZnJhbWVVUkwoKSBjb25zdDsKKyAgICBV
UkwgZnJhbWVVUkwoKSBjb25zdDsKIAogICAgIFdlYlBhZ2UqIG1fd2ViUGFnZTsKICAgICBHUmVm
UHRyPEd0a1ByaW50U2V0dGluZ3M+IG1fcHJpbnRTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA3MmY0ZGMzYTFhNmZmZDM2OTVjYzEwZGIzYzYwNmQ5
NTMyY2YyNWVlLi44MzIyMjc0MGUyNTNkZmJjZWQ2YjM0NzRhMDczMWQ2YjNmYmEwYjRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMTQsMTIgKzExNCwxMiBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRl
IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5j
bHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgIU9TKFdJTkRPV1MpCkBAIC0x
NDk5LDcgKzE0OTksNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnByb2Nlc3NEaWRSZXN1bWUoKQogI2Vu
ZGlmCiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6c2VuZFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgV2ViUHJvY2Vzczo6c2VuZFByZXdhcm1JbmZvcm1hdGlv
bihjb25zdCBVUkwmIHVybCkKIHsKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gdG9SZWdp
c3RyYWJsZURvbWFpbih1cmwpOwogICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlN2EzMjY1MmQ3Y2YxZDQw
ZDk3Zjg1YzBlMjIwYTcyOTQwNDJiNTg5Li5mYjc4ZTYzYTI3NTZlMjJiNWIzOWFlZTFjNGFmNWU5
NWJiZmM2Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTIwMiw3
ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCk7CiAg
ICAgdm9pZCBwcm9jZXNzRGlkUmVzdW1lKCk7CiAKLSAgICB2b2lkIHNlbmRQcmV3YXJtSW5mb3Jt
YXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBzZW5kUHJld2FybUluZm9ybWF0
aW9uKGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCBpc0pJVEVuYWJsZWQoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IDVlZDdmMTBjMzFiNTk4YTVkZjIzYWNkMTZkYzk0
NjAwNmFmNGM0YzIuLmJkYWU3NDZkNWQ0OGU1ODBkMzNiYTllY2RhMzYzNjE1ZjkzYjlmNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQpAQCAtNjMsNyArNjMsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Njcm9sbGVySW1wRGV0YWls
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8YWxnb3JpdGhtPgogI2ltcG9ydCA8ZGlzcGF0Y2gv
ZGlzcGF0Y2guaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpAQCAtNzQsNiArNzMsNyBAQAog
I2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJLmg+CiAjaW1wb3J0IDxzdGRpby5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL05TVVJMRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2lt
cG9ydCAiV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5oIgpAQCAtNDk0LDcgKzQ5NCw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlUGFnZXNPcmln
aW5zKGNvbnN0IEhhc2hNYXA8dWludDY0X3QsCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBpZiAoTlNVUkwgKm9yaWdpbkFzVVJMID0gb3JpZ2luKCpwYWdlKSkKLSAgICAgICAgICAg
IFthY3RpdmVPcmlnaW5zIGFkZE9iamVjdDp1c2VyVmlzaWJsZVN0cmluZyhvcmlnaW5Bc1VSTCld
OworICAgICAgICAgICAgW2FjdGl2ZU9yaWdpbnMgYWRkT2JqZWN0OldURjo6dXNlclZpc2libGVT
dHJpbmcob3JpZ2luQXNVUkwpXTsKICAgICB9CiAKICAgICByZXR1cm4gYWN0aXZlT3JpZ2luczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCA5OTE4MTUwNjQ2NDFlNTA4Y2RiMjdk
NDNmNTUyNmU5NDMwYTlhMGY4Li5mN2FiYTQ4OWFhMjRkMjM2M2NlZTkyMzIxMzUzZTliN2U3OTc1
NWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJl
c291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0zNSw5ICszNSw5IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VicmVzb3VyY2VMb2FkZXIu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA4YTU2YTllNzk5ZmExZmY4MjQ5ZjAxNDBjYWQz
ODFhNWUyYWNhODNiLi5lZGY2NTFmYTZkZmJjYTMxOGE4ZjZmMjA3ZjRiNjQ5YWRlMWJmMTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lk
IHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sKSBmaW5hbDsK
LSAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpIGZpbmFsOworICAgIHZvaWQg
Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKiwgY29u
c3QgVVJMJiByZWRpcmVjdFVSTCkgZmluYWw7CiAgICAgCiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdS
ZXF1ZXN0cyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eTo6VmVyeUxvdykgZmluYWw7CiAgICAgdm9pZCBz
dXNwZW5kUGVuZGluZ1JlcXVlc3RzKCkgZmluYWw7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc3RhcnRQaW5nTG9hZChXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBjb25zdCBXZWJDb3Jl
OjpGZXRjaE9wdGlvbnMmLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogCi0g
ICAgdm9pZCBwcmVjb25uZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6OkZy
YW1lTG9hZGVyJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKIAogICAgIHZvaWQgc3RvcmVE
ZXJpdmVkRGF0YVRvQ2FjaGUoY29uc3QgU0hBMTo6RGlnZXN0JiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWwgeyB9CiAKQEAgLTExOCw3
ICsxMTgsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5kT25seQogICAgIH07CiAgICAgCi0gICAg
SG9zdEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENyZWF0ZUhv
c3RQb2xpY3kgPSBGaW5kT25seSk7CisgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNv
bnN0IFVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CiAgICAgdm9pZCBzZXJ2ZVBl
bmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlv
cml0eSk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBT
dHJpbmdIYXNoPiBIb3N0TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUF0dHIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQpp
bmRleCBlOGY3NmYxNjRlMDY1ZjgwMjhlOWE2ZjY3ZWEzNWQ1MmViN2VjODc1Li4yMTZiYTY1NDgw
NzFjNjZkMWE1YTYwNGQ5Y2RhZGMzYWNiMjk5ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQXR0ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQXR0ci5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkF0dHIqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQmxvYi5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCmluZGV4IDRlNmVkYzU2YTYzZmY0Y2E3
Y2Y0YjQ2Y2UxYzc3MjQ4MzkxMTNjNmUuLmRlNTkxM2NhMTg2MDBjOGVkM2M5NTJiMWE5NjlkN2Vl
ZWRiNzUyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9i
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01CbG9iLm1tCkBAIC0zMSwx
MCArMzEsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01DU1NDaGFyc2V0UnVsZS5tbQppbmRleCBkMWI1ZWFiZDc1ZDZm
YWI2YzdjY2M3ZDY2YWZmMjNkNGMyMTIwMWQ0Li43YmZmZmRjMjFkYmEwODk3ZjY2ZmU1YWUxNDU1
M2M1ZWM1MzdiZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Q1NTQ2hhcnNldFJ1bGUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNT
U0NoYXJzZXRSdWxlLm1tCkBAIC0zMCw5ICszMCw5IEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5k
bGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiBAaW1wbGVtZW50YXRpb24gRE9NQ1NTQ2hhcnNldFJ1bGUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU0ltcG9ydFJ1bGUu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQppbmRl
eCA4ODA0ZjI0NTAwYmQ2ZThlZjdjMmI2MGU0NzA2N2U2YzkyZDNlMDAzLi5jNTE3OGFlMjAxODRj
NjJmYjNkYTBhZGZlNjg3ZTQzZDRhZTUyYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQ1NTSW1wb3J0UnVsZS5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYUxpc3QuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkNTU0ltcG9ydFJ1bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1
bGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQ1NTTWVkaWFSdWxlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNT
U01lZGlhUnVsZS5tbQppbmRleCAxNTlhOWE0OTQ5ODdiZDU0NTE5Y2JkNjJlNDMwOTAxYTdkMGM4
YzllLi5lYjVkY2YyMmY3Y2ZiOGM2MTY3OTk3OWE1YTMyNDgyNTNmOWY5ZTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0KQEAgLTM1LDkgKzM1
LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TWVkaWFMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUg
SU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NNZWRpYVJ1bGUqPihyZWludGVycHJldF9jYXN0
PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUGFnZVJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQ1NTUGFnZVJ1bGUubW0KaW5kZXggZjM2MjIzMWNlNWJjZmQ2ZGVhNjVmMTFk
MzE0YzQxYmRjOWY5MzQyOS4uYjZiYzI3ODA5OWY4MjQ3NzE3YjJmOWI3MjkxYmY5M2JmZTgxNTE0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1BhZ2VSdWxl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NQYWdlUnVsZS5tbQpA
QCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1BhZ2VSdWxlKj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDU1NSdWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmlu
ZGV4IDM1YTg5MzQ5YzMyMTI4YmY5MzcyNWI2NmZhYzQ2NjY0ODhkNmUwNTguLjA1NWVhOWVjNGFi
NWE1MTIzOTc2OGMzZjc3YjllMDM2OTllNzk3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0KQEAgLTM3LDkgKzM3LDkgQEAK
ICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZSo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RGVwcmVjYXRlZENTU09NVmFsdWUqPihfaW50ZXJuYWwpKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTUnVsZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NSdWxlLm1tCmluZGV4IGQ0OGNiM2Y5
MjI5ZGRiMmJkNjNkZDk5ZjA5MWZkNWJjNWM2NTJkMGYuLmExMmIwZThjOGYwNzc3MDE2OGU5OGNi
N2FhNzU1MWQ3YWZkNWIyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01DU1NSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NS
dWxlLm1tCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZp
bmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNTU1J1bGUqPihfaW50ZXJuYWwpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xh
cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFy
YXRpb24ubW0KaW5kZXggMmQ5ZmVmZmZjMTU0MDBkOTg3MzMxMzNjOGEzNzRmMWQ2ZTkzOGVmOC4u
YjNiMDdmMzM5ODY4NmRlZGJkMGRkMmM5MjQ2NDE5YTFlY2ZkNzY2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0KQEAg
LTM2LDEwICszNiwxMCBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQg
PFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0
cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbio+KF9pbnRlcm5hbCkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVs
ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NTdHlsZVJ1bGUubW0KaW5k
ZXggOGE0Y2ZmMzBjZGQ1NTMxMmY3ZGQ0MjdlNTEyMWEwNjYxZDEwYjkwOS4uMmFlMTkxM2IyZTQz
ZjgzMTJmZWI0MDg0MmFhOGY5N2UwZmI0ZjY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUNTU1N0eWxlUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NQ1NTU3R5bGVSdWxlLm1tCkBAIC0zNCw5ICszNCw5IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6Q1NTU3R5bGVSdWxlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpD
U1NSdWxlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NQ1NTU3R5bGVTaGVldC5tbQppbmRleCA4YzI0MDYwMTZjMGVhNWNlYmFlZWFkZDZkZmQ5OTU5
NzE1MTA4OGFkLi4yNjlmMDI0OGM3YzYwMTQwZTQ3NGI4ODQwN2IwMGEzODAwNjVmZmI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQpAQCAt
MzYsOSArMzYsOSBAQAogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdl
YkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFBy
aXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAog
I2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqPihyZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6OlN0eWxlU2hlZXQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NQ1NTVmFsdWUubW0KaW5kZXggMGM2ZTA3NGQ4ZjNkMTUwNTAw
MDkxYjExMWRkOTk4N2M4OGFhNzM4Zi4uYjc3ZDRiODcyMDY1OTYzMDhjNzMyZjhhZjM0YzE2MTQ4
OWY2MjFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNTU1Zh
bHVlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbQpA
QCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNF
eHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01WYWx1ZSo+KF9pbnRlcm5h
bCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNoYXJhY3Rl
ckRhdGEubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5t
bQppbmRleCA4YzNiNGQ0YTU4MmZlOTQ3YTBjMzhkMDY0ZjlhMTI5MWI1OTljOWMzLi5iMzBlOTU3
OTQwZWQ5NjY1NzViYzYzNDk0NGU3YTkxNjBlNTI5MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NQ2hhcmFjdGVyRGF0YS5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAj
aW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9DaGFyYWN0ZXJEYXRhLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDaGFy
YWN0ZXJEYXRhKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUNvdW50ZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291bnRlci5tbQppbmRleCAyZDFlNTY1
N2VhMmQ2NjhkMjAwNWI1M2M0ODU5ZWRkOWQ1MmY4YmY4Li4zMDg3MDFlNWI0ODE4Njc0NzMyM2Mx
OGRlZWQ0ZTQzMGFkYWMyYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NQ291bnRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NQ291
bnRlci5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5o
IgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpEZXByZWNhdGVkQ1NTT01Db3VudGVy
Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnQu
bW0KaW5kZXggYWQ1NTg1MjlhYmI3ODNhODFkM2Y5ODMyZmM0M2Y5YWJjM2EyM2E1MC4uM2IwNGQz
OTMzZDI0YWFlMzMzNWJkODdiODEwNjlmNGNjZTdiZDYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtODIsMTIgKzgyLDEyIEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1RleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQg
PFdlYkNvcmUvVHJlZVdhbGtlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9YUGF0
aEV4cHJlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvWFBhdGhOU1Jlc29sdmVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1hQYXRoUmVzdWx0Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1
bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Eb2N1bWVudEZyYWdtZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0K
aW5kZXggOTZkMDMyOWI0OWFlNjE1YjcxZWZhYTRjMDViMjY5MTFkZTg1YzE3ZC4uMmVlMmNmODRj
NjM5NDhjMDAwMmY4YTY1ZDhjZDY2OWE3Njc5ZDI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50RnJhZ21lbnQubW0KQEAgLTM3LDkgKzM3LDkgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVM
aXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTURvY3VtZW50VHlwZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01Eb2N1bWVudFR5cGUubW0KaW5kZXggZTIwMTE3NmE5MmRjNjY2NDBjZDUwMWVmN2Vj
MjBhY2Q4NDY0YWY5Mi4uN2IyZTAzZWM1MjFjZGYwNzQwMzI2NTkwMGU2ZDNjYjA2MzQyYTNkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTURvY3VtZW50VHlwZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRG9jdW1lbnRUeXBlLm1tCkBA
IC0zMiw5ICszMiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL05hbWVkTm9kZU1hcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRUeXBlKj4ocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUV2ZW50Lm1tCmluZGV4IDYwY2RiNmU1N2Y1YmUxNzYwZjRkOTE1ZDM4
YWU0YTMzNTU3NTE3Y2QuLjJkNjE1NGIxZTA2NDZkOGEzMWMwYzAzMGVjZTYzMzNmYjUxNmMwODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01FdmVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NRXZlbnQubW0KQEAgLTMzLDEwICszMywx
MCBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9O
b2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdl
YkNvcmU6OkV2ZW50Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NRmlsZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01G
aWxlLm1tCmluZGV4IGVkYTg3ZmZmMWM0ZTRiNWE5YTg3YzZkYjhiNDAyYWM0YjI0YjI4N2YuLmZk
YzU0MTNiOWE1ZjQ2YjllZGE1ZmMwYTdiMzZhZTVmODVkM2RiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01GaWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01GaWxlLm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0ZpbGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZp
bGUqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkJsb2IqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFuY2hvckVsZW1lbnQubW0K
aW5kZXggNDQ2MGYyN2M2ZGZkZDMwNjU2MGMxMjRkOWQ3OTk0MWM4ZDVjODUyZC4uYzZjMDFiZDdh
Njk2MTc3MGNlOGZmMThlNTc2YzEwOTg1ZWZmNDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBbmNob3JFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQW5jaG9yRWxlbWVudC5tbQpAQCAtMzQsOSArMzQsOSBA
QAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVj
U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxBcHBsZXRFbGVtZW50Lm1tCmluZGV4IGE4NDU0MmRhNDdkNjQ0
ZGMzNjJlOGZkMWRmYjUyZDA2YjIxM2E2NGEuLjI2YjhkM2M1OGJlYmQyZDdkNWRiMmU4ZGNjY2Uy
NjlhMGY5NWJjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQXBwbGV0RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEFwcGxldEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
SFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpIVE1MQXBwbGV0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQXJlYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEFy
ZWFFbGVtZW50Lm1tCmluZGV4IGM0YWIyMzIwMjc1N2VmYzIyNmQzNDdlNTBhMjEwZGQ0M2UxMjA1
MmUuLmI5YWNhODk2YTRjMDkxNzY4Y2ZhMDMxOGI2YzZiN2EwN2VkNTc1NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQXJlYUVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxBcmVhRWxlbWVudC5tbQpAQCAtMzQs
OSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQlJFbGVtZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCUkVsZW1lbnQubW0KaW5kZXggY2Y1YjNlMDg4NDEzOWM5
OGU0Yjc4Y2IzNzhkZjFhNjdjNDM1OThiOC4uNDMyNDY0YjhkZDJkNTYyNjMxMDE4OGM3MTgwNzI4
NTkxNjMzOTM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxCUkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxC
UkVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MQlJF
bGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQubW0K
aW5kZXggNTE0YjcwOTFiNDNkMTIyNzcyZDA3MGM3N2U2YTExZGY0ODAwNmMxMy4uYWZlM2I2OTkz
YjYzODZkNzM5ZTE0Y2ZjYTNiN2M5ZGY2OTQxZTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEJhc2VFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTEJhc2VGb250RWxlbWVudC5tbQppbmRleCBhOTljMGI2MjM4MWYyNTFj
MjFlODA3Njg1ZmI5MzUwMzA2NzExYTRkLi4yNjMzYzgwZjcyNGQ4Nzk0NGRlYmY5MDhmMDM5MmZl
N2JmY2RhNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEJhc2VGb250RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEJhc2VGb250RWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MVW5rbm93bkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkhUTUxVbmtub3duRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MQm9keUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEJvZHlFbGVtZW50Lm1tCmluZGV4IDY5NTI5M2I0MjQ2M2ZiZTY2Mjg3YjA2NDc2
NGVmNjlkZmU1OGY3MDQuLmRmNjEyMDg2NmM2YmM2MmM0MTIyMzM5N2ZmMWNiMzBjNmE2ZjQ0NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQm9keUVsZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCb2R5RWxlbWVu
dC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVu
dCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQnV0dG9uRWxlbWVudC5tbQpp
bmRleCA5OGFhMjdjNTYyNzVjNTQzY2Q0ZDllMmZiYjI3YzE4ZGI5ZDgyYWI1Li43Yzc1OTVkMzE0
ODMwMzJjZmFlYmZlNDAxYzE3MzIxY2I5ZGJkNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCdXR0b25FbGVtZW50Lm1tCkBAIC0zNiw5ICszNiw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2Rl
TGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0
PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTENhbnZhc0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTENhbnZhc0VsZW1lbnQubW0KaW5kZXggMGZkNjBhNmRhOGFhYWFi
ZTc0ZDJiZDJiZDk0NzliODE0YmQ5NjM1MS4uMThiMzEzZWI0NGFjMDM2YjAzN2Y1OGE5NDIzNTc2
OWJlZGQxMDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxDYW52YXNFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQ2FudmFzRWxlbWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9K
U0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHJpbmdBZGFwdG9ycy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUq
PihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTENvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TENvbGxlY3Rpb24ubW0KaW5kZXggZTM0NDA5OGNiNDhlMmQzOTBmNTQwYmMxZDUwZTY5NzNjYzQz
ZDdmMS4uYWFjMTg1NDlkM2Q4YjQ3ODEzYmMxNTRiMWNhNWM0MTE3M2I1MzZkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxDb2xsZWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQ29sbGVjdGlvbi5tbQpAQCAtMzUs
MTAgKzM1LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Tm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6SFRNTENvbGxlY3Rpb24qPihfaW50ZXJuYWwpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRGl2RWxlbWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRGl2RWxlbWVudC5tbQppbmRleCAyOTM2YWZhYzAy
NTMxODU4ZDFmYjhhOTRkMjcyZmZmOTVjZTk0OWRkLi45Y2IwM2EwMTE5NmI3ZjQ0MTU0NTI3YTdj
NWMyNTViN2QzYWU5Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTERpdkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxEaXZFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
SFRNTERpdkVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJu
YWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERv
Y3VtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxEb2N1bWVudC5t
bQppbmRleCAwMzc1YTNjZjRmZDY3MWY2MzM2ZmJiMzdjOWJiN2M5YWVmMDE3NjNkLi44OGQxNDJl
YWRhODQxMTM3MDUwMTQ4ZmNlNGVjODc1ZjAyMjdiN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTERvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRG9jdW1lbnQubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTERvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0
IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpIVE1MRG9jdW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEVsZW1lbnQubW0KaW5kZXggYTVlMGNkMzE5MTNiZDM4NzMyNjYzNWU3OTM1ZjRhYTg5ODE5
YzZmMC4uMmZlMjRjNzA3NDk3ODg3MjUwODRmMzY2ZjkwYjlkODQ0OTc2ODA1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbGVtZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRWxlbWVudC5tbQpAQCAtMzYsOSArMzYs
OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZp
bmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRW1iZWRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxFbWJlZEVsZW1lbnQubW0KaW5kZXggNmI4MmJlMDhlODIxNjZj
MzE5NDBhMzQ4ZWNmOTcyNTgyNTljYzlkMC4uMGQ2ZDg4MTQ3MWE4MTVlMjAzYTBjNDU0ZDBkNzY2
YTYwOWQ3ZTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxFbWJlZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxFbWJlZEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpI
VE1MRW1iZWRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxG
aWVsZFNldEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZp
ZWxkU2V0RWxlbWVudC5tbQppbmRleCBlYTkyYTAxOWE1MDY1Njk1YzY0NDZhZGE0OTM5NWY2ZmEz
YWUyNjY2Li4xZmQ0ZDgwYmM3MThjOTU2YTM1ZDZjOGJjMGEwN2ZiMDJhOTk2YzgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZpZWxkU2V0RWxlbWVu
dC5tbQpAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRp
dHlTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50Kj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb250RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9udEVsZW1lbnQubW0KaW5kZXggODBkZTQ5MDU0OTI0ODAz
M2EzMmJmY2EwMzhiM2FmNzcxOWM2ZmI3Ni4uOTEwZThmN2Q0NjZmMWRlM2E3OGVjZDMyZmQ4Nzcx
YmI3ZTg0ODJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxGb250RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEZvbnRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxO
YW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2lt
cG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TEZvbnRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3Jt
RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRm9ybUVsZW1l
bnQubW0KaW5kZXggYmZkZTFkYWQ4MTRlZGRjYmVhNzY1N2FmYjc4Y2QzNGY3YmVkZDU2Zi4uZTg2
MjZiYTM1YWEzMzdmNGI0YzdjZmExYmQ4MzNiOTVmZWVlNzgyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGb3JtRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZvcm1FbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Kj4ocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxGcmFtZUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTEZyYW1lRWxlbWVudC5tbQppbmRleCA2MDBmNDRmODliYzQzOTk3
ZGM0MGUwMDZkMjZjYzM1MmUzODFhYWYxLi5lYjVjNTVhYzJiNjdhZjRkZWViZGY2MTVhMzc0ZTI1
NzNlYjMzYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEZyYW1lRWxlbWVudC5tbQpAQCAtMzUsOSArMzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
TmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNp
bXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhU
TUxGcmFtZUVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJu
YWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEZy
YW1lU2V0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJh
bWVTZXRFbGVtZW50Lm1tCmluZGV4IGYyZjIwN2YwNTI0OTdjMjE5N2I3NDM0NzdjM2NiYjMxMjZm
ZmM5OGEuLjY5Yjk1YTA2Zjc4ZDg4Njg0MGUzNjYwNmI3NzE1YzI5MDYxNjQxNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRnJhbWVTZXRFbGVtZW50
Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVj
ay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VS
TC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxl
bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSFJFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KaW5kZXgg
YjI1NzhhYTJkZjNlZTg5MDA4NTYxMmZjMjE3NzM1ODM1MjY1Yjc2ZC4uYTcyNmJkYzFlMDIyN2Fi
MjZjZjAwOWI3MzY3MzQxODdmZTQwMmFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxIUkVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdl
YkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MSFJFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4o
X2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxIZWFkRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
SGVhZEVsZW1lbnQubW0KaW5kZXggYmVmMzlhZTU3MDZmOTQ5YWNkMjdmNDFiNWQwYmIyN2VlZTJm
ZDJhNy4uOWNhNGI4ODBiMWFhYWJhZDhjMzBhOWViMWQ2ZTQwZTMzMGJlZDgyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkRWxlbWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEhlYWRFbGVtZW50Lm1tCkBAIC0z
MSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
ZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEhlYWRFbGVtZW50Kj4ocmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSGVhZGluZ0VsZW1lbnQubW0KaW5kZXggODEx
YmIxODA0ODg2MWY4YjE3MTJjOTM1NmMxZDgyNzZkMDExMzE4OS4uYTJkZmI2YTNlYzFlYjA1Yzhj
YjMxMTEyMjIwNDZhMDAyYzc5ZGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxIZWFkaW5nRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTEhlYWRpbmdFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6SFRNTEhlYWRpbmdFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01IVE1MSHRtbEVsZW1lbnQubW0KaW5kZXggMjg3Y2U3Zjk0ZmYyZTljOTY1ZjM1ZmRl
NDMzNTBjZDRhYjNjYmMxZi4uZWJjM2NmZTc0ODYxNDI2MzNkMzM5MjZkNWRlMTNlNTlmZWMxOGNh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxIdG1sRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEh0bWxFbGVt
ZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEh0bWxFbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJRnJhbWVFbGVtZW50Lm1t
CmluZGV4IGYzODJjOWVmOGUwOTY5MjNhNjMwZTVkYmJkNTk3MjY3ZjFlMTY5ZGYuLmUzMjFiNGY3
NmQyMTZlMjNhM2Q5ZmEwNDNjY2VmNzg4YWMzN2E3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSUZyYW1lRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTElGcmFtZUVsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhl
Y1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MSW1hZ2VFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxJbWFnZUVsZW1lbnQubW0KaW5kZXggZmM5MTk1M2NlY2MyY2Fl
ZWU3NjJiMzQ1NDIwMjQxYmJmOWIzNzE1MS4uZWJhNGVjOTIzMTZjMzljZTAxMzRjZGIwMDVkMTYw
OTNiMDMyMmRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxJbWFnZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxJbWFnZUVsZW1lbnQubW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0
VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTEltYWdlRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MSW5wdXRFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJ
bnB1dEVsZW1lbnQubW0KaW5kZXggODM2MzczNWQ5NDc0YTg2YmE4YTgwNWUwZjFhM2ViYTZmODRk
NGJjZC4uZDczN2E1NTdlOWEzZWMwMzUzNTNjNTEyNjkwZGJlNzhlYjBlODQ3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxJbnB1dEVsZW1lbnQubW0KQEAg
LTY0LDkgKzY0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUmVuZGVyRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTElFbGVtZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMSUVsZW1lbnQubW0KaW5kZXggMjY5ZDFhNTRh
ZGQ4Y2UyYmQ0ZmVhZjZhNDJhNjM5ODIwODVmZWRhMC4uYTNjZjNmYThkYmZhOGNlYWQ3YTI5ZmE5
OGMyNzdhODRkOWJmMGRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxMSUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxMSUVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+Cisj
aW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpI
VE1MTElFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFs
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMYWJl
bEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVsRWxl
bWVudC5tbQppbmRleCA1MWY1NjBjMDk3OTE4OTNhZTY2ZGM1NTJkMmY5Njk3ZDJmYmYwMjgxLi44
MTM5MDAwZWFlYTRjYTdkMGVlOTJiNTgwZjRjZjA4MDE3YTExNjI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExhYmVsRWxlbWVudC5tbQpAQCAtMzUsOSAr
MzUsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmlu
ZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxMYWJlbEVsZW1lbnQqPihyZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExlZ2VuZEVsZW1lbnQubW0KaW5kZXggOTM0M2NhNmU5
ZGZhZjczNzgwNjU3Y2Y1NDJhZTEyMjU0NTJkOGIwYy4uZDRmMWYzNmM1ZjI0YjE5NGE5MmM4MmIx
MGNkYmExZDhlMTBlNjM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxMZWdlbmRFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MTGVnZW5kRWxlbWVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxMZWdlbmRFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2Rl
Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxMaW5rRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MTGlua0VsZW1lbnQubW0KaW5kZXggMjBmNGMwMTUxNWRlYjYwZWU0ZGIzNzlhMDA1ZTUyNzc5
YjljNTIyMC4uNTY4N2M0NWJiYTBmYWM3NGI1NGM5NDg1ZDk4YWU0OWU4ZjczNWIwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxMaW5rRWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTExpbmtFbGVtZW50Lm1tCkBA
IC0zNiw5ICszNiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1N0eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFwRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFwRWxlbWVudC5tbQppbmRleCBiOTIxYjNh
NTBlZDA1MTUwM2YzZDc3YzQ1MGJkMzk3MTZhZDRjOTYwLi4yY2M5MGNmODYzNGUzOTZkZDAxZjRh
MGMxMWYwNjEwZWNkNjBlOGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTE1hcEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUhUTUxNYXBFbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTE1hcEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50
ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TE1hcnF1ZWVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxN
YXJxdWVlRWxlbWVudC5tbQppbmRleCA2MWFiNGM2MjMzM2Y5NTZlMDcyNDM2Mjc3MmZjMWZmZmNh
NDZhMjM4Li45NjIzZWRiMTZhYzA5OWI0MWRjOTYzODc1OTA0NGI0NzFiOTBiY2VhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1hcnF1ZWVFbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWFycXVlZUVsZW1lbnQu
bW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1l
bnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE1lZGlhRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tCmlu
ZGV4IDViYzc0NTZmNjBjZjc2MTJiNTA2ZWJmZDNkYzg5ZmE0N2FlY2E0NjcuLjc4M2E1YTE1ZTlk
ZTFjNzVlNzRkYjg5NTJiNDE5OTIwMWE5NDM3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MTWVkaWFFbGVtZW50Lm1tCkBAIC0zOCw5ICszOCw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL01lZGlhRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KICNpbXBvcnQgPFdlYkNvcmUvVGltZVJhbmdlcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MTWV0YUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTE1ldGFFbGVtZW50Lm1tCmluZGV4IDk5ODcwMDJhZjdjYmUzZDE0ZDY3Y2Y4
YzRmM2I4MWRlM2QzYmYyNmMuLjc4ZWQ2ZTkzY2RmYWE1YjhjOTVmNzcyZjIwM2YzODQ0ZDgwZTk5
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTWV0YUVs
ZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxNZXRhRWxl
bWVudC5tbQpAQCAtMzEsOSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNj
cmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNZXRhRWxl
bWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTW9kRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MTW9kRWxlbWVudC5tbQppbmRl
eCBkODg1ZmNmZDA4MDM2YzczODI5MmUwMDcwNzIxZWU1ZjgyZTM3MTlhLi42MGY5ZTQ1YzdiMWUz
NGJjMDYyZTZhNGViMzEyNzRhZjQ2NWIyNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NSFRNTE1vZEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxNb2RFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6SFRNTE1vZEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5v
ZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTE9MaXN0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MT0xpc3RFbGVtZW50Lm1tCmluZGV4IGEzMmMyZDhiYzk3MTIxNzA3YjZlMGUzNzhlNzQ1
MTUyMmM1NTg3MzAuLmI3ZmE1OWI2ZTY2OTVmNjZjODk2OWIxZmE0MDVlOGU0YTFkZWFlZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT0xpc3RFbGVtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT0xpc3RFbGVtZW50
Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxPTGlzdEVsZW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxPTGlz
dEVsZW1lbnQqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9iamVjdEVs
ZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTE9iamVjdEVsZW1l
bnQubW0KaW5kZXggN2FiNzNmNTcyOTQzMGQzYmYyMDI3ZWRiYzVlNDYxMDMxNGJkY2ExNS4uZGIy
MzZkOGI5NTg2YjhiNzJhYzhlODhjY2RmMmI0OTBhYmVkYjY2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPYmplY3RFbGVtZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT2JqZWN0RWxlbWVudC5tbQpAQCAtMzcsOSAr
MzcsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNk
ZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0R3JvdXBFbGVtZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0KaW5kZXgg
NGU1MTVkYWY1NWJiN2NjNWNjMDM4YmI1MjQwNGI2ZWVmMWI1NWNkYi4uMTc3MWMyZWZlMzE4NjJk
N2IxNTU5ZTBkMTI0NzUzZjEzZjM3MDFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxPcHRHcm91cEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTE9wdEdyb3VwRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uRWxlbWVudC5tbQppbmRleCBmZGVj
NTRlZTFkNjQ3ODFlNjZlODgzMzRjNTJjZjU0MThiYzc5M2RmLi4xNDUzNTFkOWI2ZmVlM2UzYjEy
YWYzMWYwNGJjMzAzN2ZkYTc3OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTE9wdGlvbkVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxPcHRpb25FbGVtZW50Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxPcHRpb25FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCmluZGV4IGY3NzBhOGEx
NGQ1YTgzZDc2OTVlNDM3MTllZTFhZjRkY2I2NjRjYTEuLjM5MTIxMDE1NjFmNWZmZGY4OTQxZTlh
NzFiZmJlNGI4MjhmODRiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQpAQCAtMzUsMTAgKzM1LDEwIEBACiAj
aW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9WYXJpYW50Lmg+CiAKICNkZWZpbmUgSU1QTCBy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVjdGlvbio+KF9pbnRlcm5h
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUGFyYWdy
YXBoRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUGFyYWdy
YXBoRWxlbWVudC5tbQppbmRleCA2YzUxMWU5MTY2NGNlOTIzY2M5Mjg0YTI1NWExMWU2YTc5M2Iz
ZmQ0Li4xYTU0M2IzZmQzZTZmZTcyODI0NmIyYmE4YzEyZmYyNjQwZjY2MDY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFBhcmFncmFwaEVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhZ3JhcGhFbGVtZW50
Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxQYXJhZ3JhcGhFbGVt
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1w
b3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
UGFyYWdyYXBoRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRl
cm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
UGFyYW1FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJh
bUVsZW1lbnQubW0KaW5kZXggNWZiMGNlYzI3ZmI3MDk3ZjA5MTVlZTVjZGZjNDE4YTgxYzU5NGZl
OC4uZWRhNjUzMmM1ZDJhN2VmZWZjMTQ5YjBiNzY2YWU5ZGI4ZGJjOTE2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhbUVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxQYXJhbUVsZW1lbnQubW0KQEAgLTMx
LDkgKzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBhcmFtRWxlbWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFBhcmFtRWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MUXVvdGVFbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0KaW5kZXgg
Mzc0OWMxODAzMzBmYjBlMzVjZDU0NTkxMWMwOWU3NzQ1ODc1YWZkMC4uYmNkNzg2NmNkNzZjNzNl
YWM2NDRlMDRmODQzN2U1MDMwZjVhMmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxRdW90ZUVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTFF1b3RlRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFF1b3RlRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MU2NyaXB0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MU2NyaXB0RWxlbWVudC5tbQppbmRleCAzMzQ0ZDU0ODg4NDljMTRj
OTFjNWE2OTNlNzlhZDdlNjcwZTA5ZmY0Li5lNGFjMDE3ODAyZGEyNTE0ZjRjZGZlN2RkN2M5MjA0
OWJkYWIwMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TFNjcmlwdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxTY3JpcHRFbGVtZW50Lm1tCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxTY3JpcHRFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9k
ZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01IVE1MU2VsZWN0RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MU2VsZWN0RWxlbWVudC5tbQppbmRleCA3NTgxNDFkZTNmYjdmNWFiZjZlMmEyOGZhNmFl
YTE0NjU4YzY2OTYyLi5iY2ZiZWNhY2QzODQ5MWZhN2JjOTk1NGIzZGU5MDMwMmY5MWE2NmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFNlbGVjdEVsZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTZWxlY3RFbGVt
ZW50Lm1tCkBAIC00NCw5ICs0NCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4K
LSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4K
IAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxTdHlsZUVsZW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbQppbmRleCBh
NDUyNzgyMDgwYmI2MzljNGU2N2Y0NTc5ZjkzOTQ2NTY4YzVjZjEwLi44MDc2YTMzOGVlMWRjMzBh
ZjFjMjhhNzQ4NWViNjQ3ZDhlZTM3YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NSFRNTFN0eWxlRWxlbWVudC5tbQpAQCAtMzMsOSArMzMsOSBAQAogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVNoZWV0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lm1tCmluZGV4IGE3ODExYmQ2OGIz
ODhiOGQ3MzMxZDQ1M2M5NjI4NjA4YTVhMzZlMzcuLjQ4M2Y5NGYxM2ZiYWQxNTk3ZTY3MzZhZjc2
Y2E0YzBmMTA2ZWU4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNp
bXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2Rl
ZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNhcHRpb25FbGVtZW50Kj4o
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNlbGxFbGVtZW50Lm1t
CmluZGV4IGRkMzAxNmIzYWE2M2E0ZjliMDMxNDQwNzVmMDVlNWE5ODA1NThlZTAuLjlhZDkxNDZl
ODRhMjc4MDY5OWJjYTczZDU0N2NiY2E4MjUwYzNlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVDZWxsRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQubW0KQEAgLTMxLDkg
KzMxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwu
aD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxUYWJsZUNlbGxFbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUNvbEVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVu
dC5tbQppbmRleCBhZjI2NzE0ZDg0ZjMwYWFkY2FlMTQyYmU4NDZkNjZjZTZlMzVlNDBhLi5jOWQ5
OGNhNTE0ZTFhYmE3YjBlZjQ4OWMzZGFmMmJlNzljNzEyZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlQ29sRWxlbWVudC5tbQpAQCAtMzEs
OSArMzEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDb2xFbGVtZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFibGVDb2xFbGVt
ZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZUVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbQpp
bmRleCA0YzY4YzRiNmI0Y2E1ZDZmMWY2MTBlYzVhYzA3ZmE2ZDM0NzMyMGM5Li5iZWRkYWY1MGZh
YWFiNGMyZDM2ZmE1ZDEyOGQwMzE2NWYyMDRiN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlRWxlbWVudC5tbQpAQCAtMzksOSArMzksOSBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAj
ZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVSb3dFbGVtZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0KaW5kZXgg
MjQwOTZhOGQ5OTQ3ZmQ3YjdhMjRmZDE2NTczMTNhOTg0MDk5MzhjYy4uM2RmZWRjMzNlZmNjMTVh
YWUxNGQ0NDExZmZlZTcwNjc3M2Q2OGE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVJvd0VsZW1lbnQubW0KQEAgLTM1LDkgKzM1LDkgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRhYmxlUm93RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9y
dCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVm
aW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRhYmxlUm93RWxlbWVudCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5t
bQppbmRleCA5OGIxOWZhMzE1NDAzNGRhZDlmNjMwYjM0MzIyMjg4MjgzNGYzMTg4Li5jMzJjMmU3
MDI3MzQzZDQ3MDkzMGE2NzczYjI5ODg4ZWQ0ZjZmZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Lm1tCkBA
IC0zNSw5ICszNSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Ro
cmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0
IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MVGFi
bGVTZWN0aW9uRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRl
cm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1M
VGl0bGVFbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUaXRs
ZUVsZW1lbnQubW0KaW5kZXggMjQ4NmY3N2MzYTVlNzUwNDI3MTAyYWQyN2UyODJiNmI2NWI0ZWZl
OS4uMjgzOTE3MTc4NTU5OWY5Mjg1ODRhZDUyMTU4ZTBmMDVkMzQxMjBiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxUaXRsZUVsZW1lbnQubW0KQEAgLTMw
LDkgKzMwLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRpdGxlRWxlbWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5o
PgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5o
PgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFRpdGxlRWxlbWVudCo+
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MVUxpc3RFbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0KaW5kZXgg
Zjk4ZjhlODUyYmQ0N2ExNjI5MmI5NzM0MDkwMTU3MjhlNDVmMzNhMS4uZmNmOTA1NGFiMGYxMjE2
N2FlZTIwNmNhZDhhZGExZDEzOTA3YTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxVTGlzdEVsZW1lbnQubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTFVMaXN0RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2lt
cG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTFVMaXN0RWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01IVE1MVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTUhUTUxWaWRlb0VsZW1lbnQubW0KaW5kZXggMzM1ODA2NTAzOTI4NzE5Yjk1
YjBmNzE2N2YyNzFhOTAxZTg1YzExOS4uNDU3ZWFmYmEwZDBjZTUyZDAzZjU1MGYwNDc4YjM0YjA4
ZTg3M2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxW
aWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxW
aWRlb0VsZW1lbnQubW0KQEAgLTM0LDkgKzM0LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFZp
ZGVvRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5o
PgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6SFRNTFZpZGVvRWxlbWVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9p
bnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01L
ZXlib2FyZEV2ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJk
RXZlbnQubW0KaW5kZXggM2ZkOGZjZTM2NDY2ZjM3YWI5YTE5NGMwYTMwYzFjM2M0MDUyZjYzYy4u
MmMwMWYzZTYxMDU1MjY5N2U0NTEzNzk0ZGIxMzlhMzc5ZDMyYzc1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUtleWJvYXJkRXZlbnQubW0KQEAgLTMzLDkgKzMzLDkg
QEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5
Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjZGVmaW5l
IElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6S2V5Ym9hcmRFdmVudCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTU1lZGlhTGlzdC5tbQppbmRleCA5ZTgxNjdhMTZhNDRiMzEzN2IyM2VkYjFhOGVl
ZDQ1OTQ5ZDI3ZDk4Li44NjUxZmM5N2I0ODcxMTVlMmQ0Y2RkNzcxNDkwZGYzZmQwMGE1ZGJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KQEAgLTMzLDEw
ICszMywxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9NZWRpYUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6TWVkaWFMaXN0Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTW91c2VFdmVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50Lm1tCmluZGV4IGY2NTZhOGFkZTU1MzVhOTBl
ODdhYmNhYWI5ZDgwNzk5NjNhODEyMDYuLjk1ZjIyMzVkNDU3MmZiMzk2ZDYyNGMzOWZjNTA2OWIz
MDk2ZGMzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3Vz
ZUV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Nb3VzZUV2ZW50
Lm1tCkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TW91c2VFdmVudCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTXV0YXRpb25FdmVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01NdXRhdGlvbkV2ZW50Lm1tCmluZGV4IDBmNGVmMTY3NWExYzAz
YTg3YTEwZDYxZTNmYjcxMWFhZjExYzc2YmQuLjJmYmY0MjJhZTg1ZDk5YzY2ODBhMGVkNThjZGJh
MzI3ZjdlZDhmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01N
dXRhdGlvbkV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01NdXRh
dGlvbkV2ZW50Lm1tCkBAIC0zMiw5ICszMiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL011dGF0aW9u
RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TXV0YXRpb25F
dmVudCo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RXZlbnQqPihfaW50ZXJuYWwpKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTU5hbWVkTm9kZU1hcC5tbQppbmRleCA1
NjgxOTMzMmJiNjc0MmUxZWZlZGQwMWUyYzc1MzM1NzdkNzFlM2Y4Li4yOTE4MTkwOTBlNWUyNTAz
NTNiMzA3NGFmOTZiZDIzOGZkYjhkNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NTmFtZWROb2RlTWFwLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01OYW1lZE5vZGVNYXAubW0KQEAgLTMyLDEwICszMiwxMCBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9KU0V4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OYW1lZE5vZGVNYXAuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6TmFt
ZWROb2RlTWFwKj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5tbQppbmRleCA5YWRjNDBiMDhhYmJj
ODc3MWIzYzhiOGJkZmVlMDE5ZmM4MWNlMzI1Li4yMDBlODJhMzEwM2E2NzFkMDYxNTcxMTJjN2Rj
OTcyNGE1NTZlMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQg
PFdlYkNvcmUvUHJvY2Vzc2luZ0luc3RydWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxl
U2hlZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNp
bXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBM
IHN0YXRpY19jYXN0PFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01SYW5nZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01SYW5nZS5tbQppbmRleCBmMjg5YjNhMjZlOGE0ZjU2NmI2NzI0ZmI4ZDYxNTExNThi
ZGI2MmU4Li5lZjJjMzU4MDliMGI2NzYzYjQ3NzQ1NjE4YzNiMjk1NjA2ZDk5OTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NUmFuZ2UubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVJhbmdlLm1tCkBAIC0zNCwxMCArMzQsMTAgQEAKICNp
bXBvcnQgPFdlYkNvcmUvTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SYW5nZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8d3Rm
L1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpSYW5nZSo+
KF9pbnRlcm5hbCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVN0eWxlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVl
dC5tbQppbmRleCA3YTFhNGE4N2ZjNmVmMjQ5YWNiOWQwN2RlMjU0YmRiMmIwYTNjOTMzLi4wZTg3
ODVjN2QyYzA2N2M0ODQ3MjFlZDUzNzg3NGQ3YzU1Y2IwYThmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NU3R5bGVTaGVldC5tbQpAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW1w
b3J0IDxXZWJDb3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVTaGVldC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorI2ltcG9ydCA8
d3RmL1VSTC5oPgogCiAjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpTdHls
ZVNoZWV0Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVGV4dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0Lm1t
CmluZGV4IDMwZTdkYTNjMGM5ODk3M2Q0MTI1YTY3ZWRkY2QyNmQ5Y2VlNzVjYjUuLmY3MzBhZDZk
ZWJhZmEwNWJlMzcyNDQwZjk2ZTYwMWFlZmY0ZGY3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET01UZXh0Lm1tCkBAIC0zMCw5ICszMCw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0pTRXhl
Y1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHQqPihy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4dEV2ZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVRleHRFdmVudC5tbQppbmRleCBjNTAyNmViNGIyZjg2MDEz
MzI4N2I5ZjJlMDU4YTc2MWZiMjQyMDRmLi5jYTA2ZmQ3YzBmZjBlMDAxYjllODg0MDZkMGJhN2Vh
Y2NhNDE0YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVGV4
dEV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01UZXh0RXZlbnQu
bW0KQEAgLTMzLDkgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVGV4dEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJM
Lmg+CiAKICNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0RXZlbnQqPihyZWlu
dGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRva2VuTGlzdC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01Ub2tlbkxpc3QubW0KaW5kZXggZGI4ZjU1Y2UwN2FhNjRmZDky
OWE1ZjVmODNmZjBjYmNjZGQ3NzQ2OC4uOWM0YWE4OTYzMGQ3ODE0NDQyYjEzYzZiYzI1YzhlNGI3
Zjk2YmI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVRva2Vu
TGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVG9rZW5MaXN0Lm1t
CkBAIC0zMiwxMCArMzIsMTAgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0pTRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNr
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2Jq
Q0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1Q
TCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkRPTVRva2VuTGlzdCo+KF9pbnRlcm5hbCkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJRXZlbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVudC5tbQppbmRleCAxNzMyNDMxOTBh
MzJiMTVjNDdmZmZlMDAyYjNiYTYxNjdiMTc3OGRiLi5mODJjZjU4YTdlZDRhYmI5NGY4ODVmMGVl
NGFmZmJjM2Y5ZGUwMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NVUlFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlFdmVu
dC5tbQpAQCAtMzQsOSArMzQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VJRXZl
bnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlw
dE9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKyNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAogI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OlVJRXZlbnQqPihyZWlu
dGVycHJldF9jYXN0PFdlYkNvcmU6OkV2ZW50Kj4oX2ludGVybmFsKSkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVhQYXRoUmVzdWx0Lm1tCmluZGV4IGExZWY1NzNmOGRkMmMx
MGI2ODZjMTE5NTA5YTcwMjQyZDdjZjUyYWYuLmRhY2YxZDg2ZGY4ZTczYzFiYjA0NGNkZGE4YjQ5
MTUxYTRiZmZmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01Y
UGF0aFJlc3VsdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NWFBhdGhS
ZXN1bHQubW0KQEAgLTMxLDExICszMSwxMSBAQAogI2ltcG9ydCA8V2ViQ29yZS9KU0V4ZWNTdGF0
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENo
ZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
T2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1hQYXRoUmVzdWx0Lmg+CiAjaW1wb3J0IDx3dGYvR2V0UHRyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdl
YkNvcmU6OlhQYXRoUmVzdWx0Kj4oX2ludGVybmFsKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCA5ODVlNDVlZjk1NjZmNWIx
MjU4ZDI4NTVkOThjZTcyMjFkZTRhY2M1Li40NTYwN2RiYzVjZDQ2MzFkYjYzM2ZkOThkMTNkNmRk
OGVlMzYzODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dl
Ykhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW0KQEAgLTQ3LDEzICs0NywxMyBAQAogI2ltcG9ydCA8V2ViQ29yZS9JbWFn
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9y
dCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbXBvcnQg
PHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJM
RXh0cmFzLm1tCmluZGV4IDgxNTk3NDFiN2RiYjQzYmNjMWIxM2M1OTI5YzFkMDVjMGU5N2QwNjYu
LmMxM2I3NTcxOGIxYTRhN2E1ZmVkMDk5NWM5ZTQ1YmYzYzliZDNiOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQpAQCAtMzMsNyArMzMsNiBA
QAogI2ltcG9ydCAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCiAjaW1wb3J0ICJXZWJOU0RhdGFF
eHRyYXMuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2FkZXJOU1VSTEV4dHJhcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5T
VVJMRXh0cmFzLmg+CkBAIC00MSw2ICs0MCw4IEBACiAjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQu
aD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVF
eHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4
dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7
CkBAIC0xMDksNyArMTEwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogLSAoTlNTdHJpbmcg
Kilfd2ViX3VzZXJWaXNpYmxlU3RyaW5nCiB7Ci0gICAgcmV0dXJuIHVzZXJWaXNpYmxlU3RyaW5n
KHNlbGYpOworICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHNlbGYpOwogfQogCiAt
IChCT09MKV93ZWJfaXNFbXB0eQpAQCAtMTM5LDcgKzE0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
VEY7CiAKIC0gKE5TVVJMICopX3dlYl9VUkxCeVJlbW92aW5nVXNlckluZm8KIHsKLSAgICByZXR1
cm4gVVJMQnlSZW1vdmluZ1VzZXJJbmZvKHNlbGYpOworICAgIHJldHVybiBXVEY6OlVSTEJ5UmVt
b3ZpbmdVc2VySW5mbyhzZWxmKTsKIH0KIAogLSAoQk9PTClfd2Via2l0X2lzSmF2YVNjcmlwdFVS
TApAQCAtMTc1LDE3ICsxNzYsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogLShOU0RhdGEg
Kilfd2ViX2RhdGFGb3JVUkxDb21wb25lbnRUeXBlOihDRlVSTENvbXBvbmVudFR5cGUpY29tcG9u
ZW50VHlwZQogewotICAgIHJldHVybiBkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBjb21w
b25lbnRUeXBlKTsKKyAgICByZXR1cm4gV1RGOjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxm
LCBjb21wb25lbnRUeXBlKTsKIH0KIAogLShOU0RhdGEgKilfd2ViX3NjaGVtZURhdGEKIHsKLSAg
ICByZXR1cm4gZGF0YUZvclVSTENvbXBvbmVudFR5cGUoc2VsZiwga0NGVVJMQ29tcG9uZW50U2No
ZW1lKTsKKyAgICByZXR1cm4gV1RGOjpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShzZWxmLCBrQ0ZV
UkxDb21wb25lbnRTY2hlbWUpOwogfQogCiAtKE5TRGF0YSAqKV93ZWJfaG9zdERhdGEKIHsKLSAg
ICBOU0RhdGEgKnJlc3VsdCA9IGRhdGFGb3JVUkxDb21wb25lbnRUeXBlKHNlbGYsIGtDRlVSTENv
bXBvbmVudEhvc3QpOworICAgIE5TRGF0YSAqcmVzdWx0ID0gV1RGOjpkYXRhRm9yVVJMQ29tcG9u
ZW50VHlwZShzZWxmLCBrQ0ZVUkxDb21wb25lbnRIb3N0KTsKICAgICBOU0RhdGEgKnNjaGVtZSA9
IFtzZWxmIF93ZWJfc2NoZW1lRGF0YV07CiAgICAgLy8gVGFrZSBvZmYgbG9jYWxob3N0IGZvciBm
aWxlCiAgICAgaWYgKFtzY2hlbWUgX3dlYl9pc0Nhc2VJbnNlbnNpdGl2ZUVxdWFsVG9DU3RyaW5n
OiJmaWxlIl0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0KaW5kZXggZTllZDVjYmViMjk1ZDA2ZGFhZDk2OTU3
MjJhMzRmM2VlZTU1NjY4ZC4uYjcyNjU4M2Y5NzRjZGRmNzY2MTdmMmFkMThkMzk4ZjQwM2I5MTNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJVc2Vy
Q29udGVudFVSTFBhdHRlcm4ubW0KQEAgLTI0LDggKzI0LDggQEAKIAogI2ltcG9ydCAiV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tCmluZGV4IGFjN2E0YmIzMThjNTVmOTM1OWM5OGUwYThiZjk2ZDFlNmU0NDM2
MzYuLjg4M2I5MjA3MjA3ZTI0OGRkNDdhMzBiYzBjNzYyMWU3MDY4YjdjMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTU4LDcgKzU4LDYgQEAKICNpbXBv
cnQgPFdlYkNvcmUvUHJveHlTZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJv
bGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNp
bXBvcnQgPFdlYkNvcmUvbnBydW50aW1lX2ltcGwuaD4KICNpbXBvcnQgPFdlYkNvcmUvcnVudGlt
ZV9vYmplY3QuaD4KQEAgLTY2LDYgKzY1LDcgQEAKICNpbXBvcnQgPHV0aWxpdHk+CiAjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaD4KKyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogZXh0ZXJuICJDIiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggMGUxODk4ZjAzMDU5OTcwNDNl
NjRmNmEyOWFmNmZjZDNmOTljNWZhNy4uMmJjOTc4ZDM0MDNmNzNmMWMwNjNkZjI1MjM0M2M1Yjgz
ZWMxMzA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNhbmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0aEVycm9yKE5TRXJyb3IgKik7
CiAKLSAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJM
KSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0KKyAgICB2b2lkIHNldFJlcXVlc3RVUkwo
Y29uc3QgVVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0KIAog
ICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgd2FudHNBbGxTdHJlYW1zKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gbV9kZWxpdmVyeURhdGE7Ci0gICAgV2ViQ29yZTo6
VVJMIG1fcmVxdWVzdFVSTDsKKyAgICBVUkwgbV9yZXF1ZXN0VVJMOwogICAgIFJldGFpblB0cjxO
U1VSTD4gbV9yZXNwb25zZVVSTDsKICAgICBDU3RyaW5nIG1fbWltZVR5cGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKaW5kZXggYzRiOWI2MzRmN2ZiOTdhOThjMDQzM2VjYTkzOGYyZTZkMDYwOTlmYy4uNTRh
N2FhMjIwNjllODBiOGI0N2FhOGEyZmU0YmUzMmViYzYwZmM1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
QEAgLTIyOSw3ICsyMjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dDo6U3RhdGUpIGZpbmFsOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3Qg
U3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFs
OworICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQg
a2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJikg
Y29uc3QgZmluYWw7CiAKICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lm1tCmluZGV4IDQ2N2UxY2UzZDMyYjBlZDlmMmU3NjNkYTU3N2UyMzI1NzYwNTI3M2QuLjdjMjkw
YjEwZjc3NTdhNzZhMzM5MTZjZjc4ZmVhZWMzMzllNTZmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0K
QEAgLTExNDIsNyArMTE0Miw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwKIAogI2VuZGlmCiAK
LVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNv
bnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAg
ICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Ioc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nRm9yV2ViVmlldzopOwogICAgIGlmIChbW21fd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25k
c1RvU2VsZWN0b3I6c2VsZWN0b3JdKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggOGIy
MDM2NGJiNjdhOTE3Mjc4YjI5NTNmYzUxNzlhMTJkZDM2NmRkZC4uMTg4NWYwMzEzMTM1YjgxN2Iz
MGY5NDU3NzdkOGUyNGIxNTM5YmY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKSBv
dmVycmlkZTsKIAotICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICB2
b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICAg
ICB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogICAg
IGJvb2wgaXNTcGVha2luZygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpp
bmRleCBkYjkwNWQ5ZjRjOTQ3MTMyYWE2ZWRhN2I2MTM3YzQ2NWY2ZmEzODJiLi45NmVmOTIxZmQ2
MDZlY2YwODBlZWQxMzFkNGI4ZDkxMmQ1MWYzZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5tbQpAQCAtNTQsOSArNTQsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQg
PFdlYktpdExlZ2FjeS9ET01Qcml2YXRlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1NoYXJp
bmdTZXJ2aWNlUGlja2VyU1BJLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggNGU4MWQzNzA4NDhmOWU0NGE0MGY1MDQw
YmM5YWQ4YTM3Y2NhZDhlMC4uODQ3YTczYjE3YTQ2MTdiZDU0YThkMjhhOTIzYzFkNGE2M2JkZDEy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJl
Z2luRHJhZyhXZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgbW91c2VEb3duUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBt
b3VzZURyYWdnZWRQb3NpdGlvbiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RHJh
Z1NvdXJjZUFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwg
V2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWco
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDdi
ZTVmNWY1YzU2NDAyZTY0YzdiOTk3MzU1NjJhYWJmNzc4NmE1OWYuLjFmMTViNzIzNjNmOTgyYjhm
MTMzNzY5NmVkNDA3YTgzN2IwZTU0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
MTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaERpZERpc3BhdGNoT25s
b2FkRXZlbnRzKCkgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRDYW5j
ZWxDbGllbnRSZWRpcmVjdCgpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgV2FsbFRp
bWUgZmlyZURhdGUsIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QpIGZpbmFsOworICAgIHZv
aWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSBp
bnRlcnZhbCwgV2FsbFRpbWUgZmlyZURhdGUsIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Qp
IGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSBm
aW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOwog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CkBAIC0x
NTgsOCArMTU4LDggQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShX
ZWJDb3JlOjpIaXN0b3J5SXRlbSYpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaWREaXNwbGF5
SW5zZWN1cmVDb250ZW50KCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50
aXJlUGFnZSkgZmluYWw7CisgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgZmluYWw7CiAKICAgICBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpIGZpbmFsOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGZpbmFsOwpAQCAtMTc2LDcgKzE3Niw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZEZhbGxCYWNrKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIAotICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBX
ZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJM
JikgZmluYWw7CiAgICAgCiAgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShX
ZWJDb3JlOjpDYWNoZWRGcmFtZSopIGZpbmFsOwogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0
dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgZmluYWw7CkBAIC0yMDUs
MzAgKzIwNSwzMCBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4g
Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNhY2hl
ZERvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJikgZmluYWwgeyB9CiAKLSAg
ICB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKKyAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6
OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKSBmaW5hbDsKIAotICAgIFJlZlB0cjxX
ZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RG
OjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCYsCisgICAgUmVm
UHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0
cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50JiwKICAgICAgICAgY29u
c3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQ
bHVnSW5FbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwKLSAgICAgICAgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0
cmluZyYsIGJvb2wpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBs
dWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQm
LCBjb25zdCBVUkwmLAorICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sKSBmaW5hbDsKICAgICB2
b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIGZpbmFsOwogICAgIHZvaWQgcmVk
aXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0JikgZmluYWw7CiAKICNpZiBFTkFCTEUo
V0VCR0wpCi0gICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOwotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Qg
ZmluYWw7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNv
bnN0IFVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSByZXNv
bHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBiYXNlVVJMLAorICAgIFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUph
dmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBs
ZXRFbGVtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJMLAogICAgICAgICBjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZh
bHVlcykgZmluYWw7CiAgICAgCi0gICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0
Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVU
eXBlKSBmaW5hbDsKKyAgICBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50
VHlwZShjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpIGZpbmFsOwogICAg
IFdURjo6U3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgZmluYWw7CiAgICAgCiAgICAg
dm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFw
cGVyV29ybGQmKSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYm9vbCBz
aG91bGRMb2FkTWVkaWFFbGVtZW50VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgc2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBVUkwmKSBjb25zdCBm
aW5hbDsKICNlbmRpZgogCiAgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90
ZU9iamVjdCgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTI0MSw3ICsyNDEsNyBAQCBwcml2YXRl
OgogCiAgICAgUmVmPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdv
cmtpbmdDb250ZXh0KCkgZmluYWw7CiAKLSAgICBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2Uo
Y29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzaG91bGRQYWludEJy
b2tlbkltYWdlKGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgUmVmUHRyPFdlYkNvcmU6OlByZXZpZXdMb2FkZXJDbGllbnQ+IGNyZWF0ZVByZXZpZXdM
b2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA0ZjcwMGUwNGY4Zjc3ZGE1ZDhk
ZGFmN2E4NDE1MjcxNDk0MzI5MmU0Li4xZTg0MmJhN2Y0NDQ5NGViNjU0MmU4ZTk1MDBiODIyMWRm
MTAwZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTAzMyw3ICsxMDMzLDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCiAgICAg
V2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAobG9hZGVyLT51
cmxGb3JIaXN0b3J5KCkgPT0gYmxhbmtVUkwoKSkKKyAgICBpZiAobG9hZGVyLT51cmxGb3JIaXN0
b3J5KCkgPT0gV1RGOjpibGFua1VSTCgpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVu
dENvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAppbmRleCBmZDRjZDRjNGIzNmQ4YmZm
NGJjZTU3YmYxNWVkNmY4OWY0ZWNkNTgwLi4wNzdkMDE0ZDNlNTM1YzdhOGFiYjM0NjhlMWQ2NTRl
OWZlOWJlMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaApAQCAt
NDEsNyArNDEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuTWFrZVBheW1lbnRzKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5n
JiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkIChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgYm9v
bCBzaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYs
IGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNo
YW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVu
dENvb3JkaW5hdG9yQ2xpZW50Lm1tCmluZGV4IDMzNDkzYmQ5ZjE2MGJkYThhYWM1ZGFmZmZhNTky
YTU2MGZhOTkyODIuLjMwZTA2Y2FmOTMxYWUwNjZjMzY5YjczNTExM2Q5YzQ4YTdiZGMwZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KQEAgLTI3LDggKzI3LDgg
QEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQ6OldlYlBheW1lbnRDb29yZGluYXRvckNsaWVudCgpCiB7CkBA
IC02Nyw3ICs2Nyw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpvcGVuUGF5
bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsCiAgICAgfSk7CiB9CiAKLWJv
b2wgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpzaG93UGF5bWVudFVJKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiwgY29uc3QgV2ViQ29yZTo6QXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKQorYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3JD
bGllbnQ6OnNob3dQYXltZW50VUkoY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFVSTD4mLCBjb25z
dCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYpCiB7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCA4MWY3YzRmNjljZDEx
MTQ0MDI3NTljZWM5OTllOTIzMTk1Yjc2M2VmLi4zN2U3MTQzODlkNzA0NjQ3YjkxZWUwZDY2MDdi
ZDc4NDcwZGY1ZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNDgsMTMgKzQ4
LDEzIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9iUmVn
aXN0cnkoKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQotICAg
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcykgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMp
IG92ZXJyaWRlOwotICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92
ZXJyaWRlOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgaW50IGdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpVUkwgcmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2Fy
ZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUp
IG92ZXJyaWRlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAg
IHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CkBA
IC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92
ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKIAogICAgIGxvbmcgd3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGJlNTA5NmI5N2Y2Y2Ix
ZjUwYzQ5MzljYTE3ZTc2NWY4OWEzNWVmMDUuLjAxOTI1ZWVlODJjZTQxMDBmZDQyMzc0OTM3ODY4
ZmMxNTY0YmQ0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTIzOSw3ICsy
MzksNyBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbgogICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQogCi1XZWJD
b3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQorVVJM
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKIHsKICAgICByZXR1
cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4LCB0aXRs
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCmluZGV4IGQxYWI1NTExODRjMGE1ZjY0
OTk0MGQ4ZTkyN2JkODRlNTI5YzdmZjAuLjUyNWVlMmZjZGVlYTE2YzVjNmY5ZGZlODEzNWVkN2Qx
YzVlYmJkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCkBAIC0zNSw3ICszNSw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpIG92ZXJyaWRlOwog
ICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2Um
LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVy
Pj4mKSBmaW5hbDsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBs
dWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAg
IFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3Jl
OjpQYWdlJiwgY29uc3QgVVJMJikgZmluYWw7CiAKICAgICBXZWJQbHVnaW5JbmZvUHJvdmlkZXIo
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIubW0KaW5kZXggZTM0ZWM3M2U1NGZiZDk1
NDE2OGZmY2E1NTJlNGYzNmJjOTVmNTQ0Yi4uYjA2ZGE2ZjBmMGMzNTdiMDBiYTg3NDkxY2IxN2Jm
ZDJmYTk0ZTM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdpbkluZm9Qcm92aWRlci5tbQpAQCAtNzQsNyArNzQs
NyBAQCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpw
bHVnaW5JbmZvKFdlYkNvcmU6OlBhZ2UmIHBhZwogICAgIHJldHVybiBwbHVnaW5zOwogfQogCi1W
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjp3ZWJWaXNp
YmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJiBwYWdlLCBjb25zdCBXZWJDb3JlOjpVUkwmKQor
VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlz
aWJsZVBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYgcGFnZSwgY29uc3QgVVJMJikKIHsKICAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcnM7CiAgICAgcmV0dXJuIHBsdWdpbkluZm8ocGFnZSwgc3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQppbmRleCBiNDNhYWE3NGZl
YTI0MmMxOTFkZWUxOGRiNGJhMjhlNWY2MGI5YWRmLi4wNjdmNTZjZGUzOTQyYzJlYTcxYjFmNGI1
MmY4NzFhNWQ0NjEzY2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAtMzQsNyArMzQsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgorI2ltcG9ydCA8d3RmL1VSTC5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4IGFlZjRmYzUy
YWFlNDEyZjNlNmM0ZWNmNDAzOTViNDNlODdjYzk0NmMuLjIwZWU1MTg3OTQ1NTk3MmFiNGIwM2M0
NjJhZTMxZjM5NDllYzkxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJWaXNpdGVkTGlua1N0b3JlKCk7CiAKLSAg
ICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OlNoYXJlZFN0cmlu
Z0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBh
dHRyaWJ1dGVVUkwpIG92ZXJyaWRlOworICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQ
YWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25z
dCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRWaXNp
dGVkTGluayhXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzSWZOZWVkZWQoV2ViQ29yZTo6UGFn
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCmluZGV4IDBmYzliOTFhY2FjNmI4ZGUxM2UxOWFmODIzNzliYmRhODIzZmU5MzMuLjY0NWIx
YjI0YWEyNmIwMTY2OGI4ZjE1MmRiN2IxM2M1NzIzOGY2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTU1LDcgKzU1LDYgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVVJMUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYktp
dExlZ2FjeS9ET01IVE1MLmg+CkBAIC02NSw2ICs2NCw3IEBACiAjaW1wb3J0IDx3dGYvUmVmUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgor
I2ltcG9ydCA8d3RmL1VSTC5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQg
IldlYlBERlZpZXdJT1MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCmluZGV4IGMxNDQwMjk4YTg4ZTA2OWE0ZDE2MjFhYzgxZTI4M2MyOWQ5NTgyY2EuLmQ5
ZDlhOWY2ODYxMmY0YWQ0YjAzNjIyNGM4MGRjZWZhZjEyNGQ0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMjUwOCw3ICsyNTA4LDcgQEAgc3Rh
dGljIE5TVVJMICpjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCkKICAgICBpZiAoYmFzZVVSTCkKICAg
ICAgICAgYmFzZVVSTCA9IFtiYXNlVVJMIGFic29sdXRlVVJMXTsKICAgICBlbHNlIHsKLSAgICAg
ICAgYmFzZVVSTCA9IGJsYW5rVVJMKCk7CisgICAgICAgIGJhc2VVUkwgPSBXVEY6OmJsYW5rVVJM
KCk7CiAgICAgICAgIHJlc3BvbnNlVVJMID0gY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgpOwogICAg
IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCA3NTRjY2NjMWFmMjgw
NjU1OGNlZjk2Yjg4Y2M2ZTY4NzMzY2EyMmE2Li5mNTE0Yjg0MDU0YzIxYTkzNzNiZGU3ZjViOWE0
MDFkOGRlZmIzNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCkBAIC0yNTYsMTcg
KzI1NiwxNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBOU1VSTCAqdXJsID0gX2hp
dFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgTlNTdHJpbmcgKmFic29sdXRlVVJM
U3RyaW5nID0gW3VybCBhYnNvbHV0ZVN0cmluZ107CiAgICAgaWYgKHVybCAmJiBfaGl0VGVzdFJl
c3VsdC5VUkxFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKHByb3RvY29sSXMoYWJzb2x1dGVVUkxT
dHJpbmcsICJtYWlsdG8iKSkgeworICAgICAgICBpZiAoV1RGOjpwcm90b2NvbElzKGFic29sdXRl
VVJMU3RyaW5nLCAibWFpbHRvIikpIHsKICAgICAgICAgICAgIF90eXBlID0gV2ViSW1tZWRpYXRl
QWN0aW9uTWFpbHRvTGluazsKICAgICAgICAgICAgIHJldHVybiBbc2VsZiBfYW5pbWF0aW9uQ29u
dHJvbGxlckZvckRhdGFEZXRlY3RlZExpbmtdOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHBy
b3RvY29sSXMoYWJzb2x1dGVVUkxTdHJpbmcsICJ0ZWwiKSkgeworICAgICAgICBpZiAoV1RGOjpw
cm90b2NvbElzKGFic29sdXRlVVJMU3RyaW5nLCAidGVsIikpIHsKICAgICAgICAgICAgIF90eXBl
ID0gV2ViSW1tZWRpYXRlQWN0aW9uVGVsTGluazsKICAgICAgICAgICAgIHJldHVybiBbc2VsZiBf
YW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZExpbmtdOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKFdlYkNvcmU6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoYWJzb2x1dGVVUkxTdHJp
bmcpKSB7CisgICAgICAgIGlmIChXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoYWJzb2x1dGVV
UkxTdHJpbmcpKSB7CiAgICAgICAgICAgICBfdHlwZSA9IFdlYkltbWVkaWF0ZUFjdGlvbkxpbmtQ
cmV2aWV3OwogCiAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGxpbmtSYW5nZSA9IHJhbmdlT2ZD
b250ZW50cygqX2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRleCA4YjEwZTZmMWUwMGViYjNlNDhl
MWNhZWMwMTFmODRmYTIxNTMyZjU2Li4zMjIxZDYwYzhmMDlkYTg3NDZkNzQwMDRjYjJhYzFiZWQ0
NDc3NDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBE
RlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3
Lm1tCkBAIC02Miw5ICs2Miw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIGV4dGVybiAiQyIgewog
ICAgIGJvb2wgQ0dDb250ZXh0R2V0QWxsb3dzRm9udFNtb290aGluZyhDR0NvbnRleHRSZWYgY29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNj
cmlwdERlYnVnZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3Jp
cHREZWJ1Z2dlci5tbQppbmRleCA4NWFmZmMxYmNhMGQ4NzgzM2I0NDk2MjJlYTFkYWEzMmFhMGM2
NDlhLi41ZmNmOWY2YWZlMDUxYmIyZjdjY2YxM2UzMjdiNDVhNTU2Nzg4YmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0K
QEAgLTM5LDggKzM5LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+
CisjaW1wb3J0IDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXdJbnRlcm5hbC5oCmluZGV4IGFmMTUyYzhmNzZhNGRiYmI2OTgzODFjNTI1YmZhYTE2OTQ5
YzlkMzYuLjU3OWM4ZDg4NTA3MjlkYjc5M2M2NjlkNzQ5Nzk5M2VjZjYzZjc3ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAt
NTcsNyArNTcsNiBAQCBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJl
bmRlckJveDsKIGNsYXNzIFRleHRJbmRpY2F0b3I7Ci1jbGFzcyBVUkw7CiBzdHJ1Y3QgRGljdGF0
aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCmluZGV4IDZhZjMxNTEz
MTY1MThhMmNmNTYyODg4MWI0ODVjMjIzMzBjYzgwOTcuLjc0NzFhMTE2YzczMmRiZWY4ZmZmMTEw
YzNkMTFiYzM2Yzg5ZThiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01h
cnNoYWxsaW5nSGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hh
bGxpbmdIZWxwZXJzLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9C
U3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01hcnNoYWxsaW5nSGVscGVycy5oCmluZGV4IDgxMTlkNDJmOTg2MjcwMzNiMTEzYTU0MDg2
ZDFiMGJkYWU3OGU5MjIuLmM3NmVkODNjNTJiNjNhOWFiYTM2NzNiOTA3ZWU1MTY0MTU4MGNiODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oCkBAIC0z
MCwxNSArMzAsMTQgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBV
Ukw7CitjbGFzcyBJbnRSZWN0OwogfQogCiBjbGFzcyBNYXJzaGFsbGluZ0hlbHBlcnMKIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgV2ViQ29yZTo6VVJMIEJTVFJUb0tVUkwoQlNUUik7Ci0gICAgc3Rh
dGljIEJTVFIgVVJMVG9CU1RSKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHN0YXRpYyBVUkwg
QlNUUlRvS1VSTChCU1RSKTsKKyAgICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29uc3QgVVJMJik7
CiAgICAgc3RhdGljIENGVVJMUmVmIFBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBXVEY6
OlN0cmluZyYpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBGaWxlQ0ZVUkxSZWZUb1BhdGhTdHJp
bmcoQ0ZVUkxSZWYgZmlsZVVSTCk7CiAgICAgc3RhdGljIENGVVJMUmVmIEJTVFJUb0NGVVJMUmVm
KEJTVFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcAppbmRleCBmMjQzNjAzY2U2NzE1ZDhmMWYwODhkZWFmMjlhZTAwNzFkOGU5NDY4
Li45Y2RjYzE0NWI3MTk5OWNkYTY5ODQxNGU1MmZlMjJjMzdhODk3Yjg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMjgs
OCArMjgsOCBAQAogCiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IDAxMzcwOGVi
ZDcxZjk4MzcwNTQ5YTQ0NjQxMWJmYTRjN2ZkOTMwYWQuLmFjYzBlMWZiYTc0NjQyOTQ0MWJiOWFk
NjRmZGJjZTI1MGQyZGI3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmgKQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSW50U2l6
ZTsKLSAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgUGx1Z2luRGF0YWJhc2VDbGllbnQ7CiAgICAg
Y2xhc3MgUGx1Z2luUGFja2FnZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCBjM2U0OWY0NDE5NjU0NjEwZWZk
NGRjNWY1ZWJkOWFiMDkxYzA2ZTE1Li44MTRlMmJiNmRjMzkxZmMyZmZhMWE5NWI2OWU0NmQ0NTgw
YzAzNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
bkRhdGFiYXNlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiUGx1Z2lu
UGFja2FnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaAppbmRleCBmNjI4
Y2NkM2Q1YTQ1OTI2ZTUzNzAzNTJkODZkYzlhNzUzNTU4ZTcxLi5jMWI5Zjg3YWM0ZTYyMmZiYjJl
MmUyMDVkMTY0NTljMGMxOTRlN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luU3RyZWFtLmgKQEAgLTMyLDEwICszMiwxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVfaW50ZXJuYWwuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VS
TC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCBiNGU5MWY2ZTEyYjNiYjliMmEzOWQ4
YmE4ZjAyYTk0MjA0MDViZDMwLi43Y2ZjN2E5YTgyZTcyYzkxMmY1ZGI5OTljZmIzN2JmOWNmMWE5
ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaApA
QCAtNjAsNyArNjAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSFRNTFBsdWdJ
bkVsZW1lbnQ7CiAgICAgY2xhc3MgS2V5Ym9hcmRFdmVudDsKICAgICBjbGFzcyBNb3VzZUV2ZW50
OwotICAgIGNsYXNzIFVSTDsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBj
bGFzcyBQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaAppbmRleCAyMDNkMTU2NWUyNTg2MTczY2EyNTYxYTU0NWEzOGU2MGU3NWM4ZDgyLi5j
OWRlNDliM2NkMTQ1NTE3MjhmYjJmOWQ5NmVmNDkwZTk5MTU4YmQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGNvbnRleHRNZW51RGVzdHJveWVkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0
IFVSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6
OkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpG
cmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBXVEY6OlN0cmluZyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3Rv
cE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcAppbmRleCA2NDM1
MDc2N2Y5MzQwMjZkMDljMGZhOGI4OGRjY2RkMzg5NDJlZDA3Li5jYzAzOGNlZmQ5MTVmNDUxNmQ1
ODdiYWYxMDlhNWFkNjQ3YTIwMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZp
Y2F0aW9uc0RlbGVnYXRlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIldlYlZpZXcu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3Vt
ZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAK
ICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlm
aWNhdGlvbnNEZWxlZ2F0ZS5oCmluZGV4IGYwZjFkOTJmMmRiMjViNzQ0Mjg3NzUyNDYyYWZiYTRi
YzFkMWM3ZjEuLjgyOTZjOGNjYjY4ODdkMzQ1NDhkNWE2NGM2ODY3NzI2YTc0NjA3NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKQEAgLTM4LDcgKzM4
LDYgQEAgaW50ZXJmYWNlIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFVSTDsKIH0KIAogY2xhc3Mg
V2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmlj
YXRpb25DbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYTdhMjg5NzIxZjli
NzNiOTg4NGQzM2U2ZmU2M2VlNzdlYWU5ZTY0ZC4uMDgyMmI4MzU3YjMwMGUyNTY3ZWM4N2I0NmQ3
ZTdlMmU1N2VmMDhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC04NSw3ICs4NSwx
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaERpZERpc3BhdGNoT25sb2FkRXZlbnRzKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGll
bnRSZWRpcmVjdCgpIG92ZXJyaWRlOworPDw8PDw8PCBIRUFECiAgICAgdm9pZCBkaXNwYXRjaFdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVy
dmFsLCBXYWxsVGltZSBmaXJlRGF0ZSwgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCkgb3Zl
cnJpZGU7Cis9PT09PT09CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QoY29uc3QgVVJMJiwgZG91YmxlIGludGVydmFsLCBXYWxsVGltZSBmaXJlRGF0ZSkgb3ZlcnJp
ZGU7Cis+Pj4+Pj4+IGNoYW5nZXMKICAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25X
aXRoaW5QYWdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhp
blBhZ2UoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGlu
UGFnZSgpIG92ZXJyaWRlOwpAQCAtMTM5LDggKzE0Myw4IEBAIHB1YmxpYzoKICAgICBib29sIHNo
b3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25z
dCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBX
ZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBV
UkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sIGRp
ZEJsb2NrRW50aXJlUGFnZSkgb3ZlcnJpZGU7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRl
OwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwpAQCAtMTUzLDEyICsxNTcsMTIgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CiAKLSAgICBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6
VVJMJikgb3ZlcnJpZGU7CisgICAgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIG92
ZXJyaWRlOwogCiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVu
dExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRM
b2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBvdmVycmlkZSB7IH0KIAotICAgIHZvaWQg
c2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzYXZl
UGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIG92ZXJyaWRl
OwogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6
OkNhY2hlZEZyYW1lKikgb3ZlcnJpZGU7CkBAIC0xODQsMTUgKzE4OCwyMSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IG92ZXJyaWRlOwogCis8PDw8PDw8IEhFQUQK
ICAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQmLAogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIpIG92ZXJyaWRlOwogICAg
IFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIG92ZXJyaWRlOworPT09PT09PQor
ICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29uc3Qg
V1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCYsCisgICAg
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGlu
dCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBi
b29sIGxvYWRNYW51YWxseSkgb3ZlcnJpZGU7Cis+Pj4+Pj4+IGNoYW5nZXMKICAgICB2b2lkIHJl
Y3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVk
aXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Jikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIG92ZXJyaWRlOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJMLCBj
b25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBwYXJhbVZhbHVlcykgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpPYmplY3RDb250
ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6
OlN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRU
eXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1l
VHlwZSkgb3ZlcnJpZGU7CiAgICAgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCmluZGV4IDBjNGZiMDQyNGQwMWVhMTE1ZDI3ZWNlNzJlMTkwMzg3NmU1YzFlNTku
LmJlMjRjYjhhNTY4NTljZDQzY2UxOWYwYTE3YmJmODFkYTdjOTlmMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCkBAIC00NSwxMSArNDUsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCk7CiAKICAgICAvLyBX
ZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVz
Rm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wg
Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7Ci0g
ICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsK
LSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNv
cmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0
UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z2luSW5mb1By
b3ZpZGVyLmNwcAppbmRleCAxYTQ1YWI4ZGUyODIzN2NmZGViNmYzOWRlMGYxNzRlZWI1ZDgyM2Vm
Li5kMzEwZDI5MTAwODcwMDllODliYWZlZjVmMGUwMTI3NjE5NGRkZTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnaW5JbmZvUHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdl
JiBwYWcKICAgICByZXR1cm4gb3V0UGx1Z2luczsKIH0KIAotVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbkluZm8oV2ViQ29y
ZTo6UGFnZSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6VVJMJikKK1ZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OndlYlZpc2libGVQbHVnaW5JbmZvKFdlYkNv
cmU6OlBhZ2UmIHBhZ2UsIGNvbnN0IFVSTCYpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
V2ViQ29yZTo6U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbk5hbWVz
OwogICAgIHJldHVybiBwbHVnaW5JbmZvKHBhZ2UsIHN1cHBvcnRlZFBsdWdpbk5hbWVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdp
bkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5kZXggODAxYmNiN2I0NjJkY2NkZGZjNzY1MmI2NGFm
MDZmODYwZmZjNTVmYi4uMTBmNzY2ZTA2MDQ0ZDE1OWIwYTFjZDkzOTQ5MjFlNzYxMmQ1NzkyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgZmluYWw7CiAgICAgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbkluZm8oV2ViQ29yZTo6UGFnZSYsIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsOwot
ICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJD
b3JlOjpQYWdlJmksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOworICAgIFZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhXZWJDb3JlOjpQYWdlJmksIGNv
bnN0IFVSTCYpIGZpbmFsOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHNldFBsdWdpbkxv
YWRDbGllbnRQb2xpY3koV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSwgY29uc3QgU3Ry
aW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dmVyc2lvblN0cmluZykgZmluYWw7CiAgICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVz
KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKaW5kZXggNmE3Yjk5MjJjM2EzOTE1MjJj
M2RhMDQ3ZTRhMDY5NzNiNDA0ZDExMC4uOGJlZGU5ZTI1ODE5MTgzMjAyNzBlYWI2NTI3NGE3YTkw
NmRiNThhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFdlYlZpc2l0ZWRMaW5rU3RvcmUoKTsKIAotICAgIGJvb2wgaXNM
aW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVS
TCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBXZWJD
b3JlOjpTaGFyZWRTdHJpbmdIYXNoLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0
cmluZyYgYXR0cmlidXRlVVJMKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdl
YkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgcG9wdWxhdGVWaXNpdGVkTGlua3NJZk5lZWRlZChXZWJDb3JlOjpQYWdlJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGE2ODJjNjI3NTBlMTFm
NTIxNTY3MjFmM2Q4MjgyZDU3ZTBmODA2ZDIuLmI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBj
Y2E5YzRlZjAzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3Bw
CkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuaAppbmRl
eCA4NDg4NWYyNGZiODM0YTJkZmNhODJlZWI3OWUxOWM3MTkxMDRhNDcyLi40ZjYxMTFlMjNiMmMy
ZTA3ZTBhZTRhZmFkNThlYTUwZWQxYTMyYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRv
d25sb2FkLmgKQEAgLTM4LDcgKzM4LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci0gICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNTIsMTMgKzUx
LDEzIEBAIGNsYXNzIFdlYkRvd25sb2FkCiAjZW5kaWYKIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
V2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3du
bG9hZERlbGVnYXRlKik7CisgICAgc3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJbnN0YW5jZShj
b25zdCBVUkwmLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOwogICAgIHN0YXRpYyBXZWJEb3dubG9h
ZCogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgSVdl
YkRvd25sb2FkRGVsZWdhdGUqKTsKICAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3Rh
bmNlKCk7CiBwcml2YXRlOgogICAgIFdlYkRvd25sb2FkKCk7CiAgICAgdm9pZCBpbml0KFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7Ci0g
ICAgdm9pZCBpbml0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7
CisgICAgdm9pZCBpbml0KGNvbnN0IFVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CiAgICAg
fldlYkRvd25sb2FkKCk7CiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IGNkZjhjYWQ2
YTM2OTZlZWJhY2U2MmY0ZTU3ODRjZWU0YmVmMWQ5ZTkuLjI3YWYxYmFlNjUzZWZmMDJmNjcwNGY3
ZTM5YWQwZTFhYzUwYWQ3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4
IGRiZWE2OThhNTc1MDIxMmE1MDY1MGU3ODM5MTY5ZDBhNWUxYjM3NTQuLmM0ZDA4MzYyZGFkNWU4
MzkzZThkZmY4MzFjMjU5ODFhMmM3N2ZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
aApAQCAtMzQsOSArMzQsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVXaW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHNh
bC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5
MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgSFJFU1VMVCBtYXRjaExhYmVsc0FnYWluc3RFbGVt
ZW50KGNvbnN0IEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElET01FbGVtZW50KiBhZ2FpbnN0
RWxlbWVudCwgQlNUUiogcmVzdWx0KTsKICAgICBIUkVTVUxUIGNhblByb3ZpZGVEb2N1bWVudFNv
dXJjZShib29sKiByZXN1bHQpOwogCi0gICAgV2ViQ29yZTo6VVJMIHVybCgpIGNvbnN0OworICAg
IFVSTCB1cmwoKSBjb25zdDsKIAogICAgIFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsKICAgICB2
b2lkIHNldFdlYlZpZXcoV2ViVmlldyopOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHByb3RlY3RlZDoK
ICAgICBjbGFzcyBXZWJGcmFtZVByaXZhdGU7CiAgICAgV2ViRnJhbWVQcml2YXRlKiBkOwogICAg
IGJvb2wgbV9xdWlja1JlZGlyZWN0Q29taW5nIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpVUkwg
bV9vcmlnaW5hbFJlcXVlc3RVUkw7CisgICAgVVJMIG1fb3JpZ2luYWxSZXF1ZXN0VVJMOwogICAg
IGJvb2wgbV9pblByaW50aW5nTW9kZSB7IGZhbHNlIH07CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6
SW50UmVjdD4gbV9wYWdlUmVjdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3Bw
CmluZGV4IDIyYjA4NDZhOTA2Yjc4Mjg2NTZiOGQ5NTdjMTBhMGRmYWZmOGIzMDEuLjAyMzM4NGNl
OTZmMTA5NDljZGQ1OWY3NzRhODE0NWViYmVhN2I3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhpc3RvcnkuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAKICNpbmNsdWRlICJXZWJWaXNpdGVk
TGlua1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5
LmgKaW5kZXggYTUyYzUxZjJiYmRjM2IwMmM4ZmJjYjgzNzFlNmZkZWIwNGMxODcwZC4uYjlkMTcw
YTM2ZTExOTlhYTM3MTFlOTY5MDYwNGRjMmE5NTA1Mjk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhpc3RvcnkuaApAQCAtMzMsOCArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBVUkw7Ci0gICAgY2xhc3MgUGFnZUdy
b3VwOworY2xhc3MgUGFnZUdyb3VwOwogfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03
OCw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkhpc3RvcnkKICAgICBzdGF0aWMgV2Vi
SGlzdG9yeSogc2hhcmVkSGlzdG9yeSgpOwotICAgIHZvaWQgdmlzaXRlZFVSTChjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiBo
dHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENvdW50KTsKKyAg
ICB2b2lkIHZpc2l0ZWRVUkwoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBj
b25zdCBXVEY6OlN0cmluZyYgaHR0cE1ldGhvZCwgYm9vbCB3YXNGYWlsdXJlLCBib29sIGluY3Jl
YXNlVmlzaXRDb3VudCk7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGlua3NUb1Zpc2l0ZWRMaW5rU3Rv
cmUoV2ViVmlzaXRlZExpbmtTdG9yZSYpOwogCiAgICAgQ09NUHRyPElXZWJIaXN0b3J5SXRlbT4g
aXRlbUZvclVSTFN0cmluZyhjb25zdCBXVEY6OlN0cmluZyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDg0Mzc2MjAxZDA3ZWIzZmVmNWVi
MmQ5YTcyMTc2ZDMxN2Y5OTEyMmUuLmE4NTU5YTVmZDIyN2NiZDJiMTdlYWYyODVlYTYzOTVlYWZm
OGE2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAg
LTMyLDggKzMyLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRl
eCBiMjkyZGRlN2RjY2VmNjJmY2E3M2IwYzRjYjRiYWIyYWRjNWJmZmIwLi45NDNmYTdhYjQ1Yzhi
MGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiAvLyBXZWJSZXNvdXJjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2ViUmVzb3VyY2U6OldlYlJlc291cmNl
KElTdHJlYW0qIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBX
VEY6OlN0cmluZyYgZnJhbWVOYW1lKQorV2ViUmVzb3VyY2U6OldlYlJlc291cmNlKElTdHJlYW0q
IGRhdGEsIGNvbnN0IFdURjo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBm
cmFtZU5hbWUpCiAgICAgOiBtX2RhdGEoZGF0YSkKICAgICAsIG1fdXJsKHVybCkKICAgICAsIG1f
bWltZVR5cGUobWltZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRl
eCBiOGM3ZGNjYjAzNzQ5YWI3ODczZTM3ZmZhMjlmMjUyYzY1M2JlYmE1Li40ZGYzZTBjMTE1MDQ2
NTBhOWYyYjAxYzIxNzFlMjFmYzIxYTBiOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmgKQEAgLTI4LDE3ICsyOCwxNyBAQAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogY2xhc3MgV2ViUmVzb3VyY2UgOiBw
dWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIHByb3RlY3RlZDoKLSAgICBXZWJSZXNvdXJjZShJU3Ry
ZWFtKiBkYXRhLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RGOjpT
dHJpbmcmIGZyYW1lTmFtZSk7CisgICAgV2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3Qg
V1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSk7CiAg
ICAgfldlYlJlc291cmNlKCk7CiAKIHB1YmxpYzoKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogICAgIENPTVB0cjxJU3RyZWFt
PiBtX2RhdGE7Ci0gICAgV2ViQ29yZTo6VVJMIG1fdXJsOworICAgIFdURjo6VVJMIG1fdXJsOwog
ICAgIFdURjo6U3RyaW5nIG1fbWltZVR5cGU7CiAgICAgV1RGOjpTdHJpbmcgbV90ZXh0RW5jb2Rp
bmdOYW1lOwogICAgIFdURjo6U3RyaW5nIG1fZnJhbWVOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDgxYjI2OWZjNDIwYzU5Y2M2ZWY1
ZDk5MmZjNzZjYzQ5YjBlYTBmYjguLjk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3N2YwY2QwNjAwMjQ2
YTEwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3Jp
Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggYTYwODJiNDhkYTFmOTk2MmM5MjY1OGQwNWVl
MjYyMTYwNjk0YjQ3Yi4uNTY5Yjk4MjY0YjQ1Yjg4NzhiNTg3MmMzMzEyZmUxMzg0MmM1MjBjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtNDAsMTMg
KzQwLDEzIEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNobHdhcGku
aD4KICNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCBXZWJVUkxSZXNwb25zZSogV2Vi
VVJMUmVzcG9uc2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5z
dGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9u
c2UgLSBzbyBpdCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5z
dGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVSTCh7IH0sICJo
dHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9u
c2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8iKSwgU3RyaW5nKCks
IDAsIFN0cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3Rh
bmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAKaW5kZXggYmQxMjY3NThhNTFjYzM1MzhmOWFjOTUzN2NmYjFmYzdkZmRh
ZTM4OC4uNDgxMjM4NDcxM2M4Yjk5ZGE1Y2JhNWI2M2YyNTQ0NDlmZTUwYzY0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
CkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0JTdHJpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlZpZXcuaAppbmRleCAzNjFiZTUzYTlmMjk4N2ZhNjJhNWUyNzc5MWJlYzNjMWQxNjAyNDc3Li4x
NjE3ZjEwYTRkYWQyNDcxNjI5YTAxMmIwNDk4YzY3MzNiOTE0YjRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5oCkBAIC00NjMsNyArNDYzLDcgQEAgcHVibGljOgogCiAgICAgLy8gQ29udmVu
aWVudCB0byBiZSBhYmxlIHRvIHZpb2xhdGUgdGhlIHJ1bGVzIG9mIENPTSBoZXJlIGZvciBlYXN5
IG1vdmVtZW50IHRvIHRoZSBmcmFtZS4KICAgICBXZWJGcmFtZSogdG9wTGV2ZWxGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lOyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIHVzZXJB
Z2VudEZvcktVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpOworICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiB1c2VyQWdlbnRGb3JLVVJMKGNvbnN0IFVSTCYgdXJsKTsKIAogICAgIHN0YXRpYyBib29s
IGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKQEAg
LTUwMiw3ICs1MDIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvbkdldE9iamVjdChXUEFSQU0sIExQ
QVJBTSwgTFJFU1VMVCYpIGNvbnN0OwogICAgIHN0YXRpYyBTVERNRVRIT0RJTVAgQWNjZXNzaWJs
ZU9iamVjdEZyb21XaW5kb3coSFdORCwgRFdPUkQgb2JqZWN0SUQsIFJFRklJRCwgdm9pZCoqIHBw
T2JqZWN0KTsKIAotICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7Cisg
ICAgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgZmx1c2hQZW5kaW5n
R3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCk7CiAgICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZGEzMWQ5ZGFhZDNiN2QxZjg0N2NhZjAxNjcyODY4ZWFjM2Ni
OTFkOC4uZDJkZmYyNTk4ZWEyMzAwYWFjYzcyY2FjMGU4NTE4NzBlY2Q0YTQwOCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBA
CisyMDE4LTExLTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW92ZSBVUkwgZnJvbSBXZWJDb3JlIHRvIFdURgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1VSTC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVVUkwp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmNoZWNrVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkwpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVUkxEaWZmZXJlbmNlcyk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMu
bW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpvcmlnaW5hbERhdGFBc1N0cmluZyk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjp1c2VyVmlzaWJsZVN0cmluZyk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpsaXRlcmFsVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVybmF0ZUhUTUxT
dHJpbmcubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbToKKyAgICAgICAgKGxpdGVyYWxV
UkwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2ll
TWFuYWdlci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZEludmFs
aWRVUkxSZXF1ZXN0Lm1tOgorICAgICAgICAoLVtMb2FkSW52YWxpZFVSTFdlYkZyYW1lTG9hZERl
bGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcjpmb3JGcmFtZTpd
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW06
CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UpOgorICAg
ICAgICAqIGxsZGIvbGxkYl93ZWJraXQucHk6CisgICAgICAgIChfX2xsZGJfaW5pdF9tb2R1bGUp
OgorICAgICAgICAoV1RGVVJMX1N1bW1hcnlQcm92aWRlcik6CisgICAgICAgIChXVEZVUkxQcm92
aWRlcik6CisgICAgICAgIChXZWJDb3JlVVJMX1N1bW1hcnlQcm92aWRlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlVVJMUHJvdmlkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZVVS
TFByb3ZpZGVyLl9faW5pdF9fKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmVVUkxQcm92aWRl
ci50b19zdHJpbmcpOiBEZWxldGVkLgorCiAyMDE4LTExLTMwICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXRweTogVXNlIERldmljZVR5cGUgaW5z
dGVhZCBvZiBzdHIgdG8gcmVwcmVzZW50IGRldmljZSBjbGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXgg
NThlNjlkMGRmNjMwNTk3YTEwZGIyZTljOTZhMmQ4ZGRjZGFhN2M2OS4uMTg4YjhiZGUwYzVmMzQ5
ZWRjOWY0MjVjZjkwODNjYzc3NjhkMDcwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC0zOCwxMCArMzgs
MTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05GQS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTkZBVG9E
RkEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZEluZm8uaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMRmlsdGVyUGFyc2VyLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBiOTI4MzI0ZjM1OThkZGI0
NjE3YTFkZWViODgyNjM2MGM2NWE0MjA1Li5hYWQxNmI4NjA0MTc5Y2E0M2E5NzczNzk1ODU0YjU3
NTc3M2FmYzlhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJXVEZTdHJp
bmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9VUkwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VS
TC5jcHAKaW5kZXggNzM1MzRjODE3MzNlYmE0NTJmMzJmZDlmODIxNzFiYTliYTU0YjZiYi4uZGMz
MWI0N2JkMDc4NjhhZWRjYWZmOTdmNTY1NmQ4M2Y3ODlkODMyMSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKQEAgLTI1LDExICsyNSw5IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KIAogbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCkBAIC03Myw4ICs3MSw3IEBAIFRFU1RfRihVUkxUZXN0LCBVUkxDb25zdHJ1
Y3RvckNvbnN0Q2hhcikKIAogc3RhdGljIFVSTCBjcmVhdGVVUkwoY29uc3QgY2hhciogdXJsQXNT
dHJpbmcpCiB7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxBc1N0cmluZyk7Ci0gICAgcmV0dXJu
IHBhcnNlci5yZXN1bHQoKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgdXJsQXNTdHJpbmcpOwogfTsK
IAogVEVTVF9GKFVSTFRlc3QsIFVSTFByb3RvY29sSG9zdEFuZFBvcnQpCkBAIC0zMTcsMjAgKzMx
NCwyMCBAQCBURVNUX0YoVVJMVGVzdCwgRXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpCiAK
IFRFU1RfRihVUkxUZXN0LCBQcm90b2NvbElzSW5IVFRQRmFtaWx5KQogewotICAgIEVYUEVDVF9G
QUxTRShwcm90b2NvbElzSW5IVFRQRmFtaWx5KHt9KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoIiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRU
UEZhbWlseSgiYSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgi
YWIiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiYyIpKTsK
LSAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZCIpKTsKLSAgICBF
WFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZGUiKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2RlZiIpKTsKLSAgICBFWFBFQ1RfRkFM
U0UocHJvdG9jb2xJc0luSFRUUEZhbWlseSgiYWJjZGVmZyIpKTsKLSAgICBFWFBFQ1RfVFJVRShw
cm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRwOiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UocHJvdG9j
b2xJc0luSFRUUEZhbWlseSgiaHR0cCIpKTsKLSAgICBFWFBFQ1RfVFJVRShwcm90b2NvbElzSW5I
VFRQRmFtaWx5KCJodHRwczoiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBG
YW1pbHkoImh0dHBzIikpOwotICAgIEVYUEVDVF9UUlVFKHByb3RvY29sSXNJbkhUVFBGYW1pbHko
Imh0dHBzOi8vIUAjJCVeJiooKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElz
SW5IVFRQRmFtaWx5KHsgfSkpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoIiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCJhIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHko
ImFiIikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFi
YyIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNk
IikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2Rl
IikpOworICAgIEVYUEVDVF9GQUxTRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImFiY2Rl
ZiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJhYmNk
ZWZnIikpOworICAgIEVYUEVDVF9UUlVFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0
cDoiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdURjo6cHJvdG9jb2xJc0luSFRUUEZhbWlseSgiaHR0
cCIpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBz
OiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCJodHRw
cyIpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoImh0dHBz
Oi8vIUAjJCVeJiooKSIpKTsKIH0KIAogVEVTVF9GKFVSTFRlc3QsIEhvc3RJc0lQQWRkcmVzcykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKaW5k
ZXggM2UxMDU5MmEwM2QwYWIwMWUyYzE2NmE0NTNlYWFlZWMxZmEwMzljMS4uMWM0ZGNkZDA1ZTIx
ZDdiNWZkN2FiN2RmZTg1ZDhmMDVjMWFjOGE3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1RleHRFbmNvZGluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYQogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogCi0gICAg
RVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQodXJsKSk7Cisg
ICAgRVhQRUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1
cmwpKTsKIAogICAgIGlmICh0ZXN0VGFicyA9PSBUZXN0VGFiczo6Tm8pCiAgICAgICAgIHJldHVy
bjsKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOwogICAgIAotICAg
IEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwor
ICAgIEVYUEVDVF9UUlVFKFdURjo6VVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQo
dXJsKSk7CiAgICAgCiAgICAgaWYgKHRlc3RUYWJzID09IFRlc3RUYWJzOjpObykKICAgICAgICAg
cmV0dXJuOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVyZW5j
ZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnN0cmluZywgdXJsLnN0cmluZygpKSk7
CiAgICAgCi0gICAgRVhQRUNUX1RSVUUoVVJMUGFyc2VyOjppbnRlcm5hbFZhbHVlc0NvbnNpc3Rl
bnQodXJsKSk7CisgICAgRVhQRUNUX1RSVUUoV1RGOjpVUkxQYXJzZXI6OmludGVybmFsVmFsdWVz
Q29uc2lzdGVudCh1cmwpKTsKICAgICAKICAgICBpZiAodGVzdFRhYnMgPT0gVGVzdFRhYnM6Ok5v
KQogICAgICAgICByZXR1cm47CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tS
ZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGIKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuc3RyaW5nLCB1cmwu
c3RyaW5nKCkpKTsKICAgICAKLSAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6OmludGVybmFsVmFs
dWVzQ29uc2lzdGVudCh1cmwpKTsKKyAgICBFWFBFQ1RfVFJVRShXVEY6OlVSTFBhcnNlcjo6aW50
ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwogICAgIAogICAgIGlmICh0ZXN0VGFicyA9PSBU
ZXN0VGFiczo6Tm8pCiAgICAgICAgIHJldHVybjsKQEAgLTIxMyw4ICsyMTMsNyBAQCBzdGF0aWMg
dm9pZCBzaG91bGRGYWlsKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJh
c2VTdHJpbmcpCiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0
cywgVGVzdFRhYnMgdGVzdFRhYnMgPSBUZXN0VGFiczo6WWVzKQogewotICAgIFVSTFBhcnNlciBw
YXJzZXIodXJsU3RyaW5nLCB7IH0sIGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9IHBhcnNlci5y
ZXN1bHQoKTsKKyAgICBhdXRvIHVybCA9IFVSTCh7IH0sIHVybFN0cmluZywgZW5jb2RpbmcpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2woKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwpAQCAtMjM4LDkgKzIzNyw3IEBAIHN0
YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5j
b2RpbmcqIGVuY29kaW5nLCBjb25zCiAKIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IFRleHRFbmNv
ZGluZyogZW5jb2RpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGFicyB0ZXN0
VGFicyA9IFRlc3RUYWJzOjpZZXMpCiB7Ci0gICAgVVJMUGFyc2VyIGJhc2VQYXJzZXIoYmFzZVVS
TFN0cmluZywgeyB9LCBlbmNvZGluZyk7Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmxTdHJpbmcs
IGJhc2VQYXJzZXIucmVzdWx0KCksIGVuY29kaW5nKTsKLSAgICBhdXRvIHVybCA9IHBhcnNlci5y
ZXN1bHQoKTsKKyAgICBhdXRvIHVybCA9IFVSTChVUkwoeyB9LCBiYXNlVVJMU3RyaW5nKSwgdXJs
U3RyaW5nLCBlbmNvZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucHJvdG9jb2wsIHVy
bC5wcm90b2NvbCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVp
cmtzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWly
a3MuY3BwCmluZGV4IDRjODAzMmI5MzZjZmUzYTU5MWYyMDJlZjBlMGVhMWRmMGVmN2Q3YjcuLjBj
NWU2Mzc3OWJhN2UwMWZhNjg5YjcwOWQzYWY3ZmU1MThmNzAwNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0y
NSw4ICsyNSw4IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQWdlbnQuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwCmluZGV4IDc2YjEwMzU3NWNhNDI1Y2UzZmU1OGRhMzEzNmIwZWVjMGQ2ZDNmMWUuLjMwMGIx
M2NiY2ExMGMyMWIzMDdlZWUzMTE0ZGUwMGZiZjBmZTAyZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Zb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwCkBAIC0yNCw5ICsyNCw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Zb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVVJMRXh0cmFzLm1tCmluZGV4IDZmZmQ3
ZGFjYjNmYzAyMTJhNDA0ZDg1NmIzMThjOTM2OWY4OWZlOTYuLmI2NDBiMTBiZmYyZjAxOWI3Mjcy
NDNhN2M2MDA4NTFhZGFmZDc1ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9VUkxFeHRyYXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1VSTEV4dHJhcy5tbQpAQCAtMjUsOCArMjUsOCBAQAogCiAjaW1w
b3J0ICJjb25maWcuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4K
ICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5o
PgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKQEAgLTUwLDE3ICs1MCwxNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZGF0YUFzU3RyaW5n
KE5TRGF0YSAqZGF0YSkKIAogc3RhdGljIGNvbnN0IGNoYXIqIG9yaWdpbmFsRGF0YUFzU3RyaW5n
KE5TVVJMICpVUkwpCiB7Ci0gICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXZWJDb3JlOjpvcmlnaW5h
bFVSTERhdGEoVVJMKSk7CisgICAgcmV0dXJuIGRhdGFBc1N0cmluZyhXVEY6Om9yaWdpbmFsVVJM
RGF0YShVUkwpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJWaXNpYmxlU3RyaW5nKE5T
VVJMICpVUkwpCiB7Ci0gICAgcmV0dXJuIFtXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyhVUkwp
IFVURjhTdHJpbmddOworICAgIHJldHVybiBbV1RGOjp1c2VyVmlzaWJsZVN0cmluZyhVUkwpIFVU
RjhTdHJpbmddOwogfQogCiBzdGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29uc3QgY2hhciogbGl0
ZXJhbCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEobGl0ZXJhbEFzRGF0YShs
aXRlcmFsKSwgbmlsKTsKKyAgICByZXR1cm4gV1RGOjpVUkxXaXRoRGF0YShsaXRlcmFsQXNEYXRh
KGxpdGVyYWwpLCBuaWwpOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhcykKQEAgLTEyNyw4
ICsxMjcsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19EaXZpc2lvblNpZ24pCiAgICAgLy8g
U2VsZWN0ZWQgdGhlIGRpdmlzaW9uIHNpZ24gYXMgYW4gZXhhbXBsZSBvZiBhIG5vbi1BU0NJSSBj
aGFyYWN0ZXIgdGhhdCBpcyBhbGxvd2VkIGluIGhvc3QgbmFtZXMsIHNpbmNlIGl0J3MgYSBsb29r
YWxpa2UgY2hhcmFjdGVyLgogCiAgICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1
c2VkIHdoZW4gdHlwaW5nIGluIGEgVVJMLgotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUu
eG4tLWNvbW90aGVyc2l0ZS1ramIub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcoV2ViQ29yZTo6
VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRl
Lm9yZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3
b3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlw
ZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7
CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS54bi0tY29tb3RoZXJzaXRlLWtqYi5vcmci
LCBvcmlnaW5hbERhdGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRw
Oi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NU
UkVRKCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0
cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEMzXHhC
N290aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8g
dGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNl
cy4KICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9y
ZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbVx4QzNc
eEI3b3RoZXJzaXRlLm9yZyIpKSk7CkBAIC0xMzcsMTcgKzEzNywxNyBAQCBURVNUKFdlYkNvcmUs
IFVSTEV4dHJhc19EaXZpc2lvblNpZ24pCiAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5j
b21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRlcmFsVVJMKCJo
dHRwOi8vc2l0ZS5jb20lQzMlQjdvdGhlcnNpdGUub3JnIikpKTsKIAogICAgIC8vIFNlcGFyYXRl
IGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1lIG9uIGl0cyBvd24uCi0g
ICAgRVhQRUNUX1NUUkVRKCJzaXRlLnhuLS1jb21vdGhlcnNpdGUta2piLm9yZyIsIFtXZWJDb3Jl
OjplbmNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIikgVVRGOFN0
cmluZ10pOwotICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmci
LCBbV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRlLm9y
ZyIpIFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUueG4tLWNvbW90aGVyc2l0
ZS1ramIub3JnIiwgW1dURjo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3b3RoZXJz
aXRlLm9yZyIpIFVURjhTdHJpbmddKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tXHhDM1x4
QjdvdGhlcnNpdGUub3JnIiwgW1dURjo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4QzNceEI3
b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAotVEVTVChXZWJDb3JlLCBVUkxFeHRy
YXNfU29saWR1cykKK1RFU1QoV1RGLCBVUkxFeHRyYXNfU29saWR1cykKIHsKICAgICAvLyBTZWxl
Y3RlZCBmdWxsIHdpZHRoIHNvbGlkdXMsIHdoaWNoIGxvb2tzIGxpa2UgdGhlIHNvbGlkdXMsIHdo
aWNoIGlzIHRoZSBjaGFyYWN0ZXIgdGhhdCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgaG9zdCBu
YW1lLgogCiAgICAgLy8gQ29kZSBwYXRoIHNpbWlsYXIgdG8gdGhlIG9uZSB1c2VkIHdoZW4gdHlw
aW5nIGluIGEgVVJMLgotICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tL290aGVyc2l0
ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3Ry
aW5nKEAiaHR0cDovL3NpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsK
LSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgdXNlclZp
c2libGVTdHJpbmcoV2ViQ29yZTo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRl
LmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVR
KCJodHRwOi8vc2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKFdU
Rjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90
aGVyc2l0ZS5vcmciLCBuaWwpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20v
b3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0
cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBuaWwpKSk7
CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdXNlZCBmb3IgVVJMcyBm
b3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KICAgICBFWFBFQ1RfU1RSRVEoImh0
dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0
cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3Jn
IikpKTsKQEAgLTE1Niw4ICsxNTYsOCBAQCBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19Tb2xpZHVz
KQogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJUVGJUJDJThGb3RoZXJzaXRlLm9y
ZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVFRiVCQyU4
Rm90aGVyc2l0ZS5vcmciKSkpOwogCiAgICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25zIHRoYXQgZGVh
bCB3aXRoIGp1c3QgYSBob3N0IG5hbWUgb24gaXRzIG93bi4KLSAgICBFWFBFQ1RfU1RSRVEoInNp
dGUuY29tL290aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNv
bVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7Ci0gICAgRVhQRUNUX1NU
UkVRKCJzaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmRlY29kZUhvc3ROYW1lKEAi
c2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVY
UEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmVuY29kZUhvc3ROYW1l
KEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAg
IEVYUEVDVF9TVFJFUSgic2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIFtXVEY6OmRlY29kZUhvc3RO
YW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOwog
fQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKQEAgLTE2NSw4ICsxNjUsOCBAQCBU
RVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKICAgICAvLyBTZWxlY3RlZCBpZGVvZ3JhcGhp
YyBzcGFjZSwgd2hpY2ggbG9va3MgbGlrZSB0aGUgQVNDSUkgc3BhY2UsIHdoaWNoIGlzIG5vdCBh
bGxvd2VkIHVuZXNjYXBlZC4KIAogICAgIC8vIENvZGUgcGF0aCBzaW1pbGFyIHRvIHRoZSBvbmUg
dXNlZCB3aGVuIHR5cGluZyBpbiBhIFVSTC4KLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRl
LmNvbSUyMG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhXZWJDb3JlOjpVUkxX
aXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRl
Lm9yZyIsIG5pbCkpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVy
c2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3Ry
aW5nKEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCBvcmln
aW5hbERhdGFBc1N0cmluZyhXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0
ZS5jb21ceEUzXHg4MFx4ODBvdGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9TVFJF
USgiaHR0cDovL3NpdGUuY29tJTIwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKFdU
Rjo6VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90
aGVyc2l0ZS5vcmciLCBuaWwpKSk7CiAKICAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhl
IG9uZXMgdXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4K
ICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5v
cmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb21ceEUz
XHg4MFx4ODBvdGhlcnNpdGUub3JnIikpKTsKQEAgLTE3NSwzMSArMTc1LDMxIEBAIFRFU1QoV2Vi
Q29yZSwgVVJMRXh0cmFzX1NwYWNlKQogICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29t
JUUzJTgwJTgwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0
dHA6Ly9zaXRlLmNvbSVFMyU4MCU4MG90aGVyc2l0ZS5vcmciKSkpOwogCiAgICAgLy8gU2VwYXJh
dGUgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5hbWUgb24gaXRzIG93bi4K
LSAgICBFWFBFQ1RfU1RSRVEoInNpdGUuY29tIG90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZW5j
b2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3Ry
aW5nXSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5v
cmciLCBbV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVy
c2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbSBvdGhl
cnNpdGUub3JnIiwgW1dURjo6ZW5jb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90
aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbVx4
RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBbV1RGOjpkZWNvZGVIb3N0TmFtZShAInNpdGUuY29t
XHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKIH0KIAogVEVTVChXZWJD
b3JlLCBVUkxFeHRyYXNfRmlsZSkKIHsKLSAgICBFWFBFQ1RfU1RSRVEoImZpbGU6Ly8vJUUyJTk4
JTgzIiwgW1tXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTovLy/imIMiLCBu
aWwpIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSk7CisgICAgRVhQRUNUX1NUUkVRKCJmaWxl
Oi8vLyVFMiU5OCU4MyIsIFtbV1RGOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiZmlsZTovLy/i
mIMiLCBuaWwpIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSk7CiB9CiAKIFRFU1QoV2ViQ29y
ZSwgVVJMRXh0cmFzX1BhcnNpbmdFcnJvcikKIHsKICAgICAvLyBFeHBlY3QgSUROIGZhaWx1cmUu
Ci0gICAgTlNVUkwgKnVybCA9IFdlYkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRw
Oi8v76O/LmNvbSIsIG5pbCk7CisgICAgTlNVUkwgKnVybCA9IFdURjo6VVJMV2l0aFVzZXJUeXBl
ZFN0cmluZyhAImh0dHA6Ly/vo78uY29tIiwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwgPT0g
bmlsKTsKIAotICAgIE5TU3RyaW5nICplbmNvZGVkSG9zdE5hbWUgPSBXZWJDb3JlOjplbmNvZGVI
b3N0TmFtZShAImh0dHA6Ly/vo78uY29tIik7CisgICAgTlNTdHJpbmcgKmVuY29kZWRIb3N0TmFt
ZSA9IFdURjo6ZW5jb2RlSG9zdE5hbWUoQCJodHRwOi8v76O/LmNvbSIpOwogICAgIEVYUEVDVF9U
UlVFKGVuY29kZWRIb3N0TmFtZSA9PSBuaWwpOwogfQogCiBURVNUKFdlYkNvcmUsIFVSTEV4dHJh
c19OaWwpCiB7Ci0gICAgTlNVUkwgKnVybDEgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3Ry
aW5nKG5pbCwgbmlsKTsKKyAgICBOU1VSTCAqdXJsMSA9IFdURjo6VVJMV2l0aFVzZXJUeXBlZFN0
cmluZyhuaWwsIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUodXJsMSA9PSBuaWwpOwogCi0gICAgTlNV
UkwgKnVybDIgPSBXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nRGVwcmVjYXRlZChuaWws
IG5pbCk7CisgICAgTlNVUkwgKnVybDIgPSBXVEY6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmdEZXBy
ZWNhdGVkKG5pbCwgbmlsKTsKICAgICBFWFBFQ1RfVFJVRSh1cmwyID09IG5pbCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tCmluZGV4IDUwNWFmMzU3ZTVkMTAxZDE3NmI1MjNk
MTU1YTYyOTRiYmU4ZjdmZGYuLjkwZDQ2MTBjNzQxMDk5ZmFlNGE2MGJlOTc3NjVjYzNkN2IwZWNk
NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTG9h
ZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Mb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbQpAQCAtMzAsOSArMzAsOSBAQAog
CiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgotI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29j
b2EvTlNVUkxFeHRyYXMuaD4KIAogc3RhdGljIGJvb2wgaXNEb25lOwogc3RhdGljIGludCBwcm92
aXNpb25hbExvYWRDb3VudDsKQEAgLTExMCw3ICsxMTAsNyBAQCBURVNUKFdLV2ViVmlldywgTG9h
ZEFsdGVybmF0ZUhUTUxTdHJpbmdGcm9tUHJvdmlzaW9uYWxMb2FkRXJyb3JCYWNrVG9CYWNrKQog
ICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwog
CiAgICAgICAgIGNoYXIgbGl0ZXJhbFtdID0gImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tPD4vIjsK
LSAgICAgICAgTlNVUkwqIHRhcmdldFVSTCA9IFdlYkNvcmU6OlVSTFdpdGhEYXRhKFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpsaXRlcmFsIGxlbmd0aDpzdHJsZW4obGl0ZXJhbCldLCBuaWwpOworICAg
ICAgICBOU1VSTCogdGFyZ2V0VVJMID0gV1RGOjpVUkxXaXRoRGF0YShbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6bGl0ZXJhbCBsZW5ndGg6c3RybGVuKGxpdGVyYWwpXSwgbmlsKTsKICAgICAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0YXJnZXRVUkxd
XTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDp0YXJnZXRVUkxdXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQppbmRleCBhYzk4
YzE5NjQ0MGFiN2I1NTA4NGM5NWQ3OGQwOWZlN2ZjNzk3ZTNjLi5lYWE1NWNhYzY3ZjhlODQ0MTQz
MjdkNGRhZTMyNjA5NjQ1ZDk1YmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQpAQCAt
MjgsMTAgKzI4LDEwIEBACiAjaWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlldy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL05T
VVJMRXh0cmFzLmg+CiAKIHN0YXRpYyBib29sIGRpZEZpbmlzaFRlc3Q7CiBzdGF0aWMgYm9vbCBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkOwpAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciBsaXRlcmFsW10gPSAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb208Pi8iOwogCiBzdGF0aWMgTlNV
UkwgKmxpdGVyYWxVUkwoY29uc3QgY2hhciogbGl0ZXJhbCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxl
bihsaXRlcmFsKV0sIG5pbCk7CisgICAgcmV0dXJuIFdURjo6VVJMV2l0aERhdGEoW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CiB9CiAK
IEBpbnRlcmZhY2UgTG9hZEludmFsaWRVUkxOYXZpZ2F0aW9uQWN0aW9uRGVsZWdhdGUgOiBOU09i
amVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAppbmRleCBiMDUx
NDUyNGY3MjU5MWY2Y2I1MDI5MTEwMzFiN2JmYThhM2FmYTA3Li4xYmFhZTk1YWMwNjIzMWZiZmIy
OWE4YmExNDE4Nzc3MmI1YWYzYWQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAKQEAgLTIyLDggKzIy
LDggQEAKIAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3
VGVzdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxn
bGliL2dzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHJTb3VwLmg+CiAKIHN0
YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9Mb2FkSW52YWxpZFVSTFJlcXVlc3QubW0KaW5kZXggOGQ1NGNh
NmUxOWUwZDY5OTYyYTVmMTUzMjM1NDJhZWYyMDM1NzVkMS4uODZiN2IzYzRhOTk4NjMwZDI4NWU1
MTc5NWZjOGFkNjk4MWNmYzkyNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0xvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbQpAQCAtMjYsMTAgKzI2LDEwIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2
aWdhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogCiBz
dGF0aWMgYm9vbCBkaWRGaW5pc2hUZXN0Owogc3RhdGljIGJvb2wgZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZDsKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIGJvb2wgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZDsKICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMKTsK
IAogICAgIHN0YXRpYyBjaGFyIGxpdGVyYWxbXSA9ICJodHRwczovL3d3dy5leGFtcGxlLmNvbSQv
IjsKLSAgICBOU1VSTCAqZmFpbGVkVVJMID0gV2ViQ29yZTo6VVJMV2l0aERhdGEoW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CisgICAg
TlNVUkwgKmZhaWxlZFVSTCA9IFdURjo6VVJMV2l0aERhdGEoW05TRGF0YSBkYXRhV2l0aEJ5dGVz
OmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV0sIG5pbCk7CiAgICAgRVhQRUNUX1RSVUUo
W2Vycm9yLnVzZXJJbmZvW0AiTlNFcnJvckZhaWxpbmdVUkxLZXkiXSBpc0VxdWFsOmZhaWxlZFVS
TF0pOwogCiAgICAgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCA9IHRydWU7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9TU0xLZXlHZW5lcmF0b3IubW0KaW5kZXggZGRlOGM3ZDAx
ZGE2NzgwNDE5NWM3ZjQxZTI5MTFhNzg5YzcwMmM1Mi4uYWMxYmY3ZGI2Yzk4YjAyZDI1NTI2NTk3
MmJjMjk5ZGEwYzk4N2VkZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvU1NMS2V5R2VuZXJhdG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L1NTTEtleUdlbmVyYXRvci5tbQpAQCAtMjksOSArMjksOSBAQAogI2ltcG9ydCA8U2VjdXJpdHkv
U2VjQXNuMVRlbXBsYXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1NTTEtleUdlbmVyYXRvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4K
KyNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEku
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC02OSw3ICs2OSw3IEBAIGNvbnN0
IFNlY0FzbjFUZW1wbGF0ZSBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VUZW1wbGF0ZVtdIHsK
ICAgICB7IDAsIDAsIDAsIDAgfQogfTsKIAotY29uc3QgV2ViQ29yZTo6VVJMIHVybCA9IFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iKTsKK2NvbnN0
IFVSTCB1cmwgPSBVUkwoVVJMKCksICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIik7CiAKIGNsYXNz
IFNTTEtleUdlbmVyYXRvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5k
ZXggOGY3NTVjMzJjOGMyZTJlMGQzNzlkM2U1ZjA3Y2M2YjliZGNjMTg2NS4uMDU2YmZmNzc4Mjk1
MjhiMTI5MGYxMmUzOWFiMjM4YjBmNjg2OGI4NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5j
bHVkZSA8U2hsd2FwaS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CkBAIC01Miw3ICs1Miw3IEBAIFdLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgp
CiBXS1VSTFJlZiBjcmVhdGVVUkxGb3JSZXNvdXJjZShjb25zdCBjaGFyKiByZXNvdXJjZSwgY29u
c3QgY2hhciogZXh0ZW5zaW9uKQogewogICAgIFN0cmluZyBmaWxlbmFtZSA9IFN0cmluZzo6Zm9y
bWF0KCIuLlxcLi5cXC4uXFxUb29sc1xcVGVzdFdlYktpdEFQSVxcVGVzdHNcXFdlYktpdFxcJXMu
JXMiLCByZXNvdXJjZSwgZXh0ZW5zaW9uKTsKLSAgICBhdXRvIHVybCA9IFdlYkNvcmU6OlVSTDo6
ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCksIGZpbGVuYW1lKSk7CisgICAgYXV0byB1
cmwgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBmaWxlbmFtZSkpOwog
ICAgIHJldHVybiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1cmwuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYl93ZWJraXQucHkgYi9U
b29scy9sbGRiL2xsZGJfd2Via2l0LnB5CmluZGV4IGY1YmJjMjE3MWM0ZTZiNzM5ODA1ZDk1NDY4
YzczM2JjNjViNGQ0NWYuLjJjNTU0NzczYWNjNDg2YjlhZDk1MjAwM2I3NGQ5YTA1ZWJmZTNiYjgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL2xsZGIvbGxkYl93ZWJraXQucHkKKysrIGIvVG9vbHMvbGxkYi9s
bGRiX3dlYmtpdC5weQpAQCAtNDYsNyArNDYsNyBAQCBkZWYgX19sbGRiX2luaXRfbW9kdWxlKGRl
YnVnZ2VyLCBkaWN0KToKICAgICBkZWJ1Z2dlci5IYW5kbGVDb21tYW5kKCd0eXBlIHN1bW1hcnkg
YWRkIC0tZXhwYW5kIC1GIGxsZGJfd2Via2l0LldURk1lZGlhVGltZV9TdW1tYXJ5UHJvdmlkZXIg
V1RGOjpNZWRpYVRpbWUnKQogICAgIGRlYnVnZ2VyLkhhbmRsZUNvbW1hbmQoJ3R5cGUgc3VtbWFy
eSBhZGQgLS1leHBhbmQgLUYgbGxkYl93ZWJraXQuV1RGT3B0aW9uU2V0X1N1bW1hcnlQcm92aWRl
ciAteCAiXldURjo6T3B0aW9uU2V0PC4rPiQiJykKIAotICAgIGRlYnVnZ2VyLkhhbmRsZUNvbW1h
bmQoJ3R5cGUgc3VtbWFyeSBhZGQgLUYgbGxkYl93ZWJraXQuV2ViQ29yZVVSTF9TdW1tYXJ5UHJv
dmlkZXIgV2ViQ29yZTo6VVJMJykKKyAgICBkZWJ1Z2dlci5IYW5kbGVDb21tYW5kKCd0eXBlIHN1
bW1hcnkgYWRkIC1GIGxsZGJfd2Via2l0LldURlVSTF9TdW1tYXJ5UHJvdmlkZXIgV1RGOjpVUkwn
KQogICAgIGRlYnVnZ2VyLkhhbmRsZUNvbW1hbmQoJ3R5cGUgc3VtbWFyeSBhZGQgLUYgbGxkYl93
ZWJraXQuV2ViQ29yZUNvbG9yX1N1bW1hcnlQcm92aWRlciBXZWJDb3JlOjpDb2xvcicpCiAKICAg
ICBkZWJ1Z2dlci5IYW5kbGVDb21tYW5kKCd0eXBlIHN1bW1hcnkgYWRkIC1GIGxsZGJfd2Via2l0
LldlYkNvcmVMYXlvdXRVbml0X1N1bW1hcnlQcm92aWRlciBXZWJDb3JlOjpMYXlvdXRVbml0JykK
QEAgLTEzOCw4ICsxMzgsOCBAQCBkZWYgV2ViQ29yZUNvbG9yX1N1bW1hcnlQcm92aWRlcih2YWxv
YmosIGRpY3QpOgogICAgIHJldHVybiAieyAlcyB9IiAlIHByb3ZpZGVyLnRvX3N0cmluZygpCiAK
IAotZGVmIFdlYkNvcmVVUkxfU3VtbWFyeVByb3ZpZGVyKHZhbG9iaiwgZGljdCk6Ci0gICAgcHJv
dmlkZXIgPSBXZWJDb3JlVVJMUHJvdmlkZXIodmFsb2JqLCBkaWN0KQorZGVmIFdURlVSTF9TdW1t
YXJ5UHJvdmlkZXIodmFsb2JqLCBkaWN0KToKKyAgICBwcm92aWRlciA9IFdURlVSTFByb3ZpZGVy
KHZhbG9iaiwgZGljdCkKICAgICByZXR1cm4gInsgJXMgfSIgJSBwcm92aWRlci50b19zdHJpbmco
KQogCiAKQEAgLTYwMCw4ICs2MDAsOCBAQCBjbGFzcyBXZWJDb3JlRmxvYXRSZWN0UHJvdmlkZXI6
CiAgICAgICAgIHJldHVybiBXZWJDb3JlRmxvYXRTaXplUHJvdmlkZXIoc2VsZi52YWxvYmouR2V0
Q2hpbGRNZW1iZXJXaXRoTmFtZSgnbV9zaXplJyksIGRpY3QpLmdldF9oZWlnaHQoKQogCiAKLWNs
YXNzIFdlYkNvcmVVUkxQcm92aWRlcjoKLSAgICAiUHJpbnQgYSBXZWJDb3JlOjpVUkwiCitjbGFz
cyBXVEZVUkxQcm92aWRlcjoKKyAgICAiUHJpbnQgYSBXVEY6OlVSTCIKICAgICBkZWYgX19pbml0
X18oc2VsZiwgdmFsb2JqLCBkaWN0KToKICAgICAgICAgc2VsZi52YWxvYmogPSB2YWxvYmoKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>